/* This file has been generated by the Hex-Rays decompiler. Copyright (c) 2007-2011 Hex-Rays Detected compiler: Visual C++ */ #include #include #include #include //------------------------------------------------------------------------- // Data declarations extern _UNKNOWN loc_438660; // weak extern _UNKNOWN loc_4392C0; // weak extern _UNKNOWN loc_439330; // weak extern _UNKNOWN loc_43AF30; // weak extern _UNKNOWN loc_43B180; // weak extern _UNKNOWN loc_445DC0; // weak extern _UNKNOWN loc_446B90; // weak extern _UNKNOWN loc_459970; // weak extern _UNKNOWN loc_466FF0; // weak extern _UNKNOWN loc_478D70; // weak extern _UNKNOWN loc_47C560; // weak extern _UNKNOWN loc_47CB90; // weak extern _UNKNOWN loc_47FCA0; // weak extern _UNKNOWN loc_574F00; // weak extern _UNKNOWN loc_5756E0; // weak extern _UNKNOWN loc_5759E0; // weak extern _UNKNOWN loc_57BCD0; // weak extern _UNKNOWN loc_583BF0; // weak extern _UNKNOWN sub_5886C0; // weak extern int (__cdecl *off_5C5988[7])(int, int); // weak extern _UNKNOWN loc_5CE990; // weak extern _UNKNOWN loc_5F5C20; // weak extern _UNKNOWN loc_5F90B0; // weak extern _UNKNOWN loc_5F99D0; // weak extern _UNKNOWN loc_5FC640; // weak extern _UNKNOWN loc_5FC8E0; // weak extern _UNKNOWN loc_5FD110; // weak extern _UNKNOWN loc_5FF360; // weak extern _UNKNOWN loc_601900; // weak extern _UNKNOWN loc_6019A0; // weak extern _UNKNOWN loc_601C40; // weak extern _UNKNOWN loc_601FB0; // weak extern _UNKNOWN loc_602240; // weak extern _UNKNOWN loc_603720; // weak extern _UNKNOWN loc_604820; // weak extern _UNKNOWN loc_6054E0; // weak extern _UNKNOWN loc_605510; // weak extern _UNKNOWN loc_605D50; // weak extern _UNKNOWN loc_606090; // weak extern _UNKNOWN loc_6066D0; // weak extern _UNKNOWN loc_606970; // weak extern _UNKNOWN loc_606D30; // weak extern _UNKNOWN loc_607580; // weak extern _UNKNOWN loc_6078C0; // weak extern _UNKNOWN loc_607A50; // weak extern _UNKNOWN loc_608080; // weak extern _UNKNOWN loc_608360; // weak extern _UNKNOWN loc_608640; // weak extern _UNKNOWN loc_60D410; // weak extern _UNKNOWN loc_60E180; // weak extern _UNKNOWN loc_60E430; // weak extern _UNKNOWN loc_60E890; // weak extern _UNKNOWN loc_62B7C0; // weak extern _UNKNOWN loc_632070; // weak extern _UNKNOWN loc_633730; // weak extern _UNKNOWN loc_6391B0; // weak extern _UNKNOWN loc_654BA4; // weak extern _UNKNOWN loc_656BD1; // weak extern _UNKNOWN loc_657FB8; // weak extern _UNKNOWN loc_6580B9; // weak extern _UNKNOWN loc_65D318; // weak extern _UNKNOWN loc_65FE82; // weak extern _UNKNOWN loc_6639C2; // weak extern _UNKNOWN loc_666A7D; // weak extern _UNKNOWN loc_66AC3C; // weak extern _UNKNOWN loc_671D59; // weak // extern PFUNCTION_TABLE_ACCESS_ROUTINE64 SymFunctionTableAccess64; // extern PGET_MODULE_BASE_ROUTINE64 SymGetModuleBase64; extern char aAbnormalstated[63]; // weak extern char aAbnormalstat_0[67]; // weak extern int (*off_69EE3C)(); // weak extern int (*off_69EEAC)(); // weak extern int (*off_69EF1C)(); // weak extern int (*off_69EF8C)(); // weak extern int (*off_69EFFC)(); // weak extern int (*off_69F06C)(); // weak extern int (*off_69F0DC)(); // weak extern int (*off_69F14C)(); // weak extern int (*off_69F1BC)(); // weak extern int (*off_69F22C)(); // weak extern int (*off_69F29C)(); // weak extern int (*off_69F30C)(); // weak extern int (*off_69F37C)(); // weak extern int (*off_69F3EC)(); // weak extern int (*off_69F45C)(); // weak extern int (*off_69F4CC)(); // weak extern int (*off_69F53C)(); // weak extern int (*off_69F5AC)(); // weak extern int (*off_69F61C)(); // weak extern int (*off_69F68C)(); // weak extern int (*off_69F6BC)(); // weak extern int (*off_69F6EC)(); // weak extern int (*off_69F71C)(); // weak extern int (*off_69F74C)(); // weak extern int (*off_69F77C)(); // weak extern int (*off_69F7AC)(); // weak extern int (*off_69F7DC)(); // weak extern int (*off_69F80C)(); // weak extern int (*off_69F83C)(); // weak extern int (*off_69F86C)(); // weak extern int (*off_69F89C)(); // weak extern char aBase[5]; // weak extern char aNormal_0[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_0[5]; // weak extern char aPolymorph[]; // idb extern char aRestcounthprat[16]; // weak extern char aActor[6]; // weak extern char aMaxhp[6]; // weak extern char aFear[5]; // weak extern char aCaptivate_0[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_0[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 aDmgstate[9]; // weak extern char aExpuprate[10]; // weak extern char aDropuprate[11]; // weak extern char aDamageminusrat[16]; // weak extern char aDispel[7]; // weak extern char aShieldhprate[13]; // weak extern char aDamagedownrate[15]; // weak extern char aDelcasttime[12]; // weak extern char aMinhp[6]; // weak extern char aDamageminusatk[15]; // weak extern char aAbnormalstatee[60]; // weak extern int (*off_69FB3C)(); // weak extern int (__stdcall *off_69FB6C)(int, int, int); // weak extern int (__stdcall *off_69FB7C)(int, int, int); // weak extern int (__stdcall *off_69FB8C)(int, int, int); // weak extern int (*off_69FB9C)(); // weak extern int (*off_69FC0C)(); // weak extern char aAbnormalstat_1[99]; // weak extern char aAbnormalstatec[105]; // weak extern int (__stdcall *off_69FD50)(int, int, int); // weak extern int (*off_69FD64)(); // weak extern int (__stdcall *off_69FDD4)(int, int, int); // weak extern char aAxiallistnears[59]; // weak extern int (*off_69FE24)(); // weak extern int (*off_69FE94)(); // weak extern int (*off_69FF04)(); // weak extern int (*off_69FF74)(); // weak extern int (*off_69FFE4)(); // weak extern int (*off_6A0054)(); // weak extern int (*off_6A00C4)(); // weak extern int (*off_6A0134)(); // weak extern int (*off_6A01A4)(); // weak extern int (*off_6A0214)(); // weak extern int (*off_6A0284)(); // weak extern int (*off_6A02F4)(); // weak extern int (*off_6A0364)(); // weak extern int (*off_6A03D4)(); // weak extern int (*off_6A0444)(); // weak extern int (__thiscall *off_6A04B4)(void *, char); // weak extern int (__thiscall *off_6A04D8)(void *, char); // weak extern int (__stdcall *off_6A04FC)(int, int); // weak extern int (__stdcall *off_6A0504)(int, int); // weak extern int (__stdcall *off_6A050C)(int, int); // weak extern int (__stdcall *off_6A0514)(int, int); // weak extern int (*off_6A051C)(); // weak extern char aAbnormalsta_43[58]; // weak extern char aAbnormalsta_44[57]; // weak extern char aAbnormalstat_2[69]; // weak extern char aAbnormalstat_3[84]; // weak extern char aAbnormalstat_4[63]; // weak extern char aShineobjectcla[62]; // weak extern char aShineobjectc_0[62]; // weak extern char aShineobjectc_1[61]; // weak extern char aShineobjectc_2[63]; // weak extern char aShineobjectc_4[73]; // weak extern char aShineobjectc_3[55]; // weak extern char aAbnormalstat_6[51]; // weak extern char aAbnormalstat_5[69]; // weak extern char aAbnormalstat_7[61]; // weak extern char aAbnormalstat_8[66]; // weak extern int (__stdcall *off_6A0968)(int, int); // weak extern char aAbnormalstat_9[57]; // weak extern char aAbnormalsta_10[58]; // weak extern char aAbnormalsta_11[62]; // weak extern char aAbnormalsta_12[66]; // weak extern char aAbnormalsta_13[60]; // weak extern char aAbnormalsta_14[60]; // weak extern char aAbnormalsta_15[59]; // weak extern char aAbnormalsta_16[66]; // weak extern char aAbnormalsta_17[66]; // weak extern char aAbnormalsta_18[68]; // weak extern char aAbnormalsta_19[75]; // weak extern char aAbnormalsta_20[76]; // weak extern char aAbnormalsta_21[80]; // weak extern char aAbnormalsta_22[86]; // weak extern char aAbnormalsta_23[93]; // weak extern char aAbnormalsta_24[101]; // weak extern char aSubabnormals_0[82]; // weak extern char aSubabnormalsta[77]; // weak extern char aAbnormalsta_25[76]; // weak extern char aAbnormalsta_26[73]; // weak extern char aAbnormalsta_27[69]; // weak extern char aAbnormalsta_28[73]; // weak extern char aAbnormalsta_29[70]; // weak extern char aAbnormalsta_30[70]; // weak extern char aAbnormalsta_31[63]; // weak extern char aAbnormalsta_32[76]; // weak extern char aAbnormalsta_33[59]; // weak extern char aAbnormalsta_34[64]; // weak extern char aShineobjectc_5[57]; // weak extern char aShineobjectc_6[47]; // weak extern char asc_6A11EC[49]; // weak extern char aAbnormalsta_35[82]; // weak extern char aAbnormalsta_36[74]; // weak extern char aAbnormalsta_37[75]; // weak extern int (__stdcall *off_6A1318)(int, int); // weak extern char aAbnormalsta_38[55]; // weak extern char aSo_mobile_dama[25]; // weak extern char aShineobjectc_7[62]; // weak extern char aShineobjectc_8[51]; // weak extern char aAbnormalsta_39[56]; // weak extern char aAbnormalsta_42[76]; // weak extern char aAbnormalsta_41[75]; // weak extern char aAbnormalsta_40[62]; // weak extern char aAbnormalsta_45[64]; // weak extern char aAbnormalsta_49[70]; // weak extern char aAbnormalsta_48[71]; // weak extern char aAbnormalsta_47[62]; // weak extern char aAbnormalsta_46[55]; // weak extern char aAbnormalsta_50[95]; // weak extern char aAbnormalsta_51[67]; // weak extern char aAbnormalsta_52[91]; // weak extern char aShineobjectc_9[63]; // weak extern char aAbnormalsta_53[60]; // weak extern char aAbnormalsta_54[78]; // weak extern char aAbnormalsta_55[69]; // weak extern char aAbnormalsta_58[74]; // weak extern char aAbnormalsta_57[74]; // weak extern char aAbnormalsta_56[60]; // weak extern char aAbnormalsta_59[66]; // weak extern char aAbnormalsta_61[84]; // weak extern char aAbnormalsta_60[70]; // weak extern char aShineobject_10[55]; // weak extern char aAxiallistnea_0[38]; // weak extern char aAxiallistnea_1[44]; // weak extern char aAxiallistnea_2[46]; // weak extern char aAbnormalsta_62[69]; // weak extern char aAbnormalsta_63[63]; // weak extern char aAbnormalsta_64[76]; // weak extern char aAbnormalsta_66[61]; // weak extern char aAbnormalsta_65[79]; // weak extern char aShineobject_11[70]; // weak extern char aShineobject_12[73]; // weak extern char aShinemoverSo_0[66]; // weak extern char aShinemoverSo_a[56]; // weak extern int (__thiscall *off_6A1D60)(void *, char); // weak extern char aBinarydatabo_0[31]; // weak extern char aCodeXDShnXD[]; // idb extern char aBinarydataboxT[42]; // weak extern int (__thiscall *off_6A1DCC)(void *, char); // weak extern int (__thiscall *off_6A1DD4)(void *, char); // weak extern char a__9dataSubabst[]; // idb extern char aW[2]; // idb extern char a__9dataShineSu[]; // idb extern char aAbnormalsta_68[66]; // weak extern char aAbnormalsta_67[58]; // weak extern char aAbnormalsta_72[62]; // weak extern char aAbnormalsta_71[55]; // weak extern char aAbnormalsta_70[42]; // weak extern char aAbnormalsta_69[65]; // weak extern char a__9dataShine_0[]; // idb extern char a__9dataShineAb[]; // idb extern int (__thiscall *off_6A1FD4)(void *, char); // weak extern int (__thiscall *off_6A1FE0)(void *, char); // weak extern char aVectorTTooLong[19]; // weak extern int (__stdcall *off_6A200C)(int, int); // weak extern char aShineobject_13[60]; // weak extern char aShineobject_14[49]; // weak extern char aShineobject_15[47]; // weak extern int (__stdcall *off_6A20B4)(int, int); // weak extern char aChargeditemeff[73]; // weak extern char aShineobject_16[66]; // weak extern char aAbstatebuffe_0[48]; // weak extern char aAbstatebufferA[45]; // weak extern char aAbnormalstates[58]; // weak extern char aAbnormalsta_73[48]; // weak extern char aChargediteme_0[65]; // weak extern char aShineobject_17[52]; // weak extern char aShineobject_18[54]; // weak extern char aShineobject_22[54]; // weak extern char aAbnormalsta_74[50]; // weak extern char aShineobject_19[59]; // weak extern char aUseeffectUseit[47]; // weak extern int (__stdcall *off_6A23AC)(int, int, int); // weak extern char aItemdataboxOpe[45]; // weak extern char aMobdataboxOper[43]; // weak extern char aSS02d_txt[]; // idb extern char a02d02d02d[]; // idb extern char a04d02d02d[]; // idb extern char aS[]; // idb extern char aA[]; // idb extern char a_255s[]; // idb extern int (__stdcall *off_6A2454)(int, int, int); // weak extern char aAmpersandcomma[52]; // weak extern char aNotfindInstanc[31]; // weak extern char aInvalidVectorT[28]; // weak extern char aStringTooLong[16]; // weak extern char aInvalidStringP[24]; // weak extern int (__thiscall *off_6A2518)(void *, char); // weak extern int (__stdcall *off_6A253C)(int, int); // weak extern int (__stdcall *off_6A2544)(int, int); // weak extern int (__stdcall *off_6A254C)(int, int); // weak extern char aListiter_ampcm[50]; // weak extern int (__stdcall *off_6A2588)(int, int); // weak extern char aListiter_amp_0[34]; // weak extern char aListiter_amp_1[43]; // weak extern int (__stdcall *off_6A25E0)(int, int); // weak extern char aListiter_amp_2[44]; // weak extern char aListiter_amp_3[31]; // weak extern char aZoneserverZs_s[25]; // weak extern char aShineobject_20[51]; // weak extern int (__thiscall *off_6A2684)(void *, char); // weak extern char aAmpersandcom_0[26]; // weak extern char aGateCloseIfLin[39]; // weak extern char aNotePermanantl[61]; // weak extern char aExMobbreed10Ro[108]; // weak extern char aUsageTemplinkL[123]; // weak extern char aExMobbreedSlim[124]; // weak extern char aUsageMobbreedM[124]; // weak extern char aD[]; // idb extern char aAmpersandcom_1[27]; // weak extern char aAmpersandcom_2[27]; // weak extern char aTooManyAmpersa[26]; // weak extern char aFailToHideNotA[52]; // weak extern char aAmpersandcom_3[26]; // weak extern char aFailToShowNotA[52]; // weak extern char aAmpersandcom_4[26]; // weak extern char aAmpersandcom_5[31]; // weak extern char aAdminLevelIsD[]; // idb extern char aAmpersandcom_6[32]; // weak extern char aAmpersandcom_7[32]; // weak extern char aInvalidMapName[17]; // weak extern char aFailToLinktoNo[56]; // weak extern char aAmpersandcom_8[28]; // weak extern char aMakeFail[10]; // weak extern char aTooManyDoors[15]; // weak extern char aInvalidMobInde[18]; // weak extern char aAmpersandcom_9[31]; // weak extern char aNullMap[9]; // weak extern char aCalledBlockNee[20]; // weak extern char aAmpersandco_10[37]; // weak extern char aSecNeeded[11]; // weak extern char aAmpersandco_11[27]; // weak extern char asc_6A2BA8[39]; // weak extern char asc_6A2BD0[37]; // weak extern char word_6A2BF8[]; // idb extern char aAmpersandco_12[32]; // weak extern char aAmpersandco_14[46]; // weak extern char aAmpersandco_13[28]; // weak extern char aAxiallistdoora[30]; // weak extern char aOxblockOpenOrO[32]; // weak extern char aOxblock[8]; // weak extern char aAmpersandco_15[29]; // weak extern char aTargetIsNotNpc[18]; // weak extern char aTargetNeeded[14]; // weak extern char aAmpersandco_16[30]; // weak extern char aMobnumberWrong[16]; // weak extern char aMobD[]; // idb extern char aDef[]; // idb extern char aDropmobindexWr[19]; // weak extern char asc_6A2D48[]; // idb extern char aAmpersandco_17[30]; // weak extern char aLD[]; // idb extern char aO[3]; // weak extern char aInvalidItem[13]; // weak extern char aAmpersandco_18[30]; // weak extern char aShineobject_21[61]; // weak extern char aAmpersandco_19[36]; // weak extern char aAmpersandco_20[31]; // weak extern char aFailToSummonpl[68]; // weak extern char aAmpersandco_21[34]; // weak extern char asc_6A2E98[34]; // weak extern char asc_6A2EBC[33]; // weak extern char aAmpersandco_22[35]; // weak extern char aAmpersandco_24[50]; // weak extern char aAmpersandco_23[32]; // weak extern char asc_6A2F58[35]; // weak extern char aAmpersandco_25[32]; // weak extern char aAmpersandco_26[34]; // weak extern char aAmpersandco_27[38]; // weak extern char aMainPerformanc[]; // idb extern char aAmpersandco_28[33]; // weak extern char aAmpersandco_29[27]; // weak extern char aAmpersandco_30[27]; // weak extern char aDistanceDGrid[]; // idb extern char aAmpersandco_31[26]; // weak extern char aAmpersandco_32[33]; // weak extern char aLocationDSDDD[]; // idb extern char aAmpersandco_33[32]; // weak extern char aAmpersandco_34[35]; // weak extern char aFailToMfindNot[54]; // weak extern char aAmpersandco_35[29]; // weak extern char aFailToPfindNot[54]; // weak extern char aAmpersandco_36[32]; // weak extern char aFailToPsummonN[58]; // weak extern char aAmpersandco_37[34]; // weak extern char aAmpersandco_38[35]; // weak extern char aAmpersandco_39[33]; // weak extern char aAmpersandco_40[32]; // weak extern char aAmpersandco_41[31]; // weak extern char aAmpersandco_42[35]; // weak extern char aSuicidemobD[]; // idb extern char aAmpersandco_43[32]; // weak extern char aAmpersandco_44[37]; // weak extern char aNull[5]; // weak extern char aAmpersandco_45[30]; // weak extern char aAmpersandco_46[34]; // weak extern char aAmpersandco_47[37]; // weak extern char aAmpersandco_48[39]; // weak extern char aAmpersandco_49[40]; // weak extern char aAmpersandco_50[31]; // weak extern char aImmortalModeTr[19]; // weak extern char aImmortalModeFa[20]; // weak extern char aAmpersandco_51[30]; // weak extern char aAmpersandco_52[32]; // weak extern char asc_6A3484[36]; // weak extern char aAmpersandco_53[34]; // weak extern char aPlayerNotFound[17]; // weak extern char aAmpersandco_54[34]; // weak extern char aUsgerExpbonusM[31]; // weak extern char aAmpersandco_55[30]; // weak extern char aUsgerItembonus[32]; // weak extern char aAmpersandco_56[31]; // weak extern char aEGDG[]; // idb extern char aAmpersandco_57[32]; // weak extern char aAmpersandco_58[32]; // weak extern char aAmpersandco_59[33]; // weak extern char aThreadDDDDD[]; // idb extern char aAmpersandco_60[35]; // weak extern char aBlockDDDD0Bloc[]; // idb extern char aAmpersandco_61[29]; // weak extern char aFailedCannotFi[31]; // weak extern char aAmpersandco_62[29]; // weak extern char aAmpersandco_63[31]; // weak extern char aAmpersandco_64[34]; // weak extern char aAmpersandco_65[36]; // weak extern char aAmpersandco_66[44]; // weak extern char aWedding[]; // idb extern char aAmpersandco_67[39]; // weak extern char aAmpersandco_69[52]; // weak extern char aAmpersandco_68[34]; // weak extern char aAmpersandco_71[54]; // weak extern char aAmpersandco_70[36]; // weak extern char aAmpersandco_73[52]; // weak extern char aAmpersandco_72[34]; // weak extern char aPineeventscrip[59]; // weak extern char aAmpersandco_75[52]; // weak extern char aFailToShowidTh[117]; // weak extern char aAmpersandco_74[34]; // weak extern char aAmpersandco_76[37]; // weak extern char aAmpersandco_77[33]; // weak extern char a0[2]; // weak extern char aAmpersandco_78[33]; // weak extern char aFailCreateguil[33]; // weak extern char aCreateguildtou[27]; // weak extern char aAmpersandco_79[42]; // weak extern char aFailFlagcaptur[17]; // weak extern char aFlagcapture[12]; // weak extern char aAmpersandco_80[33]; // weak extern char aFailAc_useguil[22]; // weak extern char aSoccessAc_useg[25]; // weak extern char aAmpersandco_81[35]; // weak extern char aAmpersandco_82[36]; // weak extern char aAmpersandco_83[31]; // weak extern char aAmpersandco_84[41]; // weak extern char aAmpersandco_85[33]; // weak extern char aD_D_DDDU[]; // idb extern char aAmpersandco_86[29]; // weak extern char aMykillD[]; // idb extern char aKqelementDNotF[]; // idb extern char aNoKq[6]; // weak extern char aTotalkqlistD[]; // idb extern char aAmpersandco_87[29]; // weak extern char aAmpersandco_88[31]; // weak extern char aAttackblock[]; // idb extern char aMoveblock[]; // idb extern char aPartblock_txt[]; // idb extern char aAmpersandco_89[31]; // weak extern char aAmpersandco_90[35]; // weak extern char aAllOfLogChange[19]; // weak extern char aBalancelogChan[19]; // weak extern char aBalancelog[11]; // weak extern char aAmpersandco_91[34]; // weak extern char aCZB_[31]; // weak extern _UNKNOWN unk_6A3D60; // weak extern _UNKNOWN unk_6A3D88; // weak extern char a16CKF_[33]; // weak extern _UNKNOWN unk_6A3DD0; // weak extern char a111666CCZJINF_[45]; // weak extern char aAmpersandco_92[36]; // weak extern _UNKNOWN unk_6A3E38; // weak extern _UNKNOWN unk_6A3E5C; // weak extern _UNKNOWN unk_6A3E98; // weak extern char aAmpersandco_93[44]; // weak extern _UNKNOWN unk_6A3EEC; // weak extern char aCZTJMPCIF_[39]; // weak extern char aAmpersandco_94[43]; // weak extern char aAmpersandco_95[51]; // weak extern _UNKNOWN unk_6A3F9C; // weak extern _UNKNOWN unk_6A3FB0; // weak extern char aAmpersandco_96[30]; // weak extern char asc_6A3FE4[12]; // weak extern _UNKNOWN unk_6A3FF0; // weak extern char aAmpersandco_97[29]; // weak extern char aAmpersandco_98[41]; // weak extern char aSp_nc_skill_pr[60]; // weak extern char asc_6A408C[35]; // weak extern char asc_6A40B0[29]; // weak extern char aRoucos02[]; // idb extern char asc_6A40DC[30]; // weak extern char asc_6A40FC[47]; // weak extern char aItemActionCool[27]; // weak extern char asc_6A4148[45]; // weak extern char aWholesaverWs_s[51]; // weak extern char asc_6A41AC[33]; // weak extern char asc_6A41D0[30]; // weak extern char aSSDD[]; // idb extern char aNpcCoordDataEr[21]; // weak extern char aNpcFieldDataEr[21]; // weak extern char aNotFindNpc[13]; // weak extern char aInvalidNpcInde[22]; // weak extern char asc_6A4258[29]; // weak extern char aNpcRegenFail[15]; // weak extern char asc_6A4288[30]; // weak extern char aNotNpc[8]; // weak extern char aInvaildTargetO[22]; // weak extern char asc_6A42C8[32]; // weak extern char a1On0Off[16]; // weak extern char aInvalidCameraM[25]; // weak extern char aAxzDAyDDDXDYD[]; // idb extern char aCameraMoveOn[15]; // weak extern char aAnglexz0360Ang[41]; // weak extern char aCameraMovingTy[38]; // weak extern char aCameraMoveOff[16]; // weak extern char aCmtType01Angle[64]; // weak extern char aMaxspPlus10mil[22]; // weak extern char aMaxhpPlus10mil[22]; // weak extern char aImmortalMode_0[19]; // weak extern char aEditspeed10xTr[19]; // weak extern char aIgnoreskillcoo[25]; // weak extern char aStaticdamage1m[23]; // weak extern char aTargetInfoPetn[]; // idb extern char aGetpettenden_2[47]; // weak extern char aGetpettenden_1[36]; // weak extern char aGetpettenden_0[35]; // weak extern char aGetpettendency[27]; // weak extern char aSetpettenden_4[]; // idb extern char aSetpettenden_3[]; // idb extern char aTargetInfoToPe[]; // idb extern char aTargetInfoFrom[]; // idb extern char aSetpettenden_2[47]; // weak extern char aSetpettenden_1[36]; // weak extern char aSetpettenden_0[35]; // weak extern char aSetpettendency[27]; // weak extern char aVanishItmeCoun[]; // idb extern char aAc_casttelepor[16]; // weak extern char aAc_setobjectdi[19]; // weak extern int (__stdcall *off_6A4700)(int, int); // weak extern char aTotalPlyDMobD[]; // idb extern char aSPlyDMobD[]; // idb extern char asc_6A472C[38]; // weak extern char asc_6A4754[31]; // weak extern char asc_6A4774[28]; // weak extern char aDSDD[]; // idb extern char asc_6A47A0[33]; // weak extern char aMapSetTTooLong[20]; // weak extern char asc_6A47D8[40]; // weak extern char asc_6A4800[30]; // weak extern char aKingdomquetScr[26]; // weak extern char asc_6A483C[50]; // weak extern char asc_6A4870[34]; // weak extern char aBigbangScriptU[24]; // weak extern char asc_6A48AC[29]; // weak extern char aInvalidMapSetT[28]; // weak extern int (__stdcall *off_6A48EC)(int, int, int); // weak extern char aPetLuaReloaded[17]; // weak extern char aAxiallistmobli[27]; // weak extern char aMaxhpPlueOk[14]; // weak extern char byte_6A492E[2]; // idb extern char asc_6A4930[30]; // weak extern char aMaxspPlueOk[14]; // weak extern char asc_6A4960[30]; // weak extern char aReroadActivesk[23]; // weak extern char aActiveskill[12]; // weak extern char asc_6A49A4[32]; // weak extern char aSmo_setcapti_0[23]; // weak extern char aSmo_setcaptiva[22]; // weak extern char a1[2]; // weak extern char asc_6A49F8[31]; // weak extern char aIgnoreskillc_0[26]; // weak extern char aSpeedChangeOk[16]; // weak extern char aTotalD[]; // idb extern char asc_6A4A50[]; // idb extern char aTotal5d[]; // idb extern char aSD[]; // idb extern char aD_0[]; // idb extern char off_6A4AD8[]; // idb extern char aSmobindexNcoun[]; // idb extern char asc_6A4B18[]; // idb extern char aMobCountStatis[]; // idb extern char aMobcounting[]; // idb extern char aSetobjectdirec[]; // idb extern char aCastteleport[]; // idb extern char aWalkto[]; // idb extern char aVanishdropitem[]; // idb extern char aSetpetinfo[]; // idb extern char aGetpetinfo[]; // idb extern char aReloadpetlua[]; // idb extern char aFieldmobcount[]; // idb extern char aGodmode[]; // idb extern char aMoveotherlayer[]; // idb extern char aMovelayer[]; // idb extern char aSetlp[]; // idb extern char aViuea[]; // idb extern char aViue[]; // idb extern char aVie[]; // idb extern char aReloadid[]; // idb extern char aCmt[]; // idb extern char aArrangeiv[]; // idb extern char aGmtestmode[]; // idb extern char aReleasenpc[]; // idb extern char aRegennpc[]; // idb extern char aFnpc[]; // idb extern char aGetmoney[]; // idb extern char aMobitemdrop[]; // 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_6[8]; // 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 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_6A4E2C[]; // idb extern char aDebuglogging[]; // idb extern char aPartblock[]; // idb extern char aKnockback[]; // idb extern char aAmibusy[]; // idb extern char aCurtime[]; // idb extern char aGhostremove[]; // idb extern char aRunto[]; // idb extern char aInvenview[]; // idb extern char asc_6A4E94[2]; // idb extern char aIgnoreskillc_1[]; // idb extern char aCaptivate[]; // 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_0[]; // idb extern char aStartgt[]; // idb extern char aErasechargebuf[]; // idb extern char aAllcritical[]; // idb extern char aMobhatchery[]; // idb extern char aShowid[]; // idb extern char aWedding_0[]; // 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 aGuildtournamen[]; // idb extern char aEndofkq[]; // idb extern char aReroadkingdomq[]; // idb extern char aKingdomquest[]; // idb extern char aSuicidemob[]; // idb extern char aSuicideallmob[]; // idb extern char aMobdamage[]; // idb extern char aKillallmob[]; // idb extern char aKqreward[]; // idb extern char aResetabstateta[]; // idb extern char aSetabstatetarg[]; // 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[]; // idb extern char aOxblock_0[]; // idb extern char aTemplink[]; // idb extern char aTimer[]; // idb extern char aScrint[]; // idb extern char aCoord[]; // idb extern char aDist[]; // idb extern char aSetsp[]; // idb extern char aSethp[]; // idb extern char aPerformance[]; // idb extern char aSummonplayer[]; // idb extern char aFullpoint[]; // idb extern char aMb[]; // idb extern char aMobbreed[]; // idb extern char aDoorbuild[]; // idb extern char aDimension[]; // idb extern char 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_0[6]; // idb extern char aSilence[]; // idb extern char asc_6A52F4[]; // idb extern char aFieldbonus[]; // idb extern char asc_6A530C[]; // idb extern char aItembonus[]; // idb extern char aCSB[]; // idb extern char aExpbonus[]; // idb extern char aP[]; // idb extern char aPsummon[]; // idb extern char asc_6A5358[]; // idb extern char aLinkto[]; // idb extern char aC[]; // idb extern char aKickout[]; // idb extern char asc_6A537C[2]; // idb extern char aMfind[]; // idb extern char asc_6A538C[6]; // idb extern char aPfind[]; // idb extern char aI[]; // idb extern char aShow[]; // idb extern char asc_6A53AC[2]; // idb extern char aHide[]; // idb extern unsigned __int8 asc_6A53BC[]; // idb extern char Src[]; // idb extern char asc_6A53C4[2]; // weak extern char asc_6A53C8[3]; // weak extern char aListiter_amp_4[49]; // weak extern char aInvalidCommand[]; // idb extern char aShineobject_23[51]; // weak extern char byte_6A544C[]; // weak extern int (*off_6A5464[2])(); // weak extern int (__stdcall *off_6A54A8)(int, int, int); // weak extern int (__stdcall *off_6A54B0)(int, int, int); // weak extern int (__stdcall *off_6A54B8)(int, int, int); // weak extern int (__stdcall *off_6A54C0)(int, int, int); // weak extern int (__stdcall *off_6A54D0)(int, int, int); // weak extern int (__stdcall *off_6A54D8)(int, int, int); // weak extern int (__stdcall *off_6A54E0)(int, int, int); // weak extern int (__stdcall *off_6A54E8)(int, int, int); // weak extern int (__stdcall *off_6A54F0)(int, int, int); // weak extern int (__stdcall *off_6A54F8)(int, int, int); // weak extern int (__stdcall *off_6A5500)(int, int, int); // weak extern int (__stdcall *off_6A5508)(int, int, int); // weak extern int (__stdcall *off_6A5510)(int, int, int); // weak extern int (__stdcall *off_6A5518)(int, int, int); // weak extern int (__stdcall *off_6A5520)(int, int, int); // weak extern int (__stdcall *off_6A5528)(int, int, int); // weak extern int (__stdcall *off_6A5530)(int, int, int); // weak extern char aAxiallistpac_0[69]; // weak extern int (__stdcall *off_6A558C)(int, int, int); // weak extern char aAxiallistpacke[51]; // weak extern char aAxiallistpac_2[52]; // weak extern char aAxiallistpac_1[35]; // weak extern int (__stdcall *off_6A5620)(int, int, int); // weak extern char aAxiallistpac_4[91]; // weak extern int (__stdcall *off_6A5688)(int, int, int); // weak extern char aAxiallistpac_3[73]; // weak extern char aAxiallistpac_5[74]; // weak extern char aAxiallistpac_6[46]; // weak extern char aAxiallistbossf[28]; // weak extern char aAxiallistsho_0[44]; // weak extern char aAxiallistshowi[26]; // weak extern char aAxiallistmobki[48]; // weak extern char aGate[]; // idb extern char aKingdomquestga[71]; // weak extern char aAxiallistiteme[33]; // weak extern char aAxiallistobjec[43]; // weak extern char aAxiallistobj_0[35]; // weak extern char aAxiallistbanar[27]; // weak extern char aAxiallistnpcse[39]; // weak extern int (__stdcall *off_6A58FC)(int, int, int); // weak extern char aAxiallistnpc_0[29]; // weak extern int (__stdcall *off_6A5924)(int, int, int); // weak extern char aAxialquesterfi[35]; // weak extern char aAxialquester_0[27]; // weak extern int (__stdcall *off_6A596C)(int, int, int); // weak extern int (__stdcall *off_6A5974)(int, int, int); // weak extern int (__stdcall *off_6A597C)(int, int, int); // weak extern int (__stdcall *off_6A5984)(int, int, int); // weak extern int (__stdcall *off_6A598C)(int, int, int); // weak extern int (__stdcall *off_6A5994)(int, int, int); // weak extern int (__stdcall *off_6A599C)(int, int, int); // weak extern char aAxiallistreviv[27]; // weak extern char aAxiallistplaye[30]; // weak extern char aAxiallistareao[34]; // weak extern char aShineplayerTim[38]; // weak extern int (__stdcall *off_6A5A2C)(int, int, int); // weak extern char aShineobject_25[75]; // weak extern char aShineobject_24[71]; // weak extern char aTargetobjectTo[46]; // weak extern char aAxiallisttarge[32]; // weak extern char aShineobject_26[66]; // weak extern char aTargetobject_0[28]; // weak extern char aShineobject_27[54]; // weak extern char aShineobject_29[70]; // weak extern char aShineobject_28[52]; // weak extern char aShineobject_32[77]; // weak extern char aShineobject_31[90]; // weak extern char aShineobject_30[86]; // weak extern char aShineobject_33[51]; // weak extern char aShineobject_36[69]; // weak extern char aShineobject_35[76]; // weak extern char aShineobject_34[45]; // weak extern char aShineobject_37[47]; // weak extern char aShineobject_38[50]; // weak extern char aShineobject_41[64]; // weak extern char aShineobject_40[72]; // weak extern char aShineobject_39[46]; // weak extern char aShineobject_43[58]; // weak extern char aShineobject_42[40]; // weak extern char aShineobject_44[47]; // weak extern char aShineobject_45[54]; // weak extern char aShineobject_46[38]; // weak extern char aShineobject_47[41]; // weak extern char aShineobject_48[41]; // weak extern char aShineobject_49[44]; // weak extern char aShineobject_50[44]; // weak extern char aShineobject_51[44]; // weak extern char aShineobject_52[60]; // weak extern char aErrorSelectorB[33]; // weak extern char aShineobject_53[49]; // weak extern char aShineobject_54[49]; // weak extern char aShineobject_55[47]; // weak extern char aShineobject_56[51]; // weak extern char aShineobject_57[53]; // weak extern char aShineobject_59[60]; // weak extern char aShineobject_58[42]; // weak extern char aShineobject_61[61]; // weak extern char aShineobject_60[43]; // weak extern char aShineobject_63[68]; // weak extern char aShineobject_62[57]; // weak extern char aShineobject_64[69]; // weak extern char aShineobject_68[76]; // weak extern char aShineobject_67[70]; // weak extern char aShineobject_66[72]; // weak extern char aShineobject_65[57]; // weak extern char aWorldmanagerse[54]; // weak extern char aShineobject_70[68]; // weak extern char aShineobject_69[50]; // weak extern char aShineobject_71[54]; // weak extern char asc_6A6628[50]; // weak extern char aShineobject_72[44]; // weak extern char aShinemobileobj[27]; // weak extern char aShineobject_75[63]; // weak extern char aShineobject_74[65]; // weak extern char aShineobject_73[45]; // weak extern char aShineobject_77[57]; // weak extern char aShineplayerSo_[21]; // weak extern char aShineobject_76[39]; // weak extern char aShineobject_78[55]; // weak extern char asc_6A6810[46]; // weak extern char aShineobject_79[52]; // weak extern char aShineobject_80[55]; // weak extern char aShineobject_81[52]; // weak extern char aShineobject_91[56]; // weak extern char asc_6A6918[64]; // weak extern char aShineobject_82[58]; // weak extern char asc_6A6994[56]; // weak extern char aShineobject_83[53]; // weak extern char aShineobject_85[64]; // weak extern char aShineobject_84[56]; // weak extern char aShineobject_86[55]; // weak extern char aShineobject_87[49]; // weak extern char aShineobject_88[50]; // weak extern char aShineobject_89[48]; // weak extern char aSp_schedule_sw[23]; // weak extern char aShineobject_90[54]; // weak extern char aShineobject_92[55]; // weak extern char aShineobject_93[41]; // weak extern char aBattleobject_1[64]; // weak extern char aBattleobject_0[61]; // weak extern char aBattleobjectgr[62]; // weak extern char aShineobject_96[86]; // weak extern char aShineobject_95[80]; // weak extern char aShineobject_94[53]; // weak extern char aShineobject_97[49]; // weak extern char asc_6A6DE4[58]; // weak extern char aShinemobSo_k_0[52]; // weak extern char aShinemobSo_kil[47]; // weak extern char aShineobject_98[40]; // weak extern char asc_6A6EB0[71]; // weak extern char asc_6A6EF8[71]; // weak extern char asc_6A6F40[53]; // weak extern char asc_6A6F80[61]; // weak extern char asc_6A6FC0[43]; // weak extern char aS_0[]; // idb extern char aDbg_txt[]; // idb extern char aA_0[]; // idb extern int (__stdcall *off_6A7000)(int, int, int); // weak extern int (__thiscall *off_6A7008)(void *, char); // weak extern int (__stdcall *off_6A702C)(int, int); // weak extern char aMultihitargume[33]; // weak extern int (__thiscall *off_6A7058)(void *, char); // weak extern char aBattleobject_2[47]; // weak extern char asc_6A70A8[60]; // weak extern char asc_6A70E4[51]; // weak extern char asc_6A7118[51]; // weak extern char aSmo_icanhealto[15]; // weak extern char asc_6A715C[52]; // weak extern char asc_6A7190[46]; // weak extern char asc_6A71C0[47]; // weak extern char asc_6A71F0[43]; // weak extern char asc_6A721C[43]; // weak extern char aSkilleffecta_5[60]; // weak extern char asc_6A7284[56]; // weak extern char asc_6A72BC[50]; // weak extern char asc_6A72F0[47]; // weak extern char aAxiallisttar_0[32]; // weak extern char asc_6A7340[51]; // weak extern int (__stdcall *off_6A7378)(int, int); // weak extern char asc_6A737C[59]; // weak extern char asc_6A73B8[54]; // weak extern char asc_6A73F0[55]; // weak extern char asc_6A7428[53]; // weak extern char asc_6A7460[47]; // weak extern char aSkilleffectapp[48]; // weak extern char aSkilleffecta_0[52]; // weak extern char aSkilleffecta_1[62]; // weak extern char aSkilleffecta_3[84]; // weak extern char aSkilleffecta_2[58]; // weak extern char aSkilleffecta_4[56]; // weak extern char aSkilldamagelog[15]; // weak extern char aListTTooLong[17]; // weak extern char aBlockdistribut[56]; // weak extern char aTooSmallSize[15]; // weak extern char aBlockdistrib_1[50]; // weak extern char aBlockdistrib_0[77]; // weak extern char aBmpdatainfoB_8[56]; // weak extern char aBmpdatainfoB_7[52]; // weak extern char aBmpdatainfoB_6[64]; // weak extern char aBmpdatainfoB_5[62]; // weak extern char aBmpdatainfoB_4[51]; // weak extern char aBmpdatainfoB_3[57]; // weak extern char aBmpdatainfoB_2[58]; // weak extern char aBmpdatainfoB_1[53]; // weak extern char aBmpdatainfoB_0[58]; // weak extern char aBmpdatainfoBdi[29]; // weak extern char aSbmpdatainfoBd[52]; // weak extern char aRb[]; // idb extern char a__9dataSareabm[]; // idb extern char aShine[7]; // weak extern char aBmpdataboxBd_0[46]; // weak extern char aBmpdataboxBdb_[25]; // weak extern char aFailToReadBmpi[26]; // weak extern char a__9dataShineBm[]; // idb extern char aBoothitemmanag[]; // idb extern char aBoothstoremana[]; // idb extern char aBoothstorema_1[]; // idb extern char aBoothstorema_0[]; // idb extern char aBoothstorema_2[]; // idb extern char asc_6A7BA8[105]; // idb extern char asc_6A7C30[103]; // idb extern char asc_6A7CB8[94]; // weak extern char asc_6A7D18[76]; // weak extern char asc_6A7D68[87]; // weak extern char asc_6A7DC0[69]; // weak extern char aBoothstorema_5[]; // idb extern char aBoothstorema_4[]; // idb extern char aBoothstorema_3[]; // idb extern char aBoothitemman_4[55]; // idb extern char aBoothitemman_3[53]; // idb extern char aBoothitemman_0[]; // idb extern char aBoothitemman_1[]; // idb extern char aBoothitemman_2[]; // idb extern char aBoothstorema_8[]; // idb extern char aBoothstorema_7[]; // idb extern char aBoothstorema_6[]; // idb extern char aBoothmanager_3[60]; // weak extern char aBoothmanager_2[]; // idb extern char aBoothmanager_1[]; // idb extern char aBoothmanager_0[]; // idb extern char aBoothmanagerAd[]; // idb extern char aBoothmanager_5[]; // idb extern char aBoothmanager_4[]; // idb extern char aBoothmanagerRe[]; // idb extern char aBoothmanager_8[]; // idb extern char aBoothmanager_7[]; // idb extern char aBoothmanager_6[]; // idb extern char aBoothmanagerUp[]; // idb extern char aBoothstorem_11[]; // idb extern char aBoothstorem_10[]; // idb extern char aBoothstorema_9[]; // idb extern int (__thiscall *off_6A8624)(void *, char); // weak extern int (__thiscall *off_6A862C)(void *, char); // weak extern char a__9dataShine_1[]; // idb extern char a__9dataShineBr[]; // idb extern char aBr_accupgraded[43]; // weak extern int (*off_6A86A4)(); // weak extern int (__thiscall *off_6A86AC)(_DWORD); // weak extern int (__thiscall *off_6A86B4)(_DWORD); // weak extern int (__thiscall *off_6A86BC)(_DWORD); // weak extern char a___[4]; // idb extern char aBriefinfoex_28[56]; // weak extern int (__stdcall *off_6A8700)(int, int, int); // weak extern int (__stdcall *off_6A8710)(int, int); // weak extern int (*off_6A8718[4])(); // weak extern char aKickByDoubleCo[24]; // weak extern char asc_6A8740[66]; // weak extern char asc_6A8784[54]; // weak extern char aRoun[]; // idb extern char asc_6A87C4[42]; // weak extern char asc_6A87F0[61]; // weak extern char asc_6A8830[49]; // weak extern char asc_6A8864[53]; // weak extern char aBriefinfoexc_0[38]; // weak extern char aBriefinfoexcha[58]; // weak extern char aBriefinfoexc_2[32]; // weak extern char aBriefinfoexc_1[52]; // weak extern char aBriefinfoexc_4[33]; // weak extern char aBriefinfoexc_3[53]; // weak extern char aBriefinfoexc_6[35]; // weak extern char aBriefinfoexc_5[55]; // weak extern char aBriefinfoexc_8[33]; // weak extern char aBriefinfoexc_7[53]; // weak extern char aBriefinfoexc_9[41]; // weak extern char aBriefinfoex_11[39]; // weak extern char aBriefinfoex_10[59]; // weak extern char aBriefinfoex_13[36]; // weak extern char aBriefinfoex_12[56]; // weak extern char aBriefinfoex_15[35]; // weak extern char aBriefinfoex_14[54]; // weak extern char aBriefinfoex_17[32]; // weak extern char aBriefinfoex_16[52]; // weak extern char asc_6A8C04[54]; // weak extern char asc_6A8C3C[2]; // weak extern char aGetHandle[12]; // weak extern char aDepartment[14]; // weak extern char aCommand[11]; // weak extern char aServerHnd[14]; // weak extern char asc_6A8C78[72]; // weak extern char asc_6A8CC0[58]; // weak extern char aCalculatebroad[46]; // weak extern char aUrg[]; // idb extern char aEld[]; // idb extern char asc_6A8D38[64]; // weak extern char asc_6A8D78[48]; // weak extern char aGamedbsessionG[51]; // weak extern char aGamedbsessio_0[52]; // weak extern char asc_6A8E10[55]; // weak extern char asc_6A8E48[52]; // weak extern char aFromD_D_D_D[]; // idb extern char asc_6A8E90[51]; // weak extern char aWorldmanager_0[54]; // weak extern char asc_6A8EFC[43]; // weak extern char asc_6A8F28[53]; // weak extern char asc_6A8F60[53]; // weak extern int (__stdcall *off_6A8F9C)(int, int); // weak extern int (__stdcall *off_6A8FA4)(int, int); // weak extern int (__thiscall *off_6A8FAC)(void *, char); // weak extern char asc_6A8FC0[63]; // weak extern char asc_6A9000[43]; // weak extern char aDoingKq[9]; // weak extern char asc_6A9038[70]; // weak extern char asc_6A9080[78]; // weak extern char asc_6A90D0[52]; // weak extern char aBriefinfoex_18[62]; // weak extern char aBriefinfoex_19[56]; // weak extern char aBriefinfoex_20[57]; // weak extern char aBriefinfoex_21[59]; // weak extern char aBriefinfoex_22[57]; // weak extern char aBriefinfoex_23[65]; // weak extern char aBriefinfoex_24[63]; // weak extern char aBriefinfoex_25[60]; // weak extern char aBriefinfoex_26[59]; // weak extern char aBriefinfoex_27[56]; // weak extern char aYouAreAdminist[23]; // weak extern char asc_6A937C[52]; // weak extern char asc_6A93B0[46]; // weak extern char asc_6A93E0[44]; // weak extern int (__stdcall *off_6A9410)(int, int, int); // weak extern char asc_6A9418[66]; // weak extern char asc_6A945C[51]; // weak extern char asc_6A9490[60]; // weak extern char asc_6A94D0[65]; // weak extern char aAxiallistcamer[30]; // weak extern char asc_6A9534[51]; // weak extern char asc_6A9568[61]; // weak extern char asc_6A95A8[50]; // weak extern char asc_6A95DC[50]; // weak extern char asc_6A9610[49]; // weak extern char asc_6A9644[49]; // weak extern char asc_6A9678[53]; // weak extern char asc_6A96B0[46]; // weak extern char asc_6A96E0[77]; // weak extern char asc_6A9730[77]; // weak extern char asc_6A9780[59]; // weak extern char asc_6A97C0[90]; // weak extern char aSp_nc_map_lo_0[34]; // weak extern char aSp_nc_map_logi[33]; // weak extern char asc_6A9864[59]; // weak extern int (__thiscall *off_6A98A4)(void *, char); // weak extern int (__thiscall *off_6A98B4)(void *, char); // weak extern char aCharactertog_1[69]; // weak extern char aCharactertog_0[81]; // weak extern char aCharactertoggl[70]; // weak extern char aCharaterskilll[38]; // weak extern char aCharaterski_35[36]; // weak extern char aCharaterskil_1[59]; // weak extern char aCharaterskil_0[38]; // weak extern char aCharaterskil_2[58]; // weak extern char aCharacterpassi[40]; // weak extern char aCharacterpas_0[38]; // weak extern char aMoverskilllist[58]; // weak extern char aMoverskillli_0[57]; // weak extern char aCharaterskil_3[31]; // weak extern char aCharaterskil_6[52]; // weak extern char aCharaterskil_5[46]; // weak extern char aCharaterskil_4[34]; // weak extern char aCharaterskil_8[50]; // weak extern char aCharaterskil_7[38]; // weak extern char aCharacterpas_5[66]; // weak extern char aCharacterpas_4[60]; // weak extern char aCharacterpas_3[57]; // weak extern char aCharacterpas_2[69]; // weak extern char aCharacterpas_1[37]; // weak extern char aCharaterskil_9[37]; // weak extern char aCharacterpas_6[46]; // weak extern char aCharacterpas_8[50]; // weak extern char aCharacterpas_7[32]; // weak extern char aCharaterski_10[36]; // weak extern char aCharaterski_12[61]; // weak extern char aCharaterski_11[37]; // weak extern char aCharaterski_22[48]; // weak extern char aCharaterski_21[54]; // weak extern char aCharaterski_20[54]; // weak extern char aCharaterski_19[54]; // weak extern char aCharaterski_18[54]; // weak extern char aCharaterski_17[54]; // weak extern char aCharaterski_16[54]; // weak extern char aCharaterski_15[54]; // weak extern char aCharaterski_14[54]; // weak extern char aCharaterski_13[36]; // weak extern char aCharaterski_24[58]; // weak extern char aCharaterski_23[37]; // weak extern char aCharaterski_26[47]; // weak extern char aCharaterski_25[35]; // weak extern char aCharacterskill[58]; // weak extern char aCharaterski_28[71]; // weak extern char aCharaterski_27[71]; // weak extern char aCharaterski_29[53]; // weak extern char aMoverskillli_2[54]; // weak extern char aMoverskillli_1[44]; // weak extern char aMoverskillli_5[60]; // weak extern char aMoverskillli_4[50]; // weak extern char aMoverskillli_3[55]; // weak extern char aCharaterski_31[47]; // weak extern char aCharaterski_30[29]; // weak extern int (__stdcall *off_6AA3FC[10])(int, int); // weak extern int (__stdcall *off_6AA45C[10])(int, int); // weak extern int (__stdcall *off_6AA4BC[10])(int, int); // weak extern int (__stdcall *off_6AA51C[10])(int, int); // weak extern int (__stdcall *off_6AA57C[10])(int, int); // weak extern int (__stdcall *off_6AA5DC[10])(int, int); // weak extern int (__stdcall *off_6AA63C[10])(int, int); // weak extern int (__stdcall *off_6AA69C[10])(int, int); // weak extern int (__stdcall *off_6AA6FC[10])(int, int); // weak extern int (__stdcall *off_6AA75C[10])(int, int); // weak extern int (__stdcall *off_6AA7BC[10])(int, int); // weak extern int (__stdcall *off_6AA81C[10])(int, int); // weak extern int (__stdcall *off_6AA87C[10])(int, int); // weak extern int (__stdcall *off_6AA8DC[10])(int, int); // weak extern int (__stdcall *off_6AA93C[10])(int, int); // weak extern int (__stdcall *off_6AA99C[10])(int, int); // weak extern int (__stdcall *off_6AA9FC[10])(int, int); // weak extern int (__stdcall *off_6AAA5C[10])(int, int); // weak extern int (__stdcall *off_6AAABC[10])(int, int); // weak extern int (__stdcall *off_6AAB1C[10])(int, int); // weak extern int (__stdcall *off_6AAB7C[10])(int, int); // weak extern int (__stdcall *off_6AABDC[10])(int, int); // weak extern int (__stdcall *off_6AAC3C[10])(int, int); // weak extern int (__stdcall *off_6AAC9C[10])(int, int); // weak extern int (__stdcall *off_6AACFC[10])(int, int); // weak extern int (__stdcall *off_6AAD5C[10])(int, int); // weak extern int (__stdcall *off_6AADBC[10])(int, int); // weak extern int (__stdcall *off_6AAE1C[10])(int, int); // weak extern int (__stdcall *off_6AAE7C[10])(int, int); // weak extern char aCharclassCc__1[36]; // weak extern char aParam[]; // idb extern char aLevel[]; // idb extern char aCharclassCc__0[35]; // weak extern char a__9dataShine_2[]; // idb extern char a__9dataShineWo[]; // idb extern char aCharclassCc_lo[19]; // weak extern char aParamsaviorser[18]; // weak extern char aParamsentinels[20]; // weak extern char aParamassassins[20]; // weak extern char aParamcloserser[18]; // weak extern char aParamcruelserv[17]; // weak extern char aParamchaserser[18]; // weak extern char aParamjokerserv[17]; // weak extern char aParamwizardser[18]; // weak extern char aParamwarrockse[19]; // weak extern char aParamenchanter[21]; // weak extern char aParamwizmagese[19]; // weak extern char aParammageserve[16]; // weak extern char aParamrangerser[18]; // weak extern char aParamsharpshoo[24]; // weak extern char aParamscoutserv[17]; // weak extern char aParamhawkarche[22]; // weak extern char aParamarcherser[18]; // weak extern char aParamguardians[20]; // weak extern char aParamholyknigh[22]; // weak extern char aParampaladinse[19]; // weak extern char aParamhighcleri[22]; // weak extern char aParamclericser[18]; // weak extern char aParamknightser[18]; // weak extern char aParamgladiator[21]; // weak extern char aParamwarriorse[19]; // weak extern char aParamcleverfig[25]; // weak extern char aParamfighterse[19]; // weak extern char aCharclassmanag[27]; // weak extern char aSenmaxlp[9]; // weak extern char aSensprecover_a[20]; // weak extern char aSensprecover_t[18]; // weak extern char asc_6AB204[50]; // weak extern char aShineplayerS_0[47]; // weak extern char aNc_char_regist[]; // idb extern char aWorldmanager_2[67]; // weak extern char aWorldmanager_1[50]; // weak extern char aWorldmanager_4[64]; // weak extern char aWorldmanager_3[47]; // weak extern char aWorldmanager_6[65]; // weak extern char aWorldmanager_5[48]; // weak extern char asc_6AB400[66]; // weak extern char asc_6AB444[48]; // weak extern char aWorldmanager_8[67]; // weak extern char aWorldmanager_7[54]; // weak extern char aWorldmanager_9[48]; // weak extern char aWorldmanage_11[70]; // weak extern char aWorldmanage_10[53]; // weak extern char aWorldmanage_12[72]; // weak extern char asc_6AB5F0[68]; // weak extern char asc_6AB634[50]; // weak extern char asc_6AB668[67]; // weak extern char asc_6AB6AC[49]; // weak extern char asc_6AB6E0[67]; // weak extern char asc_6AB724[49]; // weak extern char asc_6AB758[69]; // weak extern char aWorldmanage_13[50]; // weak extern char aWorldmanage_15[67]; // weak extern char aWorldmanage_14[48]; // weak extern char aWorldmanage_17[73]; // weak extern char aWorldmanage_16[56]; // weak extern char aWorldmanage_18[50]; // weak extern char aWorldmanage_20[71]; // weak extern char aWorldmanage_19[54]; // weak extern char aWorldmanage_22[65]; // weak extern char aWorldmanage_21[48]; // weak extern char asc_6ABA00[66]; // weak extern char asc_6ABA48[65]; // weak extern char asc_6ABA8C[48]; // weak extern char aWorldmanage_24[64]; // weak extern char aWorldmanage_23[47]; // weak extern char asc_6ABB30[66]; // weak extern char asc_6ABB74[48]; // weak extern char aWorldmanage_25[47]; // weak extern char aGamedbsessio_1[45]; // weak extern char asc_6ABC08[81]; // weak extern char asc_6ABC60[77]; // weak extern char asc_6ABCB0[82]; // weak extern char asc_6ABD04[53]; // weak extern char aGamedbsessio_2[63]; // weak extern char aGamedbsessionW[46]; // weak extern char asc_6ABDAC[53]; // weak extern char asc_6ABDE8[74]; // weak extern char asc_6ABE34[53]; // weak extern char aWorldmanage_26[60]; // weak extern char aWorldmanage_27[68]; // weak extern char asc_6ABEF0[71]; // weak extern char asc_6ABF38[53]; // weak extern char aWorldmanage_29[71]; // weak extern char aWorldmanage_28[54]; // weak extern char asc_6ABFF0[50]; // weak extern char aWorldmanage_31[80]; // weak extern char aWorldmanage_30[63]; // weak extern char asc_6AC0B8[58]; // weak extern char aWorldmanage_33[78]; // weak extern char aWorldmanage_32[61]; // weak extern char asc_6AC188[56]; // weak extern char aWorldmanage_35[75]; // weak extern char aWorldmanage_34[56]; // weak extern char aWorldmanage_39[76]; // weak extern char aWorldmanage_38[77]; // weak extern char aWorldmanage_37[70]; // weak extern char aWorldmanage_36[53]; // weak extern char aItemsmallbagSm[66]; // weak extern char aItemsmallbag_0[57]; // weak extern int (__stdcall *off_6AC3EC)(int, int); // weak extern char asc_6AC3F0[65]; // weak extern char asc_6AC434[63]; // weak extern char asc_6AC474[2]; // weak extern char asc_6AC478[2]; // weak extern char byte_6AC47C[]; // weak extern char asc_6AC48C[47]; // weak extern char asc_6AC4BC[59]; // weak extern char asc_6AC4F8[69]; // weak extern char asc_6AC540[50]; // weak extern char asc_6AC578[70]; // weak extern char asc_6AC5C0[72]; // weak extern char asc_6AC608[70]; // weak extern char asc_6AC650[54]; // weak extern char asc_6AC688[68]; // weak extern char asc_6AC6CC[50]; // weak extern char aWorldmanage_41[78]; // weak extern char aWorldmanage_40[61]; // weak extern char aSo_setregist_0[]; // idb extern char asc_6AC7C0[68]; // weak extern char aSo_setregistnu[]; // idb extern char aShineplayerS_1[32]; // weak extern char aZoneSWorldS[]; // idb extern char asc_6AC86C[50]; // weak extern char aGamedbsessio_4[64]; // weak extern char aGamedbsessio_3[46]; // weak extern char aGamedbsessio_5[47]; // weak extern char asc_6AC940[77]; // weak extern char aGamedbsessio_7[69]; // weak extern char aGamedbsessio_6[51]; // weak extern char aGamedbsessio_8[52]; // weak extern char asc_6ACA40[76]; // weak extern char asc_6ACA8C[58]; // weak extern char aGamedbsessi_10[49]; // weak extern char aGamedbsessio_9[46]; // weak extern int (__thiscall *off_6ACB30)(void *, char); // weak extern int (__thiscall *off_6ACB38)(void *, char); // weak extern int (__thiscall *off_6ACB40)(void *, char); // weak extern int (__thiscall *off_6ACB48)(void *, char); // weak extern int (__thiscall *off_6ACB50)(void *, char); // weak extern int (__thiscall *off_6ACB58)(void *, char); // weak extern int (__thiscall *off_6ACB60)(void *, char); // weak extern int (__thiscall *off_6ACB68)(void *, char); // weak extern int (__thiscall *off_6ACB70)(void *, char); // weak extern int (__thiscall *off_6ACB78)(void *, char); // weak extern char asc_6ACB7C[]; // idb extern char aCchargeddele_1[50]; // weak extern char aCchargeddele_0[49]; // weak extern char aCchargeddeleta[60]; // weak extern char a__9dataShineCh[]; // idb extern char aChargediteme_4[54]; // weak extern char aChargediteme_3[52]; // weak extern char aChargediteme_2[40]; // weak extern char aChargediteme_1[53]; // weak extern int (__thiscall *off_6ACD38)(void *, char); // weak extern char aUseskill[9]; // weak extern char aRidepetdatab_0[26]; // weak extern char aRidepetdatabox[41]; // weak extern char dataShine::a[]; // idb extern char aUseride[8]; // weak extern int (__thiscall *off_6ACDB8)(void *, char); // weak extern char aChargediteme_5[57]; // weak extern char aChargediteme_6[56]; // weak extern char asc_6ACE4C[60]; // weak extern char asc_6ACE88[60]; // weak extern char asc_6ACEC4[60]; // weak extern char aChargediteme_7[59]; // weak extern char aChargediteme_8[62]; // weak extern int (__thiscall *off_6ACF80)(void *, char); // weak extern int (__stdcall *off_6ACFA4)(int, int); // weak extern char aChargediteme_9[57]; // weak extern int (__stdcall *off_6ACFE8)(int, int); // weak extern char asc_6ACFEC[45]; // weak extern char aWorldmanage_42[51]; // weak extern char asc_6AD050[50]; // weak extern char asc_6AD084[56]; // weak extern char asc_6AD0C0[69]; // weak extern char asc_6AD108[70]; // weak extern char asc_6AD150[51]; // weak extern char aReviveHere[13]; // weak extern char asc_6AD198[80]; // weak extern char aReviveCity[13]; // weak extern char aReviveReady[14]; // weak extern char aGamedbsessi_11[43]; // weak extern char asc_6AD238[68]; // weak extern char asc_6AD27C[63]; // weak extern char asc_6AD2BC[50]; // weak extern char aChangedFromDTo[]; // idb extern char asc_6AD308[41]; // weak extern char aSp_nc_map_lo_2[]; // idb extern char asc_6AD368[69]; // weak extern char aSp_nc_map_lo_1[]; // idb extern char asc_6AD3DC[51]; // weak extern char asc_6AD410[53]; // weak extern int (__stdcall *off_6AD44C)(int, int, int); // weak extern char aDroplocationma[32]; // weak extern char asc_6AD470[49]; // weak extern char asc_6AD4A4[56]; // weak extern char asc_6AD4DC[48]; // weak extern char aSIsNotInThisMa[]; // idb extern char aSIsNotMobIndex[]; // idb extern char asc_6AD538[48]; // weak extern char aFieldmapFm_m_1[33]; // weak extern char aMapmarking[]; // idb extern char aFieldmapFm_m_0[42]; // weak extern char aFieldmapFm_mar[21]; // weak extern int (*off_6AD5E0)(); // weak extern char asc_6AD5E4[47]; // weak extern char asc_6AD614[48]; // weak extern char asc_6AD644[53]; // weak extern char asc_6AD67C[50]; // weak extern char asc_6AD6B0[47]; // weak extern char asc_6AD6E0[48]; // weak extern char asc_6AD710[44]; // weak extern char asc_6AD73C[43]; // weak extern char asc_6AD768[47]; // weak extern char asc_6AD798[46]; // weak extern char asc_6AD7C8[48]; // weak extern char asc_6AD7F8[43]; // weak extern char asc_6AD824[44]; // weak extern char aWholesaverWs_1[56]; // weak extern char aWholesaverWs_0[38]; // weak extern char aWholesaverWs_2[33]; // weak extern char aWholesaverWs_9[26]; // weak extern char aWholesaverWs_3[26]; // weak extern char aWholesaverWs_4[28]; // weak extern char aWholesaverWs_5[30]; // weak extern char aWholesaverWs_6[28]; // weak extern char aNotsaved_bin[]; // idb extern char aWb[]; // idb extern char aEventsaveche_0[53]; // weak extern char aEventsavecheck[27]; // weak extern char asc_6AD9CC[47]; // weak extern char asc_6AD9FC[48]; // weak extern char aShineplayerS_2[50]; // weak extern char asc_6ADA60[53]; // weak extern char asc_6ADA98[50]; // weak extern char asc_6ADACC[47]; // weak extern char asc_6ADAFC[48]; // weak extern char asc_6ADB2C[44]; // weak extern char asc_6ADB58[43]; // weak extern char asc_6ADB84[47]; // weak extern int (__stdcall *off_6ADBB8)(int, __int16); // weak extern char aAbnormalsta_77[47]; // weak extern char aAbnormalsta_76[44]; // weak extern char aAbnormalsta_75[29]; // weak extern char asc_6ADC38[46]; // weak extern char asc_6ADC68[43]; // weak extern char aGamedbsessi_13[57]; // weak extern char aGamedbsessi_12[39]; // weak extern char aGamedbsessionN[43]; // weak extern char aGamedbsessi_14[43]; // weak extern char aGamedbsessi_15[41]; // weak extern char aGamedbsessi_16[64]; // weak extern char asc_6ADDC0[50]; // weak extern char aWholesaverW_10[55]; // weak extern char aWholesaverWs_8[41]; // weak extern char aWholesaverWs_7[23]; // weak extern int (*off_6ADE74)(); // weak extern char asc_6ADE78[97]; // weak extern char asc_6ADEE0[88]; // weak extern char asc_6ADF38[87]; // weak extern char aWholesaverSo_s[47]; // weak extern char asc_6ADFC0[48]; // weak extern char asc_6ADFF0[44]; // weak extern char byte_6AE01C[]; // weak extern int (__stdcall *off_6AE034)(int, int, int); // weak extern char aSDD[]; // idb extern char asc_6AE048[66]; // weak extern char asc_6AE090[80]; // weak extern char asc_6AE0E0[75]; // weak extern char asc_6AE12C[60]; // weak extern char asc_6AE168[75]; // weak extern char asc_6AE1B4[57]; // weak extern char asc_6AE1F0[64]; // weak extern char asc_6AE230[50]; // weak extern char asc_6AE268[64]; // weak extern char asc_6AE2A8[50]; // weak extern char asc_6AE2DC[63]; // weak extern char asc_6AE31C[49]; // weak extern char asc_6AE350[82]; // weak extern char asc_6AE3A8[70]; // weak extern char asc_6AE3F0[56]; // weak extern char asc_6AE428[55]; // weak extern char asc_6AE460[54]; // weak extern char asc_6AE498[54]; // weak extern char asc_6AE4D0[53]; // weak extern char asc_6AE508[69]; // weak extern char asc_6AE550[51]; // weak extern char asc_6AE588[72]; // weak extern char asc_6AE5D0[76]; // weak extern char asc_6AE61C[58]; // weak extern char asc_6AE658[54]; // weak extern char asc_6AE690[58]; // weak extern char asc_6AE6CC[44]; // weak extern char asc_6AE6F8[72]; // weak extern char asc_6AE740[58]; // weak extern char asc_6AE77C[39]; // weak extern char asc_6AE7A4[63]; // weak extern char asc_6AE7E4[45]; // weak extern char asc_6AE818[64]; // weak extern char asc_6AE858[51]; // weak extern char asc_6AE88C[41]; // weak extern char asc_6AE8B8[64]; // weak extern char asc_6AE8F8[47]; // weak extern char asc_6AE928[55]; // weak extern char asc_6AE960[38]; // weak extern char asc_6AE988[71]; // weak extern char asc_6AE9D0[54]; // weak extern char asc_6AEA08[48]; // weak extern char asc_6AEA38[51]; // weak extern char asc_6AEA6C[60]; // weak extern char asc_6AEAA8[57]; // weak extern char aShinemoverSo_s[50]; // weak extern char asc_6AEB18[58]; // weak extern char asc_6AEB54[55]; // weak extern char aShinemoverSo_1[47]; // weak extern char asc_6AEBBC[56]; // weak extern char asc_6AEBF4[50]; // weak extern char asc_6AEC28[64]; // weak extern char asc_6AEC68[50]; // weak extern char aFriendusepoint[15]; // weak extern char asc_6AECB0[101]; // weak extern char asc_6AED18[83]; // weak extern char asc_6AED70[65]; // weak extern char asc_6AEDB4[52]; // weak extern int (__stdcall *off_6AEDEC)(int); // weak extern int (__stdcall *off_6AEE00)(int); // weak extern int (__stdcall *off_6AEE14)(int); // weak extern char aZonelistensess[37]; // weak extern char aZonelistense_1[63]; // weak extern char aZonelistense_0[45]; // weak extern char aDMechinesTrave[]; // idb extern char aZonelistense_2[52]; // weak extern char aZonelistense_3[48]; // weak extern char aZonelistense_4[48]; // weak extern char aZonelistense_5[47]; // weak extern char aZonelistense_6[49]; // weak extern char aZonelistense_7[48]; // weak extern char aZonelistense_8[43]; // weak extern char aZonelistense_9[44]; // weak extern char aZonelistens_10[63]; // weak extern char aZonelistens_11[62]; // weak extern int (__stdcall *off_6AF0D8)(int, int); // weak extern char aCannotMemoryAl[74]; // weak extern char aDamagebyangleD[56]; // weak extern char aDamagebyangl_7[60]; // weak extern char aDamagebyangl_6[60]; // weak extern char aDamagebyangl_5[62]; // weak extern char aDamagebyangl_4[54]; // weak extern char aDamagebyangl_3[61]; // weak extern char aDamagebyangl_2[53]; // weak extern char aDamagebyangl_1[36]; // weak extern char aDamagebyangl_0[65]; // weak extern char a__9dataShine_4[]; // idb extern char a__9dataShine_3[]; // idb extern char aDamagebysoul[]; // idb extern char aDamagebysoul_0[44]; // weak extern char aDamagebysoulSo[73]; // weak extern char a__9dataShine_6[]; // idb extern char a__9dataShine_5[]; // idb extern char asc_6AF468[59]; // weak extern char asc_6AF4A8[66]; // weak extern char asc_6AF4EC[61]; // weak extern char asc_6AF530[69]; // weak extern char aShineplayerS_5[62]; // weak extern char aShineplayerS_4[56]; // weak extern char aShineplayerS_3[51]; // weak extern char aShineplayerSp_[56]; // weak extern char aShineplayerS_9[55]; // weak extern char aShineplayerS_8[64]; // weak extern char aShineplayerS_7[60]; // weak extern char aShineplayerS_6[41]; // weak extern char aShineplayer_10[61]; // weak extern char aShinemoverSo_m[59]; // weak extern char asc_6AF7BC[62]; // weak extern char asc_6AF7FC[44]; // weak extern char asc_6AF828[76]; // weak extern char asc_6AF874[47]; // weak extern char asc_6AF8A8[68]; // weak extern char asc_6AF8EC[50]; // weak extern char asc_6AF920[58]; // weak extern char aShineplayer_11[63]; // weak extern char asc_6AF9A0[66]; // weak extern char asc_6AF9E4[48]; // weak extern char asc_6AFA18[68]; // weak extern char asc_6AFA5C[58]; // weak extern char asc_6AFA98[58]; // weak extern char asc_6AFAD4[48]; // weak extern char aShineplayer_17[58]; // weak extern char aShineplayer_16[56]; // weak extern char aShineplayer_15[62]; // weak extern char aShineplayer_14[57]; // weak extern char aShineplayer_13[65]; // weak extern char aShineplayer_12[62]; // weak extern char aShineplayer_19[62]; // weak extern char aShineplayer_18[58]; // weak extern char asc_6AFCF8[57]; // weak extern char aCooltimeset[13]; // weak extern char aSp_ridecast_in[20]; // weak extern char aNotNull[9]; // weak extern char asc_6AFD64[60]; // weak extern char asc_6AFDA0[42]; // weak extern char asc_6AFDCC[63]; // weak extern char asc_6AFE0C[58]; // weak extern char asc_6AFE48[43]; // weak extern char asc_6AFE78[72]; // weak extern char asc_6AFEC0[68]; // weak extern char asc_6AFF08[68]; // weak extern char asc_6AFF4C[58]; // weak extern char byte_6AFF88[]; // weak extern char aDirectdistan_0[52]; // weak extern char aDirectdistance[36]; // weak extern char aInvalidShinera[21]; // weak extern char aDirectdistan_1[41]; // weak extern char aFieldmapFm_iss[24]; // weak extern char aRadianmovetrac[30]; // weak extern char aRadianmovetr_0[31]; // weak extern char aDropitemanalyz[26]; // weak extern char aDroplocSamed_0[43]; // weak extern char aDroplocSamedis[61]; // weak extern char aDroplocSamed_1[43]; // weak extern char aDroplocation_0[30]; // weak extern char aDroplocation_1[30]; // weak extern char aDroplocation_2[30]; // weak extern char aDuplicatedmenu[39]; // weak extern char aEquipenumchang[27]; // weak extern char aEquipenumcha_0[32]; // weak extern char aEquipenumcha_1[36]; // weak extern char aEquipenumcha_2[43]; // weak extern char aEquipenumcha_3[43]; // weak extern char aEquipenumcha_4[39]; // weak extern char aEquipenumcha_5[46]; // weak extern char aEquipenumcha_6[46]; // weak extern char aFunctionCallEr[20]; // weak extern char aLuascriptscena[54]; // weak extern __int16 word_6B0394; // weak extern int (__stdcall *off_6B039C)(int); // weak extern char aDSD[]; // idb extern char aMapload_txt[]; // idb extern int (__stdcall *off_6B03BC)(int, int, int); // weak extern char aNeeditem[]; // idb extern char aNeedraid[9]; // weak extern char aNeedpartyorque[17]; // weak extern char aPartylimitedfi[]; // idb extern char aLevellimit[]; // idb extern int (__thiscall *off_6B0410)(void *, char); // weak extern int (__stdcall *off_6B0434)(int, int); // weak extern char aFieldmapFm_r_0[29]; // weak extern char aFieldmapFm_rel[20]; // weak extern char aMaprearrangeob[30]; // weak extern char aFieldmapFm_dis[33]; // weak extern char aFieldmapFm_fin[31]; // weak extern char aFieldmapFm_get[38]; // weak extern char aFieldmapFm_gui[34]; // weak extern char aFieldmapFm_g_0[31]; // weak extern char aFieldmapFm_set[31]; // weak extern char aFieldmapFm_g_1[29]; // weak extern char aFieldmapFm_g_2[34]; // weak extern char aFieldmapFm_i_0[28]; // weak extern int (__thiscall *off_6B05C0)(void *, char); // weak extern int (__thiscall *off_6B05C8)(void *, char); // weak extern char aFieldcontainer[47]; // weak extern char aFieldcontain_0[36]; // weak extern char aFieldcontain_1[35]; // weak extern char aFieldmapFm_cre[41]; // weak extern char a__9dataShineSt[]; // idb extern char aFieldcontain_2[38]; // weak extern char aFieldmapFm_i_1[18]; // weak extern char aFieldmapFm_ini[32]; // weak extern char aFieldcontain_3[29]; // weak extern char aTooManyMap[13]; // weak extern int (__thiscall *off_6B0720)(void *, char); // weak extern char aFieldcontai_12[55]; // weak extern char aChecksumErro_0[54]; // weak extern char aErrorInGuild_0[48]; // weak extern char aErrorInGuildto[48]; // weak extern char aGuildtournam_0[]; // idb extern char aFieldcontai_11[43]; // weak extern char aSerial[]; // idb extern char aFieldcontai_10[41]; // weak extern char aFieldcontain_9[46]; // weak extern char aFieldcontain_8[64]; // weak extern char aFieldlist[]; // idb extern char aFieldcontain_7[50]; // weak extern char aTutorialmap[]; // idb extern char aFieldcontain_6[62]; // weak extern char aChecksumErrorI[55]; // weak extern char aFieldcontain_5[40]; // weak extern char aErrorInInsta_1[46]; // weak extern char aErrorInInsta_0[46]; // weak extern char aErrorInInstanc[65]; // weak extern char aInstancedungeo[]; // idb extern char aFieldcontain_4[24]; // weak extern char aErrorInReadFie[37]; // weak extern char a__9dataShine_8[]; // idb extern char a__9dataShine_7[]; // idb extern char asc_6B0B20[45]; // weak extern char asc_6B0B50[42]; // weak extern char asc_6B0B7C[42]; // weak extern char asc_6B0BA8[59]; // weak extern char aMapbuffdatab_2[49]; // weak extern char aMapbuffdatab_1[45]; // weak extern char aMapbuffdatab_0[41]; // weak extern char a__9dataShineMa[]; // idb extern char aMapbuffdatabox[26]; // weak 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 *off_6B0D34)(int); // weak extern char aVarificationEr[19]; // weak extern char aDDD[]; // idb extern char aGamedbsessi_17[33]; // weak extern char aGamedbsessi_19[63]; // weak extern char aGamedbsessi_18[45]; // weak extern char aGamedbsessi_20[59]; // weak extern char aWorldmanage_43[47]; // weak extern char aGamedbsessi_21[50]; // weak extern char aGamedbsessi_22[46]; // weak extern char aGamedbsessi_23[54]; // weak extern char aGamedbsessi_26[65]; // weak extern char aGamedbsessi_25[50]; // weak extern char aGamedbsessi_24[47]; // weak extern char aGamedbsessi_29[67]; // weak extern char aGamedbsessi_28[52]; // weak extern char aGamedbsessi_27[49]; // weak extern char aGamedbsessi_31[50]; // weak extern char aGamedbsessi_30[47]; // weak extern char asc_6B10B8[104]; // weak extern char aGamedbsessi_33[56]; // weak extern char aGamedbsessi_32[53]; // weak extern char aGamedbsessi_34[74]; // weak extern char asc_6B11E0[100]; // weak extern char aGamedbsessi_36[69]; // weak extern char aGamedbsessi_35[66]; // weak extern char aGamedbsessi_38[49]; // weak extern char aGamedbsessi_37[46]; // weak extern char asc_6B1338[85]; // weak extern char aGamedbsessi_40[54]; // weak extern char aGamedbsessi_39[51]; // weak extern char aGamedbsessi_42[57]; // weak extern char aGamedbsessi_41[54]; // weak extern char aGamedbsessi_46[60]; // weak extern char aGamedbsessi_45[81]; // weak extern char aGamedbsessi_44[45]; // weak extern char aGamedbsessi_43[42]; // weak extern char asc_6B1560[84]; // weak extern char aFriendbroadcas[22]; // weak extern char aGamedbsessi_48[53]; // weak extern char aGamedbsessi_47[50]; // weak extern int (__stdcall *off_6B163C)(int); // weak extern char aGamelogsession[34]; // weak extern char aGamelogsessi_1[64]; // weak extern char aGamelogsessi_0[46]; // weak extern char aGamelogsessi_3[60]; // weak extern char aGamelogsessi_2[42]; // weak extern int (__thiscall *off_6B174C)(void *, char); // weak extern char dataShine::a[]; // idb extern char aCharaterski_32[56]; // weak extern int (__thiscall *off_6B17B0)(void *, char); // weak extern int (__thiscall *off_6B17B8)(void *, char); // weak extern char aGatherproduc_0[50]; // weak extern char a__9dataShineGa[]; // idb extern char aGatherproduceG[36]; // weak extern char aGatherproduc_2[49]; // weak extern char aGatherproduc_1[49]; // weak extern char dataShine::a[]; // idb extern char aGatherproduceR[35]; // weak extern char aCharaterski_34[60]; // weak extern char aCharaterski_33[39]; // weak extern char asc_6B193C[46]; // weak extern char asc_6B196C[47]; // weak extern char asc_6B19A0[72]; // weak extern char asc_6B19E8[82]; // weak extern char asc_6B1A3C[58]; // weak extern char asc_6B1A78[82]; // weak extern char asc_6B1AD0[85]; // weak extern char asc_6B1B28[78]; // weak extern char asc_6B1B78[49]; // weak extern char asc_6B1BAC[63]; // weak extern char aItemproducerIt[27]; // weak extern char aItemproducer_5[28]; // weak extern char asc_6B1C28[66]; // weak extern char aItemproducer_0[50]; // weak extern char aItemproducerIp[35]; // weak extern char aItemproducer_3[41]; // weak extern char aItemproducer_2[40]; // weak extern char aItemproducer_1[25]; // weak extern char aItemproducer_4[32]; // weak extern char asc_6B1D58[69]; // weak extern char asc_6B1DA0[67]; // weak extern char asc_6B1DE4[51]; // weak extern char aGamedbsessi_51[59]; // weak extern char aGamedbsessi_50[44]; // weak extern char aGamedbsessi_49[41]; // weak extern char aShineplayer_20[57]; // weak extern char asc_6B1EE8[81]; // weak extern char asc_6B1F40[78]; // weak extern char asc_6B1F90[60]; // weak extern char asc_6B1FCC[50]; // weak extern char asc_6B2000[60]; // weak extern char aGather_maxtime[26]; // weak extern char asc_6B2058[68]; // weak extern char asc_6B20A0[75]; // weak extern char asc_6B20F0[74]; // weak extern char asc_6B213C[57]; // weak extern char asc_6B2178[76]; // weak extern char asc_6B21C8[81]; // weak extern char asc_6B2220[79]; // weak extern char aWorldmanage_44[48]; // weak extern char aWorldmanage_45[55]; // weak extern int (__stdcall *off_6B22DC)(int, int); // weak extern int (__stdcall *off_6B22E4)(int, int); // weak extern int (__stdcall *off_6B22EC)(int, int); // weak extern char aShineguildacad[49]; // weak extern int (__stdcall *off_6B2328)(int, int); // weak extern char aShineguildac_0[37]; // weak extern int (__stdcall *off_6B2358)(int, int); // weak extern char asc_6B2360[73]; // weak extern char aShineplayer_24[81]; // weak extern char aShineplayer_23[81]; // weak extern char aShineplayer_22[75]; // weak extern char aShineplayer_21[73]; // weak extern char asc_6B2500[77]; // weak extern char aWorldmanage_46[63]; // weak extern char aWorldmanage_47[67]; // weak extern char aWorldmanage_48[69]; // weak extern char aWorldmanage_49[62]; // weak extern char aWorldmanage_50[77]; // weak extern char aWorldmanage_53[86]; // weak extern char aWorldmanage_52[90]; // weak extern char aWorldmanage_51[71]; // weak extern char aGamedbsessi_52[71]; // weak extern char aGamedbsessi_53[70]; // weak extern char aGamedbsessi_54[58]; // weak extern char aSp_nc_guild_ac[64]; // weak extern char asc_6B28C0[76]; // weak extern char asc_6B2910[93]; // weak extern char asc_6B2970[75]; // weak extern int (__stdcall *off_6B29C0)(int, int); // weak extern char asc_6B29C8[93]; // weak extern char asc_6B2A28[78]; // weak extern char asc_6B2A78[75]; // weak extern char asc_6B2AC8[92]; // weak extern char asc_6B2B28[77]; // weak extern char asc_6B2B78[74]; // weak extern char aSo_ply_guildac[53]; // weak extern char asc_6B2C00[66]; // weak extern char asc_6B2C48[102]; // weak extern char asc_6B2CB0[84]; // weak extern char asc_6B2D08[101]; // weak extern char asc_6B2D70[83]; // weak extern char asc_6B2DC8[65]; // weak extern char aGuildacademyre[100]; // weak extern char aShineguildac_1[73]; // weak extern int (__thiscall *off_6B2EC8)(void *, char); // weak extern int (__stdcall *off_6B2EEC)(int, int); // weak extern int (__thiscall *off_6B2EF4)(void *, char); // weak extern char asc_6B2F18[83]; // weak extern char asc_6B2F70[65]; // weak extern char aGuildacademy_0[83]; // weak extern char aGuildacademy_1[82]; // weak extern char aGuildacademy_2[75]; // weak extern char aGuildacademy_3[77]; // weak extern int (__stdcall *off_6B310C)(int, int); // weak extern char aGuildacademy_4[87]; // weak extern int (__stdcall *off_6B316C)(int, int); // weak extern char aGuildacademy_5[86]; // weak extern int (__stdcall *off_6B31CC)(int, int); // weak extern int (__stdcall *off_6B31D4)(int, int); // weak extern char aGuildacademy_6[83]; // weak extern char aGuildacademy_7[82]; // weak extern char aGuildacademy_8[75]; // weak extern char aGarsm_rewardin[45]; // weak extern char aShineguildac_3[67]; // weak extern char aShineguildac_2[49]; // weak extern char aShineguildac_5[66]; // weak extern char aShineguildac_4[48]; // weak extern char aZonelistens_12[68]; // weak extern char aZonelistens_13[67]; // weak extern char asc_6B3488[72]; // weak extern char asc_6B34D0[80]; // weak extern char asc_6B3520[78]; // weak extern char asc_6B3570[67]; // weak extern char asc_6B35B4[54]; // weak extern char asc_6B35F0[72]; // weak extern char asc_6B3638[80]; // weak extern char asc_6B3688[78]; // weak extern char asc_6B36D8[67]; // weak extern char asc_6B371C[54]; // weak extern char asc_6B3754[50]; // weak extern char asc_6B3788[50]; // weak extern char asc_6B37BC[50]; // weak extern char asc_6B37F0[82]; // weak extern char aGuildRenameN_0[19]; // weak extern char aGuildRenameNul[26]; // weak extern char asc_6B3878[64]; // weak extern char asc_6B38B8[82]; // weak extern char aGuildRetypeN_0[19]; // weak extern char aGuildRetypeNul[26]; // weak extern char asc_6B3940[64]; // weak extern char asc_6B3980[50]; // weak extern int (__thiscall *off_6B39B8)(void *, char); // weak extern int (__stdcall *off_6B39DC)(int, int); // weak extern int (__stdcall *off_6B39E4)(int, int); // weak extern char aGuildstorageGu[72]; // weak extern int (__thiscall *off_6B3A34)(void *, char); // weak extern char asc_6B3A54[52]; // weak extern char asc_6B3A88[70]; // weak extern char asc_6B3AD0[52]; // weak extern int (__stdcall *off_6B3B08)(int, int); // weak extern char aGuildstorage_0[59]; // weak extern int (__stdcall *off_6B3B4C)(int, int); // weak extern char aZonelistens_14[52]; // weak extern char aShineguildst_0[54]; // weak extern char aShineguildstor[36]; // weak extern char asc_6B3BE0[82]; // weak extern char aGtentrymaperr1[]; // idb extern char aGtentrymaperr0[]; // idb extern char aShinemobMb_sen[47]; // weak extern char asc_6B3C88[85]; // weak extern char asc_6B3CE0[88]; // weak extern char asc_6B3D38[88]; // weak extern char asc_6B3D90[91]; // weak extern int (__stdcall *off_6B3DF0)(int, int); // weak extern char aShineguildst_1[36]; // weak extern char aPineeventscr_0[71]; // weak extern char aFieldmapFm_g_5[50]; // weak extern char aFieldmapFm_g_4[47]; // weak extern char aFieldmapFm_g_3[32]; // weak extern char asc_6B3EE4[50]; // weak extern char asc_6B3F18[68]; // weak extern char asc_6B3F60[77]; // weak extern char asc_6B3FB0[59]; // weak extern char aWorldmanage_57[75]; // weak extern char aWorldmanage_56[110]; // weak extern char aWorldmanage_55[105]; // weak extern char aWorldmanage_54[61]; // weak extern char aWorldmanage_58[52]; // weak extern char asc_6B4190[91]; // weak extern char aWorldmanage_59[63]; // weak extern char asc_6B4230[79]; // weak extern char aGamedbsessi_57[58]; // weak extern char aGamedbsessi_56[73]; // weak extern char aGamedbsessi_55[55]; // weak extern char asc_6B4348[66]; // weak extern char asc_6B4390[91]; // weak extern char asc_6B43F0[74]; // weak extern char aGuildGuildtour[22]; // weak extern char aDDDD[]; // idb extern char aSDDDDDDDDSDDDS[]; // idb extern char aWorldmanage_61[81]; // weak extern char aConstFieldopti[52]; // weak extern char aWorldmanage_60[46]; // weak extern char asc_6B4588[53]; // weak extern char aWorldmanage_62[46]; // weak extern char aWorldmanage_63[60]; // weak extern char aWorldmanage_66[90]; // weak extern char aWorldmanage_65[70]; // weak extern char aWorldmanage_64[55]; // weak extern char asc_6B4710[72]; // weak extern char aPacketTooLong[]; // idb extern char aGuildtourament[47]; // weak extern char aGuildtourame_0[40]; // weak extern char asc_6B47C8[89]; // weak extern char asc_6B4828[71]; // weak extern char asc_6B4870[61]; // weak extern char asc_6B48B0[58]; // weak extern char aWorldmanage_67[69]; // weak 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 *off_6B499C)(void *, char); // weak extern int (__thiscall *off_6B49A8)(void *, char); // weak extern int (__stdcall *off_6B49B4)(int, int, int); // weak extern int (__thiscall *off_6B49BC)(void *, char); // weak extern int (__stdcall *off_6B4A00)(int); // weak extern char aGuildtournam_2[71]; // weak extern char aGuildtourments[53]; // weak extern char aGuildtourmen_0[52]; // weak extern char aVectorSize[14]; // weak extern char aId_0[5]; // weak extern char aGuildtourmen_2[62]; // weak extern char aGuildtourmen_1[72]; // weak extern char aId[6]; // weak extern char aGuildtournam_3[41]; // weak extern char aGuildtournam_9[56]; // weak extern char aGuildtournam_8[62]; // weak extern char aGuildtournam_7[40]; // weak extern char asc_6B4C34[54]; // weak extern char aGuildtournam_6[67]; // weak extern char aGuildtournam_5[55]; // weak extern char aTemplog[10]; // weak extern char aGuildtournam_4[58]; // weak extern char aGuildtourna_11[59]; // weak extern char aGuildtourna_10[51]; // weak extern char aGuildtourmen_3[64]; // weak extern char aGuildtourna_13[78]; // weak extern char aGuildtourmen_4[51]; // weak extern char aGuildtourmen_7[60]; // weak extern char aGuildtourmen_6[48]; // weak extern char aGuildtourmen_5[50]; // weak extern char aGuildtourmen_9[53]; // weak extern char aGuildtourna_14[38]; // weak extern char aGuildtourmen_8[58]; // weak extern char aGuildtourme_10[56]; // weak extern int (__thiscall *off_6B5044)(void *, char); // weak extern char aGuildtourna_16[65]; // weak extern char aGuildtourna_15[65]; // weak extern int (__thiscall *off_6B5154)(void *, char); // weak extern int (__stdcall *off_6B5178)(int, int); // weak extern int (__thiscall *off_6B5180)(void *, char); // weak extern int (__thiscall *off_6B5188)(void *, char); // weak extern int (__thiscall *off_6B5190)(void *, char); // weak extern int (__stdcall *off_6B5198)(int, int); // weak extern int (__stdcall *off_6B51A0)(int, int); // weak extern int (__stdcall *off_6B51A8)(int, int); // weak extern char aHitmelistEnemy[31]; // weak extern char aLevelhandicap4[47]; // weak extern int (__stdcall *off_6B5200)(int, int); // weak extern char aExperiencedist[40]; // weak extern char aPartyexperienc[51]; // weak extern char a__9dataShinePa[]; // idb extern char a__9dataShine_9[]; // idb extern char aPartyexperie_1[38]; // weak extern char aPartyexperie_0[55]; // weak extern char a__9dataShin_10[]; // idb extern char aHitmelistEne_0[31]; // weak extern char aHitmelistEne_1[36]; // weak extern char aNearfriendinfo[76]; // weak extern char aHitmelistEne_2[39]; // weak extern int (__thiscall *off_6B5400)(void *, char); // weak extern char aExperiencedi_1[57]; // weak extern char aExperiencedi_0[54]; // weak extern char aExperiencedi_3[69]; // weak extern char aExperiencedi_2[64]; // weak extern char aExperiencedi_8[51]; // weak extern char aExperiencedi_7[53]; // weak extern char aExperiencedi_6[54]; // weak extern char aExperiencedi_5[43]; // weak extern char aExperiencedi_4[31]; // weak extern char aWorldmanage_68[53]; // weak extern char asc_6B5648[53]; // weak extern char asc_6B5680[59]; // weak extern char asc_6B56BC[63]; // weak extern char aHolypromisecen[45]; // weak extern char aZonelistens_15[55]; // weak extern char asc_6B5768[71]; // weak extern char asc_6B57B0[53]; // weak extern char asc_6B57E8[87]; // weak extern char asc_6B5840[69]; // weak extern char aGamedbsessi_58[57]; // weak extern char asc_6B58C8[80]; // weak extern char asc_6B5918[62]; // weak extern char asc_6B5958[92]; // weak extern char asc_6B59B8[74]; // weak extern char aGamedbsessi_59[62]; // weak extern char asc_6B5A44[57]; // weak extern char aId_deletenow[]; // idb extern char off_6B5A90[]; // idb extern char aNo_0[3]; // idb extern int (__stdcall *off_6B5A9C)(int, int, int); // weak extern int (__stdcall *off_6B5AA4)(int, int, int); // weak extern int (__stdcall *off_6B5AAC)(int, int); // weak extern int (__stdcall *off_6B5AB4)(int, int); // weak extern char aMapclusterma_0[61]; // weak extern char aMapclustermana[74]; // weak extern char aMapclusternama[40]; // weak extern char aMapclusterna_0[40]; // weak extern char aMapclusterna_1[37]; // weak extern char aKickplayerAli_[21]; // weak extern char aFieldmapFm_kic[21]; // weak extern char aFieldmapFm_exi[19]; // weak extern char aZonelistens_16[58]; // weak extern char aMapclusterma_2[74]; // weak extern char aMapclusterma_1[46]; // weak extern char aWms_nc_insta_5[65]; // weak extern char aWorldmanage_70[86]; // weak extern char aWms_nc_insta_4[69]; // weak extern char aRecalldisablef[]; // idb extern char aWms_nc_insta_3[66]; // weak extern char aWms_nc_insta_2[68]; // weak extern char aWms_nc_insta_1[67]; // weak extern char aWms_nc_insta_0[67]; // weak extern char aWms_nc_instanc[67]; // weak extern char aWorldmanage_69[68]; // weak extern char asc_6B5F70[90]; // weak extern char asc_6B5FD0[94]; // weak extern char asc_6B6030[92]; // weak extern char asc_6B6090[95]; // weak extern char asc_6B60F0[97]; // weak extern char asc_6B6158[96]; // weak extern char asc_6B61B8[96]; // weak extern char asc_6B6218[96]; // weak extern char asc_6B6278[76]; // weak extern char aWorldmanage_79[85]; // weak extern char aWorldmanage_78[97]; // weak extern char aWorldmanage_77[85]; // weak extern char aInstancedung_0[]; // idb extern char aCannotaddanymo[]; // idb extern char aLinktable[]; // idb extern char aWorldmanage_76[83]; // weak extern char aWorldmanage_75[88]; // weak extern char aWorldmanage_74[87]; // weak extern char aWorldmanage_73[87]; // weak extern char aWorldmanage_72[87]; // weak extern char aWorldmanage_71[67]; // weak extern char aMapclusterma_4[64]; // weak extern char aMapclusterma_3[46]; // weak extern int (__stdcall *off_6B6694)(int, int); // weak extern char aMapclusterma_5[56]; // weak extern char aMapclusterma_6[56]; // weak extern char aMapclusterma_7[53]; // weak extern char aMapclusterna_2[44]; // weak extern char aNotFoundEtcL_0[39]; // weak extern char aLimittimemes_0[]; // idb extern char aNotFoundEtcLim[38]; // weak extern char aLimittimemessa[]; // idb extern char aDungeontimeout[]; // idb extern char aMapclusterma_9[60]; // weak extern char aMapclusterma_8[42]; // weak extern char aMapclusterm_10[50]; // weak extern char aWorldmanage_83[91]; // weak extern char aWorldmanage_82[113]; // weak extern char aWorldmanage_81[103]; // weak extern char aWorldmanage_80[73]; // weak extern char aWorldmanage_86[102]; // weak extern char aWorldmanage_85[112]; // weak extern char aWorldmanage_84[72]; // weak extern char aLinktitle[]; // idb extern char aZonelistens_17[52]; // weak extern int (__stdcall *off_6B6B8C)(int, int, int); // weak extern int (__stdcall *off_6B6D0C)(int, int); // weak extern int (__thiscall *off_6B6E08)(void *, char); // weak extern int (__thiscall *off_6B6E2C)(void *, char); // weak extern int (__stdcall *off_6B6E50)(int, int); // weak extern char aInventorylo_69[47]; // weak extern char aInventoryloc_0[71]; // weak extern char aInventorylocki[57]; // weak extern char aInventoryloc_2[71]; // weak extern char aInventoryloc_1[58]; // weak extern char aInventoryloc_3[63]; // weak extern char aInventoryloc_4[55]; // weak extern char aInventoryloc_5[58]; // weak extern char aInventoryloc_6[59]; // weak extern char aInvencellrel_2[114]; // weak extern char aInvencellrel_1[103]; // weak extern char aInvencellrel_0[84]; // weak extern char aInvencellrelea[85]; // weak extern char aInventorylo_70[48]; // weak extern char aInventoryloc_7[58]; // weak extern char aInventoryloc_8[59]; // weak extern char aInventoryloc_9[59]; // weak extern int (__stdcall *off_6B7314)(int, int); // weak extern char aInventorylo_10[54]; // weak extern char aInventorylo_12[67]; // weak extern char aInventorylo_11[54]; // weak extern char aInventorylo_13[55]; // weak extern char aInventorylo_15[66]; // weak extern char aInventorylo_14[56]; // weak extern char aInventorylo_16[54]; // weak extern char aInventorylo_18[67]; // weak extern char aInventorylo_17[55]; // weak extern char aInventorylo_20[72]; // weak extern char aInventorylo_19[60]; // weak extern char aInventorylo_21[60]; // weak extern char aInventorylo_23[68]; // weak extern char aInventorylo_22[56]; // weak extern char aInventorylo_25[67]; // weak extern char aInventorylo_24[55]; // weak extern char aInventorylo_27[71]; // weak extern char aInventorylo_26[59]; // weak extern char aInventorylo_29[65]; // weak extern char aInventorylo_28[53]; // weak extern char aInventorylo_31[73]; // weak extern char aInventorylo_30[61]; // weak extern char aInventorylo_33[69]; // weak extern char aInventorylo_32[57]; // weak extern char aInventorylo_34[58]; // weak extern char aInventorylo_36[68]; // weak extern char aInventorylo_35[56]; // weak extern char aInventorylo_38[72]; // weak extern char aInventorylo_37[58]; // weak extern char aInventorylo_39[59]; // weak extern char aInventorylo_40[57]; // weak extern char aInventorylo_42[66]; // weak extern char aInventorylo_41[54]; // weak extern char aInventorylo_44[72]; // weak extern char aInventorylo_43[60]; // weak extern int (__stdcall *off_6B7C60)(int, int); // weak extern int (__stdcall *off_6B7C68)(int, int); // weak extern char aItemlotanaly_0[56]; // weak extern char aItemlotanalyse[44]; // weak extern char aInventorylo_45[57]; // weak extern char aInventorylo_46[58]; // weak extern char aInventorylo_47[62]; // weak extern char aInventorylo_48[66]; // weak extern char aInventorylo_49[50]; // weak extern char aInventorylo_50[93]; // weak extern char aInventorylo_51[62]; // weak extern char asc_6B7EA0[72]; // weak extern char aInventorylo_52[58]; // weak extern char aInventorylo_53[56]; // weak extern char aInventorylo_54[56]; // weak extern char aInventorylo_56[102]; // weak extern char aInventorylo_55[58]; // weak extern char aContentLockind[21]; // weak extern char aIsactive[14]; // weak extern char aContentNullIsa[26]; // weak extern char aPrev[10]; // weak extern char aNext[10]; // weak extern char aEvent[11]; // weak extern char aInventorycel_1[70]; // weak extern char aInventorycel_0[69]; // weak extern char aIcll_listMaxsi[23]; // weak extern char aInventorycelll[69]; // weak extern int (__thiscall *off_6B819C)(void *, char); // weak extern char aInventorylo_59[88]; // weak extern char aInventorylo_58[105]; // weak extern char aInventorylo_57[61]; // weak extern char asc_6B82C8[79]; // weak extern char aInvencellrel_3[85]; // weak extern char aInventorylo_60[59]; // weak extern char aScrstring[]; // idb extern char aScript[]; // idb extern char aButtonok[]; // idb extern char aButtoncancel[]; // idb extern char aItembreakerI_0[37]; // weak extern char aItembreakerIb_[19]; // weak extern char asc_6B8418[58]; // weak extern char asc_6B8454[55]; // weak extern char asc_6B848C[52]; // weak extern char aGamedbsessi_60[46]; // weak extern char aGamedbsessi_61[47]; // weak extern char aServermenufunc[39]; // weak extern char aServermenufu_0[40]; // weak extern char aServermenufu_1[37]; // weak extern char aServermenufu_2[39]; // weak extern char aItembreakwarn1[15]; // weak extern char aServermenufu_3[39]; // weak extern char aItemdropwarn[13]; // weak extern char aItemdropperId_[21]; // weak extern char aItembreakwarn0[15]; // weak extern char aItembreakerI_1[22]; // weak extern char aItemdropfrom_9[77]; // weak extern char aItemdropfrom_8[53]; // weak extern char aItemdropfrom_7[79]; // weak extern char aItemdropfrom_0[55]; // weak extern char aItemdropfrommo[71]; // weak extern char aItemdropfrom_1[49]; // weak extern char aItemdropfrom_2[58]; // weak extern char aItemdropfrom_3[52]; // weak extern char aItemdropfrom_4[56]; // weak extern char aItemdropfrom_5[48]; // weak extern char aChecksumErro_2[31]; // weak extern char aItemdropgroup[]; // idb extern char aDropitemmana_0[55]; // weak extern char a__9dataShin_14[]; // idb extern char a__9dataShin_13[]; // idb extern char aChecksumErro_1[43]; // weak extern char aItemgroup[]; // idb extern char aItemdropfrom_6[44]; // weak extern char aDropitemmanage[55]; // weak extern char a__9dataShin_12[]; // idb extern char a__9dataShin_11[]; // idb extern char aItemdropfro_10[19]; // weak extern char aItemgroupcla_1[48]; // weak extern char aItemgroupcla_0[31]; // weak extern char aItemgroupclass[46]; // weak extern int (__thiscall *off_6B8AF0)(void *, char); // weak extern int (__thiscall *off_6B8AF8)(void *, char); // weak extern int (__thiscall *off_6B8B00)(void *, char); // weak extern int (__thiscall *off_6B8B08)(void *, char); // weak extern char aItemgroupcla_5[48]; // weak extern char aItemgroupcla_4[52]; // weak extern char aItemgroupcla_3[54]; // weak extern char aItemgroupcla_2[33]; // weak extern char aItemgroupcla_6[42]; // weak extern char aLuafunctrigger[47]; // weak extern char aLuafunctrigg_0[47]; // weak extern char aLuafunctrigg_1[51]; // weak extern char aTotallot[12]; // weak extern char aMovelot[11]; // weak extern char aTo1[7]; // weak extern char aTo0[7]; // weak extern char aFrom1[9]; // weak extern char aFrom0[9]; // weak extern char aAct[6]; // weak extern char aItemlotinspect[30]; // weak extern char asc_6B8CF4[3]; // weak extern char aItemidNotMatch[19]; // weak extern char aItemlotinspe_0[32]; // weak extern char aTotalitemnumbe[28]; // weak extern char asc_6B8D48[5]; // weak extern char asc_6B8D50[4]; // weak extern char aFrom0Null[13]; // weak extern char aItemdataNull[16]; // weak extern char aItemlotinspe_1[28]; // weak extern char aItemmallIm_a_0[32]; // weak extern char aItemmallIm_add[20]; // weak extern char aItemmallIm_new[35]; // weak extern char aItemmallerrorP[32]; // weak extern int (__thiscall *off_6B8E0C)(void *, char); // weak extern int (__thiscall *off_6B8E14)(void *, char); // weak extern char aItemmallIm_n_1[20]; // weak extern char aItemmallIm_n_0[37]; // weak extern char asc_6B8E58[81]; // weak extern char asc_6B8EAC[63]; // weak extern char aGamedbsessi_62[46]; // weak extern char asc_6B8F1C[63]; // weak extern char aGamedbsessi_63[50]; // weak extern char asc_6B8F90[57]; // weak extern char asc_6B8FD0[72]; // weak extern char asc_6B9018[54]; // weak extern char asc_6B9050[73]; // weak extern char asc_6B909C[55]; // weak extern char aItemequiptable[29]; // weak extern char aItemequiptab_1[25]; // weak extern char aItemequiptab_0[37]; // weak extern char aItemserverequi[28]; // weak extern char a__9dataShineIt[]; // idb extern char a__9dataShin_15[]; // idb extern int (__thiscall *off_6B91A0)(void *, char); // weak extern int (__thiscall *off_6B91A8)(void *, char); // weak extern char aItemrandomop_4[68]; // weak extern char aItemrandomop_3[65]; // weak extern char aItemrandomop_2[70]; // weak extern char aItemrandomop_1[73]; // weak extern char aItemrandomop_0[65]; // weak extern char aItemrandomopti[52]; // weak extern char aItemrandomop_5[49]; // weak extern char aItemrandomo_11[64]; // weak extern char aItemrandomo_10[63]; // weak extern char aItemrandomop_9[66]; // weak extern char aItemrandomop_8[83]; // weak extern char aItemrandomop_7[46]; // weak extern char aItemrandomop_6[69]; // weak extern char a__9dataShin_16[]; // idb extern char a__9dataShineRa[]; // idb extern char aItemsinchestIi[29]; // weak extern char aGamedbsessi_66[63]; // weak extern char aGamedbsessi_65[65]; // weak extern char aGamedbsessi_64[49]; // weak extern char aKingdomquest_7[52]; // weak extern char aKingdomquesten[49]; // weak extern int (*off_6B96AC)(); // weak extern char aKqentrymaperr1[]; // idb extern char aKqentrymaperr0[]; // idb extern int (__thiscall *off_6B96D4)(void *, char); // weak extern int (__thiscall *off_6B96F8)(void *, char); // weak extern int (__stdcall *off_6B971C)(int, int); // weak extern int (__stdcall *off_6B9724)(int, int); // weak extern int (__stdcall *off_6B972C)(int, int); // weak extern char aKingdomquestKq[40]; // weak extern char aKingdomquestKi[54]; // weak extern int (__stdcall *off_6B9794)(int, int); // weak extern char aListiteratorki[42]; // weak extern char aKingdomquest_0[53]; // weak extern int (__stdcall *off_6B9800)(int, int, int); // weak extern char aAxiallistobj_1[43]; // weak extern char aAxiallistobj_2[44]; // weak extern char aAxiallistobj_3[31]; // weak extern char aFieldmapFm_cle[25]; // weak extern char asc_6B9898[49]; // weak extern char asc_6B98CC[61]; // weak extern char asc_6B990C[51]; // weak extern char asc_6B9940[55]; // weak extern char asc_6B9978[55]; // weak extern char asc_6B99B0[47]; // weak extern char asc_6B99E0[47]; // weak extern char asc_6B9A10[49]; // weak extern char asc_6B9A44[49]; // weak extern char aKingdomquest_1[48]; // weak extern char aKingdomquest_2[50]; // weak extern char aKingdomquest_4[58]; // weak extern char aKingdomquest_3[34]; // weak extern char aIsInDead[12]; // weak extern char asc_6B9B48[5]; // weak extern char aIsInBooth[13]; // weak extern char aKqentryincamp1[]; // idb extern char aKqentryincamp0[]; // idb extern char aKingdomques_10[76]; // weak extern char aKingdomquest_9[71]; // weak extern char aKingdomquest_8[37]; // weak extern char aKingdomquest_6[37]; // weak extern char aKingdomquest_5[53]; // weak extern char asc_6B9CA0[58]; // weak extern char aKingdomques_11[42]; // weak extern char asc_6B9D08[72]; // weak extern char asc_6B9D50[46]; // weak extern char aKingdomques_14[52]; // weak extern char aKingdomques_15[52]; // weak extern char aKingdomques_16[51]; // weak extern char asc_6B9E1C[48]; // weak extern char asc_6B9E4C[57]; // weak extern char asc_6B9E88[45]; // weak extern char aWorldmanage_87[56]; // weak extern int (__stdcall *off_6B9EF4)(int, int); // weak extern int (__stdcall *off_6B9EFC)(int, int); // weak extern int (__thiscall *off_6B9F04)(void *, char); // weak extern char aWorldmanage_88[47]; // weak extern char aErr_kingdomq_2[32]; // weak extern char aErr_kingdomq_1[38]; // weak extern char aWorldmanage_94[59]; // weak extern char aNotEmpty2[15]; // weak extern char aNotFound2[15]; // weak extern char aNotFound[14]; // weak extern char aNotEmpty[14]; // weak extern char aSubmapInUse[14]; // weak extern char aErr_kingdomq_0[41]; // weak extern char aWorldmanage_93[64]; // weak extern char aWorldmanage_92[63]; // weak extern char aErr_kingdomque[41]; // weak extern char aWorldmanage_91[64]; // weak extern char aTitle[12]; // weak extern char aWorldmanage_90[44]; // weak extern char aWorldmanage_89[44]; // weak extern char aKingdomques_12[55]; // weak extern char asc_6BA1E4[48]; // weak extern char aKqplayerinfoli[55]; // weak extern char aWorldmanage_97[66]; // weak extern char aSuccess[11]; // weak extern char aFailKqNotExist[23]; // weak extern char aWorldmanage_96[70]; // weak extern char aWms_nc_kq_w2z_[27]; // weak extern char aWorldmanage_95[45]; // weak extern char asc_6BA34C[52]; // weak extern int (__thiscall *off_6BA384)(void *, char); // weak extern int (__thiscall *off_6BA3A8)(void *, char); // weak extern char byte_6BA3C8[]; // weak extern char aKdeddyhill00[]; // idb extern char aKqcontributeKq[44]; // weak extern char aKqcontribute_0[48]; // weak extern char aKqcontribute_2[67]; // weak extern char aKqcontribute_1[49]; // weak extern char aKqcontribute_3[45]; // weak extern char aKqcontribute_4[43]; // weak extern int (__thiscall *off_6BA520)(void *, char); // weak extern char a__9dataShineKi[]; // idb extern char a9dataShineWorl[61]; // weak extern char aCanattack[]; // idb extern char aSendmybrief[]; // idb extern char aSublayerSublay[44]; // weak extern char aSublayerintera[60]; // weak extern char a__9dataShin_18[]; // idb extern char a__9dataShin_17[]; // idb extern char asc_6BA668[65]; // weak extern char asc_6BA6B0[70]; // weak extern char asc_6BA6F8[41]; // weak extern char asc_6BA728[71]; // weak extern char asc_6BA770[57]; // weak extern char asc_6BA7B0[65]; // weak extern char aWorldmanage_98[48]; // weak extern char aItemusefunct_3[45]; // weak extern char aItemusefunct_2[41]; // weak extern char aMobcardopen[]; // idb extern char aIm_divorce[]; // idb extern char aPropose_0[]; // idb extern char aNoeffect[]; // idb extern char aBossmobdetect[]; // idb extern char aMemoryfeather[]; // idb extern char aAmountmp[]; // idb extern char aAmounthp[]; // idb extern char aLicenceclear[]; // idb extern char aStatclearempow[]; // idb extern char aStatclearstat[]; // idb extern char aUsesilverwings[]; // idb extern char aItemusefunct_1[]; // idb extern char aItemusefunct_0[26]; // weak extern char aItemusefunctio[46]; // weak extern char a__9dataShin_19[]; // idb extern int (__thiscall *off_6BA9B0)(void *, char); // weak extern int (__thiscall *off_6BA9B8)(void *, char); // weak extern char asc_6BA9BC[61]; // weak extern char aUD[]; // idb extern char aLD_0[]; // idb extern char asc_6BAA10[69]; // weak extern char asc_6BAA58[68]; // weak extern char aContent[]; // idb extern char aIndex[]; // idb extern char asc_6BAAB0[70]; // weak extern char aContainer[]; // idb extern char aItemid[]; // idb extern char asc_6BAB0C[53]; // weak extern char asc_6BAB44[51]; // weak extern char aItemconversi_0[29]; // weak extern char aItemconversion[49]; // weak extern char aMagiccontain_7[45]; // weak extern char aMagiccontain_6[41]; // weak extern char aMagiccontain_5[43]; // weak extern char aMagiccontain_4[44]; // weak extern char aUsepresentbox[14]; // weak extern char aMagiccontain_3[43]; // weak extern char aMagiccontain_2[39]; // weak extern char aContainerstrNu[18]; // weak extern char aMagiccontain_1[61]; // weak extern char aMagiccontain_0[24]; // weak extern char aMagiccontainer[44]; // weak extern char a__9dataShin_20[]; // idb extern char asc_6BADA4[50]; // weak extern char aClcrewardClc_2[46]; // weak extern char aClcrewardClc_1[49]; // weak extern char aClcrewardClc_0[21]; // weak extern char aClcrewardClcr_[47]; // weak extern char a__9dataShin_21[]; // idb extern char a__9dataShineLc[]; // idb extern char a5zoneserverdum[21]; // weak 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[56]; // weak extern char aMapblockMapd_0[41]; // weak extern char aMapblockMapdoo[64]; // weak extern char aMapblockMapd_4[53]; // weak extern char aMapblockMapd_3[33]; // weak extern char aMapblockMapd_2[50]; // weak extern char aR[]; // idb extern char a__9dataShineBl[]; // idb extern char aMapblockMapd_6[60]; // weak extern char aMapblockMapd_5[41]; // weak extern char aMapblockMapd_7[55]; // weak extern char aMapblockMapblo[50]; // weak extern char aMapblockMapb_2[57]; // weak extern char a__9dataShin_24[]; // idb extern char aMapblockinfo_3[64]; // weak extern char a__9dataShin_23[]; // idb extern char aMapblockinfo_2[64]; // weak extern char aMapblockinfo_1[54]; // weak extern char aMapblockinfo_0[53]; // weak extern char aMapblockMapb_1[47]; // weak extern char aMapblockinform[53]; // weak extern char a__9dataShin_22[]; // idb extern char aMapblockMapb_0[40]; // weak extern char aMapblockMapb_3[44]; // weak extern char aMapblockinfo_4[56]; // weak extern char aMapblockMapd_8[40]; // weak extern char aMapblockMapd_9[39]; // weak extern char aMapblockMapb_4[46]; // weak extern char aMapclusterm_11[41]; // weak extern char aMapclusterna_3[51]; // weak extern char aNotFoundEtcDun[31]; // weak extern char aMapclusterm_12[84]; // weak extern int (__thiscall *off_6BB590)(void *, char); // weak extern int (__thiscall *off_6BB5B4)(void *, char); // weak extern int (__stdcall *off_6BB5BC)(int, int); // weak extern char aMapclusterm_23[43]; // weak extern char aMapclusterm_22[56]; // weak extern char aMapclusterna_4[44]; // weak extern char aMapclusterm_13[43]; // weak extern char aMapclusterna_5[47]; // weak extern char aMapclusterna_6[47]; // weak extern char asc_6BB6DC[62]; // weak extern char asc_6BB720[64]; // weak extern char asc_6BB760[50]; // weak extern char asc_6BB798[71]; // weak extern char asc_6BB7E0[53]; // weak extern char aTownportalda_0[43]; // weak extern char a__9dataShineTo[]; // idb extern char aTownportaldata[25]; // weak extern char aTownportalda_1[28]; // weak extern char asc_6BB89C[56]; // weak extern int (__thiscall *off_6BB8D8)(void *, char); // weak extern char aMapclusterm_14[48]; // weak extern char asc_6BB928[53]; // weak extern char aMapclusterm_17[85]; // weak extern char aMapclusterm_16[79]; // weak extern char aMapclusterm_15[60]; // weak extern char aMapclusterm_19[77]; // weak extern char aMapclusterm_18[53]; // weak extern char aMapclusterm_21[71]; // weak extern char aMapclusterm_20[50]; // weak extern char aJob2_dn02[]; // idb extern char aJob2_dn01[]; // idb extern char aRou[]; // idb extern char aJob1_dn01[]; // idb extern int (__thiscall *off_6BBB78)(void *, char); // weak extern char a__9dataShineMi[]; // idb extern char aMinihouseendur[33]; // weak extern int (__thiscall *off_6BBBC8)(void *, char); // weak extern char a__9dataShin_25[]; // idb extern char aMinihouseobjan[36]; // weak extern int (__thiscall *off_6BBC18)(void *, char); // weak extern int (__thiscall *off_6BBC20)(void *, char); // weak extern char aCminimondata_1[46]; // weak extern char aCminimondata_0[44]; // weak extern char aCminimondatabo[44]; // weak extern char a__9dataShin_26[]; // idb extern char aCminimonauto_0[57]; // weak extern char aCminimonautous[57]; // weak extern char a__9dataShin_27[]; // idb extern char aMiscdatatabl_3[63]; // weak extern char aMiscdatatabl_2[50]; // weak extern char aMiscdatatabl_1[52]; // weak extern char aMiscdatatabl_0[49]; // weak extern char aMiscdatatableM[57]; // weak extern int (__stdcall *off_6BBE88)(int, int); // weak extern int (__stdcall *off_6BBEB0)(int, int, int); // weak extern char aMiscdatatabl_8[39]; // weak extern char aMiscdatatabl_7[55]; // weak extern __int16 word_6BBF14; // weak extern char byte_6BBF16; // weak extern __int16 word_6BBF18; // weak extern char byte_6BBF1A; // weak extern char aMiscdatatabl_6[54]; // weak extern char aAcmrminus[10]; // weak extern char aSlow[5]; // weak extern char aStun[5]; // weak extern char aMiscdatatabl_5[34]; // weak extern char aMiscdatatabl_4[51]; // weak extern char aExpandskill[]; // idb extern char aMiscdatatabl_9[34]; // weak extern char asc_6BBFF8[50]; // weak extern char aMiscdatatab_13[55]; // weak extern char aMiscdatatab_12[52]; // weak extern char aMiscdatatab_11[57]; // weak extern char aMiscdatatab_10[36]; // weak extern char aMiscdatatab_17[57]; // weak extern char aMiscdatatab_16[54]; // weak extern char aMiscdatatab_15[59]; // weak extern char aMiscdatatab_14[38]; // weak extern char aMobexplosionel[50]; // weak extern char aAbnormalsta_82[56]; // weak extern char aAbnormalsta_83[57]; // weak extern char aAbnormalsta_84[59]; // weak extern char aAbnormalsta_85[61]; // weak extern char aAbnormalsta_78[63]; // weak extern char asc_6BC338[75]; // weak extern char asc_6BC384[45]; // weak extern char asc_6BC3B8[69]; // weak extern char asc_6BC400[51]; // weak extern int (__stdcall *off_6BC438)(int, int); // weak extern char aAbnormalsta_79[59]; // weak extern char asc_6BC478[56]; // weak extern char aAxiallistaggro[31]; // weak extern char asc_6BC4D0[51]; // weak extern char asc_6BC504[47]; // weak extern char asc_6BC534[60]; // weak extern char asc_6BC570[60]; // weak extern char asc_6BC5B0[77]; // weak extern char asc_6BC600[59]; // weak extern char aGamedbsessi_68[56]; // weak extern char aGamedbsessi_67[53]; // weak extern char aGamedbsessi_69[54]; // weak extern char asc_6BC6E4[63]; // weak extern char asc_6BC724[57]; // weak extern char asc_6BC760[54]; // weak extern char asc_6BC798[49]; // weak extern char asc_6BC7CC[58]; // weak extern char asc_6BC808[60]; // weak extern char asc_6BC844[57]; // weak extern char asc_6BC880[61]; // weak extern char asc_6BC8C0[57]; // weak extern char asc_6BC8FC[52]; // weak extern char asc_6BC930[46]; // weak extern char asc_6BC960[53]; // weak extern char asc_6BC998[47]; // weak extern char aMiscdatatab_18[32]; // weak extern char asc_6BC9E8[61]; // weak extern char asc_6BCA28[51]; // weak extern char asc_6BCA5C[57]; // weak extern char aMiscdatatab_20[29]; // weak extern char aMiscdatatab_19[46]; // weak extern char aMiscdatatab_22[34]; // weak extern char aMiscdatatab_21[51]; // weak extern char aNeutralization[]; // idb extern char aMiscdatatab_28[24]; // weak extern char aMiscdatatab_27[48]; // weak extern char aMiscdatatab_26[45]; // weak extern char aMiscdatatab_25[45]; // weak extern char aLefthand[]; // idb extern char aMiscdatatab_24[32]; // weak extern char aMiscdatatab_23[49]; // weak extern char aAbstatereset[]; // idb extern char aRandom[]; // idb extern char aStraight[]; // idb extern char aMiscdatatab_37[47]; // weak 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_36[56]; // weak extern char aMiscdatatab_35[49]; // weak extern char aTargetall[]; // idb extern char aCastertarget[]; // idb extern char aAlways[]; // idb extern char aEnemy[]; // idb extern char aMiscdatatab_34[50]; // weak extern char aTarget[]; // idb extern char aCaster[]; // idb extern char aMiscdatatab_33[49]; // weak extern char aRoam[]; // idb extern char aRampage[]; // idb extern char aChase[]; // idb extern char aRoot[]; // idb extern char aMiscdatatab_32[51]; // weak extern char aMiscdatatab_31[52]; // weak extern char aMiscdatatab_30[33]; // weak extern char aMiscdatatab_29[60]; // weak extern char aSkillbreedmob[]; // idb extern char aMiscdatatab_41[62]; // weak extern char aMiscdatatab_40[52]; // weak extern char aMiscdatatab_39[53]; // weak extern char aMiscdatatab_38[37]; // weak extern char aMobexplosion_0[53]; // weak extern char aMobtargetboutM[31]; // weak extern char asc_6BD018[76]; // weak extern char asc_6BD064[48]; // weak extern char asc_6BD098[67]; // weak extern char aErrorInReadMis[32]; // weak extern char a__9dataShin_28[]; // idb extern char asc_6BD124[53]; // weak extern char aMagiccontain_8[25]; // weak extern char aMobattackseque[54]; // weak extern char aMagiccontain_9[27]; // weak extern char aMobattackseq_3[49]; // weak extern int (__thiscall *off_6BD204)(void *, char); // weak extern int (__stdcall *off_6BD228)(int, int); // weak extern int (__stdcall *off_6BD230)(int, int); // weak extern int (__thiscall *off_6BD238)(void *, char); // weak extern char aMobattackse_10[48]; // weak extern char aHplow_changeor[]; // idb extern char aNextskill[]; // idb extern char aMobattackseq_9[46]; // weak extern char aTargetstate[]; // idb extern char aHplow[]; // idb extern char aMobattackseq_8[53]; // weak extern char aOutofrange[]; // idb extern char aMobattackseq_7[50]; // weak extern char aSkillchange[]; // idb extern char aMobattackseq_6[41]; // weak extern char aMobattackseq_5[46]; // weak extern char aRepeatstart[]; // idb extern char aAttack[]; // idb extern char aAttseq[]; // idb extern char aOrder[]; // idb extern char aMobattackseq_4[43]; // weak extern char aMobattackseq_2[48]; // weak extern char a__9dataShineMo[]; // idb extern char aMobattackseq_1[28]; // weak extern char aMobattackseq_0[39]; // weak extern char aMobattackse_12[71]; // weak extern char aMobattackse_11[53]; // weak extern int (__thiscall *off_6BD53C)(void *, char); // weak extern int (__stdcall *off_6BD554)(int, int, int); // weak extern char aMobtargetaggre[29]; // weak extern char aMobtargetselec[28]; // weak extern char asc_6BD5CC[51]; // weak extern char asc_6BD600[52]; // weak extern char asc_6BD634[48]; // weak extern char asc_6BD664[45]; // weak extern char asc_6BD694[51]; // weak extern char asc_6BD6C8[53]; // weak 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_6BD75C[54]; // weak extern char asc_6BD794[57]; // weak extern char aMobactioneleme[29]; // weak extern char aMobtargetbou_0[37]; // weak extern char aMobtargetagg_0[42]; // weak extern char aMobtargetagg_1[45]; // weak extern char asc_6BD874[53]; // weak extern char aMobthink_chase[41]; // weak extern char aPathNotFound[15]; // weak extern char aMobactionMa_th[38]; // weak extern char asc_6BD910[49]; // weak extern char asc_6BD944[53]; // weak extern char asc_6BD988[48]; // weak extern char asc_6BD9B8[52]; // weak extern char asc_6BD9EC[41]; // weak extern int (__stdcall *off_6BDA1C)(int, int, int); // weak extern int (__stdcall *off_6BDA24)(int, int, int); // weak extern int (__stdcall *off_6BDA2C)(int, int); // weak extern int (__stdcall *off_6BDA34)(int, int); // weak extern char aMobtargetsel_0[34]; // weak extern char aMobtargetsel_1[33]; // weak extern char aMobtargetsel_2[35]; // weak extern char aMobtargetnobra[34]; // weak extern int (__stdcall *off_6BDACC)(int, int); // weak extern char aMobtarget_aggr[43]; // weak extern char aMobtarget_ag_0[44]; // weak extern char aMobtarget_ag_1[31]; // weak extern char aMobtargetbou_1[38]; // weak extern char aMobtargetsel_3[36]; // weak extern char aMobtarget_en_0[61]; // weak extern int (__stdcall *off_6BDBD8)(int, int); // weak extern char aMobtarget_enem[49]; // weak extern char aMobtarget_en_1[50]; // weak extern char aMobtarget_en_2[35]; // weak extern char aMobtarget_en_3[34]; // weak extern char aMobtargetbou_2[27]; // weak extern char aAxiallistnearf[30]; // weak extern char asc_6BDCC8[55]; // weak extern char asc_6BDD00[52]; // weak extern char asc_6BDD34[50]; // weak extern char asc_6BDD68[51]; // weak extern char asc_6BDD9C[50]; // weak extern char aMobtargetbou_3[28]; // weak extern char aMobtargetbou_4[31]; // weak extern char aMobtargetagg_2[36]; // weak extern char aMobtargetbou_5[30]; // weak extern char aDSDC[]; // idb extern char aMobtargetbou_6[36]; // weak extern char asc_6BDE84[47]; // weak extern char asc_6BDEB4[47]; // weak extern char asc_6BDEE4[50]; // weak extern int (*off_6BDF1C)(); // weak extern char aMobchatMobchat[40]; // weak extern char aMobchatMobch_0[40]; // weak extern char aMobchatMobch_1[40]; // weak extern char aMobchatMobch_2[40]; // weak extern char aMobchatMobch_3[41]; // weak extern char aMobchatMobch_4[41]; // weak extern char aMobchatMobch_5[46]; // weak extern int (*off_6BE068)(); // weak extern int (*off_6BE08C)(); // weak extern char aMobchatMobch_6[52]; // weak extern char aMobchatMobch_7[47]; // weak extern char aMobchatMobch_8[41]; // weak extern char aMobchatMobch_9[41]; // weak extern char aMobchatMobc_10[41]; // weak extern char aMobchatMobc_11[42]; // weak extern char aMobchatMobc_12[42]; // weak extern char aMobchatMobc_13[47]; // weak extern char aInvalidFlag[13]; // weak extern char aMobchatMobc_17[52]; // weak extern char aMobindex[]; // idb extern char aMobchatMobc_16[45]; // weak extern char aRacerescu[]; // idb extern char aHelpsub[]; // idb extern char aHelpmain[]; // idb extern char aDead_0[]; // idb extern char aDamaged[]; // idb extern char aAttack_0[]; // idb extern char aPiece[]; // idb extern char aMobchatMobc_15[34]; // weak extern char aMobchatMobc_14[57]; // weak extern char a__9dataShin_30[]; // idb extern char a__9dataShin_29[]; // idb extern int (__thiscall *off_6BE388)(void *, char); // weak extern int (__thiscall *off_6BE394)(void *, char); // weak extern char aMobcondition_0[54]; // weak extern char aMobconditionch[55]; // weak extern char aFailToReadMobc[36]; // weak extern char a__9dataShin_31[]; // idb extern char aMobdeadcount_2[24]; // weak extern char aMobdeadcount_0[42]; // weak extern char aMobdeadcountMd[24]; // weak extern char aMobdeadcount_1[31]; // weak extern char asc_6BE4D4[62]; // weak extern char asc_6BE514[60]; // weak extern char asc_6BE550[45]; // weak extern int (*off_6BE584)(); // weak extern int (__thiscall *off_6BE59C)(void *, char); // weak extern int (__thiscall *off_6BE5C0)(void *, char); // weak extern int (__stdcall *off_6BE5EC)(int, int); // weak extern int (__stdcall *off_6BE5F4)(int, int); // weak extern char asc_6BE5F8[59]; // weak extern char asc_6BE634[48]; // weak extern char asc_6BE664[45]; // weak extern char asc_6BE698[67]; // weak extern char asc_6BE6DC[40]; // weak extern char aMobregencla_19[39]; // weak extern char aMobregenclassM[43]; // weak extern int (__thiscall *off_6BE75C)(void *, char); // weak extern char aMobregenclas_0[48]; // weak extern int (__stdcall *off_6BE7B0)(int, int); // weak extern char aMobregenclas_2[58]; // weak extern char aMobregenclas_1[45]; // weak extern char aMobregenclas_3[40]; // weak extern char aMobregenclas_5[41]; // weak extern char aMobregenclas_4[57]; // weak extern char aMobregenclas_7[41]; // weak extern char aMobregenclas_6[57]; // weak extern char aMobregenclas_8[40]; // weak extern char aMobregencla_14[39]; // weak extern char asc_6BE968[65]; // weak extern char asc_6BE9AC[40]; // weak extern char aKqregentable_1[38]; // weak extern char a__9dataShin_33[]; // idb extern char a__9dataShin_32[]; // idb extern char aKqregentable_0[24]; // weak extern char aKqregentableKq[50]; // weak extern char aMobDRgnumDHndD[]; // idb extern void *off_6BEAD0; // weak extern char aMobregenclas_9[35]; // weak extern int (__stdcall *off_6BEAFC)(int, int); // weak extern char aMobregencla_12[48]; // weak extern char aMobregencla_11[53]; // weak extern char aMobbreederMb_r[36]; // weak extern char aMobregencla_10[36]; // weak extern char aMobregencla_13[34]; // weak extern char a__9dataShin_35[]; // idb extern char aKqregentable_2[39]; // weak extern char a__9dataShin_34[]; // idb extern char aSDDDDDDDDDDDDS[]; // idb extern char aMobregencla_15[40]; // weak extern char aMobregencla_18[81]; // weak extern char aMobregencla_17[69]; // weak extern char aMobbreederMbg_[51]; // weak extern char aMobregencla_16[52]; // weak extern char aMobhatcheryMh_[21]; // weak extern char aMobhatcheryM_1[53]; // weak extern char aMobhatcheryM_0[28]; // weak extern int (__thiscall *off_6BEE20)(void *, char); // weak extern char asc_6BEE40[73]; // weak extern char asc_6BEE90[73]; // weak extern char asc_6BEEDC[46]; // weak extern char asc_6BEF0C[50]; // weak extern char asc_6BEF40[43]; // weak extern char asc_6BEF6C[46]; // weak extern char aFamilymobmanag[54]; // weak extern char aFamilymobman_0[48]; // weak extern char aMobregencla_21[57]; // weak extern char aMobregencla_20[38]; // weak extern char aMobregencla_22[44]; // weak extern char aEventmobregenE[26]; // weak extern char aFamilymobman_1[50]; // weak extern char aMobregencla_23[39]; // weak extern char aFamilymobman_2[50]; // weak extern char aMobbreedergr_0[48]; // weak extern char aMobbreedergrou[60]; // weak extern char aMobregencla_25[65]; // weak extern char aMobregencla_24[46]; // weak extern char aMobbreederMb_m[44]; // weak extern char aMobregencla_26[39]; // weak extern char aMobhatcheryM_6[37]; // weak extern char aMobhatcheryM_5[54]; // weak extern char aMobregen[]; // idb extern char aMobhatcheryM_4[46]; // weak extern char aMobhatcheryM_3[40]; // weak extern char aMobregengroup[]; // idb extern char a__9dataShin_37[]; // idb extern char a__9dataShin_36[]; // idb extern char aMobhatcheryM_2[21]; // weak extern char aMobregencla_28[60]; // weak extern char aMobregencla_27[45]; // weak extern char aMobhatcheryM_7[25]; // weak extern char byte_6BF434[]; // weak extern char byte_6BF440[]; // weak extern int (__thiscall *off_6BF454)(void *, char); // weak extern char aHuntinglogMo_0[59]; // weak extern char aHuntinglogMobh[41]; // weak extern int (__stdcall *off_6BF4E0)(int, int); // weak extern char aHuntlogMobhunt[37]; // weak extern char aHuntinglogMo_1[36]; // weak extern int (__thiscall *off_6BF534)(void *, char); // weak extern int (__thiscall *off_6BF558)(void *, char); // weak extern char aRotate[]; // idb extern char aReturn[]; // idb extern char asc_6BF588[50]; // weak extern char asc_6BF5BC[45]; // weak extern char aMobroamingMobr[35]; // weak extern char aRoaming[]; // idb extern char aMobroamingMo_1[36]; // weak extern char aMobroamingMo_0[52]; // weak extern char a__9dataShin_39[]; // idb extern char a__9dataShin_38[]; // idb extern char aMobroamingMo_3[79]; // weak extern char aScenariobook_0[35]; // weak extern char aScenariobooksh[48]; // weak extern char aRoamingfile[]; // idb extern char aRoamingdata[]; // idb extern char aMobroamingMo_2[56]; // weak extern char a__9dataShin_40[]; // idb extern int (__stdcall *off_6BF7D4[2])(int); // weak extern int (__stdcall *off_6BF7F8[2])(int); // weak extern int (__stdcall *off_6BF840[2])(int); // weak extern int (__stdcall *off_6BF864[2])(int); // weak extern int (__stdcall *off_6BF888[2])(int); // weak extern int (__stdcall *off_6BF8D0[2])(int); // weak extern int (__stdcall *off_6BF8F4[2])(int); // weak extern int (__stdcall *off_6BF93C[2])(int); // weak extern int (__stdcall *off_6BF960[2])(int); // weak extern int (__stdcall *off_6BF984[2])(int); // weak extern int (__stdcall *off_6BF9A8[2])(int); // weak extern char aMobtacticeleme[44]; // weak extern char aMobtacticel_23[43]; // weak extern char aMobtacticele_0[45]; // weak extern char aMobtacticele_1[48]; // weak extern char aMobtacticele_2[51]; // weak extern char aMobtacticele_3[54]; // weak extern char aMobtacticele_4[61]; // weak extern char aMobtacticele_5[54]; // weak extern char aMobtacticel_24[57]; // weak extern char aMobtacticele_6[59]; // weak extern char aMobtacticele_7[60]; // weak extern int (__stdcall *off_6BFC64[2])(int); // weak extern char aMobtacticele_8[43]; // weak extern char aMobtacticele_9[46]; // weak extern char aMobtacticel_11[63]; // weak extern char aMobtacticel_10[49]; // weak extern char aMobtacticel_12[46]; // weak extern char aMobtacticel_13[46]; // weak extern char aMobtacticel_14[47]; // weak extern char aMobtacticel_15[51]; // weak extern char aMobtacticel_16[50]; // weak extern char aMobtacticel_17[54]; // weak extern char asc_6BFE88[82]; // weak extern char asc_6BFEDC[56]; // weak extern char asc_6BFF18[77]; // weak extern char asc_6BFF68[51]; // weak extern char asc_6BFFA0[84]; // weak extern char asc_6BFFF4[57]; // weak extern char aMobtacticel_18[45]; // weak extern char aMobtacticel_20[59]; // weak extern char aMobtacticel_19[45]; // weak extern char aMobtacticel_21[46]; // weak extern char aMobtacticel_22[44]; // weak extern int (__stdcall *off_6C012C)(int, int, int); // weak extern int (__stdcall *off_6C016C)(int, int, int); // weak extern int (__stdcall *off_6C01B4)(int, int, int); // weak extern int (__stdcall *off_6C01FC)(int, int, int); // weak extern int (__thiscall *off_6C023C)(void *, char); // weak extern int (__thiscall *off_6C0260)(void *, char); // weak extern int (__stdcall *off_6C0284)(int, int); // weak extern char aMovemanagerMm_[41]; // weak extern int (__stdcall *off_6C02B8)(int, int, int); // weak extern int (__stdcall *off_6C02C0)(int, int, int); // weak extern char aMovemanagerM_1[46]; // weak extern char aMovemanagerM_0[26]; // weak extern char aAxiallistbrief[58]; // weak extern char asc_6C034C[63]; // weak extern char aAxiallistbri_0[55]; // weak extern char asc_6C03C4[57]; // weak extern char asc_6C0400[54]; // weak extern char asc_6C0438[52]; // weak extern char aG_moveblockche[17]; // weak extern char aG_findempty[12]; // weak extern char asc_6C048C[56]; // weak extern char aSmv_moveblockc[19]; // weak extern char aSmv_movefindem[18]; // weak extern char aMovemanagerM_2[21]; // weak extern char asc_6C0504[50]; // weak extern char asc_6C0538[46]; // weak extern char asc_6C0568[50]; // weak extern char asc_6C059C[45]; // weak extern int (__thiscall *off_6C05D0)(void *, char); // weak extern int (__thiscall *off_6C05D8)(void *, char); // weak extern int (__thiscall *off_6C05E0)(void *, char); // weak extern int (__thiscall *off_6C05E8)(void *, char); // weak extern int (__thiscall *off_6C05F0)(void *, char); // weak extern char aDataDuplicat_6[51]; // weak extern char aDataDuplicat_5[32]; // weak extern char aRideSkillNull[16]; // weak extern char aDataDuplicat_4[48]; // weak extern char aDataDuplicat_3[39]; // weak extern char aDataDuplicat_2[44]; // weak extern char aFoodSkillNull[16]; // weak extern char aDataDuplicat_1[44]; // weak extern char aDataDuplicat_0[49]; // weak extern char aMoverabilityDa[27]; // weak extern char aDataDuplicateI[31]; // weak extern char aMovermainDataD[24]; // weak extern char aMoverdataboxMv[24]; // weak extern char aMemoryLeakForI[35]; // weak extern char a__9dataShin_45[]; // idb extern char a__9dataShin_44[]; // idb extern char a__9dataShin_43[]; // idb extern char a__9dataShin_42[]; // idb extern char a__9dataShin_41[]; // idb extern char aRaremovereac_0[37]; // weak extern char aRaremovereachr[28]; // weak extern char aRaremoversub_0[46]; // weak extern char aMoverupgradeef[29]; // weak extern char aMoverUpgradeDa[37]; // weak extern char aGradeIsNotMatc[69]; // weak extern char aRaremoversubra[36]; // weak extern char aFailToReadMove[36]; // weak extern char a__9dataShin_49[]; // idb extern char aFailToReadRa_1[34]; // weak extern char a__9dataShin_48[]; // idb extern char aFailToReadRa_0[35]; // weak extern char a__9dataShin_47[]; // idb extern char aFailToReadRare[31]; // weak extern char a__9dataShin_46[]; // idb extern int (__thiscall *off_6C0ADC)(void *, char); // weak extern char aMultihitdataMu[51]; // weak extern char aMultihitdata_3[54]; // weak extern char aMultihitdata_2[58]; // weak extern char aMultihitdata_1[38]; // weak extern char aMultihitdata_0[51]; // weak extern char a__9dataShineMu[]; // idb extern char aShinemultity_0[61]; // weak extern char aShinemultitype[60]; // weak extern int (__stdcall *off_6C0C84)(int, int, int); // weak extern int (__stdcall *off_6C0C94)(int, int, int); // weak extern char aAxiallistnea_3[46]; // weak extern int (__stdcall *off_6C0CD4)(int, int, int); // weak extern int (__stdcall *off_6C0CEC)(int, int, int); // weak extern int (__stdcall *off_6C0CFC)(int, int, int); // weak extern char aAxiallistnea_4[28]; // weak extern char aAxiallistlimit[33]; // weak extern char aAxiallistnea_5[38]; // weak extern char aNpcrolebaseN_0[22]; // weak extern char asc_6C0D88[70]; // weak extern char asc_6C0DD0[54]; // weak extern char asc_6C0E08[45]; // weak extern char aNpcrole_merc_1[47]; // weak extern char aNpcrole_merc_0[44]; // weak extern char aNpcrole_mercha[35]; // weak extern char aNpcrole_merc_2[40]; // weak extern char aNpcrole_merc_4[53]; // weak extern char aNpcrole_merc_3[35]; // weak extern char aNpcrole_port_0[43]; // weak extern char aNpcrole_portal[25]; // weak extern char aNpcrole_mode_0[51]; // weak extern char aNpcrole_mode_i[33]; // weak extern char aNpcrole_random[37]; // weak extern char aClasschange[]; // idb extern char aGuild[]; // idb extern char aWeapontitle[]; // idb extern char aItem[]; // idb extern char aSkill[]; // idb extern char aWeapon[]; // idb extern char aSoulstone[]; // idb extern char aNpcrole_merc_6[44]; // weak extern char aNpcrole_merc_5[27]; // weak extern char aNpcrole_storem[31]; // weak extern char aNpcrole_menu_0[46]; // weak extern char aRandomoption[]; // idb extern char aExchangecoin[]; // idb extern char aNpcrole_menuop[27]; // weak extern char aNpcrole_merc_7[33]; // weak extern char aNpcrole_stor_0[37]; // weak extern char aNpcrole_menu_1[33]; // weak extern char asc_6C1190[72]; // weak extern char asc_6C11D8[47]; // weak extern char asc_6C1208[90]; // weak extern char asc_6C1264[57]; // weak extern char asc_6C12A0[56]; // weak extern char asc_6C12D8[70]; // weak extern char asc_6C1320[54]; // weak extern char aNpcitemlistI_2[61]; // weak extern char aNpcitemlistI_1[65]; // weak extern char aNpcitemlistI_0[44]; // weak extern char aTDRDCD[]; // idb extern char aNpcitemlistIte[54]; // weak extern char aRec[]; // idb extern char aColumn02d[]; // idb extern char aTab02d[]; // idb extern char aNpcitemlistNpc[47]; // weak extern char aNpcitemlistN_3[64]; // weak extern char aNpcitemlistN_2[59]; // weak extern char a__9dataShineNp[]; // idb extern char aNpcitemlistN_1[46]; // weak extern char aNpcitemlistN_0[67]; // weak extern int (__stdcall *off_6C15BC)(int, int, int); // weak extern char aNpcrolebaseN_1[28]; // weak extern int (__stdcall *off_6C161C)(int, int, int); // weak extern int (__stdcall *off_6C165C)(int, int, int); // weak extern int (__stdcall *off_6C16A4)(int, int, int); // weak extern int (__stdcall *off_6C16EC)(int, int, int); // weak extern int (__stdcall *off_6C1734)(int, int, int); // weak extern int (__stdcall *off_6C177C)(int, int, int); // weak extern int (__stdcall *off_6C17BC)(int, int, int); // weak extern int (__stdcall *off_6C17FC)(int, int, int); // weak extern int (__stdcall *off_6C183C)(int, int, int); // weak extern int (__stdcall *off_6C187C)(int, int, int); // weak extern int (__thiscall *off_6C18BC)(void *, char); // weak extern char aErrorAtLinktab[30]; // weak extern char aNpcmanagerNm_2[39]; // weak extern char aNpcmanagerNm_1[39]; // weak extern char aRandomgate[]; // idb extern char aModeidgate[]; // 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_0[42]; // weak extern char a__9dataShin_51[]; // idb extern char a__9dataShin_50[]; // idb extern char aNpcmanagerNm_l[20]; // weak extern char aNm_setnpcPnpcs[34]; // weak extern char aNpcmanagerNm_4[37]; // weak extern char aNpcmanagerNm_3[39]; // weak extern char aNpcmanagerNm_s[22]; // weak extern char aNpcmanagerNm_6[41]; // weak extern char aNpcmanagerNm_5[24]; // weak extern char aNpcmanagerNm_9[58]; // weak extern char aNpcmanagerNm_8[51]; // weak extern char aNpcmanagerNm_7[53]; // weak extern char aNpcmanagerNm_d[36]; // weak extern char aNpcrole_mer_10[63]; // weak extern char aNpcrole_merc_9[53]; // weak extern char aNpcrole_merc_8[36]; // weak extern char aNpcrole_mer_11[35]; // weak extern char aNpcrole_mer_13[67]; // weak extern char aNpcrole_mer_12[40]; // weak extern char aNpcrole_mer_14[34]; // weak extern char aNpcrole_mer_15[34]; // weak extern char aNpcrole_mer_17[66]; // weak extern char aNpcrole_mer_16[39]; // weak extern int (__thiscall *off_6C1DB0)(void *, char); // weak extern char a__9dataShin_52[]; // idb extern char aMerchantcityda[27]; // weak extern char aMerchantcity_0[27]; // weak extern char aNotGate[9]; // weak extern char aNpcrolebaseNrb[28]; // weak extern char aNpcrole_port_1[31]; // weak extern char aNpcrolebaseN_2[33]; // weak extern char aNpcrole_port_2[36]; // weak extern int (__stdcall *off_6C1EA4)(int); // weak extern int (__thiscall *off_6C1EB4)(void *, char); // weak extern int (__stdcall *off_6C1ED8)(int, int); // weak extern char aOptoolobjectOp[27]; // weak extern int (__thiscall *off_6C1EFC)(void *, char); // weak extern char aZonelistens_18[38]; // weak extern char aOptoolsessionO[34]; // weak extern char aOptoolsessio_1[64]; // weak extern char aOptoolsessio_0[46]; // weak extern char aOptoolsessio_6[46]; // weak extern char aOptoolsessio_3[60]; // weak extern char aOptoolsessio_2[42]; // weak extern char aOptoolsessio_5[65]; // weak extern char aOptoolsessio_4[47]; // weak extern int (__stdcall *off_6C20E8)(int, int); // weak extern char aExceptionPacke[57]; // weak extern char aSessionWrong[14]; // weak extern char aTooLongPacket[16]; // weak extern char aProtocolpack_0[48]; // weak extern char aProtocolpacket[30]; // weak extern char aPacketcontai_1[32]; // weak extern char asc_6C21B8[4]; // weak extern char aPacketcontaine[28]; // weak extern char aProtocolpack_1[32]; // weak extern char asc_6C21F8[55]; // weak extern char asc_6C2230[55]; // weak extern char byte_6C2268[]; // weak extern char byte_6C2278[]; // weak extern char aChangebycondit[57]; // weak extern char aParameterChang[69]; // weak extern char aParameterClust[32]; // weak extern char aParameterClu_0[32]; // weak extern char aParameterClu_1[37]; // weak extern char aParameterClu_2[30]; // weak extern char aParameterConta[34]; // weak extern char aShinecommon_15[63]; // weak extern char aShinecommon_14[62]; // weak extern char aFreestatmentab[]; // idb extern char aShinecommon_13[63]; // weak extern char aShinecommon_12[62]; // weak extern char aFreestatdextab[]; // idb extern char aShinecommon_11[63]; // weak extern char aShinecommon_10[62]; // weak extern char aFreestatcontab[]; // idb extern char aShinecommonp_9[63]; // weak extern char aShinecommonp_8[62]; // weak extern char aFreestatinttab[]; // idb extern char aShinecommonp_7[63]; // weak extern char aShinecommonp_6[62]; // weak extern char aFreestatstrtab[]; // idb extern char aStat[]; // idb extern char aShinecommonp_5[66]; // weak extern char aShinecommonp_4[60]; // weak extern char aShinecommonp_3[63]; // weak extern char aShinecommonp_2[54]; // weak extern char aStattable[]; // idb extern char aLevel_0[]; // idb extern char aShinecommonp_1[51]; // weak extern char aShinecommonp_0[51]; // weak extern char aMaxfreestat[12]; // weak extern char aLostexplevel[13]; // weak extern char aMaxbufftime[12]; // weak extern char aAddbufftime[12]; // weak extern char aIntervaltime[13]; // weak extern char aDefaultbonusti[17]; // weak extern char aMinneedtime[12]; // weak extern char aRestexprate[12]; // weak extern char aMaxexpbonus[12]; // weak extern char aShoutdelay[11]; // weak extern char aAttackspeed[12]; // weak extern char aShoutlevel[11]; // weak extern char aWalkspeed[10]; // weak extern char aArgument[]; // idb extern char aCommon[]; // idb extern char aKey[]; // idb extern char aRunspeed[9]; // weak extern char aPrimaryparamet[64]; // weak extern char a__9dataShin_54[]; // idb extern char a__9dataShin_53[]; // idb extern char aShinecommonpar[31]; // weak extern char aFillrandomop_0[28]; // weak extern char aFillrandomopti[17]; // weak extern char asc_6C29D0[69]; // weak extern char asc_6C2A18[78]; // weak extern char asc_6C2A68[51]; // weak extern char asc_6C2A9C[53]; // weak extern char asc_6C2AD4[50]; // weak 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_6C2C50[48]; // weak extern char asc_6C2C80[59]; // weak extern char aWms_nc_party_i[45]; // weak extern char asc_6C2CF0[75]; // weak extern char asc_6C2D3C[46]; // weak extern char asc_6C2D6C[51]; // weak extern char asc_6C2DA0[44]; // weak extern char asc_6C2DCC[45]; // weak extern char asc_6C2DFC[56]; // weak extern char aPartymanufac_2[49]; // weak extern char aPartymanufac_1[62]; // weak extern char aPartymanufac_0[57]; // weak extern char aPartymanufactu[32]; // weak extern char aPartymanufac_3[27]; // weak extern char aPartymanufac_7[65]; // weak extern char aPartymanufac_6[58]; // weak extern char aPartymanufac_5[55]; // weak extern char aPartymanufac_4[31]; // weak extern char aPartymanufac_9[56]; // weak extern char aPartymanufac_8[33]; // weak extern char aPartymanufa_10[35]; // weak extern char aPartymanufa_11[36]; // weak extern char aPartymanufa_12[32]; // weak extern char aPartymanufa_13[31]; // weak extern char aPartymanufa_15[49]; // weak extern char aPartymanufa_14[31]; // weak extern char aRegnumDHndzDHn[]; // idb extern void *off_6C317C; // weak extern char aPartyMemberD[]; // idb extern char aNullParty[11]; // weak extern char aPartyregnumDCh[]; // idb extern char asc_6C31D8[56]; // weak extern char asc_6C3210[44]; // weak extern char asc_6C323C[52]; // weak extern char asc_6C3270[51]; // weak extern char asc_6C32A8[79]; // weak extern char asc_6C32F8[50]; // weak extern char asc_6C3330[65]; // weak extern char asc_6C3374[43]; // weak extern char asc_6C33A0[61]; // weak extern char aShineplayer_25[55]; // weak extern char aCpartyjoinPack[29]; // weak extern char asc_6C3438[69]; // weak extern char asc_6C3480[44]; // weak extern char asc_6C34B0[71]; // weak extern char asc_6C34F8[46]; // weak extern char aPathfindtableO[42]; // weak extern char aLinearstepLs_s[35]; // weak extern int (__thiscall *off_6C357C)(void *, char); // weak extern int (__thiscall *off_6C359C)(void *, char); // weak extern int (__thiscall *off_6C35C0)(void *, char); // weak extern int (__stdcall *off_6C35E4)(int, int); // weak extern int (__stdcall *off_6C35EC)(int, int); // weak extern int (__stdcall *off_6C35F4)(int, int); // weak extern int (__stdcall *off_6C35FC)(int, int); // weak extern char aLinearstepT_co[23]; // weak extern int (__thiscall *off_6C361C)(void *, char); // weak extern char aCellstackCs__0[35]; // weak extern char aCellstackCs_pu[19]; // weak extern char aCellstackT_con[22]; // weak extern int (__stdcall *off_6C367C)(int, __int16); // weak extern char aMinweightsearc[29]; // weak extern char aCellstackT_tra[31]; // weak extern char aNoPath[8]; // weak extern char aCellstackCs_se[33]; // weak extern char aLinearstepT_tr[20]; // weak extern int (__thiscall *off_6C3704)(void *, char); // weak extern char aPerformanceche[37]; // weak extern char aInvalidPupmi_1[53]; // weak extern char aInvalidPupfa_0[64]; // weak extern char aInvalidPupfact[55]; // weak extern char aInvalidValueIn[47]; // weak extern char aInvalidIsminus[49]; // weak extern char aNullRecordIn_5[45]; // weak extern char aInvalidPuppr_0[50]; // weak extern char aInvalidPupca_2[46]; // weak extern char aInvalidPupai_1[44]; // weak extern char aInvalidSoundfi[44]; // weak extern char aInvalidSm_inxI[41]; // weak extern char aInvalidPupai_0[75]; // weak extern char aInvalidPupid_1[41]; // weak extern char aInvalidPupca_1[79]; // weak extern char aNullRecordIn_4[38]; // weak extern char aInvalidPupaity[67]; // weak extern char aInvalidPupmi_0[42]; // weak extern char aInvalidPupca_0[42]; // weak extern char aInvalidStressn[50]; // weak extern char aNullRecordIn_3[34]; // weak extern char aInvalidPupprio[50]; // weak extern char aInvalidPriorit[46]; // weak extern char aNullRecordIn_2[38]; // weak extern char aInvalidPupmind[42]; // weak extern char aInvalidMaxmi_0[46]; // weak extern char aInvalidMinmi_0[46]; // weak extern char aNullRecordIn_1[34]; // weak extern char aInvalidMaxstre[52]; // weak extern char aInvalidMinstre[52]; // weak extern char aInvalidMaxmind[48]; // weak extern char aInvalidMinmind[48]; // weak extern char aInvalidPupid_0[39]; // weak extern char aNullRecordIn_0[36]; // weak extern char aInvalidItemidx[38]; // weak extern char aInvalidPupidxI[37]; // weak extern char aInvalidIdInPup[39]; // weak extern char aNullRecordInPu[34]; // weak extern char aInvalidPupcase[71]; // weak extern char aPupcooltime[12]; // weak extern char aPupcastingtime[15]; // weak extern char aPup_maxstress[14]; // weak extern char aPup_minstress[14]; // weak extern char aPup_maxmind[12]; // weak extern char aPup_minmind[12]; // weak extern char aDataIsEmptyI_5[40]; // weak extern char aDataIsEmptyI_4[33]; // weak extern char aDataIsEmptyI_3[29]; // weak extern char aDataIsEmptyI_2[33]; // weak extern char aDataIsEmptyI_1[29]; // weak extern char aDataIsEmptyI_0[31]; // weak extern char aDataIsEmptyInP[29]; // weak extern char aFailToReadPupf[36]; // weak extern char a__9dataShin_60[]; // idb extern char aFailToReadPu_1[29]; // weak extern char a__9dataShin_59[]; // idb extern char aFailToReadPupc[25]; // weak extern char a__9dataShin_58[]; // idb extern char aFailToReadPupp[29]; // weak extern char a__9dataShin_57[]; // idb extern char aFailToReadPu_0[25]; // weak extern char a__9dataShin_56[]; // idb extern char aFailToReadPups[27]; // weak extern char a__9dataShin_55[]; // idb extern char aFailToReadPupm[25]; // weak extern char a__9dataShinePu[]; // idb extern char aGamedbsessi_82[64]; // weak extern char aGamedbsessi_81[68]; // weak extern char aGamedbsessi_80[70]; // weak extern char aGamedbsessi_79[71]; // weak extern char aGamedbsessi_78[66]; // weak extern char aGamedbsessi_77[70]; // weak extern char aGamedbsessi_76[70]; // weak extern char aGamedbsessi_75[68]; // weak extern char aGamedbsessi_74[60]; // weak extern char aGamedbsessi_73[59]; // weak extern char aGamedbsessi_72[71]; // weak extern char aGamedbsessi_71[63]; // weak extern char aGamedbsessi_70[69]; // weak extern char asc_6C4518[77]; // weak extern char asc_6C4568[84]; // weak extern char asc_6C45C0[81]; // weak extern char asc_6C4614[58]; // weak extern char asc_6C4650[92]; // weak extern char asc_6C46B0[82]; // weak extern char asc_6C4708[88]; // weak extern char asc_6C4760[89]; // weak extern char asc_6C47C0[84]; // weak extern char asc_6C4814[61]; // weak extern char asc_6C4858[84]; // weak extern char asc_6C48B0[80]; // weak extern char asc_6C4900[81]; // weak extern char aGamedbsessi_94[61]; // weak extern char aGamedbsessi_93[67]; // weak extern char aGamedbsessi_92[68]; // weak extern char aGamedbsessi_91[63]; // weak extern char aGamedbsessi_90[67]; // weak extern char aGamedbsessi_89[68]; // weak extern char aGamedbsessi_88[67]; // weak extern char aGamedbsessi_87[59]; // weak extern char aGamedbsessi_86[58]; // weak extern char aGamedbsessi_85[70]; // weak extern char aGamedbsessi_84[62]; // weak extern char aGamedbsessi_83[68]; // weak extern char asc_6C4C84[32]; // weak extern char asc_6C4CA8[64]; // weak extern char aShineplayer_27[65]; // weak extern char aShineplayer_26[47]; // weak extern char aGamedbsessi_96[66]; // weak extern char aGamedbsessi_95[64]; // weak extern char asc_6C4DE8[78]; // weak extern char asc_6C4E38[70]; // weak extern char asc_6C4E80[76]; // weak extern char asc_6C4ECC[50]; // weak extern char asc_6C4F00[85]; // weak extern char asc_6C4F58[75]; // weak extern char asc_6C4FA8[81]; // weak extern char asc_6C5000[82]; // weak extern char asc_6C5058[77]; // weak extern char asc_6C50A8[54]; // weak extern char aShineplayer_29[51]; // weak extern char aShineplayer_28[54]; // weak extern char aShineplayer_33[73]; // weak extern char aShineplayer_32[65]; // weak extern char aShineplayer_31[59]; // weak extern char aShineplayer_30[61]; // weak extern char aShineplayer_36[67]; // weak extern char aShineplayer_35[68]; // weak extern char aShineplayer_34[63]; // weak extern char aShineplayer_41[60]; // weak extern char aShineplayer_40[61]; // weak extern char aShineplayer_39[56]; // weak extern char aShineplayer_38[50]; // weak extern char aShineplayer_37[48]; // weak extern char aSo_petsystem_s[]; // idb extern char aSo_petsystem_u[]; // idb extern char aSp_petsystem_l[]; // idb extern char aShineplayer_47[66]; // weak extern char aShineplayer_46[67]; // weak extern char aShineplayer_45[62]; // weak extern char aShineplayer_44[56]; // weak extern char aShineplayer_43[54]; // weak extern char aShineplayer_42[63]; // weak extern char asc_6C5610[74]; // weak extern char asc_6C5660[80]; // weak extern char asc_6C56B0[81]; // weak extern char asc_6C5708[76]; // weak extern char asc_6C5758[68]; // weak extern char asc_6C579C[50]; // weak extern char aShineplayer_51[66]; // weak extern char aShineplayer_50[58]; // weak extern char aShineplayer_49[52]; // weak extern char aShineplayer_48[54]; // weak extern char asc_6C58BC[46]; // weak extern int (__thiscall *off_6C58F0)(void *, char); // weak extern char aProtocolfunc_0[39]; // weak extern char aProtocolfuncti[64]; // weak extern int (__thiscall *off_6C5964)(void *, char); // weak extern int (__thiscall *off_6C596C)(void *, char); // weak extern int (__thiscall *off_6C5974)(void *, char); // weak extern int (__thiscall *off_6C597C)(void *, char); // weak extern int (__thiscall *off_6C5984)(void *, char); // weak extern int (__thiscall *off_6C598C)(void *, char); // weak extern int (__thiscall *off_6C5998)(void *, char); // weak extern int (__thiscall *off_6C59A0)(void *, char); // weak extern int (*off_6C59A8)(); // weak extern int (__stdcall *off_6C59BC)(int); // weak extern int (__stdcall *off_6C59D0)(int); // weak extern int (__stdcall *off_6C59E4)(int, int, int); // weak extern int (__stdcall *off_6C5AB4)(int); // weak extern int (__stdcall *off_6C5AC8)(int); // weak extern int (__stdcall *off_6C5ADC)(int); // weak extern int (__stdcall *off_6C5AF0)(int); // weak extern int (__stdcall *off_6C5B04)(int); // weak extern int (__stdcall *off_6C5B18)(int); // weak extern int (__stdcall *off_6C5B2C)(int); // weak extern int (__stdcall *off_6C5B40)(int); // weak extern int (__stdcall *off_6C5B54)(int); // weak extern char aFileEndInStrin[19]; // weak extern char aStringOverLine[17]; // weak extern char aTooManyStateme[19]; // weak extern char aPinescriptstac[69]; // weak extern char aVariableStackO[24]; // weak extern int (__stdcall *off_6C5C0C)(char); // weak extern int (__stdcall *off_6C5C14)(char); // weak extern int (__stdcall *off_6C5C1C)(char); // weak extern int (__thiscall *off_6C5C24)(void *, char); // weak extern int (__stdcall *off_6C5C2C)(int, int); // weak extern int (__stdcall *off_6C5C34)(int, int); // weak extern int (__thiscall *off_6C5C3C)(void *, char); // weak extern int (__thiscall *off_6C5C64)(void *, char); // weak extern int (__thiscall *off_6C5C70)(void *, char); // weak extern char aIos_baseEofbit[21]; // weak extern char aIos_baseFailbi[22]; // weak extern char aIos_baseBadbit[21]; // weak extern int (__stdcall *off_6C5CC4)(int); // weak extern int (__stdcall *off_6C5CD8)(int); // weak extern int (__stdcall *off_6C5CEC)(int); // weak extern int (__stdcall *off_6C5D00)(int); // weak extern int (__stdcall *off_6C5D18)(int); // weak extern char byte_6C5D2C[]; // weak extern char aNumberReadFail[17]; // weak extern char aNullVariable[14]; // weak extern int (__thiscall *off_6C5D5C)(void *, char); // weak extern int (__thiscall *off_6C5D9C)(void *, char); // weak extern int (__thiscall *off_6C5DDC)(void *, char); // weak extern char aFalse[6]; // weak extern char aTrue[5]; // weak extern int (__stdcall *off_6C5E14)(int, int); // weak extern int (__stdcall *off_6C5E1C)(int, int); // weak extern char aBadLocaleName[16]; // weak extern int (__stdcall *off_6C5E34)(int); // weak extern int (__stdcall *off_6C5E4C)(int); // weak extern char aPrint[6]; // weak extern char aPineeventscr_1[68]; // weak extern char aUnexpectedEof[15]; // weak extern int (__stdcall *off_6C5EC0)(char); // weak extern char aBadCast[9]; // weak extern int (__thiscall *off_6C5ED4)(void *, char); // weak extern int (__stdcall *off_6C5EF0)(int); // weak extern int (__stdcall *off_6C5F08)(int); // weak extern int (__stdcall *off_6C5F20)(int); // weak extern int (__stdcall *off_6C5F38)(int); // weak extern int (__stdcall *off_6C5F50)(int); // weak extern int (__stdcall *off_6C5F68)(int); // weak extern int (__stdcall *off_6C5F80)(int); // weak extern _UNKNOWN unk_6C5F94; // weak extern _UNKNOWN unk_6C5F98; // weak extern _UNKNOWN unk_6C5F9C; // weak extern char aPineeventscr_2[66]; // weak extern char aGetloseguild[13]; // weak extern char aGetwinnerguild[15]; // weak extern char aIsgateuse[10]; // weak extern char aRange[6]; // weak extern char aPlayerinarea[13]; // weak extern char aDistancebetwee[16]; // weak extern char aKqtoplist[10]; // weak extern char aKqresultlist[13]; // weak extern char aGetobjectlist[14]; // weak extern char aRemovefirst[12]; // weak extern char aCircularscatte[16]; // weak extern char aDeathnum[9]; // weak extern char aCharname[9]; // weak extern char aCharclass[10]; // weak extern char aRestsec[8]; // weak extern char aCount[6]; // weak extern char aChange2npc[11]; // weak extern char aChange2door[12]; // weak extern char aChange2mob[11]; // weak extern char aNpcstand[9]; // weak extern char aDoorbuild_0[10]; // weak extern char aMobregen_0[9]; // weak extern char aDistance[9]; // weak extern char aSquarroot[10]; // weak extern char a_[2]; // weak extern char aClose[6]; // weak extern char aOpen[5]; // weak extern char aVarNotInit[15]; // weak extern char a_[]; // idb extern void *off_6C613C; // weak extern char aInfinite[9]; // weak extern char aWhile[6]; // weak extern char aBreak[6]; // weak extern char aCall[5]; // weak extern char aPermillage[11]; // weak extern char asc_6C6170[2]; // weak extern unsigned __int8 byte_6C6174; // idb extern int (__thiscall *off_6C617C)(void *, char); // weak extern int (__thiscall *off_6C6184)(void *, char); // weak extern int (__thiscall *off_6C61A8)(void *, char); // weak extern char aElse[5]; // weak extern char aThen[5]; // weak extern char aIf[3]; // weak extern char aE[2]; // weak extern char aE_0[2]; // weak extern int (__stdcall *off_6C61E8)(int); // weak extern _UNKNOWN unk_6C61F8; // weak extern _UNKNOWN unk_6C61FC; // weak extern _UNKNOWN unk_6C6200; // weak extern _UNKNOWN unk_6C6204; // weak extern char aP_0[3]; // idb extern _UNKNOWN unk_6C6224; // weak extern _UNKNOWN unk_6C622C; // weak extern char aParameterIndex[19]; // weak extern char aMovieTheaterT_[39]; // weak extern int (__stdcall *off_6C6274)(int, int, int); // weak extern int (__stdcall *off_6C627C)(int, int, int); // weak extern int (__stdcall *off_6C6284)(int, int, int); // weak extern char aMovieTheater_0[43]; // weak extern char aScriptmobbre_0[46]; // weak extern char aScriptmobbreed[34]; // weak extern char aScriptmobbre_2[52]; // weak extern char aScriptmobbre_1[34]; // weak extern char aScriptmobbre_5[53]; // weak extern char aScriptmobbre_4[46]; // weak extern char aScriptmobbre_3[35]; // weak extern char aPineeventscr_4[72]; // weak extern char aPineeventscr_3[57]; // weak extern char aPineeventscr_6[73]; // weak extern char aPineeventscr_5[58]; // weak extern char aPineeventscr_8[72]; // weak extern char aPineeventscr_7[57]; // weak extern char aPineeventsc_10[74]; // weak extern char aPineeventscr_9[59]; // weak extern char aPineeventsc_12[75]; // weak extern char aPineeventsc_11[60]; // weak extern char aPineeventsc_14[74]; // weak extern char aPineeventsc_13[59]; // weak extern char aPineeventsc_16[70]; // weak extern void *off_6C6768; // weak extern char aPlayer[7]; // weak extern char aPineeventsc_15[54]; // weak extern char aPineeventsc_17[59]; // weak extern char aSentinel[9]; // 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_18[58]; // weak extern char aPineeventsc_19[57]; // weak extern char aPineeventsc_21[74]; // weak extern char aPineeventsc_20[59]; // weak extern char aPineeventsc_23[79]; // weak extern char aPineeventsc_22[64]; // weak extern char aPineeventsc_25[75]; // weak extern char aPineeventsc_24[60]; // weak extern char aAxiallistobj_4[30]; // weak extern char aAxiallistobj_5[35]; // weak extern char aInvalidFlag_0[13]; // weak extern char aMob[4]; // weak extern char aBandit[7]; // weak extern char aNpc[4]; // weak extern char aInvalidObject[15]; // weak extern char aPineeventsc_27[77]; // weak extern char aPineeventsc_26[62]; // weak extern int (__stdcall *off_6C6B44)(int, int, int); // weak extern char aAxiallistkqres[28]; // weak extern char aAxiallistkqr_0[33]; // weak extern char aAxiallistkqr_1[33]; // weak extern char aAxiallistkqr_2[34]; // weak extern char aAxiallistkqr_3[40]; // weak extern char aPineeventsc_30[74]; // weak extern char aPineeventsc_29[72]; // weak extern char a999999999[10]; // weak extern char aPineeventsc_28[69]; // weak extern char aPineeventsc_31[73]; // weak extern char aNewconditionof[19]; // weak extern char aConditionofher[16]; // weak extern char aPineeventsc_33[72]; // weak extern char aPineeventsc_32[54]; // weak extern char aSysfuncshine_1[53]; // weak extern char aSysfuncshine_0[56]; // weak extern char aSysfuncshineis[41]; // weak extern char aNone[5]; // weak extern char aPineeventsc_34[79]; // weak extern char aSysfuncshinege[42]; // weak extern char aPineeventsc_35[77]; // weak extern char aSysfuncshine_2[40]; // weak extern char aPineeventsc_38[70]; // weak extern char aShuffle[8]; // weak extern char aDesc[5]; // weak extern char aAsc[4]; // weak extern char aPineeventsc_37[69]; // weak extern char aPineeventsc_36[54]; // weak extern char byte_6C7058[]; // weak extern char aPinescriptmobr[41]; // weak extern char aPinescriptmo_1[55]; // weak extern char aPinescriptmo_0[37]; // weak extern char aPinescriptmo_3[59]; // weak extern char aGroupindex[]; // idb extern char aPinescriptmo_2[36]; // weak extern char aPinescriptmo_4[36]; // weak extern int (__stdcall *off_6C7188)(int, int, int); // weak extern int (__stdcall *off_6C7190)(int, int, int); // weak extern int (__stdcall *off_6C7198)(int, int, int); // weak extern int (__stdcall *off_6C71A0)(int, int, int); // weak extern int (__stdcall *off_6C71A8)(int, int, int); // weak extern int (__stdcall *off_6C71B0)(int, int, int); // weak extern char a_none_[]; // idb extern char aMovieTheater_3[41]; // weak extern int (__stdcall *off_6C71EC)(int); // weak extern char aPrintf[7]; // weak extern int (__stdcall *off_6C720C)(int); // weak extern char aScriptfile[11]; // weak extern int (__stdcall *off_6C7230)(int); // weak extern char aTimelimit[10]; // weak extern int (__stdcall *off_6C7254)(int); // weak extern char aInterruptclear[15]; // weak extern int (__stdcall *off_6C727C)(int); // weak extern char aInterruptset[13]; // weak extern int (__stdcall *off_6C72A4)(int); // weak extern char aInterrupterase[15]; // weak extern int (__stdcall *off_6C72CC)(int); // weak extern char aWaitinterrupt[14]; // weak extern int (__stdcall *off_6C72F4)(int); // weak extern int (__stdcall *off_6C730C)(int); // weak extern int (__stdcall *off_6C7324)(int); // weak extern int (__stdcall *off_6C733C)(int); // weak extern int (__stdcall *off_6C7354)(int); // weak extern int (__stdcall *off_6C736C)(int); // weak extern int (__stdcall *off_6C7384)(int); // weak extern char aExchange2mob[13]; // weak extern int (__stdcall *off_6C73AC)(int); // weak extern char aDooropen[9]; // weak extern int (__stdcall *off_6C73D0)(int); // weak extern char aDoorclose[10]; // weak extern int (__stdcall *off_6C73F4)(int); // weak extern char aVanish[7]; // weak extern int (__stdcall *off_6C7414)(int); // weak extern char aRegengroup[11]; // weak extern int (__stdcall *off_6C7438)(int); // weak extern char aWaitlogin[10]; // weak extern int (__stdcall *off_6C745C)(int); // weak extern char aPause[6]; // weak extern int (__stdcall *off_6C747C)(int); // weak extern char aNpcchat[8]; // weak extern int (__stdcall *off_6C749C)(int); // weak extern char aNpcshout[9]; // weak extern int (__stdcall *off_6C74C0)(int); // weak extern char aChatwin[8]; // weak extern int (__stdcall *off_6C74E0)(int); // weak extern char aChatwinrange[13]; // weak extern int (__stdcall *off_6C7508)(int); // weak extern char aSomeoneshout[13]; // weak extern int (__stdcall *off_6C7530)(int); // weak extern char aSummonmob[10]; // weak extern int (__stdcall *off_6C7554)(int); // weak extern char aQuestresult[12]; // weak extern int (__stdcall *off_6C7578)(int); // weak extern char aReward[7]; // weak extern int (__stdcall *off_6C7598)(int); // weak extern char aBroadcast[10]; // weak extern int (__stdcall *off_6C75BC)(int); // weak extern char aLinkto_0[7]; // weak extern int (__stdcall *off_6C75DC)(int); // weak extern char aWhoclickme[11]; // weak extern int (__stdcall *off_6C7600)(int); // weak extern char aWhokillme[10]; // weak extern int (__stdcall *off_6C7624)(int); // weak extern char aItemdrop[9]; // weak extern int (__stdcall *off_6C7648)(int); // weak extern char aInvensearch[12]; // weak extern int (__stdcall *off_6C766C)(int); // weak extern char aItemcreate[11]; // weak extern int (__stdcall *off_6C7690)(int); // weak extern char aItemerase[10]; // weak extern int (__stdcall *off_6C76B4)(int); // weak extern char aFindhandle[11]; // weak extern int (__stdcall *off_6C76D8)(int); // weak extern char aAbstateset[11]; // weak extern int (__stdcall *off_6C76FC)(int); // weak extern char aAbstatereset_0[13]; // weak extern int (__stdcall *off_6C7724)(int); // weak extern char aSuicide[8]; // weak extern int (__stdcall *off_6C7744)(int); // weak extern void *off_6C7758; // weak extern int (__stdcall *off_6C7760)(int); // weak extern char aWalk[5]; // weak extern int (__stdcall *off_6C7780)(int); // weak extern char aMaplight[9]; // weak extern int (__stdcall *off_6C77A4)(int); // weak extern char aMapfog[7]; // weak extern int (__stdcall *off_6C77C4)(int); // weak extern char aEffectobj[10]; // weak extern int (__stdcall *off_6C77E8)(int); // weak extern char aEffectloc[10]; // weak extern int (__stdcall *off_6C780C)(int); // weak extern char aAggro[6]; // weak extern int (__stdcall *off_6C782C)(int); // weak extern char aMobweaponrate[14]; // weak extern int (__stdcall *off_6C7854)(int); // weak extern char aMobdetectrange[15]; // weak extern int (__stdcall *off_6C787C)(int); // weak extern char aHeal[5]; // weak extern int (__stdcall *off_6C789C)(int); // weak extern char aAnimate[8]; // weak extern int (__stdcall *off_6C78BC)(int); // weak extern char aDuplicate[10]; // weak extern int (__stdcall *off_6C78E0)(int); // weak extern char aWaitidle[9]; // weak extern int (__stdcall *off_6C7904)(int); // weak extern char aDeathcountclea[16]; // weak extern int (__stdcall *off_6C792C)(int); // weak extern char aItemattrset[12]; // weak extern int (__stdcall *off_6C7950)(int); // weak extern char aScinariocode[13]; // weak extern int (__stdcall *off_6C7978)(int); // weak extern char aBattlestart[12]; // weak extern int (__stdcall *off_6C799C)(int); // weak extern char aBattlestop[11]; // weak extern int (__stdcall *off_6C79C0)(int); // weak extern char aSendquestresul[16]; // weak extern int (__stdcall *off_6C79E8)(int); // weak extern char aInvidualreward[15]; // weak extern int (__stdcall *off_6C7A10)(int); // weak extern char aReturnvalue[12]; // weak extern int (__stdcall *off_6C7A34)(int); // weak extern char aSublayershift[14]; // weak extern int (__stdcall *off_6C7A5C)(int); // weak extern char aTeleport[9]; // weak extern int (__stdcall *off_6C7A80)(int); // weak extern char aItemowner[10]; // weak extern int (__stdcall *off_6C7AA4)(int); // weak extern char aMobattr[8]; // weak extern int (__stdcall *off_6C7AC4)(int); // weak extern char aCollect[8]; // weak extern int (__stdcall *off_6C7AE4)(int); // weak extern char aEndofkq_0[8]; // weak extern int (__stdcall *off_6C7B04)(int); // weak extern char aEndofgt[8]; // weak extern int (__stdcall *off_6C7B24)(int); // weak extern char aGtresult[9]; // weak extern int (__stdcall *off_6C7B48)(int); // weak extern char aCostumecreate[14]; // weak extern int (__stdcall *off_6C7B70)(int); // weak extern char aCostumetakeoff[15]; // weak extern int (__stdcall *off_6C7B98)(int); // weak extern char aWeddingcomplet[16]; // weak extern int (__stdcall *off_6C7BC0)(int); // weak extern char aPlayerwork[11]; // weak extern int (__stdcall *off_6C7BE4)(int); // weak extern char aFindplayer[11]; // weak extern int (__stdcall *off_6C7C08)(int); // weak extern char aTeleportall[12]; // weak extern int (__stdcall *off_6C7C2C)(int); // weak extern char aBriefeffect[12]; // weak extern int (__stdcall *off_6C7C50)(int); // weak extern char aBanfromarea[12]; // weak extern int (__stdcall *off_6C7C74)(int); // weak extern char aRegisteflag[12]; // weak extern int (__stdcall *off_6C7C98)(int); // weak extern char aRegistegate[12]; // weak extern int (__stdcall *off_6C7CBC)(int); // weak extern char aDicegamestart[14]; // weak extern int (__stdcall *off_6C7CE4)(int); // weak extern char aRevival[8]; // weak extern int (__stdcall *off_6C7D04)(int); // weak extern char aSpawn[6]; // weak extern int (__stdcall *off_6C7D24)(int); // weak extern char aHpset[6]; // weak extern int (__stdcall *off_6C7D44)(int); // weak extern char aQuestmobkill[13]; // weak extern char a___printf[13]; // weak extern char aPineeventsc_39[58]; // weak extern int (__stdcall *off_6C7DB8)(int, int, int); // weak extern int (__stdcall *off_6C7DC0)(int, int, int); // weak extern int (__stdcall *off_6C7DC8)(int); // weak extern int (__stdcall *off_6C7DE4)(int); // weak extern int (__stdcall *off_6C7E00)(int); // weak extern int (__stdcall *off_6C7E1C)(int); // weak extern int (__stdcall *off_6C7E38)(int); // weak extern int (__stdcall *off_6C7E54)(int); // weak extern int (__stdcall *off_6C7E70)(int); // weak extern int (__stdcall *off_6C7E8C)(int); // weak extern int (__stdcall *off_6C7EA8)(int); // weak extern int (__stdcall *off_6C7EC4)(int, int); // weak extern char aMovieTheater_2[32]; // weak extern char aMovieTheater_1[39]; // weak extern int (__stdcall *off_6C7F14)(int); // weak extern char aRegistergtport[17]; // weak extern int (__stdcall *off_6C7F44)(int); // weak extern char aSavelinkto[11]; // weak extern int (__stdcall *off_6C7F6C)(int); // weak extern char aClearsavelin_0[16]; // weak extern int (__stdcall *off_6C7F98)(int); // weak extern char aNpcchatnofacec[17]; // weak extern int (__stdcall *off_6C7FC8)(int); // weak extern char aScinariocodepa[18]; // weak extern int (__stdcall *off_6C7FF8)(int); // weak extern char aHasabstate[11]; // weak extern int (__stdcall *off_6C8020)(int); // weak extern char aBroadcastcode[14]; // weak extern int (__stdcall *off_6C804C)(int); // weak extern char aGtregisternpc[14]; // weak extern int (__stdcall *off_6C8078)(int); // weak extern char aGtmobregenkey[14]; // weak extern char aPineeventsc_41[45]; // weak extern char aPineeventsc_40[52]; // weak extern char aStatepermillag[19]; // weak extern char aPineeventsc_42[46]; // weak extern char aUnsetScriptFil[18]; // weak extern char aPineeventsc_44[62]; // weak extern char aShinescriptfil[19]; // weak extern char aPineeventsc_43[46]; // weak extern char aPineeventsc_46[61]; // weak extern char aShinetimelimit[18]; // weak extern char aPineeventsc_45[45]; // weak extern char aPineeventsc_50[63]; // weak extern char aPineeventsc_49[57]; // weak extern char aPineeventsc_48[59]; // weak extern char aInterruptset_0[16]; // weak extern char aPineeventsc_47[48]; // weak extern char aShineinterrupt[20]; // weak extern char aPineeventsc_51[50]; // weak extern char aShinewaitinter[19]; // weak extern char aPineeventsc_52[49]; // weak extern char aPineeventsc_55[64]; // weak extern char aPineeventsc_54[66]; // weak extern char aPineeventsc_53[53]; // weak extern char aShinechange2mo[19]; // weak extern char aPineeventsc_56[46]; // weak extern char aShinechange2do[20]; // weak extern char aPineeventsc_57[47]; // weak extern char aShinechange2np[19]; // weak extern char aPineeventsc_58[46]; // weak extern char aPineeventsc_63[67]; // weak extern char aPineeventsc_62[56]; // weak extern char aPineeventsc_61[70]; // weak extern char aPineeventsc_60[63]; // weak extern char aShineexchange2[21]; // weak extern char aPineeventsc_59[48]; // weak extern char aPineeventsc_65[61]; // weak extern char aShinedooropen[17]; // weak extern char aPineeventsc_64[44]; // weak extern char aShinedoorclose[18]; // weak extern char aPineeventsc_66[45]; // weak extern char aPineeventsc_69[75]; // weak extern char aPineeventsc_68[65]; // weak extern char aShinevanish[12]; // weak extern char aPineeventsc_67[48]; // weak extern char aPineeventsc_74[61]; // weak extern char aPineeventsc_73[61]; // weak extern char aPineeventsc_72[57]; // weak extern char aPineeventsc_71[55]; // weak extern char aShineregengrou[19]; // weak extern char aPineeventsc_70[46]; // weak extern char aShinewaituserl[19]; // weak extern char aPineeventsc_75[49]; // weak extern char aError[9]; // weak extern char aPineeventsc_78[55]; // weak extern char aMilliseconds[14]; // weak extern char aSeconds[9]; // weak extern char aMinute[8]; // weak extern char aPineeventsc_77[50]; // weak extern char aHours[7]; // weak extern char aShinepause[14]; // weak extern char aPineeventsc_76[41]; // weak extern char aPineeventsc_80[54]; // weak extern char aShinenpcchat[16]; // weak extern char aPineeventsc_79[43]; // weak extern char aPineeventsc_82[55]; // weak extern char aShinenpcshout[17]; // weak extern char aPineeventsc_81[44]; // weak extern char aPineeventsc_85[52]; // weak extern char aPineeventsc_84[52]; // weak extern char aShinesomeonesh[18]; // weak extern char aPineeventsc_83[48]; // weak extern char aPineeventsc_88[57]; // weak extern char aPineeventsc_87[54]; // weak extern char aShinesummonmob[18]; // weak extern char aPineeventsc_86[45]; // weak extern char aShinequestresu[17]; // weak extern char aPineeventsc_89[47]; // weak extern char aPineeventsc_91[60]; // weak extern char aShinereward[12]; // weak extern char aPineeventsc_90[42]; // weak extern char aPineeventsc_94[69]; // weak extern char aPineeventsc_93[58]; // weak extern char aShinebroadcast[15]; // weak extern char aPineeventsc_92[45]; // weak extern char asc_6C8E8C[54]; // weak extern char aPineeventsc_98[54]; // weak extern char aPineeventsc_97[57]; // weak extern char aPineeventsc_96[57]; // weak extern char aShinelinkto[12]; // weak extern char aPineeventsc_95[42]; // weak extern char asc_6C8FAC[56]; // weak extern char asc_6C8FE4[58]; // weak extern char asc_6C9020[61]; // weak extern char asc_6C9060[54]; // weak extern char asc_6C9098[59]; // weak extern char aShineitemdrop[14]; // weak extern char asc_6C90E4[44]; // weak extern char asc_6C9110[55]; // weak extern char asc_6C9148[58]; // weak extern char aShinewhoclickm[16]; // weak extern char asc_6C9194[46]; // weak extern char asc_6C91C4[54]; // weak extern char asc_6C91FC[55]; // weak extern char aShineitemerase[18]; // weak extern char asc_6C9248[45]; // weak extern char asc_6C9278[56]; // weak extern char aShineitemcreat[19]; // weak extern char asc_6C92C4[46]; // weak extern char asc_6C92F4[62]; // weak extern char asc_6C9334[57]; // weak extern char asc_6C9370[59]; // weak extern char asc_6C93AC[59]; // weak extern char aShineinvensear[20]; // weak extern char asc_6C93FC[47]; // weak extern char asc_6C942C[56]; // weak extern char asc_6C9464[55]; // weak extern char aShinefindhandl[16]; // weak extern char asc_6C94AC[46]; // weak extern char asc_6C94E0[69]; // weak extern char asc_6C9528[56]; // weak extern char aShineabstatset[15]; // weak extern char asc_6C9570[45]; // weak extern char asc_6C95A0[58]; // weak extern char aShineabstatres[17]; // weak extern char asc_6C95F0[47]; // weak extern char aAlms_selfkill[14]; // weak extern char aAxiallistmobsu[35]; // weak extern char aAxiallistmob_0[30]; // weak extern char asc_6C9674[60]; // weak extern char aShinesuicide[13]; // weak extern char asc_6C96C0[43]; // weak extern char asc_6C96EC[49]; // weak extern char asc_6C9720[49]; // weak extern char aShinerun[9]; // weak extern char asc_6C9760[39]; // weak extern char aShinewalk[10]; // weak extern char asc_6C9794[40]; // weak extern char asc_6C97BC[58]; // weak extern char aShinemaplight[14]; // weak extern char asc_6C9808[44]; // weak extern char asc_6C9834[56]; // weak extern char aShinemapfog[12]; // weak extern char asc_6C9878[42]; // weak extern char asc_6C98A8[66]; // weak extern char asc_6C98EC[60]; // weak extern char asc_6C9928[60]; // weak extern char aShineeffectobj[18]; // weak extern char asc_6C9978[48]; // weak extern char asc_6C99A8[66]; // weak extern char asc_6C99EC[59]; // weak extern char aShineeffectloc[18]; // weak extern char asc_6C9A3C[48]; // weak extern char asc_6C9A6C[52]; // weak extern char asc_6C9AA0[53]; // weak extern char aShineaggro[11]; // weak extern char asc_6C9AE4[41]; // weak extern char aShinemobdetect[20]; // weak extern char asc_6C9B24[50]; // weak extern char aHp[8]; // weak extern char aShineheal[10]; // weak extern char asc_6C9B6C[40]; // weak extern char aShineanimate[13]; // weak extern char asc_6C9BA4[43]; // weak extern char aShineduplicate[15]; // weak extern char asc_6C9BE0[45]; // weak extern char aShinewaitidle[14]; // weak extern char asc_6C9C20[44]; // weak extern char aShinedeathcoun[21]; // weak extern char asc_6C9C64[51]; // weak extern char asc_6C9C98[62]; // weak extern char asc_6C9CD8[57]; // weak extern char aShineitemattrs[17]; // weak extern char asc_6C9D28[47]; // weak extern char aFail2[7]; // weak extern char aSuc[4]; // weak extern char aFail1[7]; // weak extern char asc_6C9D6C[58]; // weak extern char aFail0[7]; // weak extern char aShinescinari_0[19]; // weak extern char aShinescinarioc[18]; // weak extern char asc_6C9DD8[48]; // weak extern char asc_6C9E08[62]; // weak extern char asc_6C9E48[57]; // weak extern char asc_6C9E84[59]; // weak extern char asc_6C9EC0[64]; // weak extern char aShinebattlesta[17]; // weak extern char asc_6C9F14[47]; // weak extern char asc_6C9F44[61]; // weak extern char aShinebattlesto[16]; // weak extern char asc_6C9F94[46]; // weak extern char asc_6C9FC4[60]; // weak extern char asc_6CA000[48]; // weak extern char asc_6CA030[60]; // weak extern char asc_6CA06C[50]; // weak extern char asc_6CA0A0[59]; // weak extern char asc_6CA0DC[47]; // weak extern char asc_6CA10C[61]; // weak extern char asc_6CA14C[49]; // weak extern char asc_6CA180[56]; // weak extern char asc_6CA1B8[56]; // weak extern char asc_6CA1F0[47]; // weak extern char asc_6CA220[44]; // weak extern char asc_6CA24C[59]; // weak extern char asc_6CA288[60]; // weak extern char asc_6CA2C4[55]; // weak extern char asc_6CA2FC[45]; // weak extern char asc_6CA32C[55]; // weak extern char aShinechatwindo[19]; // weak extern char asc_6CA378[46]; // weak extern char aShinechatwin_0[24]; // weak extern char asc_6CA3C0[51]; // weak extern char aShinemobattrib[21]; // weak extern char asc_6CA40C[48]; // weak extern char asc_6CA43C[49]; // weak extern char asc_6CA470[75]; // weak extern char aShineendofking[23]; // weak extern char asc_6CA4D4[53]; // weak extern char asc_6CA50C[56]; // weak extern char aShineguildtoru[27]; // weak extern char asc_6CA560[57]; // weak extern char asc_6CA59C[59]; // weak extern char asc_6CA5D8[59]; // weak extern char aShinecostumecr[19]; // weak extern char asc_6CA628[49]; // weak extern char asc_6CA65C[60]; // weak extern char asc_6CA698[60]; // weak extern char aShinecostumeta[20]; // weak extern char asc_6CA6E8[50]; // weak extern char asc_6CA720[69]; // weak extern char aShineweddingco[21]; // weak extern char asc_6CA780[51]; // weak extern char asc_6CA7B4[46]; // weak extern char asc_6CA7E4[56]; // weak extern char asc_6CA81C[47]; // weak extern char asc_6CA84C[43]; // weak extern char asc_6CA878[54]; // weak extern char asc_6CA8B0[57]; // weak extern char aShinewhokillme[15]; // weak extern char asc_6CA8FC[45]; // weak extern char aClearsavelinkt[25]; // weak extern char asc_6CA948[63]; // weak extern char aShinenpcchatno[25]; // weak extern char asc_6CA9A4[52]; // weak extern char aFail22[9]; // weak extern char aSuc2[6]; // weak extern char aExceptNotinran[19]; // weak extern char aExceptNotinmap[17]; // weak extern char aSuc1[6]; // weak extern char aFail21[9]; // weak extern char asc_6CAA28[58]; // weak extern char aScinariocode_0[19]; // weak extern char asc_6CAA78[48]; // weak extern char asc_6CAAA8[62]; // weak extern char asc_6CAAE8[68]; // weak extern char aErr_noerr_ti_2[28]; // weak extern char aErr_noerr_ti_1[26]; // weak extern char aErr_noerr_ti_0[26]; // weak extern char aErr_noerr_time[24]; // weak extern char asc_6CAB98[57]; // weak extern char asc_6CABD4[44]; // weak extern char asc_6CAC00[53]; // weak extern char asc_6CAC38[41]; // weak extern char asc_6CAC64[49]; // weak extern char asc_6CAC98[53]; // weak extern char asc_6CACD0[41]; // weak extern char asc_6CACFC[57]; // weak extern char asc_6CAD38[59]; // weak extern char aShinequestmobk[21]; // weak extern char asc_6CAD8C[48]; // weak extern int (__stdcall *off_6CADC0)(int, int); // weak extern char aInterruptcle_0[15]; // weak extern char asc_6CADD4[50]; // weak extern char asc_6CAE08[67]; // weak extern char asc_6CAE4C[52]; // weak extern char asc_6CAE80[59]; // weak extern char aShinemobregen[17]; // weak extern char asc_6CAED0[44]; // weak extern char asc_6CAEFC[60]; // weak extern char aShinedoorbuild[18]; // weak extern char asc_6CAF4C[45]; // weak extern char asc_6CAF7C[59]; // weak extern char aShinenpcstand[17]; // weak extern char asc_6CAFCC[44]; // weak extern char asc_6CAFF8[56]; // weak extern char asc_6CB030[46]; // weak extern char asc_6CB060[54]; // weak extern char asc_6CB098[54]; // weak extern char asc_6CB0D0[56]; // weak extern char asc_6CB108[57]; // weak extern char asc_6CB144[47]; // weak extern char asc_6CB178[64]; // weak extern char asc_6CB1B8[61]; // weak extern char asc_6CB1F8[49]; // weak extern char asc_6CB22C[51]; // weak extern char asc_6CB260[50]; // weak extern char asc_6CB294[41]; // weak extern char aGtregisternpcN[29]; // weak extern char aGtmobregenkeyS[23]; // weak extern char aGtregisternpcS[23]; // weak extern char aRegistergtpo_0[26]; // weak extern char aSavelinktoSa_s[20]; // weak extern char aShinemobweapon[19]; // weak extern char asc_6CB354[49]; // weak extern char asc_6CB388[77]; // weak extern char asc_6CB3D8[80]; // weak extern char asc_6CB428[74]; // weak extern char asc_6CB474[62]; // weak extern char aShineregestegu[48]; // weak extern char asc_6CB4E8[79]; // weak extern char asc_6CB538[59]; // weak extern char asc_6CB574[47]; // weak extern char byte_6CB5A4[]; // weak extern char aMe[3]; // weak extern char aHour[5]; // weak extern char aMinute_0[7]; // weak extern char aSec[4]; // weak extern char aMillisec[9]; // weak extern char aKingdomques_17[13]; // weak extern char aSuc_0[4]; // weak extern char aFail[5]; // weak extern char aAreaentry[10]; // weak extern char aArealeave[10]; // weak extern char aNpcclickhandle[15]; // weak extern char aNpcclickindex[14]; // weak extern char aNpcclickany[12]; // weak extern char aHplow_0[6]; // weak extern char aMobeliminate[13]; // weak extern char aPlayereliminat[16]; // weak extern char aGuildeliminate[15]; // weak extern char aTimeout[8]; // weak extern char aDeadhandle[11]; // weak extern char aDeadindex[10]; // weak extern char aKillenemy[10]; // weak extern char aTargetchange[13]; // weak extern char aPlayerdead[11]; // weak extern char aAdmin[6]; // weak extern char aOn[3]; // weak extern char aOff[4]; // weak extern char aLogout[7]; // weak extern char aAnywhere_0[9]; // weak extern char aHandle_0[7]; // weak extern char aGuild_0[6]; // weak extern char aRecover_0[8]; // weak extern char aNoaggro[8]; // weak extern char aPk[3]; // weak extern void *off_6CB700; // weak extern char aObserver[9]; // weak extern char aGuildtourna_26[21]; // weak extern char aResult_0[7]; // weak extern char aHpfull[7]; // weak extern char aBeggar[7]; // weak extern char aAll_without_co[19]; // weak extern char aHeadacc[8]; // weak extern char aBodyacc[8]; // weak extern char aSplit[6]; // weak extern char aPickupiteminde[16]; // weak extern char aDicegameend[12]; // weak extern char aMobindex_0[9]; // weak extern char aHpupper[8]; // weak extern char byte_6CB79C[]; // weak extern char aZoneconnectses[46]; // weak extern char aOptoolsessionZ[27]; // weak extern char aZonelistens_19[31]; // weak extern char aZoneconnects_0[50]; // weak extern char aZoneringlinkag[36]; // weak extern char aGamedbsessi_97[41]; // weak extern char aGamedbsessionZ[27]; // weak extern char aGamelogsessi_5[42]; // weak extern char aGamelogsessi_4[28]; // weak extern char asc_6CB900[47]; // weak extern char asc_6CB930[33]; // weak extern char aClientsessio_3[77]; // weak extern char aClientsessio_2[66]; // weak extern char aClientsessio_1[64]; // weak extern char aSessionauthmod[17]; // weak extern char aIp_addr[11]; // weak extern char aNuserregno[14]; // weak extern char aNcharregno[14]; // weak extern char aNwmshandle[14]; // weak extern char asc_6CBA80[3]; // weak extern char aD_D_D_D[]; // idb extern char aClientsessio_0[45]; // weak extern char aClientsessionZ[27]; // weak extern char aRecallpoint[]; // idb extern char aRecallpointtab[27]; // weak extern char aErrorInReadRec[33]; // weak extern char a__9dataShin_62[]; // idb extern char a__9dataShin_61[]; // idb extern char asc_6CBB78[80]; // weak extern char asc_6CBBC8[62]; // weak extern char aGamedbsessi_98[56]; // weak extern char asc_6CBC40[72]; // weak extern char asc_6CBC88[54]; // weak extern int (__stdcall *off_6CBCC4[4])(int, int, int); // weak extern char aRtn[23]; // weak extern char aAbrate[23]; // weak extern char aTotalac[23]; // weak extern char aTotalcon[23]; // weak extern char aRulesofengagem[30]; // weak extern char aRst[23]; // weak extern char aItemattack[23]; // weak extern char aMasteryrate[23]; // weak extern char aMasteryplus[23]; // weak extern char aWpt[23]; // weak extern char aItem_0[23]; // weak extern char aPurechar[23]; // weak extern char aAbstate[23]; // weak extern char aUpgrade[23]; // weak extern char aStrtotal[23]; // weak extern char aRulesofengag_0[33]; // weak extern char aRulesofengag_1[33]; // weak extern double (__stdcall *off_6CBEC4[4])(int); // weak extern _UNKNOWN unk_6CBF00; // weak extern char aAfterFreestatb[27]; // weak extern char aShieldFail[13]; // weak extern char aShieldSuccess[16]; // weak extern char aRulesofengag_2[32]; // weak extern char aEngsklattEna_a[40]; // weak extern char aAttackpowerLev[48]; // weak extern char aDamage[27]; // weak extern char aLevelAtt[27]; // weak extern char aDefendpower[27]; // weak extern char aAttackpower[27]; // weak extern char aRulesofengag_3[30]; // weak extern char asc_6CC250[4]; // weak extern char aRulesofengag_4[38]; // weak extern char aRulesofengag_5[38]; // weak extern char a850[10]; // weak extern char aRulesofengag_7[40]; // weak extern char aRulesofengag_6[39]; // weak extern char aRulesofengag_8[44]; // weak extern char aRulesofengag_9[43]; // weak extern char aRulesofenga_11[40]; // weak extern char aRulesofenga_10[39]; // weak extern char aRulesofenga_12[44]; // weak extern char aRulesofenga_13[43]; // weak extern char aAsSkill[11]; // weak extern char aAsNormal[12]; // weak extern char asc_6CC440[4]; // weak extern char asc_6CC444[4]; // weak extern char aRulesofenga_15[45]; // weak extern char aRulesofenga_14[44]; // weak extern char aRulesofenga_16[49]; // weak extern char aRulesofenga_17[48]; // weak extern char aRulesofenga_19[44]; // weak extern char aRulesofenga_18[43]; // weak extern char aRulesofenga_20[48]; // weak extern char aRulesofenga_21[47]; // weak extern char asc_6CC5C0[63]; // weak extern char asc_6CC600[75]; // weak extern char asc_6CC650[80]; // weak extern char asc_6CC6A0[90]; // weak extern char asc_6CC6FC[57]; // weak extern char aRulesofenga_34[38]; // weak extern char aRulesofenga_22[46]; // weak extern char aRulesofenga_23[46]; // weak extern char aRulesofenga_25[49]; // weak extern char aRulesofenga_24[38]; // weak extern char aRulesofenga_27[54]; // weak extern char aRulesofenga_26[43]; // weak extern char asc_6CC880[4]; // weak extern char aRulesofenga_29[45]; // weak extern char aRulesofenga_28[34]; // weak extern char aRulesofenga_30[43]; // weak extern char aRulesofenga_31[43]; // weak extern char aRulesofenga_32[48]; // weak extern char aRulesofenga_33[47]; // weak extern char aLuascriptsce_0[53]; // weak extern int (__thiscall *off_6CC9CC)(void *, char); // weak extern char dataShine::a[]; // idb extern char a__9dataShineLu[]; // idb extern char aLua[4]; // weak extern int (__thiscall *off_6CCA30)(void *, char); // weak extern int (__thiscall *off_6CCA48)(void *, char); // weak extern int (__thiscall *off_6CCA60)(void *, char); // weak extern int (__stdcall *off_6CCA84)(int, int); // weak extern int (__stdcall *off_6CCA8C)(int, int); // weak extern _UNKNOWN unk_6CCA90; // weak extern char aScenariobook_1[43]; // weak extern char aScenariobook_3[61]; // weak extern char aScenariobook_2[44]; // weak extern int (__thiscall *off_6CCB30)(void *, char); // weak extern int (__thiscall *off_6CCB40)(void *, char); // weak extern int (__thiscall *off_6CCB50)(void *, char); // weak extern char aMoviePsfilmFb_[34]; // weak extern char aScenariobook_4[39]; // weak extern char aScenariobook_5[29]; // weak extern int (__thiscall *off_6CCBCC)(void *, char); // weak extern char aMovieTimelimit[34]; // weak extern char aMovieTimelim_0[34]; // weak extern char aMovieTimelim_1[30]; // weak extern char aMovieTheater_9[30]; // weak extern char aMain[5]; // weak extern char aMovieTheater_6[37]; // weak extern char aMovieTheater_5[47]; // weak extern char aMovieTheater_4[26]; // weak extern char aInitflag[9]; // weak extern char aMovieTheater_8[43]; // weak extern char aInvalidScriptT[20]; // weak extern char aMovieTheater_7[27]; // weak extern int (__stdcall *off_6CCD5C)(int, int); // weak extern char aMoviePsfilmF_0[30]; // weak extern char aMovieFilmbaseF[29]; // weak extern char aMovieFilmbas_0[28]; // weak extern char aMovieCinemacom[41]; // weak extern char aMovieCinemac_6[56]; // weak extern char aMovieCinemac_5[36]; // weak extern char aMovieCinemac_4[39]; // weak extern char aScriptError[13]; // weak extern char aMovieCinemac_3[36]; // weak extern char aMovieCinemac_2[50]; // weak extern char aMovieCinemac_1[36]; // weak extern char aMovieCinemac_0[34]; // weak extern char aMovieFilmcaseF[28]; // weak extern char aMoviePsfilmF_1[36]; // weak extern char aMovieCinemac_7[38]; // weak extern char aInstancedung_1[21]; // weak extern char aScenariobook_7[45]; // weak extern char aScenariobook_6[28]; // weak extern char aScenariobook_9[35]; // weak extern char aScenariobook_8[55]; // weak extern char aScriptname[]; // idb extern char aPinescript[]; // idb extern char aScenarioboo_10[55]; // weak extern int (*off_6CD098)(); // weak extern int (__thiscall *off_6CD434)(void *, char); // weak extern int (__thiscall *off_6CD458)(void *, char); // weak extern char aScriptinterr_0[78]; // weak extern char aScriptinterrup[51]; // weak extern char aScriptinterr_1[57]; // weak extern char aScriptinterr_2[55]; // weak extern char aScriptinterr_3[63]; // weak extern char aScriptinterr_4[58]; // weak extern char aScriptinterr_5[58]; // weak extern char aScriptinterr_6[62]; // weak extern char aScriptinterr_7[60]; // weak extern char aScriptinterr_8[65]; // weak extern char aScriptinterr_9[64]; // weak extern char aScriptinter_10[61]; // weak extern char aScriptinter_11[64]; // weak extern char aScriptinter_12[63]; // weak extern char aScriptinter_13[57]; // weak extern char aScriptinter_14[54]; // weak extern char aScriptinter_15[56]; // weak extern char aScriptinter_16[58]; // weak extern char aScriptinter_17[61]; // weak extern char aScriptinter_18[59]; // weak extern char aScriptinter_19[54]; // weak extern char aScriptinter_20[56]; // weak extern char aScriptinter_21[63]; // weak extern char aScriptinter_22[62]; // weak extern char aScriptinter_23[60]; // weak extern char aScriptinter_24[58]; // weak extern char aScriptinter_25[63]; // weak extern char aScriptinter_26[51]; // weak extern char aScriptinter_27[65]; // weak extern char aScriptinter_28[64]; // weak extern char aScriptinter_29[58]; // weak extern char aScriptinter_30[59]; // weak extern char aScriptinter_31[57]; // weak extern char aScriptinter_32[57]; // weak extern char aScriptinter_33[64]; // weak extern char aScriptinter_34[66]; // weak extern char aScriptinter_35[60]; // weak extern char aScriptinter_36[60]; // weak extern char aScriptinter_37[54]; // weak extern char aScriptinter_38[60]; // weak extern char aScriptinter_39[55]; // weak extern char aScriptinter_40[58]; // weak extern char aScriptinter_41[56]; // weak extern char aScriptinter_42[55]; // weak extern char aScriptinter_43[55]; // weak extern char aScriptinter_44[56]; // weak extern char asc_6CDF6C[60]; // weak extern char asc_6CDFA8[60]; // weak extern int (__stdcall *off_6CDFE8)(int, int, int, int, int, int, int); // weak extern char aWinguild[9]; // weak extern char asc_6CE02C[58]; // weak extern char asc_6CE068[56]; // weak extern char asc_6CE0A0[66]; // weak extern char asc_6CE0E4[51]; // weak extern char asc_6CE118[68]; // weak extern char asc_6CE15C[52]; // weak extern char asc_6CE190[50]; // weak extern char asc_6CE1C4[52]; // weak extern char asc_6CE1F8[49]; // weak extern char asc_6CE22C[47]; // weak extern char asc_6CE25C[44]; // weak extern char asc_6CE288[51]; // weak extern char aCsellitemmanag[42]; // weak extern char aCsellitemman_1[48]; // weak extern char aCsellitemman_0[46]; // weak extern int (__thiscall *off_6CE34C)(void *, char); // weak extern int (__stdcall *off_6CE370)(int, int); // weak extern char aCsellitemman_2[48]; // weak extern int (__stdcall *off_6CE3A8)(int, int); // weak extern char aCsellitemman_3[58]; // weak extern char aCsellitemman_4[58]; // weak extern int (__thiscall *off_6CE428)(void *, char); // weak extern char aServermenufu_4[31]; // weak extern char aServermenufu_5[29]; // weak extern char aServermenufu_6[38]; // weak extern char aServermenufu_7[39]; // weak extern char aServermenufu_8[36]; // weak extern char aServermenufu_9[46]; // weak extern char aServermenuf_11[59]; // weak extern char aServermenuf_10[41]; // weak extern char aServermenuf_12[47]; // weak extern char aServermenuac_4[27]; // weak extern char aServermenuac_0[46]; // weak extern char aServermenuacto[28]; // weak extern char aServermenuac_1[37]; // weak extern char asc_6CE654[56]; // weak extern char asc_6CE68C[57]; // weak extern char asc_6CE6C8[47]; // weak extern char aServermenuac_3[45]; // weak extern char aServermenuac_2[31]; // weak extern char aServermenuac_6[45]; // weak extern char aServermenuac_5[27]; // weak extern char asc_6CE794[57]; // weak extern char aSetitemdataSet[77]; // weak extern char aSetitemdataS_0[80]; // weak extern char aSetitemdataS_2[68]; // weak extern char aSetitemdataS_1[50]; // weak extern char aSetitemdataS_4[71]; // weak extern char aSetitemdataS_3[50]; // weak extern char aSetitemdataSki[35]; // weak extern char aAbnormalsta_80[71]; // weak extern char aAbnormalsta_81[72]; // weak extern char aSetitemdataS_5[55]; // weak extern char asc_6CEA50[47]; // weak extern char asc_6CEA80[59]; // weak extern char asc_6CEABC[53]; // weak extern char asc_6CEAF8[74]; // weak extern char asc_6CEB48[75]; // weak extern char asc_6CEB94[60]; // weak extern char asc_6CEBD0[77]; // weak extern char asc_6CEC20[81]; // weak extern char asc_6CEC78[80]; // weak extern char asc_6CECC8[80]; // weak extern char asc_6CED18[73]; // weak extern char asc_6CED68[78]; // weak extern char asc_6CEDB8[85]; // weak extern char asc_6CEE10[90]; // weak extern char asc_6CEE70[83]; // weak extern char asc_6CEEC8[82]; // weak extern char asc_6CEF20[88]; // weak extern char asc_6CEF78[83]; // weak extern char asc_6CEFD0[75]; // weak extern char asc_6CF020[90]; // weak extern char asc_6CF080[78]; // weak extern char asc_6CF0D0[83]; // weak extern char asc_6CF128[82]; // weak extern char asc_6CF180[75]; // weak extern char asc_6CF1CC[57]; // weak extern char asc_6CF208[63]; // weak extern char asc_6CF248[64]; // weak extern char asc_6CF288[91]; // weak extern char asc_6CF2E8[73]; // weak extern char asc_6CF338[92]; // weak extern char asc_6CF398[74]; // weak extern char asc_6CF3E8[88]; // weak extern char asc_6CF440[70]; // weak extern char asc_6CF488[76]; // weak extern char asc_6CF4D4[58]; // weak extern char asc_6CF510[79]; // weak extern char asc_6CF560[61]; // weak extern char asc_6CF5A0[86]; // weak extern char asc_6CF5F8[68]; // weak extern char asc_6CF640[66]; // weak extern char asc_6CF688[85]; // weak extern char asc_6CF6E0[88]; // weak extern char asc_6CF738[90]; // weak extern char asc_6CF798[77]; // weak extern char asc_6CF7E8[74]; // weak extern char asc_6CF834[58]; // weak extern char asc_6CF870[61]; // weak extern char asc_6CF8B0[62]; // weak extern char asc_6CF8F0[46]; // weak extern char asc_6CF920[59]; // weak extern char asc_6CF95C[56]; // weak extern char asc_6CF998[66]; // weak extern char asc_6CF9DC[49]; // weak extern char asc_6CFA10[84]; // weak extern char asc_6CFA68[73]; // weak extern char asc_6CFAB4[49]; // weak extern char asc_6CFAE8[66]; // weak extern char asc_6CFB2C[48]; // weak extern char asc_6CFB60[67]; // weak extern char asc_6CFBA4[49]; // weak extern char asc_6CFBD8[65]; // weak extern char asc_6CFC1C[47]; // weak extern char asc_6CFC4C[63]; // weak extern char asc_6CFC8C[45]; // weak extern char asc_6CFCC0[72]; // weak extern char asc_6CFD08[54]; // weak extern char asc_6CFD40[60]; // weak extern char asc_6CFD7C[57]; // weak extern char asc_6CFDB8[66]; // weak extern char asc_6CFDFC[63]; // weak extern char asc_6CFE3C[58]; // weak extern char asc_6CFE78[64]; // weak extern char asc_6CFEB8[69]; // weak extern char asc_6CFF00[51]; // weak extern char asc_6CFF38[71]; // weak extern char asc_6CFF80[53]; // weak extern char asc_6CFFB8[78]; // weak extern char asc_6D0008[60]; // weak extern char aPlayerHnd[12]; // weak extern char aCannotFind[13]; // weak extern char asc_6D0060[52]; // weak extern char asc_6D0094[59]; // weak extern char asc_6D00D0[60]; // weak extern char asc_6D0110[68]; // weak extern char asc_6D0154[50]; // weak extern char asc_6D0188[66]; // weak extern char asc_6D01D0[84]; // weak extern char asc_6D0228[66]; // weak extern char asc_6D026C[53]; // weak extern char aGds_nc_itemd_0[58]; // weak extern char aGds_nc_itemdb_[43]; // weak extern char asc_6D030C[56]; // weak extern char asc_6D0344[53]; // weak extern char asc_6D037C[60]; // weak extern char asc_6D03B8[78]; // weak extern char asc_6D0408[79]; // weak extern char asc_6D0458[63]; // weak extern char asc_6D0498[60]; // weak extern char asc_6D04D8[84]; // weak extern char asc_6D0530[70]; // weak extern char asc_6D0578[66]; // weak extern char asc_6D05BC[53]; // weak extern char asc_6D05F4[60]; // weak extern char asc_6D0630[78]; // weak extern char asc_6D0680[79]; // weak extern char asc_6D06D0[63]; // weak extern char asc_6D0710[60]; // weak extern char asc_6D0750[79]; // weak extern char asc_6D07A0[70]; // weak extern char asc_6D07E8[66]; // weak extern char asc_6D082C[49]; // weak extern char aEqu3dI64u_40s[]; // idb extern char aInv3dI64u_40s[]; // idb extern char asc_6D08A0[49]; // weak extern char asc_6D08D8[105]; // weak extern char asc_6D0948[125]; // weak extern char asc_6D09C8[99]; // weak extern char asc_6D0A30[94]; // weak extern char asc_6D0A90[81]; // weak extern char asc_6D0AE8[69]; // weak extern char asc_6D0B30[57]; // weak extern char asc_6D0B70[75]; // weak extern char asc_6D0BBC[60]; // weak extern char asc_6D0BF8[57]; // weak extern char asc_6D0C38[90]; // weak extern char asc_6D0C98[72]; // weak extern char aGds_nc_itemd_1[53]; // weak extern char asc_6D0D18[77]; // weak extern char asc_6D0D68[59]; // weak extern char asc_6D0DA8[82]; // weak extern char asc_6D0E00[84]; // weak extern char asc_6D0E58[67]; // weak extern char asc_6D0EA0[68]; // weak extern char asc_6D0EE8[83]; // weak extern char asc_6D0F40[65]; // weak extern char asc_6D0F84[50]; // weak extern char asc_6D0FB8[86]; // weak extern char asc_6D1010[77]; // weak extern char asc_6D1060[78]; // weak extern char asc_6D10B0[78]; // weak extern char asc_6D1100[60]; // weak extern char aShineplayer_54[86]; // weak extern char aShineplayer_53[94]; // weak extern char aShineplayer_52[71]; // weak extern char asc_6D1240[86]; // weak extern char asc_6D1298[99]; // weak extern char asc_6D1300[91]; // weak extern char asc_6D1360[73]; // weak extern char asc_6D13B0[100]; // weak extern char aShineplayer_55[79]; // weak extern char asc_6D1468[103]; // weak extern char asc_6D14D0[104]; // weak extern char asc_6D1538[103]; // weak extern char asc_6D15A0[99]; // weak extern char asc_6D1608[98]; // weak extern char asc_6D1670[96]; // weak extern char asc_6D16D0[79]; // weak extern char asc_6D1720[82]; // weak extern char asc_6D1778[88]; // weak extern char asc_6D17D0[77]; // weak extern char asc_6D1820[82]; // weak extern char asc_6D1878[64]; // weak extern char asc_6D18B8[72]; // weak extern char asc_6D1900[81]; // weak extern char asc_6D1958[72]; // weak extern char asc_6D19A0[75]; // weak extern char asc_6D19EC[57]; // weak extern char asc_6D1A28[78]; // weak extern char asc_6D1A78[47]; // weak extern char asc_6D1AA8[44]; // weak extern char asc_6D1AD8[77]; // weak extern char asc_6D1B28[91]; // weak extern char asc_6D1B88[78]; // weak extern char asc_6D1BD8[73]; // weak extern char asc_6D1C28[86]; // weak extern char asc_6D1C80[59]; // weak extern char asc_6D1CC0[72]; // weak extern char asc_6D1D08[54]; // weak extern char asc_6D1D40[79]; // weak extern char aItemsmallbag_1[41]; // weak extern char asc_6D1DC0[66]; // weak extern char asc_6D1E08[84]; // weak extern char asc_6D1E60[66]; // weak extern char asc_6D1EA8[66]; // weak extern char asc_6D1EEC[48]; // weak extern char aLimitrandomopt[18]; // weak extern char asc_6D1F30[98]; // weak extern char asc_6D1F98[92]; // weak extern char asc_6D1FF8[85]; // weak extern char asc_6D2050[84]; // weak extern char asc_6D20A8[84]; // weak extern char asc_6D2100[66]; // weak extern char aMixminupgrade[14]; // weak extern char aAddmixitem[11]; // weak extern char asc_6D2160[55]; // weak extern char asc_6D2198[80]; // weak extern char asc_6D21E8[93]; // weak extern char asc_6D2248[62]; // weak extern char asc_6D2288[83]; // weak extern char asc_6D22E0[65]; // weak extern char asc_6D2328[69]; // weak extern char aGds_nc_itemd_2[51]; // weak extern char aInventorylo_66[80]; // weak extern char asc_6D23F8[63]; // weak extern char aInventorylo_65[73]; // weak extern char aInventorylo_64[77]; // weak extern char aInventorylo_63[80]; // weak extern char aInventorylo_62[80]; // weak extern char aInventorylo_61[78]; // weak extern char asc_6D25C8[49]; // weak extern char aGds_nc_itemd_3[54]; // weak extern char aInventorylo_67[83]; // weak extern char asc_6D2690[96]; // weak extern char asc_6D26F0[67]; // weak extern char asc_6D2738[73]; // weak extern char asc_6D2788[73]; // weak extern char asc_6D27D4[52]; // weak extern char aInventorylo_68[83]; // weak extern char asc_6D285C[56]; // weak extern char asc_6D2898[68]; // weak extern char aIteminventor_0[43]; // weak extern char aIteminventoryI[25]; // weak extern char aIteminventor_2[43]; // weak extern char aIteminventor_1[25]; // weak extern char aIteminventor_3[26]; // weak extern char aIteminventor_4[26]; // weak extern char asc_6D29A8[71]; // weak extern char asc_6D29F0[65]; // weak extern char asc_6D2A38[78]; // weak extern char asc_6D2A88[93]; // weak extern char asc_6D2AE8[50]; // weak extern char asc_6D2B1C[46]; // weak extern char asc_6D2B4C[43]; // weak extern char asc_6D2B78[46]; // weak extern char asc_6D2BA8[43]; // weak extern char asc_6D2BD4[41]; // weak extern char asc_6D2C00[58]; // weak extern char asc_6D2C40[91]; // weak extern char asc_6D2C9C[58]; // weak extern char asc_6D2CD8[91]; // weak extern char asc_6D2D34[44]; // weak extern char aIteminvento_10[52]; // weak extern char aIteminventor_9[53]; // weak extern char aIteminventor_8[50]; // weak extern char aIteminventor_7[49]; // weak extern char aIteminventor_6[51]; // weak extern char aIteminventor_5[34]; // weak extern char asc_6D2EE8[76]; // weak extern char asc_6D2F38[73]; // weak extern char asc_6D2F88[70]; // weak extern char asc_6D2FD0[84]; // weak extern char asc_6D3028[64]; // weak extern char asc_6D3068[70]; // weak extern char asc_6D30B0[89]; // weak extern char asc_6D310C[52]; // weak extern char asc_6D3140[64]; // weak extern char asc_6D3180[51]; // weak extern char asc_6D31B4[48]; // weak extern char asc_6D31E4[49]; // weak extern char asc_6D3218[47]; // weak extern char asc_6D3248[75]; // weak extern char asc_6D3294[47]; // weak extern char asc_6D32C4[41]; // weak extern char asc_6D32F0[50]; // weak extern char asc_6D3328[64]; // weak extern char aDropitemgroups[66]; // weak extern char asc_6D33AC[47]; // weak extern char asc_6D33DC[45]; // weak extern char aUseeffectUse_0[60]; // weak extern char asc_6D3448[42]; // weak extern char asc_6D3474[43]; // weak extern char asc_6D34A0[44]; // weak extern char asc_6D34CC[45]; // weak extern char aItemdismantlep[45]; // weak extern char aItemdismantl_4[46]; // weak extern char aItemdismantl_2[60]; // weak extern char aItemdismantl_1[60]; // weak extern char aItemdismantl_0[45]; // weak extern char aItemdismantl_3[41]; // weak extern char asc_6D3630[79]; // weak extern char asc_6D3680[56]; // weak extern char asc_6D36B8[46]; // weak extern char asc_6D36E8[43]; // weak extern char asc_6D3714[52]; // weak extern char aIteminvento_14[44]; // weak extern char aIteminvento_13[26]; // weak extern char aIteminvento_17[44]; // weak extern char aIteminvento_16[49]; // weak extern char aIteminvento_15[26]; // weak extern char asc_6D3810[76]; // weak extern char asc_6D3860[64]; // weak extern char asc_6D38A0[51]; // weak extern char asc_6D38D4[60]; // weak extern char asc_6D3910[54]; // weak extern char asc_6D3948[60]; // weak extern char asc_6D3984[43]; // weak extern char asc_6D39B0[60]; // weak extern char asc_6D39F0[67]; // weak extern char asc_6D3A34[45]; // weak extern char asc_6D3A64[44]; // weak extern char asc_6D3A90[44]; // weak extern char asc_6D3ABC[45]; // weak extern char asc_6D3AEC[45]; // weak extern char asc_6D3B20[70]; // weak extern char asc_6D3B68[78]; // weak extern char asc_6D3BB8[65]; // weak extern char asc_6D3BFC[52]; // weak extern char asc_6D3C30[84]; // weak extern char asc_6D3C88[80]; // weak extern char asc_6D3CD8[70]; // weak extern char asc_6D3D20[69]; // weak extern char asc_6D3D68[56]; // weak extern char asc_6D3DA0[45]; // weak extern char asc_6D3DD0[42]; // weak extern char asc_6D3DFC[43]; // weak extern char aShineplayer_56[54]; // weak extern char asc_6D3E60[86]; // weak extern char asc_6D3EB8[87]; // weak extern char asc_6D3F10[92]; // weak extern char asc_6D3F70[88]; // weak extern char asc_6D3FC8[74]; // weak extern char asc_6D4018[73]; // weak extern char asc_6D4064[60]; // weak extern int (__thiscall *off_6D40A4)(void *, char); // weak extern int (__stdcall *off_6D40C8)(int, int); // weak extern int (__stdcall *off_6D40D0)(int, int); // weak extern int (__thiscall *off_6D40D8)(void *, char); // weak extern char asc_6D40F8[65]; // weak extern char asc_6D4140[67]; // weak extern char asc_6D4188[68]; // weak extern char asc_6D41CC[43]; // weak extern char asc_6D41F8[54]; // weak extern char asc_6D4230[51]; // weak extern char asc_6D4264[52]; // weak extern char asc_6D4298[42]; // weak extern char asc_6D42C4[39]; // weak extern char asc_6D42EC[40]; // weak extern char asc_6D4314[53]; // weak extern char asc_6D434C[52]; // weak extern char asc_6D4380[60]; // weak extern char aShinedropitemS[58]; // weak extern char aShinedropite_3[49]; // weak extern char aIteminvento_19[44]; // weak extern char aIteminvento_18[26]; // weak extern char aIteminvento_21[46]; // weak extern char aIteminvento_20[28]; // weak extern char asc_6D44C0[72]; // weak extern char asc_6D4508[68]; // weak extern char aShineplayer_58[66]; // weak extern char aShineplayer_57[61]; // weak extern char asc_6D45D4[54]; // weak extern char asc_6D460C[53]; // weak extern char asc_6D4648[72]; // weak extern char asc_6D4690[49]; // weak extern char asc_6D46C8[68]; // weak extern char asc_6D470C[50]; // weak extern char asc_6D4740[68]; // weak extern char asc_6D4784[50]; // weak extern char asc_6D47B8[44]; // weak extern char asc_6D47E4[45]; // weak extern char asc_6D4814[46]; // weak extern char asc_6D4844[47]; // weak extern char asc_6D4874[46]; // weak extern char asc_6D48A4[47]; // weak extern char asc_6D48D4[50]; // weak extern char asc_6D4908[51]; // weak extern char asc_6D4940[67]; // weak extern char asc_6D4984[53]; // weak extern char asc_6D49C0[70]; // weak extern char asc_6D4A08[80]; // weak extern char asc_6D4A58[91]; // weak extern char asc_6D4AB4[51]; // weak extern char asc_6D4AE8[71]; // weak extern char aShinedropite_1[65]; // weak extern char aShinedropite_0[60]; // weak extern char asc_6D4BB0[53]; // weak extern char aShinedropite_2[62]; // weak extern char asc_6D4C28[51]; // weak extern char aItemrelocati_1[50]; // weak extern char aItemrelocati_0[52]; // weak extern char aItemrelocation[32]; // weak extern char aItemrelocati_4[54]; // weak extern char aItemrelocati_3[56]; // weak extern char aItemrelocati_2[36]; // weak extern char aItemrelocati_6[51]; // weak extern char aItemrelocati_5[33]; // weak extern char aItemrelocati_9[59]; // weak extern char aItemrelocati_8[57]; // weak extern char aItemrelocati_7[41]; // weak extern char asc_6D4E74[45]; // weak extern char asc_6D4EA4[59]; // weak extern char asc_6D4EE0[42]; // weak extern char asc_6D4F0C[60]; // weak extern char asc_6D4F48[43]; // weak extern char asc_6D4F74[48]; // weak extern char asc_6D4FA4[62]; // weak extern char asc_6D4FE4[45]; // weak extern char asc_6D5014[63]; // weak extern char asc_6D5054[46]; // weak extern char aMergeError[14]; // weak extern char asc_6D5094[45]; // weak extern char asc_6D50C4[59]; // weak extern char asc_6D5100[42]; // weak extern char asc_6D512C[60]; // weak extern char asc_6D5168[43]; // weak extern char aSplitmergeErro[18]; // weak extern char asc_6D51A8[3]; // weak extern char asc_6D51AC[53]; // weak extern char asc_6D51E4[50]; // weak extern char asc_6D5218[51]; // weak extern char asc_6D5250[72]; // weak extern char asc_6D5298[54]; // weak extern char asc_6D52D0[41]; // weak extern char asc_6D5300[67]; // weak extern char asc_6D5344[52]; // weak extern char asc_6D5378[49]; // weak extern char asc_6D53B0[73]; // weak extern char asc_6D53FC[55]; // weak extern char asc_6D5434[53]; // weak extern char asc_6D546C[50]; // weak extern char asc_6D54A0[56]; // weak extern char asc_6D54D8[49]; // weak extern char asc_6D550C[54]; // weak extern char asc_6D5548[70]; // weak extern char asc_6D5590[55]; // weak extern char asc_6D55C8[54]; // weak extern char asc_6D5600[70]; // weak extern char asc_6D5648[52]; // weak extern char aInvalidFurni_0[28]; // weak extern char asc_6D5698[79]; // weak extern char aPortal[]; // idb extern char aMinigame[]; // idb extern char aTileall[]; // idb extern char aAccessory[]; // idb extern char aPlayer_0[9]; // weak extern char aInvalidFurnitu[26]; // weak extern char aFurniture[]; // idb extern char aInvalidShinepl[26]; // weak extern char asc_6D5760[61]; // weak extern char asc_6D57A0[48]; // weak extern char aNpcrole_stor_1[49]; // weak extern char asc_6D5804[49]; // weak extern char asc_6D5838[69]; // weak extern char asc_6D5880[57]; // weak extern char asc_6D58C0[76]; // weak extern char asc_6D5910[77]; // weak extern char asc_6D5960[74]; // weak extern char asc_6D59AC[52]; // weak extern char asc_6D59E0[87]; // weak extern char asc_6D5A38[69]; // weak extern char asc_6D5A80[80]; // weak extern char asc_6D5AD0[65]; // weak extern char asc_6D5B14[62]; // weak extern char aShineplayer_59[54]; // weak extern char asc_6D5B8C[62]; // weak extern char aShineplayer_60[58]; // weak extern char aShineplayer_61[61]; // weak extern char aIteminvento_23[50]; // weak extern char aIteminvento_22[32]; // weak extern char aIteminvento_25[50]; // weak extern char aIteminvento_24[32]; // weak extern char asc_6D5CF0[51]; // weak extern char asc_6D5D24[48]; // weak extern char asc_6D5D54[51]; // weak extern char asc_6D5D88[48]; // weak extern char asc_6D5DB8[78]; // weak extern char asc_6D5E08[81]; // weak extern char asc_6D5E60[72]; // weak extern char asc_6D5EA8[57]; // weak extern char aIteminvento_27[44]; // weak extern char aIteminvento_26[26]; // weak extern char aIteminvento_30[44]; // weak extern char aIteminvento_29[40]; // weak extern char aIteminvento_28[26]; // weak extern char asc_6D5FA0[95]; // weak extern char asc_6D6000[79]; // weak extern char asc_6D6050[64]; // weak extern char asc_6D6090[51]; // weak extern char asc_6D60C4[47]; // weak extern char asc_6D60F4[44]; // weak extern char asc_6D6120[47]; // weak extern char asc_6D6150[44]; // weak extern char asc_6D617C[42]; // weak extern char aSplitError[14]; // weak extern char asc_6D61B8[45]; // weak extern char asc_6D61E8[42]; // weak extern char asc_6D6214[43]; // weak extern char asc_6D6240[76]; // weak extern char asc_6D6290[74]; // weak extern char asc_6D62E0[70]; // weak extern char asc_6D6328[77]; // weak extern char asc_6D6378[72]; // weak extern char asc_6D63C0[74]; // weak extern char asc_6D640C[52]; // weak extern char asc_6D6440[51]; // weak extern char byte_6D6474[]; // weak extern char asc_6D6480[72]; // weak extern char asc_6D64C8[87]; // weak extern char asc_6D6520[81]; // weak extern char asc_6D6578[67]; // weak extern char asc_6D65BC[54]; // weak extern char asc_6D65F4[45]; // weak extern char asc_6D6624[47]; // weak extern char asc_6D6654[44]; // weak extern char aItem_getupgrad[21]; // weak extern char aItem_isupsourc[16]; // weak extern char aItem_adjupgrad[21]; // weak extern char aItem_adjfailco[18]; // weak extern char asc_6D66D4[44]; // weak extern char asc_6D6700[59]; // weak extern char asc_6D673C[41]; // weak extern char asc_6D6768[48]; // weak extern char asc_6D6798[63]; // weak extern char asc_6D67D8[45]; // weak extern char asc_6D6808[53]; // weak extern char asc_6D6840[68]; // weak extern char asc_6D6884[50]; // weak extern char aItem_forcedupg[19]; // weak extern char aBr_upsorce04[13]; // weak extern char aBr_upsorce03[13]; // weak extern char aBr_upsorce02[13]; // weak extern char aBr_upsorce01[13]; // weak extern char aItem_upgradeNo[42]; // weak extern char aItem_upgradeTa[24]; // weak extern char asc_6D6DC8[64]; // weak extern char asc_6D6E08[81]; // weak extern char aShineobjectSo_[34]; // weak extern char asc_6D6E80[55]; // weak extern char asc_6D6EB8[37]; // weak extern char asc_6D6EE0[55]; // weak extern char asc_6D6F18[52]; // weak extern char asc_6D6F50[74]; // weak extern char asc_6D6F9C[47]; // weak extern char aUseeffectUse_2[59]; // weak extern char aUseeffectUse_1[44]; // weak extern char asc_6D7038[68]; // weak extern char aUseeffectUse_5[51]; // weak extern char aUseeffectUse_4[55]; // weak extern char aUseeffectUse_3[40]; // weak extern char asc_6D7110[74]; // weak extern char asc_6D715C[63]; // weak extern char asc_6D719C[50]; // weak extern char aRoarNull[11]; // weak extern char aRoarNullReturn[18]; // weak extern char asc_6D71F0[57]; // weak extern char aShineplayer_69[68]; // weak extern char aNc_item_use_ac[28]; // weak extern char aShineplayer_68[69]; // weak extern char aShineplayer_67[62]; // weak extern char aShineplayer_66[57]; // weak extern char aShineplayer_65[61]; // weak extern char aShineplayer_64[68]; // weak extern char aShineplayer_63[57]; // weak extern char aShineplayer_62[44]; // weak extern char asc_6D7448[74]; // weak extern char asc_6D7498[67]; // weak extern char asc_6D74DC[63]; // weak extern char asc_6D751C[50]; // weak extern char asc_6D7550[61]; // weak extern char aB[5]; // weak extern char asc_6D7598[64]; // weak extern char a010u010u010u[]; // idb extern char asc_6D75E8[63]; // weak extern char aCannotOutMinih[23]; // weak extern char aItemident[]; // idb extern char asc_6D7650[69]; // weak extern char asc_6D7698[90]; // weak extern char aCannotFindPlay[27]; // weak extern char asc_6D7710[52]; // weak extern char asc_6D7748[71]; // weak extern char asc_6D7790[49]; // weak extern char aFurniture_areD[]; // idb extern char asc_6D77D8[57]; // weak extern char asc_6D7814[46]; // weak extern char asc_6D7844[44]; // weak extern char asc_6D7870[48]; // weak extern char asc_6D78A0[54]; // weak extern char asc_6D78D8[55]; // weak extern char asc_6D7910[54]; // weak extern char asc_6D7948[60]; // weak extern char asc_6D7984[51]; // weak extern char asc_6D79B8[58]; // weak extern char asc_6D79F4[52]; // weak extern char asc_6D7A28[55]; // weak extern char asc_6D7A60[56]; // weak extern char asc_6D7A98[59]; // weak extern char asc_6D7AE4[56]; // weak extern char asc_6D7B1C[56]; // weak extern char asc_6D7B54[59]; // weak extern char asc_6D7BA0[74]; // weak extern char asc_6D7BEC[56]; // weak extern char asc_6D7C28[66]; // weak extern char asc_6D7C70[69]; // weak extern char asc_6D7CB8[54]; // weak extern char asc_6D7CF0[50]; // weak extern char asc_6D7D24[51]; // weak extern char asc_6D7D58[52]; // weak extern char asc_6D7D8C[58]; // weak extern char asc_6D7DC8[55]; // weak extern char asc_6D7E00[53]; // weak extern char asc_6D7E38[55]; // weak extern char asc_6D7E70[58]; // weak extern char asc_6D7EB0[66]; // weak extern char asc_6D7EF4[58]; // weak extern int (__stdcall *off_6D7F34)(int, int, int); // weak extern int (__stdcall *off_6D7F7C)(int); // weak extern char aTooManyBroadca[24]; // weak extern int (__stdcall *off_6D7FAC)(int, int, int); // weak extern char asc_6D7FF0[53]; // weak extern char asc_6D8028[45]; // weak extern char aErrorInKeepfro[22]; // weak extern char aSuccessToSilen[19]; // weak extern char asc_6D8084[53]; // weak extern char aListWrong[11]; // weak extern char asc_6D80C8[75]; // weak extern int (__stdcall *off_6D8118)(int, int, int); // weak extern char aMobcandamageto[15]; // weak extern int (__thiscall *off_6D8130)(void *, char); // weak extern int (__thiscall *off_6D8154)(void *, char); // weak extern int (__stdcall *off_6D8178)(int, int); // weak extern int (__stdcall *off_6D8180)(int, int); // weak extern int (__stdcall *off_6D8188)(int); // weak extern char aPacketcontai_2[31]; // weak extern char aPacketcontai_0[27]; // weak extern int (__stdcall *off_6D81D8)(int); // weak extern char aSlantedcoord_2[56]; // weak extern char aSlantedcoord_1[55]; // weak extern char aSlantedcoord_0[55]; // weak extern char aDamagelog[10]; // weak extern char asc_6D8290[64]; // weak extern char asc_6D82D0[70]; // weak extern char asc_6D8318[56]; // idb extern char asc_6D835C[41]; // weak extern char asc_6D8388[44]; // weak extern char asc_6D83B4[44]; // weak extern char asc_6D83E0[52]; // weak extern char asc_6D8414[52]; // weak extern char aAllinmap1[10]; // weak extern char aTooManyLoop[14]; // weak extern char asc_6D8464[47]; // weak extern char aAllinmap0[]; // idb extern char asc_6D84A0[45]; // weak extern char aUnlinkedObject[]; // idb extern char asc_6D84E0[49]; // weak extern char aAllinmap3[10]; // weak extern char aAllinmap2[]; // idb extern char asc_6D852C[49]; // weak extern char asc_6D8560[52]; // weak extern char aSo_allofrang_2[]; // idb extern char asc_6D85A8[52]; // weak extern char aSo_allofrang_1[]; // idb extern char asc_6D85F0[52]; // weak extern char aSo_allofrang_0[]; // idb extern char asc_6D8638[52]; // weak extern char aSo_allofrangen[]; // idb extern char asc_6D8680[50]; // weak extern char asc_6D86B4[57]; // weak extern char aSo_allofrang_6[]; // idb extern char aSo_allofrang_5[]; // idb extern char aSo_allofrang_4[]; // idb extern char aSo_allofrang_3[]; // idb extern char asc_6D8740[56]; // weak extern char asc_6D8778[43]; // weak extern int (__stdcall *off_6D87AC)(int, int, int); // weak extern char asc_6D87F0[48]; // weak extern char asc_6D8820[54]; // weak extern char asc_6D8858[54]; // weak extern char asc_6D8890[50]; // weak extern char asc_6D88C8[66]; // weak extern char asc_6D890C[49]; // weak extern char asc_6D8940[67]; // weak extern char asc_6D8984[49]; // weak extern char aInvalidProtoco[17]; // weak extern char aDD_0[]; // idb extern char asc_6D89D4[48]; // weak extern char asc_6D8A04[47]; // weak extern char asc_6D8A34[48]; // weak extern char asc_6D8A64[56]; // weak extern char asc_6D8A9C[50]; // weak extern char aCharSo_disconn[20]; // weak extern char asc_6D8AE4[63]; // weak extern char asc_6D8B24[45]; // weak extern char asc_6D8B54[45]; // weak extern char aListnoCount[16]; // weak extern char aShineobjecte_0[48]; // weak extern char aShineobjecteac[34]; // weak extern int (__thiscall *off_6D8BEC)(void *, char); // weak extern char aShineobjectman[42]; // weak extern char aShineobjectm_0[34]; // weak extern char aShineobjectlis[32]; // weak extern char aShineobjectm_1[36]; // weak extern int (__stdcall *off_6D8CA4)(int, int); // weak extern char aShinecharregnu[32]; // weak extern int (__stdcall *off_6D8CCC)(int, int); // weak extern char aShinecharidfin[28]; // weak extern int (__stdcall *off_6D8CF0)(int, int); // weak extern char aShinemobidfind[27]; // weak extern int (__stdcall *off_6D8D14)(int, int); // weak extern char aShineobjectm_2[35]; // weak extern char aShineobjectm_3[32]; // weak extern char aSlantedcoord_3[40]; // weak extern char asc_6D8D84[48]; // weak extern char asc_6D8DB4[52]; // weak extern char asc_6D8DE8[84]; // weak extern char asc_6D8E40[66]; // weak extern char asc_6D8E88[74]; // weak extern char asc_6D8ED8[73]; // weak extern char asc_6D8F24[55]; // weak extern char asc_6D8F60[76]; // weak extern char asc_6D8FAC[58]; // weak extern char asc_6D8FE8[69]; // weak extern char asc_6D9030[51]; // weak extern char asc_6D9064[59]; // weak extern char asc_6D90A0[52]; // weak extern char asc_6D90D8[70]; // weak extern char asc_6D9120[52]; // weak extern char asc_6D9158[70]; // weak extern char asc_6D91A0[59]; // weak extern char asc_6D91DC[53]; // weak extern char asc_6D9218[66]; // weak extern char asc_6D925C[62]; // weak extern char asc_6D92A0[77]; // weak extern char asc_6D92F0[59]; // weak extern char asc_6D932C[51]; // weak extern char asc_6D9360[58]; // weak extern char aIncorrectBit[15]; // weak extern char asc_6D93AC[6]; // weak extern char aRegistNumberIn[23]; // weak extern char byte_6D93CC[]; // weak extern char asc_6D93E0[58]; // weak extern char asc_6D941C[62]; // weak extern char asc_6D9460[69]; // weak extern char asc_6D94A8[51]; // weak extern char asc_6D94DC[59]; // weak extern char asc_6D9518[68]; // weak extern char asc_6D955C[50]; // weak extern char aProtocollogger[25]; // weak extern char aProtocollogg_0[25]; // weak extern char asc_6D95C8[47]; // weak extern char asc_6D95F8[54]; // weak extern char aListcheckstruc[26]; // weak extern char asc_6D964C[40]; // weak extern char asc_6D9674[37]; // weak extern char asc_6D969C[54]; // weak extern char asc_6D96D4[56]; // weak extern char asc_6D970C[60]; // weak extern char asc_6D9748[59]; // weak extern int (__stdcall *off_6D9788)(int, int); // weak extern char aSlantedcoordli[65]; // weak extern char asc_6D97D4[41]; // weak extern char asc_6D9800[56]; // weak extern char asc_6D9838[58]; // weak extern char asc_6D9874[53]; // weak extern char asc_6D98AC[53]; // weak extern char asc_6D98E4[61]; // weak extern char asc_6D9924[60]; // weak extern char aShineobjectl_4[64]; // weak extern char asc_6D99A0[52]; // weak extern char asc_6D99D8[64]; // weak extern int (*off_6D9A1C[4])(); // weak extern char asc_6DA8A8[48]; // weak extern char asc_6DA8D8[47]; // weak extern char asc_6DA908[43]; // weak extern char asc_6DA934[45]; // weak extern char asc_6DA964[52]; // weak extern int (*off_6DA99C)(); // weak extern int (*off_6DB82C)(); // weak extern int (*off_6DC6BC)(); // weak extern char asc_6DD61C[59]; // weak extern char asc_6DD658[85]; // weak extern int (*off_6DD6B4)(); // weak extern int (*off_6DE61C)(); // weak extern int (*off_6DF4AC)(); // weak extern int (__thiscall *off_6E033C)(void *, char); // weak extern int (*off_6E0364)(); // weak extern int (*off_6E11F4)(); // weak extern int (*off_6E2174)(); // weak extern int (*off_6E30F4)(); // weak extern int (*off_6E4074)(); // weak extern int (*off_6E4FF4)(); // weak extern char aShineobjectl_1[31]; // weak extern char aShineobjectl_0[63]; // weak extern char aShineobjectm_4[35]; // weak extern char asc_6E5FF0[73]; // weak extern char asc_6E603C[51]; // weak extern char asc_6E6070[68]; // weak extern char asc_6E60B4[61]; // weak extern char asc_6E60F4[50]; // weak extern char asc_6E6128[69]; // weak extern char asc_6E6170[70]; // weak extern char asc_6E61B8[59]; // weak extern char asc_6E61F4[41]; // weak extern void *off_6E6220; // weak extern char asc_6E6224[42]; // weak extern int (*off_6E6254)(); // weak extern char asc_6E71B4[50]; // weak extern char asc_6E71E8[39]; // weak extern char asc_6E7210[41]; // weak extern char asc_6E723C[41]; // weak extern char asc_6E7268[52]; // weak extern char asc_6E729C[52]; // weak extern char asc_6E72D0[63]; // weak extern char aVoidCharatersk[72]; // weak extern char aShineobjectl_3[55]; // weak extern char aShineobjectl_2[33]; // weak extern char a__largeobjectb[27]; // weak extern char aShineobjectm_5[35]; // weak extern char asc_6E73F4[30]; // weak extern char byte_6E7414[]; // weak extern char byte_6E7424[]; // weak extern char asc_6E7438[27]; // weak extern char asc_6E7454[28]; // weak extern char asc_6E7470[34]; // weak extern char asc_6E7494[33]; // weak extern char asc_6E74B8[27]; // weak extern char asc_6E74D4[30]; // weak extern char asc_6E74F4[31]; // weak extern char asc_6E7514[27]; // weak extern char byte_6E7530[]; // weak extern char byte_6E7540[]; // weak extern char asc_6E7550[60]; // weak extern char aShinepetSpt__0[60]; // weak extern char aShinepetSpt_su[43]; // weak extern char aShinemobileo_0[36]; // weak extern char aShineobjectShi[53]; // weak extern char aShineobjectS_0[44]; // weak extern char asc_6E767C[45]; // weak extern char aShinemobileo_3[56]; // weak extern char aShinemobileo_2[56]; // weak extern char aShinemobileo_1[40]; // weak extern char asc_6E7744[36]; // weak extern int (__stdcall *off_6E776C)(int, int, int); // weak extern char asc_6E7770[24]; // weak extern char aAxiallistdeath[29]; // weak extern char asc_6E77A8[44]; // weak extern char asc_6E77D4[43]; // weak extern char asc_6E7800[45]; // weak extern char aG[]; // idb extern char aLg[]; // idb extern int (*off_6E783C)(); // weak extern char aShinemoverSo_3[43]; // weak extern char aShinemoverSo_2[42]; // weak extern char aShinemoverSo_4[53]; // weak extern char aShinemoverSo_7[41]; // weak extern char aShinemoverSo_5[55]; // weak extern char aSo_smv_ismov_1[48]; // weak extern char aSo_smv_ismov_0[43]; // weak extern char aSo_smv_ismover[40]; // weak extern char asc_6E8914[29]; // weak extern char aShineplayer_70[46]; // weak extern char asc_6E8968[79]; // weak extern char aShineplayer_74[60]; // weak extern char asc_6E89F8[72]; // weak extern char aShineplayer_71[48]; // weak extern char aShineplayer_72[48]; // weak extern char aRout[]; // idb extern char asc_6E8AA8[67]; // weak extern char asc_6E8AF0[77]; // weak extern char aShineplayer_73[64]; // weak extern char asc_6E8B80[89]; // weak extern char asc_6E8BE0[71]; // weak extern char asc_6E8C28[75]; // weak extern char aShineplayer_75[49]; // weak extern char aShineplayer_77[55]; // weak extern char aShineplayer_76[53]; // weak extern char aShineplayer_78[64]; // weak extern char asc_6E8D58[63]; // weak extern char aShineplayer_79[57]; // weak extern char asc_6E8DD4[59]; // weak extern char aShineobjecrcla[35]; // weak extern char asc_6E8E34[56]; // weak extern char asc_6E8E70[69]; // weak extern char aShineplayer_80[60]; // weak extern char asc_6E8EF4[52]; // weak extern char aShineplayer_81[67]; // weak extern char asc_6E8F6C[57]; // weak extern char aShineplayer_83[55]; // weak extern char aShineplayer_82[37]; // weak extern char aShineplayer_84[60]; // weak extern char aShineplayer_85[63]; // weak extern char aShineplayer_86[57]; // weak extern char asc_6E90C0[77]; // weak extern char asc_6E9110[78]; // weak extern char asc_6E9160[78]; // weak extern char asc_6E91B0[79]; // weak extern char asc_6E9200[64]; // weak extern char aSo_ply_chatcol[48]; // weak extern char asc_6E9270[57]; // weak extern char aShineplayer_89[67]; // weak extern char aShineplayer_88[53]; // weak extern char aShineplayer_87[39]; // weak extern char aDmg_minusarea[14]; // weak extern char asc_6E9364[46]; // weak extern char aShineplayer_91[56]; // weak extern char aShineplayer_90[55]; // weak extern char aMysteryboltt_1[33]; // weak extern char aMysteryboltt_0[35]; // weak extern char aMysterybolttab[52]; // weak extern char aShineplayer_94[65]; // weak extern char aShineplayer_93[65]; // weak extern char aShineplayer_92[82]; // weak extern char aShineplayer[12]; // weak extern int (__stdcall *off_6E9574)(int, int, int); // weak extern int (__stdcall *off_6E9584)(int, int, int); // weak extern int (__stdcall *off_6E9594)(int, int, int); // weak extern char aCharSo_ply_ban[35]; // weak extern char asc_6E95C0[70]; // weak extern char asc_6E9608[5]; // weak extern char aPP[]; // idb extern char aSlantedlistnor[46]; // weak extern char asc_6E9648[60]; // weak extern char asc_6E9688[97]; // weak extern char asc_6E96F0[72]; // weak extern char asc_6E9738[52]; // weak extern char asc_6E9770[66]; // weak extern char aFm_isinfieldsi[24]; // weak extern char asc_6E97CC[40]; // weak extern char aMinihouseErr_0[]; // idb extern char aMsg[4]; // weak extern char aS_1[]; // idb extern char aMinihouseError[]; // idb extern char asc_6E9878[63]; // weak extern char aIsrepair[12]; // weak extern char aEnduregrade[15]; // weak extern char aFurniturehnd[16]; // weak extern char aFurnitureEndur[21]; // weak extern char aFm_isinfield_0[29]; // weak extern char asc_6E991C[45]; // weak extern char asc_6E994C[51]; // weak extern char aAxiallistmag_0[45]; // weak extern char aAxiallistmagic[44]; // weak extern char aAxiallistmag_1[45]; // weak extern char aAxiallistrescu[33]; // weak extern char asc_6E9A30[64]; // weak extern char asc_6E9A70[45]; // weak extern char asc_6E9AA0[44]; // weak extern char asc_6E9ACC[55]; // weak extern char asc_6E9B04[48]; // weak extern char asc_6E9B34[59]; // weak extern char asc_6E9B70[45]; // weak extern char asc_6E9BA0[58]; // weak extern char asc_6E9BE0[73]; // weak extern char asc_6E9C2C[55]; // weak extern char asc_6E9C64[51]; // weak extern char asc_6E9C98[53]; // weak extern char asc_6E9CD0[60]; // weak extern char asc_6E9D0C[55]; // weak extern char asc_6E9D44[50]; // weak extern char asc_6E9D78[54]; // weak extern char asc_6E9DB0[45]; // weak extern char aFm_isinfield_1[26]; // weak extern char asc_6E9DFC[48]; // weak extern char asc_6E9E2C[48]; // weak extern char aFm_isinfield_2[23]; // weak extern char asc_6E9E78[66]; // weak extern char asc_6E9EBC[39]; // weak extern char asc_6E9EE8[70]; // weak extern char asc_6E9F30[44]; // weak extern char asc_6E9F5C[41]; // weak extern char asc_6E9F88[64]; // weak extern char asc_6E9FC8[53]; // weak extern char asc_6EA000[45]; // weak extern char asc_6EA030[61]; // weak extern char aFm_isinfield_3[23]; // weak extern char asc_6EA088[39]; // weak extern char asc_6EA0B0[43]; // weak extern char asc_6EA0DC[39]; // weak extern char aFm_isinfield_4[26]; // weak extern char asc_6EA120[42]; // weak extern char aCharAsWriteFai[20]; // weak extern char aCharAsAbnormal[25]; // weak extern char aFm_isinfield_5[26]; // weak extern char asc_6EA198[42]; // weak extern char aAxiallistmag_4[73]; // weak extern char aAxiallistmag_3[62]; // weak extern char aAxiallistmag_2[67]; // weak extern char asc_6EA29C[46]; // weak extern char byte_6EA2CC[]; // weak extern char asc_6EA2E0[65]; // weak extern char asc_6EA324[47]; // weak extern char asc_6EA358[65]; // weak extern char asc_6EA39C[47]; // weak extern char asc_6EA3D0[65]; // weak extern char asc_6EA414[47]; // weak extern char asc_6EA448[64]; // weak extern char asc_6EA488[46]; // weak extern char asc_6EA4B8[59]; // weak extern char asc_6EA4F4[56]; // weak extern char asc_6EA52C[55]; // weak extern char asc_6EA564[57]; // weak extern char asc_6EA5A0[52]; // weak extern char asc_6EA5D4[52]; // weak extern char asc_6EA608[77]; // weak extern char asc_6EA658[59]; // weak extern char asc_6EA698[64]; // weak extern char asc_6EA6D8[58]; // weak extern char a_IgnoreMinihou[42]; // weak extern char aCannotFindPl_0[21]; // weak extern char a_IgnoreMinih_0[41]; // weak extern char a_IgnoreMinih_1[41]; // weak extern char a_IgnoreMinih_2[44]; // weak extern char a_IgnoreMinih_3[37]; // weak extern char asc_6EA808[64]; // weak extern char asc_6EA848[79]; // weak extern char aPortalCountErr[24]; // weak extern char asc_6EA8B0[75]; // weak extern char aDbError[14]; // weak extern char aNotOwner[14]; // weak extern char aNotFoundMh[17]; // weak extern char aNotActiveMh[18]; // weak extern char aPlayerRegnum[15]; // weak extern char asc_6EA958[71]; // weak extern char asc_6EA9A0[56]; // weak extern char aDoesNotGetTheM[29]; // weak extern char aDoesNotInTheMi[28]; // weak extern char aDoesNotActiveT[32]; // weak extern char aCannotOutMin_0[21]; // weak extern char aDequeTTooLong[18]; // weak extern char asc_6EAA60[53]; // weak extern char asc_6EAA98[92]; // weak extern char asc_6EAAF4[50]; // weak extern char asc_6EAB28[81]; // weak extern char asc_6EAB7C[63]; // weak extern char asc_6EABC0[74]; // weak extern char asc_6EAC10[98]; // weak extern char asc_6EAC78[109]; // weak extern char asc_6EACE8[87]; // weak extern char asc_6EAD40[80]; // weak extern char asc_6EAD90[62]; // weak extern char aCannotEnterMin[23]; // weak extern char asc_6EADE8[57]; // weak extern char asc_6EAE38[83]; // weak extern char asc_6EAE90[65]; // weak extern char asc_6EAED8[72]; // weak extern char asc_6EAF20[56]; // weak extern char asc_6EAF58[68]; // weak extern char asc_6EAF9C[61]; // weak extern char asc_6EAFE0[68]; // weak extern char asc_6EB028[64]; // weak extern char asc_6EB068[67]; // weak extern char asc_6EB0B0[66]; // weak extern char asc_6EB0F8[73]; // weak extern char asc_6EB148[65]; // weak extern char asc_6EB198[63]; // weak extern char asc_6EB1D8[64]; // weak extern char asc_6EB218[83]; // weak extern char asc_6EB270[65]; // weak extern char asc_6EB2B8[73]; // weak extern char asc_6EB304[55]; // weak extern char asc_6EB340[81]; // weak extern char asc_6EB394[63]; // weak extern char asc_6EB3D8[86]; // weak extern char asc_6EB430[67]; // weak extern char asc_6EB474[49]; // weak extern char asc_6EB4A8[77]; // weak extern char asc_6EB4F8[55]; // weak extern char asc_6EB530[87]; // weak extern char asc_6EB588[69]; // weak extern char asc_6EB5D0[94]; // weak extern char asc_6EB630[76]; // weak extern char aMh_innerinfoNu[19]; // weak extern char aSp_mh_innerinf[36]; // weak extern char asc_6EB6B4[49]; // weak extern char asc_6EB6E8[56]; // weak extern char asc_6EB720[69]; // weak extern char asc_6EB768[60]; // weak extern char asc_6EB7A8[78]; // weak extern char aMh_zoneDC[]; // idb extern char aMiniroomskill[14]; // weak extern char asc_6EB814[60]; // weak extern char aNormalattackda[63]; // weak extern char aNormalattack_0[72]; // weak extern char aNormalattack_1[62]; // weak extern char aNormalattack_2[60]; // weak extern char asc_6EB954[49]; // weak extern char asc_6EB988[49]; // weak extern char asc_6EB9BC[49]; // weak extern char aShinequestdiar[29]; // weak extern char asc_6EBA10[52]; // weak extern char asc_6EBA44[52]; // weak extern char asc_6EBA78[58]; // weak extern char asc_6EBAB4[44]; // weak extern char asc_6EBAE0[41]; // weak extern char asc_6EBB0C[43]; // weak extern char asc_6EBB38[55]; // weak extern char asc_6EBB70[68]; // weak extern char asc_6EBBB4[60]; // weak extern char asc_6EBBF0[72]; // weak extern char asc_6EBC38[94]; // weak extern char asc_6EBC98[53]; // weak extern char asc_6EBCD0[52]; // weak extern char aShineradianSr_[26]; // weak extern char aShinemobSmo_te[30]; // weak extern int (__stdcall *off_6EBD44)(int, int, int); // weak extern char aShineplayer_96[53]; // weak extern char aShineplayer_95[51]; // weak extern char aShineplayer_98[54]; // weak extern char aShineplayer_97[52]; // weak extern char aSmo_skillblast[15]; // weak extern char asc_6EBE38[57]; // weak extern char asc_6EBE74[50]; // weak extern char asc_6EBEA8[44]; // weak extern char asc_6EBED8[83]; // weak extern char asc_6EBF30[65]; // weak extern char aAxiallistnea_6[50]; // weak extern char aAxiallistnea_7[46]; // weak extern char aAxiallistnea_8[46]; // weak extern char asc_6EC008[69]; // weak extern char asc_6EC050[59]; // weak extern char asc_6EC08C[50]; // weak extern char asc_6EC0C0[41]; // weak extern char aAxiallistmag_5[43]; // weak extern char aAxiallistmag_6[44]; // weak extern char asc_6EC144[50]; // weak extern char asc_6EC178[53]; // weak extern char asc_6EC1B0[79]; // weak extern char asc_6EC200[68]; // weak extern char asc_6EC248[73]; // weak extern char asc_6EC294[55]; // weak extern char aSkilleraseNu_0[17]; // weak extern char aSkilleraseNull[24]; // weak extern char asc_6EC2F8[63]; // weak extern char asc_6EC338[38]; // weak extern char aCharaterski_36[31]; // weak extern char asc_6EC380[50]; // weak extern char aMobexplosion_5[51]; // weak extern char aMobexplosion_1[52]; // weak extern char aMobexplosion_2[53]; // weak extern char aMobexplosion_3[53]; // weak extern char aMobexplosion_4[56]; // weak extern char asc_6EC4C4[]; // idb extern char asc_6EC500[51]; // weak extern char asc_6EC534[51]; // weak extern char asc_6EC568[59]; // weak extern char asc_6EC5A8[65]; // weak extern char asc_6EC5EC[58]; // weak extern char asc_6EC628[58]; // weak extern char asc_6EC668[81]; // weak extern char asc_6EC6C0[80]; // weak extern char asc_6EC710[58]; // weak extern char asc_6EC74C[62]; // weak extern char aSmo_skillbash_[20]; // weak extern char asc_6EC7A0[62]; // weak extern char asc_6EC7E0[62]; // weak extern char asc_6EC820[44]; // weak extern char asc_6EC84C[48]; // weak extern char asc_6EC87C[48]; // weak extern int (__stdcall *off_6EC8B0)(int, int, int); // weak extern int (__stdcall *off_6EC8C0)(int, int, int); // weak extern int (__stdcall *off_6EC8D0)(int, int, int); // weak extern int (__stdcall *off_6EC8E0)(int, int, int); // weak extern int (__stdcall *off_6EC8F0)(int, int, int); // weak extern char asc_6EC900[73]; // weak extern char asc_6EC94C[62]; // weak extern char asc_6EC990[91]; // weak extern char asc_6EC9F0[83]; // weak extern char asc_6ECA48[69]; // weak extern char asc_6ECA90[50]; // weak extern char asc_6ECAC8[76]; // weak extern char asc_6ECB18[64]; // weak extern char aSp_nc_bat_skil[33]; // weak extern char asc_6ECB80[76]; // weak extern char asc_6ECBD0[64]; // weak extern char aSkilleffecta_6[55]; // weak extern char aSo_smv_skillba[24]; // weak extern char aShinemoverSo_6[48]; // weak extern char aBattleobject_3[65]; // weak extern char asc_6ECCD4[52]; // weak extern char aAxiallistsca_1[61]; // weak extern char aAxiallistsca_0[54]; // weak extern char aAxiallistscans[43]; // weak extern char aAxiallistsca_3[74]; // weak extern char aAxiallistsca_2[56]; // weak extern char asc_6ECE38[78]; // weak extern char asc_6ECE88[67]; // weak extern char asc_6ECED0[67]; // weak extern char aSkilleffecta_9[73]; // weak extern char aSkilleffecta_8[71]; // weak extern char aSkilleffecta_7[52]; // weak extern char aSkilleffect_11[73]; // weak extern char aSkilleffect_10[52]; // weak extern char aSkilldataind_2[67]; // weak extern char aSkilldataind_1[67]; // weak extern char aSkilldataind_0[32]; // weak extern char aSkilldataindex[70]; // weak extern char aPassivedatab_3[37]; // weak extern char aPassivedatab_2[53]; // weak extern int (__thiscall *off_6ED2E4)(void *, char); // weak extern int (__thiscall *off_6ED2EC)(void *, char); // weak extern int (__thiscall *off_6ED2F4)(void *, char); // weak extern int (__thiscall *off_6ED2FC)(void *, char); // weak extern int (__thiscall *off_6ED304)(void *, char); // weak extern int (__thiscall *off_6ED30C)(void *, char); // weak extern int (__thiscall *off_6ED314)(void *, char); // weak extern int (__thiscall *off_6ED31C)(void *, char); // weak extern char aPoweroflove01[14]; // weak extern char aPassivedatab_1[40]; // weak extern char aPassivedatab_0[25]; // weak extern char aPassivedatabox[48]; // weak extern char dataShine::a[]; // idb extern char a__9dataShin_63[]; // idb extern char aSkilldataboxGe[50]; // weak extern int (*off_6ED900[2])(); // weak extern int (*off_6ED90C[2])(); // weak extern int (*off_6ED918[2])(); // weak extern char aSlantedcoord_7[60]; // weak extern char aCoordednodeC_2[46]; // weak extern char aCoordednodeC_1[50]; // weak extern char aSlantedcoord_6[65]; // weak extern char aCoordednodeC_0[55]; // weak extern char aCoordednodeCn_[58]; // weak extern char aSlantedcoord_5[71]; // weak extern char aSlantedcoord_4[45]; // weak extern char aSlantedcoor_11[62]; // weak extern char aCoordednodeC_3[54]; // weak extern char aSlantedcoor_10[69]; // weak extern char aSlantedcoord_9[70]; // weak extern char aSlantedcoord_8[43]; // weak extern char aSlantedcoor_15[63]; // weak extern char aCoordednodeC_4[55]; // weak extern char aSlantedcoor_14[70]; // weak extern char aSlantedcoor_13[71]; // weak extern char aSlantedcoor_12[44]; // weak extern char aSlantedcoor_19[46]; // weak extern char aCn_rearrange2[]; // idb extern char aSlantedcoor_18[57]; // weak extern char aCn_rearrange[]; // idb extern char aSlantedcoor_17[57]; // weak extern char aSlantedcoor_16[44]; // weak extern char asc_6EDE50[66]; // weak extern char asc_6EDE94[48]; // weak extern char asc_6EDEC4[52]; // weak extern char asc_6EDEF8[49]; // weak extern char asc_6EDF2C[50]; // weak extern char asc_6EDF60[45]; // weak extern char asc_6EDF90[45]; // weak extern char asc_6EDFC0[53]; // weak extern char asc_6EDFF8[48]; // weak extern char asc_6EE028[48]; // weak extern char asc_6EE058[58]; // weak extern char asc_6EE094[58]; // weak extern char asc_6EE0D0[58]; // weak extern int (__thiscall *off_6EE110)(void *, char); // weak extern int (__thiscall *off_6EE118)(void *, char); // weak extern char asc_6EE11C[]; // idb extern char a__9dataShineSp[]; // idb extern char asc_6EE168[56]; // weak extern char asc_6EE1A0[56]; // weak extern char asc_6EE1D8[55]; // weak extern char asc_6EE210[54]; // weak extern char aFlyNullMap[13]; // weak extern char aFlyNull[10]; // weak extern char aFlyNullReturn[17]; // weak extern char asc_6EE278[53]; // weak extern int (__thiscall *off_6EE2B4)(void *, char); // weak extern int (__thiscall *off_6EE2CC)(void *, char); // weak extern char aSpynetIntell_0[76]; // weak extern char aSpynetIntellig[42]; // weak extern char asc_6EE358[51]; // weak extern char asc_6EE38C[54]; // weak extern char asc_6EE3C4[61]; // weak extern char asc_6EE43C[54]; // weak extern char asc_6EE478[75]; // weak extern char asc_6EE4C4[57]; // weak extern char asc_6EE500[58]; // weak extern char asc_6EE540[78]; // weak extern char asc_6EE590[76]; // weak extern char asc_6EE5E0[97]; // weak extern char asc_6EE644[60]; // weak extern char asc_6EE680[51]; // weak extern char asc_6EE6B8[66]; // weak extern char asc_6EE700[69]; // weak extern char asc_6EE748[88]; // weak extern char asc_6EE7A0[51]; // weak extern char asc_6EE7D4[52]; // weak extern char asc_6EE808[75]; // weak extern char asc_6EE858[72]; // weak extern char asc_6EE8A0[78]; // weak extern char asc_6EE8F0[82]; // weak extern char asc_6EE948[81]; // weak extern char asc_6EE9A0[71]; // weak extern char asc_6EE9E8[60]; // weak extern char asc_6EEA24[51]; // weak extern char asc_6EEA58[52]; // weak extern char asc_6EEA90[70]; // weak extern char asc_6EEAD8[61]; // weak extern char asc_6EEB18[57]; // weak extern char asc_6EEB58[68]; // weak extern char asc_6EEB9C[47]; // weak extern int (__thiscall *off_6EEBD0)(void *, char); // weak extern char aCstateitemda_3[52]; // weak extern char aCstateitemda_2[54]; // weak extern char aCstateitemda_1[54]; // weak extern char aCstateitemda_0[52]; // weak extern char aCstateitemdata[50]; // weak extern char a__9dataShin_67[]; // idb extern int (*off_6EED04)(); // weak extern char aStreetboothsel[51]; // weak extern char aStreetbooths_0[26]; // weak extern char aStreetbooths_1[26]; // weak extern char aStreetbooth_16[25]; // weak extern char aStreetbooths_4[48]; // weak extern char aStreetbooths_3[47]; // weak extern char aStreetbooths_2[29]; // weak extern char aStreetboothb_0[46]; // weak extern char aStreetboothbuy[28]; // weak extern char asc_6EEE7C[44]; // weak extern char asc_6EEEA8[56]; // idb extern char asc_6EEEF4[53]; // weak extern char asc_6EEF2C[55]; // weak extern char asc_6EEF64[53]; // weak extern char aStreetbooths_5[50]; // weak extern char aStreetboothb_1[31]; // weak extern char aStreetbooths_6[36]; // weak extern char asc_6EF014[57]; // weak extern char aStringmakerMak[43]; // weak extern char aStringmakerM_0[42]; // weak extern char aStringmakerM_1[41]; // weak extern char aStringmakerM_2[43]; // weak extern char aStringmakerM_3[56]; // weak extern char aStringmakerM_4[47]; // weak extern char asc_6EF168[51]; // weak extern char aHp_0[6]; // weak extern char aNull_0[5]; // weak extern char aLocation[12]; // weak extern char aMode[8]; // weak extern char aLevel_1[9]; // weak extern char aName[8]; // weak extern char asc_6EF1D4[57]; // weak extern char aRidingBriefCam[22]; // weak extern char asc_6EF228[3]; // weak extern char aMinihouseBri_0[26]; // weak extern char aMinihouseBrief[25]; // weak extern char aNullData[10]; // weak extern char aNullHandle[12]; // weak extern char aMinihouseSkinh[25]; // weak extern char aMinihouseInven[20]; // weak extern char asc_6EF2AC[51]; // weak extern char asc_6EF2E0[48]; // weak extern char asc_6EF310[69]; // idb extern char aBoothinterior[]; // idb extern char asc_6EF378[61]; // weak extern char asc_6EF3B8[67]; // weak extern char asc_6EF400[55]; // idb extern char asc_6EF458[55]; // idb extern char asc_6EF4A8[69]; // weak extern char asc_6EF4F0[52]; // weak extern char aStreetbooths_7[32]; // weak extern int (*off_6EF548)(); // weak extern char aSell[5]; // weak extern char aBuy[4]; // weak extern char aStreetboothb_3[45]; // weak extern char aStreetboothb_2[27]; // weak extern char aStreetboothb_5[47]; // weak extern char aStreetboothb_4[29]; // weak extern char aStreetboothb_7[53]; // weak extern char aStreetboothb_6[35]; // weak extern char aStreetboothb_9[43]; // weak extern char aStreetboothSbs[36]; // weak extern char aStreetboothb_8[25]; // weak extern int (*off_6EF6E0)(); // weak extern char aStreetbooths_9[47]; // weak extern char aStreetbooths_8[29]; // weak extern char aStreetbooth_12[49]; // weak extern char aStreetbooth_11[53]; // weak extern char aStreetbooth_10[31]; // weak extern char aStreetbooth_14[55]; // weak extern char aStreetbooth_13[37]; // weak extern char asc_6EF840[72]; // idb extern char asc_6EF8B8[67]; // idb extern char asc_6EF920[54]; // idb extern char asc_6EF970[71]; // idb extern char asc_6EF9C8[57]; // idb extern char asc_6EFA10[55]; // weak extern char asc_6EFA48[56]; // weak extern char asc_6EFA80[44]; // weak extern char aStreetboothS_2[37]; // weak extern char aStreetboothS_1[37]; // weak extern char aStreetboothS_0[42]; // weak extern char aStreetbooth_15[26]; // weak extern int (__stdcall *off_6EFB48[3])(int); // weak extern int (__stdcall *off_6EFB58[3])(int); // weak extern char asc_6EFB68[69]; // weak extern char asc_6EFBB0[79]; // weak extern char asc_6EFC00[47]; // weak extern char asc_6EFC30[49]; // weak extern char asc_6EFC64[55]; // weak extern char asc_6EFC9C[55]; // weak extern char asc_6EFCD4[62]; // weak extern char asc_6EFD14[61]; // weak extern char asc_6EFD54[58]; // weak extern char asc_6EFD90[58]; // weak extern char asc_6EFDCC[54]; // weak extern char asc_6EFE04[57]; // weak extern char asc_6EFE40[45]; // weak extern char asc_6EFE70[51]; // weak extern char asc_6EFEA4[46]; // weak extern char aTradeboardTb_c[21]; // weak extern char asc_6EFEF0[77]; // weak extern char asc_6EFF40[87]; // weak extern char asc_6EFF98[68]; // weak extern char asc_6EFFE0[71]; // weak extern char asc_6F0028[59]; // weak extern char asc_6F0068[87]; // weak extern char asc_6F00C0[57]; // weak extern char aTradeboardTb_f[23]; // weak extern char aTradeboardTb_g[19]; // weak extern char aTradeboardTb_n[20]; // weak extern char asc_6F013C[47]; // weak extern char asc_6F016C[49]; // weak extern char asc_6F01A0[46]; // weak extern char aTradeboardTb_h[20]; // weak extern char aTradeboardTb_1[45]; // weak extern char aTradeboardTb_0[31]; // weak extern char asc_6F0238[72]; // weak extern char asc_6F0280[65]; // weak extern char asc_6F02C8[84]; // weak extern char asc_6F031C[54]; // weak extern char aTradeboardTb_2[37]; // weak extern char aTradeboardTb_o[24]; // weak extern char asc_6F0394[57]; // weak extern char asc_6F03D0[48]; // weak extern char asc_6F0400[51]; // weak extern char asc_6F0434[57]; // weak extern char aTradeboardTb_3[23]; // weak extern char asc_6F0488[73]; // weak extern char asc_6F04D8[76]; // weak extern char asc_6F0528[72]; // weak extern char asc_6F0570[64]; // weak extern char asc_6F05B0[67]; // weak extern char asc_6F05F4[55]; // weak extern char aItemlistmakerI[29]; // weak extern char aItemlistmake_1[47]; // weak extern char aItemlistmake_0[28]; // weak extern char aItemlistmake_3[50]; // weak extern char aItemlistmake_2[27]; // weak extern char aTreasureches_0[55]; // weak extern char aTreasurechestm[39]; // weak extern char aTreasureches_1[40]; // weak extern char aTreasureches_3[52]; // weak extern char aTreasureches_2[60]; // weak extern char aTreasureches_6[48]; // weak extern char aTreasureches_5[50]; // weak extern char aTreasureches_4[68]; // weak extern char aTreasureches_8[55]; // weak extern char aTreasureches_7[32]; // weak extern int (__thiscall *off_6F08E8)(void *, char); // weak extern char aUpgradedatab_1[45]; // weak extern char aUpgradedatab_0[52]; // weak extern char a__9dataShineUp[]; // idb extern char aUpgradedatabox[25]; // weak extern int (__thiscall *off_6F0990)(void *, char); // weak extern int (__thiscall *off_6F09C0)(void *, char); // weak extern char aUseitempropose[45]; // weak extern char aInstantdivorce[]; // idb extern int (__thiscall *off_6F0CF0)(void *, char); // weak extern char asc_6F0D0C[52]; // weak extern char asc_6F0D40[49]; // weak extern char asc_6F0D74[50]; // weak extern char asc_6F0DA8[46]; // weak extern char asc_6F0DD8[46]; // weak extern char asc_6F0E08[69]; // weak extern char asc_6F0E50[69]; // weak extern char asc_6F0E98[69]; // weak extern char asc_6F0EE0[66]; // weak extern char asc_6F0F28[80]; // weak extern char asc_6F0F78[50]; // weak extern char asc_6F0FB0[67]; // weak extern char asc_6F0FF4[49]; // weak extern char asc_6F1028[45]; // weak extern char asc_6F1058[45]; // weak extern char asc_6F1088[52]; // weak extern char asc_6F10C0[66]; // weak extern char asc_6F1104[48]; // weak extern char asc_6F1134[56]; // weak extern char asc_6F116C[47]; // weak extern char asc_6F119C[57]; // weak extern char asc_6F11D8[47]; // weak extern char asc_6F1208[44]; // weak extern char aUseeffectUse_6[45]; // weak extern char aUseeffectUse_7[47]; // weak extern char aUseeffectUse_8[42]; // weak extern char aUseeffectUse_9[46]; // weak extern char aUseeffectUs_10[39]; // weak extern char aUseeffectUs_11[48]; // weak extern char asc_6F1360[55]; // weak extern char asc_6F1398[47]; // weak extern char asc_6F13C8[43]; // weak extern char aPresentboxinve[]; // idb extern char asc_6F1408[52]; // weak extern char asc_6F143C[58]; // weak extern char asc_6F1478[54]; // weak extern char aUseeffectUs_12[43]; // weak extern char aUseeffectUs_13[38]; // weak extern char aUseeffectUs_14[39]; // weak extern char aUseeffectUs_15[45]; // weak extern char aUseeffectUs_17[64]; // weak extern char aUseeffectUs_16[46]; // weak extern char aUseeffectUs_18[43]; // weak extern char aUseeffectUs_19[42]; // weak extern char aUseeffectUs_20[42]; // weak extern char aUseeffectUs_21[47]; // weak extern char aUseeffectUs_22[43]; // weak extern char asc_6F16B0[61]; // weak extern char aUseeffectUs_24[57]; // weak extern char aUseeffectUs_23[42]; // weak extern char aUseeffectUs_25[38]; // weak extern char aUseeffectUs_26[42]; // weak extern char aUseeffectUs_52[42]; // weak extern char aUseeffectUs_27[35]; // weak extern char aUseeffectUs_28[41]; // weak extern char aUseeffectUs_29[40]; // weak extern char aUseeffectUs_30[44]; // weak extern char aUseeffectUs_31[42]; // weak extern char aUseeffectUs_32[42]; // weak extern char aUseeffectUs_36[73]; // weak extern char aUseeffectUs_35[66]; // weak extern char aUseeffectUs_34[70]; // weak extern char aUseeffectUs_33[55]; // weak extern char aUseeffectUs_37[58]; // weak extern char aUseeffectUs_38[38]; // weak extern char asc_6F1A54[45]; // weak extern char asc_6F1A84[51]; // weak extern char asc_6F1AB8[48]; // weak extern char aUib_canuseitem[]; // idb extern char aUseeffectUs_39[38]; // weak extern char aUseeffectUs_40[37]; // weak extern char aItemsmallbag_2[45]; // weak extern char asc_6F1B78[45]; // weak extern char aServermenuf_13[42]; // weak extern char aServermenuf_14[42]; // weak extern char asc_6F1C00[52]; // weak extern char aUseeffectUs_41[44]; // weak extern char aServermenuf_15[42]; // weak extern char aSilverwinglocs[]; // idb extern char aCancel[]; // idb extern char aSilverwingport[]; // idb extern char aSilverwingtitl[]; // idb extern char asc_6F1CCC[49]; // weak extern char aUseeffectUs_42[44]; // weak extern char aUseitembyabs_4[57]; // weak extern char aUseitembyabs_3[60]; // weak extern char aUseitembyabs_2[54]; // weak extern char aUseitembyabs_1[47]; // weak extern char aUseitembyabs_0[49]; // weak extern char aUseitembyabsta[54]; // weak extern char aUseeffectUs_44[50]; // weak extern char aUseeffectUs_43[52]; // weak extern char aUseeffectUsedi[54]; // weak extern char aUseeffectUs_49[48]; // weak extern char aUseeffectUs_48[52]; // weak extern char aUseeffectUs_47[51]; // weak extern char a__9dataShin_68[]; // idb extern char aUseeffectUs_46[70]; // weak extern char aUsestagerecall[21]; // weak extern char aUseditemeffe_0[45]; // weak extern char aUseeffectUs_45[36]; // weak extern char aUseditemeffect[39]; // weak extern char asc_6F20B8[73]; // weak extern char asc_6F2108[75]; // weak extern char asc_6F2154[47]; // weak extern char aUseeffectUs_50[46]; // weak extern char asc_6F21B4[58]; // weak extern char asc_6F21F0[50]; // weak extern char asc_6F2224[59]; // weak extern char asc_6F2260[44]; // weak extern char asc_6F228C[41]; // weak extern char asc_6F22B8[44]; // weak extern char asc_6F22E4[41]; // weak extern char asc_6F2310[47]; // weak extern char asc_6F2340[39]; // weak extern char asc_6F2368[61]; // weak extern char asc_6F23A8[50]; // weak extern char asc_6F23DC[53]; // weak extern char aGamedbsessionS[54]; // weak extern char asc_6F244C[53]; // weak extern char asc_6F2484[61]; // weak extern char asc_6F24C4[42]; // weak extern char asc_6F24F0[46]; // weak extern char asc_6F2520[52]; // weak extern char asc_6F2554[52]; // weak extern char aIteminvento_31[57]; // weak extern char aIteminventoryc[39]; // weak extern char aProposeresultP[34]; // weak extern char aReservresultPa[33]; // weak extern char aCheckerWhenpro[21]; // weak extern char aCheckerApplica[44]; // weak extern char aCheckerDelayli[38]; // weak extern char asc_6F26A0[74]; // weak extern char asc_6F26EC[56]; // weak extern char asc_6F2724[57]; // weak extern char asc_6F2760[82]; // weak extern char asc_6F27B8[64]; // weak extern char asc_6F27F8[82]; // weak extern char asc_6F2850[64]; // weak extern char asc_6F2890[94]; // weak extern char asc_6F28F0[76]; // weak extern char asc_6F2940[88]; // weak extern char asc_6F2998[70]; // weak extern char asc_6F29E0[89]; // weak extern char asc_6F2A40[71]; // weak extern char asc_6F2A88[90]; // weak extern char asc_6F2AE8[72]; // weak extern char asc_6F2B30[86]; // weak extern char aZonelistens_20[74]; // weak extern char asc_6F2BD8[85]; // weak extern char asc_6F2C30[67]; // weak extern char aWeddinghallWh_[23]; // weak extern char aZonelistens_21[56]; // weak extern char aZonelistens_22[58]; // weak extern char aZonelistens_23[56]; // weak extern char asc_6F2D38[43]; // weak extern char asc_6F2D68[65]; // weak extern char asc_6F2DAC[47]; // weak extern char asc_6F2DDC[54]; // weak extern char asc_6F2E18[74]; // weak extern char asc_6F2E64[56]; // weak extern char asc_6F2E9C[56]; // weak extern char asc_6F2ED8[68]; // weak extern char asc_6F2F1C[50]; // weak extern char asc_6F2F50[54]; // weak extern char aLearnskillPack[29]; // weak extern char asc_6F2FA8[60]; // weak extern char asc_6F2FE4[42]; // weak extern char asc_6F3010[72]; // weak extern char asc_6F3058[54]; // weak extern char asc_6F3090[70]; // weak extern char asc_6F30D8[52]; // weak extern char aCheckerDivorce[40]; // weak extern char asc_6F3138[68]; // weak extern char asc_6F317C[50]; // weak extern char asc_6F31B0[83]; // weak extern char asc_6F3208[65]; // weak extern char aWeddinghallW_1[40]; // weak extern char aWeddingWedding[16]; // weak extern char aWeddinghallW_0[38]; // weak extern char aEldpri[]; // idb extern char aWeddinghallW_2[29]; // weak extern char aWeddinghallW_3[24]; // weak extern char aWeddinghallW_4[41]; // weak extern char aZonelistens_24[58]; // weak extern int (__stdcall *off_6F3358)(int); // weak extern char asc_6F3364[39]; // weak extern char asc_6F338C[59]; // weak extern char asc_6F33C8[66]; // weak extern char asc_6F3410[69]; // weak extern char asc_6F3458[51]; // weak extern char asc_6F3490[65]; // weak extern char asc_6F34D8[73]; // weak extern char aNc_char_zone_c[]; // idb extern char asc_6F3560[72]; // weak extern char asc_6F35A8[55]; // weak extern char asc_6F35E0[69]; // weak extern char asc_6F3628[92]; // weak extern char asc_6F3688[86]; // weak extern char asc_6F36E0[68]; // weak extern char asc_6F3724[51]; // weak extern char aCharFromWorld[17]; // weak extern char asc_6F376C[33]; // weak extern char asc_6F3790[70]; // weak extern char asc_6F37D8[69]; // weak extern char asc_6F3820[70]; // weak extern char asc_6F3868[52]; // weak extern char asc_6F389C[45]; // weak extern char asc_6F38CC[46]; // weak extern char asc_6F38FC[53]; // weak extern char asc_6F3934[51]; // weak extern char asc_6F3968[48]; // weak extern char asc_6F3998[48]; // weak extern char asc_6F39C8[50]; // weak extern char asc_6F39FC[55]; // weak extern char asc_6F3A34[56]; // weak extern char asc_6F3A70[65]; // weak extern char asc_6F3AB4[47]; // weak extern char asc_6F3AE8[65]; // weak extern char asc_6F3B2C[47]; // weak extern char asc_6F3B5C[53]; // weak extern char asc_6F3B94[52]; // weak extern char asc_6F3BC8[39]; // weak extern char asc_6F3BF0[61]; // weak extern char asc_6F3C30[76]; // weak extern char asc_6F3C7C[51]; // weak extern char asc_6F3CB0[51]; // weak extern char asc_6F3CE8[65]; // weak extern char asc_6F3D2C[50]; // weak extern char asc_6F3D60[55]; // weak extern char asc_6F3D98[54]; // weak extern char asc_6F3DD0[48]; // weak extern char asc_6F3E00[49]; // weak extern char asc_6F3E38[69]; // weak extern char asc_6F3E80[71]; // weak extern char asc_6F3EC8[52]; // weak extern char asc_6F3EFC[53]; // weak extern char asc_6F3F34[57]; // weak extern char asc_6F3F70[57]; // weak extern char asc_6F3FAC[53]; // weak extern char asc_6F3FE8[78]; // weak extern char aWms_nc_char_ge[38]; // weak extern char aWms_nc_misc_ev[41]; // weak extern char aWms_nc_misc__0[39]; // weak extern char asc_6F40B8[71]; // weak extern char aWms_nc_mover_l[31]; // weak extern char asc_6F4120[73]; // weak extern char asc_6F416C[54]; // weak extern char asc_6F41A8[72]; // weak extern char asc_6F41F0[67]; // weak extern char asc_6F4234[52]; // weak extern char asc_6F4268[78]; // weak extern char asc_6F42B8[63]; // weak extern char asc_6F42F8[76]; // weak extern char asc_6F4348[72]; // weak extern char asc_6F4390[57]; // weak extern char asc_6F43CC[54]; // weak extern char asc_6F4404[53]; // weak extern char asc_6F443C[48]; // weak extern char asc_6F446C[56]; // weak extern char asc_6F44A4[58]; // weak extern char asc_6F44E0[61]; // weak extern char asc_6F4520[47]; // weak extern char asc_6F4550[49]; // weak extern int (__stdcall *off_6F4588)(int, int); // weak extern int (__stdcall *off_6F4598)(int); // weak extern char aErrorSocket__0[44]; // weak extern char aErrorSocket_re[]; // idb extern int (__stdcall *off_6F4600)(int, int); // weak extern int (__stdcall *off_6F4610)(int, int); // weak extern char aSS[]; // idb extern char aNullSessionLis[67]; // weak extern char aAcceptNoSessio[37]; // weak extern int (__stdcall *off_6F4690)(int); // weak extern int (*off_6F46A0[2])(); // weak extern char aZoneconnects_2[47]; // weak extern char aZoneconnects_1[29]; // weak extern char aZoneringpacket[41]; // weak extern char aZoneringpack_0[39]; // weak extern char aZoneringpack_1[51]; // weak extern char aZoneringpack_2[42]; // weak extern char aZoneringpack_3[38]; // weak extern char aZoneringpack_4[37]; // weak extern char aZoneringpack_5[41]; // weak extern char aSIsAtSDD[]; // idb extern char aZoneringpack_6[39]; // weak extern char aZoneringpack_7[51]; // weak extern char aSIsBanned[]; // idb extern char aZoneringpack_8[42]; // weak extern char aSIsNotInGame[]; // idb extern char aZoneringpack_9[41]; // weak extern char aZoneringpac_10[39]; // weak extern char aZoneringpac_11[51]; // weak extern char aZoneringpac_12[42]; // weak extern char aZoneringpac_13[42]; // weak extern char aSummons[]; // idb extern char aZoneringpac_14[42]; // weak extern char aZoneringpac_15[42]; // weak extern char aZoneringpac_16[47]; // weak extern char aZoneringpac_17[49]; // weak extern char aZoneringpac_18[49]; // weak extern char aZoneringpac_19[48]; // weak extern char aZoneringpac_20[43]; // weak extern char aZoneringpac_21[43]; // weak extern char aZoneringpac_22[38]; // weak extern char aZoneringpac_23[47]; // weak extern char aZoneringpac_24[48]; // weak extern char aZoneipcontai_0[28]; // weak extern char aZoneipcontaine[46]; // weak extern char aZoneipcontai_1[58]; // weak extern char aMessage_txt[]; // idb extern char aZoneserverZs_8[47]; // weak extern char aTmfpemfjs[10]; // weak extern char aConnectSuccess[]; // idb extern char aTryToConnectSD[]; // idb extern char aZs_serverconne[46]; // weak extern char aTryToConnect_0[]; // idb extern char aZoneserverZs_0[67]; // weak extern char aZoneserverZs_4[44]; // weak extern char aZoneserverZs_3[50]; // weak extern char aZoneserverZs_2[50]; // weak extern char aZoneserverZs_1[58]; // weak extern char aLua_pathSS[]; // idb extern char a__9dataShin_69[31]; // weak extern char Str[]; // idb extern char aZoneserverZs_7[39]; // weak extern char aZoneserverZs_6[21]; // weak extern char dataServe::a[39]; // weak extern char aZoneserverZs_5[55]; // weak extern char aZoneserverinfo[34]; // weak extern char aShinestackstru[17]; // weak extern char aEraseoldloglis[16]; // weak extern char aVoidEraseoldlo[]; // idb extern char aChargeditemlog[15]; // weak extern int dword_6F5058; // weak extern __int16 word_6F505C; // weak extern char aSuccess_0[8]; // weak extern char aReconnect[14]; // weak extern char aSocketCutTryRe[29]; // weak extern char aSleepmanager_0[23]; // weak extern char aSleepmanagerSm[25]; // weak extern char aZoneserver_zs_[31]; // weak extern char aZoneserverZ_20[44]; // weak extern char aPsessionSocket[45]; // weak extern char aZoneserverZs_c[42]; // weak 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 int dword_6F5200; // weak extern char byte_6F5204; // weak extern char aRemove[7]; // weak extern char aUpload[7]; // weak extern char aCutByInvalidPa[24]; // weak extern char aCutByHeartbeat[19]; // weak extern char aCloseDuringSes[39]; // weak extern char aZoneserver[11]; // weak extern char aZoneserverZ_13[46]; // weak extern char aZoneserverZ_12[30]; // weak extern char aZoneserverZ_11[47]; // weak extern char aZoneserverZ_10[48]; // weak extern char aZoneserverZs_9[52]; // weak extern char a__ServerinfoSe[]; // idb extern char aZoneserver_z_0[35]; // weak extern char aZoneserverZ_21[46]; // weak extern char aDDD_0[]; // idb extern char aCert_fo_gamigo[15]; // weak extern char a127_0_0_1[]; // idb extern char aZoneserverZ_15[48]; // weak extern char aSocket[7]; // weak extern char aSocketCutNotFo[26]; // weak extern char aZoneserverZ_14[39]; // weak extern char aNwmshandle_0[15]; // weak extern char aNcharregno_0[15]; // weak extern char aNuserregno_0[15]; // weak extern char aSecIp_addr[15]; // weak extern char aZoneserverZs_d[37]; // weak extern char aWms[4]; // weak extern char aLog[4]; // weak extern char aDb[3]; // weak extern char aZoneserver_z_1[36]; // weak extern char aZoneserverZ_22[49]; // weak extern char aZoneserverZ_17[56]; // weak extern char aXlrfunction[12]; // weak extern char aInlist[10]; // weak extern char aIndex_0[9]; // weak extern char asc_6F55AC[]; // idb extern char aObjtype[11]; // weak extern char aZoneserverZ_16[54]; // weak extern char aZonelis[8]; // weak extern char aZonecon[8]; // weak extern char aZoneserverZs_m[34]; // weak extern char aZoneserver_z_2[33]; // weak extern char aZoneserverZ_23[46]; // weak extern char aAssert_0[7]; // weak extern char dataShine::a[16]; // weak extern char aKqreward_0[9]; // weak extern char aUseditemeffe_1[15]; // weak extern char aRecipebook[11]; // weak extern char aGathertable[12]; // weak extern char aMerchantcity[13]; // weak extern char aUpgradedatab_2[15]; // weak extern char aPassivedatab_4[15]; // weak extern char aSkilldatabox[13]; // weak extern char aFieldlist_0[10]; // weak extern char aBmpdata[8]; // weak extern char aMiscdatatable[14]; // weak extern char aRoamingData[13]; // weak extern char aUsesumpup[10]; // weak extern char aUi_ride[8]; // weak extern char aRidedatabox[12]; // weak extern char dataShine::a[36]; // weak extern char aDamagebyangl_8[18]; // weak extern char aDamagebyangle_[18]; // weak extern char aRandomoptionta[18]; // weak extern char aAbstatedic[11]; // weak extern char aSubabstatedic[14]; // weak extern char aItemgroupcla_7[20]; // weak extern char aItemdata[9]; // weak extern char aMapdata[8]; // weak extern char aMobdatabox[11]; // weak extern char aMobregist[10]; // weak extern char aFailToReadItem[27]; // weak extern char asc_6F583C[27]; // weak extern char aItemmixdata[12]; // weak extern char aFailToReadDi_0[32]; // weak extern char asc_6F5884[]; // idb extern char aGminihousedi_0[23]; // weak extern char aFailToReadDiec[28]; // weak extern char asc_6F58D8[]; // idb extern char aGminihousediec[19]; // weak extern char aFailToReadDice[28]; // weak extern char a__9dataShineDi[]; // idb extern char aGminihousedice[19]; // weak extern char aMinihouseend_0[23]; // weak extern char aZoneserverZone[37]; // weak extern char aFailToReadMini[47]; // weak extern char asc_6F59C4[]; // idb extern char aGminihouseobje[20]; // weak extern char aFailToReadIt_0[29]; // weak extern char asc_6F5A28[]; // idb extern char aGitemupgrade[13]; // weak extern char aFailToReadClas[27]; // weak extern char dataShine::a[]; // idb extern char aGclassname[11]; // weak extern char aFailToReadAnno[30]; // weak extern char a__9dataShineAn[32]; // weak extern char aGannouncesyste[16]; // weak extern char aFailToReadCh_0[43]; // weak extern char asc_6F5B1C[]; // idb extern char aCharactertit_1[26]; // weak extern char aZoneserverZo_0[37]; // weak extern char aFailToReadChar[36]; // weak extern char asc_6F5BB4[38]; // weak extern char aGcharactertitl[20]; // weak extern char aZipc_setnextip[15]; // weak extern char aItemequiptab_2[15]; // weak extern char aItemmall[9]; // weak extern char aZoneserverZo_1[39]; // weak extern char aZoneserver_z_3[47]; // weak extern char aDeamondead[]; // idb extern char aMenustring[11]; // weak extern char aEtc[4]; // weak extern char aPlayerBufferSi[]; // idb extern int (__thiscall *off_6F5CAC)(void *, char); // weak extern int (__thiscall *off_6F5CD0)(void *, char); // weak extern int (__thiscall *off_6F5CD8)(void *, char); // weak extern int (__thiscall *off_6F5CE0)(void *, char); // weak extern int (__thiscall *off_6F5CE8)(void *, char); // weak extern int (__thiscall *off_6F5CF0)(void *, char); // weak extern int (__thiscall *off_6F5CF8)(void *, char); // weak extern int (__thiscall *off_6F5D00)(void *, char); // weak extern int (__thiscall *off_6F5D08)(void *, char); // weak extern int (__thiscall *off_6F5D10)(void *, char); // weak extern int (__thiscall *off_6F5D18)(void *, char); // weak extern int (__stdcall *off_6F5D20)(int, int); // weak extern int (__thiscall *off_6F5D28)(void *, char); // weak extern char aFailToPlayerQu[30]; // weak extern _UNKNOWN unk_6F5D68; // weak extern char aQuestparser_tx[16]; // weak extern char asc_6F5D9C[37]; // weak extern char aGquestparserda[17]; // weak extern char aFailToReadQues[34]; // weak extern char asc_6F5DFC[]; // idb extern char aGquestdata[11]; // weak extern char aZoneserverZo_2[37]; // weak extern char aFailToReadIt_1[31]; // weak extern char asc_6F5E70[]; // idb extern char aGitemdismantle[15]; // weak extern char aEventreserveli[38]; // weak extern int (*off_6F5ED0[2])(); // weak extern int (*off_6F5EE0[2])(); // weak extern int (*off_6F5EF0[2])(); // weak extern int (*off_6F5F00[2])(); // weak extern int (*off_6F5F10[2])(); // weak extern int (*off_6F5F20[2])(); // weak extern int (*off_6F5F30[2])(); // weak extern int (*off_6F5F40[2])(); // weak extern int (*off_6F5F50[2])(); // weak extern int (*off_6F5F60[2])(); // weak extern int (*off_6F5F70[2])(); // weak extern int (*off_6F5F80[2])(); // weak extern int (*off_6F5F90[2])(); // weak extern int (*off_6F5FA0[2])(); // weak extern int (*off_6F5FB0[2])(); // weak extern int (*off_6F5FC0[2])(); // weak extern int (*off_6F5FD8[2])(); // weak extern int (*off_6F5FE8[2])(); // weak extern int (*off_6F5FF8[2])(); // weak extern int (*off_6F6008[2])(); // weak extern int (*off_6F6018[2])(); // weak extern int (*off_6F6028[2])(); // weak extern int (*off_6F6038[2])(); // weak extern int (*off_6F6048[2])(); // weak extern int (*off_6F6058[2])(); // weak extern int (__stdcall *off_6F6068)(int, int); // weak extern char aG_aiscriptpetc[23]; // weak extern char aG_aiscriptmobc[23]; // weak extern char aKqregentable[13]; // weak extern char aMinihouseobj_0[23]; // weak extern char asc_6F60C4[]; // idb extern char aMinihousefur_1[26]; // weak extern char asc_6F6108[]; // idb extern char aMinihousedatab[17]; // weak extern char asc_6F613C[]; // idb extern char aChargedbuffdat[19]; // weak extern char aMobattseq[10]; // weak extern char aMagiccontai_10[15]; // weak extern char aItemusefunct_4[16]; // weak extern char aSun[7]; // weak extern char aFly[7]; // weak extern char aChrlghk[8]; // weak extern char aPass4[10]; // weak extern char aZoneserverZ_18[40]; // weak extern char aPass3[10]; // weak extern char aPass2[10]; // weak extern char aCode[8]; // weak extern char aDesert[]; // idb extern char aI64d[]; // idb extern char ValueName[]; // idb extern char SubKey[]; // idb extern char aPass1[10]; // weak extern char aDD_1[]; // idb extern char aPass0[10]; // weak extern char aBoot[5]; // weak extern char aHtml[5]; // weak extern _UNKNOWN unk_6F6268; // weak extern int (*off_6F6294[2])(); // weak extern int (*off_6F62A4[2])(); // weak extern int (*off_6F62B4[2])(); // weak extern int (*off_6F62C4[2])(); // weak extern int (*off_6F62D4[2])(); // weak extern int (*off_6F62E4[2])(); // weak extern int (*off_6F62F4[2])(); // weak extern int (*off_6F6304[2])(); // weak extern int (*off_6F6314[2])(); // weak extern int (*off_6F6324[2])(); // weak extern int (*off_6F6334[2])(); // weak extern int (*off_6F6344[2])(); // weak extern int (*off_6F6354[2])(); // weak extern int (*off_6F6364[2])(); // weak extern int (*off_6F6374[2])(); // weak extern int (*off_6F6384[2])(); // weak extern int (*off_6F6394[2])(); // weak extern int (*off_6F63A4[2])(); // weak extern int (*off_6F63B4[2])(); // weak extern int (*off_6F63C4[2])(); // weak extern int (*off_6F63D4[2])(); // weak extern int (*off_6F63E4[2])(); // weak extern int (*off_6F63F4[2])(); // weak extern char aActionAddcondi[21]; // weak extern char aInvalidItemact[31]; // weak extern char aActionAddeffec[18]; // weak extern char aInvalidItema_0[28]; // weak extern int (*off_6F646C[2])(); // weak extern char aFailToRead[17]; // weak extern char aGtwinscore_shn[15]; // weak extern char aGtibreedsubjec[20]; // weak extern char aGtiserver_shn[14]; // weak extern char aGtigetrategap_[18]; // weak extern char aGtigetrate_shn[15]; // weak extern char aGuildtourna_25[30]; // weak extern char aGuildtourna_24[25]; // weak extern char aGuildtourna_23[26]; // weak extern char aGuildtourna_22[25]; // weak extern char aGuildtourna_21[25]; // weak extern char a_multihittable[15]; // weak extern char aMysteryvaultse[23]; // weak extern char aBelongdice_shn[15]; // weak extern char aDamagelvgappvp[19]; // weak extern char aDamagelvgapevp[19]; // weak extern char aDamagelvgappve[19]; // weak extern char aAccupgrade_shn[15]; // weak extern char aShnAccupgradei[25]; // weak extern char aLoadEnd[9]; // weak extern char aFieldlist_l_4a[25]; // weak extern char aNpcmanager[11]; // weak extern char aZoneserverZo_3[37]; // weak extern char aZoneserverZs_i[41]; // weak extern char aEnchantsocke_1[22]; // weak extern char aFailToReadShnD[29]; // weak extern char aShndatafile[12]; // weak extern char aShnBraccupgr_0[27]; // weak extern char aShnBraccupgrad[23]; // weak extern char aShnKqitem_shn[17]; // weak extern char aShnChargeddele[31]; // weak extern char aShnMinimonauto[29]; // weak extern char aShnMinimoninfo[22]; // weak extern char aShnTermextendm[26]; // weak extern char aShnChatcolor_s[20]; // weak extern char aShnStateitem_s[20]; // weak extern char a__9dataShineBa[]; // idb extern char aShnBadnamefilt[24]; // weak extern char aShnPupmain_shn[18]; // weak extern char aShnMoverupgrad[23]; // weak extern char aFailToReadMark[36]; // weak extern char asc_6F6858[]; // idb extern char aShnMarketsearc[27]; // weak extern char a__9dataShineSi[]; // idb extern char aShnSingledata_[21]; // weak extern char aShnMobconditio[29]; // weak extern char asc_6F68F0[]; // idb extern char aShnViewdata_12[52]; // weak extern char asc_6F6954[]; // idb extern char aShnViewdata_11[38]; // weak extern char asc_6F699C[]; // idb extern char aShnViewdata_10[46]; // weak extern char asc_6F69F4[]; // idb extern char aShnViewdataC_9[42]; // weak extern char asc_6F6A44[]; // idb extern char aShnViewdataC_8[47]; // weak extern char asc_6F6AA0[]; // idb extern char aShnViewdataC_7[42]; // weak extern char asc_6F6AF0[]; // idb extern char aShnViewdataC_6[42]; // weak extern char asc_6F6B40[]; // idb extern char aShnViewdataC_5[42]; // weak extern char asc_6F6B90[]; // idb extern char aShnViewdataC_4[43]; // weak extern char asc_6F6BE4[]; // idb extern char aShnViewdataC_3[43]; // weak extern char asc_6F6C38[]; // idb extern char aShnViewdataC_2[45]; // weak extern char asc_6F6C90[]; // idb extern char aShnViewdataC_1[54]; // weak extern char asc_6F6CF8[]; // idb extern char aShnViewdataC_0[46]; // weak extern char dataShine::a[]; // idb extern char aShnViewdataChe[42]; // weak extern char a__9dataShineJo[]; // idb extern char aJobequipinfo[13]; // weak extern char aActioneffectab[24]; // weak extern char aActioneffectit[21]; // weak extern char aSeteffect_shn[14]; // weak extern char aFailToReadAdmi[30]; // weak extern char a__9dataShineAd[]; // idb extern char aGadminlvset[12]; // weak extern char aFailToReadReac[32]; // weak extern char a__9dataShineRe[]; // idb extern char aGreactiontype[14]; // weak extern char aFailToReadNpcs[31]; // weak extern char asc_6F6ECC[]; // idb extern char aGnpcschedule[13]; // weak extern char aFailToReadGb_1[30]; // weak extern char asc_6F6F1C[]; // idb extern char aGgbdicerate[12]; // weak extern char aFailToReadGb_0[30]; // weak extern char asc_6F6F68[]; // idb extern char aGgbdicegame[12]; // weak extern char aFailToReadGbdi[34]; // weak extern char asc_6F6FB8[]; // idb extern char aGgbdicedividin[16]; // weak extern char aFailToReadGbjo[36]; // weak extern char asc_6F7010[]; // idb extern char aGgbjoingamemem[19]; // weak extern char aFailToReadGbex[37]; // weak extern char asc_6F7070[]; // idb extern char aGgambleexchang[23]; // weak extern char aFailToReadGbho[27]; // weak extern char asc_6F70CC[]; // idb extern char aGgamblehouse[13]; // weak extern char aFailToReadMapw[31]; // weak extern char asc_6F7118[]; // idb extern char aGmapwaypoint[13]; // weak extern char aFailToReadMapl[32]; // weak extern char asc_6F7168[]; // idb extern char aGmaplinkpoint[14]; // weak extern char aFailToReadActi[34]; // weak extern char asc_6F71BC[]; // idb extern char aGactionviewinf[16]; // weak extern char aItemaction_shn[15]; // weak extern char aItemactionef_1[21]; // weak extern char aItemactionco_1[24]; // weak extern char aActionrangef_2[22]; // weak extern char aNpcactionTri_0[31]; // weak extern char aNpcactionActio[27]; // weak extern char asc_6F7284[35]; // weak extern char aNpcactionCondi[30]; // weak extern char aZoneserverZo_4[38]; // weak extern char aZoneserverZ_24[54]; // weak extern char asc_6F7328[]; // idb extern char aMobdatabox_0[11]; // weak extern char aItemactionsDat[25]; // weak extern char aItemactionElem[28]; // weak extern char a__9dataShineS[]; // idb extern char aCommondataTC_0[26]; // weak extern char aCommondataTCCd[38]; // weak extern char aMobaggrolog[12]; // weak extern char aSkilllog[9]; // weak extern char byte_6F7400[]; // weak extern char aPacketlog[10]; // weak extern char aZoneringlinklo[16]; // weak extern char aMobregenlog[12]; // weak extern char aLoginlinklog[13]; // weak extern char aServicelog[11]; // weak extern char aDisconnectlog[14]; // weak extern char aDisconnectlog2[15]; // weak extern char aWmspacketlog[13]; // weak extern char aLinklog[8]; // weak extern char aAbstate2wms[12]; // weak extern char aGoldhilllog[12]; // weak extern char aMaprelink[10]; // weak extern char aPassivelog[11]; // weak extern char aFuncinitlog[12]; // weak extern char aTreasureboxlog[15]; // weak extern char aGuildwarlog[12]; // weak extern char aGuildwarlog2[13]; // weak extern char aGuildwarlog3[13]; // weak extern char aCharclassbuglo[16]; // weak extern char aChargeditemvan[21]; // weak extern char aHorselog[9]; // weak extern char aHplog[6]; // weak extern char aAttackfaillog[14]; // weak extern char aScriptchase[12]; // weak extern char aSkillcastnotfi[19]; // weak extern char aOptoolsocklog[14]; // weak extern char aPartyerrorlog[14]; // weak extern char aKqrewardlog[12]; // weak extern char aDeadchecklog[13]; // weak extern char aDropitemlog[12]; // weak extern char aBriefchangeinb[22]; // weak extern char aAbstatkeeptime[18]; // weak extern char aKqentrylog[11]; // weak extern char aKqtournamentlo[16]; // weak extern char aPlayerregnumlo[16]; // weak extern char aHpcharge[9]; // weak extern char byte_6F7614[]; // weak extern char aAttackimmortal[15]; // weak extern char byte_6F7630[]; // weak extern char aPartyinformlog[15]; // weak extern char aWmhrepairlog[13]; // weak extern char byte_6F7664[]; // weak extern char aItemreloclog[13]; // weak extern char aMobitemdroplog[15]; // weak extern char aGuildwarrefres[19]; // weak extern char aPacketlengthov[20]; // weak extern char byte_6F76C0[]; // weak extern char aHolypromiselog[15]; // weak extern char byte_6F76E8[]; // weak extern char byte_6F76F8[]; // weak extern char byte_6F770C[]; // weak extern char byte_6F7724[]; // weak extern char byte_6F7734[]; // weak extern char byte_6F774C[]; // weak extern char aCannouncesys_0[66]; // weak extern char aCannouncesyste[48]; // weak extern char aShineobjectS_1[26]; // weak extern char asc_6F77E8[26]; // weak extern char aShineobjectS_2[27]; // weak extern char asc_6F7820[27]; // weak extern int (__stdcall *off_6F7844[2])(int); // weak extern char aCquestzoneIn_0[46]; // weak extern char aCquestzoneInit[26]; // weak extern char aCquestzoneQues[23]; // weak extern char aCquestzoneQu_0[34]; // weak extern char aCquestzoneQu_1[35]; // weak extern char aCquestzoneQu_3[28]; // weak extern char aCquestzoneQu_2[38]; // weak extern char aCquestzoneGetp[37]; // weak extern char aCquestzoneGetq[34]; // weak extern char aCquestzoneGe_0[41]; // weak extern char aCquestzoneGets[32]; // weak extern char aCquestzoneSe_0[59]; // weak extern char aCquestzoneSend[41]; // weak extern char aCquestzoneSe_2[60]; // weak extern char aCquestzoneSe_1[42]; // weak extern char aCquestzoneSe_4[57]; // weak extern char aCquestzoneSe_3[39]; // weak extern char aCquestzoneRecv[56]; // weak extern char aCquestzoneSe_5[38]; // weak extern char aCquestzoneSe_7[59]; // weak extern char aCquestzoneSe_6[41]; // weak extern char aCquestzoneRe_0[41]; // weak extern char aCquestzoneSe_9[69]; // weak extern char aCquestzoneSe_8[51]; // weak extern char aCquestzoneS_11[61]; // weak extern char aCquestzoneS_10[43]; // weak extern char aCquestzoneS_13[61]; // weak extern char aCquestzoneS_12[43]; // weak extern char aCquestzoneRe_1[55]; // weak extern char aCquestzoneS_15[72]; // weak extern char aCquestzoneS_14[54]; // weak extern char aCquestzoneS_17[56]; // weak extern char aCquestzoneS_16[38]; // weak extern char aCquestzoneMake[51]; // weak extern char aCquestzoneMa_0[59]; // weak extern char aCquestzoneMa_1[58]; // weak extern char aCquestzoneMa_2[60]; // weak extern char aSDS[]; // idb extern char aCquestzonePsst[20]; // weak extern char aCquestzoneS_18[56]; // weak extern char aCquestzoneS_20[64]; // weak extern char aCquestzoneS_19[46]; // weak extern char aCquestzoneIsqu[28]; // weak extern char aCquestzoneQu_4[23]; // weak extern char aCquestzoneQu_5[23]; // weak extern char aCquestzoneQu_6[21]; // weak extern char aCquestzoneQu_9[56]; // weak extern char aCquestzoneQu_8[58]; // weak extern char aCquestzoneQu_7[29]; // weak extern char aCquestzoneQ_13[97]; // weak extern char aCquestzoneQ_12[99]; // weak extern char aCquestzoneQ_11[97]; // weak extern char aCquestzoneQ_10[31]; // weak extern char aCquestzoneQ_20[39]; // weak extern char aPromoteJob2_fo[]; // idb extern char aCquestzoneQ_19[39]; // weak extern char aPromoteJob2_ga[28]; // weak extern char aCquestzoneQ_18[39]; // weak extern char aPromoteJobch_0[]; // idb extern char aCquestzoneQ_17[39]; // weak extern char aCquestzoneQ_16[38]; // weak extern char aPromoteJobchan[]; // idb extern char aCquestzoneQ_15[38]; // weak extern char aCquestzoneQ_14[36]; // weak extern char aCquestzoneQ_21[44]; // weak extern char aCquestzoneS_21[39]; // weak extern char aCquestzoneRe_2[38]; // weak extern char aCquestzoneS_23[64]; // weak extern char aCquestzoneS_22[46]; // weak extern char aCquestzoneRe_3[41]; // weak extern char aCquestzoneRe_4[46]; // weak extern char aCquestzoneQ_36[33]; // weak extern char aCquestzoneQ_35[32]; // weak extern char aCquestzoneQ_34[34]; // weak extern char aCquestzoneQ_33[36]; // weak extern char aCquestzoneQ_32[34]; // weak extern char aCquestzoneQ_31[34]; // weak extern char aCquestzoneQ_30[38]; // weak extern char aCquestzoneQ_29[41]; // weak extern char aCquestzoneQ_28[39]; // weak extern char aCquestzoneQ_27[39]; // weak extern char aCquestzoneQ_26[39]; // weak extern char aCquestzoneQ_25[32]; // weak extern char aCquestzoneQ_24[26]; // weak extern char aCquestzoneQ_23[26]; // weak extern char aCquestzoneQ_22[22]; // weak extern char aErrorRecv_nc_q[]; // idb extern char aCquestzoneRe_5[41]; // weak extern char aErrorRecv_nc_0[]; // idb extern char aCquestzoneRe_7[60]; // weak extern char aErrorCquestzon[59]; // idb extern char aCquestzoneRe_6[42]; // weak extern char aErrorCquestz_0[51]; // idb extern char aCquestzoneNc_q[34]; // weak extern char aCquestzoneRe_9[46]; // weak extern char aCquestzoneRe_8[43]; // weak extern char aCquestzonePsen[18]; // weak extern char asc_6F8AA0[51]; // weak extern char aCquestzoneProt[39]; // weak extern char aZonelistens_25[52]; // weak extern char aCquestzoneQ_37[27]; // weak extern char aCquestzoneQ_38[33]; // weak extern char aCquestzoneQ_39[36]; // weak extern char aCquestzoneR_10[43]; // weak extern char aCquestzoneR_12[56]; // weak extern char aCquestzoneR_11[38]; // weak extern char aCquestzoneQ_40[35]; // weak extern char aQuestlog[9]; // weak extern int (*off_6F8C54[2])(); // weak extern int (__thiscall *off_6F8C60)(void *, char); // weak extern int (__thiscall *off_6F8C6C)(void *, char); // weak extern int (__thiscall *off_6F8C78)(void *, char); // weak extern char aSkillactionS_0[25]; // weak extern char aSkillactionSki[47]; // weak extern int (__thiscall *off_6F8CD0)(void *, char); // weak extern int (__thiscall *off_6F8CDC)(void *, char); // weak extern int (__thiscall *off_6F8CE8)(void *, char); // weak extern int (__thiscall *off_6F8CF4)(void *, char); // weak extern int (__thiscall *off_6F8D00)(void *, char); // weak extern int (__thiscall *off_6F8D0C)(void *, char); // weak extern int (__thiscall *off_6F8D18)(void *, char); // weak extern int (__thiscall *off_6F8D24)(void *, char); // weak extern int (__thiscall *off_6F8D30)(void *, char); // weak extern int (__thiscall *off_6F8D3C)(void *, char); // weak extern char aCalllua[]; // idb extern char aActiongen_op_3[44]; // weak extern char aSp_0[]; // idb extern char aHp_1[]; // idb extern char aRestorerate[]; // idb extern char aBall[]; // idb extern char aDmgabsorb[]; // idb extern char aGtieffect_0[]; // idb extern char aDie[]; // idb extern char aNotice[]; // idb extern char aActiongen_op_2[39]; // weak extern char aActiongen_op_1[49]; // weak extern char aAbstate_0[]; // idb extern char aEmotion[]; // idb extern char aLink[]; // idb extern char aActiongen_op_0[23]; // weak extern char aActiongen_opti[49]; // weak extern char aDispell[]; // idb extern char aNpcaction[10]; // weak extern int (*off_6F8E90[5])(); // weak extern int (__thiscall *off_6F8EA8)(void *, char); // weak extern char aNoneconditionC[21]; // weak extern int (__thiscall *off_6F8ED8)(void *, char); // weak extern char aAbstateconditi[24]; // weak extern int (__thiscall *off_6F8F08)(void *, char); // weak extern char aLvgapcondition[22]; // weak extern int (__thiscall *off_6F8F38)(void *, char); // weak extern char aClasscondition[22]; // weak extern int (__thiscall *off_6F8F68)(void *, char); // weak extern int (__thiscall *off_6F8F80)(void *, char); // weak extern int (__thiscall *off_6F8F98)(void *, char); // weak extern int (__thiscall *off_6F8FB0)(void *, char); // weak extern int (__thiscall *off_6F8FC8)(void *, char); // weak extern int (__thiscall *off_6F8FE0)(void *, char); // weak extern int (__thiscall *off_6F8FF8)(void *, char); // weak extern int (__thiscall *off_6F9010)(void *, char); // weak extern char aCondgen_opti_3[63]; // weak extern char aLocation_0[]; // idb extern char aAttackmob[]; // idb extern char aCheckcyclepart[]; // idb extern char aGtiteam[]; // idb extern char aNone_0[]; // idb extern char aDefault[]; // idb extern char aCondgen_opti_2[37]; // weak extern char aCondgen_opti_1[42]; // weak extern char aClass[]; // idb extern char aLvgap[]; // idb extern char aCondgen_opti_0[21]; // weak extern char aCondgen_option[39]; // weak extern char aTerm[]; // idb extern char aNpccondition[13]; // weak extern int (__stdcall *off_6F9164)(int, int, int); // weak extern char aNeighborhoodch[30]; // weak extern int (__thiscall *off_6F918C)(void *, char); // weak extern char a__9dataShin_71[]; // idb extern char aNpcactionUtilL[30]; // weak extern char aZoneserverZ_19[45]; // weak extern char a__9dataShin_70[]; // idb extern char aNpcactionTrigg[45]; // weak extern char aDotriggers_Ope[24]; // weak extern char aTriggergen_o_4[54]; // weak extern char aTriggergen_o_3[60]; // weak extern char aTriggergen_o_2[54]; // weak extern char aTriggergen_o_1[60]; // weak extern char aTriggergen_o_0[24]; // weak extern char aTriggergen_opt[40]; // weak extern char aTrigger[8]; // weak extern int (__thiscall *off_6F93B4)(void *, char); // weak extern char aAccupgradeda_1[49]; // weak extern char aAccupgradeda_0[30]; // weak extern char aAccupgradedata[47]; // weak extern char a__9dataShin_72[]; // idb extern char aGuildtourna_17[48]; // weak extern char aGuildtourna_18[58]; // weak extern char aGuildtourna_19[53]; // weak extern char aGtigetrateta_1[70]; // weak extern char aGtigetrateta_0[66]; // weak extern char aGtigetratetabl[68]; // weak extern char aGuildtourna_20[63]; // weak extern int (__stdcall *off_6F9620)(int); // weak extern char aEnchantsocketr[65]; // weak extern char aMysteryvaultta[52]; // weak extern char aMysteryboltt_8[47]; // weak extern char aMysteryboltt_7[47]; // weak extern char aMysteryboltt_6[55]; // weak extern char aMysteryboltt_5[51]; // weak extern char aMysteryboltt_4[55]; // weak extern char aMysteryboltt_3[56]; // weak extern char aMysteryboltt_2[51]; // weak extern char aNavigatorPathf[42]; // weak extern char aNavigatorPat_0[39]; // weak extern char aNavigatorMapna[42]; // weak extern char aNavigatorWaiti[31]; // weak extern char aNavigatorMap_0[37]; // weak extern char aNavigatorPatha[36]; // weak extern char aNavigatorWai_0[32]; // weak extern char aNavigatorWai_1[41]; // weak extern char aNavigatorMap_1[35]; // weak extern char aNavigatorMap_2[37]; // weak extern char aNavigatorVirtu[36]; // weak extern char aNavigatorVir_0[37]; // weak extern char aNavigatorVir_1[36]; // weak extern char aCcharactertitl[]; // idb extern char aCcharacterti_1[66]; // weak extern char aCcharacterti_0[48]; // weak extern char aCcharacterti_3[58]; // weak extern char aCcharacterti_2[40]; // weak extern char aCcharacterti_5[61]; // weak extern char aSend_nc_ct_d_0[42]; // weak extern char aSend_nc_ct_db_[49]; // weak extern char aCcharacterti_4[43]; // weak extern char aSend_nc_ct_d_1[41]; // weak extern char aCcharacterti_6[51]; // weak extern char asc_6F9C74[56]; // weak extern int (__thiscall *off_6F9CB0)(void *, char); // weak extern int (__stdcall *off_6F9CD4)(int, int); // weak extern int (__stdcall *off_6F9CDC[2])(int); // weak extern char aCguildzoneClea[42]; // weak extern char aCguildzoneSe_0[58]; // weak extern char aCguildzoneSend[40]; // weak extern char aCguildzoneRecv[43]; // weak extern int (__stdcall *off_6F9DC8)(int, int); // weak extern char aCguildzoneRe_0[54]; // weak extern char aRaidtaskRt_bro[41]; // weak extern char aRaidtaskRt_sen[53]; // weak extern char aRaidtaskRt_add[23]; // weak extern char aRaidtaskRt_del[25]; // weak extern int (__thiscall *off_6F9EA0)(void *, char); // weak extern int (__thiscall *off_6F9EAC)(void *, char); // weak extern int (__thiscall *off_6F9EB8)(void *, char); // weak extern int (__thiscall *off_6F9EC4)(void *, char); // weak extern int (__thiscall *off_6F9ED0)(void *, char); // weak extern int (__thiscall *off_6F9EDC)(void *, char); // weak extern int (__thiscall *off_6F9EEC)(void *, char); // weak extern int (__thiscall *off_6F9EFC)(void *, char); // weak extern int (__thiscall *off_6F9F0C)(void *, char); // weak extern int (__thiscall *off_6F9F1C)(void *, char); // weak extern int (__thiscall *off_6F9F2C)(void *, char); // weak extern char aActionrangefac[35]; // weak extern char aCannotFindActi[30]; // weak extern char aCannotFindItem[32]; // weak extern int (__thiscall *off_6F9FA0)(void *, char); // weak extern char aActionrangef_1[32]; // weak extern char aActionrangef_0[33]; // weak extern char aMakecondition[16]; // weak extern char aUnexpectedCond[26]; // weak extern char aItemactionco_0[34]; // weak extern char aItemactioncond[32]; // weak extern int (__stdcall *off_6FA064)(int, int, int); // weak extern int (__stdcall *off_6FA078)(int, int, int); // weak extern int (__stdcall *off_6FA08C)(int, int, int); // weak extern int (__stdcall *off_6FA0A0)(int, int, int); // weak extern int (__stdcall *off_6FA0B4)(int, int, int); // weak extern int (__stdcall *off_6FA0C8)(int, int, int); // weak extern int (__thiscall *off_6FA0DC)(void *, char); // weak extern int (__stdcall *off_6FA0FC)(int, int, int); // weak extern int (__thiscall *off_6FA110)(void *, char); // weak extern int (__thiscall *off_6FA130)(void *, char); // weak extern int (__thiscall *off_6FA150)(void *, char); // weak extern int (__thiscall *off_6FA170)(void *, char); // weak extern int (__thiscall *off_6FA190)(void *, char); // weak extern char aUnknownEffect_[41]; // weak extern int (__thiscall *off_6FA1DC)(void *, char); // weak extern char aUnknownEffec_0[40]; // weak extern char aActionetctypeE[34]; // weak extern char aMakeeffect[13]; // weak extern char aUseTargettypeF[32]; // weak extern char aCannotFindIt_0[29]; // weak extern char aItemactionef_0[31]; // weak extern char aItemactioneffe[29]; // weak extern int (__thiscall *off_6FA2D8)(void *, char); // weak extern int (__thiscall *off_6FA2E0)(void *, char); // weak extern int (__stdcall *off_6FA304)(int, int); // weak extern char aItemactionob_6[43]; // weak extern int (__stdcall *off_6FA338)(int, int); // weak extern char aItemactionobse[65]; // weak extern char aItemactionob_0[61]; // weak extern char aItemactionob_1[64]; // weak extern char aItemactionob_3[54]; // weak extern char aItemactionob_2[52]; // weak extern int (__thiscall *off_6FA478)(void *, char); // weak extern char aItemactionob_4[47]; // weak extern char aItemactionob_7[52]; // weak extern char aItemactionob_9[47]; // weak extern char aItemactionob_8[49]; // weak extern int (__thiscall *off_6FA590)(void *, char); // weak extern int (__thiscall *off_6FA598)(void *, char); // weak extern int (__thiscall *off_6FA5A0)(void *, char); // weak extern char aBossfieldconte[56]; // weak extern char asc_6FA5DC[56]; // weak extern char asc_6FA614[46]; // weak extern char asc_6FA644[45]; // weak extern char asc_6FA674[52]; // weak extern char asc_6FA6A8[49]; // weak extern char asc_6FA6DC[58]; // weak extern char asc_6FA718[55]; // weak extern char aHpregen[8]; // weak extern char aMr[3]; // weak extern char aAc[3]; // weak extern char aMobexp[7]; // weak extern char asc_6FA768[52]; // weak extern char asc_6FA79C[57]; // weak extern char asc_6FA7D8[54]; // weak extern char asc_6FA810[56]; // weak extern char asc_6FA848[53]; // weak extern char asc_6FA880[64]; // weak extern char asc_6FA8C0[61]; // weak extern char aMobtargetsel_4[38]; // weak extern char aBossfieldcon_0[61]; // weak extern char asc_6FA968[47]; // weak extern char aServentbuffb_2[52]; // weak extern char aServentbuffb_1[54]; // weak extern char aServentbuffb_0[32]; // weak extern char aServentbuffbos[57]; // weak extern char a__9dataShin_73[]; // idb extern char aBossfieldcon_1[50]; // weak extern char aBossfieldcon_2[56]; // weak extern char asc_6FAAE8[45]; // weak extern char aBossfieldcon_6[72]; // weak extern char aBossfieldcon_5[77]; // weak extern char aBossfieldcon_4[83]; // weak extern char a__9dataShin_74[]; // idb extern char aBossfieldcon_3[52]; // weak extern char aBossfieldcon_7[58]; // weak extern char asc_6FAC98[51]; // weak extern char asc_6FACCC[48]; // weak extern char aBossfieldco_11[78]; // weak extern char aBossfieldco_10[76]; // weak extern char aBossfieldcon_9[78]; // weak extern char aBossfieldcon_8[56]; // weak extern char aMobtargetbou_7[34]; // weak extern char aEntrance[9]; // weak extern char asc_6FAE58[42]; // weak extern char asc_6FAE84[39]; // weak extern char aBossfieldco_14[76]; // weak extern char aBossfieldco_13[72]; // weak extern char a__9dataShin_75[]; // idb extern char aBossfieldco_12[58]; // weak extern char aScriptS[]; // idb extern char aSS_0[]; // idb extern int (__thiscall *off_6FAFD4)(void *, char); // weak extern char aCpet_unsummonU[34]; // weak extern char aCpet_unsummo_0[36]; // weak extern char aCpet_unsummonG[42]; // weak extern char aCpet_unsummonP[42]; // weak extern char aCpet_unsummonN[34]; // weak extern char aCpet_unsummonE[33]; // weak extern char aLogoutwait[11]; // weak extern char aRiding[7]; // weak extern char aBooth[6]; // weak extern char aHouse[6]; // weak extern char aCorpse[7]; // weak extern char aFight[6]; // weak extern char aNormal[7]; // weak extern char aLinking[8]; // weak extern int (__stdcall *off_6FB10C)(int, int, int); // weak extern int (__stdcall *off_6FB114)(int, int, int); // weak extern int (__thiscall *off_6FB124)(void *, char); // weak extern int (__thiscall *off_6FB13C)(void *, char); // weak extern int (__thiscall *off_6FB154)(void *, char); // weak extern int (__thiscall *off_6FB16C)(void *, char); // weak extern int (__thiscall *off_6FB184)(void *, char); // weak extern int (__thiscall *off_6FB19C)(void *, char); // weak extern int (__thiscall *off_6FB1B4)(void *, char); // weak extern int (__thiscall *off_6FB1CC)(void *, char); // weak extern int (__thiscall *off_6FB1E4)(void *, char); // weak extern int (__thiscall *off_6FB1FC)(void *, char); // weak extern int (__thiscall *off_6FB214)(void *, char); // weak extern int (__thiscall *off_6FB22C)(void *, char); // weak extern int (__thiscall *off_6FB244)(void *, char); // weak extern int (__thiscall *off_6FB25C)(void *, char); // weak extern int (__thiscall *off_6FB274)(void *, char); // weak extern int (__thiscall *off_6FB28C)(void *, char); // weak extern char aRjerlthreh[11]; // weak extern char aEkfflrlthreh[13]; // weak extern char aZs_start_sun[13]; // weak extern char aZs_start_tough[15]; // weak extern char aZs_start_sleep[15]; // weak extern char aZs_start_home[14]; // weak extern char aZs_start_long[14]; // weak extern char aZs_start_sky[13]; // weak extern char aZs_start_wide[14]; // weak extern char aZs_start_black[15]; // weak extern char aZs_start_sink[14]; // weak extern char aZs_start_open[14]; // weak extern char aZs_start_yello[16]; // weak extern char aZs_start_house[15]; // weak extern char aZs_start_earth[15]; // weak extern char aZs_start_star[14]; // weak extern char aZs_start_full[14]; // weak extern char aZs_start_moon[14]; // weak extern char aZs_service_cer[25]; // weak extern char aZs_service_sta[24]; // weak extern char aZs_service_ioc[16]; // weak extern char aZs_service_mai[22]; // weak extern char aZs_service_acc[20]; // weak extern char aZs_service_mul[23]; // weak extern char aDhsmfskfwk[11]; // weak extern char aFpwltmxmcheck[14]; // weak extern char aVmflsxm[8]; // weak extern int (__thiscall *off_6FB46C)(void *, char); // weak extern char aCluabroadcast[14]; // weak extern char aTonumber[9]; // weak extern char aCexeccheck[11]; // weak extern char aQuesteventS[]; // idb extern char aCdebuglog[10]; // weak extern char aCmobregen_xyMa[30]; // weak extern char aCmobregen_xySo[36]; // weak extern char aCmobregen_xy[13]; // weak extern char aCmobregen_objM[31]; // weak extern _UNKNOWN unk_6FB52C; // weak extern char aCmobregen_obj[14]; // weak extern char aCdistancesquar[15]; // weak extern char aCplayerexist[13]; // weak extern char aCnpcvanish[11]; // weak extern char aCcursec[8]; // weak extern char aCcurrentsecond[15]; // weak extern _UNKNOWN unk_6FB5B4; // weak extern char aCgetquesthero_[18]; // weak extern char aCgetquesther_0[22]; // weak extern char aCgetplayername[15]; // weak extern char aCaggroset[10]; // weak extern char aCisobjectdead[14]; // weak extern char aCobjecthp[10]; // weak extern char aCsetabstate[12]; // weak extern char aCdropitemDropF[22]; // weak extern char aCdropitemNullP[26]; // weak extern char aCdropitemItemN[27]; // weak extern char aCdropitem[10]; // weak extern char aCobjectlocate[14]; // weak extern char aCrunto[7]; // weak extern char aCwalkto[8]; // weak extern char aCruntountilblo[17]; // weak extern char aCpermilerate[13]; // weak extern char aCismovable[11]; // weak extern char aCservermenu[12]; // weak extern char aCgetitemlot[12]; // weak extern char aCsetnpcisitemd[18]; // weak 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[14]; // weak extern char aCnpcchattest[13]; // weak extern char aCmobdialog[11]; // weak extern char aCmobdialog_o_0[33]; // weak extern char aCmobdialog_obj[15]; // weak extern char aCmobshout[10]; // weak extern char aCcameramove[12]; // weak extern _UNKNOWN unk_6FB800; // weak extern char aCfollow[8]; // weak extern _UNKNOWN unk_6FB818; // weak extern char aCdooraction[12]; // weak extern char aCgetareaobject[15]; // weak extern char aCscriptmessage[15]; // weak extern char aCscriptmessa_1[37]; // weak extern char aCscriptmessa_0[19]; // weak extern char aCnpcmenuopen[13]; // weak extern char aCcastingbar[12]; // weak extern char aCtimer[7]; // weak extern char aCtimer_objPack[29]; // weak extern char aStop[5]; // weak extern char aStart[6]; // weak extern char aCanimate[9]; // weak extern char aCanimateforced[17]; // weak extern char aCgroupregenins[20]; // weak extern _UNKNOWN unk_6FB914; // weak extern _UNKNOWN unk_6FB92C; // weak extern _UNKNOWN unk_6FB934; // weak extern _UNKNOWN unk_6FB948; // weak extern _UNKNOWN unk_6FB958; // weak extern _UNKNOWN unk_6FB964; // weak extern _UNKNOWN unk_6FB96C; // weak extern _UNKNOWN unk_6FB978; // weak extern _UNKNOWN unk_6FB988; // weak extern _UNKNOWN unk_6FB998; // weak extern _UNKNOWN unk_6FB9AC; // weak extern char aCgetbaseclass[14]; // weak extern char aCrewardNoKqInf[21]; // weak extern char aKq[3]; // weak extern char aCreward[8]; // weak extern char aCendofkingdo_0[41]; // weak extern char aCendofkingdomq[19]; // weak extern char aCwillmovement[14]; // weak extern char aClinktoall[11]; // weak extern char aCmove2where[12]; // weak extern char aKeeptime[9]; // weak extern char aKingdom[8]; // weak extern char aMobchrlocflag[14]; // weak extern char aAlreadydamaged[15]; // weak extern char aNotdamaged[11]; // weak extern char aLinktown[9]; // weak extern char aMine[5]; // weak extern char aTempler[8]; // weak extern char aMobdmg[7]; // weak extern char aBlueflag[9]; // weak extern char aRedflag[8]; // weak extern char aMobchief[9]; // weak extern char aMobnormal[10]; // weak extern char aIconindex[10]; // weak extern char aY[2]; // weak extern char asc_6FBAFC[2]; // weak extern char aGroup[6]; // weak extern char aCmapmark[9]; // weak extern char aCmapmark_objPa[31]; // weak extern char aCmapmark_obj[13]; // weak extern char aCmapmark_field[20]; // weak extern char aCgetlevel[10]; // weak extern char aCsetfieldscrip[16]; // weak extern char aServantsummon[14]; // weak extern char aObjectdied[11]; // weak extern char aMaplogout[10]; // weak extern char aTutorial[9]; // weak extern char aItemuse[8]; // weak extern char aMaplogin[9]; // weak extern _UNKNOWN unk_6FBBBC; // weak extern char aCaggroreset[12]; // weak extern char aCanrecovery[12]; // weak extern char aMobaggro[9]; // weak extern char aCsetmobattr[12]; // weak extern char aCnotice[8]; // weak extern char aCnoticestring[14]; // weak extern char aCmobregen_circ[17]; // weak extern char aCmobregen_re_0[24]; // weak extern char aCmobregen_rect[20]; // weak extern char aCisequipitem[13]; // weak extern char aCmobchat[9]; // weak extern char aCobjectcount[13]; // weak extern char aCmobsuicide[12]; // weak extern char aCmapobjectcont[18]; // weak extern char aCsetabstateina[18]; // weak extern char aCgetmovestate[14]; // weak extern char aFail_0[5]; // weak extern char aSuccess_1[8]; // weak extern char aCquestresult[13]; // weak extern char aCgetmaster[11]; // weak extern char aCpartyjoin[11]; // weak extern char aCscoreinfoPack[29]; // weak extern char aCscoreinfo[11]; // weak extern char aCscoreinfo_all[20]; // weak extern char aCstartmsg_alli[19]; // weak extern char aCcharshapeequi[23]; // weak extern char aCemotion[9]; // weak extern char aCkqrewardindex[15]; // weak extern char aCgetcharno[11]; // weak extern char aCgetadminlevel[15]; // weak extern char aCplaysound[11]; // weak extern char aCeffectmsg[11]; // weak extern char aCeffectmsg_all[20]; // weak extern char aCgetmobid[10]; // weak extern char aCstaticdamage_[18]; // weak extern char aCmobdialog_fil[20]; // weak extern char aCsetservantfla[16]; // weak extern char aKingdomques_13[48]; // weak extern char aCobjectlocated[23]; // weak extern char aCeffectregen_o[20]; // weak extern char aCsomebodyshout[15]; // weak extern char aCgetkqlimitsec[18]; // weak extern char aCshowkqtimerwi[21]; // weak extern char aCshowkqtimer_1[43]; // weak extern char aCshowkqtimer_0[25]; // weak extern char aCvanishtimer[13]; // weak extern char aCgetcurmapinde[16]; // weak extern char aSpecificcoord[14]; // weak extern char aAnywhere[9]; // weak extern char aCcastteleport[14]; // weak extern char aCgetitemindex[14]; // weak extern char aCgetabstate[12]; // weak extern char aBeawakened[11]; // weak extern char aRemain30sec[12]; // weak extern char aRemain1min[11]; // weak extern char aStarted[8]; // weak extern char aCnoticeredwarn[22]; // weak extern char aCusemoney[10]; // weak extern char aCtopviewPacket[27]; // weak extern char aCtopview[9]; // weak extern char aCsystemmessa_0[37]; // weak extern char aCsystemmessage[15]; // weak extern char aChideotherpl_0[35]; // weak extern char aChideotherplay[17]; // weak extern char aCeffecttimerPa[31]; // weak extern char aCeffecttimer[13]; // weak extern char aCkillobject[12]; // weak extern char aCfindnearest_0[38]; // weak extern char aCfindnearestmo[20]; // weak extern char aCsavetutoria_0[36]; // weak extern char aCsavetutoriali[18]; // weak extern char aCprogresstut_0[36]; // weak extern char aCprogresstutor[18]; // weak extern char aCgettutorialin[17]; // weak extern char aClevelup[9]; // weak extern char aCmobregen_xy_l[19]; // weak extern char aCcameramove__0[34]; // weak extern char aCcameramove_ob[16]; // weak extern char aCsetsightstate[15]; // weak extern char aCmovelayer[11]; // weak extern char aCfreestatinitP[32]; // weak extern char aCfreestatinit[14]; // weak extern char aCwaitidle[10]; // weak extern char aCmobdetectrang[16]; // weak extern char aCgetkqteamtype[15]; // weak extern char aCiskqjoiner[12]; // weak extern char aCsetteambattle[15]; // weak extern char aCsetcanuserevi[21]; // weak extern char aCsetcanusere_0[22]; // weak extern char aCsetrevivedela[20]; // weak extern char aCdirectional_0[36]; // weak extern char aCdirectionalar[18]; // weak extern char aCdeldirectio_0[39]; // weak extern char aCdeldirectiona[21]; // weak extern char aCgetscriptstri[17]; // weak extern char aCgetmapname[12]; // weak extern char aCnotice_obj[12]; // weak extern char aCsetobjectdiec[16]; // weak extern char aCdepolymorph[13]; // weak extern char aCpet_ismaste_6[43]; // weak extern char aCpet_ismaste_5[49]; // weak extern char aCpet_ismaste_4[49]; // weak extern char aCpet_ismaste_3[41]; // weak extern char aCpet_ismaste_2[44]; // weak extern char aCpet_ismaste_1[46]; // weak extern char aCpet_ismaste_0[38]; // weak extern char aCpet_ismasterc[37]; // weak extern char aCpet_getmind_2[35]; // weak extern char aCpet_getmindGe[41]; // weak extern char aCpet_getmindPl[41]; // weak extern char aCpet_getmind_1[33]; // weak extern char aCpet_getmind_0[36]; // weak extern char aCpet_getmindPe[38]; // weak extern char aCpet_getmindNo[30]; // weak extern char aCpet_getmindEr[29]; // weak extern char aCpet_getstre_6[37]; // weak extern char aCpet_getstre_5[43]; // weak extern char aCpet_getstre_4[43]; // weak extern char aCpet_getstre_3[35]; // weak extern char aCpet_getstre_2[38]; // weak extern char aCpet_getstre_1[40]; // weak extern char aCpet_getstre_0[32]; // weak extern char aCpet_getstress[31]; // weak extern char aCpet_getwalk_6[40]; // weak extern char aCpet_getwalk_5[46]; // weak extern char aCpet_getwalk_4[46]; // weak extern char aCpet_getwalk_3[38]; // weak extern char aCpet_getwalk_2[41]; // weak extern char aCpet_getwalk_1[43]; // weak extern char aCpet_getwalk_0[35]; // weak extern char aCpet_getwalksp[34]; // weak extern char aCpet_getruns_6[39]; // weak extern char aCpet_getruns_5[45]; // weak extern char aCpet_getruns_4[45]; // weak extern char aCpet_getruns_3[37]; // weak extern char aCpet_getruns_2[40]; // weak extern char aCpet_getruns_1[42]; // weak extern char aCpet_getruns_0[34]; // weak extern char aCpet_getrunspe[33]; // weak extern char aScript_0[7]; // weak extern char aTalk[5]; // weak extern char aRotation[9]; // weak extern char aRoaming_0[8]; // weak extern char aAttack_1[7]; // weak extern char aDance[6]; // weak extern char aRevolution[11]; // weak extern char aCpet_getact_10[47]; // weak extern char aCpet_getacti_9[38]; // weak extern char aCpet_getacti_8[62]; // weak extern char aLink_0[5]; // weak extern char aDie_0[4]; // weak extern char aFollow[7]; // weak extern char aCpet_getacti_7[45]; // weak extern char aIdle[5]; // weak extern char aCpet_getacti_6[43]; // weak extern char aCpet_getacti_5[49]; // weak extern char aCpet_getacti_4[49]; // weak extern char aCpet_getacti_3[41]; // weak extern char aCpet_getacti_2[44]; // weak extern char aCpet_getacti_1[46]; // weak extern char aCpet_getacti_0[38]; // weak extern char aCpet_getaction[37]; // weak extern char aCpet_changemin[38]; // weak extern char aCsimplechatscr[21]; // weak extern char aCobjectsound[13]; // weak extern char aCobjecteffect[14]; // weak extern char aCactbyeventcod[16]; // weak extern char aCisnoattacorno[19]; // weak extern char aCisinarea[10]; // weak extern char aCshowrankingli[35]; // weak extern char aNscore[7]; // weak extern char aScharid[8]; // weak extern char aNranking[9]; // weak extern char aCsendrankingli[17]; // weak extern char aCaddcharactert[37]; // weak extern char aCsetcharactert[19]; // weak extern char aCtimerstartPac[30]; // weak extern char aCtimerstart[12]; // weak extern char aCtimerendPacke[28]; // weak extern char aCtimerend[10]; // weak extern char aCscriptmsg_wor[35]; // weak extern char aCscriptmsg[11]; // weak extern char aCscriptmsgPack[29]; // weak extern char aCsetitemdropmo[18]; // weak extern char aCsetfreebattle[15]; // weak extern char aCrevivalall[12]; // weak extern char aCscoretoplistP[32]; // weak extern char aHandle[7]; // weak extern char aScore[6]; // weak extern char aDeath[6]; // weak extern char aKill[5]; // weak extern char aCscoretoplist[14]; // weak extern char aCscoreresultli[17]; // weak extern char aCitemerase[11]; // weak extern char aCquestresult_i[24]; // weak extern char aCmobdialog_str[18]; // weak extern char aClocationrotat[16]; // weak extern char aCgetmovespeed[14]; // weak extern char aCgetwalkspeed[14]; // weak extern char aCstaticrunspee[16]; // weak extern char aCstaticwalkspe[17]; // weak extern char aCrandom[8]; // weak extern char aCclasschangeop[17]; // weak extern char aCscoreboard[12]; // weak extern char aCwinter_event_[34]; // weak extern char aCvanishreserv[14]; // weak extern char aCmovestop[10]; // weak extern char aCisobjectalrea[21]; // weak extern char aCfindattackblo[23]; // weak extern char aCrandomint[11]; // weak extern char aCaiscriptset[13]; // weak extern char aCresetabstate[14]; // weak extern char aCisinmap[9]; // weak extern char aCisinbattle[12]; // weak extern char aCnpcskilluse[13]; // weak extern char aCabstaterestti[17]; // weak extern char aCmessage[9]; // weak extern char aCnpcchat[9]; // weak extern char aCgroupregen[12]; // weak extern char aCregengroupact[17]; // weak extern char aAxiallistmobin[49]; // weak extern char aAxiallistmob_1[34]; // weak extern char aCvanishall[11]; // weak extern char aCsetnpcparam[13]; // weak extern char aCobjecttype[12]; // weak extern char aMobattack[10]; // weak extern char aMobdamaged[11]; // weak extern char aNpcclick[9]; // weak extern char aCaiscriptfunc[14]; // weak extern char aCskillblast[12]; // weak extern char aCeffectregen_x[16]; // weak extern char aAxiallistenemy[39]; // weak extern char aCgettargetlist[15]; // weak extern char aCdamaged[9]; // weak 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[22]; // weak extern char aCmagicfieldspr[18]; // weak extern char aCsendgamelogda[23]; // weak extern char aCsendgamelog_0[23]; // weak extern char aCnearobjectl_0[34]; // weak extern char aCnearobjectlis[16]; // weak extern char aCsetabstate_ra[18]; // weak extern char aCscriptmessa_3[39]; // weak extern char aCscriptmessa_2[21]; // weak extern char aCaggrolistsize[15]; // weak extern char aCdepolymorph_a[18]; // weak extern char aCaggrolist[11]; // weak extern char aSo_objecttype[]; // idb extern char aSo_mobile_geti[]; // idb extern char aCobjectfind[12]; // weak extern char aCfindnearplaye[16]; // weak extern char aCgetnearestobj[22]; // weak extern char aCmobweaponrate[15]; // weak extern char aCgetplayerli_0[33]; // weak extern char aCgetplayerlist[15]; // weak extern char aCgetareaobje_1[37]; // weak extern char aCgetareaobje_0[19]; // weak extern char aJump[5]; // weak extern char aChat[5]; // weak extern char aCtriggerregist[15]; // weak extern char aCgetnearobjl_0[41]; // weak extern char aCgetnearobjlis[23]; // weak extern char aCgetwhokillme[14]; // weak extern char aCtargetchangen[18]; // weak extern char aCgetcurrentski[21]; // weak extern char aCdropfilm[10]; // weak extern char aCrewarditem_ch[22]; // weak extern char aCscoreboard_al[21]; // weak extern char aCgetrunspeed[13]; // weak extern char aCscriptmsg_w_0[17]; // weak extern char aCaddcharacte_0[19]; // weak extern char aCgetobjectmode[15]; // weak extern char aCgetcoord_circ[17]; // weak extern char aCpet_savetende[18]; // weak extern char aCpet_changem_0[16]; // weak extern char aCpet_getact_11[21]; // weak extern char aCpet_unsummon[14]; // weak extern char aCpet_getruns_7[17]; // weak extern char aCpet_getwalk_7[18]; // weak extern char aCpet_getstre_7[15]; // weak extern char aCpet_getmind[13]; // weak extern char aCpet_ismaste_7[21]; // weak extern char aCgetregistnumb[17]; // weak extern char aCsetobjectdire[17]; // weak extern char aCsystemmessa_1[19]; // weak extern char aCmapfog[8]; // weak extern char aCemoticon[10]; // weak extern char aCviewslotunequ[20]; // weak extern char aCviewslotequip[15]; // weak extern char aCpartyleave[12]; // weak extern char aCinvenitemdest[18]; // weak extern char aCassertlog[11]; // weak extern char aCrewarditem_al[21]; // weak extern char aCrewarditem[12]; // weak extern char aCquestmobkill_[23]; // weak extern char aCquestmobkill[14]; // weak extern char aCtimer_obj[11]; // weak extern char aCmobdialog_ran[17]; // weak extern char aCtargethandle[14]; // weak extern char aCmobidfind[11]; // weak extern _UNKNOWN unk_6FD710; // weak extern char aCApiAttemptToP[40]; // weak extern char a_[]; // idb extern char asc_6FD744[]; // idb extern char aFunctionSD[17]; // weak extern char aMainChunk[11]; // weak extern char aFunctionS[14]; // weak extern char a___tailCalls__[21]; // weak extern char aIn[5]; // weak extern char aD_2[4]; // weak extern char aS_2[6]; // weak extern char aSlnt[]; // idb extern char a___[6]; // weak extern char aStackTraceback[17]; // weak extern char aSD_0[8]; // weak extern char aSl[]; // idb extern char aSS_1[7]; // weak extern char aExit[5]; // weak extern char aStackOverflow[15]; // weak extern char aStackOverflowS[20]; // weak extern char aBufferTooLarge[17]; // weak extern char aCannotSSS[17]; // weak extern char aQ[4]; // weak extern char aRead[5]; // weak extern void *off_6FD83C; // weak extern char aReopen[7]; // weak extern char aStdin[7]; // weak extern char aObjectLengthIs[30]; // weak extern char aSP[7]; // weak extern void *off_6FD878; // weak extern char a__tostring[11]; // weak extern char a_loaded[8]; // weak extern char aPanicUnprotect[]; // idb extern char aBadConversionN[68]; // weak extern char aVersionMismatc[54]; // weak extern char aMultipleLuaVms[26]; // weak extern char aBadArgumentDTo[30]; // weak extern char aCallingSOnBadS[25]; // weak extern char aMethod[7]; // weak extern char aN[]; // idb extern char aBadArgumentDS[22]; // weak extern char aSExpectedGotS[20]; // weak extern char aTooManyUpvalue[18]; // weak extern char aInvalidOptionS[20]; // weak extern char aTostring[9]; // weak extern char *off_6FDB50[11]; // weak extern int dword_6FDB80[]; // weak extern char *off_6FDBB0; // weak extern char aTostringMustRe[43]; // weak extern char asc_6FDC94[]; // idb extern char asc_6FDC98[1]; // idb extern char a__metatable[12]; // weak extern char aCannotChangeAP[36]; // weak extern char a__pairs[8]; // weak extern char a__ipairs[9]; // weak extern char aReaderFunction[37]; // weak extern char aTooManyNestedF[26]; // weak extern char aLoad[8]; // weak extern char aBt[3]; // weak extern char aAssertionFaile[18]; // weak extern char a_version[9]; // weak extern char aLua5_2[8]; // weak extern char a_g[3]; // weak extern char *off_6FDE18; // weak extern char aTryingToAccess[35]; // weak extern char aControlStructu[27]; // weak extern char aOpcodes[8]; // weak extern char aFunctionOrExpr[35]; // weak extern char aConstants[10]; // weak extern char aRunning[8]; // weak extern char *off_6FDF74; // weak extern char aTooManyResults[27]; // weak extern char aCannotResumeDe[29]; // weak extern char aTooManyArgumen[29]; // weak extern char aSuspended[10]; // weak extern char aDead_1[5]; // weak extern char byte_6FE031[]; // weak extern char *off_6FE1E8[5]; // weak extern char *off_6FE200; // weak extern char aFunc[5]; // weak extern char aActivelines[12]; // weak extern char aIstailcall[11]; // weak extern char aNamewhat[9]; // weak extern char aName_0[5]; // weak extern char aIsvararg[9]; // weak extern char aNparams[8]; // weak extern char aNups[5]; // weak extern char aCurrentline[12]; // weak extern char aWhat[5]; // weak extern char aLastlinedefine[16]; // weak extern char aLinedefined[12]; // weak extern char aShort_src[10]; // weak extern char aSource[7]; // weak extern void *off_6FE374; // weak extern char aFlnstu[7]; // weak extern char aU[]; // idb extern char a_hkey[6]; // weak extern char a__mode[7]; // weak extern char aK[2]; // weak extern char aExternalHook[14]; // weak extern char aDebugCommand[17]; // weak extern char aCont[6]; // weak extern char aLua_debug[12]; // weak extern char aVararg[10]; // weak extern char aTemporary[13]; // weak extern char aC_1[]; // idb extern char aC_0[5]; // weak extern char aLua_0[4]; // weak extern char a__1[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[5]; // weak extern char aLocal[6]; // weak extern char aMetamethod[11]; // weak extern char aForIterator[13]; // weak extern char aSDS_0[10]; // weak extern char aPerformArithme[22]; // weak extern char aAttemptToCom_0[30]; // weak extern char aAttemptToCompa[33]; // weak extern char aErrorInErrorHa[24]; // weak extern char aAttemptToYie_0[42]; // weak extern char aAttemptToYield[51]; // weak extern char aAttemptToLoadA[42]; // weak extern char aText[5]; // weak extern char aBinary[7]; // weak extern char aCStackOverflow[17]; // weak extern char aErrorIn__gcMet[30]; // weak extern char aNoMessage[11]; // weak extern char aString[]; // idb extern int dword_6FE67C[]; // weak extern char aTable[]; // idb extern char *off_6FE6A0; // weak extern int (__cdecl *off_6FE6A4)(int); // weak extern char a_preload[9]; // weak extern char a__gc[5]; // weak extern char aEnd_0[4]; // idb extern void *off_6FE76C; // weak extern int Origin; // idb extern void *off_6FE784[2]; // weak extern int dword_6FE794; // idb extern char *off_6FE7A0[3]; // weak extern char *off_6FE7B0; // weak extern char *off_6FE810; // weak extern char aFile_0[5]; // weak extern char aClosedFile[12]; // weak extern char aFile[6]; // weak extern char aFileP[10]; // weak extern char aFileClosed[14]; // weak extern char aAttemptToUseAC[29]; // weak extern char a_io_output[11]; // weak extern char aCannotOpenFile[27]; // weak extern char aInvalidModeSSh[47]; // weak extern char aRwa[]; // idb extern char aStandardSFileI[27]; // weak extern char a_io_input[10]; // weak extern char aLf[]; // idb extern char aTooManyArgum_0[19]; // weak extern char aFileIsAlreadyC[23]; // weak extern char a_14g[]; // idb extern char a__index[8]; // weak extern char aCannotCloseSta[27]; // weak extern char aStderr[7]; // weak extern char aStdout[7]; // weak extern char aStdin_0[6]; // weak extern __int16 word_6FEA30; // weak extern char byte_6FEA32; // weak extern void *off_6FEA80; // idb extern char aLexicalElement[25]; // weak extern char aS_3[5]; // weak extern char aCharD[9]; // weak extern char aC_2[5]; // weak extern char aChunkHasTooMan[25]; // weak extern char aMalformedNumbe[17]; // weak extern char aHexadecimalDig[27]; // weak extern char aDecimalEscapeT[25]; // weak extern char aInvalidEscapeS[24]; // weak extern char aUnfinishedStri[18]; // weak extern char aInvalidLongStr[30]; // weak extern void *off_6FEC80; // weak extern void *off_6FECF0; // weak extern char aWrongNumberOfA[26]; // weak extern char aHuge[5]; // weak extern char aPi[3]; // weak extern char aMemoryAllocati[39]; // weak extern char aTooManySLimitI[26]; // weak extern char *off_6FEE88; // weak extern char *off_6FEEA0; // weak extern int (__cdecl *off_6FEEB0[4])(int); // weak extern char aUnableToGetMod[29]; // weak extern char asc_6FEEE4[]; // idb extern char aSystemErrorD[17]; // weak extern char a_clibs[7]; // weak extern char aInit[5]; // weak extern char aNoFileS[15]; // weak extern char aPackage_SMustB[30]; // weak extern char aErrorLoadingMo[46]; // weak extern char aPath[5]; // weak extern char aLuaopen_S[11]; // weak extern char a__0[2]; // weak extern char aCpath[6]; // weak extern char aNoModuleSInFil[30]; // weak extern char aNoFieldPackage[33]; // weak extern char aModuleSNotFoun[25]; // weak extern char aPackage_search[36]; // weak extern char aSearchers[10]; // weak extern char aLua_noenv[10]; // weak extern char byte_6FF028[4]; // idb extern char asc_6FF02C[3]; // idb extern _UNKNOWN unk_6FF030; // weak extern char aPreload[8]; // weak extern char aLoaded[7]; // weak extern char aConfig[7]; // weak extern char a__0[11]; // weak extern char aLua_cpath_5_2[14]; // weak extern char aLua_cpath[10]; // weak extern char a__dllLoadall_d[30]; // weak extern char aLua_path_5_2[13]; // weak extern char aLua__luaLua_In[58]; // weak extern _UNKNOWN unk_6FF0E0; // weak extern char byte_6FF0E8[]; // weak extern char aXx[3]; // idb extern char aNn[3]; // idb extern __int16 word_6FF230; // weak extern char byte_6FF232; // weak extern int dword_6FF234; // weak extern int dword_6FF238; // weak extern char byte_6FF23C; // weak extern char byte_6FF424[]; // weak extern char *off_6FF4E0; // weak extern char (*off_6FF4E4)[2]; // weak extern int dword_6FF4E8; // idb extern void *off_6FF500; // weak extern char *off_6FF520; // weak extern char aUnableToGenera[37]; // weak extern char aFieldSMissingI[33]; // weak extern char aInvalidConvers[36]; // weak extern char aIsdst[6]; // weak extern char aYday[5]; // weak extern char aWday[5]; // weak extern char aYear[5]; // weak extern char aMonth[6]; // weak extern char aDay[4]; // weak extern char aT[3]; // weak extern char aC_5[3]; // weak extern char byte_6FF624[]; // weak extern char byte_6FF625[]; // weak extern char aSExpectedToClo[37]; // weak extern char aLocalVariables[16]; // weak extern char aUpvalues[9]; // weak extern char aCLevels[9]; // weak extern char aGotoSAtLineDJu[56]; // weak extern char aLabelsGotos[13]; // weak extern char aFunctions[10]; // weak extern char aItemsInAConstr[23]; // weak extern char aNameOr___Expec[25]; // weak extern char aFunctionArgume[28]; // weak extern char aCannotUse___Ou[43]; // weak extern char aSyntaxError[13]; // weak extern char aLabelSAlreadyD[38]; // weak extern char aForStep[11]; // weak extern char aForLimit[12]; // weak extern char aForIndex[12]; // weak extern char aForControl[14]; // weak extern char aForState[12]; // weak extern char aForGenerator[16]; // weak extern char aNotEnoughMemor[18]; // weak extern char aByte[]; // idb extern char *off_6FF938; // weak extern char aResultingStrin[27]; // weak extern char aStringSliceToo[22]; // weak extern char aUnableToDumpGi[30]; // weak extern char aInvalidCapture[27]; // weak extern char aInvalidPattern[24]; // weak extern char aMalformedPat_1[35]; // weak extern char aMalformedPat_0[32]; // weak extern char aMalformedPatte[47]; // weak extern char aTooManyCapture[18]; // weak extern char aMissingAfterFI[35]; // weak extern char aUnfinishedCapt[19]; // weak extern char aInvalidCaptu_0[22]; // weak extern char a__[]; // idb extern char aInvalidUseOfCI[42]; // weak extern char aInvalidReplace[33]; // weak extern char a03d[]; // idb extern char aD_3[4]; // weak extern char aInvalidFormatW[45]; // weak extern char aInvalidFormatR[32]; // weak extern char a0_0[]; // idb extern char aInvalidOptio_0[34]; // weak extern char asc_6FFC54[2]; // weak extern _UNKNOWN unk_6FFC88; // weak extern char aInvalidKeyToNe[22]; // weak extern char aTableOverflow[15]; // weak extern char aTableIndexIsNi[19]; // weak extern char *off_6FFD20; // weak extern char aWrongNumberO_0[38]; // weak extern char aInvalidValueSA[53]; // weak extern char aTooManyResul_0[27]; // weak extern char aInvalidOrderFu[35]; // weak extern void *off_6FFEA8; // weak extern char *off_6FFED8[17]; // weak extern char aSSPrecompiledC[25]; // weak extern void *off_6FFF50; // weak extern __int16 word_6FFF54; // weak extern char aBinaryString[14]; // weak extern char aIndex_1[]; // idb extern char aLoopInGettable[17]; // weak extern char aLoopInSettable[17]; // weak extern char aGetLengthOf[14]; // weak extern char aForStepMustBeA[28]; // weak extern char aForLimitMustBe[29]; // weak extern char aForInitialValu[37]; // weak extern char aMachine[8]; // weak extern char aZoneD[]; // idb extern char aWorld[6]; // weak extern char aPw[3]; // weak extern char aWkdbdmldutlstk[16]; // weak extern char aNation[7]; // weak extern char aTitle_0[6]; // weak extern char aFiesta[7]; // weak extern void *off_700094; // weak extern char aGr_php[]; // idb extern char aErrorD[11]; // weak extern char asc_7000AC[4]; // weak extern char aSS_2[]; // idb extern char aS_4[]; // idb extern char aS_[]; // idb extern char off_7000C4[]; // idb extern int (__thiscall *off_7000CC)(void *, char); // weak extern int dword_7000D4; // weak extern int dword_7000D8; // weak extern int dword_7000DC; // weak extern char byte_7000E0; // weak extern int dword_7000E4; // weak extern __int16 word_7000E8; // weak extern char szAgent[]; // idb extern char szVerb[]; // idb extern char aSend_nc_log_ga[47]; // weak extern char aSend_nc_log__0[47]; // weak extern char aSend_nc_log__1[47]; // weak extern char aSend_nc_log__2[47]; // weak extern int (__stdcall *off_7001C4[3])(int); // weak extern char aCgambleobjectG[31]; // weak extern int (*off_7002E4)(); // weak extern int (*off_7002F0)(); // weak extern int (*off_7002FC)(); // weak extern int (*off_700308)(); // weak extern char aGbreward_shn[13]; // weak extern char asc_700350[72]; // weak extern char asc_700398[61]; // weak extern char asc_7003D8[65]; // weak extern char asc_700420[75]; // weak extern char asc_70046C[57]; // weak extern char asc_7004A8[76]; // weak extern char asc_7004F4[58]; // weak extern char asc_700530[89]; // weak extern char asc_700590[89]; // weak extern char asc_7005F0[78]; // weak extern char asc_700640[65]; // weak extern char asc_700688[87]; // weak extern char asc_7006E0[69]; // weak extern char asc_700728[45]; // weak extern char asc_700758[60]; // weak extern char asc_700794[42]; // weak extern char asc_7007C0[70]; // weak extern char asc_700808[52]; // weak extern char asc_700840[79]; // weak extern char asc_700890[61]; // weak extern char asc_7008D0[84]; // weak extern char asc_700924[56]; // weak extern char asc_700960[71]; // weak extern char asc_7009A8[63]; // weak extern char asc_7009E8[60]; // weak extern char asc_700A24[62]; // weak extern char asc_700A68[88]; // weak extern char asc_700AC0[70]; // weak extern char asc_700B08[85]; // weak extern int (__stdcall *off_700B64[3])(int); // weak extern char aCgambledicet_0[54]; // weak extern char aCgambledicetai[36]; // weak extern char aCgambledicet_2[82]; // weak extern char aCgambledicet_1[41]; // weak extern char aCgambledicet_4[71]; // weak extern char aCgambledicet_3[53]; // weak extern char aCgambledicet_5[48]; // weak extern char aCgambledicet_7[71]; // weak extern char aCgambledicet_6[53]; // weak extern char aCgambledicet_9[69]; // weak extern char aCgambledicet_8[51]; // weak extern char aCgambledice_10[53]; // weak extern char aCgambledice_12[73]; // weak extern char aCgambledice_11[55]; // weak extern char aCgambledice_13[59]; // weak extern char aCgambledice_15[79]; // weak extern char aCgambledice_14[61]; // weak extern char aCgambledice_17[74]; // weak extern char aCgambledice_16[56]; // weak extern char aCgambledice_18[59]; // weak extern char aCgambledice_19[65]; // weak extern char aCgambledice_58[52]; // weak extern char aCgambledice_59[46]; // weak extern char aCgambledice_20[53]; // weak extern char aCgambledice_21[58]; // weak extern char aCgambledice_22[51]; // weak extern char aCgambledice_24[74]; // weak extern char aCgambledice_23[56]; // weak extern char aCgambledice_26[66]; // weak extern char aCgambledice_25[63]; // weak extern char aCgambledice_28[76]; // weak extern char aCgambledice_27[58]; // weak extern char aCgambledice_30[79]; // weak extern char aCgambledice_29[61]; // weak extern char aCgambledice_32[81]; // weak extern char aCgambledice_31[63]; // weak extern char aCgambledice_33[64]; // weak extern char aCgambledice_34[58]; // weak extern char aCgambledice_36[65]; // weak extern char aCgambledice_35[47]; // weak extern char aCgambledice_37[44]; // weak extern char aCgambledice_39[77]; // weak extern char aCgambledice_38[59]; // weak extern char aCgambledice_40[51]; // weak extern char aCgambledice_41[42]; // weak extern char aCgambledice_42[50]; // weak extern char aCgambledice_43[51]; // weak extern char aCgambledice_44[51]; // weak extern char aCgambledice_45[51]; // weak extern char aCgambledice_46[51]; // weak extern char aCgambledice_47[47]; // weak extern char aCgambledice_48[48]; // weak extern char aCgambledice_49[48]; // weak extern char aCgambledice_50[48]; // weak extern char aCgambledice_51[60]; // weak extern char aCgambledice_52[60]; // weak extern char aCgambledice_54[64]; // weak extern char aCgambledice_53[46]; // weak extern char aCgambledice_55[50]; // weak extern char aCgambledice_56[56]; // weak extern char asc_701A70[88]; // weak extern char asc_701AC8[70]; // weak extern char asc_701B10[89]; // weak extern char asc_701B70[71]; // weak extern char asc_701BB8[87]; // weak extern char asc_701C10[69]; // weak extern char asc_701C58[88]; // weak extern char asc_701CB0[70]; // weak extern char asc_701CF8[86]; // weak extern char asc_701D50[68]; // weak extern char asc_701D98[75]; // weak extern char asc_701DE8[65]; // weak extern char asc_701E30[75]; // weak extern char asc_701E7C[57]; // weak extern int (__stdcall *off_701EBC[3])(int); // weak extern int (__stdcall *off_701FBC[3])(int); // weak extern int (__thiscall *off_7020BC)(void *, char); // weak extern int (__thiscall *off_7020C4)(void *, char); // weak extern int (__thiscall *off_7020CC)(void *, char); // weak extern int (__thiscall *off_7020D4)(void *, char); // weak extern int (__thiscall *off_7020DC)(void *, char); // weak extern int (__thiscall *off_7020E4)(void *, char); // weak extern int (__thiscall *off_7020EC)(void *, char); // weak extern int (__thiscall *off_7020F4)(void *, char); // weak extern char asc_7020F8[88]; // weak extern char asc_702150[70]; // weak extern char asc_702198[82]; // weak extern char asc_7021F0[89]; // weak extern char asc_702250[71]; // weak extern char asc_702298[66]; // weak extern char asc_7022E0[84]; // weak extern char asc_702338[71]; // weak extern char asc_702380[88]; // weak extern char asc_7023D8[70]; // weak extern char asc_702420[93]; // weak extern char asc_702480[71]; // weak extern char aSlotmachineSlo[56]; // weak extern char aSlotmachineS_0[48]; // weak extern char aSlotmachineS_1[49]; // weak extern char aSlotmachineS_2[47]; // weak extern char aSlotmachineS_3[44]; // weak extern char aSlotmachineS_4[52]; // weak extern char aSlotmachineS_5[51]; // weak extern char aSlotmachineS_6[42]; // weak extern char aSlotmachineS_7[66]; // weak extern char aSlotmachine_42[66]; // weak extern char aSlotmachineS_8[66]; // weak extern char aSlotmachineS_9[52]; // weak extern char aSlotmachine_10[58]; // weak extern char aSlotmachine_11[70]; // weak extern char aSlotmachine_13[83]; // weak extern char aSlotmachine_12[65]; // weak extern char aSlotmachine_14[57]; // weak extern char aSlotmachine_15[62]; // weak extern char aSlotmachine_16[88]; // weak extern char aSlotmachine_17[78]; // weak extern char asc_7029A8[55]; // weak extern char asc_7029E0[36]; // weak extern char asc_702A08[76]; // weak extern char asc_702A54[58]; // weak extern char aCgambledice_57[82]; // weak extern char aSlotmachine_18[49]; // weak extern char aSlotmachine_19[48]; // weak extern char aSlotmachine_20[43]; // weak extern char aSlotmachine_21[59]; // weak extern char aSlotmachine_22[48]; // weak extern char aSlotmachine_23[46]; // weak extern char aSlotmachine_24[49]; // weak extern char aSlotmachine_25[62]; // weak extern char aSlotmachine_26[45]; // weak extern char aSlotmachine_27[51]; // weak extern char a__9dataShin_78[]; // idb extern char a__9dataShin_77[]; // idb extern char a__9dataShin_76[]; // idb extern char dataShine::a[]; // idb extern char a__9dataShin_79[]; // idb extern char aSlotmachine_29[51]; // weak extern char aSlotmachine_28[71]; // weak extern char aSlotmachine_30[56]; // weak extern char aSlotmachine_31[44]; // weak extern char aGbsmbetcoin_sh[16]; // weak extern char aSlotmachine_32[77]; // weak extern char a__9dataShin_82[]; // idb extern char a__9dataShin_81[]; // idb extern char a__9dataShin_80[]; // idb extern char aSlotmachine_33[64]; // weak extern char aSlotmachine_36[75]; // weak extern char aSlotmachine_35[71]; // weak extern char aSlotmachine_34[57]; // weak extern char aSlotmachine_37[48]; // weak extern char aSlotmachine_39[64]; // weak extern char aSlotmachine_38[47]; // weak extern char asc_7030E0[57]; // weak extern char aSlotmachine_41[75]; // weak extern char aSlotmachine_40[50]; // weak extern char aAiscriptmobc_0[33]; // weak extern char aAiscriptmobcon[55]; // weak extern char a__9dataShin_83[]; // idb extern char aAiscriptpetc_0[33]; // weak extern char aAiscriptpetcon[55]; // weak extern char a__9dataShin_84[]; // idb extern char aPetbase[8]; // weak extern char aPetdummy[9]; // weak extern int (__thiscall *off_7032C8)(void *, char); // weak extern char asc_7032E0[75]; // weak extern char asc_70332C[57]; // weak extern char asc_703368[71]; // weak extern char asc_7033B0[53]; // weak extern char asc_7033E8[62]; // weak extern char aUseeffectUs_53[43]; // weak extern char aUseeffectUs_51[41]; // weak extern char asc_703480[53]; // weak extern char asc_7034B8[44]; // weak extern char asc_7034E4[59]; // weak extern char asc_703520[41]; // weak extern char asc_70354C[54]; // weak extern char asc_703588[78]; // weak extern char asc_7035D8[60]; // weak extern char aG_cardcollectm[18]; // weak extern char asc_703628[65]; // weak extern char aCardcollection[59]; // weak extern char asc_7036A8[74]; // weak extern char asc_7036F4[56]; // weak extern char aCardcollecti_0[47]; // weak extern int (*off_703760)(); // weak extern int (*off_70376C)(); // weak extern int (*off_703778)(); // weak extern int (*off_703784)(); // weak extern int (*off_703790)(); // weak extern int (*off_70379C)(); // weak extern int (*off_7037A8)(); // weak extern int (*off_7037B4)(); // weak extern int (*off_7037C0)(); // weak extern char aCardcollecti_1[46]; // weak extern char aCardcollecti_2[49]; // weak extern char asc_70382C[49]; // weak extern char asc_703860[57]; // weak extern char aCollectcard_sh[16]; // weak extern char aCollectcardmob[24]; // weak extern char aCollectcardsta[24]; // weak extern char aCollectcardrew[22]; // weak extern char aCollectcardtit[21]; // weak extern int (__thiscall *off_703928)(void *, char); // weak extern int (__thiscall *off_703930)(void *, char); // weak extern char a0123456789abcd[23]; // weak extern char byte_703978[]; // weak extern int (__thiscall *off_703990)(void *, char); // weak extern int (__stdcall *off_703998)(float, float); // weak extern int (__stdcall *off_7039A0)(float, float); // weak extern int (__stdcall *off_7039B4[2])(int); // weak extern int dword_703A38; // weak extern char aChargeddeletab[25]; // weak extern char aMinimonautouse[23]; // weak extern int dword_703A74; // weak extern int dword_703A78; // weak extern int dword_703A7C; // weak extern void *off_703A80; // weak extern int dword_703A84; // weak extern int dword_703A88; // weak extern int dword_703A8C; // weak extern int dword_703A90; // weak extern void *off_703A94; // weak extern int dword_703A98; // weak extern int dword_703A9C; // weak extern int dword_703AA0; // weak extern __int16 word_703AA4; // weak extern int dword_703AA8; // weak extern int dword_703AAC; // weak extern void *off_703AB0; // weak extern int dword_703AB4; // weak extern int dword_703AB8; // weak extern int dword_703ABC; // weak extern __int16 word_703AC0; // weak extern int dword_703AC4; // weak extern int dword_703AC8; // weak extern int dword_703ACC; // weak extern int dword_703AD0; // weak extern int dword_703AD4; // weak extern char byte_703AD8; // weak extern int dword_703ADC; // weak extern int dword_703AE0; // weak extern int dword_703AE4; // weak extern __int16 word_703AE8; // weak extern char byte_703AEA; // weak extern char aItemviewequipt[26]; // weak extern int dword_703B08; // weak extern int dword_703B0C; // weak extern void *off_703B10; // weak extern int dword_703B14; // weak extern int dword_703B18; // weak extern int dword_703B1C; // weak extern int dword_703B20; // weak extern void *off_703B24; // weak extern int dword_703B28; // weak extern int dword_703B2C; // weak extern int dword_703B30; // weak extern void *off_703B34; // weak extern int dword_703B38; // weak extern int dword_703B3C; // weak extern int dword_703B40; // weak extern int dword_703B44; // weak extern int dword_703B48; // weak extern char byte_703B4C; // weak extern int dword_703B50; // weak extern int dword_703B54; // weak extern int dword_703B58; // weak extern void *off_703B5C; // weak extern int dword_703B60; // weak extern int dword_703B64; // weak extern int dword_703B68; // weak extern void *off_703B6C; // weak extern int dword_703B70; // weak extern int dword_703B74; // weak extern int dword_703B78; // weak extern void *off_703B7C; // weak extern int dword_703B80; // weak extern int dword_703B84; // weak extern int dword_703B88; // weak extern int dword_703B8C; // weak extern char byte_703B90; // weak extern int dword_703B94; // weak extern int dword_703B98; // weak extern int dword_703B9C; // weak extern int dword_703BA0; // weak extern char byte_703BA4; // weak extern int dword_703BA8; // weak extern int dword_703BAC; // weak extern int dword_703BB0; // weak extern int dword_703BB4; // weak extern __int16 word_703BB8; // weak extern char byte_703BBA; // weak extern char aCharactertit_0[28]; // weak extern int dword_703BD8; // weak extern int dword_703BDC; // weak extern int dword_703BE0; // weak extern int dword_703BE4; // weak extern void *off_703BE8; // weak extern int dword_703BEC; // weak extern int dword_703BF0; // weak extern int dword_703BF4; // weak extern void *off_703BF8; // weak extern int dword_703BFC; // weak extern int dword_703C00; // weak extern int dword_703C04; // weak extern void *off_703C08; // weak extern int dword_703C0C; // weak extern int dword_703C10; // weak extern int dword_703C14; // weak extern int dword_703C18; // weak extern char byte_703C1C; // weak extern int dword_703C20; // weak extern int dword_703C24; // weak extern int dword_703C28; // weak extern int dword_703C2C; // weak extern __int16 word_703C30; // weak extern char byte_703C32; // weak extern int dword_703C34; // weak extern int dword_703C38; // weak extern int dword_703C3C; // weak extern int dword_703C40; // weak extern char byte_703C44; // weak extern int dword_703C48; // weak extern int dword_703C4C; // weak extern int dword_703C50; // weak extern int dword_703C54; // weak extern void *off_703C58; // weak extern char aMinihousefur_0[32]; // weak extern int dword_703C7C; // weak extern int dword_703C80; // weak extern int dword_703C84; // weak extern int dword_703C88; // weak extern void *off_703C8C; // weak extern int dword_703C90; // weak extern int dword_703C94; // weak extern int dword_703C98; // weak extern int dword_703C9C; // weak extern char byte_703CA0; // weak extern int dword_703CA4; // weak extern int dword_703CA8; // weak extern int dword_703CAC; // weak extern void *off_703CB0; // weak extern int dword_703CB4; // weak extern int dword_703CB8; // weak extern int dword_703CBC; // weak extern __int16 word_703CC0; // weak extern char byte_703CC2; // weak extern int dword_703CC4; // weak extern int dword_703CC8; // weak extern __int16 word_703CCC; // weak extern char byte_703CCE; // weak extern int dword_703CD0; // weak extern int dword_703CD4; // weak extern int dword_703CD8; // weak extern int dword_703CDC; // weak extern char byte_703CE0; // weak extern int dword_703CE4; // weak extern int dword_703CE8; // weak extern void *off_703CEC; // weak extern int dword_703CF0; // weak extern int dword_703CF4; // weak extern int dword_703CF8; // weak extern int dword_703CFC; // weak extern void *off_703D00; // weak extern char aMinihousefurni[23]; // weak extern int dword_703D1C; // weak extern int dword_703D20; // weak extern int dword_703D24; // weak extern __int16 word_703D28; // weak extern int dword_703D2C; // weak extern int dword_703D30; // weak extern void *off_703D34; // weak extern int dword_703D38; // weak extern int dword_703D3C; // weak extern int dword_703D40; // weak extern char byte_703D44; // weak extern int dword_703D48; // weak extern int dword_703D4C; // weak extern int dword_703D50; // weak extern int dword_703D54; // weak extern __int16 word_703D58; // weak extern int dword_703D5C; // weak extern int dword_703D60; // weak extern int dword_703D64; // weak extern int dword_703D68; // weak extern void *off_703D6C; // weak extern int dword_703D70; // weak extern int dword_703D74; // weak extern __int16 word_703D78; // weak extern char byte_703D7A; // weak extern int dword_703D7C; // weak extern int dword_703D80; // weak extern int dword_703D84; // weak extern __int16 word_703D88; // weak extern int dword_703D8C; // weak extern int dword_703D90; // weak extern int dword_703D94; // weak extern int dword_703D98; // weak extern __int16 word_703D9C; // weak extern char aCharactertitle[23]; // weak extern int dword_703DB8; // weak extern int dword_703DBC; // weak extern int dword_703DC0; // weak extern void *off_703DC4; // weak extern int dword_703DC8; // weak extern int dword_703DCC; // weak extern void *off_703DD0; // weak extern int (__thiscall *off_703DD8)(void *, char); // weak extern char asc_7041C0[6]; // weak extern int (__stdcall *off_7041CC)(int); // weak extern int (__thiscall *off_7041D4)(void *, char); // weak extern int (__thiscall *off_7041FC)(void *, char); // weak extern int (__stdcall *off_70423C)(char); // weak extern _UNKNOWN unk_704240; // weak extern int (__thiscall *off_70424C)(void *, char); // weak extern char asc_704250[3]; // idb extern char a0X[4]; // weak extern char a00[3]; // idb extern void *off_70425C; // weak extern char byte_704260; // weak extern char aAssertS02d_txt[]; // idb extern char aSAssertclassAc[]; // idb extern char aSAssertclass_0[]; // idb extern char aSAssertclass_1[]; // idb extern int (__thiscall *off_70435C)(void *, char); // weak extern int (__thiscall *off_704364)(void *, char); // weak extern char aRaidsystemFind[]; // idb extern char aRaidAddmemberI[40]; // weak extern char aMapidclient[]; // idb extern char aItemattributec[62]; // weak extern int (__thiscall *off_704414)(void *, char); // weak extern int (__thiscall *off_7044E4)(void *, char); // weak extern int (__thiscall *off_7045B4)(void *, char); // weak extern int (__thiscall *off_704684)(void *, char); // weak extern int (__thiscall *off_704754)(void *, char); // weak extern int (__thiscall *off_704824)(void *, char); // weak extern int (__thiscall *off_7048F4)(void *, char); // weak extern int (__thiscall *off_7049C4)(void *, char); // weak extern int (__thiscall *off_704A94)(void *, char); // weak extern int (__thiscall *off_704B64)(void *, char); // weak extern int (__thiscall *off_704C34)(void *, char); // weak extern int (__thiscall *off_704D04)(void *, char); // weak extern int (__thiscall *off_704DD4)(void *, char); // weak extern int (__thiscall *off_704EA4)(void *, char); // weak extern int (__thiscall *off_704F74)(void *, char); // weak extern int (__thiscall *off_705044)(void *, char); // weak extern int (__thiscall *off_705114)(void *, char); // weak extern int (__thiscall *off_7051E4)(void *, char); // weak extern int (__thiscall *off_7052B4)(void *, char); // weak extern int (__thiscall *off_705384)(void *, char); // weak extern int (__thiscall *off_705454)(void *, char); // weak extern int (__thiscall *off_705524)(void *, char); // weak extern int (__thiscall *off_7055F4)(void *, char); // weak extern int (__thiscall *off_7056C4)(void *, char); // weak extern int (__thiscall *off_705794)(void *, char); // weak extern int (__thiscall *off_705864)(void *, char); // weak extern int (__thiscall *off_705934)(void *, char); // weak extern int (__thiscall *off_705A04)(void *, char); // weak extern int (__thiscall *off_705AD4)(void *, char); // weak extern int (__thiscall *off_705BA4)(void *, char); // weak extern int (__thiscall *off_705C74)(void *, char); // weak extern int (__thiscall *off_705D44)(void *, char); // weak extern int (__thiscall *off_705E14)(void *, char); // weak extern int (__thiscall *off_705EE4)(void *, char); // weak extern int (__thiscall *off_705FB4)(void *, char); // weak extern int (__thiscall *off_706084)(void *, char); // weak extern int (__thiscall *off_706154)(void *, char); // weak extern int (__thiscall *off_706224)(void *, char); // weak extern _UNKNOWN unk_7062F0; // weak extern int (__thiscall *off_7062FC)(void *, char); // weak extern int (__thiscall *off_7063CC)(void *, char); // weak extern char aMobdataboxRe_0[21]; // weak extern char aMobdataboxRead[28]; // weak extern int (__thiscall *off_706408)(void *, char); // weak extern int (__thiscall *off_706410)(void *, char); // weak extern int (__thiscall *off_706418)(void *, char); // weak extern int (__thiscall *off_706420)(void *, char); // weak extern int (__thiscall *off_706428)(void *, char); // weak extern int (__thiscall *off_706430)(void *, char); // weak extern int (__thiscall *off_706438)(void *, char); // weak extern int (__thiscall *off_706440)(void *, char); // weak extern int (__thiscall *off_706448)(void *, char); // weak extern int (__thiscall *off_706450)(void *, char); // weak extern int (__thiscall *off_706458)(void *, char); // weak extern char aMemoryLeakFo_0[37]; // weak extern char aDataDuplicat_7[30]; // weak extern char aMobdataboxMd_1[42]; // weak extern char aMobdataboxMd_0[21]; // weak extern char aConflict[10]; // weak extern char aDDD_1[]; // idb extern char aMobdataboxMdb_[43]; // weak extern char dataShine::a[]; // idb extern char a__9dataShin_93[]; // idb extern char a__9dataShin_92[]; // idb extern char a__9dataShin_91[]; // idb extern char a__9dataShin_90[]; // idb extern char a__9dataShin_89[]; // idb extern char a__9dataShineQu[]; // idb extern char a__9dataShin_88[]; // idb extern char a__9dataShin_87[]; // idb extern char a__9dataShin_86[]; // idb extern char a__9dataShin_85[]; // idb extern char aMobdataboxMd_4[44]; // weak extern char aMobdataboxMd_3[47]; // weak extern char aMobdataboxMd_2[47]; // weak extern char aMobdataboxM_12[67]; // weak extern char aMobdataboxM_11[58]; // weak extern char aMobdataboxM_10[56]; // weak extern char aMobdataboxMd_9[61]; // weak extern char aMobdataboxMd_8[50]; // weak extern char aMobdataboxMd_7[51]; // weak extern char aMobdataboxMd_6[27]; // weak extern char aMobdataboxMd_5[47]; // weak extern int (*off_7068D0[4])(); // weak extern int (__stdcall *off_7068E4[2])(int); // weak extern int (__stdcall *off_7068F8[2])(int); // weak extern int (__stdcall *off_70690C[2])(int); // weak extern int (__stdcall *off_706920[2])(int); // weak extern int (__stdcall *off_706934[2])(int); // weak extern int (__stdcall *off_706948[2])(int); // weak extern int (__stdcall *off_70695C[2])(int); // weak extern int (__stdcall *off_706970[2])(int); // weak extern int (__stdcall *off_706984[2])(int); // weak extern char aItemrewardstor[54]; // weak extern int (*off_7069D0)(); // weak extern int (*off_7069D8[3])(); // weak extern char aItembagIb_init[43]; // weak extern char aSD_2[]; // idb extern char aSD_1[]; // idb extern char aStorageerror_t[]; // idb extern char aCharacterinven[62]; // weak extern char aCharacterinv_0[70]; // weak extern char aCharacterinv_1[62]; // weak extern char aCharacterinv_2[71]; // weak extern char aItembagIb_clea[29]; // weak extern int (__stdcall *off_706B6C[2])(int); // weak extern int (__thiscall *off_706B7C)(void *, char); // weak extern char asc_706B80[]; // idb extern char aMobresisttab_0[28]; // weak extern char aMobresisttable[44]; // weak extern char aClootingGeti_0[56]; // weak extern char aClootingGetite[52]; // weak extern _UNKNOWN unk_706C58; // weak extern char aTooManyColumns[32]; // weak extern char aUndefinedColum[22]; // weak extern char aAtLeastOneColu[27]; // weak extern char aColumnnameWith[25]; // weak extern char aColumnheaderWi[27]; // weak extern int (__thiscall *off_706D38)(void *, char); // weak extern int (__thiscall *off_706D5C)(void *, char); // weak extern int (__stdcall *off_706D80)(int, int); // weak extern int (__stdcall *off_706D88)(int, int); // weak extern char aTooManyTables[16]; // weak extern int (__stdcall *off_706DA0)(int, int); // weak extern int (__stdcall *off_706DA8)(int, int); // weak extern char aUndefinedComma[18]; // weak extern char aFileNotFound[15]; // weak extern char aUndefinedError[16]; // weak 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 *off_706E58)(int, int); // weak extern char aCannotAllocFie[26]; // weak extern int (__stdcall *off_706E80)(int, int); // weak extern int (__stdcall *off_706E8C)(int, int); // weak extern char aBraceMustBeClo[34]; // weak extern char aStringLengthMu[36]; // weak extern char aErrorInStringL[23]; // weak extern char aStringNeedLeng[19]; // weak extern int (__stdcall *off_706F0C)(int, int); // weak extern int (__stdcall *off_706F18)(int, int); // weak extern int (__stdcall *off_706F24)(int, int); // weak extern int (__stdcall *off_706F30)(int, int); // weak extern int (__stdcall *off_706F40)(int, int); // weak extern int (__stdcall *off_706F48)(int, int); // weak extern int (__stdcall *off_706F50)(int, int); // weak extern int (__stdcall *off_706F58)(int, int); // weak extern char aColumnTypeName[26]; // weak extern int (__stdcall *off_706F7C)(int, int); // weak extern int (__stdcall *off_706F84)(int, int); // weak extern int (__stdcall *off_706F8C)(int, int); // weak extern int (__stdcall *off_706F94)(int, int); // weak extern int (__stdcall *off_706F9C)(int, int); // weak extern char aRecordAllocErr[42]; // weak extern char aTooManyRecords[17]; // weak extern char aUnknownTableNa[19]; // weak extern char aRecordinHasNoT[28]; // weak extern char aRecordWithoutT[21]; // weak extern int dword_707028; // weak extern int dword_70702C; // weak extern char byte_707030; // weak extern char a06dSS[]; // idb extern char aSS_04d02d02d02[]; // idb extern char aSS_04d02d02d_t[]; // idb extern char a_Log[]; // idb extern char a02d02d02d03d[]; // idb extern char a04d02d02d_0[]; // idb extern char a06dSSS[]; // idb extern char aSocket_iocp_wr[18]; // weak extern char aZonelinktoerro[16]; // weak extern char aItemdataboxI_6[31]; // weak extern char aItemdataboxI_5[47]; // weak extern int (__thiscall *off_707130)(void *, char); // weak extern int (__thiscall *off_70713C)(void *, char); // weak extern int (__thiscall *off_707144)(void *, char); // weak extern int (__thiscall *off_70714C)(void *, char); // weak extern int (__thiscall *off_707154)(void *, char); // weak extern int (__thiscall *off_70715C)(void *, char); // weak extern int (__thiscall *off_707164)(void *, char); // weak extern int (__thiscall *off_70716C)(void *, char); // weak extern int (__thiscall *off_707174)(void *, char); // weak extern int (__thiscall *off_70717C)(void *, char); // weak extern int (__thiscall *off_707184)(void *, char); // weak extern int (__thiscall *off_70718C)(void *, char); // weak extern char aItemdatabox_15[53]; // weak extern char aItemdatabox_14[55]; // weak extern char aItemdatabox_13[51]; // weak extern char aItemdatabox_12[54]; // weak extern char aItemdatabox_11[53]; // weak extern char aItemdatabox_10[48]; // weak extern char aItemdataboxI_9[51]; // weak extern char aMiniwedding01_[16]; // weak extern char aWeddingcoupon[14]; // weak extern char aInvitationcard[15]; // weak extern char aProposering[12]; // weak extern char a__9dataShineWe[]; // idb extern char aRandomoption_r[21]; // weak extern char aWorldlink[10]; // weak extern char aLifedust[9]; // weak extern char aEnchantsocketa[17]; // weak extern char aEnchantsocke_0[20]; // weak extern char aIn_moneycard00[15]; // weak extern char aGuildtendency[14]; // weak extern char aGuildname[10]; // weak extern char aKaris[6]; // weak extern char aKq_soulcrystal[15]; // weak extern char aWingstone01_1[14]; // weak extern char aGoddesswing[12]; // weak extern char aProdreload01[13]; // weak extern char aRoar[5]; // weak extern char aSpmpotion3[11]; // weak extern char aSpmpotion0[11]; // weak extern char aSpmpotion2[11]; // weak extern char aSpmpotion1[11]; // weak extern char aHpmpotion3[11]; // weak extern char aHpmpotion0[11]; // weak extern char aHpmpotion2[11]; // weak extern char aHpmpotion1[11]; // weak extern char aHouse_mushroom[15]; // weak extern char aLicenseclear[13]; // weak extern char aSkillreloadb_0[21]; // weak extern char aFreestatusre_0[20]; // weak extern char aSkillreloadbun[21]; // weak extern char aFreestatusrelo[20]; // weak extern char aPresentbox[11]; // weak extern char aSilverwings[12]; // weak extern void *off_707524; // weak extern char aItemdataboxI_8[63]; // weak extern char aItemdataboxI_7[60]; // weak extern char aItemdataboxI_4[57]; // weak extern char aItemdataboxI_3[47]; // weak extern char aDuplicateItemH[22]; // weak extern char aItemdataboxI_2[64]; // weak extern char aItemdataboxI_1[54]; // weak extern char aItemdataboxI_0[22]; // weak extern char aDiff[8]; // weak extern char aItemdataboxIdb[45]; // weak extern char asc_7076F0[]; // idb extern char asc_707710[]; // idb extern char a__9dataShin_98[]; // idb extern char a__9dataShin_97[]; // idb extern char a__9dataShin_96[]; // idb extern char a__9dataShin_95[]; // idb extern char a__9dataShin_94[]; // idb extern char a__9dataShineBe[]; // idb extern char aKqitemdatabo_2[43]; // weak extern char aKqitemdatabo_1[50]; // weak extern char aKqitemdatabo_0[26]; // weak extern char aKqitemdataboxK[43]; // weak extern char a__9dataShineKq[]; // idb extern char aCtermextendi_3[50]; // weak extern char aCtermextendi_2[52]; // weak extern char aCtermextendi_1[54]; // weak extern char aCtermextendi_0[30]; // weak extern char aCtermextendite[47]; // weak extern char a__9dataShineTe[]; // idb extern char aItemoptionsd_0[69]; // weak extern char aItemoptionsdat[76]; // weak extern char aItemoptionsd_8[49]; // weak extern char aItemoptionsd_7[67]; // weak extern int (__thiscall *off_707AE0)(void *, char); // weak extern int (__thiscall *off_707AE8)(void *, char); // weak extern int (__thiscall *off_707AF0)(void *, char); // weak extern int (__stdcall *off_707AF8)(int, int); // weak extern int (__thiscall *off_707B00)(void *, char); // weak extern char a__9dataShineSh[]; // idb extern int (__thiscall *off_707B28)(void *, char); // weak extern char aItemoptionsd_4[60]; // weak extern char aItemoptionsd_3[62]; // weak extern char aItemoptionsd_2[64]; // weak extern char aItemoptionsd_1[67]; // weak extern int (__thiscall *off_707C30)(void *, char); // weak extern char dataShine::a[]; // idb extern int (__stdcall *off_707C60)(int, int); // weak extern char aItemoptionsd_6[43]; // weak extern char aItemoptionsd_5[65]; // weak extern char asc_707CD4[]; // idb extern char aShinescriptS_1[41]; // weak extern char aScrindex[9]; // weak extern char aShinescriptS_0[21]; // weak extern char aShinescriptSs_[44]; // weak extern char asc_707D70[]; // idb extern char asc_707D90[]; // idb extern char aKqscriptmanage[27]; // weak extern char aTooManyKqScrip[19]; // weak extern char aInvalidScrip_0[33]; // weak extern char aInvalidScriptN[20]; // weak extern char aKqscriptmana_0[39]; // weak 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 int (__thiscall *off_707EC4)(void *, char); // weak extern char aExceptionFaile[]; // idb extern char asc_707F20[76]; // weak extern int dword_707F6C; // weak extern int dword_707F70; // weak extern int dword_707F74; // weak extern __int16 word_707F78; // weak extern char aExceptionFai_1[]; // idb extern char aExceptionFai_0[]; // idb extern char aExceptionSaved[]; // idb extern int dword_708010; // weak extern __int16 word_708014; // weak extern char aExceptionDbg_0[32]; // weak extern char ProcName[]; // idb extern char aExceptionDbghe[34]; // weak extern char LibFileName[]; // idb extern int dword_708074; // weak extern int dword_708078; // weak extern char aMapdataboxMdb_[21]; // weak extern char aMobdataboxRe_1[45]; // weak extern char asc_7080C4[]; // idb extern int (__thiscall *off_7080E4)(void *, char); // weak extern char aErrorcodeD_0[]; // idb extern char aErrorcodeD[15]; // weak extern char aSS_3[]; // idb extern char aSS_4[]; // idb extern char Format[]; // idb extern char a_DebugmessageS[]; // idb extern char aCsocket_iocpRe[]; // idb extern char aErrorCsocket_i[]; // idb extern char aErrorCsocket_0[]; // idb extern int (__stdcall *off_708238)(int, int); // weak extern char aErrorCsocket_1[]; // idb extern char aCsocket_iocp_0[]; // idb extern char aSendIobufferFu[]; // idb extern char aCsocket_iocp_2[]; // idb extern char aCsocket_iocp_1[]; // idb extern char aCsocket_iocpWr[]; // idb extern char aMissmatchWrite[]; // idb extern char aM_pfirstbufNul[]; // idb extern char aWarningCsock_0[]; // idb extern char aWarningCsocket[]; // idb extern int (*off_7084CC[4])(); // weak extern char aIocpWorkthre_0[]; // idb extern char aIocpWorkthread[]; // idb extern __int16 word_708540; // weak extern char byte_708542; // weak extern __int16 word_708544; // weak extern char byte_708546; // weak extern void *off_708548; // weak extern __int16 word_70854C; // weak extern char aFormatDefinnin[]; // idb extern char aSFormatDefinin[]; // idb extern char aDataDefinningE[]; // 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[24]; // weak extern char aSWriteFormatOk[]; // idb 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_708750[64]; // weak extern char aFileProcessing[]; // idb extern char asc_7087A8[81]; // weak extern char aFailedListen_0[]; // idb extern char aFailedListen_a[72]; // weak extern char aErrorListenSoc[]; // idb extern int (*off_708A0C)(); // weak extern int (__thiscall *off_708A18)(void *, char); // weak extern int (*off_708A20[5])(); // weak extern int (__stdcall *off_708A38)(int, int); // weak extern char aCannotReadInde[23]; // weak extern int (__stdcall *off_708A68)(int, int); // weak extern int (__stdcall *off_708A80)(char *, int); // weak extern char aCannotReadByte[22]; // weak extern int (__stdcall *off_708AB0)(char *, int); // weak extern char aCannotReadWord[22]; // weak extern int (__stdcall *off_708AE0)(char *, int); // weak extern char aCannotReadDwrd[22]; // weak extern char aCannotReadStri[24]; // weak extern char aMicrosoftCExce[24]; // weak extern char aException_in_1[25]; // weak extern char aException_inva[30]; // weak extern char aException_stac[25]; // weak extern char aException_nonc[35]; // weak extern char aException_ille[30]; // weak extern char aException_in_p[24]; // weak extern char aException_priv[27]; // weak extern char aException_in_0[23]; // weak extern char aException_int_[29]; // weak extern char aException_fl_5[24]; // weak extern char aException_fl_4[26]; // weak extern char aException_fl_3[23]; // weak extern char aException_fl_2[32]; // weak extern char aException_fl_1[29]; // weak extern char aException_fl_0[29]; // weak extern char aException_flt_[31]; // weak extern char aException_arra[32]; // weak extern char aException_acce[27]; // weak extern char aException_guar[21]; // weak extern char aException_sing[22]; // weak extern char aException_brea[21]; // weak extern char aException_data[32]; // weak extern char aSLine04d[]; // idb extern char aSLine04d04dByt[]; // idb extern char aS_5[]; // idb extern char aS04dByteS[]; // idb extern char asc_708DFC[]; // idb extern char a0x08x0x08x0x08[]; // idb extern char a04x08x[]; // idb extern char aAt04x08x[]; // idb extern char aUnknown[]; // idb extern char aInModule[]; // idb extern char asc_708E5C[]; // idb extern char ModuleName[]; // idb extern char asc_708E6C[]; // idb extern char aCausedAn[]; // idb extern char OutputString[]; // idb extern char aGetfirststackt[]; // idb extern int (__thiscall *off_708ED8)(void *, char); // weak extern char aIobuffercontai[37]; // weak extern int (__stdcall *off_708F08)(int, int); // weak extern int (__thiscall *off_708F10)(void *, char); // weak extern int (__thiscall *off_708F1C)(void *, char); // weak extern int (__thiscall *off_708F28)(void *, char); // weak extern int (__thiscall *off_708F40)(void *, char); // weak extern int dword_708FE0; // weak extern int dword_708FE4; // weak extern char *off_709088; // idb extern int dword_7090D4[]; // weak extern int dword_7090D8[]; // weak extern int (__thiscall *off_709114)(void *, char); // weak extern int (__thiscall *off_709120)(void *, char); // weak extern int (__thiscall *off_709140)(void *, char); // weak extern int (__thiscall *off_70914C)(void *, char); // weak extern int (__thiscall *off_709158)(void *, char); // weak extern char aCmd_exe[]; // idb extern char VarName[]; // idb extern _UNKNOWN unk_709380; // weak extern int (__thiscall *off_709CB0)(void *, char); // weak extern _UNKNOWN unk_70FB3A; // weak extern _UNKNOWN unk_714270; // weak extern char aGetprocesswind[]; // idb extern char aGetuserobjecti[]; // idb extern char aGetlastactivep[]; // idb extern char aGetactivewindo[]; // idb extern char aMessageboxw[]; // idb extern const WCHAR aUser32_dll_0[]; // idb extern _UNKNOWN unk_72EF9C; // weak extern _UNKNOWN unk_72EFA4; // weak extern _UNKNOWN unk_733E50; // weak extern _UNKNOWN unk_73A210; // weak extern _UNKNOWN unk_73A448; // weak extern _UNKNOWN unk_73A5F0; // weak extern _UNKNOWN unk_73A6FC; // weak extern _UNKNOWN unk_7453D0; // weak extern _UNKNOWN unk_7454CC; // weak extern _UNKNOWN unk_745688; // weak extern _UNKNOWN unk_7456A8; // weak extern _UNKNOWN unk_7456E0; // weak extern _UNKNOWN unk_74571C; // weak extern int dword_748000; // weak extern int dword_748004; // weak extern int dword_748008; // weak extern int dword_74800C; // weak extern int dword_748010; // weak extern int dword_748014; // weak extern int dword_748018; // weak extern int dword_74801C; // weak extern int dword_748020; // weak extern int dword_748024; // weak extern int dword_748028; // weak extern int dword_74802C; // weak extern int dword_748030; // weak extern int dword_748034; // weak extern int dword_748038; // weak extern int dword_74803C; // weak extern int dword_748040; // weak extern int dword_748044; // weak extern char a20120409HeroRe[25]; // weak extern char byte_7493ED; // weak extern int (__stdcall **off_749680)(int, int); // weak extern int (__stdcall *off_749714[2])(int, int); // weak extern int (__stdcall **off_749718)(int, int); // weak extern int dword_74971C; // weak extern _UNKNOWN unk_749CA8; // weak extern void *off_749F98; // weak extern int dword_74A024; // weak extern int dword_74A028; // weak extern void *off_74A030; // weak extern void *off_74A1A1; // weak extern void *off_74A1A8; // weak extern void *off_74BD44; // weak extern __int16 *off_74BD48; // weak extern int dword_74BD4C; // weak extern __int16 word_74BD54; // weak extern _UNKNOWN unk_74BD56; // weak extern __int16 *off_74CECC; // weak extern void *off_74CED0; // weak extern void *off_74CED8; // weak extern void *off_74D488; // weak extern void *off_74D490; // weak extern void *off_74DA40; // weak extern void *off_74DA48; // weak extern void *off_74DC1C; // weak extern void *off_74DC20; // weak extern void *off_74DE10; // weak extern void *off_74DE18; // weak extern void *off_74E5A8; // weak extern void *off_74E5B0; // weak extern __int16 *off_74F610; // weak extern int dword_74F614; // weak extern __int16 word_74F61C; // weak extern _UNKNOWN unk_74F61E; // weak extern __int16 *off_74FD80; // weak extern void *off_74FD84; // weak extern char byte_750690[]; // weak extern __int16 word_750784[]; // weak extern _UNKNOWN unk_750830; // weak extern int dword_7508B8[]; // weak extern int dword_750AB8[]; // weak extern int dword_750CB8; // weak extern _UNKNOWN unk_751118; // weak extern int dword_7515A8[]; // weak extern int dword_7595A8; // weak extern double dbl_759790[]; // weak extern double dbl_759798; // weak extern double dbl_7597A0; // weak extern double dbl_7597A8; // weak extern double dbl_7597B0; // weak extern double dbl_7597B8; // weak extern int (__stdcall *off_75A61C[26])(int, int, int); // weak extern int (__stdcall *off_75A620[25])(int, int, int); // weak extern int (__stdcall *off_75A624[24])(int, int, int); // weak extern int (__stdcall *off_75A628[23])(int, int, int); // weak extern int (__stdcall *off_75A62C[22])(int, int, int); // weak extern int (__stdcall *off_75A630[21])(int, int, int); // weak extern int (__stdcall *off_75A634[20])(int, int, int); // weak extern int (__stdcall *off_75A638[19])(int, int, int); // weak extern int (__stdcall *off_75A63C[18])(int, int, int); // weak extern int (__stdcall *off_75A640[17])(int, int, int); // weak extern int (__stdcall *off_75A644[16])(int, int, int); // weak extern int (__stdcall *off_75A648[15])(int, int, int); // weak extern int (__stdcall *off_75A64C[14])(int, int, int); // weak extern int (__stdcall *off_75A650[13])(int, int, int); // weak extern int (__stdcall *off_75A654[12])(int, int, int); // weak extern int (__stdcall *off_75A658[11])(int, int, int); // weak extern int (__stdcall *off_75A65C[10])(int, int, int); // weak extern int (__stdcall *off_75A660[9])(int, int, int); // weak extern int (__stdcall *off_75A664[8])(int, int, int); // weak extern int (__stdcall *off_75A668[7])(int, int, int); // weak extern int (__stdcall *off_75A66C[6])(int, int, int); // weak extern int (__stdcall *off_75A670[5])(int, int, int); // weak extern int (__stdcall *off_75A674[4])(int, int, int); // weak extern int (__stdcall *off_75A678[3])(int, int, int); // weak extern int (__stdcall *off_75A67C[2])(int, int, int); // weak extern int (__stdcall **off_75A680)(int, int, int); // weak extern _UNKNOWN unk_75A830; // weak extern _UNKNOWN unk_7ABDE4; // weak extern _UNKNOWN unk_7F03A4; // weak extern _UNKNOWN unk_7FC000; // weak extern _UNKNOWN unk_7FC03F; // weak extern _UNKNOWN unk_7FFFFF; // weak extern _UNKNOWN unk_800003; // weak extern _UNKNOWN unk_82783A; // weak extern _UNKNOWN unk_838830; // weak extern __int16 word_838A98[]; // weak extern __int16 word_838AA0[]; // weak extern _UNKNOWN unk_838AA8; // weak extern int (__thiscall **off_838ABC)(void *, char); // weak extern int dword_838B28[]; // weak extern int dword_838B2C[]; // weak extern _UNKNOWN unk_838B30; // weak extern int (__stdcall *off_848CD0[5])(int, int); // weak extern int (__stdcall *off_848CD4[4])(int, int); // weak extern int (__stdcall *off_848CD8[3])(int, int); // weak extern int (__stdcall *off_848CDC[2])(int, int); // weak extern int (__stdcall **off_848CE0)(int, int); // weak extern int dword_848F94; // weak extern int dword_848F9C; // weak extern char byte_8492C4; // weak extern int (__stdcall *(*off_8492C8[6])[2])(int); // weak extern int (__stdcall *(*off_8492CC[5])[2])(int); // weak extern int (__stdcall *(*off_8492D0[4])[2])(int); // weak extern int (__stdcall *(*off_8492D4[3])[2])(int); // weak extern int (__stdcall *(*off_8492D8[2])[2])(int); // weak extern int (__stdcall *(*off_8492DC)[2])(int); // weak extern int (__stdcall **off_849B3C)(int, int, int); // weak extern int dword_849B40; // weak extern int dword_849B44; // weak extern int dword_849B48; // weak extern int dword_849B4C; // weak extern int dword_849B50; // weak extern void *off_849C18; // idb extern int dword_849C1C; // weak extern int (__thiscall **off_84BE04)(void *, char); // weak extern int dword_84BE30; // weak extern int dword_84BE34; // weak extern int dword_84BE38[]; // weak extern int (__thiscall **off_84BEB8)(void *, char); // weak extern int (__thiscall **off_84BEDC)(void *, char); // weak extern int (__thiscall **off_84BEFC)(void *, char); // weak extern int (__thiscall **off_84BF24)(void *, char); // weak extern int (__thiscall **off_84BF50)(void *, char); // weak extern int (__thiscall **off_84BFD0)(void *, char); // weak extern int dword_84BFD4[]; // weak extern _UNKNOWN unk_84CFD4; // weak extern int (__stdcall *off_84D0D4)(int, int); // weak extern int (__thiscall **off_84D138)(void *, char); // weak extern int dword_84D13C[]; // weak extern _UNKNOWN unk_84E13C; // weak extern int (__stdcall *off_84E23C)(int, int, int); // weak extern int (__thiscall **off_84E298)(void *, char); // weak extern int dword_84E29C[]; // weak extern _UNKNOWN unk_84F29C; // weak extern int (__stdcall *off_84F39C)(int, int); // weak extern int (__thiscall **off_84F3F0)(void *, char); // weak extern int dword_84F3F4[]; // weak extern _UNKNOWN unk_8503F4; // weak extern int (__stdcall *off_8504F4)(int); // weak extern int (__thiscall **off_850550)(void *, char); // weak extern int dword_850554[]; // weak extern _UNKNOWN unk_851554; // weak extern int (__stdcall *off_851654)(int, int); // weak extern int (__thiscall **off_8516B0)(void *, char); // weak extern int dword_8516B4[]; // weak extern _UNKNOWN unk_8526B4; // weak extern int (__stdcall *off_8527B4)(int); // weak extern int (__stdcall *off_853794[26])(int, int, int); // weak extern int (__stdcall *off_853798[25])(int, int, int); // weak extern int (__stdcall *off_85379C[24])(int, int, int); // weak extern int (__stdcall *off_8537A0[23])(int, int, int); // weak extern int (__stdcall *off_8537A4[22])(int, int, int); // weak extern int (__stdcall *off_8537A8[21])(int, int, int); // weak extern int (__stdcall *off_8537AC[20])(int, int, int); // weak extern int (__stdcall *off_8537B0[19])(int, int, int); // weak extern int (__stdcall *off_8537B4[18])(int, int, int); // weak extern int (__stdcall *off_8537B8[17])(int, int, int); // weak extern int (__stdcall *off_8537BC[16])(int, int, int); // weak extern int (__stdcall *off_8537C0[15])(int, int, int); // weak extern int (__stdcall *off_8537C4[14])(int, int, int); // weak extern int (__stdcall *off_8537C8[13])(int, int, int); // weak extern int (__stdcall *off_8537CC[12])(int, int, int); // weak extern int (__stdcall *off_8537D0[11])(int, int, int); // weak extern int (__stdcall *off_8537D4[10])(int, int, int); // weak extern int (__stdcall *off_8537D8[9])(int, int, int); // weak extern int (__stdcall *off_8537DC[8])(int, int, int); // weak extern int (__stdcall *off_8537E0[7])(int, int, int); // weak extern int (__stdcall *off_8537E4[6])(int, int, int); // weak extern int (__stdcall *off_8537E8[5])(int, int, int); // weak extern int (__stdcall *off_8537EC[4])(int, int, int); // weak extern int (__stdcall *off_8537F0[3])(int, int, int); // weak extern int (__stdcall *off_8537F4[2])(int, int, int); // weak extern int (__stdcall **off_8537F8)(int, int, int); // weak extern int (__stdcall *(*off_8551DC[2])[4])(int, int, int); // weak extern int (__stdcall *(*off_8551E0)[4])(int, int, int); // weak extern int (__stdcall *(*off_8551E4[8])[4])(int); // weak extern int (__stdcall *(*off_8551E8[7])[4])(int); // weak extern double (__stdcall *off_8551EC[2])(int); // weak extern double (__stdcall *off_8551F0)(int); // weak extern double (__stdcall *(*off_8551F4[4])[4])(int); // weak extern double (__stdcall *(*off_8551F8[3])[4])(int); // weak extern double (__stdcall *(*off_8551FC[2])[2])(int); // weak extern double (__stdcall *(*off_855200)[4])(int); // weak extern int (__stdcall *off_855A10[20])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A14[19])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A18[18])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A1C[17])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A20[16])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A24[15])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A28[14])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A2C[13])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A30[12])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A34[11])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A38[10])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A3C[9])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A40[8])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A44[7])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A48[6])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A4C[5])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A50[4])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A54[3])(int, int, int, int, int, int, int); // weak extern int (__stdcall *off_855A58[2])(int, int, int, int, int, int, int); // weak extern int (__stdcall **off_855A5C)(int, int, int, int, int, int, int); // weak extern _UNKNOWN unk_855BD0; // weak extern int (__thiscall **off_85A104)(void *, char); // weak extern _BYTE byte_85A2C0[32768]; // idb extern int dword_8622C0; // weak extern int dword_8622C4; // weak extern int (__stdcall **off_8622C8)(int); // weak extern __int16 word_8622D0[]; // weak extern _UNKNOWN unk_8622D2; // weak extern int dword_8654D0; // weak extern int dword_8654D4; // weak extern __int16 word_8655A0; // weak extern _UNKNOWN unk_8655A8; // weak extern _UNKNOWN unk_869AB8; // weak extern __int16 word_869F40[]; // weak extern int dword_869F42[]; // weak extern int dword_86A540; // weak extern int dword_86A544; // weak extern int (__thiscall *off_86AC94[12])(void *, char); // weak extern int (__thiscall *off_86AC98[11])(void *, char); // weak extern int (__thiscall *off_86AC9C[10])(void *, char); // weak extern int (__thiscall *off_86ACA0[9])(void *, char); // weak extern int (__thiscall *off_86ACA4[8])(void *, char); // weak extern int (__thiscall *off_86ACA8[7])(void *, char); // weak extern int (__thiscall *off_86ACAC[6])(void *, char); // weak extern int (__thiscall *off_86ACB0[5])(void *, char); // weak extern int (__thiscall *off_86ACB4[4])(void *, char); // weak extern int (__thiscall *off_86ACB8[3])(void *, char); // weak extern int (__thiscall *off_86ACBC[2])(void *, char); // weak extern int (__thiscall **off_86ACC0)(void *, char); // weak extern int (__thiscall *off_86ACC8[6])(void *, char); // weak extern int (__thiscall *off_86ACCC[5])(void *, char); // weak extern int (__thiscall *off_86ACD0[4])(void *, char); // weak extern int (__thiscall *off_86ACD4[3])(void *, char); // weak extern int (__thiscall *off_86ACD8[2])(void *, char); // weak extern int (__thiscall **off_86ACDC)(void *, char); // weak extern int (__thiscall **off_86ACE8)(void *, char); // weak extern int (__thiscall *off_86ACF4[12])(void *, char); // weak extern int (__thiscall *off_86ACF8[11])(void *, char); // weak extern int (__thiscall *off_86ACFC[10])(void *, char); // weak extern int (__thiscall *off_86AD00[9])(void *, char); // weak extern int (__thiscall *off_86AD04[8])(void *, char); // weak extern int (__thiscall *off_86AD08[7])(void *, char); // weak extern int (__thiscall *off_86AD0C[6])(void *, char); // weak extern int (__thiscall *off_86AD10[5])(void *, char); // weak extern int (__thiscall *off_86AD14[4])(void *, char); // weak extern int (__thiscall *off_86AD18[3])(void *, char); // weak extern int (__thiscall *off_86AD1C[2])(void *, char); // weak extern int (__thiscall **off_86AD20)(void *, char); // weak extern int (__thiscall *off_86AD34[4])(void *, char); // weak extern int (__thiscall *off_86AD38[3])(void *, char); // weak extern int (__thiscall *off_86AD3C[2])(void *, char); // weak extern int (__thiscall **off_86AD40)(void *, char); // weak extern __int16 word_86AD48; // weak extern _UNKNOWN unk_86AD4C; // weak extern _UNKNOWN unk_86AD50; // weak extern int dword_86AD5C; // weak extern char byte_86AD60[20]; // idb extern int dword_86AD74; // weak extern char dword_86AD78[]; // idb extern int dword_86AD7C; // weak extern int dword_86AD80; // weak extern int dword_86AD84; // weak extern int dword_86AD88; // weak extern _UNKNOWN unk_86ADD8; // weak extern int (__stdcall *(*off_86B038[11])[3])(int, int); // weak extern int (__stdcall *(*off_86B03C[10])[3])(int, int); // weak extern int (__stdcall *(*off_86B040[9])[3])(int, int); // weak extern int (__stdcall *(*off_86B044[8])[3])(int, int); // weak extern int (__stdcall *(*off_86B048[7])[3])(int, int); // weak extern int (__stdcall *(*off_86B04C[6])[3])(int, int); // weak extern int (__stdcall *(*off_86B050[5])[3])(int, int); // weak extern int (__stdcall *(*off_86B054[4])[3])(int, int); // weak extern int (__stdcall *(*off_86B058[3])[3])(int, int); // weak extern int (__stdcall *(*off_86B05C[2])[3])(int, int); // weak extern int (__stdcall *(*off_86B060)[3])(int, int); // weak extern int dword_86B064; // weak extern int dword_86B06C; // weak extern int (**off_86BDF8)(); // weak extern char *dword_86C050; // idb extern int dword_86C060; // weak extern int dword_86C064; // weak extern char *dword_86C298; // idb extern int dword_86C2A8; // weak extern int dword_86C2AC; // weak extern char *dword_86C2F8; // idb extern int dword_86C308; // weak extern int dword_86C30C; // weak extern int dword_86C314[]; // weak extern int dword_86C344[]; // weak extern int dword_86C374[]; // weak extern void *dword_86C3D4; // idb extern int dword_86C3E4; // weak extern int dword_86C3E8; // weak extern int dword_86C458[]; // weak extern double dbl_86D0B0; // weak extern char byte_86D0B8; // weak extern char byte_86D0B9; // weak extern int (__thiscall **off_86D0C0)(void *, char); // weak extern int (*off_86D234)(); // weak extern void *dword_86D240; // idb extern int dword_86D244; // weak extern int dword_86D248; // weak extern int (*off_86D250)(); // weak extern void *dword_86D25C; // idb extern int dword_86D260; // weak extern int dword_86D264; // weak extern int (*off_86D26C)(); // weak extern void *dword_86D278; // idb extern int dword_86D27C; // weak extern int dword_86D280; // weak extern _UNKNOWN unk_86D47C; // weak extern _UNKNOWN unk_86D488; // weak extern int (*off_86D7D8)(); // weak extern int *off_86D7E0; // weak extern void *dword_86D7E4; // idb extern int dword_86D7E8; // weak extern int dword_86D7EC; // weak extern char byte_86D8E0[]; // weak extern char *off_86DBC8[19]; // weak extern char *off_86DC58[9]; // weak extern char *off_86DC78; // weak extern void *off_86DC90; // weak extern void *off_86DC98; // weak extern _UNKNOWN unk_86DD78; // weak extern _UNKNOWN unk_86DDD8; // weak extern int dword_86E7E8; // weak extern int dword_86E7EC; // weak extern __int16 word_86E7F0; // weak extern void *off_86E858; // weak extern _UNKNOWN unk_86EC00; // weak extern struct _RTL_CRITICAL_SECTION CriticalSection; // idb extern _UNKNOWN unk_86ED1C; // weak extern FILE *dword_86F11C; // idb extern int dword_86F120; // weak extern int dword_86F124; // weak extern _UNKNOWN unk_86F128; // weak extern struct _RTL_CRITICAL_SECTION stru_86F22C; // idb extern _UNKNOWN unk_86F244; // weak extern FILE *dword_86F644; // idb extern int dword_86F648; // weak extern int dword_86F64C; // weak extern int dword_86FA98; // idb extern _UNKNOWN unk_86FAA0; // weak extern char *off_86FAF0[29]; // weak extern char *off_86FB3C[10]; // weak extern _UNKNOWN unk_86FB64; // weak extern volatile LONG Addend; // idb extern volatile LONG dword_86FD3C; // idb extern int (__thiscall *off_86FE0C)(void *, char); // weak extern int (__thiscall *off_86FE14)(void *, char); // weak extern int (__thiscall *off_86FE1C)(void *, char); // weak extern int __security_cookie; // weak extern void *off_870130; // weak extern double dbl_870410; // weak extern int dword_8704B8; // weak extern int dword_8704BC; // weak extern int dword_8704C0; // weak extern void *off_870548; // weak extern _UNKNOWN unk_8705D0; // weak extern char *off_870FB0[44]; // weak extern _UNKNOWN unk_871060; // weak extern int dword_8711F0; // weak extern int dword_8711F4; // weak extern int dword_8711F8; // weak extern int dword_8711FC; // weak extern int dword_871200; // weak extern int dword_871204; // weak extern int dword_871208; // weak extern int dword_87120C; // weak extern int dword_871210; // weak extern int dword_871214; // weak extern int dword_871218; // weak extern int dword_87121C; // weak extern HANDLE hConsoleOutput; // idb extern int dword_871500; // weak extern int dword_871508[]; // weak extern int dword_87150C[]; // weak extern __int16 word_871510[]; // weak extern __int16 word_871512[]; // weak extern _DWORD dword_873A28[105]; // idb extern int dword_873BCC[]; // weak extern _UNKNOWN unk_873DB0; // weak extern __int16 word_877020; // weak extern int dword_877024; // weak extern _UNKNOWN unk_877038; // weak extern int dword_87709C; // weak extern _UNKNOWN unk_8770A0; // weak extern int dword_8770A4; // weak extern _UNKNOWN unk_877138; // weak extern int dword_8772E4; // weak extern int dword_8772EC; // weak extern int dword_8772F0[]; // weak extern int dword_877770; // weak extern int dword_877778; // weak extern int dword_87777C; // weak extern int dword_877784; // weak extern int dword_87778C; // weak extern int dword_877854; // weak extern int dword_877858; // weak extern int dword_877910; // weak extern int dword_877914; // weak extern int dword_87797C; // weak extern _UNKNOWN unk_877F50; // weak extern unsigned __int8 byte_878354; // idb extern void *dword_878758; // idb extern int dword_87875C; // weak extern int dword_878760; // weak extern void *dword_878768; // idb extern int dword_87876C; // weak extern int dword_878770; // weak extern char byte_878778[]; // weak extern int dword_878878; // weak extern char byte_8789FC; // weak extern int dword_878A00; // weak extern int dword_878A08; // weak extern _UNKNOWN unk_878A18; // weak extern _UNKNOWN unk_87B218; // weak extern __int16 word_87B220; // weak extern int dword_87B224; // weak extern __int16 word_87B228; // weak extern int dword_87B22C; // weak extern __int16 word_87B230; // weak extern int dword_87B234; // weak extern __int16 word_87B238; // weak extern int dword_87B23C; // weak extern __int16 word_87B240; // weak extern int dword_87B244; // weak extern __int16 word_87B248; // weak extern int dword_87B24C; // weak extern __int16 word_87B250; // weak extern void *dword_87B254; // idb extern int dword_87B258; // weak extern int dword_87B25C; // weak extern void *dword_87B264; // idb extern int dword_87B268; // weak extern int dword_87B26C; // weak extern int dword_87B278; // weak extern int dword_87B280; // weak extern _UNKNOWN unk_87B290; // weak extern _UNKNOWN unk_895440; // weak extern void *dword_8B3298; // idb extern int dword_8B329C; // weak extern _UNKNOWN unk_8B32A8; // weak extern void *dword_8B36A8; // idb extern int dword_8B36AC; // weak extern int dword_8B36B0; // weak extern _UNKNOWN unk_8B36B8; // weak extern int dword_8B3AC4; // weak extern _UNKNOWN unk_8B3AC8; // weak extern _UNKNOWN unk_8B42A0; // weak extern _UNKNOWN unk_8B6C60; // weak extern __int16 word_8B961C; // weak extern int dword_8B9620; // weak extern char dword_8B9624[]; // idb extern int dword_8B9628; // weak extern int dword_8B962C; // weak extern char dword_8B9630[]; // idb extern int dword_8B9634; // weak extern int dword_8B9638; // weak extern char dword_8B963C[]; // idb extern int dword_8B9640; // weak extern int dword_8B9644; // weak extern __int16 word_8B9648; // weak extern int dword_8B964C; // weak extern __int16 word_8B9650; // weak extern _UNKNOWN unk_8B9A3C; // weak extern _UNKNOWN unk_8B9F04; // weak extern _UNKNOWN unk_8BA3CC; // weak extern _UNKNOWN unk_8BA8A4; // weak extern _UNKNOWN unk_8BAD6C; // weak extern int dword_8BB23C; // weak extern __int16 word_8BB240; // weak extern int dword_8BB244; // weak extern __int16 word_8BB248; // weak extern int dword_8BB24C; // weak extern int dword_8BB250[]; // weak extern int dword_8BB2A8[]; // weak extern int dword_8BB300; // weak extern int dword_8BB358; // weak extern _UNKNOWN unk_8BB3B0; // weak extern _UNKNOWN unk_98967F; // weak extern _UNKNOWN unk_989680; // weak extern int dword_A9F908[]; // weak extern int dword_A9F978; // weak extern char byte_A9FA08[]; // weak extern FILE *dword_A9FB08; // idb extern char byte_A9FC8C; // weak extern int dword_A9FC90; // weak extern __int16 word_A9FC94; // weak extern int dword_A9FC98; // weak extern int dword_A9FCA0; // weak extern char dword_A9FCA4[]; // idb extern int dword_A9FCA8; // weak extern int dword_A9FCAC; // weak extern int dword_A9FCB0; // weak extern _UNKNOWN unk_A9FCB4; // weak extern int dword_AA07B4; // weak extern int dword_AA07B8; // weak extern int dword_AA07C0; // weak extern int dword_AA07F4; // weak extern _UNKNOWN unk_AA0800; // weak extern void *dword_AA0894; // idb extern int dword_AA0898; // weak extern int dword_AA08A0; // weak extern int dword_AA08E0; // weak extern int dword_AA08E8; // weak extern _UNKNOWN unk_AA0928; // weak extern void *dword_AA0A84; // idb extern int dword_AA0A88; // weak extern int dword_AA0A90; // weak extern _UNKNOWN unk_AA0AD0; // weak extern void *dword_AA0AFC; // idb extern int dword_AA0B00; // weak extern int dword_AA0B08; // weak extern int dword_AA0B3C; // weak extern _UNKNOWN unk_AA0B48; // weak extern void *dword_AA0BB8; // idb extern int dword_AA0BBC; // weak extern _UNKNOWN unk_AA0BC0; // weak extern int dword_AA0BC4; // weak extern int dword_AA0BC8; // weak extern _UNKNOWN unk_AA0BCC; // weak extern __int16 word_AA0BF0; // weak extern __int16 word_AA0BF4; // weak extern int dword_AA0BF8; // weak extern int dword_AA0BFC; // weak extern int dword_AA0C00; // weak extern int dword_AA0C04; // weak extern int dword_AA0C08; // weak extern __int16 word_AA0C0C; // weak extern int dword_AA0C18; // weak extern int dword_AA0C1C; // weak extern __int16 word_AA0C20; // weak extern int dword_AA0C24; // weak extern __int16 word_AA0C28; // weak extern int dword_AA0C2C; // weak extern __int16 word_AA0C30; // weak extern int dword_AA0C34; // weak extern char byte_AA0C38[]; // weak extern FILE *dword_AA0D38; // idb extern char byte_AA0EBC; // weak extern _UNKNOWN unk_AA0EC0; // weak extern _UNKNOWN unk_AA0EC8; // weak extern _UNKNOWN unk_DFA9D4; // weak extern _UNKNOWN unk_FFFFFF; // weak extern _UNKNOWN unk_1000000; // weak extern int dword_1004000[]; // weak extern char byte_1004004[]; // weak extern _UNKNOWN unk_1362004; // weak extern _UNKNOWN unk_1421804; // weak extern _UNKNOWN unk_1471804; // weak extern _UNKNOWN unk_14E5E0A; // weak extern _UNKNOWN unk_1861861; // weak extern int dword_19B8000; // weak extern __int16 word_19B8004; // weak extern int dword_19B8008; // weak extern __int16 word_19B800C; // weak extern __int16 word_19B800E; // weak extern _UNKNOWN unk_19BFCBF; // weak extern _UNKNOWN unk_1F80000; // weak extern _UNKNOWN unk_1FFFFFF; // weak extern int dword_2008008[]; // weak extern int dword_200800C[]; // weak extern _UNKNOWN unk_22B63CA; // weak extern _UNKNOWN unk_234F72C; // weak extern _UNKNOWN unk_2441453; // weak extern _UNKNOWN unk_25ED097; // weak extern _UNKNOWN unk_3000000; // weak extern _UNKNOWN unk_32FEB04; // weak extern _UNKNOWN unk_35E50D7; // weak extern _UNKNOWN unk_3759F21; // weak extern _UNKNOWN unk_3759F22; // weak extern _UNKNOWN unk_3A83A83; // weak extern _UNKNOWN unk_3C3C3C3; // weak extern _UNKNOWN unk_3E80000; // weak extern _UNKNOWN unk_3E803E8; // weak extern _UNKNOWN unk_3E8FFFF; // weak extern _UNKNOWN unk_3FFFFFF; // weak extern _UNKNOWN unk_4000400; // weak extern _UNKNOWN unk_4010052; // weak extern _UNKNOWN unk_47868C0; // weak extern _UNKNOWN unk_4881D05; // weak extern _UNKNOWN unk_4924923; // weak extern _UNKNOWN unk_49BB004; // weak extern _UNKNOWN unk_5000000; // weak extern _UNKNOWN unk_5555555; // weak extern _UNKNOWN unk_57F6C10; // weak extern _UNKNOWN unk_5D1745D; // weak extern _UNKNOWN unk_5F5E0FF; // weak extern _UNKNOWN unk_5F5E100; // weak extern _UNKNOWN unk_6040300; // weak extern _UNKNOWN unk_6186185; // weak extern _UNKNOWN unk_6186186; // weak extern _UNKNOWN unk_6666665; // weak extern _UNKNOWN unk_6666666; // weak extern _UNKNOWN unk_71C71C6; // weak extern _UNKNOWN unk_71C71C7; // weak extern _UNKNOWN unk_7FFFFFE; // weak extern _UNKNOWN unk_7FFFFFF; // weak extern _UNKNOWN unk_8080808; // weak extern _UNKNOWN unk_9249248; // weak extern _UNKNOWN unk_9249249; // weak extern _UNKNOWN unk_9C92400; // weak extern _UNKNOWN unk_A000000; // weak extern int dword_A454008; // weak extern _UNKNOWN unk_A45400C; // weak extern int dword_A454027; // weak extern int dword_A45402B; // weak extern int dword_A45402F; // weak extern int dword_A45403F; // weak extern int dword_A454043; // weak extern int dword_A454047; // weak extern _UNKNOWN unk_A454078; // weak extern int dword_A45CD20; // weak extern _UNKNOWN unk_A45CD24; // weak extern int dword_A4688AC; // weak extern _UNKNOWN unk_AAAAAA9; // weak extern _UNKNOWN unk_AAAAAAA; // weak extern int dword_AEF4EC8; // weak extern __int16 word_AF09770; // weak extern int dword_AF09774; // weak extern __int16 word_AF09778; // weak extern int dword_AF0977C; // weak extern __int16 word_AF09780; // weak extern int dword_AF09784; // weak extern __int16 word_AF09788; // weak extern int dword_AF0978C; // weak extern __int16 word_AF09790; // weak extern int dword_AF09794; // weak extern __int16 word_AF09798; // weak extern int dword_AF0979C; // weak extern __int16 word_AF097A0; // weak extern int dword_AF097A4; // weak extern __int16 word_AF097A8; // weak extern int dword_AF097AC; // weak extern __int16 word_AF097B0; // weak extern int dword_AF097B4; // weak extern __int16 word_AF097B8; // weak extern int dword_AF097BC; // weak extern __int16 word_AF097C0; // weak extern int dword_AF097C4; // weak extern __int16 word_AF097C8; // weak extern int dword_AF097CC; // weak extern __int16 word_AF097D0; // weak extern int dword_AF097D4; // weak extern __int16 word_AF097D8; // weak extern int dword_AF097DC; // weak extern __int16 word_AF097E0; // weak extern __int16 word_AF097E4; // weak extern int dword_AF097E8; // weak extern void *dword_AF097EC; // idb extern int dword_AF097F0; // weak extern int dword_AF097F4; // weak extern int dword_AF097FC; // weak extern int dword_AF09800; // weak extern _UNKNOWN unk_AF09900; // weak extern _UNKNOWN unk_AF099B8; // weak extern void *dword_AF09A70; // idb extern int dword_AF09A74; // weak extern int dword_AF09A78; // weak extern __int16 word_AF09A90; // weak extern int dword_AF09A94; // weak extern _UNKNOWN unk_AF09A98; // weak extern char byte_AF09B20[]; // weak extern int dword_AF09C20; // weak extern char byte_AF09DA4; // weak extern _UNKNOWN unk_AF09DA8; // weak extern _UNKNOWN unk_B012033; // weak extern _UNKNOWN unk_B022033; // weak extern _UNKNOWN unk_B042033; // weak extern _UNKNOWN unk_B062033; // weak extern _UNKNOWN unk_B09FFFF; // weak extern _UNKNOWN unk_CCCCCCB; // weak extern _UNKNOWN unk_CCCCCCC; // weak extern _UNKNOWN unk_CF12350; // weak extern _UNKNOWN unk_CF12354; // weak extern _UNKNOWN unk_CFCCF9C; // weak extern _UNKNOWN unk_CFCDB50; // weak extern int dword_CFCDCD0; // weak extern int dword_CFCDCD4; // weak extern int dword_CFCDCD8; // weak extern int dword_CFCDCDC; // weak extern int dword_CFCDCE0; // weak extern int dword_CFCDCE4; // weak extern int dword_CFCDCE8; // weak extern int dword_CFCDCEC; // weak extern int dword_CFCDCF0; // weak extern int dword_CFCDCF4; // weak extern int dword_CFCDCF8; // weak extern int dword_CFCDCFC; // weak extern int dword_CFCDD00; // weak extern int dword_CFCDD04; // weak extern int dword_CFCDD08; // weak extern int dword_CFCDD0C; // weak extern int dword_CFCDD10; // weak extern int dword_CFCDD14; // weak extern int dword_CFCDD18; // weak extern int dword_CFCDD1C; // weak extern int dword_CFCDD20; // weak extern int dword_CFCDD24; // weak extern int dword_CFCDD28; // weak extern int dword_CFCDD2C; // weak extern int dword_CFCDD30; // weak extern int dword_CFCDD34; // weak extern int dword_CFCDD38; // weak extern int dword_CFCDD3C; // weak extern int dword_CFCDD40; // weak extern int dword_CFCDD44; // weak extern int dword_CFCDD48; // weak extern int dword_CFCDD4C; // weak extern int dword_CFCDD50; // weak extern int dword_CFCDD54; // weak extern int dword_CFCDD58; // weak extern int dword_CFCDD5C; // weak extern int dword_CFCDD60; // weak extern int dword_CFCDD64; // weak extern _UNKNOWN unk_CFCDD68; // weak extern char dword_CFCE16C[]; // idb extern int dword_CFCE170; // weak extern int dword_CFCE174; // weak extern _UNKNOWN unk_CFCE178; // weak extern int dword_CFCF378; // weak extern _UNKNOWN unk_CFCF380; // weak extern __int16 word_CFCF384; // weak extern int dword_CFCF388; // weak extern __int16 word_CFCF38E; // weak extern _UNKNOWN unk_CFCF398; // weak extern int dword_D0203F0; // weak extern int dword_D0203F4; // weak extern FILE *dword_D020410; // idb extern LARGE_INTEGER Frequency; // idb extern _UNKNOWN unk_D020420; // weak extern void *dword_D020424; // idb extern __int16 word_D020434; // weak extern int dword_D020438; // weak extern int dword_D020440; // weak extern int dword_D020480; // weak extern int dword_D020484; // weak extern int dword_D020488; // weak extern int dword_D02048C; // weak extern int dword_D020490; // weak extern int dword_D020494; // weak extern int dword_D020498; // weak extern int dword_D02049C; // weak extern int dword_D0204A0; // weak extern __int16 word_D0204A4; // weak extern __int16 word_D0204AC; // weak extern int dword_D0204B0; // weak extern __int16 word_D0204B4; // weak extern int dword_D0204B8; // weak extern __int16 word_D0204BC; // weak extern int dword_D0204C0; // weak extern __int16 word_D0204C4; // weak extern int dword_D0204C8; // weak extern __int16 word_D0204CC; // weak extern int dword_D0204D0; // weak extern __int16 word_D0204D4; // weak extern int dword_D0204D8; // weak extern int dword_D0204E0; // weak extern _UNKNOWN unk_D020520; // weak extern void *dword_D0205D0; // idb extern int dword_D0205D4; // weak extern int dword_D0205D8; // weak extern _UNKNOWN unk_D020618; // weak extern void *dword_D0207D0; // idb extern size_t dword_D0207D4; // idb extern __int16 word_D0207D8; // weak extern int dword_D0207DC; // weak extern __int16 word_D0207E0; // weak extern int dword_D0207E4; // weak extern int dword_D0207E8; // weak extern int dword_D0207F0; // weak extern __int16 word_D0207F4; // weak extern _UNKNOWN unk_D020800; // weak extern __int16 word_D41EF60; // weak extern int dword_D41EF64; // weak extern __int16 word_D41EF68; // weak extern int dword_D41EF6C; // weak extern __int16 word_D41EF70; // weak extern int dword_D41EF74; // weak extern __int16 word_D41EF78; // weak extern int dword_D41EF7C; // weak extern _UNKNOWN unk_D41EF80; // weak extern int dword_D41F880; // weak extern int dword_D41F884; // weak extern int dword_D41F888; // weak extern int dword_D41F890; // weak extern __int16 word_D41F894; // weak extern _UNKNOWN unk_D41F8A0; // weak extern __int16 word_D553BE0; // weak extern __int16 word_D553BE4; // weak extern int dword_D553BE8; // weak extern int dword_D553BF0[]; // weak extern int dword_D553BF4[]; // weak extern int dword_D553BF8[]; // weak extern int dword_D553BFC[]; // weak extern char byte_D553C00[]; // weak extern int dword_D553C01[]; // weak extern int dword_D553C05[]; // weak extern int dword_D553C09[]; // weak extern char byte_D553C0D[]; // weak extern int dword_D553C10[]; // weak extern char byte_D554070[]; // weak extern char byte_D554071[8]; // idb extern _UNKNOWN unk_D554079; // weak extern char byte_D55407D; // weak extern char dword_D55407E[]; // idb extern int dword_D554082; // weak extern int dword_D554086; // weak extern char byte_D55408A; // weak extern char dword_D55408B[]; // idb extern int dword_D55408F; // weak extern int dword_D554093; // weak extern char byte_D554097; // weak extern char dword_D554098[]; // idb extern int dword_D55409C; // weak extern int dword_D5540A0; // weak extern char byte_D5540A4; // weak extern char dword_D5540A5[]; // idb extern int dword_D5540A9; // weak extern int dword_D5540AD; // weak extern char byte_D5540B1; // weak extern char dword_D5540B2[]; // idb extern int dword_D5540B6; // weak extern int dword_D5540BA; // weak extern char byte_D5540BE; // weak extern char dword_D5540BF[]; // idb extern int dword_D5540C3; // weak extern int dword_D5540C7; // weak extern char byte_D5540CB; // weak extern char dword_D5540CC[]; // idb extern int dword_D5540D0; // weak extern int dword_D5540D4; // weak extern char byte_D5540D8; // weak extern char dword_D5540D9[]; // idb extern int dword_D5540DD; // weak extern int dword_D5540E1; // weak extern char byte_D5540E5; // weak extern char dword_D5540E6[]; // idb extern int dword_D5540EA; // weak extern int dword_D5540EE; // weak extern char byte_D5540F2; // weak extern char dword_D5540F3[]; // idb extern int dword_D5540F7; // weak extern int dword_D5540FB; // weak extern char byte_D5540FF; // weak extern char dword_D554100[]; // idb extern int dword_D554104; // weak extern int dword_D554108; // weak extern char byte_D55410C; // weak extern char dword_D55410D[]; // idb extern int dword_D554111; // weak extern int dword_D554115; // weak extern char byte_D554119; // weak extern char dword_D55411A[]; // idb extern int dword_D55411E; // weak extern int dword_D554122; // weak extern char byte_D554126; // weak extern char dword_D554127[]; // idb extern int dword_D55412B; // weak extern int dword_D55412F; // weak extern char byte_D554133; // weak extern char dword_D554134[]; // idb extern int dword_D554138; // weak extern int dword_D55413C; // weak extern char byte_D554140; // weak extern char dword_D554141[]; // idb extern int dword_D554145; // weak extern int dword_D554149; // weak extern char byte_D55414D; // weak extern char dword_D55414E[]; // idb extern int dword_D554152; // weak extern int dword_D554156; // weak extern char byte_D55415A; // weak extern char dword_D55415B[]; // idb extern int dword_D55415F; // weak extern int dword_D554163; // weak extern char byte_D554167; // weak extern char dword_D554168[]; // idb extern int dword_D55416C; // weak extern int dword_D554170; // weak extern char byte_D554174; // weak extern char dword_D554175[]; // idb extern int dword_D554179; // weak extern int dword_D55417D; // weak extern char byte_D554181; // weak extern char dword_D554182[]; // idb extern int dword_D554186; // weak extern int dword_D55418A; // weak extern char byte_D55418E; // weak extern char dword_D55418F[]; // idb extern int dword_D554193; // weak extern int dword_D554197; // weak extern char byte_D55419B; // weak extern char dword_D55419C[]; // idb extern int dword_D5541A0; // weak extern int dword_D5541A4; // weak extern char byte_D5541A8; // weak extern char dword_D5541A9[]; // idb extern int dword_D5541AD; // weak extern int dword_D5541B1; // weak extern char byte_D5541B5; // weak extern char dword_D5541B6[]; // idb extern int dword_D5541BA; // weak extern int dword_D5541BE; // weak extern char byte_D5541C2; // weak extern char dword_D5541C3[]; // idb extern int dword_D5541C7; // weak extern int dword_D5541CB; // weak extern char byte_D5541CF; // weak extern char dword_D5541D0[]; // idb extern int dword_D5541D4; // weak extern int dword_D5541D8; // weak extern char byte_D5541DC; // weak extern char dword_D5541DD[]; // idb extern int dword_D5541E1; // weak extern int dword_D5541E5; // weak extern char byte_D5541E9; // weak extern char dword_D5541EA[]; // idb extern int dword_D5541EE; // weak extern int dword_D5541F2; // weak extern char byte_D5541F6; // weak extern char dword_D5541F7[]; // idb extern int dword_D5541FB; // weak extern int dword_D5541FF; // weak extern char byte_D554203; // weak extern char dword_D554204[]; // idb extern int dword_D554208; // weak extern int dword_D55420C; // weak extern int dword_D554210; // weak extern int dword_D554214; // weak extern int dword_D554218; // weak extern _UNKNOWN unk_D55421C; // weak extern void *dword_D554220; // idb extern void *dword_D554230; // idb extern int dword_D554234; // weak extern int dword_D554238; // weak extern _UNKNOWN unk_D554240; // weak extern int dword_D554BA8[]; // weak extern __int16 word_D554E08; // weak extern int dword_D554E0C; // weak extern int dword_D554E10; // weak extern __int16 word_D554E14; // weak extern int dword_D554E18; // weak extern __int16 word_D554E1E; // weak extern char dword_D5552A8[]; // idb extern int dword_D5552AC; // weak extern int dword_D5552B0; // weak extern int dword_D5552B4; // weak extern int dword_D5552B8; // weak extern int dword_D5552BC; // weak extern _UNKNOWN unk_D5552C0; // weak extern void *dword_D5552C4; // idb extern _UNKNOWN unk_D5552D0; // weak extern void *dword_D565B24; // idb extern _UNKNOWN unk_D565B30; // weak extern _UNKNOWN unk_D565F34; // weak extern void *dword_D56DC38; // idb extern int dword_D56DC3C; // weak extern int dword_D56DC40; // weak extern void *dword_D56DC48; // idb extern int dword_D56DC4C; // weak extern int dword_D56DC50; // weak extern void *dword_D56DC58; // idb extern int dword_D56DC5C; // weak extern int dword_D56DC60; // weak extern __int16 word_D56DC68; // weak extern int dword_D56DC6C; // weak extern __int16 word_D56DC70; // weak extern int dword_D56DC74; // weak extern _UNKNOWN unk_D56DC78; // weak extern _UNKNOWN unk_D61DC80; // weak extern int dword_D61E05C; // weak extern char byte_D61E060; // weak extern void *dword_D61E064; // idb extern int dword_D61E068; // weak extern int dword_D61E06C; // weak extern __int16 word_D61E074; // weak extern int dword_D61E078; // weak extern char dword_D61E07C[]; // idb extern int dword_D61E080; // weak extern int dword_D61E084; // weak extern int dword_D61E088; // weak extern int dword_D61E090; // weak extern int dword_D61E098; // weak extern __int16 word_D61E09C; // weak extern _UNKNOWN unk_D61E0A8; // weak extern _UNKNOWN unk_D645270; // weak extern int dword_D64C270; // weak extern int dword_D64C274; // weak extern char byte_D64C278[16]; // idb extern char byte_D64C288[]; // weak extern FILE *dword_D64C388; // idb extern char byte_D64C50C; // weak extern void *dword_D64C510; // idb extern int dword_D64C514; // weak extern int dword_D64C518; // weak extern int dword_D64C520; // weak extern _UNKNOWN unk_D64C560; // weak extern char byte_D64C5E0[]; // weak extern char byte_D64C5E1[]; // weak extern char byte_D64C5E2[]; // weak extern char byte_D64C5E3[]; // weak extern char byte_D64C5E4[]; // weak extern char byte_D64C5E5[]; // weak extern char byte_D64C604[]; // weak extern char byte_D64C605[]; // weak extern char byte_D64C606[]; // weak extern char byte_D64C607[]; // weak extern char byte_D64C608[]; // weak extern char byte_D64C609[]; // weak extern __int16 word_D64C630[]; // weak extern __int16 word_D64C632[]; // weak extern size_t dword_D64C6B0; // idb extern _UNKNOWN unk_D64C6B8; // weak extern _UNKNOWN unk_D65CF10; // weak extern _UNKNOWN unk_D65CFD8; // weak extern int dword_D711FD8; // weak extern void *dword_D711FE0[3005]; // idb extern int dword_D714ED4; // weak extern int dword_D714ED8; // weak extern int dword_D714EDC; // weak extern int dword_D714EE0; // weak extern int dword_D714EEC; // weak extern int dword_D714EF0; // weak extern int dword_D714EF4; // weak extern __int16 word_D714FF0; // weak extern int dword_D714FF4; // weak extern _UNKNOWN unk_D714FF8; // weak extern __int16 word_D714FFC; // weak extern int dword_D715000; // weak extern __int16 word_D715006; // weak extern int dword_D73D088; // weak extern int dword_D73D08C; // weak extern int dword_D73D090; // weak extern _UNKNOWN unk_D73D0D0; // weak extern int dword_D73D100; // weak extern int dword_D73D104; // weak extern int dword_D73D138; // weak extern int dword_D73D144; // weak extern int dword_D73D148; // weak extern __int16 word_D73D14C; // weak extern int dword_D73D150; // weak extern _UNKNOWN unk_D73D158; // weak extern int dword_D73D15C; // weak extern _UNKNOWN unk_D73D19C; // weak extern int dword_D73D1D8; // weak extern __int16 word_D73D1EC; // weak extern char byte_D73D1EE; // weak extern char byte_D73D1EF; // weak extern int dword_D73D1F0; // weak extern int dword_D73D1F4; // weak extern int dword_D73D1F8; // weak extern int dword_D73D1FC; // weak extern int dword_D73D200; // weak extern int dword_D73D204; // weak extern int dword_D73D208; // weak extern int dword_D73D20C; // weak extern int dword_D73D210; // weak extern int dword_D73D214; // weak extern int dword_D73D218; // weak extern int dword_D73D21C; // weak extern int dword_D73D220; // weak extern int dword_D73D224; // weak extern int dword_D73D228; // weak extern int dword_D73D22C; // weak extern char byte_D73D230; // weak extern int dword_D73D234; // weak extern int dword_D73D240; // weak extern __int16 word_D73D244; // weak extern int dword_D73D24C; // weak extern __int16 word_D73D250; // weak extern int dword_D73D254; // weak extern __int16 word_D73D258; // weak extern char byte_D73D25A; // weak extern int dword_D73D25C; // weak extern int dword_D73D260; // weak extern __int16 word_D73D264; // weak extern int dword_D73D268; // weak extern __int16 word_D73D26C; // weak extern int dword_D73D270; // weak extern __int16 word_D73D274; // weak extern _UNKNOWN unk_D73D278; // weak extern size_t dword_D740478; // idb extern _UNKNOWN unk_D740EB0; // weak extern _UNKNOWN unk_D740EB4; // weak extern __int16 word_D9FAF74; // weak extern int dword_D9FAF78; // weak extern int dword_D9FAF7C; // weak extern int dword_D9FAF80; // weak extern int dword_D9FAF84; // weak extern _UNKNOWN unk_D9FAF88; // weak extern int dword_D9FAF98; // weak extern int dword_D9FAF9C; // weak extern int dword_D9FAFA0; // weak extern int dword_D9FAFA4; // weak extern char byte_D9FAFA8[]; // weak extern FILE *dword_D9FB0A8; // idb extern char byte_D9FB22C; // weak extern char byte_D9FB230[]; // weak extern FILE *dword_D9FB330; // idb extern char byte_D9FB4B4; // weak extern _UNKNOWN unk_D9FB4B8; // weak extern size_t dword_D9FB7D8; // idb extern void *dword_D9FB7DC; // idb extern int dword_D9FB7E0; // weak extern int dword_D9FB7E4; // weak extern _UNKNOWN unk_D9FB7EC; // weak extern int dword_D9FB7F4; // weak extern _UNKNOWN unk_D9FB7F8; // weak extern void *dword_D9FB7FC; // idb extern void *dword_D9FB808; // idb extern int dword_D9FB80C; // weak extern int dword_D9FB810; // weak extern void *dword_D9FB818; // idb extern int dword_D9FB81C; // weak extern int dword_D9FB820; // weak extern int dword_D9FB828; // weak extern void *dword_D9FB82C[4]; // idb extern void *dword_D9FB83C; // idb extern int dword_D9FB840; // weak extern int dword_D9FB844; // weak extern void *dword_D9FB84C; // idb extern int dword_D9FB850; // weak extern int dword_D9FB854; // weak extern __int16 word_D9FB860; // weak extern int dword_D9FB864; // weak extern char dword_D9FB868[]; // idb extern int dword_D9FB86C; // weak extern int dword_D9FB870; // weak extern int dword_D9FB874; // weak extern int dword_D9FB878; // weak extern char dword_D9FB87C[]; // idb extern int dword_D9FB880; // weak extern int dword_D9FB884; // weak extern int dword_D9FB888; // weak extern int dword_D9FB88C; // weak extern char dword_D9FB890[]; // idb extern int dword_D9FB894; // weak extern int dword_D9FB898; // weak extern int dword_D9FB89C; // weak extern int dword_D9FB8A0; // weak extern char dword_D9FB8A4[]; // idb extern int dword_D9FB8A8; // weak extern int dword_D9FB8AC; // weak extern int dword_D9FB8B0; // weak extern int dword_D9FB8B4; // weak extern char dword_D9FB8B8[]; // idb extern int dword_D9FB8BC; // weak extern int dword_D9FB8C0; // weak extern int dword_D9FB8C4; // weak extern int dword_D9FB8C8; // weak extern char dword_D9FB8CC[]; // idb extern int dword_D9FB8D0; // weak extern int dword_D9FB8D4; // weak extern int dword_D9FB8D8; // weak extern int dword_D9FB8DC; // weak extern char dword_D9FB8E0[]; // idb extern int dword_D9FB8E4; // weak extern int dword_D9FB8E8; // weak extern int dword_D9FB8EC; // weak extern int dword_D9FB8F0; // weak extern int dword_D9FB8F4; // weak extern __int16 word_D9FB8F8; // weak extern int dword_D9FB8FC; // weak extern __int16 word_D9FB900; // weak extern int dword_D9FB904; // weak extern __int16 word_D9FB908; // weak extern int dword_D9FB90C; // weak extern __int16 word_D9FB910; // weak extern int dword_D9FB914; // weak extern _UNKNOWN unk_D9FB918; // weak extern int dword_D9FBAA8; // weak extern _UNKNOWN unk_D9FBAAC; // weak extern char dword_D9FBEB0[]; // idb extern int dword_D9FBEB4; // weak extern int dword_D9FBEB8; // weak extern int dword_D9FBEBC; // weak extern int dword_D9FBEC0; // weak extern char dword_D9FBEC4[]; // idb extern int dword_D9FBEC8; // weak extern int dword_D9FBECC; // weak extern int dword_D9FBED0; // weak extern int dword_D9FBED4; // weak extern int dword_D9FBED8; // weak extern int dword_D9FBEE0; // weak extern int dword_D9FBF20; // weak extern char byte_D9FBF24; // weak extern _DWORD dword_D9FBF28[3073]; // idb extern _UNKNOWN unk_D9FEF2C; // weak extern int dword_DA0F780; // weak extern int dword_DA0F788; // weak extern __int16 word_DA0F78C; // weak extern __int16 word_DA0F794; // weak extern _UNKNOWN unk_DA0F798; // weak extern int dword_DA0F928; // weak extern int dword_DA0FA28; // weak extern char byte_DA0FA30[]; // weak extern int dword_DA0FB30; // weak extern char byte_DA0FCB4; // weak extern char byte_DA0FCB8[]; // weak extern int dword_DA0FDB8; // weak extern char byte_DA0FF3C; // weak extern char byte_DA0FF40[]; // weak extern __int16 word_DA0FF41; // weak extern int dword_DA11F40; // weak extern int dword_DA11F44; // weak extern int dword_DA11F48; // weak extern int dword_DA11F4C; // weak extern int dword_DA11F50; // weak extern int dword_DA11F54; // weak extern int dword_DA11F58; // weak extern int dword_DA11F5C; // weak extern int dword_DA11F60; // weak extern int dword_DA11F64; // weak extern int dword_DA11F68; // weak extern int dword_DA11F6C; // weak extern int dword_DA11F70; // weak extern int dword_DA11F74; // weak extern int dword_DA11F78; // weak extern int dword_DA11F7C; // weak extern int dword_DA11F80; // weak extern int dword_DA11F84; // weak extern int dword_DA11F88; // weak extern int dword_DA11F8C; // weak extern int dword_DA11F90; // weak extern int dword_DA11F94; // weak extern int dword_DA11F98; // weak extern int dword_DA11F9C; // weak extern int dword_DA11FA0; // weak extern int dword_DA11FA4; // weak extern int dword_DA11FA8; // weak extern int dword_DA11FAC; // weak extern int dword_DA11FB0; // weak extern int dword_DA11FB4; // weak extern int dword_DA11FB8; // weak extern int dword_DA11FBC; // weak extern int dword_DA11FC0; // weak extern int dword_DA11FC4; // weak extern int dword_DA11FC8; // weak extern int dword_DA11FCC; // weak extern int dword_DA11FD0; // weak extern int dword_DA11FD4; // weak extern int dword_DA11FD8; // weak extern int dword_DA11FDC; // weak extern int dword_DA11FE0; // weak extern int dword_DA11FE4; // weak extern int dword_DA11FE8; // weak extern int dword_DA11FEC; // weak extern int dword_DA11FF0; // weak extern int dword_DA11FF4; // weak extern int dword_DA11FF8; // weak extern int dword_DA11FFC; // weak extern int dword_DA12000; // weak extern int dword_DA12004; // weak extern int dword_DA12008; // weak extern int dword_DA12010; // weak extern int dword_DA12014; // weak extern int dword_DA12018; // weak extern int dword_DA1201C; // weak extern int dword_DA12020; // weak extern int dword_DA12024; // weak extern int dword_DA12028; // weak extern int dword_DA1202C; // weak extern int dword_DA12030; // weak extern int dword_DA12034; // weak extern int dword_DA12038; // weak extern int dword_DA1203C; // weak extern int dword_DA12040; // weak extern int dword_DA12044; // weak extern int dword_DA12048; // weak extern int dword_DA1204C; // weak extern int dword_DA12050; // weak extern int dword_DA12054; // weak extern int dword_DA12058; // weak extern int dword_DA1205C; // weak extern int dword_DA12060; // weak extern int dword_DA12064; // weak extern int dword_DA12068; // weak extern int dword_DA1206C; // weak extern int dword_DA12070; // weak extern int dword_DA12074; // weak extern int dword_DA12078; // weak extern int dword_DA1207C; // weak extern int dword_DA12080; // weak extern int dword_DA12084; // weak extern int dword_DA12088; // weak extern int dword_DA1208C; // weak extern int dword_DA12090; // weak extern int dword_DA12094; // weak extern int dword_DA12098; // weak extern int dword_DA1209C; // weak extern int dword_DA120A0; // weak extern int dword_DA120A4; // weak extern int dword_DA120A8; // weak extern int dword_DA120AC; // weak extern int dword_DA120B0; // weak extern int dword_DA120B4; // weak extern int dword_DA120B8; // weak extern int dword_DA120BC; // weak extern int dword_DA120C0; // weak extern int dword_DA120C4; // weak extern int dword_DA120C8; // weak extern int dword_DA120CC; // weak extern int dword_DA120D0; // weak extern int dword_DA120D4; // weak extern int dword_DA120D8; // weak extern _UNKNOWN unk_DA120E0; // weak extern int dword_DA22938; // weak extern int dword_DA2293C; // weak extern int dword_DA22944; // weak extern int dword_DA22948; // weak extern char byte_DA2294C; // weak extern double dbl_DA22950; // weak extern int dword_DA22958; // weak extern int dword_DA22970[]; // weak extern int dword_DA22974[]; // weak extern int dword_DA22978[]; // weak extern int dword_DA2297C[]; // weak extern int dword_DA22E30[]; // weak extern int dword_DA2308C; // weak extern int dword_DA23090; // weak extern int dword_DA23094; // weak extern int dword_DA23098; // weak extern int dword_DA2309C; // weak extern int dword_DA230A4; // weak extern __int16 word_DA230B0; // weak extern int dword_DA230B4; // weak extern int dword_DA230B8; // weak extern _UNKNOWN unk_DA230C0; // weak extern _UNKNOWN unk_DA97C05; // weak extern _UNKNOWN unk_EF1CE44; // weak extern _UNKNOWN unk_FA02047; // weak extern _UNKNOWN unk_FFFFFFE; // weak extern _UNKNOWN unk_FFFFFFF; // weak extern _UNKNOWN unk_10325476; // weak extern _UNKNOWN unk_1061E6C0; // weak extern _UNKNOWN unk_10624DD3; // weak extern _UNKNOWN unk_11111111; // weak extern _UNKNOWN unk_12407492; // weak extern _UNKNOWN unk_12492492; // weak extern int dword_13219CD0; // weak extern int dword_13219CE0; // weak extern int dword_13219CE8; // weak extern int dword_1321A340; // weak extern int dword_1321B604; // weak extern int dword_1321B60C; // weak extern char byte_1321B638; // weak extern int dword_1321B738; // weak extern int dword_1321B73C; // weak extern int dword_1321B740; // weak extern int dword_1321B744; // weak extern int dword_1321B748; // weak extern _UNKNOWN unk_1321B74C; // weak extern void *dword_1321B750; // idb extern int dword_1321B950; // weak extern int dword_1321B954; // weak extern int dword_1321B958; // weak extern int dword_1321B95C; // weak extern char byte_1321B960[]; // weak extern FILE *dword_1321BA60; // idb extern char byte_1321BBE4; // weak extern _UNKNOWN unk_1321BBF0; // weak extern _UNKNOWN unk_1321BBF8; // weak extern _UNKNOWN unk_1321C000; // weak extern _UNKNOWN unk_1321C100; // weak extern _UNKNOWN unk_1321C200; // weak extern _UNKNOWN unk_1321C300; // weak extern _UNKNOWN unk_1321C400; // weak extern _UNKNOWN unk_1321C500; // weak extern _UNKNOWN unk_1321C600; // weak extern _UNKNOWN unk_1321C700; // weak extern _UNKNOWN unk_1321C800; // weak extern _UNKNOWN unk_1321C900; // weak extern _UNKNOWN unk_1321CA00; // weak extern _UNKNOWN unk_1321CA01; // weak extern _UNKNOWN unk_1321CA02; // weak extern _UNKNOWN unk_1321CA03; // weak extern _UNKNOWN unk_1321CA04; // weak extern _UNKNOWN unk_1321CA05; // weak extern _UNKNOWN unk_1321CA07; // weak extern _UNKNOWN unk_1321CA08; // weak extern _UNKNOWN unk_1321CB08; // weak extern _UNKNOWN unk_1321CC08; // weak extern _UNKNOWN unk_1321CD08; // weak extern _UNKNOWN unk_1321CE08; // weak extern _UNKNOWN unk_1321CF08; // weak extern _UNKNOWN unk_1321D008; // weak extern _UNKNOWN unk_1321D108; // weak extern _UNKNOWN unk_1321D208; // weak extern _UNKNOWN unk_1321D308; // weak extern _UNKNOWN unk_1321D408; // weak extern _UNKNOWN unk_1321D508; // weak extern _UNKNOWN unk_1321D608; // weak extern _UNKNOWN unk_1321D708; // weak extern _UNKNOWN unk_1321D808; // weak extern _UNKNOWN unk_1321D908; // weak extern _UNKNOWN unk_1321DA08; // weak extern _UNKNOWN unk_1321DB08; // weak extern char byte_1321DC08[]; // weak extern FILE *dword_1321DD08; // idb extern char byte_1321DE8C; // weak extern _UNKNOWN unk_1321DE90; // weak extern _UNKNOWN unk_1321DF90; // weak extern _UNKNOWN unk_1321E090; // weak extern _UNKNOWN unk_1321E190; // weak extern _UNKNOWN unk_1321E290; // weak extern _UNKNOWN unk_1321E390; // weak extern _UNKNOWN unk_1321E490; // weak extern _UNKNOWN unk_1321E590; // weak extern _UNKNOWN unk_1321E690; // weak extern _UNKNOWN unk_1321E790; // weak extern _UNKNOWN unk_1321E890; // weak extern _UNKNOWN unk_1321E990; // weak extern _UNKNOWN unk_1321EA90; // weak extern _UNKNOWN unk_1321EB90; // weak extern _UNKNOWN unk_1321EC90; // weak extern _UNKNOWN unk_1321ED90; // weak extern char byte_1321EE90[]; // weak extern FILE *dword_1321EF90; // idb extern char byte_1321F114; // weak extern _UNKNOWN unk_1321F118; // weak extern _UNKNOWN unk_1321F119; // weak extern _UNKNOWN unk_1321F120; // weak extern _UNKNOWN unk_1321F220; // weak extern _UNKNOWN unk_1321F320; // weak extern _UNKNOWN unk_1321F420; // weak extern _UNKNOWN unk_1321F520; // weak extern _UNKNOWN unk_1321F620; // weak extern __int16 word_1322FE74; // weak extern int dword_1322FE78; // weak extern double dbl_1322FE80[]; // weak extern _UNKNOWN unk_13230E20; // weak extern _UNKNOWN unk_13230E30; // weak extern __int16 word_13231234; // weak extern int dword_13231238; // weak extern __int16 word_1323123C; // weak extern int dword_13231240; // weak extern int dword_13231244; // weak extern int dword_1323124C; // weak extern void *dword_13231250; // idb extern int dword_13231254; // weak extern int dword_13231258; // weak extern int dword_13231260; // weak extern __int16 word_13231268; // weak extern int dword_1323126C; // weak extern _UNKNOWN unk_13231270; // weak extern int dword_13231278[]; // weak extern int dword_1323127C; // weak extern int dword_13231280; // weak extern int dword_1323129C; // weak extern int dword_132312A8; // weak extern int dword_132312AC; // weak extern _UNKNOWN unk_132312C0; // weak extern _UNKNOWN unk_1323D2C8; // weak extern char byte_132422CC[]; // weak extern int dword_132423CC; // weak extern __int16 word_132423D0[]; // weak extern _UNKNOWN unk_132423D4; // weak extern int dword_132447D0; // weak extern int dword_132447D4; // weak extern char byte_132447D8; // weak extern char byte_132447D9; // weak extern __int16 word_132447DC; // weak extern int dword_132447E0; // weak extern __int16 word_132447E4; // weak extern int dword_132447E8; // weak extern __int16 word_132447EC; // weak extern int dword_132447F0; // weak extern __int16 word_132447F4; // weak extern int dword_132447F8; // weak extern __int16 word_132447FC; // weak extern int dword_13244800; // weak extern __int16 word_13244804; // weak extern int dword_13244808; // weak extern __int16 word_1324480C; // weak extern int dword_13244810; // weak extern __int16 word_13244814; // weak extern int dword_13244818; // weak extern __int16 word_1324481C; // weak extern int dword_13244820; // weak extern __int16 word_13244824; // weak extern int dword_13244828; // weak extern __int16 word_1324482C; // weak extern int dword_13244830; // weak extern __int16 word_13244834; // weak extern __int16 word_13244838; // weak extern int dword_1324483C; // weak extern __int16 word_13244840; // weak extern __int16 word_13244844; // weak extern int dword_13244848; // weak extern char byte_1324484C; // weak extern __int16 word_13244850; // weak extern __int16 word_13244854; // weak extern int dword_13244858; // weak extern __int16 word_1324485C; // weak extern int dword_13244860; // weak extern __int16 word_13244864; // weak extern int dword_13244868; // weak extern __int16 word_1324486C; // weak extern int dword_13244870; // weak extern __int16 word_13244874; // weak extern int dword_13244878; // weak extern __int16 word_1324487C; // weak extern int dword_13244880; // weak extern __int16 word_13244884; // weak extern int dword_13244888; // weak extern int dword_1324488C; // weak extern __int16 word_13244890; // weak extern int dword_13244894; // weak extern __int16 word_13244898; // weak extern int dword_1324489C; // weak extern __int16 word_132448A0; // weak extern int dword_132448A4; // weak extern __int16 word_132448A8; // weak extern int dword_132448AC; // weak extern __int16 word_132448B0; // weak extern int dword_132448B4; // weak extern __int16 word_132448B8; // weak extern int dword_132448BC; // weak extern __int16 word_132448C0; // weak extern int dword_132448C4; // weak extern __int16 word_132448CC; // weak extern int dword_132448D0; // weak extern __int16 word_132448D4; // weak extern int dword_132448D8; // weak extern __int16 word_132448DC; // weak extern int dword_132448E0; // weak extern char byte_132448E8[]; // weak extern FILE *dword_132449E8; // idb extern char byte_13244B6C; // weak extern __int16 word_13244B70; // weak extern int dword_13244B74; // weak extern int dword_13244B78; // weak extern __int16 word_13244B7C; // weak extern __int16 word_13244B80; // weak extern __int16 word_13244B84; // weak extern __int16 word_13244B88; // weak extern int dword_13244B8C; // weak extern __int16 word_13244B90; // weak extern __int16 word_13244B94; // weak extern __int16 word_13244B98; // weak extern int dword_13244B9C; // weak extern __int16 word_13244BB8; // weak extern int dword_13244BBC; // weak extern __int16 word_13244BC0; // weak extern int dword_13244BC4; // weak extern __int16 word_13244BC8; // weak extern int dword_13244BCC; // weak extern __int16 word_13244BD0; // weak extern int dword_13244BD4; // weak extern int dword_13244BD8; // weak extern int dword_13244BDC; // weak extern __int16 word_13244BE0; // weak extern int dword_13244BE2; // weak extern int dword_13244BE6; // weak extern __int16 word_13244BEA; // weak extern _BYTE byte_13244BEC[112]; // idb extern int dword_13244C5C; // weak extern int dword_13244C60; // weak extern int dword_13244C64; // weak extern int dword_13244C68; // weak extern _UNKNOWN unk_13244C70; // weak extern int dword_13244CD8; // weak extern int dword_13244CDC; // weak extern int dword_13244CE2; // weak extern _UNKNOWN unk_13244D48; // weak extern char byte_13244D5C[12]; // idb extern char byte_13244D68; // weak extern char byte_13244D7D[12]; // idb extern char byte_13244D89; // weak extern int dword_13244D9E; // weak extern int dword_13244DA2; // weak extern int dword_13244DAC[]; // weak extern __int16 word_13244DBC; // weak extern char byte_13244DBE; // weak extern char byte_13244DC0; // weak extern int dword_13244DC2; // weak extern char byte_13244DC6; // weak extern int dword_13244DCA; // weak extern int dword_13244DCE; // weak extern int dword_13244DD2; // weak extern int dword_13244DD6; // weak extern int dword_13244DDA; // weak extern int dword_13244DDE; // weak extern __int16 word_13244DE2; // weak extern char byte_13244DE4; // weak extern int dword_13244DE6; // weak extern __int16 word_13244DEA; // weak extern char byte_13244DEC; // weak extern _UNKNOWN unk_13244DF0; // weak extern _UNKNOWN unk_13244E54; // weak extern _UNKNOWN unk_13244E68; // weak extern _UNKNOWN unk_13244E80; // weak extern _UNKNOWN unk_13244E88; // weak extern _UNKNOWN unk_13244E8C; // weak extern _UNKNOWN unk_13244EB8; // weak extern _UNKNOWN unk_13244EC8; // weak extern char byte_13244EDC[12]; // idb extern char byte_13244EE8; // weak extern char byte_13244EFD[12]; // idb extern char byte_13244F09; // weak extern int dword_13244F1E; // weak extern int dword_13244F22; // weak extern _UNKNOWN unk_13244F2C; // weak extern _UNKNOWN unk_13244F38; // weak extern _UNKNOWN unk_13244FA0; // weak extern _UNKNOWN unk_13245020; // weak extern int dword_13245088; // weak extern int dword_1324508C; // weak extern int dword_13245092; // weak extern int dword_132450F8; // weak extern _UNKNOWN unk_132450FC; // weak extern char byte_13245118[]; // weak extern FILE *dword_13245218; // idb extern char byte_1324539C; // weak extern _UNKNOWN unk_132453A0; // weak extern _UNKNOWN unk_132453A8; // weak extern _UNKNOWN unk_132453B0; // weak extern _UNKNOWN unk_132460EC; // weak extern _UNKNOWN unk_132460F4; // weak extern _UNKNOWN unk_132460F8; // weak extern _UNKNOWN unk_13247470; // weak extern __int16 word_1324B27C; // weak extern int dword_1324B27E; // weak extern char byte_1324B284; // weak extern int dword_1324B285; // weak extern int dword_1324B289; // weak extern char dword_1324B28D[]; // idb extern int dword_1324B291; // weak extern int dword_1324B295; // weak extern int dword_1324B299; // weak extern int dword_1324B29D; // weak extern int dword_1324B2A1; // weak extern __int16 word_1324B2A5; // weak extern _UNKNOWN unk_1324B2A8; // weak extern _UNKNOWN unk_1324C058; // weak extern _UNKNOWN unk_1324CEAC; // weak extern _UNKNOWN unk_13250FF0; // weak extern _UNKNOWN unk_13251238; // weak extern _UNKNOWN unk_13252218; // weak extern _UNKNOWN unk_13252564; // weak extern _UNKNOWN unk_13252578; // weak extern _UNKNOWN unk_13252688; // weak extern _UNKNOWN unk_13252690; // weak extern _UNKNOWN unk_13253360; // weak extern _UNKNOWN unk_13253368; // weak extern char byte_13253370[]; // weak extern FILE *dword_13253470; // idb extern char byte_132535F4; // weak extern _UNKNOWN unk_132535F8; // weak extern _UNKNOWN unk_13253600; // weak extern _UNKNOWN unk_13253628; // weak extern _UNKNOWN unk_13253630; // weak extern int dword_1325381C[]; // weak extern int dword_13253824; // weak extern int dword_1325382C; // weak extern int dword_13253830; // weak extern _UNKNOWN unk_13253850; // weak extern _UNKNOWN unk_13253858; // weak extern char byte_13253860[]; // weak extern FILE *dword_13253960; // idb extern _UNKNOWN unk_132539A4; // weak extern char byte_132539E4[256]; // idb extern char byte_13253AE4; // weak extern _UNKNOWN unk_13253AE8; // weak extern char byte_13253BF0[]; // weak extern int dword_13253CF0; // weak extern char byte_13253E74; // weak extern _UNKNOWN unk_13253E78; // weak extern _UNKNOWN unk_13253E80; // weak extern int dword_13253E84; // weak extern int dword_13253E88; // weak extern int dword_13253EC8; // weak extern int dword_13253ECC; // weak extern int dword_13253ED0; // weak extern int dword_13253ED4; // weak extern int dword_13253ED8; // weak extern __int16 word_13253EDC; // weak extern int dword_13253EE0; // weak extern char byte_13253EE8[]; // weak extern FILE *dword_13253FE8; // idb extern char byte_1325416C; // weak extern int dword_13254170; // weak extern char dword_13254174[]; // idb extern int dword_13254178; // weak extern int dword_1325417C; // weak extern int dword_13254180; // weak extern int dword_13254184; // weak extern int dword_13254188; // weak extern int dword_1325418C; // weak extern int dword_13254190; // weak extern int dword_13254194; // weak extern int dword_13254198; // weak extern __int16 word_1325419C; // weak extern int dword_132541A0; // weak extern __int16 word_132541A4; // weak extern int dword_132541A8; // weak extern __int16 word_132541AC; // weak extern int dword_132541B0; // weak extern __int16 word_132541B4; // weak extern int dword_132541B8; // weak extern _UNKNOWN unk_132541BC; // weak extern _UNKNOWN unk_132541C4; // weak extern __int16 word_132541CC; // weak extern int dword_132541D0; // weak extern __int16 word_132541D4; // weak extern int dword_132541D8; // weak extern __int16 word_132541DC; // weak extern int dword_132541E0; // weak extern int dword_132541E4; // weak extern int dword_132541E8; // weak extern __int16 word_132541EC; // weak extern int dword_132541F0; // weak extern _UNKNOWN unk_132541F4; // weak extern char byte_13254200[]; // weak extern FILE *dword_13254300; // idb extern char byte_13254484; // weak extern __int16 word_13254488; // weak extern int dword_1325448C; // weak extern __int16 word_13254490; // weak extern int dword_13254494; // weak extern __int16 word_13254498; // weak extern int dword_1325449C; // weak extern __int16 word_132544A0; // weak extern int dword_132544A4; // weak extern __int16 word_132544A8; // weak extern int dword_132544AC; // weak extern int dword_132544B0; // weak extern __int16 word_132544B4; // weak extern int dword_132545B0; // weak extern int dword_132545B4; // weak extern int dword_132545B8; // weak extern int dword_132545BC; // weak extern int dword_132545C0; // weak extern __int16 word_132545C4; // weak extern int dword_132546C0; // weak extern int dword_132546C4; // weak extern int dword_132546C8; // weak extern int dword_132546CC; // weak extern __int16 word_132546D0; // weak extern int dword_132546D4; // weak extern __int16 word_132546D8; // weak extern int dword_132546DC; // weak extern __int16 word_132546E0; // weak extern int dword_132546E4; // weak extern _UNKNOWN unk_132546E8; // weak extern int dword_13254C88; // weak extern int dword_13254C90[]; // weak extern int dword_13254C94[]; // weak extern int dword_13254C98[]; // weak extern int dword_13254C9C[]; // weak extern int dword_13254CA0[]; // weak extern int dword_13254CA4[]; // weak extern int dword_13255290; // weak extern int dword_132558D4; // weak extern int dword_132559C0; // weak extern int dword_132559C4; // weak extern int dword_132559C8; // weak extern void *dword_132559CC; // idb extern int dword_132559D0; // weak extern int dword_132559D4; // weak extern int dword_132559D8; // weak extern int dword_132559DC; // weak extern __int16 word_132559E4; // weak extern int dword_132559E8; // weak extern void *dword_13256124; // idb extern int dword_13256128; // weak extern int dword_1325612C; // weak extern int dword_13256130; // weak extern int dword_13256134; // weak extern __int16 word_1325613C; // weak extern int dword_13256140; // weak extern void *dword_1325687C; // idb extern int dword_13256880; // weak extern int dword_13256884; // weak extern int dword_13256888; // weak extern int dword_1325688C; // weak extern __int16 word_13256894; // weak extern int dword_13256898; // weak extern void *dword_13256FD4; // idb extern int dword_13256FD8; // weak extern int dword_13256FDC; // weak extern int dword_13256FE0; // weak extern int dword_13256FE4; // weak extern __int16 word_13256FEC; // weak extern int dword_13256FF4; // weak extern int dword_13257008; // weak extern int dword_1325764C; // weak extern int dword_13257738; // weak extern int dword_1325773C; // weak extern int dword_13257740; // weak extern void *dword_13257744; // idb extern int dword_13257748; // weak extern int dword_1325774C; // weak extern int dword_13257750; // weak extern int dword_13257754; // weak extern __int16 word_1325775C; // weak extern __int16 word_13257760; // weak extern int dword_13257764; // weak extern __int16 word_13257768; // weak extern int dword_1325776C; // weak extern __int16 word_13257770; // weak extern int dword_13257774; // weak extern __int16 word_13257778; // weak extern int dword_1325777C; // weak extern __int16 word_13257780; // weak extern int dword_13257784; // weak extern __int16 word_13257788; // weak extern int dword_1325778C; // weak extern __int16 word_13257790; // weak extern int dword_13257794; // weak extern int dword_13257798; // weak extern _UNKNOWN unk_132577A0; // weak extern void *dword_13257C6C; // idb extern __int16 word_13257C74; // weak extern __int16 word_13257C76; // weak extern __int16 word_13257C78; // weak extern __int16 word_13257C7A; // weak extern __int16 word_13257C7C; // weak extern __int16 word_13257C7E; // weak extern _UNKNOWN unk_13257C80; // weak extern int dword_13258088; // weak extern int dword_1325808C; // weak extern int dword_132581CC; // weak extern int dword_132581D4; // weak extern int dword_132581D8; // weak extern int dword_132581DC; // weak extern int dword_13258268; // weak extern __int16 word_1325826C; // weak extern int dword_13258270; // weak extern __int16 word_13258274; // weak extern int dword_13258278; // weak extern __int16 word_1325827C; // weak extern int dword_13258280; // weak extern __int16 word_13258284; // weak extern int dword_13258288; // weak extern __int16 word_1325828C; // weak extern int dword_13258290; // weak extern int dword_13258298; // weak extern __int16 word_132582D8; // weak extern char byte_132582DA; // weak extern int dword_132582DC; // weak extern int dword_1325831C; // weak extern char byte_13258320; // weak extern char byte_13258324; // weak extern __int16 word_13258328; // weak extern int dword_1325832C; // weak extern __int16 word_13258330; // weak extern int dword_13258334; // weak extern __int16 word_13258338; // weak extern int dword_1325833C; // weak extern __int16 word_13258340; // weak extern int dword_13258344; // weak extern _UNKNOWN unk_13258350; // weak extern int dword_13258750; // weak extern __int16 word_13258754; // weak extern int dword_13258758; // weak extern __int16 word_1325875C; // weak extern int dword_13258760; // weak extern __int16 word_13258764; // weak extern int dword_13258768; // weak extern __int16 word_1325876C; // weak extern int dword_13258770; // weak extern __int16 word_13258774; // weak extern int dword_13258778; // weak extern __int16 word_1325877C; // weak extern int dword_13258780; // weak extern __int16 word_13258788; // weak extern int dword_1325878C; // weak extern __int16 word_13258790; // weak extern int dword_13258794; // weak extern __int16 word_13258798; // weak extern int dword_1325879C; // weak extern __int16 word_132587A0; // weak extern int dword_132587A4; // weak extern __int16 word_132587A8; // weak extern int dword_132587AC; // weak extern __int16 word_132587B0; // weak extern int dword_132587B4; // weak extern __int16 word_132587B8; // weak extern int dword_132587BC; // weak extern __int16 word_132587C0; // weak extern int dword_132587C4; // weak extern __int16 word_132587C8; // weak extern int dword_132587CC; // weak extern __int16 word_132587D0; // weak extern int dword_132587D4; // weak extern int dword_132587D8; // weak extern _UNKNOWN unk_13258818; // weak extern int dword_13258858; // weak extern __int16 word_1325885C; // weak extern _UNKNOWN unk_13258860; // weak extern _UNKNOWN unk_13258864; // weak extern int dword_13258868; // weak extern _UNKNOWN unk_132588A8; // weak extern void *dword_13258958; // idb extern __int16 word_1325895C; // weak extern __int16 word_13258960; // weak extern int dword_13258964; // weak extern __int16 word_13258968; // weak extern int dword_1325896C; // weak extern __int16 word_13258970; // weak extern int dword_13258974; // weak extern __int16 word_13258978; // weak extern int dword_1325897C; // weak extern __int16 word_13258980; // weak extern int dword_13258984; // weak extern _UNKNOWN unk_13258988; // weak extern _UNKNOWN unk_13258A70; // weak extern LPVOID lpParameter; // idb extern int dword_1325CA74; // weak extern _UNKNOWN unk_1325CA78; // weak extern _UNKNOWN unk_1325CAB8; // weak extern _UNKNOWN unk_1325CB78; // weak extern int dword_1325CBAC; // weak extern _UNKNOWN unk_1325CBB8; // weak extern _UNKNOWN unk_1325CBC8; // weak extern int dword_1325CBFC; // weak extern _UNKNOWN unk_1325CC08; // weak extern _UNKNOWN unk_1325CC48; // weak extern void *dword_1325CC60[14]; // idb extern char byte_1325CC98; // weak extern char byte_1325CC9C; // weak extern char byte_1325CCA0; // weak extern char byte_1325CCA4; // weak extern int dword_1325CCA8; // weak extern int dword_1325CCAC; // weak extern _UNKNOWN unk_1325CCB0; // weak extern int dword_1325CCE4; // weak extern _UNKNOWN unk_1325CCF0; // weak extern int dword_1325CD24; // weak extern _UNKNOWN unk_1325CD30; // weak extern _UNKNOWN unk_1325CE30; // weak extern _UNKNOWN unk_1325CE70; // weak extern _UNKNOWN unk_1325CEB0; // weak extern void *dword_1325CEF0[18]; // idb extern _UNKNOWN unk_1325CF38; // weak extern _UNKNOWN unk_1325CF78; // weak extern _UNKNOWN unk_1325CFB8; // weak extern _UNKNOWN unk_1325CFC8; // weak extern _UNKNOWN unk_1325CFD8; // weak extern _UNKNOWN unk_1325D018; // weak extern _UNKNOWN unk_1325D028; // weak extern int dword_1325D038; // weak extern int dword_1325D040; // weak extern _UNKNOWN unk_1325D0A0; // weak extern _UNKNOWN unk_132668A0; // weak extern _UNKNOWN unk_132668E0; // weak extern _UNKNOWN unk_13266920; // weak extern _UNKNOWN unk_13266960; // weak extern _UNKNOWN unk_132669A0; // weak extern int dword_132669D4; // weak extern _UNKNOWN unk_132669E0; // weak extern void *dword_132669E4; // idb extern int dword_132669E8; // weak extern _UNKNOWN unk_132669F0; // weak extern _UNKNOWN unk_13266A30; // weak extern _UNKNOWN unk_13266A70; // weak extern _UNKNOWN unk_13266AB0; // weak extern _UNKNOWN unk_13267D40; // weak extern int dword_13267D74; // weak extern _UNKNOWN unk_13267D80; // weak extern _UNKNOWN unk_13357DA8; // weak extern _UNKNOWN unk_13359038; // weak extern int dword_1335906C; // weak extern _UNKNOWN unk_13359078; // weak extern int dword_133590AC; // weak extern _UNKNOWN unk_133590B8; // weak extern _UNKNOWN unk_133590F8; // weak extern _UNKNOWN unk_13359138; // weak extern _UNKNOWN unk_13359178; // weak extern void *dword_133591B8[2]; // idb extern _UNKNOWN unk_133591C0; // weak extern _UNKNOWN unk_13359200; // weak extern _UNKNOWN unk_13359240; // weak extern _UNKNOWN unk_13359290; // weak extern _UNKNOWN unk_133592D0; // weak extern _UNKNOWN unk_13359310; // weak extern int dword_13359344; // weak extern _UNKNOWN unk_13359350; // weak extern _UNKNOWN unk_13359390; // weak extern _UNKNOWN unk_133593D0; // weak extern _UNKNOWN unk_133594F0; // weak extern _UNKNOWN unk_133595F0; // weak extern _UNKNOWN unk_13359630; // weak extern int dword_13359664; // weak extern _UNKNOWN unk_13359670; // weak extern _UNKNOWN unk_13359770; // weak extern _UNKNOWN unk_133597B0; // weak extern _UNKNOWN unk_133597C0; // weak extern _UNKNOWN unk_133597D0; // weak extern _UNKNOWN unk_133597E0; // weak extern int dword_13359820; // weak extern int dword_13359824; // weak extern int dword_13359828; // weak extern int dword_1335982C; // weak extern int dword_13359830; // weak extern int dword_13359834; // weak extern int dword_13359838; // weak extern int dword_1335983C; // weak extern int dword_13359840; // weak extern int dword_13359844; // weak extern int dword_13359848; // weak extern int dword_1335984C; // weak extern int dword_13359850; // weak extern int dword_13359854; // weak extern int dword_13359858; // weak extern int dword_1335985C; // weak extern int dword_13359860; // weak extern int dword_13359864; // weak extern int dword_13359868; // weak extern int dword_1335986C; // weak extern int dword_13359870; // weak extern int dword_13359874; // weak extern int dword_13359878; // weak extern int dword_1335987C; // weak extern int dword_13359880; // weak extern int dword_13359884; // weak extern int dword_13359888; // weak extern int dword_1335988C; // weak extern int dword_13359890; // weak extern int dword_13359894; // weak extern int dword_13359898; // weak extern int dword_1335989C; // weak extern int dword_133598A0; // weak extern int dword_133598A4; // weak extern int dword_133598A8; // weak extern int dword_133598AC; // weak extern int dword_133598B0; // weak extern int dword_133598B4; // weak extern int dword_133598B8; // weak extern int dword_133598BC; // weak extern int dword_133598C0; // weak extern int dword_133598C4; // weak extern int dword_133598C8; // weak extern int dword_133598CC; // weak extern char byte_133598D8[]; // weak extern FILE *dword_133599D8; // idb extern char byte_13359B5C; // weak extern char byte_13359B60[]; // weak extern FILE *dword_13359C60; // idb extern char byte_13359DE4; // weak extern int dword_13359DE8; // weak extern int dword_13359DF0; // weak extern __int16 word_13359DF4; // weak extern void *dword_13359E00; // idb extern _UNKNOWN unk_13359E04; // weak extern _UNKNOWN unk_13359E08; // weak extern int dword_13359E0C; // weak extern int dword_13359E2C; // weak extern int dword_13359E34; // weak extern _UNKNOWN unk_13359F08; // weak extern _UNKNOWN unk_1335A9C0; // weak extern _UNKNOWN unk_13882047; // weak extern _UNKNOWN unk_14000000; // weak extern _UNKNOWN unk_14C08C3E; // weak extern int dword_14D129D8; // weak extern int dword_14D129DC; // weak extern __int64 qword_14D129E0; // weak extern int dword_14D129E8; // weak extern int dword_14D129EC; // weak extern int dword_14D129F0; // weak extern char byte_14D129F4; // weak extern int dword_14D12A00; // weak extern _UNKNOWN unk_14D12A04; // weak extern int dword_14D12A08[]; // weak extern int dword_14D12A0C; // weak extern int dword_14D12B04; // weak extern char byte_14D12B08; // weak extern int dword_14D12C0C; // weak extern char byte_14D12C10; // weak extern int dword_14D12D14; // weak extern char byte_14D12D18; // weak extern int dword_14D12E1C; // weak extern char byte_14D12E20; // weak extern int dword_14D12E24; // weak extern int dword_14D12E28; // weak extern _UNKNOWN unk_14D12E2C; // weak extern char byte_14D12E30[]; // weak extern FILE *dword_14D12F30; // idb extern char byte_14D130B4; // weak extern _UNKNOWN unk_14D130B8; // weak extern char byte_14D13118[]; // weak extern FILE *dword_14D13218; // idb extern char byte_14D1339C; // weak extern char byte_14D133A0[]; // weak extern int dword_14D134A0; // weak extern char byte_14D13624; // weak extern char byte_14D13630[]; // weak extern int dword_14D13730; // weak extern char byte_14D138B4; // weak extern _UNKNOWN unk_14D138B8; // weak extern int dword_14D148D0; // weak extern _UNKNOWN unk_14D148D4; // weak extern int dword_14D148D8[]; // weak extern int dword_14D148DC; // weak extern int dword_14D149D4; // weak extern char byte_14D149D8; // weak extern int dword_14D14ADC; // weak extern char byte_14D14AE0; // weak extern int dword_14D14BE4; // weak extern char byte_14D14BE8; // weak extern int dword_14D14CEC; // weak extern char byte_14D14CF0; // weak extern int dword_14D14CF4; // weak extern int dword_14D14CF8; // weak extern char byte_14D14D00[]; // weak extern FILE *dword_14D14E00; // idb extern char byte_14D14F84; // weak extern char byte_14D14F88[]; // weak extern FILE *dword_14D15088; // idb extern char byte_14D1520C; // weak extern char byte_14D15210[]; // weak extern FILE *dword_14D15310; // idb extern char byte_14D15494; // weak extern char byte_14D15498[]; // weak extern FILE *dword_14D15598; // idb extern _UNKNOWN unk_14D155DC; // weak extern char byte_14D1561C[256]; // idb extern char byte_14D1571C; // weak extern char byte_14D15728[]; // weak extern FILE *dword_14D15828; // idb extern char byte_14D159AC; // weak extern _UNKNOWN unk_14D159B0; // weak extern int dword_14D159E4; // weak extern _UNKNOWN unk_14D159F0; // weak extern int dword_14D1600C; // weak extern int dword_14D16010; // weak extern int dword_14D16014; // weak extern _UNKNOWN unk_14D16018; // weak extern int dword_14D16430; // weak extern _UNKNOWN unk_14D16434; // weak extern int dword_14D16438[]; // weak extern int dword_14D1643C; // weak extern int dword_14D16534; // weak extern char byte_14D16538; // weak extern int dword_14D1663C; // weak extern char byte_14D16640; // weak extern int dword_14D16744; // weak extern char byte_14D16748; // weak extern int dword_14D1684C; // weak extern char byte_14D16850; // weak extern int dword_14D16854; // weak extern int dword_14D16858; // weak extern char byte_14D16860[]; // weak extern FILE *dword_14D16960; // idb extern char byte_14D16AE4; // weak extern _BYTE byte_14D16AE8[64]; // idb extern _UNKNOWN unk_14D16B28; // weak extern int dword_14D1702C; // idb extern int dword_14D17030; // idb extern _UNKNOWN unk_14D17034; // weak extern char cp[37624]; // idb extern char byte_14D2035C[20]; // idb extern _UNKNOWN unk_14D20370; // weak extern int dword_14D203FC; // weak extern int dword_14D20400; // weak extern _UNKNOWN unk_14D20404; // weak extern int dword_14D20890; // weak extern int dword_14D20894; // weak extern _UNKNOWN unk_14D20898; // weak extern _UNKNOWN unk_14D20C9C; // weak extern int dword_14D20CD0; // weak extern _UNKNOWN unk_14D20CDC; // weak extern int dword_14D21184; // weak extern __int16 word_14D21188; // weak extern __int16 word_14D2118C; // weak extern __int16 word_14D2118E; // weak extern __int16 word_14D21194; // weak extern __int16 word_14D21196; // weak extern __int16 word_14D21198; // weak extern __int16 word_14D2119A; // weak extern __int16 word_14D211AC; // weak extern __int16 word_14D211AE; // weak extern __int16 word_14D211B0; // weak extern __int16 word_14D211B4; // weak extern __int16 word_14D211B8; // weak extern __int16 word_14D211BA; // weak extern __int16 word_14D211BC; // weak extern __int16 word_14D211BE; // weak extern __int16 word_14D211C0; // weak extern __int16 word_14D211C2; // weak extern __int16 word_14D211C8; // weak extern __int16 word_14D211CA; // weak extern __int16 word_14D211CC; // weak extern __int16 word_14D211CE; // weak extern __int16 word_14D211D0; // weak extern __int16 word_14D211D2; // weak extern __int16 word_14D211D4; // weak extern __int16 word_14D211D6; // weak extern __int16 word_14D211D8; // weak extern char byte_14D211E0[]; // weak extern FILE *dword_14D212E0; // idb extern char byte_14D21464; // weak extern __int16 word_14D21468; // weak extern int dword_14D2146C; // weak extern _UNKNOWN unk_14D21474; // weak extern void *dword_14D21478; // idb extern void *dword_14D21484; // idb extern int dword_14D21488; // weak extern int dword_14D2148C; // weak extern void *dword_14D21494; // idb extern int dword_14D21498; // weak extern int dword_14D2149C; // weak extern int dword_14D214A4[]; // weak extern int dword_14D214A8; // weak extern int dword_14D214AC; // weak extern int dword_14D214B0; // weak extern int dword_14D214B4; // weak extern int dword_14D214B8; // weak extern _UNKNOWN unk_14D214BC; // weak extern void *dword_14D214C0; // idb extern int dword_14D214CC; // weak extern int dword_14D214D0; // weak extern _UNKNOWN unk_14D214D4; // weak extern void *dword_14D214D8; // idb extern _UNKNOWN unk_14D214E4; // weak extern void *dword_14D214E8; // idb extern void *dword_14D214F4; // idb extern int dword_14D214F8; // weak extern int dword_14D214FC; // weak extern int dword_14D21504; // weak extern void *dword_14D21508; // idb extern int dword_14D2150C; // weak extern int dword_14D21510; // weak extern __int16 word_14D21518; // weak extern int dword_14D2151C; // weak extern _UNKNOWN unk_14D21520; // weak extern int dword_14D28280; // weak extern _UNKNOWN unk_14D28284; // weak extern void *dword_14D28288; // idb extern _UNKNOWN unk_14D28294; // weak extern void *dword_14D28298; // idb extern _UNKNOWN unk_14D282A4; // weak extern void *dword_14D282A8; // idb extern int dword_14D282B8; // weak extern int dword_14D282C0; // weak extern __int16 word_14D282C4; // weak extern _UNKNOWN unk_14D282D0; // weak extern int dword_14D40970; // weak extern _UNKNOWN unk_14D40974; // weak extern void *dword_14D40978; // idb extern _UNKNOWN unk_14D40984; // weak extern void *dword_14D40988; // idb extern _UNKNOWN unk_14D40994; // weak extern void *dword_14D40998; // idb extern int dword_14D409A4; // weak extern void *dword_14D409A8; // idb extern int dword_14D409AC; // weak extern int dword_14D409B0; // weak extern void *dword_14D409B8; // idb extern int dword_14D409BC; // weak extern int dword_14D409C0; // weak extern int dword_14D409C8; // weak extern int dword_14D409CC; // weak extern int dword_14D409D0; // weak extern int dword_14D409D4; // weak extern int dword_14D409D8; // weak extern int dword_14D409DC; // weak extern _UNKNOWN unk_14D409E0; // weak extern int dword_14D40AE0; // weak extern int dword_14D40AE8; // weak extern int dword_14D40AEE; // weak extern int dword_14D40AF2; // weak extern int dword_14D40AF6; // weak extern int dword_14D40AFA; // weak extern int dword_14D40AFE; // weak extern int dword_14D40B02; // weak extern int dword_14D40B06; // weak extern int dword_14D40B0A; // weak extern int dword_14D40B0E; // weak extern int dword_14D40B12; // weak extern int dword_14D40EE8; // weak extern int dword_14D40EEC; // weak extern int dword_14D40EF0; // weak extern int dword_14D40EF4; // weak extern int dword_14D40EF8; // weak extern int dword_14D40EFE; // weak extern int dword_14D40F02; // weak extern int dword_14D40F06; // weak extern int dword_14D412F8; // weak extern int dword_14D412FC; // weak extern int dword_14D41300; // weak extern int dword_14D41304; // weak extern int dword_14D41308; // weak extern int dword_14D4130E; // weak extern int dword_14D41312; // weak extern int dword_14D41316; // weak extern int dword_14D4131A; // weak extern int dword_14D4131E; // weak extern int dword_14D41322; // weak extern int dword_14D41326; // weak extern int dword_14D4132A; // weak extern int dword_14D4132E; // weak extern int dword_14D41332; // weak extern int dword_14D41336; // weak extern int dword_14D4133A; // weak extern int dword_14D4133E; // weak extern int dword_14D41342; // weak extern int dword_14D41346; // weak extern int dword_14D41708; // weak extern int dword_14D4170C; // weak extern int dword_14D41710; // weak extern int dword_14D41714; // weak extern int dword_14D41718; // weak extern int dword_14D4171E; // weak extern int dword_14D41722; // weak extern int dword_14D41726; // weak extern int dword_14D4172A; // weak extern int dword_14D4172E; // weak extern int dword_14D41732; // weak extern int dword_14D41736; // weak extern int dword_14D4173A; // weak extern int dword_14D4173E; // weak extern int dword_14D41742; // weak extern int dword_14D41746; // weak extern int dword_14D4174A; // weak extern int dword_14D4174E; // weak extern int dword_14D41752; // weak extern int dword_14D41B18; // weak extern int dword_14D41B1C; // weak extern int dword_14D41B20; // weak extern int dword_14D41B24; // weak extern int dword_14D41B28; // weak extern void *dword_14D41B34; // idb extern int dword_14D41B38; // weak extern int dword_14D41B3C; // weak extern void *dword_14D41B48; // idb extern void *dword_14D41B4C; // idb extern int dword_14D41B58; // weak extern int dword_14D41B5C; // weak extern _UNKNOWN unk_14D41B62; // weak extern int dword_14D41D44; // weak extern int dword_14D41D48; // weak extern __int16 word_14D41D4C; // weak extern int dword_14D41D50; // weak extern __int16 word_14D41D54; // weak extern int dword_14D41D58; // weak extern __int16 word_14D41D5C; // weak extern int dword_14D41D60; // weak extern __int16 word_14D41D64; // weak extern int dword_14D41D68; // weak extern char byte_14D41D6C; // weak extern void *dword_14D41D78; // idb extern int dword_14D41D7C; // weak extern int dword_14D41D80; // weak extern int dword_14D41D88; // weak extern _UNKNOWN unk_14D41D90; // weak extern int dword_14D41E20; // weak extern int dword_14D41E24; // weak extern int dword_14D41E28; // weak extern int dword_14D41E30; // weak extern int dword_14D41E34; // weak extern int dword_14D41E38; // weak extern int dword_14D41E40; // weak extern int dword_14D41E44; // weak extern int dword_14D41E48; // weak extern _UNKNOWN unk_14D41E50; // weak extern _UNKNOWN unk_14D41F98; // weak extern void *dword_14D41F9C; // idb extern int dword_14D41FA0; // weak extern int dword_14D41FA4; // weak extern void *dword_14D41FAC; // idb extern int dword_14D41FB0; // weak extern int dword_14D41FB4; // weak extern int dword_14D41FBC; // weak extern _UNKNOWN unk_14D41FC0; // weak extern void *dword_14D41FC4; // idb extern _UNKNOWN unk_14D41FD0; // weak extern int dword_14D41FF0; // weak extern void *dword_14D41FFC; // idb extern int dword_14D42000; // weak extern int dword_14D42004; // weak extern int dword_14D4200C; // weak extern int dword_14D42014; // weak extern void *dword_14D42018; // idb extern int dword_14D4201C; // weak extern int dword_14D42020; // weak extern int dword_14D42028; // weak extern void *dword_14D42034; // idb extern int dword_14D42038; // weak extern int dword_14D4203C; // weak extern int dword_14D42044; // weak extern int dword_14D4204C; // weak extern void *dword_14D42050; // idb extern int dword_14D42054; // weak extern int dword_14D42058; // weak extern int dword_14D42060; // weak extern void *dword_14D4206C; // idb extern int dword_14D42070; // weak extern int dword_14D42074; // weak extern int dword_14D4207C; // weak extern int dword_14D42084; // weak extern int dword_14D42098; // weak extern int dword_14D4209C; // weak extern int dword_14D420A0; // weak extern int dword_14D420A8; // weak extern int dword_14D420AC; // weak extern void *dword_14D420B8; // idb extern int dword_14D420BC; // weak extern int dword_14D420C0; // weak extern int dword_14D420C8; // weak extern int dword_14D420CC; // weak extern _UNKNOWN unk_14D420D0; // weak extern _UNKNOWN unk_14D420D1; // weak extern _UNKNOWN unk_14D420D8; // weak extern _UNKNOWN unk_14D420DC; // weak extern _UNKNOWN unk_14D42D50; // weak extern int dword_14D42D54; // weak extern int dword_14D42D58; // weak extern _UNKNOWN unk_14D42D5C; // weak extern void *dword_14D42D60; // idb extern int dword_14D42D64; // weak extern _UNKNOWN unk_14D42D6C; // weak extern int dword_14D42D70[]; // weak extern int dword_14D42DB0; // weak extern int dword_14D42DB4; // weak extern int dword_14D42DB8; // weak extern int dword_14D42DBC; // weak extern _UNKNOWN unk_14D42DC0; // weak extern _UNKNOWN unk_14D4ADC0; // weak extern __int16 word_14D52DD0[]; // weak extern int dword_14D5ADD0; // weak extern int dword_14D5ADD4; // weak extern _BYTE word_14D5ADD8[32768]; // idb extern int dword_14D62DD8; // weak extern int dword_14D62DDC; // weak extern char byte_14D62DE0[]; // weak extern int dword_14D6ADE0; // weak extern int dword_14D6ADE4; // weak extern __int16 word_14D6ADE8[]; // weak extern int dword_14D72DE8; // weak extern int dword_14D72DEC; // weak extern _BYTE word_14D92E10[32768]; // idb extern int dword_14D9AE10; // weak extern int dword_14D9AE14; // weak extern __int16 word_14E12E90[]; // weak extern int dword_14E1AE90; // weak extern int dword_14E1AE94; // weak extern __int16 word_14E42EC0[]; // weak extern int dword_14E4AEC0; // weak extern int dword_14E4AEC4; // weak extern __int16 word_14F42FC0[]; // weak extern int dword_14F4AFC0; // weak extern int dword_14F4AFC4; // weak extern __int16 word_14F83000[]; // weak extern int dword_14F8B000; // weak extern int dword_14F8B004; // weak extern __int16 word_150530D0[]; // weak extern int dword_1505B0D0; // weak extern int dword_1505B0D4; // weak extern __int16 word_150630E0[]; // weak extern int dword_1506B0E0; // weak extern int dword_1506B0E4; // weak extern _UNKNOWN unk_1506B0E8; // weak extern _UNKNOWN unk_1508B108; // weak extern int dword_1508B158; // weak extern int dword_1508B160; // weak extern _DWORD dword_1508B168[78]; // idb extern _UNKNOWN unk_1508B2A0; // weak extern __int16 word_1508B2A4; // weak extern _UNKNOWN unk_1508B2A8; // weak extern __int16 word_1508B2B0; // weak extern int dword_1508B2B8; // weak extern int dword_1508B2C0[]; // weak extern int dword_1508B2C4; // weak extern int dword_1508B2C8; // weak extern int dword_1508B2CC; // weak extern int dword_1508B2D0; // weak extern int dword_1508B2D4; // weak extern int dword_1508B2D8; // weak extern int dword_1508B2DC; // weak extern int dword_1508B2E0; // weak extern int dword_1508B2E4; // weak extern int dword_1508B2E8; // weak extern int dword_1508B2EC; // weak extern int dword_1508B2F0; // weak extern int dword_1508B2F4; // weak extern int dword_1508B2F8; // weak extern int dword_1508B2FC; // weak extern int dword_1508B300; // weak extern int dword_1508B308; // weak extern _UNKNOWN unk_1508B348; // weak extern char byte_1508B380[]; // weak extern _UNKNOWN unk_1508B384; // weak extern _UNKNOWN unk_1508B388; // weak extern _UNKNOWN unk_1508B38C; // weak extern _UNKNOWN unk_1508B38D; // weak extern _UNKNOWN unk_1508B38E; // weak extern _UNKNOWN unk_1508B38F; // weak extern _UNKNOWN unk_1508B390; // weak extern int dword_1508B438; // weak extern int dword_1508B43C; // weak extern int dword_1508B440; // weak extern int dword_1508B444; // weak extern int dword_1508B448; // weak extern char byte_1508B44C; // weak extern char byte_1508B44D; // weak extern char byte_1508B450[20]; // idb extern char dword_1508B464[]; // idb extern int dword_1508B468; // weak extern int dword_1508B46C; // weak extern int dword_1508B470; // weak extern int dword_1508B474; // weak extern char dword_1508B478[]; // idb extern int dword_1508B47C; // weak extern int dword_1508B480; // weak extern int dword_1508B484; // weak extern int dword_1508B488; // weak extern char dword_1508B48C[]; // idb extern int dword_1508B490; // weak extern int dword_1508B494; // weak extern int dword_1508B498; // weak extern int dword_1508B49C; // weak extern char dword_1508B4A0[]; // idb extern int dword_1508B4A4; // weak extern int dword_1508B4A8; // weak extern int dword_1508B4AC; // weak extern int dword_1508B4B0; // weak extern char dword_1508B4B4[]; // idb extern int dword_1508B4B8; // weak extern int dword_1508B4BC; // weak extern int dword_1508B4C0; // weak extern int dword_1508B4C4; // weak extern char dword_1508B4C8[]; // idb extern int dword_1508B4CC; // weak extern int dword_1508B4D0; // weak extern int dword_1508B4D4; // weak extern int dword_1508B4D8; // weak extern char dword_1508B4DC[]; // idb extern int dword_1508B4E0; // weak extern int dword_1508B4E4; // weak extern int dword_1508B4E8; // weak extern int dword_1508B4EC; // weak extern char dword_1508B4F0[]; // idb extern int dword_1508B4F4; // weak extern int dword_1508B4F8; // weak extern int dword_1508B4FC; // weak extern int dword_1508B500; // weak extern char byte_1508B504[20]; // idb extern char dword_1508B518[]; // idb extern int dword_1508B51C; // weak extern int dword_1508B520; // weak extern int dword_1508B524; // weak extern int dword_1508B528; // weak extern char dword_1508B52C[]; // idb extern int dword_1508B530; // weak extern int dword_1508B534; // weak extern int dword_1508B538; // weak extern int dword_1508B53C; // weak extern char dword_1508B540[]; // idb extern int dword_1508B544; // weak extern int dword_1508B548; // weak extern int dword_1508B54C; // weak extern int dword_1508B550; // weak extern char dword_1508B554[]; // idb extern int dword_1508B558; // weak extern int dword_1508B55C; // weak extern int dword_1508B560; // weak extern int dword_1508B564; // weak extern char byte_1508B568[20]; // idb extern char dword_1508B57C[]; // idb extern int dword_1508B580; // weak extern int dword_1508B584; // weak extern int dword_1508B588; // weak extern int dword_1508B58C; // weak extern char byte_1508B590[24]; // idb extern int dword_1508B5A8; // weak extern int dword_1508B980; // weak extern int dword_1508B988; // weak extern _UNKNOWN unk_1508B9C8; // weak extern int dword_1508BA10; // weak extern int dword_1508BA44; // weak extern int dword_1508BA50; // weak extern int dword_1508BA54; // weak extern int dword_1508BA58; // weak extern int dword_1508BA5C; // weak extern int dword_1508BA60; // weak extern int dword_1508BA64; // weak extern int dword_1508BA68; // weak extern int dword_1508BA6C; // weak extern int dword_1508BA70; // weak extern int dword_1508BA74; // weak extern int dword_1508BA78; // weak extern int dword_1508BAAC; // weak extern int dword_1508BAB8; // weak extern int dword_1508BABC; // weak extern int dword_1508BAC0; // weak extern int dword_1508BAC4; // weak extern int dword_1508BAC8; // weak extern int dword_1508BACC; // weak extern char byte_1508BAD0; // weak extern _UNKNOWN unk_1508BAD4; // weak extern _UNKNOWN unk_15090128; // weak extern _UNKNOWN unk_150A0980; // weak extern _UNKNOWN unk_150B11D8; // weak extern _UNKNOWN unk_150B15DC; // weak extern int (*dword_154D2AE0)(void); // weak extern __int16 word_154D2AE4; // weak extern char Buffer[1024]; // idb extern char byte_154D2EE8[128]; // idb extern char byte_154D2F68[136]; // idb extern char byte_154D2FF0[2048]; // idb extern struct _IMAGEHLP_SYMBOL64 Symbol; // idb extern char Filename[]; // idb extern struct _IMAGEHLP_LINE64 Line64; // idb extern _UNKNOWN unk_154D4408; // weak extern int dword_154D44C4; // weak extern struct _tagSTACKFRAME64 StackFrame; // idb extern int dword_154D47E8; // weak extern volatile LONG dword_154D47F8; // idb extern volatile LONG dword_154D47FC; // idb extern volatile LONG dword_154D4800; // idb extern int dword_154D4808[]; // weak extern int dword_154D5008[]; // weak extern _UNKNOWN unk_154D500C; // weak extern int dword_154DC888[]; // weak extern volatile LONG Destination; // idb extern struct _RTL_CRITICAL_SECTION stru_154DC910; // idb extern _UNKNOWN unk_154DC970; // weak extern void *dword_154DC974; // idb extern int dword_154DC978; // weak extern int dword_154DC980; // weak extern int dword_154DC984; // weak extern int dword_154DC994; // weak extern _UNKNOWN unk_154DCB18; // weak extern _UNKNOWN unk_154DCB19; // weak extern int dword_154DCB20; // weak extern PVOID dword_154DCBD0; // idb extern _UNKNOWN unk_154DCBD4; // weak extern void *dword_154DCBD8; // idb extern PVOID dword_154DCFD0; // idb extern PVOID dword_154DD788; // idb extern PVOID dword_154DD8F0; // idb extern PVOID dword_154DD8F4; // idb extern PVOID dword_154DD8F8; // idb extern PVOID dword_154DD8FC; // idb extern PVOID dword_154DD900; // idb extern int dword_154DD904; // weak extern int dword_154DD908; // weak extern int dword_154DD910; // weak extern UINT uNumber; // idb extern int dword_154DD920[]; // weak extern int dword_154DDA20; // weak //------------------------------------------------------------------------- // Function declarations #define __thiscall __cdecl // Test compile in C mode bool __thiscall sub_401000(int this, int a2); bool __thiscall sub_401030(void *this, int a2, int a3, int a4); bool __thiscall sub_401060(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_401090(int this, int a2, int a3); char __thiscall sub_4010C0(int this); int __thiscall sub_4010E0(int this); int __thiscall sub_4010F0(int this); int __thiscall sub_401100(int this); int __thiscall sub_401110(int this); int __thiscall sub_401130(int this); int __thiscall sub_401140(int this); char *__thiscall sub_401150(void *this); char __thiscall sub_401160(int this); int __thiscall sub_401170(int this); int __thiscall sub_401180(void *this, __int16 a2, __int16 a3); unsigned int __thiscall sub_4011A0(void *this); int __thiscall sub_4011C0(void *this, signed int a2, signed int a3); char __thiscall sub_401220(void *this, signed int a2, signed int a3); int __thiscall sub_401280(int this); int __thiscall sub_401290(int this); int __thiscall sub_4012A0(int this, int a2, int a3); int __thiscall sub_4012C0(int this); int __thiscall sub_4012D0(int this, unsigned __int16 a2); int __thiscall sub_401310(void *this, int a2); void __thiscall sub_401350(int this); int loc_401370(); // weak signed int __cdecl sub_401380(); signed int __cdecl sub_401390(); int loc_4013A0(); // weak void __thiscall sub_4013B0(int this); int __cdecl sub_401410(); int __cdecl sub_401420(); int __cdecl sub_401430(); int __cdecl sub_401440(); int __cdecl sub_401450(); int __cdecl sub_401460(); int __cdecl sub_401470(); int __cdecl sub_401480(); int __cdecl sub_401490(); int __cdecl sub_4014A0(); int __cdecl sub_4014B0(); int __cdecl sub_4014C0(); int __cdecl sub_4014D0(); int __cdecl sub_4014E0(); int __cdecl sub_4014F0(); int __cdecl sub_401500(); int __cdecl sub_401510(); int __cdecl sub_401520(); int __cdecl sub_401530(); int __cdecl sub_401540(); int __cdecl sub_401550(); int __cdecl sub_401560(); int __cdecl sub_401570(); int __cdecl sub_401580(); int __cdecl sub_401590(); int __cdecl sub_4015A0(); int __cdecl sub_4015B0(); int __cdecl sub_4015C0(); int __cdecl sub_4015D0(); int __cdecl sub_4015E0(); int __cdecl sub_4015F0(); int __cdecl sub_401600(); int __cdecl sub_401610(); int __cdecl sub_401620(); int __cdecl sub_401630(); int __cdecl sub_401640(); int __cdecl sub_401650(); int __cdecl sub_401660(); int __cdecl sub_401670(); int __cdecl sub_401680(); int __cdecl sub_401690(); int __cdecl sub_4016A0(); int __cdecl sub_4016B0(); int __cdecl sub_4016C0(); int __cdecl sub_4016D0(); int __cdecl sub_4016E0(); int __cdecl sub_4016F0(); int __cdecl sub_401700(); int __cdecl sub_401710(); int __cdecl sub_401720(); int __thiscall sub_401750(void *this, unsigned int a2); bool __thiscall sub_401780(int this, int a2); bool __thiscall sub_4017C0(int this, int a2); bool __thiscall sub_401820(void *this, int a2); char __stdcall sub_401890(void *a1); int __thiscall sub_401900(void *this, signed int a2); int __thiscall sub_401940(void *this, signed int a2); int __thiscall sub_401980(int this, int a2, int a3, int a4); int __thiscall sub_4019A0(int this, int a2, int a3, int a4); int loc_401A00(); // weak void __thiscall sub_401A10(int this); int __thiscall sub_401A70(void *this); int __thiscall sub_401A80(int this); int __thiscall sub_401AB0(_DWORD); // weak char __stdcall sub_401AC0(int a1, int a2, int a3, int a4); signed int __stdcall sub_401C10(int a1); signed int __stdcall sub_401C20(int a1); char __stdcall sub_401C40(int a1); void __thiscall sub_401C50(int this, int a2, int a3); void __thiscall sub_401CC0(int this, int a2, int a3); void __thiscall sub_401F10(int this, int a2, int a3); int __thiscall sub_401F80(int this); void *__thiscall sub_401F90(void *this, int a2); int loc_401FC0(); // weak bool __thiscall sub_401FD0(int this, int a2); void *__thiscall sub_402010(void *this, int a2, int a3); bool __thiscall sub_402050(int this, int a2); unsigned int __stdcall sub_4020C0(int a1, unsigned int a2); int __stdcall sub_402130(int a1); int __stdcall sub_402190(int a1); int __stdcall sub_4021F0(int a1); int __stdcall sub_402260(int a1, int a2); char __stdcall sub_4022A0(int a1, int a2); char __stdcall sub_402320(int a1, int a2); int __stdcall sub_4023A0(int a1, int a2); char __stdcall sub_4023C0(int a1, int a2); char __thiscall sub_402440(void *this, const void *a2); char __thiscall sub_402480(void *this, void *a2); char __thiscall sub_4024D0(void *this, void *a2); char __stdcall sub_402520(int a1, int a2); char __thiscall sub_402530(int this); void *__thiscall sub_402560(void *this, char a2); void *__thiscall sub_4025A0(void *this, char a2); char __thiscall sub_4025E0(int this, int a2, int a3); int __thiscall sub_402620(int this, int a2); void *__thiscall sub_4026A0(void *this, int a2, int a3, int a4); int __thiscall sub_4026F0(int *this); int __thiscall sub_402710(int this, int a2); void __thiscall sub_402780(int this); char __thiscall sub_405050(void *this, int a2, int a3); char __thiscall sub_405190(void *this, int a2); int __thiscall sub_4052D0(void *this, int a2); int __thiscall sub_4053A0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_405500(void *this, int a2, int a3); int __thiscall sub_4055D0(void *this, int a2, int a3, int a4); int __thiscall sub_405730(void *this, int a2); int __thiscall sub_405830(void *this, int a2, int a3, char a4); int __thiscall sub_405940(int this); void *__thiscall sub_406480(void *this); int __thiscall sub_4064F0(void *this, int a2, int a3, int a4); int __thiscall sub_406560(void *this); char __thiscall sub_4065A0(void *this, int a2, int a3); int __thiscall sub_4066E0(int this); int __thiscall sub_406710(int this, int a2, int a3); char __thiscall sub_406770(void *this, int a2); char __stdcall sub_406840(void *a1, int a2, int a3, int a4); char __stdcall sub_406970(void *a1, int a2, int a3, int a4); char __stdcall sub_406AA0(void *a1, int a2, int a3, int a4); char __stdcall sub_406BB0(void *a1, int a2, int a3, int a4); char __stdcall sub_406C80(int a1, int a2, int a3); char __stdcall sub_406D60(int a1, int a2, int a3); char __stdcall sub_406DC0(int a1, int a2, int a3); char __stdcall sub_406F60(int a1, int a2, int a3); char __stdcall sub_407050(int a1, int a2, int a3); int __stdcall sub_4071E0(int a1); int __stdcall sub_4072A0(int a1, int a2, int a3); int __stdcall sub_407330(int a1, int a2, int a3); int __stdcall sub_407420(int a1, int a2); int __stdcall sub_4074A0(int a1, int a2); int __stdcall sub_407580(int a1, int a2, int a3); int __stdcall sub_407660(int a1, int a2); int __stdcall sub_407840(int a1, int a2); int __thiscall sub_407920(void *this, int a2); int __stdcall sub_4082D0(int a1, int a2, int a3); int __thiscall sub_408410(int this, int a2, int a3); int __thiscall sub_4084E0(int this, int a2, int a3); int __thiscall sub_4085B0(void *this, int a2); int __thiscall sub_4086E0(void *this, int a2); char __thiscall sub_4087B0(void *this, int a2, int a3); unsigned int __thiscall sub_4088C0(void *this); int __thiscall sub_408990(void *this, int a2); char __stdcall sub_408B10(int a1, int a2); char __stdcall sub_408C60(int a1, int a2); // char __userpurge sub_408CB0(int a1, int a2, int a3, int a4, int a5); int __stdcall sub_408E20(int a1); int __stdcall sub_408EC0(int a1, int a2); int __stdcall sub_409160(int a1, int a2); void __stdcall sub_409400(int a1, int a2, int a3, int a4); void __stdcall sub_409520(int a1, int a2, int a3, int a4); char __thiscall sub_409640(void *this, int a2); char __thiscall sub_409670(void *this, int a2); char __thiscall sub_4096A0(void *this, const void *a2); int __cdecl sub_4096E0(int a1); int __cdecl sub_409730(int a1); char __thiscall sub_409780(int this, unsigned __int16 a2); int __thiscall sub_409910(int this, void *a2); int __thiscall sub_4099A0(int this); int __thiscall sub_409A00(void *this, int a2); char __thiscall sub_409B00(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_409BC0(void *this, int a2, int a3, int a4, char a5, int a6); int __thiscall sub_40A090(void *this, int a2, signed int a3); // char __userpurge sub_40A230(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8, int a9, int a10, int a11, int a12, int a13); char __thiscall sub_40A820(void *this, int a2, int a3); char __thiscall sub_40AAA0(void *this); char __thiscall sub_40AC30(void *this); int __thiscall sub_40ADC0(void *this, void *a2); int __thiscall sub_40AEC0(void *this, int a2, int a3); // int __userpurge sub_40B250(double a1, int a2, int a3, int a4); char __stdcall sub_40B560(int a1, int a2, int a3, int a4, int a5, char a6); char __stdcall sub_40B790(int a1, int a2, int a3); // int __userpurge sub_40B920(double a1, int a2, int a3, int a4); void __stdcall sub_40BAC0(int a1, int a2); void __thiscall sub_40BB50(void *this, int a2, int a3); int __thiscall sub_40BC10(void *this, int a2, int a3); char __thiscall sub_40BE40(void *this, int a2, int a3); bool __thiscall sub_40C070(void *this, int a2, int a3); int __thiscall sub_40C0B0(void *this, int a2, int a3); int __thiscall sub_40C410(void *this, int a2, int a3); // char __userpurge sub_40C530(int a1, double a2, int a3, int a4); void __stdcall sub_40C910(int a1, void *a2); unsigned int __thiscall sub_40CAD0(void *this, unsigned int a2, int a3); void *__thiscall sub_40CDD0(void *this); // char __userpurge sub_40CE80(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13); void __stdcall sub_40D250(int a1, int a2); void __thiscall sub_40D2C0(void *this, int a2, int a3); // char __userpurge sub_40D320(double a1, int a2, int a3, int a4); // char __userpurge sub_40D4A0(int a1, double a2, int a3, int a4, int a5); char __thiscall sub_40DA00(void *this, int a2, int a3); // char __userpurge sub_40DAC0(int a1, double a2, int a3, int a4, int a5); char __thiscall sub_40DEF0(int this, unsigned __int16 a2); // int __userpurge sub_40E070(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8); // int __userpurge sub_40E1A0(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8); // int __userpurge sub_40E2D0(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8); // char __userpurge sub_40E400(int a1, double a2, void *a3, int a4, int a5, int a6); // char __userpurge sub_40E730(int a1, double a2, int a3, int a4, int a5, int a6); // char __userpurge sub_40EAE0(int a1, double a2, void *a3, int a4, int a5, int a6); int __thiscall sub_40ED50(int this); int __thiscall sub_415C60(void *this, int a2); char __thiscall sub_415C90(void *this, int a2); char __stdcall sub_415CC0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10); // char __userpurge sub_415CD0(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11, int a12); // char __userpurge sub_415DE0(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11, int a12); char __thiscall sub_415EE0(void *this, int a2, int a3, int a4, char a5); char __thiscall sub_415FD0(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8); char __stdcall sub_4160C0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); // char __userpurge sub_4160D0(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11); bool __thiscall sub_416170(int this, int a2); bool __thiscall sub_416240(void *this, int a2); bool __thiscall sub_4162A0(int this, int a2); char __thiscall sub_416390(void *this, int a2, int a3); void *__thiscall sub_416450(void *this, const char *a2); int loc_416500(); // weak void *__thiscall sub_416510(void *this, const char *a2); int loc_4165C0(); // weak void *__thiscall sub_4165D0(void *this, const char *a2); void *__thiscall sub_416670(void *this, char a2); void *__thiscall sub_4166A0(void *this, char a2); void *__thiscall sub_4166D0(void *this, char a2); void *__thiscall sub_416700(void *this); int __thiscall sub_416780(int this); int __thiscall sub_4167C0(int this, int a2, int a3); int __thiscall sub_4168E0(int this); void __thiscall sub_416990(int this); FILE *__thiscall sub_416A30(void *this); void __thiscall sub_416EE0(void *this, int a2, int a3); int __thiscall sub_416FF0(void *this); void *__thiscall sub_417000(void *this, char a2); void *__thiscall sub_417030(void *this); int __thiscall sub_417060(void *this); int __thiscall sub_417070(int this, int a2, int a3, int a4); void *__thiscall sub_4170B0(void *this, int a2); int __thiscall sub_4170D0(int this, int a2); int __thiscall sub_417130(void *this, int a2, int a3, int a4); int __thiscall sub_417270(void *this, void *a2); void *__thiscall sub_4173D0(void *this, char a2); int __thiscall sub_417400(void *this); void __thiscall sub_4174B0(void *this); int __thiscall sub_4174C0(void *this, int a2, void *a3); int __thiscall sub_417680(void *this); void __thiscall sub_417740(int this, int a2, char a3); int __thiscall sub_417940(void *this, int a2); int __stdcall sub_417A40(unsigned int a1); int __thiscall sub_417AA0(void *this, void *a2); char __thiscall sub_417B80(void *this, void *a2, int a3); char __thiscall sub_417C30(void *this, int a2); int __thiscall sub_417D70(void *this, int a2); int __thiscall sub_417E30(void *this); void *__cdecl sub_417EE0(const void *a1, const void *a2, void *a3); int __thiscall sub_417F20(int this); int __thiscall sub_417F60(int this, int a2); // void __usercall sub_418024(int a1); int __cdecl sub_418080(int a1, int a2); int __cdecl sub_4180D0(int a1, int a2); int __cdecl sub_418130(int a1, int a2, int a3); int __thiscall sub_4181E0(int this, unsigned int a2); // void __usercall sub_4182DA(int a1); int __thiscall sub_4182F0(int this, int a2); int __thiscall sub_418370(int this, unsigned int a2); int __thiscall sub_418440(void *this, int a2); int __thiscall sub_4185E0(void *this, int a2, int a3, int a4); int __stdcall sub_418710(void *a1, int a2, int a3); int __thiscall sub_418810(int this, int a2, int a3, int a4); int __cdecl sub_4189B0(int a1, int a2, unsigned int a3); char *__thiscall sub_418A30(char *this, const char *a2); char *__thiscall sub_418A60(char *this, const char *a2); char *__thiscall sub_418A80(char *this, const char *a2); char *__thiscall sub_418AC0(char *this, const char *a2); int __thiscall sub_418AF0(int this); int __thiscall sub_418B00(int this, int a2); int __thiscall sub_418B40(int this, int a2); int loc_418B90(); // weak void *__thiscall sub_418BA0(void *this, __int16 a2); int __thiscall sub_418C10(int this, unsigned __int8 *a2); char *__thiscall sub_418C70(void *this); signed int __thiscall sub_418C80(int this, unsigned __int8 *a2); int __thiscall sub_418CB0(int this, unsigned __int16 a2); signed int __thiscall sub_418D10(int this, unsigned __int8 *a2); int __thiscall sub_418D40(int this, unsigned __int16 a2); __int32 __thiscall sub_418D90(__time32_t this); int __thiscall sub_418E40(__time32_t this); __time32_t __thiscall sub_418EA0(__time32_t this, int a2); void __thiscall sub_418F20(__time32_t this, int a2); char *__thiscall sub_418F80(void *this); int __thiscall sub_418F90(int this, int a2, int a3, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD)); signed int __thiscall sub_418FB0(int this, int a2, const void *a3); void __thiscall sub_418FD0(int this, const char *a2); int __thiscall sub_419000(int this); int __thiscall sub_419010(int this, int a2, int a3); char *__thiscall sub_419020(void *this); char *__thiscall sub_419030(void *this); bool __thiscall sub_419040(void *this, unsigned __int16 a2); int __thiscall sub_419080(int this, unsigned __int16 a2); int __thiscall sub_4190B0(int this); char *__thiscall sub_4190C0(void *this); int __thiscall sub_4190D0(int this, unsigned __int16 a2); signed int __thiscall sub_419100(int this, unsigned __int8 *a2); int __thiscall sub_419140(int this); int __stdcall sub_419160(int a1, int a2, int a3, int a4); int __stdcall sub_419170(int a1, void *a2, int a3, const char *a4); int __stdcall sub_4191B0(int a1, void *a2, int a3, const char *a4); // int __userpurge sub_4191F0(int a1, int a2, int a3, int a4, const char *a5); int __stdcall sub_419360(int a1, int a2, int a3, int a4); void __stdcall sub_4193A0(int a1, int a2, int a3, int a4); int __stdcall sub_4193D0(int a1, int a2, int a3, int a4); int __stdcall sub_419400(int a1, int a2, int a3, int a4); int __stdcall nullsub_1(int, int, int, int); // weak int __stdcall sub_419460(int a1, int a2, int a3, int a4); int __stdcall sub_419490(int a1, int a2, int a3, const char *a4); int __stdcall sub_419510(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_419560(int a1, int a2, int a3, const char *a4); int __stdcall sub_419590(int a1, int a2, int a3, int a4); int __stdcall sub_4195B0(int, int, int, char *); // idb int __stdcall sub_4195F0(int a1, int a2, int a3, const char *a4); int __thiscall sub_419630(int this); int __cdecl sub_419640(int a1); int __thiscall sub_419660(int this, int a2); int loc_4196C0(); // weak void *__thiscall sub_4196E0(void *this, char a2); int loc_419720(); // weak int __thiscall sub_419730(int this); int __thiscall sub_4197A0(void *this); char __thiscall sub_419830(void *this, int a2, int a3); int __thiscall sub_419980(int this, const char *a2, int a3); int __thiscall sub_419A80(void *this); char __thiscall sub_419B10(void *this, int a2, int a3); int __cdecl sub_419C00(); char __thiscall sub_419D10(void *this, int a2, int a3); int __stdcall sub_419E00(int a1, int a2); int __stdcall sub_419EB0(int a1); int __stdcall sub_419F00(int a1); int __stdcall sub_419F30(const char *a1); int __thiscall sub_419FB0(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7); int __stdcall sub_41A040(int a1, int a2, int a3, int a4); int __stdcall sub_41A170(int a1, int a2, int a3, int a4); int __stdcall sub_41A240(int a1, int a2, int a3, const char *a4); int __stdcall sub_41A2F0(int a1, int a2, int a3, int a4); int __stdcall sub_41A3D0(int a1, int a2, int a3, int a4); int __thiscall sub_41A480(void *this, int a2, int a3, signed int a4, char *a5); int __stdcall sub_41A6F0(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_41A880(int a1, int a2, int a3, const char *a4); int __stdcall sub_41A9B0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41AAB0(int a1, int a2, int a3, int a4); int __stdcall sub_41AB00(int a1, int a2, int a3, int a4); int __stdcall sub_41AB50(int a1, void *a2, int a3, const char *a4); int __stdcall sub_41ACD0(int a1, int a2, int a3, int a4); bool __thiscall sub_41ADD0(void *this, int a2, int a3, int a4); int __stdcall sub_41AE90(int a1, int a2, int a3, int a4); int __stdcall sub_41AFC0(int, int, int, char *); // idb int __stdcall sub_41B1E0(int a1, int a2, signed int a3, int a4); int __thiscall sub_41B460(void *this, int a2, int a3, int a4, unsigned __int8 *a5); int __stdcall sub_41B570(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_41B8A0(int a1, int a2, int a3, int a4); int __stdcall sub_41BB60(int a1, int a2, int a3, int a4); int __stdcall sub_41BC20(int a1, int a2, int a3, const char *a4); int __stdcall sub_41BE10(int a1, int a2, int a3, int a4); int __stdcall sub_41BE60(int, int, int, int); // weak int __stdcall sub_41BEB0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41BF60(int a1, int a2, int a3, const char *a4); int __stdcall sub_41C090(int a1, int a2, int a3, int a4); int __stdcall sub_41C0E0(int a1, void *a2, int a3, unsigned __int8 *a4); int __stdcall sub_41C2F0(int a1, int a2, int a3, int a4); int __stdcall sub_41C3B0(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_41C5A0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41C6A0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41C7A0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41C890(int a1, int a2, int a3, int a4); int __stdcall sub_41C980(int a1, int a2, int a3, int a4); int __stdcall sub_41CA30(int a1, int a2, int a3, int a4); int __stdcall sub_41CB90(int a1, int a2, int a3, const char *a4); int __stdcall sub_41CC60(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_41CD20(int a1, int a2, int a3, const char *a4); int __stdcall sub_41CE10(int a1, int a2, int a3, const char *a4); int __stdcall sub_41CF20(int a1, void *a2, int a3, int a4); int __stdcall sub_41CFD0(int a1, void *a2, int a3, const char *a4); int __stdcall sub_41D0A0(int a1, void *a2, int a3, int a4); int __stdcall sub_41D140(int a1, int a2, int a3, int a4); int __stdcall sub_41D220(int a1, void *a2, int a3, int a4); int __stdcall sub_41D300(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_41D440(int a1, int a2, int a3, const char *a4); int __stdcall sub_41D530(int a1, int a2, int a3, const char *a4); int __stdcall sub_41D630(int a1, int a2, int a3, int a4); int __stdcall sub_41D710(int a1, int a2, int a3, int a4); int __stdcall sub_41D8B0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41D960(int a1, int a2, int a3, const char *a4); int __stdcall sub_41DA50(int a1, int a2, int a3, int a4); int __stdcall sub_41DAD0(int a1, int a2, int a3, int a4); int __stdcall sub_41DBB0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41DC60(int a1, int a2, int a3, int a4); int __stdcall sub_41DCB0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41DD70(int a1, int a2, int a3, const char *a4); int __stdcall sub_41DE70(int a1, int a2, int a3, int a4); int __stdcall sub_41DFB0(int a1, int a2, int a3, int a4); int __stdcall sub_41E0F0(int a1, int a2, int a3, int a4); int __stdcall sub_41E1F0(int a1, int a2, int a3, int a4); int __stdcall sub_41E2C0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41E3B0(int a1, int a2, int a3, int a4); int __stdcall sub_41E4B0(int a1, void *a2, int a3, const char *a4); int __stdcall sub_41E560(int a1, int a2, int a3, int a4); int __stdcall sub_41E6B0(int, int, int, char *); // idb int __stdcall sub_41E810(int a1, int a2, int a3, const char *a4); int __stdcall sub_41E950(int a1, int a2, int a3, int a4); int __stdcall sub_41EA50(int a1, int a2, int a3, int a4); int __stdcall sub_41EB20(int a1, int a2, int a3, int a4); int __stdcall sub_41EBF0(int a1, int a2, int a3, int a4); int __stdcall sub_41ED30(int a1, int a2, int a3, const char *a4); int __stdcall sub_41EE40(int a1, int a2, int a3, const char *a4); int __stdcall sub_41EF50(int a1, int a2, int a3, const char *a4); FILE *__stdcall sub_41F080(int a1, int a2, int a3, const char *a4); int __stdcall sub_41F180(int a1, int a2, int a3, int a4); int __stdcall sub_41F300(int a1, void *a2, int a3, int a4); int __stdcall sub_41F3A0(int a1, int a2, int a3, int a4); int __stdcall sub_41F450(int a1, int a2, int a3, const char *a4); int __stdcall sub_41F530(int, int, int, char *); // idb int __stdcall sub_41F6F0(int a1, int a2, int a3, const char *a4); int __stdcall sub_41F800(int a1, int a2, int a3, const char *a4); int __stdcall sub_41F8E0(int a1, void *a2, int a3, const char *a4); int __stdcall sub_41F990(int a1, void *a2, int a3, int a4); int __stdcall sub_41FA30(int a1, int a2, int a3, const char *a4); int __stdcall sub_41FB00(int, int, int, char *); // idb int __stdcall sub_41FBD0(int a1, int a2, int a3, int a4); int __stdcall sub_41FC80(int a1, int a2, int a3, int a4); int __stdcall sub_41FDA0(int a1, int a2, int a3, int a4); int __stdcall sub_41FF00(int a1, void *a2, int a3, int a4); int __stdcall sub_420020(int, FILE *, int, char *); // idb int __stdcall sub_420260(int a1, int a2, int a3, int a4); int __stdcall sub_420310(int a1, int a2, int a3, int a4); int __stdcall sub_420410(int a1, int a2, int a3, int a4); int __stdcall sub_4205A0(int a1, int a2, int a3, int a4); int __stdcall sub_420760(int a1, int a2, int a3, int a4); int __stdcall sub_4208E0(int a1, int a2, int a3, int a4); int __stdcall sub_420AA0(int a1, int a2, int a3, int a4); int __stdcall sub_420BF0(int a1, int a2, int a3, int a4); int __stdcall sub_420D40(int a1, int a2, int a3, int a4); int __stdcall sub_420E90(int a1, int a2, int a3, int a4); int __stdcall sub_4212C0(int a1, int a2, int a3, const char *a4); int __stdcall sub_421390(int a1, void *a2, int a3, int a4); int __stdcall sub_421460(int a1, int a2, int a3, const char *a4); int __stdcall sub_421540(int a1, int a2, int a3, int a4); void __stdcall sub_421610(int a1, int a2, int a3, const char *a4); int __stdcall sub_4216B0(int a1, void *a2, int a3, char *a4); int __stdcall sub_421750(int a1, int a2, int a3, int a4); int __stdcall sub_4217A0(int a1, int a2, signed int a3, const char *a4); int __stdcall sub_421860(int a1, int a2, int a3, unsigned __int8 *a4); int __thiscall sub_421A00(void *this, int a2, int a3, int a4, char *a5); int __stdcall sub_421B70(int a1, int a2, int a3, int a4); int __thiscall sub_421C70(void *this, int a2, int a3, signed int a4, const char *a5); int __stdcall sub_421EE0(int a1, int a2, int a3, const char *a4); int __stdcall sub_421F00(int a1, int a2, int a3, int a4); unsigned int __stdcall sub_422030(int a1, int a2, int a3, int a4); int __stdcall sub_422140(int a1, int a2, int a3, int a4); void __stdcall sub_4223B0(int a1, int a2, int a3, int a4); int __stdcall sub_422470(int, int, int, char *); // idb int __stdcall sub_422560(int, int, int, char *); // idb int __stdcall sub_422640(int, int, int, char *); // idb signed int __thiscall sub_422730(int this, unsigned int a2, unsigned int a3, int a4, unsigned int a5); int __stdcall sub_4227A0(size_t); // idb char __thiscall sub_4227F0(void *this, int a2); char __thiscall sub_422860(void *this, int a2); char __thiscall sub_4228D0(void *this, int a2); char __thiscall sub_422950(void *this, int a2); void *__thiscall sub_4229D0(void *this, char a2); int __thiscall sub_422A60(int this); int __thiscall sub_422B10(void *this); int __stdcall sub_422BB0(int a1, int a2, int a3, int a4); int __stdcall sub_422DC0(int a1, int a2, int a3, int a4); int __stdcall sub_422F50(int a1, int a2, int a3, const char *a4); int __stdcall sub_4230A0(int a1, int a2, signed int a3, const char *a4); signed int __thiscall sub_4233C0(int this, int a2); int __thiscall sub_4233F0(int this, unsigned int a2, unsigned int a3); // void *__usercall sub_423480(int a1, int a2, unsigned int a3, size_t a4); // void __usercall sub_4235BB(int a1); int __thiscall sub_4235F0(int this, int a2, int a3, int a4); char __thiscall sub_423670(int this, unsigned __int16 a2); int __stdcall sub_4237F0(int a1, int a2, int a3, unsigned __int8 *a4); int __stdcall sub_423910(int a1, int a2, int a3, const char *a4); int __thiscall sub_423A10(void *this, int a2, int a3, int a4, char *a5); int __thiscall sub_423D10(void *this, int a2, int a3, int a4, char *a5); int __thiscall sub_423FC0(void *this, int a2, unsigned int a3, unsigned int a4); int __thiscall sub_4240B0(int this, int a2, void *a3, int a4); void __thiscall sub_424190(void **this); int __thiscall sub_4241C0(int this, char *a2, size_t a3); int __thiscall sub_4242C0(int this, unsigned int a2); void *__thiscall sub_424330(void *this); FILE *__stdcall sub_4243E0(int a1, int a2, int a3, int a4); char __thiscall sub_424430(void *this, int a2, int a3, int a4); int __thiscall sub_4244F0(int this, char *a2); void **__thiscall sub_424530(void **this, int a2); int __stdcall sub_424580(int, int, int, char *); // idb int __stdcall sub_424710(int, int, int, char *); // idb int __stdcall sub_4248A0(int a1, int a2, int a3, char *a4); int __stdcall sub_424A00(int a1, int a2, int a3, char *a4); int __stdcall sub_424B60(int a1, int a2, int a3, char *a4); void __stdcall sub_424CC0(int a1, int a2, int a3, char *a4); int __thiscall sub_424EF0(void *this, int a2); void __cdecl sub_424F20(int a1, int a2); void __thiscall sub_424F60(int this); void __stdcall sub_424FC0(int a1, int a2, int a3, int a4); int __thiscall sub_425890(int this); void __thiscall sub_4271F0(int this); int __thiscall sub_427240(int this, __int16 a2, int a3, void *a4); int __thiscall sub_427730(void *this, const char *a2, size_t a3); unsigned int __stdcall sub_427900(int a1, int a2); int __thiscall sub_427920(void *this, int a2); void __stdcall sub_427960(int a1, int a2); int __thiscall sub_4279C0(void *this, int a2); int __fastcall sub_4279F0(int a1, int a2, int a3, int a4); int __stdcall sub_427A40(int a1, int a2); int __stdcall sub_427A60(int a1); bool __thiscall sub_427A70(int this, int a2); char *__thiscall sub_427AD0(char *this, const char *a2); bool __thiscall sub_427B00(int this, int a2); bool __stdcall sub_427B40(int a1, int a2); char __thiscall sub_427B70(int this, int a2, unsigned int a3, unsigned int a4); int __thiscall sub_427BD0(void *this); void *__thiscall sub_427BE0(void *this); char __stdcall sub_427BF0(int a1, int a2, int a3); int __thiscall sub_427C00(int this, int a2, int a3, int a4); bool __thiscall sub_427C20(int this, int a2, int a3); bool __thiscall sub_427C90(void *this, int a2, int a3); bool __thiscall sub_427D10(void *this, int a2, int a3); bool __thiscall sub_427D90(void *this, int a2, int a3); char __thiscall sub_427E20(int this, int a2, int a3, int a4); void *__thiscall sub_427E80(void *this); int __thiscall sub_427E90(int this, int a2); void __thiscall sub_427EB0(void *this); char __thiscall sub_427EC0(int this, int a2, int a3, int a4); int __thiscall sub_427EE0(int this, int a2); // int __thiscall DNameNode::DNameNode(_DWORD); weak char __thiscall sub_427F10(void *this, int a2, int a3, int a4); int __thiscall sub_427F40(int this, int a2, int a3, int a4); bool __thiscall sub_427F60(int this, int a2); int __thiscall sub_428000(int this, int a2, int a3); char __thiscall sub_428020(int this, int a2, int a3, int a4); int __thiscall sub_428050(int this, int a2, int a3, __int16 a4); int __thiscall sub_428080(int this); int __cdecl sub_4280A0(int a1); char __thiscall sub_4280C0(int this, int a2, int a3, int a4); void *__thiscall sub_428110(void *this, int a2); char __thiscall sub_428180(int this, int a2, int a3, int a4); int __thiscall sub_4281E0(int this, int a2, int a3); int __thiscall sub_428200(int this, int a2); char __thiscall sub_428220(void *this, int a2, void *a3, int a4); int __thiscall sub_428290(int this, __int16 a2); int __thiscall sub_4282B0(int this, int a2, int a3, int a4, int a5); int __thiscall sub_4282E0(void *this, int a2); // char __userpurge sub_4283D0(int a1, int a2, int a3, int a4); char __stdcall sub_428420(int a1, int a2, int a3); char __thiscall sub_428470(void *this, int a2, int a3, int a4); char __thiscall sub_4284A0(void *this, int a2, int a3, int a4); int __thiscall sub_428530(int this, int a2, int a3, int a4); char __thiscall sub_428560(int this, int a2, int a3, int a4); void __thiscall sub_4285A0(int this); void *__thiscall sub_4285B0(void *this, int a2); int __thiscall sub_428620(int this, int a2); char __thiscall sub_428640(void *this, int a2, int a3, int a4); int __thiscall sub_428680(int this, int a2); __int16 __thiscall sub_4286B0(int this); char *__thiscall sub_4286C0(void *this); int __thiscall sub_4286D0(int this, int a2, int a3); // int __thiscall DNameNode::DNameNode(_DWORD); weak char __thiscall sub_428700(void *this, int a2, int a3, int a4); int __thiscall sub_428740(int this); int __thiscall sub_428750(int this); void *__thiscall sub_4287B0(void *this, void *a2, int a3); char __thiscall sub_428890(void *this, int a2, int a3, int a4); void *__thiscall sub_428A40(void *this, void *a2, int a3, int a4); int __thiscall sub_428A70(void *this); char __thiscall sub_428B00(int this, int a2, int a3, int a4); void *__thiscall sub_428B40(void *this, void *a2, int a3); int __thiscall sub_428C20(void *this); char __thiscall sub_428CB0(void *this, int a2, int a3, int a4); char __stdcall sub_428DF0(int a1, void *a2, int a3); char __thiscall sub_428EE0(void *this, int a2, int a3, int a4); bool __thiscall sub_4290E0(int this, int a2, int a3); bool __thiscall sub_429160(void *this, int a2, int a3); bool __thiscall sub_4291E0(void *this, int a2, int a3); bool __thiscall sub_429260(void *this, int a2, int a3); char __thiscall sub_429300(void *this, int a2, int a3, int a4); char __thiscall sub_4293F0(void *this, int a2, int a3, int a4); char __thiscall sub_4294C0(void *this, int a2, int a3, int a4); char __thiscall sub_429570(void *this, int a2, int a3, int a4); bool __thiscall sub_4295A0(void *this, int a2); char __thiscall sub_429650(void *this, int a2, int a3, int a4); int __thiscall sub_429740(int this, const char *a2, int a3); char __thiscall sub_429820(void *this, int a2, int a3, int a4); void *__thiscall sub_429940(void *this, int a2, int a3, int a4); char __thiscall sub_4299F0(void *this, int a2, int a3, int a4); bool __thiscall sub_429B20(int this); int __thiscall sub_429B40(int this); int __thiscall sub_429B50(int this); int __thiscall sub_429B60(int this); char __thiscall sub_429B70(void *this, int a2, int a3, int a4); int __thiscall sub_429C80(int this, int a2, int a3); char __thiscall sub_429CB0(int this); char __thiscall sub_429CE0(int this); char __thiscall sub_429D20(int this, int a2, int a3, int a4); int __thiscall sub_429DD0(int this); void __thiscall sub_429E10(int this); int __thiscall sub_429E70(int this, int a2, int a3, int a4, int a5, int a6); void __thiscall sub_429EF0(int this); int __thiscall sub_429F60(int this); void __thiscall sub_42A030(int this); int __thiscall sub_42A070(int this); void __thiscall sub_42A0B0(int this); int __thiscall sub_42A110(int this, int a2, int a3, char a4); void __thiscall sub_42A170(int this); int __thiscall sub_42A1D0(int this, char a2); void __thiscall sub_42A1F0(int this); char __thiscall sub_42A230(void *this, int a2, int a3, int a4); char __thiscall sub_42A2F0(void *this, int a2, int a3, int a4); char __thiscall sub_42A3D0(void *this, int a2, int a3, int a4); char __thiscall sub_42A480(void *this, int a2, int a3, int a4); char __thiscall sub_42A540(void *this, int a2, int a3, int a4); char __thiscall sub_42A670(void *this, int a2, int a3, int a4); int __thiscall sub_42A6C0(void *this, int a2); int __thiscall sub_42A6F0(_DWORD); // weak signed int __thiscall sub_42A700(void *this, const char *a2); signed int __thiscall sub_42A770(void *this, const unsigned __int8 *a2); int __thiscall sub_42A830(int this); char *__thiscall sub_42A860(void *this); char *__thiscall sub_42A870(void *this); int __thiscall sub_42A880(int this, void *a2); FILE *__thiscall sub_42A8B0(int this, int a2, FILE *a3, int a4, int a5); bool __thiscall sub_42A910(int this); void __thiscall sub_42A930(int this); int __thiscall sub_42A940(int this); int __thiscall sub_42A950(int this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_42A9C0(int this); char __thiscall sub_42A9D0(int this, char a2); bool __thiscall sub_42AA00(int this); bool __thiscall sub_42AA10(int this); signed __int16 __thiscall sub_42AA20(void *this, int a2, __int16 a3); char __stdcall sub_42AB10(int a1, int a2, int a3, int a4); char __stdcall sub_42AB20(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_42AB30(int this, int a2, int a3, int a4); int __thiscall sub_42AB60(int this); int __stdcall sub_42AC00(int a1, int a2, int a3, int a4, int a5, int a6); // void __userpurge sub_42AC20(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_42AD80(void *this); int __thiscall sub_42AD90(int this, int a2); int __thiscall sub_42ADA0(int this); int __thiscall sub_42ADB0(void *this); __int16 __thiscall sub_42ADC0(int this); int __thiscall sub_42ADD0(int this, unsigned __int16 a2, int a3); char __thiscall sub_42AE20(void *this, int a2, int a3, int a4); int __thiscall sub_42B050(void *this, int a2, signed int a3); int __thiscall sub_42B150(int this); int __thiscall sub_42B160(void *this, int a2); int __thiscall sub_42B410(void *this, int a2, int a3, int a4); int __thiscall sub_42B510(void *this, int a2, int a3, int a4); FILE *__thiscall sub_42B670(void *this, int a2, int a3, int a4); int __thiscall sub_42B800(void *this, int a2, int a3); int __thiscall sub_42BA80(void *this, int a2, int a3); char __thiscall sub_42BCE0(void *this, int a2, int a3, int a4, int a5); char __stdcall sub_42C1B0(int a1, int a2, int a3); int __thiscall sub_42C3C0(void *this, int a2); int __thiscall sub_42C680(void *this, int a2); int __thiscall sub_42C820(void *this, int a2, int a3); signed int __thiscall sub_42C8F0(void *this, int a2, int a3, char a4); int __thiscall sub_42CB70(void *this, int a2, int a3); int __thiscall sub_42CC20(void *this, int a2); int __thiscall sub_42CCA0(void *this, int a2); int __thiscall sub_42CD20(void *this, int a2); int __thiscall sub_42CDF0(void *this, int a2); void __thiscall sub_42CE70(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_42CEB0(void *this, int a2, int a3, int a4, char a5); FILE *__thiscall sub_42D070(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_42D1A0(void *this, int a2); int __thiscall sub_42D280(void *this, int a2, int a3); int __thiscall sub_42D370(void *this, int a2, int a3); int __thiscall sub_42D530(void *this, int a2, int a3); int __thiscall sub_42D5F0(void *this); int __thiscall sub_42D730(void *this, int a2, __int16 a3, int a4); int __thiscall sub_42DE00(void *this, int a2); int __stdcall sub_42DF30(__int64 a1, __int64 a2, int a3); int __thiscall sub_42E030(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_42E110(void *this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD)); int __stdcall sub_42E420(int a1, int a2); int __stdcall sub_42E4F0(int a1, int a2); int __thiscall sub_42E600(void *this, int a2, int a3, int a4); int __cdecl sub_42E700(); int __thiscall sub_42E740(void *this); // int __userpurge sub_42E850(void *a1, double a2, int a3, int a4, int a5, int a6, signed int a7, int a8); // int __userpurge sub_42EEB0(int a1, double a2, int a3, int a4, int a5, int a6, signed int a7, int a8); char __thiscall sub_42F120(void *this, int a2); char __stdcall sub_42F2A0(int a1); int __thiscall sub_42F2F0(void *this, int a2); int __thiscall sub_42F450(void *this); char __thiscall sub_42F680(void *this); signed int __thiscall sub_42F750(void *this); signed int __cdecl sub_42F7C0(); int __thiscall sub_42F810(void *this); int __thiscall sub_42F900(void *this); int __cdecl sub_42FD50(); int __thiscall sub_42FDA0(void *this); int __thiscall sub_42FE90(int this, __int16 a2, int a3, int a4); int __thiscall sub_42FEE0(void *this, int a2, int a3, int a4); int __thiscall sub_4301A0(void *this, signed int a2, int a3, __int16 a4); bool __thiscall sub_4303C0(void *this, int a2); char __thiscall sub_430470(void *this, int a2); bool __thiscall sub_4307B0(void *this, int a2); char __thiscall sub_4308A0(void *this, int a2); int __thiscall sub_430AC0(void *this); int __thiscall sub_430EA0(void *this, int a2, int a3, int a4); bool __cdecl sub_4313C0(int a1, int a2); void *__cdecl sub_431400(const void *a1, const void *a2, void *a3); int __thiscall sub_431440(void *this, int a2, int a3, int a4, int a5); void __cdecl sub_4316A0(void *a1, int a2); int __thiscall sub_431770(int this, int a2, void *a3, void *a4); int __thiscall sub_4317E0(int this, unsigned int a2); // void __usercall sub_4318E6(int a1); char __thiscall sub_431900(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_431EA0(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_4323C0(void *this, int a2, int a3, int a4, int a5); char __thiscall sub_4329D0(void *this, int a2, int a3, int a4, int a5); // char __userpurge sub_432B10(int a1, double a2, int a3, int a4, int a5, signed int a6, int a7); int __thiscall sub_4335D0(int this, int a2); // char __userpurge sub_433650(int a1, double a2, int a3, int a4, int a5, int a6, int a7); int __thiscall sub_4336A0(int this, unsigned int a2); void __thiscall sub_433750(int this, const void *a2); int __thiscall sub_4337C0(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_434610(int this, __int16 a2, int a3); int __thiscall sub_434660(int this); int __thiscall sub_4346A0(int this); int __thiscall sub_4346E0(int this, __int16 a2, __int16 a3); int __thiscall sub_434710(int this); void __thiscall sub_434760(int this); __int16 __thiscall sub_434770(int this); int __thiscall sub_434790(int this); int loc_4347E0(); // weak char __thiscall sub_434800(void *this, void *a2); char __thiscall sub_434850(void *this, void *a2); void *__thiscall sub_4348A0(void *this, char a2); int __thiscall sub_4348E0(int this, unsigned __int16 a2); int __thiscall sub_434910(void *this, int a2, int a3, int a4, int a5); int __stdcall sub_434A10(int a1, int a2); char __thiscall sub_434A60(void *this, int a2, int a3); char __stdcall sub_434C20(int a1, int a2); char __thiscall sub_434C70(void *this, int a2, int a3); bool __thiscall sub_434E00(void *this, int a2); char __thiscall sub_434EC0(void *this, int a2); char __thiscall sub_4351E0(void *this, int a2); char __stdcall sub_4352A0(int a1); char __thiscall sub_4352F0(void *this, int a2); int __cdecl sub_4353D0(); int __stdcall sub_435410(int a1); int __stdcall sub_435460(int a1); int __thiscall sub_4354E0(void *this, int a2); char __thiscall sub_4355F0(void *this, int a2, int a3, int a4); int __thiscall sub_4356D0(void *this); int __stdcall sub_4357C0(unsigned int a1); int __stdcall sub_435820(unsigned int a1); char __thiscall sub_435880(void *this, const void *a2); char __thiscall sub_4358C0(void *this, const void *a2); void *__cdecl sub_435900(void *a1, int a2, int a3); void *__thiscall sub_435960(void *this, char a2); int __thiscall sub_4359F0(void *this); bool __thiscall sub_435CE0(void *this, int a2, int a3); char __thiscall sub_4362D0(void *this, int a2, int a3); bool __thiscall sub_436400(void *this, int a2, int a3); int __thiscall sub_4369C0(void *this); int __cdecl sub_436B40(int a1, int a2, int a3); int __stdcall sub_436C50(int a1); char __thiscall sub_436EA0(int this, unsigned __int16 a2); // int __usercall sub_437020(int result, int a2, int a3); int __cdecl sub_437050(int a1, int a2, int a3); int __cdecl sub_437090(void *a1, unsigned int a2); void *__cdecl sub_437110(const void *a1, const void *a2, void *a3); int __thiscall sub_437150(int this); int __thiscall sub_437270(int this, unsigned int a2); // void __usercall sub_43735B(int a1); int __thiscall sub_437380(int this, int a2); int __thiscall sub_437400(int this, unsigned int a2); // void __usercall sub_4374EE(int a1); int __thiscall sub_437510(int this, unsigned int a2); int __thiscall sub_437600(int this, int a2); int __thiscall sub_437680(void *this); int __thiscall sub_437720(void *this); int __thiscall sub_437780(void *this, int a2); int __thiscall sub_4378D0(int this, unsigned int a2); void __thiscall sub_4379A0(int this, const void *a2); int __thiscall sub_437A10(void *this, int a2, int a3, const void *a4); // int __usercall sub_437AA0(int a1, double a2); int __thiscall sub_437E60(void *this, __int16 a2, int a3, int a4, int a5, int a6, int a7, __int16 a8, int a9, unsigned __int8 a10); int __thiscall sub_4383E0(int this, int a2); int loc_438410(); // weak unsigned int __thiscall sub_438420(int this); bool __cdecl sub_438440(int a1); char __thiscall sub_438450(int this, int a2); int loc_438580(); // weak void *__thiscall sub_4385B0(void *this); int __thiscall sub_438610(char *this); int __thiscall sub_4386D0(void *this); signed int __thiscall sub_438770(void *this, void *a2, signed int a3, signed int a4, signed int a5, signed int a6); int __thiscall sub_438980(void *this); void __thiscall sub_4389E0(void *this, int (__cdecl *a2)(_DWORD)); int __thiscall sub_438A60(int this, int a2, int a3, signed int a4, signed int a5, signed int a6, signed int a7); char __thiscall sub_438BE0(void *this, int a2); int __thiscall sub_439010(int this, int a2); char __thiscall sub_439040(void *this); int __thiscall sub_439250(int this); void *__thiscall sub_439280(void *this); int __thiscall sub_4393A0(void *this, int a2); int __thiscall sub_439430(void *this, __int16 a2, int a3, int a4); int __thiscall sub_439500(void *this, unsigned __int16 a2); char __thiscall sub_4395B0(void *this, __int16 a2); signed int __thiscall sub_439650(void *this, __int16 a2, int a3); int __thiscall sub_439710(void *this, unsigned __int16 a2); char __thiscall sub_439730(void *this, __int16 a2); int __thiscall sub_439750(void *this, int a2, int a3, int a4); int __thiscall sub_439C20(void *this, int a2, int a3, int a4); int __thiscall sub_439DF0(void *this, int a2, void *a3); int __thiscall sub_439E30(int this, int a2, int a3, int a4, int a5); signed int __thiscall sub_439F00(void *this, unsigned __int16 a2, int a3, int a4); void __thiscall sub_43A070(int this); int __thiscall sub_43A0C0(void *this, int a2); int __thiscall sub_43A110(void *this, int a2, void *a3); void __thiscall sub_43A160(void *this); signed int __thiscall sub_43A1A0(void *this, __int16 a2, int a3, int a4, char 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 __thiscall sub_43A370(void *this, int a2); char __thiscall sub_43A430(void *this, __int16 a2); // char __userpurge sub_43A510(int a1, int a2, unsigned __int16 a3, int a4, int a5, int a6); char __thiscall sub_43A660(int this, unsigned __int16 a2, int a3, int a4, int a5, int a6, char 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, int a31, int a32); char __thiscall sub_43A810(void *this, unsigned __int16 a2, int a3, int a4); char __thiscall sub_43A920(void *this, unsigned __int16 a2, int a3, int a4, unsigned __int16 a5); // void __usercall sub_43AC12(int a1); void __cdecl sub_43AC50(int a1, int a2); int __thiscall sub_43ACA0(void *this, int a2, void *a3); void __thiscall sub_43AD00(void *this); char __thiscall sub_43AD80(void *this, unsigned __int16 a2); char __thiscall sub_43AEF0(int this, __int16 a2); // void __usercall sub_43AFC8(int a1); int loc_43B010(); // weak int __thiscall sub_43B030(int this); void __thiscall sub_43B100(int this); char __stdcall sub_43B300(int a1, int a2, int a3); int __thiscall sub_43B330(int this, int a2, int a3, int a4); int __thiscall sub_43B360(int this, int a2); int loc_43B390(); // weak void *__thiscall sub_43B3A0(void *this, const char *a2); void *__thiscall sub_43B440(void *this, char a2); void *__thiscall sub_43B470(void *this, char a2); int __thiscall sub_43B4A0(int this); void __thiscall sub_43B540(int this); char __thiscall sub_43B5E0(void *this); char *__thiscall sub_43B890(int this); int __thiscall sub_43B8E0(int this); __time32_t __thiscall sub_43B910(__time32_t this, int a2); void *__thiscall sub_43B950(void *this); void __thiscall sub_43B9E0(void *); // idb int __thiscall sub_43BA70(int this); int __thiscall sub_43BAC0(int this, int a2, int a3); void __thiscall sub_43BB10(void *this); int __thiscall sub_43BB20(int this, int a2, int a3); int __thiscall sub_43BB70(int this, int a2, __int16 a3, int a4); char __thiscall sub_43BBB0(void *this); int __thiscall sub_43BBD0(int this); int __thiscall sub_43BBE0(int this); void __thiscall sub_43BBF0(int this); int __thiscall sub_43BC00(int this, int a2, int a3, int a4); int __thiscall sub_43BC20(void *this); int __thiscall sub_43BC30(void *this); signed int __thiscall sub_43BC40(int this); int __thiscall sub_43BCA0(int this, int a2, char a3, char a4, __int16 a5, int a6); void *__thiscall sub_43BD10(int this, const char *a2); int __thiscall sub_43BD40(int this, __int16 a2, int a3); int __thiscall sub_43BDF0(int this); int __thiscall sub_43BE30(int this); int __thiscall sub_43C010(int this, int a2); int __thiscall sub_43C0D0(int this); void *__thiscall sub_43C0E0(void *this, int a2); signed int __stdcall sub_43C0F0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); int __thiscall sub_43C100(int this); int __thiscall sub_43C170(int this); void __thiscall sub_43C180(int this); FILE *__thiscall sub_43C1F0(int this); int __thiscall sub_43C280(int this); int __thiscall sub_43C2F0(int this); int __thiscall sub_43C390(int this); char __thiscall sub_43C3A0(int this, char a2); char __thiscall sub_43C3B0(int this); char __thiscall sub_43C3D0(void *this, int a2, void *a3, int a4); int __thiscall sub_43C430(int this, __int16 a2); char __thiscall sub_43C470(int this, int a2); void __thiscall sub_43C4E0(int this); bool __thiscall sub_43C540(int this); bool __thiscall sub_43C560(int this); bool __thiscall sub_43C580(int this); char __thiscall sub_43C5A0(int this, int a2); int __thiscall sub_43C600(int this); int __thiscall sub_43C630(void *this); int __thiscall sub_43C920(void *this); int __thiscall sub_43CAE0(void *this); int __cdecl sub_43CD20(); int __thiscall sub_43CD60(void *this); int __cdecl sub_43CEA0(); int __thiscall sub_43CF10(void *this, int a2); int __thiscall sub_43D040(void *this, int a2); int __thiscall sub_43D170(void *this, int a2); int __thiscall sub_43D2A0(void *this, int a2); int __thiscall sub_43D3D0(void *this, int a2); int __thiscall sub_43D500(void *this, int a2); int __thiscall sub_43D630(void *this, int a2); void *__thiscall sub_43D760(void *this); int __thiscall sub_43D810(void *this, int a2); int __thiscall sub_43D990(void *this, int a2); int __thiscall sub_43DAC0(void *this, int a2); int __thiscall sub_43DBF0(void *this, int a2, int a3); int __thiscall sub_43DD20(void *this, int a2, int a3, int a4); int __thiscall sub_43E000(void *this, int a2); int __thiscall sub_43E140(void *this, int a2, int a3, int a4); int __thiscall sub_43E370(void *this); int __stdcall sub_43E6F0(int a1, int a2); int __stdcall sub_43E7D0(int a1, int a2); int __thiscall sub_43E8D0(void *this, int *a2); int __thiscall sub_43EAB0(void *this); int __stdcall sub_43EBB0(int a1, int a2); int __thiscall sub_43EC90(void *this); int __cdecl sub_43EDA0(); int __thiscall sub_43EDE0(void *this); int __stdcall sub_43EF20(unsigned int a1); // int loc_43EF80(); weak void *__thiscall sub_43EF90(void *this, char a2); void *__thiscall sub_43F000(void *this, __int16 a2); int __thiscall sub_43F090(int this); int __thiscall sub_43F0A0(int this); signed int __thiscall sub_43F0D0(void *this, int a2, int a3, int a4, signed int a5, int a6, unsigned __int16 a7, __int16 a8, int a9, int a10); int __thiscall sub_43F360(void *this); int __stdcall sub_43F5A0(int a1); int __thiscall sub_43F620(void *this, int a2, int a3); int __thiscall sub_43F760(void *this, int a2, int a3); int __thiscall sub_43F880(void *this, int a2, int a3); int __thiscall sub_43F9C0(void *this, int a2, int a3); int __thiscall sub_43FAC0(void *this, int a2, int a3); int __thiscall sub_43FBF0(void *this, int a2, int a3); int __thiscall sub_43FD00(void *this, int a2, int a3); int __thiscall sub_43FE30(void *this, int a2, int a3); int __thiscall sub_43FFB0(void *this, int a2, int a3); int __thiscall sub_4400F0(void *this, int a2, int a3); int __thiscall sub_440230(void *this); int __thiscall sub_440460(void *this); int __cdecl sub_4405F0(int a1, int a2, int a3); char __thiscall sub_440640(int this); int __thiscall sub_4406A0(void *this); int __cdecl sub_4407E0(int a1, int a2, int a3); int __thiscall sub_440830(int this, int a2, int a3, int a4); int __thiscall sub_4409A0(int this, int a2, void *a3, int a4); void __cdecl sub_440A80(int a1, int a2); int __thiscall sub_440B50(void *this, int a2); void *__thiscall sub_440C20(int this, unsigned int a2); int __thiscall sub_440CB0(int this, int a2, int a3, int a4); char __thiscall sub_440E10(void *this, int a2, unsigned int a3); char __thiscall sub_4410B0(void *this, int a2, unsigned int a3); int __thiscall sub_4412F0(void *this, int a2, int a3, int a4); int __thiscall sub_4414C0(void *this); char __thiscall sub_441540(void *this, int a2, int a3, int a4); char __thiscall sub_441600(int this); void __thiscall sub_4417B0(void *this, int a2, int a3, int a4); int __thiscall sub_441880(void *this); char __thiscall sub_441910(int this); char __thiscall sub_441980(int this); int __thiscall sub_441A20(int this, int a2); int __thiscall sub_441AB0(int this, int a2, int a3, int a4); int __thiscall sub_441B10(int this, unsigned int a2); // void __usercall sub_441C1B(int a1); int __thiscall sub_441C40(void *this, int a2); int __thiscall sub_441D80(void *this, int a2); int __thiscall sub_441E90(void *this, void *a2); int __thiscall sub_442540(void *this, void *a2); int __thiscall sub_4425F0(void *this, void *a2); int __thiscall sub_442740(int this, int a2); int __thiscall sub_4427C0(int this, int a2); int __thiscall sub_442840(void *this, __int16 a2); int __thiscall sub_442C70(int this, unsigned int a2); int __thiscall sub_442D20(void *this, int a2, int a3, int a4); void *__thiscall sub_4442D0(void *this, char a2); int __thiscall sub_444300(int this, int a2, int a3, int a4, int a5); int __thiscall sub_4443A0(void *this, int a2); signed int __cdecl sub_4443C0(); void *__thiscall sub_4443D0(void *this, int a2); void *__thiscall sub_4444E0(int this, __int16 a2); bool __cdecl sub_444540(int a1, int a2); char __stdcall sub_444560(int a1, unsigned __int16 a2); int __thiscall sub_444740(int this); int __cdecl sub_444960(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)); int __thiscall sub_444A00(void *this); int __thiscall sub_444B20(void *this); int __thiscall sub_444BF0(void *this, int a2, int a3, int a4); int __thiscall sub_444DF0(void *this, int a2, int a3, int a4); int __thiscall sub_445010(int this, __int16 a2); char __thiscall sub_445050(int this, __int16 a2); char __stdcall sub_4450A0(int a1, int a2); char __thiscall sub_4451A0(void *this, int a2, unsigned __int8 *a3); int __thiscall sub_4452D0(void *this, int a2, int a3); int __stdcall sub_445710(unsigned int a1); int __cdecl sub_445770(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)); int __cdecl sub_4458A0(int a1, int a2, int a3); int __cdecl sub_4458E0(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __cdecl sub_445950(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)); int __cdecl sub_445AA0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)); int __cdecl sub_445BF0(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)); char __thiscall sub_445D00(int this, unsigned __int16 a2, unsigned int a3); bool __thiscall sub_445D60(int this, unsigned __int16 a2); // int __usercall sub_445E20(int result, int a2, int a3); int __cdecl sub_445E50(int a1, int a2, int a3); int __cdecl sub_445E90(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __thiscall sub_445F40(int this, unsigned __int16 a2); bool __thiscall sub_445FC0(void *this, unsigned __int16 a2); int __thiscall sub_4460C0(void *this, int a2, unsigned __int16 a3, int a4); char __thiscall sub_446250(void *this, unsigned __int16 a2, unsigned int a3); int __thiscall sub_4463A0(void *this, signed int a2, int a3, int a4, char a5, int a6); int __cdecl sub_4465E0(int a1, int a2, unsigned int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __cdecl sub_4469D0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)); char __thiscall sub_446AA0(void *this, int a2, unsigned __int8 *a3); void __thiscall sub_446C50(int this); int __thiscall sub_446CD0(void *this, int a2); int __thiscall sub_446E10(int this, unsigned int a2); // void __usercall sub_446EEB(int a1); int __thiscall sub_446F10(int this, int a2); int __cdecl sub_446F90(int a1, int a2, signed int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __thiscall sub_4470D0(void *this, int a2, int a3); int __thiscall sub_447360(void *this, int a2, int a3); int __thiscall sub_4474C0(int this, unsigned int a2); int __thiscall sub_447580(int this, unsigned int a2); unsigned int __thiscall sub_447630(int this, int a2); void __thiscall sub_4476B0(int this); int __thiscall sub_447710(int this); void __thiscall sub_4477A0(int this); signed int __thiscall sub_447800(void *this); int __thiscall sub_4478A0(int this, unsigned int a2); void *__thiscall sub_447910(int this, __int16 a2); __int16 __stdcall sub_447A10(__int16 a1); int __thiscall sub_447A90(void *this, __int16 a2, int a3); char __thiscall sub_447D40(void *this, __int16 *a2, int a3); signed int __stdcall sub_448120(__int16 a1, int a2); int __thiscall sub_448280(void *this, unsigned __int16 a2, int a3, int a4, int a5, int a6); void *__thiscall sub_448430(void *this, unsigned int a2); FILE *__thiscall sub_4484B0(int this, __int16 a2, char a3); void __thiscall sub_4485F0(void *this, int a2); void __thiscall sub_448700(int this, int a2); void __thiscall sub_448770(int this, void *a2); int __thiscall sub_448850(void *this); void __thiscall sub_448960(void *this, void *a2, void *a3, int a4, int a5); unsigned int __thiscall sub_448A40(int this, unsigned __int16 a2, int a3, int a4, int a5); int __thiscall sub_448B30(void *this, int a2); int __stdcall sub_448DD0(int a1, int a2); int __thiscall sub_448DE0(void *this, int a2, int a3); int __thiscall sub_448E30(void *this, int a2, int a3); int (__stdcall ***__cdecl sub_448E80())(int, int); bool __stdcall sub_448E90(int a1); signed int __cdecl sub_448EB0(); int (__stdcall ***__cdecl sub_448EC0())(int, int); int __stdcall sub_448ED0(int a1, int a2); bool __stdcall sub_448EF0(int a1); bool __stdcall sub_448F00(int a1); bool __stdcall sub_448F30(int a1); signed int __cdecl sub_448F60(); signed int __cdecl sub_448F70(); bool __stdcall sub_448F80(int a1); signed int __cdecl sub_448F90(); bool __stdcall sub_448FA0(int a1); signed int __cdecl sub_448FC0(); bool __stdcall sub_448FD0(int a1); signed int __cdecl sub_449000(); signed int __cdecl sub_449010(); signed int __cdecl sub_449020(); int __cdecl sub_449030(); bool __stdcall sub_449040(int a1); signed int __cdecl sub_449050(); bool __stdcall sub_449060(int a1); signed int __cdecl sub_449080(); signed int __cdecl sub_449090(); bool __stdcall sub_4490A0(int a1); signed int __cdecl sub_4490D0(); int __stdcall sub_4490E0(int a1); signed int __cdecl sub_449100(); signed int __cdecl sub_449110(); bool __stdcall sub_449120(int a1); bool __stdcall sub_449130(int a1); signed int __cdecl sub_449150(); signed int __cdecl sub_449160(); bool __stdcall sub_449170(int a1); signed int __cdecl sub_4491A0(); bool __stdcall sub_4491B0(int a1); int loc_4491C0(); // weak bool __stdcall sub_4491D0(int a1); signed int __cdecl sub_4491F0(); signed int __cdecl sub_449200(); bool __stdcall sub_449210(int a1); signed int __cdecl sub_449240(); bool __stdcall sub_449250(int a1); int __stdcall sub_449260(int a1); int __thiscall sub_4492B0(void *this); void __thiscall sub_449940(int this); int __thiscall sub_449BE0(void *this, int a2, int a3); int __thiscall sub_449DD0(void *this, int a2); __int16 __cdecl sub_44A040(); __int16 __cdecl sub_44A080(); int __cdecl sub_44A0C0(); bool __thiscall sub_44A100(int this, int a2); void *__thiscall sub_44A140(void *this, unsigned __int8 a2); FILE *__stdcall sub_44A160(int a1); int __thiscall sub_44A180(int this, int a2); int __thiscall sub_44A190(int this); int __thiscall sub_44A1C0(void *this, int a2); int __stdcall sub_44A270(int a1, int a2); int __stdcall sub_44A3A0(int a1, int a2); int __thiscall sub_44A490(int this, int a2); int __stdcall sub_44A580(int a1, int a2); int __thiscall sub_44A690(void *this, int a2); int __stdcall sub_44A790(int a1, int a2); int __stdcall sub_44A8A0(int a1, int a2); int __stdcall sub_44A9B0(int a1, int a2); int __stdcall sub_44AAC0(int a1, int a2); int __thiscall sub_44ABD0(void *this, int a2); int __thiscall sub_44AD10(void *this, int a2); int __thiscall sub_44AE50(void *this, int a2); int __thiscall sub_44AF80(void *this, int a2); int __stdcall sub_44B0C0(int a1, int a2); int __stdcall sub_44B1D0(int a1, int a2); int __stdcall sub_44B2E0(int a1, int a2); int __stdcall sub_44B3F0(int a1, int a2); int __stdcall sub_44B500(int a1, int a2); int __stdcall sub_44B620(int a1, int a2); int __thiscall sub_44B730(void *this, int a2); int __stdcall sub_44B920(int a1, int a2); int __thiscall sub_44BA30(void *this, int a2); int __stdcall sub_44BB60(int a1, int a2); int __stdcall sub_44BC70(int a1, int a2); int __thiscall sub_44BD40(void *this, int a2); int __stdcall sub_44BF50(int a1, int a2); int __stdcall sub_44C060(int a1); int __thiscall sub_44C0B0(void *this, int a2); int __stdcall sub_44C1C0(int a1, int a2); int __stdcall sub_44C2B0(int a1, int a2); int __thiscall sub_44C440(void *this); int __stdcall sub_44C700(int a1, int a2); int __thiscall sub_44C7F0(void *this, int a2); int __stdcall sub_44C8A0(int a1, int a2); int __thiscall sub_44C990(void *this, int a2); int __stdcall sub_44CA40(int a1, int a2); int __thiscall sub_44CB30(void *this, int a2); int __stdcall sub_44CBE0(int a1, int a2); int __stdcall sub_44CCB0(int a1, int a2); int __thiscall sub_44CDE0(void *this, int a2, int a3, int a4); int __thiscall sub_44CEE0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_44D0A0(void *this, int a2); int __thiscall sub_44D600(void *this, signed int a2); int __thiscall sub_44D8F0(void *this, int a2); int __thiscall sub_44D9F0(void *this, int a2); int __thiscall sub_44DDB0(void *this, int a2); int __stdcall sub_44DF20(int a1, int a2); int __thiscall sub_44E0D0(int this); int __thiscall sub_44E110(void *this, int a2); int __stdcall sub_44E490(int a1, int a2); int __stdcall sub_44E680(int a1, int a2); int __stdcall sub_44E760(int a1, int a2); int __stdcall sub_44E890(int a1, int a2); int __thiscall sub_44E960(void *this, int a2, int a3, int a4); int __stdcall sub_44EFE0(int a1, int a2); int __thiscall sub_44F130(int this); int __cdecl sub_44F140(unsigned __int16 a1); char __thiscall sub_44F170(int this, unsigned int a2); char __thiscall sub_44F1A0(int this, __int16 a2); char __thiscall sub_44F1E0(int this, int a2); int __thiscall sub_44F210(int this, __int16 a2); void *__thiscall sub_44F250(void *this, const char *a2); void *__thiscall sub_44F300(void *this, char a2); void *__thiscall sub_44F330(void *this, char a2); void *__thiscall sub_44F380(void *this, char a2); void *__thiscall sub_44F3B0(void *this, char a2); void *__thiscall sub_44F3F0(void *this, char a2); void *__thiscall sub_44F420(void *this, char a2); void *__thiscall sub_44F470(void *this, char a2); void *__thiscall sub_44F4A0(void *this, char a2); void *__thiscall sub_44F4F0(void *this, char a2); void *__thiscall sub_44F520(void *this, char a2); void *__thiscall sub_44F550(void *this, const char *a2); __int16 __cdecl sub_44F600(unsigned __int16 a1); char __thiscall sub_44F670(void *this); char __thiscall sub_44F680(void *this); FILE *__thiscall sub_44F870(void *this, const char *a2, int a3, int a4); FILE *__thiscall sub_44FA70(void *this); __int32 __thiscall sub_44FB50(__time32_t this, int a2); int __thiscall sub_44FB80(int this, int a2); int loc_44FBC0(); // weak char __thiscall sub_44FBE0(void *this, int a2); char __thiscall sub_44FC20(void *this, int a2); void *__thiscall sub_44FC80(void *this, char a2); int __thiscall sub_44FCC0(void *this, int a2, char a3, char a4, char a5, char a6, char a7); int __thiscall sub_44FD40(void *this, int a2, __int16 a3); int __thiscall sub_450240(void *this, int a2, int a3, int a4); int __thiscall sub_450430(void *this, int a2, int a3, int a4); void __thiscall sub_450590(int this); int __thiscall sub_450600(int this, int a2, int a3); int __thiscall sub_450670(int this); char __thiscall sub_4506F0(void *this, void *a2, int a3); int __thiscall sub_4507A0(int this, int a2, int a3, int a4, char a5); char __thiscall sub_4507D0(int this, void *a2, int a3); int __thiscall sub_450880(void *this, int a2, int a3, int a4, int a5); int __stdcall sub_450990(int a1, int a2); int __thiscall sub_450B10(void *this, __time32_t a2); void *__thiscall sub_450C50(void *this, char a2); int __thiscall sub_450CE0(void *this, int a2, int a3); char __thiscall sub_450EC0(int this, unsigned __int16 a2); int __thiscall sub_451040(int this); int __thiscall sub_451180(int this, int a2); int __thiscall sub_4511E0(void *this, int a2, int a3, int a4); // int __usercall sub_451380(int a1, int a2, int a3); int __stdcall sub_451880(int a1, int a2); int __thiscall sub_451960(void *this, unsigned __int8 a2); int __thiscall sub_451BE0(void *this, int a2); int __thiscall sub_451D00(void *this); int __thiscall sub_451D40(void *this, int a2, int a3, __int16 a4); // int __userpurge sub_452130(int a1, int a2, int a3, int a4, int a5); int loc_4521D0(); // weak int __thiscall sub_4521E0(int this, int a2, int a3, int a4); void __thiscall sub_452220(int this, int a2, int a3, int a4); char __thiscall sub_4522B0(void *this, int a2, int a3); int __thiscall sub_4523C0(void *this, int a2, int a3); int __thiscall sub_4525C0(void *this, unsigned __int8 *a2); signed int __thiscall sub_452770(void *this, int a2, int a3, int a4, char a5); int __thiscall sub_452B10(int this); int __stdcall sub_452B20(int a1); int __stdcall sub_452B40(int a1); int __stdcall sub_452B60(int a1); int __stdcall sub_452B80(int a1); int __stdcall sub_452BA0(int a1); int __stdcall sub_452BC0(int a1); int __stdcall sub_452BE0(int a1); int __stdcall sub_452C00(int a1); int __stdcall sub_452C20(int a1); int __thiscall sub_452C40(int this, int a2); int __thiscall sub_452C50(int this, int a2); unsigned int __thiscall sub_452C60(void *this, int a2); int __stdcall sub_452C70(int a1); int __thiscall sub_452C80(int this, int a2); int __thiscall sub_452C90(int this, int a2); int __thiscall sub_452CA0(void *this, int a2); int __stdcall sub_452CB0(int a1, int a2, int a3); char __stdcall sub_452CD0(int a1, int a2); int __stdcall sub_452CF0(int a1); int __stdcall sub_452D10(int a1, int a2); int __thiscall sub_452D30(void *this, int a2); int __thiscall sub_452EA0(void *this, int a2); int __thiscall sub_453450(int this, int a2); int __cdecl sub_4534F0(); int __thiscall sub_453530(void *this); signed int __thiscall sub_453610(void *this, int a2); int __thiscall sub_4536D0(void *this, int a2); signed int __thiscall sub_453870(void *this, int a2); signed int __thiscall sub_4539D0(void *this, int a2); signed int __thiscall sub_453A90(void *this, int a2); int __thiscall sub_453F40(void *this, int a2); signed int __thiscall sub_454050(void *this, int a2); signed int __thiscall sub_454130(void *this, int a2); signed int __thiscall sub_454230(void *this, int a2); char __thiscall sub_4542B0(void *this, int a2, unsigned __int16 a3); int __thiscall sub_454520(void *this, int a2, int a3, char a4); int __thiscall sub_454640(void *this, int a2); int __thiscall sub_454700(void *this, int a2, int a3); int __stdcall sub_454A00(int a1, int a2); int __stdcall sub_454B50(int a1, int a2); int __stdcall sub_454C30(int a1, int a2); int __stdcall sub_454D10(int a1, int a2); int __stdcall sub_454DF0(int a1, int a2); int __stdcall sub_454ED0(int a1, int a2); char __thiscall sub_454F20(void *this, int a2); int __thiscall sub_455000(void *this, int a2, int a3, __int16 a4, int a5, int a6); int __thiscall sub_455160(void *this); int __thiscall sub_4551B0(void *this, int a2, char a3, char a4); int __thiscall sub_455790(int this); char __thiscall sub_4557D0(void *this, int a2, int a3); int __thiscall sub_455CC0(void *this, int a2, int a3); int __thiscall sub_455D90(int this); char *__thiscall sub_455E80(char *this, const char *a2); bool __thiscall sub_455EB0(int this, int a2); int __thiscall sub_455EF0(int this, const void *a2); char __thiscall sub_455F20(int this, int a2); bool __thiscall sub_455F40(int this, int a2); char __thiscall sub_455F80(void *this, int a2, int a3, int a4); void __thiscall sub_455FF0(void *this); void __thiscall sub_4560B0(void *this, char a2); bool __thiscall sub_456190(int this, int a2); bool __thiscall sub_4561E0(int this, int a2); char __thiscall sub_456220(void *this, int a2, int a3, int a4); bool __thiscall sub_4565E0(int this, int a2, int a3); int __thiscall sub_4566A0(void *this); int __thiscall sub_4567A0(void *this, int a2, int a3, int a4); int __thiscall sub_456950(void *this, int a2, int a3, __int16 a4); int __thiscall sub_456B30(void *this, int a2, int a3, __int16 a4); int __thiscall sub_456D10(void *this, int a2, int a3, __int16 a4); int __thiscall sub_456F10(void *this, int a2, int a3, __int16 a4); int __thiscall sub_457240(void *this, int a2, int a3, __int16 a4); int __thiscall sub_457410(void *this, int a2, int a3, int a4); int __thiscall sub_457770(void *this, int a2, int a3, int a4); int __thiscall sub_457AE0(void *this); int __thiscall sub_457BE0(void *this, int a2, int a3, int a4); int __thiscall sub_457EE0(void *this, int a2, int a3, int a4); int __thiscall sub_458000(void *this, __int16 a2, unsigned __int8 a3); int __thiscall sub_458210(void *this, int a2, int a3, __int16 a4); int __stdcall sub_4583E0(int a1, int a2, int a3, int a4); int __thiscall sub_458430(void *this, __int16 a2, const void *a3, unsigned __int16 a4, char a5); int __thiscall sub_4585F0(void *this, int a2, int a3, signed int a4); int __stdcall sub_4587A0(int a1, int a2, int a3, int a4); int __thiscall sub_4587F0(void *this, __int16 a2, int a3, const void *a4, unsigned __int16 a5); int __thiscall sub_4589A0(void *this, __int16 a2, int a3, const void *a4, unsigned __int16 a5); void __thiscall sub_458B60(void *this); FILE *__thiscall sub_458BE0(void *this); FILE *__thiscall sub_458C90(void *this, char a2); int __thiscall sub_458D50(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_458F40(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_459090(void *this, int a2); char __thiscall sub_459250(void *this, int a2, int a3); char __thiscall sub_4594D0(void *this, int a2, int a3); int __thiscall sub_459750(int this, int a2, int a3, char a4); int __thiscall sub_4597B0(void *this); int __cdecl sub_459940(int a1, int a2, int a3); int __thiscall sub_459AD0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_459C80(void *this, int a2, int a3, int a4); int __thiscall sub_459FA0(void *this, int a2, int a3, int a4); int __thiscall sub_45A580(void *this, int a2); int __thiscall sub_45A8D0(int this, int a2); void *__thiscall sub_45A910(void *this); void *__thiscall sub_45A940(void *this); void __thiscall loc_45A970(void *); // idb signed int __thiscall sub_45A980(int this, int a2); signed int __thiscall sub_45A990(int this, __int16 a2); int __thiscall sub_45A9F0(int this, int a2); int __thiscall sub_45AA00(int this); int __thiscall sub_45AA10(int this); int __thiscall sub_45AA20(int this); char *__thiscall sub_45AA30(void *this); int __thiscall sub_45AA40(int this); int __thiscall sub_45AA50(int this, int a2); bool __stdcall sub_45AA60(int a1); int __stdcall sub_45AA90(int a1); int __thiscall sub_45AAD0(int this, int a2, int a3); int __thiscall sub_45AB20(int this, int a2); int __thiscall sub_45AB80(int this, int a2); int __stdcall sub_45ABE0(int a1); int __thiscall sub_45ACA0(void *this, int a2); int __stdcall sub_45AD80(int a1); int __stdcall sub_45AFC0(int a1); int __stdcall sub_45B130(int a1); int __stdcall sub_45B320(int a1); int __stdcall sub_45B4F0(int a1); int __stdcall sub_45B6B0(int a1); int __stdcall sub_45B7F0(int a1); int __stdcall sub_45B8B0(int a1); int __stdcall sub_45B970(int a1); int __stdcall sub_45BB80(int a1); signed int __thiscall sub_45BD00(int this, signed int a2); int __thiscall sub_45BE00(int this); void __thiscall sub_45BE20(int this); signed int __thiscall sub_45BE60(int this, int a2); signed int __thiscall sub_45BF60(int this, int a2); signed __int16 __thiscall sub_45C1E0(void *this, int a2); void __thiscall sub_45C250(int this, int a2, char *a3); int __stdcall sub_45C570(unsigned int a1); int __cdecl sub_45C5D0(int a1, int a2, int a3); int __cdecl sub_45C610(int a1, int a2, int a3); void __cdecl sub_45C650(int a1, int a2, int a3); int __thiscall sub_45C690(int this, int a2, unsigned int a3, int a4); void __thiscall sub_45C910(void *this, int a2); // int __thiscall Concurrency::details::InternalContextBase::GetProxy(_DWORD); weak signed int __thiscall sub_45CC20(int this, int a2, int a3); unsigned __int16 __thiscall sub_45CC50(void *this, unsigned __int16 a2); int __thiscall sub_45CC80(int this); int __thiscall sub_45CCC0(void *this); bool __thiscall sub_45CD00(int this); signed int __thiscall sub_45CDB0(int this); int __thiscall sub_45CDE0(int this); // char __userpurge sub_45CE00(int a1, int a2, int a3, int a4); char __thiscall sub_45D050(void *this, int a2, unsigned __int8 a3); // char __userpurge sub_45D1C0(int a1, int a2, int a3); // void __usercall sub_45D290(int a1, int a2, int a3); void __thiscall sub_45D610(void *this, int a2); FILE *__thiscall sub_45D6A0(int this, int a2); FILE *__thiscall sub_45D760(void *this, int a2); signed int __thiscall sub_45D8F0(int this); int __thiscall sub_45D960(int this, int a2); int __thiscall sub_45D990(void *this, int a2); int __thiscall sub_45DC00(void *this, int a2, __int16 a3, int a4); int __thiscall sub_45DDC0(void *this, int a2); int __thiscall sub_45DEC0(void *this, __int16 a2, char a3); void __thiscall sub_45DFC0(void *this); int __thiscall sub_45E0C0(void *this); int __thiscall sub_45E350(void *this); // char __userpurge sub_45E4C0(int a1, int a2, int a3, char a4); // char __userpurge sub_45E8D0(int a1, int a2, int a3); int __thiscall sub_45EA80(void *this); int __thiscall sub_45EB20(void *this, unsigned __int8 a2); int __thiscall sub_45F070(void *this); int __thiscall sub_45F290(void *this, int a2, int a3, int a4); int __thiscall sub_45F530(void *this); int __thiscall sub_45F830(int this, signed int a2); int __stdcall sub_45F8E0(int a1, int a2, int a3); char __thiscall sub_45F970(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_45FAE0(int this, unsigned int a2); char __thiscall sub_45FB70(void *this, int a2, int a3, int a4, int a5, signed int a6); char __thiscall sub_45FD70(void *this, int a2); int __thiscall sub_45FF90(void *this, __int16 a2, __int16 a3); int __thiscall sub_460090(int this); // void __thiscall Concurrency::details::TaskStack::_TaskStack(void *); idb int __thiscall sub_4600B0(int this, unsigned int a2); int __thiscall sub_460110(void *this, int a2, int a3); char __thiscall sub_460230(int this, int a2, int a3, int a4); int __thiscall sub_4602A0(void *this); int __thiscall sub_4604D0(void *this, int a2); char __thiscall sub_460540(void *this); char __thiscall sub_460690(void *this, unsigned __int16 a2); char __thiscall sub_460790(void *this, int a2); int __thiscall sub_460860(void *this, signed int *a2, int a3); signed int __thiscall sub_460910(void *this, signed int a2, int a3); int __thiscall sub_460AE0(void *this, signed int a2, int a3, int a4, int a5, int a6); int __thiscall sub_460C80(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_460EB0(void *this, int a2, signed int a3, int a4); int __thiscall sub_460FE0(void *this, void *a2, signed int a3, int a4, int a5); int __thiscall sub_461160(void *this, void *a2, int a3, int a4, int a5); bool __thiscall sub_461350(void *this, int a2, int a3); bool __thiscall sub_4613B0(int this, const void *a2, int a3); int __thiscall sub_461480(int this, int a2); void __thiscall sub_461490(void *this); int __thiscall sub_4614A0(int this, int a2); char *__thiscall sub_461500(char *this, const char *a2, char *a3); int __thiscall sub_461540(int this); char *__thiscall sub_461570(void *this); char __thiscall sub_461580(int this); signed int __thiscall sub_461610(int this, int a2, int a3, int a4); int __thiscall sub_461680(int this, int a2); bool __thiscall sub_4616A0(int this, int a2, int a3); char __thiscall sub_4616E0(void *this, int a2, int a3, int a4); char __thiscall sub_461720(int this, int a2); // signed int __userpurge sub_4617E0(int a1, int a2, int a3, unsigned __int16 a4, unsigned __int16 a5); // int __userpurge sub_461940(int a1, int a2, int a3); signed int __stdcall sub_461AF0(void *a1, int a2, int a3, int a4); // char __userpurge sub_461D00(int a1, int a2, int a3, int a4); signed int __stdcall sub_461E60(int a1); int __cdecl sub_461EB0(int a1); int __cdecl sub_461ED0(int a1); void *__thiscall sub_461F10(void *this, const char *a2); void *__thiscall sub_461FB0(void *this, const char *a2); void *__thiscall sub_462050(void *this, char a2); int loc_462090(); // weak int __thiscall sub_4620A0(int this, int a2, int a3); int __thiscall sub_4620E0(int this, int a2, int a3); int __thiscall sub_462120(void *this, int a2); int __thiscall sub_4623E0(void *this, const char *a2); int __thiscall sub_462540(void *this, int a2, int a3, int a4); signed int __thiscall sub_462640(void *this, int a2, int a3, int a4, int a5, int (__fastcall *a6)(_DWORD, _DWORD, _DWORD, _DWORD)); int __thiscall sub_4627E0(void *this); char __thiscall sub_462840(void *this, int a2, int a3); int __thiscall sub_462930(void *this); int __thiscall sub_4629F0(void *this, const void *a2); int __thiscall sub_462A60(void *this); char __thiscall sub_462AC0(void *this, int a2); char __thiscall sub_462C30(void *this, int a2, int a3, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD)); int __thiscall sub_462DD0(void *this); int __stdcall sub_462E60(unsigned int a1); int __thiscall sub_462EC0(int this, int a2); int __cdecl sub_462F20(int a1, int a2, int (__thiscall *a3)(_DWORD, _DWORD, _DWORD, _DWORD)); void *__thiscall sub_462FC0(void *this, char a2); void *__thiscall sub_462FF0(void *this, char a2); FILE *__thiscall sub_463020(int this, int a2); char __thiscall sub_463090(int this, int a2, int a3); char __thiscall sub_463120(int this, unsigned __int16 a2); int __thiscall sub_4632A0(void *this, int a2); void __stdcall sub_463310(void *a1); int __thiscall sub_463350(int this, int a2, void *a3, int a4); int __thiscall sub_463430(int this, int a2, int a3); // void __usercall sub_4634CE(int a1); void *__cdecl sub_4634F0(const void *a1, const void *a2, void *a3); void __thiscall sub_463530(int this); int __thiscall sub_463600(int this, int a2, int a3); int __thiscall sub_463670(int this, int a2); void *__cdecl sub_4636F0(const void *a1, const void *a2, void *a3); int __thiscall sub_463730(void *this, char a2); bool __thiscall sub_4637F0(void *this, char a2); void __thiscall sub_463870(void *this, int a2, int a3, void *a4); int __thiscall sub_463970(int this, int a2); int __thiscall sub_4639F0(int this, int a2, int a3, int a4, int a5); int __thiscall sub_463AC0(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_463BE0(void *this); signed int __thiscall sub_463E30(int this, int a2, int a3, int a4); char *__thiscall sub_464300(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); int __thiscall sub_464410(int this, int a2); char __thiscall sub_4644A0(int this, int a2, char *a3); int __thiscall sub_4644F0(int this, unsigned int a2); // void __usercall sub_4645E4(int a1); int __thiscall sub_464600(int this, int a2); // void __usercall sub_4646C5(int a1); void __thiscall sub_4646E0(int this); void __thiscall sub_4647A0(int this); char __thiscall sub_464840(void *this, int a2); int __thiscall sub_465330(int this, int a2); int __thiscall sub_4653B0(int this); int __thiscall sub_465590(int this, int a2); signed int __thiscall sub_465790(void *this, char a2); signed int __thiscall sub_465910(void *this, char a2); signed int __thiscall sub_465AB0(void *this, char a2); int __thiscall sub_465C20(int this); void *__thiscall sub_465D50(void *this, char a2); int __stdcall sub_465D80(const char *a1); signed int __thiscall sub_465E70(void *this); int __cdecl sub_465FC0(int a1, int a2, int a3); int __thiscall sub_465FF0(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_466230(int this, int a2, int a3, int a4, int a5); int __thiscall sub_466300(void *this); int __thiscall sub_4666E0(int this); int __thiscall sub_466750(void *this, int *a2); int __thiscall sub_4667D0(int this, int a2); char __thiscall sub_466940(void *this, int a2); char __thiscall sub_466980(void *this, int a2); char __thiscall sub_4669C0(int this, int a2); char __thiscall sub_466A10(int this, int a2); int __thiscall sub_466A60(int this); signed int __thiscall sub_466B30(int this); int __thiscall sub_466B50(int this, int a2); int __thiscall sub_466B80(__time32_t this, int a2); int __cdecl sub_466C90(int a1); void *__thiscall sub_466CB0(void *this); int __thiscall sub_466D00(int this, int a2); int __thiscall sub_466D60(int this, int a2); int __thiscall sub_466DC0(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_467060(void *this, int a2, int a3); void __stdcall sub_4672B0(void *a1); int __thiscall sub_4672F0(int this, int a2, void *a3, int a4); FILE *__thiscall sub_4673D0(void *this); int __thiscall sub_467480(int this, __int16 a2); FILE *__thiscall sub_4674F0(int this); int __thiscall sub_467510(int this, int a2, int a3); int __thiscall sub_467580(int this); void __thiscall sub_4675D0(int this, int a2); int __thiscall sub_467660(int this, int a2); int __thiscall sub_4676C0(int this, int a2, int a3, int a4); int __thiscall sub_467760(int this); void *__thiscall sub_467810(void *this); int (__stdcall **__thiscall sub_467840(int this))(int, int); int __stdcall sub_467850(unsigned int *a1, int a2); int __thiscall sub_467930(void *this, int a2, int a3); int __thiscall sub_467A40(int this, int a2, int a3); int __thiscall sub_467A60(void *this, int a2, int a3); int __stdcall sub_467B40(int a1, int a2); int __stdcall sub_467C20(int a1, int a2); int __stdcall sub_467D30(int a1, int a2); int __stdcall sub_467E20(int a1, int a2); int __stdcall sub_467FF0(int a1, int a2); int __stdcall sub_4681C0(int a1, int a2); int __stdcall sub_468350(int a1, int a2); int __stdcall sub_4684E0(int a1, int a2); int __stdcall sub_4685C0(int a1, int a2); int __stdcall sub_468750(int a1, int a2); int __stdcall sub_4688D0(int a1, int a2); int __stdcall sub_468A60(int a1, int a2); int __stdcall sub_468D30(int a1, int a2); int __stdcall sub_468EC0(int a1, int a2); void *__thiscall sub_469120(void *this); int (__stdcall **__thiscall sub_469150(int this))(int, int); int __stdcall sub_469160(unsigned int *a1, int a2); int __thiscall sub_469240(void *this, int a2, int a3); int __thiscall sub_469350(int this, int a2, int a3); int __thiscall sub_469360(void *this, int a2, int a3); void *__thiscall sub_469440(void *this, const char *a2); void *__thiscall sub_4694E0(void *this, char a2); int __thiscall sub_469510(void *this); int __thiscall sub_469530(int this, const unsigned __int8 *a2, char a3); char *__thiscall sub_4695D0(void *this); bool __thiscall sub_4695E0(int this, int a2, unsigned __int16 a3); int __cdecl sub_469630(int a1, int a2); signed int __stdcall sub_469650(int a1, int a2); void *__thiscall sub_469660(void *this, const char *a2); void *__thiscall sub_469710(void *this, const char *a2); void *__thiscall sub_4697C0(void *this, char a2); void *__thiscall sub_4697F0(void *this, char a2); int __thiscall sub_469820(void *this); int __thiscall sub_469A00(void *this); signed __int16 __thiscall sub_469D30(void *this, int a2, int a3, int a4); signed int __thiscall sub_469F30(void *this, int a2, int a3); signed __int16 __thiscall sub_46A110(void *this, void *a2, int a3); int __thiscall sub_46A2E0(void *this, int a2, int a3, int a4); int __thiscall sub_46A4B0(void *this, signed int a2); int __thiscall sub_46A7E0(void *this, int a2, int a3, int a4); void *__thiscall sub_46A930(void *this, int a2, int a3, int a4); int __cdecl sub_46AA00(); signed int __thiscall sub_46AA40(void *this); signed __int16 __thiscall sub_46ADB0(void *this, __int16 a2, int a3); signed __int16 __thiscall sub_46B0E0(void *this); __int16 __thiscall sub_46B140(void *this, int a2, __int16 a3, int a4); int __thiscall sub_46B490(void *this, unsigned __int16 a2); int __stdcall sub_46B7D0(int a1, int a2); int __thiscall sub_46B9E0(void *this, int a2, int a3, int a4); int __thiscall sub_46BD00(void *this); int __thiscall sub_46BDB0(void *this, int a2, int a3, int a4); int __thiscall sub_46BE80(void *this, int a2, int a3, int a4); int __thiscall sub_46C150(void *this, int a2, int a3, int a4); int __stdcall sub_46C420(int a1, int a2); int __stdcall sub_46C460(int a1, int a2); int __stdcall sub_46C4C0(int a1, int a2); signed int __stdcall sub_46C540(void *a1, int a2); signed int __stdcall sub_46C690(int a1, int a2); int __stdcall sub_46C720(unsigned int a1); signed int __thiscall sub_46C780(void *this, int a2); signed int __thiscall sub_46C9A0(int this); signed int __thiscall sub_46CAA0(int this, int a2); void *__cdecl sub_46CAE0(const void *a1, const void *a2, void *a3); int __thiscall sub_46CB20(int this, unsigned int a2); // void __usercall sub_46CBFF(int a1); signed int __thiscall sub_46CC20(int this, __int16 a2); int __stdcall sub_46CCA0(int a1, int a2); int __thiscall sub_46CD10(int this, int a2); int __thiscall sub_46CD90(int this); void __thiscall sub_46CE40(int this); signed int __thiscall sub_46CEA0(int this, int a2); int __stdcall sub_46CFB0(int a1, int a2); char __thiscall sub_46D060(int this, char a2); char __cdecl sub_46D070(); bool __thiscall sub_46D080(int this); int __stdcall sub_46D090(int a1, int a2); char __thiscall sub_46D0F0(void *this, int a2, int a3); int __thiscall sub_46D220(int this, unsigned __int8 *a2); char __thiscall sub_46D2C0(void *this, void *a2, int a3); char __thiscall sub_46D480(void *this, int a2, int a3); int __thiscall sub_46D5E0(void *this, int a2); int __thiscall sub_46D900(void *this, int a2); int __stdcall sub_46DC50(int a1, int a2); int __stdcall sub_46DD60(int a1, int a2); int __stdcall sub_46DE60(int a1, int a2); int __stdcall sub_46DF60(int a1, int a2); int __stdcall sub_46E090(int a1, int a2); int __stdcall sub_46E150(int a1, int a2); int __stdcall sub_46E210(int a1, int a2); int __stdcall sub_46E300(int a1, int a2); int __stdcall sub_46E3E0(int a1, int a2); int __stdcall sub_46E4C0(int a1, int a2); int __thiscall sub_46E5A0(void *this, int a2, int a3, int a4); int __thiscall sub_46E690(void *this, int a2, int a3, int a4); int __thiscall sub_46E840(void *this, int a2, int a3); int __thiscall sub_46E920(void *this); int __thiscall sub_46EAA0(void *this, int a2); int __thiscall sub_46EDB0(void *this, int a2); int __thiscall sub_46F0C0(void *this, int a2); int __thiscall sub_46F240(void *this, int a2, int a3, int a4); int __thiscall sub_46F5C0(void *this, int a2, int a3, int a4); int __thiscall sub_46F910(int this); bool __thiscall sub_46F930(int this, int a2); int __thiscall sub_46F950(int this); int __thiscall sub_46F970(int this, int a2); void __thiscall sub_46F990(void *); // idb void __thiscall sub_46F9A0(int this); void __thiscall sub_46F9B0(int this); int __thiscall sub_46F9C0(int this, int a2, int a3, int a4); FILE *__thiscall sub_46F9E0(void *this, int a2, int a3); __int64 __thiscall sub_46FAC0(int this); int __thiscall sub_46FAD0(int this, int a2, int a3); int __thiscall sub_46FAF0(int this, int a2); bool __thiscall sub_46FB80(void *this, int a2, int a3, unsigned int a4, int a5); int __thiscall sub_46FBE0(int this, int a2); FILE *__thiscall sub_46FC80(void *this, int a2, char a3); int loc_46FDC0(); // weak void *__thiscall sub_46FDE0(void *this, char a2); int loc_46FE20(); // weak signed int __thiscall sub_46FE30(int this); signed int __thiscall sub_46FE60(int this); int __thiscall sub_46FE90(void *this, __int16 a2); int __thiscall sub_46FF90(void *this, int a2); int __thiscall sub_470110(void *this, int a2); int __thiscall sub_470240(void *this, int a2); int __thiscall sub_470580(int this, int a2); int __thiscall sub_470680(int this, int a2); int __stdcall sub_470730(int a1); int __thiscall sub_470800(int this, int a2); int __stdcall sub_4708B0(int a1); int __thiscall sub_470980(int this, int a2); int loc_470A50(); // weak int __stdcall sub_470A60(int a1); int __thiscall sub_470B40(int this, int a2); int __stdcall sub_470C00(int a1); void *__thiscall sub_470CE0(void *this, char a2); int __thiscall sub_470D70(int this, int a2); char __thiscall sub_470DE0(int this, unsigned __int16 a2); int __thiscall sub_470F60(void *this, int a2); int __thiscall sub_471020(void *this, int a2); int __thiscall sub_4710E0(void *this, int a2); int __thiscall sub_4711B0(void *this, int a2); char __thiscall sub_471280(void *this, int a2, int a3); char __thiscall sub_4714C0(void *this, int a2, int a3); char __thiscall sub_471700(void *this, int a2, int a3); char __thiscall sub_471C60(void *this, int a2, int a3); char __thiscall sub_471F10(void *this, int a2); char __thiscall sub_471F50(void *this, int a2); char __thiscall sub_471F90(int this, int a2); char __thiscall sub_471FE0(int this, int a2); int __thiscall sub_472030(int this); int __stdcall sub_472190(int a1); int __stdcall sub_4722A0(int a1); int __stdcall sub_4723B0(int a1); int __stdcall sub_4724B0(int a1); __int16 __thiscall sub_472630(int this, __int16 a2, int a3); int __thiscall sub_472670(int this); int __thiscall sub_472690(void *this, int a2, int a3, int a4); int __thiscall sub_4729A0(void *this, int a2, int a3, int a4); int __stdcall sub_472CA0(int a1, int a2, int a3, int a4, int a5); int __stdcall sub_472CF0(int a1, int a2); int __thiscall sub_472D40(void *this, unsigned __int8 a2, int a3); int __thiscall sub_472FE0(void *this); int __thiscall sub_473390(void *this); __int16 __thiscall sub_473730(int this, __int16 a2, int a3); int __thiscall sub_473790(void *this, unsigned __int8 a2, int a3, int a4, int a5, int a6); bool __thiscall sub_473A40(int this, int a2); int __thiscall sub_473A60(int this); void __thiscall sub_473A80(void *); // idb char __thiscall sub_473A90(int this, int a2, int a3); void __thiscall sub_473AB0(int this); void __thiscall sub_473AC0(int this); int __thiscall sub_473AD0(int this, int a2, int a3, int a4); __int64 __thiscall sub_473AF0(int this); int __thiscall sub_473B00(int this, int a2, int a3); __int64 __thiscall sub_473B20(int this); int __thiscall sub_473B30(int this, int a2, int a3); int loc_473B50(); // weak int __thiscall sub_473B70(int this, unsigned __int16 a2); char __thiscall sub_473C70(int this, unsigned __int16 a2); void *__thiscall sub_473D60(void *this, char a2); int loc_473DA0(); // weak FILE *__thiscall sub_473DB0(void *this, int a2, int a3); int __thiscall sub_473EB0(void *this); int __thiscall sub_473F20(void *this, __int16 a2); int __thiscall sub_474020(int this, int a2); int __stdcall sub_4740B0(int a1); void *__thiscall sub_474170(void *this, char a2); int __stdcall sub_474200(int a1); int __thiscall sub_4742D0(int this, int a2); char __thiscall sub_474360(int this, unsigned __int16 a2); int __thiscall sub_4744E0(void *this, int a2, int a3); char __thiscall sub_4745C0(void *this, int a2, int a3); char __thiscall sub_4747E0(void *this, int a2); char __thiscall sub_474820(void *this, int a2); char __thiscall sub_474860(int this, int a2); char __thiscall sub_4748B0(int this, int a2); int __thiscall sub_474900(int this); bool __thiscall sub_474A60(int this); int __thiscall sub_474AC0(int this); bool __thiscall sub_474AE0(int this); bool __thiscall sub_474B20(int this); void __thiscall sub_474B80(void *this); int __thiscall sub_474C40(void *this, int a2, char a3); char __thiscall sub_474D20(int this); void __thiscall sub_474D70(int this, int a2); char __thiscall sub_474DF0(int this, char a2); bool __thiscall sub_474E00(int this); int __stdcall sub_474E10(int a1, int a2); int __thiscall sub_474E70(void *this, int a2, int a3, int a4); char __thiscall sub_474E90(void *this, int a2); FILE *__thiscall sub_474EC0(void *this, __int16 a2, int a3); FILE *__thiscall sub_474FC0(void *this, __int16 a2); int __thiscall sub_475030(int this, __int16 a2); FILE *__thiscall sub_475120(void *this, __int16 a2); char __thiscall sub_475190(void *this, int a2, int a3); int __thiscall sub_475290(void *this, int a2, int a3); int __thiscall sub_475400(void *this, int a2); int __thiscall sub_475510(void *this, int a2, int a3, int a4); int __thiscall sub_4755C0(void *this, int a2, int a3, int a4); int __stdcall sub_475750(int a1, int a2); int __stdcall sub_4758F0(int a1, int a2); int __stdcall sub_4759E0(int a1, int a2); // signed int __userpurge sub_475B50(int a1, int a2, int a3); int __stdcall sub_475D00(int a1, int a2); int __stdcall sub_475EF0(int a1, int a2); FILE *__thiscall sub_475F40(int this, int a2, int a3, int a4); char __thiscall sub_475FB0(void *this, int a2, int a3, int a4); int __thiscall sub_475FE0(void *this); __int16 __thiscall sub_476040(int this, __int16 a2); FILE *__thiscall sub_476060(void *this, __int16 a2); int __stdcall sub_4760D0(int a1); int __thiscall sub_476710(void *this); int __thiscall sub_476860(void *this, int a2); int __cdecl sub_476990(); int __stdcall sub_476B00(int a1, int a2); int __thiscall sub_476C10(int this, int a2, unsigned int a3, int a4); int __stdcall sub_476D00(int a1, int a2); FILE *__thiscall sub_476E10(int this, int a2, int a3, int a4); FILE *__thiscall sub_476E90(int this, int a2, int a3, int a4); signed int __thiscall sub_476EF0(int this); int __thiscall sub_476F60(int this, char *a2, int a3); // FILE *__userpurge sub_477080(int a1, int a2, __int16 a3); char __cdecl sub_477360(int a1, __int16 a2, char *a3); char __cdecl sub_477490(int a1, __int16 a2, char *a3); int __thiscall sub_4775C0(int this, int a2); int __thiscall sub_477610(int this, int a2); int __thiscall sub_4776B0(void *this, int a2, int a3, int a4); char __thiscall sub_477900(int this, int a2, int a3); int __thiscall sub_477A40(void *this, int a2, int a3, int a4); char __thiscall sub_477BB0(void *this, signed int a2); int __stdcall sub_477ED0(int a1, int a2); int loc_478000(); // weak void *__thiscall sub_478010(void *this, char a2); void *__thiscall sub_478040(void *this, char a2); bool __cdecl sub_478070(int a1, int a2); bool __thiscall sub_4780A0(int this, int a2, int a3); signed int __thiscall sub_4780E0(int this, int a2); int __cdecl sub_478130(void *a1); char __thiscall sub_4781E0(int this, int a2, int a3, int a4); int __stdcall sub_478240(int a1, int a2); bool __thiscall sub_4782F0(int this); void *__thiscall sub_478310(void *this); int __cdecl sub_478360(); int __cdecl sub_478380(); void *__thiscall sub_4783A0(void *this); int __cdecl sub_478400(int a1, int a2, int a3); int __thiscall sub_478460(int this); int __thiscall sub_478480(int this); unsigned int __thiscall sub_4784A0(int this, unsigned int a2); unsigned int __thiscall sub_4784E0(int this, unsigned int a2); unsigned int __thiscall sub_478510(int this, unsigned int a2); int __stdcall sub_478550(unsigned int a1); int __stdcall sub_4785B0(unsigned int a1); int __stdcall sub_478610(unsigned int a1); int __thiscall sub_478670(int this, int a2); int __cdecl sub_4786D0(int a1); int __cdecl sub_478720(int a1); char __thiscall sub_478770(void *this, int a2, int a3, int a4); char __thiscall sub_4787D0(void *this, int a2, __int16 a3); char __thiscall sub_478890(void *this, int a2, __int16 a3, __int16 a4); int __thiscall sub_478940(int this); int __thiscall sub_478A20(void *this, unsigned __int8 *a2, int a3); int __thiscall sub_478B60(int this); int __thiscall sub_478BB0(int this); char __thiscall sub_478E90(int this, signed int a2); char __thiscall sub_478FC0(void *this); char __thiscall sub_479010(int this, int a2, char a3); char __thiscall sub_479180(int this, void *a2, char a3); int __cdecl sub_479330(int a1, int a2, int a3, __int16 a4); int __cdecl sub_479360(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)); void *__cdecl sub_4793E0(const void *a1, const void *a2, void *a3); bool __thiscall sub_479420(void *this, int a2); int __thiscall sub_4794B0(int this, int a2, int a3); int __thiscall sub_4794F0(int this); void __thiscall sub_479520(void *this, int a2); // int __usercall sub_479590(int a1, int a2); void __thiscall sub_479690(void *this, int a2); int __thiscall sub_479840(int this); char __thiscall sub_4798F0(void *this, int a2); bool __stdcall sub_479A40(int a1, int a2); unsigned int __thiscall sub_479A70(int this, unsigned int a2); int __thiscall sub_479AF0(int this); int __cdecl sub_479B20(int a1, int a2, int a3); void __thiscall sub_479C50(int this); int __thiscall sub_479CC0(int this); void __thiscall sub_479D70(void *this); void __thiscall sub_479DE0(int this); int __thiscall sub_479E30(int this, int a2); char __thiscall sub_479FB0(void *this, int a2); int __thiscall sub_479FE0(void *this, int a2); FILE *__thiscall sub_47A030(int this, int a2); void __thiscall sub_47A0D0(int this); char __thiscall sub_47A1D0(int this, int a2, void *a3); char __thiscall sub_47A510(void *this, int a2); char __thiscall sub_47A5D0(void *this, int a2); int __thiscall sub_47A6E0(int this, int a2, int a3); unsigned int __thiscall sub_47A750(int this, int a2); int __thiscall sub_47A7B0(int this, int a2, int a3, int a4); int __thiscall sub_47A910(int this, int a2); void *__thiscall sub_47A9B0(void *this, int a2); void *__cdecl sub_47AA60(const void *a1, const void *a2, void *a3); bool __thiscall sub_47AAA0(void *this, int a2, int a3); int __thiscall sub_47AB80(void *this, int a2); int __thiscall sub_47AC30(int this, unsigned int a2); int __thiscall sub_47ACA0(int this, int a2, int a3); int __thiscall sub_47AD10(int this, int a2); int __thiscall sub_47ADF0(int this, unsigned int a2); // void __usercall sub_47AEDB(int a1); char __thiscall sub_47AF00(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_47B1B0(int this, __int16 a2); int __thiscall sub_47B1F0(int this, int a2); void __thiscall sub_47B270(void *this, int a2, int a3, int a4); FILE *__thiscall sub_47B790(void *this, __int16 a2); int __thiscall sub_47B830(int this, int a2); int __thiscall sub_47B8B0(int this, unsigned int a2); // void __usercall sub_47B99E(int a1); int __thiscall sub_47B9C0(int this, int a2, char a3, int a4, void *a5); int __cdecl sub_47BC10(int a1, int a2, int a3); int __cdecl sub_47BC80(int a1, int a2, int a3); void __cdecl sub_47BCE0(int a1, int a2); int __cdecl sub_47BD30(int a1, int a2); int __cdecl sub_47BD60(char a1, int a2); char __thiscall sub_47BD80(int this, int a2, int a3, char *a4, char *a5); void __stdcall sub_47BFB0(void *a1); int __thiscall sub_47C010(int this, int a2); int __thiscall sub_47C090(void *this, int a2, int a3); int __thiscall sub_47C310(int this, int a2, void *a3, int a4); int __thiscall sub_47C4D0(void *this, int a2, int a3, const void *a4); // void __usercall sub_47C608(int a1); int __cdecl sub_47C650(int a1, int a2, int a3); void __cdecl sub_47C740(int a1, int a2); void __cdecl sub_47C7A0(int a1, int a2); int __cdecl sub_47C7F0(int a1, int a2); int __cdecl sub_47C8F0(int a1, int a2, int a3); int __cdecl sub_47C9E0(int a1, int a2, int a3); int __cdecl sub_47CAB0(int a1, int a2, int a3); void __thiscall sub_47CB60(int this); int __thiscall sub_47CE40(int this, int a2); void __thiscall sub_47CE80(int this, const void *a2); int __thiscall sub_47CEF0(int this, int a2, int a3, int a4); int __thiscall sub_47CFB0(int this, int a2, int a3, int a4); int __thiscall sub_47D170(int this, int a2); char __thiscall sub_47D3C0(int this, char a2, __int16 a3); int __thiscall sub_47D6D0(void *this, int a2, int a3); int __thiscall sub_47DB40(int this); char __thiscall sub_47DB70(void *this, int a2, unsigned __int16 a3); void __thiscall sub_47E2F0(int this, int a2, char a3); unsigned int __thiscall sub_47E690(int this, unsigned int a2); // void __usercall sub_47E75B(int a1); int __thiscall sub_47E780(int this, unsigned int a2); // void __usercall sub_47E86D(int a1); int __thiscall sub_47E890(int this, unsigned int a2); // void __usercall sub_47E987(int a1); void __thiscall sub_47E9A0(int this); char __thiscall sub_47EA00(void *this, int a2); void __thiscall sub_47EDA0(void *this, int a2); char __thiscall sub_47EDE0(void *this, int a2); void __thiscall sub_47F110(int this); void __thiscall sub_47F160(int this); void __thiscall sub_47F1B0(int this); unsigned int __thiscall sub_47F200(int this, int a2); int __thiscall sub_47F260(int this, int a2); int __thiscall sub_47F2E0(int this, int a2); void __thiscall sub_47F360(int this); char __thiscall sub_47F480(int this, int a2); void __thiscall sub_47F4F0(int this); unsigned int __thiscall sub_47F740(int this, int a2); unsigned int __thiscall sub_47F7E0(int this, int a2); int __thiscall sub_47F8C0(int this, int a2); char __thiscall sub_47F980(int this); char __thiscall sub_47FA00(void *this, int a2, char *a3, char *a4); char __thiscall sub_47FB40(int this, int a2, int a3, __int16 a4, char *a5); int __thiscall sub_47FDC0(int this); void __thiscall sub_47FED0(void *this); void *__thiscall sub_47FF70(void *this, char a2); char __thiscall sub_47FFA0(int this, int a2, int a3, int a4, int a5); FILE *__thiscall sub_47FFF0(void *this, int a2, int a3); signed int __thiscall sub_4800D0(int this); int __thiscall sub_480100(int this, int a2, int a3); void __thiscall sub_480170(int this, int a2, int a3); void __thiscall sub_4801D0(int this, int a2, int a3); int __thiscall sub_480220(int this, int a2, int a3, int a4); int __thiscall sub_480240(void *this); signed int __thiscall sub_480250(int this); int __thiscall sub_480280(void *this); int __thiscall sub_480290(void *this); __int16 __thiscall sub_4802C0(int this); int __thiscall sub_4802D0(int this); int __thiscall sub_4802F0(int this, int a2, int a3); int __thiscall sub_480300(int this); char __thiscall sub_480420(void *this, int a2); void *__thiscall sub_4804A0(void *this, const char *a2); void *__thiscall sub_480550(void *this, const char *a2); void *__thiscall sub_480600(void *this, const char *a2); void *__thiscall sub_4806A0(void *this, char a2); void *__thiscall sub_4806E0(void *this, char a2); void *__thiscall sub_480710(void *this, char a2); void *__thiscall sub_480740(void *this, char a2); int loc_480770(); // weak char __thiscall sub_480780(int this, int a2, int a3); int __thiscall sub_4807C0(void *this, int a2, int a3, int a4); int __thiscall sub_4808A0(int this); double __thiscall sub_480920(void *this, int a2, int a3, int a4); int __thiscall sub_4809A0(void *this, int a2, signed int a3); void __thiscall sub_480A90(void *this); void __thiscall sub_480B90(void *this, int a2); void __thiscall sub_480D00(void *this, int a2); int __stdcall sub_480E80(unsigned int a1); char __thiscall sub_480EE0(void *this, int a2); int __thiscall sub_480F30(int this, int a2, int a3, int a4); int __cdecl sub_480FB0(int a1); char __thiscall sub_481000(int this, unsigned __int16 a2); int __thiscall sub_481180(void *this, int a2, int a3, int a4); int __thiscall sub_481400(void *this, int a2); void __cdecl sub_4815E0(); int __cdecl sub_481610(int a1, int a2, int a3); int __thiscall sub_481650(int this); int __cdecl sub_4816B0(); int __thiscall sub_4816F0(int this, unsigned int a2); int __thiscall sub_481770(int this, unsigned int a2); FILE *__stdcall sub_481800(int a1, int a2); void __thiscall sub_481870(void *this, int a2); // int __usercall sub_4819D0(int result, int a2, int a3); int __thiscall sub_481A00(void *this, int a2, int a3, __int16 a4); void __cdecl sub_481AE0(int a1, unsigned int a2); unsigned int __thiscall sub_481B20(int this, unsigned int a2); // void __usercall sub_481BD8(int a1); unsigned int __thiscall sub_481BF0(int this, int a2); int __thiscall sub_481C50(int this, unsigned int a2); // void __usercall sub_481D40(int a1); void __thiscall sub_481D60(int this); int __thiscall sub_481DC0(int this, unsigned int a2); int __thiscall sub_481E70(int this, int a2); int __thiscall sub_481EE0(int this, int a2); int __thiscall sub_481F60(int this); void *__thiscall sub_4820A0(void *this, char a2); int __thiscall sub_482110(int this); void __thiscall sub_482190(int this, int a2, int a3); void __thiscall sub_4822C0(int this, int a2, int a3, int a4); int __thiscall sub_482350(int this, unsigned int a2); int __thiscall sub_482420(int this, unsigned int a2); unsigned int __thiscall sub_4824B0(void *this, unsigned __int16 a2, int a3); int __thiscall sub_482580(void *this, unsigned __int16 a2, int a3); char __thiscall sub_482680(void *this, int a2, int a3); int __stdcall sub_482910(int a1, int a2); int __stdcall sub_4829D0(int a1, int a2); int __stdcall sub_482AA0(int a1); int __stdcall sub_482AF0(int a1); int __cdecl sub_482B40(); int __stdcall sub_482B80(int a1); int __stdcall sub_482CD0(int a1); int __thiscall sub_482DC0(void *this, int a2, int a3); int __thiscall sub_482F40(void *this, int a2, int a3, int a4); int __stdcall sub_483040(int a1, int a2); int __thiscall sub_483100(void *this, int a2); int __thiscall sub_483200(void *this, int a2, int a3, int a4); int __stdcall sub_483370(int a1, int a2); int __thiscall sub_483430(void *this, int a2); int __thiscall sub_483570(void *this, int a2); bool __thiscall sub_483670(int this, int a2); int __thiscall sub_4836B0(int this, int a2); int __thiscall sub_4836E0(int this, int a2); int __thiscall sub_483740(int this, int a2); int __thiscall sub_4837D0(int this, int a2, int a3); int __thiscall sub_483840(int this, int a2, int a3); void *__stdcall sub_4838F0(int a1, int a2); char __thiscall sub_4839E0(int this, int a2, int a3, int a4); int __thiscall sub_483A20(int this, int a2); void __thiscall sub_483A90(int this); void *__thiscall sub_483B20(void *this); char __thiscall sub_483BB0(void *this, const char *a2, int a3); int __thiscall sub_483CC0(void *this, int a2, int a3, int a4); int __thiscall sub_483F50(void *this, int a2, int a3, int a4); char __thiscall sub_484090(void *this, int a2, int a3, int a4, int a5); char __thiscall sub_484190(void *this, int a2, int a3, int a4); int __thiscall sub_4842E0(void *this); char __thiscall sub_4843B0(void *this, int a2); int __stdcall sub_484490(int a1); char __thiscall sub_484580(int this, int a2, int a3, int a4, int a5); int __thiscall sub_484600(void *this); int __stdcall sub_4848B0(int a1, int a2); int __thiscall sub_484B80(void *this, int a2, int a3, int a4); int __stdcall sub_484F00(int a1, int a2); char __thiscall sub_485320(void *this, int a2); int __thiscall sub_4855F0(void *this, const char *a2, int a3, int a4, int a5); int __thiscall sub_485760(void *this, const char *a2, int a3, int a4, int a5); int __thiscall sub_4858E0(void *this, const char *a2); char __thiscall sub_485A10(int this, int a2, int a3, char a4); int __thiscall sub_485A70(void *this, int a2, int a3); int __thiscall sub_485B30(void *this, int a2, int a3, int a4); char __thiscall sub_485C30(void *this, int a2, int a3); int __stdcall sub_485F60(int a1, int a2, int a3); char __stdcall sub_4860E0(int a1, int a2, int a3, int a4); int __thiscall sub_486220(void *this, const char *a2); int __stdcall sub_486350(int a1, int a2); int __stdcall sub_486500(int a1, int a2); char __thiscall sub_486850(int this, void *a2, int a3); int __stdcall sub_486870(int a1); int __thiscall sub_486C40(int this, unsigned __int16 a2); int __thiscall sub_486C70(void *this, int a2, int a3, int a4); int __stdcall sub_486C90(int a1); void *__thiscall sub_486CB0(void *this); int loc_486CC0(); // weak void __thiscall sub_486CD0(void *this, int a2); char __thiscall sub_486D40(void *this); char __thiscall sub_486DA0(void **this); int __stdcall sub_486DE0(int a1, int a2, int a3); int __stdcall sub_486E10(int a1, int a2, int a3); int __thiscall sub_486E40(int this, unsigned __int16 a2); char __thiscall sub_486F40(void *this, const void *a2); char __thiscall sub_486F80(void *this, void *a2); char __thiscall sub_486FD0(void *this, void *a2); void *__thiscall sub_487020(void *this, char a2); int __stdcall sub_487060(int a1, int a2, int a3); int __stdcall sub_4870B0(int a1, int a2, int a3); int __stdcall sub_4871C0(int a1, int a2, int a3); int __stdcall sub_4872C0(int a1, int a2, int a3); int __stdcall sub_487380(int a1, int a2, int a3); int __stdcall sub_487450(int a1, int a2, int a3); int __stdcall sub_487500(int a1, int a2, int a3); void __stdcall sub_4875B0(int a1, int a2, int a3); int __stdcall sub_4878E0(int a1, int a2); int __stdcall sub_487930(int a1, int a2); int __stdcall sub_4879A0(int a1, int a2); int __stdcall sub_487A10(int a1, int a2); void __thiscall sub_487A90(int this); char __thiscall sub_487AC0(int this, char a2); char __thiscall sub_487AD0(void *this, int a2); char __thiscall sub_487B90(void *this, int a2, int a3); int __thiscall sub_487C50(void *this, __int16 a2, __int16 a3, __int16 a4); int __thiscall sub_487D70(void *this, __int16 a2, int a3, int a4, int a5); int __thiscall sub_487EC0(void *this, __int16 a2, int a3, int a4, int a5, int a6, signed int *a7); int __thiscall sub_487FF0(void *this, __int16 a2, int a3, const void *a4, __int16 a5); int __thiscall sub_488110(void *this, __int16 a2, int a3, const void *a4, int a5, int a6); int __thiscall sub_488270(void *this, __int16 a2, int a3, const void *a4, int a5, int a6); int __thiscall sub_488380(void *this, __int16 a2, int a3, const void *a4, int a5, int a6); int __thiscall sub_488490(void *this, __int16 a2, int a3, int a4, __int16 a5); int __thiscall sub_4885C0(void *this, __int16 a2, int a3, __int16 a4); int __thiscall sub_4886E0(void *this, __int16 a2, int a3, int a4, int a5, int a6); int __thiscall sub_488810(void *this, __int16 a2, int a3, int a4); int __thiscall sub_488930(void *this, __int16 a2, const void *a3, int a4, int a5); int __thiscall sub_488A40(void *this, __int16 a2, int a3, int a4); int __thiscall sub_488B60(void *this, __int16 a2, int a3, int a4, char a5, char a6); int __stdcall sub_488C90(int a1); int __thiscall sub_488D10(void *this, __int16 a2, const void *a3); int __thiscall sub_488E00(void *this, __int16 a2, int a3, int a4, __int64 a5, int a6, int a7, __int64 a8, char 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, int a31, int a32, int a33, int a34, int a35, int a36); int __stdcall sub_488F40(int a1, int a2, int a3); int __stdcall sub_489080(int a1, int a2); int __thiscall sub_4890F0(void *this, __int16 a2, int a3, int a4, __int16 a5, char a6); int __thiscall sub_489220(void *this, __int16 a2, int a3, int a4, const void *a5); int __thiscall sub_489360(void *this, __int16 a2, __int16 a3); char __thiscall sub_489480(void *this, const void *a2); char __thiscall sub_4894C0(void *this, int a2); int loc_489500(); // weak int __thiscall sub_489510(void *this, int a2, int a3, int a4); int __stdcall sub_489680(int a1, int a2, int a3); int __stdcall sub_4897C0(int a1, int a2, int a3); int __thiscall sub_489900(void *this, int a2, int a3, int a4); int __stdcall sub_489E00(int a1, int a2, int a3); int __stdcall sub_489F20(int a1, int a2, int a3); char __stdcall sub_48A040(int a1, int a2, int a3); int __stdcall sub_48A2B0(int a1, int a2, int a3); int __stdcall sub_48A2C0(int a1, int a2, int a3); char __thiscall sub_48A2D0(void *this, int a2, int a3); char __thiscall sub_48A490(void *this, int a2, int a3, __int16 a4); int __thiscall sub_48A660(void *this, __int16 a2); int __thiscall sub_48A790(void *this, int a2, int a3); char __thiscall sub_48A8D0(int this); bool __thiscall sub_48A940(int this); int __thiscall sub_48A970(void *this, int a2); int __stdcall sub_48AAA0(int a1, int a2, int a3); int __thiscall sub_48ABF0(void *this, int a2, int a3, int a4); int __stdcall sub_48AD40(int a1, int a2, int a3); char __thiscall sub_48AE30(int this); char __thiscall sub_48AF30(int this, unsigned __int16 a2); char __thiscall sub_48B0B0(int this, unsigned __int16 a2); bool __thiscall sub_48B230(void *this, int a2, __int16 a3, int a4); char __thiscall sub_48B4A0(void *this, int a2, __int16 a3, int a4); int __thiscall sub_48B900(int this, int a2, unsigned __int16 *a3); int __thiscall sub_48B990(int this); void *__thiscall sub_48BAA0(void *this, char a2); int __thiscall sub_48BAE0(int this); char __cdecl sub_48BC60(int a1, int a2); char __cdecl sub_48BD10(int a1, int a2); int __stdcall sub_48BDC0(int a1, int a2, int a3); int __stdcall sub_48C000(int a1, int a2, int a3); int __thiscall sub_48C200(void *this, const char *a2); char *__thiscall sub_48C260(void *this); int __fastcall sub_48C270(int a1, char *a2, int a3, int a4, const void *a5); int __stdcall sub_48C440(int a1, int a2); int __stdcall sub_48C470(int a1, int a2); int __thiscall sub_48C820(void *this, int a2); int __thiscall sub_48C9E0(void *this, int a2); int __stdcall sub_48CAC0(int a1, int a2); int __stdcall sub_48CBA0(int a1, int a2); int __stdcall sub_48CC80(int a1, int a2); int __stdcall sub_48CD30(int a1, int a2); int __stdcall sub_48CE00(int a1, int a2); int __stdcall sub_48CEA0(int a1, int a2); int __stdcall sub_48CF80(int a1, const void *a2); char __stdcall sub_48D040(int a1, int a2, int a3, int a4, int a5); char __stdcall sub_48D1D0(int a1, int a2, unsigned __int16 a3, int a4); unsigned int __thiscall sub_48D360(void *this); int __thiscall sub_48D380(int this, int a2); int __thiscall sub_48D3F0(void *this, int a2); int __cdecl sub_48D430(int a1); int __cdecl sub_48D460(int a1); void *__thiscall sub_48D480(void *this); void *__thiscall sub_48D4E0(void *this); int __thiscall sub_48D560(int this); int __thiscall sub_48D580(int this, __int16 a2, int a3); int __thiscall sub_48D610(void *this, int a2, void *a3, int a4, int a5, unsigned __int8 a6, unsigned __int8 a7); int __thiscall sub_48D920(int this, int a2); int __thiscall sub_48D9A0(int this, int a2); int __thiscall sub_48DA00(int this, int a2); char __thiscall sub_48DA60(void *this, unsigned __int8 *a2, int a3); int __thiscall sub_48DC40(int this, int a2, int a3); int __stdcall sub_48DCD0(int a1, int a2, int a3, void *a4, int a5, int a6, int a7); int __thiscall sub_48DE90(void *this, int a2); int __stdcall sub_48DF50(const char *a1, int a2, int a3, void *a4, int a5, int a6, int a7); int __thiscall sub_48E120(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_48E340(void *this, int a2, int a3, int a4, int a5, int a6); void __stdcall sub_48E550(void *a1); int __thiscall sub_48E5A0(void *this, int a2, int a3); int __thiscall sub_48E8A0(int this, int a2, void *a3, int a4); int __thiscall sub_48EA50(void *this, int a2, int a3, void *a4, int a5, int a6, int a7); int __thiscall sub_48EBD0(int this, int a2, int a3, int a4); int __thiscall sub_48ECA0(void *this, int a2); // void __userpurge sub_48EDF0(int a1, int a2, int a3, int a4, int a5); void __thiscall sub_48F320(int this); int __thiscall sub_48F380(int this); bool __thiscall sub_48F450(void *this, int a2); signed int __thiscall sub_48F470(void *this, unsigned int *a2); char __thiscall sub_48F4A0(void *this, unsigned __int16 a2, unsigned __int8 *a3); bool __thiscall sub_48F570(int this, int a2); int __thiscall sub_48F5A0(int this, int a2, const char *a3, int a4); int __thiscall sub_48F5E0(int this, int a2, const char *a3, int a4); int __thiscall sub_48F620(int this, int a2, const char *a3, int a4); void __thiscall sub_48F660(void *this); int __thiscall sub_48F670(int this); signed int __thiscall sub_48F680(void *this, int a2); int __thiscall sub_48F6E0(int this); signed __int16 __thiscall sub_48F790(void *this, int a2, int a3); char __stdcall sub_48F9E0(int a1, int a2); int __thiscall sub_48FAD0(void *this, int a2, int a3); void *__thiscall sub_48FBB0(void *this, char a2); int __thiscall sub_48FBE0(void *this, int a2); int __thiscall sub_48FCC0(void *this, int a2, __int16 a3); int loc_48FDA0(); // weak int __stdcall sub_48FDE0(int a1, __int16 a2); _UNKNOWN *__cdecl sub_48FEA0(); char *__thiscall sub_48FEB0(void *this); int __thiscall sub_48FEC0(int this); char *__thiscall sub_48FF10(void *this); int __thiscall sub_48FF40(void *this, __int16 a2, int a3, char a4); int __thiscall sub_48FFC0(void *this); char __thiscall sub_490CA0(void *this, int a2, int a3, int a4); char __thiscall sub_490F00(void *this, int a2); char __thiscall sub_491260(int this, char a2); int __thiscall sub_4912F0(int this, int a2); int __stdcall sub_491330(int a1, int a2); // FILE *__usercall sub_4913E0(int a1, int a2, __int16 a3); void *__thiscall sub_491450(void *this, const char *a2); void *__thiscall sub_491500(void *this, const char *a2); void *__thiscall sub_4915B0(void *this, char a2); void *__thiscall sub_4915E0(void *this, char a2); int __thiscall sub_491610(int this, int a2); int __thiscall sub_491690(void *this, int a2, int a3, int a4); int __stdcall sub_491840(int a1, int a2); int __thiscall sub_491930(void *this, int a2, int a3, int a4); int __stdcall sub_491F70(int a1, int a2); int __thiscall sub_492060(void *this, int a2); int __thiscall sub_492200(void *this, int a2); int __thiscall sub_4923A0(void *this, signed int a2); void __thiscall sub_492410(void *this); void __thiscall sub_492520(void *this); void *__thiscall sub_492650(void *this, const char *a2); void *__thiscall sub_492700(void *this, char a2); void *__thiscall sub_492730(void *this, char a2); int __cdecl sub_492760(int a1, int a2, int a3); int __stdcall sub_4927C0(unsigned int a1); int __stdcall sub_492820(unsigned int a1); int __cdecl sub_492880(int a1, int a2, int a3); int __cdecl sub_4928C0(int a1, int a2, int a3); int __stdcall sub_4928F0(int a1, int a2); unsigned int __thiscall sub_492BD0(int this, unsigned int a2); // void __usercall sub_492C87(int a1); int __thiscall sub_492CA0(int this, int a2); // void __usercall sub_492D62(int a1); int __thiscall sub_492D80(int this, int a2); // void __usercall sub_492E2F(int a1); int __cdecl sub_492E50(int a1, int a2, int a3); int __cdecl sub_492F10(int a1, int a2, int a3); int __cdecl sub_492FC0(int a1, int a2); void __thiscall sub_493000(int this); int __thiscall sub_493040(int this, unsigned int a2); // void __usercall sub_49312B(int a1); int __thiscall sub_493150(int this, int a2); // void __usercall sub_493213(int a1); int __thiscall sub_493230(int this, int a2); int __thiscall sub_493300(int this, unsigned int a2); int __thiscall sub_4933D0(int this, int a2); int *__thiscall sub_4934A0(void *this, const char *a2); void __cdecl sub_493620(int a1, int a2); void __cdecl sub_493680(int a1, int a2); int __cdecl sub_493710(const void *a1, const void *a2, int a3); unsigned int __thiscall sub_4937E0(int this, unsigned int a2); // void __usercall sub_4938AB(int a1); unsigned int __thiscall sub_4938D0(int this, int a2); int __thiscall sub_493930(int this, const void *a2); int __thiscall sub_493A20(void *this, int a2); signed int __stdcall sub_4942D0(int a1); int __stdcall sub_494360(int a1, int a2); int __thiscall sub_494440(int this, int a2); FILE *__thiscall sub_4945A0(void *this, unsigned __int16 a2); int __cdecl sub_4945F0(int a1, int a2); void *__thiscall sub_494600(void *this); char __stdcall sub_494610(int *a1); int __thiscall sub_494700(void *this, int a2, int a3, int a4); int __thiscall sub_494710(int this, int a2); char __thiscall sub_494720(void *this, const void *a2); char __thiscall sub_494760(void *this, void *a2); char __thiscall sub_4947B0(void *this, void *a2); int loc_494800(); // weak void *__thiscall sub_494820(void *this, char a2); int __thiscall sub_494860(void *this); int __thiscall sub_494970(void *this, int a2, int a3); int loc_494AA0(); // weak char __thiscall sub_494AB0(void *this, int a2, int a3); char __thiscall sub_494BA0(void *this, int a2); void *__thiscall sub_494C80(void *this, int a2); void __thiscall sub_494D30(void *this); char __thiscall sub_494DD0(void *this, int a2, int a3, int a4); int __thiscall sub_494EA0(void *this, int a2); int __cdecl sub_494F70(); int __thiscall sub_495020(void *this); int __thiscall sub_4950D0(void *this); int __thiscall sub_495150(void *this); int __thiscall sub_4951B0(void *this); int __thiscall sub_495210(void *this); int __thiscall sub_4952E0(void *this); int __stdcall sub_495340(int a1, int a2); int __thiscall sub_495390(void *this, const void *a2, char a3); int __stdcall sub_495460(int a1); int __thiscall sub_4954B0(void *this, int a2); void __thiscall sub_495530(void *this, unsigned __int16 a2); void *__thiscall sub_495580(void *this, const void *a2, unsigned __int16 a3); int __thiscall sub_4955E0(void *this, int a2); int __thiscall sub_495710(void *this); int __thiscall sub_495E20(void *this, int a2, int a3, int a4); void __thiscall sub_496020(int this); signed int __thiscall sub_496040(void *this, int a2); int __thiscall sub_496100(void *this); int __thiscall sub_496220(void *this, int a2); int __thiscall sub_496290(void *this, int a2); int __thiscall sub_496300(void *this, int a2); _UNKNOWN *__cdecl sub_496360(); int __thiscall sub_4963B0(void *this); int __stdcall sub_4965D0(int a1, int a2); char __thiscall sub_496720(void *this, const void *a2); int loc_496760(); // weak int __stdcall sub_496770(int a1, int a2); char __thiscall sub_4968A0(int this, unsigned __int16 a2); char __thiscall sub_496A20(int this, unsigned __int16 a2); void *__thiscall sub_496BA0(void *this, char a2); int __stdcall sub_496C40(int a1, int a2); signed int __thiscall sub_497E30(int this, int a2); int __thiscall sub_497ED0(void *this, int (__stdcall *a2)(_DWORD), int a3); int __thiscall sub_497FF0(void *this); char __thiscall sub_498120(int this, int a2); char __thiscall sub_4981C0(int this, int a2, char a3, char a4); char __thiscall sub_4982C0(int this, int a2); char __stdcall sub_498390(int a1, int a2); void *__thiscall sub_4983D0(void *this, int a2); int __stdcall sub_4984D0(int a1, int a2); int __thiscall sub_4989A0(void *this, int (__stdcall *a2)(_DWORD)); int __thiscall sub_498AA0(int this, signed int a2); char __thiscall sub_498B50(void *this, int a2); char __thiscall sub_498B90(void *this, int a2); char __thiscall sub_498BD0(int this, void *a2); char __thiscall sub_498C20(int this, void *a2); int __thiscall sub_498C70(int this); void *__thiscall sub_498C90(void *this, char a2); int __thiscall sub_498CD0(int this); int __thiscall sub_498E60(int this); char __thiscall sub_498E80(int this, unsigned int a2); int __cdecl sub_498ED0(int a1, int a2, int a3); int __thiscall sub_498F00(void *this, int a2); int __thiscall sub_498FE0(void *this, int a2, int a3); int __stdcall sub_4990E0(int a1, int a2, int a3); int __thiscall sub_499110(void *this, int a2); int __thiscall sub_499220(void *this, int a2, int a3, __int16 a4, int a5); int __cdecl sub_499390(int a1, int a2, int a3); int __cdecl sub_4993D0(int a1, unsigned int a2); int __cdecl sub_499480(int a1, int a2, int a3); int __thiscall sub_499530(int this, unsigned int a2); // void __usercall sub_49961B(int a1); int __thiscall sub_499640(int this, int a2, int a3, int a4); int __thiscall sub_4996A0(int this, int a2); int __thiscall sub_499720(void *this, int a2); int __thiscall sub_499810(int this, unsigned int a2); int __thiscall sub_4998C0(int this, unsigned int a2); int __thiscall sub_499990(void *this, int a2); void *__thiscall sub_499A80(void *this, const char *a2); void *__thiscall sub_499B30(void *this, char a2); void *__thiscall sub_499B60(void *this, int a2); int __thiscall sub_499B70(int this, __int16 a2); int __thiscall sub_499BC0(int this, int a2); void __stdcall sub_499C30(int a1); char __thiscall sub_499E90(int this, int a2); char __thiscall sub_499ED0(void *this, int a2); char *__thiscall sub_499F20(char *this, const char *a2); char __thiscall sub_499F50(void *this, int a2, __int16 a3, int a4, int a5); int __thiscall sub_49A6E0(int this, int a2); int __stdcall sub_49A730(int a1, int a2); signed int __thiscall sub_49A8E0(void *this); void __cdecl sub_49A990(); void *__thiscall sub_49B0D0(void *this, const char *a2); void *__thiscall sub_49B170(void *this, const char *a2); void *__thiscall sub_49B210(void *this, char a2); void *__thiscall sub_49B240(void *this, char a2); char __thiscall sub_49B270(void *this, int a2, int a3, int a4); int __thiscall sub_49B8A0(void *this, int a2); int __thiscall sub_49BA10(void *this); int __thiscall sub_49BDE0(int this, __int16 a2); int __thiscall sub_49BF00(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_49C440(int this); void __thiscall sub_49C530(int this); int __thiscall sub_49C640(void *this); int sub_49CB20(); // weak int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd); bool __cdecl sub_49CE20(); void __cdecl sub_49CE30(); int __thiscall sub_49CE40(int this); int __thiscall sub_49CE60(void *, FILE *); // idb FILE *__thiscall sub_49CF70(void *this, int a2); void __thiscall sub_49D0A0(int this); char __thiscall sub_49D140(void *this, int a2, int a3); char __thiscall sub_49D1B0(void *this, int a2, int a3); int __thiscall sub_49D220(int this); void __thiscall sub_49D2B0(void *); // idb char __thiscall sub_49D2C0(void *this, int a2, int a3, int a4); void __thiscall sub_49D420(void *this, int a2); char __thiscall sub_49D470(void *this, int a2, int a3, int a4); int __thiscall sub_49D5F0(void *this, int a2, int a3, int a4); int __thiscall sub_49DB80(int this, int a2, int a3, int a4, int a5); char __thiscall sub_49DC80(void *this, int a2, int a3, int a4, int a5); char __thiscall sub_49DDA0(void *this, int a2, int a3, int a4); char __thiscall sub_49DEA0(void *this, int a2, int a3); int __thiscall sub_49DF60(int this); int __thiscall sub_49DF80(int this, int a2, int a3); char __thiscall sub_49E0B0(int this, int a2, const char *a3); int __thiscall sub_49E250(int this); int loc_49E300(); // weak void *__thiscall sub_49E320(void *this, const char *a2); void *__thiscall sub_49E3D0(void *this, char a2); int __thiscall sub_49E410(int this, int a2); void *__thiscall sub_49E480(void *this, char a2); int loc_49E4B0(); // weak char __thiscall sub_49E4C0(void *this); char *__thiscall sub_49E650(char *this, const char *a2); int __thiscall sub_49E6B0(void *this); int __thiscall sub_49E7D0(void *this, int a2, int a3, int a4); char __thiscall sub_49E860(void *this, int a2, int a3); char __thiscall sub_49E990(void *this, int a2, int a3); char __thiscall sub_49EAD0(void *this, int a2, int a3); int __thiscall sub_49ECC0(void *this); int __thiscall sub_49EE10(void *this); int __thiscall sub_49EFB0(void *this, char a2); int __thiscall sub_49F0C0(void *this, int a2, int a3, int a4); char __thiscall sub_49F440(void *this, int a2); char __thiscall sub_49F480(void *this, int a2); char __thiscall sub_49F4C0(int this, int a2); char __thiscall sub_49F510(int this, int a2); void __thiscall sub_49F560(void *this); char __thiscall sub_49F680(int this, unsigned __int16 a2); void *__thiscall sub_49F800(void *this, char a2); int __thiscall sub_49F830(void *this, const char *a2); int __stdcall sub_49FA00(const char *a1); char __thiscall sub_49FAB0(void *this, char *a2); int __thiscall sub_49FD90(void *this, const char *a2); char __thiscall sub_49FFB0(void *this, const char *a2, int a3); int __thiscall sub_4A0170(int this); void *__thiscall sub_4A0370(void *this, const char *a2); void *__thiscall sub_4A0420(void *this, char a2); int __thiscall sub_4A0450(void *this); signed int __thiscall sub_4A0510(int this, unsigned __int16 a2, unsigned int *a3, int a4); int __thiscall sub_4A0730(int this, unsigned __int16 a2); void *__thiscall sub_4A07F0(void *this, const char *a2); void *__thiscall sub_4A08A0(void *this, char a2); int __thiscall sub_4A08D0(int this); int __thiscall sub_4A0BE0(void *this); int __cdecl sub_4A0CB0(int a1); int __cdecl sub_4A0CD0(int a1); void *__thiscall sub_4A0CF0(void *this); void *__thiscall sub_4A0D50(void *this, const char *a2); void *__thiscall sub_4A0E00(void *this, const char *a2); void *__thiscall sub_4A0EA0(void *this, char a2); void *__thiscall sub_4A0ED0(void *this, char a2); void *__thiscall sub_4A0F00(void *this); int __thiscall sub_4A0F60(int this, int a2); int __thiscall sub_4A0FC0(int this, int a2); int __thiscall sub_4A1020(int this, int a2); int __thiscall sub_4A1080(int this, int a2); char __thiscall sub_4A10E0(int this, unsigned int a2); int __thiscall sub_4A1130(int this, int a2, char a3, int a4, void *a5); int __cdecl sub_4A1360(int a1, int a2, int a3); int __thiscall sub_4A1390(void *this, int a2, int a3); void __stdcall sub_4A15E0(void *a1); int __thiscall sub_4A1620(int this, int a2, void *a3, int a4); int __thiscall sub_4A1700(int this, int a2, int a3); int __thiscall sub_4A1770(int this, int a2, int a3); int __thiscall sub_4A17E0(int this); int __thiscall sub_4A1830(void *this, int a2); int __thiscall sub_4A18B0(int this, __int16 a2); int __stdcall loc_4A18C4(__int16); // weak char __thiscall sub_4A18F0(int this, unsigned int a2, __int16 a3); int __thiscall sub_4A1960(int this, int a2, int a3, int a4); int __thiscall sub_4A1A00(int this, int a2); // void __usercall sub_4A1AAC(int a1); char __thiscall sub_4A1AC0(void *this); void __thiscall sub_4A1C80(int this); int __cdecl sub_4A1CE0(int a1, int a2, int a3); int __thiscall sub_4A1D10(int this); int __thiscall sub_4A1D80(int this, int a2, void *a3, int a4); char __thiscall sub_4A1E70(void *this); void __thiscall sub_4A20A0(int this); int __thiscall sub_4A2100(void *this, unsigned int a2, int a3, int a4); int __thiscall sub_4A21A0(int this, __int16 a2); int __cdecl sub_4A2220(int a1, int a2); void *__thiscall sub_4A2240(int this, __int16 a2); char __stdcall sub_4A22A0(int a1, int a2, int a3, int a4, int a5, signed int *a6); int __thiscall sub_4A2470(void *this); FILE *__thiscall sub_4A25D0(int this, __int16 a2, int a3, char a4); FILE *__thiscall sub_4A2710(int this, __int16 a2, int a3); int __thiscall sub_4A27D0(void *this); void __thiscall sub_4A27E0(int this, int a2); void __thiscall sub_4A28A0(void *this, void *a2); int __thiscall sub_4A2CF0(int this); void *__thiscall sub_4A2D20(void *this); int __stdcall sub_4A2E10(int a1, int a2, __int16 a3, int a4); int __thiscall sub_4A2FE0(void *this, int a2, int a3); void *__thiscall sub_4A3120(void *this, int a2); void *__thiscall sub_4A32E0(void *this, int a2); int __stdcall sub_4A34A0(int a1, int a2); char __thiscall sub_4A3550(void *this, int a2, int a3); char __thiscall sub_4A35C0(void *this, int a2, int a3); char __thiscall sub_4A3630(void *this, int a2, int a3); char __thiscall sub_4A36A0(void *this, int a2, int a3); char __thiscall sub_4A3710(void *this, int a2); int __thiscall sub_4A3830(void *this); int __thiscall sub_4A3A10(void *this, int a2); // int loc_4A3BA0(); weak char __thiscall sub_4A3BB0(void *this, void *a2, int a3); int __thiscall sub_4A3C60(void *this); char __thiscall sub_4A3D30(void *this, int a2, int a3, int a4); int __thiscall sub_4A3DE0(void *this, int a2, _UNKNOWN *a3); int __thiscall sub_4A3ED0(void *this, int a2, int a3); int __thiscall sub_4A3F90(void *this); int __thiscall sub_4A4070(void *this); int __thiscall sub_4A4140(void *this, int a2); int __stdcall sub_4A44A0(int a1, int a2); int __stdcall sub_4A4610(int a1, int a2); signed int __thiscall sub_4A4700(void *this, int a2); // signed int __userpurge sub_4A4850(int a1, double a2, int a3); signed int __thiscall sub_4A4A40(void *this, int a2); int __thiscall sub_4A4BD0(void *this, int a2); int __thiscall sub_4A4D70(void *this, int a2, int a3, int a4); char __stdcall sub_4A4F10(int a1); char __thiscall sub_4A4F60(void *this, int a2); char __thiscall sub_4A5030(void *this, int a2); char __stdcall sub_4A5120(int a1); int __stdcall sub_4A5170(int a1, int a2); int __thiscall sub_4A51C0(void *this, int a2, int a3); int __stdcall sub_4A5390(int a1, int a2, int a3); int __thiscall sub_4A5400(void *this, int a2, int a3, int a4); int __thiscall sub_4A54B0(void *this, int a2); char __stdcall sub_4A5680(int a1); int __cdecl sub_4A56D0(); int __thiscall sub_4A5720(void *this); int __thiscall sub_4A5780(void *this, void *a2); int __thiscall sub_4A5860(void *this, void *a2); int __thiscall sub_4A5920(void *this, void *a2); int __thiscall sub_4A5C20(void *this, void *a2); int __thiscall sub_4A68D0(void *this, int a2, int a3, __int16 a4, int a5, int a6); // char __userpurge sub_4A6D00(double a1, int a2, int a3, int a4); void *__thiscall sub_4A6FF0(void *this, int a2, int a3); int __thiscall sub_4A7180(void *this, int a2, int a3); char __thiscall sub_4A73B0(void *this, int a2); void __thiscall sub_4A7670(void *this); int __thiscall sub_4A7780(void *this, int a2); int __stdcall sub_4A7850(int a1); bool __thiscall sub_4A7860(int this, int a2); signed int __thiscall sub_4A7880(int this, unsigned int *a2); int __thiscall sub_4A78B0(int this, int a2); int __thiscall sub_4A78D0(void *this, int a2, int a3, int a4); char __thiscall sub_4A7980(void *this, int a2); void __thiscall sub_4A79E0(int this); char __thiscall sub_4A7A00(void *this, int a2); char __thiscall sub_4A7A50(int this, unsigned __int16 a2); int __thiscall sub_4A7BD0(int this); void *__thiscall sub_4A7CD0(void *this, char a2); int __thiscall sub_4A7D10(int this); int __thiscall sub_4A7D80(void *this); signed int __thiscall sub_4A8B20(void *this, int a2, int a3, char a4); int __thiscall sub_4A8ED0(int this); void *__thiscall sub_4A8EF0(void *this); void *__thiscall sub_4A8F10(void *this); void __thiscall sub_4A8F20(int this); void *__thiscall sub_4A8F30(void *this); void __thiscall sub_4A8F50(void *this); bool __stdcall sub_4A8F60(unsigned __int8 a1, unsigned __int8 a2); bool __stdcall sub_4A8F80(int a1); bool __stdcall sub_4A8FD0(int a1, int a2); char __thiscall sub_4A9080(int this); bool __stdcall sub_4A9090(int a1); int __thiscall sub_4A90D0(int this); int __thiscall sub_4A90E0(void *this, int a2, __int16 a3); __int16 __thiscall sub_4A9100(int this, __int16 a2); signed int __stdcall sub_4A9120(int a1, int a2); int __thiscall sub_4A9130(int this, int a2, int a3, unsigned __int16 a4, int a5, int a6, unsigned __int16 a7); void *__thiscall sub_4A9170(void *this, char a2); void *__thiscall sub_4A91A0(void *this, char a2); char __thiscall sub_4A91D0(void *this, int a2, int a3, int a4); char __thiscall sub_4A93D0(void *this, int a2, int a3, int a4); int __thiscall sub_4A9410(int this, unsigned int a2); int __thiscall sub_4A9460(void *this, const void *a2, int a3); int __thiscall sub_4A9560(void *this, const void *a2, int a3); int __cdecl sub_4A9650(); int __thiscall sub_4A96A0(void *this); int __stdcall sub_4A9700(int a1, int a2); int __thiscall sub_4A9750(void *this, const char *a2); int __stdcall sub_4A9990(int a1); int __thiscall sub_4A99E0(void *this, int a2); int __stdcall sub_4A9B00(int a1); int __thiscall sub_4A9B50(void *this, int a2); int __thiscall sub_4A9BC0(void *this, char a2); _UNKNOWN *__stdcall sub_4A9C30(int a1, int a2, int a3); int __thiscall sub_4A9C80(void *this, int a2); int __thiscall sub_4A9F30(void *this, int a2); int __thiscall sub_4AA2E0(void *this, int a2); char __thiscall sub_4AA560(int this, int a2); int __thiscall sub_4AA7A0(void *this, int a2, int a3); char __thiscall sub_4AA8A0(void *this, int a2, char *a3); signed int __thiscall sub_4AA990(void *this, unsigned __int8 a2); unsigned int __thiscall sub_4AAAD0(void *this, int a2, char a3); int __thiscall sub_4AAD70(void *this, int a2); int __thiscall sub_4AB070(int this, int a2, int a3); int __thiscall sub_4AB080(int this, int a2, int a3); int __thiscall sub_4AB0D0(int this, int a2); int __thiscall sub_4AB0E0(int this); char __thiscall sub_4AB130(int this, int a2, int a3, int a4); int __thiscall sub_4AB190(int this, int a2, int a3); char __thiscall sub_4AB1C0(int this, int a2); void __thiscall nullsub_2(void *); // idb void __thiscall sub_4AB1F0(int this); int loc_4AB200(); // weak void *__thiscall sub_4AB210(void *this, int a2, int a3); void *__thiscall sub_4AB2D0(int this, int a2, int a3); void *__thiscall sub_4AB2F0(void *this); int __thiscall sub_4AB3D0(void *this, void *a2); int __thiscall sub_4AB4A0(void *this, int a2); void *__thiscall sub_4AB550(void *this, int a2, int a3); int __thiscall sub_4AB600(void *this); char __thiscall sub_4AB690(void *this, int a2, int a3); int __thiscall sub_4AB7A0(void *this, int a2, int a3); int __thiscall sub_4AB8B0(void *this, int a2); void *__thiscall sub_4AB980(void *this, int a2, int a3); int __thiscall sub_4ABA90(void *this); char __thiscall sub_4ABB20(void *this, int a2, int a3); char __thiscall sub_4ABBD0(void *this, int a2, int a3); int __thiscall sub_4ABD10(void *this); char __thiscall sub_4ABE20(void *this, int a2, int a3, int a4); int __stdcall sub_4ABF50(int a1, int a2); int __thiscall sub_4ABFA0(void *this, int a2, int a3); int __stdcall sub_4AC0A0(int a1, int a2); int __stdcall sub_4AC0F0(int a1, int a2); int __thiscall sub_4AC140(void *this, int a2, int a3); int __stdcall sub_4AC250(int a1, int a2); int __thiscall sub_4AC2A0(void *this, int a2); int __thiscall sub_4AC370(void *this, int a2); int __thiscall sub_4AC640(void *this, int a2); int __thiscall sub_4ACAA0(void *this); int __thiscall sub_4ACB60(void *this, int a2); int __thiscall sub_4ACD50(void *this, int a2, int a3); char __thiscall sub_4AD0D0(void *this, int a2, int a3, int a4); int __thiscall sub_4AD1F0(void *this, int a2, int a3); void *__thiscall sub_4AD3C0(void *this, int a2, int a3); void *__thiscall sub_4AD630(void *this, int a2, int a3); void *__thiscall sub_4AD800(void *this, int a2, int a3); int __thiscall sub_4AD8E0(int this); signed int __cdecl sub_4AD8F0(); int __thiscall sub_4AD900(void *this, int a2); int __thiscall sub_4AD9D0(void *this, int a2); int __thiscall sub_4ADAA0(void *this, int a2); int __thiscall sub_4ADB70(void *this, int a2); int __thiscall sub_4ADC40(void *this, int a2); int __thiscall sub_4ADD10(void *this, int a2); int __thiscall sub_4ADDE0(void *this, int a2); int __thiscall sub_4ADEB0(int this, int a2); signed int __thiscall sub_4ADF40(void *this); int __thiscall sub_4AE040(void *this, int a2); int __thiscall sub_4AE160(void *this, int a2); int __thiscall sub_4AE290(void *this, int a2); int __thiscall sub_4AE3C0(void *this, int a2); int __thiscall sub_4AE4F0(void *this, int a2); int __thiscall sub_4AE620(void *this, int a2); int __thiscall sub_4AE750(void *this, int a2); void __thiscall sub_4AE9D0(void *this, int a2); bool __thiscall sub_4AF3D0(void *this, int a2); int __cdecl sub_4AF450(int a1); void *__thiscall sub_4AF470(void *this, char a2); int __cdecl sub_4AF4A0(int a1, int a2, int a3); int __thiscall sub_4AF4D0(int this, __int16 a2); int __cdecl sub_4AF520(int a1, int a2, int a3); void __stdcall sub_4AF550(void *a1); int __thiscall sub_4AF5B0(void *this, int a2, int a3); int __thiscall sub_4AF820(int this, int a2, void *a3, int a4); int __thiscall sub_4AF910(int this, int a2, int a3, int a4); int __thiscall sub_4AF9D0(int this); int __thiscall sub_4AFB10(void *this, int a2); void __thiscall sub_4AFBE0(int this); signed int __thiscall sub_4AFC50(void *this); int __thiscall sub_4AFED0(int this); void __thiscall sub_4AFF90(void **this); int __thiscall sub_4AFFB0(void *this); int __thiscall sub_4B0020(void *this, unsigned __int16 a2); int __thiscall sub_4B00F0(void *this, unsigned __int16 a2); int __thiscall sub_4B01F0(void *this); char __thiscall sub_4B0220(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall sub_4B03E0(int this); int __thiscall sub_4B03F0(int this, int a2); int __thiscall sub_4B0520(int this, __int16 a2, __int16 a3); char *__thiscall sub_4B0590(int this, __int16 a2, int a3); void *__thiscall sub_4B0600(void *this); void __thiscall sub_4B0610(void *); // idb signed int __stdcall sub_4B0620(int a1, int a2, int a3, int a4, int a5, int a6, int a7); signed int __stdcall sub_4B0630(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14); int __thiscall sub_4B0640(int this); int __thiscall sub_4B0660(int this, int a2, int a3, int a4); int __thiscall sub_4B0680(int this, int a2); int __thiscall sub_4B0790(int this, int a2, int a3, int a4, int a5, signed int a6); void __thiscall sub_4B0800(int this, int a2); char __thiscall sub_4B0890(int this); char __thiscall sub_4B08C0(int this); char __thiscall sub_4B08F0(int this); int __thiscall sub_4B0920(void *this, __int16 a2, __int16 a3, int a4); int __thiscall sub_4B09A0(int this, __int16 a2, int a3, int a4); char *__thiscall sub_4B0A00(void *this, __int16 a2, unsigned __int16 a3, int a4); void *__thiscall sub_4B0A20(void *this); int __cdecl sub_4B0A90(int a1, int a2); int __thiscall sub_4B0AD0(int this); int loc_4B0AE0(); // weak char __thiscall sub_4B0B00(void *this, const void *a2); char __thiscall sub_4B0B40(void *this, void *a2); char __thiscall sub_4B0B90(void *this, void *a2); void *__thiscall sub_4B0C00(void *this, char a2); signed int __thiscall sub_4B0C40(void *this, int a2, int a3, int a4, int a5, int a6, __int16 a7, char a8); signed int __thiscall sub_4B0E80(void *this, int a2, int a3, int a4, int a5, signed int a6, int a7, int a8, __int16 a9, char a10); int __cdecl sub_4B1080(); int __thiscall sub_4B10C0(void *this); int __thiscall sub_4B1120(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_4B12A0(void *this, int a2); void __thiscall sub_4B1330(int this); int __thiscall sub_4B13A0(void *this, int a2); char __thiscall sub_4B1450(int this, int a2, int a3); // int loc_4B1470(); weak char __thiscall sub_4B1480(void *this, int a2, int a3); int __thiscall sub_4B1650(void *this, int a2, int a3, char a4, int a5); int __thiscall sub_4B17C0(void *this, unsigned __int16 a2); int __thiscall sub_4B18A0(void *this, unsigned __int16 a2); int __thiscall sub_4B1980(int this, unsigned __int16 a2); int __thiscall sub_4B19C0(int this, unsigned __int16 a2); int __thiscall sub_4B1A40(void *this, int a2, int a3, int a4, int a5, int a6, int a7); int __thiscall sub_4B1B20(void *this, int a2); int __thiscall sub_4B1BA0(void *this); int __thiscall sub_4B1D50(void *this); void __thiscall sub_4B1DD0(void *this, char *a2); char __thiscall sub_4B1FA0(void *this, int a2, int a3); int __stdcall sub_4B2170(unsigned int a1); char __thiscall sub_4B21D0(void *this, const void *a2); int __thiscall sub_4B2210(int this, int a2); char __thiscall sub_4B2370(int this, unsigned int a2); int __cdecl sub_4B23D0(int a1, int a2, int a3); signed __int16 __thiscall sub_4B2410(void *this, int a2); void *__thiscall sub_4B26F0(void *this, char a2); char __thiscall sub_4B2780(int this, char a2); __int16 __thiscall sub_4B27E0(int this); char __thiscall sub_4B2830(void *this, int a2, __int16 a3, int a4, int a5); int __thiscall sub_4B2940(void *this); char __thiscall sub_4B2A90(void *this, int a2, int a3); char __thiscall sub_4B2CA0(void *this, int a2); char __thiscall sub_4B2CE0(void *this, int a2); char __thiscall sub_4B2D20(int this, int a2); char __thiscall sub_4B2D70(int this, int a2); char __thiscall sub_4B2DC0(int this, unsigned __int16 a2); int __thiscall sub_4B2F40(void *this, int a2, int a3); int __thiscall sub_4B3180(void *this, int a2); char __thiscall sub_4B3240(int this, unsigned __int16 a2); int __cdecl sub_4B33C0(int a1, int a2, int a3); int __cdecl sub_4B3400(int a1, int a2, int a3); int __thiscall sub_4B3430(int this); int __thiscall sub_4B3590(void *this, int a2, int a3, int a4, int a5); void *__thiscall sub_4B36A0(void *this, char a2); void *__thiscall sub_4B36E0(void *this); int __stdcall sub_4B3810(int a1, int a2, int a3); signed int __thiscall sub_4B3840(void *this, int a2, int a3, int a4, signed int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15); signed int __thiscall sub_4B3E10(void *this, int a2, int a3, int a4, signed int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15); signed int __thiscall sub_4B3F50(void *this, int a2, int a3, int a4, signed int a5, __int16 a6, int a7, int a8, int a9, char a10, int a11, int a12); signed int __thiscall sub_4B4250(void *this, int a2, int a3, int a4, signed int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15); int __thiscall sub_4B4330(int this, unsigned int a2); // void __usercall sub_4B4415(int a1); int __thiscall sub_4B4430(int this, int a2); // void __usercall sub_4B44F0(int a1); int __thiscall sub_4B4510(int this, int a2); int __thiscall sub_4B4590(int this, int a2); int __thiscall sub_4B46E0(void *this, int a2); bool __thiscall sub_4B47B0(void *this, int a2, __int16 a3); int __thiscall sub_4B48C0(int this, unsigned int a2); char __thiscall sub_4B4950(void *this, int a2, int a3); char __thiscall sub_4B4C30(void *this, int a2, int a3); int __cdecl sub_4B4CF0(int a1, int a2, int a3); int __cdecl sub_4B4D30(); void __cdecl sub_4B4DE0(int a1, int a2); int __cdecl sub_4B4E10(int a1, int a2, int a3); int __thiscall sub_4B4EC0(int this, unsigned int a2); // void __usercall sub_4B4FAB(int a1); int __thiscall sub_4B4FD0(int this, int a2, int a3, int a4); int __thiscall sub_4B5030(int this, int a2); int __thiscall sub_4B50B0(void *this, int a2); int __thiscall sub_4B51A0(int this, unsigned int a2); char __thiscall sub_4B5270(void *this, unsigned __int16 a2); int __thiscall sub_4B5360(void *this, int a2, __int16 a3, int a4); char __thiscall sub_4B54E0(void *this, int a2, int a3); char __thiscall sub_4B57C0(void *this, int a2, __int16 a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14); int __thiscall sub_4B59A0(void *this, int a2, int a3); void *__thiscall sub_4B5DE0(void *this, int a2, int a3, int a4, __int16 a5, int a6, int a7, int a8, void *a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17); void *__thiscall sub_4B5FD0(void *this, int a2, int a3, int a4, __int16 a5, int a6, int a7, int a8, void *a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17); void __thiscall sub_4B6110(int this); char __thiscall sub_4B6130(void *this, int a2); void *__thiscall sub_4B6180(void *this, char a2); int __thiscall sub_4B61C0(void *this, int a2); int loc_4B62F0(); // weak int __thiscall sub_4B6300(void *this, int a2); char __thiscall sub_4B6400(int this, unsigned __int16 a2); int __thiscall sub_4B6580(void *this, int a2, __int16 a3, int a4); int __thiscall sub_4B66C0(int this, signed int a2); int __thiscall sub_4B6770(int this); signed int __thiscall sub_4B6790(void *this); int __thiscall sub_4B67A0(int this); char __thiscall sub_4B67B0(int this); int __cdecl sub_4B67C0(int a1); void *__thiscall sub_4B67E0(void *this); char __thiscall sub_4B6840(void *this, int a2); int __thiscall sub_4B6A50(void *this, int a2); char __thiscall sub_4B6AD0(void *this, signed int *a2, int a3, int a4, int a5); int __thiscall sub_4B6CE0(int this); int __thiscall sub_4B6D40(int this, int a2); int __thiscall sub_4B6DB0(void *this, int a2); void *__cdecl sub_4B6DD0(const void *a1, const void *a2, void *a3); int __thiscall sub_4B6E10(int this, int a2, int a3); void *__thiscall sub_4B6EA0(void *this, int a2); int __thiscall sub_4B6F10(int this, int a2); // void __usercall sub_4B6FD2(int a1); int __thiscall sub_4B6FF0(void *this, int a2); void __thiscall sub_4B70E0(int this, const void *a2); int __thiscall sub_4B7150(void *this, int a2); int __thiscall sub_4B7240(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_4B7480(void *this, int a2, int a3); void __stdcall sub_4B76F0(void *a1); int __thiscall sub_4B7750(int this, int a2, void *a3, int a4); int __thiscall sub_4B7910(void *this, int a2, int a3); int __thiscall sub_4B7BC0(int this, int a2, int a3, int a4); void __thiscall sub_4B7C80(void *this, int a2); int __thiscall sub_4B7E20(int this); void *__thiscall sub_4B7ED0(int this); int __thiscall sub_4B7F20(int this, __int16 a2); int __thiscall sub_4B7F90(int this, int a2); int __thiscall sub_4B7FB0(int this, int a2, int a3, int a4); int __thiscall sub_4B7FF0(int this, int a2, int a3, int a4); signed int __thiscall sub_4B8050(int this); int __thiscall sub_4B8070(int this); void __thiscall sub_4B8080(void *this); void *__thiscall sub_4B8090(void *this); void *__thiscall sub_4B80A0(void *this); void *__thiscall sub_4B80B0(void *this); void *__thiscall sub_4B80C0(void *this); void __thiscall sub_4B8130(int this); void *__thiscall sub_4B81A0(void *this); void *__thiscall sub_4B81B0(void *this); void *__thiscall sub_4B81C0(void *this); void *__thiscall sub_4B81D0(void *this); void *__thiscall sub_4B81E0(void *this); int __thiscall sub_4B81F0(int this); void *__thiscall sub_4B8200(void *this); int __stdcall sub_4B8210(int a1); int __stdcall sub_4B8240(int a1); int __thiscall sub_4B8250(int this); int __thiscall sub_4B8270(void *this, int a2); int __stdcall sub_4B8310(void *a1, int a2); int __stdcall sub_4B84A0(int a1); void *__thiscall sub_4B84F0(void *this, int a2); void *__thiscall sub_4B85F0(void *this, int a2); void *__thiscall sub_4B8720(void *this, int a2); void *__thiscall sub_4B87F0(void *this); void *__thiscall sub_4B88A0(void *this, int a2, int a3, int a4); void *__thiscall sub_4B8920(void *this, int a2, int a3, int a4); char __stdcall sub_4B8990(int a1, int a2, int a3); char __thiscall sub_4B89E0(void *this, int a2, __int16 a3, int a4); int __thiscall sub_4B8A50(void *this); int __thiscall sub_4B8AC0(int this); int __stdcall sub_4B8B10(void *a1, int a2); void *__thiscall sub_4B8CE0(void *this, int a2); int __thiscall sub_4B8F60(void *this, int a2); void *__thiscall sub_4B9420(void *this, int a2); int __thiscall sub_4B9650(void *this, int a2); int (__stdcall *(**__stdcall sub_4B9750(int a1))[2])(int); int __thiscall sub_4B9910(void *this, int a2); int __thiscall sub_4B9CD0(void *this, int a2); void *__thiscall sub_4BA040(void *this, int a2); int __thiscall sub_4BA160(void *this, int a2, int a3, int a4, int a5, int a6); char __thiscall sub_4BA470(void *this); char __thiscall sub_4BA680(void *this); char __thiscall sub_4BA910(void *this, int a2); char __thiscall sub_4BAB80(int this); void *__thiscall sub_4BAD10(void *this, int a2); int __thiscall sub_4BAF80(void *this, int a2); int __thiscall sub_4BB920(void *this, int a2); void __cdecl sub_4BBB20(void *a1, int a2); int loc_4BBBD0(); // weak int __thiscall sub_4BBC10(int this, unsigned int a2); // void __usercall sub_4BBD0D(int a1); int __thiscall sub_4BBD30(int this, int a2, void *a3, void *a4); int __thiscall sub_4BBDA0(int this, int a2); int __thiscall sub_4BBE20(int this, unsigned int a2); int __thiscall sub_4BBED0(void *this, int a2); void *__thiscall sub_4BC840(void *this); void *__thiscall sub_4BC860(void *this); void *__thiscall sub_4BC8C0(void *this); void __thiscall sub_4BC920(int this); void *__thiscall sub_4BC990(void *this); void __thiscall sub_4BC9B0(void *this); char __thiscall sub_4BC9C0(void *this, int a2, int a3); int loc_4BCA20(); // weak void *__thiscall sub_4BCA40(void *this, char a2); void __thiscall sub_4BCA80(int this); void *__thiscall sub_4BCAF0(void *this, char a2); void *__thiscall sub_4BCB20(void *this, char a2); char __thiscall sub_4BCBA0(int this, int a2, __int16 a3); void *__thiscall sub_4BCC10(void *this, char a2); char __thiscall sub_4BCCA0(int this, unsigned __int16 a2); char __thiscall sub_4BCE20(void *this, int a2); char __thiscall sub_4BCE80(void *this, int a2); char __thiscall sub_4BCEE0(void *this, int a2); char __thiscall sub_4BCF50(void *this, int a2); int __thiscall sub_4BCFE0(int this); unsigned int __thiscall sub_4BD170(int this, int a2); int __thiscall sub_4BD250(void *this, int a2, int a3, int a4); char __stdcall sub_4BD370(int a1, int a2, int a3); int __thiscall sub_4BD480(void *this, int a2); char __stdcall sub_4BD570(int a1, int a2, int a3); int __thiscall sub_4BD660(void *this, int a2); char __thiscall sub_4BD750(void *this, int a2, int a3, int a4, int a5, int (__fastcall *a6)(_DWORD, _DWORD, _DWORD, _DWORD)); char __stdcall sub_4BD930(int a1, int a2); bool __thiscall sub_4BD980(void *this, int a2, int a3); char __thiscall sub_4BDA50(void *this, int a2, int a3); char __cdecl sub_4BDB50(); bool __thiscall sub_4BDBA0(void *this, int a2, int a3); char __thiscall sub_4BDC70(void *this, int a2, int a3); int __thiscall sub_4BDD80(void *this, char a2); char __thiscall sub_4BE0E0(void *this, int a2, int a3, int a4, int (__fastcall *a5)(_DWORD, _DWORD, _DWORD, _DWORD)); char __thiscall sub_4BE1A0(void *this, int a2, int a3); char __thiscall sub_4BE3E0(void *this); char __thiscall sub_4BE5C0(void *this, int a2, int a3); int __thiscall sub_4BE7E0(void *this, unsigned __int16 a2); unsigned int __thiscall sub_4BE830(int this, unsigned int a2); int __thiscall sub_4BE860(int this, unsigned __int8 *a2); int loc_4BE8B0(); // weak void *__thiscall sub_4BE8C0(void *this, const char *a2); int loc_4BE970(); // weak void *__thiscall sub_4BE980(void *this, const char *a2); int loc_4BEA30(); // weak void *__thiscall sub_4BEA40(void *this, const char *a2); int loc_4BEAF0(); // weak void *__thiscall sub_4BEB00(void *this, const char *a2); void *__thiscall sub_4BEBA0(void *this, char a2); void *__thiscall sub_4BEBD0(void *this, char a2); void *__thiscall sub_4BEC00(void *this, char a2); void *__thiscall sub_4BEC30(void *this, char a2); void *__thiscall sub_4BEC60(void *this, char a2); int __thiscall sub_4BEC90(int this); void __thiscall sub_4BED90(void *this); int __thiscall sub_4BEE40(int this); void __thiscall sub_4BEEC0(int this); int __thiscall sub_4BEEF0(int this); int __thiscall sub_4BEF10(void *this); void __thiscall sub_4BF8C0(int this); int __thiscall sub_4BF960(int this, unsigned __int16 a2, unsigned __int8 a3); char __thiscall sub_4BFA00(int this); int __thiscall sub_4BFA10(int this, unsigned __int8 a2); signed __int16 __thiscall sub_4BFA40(int this); char __thiscall sub_4BFAB0(int this, __int16 a2); void __thiscall sub_4BFAF0(int this); int __thiscall sub_4BFB20(int this); void __thiscall sub_4BFBA0(int this); signed int __thiscall sub_4BFC40(void *this); void *__thiscall sub_4BFF90(void *this, const char *a2); void *__thiscall sub_4C0040(void *this, char a2); int __thiscall sub_4C0070(void *this, unsigned __int16 a2); int __thiscall sub_4C0180(int this, int a2); int __stdcall sub_4C01C0(unsigned int a1); void *__cdecl sub_4C0220(void *a1, void *a2, const void *a3); void *__cdecl sub_4C0250(const void *a1, const void *a2, void *a3); // void *__usercall sub_4C0290(void *result, void *a2, int a3, const void *a4); void *__cdecl sub_4C02C0(const void *a1, const void *a2, void *a3); void *__thiscall sub_4C0300(int this, const void *a2, char *a3, const void *a4); void __thiscall sub_4C05D0(void *this); int __thiscall sub_4C0A40(int this); bool __thiscall sub_4C0A50(int this); void __thiscall sub_4C0A60(int this); bool __thiscall sub_4C0A70(void *this); void __thiscall sub_4C0A80(int this, int a2); int __thiscall sub_4C0AB0(int this, unsigned __int16 a2, int a3); int __thiscall sub_4C0AD0(int this, unsigned __int16 a2, int a3); signed int __thiscall sub_4C0AF0(int this); char __thiscall sub_4C0B10(void *this, __int16 a2); bool __thiscall sub_4C0BC0(int this, int a2, int *a3, int a4); void *__thiscall sub_4C0DA0(void *this); int __thiscall sub_4C0DC0(int this); int __thiscall sub_4C0DD0(int this, int a2); int __cdecl sub_4C0DF0(int a1, int a2); void *__thiscall sub_4C0E10(void *this, int a2, char a3, char a4); char __thiscall sub_4C0E50(void *this, int a2); void *__thiscall sub_4C0FA0(void *this); void __thiscall sub_4C0FC0(int this); void __thiscall sub_4C0FD0(int this, int a2, int a3, int a4, int a5, int a6, unsigned __int8 a7); int __thiscall sub_4C10B0(int this, int a2); signed int __stdcall sub_4C10D0(int a1); int __thiscall sub_4C10E0(int this, unsigned int a2); void *__thiscall sub_4C1110(void *this, char a2, char a3); bool __thiscall sub_4C1150(int this, int a2); void *__thiscall sub_4C11A0(void *this); void __thiscall sub_4C11C0(void *this); int __thiscall sub_4C11D0(int this, int a2, int a3, int a4); int __thiscall sub_4C1200(void *this, int a2, int a3, int a4, int a5); char __thiscall sub_4C12D0(void *this, int a2, int a3, int a4); char __thiscall sub_4C1400(void *this, int a2, int a3, int a4); char __thiscall sub_4C1660(void *this, int a2, int a3, int a4); char __thiscall sub_4C1780(void *this, int a2, int a3, int a4); int __thiscall sub_4C1940(void *this, int a2, int a3); int __thiscall sub_4C19D0(int this, int a2); bool __thiscall sub_4C1A00(int this); FILE *__stdcall sub_4C1A10(int a1, int a2, int a3); int __thiscall sub_4C1A30(int this, unsigned int a2); int __thiscall sub_4C1A50(void *this, int a2, int a3, int a4); int __thiscall sub_4C1BA0(void *this, char a2); int __thiscall sub_4C1CA0(void *this, int a2, int a3, __int16 a4, unsigned __int16 a5, int a6, __int16 a7, __int16 a8); int __thiscall sub_4C1F80(void *this, int a2, int a3, __int16 a4, unsigned __int16 a5, int a6, __int16 a7, __int16 a8); int __thiscall sub_4C2350(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_4C24E0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_4C29E0(void *this, int a2, int a3, int a4); int __thiscall sub_4C2BC0(void *this, int a2, int a3, int a4); int __thiscall sub_4C2E40(void *this, void *a2, int a3, __int16 a4); int __thiscall sub_4C31F0(void *this, void *a2, int a3, int a4); int __stdcall sub_4C3640(int a1, int a2, int a3); int __thiscall sub_4C3730(void *this, int a2, int a3, int a4); int __stdcall sub_4C39C0(int a1); int __stdcall sub_4C3A70(int a1); int __stdcall sub_4C3B20(int a1); int __thiscall sub_4C3BD0(int this, int a2); char __thiscall sub_4C3C20(void *this, int a2); int __thiscall sub_4C3ED0(void *this, int a2, int a3, int a4); int __thiscall sub_4C4020(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4C4110(int this, __int16 a2, char a3); int __thiscall sub_4C4130(void *this, int a2, int a3, int a4); int __thiscall sub_4C43A0(int this, int a2); int __thiscall sub_4C4610(void *this, int a2); void __thiscall sub_4C46F0(int this, int a2); char *__thiscall sub_4C48A0(void *this); int __cdecl sub_4C48B0(int a1, int a2); int __thiscall sub_4C48D0(int this, __int16 a2); int __thiscall sub_4C4930(int this, int a2); int __stdcall sub_4C49C0(int a1); int __stdcall sub_4C49E0(int a1); int __thiscall sub_4C4A20(int this, int a2); int __thiscall sub_4C4A70(int this, int a2); int __thiscall sub_4C4AD0(int this, int a2); signed int __stdcall sub_4C4B20(int a1, int a2, int a3, int a4); signed __int16 __thiscall sub_4C4B40(void *this); signed __int16 __thiscall sub_4C4BC0(void *this); int __thiscall sub_4C4C40(void *this, int a2, int a3); signed __int16 __thiscall sub_4C4C70(int this); __int16 __thiscall sub_4C4CB0(int this); int __thiscall sub_4C4CF0(void *this, int a2, int a3); signed __int16 __thiscall sub_4C4D30(void *this); unsigned __int16 __thiscall sub_4C4D90(void *this); void *__thiscall sub_4C4DE0(void *this, const char *a2); void *__thiscall sub_4C4E80(void *this, char a2); int __thiscall sub_4C4EB0(void *this, int a2); int __thiscall sub_4C5B50(int this); int __thiscall sub_4C5E60(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); int __thiscall sub_4C60C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); char __thiscall sub_4C62B0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14); int __stdcall sub_4C6600(void *a1, unsigned __int16 a2); int __stdcall sub_4C6740(int a1, unsigned __int16 a2); int __stdcall sub_4C6840(int a1, unsigned __int16 a2); int __stdcall sub_4C6940(int a1, unsigned __int16 a2); int __stdcall sub_4C6A40(int a1, unsigned __int16 a2); int __stdcall sub_4C6B40(int a1, unsigned __int16 a2, int a3, int a4); bool __thiscall sub_4C6C40(void *this); int __thiscall sub_4C6D60(void *this); int __thiscall sub_4C6E10(void *this, unsigned __int16 a2); int __stdcall sub_4C6FB0(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_4C7060(void *this, int a2, int a3, const void *a4, __int16 a5, __int16 a6); char __stdcall sub_4C70F0(int a1); char __thiscall sub_4C7140(void *this, int a2); // int __thiscall unknown_libname_1(_DWORD); weak int __thiscall sub_4C72D0(int this, int a2); signed int __thiscall sub_4C72F0(int this); int loc_4C7340(); // weak void *__thiscall sub_4C7360(void *this, char a2); char __thiscall sub_4C73A0(void *this, int a2, int a3); int __stdcall sub_4C74F0(int a1); int __thiscall sub_4C75B0(void *this, int a2); int __stdcall sub_4C76C0(int a1); int __thiscall sub_4C7710(void *this, int a2); int __thiscall sub_4C77F0(void *this, int a2); void *__thiscall sub_4C79C0(void *this, char a2); char __thiscall sub_4C7A50(int this, unsigned __int16 a2); int __thiscall sub_4C7BD0(int this); // char __userpurge sub_4C7D00(int a1, int a2, int a3, int a4); bool __cdecl sub_4C7E4E(); // char __userpurge sub_4C7E63(int a1, int a2); int __thiscall sub_4C7EC0(void *this, int a2); int __stdcall sub_4C7FD0(int a1, int a2); int __thiscall sub_4C8020(void *this, int a2, int a3); char __thiscall sub_4C81E0(void *this, int a2); int __cdecl sub_4C82A0(); int __thiscall sub_4C82F0(void *this); int __thiscall sub_4C8350(int this, unsigned __int16 a2); signed int __thiscall sub_4C8380(int this); unsigned int __thiscall sub_4C83A0(int this); int __thiscall sub_4C83B0(int this); void __thiscall sub_4C83D0(int this); signed int __thiscall sub_4C8410(int this, __int16 a2, int a3, signed int a4); int __thiscall sub_4C84E0(int this, unsigned int a2); int __thiscall sub_4C8510(int this, signed int a2); int __thiscall sub_4C8540(void *this, int a2); int __thiscall sub_4C8660(void *this, int a2); int __stdcall sub_4C8B60(int a1, int a2, char a3, int a4); int __thiscall sub_4C8BF0(void *this, int a2, int a3); int __thiscall sub_4C8DA0(int this); void __thiscall sub_4C8EE0(int this); int __thiscall sub_4C8F40(void *this); int __thiscall sub_4C90E0(void *this, int a2); // int __usercall sub_4C9EE0(int a1, int a2, int a3); int __thiscall sub_4CA070(void *this); int __thiscall sub_4CA980(void *this); int __thiscall sub_4CAA50(void *this); int __thiscall sub_4CAB50(void *this, int a2); void __thiscall sub_4CAF70(int this, int a2, int a3, char a4, int a5); void __thiscall sub_4CB110(int this, int a2, int a3, char a4, int a5); int __thiscall sub_4CB290(void *this); FILE *__stdcall sub_4CB450(int a1, int a2); int __stdcall sub_4CB4A0(int a1, int a2); int __stdcall sub_4CB590(int a1, int a2); int __stdcall sub_4CB640(int a1, int a2); int __stdcall sub_4CB690(int a1, int a2); int __stdcall sub_4CB6E0(int a1, int a2); int __stdcall sub_4CB7D0(unsigned __int16 a1, unsigned __int16 a2); int __stdcall sub_4CB960(unsigned __int16 a1); int __stdcall sub_4CBA50(__int16 a1, int a2); int __stdcall sub_4CBC20(unsigned __int16 a1, int a2); int __stdcall sub_4CBD60(unsigned __int16 a1); int __stdcall sub_4CBE40(unsigned __int16 a1); int __stdcall sub_4CC040(int a1, int a2, int a3, int a4); signed __int16 __stdcall sub_4CC180(int a1); int __stdcall sub_4CC280(int a1, int a2, void *a3, int a4); int __thiscall sub_4CC380(void *this, int a2); int __stdcall sub_4CC5F0(int a1, int a2); int __thiscall sub_4CC790(void *this); int __stdcall sub_4CC900(int a1, int a2); int __stdcall sub_4CCA10(int a1, int a2); int __thiscall sub_4CCB20(int this); int __thiscall sub_4CCB70(void *this); int __stdcall sub_4CCB80(int a1, int a2); int __thiscall sub_4CCC70(void *this, int a2, int a3, int a4); void __thiscall sub_4CCD60(void *this, int a2); FILE *__thiscall sub_4CCDF0(void *this); int __thiscall sub_4CCE50(void *this, int a2, int a3); int __thiscall sub_4CCF70(void *this, int a2, int a3); signed int __thiscall sub_4CD090(int this, int a2); int __thiscall sub_4CD0B0(void *this, int a2, int a3); FILE *__thiscall sub_4CD120(int this, int a2, int *a3, int *a4); void *__thiscall sub_4CD1B0(void *this, int a2, int a3, int a4, int a5); char __thiscall sub_4CD2C0(void *this, int a2); char __thiscall sub_4CD300(void *this, int a2); int __thiscall sub_4CD350(void *this, int a2); char __thiscall sub_4CD380(void *this, int a2); char __thiscall sub_4CD3D0(void *this, int a2); int __thiscall sub_4CD440(int this, unsigned __int16 a2, _DWORD *a3); void *__thiscall sub_4CD4C0(void *this, char a2); void *__thiscall sub_4CD500(void *this, char a2); void *__thiscall sub_4CD550(void *this, char a2); char __thiscall sub_4CD580(void *this, int a2, int a3, int a4); int __thiscall sub_4CD660(void *this, int a2, int a3, int a4, int a5, int a6, unsigned __int16 a7); char __thiscall sub_4CD830(void *this, int a2, int a3, int a4); int loc_4CD910(); // weak char __thiscall sub_4CD920(void *this, int a2, __int16 a3); void *__thiscall sub_4CD990(void *this, int a2); char __thiscall sub_4CDB00(int this, unsigned __int16 a2); void *__thiscall sub_4CDC80(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_4CDDA0(void *this, int a2); void *__thiscall sub_4CDF50(void *this, char a2); char __thiscall sub_4CDFA0(int this, unsigned __int16 a2); int __thiscall sub_4CE120(int this); int __thiscall sub_4CE240(int this); double __thiscall sub_4CE330(void *this); int __thiscall sub_4CE3C0(int this); signed int __thiscall sub_4CE460(void *this, const char *a2); int __thiscall sub_4CE4D0(int this, int a2); int __thiscall sub_4CE510(void *this, const char *a2); signed int __thiscall sub_4CE590(void *this, const char *a2); int __thiscall sub_4CE610(int this, int a2, const char *a3); int __thiscall sub_4CE6A0(int this, int a2, const char *a3); signed int __thiscall sub_4CE730(int this, unsigned __int8 a2); signed int __thiscall sub_4CE770(int this, unsigned __int8 a2, unsigned __int8 a3); int __thiscall sub_4CE920(int this, int a2, int a3, int a4); unsigned int __thiscall sub_4CEB10(int this, int a2); int __thiscall sub_4CEB70(void *this, int a2, int a3, char *a4); char __thiscall sub_4CED50(void *this); char *__stdcall sub_4CFAD0(int a1, const char *a2); char *__stdcall sub_4CFB30(char *a1, int a2); signed int __stdcall sub_4CFBB0(int a1); char __stdcall sub_4CFBD0(int a1, int a2); void __thiscall sub_4CFFD0(void *this, int a2, __int16 a3); void __thiscall sub_4D0040(void *this, int a2, __int16 a3); int __thiscall sub_4D00B0(void *this, __int16 a2, int a3, int a4, int a5, int a6); int __thiscall sub_4D0170(void *this, __int16 a2, int a3, char a4); int __thiscall sub_4D0200(void *this, int a2, int a3, int a4); int __thiscall sub_4D02F0(void *this, int a2, int a3, int a4); FILE *__thiscall sub_4D0520(int this, unsigned __int8 a2, unsigned __int8 a3); int __thiscall sub_4D05F0(int this, char *a2); FILE *__thiscall sub_4D06C0(int this); void __stdcall sub_4D0730(int a1, int a2); int __thiscall sub_4D0A80(void *this, __int16 a2, const char *a3); int __thiscall sub_4D0C40(void *this); void __stdcall sub_4D0D90(int a1, int a2); int __stdcall sub_4D1020(int a1, int a2); int __thiscall sub_4D1160(void *this, int a2, int a3, int a4); bool __thiscall sub_4D1470(int this, int a2); int __thiscall sub_4D14B0(int this); char *__thiscall sub_4D14D0(int this); signed int __thiscall sub_4D1570(int this); char __thiscall sub_4D15A0(void *this, int a2); // bool __userpurge sub_4D1660(int a1, int a2, int a3); char __thiscall sub_4D1880(int this); int __thiscall sub_4D1950(int this, int a2); int __thiscall sub_4D1A00(int this); FILE *__thiscall sub_4D1AB0(int this); int __thiscall sub_4D1AF0(int this, int a2, int a3); // char __usercall sub_4D1B20(int a1, int a2); char __thiscall sub_4D1E70(int this); // char __usercall sub_4D1F20(int a1, int a2, int a3); // char __usercall sub_4D2200(int a1, int a2); int __thiscall sub_4D24D0(void *this, int a2, __int16 a3, int a4); // char __userpurge sub_4D26A0(int a1, int a2, int a3); int __thiscall sub_4D2AC0(void *this); int __thiscall sub_4D2BA0(void *this, int a2, int a3, int a4); void *__thiscall sub_4D2C70(char *this, char a2); int __cdecl sub_4D2CC0(void *a1); void *__thiscall sub_4D39A0(char *this, char a2); int __cdecl sub_4D39F0(void *a1); void *__thiscall sub_4D49A0(char *this, char a2); int __cdecl sub_4D49F0(void *a1); void *__thiscall sub_4D4A40(char *this, char a2); int __cdecl sub_4D4A90(void *a1); void *__thiscall sub_4D4AF0(char *this, char a2); int __cdecl sub_4D4B40(void *a1); void *__thiscall sub_4D5360(char *this, char a2); int __cdecl sub_4D53B0(void *a1); int __fastcall sub_4D55B0(int a1); void __thiscall sub_4D5600(void *this); void *__thiscall sub_4D5650(void *this, char a2); int __thiscall sub_4D5680(int this, int a2); void *__thiscall sub_4D56C0(void *this, int a2); bool __cdecl sub_4D56D0(__int16 a1, int a2, int a3); void *__thiscall sub_4D5720(void *this); int __fastcall sub_4D5730(unsigned int a1); char *__thiscall sub_4D57B0(char *this, const char *a2); char *__thiscall sub_4D57D0(char *this, int a2); signed int __thiscall sub_4D57F0(void *this); int __thiscall sub_4D5840(const char *this, __int16 a2); char __thiscall sub_4D58A0(void *this, int a2); int __thiscall sub_4D58B0(void *this, int a2, char a3); signed __int16 __thiscall sub_4D58C0(const char *this, const char *a2); int __thiscall sub_4D5910(const char *this, const char *a2); char *__thiscall sub_4D5950(char *this, const char *a2); int loc_4D5990(); // weak int __thiscall sub_4D59A0(void *this, unsigned int a2, int a3, int a4); int __stdcall sub_4D59D0(int a1, int a2, int a3); int __thiscall sub_4D59E0(int this); // int DNameNode::DNameNode(); weak void __thiscall sub_4D5A10(int this); // int loc_4D5A40(); weak int __cdecl sub_4D5A50(); bool __thiscall sub_4D5A70(int this, int a2); signed int __thiscall sub_4D5AD0(int this, const char *a2); void *__thiscall sub_4D5B30(int this, void *a2, int a3); int __thiscall sub_4D5BD0(int this, int a2, int a3); void *__thiscall sub_4D5BF0(int this, void *a2, int a3); int __thiscall sub_4D5C10(void *this); int __thiscall sub_4D5C50(void *this); void *__thiscall sub_4D5CD0(int this, void *a2); bool __stdcall sub_4D5DE0(signed int a1); __int16 __stdcall sub_4D5E20(signed int a1); signed int __thiscall sub_4D5E70(int this, int a2); int __thiscall sub_4D5EC0(int this); int __thiscall sub_4D5ED0(int this, int a2); int __thiscall sub_4D5F70(int this, int a2); int __thiscall sub_4D6000(int this); int __thiscall sub_4D6020(int this, int a2); int __thiscall sub_4D6070(int this, int a2); int __thiscall sub_4D60B0(void *this, int a2); signed int __thiscall sub_4D60C0(int this, int a2); signed int __thiscall sub_4D6100(int this); __int16 __thiscall sub_4D6120(void *this, const char *a2, int a3); void *__thiscall sub_4D61F0(void *this, void *a2); int loc_4D6240(); // weak int loc_4D6250(); // weak int loc_4D6260(); // weak void *__thiscall sub_4D6290(void *this, char a2); __int64 __thiscall sub_4D62C0(int this); int __thiscall sub_4D62E0(int this); int __thiscall sub_4D6340(int this); int __thiscall sub_4D63A0(int this, unsigned __int8 a2); int *__thiscall sub_4D63C0(void *this, int *a2, int *a3); int __thiscall sub_4D63F0(int this, unsigned __int8 a2); int *__thiscall sub_4D6410(void *this, int *a2, int *a3); char __stdcall sub_4D6440(char a1); int __stdcall sub_4D6450(const void *a1, int a2, void *a3); char __stdcall sub_4D6480(char a1, int a2); int __stdcall sub_4D6490(const void *a1, int a2, int a3, void *a4); void *__thiscall sub_4D64C0(void *this, char a2); int __thiscall sub_4D6510(int this, char a2, int a3); void *__thiscall sub_4D65F0(void *this, int a2); void *__thiscall sub_4D6610(void *this, int a2); int __thiscall sub_4D6640(int this); void *__thiscall sub_4D66D0(void *this, char a2); void *__thiscall sub_4D6700(void *this, int a2); void *__thiscall sub_4D6730(void *this, char *a2); char *__thiscall sub_4D67A0(void *this, int a2); char *__thiscall sub_4D6820(void *this, const char *a2); char *__thiscall sub_4D6940(void *this, const char *a2); char *__thiscall sub_4D6A60(void *this, const char *a2); char *__thiscall sub_4D6B80(void *this, const char *a2); char *__stdcall sub_4D6C60(char *a1, int a2, int a3); char *__stdcall sub_4D6DF0(char *a1, int a2, int a3); char *__stdcall sub_4D6EF0(char *a1, int a2, int a3); int __thiscall sub_4D7180(int this); void __thiscall sub_4D71C0(int this); int __thiscall sub_4D7240(int this); void __thiscall sub_4D7270(int this); int __thiscall sub_4D7330(int this); void __thiscall sub_4D73C0(void *this); void *__thiscall sub_4D7430(void *this); int __thiscall sub_4D7460(int this, const char *a2); int __cdecl sub_4D7500(); int __cdecl sub_4D7540(); signed int __thiscall sub_4D7590(int this, int a2, int a3, int a4); signed int __thiscall sub_4D7640(int this, int a2, int a3, unsigned __int16 *a4); signed int __thiscall sub_4D76E0(int this, int a2, int a3, int a4); signed int __thiscall sub_4D7750(void *this, int a2, int a3, int a4); signed int __thiscall sub_4D7790(int this, int a2, int a3, int a4); signed int __thiscall sub_4D7890(int this, int a2, int a3, int a4); signed int __thiscall sub_4D7950(int this, int a2, int a3, int a4); int __thiscall sub_4D79C0(int this, int a2); signed int __thiscall sub_4D7A60(void *this, int a2); void *__thiscall sub_4D7AD0(int this, void *a2, int a3); char *__thiscall sub_4D7C30(int this, void *a2, int a3); void *__thiscall sub_4D7EF0(void *this, void *a2); void *__thiscall sub_4D7FC0(void *this, void *a2); int __thiscall sub_4D8090(int this); signed int __thiscall sub_4D8100(int this, int a2); int __thiscall sub_4D8170(void *this, int a2); int loc_4D81F0(); // weak int __thiscall sub_4D8210(int this); int __thiscall sub_4D8290(int this); void __thiscall sub_4D82A0(int this); __int64 __cdecl sub_4D82B0(); void *__thiscall sub_4D82C0(void *this, int a2, int a3, int a4); __int64 __thiscall sub_4D82D0(int this); int __thiscall sub_4D82F0(void *this); __int64 __thiscall sub_4D8320(void *this, char *a2, __int64 a3); __int64 __thiscall sub_4D83F0(void *this, char *a2, __int64 a3); int __stdcall sub_4D84C0(int a1, int a2, int a3, int a4, int a5); int __stdcall sub_4D84F0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8); signed int __thiscall sub_4D8520(int this, signed int a2); signed int __thiscall sub_4D8570(int this); int __thiscall sub_4D85E0(int this, int a2, __int64 a3, int a4, char a5); int __thiscall sub_4D87A0(int this, int a2, __int64 a3, int a4, int a5, int a6, int a7, char a8); void *__thiscall sub_4D88C0(void *this, char a2); void *__thiscall sub_4D8900(void *this, char a2); void *__thiscall sub_4D8940(void *this, char a2); void *__thiscall sub_4D8970(void *this, char a2); void *__thiscall sub_4D89D0(void *this, char a2); void *__thiscall sub_4D8A00(void *this); int __thiscall sub_4D8AF0(int this, const void *a2, size_t a3, int a4); char __thiscall sub_4D8BA0(int this, char *a2); int __cdecl sub_4D8E20(int a1, int a2, int a3, __int16 a4); void __thiscall sub_4D8EB0(int this); char __thiscall sub_4D8EE0(int this, int a2, size_t a3, char a4); char __thiscall sub_4D8F20(void *this, int a2, char a3); // void __usercall sub_4D9048(int a1); void *__thiscall sub_4D9080(void *this, char *a2); int __thiscall sub_4D9130(void *this); signed int __cdecl sub_4D91E0(int a1, int a2); void *__thiscall sub_4D92C0(void *this, int a2); void *__thiscall sub_4D9320(int this, void *a2, void *a3); int __thiscall sub_4D93E0(int this, void *a2); void *__cdecl sub_4D9490(); signed int __thiscall sub_4D94C0(int this, int a2, int a3, int a4); signed int __thiscall sub_4D95A0(int this, int a2, int a3, int a4); signed int __thiscall sub_4D9600(int this, int a2, int a3, int a4); void *__thiscall sub_4D9730(void *this, void *a2, void *a3); void *__thiscall sub_4D9760(int this, void *a2, void *a3); void *__thiscall sub_4D97C0(int this, void *a2); int __thiscall sub_4D98A0(void *this); signed int __thiscall sub_4D9930(int this, signed int a2); int __cdecl sub_4D9AE0(int a1, int a2, int a3, int a4, unsigned __int8 *a5, int a6); int __cdecl sub_4D9B50(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6); int __cdecl sub_4D9BC0(int a1, int a2, int a3, int a4, const void *a5, size_t a6, unsigned __int8 a7); int __cdecl sub_4D9C60(int a1); signed int __cdecl sub_4D9DA0(int a1, int a2); char __thiscall sub_4D9E60(int this); char __thiscall sub_4D9E70(int this); void *__thiscall sub_4D9E80(void *this, char a2); void *__thiscall sub_4D9ED0(void *this, int a2); signed int __thiscall sub_4DA030(void *this, int a2); void *__thiscall sub_4DA0D0(void *this, int a2); void __thiscall sub_4DA1A0(int this); int (**__thiscall sub_4DA220(int this))(); int __thiscall sub_4DA2C0(int this, int a2, __int16 a3, int a4, int a5); void __thiscall sub_4DA3A0(void *this); int __cdecl sub_4DA460(); int __cdecl sub_4DA500(); int __cdecl sub_4DA530(); signed int __thiscall sub_4DA590(void *this, int a2, int a3, int a4); void *__thiscall sub_4DA630(int this, int a2); signed int __thiscall sub_4DA6D0(int this, int a2); signed int __thiscall sub_4DA7B0(int this, int a2); signed int __thiscall sub_4DA7F0(int this, int a2); signed int __thiscall sub_4DA840(int this, int a2); int __thiscall sub_4DA890(void *this, int a2); signed __int16 __thiscall sub_4DA9F0(void *this, int a2); signed int __thiscall sub_4DAC40(void *this, int a2); int __thiscall sub_4DB260(void *this, int a2); signed int __thiscall sub_4DB540(void *this, int a2); signed int __thiscall sub_4DB660(void *this, int a2); signed int __thiscall sub_4DB820(void *this, int a2); int __thiscall sub_4DBA10(void *this, int a2); signed int __thiscall sub_4DBAC0(void *this, int a2); signed int __thiscall sub_4DBB90(void *this, int a2); signed int __thiscall sub_4DBD00(void *this, int a2); signed int __thiscall sub_4DBE70(void *this, int a2); signed int __thiscall sub_4DBF80(void *this, int a2); signed int __thiscall sub_4DC080(int this, int a2); signed int __thiscall sub_4DC170(void *this, int a2); int loc_4DC3A0(); // weak void *__thiscall sub_4DC3C0(void *this); void *__thiscall sub_4DC410(void *this, char a2); void *__thiscall sub_4DC450(void *this); int loc_4DC491(); // weak int (*__cdecl sub_4DC4A3())(); int __thiscall sub_4DC4B0(void *this, int a2); int __thiscall sub_4DC4D0(void *this, int a2); int __thiscall sub_4DC4F0(void *this, int a2); int __thiscall sub_4DC510(int this, int a2); int __cdecl sub_4DC5C0(int a1); signed int __cdecl sub_4DC700(int a1, int a2); char __thiscall sub_4DC7D0(int this, unsigned __int16 a2); char __thiscall sub_4DC950(int this, unsigned __int16 a2); int __thiscall sub_4DCAD0(int this, int a2, int a3); int __thiscall sub_4DCB00(int this); int __thiscall sub_4DCB30(int this, size_t a2, char a3); int __thiscall sub_4DCBE0(void *this); int __thiscall sub_4DCC50(int this, int a2, size_t a3, char a4); int __thiscall sub_4DCD50(int this, int a2); char __thiscall sub_4DCDD0(void *this, int a2); char __thiscall sub_4DCE10(void *this, int a2); char __thiscall sub_4DCE60(void *this, int a2); void *__thiscall sub_4DCEB0(void *this, char a2); char __thiscall sub_4DCEF0(void *this, int a2); int __thiscall sub_4DCF30(int this, int a2); void *__thiscall sub_4DCFB0(void *this, char a2); char __thiscall sub_4DCFF0(void *this, int a2); char __thiscall sub_4DD060(void *this, int a2); char __thiscall sub_4DD0D0(int this, int a2); char __thiscall sub_4DD160(int this, int a2); void *__cdecl sub_4DD1F0(void *a1, int a2); // int (*__usercall sub_4DD442(int a1))(); int loc_4DD473(); // weak void *__cdecl sub_4DD490(void *a1, const char *a2); // int (*__usercall sub_4DD706(int a1))(); int loc_4DD737(); // weak int __cdecl sub_4DD750(int a1); int __thiscall sub_4DD890(int this); int __cdecl sub_4DD9A0(); int __cdecl sub_4DDA10(); int __cdecl sub_4DDA80(); signed int __thiscall sub_4DDAF0(void *this, int a2); int __thiscall sub_4DDD50(int this); void *__thiscall sub_4DFDF0(void *this, char a2); void *__thiscall sub_4DFE40(void *this, int a2); // int (*__usercall sub_4DFFE3(int a1))(); int loc_4E0014(); // weak int __cdecl sub_4E0030(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8, size_t a9, size_t a10, int a11); int __cdecl sub_4E05A0(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8); char __thiscall sub_4E0830(int this, char *a2); void *__thiscall sub_4E0B10(void *this); void __thiscall sub_4E0C10(int this); signed int __thiscall sub_4E0CB0(void *this, int a2); void *__thiscall sub_4E0DE0(void *this); int __thiscall sub_4E0DF0(_DWORD); // weak void **__thiscall sub_4E0E00(void **this, void **a2); int __thiscall sub_4E0E80(void *this, int a2, int a3, int a4, int a5, char a6, unsigned __int8 a7); int __thiscall sub_4E10A0(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7); int __thiscall sub_4E1120(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7); int __thiscall sub_4E11A0(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8); int __thiscall sub_4E1220(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8); int __thiscall sub_4E12A0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7); int __thiscall sub_4E14B0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7); int __thiscall sub_4E16B0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7); int __thiscall sub_4E1710(int this, int a2); int __thiscall sub_4E1760(int this, int a2); int __thiscall sub_4E17B0(int this, int a2); int __thiscall sub_4E1800(void *this, char *a2); void *__thiscall sub_4E1830(int this, void *a2); void *__thiscall sub_4E1960(void *this, void *a2); char __thiscall sub_4E1990(void *this, int a2, int a3); char __thiscall sub_4E1C00(void *this, int a2, int a3); char __thiscall sub_4E1E50(void *this, int a2, int a3); char __thiscall sub_4E20B0(int this, int a2); void *__thiscall sub_4E20F0(void *this, __int16 a2, int a3, int a4, int a5); void __thiscall sub_4E2170(void *this); void *__thiscall sub_4E2180(void *this, __int16 a2, int a3, int a4, int a5, int a6); int loc_4E2250(); // weak int __thiscall sub_4E2270(void *this, int a2); int __thiscall sub_4E2340(void *this, int a2); void __thiscall sub_4E2400(int this); int __cdecl sub_4E2470(int a1, int a2); char *__thiscall sub_4E2490(int this, char *a2); int __stdcall sub_4E2500(int a1, __int16 a2); signed int __stdcall sub_4E2600(int a1, int a2, int a3, void *a4); signed int __stdcall sub_4E29C0(int a1, int a2, int a3, void *a4); char *__stdcall sub_4E2CD0(void *a1, int a2, void *a3); char *__stdcall sub_4E2E10(void *a1, int a2, void *a3); char *__stdcall sub_4E2F50(void *a1, int a2, void *a3); char *__stdcall sub_4E3090(void *a1, int a2, void *a3); char *__stdcall sub_4E31D0(void *a1, int a2, void *a3); char *__stdcall sub_4E3310(void *a1, int a2, void *a3); char *__stdcall sub_4E3450(void *a1, int a2, void *a3); char *__stdcall sub_4E3760(void *a1, int a2, int a3); void *__stdcall sub_4E3820(void *a1, int a2, void *a3); void *__stdcall sub_4E3A20(void *a1, int a2, void *a3); char *__stdcall sub_4E3C00(void *a1, int a2, void *a3); char *__stdcall sub_4E3DC0(void *a1, int a2, void *a3); void *__stdcall sub_4E3FF0(void *a1, int a2, void *a3); bool __thiscall sub_4E4260(void *this, int a2, int a3, int a4); void *__thiscall sub_4E4350(void *this, void *a2); void *__stdcall sub_4E4450(void *a1, int a2, void *a3); int __thiscall sub_4E47A0(int this); void __thiscall sub_4E47C0(int this); char __thiscall sub_4E4830(void *this, int a2, int a3, int a4); char __thiscall sub_4E4920(void *this, int a2, int a3, int a4); char __thiscall sub_4E4A70(void *this, int a2, int a3, int a4); int __thiscall sub_4E4C40(void *this, void *a2, int a3); int __thiscall sub_4E51D0(void *this, void *a2, int a3, signed int a4); void *__stdcall sub_4E53F0(void *a1, int a2, void *a3); char *__stdcall sub_4E5600(void *a1, int a2, void *a3); void *__stdcall sub_4E58D0(void *a1, int a2, void *a3); void *__stdcall sub_4E5C10(void *a1, int a2, void *a3); int __cdecl sub_4E5FD0(int a1, int a2, int a3, int a4); void __cdecl sub_4E6000(int a1, int a2); void *__stdcall sub_4E6080(void *a1, int a2, void *a3); void *__stdcall sub_4E6340(void *a1, int a2, int a3); void *__stdcall sub_4E6530(void *a1, int a2, int a3); void __cdecl sub_4E6720(int a1, int a2); int __stdcall sub_4E6740(int a1, int a2, int a3); void __thiscall sub_4E6770(int this, unsigned int a2, int a3); void *__stdcall sub_4E67E0(void *a1, int a2, void *a3); int __thiscall sub_4E6AE0(int this, int a2); int __thiscall sub_4E6B40(int this); int __stdcall sub_4E6B70(int a1, int a2, int a3); void *__thiscall sub_4E6C10(void *this); int __thiscall sub_4E6CC0(void *this, int a2, int a3, unsigned __int8 *a4); char __thiscall sub_4E6EC0(void *this, const char *a2); int __thiscall sub_4E7100(void *this, const char *a2, int a3); int loc_4E7230(); // weak void *__thiscall sub_4E7280(void *this); void *__thiscall sub_4E72B0(void *this, signed int a2, int a3, int a4); int __thiscall sub_4E7300(void *this, int a2, int a3, const void *a4, int a5, char a6); char *__thiscall sub_4E73E0(void *this, int a2, const char *a3, const void *a4, int a5); char *__thiscall sub_4E7510(void *this, int a2, int a3, int a4); char *__thiscall sub_4E7580(void *this, int a2, int a3, int a4); int __thiscall sub_4E75F0(void *this, int a2, int a3, int a4); char *__thiscall sub_4E7640(void *this, int a2, int a3, int a4); int __thiscall sub_4E76B0(void *this, int a2, int a3, int a4, char a5); int __thiscall sub_4E76F0(void *this, int a2, int a3, int a4); int __thiscall sub_4E7760(int this, int a2, int a3, int a4); int __thiscall sub_4E77C0(void *this, int a2, int a3, int a4); char *__thiscall sub_4E7810(void *this, int a2, int a3, int a4); int __thiscall sub_4E7840(void *this, int a2, int a3, int a4); int __thiscall sub_4E7890(void *this, int a2, int a3, int a4); int __thiscall sub_4E78E0(void *this, int a2, int a3, int a4); int __thiscall sub_4E7930(void *this, int a2, int a3, int a4); int __thiscall sub_4E7990(void *this, int a2, int a3, int a4); void __thiscall sub_4E7A00(void *this, int a2); int __thiscall sub_4E7A90(int this); int __thiscall sub_4E7AB0(int this); int __thiscall sub_4E7AD0(int this); int __thiscall sub_4E7AF0(int this); int __thiscall sub_4E7B10(int this); int __thiscall sub_4E7B30(int this); int __thiscall sub_4E7B50(int this); int __thiscall sub_4E7B70(int this); int __thiscall sub_4E7B90(int this); int __thiscall sub_4E7BB0(int this); int __thiscall sub_4E7BD0(int this); int __thiscall sub_4E7BF0(int this); int __thiscall sub_4E7C10(int this); int __thiscall sub_4E7C30(int this); int __thiscall sub_4E7C50(int this); int __thiscall sub_4E7C70(int this); int __thiscall sub_4E7C90(int this); int __thiscall sub_4E7CB0(int this); int __thiscall sub_4E7CD0(int this); int __thiscall sub_4E7CF0(int this); int __thiscall sub_4E7D10(int this); int __thiscall sub_4E7D30(int this); int __thiscall sub_4E7D50(int this); int __thiscall sub_4E7D70(int this); int __thiscall sub_4E7D90(int this); int __thiscall sub_4E7DB0(int this); int __thiscall sub_4E7DD0(int this); int __thiscall sub_4E7DF0(int this); int __thiscall sub_4E7E10(int this); int __thiscall sub_4E7E30(int this); int __thiscall sub_4E7E50(int this); int __thiscall sub_4E7E70(int this); int __thiscall sub_4E7E90(int this); int __thiscall sub_4E7EB0(int this); int __thiscall sub_4E7ED0(int this); int __thiscall sub_4E7EF0(int this); int __thiscall sub_4E7F10(int this); int __thiscall sub_4E7F30(int this); int __thiscall sub_4E7F50(int this); int __thiscall sub_4E7F70(int this); int __thiscall sub_4E7F90(int this); int __thiscall sub_4E7FB0(int this); int __thiscall sub_4E7FD0(int this); int __thiscall sub_4E7FF0(int this); int __thiscall sub_4E8010(int this); int __thiscall sub_4E8030(int this); int __thiscall sub_4E8050(int this); int __thiscall sub_4E8070(int this); int __thiscall sub_4E8090(int this); int __thiscall sub_4E80B0(int this); int __thiscall sub_4E80D0(int this); int __thiscall sub_4E80F0(int this); int __thiscall sub_4E8110(int this); int __thiscall sub_4E8130(int this); int __thiscall sub_4E8150(int this); int __thiscall sub_4E8170(int this); int __thiscall sub_4E8190(int this); int __thiscall sub_4E81B0(int this); int __thiscall sub_4E81D0(int this); int __thiscall sub_4E81F0(int this); int __thiscall sub_4E8210(int this); int __thiscall sub_4E8230(int this); int __thiscall sub_4E8250(int this); int __thiscall sub_4E8270(int this); int __thiscall sub_4E8290(int this); int __thiscall sub_4E82B0(int this); int __thiscall sub_4E82D0(int this); int __thiscall sub_4E82F0(int this); int __thiscall sub_4E8310(int this); int __thiscall sub_4E8330(int this); int __thiscall sub_4E8350(int this); int __thiscall sub_4E8370(int this); int __thiscall sub_4E8390(int this); int __thiscall sub_4E83B0(int this); int __thiscall sub_4E83D0(int this); int __thiscall sub_4E83F0(int this); int __thiscall sub_4E8410(int this); int __thiscall sub_4E8430(int this); int __thiscall sub_4E8450(int this); int __thiscall sub_4E8470(int this); int __thiscall sub_4E8490(int this); int __thiscall sub_4E84B0(int this); int __thiscall sub_4E84D0(int this); int __thiscall sub_4E84F0(int this); int __cdecl sub_4E8510(); int __cdecl sub_4E8580(); int __cdecl sub_4E85F0(); int __cdecl sub_4E8660(); int __cdecl sub_4E86D0(); int __cdecl sub_4E8740(); int __cdecl sub_4E87B0(); int __cdecl sub_4E8820(); int __cdecl sub_4E8890(); int __cdecl sub_4E8900(); int __cdecl sub_4E8970(); int __cdecl sub_4E89E0(); int __cdecl sub_4E8A50(); int __cdecl sub_4E8AC0(); int __cdecl sub_4E8B30(); int __cdecl sub_4E8BA0(); int __cdecl sub_4E8C10(); int __cdecl sub_4E8C80(); int __cdecl sub_4E8CF0(); int __cdecl sub_4E8D60(); int __cdecl sub_4E8DD0(); int __cdecl sub_4E8E40(); int __cdecl sub_4E8EB0(); int __cdecl sub_4E8F20(); int __cdecl sub_4E8F90(); int __cdecl sub_4E9000(); int __cdecl sub_4E9070(); int __cdecl sub_4E90E0(); int __cdecl sub_4E9150(); int __cdecl sub_4E91C0(); int __cdecl sub_4E9230(); int __cdecl sub_4E92A0(); int __cdecl sub_4E9310(); int __cdecl sub_4E9380(); int __cdecl sub_4E93F0(); int __cdecl sub_4E9460(); int __cdecl sub_4E94D0(); int __cdecl sub_4E9540(); int __cdecl sub_4E95B0(); int __cdecl sub_4E9620(); int __cdecl sub_4E9690(); int __cdecl sub_4E9700(); int __cdecl sub_4E9770(); int __cdecl sub_4E97E0(); int __cdecl sub_4E9850(); int __cdecl sub_4E98C0(); int __cdecl sub_4E9930(); int __cdecl sub_4E99A0(); int __cdecl sub_4E9A10(); int __cdecl sub_4E9A80(); int __cdecl sub_4E9AF0(); int __cdecl sub_4E9B60(); int __cdecl sub_4E9BD0(); int __cdecl sub_4E9C40(); int __cdecl sub_4E9CB0(); int __cdecl sub_4E9D20(); int __cdecl sub_4E9D90(); int __cdecl sub_4E9E00(); int __cdecl sub_4E9E70(); int __cdecl sub_4E9EE0(); int __cdecl sub_4E9F50(); int __cdecl sub_4E9FC0(); int __cdecl sub_4EA030(); int __cdecl sub_4EA0A0(); int __cdecl sub_4EA110(); int __cdecl sub_4EA180(); int __cdecl sub_4EA1F0(); int __cdecl sub_4EA260(); int __cdecl sub_4EA2D0(); int __cdecl sub_4EA340(); int __cdecl sub_4EA3B0(); int __cdecl sub_4EA420(); int __cdecl sub_4EA490(); int __cdecl sub_4EA500(); int __cdecl sub_4EA570(); int __cdecl sub_4EA5E0(); int __cdecl sub_4EA650(); int __cdecl sub_4EA6C0(); int __cdecl sub_4EA730(); int __cdecl sub_4EA7A0(); int __cdecl sub_4EA810(); int __cdecl sub_4EA880(); int __cdecl sub_4EA8F0(); int __cdecl sub_4EA960(); char __stdcall sub_4EA9D0(int a1); int __stdcall sub_4EAB60(int a1); __int16 __thiscall sub_4EABF0(void *this, int a2, int a3, int a4); void *__thiscall sub_4EADB0(void *this, __int16 a2, int a3, int a4, int a5, int a6); void __thiscall sub_4EADF0(void *this); int __thiscall sub_4EAE00(int this, int a2); void *__thiscall sub_4EAEC0(void *this, __int16 a2, int a3, int a4); char __thiscall sub_4EAF10(void *this, int a2, int a3, int a4); void *__thiscall sub_4EB020(void *this, char a2); void *__thiscall sub_4EB050(void *this, char a2); void *__thiscall sub_4EB080(void *this, char a2); void *__thiscall sub_4EB0B0(void *this, char a2); void *__thiscall sub_4EB0E0(void *this, char a2); void *__thiscall sub_4EB110(void *this, char a2); int __thiscall sub_4EB140(int this, int a2, int a3); int __thiscall sub_4EB170(void *this, void *a2); __int16 __thiscall sub_4EB280(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EB3A0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EB580(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EB7A0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EC140(void *this, int a2, int a3, int a4); signed __int16 __thiscall sub_4EC2D0(void *this, int a2, int a3, int a4); signed int __thiscall sub_4EC480(void *this, int a2, void *a3, int a4, int a5, int a6); __int16 __thiscall sub_4EC7A0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EC910(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4ECA80(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4ECC10(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4ECF40(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4ED100(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4ED2C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4ED6C0(void *this, int a2, int a3, int a4); signed __int16 __thiscall sub_4EDA00(void *this, int a2, int a3, int a4); signed __int16 __thiscall sub_4EDC20(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EE0C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EE2A0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EE480(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EE730(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EEA20(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EEC20(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EEE00(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EF0E0(void *this, int a2, int a3, int a4); signed __int16 __thiscall sub_4EF4D0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EF970(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EFB40(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EFDE0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4EFFB0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F0270(void *this, int a2, int a3, int a4); char __thiscall sub_4F0590(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F05E0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F0A50(void *this, int a2, int a3, int a4); int __stdcall sub_4F0CF0(void *a1); char __thiscall sub_4F0E80(void *this, int a2, void *a3, int a4); __int16 __thiscall sub_4F0F50(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F12C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F14C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F16C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F1920(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F1B40(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F1EB0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F22E0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F24E0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F2640(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F2810(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F2A00(void *this, int a2, int a3, int a4); signed __int16 __thiscall sub_4F2B60(void *this, int a2, int a3, int a4); __int16 __stdcall sub_4F2C70(int a1, int a2, int a3); __int16 __thiscall sub_4F2D70(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F2FA0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F3280(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F3640(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F38D0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F3A40(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F3BC0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F3D40(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F3F00(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F4290(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F4490(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F46C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F4AF0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F4FD0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F5270(void *this, int a2, int a3, int a4); __int16 __stdcall sub_4F5560(int a1, int a2, int a3); __int16 __thiscall sub_4F56A0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F5830(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F5B40(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F5E60(void *this, int a2, int a3, int a4); __int16 __stdcall sub_4F6110(int a1, int a2, int a3); __int16 __thiscall sub_4F62E0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F6460(void *this, int a2, int a3, int a4); __int16 __stdcall sub_4F6610(int a1, int a2, int a3); __int16 __thiscall sub_4F6710(void *this, int a2, int a3, int a4); __int16 __stdcall sub_4F68E0(int a1, int a2, int a3); __int16 __thiscall sub_4F69C0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F6BA0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F7080(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F7450(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F7600(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F7810(void *this, int a2, int a3, int a4); int __cdecl sub_4F7BB0(); int __cdecl sub_4F7C20(); int __cdecl sub_4F7C90(); int __cdecl sub_4F7D00(); int __cdecl sub_4F7D70(); int __cdecl sub_4F7DE0(); int __cdecl sub_4F7E50(); int __cdecl sub_4F7EC0(); int __cdecl sub_4F7F30(); // int loc_4F7FA0(); weak void *__thiscall sub_4F7FB0(void *this, char a2); void *__thiscall sub_4F7FE0(void *this, char a2); void *__thiscall sub_4F8010(void *this, char a2); __int16 __stdcall sub_4F8040(int a1, int a2, int a3); signed int __thiscall sub_4F8150(void *this, int a2, int a3, int a4, int a5, int a6, int a7); __int16 __thiscall sub_4F8680(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F8950(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F8AC0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F8C30(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F8ED0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F91D0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F9410(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F96B0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F98E0(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F9B60(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4F9DD0(void *this, int a2, void *a3, int a4); __int16 __thiscall sub_4FA080(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4FA310(void *this, int a2, int a3, int a4); __int16 __thiscall sub_4FA5C0(void *this, int a2, int a3, int a4); bool __thiscall sub_4FA860(int this, unsigned int *a2); int __thiscall sub_4FA8B0(void *this, int a2, int a3); int __thiscall sub_4FA9B0(void *this, int a2, int a3); int __thiscall sub_4FAAB0(void *this, int a2, int a3); int __thiscall sub_4FABD0(void *this, int a2, int a3); int __thiscall sub_4FACE0(void *this, int a2, int a3); int __thiscall sub_4FADF0(void *this, int a2, int a3); int __thiscall sub_4FAF00(void *this, void *a2, int a3); int __thiscall sub_4FB410(void *this, int a2); int __thiscall sub_4FB560(void *this, int a2, int a3, int a4); int __stdcall sub_4FB720(int a1, int a2); int __thiscall sub_4FB810(void *this, int a2); int __thiscall sub_4FB930(void *this, int a2, int a3, int a4); int __thiscall sub_4FB990(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_4FBA20(void *this, int a2, int a3, int a4); int __thiscall sub_4FBB20(void *this, int a2, int a3, int a4); double __stdcall sub_4FBBF0(int a1); double __stdcall sub_4FBE40(int a1); void __stdcall sub_4FC0B0(int a1); double __stdcall sub_4FC8A0(int a1); double __stdcall sub_4FCB30(int a1); double __stdcall sub_4FCE00(int a1); void __stdcall sub_4FD0D0(int a1); void __stdcall sub_4FDF00(int a1); char __stdcall sub_4FED30(int a1); double __stdcall sub_4FED50(int a1); void __stdcall sub_4FED80(int a1); // void __userpurge sub_4FF070(int a1, double a2, int a3); double __stdcall sub_4FF2B0(int a1); int __stdcall sub_4FF2C0(int a1, int a2); double __stdcall sub_4FF520(int a1, signed int a2); void __thiscall sub_4FF580(void *this, int a2); double __stdcall sub_4FF680(int a1); int __stdcall sub_4FF690(int a1, int a2, int a3); _DWORD __stdcall nullsub_3(_DWORD); // weak unsigned int __stdcall sub_4FF7C0(int a1); double __stdcall sub_4FF8A0(int a1); double __stdcall sub_4FF8D0(int a1); double __stdcall sub_4FF900(int a1); double __stdcall sub_4FF930(int a1); unsigned int __thiscall sub_4FF960(void *this, int a2, int a3, int a4, int a5); int __stdcall sub_4FFA20(int, double, double); // idb int __stdcall sub_4FFF40(int, double, double); // idb int __stdcall sub_500320(int, double, double); // idb // int __userpurge sub_500700(int a1, double a2, int a3); double __stdcall sub_500C10(int a1); // double __userpurge sub_500D50(double st7_0, int a1); // int __userpurge sub_500E60(int a1, double a2, int a3); double __stdcall sub_501300(int a1); double __stdcall sub_501440(int a1); // int __userpurge sub_501550(int a1, double a2, int a3); double __stdcall sub_501A20(int a1); // double __userpurge sub_501AD0(double result, int a1); // int __userpurge sub_501B80(int a1, double a2, int a3); double __stdcall sub_502130(int a1); double __stdcall sub_502270(int a1); int __thiscall sub_502380(void *this, int a2); // int __userpurge sub_502430(void *this, double st7_0, char a2); char __stdcall sub_502BB0(int a1); char __stdcall sub_502C00(int a1); char __stdcall sub_502D00(int a1); // int __userpurge sub_502E00(int a1, double a2, int a3); // signed int __userpurge sub_502FF0(int a1, double a2, int a3, int a4, unsigned __int8 a5); double __stdcall sub_503330(int a1); double __stdcall sub_503440(int a1); double __stdcall sub_503550(int a1); double __stdcall sub_503700(int a1); double __stdcall sub_5038B0(int a1); double __stdcall sub_5039E0(int a1); double __stdcall sub_503BD0(int a1); double __stdcall sub_503DC0(int a1); double __stdcall sub_5040F0(int a1); // signed int __userpurge sub_504420(int a1, double a2, int a3); // double __userpurge sub_504E80(double st7_0, signed int a1); double __stdcall sub_5050F0(signed int a1); // double __userpurge sub_505360(double st7_0, signed int a1); double __stdcall sub_5056E0(signed int a1); char __thiscall LuaScriptScenario::lss_Routine(int this, const void *a2, int a3); void *__thiscall sub_505AE0(void *this); void __thiscall sub_505B80(void *); // idb __int16 __thiscall sub_505C20(const char *this, int a2, int a3, const char *a4); int loc_505C40(); // weak char *__stdcall sub_505C50(char *a1, int a2, const char *a3); int __thiscall sub_505CC0(int this); int loc_505CD0(); // weak char __thiscall sub_505CF0(void *this, const void *a2); char __thiscall sub_505D30(void *this, void *a2); char __thiscall sub_505D80(void *this, void *a2); void *__thiscall sub_505DD0(void *this, char a2); int loc_505E10(); // weak void *__thiscall sub_505E20(void *this, char a2); void *__thiscall sub_505E50(void *this, char a2); char __thiscall sub_505EC0(void *this, int a2); char __thiscall sub_506010(void *this, int a2); void *__thiscall sub_506160(void *this); int __thiscall sub_5061F0(int this); void *__thiscall sub_506260(void *this); int __thiscall sub_5062F0(void *this, void (__thiscall *a2)(_DWORD, _DWORD), int a3); int __thiscall sub_5063A0(void *this, unsigned __int8 *a2, int a3); int __thiscall sub_5064A0(void *this, int a2); void __thiscall sub_506550(int this); unsigned int __thiscall sub_506600(void *this); int __thiscall sub_506670(void *this, int a2, int a3); signed int __thiscall sub_506760(void *this); char __thiscall sub_506890(void *this, unsigned __int16 a2); signed int __thiscall sub_5069F0(void *this, int a2, const void *a3, int a4); char __thiscall sub_506BF0(void *this, const void *a2); void *__thiscall sub_506C30(void *this, char a2); void *__thiscall sub_506CB0(void *this, char a2); signed int __thiscall sub_506D40(void *this, int a2, const void *a3, int a4); char __thiscall sub_506DF0(void *this, unsigned __int16 a2); void *__thiscall sub_506EA0(void *this, char a2); void *__thiscall sub_506ED0(void *this, int a2, int a3); int __thiscall sub_5070A0(void *this, int a2, int a3); signed int __thiscall sub_5071A0(void *this, int a2, const void *a3, int a4); char __thiscall sub_5074C0(int this, unsigned __int16 a2); char __thiscall sub_507640(void *this, int a2, int a3); int __thiscall sub_507700(void *this); char __thiscall sub_5077C0(void *this, const char *a2); char __thiscall sub_507950(void *this, const char *a2, int a3); int __thiscall sub_507B30(int this); void __thiscall sub_507CD0(int this); char __thiscall sub_507D70(void *this, int a2); char __thiscall sub_507F10(void *this, int a2); void __cdecl sub_507F50(); int __thiscall sub_5080C0(int this); void __thiscall sub_5080F0(int this); void __thiscall sub_508100(void *this, int a2, int a3); bool __thiscall sub_508140(int this, int a2, unsigned int a3, unsigned int a4); int loc_5081A0(); // weak void *__thiscall sub_5081C0(void *this, char a2); int __thiscall sub_508200(int this, int a2); void __thiscall sub_508280(int this); int __thiscall sub_508300(void *this, int a2, int a3, const void *a4, int a5); char __thiscall sub_508420(void *this, int a2, void *a3, int a4, int a5, int a6, int a7, int a8); char __stdcall sub_508540(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); char __stdcall sub_508640(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_508760(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); char __stdcall sub_5088E0(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); char __stdcall sub_508A60(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_508B80(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_508CA0(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_508DC0(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_508EE0(int a1, void *a2, int a3, int a4, int a5, int a6, void *a7); char __stdcall sub_509050(int a1, void *a2, int a3, int a4, int a5, int a6, void *a7); char __stdcall sub_5091C0(int a1, void *a2, int a3, int a4, int a5, int a6, void *a7); char __stdcall sub_509380(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); char __stdcall sub_509490(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); char __stdcall sub_509630(int a1, void *a2, int a3, void *a4, int a5, int a6, int a7); char __stdcall sub_509730(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); char __stdcall sub_509840(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_509960(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_509A80(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); char __stdcall sub_509BD0(int a1, void *a2, int a3, int a4, int a5, int a6, int a7); int __stdcall sub_509D70(int a1, int a2); int __stdcall sub_509DF0(int a1, const char *a2); int __stdcall sub_509F00(int a1, int a2); int __stdcall sub_509F70(int a1, int a2); int __stdcall sub_50A070(int a1, int a2); int __stdcall sub_50A0F0(int a1, int a2); int __stdcall sub_50A170(int a1, int a2); int __stdcall sub_50A1F0(int a1, int a2); int __stdcall sub_50A280(int a1, int a2); int __stdcall sub_50A300(int a1, __int16 *a2); int __stdcall sub_50A3E0(int a1, int a2); int __stdcall sub_50A4C0(int a1, int a2); char __stdcall sub_50A5A0(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7); int __stdcall sub_50A6C0(int a1, int a2); char __thiscall sub_50A740(void *this, int a2); char __thiscall sub_50A780(void *this, int a2); char __thiscall sub_50A7C0(int this, int a2); char __thiscall sub_50A810(int this, int a2); void *__thiscall sub_50A860(void *this, char a2); char __thiscall sub_50A8F0(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_50AA50(void *this, int a2); int __thiscall sub_50AB70(void *this, const char *a2); int __thiscall sub_50ABE0(void *this, int a2); int __thiscall sub_50ACF0(void *this, int a2); int __thiscall sub_50AE00(void *this, int a2); int __thiscall sub_50AF20(void *this, int a2); int __thiscall sub_50B030(void *this, int a2); int __thiscall sub_50B140(void *this, int a2); int __thiscall sub_50B250(void *this, int a2); int __thiscall sub_50B360(void *this, int a2); int __thiscall sub_50B470(void *this, int a2); int __thiscall sub_50B580(void *this, int a2, int a3, int a4); int __thiscall sub_50B6F0(void *this, int a2, int a3, int a4); int __cdecl sub_50B880(); char *__thiscall sub_50B890(int this, void *a2); void *__thiscall sub_50B8B0(void *this, char a2); char __thiscall sub_50B8E0(int this, unsigned __int16 a2); int __thiscall sub_50BA60(int this); char __thiscall sub_50BBA0(void *this, int a2, const void *a3, int a4); int __thiscall sub_50BC40(void *this, int a2, int a3, int a4); int __thiscall sub_50BD10(void *this); int __thiscall sub_50BF60(void *this, unsigned __int16 a2); int __thiscall sub_50C0B0(void *this, __int16 a2, int a3); int __thiscall sub_50C390(void *this, __int16 a2, int a3); int __thiscall sub_50C460(void *this, __int16 a2, int a3); int __thiscall sub_50C520(void *this, int a2); int __thiscall sub_50C590(void *this, int a2); char __thiscall sub_50C6E0(void *this); int __thiscall sub_50C790(void *this, int a2); int __thiscall sub_50C8B0(void *this, int a2); char __thiscall sub_50C960(void *this, int a2); char __thiscall sub_50C9A0(void *this, unsigned __int8 a2, int a3); char __thiscall sub_50CA30(void *this, const void *a2); char __thiscall sub_50CA70(void *this, void *a2); char __thiscall sub_50CAD0(void *this, void *a2); void *__thiscall sub_50CB30(void *this, char a2); void __thiscall sub_50CB70(int this); signed __int16 __thiscall sub_50CB90(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_50CC70(int this, unsigned __int16 a2); char __thiscall sub_50CCB0(void *this, const void *a2); int __thiscall sub_50CD00(int this, int a2, int a3); int __thiscall sub_50CEE0(int this, int a2, int a3); char __thiscall sub_50D0C0(int this); char __thiscall sub_50D1C0(int this, unsigned __int16 a2); char __thiscall sub_50D340(void *this); int __thiscall sub_50D390(int this); char __thiscall sub_50D430(int this, int a2); int __thiscall sub_50D460(int this); bool __thiscall sub_50D480(int this); char __thiscall sub_50D490(int this, char a2); int __thiscall sub_50D4A0(int this, int a2); int __stdcall sub_50D4B0(int a1, int a2); int __stdcall sub_50D560(int a1, int a2); int __stdcall sub_50D860(int a1, int a2); int __stdcall sub_50D9C0(int a1, int a2); int __stdcall sub_50DA80(int a1, __int16 *a2); int __stdcall sub_50DB60(int a1, int a2); int __stdcall sub_50DC20(int a1, int a2); int __stdcall sub_50DD90(int a1, int a2); int __thiscall sub_50DE50(void *this); int __thiscall sub_50DF00(void *this, int a2, const void *a3); int __thiscall sub_50DFF0(void *this, int a2, const void *a3); int __thiscall sub_50E0B0(void *this, int a2); int __thiscall sub_50E3F0(void *this); int __thiscall sub_50E530(void *this, int a2, unsigned __int8 a3); int __thiscall sub_50E650(void *this, int a2, int a3, int a4); bool __thiscall sub_50E7B0(int this, int a2); int __thiscall sub_50E7D0(int this, int a2); signed int __thiscall sub_50E7F0(void *this, signed int a2); void __thiscall sub_50E810(int this); signed __int16 __thiscall sub_50E830(void *this, int a2); signed __int16 __thiscall sub_50E870(void *this, int a2); void __thiscall sub_50E8D0(void *this, signed int a2); int __thiscall sub_50E950(void *this, int a2, __int16 a3); int __thiscall sub_50E9E0(int this); void __thiscall sub_50EA10(int this); int __thiscall sub_50EA20(int this); __int16 __thiscall sub_50EA70(int this); signed int __thiscall sub_50EA80(int this); __int16 __thiscall sub_50EA90(int this, int a2); int __thiscall sub_50EAE0(int this, int a2); int __thiscall sub_50EB30(int this); int __thiscall sub_50EB50(void *this, int a2); int __thiscall sub_50ECA0(void *this, int a2, unsigned __int16 a3); int __thiscall sub_50EDC0(void *this); int __thiscall sub_50EE50(void *this); char __thiscall sub_50EFF0(void *this, int a2, __int16 a3); int __thiscall sub_50F0A0(void *this, int a2); int __thiscall sub_50F330(void *this); int __stdcall sub_50F460(int a1); int __thiscall sub_50F500(void *this, int a2); bool __thiscall sub_50F630(int this, int a2); int __thiscall sub_50F650(int this); char __thiscall sub_50F670(int this, int a2); char __thiscall sub_50F6B0(void *this); char __thiscall sub_50F730(int this, int a2); char __thiscall sub_50F760(int this, char a2); char __thiscall sub_50F790(int this, int a2); char __thiscall sub_50F7C0(int this, char a2); char __thiscall sub_50F7F0(int this, const char *a2, int a3); char __thiscall sub_50F840(int this, char *a2, int a3); int __thiscall sub_50F890(int this); char __thiscall sub_50F8B0(int this); char __thiscall sub_50F8F0(int this, int a2, int a3); char __thiscall sub_50F970(void *this, int a2); char __thiscall sub_50FA00(void *this, int a2); char __thiscall sub_50FB30(int this, int a2, int a3); char __thiscall sub_50FB90(void *this, unsigned __int16 a2); char __thiscall sub_50FBC0(void *this); char __thiscall sub_50FBD0(int this); char __thiscall sub_50FD30(void *this, int a2); bool __thiscall sub_50FF30(void *this, int a2); bool __thiscall sub_50FF60(void *this, int a2, int a3); char __thiscall sub_50FFA0(void *this, int a2); char __thiscall sub_510000(void *this, signed int a2, unsigned __int16 a3); char __thiscall sub_5100B0(int this); signed int __thiscall sub_510130(int this); char __thiscall sub_510160(int this); signed __int16 __thiscall sub_5101A0(int this, int a2); signed int __thiscall sub_510440(int this, int a2); signed int __stdcall sub_510640(int a1); signed int __thiscall sub_510650(void *this, int a2); signed int __thiscall sub_510700(void *this, int a2); signed int __thiscall sub_510810(void *this, int a2); signed int __stdcall sub_510920(int a1); // signed int __userpurge sub_510930(int a1, int a2, int a3); signed int __stdcall sub_510C20(int a1, int a2); signed int __thiscall sub_510C30(int this, int a2, char a3); signed int __thiscall sub_510D30(void *this, int a2); // signed int __userpurge sub_510E20(int a1, int a2, int a3); signed int __thiscall sub_5110F0(void *this, int a2); signed int __stdcall sub_511180(int a1); // signed int __userpurge sub_511190(int a1, int a2, int a3); signed int __thiscall sub_5113C0(int this, int a2, signed int a3); signed int __thiscall sub_511670(void *this, int a2, int a3); signed int __thiscall sub_5117F0(void *this, int a2, int a3); signed int __stdcall sub_5119B0(int a1, int a2); signed int __thiscall sub_5119C0(int this, int a2, int a3); signed int __stdcall sub_511AC0(int a1, int a2); signed int __thiscall sub_511AD0(void *this, int a2, int a3); signed int __thiscall sub_511BE0(void *this, int a2, int a3); signed int __thiscall sub_511D40(int this, int a2, int a3); signed int __stdcall sub_511E40(int a1); signed int __thiscall sub_511E50(void *this, int a2); signed int __thiscall sub_511F40(void *this); signed int __cdecl sub_511FA0(); signed int __thiscall sub_511FB0(void *this); signed int __fastcall sub_5120C0(int a1); signed int __thiscall sub_512260(void *this, int a2); signed int __fastcall sub_5124E0(int a1); signed int __thiscall sub_5125E0(void *this, int a2); signed int __thiscall sub_5127C0(void *this); signed int __stdcall sub_512820(int a1); signed int __stdcall sub_512830(int a1); signed int __thiscall sub_512840(int this, int a2); char __thiscall sub_512A50(int this); char __thiscall sub_512BB0(int this); char __thiscall sub_512C90(int this); bool __cdecl sub_512CA0(int a1, int a2); char __thiscall sub_512CC0(int this, char a2, int a3, int a4); bool __thiscall sub_512D10(int this, int a2, int a3); char __thiscall sub_512D40(int this, char a2, int a3, int a4); bool __thiscall sub_512D90(int this, int a2, int a3); char __thiscall sub_512DC0(int this, char a2); char __thiscall sub_512DE0(int this); char __thiscall sub_512DF0(int this, char a2); char __thiscall sub_512E10(int this); char __thiscall sub_512E20(int this); char __thiscall sub_513020(void *this); char __thiscall sub_5131A0(int this); int __cdecl sub_5131E0(); int __thiscall sub_5131F0(int this); int __thiscall sub_513200(int this); char __thiscall sub_513210(int this, int a2); char __thiscall sub_5132B0(int this, int a2); int __thiscall sub_5132E0(int this, int a2); char __thiscall sub_513310(void *this, int a2, __int16 a3, __int16 a4, int a5); int __thiscall sub_513710(void *this, int a2, int a3, int a4); int __thiscall sub_513980(void *this, int a2, int a3, int a4); int __thiscall sub_513BD0(void *this, int a2, int a3, int a4); int __thiscall sub_513DD0(void *this, int a2, int a3, int a4); int __thiscall sub_514060(void *this, int a2, int a3, int a4); int __thiscall sub_514270(void *this, int a2, int a3, int a4); int __thiscall sub_514410(void *this, int a2, int a3, int a4); int __thiscall sub_5146B0(void *this, int a2, int a3, int a4); int __stdcall sub_514950(int a1, int a2, int a3); signed int __thiscall sub_5149A0(void *this); signed int __thiscall sub_514D90(void *this, int a2); signed int __thiscall sub_515150(int this, int a2); signed int __thiscall sub_515420(int this, __int16 a2); signed int __thiscall sub_5155D0(void *this, int a2); char __thiscall sub_5156C0(int this); // char __usercall sub_515720(int a1, int a2); int __stdcall sub_5159A0(int a1, int a2); int __stdcall sub_515B10(int a1, int a2); int __stdcall sub_515BF0(int a1, int a2); int __stdcall sub_515CD0(int a1, int a2); int __stdcall sub_515DD0(int a1, int a2); char __thiscall sub_515F50(void *this, int a2, int a3, char a4, int a5); bool __thiscall sub_516170(void *this, unsigned int *a2); int __thiscall sub_5161F0(void *this); void *__thiscall sub_516260(void *this, __int64 a2); int __thiscall sub_516340(void *this, int a2, int a3); int __thiscall sub_5164A0(int this); int __stdcall sub_5164E0(int a1, char a2); FILE *__stdcall sub_516500(int a1, int a2, int a3); int __stdcall nullsub_4(int, int, int); // weak __int16 __cdecl sub_516530(__int16 a1); FILE *__thiscall sub_516560(void *this, signed int a2, int a3, int a4); bool __thiscall sub_516610(int this); bool __thiscall sub_516620(int this); FILE *__thiscall sub_516630(void *this, __int16 a2, char a3, char a4); int __thiscall sub_5166A0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_516760(void *this); int __thiscall sub_516860(void *this); int __thiscall sub_516950(void *this); int __thiscall sub_516A50(void *this, int a2, int a3, int a4); int __thiscall sub_516BE0(void *this, __int16 a2, int a3, int a4, int a5); int __stdcall sub_516E40(int a1, int a2); int __stdcall sub_516F70(int a1, int a2); int __stdcall sub_5170A0(int a1, int a2); int __stdcall sub_5171A0(int a1, int a2); int __thiscall sub_5172A0(void *this); int __thiscall sub_5173F0(void *this); int __thiscall sub_517510(void *this, __int16 a2, __int16 a3); int __stdcall sub_517610(int a1, int a2); char __thiscall sub_5177A0(void *this, unsigned __int16 a2, unsigned __int16 a3, int a4); char __thiscall sub_5179A0(void *this, unsigned __int16 a2, __int16 a3); int __thiscall sub_517B60(void *this, __int16 a2, __int16 a3); int __thiscall sub_517C60(void *this, int a2, int a3, int a4); int __thiscall sub_518200(void *this, int a2, int a3, int a4); int __stdcall sub_518790(int a1, int a2); int __stdcall sub_5187E0(int a1, int a2); int __stdcall sub_518910(int a1, int a2); int __stdcall sub_518A00(int a1); int __thiscall sub_518A50(void *this, int a2); int __thiscall sub_518CF0(void *this); int __thiscall sub_518E00(void *this); int __stdcall sub_518F20(int a1, int a2); int __stdcall sub_519010(int a1); int __thiscall sub_519060(void *this, int a2); int __thiscall sub_519300(void *this); int __thiscall sub_519410(void *this); int __stdcall sub_519530(int a1); int __thiscall sub_519580(void *this, int a2); int __thiscall sub_519880(void *this, int a2, int a3, int a4); int __stdcall sub_519EC0(int a1, int a2); int __stdcall sub_519FB0(int a1); int __thiscall sub_51A000(void *this, int a2); int __thiscall sub_51A190(void *this, int a2, int a3, int a4); int __stdcall sub_51A780(int a1, int a2); int __thiscall sub_51A970(void *this, int a2, int a3, int a4); int __thiscall sub_51AA90(void *this, int a2, int a3, int a4); int __thiscall sub_51AB40(void *this, int a2, int a3, int a4); int __thiscall sub_51AD70(void *this, int a2); int __thiscall sub_51B030(void *this, int a2, int a3, int a4); int __thiscall sub_51BEE0(void *this, int a2); int __thiscall sub_51C260(void *this, int a2, int a3, int a4); int __thiscall sub_51C520(void *this, unsigned int a2, int a3, int a4); int __thiscall sub_51CD60(void *this, int a2, int a3, int a4); int __thiscall sub_51D320(void *this, int a2, int a3, int a4); int __stdcall sub_51DC20(int a1, int a2); int __thiscall sub_51DDA0(void *this, int a2, int a3, int a4); int __thiscall sub_51E4F0(void *this); // FILE *__userpurge sub_51E910(int a1, int a2, int a3, int a4, int a5); void *__thiscall sub_51EF20(void *this, int a2, int a3); int __thiscall sub_51F020(void *this, char a2, int a3, char a4); int __thiscall sub_51F280(void *this, char a2, int a3, char a4); int __thiscall sub_51F4B0(void *this, int a2, int a3, int a4); int __thiscall sub_51F620(void *this, int a2, int a3, int a4); int __thiscall sub_51FD20(void *this, int a2, int a3, int a4); char __cdecl sub_5209B0(int a1, __int16 a2, char *a3); char __cdecl sub_520AE0(int a1, __int16 a2, char *a3); char __cdecl sub_520C10(int a1, __int16 a2, char *a3); char __thiscall sub_520D40(int this, int a2, int a3, int a4); char __thiscall sub_521170(int this, int a2, int a3, int a4); char __thiscall sub_5214A0(int this, int a2, int a3, int a4); int __stdcall sub_5217A0(int a1, int a2); int __stdcall sub_521BB0(int a1, int a2); int __stdcall sub_522000(int a1, int a2); char __thiscall sub_5222F0(int this, int a2); int __thiscall sub_5224A0(void *this, int a2, __int16 a3, int a4, int a5, int a6, int a7, int a8); int __stdcall sub_5229B0(int a1, __int16 a2, int a3, int a4, __int16 a5, int a6, int a7, int a8, int a9); int __thiscall sub_522CA0(void *this, int a2, __int16 a3, int a4, int a5); int __stdcall sub_523020(int a1, __int16 a2, int a3, int a4, __int16 a5, int a6); int __thiscall sub_523220(void *this, int a2, int a3, __int16 a4); int __stdcall sub_523940(int a1, int a2); int __stdcall sub_523A80(int a1, int a2); int __stdcall sub_523BC0(int a1, int a2); int __stdcall sub_523CC0(int a1, int a2); int __stdcall sub_523E60(int a1, int a2); int __stdcall sub_524000(int a1, int a2); int __thiscall sub_524160(void *this, int a2, __int16 a3, int a4, int a5); _DWORD __stdcall sub_524DC0(_DWORD, __int16, _DWORD, _DWORD, _DWORD, _DWORD); // weak int __thiscall sub_525280(int this, int a2, __int16 a3, int a4); int __thiscall sub_5256B0(int this, int a2, int a3); FILE *__stdcall sub_525A10(int a1); int __thiscall sub_525A30(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_525D70(void *this, int a2); int __stdcall sub_525E20(int a1, int a2); int __stdcall sub_525F30(int a1, int a2); char __thiscall sub_526030(void *this, __int16 a2, int a3, int a4); char __thiscall sub_526230(void *this, __int16 a2, __int16 a3, int a4, int a5); char __thiscall sub_526320(void *this, __int16 a2, __int16 a3, int a4, int a5); int __stdcall sub_5267B0(int a1, int a2); int __thiscall sub_526890(void *this, __int16 a2); int __thiscall sub_526A00(void *this, unsigned __int16 a2, int a3); int __stdcall sub_526BC0(int a1, int a2); int __stdcall sub_526CC0(int a1, int a2); int __thiscall sub_526E50(void *this, int a2, int a3); int __stdcall sub_526F70(int a1, int a2); char __thiscall sub_5270F0(void *this, int a2, char a3, __int16 a4, int a5); void *__thiscall sub_527250(void *this, int a2, __int16 a3, int a4, int a5, unsigned __int8 a6); int __cdecl sub_527360(); signed int __thiscall sub_5273A0(void *this); __int16 __thiscall sub_5278B0(void *this); __int16 __thiscall sub_5278D0(void *this, int a2, __int16 a3, int a4); // int __userpurge sub_527B90(int a1, int a2, int a3, int a4, int a5, int a6, int a7); int __stdcall sub_5280C0(int a1, int a2); char __stdcall sub_528220(int a1); int __stdcall sub_528240(int a1, __int16 a2, int a3, int a4); int __stdcall sub_5283F0(int a1, __int16 a2, int a3, int a4); int __thiscall sub_528720(void *this, int a2, int a3, int a4); int __thiscall sub_528BF0(void *this, int a2); char __thiscall sub_528CB0(void *this, int a2); char __thiscall sub_528E00(void *this); signed int __stdcall sub_528EC0(int a1, int a2, int a3, int a4, int a5, int a6); signed int __thiscall sub_528F70(void *this, __int16 a2, int a3, int a4, int a5, int a6, int a7); int __stdcall sub_529350(int a1, int a2); int __stdcall sub_529540(int a1, int a2); int __stdcall sub_529630(int a1, int a2); int __stdcall sub_529730(int a1, int a2); int __thiscall sub_529830(int this, int a2); int __thiscall sub_5298B0(void *this); void __thiscall sub_5298C0(int this, void *a2); char __thiscall sub_5298E0(void *this, unsigned __int16 a2); __int16 __thiscall sub_529B90(int this, int a2); int __thiscall sub_529CE0(int this, int a2); char __thiscall sub_529DB0(int this); char __thiscall sub_529E60(int this); unsigned __int8 __thiscall sub_529E80(int this); int __thiscall sub_52A0A0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_52AD80(void *this, int a2, int a3, __int16 a4); int __stdcall sub_52B370(int a1, int a2); int __stdcall sub_52B520(int a1, int a2); void *__thiscall sub_52B630(void *this, unsigned __int16 a2, int a3, int a4, char a5); int __thiscall sub_52B7F0(void *this, int a2, int a3, __int16 a4); int __thiscall sub_52BE10(int this); int __thiscall sub_52BE20(_DWORD); // weak int loc_52BE30(); // weak char __thiscall sub_52BE50(void *this, const void *a2); char __thiscall sub_52BE90(void *this, void *a2); char __thiscall sub_52BEE0(void *this, void *a2); void *__thiscall sub_52BF30(void *this, char a2); void __thiscall sub_52BF80(int this); int __thiscall sub_52BFF0(void *this, int a2); int __thiscall sub_52C150(void *this, int a2); int __thiscall sub_52C240(void *this, int a2); int __stdcall sub_52C670(int a1, int a2); int __stdcall sub_52C790(int a1, int a2); int __stdcall sub_52C880(int a1, int a2); int __stdcall sub_52C990(int a1, int a2); char __thiscall sub_52CA80(void *this, const void *a2); char __thiscall sub_52CAC0(int this, unsigned __int16 a2); void *__thiscall sub_52CC40(void *this, char a2); int __thiscall sub_52CCD0(void *this, int a2); int __thiscall sub_52CD90(void *this, int a2); int __thiscall sub_52CE50(int this); char __thiscall sub_52CF80(void *this, int a2); char __thiscall sub_52D0C0(void *this); char __stdcall sub_52D0D0(int a1, int a2, int a3); int __thiscall sub_52D0E0(void *this); char __thiscall sub_52D180(int this, __int16 a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall sub_52D270(int this); char __thiscall sub_52D340(void *this, char a2); int __thiscall sub_52D400(void *this, int a2); char __thiscall sub_52D4D0(void *this, int a2, int a3, __int16 a4, int a5, __int16 a6); char __stdcall sub_52D760(int a1, int a2, __int16 a3, int a4, int a5, __int16 a6, __int16 a7); int __thiscall sub_52D950(void *this, int a2, int a3, int a4); int __thiscall sub_52DBC0(void *this, int a2); char __thiscall sub_52DE10(void *this, int a2, int a3, int a4); int __thiscall sub_52E1A0(void *this, int a2); int __thiscall sub_52E2E0(void *this, unsigned int a2, char a3); int __stdcall sub_52E430(int a1, int a2); int __stdcall sub_52E530(int a1, int a2); int __stdcall sub_52E630(int a1, int a2); int __stdcall sub_52E730(int a1, int a2); int __stdcall sub_52E830(int a1, int a2); int __stdcall sub_52E930(int a1, int a2); int __stdcall sub_52EA30(int a1, int a2); int __stdcall sub_52EB10(int a1, int a2); int __thiscall sub_52EBF0(void *this, __int16 a2, __int16 a3); int __thiscall sub_52ED70(void *this, int a2, int a3, int a4); char __thiscall sub_52F340(void *this, int a2); char __thiscall sub_52F630(void *this, __int16 a2, int a3); char __thiscall sub_52F790(void *this, char a2); char __thiscall sub_52F9B0(void *this, int a2, char a3, int a4); int __thiscall sub_52FAD0(int this, int a2, int a3); int __thiscall sub_52FB00(int this, int a2); int __thiscall sub_52FB40(int this, __int16 a2); int __stdcall sub_52FB80(__int16 a1, int a2, int a3, int a4); int __stdcall sub_5301B0(__int16 a1, int a2, int a3, int a4); int __stdcall sub_5307D0(__int16 a1, int a2, int a3, int a4, int a5); int __stdcall sub_530D40(__int16 a1, int a2, int a3, int a4, int a5); int __stdcall sub_531390(int a1, int a2); int __stdcall sub_531540(int a1, int a2); int __stdcall sub_531670(int a1, int a2); int __stdcall sub_531820(int a1, int a2); int __stdcall sub_531950(int a1, int a2); int __stdcall sub_531C30(int a1, int a2); int __stdcall sub_531D60(int a1, int a2); int __stdcall sub_531FC0(int a1, int a2); int __thiscall sub_5320E0(void *this, int a2, int a3, int a4); int __stdcall sub_532330(int a1, int a2); int __thiscall sub_532410(void *this, int a2); int __thiscall sub_5325D0(void *this, int a2, int a3, int a4); int __stdcall sub_532820(int a1, int a2); int __thiscall sub_532900(void *this, int a2); int __stdcall sub_532AC0(int a1, int a2); int __thiscall sub_532BA0(void *this, int a2, __int16 a3); signed int __thiscall sub_532D50(void *this, int a2, int a3); int __thiscall sub_532F80(void *this); int __thiscall sub_533300(void *this); int __thiscall sub_5336B0(void *this); int __thiscall sub_5337C0(void *this, int a2, int a3, __int16 a4, __int16 a5); char __thiscall sub_533E10(void *this, int a2, int a3, void *a4, int a5); int __thiscall sub_534000(void *this, signed int a2, char a3); int __thiscall sub_534130(void *this, int a2, int a3); int __thiscall sub_534630(void *this, int a2, int a3, __int16 a4); int __thiscall sub_534970(void *this, int a2, int a3, int a4); int __thiscall sub_534AA0(void *this, __int16 a2, int a3); int __thiscall sub_535490(void *this, int a2, int a3, __int16 a4); int __thiscall sub_535650(void *this, int a2, int a3, int a4); int __thiscall sub_535960(void *this, int a2); char __thiscall sub_535C50(int this, unsigned __int8 *a2); FILE *__thiscall sub_535C90(void *this); bool __thiscall sub_535D10(int this); void __thiscall sub_535D40(void *this, int a2, int a3, int a4); int __thiscall sub_535EC0(int this, int a2); FILE *__thiscall sub_535F50(void *this); int __thiscall sub_535FD0(void *this, int a2, int a3, int a4, int a5, int a6, int a7); int __stdcall sub_536340(int a1, int a2, int a3, int a4, int a5, int a6, __int16 a7, int a8); int __stdcall sub_536610(int a1, int a2); int __stdcall sub_536760(int a1, int a2); int __thiscall sub_5368B0(void *this, int a2, int a3, int a4); int __stdcall sub_536CC0(int a1, __int16 a2, int a3, int a4, int a5); int __stdcall sub_536FE0(int a1, __int16 a2, int a3, int a4, int a5); int __thiscall sub_537350(void *this, int a2, int a3, __int16 a4); int __stdcall sub_537710(int a1, int a2); int __stdcall sub_537840(int a1, int a2); int __stdcall sub_537970(int a1, int a2); int __stdcall sub_537A70(int a1, int a2); int __stdcall sub_537C60(int a1, int a2); int __thiscall sub_537D70(void *this, int a2, int a3, int a4); __int16 __thiscall sub_5388F0(void *this, int a2); int __thiscall sub_538CC0(void *this, int a2, int a3, __int16 a4); int __stdcall sub_5392C0(int a1, int a2); int __stdcall sub_5393D0(int a1, int a2); _UNKNOWN *__cdecl sub_5395B0(); char *__thiscall sub_5395C0(void *this); char __cdecl sub_5395D0(unsigned __int16 a1); char __cdecl sub_539710(unsigned __int16 a1, unsigned __int16 a2, unsigned __int8 a3); char __cdecl sub_539890(unsigned int *a1, char a2); char __cdecl sub_539A30(int a1, char a2, char a3); int __stdcall sub_539C30(int a1, int a2); int __stdcall sub_53A060(int a1, int a2); int __stdcall sub_53A440(int a1, int a2); char __cdecl sub_53A870(int a1, int a2, unsigned __int8 a3, int a4); int __cdecl sub_53AAA0(unsigned int a1); char __cdecl sub_53AAC0(unsigned __int16 a1, unsigned __int16 a2, unsigned __int8 a3); char __cdecl sub_53AD70(int a1, int a2, unsigned __int8 a3, unsigned __int8 a4, unsigned __int8 a5, unsigned __int8 a6, unsigned __int8 a7); int __stdcall sub_53B580(int, int, __int16); // weak int __stdcall sub_53C6C0(int, int, __int16); // weak int __stdcall sub_53CFB0(int, int, __int16); // weak // int __userpurge sub_53D950(int a1, int a2, int a3, char a4, int a5, int a6); FILE *__stdcall sub_53DB90(int a1); int __thiscall sub_53DBB0(int this, int a2, __int16 a3); __int16 __thiscall sub_53DC70(int this, __int16 a2, const void *a3); int __thiscall sub_53DCD0(void *this, int a2, int a3, int a4); int __stdcall sub_53DDB0(int a1, int a2); int __thiscall sub_53DED0(void *this, unsigned __int16 a2); int __thiscall sub_53E090(void *this, int a2, int a3, char a4); int __stdcall sub_53E2F0(void *a1, int a2, int **a3, unsigned __int8 a4); int __thiscall sub_53E400(void *this, int a2, int a3, int **a4, unsigned __int8 a5); int __thiscall sub_53E850(void *this, int a2, int a3, int a4); int __thiscall sub_53EB70(void *this); int __thiscall sub_53EF00(void *this, int a2, int a3, int a4); void __thiscall sub_53F7E0(void *this, int a2, int a3, int **a4); int __thiscall sub_53F8C0(void *this, int a2, int a3, int a4); // char __userpurge sub_53FD00(int a1, int a2, int a3, int a4); bool __thiscall sub_540070(int this); char __thiscall sub_540080(int this); bool __thiscall sub_5400A0(int this, const char *a2); int __thiscall sub_5400E0(void *this, int a2); _UNKNOWN *__thiscall sub_540150(int this); _UNKNOWN *__thiscall sub_540220(int this); signed __int16 __thiscall sub_540380(int this); int __thiscall sub_5403A0(int this); signed int __stdcall sub_5403B0(int a1); signed __int16 __thiscall sub_5403C0(void *this, int a2); int __thiscall sub_5403F0(void *this, int a2); int __thiscall sub_540410(void *this, int a2); char __thiscall sub_540430(int this); char __thiscall sub_540440(int this); int __thiscall sub_540450(int this); char *__thiscall sub_540460(void *this); signed int __stdcall sub_540470(int a1); char __stdcall sub_540480(int a1, int a2, int a3, int a4, int a5, int a6, int a7); char __thiscall sub_540490(int this, int a2); char __thiscall sub_5404C0(int this, int a2, int a3); _BYTE *__thiscall sub_5405E0(int this); char *__thiscall sub_540640(void *this); char *__thiscall sub_540650(void *this, int a2); char __thiscall sub_5406C0(void *this, __int16 a2); signed int __thiscall sub_540740(void *this, unsigned __int16 a2, int a3); signed int __thiscall sub_540DE0(int this); // int __usercall sub_540E00(int a1, __int16 a2); signed int __thiscall sub_540E90(void *this, int a2, int a3); signed int __stdcall sub_541350(int a1, int a2); char __thiscall sub_541360(void *this, int a2, int a3); char __stdcall sub_5413D0(int a1, int a2); char __thiscall sub_5413E0(void *this, int a2, void *a3); char __thiscall sub_541500(void *this, int a2); int __thiscall sub_541630(int this, __int16 a2); int __thiscall sub_541670(int this, unsigned __int16 a2); int __thiscall sub_5416A0(void *this, int a2, int a3); char __thiscall sub_541800(void *this, signed int a2, int a3); char __thiscall sub_541B90(void *this); signed int __thiscall sub_541C70(void *this, int a2); signed int __thiscall sub_541EE0(void *this, int a2); char __thiscall sub_542170(void *this, int a2); signed int __thiscall sub_542470(void *this, int a2); signed int __thiscall sub_542610(void *this, int a2); signed int __thiscall sub_542730(void *this, unsigned __int8 a2); int __thiscall sub_542840(void *this, const char *a2); int __thiscall sub_5429E0(void *this); signed int __thiscall sub_542B10(void *this, int a2); signed int __thiscall sub_542C40(void *this, int a2); signed int __thiscall sub_542CB0(void *this, int a2); signed int __thiscall sub_542D90(void *this, char a2); int __thiscall sub_542EC0(void *this, void *a2); int __thiscall sub_543010(void *this, void *a2); signed int __thiscall sub_543130(void *this, int a2, int a3); signed int __thiscall sub_543C70(void *this, int a2, signed int *a3); signed int __thiscall sub_544380(void *this, int a2, int a3); char __thiscall sub_544B60(void *this, int a2); char __thiscall sub_545510(void *this, int a2, int a3); int __stdcall sub_5458E0(int a1); int __thiscall sub_545930(void *this, __int16 a2); int __thiscall sub_545AF0(void *this, int a2); int __thiscall sub_545B90(void *this, int a2); signed int __thiscall sub_545C60(void *this, int a2); signed int __thiscall sub_545D70(void *this, int a2); signed __int16 __thiscall sub_545E60(void *this); char __thiscall sub_545F60(void *this); char __thiscall sub_545FE0(void *this, __int16 a2); char __cdecl sub_546100(); char __thiscall sub_546150(void *this); int __thiscall sub_5461B0(void *this); char __thiscall sub_5464C0(void *this, int a2); signed int __thiscall sub_546810(void *this, int a2, signed int a3); char __thiscall sub_546A60(void *this, int a2, char *a3, char *a4, char *a5, signed int a6, char a7, char *a8); int loc_547010(); // weak void *__thiscall sub_547020(void *this, char a2); unsigned __int16 __thiscall sub_547050(void *this, unsigned __int16 a2); int __thiscall sub_547080(void *this, int a2); int __thiscall sub_5470B0(void *this, int a2); int __thiscall sub_5470E0(void *this, int a2); int __thiscall sub_547110(void *this, int a2); int __thiscall sub_547140(void *this, int a2); int __thiscall sub_547170(void *this, int a2); int __thiscall sub_5471A0(void *this, int a2); int __thiscall sub_5471D0(void *this, int a2); int __thiscall sub_547200(void *this, int a2); int __thiscall sub_547230(void *this, int a2); int __thiscall sub_547260(void *this, int a2); int __thiscall sub_547290(void *this, int a2); void __thiscall sub_5472C0(int this); int __thiscall sub_5472D0(int this); int __thiscall sub_547360(int this); int __thiscall sub_5473D0(int this); int __thiscall sub_547430(int this); int __thiscall sub_5474A0(int this); int __thiscall sub_547510(int this); int __thiscall sub_547570(int this); int __thiscall sub_5475D0(int this); int __thiscall sub_547630(int this, int a2); void __thiscall sub_547640(int this); void __thiscall sub_547650(int this); char __thiscall sub_547660(int this, char a2); int __thiscall sub_547670(int this, int a2); int __thiscall sub_5476B0(int this, char a2); int __thiscall sub_5476D0(void *this); int __cdecl sub_547760(); void __thiscall sub_547890(int this); void *__thiscall sub_547900(void *this); int loc_5479F0(); // weak _DWORD __fastcall sub_547A00(void *); // weak int __thiscall sub_547A10(int this, char a2); char __thiscall sub_547A30(int this); int loc_547A40(); // weak int __thiscall sub_547A50(int this); int __thiscall sub_547AF0(void *this); void __thiscall sub_547B90(int this); int loc_547C00(); // weak void __thiscall sub_547C10(int this); int __thiscall sub_547C70(_DWORD); // weak int loc_547C80(); // weak int loc_547C90(); // weak int __thiscall sub_547CA0(void *this, const char *a2); int __thiscall sub_547D60(int this, int a2, const void *a3); int __thiscall sub_547D70(void *this); void *__thiscall sub_547DF0(void *this); void __thiscall sub_547EC0(int this); void *__thiscall sub_547F90(void *this, char a2); int __stdcall nullsub_5(int, int); // weak FILE *__cdecl sub_547FD0(); FILE *__thiscall sub_548000(void *this, int a2, int a3, int a4); int __thiscall sub_548020(void *, char); // idb char __thiscall sub_548080(int this, int a2, int a3); int __thiscall sub_5480D0(int this, int a2); int __stdcall sub_548190(int a1); int __stdcall sub_5481B0(int a1); void __thiscall sub_5481D0(void *this, int a2); _UNKNOWN *__cdecl sub_548330(); char *__thiscall sub_548340(void *this); int __thiscall sub_548350(int this, int a2); FILE *__thiscall sub_548360(int this); __int16 __thiscall sub_548710(int this); __int16 __thiscall sub_548720(int this, __int16 a2); char __thiscall sub_548740(void *this); void __thiscall sub_548840(int this); int __thiscall sub_548850(int this, int a2); int __thiscall sub_5488B0(void *this); unsigned int __thiscall sub_5489B0(void *this, unsigned __int16 a2, int a3, int a4, int a5, int a6); char __thiscall sub_5489E0(int this); char __thiscall sub_5489F0(int this, char a2); int __thiscall sub_548A00(int this, int a2, signed int a3, signed int a4, int a5, int a6); char __thiscall sub_548A80(int this, int a2, signed int *a3); int __thiscall sub_548C30(int this); void __thiscall sub_548C40(int this); void __thiscall sub_548C50(int this); FILE *__thiscall sub_548C60(int this); char __thiscall sub_548CD0(int this); int __thiscall sub_548CF0(int this, int a2, int a3); __int64 __thiscall sub_548D10(int this); char __thiscall sub_548D20(int this, char a2); bool __thiscall sub_548D30(int this, int a2); __int64 __stdcall sub_548D70(int a1, int a2); int __thiscall sub_548D80(int this, int a2, int a3); // int __userpurge sub_548DD0(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_548EB0(void *this, int a2, int a3); // int __userpurge sub_548F70(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_549050(void *this, int a2, int a3); // char __userpurge sub_549130(int a1, int a2, int a3, int a4); void __thiscall sub_5491A0(int this); char __thiscall sub_5491B0(int this, char a2); int __thiscall sub_5491D0(int this); int __thiscall sub_5491E0(void *this, const char *a2, unsigned __int8 a3); int __thiscall sub_549230(int this, int a2); int __thiscall sub_549240(int this); bool __thiscall sub_549250(void *this, int a2); bool __thiscall sub_549290(void *this, int a2); bool __thiscall sub_549340(int this, int a2); char __thiscall sub_549370(void *this, int a2); char __thiscall sub_5493A0(int this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5); int loc_549400(); // weak void *__thiscall sub_549420(void *this, char a2); void *__thiscall sub_549460(void *this, char a2); int __thiscall sub_5494A0(void *this); char __stdcall sub_5494B0(int a1); char __thiscall sub_549500(int this, int a2); int __thiscall sub_5495B0(int this, int a2, int a3); char __thiscall sub_549640(void *this); int __stdcall sub_549760(int a1, int a2, int a3, int a4); int __thiscall sub_5497F0(void *this); int __thiscall sub_549850(void *this); int __thiscall sub_549900(void *this); char __thiscall sub_549A40(void *this, int a2, int a3, int a4, int a5, int a6); char __thiscall sub_549B60(void *this, int a2, int a3); char __thiscall sub_549C70(void *this, int a2, int a3, _UNKNOWN *a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); char __thiscall sub_549E00(void *this, int a2, int a3, _UNKNOWN *a4, int a5, int a6, int a7, int a8); char __thiscall sub_549F80(void *this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5, char a6); char __thiscall sub_54A4F0(void *this, int a2, char a3); char __thiscall sub_54AA80(void *this, int a2, int a3, int a4, int a5, int a6, char a7, __int16 a8); char __thiscall sub_54B4E0(void *this, int a2, int a3, int a4, int a5, int (__thiscall *a6)(_DWORD, _DWORD, _DWORD), int a7, int a8, int a9, char a10, __int16 a11); signed __int16 __thiscall sub_54BF00(void *this); void __thiscall sub_54C020(int this); void *__thiscall sub_54C080(void *this, char a2); int __thiscall sub_54C0F0(void *this); int __thiscall sub_54C400(void *this); int __thiscall sub_54C710(void *this); void *__thiscall sub_54CA20(void *this, const char *a2); void *__thiscall sub_54CB10(void *this, int a2, const char *a3, const void *a4); void *__thiscall sub_54CC20(void *this, char a2, __int16 a3, int a4, __int16 a5); int __thiscall sub_54CD70(void *this, int a2, int a3, int a4); int __thiscall sub_54CF80(int this); void __thiscall sub_54D040(void *this); int __thiscall sub_54D0F0(void *this, __int16 a2, __int16 a3); int __thiscall sub_54D1D0(void *this, __int16 a2, __int16 a3, __int16 a4); int __thiscall sub_54D310(void *this); int __thiscall sub_54D410(void *this); int __thiscall sub_54D4C0(void *this, int a2, int a3, int a4); int __thiscall sub_54D7E0(void *this); int loc_54D870(); // weak char __thiscall sub_54D890(void *this, int a2, unsigned __int16 a3); void __thiscall sub_54DA30(int this); int __thiscall sub_54DDA0(void *this, __int16 a2); int __thiscall sub_54DE90(void *this, __int16 a2); int __thiscall sub_54DF90(void *this, int a2, int a3); char __thiscall sub_54E220(void *this, int a2, int a3); char __thiscall sub_54E2F0(void *this, int a2, int a3); char __thiscall sub_54E400(void *this, int a2, int a3); int __thiscall sub_54E4D0(void *this, int a2); int __thiscall sub_54E5A0(void *this, int a2); int __thiscall sub_54E670(void *this, int a2); int __thiscall sub_54E740(void *this, __int16 a2); int __thiscall sub_54E810(void *this, int a2, int a3); int __thiscall sub_54E880(void *this); char __thiscall sub_54E8E0(void *this, const char *a2, int a3); int __thiscall sub_54EA20(void *this, char a2); int __thiscall sub_54EB10(void *this, int a2, int a3, int a4); int __thiscall sub_54ED00(void *this, int a2, int a3, int a4); int __stdcall sub_54EF00(int a1, int a2); int __stdcall sub_54F000(int a1, int a2); int __stdcall sub_54F110(int a1, int a2); int __stdcall sub_54F280(int a1, int a2); int __stdcall sub_54F3A0(int a1, int a2); int __stdcall sub_54F4B0(int a1, int a2); int __thiscall sub_54F5C0(void *this, int a2, int a3, int a4); int __stdcall sub_54F7C0(int a1, int a2); int __thiscall sub_54F8A0(void *this, int a2); int __thiscall sub_54F910(void *this, int a2, int a3, int a4); __int16 __thiscall sub_54FA10(int this, const void *a2); int __thiscall sub_54FA60(int this, unsigned __int16 a2); int __thiscall sub_54FAA0(void *this); int __stdcall sub_54FBD0(int a1, int a2); char __stdcall sub_54FCB0(int a1); char __thiscall sub_54FD00(void *this, int a2); int __thiscall sub_550220(void *this, int a2, int a3, int a4); int __thiscall sub_5502E0(void *this); int __thiscall sub_5503F0(void *this, int a2, int a3, int a4); int __thiscall sub_5504A0(void *this, int a2); int __thiscall sub_550940(void *this, int a2, int a3); int __thiscall sub_5509F0(void *this); int __thiscall sub_550A70(void *this, int a2); int __thiscall sub_550B20(void *this); int __thiscall sub_550DC0(void *this, int a2); int __stdcall sub_550E40(int a1); int __thiscall sub_550E90(void *this, int a2); char __thiscall sub_550F60(void *this, int a2, int a3); int __cdecl sub_551010(); int __thiscall sub_551050(void *this); int __thiscall sub_5510C0(void *this); int __thiscall sub_5511B0(int this, const char *a2); int __thiscall sub_551280(int this, const char *a2); int __thiscall sub_551340(int this); int __thiscall sub_551410(int this); int __thiscall sub_5514D0(int this, const char *a2); int __thiscall sub_5515A0(int this, char a2); int __thiscall sub_551650(int this, int a2); char __stdcall sub_551700(int a1, int a2, int a3); void __thiscall sub_551790(void *this); int __thiscall sub_551820(int this); void __thiscall sub_551830(void *this); int __thiscall sub_5518A0(int this); char __thiscall sub_551960(int this); int __thiscall sub_5519D0(void *this, int a2, char a3, int a4); int __thiscall sub_551AA0(void *this); int __thiscall sub_551B90(void *this); char __thiscall sub_551C80(int this, int a2, _UNKNOWN *a3); char __thiscall sub_551CC0(void *this, int (__thiscall *a2)(char *, void *, _DWORD), int a3, int a4, int a5, char a6); char __thiscall sub_551E30(void *this, int a2, char a3); char __thiscall sub_551FD0(void *this, int a2, int a3, int a4, int a5, int a6, char a7, int a8); char __stdcall sub_552170(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10); void __thiscall sub_552200(void *this); void *__thiscall sub_552260(void *this, char a2); FILE *__thiscall sub_552290(int this); char __thiscall sub_5522F0(int this); FILE *__thiscall sub_552380(void *this); int __thiscall sub_5523E0(void *this); void __thiscall sub_552490(void *this); char __thiscall sub_552510(void *this, int a2); char __thiscall sub_552570(void *this, int a2); char __thiscall sub_5525D0(void *this, int a2); char __thiscall sub_552650(void *this, int a2); int __thiscall sub_5526D0(int this, int a2); char __thiscall sub_552760(int this, unsigned __int16 a2); int __thiscall sub_5528E0(void *this); char __thiscall sub_552B80(int this, unsigned __int16 a2); int __thiscall sub_552D00(int this); void __thiscall sub_552D70(int this); void __thiscall sub_552E70(void *this); _UNKNOWN *__cdecl sub_552F10(); int __thiscall sub_552F20(int this); _UNKNOWN *__cdecl sub_552F30(); _UNKNOWN *__cdecl sub_552F40(); _UNKNOWN *__cdecl sub_552F50(); _UNKNOWN *__cdecl sub_552F60(); _UNKNOWN *__cdecl sub_552F70(); _UNKNOWN *__cdecl sub_552F80(); signed int __cdecl sub_552F90(); _UNKNOWN *__cdecl sub_552FA0(); _UNKNOWN *__cdecl sub_552FB0(); _UNKNOWN *__cdecl sub_552FC0(); int (__stdcall ***__cdecl sub_552FD0())(int); char __cdecl sub_552FE0(); int __thiscall sub_552FF0(void *this, int a2); int __cdecl sub_553000(); signed int __stdcall sub_553020(unsigned __int16 a1); _UNKNOWN *__cdecl sub_553090(); int __cdecl sub_5530A0(); FILE *__cdecl sub_5530C0(); _UNKNOWN *__cdecl sub_5530E0(); int __cdecl sub_5530F0(); _UNKNOWN *__cdecl sub_553100(); _UNKNOWN *__cdecl sub_553110(); _UNKNOWN *__cdecl sub_553120(); int __cdecl sub_553130(); char *__cdecl sub_553140(); int __cdecl sub_553150(); int __cdecl sub_553160(); int __cdecl sub_553170(); int __cdecl sub_553180(); int __cdecl sub_553190(); _UNKNOWN *__cdecl sub_5531A0(); signed int __cdecl sub_5531B0(); signed int __cdecl sub_5531D0(); char __cdecl sub_5531E0(); int __thiscall sub_5531F0(void *this); char __cdecl sub_553220(); void __thiscall sub_553270(void *); // idb char __thiscall sub_553280(int this, int a2); char *__thiscall sub_5532B0(void *this); signed __int16 __stdcall sub_5532C0(unsigned __int16 a1); char *__thiscall sub_553310(void *this); char __thiscall sub_553320(int this, char a2); char __thiscall sub_553330(int this); signed int __thiscall sub_553340(int this); void __thiscall sub_553370(int this); int __thiscall sub_5533D0(int this, int a2); char __cdecl sub_553440(); char *__thiscall sub_553450(void *this); signed __int16 __stdcall sub_553460(unsigned __int16 a1); int __thiscall sub_5534B0(int this, int a2); void __thiscall sub_5534D0(void *this); _UNKNOWN *__cdecl sub_553560(); int __thiscall sub_553570(int this); bool __thiscall sub_553580(int this); int __thiscall sub_5535A0(int this); char *__thiscall sub_5535B0(void *this); char *__thiscall sub_5535C0(void *this); bool __thiscall sub_5535D0(int this); char *__thiscall sub_5535E0(void *this); bool __thiscall sub_5535F0(void *this); void __thiscall sub_553610(int this, int a2); _UNKNOWN *__cdecl sub_5536D0(); void __thiscall sub_5536E0(int this); FILE *__thiscall sub_5536F0(int this, FILE *a2); int __thiscall sub_553720(int this); char __thiscall sub_553730(int this, int a2); char *__thiscall sub_553750(void *this); bool __thiscall sub_553760(int this); __int16 __thiscall sub_553770(int this); __int16 __thiscall sub_553780(int this); __int16 __thiscall sub_553790(int this, __int16 a2); void __thiscall sub_5537B0(int this); void __thiscall sub_5537C0(int this); bool __thiscall sub_5537D0(void *this); int __thiscall sub_5537F0(int this); int __thiscall sub_553800(int this); unsigned int __thiscall sub_553810(void *this, int a2); char __thiscall sub_553820(void *this, int a2, int a3, int a4); bool __thiscall sub_553870(void *this, int a2); char __thiscall sub_5538B0(int this); __int16 __thiscall sub_5538C0(int this); int __thiscall sub_5538E0(int this, int a2); char __thiscall sub_5538F0(int this); char __thiscall sub_553900(int this, char a2); char __thiscall sub_553920(int this, char a2, __int16 a3); char __thiscall sub_553940(int this, char a2, __int16 a3); char __thiscall sub_553960(int this); char __thiscall sub_553970(int this); __int16 __thiscall sub_553980(int this); __int16 __thiscall sub_553990(int this); int __thiscall sub_5539A0(int this, int a2, int a3, int a4, int a5); int __thiscall sub_553A00(int this); bool __thiscall sub_553A50(int this, int a2); char __thiscall sub_553A90(int this, int a2); unsigned int __thiscall sub_553AC0(int this, int a2); void __thiscall sub_553B00(void *); // idb _UNKNOWN *__cdecl sub_553B10(); int __thiscall sub_553B20(int this, int a2); int __thiscall sub_553B90(void *this, int a2); char *__thiscall sub_553BC0(void *this); signed __int16 __stdcall sub_553BD0(unsigned __int16 a1); int __thiscall sub_553C20(int this); int __thiscall sub_553C30(int this, int a2); void __thiscall sub_553C50(int this); _UNKNOWN *__cdecl sub_553CB0(); int __thiscall sub_553CC0(void *this, int a2); signed __int16 __stdcall sub_553CF0(unsigned __int16 a1); void __thiscall sub_553D40(void *); // idb _UNKNOWN *__cdecl sub_553DE0(); int __thiscall sub_553DF0(int this, int a2); int __thiscall sub_553E60(void *this, int a2); char *__thiscall sub_553E90(void *this); signed __int16 __stdcall sub_553EA0(unsigned __int16 a1); int __thiscall sub_553EF0(int this, int a2); int __thiscall sub_553F10(void *, char); // idb int __thiscall sub_553F70(void *, char); // idb int __thiscall sub_554030(void *, char); // idb int __thiscall sub_554090(void *, char); // idb int __thiscall sub_554150(void *, char); // idb int __thiscall sub_5541B0(int this, int a2, int a3); int __thiscall sub_554220(int this, int a2, void *a3, int a4); void __thiscall sub_554300(int this); int __thiscall sub_554350(int this, int a2, int a3, int a4, int a5); int __thiscall sub_554380(int this); int __thiscall sub_554390(int this, int a2); signed __int16 __stdcall sub_5543A0(unsigned __int16 a1); void *__thiscall sub_5543F0(void *this, char a2); void __thiscall sub_554420(int this); _UNKNOWN *__cdecl sub_554530(); signed int __thiscall sub_554540(int this); char *__thiscall sub_5545A0(void *this); char *__thiscall sub_5545B0(void *this); int __thiscall sub_5545C0(int this); unsigned int __thiscall sub_5545D0(int this); int __thiscall sub_554610(int this); signed int __thiscall sub_554620(void *this); void __thiscall sub_554650(int this, void *a2); void __thiscall sub_554670(void *this, int a2); bool __thiscall sub_5546F0(void *this); char __cdecl sub_554700(); char __thiscall sub_554710(int this); unsigned int __thiscall sub_554720(void *this); unsigned int __thiscall sub_554780(int this); int __thiscall sub_5547A0(int this, int a2); int __thiscall sub_554800(int this); int __thiscall sub_554810(int this); int __thiscall sub_554820(void *this); int __thiscall sub_554890(void *this); int __thiscall sub_554900(int this); char *__thiscall sub_554910(void *this); int __thiscall sub_554920(void *this, int a2); int __thiscall sub_554980(int this); int __thiscall sub_554990(void *this); int __thiscall sub_554A00(int this); int __thiscall sub_554A20(int this); int __thiscall sub_554A30(int this, unsigned int a2); int __thiscall sub_554A60(void *this, int a2); void __thiscall sub_554AA0(int this); int __thiscall sub_554AB0(int this, unsigned int a2); int __thiscall sub_554AE0(void *this, int a2); unsigned __int16 __stdcall sub_554B20(unsigned __int16 a1); int __thiscall sub_554B70(int this); __int16 __thiscall sub_554B90(int this); char *__thiscall sub_554BA0(void *this); int __thiscall sub_554BB0(void *this); int __thiscall sub_554BE0(int this); int __thiscall sub_554BF0(int this); bool __thiscall sub_554C00(int this); int __thiscall sub_554C10(int this, int a2, char a3); int __thiscall sub_554C40(int this); int __thiscall sub_554C50(int this); char __thiscall sub_554C70(int this, char a2); char __thiscall sub_554C90(int this, char a2); char __thiscall sub_554CB0(int this); char __thiscall sub_554CC0(int this); __int16 __thiscall sub_554CE0(void *this); char __thiscall sub_554D00(int this); char __thiscall sub_554D10(int this, char a2); int __thiscall sub_554D20(int this); int __thiscall sub_554D30(int this, int a2); int __thiscall sub_554D40(int this, int a2); bool __thiscall sub_554D50(void *this); int __thiscall sub_554D80(int this, char a2); char __thiscall sub_554DA0(int this); void *__thiscall sub_554DB0(int this, const char *a2); int __thiscall sub_554DE0(void *this); void __thiscall sub_554E50(int this); void __thiscall sub_554F00(int this); _UNKNOWN *__cdecl sub_554F10(); signed int __cdecl sub_554F20(); int __thiscall sub_554F30(void *this, int a2); bool __thiscall sub_554F70(int this); char __cdecl sub_554F90(); int __thiscall sub_554FA0(int this); signed __int16 __stdcall sub_554FB0(unsigned __int16 a1); int __thiscall sub_555000(int this); int __thiscall sub_555010(int this, int a2); void __thiscall sub_555030(int this); _UNKNOWN *__cdecl sub_555040(); int __thiscall sub_555050(int this); char __thiscall sub_5550D0(int this); int __thiscall sub_5550F0(int this, int a2); signed __int16 __stdcall sub_555110(unsigned __int16 a1); int __thiscall sub_555160(int this); int __thiscall sub_5551E0(int this); int __thiscall sub_5551F0(int this, int a2); bool __thiscall sub_555220(int this); char __thiscall sub_555260(int this); void __thiscall sub_555290(int this); _UNKNOWN *__cdecl sub_5552A0(); int __thiscall sub_5552B0(int this, int a2); int __thiscall sub_555310(void *this, int a2); int __thiscall sub_555380(int this); signed int __thiscall sub_555390(int this); signed int __thiscall sub_5553A0(int this); signed __int16 __stdcall sub_5553B0(unsigned __int16 a1); _UNKNOWN *__cdecl sub_555400(); char __cdecl sub_555410(); void *__thiscall sub_555420(int this, const char *a2); int *__thiscall sub_555450(int this); int __thiscall sub_555540(int this, int a2); signed __int16 __thiscall sub_555560(int this); signed __int16 __thiscall sub_5555B0(int this); int __thiscall sub_555600(int this); int __thiscall sub_555960(void *, char); // idb int __thiscall sub_5559F0(void *, char); // idb int __thiscall sub_555A50(void *, char); // idb int __thiscall sub_555AB0(void *, char); // idb int __thiscall sub_555B10(void *, char); // idb int __thiscall sub_555B70(int this, int a2); void __thiscall sub_555C10(int this); _UNKNOWN *__cdecl sub_555C20(); int __thiscall sub_555C30(int this); char *__thiscall sub_555C50(int this, const char *a2); unsigned __int64 __thiscall sub_555C90(void *this); signed __int16 __stdcall sub_555CF0(unsigned __int16 a1); int __thiscall sub_555D40(int this, int a2, int a3, int a4, int a5, int a6, signed int a7); int __thiscall sub_555D90(void *, char); // idb char __thiscall sub_555DF0(void *this, int a2, int a3, int a4); signed int __thiscall sub_556100(void *this); signed int __thiscall sub_5561E0(void *this); int __thiscall sub_5564D0(void *this, int a2, int a3, int a4); int __thiscall sub_556710(void *this, int a2, int a3, int a4); int __thiscall sub_556910(int this); int __thiscall sub_556950(int this, int a2); int __thiscall sub_5569C0(void *this, int a2, char a3, int a4); int __thiscall sub_556C30(void *this, int a2); int __thiscall sub_556D40(int this); char __thiscall sub_556DD0(void *this, int a2); char __thiscall sub_556E10(void *this, int a2); char __thiscall sub_556E50(int this, int a2); char __thiscall sub_556EA0(int this, int a2); char __cdecl sub_556EF0(int a1, __int16 a2, char *a3); int __thiscall sub_557020(int this); int __thiscall sub_557100(int this); int __thiscall sub_557140(int this); int __thiscall sub_5571E0(int this); int __thiscall sub_557270(int this); int loc_557370(); // weak void __thiscall sub_5573B0(int this); _UNKNOWN *__cdecl sub_557700(); char *__thiscall sub_557710(void *this); char *__thiscall sub_557720(void *this); char *__thiscall sub_557730(void *this); char __thiscall sub_557740(int this); char __thiscall sub_557750(int this, char a2); int __thiscall sub_557760(int this); int __thiscall sub_557770(void *this); char __thiscall sub_5577A0(int this, unsigned __int16 a2, unsigned int a3); char *__thiscall sub_5577B0(void *this); __int64 __thiscall sub_5577C0(int this); __int64 __thiscall sub_5577D0(int this); int __thiscall sub_5577E0(int this); char __thiscall sub_5577F0(int this); char *__thiscall sub_557800(void *this); __int16 __thiscall sub_557810(int this, __int16 a2); char *__thiscall sub_557830(void *this); char __thiscall sub_557840(int this); char __thiscall sub_557860(int this); int __thiscall sub_557870(void *this, int a2); int __thiscall sub_557910(int this); int __thiscall sub_557920(int this); bool __thiscall sub_557930(int this); char __thiscall sub_557950(int this); char __thiscall sub_557970(int this); unsigned int __thiscall sub_557980(void *this); signed int __cdecl sub_5579C0(); int __thiscall sub_5579D0(int this); signed int __thiscall sub_5579E0(void *this, int a2); int __thiscall sub_557A10(void *this); int __thiscall sub_557A70(void *this); __int16 __thiscall sub_557AD0(int this); int __thiscall sub_557AE0(int this); int __thiscall sub_557AF0(int this); char *__thiscall sub_557B00(void *this); int __thiscall sub_557B10(int this, int a2, int a3); int __thiscall sub_557B20(void *this, int a2, int a3, unsigned __int16 a4, int a5); int __thiscall sub_557B60(void *this, int a2); int __thiscall sub_557C20(int this); int __thiscall sub_557C30(int this); int __thiscall sub_557C40(int this, unsigned int a2); int __thiscall sub_557C70(void *this, int a2); void __thiscall sub_557CB0(int this); unsigned int __thiscall sub_557CC0(void *this, int a2); int __thiscall sub_557D50(void *this, int a2); signed __int16 __stdcall sub_557DF0(unsigned __int16 a1); int __thiscall sub_557E40(int this, int a2); int __thiscall sub_557E70(int this); __int16 __thiscall sub_557E80(int this); __int16 __thiscall sub_557E90(int this); __int16 __thiscall sub_557EA0(int this, __int16 a2); signed int __thiscall sub_557EC0(void *this); int __thiscall sub_557F00(void *this, int a2); int __thiscall sub_557F30(int this, int a2); int __thiscall sub_557F60(int this); int __thiscall sub_557FA0(int this, int a2); int __thiscall sub_557FE0(int this, int a2, const char *a3, int a4, int a5); void *__thiscall sub_558030(void *this, char a2); char __thiscall sub_558050(int this, unsigned __int16 a2); void *__thiscall sub_558060(void *this, char a2); int __thiscall sub_558080(void *this); int __thiscall sub_5580C0(int this); int __thiscall sub_5580D0(int this); int __thiscall sub_558110(int this, int a2, int a3); int __thiscall sub_558130(int this, int a2); int __thiscall sub_558140(int this); int __thiscall sub_558150(void *this, int a2); char *__thiscall sub_558260(void *this); char *__thiscall sub_558270(void *this); char *__thiscall sub_558280(void *this); char __thiscall sub_558290(int this); int __thiscall sub_5582A0(int this, int a2); int __thiscall sub_5582B0(int this, int a2); char *__thiscall sub_5582C0(void *this); __int16 __thiscall sub_5582D0(int this, __int16 a2); char *__thiscall sub_5582F0(void *this); __int16 __thiscall sub_558300(int this, __int16 a2); char *__thiscall sub_558320(void *this); int __thiscall sub_558330(int this); int __thiscall sub_558350(int this); int __thiscall sub_558370(int this); char *__thiscall sub_558390(void *this); signed int __cdecl sub_5583A0(); int __thiscall sub_5583B0(int this); int __thiscall sub_5583F0(void *this); int __thiscall sub_558430(void *this); int __thiscall sub_558470(void *this); int __thiscall sub_5584B0(void *this); int __thiscall sub_5584F0(void *this); int __thiscall sub_558530(int this); unsigned int __thiscall sub_558540(void *this); int __thiscall sub_558580(int this); signed int __thiscall sub_558590(void *this); int __thiscall sub_5585A0(int this); int __thiscall sub_5585B0(int this, int a2); int __thiscall sub_5585C0(int this); int __thiscall sub_5585D0(int this, int a2); bool __thiscall sub_5585E0(int this); bool __thiscall sub_5585F0(void *this); bool __thiscall sub_558620(int this); void __thiscall sub_558630(int this); bool __thiscall sub_558640(int this); void __thiscall sub_558650(int this); char __thiscall sub_558660(int this); char __thiscall sub_558670(int this, unsigned int a2, unsigned __int8 a3); char __thiscall sub_5586F0(int this); void __thiscall sub_558700(int this); void __thiscall sub_558710(int this); int __thiscall sub_558720(int this, int a2, int a3, int a4); __int64 __thiscall sub_558750(int this); int __thiscall sub_558760(int this, int a2, int a3); __int64 __thiscall sub_558780(int this); int __thiscall sub_558790(int this, int a2, int a3); __int16 __thiscall sub_5587B0(int this); int __thiscall sub_5587C0(int this); int __thiscall sub_5587D0(int this, int a2); int __thiscall sub_5587E0(int this); int __thiscall sub_5587F0(int this, int a2); char __thiscall sub_558800(int this); int __thiscall sub_558810(int this); char __thiscall sub_558820(int this, char a2); int __thiscall sub_558830(int this, int a2); int __thiscall sub_558840(int this); char __thiscall sub_558860(int this); bool __thiscall sub_558870(void *this); char __thiscall sub_5588A0(int this); char *__thiscall sub_5588B0(void *this); int __thiscall sub_5588C0(int this, char a2); char __thiscall sub_5588E0(int this); char __thiscall sub_5588F0(int this); char __thiscall sub_558910(int this, char a2); char __thiscall sub_558920(int this); char __thiscall sub_558940(int this, char a2); int __thiscall sub_558950(int this); int __thiscall sub_558960(void *this); int __thiscall sub_558A60(int this, __int16 a2, int a3, int a4, int a5, int a6); bool __thiscall sub_558B20(void *this); int __thiscall sub_558C10(void *this, __int16 a2, int a3); int __thiscall sub_558CA0(int this, int a2); unsigned int __thiscall sub_558CC0(void *this); unsigned int __thiscall sub_558D00(void *this); int __thiscall sub_558D40(int this); FILE *__thiscall sub_558E10(int this, int a2); signed int __thiscall sub_558E70(int this); int __thiscall sub_558EA0(int this); signed int __thiscall sub_558EC0(int this); signed int __thiscall sub_558EE0(int this); int __thiscall sub_558F00(void *this); int __thiscall sub_559000(int this); int __thiscall sub_559080(int this); int __thiscall sub_559100(int this); int __thiscall sub_5591F0(int this); int __thiscall sub_559370(int this); int __thiscall sub_5593F0(int this); int __thiscall sub_559410(int this); int __thiscall sub_559480(void *, char); // idb int __thiscall sub_5594E0(void *this, int a2, int a3, int a4); int __thiscall sub_559750(int this, unsigned int a2, unsigned int a3, int a4, unsigned int a5, int a6); void *__thiscall sub_5598C0(void *this, __int16 a2); char __thiscall sub_5599D0(void *this, int a2, __int16 a3, int a4, int a5, char a6); void *__thiscall sub_559CA0(int this, __int16 a2); char __thiscall sub_559CD0(int this, __int16 a2, int a3, int a4); char __thiscall sub_559D00(int this, __int16 a2, int a3, int a4); int __thiscall sub_559D30(int this); int __thiscall sub_55A2E0(int this); int __thiscall sub_55A310(void *this); // char __userpurge sub_55B340(int a1, int a2, int a3, int a4, int a5); // bool __userpurge sub_55B4F0(int a1, int a2, int a3, int a4, int a5, signed int a6, int a7, int a8, int a9); char __thiscall sub_55B620(void *this, char a2); char __thiscall sub_55B650(int this); int __thiscall sub_55B660(void *this); int __thiscall sub_55B680(int this, __int16 a2, int a3); int __thiscall sub_55B690(int this); int __thiscall sub_55B6C0(int this); int __thiscall sub_55B740(int this); int __thiscall sub_55B750(int this); int __thiscall sub_55B760(int this, int a2); bool __thiscall sub_55B770(int this); bool __thiscall sub_55B7B0(int this, int a2); char __thiscall sub_55B830(void *this); int __thiscall sub_55B930(void *this, int a2); int __thiscall sub_55BA60(void *this, int a2); char __thiscall sub_55BB10(void *this, unsigned __int8 *a2, int a3, int a4); int __thiscall sub_55BC70(void *this, int a2, int a3); void __thiscall sub_55BF20(void *this, void *a2, int a3, int a4); int __thiscall sub_55C1B0(void *this, int a2, int a3, int a4); int __cdecl sub_55C1D0(); char __stdcall sub_55C210(int a1, int a2, int a3); int __thiscall sub_55C320(void *this); int __thiscall sub_55C410(void *this); int __thiscall sub_55C4E0(void *this); char __thiscall sub_55C5B0(void *this, __int16 a2); char __thiscall sub_55C630(void *this, int a2); int __cdecl sub_55C670(int a1, int a2, int a3, const char *a4); char __thiscall sub_55C730(int this); char __thiscall sub_55C750(void *this, unsigned __int8 a2); int __thiscall sub_55C7B0(int this, int a2); char __thiscall sub_55C7C0(int this, char a2); char __thiscall sub_55C7D0(int this); void __thiscall sub_55C7E0(void *this); int __stdcall sub_55C870(int a1); int __thiscall sub_55C890(int this, int a2); int __thiscall sub_55C8B0(int this); int __thiscall sub_55C920(int this, unsigned __int8 a2, __int16 a3); int __thiscall sub_55C950(int this, int a2); void __thiscall sub_55C9D0(int this); _UNKNOWN *__cdecl sub_55CA30(); int __thiscall sub_55CA40(void *this); char __thiscall sub_55CA60(void *this, unsigned __int16 a2, unsigned int a3); void __thiscall sub_55CA70(int this, int a2); int __thiscall sub_55CA90(void *this, int a2); bool __thiscall sub_55CB20(void *this); char __cdecl sub_55CB50(); char __thiscall sub_55CB60(int this); signed int __thiscall sub_55CB80(int this); int __thiscall sub_55CBA0(int this); int __thiscall sub_55CCC0(int this); char *__thiscall sub_55CDE0(void *this); int __thiscall sub_55CDF0(int this); int __thiscall sub_55CE00(void *this); int __thiscall sub_55CE60(void *this); signed __int16 __stdcall sub_55CE70(unsigned __int16 a1); int __thiscall sub_55CEC0(int this); int __thiscall sub_55CED0(int this); bool __thiscall sub_55CEF0(void *this); int __thiscall sub_55CF30(int this); int __thiscall sub_55CF50(int this); int __thiscall sub_55CF70(int this, int a2); int __thiscall sub_55CF80(int this); int __thiscall sub_55CF90(int this, int a2); int __thiscall sub_55CFA0(int this); int __thiscall sub_55CFB0(int this, int a2, int a3); char __thiscall sub_55CFD0(int this); int __thiscall sub_55CFE0(int this, unsigned __int8 a2); int __thiscall sub_55D010(int this); bool __thiscall sub_55D030(int this); void __thiscall sub_55D050(int this); void __stdcall sub_55D110(int a1, __int16 a2); void __thiscall sub_55D180(int this); int __thiscall sub_55D260(int this); void __thiscall sub_55D360(int this); char __stdcall sub_55D3E0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8); char __thiscall sub_55D3F0(int this, int a2, signed int a3); char __thiscall sub_55D690(int this, int a2, signed int a3); FILE *__thiscall sub_55D830(int this, int a2); signed int __stdcall sub_55D8A0(int a1); signed int __thiscall sub_55D8B0(int this, __int16 a2); char __thiscall sub_55D950(void *this); FILE *__thiscall sub_55DA10(int this, int a2); char __stdcall sub_55DA70(int a1); char __thiscall sub_55DA80(int this, int a2); char __stdcall sub_55DAD0(int a1); char __thiscall sub_55DB40(void *this, int a2); char __thiscall sub_55DBB0(int this); int __thiscall sub_55DBD0(int this, char a2); int __thiscall sub_55DBF0(int this); char __thiscall sub_55DCB0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); void __cdecl sub_55DDC0(int a1, int a2); char __thiscall sub_55DDF0(void *this, int a2, int a3, int a4, signed int a5, unsigned int a6, int a7, int a8, int a9); void *__thiscall sub_55E0F0(void *this, __int16 a2); unsigned int __thiscall sub_55E130(int this, unsigned int a2); int __thiscall sub_55E150(int this, int a2); int __thiscall sub_55E170(int this); void __thiscall sub_55E1E0(int this); char __thiscall sub_55E210(int this); char __thiscall sub_55E220(int this, char a2); bool __thiscall sub_55E230(int this); int __thiscall sub_55E250(void *this, char a2); char __thiscall sub_55E340(int this, char a2); char __thiscall sub_55E370(int this); bool __thiscall sub_55E380(int this, int a2); char __thiscall sub_55E3D0(void *this); char __thiscall sub_55E420(void *this); int __thiscall sub_55E470(int this); int __thiscall sub_55E480(int this); char __thiscall sub_55E4A0(int this, int a2); char __thiscall sub_55E5F0(void *this, int a2, int a3); FILE *__thiscall sub_55E670(void *this, __int16 a2); char __thiscall sub_55E6E0(void *this); char __thiscall sub_55E730(void *this); FILE *__thiscall sub_55E7A0(int this); char *__thiscall sub_55E830(void *this); char __thiscall sub_55E840(void *this, __int16 a2, unsigned __int16 a3); char __thiscall sub_55E880(void *this, __int16 a2, __int16 a3); int __thiscall sub_55E8C0(int this, int a2, int a3); bool __thiscall sub_55E8E0(int this); int __thiscall sub_55E900(int this, int a2); signed int __thiscall sub_55E910(void *this); char __thiscall sub_55EA10(int this, char a2); int __thiscall sub_55EA20(int this, int a2); bool __thiscall sub_55EA30(int this); void __thiscall sub_55EA40(void *this, int a2); int __thiscall sub_55EAE0(int this, int a2); int __thiscall sub_55EAF0(int this); void __thiscall sub_55EB00(void *this, int a2); signed int __thiscall sub_55ECC0(void *this, int a2); int __thiscall sub_55ED70(void *this); char __thiscall sub_55ED90(int this); bool __thiscall sub_55EDB0(int this); signed int __thiscall sub_55EDC0(int this, int a2); char __stdcall sub_55EDF0(int a1); int __thiscall sub_55EE80(void *this, int a2, int a3); int __thiscall sub_55EF30(int this, int a2, int a3); char __thiscall sub_55EF90(int this); char __thiscall sub_55EFA0(int this, char a2); void __thiscall sub_55EFC0(void *this, unsigned int a2); void __thiscall sub_55F030(void *this, const char *a2); int __thiscall sub_55F0D0(int this); int __thiscall sub_55F0E0(void *this); unsigned int __thiscall sub_55F1C0(int this, int a2); int __thiscall sub_55F1F0(int this, unsigned int a2); int __thiscall sub_55F220(int this); int __thiscall sub_55F230(void *this); int __thiscall sub_55F2C0(void *this); char __thiscall sub_55F2E0(int this); int __thiscall sub_55F310(int this); int __thiscall sub_55F320(int this, int a2); int __thiscall sub_55F330(int this); int __thiscall sub_55F340(int this, int a2); signed int __thiscall sub_55F350(void *this); char __thiscall sub_55F400(int this, int a2); char *__thiscall sub_55F420(void *this); int __thiscall sub_55F430(int this); FILE *__thiscall sub_55F460(void *this); char __thiscall sub_55F4D0(void *this); char __thiscall sub_55F500(int this); char __thiscall sub_55F510(int this, char a2); int __thiscall sub_55F530(void *this, unsigned __int8 a2); void __thiscall sub_55F5F0(int this); char __thiscall sub_55F660(int this); char __thiscall sub_55F670(int this, char a2); bool __thiscall sub_55F690(int this, __int16 a2); void __thiscall sub_55F6C0(int this, const void *a2); int __thiscall sub_55F890(int this); int __thiscall sub_55F9A0(int this, char a2); bool __thiscall sub_55FA60(int this); char __thiscall sub_55FA80(int this, unsigned __int8 a2, int a3); // void __userpurge sub_55FC90(int a1, int a2, int a3, int a4); // void __userpurge sub_55FE40(int a1, int a2, int a3, int a4); int __thiscall sub_55FFF0(int this, int a2); FILE *__thiscall sub_560000(int this); char __thiscall sub_560060(void *this); int __thiscall sub_5601D0(int this, int a2, int a3, int a4); int __thiscall sub_560240(void *this, int a2, int a3, int a4); int __thiscall sub_560890(void *this); char __thiscall sub_5609B0(void *this, unsigned int a2); FILE *__thiscall sub_560AC0(void *this); void __thiscall sub_560BB0(void *this, __int16 a2); int __thiscall sub_560E40(void *this, int a2, int a3, int a4); FILE *__thiscall sub_560F50(void *this); signed int __thiscall sub_560FF0(void *this); int __thiscall sub_561170(void *this, int a2, int a3, int a4); int __thiscall sub_561320(void *this, int a2, int a3, int a4); int __thiscall sub_561400(void *this); int __thiscall sub_561820(void *this); int __thiscall sub_561890(void *this); int __thiscall sub_5619C0(void *this, int a2); int __thiscall sub_561B70(void *this); FILE *__thiscall sub_561C80(void *this); FILE *__thiscall sub_561D70(void *this); int __thiscall sub_561DF0(void *this); void __thiscall sub_561E60(void *this, unsigned __int8 a2); void __thiscall sub_561F40(int this); void __thiscall sub_562050(void *this, unsigned __int8 a2); void __thiscall sub_562130(int this); // int __userpurge sub_5621E0(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_562290(void *this, int a2, int a3, int a4); // int __userpurge sub_562360(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_562410(void *this, int a2, int a3, int a4); int __thiscall sub_5624E0(void *this, int a2, int a3, int a4); unsigned int __thiscall sub_562730(int this, unsigned int a2); char __thiscall sub_562760(void *this); int __thiscall sub_562800(void *this, int a2); void __thiscall sub_562A20(int this, __int16 a2); void __thiscall sub_562AD0(void *this); void __thiscall sub_562B40(void *this, char a2); int __cdecl sub_562C90(int a1, int a2, int a3); int __thiscall sub_562D10(void *this, int a2); int __thiscall sub_562ED0(void *this, int a2, int a3); char __cdecl sub_563090(int a1, __int16 a2, char *a3); char __thiscall sub_5631C0(int this, char a2); void __thiscall sub_5632F0(void *this); void __thiscall sub_5633C0(void *this); void __thiscall sub_563480(void *this); char __thiscall sub_5635D0(void *this, int a2, int a3); char __thiscall sub_563D70(void *this, int a2, int a3, int a4); void *__cdecl sub_563DD0(int a1, int a2, void *a3); int __thiscall sub_563E90(int this, unsigned int a2); // void __usercall sub_563F93(int a1); int __thiscall sub_563FB0(int this, int a2); int __thiscall sub_564030(int this, int a2); void __thiscall sub_564100(void *this); void __thiscall sub_5644E0(void *this); void __thiscall sub_5644F0(void *this); int __thiscall sub_564500(void *this, int a2); int __thiscall sub_5645E0(int this, int a2); char __thiscall sub_564610(int this, int a2, int a3); FILE *__thiscall sub_564790(int this, int a2, __int16 a3, int a4); char __thiscall sub_564B50(int this); int __thiscall sub_564B60(int this, int a2); int __thiscall sub_564B80(int this, int a2); char __thiscall sub_564BE0(void *this, __int16 a2, int a3, int a4); void __thiscall sub_564DA0(void *this); int __thiscall sub_564DF0(void *this, int a2); int __thiscall sub_564E80(void *this, unsigned __int8 a2, unsigned __int16 a3, int a4); char __thiscall sub_564F60(void *this, int a2, int a3); char __thiscall sub_5650E0(void *this, int a2, int a3); char __thiscall sub_565CD0(void *this, int a2, int a3); char __thiscall sub_565DA0(void *this, int a2); int __thiscall sub_565FC0(void *this, int a2, __int16 *a3, int a4); char __thiscall sub_566320(void *this, int a2); void __thiscall sub_566510(int this); char __thiscall sub_5667D0(void *this, int a2, int a3, int a4); int __thiscall sub_5668F0(void *this, int a2, signed int a3, int a4, char a5); int __thiscall sub_566A30(void *this); char __thiscall sub_566BE0(void *this, int a2, int a3); int __thiscall sub_566C90(void *this, int a2); int __thiscall sub_566D50(void *this); int __thiscall sub_566EF0(void *this); int __thiscall sub_566F60(void *this, __int16 a2, int a3); int __thiscall sub_567060(void *this); int __thiscall sub_567210(void *this, int a2, __int16 a3, int a4, int a5, int a6); int __thiscall sub_5673F0(void *this, int a2); int __thiscall sub_5674C0(int this); int __thiscall sub_5674E0(void *this, int a2, __int16 a3); int __thiscall sub_567880(void *this, int a2, __int16 a3, __int16 a4, int a5); int __thiscall sub_5679D0(void *this, int a2); char __thiscall sub_567B00(void *this, int a2, int a3); char __thiscall sub_567BF0(void *this, int a2, int a3); char __thiscall sub_567D80(void *this, int a2, int a3); char __thiscall sub_5686E0(void *this, int a2, int a3); char __thiscall sub_568A00(void *this, int a2, int a3); char __thiscall sub_568C60(void *this, int a2, int a3); int __thiscall sub_568F80(void *this); int __thiscall sub_5690B0(void *this); char __thiscall sub_5692F0(void *this); int __thiscall sub_569410(void *this); int __thiscall sub_569600(void *this, int a2, __int16 a3); char __thiscall sub_5697A0(void *this, int a2, int a3); char __thiscall sub_569D70(void *this, int a2, int a3); char __thiscall sub_569EE0(void *this, int a2, int a3); char __thiscall sub_56A330(void *this, int a2, int a3); char __thiscall sub_56A490(void *this, int a2, int a3); int __thiscall sub_56AFC0(void *this, int a2, int a3, int a4); void __thiscall sub_56B3B0(int this); char __thiscall sub_56B4E0(void *this, int a2, int a3); int __thiscall sub_56B640(int this); int __thiscall sub_56B650(int this); int __thiscall sub_56B660(int this); int __thiscall sub_56B680(int this); int __thiscall sub_56B6A0(void *this); int __thiscall sub_56B7F0(void *this); int __thiscall sub_56B920(void *this); int __thiscall sub_56BA80(void *this); int __thiscall sub_56BC80(void *this); int __thiscall sub_56C040(void *this); int __thiscall sub_56C250(void *this, int a2); int __thiscall sub_56C2F0(void *this); char __thiscall sub_56C420(void *this, int a2); char __thiscall sub_56C500(void *this, int a2); int __thiscall sub_56C5B0(void *this, int a2, int a3, int a4); int __thiscall sub_56C6B0(void *this); signed int __thiscall sub_56C7E0(void *this, int a2, unsigned __int16 a3, int a4); signed int __stdcall sub_56CA40(int a1); signed int __stdcall sub_56CA50(int a1); int __stdcall sub_56CA60(int a1, int a2); int __stdcall sub_56CBF0(int a1, int a2); int __stdcall sub_56CD80(int a1, int a2); int __stdcall sub_56CEF0(int a1, int a2); int __stdcall sub_56D060(int a1, int a2); // void __userpurge sub_56D360(int a1, int a2, int a3); // void __userpurge sub_56D710(int a1, int a2, int a3); char *__thiscall sub_56DB50(void *this); char __thiscall sub_56DB60(int this); bool __thiscall sub_56DB80(int this, __int16 a2); bool __thiscall sub_56DBB0(int this, __int16 a2, char a3); bool __thiscall sub_56DBF0(int this, char a2); __int16 __thiscall sub_56DC10(int this); char __thiscall sub_56DC20(int this); char __thiscall sub_56DC30(int this); char __thiscall sub_56DC40(int this, __int16 a2); char __thiscall sub_56DC60(int this, char a2); char __thiscall sub_56DC80(int this, char a2); signed int __cdecl sub_56DCA0(); int __thiscall sub_56DCB0(int this); int __thiscall sub_56DCD0(void *this); char __thiscall sub_56DF60(void *this, int a2, int a3); char __thiscall sub_56E200(void *this); bool __thiscall sub_56E6F0(int this); __int16 __thiscall sub_56E710(int this, __int16 a2); __int16 __thiscall sub_56E730(int this); signed int __thiscall sub_56E740(void *this, int a2, int a3); int __thiscall sub_56E800(void *this); int __thiscall sub_56E820(int this, int a2); int __thiscall sub_56E860(int this); char __thiscall sub_56E870(void *this); int __thiscall sub_56E8C0(void *this); int __stdcall sub_56E9E0(int a1); char __thiscall sub_56E9F0(int this, int a2); int __thiscall sub_56EA20(int this, int a2); __int16 __thiscall sub_56EA40(int this, int a2); __int16 __thiscall sub_56EA60(int this, __int16 a2, const void *a3); int __stdcall sub_56EAC0(int a1, int a2); signed int __thiscall sub_56ECE0(void *this, int a2); int __thiscall sub_56F040(void *this, int a2, int a3, int a4); signed int __thiscall sub_56F250(void *this, unsigned __int8 *a2); int __thiscall sub_56F6F0(void *this, int a2, int a3, int a4); int __thiscall sub_56F950(void *this, int a2, int a3, int a4); int __thiscall sub_56FC30(void *this, int a2, int a3, int a4); int __thiscall sub_570380(void *this, int a2, int a3, int a4); int __thiscall sub_5705B0(void *this, int a2, int a3, int a4); int __thiscall sub_570900(void *this, int a2, int a3, int a4); int __thiscall sub_570A60(void *this, int a2, int a3, int a4); int __thiscall sub_570BC0(void *this, int a2, int a3, int a4); int __thiscall sub_570D20(void *this, int a2, int a3, int a4); int __thiscall sub_570F10(void *this, int a2, int a3, int a4); int __thiscall sub_5710D0(void *this, int a2, int a3, int a4); int __thiscall sub_5712A0(void *this, int a2, int a3, int a4); int __thiscall sub_571460(void *this, int a2, int a3, int a4); int __thiscall sub_571640(void *this, int a2, int a3, int a4); int __thiscall sub_571830(void *this, int a2, int a3, int a4); int __thiscall sub_571A00(void *this, int a2, int a3, int a4); int __thiscall sub_572160(void *this, int a2); int __thiscall sub_572460(void *this, int a2, int a3, int a4); int __thiscall sub_572740(void *this, int a2, int a3, int a4); int __thiscall sub_572F00(void *this, int a2); int __thiscall sub_573210(void *this, int a2, int a3, int a4); int __thiscall sub_573560(void *this, int a2, int a3, int a4); int __thiscall sub_5737F0(void *this, int a2, int a3, int a4); char *__thiscall sub_573A20(void *this); int __stdcall sub_573CC0(int a1); // int __thiscall unknown_libname_2(_DWORD); weak int __thiscall sub_573D20(void *this); int __thiscall sub_573E10(int this); int __thiscall sub_573FB0(void *this, __int16 a2, unsigned __int16 a3, const char *a4); int __thiscall sub_574190(void *this, int a2, int a3, int a4); int __thiscall sub_574280(void *this); int __cdecl sub_5744F0(int a1, int a2, int a3); int __cdecl sub_574550(int a1, int a2, int a3); int __cdecl sub_5745A0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10); int __cdecl sub_574640(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10); int __thiscall sub_5746E0(void *this, int a2, int a3, int a4); bool __thiscall sub_574A60(void *this, int a2); int __thiscall sub_574B00(int this, int a2); int __thiscall sub_574B20(int this, int a2); void __thiscall sub_574B40(int this, unsigned int a2); int __thiscall sub_574CD0(void *this, int a2, int a3); int __thiscall sub_574D10(void *this, int a2, int a3, int a4, int a5); int __cdecl sub_574D40(int a1, int a2, int a3, int a4); int __cdecl sub_574DA0(int a1, int **a2, int a3, int a4, int **a5, int a6, int a7, int **a8, int a9, int a10); int __cdecl sub_574E30(int a1, int **a2, int a3, int a4, int **a5, int a6, int a7, int **a8, int a9, int a10); void __cdecl sub_574EC0(int a1, int a2); int __thiscall sub_574FA0(int this, int a2); int __thiscall sub_574FF0(void *this, int a2, int a3, int a4, char a5); int __thiscall sub_5750E0(void *this); int __thiscall sub_575270(void *this, int a2); int __thiscall sub_575420(int this, int a2); int __thiscall sub_5754D0(int this); int __thiscall sub_575500(void *this, int a2, int **a3, int a4, int a5, int **a6, int a7, int a8); int __thiscall sub_575810(int this, int a2); int __thiscall sub_575890(int this, int a2); void __thiscall sub_575920(int this, int a2, int a3, int a4); void __thiscall sub_575B40(int this); int __thiscall sub_575B60(void *this); int __thiscall sub_575C00(int this, unsigned int a2); int __thiscall sub_575CC0(void *this, unsigned int a2); int __thiscall sub_575D70(int this); int __thiscall sub_575D90(_DWORD); // weak int __stdcall sub_575DA0(int a1, int a2, int a3, int a4); int __thiscall sub_575DF0(void *this, void (__thiscall *a2)(_DWORD, _DWORD), int a3, int a4, int a5); int __thiscall sub_575EA0(void *this, int a2, int a3, int a4); int __stdcall sub_575F50(int a1, int a2); int __thiscall sub_575FA0(void *this, int a2, int a3); int __thiscall sub_576070(void *this, int a2, int a3, int a4); int __stdcall sub_576140(int a1, int a2); int __stdcall sub_576240(int a1, int a2); int __stdcall sub_576340(int a1, int a2); int __stdcall sub_576440(int a1, int a2); int __stdcall sub_576540(int a1, int a2); int __thiscall sub_576640(void *this, int a2, int a3, int a4); int __thiscall sub_576720(void *this, int a2, int a3, int a4); int __thiscall sub_5767E0(void *this, int a2, int a3, int a4); int __thiscall sub_5768A0(void *this, int a2, int a3, int a4); char __cdecl sub_576960(int a1, __int16 a2, char *a3); char __cdecl sub_576A90(int a1, __int16 a2, char *a3); int __thiscall sub_576BC0(void *this, int a2, int a3, int a4); int __thiscall sub_576CC0(void *this, int a2, int a3, int a4); void *__thiscall sub_576DA0(void *this); int __thiscall sub_576E10(void *this, signed int a2); int __thiscall sub_576E40(void *this, signed int a2); int __stdcall sub_576E80(signed int a1); int __stdcall sub_576EB0(signed int a1); int __thiscall sub_576F80(int this, signed int a2); int __thiscall sub_577020(int this); bool __thiscall sub_577050(void *this, int a2); int __thiscall sub_5770E0(int this, int a2); char __thiscall sub_577110(void *this, int a2); __int16 __thiscall sub_5771B0(int this, __int16 a2); bool __thiscall sub_5771D0(int this, int a2); int __thiscall sub_5771F0(int this); int __thiscall sub_577200(void *this); char __thiscall sub_577220(void *this, __int16 a2); int __thiscall sub_577230(void *this, int a2, int a3); FILE *__thiscall sub_577300(void *this, int a2); void __thiscall sub_5773A0(int this); int __thiscall sub_5773B0(int this); int __thiscall sub_5773C0(void *this, int a2, __int16 a3, int a4, int a5, __int16 a6, int a7); int __thiscall sub_577580(void *this, int a2); int __thiscall sub_577600(int this, signed int a2, int a3, char a4, int a5); char __thiscall sub_577630(void *this, int a2, int a3); char __thiscall sub_577770(int this); __int16 __thiscall sub_5777B0(int this, __int16 a2, int a3); int __thiscall sub_5777F0(int this, int a2, int a3); int __thiscall sub_577870(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_577A70(void *this); int __thiscall sub_577B90(void *this); int __thiscall sub_577C30(void *this, int a2, int a3, int a4); char __thiscall sub_577E50(void *this, int a2); char __thiscall sub_577F70(void *this, int a2); bool __thiscall sub_5780D0(void *this, int a2); bool __thiscall sub_5781B0(void *this, int a2); int __stdcall sub_578270(int a1); int __thiscall sub_578350(void *this, int a2, int a3); int __cdecl sub_578470(); int __stdcall sub_578520(int a1); int __thiscall sub_5785D0(void *this); char __thiscall sub_5786A0(void *this, int a2); int __thiscall sub_5787F0(void *this); int __thiscall sub_5788B0(void *this); char __thiscall sub_5789F0(void *this, int a2, int a3); int __thiscall sub_578AA0(void *this, unsigned __int16 *a2, int a3, int a4); int __thiscall sub_578D80(void *this); int __stdcall sub_579110(int a1, int a2); int __thiscall sub_5791F0(void *this, unsigned __int16 a2); int __thiscall sub_5792F0(void *this); int __stdcall sub_579380(int a1, int a2); void *__thiscall sub_5793D0(void *this, int a2, int a3); void *__thiscall sub_579550(void *this, int a2, int a3); // int __userpurge sub_5796F0(int a1, double a2, int a3, int a4); void *__thiscall sub_579840(void *this, int a2, int a3); int __thiscall sub_5799F0(void *this); void *__thiscall sub_579AC0(void *this, int a2, int a3); int __thiscall sub_579B60(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_579C10(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_57A1A0(void *this, int a2, int a3, int a4); char __thiscall sub_57A2D0(void *this); int __thiscall sub_57A470(void *this); int __thiscall sub_57A5A0(void *this, int a2); int __thiscall sub_57A830(void *this, int a2, int a3); int __thiscall sub_57AA60(void *this, int a2, int a3); int __thiscall sub_57AEF0(int this, int a2); int __thiscall sub_57AFB0(void *this, unsigned __int16 a2); char __thiscall sub_57B5A0(int this, int a2, int a3, int a4); int __thiscall sub_57B600(void *this, int a2, __int16 *a3, int a4, int a5); char __thiscall sub_57B840(void *this, int a2, int a3, int a4); void __thiscall sub_57BD80(int this); int __thiscall sub_57BDF0(int this, int a2); void *__thiscall sub_57BE40(void *this); void *__thiscall sub_57BEF0(void *this); void *__thiscall sub_57BFB0(void *this); void *__thiscall sub_57C070(void *this); void *__thiscall sub_57C130(void *this); void __thiscall sub_57C1F0(void *this); int __thiscall sub_57C230(void *this, int a2, __int16 a3); int __thiscall sub_57C3B0(void *this, int a2, _UNKNOWN *a3, void *a4); int __thiscall sub_57C630(int this, int a2, int a3); int __thiscall sub_57C680(void *this, __int16 a2); int __thiscall sub_57C780(void *this, __int16 a2, int a3, int a4, int a5, int a6); int __thiscall sub_57CBD0(void *this, __int16 a2, int a3, int a4, int a5, int a6); int __thiscall sub_57CF50(void *this, int a2); int __thiscall sub_57D0A0(int this, unsigned int a2); int __thiscall sub_57D150(void *this, int a2, int a3, int a4); int __thiscall sub_57D7A0(void *this, int a2, int a3, int a4); int __thiscall sub_57E110(void *this, int a2, int a3, int a4, int a5, int a6, int a7); void __thiscall sub_57E440(void *this, unsigned __int16 a2, __int16 a3, int a4); void __thiscall sub_57E930(void *this, unsigned __int16 a2, int a3, int a4, int a5); // int __userpurge sub_57EDA0(int a1, double a2, int a3, int a4, __int16 *a5, int a6, int a7, int a8, int a9); // int __userpurge sub_580A20(int a1, double a2, int a3, __int16 *a4, signed int a5, int a6); // int __userpurge sub_580DC0(int a1, double a2, int a3, __int16 *a4, int a5, int a6); // int __userpurge sub_581220(int a1, double a2, int a3, __int16 *a4, int a5); // int __userpurge sub_5814E0(int a1, double a2, int a3, int a4, int a5); // int __usercall sub_5817F0(int a1, double a2); // int __usercall sub_581D90(int a1, double a2); int __cdecl sub_582110(int a1, int a2); int __thiscall sub_582130(int this); int __thiscall sub_582430(int this, int a2, int a3); bool __thiscall sub_582B30(int this, int a2); int __thiscall sub_582B50(int this, __int16 a2); void *__thiscall sub_582BA0(void *this, const char *a2); int loc_582C50(); // weak void *__thiscall sub_582C60(void *this, const char *a2); int loc_582D10(); // weak void *__thiscall sub_582D20(void *this, const char *a2); int loc_582DD0(); // weak void *__thiscall sub_582DE0(void *this, const char *a2); int loc_582E80(); // weak void *__thiscall sub_582E90(void *this, const char *a2); void *__thiscall sub_582F40(void *this, const char *a2); void *__thiscall sub_582FF0(void *this, char a2); void *__thiscall sub_583020(void *this, char a2); void *__thiscall sub_583050(void *this, char a2); void *__thiscall sub_583080(void *this, char a2); void *__thiscall sub_5830B0(void *this, char a2); void *__thiscall sub_5830E0(void *this, char a2); int loc_583110(); // weak int __thiscall sub_583120(int this); void __thiscall sub_583280(void *this); int __stdcall sub_583330(int a1, char a2); void *__thiscall sub_583390(void *this); unsigned int __thiscall sub_5834D0(int this, int a2); int __thiscall sub_583910(int this, unsigned int *a2); int __stdcall sub_583950(unsigned int a1); void *__thiscall sub_5839B0(void *this, char a2); unsigned int __thiscall sub_5839E0(int this, unsigned int a2); void *__cdecl sub_583A60(const void *a1, const void *a2, void *a3); int __thiscall sub_583AA0(int this, unsigned int a2); // void __usercall sub_583B83(int a1); void *__thiscall sub_583BA0(void *this, int a2); int __thiscall sub_585990(int this); signed int __cdecl sub_5859A0(); int __thiscall sub_5859B0(int this); int __thiscall sub_5859C0(int this); signed int __cdecl sub_5859D0(); int __thiscall sub_5859E0(int this); void __thiscall sub_5859F0(void *this); void *__thiscall sub_585A00(void *this); char __thiscall sub_585A10(void *this, int a2); int __thiscall sub_585D10(void *this, void *a2); int __thiscall sub_585EE0(void *this, void *a2); int __thiscall sub_586060(void *this, void *a2, int a3); int __thiscall sub_5861D0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __stdcall sub_5864C0(int a1, int a2); int __stdcall sub_586600(int a1, int a2); int __thiscall sub_586700(void *this); int __thiscall sub_5868E0(void *this); int sub_586AB0(); // weak int __thiscall sub_586AF0(void *this); int __thiscall sub_586BF0(void *this); int __thiscall sub_586CC0(void *this, int a2, int a3, int a4); int __thiscall sub_586E30(void *this, int a2, int a3, int a4); int __thiscall sub_586FE0(void *this, int a2, int a3, int a4); int __thiscall sub_5871B0(void *this, int a2, int a3, int a4); void *__thiscall sub_587340(void *this, const char *a2); void *__thiscall sub_5873E0(void *this, const char *a2); void *__thiscall sub_587480(void *this, char a2); void *__thiscall sub_5874B0(void *this, char a2); int __thiscall sub_5874E0(void *this); int __thiscall sub_587510(int this); char __thiscall sub_587540(int this); char __thiscall sub_587560(int this, char a2, int a3); char __thiscall sub_5875F0(int this, char a2, int a3); int __thiscall sub_587680(void *this, __int16 a2, int a3); int __thiscall sub_587800(void *this, signed int a2); int __thiscall sub_587970(void *this, int a2, int a3, int a4); int __thiscall sub_587BF0(void *this, int a2, int a3, int a4); int __thiscall sub_587E90(void *this); int __thiscall sub_5882E0(int this); int __thiscall sub_588320(int this); void __thiscall sub_588340(void *this); int __stdcall sub_588350(int a1, int a2); void *__thiscall sub_588390(void *this, char a2); int __thiscall sub_5883C0(void *this, int a2, int a3); int __thiscall sub_5884D0(void *this, int a2); int __thiscall sub_588A00(void *this, int a2, int a3, int a4); int __stdcall sub_588CC0(int a1, int a2); int __thiscall sub_588DB0(void *this, int a2); int __stdcall sub_588FF0(int a1, int a2); int __thiscall sub_5890E0(void *this, int a2, int a3, int a4); int __stdcall sub_589540(int a1, int a2); int __thiscall sub_589630(void *this, int a2); int __stdcall sub_589910(int a1, int a2); int __thiscall sub_589A00(void *this); int __stdcall sub_589B40(int a1, int a2); void *__thiscall sub_589CD0(void *this, const char *a2); void *__thiscall sub_589D70(void *this, char a2); int __stdcall sub_589DA0(unsigned int a1); void *__cdecl sub_589E00(const void *a1, const void *a2, void *a3); void *__cdecl sub_589E40(const void *a1, const void *a2, void *a3); int __thiscall sub_589E80(int this, __int16 a2); int __cdecl sub_589EC0(int a1, int a2); int __thiscall sub_589F10(int this, unsigned int a2); // void __usercall sub_589FED(int a1); int __thiscall sub_58A010(int this, int a2); // void __usercall sub_58A0D4(int a1); int __thiscall sub_58A0F0(int this, int a2); int __thiscall sub_58A170(int this, unsigned int a2); void __thiscall sub_58A250(int this, const void *a2); int __cdecl sub_58A2C0(int a1, int a2, int a3); int __thiscall sub_58A370(int this, unsigned int a2); // void __usercall sub_58A45B(int a1); int __thiscall sub_58A480(int this, int a2); int __thiscall sub_58A500(int this, unsigned int a2); char __thiscall sub_58A5D0(void *this); int __thiscall sub_58A880(int this); int loc_58A890(); // weak int __thiscall sub_58A8A0(int this, int a2); signed int __thiscall sub_58A900(void *this, int a2); bool __thiscall sub_58A960(int this, int a2); FILE *__stdcall sub_58A990(int a1, __int16 a2); int __thiscall sub_58AA00(int this, int a2, int a3, int a4); int __thiscall sub_58AA20(int this, int a2, int a3); int __thiscall sub_58AA50(int this); int __thiscall sub_58AA60(void *this, int a2); int __thiscall sub_58AAD0(void *this, int a2); int __thiscall sub_58AB80(void *this); int __thiscall sub_58AC00(void *this); int __thiscall sub_58AC80(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_58ADC0(void *this, int a2, int a3, int a4, int a5); char __thiscall sub_58AF00(void *this, int a2, int a3); int __thiscall sub_58AFE0(void *this, int a2, int a3, int a4); int __thiscall sub_58B140(void *this, int a2, int a3, int a4); int __thiscall sub_58B2C0(void *this, int a2, int a3, int a4); int __thiscall sub_58B430(void *this, int a2, int a3, char a4); int __thiscall sub_58B5C0(void *this, int a2, int a3, int a4); int __thiscall sub_58B6F0(void *this, int a2, int a3, int a4); void *__thiscall sub_58B8D0(void *this, const char *a2); void *__thiscall sub_58B970(void *this, char a2); void *__thiscall sub_58BA00(void *this, int a2); void *__thiscall sub_58BAD0(void *this, int a2); void *__thiscall sub_58BBB0(void *this, int a2); void *__thiscall sub_58BC60(void *this, int a2); int __stdcall sub_58BD10(int a1); int __thiscall sub_58BD60(void *this, int a2); int __thiscall sub_58BFA0(void *this, int a2); int __thiscall sub_58C260(void *this, int a2); int __thiscall sub_58C310(void *this, int a2, int a3, int a4); int __thiscall sub_58C590(void *this, int a2, int a3, int a4); int __thiscall sub_58CEF0(void *this, int a2, int a3, char a4); int __thiscall sub_58D020(int this); void __thiscall sub_58D040(void *this); int __cdecl sub_58D050(); int __cdecl sub_58D060(); int __stdcall sub_58D070(int a1, int a2, int a3, __int64 a4, int a5, int a6, __int16 a7, __int16 a8); int __stdcall sub_58D350(int a1, int a2, int a3, __int64 a4, int a5, int a6, __int16 a7, __int16 a8); int __stdcall sub_58D7B0(int a1, int a2, int a3, __int64 a4, int a5, int a6, __int16 a7, __int16 a8); int __thiscall sub_58DC70(void *this, int a2, int a3, int a4); int __thiscall sub_58E210(int this); void __thiscall sub_58E230(void *this); int __thiscall sub_58E240(void *this, int a2, int a3, int a4, __int64 a5, __int16 a6); int __thiscall sub_58E650(void *this, int a2, int a3, int a4, int a5, __int64 a6); int __thiscall sub_58EB50(void *this, int a2, int a3, int a4, __int64 a5); int __stdcall sub_58F130(int a1, int a2); int __thiscall sub_58F4E0(void *this, int a2, int a3, int a4); int __stdcall sub_58F970(int a1, int a2); void *__thiscall sub_58F9E0(void *this); void __thiscall sub_58F9F0(void *this); void *__thiscall sub_58FA00(void *this); bool __thiscall sub_58FA10(int this, int a2); int __stdcall sub_58FA30(int a1); bool __stdcall sub_58FA50(int a1); int __thiscall sub_58FA70(void *this, __int16 a2, unsigned __int8 a3); int __thiscall sub_58FC10(int this); int __thiscall sub_58FC30(int this, int a2); char __thiscall sub_58FC60(int this, char a2); char __thiscall sub_58FC80(int this); unsigned int __thiscall sub_58FC90(int this); char __thiscall sub_58FCB0(int this, int a2); char __thiscall sub_58FCE0(int this, int a2); int __thiscall sub_58FD10(int this, int a2, unsigned __int64 a3); void *__cdecl sub_58FDC0(int a1, int a2, void *a3); void __cdecl sub_58FE50(int a1, int a2, int a3, int a4, int a5, int a6); bool __thiscall sub_590140(void *this); void *__thiscall sub_590150(void *this); int __thiscall sub_590230(void *this, int a2, int a3, int a4); int __thiscall sub_5906C0(void *this, int a2, int a3, int a4); int __thiscall sub_590810(void *this, int a2, int a3, int a4); int __thiscall sub_590960(void *this, int a2, int a3, int a4); int __thiscall sub_590C40(void *this, int a2, int a3, int a4); char __thiscall sub_590D60(void *this); int __thiscall sub_590E60(void *this); int __thiscall sub_590F40(void *this); int __thiscall sub_591140(void *this); bool __stdcall sub_5911F0(int a1); int __thiscall sub_591290(void *this); int __thiscall sub_591300(void *this, int a2); int __thiscall sub_591340(void *this, int a2, int a3, int a4); int __thiscall sub_5915D0(void *this, int a2, int a3, int a4); int __thiscall sub_591730(void *this, int a2, int a3, int a4, int a5, int a6, int a7); char __thiscall sub_5918F0(void *this, int a2); char __thiscall sub_591970(void *this, int a2); int __stdcall sub_591A60(int a1, int a2); int __stdcall sub_591B60(int a1, int a2); char __thiscall sub_591C70(void *this, int a2); char __thiscall sub_591D20(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_592500(void *this, int a2, int a3, int a4); signed int __thiscall sub_592A60(void *this, signed int a2); int __thiscall sub_592B60(void *this, int a2, int a3, int a4); signed int __thiscall sub_592E00(void *this, char a2); int __thiscall sub_592F10(void *this, int a2, int a3, int a4); int __thiscall sub_593340(int this); void *__thiscall sub_593350(void *this, __int16 a2); signed __int16 __thiscall sub_5933D0(void *this, int a2); int __thiscall sub_593520(void *this, int a2, int a3, int a4, int a5); void *__thiscall sub_5936D0(void *this, unsigned __int16 a2, char a3, char a4); int __cdecl sub_5937F0(); signed __int16 __thiscall sub_593830(void *this, int a2); signed __int16 __thiscall sub_593990(void *this, char a2, int a3, int a4); int __thiscall sub_593BE0(void *this, int a2, int a3, __int16 a4, int a5, __int16 a6); void *__thiscall sub_593DF0(void *this, const char *a2); void *__thiscall sub_593EA0(void *this, char a2); int __thiscall sub_593ED0(void *this, int a2); int __thiscall sub_594050(int this, unsigned __int16 a2, char a3); int __thiscall sub_594070(int this, unsigned __int16 a2, int a3, int a4); void *__thiscall sub_5940B0(void *this); void __thiscall sub_5940C0(void *this); signed int __thiscall sub_5940D0(void *this); signed int __stdcall sub_594110(int a1, int a2); signed int __stdcall sub_594120(int a1, int a2); // signed int __userpurge sub_594190(int a1, int a2, int a3); signed int __stdcall sub_594270(int a1, int a2); signed int __stdcall sub_594280(void *a1, int a2); void __stdcall sub_594290(int a1, int a2, int a3); int __stdcall sub_5942D0(int a1, int a2, int a3); signed int __stdcall sub_5942F0(int a1, int a2); char __stdcall sub_594400(int a1, int a2, int a3); signed int __stdcall sub_594470(int a1, int a2); char __stdcall sub_5944A0(void *a1, int a2, int a3); signed int __thiscall sub_5945F0(int this, int a2); int __thiscall sub_594630(int this, int a2); int __thiscall sub_594650(int this, int a2); int __thiscall sub_594670(int this, int a2); signed int __stdcall sub_594680(int a1, int a2); signed int __stdcall sub_594760(int a1, int a2); char __thiscall sub_5947A0(int this, int a2); void *__thiscall sub_5947B0(void *this, const char *a2); void *__thiscall sub_594860(void *this, char a2); int __stdcall sub_594890(int a1, int a2); int __stdcall sub_5949C0(int a1, int a2); int __thiscall sub_594AC0(void *this, int a2, int a3); int __thiscall sub_594C70(void *this, int a2, int a3); int __thiscall sub_594E10(void *this, int a2, int a3); int __thiscall sub_594EF0(void *this, int a2); int __thiscall sub_595610(void *this, int a2, unsigned __int16 a3, int a4); int __thiscall sub_5958C0(void *this, int a2); int __thiscall sub_5959E0(void *this, int a2); int __thiscall sub_595A90(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_595C10(void *this, int a2); int __thiscall sub_595DD0(void *this, int a2); int __stdcall sub_595FA0(int a1, int a2); void *__thiscall sub_5960E0(void *this, char a2); signed __int16 __stdcall sub_596110(int a1, int a2); signed __int16 __stdcall sub_5961E0(int a1, int a2); signed int __stdcall sub_5962F0(void *a1, int a2); signed int __stdcall sub_596420(void *a1, int a2); signed __int16 __thiscall sub_5969C0(void *this, int a2, int a3); signed int __stdcall sub_596BC0(int a1, int a2); int __thiscall sub_596DA0(void *this, __int16 a2, int a3); int __stdcall sub_596EC0(int a1, int a2); int __thiscall sub_596FB0(void *this, int a2); char __stdcall sub_597570(void *a1, int a2, int a3); char __stdcall sub_597620(int a1, int a2, int a3); // char __userpurge sub_5976D0(int a1, int a2, int a3, int a4); char __stdcall sub_597830(void *a1, __int16 a2, int a3); char __stdcall sub_5978E0(void *a1, int a2, int a3); char __stdcall sub_5979A0(int a1, __int16 a2, int a3); char __thiscall sub_597AB0(void *this, void *a2, int a3, int a4); char __stdcall sub_597B80(void *a1, int a2, int a3); char __stdcall sub_597C40(void *a1, int a2, int a3); char __stdcall sub_597D00(void *a1, int a2, int a3); int __stdcall sub_597DD0(int a1, int a2, int a3); int __stdcall sub_597F10(int a1, int a2, int a3); int __stdcall sub_5980F0(int a1, int a2, int a3); int __stdcall sub_5981E0(int a1, int a2, int a3); int __stdcall sub_5982A0(int a1, int a2, int a3); int __stdcall sub_5982F0(int a1, int a2, int a3); int __stdcall sub_5983A0(int a1, int a2, int a3); int __stdcall sub_598450(int a1, int a2, int a3); int __stdcall sub_598500(int a1, int a2, int a3); int __stdcall sub_5985B0(int a1, int a2, int a3); int __stdcall sub_598660(int a1, int a2, int a3); int __thiscall sub_598710(void *this, int a2, int a3, unsigned __int16 **a4, unsigned __int8 a5); int __stdcall sub_598B70(int a1, __int16 a2); char __stdcall sub_598C60(void *a1, int a2, int a3); int __thiscall sub_598D50(void *this, __int16 a2, int a3); int __stdcall sub_598E70(int a1, int a2); int __thiscall sub_598F50(void *this, int a2); int __stdcall sub_599300(int a1, int a2); signed int __stdcall sub_599460(int a1, int a2); // char __userpurge sub_599810(int a1, int a2, int a3, int a4); signed int __thiscall sub_599970(void *this, int a2); int __thiscall sub_599A90(void *this, int a2, int a3, int a4); int __stdcall sub_599CE0(int a1, int a2); int __stdcall sub_599D90(void *a1, int a2); int __thiscall sub_599E30(void *this, int a2); char __stdcall sub_59A000(void *a1, int a2, int a3); char __stdcall sub_59A0B0(void *a1, __int16 a2, int a3); int __stdcall sub_59A1A0(void *a1, int a2); int __thiscall sub_59A240(void *this, __int16 a2, int a3); char __stdcall sub_59A410(void *a1, __int16 a2, int a3); void __stdcall sub_59A4C0(void *a1, int a2, int a3); void *__stdcall sub_59A6B0(int a1); unsigned int __thiscall sub_59A740(int this); signed __int16 __stdcall sub_59ACC0(int a1, int a2); void *__thiscall sub_59AFC0(void *this); char __thiscall sub_59B020(void *this, __time32_t Time, int a3); int __thiscall sub_59B1B0(void *this, unsigned __int16 a2, int a3); int __thiscall sub_59B230(int this, unsigned __int16 a2, int a3, int a4); int __thiscall sub_59B280(void *this, int a2); int __stdcall sub_59B430(int a1, int a2); int __stdcall sub_59B5C0(int a1, int a2); int __stdcall sub_59B770(int a1, int a2); int __stdcall sub_59B7C0(int a1, int a2); int __thiscall sub_59B810(void *this, int a2, __int16 a3, int a4); int __thiscall sub_59B930(void *this, int a2, int a3, int a4); signed int __thiscall sub_59BCA0(void *this, unsigned __int16 *a2); int __thiscall sub_59BF20(void *this, int a2, int a3, int a4); int __thiscall sub_59C3C0(void *this, int a2); bool __thiscall sub_59C570(void *this, unsigned int *a2); void *__thiscall sub_59C5F0(void *this, unsigned int a2); char *__thiscall sub_59C700(void *this); FILE *__cdecl sub_59C710(int a1, __int16 a2, __int16 a3); FILE *__cdecl sub_59C7A0(int a1, __int16 a2, __int16 a3, const char *a4); FILE *__cdecl sub_59C820(int a1, __int16 a2, __time64_t Time); signed int __cdecl sub_59C8B0(int a1); signed int __cdecl sub_59C900(int a1); signed int __cdecl sub_59C970(int a1); __int16 *__cdecl sub_59C9E0(); char *__thiscall sub_59C9F0(void *this); char __cdecl sub_59CA00(); int __thiscall sub_59CA10(int this, int a2); char __thiscall sub_59CA70(int this, int a2); signed int __cdecl sub_59CB90(int a1); signed int __cdecl sub_59CCB0(int a1, int a2); int __cdecl sub_59CCE0(int a1); int __thiscall sub_59CD80(int this, int a2); int __cdecl sub_59CE00(int a1); int __thiscall sub_59CEC0(void *this, int a2); bool __thiscall sub_59CFC0(void *this); int __thiscall sub_59D080(void *this); int __thiscall sub_59D290(void *this, int a2, int a3, int a4); int __thiscall sub_59D430(void *this, int a2, int a3, int a4); int __thiscall sub_59D690(void *this, int a2, int a3, int a4); int __thiscall sub_59D7E0(void *this, int a2, int a3, int a4); int __thiscall sub_59DA10(void *this, int a2, int a3, int a4); int __thiscall sub_59DC50(void *this, int a2, int a3, int a4); int __thiscall sub_59DF70(void *this, int a2, int a3, int a4); int __thiscall sub_59E0A0(void *this, int a2, int a3, int a4); char __stdcall sub_59E300(int a1, int a2); char __thiscall sub_59E340(void *this, int a2, int a3, int a4); int __stdcall sub_59E570(int a1); int __stdcall sub_59E7C0(int a1); int __stdcall sub_59E930(int a1); int __stdcall sub_59EA30(int a1, int a2); int __stdcall sub_59EB20(int a1, int a2); int __stdcall sub_59ECC0(int a1, int a2); int __stdcall sub_59EDF0(int a1, int a2); int __stdcall sub_59EF50(int a1, int a2); int __stdcall sub_59F0B0(int a1, int a2); int __stdcall sub_59F1E0(int a1, int a2); FILE *__cdecl sub_59F2C0(int a1, __int16 a2, char a3); int __stdcall sub_59F360(int a1, int a2); int __stdcall sub_59F570(int a1, int a2); int __stdcall sub_59F690(int a1, int a2); int __cdecl sub_59F7C0(int a1); int __thiscall sub_59FC00(void *this, int a2); int __thiscall sub_59FE60(void *this, int a2, int a3, int a4); void __thiscall sub_5A00D0(void *this); char __stdcall sub_5A0320(int a1); int __thiscall sub_5A0540(void *this); int __stdcall sub_5A0690(int a1); void *__thiscall sub_5A0810(void *this); int (__stdcall **__thiscall sub_5A0840(int this))(int, int); int __stdcall sub_5A0850(int a1); int __thiscall sub_5A0860(void *this, int a2); int __stdcall sub_5A09A0(unsigned int *a1, int a2); int __thiscall sub_5A0A80(void *this, int a2); int __thiscall sub_5A0DC0(void *this, int a2); int __thiscall sub_5A0E90(void *this, int a2, int a3); signed int __thiscall sub_5A0FA0(int this, int a2, int a3); int __thiscall sub_5A0FD0(void *this, int a2, int a3); int __stdcall sub_5A10B0(int a1, int a2); int __stdcall sub_5A1200(int a1, int a2); int __stdcall sub_5A14D0(int a1); int __stdcall sub_5A1660(int a1, int a2); int __stdcall sub_5A1950(int a1, int a2); int __stdcall sub_5A1A30(int a1, int a2); int __stdcall sub_5A1B10(int a1, int a2); int __stdcall sub_5A1BD0(int a1, int a2); int __stdcall sub_5A1C90(int a1, int a2); int __stdcall sub_5A1D40(int a1, int a2); // int __userpurge sub_5A1DF0(int a1, int a2, int a3); int __stdcall sub_5A1EA0(int a1, int a2); int __stdcall sub_5A1FB0(int a1, int a2); int __stdcall sub_5A20E0(int a1, int a2); int __thiscall sub_5A2260(void *this); int __stdcall sub_5A2340(int a1, int a2); int __stdcall sub_5A2420(int a1, int a2); int __thiscall sub_5A2470(void *this, int a2); int __stdcall sub_5A2560(int a1, int a2); int __stdcall sub_5A2650(int a1, int a2); int __stdcall sub_5A2740(int a1, int a2); int __stdcall sub_5A2860(int a1, int a2); int __stdcall sub_5A2960(int a1, int a2); int __stdcall sub_5A2A30(int a1, int a2); int __stdcall sub_5A2B00(int a1, int a2); int __stdcall sub_5A2BE0(int a1, int a2); int __stdcall sub_5A2CB0(int a1, int a2); int __stdcall sub_5A2D80(int a1, int a2); int __stdcall sub_5A3040(int a1, int a2); int __stdcall sub_5A3110(int a1, int a2); int __stdcall sub_5A31E0(int a1, int a2); int __stdcall sub_5A32B0(int a1, int a2); int __stdcall sub_5A3380(int a1, int a2); int __stdcall sub_5A3450(int a1, int a2); int __stdcall sub_5A35C0(int a1, int a2); int __stdcall sub_5A3730(int a1, int a2); int __stdcall sub_5A3800(int a1, int a2); int __stdcall sub_5A38E0(int a1, int a2); int __stdcall sub_5A39F0(int a1, int a2); int __stdcall sub_5A3AF0(int a1, int a2); int __stdcall sub_5A3BF0(int a1, int a2); int __stdcall sub_5A3CA0(int a1, int a2); int __stdcall sub_5A3D50(int a1, int a2); int __stdcall sub_5A3E60(int a1, int a2); int __stdcall sub_5A3F80(int a1, int a2); int __stdcall sub_5A4180(int a1, int a2); int loc_5A4280(); // weak int (__stdcall **__thiscall sub_5A4290(int this))(int, int); signed int __thiscall sub_5A4300(int this); signed int __thiscall sub_5A4320(int this, int a2, unsigned int a3); signed int __thiscall sub_5A4330(void *this); signed int __thiscall sub_5A4370(int this, void *a2); signed int __thiscall sub_5A4430(int this, int a2); signed int __stdcall sub_5A4490(int a1, int a2); bool __thiscall sub_5A4520(int this, const char *cp, u_short hostshort, const char *a4, u_short a5, void *a6); void *__thiscall sub_5A4590(void *this); int __thiscall sub_5A4660(int this); void __thiscall sub_5A4680(int this); void __thiscall sub_5A46B0(int this, HANDLE *a2); signed int __thiscall sub_5A4720(int this, signed int a2); FILE *__thiscall sub_5A47D0(int this, int a2); int __thiscall sub_5A4850(int this, int a2, int a3); int __thiscall sub_5A48F0(int this, int a2); void *__thiscall sub_5A4940(void *this); int __stdcall sub_5A4980(void *a1, int a2); int __stdcall sub_5A4B40(void *a1, int a2); int __thiscall sub_5A4C40(void *this, int a2, int a3); int __thiscall sub_5A4E00(void *this, int a2, int a3); int __thiscall sub_5A50A0(void *this, int a2, int a3); int __thiscall sub_5A5350(void *this, int a2, int a3); int __thiscall sub_5A54F0(void *this, int a2, int a3); int __thiscall sub_5A5600(void *this, int a2, int a3); int __stdcall sub_5A5710(int a1, int a2); int __stdcall sub_5A57D0(int a1, int a2); int __stdcall sub_5A5950(int a1, int a2); int __stdcall sub_5A5A30(int a1, int a2); int __stdcall sub_5A5B50(int a1, int a2); int __stdcall sub_5A5C70(int a1, int a2); int __stdcall sub_5A5D90(int a1, int a2); int __stdcall sub_5A5EB0(int a1, int a2); int __thiscall sub_5A5FD0(void *this, int a2, int a3); int __stdcall sub_5A62A0(int a1, int a2); int __stdcall sub_5A64B0(int a1, int a2); int __stdcall sub_5A6570(int a1, int a2); int __thiscall sub_5A6690(void *this, int a2, int a3); int __stdcall sub_5A6790(int a1, int a2); int __stdcall sub_5A6840(int a1, int a2); int __stdcall sub_5A6950(int a1, const char *a2, const char *a3, int a4); int __stdcall sub_5A6B60(int a1, int a2); int __stdcall sub_5A6C60(int a1, int a2); int __stdcall sub_5A6D20(int a1, int a2); int __stdcall sub_5A6DE0(int a1, int a2); int __stdcall sub_5A6F00(int a1, int a2, int a3); int __thiscall sub_5A7250(int this); __int16 __thiscall sub_5A7260(void *this, int a2, const char *a3, __int16 a4); char *__thiscall sub_5A72C0(void *this); int __thiscall sub_5A72D0(void *this, int a2); char __thiscall sub_5A7380(void *this, char a2, int a3, int a4); void *__thiscall sub_5A73F0(void *this); int __thiscall sub_5A7470(void *this, int a2); int __cdecl sub_5A7500(int a1); char *__thiscall sub_5A7530(void *this); char *__thiscall sub_5A7540(void *this); char *__thiscall sub_5A7570(void *this); bool __thiscall sub_5A7580(int this, int a2, int a3); char __thiscall sub_5A7620(void *this, int a2); char __thiscall sub_5A7770(int this, int a2, int a3, signed int a4); char __thiscall sub_5A7880(int this); signed int __stdcall sub_5A79B0(int a1); int __stdcall sub_5A7B30(int a1); signed int __stdcall sub_5A7B90(int a1, int a2); char *__thiscall sub_5A7C60(void *this); char __thiscall sub_5A7C70(int this, char a2, char a3, char a4, char a5); const char *__cdecl sub_5A7CA0(const char *a1); unsigned int __fastcall sub_5A7D50(__time32_t a1); int __cdecl sub_5A7EE0(); char __thiscall sub_5A7F60(int this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD)); void __thiscall sub_5A7FC0(void *this, int a2, int a3, int a4); int __thiscall sub_5A8230(void *this); int __thiscall sub_5A8290(void *this); int __thiscall sub_5A8360(_DWORD); // weak int __thiscall sub_5A8370(void *this); char __thiscall sub_5A83F0(LPVOID lpParameter); int __cdecl sub_5A8440(); int __cdecl sub_5A8480(); signed int __thiscall sub_5A84C0(void *this); char __thiscall sub_5A8790(const CHAR *this, unsigned __int8 *a2); int __thiscall sub_5A8B00(void *this, int a2, int a3); int __thiscall sub_5A8D90(void *this, int a2); int __thiscall sub_5A8F50(void *this, int a2); void *__thiscall sub_5A9100(void *this); signed int __thiscall sub_5A91B0(void *this, int a2); int __cdecl sub_5A9490(); char __cdecl sub_5A9510(const char *a1, __int16 a2); int __stdcall sub_5A9650(int a1); int __thiscall sub_5A97F0(void *this); int __cdecl sub_5AA640(); // int __userpurge sub_5AA6C0(double a1, int a2); int __cdecl sub_5AB410(); // int __thiscall Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(_DWORD); weak char __thiscall sub_5AB490(void *this, int a2, int a3); int __cdecl sub_5AB520(int a1); int __cdecl sub_5AB560(int a1); int __thiscall sub_5AB5A0(void *this); int __cdecl sub_5AB600(); int __cdecl sub_5AB630(); int __cdecl sub_5AB860(); // int __usercall sub_5AB970(int a1, int a2); int sub_5ABC30(); // weak int sub_5ABEF0(); // weak int sub_5AC180(); // weak int __cdecl sub_5AC200(); int loc_5AC260(); // weak char __thiscall sub_5AC280(void *this, int a2); char __thiscall sub_5AC2D0(void *this, int a2); char __thiscall sub_5AC330(void *this, int a2); void *__thiscall sub_5AC390(void *this, char a2); void *__thiscall sub_5AC3D0(void *this); void __thiscall sub_5AC3E0(void *); // idb void *__thiscall sub_5AC3F0(void *this); void __thiscall sub_5AC400(void *); // idb void *__thiscall sub_5AC410(void *this); void __thiscall sub_5AC420(void *); // idb void *__thiscall sub_5AC430(void *this, const char *a2); void *__thiscall sub_5AC4E0(void *this, const char *a2); void *__thiscall sub_5AC590(void *this, const char *a2); void *__thiscall sub_5AC650(void *this, const char *a2); void *__thiscall sub_5AC720(void *this, const char *a2); void *__thiscall sub_5AC7D0(void *this, const char *a2); void *__thiscall sub_5AC8B0(void *this, const char *a2); void *__thiscall sub_5AC960(void *this, const char *a2); void *__thiscall sub_5ACA10(void *this, const char *a2); void *__thiscall sub_5ACAB0(void *this, char a2); void *__thiscall sub_5ACAE0(void *this, char a2); void *__thiscall sub_5ACB10(void *this, char a2); void *__thiscall sub_5ACB40(void *this, char a2); void *__thiscall sub_5ACB70(void *this, char a2); void *__thiscall sub_5ACBA0(void *this, char a2); void *__thiscall sub_5ACBD0(void *this, char a2); void *__thiscall sub_5ACC00(void *this, char a2); void *__thiscall sub_5ACC30(void *this, char a2); void *__thiscall sub_5ACC60(void *this, char a2); int __cdecl sub_5ACC90(); char __thiscall sub_5ACE80(void *this, int a2, int a3); char __thiscall sub_5ACF50(void *this, int a2); FILE *__thiscall sub_5ACFA0(void *this, const char *a2, int a3, int a4); FILE *__thiscall sub_5AD170(void *this, const char *a2, int a3, int a4); FILE *__thiscall sub_5AD370(void *this, const char *a2, int a3, int a4); char __cdecl sub_5AD570(); bool __stdcall sub_5AD580(char a1); char __thiscall sub_5AD590(void *this); void *__thiscall sub_5AD6A0(char *this, char a2); void *__thiscall sub_5AD720(char *this, char a2); void *__thiscall sub_5AD7A0(char *this, char a2); void *__thiscall sub_5AD820(char *this, char a2); void *__thiscall sub_5AD8A0(char *this, char a2); void *__thiscall sub_5AD920(char *this, char a2); void *__thiscall sub_5AD9A0(char *this, char a2); void *__thiscall sub_5ADA20(char *this, char a2); void *__thiscall sub_5ADAA0(char *this, char a2); void *__thiscall sub_5ADB20(char *this, char a2); void *__thiscall sub_5ADBA0(void *this, char a2); void *__thiscall sub_5ADC30(char *this, char a2); void *__thiscall sub_5ADCB0(char *this, char a2); int __stdcall sub_5ADD30(unsigned int a1); int __stdcall sub_5ADD90(unsigned int a1); int __stdcall sub_5ADDF0(unsigned int a1); int __stdcall sub_5ADE50(unsigned int a1); int __stdcall sub_5ADEB0(unsigned int a1); int __stdcall sub_5ADF10(unsigned int a1); int __cdecl sub_5ADF70(int a1, int a2, int a3); void *__thiscall sub_5ADFA0(void *this, char a2); int __cdecl sub_5AE040(); char __thiscall sub_5AE2A0(void *this, const char *a2, __int16 a3); char __thiscall sub_5AE7A0(int this, unsigned __int16 a2); void *__cdecl sub_5AE920(const void *a1, const void *a2, void *a3); int __cdecl sub_5AE960(int a1, int a2, int a3); void *__cdecl sub_5AE9A0(const void *a1, const void *a2, void *a3); int __cdecl sub_5AE9E0(int a1, int a2, int a3); void *__cdecl sub_5AEA20(const void *a1, const void *a2, void *a3); char __thiscall sub_5AEA60(void *this); void *__thiscall sub_5AEB20(void *this); void *__thiscall sub_5AEB60(void *this); void *__thiscall sub_5AEBA0(void *this); void *__thiscall sub_5AEBE0(void *this); void *__thiscall sub_5AEC20(void *this); void *__thiscall sub_5AEC60(void *this); void *__thiscall sub_5AECA0(char *this, char a2); void *__thiscall sub_5AED20(void *this); void *__thiscall sub_5AED60(void *this); void *__thiscall sub_5AEDA0(void *this); void *__thiscall sub_5AEDE0(void *this); void *__thiscall sub_5AEE20(char *this, char a2); void *__thiscall sub_5AEEA0(void *this); void *__thiscall sub_5AEEE0(char *this, char a2); void *__thiscall sub_5AEF60(void *this); void *__thiscall sub_5AEFA0(void *this); void *__thiscall sub_5AEFE0(char *this, char a2); void *__thiscall sub_5AF060(void *this); void *__thiscall sub_5AF0A0(char *this, char a2); void *__thiscall sub_5AF120(void *this); void *__thiscall sub_5AF160(char *this, char a2); void *__thiscall sub_5AF1E0(void *this); void *__thiscall sub_5AF220(char *this, char a2); void *__thiscall sub_5AF2A0(void *this); void *__thiscall sub_5AF2E0(void *this); void *__thiscall sub_5AF320(char *this, char a2); void *__thiscall sub_5AF3A0(void *this); int __cdecl sub_5AF3E0(); void *__thiscall sub_5AF400(void *this); int __cdecl sub_5AF460(int a1); void *__thiscall sub_5AF480(void *this); int __thiscall sub_5AF4D0(int this, int a2); int __thiscall sub_5AF530(int this, int a2, char a3, int a4, void *a5); void *__thiscall sub_5AF760(char *this, char a2); int __thiscall sub_5AF7E0(void *this, int a2, int a3); int __thiscall sub_5AFA30(int this); void *__thiscall sub_5AFA80(void *this); void *__thiscall sub_5AFAC0(char *this, char a2); void *__thiscall sub_5AFB40(void *this); void *__thiscall sub_5AFB80(char *this, char a2); void *__thiscall sub_5AFC00(void *this); void *__thiscall sub_5AFC40(char *this, char a2); void *__thiscall sub_5AFCC0(void *this); int __thiscall sub_5AFD00(int this, int a2); int __thiscall sub_5AFDE0(void *this, int a2); int __thiscall sub_5AFE50(void *this, int a2); int __thiscall sub_5AFEC0(int this, int a2, int a3, int a4); bool __cdecl sub_5AFF60(const char *a1); bool __cdecl sub_5B0040(const char *a1); bool __cdecl sub_5B0120(const char *a1); bool __cdecl sub_5B0200(const char *a1); bool __cdecl sub_5B02E0(const char *a1); bool __cdecl sub_5B03C0(const char *a1); bool __cdecl sub_5B04A0(const char *a1); bool __cdecl sub_5B0580(const char *a1); bool __cdecl sub_5B0660(const char *a1); bool __cdecl sub_5B0740(const char *a1); bool __cdecl sub_5B0820(const char *a1); bool __cdecl sub_5B0900(const char *a1); bool __cdecl sub_5B09E0(const char *a1); bool __cdecl sub_5B0AC0(const char *a1); bool __cdecl sub_5B0BA0(const char *a1); bool __cdecl sub_5B0C80(const char *a1); bool __cdecl sub_5B0D60(const char *a1); bool __cdecl sub_5B0E40(const char *a1); bool __cdecl sub_5B0F20(const char *a1); bool __cdecl sub_5B1000(const char *a1); bool __cdecl sub_5B10E0(const char *a1); bool __cdecl sub_5B11C0(const char *a1); bool __cdecl sub_5B12A0(const char *a1); void *__thiscall sub_5B1380(void *this); int __thiscall sub_5B13D0(int this, unsigned int a2); // void __usercall sub_5B14A9(int a1); int __thiscall sub_5B14C0(int this, unsigned int a2); // void __usercall sub_5B159B(int a1); int __thiscall sub_5B15C0(int this, unsigned int a2); // void __usercall sub_5B16A9(int a1); int __thiscall sub_5B16C0(int this, unsigned int a2); // void __usercall sub_5B179D(int a1); int __thiscall sub_5B17C0(int this, unsigned int a2); // void __usercall sub_5B189B(int a1); int __thiscall sub_5B18C0(int this); bool __cdecl sub_5B1A10(const char *a1); void __thiscall sub_5B1AF0(int this, unsigned int a2, int a3, int a4); void __thiscall sub_5B1BA0(int this, unsigned int a2, int a3, int a4); void __cdecl sub_5B1C50(char *a1); void __cdecl sub_5B1D90(char *a1); void __cdecl sub_5B1ED0(char *a1); void __cdecl sub_5B2010(char *a1); void __cdecl sub_5B2150(char *a1); void __cdecl sub_5B2290(char *a1); void __cdecl sub_5B23D0(char *a1); void __cdecl sub_5B2510(char *a1); void __cdecl sub_5B2650(char *a1); void __cdecl sub_5B2790(char *a1); void __cdecl sub_5B28D0(char *a1); void __cdecl sub_5B2A10(char *a1); void __cdecl sub_5B2B50(char *a1); void __cdecl sub_5B2C90(char *a1); void __cdecl sub_5B2DD0(char *a1); void __cdecl sub_5B2F10(char *a1); void __cdecl sub_5B3050(char *a1); char __cdecl sub_5B3190(int a1, char *a2); char __cdecl sub_5B3270(int a1, char *a2); void __cdecl sub_5B3350(char *a1); void __cdecl sub_5B3490(char *a1); void __cdecl sub_5B35D0(char *a1); void __cdecl sub_5B3710(char *a1); void __cdecl sub_5B3850(char *a1); void __cdecl sub_5B3990(char *a1); void __cdecl sub_5B3AD0(char *a1); int __thiscall sub_5B3C10(int this, int a2); int __thiscall sub_5B3C90(int this, int a2); int __thiscall sub_5B3D10(int this, int a2); int __thiscall sub_5B3D90(int this, int a2); void __thiscall sub_5B3E10(int this); int sub_5B3E70(); // weak int sub_5B3F10(); // weak int sub_5B3FD0(); // weak int sub_5B4170(); // weak char __thiscall sub_5B50C0(int this, unsigned int a2); int __thiscall sub_5B5160(int this, int a2); char __cdecl sub_5B5290(); int __thiscall sub_5B54B0(int this); void __thiscall sub_5B54C0(int this); void __thiscall sub_5B56D0(int this); void __thiscall sub_5B5900(int this); void __thiscall sub_5B5A60(int this); void __thiscall sub_5B5D60(int this); void __thiscall sub_5B5F70(int this); void __thiscall sub_5B60D0(int this); void __thiscall sub_5B6230(int this); void __thiscall sub_5B6450(int this); int __cdecl sub_5B65B0(); int __thiscall sub_5B66C0(int this); int __thiscall sub_5B66D0(void *this, const char *a2, int a3, int a4); int __stdcall sub_5B66E0(char a1, const char *a2); signed int __thiscall sub_5B6800(int this, int a2, unsigned __int16 a3, unsigned __int8 a4); int __stdcall sub_5B6900(int a1, int a2); signed int __thiscall sub_5B6920(int this, int a2, unsigned __int8 a3); signed int __thiscall sub_5B69E0(int this, int a2, unsigned __int8 a3); signed int __thiscall sub_5B6AB0(int this, int a2, unsigned __int8 a3, char a4); signed int __thiscall sub_5B6BA0(int this, int a2, int a3); signed int __thiscall sub_5B6C50(int this, int a2, int a3); signed int __thiscall sub_5B6D30(int this, int a2, int a3); signed int __stdcall sub_5B6E10(int a1); int __thiscall sub_5B6E60(void *this, __int16 a2); int __stdcall sub_5B7090(int a1, int a2); int __thiscall sub_5B70E0(void *this, int a2, int a3); signed int __thiscall sub_5B7320(void *this, int a2, const char *a3); int __thiscall sub_5B73B0(int this, int a2); void __thiscall sub_5B7430(int this); int __thiscall sub_5B7490(int this, int a2); signed int __thiscall sub_5B74A0(int this, int a2, int a3, unsigned __int16 a4); signed int __thiscall sub_5B7510(int this, int a2, int a3, unsigned __int16 a4); char __thiscall sub_5B7590(int this); char __thiscall sub_5B75B0(int this); char __thiscall sub_5B75D0(int this); char __thiscall sub_5B7600(int this); bool __thiscall sub_5B7620(int this, __int16 a2); int __thiscall sub_5B76F0(void *this); signed int __thiscall sub_5B7800(int this); int __thiscall sub_5B7910(void *this, int a2, int a3); signed int __thiscall sub_5B7A90(void *this, char a2, int a3); signed int __thiscall sub_5B7C00(void *this, __int16 a2); int __thiscall sub_5B7D70(void *this, int a2, int a3, int a4); __int16 __thiscall sub_5B7EA0(void *this, __int16 a2); char __thiscall sub_5B8040(void *this); int __thiscall sub_5B81C0(void *this, int a2, __int16 a3); int __thiscall sub_5B8320(void *this, __int16 a2, const void *a3); signed int __thiscall sub_5B8440(void *this, const void *a2, int a3); signed int __thiscall sub_5B8590(void *this, __int16 a2); signed int __thiscall sub_5B86E0(void *this, __int16 a2, __int16 a3); signed int __thiscall sub_5B8830(void *this, __int16 a2); int __thiscall sub_5B8980(void *this, int a2); signed int __thiscall sub_5B8A80(void *this, __int16 a2); signed int __thiscall sub_5B8BC0(void *this, __int16 a2); signed int __thiscall sub_5B8D00(void *this, __int16 a2, __int16 a3, __int16 a4); int __stdcall loc_5B8D7E(__int16, __int16, __int16); // weak signed int __thiscall sub_5B8E50(void *this, int a2); signed int __thiscall sub_5B8F30(void *this, __int16 a2); signed int __thiscall sub_5B9070(void *this, __int16 a2); int __thiscall sub_5B9210(void *this, int a2); int __thiscall sub_5B9340(void *this, int a2); int __thiscall sub_5B9470(void *this, int a2); int __thiscall sub_5B9590(void *this, int a2); signed int __thiscall sub_5B96C0(void *this, int a2, int a3); signed int __thiscall sub_5B9820(void *this, unsigned __int16 a2, int a3); signed int __thiscall sub_5B9F30(void *this, char a2); unsigned int __thiscall sub_5BA0B0(int this, int a2); signed int __thiscall sub_5BA2C0(void *this, __int16 a2); signed int __thiscall sub_5BA3F0(void *this, int a2); signed int __thiscall sub_5BA540(void *this, int a2); signed int __thiscall sub_5BA670(void *this, int a2); int __thiscall sub_5BA7A0(void *this, char a2, int a3, int a4); signed int __thiscall sub_5BA9C0(void *this, int a2, int a3, int a4, int a5); signed int __thiscall sub_5BACB0(void *this, __int16 a2, int a3); signed int __thiscall sub_5BB110(void *this, int a2); int __thiscall sub_5BB230(void *this, __int16 a2); int __thiscall sub_5BB320(void *this, __int16 *a2); signed int __thiscall sub_5BB490(int this, int *a2); signed int __thiscall sub_5BB4C0(void *this, int a2); signed int __thiscall sub_5BB640(void *this, int a2); signed int __thiscall sub_5BB770(void *this, int a2); int __thiscall sub_5BB890(_DWORD); // weak int __thiscall sub_5BCA70(void *this, int a2); int __thiscall sub_5BCC20(void *this, int a2); int __thiscall sub_5BCFE0(void *this, int a2); int __thiscall sub_5BD190(void *this, int a2); signed int __thiscall sub_5BD330(void *this, int a2); int __thiscall sub_5BD420(void *this, int a2); signed int __thiscall sub_5BD4D0(void *this, int a2); int __stdcall sub_5BD770(int a1); void __cdecl sub_5BD9F0(int a1, int a2); int __thiscall sub_5BDA10(void *this, int a2, int a3); signed int __thiscall sub_5BDBE0(void *this, __int16 a2); int __thiscall sub_5BDD50(void *this, int a2); signed int __thiscall sub_5BDEE0(void *this, int a2); int __thiscall sub_5BE050(void *this, int a2); int __thiscall sub_5BE1D0(int this, unsigned int a2); int __thiscall sub_5BE260(void *this, int a2); signed int __thiscall sub_5BE4D0(int this, __int16 a2, unsigned __int16 a3); int __thiscall sub_5BE680(int this, unsigned __int16 a2); int loc_5BE870(); // weak int __thiscall sub_5BE880(int this, int a2); int __stdcall sub_5BE8A0(int a1, int a2); int __thiscall sub_5BE8C0(int this, int a2, int a3); int __thiscall sub_5BE8E0(void *this, int a2, int a3); int __thiscall sub_5BE930(int this, int a2, int a3); void *__thiscall sub_5BE960(void *this, __int16 a2); int __thiscall sub_5BE9F0(int this, int a2, int a3); int __stdcall sub_5BEA40(int a1, int a2); void __stdcall sub_5BEAA0(int a1, int a2); int __stdcall sub_5BEB20(int a1, int a2); void __stdcall sub_5BED10(int a1, int a2); void __thiscall sub_5BEF70(int this, int a2, int a3); void *__thiscall sub_5BF000(void *this, char a2); int __thiscall sub_5BF030(void *this); int __thiscall sub_5BF080(int this, int a2, int a3); void __stdcall sub_5BF0A0(int a1, int a2); void *__thiscall sub_5BF170(void *this, char *a2); void *__thiscall sub_5BF1F0(void *this, char a2); int __thiscall sub_5BF240(int this); int __thiscall sub_5BF7F0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); bool __thiscall sub_5BF880(int this); signed int __thiscall sub_5BF8A0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); signed int __thiscall sub_5BF930(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); signed int __stdcall sub_5BF9C0(int a1, int a2, int a3, int a4, int a5, int a6, int a7); signed int __thiscall sub_5BFA10(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); signed int __stdcall sub_5BFAA0(int a1, int a2, int a3, int a4, int a5, int a6, int a7); signed int __stdcall sub_5BFBA0(int a1, int a2, int a3, int a4, int a5, int a6, int a7); signed int __stdcall sub_5BFCB0(int a1, int a2, int a3, int a4, int a5, int a6, int a7); signed int __thiscall sub_5BFD10(void *this, __int64 a2, int a3, int a4, int a5, int a6, int a7); bool __thiscall sub_5BFDF0(void *this, int a2); bool __thiscall sub_5BFE60(void *this, int a2); bool __thiscall sub_5BFF20(void *this, int a2); signed int __stdcall sub_5C0010(int a1, int a2, int a3, int a4, int a5, int a6, int a7); char __thiscall sub_5C0030(void *this, int a2); int __thiscall sub_5C0100(int this, __int16 a2, int a3, int a4); void *__thiscall sub_5C0150(void *this, char a2); int __thiscall sub_5C0180(int this, char a2, int a3, int a4); int __thiscall sub_5C01C0(void *this); bool __thiscall sub_5C0210(void *this, int a2); signed int __thiscall sub_5C02A0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __stdcall sub_5C0340(const char *a1, unsigned __int8 *a2, int a3, int a4, int a5, int a6, int a7); int __thiscall sub_5C07E0(int this); void *__thiscall sub_5C0860(void *this, int a2); void __thiscall sub_5C0880(void *this); int __cdecl sub_5C0890(int a1, int a2, int a3, int a4, int a5); char __thiscall sub_5C08E0(int this, unsigned int a2); char *__stdcall sub_5C0930(const void *a1, int a2, void *a3); char __thiscall sub_5C0960(void *this, int a2, int a3, int a4); // int loc_5C0A70(); weak int __thiscall sub_5C0AA0(int this, int a2); // void __usercall sub_5C0B4F(int a1); int __thiscall sub_5C0B70(int this); void __cdecl sub_5C0BB0(int a1, unsigned int a2, char a3, int a4, void *a5, void *a6); int __cdecl sub_5C0C80(int a1, int a2, int a3); void *__thiscall sub_5C0CC0(void *this, char a2); int loc_5C0D10(); // weak int __thiscall sub_5C0D50(int this, int a2, int a3, int a4); int __cdecl sub_5C0DB0(int a1, int a2, int a3); void __cdecl sub_5C0E60(int a1, unsigned int a2); int __cdecl sub_5C0F40(int a1, int a2, int a3); int __cdecl sub_5C1000(int a1, int a2); int __thiscall sub_5C1050(int this, int a2, char a3, int a4, char *a5); int __thiscall sub_5C1280(int this, unsigned int a2); // void __usercall sub_5C138B(int a1); int __thiscall sub_5C13B0(void *this, int a2, int a3); void __stdcall sub_5C1640(void *a1); int __thiscall sub_5C16C0(int this, int a2); // void __usercall sub_5C1783(int a1); int __thiscall sub_5C17A0(int this, int a2, void *a3, int a4); int __thiscall sub_5C1890(int this, int a2); int __thiscall sub_5C1910(int this, unsigned int a2); int __cdecl sub_5C19C0(int, int, int, int, void *, int); // idb int __thiscall sub_5C1A60(int this, int a2, int a3, int a4); char __cdecl sub_5C1B20(int a1, char *a2); int __cdecl sub_5C1C50(int a1, int a2, int a3); int __thiscall sub_5C1D20(void *this, int a2); char __cdecl sub_5C1E20(); int __thiscall sub_5C21A0(int this, int a2, int a3); int __thiscall sub_5C21C0(int this); signed int __thiscall sub_5C21E0(int this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall sub_5C2280(void *this, int a2); int __thiscall sub_5C23B0(int this); char __thiscall sub_5C23D0(int this); int __thiscall sub_5C23F0(int this); int __thiscall sub_5C2410(int this, int a2); int __thiscall sub_5C24B0(int this, unsigned int a2); void **__thiscall sub_5C2590(void **this, void *a2); int __cdecl sub_5C2AE0(int a1); int __cdecl sub_5C2B00(int a1); int loc_5C2B20(); // weak void *__thiscall sub_5C2B30(void *this, const char *a2); void *__thiscall sub_5C2BE0(void *this, char a2); void *__thiscall sub_5C2C10(void *this); void *__thiscall sub_5C2C70(void *this); void *__thiscall sub_5C2CD0(void *this); int __thiscall sub_5C2D20(int this, int a2); int __thiscall sub_5C2D80(int this, int a2); int __thiscall sub_5C2DE0(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_5C3010(void *this, int a2, int a3); void __stdcall sub_5C3260(void *a1); int __thiscall sub_5C32A0(int this, int a2, void *a3, int a4); int __thiscall sub_5C3380(int this, int a2, int a3); int __thiscall sub_5C33F0(int this); int __thiscall sub_5C3440(void *this, int a2); int __thiscall sub_5C34C0(void *this, char a2); int __thiscall sub_5C3500(void *this, int a2, char a3); int __thiscall sub_5C3560(void *this, int a2, int a3, char a4); int __thiscall sub_5C35E0(void *this, int a2, int a3, char a4, int a5); int __thiscall sub_5C3650(void *this, int a2, int a3, char a4, int a5); char __thiscall sub_5C3690(void *this, int a2, int a3, signed int a4, int a5); int __thiscall sub_5C39A0(int this, int a2, int a3, int a4); int __thiscall sub_5C3A40(int this, int a2); void __thiscall sub_5C3B10(int this); void __thiscall sub_5C3B70(int this); int __cdecl sub_5C3BE0(int a1, int a2, int a3); int __thiscall sub_5C3C10(void *this, int a2); int __thiscall sub_5C3CE0(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_5C3F60(void *this, int a2, int a3); void __thiscall sub_5C4210(void *this, void *a2); int __thiscall sub_5C42B0(int this, int a2, void *a3, int a4); char __thiscall sub_5C43E0(void *this); int __thiscall sub_5C46E0(int this, int a2, int a3, int a4); void __thiscall sub_5C47A0(int this); int __thiscall sub_5C4830(int this); void **__cdecl sub_5C4900(); int __cdecl sub_5C4910(int a1); int __cdecl sub_5C4930(); int __cdecl sub_5C4950(); int __cdecl sub_5C4970(); int __cdecl sub_5C4990(); int __cdecl sub_5C49B0(); int __cdecl sub_5C49D0(); int __cdecl sub_5C49F0(); __int16 __cdecl sub_5C4A10(int a1, int a2, signed int a3); signed int __cdecl sub_5C4A80(int a1); int __cdecl sub_5C4AE0(int a1); int __cdecl sub_5C4B40(int a1, int a2); int __cdecl sub_5C4B90(int a1, unsigned int a2); char __cdecl sub_5C4BE0(char a1, unsigned __int8 a2); char __cdecl sub_5C4CE0(); int __cdecl sub_5C4D70(const char *a1); void __thiscall sub_5C4DE0(int this); int __cdecl sub_5C4E10(char *a1); int __cdecl sub_5C4E40(int a1, int a2); int __thiscall sub_5C4ED0(void *this, int a2); int __thiscall sub_5C4FA0(int this, int a2, int a3, int a4); int __thiscall sub_5C5100(int this, int *a2); int __cdecl sub_5C51E0(int a1, int a2, int a3, signed int a4); char __cdecl sub_5C5290(); int __cdecl sub_5C53C0(); int __cdecl sub_5C53E0(); int __cdecl sub_5C5400(); int __cdecl sub_5C5420(); char __cdecl sub_5C5440(const char *a1, int a2, int a3); char __cdecl sub_5C54D0(const char *a1, int a2); char __stdcall sub_5C5560(unsigned __int16 a1); char __cdecl sub_5C5600(); int __thiscall sub_5C5630(int this, int a2, int a3); int __thiscall sub_5C56A0(void *this, char a2); char __cdecl sub_5C56D0(); char __stdcall sub_5C5770(int a1); int __cdecl sub_5C5780(); int __cdecl sub_5C57A0(); signed int __cdecl sub_5C57C0(int a1, signed int a2); signed int __cdecl sub_5C5820(int a1, int a2); signed int __cdecl sub_5C5880(int a1, int a2); char __cdecl sub_5C58E0(int a1, unsigned __int8 a2); int __cdecl sub_5C59B0(); int __thiscall sub_5C59D0(int this, int a2); int __cdecl sub_5C5A30(int a1, unsigned __int16 a2); int __cdecl sub_5C5A70(int a1, unsigned __int16 a2); int __thiscall sub_5C5AB0(void *this, int a2); int __thiscall sub_5C5B20(void *this, int a2, int a3); char __cdecl sub_5C5B90(); int __thiscall sub_5C5DD0(int this); int __thiscall sub_5C5DE0(int this, int a2, int a3); void *__thiscall sub_5C5E00(void *this, int a2); int __thiscall sub_5C5EF0(void *this, int a2, int a3); int __thiscall sub_5C5FF0(int this, int a2, int a3); signed int __stdcall sub_5C60B0(void *a1, int *a2, int *a3); int __cdecl sub_5C62B0(int a1, int a2, int a3); char __thiscall sub_5C62E0(int this, unsigned int a2); int __cdecl sub_5C6340(int a1, int a2, int a3); void __cdecl sub_5C6450(int a1, int a2); int __stdcall sub_5C6480(int a1, int a2, int a3); char __thiscall sub_5C64B0(void *this, int a2, int a3); int __thiscall sub_5C65C0(int this, unsigned int a2); int __thiscall sub_5C6690(int this, int a2); int __thiscall sub_5C67F0(int this, unsigned int a2); signed int __thiscall sub_5C6880(void *this, int a2, int a3, int a4, int a5, int a6, int a7); int __thiscall sub_5C6C50(void *this); int __thiscall sub_5C6D60(void *this, int a2, int a3, int a4); int __thiscall sub_5C6E70(void *this, int a2, int a3, int a4, int a5, int a6, int a7); signed int __thiscall sub_5C7070(void *this, int a2, int a3, int a4, int a5, int a6, int a7); signed int __thiscall sub_5C72C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7); void *__thiscall sub_5C75E0(void *this, int a2); int __stdcall sub_5C75F0(int a1, int a2, int a3, int a4); int __thiscall sub_5C7610(void *this, int a2, int a3); signed int __thiscall sub_5C76D0(void *this, int a2, int a3, int a4, int a5); int __thiscall sub_5C7850(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_5C79A0(int this, int a2); int __thiscall j_nullsub_2(_DWORD); // weak int __thiscall sub_5C79F0(int this, int a2); __int32 __thiscall sub_5C7A00(int this, int a2); signed int __thiscall sub_5C7AB0(void *this, unsigned __int8 a2, char a3, char a4); int __thiscall sub_5C7B40(int *this, unsigned __int8 a2); int __thiscall sub_5C7B70(int this, const char *a2, int a3, int a4); char *__thiscall sub_5C7D90(void *this, unsigned __int8 a2, unsigned __int8 a3); int __thiscall sub_5C7DC0(void *this, char a2, char a3, __int16 a4, __int16 a5); int __thiscall sub_5C7F70(void *this, int a2); int __thiscall sub_5C8070(void *this, int a2); int __thiscall sub_5C81B0(void *this, int a2, int a3, int a4); signed int __thiscall sub_5C8340(void *this, char a2, char a3, int a4); signed int __thiscall sub_5C8480(int *this, char a2, char a3); int __thiscall sub_5C84D0(void *this, int i, int a3, int a4); signed int __thiscall sub_5C89C0(int *this, unsigned __int8 a2); signed int __thiscall sub_5C8FF0(int *this, unsigned __int8 a2, int a3, int a4); signed int __thiscall sub_5C9050(int *this, unsigned __int8 a2, int a3, int a4); signed int __thiscall sub_5C90A0(__time32_t this, int a2, int a3, signed int a4); signed int __thiscall sub_5C9120(__time32_t this, int a2, int a3, signed int a4); signed int __thiscall sub_5C91A0(int this, int a2, __int16 a3); void __thiscall sub_5C9240(void *this, unsigned __int16 a2); int __thiscall sub_5C92F0(__time32_t this, __int16 a2, signed int a3); signed int __thiscall sub_5C9360(int this); signed int __thiscall sub_5C93C0(int this, int a2, int a3, int a4); signed int __thiscall sub_5C93F0(int this, int a2, int a3, int a4); char __thiscall sub_5C9420(int this, int a2, int a3, unsigned __int8 a4); int __thiscall sub_5C9500(int this, int a2, int a3, unsigned __int8 a4); int __thiscall sub_5C9590(int this, int a2, int a3, int a4); signed int __thiscall sub_5C9600(int this, unsigned __int16 a2); signed int __thiscall sub_5C9640(int this, int a2); signed int __thiscall sub_5C9670(int this); signed int __thiscall sub_5C96A0(int this); signed int __thiscall sub_5C96C0(int this, unsigned __int8 a2); signed int __thiscall sub_5C9860(int this, unsigned __int16 a2); signed int __thiscall sub_5C9890(int this); int __thiscall sub_5C98B0(__time32_t this); void __thiscall sub_5C9980(void *this); signed int __stdcall sub_5C9990(int a1, int a2, int a3, int a4, int a5, int a6, int a7); void *__thiscall sub_5C99A0(void *this, int a2, int a3); bool __thiscall sub_5C9A20(int this, int a2); int __thiscall sub_5C9A50(int this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); char __thiscall sub_5C9AA0(int this); void __thiscall sub_5C9AC0(int this); void *__thiscall sub_5C9AF0(void *this); int __thiscall sub_5C9B60(int this, int a2); int loc_5C9BD0(); // weak void *__thiscall sub_5C9BF0(void *this, char a2); int __thiscall sub_5C9C30(int this); void __thiscall sub_5C9C50(int this); signed int __thiscall sub_5C9CD0(int this, int a2); signed int __thiscall sub_5C9D50(void *this); signed int __thiscall sub_5C9E50(int this, int *a2); char __thiscall sub_5C9F20(void *this, int a2); char __thiscall sub_5C9F70(void *this, int a2); char __thiscall sub_5C9FC0(int this, int a2); char __thiscall sub_5CA030(int this, int a2); int loc_5CA0A0(); // weak void __thiscall sub_5CA0B0(int this); int __thiscall sub_5CA140(int this, int a2); signed int __thiscall sub_5CA1C0(int this, int a2, int a3); signed int __thiscall sub_5CA240(int this, int a2); int __thiscall sub_5CA290(int this, int a2); char __thiscall sub_5CA2C0(int this, unsigned __int16 a2); signed int __thiscall sub_5CA440(int this, int a2); // signed int __userpurge sub_5CA5B0(int a1, int a2, int *a3); int __thiscall sub_5CA7E0(int this); int __thiscall sub_5CA900(int this); int __thiscall sub_5CA950(void *this, int a2); char __cdecl sub_5CA970(int a1, int a2); char __cdecl sub_5CAAF0(int a1, void *a2, int a3); void __cdecl sub_5CACC0(int a1); void __cdecl sub_5CAD90(int a1); void __cdecl sub_5CAE20(int a1); void __cdecl sub_5CAF20(int a1); void __cdecl sub_5CAFD0(int a1); _UNKNOWN *__cdecl sub_5CB170(); int __cdecl sub_5CB1E0(__int16 a1, unsigned __int16 *a2); unsigned int __cdecl sub_5CB350(unsigned __int16 a1); char __cdecl sub_5CB3D0(int a1, unsigned __int16 a2, int a3, int a4); char __cdecl sub_5CB560(unsigned __int16 a1, int a2); char __cdecl sub_5CB6F0(unsigned __int16 a1); int __cdecl sub_5CB8C0(int a1); int __cdecl sub_5CB9B0(unsigned __int16 a1, int a2); char __cdecl sub_5CBAA0(int a1, unsigned __int16 a2, int a3); char __cdecl sub_5CBAC0(int a1, unsigned __int16 a2); char __cdecl sub_5CBAE0(int a1, int a2, int a3, int a4); bool __thiscall sub_5CBC30(int this, int a2, int a3); bool __thiscall sub_5CBDF0(void *this, int a2, int a3); bool __thiscall sub_5CBE30(void *this, int a2, int a3); int __thiscall sub_5CBE70(int this, int a2); bool __thiscall sub_5CBEF0(void *this, int a2, int a3); int __cdecl sub_5CBF30(int a1, int a2); void *__thiscall sub_5CBFD0(void *this, char a2); bool __thiscall sub_5CC030(int this, int a2); int __thiscall sub_5CC060(int this, int a2); int __thiscall sub_5CC0B0(int this, int a2); int __thiscall sub_5CC100(int this, int a2); bool __thiscall sub_5CC150(int this, int a2); int __thiscall sub_5CC1A0(int this, int a2); int __thiscall sub_5CC1F0(int this, int a2); char __thiscall sub_5CC240(void *this, int a2); char __thiscall sub_5CC2C0(int this, int a2); void *__thiscall sub_5CC3C0(void *this); int __cdecl sub_5CC410(); int __cdecl sub_5CC430(); void *__thiscall sub_5CC450(void *this); void *__thiscall sub_5CC4B0(void *this, char a2); int __thiscall sub_5CC4F0(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_5CC720(int this, int a2, void *a3, int a4); int __thiscall sub_5CC800(void *this, unsigned __int16 a2); int __thiscall sub_5CC850(int this, int a2); char __cdecl sub_5CC930(); int __cdecl sub_5CC9D0(int a1); char __cdecl sub_5CCBB0(); void *__thiscall sub_5CCC50(void *this, int a2); void *__thiscall sub_5CCC80(void *this, __int16 a2); void *__thiscall sub_5CCCB0(void *this, int a2); void *__thiscall sub_5CCCE0(void *this, int a2); void *__thiscall sub_5CCD10(void *this, __int16 a2); void __thiscall sub_5CCD40(int this, int a2, int a3); bool __thiscall sub_5CCDA0(int this, int a2); bool __thiscall sub_5CCDC0(int this, int a2); bool __stdcall sub_5CCDF0(int a1); signed int __thiscall sub_5CCE40(void *this, int a2); bool __thiscall sub_5CCE70(int this, int a2); bool __thiscall sub_5CCEA0(int this, int a2); int loc_5CCED0(); // weak bool __stdcall sub_5CCEE0(int a1); int __cdecl sub_5CCF10(int a1, char a2, __int16 a3); // int __userpurge sub_5CCFD0(int a1, int a2, int a3, int a4); int __thiscall sub_5CD240(int this, int a2, int a3); int __thiscall sub_5CD280(int this, int a2, int a3); int __thiscall sub_5CD320(int this, int a2, int a3); signed int __thiscall sub_5CD330(int this, int a2); bool __thiscall sub_5CD370(int this, int a2); signed int __thiscall sub_5CD3A0(int this, int a2); int __cdecl sub_5CD3F0(int a1); int __cdecl sub_5CD550(); void *__thiscall sub_5CD570(void *this, char a2); int __thiscall sub_5CD5A0(void *this, int a2, int a3); int __thiscall sub_5CD950(void *this, int a2, int a3); void *__thiscall sub_5CDA30(void *this, char a2); void __stdcall sub_5CDA60(void *a1); int __thiscall sub_5CDAA0(int this); int __thiscall sub_5CDAF0(void *this, unsigned __int16 a2); char __cdecl sub_5CDB40(); void *__thiscall sub_5CDBE0(void *this); void __thiscall sub_5CDBF0(void *); // idb int __thiscall sub_5CDC00(int this, int a2, __int16 a3, unsigned __int16 a4); int __thiscall sub_5CDC40(int this, int a2); int loc_5CDC50(); // weak void *__thiscall sub_5CDC70(void *this, char a2); void *__thiscall sub_5CDCB0(void *this, char a2); int __stdcall sub_5CDCE0(unsigned int a1); char __thiscall sub_5CDD40(void *this, int a2); char __thiscall sub_5CDD90(void *this, int a2); char __thiscall sub_5CDDE0(void *this, int a2); char __thiscall sub_5CDE50(void *this, int a2); unsigned int __thiscall sub_5CDED0(int this, unsigned int a2); int __thiscall sub_5CDF30(int this); char __thiscall sub_5CDF70(int this, __int16 a2); FILE *__thiscall sub_5CDFE0(int this); FILE *__thiscall sub_5CE110(int this); FILE *__thiscall sub_5CE250(int this); int __thiscall sub_5CE380(int this, int a2, int a3); int __thiscall sub_5CE500(int this, int a2, int a3); char __thiscall sub_5CE560(int this, unsigned __int16 a2); int __thiscall sub_5CE6E0(int this); void *__thiscall sub_5CE810(void *this, char a2); char __thiscall sub_5CE890(int this, int a2, __int16 a3, __int16 a4); char __thiscall sub_5CEAA0(void *this, int a2, __int16 a3, unsigned __int16 a4); int __thiscall sub_5CEBC0(int this); void __thiscall sub_5CEBE0(int this); void __fastcall sub_5CEC60(int a1); int __thiscall sub_5CECB0(int this); void __thiscall sub_5CEE10(int this, int a2, unsigned __int16 a3, unsigned __int16 a4); bool __thiscall sub_5CF0A0(void *this, int a2, int a3, __int16 a4); bool __thiscall sub_5CF1D0(void *this, int a2, int a3, __int16 a4); bool __thiscall sub_5CF1E0(void *this, int a2, int a3); char __thiscall sub_5CF200(void *this, int a2, int a3, int a4, int a5, int a6); bool __thiscall sub_5CF2C0(int this, int a2, int a3, int a4, int a5); int __thiscall sub_5CF330(void *this, int a2, int a3); int __thiscall sub_5CF580(int this, int a2, int a3, int a4); void *__thiscall sub_5CF620(void *this); int __cdecl sub_5CF630(int a1); int __cdecl sub_5CF650(int a1); int __cdecl sub_5CF670(int a1); int __cdecl sub_5CF690(int a1); void *__thiscall sub_5CF6B0(void *this); void *__thiscall sub_5CF700(void *this); void *__thiscall sub_5CF760(void *this, const char *a2); void *__thiscall sub_5CF820(void *this, const char *a2); void *__thiscall sub_5CF8D0(void *this, const char *a2); void *__thiscall sub_5CF980(void *this, char a2); void *__thiscall sub_5CF9B0(void *this, char a2); void *__thiscall sub_5CF9E0(void *this, char a2); void *__thiscall sub_5CFA10(void *this); void *__thiscall sub_5CFA70(void *this); int __thiscall sub_5CFAD0(void *this); int __thiscall sub_5CFB30(int this, unsigned __int16 a2); int __cdecl sub_5CFB90(); int __thiscall sub_5CFBD0(void *this); int __thiscall sub_5CFC30(void *this, int a2); signed int __cdecl sub_5CFCF0(); __int16 __thiscall sub_5CFD40(void *this); char __stdcall sub_5CFDA0(int a1, int a2); char __thiscall sub_5CFDF0(void *this, int a2, int a3); char __thiscall sub_5CFF70(void *this, const char *a2, int a3); char __stdcall sub_5D0230(int a1, int a2); char __thiscall sub_5D0280(void *this, int a2, __int16 a3); char __stdcall sub_5D03F0(int a1); char __thiscall sub_5D0440(void *this, __int16 a2); char __stdcall sub_5D0570(int a1); char __thiscall sub_5D05C0(void *this, int a2); signed int __stdcall sub_5D0680(int a1); int __thiscall sub_5D06D0(int this, int a2); int __thiscall sub_5D0730(int this, int a2); int __thiscall sub_5D0790(int this, int a2); int __thiscall sub_5D07F0(int this, int a2); int __thiscall sub_5D0850(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_5D0A80(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_5D0CB0(void *this, int a2); int __thiscall sub_5D0D30(void *this, int a2); int __thiscall sub_5D0DC0(void *this, int a2); int __thiscall sub_5D0FF0(void *this); int __thiscall sub_5D10D0(void *this, int a2, int a3); int __thiscall sub_5D1320(void *this, int a2, int a3); void __stdcall sub_5D1570(void *a1); void __stdcall sub_5D15B0(void *a1); int __thiscall sub_5D15F0(int this, int a2, void *a3, int a4); int __thiscall sub_5D16D0(int this, int a2, void *a3, int a4); int __thiscall sub_5D17B0(int this, int a2, int a3); int __thiscall sub_5D1820(int this, int a2, int a3); void __thiscall sub_5D1890(void *this, int a2, unsigned int a3, int a4); int __thiscall sub_5D1A70(int this); int __thiscall sub_5D1AC0(int this); int __thiscall sub_5D1B10(void *this, int a2); int __thiscall sub_5D1C40(void *this); int __thiscall sub_5D1EB0(void *this, int a2); int __thiscall sub_5D1F80(void *this); int __thiscall sub_5D2080(void *this); int __thiscall sub_5D22D0(void *this, int a2, int a3, int a4); signed int __stdcall sub_5D23E0(int a1); signed int __thiscall sub_5D2460(void *this, int a2); int __thiscall sub_5D2570(int this, int a2, int a3, int a4); int __thiscall sub_5D2610(int this, int a2, int a3, int a4); int __thiscall sub_5D26B0(void *this, int a2, int a3); signed int __thiscall sub_5D2810(void *this, int a2); int __thiscall sub_5D29F0(void *this, int a2); int __thiscall sub_5D2AC0(void *this, int a2); int __cdecl sub_5D2BB0(int a1, int a2, int a3); int __thiscall sub_5D2C60(int this, int a2, int a3, int a4); int __thiscall sub_5D2CC0(int this, unsigned int a2); // void __usercall sub_5D2DAB(int a1); int __thiscall sub_5D2DD0(int this, int a2); int __thiscall sub_5D2E50(int this, unsigned int a2); int __thiscall sub_5D2F20(void *this); int __cdecl sub_5D3230(int a1); signed int __cdecl sub_5D32A0(int a1); signed int __cdecl sub_5D33D0(int a1); int __thiscall sub_5D34B0(int this); void __thiscall sub_5D34C0(int this, int a2); char __thiscall sub_5D34F0(void *this, int a2, int a3); // int __thiscall DNameNode::DNameNode(_DWORD); weak int __cdecl sub_5D35D0(int a1); int __cdecl sub_5D3710(int a1); int __cdecl sub_5D3960(int a1); // signed int __usercall sub_5D3990(int a1, int a2); bool __cdecl sub_5D3AA0(int a1, int a2); signed int __cdecl sub_5D3AC0(int a1); // signed int __usercall sub_5D3B60(int a1, int a2); signed int __cdecl sub_5D3CE0(int a1); signed int __cdecl sub_5D3E40(signed int a1); int __cdecl sub_5D3FD0(int a1); int __cdecl sub_5D40C0(int a1); int __cdecl sub_5D4140(int a1); bool __thiscall sub_5D4280(int this, const char *a2); bool __thiscall sub_5D4300(int this, int a2); void __thiscall sub_5D4380(int this, int a2); int __thiscall sub_5D43D0(int this, int a2); signed int __thiscall sub_5D43F0(int this, signed int a2); int __thiscall sub_5D4460(int this, int a2); signed int __thiscall sub_5D4480(int this, signed int a2); int __thiscall sub_5D44A0(int this, __int16 a2, int a3); signed int __thiscall sub_5D44D0(int this, int a2); int __thiscall sub_5D4550(int this, int a2, int a3, int a4); void __thiscall sub_5D4580(void *this); signed int __thiscall sub_5D4590(int this, int a2); int __thiscall sub_5D4670(int this, int a2, int a3, __int16 a4); signed int __thiscall sub_5D46A0(int this, int a2); int __thiscall sub_5D47A0(int this, int a2, int a3, char a4); signed int __thiscall sub_5D47D0(int this, int a2); int __thiscall sub_5D48D0(int this, int a2, int a3); int __thiscall sub_5D4900(int this, int a2, int a3, __int16 a4); signed int __thiscall sub_5D4930(int this, signed int a2); int __thiscall sub_5D49D0(int this, int a2, int a3, int a4, int a5, int a6); signed int __thiscall sub_5D4A10(int this, signed int a2); int __thiscall sub_5D4B00(int this, int a2, int a3, char a4, char a5); signed int __thiscall sub_5D4B30(int this, signed int a2); int __thiscall sub_5D4BF0(int this, int a2, int a3); int __thiscall sub_5D4C20(int this, int a2, int a3, int a4); signed int __thiscall sub_5D4C50(int this, signed int a2); int __thiscall sub_5D4D00(int this, int a2, int a3, int a4); signed int __thiscall sub_5D4D30(int this, signed int a2); int __thiscall sub_5D4E20(int this, int a2, int a3); signed int __thiscall sub_5D4E50(int this, signed int a2); int __thiscall sub_5D4EE0(int this, int a2, int a3, int a4); signed int __thiscall sub_5D4F10(int this, signed int a2); bool __thiscall sub_5D4FF0(int this, const void *a2, int a3); int __cdecl sub_5D5060(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)); char __thiscall sub_5D50D0(int this); int __thiscall sub_5D5420(int this); int __thiscall sub_5D5450(int this); char __cdecl sub_5D5460(int a1, __int16 a2, void *a3, int a4); signed int __cdecl sub_5D55F0(int a1); int __cdecl sub_5D56D0(int a1); int __cdecl sub_5D5780(int a1); signed int __cdecl sub_5D5870(int a1); signed int __cdecl sub_5D5AC0(int a1); signed int __cdecl sub_5D5CF0(int a1); signed int __cdecl sub_5D5ED0(int a1); int __cdecl sub_5D6010(int a1); signed int __cdecl sub_5D6100(int a1); signed int __cdecl sub_5D6190(int a1); signed int __cdecl sub_5D6220(int a1); signed int __cdecl sub_5D6390(int a1); int __cdecl sub_5D6570(int a1); signed int __cdecl sub_5D6670(int a1); int __cdecl sub_5D67A0(int a1); signed int __cdecl sub_5D6920(int a1); signed int __cdecl sub_5D6A60(int a1); signed int __cdecl sub_5D6BD0(int a1); signed int __cdecl sub_5D6E60(int a1); signed int __cdecl sub_5D7320(int a1); signed int __cdecl sub_5D7470(int a1); signed int __cdecl sub_5D7730(int a1); signed int __cdecl sub_5D79C0(int a1); signed int __cdecl sub_5D7CE0(int a1); signed int __cdecl sub_5D7DF0(int a1); signed int __cdecl sub_5D7F70(int a1); signed int __cdecl sub_5D81B0(int a1); signed int __cdecl sub_5D8370(int a1); signed int __cdecl sub_5D84D0(int a1); int __cdecl sub_5D88E0(int a1); int __cdecl sub_5D8AC0(int a1); int __cdecl sub_5D8C90(int a1); int __cdecl sub_5D8ED0(int a1); int __cdecl sub_5D9100(int a1); int __cdecl sub_5D9250(int a1); signed int __cdecl sub_5D9470(int a1); signed int __cdecl sub_5D9610(int a1); signed int __cdecl sub_5D9A10(int a1); signed int __cdecl sub_5D9C60(int a1); signed int __cdecl sub_5D9E60(int a1); int __cdecl sub_5DA000(int a1); int __cdecl sub_5DA1A0(int a1); signed int __cdecl sub_5DA370(int a1); signed int __cdecl sub_5DA540(int a1); signed int __cdecl sub_5DA730(int a1); signed int __cdecl sub_5DA8D0(int a1); signed int __cdecl sub_5DAAB0(int a1); signed int __cdecl sub_5DACC0(int a1); signed int __cdecl sub_5DAEC0(int a1); signed int __cdecl sub_5DB060(int a1); signed int __cdecl sub_5DB240(int a1); signed int __cdecl sub_5DB4B0(int a1); signed int __cdecl sub_5DB640(int a1); signed int __cdecl sub_5DB820(int a1); signed int __cdecl sub_5DB960(int a1); signed int __cdecl sub_5DBB20(int a1); signed int __cdecl sub_5DBCC0(int a1); signed int __cdecl sub_5DBE30(int a1); signed int __cdecl sub_5DBFB0(int a1); signed int __cdecl sub_5DC130(int a1); signed int __cdecl sub_5DC2E0(int a1); signed int __cdecl sub_5DC460(int a1); signed int __cdecl sub_5DC5F0(int a1); signed int __cdecl sub_5DC740(int a1); signed int __cdecl sub_5DC8B0(int a1); signed int __cdecl sub_5DCAE0(int a1); signed int __cdecl sub_5DCC60(int a1); signed int __cdecl sub_5DD3C0(int a1); signed int __cdecl sub_5DDA50(int a1); signed int __cdecl sub_5DE0A0(int a1); signed int __cdecl sub_5DE1E0(int a1); signed int __cdecl sub_5DE3A0(int a1); int __cdecl sub_5DE650(int a1); signed int __cdecl sub_5DE7A0(int a1); int __cdecl sub_5DE980(int a1); int __cdecl sub_5DEAB0(int a1); int __cdecl sub_5DEBB0(int a1); int __cdecl sub_5DEF00(int a1); signed int __cdecl sub_5DF270(int a1); signed int __cdecl sub_5DF4D0(int a1); signed int __cdecl sub_5DF780(int a1); int __cdecl sub_5DF930(int a1); signed int __cdecl sub_5DFA90(int a1); signed int __cdecl sub_5DFC90(int a1); int __cdecl sub_5DFEA0(int a1); int __cdecl sub_5E0010(int a1); signed int __cdecl sub_5E02F0(int a1); signed int __cdecl sub_5E0490(int a1); signed int __cdecl sub_5E0680(int a1); int __cdecl sub_5E0820(int a1); int __cdecl sub_5E09D0(int a1); int __cdecl sub_5E0B50(int a1); int __cdecl sub_5E0D30(int a1); int __cdecl sub_5E0EB0(int a1); int __cdecl sub_5E0FC0(int a1); int __cdecl sub_5E1100(int a1); int __cdecl sub_5E1220(int a1); int __cdecl sub_5E13C0(int a1); signed int __cdecl sub_5E14D0(int a1); signed int __cdecl sub_5E1660(int a1); int __cdecl sub_5E17D0(int a1); int __cdecl sub_5E1900(int a1); int __cdecl sub_5E1A30(int a1); signed int __cdecl sub_5E1B70(int a1); int __cdecl sub_5E1CB0(int a1); int __cdecl sub_5E1DC0(int a1); int __cdecl sub_5E1FA0(int a1); __int16 __thiscall sub_5E20E0(void *this); signed int __cdecl sub_5E2140(int a1); signed int __cdecl sub_5E22E0(int a1); signed int __cdecl sub_5E2500(int a1); signed int __cdecl sub_5E2740(int a1); signed int __cdecl sub_5E28A0(int a1); signed int __cdecl sub_5E2A40(int a1); signed int __cdecl sub_5E2BF0(int a1); signed int __cdecl sub_5E2D60(int a1); signed int __cdecl sub_5E2EC0(int a1); signed int __cdecl sub_5E30A0(int a1); signed int __cdecl sub_5E31D0(int a1); signed int __cdecl sub_5E33A0(int a1); signed int __cdecl sub_5E3610(int a1); signed int __cdecl sub_5E3800(int a1); int __cdecl sub_5E39B0(int a1); int __cdecl sub_5E3C40(int a1); int __cdecl sub_5E3E00(int a1); int __cdecl sub_5E3F60(int a1); int __cdecl sub_5E40F0(int a1); int __cdecl sub_5E4260(int a1); int __cdecl sub_5E4460(int a1); int __cdecl sub_5E46A0(int a1); signed int __cdecl sub_5E4800(int a1); int __cdecl sub_5E4940(int a1); signed int __cdecl sub_5E4A30(int a1); int __cdecl sub_5E4CD0(int a1); int __cdecl sub_5E4F30(int a1); int __cdecl sub_5E5040(int a1); int __cdecl sub_5E5170(int a1); signed int __cdecl sub_5E5320(int a1); int __cdecl sub_5E5460(int a1); signed int __cdecl sub_5E5570(int a1); signed int __cdecl sub_5E5680(int a1); int __cdecl sub_5E5790(int a1); int __cdecl sub_5E58D0(int a1); int __cdecl sub_5E5A10(int a1); int __cdecl sub_5E5AF0(int a1); int __cdecl sub_5E5BC0(int a1); int __cdecl sub_5E5D80(int a1); signed int __cdecl sub_5E5EE0(int a1); signed int __cdecl sub_5E6100(int a1); int __cdecl sub_5E6200(int a1); int __cdecl sub_5E6350(int a1); int __cdecl sub_5E65C0(int a1); signed int __cdecl sub_5E66D0(int a1); // signed int __usercall sub_5E68D0(int a1, int a2); // signed int __usercall sub_5E6AD0(int a1, int a2); // signed int __usercall sub_5E6CD0(int a1, int a2); // signed int __usercall sub_5E6ED0(int a1, int a2); signed int __cdecl sub_5E70C0(int a2); signed int __cdecl sub_5E7590(int a1); signed int __cdecl sub_5E77D0(int a1); signed int __cdecl sub_5E78F0(int a1); signed int __cdecl sub_5E7AB0(int a1); signed int __cdecl sub_5E7C70(int a1); signed int __cdecl sub_5E7E30(int a1); signed int __cdecl sub_5E7FF0(int a1); signed int __cdecl sub_5E8130(int a1); int __cdecl sub_5E82A0(int a1); signed int __cdecl sub_5E86D0(int a1); int __cdecl sub_5E8960(int a1); int __cdecl sub_5E8B30(int a1); int __cdecl sub_5E8D30(int a1); int __cdecl sub_5E8F00(int a1); int __cdecl sub_5E9260(int a1); int __cdecl sub_5E9390(int a1); int __cdecl sub_5E94B0(int a1); int __cdecl sub_5E95A0(int a1); int __cdecl sub_5E9A50(int a1); int __cdecl sub_5E9EF0(int a1); signed int __cdecl sub_5EA050(int a1); int __cdecl sub_5EA220(int a1); signed int __cdecl sub_5EA3B0(int a1); signed int __cdecl sub_5EA4F0(int a1); signed int __cdecl sub_5EA630(int a1); int __cdecl sub_5EA770(int a1); int __cdecl sub_5EA8B0(int a1); signed int __cdecl sub_5EA9F0(int a1); signed int __cdecl sub_5EAAD0(int a1); int __cdecl sub_5EAC10(int a1); int __cdecl sub_5EAE80(int a1); int __cdecl sub_5EB0A0(int a1); int __cdecl sub_5EB210(int a1); int __cdecl sub_5EB340(int a1); signed int __cdecl sub_5EB440(int a1); signed int __cdecl sub_5EB550(int a1); signed int __cdecl sub_5EB700(int a1); signed int __cdecl sub_5EB880(int a1); signed int __cdecl sub_5EB960(int a1); signed int __cdecl sub_5EBA60(int a1); signed int __cdecl sub_5EBC30(int a1); signed int __cdecl sub_5EBDD0(int a1); signed int __cdecl sub_5EBF40(int a1); signed int __cdecl sub_5EC0D0(int a1); signed int __cdecl sub_5EC260(int a1); signed int __cdecl sub_5EC400(int a1); signed int __cdecl sub_5EC5B0(int a1); signed int __cdecl sub_5EC770(int a1); signed int __cdecl sub_5EC8D0(int a1); void *__thiscall sub_5ECA70(void *this, const char *a2, int a3); char __thiscall sub_5ECB60(void *this, int a2, int a3, int a4); signed int __cdecl sub_5ECC60(int a1); signed int __cdecl sub_5ECE30(int a1); signed int __cdecl sub_5ECFE0(int a1); signed int __cdecl sub_5ED120(int a1); signed int __cdecl sub_5ED450(int a1); signed int __cdecl sub_5ED640(int a1); char __thiscall sub_5ED870(void *this, int a2); int __cdecl sub_5ED930(int a1); signed int __cdecl sub_5EDBC0(int a1); signed int __cdecl sub_5EDE60(int a1); signed int __cdecl sub_5EE2B0(int a1); int __cdecl sub_5EE500(int a1); int __cdecl sub_5EE830(int a1); void *__thiscall sub_5EE9D0(void *this, char a2); int __stdcall sub_5EEA00(unsigned int a1); int __cdecl sub_5EEA60(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)); void *__thiscall sub_5EEB20(void *this, char a2); // int __usercall sub_5EEB60(int a1, signed int a2); int __cdecl sub_5EEC80(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)); int __cdecl sub_5EED50(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __cdecl sub_5EEDD0(int a1); int __cdecl sub_5EF050(int a1); int __cdecl sub_5EF2D0(int a1); int __cdecl sub_5EF540(int a1, const void *a2, int a3); int __cdecl sub_5EF590(int a1, const void *a2, int a3); int __cdecl sub_5EF5E0(int a1, const void *a2, int a3); int __cdecl sub_5EF630(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __cdecl sub_5EF6D0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)); int __cdecl sub_5EF7A0(int a1, int a2, unsigned int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __cdecl sub_5EF9C0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)); signed int __cdecl sub_5EFA30(int a1); int __cdecl sub_5EFB90(int a1); int __cdecl sub_5EFD10(int a1); signed int __cdecl sub_5EFE90(int a1); signed int __cdecl sub_5F0290(int a1); signed int __cdecl sub_5F0510(int a1); int __cdecl sub_5F08F0(int a1); int __thiscall sub_5F0A80(int this, unsigned int a2); // void __usercall sub_5F0B89(int a1); int __thiscall sub_5F0BA0(int this, unsigned int a2); // void __usercall sub_5F0CA9(int a1); int __thiscall sub_5F0CC0(int this, unsigned int a2); // void __usercall sub_5F0DC9(int a1); int __cdecl sub_5F0DE0(int a1, int a2, signed int a3, int (__cdecl *a4)(_DWORD, _DWORD)); int __cdecl sub_5F0ED0(int a1); int __cdecl sub_5F10E0(int a1); int __thiscall sub_5F1350(int this, int a2); int __thiscall sub_5F13D0(int this, int a2); int __thiscall sub_5F1450(int this, int a2); unsigned int __thiscall sub_5F14D0(int this, int a2); int __thiscall sub_5F1530(int this, unsigned int a2); int __thiscall sub_5F15F0(int this, unsigned int a2); int __thiscall sub_5F16B0(int this, unsigned int a2); unsigned int __thiscall sub_5F1770(int this, unsigned int a2); signed int __cdecl sub_5F17F0(int a1); int __cdecl sub_5F1A90(int a1); char __thiscall sub_5F1F20(int this); // int __usercall sub_5F3CB0(signed int a1, int a2); int __cdecl sub_5F3D00(int a1, int *a2); signed int __cdecl sub_5F3D20(int a1, int a2); int __cdecl sub_5F3D90(int a1, int a2, int a3); int __cdecl sub_5F3DE0(int a1, int a2); _UNKNOWN *__cdecl sub_5F3E00(int a1); int __cdecl sub_5F3E20(int a1, int a2); int __cdecl sub_5F3E50(int a1); int __cdecl sub_5F3E70(int a1, int a2); int __cdecl sub_5F3EC0(int a1, signed int a2); int __cdecl sub_5F3F50(int a1, signed int a2); // char __usercall sub_5F3FE0(signed int a1, int a2, int a3); char __cdecl sub_5F4090(int a1, signed int a2); char __cdecl sub_5F40B0(int a1, signed int a2, signed int a3); int __cdecl sub_5F4140(int a1, signed int a2); int __cdecl sub_5F41F0(int a1, signed int a2); int __cdecl sub_5F4280(int a1, int a2); bool __cdecl sub_5F4290(int a1, signed int a2); int __cdecl sub_5F4310(int a1, signed int a2); bool __cdecl sub_5F43A0(int a1, signed int a2); bool __cdecl sub_5F43D0(int a1, signed int a2, signed int a3); signed int __cdecl sub_5F44F0(int a1, signed int a2, signed int a3, int a4); double __cdecl sub_5F4640(int a1, signed int a2, int a3); signed int __cdecl sub_5F46F0(int a1, signed int a2, int a3); int __cdecl sub_5F47B0(int a1, signed int a2, int a3); bool __cdecl sub_5F4870(int a1, signed int a2); int __cdecl sub_5F48F0(int a1, signed int a2, int a3); unsigned int __cdecl sub_5F49B0(int a1, signed int a2); int __cdecl sub_5F4A60(int a1, signed int a2); int __cdecl sub_5F4B00(int a1, signed int a2); int __cdecl sub_5F4B70(int a1, signed int a2); int __cdecl sub_5F4C60(int a1); int __cdecl sub_5F4C80(int, double); // idb int __cdecl sub_5F4CC0(int a1, signed int a2); int __cdecl sub_5F4CE0(int a1, signed int a2); int __cdecl sub_5F4D30(signed int a1, const void *a2, size_t a3); int __cdecl sub_5F4D80(signed int a1, const void *a2); int __cdecl sub_5F4DE0(signed int a1, int a2, int a3); int __cdecl sub_5F4E10(signed int a1, int a2, char a3); int __cdecl sub_5F4E40(signed int a1, int a2, int a3); __int64 __cdecl sub_5F4ED0(int a1, int a2); int __cdecl sub_5F4EF0(int a1, int a2); bool __cdecl sub_5F4F10(int a1); int __cdecl sub_5F4F40(int a1, const void *a2); int __cdecl sub_5F4FA0(int a1, signed int a2); int __cdecl sub_5F5020(int a1, signed int a2, const void *a3); int __cdecl sub_5F50C0(int a1, signed int a2); int __cdecl sub_5F5140(int a1, signed int a2, signed int a3); int __cdecl sub_5F51C0(signed int a1, int a2, int a3); signed int __cdecl sub_5F5210(int a1, signed int a2); int __cdecl sub_5F5300(int a1, signed int a2); int __cdecl sub_5F5390(int a1, const void *a2); int __cdecl sub_5F53F0(int a1, signed int a2, const void *a3); int __cdecl sub_5F5490(int a1, signed int a2); int __cdecl sub_5F5560(int a1, signed int a2, signed int a3); signed int __cdecl sub_5F5620(int a1, signed int a2); char __cdecl sub_5F5770(int a1, signed int a2); int __cdecl sub_5F5820(int a1, int a2); int __cdecl sub_5F5850(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_5F58B0(int a1, int a2); int __cdecl sub_5F58D0(int a1, int a2, int a3, signed int a4, int a5, int a6); int __cdecl sub_5F5990(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_5F5A50(int a1, int a2, int a3); int __cdecl sub_5F5A90(int a1); signed int __cdecl sub_5F5AA0(signed int a1, int a2, int a3); signed int __cdecl sub_5F5C30(int a1, signed int a2); void __cdecl sub_5F5CC0(int a1, signed int a2); int __cdecl sub_5F5D30(int a1, signed int a2); int __cdecl sub_5F5DB0(signed int a1, unsigned int a2); // int __usercall sub_5F5DF0(signed int a1, int a2, int a3, int a4); int loc_5F5E0B(); // weak int __cdecl sub_5F5E80(int a1, signed int a2, signed int a3); int __cdecl sub_5F5F70(int a1, signed int a2, signed int a3); // int __usercall sub_5F6050(signed int a1, int a2, int a3, int a4); int __cdecl sub_5F60B0(int a1, signed int a2, int a3); char __cdecl sub_5F61D0(int a1, signed int a2, int a3, signed int a4, int a5); _DWORD __cdecl sub_5F6270(_DWORD, _DWORD, _DWORD); // weak // signed int __usercall sub_5F6350(int a1, int a2); // int __usercall sub_5F63C0(int a1, signed int a2); int __thiscall sub_5F6460(int this); void __cdecl sub_5F6510(int a1, int a2, int a3, int a4); int __cdecl sub_5F6670(signed int a1, int a2); int __cdecl sub_5F6700(signed int a1, int a2, char a3); signed int __cdecl sub_5F6740(int a1, int a2, int a3); signed int __cdecl sub_5F67D0(int a1, signed int a2); signed int __cdecl sub_5F6850(int a1, const void *a2); signed int __cdecl sub_5F68B0(int a1, const void *a2); int __cdecl sub_5F68E0(int a1, signed int a2, const void *a3); signed int __cdecl sub_5F6950(int a1, int a2, int a3); int __cdecl sub_5F69A0(int a1, unsigned int a2); void *__cdecl sub_5F6A30(int a1, const void *a2, size_t a3); void *__cdecl sub_5F6A60(int a1, char *a2); int __cdecl sub_5F6AA0(int a1); int __cdecl sub_5F6AE0(int a1, int a2); int __cdecl sub_5F6B20(size_t); // idb int __cdecl sub_5F6B90(int a1, int a2); int __cdecl sub_5F6BC0(int a1, int a2, unsigned int a3); int __cdecl sub_5F6BF0(int a1, int a2, int a3); // signed int __usercall sub_5F6C50(signed int a1, int a2, char a3); // int __usercall sub_5F6C90(int a1); // signed int __usercall sub_5F6CE0(int a1, int a2); signed int __cdecl sub_5F6D20(int a1, const char *a2, int a3); int __cdecl sub_5F6FB0(int a1, int a2, int a3); int __cdecl sub_5F6FE0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_5F7020(int a1, int a2); signed int __cdecl sub_5F7060(int a1, signed int a2, const void *a3); signed int __cdecl sub_5F70C0(int a1, int a2, const void *a3); signed int __cdecl sub_5F7140(int a1, signed int a2); int __cdecl sub_5F7190(int a1, signed int a2, int a3); signed int __cdecl sub_5F7290(int a1, signed int a2, const void *a3); int __cdecl sub_5F7300(signed int a1, const void *a2, int a3, int a4); int __cdecl sub_5F73C0(int a1, const char *a2, const char *a3, const char *a4); void *__cdecl sub_5F76A0(int a1, void *a2, int a3, size_t a4); int __cdecl sub_5F76D0(int a1); int __cdecl sub_5F7710(); int __cdecl sub_5F7740(int, double); // idb int __cdecl sub_5F7800(int a1, int a2); int __cdecl sub_5F7910(int a1, signed int a2, const void *a3); int __cdecl sub_5F7960(int a1, signed int a2, int a3); int __cdecl sub_5F79C0(int a1, signed int a2); int __cdecl sub_5F79F0(int a1, signed int a2, int a3); const char *__cdecl sub_5F7A50(int a1, signed int a2, const char *a3, int a4); double __cdecl sub_5F7AB0(int a1, signed int a2); double __cdecl sub_5F7B20(int a1, signed int a2, double a3); signed int __cdecl sub_5F7B50(int a1, signed int a2); int __cdecl sub_5F7BB0(int a1, signed int a2); signed int __cdecl sub_5F7C10(int a1, signed int a2, signed int a3); int __cdecl sub_5F7C40(int a1, int a2, int a3); int __cdecl sub_5F7CF0(int a1, signed int a2, int a3, const char **a4); int __cdecl sub_5F7DE0(int a1); signed int __cdecl sub_5F7EE0(int a1); int __cdecl sub_5F8050(int a1); signed int __cdecl sub_5F80B0(int a1); int __cdecl sub_5F8100(int a1); signed int __cdecl sub_5F8180(int a1); signed int __cdecl sub_5F81C0(int a1); signed int __cdecl sub_5F8210(int a1); signed int __cdecl sub_5F8250(int a1); signed int __cdecl sub_5F8290(int a1); signed int __cdecl sub_5F8350(int a1); signed int __cdecl sub_5F8380(int a1); signed int __cdecl sub_5F83D0(int a1); int __cdecl sub_5F8440(int a1); signed int __cdecl sub_5F8490(int a1); signed int __cdecl sub_5F8500(int a1); int __cdecl sub_5F8590(int a1, int a2, int a3); signed int __cdecl sub_5F8620(int a1); int __cdecl sub_5F8700(int a1); int __cdecl sub_5F8720(int a1); int __cdecl sub_5F8780(int a1); int __cdecl sub_5F87D0(int a1); int __cdecl sub_5F8850(int a1); int __cdecl sub_5F88C0(int a1); int __cdecl sub_5F8960(int a1); signed int __cdecl sub_5F8A20(int a1); signed int __cdecl sub_5F8A50(int a1); signed int __cdecl sub_5F8AB0(int a1); signed int __cdecl sub_5F8B00(int a1); signed int __cdecl sub_5F8B60(int a1); signed int __cdecl sub_5F8BB0(int a1); signed int __cdecl sub_5F8C00(int a1); signed int __cdecl sub_5F8C30(int a1); signed int __cdecl sub_5F8CA0(int a1); signed int __cdecl sub_5F8D10(int a1); signed int __cdecl sub_5F8DC0(int a1); signed int __cdecl sub_5F8E00(int a1); // signed int __usercall sub_5F8E40(int a1, int a2, int a3); signed int __cdecl sub_5F8ED0(int a1); signed int __cdecl sub_5F8F20(int a1); signed int __cdecl sub_5F8F90(signed int a1); int __cdecl sub_5F8FC0(int a1); // signed int __usercall sub_5F8FD0(int a1, signed int a2); // int __usercall sub_5F9030(int result, int a2); int __cdecl sub_5F91E0(int a1, int a2, int a3); void __cdecl sub_5F9240(int a1, int *a2, int a3); // int __usercall sub_5F92C0(int a1, int a2); int __cdecl sub_5F9370(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_5F93A0(int a1, int a2, int a3, int a4); int __cdecl sub_5F93D0(int a1, int a2, signed int a3); int __cdecl sub_5F9430(int a1, int a2); int __cdecl sub_5F9470(int a1, int a2); // signed int __usercall sub_5F94B0(signed int result, int a2); signed int __thiscall sub_5F94D0(int this, int a2, int a3); signed int __cdecl sub_5F9640(int a1, int a2); int __cdecl sub_5F9670(int, double); // idb int __cdecl sub_5F9710(int a1, int a2, int a3); int __cdecl sub_5F97C0(int a1, int a2); int __cdecl sub_5F9820(int a1, int a2); // int __usercall sub_5F98F0(int a1, int a2); // signed int __usercall sub_5F9940(int a1, int a2, int a3); int __cdecl sub_5F99B0(int a1, int a2); int __cdecl sub_5F9A80(int a1, int a2, int a3); int __cdecl sub_5F9B30(int a1); int __cdecl sub_5F9B70(int a1, int a2, int a3); void __cdecl sub_5F9BA0(int a1, int a2); // int __usercall sub_5F9BC0(int a1, int a2, int a3); // int __usercall sub_5F9CE0(int result, int a2); // signed int __usercall sub_5F9D30(int a1, int a2, int a3); signed int __cdecl sub_5F9E60(int a1, int a2); signed int __cdecl sub_5F9ED0(int a1, int a2); int __cdecl sub_5F9F30(int a1, int a2); int __cdecl sub_5F9F90(int a1, int a2); signed int __cdecl sub_5FA000(__int64 a1); signed int __cdecl sub_5FA110(int a1, int a2, int a3); signed int __cdecl sub_5FA1E0(int a1, int a2, signed int a3); // int __usercall sub_5FA2D0(int a1, int a2, int a3); void __cdecl sub_5FA3D0(int a1, int a2); void __cdecl sub_5FA470(int a1, int a2); // int __usercall sub_5FA4E0(int a1, int a2); char __cdecl sub_5FA5A0(unsigned int a1, int a2, unsigned int a3); // signed int __usercall sub_5FA5E0(int a1, int a2, int a3, int a4, int a5); // void __usercall sub_5FA6E0(unsigned int a1, int a2, int a3, int a4, unsigned int a5); int __cdecl sub_5FA7A0(int a1, int a2, int a3, int a4); void __cdecl sub_5FA850(int a1, int a2, int a3); void __cdecl sub_5FA900(int a1, int a2, unsigned int a3, unsigned int a4, int a5); void __cdecl sub_5FAAB0(int a1, int a2, int a3); // signed int __usercall sub_5FAAF0(int a1, int a2, int a3); int __cdecl sub_5FABC0(int a1); signed int __cdecl sub_5FAC40(int a1); signed int __cdecl sub_5FACB0(int a1); signed int __cdecl sub_5FACF0(int a1); int __cdecl sub_5FAD40(int a1); signed int __cdecl sub_5FAD70(int a1); signed int __cdecl sub_5FAE20(int a1); signed int __cdecl sub_5FAE40(signed int a1); signed int __cdecl sub_5FAE70(int a1); signed int __cdecl sub_5FAE90(int a1); signed int __cdecl sub_5FAEC0(int a1); signed int __cdecl sub_5FAF10(int a1); signed int __cdecl sub_5FAF50(int a1); // int __usercall sub_5FAFC0(int a1, int a2, const void *a3); int __cdecl sub_5FB010(int a1); int __cdecl sub_5FB310(int a1); int __cdecl sub_5FB430(int a1); int __cdecl sub_5FB510(int a1); int __cdecl sub_5FB560(int a1); signed int __cdecl sub_5FB5C0(int a1); int __cdecl sub_5FB650(int a1); int __cdecl sub_5FB760(int a1, int a2); int __cdecl sub_5FB7F0(int a1); signed int __cdecl sub_5FB950(int a1); int __cdecl sub_5FBA50(int a1); signed int __cdecl sub_5FBBD0(int a1); signed int __cdecl sub_5FBC80(signed int a1); int __thiscall sub_5FBCB0(void *this); signed int __cdecl sub_5FBCE0(int a1, int a2, int a3, int a4); int __cdecl sub_5FBD20(int a1); int __cdecl sub_5FBD30(int a1); int __cdecl sub_5FBD40(int a1); signed int __cdecl sub_5FBD50(int a1, int a2, int a3); // int __usercall sub_5FBDA0(int a1, int a2, int a3, int a4); int __cdecl sub_5FBE40(int a1, int a2, int a3); int __cdecl sub_5FBEB0(int a1, int a2, int a3); // char __usercall sub_5FBF00(int a1, int a2); // int __usercall sub_5FBF80(int a1, int a2); // int __usercall sub_5FC050(int a1, int a2, int a3, int a4); // signed int __usercall sub_5FC0A0(int a1, int a2, int a3); _DWORD __cdecl sub_5FC180(_DWORD, _DWORD, _DWORD, _DWORD); // weak // int __usercall sub_5FC380(int a1, int a2, int a3); // int __usercall sub_5FC4D0(int a1, int a2, int a3); // int __usercall sub_5FC530(int a1); // signed int __usercall sub_5FC670(int a1, int a2, int a3, int a4, int a5); signed int __cdecl sub_5FC7F0(int a1, const char *a2, int a3); void __cdecl sub_5FC9F0(int a1, int a2, int a3); void __cdecl sub_5FCA20(int a1, int a2, int a3); // int __usercall sub_5FCAA0(int a1, int a2, int a3); void __cdecl sub_5FCB10(int a1, int a2); int __cdecl sub_5FCB90(int a1, void (__cdecl *a2)(_DWORD, _DWORD), int a3); int __cdecl sub_5FCC10(int a1, int a2); int __cdecl sub_5FCD00(int a1, int a2); int __cdecl sub_5FCD70(int a1); int __cdecl sub_5FCDD0(int a1, int a2, int a3); // int __usercall sub_5FCE90(int a1, int a2); int __cdecl sub_5FCF70(int a1, int a2); int __cdecl sub_5FD020(int a1); // signed int __usercall sub_5FD0A0(int a1, int a2); int __cdecl sub_5FD160(int a1, int a2, int a3, int a4); int __cdecl sub_5FD1E0(int a1, void (__cdecl *a2)(_DWORD, _DWORD), int a3, int a4, int a5); int __cdecl sub_5FD270(int a1, int a2); int __cdecl sub_5FD390(int a1, int a2, int a3, int a4); signed int __cdecl sub_5FD450(int a1, int a2, __int16 a3); int __cdecl sub_5FD660(int a1, int a2, __int16 a3, int a4); int __cdecl sub_5FD700(int a1, int a2); signed int __cdecl sub_5FD7E0(int a1, int a2, int a3); // int __usercall sub_5FD890(int result, int a2); // int __usercall sub_5FD910(int a1, int a2); // int __usercall sub_5FDA70(int a1, int a2); // int __usercall sub_5FDB00(int a1, int a2); _DWORD __cdecl sub_5FDD30(_DWORD, _DWORD); // weak int __cdecl sub_5FDE60(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_5FDEE0(int a1, int a2); int __cdecl sub_5FDF10(int a1, int a2); int __cdecl sub_5FDF60(int a1); int __cdecl sub_5FDF90(int a1, unsigned int a2); int __cdecl sub_5FE000(int a1, int a2); void __cdecl sub_5FE040(int a1, unsigned int a2); int __cdecl sub_5FE0E0(int a1); int __cdecl sub_5FE140(int a1, int a2); int __cdecl sub_5FE1E0(int a1, int a2, int a3); int __cdecl sub_5FE230(int a1, int a2); int __cdecl sub_5FE250(int a1, char a2, int a3, int a4, int a5); _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); // weak // int __usercall sub_5FE400(int a1); // void __usercall sub_5FE580(int a1); // void __usercall sub_5FE6E0(int a1); // void __usercall sub_5FE740(int a1); // int __usercall sub_5FE7B0(int a1, int a2); // int __usercall sub_5FE8E0(int a1, int a2); // int __usercall sub_5FEA10(int a1, int a2); // int __usercall sub_5FEBC0(int a1, int a2); // int __usercall sub_5FED70(int a1, int a2); // int __usercall sub_5FEE10(int result, int a2); _DWORD __cdecl sub_5FEF10(_DWORD, _DWORD, _DWORD); // weak // int __usercall sub_5FF010(int result, int a2, int a3); // void __usercall sub_5FF120(int a1); int __cdecl sub_5FF170(int a1); // signed int __usercall sub_5FF190(int a1, int a2); void __cdecl sub_5FF2B0(int a1, int a2, int a3); int __cdecl sub_5FF4A0(int a1); char __cdecl sub_5FF530(int a1, int a2, int a3); char __cdecl sub_5FF570(int a1, int a2, int a3); char __cdecl sub_5FF5B0(int a1, int a2); // int __usercall sub_5FF620(int a1, int a2); // signed int __usercall sub_5FF770(int a1, int a2); // int __usercall sub_5FF950(int a1, int a2); // int __usercall sub_5FFA40(int a1); // void __usercall sub_5FFB20(int a1); // void __usercall sub_5FFC00(int a1); // int __usercall sub_5FFC50(int result, int a2, int a3); // int __usercall sub_5FFD30(int result, int a2, int a3); int __cdecl sub_5FFE90(int a1); _DWORD __cdecl sub_600010(_DWORD, _DWORD); // weak // int __usercall sub_600190(int a1); int __cdecl sub_6003B0(signed int a1, int a2); int __cdecl sub_6004A0(int a1, int a2); // int __usercall sub_600520(signed int a1); int __cdecl sub_6005A0(signed int a1); int __cdecl sub_600600(signed int a1); int __cdecl sub_600630(signed int a1); signed int __cdecl sub_600690(int a1); signed int __cdecl sub_600700(int a1); int __cdecl sub_600750(int a1); int __cdecl sub_6007C0(int a1); signed int __cdecl sub_600810(int a1); // FILE *__usercall sub_600850(char a1, signed int a2, const char *a3); signed int __cdecl sub_6008B0(int a1); signed int __cdecl sub_600990(int a1); signed int __cdecl sub_6009C0(int a1); signed int __cdecl sub_600A40(signed int a1); // signed int __usercall sub_600AA0(int a1, const void *a2, const char *a3); signed int __cdecl sub_600B30(int a1); signed int __cdecl sub_600B50(int a1); // signed int __usercall sub_600B70(FILE *a1, int a2); // signed int __usercall sub_600BC0(int a1, FILE *a2, int a3); // int __usercall sub_600CB0(FILE *a1, int a2); int __fastcall sub_600D50(int a1, FILE *a2, signed int a3); int __cdecl sub_600FB0(int a1); int __cdecl sub_601000(int a1); int __cdecl sub_601040(int a1); // signed int __usercall sub_601150(signed int a1, int a2, FILE *a3); signed int __cdecl sub_601210(int a1); signed int __cdecl sub_601270(int a1); signed int __cdecl sub_6012C0(int a1); signed int __cdecl sub_6013A0(int a1); signed int __cdecl sub_601420(int a1); signed int __cdecl sub_601480(int a1); int __cdecl sub_6014D0(int); // weak signed int __cdecl sub_601510(signed int a1); // int __usercall sub_601660(int a1, int a2); signed int __cdecl sub_6016E0(signed int a1); signed int __cdecl sub_601720(int a1); char __thiscall sub_6017E0(int this, char a2); int __cdecl sub_601850(int a1); int __cdecl sub_601890(int a1, signed int a2); int __cdecl sub_6019C0(int a1, const void *a2, size_t a3); // signed int __usercall sub_601A40(int a1); int __cdecl sub_601AD0(int a1, int a2, int a3, int a4, int a5); // signed int __usercall sub_601B50(int a1, const char *a2); // int __usercall sub_601BC0(int a1, int a2); // int __usercall sub_601EA0(int a1, int a2); // int __usercall sub_6022F0(int a1); // int __usercall sub_602380(int a1); // int __usercall sub_602420(int a1, int a2, int a3, int a4, int a5); // int __usercall sub_6028A0(int a1, int a2, int a3, int a4); // int __usercall sub_602EE0(int a1, int a2, int a3); // int __usercall sub_602F30(int a1, int a2, int a3); signed int __cdecl sub_602F50(int a1); signed int __cdecl sub_602F80(int a1); signed int __cdecl sub_602FB0(int a1); signed int __cdecl sub_602FE0(int a1); signed int __cdecl sub_603010(int a1); signed int __cdecl sub_603040(int a1); signed int __cdecl sub_603070(int a1); signed int __cdecl sub_6030A0(int a1); signed int __cdecl sub_6030D0(int a1); signed int __cdecl sub_603100(int a1); signed int __cdecl sub_603130(int a1); int __cdecl sub_603180(double); // idb int __cdecl sub_6031B0(double); // idb signed int __cdecl sub_6031E0(int a1); int __cdecl sub_603230(double); // idb signed int __cdecl sub_603280(int a1); signed int __cdecl sub_6032B0(int a1); signed int __cdecl sub_603300(int a1); signed int __cdecl sub_603390(int a1); signed int __cdecl sub_6033C0(int a1); signed int __cdecl sub_6033F0(int a1); int __cdecl sub_603420(double); // idb int __cdecl sub_603460(double); // idb signed int __cdecl sub_6034A0(int a1); signed int __cdecl sub_603510(int a1); int __cdecl sub_603580(int a1); int __cdecl sub_603690(int a1); signed int __cdecl sub_6036B0(signed int a1); _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); // weak int __cdecl sub_6037B0(int a1, int a2, signed int *a3, unsigned int a4, signed int a5, int a6); // int __usercall sub_603830(int a1); // int __usercall sub_6038D0(signed int a1); // int __usercall sub_603950(int a1, const void *a2, int a3); int __cdecl sub_6039A0(int a1); // signed int __usercall sub_6039F0(int a1, const void *lpLibFileName, LPCSTR lpProcName); signed int __cdecl sub_603AB0(int a1); // int __usercall sub_603B20(const char *a1, char *a2, int a3, const char *a4, const char *a5); signed int __cdecl sub_603C80(int a1); int __cdecl sub_603D00(int a1); // signed int __usercall sub_603DD0(const char *a1, int a2, const void *lpLibFileName); int __cdecl sub_603E50(int a1); int __cdecl sub_603F30(int a1); signed int __cdecl sub_604040(int a1); // int __usercall sub_6040A0(char a1, int a2); signed int __cdecl sub_6041B0(int a1); // int __usercall sub_604280(int a1, int a2, char *a3, const void *Str, char *Stra, const char *a6); // int __usercall sub_604330(signed int a1); signed int __cdecl sub_604380(int a1); unsigned int __cdecl sub_6044C0(unsigned int a1); int __cdecl sub_6044F0(signed int a1); int __cdecl sub_604510(int a1); double __cdecl sub_604540(int a1, long double a2, long double a3); int __cdecl sub_6045D0(int a1); double __fastcall sub_6045F0(int a1, int a2, double a3); double __cdecl sub_604650(int a1, int a2); int __cdecl sub_604790(char *, int, int); // idb int __cdecl sub_604B20(int a1, int a2, char a3); char __cdecl sub_604B40(void *a1, void *a2, size_t a3); signed int __cdecl sub_604C80(int a1); signed int __cdecl sub_604CD0(int a1); signed int __cdecl sub_604D00(int a1); int __cdecl sub_604D40(signed int a1); signed int __cdecl sub_604DB0(int a1); signed int __cdecl sub_604DE0(int a1); // int __usercall sub_604E10(int a1, int a2, signed int a3); signed int __cdecl sub_604EA0(int a1); signed int __cdecl sub_605150(int a1); signed int __cdecl sub_6053A0(int a1); signed int __cdecl sub_6053F0(int a1); int __cdecl sub_605440(int a1); signed int __cdecl sub_6054B0(signed int a1); // signed int __usercall sub_605560(int a1, int a2, int a3, int a4); // int __usercall sub_605580(int a1, int a2); // signed int __usercall sub_6055B0(int a1, int a2, int a3); int __cdecl sub_6055D0(int a1, int a2); // __int16 __usercall sub_605680(int a1, int a2); // int __usercall sub_605700(int a1, int a2); // int __usercall sub_605740(int result, signed int a2); // signed int __usercall sub_6057A0(int a1, int a2); // int __usercall sub_6057E0(int a1, int a2, int a3); // signed int __usercall sub_6058B0(int a1, int a2); _DWORD __cdecl sub_6058F0(_DWORD, _DWORD, _DWORD, _DWORD); // weak // char __usercall sub_6059A0(int a1, int a2, int a3); // int __usercall sub_605A40(int a1, int a2, int a3, int a4); // int __usercall sub_605AB0(int a1, int a2, int a3); // signed int __usercall sub_605B80(int a1, int a2); // int __usercall sub_605CE0(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_605E70(int a1, int a2); // int __usercall sub_605FB0(int a1); // int __usercall sub_606130(int a1); // int __usercall sub_6061D0(int a1, int a2, int a3); int __cdecl sub_606290(int a1); // signed int __usercall sub_606470(int a1, signed int a2); // char __usercall sub_6064D0(int a1, int a2); // int __usercall sub_606550(int a1, int a2); // void __usercall sub_606670(int a1, int a2); // int __usercall sub_6068C0(int a1); // int __usercall sub_606AD0(int a1, int a2); // int __usercall sub_606B10(int a1, int a2, int a3, int a4); // int __usercall sub_606FF0(int a1, int a2); // signed int __usercall sub_6071C0(int a1); _DWORD __cdecl sub_607370(_DWORD, _DWORD, _DWORD); // weak // int __usercall sub_6074A0(int a1, int a2); // int __usercall sub_607500(int result, int a2, int a3); // signed int __usercall sub_6076F0(int a1, int a2); // int __usercall sub_607770(int a1, int a2, int a3); // int __usercall sub_607BC0(int a1, int a2, int a3, int a4, int a5); int __fastcall sub_607D50(int a1, int a2, int a3); int __fastcall sub_607E90(int a1, int a2); // void __usercall sub_608190(int a1, int a2, int *a3); int __thiscall sub_608470(int this); // int __usercall sub_608520(int a1, int a2, int a3); // int __usercall sub_608700(int a1, int a2, int a3); // int __usercall sub_608760(int a1); int __thiscall sub_6087F0(int this); // signed int __usercall sub_608900(int a1, int a2); // signed int __usercall sub_608BA0(int a1, int a2); // int __usercall sub_608BF0(int a1, int a2, int a3); int __cdecl sub_608C60(int a1, int a2, int a3, int a4, const void *a5, int a6); int __cdecl sub_608D10(int a1, int a2); int __cdecl sub_608D30(int a1); int __cdecl sub_608D60(int a1); // int __usercall sub_608DA0(int a1, int a2); // int __usercall sub_608E20(int a1, int a2); int __cdecl sub_608E80(int a1); // int __usercall sub_608ED0(int a1); int __cdecl sub_608F70(signed int a1); int __cdecl sub_609010(int a1, int a2); int __cdecl sub_609070(int (__cdecl *a1)(_DWORD, _DWORD, _DWORD, _DWORD), int a2); int __cdecl sub_609230(int a1); signed int __cdecl sub_609250(int a1, int a2); bool __cdecl sub_6092C0(int a1, int a2); unsigned int __cdecl sub_609300(int a1, unsigned int a2, int a3); int __cdecl sub_609340(int a1, int a2); // int __usercall sub_609450(unsigned int a1, int a2, int a3); int __cdecl sub_609580(int a1, const void *a2, size_t a3); int __cdecl sub_609600(int a1, const void *a2); int __cdecl sub_609630(int a1, unsigned int a2, int a3); signed int __cdecl sub_609670(int a1); signed int __cdecl sub_6096A0(int a1); signed int __cdecl sub_609760(int a1); signed int __cdecl sub_6097F0(int a1); signed int __cdecl sub_609890(int a1); int __cdecl sub_609930(int a1); int __cdecl sub_609AB0(int a1); signed int __cdecl sub_609B90(int a1); int __cdecl sub_609C40(int a1, const void *a2, size_t a3, int a4); int __cdecl sub_609C60(int a1); // int __usercall sub_609CF0(int a1, int a2); // int __usercall sub_609D60(int a1, int a2); // signed int __usercall sub_609E80(int a1, int a2, unsigned int a3); // int __usercall sub_60A040(unsigned int a1, int a2, int a3); int __cdecl sub_60A0B0(int a1, int *a2, int a3, int a4); // int __usercall sub_60A150(int *a1, int a2, int a3, int a4); // int __usercall sub_60A1E0(int a1, int a2, int a3, int a4); // int __usercall sub_60A230(int a1, int a2, int a3); // int __usercall sub_60A290(int a1, int a2, int a3); _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); // weak // void *__usercall sub_60A630(size_t a1, const void *a2, size_t a3, int *a4); int __thiscall sub_60A6E0(_DWORD); // weak // int __usercall sub_60A760(int a1, const void *a2, int a3); // signed int __usercall sub_60A830(unsigned int a1, int a2); int __thiscall sub_60A880(int this, int a2); int __cdecl sub_60AAD0(int a1); int __cdecl sub_60AAF0(int a1); int __cdecl sub_60AB10(int a1); signed int __cdecl sub_60AC30(int a1); // char __usercall sub_60AC80(unsigned int a1, int a2, const void *a3, int a4); // char __usercall sub_60AD80(int a1, int a2, int a3, size_t a4, const void *a5); signed int __cdecl sub_60AEB0(int a1); // int __usercall sub_60B0C0(signed int a1, int a2, int a3); // int *__usercall sub_60B200(signed int a1, const void *a2, int a3); int __thiscall sub_60B2E0(const char *this, const char *a2); int __cdecl sub_60B330(int a1); signed int __cdecl sub_60B740(signed int a1); // int __usercall sub_60B7C0(int a1, double a2); // int __usercall sub_60B820(int a1, int a2); // int __usercall sub_60B960(int a1, int a2, int a3); signed int __cdecl sub_60BA80(int a1, int a2, int a3); int __cdecl sub_60BB40(int a1, int a2); int __cdecl sub_60BBC0(int a1, int a2); // int __usercall sub_60BC30(int a1, int a2, int a3); // int __usercall sub_60BD00(int a1, int a2, int a3); // int __usercall sub_60BD50(int a1, int a2, int a3); int __cdecl sub_60BE10(int a1); int __cdecl sub_60BE50(int a1, int a2); int __cdecl sub_60BEB0(int a1, signed int a2); int __cdecl sub_60BF30(int a1, int a2); int __cdecl sub_60BF70(int a1, int a2); int __cdecl sub_60C070(int a1, int a2, int a3); // int __usercall sub_60C0A0(int a1, int a2); unsigned int __cdecl sub_60C1F0(int a1); _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); // weak int __cdecl sub_60C3C0(int a1, int a2, int a3); // int __usercall sub_60C410(int a1, int a2, int a3); _DWORD __cdecl sub_60C560(_DWORD, _DWORD, _DWORD); // weak int __cdecl sub_60C6F0(int a1, int a2, signed int a3, int a4); int __cdecl sub_60C740(int a1); signed int __cdecl sub_60C7F0(int a1); signed int __cdecl sub_60C890(int a1); signed int __cdecl sub_60C9F0(int a1); int __cdecl sub_60CA70(int a1); // void __usercall sub_60CB20(char a1, int a2, signed int a3, signed int a4); int __cdecl sub_60CF30(int a1); signed int __cdecl sub_60CF90(signed int a1); int __cdecl sub_60CFC0(int a1); int __cdecl sub_60D010(int a1, char a2, int a3); int __cdecl sub_60D040(int a1, int a2, int a3); // void __usercall sub_60D0E0(int a1); // int __usercall sub_60D100(int a1); // size_t __usercall sub_60D180(int a1, int a2); // int __usercall sub_60D210(int a1, int a2); // int __usercall sub_60D510(int a1, int a2); _DWORD __cdecl sub_60D7B0(_DWORD, _DWORD); // weak int __cdecl sub_60D8C0(int a1); char __thiscall sub_60D900(int this); int __cdecl sub_60DA00(int a1, int a2, int a3, int a4); int __cdecl sub_60DAD0(int a1, int a2); signed int __cdecl sub_60DB30(int a1, int a2); // int __usercall sub_60DBB0(int a1, int a2, int a3, int a4, int a5, int a6); _DWORD __cdecl sub_60DC80(_DWORD, _DWORD, _DWORD, _DWORD); // weak int __cdecl sub_60DDE0(int a1, int a2, int a3, int a4); // int __usercall sub_60DFB0(int a1, int a2, int a3, int a4); // signed int __usercall sub_60E080(int a1, int a2, int a3, int a4); // int __usercall sub_60E100(int a1, int a2); signed int __cdecl sub_60E220(int a1, int a2, int a3); signed int __cdecl sub_60E2F0(int a1, int a2, int *a3); int __cdecl sub_60E7B0(int a1, int a2, int a3); int __thiscall sub_60E9B0(int this, int a2, int a3); // int __usercall sub_60EA20(int a1, int a2, int a3, int a4, int a5); int __cdecl sub_60EAC0(int a1); int __cdecl sub_60EC60(int a1); signed int __cdecl sub_60FE90(int a1); int __cdecl sub_60FED0(int a1, int a2, int a3, int a4); size_t __cdecl sub_60FF00(int a1, void *a2, size_t a3); int __cdecl sub_60FF90(int a1, int a2, unsigned int a3); char __thiscall sub_60FFE0(int this, const char *a2, __int16 a3, int a4, int a5, int a6, int a7); int __thiscall sub_610190(int this); int __thiscall sub_610220(int this); void __thiscall sub_610240(int this); int __thiscall sub_610270(void *this, int a2, int a3, int a4); int __thiscall sub_6102F0(int this, signed __int64 a2, signed __int64 a3); int __thiscall sub_6104F0(int this); int __thiscall sub_610840(int this, int a2); signed int __thiscall sub_610850(int this, __int16 a2); signed int __thiscall sub_610890(int this, const char *a2); signed int __thiscall sub_6108D0(int this, const char *a2); signed int __thiscall sub_610910(int this, int a2, int a3); int __thiscall sub_610970(int this); void *__thiscall sub_610AC0(void *this, char a2); signed int __thiscall sub_610AF0(int this, int a2); signed int __thiscall sub_610DA0(int this, char Buffer); signed int __thiscall sub_610E60(int this); signed int __cdecl sub_611040(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); signed int __cdecl sub_611160(int a1, int a2, int a3, int a4); signed int __cdecl sub_611240(int a1, int a2, int a3, int 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); signed int __cdecl sub_611390(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15); int __thiscall sub_6114D0(int this); void __thiscall sub_6114F0(int this); char __thiscall sub_611520(int this, int a2); char __thiscall sub_611540(int this, unsigned int a2); char __thiscall sub_6115A0(int this, unsigned int a2); char __thiscall sub_611600(int this, int a2); int __thiscall sub_6116B0(int this, int a2); char __thiscall sub_611710(int this); int __thiscall sub_611720(int this, signed int a2); char __thiscall sub_611750(int this, int a2, int a3); char __thiscall sub_6117A0(int this, int a2, __int16 a3); char __thiscall sub_6117F0(int this, int a2, int a3); bool __thiscall sub_611850(int this); char __thiscall sub_611860(int this, int a2); bool __thiscall sub_6118E0(int this, unsigned __int8 a2); bool __thiscall sub_611910(int this, unsigned __int8 a2); signed int __stdcall sub_611930(int a1, int a2); signed int __stdcall sub_611940(int a1, int a2, int a3); signed int __stdcall sub_611950(int a1); char __stdcall sub_611960(int a1); int __thiscall sub_6119C0(int this, int a2, int a3); char __thiscall sub_611A30(int this, int a2); int __stdcall sub_611CA0(int a1, int a2, int a3, int a4); char __thiscall sub_611DF0(int this, int a2); void *__thiscall sub_611EC0(void *this, int a2); int __thiscall sub_611F30(int this, int a2); int __thiscall sub_611F40(int this, int a2); int __thiscall sub_611F70(int this, int a2, unsigned __int16 a3); int __thiscall sub_611FC0(int this, int a2, int a3); void __thiscall sub_612060(int this); char __thiscall sub_612070(int this, int a2, int a3); int __thiscall sub_612360(int this, __int16 a2); int __thiscall sub_6123C0(int this, int a2); void __thiscall sub_612400(int this); void __thiscall sub_612440(int this); char __thiscall sub_612530(void *this); bool __thiscall sub_612820(int this); void __thiscall sub_612840(void *this, int a2); bool __thiscall sub_612990(int this, int a2); bool __thiscall sub_6129A0(int this, int a2); bool __thiscall sub_6129C0(int this, int a2); char __thiscall sub_6129E0(int this, int a2); char __thiscall sub_612A00(void *this); int __thiscall sub_612A70(int this, char a2); int __thiscall sub_612B20(void *this, int a2, int a3, int a4); int __thiscall sub_612E50(void *this, int a2, int a3, __int16 a4); int __thiscall sub_613290(void *this, int a2, int a3, __int16 a4); int __thiscall sub_6135F0(void *this, int a2, int a3, int a4); int __thiscall sub_6138F0(void *this, int a2, int a3, int a4); int __thiscall sub_613B30(void *this); int __thiscall sub_613C50(void *this); int __thiscall sub_613D80(void *this); int __thiscall sub_613E80(void *this); void __thiscall sub_614000(void *this, int a2, int a3); int __stdcall sub_614270(int a1, int a2); int __stdcall sub_614350(int a1, int a2); int __stdcall sub_614420(int a1, int a2); int __stdcall sub_614510(int a1, int a2); int __stdcall sub_614660(int a1, int a2); int __stdcall sub_6147B0(int a1, int a2); int __stdcall sub_614970(int a1, int a2); int __thiscall sub_614B70(int this); void __thiscall sub_614BE0(int this); char __thiscall sub_614BF0(int this, unsigned __int8 a2); bool __thiscall sub_614C30(int this, unsigned __int8 a2); int __thiscall sub_614C50(int this); signed int __stdcall sub_614C60(int a1); signed int __stdcall sub_614C70(int a1); signed int __stdcall sub_614C80(int a1); signed int __stdcall sub_614C90(int a1, int a2); signed int __stdcall sub_614CA0(int a1, int a2); signed int __stdcall sub_614CB0(int a1, int a2); signed int __cdecl sub_614CC0(); signed int __stdcall sub_614CD0(int a1); bool __cdecl sub_614CE0(int a1, int a2); int __thiscall sub_614D00(int this); signed int __thiscall sub_614EF0(void *this, int a2); signed int __thiscall sub_615110(void *this, int a2); signed int __thiscall sub_6153B0(void *this, int a2); signed int __thiscall sub_6155A0(void *this, int a2); signed int __thiscall sub_615760(void *this, int a2, char a3); signed int __thiscall sub_6158D0(void *this, int a2, int a3); signed int __thiscall sub_615BA0(void *this, int a2, int a3); signed int __thiscall sub_615D20(void *this, int a2, int a3); signed int __thiscall sub_615F70(void *this, int a2, int a3); signed int __thiscall sub_6160F0(void *this, int a2, signed int a3); char __stdcall sub_6163E0(int a1, int a2, int a3); char __stdcall sub_6164E0(int a1, int a2, int a3); char __thiscall sub_6165F0(void *this); char __thiscall sub_616690(void *this); char __thiscall sub_616700(void *this); signed int __thiscall sub_6167F0(void *this); signed int __thiscall sub_6168F0(void *this); signed int __thiscall sub_616AE0(void *this); signed int __thiscall sub_616CA0(void *this, int a2); signed int __thiscall sub_616E70(void *this); signed int __thiscall sub_6172E0(void *this, int a2); signed int __thiscall sub_617700(void *this); signed int __thiscall sub_617860(void *this, int a2); signed int __thiscall sub_617A70(void *this); char __thiscall sub_617B40(void *this); int __thiscall sub_617CF0(void *this, int a2); char __thiscall sub_617DE0(void *this); char __thiscall sub_617FB0(void *this); char __thiscall sub_6180F0(void *this, int a2); char __thiscall sub_6181D0(void *this, int a2, unsigned __int16 a3); int __thiscall sub_618350(void *this, signed int a2); int __thiscall sub_618460(void *this, int a2); int __thiscall sub_618570(void *this, __int16 a2); int __thiscall sub_618690(void *this, int a2); int __thiscall sub_6187A0(void *this, signed int a2); int __thiscall sub_6188C0(void *this, int a2); int __thiscall sub_6189E0(void *this, __int16 a2); int __thiscall sub_618B10(void *this, int a2); char __thiscall sub_618C30(void *this, int a2, int a3); char __thiscall sub_618D40(void *this, int a2, char a3); signed int __thiscall sub_618E50(void *this, int a2); signed int __thiscall sub_6191E0(void *this, int a2, int a3); signed int __thiscall sub_619520(void *this, int a2, int a3); int __thiscall sub_6197E0(void *this, int a2, int a3, int a4); int __thiscall sub_619A60(void *this, int a2, int a3, int a4); int __thiscall sub_619C90(void *this, int a2, int a3, int a4); int __thiscall sub_619E10(void *this, int a2, int a3, int a4); int __thiscall sub_619F90(void *this, int a2, int a3, int a4); int __thiscall sub_61A1F0(void *this, int a2, int a3, int a4); int __stdcall sub_61A450(int a1, int a2); int __stdcall sub_61A590(int a1, int a2); int loc_61A760(); // weak int __thiscall sub_61A780(int this); void __thiscall sub_61A7A0(int this); int __thiscall sub_61A7B0(int this); void __thiscall sub_61A820(int this); char __thiscall sub_61A890(int this, int a2); char *__cdecl sub_61A900(); char *__thiscall sub_61A910(void *this); int __cdecl sub_61A920(int a1); int __cdecl sub_61A940(int a1); void *__thiscall sub_61A960(void *this); void *__thiscall sub_61A9C0(void *this, const char *a2); void *__thiscall sub_61AAC0(void *this, const char *a2); void *__thiscall sub_61AB60(void *this, char a2); void *__thiscall sub_61AB90(void *this, char a2); void *__thiscall sub_61ABC0(void *this, char a2); void *__thiscall sub_61ABF0(void *this, char a2); void *__thiscall sub_61AC20(void *this, char a2); void *__thiscall sub_61AC50(void *this, char a2); void *__thiscall sub_61AC80(void *this, char a2); void *__thiscall sub_61ACB0(void *this, char a2); void *__thiscall sub_61ACE0(void *this); int __cdecl sub_61AD40(int a1, int a2, int a3, int a4); int __cdecl sub_61ADE0(int a1, int a2, int a3); int __thiscall sub_61AE30(void *this, int a2, int a3, int a4); int __thiscall sub_61B090(void *this, int a2, int a3, int a4); int __thiscall sub_61B2A0(void *this, int a2, int a3, int a4); int __thiscall sub_61B3B0(void *this, int a2, int a3, int a4); int __thiscall sub_61B520(void *this, int a2, int a3, int a4); int __thiscall sub_61B690(void *this, int a2, int a3, int a4); int __thiscall sub_61B7C0(void *this, int a2, int a3, int a4); int __thiscall sub_61B8F0(void *this, int a2); char __thiscall sub_61B9E0(void *this, int a2, int a3); char __thiscall sub_61BAD0(void *this, int a2); char __thiscall sub_61BBF0(void *this, int a2); int __thiscall sub_61BD20(void *this); int __thiscall sub_61BDD0(void *this, int a2); int __thiscall sub_61BEA0(void *this, int a2); signed int __thiscall sub_61BF60(void *this, int a2, int a3); signed __int16 __thiscall sub_61C100(void *this, int a2, int a3, int a4); signed int __thiscall sub_61C2E0(void *this, int a2); signed int __thiscall sub_61C350(void *this, int a2, int a3); int __thiscall sub_61C430(void *this); signed int __thiscall sub_61C4E0(void *this, const char *a2); __int16 __thiscall sub_61C660(void *this, int a2); int __thiscall sub_61C790(void *this, int a2); int __thiscall sub_61C8A0(void *this, int a2); int __thiscall sub_61C9A0(void *this, int a2, unsigned int a3); int __thiscall sub_61CAE0(void *this, unsigned int a2, int a3); int __thiscall sub_61CBE0(void *this, unsigned int a2, int a3); int __thiscall sub_61CC70(void *this, unsigned int a2); int __stdcall sub_61CD50(int a1, int a2); int __thiscall sub_61CE30(void *this, int a2, int a3); // int __userpurge sub_61CF80(int a1, int a2, int a3, int a4, int a5); int __stdcall sub_61D150(unsigned int a1); int __stdcall sub_61D1B0(unsigned int a1); int __thiscall sub_61D210(int this, int a2); int __thiscall sub_61D270(int this, int a2); int __thiscall sub_61D2D0(int this, int a2); int __thiscall sub_61D340(int this, int a2, int a3); int __cdecl sub_61D3B0(int a1, int a2, int a3); char __thiscall sub_61D400(int this, unsigned int a2); int __cdecl sub_61D460(int a1, int a2, int a3, int a4); bool __thiscall sub_61D520(int this, int a2); signed int __thiscall sub_61D5A0(void *this, int a2); char __thiscall sub_61D720(void *this, int a2); int __thiscall sub_61D800(void *this); int __thiscall sub_61D910(void *this, int a2); void __stdcall sub_61D9C0(void *a1); int __thiscall sub_61DA00(void *this, int a2, int a3); int __thiscall sub_61DC50(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_61DE80(void *this, int a2); int __cdecl sub_61DEF0(int a1, int a2); int __cdecl sub_61E020(int a1, int a2); int __cdecl sub_61E110(int a1, int a2, int a3); int __thiscall sub_61E250(int this); size_t __thiscall sub_61E2A0(int this, size_t a2); int __thiscall sub_61E310(int this, int a2, int a3, int a4); int __thiscall sub_61E3B0(int this, int a2, void *a3, int a4); int __cdecl sub_61E490(int a1, int a2, int a3); int __cdecl sub_61E4C0(int a1, int a2, int a3); int __cdecl sub_61E4F0(int a1, int a2, int a3); int __cdecl sub_61E540(int a1, int a2, int a3); int __cdecl sub_61E5E0(int a1, int a2, int a3); int __thiscall sub_61E630(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_61E7F0(void *this, int a2); unsigned __int16 *__thiscall sub_61E9C0(void *this, int a2); unsigned int __thiscall sub_61EB00(void *this, unsigned int a2, unsigned int a3); void __cdecl sub_61EC50(int a1, int a2); int __cdecl sub_61ECA0(int a1, int a2, unsigned int a3); void *__cdecl sub_61F100(const void *a1, const void *a2, void *a3); int __cdecl sub_61F140(int a1, int a2); int __stdcall sub_61F220(int a1, int a2, int a3, int a4, int a5); int __thiscall sub_61F310(void *this, int a2, unsigned int a3, unsigned __int16 a4, int a5, int a6); int __stdcall sub_61F720(int a1, int a2, int a3); void __thiscall sub_61F750(int this); int __thiscall sub_61F7B0(int this); unsigned int __thiscall sub_61F820(int this, unsigned int a2); // void __usercall sub_61F8D7(int a1); int __thiscall sub_61F8F0(int this, unsigned int a2); // void __usercall sub_61F9C7(int a1); int __thiscall sub_61F9E0(int this, unsigned int a2); // void __usercall sub_61FAB3(int a1); int __thiscall sub_61FAD0(int this, unsigned int a2); // void __usercall sub_61FBA9(int a1); _DWORD __cdecl sub_61FBC0(_DWORD, _DWORD, _DWORD); // weak int __thiscall sub_61FCE0(int this, int a2); int __thiscall sub_61FD60(int this, unsigned int a2); // void __usercall sub_61FE50(int a1); int __thiscall sub_61FE70(int this, unsigned int a2); // void __usercall sub_61FF60(int a1); int __thiscall sub_61FF80(int this, int a2); // void __usercall sub_620043(int a1); int __thiscall sub_6200F0(int this, unsigned int a2); int __thiscall sub_620180(int this, int a2); int __thiscall sub_620200(int this, int a2); int __thiscall sub_620350(int this); void __thiscall sub_6203F0(void *this); void __thiscall sub_6204A0(void *this); void __thiscall sub_620D60(void *this); unsigned int __thiscall sub_620E90(int this, unsigned int a2); int __thiscall sub_620F50(int this, unsigned int a2); int __thiscall sub_621010(void *this, int a2); int __thiscall sub_621200(void *this, int a2, int a3); void __thiscall sub_621310(void *this); int __thiscall sub_621AF0(void *this, unsigned int a2, int a3, int a4); int __thiscall sub_621C20(void *this, int a2); int __thiscall sub_621D70(void *this, int a2, int a3); // signed int __userpurge sub_621E30(int a1, int a2, int a3, int a4, int a5, int a6); int __stdcall sub_622820(int a1, int a2); int __cdecl sub_6228D0(int a1, int a2, int a3); int __cdecl sub_622980(int a1, unsigned int a2); int __thiscall sub_622A30(int this, int a2, int a3, int a4); int __thiscall sub_622A90(int this, unsigned int a2); // void __usercall sub_622B7B(int a1); int __thiscall sub_622BA0(int this, int a2); int __thiscall sub_622C20(int this, unsigned int a2); int __thiscall sub_622CD0(void *this); int __thiscall sub_622EA0(int this, int a2); int __thiscall sub_622F00(int this, int a2); int __thiscall sub_622F60(int this, int a2); int loc_622FA0(); // weak bool __thiscall sub_622FD0(void *this); FILE *__thiscall sub_623150(void *this); int __thiscall sub_6232B0(int this, int a2, char a3, int a4, void *a5); void __stdcall sub_623500(void *a1); int __thiscall sub_623560(void *this, int a2, int a3); int __thiscall sub_6237E0(int this, int a2, void *a3, int a4); int __thiscall sub_6238E0(int this, int a2, int a3, int a4); int __thiscall sub_6239A0(void *this, int a2); void __thiscall sub_623A80(int this); void __thiscall sub_623AE0(int this); int __thiscall sub_623BA0(int this); void *__thiscall sub_623D50(void *this); int __thiscall sub_623D80(void *this, int a2, int a3, __int16 a4); int __stdcall sub_623EA0(int a1, int a2); int __stdcall sub_624010(int a1, int a2); void *__thiscall sub_624180(void *this, char a2); signed int __stdcall sub_6241B0(int a1, int a2); char __stdcall sub_624200(int a1, int a2, int a3); int __stdcall sub_6243B0(int a1, int a2); int __stdcall sub_624500(int a1, int a2); int __stdcall sub_624620(int a1, int a2); int __stdcall sub_624790(unsigned int a1); int __thiscall sub_6247F0(int this, __int16 a2); int __thiscall sub_624870(int this, int a2, int a3); int __thiscall sub_6248F0(int this, const char *a2); int __thiscall sub_624990(int this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); int __thiscall sub_624A90(int this, int a2, int a3); int __thiscall sub_624B20(int this, __int16 a2, const char *a3); int __thiscall sub_624BD0(int this, const char *a2); int __thiscall sub_624C70(void *this, int a2); int __thiscall sub_625020(void *this, int a2, int a3, int a4); char __cdecl sub_625340(unsigned __int16 a1, int a2); int __thiscall sub_625640(void *this, int a2, int a3, int a4); int __cdecl sub_6257E0(int a1, int a2, int a3); int __cdecl sub_625820(int a1, int a2, int a3); char __thiscall sub_625850(void *this, int a2); int __thiscall sub_6259D0(void *this, int a2, int a3, int a4); // int __thiscall unknown_libname_3(_DWORD); weak int __thiscall sub_625C40(void *this, int a2); int __thiscall sub_625E00(int this, unsigned int a2); // void __usercall sub_625ED7(int a1); int __thiscall sub_625EF0(int this, int a2); void *__thiscall sub_625F70(void *this, int a2); int __thiscall sub_625FE0(int this, int a2); int __thiscall sub_626060(int this, int a2); void *__thiscall sub_626100(void *this); void *__thiscall sub_626170(void *this); void *__thiscall sub_6261E0(void *this, int a2); void *__thiscall sub_626250(void *this, int a2); void *__thiscall sub_6262B0(void *this, int a2); void *__thiscall sub_626320(void *this, int a2); int __thiscall sub_626390(void *this, int a2); int __thiscall sub_626520(void *this, int a2); int __thiscall sub_6266E0(void *this, __int16 a2, int a3, char a4, int a5); int __thiscall sub_626800(void *this, int a2); void __thiscall sub_626920(int this); // int __stdcall closesocket(SOCKET s); // int __stdcall shutdown(SOCKET s, int how); int __thiscall sub_626B20(int this); void __thiscall sub_626B50(int this); char __cdecl sub_626B80(int a1, int a2); int __thiscall sub_626BC0(int this, unsigned int a2); int loc_626BF0(); // weak void __thiscall sub_626C10(int this); signed int __thiscall sub_626C50(int this, int a2); void *__thiscall sub_626D00(void *this, char a2); int __thiscall sub_626D60(void *this); char __thiscall sub_626DE0(int this); void *__thiscall sub_626E30(void *this); signed int __cdecl sub_626E80(int a1, int a2); _DWORD __stdcall sub_626F40(char); // weak int __cdecl sub_6270E0(int a1); signed int __thiscall sub_627220(void *this, const char *a2); int __thiscall sub_627480(void *this, const char *a2, int a3, int a4); int __thiscall sub_6274C0(int this, size_t a2, char a3); int __cdecl sub_627580(int a1, int a2, int a3, int a4, __int16 a5, int a6); int __cdecl sub_6279E0(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl sub_628680(int, int, size_t, int); // idb int __thiscall sub_6288C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); int __thiscall sub_628B40(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __thiscall sub_628C90(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __thiscall sub_628DD0(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __thiscall sub_628F00(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __thiscall sub_629030(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __thiscall sub_629170(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __thiscall sub_6292B0(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); int __cdecl sub_6293F0(int a1, int a2, int a3, int a4, int a5, int a6); // int __userpurge sub_629F70(int a1, double a2, int a3, int a4, int a5, char a6, int a7, int a8, int a9, int a10); // int __userpurge sub_62A040(int a1, double a2, int a3, int a4, int a5, char a6, int a7, int a8, int a9, int a10); int __thiscall sub_62A110(int this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9); bool __thiscall sub_62A1E0(int this, float a2, float a3); bool __thiscall sub_62A240(int this, float a2, float a3); int __thiscall sub_62A310(int this); int __thiscall sub_62A340(int this, int a2); void __thiscall sub_62A3B0(int this); void __thiscall sub_62A3F0(int this); char __thiscall sub_62A430(void *this, const char *a2); void *__thiscall sub_62A6E0(void *this, char a2); int __thiscall sub_62A710(int this); char __stdcall sub_62A740(int a1); char __stdcall sub_62A860(int a1); char __thiscall sub_62A8A0(void *this, const char *a2); signed int __thiscall sub_62A9B0(int this, int a2); int __thiscall sub_62A9F0(int this, unsigned __int8 a2); int __thiscall sub_62AA20(int this, unsigned __int8 a2, char a3); int __thiscall sub_62AA90(int this, unsigned __int8 a2, char a3); int __thiscall sub_62AB00(int this, unsigned __int8 a2, char a3); int __thiscall sub_62AB70(int this, unsigned __int8 a2); int __thiscall sub_62ABB0(int this, unsigned __int8 a2); char *__thiscall sub_62ABF0(void *this, unsigned __int8 a2); unsigned int __thiscall sub_62AC10(void *this, unsigned __int8 a2, char a3); int __thiscall sub_62AC80(void *this, unsigned __int8 a2, char a3, int a4); signed int __thiscall sub_62ACB0(void *this, unsigned __int8 a2, char a3, int a4); signed int __thiscall sub_62ACE0(void *this, unsigned __int8 a2, char a3, int a4); signed int __thiscall sub_62AD10(int this, char a2, char a3); signed int __thiscall sub_62AD70(void *this, unsigned __int8 a2, char a3, __int16 a4, int a5); void *__thiscall sub_62AE00(int this); int __thiscall sub_62AE40(void *this); signed int __thiscall sub_62AED0(int this, char a2, char a3, char a4); int __thiscall sub_62AF70(int this, int a2); int __cdecl sub_62AFC0(int a1); void *__thiscall sub_62AFE0(void *this); int __thiscall sub_62B040(int this, int a2); int __thiscall sub_62B0D0(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_62B320(void *this, int a2, int a3); void __stdcall sub_62B5A0(void *a1); int __thiscall sub_62B600(int this, int a2, void *a3, int a4); // void __usercall sub_62B863(int a1); int __thiscall sub_62B8A0(int this, int a2, int a3, int a4); int __thiscall sub_62BA60(int this, int a2, int a3, int a4); int __thiscall sub_62BB20(int this, int a2); signed int __thiscall sub_62BC00(void *this, const char *a2, int a3, int a4); __int16 __thiscall sub_62BD30(int this, void *a2, int a3, int a4, int a5, int a6, unsigned int a7, int a8); void __thiscall sub_62BD90(int this); int __thiscall sub_62BDF0(int this); void __thiscall sub_62BE60(int this); void *__thiscall sub_62BEA0(int this, int a2); __time32_t __thiscall sub_62BF20(int this); signed int __thiscall sub_62BF40(int this, __int16 a2); int __thiscall sub_62BF80(int this, __int16 a2); int __thiscall sub_62BFD0(int this, int a2); signed int __thiscall sub_62BFF0(int this, const void *a2); signed int __thiscall sub_62C050(int this, const void *a2); int __stdcall sub_62C090(int a1); void __thiscall sub_62C0C0(int this, __int16 a2); int __thiscall sub_62C120(int this, __int16 a2); signed int __thiscall sub_62C220(int this, __int16 a2); signed int __thiscall sub_62C2C0(int this, __int16 a2, char a3); signed int __thiscall sub_62C320(int this, __int16 a2); int __thiscall sub_62C380(int this, int a2); signed int __thiscall sub_62C3F0(int this, __int16 a2); bool __thiscall sub_62C450(int this, int a2); bool __thiscall sub_62C530(void *this, int a2); bool __thiscall sub_62C600(void *this, int a2); bool __thiscall sub_62C6D0(void *this, int a2); signed int __thiscall sub_62C790(int this, int a2); bool __stdcall sub_62C820(int a1, int a2, int a3, int a4, unsigned int a5); int __thiscall sub_62C880(int this); signed int __stdcall sub_62C8C0(signed int a1, __int16 a2); signed int __stdcall sub_62C920(int a1, __int16 a2); signed __int16 __stdcall sub_62C960(int a1); signed __int16 __thiscall sub_62C9A0(int this, int a2); signed __int16 __thiscall sub_62C9B0(int this, char a2); signed int __thiscall sub_62C9F0(void *this, int a2); bool __thiscall sub_62CC10(void *this, int a2); bool __thiscall sub_62CC50(int this, char a2); signed int __thiscall sub_62CCB0(int this, int a2); signed int __thiscall sub_62CE40(int this, __int16 a2); char __thiscall sub_62CEA0(int this, char *a2); int __thiscall sub_62CF40(int this, int a2); int __thiscall sub_62D020(int this, __int16 a2); int __thiscall sub_62D090(int this, int a2); int __thiscall sub_62D210(int this, char a2); bool __thiscall sub_62D240(int this, char a2); char __thiscall sub_62D280(int this, int a2); int __thiscall sub_62D2E0(void *this, int a2, int a3, unsigned int a4, char a5, int a6); signed int __thiscall sub_62D440(int this, int a2, __int16 a3); signed int __thiscall sub_62D580(int this, int a2, int a3); signed int __thiscall sub_62D690(int this, int a2, int a3); int __thiscall sub_62D7D0(void *this); signed int __thiscall sub_62D910(int this, int a2); signed int __thiscall sub_62DA00(int this, int a2); signed int __thiscall sub_62DAE0(int this, int a2); signed int __thiscall sub_62DBC0(void *this); int __thiscall sub_62DCD0(void *this, __int16 *a2); int __thiscall sub_62DE90(void *this, int a2, int a3); int __stdcall sub_62DEE0(int a1, int a2); int __thiscall sub_62DEF0(int this); char __thiscall sub_62DF10(void *this, char *a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10); signed int __thiscall sub_62E0C0(void *this, int a2); char *__thiscall sub_62E140(void *this, unsigned int a2); bool __thiscall sub_62E160(void *this); char *__thiscall sub_62E170(void *this); char *__thiscall sub_62E1A0(void *this, unsigned int a2); int __thiscall sub_62E1C0(int this); void *__thiscall sub_62EBC0(void *this); void __thiscall sub_62ED70(void *this); int __thiscall sub_62ED80(void *this, int a2, int a3); int __thiscall sub_62EDD0(void *this, int a2); int __thiscall sub_62EE00(void *this, int a2, int a3); int __thiscall sub_62EE50(void *this, int a2); signed int __thiscall sub_62EE80(void *this, int a2, int a3, __int16 a4, __int16 a5); signed int __thiscall sub_62EEF0(void *this, int a2, int a3); signed int __thiscall sub_62EF50(void *this, int a2, int a3); int __thiscall sub_62EFA0(void *this, int a2); void *__thiscall sub_62EFC0(void *this, char a2); int __thiscall sub_62EFF0(void *this, int a2, int a3, __int16 a4, __int16 a5, int a6); int __thiscall sub_62F110(int this); void __thiscall sub_62F120(int this); signed int __thiscall sub_62F130(int this, int a2); int __thiscall sub_62F180(int this, int a2); int __thiscall sub_62F1C0(int this, int a2, int a3, int a4); signed int __thiscall sub_62F270(int this); void __thiscall sub_62F390(int this, int a2, int a3); int __thiscall sub_62F410(int this); signed int __thiscall sub_62F510(int this, int a2, int a3, __int16 a4); signed int __thiscall sub_62F580(int this); signed int __thiscall sub_62F910(int this); char __thiscall sub_6302B0(int this); int __thiscall sub_6303A0(int this); char __thiscall sub_6303C0(void *this, int a2); char __stdcall sub_6305A0(int a1, int a2); char __stdcall sub_630610(unsigned __int64 a1); char __thiscall sub_630690(void *this, unsigned int a2, int a3); void *__thiscall sub_630D70(void *this); char __thiscall sub_630EE0(void *this); char __thiscall sub_630F00(void *this, signed int a2, __int16 a3); bool __thiscall sub_630F40(void *this, signed int a2, int a3, unsigned int a4); int __thiscall sub_630FA0(void *this, signed int a2, int a3, unsigned int a4); __int16 __thiscall sub_631040(void *this, signed int a2, int a3); int __thiscall sub_6310A0(void *this, int a2); int __cdecl sub_6312F0(int a1); int __cdecl sub_631310(int a1); int __thiscall sub_631330(int this, int a2); int __thiscall sub_631390(int this, int a2); int loc_631420(); // weak void __cdecl sub_631470(int a1, int a2); int __thiscall sub_6314C0(int this, int a2, char a3, int a4, void *a5); void __stdcall sub_631720(void *a1); int __thiscall sub_6317A0(void *this, int a2, void *a3); int __thiscall sub_631A40(int this, int a2, void *a3, int a4); int __thiscall sub_631BF0(int this, int a2, int a3, int a4); int __thiscall sub_631DB0(int this, int a2, void *a3, void *a4); void __thiscall sub_631E70(int this); void __thiscall sub_631ED0(int this); int __thiscall sub_631F70(void *this, char *a2); // void __usercall sub_63212E(int a1); int __thiscall sub_632170(int this); signed int __thiscall sub_632220(int this, char *a2, int a3, int a4); int __thiscall sub_6324B0(int this, int a2); int __thiscall sub_6325F0(int this, int a2); int __thiscall sub_632670(int this); int __thiscall sub_632690(int this, const char *a2, int a3, int a4); signed int __thiscall sub_632790(int this, unsigned __int16 a2, unsigned int a3); int __thiscall sub_6327E0(int this, unsigned __int16 a2, unsigned int a3, int a4); char __cdecl sub_632850(unsigned __int8 *a1, const unsigned __int8 *a2); int __thiscall sub_6328A0(int this, unsigned int a2); int __cdecl sub_6328D0(int a1, int a2, int a3); int __thiscall sub_632900(int this, int a2, int a3, int a4, int a5, unsigned int a6); void __cdecl sub_632980(int a1, int a2, int a3); int __thiscall sub_632A60(void *this, int a2, int a3); int __thiscall sub_632B30(int this, int a2, unsigned int a3, int a4); int __thiscall sub_632D90(int this, char a2); signed __int16 __thiscall sub_632DD0(int this, int a2); int __thiscall sub_632E20(int this, int a2); int __thiscall sub_632E70(int this, int a2); int __thiscall sub_632EC0(int this, int a2); void __thiscall sub_632F10(int this); int __thiscall sub_632F70(_DWORD); // weak void __thiscall sub_632F80(int this); void __thiscall sub_633030(int this); int __thiscall sub_6330E0(int this); int __thiscall sub_633170(int this, int a2, int a3); int __thiscall sub_633260(void *this, int a2, unsigned __int16 *a3, int *a4); int __thiscall sub_6333B0(int this, int a2); int __thiscall sub_633400(void *this, int a2, int a3, int a4); int __thiscall sub_633500(int this, int a2); int __thiscall sub_633550(int this); void *__thiscall sub_633640(void *this, int a2); void __thiscall sub_6336D0(int this); FILE *__thiscall sub_633930(int this, const char *a2); FILE *__thiscall sub_633AC0(int this, const char *a2); FILE *__thiscall sub_633CD0(int this, const char *a2, int a3); void *__thiscall sub_633D00(void *this); signed int __stdcall sub_633D90(unsigned int *a1); signed int __thiscall sub_633DD0(int this, const unsigned __int8 *a2); signed int __thiscall sub_633E30(void *this); signed int __thiscall sub_633E40(int this, int a2, int a3, int a4, int a5); // int __thiscall std::basic_filebuf>::_Reset_back(_DWORD); weak int __thiscall sub_633EF0(int this, int a2); int __cdecl sub_633F30(int a1); void *__thiscall sub_633F50(void *this); int __thiscall sub_633FA0(void *this); signed int __thiscall sub_634000(int this, const unsigned __int8 *a2, int a3); int __thiscall sub_634090(int this, int a2, int a3); signed int __stdcall sub_634130(int a1, int a2, int a3, int a4, int a5, int a6, int a7); signed int __stdcall sub_634150(int a1, int a2, int a3, int a4); unsigned int __stdcall sub_634170(int a1, int a2, int a3, unsigned int a4); bool __cdecl sub_634190(char a1, FILE *a2); signed int __thiscall sub_6341D0(void *this); // int __thiscall std::basic_filebuf>::_Set_back(_DWORD); weak signed int __thiscall sub_634240(int this, int a2); int __thiscall sub_6342D0(int this); int __thiscall sub_634320(int this, char *a2, __int64 a3); signed int __cdecl sub_634380(int a1, int a2); int __cdecl sub_634430(int a1); int __thiscall sub_634570(void *this, int a2); int __thiscall sub_6345B0(int this, const char *a2, int a3, int a4); int __cdecl sub_634690(int a1, int a2, char a3); // int (*__usercall sub_634807(int a1))(); int loc_634838(); // weak int __cdecl sub_634850(int a1, int a2); // int (*__usercall sub_634A34(int a1))(); int loc_634A65(); // weak _DWORD __stdcall sub_634A80(_DWORD); // weak int __thiscall sub_634C50(int this); char __thiscall sub_634E40(void *this); char __cdecl sub_634F80(int a1, int a2); signed int __thiscall sub_635000(int this, signed int a2); int __thiscall sub_6351F0(int this, unsigned int a2, fpos_t a3, int Origin, int a5); int __thiscall sub_6352E0(void *this, unsigned int a2, __int64 Offset, fpos_t a4, int a5, int a6, int a7); int __thiscall sub_6353C0(int this); int __cdecl sub_635450(int a1, int a2, int a3); int __thiscall sub_635490(int this); signed int __thiscall sub_636030(int this, unsigned int a2); int __thiscall sub_636250(int this, char a2); signed int __thiscall sub_6362F0(int this, __int16 a2, const char *a3); void *__thiscall sub_6363C0(void *this, int a2); int __thiscall sub_6364F0(void *this); void *__thiscall sub_6365C0(void *this, char a2); int __thiscall sub_636600(void *this, void *a2); char __cdecl sub_6366E0(const char *a1); void *__thiscall sub_636E70(void *this, char a2); int __thiscall sub_636EA0(void *this, int a2); void *__thiscall sub_637580(int this, const void *a2, unsigned int a3); int __thiscall sub_637630(void *this, int a2); int __cdecl sub_6377E0(int a1, const void *a2, unsigned int a3); int __thiscall sub_637890(int this); signed int __thiscall sub_637900(int this); int __thiscall sub_637960(void *this, int a2); const unsigned __int8 *__thiscall sub_637980(int this, int a2, const unsigned __int8 *a3); const unsigned __int8 *__thiscall sub_637A00(int this); signed int __thiscall sub_637A80(int this); signed int __thiscall sub_637B40(int this); int __thiscall sub_637B90(int this); int __thiscall sub_637BE0(int this); signed int __thiscall sub_637BF0(int this, int a2); signed int __stdcall sub_637C60(const unsigned __int8 *a1, int a2, unsigned int a3); int __thiscall sub_637CA0(int this, int a2, int a3, unsigned int a4); int __thiscall sub_637D00(int this); signed int __thiscall sub_637D90(int this, LPCSTR lpFileName); signed int __thiscall sub_637EA0(int this, const char *a2); int __thiscall sub_637F60(int this, int a2); void *__thiscall sub_638050(int this); DWORD __thiscall sub_6380D0(int this, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); unsigned int __thiscall sub_638150(int this, int a2, unsigned int a3); BOOL __thiscall sub_638190(int this, LPCVOID NumberOfBytesWritten); int __thiscall sub_638250(int this, int a2); BOOL __thiscall sub_6382B0(int this, int a2, unsigned int a3); signed int __thiscall sub_638350(int this, const unsigned __int8 *a2); int __thiscall sub_6383B0(int this, int a2); int __thiscall sub_638430(int this, const unsigned __int8 *a2); BOOL __thiscall sub_638460(int this, HANDLE hObject); BOOL __thiscall sub_6384A0(int this, HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); void *__thiscall sub_638530(int this, HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); DWORD __thiscall sub_638620(int this, HANDLE hFile, LPDWORD lpFileSizeHigh); DWORD __thiscall sub_638660(int this, HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); int __thiscall sub_638730(int this, FILE *a2); int __thiscall sub_638780(int this); int __thiscall sub_6387A0(int this); int __thiscall sub_6387E0(int this, unsigned int a2); signed int __thiscall sub_638BD0(int this); signed int __thiscall sub_638C80(int this, unsigned int a2); signed int __thiscall sub_638D40(void *this, const unsigned __int8 *a2); int __thiscall sub_638D70(_DWORD); // weak int __thiscall sub_638D80(int this); signed int __thiscall sub_638DC0(int this, LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD a6, DWORD a7, HANDLE hTemplateFile); int __thiscall sub_639030(void *this); FILE *__thiscall sub_6390B0(void *this, int a2, int a3); FILE *__thiscall sub_639100(void *this, int a2, int a3); FILE *__thiscall sub_639150(void *this, int a2, int a3, int a4); signed int __cdecl sub_639280(int a1); double __cdecl sub_6392B0(); int __thiscall sub_639380(int this); int __thiscall sub_6393C0(int this, int a2); double __thiscall sub_6393F0(int this); unsigned int __thiscall sub_6394A0(int this, unsigned int a2, unsigned int a3); unsigned int __thiscall sub_639500(int this, unsigned int a2); int __thiscall sub_639540(int this); void __thiscall sub_639560(void *this); signed int __thiscall sub_639590(void *this, unsigned __int8 *a2, int a3); signed int __thiscall sub_639620(void *this, unsigned __int8 *a2); signed int __thiscall sub_639660(void *this, unsigned __int8 *a2, int a3); signed int __thiscall sub_639670(void *this, int a2); __int16 __thiscall sub_6396B0(void *this, signed int a2); unsigned int __thiscall sub_6396E0(void *this, unsigned int a2, unsigned int a3); int __thiscall sub_6396F0(int this); signed int __thiscall sub_639710(void *this, signed int a2); void *__thiscall sub_6397A0(void *this); int __thiscall sub_639920(int this); void __thiscall sub_639940(int this); void *__thiscall sub_639950(void *this, char a2); void __thiscall sub_639980(void *); // idb char __thiscall sub_639990(void *this, int a2, int a3); char __stdcall sub_6399D0(int a1, int a2); char __thiscall sub_639A40(int this); int __thiscall sub_639A50(void *this); char *__thiscall sub_639A60(void *this); int __thiscall sub_639A70(int this); bool __thiscall sub_639A90(int this, int a2); signed __int16 __thiscall sub_639AC0(int this); unsigned int __thiscall sub_639AE0(void *this, unsigned __int16 a2); void *__thiscall sub_639B70(void *this); void *__thiscall sub_639BC0(void *this, char a2); int __thiscall sub_639BF0(void *this, int a2); int __thiscall sub_639C10(void *this, int a2); char __thiscall sub_639C30(int this, __int16 a2, unsigned __int16 *a3, int a4); char __thiscall sub_639D50(void *this, int a2, int a3); signed int __thiscall sub_639E00(void *this, unsigned __int8 a2, unsigned __int8 a3); int __thiscall sub_639E60(int this, char a2); char __thiscall sub_639E90(int this); char __thiscall sub_639EC0(int this, int a2); bool __thiscall sub_639F40(int this, int a2); int __thiscall sub_639F80(int this); int __thiscall sub_639FC0(int this); char __thiscall sub_63A010(int this, int a2); void *__thiscall sub_63A090(void *this, int a2); unsigned int __thiscall sub_63A0C0(void *this, unsigned __int16 a2); int __thiscall sub_63A0E0(void *this, __int16 a2, unsigned __int16 *a3, int a4); int __thiscall sub_63A150(void *this, __int16 a2, int a3); signed __int16 __thiscall sub_63A2A0(void *this, int a2); char __thiscall sub_63A360(void *this, int a2); int __thiscall sub_63A470(void *this, int a2, int a3); char __thiscall sub_63A510(void *this, int a2, int a3); char __thiscall sub_63A600(void *this, int a2, unsigned __int8 a3, unsigned __int8 a4, int a5); char __thiscall sub_63A7F0(void *this, int a2, int a3); char __thiscall sub_63A8C0(void *this, int a2, int a3, int a4); char __thiscall sub_63A970(void *this, int a2, int a3); char __thiscall sub_63AA20(void *this, int a2); char __thiscall sub_63AA80(void *this, int a2); bool __thiscall sub_63AB00(void *this, unsigned __int16 a2, int a3); int __thiscall sub_63AB40(int this); void __thiscall sub_63AB50(void *); // idb int __thiscall sub_63AB60(void *this, const char *a2); signed int __thiscall sub_63AC00(void *this, const char *a2, int a3, int a4); signed int __thiscall sub_63AC70(int this, int a2); void *__thiscall sub_63ACA0(void *this, unsigned __int16 a2); int __stdcall sub_63AD40(int a1, int a2, int a3, int a4); signed int __cdecl sub_63AD50(); signed int __stdcall sub_63AD60(int a1); int __stdcall sub_63AD70(int a1); char __stdcall sub_63AD80(int a1, char a2); int __stdcall sub_63AD90(int a1); __int16 __stdcall sub_63ADA0(int a1, __int16 a2); int __stdcall sub_63ADC0(int a1); int __stdcall sub_63ADD0(int a1); int __stdcall sub_63ADE0(int a1); int __stdcall sub_63ADF0(int a1); int __stdcall sub_63AE00(int a1); int __stdcall sub_63AE10(int a1); signed int __cdecl sub_63AE20(); int __stdcall sub_63AE30(int a1); signed int __cdecl sub_63AE40(); signed int __cdecl sub_63AE50(); int __stdcall sub_63AE60(int a1); signed int __cdecl sub_63AE70(); signed int __cdecl sub_63AE80(); signed int __cdecl sub_63AE90(); signed int __cdecl sub_63AEA0(); signed int __cdecl sub_63AEB0(); signed int __cdecl sub_63AEC0(); signed int __cdecl sub_63AED0(); int __stdcall sub_63AEE0(int a1); int __stdcall sub_63AEF0(int a1, int a2, const void *a3, int a4); int __stdcall sub_63AF90(int a1); int __stdcall sub_63AFA0(int a1, int a2); int __stdcall sub_63AFB0(int a1); int __stdcall sub_63AFC0(int a1); int __stdcall sub_63AFD0(int a1); char __stdcall sub_63AFE0(int a1); char __stdcall sub_63AFF0(int a1); char __stdcall sub_63B000(int a1, char a2); char __stdcall sub_63B010(int a1); char __stdcall sub_63B020(int a1, char a2); char __stdcall sub_63B030(int a1); char __stdcall sub_63B040(int a1, char a2); __int16 __stdcall sub_63B050(int a1, unsigned __int8 a2); char __thiscall sub_63B0A0(void *this, int a2, int a3, int a4, int a5); void __stdcall sub_63B0D0(int a1, unsigned __int8 a2, __int16 a3); int __stdcall sub_63B1C0(int a1); int __stdcall sub_63B210(int a1, int a2); char *__stdcall sub_63B230(int a1, void *a2); int __stdcall sub_63B250(int a1, int a2); int __stdcall sub_63B270(int a1, int a2); char *__stdcall sub_63B280(int a1, void *a2); char *__stdcall sub_63B2B0(int a1, void *a2); int __stdcall sub_63B2E0(int a1, int a2); int __stdcall sub_63B320(int a1, int a2); int __stdcall sub_63B340(int a1, int a2); int __stdcall sub_63B360(int a1, int a2); int __stdcall sub_63B390(int a1, int a2); int __stdcall sub_63B3C0(int a1, int a2); char *__stdcall sub_63B3E0(int a1, void *a2); int __stdcall sub_63B410(int a1, int a2); int __stdcall sub_63B420(int a1, int a2); char *__stdcall sub_63B440(int a1, const void *a2); int __stdcall sub_63B460(int a1, int a2); char *__stdcall sub_63B480(int a1, const void *a2); char *__stdcall sub_63B4B0(int a1, const void *a2); int __stdcall sub_63B4E0(int a1, int a2); int __stdcall sub_63B500(int a1, int a2); int __stdcall sub_63B540(int a1, int a2); int __stdcall sub_63B560(int a1, int a2); int __stdcall sub_63B590(int a1, int a2); int __stdcall sub_63B5C0(int a1, int a2); char *__stdcall sub_63B5E0(int a1, const void *a2); signed int __stdcall sub_63B610(int a1); signed int __stdcall sub_63B620(int a1); int __stdcall sub_63B630(int a1); signed int __stdcall sub_63B650(int a1); signed int __stdcall sub_63B660(int a1); signed int __stdcall sub_63B670(int a1); signed int __stdcall sub_63B680(int a1); signed int __stdcall sub_63B690(int a1); signed int __stdcall sub_63B6A0(int a1); char __stdcall sub_63B6B0(int a1, int a2); char __stdcall sub_63B730(int a1, int a2, int a3); char __thiscall sub_63B770(void *this, int a2, int a3, int a4); char __stdcall sub_63B810(int a1, signed int a2, int a3); char __stdcall sub_63B940(int a1, int a2, int a3); char __stdcall sub_63B9E0(int a1, int a2, int a3); int __stdcall sub_63BA80(int a1, int a2, int a3); int __stdcall sub_63BAD0(int a1, int a2, int a3); char __thiscall sub_63BAF0(void *this, int a2, int a3, int a4); char __stdcall sub_63BB70(int a1, int a2, int a3); char __stdcall sub_63BB90(int a1, int a2, int a3); int __stdcall sub_63BBE0(unsigned __int16 a1, int a2, int a3); signed int __stdcall sub_63BC30(int a1, int a2, int a3); __int16 __stdcall sub_63BCB0(__int16 a1, int a2, int a3); int __stdcall sub_63BCE0(int a1, int a2, int a3); char __stdcall sub_63BD00(int a1, int a2, int a3); int __stdcall sub_63BD40(int a1, int a2, int a3); int __stdcall sub_63BD60(int a1, int a2, int a3); int __stdcall sub_63BD80(int a1, int a2, int a3); char __stdcall sub_63BE00(int a1, int a2, int a3); int __stdcall sub_63BE40(int a1, int a2, int a3); char __thiscall sub_63BE70(void *this, int a2, int a3, int a4); int __stdcall sub_63BF10(int a1); int __stdcall sub_63BF20(int a1, int a2); __int16 __stdcall sub_63BF30(int a1); int __stdcall sub_63BF50(int a1, unsigned __int8 a2); int __stdcall sub_63BF80(int a1, int a2, int a3); int __stdcall sub_63BFA0(int a1, int a2, int a3); char __thiscall sub_63BFC0(void *this, int a2, int a3, int a4); int __thiscall sub_63C000(void *this, int a2, int a3, int a4); char __thiscall sub_63C0B0(void *this, int a2, int a3, int a4); int __stdcall sub_63C130(int a1, int a2, int a3); int __stdcall sub_63C150(int a1, int a2, int a3); char __thiscall sub_63C170(void *this, int a2, int a3, int a4); signed int __stdcall sub_63C1B0(__int16 a1, int a2, int a3, char a4, int a5, int a6); signed int __stdcall sub_63C1E0(__int16 a1, int a2, int a3, int a4, int a5, int a6); signed int __stdcall sub_63C290(__int16 a1, int a2, int a3, char a4, int a5, int a6); signed int __stdcall sub_63C2D0(__int16 a1, int a2, int a3, char a4, int a5, int a6); int __stdcall sub_63C300(int a1, int a2, int a3, int a4, int a5, int a6); char __stdcall sub_63C310(int a1, int a2, int a3, int a4); char __stdcall sub_63C320(int a1, int a2, int a3, int a4); char __stdcall sub_63C360(int a1, int a2, signed int a3, int a4); char __stdcall sub_63C3F0(int a1, int a2, signed int a3, int a4); char __stdcall sub_63C440(int a1, int a2, int a3, int a4); char __stdcall sub_63C480(int a1, int a2, int a3, unsigned __int16 a4); char __stdcall sub_63C4A0(int a1, int a2, int a3, int a4); signed int __stdcall sub_63C4E0(int a1, int a2, int a3); signed int __stdcall sub_63C4F0(int a1, __int16 a2, int a3); int __stdcall sub_63C5A0(int a1, int a2, int a3); unsigned int __stdcall sub_63C5B0(int a1, __int16 a2, int a3); _UNKNOWN *__stdcall sub_63C600(int a1); int __stdcall sub_63C610(int a1); char __stdcall sub_63C620(int a1, int a2, int a3); int __stdcall sub_63C640(int a1, int a2, int a3); int __stdcall sub_63C670(int a1); signed int __stdcall sub_63C680(int a1, int a2, int a3); signed int __stdcall sub_63C690(int a1, int a2, int a3); __int16 __stdcall sub_63C710(int a1, __int16 a2); signed int __thiscall sub_63C730(void *this, int a2, int a3); // signed int __userpurge sub_63C770(int a1, int a2, signed int a3, unsigned __int16 a4, unsigned __int16 a5, const void *a6); char __stdcall sub_63C910(int a1, char a2); int __stdcall sub_63C920(int a1); int __stdcall sub_63C930(int a1); int __stdcall sub_63C940(int a1); signed int __stdcall sub_63C950(int a1, int a2); signed int __stdcall sub_63C970(int a1, int a2); signed int __stdcall sub_63C990(int a1, int a2); int __thiscall sub_63C9B0(void *this, int a2, int a3); int __stdcall sub_63CA10(int a1, int a2); int __stdcall sub_63CA30(int a1); signed int __cdecl sub_63CA50(); int __stdcall sub_63CA60(int a1, char a2); char __stdcall sub_63CA80(int a1); int __stdcall sub_63CAA0(int a1, __int16 a2); __int16 __stdcall sub_63CAC0(int a1); int __stdcall sub_63CAE0(int a1, int a2, const void *a3, int a4); int __stdcall sub_63CB10(int a1, int a2, const void *a3, int a4); int __thiscall sub_63CB40(int this); int __stdcall sub_63CE80(int a1, int a2, const void *a3, int a4); void *__thiscall sub_63CEB0(void *this, char a2); unsigned int __stdcall sub_63CEE0(int a1, int a2); unsigned int __stdcall sub_63CF10(int a1, int a2); unsigned int __stdcall sub_63CF40(int a1, int a2); unsigned int __stdcall sub_63CF70(int a1, int a2); unsigned int __stdcall sub_63CFA0(int a1, int a2); unsigned int __stdcall sub_63CFD0(int a1, int a2); unsigned int __stdcall sub_63D000(int a1); unsigned int __stdcall sub_63D020(int a1); unsigned int __stdcall sub_63D040(int a1); signed int __stdcall sub_63D060(int a1, int a2, int a3); int __thiscall sub_63D090(void *this, int a2, __int16 a3, int a4); int __thiscall sub_63D0C0(void *this, int a2, int a3, int a4); int __thiscall sub_63D0E0(void *this, __int16 a2, char a3, char a4, char a5); int __thiscall sub_63D1A0(int this, int a2, __int16 a3, int a4); int __thiscall sub_63D1E0(int this, int a2, int a3, int a4); signed __int64 __stdcall sub_63D220(char a1); void *__thiscall sub_63D240(void *this, const char *a2); void *__thiscall sub_63D2F0(void *this, char a2); int __thiscall sub_63D320(int this); void *__thiscall sub_63D360(void *this, const char *a2); signed __int64 __thiscall sub_63D370(int this, int a2); char __stdcall sub_63D560(__int64 a1); int __thiscall sub_63D5F0(int this, char a2); char __thiscall sub_63D810(int this, int a2, char a3); signed int __thiscall sub_63D850(int this, char a2); signed int __thiscall sub_63D920(int this, unsigned __int16 a2, unsigned __int16 a3); bool __thiscall sub_63D9F0(int this, unsigned __int16 a2, unsigned __int16 a3, unsigned __int8 a4); signed int __thiscall sub_63DA90(int this, unsigned __int16 a2); int loc_63DAD0(); // weak void *__thiscall sub_63DAE0(void *this, const char *a2); int loc_63DB90(); // weak void *__thiscall sub_63DBA0(void *this, const char *a2); int loc_63DC50(); // weak void *__thiscall sub_63DC60(void *this, const char *a2); int loc_63DD10(); // weak void *__thiscall sub_63DD20(void *this, const char *a2); int loc_63DDD0(); // weak void *__thiscall sub_63DDE0(void *this, const char *a2); int loc_63DE90(); // weak void *__thiscall sub_63DEA0(void *this, const char *a2); int loc_63DF40(); // weak void *__thiscall sub_63DF50(void *this, const char *a2); int loc_63DFF0(); // weak void *__thiscall sub_63E000(void *this, const char *a2); int loc_63E0A0(); // weak int loc_63E0B0(); // weak void *__thiscall sub_63E0C0(void *this, const char *a2); void *__thiscall sub_63E160(void *this, const char *a2); void *__thiscall sub_63E200(void *this, char a2); void *__thiscall sub_63E230(void *this, char a2); void *__thiscall sub_63E260(void *this, char a2); void *__thiscall sub_63E290(void *this, char a2); void *__thiscall sub_63E2C0(void *this, char a2); void *__thiscall sub_63E2F0(void *this, char a2); void *__thiscall sub_63E320(void *this, char a2); void *__thiscall sub_63E350(void *this, char a2); void *__thiscall sub_63E380(void *this, char a2); void *__thiscall sub_63E3B0(void *this, char a2); void *__thiscall sub_63E3E0(void *this, char a2); int __thiscall sub_63E410(int this); void __thiscall sub_63E630(void *this); __int16 __thiscall sub_63E760(void *this); bool __thiscall sub_63EDC0(int this, unsigned __int16 a2, int a3); int __thiscall sub_63EEB0(int this, int a2, unsigned int a3); int __thiscall sub_63EEF0(int this, int a2, unsigned int a3); unsigned int __thiscall sub_63EF30(void *this, void *a2, void *a3); void __thiscall sub_63F550(int this); int __thiscall sub_63F5F0(int this, int a2); int __stdcall sub_63F6F0(int a1); int __stdcall sub_63F700(int a1); int __stdcall sub_63F710(int a1); int __thiscall sub_63F720(void *this); int __thiscall sub_63F770(void *this, __int16 a2); char __thiscall sub_63F7F0(void *this); int __thiscall sub_63F820(int this); void *__thiscall sub_63F850(int this, const void *a2); int __thiscall sub_63F880(int this); int __stdcall sub_63F8F0(int a1); signed int __cdecl sub_63F920(); int __thiscall sub_63F930(int this); signed int __stdcall sub_63F990(int a1); int __thiscall sub_63F9A0(int this); signed int __stdcall sub_63FA00(int a1); char __cdecl sub_63FA10(); int __thiscall sub_63FA20(int this); int __stdcall sub_63FA90(int a1); signed int __cdecl sub_63FAC0(); char __cdecl sub_63FAD0(); int __thiscall sub_63FAE0(int this); int __thiscall sub_63FB40(void *this, int a2); signed int __stdcall sub_63FB70(int a1); char __cdecl sub_63FB80(); int __thiscall sub_63FB90(int this); signed int __stdcall sub_63FBF0(int a1); signed int __cdecl sub_63FC00(); char __cdecl sub_63FC10(); int __thiscall sub_63FC20(int this); signed int __stdcall sub_63FC80(int a1); signed int __cdecl sub_63FC90(); int __thiscall sub_63FCA0(int this); signed int __stdcall sub_63FD00(int a1); signed int __cdecl sub_63FD10(); char __cdecl sub_63FD20(); signed int __thiscall sub_63FD30(int this); char *__thiscall sub_63FD40(void *this); __int16 __thiscall sub_63FD50(int this); int __thiscall sub_63FD60(int this, int a2); int __thiscall sub_63FD90(int this, int a2); int __thiscall sub_63FDC0(int this); int __thiscall sub_63FE20(void *this, int a2, int a3, int a4); int __thiscall sub_63FF00(int this, int a2, int a3, int a4, int a5); bool __thiscall sub_63FF50(int this); int __thiscall sub_63FF80(void *this, int a2, char a3, __int16 a4); char *__thiscall sub_63FFB0(void *this, int a2); char *__thiscall sub_640070(void *this); bool __thiscall sub_6400A0(void *this, int a2); char __thiscall sub_6400D0(void *this); signed __int16 __thiscall sub_640100(void *this, int a2); int __thiscall sub_640130(void *this, int a2, char a3); char __thiscall sub_640150(void *this, int a2); char *__thiscall sub_640170(void *this); signed __int16 __thiscall sub_640190(void *this, int a2); int __thiscall sub_6401D0(void *this, int a2); signed int __thiscall sub_640210(int this); unsigned __int8 __thiscall sub_640290(int this, __int16 a2); char __thiscall sub_6402C0(int this); signed __int16 __thiscall sub_6402D0(int this, unsigned __int8 a2); signed int __cdecl sub_640310(); int __thiscall sub_640350(void *this, int a2, int a3, int a4); int __thiscall sub_640460(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall sub_640690(int this, int a2, int a3, unsigned __int16 a4, int a5, int a6, int a7); int __thiscall sub_640920(void *this, int a2, int a3); signed int __thiscall sub_640B70(int this, int a2, int a3, unsigned __int16 a4, int a5, int a6); int __thiscall sub_640E00(void *this, int a2, int a3); int __thiscall sub_641000(void *this); int __thiscall sub_641100(int this); int __thiscall sub_641130(int this); int __thiscall sub_6411A0(int this); int __thiscall sub_641200(int this); int __thiscall sub_641260(int this); int __thiscall sub_6412D0(int this); int __thiscall sub_641330(int this); int __thiscall sub_641390(int this); int __thiscall sub_6413F0(int this); int __thiscall sub_641450(int this); signed int __stdcall sub_6414B0(int a1); signed int __cdecl sub_6414C0(); int __thiscall sub_6414D0(void *this, int a2); int __thiscall sub_641510(int this); int __thiscall sub_641570(int this); int __thiscall sub_6415D0(void *this, int a2, int a3); void *__thiscall sub_6416F0(void *this, const char *a2); void *__thiscall sub_6417A0(void *this, char a2); void *__thiscall sub_6417D0(void *this); int __thiscall sub_6417E0(int this, unsigned __int16 a2); signed __int16 __thiscall sub_641810(int this, int a2); int __thiscall sub_6418B0(void *this, int a2); char __thiscall sub_641940(void *this, signed int a2, int a3); int __thiscall sub_641990(int this); int __thiscall sub_6419B0(int this); int __thiscall sub_6419C0(int this, int a2); signed __int16 __thiscall sub_6419D0(int this); // int __userpurge sub_641A70(int result, int a2, unsigned __int16 a3); signed int __thiscall sub_641AC0(void *this, int a2); signed int __thiscall sub_641B30(int this, int a2); signed int __thiscall sub_641BE0(void *this, unsigned __int16 a2, int a3); char __thiscall sub_641C30(void *this, unsigned __int16 a2); __int16 __thiscall sub_641C60(void *this, unsigned __int16 a2, char a3); int __cdecl sub_641C90(); int __thiscall sub_641CA0(void *this, unsigned __int16 a2); int __thiscall sub_641CD0(int this); int __thiscall sub_641CF0(int this, int a2); unsigned __int16 __thiscall sub_641D50(void *this, unsigned __int16 a2, int a3); int __thiscall sub_641E30(int this, int a2); unsigned __int16 __thiscall sub_641E90(int this, int a2, int a3, signed __int16 a4); signed int __thiscall sub_641FA0(void *this, unsigned __int16 a2, int a3); signed int __thiscall sub_642100(void *this, unsigned __int16 a2, int a3); char __thiscall sub_642270(void *this, unsigned __int16 a2, unsigned int a3, unsigned __int16 a4, unsigned int a5); char __thiscall sub_642310(void *this); void *__thiscall sub_6424A0(void *this); char __thiscall sub_6424B0(int this, void *a2, int a3); void __thiscall sub_6426F0(void *this); int __thiscall sub_642780(_DWORD); // weak int __thiscall sub_642790(_DWORD); // weak int __thiscall sub_6427A0(_DWORD); // weak bool __thiscall sub_6427B0(int this, int a2); char __thiscall sub_642800(int this, void *a2); char __thiscall sub_642850(void *this, void *a2); char __thiscall sub_6428A0(void *this, void *a2); int loc_6428F0(); // weak void *__thiscall sub_642910(void *this, char a2); void *__thiscall sub_642950(void *this, char a2); char __thiscall sub_642990(int this, void *a2); int loc_642A10(); // weak char __thiscall sub_642A40(void *this, const void *a2); char __thiscall sub_642A80(void *this, const void *a2); int __thiscall sub_642AC0(int this, int a2); int loc_642B70(); // weak char __thiscall sub_642B80(int this, int a2, int a3); void __thiscall sub_642BA0(int this); char __thiscall sub_642C60(void *this, int a2); char __thiscall sub_642CA0(void *this, int a2); char __thiscall sub_642CE0(int this, int a2); char __thiscall sub_642D30(int this, int a2); char __thiscall sub_642D80(int this, unsigned __int16 a2); char __thiscall sub_642F00(int this, unsigned __int16 a2); void __thiscall sub_643080(void *this); int __thiscall sub_643180(int this, int a2); int __thiscall sub_643200(int this); int __thiscall sub_6432E0(int this); char __thiscall sub_6434A0(void *this, char *a2); char __thiscall sub_643820(void *this, int a2, int a3); char __thiscall sub_643890(int this, int a2, int a3); char __thiscall sub_6438B0(int this, int a2, int a3); char __thiscall sub_643930(void *this, int a2, int a3); char __thiscall sub_6439A0(void *this, void *a2, int a3); int __thiscall sub_643A00(int this, int a2, int a3); int __thiscall sub_643A10(void *this, int a2, int a3); void *__thiscall sub_643AE0(void *this); int __thiscall sub_643B00(void *this, int a2, __int16 a3); char __thiscall sub_643C70(int this, void *a2, int a3); char __thiscall sub_643D00(int this, int a2, int a3); // int loc_643D60(); weak char __thiscall sub_643D70(int this, int a2, int a3); int loc_643DE0(); // weak char __thiscall sub_643DF0(int this, void *a2, int a3); int loc_643EA0(); // weak void __thiscall sub_643EB0(void *this); bool __thiscall sub_643EE0(int this, const char *a2); char __thiscall sub_644000(void *this, int a2); int __thiscall sub_644090(void *this, const char *a2, int a3); int __thiscall sub_644120(void *this, const char *a2, int a3, const char *a4, int a5, int a6); int __thiscall sub_644210(void *this, const char *a2, int a3, int a4); int __thiscall sub_6442C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7); int __thiscall sub_644390(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7, const char *a8, int a9); int __thiscall sub_644460(void *this, int a2, int a3, int a4, int a5, int a6, const char *a7, int a8, int a9); int __thiscall sub_644510(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7, const char *a8, int a9, int a10, int a11); bool __thiscall sub_6445D0(void *this, int a2, int a3, int a4, int a5, int a6, const char *a7); int __thiscall sub_644670(int this); char __thiscall sub_644680(int this, char *a2); char __thiscall sub_644900(int this, int a2); char __thiscall sub_644A20(void *this, int a2); bool __thiscall sub_644B20(int this, int a2); int __thiscall sub_644B70(void *this, int a2, int a3, int a4, int a5, int a6, const char *a7, int a8, int a9); int __thiscall sub_644C30(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7, const char *a8, int a9, int a10, int a11); int __thiscall sub_644CC0(void *this, int a2, int a3, int a4, int a5, int a6); char __thiscall sub_644D60(int this, const char *a2); char sub_644DD0(int a1, const char *a2, ...); int __thiscall sub_645030(int this, unsigned __int16 a2); char *__thiscall sub_645070(void *this, signed int a2); signed int __stdcall sub_645090(int a1); int __thiscall sub_6450D0(void *this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD), int a3); int __thiscall sub_645170(void *this, int a2, __int16 a3, __int16 a4); int __cdecl sub_645210(int a1); int __cdecl sub_645230(int a1); void *__thiscall sub_645250(void *this); int loc_6452A0(); // weak void *__thiscall sub_6452B0(void *this, const char *a2); int loc_645360(); // weak void *__thiscall sub_645370(void *this, const char *a2); int loc_645420(); // weak void *__thiscall sub_645430(void *this, const char *a2); int loc_6454E0(); // weak int loc_6454F0(); // weak void *__thiscall sub_645500(void *this, const char *a2); int loc_6455A0(); // weak void *__thiscall sub_6455B0(void *this, const char *a2); void *__thiscall sub_645650(void *this, const char *a2); void *__thiscall sub_645710(void *this, const char *a2); void *__thiscall sub_6457D0(void *this, const char *a2); void *__thiscall sub_645870(void *this, char a2); void *__thiscall sub_6458A0(void *this, char a2); void *__thiscall sub_6458D0(void *this, char a2); void *__thiscall sub_645900(void *this, char a2); void *__thiscall sub_645930(void *this, char a2); void *__thiscall sub_645960(void *this, char a2); void *__thiscall sub_645990(void *this, char a2); void *__thiscall sub_6459C0(void *this, char a2); void *__thiscall sub_6459F0(void *this, char a2); void *__thiscall sub_645A20(void *this, char a2); void *__thiscall sub_645A50(void *this, char a2); void *__thiscall sub_645A80(void *this); int __thiscall sub_645AE0(int this); void __thiscall sub_645C80(void *this); char __thiscall sub_645D50(int this, const char *a2); void __thiscall sub_645F60(int this); int __thiscall sub_645FE0(int this); void *__thiscall sub_647A40(void *this, char a2); void __thiscall sub_647A70(void *this); int loc_647B40(); // weak void *__thiscall sub_647B50(void *this); int __thiscall sub_647BA0(int this, int a2); int __thiscall sub_647C00(int this, int a2); int __thiscall sub_647C60(int this, int a2, char a3, int a4, void *a5); int __thiscall sub_647E90(void *this, const char *a2, char a3); int __thiscall sub_647F40(void *this, int a2, int a3); void __stdcall sub_648190(void *a1); int __thiscall sub_6481D0(int this, int a2, void *a3, int a4); int __thiscall sub_6482B0(int this, __int16 a2); int __thiscall sub_648340(int this, int a2, int a3); int __thiscall sub_6483B0(int this, int a2, int a3); int __thiscall sub_648420(int this); int __thiscall sub_648470(void *this, int a2); bool __thiscall sub_6484F0(int this, char a2); char __thiscall sub_648520(int this, __int16 a2, int a3); int __thiscall sub_648590(int this, char a2); bool __thiscall sub_6485C0(int this, char a2, unsigned __int64 a3); int __thiscall sub_648610(int this, int a2, int a3, int a4); char __thiscall sub_6486B0(void *this); void __thiscall sub_6488C0(int this); int __cdecl sub_648920(int a1, int a2, int a3); int __thiscall sub_648950(int this); char __thiscall sub_6489C0(void *this); int __thiscall sub_648DA0(int this); void __thiscall sub_648DB0(void *); // idb int __stdcall sub_648DC0(int a1); int __cdecl sub_648E90(); int __cdecl sub_648EA0(int a1); void *__thiscall sub_648EB0(void *this, const char *a2); int loc_648F60(); // weak void *__thiscall sub_648F70(void *this, const char *a2); void *__thiscall sub_649020(void *this, const char *a2); void *__thiscall sub_6490C0(void *this, char a2); void *__thiscall sub_6490F0(void *this, char a2); signed int __thiscall sub_649120(void *this); int __thiscall sub_649140(int this, int a2); char __thiscall sub_649190(int this, int a2); void *__thiscall sub_649350(void *this); // int loc_649360(); weak void *__thiscall sub_649370(void *this, char a2); void *__thiscall sub_649400(void *this, char a2); char __thiscall sub_649430(int this); int __thiscall sub_649480(void *this); char __thiscall sub_6495E0(void *this, int a2, int a3); int __thiscall sub_649720(void *this, int a2); void __thiscall sub_649790(void *this, int a2); int __thiscall sub_649990(int this); int __thiscall sub_6499A0(int this, LPCSTR lpFileName); int __thiscall sub_6499D0(_DWORD); // weak signed int __thiscall sub_6499E0(int this, int a2); signed int __thiscall sub_649A70(int this, int a2, int a3); signed int __thiscall sub_649B20(int this, int a2, int a3, int a4, int a5); signed int __thiscall sub_649C00(int this, int a2); signed int __thiscall sub_649C50(int this, int a2, int a3); signed int __thiscall sub_649CD0(int this, int a2, int a3, int a4, int a5, int a6); void *__thiscall sub_649D10(void *this); bool __thiscall sub_649D90(void *this); int __thiscall sub_649DA0(int this, int a2); char __thiscall sub_649DD0(int this); signed int __thiscall sub_649E60(int this); char __thiscall sub_649E90(int this, signed int a2); int __thiscall sub_649ED0(int this); int __thiscall sub_649EE0(int this); void *__thiscall sub_649EF0(void *this); void *__thiscall sub_649F00(void *this); bool __thiscall sub_649F10(void *this, int a2); bool __thiscall sub_649F20(int this, int a2); void __thiscall sub_649F40(int this); int __thiscall sub_649F60(int this, int a2); int __thiscall sub_649F80(int this, int a2, int a3); signed int __thiscall sub_649FB0(int this); int __thiscall sub_64A030(int this, int a2); int __thiscall sub_64A050(int this, int a2); int __thiscall sub_64A0B0(int this, int a2); int __thiscall sub_64A110(int this, int a2); int __thiscall sub_64A190(int this); int __thiscall sub_64A1E0(int this); int __thiscall sub_64A230(int this); int __thiscall sub_64A2A0(int this, int a2); char __thiscall sub_64A320(int this); signed int __thiscall sub_64A360(int this); int __thiscall sub_64A3F0(void *this, int a2); char *__thiscall sub_64A5A0(int this, char *a2); char __thiscall sub_64A640(int this, int a2); char __thiscall sub_64A690(int this, int a2); char __thiscall sub_64A700(void *this, int a2); char __thiscall sub_64A730(void *this, int a2); int __thiscall sub_64A770(int this); int loc_64A790(); // weak char __thiscall sub_64A7B0(int this, char *a2); char __thiscall sub_64A970(void *this, int a2); char __thiscall sub_64A9C0(void *this, int a2); void *__thiscall sub_64AA20(void *this, char a2); void __thiscall sub_64AA60(int this); int __thiscall sub_64AAD0(int this, int a2); signed int __thiscall sub_64AB90(void *this, int a2); signed int __thiscall sub_64ABE0(void *this, int a2); char __thiscall sub_64AC30(int this, unsigned __int16 a2); char __thiscall sub_64ADB0(int this, int a2); int __thiscall sub_64AE30(int this); // int __usercall sub_64AEC0(int a1, const void *lp); int __stdcall TopLevelExceptionFilter(void *a1); void *__thiscall sub_64B3D0(void *this); int __thiscall sub_64B3F0(void *this, signed int a2); void *__thiscall sub_64B410(void *this, const char *a2); int __thiscall sub_64B4C0(void *this); int loc_64B760(); // weak void *__thiscall sub_64B770(void *this, char a2); int __thiscall sub_64B7A0(int this); void __thiscall sub_64B830(int this); int __cdecl sub_64B8B0(DWORD dwMessageId, int); // idb int __cdecl sub_64B920(int a1); int __cdecl sub_64B9E0(int a1); FILE *__cdecl sub_64BAC0(int a1, char *a2, const char *a3, va_list a4); FILE *sub_64BC50(const char *a1, ...); FILE *sub_64BC70(int a1, const char *a2, ...); FILE *sub_64BC90(int a1, char *a2, const char *a3, ...); void *__thiscall sub_64BCB0(void *this); int loc_64BCC0(); // weak signed int __thiscall sub_64BCD0(void *this, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, int a4); signed int __thiscall sub_64BDF0(SOCKET *this); BOOL __thiscall sub_64BEB0(int this, HANDLE *a2); LONG __thiscall sub_64BED0(void *this); void *__thiscall sub_64BF10(void *this, char a2); signed int __thiscall sub_64BF40(SOCKET *this); void __thiscall sub_64C000(int this, int a2); int __thiscall sub_64C1E0(int this); int (__stdcall **__thiscall sub_64C2E0(SOCKET *this))(int, int); signed int __thiscall sub_64C370(SOCKET *this, const char *cp, u_short hostshort, const char *a4, u_short a5); signed int __thiscall sub_64C4B0(void *this, int a2, unsigned int a3); void __thiscall sub_64C830(int this); signed int __thiscall sub_64C860(int this); int __thiscall sub_64C8A0(void *this); int __thiscall sub_64C900(int this, int a2); __int16 __thiscall sub_64C940(int this); int __thiscall sub_64C960(int this); int __thiscall sub_64C970(int this); signed int __thiscall sub_64C980(void *this, int a2, int a3, int a4); int __thiscall sub_64C9E0(void *this); signed int __thiscall sub_64CA10(int this); int __thiscall sub_64CA50(int this); __int16 __thiscall sub_64CA90(int this); void *__thiscall sub_64CAB0(int this, const void *a2, int a3); int __thiscall sub_64CB20(int this); int __thiscall sub_64CB30(int this); int __thiscall sub_64CB40(int this); int __thiscall sub_64CB80(int this, __int16 a2, int a3, const void *a4); int __thiscall sub_64CC30(int this); HANDLE __thiscall sub_64CC60(void *this, HANDLE FileHandle, ULONG_PTR CompletionKey); void __thiscall sub_64CCA0(ULONG_PTR dwCompletionKey, int a2); int __stdcall StartAddress(LPOVERLAPPED Overlapped); HANDLE __thiscall sub_64CEA0(void *dwCompletionKey, void *a2, int a3); HANDLE __thiscall sub_64CF90(ULONG_PTR this); // DWORD __stdcall timeGetTime(); int __thiscall sub_64CFC0(int this); signed int __thiscall sub_64D030(int this); signed int __thiscall sub_64D0B0(int this); int __thiscall sub_64D130(void *this, const char *a2); int __thiscall sub_64D1B0(int this, int a2); int __thiscall sub_64D200(int this); int __thiscall sub_64D210(int this, int a2); int __thiscall sub_64D260(int this, int a2, signed int a3); signed int __thiscall sub_64D350(int this, const unsigned __int8 *a2); int __thiscall sub_64D560(void *this); signed int __thiscall sub_64D810(int this, int a2); const unsigned __int8 *__thiscall sub_64D850(void *this); signed int __thiscall sub_64D8D0(int this, int a2); int __thiscall sub_64D900(void *this, int a2, int a3); signed int __thiscall sub_64DB50(int this, const unsigned __int8 *a2, int a3); signed int __thiscall sub_64DBE0(int this); signed int __thiscall sub_64DDF0(int this, const CHAR *lpFileName); signed int __thiscall sub_64E030(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten); signed int __thiscall sub_64E150(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten); void __thiscall sub_64E260(void *this); void __thiscall sub_64E2D0(void *this); void __thiscall sub_64E340(int this); int __thiscall sub_64E3C0(int this); int __thiscall sub_64E4A0(int this); int __thiscall sub_64E500(int this); int __thiscall sub_64E560(int this, int a2); int __thiscall sub_64E750(int this); signed int __thiscall sub_64E8B0(int this, const unsigned __int8 *a2, int a3); int __thiscall sub_64EDB0(int this, LPCSTR lpFileName, int a3, int a4, const char *a5); int __thiscall sub_64EFE0(int this); signed int __thiscall sub_64F060(SOCKET *this); signed int __thiscall sub_64F0D0(int this, int a2, int a3, int a4, int a5); signed int __thiscall sub_64F230(int this, void *a2, int a3); signed int __thiscall sub_64F2C0(int this, int a2, int a3, int a4); void __thiscall sub_64F460(SOCKET *this); int __stdcall sub_64F490(int a1); signed int __thiscall sub_64F850(LPVOID lpParameter); char __stdcall sub_64F900(char a1, int a2, int a3, int a4, char a5, int a6, int a7, int a8, char a9, int a10, int a11, int a12); char __stdcall sub_64FA00(char a1, int a2, int a3, int a4); BOOL __thiscall sub_64FAB0(int this); signed int __thiscall sub_64FB40(void *this, int a2, LPCSTR lpMachineName, LPCSTR lpServiceName); void *__thiscall sub_64FBF0(void *this); void *__thiscall sub_64FC10(void *this, char a2); BOOL __stdcall HandlerProc(int a1); char __thiscall sub_64FC70(int this); BOOL __stdcall sub_64FD30(int a1, int a2); char __thiscall sub_64FE60(void *this, char a2, int a3, int a4, int a5, int a6, int a7); // void __thiscall type_info::_type_info(void *); idb unsigned __int8 *__thiscall sub_64FF40(int this); void *__thiscall sub_64FF50(void *this, const char *a2); int __thiscall sub_64FFF0(int this); void *__thiscall sub_650040(void *this, char a2); int __thiscall sub_650080(int this, const char *a2); void *__thiscall sub_6500B0(void *this, int a2); bool __cdecl sub_6500D0(int a1, int a2); signed int __cdecl sub_6500F0(unsigned __int8 a1, unsigned __int8 a2); int __thiscall sub_650160(int this); int __thiscall sub_650180(void *this); int __thiscall sub_6501A0(int this, int a2, int a3); int __cdecl sub_650200(int a1, int a2); void *__thiscall sub_650240(void *this); char __thiscall sub_650270(void *this); int __thiscall sub_6502A0(void *this, const char *a2); int __thiscall sub_650320(int this); int __thiscall sub_650330(int this, int a2); int __thiscall sub_650340(int this, int a2); char __thiscall sub_650360(void *this, int a2); bool __thiscall sub_6503C0(int this, int a2, int a3); char __thiscall sub_650400(int this, const char *a2, int a3); signed int __cdecl sub_650450(); char __thiscall sub_650460(void *this, int a2); bool __thiscall sub_6504B0(void *this, const char *a2, int a3); char __thiscall sub_6504E0(void *this, int a2); bool __thiscall sub_650530(void *this, const char *a2, int a3); int __thiscall sub_650560(int this); char __thiscall sub_650580(void *this, int a2); bool __thiscall sub_6505D0(void *this, const char *a2, int a3); int __thiscall sub_650600(int this); int __thiscall sub_650620(void *this, int a2); int __thiscall sub_650650(int this); int __thiscall sub_650660(void *this, size_t a2); int __thiscall sub_650690(int this, int a2); int __thiscall sub_6506C0(void *this, int a2, __int16 a3); char __thiscall sub_6507D0(void *this, int a2); char __thiscall sub_650810(void *this, int a2); void __thiscall sub_650880(int this); int __cdecl sub_6508D0(int a1); BOOL __stdcall ReadMemoryRoutine(int a1, LPCVOID lpBaseAddress, int a3, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); int __cdecl sub_650980(unsigned int a1); void __cdecl sub_650BD0(); void __cdecl sub_650C00(); // int __userpurge sub_650C30(int a1, int a2); // int __userpurge sub_651030(int a1, const void *lp); int __stdcall sub_651480(int, void *lp); // idb int __stdcall sub_6514E0(int a1, int a2); LONG __thiscall sub_6514F0(void *Destination); int __thiscall sub_651560(int this); void *__thiscall sub_6515C0(void *this, char a2); int __cdecl sub_6515F0(); LONG __thiscall sub_6516E0(void *this); signed int __stdcall sub_651740(int a1, int a2); void *__thiscall sub_651750(void *this); // int __cdecl unknown_libname_130(_DWORD); weak void *__thiscall sub_65176E(void *this, int a2); void __stdcall sub_65178B(int a1); void *__thiscall sub_6517BB(void *this, int a2); void __stdcall sub_6517D8(int a1); void *__thiscall sub_651808(void *this, int a2); void *__thiscall sub_651825(void *this, char a2); // int __cdecl _Tolower(int, const _Ctypevec *); // _Ctypevec *__cdecl _Getctype(_Ctypevec *retstr); // _Cvtvec __cdecl _Getcvt(); // int __thiscall std::_Init_locks::_Init_locks(_DWORD); weak int unknown_libname_6(); // weak // _DWORD __stdcall std::_Lockit::_Lockit(_DWORD); weak // int __thiscall std::_Lockit::__Lockit(_DWORD); weak // int __thiscall std::_Fac_node::__Fac_node(_DWORD); weak // _DWORD __cdecl std::locale::facet::_Facet_Register(_DWORD); weak int __cdecl sub_651AEE(); // _DWORD __cdecl std::_Locinfo::_Locinfo_dtor(_DWORD); weak // _DWORD __cdecl std::_Locinfo::_Locinfo_ctor(_DWORD, char *); weak // int std::locale::_Init(void); weak int __thiscall sub_651E1F(int this); int __thiscall sub_651E23(int this); int (__thiscall **__cdecl sub_651E3B())(void *, char); void *__thiscall sub_651E41(void *this, char a2); // _DWORD __cdecl std::ios_base::_Ios_base_dtor(_DWORD); weak // int __cdecl _Toupper(int, const _Ctypevec *); // int __thiscall std::_Mutex::_Mutex(_DWORD); weak // int __thiscall std::_Mutex::__Mutex(_DWORD); weak bool __cdecl __uncaught_exception(); // idb // int __cdecl _Stoulx(int, int, size_t, int); idb // int __cdecl _Stolx(int, int, size_t, int); idb // int __cdecl _Stollx(int, int, size_t, int); idb // int __cdecl _Stoullx(int, int, size_t, int); idb // int __cdecl _Stofx(char *, char **, int, int); idb // int __cdecl _Stodx(char *, char **, int, int); idb // double __cdecl _Stoldx(_DWORD, _DWORD, _DWORD, _DWORD); weak FILE *__cdecl sub_652657(const char *a1, int a2, int a3); FILE *__cdecl sub_652676(const char *a1, int a2, int a3); FILE *__cdecl sub_65271E(const char *a1, int a2, int a3); // int __cdecl _Mtxdst(LPCRITICAL_SECTION lpCriticalSection); idb // int __cdecl unknown_libname_8(LPCRITICAL_SECTION lpCriticalSection); idb void __cdecl sub_6527AC(LPCRITICAL_SECTION lpCriticalSection); // int __thiscall _Init_atexit::__Init_atexit(_DWORD); weak // void __cdecl qsort(void *, size_t, size_t, int (__cdecl *)(const void *, const void *)); // void *__cdecl memset(void *, int, size_t); int __thiscall sub_652BBA(void *this); void *__thiscall sub_652BCA(void *this, char a2); // _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); weak // int __thiscall __security_check_cookie(_DWORD); weak void __cdecl sub_6530A4(void *a1); // void __cdecl operator delete(void *); idb // int __stdcall _LN21(void *, unsigned int, int, void (__thiscall *)(void *)); idb // int __stdcall _eh_vector_constructor_iterator_(void *, unsigned int, int, int, void (__thiscall *)(void *)); idb // int __cdecl atexit(void (__cdecl *)()); // int sprintf(char *, const char *, ...); // int sprintf_s(char *DstBuf, size_t SizeInBytes, const char *Format, ...); // int __cdecl fclose(FILE *); // FILE *__cdecl _fsopen(const char *, const char *, int); // FILE *__cdecl fopen(const char *, const char *); // double __cdecl _difftime32(__time32_t Time1, __time32_t Time2); // _DWORD __cdecl _LN52(_DWORD); weak // int std::exception::_Tidy(void); weak // _DWORD __stdcall std::exception::exception(_DWORD); weak void *__thiscall sub_653952(void *this, char a2); int __thiscall sub_653970(void *this); void *__thiscall sub_65397B(void *this, char a2); void *__thiscall sub_653999(void *this, char a2); void *__thiscall sub_6539B6(void *this, char a2); // _DWORD __stdcall std::exception::exception(_DWORD); weak void *__thiscall sub_653A02(void *this, int a2); void *__thiscall sub_653A1F(void *this, int a2); void *__thiscall sub_653A3C(void *this, int a2); // int __cdecl operator new(size_t); idb // _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); weak // void *__cdecl memmove(void *, const void *, size_t); // void *__cdecl memmove_0(void *, const void *, size_t); // struct tm *__cdecl _localtime32(const __time32_t *Time); // char *__cdecl strncpy(char *, const char *, size_t); // void *__cdecl bsearch(const void *, const void *, size_t, size_t, int (__cdecl *)(const void *, const void *)); // int fprintf(FILE *, const char *, ...); // int __cdecl fputs(const char *, FILE *); // _DWORD __cdecl flsall(_DWORD); weak // int __cdecl fflush(FILE *); int __cdecl sub_654AA7(); int __cdecl sub_654AB0(int, FILE *); // idb // int __cdecl atoi(const char *); // int sscanf(const char *, const char *, ...); // _DWORD __stdcall _LocaleUpdate::_LocaleUpdate(_DWORD); weak // unsigned __int8 *__cdecl _mbsstr(const unsigned __int8 *, const unsigned __int8 *); // int __cdecl _mbsicmp(const unsigned __int8 *, const unsigned __int8 *); // unsigned __int8 *__cdecl _mbsupr(unsigned __int8 *); // size_t __cdecl fwrite(const void *, size_t, size_t, FILE *); // size_t __cdecl fread(void *, size_t, size_t, FILE *); // void *__cdecl malloc(size_t); // __int32 __cdecl ftell(FILE *); // int __cdecl fseek(FILE *, __int32, int); // __time32_t __cdecl _time32(__time32_t *Time); // __time64_t __cdecl _time64(__time64_t *Time); // int __cdecl strncmp(const char *, const char *, size_t); // int __cdecl _mbscmp(const unsigned __int8 *, const unsigned __int8 *); // void __cdecl srand(unsigned int); // int __cdecl rand(); // int __cdecl rename(const char *, const char *); // int __cdecl _findclose(__int32); // int __cdecl _findfirst32(LPCSTR lpFileName, int); idb // int __cdecl _findnext32(HANDLE hFindFile, int); idb // int __cdecl sub_65642C(size_t); idb // int __cdecl _except_handler4(PEXCEPTION_RECORD ExceptionRecord, PVOID TargetFrame, int); idb // _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak // char *__cdecl strncat(char *, const char *, size_t); int __cdecl sub_656AE5(FILE *); // idb // void __cdecl free(void *); // struct lconv *__cdecl localeconv(); // void *__cdecl memchr(const void *, int, size_t); // size_t __cdecl strcspn(const char *, const char *); // errno_t __cdecl memmove_s(void *Dst, rsize_t DstSize, const void *Src, rsize_t MaxCount); // int __cdecl _stricmp(const char *, const char *); // _DWORD __cdecl _LN34_0(_DWORD); weak // struct tm *__cdecl _localtime64(const __time64_t *Time); // int __cdecl puts(const char *); // unsigned __int8 *__cdecl _mbsnbcpy(unsigned __int8 *, const unsigned __int8 *, size_t); // int __cdecl _LN49(UINT uExitCode); idb // unsigned __int8 *__cdecl _mbstok(unsigned __int8 *, const unsigned __int8 *); // int __cdecl _putenv_helper(LPCSTR Src, char *Str); idb int __cdecl sub_657F7C(LPCSTR Src); // idb // int __cdecl _getenv_helper_nolock(char *); idb int __cdecl sub_658048(char *Str); // idb // errno_t __cdecl _dupenv_s(char **PBuffer, size_t *PBufferSizeInBytes, const char *VarName); // int fscanf(FILE *, const char *, ...); // int __cdecl _chdir(const char *); // double __cdecl atof(const char *); // char *__cdecl strerror(int); // int *__cdecl _errno(); // unsigned __int32 *__cdecl __doserrno(); // int __cdecl feof(FILE *); // int __cdecl ferror(FILE *); // FILE *__cdecl freopen(const char *, const char *, FILE *); void **__cdecl sub_6586FE(); // _DWORD __cdecl _lock_file(_DWORD); weak // _DWORD __cdecl _lock_file2(_DWORD, _DWORD); weak // _DWORD __cdecl _unlock_file(_DWORD); weak // _DWORD __cdecl _unlock_file2(_DWORD, _DWORD); weak // char *__cdecl strstr(const char *, const char *); // void *__cdecl realloc(void *, size_t); // int __cdecl toupper(int); // int __cdecl isalpha(int); // int __cdecl isupper(int); // int __cdecl islower(int); // int __cdecl isdigit(int); // int __cdecl isxdigit(int); // int __cdecl isspace(int); // int __cdecl ispunct(int); // int __cdecl isalnum(int); // int __cdecl isgraph(int); // int __cdecl iscntrl(int); // size_t __cdecl strspn(const char *, const char *); // char *__cdecl strchr(const char *, int); // char *__cdecl fgets(char *, int, FILE *); // void __cdecl abort(); // void __cdecl longjmp(jmp_buf, int); // _DWORD __cdecl _setjmp3(_DWORD, _DWORD); // FILE *__cdecl _popen(const char *, const char *); // int __cdecl _LN97(FILE *); idb // _DWORD __cdecl _LN42(_DWORD); weak // int _LN49_0(void); weak // int __cdecl ungetc(int, FILE *); // void __cdecl clearerr(FILE *); // __int64 __cdecl _ftelli64(FILE *File); // int __cdecl _fseeki64(FILE *File, __int64 Offset, int Origin); // int __cdecl setvbuf(FILE *, char *, int, size_t); int __thiscall sub_65A6C8(void *this); int loc_65A6CD(); // weak void __cdecl sub_65A6D2(); void __cdecl sub_65A6D9(); int __thiscall sub_65AABA(void *this); // double __cdecl ceil(double); // double __cdecl floor(double); // double __cdecl modf(double, double *); // double _CIlog(void); weak // double __cdecl frexp(double, int *); // double __cdecl ldexp(double, int); // char *__cdecl strrchr(const char *, int); // double __cdecl strtod(const char *, char **); // char *__cdecl strpbrk(const char *, const char *); // struct tm *__cdecl _gmtime32(const __time32_t *Time); int __cdecl sub_65B79E(int a1); // int __cdecl remove(const char *); // clock_t __cdecl clock(); // size_t __cdecl strftime(char *, size_t, const char *, const struct tm *); // int __cdecl _LN54_1(int, char *); idb // int __cdecl tolower(int); // int __cdecl strcoll(const char *, const char *); signed int __cdecl sub_65D284(int a1, int a2); // int _snprintf(char *, size_t, const char *, ...); // __int32 __cdecl _filelength(int); // int __cdecl _fileno(FILE *); // char *__cdecl strtok(char *, const char *); // int __cdecl _mbsnbcmp(const unsigned __int8 *, const unsigned __int8 *, size_t); // div_t __cdecl div(int, int); // int __cdecl _ismbcdigit(unsigned int); // errno_t __cdecl memcpy_s(void *Dst, rsize_t DstSize, const void *Src, rsize_t MaxCount); // int __cdecl fgetpos(FILE *, fpos_t *); // int __cdecl fsetpos(FILE *, const fpos_t *); // unsigned __int8 *__cdecl _mbspbrk(const unsigned __int8 *, const unsigned __int8 *); // int __cdecl _mkdir(const char *); // int __cdecl vsprintf(char *, const char *, va_list); // unsigned __int8 *__cdecl _mbsrchr(const unsigned __int8 *, unsigned int); // int __cdecl _vsnprintf(char *, size_t, const char *, va_list); // void __cdecl _splitpath(const char *, char *, char *, char *, char *); // char *__cdecl _fullpath(char *, const char *, size_t); // _DWORD __cdecl _EH_prolog3(char); weak // int __stdcall _EH_epilog3(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak int __thiscall sub_65EDCB(void *this); void *__thiscall sub_65EDD6(void *this, char a2); // void __usercall sub_65F107(int a1); void *__cdecl sub_65FBB7(void *a1); // int __cdecl _invoke_watson(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak // int _invalid_parameter_noinfo(void); weak int __cdecl sub_65FE0B(); int __cdecl sub_65FE1B(int a1); // int _encoded_null(void); weak // int _getptd(void); weak // int __cdecl _flsbuf(int, FILE *); // int __cdecl _output_l(FILE *, int, int, int); idb signed int __cdecl sub_6625C7(int a1); signed int __cdecl sub_6625F4(int a1); int *__cdecl sub_662621(); int *__cdecl sub_662627(); int *__cdecl sub_66262D(); void **__cdecl sub_662633(); void *__cdecl sub_662DAA(void *a1); // int __cdecl _stbuf(FILE *); idb // int __cdecl _ftbuf(int, FILE *); idb // int __cdecl _write_nolock(int, int, DWORD nNumberOfBytesToWrite); idb int __cdecl sub_6638F6(int, int, DWORD nNumberOfBytesToWrite); // idb // _DWORD __cdecl _unlock(_DWORD); weak // _DWORD __cdecl _lock(_DWORD); weak // size_t __cdecl strnlen(const char *Str, size_t MaxCount); // int __cdecl _filbuf(FILE *); // int __cdecl _lseek_nolock(int, LONG lDistanceToMove, DWORD dwMoveMethod); idb int __cdecl sub_6669B1(int, LONG lDistanceToMove, DWORD dwMoveMethod); // idb int __cdecl sub_666A85(); // int __cdecl loc_66732C(size_t); weak // int (__cdecl *__usercall sub_667335(int a1))(size_t); PVOID __cdecl sub_66860A(); int (*__cdecl sub_6687C9())(void); int (*__cdecl sub_6687EF())(void); // int __cdecl _LN50_2(char *Str1, char *Str2, size_t MaxCount, _locale_t Locale); idb int __cdecl sub_6690ED(char *Str1, char *Str2, size_t MaxCount); // idb // _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak _UNKNOWN *__cdecl sub_669AD2(); int __cdecl sub_669AD8(); // int __cdecl _access_s(LPCSTR lpFileName, int); idb // int __cdecl _tsopen_nolock(int, LPCSTR lpFileName, int, int, int); idb int __cdecl sub_66ABA6(LPCSTR lpFileName, int, int, int, int, int); // idb int __cdecl sub_66AC6A(int, LPCSTR lpFileName, int, int, int); // idb // int __fastcall _cintrindisp2(_DWORD, _DWORD); weak // int __fastcall _cintrindisp1(_DWORD, _DWORD); weak // int __cdecl _spawnvpe(int, const char *, const char *const *, const char *const *); // int __cdecl _spawnve(int, const char *, const char *const *, const char *const *); // _DWORD __cdecl __lock_fhandle(_DWORD); weak // _DWORD __cdecl _unlock_fhandle(_DWORD); weak // int __cdecl _getdcwd_nolock(const CHAR FileName, LPSTR lpBuffer, size_t); idb int __cdecl sub_671D19(LPSTR lpBuffer, size_t); // idb void __cdecl sub_672AD5(); signed int __cdecl sub_672EC3(int a1, int a2, int a3); signed int __cdecl sub_672F6B(int a1, int a2, int a3); int __cdecl sub_673628(int a1, int a2, int a3); signed int __cdecl sub_67407B(int a1, int a2); signed int __cdecl sub_6745CC(int a1, int a2); signed int __cdecl sub_674DBC(int a1); int __cdecl sub_674F9F(); BOOL __cdecl sub_676684(); // int __stdcall _WSAFDIsSet(SOCKET fd, fd_set *); // int __stdcall WSACleanup(); // int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); // void __usercall sub_6769F0(int a1); int __cdecl sub_6769F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_676A20(int a1); int __cdecl sub_676A2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_676A50(); // void __usercall sub_676A58(int a1); void __cdecl sub_676A63(); void __cdecl sub_676A6E(); void __cdecl sub_676A79(); void __cdecl sub_676A84(); void __cdecl sub_676A8F(); void __cdecl sub_676A9A(); void __cdecl sub_676AA5(); void __cdecl sub_676AB0(); void __cdecl sub_676ABB(); void __cdecl sub_676AC9(); void __cdecl sub_676AD7(); void __cdecl sub_676AE5(); void __cdecl sub_676AF3(); void __cdecl sub_676B01(); void __cdecl sub_676B0F(); void __cdecl sub_676B1D(); void __cdecl sub_676B2B(); void __cdecl sub_676B39(); void __cdecl sub_676B47(); void __cdecl sub_676B55(); void __cdecl sub_676B63(); // void __usercall sub_676B71(int a1); void __cdecl sub_676B7F(); // void __usercall sub_676B8D(int a1); void __cdecl sub_676B9B(); void __cdecl sub_676BA9(); void __cdecl sub_676BB7(); void __cdecl sub_676BC5(); void __cdecl sub_676BD3(); void __cdecl sub_676BE1(); void __cdecl sub_676BEF(); void __cdecl sub_676BFD(); void __cdecl sub_676C0B(); void __cdecl sub_676C19(); void __cdecl sub_676C27(); void __cdecl sub_676C35(); void __cdecl sub_676C43(); void __cdecl sub_676C51(); void __cdecl sub_676C5F(); void __cdecl sub_676C6D(); void __cdecl sub_676C7B(); void __cdecl sub_676C89(); void __cdecl sub_676C97(); void __cdecl sub_676CA5(); // void __usercall sub_676CB3(int a1); void __cdecl sub_676CC1(); void __cdecl sub_676CCF(); void __cdecl sub_676CDD(); void __cdecl sub_676CEB(); void __cdecl sub_676CF9(); void __cdecl sub_676D07(); void __cdecl sub_676D15(); void __cdecl sub_676D23(); void __cdecl sub_676D31(); void __cdecl sub_676D3F(); void __cdecl sub_676D4D(); void __cdecl sub_676D5B(); void __cdecl sub_676D69(); void __cdecl sub_676D77(); // void __usercall sub_676D85(int a1); void __cdecl sub_676D93(); void __cdecl sub_676DA1(); void __cdecl sub_676DAF(); void __cdecl sub_676DBD(); void __cdecl sub_676DCB(); void __cdecl sub_676DD9(); void __cdecl sub_676DE7(); // void __usercall sub_676DF5(int a1); void __cdecl sub_676E03(); // void __usercall sub_676E11(int a1); void __cdecl sub_676E1F(); void __cdecl sub_676E2D(); void __cdecl sub_676E3B(); void __cdecl sub_676E49(); void __cdecl sub_676E57(); void __cdecl sub_676E65(); void __cdecl sub_676E73(); // void __usercall sub_676E81(int a1); void __cdecl sub_676E8F(); void __cdecl sub_676E9D(); // void __usercall sub_676EAB(int a1); void __cdecl sub_676EB9(); void __cdecl sub_676EC7(); void __cdecl sub_676ED5(); // void __usercall sub_676EE3(int a1); void __cdecl sub_676EF1(); void __cdecl sub_676EFF(); void __cdecl sub_676F0D(); void __cdecl sub_676F1B(); void __cdecl sub_676F29(); void __cdecl sub_676F37(); void __cdecl sub_676F45(); void __cdecl sub_676F53(); void __cdecl sub_676F61(); void __cdecl sub_676F6F(); void __cdecl sub_676F7D(); void __cdecl sub_676F8B(); void __cdecl sub_676F99(); void __cdecl sub_676FA7(); void __cdecl sub_676FB5(); void __cdecl sub_676FC3(); void __cdecl sub_676FD1(); // void __usercall sub_676FDF(int a1); void __cdecl sub_676FED(); void __cdecl sub_676FFB(); // void __usercall sub_677009(int a1); void __cdecl sub_677017(); void __cdecl sub_677025(); void __cdecl sub_677033(); void __cdecl sub_677041(); void __cdecl sub_67704F(); // void __usercall sub_67705D(int a1); void __cdecl sub_67706B(); void __cdecl sub_677079(); void __cdecl sub_677087(); void __cdecl sub_677095(); void __cdecl sub_6770A3(); void __cdecl sub_6770B1(); // void __usercall sub_6770BF(int a1); void __cdecl sub_6770CD(); void __cdecl sub_6770DB(); void __cdecl sub_6770E9(); void __cdecl sub_6770F7(); void __cdecl sub_677105(); void __cdecl sub_677113(); void __cdecl sub_677121(); void __cdecl sub_67712F(); void __cdecl sub_67713D(); void __cdecl sub_67714B(); void __cdecl sub_677159(); void __cdecl sub_677167(); void __cdecl sub_677175(); void __cdecl sub_677183(); void __cdecl sub_677191(); void __cdecl sub_67719F(); void __cdecl sub_6771AD(); void __cdecl sub_6771BB(); void __cdecl sub_6771C9(); void __cdecl sub_6771D7(); void __cdecl sub_6771E5(); void __cdecl sub_6771F3(); void __cdecl sub_677201(); void __cdecl sub_67720F(); // void __usercall sub_67721D(int a1); // void __usercall sub_67722B(int a1); // void __usercall sub_677239(int a1); // void __usercall sub_677247(int a1); // void __usercall sub_677255(int a1); // void __usercall sub_677263(int a1); // void __usercall sub_677271(int a1); // void __usercall sub_67727F(int a1); // void __usercall sub_67728D(int a1); // void __usercall sub_67729B(int a1); void __cdecl sub_6772A9(); void __cdecl sub_6772B7(); void __cdecl sub_6772C5(); void __cdecl sub_6772D3(); void __cdecl sub_6772E1(); void __cdecl sub_6772EF(); void __cdecl sub_6772FD(); void __cdecl sub_67730B(); void __cdecl sub_677319(); void __cdecl sub_677327(); void __cdecl sub_677335(); void __cdecl sub_677343(); int loc_67734C(); // weak void __cdecl sub_677351(); void __cdecl sub_67735F(); void __cdecl sub_67736D(); void __cdecl sub_67737B(); void __cdecl sub_677389(); void __cdecl sub_677397(); void __cdecl sub_6773A5(); void __cdecl sub_6773B3(); void __cdecl sub_6773C1(); void __cdecl sub_6773CF(); // void __usercall sub_6773DD(int a1); // void __usercall sub_6773EB(int a1); // void __usercall sub_6773F9(int a1); // void __usercall sub_677407(int a1); // void __usercall sub_677415(int a1); // void __usercall sub_677423(int a1); // void __usercall sub_677431(int a1); // void __usercall sub_67743F(int a1); // void __usercall sub_67744D(int a1); // void __usercall sub_67745B(int a1); // void __usercall sub_677469(int a1); // void __usercall sub_677477(int a1); // void __usercall sub_677485(int a1); // void __usercall sub_677493(int a1); // void __usercall sub_6774A1(int a1); // void __usercall sub_6774AF(int a1); // void __usercall sub_6774BD(int a1); // void __usercall sub_6774CB(int a1); // void __usercall sub_6774D9(int a1); // void __usercall sub_6774E7(int a1); // void __usercall sub_6774F5(int a1); // void __usercall sub_677503(int a1); // void __usercall sub_677511(int a1); // void __usercall sub_67751F(int a1); // void __usercall sub_67752D(int a1); void __cdecl sub_67753B(); void __cdecl sub_677549(); void __cdecl sub_677557(); void __cdecl sub_677565(); void __cdecl sub_677573(); void __cdecl sub_677581(); void __cdecl sub_67758F(); // void __usercall sub_67759D(int a1); // void __usercall sub_6775AB(int a1); // void __usercall sub_6775B9(int a1); // void __usercall sub_6775C7(int a1); // void __usercall sub_6775D5(int a1); // void __usercall sub_6775E3(int a1); // void __usercall sub_6775F1(int a1); // void __usercall sub_6775FF(int a1); // void __usercall sub_67760D(int a1); // void __usercall sub_67761B(int a1); // void __usercall sub_677629(int a1); void __cdecl sub_677637(); void __cdecl sub_677645(); void __cdecl sub_677653(); void __cdecl sub_677661(); void __cdecl sub_67766F(); void __cdecl sub_67767D(); void __cdecl sub_67768B(); void __cdecl sub_677699(); void __cdecl sub_6776A7(); void __cdecl sub_6776B5(); void __cdecl sub_6776C3(); void __cdecl sub_6776D1(); void __cdecl sub_6776DF(); void __cdecl sub_6776ED(); void __cdecl sub_6776FB(); void __cdecl sub_677709(); void __cdecl sub_677717(); void __cdecl sub_677725(); void __cdecl sub_677733(); void __cdecl sub_677741(); void __cdecl sub_67774F(); void __cdecl sub_67775D(); void __cdecl sub_67776B(); void __cdecl sub_677779(); void __cdecl sub_677787(); void __cdecl sub_677795(); void __cdecl sub_6777A3(); void __cdecl sub_6777B1(); void __cdecl sub_6777BF(); void __cdecl sub_6777CD(); void __cdecl sub_6777DB(); void __cdecl sub_6777E9(); void __cdecl sub_6777F7(); void __cdecl sub_677805(); void __cdecl sub_677813(); void __cdecl sub_677821(); void __cdecl sub_67782F(); void __cdecl sub_67783D(); void __cdecl sub_67784B(); void __cdecl sub_677859(); void __cdecl sub_677867(); void __cdecl sub_677875(); void __cdecl sub_677883(); void __cdecl sub_677891(); void __cdecl sub_67789F(); void __cdecl sub_6778AD(); void __cdecl sub_6778BB(); void __cdecl sub_6778C9(); void __cdecl sub_6778D7(); void __cdecl sub_6778E5(); void __cdecl sub_6778F3(); void __cdecl sub_677901(); void __cdecl sub_67790F(); void __cdecl sub_67791D(); void __cdecl sub_67792B(); void __cdecl sub_677939(); void __cdecl sub_677947(); void __cdecl sub_677955(); void __cdecl sub_677963(); void __cdecl sub_677971(); void __cdecl sub_67797F(); void __cdecl sub_67798D(); void __cdecl sub_67799B(); void __cdecl sub_6779A9(); void __cdecl sub_6779B7(); void __cdecl sub_6779C5(); void __cdecl sub_6779D3(); void __cdecl sub_6779E1(); void __cdecl sub_6779EF(); void __cdecl sub_6779FD(); void __cdecl sub_677A0B(); void __cdecl sub_677A19(); void __cdecl sub_677A27(); void __cdecl sub_677A35(); void __cdecl sub_677A43(); void __cdecl sub_677A51(); void __cdecl sub_677A5F(); void __cdecl sub_677A6D(); void __cdecl sub_677A7B(); // void __usercall sub_677A89(int a1); // void __usercall sub_677A97(int a1); // void __usercall sub_677AA5(int a1); // void __usercall sub_677AB3(int a1); // void __usercall sub_677AC1(int a1); // void __usercall sub_677ACF(int a1); // void __usercall sub_677ADD(int a1); // void __usercall sub_677AEB(int a1); // void __usercall sub_677AF9(int a1); // void __usercall sub_677B07(int a1); // void __usercall sub_677B15(int a1); // void __usercall sub_677B23(int a1); // void __usercall sub_677B31(int a1); // void __usercall sub_677B3F(int a1); // void __usercall sub_677B4D(int a1); // void __usercall sub_677B5B(int a1); // void __usercall sub_677B69(int a1); // void __usercall sub_677B77(int a1); // void __usercall sub_677B85(int a1); // void __usercall sub_677B93(int a1); // void __usercall sub_677BA1(int a1); // void __usercall sub_677BAF(int a1); // void __usercall sub_677BBD(int a1); // void __usercall sub_677BCB(int a1); // void __usercall sub_677BD9(int a1); // void __usercall sub_677BE7(int a1); // void __usercall sub_677BF5(int a1); // void __usercall sub_677C03(int a1); // void __usercall sub_677C11(int a1); // void __usercall sub_677C1F(int a1); // void __usercall sub_677C2D(int a1); // void __usercall sub_677C3B(int a1); // void __usercall sub_677C49(int a1); // void __usercall sub_677C57(int a1); // void __usercall sub_677C65(int a1); // void __usercall sub_677C73(int a1); // void __usercall sub_677C81(int a1); // void __usercall sub_677C8F(int a1); // void __usercall sub_677C9D(int a1); // void __usercall sub_677CAB(int a1); // void __usercall sub_677CB9(int a1); // void __usercall sub_677CC7(int a1); // void __usercall sub_677CD5(int a1); // void __usercall sub_677CE3(int a1); // void __usercall sub_677CF1(int a1); // void __usercall sub_677CFF(int a1); // void __usercall sub_677D0D(int a1); // void __usercall sub_677D1B(int a1); // void __usercall sub_677D29(int a1); // void __usercall sub_677D37(int a1); // void __usercall sub_677D45(int a1); // void __usercall sub_677D53(int a1); void __cdecl sub_677D61(); void __cdecl sub_677D6F(); void __cdecl sub_677D7D(); void __cdecl sub_677D8B(); void __cdecl sub_677D99(); // void __usercall sub_677DA7(int a1); void __cdecl sub_677DB5(); void __cdecl sub_677DC3(); void __cdecl sub_677DD1(); void __cdecl sub_677DDF(); void __cdecl sub_677DED(); void __cdecl sub_677DFB(); // void __usercall sub_677E09(int a1); // void __usercall sub_677E17(int a1); void __cdecl sub_677E25(); void __cdecl sub_677E33(); void __cdecl sub_677E41(); void __cdecl sub_677E4F(); void __cdecl sub_677E5D(); void __cdecl sub_677E6B(); void __cdecl sub_677E79(); void __cdecl sub_677E87(); void __cdecl sub_677E95(); void __cdecl sub_677EA3(); void __cdecl sub_677EB1(); void __cdecl sub_677EBF(); void __cdecl sub_677ECD(); void __cdecl sub_677EDB(); void __cdecl sub_677EE9(); void __cdecl sub_677EF7(); void __cdecl sub_677F05(); void __cdecl sub_677F13(); void __cdecl sub_677F21(); void __cdecl sub_677F2F(); void __cdecl sub_677F3D(); void __cdecl sub_677F4B(); // void __usercall sub_677F59(int a1); void __cdecl sub_677F67(); void __cdecl sub_677F75(); void __cdecl sub_677F83(); void __cdecl sub_677F91(); // void __usercall sub_677F9F(int a1); void __cdecl sub_677FAD(); void __cdecl sub_677FBB(); void __cdecl sub_677FC9(); void __cdecl sub_677FD7(); void __cdecl sub_677FE5(); void __cdecl sub_677FF3(); // void __usercall sub_678001(int a1); void __cdecl sub_67800F(); void __cdecl sub_67801D(); // void __usercall sub_67802B(int a1); void __cdecl sub_678039(); void __cdecl sub_678047(); void __cdecl sub_678055(); void __cdecl sub_678063(); void __cdecl sub_678071(); void __cdecl sub_67807F(); void __cdecl sub_67808D(); void __cdecl sub_67809B(); // void __usercall sub_6780A9(int a1); // void __usercall sub_6780B7(int a1); void __cdecl sub_6780C5(); // void __usercall sub_6780D3(int a1); void __cdecl sub_6780E1(); void __cdecl sub_6780EF(); void __cdecl sub_6780FD(); void __cdecl sub_67810B(); void __cdecl sub_678119(); void __cdecl sub_678127(); void __cdecl sub_678135(); void __cdecl sub_678143(); void __cdecl sub_678151(); void __cdecl sub_67815F(); void __cdecl sub_67816D(); void __cdecl sub_67817B(); void __cdecl sub_678189(); void __cdecl sub_678197(); void __cdecl sub_6781A5(); void __cdecl sub_6781B3(); void __cdecl sub_6781C1(); void __cdecl sub_6781CF(); void __cdecl sub_6781DD(); void __cdecl sub_6781EB(); void __cdecl sub_6781F9(); void __cdecl sub_678207(); void __cdecl sub_678215(); void __cdecl sub_678223(); void __cdecl sub_678231(); // void __usercall sub_67823F(int a1); void __cdecl sub_67824D(); // void __usercall sub_67825B(int a1); void __cdecl sub_678269(); void __cdecl sub_678277(); void __cdecl sub_678285(); void __cdecl sub_678293(); void __cdecl sub_6782A1(); void __cdecl sub_6782AF(); void __cdecl sub_6782BD(); // void __usercall sub_6782CB(int a1); void __cdecl sub_6782D9(); void __cdecl sub_6782E7(); void __cdecl sub_6782F5(); void __cdecl sub_678303(); void __cdecl sub_678311(); void __cdecl sub_67831F(); void __cdecl sub_67832D(); void __cdecl sub_67833B(); void __cdecl sub_678349(); void __cdecl sub_678357(); void __cdecl sub_678365(); void __cdecl sub_678373(); void __cdecl sub_678381(); void __cdecl sub_67838F(); void __cdecl sub_67839D(); void __cdecl sub_6783AB(); void __cdecl sub_6783B9(); void __cdecl sub_6783C7(); void __cdecl sub_6783D5(); void __cdecl sub_6783E3(); void __cdecl sub_6783F1(); void __cdecl sub_6783FF(); void __cdecl sub_67840D(); // void __usercall sub_67841B(int a1); // void __usercall sub_678429(int a1); // void __usercall sub_678437(int a1); // void __usercall sub_678445(int a1); void __cdecl sub_678453(); void __cdecl sub_678461(); // void __usercall sub_67846F(int a1); // void __usercall sub_67847D(int a1); // void __usercall sub_67848B(int a1); // void __usercall sub_678499(int a1); void __cdecl sub_6784A7(); void __cdecl sub_6784B5(); void __cdecl sub_6784C3(); void __cdecl sub_6784D1(); void __cdecl sub_6784DF(); void __cdecl sub_6784ED(); // void __usercall sub_6784FB(int a1); void __cdecl sub_678509(); void __cdecl sub_678517(); void __cdecl sub_678525(); void __cdecl sub_678533(); void __cdecl sub_678541(); void __cdecl sub_67854F(); // void __usercall sub_67855D(int a1); void __cdecl sub_67856B(); void __cdecl sub_678579(); void __cdecl sub_678587(); void __cdecl sub_678595(); void __cdecl sub_6785A3(); void __cdecl sub_6785B1(); void __cdecl sub_6785BF(); void __cdecl sub_6785CD(); void __cdecl sub_6785DB(); void __cdecl sub_6785E9(); void __cdecl sub_6785F7(); void __cdecl sub_678605(); void __cdecl sub_678613(); void __cdecl sub_678621(); void __cdecl sub_67862F(); void __cdecl sub_67863D(); void __cdecl sub_67864B(); void __cdecl sub_678659(); void __cdecl sub_678667(); void __cdecl sub_678675(); void __cdecl sub_678683(); void __cdecl sub_678691(); void __cdecl sub_67869F(); void __cdecl sub_6786AD(); void __cdecl sub_6786BB(); void __cdecl sub_6786C9(); void __cdecl sub_6786D7(); void __cdecl sub_6786E5(); void __cdecl sub_6786F3(); void __cdecl sub_678701(); void __cdecl sub_67870F(); void __cdecl sub_67871D(); void __cdecl sub_67872B(); void __cdecl sub_678739(); void __cdecl sub_678747(); void __cdecl sub_678755(); void __cdecl sub_678763(); // void __usercall sub_678771(int a1); void __cdecl sub_67877F(); // void __usercall sub_67878D(int a1); void __cdecl sub_67879B(); // void __usercall sub_6787A9(int a1); void __cdecl sub_6787B7(); void __cdecl sub_6787C5(); void __cdecl sub_6787D3(); void __cdecl sub_6787E1(); void __cdecl sub_6787EF(); // void __usercall sub_6787FD(int a1); void __cdecl sub_67880B(); void __cdecl sub_678819(); void __cdecl sub_678827(); // void __usercall sub_678835(int a1); void __cdecl sub_678843(); void __cdecl sub_678851(); void __cdecl sub_67885F(); void __cdecl sub_67886D(); void __cdecl sub_67887B(); void __cdecl sub_678889(); void __cdecl sub_678897(); void __cdecl sub_6788A5(); void __cdecl sub_6788B3(); void __cdecl sub_6788C1(); // void __usercall sub_6788CF(int a1); // void __usercall sub_6788DD(int a1); void __cdecl sub_6788EB(); void __cdecl sub_6788F9(); void __cdecl sub_678907(); void __cdecl sub_678915(); void __cdecl sub_678923(); // void __usercall sub_678931(int a1); void __cdecl sub_67893F(); void __cdecl sub_67894D(); void __cdecl sub_67895B(); void __cdecl sub_678969(); void __cdecl sub_678977(); void __cdecl sub_678985(); void __cdecl sub_678993(); void __cdecl sub_6789A1(); void __cdecl sub_6789AF(); void __cdecl sub_6789BD(); void __cdecl sub_6789CB(); void __cdecl sub_6789D9(); void __cdecl sub_6789E7(); void __cdecl sub_6789F5(); // void __usercall sub_678A03(int a1); void __cdecl sub_678A11(); // void __usercall sub_678A1F(int a1); void __cdecl sub_678A2D(); void __cdecl sub_678A3B(); void __cdecl sub_678A49(); void __cdecl sub_678A57(); void __cdecl sub_678A65(); void __cdecl sub_678A73(); void __cdecl sub_678A81(); void __cdecl sub_678A8F(); void __cdecl sub_678A9D(); void __cdecl sub_678AAB(); void __cdecl sub_678AB9(); void __cdecl sub_678AC7(); void __cdecl sub_678AD5(); // void __usercall sub_678AE3(int a1); // void __usercall sub_678AF1(int a1); void __cdecl sub_678AFF(); void __cdecl sub_678B0D(); void __cdecl sub_678B1B(); void __cdecl sub_678B29(); void __cdecl sub_678B37(); // void __usercall sub_678B45(int a1); // void __usercall sub_678B53(int a1); void __cdecl sub_678B61(); void __cdecl sub_678B6F(); void __cdecl sub_678B7D(); void __cdecl sub_678B8B(); void __cdecl sub_678B99(); void __cdecl sub_678BA7(); void __cdecl sub_678BB5(); void __cdecl sub_678BC3(); // void __usercall sub_678BD1(int a1); void __cdecl sub_678BDF(); void __cdecl sub_678BED(); void __cdecl sub_678BFB(); void __cdecl sub_678C09(); void __cdecl sub_678C17(); void __cdecl sub_678C25(); void __cdecl sub_678C33(); void __cdecl sub_678C41(); void __cdecl sub_678C4F(); void __cdecl sub_678C5D(); void __cdecl sub_678C6B(); // void __usercall sub_678C79(int a1); void __cdecl sub_678C87(); void __cdecl sub_678C95(); void __cdecl sub_678CA3(); // void __usercall sub_678CB1(int a1); // void __usercall sub_678CBF(int a1); void __cdecl sub_678CCD(); void __cdecl sub_678CDB(); void __cdecl sub_678CE9(); void __cdecl sub_678CF7(); // void __usercall sub_678D05(int a1); // void __usercall sub_678D13(int a1); void __cdecl sub_678D21(); void __cdecl sub_678D2F(); void __cdecl sub_678D3D(); void __cdecl sub_678D4B(); void __cdecl sub_678D59(); void __cdecl sub_678D67(); void __cdecl sub_678D75(); void __cdecl sub_678D83(); // void __usercall sub_678D91(int a1); void __cdecl sub_678D9F(); // void __usercall sub_678DAD(int a1); void __cdecl sub_678DBB(); // void __usercall sub_678DC9(int a1); void __cdecl sub_678DD7(); void __cdecl sub_678DE5(); void __cdecl sub_678DF3(); void __cdecl sub_678E01(); void __cdecl sub_678E0F(); void __cdecl sub_678E1D(); void __cdecl sub_678E2B(); void __cdecl sub_678E39(); void __cdecl sub_678E47(); void __cdecl sub_678E55(); void __cdecl sub_678E63(); void __cdecl sub_678E71(); void __cdecl sub_678E7F(); void __cdecl sub_678E8D(); void __cdecl sub_678E9B(); void __cdecl sub_678EA9(); void __cdecl sub_678EB7(); void __cdecl sub_678EC5(); void __cdecl sub_678ED3(); void __cdecl sub_678EE1(); void __cdecl sub_678EEF(); void __cdecl sub_678EFD(); void __cdecl sub_678F0B(); void __cdecl sub_678F19(); void __cdecl sub_678F27(); void __cdecl sub_678F35(); void __cdecl sub_678F43(); void __cdecl sub_678F51(); void __cdecl sub_678F5F(); void __cdecl sub_678F6D(); void __cdecl sub_678F7B(); void __cdecl sub_678F89(); void __cdecl sub_678F97(); void __cdecl sub_678FA5(); void __cdecl sub_678FB3(); void __cdecl sub_678FC1(); void __cdecl sub_678FCF(); void __cdecl sub_678FDD(); void __cdecl sub_678FEB(); void __cdecl sub_678FF9(); void __cdecl sub_679007(); void __cdecl sub_679015(); void __cdecl sub_679023(); void __cdecl sub_679031(); void __cdecl sub_67903F(); void __cdecl sub_67904D(); void __cdecl sub_67905B(); void __cdecl sub_679069(); void __cdecl sub_679077(); void __cdecl sub_679085(); void __cdecl sub_679093(); void __cdecl sub_6790A1(); void __cdecl sub_6790AF(); void __cdecl sub_6790BD(); void __cdecl sub_6790CB(); void __cdecl sub_6790D9(); void __cdecl sub_6790E7(); void __cdecl sub_6790F5(); void __cdecl sub_679103(); void __cdecl sub_679111(); void __cdecl sub_67911F(); void __cdecl sub_67912D(); void __cdecl sub_67913B(); void __cdecl sub_679149(); void __cdecl sub_679157(); void __cdecl sub_679165(); void __cdecl sub_679173(); void __cdecl sub_679181(); void __cdecl sub_67918F(); void __cdecl sub_67919D(); void __cdecl sub_6791AB(); void __cdecl sub_6791B9(); void __cdecl sub_6791C7(); void __cdecl sub_6791D5(); void __cdecl sub_6791E3(); void __cdecl sub_6791F1(); void __cdecl sub_6791FF(); // void __usercall sub_67920D(int a1); // void __usercall sub_67921B(int a1); void __cdecl sub_679229(); void __cdecl sub_679237(); void __cdecl sub_679245(); void __cdecl sub_679253(); void __cdecl sub_679261(); void __cdecl sub_67926F(); void __cdecl sub_67927D(); void __cdecl sub_67928B(); void __cdecl sub_679299(); void __cdecl sub_6792A7(); void __cdecl sub_6792B5(); void __cdecl sub_6792C3(); void __cdecl sub_6792D1(); void __cdecl sub_6792DF(); void __cdecl sub_6792ED(); void __cdecl sub_6792FB(); void __cdecl sub_679309(); // void __usercall sub_679317(int a1); // void __usercall sub_679325(int a1); // void __usercall sub_679333(int a1); // void __usercall sub_679341(int a1); // void __usercall sub_67934F(int a1); // void __usercall sub_67935D(int a1); void __cdecl sub_67936B(); void __cdecl sub_679379(); void __cdecl sub_679387(); void __cdecl sub_679395(); // void __usercall sub_6793A3(int a1); void __cdecl sub_6793B1(); void __cdecl sub_6793BF(); void __cdecl sub_6793CD(); void __cdecl sub_6793DB(); void __cdecl sub_6793E9(); void __cdecl sub_6793F7(); void __cdecl sub_679405(); void __cdecl sub_679413(); void __cdecl sub_679421(); void __cdecl sub_67942F(); // void __usercall sub_67943D(int a1); void __cdecl sub_67944B(); void __cdecl sub_679459(); // void __usercall sub_679467(int a1); void __cdecl sub_679475(); // void __usercall sub_679483(int a1); void __cdecl sub_679491(); void __cdecl sub_67949F(); void __cdecl sub_6794AD(); void __cdecl sub_6794BB(); void __cdecl sub_6794C9(); void __cdecl sub_6794D7(); // void __usercall sub_6794E5(int a1); // void __usercall sub_6794F3(int a1); void __cdecl sub_679501(); void __cdecl sub_67950F(); void __cdecl sub_67951D(); void __cdecl sub_67952B(); void __cdecl sub_679539(); void __cdecl sub_679547(); void __cdecl sub_679555(); void __cdecl sub_679563(); void __cdecl sub_679571(); void __cdecl sub_67957F(); void __cdecl sub_67958D(); void __cdecl sub_67959B(); void __cdecl sub_6795A9(); void __cdecl sub_6795B7(); void __cdecl sub_6795C5(); void __cdecl sub_6795D3(); void __cdecl sub_6795E1(); void __cdecl sub_6795EF(); void __cdecl sub_6795FD(); void __cdecl sub_67960B(); void __cdecl sub_679619(); void __cdecl sub_679627(); void __cdecl sub_679635(); void __cdecl sub_679643(); void __cdecl sub_679651(); void __cdecl sub_67965F(); void __cdecl sub_67966D(); void __cdecl sub_67967B(); void __cdecl sub_679689(); void __cdecl sub_679697(); void __cdecl sub_6796A5(); void __cdecl sub_6796B3(); void __cdecl sub_6796C1(); void __cdecl sub_6796CF(); void __cdecl sub_6796DD(); // void __usercall sub_6796EB(int a1); // void __usercall sub_6796F9(int a1); void __cdecl sub_679707(); void __cdecl sub_679715(); void __cdecl sub_679723(); void __cdecl sub_679731(); // void __usercall sub_67973F(int a1); // void __usercall sub_67974D(int a1); void __cdecl sub_67975B(); void __cdecl sub_679769(); void __cdecl sub_679777(); void __cdecl sub_679785(); void __cdecl sub_679793(); // void __usercall sub_6797A1(int a1); void __cdecl sub_6797AF(); void __cdecl sub_6797BD(); void __cdecl sub_6797CB(); // void __usercall sub_6797D9(int a1); void __cdecl sub_6797E7(); void __cdecl sub_6797F5(); void __cdecl sub_679803(); void __cdecl sub_679811(); void __cdecl sub_67981F(); void __cdecl sub_67982D(); void __cdecl sub_67983B(); // void __usercall sub_679849(int a1); void __cdecl sub_679857(); void __cdecl sub_679865(); void __cdecl sub_679873(); void __cdecl sub_679881(); void __cdecl sub_67988F(); void __cdecl sub_67989D(); // void __usercall sub_6798AB(int a1); // void __usercall sub_6798B9(int a1); // void __usercall sub_6798C7(int a1); void __cdecl sub_6798D5(); void __cdecl sub_6798E3(); void __cdecl sub_6798F1(); void __cdecl sub_6798FF(); // void __usercall sub_67990D(int a1); void __cdecl sub_67991B(); void __cdecl sub_679929(); void __cdecl sub_679937(); void __cdecl sub_679945(); void __cdecl sub_679953(); void __cdecl sub_679961(); void __cdecl sub_67996F(); // void __usercall sub_67997D(int a1); void __cdecl sub_67998B(); void __cdecl sub_679999(); void __cdecl sub_6799A7(); // void __usercall sub_6799B5(int a1); void __cdecl sub_6799C3(); // void __usercall sub_6799D1(int a1); void __cdecl sub_6799DF(); void __cdecl sub_6799ED(); void __cdecl sub_6799FB(); void __cdecl sub_679A09(); void __cdecl sub_679A17(); void __cdecl sub_679A25(); void __cdecl sub_679A33(); void __cdecl sub_679A41(); void __cdecl sub_679A4F(); void __cdecl sub_679A5D(); void __cdecl sub_679A6B(); void __cdecl sub_679A79(); void __cdecl sub_679A87(); void __cdecl sub_679A95(); void __cdecl sub_679AA3(); void __cdecl sub_679AB1(); void __cdecl sub_679ABF(); void __cdecl sub_679ACD(); void __cdecl sub_679ADB(); void __cdecl sub_679AE9(); void __cdecl sub_679AF7(); void __cdecl sub_679B05(); void __cdecl sub_679B13(); void __cdecl sub_679B21(); void __cdecl sub_679B2F(); void __cdecl sub_679B3D(); void __cdecl sub_679B4B(); void __cdecl sub_679B59(); void __cdecl sub_679B67(); void __cdecl sub_679B75(); void __cdecl sub_679B7D(); void __cdecl sub_679B85(); void __cdecl sub_679B8D(); void __cdecl sub_679B95(); void __cdecl sub_679B9D(); void __cdecl sub_679BA5(); void __cdecl sub_679BAD(); void __cdecl sub_679BB5(); void __cdecl sub_679BBD(); void __cdecl sub_679BC5(); void __cdecl sub_679BCD(); void __cdecl sub_679BD5(); void __cdecl sub_679BDD(); void __cdecl sub_679BE5(); void __cdecl sub_679BED(); void __cdecl sub_679BF5(); void __cdecl sub_679BFD(); void __cdecl sub_679C05(); void __cdecl sub_679C0D(); void __cdecl sub_679C15(); void __cdecl sub_679C1D(); void __cdecl sub_679C25(); void __cdecl sub_679C2D(); void __cdecl sub_679C35(); void __cdecl sub_679C3D(); void __cdecl sub_679C45(); void __cdecl sub_679C4D(); void __cdecl sub_679C55(); void __cdecl sub_679C5D(); void __cdecl sub_679C65(); void __cdecl sub_679C6D(); void __cdecl sub_679C75(); void __cdecl sub_679C7D(); void __cdecl sub_679C85(); void __cdecl sub_679C8D(); void __cdecl sub_679C95(); void __cdecl sub_679C9D(); void __cdecl sub_679CA5(); void __cdecl sub_679CAD(); void __cdecl sub_679CB5(); void __cdecl sub_679CBD(); void __cdecl sub_679CC5(); void __cdecl sub_679CCD(); void __cdecl sub_679CD5(); void __cdecl sub_679CDD(); void __cdecl sub_679CE5(); void __cdecl sub_679CED(); void __cdecl sub_679CF5(); void __cdecl sub_679CFD(); void __cdecl sub_679D05(); void __cdecl sub_679D0D(); void __cdecl sub_679D15(); void __cdecl sub_679D1D(); void __cdecl sub_679D25(); void __cdecl sub_679D2D(); void __cdecl sub_679D35(); void __cdecl sub_679D3D(); void __cdecl sub_679D45(); void __cdecl sub_679D4D(); void __cdecl sub_679D55(); void __cdecl sub_679D5D(); void __cdecl sub_679D65(); void __cdecl sub_679D6D(); void __cdecl sub_679D75(); void __cdecl sub_679D7D(); void __cdecl sub_679D85(); void __cdecl sub_679D8D(); void __cdecl sub_679D95(); void __cdecl sub_679D9D(); void __cdecl sub_679DA5(); void __cdecl sub_679DAD(); void __cdecl sub_679DB5(); void __cdecl sub_679DBD(); void __cdecl sub_679DC5(); void __cdecl sub_679DCD(); void __cdecl sub_679DD5(); void __cdecl sub_679DDD(); void __cdecl sub_679DE5(); void __cdecl sub_679DED(); void __cdecl sub_679DF5(); void __cdecl sub_679DFD(); void __cdecl sub_679E05(); void __cdecl sub_679E0D(); void __cdecl sub_679E15(); void __cdecl sub_679E1D(); void __cdecl sub_679E25(); void __cdecl sub_679E2D(); void __cdecl sub_679E35(); void __cdecl sub_679E3D(); void __cdecl sub_679E45(); void __cdecl sub_679E4D(); void __cdecl sub_679E55(); void __cdecl sub_679E5D(); void __cdecl sub_679E65(); void __cdecl sub_679E6D(); void __cdecl sub_679E75(); void __cdecl sub_679E7D(); void __cdecl sub_679E85(); void __cdecl sub_679E8D(); void __cdecl sub_679E95(); void __cdecl sub_679E9D(); void __cdecl sub_679EA5(); void __cdecl sub_679EAD(); void __cdecl sub_679EB5(); void __cdecl sub_679EBD(); void __cdecl sub_679EC5(); void __cdecl sub_679ECD(); void __cdecl sub_679ED5(); void __cdecl sub_679EDD(); void __cdecl sub_679EE5(); void __cdecl sub_679EED(); void __cdecl sub_679EF5(); void __cdecl sub_679EFD(); void __cdecl sub_679F05(); void __cdecl sub_679F0D(); void __cdecl sub_679F15(); void __cdecl sub_679F1D(); void __cdecl sub_679F25(); void __cdecl sub_679F2D(); void __cdecl sub_679F35(); void __cdecl sub_679F3D(); void __cdecl sub_679F45(); void __cdecl sub_679F4D(); void __cdecl sub_679F55(); void __cdecl sub_679F5D(); void __cdecl sub_679F65(); void __cdecl sub_679F6D(); void __cdecl sub_679F75(); void __cdecl sub_679F7D(); void __cdecl sub_679F85(); void __cdecl sub_679F8D(); void __cdecl sub_679F95(); void __cdecl sub_679F9D(); void __cdecl sub_679FA5(); void __cdecl sub_679FAD(); void __cdecl sub_679FB5(); void __cdecl sub_679FBD(); void __cdecl sub_679FC5(); void __cdecl sub_679FCD(); void __cdecl sub_679FD5(); void __cdecl sub_679FDD(); void __cdecl sub_679FE5(); void __cdecl sub_679FED(); void __cdecl sub_679FF5(); void __cdecl sub_679FFD(); void __cdecl sub_67A005(); void __cdecl sub_67A00D(); void __cdecl sub_67A015(); void __cdecl sub_67A01D(); void __cdecl sub_67A025(); void __cdecl sub_67A02D(); void __cdecl sub_67A035(); void __cdecl sub_67A03D(); void __cdecl sub_67A045(); void __cdecl sub_67A04D(); void __cdecl sub_67A055(); void __cdecl sub_67A05D(); void __cdecl sub_67A065(); void __cdecl sub_67A06D(); void __cdecl sub_67A075(); void __cdecl sub_67A07D(); void __cdecl sub_67A085(); void __cdecl sub_67A08D(); void __cdecl sub_67A095(); void __cdecl sub_67A09D(); void __cdecl sub_67A0A5(); void __cdecl sub_67A0AD(); void __cdecl sub_67A0B5(); void __cdecl sub_67A0BD(); void __cdecl sub_67A0C5(); void __cdecl sub_67A0CD(); void __cdecl sub_67A0D5(); void __cdecl sub_67A0DD(); void __cdecl sub_67A0E5(); void __cdecl sub_67A0ED(); void __cdecl sub_67A0F5(); void __cdecl sub_67A0FD(); void __cdecl sub_67A105(); void __cdecl sub_67A10D(); void __cdecl sub_67A115(); void __cdecl sub_67A11D(); void __cdecl sub_67A125(); void __cdecl sub_67A12D(); void __cdecl sub_67A135(); void __cdecl sub_67A13D(); void __cdecl sub_67A145(); int __cdecl sub_67A14D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A170(int a1); // int __usercall sub_67A178(int a1); // int __usercall sub_67A180(int a1); int __cdecl sub_67A188(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A1B0(int a1); // int __usercall sub_67A1B8(int a1); int __cdecl sub_67A1C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67A1E0(int a1); void __cdecl sub_67A1E8(); void __cdecl sub_67A1F3(); void __cdecl sub_67A1FE(); void __cdecl sub_67A209(); void __cdecl sub_67A214(); void __cdecl sub_67A21F(); void __cdecl sub_67A22A(); void __cdecl sub_67A235(); void __cdecl sub_67A240(); void __cdecl sub_67A24B(); void __cdecl sub_67A256(); void __cdecl sub_67A261(); void __cdecl sub_67A26C(); void __cdecl sub_67A277(); void __cdecl sub_67A282(); void __cdecl sub_67A28D(); void __cdecl sub_67A298(); void __cdecl sub_67A2A3(); void __cdecl sub_67A2AE(); void __cdecl sub_67A2B9(); void __cdecl sub_67A2C4(); void __cdecl sub_67A2CF(); void __cdecl sub_67A2DA(); void __cdecl sub_67A2E5(); void __cdecl sub_67A2F0(); void __cdecl sub_67A2FB(); void __cdecl sub_67A306(); void __cdecl sub_67A311(); void __cdecl sub_67A31C(); void __cdecl sub_67A327(); void __cdecl sub_67A332(); void __cdecl sub_67A33D(); void __cdecl sub_67A34B(); void __cdecl sub_67A359(); void __cdecl sub_67A367(); void __cdecl sub_67A375(); void __cdecl sub_67A383(); void __cdecl sub_67A391(); void __cdecl sub_67A39F(); void __cdecl sub_67A3AD(); void __cdecl sub_67A3BB(); void __cdecl sub_67A3C9(); void __cdecl sub_67A3D7(); void __cdecl sub_67A3E5(); void __cdecl sub_67A3F3(); void __cdecl sub_67A401(); void __cdecl sub_67A40F(); void __cdecl sub_67A41D(); void __cdecl sub_67A42B(); void __cdecl sub_67A439(); void __cdecl sub_67A447(); void __cdecl sub_67A455(); void __cdecl sub_67A463(); void __cdecl sub_67A471(); void __cdecl sub_67A47F(); void __cdecl sub_67A48D(); void __cdecl sub_67A49B(); void __cdecl sub_67A4A9(); void __cdecl sub_67A4B7(); void __cdecl sub_67A4C5(); void __cdecl sub_67A4D3(); void __cdecl sub_67A4E1(); void __cdecl sub_67A4EF(); void __cdecl sub_67A4FD(); void __cdecl sub_67A50B(); void __cdecl sub_67A519(); void __cdecl sub_67A527(); void __cdecl sub_67A535(); void __cdecl sub_67A543(); void __cdecl sub_67A551(); void __cdecl sub_67A55F(); void __cdecl sub_67A56D(); void __cdecl sub_67A57B(); void __cdecl sub_67A589(); void __cdecl sub_67A597(); void __cdecl sub_67A5A5(); void __cdecl sub_67A5B3(); void __cdecl sub_67A5C1(); void __cdecl sub_67A5CF(); void __cdecl sub_67A5DD(); void __cdecl sub_67A5EB(); void __cdecl sub_67A5F9(); void __cdecl sub_67A607(); void __cdecl sub_67A615(); void __cdecl sub_67A623(); void __cdecl sub_67A631(); void __cdecl sub_67A63F(); void __cdecl sub_67A64D(); void __cdecl sub_67A65B(); void __cdecl sub_67A669(); void __cdecl sub_67A677(); void __cdecl sub_67A685(); void __cdecl sub_67A693(); void __cdecl sub_67A6A1(); void __cdecl sub_67A6AF(); void __cdecl sub_67A6BD(); void __cdecl sub_67A6CB(); void __cdecl sub_67A6D9(); void __cdecl sub_67A6E7(); void __cdecl sub_67A6F5(); void __cdecl sub_67A703(); void __cdecl sub_67A711(); void __cdecl sub_67A71F(); void __cdecl sub_67A72D(); int __cdecl sub_67A73B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67A760(); int __cdecl sub_67A76B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A790(int a1); // int __usercall sub_67A7C0(int a1); int __cdecl sub_67A7C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A7F0(int a1); // int __usercall sub_67A7FB(int a1); // void __usercall sub_67A806(int a1); int __cdecl sub_67A811(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67A840(); int __cdecl sub_67A848(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67A870(); // void __usercall sub_67A878(int a1); void __cdecl sub_67A883(); void __cdecl sub_67A88E(); int __cdecl sub_67A896(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A8C0(int a1); // int __usercall sub_67A8C8(int a1); // int __usercall sub_67A8D0(int a1); // int __usercall sub_67A8D8(int a1); int __cdecl sub_67A8E0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A900(int a1); int __cdecl sub_67A908(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A930(int a1); // int __usercall sub_67A938(int a1); // void __usercall sub_67A940(int a1); // void __usercall sub_67A948(int a1); int __cdecl sub_67A950(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A970(int a1); void __cdecl sub_67A97B(); // void __usercall sub_67A983(int a1); void __cdecl sub_67A98E(); void __cdecl sub_67A999(); void __cdecl sub_67A9A1(); int __cdecl sub_67A9A9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67A9E0(int a1); void __cdecl sub_67A9E8(); int __cdecl sub_67A9F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67AA10(int a1); // void __usercall sub_67AA18(int a1); int __cdecl sub_67AA20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67AA40(int a1); // int __usercall sub_67AA70(int a1); // int __usercall sub_67AA7B(int a1); void __cdecl sub_67AA86(); int __cdecl sub_67AA91(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67AAC0(int a1); // void __usercall sub_67AACB(int a1); // int __usercall sub_67AAD6(int a1); // void __usercall sub_67AAE1(int a1); int __cdecl sub_67AAEC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67AB20(int a1); int __cdecl sub_67AB33(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67AB80(int a1); // int __usercall sub_67AB8B(int a1); // int __usercall sub_67AB96(int a1); // int __usercall sub_67ABA1(int a1); int __cdecl sub_67ABAC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67ABE0(int a1); // int __usercall sub_67ABEB(int a1); int __cdecl sub_67ABF6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67AC20(int a1); int __cdecl sub_67AC28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67AC50(int a1); // void __usercall sub_67AC5B(int a1); int __cdecl sub_67AC66(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67AC90(int a1); // void __usercall sub_67AC9B(int a1); int __cdecl sub_67ACA6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67ACD0(int a1); // void __usercall sub_67ACDB(int a1); int __cdecl sub_67ACE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67AD10(); void __cdecl sub_67AD18(); // void __usercall sub_67AD20(int a1); void __cdecl sub_67AD2B(); void __cdecl sub_67AD36(); void __cdecl sub_67AD41(); void __cdecl sub_67AD4C(); void __cdecl sub_67AD57(); void __cdecl sub_67AD62(); void __cdecl sub_67AD6D(); void __cdecl sub_67AD78(); void __cdecl sub_67AD83(); void __cdecl sub_67AD91(); void __cdecl sub_67AD9F(); void __cdecl sub_67ADAD(); void __cdecl sub_67ADBB(); void __cdecl sub_67ADC9(); void __cdecl sub_67ADD7(); void __cdecl sub_67ADE5(); void __cdecl sub_67ADF3(); void __cdecl sub_67AE01(); void __cdecl sub_67AE0F(); void __cdecl sub_67AE1D(); void __cdecl sub_67AE2B(); void __cdecl sub_67AE39(); // void __usercall sub_67AE41(int a1); void __cdecl sub_67AE4F(); void __cdecl sub_67AE5D(); // void __usercall sub_67AE65(int a1); void __cdecl sub_67AE73(); void __cdecl sub_67AE81(); void __cdecl sub_67AE8F(); void __cdecl sub_67AE9D(); void __cdecl sub_67AEAB(); void __cdecl sub_67AEB9(); void __cdecl sub_67AEC7(); void __cdecl sub_67AED5(); void __cdecl sub_67AEE3(); void __cdecl sub_67AEF1(); void __cdecl sub_67AEFF(); void __cdecl sub_67AF0D(); void __cdecl sub_67AF1B(); void __cdecl sub_67AF29(); void __cdecl sub_67AF37(); void __cdecl sub_67AF45(); void __cdecl sub_67AF53(); void __cdecl sub_67AF61(); void __cdecl sub_67AF6F(); void __cdecl sub_67AF7D(); void __cdecl sub_67AF8B(); // void __usercall sub_67AF93(int a1); void __cdecl sub_67AFA1(); void __cdecl sub_67AFAF(); void __cdecl sub_67AFBD(); void __cdecl sub_67AFCB(); void __cdecl sub_67AFD9(); void __cdecl sub_67AFE7(); void __cdecl sub_67AFF5(); void __cdecl sub_67B003(); void __cdecl sub_67B011(); void __cdecl sub_67B01F(); void __cdecl sub_67B02D(); void __cdecl sub_67B03B(); void __cdecl sub_67B049(); void __cdecl sub_67B057(); void __cdecl sub_67B065(); // void __usercall sub_67B06D(int a1); void __cdecl sub_67B07B(); void __cdecl sub_67B089(); void __cdecl sub_67B097(); void __cdecl sub_67B0A5(); void __cdecl sub_67B0B3(); void __cdecl sub_67B0C1(); void __cdecl sub_67B0CF(); void __cdecl sub_67B0DD(); // void __usercall sub_67B0E5(int a1); void __cdecl sub_67B0F3(); void __cdecl sub_67B101(); // void __usercall sub_67B109(int a1); void __cdecl sub_67B117(); void __cdecl sub_67B125(); void __cdecl sub_67B133(); void __cdecl sub_67B141(); void __cdecl sub_67B14F(); void __cdecl sub_67B15D(); void __cdecl sub_67B16B(); void __cdecl sub_67B179(); // void __usercall sub_67B181(int a1); void __cdecl sub_67B18F(); void __cdecl sub_67B19D(); void __cdecl sub_67B1AB(); // void __usercall sub_67B1B3(int a1); void __cdecl sub_67B1C1(); void __cdecl sub_67B1CF(); void __cdecl sub_67B1DD(); void __cdecl sub_67B1EB(); // void __usercall sub_67B1F3(int a1); void __cdecl sub_67B201(); void __cdecl sub_67B20F(); void __cdecl sub_67B21D(); void __cdecl sub_67B22B(); void __cdecl sub_67B239(); void __cdecl sub_67B247(); void __cdecl sub_67B255(); void __cdecl sub_67B263(); void __cdecl sub_67B271(); void __cdecl sub_67B27F(); void __cdecl sub_67B28D(); void __cdecl sub_67B29B(); void __cdecl sub_67B2A9(); void __cdecl sub_67B2B7(); void __cdecl sub_67B2C5(); void __cdecl sub_67B2D3(); void __cdecl sub_67B2E1(); void __cdecl sub_67B2EF(); // void __usercall sub_67B2F7(int a1); void __cdecl sub_67B305(); void __cdecl sub_67B313(); void __cdecl sub_67B321(); // void __usercall sub_67B329(int a1); void __cdecl sub_67B337(); void __cdecl sub_67B345(); void __cdecl sub_67B353(); void __cdecl sub_67B361(); void __cdecl sub_67B36F(); void __cdecl sub_67B37D(); // void __usercall sub_67B385(int a1); void __cdecl sub_67B393(); void __cdecl sub_67B3A1(); void __cdecl sub_67B3AF(); void __cdecl sub_67B3BD(); void __cdecl sub_67B3CB(); void __cdecl sub_67B3D9(); void __cdecl sub_67B3E7(); // void __usercall sub_67B3EF(int a1); void __cdecl sub_67B3FD(); void __cdecl sub_67B40B(); void __cdecl sub_67B419(); void __cdecl sub_67B427(); void __cdecl sub_67B435(); void __cdecl sub_67B443(); void __cdecl sub_67B451(); void __cdecl sub_67B45F(); void __cdecl sub_67B46D(); void __cdecl sub_67B47B(); void __cdecl sub_67B489(); void __cdecl sub_67B497(); void __cdecl sub_67B4A5(); void __cdecl sub_67B4B3(); void __cdecl sub_67B4C1(); void __cdecl sub_67B4CF(); void __cdecl sub_67B4DD(); void __cdecl sub_67B4EB(); void __cdecl sub_67B4F9(); void __cdecl sub_67B507(); void __cdecl sub_67B515(); void __cdecl sub_67B523(); void __cdecl sub_67B531(); void __cdecl sub_67B53F(); void __cdecl sub_67B54D(); // void __usercall sub_67B555(int a1); void __cdecl sub_67B563(); // void __usercall sub_67B56B(int a1); void __cdecl sub_67B579(); // void __usercall sub_67B581(int a1); void __cdecl sub_67B58F(); // void __usercall sub_67B597(int a1); void __cdecl sub_67B5A5(); // void __usercall sub_67B5AD(int a1); void __cdecl sub_67B5BB(); // void __usercall sub_67B5C3(int a1); void __cdecl sub_67B5D1(); // void __usercall sub_67B5D9(int a1); void __cdecl sub_67B5E7(); // void __usercall sub_67B5EF(int a1); void __cdecl sub_67B5FD(); // void __usercall sub_67B605(int a1); void __cdecl sub_67B613(); // void __usercall sub_67B61B(int a1); void __cdecl sub_67B629(); void __cdecl sub_67B637(); void __cdecl sub_67B645(); void __cdecl sub_67B653(); void __cdecl sub_67B661(); void __cdecl sub_67B66F(); void __cdecl sub_67B67D(); void __cdecl sub_67B68B(); void __cdecl sub_67B699(); void __cdecl sub_67B6A7(); void __cdecl sub_67B6B5(); void __cdecl sub_67B6C3(); void __cdecl sub_67B6D1(); void __cdecl sub_67B6DF(); void __cdecl sub_67B6ED(); void __cdecl sub_67B6FB(); void __cdecl sub_67B709(); void __cdecl sub_67B717(); void __cdecl sub_67B725(); void __cdecl sub_67B733(); void __cdecl sub_67B741(); void __cdecl sub_67B74F(); void __cdecl sub_67B75D(); // void __usercall sub_67B765(int a1); void __cdecl sub_67B773(); // void __usercall sub_67B77B(int a1); void __cdecl sub_67B789(); // void __usercall sub_67B791(int a1); void __cdecl sub_67B79F(); // void __usercall sub_67B7A7(int a1); void __cdecl sub_67B7B5(); // void __usercall sub_67B7BD(int a1); void __cdecl sub_67B7CB(); // void __usercall sub_67B7D3(int a1); void __cdecl sub_67B7E1(); // void __usercall sub_67B7E9(int a1); void __cdecl sub_67B7F7(); // void __usercall sub_67B7FF(int a1); void __cdecl sub_67B80D(); // void __usercall sub_67B815(int a1); void __cdecl sub_67B823(); // void __usercall sub_67B82B(int a1); void __cdecl sub_67B839(); // void __usercall sub_67B841(int a1); void __cdecl sub_67B84F(); // void __usercall sub_67B857(int a1); void __cdecl sub_67B865(); // void __usercall sub_67B86D(int a1); void __cdecl sub_67B87B(); // void __usercall sub_67B883(int a1); void __cdecl sub_67B891(); // void __usercall sub_67B899(int a1); void __cdecl sub_67B8A7(); // void __usercall sub_67B8AF(int a1); void __cdecl sub_67B8BD(); // void __usercall sub_67B8C5(int a1); void __cdecl sub_67B8D3(); // void __usercall sub_67B8DB(int a1); void __cdecl sub_67B8E9(); // void __usercall sub_67B8F1(int a1); void __cdecl sub_67B8FF(); // void __usercall sub_67B907(int a1); void __cdecl sub_67B915(); // void __usercall sub_67B91D(int a1); void __cdecl sub_67B92B(); // void __usercall sub_67B933(int a1); void __cdecl sub_67B941(); // void __usercall sub_67B949(int a1); void __cdecl sub_67B957(); // void __usercall sub_67B95F(int a1); void __cdecl sub_67B96D(); // void __usercall sub_67B975(int a1); void __cdecl sub_67B983(); void __cdecl sub_67B991(); void __cdecl sub_67B99F(); void __cdecl sub_67B9AD(); void __cdecl sub_67B9BB(); void __cdecl sub_67B9C9(); void __cdecl sub_67B9D7(); void __cdecl sub_67B9E5(); // void __usercall sub_67B9ED(int a1); void __cdecl sub_67B9FB(); // void __usercall sub_67BA03(int a1); void __cdecl sub_67BA11(); // void __usercall sub_67BA19(int a1); void __cdecl sub_67BA27(); // void __usercall sub_67BA2F(int a1); void __cdecl sub_67BA3D(); // void __usercall sub_67BA45(int a1); void __cdecl sub_67BA53(); // void __usercall sub_67BA5B(int a1); void __cdecl sub_67BA69(); // void __usercall sub_67BA71(int a1); void __cdecl sub_67BA7F(); // void __usercall sub_67BA87(int a1); void __cdecl sub_67BA95(); // void __usercall sub_67BA9D(int a1); void __cdecl sub_67BAAB(); // void __usercall sub_67BAB3(int a1); void __cdecl sub_67BAC1(); // void __usercall sub_67BAC9(int a1); void __cdecl sub_67BAD7(); void __cdecl sub_67BAE5(); void __cdecl sub_67BAF3(); void __cdecl sub_67BB01(); void __cdecl sub_67BB0F(); void __cdecl sub_67BB1D(); void __cdecl sub_67BB2B(); void __cdecl sub_67BB39(); void __cdecl sub_67BB47(); void __cdecl sub_67BB55(); void __cdecl sub_67BB63(); void __cdecl sub_67BB71(); void __cdecl sub_67BB7F(); void __cdecl sub_67BB8D(); void __cdecl sub_67BB9B(); void __cdecl sub_67BBA9(); void __cdecl sub_67BBB7(); void __cdecl sub_67BBC5(); void __cdecl sub_67BBD3(); void __cdecl sub_67BBE1(); void __cdecl sub_67BBEF(); void __cdecl sub_67BBFD(); void __cdecl sub_67BC0B(); void __cdecl sub_67BC19(); void __cdecl sub_67BC27(); void __cdecl sub_67BC35(); void __cdecl sub_67BC43(); void __cdecl sub_67BC51(); void __cdecl sub_67BC5F(); void __cdecl sub_67BC6D(); void __cdecl sub_67BC7B(); void __cdecl sub_67BC89(); void __cdecl sub_67BC97(); void __cdecl sub_67BCA5(); void __cdecl sub_67BCB3(); void __cdecl sub_67BCC1(); void __cdecl sub_67BCCF(); void __cdecl sub_67BCDD(); void __cdecl sub_67BCEB(); void __cdecl sub_67BCF9(); void __cdecl sub_67BD07(); void __cdecl sub_67BD15(); void __cdecl sub_67BD23(); void __cdecl sub_67BD31(); void __cdecl sub_67BD3F(); void __cdecl sub_67BD4D(); void __cdecl sub_67BD5B(); void __cdecl sub_67BD69(); void __cdecl sub_67BD77(); void __cdecl sub_67BD85(); void __cdecl sub_67BD93(); void __cdecl sub_67BDA1(); void __cdecl sub_67BDAF(); void __cdecl sub_67BDBD(); void __cdecl sub_67BDCB(); void __cdecl sub_67BDD9(); void __cdecl sub_67BDE7(); void __cdecl sub_67BDF5(); void __cdecl sub_67BE03(); void __cdecl sub_67BE11(); void __cdecl sub_67BE1F(); void __cdecl sub_67BE2D(); void __cdecl sub_67BE3B(); void __cdecl sub_67BE49(); void __cdecl sub_67BE57(); void __cdecl sub_67BE65(); void __cdecl sub_67BE73(); void __cdecl sub_67BE81(); void __cdecl sub_67BE8F(); void __cdecl sub_67BE9D(); void __cdecl sub_67BEAB(); void __cdecl sub_67BEB9(); void __cdecl sub_67BEC7(); void __cdecl sub_67BED5(); void __cdecl sub_67BEE3(); void __cdecl sub_67BEF1(); void __cdecl sub_67BEFF(); void __cdecl sub_67BF0D(); void __cdecl sub_67BF1B(); void __cdecl sub_67BF29(); // void __usercall sub_67BF31(int a1); void __cdecl sub_67BF3F(); // void __usercall sub_67BF47(int a1); void __cdecl sub_67BF55(); // void __usercall sub_67BF5D(int a1); void __cdecl sub_67BF6B(); // void __usercall sub_67BF73(int a1); void __cdecl sub_67BF81(); // void __usercall sub_67BF89(int a1); void __cdecl sub_67BF97(); // void __usercall sub_67BF9F(int a1); void __cdecl sub_67BFAD(); // void __usercall sub_67BFB5(int a1); void __cdecl sub_67BFC3(); // void __usercall sub_67BFCB(int a1); void __cdecl sub_67BFD9(); // void __usercall sub_67BFE1(int a1); void __cdecl sub_67BFEF(); // void __usercall sub_67BFF7(int a1); void __cdecl sub_67C005(); // void __usercall sub_67C00D(int a1); void __cdecl sub_67C01B(); // void __usercall sub_67C023(int a1); void __cdecl sub_67C031(); // void __usercall sub_67C039(int a1); void __cdecl sub_67C047(); // void __usercall sub_67C04F(int a1); void __cdecl sub_67C05D(); // void __usercall sub_67C065(int a1); void __cdecl sub_67C073(); // void __usercall sub_67C07B(int a1); void __cdecl sub_67C089(); // void __usercall sub_67C091(int a1); void __cdecl sub_67C09F(); // void __usercall sub_67C0A7(int a1); void __cdecl sub_67C0B5(); // void __usercall sub_67C0BD(int a1); void __cdecl sub_67C0CB(); // void __usercall sub_67C0D3(int a1); void __cdecl sub_67C0E1(); // void __usercall sub_67C0E9(int a1); void __cdecl sub_67C0F7(); // void __usercall sub_67C0FF(int a1); void __cdecl sub_67C10D(); // void __usercall sub_67C115(int a1); void __cdecl sub_67C123(); // void __usercall sub_67C12B(int a1); void __cdecl sub_67C139(); // void __usercall sub_67C141(int a1); void __cdecl sub_67C14F(); // void __usercall sub_67C157(int a1); void __cdecl sub_67C165(); // void __usercall sub_67C16D(int a1); void __cdecl sub_67C17B(); // void __usercall sub_67C183(int a1); void __cdecl sub_67C191(); // void __usercall sub_67C199(int a1); void __cdecl sub_67C1A7(); // void __usercall sub_67C1AF(int a1); void __cdecl sub_67C1BD(); // void __usercall sub_67C1C5(int a1); void __cdecl sub_67C1D3(); // void __usercall sub_67C1DB(int a1); void __cdecl sub_67C1E9(); // void __usercall sub_67C1F1(int a1); void __cdecl sub_67C1FF(); // void __usercall sub_67C207(int a1); void __cdecl sub_67C215(); // void __usercall sub_67C21D(int a1); void __cdecl sub_67C22B(); // void __usercall sub_67C233(int a1); void __cdecl sub_67C241(); // void __usercall sub_67C249(int a1); void __cdecl sub_67C257(); // void __usercall sub_67C25F(int a1); void __cdecl sub_67C26D(); // void __usercall sub_67C275(int a1); void __cdecl sub_67C283(); // void __usercall sub_67C28B(int a1); void __cdecl sub_67C299(); // void __usercall sub_67C2A1(int a1); void __cdecl sub_67C2AF(); // void __usercall sub_67C2B7(int a1); void __cdecl sub_67C2C5(); // void __usercall sub_67C2CD(int a1); void __cdecl sub_67C2DB(); // void __usercall sub_67C2E3(int a1); void __cdecl sub_67C2F1(); // void __usercall sub_67C2F9(int a1); void __cdecl sub_67C307(); // void __usercall sub_67C30F(int a1); void __cdecl sub_67C31D(); // void __usercall sub_67C325(int a1); void __cdecl sub_67C333(); // void __usercall sub_67C33B(int a1); void __cdecl sub_67C349(); // void __usercall sub_67C351(int a1); void __cdecl sub_67C35F(); // void __usercall sub_67C367(int a1); void __cdecl sub_67C375(); // void __usercall sub_67C37D(int a1); void __cdecl sub_67C38B(); // void __usercall sub_67C393(int a1); void __cdecl sub_67C3A1(); void __cdecl sub_67C3AF(); void __cdecl sub_67C3BD(); void __cdecl sub_67C3CB(); void __cdecl sub_67C3D9(); void __cdecl sub_67C3E7(); // void __usercall sub_67C3EF(int a1); void __cdecl sub_67C3FD(); void __cdecl sub_67C40B(); void __cdecl sub_67C419(); void __cdecl sub_67C427(); void __cdecl sub_67C435(); void __cdecl sub_67C443(); void __cdecl sub_67C451(); // void __usercall sub_67C459(int a1); void __cdecl sub_67C467(); // void __usercall sub_67C46F(int a1); void __cdecl sub_67C47D(); void __cdecl sub_67C48B(); void __cdecl sub_67C499(); void __cdecl sub_67C4A7(); void __cdecl sub_67C4B5(); void __cdecl sub_67C4C3(); void __cdecl sub_67C4D1(); void __cdecl sub_67C4DF(); void __cdecl sub_67C4ED(); void __cdecl sub_67C4FB(); void __cdecl sub_67C509(); void __cdecl sub_67C517(); void __cdecl sub_67C525(); void __cdecl sub_67C533(); void __cdecl sub_67C541(); void __cdecl sub_67C54F(); void __cdecl sub_67C55D(); void __cdecl sub_67C56B(); void __cdecl sub_67C579(); void __cdecl sub_67C587(); void __cdecl sub_67C595(); void __cdecl sub_67C5A3(); void __cdecl sub_67C5B1(); // void __usercall sub_67C5B9(int a1); void __cdecl sub_67C5C7(); void __cdecl sub_67C5D5(); void __cdecl sub_67C5E3(); void __cdecl sub_67C5F1(); void __cdecl sub_67C5FF(); // void __usercall sub_67C607(int a1); void __cdecl sub_67C615(); void __cdecl sub_67C623(); void __cdecl sub_67C631(); void __cdecl sub_67C63F(); void __cdecl sub_67C64D(); void __cdecl sub_67C65B(); void __cdecl sub_67C669(); // void __usercall sub_67C671(int a1); void __cdecl sub_67C67F(); void __cdecl sub_67C68D(); void __cdecl sub_67C69B(); // void __usercall sub_67C6A3(int a1); void __cdecl sub_67C6B1(); void __cdecl sub_67C6BF(); void __cdecl sub_67C6CD(); void __cdecl sub_67C6DB(); void __cdecl sub_67C6E9(); void __cdecl sub_67C6F7(); void __cdecl sub_67C705(); void __cdecl sub_67C713(); void __cdecl sub_67C721(); // void __usercall sub_67C729(int a1); void __cdecl sub_67C737(); // void __usercall sub_67C73F(int a1); void __cdecl sub_67C74D(); void __cdecl sub_67C75B(); // void __usercall sub_67C763(int a1); void __cdecl sub_67C771(); void __cdecl sub_67C77F(); void __cdecl sub_67C78D(); void __cdecl sub_67C79B(); void __cdecl sub_67C7A9(); void __cdecl sub_67C7B7(); void __cdecl sub_67C7C5(); void __cdecl sub_67C7D3(); void __cdecl sub_67C7E1(); void __cdecl sub_67C7EF(); void __cdecl sub_67C7FD(); void __cdecl sub_67C80B(); void __cdecl sub_67C819(); void __cdecl sub_67C827(); void __cdecl sub_67C835(); void __cdecl sub_67C843(); void __cdecl sub_67C851(); void __cdecl sub_67C85F(); void __cdecl sub_67C86D(); void __cdecl sub_67C87B(); void __cdecl sub_67C889(); void __cdecl sub_67C897(); void __cdecl sub_67C8A5(); void __cdecl sub_67C8B3(); void __cdecl sub_67C8C1(); void __cdecl sub_67C8CF(); // void __usercall sub_67C8D7(int a1); void __cdecl sub_67C8E5(); void __cdecl sub_67C8F3(); // void __usercall sub_67C8FB(int a1); void __cdecl sub_67C909(); void __cdecl sub_67C917(); void __cdecl sub_67C925(); void __cdecl sub_67C933(); void __cdecl sub_67C941(); void __cdecl sub_67C94F(); void __cdecl sub_67C95D(); void __cdecl sub_67C96B(); // void __usercall sub_67C973(int a1); void __cdecl sub_67C981(); void __cdecl sub_67C98F(); void __cdecl sub_67C99D(); void __cdecl sub_67C9AB(); void __cdecl sub_67C9B9(); void __cdecl sub_67C9C7(); void __cdecl sub_67C9D5(); void __cdecl sub_67C9E3(); void __cdecl sub_67C9F1(); void __cdecl sub_67C9FF(); void __cdecl sub_67CA0D(); void __cdecl sub_67CA1B(); void __cdecl sub_67CA29(); void __cdecl sub_67CA37(); void __cdecl sub_67CA45(); void __cdecl sub_67CA53(); void __cdecl sub_67CA61(); void __cdecl sub_67CA6F(); void __cdecl sub_67CA7D(); void __cdecl sub_67CA8B(); void __cdecl sub_67CA99(); void __cdecl sub_67CAA7(); void __cdecl sub_67CAB5(); void __cdecl sub_67CAC3(); // void __usercall sub_67CACB(int a1); void __cdecl sub_67CAD9(); // void __usercall sub_67CAE1(int a1); void __cdecl sub_67CAEF(); // void __usercall sub_67CAF7(int a1); void __cdecl sub_67CB05(); // void __usercall sub_67CB0D(int a1); void __cdecl sub_67CB1B(); void __cdecl sub_67CB29(); void __cdecl sub_67CB37(); // void __usercall sub_67CB3F(int a1); void __cdecl sub_67CB4D(); // void __usercall sub_67CB55(int a1); void __cdecl sub_67CB63(); // void __usercall sub_67CB6B(int a1); void __cdecl sub_67CB79(); // void __usercall sub_67CB81(int a1); void __cdecl sub_67CB8F(); void __cdecl sub_67CB9D(); void __cdecl sub_67CBAB(); void __cdecl sub_67CBB9(); void __cdecl sub_67CBC7(); void __cdecl sub_67CBD5(); void __cdecl sub_67CBE3(); // void __usercall sub_67CBEB(int a1); void __cdecl sub_67CBF9(); void __cdecl sub_67CC07(); void __cdecl sub_67CC15(); void __cdecl sub_67CC23(); void __cdecl sub_67CC31(); void __cdecl sub_67CC3F(); void __cdecl sub_67CC4D(); // void __usercall sub_67CC55(int a1); void __cdecl sub_67CC63(); void __cdecl sub_67CC71(); void __cdecl sub_67CC7F(); void __cdecl sub_67CC8D(); void __cdecl sub_67CC9B(); void __cdecl sub_67CCA9(); void __cdecl sub_67CCB7(); void __cdecl sub_67CCC5(); void __cdecl sub_67CCD3(); void __cdecl sub_67CCE1(); void __cdecl sub_67CCEF(); void __cdecl sub_67CCFD(); void __cdecl sub_67CD0B(); void __cdecl sub_67CD19(); void __cdecl sub_67CD27(); void __cdecl sub_67CD35(); void __cdecl sub_67CD43(); void __cdecl sub_67CD51(); void __cdecl sub_67CD5F(); void __cdecl sub_67CD6D(); void __cdecl sub_67CD7B(); void __cdecl sub_67CD89(); void __cdecl sub_67CD97(); void __cdecl sub_67CDA5(); void __cdecl sub_67CDB3(); void __cdecl sub_67CDC1(); void __cdecl sub_67CDCF(); void __cdecl sub_67CDDD(); void __cdecl sub_67CDEB(); void __cdecl sub_67CDF9(); void __cdecl sub_67CE07(); void __cdecl sub_67CE15(); void __cdecl sub_67CE23(); void __cdecl sub_67CE31(); void __cdecl sub_67CE3F(); void __cdecl sub_67CE4D(); void __cdecl sub_67CE5B(); void __cdecl sub_67CE69(); // void __usercall sub_67CE71(int a1); void __cdecl sub_67CE7F(); void __cdecl sub_67CE8D(); // void __usercall sub_67CE95(int a1); void __cdecl sub_67CEA3(); void __cdecl sub_67CEB1(); // void __usercall sub_67CEB9(int a1); void __cdecl sub_67CEC7(); void __cdecl sub_67CED5(); void __cdecl sub_67CEE3(); void __cdecl sub_67CEF1(); void __cdecl sub_67CEFF(); void __cdecl sub_67CF0D(); // void __usercall sub_67CF15(int a1); void __cdecl sub_67CF23(); void __cdecl sub_67CF31(); void __cdecl sub_67CF3F(); void __cdecl sub_67CF4D(); // void __usercall sub_67CF55(int a1); void __cdecl sub_67CF63(); void __cdecl sub_67CF71(); void __cdecl sub_67CF7F(); void __cdecl sub_67CF8D(); void __cdecl sub_67CF9B(); void __cdecl sub_67CFA9(); void __cdecl sub_67CFB7(); void __cdecl sub_67CFC5(); void __cdecl sub_67CFD3(); void __cdecl sub_67CFE1(); void __cdecl sub_67CFEF(); // void __usercall sub_67CFF7(int a1); void __cdecl sub_67D005(); // void __usercall sub_67D00D(int a1); void __cdecl sub_67D01B(); void __cdecl sub_67D029(); void __cdecl sub_67D037(); void __cdecl sub_67D045(); void __cdecl sub_67D053(); void __cdecl sub_67D061(); // void __usercall sub_67D069(int a1); void __cdecl sub_67D077(); void __cdecl sub_67D085(); void __cdecl sub_67D093(); void __cdecl sub_67D0A1(); void __cdecl sub_67D0AF(); void __cdecl sub_67D0BD(); void __cdecl sub_67D0CB(); void __cdecl sub_67D0D9(); void __cdecl sub_67D0E7(); void __cdecl sub_67D0F5(); void __cdecl sub_67D103(); void __cdecl sub_67D111(); void __cdecl sub_67D11F(); void __cdecl sub_67D12D(); void __cdecl sub_67D13B(); // void __usercall sub_67D143(int a1); void __cdecl sub_67D151(); void __cdecl sub_67D15F(); // void __usercall sub_67D167(int a1); void __cdecl sub_67D175(); void __cdecl sub_67D183(); void __cdecl sub_67D191(); void __cdecl sub_67D19F(); void __cdecl sub_67D1AD(); void __cdecl sub_67D1BB(); void __cdecl sub_67D1C9(); void __cdecl sub_67D1D7(); void __cdecl sub_67D1E5(); void __cdecl sub_67D1F3(); void __cdecl sub_67D201(); void __cdecl sub_67D20F(); void __cdecl sub_67D21D(); void __cdecl sub_67D22B(); // void __usercall sub_67D233(int a1); void __cdecl sub_67D241(); // void __usercall sub_67D249(int a1); void __cdecl sub_67D257(); void __cdecl sub_67D265(); void __cdecl sub_67D273(); void __cdecl sub_67D281(); void __cdecl sub_67D28F(); void __cdecl sub_67D29D(); // void __usercall sub_67D2A5(int a1); void __cdecl sub_67D2B3(); // void __usercall sub_67D2BB(int a1); void __cdecl sub_67D2C9(); void __cdecl sub_67D2D7(); void __cdecl sub_67D2E5(); void __cdecl sub_67D2F3(); void __cdecl sub_67D301(); void __cdecl sub_67D30F(); void __cdecl sub_67D31D(); void __cdecl sub_67D32B(); void __cdecl sub_67D339(); // void __usercall sub_67D341(int a1); void __cdecl sub_67D34F(); void __cdecl sub_67D35D(); void __cdecl sub_67D36B(); void __cdecl sub_67D379(); void __cdecl sub_67D387(); void __cdecl sub_67D395(); void __cdecl sub_67D3A3(); void __cdecl sub_67D3B1(); void __cdecl sub_67D3BF(); void __cdecl sub_67D3CD(); void __cdecl sub_67D3DB(); void __cdecl sub_67D3E9(); // void __usercall sub_67D3F1(int a1); void __cdecl sub_67D3FF(); void __cdecl sub_67D40D(); void __cdecl sub_67D41B(); void __cdecl sub_67D429(); // void __usercall sub_67D431(int a1); void __cdecl sub_67D43F(); // void __usercall sub_67D447(int a1); void __cdecl sub_67D455(); void __cdecl sub_67D463(); void __cdecl sub_67D471(); void __cdecl sub_67D47F(); void __cdecl sub_67D48D(); // void __usercall sub_67D495(int a1); void __cdecl sub_67D4A3(); // void __usercall sub_67D4AB(int a1); void __cdecl sub_67D4B9(); void __cdecl sub_67D4C7(); void __cdecl sub_67D4D5(); void __cdecl sub_67D4E3(); void __cdecl sub_67D4F1(); void __cdecl sub_67D4FF(); void __cdecl sub_67D50D(); void __cdecl sub_67D51B(); void __cdecl sub_67D529(); // void __usercall sub_67D531(int a1); void __cdecl sub_67D53F(); void __cdecl sub_67D54D(); // void __usercall sub_67D555(int a1); void __cdecl sub_67D563(); void __cdecl sub_67D571(); // void __usercall sub_67D579(int a1); void __cdecl sub_67D587(); void __cdecl sub_67D595(); void __cdecl sub_67D5A3(); void __cdecl sub_67D5B1(); void __cdecl sub_67D5BF(); void __cdecl sub_67D5CD(); void __cdecl sub_67D5DB(); void __cdecl sub_67D5E9(); void __cdecl sub_67D5F7(); void __cdecl sub_67D605(); void __cdecl sub_67D613(); void __cdecl sub_67D621(); void __cdecl sub_67D62F(); void __cdecl sub_67D63D(); void __cdecl sub_67D64B(); void __cdecl sub_67D659(); void __cdecl sub_67D667(); void __cdecl sub_67D675(); void __cdecl sub_67D683(); void __cdecl sub_67D691(); void __cdecl sub_67D69F(); void __cdecl sub_67D6AD(); void __cdecl sub_67D6BB(); void __cdecl sub_67D6C9(); void __cdecl sub_67D6D7(); void __cdecl sub_67D6E5(); void __cdecl sub_67D6F3(); void __cdecl sub_67D701(); void __cdecl sub_67D70F(); void __cdecl sub_67D71D(); void __cdecl sub_67D72B(); void __cdecl sub_67D739(); void __cdecl sub_67D747(); void __cdecl sub_67D755(); void __cdecl sub_67D763(); void __cdecl sub_67D771(); void __cdecl sub_67D77F(); void __cdecl sub_67D78D(); void __cdecl sub_67D79B(); void __cdecl sub_67D7A9(); void __cdecl sub_67D7B7(); void __cdecl sub_67D7C5(); void __cdecl sub_67D7D3(); void __cdecl sub_67D7E1(); void __cdecl sub_67D7EF(); void __cdecl sub_67D7FD(); void __cdecl sub_67D80B(); void __cdecl sub_67D819(); void __cdecl sub_67D827(); void __cdecl sub_67D835(); void __cdecl sub_67D843(); void __cdecl sub_67D851(); void __cdecl sub_67D85F(); void __cdecl sub_67D86D(); void __cdecl sub_67D87B(); void __cdecl sub_67D889(); void __cdecl sub_67D897(); void __cdecl sub_67D8A5(); void __cdecl sub_67D8B3(); void __cdecl sub_67D8C1(); void __cdecl sub_67D8CF(); void __cdecl sub_67D8DD(); void __cdecl sub_67D8EB(); void __cdecl sub_67D8F9(); void __cdecl sub_67D907(); void __cdecl sub_67D915(); void __cdecl sub_67D923(); void __cdecl sub_67D931(); void __cdecl sub_67D93F(); void __cdecl sub_67D94D(); void __cdecl sub_67D95B(); void __cdecl sub_67D969(); void __cdecl sub_67D977(); void __cdecl sub_67D985(); void __cdecl sub_67D993(); void __cdecl sub_67D9A1(); void __cdecl sub_67D9AF(); void __cdecl sub_67D9BD(); // void __usercall sub_67D9C5(int a1); void __cdecl sub_67D9D3(); // void __usercall sub_67D9DB(int a1); void __cdecl sub_67D9E9(); void __cdecl sub_67D9F7(); void __cdecl sub_67DA05(); void __cdecl sub_67DA13(); void __cdecl sub_67DA21(); void __cdecl sub_67DA2F(); void __cdecl sub_67DA3D(); void __cdecl sub_67DA4B(); void __cdecl sub_67DA59(); void __cdecl sub_67DA67(); void __cdecl sub_67DA75(); void __cdecl sub_67DA83(); void __cdecl sub_67DA91(); void __cdecl sub_67DA9F(); void __cdecl sub_67DAAD(); void __cdecl sub_67DABB(); void __cdecl sub_67DAC9(); void __cdecl sub_67DAD7(); // void __usercall sub_67DADF(int a1); void __cdecl sub_67DAED(); // void __usercall sub_67DAF5(int a1); void __cdecl sub_67DB03(); // void __usercall sub_67DB0B(int a1); void __cdecl sub_67DB19(); // void __usercall sub_67DB21(int a1); void __cdecl sub_67DB2F(); // void __usercall sub_67DB37(int a1); void __cdecl sub_67DB45(); // void __usercall sub_67DB4D(int a1); void __cdecl sub_67DB5B(); void __cdecl sub_67DB69(); void __cdecl sub_67DB77(); void __cdecl sub_67DB85(); void __cdecl sub_67DB93(); // void __usercall sub_67DB9B(int a1); void __cdecl sub_67DBA9(); void __cdecl sub_67DBB7(); void __cdecl sub_67DBC5(); void __cdecl sub_67DBD3(); void __cdecl sub_67DBE1(); void __cdecl sub_67DBEF(); void __cdecl sub_67DBFD(); void __cdecl sub_67DC0B(); void __cdecl sub_67DC19(); void __cdecl sub_67DC27(); void __cdecl sub_67DC35(); // void __usercall sub_67DC3D(int a1); void __cdecl sub_67DC4B(); void __cdecl sub_67DC59(); void __cdecl sub_67DC67(); // void __usercall sub_67DC6F(int a1); void __cdecl sub_67DC7D(); void __cdecl sub_67DC8B(); // void __usercall sub_67DC93(int a1); void __cdecl sub_67DCA1(); void __cdecl sub_67DCAF(); void __cdecl sub_67DCBD(); void __cdecl sub_67DCCB(); void __cdecl sub_67DCD9(); void __cdecl sub_67DCE7(); void __cdecl sub_67DCF5(); // void __usercall sub_67DCFD(int a1); void __cdecl sub_67DD0B(); // void __usercall sub_67DD13(int a1); void __cdecl sub_67DD21(); void __cdecl sub_67DD2F(); void __cdecl sub_67DD3D(); void __cdecl sub_67DD4B(); void __cdecl sub_67DD59(); void __cdecl sub_67DD67(); void __cdecl sub_67DD75(); void __cdecl sub_67DD83(); void __cdecl sub_67DD91(); void __cdecl sub_67DD9F(); void __cdecl sub_67DDAD(); void __cdecl sub_67DDBB(); void __cdecl sub_67DDC9(); void __cdecl sub_67DDD7(); void __cdecl sub_67DDE5(); void __cdecl sub_67DDF3(); void __cdecl sub_67DE01(); void __cdecl sub_67DE0F(); void __cdecl sub_67DE1D(); void __cdecl sub_67DE2B(); void __cdecl sub_67DE39(); void __cdecl sub_67DE47(); void __cdecl sub_67DE55(); void __cdecl sub_67DE63(); void __cdecl sub_67DE71(); void __cdecl sub_67DE7F(); void __cdecl sub_67DE8D(); void __cdecl sub_67DE9B(); void __cdecl sub_67DEA9(); void __cdecl sub_67DEB7(); void __cdecl sub_67DEC5(); void __cdecl sub_67DED3(); void __cdecl sub_67DEE1(); void __cdecl sub_67DEEF(); void __cdecl sub_67DEFD(); void __cdecl sub_67DF0B(); // void __usercall sub_67DF13(int a1); void __cdecl sub_67DF21(); // void __usercall sub_67DF29(int a1); void __cdecl sub_67DF37(); void __cdecl sub_67DF45(); void __cdecl sub_67DF53(); void __cdecl sub_67DF61(); void __cdecl sub_67DF6F(); // void __usercall sub_67DF77(int a1); void __cdecl sub_67DF85(); // void __usercall sub_67DF8D(int a1); void __cdecl sub_67DF9B(); void __cdecl sub_67DFA9(); void __cdecl sub_67DFB7(); void __cdecl sub_67DFC5(); void __cdecl sub_67DFD3(); void __cdecl sub_67DFE1(); // void __usercall sub_67DFE9(int a1); void __cdecl sub_67DFF7(); void __cdecl sub_67E005(); void __cdecl sub_67E013(); void __cdecl sub_67E021(); // void __usercall sub_67E029(int a1); void __cdecl sub_67E037(); void __cdecl sub_67E045(); void __cdecl sub_67E053(); void __cdecl sub_67E061(); void __cdecl sub_67E06F(); void __cdecl sub_67E07D(); void __cdecl sub_67E08B(); void __cdecl sub_67E099(); // void __usercall sub_67E0A1(int a1); void __cdecl sub_67E0AF(); void __cdecl sub_67E0BD(); void __cdecl sub_67E0CB(); void __cdecl sub_67E0D9(); void __cdecl sub_67E0E7(); void __cdecl sub_67E0F5(); void __cdecl sub_67E103(); // void __usercall sub_67E10B(int a1); void __cdecl sub_67E119(); // void __usercall sub_67E121(int a1); void __cdecl sub_67E12F(); // void __usercall sub_67E137(int a1); void __cdecl sub_67E145(); void __cdecl sub_67E153(); void __cdecl sub_67E161(); void __cdecl sub_67E16F(); void __cdecl sub_67E17D(); // void __usercall sub_67E185(int a1); void __cdecl sub_67E193(); void __cdecl sub_67E1A1(); void __cdecl sub_67E1AF(); void __cdecl sub_67E1BD(); void __cdecl sub_67E1CB(); void __cdecl sub_67E1D9(); void __cdecl sub_67E1E7(); void __cdecl sub_67E1F5(); // void __usercall sub_67E1FD(int a1); void __cdecl sub_67E20B(); void __cdecl sub_67E219(); void __cdecl sub_67E227(); void __cdecl sub_67E235(); // void __usercall sub_67E23D(int a1); void __cdecl sub_67E24B(); void __cdecl sub_67E259(); // void __usercall sub_67E261(int a1); void __cdecl sub_67E26F(); void __cdecl sub_67E27D(); void __cdecl sub_67E28B(); void __cdecl sub_67E299(); void __cdecl sub_67E2A7(); void __cdecl sub_67E2B5(); void __cdecl sub_67E2C3(); void __cdecl sub_67E2D1(); void __cdecl sub_67E2DF(); void __cdecl sub_67E2ED(); void __cdecl sub_67E2FB(); void __cdecl sub_67E309(); void __cdecl sub_67E317(); void __cdecl sub_67E325(); void __cdecl sub_67E333(); void __cdecl sub_67E341(); void __cdecl sub_67E34F(); void __cdecl sub_67E35D(); void __cdecl sub_67E36B(); void __cdecl sub_67E379(); void __cdecl sub_67E387(); void __cdecl sub_67E395(); void __cdecl sub_67E3A3(); void __cdecl sub_67E3B1(); void __cdecl sub_67E3BF(); void __cdecl sub_67E3CD(); void __cdecl sub_67E3DB(); void __cdecl sub_67E3E9(); void __cdecl sub_67E3F7(); void __cdecl sub_67E405(); // void __usercall sub_67E40D(int a1); void __cdecl sub_67E41B(); void __cdecl sub_67E429(); void __cdecl sub_67E437(); void __cdecl sub_67E445(); void __cdecl sub_67E453(); void __cdecl sub_67E461(); void __cdecl sub_67E46F(); void __cdecl sub_67E47D(); void __cdecl sub_67E48B(); void __cdecl sub_67E499(); void __cdecl sub_67E4A7(); void __cdecl sub_67E4B5(); void __cdecl sub_67E4C3(); void __cdecl sub_67E4D1(); void __cdecl sub_67E4DF(); void __cdecl sub_67E4ED(); void __cdecl sub_67E4FB(); void __cdecl sub_67E509(); void __cdecl sub_67E517(); void __cdecl sub_67E525(); void __cdecl sub_67E533(); void __cdecl sub_67E541(); void __cdecl sub_67E54F(); // void __usercall sub_67E55D(int a1); int __cdecl sub_67E56B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67E590(int a1); // void __usercall sub_67E598(int a1); // void __usercall sub_67E5A6(int a1); int __cdecl sub_67E5B4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67E5D0(); void __cdecl sub_67E5D8(); // void __usercall sub_67E5E6(int a1); int __cdecl sub_67E5F4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E610(int a1); int __cdecl sub_67E640(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67E660(int a1); int __cdecl sub_67E671(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67E690(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E6B0(int a1); // void __usercall sub_67E6E0(int a1); int __cdecl sub_67E6E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67E710(); int __cdecl sub_67E718(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E740(int a1); void __cdecl sub_67E748(); int __cdecl sub_67E750(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E780(int a1); int __cdecl sub_67E788(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E7B0(int a1); int __cdecl sub_67E7BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E7F0(int a1); int __cdecl sub_67E7FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E830(int a1); // int __usercall sub_67E838(int a1); int __cdecl sub_67E840(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E860(int a1); // void __usercall sub_67E86B(int a1); int __cdecl sub_67E876(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E8A0(int a1); // void __usercall sub_67E8A8(int a1); int __cdecl sub_67E8B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E8D0(int a1); int __cdecl sub_67E8DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E910(int a1); // void __usercall sub_67E918(int a1); // void __usercall sub_67E920(int a1); int __cdecl sub_67E928(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E950(int a1); int __cdecl sub_67E958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E980(int a1); int __cdecl sub_67E988(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E9B0(int a1); int __cdecl sub_67E9BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67E9F0(int a1); // void __usercall sub_67E9F8(int a1); int __cdecl sub_67EA00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EA20(int a1); void __cdecl sub_67EA28(); int __cdecl sub_67EA30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EA60(int a1); int __cdecl sub_67EA68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EA90(int a1); int __cdecl sub_67EA9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EAD0(int a1); int __cdecl sub_67EAD8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EB00(int a1); int __cdecl sub_67EB0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EB40(int a1); int __cdecl sub_67EB48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EB70(int a1); int __cdecl sub_67EB78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EBA0(int a1); int __cdecl sub_67EBAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67EBE0(int a1); int __cdecl sub_67EBEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67EC20(int a1); int __cdecl sub_67EC28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EC50(int a1); // int __usercall sub_67EC5B(int a1); // void __usercall sub_67EC73(int a1); // void __usercall sub_67EC81(int a1); int __cdecl sub_67EC8F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67ECB0(int a1); // int __usercall sub_67ECB8(int a1); int __cdecl sub_67ECC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67ECF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67ED10(int a1); int __cdecl sub_67ED18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67ED40(); int __cdecl sub_67ED48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67ED70(int a1); // int __usercall sub_67ED7B(int a1); int __cdecl sub_67ED86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EDB0(int a1); // void __usercall sub_67EDBB(int a1); void __cdecl sub_67EDC6(); // void __usercall sub_67EDD1(int a1); int __cdecl sub_67EDDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EE10(int a1); // void __usercall sub_67EE1B(int a1); void __cdecl sub_67EE26(); int __cdecl sub_67EE31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67EE60(int a1); // void __usercall sub_67EEA0(int a1); // void __usercall sub_67EEAB(int a1); // void __usercall sub_67EEB6(int a1); // void __usercall sub_67EEC1(int a1); // void __usercall sub_67EECC(int a1); void __cdecl sub_67EED7(); void __cdecl sub_67EEE2(); // int __usercall sub_67EEED(int a1); // int __usercall sub_67EEF8(int a1); void __cdecl sub_67EF03(); void __cdecl sub_67EF0E(); int __cdecl sub_67EF19(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67EF50(); // int __usercall sub_67EF58(int a1); int __cdecl sub_67EF71(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67EF90(); // int __usercall sub_67EF98(int a1); // void __usercall sub_67EFA3(int a1); // void __usercall sub_67EFAB(int a1); // void __usercall sub_67EFB3(int a1); // void __usercall sub_67EFBE(int a1); // void __usercall sub_67EFC9(int a1); // void __usercall sub_67EFD4(int a1); int __cdecl sub_67EFDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F010(int a1); // int __usercall sub_67F01B(int a1); void __cdecl sub_67F026(); int __cdecl sub_67F031(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F060(); int __cdecl sub_67F06A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F090(int a1); // void __usercall sub_67F0C0(int a1); int __cdecl sub_67F0C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F120(int a1); // void __usercall sub_67F128(int a1); int __cdecl sub_67F130(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F150(int a1); // int __usercall sub_67F158(int a1); // int __usercall sub_67F1B0(int a1); // void __usercall sub_67F1BB(int a1); // int __usercall sub_67F1C6(int a1); // int __usercall sub_67F1D1(int a1); int __cdecl sub_67F1DC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F210(int a1); // int __usercall sub_67F240(int a1); // void __usercall sub_67F248(int a1); int __cdecl sub_67F250(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67F270(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67F2A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F2C0(int a1); // void __usercall sub_67F2C8(int a1); // int __usercall sub_67F2F0(int a1); // void __usercall sub_67F2FB(int a1); // void __usercall sub_67F306(int a1); void __cdecl sub_67F311(); // void __usercall sub_67F31C(int a1); int __cdecl sub_67F327(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F350(int a1); // void __usercall sub_67F358(int a1); // int __usercall sub_67F380(int a1); // int __usercall sub_67F388(int a1); // void __usercall sub_67F390(int a1); // void __usercall sub_67F398(int a1); int __cdecl sub_67F3A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F3C0(int a1); // void __usercall sub_67F3CB(int a1); // void __usercall sub_67F3D6(int a1); int __cdecl sub_67F3E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F410(int a1); // void __usercall sub_67F418(int a1); int __cdecl sub_67F420(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F440(int a1); int __cdecl sub_67F448(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F470(int a1); // int __usercall sub_67F478(int a1); // int __usercall sub_67F480(int a1); int __cdecl sub_67F488(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F4B0(int a1); int __cdecl sub_67F4B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F4E0(); int __cdecl sub_67F4E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67F510(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67F530(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F550(int a1); int __cdecl sub_67F558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F580(int a1); // void __usercall sub_67F588(int a1); // int __usercall sub_67F590(int a1); int __cdecl sub_67F598(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F5C0(); int __cdecl sub_67F5CA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F5F0(); int __cdecl sub_67F5FA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F620(); int __cdecl sub_67F62A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F650(int a1); int __cdecl sub_67F658(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F680(); int __cdecl sub_67F688(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F6B0(int a1); int __cdecl sub_67F6B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F6E0(); int __cdecl sub_67F6EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F710(); int __cdecl sub_67F71A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F740(int a1); // void __usercall sub_67F74B(int a1); int __cdecl sub_67F756(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67F780(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F7A0(int a1); int __cdecl sub_67F7AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F7E0(int a1); int __cdecl sub_67F7EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F820(); int __cdecl sub_67F828(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F850(int a1); int __cdecl sub_67F861(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F880(int a1); void __cdecl sub_67F8B0(); void __cdecl sub_67F8B8(); int __cdecl sub_67F8C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F8E0(int a1); int __cdecl sub_67F8EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F920(int a1); int __cdecl sub_67F928(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67F950(); int __cdecl sub_67F958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67F980(int a1); // void __usercall sub_67F98E(int a1); // void __usercall sub_67F99C(int a1); // void __usercall sub_67F9AA(int a1); int __cdecl sub_67F9B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67F9E0(int a1); int __cdecl sub_67F9EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FA20(int a1); // void __usercall sub_67FA28(int a1); // void __usercall sub_67FA30(int a1); int __cdecl sub_67FA38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FA60(int a1); int __cdecl sub_67FA76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FAA0(int a1); // int __usercall sub_67FAD0(int a1); // void __usercall sub_67FADB(int a1); // void __usercall sub_67FAE6(int a1); int __cdecl sub_67FAF1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FB20(int a1); int __cdecl sub_67FB28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FB50(int a1); // void __usercall sub_67FB58(int a1); int __cdecl sub_67FB60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FB90(int a1); int __cdecl sub_67FB98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67FBC0(int a1); int __cdecl sub_67FBC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67FBF0(); int __cdecl sub_67FBFE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FC20(int a1); // void __usercall sub_67FC28(int a1); int __cdecl sub_67FC33(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67FCC0(int a1); int __cdecl sub_67FCC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67FCF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FD10(int a1); // int __usercall sub_67FD18(int a1); // int __usercall sub_67FD50(int a1); // int __usercall sub_67FD58(int a1); // void __usercall sub_67FD60(int a1); void __cdecl sub_67FD90(); void __cdecl sub_67FD9A(); void __cdecl sub_67FDA4(); void __cdecl sub_67FDAE(); int __cdecl sub_67FDB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67FDE0(int a1); int __cdecl sub_67FDE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FE40(int a1); int __cdecl sub_67FE48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_67FE70(); int __cdecl sub_67FE78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_67FEA0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FEC0(int a1); // int __usercall sub_67FEC8(int a1); int __cdecl sub_67FED0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67FEF0(int a1); // void __usercall sub_67FEF8(int a1); int __cdecl sub_67FF03(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_67FF20(int a1); int __cdecl sub_67FF28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67FF50(int a1); int __cdecl sub_67FF58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_67FF80(int a1); void __cdecl sub_67FF88(); void __cdecl sub_67FF96(); void __cdecl sub_67FFA4(); void __cdecl sub_67FFB2(); void __cdecl sub_67FFC0(); void __cdecl sub_67FFCE(); void __cdecl sub_67FFDC(); void __cdecl sub_67FFEA(); void __cdecl sub_67FFF8(); void __cdecl sub_680006(); void __cdecl sub_680014(); void __cdecl sub_680022(); void __cdecl sub_680030(); void __cdecl sub_68003E(); void __cdecl sub_68004C(); void __cdecl sub_68005A(); void __cdecl sub_680068(); void __cdecl sub_680076(); void __cdecl sub_680084(); void __cdecl sub_680092(); void __cdecl sub_6800A0(); void __cdecl sub_6800AE(); void __cdecl sub_6800BC(); void __cdecl sub_6800CA(); void __cdecl sub_6800D8(); void __cdecl sub_6800E6(); void __cdecl sub_6800F4(); int __cdecl sub_680102(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_680120(); void __cdecl sub_680128(); void __cdecl sub_680136(); void __cdecl sub_680144(); void __cdecl sub_680152(); void __cdecl sub_680160(); void __cdecl sub_68016E(); void __cdecl sub_68017C(); void __cdecl sub_68018A(); void __cdecl sub_680198(); void __cdecl sub_6801A6(); void __cdecl sub_6801B4(); void __cdecl sub_6801C2(); void __cdecl sub_6801D0(); void __cdecl sub_6801DE(); void __cdecl sub_6801EC(); void __cdecl sub_6801FA(); void __cdecl sub_680208(); void __cdecl sub_680216(); void __cdecl sub_680224(); void __cdecl sub_680232(); void __cdecl sub_680240(); void __cdecl sub_68024E(); void __cdecl sub_68025C(); void __cdecl sub_68026A(); void __cdecl sub_680278(); void __cdecl sub_680286(); void __cdecl sub_680294(); int __cdecl sub_6802A2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6802C0(int a1); int __cdecl sub_6802CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680300(int a1); int __cdecl sub_68030B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680340(int a1); int __cdecl sub_68034B(); // void __usercall sub_680359(int a1); void __cdecl sub_680364(); int __cdecl sub_68036F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6803A0(int a1); // void __usercall sub_6803AB(int a1); int __cdecl sub_6803B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6803E0(int a1); int __cdecl sub_6803EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680420(int a1); // void __usercall sub_68042B(int a1); // void __usercall sub_680436(int a1); int __cdecl sub_680441(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680470(int a1); int __cdecl sub_680478(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6804A0(int a1); int __cdecl sub_6804A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6804D0(int a1); int __cdecl sub_6804D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680500(int a1); int __cdecl sub_680508(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680530(int a1); // void __usercall sub_680560(int a1); int __cdecl sub_680568(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_680590(); int __cdecl sub_680598(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6805C0(int a1); // void __usercall sub_6805CB(int a1); int __cdecl sub_6805D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680600(int a1); // int __usercall sub_680630(int a1); // int __usercall sub_680638(int a1); int __cdecl sub_680640(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680660(int a1); int __cdecl sub_680668(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680690(int a1); int __cdecl sub_680698(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6806C0(int a1); // int __usercall sub_6806C8(int a1); // int __usercall sub_680700(int a1); // void __usercall sub_68070B(int a1); int __cdecl sub_680716(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680740(int a1); // void __usercall sub_68074B(int a1); // void __usercall sub_680756(int a1); int __cdecl sub_680761(); int __cdecl sub_68076F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6807A0(int a1); int __cdecl sub_6807A8(); void __cdecl sub_6807B6(); // int __usercall sub_6807C0(int a1); int __cdecl sub_6807C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6807F0(int a1); int __cdecl sub_6807FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680820(int a1); int __cdecl sub_68082B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_680860(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680880(int a1); int __cdecl sub_68088B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6808C0(int a1); int __cdecl sub_6808C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6808F0(int a1); int __cdecl sub_6808F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680920(int a1); // int __usercall sub_680928(int a1); int __cdecl sub_680930(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680950(int a1); // int __usercall sub_680980(int a1); // void __usercall sub_680988(int a1); int __cdecl sub_680990(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6809B0(int a1); // void __usercall sub_6809B8(int a1); // void __usercall sub_6809E0(int a1); int __cdecl sub_6809E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_680A10(); int __cdecl sub_680A18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_680A40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_680A60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680A80(int a1); // void __usercall sub_680A88(int a1); int __cdecl sub_680A93(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680AB0(int a1); // void __usercall sub_680ABB(int a1); int __cdecl sub_680AC3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680AF0(int a1); int __cdecl sub_680AFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_680B20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_680B40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680B60(int a1); // void __usercall sub_680B6B(int a1); // void __usercall sub_680B79(int a1); // void __usercall sub_680B87(int a1); // void __usercall sub_680B95(int a1); void __cdecl sub_680BA3(); int __cdecl sub_680BAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680BD0(int a1); // void __usercall sub_680BD8(int a1); int __cdecl sub_680BE3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680C00(int a1); int __cdecl sub_680C0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680C40(int a1); // void __usercall sub_680C4B(int a1); // void __usercall sub_680C59(int a1); // void __usercall sub_680C67(int a1); int __cdecl sub_680C75(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680C90(int a1); // void __usercall sub_680C9B(int a1); void __cdecl sub_680CA6(); int __cdecl sub_680CB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_680D10(int a1); void __cdecl sub_680D1B(); int __cdecl sub_680D26(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_680D50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680D70(int a1); // void __usercall sub_680D7B(int a1); // void __usercall sub_680D83(int a1); // void __usercall sub_680D8E(int a1); int __cdecl sub_680D99(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_680DD0(); int __cdecl sub_680DDA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680E00(int a1); // void __usercall sub_680E08(int a1); int __cdecl sub_680E10(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680E30(int a1); int __cdecl sub_680E38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680E60(int a1); int __cdecl sub_680E68(); int __cdecl sub_680E76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680EA0(int a1); int __cdecl sub_680EA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680ED0(int a1); // void __usercall sub_680ED8(int a1); // int __usercall sub_680F00(int a1); // void __usercall sub_680F08(int a1); // void __usercall sub_680F10(int a1); int __cdecl sub_680F18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680F40(int a1); // void __usercall sub_680F48(int a1); int __cdecl sub_680F50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680F70(int a1); int __cdecl sub_680F78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680FA0(int a1); int __cdecl sub_680FAB(); int __cdecl sub_680FB6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_680FE0(int a1); // int __usercall sub_680FE8(int a1); int __cdecl sub_680FF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681010(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681030(int a1); int __cdecl sub_681038(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681060(int a1); int __cdecl sub_68106B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6810A0(int a1); void __cdecl sub_6810A8(); int __cdecl sub_6810B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6810D0(int a1); // void __usercall sub_6810DB(int a1); int __cdecl sub_6810E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681110(); int __cdecl sub_681118(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681140(int a1); int __cdecl sub_681148(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681170(int a1); // void __usercall sub_68117B(int a1); // void __usercall sub_681186(int a1); int __cdecl sub_681191(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6811C0(int a1); void __cdecl sub_6811C8(); int __cdecl sub_6811D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681200(int a1); void __cdecl sub_681208(); int __cdecl sub_681210(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681240(int a1); int __cdecl sub_681248(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681270(); int __cdecl sub_681278(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6812A0(int a1); // void __usercall sub_6812AB(int a1); // void __usercall sub_6812B6(int a1); int __cdecl sub_6812C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6812F0(); int __cdecl sub_6812F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681320(int a1); int __cdecl sub_681328(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681350(); int __cdecl sub_68135A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681380(int a1); int __cdecl sub_681388(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6813B0(int a1); void __cdecl sub_6813B8(); int __cdecl sub_6813C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6813E0(int a1); int __cdecl sub_6813E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681410(int a1); int __cdecl sub_681418(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681440(int a1); int __cdecl sub_681448(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681470(int a1); void __cdecl sub_68147B(); int __cdecl sub_681486(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6814B0(); int __cdecl sub_6814B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6814E0(); int __cdecl sub_6814EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681510(int a1); // void __usercall sub_681518(int a1); int __cdecl sub_681523(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681540(int a1); // void __usercall sub_68154B(int a1); void __cdecl sub_681556(); // void __usercall sub_681561(int a1); int __cdecl sub_68156C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6815A0(); int __cdecl sub_6815A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6815D0(int a1); // void __usercall sub_6815DB(int a1); void __cdecl sub_6815E6(); int __cdecl sub_6815F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681620(int a1); int __cdecl sub_68162B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6816B0(int a1); int __cdecl sub_6816B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6816E0(int a1); int __cdecl sub_6816EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681720(int a1); int __cdecl sub_681728(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681750(int a1); int __cdecl sub_68175B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681780(int a1); // void __usercall sub_6817C0(int a1); // void __usercall sub_6817CB(int a1); // void __usercall sub_6817D6(int a1); int __cdecl sub_6817E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681800(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681820(int a1); int __cdecl sub_681828(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681850(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681870(int a1); int __cdecl sub_681878(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6818A0(int a1); int __cdecl sub_6818B1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6818D0(int a1); // void __usercall sub_6818E1(int a1); int __cdecl sub_6818EC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681910(int a1); int __cdecl sub_681921(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681940(int a1); int __cdecl sub_681951(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681970(int a1); int __cdecl sub_681978(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6819A0(int a1); int __cdecl sub_6819AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6819E0(int a1); // void __usercall sub_6819E8(int a1); // int __usercall sub_6819F0(int a1); // int __usercall sub_6819FB(int a1); int __cdecl sub_681A06(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681A30(int a1); // int __usercall sub_681A3B(int a1); // void __usercall sub_681A46(int a1); int __cdecl sub_681A51(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681A80(int a1); // void __usercall sub_681A88(int a1); int __cdecl sub_681A90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681AC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681AE0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681B00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681B20(int a1); int __cdecl sub_681B28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681B50(int a1); // void __usercall sub_681B58(int a1); int __cdecl sub_681B60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681B90(); int __cdecl sub_681B98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681BC0(int a1); int __cdecl sub_681BC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681BF0(int a1); // void __usercall sub_681C01(int a1); int __cdecl sub_681C12(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681C30(int a1); int __cdecl sub_681C3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681C70(int a1); int __cdecl sub_681C78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681CA0(int a1); // void __usercall sub_681CAB(int a1); // void __usercall sub_681CB6(int a1); // void __usercall sub_681CC1(int a1); // void __usercall sub_681CCC(int a1); // void __usercall sub_681CD7(int a1); int __cdecl sub_681CE5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681D00(int a1); // void __usercall sub_681D08(int a1); // void __usercall sub_681D13(int a1); // void __usercall sub_681D1E(int a1); int __cdecl sub_681D2C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681D50(); // void __usercall sub_681D58(int a1); // void __usercall sub_681D63(int a1); int __cdecl sub_681D6E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681D90(); int __cdecl sub_681D9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681DC0(int a1); int __cdecl sub_681DC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681DF0(int a1); int __cdecl sub_681DF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681E20(int a1); int __cdecl sub_681E28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681E50(int a1); int __cdecl sub_681E58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681E80(); int __cdecl sub_681E88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_681EB0(int a1); void __cdecl sub_681EB8(); void __cdecl sub_681EC0(); // int __usercall sub_681F20(int a1); void __cdecl sub_681F28(); int __cdecl sub_681F30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681F50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_681F70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_681F90(int a1); // void __usercall sub_681F98(int a1); void __cdecl sub_681FA6(); int __cdecl sub_681FAE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_681FD0(); int __cdecl sub_681FD8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682000(int a1); int __cdecl sub_682008(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682030(int a1); // void __usercall sub_68203B(int a1); // void __usercall sub_682046(int a1); // void __usercall sub_682051(int a1); // void __usercall sub_68205C(int a1); int __cdecl sub_682067(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682090(int a1); int __cdecl sub_68209B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6820C0(int a1); // int __usercall sub_6820F0(int a1); // void __usercall sub_6820F8(int a1); int __cdecl sub_682100(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682120(int a1); // void __usercall sub_682128(int a1); // void __usercall sub_682130(int a1); // void __usercall sub_682138(int a1); // void __usercall sub_682140(int a1); // void __usercall sub_682148(int a1); // void __usercall sub_682150(int a1); // void __usercall sub_682158(int a1); // void __usercall sub_682160(int a1); // void __usercall sub_682168(int a1); // void __usercall sub_682170(int a1); // void __usercall sub_682178(int a1); // void __usercall sub_682180(int a1); // void __usercall sub_682188(int a1); // void __usercall sub_682190(int a1); // void __usercall sub_682198(int a1); // void __usercall sub_6821A0(int a1); // void __usercall sub_6821A8(int a1); // void __usercall sub_6821B0(int a1); // void __usercall sub_6821B8(int a1); // void __usercall sub_6821C0(int a1); // void __usercall sub_6821C8(int a1); int __cdecl sub_6821D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6821F0(int a1); // void __usercall sub_6821FB(int a1); int __cdecl sub_682206(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682230(int a1); // void __usercall sub_68223B(int a1); // void __usercall sub_682246(int a1); // void __usercall sub_682251(int a1); // void __usercall sub_68225C(int a1); // void __usercall sub_682267(int a1); // void __usercall sub_682272(int a1); // void __usercall sub_68227D(int a1); // void __usercall sub_682288(int a1); // void __usercall sub_682293(int a1); // void __usercall sub_68229E(int a1); // void __usercall sub_6822A9(int a1); // void __usercall sub_6822B4(int a1); // void __usercall sub_6822BF(int a1); // void __usercall sub_6822CA(int a1); // void __usercall sub_6822D5(int a1); // void __usercall sub_6822E0(int a1); // void __usercall sub_6822EB(int a1); int __cdecl sub_6822F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682320(int a1); int __cdecl sub_682328(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682350(int a1); // void __usercall sub_682358(int a1); // int __usercall sub_6823C0(int a1); // void __usercall sub_6823CB(int a1); // void __usercall sub_6823D6(int a1); int __cdecl sub_6823E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682410(int a1); // void __usercall sub_68241B(int a1); int __cdecl sub_682426(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682450(int a1); int __cdecl sub_68245B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682490(int a1); // void __usercall sub_682498(int a1); int __cdecl sub_6824A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6824C0(int a1); // int __usercall sub_6824CB(int a1); // int __usercall sub_6824D6(int a1); // int __usercall sub_6824E1(int a1); int __cdecl sub_6824EC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682520(int a1); int __cdecl sub_682528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682550(int a1); int __cdecl sub_682558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682580(); int __cdecl sub_682588(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6825B0(); int __cdecl sub_6825B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6825E0(int a1); void __cdecl sub_6825EB(); int __cdecl sub_6825F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682620(int a1); void __cdecl sub_68262B(); int __cdecl sub_682636(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682660(); int __cdecl sub_682668(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682690(int a1); int __cdecl sub_682698(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6826C0(int a1); int __cdecl sub_6826C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6826F0(int a1); int __cdecl sub_6826F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682720(int a1); int __cdecl sub_68272B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682760(int a1); int __cdecl sub_68276B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6827A0(int a1); // void __usercall sub_6827AE(int a1); int __cdecl sub_6827B9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6827F0(int a1); int __cdecl sub_6827F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682820(); int __cdecl sub_68282A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682850(); int __cdecl sub_68285A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682880(); int __cdecl sub_68288A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6828B0(); int __cdecl sub_6828BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6828E0(); int __cdecl sub_6828EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682910(); int __cdecl sub_68291A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682940(int a1); int __cdecl sub_682948(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682970(int a1); int __cdecl sub_68297B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6829B0(int a1); // void __usercall sub_6829BB(int a1); int __cdecl sub_6829C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6829F0(int a1); int __cdecl sub_6829F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682A20(int a1); int __cdecl sub_682A28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682A50(int a1); int __cdecl sub_682A5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682A90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682AB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682AD0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682AF0(int a1); int __cdecl sub_682B01(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682B20(int a1); int __cdecl sub_682B31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682B50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682B70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682B90(int a1); int __cdecl sub_682B98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682BC0(int a1); // void __usercall sub_682BD1(int a1); int __cdecl sub_682BDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_682C00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682C20(int a1); // void __usercall sub_682C31(int a1); // void __usercall sub_682C3C(int a1); // void __usercall sub_682C4D(int a1); int __cdecl sub_682C58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682C80(int a1); // void __usercall sub_682C8B(int a1); // void __usercall sub_682C96(int a1); int __cdecl sub_682CA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682CD0(int a1); // void __usercall sub_682CD8(int a1); int __cdecl sub_682CE0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682D10(int a1); int __cdecl sub_682D18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682D40(int a1); // int __usercall sub_682D70(int a1); int __cdecl sub_682D7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682DB0(int a1); // void __usercall sub_682DBB(int a1); int __cdecl sub_682DC6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682DF0(); int __cdecl sub_682DF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682E20(int a1); int __cdecl sub_682E28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_682E50(int a1); int __cdecl sub_682E58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682E80(int a1); // int __usercall sub_682E8B(int a1); // void __usercall sub_682EA1(int a1); void __cdecl sub_682EAC(); void __cdecl sub_682EB4(); int __cdecl sub_682EBF(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682EF0(); int __cdecl sub_682EF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682F20(int a1); void __cdecl sub_682F28(); int __cdecl sub_682F30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682F60(); int __cdecl sub_682F68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_682F90(); int __cdecl sub_682F98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_682FC0(int a1); int __cdecl sub_682FCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683000(int a1); int __cdecl sub_683008(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683030(); int __cdecl sub_683038(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683060(); int __cdecl sub_68306A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683090(int a1); // void __usercall sub_683098(int a1); int __cdecl sub_6830A9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6830D0(int a1); int __cdecl sub_6830E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_683100(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683120(int a1); // int __usercall sub_683150(int a1); void __cdecl sub_683180(); int __cdecl sub_68318A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683210(int a1); int __cdecl sub_68321B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683250(int a1); int __cdecl sub_68325B(); // void __usercall sub_683266(int a1); int __cdecl sub_683271(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6832A0(int a1); // void __usercall sub_6832AB(int a1); int __cdecl sub_6832B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6832E0(int a1); int __cdecl sub_6832E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683310(int a1); int __cdecl sub_68331B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683340(int a1); int __cdecl sub_68334B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683370(int a1); int __cdecl sub_68337B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6833B0(int a1); int __cdecl sub_6833B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6833E0(int a1); int __cdecl sub_6833E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683440(int a1); // int __usercall sub_683448(int a1); // int __usercall sub_683453(int a1); // int __usercall sub_683461(int a1); // int __usercall sub_68346F(int a1); // void __usercall sub_68347D(int a1); int __cdecl sub_68348B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6834B0(); int __cdecl sub_6834B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6834E0(int a1); // int __usercall sub_6834EB(int a1); void __cdecl sub_6834F6(); int __cdecl sub_683501(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683530(int a1); // int __usercall sub_68353B(int a1); void __cdecl sub_683546(); // void __usercall sub_683551(int a1); int __cdecl sub_68355F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683590(); // int __usercall sub_683598(int a1); // int __usercall sub_6835A3(int a1); // int __usercall sub_6835B1(int a1); // int __usercall sub_6835BF(int a1); int __cdecl sub_6835CD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_6835F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683610(int a1); int __cdecl sub_683618(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683640(int a1); // void __usercall sub_683648(int a1); // void __usercall sub_683653(int a1); int __cdecl sub_68365E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683690(); int __cdecl sub_683698(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6836F0(int a1); int __cdecl sub_6836FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683760(int a1); // int __usercall sub_683790(int a1); // int __usercall sub_6837C0(int a1); // void __usercall sub_6837C8(int a1); // void __usercall sub_6837D0(int a1); // int __usercall sub_683800(int a1); // void __usercall sub_683808(int a1); // int __usercall sub_683830(int a1); // int __usercall sub_683860(int a1); // void __usercall sub_68386B(int a1); int __cdecl sub_683876(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6838A0(int a1); // void __usercall sub_6838AB(int a1); int __cdecl sub_6838B3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6838E0(int a1); // void __usercall sub_683910(int a1); int __cdecl sub_68391B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683950(int a1); int __cdecl sub_683958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683980(int a1); int __cdecl sub_68398B(); void __cdecl sub_683999(); void __cdecl sub_6839A3(); void __cdecl sub_6839AD(); void __cdecl sub_6839B7(); int __cdecl sub_6839C1(); void __cdecl sub_6839CF(); void __cdecl sub_6839D9(); void __cdecl sub_6839E3(); void __cdecl sub_6839ED(); // void __usercall sub_6839F7(int a1); // void __usercall sub_683A05(int a1); // void __usercall sub_683A13(int a1); // void __usercall sub_683A21(int a1); // void __usercall sub_683A2F(int a1); int __cdecl sub_683A3D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683A70(int a1); // void __usercall sub_683A78(int a1); int __cdecl sub_683A80(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683AA0(int a1); int __cdecl sub_683AA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683AD0(int a1); // int __usercall sub_683AD8(int a1); void __cdecl sub_683AE0(); int __cdecl sub_683AE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683B10(); // int __usercall sub_683B40(int a1); // int __usercall sub_683B48(int a1); void __cdecl sub_683B50(); int __cdecl sub_683B58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683B80(int a1); // void __usercall sub_683B88(int a1); int __cdecl sub_683B90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683BB0(int a1); // void __usercall sub_683BB8(int a1); int __cdecl sub_683BC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683BE0(int a1); // int __usercall sub_683C10(int a1); int __cdecl sub_683C1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683C50(int a1); int __cdecl sub_683C5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683C90(int a1); void __cdecl sub_683C98(); int __cdecl sub_683CA0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683CC0(int a1); // void __usercall sub_683CC8(int a1); // void __usercall sub_683CD0(int a1); // void __usercall sub_683CDB(int a1); int __cdecl sub_683CE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683D10(int a1); int __cdecl sub_683D18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683D40(int a1); int __cdecl sub_683D48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683D70(int a1); int __cdecl sub_683D7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683DB0(int a1); int __cdecl sub_683DC3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683DE0(int a1); int __cdecl sub_683DEE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683E20(int a1); int __cdecl sub_683E2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683E60(int a1); int __cdecl sub_683E68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683EC0(int a1); int __cdecl sub_683ECB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683F00(); int __cdecl sub_683F08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_683F30(int a1); int __cdecl sub_683F38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_683F60(); // int __usercall sub_683F68(int a1); int __cdecl sub_683F7E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683FA0(int a1); int __cdecl sub_683FB9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_683FE0(int a1); void __cdecl sub_683FE8(); int __cdecl sub_683FF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684010(int a1); void __cdecl sub_684018(); int __cdecl sub_684020(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_684040(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_684060(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684080(int a1); // int __usercall sub_684088(int a1); int __cdecl sub_684090(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6840B0(int a1); int __cdecl sub_6840C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_6840E0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684100(int a1); // int __usercall sub_684130(int a1); // void __usercall sub_68413B(int a1); // void __usercall sub_684149(int a1); int __cdecl sub_684154(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684180(int a1); int __cdecl sub_684188(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6841B0(int a1); void __cdecl sub_6841B8(); // void __usercall sub_6841E0(int a1); int __cdecl sub_6841E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_684210(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684230(int a1); int __cdecl sub_684238(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684260(int a1); int __cdecl sub_684271(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684290(int a1); // void __usercall sub_68429B(int a1); int __cdecl sub_6842A6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6842D0(int a1); int __cdecl sub_6842DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684310(); int __cdecl sub_68431A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684340(); int __cdecl sub_68434A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684370(int a1); // void __usercall sub_684378(int a1); // void __usercall sub_684383(int a1); int __cdecl sub_68438E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6843B0(int a1); int __cdecl sub_6843B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6843E0(int a1); // void __usercall sub_6843E8(int a1); int __cdecl sub_6843F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684410(int a1); int __cdecl sub_684418(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684440(int a1); int __cdecl sub_684470(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_684490(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6844B0(int a1); // int __usercall sub_6844B8(int a1); // int __usercall sub_6844C0(int a1); int __cdecl sub_6844C8(); int __cdecl sub_6844D6(); // int __usercall sub_6844E0(int a1); // int __usercall sub_6844E8(int a1); int __cdecl sub_6844F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684510(); int __cdecl sub_68451A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684540(int a1); int __cdecl sub_684548(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684570(int a1); int __cdecl sub_684578(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6845A0(); int __cdecl sub_6845A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6845D0(); int __cdecl sub_6845D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684600(); int __cdecl sub_684608(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684630(int a1); // int __usercall sub_684660(int a1); // void __usercall sub_684690(int a1); // void __usercall sub_684698(int a1); // void __usercall sub_6846A3(int a1); // void __usercall sub_6846B1(int a1); int __cdecl sub_6846BF(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6846E0(); void __cdecl sub_6846E8(); void __cdecl sub_6846F3(); void __cdecl sub_684701(); int __cdecl sub_68470F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684730(int a1); // void __usercall sub_684738(int a1); int __cdecl sub_684746(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684770(int a1); int __cdecl sub_68477B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6847A0(int a1); // void __usercall sub_6847A8(int a1); // void __usercall sub_6847B6(int a1); int __cdecl sub_6847C4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6847E0(int a1); // void __usercall sub_6847E8(int a1); // void __usercall sub_6847F3(int a1); int __cdecl sub_684801(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_684820(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684840(int a1); int __cdecl sub_68484B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684880(int a1); int __cdecl sub_68488B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6848C0(int a1); int __cdecl sub_6848C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6848F0(int a1); // void __usercall sub_6848FB(int a1); // void __usercall sub_684906(int a1); int __cdecl sub_684911(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684940(int a1); // void __usercall sub_68494E(int a1); int __cdecl sub_684959(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684990(int a1); int __cdecl sub_68499B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6849D0(int a1); int __cdecl sub_6849D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684A00(int a1); int __cdecl sub_684A08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684A30(int a1); int __cdecl sub_684A38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684A60(int a1); int __cdecl sub_684A68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684A90(); int __cdecl sub_684A98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684AC0(); int __cdecl sub_684ACA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684AF0(int a1); int __cdecl sub_684AFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684B30(int a1); // void __usercall sub_684B38(int a1); int __cdecl sub_684B40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684B70(int a1); int __cdecl sub_684B7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684BB0(int a1); int __cdecl sub_684BB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684BE0(int a1); int __cdecl sub_684BE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684C10(); int __cdecl sub_684C18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684C40(int a1); int __cdecl sub_684C48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684C70(int a1); int __cdecl sub_684C78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684CA0(int a1); int __cdecl sub_684CA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684CD0(int a1); // void __usercall sub_684CDB(int a1); // void __usercall sub_684CE6(int a1); // void __usercall sub_684CF1(int a1); // void __usercall sub_684CFC(int a1); // void __usercall sub_684D07(int a1); // void __usercall sub_684D0F(int a1); int __cdecl sub_684D1A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684D50(int a1); int __cdecl sub_684D5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684D90(int a1); int __cdecl sub_684D98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684DC0(); // void __usercall sub_684DC8(int a1); void __cdecl sub_684DD3(); void __cdecl sub_684DDE(); int __cdecl sub_684DE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684E10(); // void __usercall sub_684E18(int a1); void __cdecl sub_684E23(); int __cdecl sub_684E31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684E50(int a1); int __cdecl sub_684E5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_684E80(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684EA0(int a1); // void __usercall sub_684EA8(int a1); void __cdecl sub_684EB3(); void __cdecl sub_684EBE(); void __cdecl sub_684EC9(); int __cdecl sub_684ED4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684EF0(int a1); void __cdecl sub_684EF8(); void __cdecl sub_684F03(); void __cdecl sub_684F0E(); void __cdecl sub_684F19(); int __cdecl sub_684F24(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_684F40(int a1); int __cdecl sub_684F4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_684F70(int a1); int __cdecl sub_684F7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_684FE0(); // void __usercall sub_684FE8(int a1); void __cdecl sub_684FF3(); int __cdecl sub_684FFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685020(int a1); void __cdecl sub_68502B(); // int __usercall sub_685033(int a1); int __cdecl sub_685049(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_685070(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6850C0(int a1); // int __usercall sub_6850CB(int a1); // void __usercall sub_6850E4(int a1); // void __usercall sub_685110(int a1); int __cdecl sub_685118(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685140(int a1); int __cdecl sub_685148(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685170(int a1); int __cdecl sub_685178(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6851A0(); // int __usercall sub_6851A8(int a1); void __cdecl sub_6851E0(); // int __usercall sub_6851E8(int a1); void __cdecl sub_6851F0(); int __cdecl sub_6851F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_685220(); void __cdecl sub_685228(); // void __usercall sub_685233(int a1); // void __usercall sub_68523E(int a1); // void __usercall sub_685270(int a1); int __cdecl sub_68527B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6852A0(int a1); void __cdecl sub_6852AB(); int __cdecl sub_6852B3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6852D0(int a1); void __cdecl sub_6852DB(); // void __usercall sub_6852E3(int a1); int __cdecl sub_6852EE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685310(int a1); // void __usercall sub_68531E(int a1); int __cdecl sub_68532C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685360(int a1); // void __usercall sub_68536B(int a1); void __cdecl sub_685376(); // int __usercall sub_68537E(int a1); // void __usercall sub_685394(int a1); void __cdecl sub_68539F(); // void __usercall sub_6853A7(int a1); void __cdecl sub_6853B2(); // void __usercall sub_6853BA(int a1); // void __usercall sub_6853D0(int a1); // void __usercall sub_6853DB(int a1); // void __usercall sub_6853E6(int a1); // void __usercall sub_6853F1(int a1); // void __usercall sub_685407(int a1); // void __usercall sub_685412(int a1); // void __usercall sub_68541D(int a1); // void __usercall sub_685428(int a1); // void __usercall sub_68543E(int a1); // void __usercall sub_685449(int a1); // void __usercall sub_685454(int a1); // void __usercall sub_68545F(int a1); // void __usercall sub_685475(int a1); // void __usercall sub_685480(int a1); // void __usercall sub_68548B(int a1); // void __usercall sub_685496(int a1); // void __usercall sub_6854AC(int a1); // void __usercall sub_6854B7(int a1); // void __usercall sub_6854C2(int a1); // void __usercall sub_6854CD(int a1); // void __usercall sub_6854E3(int a1); // void __usercall sub_6854EE(int a1); // void __usercall sub_6854F9(int a1); // void __usercall sub_685504(int a1); // void __usercall sub_68551A(int a1); // void __usercall sub_685525(int a1); // void __usercall sub_685530(int a1); // void __usercall sub_68553B(int a1); // void __usercall sub_685551(int a1); // void __usercall sub_68555C(int a1); // void __usercall sub_685567(int a1); // void __usercall sub_685572(int a1); // void __usercall sub_685588(int a1); // void __usercall sub_685593(int a1); // void __usercall sub_68559E(int a1); // void __usercall sub_6855A9(int a1); // void __usercall sub_6855BF(int a1); // void __usercall sub_6855CA(int a1); // void __usercall sub_6855D5(int a1); // void __usercall sub_6855E0(int a1); // void __usercall sub_6855F6(int a1); // void __usercall sub_685601(int a1); // void __usercall sub_68560C(int a1); // void __usercall sub_685617(int a1); // void __usercall sub_68562D(int a1); // void __usercall sub_685638(int a1); // void __usercall sub_685643(int a1); // void __usercall sub_68564E(int a1); // void __usercall sub_685664(int a1); // void __usercall sub_68566F(int a1); // void __usercall sub_68567A(int a1); // void __usercall sub_685685(int a1); // void __usercall sub_68569B(int a1); // void __usercall sub_6856A6(int a1); // void __usercall sub_6856B1(int a1); // void __usercall sub_6856BC(int a1); // void __usercall sub_6856D2(int a1); // void __usercall sub_6856DD(int a1); // void __usercall sub_6856E8(int a1); // void __usercall sub_6856F3(int a1); // void __usercall sub_685709(int a1); // void __usercall sub_685714(int a1); // void __usercall sub_68571F(int a1); // void __usercall sub_68572A(int a1); // void __usercall sub_685740(int a1); // void __usercall sub_68574B(int a1); // void __usercall sub_685756(int a1); void __cdecl sub_685780(); // int __usercall sub_685788(int a1); // void __usercall sub_685790(int a1); void __cdecl sub_685798(); // void __usercall sub_6857C0(int a1); // void __usercall sub_6857C8(int a1); // void __usercall sub_6857D0(int a1); int __cdecl sub_6857D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685800(int a1); // void __usercall sub_685808(int a1); int __cdecl sub_685810(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685840(int a1); int __cdecl sub_68584B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_685870(); // void __usercall sub_685878(int a1); // void __usercall sub_685883(int a1); void __cdecl sub_6858C0(); int __cdecl sub_6858C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6858F0(int a1); // void __usercall sub_6858F8(int a1); // void __usercall sub_685900(int a1); // void __usercall sub_685908(int a1); int __cdecl sub_685910(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685940(int a1); // void __usercall sub_685948(int a1); // void __usercall sub_685950(int a1); int __cdecl sub_685958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685980(int a1); // int __usercall sub_685999(int a1); void __cdecl sub_6859A4(); // int __usercall sub_6859AF(int a1); // int __usercall sub_6859BA(int a1); // void __usercall sub_6859C5(int a1); int __cdecl sub_6859CD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685A00(int a1); // void __usercall sub_685A0B(int a1); // void __usercall sub_685A16(int a1); // void __usercall sub_685A21(int a1); int __cdecl sub_685A2C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685A60(int a1); // void __usercall sub_685A6B(int a1); // void __usercall sub_685A76(int a1); int __cdecl sub_685A81(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685AE0(int a1); // void __usercall sub_685AEB(int a1); // void __usercall sub_685AF6(int a1); // void __usercall sub_685B01(int a1); // void __usercall sub_685B0C(int a1); // void __usercall sub_685B17(int a1); int __cdecl sub_685B22(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685B50(int a1); // void __usercall sub_685B5B(int a1); // void __usercall sub_685B66(int a1); int __cdecl sub_685B71(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685BA0(int a1); // void __usercall sub_685BAB(int a1); // void __usercall sub_685BB6(int a1); // void __usercall sub_685BC1(int a1); int __cdecl sub_685BCC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685C00(int a1); int __cdecl sub_685C0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685C40(int a1); // void __usercall sub_685C4B(int a1); int __cdecl sub_685C56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685C80(int a1); // void __usercall sub_685C8B(int a1); // void __usercall sub_685C96(int a1); // void __usercall sub_685CA1(int a1); // void __usercall sub_685CAC(int a1); void __cdecl sub_685CB4(); void __cdecl sub_685CBC(); int __cdecl sub_685CC4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685CF0(int a1); // void __usercall sub_685CFB(int a1); // void __usercall sub_685D06(int a1); // void __usercall sub_685D11(int a1); // void __usercall sub_685D1C(int a1); // int __usercall sub_685D27(int a1); // void __usercall sub_685D32(int a1); int __cdecl sub_685D3D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685D70(int a1); // void __usercall sub_685D7B(int a1); // void __usercall sub_685D86(int a1); // void __usercall sub_685D91(int a1); // void __usercall sub_685D9C(int a1); // void __usercall sub_685DA7(int a1); int __cdecl sub_685DB2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685DE0(int a1); // void __usercall sub_685DEB(int a1); // void __usercall sub_685DF6(int a1); void __cdecl sub_685E01(); int __cdecl sub_685E0C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685E40(int a1); // void __usercall sub_685E4B(int a1); // void __usercall sub_685E56(int a1); void __cdecl sub_685E61(); int __cdecl sub_685E6C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685EA0(int a1); // void __usercall sub_685EAB(int a1); // void __usercall sub_685EB6(int a1); // void __usercall sub_685EC1(int a1); int __cdecl sub_685ECC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685F00(int a1); // void __usercall sub_685F0B(int a1); int __cdecl sub_685F16(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685F40(int a1); // void __usercall sub_685F48(int a1); int __cdecl sub_685F53(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_685F70(int a1); int __cdecl sub_685F7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685FB0(int a1); int __cdecl sub_685FBB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_685FE0(int a1); int __cdecl sub_685FEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686020(int a1); // void __usercall sub_68602B(int a1); // void __usercall sub_686036(int a1); // int __usercall sub_686041(int a1); // void __usercall sub_68605A(int a1); // int __usercall sub_686065(int a1); // int __usercall sub_686070(int a1); int __cdecl sub_68607B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6860B0(int a1); // void __usercall sub_6860BB(int a1); int __cdecl sub_6860C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6860F0(int a1); // void __usercall sub_6860FB(int a1); int __cdecl sub_686106(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686130(int a1); // void __usercall sub_68613B(int a1); int __cdecl sub_686146(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686170(int a1); // void __usercall sub_68617B(int a1); // void __usercall sub_686186(int a1); // void __usercall sub_686191(int a1); // void __usercall sub_68619C(int a1); // void __usercall sub_6861A7(int a1); void __cdecl sub_6861B2(); int __cdecl sub_6861BD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6861F0(int a1); // void __usercall sub_6861FB(int a1); // void __usercall sub_686206(int a1); // void __usercall sub_686211(int a1); // void __usercall sub_68621C(int a1); int __cdecl sub_686227(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686250(int a1); // int __usercall sub_686280(int a1); // void __usercall sub_68628B(int a1); // void __usercall sub_686296(int a1); // void __usercall sub_6862A1(int a1); // void __usercall sub_6862AC(int a1); // void __usercall sub_6862B7(int a1); // void __usercall sub_6862C2(int a1); int __cdecl sub_6862CD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686300(int a1); // void __usercall sub_68630B(int a1); // void __usercall sub_686316(int a1); // int __usercall sub_686321(int a1); int __cdecl sub_68632C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686360(int a1); // void __usercall sub_68636B(int a1); // void __usercall sub_686376(int a1); int __cdecl sub_686381(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6863B0(int a1); // void __usercall sub_6863BB(int a1); // void __usercall sub_6863C6(int a1); // void __usercall sub_6863D1(int a1); int __cdecl sub_6863DC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686410(int a1); // void __usercall sub_68641B(int a1); // void __usercall sub_686426(int a1); int __cdecl sub_686431(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686460(int a1); // void __usercall sub_68646B(int a1); // void __usercall sub_686476(int a1); // void __usercall sub_686481(int a1); int __cdecl sub_68648C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6864C0(int a1); // void __usercall sub_6864CB(int a1); // void __usercall sub_6864D6(int a1); // void __usercall sub_6864E1(int a1); // void __usercall sub_6864EC(int a1); // void __usercall sub_6864F7(int a1); // void __usercall sub_686502(int a1); // void __usercall sub_68650D(int a1); int __cdecl sub_686518(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686540(int a1); // void __usercall sub_68654B(int a1); int __cdecl sub_686556(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686580(int a1); // void __usercall sub_68658B(int a1); int __cdecl sub_686596(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6865C0(int a1); // void __usercall sub_6865CB(int a1); // void __usercall sub_6865D6(int a1); int __cdecl sub_6865E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686610(int a1); // void __usercall sub_68661B(int a1); // void __usercall sub_686626(int a1); // void __usercall sub_686631(int a1); void __cdecl sub_68663C(); int __cdecl sub_686647(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686670(int a1); // void __usercall sub_68667B(int a1); // void __usercall sub_686686(int a1); // void __usercall sub_686691(int a1); // void __usercall sub_68669C(int a1); // void __usercall sub_6866A7(int a1); int __cdecl sub_6866B2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6866E0(int a1); // void __usercall sub_6866EB(int a1); // void __usercall sub_6866F6(int a1); // void __usercall sub_686701(int a1); int __cdecl sub_68670C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686740(int a1); // void __usercall sub_68674B(int a1); // void __usercall sub_686756(int a1); void __cdecl sub_686761(); // void __usercall sub_68676C(int a1); void __cdecl sub_686777(); void __cdecl sub_686782(); int __cdecl sub_68678D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6867C0(int a1); // void __usercall sub_6867CB(int a1); // int __usercall sub_6867D6(int a1); int __cdecl sub_6867E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686810(int a1); // void __usercall sub_68681B(int a1); // int __usercall sub_686826(int a1); int __cdecl sub_686831(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686860(int a1); // void __usercall sub_68686B(int a1); int __cdecl sub_686876(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6868A0(int a1); // void __usercall sub_6868AB(int a1); int __cdecl sub_6868B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6868E0(int a1); // void __usercall sub_6868EB(int a1); int __cdecl sub_6868F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686920(int a1); // void __usercall sub_68692B(int a1); // int __usercall sub_686936(int a1); int __cdecl sub_686941(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686970(int a1); // void __usercall sub_68697B(int a1); int __cdecl sub_686986(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6869B0(int a1); // void __usercall sub_6869BB(int a1); int __cdecl sub_6869C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6869F0(int a1); // void __usercall sub_6869FB(int a1); // void __usercall sub_686A06(int a1); // int __usercall sub_686A11(int a1); // int __usercall sub_686A1C(int a1); int __cdecl sub_686A27(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686A50(int a1); // void __usercall sub_686A5B(int a1); // void __usercall sub_686A66(int a1); // void __usercall sub_686A71(int a1); // void __usercall sub_686A7C(int a1); // void __usercall sub_686A87(int a1); int __cdecl sub_686A92(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686AC0(int a1); // void __usercall sub_686ACB(int a1); int __cdecl sub_686AD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686B00(int a1); // void __usercall sub_686B0B(int a1); // void __usercall sub_686B16(int a1); // void __usercall sub_686B21(int a1); int __cdecl sub_686B2C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686B60(int a1); // void __usercall sub_686B6B(int a1); // void __usercall sub_686B76(int a1); // int __usercall sub_686B81(int a1); // int __usercall sub_686B9A(int a1); int __cdecl sub_686BA5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686BD0(int a1); // void __usercall sub_686BDB(int a1); // void __usercall sub_686BE6(int a1); // void __usercall sub_686BF1(int a1); // int __usercall sub_686BFC(int a1); // int __usercall sub_686C15(int a1); int __cdecl sub_686C20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686C50(int a1); // void __usercall sub_686C5B(int a1); // void __usercall sub_686C66(int a1); // void __usercall sub_686C71(int a1); int __cdecl sub_686C7C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686CB0(int a1); // void __usercall sub_686CBB(int a1); // void __usercall sub_686CC6(int a1); // void __usercall sub_686CD1(int a1); // void __usercall sub_686CDC(int a1); int __cdecl sub_686CE7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686D10(int a1); // void __usercall sub_686D1B(int a1); // void __usercall sub_686D26(int a1); // int __usercall sub_686D2E(int a1); // void __usercall sub_686D39(int a1); int __cdecl sub_686D41(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686D70(int a1); // void __usercall sub_686D7B(int a1); // void __usercall sub_686D86(int a1); int __cdecl sub_686D91(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686DC0(int a1); // void __usercall sub_686DCB(int a1); int __cdecl sub_686DD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686E00(int a1); // void __usercall sub_686E08(int a1); int __cdecl sub_686E10(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686E30(int a1); int __cdecl sub_686E38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686E60(int a1); // void __usercall sub_686E6B(int a1); int __cdecl sub_686E76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686EA0(int a1); // void __usercall sub_686EAB(int a1); // void __usercall sub_686EB6(int a1); // void __usercall sub_686EC1(int a1); // int __usercall sub_686ECC(int a1); int __cdecl sub_686ED7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686F00(int a1); // void __usercall sub_686F0B(int a1); // void __usercall sub_686F16(int a1); int __cdecl sub_686F21(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686F50(int a1); // void __usercall sub_686F5B(int a1); // void __usercall sub_686F66(int a1); // void __usercall sub_686F71(int a1); // void __usercall sub_686F7C(int a1); int __cdecl sub_686F87(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_686FB0(int a1); // int __usercall sub_686FE0(int a1); // void __usercall sub_686FEB(int a1); // void __usercall sub_686FF6(int a1); // void __usercall sub_687001(int a1); // void __usercall sub_68700C(int a1); int __cdecl sub_687017(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687040(int a1); // void __usercall sub_68704B(int a1); // void __usercall sub_687056(int a1); int __cdecl sub_687061(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687090(int a1); // void __usercall sub_68709B(int a1); // void __usercall sub_6870A6(int a1); int __cdecl sub_6870B1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6870E0(int a1); // void __usercall sub_6870EB(int a1); // void __usercall sub_6870F6(int a1); // void __usercall sub_687101(int a1); int __cdecl sub_687109(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687140(int a1); // void __usercall sub_68714B(int a1); // void __usercall sub_687156(int a1); void __cdecl sub_687161(); int __cdecl sub_68716C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6871A0(int a1); // int __usercall sub_6871AB(int a1); // void __usercall sub_6871B6(int a1); int __cdecl sub_6871C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6871F0(int a1); // int __usercall sub_6871FB(int a1); // void __usercall sub_687206(int a1); // void __usercall sub_68720E(int a1); // void __usercall sub_687216(int a1); int __cdecl sub_687221(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687250(int a1); // int __usercall sub_68725B(int a1); // void __usercall sub_687266(int a1); // void __usercall sub_68726E(int a1); int __cdecl sub_687276(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6872A0(int a1); // void __usercall sub_6872AB(int a1); // void __usercall sub_6872B6(int a1); int __cdecl sub_6872C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6872F0(int a1); // void __usercall sub_6872FB(int a1); // void __usercall sub_687306(int a1); // void __usercall sub_68730E(int a1); // void __usercall sub_687316(int a1); int __cdecl sub_687321(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687350(int a1); // void __usercall sub_68735B(int a1); // void __usercall sub_687366(int a1); // void __usercall sub_68736E(int a1); int __cdecl sub_687379(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6873B0(int a1); // int __usercall sub_6873BB(int a1); // void __usercall sub_6873C6(int a1); // void __usercall sub_6873CE(int a1); // int __usercall sub_6873D9(int a1); int __cdecl sub_6873E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687410(int a1); int __cdecl sub_687418(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687440(int a1); int __cdecl sub_68744B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687480(int a1); int __cdecl sub_68748B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6874C0(int a1); // void __usercall sub_6874C8(int a1); int __cdecl sub_6874D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6874F0(int a1); // void __usercall sub_687520(int a1); int __cdecl sub_687528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687550(int a1); // void __usercall sub_687558(int a1); // void __usercall sub_687560(int a1); int __cdecl sub_687568(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687590(int a1); // void __usercall sub_687598(int a1); // void __usercall sub_6875C0(int a1); int __cdecl sub_6875CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687600(int a1); int __cdecl sub_687608(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687630(int a1); // void __usercall sub_68763B(int a1); int __cdecl sub_687649(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687680(int a1); // void __usercall sub_68768B(int a1); int __cdecl sub_687699(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6876D0(int a1); // void __usercall sub_6876DB(int a1); int __cdecl sub_6876E9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687710(int a1); // void __usercall sub_68771B(int a1); int __cdecl sub_687729(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687750(int a1); // int __usercall sub_687758(int a1); // int __usercall sub_687771(int a1); int __cdecl sub_68778C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6877B0(int a1); // void __usercall sub_6877B8(int a1); int __cdecl sub_6877C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6877E0(int a1); // void __usercall sub_6877EB(int a1); // void __usercall sub_6877F6(int a1); int __cdecl sub_687801(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_687830(); int __cdecl sub_687838(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687860(int a1); // int __usercall sub_687868(int a1); int __cdecl sub_687870(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687890(int a1); int __cdecl sub_68789B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6878D0(int a1); int __cdecl sub_6878D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687900(int a1); // void __usercall sub_68790B(int a1); // void __usercall sub_687916(int a1); void __cdecl sub_687921(); // void __usercall sub_68792C(int a1); int __cdecl sub_687937(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687960(int a1); // void __usercall sub_68796B(int a1); void __cdecl sub_687976(); // void __usercall sub_687981(int a1); int __cdecl sub_68798C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6879C0(); // int __usercall sub_6879C8(int a1); // int __usercall sub_6879E1(int a1); int __cdecl sub_6879FC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687A20(int a1); // void __usercall sub_687A28(int a1); int __cdecl sub_687A33(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687A50(int a1); int __cdecl sub_687A5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_687A90(); int __cdecl sub_687A9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687AC0(int a1); // void __usercall sub_687AC8(int a1); int __cdecl sub_687AD0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687AF0(int a1); int __cdecl sub_687AFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687B30(int a1); // void __usercall sub_687B38(int a1); int __cdecl sub_687B40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687B60(int a1); int __cdecl sub_687B68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687B90(int a1); int __cdecl sub_687B9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_687BD0(); int __cdecl sub_687BD8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_687C00(); int __cdecl sub_687C08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687C30(int a1); // int __usercall sub_687C38(int a1); // int __usercall sub_687C70(int a1); // void __usercall sub_687C7B(int a1); int __cdecl sub_687C86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687CB0(int a1); int __cdecl sub_687CB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687CE0(int a1); int __cdecl sub_687CE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687D10(int a1); // void __usercall sub_687D18(int a1); int __cdecl sub_687D20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687D40(int a1); int __cdecl sub_687D48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687DA0(int a1); // void __usercall sub_687DA8(int a1); int __cdecl sub_687DB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687DD0(int a1); // int __usercall sub_687E00(int a1); int __cdecl sub_687E08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687E30(int a1); // void __usercall sub_687E3B(int a1); int __cdecl sub_687E46(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_687E70(int a1); int __cdecl sub_687E78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687EA0(int a1); // void __usercall sub_687EA8(int a1); int __cdecl sub_687EB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687ED0(int a1); int __cdecl sub_687EDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687F10(int a1); int __cdecl sub_687F1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687F50(int a1); // void __usercall sub_687F5B(int a1); // void __usercall sub_687F66(int a1); int __cdecl sub_687F71(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687FA0(int a1); int __cdecl sub_687FAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_687FE0(int a1); // void __usercall sub_687FE8(int a1); // int __usercall sub_688010(int a1); // void __usercall sub_68801B(int a1); // void __usercall sub_688026(int a1); // void __usercall sub_688031(int a1); int __cdecl sub_68803C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688070(int a1); // int __usercall sub_6880A0(int a1); // void __usercall sub_6880AB(int a1); int __cdecl sub_6880B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688110(int a1); int __cdecl sub_68811B(); int __cdecl sub_688129(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688160(int a1); // void __usercall sub_68816B(int a1); int __cdecl sub_688173(); // void __usercall sub_688181(int a1); // void __usercall sub_688189(int a1); int __cdecl sub_688191(); // void __usercall sub_68819F(int a1); // void __usercall sub_6881AA(int a1); int __cdecl sub_6881B5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6881E0(int a1); int __cdecl sub_6881E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688210(int a1); int __cdecl sub_688218(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688240(int a1); // void __usercall sub_68824B(int a1); int __cdecl sub_688256(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688280(int a1); // void __usercall sub_68828B(int a1); int __cdecl sub_688296(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6882C0(int a1); // void __usercall sub_6882C8(int a1); // void __usercall sub_6882D0(int a1); int __cdecl sub_6882D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688300(int a1); // void __usercall sub_68830B(int a1); // void __usercall sub_688316(int a1); // void __usercall sub_688321(int a1); // void __usercall sub_68832C(int a1); int __cdecl sub_688334(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688360(int a1); // void __usercall sub_68836B(int a1); int __cdecl sub_688376(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6883A0(int a1); // void __usercall sub_6883A8(int a1); // void __usercall sub_6883B0(int a1); // void __usercall sub_6883E0(int a1); // void __usercall sub_6883E8(int a1); int __cdecl sub_6883F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_688420(int a1); int __cdecl sub_688428(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688450(int a1); // void __usercall sub_68845B(int a1); int __cdecl sub_688466(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688490(int a1); // int __usercall sub_6884C0(int a1); int __cdecl sub_6884CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688500(int a1); // void __usercall sub_688508(int a1); int __cdecl sub_688510(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688530(int a1); // void __usercall sub_68853B(int a1); // void __usercall sub_688546(int a1); int __cdecl sub_688551(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688580(int a1); int __cdecl sub_68858B(); int __cdecl sub_688596(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6885C0(int a1); int __cdecl sub_6885CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688600(int a1); int __cdecl sub_688608(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688630(int a1); // void __usercall sub_68863B(int a1); int __cdecl sub_688646(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688670(int a1); int __cdecl sub_68867B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6886B0(int a1); int __cdecl sub_6886BB(); int __cdecl sub_6886C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6886F0(int a1); int __cdecl sub_6886F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_688720(int a1); int __cdecl sub_688728(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688750(int a1); int __cdecl sub_688758(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_688780(); int __cdecl sub_688788(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6887E0(int a1); // int __usercall sub_688810(int a1); int __cdecl sub_688818(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688840(int a1); int __cdecl sub_688848(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688870(int a1); // void __usercall sub_688878(int a1); int __cdecl sub_688880(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6888A0(int a1); int __cdecl sub_6888AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688940(int a1); int __cdecl sub_68894B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688980(int a1); int __cdecl sub_68898B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6889C0(int a1); // void __usercall sub_6889C8(int a1); int __cdecl sub_6889D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688A20(int a1); // void __usercall sub_688A28(int a1); int __cdecl sub_688A30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688A60(int a1); int __cdecl sub_688A6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688AA0(int a1); // void __usercall sub_688AAB(int a1); // void __usercall sub_688AB6(int a1); int __cdecl sub_688AC1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688AF0(int a1); int __cdecl sub_688AF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688B20(int a1); int __cdecl sub_688B2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_688B60(int a1); int __cdecl sub_688B68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688B90(int a1); // void __usercall sub_688B98(int a1); // int __usercall sub_688BC0(int a1); // void __usercall sub_688BC8(int a1); // int __usercall sub_688BF0(int a1); int __cdecl sub_688BFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688C30(int a1); // void __usercall sub_688C38(int a1); // void __usercall sub_688C40(int a1); // void __usercall sub_688C48(int a1); // void __usercall sub_688C50(int a1); int __cdecl sub_688C58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688C80(int a1); int __cdecl sub_688C88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688CB0(int a1); int __cdecl sub_688CB8(); int __cdecl sub_688CC6(); int __cdecl sub_688CD4(); int __cdecl sub_688CE2(); int __cdecl sub_688CF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688D10(int a1); int __cdecl sub_688D18(); int __cdecl sub_688D26(); int __cdecl sub_688D34(); int __cdecl sub_688D42(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688D60(int a1); int __cdecl sub_688D6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688DA0(int a1); int __cdecl sub_688DAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688DE0(int a1); // int __usercall sub_688E10(int a1); int __cdecl sub_688E1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688E50(int a1); // void __usercall sub_688E80(int a1); int __cdecl sub_688E88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688EB0(int a1); // void __usercall sub_688EB8(int a1); int __cdecl sub_688EC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688EE0(int a1); int __cdecl sub_688EE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688F10(int a1); // void __usercall sub_688F18(int a1); // void __usercall sub_688F20(int a1); // int __usercall sub_688F50(int a1); int __cdecl sub_688F58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688F80(int a1); // void __usercall sub_688F8B(int a1); // void __usercall sub_688F96(int a1); // void __usercall sub_688FA1(int a1); int __cdecl sub_688FAC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_688FE0(int a1); // void __usercall sub_688FEB(int a1); int __cdecl sub_688FF6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689020(int a1); // void __usercall sub_68902B(int a1); int __cdecl sub_689036(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689060(int a1); // void __usercall sub_68906B(int a1); // void __usercall sub_689076(int a1); // void __usercall sub_689081(int a1); int __cdecl sub_68908C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6890C0(int a1); int __cdecl sub_6890CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689100(int a1); // void __usercall sub_689108(int a1); int __cdecl sub_689110(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689130(int a1); // void __usercall sub_689138(int a1); // void __usercall sub_689140(int a1); // void __usercall sub_689170(int a1); int __cdecl sub_689178(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6891A0(int a1); // void __usercall sub_6891AB(int a1); void __cdecl sub_6891B6(); int __cdecl sub_6891C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6891F0(int a1); // int __usercall sub_6891F8(int a1); // int __usercall sub_689206(int a1); // int __usercall sub_689214(int a1); int __cdecl sub_689222(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689240(int a1); // void __usercall sub_689248(int a1); // void __usercall sub_689253(int a1); int __cdecl sub_68925E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689280(int a1); // int __usercall sub_689288(int a1); // int __usercall sub_689296(int a1); // int __usercall sub_6892A4(int a1); // int __usercall sub_6892B2(int a1); int __cdecl sub_6892BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6892E0(int a1); // int __usercall sub_6892E8(int a1); // int __usercall sub_6892F0(int a1); // int __usercall sub_6892FE(int a1); // int __usercall sub_68930C(int a1); int __cdecl sub_68931A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689340(int a1); // void __usercall sub_68934B(int a1); int __cdecl sub_689356(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689380(int a1); int __cdecl sub_68938B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6893B0(int a1); // int __usercall sub_6893BB(int a1); // int __usercall sub_6893C9(int a1); int __cdecl sub_6893D7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689400(int a1); // void __usercall sub_689408(int a1); // void __usercall sub_689413(int a1); // void __usercall sub_68941E(int a1); // void __usercall sub_689429(int a1); // void __usercall sub_689434(int a1); // void __usercall sub_68943F(int a1); // void __usercall sub_68944A(int a1); // void __usercall sub_689455(int a1); // void __usercall sub_689460(int a1); int __cdecl sub_68946E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_689490(); int __cdecl sub_68949E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6894C0(int a1); int __cdecl sub_6894CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689500(int a1); int __cdecl sub_689508(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689530(int a1); void __cdecl sub_68953B(); int __cdecl sub_689546(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689570(int a1); void __cdecl sub_68957B(); int __cdecl sub_689586(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6895B0(int a1); void __cdecl sub_6895BB(); int __cdecl sub_6895C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6895F0(int a1); void __cdecl sub_6895FB(); int __cdecl sub_689606(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689630(int a1); int __cdecl sub_689638(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689660(int a1); // void __usercall sub_689668(int a1); // void __usercall sub_689676(int a1); // void __usercall sub_689684(int a1); // void __usercall sub_689692(int a1); // void __usercall sub_6896A0(int a1); int __cdecl sub_6896AE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6896D0(int a1); // void __usercall sub_6896D8(int a1); // void __usercall sub_6896E6(int a1); // void __usercall sub_6896F4(int a1); // void __usercall sub_689702(int a1); void __cdecl sub_689710(); int __cdecl sub_68971E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689740(int a1); // void __usercall sub_689748(int a1); void __cdecl sub_689753(); void __cdecl sub_68975E(); void __cdecl sub_68976C(); void __cdecl sub_68977A(); void __cdecl sub_689788(); void __cdecl sub_689796(); void __cdecl sub_6897A4(); void __cdecl sub_6897B2(); void __cdecl sub_6897C0(); void __cdecl sub_6897CE(); void __cdecl sub_6897DC(); void __cdecl sub_6897EA(); int __cdecl sub_6897F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689820(int a1); // int __usercall sub_689850(int a1); // void __usercall sub_689858(int a1); int __cdecl sub_689860(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689880(int a1); // void __usercall sub_689888(int a1); int __cdecl sub_689890(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6898B0(int a1); void __cdecl sub_6898B8(); int __cdecl sub_6898C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6898E0(); int __cdecl sub_6898E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689910(int a1); int __cdecl sub_68991B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689950(int a1); int __cdecl sub_68995B(); int __cdecl sub_689969(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6899A0(int a1); // int __usercall sub_6899D0(int a1); int __cdecl sub_6899D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689A30(int a1); int __cdecl sub_689A38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689A60(int a1); // int __usercall sub_689A68(int a1); int __cdecl sub_689A70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689A90(int a1); int __cdecl sub_689A9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_689AC0(); int __cdecl sub_689AC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689AF0(int a1); void __cdecl sub_689AF8(); int __cdecl sub_689B00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689B20(int a1); int __cdecl sub_689B28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689B50(int a1); // void __usercall sub_689B5B(int a1); // void __usercall sub_689B63(int a1); // void __usercall sub_689B6E(int a1); int __cdecl sub_689B79(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689BA0(int a1); int __cdecl sub_689BA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689BD0(int a1); // void __usercall sub_689BD8(int a1); // int __usercall sub_689BE6(int a1); // void __usercall sub_689BF4(int a1); int __cdecl sub_689C02(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689C20(int a1); int __cdecl sub_689C28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689C50(int a1); // int __usercall sub_689C58(int a1); // int __usercall sub_689C63(int a1); // int __usercall sub_689C71(int a1); int __cdecl sub_689C7F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689CA0(int a1); int __cdecl sub_689CA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689CD0(int a1); // void __usercall sub_689CD8(int a1); // void __usercall sub_689CE6(int a1); // void __usercall sub_689CF4(int a1); // void __usercall sub_689D02(int a1); // void __usercall sub_689D10(int a1); // void __usercall sub_689D1E(int a1); int __cdecl sub_689D29(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689D50(int a1); int __cdecl sub_689D58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_689D80(); void __cdecl sub_689D88(); void __cdecl sub_689D93(); void __cdecl sub_689D9E(); void __cdecl sub_689DAC(); void __cdecl sub_689DBA(); void __cdecl sub_689DC8(); void __cdecl sub_689DD6(); void __cdecl sub_689DE4(); void __cdecl sub_689DF2(); void __cdecl sub_689E00(); void __cdecl sub_689E0E(); void __cdecl sub_689E1C(); int __cdecl sub_689E2A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_689E50(int a1); // void __usercall sub_689E58(int a1); int __cdecl sub_689E60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689E80(int a1); // void __usercall sub_689E8B(int a1); // void __usercall sub_689E93(int a1); // void __usercall sub_689E9E(int a1); // void __usercall sub_689EA9(int a1); // void __usercall sub_689EB4(int a1); int __cdecl sub_689EBF(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689EE0(int a1); int __cdecl sub_689EE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689F10(int a1); // void __usercall sub_689F18(int a1); // int __usercall sub_689F26(int a1); // void __usercall sub_689F34(int a1); // void __usercall sub_689F42(int a1); int __cdecl sub_689F50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_689F70(int a1); // void __usercall sub_689F78(int a1); // void __usercall sub_689F86(int a1); // void __usercall sub_689F94(int a1); // void __usercall sub_689FA2(int a1); // void __usercall sub_689FB0(int a1); // void __usercall sub_689FBE(int a1); // int __usercall sub_689FCC(int a1); // void __usercall sub_689FDA(int a1); // int __usercall sub_689FE8(int a1); // void __usercall sub_689FF6(int a1); // void __usercall sub_68A004(int a1); // void __usercall sub_68A012(int a1); // void __usercall sub_68A020(int a1); // int __usercall sub_68A02E(int a1); // int __usercall sub_68A03C(int a1); // int __usercall sub_68A04A(int a1); // int __usercall sub_68A058(int a1); // void __usercall sub_68A066(int a1); // int __usercall sub_68A074(int a1); // void __usercall sub_68A082(int a1); // void __usercall sub_68A090(int a1); // int __usercall sub_68A09E(int a1); // void __usercall sub_68A0AC(int a1); // void __usercall sub_68A0BA(int a1); // void __usercall sub_68A0C8(int a1); // void __usercall sub_68A0D6(int a1); // int __usercall sub_68A0E4(int a1); // void __usercall sub_68A0F2(int a1); // void __usercall sub_68A100(int a1); // void __usercall sub_68A10E(int a1); // void __usercall sub_68A11C(int a1); // void __usercall sub_68A12A(int a1); // void __usercall sub_68A138(int a1); // void __usercall sub_68A146(int a1); // void __usercall sub_68A154(int a1); // void __usercall sub_68A162(int a1); // void __usercall sub_68A16A(int a1); // void __usercall sub_68A175(int a1); // void __usercall sub_68A180(int a1); int __cdecl sub_68A18B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A1B0(int a1); int __cdecl sub_68A1B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A1E0(int a1); int __cdecl sub_68A1E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A210(int a1); // int __usercall sub_68A218(int a1); // int __usercall sub_68A223(int a1); // int __usercall sub_68A231(int a1); // int __usercall sub_68A23F(int a1); int __cdecl sub_68A24D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A270(int a1); // void __usercall sub_68A278(int a1); // void __usercall sub_68A286(int a1); // void __usercall sub_68A294(int a1); // void __usercall sub_68A2A2(int a1); // void __usercall sub_68A2B0(int a1); // void __usercall sub_68A2BB(int a1); // void __usercall sub_68A2C9(int a1); // void __usercall sub_68A2D7(int a1); int __cdecl sub_68A2E5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A300(int a1); int __cdecl sub_68A308(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A330(int a1); // void __usercall sub_68A33B(int a1); int __cdecl sub_68A346(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A370(int a1); int __cdecl sub_68A378(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A3A0(int a1); int __cdecl sub_68A3A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A3D0(int a1); // void __usercall sub_68A3D8(int a1); // void __usercall sub_68A3E6(int a1); void __cdecl sub_68A3F4(); // void __usercall sub_68A402(int a1); // void __usercall sub_68A410(int a1); // void __usercall sub_68A41E(int a1); // int __usercall sub_68A42C(int a1); // void __usercall sub_68A43A(int a1); // int __usercall sub_68A448(int a1); // void __usercall sub_68A456(int a1); // void __usercall sub_68A464(int a1); // void __usercall sub_68A472(int a1); // void __usercall sub_68A480(int a1); // void __usercall sub_68A48B(int a1); // void __usercall sub_68A496(int a1); void __cdecl sub_68A4A4(); // int __usercall sub_68A4B2(int a1); // int __usercall sub_68A4C0(int a1); // int __usercall sub_68A4CE(int a1); // void __usercall sub_68A4DC(int a1); // void __usercall sub_68A4E7(int a1); // int __usercall sub_68A4F5(int a1); // void __usercall sub_68A503(int a1); // void __usercall sub_68A511(int a1); // int __usercall sub_68A51F(int a1); void __cdecl sub_68A52D(); // void __usercall sub_68A53B(int a1); // void __usercall sub_68A549(int a1); void __cdecl sub_68A557(); // int __usercall sub_68A565(int a1); // void __usercall sub_68A573(int a1); // void __usercall sub_68A57B(int a1); // void __usercall sub_68A589(int a1); // void __usercall sub_68A597(int a1); // void __usercall sub_68A5A5(int a1); void __cdecl sub_68A5B3(); // void __usercall sub_68A5C1(int a1); // void __usercall sub_68A5CF(int a1); // void __usercall sub_68A5DD(int a1); // void __usercall sub_68A5EB(int a1); int __cdecl sub_68A5F9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A620(int a1); // void __usercall sub_68A633(int a1); // void __usercall sub_68A63E(int a1); // void __usercall sub_68A649(int a1); // void __usercall sub_68A654(int a1); // void __usercall sub_68A66A(int a1); // void __usercall sub_68A675(int a1); // void __usercall sub_68A680(int a1); // void __usercall sub_68A68B(int a1); // void __usercall sub_68A696(int a1); // void __usercall sub_68A6A1(int a1); // void __usercall sub_68A6AC(int a1); int __cdecl sub_68A6B7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68A6E0(); int __cdecl sub_68A6EA(); int __cdecl sub_68A6F4(); int __cdecl sub_68A6FE(); int __cdecl sub_68A708(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A730(int a1); // void __usercall sub_68A738(int a1); // int __usercall sub_68A740(int a1); int __cdecl sub_68A748(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A770(int a1); int __cdecl sub_68A778(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A7A0(int a1); // void __usercall sub_68A7A8(int a1); int __cdecl sub_68A7B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A7D0(int a1); int __cdecl sub_68A7D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A800(int a1); // void __usercall sub_68A808(int a1); int __cdecl sub_68A816(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A840(int a1); // void __usercall sub_68A848(int a1); int __cdecl sub_68A850(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A870(int a1); int __cdecl sub_68A878(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A8A0(int a1); // void __usercall sub_68A8AB(int a1); int __cdecl sub_68A8B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A8E0(int a1); // void __usercall sub_68A8EB(int a1); int __cdecl sub_68A8F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68A920(int a1); // int __usercall sub_68A928(int a1); int __cdecl sub_68A930(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A950(int a1); // void __usercall sub_68A95B(int a1); // void __usercall sub_68A966(int a1); int __cdecl sub_68A971(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68A990(); int __cdecl sub_68A99E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68A9C0(int a1); // void __usercall sub_68A9F0(int a1); // void __usercall sub_68A9FB(int a1); // void __usercall sub_68AA06(int a1); // void __usercall sub_68AA11(int a1); int __cdecl sub_68AA19(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68AA50(int a1); int __cdecl sub_68AA61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68AA80(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68AAA0(int a1); // void __usercall sub_68AAA8(int a1); // void __usercall sub_68AAB0(int a1); int __cdecl sub_68AAB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AB10(int a1); // int __usercall sub_68AB1B(int a1); // int __usercall sub_68AB26(int a1); int __cdecl sub_68AB31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AB60(int a1); int __cdecl sub_68AB68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68AB90(int a1); int __cdecl sub_68AB9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68ABD0(int a1); // void __usercall sub_68ABD8(int a1); int __cdecl sub_68ABE0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AC00(int a1); // int __usercall sub_68AC30(int a1); // void __usercall sub_68AC38(int a1); // int __usercall sub_68AC40(int a1); // void __usercall sub_68AC48(int a1); // void __usercall sub_68AC50(int a1); int __cdecl sub_68AC58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68ACB0(int a1); // void __usercall sub_68ACB8(int a1); // void __usercall sub_68ACC0(int a1); // void __usercall sub_68ACC8(int a1); // void __usercall sub_68ACD0(int a1); // void __usercall sub_68ACD8(int a1); // int __usercall sub_68ACE0(int a1); // void __usercall sub_68ACE8(int a1); // void __usercall sub_68ACF0(int a1); int __cdecl sub_68ACF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AD20(int a1); // void __usercall sub_68AD28(int a1); // void __usercall sub_68AD30(int a1); // int __usercall sub_68AD38(int a1); // void __usercall sub_68AD40(int a1); // void __usercall sub_68AD48(int a1); int __cdecl sub_68AD50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AD70(int a1); // void __usercall sub_68AD78(int a1); // int __usercall sub_68AD80(int a1); // void __usercall sub_68AD88(int a1); int __cdecl sub_68AD90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68ADB0(int a1); // void __usercall sub_68ADB8(int a1); int __cdecl sub_68ADC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68ADE0(int a1); int __cdecl sub_68ADEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AE20(int a1); int __cdecl sub_68AE28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AE50(int a1); int __cdecl sub_68AE5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AE90(int a1); // void __usercall sub_68AE98(int a1); // int __usercall sub_68AEA0(int a1); int __cdecl sub_68AEA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68AED0(int a1); // void __usercall sub_68AEDB(int a1); int __cdecl sub_68AEE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68AF10(int a1); // int __usercall sub_68AF18(int a1); // int __usercall sub_68AF40(int a1); // void __usercall sub_68AF48(int a1); int __cdecl sub_68AF50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68AF70(int a1); int __cdecl sub_68AF7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68AFB0(int a1); // int __usercall sub_68AFE0(int a1); int __cdecl sub_68AFE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B010(int a1); // void __usercall sub_68B040(int a1); int __cdecl sub_68B048(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B070(int a1); // int __usercall sub_68B078(int a1); int __cdecl sub_68B080(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B0A0(int a1); // void __usercall sub_68B0AB(int a1); int __cdecl sub_68B0B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B0E0(int a1); int __cdecl sub_68B0EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B120(int a1); int __cdecl sub_68B12B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B150(int a1); // int __usercall sub_68B158(int a1); // int __usercall sub_68B160(int a1); int __cdecl sub_68B168(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B190(int a1); // void __usercall sub_68B198(int a1); // int __usercall sub_68B1A0(int a1); int __cdecl sub_68B1A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B1D0(int a1); // int __usercall sub_68B200(int a1); // void __usercall sub_68B208(int a1); // void __usercall sub_68B240(int a1); int __cdecl sub_68B248(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B270(int a1); // void __usercall sub_68B27B(int a1); // void __usercall sub_68B286(int a1); // void __usercall sub_68B291(int a1); // void __usercall sub_68B29C(int a1); int __cdecl sub_68B2A7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B2D0(int a1); int __cdecl sub_68B2D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B300(int a1); // void __usercall sub_68B30B(int a1); // void __usercall sub_68B316(int a1); int __cdecl sub_68B321(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B350(int a1); // void __usercall sub_68B358(int a1); int __cdecl sub_68B360(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B380(int a1); // void __usercall sub_68B38B(int a1); // void __usercall sub_68B396(int a1); // void __usercall sub_68B3A1(int a1); // void __usercall sub_68B3AC(int a1); // void __usercall sub_68B3B7(int a1); // void __usercall sub_68B3C2(int a1); // void __usercall sub_68B3CD(int a1); // void __usercall sub_68B3D8(int a1); // void __usercall sub_68B3E3(int a1); // void __usercall sub_68B3EE(int a1); int __cdecl sub_68B3F9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B430(int a1); // void __usercall sub_68B43B(int a1); // void __usercall sub_68B443(int a1); int __cdecl sub_68B44B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B480(int a1); // void __usercall sub_68B48B(int a1); // void __usercall sub_68B496(int a1); int __cdecl sub_68B49E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B4D0(int a1); // int __usercall sub_68B500(int a1); // int __usercall sub_68B508(int a1); // void __usercall sub_68B510(int a1); int __cdecl sub_68B518(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B540(int a1); // void __usercall sub_68B548(int a1); // void __usercall sub_68B550(int a1); // void __usercall sub_68B558(int a1); int __cdecl sub_68B560(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B580(int a1); // void __usercall sub_68B588(int a1); int __cdecl sub_68B590(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B5B0(); int __cdecl sub_68B5BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B5E0(); int __cdecl sub_68B5EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B610(); int __cdecl sub_68B61A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B640(); int __cdecl sub_68B64A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B670(); int __cdecl sub_68B67A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B6A0(int a1); // void __usercall sub_68B6A8(int a1); // void __usercall sub_68B6B6(int a1); // void __usercall sub_68B6C4(int a1); int __cdecl sub_68B6D2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B6F0(); void __cdecl sub_68B6F8(); void __cdecl sub_68B706(); void __cdecl sub_68B714(); int __cdecl sub_68B722(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B740(int a1); int __cdecl sub_68B74B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68B770(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B790(int a1); int __cdecl sub_68B79E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B7D0(); int __cdecl sub_68B7DA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B800(); int __cdecl sub_68B80A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B830(int a1); int __cdecl sub_68B838(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68B860(); int __cdecl sub_68B86A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B890(int a1); // void __usercall sub_68B898(int a1); // int __usercall sub_68B8C0(int a1); int __cdecl sub_68B8CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B900(int a1); int __cdecl sub_68B90B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68B940(int a1); // void __usercall sub_68B94B(int a1); int __cdecl sub_68B956(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68B980(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68B9A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68B9C0(int a1); int __cdecl sub_68B9D1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68B9F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68BA10(int a1); // void __usercall sub_68BA1B(int a1); int __cdecl sub_68BA26(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BA50(int a1); int __cdecl sub_68BA58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BA80(int a1); // int __usercall sub_68BA8B(int a1); // int __usercall sub_68BA96(int a1); int __cdecl sub_68BAA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BAD0(int a1); // int __usercall sub_68BADB(int a1); int __cdecl sub_68BAE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BB10(int a1); // void __usercall sub_68BB18(int a1); // void __usercall sub_68BB20(int a1); int __cdecl sub_68BB28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BB50(int a1); // void __usercall sub_68BB5B(int a1); int __cdecl sub_68BB66(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BB90(int a1); int __cdecl sub_68BB9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BBD0(int a1); // void __usercall sub_68BC00(int a1); // void __usercall sub_68BC08(int a1); int __cdecl sub_68BC10(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BC40(int a1); // int __usercall sub_68BC48(int a1); // int __usercall sub_68BC50(int a1); int __cdecl sub_68BC58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BC80(int a1); // void __usercall sub_68BC88(int a1); // void __usercall sub_68BC90(int a1); int __cdecl sub_68BC98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BCC0(int a1); int __cdecl sub_68BCC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BCF0(int a1); // void __usercall sub_68BCFB(int a1); // int __usercall sub_68BD06(int a1); int __cdecl sub_68BD11(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BD40(int a1); // void __usercall sub_68BD4B(int a1); int __cdecl sub_68BD56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BD80(int a1); // void __usercall sub_68BD88(int a1); int __cdecl sub_68BD90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BDB0(int a1); int __cdecl sub_68BDBB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BDF0(int a1); // void __usercall sub_68BDFB(int a1); int __cdecl sub_68BE06(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BE30(int a1); int __cdecl sub_68BE38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BE60(int a1); int __cdecl sub_68BE6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BEA0(int a1); int __cdecl sub_68BEAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BEE0(int a1); int __cdecl sub_68BEE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BF10(int a1); int __cdecl sub_68BF18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68BF40(int a1); // void __usercall sub_68BF4B(int a1); void __cdecl sub_68BF56(); int __cdecl sub_68BF61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BF90(int a1); // void __usercall sub_68BF9B(int a1); void __cdecl sub_68BFA6(); int __cdecl sub_68BFB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68BFE0(int a1); int __cdecl sub_68BFE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C010(int a1); int __cdecl sub_68C018(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int (__stdcall **__usercall sub_68C040(int a1))(int, int); int __cdecl sub_68C04B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int (__stdcall **__usercall sub_68C070(int a1))(int, int); // void __usercall sub_68C07B(int a1); // void __usercall sub_68C089(int a1); int __cdecl sub_68C097(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C0C0(int a1); int __cdecl sub_68C0CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C100(int a1); int __cdecl sub_68C108(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C130(int a1); int __cdecl sub_68C13B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C170(int a1); // void __usercall sub_68C178(int a1); int __cdecl sub_68C180(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C1A0(int a1); int __cdecl sub_68C1AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C1E0(int a1); // void __usercall sub_68C1EB(int a1); int __cdecl sub_68C1F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C220(int a1); // void __usercall sub_68C22B(int a1); int __cdecl sub_68C236(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C260(int a1); // HANDLE __usercall sub_68C26B(int a1); // void __usercall sub_68C279(int a1); int __cdecl sub_68C287(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C2B0(int a1); // void __usercall sub_68C2BB(int a1); // int __usercall sub_68C2C6(int a1); // void __usercall sub_68C2DC(int a1); // void __usercall sub_68C2EA(int a1); // void __usercall sub_68C2F5(int a1); int __cdecl sub_68C300(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C330(int a1); // HANDLE __usercall sub_68C33B(int a1); // void __usercall sub_68C349(int a1); int __cdecl sub_68C357(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C380(int a1); // void __usercall sub_68C38B(int a1); int __cdecl sub_68C399(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C3D0(int a1); int __cdecl sub_68C3D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C400(int a1); // void __usercall sub_68C40B(int a1); int __cdecl sub_68C416(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68C440(); int __cdecl sub_68C44A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C470(int a1); int __cdecl sub_68C47B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C4B0(int a1); int __cdecl sub_68C4BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C4E0(int a1); int __cdecl sub_68C4E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C510(int a1); int __cdecl sub_68C51B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C550(int a1); int __cdecl sub_68C558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68C580(); // void __usercall sub_68C588(int a1); int __cdecl sub_68C593(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68C5B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68C5D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68C5F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68C610(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68C630(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C650(int a1); // void __usercall sub_68C658(int a1); int __cdecl sub_68C660(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C690(int a1); int __cdecl sub_68C69B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C6D0(int a1); // void __usercall sub_68C6DB(int a1); // void __usercall sub_68C710(int a1); // void __usercall sub_68C740(int a1); int __cdecl sub_68C74B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C780(int a1); int __cdecl sub_68C78B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C7C0(int a1); int __cdecl sub_68C7CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C800(int a1); int __cdecl sub_68C80B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C840(int a1); int __cdecl sub_68C84B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C880(int a1); int __cdecl sub_68C88B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C8C0(int a1); int __cdecl sub_68C8CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C900(int a1); int __cdecl sub_68C90B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C940(int a1); int __cdecl sub_68C94B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68C980(); int __cdecl sub_68C98A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68C9B0(int a1); int __cdecl sub_68C9BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68C9F0(int a1); int __cdecl sub_68C9FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CA30(int a1); int __cdecl sub_68CA38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CA60(int a1); int __cdecl sub_68CA68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CA90(int a1); int __cdecl sub_68CA98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CAC0(int a1); // void __usercall sub_68CAC8(int a1); int __cdecl sub_68CAD0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CAF0(int a1); int __cdecl sub_68CAF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CB20(int a1); // void __usercall sub_68CB2B(int a1); int __cdecl sub_68CB36(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CB60(int a1); // int __usercall sub_68CB68(int a1); int __cdecl sub_68CB70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CB90(int a1); // int __usercall sub_68CB98(int a1); // int __usercall sub_68CBA0(int a1); // int __usercall sub_68CBA8(int a1); int __cdecl sub_68CBB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CBD0(int a1); // int __usercall sub_68CBD8(int a1); // int __usercall sub_68CBE0(int a1); // int __usercall sub_68CBE8(int a1); // int __usercall sub_68CBF0(int a1); // int __usercall sub_68CBF8(int a1); // int __usercall sub_68CC00(int a1); int __cdecl sub_68CC08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CC30(int a1); int __cdecl sub_68CC38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CC60(int a1); // int __usercall sub_68CC6B(int a1); // int __usercall sub_68CC76(int a1); // int __usercall sub_68CC81(int a1); // int __usercall sub_68CC8C(int a1); // int __usercall sub_68CC97(int a1); // int __usercall sub_68CCA2(int a1); // int __usercall sub_68CCAD(int a1); // int __usercall sub_68CCB8(int a1); // int __usercall sub_68CCC3(int a1); // int __usercall sub_68CCCE(int a1); // int __usercall sub_68CCD9(int a1); // int __usercall sub_68CCE4(int a1); // int __usercall sub_68CCEF(int a1); // int __usercall sub_68CCFA(int a1); int __cdecl sub_68CD05(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CD30(int a1); int __cdecl sub_68CD3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CD70(int a1); int __cdecl sub_68CD7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CDB0(int a1); int __cdecl sub_68CDB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CDE0(int a1); int __cdecl sub_68CDEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CE20(int a1); // void __usercall sub_68CE28(int a1); int __cdecl sub_68CE30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CE80(int a1); int __cdecl sub_68CE88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CEB0(int a1); int __cdecl sub_68CEB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CEE0(int a1); // void __usercall sub_68CEE8(int a1); void __cdecl sub_68CF40(); int __cdecl sub_68CF48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68CF70(int a1); // void __usercall sub_68CF7B(int a1); int __cdecl sub_68CF86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68CFB0(int a1); // void __usercall sub_68CFB8(int a1); // void __usercall sub_68CFC0(int a1); int __cdecl sub_68CFC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68CFF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D010(int a1); // void __usercall sub_68D040(int a1); // void __usercall sub_68D051(int a1); int __cdecl sub_68D059(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D080(); // void __usercall sub_68D088(int a1); // void __usercall sub_68D099(int a1); // void __usercall sub_68D0C0(int a1); // void __usercall sub_68D0D1(int a1); int __cdecl sub_68D0D9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68D100(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68D120(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D170(int a1); // int __usercall sub_68D17B(int a1); // int __usercall sub_68D186(int a1); int __cdecl sub_68D191(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D1C0(int a1); // int __usercall sub_68D1C8(int a1); int __cdecl sub_68D1E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D200(int a1); int __cdecl sub_68D211(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D230(int a1); // void __usercall sub_68D23B(int a1); void __cdecl sub_68D246(); int __cdecl sub_68D251(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D280(); int __cdecl sub_68D28A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D2B0(); int __cdecl sub_68D2BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D2E0(); int __cdecl sub_68D2EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D310(int a1); // void __usercall sub_68D318(int a1); // void __usercall sub_68D320(int a1); int __cdecl sub_68D328(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D380(int a1); // void __usercall sub_68D391(int a1); // void __usercall sub_68D399(int a1); // void __usercall sub_68D3AA(int a1); int __cdecl sub_68D3B2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D3D0(int a1); void __cdecl sub_68D3DB(); int __cdecl sub_68D3E3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D400(int a1); int __cdecl sub_68D408(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D430(); int __cdecl sub_68D438(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D460(int a1); int __cdecl sub_68D471(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D490(); int __cdecl sub_68D498(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D4C0(); int __cdecl sub_68D4C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D4F0(); int __cdecl sub_68D4F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D520(); int __cdecl sub_68D528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D550(int a1); // void __usercall sub_68D558(int a1); void __cdecl sub_68D560(); void __cdecl sub_68D568(); int __cdecl sub_68D570(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D590(int a1); void __cdecl sub_68D598(); int __cdecl sub_68D5A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D5C0(); int __cdecl sub_68D5C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D5F0(int a1); int __cdecl sub_68D601(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D620(int a1); // void __usercall sub_68D628(int a1); int __cdecl sub_68D630(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D650(); int __cdecl sub_68D65A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D680(); int __cdecl sub_68D68A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D6B0(); int __cdecl sub_68D6BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D6E0(); int __cdecl sub_68D6EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D710(int a1); int __cdecl sub_68D718(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D740(int a1); int __cdecl sub_68D748(); void __cdecl sub_68D756(); int __cdecl sub_68D760(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D780(); int __cdecl sub_68D78A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68D7B0(int a1); // void __usercall sub_68D7B8(int a1); // void __usercall sub_68D7F0(int a1); // void __usercall sub_68D7F8(int a1); int __cdecl sub_68D803(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D820(int a1); // void __usercall sub_68D828(int a1); int __cdecl sub_68D833(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D850(int a1); int __cdecl sub_68D85B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68D880(int a1); int __cdecl sub_68D888(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D8B0(); int __cdecl sub_68D8B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68D8E0(); int __cdecl sub_68D8EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68D910(); int __cdecl sub_68D91E(); int __cdecl sub_68D92C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68D980(); int __cdecl sub_68D98E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68D9B0(); int __cdecl sub_68D9E0(); int __cdecl sub_68D9EE(); int __cdecl sub_68D9FC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68DA20(); int __cdecl sub_68DA2E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68DA50(); int __cdecl sub_68DA5E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DA80(int a1); int __cdecl sub_68DA88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DAB0(int a1); int __cdecl sub_68DAB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DAE0(int a1); // void __usercall sub_68DAEB(int a1); // void __usercall sub_68DAF6(int a1); // void __usercall sub_68DB01(int a1); // void __usercall sub_68DB0C(int a1); // void __usercall sub_68DB17(int a1); int __cdecl sub_68DB22(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DB40(); int __cdecl sub_68DB4A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DB70(); int __cdecl sub_68DB7A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DBA0(int a1); void __cdecl sub_68DBAB(); void __cdecl sub_68DBB6(); void __cdecl sub_68DBC1(); void __cdecl sub_68DBCC(); void __cdecl sub_68DBD7(); int __cdecl sub_68DBE2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DC10(); int __cdecl sub_68DC1A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DC40(int a1); int __cdecl sub_68DC48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DC70(int a1); int __cdecl sub_68DC78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DCA0(); int __cdecl sub_68DCA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68DCD0(); int __cdecl sub_68DCDE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68DD00(); int __cdecl sub_68DD0E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68DD30(); int __cdecl sub_68DD3E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DD60(); int __cdecl sub_68DD6A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DD90(); int __cdecl sub_68DD9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DDC0(int a1); // void __usercall sub_68DDCB(int a1); int __cdecl sub_68DDD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DE00(int a1); int __cdecl sub_68DE08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DE30(int a1); // void __usercall sub_68DE38(int a1); int __cdecl sub_68DE40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DE60(int a1); // void __usercall sub_68DE6B(int a1); int __cdecl sub_68DE76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DEA0(int a1); int __cdecl sub_68DEB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68DED0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DEF0(int a1); // void __usercall sub_68DF01(int a1); int __cdecl sub_68DF12(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68DF30(int a1); // void __usercall sub_68DF3B(int a1); // void __usercall sub_68DF46(int a1); // void __usercall sub_68DF51(int a1); int __cdecl sub_68DF5C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DF90(); int __cdecl sub_68DF9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68DFC0(); int __cdecl sub_68DFCA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68DFF0(int a1); int __cdecl sub_68DFFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E060(int a1); int __cdecl sub_68E068(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E090(int a1); // void __usercall sub_68E098(int a1); int __cdecl sub_68E0A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E0D0(int a1); // void __usercall sub_68E0D8(int a1); // int __usercall sub_68E100(int a1); int __cdecl sub_68E10B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E140(int a1); // int __usercall sub_68E148(int a1); int __cdecl sub_68E150(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E170(int a1); // void __usercall sub_68E178(int a1); // int __usercall sub_68E180(int a1); // int __usercall sub_68E1B0(int a1); int __cdecl sub_68E1BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E1F0(int a1); // int __usercall sub_68E1F8(int a1); int __cdecl sub_68E200(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E220(int a1); // int __usercall sub_68E228(int a1); // int __usercall sub_68E250(int a1); int __cdecl sub_68E258(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E280(int a1); int __cdecl sub_68E288(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E2B0(int a1); int __cdecl sub_68E2B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E2E0(int a1); // void __usercall sub_68E2E8(int a1); int __cdecl sub_68E2F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E310(int a1); // void __usercall sub_68E31B(int a1); int __cdecl sub_68E326(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E350(int a1); // int __usercall sub_68E358(int a1); // int __usercall sub_68E380(int a1); int __cdecl sub_68E388(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E3B0(int a1); // int __usercall sub_68E3B8(int a1); // int __usercall sub_68E3E0(int a1); // void __usercall sub_68E3E8(int a1); int __cdecl sub_68E3F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E410(int a1); // void __usercall sub_68E418(int a1); int __cdecl sub_68E420(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68E440(int a1); int __cdecl sub_68E44B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68E480(int a1); // void __usercall sub_68E48B(int a1); int __cdecl sub_68E496(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E4C0(int a1); // void __usercall sub_68E4C8(int a1); int __cdecl sub_68E4D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E4F0(int a1); // void __usercall sub_68E4F8(int a1); // int __usercall sub_68E520(int a1); // void __usercall sub_68E52B(int a1); int __cdecl sub_68E536(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E560(int a1); void __cdecl sub_68E568(); // int __usercall sub_68E5A0(int a1); // void __usercall sub_68E5AB(int a1); int __cdecl sub_68E5B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E5E0(int a1); // void __usercall sub_68E5E8(int a1); // void __usercall sub_68E5F0(int a1); int __cdecl sub_68E5F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E620(int a1); int __cdecl sub_68E628(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E650(int a1); // int __usercall sub_68E658(int a1); int __cdecl sub_68E660(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E680(int a1); // void __usercall sub_68E688(int a1); int __cdecl sub_68E690(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E6B0(int a1); // int __usercall sub_68E6E0(int a1); // int __usercall sub_68E710(int a1); int __cdecl sub_68E71B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E750(int a1); // int __usercall sub_68E780(int a1); // int __usercall sub_68E788(int a1); int __cdecl sub_68E790(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E7B0(int a1); // int __usercall sub_68E7B8(int a1); // int __usercall sub_68E7C0(int a1); int __cdecl sub_68E7C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E7F0(int a1); // void __usercall sub_68E7F8(int a1); int __cdecl sub_68E800(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E820(int a1); // int __usercall sub_68E850(int a1); int __cdecl sub_68E858(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E880(int a1); // int __usercall sub_68E888(int a1); int __cdecl sub_68E890(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E8B0(int a1); // void __usercall sub_68E8B8(int a1); int __cdecl sub_68E8C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E8E0(int a1); // int __usercall sub_68E940(int a1); // int __usercall sub_68E970(int a1); int __cdecl sub_68E978(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E9A0(int a1); // void __usercall sub_68E9A8(int a1); void __cdecl sub_68E9B0(); int __cdecl sub_68E9B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68E9E0(int a1); int __cdecl sub_68E9E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EA10(int a1); // void __usercall sub_68EA1B(int a1); int __cdecl sub_68EA26(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EA50(int a1); // int __usercall sub_68EA80(int a1); // void __usercall sub_68EA88(int a1); int __cdecl sub_68EA90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EAF0(int a1); int __cdecl sub_68EAF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EB20(int a1); // void __usercall sub_68EB28(int a1); // int __usercall sub_68EB50(int a1); // void __usercall sub_68EB58(int a1); int __cdecl sub_68EB60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EB80(int a1); // void __usercall sub_68EB88(int a1); // int __usercall sub_68EBB0(int a1); // void __usercall sub_68EBB8(int a1); int __cdecl sub_68EBC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EBE0(int a1); // void __usercall sub_68EBE8(int a1); // void __usercall sub_68EBF0(int a1); int __cdecl sub_68EBF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EC20(int a1); // void __usercall sub_68EC2B(int a1); // void __usercall sub_68EC36(int a1); int __cdecl sub_68EC3E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EC70(int a1); // void __usercall sub_68EC78(int a1); // int __usercall sub_68ECB0(int a1); // void __usercall sub_68ECBB(int a1); // void __usercall sub_68ECC6(int a1); int __cdecl sub_68ECCE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68ED00(int a1); int __cdecl sub_68ED30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68ED50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68ED70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68ED90(int a1); // void __usercall sub_68ED98(int a1); // void __usercall sub_68EDA0(int a1); // void __usercall sub_68EDA8(int a1); // int __usercall sub_68EDD0(int a1); // void __usercall sub_68EDD8(int a1); // void __usercall sub_68EDE0(int a1); // void __usercall sub_68EDE8(int a1); int __cdecl sub_68EDF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EE20(int a1); // void __usercall sub_68EE28(int a1); // void __usercall sub_68EE30(int a1); // void __usercall sub_68EE38(int a1); int __cdecl sub_68EE40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EE70(int a1); // void __usercall sub_68EE7B(int a1); // void __usercall sub_68EE86(int a1); int __cdecl sub_68EE8E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68EEC0(int a1); int __cdecl sub_68EECB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68EF00(int a1); int __cdecl sub_68EF08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68EF30(int a1); // void __usercall sub_68EF38(int a1); int __cdecl sub_68EF40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68EF70(int a1); int __cdecl sub_68EF86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68EFB0(int a1); // int __usercall sub_68EFB8(int a1); int __cdecl sub_68EFCE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68EFF0(int a1); // void __usercall sub_68EFFB(int a1); void __cdecl sub_68F030(); int __cdecl sub_68F03A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F060(int a1); int __cdecl sub_68F068(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F090(int a1); int __cdecl sub_68F098(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F0C0(int a1); // int __usercall sub_68F0C8(int a1); int __cdecl sub_68F0D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F0F0(int a1); int __cdecl sub_68F0F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F120(int a1); int __cdecl sub_68F128(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F150(int a1); void __cdecl sub_68F158(); // void *__usercall sub_68F163(int a1); int __cdecl sub_68F16E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F190(int a1); void __cdecl sub_68F198(); // int __usercall sub_68F1A3(int a1); int __cdecl sub_68F1AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F1D0(int a1); void __cdecl sub_68F1D8(); int __cdecl sub_68F1E3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F210(int a1); int __cdecl sub_68F218(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F240(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F260(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F280(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F2A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F2C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F2E0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F300(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F320(int a1); // int __usercall sub_68F328(int a1); // void __usercall sub_68F33E(int a1); int __cdecl sub_68F34C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F370(int a1); // int __usercall sub_68F378(int a1); // void __usercall sub_68F38E(int a1); int __cdecl sub_68F39C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F3C0(int a1); // void __usercall sub_68F3CB(int a1); // void __usercall sub_68F3D6(int a1); // void __usercall sub_68F3E1(int a1); int __cdecl sub_68F3EC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F420(int a1); int __cdecl sub_68F428(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F450(int a1); // void __usercall sub_68F45B(int a1); int __cdecl sub_68F466(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F490(int a1); void __cdecl sub_68F49B(); // void __usercall sub_68F4A6(int a1); int __cdecl sub_68F4B1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F4E0(int a1); int __cdecl sub_68F4F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F510(int a1); // void __usercall sub_68F518(int a1); int __cdecl sub_68F529(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F550(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F570(int a1); int __cdecl sub_68F57E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F5B0(int a1); int __cdecl sub_68F5BE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F5F0(int a1); int __cdecl sub_68F601(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F620(int a1); // void __usercall sub_68F628(int a1); void __cdecl sub_68F633(); void __cdecl sub_68F63B(); int __cdecl sub_68F643(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F660(int a1); // void __usercall sub_68F668(int a1); // int __usercall sub_68F673(int a1); void __cdecl sub_68F67B(); int __cdecl sub_68F683(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68F6B0(); int __cdecl sub_68F6BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F6E0(int a1); // void __usercall sub_68F6EB(int a1); // void __usercall sub_68F6F6(int a1); int __cdecl sub_68F701(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68F730(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68F750(int a1); int __cdecl sub_68F758(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F780(int a1); int __cdecl sub_68F78B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F7C0(int a1); int __cdecl sub_68F7C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F8A0(int a1); int __cdecl sub_68F8A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F8D0(int a1); // void __usercall sub_68F8D8(int a1); // void __usercall sub_68F8E0(int a1); // void __usercall sub_68F8E8(int a1); // void __usercall sub_68F8F0(int a1); int __cdecl sub_68F8F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F920(int a1); int __cdecl sub_68F928(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F950(int a1); int __cdecl sub_68F958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F980(int a1); int __cdecl sub_68F988(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68F9B0(int a1); int __cdecl sub_68F9B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FA20(int a1); int __cdecl sub_68FA28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FA50(int a1); int __cdecl sub_68FA61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FA80(int a1); int __cdecl sub_68FA88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FAB0(int a1); // void __usercall sub_68FAB8(int a1); int __cdecl sub_68FAC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FAF0(int a1); int __cdecl sub_68FAF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FB20(int a1); // void __usercall sub_68FB28(int a1); void __cdecl sub_68FB33(); int __cdecl sub_68FB3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FB60(int a1); // void __usercall sub_68FB71(int a1); int __cdecl sub_68FB79(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FBA0(int a1); // void __usercall sub_68FBB1(int a1); int __cdecl sub_68FBB9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FBE0(int a1); int __cdecl sub_68FBE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FC10(int a1); // void __usercall sub_68FC18(int a1); // void __usercall sub_68FC20(int a1); int __cdecl sub_68FC28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FC50(int a1); // void __usercall sub_68FC58(int a1); void __cdecl sub_68FC60(); int __cdecl sub_68FC68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_68FC90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FCB0(int a1); // void __usercall sub_68FCBB(int a1); int __cdecl sub_68FCC6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FCF0(int a1); int __cdecl sub_68FCFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FD20(int a1); // int __usercall sub_68FD2B(int a1); int __cdecl sub_68FD36(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FD60(int a1); int __cdecl sub_68FD6E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FD90(int a1); int __cdecl sub_68FD9E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FDC0(int a1); int __cdecl sub_68FDCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FDF0(int a1); int __cdecl sub_68FDF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FE20(int a1); int __cdecl sub_68FE28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68FE50(); void __cdecl sub_68FE58(); int __cdecl sub_68FE60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68FE80(); void __cdecl sub_68FE88(); void __cdecl sub_68FEC0(); void __cdecl sub_68FEC8(); // void __usercall sub_68FED0(int a1); // void __usercall sub_68FF00(int a1); int __cdecl sub_68FF08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_68FF30(int a1); // void __usercall sub_68FF38(int a1); int __cdecl sub_68FF40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FF70(int a1); int __cdecl sub_68FF78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_68FFA0(int a1); void __cdecl sub_68FFBC(); int __cdecl sub_68FFC7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_68FFF0(); // int __usercall sub_68FFFB(int a1); int __cdecl sub_690003(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690020(int a1); int __cdecl sub_690031(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_690050(int a1); // void __usercall sub_69005B(int a1); // void __usercall sub_690063(int a1); // int __usercall sub_69006E(int a1); // void __usercall sub_69008A(int a1); void __cdecl sub_690095(); void __cdecl sub_6900A0(); // int __usercall sub_6900AB(int a1); void __cdecl sub_6900B3(); // void __usercall sub_6900BE(int a1); // void __usercall sub_6900C6(int a1); void __cdecl sub_6900CE(); // int __usercall sub_6900D9(int a1); int __cdecl sub_6900E7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690110(); int __cdecl sub_69011A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690140(int a1); // void __usercall sub_690159(int a1); int __cdecl sub_690161(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690190(int a1); int __cdecl sub_690198(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6901C0(int a1); int __cdecl sub_6901C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6901F0(int a1); // int __usercall sub_690206(int a1); // void __usercall sub_690221(int a1); int __cdecl sub_69022F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_690260(); int __cdecl sub_690277(); int __cdecl sub_69028E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6902B0(int a1); // void __usercall sub_6902B8(int a1); // void __usercall sub_6902C6(int a1); // void __usercall sub_6902D4(int a1); // void __usercall sub_6902E2(int a1); // void __usercall sub_6902F0(int a1); // void __usercall sub_6902FE(int a1); // void __usercall sub_69030C(int a1); // void __usercall sub_69031A(int a1); // void __usercall sub_690328(int a1); int __cdecl sub_690336(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690360(); void __cdecl sub_690368(); void __cdecl sub_690376(); void __cdecl sub_690384(); void __cdecl sub_690392(); void __cdecl sub_6903A0(); void __cdecl sub_6903AE(); void __cdecl sub_6903BC(); void __cdecl sub_6903CA(); void __cdecl sub_6903D8(); int __cdecl sub_6903E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690410(int a1); // void __usercall sub_690418(int a1); void __cdecl sub_690426(); int __cdecl sub_69042E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690450(int a1); // void __usercall sub_690458(int a1); // void __usercall sub_690466(int a1); int __cdecl sub_690474(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690490(int a1); int __cdecl sub_690498(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6904C0(int a1); int __cdecl sub_6904C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690520(int a1); int __cdecl sub_690528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690550(int a1); int __cdecl sub_690558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690580(int a1); int __cdecl sub_690588(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6905B0(int a1); int __cdecl sub_6905B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6905E0(int a1); // void __usercall sub_6905E8(int a1); // void __usercall sub_6905F3(int a1); // void __usercall sub_6905FE(int a1); // void __usercall sub_690609(int a1); int __cdecl sub_690614(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690630(int a1); // void __usercall sub_69063B(int a1); // void __usercall sub_690649(int a1); int __cdecl sub_690657(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690680(int a1); int __cdecl sub_690688(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6906B0(int a1); int __cdecl sub_6906B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6906E0(int a1); // void __usercall sub_6906E8(int a1); // void __usercall sub_6906F6(int a1); // void __usercall sub_6906FE(int a1); // void __usercall sub_690709(int a1); // void __usercall sub_690714(int a1); // void __usercall sub_69071F(int a1); int __cdecl sub_69072A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690750(int a1); // void __usercall sub_69075B(int a1); void __cdecl sub_690766(); int __cdecl sub_690774(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690790(int a1); // void __usercall sub_690798(int a1); // void __usercall sub_6907A3(int a1); // void __usercall sub_6907AE(int a1); // void __usercall sub_6907B9(int a1); // void __usercall sub_6907C4(int a1); void __cdecl sub_6907CC(); int __cdecl sub_6907DA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690800(int a1); int __cdecl sub_69080B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690840(int a1); int __cdecl sub_690848(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690870(); int __cdecl sub_690878(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6908A0(int a1); void __cdecl sub_690910(); int __cdecl sub_690918(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690940(); void __cdecl sub_690948(); int __cdecl sub_690950(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690980(); int __cdecl sub_690988(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6909B0(); void __cdecl sub_6909B8(); int __cdecl sub_6909C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_6909F0(); int __cdecl sub_6909F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690A20(); int __cdecl sub_690A28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690A80(); int __cdecl sub_690A88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690AB0(int a1); int __cdecl sub_690ABB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690AE0(); int __cdecl sub_690AE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690B10(); int __cdecl sub_690B18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690B40(); int __cdecl sub_690B48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690B70(); int __cdecl sub_690B78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690BA0(int a1); // void __usercall sub_690BA8(int a1); // void __usercall sub_690BB6(int a1); // void __usercall sub_690BC4(int a1); // void __usercall sub_690BD2(int a1); // void __usercall sub_690BE0(int a1); int __cdecl sub_690BEE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690C10(); void __cdecl sub_690C18(); void __cdecl sub_690C26(); void __cdecl sub_690C34(); void __cdecl sub_690C42(); void __cdecl sub_690C50(); int __cdecl sub_690C5E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690C80(int a1); int __cdecl sub_690C8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690CB0(int a1); int __cdecl sub_690CBB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690CF0(int a1); int __cdecl sub_690CF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690D20(int a1); // void __usercall sub_690D2B(int a1); int __cdecl sub_690D39(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690D60(int a1); int __cdecl sub_690D68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690D90(int a1); // void __usercall sub_690D9B(int a1); // void __usercall sub_690DA6(int a1); int __cdecl sub_690DB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690DE0(int a1); int __cdecl sub_690DE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690E40(); int __cdecl sub_690E48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690E70(); int __cdecl sub_690E7A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690EA0(int a1); int __cdecl sub_690EAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690EE0(); int __cdecl sub_690EEA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690F10(int a1); int __cdecl sub_690F18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690F40(); int __cdecl sub_690F48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690F70(); // void __usercall sub_690F78(int a1); int __cdecl sub_690F83(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_690FA0(int a1); int __cdecl sub_690FA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_690FD0(); // void __usercall sub_690FD8(int a1); int __cdecl sub_690FE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); void __cdecl sub_691010(); // void __usercall sub_69101B(int a1); void __cdecl sub_691050(); void __cdecl sub_69105B(); void __cdecl sub_691066(); void __cdecl sub_691071(); int __cdecl sub_69107C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6910A0(int a1); int __cdecl sub_6910A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_6910D0(int a1); // int __usercall sub_6910DB(int a1); // int __usercall sub_6910E6(int a1); int __cdecl sub_6910F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_691120(int a1); // int __usercall sub_69112B(int a1); int __cdecl sub_691136(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_691160(int a1); // void __usercall sub_691168(int a1); // void __usercall sub_691170(int a1); int __cdecl sub_691178(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6911A0(int a1); int __cdecl sub_6911A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_6911D0(int a1); // void __usercall sub_6911DB(int a1); int __cdecl sub_6911E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // void __usercall sub_691210(int a1); int __cdecl sub_691218(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); // int __usercall sub_691261(int a1); int __cdecl sub_691269(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_691284(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_69129F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4); int __cdecl sub_6912C0(); int __cdecl sub_6912E0(); int __cdecl sub_691300(); int __cdecl sub_691320(); int __cdecl sub_691340(); int __cdecl sub_691360(); int __cdecl sub_691370(); int __cdecl sub_691380(); int __cdecl sub_6913C0(); int __cdecl sub_6913E0(); int __cdecl sub_691400(); int __cdecl sub_691410(); int __cdecl sub_691420(); int __cdecl sub_691430(); int __cdecl sub_691450(); int __cdecl sub_691460(); int __cdecl sub_6914C0(); int __cdecl sub_691520(); int __cdecl sub_691570(); int __cdecl sub_691580(); int __cdecl sub_6915E0(); int __cdecl sub_691600(); int __cdecl sub_691650(); int __cdecl sub_6916B0(); int __cdecl sub_6916C0(); int __cdecl sub_6916E0(); int __cdecl sub_6916F0(); int __cdecl sub_691700(); int __cdecl sub_691710(); int __cdecl sub_691720(); int __cdecl sub_691730(); int __cdecl sub_691740(); int __cdecl sub_691750(); int __cdecl sub_691770(); int __cdecl sub_691790(); int __cdecl sub_6917A0(); int __cdecl sub_6917B0(); int __cdecl sub_6917D0(); int __cdecl sub_6917F0(); int __cdecl sub_691860(); int __cdecl sub_6918A0(); int __cdecl sub_6918E0(); int __cdecl sub_691920(); int __cdecl sub_691960(); int __cdecl sub_691990(); int __cdecl sub_6919A0(); int __cdecl sub_6919C0(); int __cdecl sub_691A00(); int __cdecl sub_691A20(); int __cdecl sub_691A30(); int __cdecl sub_691A40(); int __cdecl sub_691A50(); int __cdecl sub_691A60(); int __cdecl sub_691AA0(); int __cdecl sub_691AB0(); int __cdecl sub_691AE0(); int __cdecl sub_691B10(); int __cdecl sub_691CB0(); int __cdecl sub_691CD0(); int __cdecl sub_691CE0(); int __cdecl sub_691CF0(); int __cdecl sub_691D10(); int __cdecl sub_691D30(); int __cdecl sub_691D70(); int __cdecl sub_691D90(); int __cdecl sub_691DB0(); int __cdecl sub_691E10(); int __cdecl sub_691E50(); int __cdecl sub_691E90(); int __cdecl sub_691EB0(); int __cdecl sub_691EF0(); int __cdecl sub_691F00(); int __cdecl sub_691F20(); int __cdecl sub_692450(); int __cdecl sub_692480(); int __cdecl sub_692500(); int __cdecl sub_692540(); int __cdecl sub_692550(); int __cdecl sub_692570(); int __cdecl sub_6925E0(); int __cdecl sub_6925F0(); int __cdecl sub_692600(); int __cdecl sub_692610(); int __cdecl sub_692630(); int __cdecl sub_692640(); int __cdecl sub_692650(); int __cdecl sub_692660(); int __cdecl sub_692670(); int __cdecl sub_692680(); int __cdecl sub_692690(); int __cdecl sub_6926A0(); int __cdecl sub_6926B0(); int __cdecl sub_6926C0(); int __cdecl sub_6926D0(); int __cdecl sub_6926E0(); int __cdecl sub_6926F0(); int __cdecl sub_692700(); int __cdecl sub_692710(); int __cdecl sub_692720(); int __cdecl sub_692730(); int __cdecl sub_692740(); int __cdecl sub_692750(); int __cdecl sub_692760(); int __cdecl sub_692770(); int __cdecl sub_692780(); int __cdecl sub_692790(); int __cdecl sub_6927A0(); int __cdecl sub_6927B0(); int __cdecl sub_6927C0(); int __cdecl sub_6927D0(); int __cdecl sub_692820(); int __cdecl sub_692840(); int __cdecl sub_692860(); int __cdecl sub_692870(); int __cdecl sub_6928E0(); int __cdecl sub_692920(); int __cdecl sub_692960(); int __cdecl sub_6929A0(); int __cdecl sub_6929B0(); int __cdecl sub_6929C0(); int __cdecl sub_6929D0(); int __cdecl sub_692A00(); int __cdecl sub_692A40(); int __cdecl sub_692A60(); int __cdecl sub_692A80(); int __cdecl sub_692A90(); int __cdecl sub_692AD0(); int __cdecl sub_692B30(); int __cdecl sub_692B70(); int __cdecl sub_692B80(); int __cdecl sub_692B90(); int __cdecl sub_692BA0(); int __cdecl sub_692BC0(); int __cdecl sub_692BD0(); int __cdecl sub_692BE0(); int __cdecl sub_692C00(); int __cdecl sub_692C20(); int __cdecl sub_692C60(); int __cdecl sub_692C80(); int __cdecl sub_692CB0(); int __cdecl sub_692CF0(); int __cdecl sub_692D20(); int __cdecl sub_692D40(); int __cdecl sub_692D50(); int __cdecl sub_692D60(); int __cdecl sub_692D70(); int __cdecl sub_692D80(); int __cdecl sub_692D90(); int __cdecl sub_692DB0(); int __cdecl sub_692DF0(); int __cdecl sub_692E00(); int __cdecl sub_692E40(); int __cdecl sub_692E60(); int __cdecl sub_692E80(); int __cdecl sub_692EC0(); int __cdecl sub_692ED0(); int __cdecl sub_692F50(); int __cdecl sub_692FB0(); int __cdecl sub_692FC0(); int __cdecl sub_692FD0(); int __cdecl sub_692FE0(); int __cdecl sub_692FF0(); int __cdecl sub_693000(); int __cdecl sub_693010(); int __cdecl sub_693030(); int __cdecl sub_693090(); int __cdecl sub_6930A0(); int __cdecl sub_6930D0(); int __cdecl sub_693150(); int __cdecl sub_693170(); int __cdecl sub_6931A0(); int __cdecl sub_6931C0(); int __cdecl sub_6931E0(); int __cdecl sub_6931F0(); int __cdecl sub_693230(); int __cdecl sub_693270(); int __cdecl sub_6934C0(); int __cdecl sub_6934E0(); int __cdecl sub_6934F0(); int __cdecl sub_693500(); int __cdecl sub_693520(); int __cdecl sub_693530(); int __cdecl sub_693550(); int __cdecl sub_693590(); int __cdecl sub_6935A0(); int __cdecl sub_6935E0(); int __cdecl sub_693620(); int __cdecl sub_693660(); int __cdecl sub_6936A0(); int __cdecl sub_6936E0(); int __cdecl sub_693720(); int __cdecl sub_693740(); int __cdecl sub_693750(); int __cdecl sub_693760(); int __cdecl sub_693770(); int __cdecl sub_693780(); int __cdecl sub_693790(); int __cdecl sub_6937A0(); int __cdecl sub_6937B0(); int __cdecl sub_6937C0(); int __cdecl sub_6937D0(); int __cdecl sub_6937E0(); int __cdecl sub_6937F0(); int __cdecl sub_693800(); int __cdecl sub_693810(); int __cdecl sub_693820(); int __cdecl sub_693830(); int __cdecl sub_693840(); int __cdecl sub_693850(); int __cdecl sub_693860(); int __cdecl sub_693870(); int __cdecl sub_693880(); int __cdecl sub_693890(); int __cdecl sub_6938A0(); int __cdecl sub_6938B0(); int __cdecl sub_6938C0(); int __cdecl sub_6938D0(); int __cdecl sub_6938E0(); int __cdecl sub_6938F0(); int __cdecl sub_693900(); int __cdecl sub_693910(); int __cdecl sub_693950(); int __cdecl sub_693970(); int __cdecl sub_6939B0(); int __cdecl sub_6939D0(); int __cdecl sub_6939F0(); int __cdecl sub_693A10(); int __cdecl sub_693A30(); int __cdecl sub_693A50(); int __cdecl sub_693A70(); int __cdecl sub_693A90(); int __cdecl sub_693AB0(); int __cdecl sub_693AD0(); int __cdecl sub_693AF0(); int __cdecl sub_693B10(); int __cdecl sub_693B30(); int __cdecl sub_693B50(); int __cdecl sub_693B70(); int __cdecl sub_693B90(); int __cdecl sub_693BB0(); int __cdecl sub_693BD0(); int __cdecl sub_693BF0(); int __cdecl sub_693C10(); int __cdecl sub_693C30(); int __cdecl sub_693C50(); int __cdecl sub_693C70(); int __cdecl sub_693C90(); int __cdecl sub_693CB0(); int __cdecl sub_693CD0(); int __cdecl sub_693CF0(); int __cdecl sub_693D10(); int __cdecl sub_693D30(); int __cdecl sub_693D50(); int __cdecl sub_693D70(); int __cdecl sub_693D90(); int __cdecl sub_693DB0(); int __cdecl sub_693DD0(); int __cdecl sub_693DF0(); int __cdecl sub_693E10(); int __cdecl sub_693E30(); int __cdecl sub_693E50(); int __cdecl sub_693E70(); int __cdecl sub_693E90(); int __cdecl sub_693EB0(); int __cdecl sub_693ED0(); int __cdecl sub_693EF0(); int __cdecl sub_693F10(); int __cdecl sub_693F30(); int __cdecl sub_693F50(); int __cdecl sub_693F70(); int __cdecl sub_693F90(); int __cdecl sub_693FB0(); void *__cdecl sub_693FD0(); void *__cdecl sub_694050(); void *__cdecl sub_6940D0(); void *__cdecl sub_694150(); void *__cdecl sub_6941D0(); void *__cdecl sub_694250(); void *__cdecl sub_6942D0(); void *__cdecl sub_694350(); void *__cdecl sub_6943D0(); int __cdecl sub_694450(); int __cdecl sub_694460(); int __cdecl sub_6944A0(); int __cdecl sub_6944C0(); int __cdecl sub_6944D0(); int __cdecl sub_6944E0(); int __cdecl sub_6944F0(); int __cdecl sub_694500(); int __cdecl sub_694510(); int __cdecl sub_694520(); int __cdecl sub_694530(); int __cdecl sub_694540(); int __cdecl sub_694550(); int __cdecl sub_694560(); int __cdecl sub_6945A0(); int __cdecl sub_6945F0(); int __cdecl sub_694600(); int __cdecl sub_694610(); int __cdecl sub_694620(); int __cdecl sub_694630(); int __cdecl sub_694640(); int __cdecl sub_694650(); int __cdecl sub_694660(); int __cdecl sub_694670(); int __cdecl sub_694680(); int __cdecl sub_694690(); int __cdecl sub_6946A0(); int __cdecl sub_6946B0(); int __cdecl sub_6946C0(); int __cdecl sub_6946D0(); int __cdecl sub_6946E0(); int __cdecl sub_6946F0(); int __cdecl sub_694700(); int __cdecl sub_694710(); int __cdecl sub_694720(); int __cdecl sub_694730(); int __cdecl sub_6947B0(); int __cdecl sub_6947C0(); int __cdecl sub_6947D0(); int __cdecl sub_694800(); int __cdecl sub_694830(); int __cdecl sub_694840(); int __cdecl sub_694880(); int __cdecl sub_694890(); int __cdecl sub_6948A0(); int __cdecl sub_6948E0(); int __cdecl sub_6948F0(); int __cdecl sub_694900(); int __cdecl sub_694920(); int __cdecl sub_694930(); int __cdecl sub_694950(); int __cdecl sub_694970(); int __cdecl sub_694980(); int __cdecl sub_6949A0(); int __cdecl sub_6949C0(); int __cdecl sub_6949E0(); int __cdecl sub_694A70(); int __cdecl sub_694A90(); int __cdecl sub_694AB0(); int __cdecl sub_694AD0(); int __cdecl sub_694AE0(); int __cdecl sub_694B00(); int __cdecl sub_694B20(); int __cdecl sub_694B60(); int __cdecl sub_694B80(); int __cdecl sub_694BA0(); int __cdecl sub_694BC0(); int __cdecl sub_694C00(); int __cdecl sub_694C20(); int __cdecl sub_694C40(); int __cdecl sub_694C60(); int __cdecl sub_694C80(); int __cdecl sub_694CA0(); int __cdecl sub_694CC0(); int __cdecl sub_694CE0(); int __cdecl sub_694D00(); int __cdecl sub_694D20(); int __cdecl sub_694D30(); int __cdecl sub_694D70(); int __cdecl sub_694DB0(); int __cdecl sub_694DD0(); int __cdecl sub_694DF0(); int __cdecl sub_694E10(); int __cdecl sub_694E50(); int __cdecl sub_694E60(); int __cdecl sub_694E80(); int __cdecl sub_694F50(); int __cdecl sub_695030(); int __cdecl sub_695110(); int __cdecl sub_6951F0(); int __cdecl sub_6952D0(); int __cdecl sub_6952F0(); int __cdecl sub_695300(); int __cdecl sub_695320(); int __cdecl sub_695340(); int __cdecl sub_695360(); int __cdecl sub_6953F0(); int __cdecl sub_695400(); int __cdecl sub_695410(); int __cdecl sub_695420(); int __cdecl sub_695430(); int __cdecl sub_695480(); int __cdecl sub_6954C0(); int __cdecl sub_6954D0(); int __cdecl sub_6954F0(); int __cdecl sub_695500(); int __cdecl sub_695510(); int __cdecl sub_695520(); int __cdecl sub_695530(); int __cdecl sub_695540(); int __cdecl sub_695550(); int __cdecl sub_695560(); int __cdecl sub_695570(); int __cdecl sub_695580(); int __cdecl sub_695590(); int __cdecl sub_6955A0(); int __cdecl sub_6955B0(); int __cdecl sub_6955C0(); int __cdecl sub_6955D0(); int __cdecl sub_6955E0(); int __cdecl sub_6955F0(); int __cdecl sub_695600(); int __cdecl sub_695610(); int __cdecl sub_695620(); int __cdecl sub_695630(); int __cdecl sub_695640(); int __cdecl sub_695650(); int __cdecl sub_695660(); int __cdecl sub_695670(); int __cdecl sub_695680(); int __cdecl sub_695690(); int __cdecl sub_6956A0(); int __cdecl sub_6956C0(); int __cdecl sub_6956D0(); int __cdecl sub_6956E0(); int __cdecl sub_6956F0(); int __cdecl sub_695700(); int __cdecl sub_695710(); int __cdecl sub_695720(); int __cdecl sub_695730(); int __cdecl sub_695790(); int __cdecl sub_6957A0(); int __cdecl sub_6957B0(); int __cdecl sub_6957C0(); int __cdecl sub_6957D0(); int __cdecl sub_6957E0(); int __cdecl sub_6957F0(); int __cdecl sub_695800(); int __cdecl sub_695810(); int __cdecl sub_695820(); int __cdecl sub_695830(); int __cdecl sub_695840(); int __cdecl sub_695860(); int __cdecl sub_695880(); int __cdecl sub_6958A0(); int __cdecl sub_6958C0(); int __cdecl sub_6958E0(); int __cdecl sub_695900(); int __cdecl sub_695920(); int __cdecl sub_695940(); int __cdecl sub_695960(); int __cdecl sub_695980(); int __cdecl sub_6959A0(); int __cdecl sub_6959C0(); int __cdecl sub_6959E0(); int __cdecl sub_695A00(); int __cdecl sub_695A20(); int __cdecl sub_695A40(); int __cdecl sub_695A60(); int __cdecl sub_695A80(); int __cdecl sub_695AA0(); int __cdecl sub_695AC0(); int __cdecl sub_695AE0(); int __cdecl sub_695B00(); int __cdecl sub_695B20(); int __cdecl sub_695B40(); int __cdecl sub_695B60(); int __cdecl sub_695B80(); int __cdecl sub_695BA0(); int __cdecl sub_695BC0(); int __cdecl sub_695BE0(); int __cdecl sub_695C00(); int __cdecl sub_695C20(); int __cdecl sub_695C40(); int __cdecl sub_695C60(); int __cdecl sub_695C80(); int __cdecl sub_695CA0(); int __cdecl sub_695CC0(); int __cdecl sub_695CE0(); int __cdecl sub_695D00(); int __cdecl sub_695D20(); int __cdecl sub_695D40(); int __cdecl sub_695D60(); int __cdecl sub_695D80(); int __cdecl sub_695DA0(); int __cdecl sub_695DC0(); int __cdecl sub_695DE0(); int __cdecl sub_695E00(); int __cdecl sub_695E20(); int __cdecl sub_695E40(); int __cdecl sub_695E60(); int __cdecl sub_695E80(); int __cdecl sub_695EA0(); int __cdecl sub_695EC0(); int __cdecl sub_695EE0(); int __cdecl sub_695F00(); int __cdecl sub_695F20(); int __cdecl sub_695F40(); int __cdecl sub_695F60(); int __cdecl sub_695F80(); int __cdecl sub_695FA0(); int __cdecl sub_695FC0(); int __cdecl sub_695FE0(); int __cdecl sub_696060(); int __cdecl sub_696090(); int __cdecl sub_6960A0(); int __cdecl sub_6960E0(); int __cdecl sub_696130(); int __cdecl sub_696140(); int __cdecl sub_696190(); int __cdecl sub_6961D0(); int __cdecl sub_696220(); int __cdecl sub_696270(); int __cdecl sub_6962C0(); int __cdecl sub_696310(); int __cdecl sub_696360(); int __cdecl sub_6963B0(); int __cdecl sub_696400(); int __cdecl sub_696450(); int __cdecl sub_6964A0(); int __cdecl sub_6964F0(); int __cdecl sub_696540(); int __cdecl sub_696590(); int __cdecl sub_6965E0(); int __cdecl sub_696630(); int __cdecl sub_696670(); int __cdecl sub_6966C0(); int __cdecl sub_696710(); int __cdecl sub_696760(); int __cdecl sub_6967B0(); int __cdecl sub_696800(); int __cdecl sub_696850(); int __cdecl sub_6968A0(); int __cdecl sub_6968F0(); int __cdecl sub_696940(); int __cdecl sub_696990(); int __cdecl sub_6969E0(); int __cdecl sub_696A30(); int __cdecl sub_696A80(); int __cdecl sub_696AD0(); int __cdecl sub_696B20(); int __cdecl sub_696B70(); int __cdecl sub_696BC0(); int __cdecl sub_696C10(); int __cdecl sub_696C60(); int __cdecl sub_696CB0(); int __cdecl sub_696D00(); int __cdecl sub_696D50(); int __cdecl sub_696DA0(); int __cdecl sub_696DE0(); int __cdecl sub_696E30(); int __cdecl sub_696E70(); int __cdecl sub_696EC0(); int __cdecl sub_696F10(); int __cdecl sub_696F50(); int __cdecl sub_696FA0(); int __cdecl sub_696FF0(); int __cdecl sub_697040(); int __cdecl sub_697090(); int __cdecl sub_6970D0(); int __cdecl sub_697120(); int __cdecl sub_697160(); int __cdecl sub_6971A0(); int __cdecl sub_6971E0(); int __cdecl sub_697220(); int __cdecl sub_697260(); int __cdecl sub_6972A0(); int __cdecl sub_6972C0(); int __cdecl sub_6972D0(); int __cdecl sub_6972F0(); int __cdecl sub_697310(); int __cdecl sub_697330(); int __cdecl sub_697350(); int __cdecl sub_697370(); int __cdecl sub_697390(); int __cdecl sub_6973B0(); int __cdecl sub_6973D0(); int __cdecl sub_6973F0(); int __cdecl sub_697460(); int __cdecl sub_6974D0(); int __cdecl sub_697540(); int __cdecl sub_697560(); int __cdecl sub_697580(); int __cdecl sub_6975D0(); int __cdecl sub_6975F0(); int __cdecl sub_697610(); int __cdecl sub_697620(); int __cdecl sub_697630(); int __cdecl sub_6976B0(); int __cdecl sub_6976D0(); int __cdecl sub_6976E0(); int __cdecl sub_697760(); int __cdecl sub_6977E0(); int __cdecl sub_697860(); int __cdecl sub_6978C0(); int __cdecl sub_697940(); int __cdecl sub_6979C0(); int __cdecl sub_697A40(); int __cdecl sub_697AC0(); int __cdecl sub_697B40(); int __cdecl sub_697B50(); int __cdecl sub_697BD0(); int __cdecl sub_697BE0(); int __cdecl sub_697BF0(); int __cdecl sub_697C10(); int __cdecl sub_697C20(); int __cdecl sub_697C30(); int __cdecl sub_697C50(); int __cdecl sub_697C60(); int __cdecl sub_697D10(); int __cdecl sub_697D30(); int __cdecl sub_697D90(); int __cdecl sub_697DA0(); int __cdecl sub_697E20(); int __cdecl sub_697E40(); int __cdecl sub_697E80(); int __cdecl sub_697EA0(); int __cdecl sub_697EC0(); int __cdecl sub_697EE0(); int __cdecl sub_697EF0(); int __cdecl sub_697F10(); int __cdecl sub_697F30(); int __cdecl sub_697F50(); int __cdecl sub_697F70(); int __cdecl sub_697FF0(); int __cdecl sub_698000(); int __cdecl sub_698020(); int __cdecl sub_698040(); int __cdecl sub_6980D0(); int __cdecl sub_6980E0(); int __cdecl sub_6980F0(); int __cdecl sub_698120(); int __cdecl sub_698170(); int __cdecl sub_698190(); int __cdecl sub_6981B0(); int __cdecl sub_6981D0(); int __cdecl sub_6981F0(); int __cdecl sub_698210(); int __cdecl sub_698230(); int __cdecl sub_698250(); int __cdecl sub_698270(); int __cdecl sub_698290(); int __cdecl sub_6982B0(); int __cdecl sub_6982D0(); int __cdecl sub_6982F0(); int __cdecl sub_698310(); int __cdecl sub_698330(); int __cdecl sub_698350(); int __cdecl sub_698370(); int __cdecl sub_698390(); int __cdecl sub_6983F0(); int __cdecl sub_698450(); int __cdecl sub_698470(); int __cdecl sub_6984A0(); int __cdecl sub_698540(); int __cdecl sub_6985A0(); int __cdecl sub_6985C0(); int __cdecl sub_6985E0(); int __cdecl sub_698650(); int __cdecl sub_698680(); int __cdecl sub_69869C(); int __cdecl sub_6986B2(); int __cdecl sub_6986BE(); int __cdecl sub_6986CA(); int __cdecl sub_6986D6(); int __cdecl sub_6986E2(); int __cdecl sub_6986EE(); int __cdecl sub_698704(); void __cdecl nullsub_192(); // idb void __cdecl sub_698720(); // idb int (**__cdecl sub_698730())(); void __cdecl sub_698740(); // idb void __cdecl sub_698760(); // idb void __cdecl sub_698770(); // idb void __cdecl sub_6987D0(); // idb void __cdecl nullsub_193(); // idb void __cdecl sub_698840(); // idb void __cdecl sub_698850(); // idb void __cdecl sub_6988D0(); // idb void __cdecl sub_6988E0(); // idb void __cdecl sub_6988F0(); // idb void __cdecl nullsub_6(); // idb void __cdecl nullsub_7(); // idb void __cdecl nullsub_8(); // idb void __cdecl nullsub_9(); // idb void __cdecl nullsub_10(); // idb void __cdecl nullsub_11(); // idb void __cdecl nullsub_195(); // idb void __cdecl nullsub_194(); // idb void __cdecl sub_698980(); // idb void __cdecl sub_698A00(); // idb void __cdecl sub_698A40(); // idb void __cdecl nullsub_196(); // idb int __cdecl sub_698A90(); void __cdecl sub_698AA0(); // idb void __cdecl sub_698AC0(); // idb void __cdecl nullsub_197(); // idb void __cdecl nullsub_198(); // idb void __cdecl nullsub_12(); // idb void __cdecl nullsub_13(); // idb void __cdecl nullsub_14(); // idb void __cdecl nullsub_15(); // idb void __cdecl nullsub_16(); // idb void __cdecl nullsub_17(); // idb void __cdecl nullsub_18(); // idb void __cdecl sub_698BC0(); // idb void __cdecl nullsub_199(); // idb void __cdecl nullsub_200(); // idb void __cdecl nullsub_201(); // idb void __cdecl nullsub_202(); // idb void __cdecl nullsub_203(); // idb void __cdecl nullsub_204(); // idb void __cdecl nullsub_205(); // idb void __cdecl nullsub_206(); // idb int __cdecl sub_698CC0(); int __cdecl sub_698CE0(); void __cdecl nullsub_207(); // idb void __cdecl nullsub_208(); // idb void __cdecl nullsub_209(); // idb void __cdecl sub_698D30(); // idb void __cdecl nullsub_19(); // idb void __cdecl nullsub_20(); // idb int __cdecl sub_698D60(); void __cdecl sub_698D80(); // idb void __cdecl sub_698DB0(); // idb void __cdecl sub_698DE0(); // idb void __cdecl sub_698E10(); // idb void __cdecl sub_698E20(); // idb void __cdecl sub_698E50(); // idb void __cdecl nullsub_21(); // idb void __cdecl nullsub_22(); // idb void __cdecl nullsub_23(); // idb void __cdecl nullsub_210(); // idb int __cdecl sub_698EB0(); void __cdecl nullsub_24(); // idb void __cdecl nullsub_25(); // idb void __cdecl nullsub_26(); // idb void __cdecl nullsub_27(); // idb void __cdecl nullsub_28(); // idb void __cdecl nullsub_29(); // idb void __cdecl nullsub_30(); // idb void __cdecl nullsub_31(); // idb void __cdecl nullsub_32(); // idb void __cdecl nullsub_33(); // idb void __cdecl nullsub_34(); // idb void __cdecl nullsub_35(); // idb void __cdecl nullsub_36(); // idb void __cdecl nullsub_37(); // idb void __cdecl nullsub_38(); // idb void __cdecl sub_698FD0(); // idb int (__stdcall **__cdecl sub_699010())(int, int); void __cdecl nullsub_211(); // idb void __cdecl nullsub_212(); // idb void __cdecl sub_699050(); // idb void __cdecl nullsub_214(); // idb void __cdecl nullsub_39(); // idb void __cdecl nullsub_213(); // idb void __cdecl nullsub_215(); // idb void __cdecl nullsub_216(); // idb int __cdecl sub_6990E0(); void __cdecl nullsub_217(); // idb void __cdecl nullsub_218(); // idb void __cdecl nullsub_219(); // idb void __cdecl sub_699130(); // idb void __cdecl nullsub_220(); // idb int __cdecl sub_699150(); void __cdecl sub_699170(); // idb void __cdecl nullsub_221(); // idb void __cdecl sub_699190(); // idb void __cdecl sub_6991F0(); // idb void __cdecl nullsub_40(); // idb void __cdecl nullsub_41(); // idb void __cdecl nullsub_42(); // idb void __cdecl nullsub_43(); // idb void __cdecl nullsub_44(); // idb void __cdecl nullsub_45(); // idb void __cdecl sub_699270(); // idb void __cdecl sub_6992A0(); // idb void __cdecl nullsub_46(); // idb void __cdecl nullsub_47(); // idb void __cdecl sub_6992F0(); // idb void __cdecl nullsub_48(); // idb void __cdecl nullsub_49(); // idb void __cdecl nullsub_50(); // idb void __cdecl nullsub_51(); // idb void __cdecl nullsub_222(); // idb int __cdecl sub_6993C0(); void __cdecl sub_6993E0(); // idb void __cdecl nullsub_52(); // idb void __cdecl nullsub_53(); // idb int __cdecl sub_699480(); int __cdecl sub_6994A0(); void __cdecl sub_6994C0(); // idb void __cdecl nullsub_223(); // idb void __cdecl nullsub_224(); // idb void __cdecl nullsub_225(); // idb void __cdecl nullsub_226(); // idb void __cdecl sub_699560(); // idb void __cdecl nullsub_228(); // idb void __cdecl nullsub_227(); // idb void __cdecl nullsub_54(); // idb void __cdecl sub_6995D0(); // idb void __cdecl sub_6995E0(); // idb void __cdecl sub_6995F0(); // idb void __cdecl sub_699600(); // idb void __cdecl sub_699610(); // idb void __cdecl sub_699620(); // idb void __cdecl sub_699630(); // idb void __cdecl sub_699640(); // idb void __cdecl sub_699650(); // idb void __cdecl sub_699660(); // idb void __cdecl sub_699670(); // idb void __cdecl sub_699680(); // idb void __cdecl sub_699690(); // idb void __cdecl sub_6996A0(); // idb void __cdecl sub_6996B0(); // idb void __cdecl sub_6996C0(); // idb void __cdecl sub_6996D0(); // idb void __cdecl sub_6996E0(); // idb void __cdecl sub_6996F0(); // idb void __cdecl sub_699700(); // idb void __cdecl sub_699720(); // idb void __cdecl sub_699730(); // idb void __cdecl sub_699740(); // idb void __cdecl sub_699750(); // idb void __cdecl sub_699760(); // idb void __cdecl sub_699770(); // idb void __cdecl sub_699780(); // idb void __cdecl nullsub_229(); // idb void __cdecl nullsub_55(); // idb void __cdecl nullsub_230(); // idb void __cdecl sub_6997C0(); // idb void __cdecl sub_699840(); // idb void __cdecl sub_6998A0(); // idb void __cdecl sub_699900(); // idb void __cdecl sub_699960(); // idb void __cdecl sub_6999C0(); // idb void __cdecl nullsub_56(); // idb void __cdecl nullsub_57(); // idb void __cdecl nullsub_231(); // idb void __cdecl nullsub_232(); // idb void __cdecl sub_699A60(); // idb void __cdecl nullsub_233(); // idb void __cdecl nullsub_234(); // idb void __cdecl nullsub_235(); // idb void __cdecl nullsub_58(); // idb void __cdecl nullsub_236(); // idb void __cdecl nullsub_59(); // idb int __cdecl sub_699B20(); void __cdecl sub_699B40(); // idb void __cdecl sub_699BC0(); // idb void __cdecl sub_699C10(); // idb void __cdecl nullsub_237(); // idb void __cdecl nullsub_238(); // idb void __cdecl nullsub_239(); // idb void __cdecl sub_699C60(); // idb void __cdecl nullsub_240(); // idb void __cdecl nullsub_241(); // idb void __cdecl sub_699C90(); // idb void __cdecl sub_699CA0(); // idb int __cdecl sub_699CB0(); void __cdecl nullsub_60(); // idb void __cdecl sub_699CE0(); // idb void __cdecl sub_699D00(); // idb void __cdecl sub_699D10(); // idb void __cdecl sub_699D30(); // idb void __cdecl nullsub_242(); // idb void __cdecl sub_699D60(); // idb void __cdecl sub_699D70(); // idb void __cdecl sub_699D80(); // idb void __cdecl sub_699D90(); // idb void __cdecl sub_699DA0(); // idb int __cdecl sub_699DB0(); void __cdecl sub_699DD0(); // idb void __cdecl sub_699DE0(); // idb void __cdecl nullsub_243(); // idb void __cdecl sub_699E00(); // idb void __cdecl nullsub_244(); // idb int __cdecl sub_699E20(); void __cdecl sub_699E30(); // idb void __cdecl sub_699E80(); // idb void __cdecl sub_699EC0(); // idb void __cdecl sub_699F20(); // idb void __cdecl sub_699F30(); // idb void __cdecl sub_699F40(); // idb void __cdecl sub_699F50(); // idb void __cdecl sub_699F60(); // idb void __cdecl sub_699F70(); // idb void __cdecl sub_699F80(); // idb void __cdecl sub_699F90(); // idb void __cdecl sub_699FD0(); // idb void __cdecl sub_69A030(); // idb void __cdecl nullsub_61(); // idb void __cdecl nullsub_62(); // idb void __cdecl nullsub_63(); // idb void __cdecl nullsub_64(); // idb void __cdecl nullsub_65(); // idb void __cdecl nullsub_66(); // idb void __cdecl nullsub_67(); // idb void __cdecl nullsub_68(); // idb void __cdecl nullsub_69(); // idb void __cdecl nullsub_70(); // idb void __cdecl nullsub_71(); // idb void __cdecl nullsub_72(); // idb void __cdecl sub_69A130(); // idb void __cdecl nullsub_189(); // idb void __cdecl nullsub_190(); // idb void __cdecl sub_69A180(); // idb void __cdecl sub_69A190(); // idb void __cdecl sub_69A1B0(); // idb int (__stdcall **__cdecl sub_69A1C0())(int, int); void __cdecl sub_69A1E0(); // idb void __cdecl nullsub_246(); // idb void __cdecl nullsub_247(); // idb void __cdecl nullsub_245(); // idb void __cdecl sub_69A290(); // idb void __cdecl sub_69A2A0(); // idb void __cdecl nullsub_248(); // idb void __cdecl nullsub_73(); // idb void __cdecl nullsub_249(); // idb void __cdecl sub_69A2E0(); // idb int __cdecl sub_69A2F0(); void __cdecl sub_69A310(); // idb void __cdecl sub_69A330(); // idb void __cdecl nullsub_250(); // idb void __cdecl sub_69A380(); // idb void __cdecl sub_69A3B0(); // idb void __cdecl sub_69A3E0(); // idb void __cdecl sub_69A410(); // idb void __cdecl sub_69A440(); // idb void __cdecl sub_69A470(); // idb void __cdecl nullsub_74(); // idb void __cdecl nullsub_251(); // idb void __cdecl nullsub_252(); // idb void __cdecl sub_69A4D0(); // idb void __cdecl sub_69A4E0(); // idb void __cdecl sub_69A4F0(); // idb void __cdecl sub_69A500(); // idb void __cdecl sub_69A510(); // idb void __cdecl sub_69A520(); // idb void __cdecl sub_69A530(); // idb void __cdecl sub_69A540(); // idb void __cdecl sub_69A550(); // idb void __cdecl sub_69A560(); // idb void __cdecl sub_69A570(); // idb void __cdecl sub_69A580(); // idb void __cdecl sub_69A590(); // idb void __cdecl sub_69A5A0(); // idb void __cdecl sub_69A5B0(); // idb void __cdecl sub_69A5C0(); // idb void __cdecl sub_69A5D0(); // idb void __cdecl sub_69A5E0(); // idb void __cdecl sub_69A5F0(); // idb void __cdecl sub_69A600(); // idb void __cdecl sub_69A610(); // idb void __cdecl sub_69A620(); // idb void __cdecl sub_69A630(); // idb void __cdecl sub_69A640(); // idb void __cdecl sub_69A650(); // idb void __cdecl sub_69A660(); // idb void __cdecl sub_69A670(); // idb void __cdecl nullsub_254(); // idb void __cdecl nullsub_253(); // idb void __cdecl sub_69A6D0(); // idb void __cdecl nullsub_255(); // idb void __cdecl sub_69A6F0(); // idb void __cdecl sub_69A700(); // idb void __cdecl sub_69A710(); // idb void __cdecl sub_69A720(); // idb void __cdecl sub_69A730(); // idb void __cdecl sub_69A740(); // idb void __cdecl sub_69A750(); // idb void __cdecl sub_69A760(); // idb void __cdecl sub_69A770(); // idb void __cdecl sub_69A780(); // idb void __cdecl sub_69A790(); // idb void __cdecl sub_69A7A0(); // idb void __cdecl sub_69A7B0(); // idb void __cdecl sub_69A7C0(); // idb void __cdecl sub_69A7D0(); // idb void __cdecl sub_69A7E0(); // idb void __cdecl sub_69A7F0(); // idb void __cdecl sub_69A800(); // idb void __cdecl sub_69A810(); // idb void __cdecl sub_69A820(); // idb void __cdecl sub_69A830(); // idb void __cdecl sub_69A840(); // idb void __cdecl sub_69A850(); // idb void __cdecl sub_69A860(); // idb void __cdecl sub_69A870(); // idb void __cdecl sub_69A880(); // idb void __cdecl sub_69A890(); // idb void __cdecl sub_69A8A0(); // idb void __cdecl sub_69A8B0(); // idb void __cdecl sub_69A8C0(); // idb void __cdecl sub_69A8D0(); // idb void __cdecl sub_69A8E0(); // idb void __cdecl sub_69A8F0(); // idb void __cdecl sub_69A900(); // idb void __cdecl sub_69A910(); // idb void __cdecl sub_69A920(); // idb void __cdecl sub_69A930(); // idb void __cdecl sub_69A940(); // idb void __cdecl sub_69A950(); // idb void __cdecl sub_69A960(); // idb void __cdecl sub_69A970(); // idb void __cdecl sub_69A980(); // idb void __cdecl sub_69A990(); // idb void __cdecl sub_69A9A0(); // idb void __cdecl sub_69A9B0(); // idb void __cdecl sub_69A9C0(); // idb void __cdecl sub_69A9D0(); // idb void __cdecl sub_69A9E0(); // idb void __cdecl sub_69A9F0(); // idb void __cdecl nullsub_257(); // idb void __cdecl nullsub_256(); // idb void __cdecl sub_69AA20(); // idb void __cdecl nullsub_75(); // idb void __cdecl sub_69AA40(); // idb void __cdecl sub_69AA50(); // idb void __cdecl sub_69AA60(); // idb void __cdecl sub_69AA70(); // idb void __cdecl sub_69AA80(); // idb void __cdecl sub_69AA90(); // idb void __cdecl sub_69AAA0(); // idb void __cdecl sub_69AAB0(); // idb void __cdecl sub_69AAC0(); // idb void __cdecl sub_69AAD0(); // idb void __cdecl nullsub_76(); // idb void __cdecl sub_69AAF0(); // idb void __cdecl nullsub_77(); // idb void __cdecl nullsub_78(); // idb void __cdecl sub_69AB20(); // idb void __cdecl sub_69AB30(); // idb void __cdecl sub_69AB40(); // idb void __cdecl sub_69AB50(); // idb void __cdecl sub_69AB60(); // idb void __cdecl sub_69AB70(); // idb void __cdecl sub_69AB80(); // idb void __cdecl sub_69AB90(); // idb void __cdecl sub_69ABA0(); // idb void __cdecl sub_69ABB0(); // idb void __cdecl sub_69ABC0(); // idb void __cdecl sub_69ABD0(); // idb void __cdecl sub_69ABE0(); // idb void __cdecl sub_69ABF0(); // idb void __cdecl sub_69AC00(); // idb void __cdecl sub_69AC10(); // idb void __cdecl sub_69AC20(); // idb void __cdecl sub_69AC30(); // idb void __cdecl sub_69AC40(); // idb void __cdecl sub_69AC50(); // idb void __cdecl sub_69AC60(); // idb void __cdecl sub_69AC70(); // idb void __cdecl nullsub_259(); // idb void __cdecl nullsub_79(); // idb void __cdecl nullsub_258(); // idb int __cdecl sub_69ACE0(); int __cdecl sub_69AD00(); void __cdecl nullsub_260(); // idb int __cdecl sub_69AD30(); void __cdecl nullsub_80(); // idb void __cdecl nullsub_81(); // idb void __cdecl nullsub_82(); // idb void __cdecl nullsub_83(); // idb void __cdecl nullsub_84(); // idb void __cdecl nullsub_85(); // idb void __cdecl nullsub_86(); // idb void __cdecl nullsub_87(); // idb void __cdecl nullsub_88(); // idb void __cdecl nullsub_89(); // idb void __cdecl nullsub_90(); // idb void __cdecl nullsub_91(); // idb void __cdecl nullsub_92(); // idb void __cdecl nullsub_93(); // idb void __cdecl nullsub_94(); // idb void __cdecl nullsub_95(); // idb void __cdecl nullsub_96(); // idb void __cdecl nullsub_97(); // idb void __cdecl nullsub_98(); // idb void __cdecl nullsub_99(); // idb void __cdecl nullsub_261(); // idb void __cdecl nullsub_100(); // idb void __cdecl nullsub_101(); // idb void __cdecl nullsub_102(); // idb void __cdecl nullsub_103(); // idb void __cdecl nullsub_104(); // idb void __cdecl nullsub_105(); // idb void __cdecl nullsub_106(); // idb void __cdecl nullsub_262(); // idb void __cdecl nullsub_107(); // idb void __cdecl nullsub_108(); // idb void __cdecl nullsub_109(); // idb void __cdecl nullsub_263(); // idb void __cdecl nullsub_110(); // idb void __cdecl nullsub_114(); // idb void __cdecl nullsub_115(); // idb void __cdecl nullsub_116(); // idb void __cdecl nullsub_117(); // idb void __cdecl nullsub_264(); // idb void __cdecl nullsub_118(); // idb void __cdecl nullsub_191(); // idb void __cdecl nullsub_265(); // idb void __cdecl sub_69B020(); // idb void __cdecl nullsub_266(); // idb void __cdecl sub_69B040(); // idb void __cdecl sub_69B050(); // idb void __cdecl sub_69B060(); // idb int __cdecl sub_69B070(); void __cdecl sub_69B080(); // idb void __cdecl sub_69B090(); // idb void __cdecl sub_69B0A0(); // idb int __cdecl sub_69B0B0(); void __cdecl sub_69B0C0(); // idb void __cdecl sub_69B0D0(); // idb void __cdecl nullsub_119(); // idb void __cdecl nullsub_268(); // idb void __cdecl sub_69B100(); // idb void __cdecl sub_69B110(); // idb int (__stdcall **__cdecl sub_69B120())(int, int); void __cdecl nullsub_269(); // idb void __cdecl nullsub_120(); // idb void __cdecl nullsub_121(); // idb void __cdecl nullsub_122(); // idb void __cdecl nullsub_123(); // idb void __cdecl nullsub_124(); // idb void __cdecl nullsub_125(); // idb void __cdecl nullsub_271(); // idb void __cdecl nullsub_272(); // idb void __cdecl nullsub_126(); // idb int __cdecl sub_69B1D0(); void __cdecl nullsub_270(); // idb void __cdecl nullsub_267(); // idb void __cdecl sub_69B270(); // idb void __cdecl nullsub_127(); // idb void __cdecl nullsub_128(); // idb void __cdecl nullsub_129(); // idb void __cdecl nullsub_130(); // idb void __cdecl nullsub_131(); // idb void __cdecl nullsub_273(); // idb void __cdecl nullsub_132(); // idb void __cdecl nullsub_133(); // idb void __cdecl nullsub_134(); // idb void __cdecl nullsub_135(); // idb void __cdecl nullsub_136(); // idb void __cdecl nullsub_137(); // idb void __cdecl nullsub_138(); // idb void __cdecl nullsub_139(); // idb void __cdecl nullsub_140(); // idb void __cdecl nullsub_141(); // idb void __cdecl nullsub_274(); // idb void __cdecl nullsub_275(); // idb void __cdecl nullsub_142(); // idb void __cdecl nullsub_143(); // idb void __cdecl nullsub_144(); // idb void __cdecl nullsub_145(); // idb void __cdecl sub_69B3E0(); // idb void __cdecl nullsub_146(); // idb void __cdecl nullsub_147(); // idb void __cdecl nullsub_148(); // idb void __cdecl nullsub_276(); // idb void __cdecl sub_69B430(); // idb void __cdecl sub_69B470(); // idb void __cdecl sub_69B4B0(); // idb void __cdecl sub_69B4F0(); // idb void __cdecl sub_69B530(); // idb void __cdecl sub_69B570(); // idb void __cdecl sub_69B580(); // idb void __cdecl sub_69B600(); // idb void __cdecl nullsub_149(); // idb void __cdecl nullsub_150(); // idb void __cdecl nullsub_151(); // idb void __cdecl nullsub_152(); // idb void __cdecl nullsub_153(); // idb void __cdecl sub_69B6D0(); // idb void __cdecl nullsub_154(); // idb void __cdecl nullsub_155(); // idb void __cdecl nullsub_277(); // idb void __cdecl nullsub_156(); // idb void __cdecl nullsub_157(); // idb void __cdecl nullsub_158(); // idb void __cdecl nullsub_159(); // idb void __cdecl nullsub_160(); // idb void __cdecl nullsub_161(); // idb void __cdecl nullsub_162(); // idb void __cdecl nullsub_163(); // idb void __cdecl nullsub_278(); // idb void __cdecl nullsub_279(); // idb void __cdecl nullsub_280(); // idb void __cdecl nullsub_164(); // idb void __cdecl nullsub_165(); // idb void __cdecl nullsub_166(); // idb void __cdecl nullsub_167(); // idb void __cdecl nullsub_168(); // idb void __cdecl nullsub_169(); // idb void __cdecl nullsub_170(); // idb void __cdecl nullsub_171(); // idb void __cdecl nullsub_172(); // idb void __cdecl nullsub_173(); // idb void __cdecl sub_69B8C0(); // idb void __cdecl sub_69B8E0(); // idb void __cdecl sub_69B8F0(); // idb void __cdecl sub_69B900(); // idb void __cdecl sub_69B910(); // idb void __cdecl sub_69B920(); // idb void __cdecl sub_69B930(); // idb void __cdecl sub_69B940(); // idb void __cdecl sub_69B950(); // idb void __cdecl sub_69B960(); // idb void __cdecl sub_69B970(); // idb void __cdecl sub_69B980(); // idb void __cdecl sub_69B990(); // idb void __cdecl sub_69B9A0(); // idb void __cdecl sub_69B9B0(); // idb void __cdecl sub_69B9C0(); // idb void __cdecl sub_69B9D0(); // idb void __cdecl sub_69B9E0(); // idb void __cdecl sub_69B9F0(); // idb void __cdecl sub_69BA00(); // idb void __cdecl sub_69BA10(); // idb void __cdecl sub_69BA20(); // idb void __cdecl sub_69BA30(); // idb void __cdecl sub_69BA40(); // idb void __cdecl sub_69BA50(); // idb void __cdecl sub_69BA60(); // idb void __cdecl sub_69BA70(); // idb void __cdecl sub_69BA80(); // idb void __cdecl sub_69BA90(); // idb void __cdecl sub_69BAA0(); // idb void __cdecl sub_69BAB0(); // idb void __cdecl sub_69BAC0(); // idb void __cdecl sub_69BAD0(); // idb void __cdecl sub_69BAE0(); // idb void __cdecl sub_69BAF0(); // idb void __cdecl sub_69BB00(); // idb void __cdecl sub_69BB10(); // idb void __cdecl sub_69BB20(); // idb void __cdecl sub_69BB50(); // idb void __cdecl nullsub_174(); // idb void __cdecl nullsub_175(); // idb void __cdecl nullsub_176(); // idb void __cdecl nullsub_177(); // idb void __cdecl nullsub_281(); // idb void __cdecl nullsub_178(); // idb void __cdecl sub_69BBC0(); // idb void __cdecl sub_69BBD0(); // idb void __cdecl sub_69BBE0(); // idb void __cdecl sub_69BBF0(); // idb void __cdecl sub_69BC00(); // idb void __cdecl sub_69BC10(); // idb void __cdecl sub_69BC20(); // idb void __cdecl sub_69BC30(); // idb void __cdecl sub_69BC40(); // idb void __cdecl sub_69BC50(); // idb void __cdecl sub_69BC60(); // idb int __cdecl sub_69BC70(); int __cdecl sub_69BC90(); void __cdecl sub_69BCA0(); // idb void __cdecl sub_69BCB0(); // idb void __cdecl sub_69BCC0(); // idb void __cdecl sub_69BCD0(); // idb void __cdecl sub_69BCE0(); // idb void __cdecl sub_69BCF0(); // idb void __cdecl sub_69BD00(); // idb void __cdecl sub_69BD10(); // idb void __cdecl sub_69BD20(); // idb void __cdecl sub_69BD30(); // idb void __cdecl sub_69BD40(); // idb void __cdecl sub_69BD50(); // idb void __cdecl sub_69BD60(); // idb void __cdecl sub_69BD70(); // idb void __cdecl sub_69BD80(); // idb void __cdecl sub_69BD90(); // idb void __cdecl sub_69BDA0(); // idb void __cdecl sub_69BDB0(); // idb void __cdecl sub_69BDC0(); // idb void __cdecl sub_69BDD0(); // idb void __cdecl sub_69BDE0(); // idb void __cdecl sub_69BDF0(); // idb void __cdecl sub_69BE00(); // idb void __cdecl sub_69BE10(); // idb void __cdecl sub_69BE20(); // idb void __cdecl sub_69BE30(); // idb void __cdecl sub_69BE40(); // idb void __cdecl sub_69BE50(); // idb void __cdecl sub_69BE60(); // idb void __cdecl sub_69BE70(); // idb void __cdecl sub_69BE80(); // idb void __cdecl sub_69BE90(); // idb void __cdecl sub_69BEA0(); // idb void __cdecl sub_69BEB0(); // idb void __cdecl sub_69BEC0(); // idb void __cdecl sub_69BED0(); // idb void __cdecl sub_69BEE0(); // idb void __cdecl sub_69BEF0(); // idb void __cdecl sub_69BF00(); // idb void __cdecl sub_69BF10(); // idb void __cdecl sub_69BF20(); // idb void __cdecl sub_69BF30(); // idb void __cdecl sub_69BF40(); // idb void __cdecl sub_69BF50(); // idb void __cdecl sub_69BF60(); // idb int __cdecl sub_69BF70(); void __cdecl sub_69BF80(); // idb void __cdecl sub_69BF90(); // idb void __cdecl sub_69BFA0(); // idb void __cdecl sub_69BFB0(); // idb void __cdecl sub_69BFC0(); // idb void __cdecl sub_69BFD0(); // idb void __cdecl sub_69BFE0(); // idb void __cdecl sub_69BFF0(); // idb void __cdecl sub_69C000(); // idb void __cdecl sub_69C010(); // idb void __cdecl sub_69C020(); // idb void __cdecl sub_69C030(); // idb void __cdecl nullsub_282(); // idb void __cdecl sub_69C050(); // idb void __cdecl nullsub_283(); // idb void __cdecl nullsub_285(); // idb void __cdecl nullsub_286(); // idb void __cdecl nullsub_287(); // idb void __cdecl nullsub_288(); // idb void __cdecl nullsub_289(); // idb void __cdecl nullsub_290(); // idb void __cdecl nullsub_291(); // idb void __cdecl nullsub_292(); // idb void __cdecl nullsub_293(); // idb void __cdecl nullsub_294(); // idb void __cdecl nullsub_295(); // idb void __cdecl nullsub_296(); // idb void __cdecl nullsub_297(); // idb void __cdecl nullsub_298(); // idb void __cdecl nullsub_299(); // idb void __cdecl nullsub_300(); // idb void __cdecl nullsub_301(); // idb void __cdecl nullsub_302(); // idb void __cdecl nullsub_303(); // idb void __cdecl nullsub_304(); // idb void __cdecl nullsub_305(); // idb void __cdecl nullsub_306(); // idb void __cdecl nullsub_307(); // idb void __cdecl nullsub_308(); // idb void __cdecl nullsub_309(); // idb void __cdecl nullsub_310(); // idb void __cdecl nullsub_311(); // idb void __cdecl nullsub_312(); // idb void __cdecl nullsub_313(); // idb void __cdecl nullsub_314(); // idb void __cdecl nullsub_315(); // idb void __cdecl nullsub_316(); // idb void __cdecl nullsub_317(); // idb void __cdecl nullsub_318(); // idb void __cdecl nullsub_319(); // idb void __cdecl nullsub_320(); // idb void __cdecl nullsub_321(); // idb void __cdecl nullsub_322(); // idb void __cdecl nullsub_323(); // idb void __cdecl nullsub_324(); // idb void __cdecl nullsub_325(); // idb void __cdecl nullsub_326(); // idb void __cdecl nullsub_327(); // idb void __cdecl nullsub_328(); // idb void __cdecl nullsub_329(); // idb void __cdecl nullsub_330(); // idb void __cdecl nullsub_331(); // idb void __cdecl nullsub_332(); // idb void __cdecl nullsub_333(); // idb void __cdecl nullsub_334(); // idb void __cdecl nullsub_335(); // idb void __cdecl nullsub_336(); // idb void __cdecl nullsub_337(); // idb void __cdecl nullsub_338(); // idb void __cdecl nullsub_339(); // idb void __cdecl nullsub_340(); // idb void __cdecl nullsub_341(); // idb void __cdecl nullsub_342(); // idb void __cdecl nullsub_343(); // idb void __cdecl nullsub_344(); // idb void __cdecl nullsub_345(); // idb void __cdecl sub_69C490(); // idb void __cdecl sub_69C4A0(); // idb void __cdecl sub_69C4B0(); // idb void __cdecl sub_69C4C0(); // idb void __cdecl sub_69C4D0(); // idb void __cdecl sub_69C4E0(); // idb void __cdecl sub_69C4F0(); // idb int __cdecl sub_69C500(); int (__stdcall **__cdecl sub_69C510())(int, int); void __cdecl nullsub_346(); // idb int __cdecl sub_69C530(); void __cdecl nullsub_284(); // idb void __cdecl sub_69C550(); // idb void __cdecl sub_69C560(); // idb int __cdecl sub_69C5F0(); int __cdecl sub_69C610(); int __cdecl sub_69C630(); int __cdecl sub_69C650(); int __cdecl sub_69C680(); int __cdecl sub_69C6B0(); int __cdecl sub_69C6E0(); int __cdecl sub_69C710(); int __cdecl sub_69C740(); int __cdecl sub_69C770(); int __cdecl sub_69C7A0(); int __cdecl sub_69C7D0(); int __cdecl sub_69C800(); int __cdecl sub_69C830(); int __cdecl sub_69C860(); int __cdecl sub_69C890(); int __cdecl sub_69C8C0(); int __cdecl sub_69C8F0(); int __cdecl sub_69C920(); int __cdecl sub_69C950(); int __cdecl sub_69C980(); int __cdecl sub_69C9B0(); int __cdecl sub_69C9E0(); int __cdecl sub_69CA10(); int __cdecl sub_69CA40(); int __cdecl sub_69CA70(); int __cdecl sub_69CAA0(); void __cdecl nullsub_347(); // idb void __cdecl nullsub_179(); // idb int __cdecl sub_69CAF0(); int __cdecl sub_69CB20(); void __cdecl sub_69CB50(); // idb void __cdecl sub_69CBE0(); // idb void __cdecl sub_69CC70(); // idb int __cdecl sub_69CCD0(); int __cdecl sub_69CD00(); void __cdecl sub_69CD30(); // idb void __cdecl sub_69CD90(); // idb void __cdecl sub_69CDF0(); // idb void __cdecl sub_69CE50(); // idb void __cdecl sub_69CE90(); // idb void __cdecl nullsub_180(); // idb int __cdecl sub_69CEE0(); void __cdecl sub_69CF00(); // idb void __cdecl sub_69CF60(); // idb void __cdecl sub_69CFC0(); // idb void __cdecl sub_69D020(); // idb void __cdecl sub_69D090(); // idb void __cdecl sub_69D0F0(); // idb void __cdecl sub_69D150(); // idb void __cdecl sub_69D1B0(); // idb void __cdecl nullsub_348(); // idb void __cdecl sub_69D230(); // idb int __cdecl sub_69D240(); void __cdecl nullsub_181(); // idb void __cdecl nullsub_182(); // idb void __cdecl nullsub_183(); // idb void __cdecl nullsub_184(); // idb void __cdecl sub_69D2A0(); // idb void __cdecl sub_69D2E0(); // idb void __cdecl sub_69D320(); // idb void __cdecl sub_69D360(); // idb void __cdecl sub_69D3A0(); // idb void __cdecl nullsub_185(); // idb void __cdecl nullsub_186(); // idb void __cdecl nullsub_187(); // idb void __cdecl nullsub_188(); // idb int __cdecl sub_69D3F0(); void __cdecl sub_69D400(); // idb void __cdecl sub_69D440(); // idb void __cdecl sub_69D450(); // idb void __cdecl sub_69D4C0(); // idb void __cdecl sub_69D520(); // idb void __cdecl sub_69D530(); // idb void __cdecl sub_69D540(); // idb void __cdecl sub_69D580(); // idb void __cdecl sub_69D5C0(); // idb void __cdecl sub_69D600(); // idb void __cdecl sub_69D640(); // idb void __cdecl sub_69D680(); // idb void __cdecl sub_69D6C0(); // idb int __cdecl sub_69D700(); void __cdecl sub_69D720(); // idb void __cdecl nullsub_349(); // idb int __cdecl sub_69D790(); int (__thiscall **__cdecl sub_69D810())(void *, char); void __cdecl nullsub_350(); // idb void __cdecl nullsub_351(); // idb void __cdecl nullsub_352(); // idb void __cdecl sub_69D850(); // idb int __cdecl sub_69D870(); void __cdecl nullsub_353(); // idb void __cdecl nullsub_354(); // idb void __cdecl nullsub_355(); // idb void __cdecl nullsub_356(); // idb void __cdecl nullsub_357(); // idb void __cdecl nullsub_358(); // idb void __cdecl nullsub_359(); // idb void __cdecl nullsub_360(); // idb void __cdecl nullsub_361(); // idb void __cdecl nullsub_362(); // idb void __cdecl nullsub_363(); // idb void __cdecl nullsub_364(); // idb void __cdecl nullsub_365(); // idb void __cdecl nullsub_366(); // idb void __cdecl nullsub_367(); // idb void __cdecl nullsub_368(); // idb void __cdecl nullsub_369(); // idb int __cdecl sub_69D9A0(); int __cdecl sub_69D9C0(); void __cdecl sub_69D9E0(); // idb void __cdecl sub_69DA00(); // idb void __cdecl sub_69DA20(); // idb void __cdecl sub_69DAA0(); // idb void __cdecl sub_69DAC0(); // idb void __cdecl sub_69DAD0(); // idb void __cdecl sub_69DAE0(); // idb int __cdecl sub_69DB40(); LONG __cdecl sub_69DB57(); void __cdecl sub_69DB61(); // idb // int __usercall sub_69DB6B(int a1); void __cdecl sub_69DB75(); // idb void __cdecl sub_69DB80(); // idb void __cdecl sub_69DB8B(); // idb void __cdecl sub_69DB96(); // idb int __cdecl sub_69DBA0(); int __cdecl sub_69DBAA(); // 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 QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount); // BOOL __stdcall SetLocalTime(const SYSTEMTIME *lpSystemTime); // DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); // HMODULE __stdcall LoadLibraryW(LPCWSTR lpLibFileName); // BOOL __stdcall IsProcessorFeaturePresent(DWORD ProcessorFeature); // BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); // BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); // DWORD __stdcall SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); // void __stdcall SetLastError(DWORD dwErrCode); // BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime); // void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime); // BOOL __stdcall CloseHandle(HANDLE hObject); // DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh); // HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); // void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // HANDLE __stdcall GetCurrentProcess(); // DWORD __stdcall GetCurrentProcessId(); // DWORD __stdcall GetCurrentThreadId(); // HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); // LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); // int __stdcall GetTimeFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, int cchTime); // void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // BOOL __stdcall PostQueuedCompletionStatus(HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, 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); // DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); // 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); // 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); // PVOID __stdcall EncodePointer(PVOID Ptr); // PVOID __stdcall DecodePointer(PVOID Ptr); // 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 WSACleanup(); // int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen); // 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 getpeername(SOCKET s, struct sockaddr *name, int *namelen); // int __stdcall closesocket(SOCKET s); // u_short __stdcall ntohs(u_short netshort); // int __stdcall getsockname(SOCKET s, struct sockaddr *name, int *namelen); // int __stdcall listen(SOCKET s, int backlog); // int __stdcall ioctlsocket(SOCKET s, __int32 cmd, u_long *argp); // int __stdcall setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen); // int __stdcall getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen); // int __stdcall WSAGetLastError(); // int __stdcall select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); // int __stdcall shutdown(SOCKET s, int how); // SOCKET __stdcall accept(SOCKET s, struct sockaddr *addr, int *addrlen); // char *__stdcall inet_ntoa(struct in_addr in); // 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) -------------------------------------------------------- bool __thiscall sub_401000(int this, int a2) { return *(_DWORD *)this != *(_DWORD *)a2 || *(_DWORD *)(this + 4) != *(_DWORD *)(a2 + 4) || *(_DWORD *)(this + 8) != *(_DWORD *)(a2 + 8); } //----- (00401030) -------------------------------------------------------- bool __thiscall sub_401030(void *this, int a2, int a3, int a4) { if ( !a2 ) sub_639100(this, a3, a4); return a2 == 0; } //----- (00401060) -------------------------------------------------------- bool __thiscall sub_401060(void *this, int a2, int a3, int a4, int a5) { if ( !a2 ) sub_639150(this, a3, a4, a5); return a2 == 0; } //----- (00401090) -------------------------------------------------------- int __thiscall sub_401090(int this, int a2, int a3) { unsigned __int64 v3; // qax@1 v3 = (unsigned int)(10 * a3) * (unsigned __int64)(unsigned int)&unk_10624DD3; HIDWORD(v3) >>= 6; *(_DWORD *)(this + 4) = HIDWORD(v3); *(_DWORD *)this = a2 + HIDWORD(v3); return v3; } //----- (004010C0) -------------------------------------------------------- char __thiscall sub_4010C0(int this) { char result; // al@2 if ( (unsigned int)dword_14D129E8 <= *(_DWORD *)this ) { result = 0; } else { *(_DWORD *)this += *(_DWORD *)(this + 4); result = 1; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004010E0) -------------------------------------------------------- int __thiscall sub_4010E0(int this) { return *(_BYTE *)(this + 24); } //----- (004010F0) -------------------------------------------------------- int __thiscall sub_4010F0(int this) { return *(_DWORD *)(this + 84); } //----- (00401100) -------------------------------------------------------- int __thiscall sub_401100(int this) { int result; // eax@1 result = dword_14D129E8; *(_DWORD *)(this + 32) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00401110) -------------------------------------------------------- int __thiscall sub_401110(int this) { return dword_87150C[3 * *(_DWORD *)(this + 4)] + 36 * *(_BYTE *)(this + 24) + 12; } // 87150C: using guessed type int dword_87150C[]; //----- (00401130) -------------------------------------------------------- int __thiscall sub_401130(int this) { return dword_87150C[3 * *(_DWORD *)(this + 4)]; } // 87150C: using guessed type int dword_87150C[]; //----- (00401140) -------------------------------------------------------- int __thiscall sub_401140(int this) { return dword_871508[3 * *(_DWORD *)(this + 4)]; } // 871508: using guessed type int dword_871508[]; //----- (00401150) -------------------------------------------------------- char *__thiscall sub_401150(void *this) { return (char *)this + 3364; } //----- (00401160) -------------------------------------------------------- char __thiscall sub_401160(int this) { return *(_BYTE *)(this + 16); } //----- (00401170) -------------------------------------------------------- int __thiscall sub_401170(int this) { return *(_DWORD *)(this + 20); } //----- (00401180) -------------------------------------------------------- int __thiscall sub_401180(void *this, __int16 a2, __int16 a3) { int result; // eax@1 result = *(_DWORD *)this; **(_WORD **)this = (a2 << 10) ^ a3 & 0x3FF; return result; } //----- (004011A0) -------------------------------------------------------- unsigned int __thiscall sub_4011A0(void *this) { return sub_639500((int)((char *)this + 3441480), 0x3E8u); } //----- (004011C0) -------------------------------------------------------- int __thiscall sub_4011C0(void *this, signed int a2, signed int a3) { signed int v3; // esi@1 signed int v4; // edi@1 signed int v5; // ebx@1 v3 = a2; v4 = a3; v5 = 1; while ( (unsigned int)(v3 + 1024) > 0x800 || v4 > 1024 || v4 < -1024 ) { v3 /= 2; v4 /= 2; v5 *= 2; } return v5 * *(_DWORD *)((char *)this + 8 * (v4 + 2049 * v3) + (_DWORD)dword_1004000); } // 1004000: using guessed type int dword_1004000[]; //----- (00401220) -------------------------------------------------------- char __thiscall sub_401220(void *this, signed int a2, signed int a3) { signed int v3; // esi@1 signed int i; // edi@1 v3 = a2; for ( i = a3; (unsigned int)(v3 + 1024) > 0x800 || i > 1024 || i < -1024; i /= 2 ) v3 /= 2; return *((_BYTE *)this + 8 * (i + 2049 * v3) + (_DWORD)byte_1004004); } //----- (00401280) -------------------------------------------------------- int __thiscall sub_401280(int this) { return **(_DWORD **)(this + 102); } //----- (00401290) -------------------------------------------------------- int __thiscall sub_401290(int this) { return *(_DWORD *)(*(_DWORD *)(this + 102) + 4); } //----- (004012A0) -------------------------------------------------------- int __thiscall sub_4012A0(int this, int a2, int a3) { return (**(_DWORD **)(this + 102) - a2) * (**(_DWORD **)(this + 102) - a2) + (*(_DWORD *)(*(_DWORD *)(this + 102) + 4) - a3) * (*(_DWORD *)(*(_DWORD *)(this + 102) + 4) - a3); } //----- (004012C0) -------------------------------------------------------- int __thiscall sub_4012C0(int this) { return *(_DWORD *)(this + 122); } //----- (004012D0) -------------------------------------------------------- int __thiscall sub_4012D0(int this, unsigned __int16 a2) { int result; // eax@2 if ( *(_DWORD *)(this + 436) >= (unsigned int)a2 ) { result = *(_DWORD *)(this + 428) + 1452 * a2; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", a2); result = 0; } return result; } //----- (00401310) -------------------------------------------------------- int __thiscall sub_401310(void *this, int a2) { int result; // eax@2 if ( a2 < 792 ) { result = *((_DWORD *)this + a2 + 110); } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a2); result = 0; } return result; } //----- (00401350) -------------------------------------------------------- void __thiscall sub_401350(int this) { qsort((void *)(this + 4), *(_DWORD *)(this + 1604), 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); } //----- (00401380) -------------------------------------------------------- signed int __cdecl sub_401380() { return 999999999; } //----- (00401390) -------------------------------------------------------- signed int __cdecl sub_401390() { return 5000; } //----- (004013B0) -------------------------------------------------------- void __thiscall sub_4013B0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_69F7AC; nullsub_2((void *)(this + 8)); *(_DWORD *)v1 = &off_69F68C; } // 69F68C: using guessed type int (*off_69F68C)(); // 69F7AC: using guessed type int (*off_69F7AC)(); //----- (00401410) -------------------------------------------------------- int __cdecl sub_401410() { return (int)"Base"; } //----- (00401420) -------------------------------------------------------- int __cdecl sub_401420() { return (int)"Normal"; } //----- (00401430) -------------------------------------------------------- int __cdecl sub_401430() { return (int)"Party"; } //----- (00401440) -------------------------------------------------------- int __cdecl sub_401440() { return (int)"GldAca"; } //----- (00401450) -------------------------------------------------------- int __cdecl sub_401450() { return (int)"WedCpl"; } //----- (00401460) -------------------------------------------------------- int __cdecl sub_401460() { return (int)"Recover"; } //----- (00401470) -------------------------------------------------------- int __cdecl sub_401470() { return (int)"ReinforcedMove"; } //----- (00401480) -------------------------------------------------------- int __cdecl sub_401480() { return (int)"RestCount"; } //----- (00401490) -------------------------------------------------------- int __cdecl sub_401490() { return (int)"Tick"; } //----- (004014A0) -------------------------------------------------------- int __cdecl sub_4014A0() { return (int)"EachTick"; } //----- (004014B0) -------------------------------------------------------- int __cdecl sub_4014B0() { return (int)"Hide"; } //----- (004014C0) -------------------------------------------------------- int __cdecl sub_4014C0() { return (int)"Polymorph"; } //----- (004014D0) -------------------------------------------------------- int __cdecl sub_4014D0() { return (int)"RestCountHPRate"; } //----- (004014E0) -------------------------------------------------------- int __cdecl sub_4014E0() { return (int)"Actor"; } //----- (004014F0) -------------------------------------------------------- int __cdecl sub_4014F0() { return (int)"MaxHP"; } //----- (00401500) -------------------------------------------------------- int __cdecl sub_401500() { return (int)"Fear"; } //----- (00401510) -------------------------------------------------------- int __cdecl sub_401510() { return (int)"Captivate"; } //----- (00401520) -------------------------------------------------------- int __cdecl sub_401520() { return (int)"Poison"; } //----- (00401530) -------------------------------------------------------- int __cdecl sub_401530() { return (int)"RangeDamage"; } //----- (00401540) -------------------------------------------------------- int __cdecl sub_401540() { return (int)"Disease"; } //----- (00401550) -------------------------------------------------------- int __cdecl sub_401550() { return (int)"HPHeal"; } //----- (00401560) -------------------------------------------------------- int __cdecl sub_401560() { return (int)"SPHeal"; } //----- (00401570) -------------------------------------------------------- int __cdecl sub_401570() { return (int)"HPSPHeal"; } //----- (00401580) -------------------------------------------------------- int __cdecl sub_401580() { return (int)"Shield"; } //----- (00401590) -------------------------------------------------------- int __cdecl sub_401590() { return (int)"ManaShield"; } //----- (004015A0) -------------------------------------------------------- int __cdecl sub_4015A0() { return (int)"PartyRecharge"; } //----- (004015B0) -------------------------------------------------------- int __cdecl sub_4015B0() { return (int)"SelfRevive"; } //----- (004015C0) -------------------------------------------------------- int __cdecl sub_4015C0() { return (int)"RangeIntercept"; } //----- (004015D0) -------------------------------------------------------- int __cdecl sub_4015D0() { return (int)"LastDmgRetio"; } //----- (004015E0) -------------------------------------------------------- int __cdecl sub_4015E0() { return (int)"LastDmgRatio_DefSide"; } //----- (004015F0) -------------------------------------------------------- int __cdecl sub_4015F0() { return (int)"TimeAttack"; } //----- (00401600) -------------------------------------------------------- int __cdecl sub_401600() { return (int)"CastDelay"; } //----- (00401610) -------------------------------------------------------- int __cdecl sub_401610() { return (int)"IgnoreCoolTime"; } //----- (00401620) -------------------------------------------------------- int __cdecl sub_401620() { return (int)"Silence"; } //----- (00401630) -------------------------------------------------------- int __cdecl sub_401630() { return (int)"OneUseSilence"; } //----- (00401640) -------------------------------------------------------- int __cdecl sub_401640() { return (int)"Bomb"; } //----- (00401650) -------------------------------------------------------- int __cdecl sub_401650() { return (int)"UseSPDown"; } //----- (00401660) -------------------------------------------------------- int __cdecl sub_401660() { return (int)"MagicField"; } //----- (00401670) -------------------------------------------------------- int __cdecl sub_401670() { return (int)"HideDamage"; } //----- (00401680) -------------------------------------------------------- int __cdecl sub_401680() { return (int)"DmgState"; } //----- (00401690) -------------------------------------------------------- int __cdecl sub_401690() { return (int)"ExpUpRate"; } //----- (004016A0) -------------------------------------------------------- int __cdecl sub_4016A0() { return (int)"DropUpRate"; } //----- (004016B0) -------------------------------------------------------- int __cdecl sub_4016B0() { return (int)"DamageMinusRate"; } //----- (004016C0) -------------------------------------------------------- int __cdecl sub_4016C0() { return (int)"Dispel"; } //----- (004016D0) -------------------------------------------------------- int __cdecl sub_4016D0() { return (int)"ShieldHPRate"; } //----- (004016E0) -------------------------------------------------------- int __cdecl sub_4016E0() { return (int)"DamageDownRate"; } //----- (004016F0) -------------------------------------------------------- int __cdecl sub_4016F0() { return (int)"DelCastTime"; } //----- (00401700) -------------------------------------------------------- int __cdecl sub_401700() { return (int)"MinHP"; } //----- (00401710) -------------------------------------------------------- int __cdecl sub_401710() { return (int)"DamageMinusAtk"; } //----- (00401720) -------------------------------------------------------- int __cdecl sub_401720() { sub_639100(&unk_86DDD8, (int)"AbnormalStateElement *AbnormalStateElement::ase_This called", 0); loc_6391B0("AbnormalStateElement *AbnormalStateElement::ase_This called"); return 0; } //----- (00401750) -------------------------------------------------------- int __thiscall sub_401750(void *this, unsigned int a2) { int result; // eax@2 if ( a2 > 0x317 ) result = 0; else result = *((_DWORD *)this + a2 + 2435); return result; } //----- (00401780) -------------------------------------------------------- bool __thiscall sub_401780(int this, int a2) { return (unsigned __int16)(*(int (**)(void))(*(_DWORD *)a2 + 1360))() == *(_WORD *)(this + 1608); } //----- (004017C0) -------------------------------------------------------- bool __thiscall sub_4017C0(int this, int a2) { int v2; // edi@1 v2 = this; return (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1360))(a2) == *(_WORD *)(this + 1608) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2) == *(_DWORD *)(v2 + 1612); } //----- (00401820) -------------------------------------------------------- bool __thiscall sub_401820(void *this, int a2) { void *v2; // edi@1 bool v3; // zf@1 int v4; // eax@1 bool result; // al@2 v2 = this; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2136))(a2) == 0; v4 = *(_DWORD *)a2; if ( v3 ) { result = (*(int (__thiscall **)(int))(v4 + 2072))(a2) == *((_DWORD *)v2 + 402); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v4 + 2136))(a2) == 1 ) result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2140))(a2) == *((_DWORD *)v2 + 402); else result = 0; } return result; } //----- (00401890) -------------------------------------------------------- char __stdcall sub_401890(void *a1) { char result; // al@1 int v2; // ST04_4@2 int v3; // eax@2 result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1156))(a1); if ( result ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 864))(a1); v2 = *(_DWORD *)((char *)a1 + 102); v3 = sub_427BD0(&unk_13253E80); result = sub_549C70(a1, v3, v2, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); } return result; } //----- (00401900) -------------------------------------------------------- int __thiscall sub_401900(void *this, signed int a2) { int v2; // esi@1 int result; // eax@1 v2 = (*(int (**)(void))(*(_DWORD *)this + 1184))(); result = a2 / 8; *(_BYTE *)(result + v2) |= 1 << a2 % 8; return result; } //----- (00401940) -------------------------------------------------------- int __thiscall sub_401940(void *this, signed int a2) { int v2; // esi@1 int result; // eax@1 v2 = (*(int (**)(void))(*(_DWORD *)this + 1184))(); result = a2 / 8; *(_BYTE *)(result + v2) &= ~(1 << a2 % 8); return result; } //----- (00401980) -------------------------------------------------------- int __thiscall sub_401980(int this, int a2, int a3, int a4) { return sub_415C60((void *)(a2 + 36 * a3 + 12), *(_DWORD *)(this + 12)); } //----- (004019A0) -------------------------------------------------------- int __thiscall sub_4019A0(int this, int a2, int a3, int a4) { unsigned __int64 v4; // qax@2 int v5; // edi@3 if ( a4 ) { v5 = sub_415C60((void *)(a2 + 36 * a3 + 12), *(_DWORD *)(this + 8)); v4 = (unsigned __int64)(unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1264))(a4) * v5 / 0x3E8; } else { LODWORD(v4) = 0; } return v4; } //----- (00401A10) -------------------------------------------------------- void __thiscall sub_401A10(int this) { int v1; // esi@1 v1 = this; nullsub_2((void *)(this + 96)); nullsub_2((void *)(v1 + 36)); } //----- (00401A70) -------------------------------------------------------- int __thiscall sub_401A70(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 3792))(); } //----- (00401A80) -------------------------------------------------------- int __thiscall sub_401A80(int this) { int v1; // esi@1 int v2; // ecx@1 v1 = this; v2 = *(_DWORD *)(this + 8); if ( !v2 ) return 0; if ( (*(int (**)(void))(*(_DWORD *)v2 + 836))() != *(_DWORD *)(v1 + 12) ) { *(_DWORD *)(v1 + 8) = 0; return 0; } return *(_DWORD *)(v1 + 8); } //----- (00401AC0) -------------------------------------------------------- char __stdcall sub_401AC0(int a1, int a2, int a3, int a4) { int v5; // edi@4 int v6; // eax@5 int v7; // ebx@10 int v8; // esi@11 unsigned int v9; // ecx@12 int v10; // ecx@13 int v11; // edi@14 int v12; // [sp+0h] [bp-8h]@5 unsigned int v13; // [sp+4h] [bp-4h]@8 int v14; // [sp+10h] [bp+8h]@8 if ( !a1 || !a2 ) return 0; v5 = a3; if ( !a3 ) return 0; v6 = dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12; v12 = dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12; if ( dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) == -12 ) { sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_SetAbstateToArea NULL aeo_GetIndexArgument", 0); return 0; } v13 = 0; v14 = dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12; while ( 1 ) { if ( a4 == *(_DWORD *)(v6 + 4) ) { v7 = 0; if ( sub_4C0DC0(v5) > 0 ) break; } LABEL_18: v6 = v14 + 8; ++v13; v14 += 8; if ( v13 >= 4 ) return 1; } while ( 1 ) { v8 = sub_4C0DD0(v5, v7); if ( !v8 ) goto LABEL_17; v9 = *(_WORD *)(v14 + 8); if ( dword_8772EC < v9 ) break; v10 = dword_8772E4 + 1452 * v9; if ( !v10 ) goto LABEL_21; v11 = *(_DWORD *)(*(_DWORD *)v10 + 34); if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 996))( v8, *(_DWORD *)(*(_DWORD *)v10 + 34)) ) (*(void (__thiscall **)(int, int, int, signed int, signed int))(*(_DWORD *)v8 + 1604))(v8, a2, v11, 1, 1); v5 = a3; LABEL_17: ++v7; if ( v7 >= sub_4C0DC0(v5) ) goto LABEL_18; } sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", *(_WORD *)(v14 + 8)); LABEL_21: sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_SetAbstateToArea Over Abstate value ", *(_DWORD *)(v12 + 8 * v13 + 8)); return 0; } // 87150C: using guessed type int dword_87150C[]; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; //----- (00401C10) -------------------------------------------------------- signed int __stdcall sub_401C10(int a1) { return 2; } //----- (00401C20) -------------------------------------------------------- signed int __stdcall sub_401C20(int a1) { *(_DWORD *)(a1 + 32) = dword_14D129E8; return 2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00401C40) -------------------------------------------------------- char __stdcall sub_401C40(int a1) { return 1; } //----- (00401C50) -------------------------------------------------------- void __thiscall sub_401C50(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@2 v3 = a2; if ( a2 ) { v4 = a3; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)dword_871508[3 * *(_DWORD *)(this + 4)] + 4))(a2, a3); if ( sub_5C54D0((const char *)(*(_DWORD *)dword_87150C[3 * *(_DWORD *)(v3 + 4)] + 2), (int)&a2) == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1496))(v4, a2, 65535); } } // 871508: using guessed type int dword_871508[]; // 87150C: using guessed type int dword_87150C[]; //----- (00401CC0) -------------------------------------------------------- void __thiscall sub_401CC0(int this, int a2, int a3) { int v3; // edi@1 int v4; // ebx@1 int v5; // esi@6 int v6; // eax@7 int v7; // esi@8 int v8; // eax@9 int v9; // eax@10 int v10; // edi@10 int v11; // ebx@10 signed int v12; // eax@10 int v13; // edx@10 int v14; // ecx@11 int v15; // esi@16 char v16; // dl@16 int v17; // eax@22 int v18; // ecx@22 int v19; // eax@22 int v20; // edi@23 signed int v21; // edi@29 int v22; // eax@33 signed int v23; // ecx@34 char v24; // [sp+Ch] [bp-24h]@32 int v25; // [sp+18h] [bp-18h]@10 int v26; // [sp+1Ch] [bp-14h]@22 int v27; // [sp+20h] [bp-10h]@22 int v28; // [sp+24h] [bp-Ch]@6 int v29; // [sp+28h] [bp-8h]@8 int v30; // [sp+2Ch] [bp-4h]@22 int v31; // [sp+38h] [bp+8h]@9 int v32; // [sp+38h] [bp+8h]@22 v3 = a2; v4 = this; sub_401C50(this, a2, a3); if ( a3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) != 5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 1160))(a3); if ( a2 ) { v5 = dword_87150C[3 * *(_DWORD *)(v4 + 4)]; v28 = v5; if ( v5 ) { v6 = *(_BYTE *)(a2 + 24); if ( (unsigned int)(v6 - 1) <= 0x26 ) { v7 = v5 + 36 * v6 + 12; v29 = v7; if ( v7 ) { v31 = a2 + 88; v8 = sub_401A80(v3); if ( v8 ) { v9 = *(_DWORD *)(v8 + 102); v10 = *(_DWORD *)(v9 + 4); v11 = *(_DWORD *)v9; v25 = *(_DWORD *)(v9 + 4); v12 = 0; v13 = v7 + 4; while ( 1 ) { v14 = *(_DWORD *)v13; if ( *(_DWORD *)v13 == 49 ) { v15 = *(_DWORD *)(v7 + 8 * v12 + 8); v16 = 0; goto LABEL_21; } if ( v14 == 79 ) { v15 = *(_DWORD *)(v7 + 8 * v12 + 8); goto LABEL_20; } if ( v14 == 109 ) break; ++v12; v13 += 8; if ( v12 >= 4 ) return; } if ( !v31 ) return; v15 = *(_DWORD *)(v7 + 8 * v12 + 8); v11 = *(_DWORD *)v31; v25 = *(_DWORD *)(v31 + 4); v10 = v25; LABEL_20: v16 = 1; LABEL_21: if ( v15 ) { v17 = *(_DWORD *)(a3 + 102); v18 = *(_DWORD *)v17; v26 = *(_DWORD *)v17; v19 = *(_DWORD *)(v17 + 4); v32 = v15; v30 = 1; v27 = v19; if ( v16 == 1 ) { v32 = v15; v30 = 0; v20 = sub_4011C0(&unk_AF09DA8, v11 - v18, v10 - v19); if ( v15 > v20 - (*(int (**)(void))(*(_DWORD *)a3 + 1740))() ) v15 = v20 - (*(int (**)(void))(*(_DWORD *)a3 + 1740))(); v19 = v27; v18 = v26; v10 = v25; v15 = -v15; } if ( v11 != v18 || v10 != v19 ) { v21 = (unsigned __int8)sub_401220(&unk_AF09DA8, v18 - v11, v19 - v10); v26 += v15 * sub_576E10(&unk_132546E8, v21) / 1024; v27 += v15 * sub_576E40(&unk_132546E8, v21) / 1024; } else { v27 = v15 + v19; } if ( v15 < 0 ) v15 = -v15; if ( sub_4BE0E0( (void *)a3, (int)&v26, v15, (int)&v24, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) { v22 = 500; if ( *(_DWORD *)v29 ) { v23 = *(_DWORD *)(*(_DWORD *)v29 + 43); if ( *(_DWORD *)v28 ) { if ( v23 ) { v22 = 1000 * v32 / v23; if ( v22 < 0 ) v22 = -v22; } } } (*(void (__thiscall **)(int, char *, int, int, _DWORD, _DWORD))(*(_DWORD *)a3 + 2600))( a3, &v24, v22, v30, 0, 0); } } } } } } } } } // 87150C: using guessed type int dword_87150C[]; //----- (00401F10) -------------------------------------------------------- void __thiscall sub_401F10(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@2 v3 = a2; if ( a2 ) { v4 = a3; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)dword_871508[3 * *(_DWORD *)(this + 4)] + 8))(a2, a3); if ( sub_5C54D0((const char *)(*(_DWORD *)dword_87150C[3 * *(_DWORD *)(v3 + 4)] + 2), (int)&a2) == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1500))(v4, a2, 65535); } } // 871508: using guessed type int dword_871508[]; // 87150C: using guessed type int dword_87150C[]; //----- (00401F80) -------------------------------------------------------- int __thiscall sub_401F80(int this) { return *(_WORD *)(this + 7394); } //----- (00401F90) -------------------------------------------------------- void *__thiscall sub_401F90(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4C0DA0(this); *((_DWORD *)v2 + 402) = a2; *(_DWORD *)v2 = &off_69FD50; return v2; } // 69FD50: using guessed type int (__stdcall *off_69FD50)(int, int, int); //----- (00401FD0) -------------------------------------------------------- bool __thiscall sub_401FD0(int this, int a2) { bool result; // al@3 if ( *(_DWORD *)(this + 1608) && a2 ) result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(this + 1608) + 3672))(a2) != 0; else result = 0; return result; } //----- (00402010) -------------------------------------------------------- void *__thiscall sub_402010(void *this, int a2, int a3) { void *v3; // esi@1 v3 = this; sub_4C0DA0(this); *((_DWORD *)v3 + 402) = a2; *(_DWORD *)v3 = &off_69FDD4; *((_DWORD *)v3 + 403) = a3; return v3; } // 69FDD4: using guessed type int (__stdcall *off_69FDD4)(int, int, int); //----- (00402050) -------------------------------------------------------- bool __thiscall sub_402050(int this, int a2) { int v2; // esi@1 bool result; // al@5 v2 = this; if ( *(_DWORD *)(this + 1608) && a2 && (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(this + 1608) + 2432))( a2, "AxialListNearScanCenterFriendCasterEnemy::alns_ValidObject") != 1 && (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 1612) + 2432))( a2, "AxialListNearScanCenterFriendCasterEnemy::alns_ValidObject") ) result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 1612) + 1836))(a2) != 0; else result = 0; return result; } //----- (004020C0) -------------------------------------------------------- unsigned int __stdcall sub_4020C0(int a1, unsigned int a2) { unsigned int result; // eax@2 if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 100) ) result = a2 - ((unsigned int)(a2 * sub_415C60( (void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 100) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); else result = a2; return result; } // 87150C: using guessed type int dword_87150C[]; //----- (00402130) -------------------------------------------------------- int __stdcall sub_402130(int a1) { int result; // eax@2 if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 107) ) result = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 107); else result = 0; return result; } // 87150C: using guessed type int dword_87150C[]; //----- (00402190) -------------------------------------------------------- int __stdcall sub_402190(int a1) { int result; // eax@2 if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 108) ) result = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 108); else result = 0; return result; } // 87150C: using guessed type int dword_87150C[]; //----- (004021F0) -------------------------------------------------------- int __stdcall sub_4021F0(int a1) { int result; // eax@2 int v2; // edi@3 if ( a1 ) { v2 = 0; if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115) ) v2 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115); result = v2; } else { result = 0; } return result; } // 87150C: using guessed type int dword_87150C[]; //----- (00402260) -------------------------------------------------------- int __stdcall sub_402260(int a1, int a2) { int v2; // eax@1 int v3; // ecx@1 int result; // eax@2 v2 = *(_DWORD *)(a1 + 84); v3 = *(_DWORD *)a2; if ( v2 > *(_DWORD *)a2 ) { result = v2 - v3; *(_DWORD *)(a1 + 84) = result; *(_DWORD *)a2 = 0; } else { *(_DWORD *)a2 = v3 - v2; *(_DWORD *)(a1 + 84) = 0; result = dword_14D129E8; *(_DWORD *)(a1 + 32) = dword_14D129E8; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004022A0) -------------------------------------------------------- char __stdcall sub_4022A0(int a1, int a2) { unsigned __int64 v2; // qax@1 LOBYTE(v2) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115); if ( (_BYTE)v2 ) { LODWORD(v2) = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115); if ( (unsigned int)v2 < 0x3E8 ) { v2 = (unsigned int)(v2 * *(_DWORD *)a2) * (unsigned __int64)(unsigned int)&unk_10624DD3; *(_DWORD *)a2 -= HIDWORD(v2) >> 6; } else { *(_DWORD *)a2 = 0; } } return v2; } // 87150C: using guessed type int dword_87150C[]; //----- (00402320) -------------------------------------------------------- char __stdcall sub_402320(int a1, int a2) { unsigned __int64 v2; // qax@1 LOBYTE(v2) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 111); if ( (_BYTE)v2 ) { LODWORD(v2) = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 111); if ( (unsigned int)v2 < 0x3E8 ) { v2 = (unsigned int)(v2 * *(_DWORD *)a2) * (unsigned __int64)(unsigned int)&unk_10624DD3; *(_DWORD *)a2 -= HIDWORD(v2) >> 6; } else { *(_DWORD *)a2 = 0; } } return v2; } // 87150C: using guessed type int dword_87150C[]; //----- (004023A0) -------------------------------------------------------- int __stdcall sub_4023A0(int a1, int a2) { int result; // eax@1 result = a2; *(_DWORD *)a2 = 0; *(_DWORD *)(a1 + 32) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004023C0) -------------------------------------------------------- char __stdcall sub_4023C0(int a1, int a2) { int v2; // eax@1 LOBYTE(v2) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 114); if ( (_BYTE)v2 ) { v2 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 114); if ( *(_DWORD *)a2 < (unsigned int)v2 ) *(_DWORD *)a2 = v2; } return v2; } // 87150C: using guessed type int dword_87150C[]; //----- (00402440) -------------------------------------------------------- char __thiscall sub_402440(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x74u); result = 1; } else { result = 0; } return result; } //----- (00402480) -------------------------------------------------------- char __thiscall sub_402480(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x74u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (004024D0) -------------------------------------------------------- char __thiscall sub_4024D0(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x74u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00402520) -------------------------------------------------------- char __stdcall sub_402520(int a1, int a2) { return 1; } //----- (00402530) -------------------------------------------------------- char __thiscall sub_402530(int this) { int v1; // eax@1 int v2; // edx@1 char result; // al@2 v1 = *(_WORD *)(this + 2); v2 = *(_DWORD *)(this + 4); if ( (unsigned __int16)v1 < *(_WORD *)(v2 + 4) ) { *(_WORD *)this = v1; *(_WORD *)(this + 2) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v1 + 4); result = 1; } else { result = 0; } return result; } //----- (00402560) -------------------------------------------------------- void *__thiscall sub_402560(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6A04B4; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A04B4: using guessed type int (__thiscall *off_6A04B4)(void *, char); //----- (004025A0) -------------------------------------------------------- void *__thiscall sub_4025A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6A04D8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A04D8: using guessed type int (__thiscall *off_6A04D8)(void *, char); //----- (004025E0) -------------------------------------------------------- char __thiscall sub_4025E0(int this, int a2, int a3) { int v3; // esi@1 char result; // al@2 v3 = this; if ( (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(this + 8))( a2, *(_DWORD *)(this + 4), a3, *(_DWORD *)(this + 12)) ) { result = 1; } else { *(_WORD *)(v3 + 20) = a3; *(_DWORD *)(v3 + 16) = a2; result = 0; } return result; } //----- (00402620) -------------------------------------------------------- int __thiscall sub_402620(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 8); if ( !v3 ) goto LABEL_7; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v3 + 1232))() != 2 || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 8) + 768))() || (*(int (**)(void))(**(_DWORD **)(v2 + 8) + 836))() != *(_DWORD *)(v2 + 12) || (result = *(_DWORD *)(v2 + 8), (**(_DWORD **)(result + 102) - *(_DWORD *)a2) * (**(_DWORD **)(result + 102) - *(_DWORD *)a2) + (*(_DWORD *)(*(_DWORD *)(result + 102) + 4) - *(_DWORD *)(a2 + 4)) * (*(_DWORD *)(*(_DWORD *)(result + 102) + 4) - *(_DWORD *)(a2 + 4)) >= (unsigned int)((char *)loc_5F5E0B + 5)) ) { *(_DWORD *)(v2 + 8) = 0; LABEL_7: result = 0; } return result; } // 5F5E0B: using guessed type int loc_5F5E0B(); //----- (004026A0) -------------------------------------------------------- void *__thiscall sub_4026A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; *(_DWORD *)this = a3; sub_4675D0((int)&unk_D020420, a3); dword_7508B8[dword_750CB8] = a3; dword_750AB8[dword_750CB8++] = a4; return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004026F0) -------------------------------------------------------- int __thiscall sub_4026F0(int *this) { --dword_750CB8; return sub_467660((int)&unk_D020420, *this); } // 750CB8: using guessed type int dword_750CB8; //----- (00402710) -------------------------------------------------------- int __thiscall sub_402710(int this, int a2) { int v2; // esi@1 int result; // eax@2 int v4; // eax@4 int v5; // eax@10 int v6; // ecx@10 int v7; // edx@10 int v8; // eax@10 v2 = *(_DWORD *)(this + 122); if ( v2 && a2 && (v4 = *(_DWORD *)(a2 + 122)) != 0 ) { if ( *(_DWORD *)v2 == *(_DWORD *)v4 && *(_DWORD *)(v2 + 4) == *(_DWORD *)(v4 + 4) && *(_DWORD *)(v2 + 8) == *(_DWORD *)(v4 + 8) && **(_DWORD **)(this + 118) == **(_DWORD **)(a2 + 118) ) { v5 = *(_DWORD *)(this + 102); v6 = *(_DWORD *)v5; v7 = *(_DWORD *)(a2 + 102); v8 = *(_DWORD *)(v5 + 4) - *(_DWORD *)(v7 + 4); result = (v6 - *(_DWORD *)v7) * (v6 - *(_DWORD *)v7) + v8 * v8; } else { result = 999999999; } } else { result = 999999999; } return result; } //----- (00402780) -------------------------------------------------------- void __thiscall sub_402780(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 12916); *(_DWORD *)(this + 12908) = &off_6A04B4; if ( v2 ) sub_6530A4(v2); *(_DWORD *)(v1 + 9732) = &off_69F68C; *(_DWORD *)(v1 + 9724) = &off_69F68C; *(_DWORD *)(v1 + 9716) = &off_69F68C; *(_DWORD *)(v1 + 9708) = &off_69F68C; *(_DWORD *)(v1 + 9700) = &off_69F68C; *(_DWORD *)(v1 + 9692) = &off_69F68C; *(_DWORD *)(v1 + 9684) = &off_69F68C; *(_DWORD *)(v1 + 9676) = &off_69F68C; *(_DWORD *)(v1 + 9668) = &off_69F68C; *(_DWORD *)(v1 + 9660) = &off_69F68C; *(_DWORD *)(v1 + 9652) = &off_69F68C; *(_DWORD *)(v1 + 9644) = &off_69F68C; *(_DWORD *)(v1 + 9636) = &off_69F68C; *(_DWORD *)(v1 + 9628) = &off_69F68C; *(_DWORD *)(v1 + 9620) = &off_69F68C; *(_DWORD *)(v1 + 9612) = &off_69F68C; *(_DWORD *)(v1 + 9604) = &off_69F68C; *(_DWORD *)(v1 + 9596) = &off_69F68C; *(_DWORD *)(v1 + 9588) = &off_69F68C; *(_DWORD *)(v1 + 9580) = &off_69F68C; *(_DWORD *)(v1 + 9572) = &off_69F68C; *(_DWORD *)(v1 + 9564) = &off_69F68C; *(_DWORD *)(v1 + 9556) = &off_69F68C; *(_DWORD *)(v1 + 9540) = &off_69F7AC; nullsub_2((void *)(v1 + 9548)); *(_DWORD *)(v1 + 9540) = &off_69F68C; *(_DWORD *)(v1 + 9532) = &off_69F68C; *(_DWORD *)(v1 + 9524) = &off_69F68C; *(_DWORD *)(v1 + 9516) = &off_69F68C; *(_DWORD *)(v1 + 9508) = &off_69F68C; *(_DWORD *)(v1 + 9500) = &off_69F68C; *(_DWORD *)(v1 + 9492) = &off_69F68C; *(_DWORD *)(v1 + 9484) = &off_69F68C; *(_DWORD *)(v1 + 9472) = &off_69F68C; *(_DWORD *)(v1 + 9464) = &off_69F68C; *(_DWORD *)(v1 + 9456) = &off_69F68C; *(_DWORD *)(v1 + 9440) = &off_69F68C; *(_DWORD *)(v1 + 9432) = &off_69F68C; *(_DWORD *)(v1 + 9424) = &off_69F68C; *(_DWORD *)(v1 + 9416) = &off_69F68C; *(_DWORD *)(v1 + 9408) = &off_69F68C; *(_DWORD *)(v1 + 9400) = &off_69F68C; *(_DWORD *)(v1 + 9392) = &off_69F68C; *(_DWORD *)(v1 + 9384) = &off_69F68C; *(_DWORD *)(v1 + 9376) = &off_69F68C; *(_DWORD *)(v1 + 9368) = &off_69F68C; *(_DWORD *)(v1 + 9360) = &off_69F68C; *(_DWORD *)(v1 + 9352) = &off_69F68C; *(_DWORD *)(v1 + 9344) = &off_69F6BC; *(_DWORD *)(v1 + 9344) = &off_69F68C; *(_DWORD *)(v1 + 9336) = &off_69F68C; *(_DWORD *)(v1 + 9328) = &off_69F68C; *(_DWORD *)(v1 + 9320) = &off_69F68C; *(_DWORD *)(v1 + 9312) = &off_69F68C; *(_DWORD *)(v1 + 9304) = &off_69F68C; *(_DWORD *)(v1 + 9296) = &off_69F68C; *(_DWORD *)(v1 + 9280) = &off_69F7AC; nullsub_2((void *)(v1 + 9288)); *(_DWORD *)(v1 + 9280) = &off_69F68C; *(_DWORD *)(v1 + 9272) = &off_69F68C; *(_DWORD *)(v1 + 9256) = &off_69F7AC; nullsub_2((void *)(v1 + 9264)); *(_DWORD *)(v1 + 9256) = &off_69F68C; *(_DWORD *)(v1 + 9248) = &off_69F68C; *(_DWORD *)(v1 + 9240) = &off_69F68C; *(_DWORD *)(v1 + 9232) = &off_69F68C; *(_DWORD *)(v1 + 9216) = &off_69F7AC; nullsub_2((void *)(v1 + 9224)); *(_DWORD *)(v1 + 9216) = &off_69F68C; *(_DWORD *)(v1 + 9208) = &off_69F68C; *(_DWORD *)(v1 + 9200) = &off_69F68C; *(_DWORD *)(v1 + 9192) = &off_69F68C; *(_DWORD *)(v1 + 9184) = &off_69F68C; *(_DWORD *)(v1 + 9176) = &off_69F68C; *(_DWORD *)(v1 + 9168) = &off_69F68C; *(_DWORD *)(v1 + 9160) = &off_69F68C; *(_DWORD *)(v1 + 9144) = &off_69F7AC; nullsub_2((void *)(v1 + 9152)); *(_DWORD *)(v1 + 9144) = &off_69F68C; *(_DWORD *)(v1 + 9136) = &off_69F68C; *(_DWORD *)(v1 + 9128) = &off_69F68C; *(_DWORD *)(v1 + 9120) = &off_69F68C; *(_DWORD *)(v1 + 9112) = &off_69F68C; *(_DWORD *)(v1 + 9096) = &off_69F7AC; nullsub_2((void *)(v1 + 9104)); *(_DWORD *)(v1 + 9096) = &off_69F68C; *(_DWORD *)(v1 + 9080) = &off_69F7AC; nullsub_2((void *)(v1 + 9088)); *(_DWORD *)(v1 + 9080) = &off_69F68C; *(_DWORD *)(v1 + 9064) = &off_69F7AC; nullsub_2((void *)(v1 + 9072)); *(_DWORD *)(v1 + 9064) = &off_69F68C; *(_DWORD *)(v1 + 9056) = &off_69F68C; *(_DWORD *)(v1 + 9048) = &off_69F68C; *(_DWORD *)(v1 + 9040) = &off_69F68C; *(_DWORD *)(v1 + 9032) = &off_69F68C; *(_DWORD *)(v1 + 9024) = &off_69F68C; *(_DWORD *)(v1 + 9016) = &off_69F68C; *(_DWORD *)(v1 + 9000) = &off_69F7AC; nullsub_2((void *)(v1 + 9008)); *(_DWORD *)(v1 + 9000) = &off_69F68C; *(_DWORD *)(v1 + 8992) = &off_69F68C; *(_DWORD *)(v1 + 8984) = &off_69F68C; *(_DWORD *)(v1 + 8976) = &off_69F68C; *(_DWORD *)(v1 + 8968) = &off_69F68C; *(_DWORD *)(v1 + 8960) = &off_69F68C; *(_DWORD *)(v1 + 8952) = &off_69F68C; *(_DWORD *)(v1 + 8944) = &off_69F68C; *(_DWORD *)(v1 + 8928) = &off_69F7AC; nullsub_2((void *)(v1 + 8936)); *(_DWORD *)(v1 + 8928) = &off_69F68C; *(_DWORD *)(v1 + 8920) = &off_69F68C; *(_DWORD *)(v1 + 8912) = &off_69F68C; *(_DWORD *)(v1 + 8904) = &off_69F68C; *(_DWORD *)(v1 + 8888) = &off_69F7AC; nullsub_2((void *)(v1 + 8896)); *(_DWORD *)(v1 + 8888) = &off_69F68C; *(_DWORD *)(v1 + 8880) = &off_69F68C; *(_DWORD *)(v1 + 8828) = &off_69F68C; *(_DWORD *)(v1 + 8820) = &off_69F68C; *(_DWORD *)(v1 + 8812) = &off_69F68C; *(_DWORD *)(v1 + 8804) = &off_69F68C; *(_DWORD *)(v1 + 8788) = &off_69F7AC; nullsub_2((void *)(v1 + 8796)); *(_DWORD *)(v1 + 8788) = &off_69F68C; *(_DWORD *)(v1 + 8772) = &off_69F7AC; nullsub_2((void *)(v1 + 8780)); *(_DWORD *)(v1 + 8772) = &off_69F68C; *(_DWORD *)(v1 + 8764) = &off_69F68C; *(_DWORD *)(v1 + 8756) = &off_69F68C; *(_DWORD *)(v1 + 8748) = &off_69F68C; *(_DWORD *)(v1 + 8740) = &off_69F68C; *(_DWORD *)(v1 + 8724) = &off_69F7AC; nullsub_2((void *)(v1 + 8732)); *(_DWORD *)(v1 + 8724) = &off_69F68C; *(_DWORD *)(v1 + 8708) = &off_69F7AC; nullsub_2((void *)(v1 + 8716)); *(_DWORD *)(v1 + 8708) = &off_69F68C; *(_DWORD *)(v1 + 8700) = &off_69F68C; *(_DWORD *)(v1 + 8692) = &off_69F68C; *(_DWORD *)(v1 + 8684) = &off_69F68C; *(_DWORD *)(v1 + 8676) = &off_69F68C; *(_DWORD *)(v1 + 8668) = &off_69F68C; *(_DWORD *)(v1 + 8660) = &off_69F68C; *(_DWORD *)(v1 + 8652) = &off_69F68C; *(_DWORD *)(v1 + 8600) = &off_69F68C; *(_DWORD *)(v1 + 8548) = &off_69F68C; *(_DWORD *)(v1 + 8496) = &off_69F68C; *(_DWORD *)(v1 + 8444) = &off_69F68C; *(_DWORD *)(v1 + 8392) = &off_69F68C; *(_DWORD *)(v1 + 8384) = &off_69F68C; *(_DWORD *)(v1 + 8376) = &off_69F68C; *(_DWORD *)(v1 + 8368) = &off_69F68C; *(_DWORD *)(v1 + 8360) = &off_69F68C; *(_DWORD *)(v1 + 8352) = &off_69F68C; *(_DWORD *)(v1 + 8344) = &off_69F68C; *(_DWORD *)(v1 + 8336) = &off_69F68C; *(_DWORD *)(v1 + 8328) = &off_69F68C; *(_DWORD *)(v1 + 8320) = &off_69F68C; *(_DWORD *)(v1 + 8312) = &off_69F68C; *(_DWORD *)(v1 + 8304) = &off_69F68C; *(_DWORD *)(v1 + 8296) = &off_69F68C; *(_DWORD *)(v1 + 8288) = &off_69F68C; *(_DWORD *)(v1 + 8280) = &off_69F68C; *(_DWORD *)(v1 + 8272) = &off_69F68C; *(_DWORD *)(v1 + 8264) = &off_69F68C; *(_DWORD *)(v1 + 8256) = &off_69F68C; *(_DWORD *)(v1 + 8248) = &off_69F68C; *(_DWORD *)(v1 + 8240) = &off_69F68C; *(_DWORD *)(v1 + 8232) = &off_69F68C; *(_DWORD *)(v1 + 8224) = &off_69F68C; *(_DWORD *)(v1 + 8216) = &off_69F68C; *(_DWORD *)(v1 + 8208) = &off_69F68C; *(_DWORD *)(v1 + 8192) = &off_69F7AC; nullsub_2((void *)(v1 + 8200)); *(_DWORD *)(v1 + 8192) = &off_69F68C; *(_DWORD *)(v1 + 8176) = &off_69F7AC; nullsub_2((void *)(v1 + 8184)); *(_DWORD *)(v1 + 8176) = &off_69F68C; *(_DWORD *)(v1 + 8168) = &off_69F68C; *(_DWORD *)(v1 + 8160) = &off_69F68C; *(_DWORD *)(v1 + 8152) = &off_69F68C; *(_DWORD *)(v1 + 8144) = &off_69F68C; *(_DWORD *)(v1 + 8136) = &off_69F68C; *(_DWORD *)(v1 + 8128) = &off_69F68C; *(_DWORD *)(v1 + 8112) = &off_69F7AC; nullsub_2((void *)(v1 + 8120)); *(_DWORD *)(v1 + 8112) = &off_69F68C; *(_DWORD *)(v1 + 8104) = &off_69F68C; *(_DWORD *)(v1 + 8088) = &off_69F7AC; nullsub_2((void *)(v1 + 8096)); *(_DWORD *)(v1 + 8088) = &off_69F68C; *(_DWORD *)(v1 + 8080) = &off_69F68C; *(_DWORD *)(v1 + 8072) = &off_69F68C; *(_DWORD *)(v1 + 8056) = &off_69F7AC; nullsub_2((void *)(v1 + 8064)); *(_DWORD *)(v1 + 8056) = &off_69F68C; *(_DWORD *)(v1 + 8048) = &off_69F68C; *(_DWORD *)(v1 + 8040) = &off_69F68C; *(_DWORD *)(v1 + 8032) = &off_69F68C; *(_DWORD *)(v1 + 8024) = &off_69F68C; *(_DWORD *)(v1 + 8016) = &off_69F68C; *(_DWORD *)(v1 + 8008) = &off_69F68C; *(_DWORD *)(v1 + 8000) = &off_69F68C; *(_DWORD *)(v1 + 7992) = &off_69F68C; *(_DWORD *)(v1 + 7984) = &off_69F68C; *(_DWORD *)(v1 + 7976) = &off_69F68C; *(_DWORD *)(v1 + 7960) = &off_69F7AC; nullsub_2((void *)(v1 + 7968)); *(_DWORD *)(v1 + 7960) = &off_69F68C; *(_DWORD *)(v1 + 7952) = &off_69F68C; *(_DWORD *)(v1 + 7944) = &off_69F68C; *(_DWORD *)(v1 + 7936) = &off_69F68C; *(_DWORD *)(v1 + 7928) = &off_69F68C; *(_DWORD *)(v1 + 7912) = &off_69F7AC; nullsub_2((void *)(v1 + 7920)); *(_DWORD *)(v1 + 7912) = &off_69F68C; *(_DWORD *)(v1 + 7896) = &off_69F7AC; nullsub_2((void *)(v1 + 7904)); *(_DWORD *)(v1 + 7896) = &off_69F68C; *(_DWORD *)(v1 + 7880) = &off_69F7AC; nullsub_2((void *)(v1 + 7888)); *(_DWORD *)(v1 + 7880) = &off_69F68C; *(_DWORD *)(v1 + 7864) = &off_69F7AC; nullsub_2((void *)(v1 + 7872)); *(_DWORD *)(v1 + 7864) = &off_69F68C; *(_DWORD *)(v1 + 7848) = &off_69F7AC; nullsub_2((void *)(v1 + 7856)); *(_DWORD *)(v1 + 7848) = &off_69F68C; *(_DWORD *)(v1 + 7832) = &off_69F7AC; nullsub_2((void *)(v1 + 7840)); *(_DWORD *)(v1 + 7832) = &off_69F68C; *(_DWORD *)(v1 + 7824) = &off_69F68C; *(_DWORD *)(v1 + 7816) = &off_69F68C; *(_DWORD *)(v1 + 7808) = &off_69F68C; *(_DWORD *)(v1 + 7800) = &off_69F68C; *(_DWORD *)(v1 + 7792) = &off_69F68C; *(_DWORD *)(v1 + 7784) = &off_69F68C; *(_DWORD *)(v1 + 7776) = &off_69F68C; *(_DWORD *)(v1 + 7768) = &off_69F68C; *(_DWORD *)(v1 + 7760) = &off_69F68C; *(_DWORD *)(v1 + 7752) = &off_69F68C; *(_DWORD *)(v1 + 7744) = &off_69F68C; *(_DWORD *)(v1 + 7736) = &off_69F68C; *(_DWORD *)(v1 + 7728) = &off_69F68C; *(_DWORD *)(v1 + 7720) = &off_69F68C; *(_DWORD *)(v1 + 7712) = &off_69F68C; *(_DWORD *)(v1 + 7704) = &off_69F68C; *(_DWORD *)(v1 + 7696) = &off_69F68C; *(_DWORD *)(v1 + 7680) = &off_69F7AC; nullsub_2((void *)(v1 + 7688)); *(_DWORD *)(v1 + 7680) = &off_69F68C; *(_DWORD *)(v1 + 7664) = &off_69F7AC; nullsub_2((void *)(v1 + 7672)); *(_DWORD *)(v1 + 7664) = &off_69F68C; *(_DWORD *)(v1 + 7656) = &off_69F68C; *(_DWORD *)(v1 + 7648) = &off_69F68C; *(_DWORD *)(v1 + 7640) = &off_69F68C; *(_DWORD *)(v1 + 7632) = &off_69F68C; *(_DWORD *)(v1 + 7624) = &off_69F68C; *(_DWORD *)(v1 + 7616) = &off_69F68C; *(_DWORD *)(v1 + 7608) = &off_69F68C; *(_DWORD *)(v1 + 7600) = &off_69F68C; *(_DWORD *)(v1 + 7592) = &off_69F68C; *(_DWORD *)(v1 + 7584) = &off_69F68C; *(_DWORD *)(v1 + 7576) = &off_69F68C; *(_DWORD *)(v1 + 7568) = &off_69F68C; *(_DWORD *)(v1 + 7560) = &off_69F68C; *(_DWORD *)(v1 + 7552) = &off_69F68C; *(_DWORD *)(v1 + 7544) = &off_69F68C; *(_DWORD *)(v1 + 7536) = &off_69F68C; *(_DWORD *)(v1 + 7528) = &off_69F68C; *(_DWORD *)(v1 + 7520) = &off_69F68C; *(_DWORD *)(v1 + 7512) = &off_69F68C; *(_DWORD *)(v1 + 7504) = &off_69F68C; *(_DWORD *)(v1 + 7496) = &off_69F68C; *(_DWORD *)(v1 + 7488) = &off_69F68C; *(_DWORD *)(v1 + 7480) = &off_69F68C; *(_DWORD *)(v1 + 7472) = &off_69F68C; *(_DWORD *)(v1 + 7464) = &off_69F68C; *(_DWORD *)(v1 + 7456) = &off_69F68C; *(_DWORD *)(v1 + 7448) = &off_69F68C; *(_DWORD *)(v1 + 7440) = &off_69F68C; *(_DWORD *)(v1 + 7432) = &off_69F68C; *(_DWORD *)(v1 + 7424) = &off_69F68C; *(_DWORD *)(v1 + 7416) = &off_69F68C; *(_DWORD *)(v1 + 7408) = &off_69F68C; *(_DWORD *)(v1 + 7400) = &off_69F68C; *(_DWORD *)(v1 + 7392) = &off_69F68C; *(_DWORD *)(v1 + 7384) = &off_69F68C; *(_DWORD *)(v1 + 7376) = &off_69F68C; *(_DWORD *)(v1 + 7368) = &off_69F68C; *(_DWORD *)(v1 + 7360) = &off_69F68C; *(_DWORD *)(v1 + 7352) = &off_69F68C; *(_DWORD *)(v1 + 7344) = &off_69F68C; *(_DWORD *)(v1 + 7336) = &off_69F68C; *(_DWORD *)(v1 + 7328) = &off_69F68C; *(_DWORD *)(v1 + 7320) = &off_69F68C; *(_DWORD *)(v1 + 7312) = &off_69F68C; *(_DWORD *)(v1 + 7304) = &off_69F68C; *(_DWORD *)(v1 + 7296) = &off_69F68C; *(_DWORD *)(v1 + 7288) = &off_69F68C; *(_DWORD *)(v1 + 7280) = &off_69F68C; *(_DWORD *)(v1 + 7272) = &off_69F68C; *(_DWORD *)(v1 + 7264) = &off_69F68C; *(_DWORD *)(v1 + 7256) = &off_69F68C; *(_DWORD *)(v1 + 7248) = &off_69F68C; *(_DWORD *)(v1 + 7240) = &off_69F68C; *(_DWORD *)(v1 + 7232) = &off_69F68C; *(_DWORD *)(v1 + 7224) = &off_69F68C; *(_DWORD *)(v1 + 7216) = &off_69F68C; *(_DWORD *)(v1 + 7208) = &off_69F68C; *(_DWORD *)(v1 + 7200) = &off_69F68C; *(_DWORD *)(v1 + 7192) = &off_69F68C; *(_DWORD *)(v1 + 7184) = &off_69F68C; *(_DWORD *)(v1 + 7176) = &off_69F68C; *(_DWORD *)(v1 + 7168) = &off_69F68C; *(_DWORD *)(v1 + 7160) = &off_69F68C; *(_DWORD *)(v1 + 7152) = &off_69F68C; *(_DWORD *)(v1 + 7144) = &off_69F68C; *(_DWORD *)(v1 + 7136) = &off_69F68C; *(_DWORD *)(v1 + 7084) = &off_69F68C; *(_DWORD *)(v1 + 7076) = &off_69F68C; *(_DWORD *)(v1 + 7068) = &off_69F68C; *(_DWORD *)(v1 + 7060) = &off_69F68C; *(_DWORD *)(v1 + 7052) = &off_69F68C; *(_DWORD *)(v1 + 7044) = &off_69F68C; *(_DWORD *)(v1 + 7028) = &off_69F68C; *(_DWORD *)(v1 + 7020) = &off_69F68C; *(_DWORD *)(v1 + 7012) = &off_69F68C; *(_DWORD *)(v1 + 7004) = &off_69F68C; *(_DWORD *)(v1 + 6996) = &off_69F68C; *(_DWORD *)(v1 + 6980) = &off_69F7AC; nullsub_2((void *)(v1 + 6988)); *(_DWORD *)(v1 + 6980) = &off_69F68C; *(_DWORD *)(v1 + 6968) = &off_69F68C; *(_DWORD *)(v1 + 6952) = &off_69F7AC; nullsub_2((void *)(v1 + 6960)); *(_DWORD *)(v1 + 6952) = &off_69F68C; *(_DWORD *)(v1 + 6944) = &off_69F68C; *(_DWORD *)(v1 + 6928) = &off_69F7AC; nullsub_2((void *)(v1 + 6936)); *(_DWORD *)(v1 + 6928) = &off_69F68C; *(_DWORD *)(v1 + 6920) = &off_69F68C; *(_DWORD *)(v1 + 6912) = &off_69F68C; *(_DWORD *)(v1 + 6904) = &off_69F68C; *(_DWORD *)(v1 + 6896) = &off_69F68C; *(_DWORD *)(v1 + 6888) = &off_69F68C; *(_DWORD *)(v1 + 6880) = &off_69F68C; *(_DWORD *)(v1 + 6872) = &off_69F68C; *(_DWORD *)(v1 + 6864) = &off_69F68C; *(_DWORD *)(v1 + 6848) = &off_69F7AC; nullsub_2((void *)(v1 + 6856)); *(_DWORD *)(v1 + 6848) = &off_69F68C; *(_DWORD *)(v1 + 6832) = &off_69F7AC; nullsub_2((void *)(v1 + 6840)); *(_DWORD *)(v1 + 6832) = &off_69F68C; *(_DWORD *)(v1 + 6824) = &off_69F68C; *(_DWORD *)(v1 + 6816) = &off_69F68C; *(_DWORD *)(v1 + 6808) = &off_69F68C; *(_DWORD *)(v1 + 6800) = &off_69F68C; *(_DWORD *)(v1 + 6784) = &off_69F7AC; nullsub_2((void *)(v1 + 6792)); *(_DWORD *)(v1 + 6784) = &off_69F68C; *(_DWORD *)(v1 + 6768) = &off_69F7AC; nullsub_2((void *)(v1 + 6776)); *(_DWORD *)(v1 + 6768) = &off_69F68C; *(_DWORD *)(v1 + 6760) = &off_69F68C; *(_DWORD *)(v1 + 6752) = &off_69F68C; *(_DWORD *)(v1 + 6744) = &off_69F68C; *(_DWORD *)(v1 + 6728) = &off_69F7AC; nullsub_2((void *)(v1 + 6736)); *(_DWORD *)(v1 + 6728) = &off_69F68C; *(_DWORD *)(v1 + 6720) = &off_69F68C; *(_DWORD *)(v1 + 6712) = &off_69F68C; *(_DWORD *)(v1 + 6704) = &off_69F68C; *(_DWORD *)(v1 + 6696) = &off_69F68C; *(_DWORD *)(v1 + 6688) = &off_69F68C; *(_DWORD *)(v1 + 6680) = &off_69F68C; *(_DWORD *)(v1 + 6672) = &off_69F68C; *(_DWORD *)(v1 + 6664) = &off_69F68C; *(_DWORD *)(v1 + 6656) = &off_69F68C; *(_DWORD *)(v1 + 6648) = &off_69F68C; *(_DWORD *)(v1 + 6640) = &off_69F68C; *(_DWORD *)(v1 + 6624) = &off_69F7AC; nullsub_2((void *)(v1 + 6632)); *(_DWORD *)(v1 + 6624) = &off_69F68C; *(_DWORD *)(v1 + 6616) = &off_69F68C; *(_DWORD *)(v1 + 6608) = &off_69F68C; *(_DWORD *)(v1 + 6600) = &off_69F68C; *(_DWORD *)(v1 + 6592) = &off_69F68C; *(_DWORD *)(v1 + 6584) = &off_69F68C; *(_DWORD *)(v1 + 6576) = &off_69F68C; *(_DWORD *)(v1 + 6568) = &off_69F68C; *(_DWORD *)(v1 + 6560) = &off_69F68C; *(_DWORD *)(v1 + 6544) = &off_69F7AC; nullsub_2((void *)(v1 + 6552)); *(_DWORD *)(v1 + 6544) = &off_69F68C; *(_DWORD *)(v1 + 6528) = &off_69F7AC; nullsub_2((void *)(v1 + 6536)); *(_DWORD *)(v1 + 6528) = &off_69F68C; *(_DWORD *)(v1 + 6520) = &off_69F68C; *(_DWORD *)(v1 + 6512) = &off_69F68C; *(_DWORD *)(v1 + 6504) = &off_69F68C; *(_DWORD *)(v1 + 6496) = &off_69F68C; *(_DWORD *)(v1 + 6488) = &off_69F68C; *(_DWORD *)(v1 + 6472) = &off_69F7AC; nullsub_2((void *)(v1 + 6480)); *(_DWORD *)(v1 + 6472) = &off_69F68C; *(_DWORD *)(v1 + 6456) = &off_69F7AC; nullsub_2((void *)(v1 + 6464)); *(_DWORD *)(v1 + 6456) = &off_69F68C; *(_DWORD *)(v1 + 6440) = &off_69F68C; *(_DWORD *)(v1 + 6432) = &off_69F68C; *(_DWORD *)(v1 + 6424) = &off_69F68C; *(_DWORD *)(v1 + 6416) = &off_69F68C; *(_DWORD *)(v1 + 6408) = &off_69F68C; *(_DWORD *)(v1 + 6400) = &off_69F68C; *(_DWORD *)(v1 + 6392) = &off_69F68C; *(_DWORD *)(v1 + 6384) = &off_69F68C; *(_DWORD *)(v1 + 6376) = &off_69F68C; *(_DWORD *)(v1 + 6368) = &off_69F68C; *(_DWORD *)(v1 + 6352) = &off_69F68C; *(_DWORD *)(v1 + 6336) = &off_69F68C; *(_DWORD *)(v1 + 6328) = &off_69F68C; *(_DWORD *)(v1 + 6312) = &off_69F7AC; nullsub_2((void *)(v1 + 6320)); *(_DWORD *)(v1 + 6312) = &off_69F68C; *(_DWORD *)(v1 + 6304) = &off_69F68C; *(_DWORD *)(v1 + 6288) = &off_69F7AC; nullsub_2((void *)(v1 + 6296)); *(_DWORD *)(v1 + 6288) = &off_69F68C; *(_DWORD *)(v1 + 6280) = &off_69F68C; *(_DWORD *)(v1 + 6272) = &off_69F68C; *(_DWORD *)(v1 + 6264) = &off_69F68C; *(_DWORD *)(v1 + 6256) = &off_69F68C; *(_DWORD *)(v1 + 6248) = &off_69F68C; *(_DWORD *)(v1 + 6240) = &off_69F68C; *(_DWORD *)(v1 + 6232) = &off_69F68C; *(_DWORD *)(v1 + 6224) = &off_69F68C; *(_DWORD *)(v1 + 6216) = &off_69F68C; *(_DWORD *)(v1 + 6208) = &off_69F68C; *(_DWORD *)(v1 + 6200) = &off_69F68C; *(_DWORD *)(v1 + 6192) = &off_69F68C; *(_DWORD *)(v1 + 6184) = &off_69F68C; *(_DWORD *)(v1 + 6176) = &off_69F68C; *(_DWORD *)(v1 + 6160) = &off_69F7AC; nullsub_2((void *)(v1 + 6168)); *(_DWORD *)(v1 + 6160) = &off_69F68C; *(_DWORD *)(v1 + 6152) = &off_69F68C; *(_DWORD *)(v1 + 6144) = &off_69F68C; *(_DWORD *)(v1 + 6136) = &off_69F68C; *(_DWORD *)(v1 + 6128) = &off_69F68C; *(_DWORD *)(v1 + 6120) = &off_69F68C; *(_DWORD *)(v1 + 6104) = &off_69F7AC; nullsub_2((void *)(v1 + 6112)); *(_DWORD *)(v1 + 6104) = &off_69F68C; *(_DWORD *)(v1 + 6088) = &off_69F7AC; nullsub_2((void *)(v1 + 6096)); *(_DWORD *)(v1 + 6088) = &off_69F68C; *(_DWORD *)(v1 + 6080) = &off_69F68C; *(_DWORD *)(v1 + 6072) = &off_69F68C; *(_DWORD *)(v1 + 6064) = &off_69F68C; *(_DWORD *)(v1 + 6056) = &off_69F68C; *(_DWORD *)(v1 + 6048) = &off_69F68C; *(_DWORD *)(v1 + 6040) = &off_69F68C; *(_DWORD *)(v1 + 6032) = &off_69F68C; *(_DWORD *)(v1 + 6024) = &off_69F68C; *(_DWORD *)(v1 + 6016) = &off_69F68C; *(_DWORD *)(v1 + 6008) = &off_69F68C; *(_DWORD *)(v1 + 5992) = &off_69F7AC; nullsub_2((void *)(v1 + 6000)); *(_DWORD *)(v1 + 5992) = &off_69F68C; *(_DWORD *)(v1 + 5984) = &off_69F68C; *(_DWORD *)(v1 + 5976) = &off_69F68C; *(_DWORD *)(v1 + 5968) = &off_69F68C; *(_DWORD *)(v1 + 5952) = &off_69F7AC; nullsub_2((void *)(v1 + 5960)); *(_DWORD *)(v1 + 5952) = &off_69F68C; *(_DWORD *)(v1 + 5944) = &off_69F68C; *(_DWORD *)(v1 + 5936) = &off_69F68C; *(_DWORD *)(v1 + 5928) = &off_69F68C; *(_DWORD *)(v1 + 5920) = &off_69F68C; *(_DWORD *)(v1 + 5868) = &off_69F68C; *(_DWORD *)(v1 + 5852) = &off_69F7AC; nullsub_2((void *)(v1 + 5860)); *(_DWORD *)(v1 + 5852) = &off_69F68C; *(_DWORD *)(v1 + 5844) = &off_69F68C; *(_DWORD *)(v1 + 5828) = &off_69F7AC; nullsub_2((void *)(v1 + 5836)); *(_DWORD *)(v1 + 5828) = &off_69F68C; *(_DWORD *)(v1 + 5820) = &off_69F68C; *(_DWORD *)(v1 + 5804) = &off_69F7AC; nullsub_2((void *)(v1 + 5812)); *(_DWORD *)(v1 + 5804) = &off_69F68C; *(_DWORD *)(v1 + 5796) = &off_69F68C; *(_DWORD *)(v1 + 5788) = &off_69F68C; *(_DWORD *)(v1 + 5780) = &off_69F68C; *(_DWORD *)(v1 + 5772) = &off_69F68C; *(_DWORD *)(v1 + 5764) = &off_69F68C; *(_DWORD *)(v1 + 5756) = &off_69F68C; *(_DWORD *)(v1 + 5748) = &off_69F68C; *(_DWORD *)(v1 + 5740) = &off_69F68C; *(_DWORD *)(v1 + 5732) = &off_69F68C; *(_DWORD *)(v1 + 5724) = &off_69F68C; *(_DWORD *)(v1 + 5716) = &off_69F68C; *(_DWORD *)(v1 + 5708) = &off_69F68C; *(_DWORD *)(v1 + 5700) = &off_69F68C; *(_DWORD *)(v1 + 5692) = &off_69F68C; *(_DWORD *)(v1 + 5684) = &off_69F68C; *(_DWORD *)(v1 + 5676) = &off_69F68C; *(_DWORD *)(v1 + 5668) = &off_69F68C; *(_DWORD *)(v1 + 5660) = &off_69F68C; *(_DWORD *)(v1 + 5652) = &off_69F68C; *(_DWORD *)(v1 + 5644) = &off_69F68C; *(_DWORD *)(v1 + 5636) = &off_69F68C; *(_DWORD *)(v1 + 5628) = &off_69F68C; *(_DWORD *)(v1 + 5620) = &off_69F68C; *(_DWORD *)(v1 + 5612) = &off_69F68C; *(_DWORD *)(v1 + 5604) = &off_69F68C; *(_DWORD *)(v1 + 5596) = &off_69F68C; *(_DWORD *)(v1 + 5588) = &off_69F68C; *(_DWORD *)(v1 + 5580) = &off_69F68C; *(_DWORD *)(v1 + 5572) = &off_69F68C; *(_DWORD *)(v1 + 5564) = &off_69F68C; *(_DWORD *)(v1 + 5556) = &off_69F68C; *(_DWORD *)(v1 + 5548) = &off_69F68C; *(_DWORD *)(v1 + 5540) = &off_69F68C; *(_DWORD *)(v1 + 5532) = &off_69F68C; *(_DWORD *)(v1 + 5524) = &off_69F68C; *(_DWORD *)(v1 + 5516) = &off_69F68C; *(_DWORD *)(v1 + 5508) = &off_69F68C; *(_DWORD *)(v1 + 5492) = &off_69F7AC; nullsub_2((void *)(v1 + 5500)); *(_DWORD *)(v1 + 5492) = &off_69F68C; *(_DWORD *)(v1 + 5484) = &off_69F68C; *(_DWORD *)(v1 + 5476) = &off_69F68C; *(_DWORD *)(v1 + 5468) = &off_69F68C; *(_DWORD *)(v1 + 5460) = &off_69F68C; *(_DWORD *)(v1 + 5452) = &off_69F68C; *(_DWORD *)(v1 + 5444) = &off_69F68C; *(_DWORD *)(v1 + 5428) = &off_69F7AC; nullsub_2((void *)(v1 + 5436)); *(_DWORD *)(v1 + 5428) = &off_69F68C; *(_DWORD *)(v1 + 5420) = &off_69F68C; *(_DWORD *)(v1 + 5412) = &off_69F68C; *(_DWORD *)(v1 + 5404) = &off_69F68C; *(_DWORD *)(v1 + 5396) = &off_69F68C; *(_DWORD *)(v1 + 5388) = &off_69F68C; *(_DWORD *)(v1 + 5380) = &off_69F68C; *(_DWORD *)(v1 + 5364) = &off_69F7AC; nullsub_2((void *)(v1 + 5372)); *(_DWORD *)(v1 + 5364) = &off_69F68C; *(_DWORD *)(v1 + 5348) = &off_69F7AC; nullsub_2((void *)(v1 + 5356)); *(_DWORD *)(v1 + 5348) = &off_69F68C; *(_DWORD *)(v1 + 5332) = &off_69F7AC; nullsub_2((void *)(v1 + 5340)); *(_DWORD *)(v1 + 5332) = &off_69F68C; *(_DWORD *)(v1 + 5316) = &off_69F7AC; nullsub_2((void *)(v1 + 5324)); *(_DWORD *)(v1 + 5316) = &off_69F68C; *(_DWORD *)(v1 + 5308) = &off_69F68C; *(_DWORD *)(v1 + 5300) = &off_69F68C; *(_DWORD *)(v1 + 5284) = &off_69F7AC; nullsub_2((void *)(v1 + 5292)); *(_DWORD *)(v1 + 5284) = &off_69F68C; *(_DWORD *)(v1 + 5268) = &off_69F7AC; nullsub_2((void *)(v1 + 5276)); *(_DWORD *)(v1 + 5268) = &off_69F68C; *(_DWORD *)(v1 + 5252) = &off_69F7AC; nullsub_2((void *)(v1 + 5260)); *(_DWORD *)(v1 + 5252) = &off_69F68C; *(_DWORD *)(v1 + 5236) = &off_69F7AC; nullsub_2((void *)(v1 + 5244)); *(_DWORD *)(v1 + 5236) = &off_69F68C; *(_DWORD *)(v1 + 5228) = &off_69F68C; *(_DWORD *)(v1 + 5220) = &off_69F68C; *(_DWORD *)(v1 + 5212) = &off_69F68C; *(_DWORD *)(v1 + 5204) = &off_69F68C; *(_DWORD *)(v1 + 5196) = &off_69F68C; *(_DWORD *)(v1 + 5188) = &off_69F68C; *(_DWORD *)(v1 + 5180) = &off_69F68C; *(_DWORD *)(v1 + 5172) = &off_69F68C; *(_DWORD *)(v1 + 5164) = &off_69F68C; *(_DWORD *)(v1 + 5156) = &off_69F68C; *(_DWORD *)(v1 + 5148) = &off_69F68C; *(_DWORD *)(v1 + 5140) = &off_69F68C; *(_DWORD *)(v1 + 5132) = &off_69F68C; *(_DWORD *)(v1 + 5124) = &off_69F68C; *(_DWORD *)(v1 + 5116) = &off_69F68C; *(_DWORD *)(v1 + 5108) = &off_69F68C; *(_DWORD *)(v1 + 5100) = &off_69F68C; *(_DWORD *)(v1 + 5092) = &off_69F68C; *(_DWORD *)(v1 + 5084) = &off_69F68C; *(_DWORD *)(v1 + 5076) = &off_69F68C; *(_DWORD *)(v1 + 5068) = &off_69F68C; *(_DWORD *)(v1 + 5060) = &off_69F68C; *(_DWORD *)(v1 + 5052) = &off_69F68C; *(_DWORD *)(v1 + 5036) = &off_69F7AC; nullsub_2((void *)(v1 + 5044)); *(_DWORD *)(v1 + 5036) = &off_69F68C; *(_DWORD *)(v1 + 5028) = &off_69F68C; *(_DWORD *)(v1 + 5020) = &off_69F68C; *(_DWORD *)(v1 + 5012) = &off_69F68C; *(_DWORD *)(v1 + 5004) = &off_69F68C; *(_DWORD *)(v1 + 4996) = &off_69F68C; *(_DWORD *)(v1 + 4988) = &off_69F68C; *(_DWORD *)(v1 + 4980) = &off_69F68C; *(_DWORD *)(v1 + 4964) = &off_69F7AC; nullsub_2((void *)(v1 + 4972)); *(_DWORD *)(v1 + 4964) = &off_69F68C; *(_DWORD *)(v1 + 4956) = &off_69F68C; *(_DWORD *)(v1 + 4940) = &off_69F7AC; nullsub_2((void *)(v1 + 4948)); *(_DWORD *)(v1 + 4940) = &off_69F68C; *(_DWORD *)(v1 + 4932) = &off_69F68C; *(_DWORD *)(v1 + 4924) = &off_69F68C; *(_DWORD *)(v1 + 4916) = &off_69F68C; *(_DWORD *)(v1 + 4908) = &off_69F68C; *(_DWORD *)(v1 + 4900) = &off_69F68C; *(_DWORD *)(v1 + 4892) = &off_69F68C; *(_DWORD *)(v1 + 4884) = &off_69F68C; *(_DWORD *)(v1 + 4876) = &off_69F68C; *(_DWORD *)(v1 + 4868) = &off_69F68C; *(_DWORD *)(v1 + 4860) = &off_69F68C; *(_DWORD *)(v1 + 4852) = &off_69F68C; *(_DWORD *)(v1 + 4844) = &off_69F68C; *(_DWORD *)(v1 + 4836) = &off_69F68C; *(_DWORD *)(v1 + 4828) = &off_69F68C; *(_DWORD *)(v1 + 4820) = &off_69F68C; *(_DWORD *)(v1 + 4812) = &off_69F68C; *(_DWORD *)(v1 + 4804) = &off_69F68C; *(_DWORD *)(v1 + 4796) = &off_69F68C; *(_DWORD *)(v1 + 4788) = &off_69F68C; *(_DWORD *)(v1 + 4780) = &off_69F68C; *(_DWORD *)(v1 + 4772) = &off_69F68C; *(_DWORD *)(v1 + 4764) = &off_69F68C; *(_DWORD *)(v1 + 4756) = &off_69F68C; *(_DWORD *)(v1 + 4748) = &off_69F68C; *(_DWORD *)(v1 + 4740) = &off_69F68C; *(_DWORD *)(v1 + 4724) = &off_69F7AC; nullsub_2((void *)(v1 + 4732)); *(_DWORD *)(v1 + 4724) = &off_69F68C; *(_DWORD *)(v1 + 4716) = &off_69F68C; *(_DWORD *)(v1 + 4700) = &off_69F7AC; nullsub_2((void *)(v1 + 4708)); *(_DWORD *)(v1 + 4700) = &off_69F68C; *(_DWORD *)(v1 + 4684) = &off_69F7AC; nullsub_2((void *)(v1 + 4692)); *(_DWORD *)(v1 + 4684) = &off_69F68C; *(_DWORD *)(v1 + 4676) = &off_69F68C; *(_DWORD *)(v1 + 4668) = &off_69F68C; *(_DWORD *)(v1 + 4660) = &off_69F68C; *(_DWORD *)(v1 + 4652) = &off_69F68C; *(_DWORD *)(v1 + 4644) = &off_69F68C; *(_DWORD *)(v1 + 4636) = &off_69F68C; *(_DWORD *)(v1 + 4628) = &off_69F68C; *(_DWORD *)(v1 + 4620) = &off_69F68C; *(_DWORD *)(v1 + 4604) = &off_69F7AC; nullsub_2((void *)(v1 + 4612)); *(_DWORD *)(v1 + 4604) = &off_69F68C; *(_DWORD *)(v1 + 4596) = &off_69F68C; *(_DWORD *)(v1 + 4588) = &off_69F68C; *(_DWORD *)(v1 + 4572) = &off_69F7AC; nullsub_2((void *)(v1 + 4580)); *(_DWORD *)(v1 + 4572) = &off_69F68C; *(_DWORD *)(v1 + 4564) = &off_69F68C; *(_DWORD *)(v1 + 4556) = &off_69F68C; *(_DWORD *)(v1 + 4548) = &off_69F68C; *(_DWORD *)(v1 + 4540) = &off_69F68C; *(_DWORD *)(v1 + 4532) = &off_69F68C; *(_DWORD *)(v1 + 4516) = &off_69F68C; *(_DWORD *)(v1 + 4500) = &off_69F7AC; nullsub_2((void *)(v1 + 4508)); *(_DWORD *)(v1 + 4500) = &off_69F68C; *(_DWORD *)(v1 + 4492) = &off_69F68C; *(_DWORD *)(v1 + 4484) = &off_69F68C; *(_DWORD *)(v1 + 4476) = &off_69F68C; *(_DWORD *)(v1 + 4468) = &off_69F68C; *(_DWORD *)(v1 + 4452) = &off_69F7AC; nullsub_2((void *)(v1 + 4460)); *(_DWORD *)(v1 + 4452) = &off_69F68C; *(_DWORD *)(v1 + 4444) = &off_69F68C; *(_DWORD *)(v1 + 4436) = &off_69F68C; *(_DWORD *)(v1 + 4428) = &off_69F68C; *(_DWORD *)(v1 + 4420) = &off_69F68C; *(_DWORD *)(v1 + 4412) = &off_69F68C; *(_DWORD *)(v1 + 4404) = &off_69F68C; *(_DWORD *)(v1 + 4396) = &off_69F68C; *(_DWORD *)(v1 + 4388) = &off_69F68C; *(_DWORD *)(v1 + 4380) = &off_69F68C; *(_DWORD *)(v1 + 4372) = &off_69F68C; *(_DWORD *)(v1 + 4364) = &off_69F68C; *(_DWORD *)(v1 + 4356) = &off_69F68C; *(_DWORD *)(v1 + 4348) = &off_69F68C; *(_DWORD *)(v1 + 4340) = &off_69F68C; *(_DWORD *)(v1 + 4332) = &off_69F68C; *(_DWORD *)(v1 + 4324) = &off_69F68C; *(_DWORD *)(v1 + 4316) = &off_69F68C; *(_DWORD *)(v1 + 4308) = &off_69F68C; *(_DWORD *)(v1 + 4300) = &off_69F68C; *(_DWORD *)(v1 + 4292) = &off_69F68C; *(_DWORD *)(v1 + 4284) = &off_69F68C; *(_DWORD *)(v1 + 4276) = &off_69F68C; *(_DWORD *)(v1 + 4260) = &off_69F7AC; nullsub_2((void *)(v1 + 4268)); *(_DWORD *)(v1 + 4260) = &off_69F68C; *(_DWORD *)(v1 + 4244) = &off_69F7AC; nullsub_2((void *)(v1 + 4252)); *(_DWORD *)(v1 + 4244) = &off_69F68C; *(_DWORD *)(v1 + 4236) = &off_69F68C; *(_DWORD *)(v1 + 4228) = &off_69F68C; *(_DWORD *)(v1 + 4220) = &off_69F68C; *(_DWORD *)(v1 + 4200) = &off_69F68C; *(_DWORD *)(v1 + 4192) = &off_69F68C; *(_DWORD *)(v1 + 4172) = &off_69F68C; *(_DWORD *)(v1 + 4156) = &off_69F7AC; nullsub_2((void *)(v1 + 4164)); *(_DWORD *)(v1 + 4156) = &off_69F68C; *(_DWORD *)(v1 + 4148) = &off_69F68C; *(_DWORD *)(v1 + 4140) = &off_69F68C; *(_DWORD *)(v1 + 4132) = &off_69F68C; *(_DWORD *)(v1 + 4124) = &off_69F68C; *(_DWORD *)(v1 + 4072) = &off_69F68C; *(_DWORD *)(v1 + 4056) = &off_69F7AC; nullsub_2((void *)(v1 + 4064)); *(_DWORD *)(v1 + 4056) = &off_69F68C; *(_DWORD *)(v1 + 4040) = &off_69F7AC; nullsub_2((void *)(v1 + 4048)); *(_DWORD *)(v1 + 4040) = &off_69F68C; *(_DWORD *)(v1 + 4024) = &off_69F7AC; nullsub_2((void *)(v1 + 4032)); *(_DWORD *)(v1 + 4024) = &off_69F68C; *(_DWORD *)(v1 + 4008) = &off_69F7AC; nullsub_2((void *)(v1 + 4016)); *(_DWORD *)(v1 + 4008) = &off_69F68C; *(_DWORD *)(v1 + 3992) = &off_69F7AC; nullsub_2((void *)(v1 + 4000)); *(_DWORD *)(v1 + 3992) = &off_69F68C; *(_DWORD *)(v1 + 3976) = &off_69F7AC; nullsub_2((void *)(v1 + 3984)); *(_DWORD *)(v1 + 3976) = &off_69F68C; *(_DWORD *)(v1 + 3960) = &off_69F7AC; nullsub_2((void *)(v1 + 3968)); *(_DWORD *)(v1 + 3960) = &off_69F68C; *(_DWORD *)(v1 + 3944) = &off_69F7AC; nullsub_2((void *)(v1 + 3952)); *(_DWORD *)(v1 + 3944) = &off_69F68C; *(_DWORD *)(v1 + 3928) = &off_69F7AC; nullsub_2((void *)(v1 + 3936)); *(_DWORD *)(v1 + 3928) = &off_69F68C; *(_DWORD *)(v1 + 3912) = &off_69F7AC; nullsub_2((void *)(v1 + 3920)); *(_DWORD *)(v1 + 3912) = &off_69F68C; *(_DWORD *)(v1 + 3896) = &off_69F7AC; nullsub_2((void *)(v1 + 3904)); *(_DWORD *)(v1 + 3896) = &off_69F68C; *(_DWORD *)(v1 + 3880) = &off_69F7AC; nullsub_2((void *)(v1 + 3888)); *(_DWORD *)(v1 + 3880) = &off_69F68C; *(_DWORD *)(v1 + 3864) = &off_69F7AC; nullsub_2((void *)(v1 + 3872)); *(_DWORD *)(v1 + 3864) = &off_69F68C; *(_DWORD *)(v1 + 3848) = &off_69F7AC; nullsub_2((void *)(v1 + 3856)); *(_DWORD *)(v1 + 3848) = &off_69F68C; *(_DWORD *)(v1 + 3832) = &off_69F7AC; nullsub_2((void *)(v1 + 3840)); *(_DWORD *)(v1 + 3832) = &off_69F68C; *(_DWORD *)(v1 + 3816) = &off_69F7AC; nullsub_2((void *)(v1 + 3824)); *(_DWORD *)(v1 + 3816) = &off_69F68C; *(_DWORD *)(v1 + 3800) = &off_69F7AC; nullsub_2((void *)(v1 + 3808)); *(_DWORD *)(v1 + 3800) = &off_69F68C; *(_DWORD *)(v1 + 3784) = &off_69F7AC; nullsub_2((void *)(v1 + 3792)); *(_DWORD *)(v1 + 3784) = &off_69F68C; *(_DWORD *)(v1 + 3768) = &off_69F7AC; nullsub_2((void *)(v1 + 3776)); *(_DWORD *)(v1 + 3768) = &off_69F68C; *(_DWORD *)(v1 + 3752) = &off_69F7AC; nullsub_2((void *)(v1 + 3760)); *(_DWORD *)(v1 + 3752) = &off_69F68C; *(_DWORD *)(v1 + 3736) = &off_69F7AC; nullsub_2((void *)(v1 + 3744)); *(_DWORD *)(v1 + 3736) = &off_69F68C; *(_DWORD *)(v1 + 3720) = &off_69F7AC; nullsub_2((void *)(v1 + 3728)); *(_DWORD *)(v1 + 3720) = &off_69F68C; *(_DWORD *)(v1 + 3704) = &off_69F7AC; nullsub_2((void *)(v1 + 3712)); *(_DWORD *)(v1 + 3704) = &off_69F68C; *(_DWORD *)(v1 + 3688) = &off_69F7AC; nullsub_2((void *)(v1 + 3696)); *(_DWORD *)(v1 + 3688) = &off_69F68C; *(_DWORD *)(v1 + 3672) = &off_69F7AC; nullsub_2((void *)(v1 + 3680)); *(_DWORD *)(v1 + 3672) = &off_69F68C; *(_DWORD *)(v1 + 3656) = &off_69F7AC; nullsub_2((void *)(v1 + 3664)); *(_DWORD *)(v1 + 3656) = &off_69F68C; *(_DWORD *)(v1 + 3640) = &off_69F7AC; nullsub_2((void *)(v1 + 3648)); *(_DWORD *)(v1 + 3640) = &off_69F68C; *(_DWORD *)(v1 + 3624) = &off_69F7AC; nullsub_2((void *)(v1 + 3632)); *(_DWORD *)(v1 + 3624) = &off_69F68C; *(_DWORD *)(v1 + 3608) = &off_69F7AC; nullsub_2((void *)(v1 + 3616)); *(_DWORD *)(v1 + 3608) = &off_69F68C; *(_DWORD *)(v1 + 3592) = &off_69F7AC; nullsub_2((void *)(v1 + 3600)); *(_DWORD *)(v1 + 3592) = &off_69F68C; *(_DWORD *)(v1 + 3576) = &off_69F7AC; nullsub_2((void *)(v1 + 3584)); *(_DWORD *)(v1 + 3576) = &off_69F68C; *(_DWORD *)(v1 + 3560) = &off_69F7AC; nullsub_2((void *)(v1 + 3568)); *(_DWORD *)(v1 + 3560) = &off_69F68C; *(_DWORD *)(v1 + 3544) = &off_69F7AC; nullsub_2((void *)(v1 + 3552)); *(_DWORD *)(v1 + 3544) = &off_69F68C; *(_DWORD *)(v1 + 3528) = &off_69F7AC; nullsub_2((void *)(v1 + 3536)); *(_DWORD *)(v1 + 3528) = &off_69F68C; *(_DWORD *)(v1 + 3512) = &off_69F7AC; nullsub_2((void *)(v1 + 3520)); *(_DWORD *)(v1 + 3512) = &off_69F68C; *(_DWORD *)(v1 + 3496) = &off_69F7AC; nullsub_2((void *)(v1 + 3504)); *(_DWORD *)(v1 + 3496) = &off_69F68C; *(_DWORD *)(v1 + 3480) = &off_69F7AC; nullsub_2((void *)(v1 + 3488)); *(_DWORD *)(v1 + 3480) = &off_69F68C; *(_DWORD *)(v1 + 3464) = &off_69F7AC; nullsub_2((void *)(v1 + 3472)); *(_DWORD *)(v1 + 3464) = &off_69F68C; *(_DWORD *)(v1 + 3448) = &off_69F7AC; nullsub_2((void *)(v1 + 3456)); *(_DWORD *)(v1 + 3448) = &off_69F68C; *(_DWORD *)(v1 + 3432) = &off_69F7AC; nullsub_2((void *)(v1 + 3440)); *(_DWORD *)(v1 + 3432) = &off_69F68C; *(_DWORD *)(v1 + 3416) = &off_69F7AC; nullsub_2((void *)(v1 + 3424)); *(_DWORD *)(v1 + 3416) = &off_69F68C; *(_DWORD *)(v1 + 3400) = &off_69F7AC; nullsub_2((void *)(v1 + 3408)); *(_DWORD *)(v1 + 3400) = &off_69F68C; *(_DWORD *)(v1 + 3384) = &off_69F7AC; nullsub_2((void *)(v1 + 3392)); *(_DWORD *)(v1 + 3384) = &off_69F68C; *(_DWORD *)(v1 + 3368) = &off_69F7AC; nullsub_2((void *)(v1 + 3376)); *(_DWORD *)(v1 + 3368) = &off_69F68C; *(_DWORD *)(v1 + 3352) = &off_69F7AC; nullsub_2((void *)(v1 + 3360)); *(_DWORD *)(v1 + 3352) = &off_69F68C; *(_DWORD *)(v1 + 3336) = &off_69F7AC; nullsub_2((void *)(v1 + 3344)); *(_DWORD *)(v1 + 3336) = &off_69F68C; *(_DWORD *)(v1 + 3320) = &off_69F7AC; nullsub_2((void *)(v1 + 3328)); *(_DWORD *)(v1 + 3320) = &off_69F68C; *(_DWORD *)(v1 + 3304) = &off_69F7AC; nullsub_2((void *)(v1 + 3312)); *(_DWORD *)(v1 + 3304) = &off_69F68C; *(_DWORD *)(v1 + 3288) = &off_69F7AC; nullsub_2((void *)(v1 + 3296)); *(_DWORD *)(v1 + 3288) = &off_69F68C; *(_DWORD *)(v1 + 3272) = &off_69F7AC; nullsub_2((void *)(v1 + 3280)); *(_DWORD *)(v1 + 3272) = &off_69F68C; *(_DWORD *)(v1 + 3256) = &off_69F7AC; nullsub_2((void *)(v1 + 3264)); *(_DWORD *)(v1 + 3256) = &off_69F68C; *(_DWORD *)(v1 + 3240) = &off_69F7AC; nullsub_2((void *)(v1 + 3248)); *(_DWORD *)(v1 + 3240) = &off_69F68C; *(_DWORD *)(v1 + 3232) = &off_69F68C; *(_DWORD *)(v1 + 3224) = &off_69F68C; *(_DWORD *)(v1 + 3216) = &off_69F68C; *(_DWORD *)(v1 + 3208) = &off_69F68C; *(_DWORD *)(v1 + 3200) = &off_69F68C; *(_DWORD *)(v1 + 3188) = &off_69F68C; *(_DWORD *)(v1 + 3180) = &off_69F68C; *(_DWORD *)(v1 + 3172) = &off_69F68C; *(_DWORD *)(v1 + 3164) = &off_69F68C; *(_DWORD *)(v1 + 3156) = &off_69F68C; *(_DWORD *)(v1 + 3148) = &off_69F68C; *(_DWORD *)(v1 + 3140) = &off_69F68C; *(_DWORD *)(v1 + 3132) = &off_69F68C; *(_DWORD *)(v1 + 3124) = &off_69F68C; *(_DWORD *)(v1 + 3116) = &off_69F68C; *(_DWORD *)(v1 + 3108) = &off_69F68C; *(_DWORD *)(v1 + 3100) = &off_69F68C; *(_DWORD *)(v1 + 3092) = &off_69F68C; *(_DWORD *)(v1 + 3084) = &off_69F68C; *(_DWORD *)(v1 + 3076) = &off_69F68C; *(_DWORD *)(v1 + 3068) = &off_69F68C; *(_DWORD *)(v1 + 3060) = &off_69F68C; *(_DWORD *)(v1 + 3052) = &off_69F68C; *(_DWORD *)(v1 + 3044) = &off_69F68C; *(_DWORD *)(v1 + 3036) = &off_69F68C; *(_DWORD *)(v1 + 3028) = &off_69F68C; *(_DWORD *)(v1 + 3020) = &off_69F68C; *(_DWORD *)(v1 + 3012) = &off_69F68C; *(_DWORD *)(v1 + 3004) = &off_69F68C; *(_DWORD *)(v1 + 2996) = &off_69F68C; *(_DWORD *)(v1 + 2988) = &off_69F68C; *(_DWORD *)(v1 + 2980) = &off_69F68C; *(_DWORD *)(v1 + 2972) = &off_69F68C; *(_DWORD *)(v1 + 2964) = &off_69F68C; *(_DWORD *)(v1 + 2956) = &off_69F68C; *(_DWORD *)(v1 + 2948) = &off_69F68C; *(_DWORD *)(v1 + 2940) = &off_69F68C; *(_DWORD *)(v1 + 2932) = &off_69F68C; *(_DWORD *)(v1 + 2924) = &off_69F68C; *(_DWORD *)(v1 + 2916) = &off_69F68C; *(_DWORD *)(v1 + 2908) = &off_69F68C; *(_DWORD *)(v1 + 2900) = &off_69F68C; *(_DWORD *)(v1 + 2892) = &off_69F68C; *(_DWORD *)(v1 + 2884) = &off_69F68C; *(_DWORD *)(v1 + 2876) = &off_69F68C; *(_DWORD *)(v1 + 2868) = &off_69F68C; *(_DWORD *)(v1 + 2860) = &off_69F68C; *(_DWORD *)(v1 + 2852) = &off_69F68C; *(_DWORD *)(v1 + 2844) = &off_69F68C; *(_DWORD *)(v1 + 2836) = &off_69F68C; *(_DWORD *)(v1 + 2828) = &off_69F68C; *(_DWORD *)(v1 + 2820) = &off_69F68C; *(_DWORD *)(v1 + 2812) = &off_69F68C; *(_DWORD *)(v1 + 2804) = &off_69F68C; *(_DWORD *)(v1 + 2796) = &off_69F68C; *(_DWORD *)(v1 + 2788) = &off_69F68C; *(_DWORD *)(v1 + 2780) = &off_69F68C; *(_DWORD *)(v1 + 2772) = &off_69F68C; *(_DWORD *)(v1 + 2764) = &off_69F68C; *(_DWORD *)(v1 + 2756) = &off_69F68C; *(_DWORD *)(v1 + 2748) = &off_69F68C; *(_DWORD *)(v1 + 2740) = &off_69F68C; *(_DWORD *)(v1 + 2732) = &off_69F68C; *(_DWORD *)(v1 + 2724) = &off_69F68C; *(_DWORD *)(v1 + 2716) = &off_69F68C; *(_DWORD *)(v1 + 2708) = &off_69F68C; *(_DWORD *)(v1 + 2700) = &off_69F68C; *(_DWORD *)(v1 + 2692) = &off_69F68C; *(_DWORD *)(v1 + 2684) = &off_69F68C; *(_DWORD *)(v1 + 2676) = &off_69F68C; *(_DWORD *)(v1 + 2668) = &off_69F68C; *(_DWORD *)(v1 + 2660) = &off_69F68C; *(_DWORD *)(v1 + 2652) = &off_69F68C; *(_DWORD *)(v1 + 2644) = &off_69F68C; *(_DWORD *)(v1 + 2636) = &off_69F68C; *(_DWORD *)(v1 + 2628) = &off_69F68C; *(_DWORD *)(v1 + 2620) = &off_69F68C; *(_DWORD *)(v1 + 2612) = &off_69F68C; *(_DWORD *)(v1 + 2604) = &off_69F68C; *(_DWORD *)(v1 + 2588) = &off_69F7AC; nullsub_2((void *)(v1 + 2596)); *(_DWORD *)(v1 + 2588) = &off_69F68C; *(_DWORD *)(v1 + 2572) = &off_69F7AC; nullsub_2((void *)(v1 + 2580)); *(_DWORD *)(v1 + 2572) = &off_69F68C; *(_DWORD *)(v1 + 2556) = &off_69F7AC; nullsub_2((void *)(v1 + 2564)); *(_DWORD *)(v1 + 2556) = &off_69F68C; *(_DWORD *)(v1 + 2540) = &off_69F7AC; nullsub_2((void *)(v1 + 2548)); *(_DWORD *)(v1 + 2540) = &off_69F68C; *(_DWORD *)(v1 + 2524) = &off_69F7AC; nullsub_2((void *)(v1 + 2532)); *(_DWORD *)(v1 + 2524) = &off_69F68C; *(_DWORD *)(v1 + 2508) = &off_69F7AC; nullsub_2((void *)(v1 + 2516)); *(_DWORD *)(v1 + 2508) = &off_69F68C; *(_DWORD *)(v1 + 2492) = &off_69F7AC; nullsub_2((void *)(v1 + 2500)); *(_DWORD *)(v1 + 2492) = &off_69F68C; *(_DWORD *)(v1 + 2476) = &off_69F7AC; nullsub_2((void *)(v1 + 2484)); *(_DWORD *)(v1 + 2476) = &off_69F68C; *(_DWORD *)(v1 + 2460) = &off_69F7AC; nullsub_2((void *)(v1 + 2468)); *(_DWORD *)(v1 + 2460) = &off_69F68C; *(_DWORD *)(v1 + 2444) = &off_69F7AC; nullsub_2((void *)(v1 + 2452)); *(_DWORD *)(v1 + 2444) = &off_69F68C; *(_DWORD *)(v1 + 2428) = &off_69F7AC; nullsub_2((void *)(v1 + 2436)); *(_DWORD *)(v1 + 2428) = &off_69F68C; *(_DWORD *)(v1 + 2420) = &off_69F68C; *(_DWORD *)(v1 + 2412) = &off_69F68C; *(_DWORD *)(v1 + 2404) = &off_69F68C; *(_DWORD *)(v1 + 2396) = &off_69F68C; *(_DWORD *)(v1 + 2388) = &off_69F68C; *(_DWORD *)(v1 + 2380) = &off_69F68C; *(_DWORD *)(v1 + 2372) = &off_69F68C; *(_DWORD *)(v1 + 2356) = &off_69F7AC; nullsub_2((void *)(v1 + 2364)); *(_DWORD *)(v1 + 2356) = &off_69F68C; *(_DWORD *)(v1 + 2340) = &off_69F7AC; nullsub_2((void *)(v1 + 2348)); *(_DWORD *)(v1 + 2340) = &off_69F68C; *(_DWORD *)(v1 + 2324) = &off_69F7AC; nullsub_2((void *)(v1 + 2332)); *(_DWORD *)(v1 + 2324) = &off_69F68C; *(_DWORD *)(v1 + 2308) = &off_69F7AC; nullsub_2((void *)(v1 + 2316)); *(_DWORD *)(v1 + 2308) = &off_69F68C; *(_DWORD *)(v1 + 2292) = &off_69F7AC; nullsub_2((void *)(v1 + 2300)); *(_DWORD *)(v1 + 2292) = &off_69F68C; *(_DWORD *)(v1 + 2276) = &off_69F7AC; nullsub_2((void *)(v1 + 2284)); *(_DWORD *)(v1 + 2276) = &off_69F68C; *(_DWORD *)(v1 + 2260) = &off_69F7AC; nullsub_2((void *)(v1 + 2268)); *(_DWORD *)(v1 + 2260) = &off_69F68C; *(_DWORD *)(v1 + 2244) = &off_69F7AC; nullsub_2((void *)(v1 + 2252)); *(_DWORD *)(v1 + 2244) = &off_69F68C; *(_DWORD *)(v1 + 2228) = &off_69F7AC; nullsub_2((void *)(v1 + 2236)); *(_DWORD *)(v1 + 2228) = &off_69F68C; *(_DWORD *)(v1 + 2212) = &off_69F7AC; nullsub_2((void *)(v1 + 2220)); *(_DWORD *)(v1 + 2212) = &off_69F68C; *(_DWORD *)(v1 + 2196) = &off_69F7AC; nullsub_2((void *)(v1 + 2204)); *(_DWORD *)(v1 + 2196) = &off_69F68C; *(_DWORD *)(v1 + 2180) = &off_69F7AC; nullsub_2((void *)(v1 + 2188)); *(_DWORD *)(v1 + 2180) = &off_69F68C; *(_DWORD *)(v1 + 2164) = &off_69F7AC; nullsub_2((void *)(v1 + 2172)); *(_DWORD *)(v1 + 2164) = &off_69F68C; *(_DWORD *)(v1 + 2148) = &off_69F7AC; nullsub_2((void *)(v1 + 2156)); *(_DWORD *)(v1 + 2148) = &off_69F68C; *(_DWORD *)(v1 + 2132) = &off_69F7AC; nullsub_2((void *)(v1 + 2140)); *(_DWORD *)(v1 + 2132) = &off_69F68C; *(_DWORD *)(v1 + 2116) = &off_69F7AC; nullsub_2((void *)(v1 + 2124)); *(_DWORD *)(v1 + 2116) = &off_69F68C; *(_DWORD *)(v1 + 2100) = &off_69F7AC; nullsub_2((void *)(v1 + 2108)); *(_DWORD *)(v1 + 2100) = &off_69F68C; *(_DWORD *)(v1 + 2084) = &off_69F7AC; nullsub_2((void *)(v1 + 2092)); *(_DWORD *)(v1 + 2084) = &off_69F68C; *(_DWORD *)(v1 + 2068) = &off_69F7AC; nullsub_2((void *)(v1 + 2076)); *(_DWORD *)(v1 + 2068) = &off_69F68C; *(_DWORD *)(v1 + 2052) = &off_69F7AC; nullsub_2((void *)(v1 + 2060)); *(_DWORD *)(v1 + 2052) = &off_69F68C; *(_DWORD *)(v1 + 2036) = &off_69F7AC; nullsub_2((void *)(v1 + 2044)); *(_DWORD *)(v1 + 2036) = &off_69F68C; *(_DWORD *)(v1 + 2020) = &off_69F7AC; nullsub_2((void *)(v1 + 2028)); *(_DWORD *)(v1 + 2020) = &off_69F68C; *(_DWORD *)(v1 + 2004) = &off_69F7AC; nullsub_2((void *)(v1 + 2012)); *(_DWORD *)(v1 + 2004) = &off_69F68C; *(_DWORD *)(v1 + 1988) = &off_69F7AC; nullsub_2((void *)(v1 + 1996)); *(_DWORD *)(v1 + 1988) = &off_69F68C; *(_DWORD *)(v1 + 1972) = &off_69F7AC; nullsub_2((void *)(v1 + 1980)); *(_DWORD *)(v1 + 1972) = &off_69F68C; *(_DWORD *)(v1 + 1964) = &off_69F68C; *(_DWORD *)(v1 + 1956) = &off_69F68C; *(_DWORD *)(v1 + 1948) = &off_69F68C; *(_DWORD *)(v1 + 1940) = &off_69F68C; *(_DWORD *)(v1 + 1932) = &off_69F68C; *(_DWORD *)(v1 + 1924) = &off_69F68C; *(_DWORD *)(v1 + 1916) = &off_69F68C; *(_DWORD *)(v1 + 1908) = &off_69F68C; *(_DWORD *)(v1 + 1900) = &off_69F68C; *(_DWORD *)(v1 + 1892) = &off_69F68C; *(_DWORD *)(v1 + 1884) = &off_69F68C; *(_DWORD *)(v1 + 1876) = &off_69F68C; *(_DWORD *)(v1 + 1868) = &off_69F68C; *(_DWORD *)(v1 + 1860) = &off_69F68C; *(_DWORD *)(v1 + 1852) = &off_69F68C; *(_DWORD *)(v1 + 1844) = &off_69F68C; *(_DWORD *)(v1 + 1836) = &off_69F68C; *(_DWORD *)(v1 + 1828) = &off_69F68C; *(_DWORD *)(v1 + 1820) = &off_69F68C; *(_DWORD *)(v1 + 1812) = &off_69F68C; *(_DWORD *)(v1 + 1804) = &off_69F68C; *(_DWORD *)(v1 + 1796) = &off_69F68C; *(_DWORD *)(v1 + 1780) = &off_69F7AC; nullsub_2((void *)(v1 + 1788)); *(_DWORD *)(v1 + 1780) = &off_69F68C; *(_DWORD *)(v1 + 1764) = &off_69F7AC; nullsub_2((void *)(v1 + 1772)); *(_DWORD *)(v1 + 1764) = &off_69F68C; *(_DWORD *)(v1 + 1748) = &off_69F7AC; nullsub_2((void *)(v1 + 1756)); *(_DWORD *)(v1 + 1748) = &off_69F68C; *(_DWORD *)(v1 + 1732) = &off_69F7AC; nullsub_2((void *)(v1 + 1740)); *(_DWORD *)(v1 + 1732) = &off_69F68C; *(_DWORD *)(v1 + 1716) = &off_69F7AC; nullsub_2((void *)(v1 + 1724)); *(_DWORD *)(v1 + 1716) = &off_69F68C; *(_DWORD *)(v1 + 1700) = &off_69F7AC; nullsub_2((void *)(v1 + 1708)); *(_DWORD *)(v1 + 1700) = &off_69F68C; *(_DWORD *)(v1 + 1684) = &off_69F7AC; nullsub_2((void *)(v1 + 1692)); *(_DWORD *)(v1 + 1684) = &off_69F68C; *(_DWORD *)(v1 + 1668) = &off_69F7AC; nullsub_2((void *)(v1 + 1676)); *(_DWORD *)(v1 + 1668) = &off_69F68C; *(_DWORD *)(v1 + 1652) = &off_69F7AC; nullsub_2((void *)(v1 + 1660)); *(_DWORD *)(v1 + 1652) = &off_69F68C; *(_DWORD *)(v1 + 1636) = &off_69F7AC; nullsub_2((void *)(v1 + 1644)); *(_DWORD *)(v1 + 1636) = &off_69F68C; *(_DWORD *)(v1 + 1628) = &off_69F68C; *(_DWORD *)(v1 + 1620) = &off_69F68C; *(_DWORD *)(v1 + 1612) = &off_69F68C; *(_DWORD *)(v1 + 1604) = &off_69F68C; *(_DWORD *)(v1 + 1596) = &off_69F68C; *(_DWORD *)(v1 + 1588) = &off_69F68C; *(_DWORD *)(v1 + 1580) = &off_69F68C; *(_DWORD *)(v1 + 1572) = &off_69F68C; *(_DWORD *)(v1 + 1564) = &off_69F68C; *(_DWORD *)(v1 + 1556) = &off_69F68C; *(_DWORD *)(v1 + 1548) = &off_69F68C; *(_DWORD *)(v1 + 1540) = &off_69F68C; *(_DWORD *)(v1 + 1532) = &off_69F68C; *(_DWORD *)(v1 + 1524) = &off_69F68C; *(_DWORD *)(v1 + 1516) = &off_69F68C; *(_DWORD *)(v1 + 1508) = &off_69F68C; *(_DWORD *)(v1 + 1500) = &off_69F68C; *(_DWORD *)(v1 + 1492) = &off_69F68C; *(_DWORD *)(v1 + 1484) = &off_69F68C; *(_DWORD *)(v1 + 1476) = &off_69F68C; *(_DWORD *)(v1 + 1468) = &off_69F68C; *(_DWORD *)(v1 + 1460) = &off_69F68C; *(_DWORD *)(v1 + 1452) = &off_69F68C; *(_DWORD *)(v1 + 1444) = &off_69F68C; *(_DWORD *)(v1 + 1428) = &off_69F7AC; nullsub_2((void *)(v1 + 1436)); *(_DWORD *)(v1 + 1428) = &off_69F68C; *(_DWORD *)(v1 + 1420) = &off_69F68C; *(_DWORD *)(v1 + 1412) = &off_69F68C; *(_DWORD *)(v1 + 1404) = &off_69F68C; *(_DWORD *)(v1 + 1396) = &off_69F68C; *(_DWORD *)(v1 + 1388) = &off_69F68C; *(_DWORD *)(v1 + 1380) = &off_69F68C; *(_DWORD *)(v1 + 1364) = &off_69F7AC; nullsub_2((void *)(v1 + 1372)); *(_DWORD *)(v1 + 1364) = &off_69F68C; *(_DWORD *)(v1 + 1356) = &off_69F68C; *(_DWORD *)(v1 + 1348) = &off_69F68C; *(_DWORD *)(v1 + 1340) = &off_69F68C; *(_DWORD *)(v1 + 1332) = &off_69F68C; *(_DWORD *)(v1 + 1324) = &off_69F68C; *(_DWORD *)(v1 + 1308) = &off_69F7AC; nullsub_2((void *)(v1 + 1316)); *(_DWORD *)(v1 + 1308) = &off_69F68C; *(_DWORD *)(v1 + 1300) = &off_69F68C; *(_DWORD *)(v1 + 1292) = &off_69F68C; *(_DWORD *)(v1 + 1276) = &off_69F7AC; nullsub_2((void *)(v1 + 1284)); *(_DWORD *)(v1 + 1276) = &off_69F68C; *(_DWORD *)(v1 + 1268) = &off_69F68C; *(_DWORD *)(v1 + 1216) = &off_69F68C; *(_DWORD *)(v1 + 1208) = &off_69F68C; *(_DWORD *)(v1 + 1200) = &off_69F68C; *(_DWORD *)(v1 + 1192) = &off_69F68C; *(_DWORD *)(v1 + 1184) = &off_69F68C; *(_DWORD *)(v1 + 1176) = &off_69F68C; *(_DWORD *)(v1 + 1168) = &off_69F68C; *(_DWORD *)(v1 + 1160) = &off_69F68C; *(_DWORD *)(v1 + 1152) = &off_69F68C; *(_DWORD *)(v1 + 1144) = &off_69F68C; *(_DWORD *)(v1 + 1136) = &off_69F68C; *(_DWORD *)(v1 + 1128) = &off_69F68C; *(_DWORD *)(v1 + 1120) = &off_69F68C; *(_DWORD *)(v1 + 1112) = &off_69F68C; *(_DWORD *)(v1 + 1104) = &off_69F68C; *(_DWORD *)(v1 + 1096) = &off_69F68C; *(_DWORD *)(v1 + 1080) = &off_69F7AC; nullsub_2((void *)(v1 + 1088)); *(_DWORD *)(v1 + 1080) = &off_69F68C; *(_DWORD *)(v1 + 1072) = &off_69F68C; *(_DWORD *)(v1 + 1064) = &off_69F68C; *(_DWORD *)(v1 + 1056) = &off_69F68C; *(_DWORD *)(v1 + 1040) = &off_69F7AC; nullsub_2((void *)(v1 + 1048)); *(_DWORD *)(v1 + 1040) = &off_69F68C; *(_DWORD *)(v1 + 1032) = &off_69F68C; *(_DWORD *)(v1 + 1024) = &off_69F68C; *(_DWORD *)(v1 + 1008) = &off_69F7AC; nullsub_2((void *)(v1 + 1016)); *(_DWORD *)(v1 + 1008) = &off_69F68C; *(_DWORD *)(v1 + 1000) = &off_69F68C; *(_DWORD *)(v1 + 992) = &off_69F68C; *(_DWORD *)(v1 + 984) = &off_69F68C; *(_DWORD *)(v1 + 976) = &off_69F68C; *(_DWORD *)(v1 + 968) = &off_69F68C; *(_DWORD *)(v1 + 916) = &off_69F68C; *(_DWORD *)(v1 + 908) = &off_69F68C; *(_DWORD *)(v1 + 892) = &off_69F7AC; nullsub_2((void *)(v1 + 900)); *(_DWORD *)(v1 + 892) = &off_69F68C; *(_DWORD *)(v1 + 884) = &off_69F68C; *(_DWORD *)(v1 + 868) = &off_69F7AC; nullsub_2((void *)(v1 + 876)); *(_DWORD *)(v1 + 868) = &off_69F68C; *(_DWORD *)(v1 + 860) = &off_69F68C; *(_DWORD *)(v1 + 852) = &off_69F68C; *(_DWORD *)(v1 + 844) = &off_69F68C; *(_DWORD *)(v1 + 836) = &off_69F68C; *(_DWORD *)(v1 + 828) = &off_69F68C; *(_DWORD *)(v1 + 776) = &off_69F68C; *(_DWORD *)(v1 + 768) = &off_69F68C; *(_DWORD *)(v1 + 752) = &off_69F7AC; nullsub_2((void *)(v1 + 760)); *(_DWORD *)(v1 + 752) = &off_69F68C; *(_DWORD *)(v1 + 744) = &off_69F68C; *(_DWORD *)(v1 + 736) = &off_69F68C; *(_DWORD *)(v1 + 728) = &off_69F68C; *(_DWORD *)(v1 + 720) = &off_69F68C; *(_DWORD *)(v1 + 712) = &off_69F68C; *(_DWORD *)(v1 + 704) = &off_69F68C; *(_DWORD *)(v1 + 696) = &off_69F68C; *(_DWORD *)(v1 + 680) = &off_69F68C; *(_DWORD *)(v1 + 664) = &off_69F68C; *(_DWORD *)(v1 + 648) = &off_69F68C; *(_DWORD *)(v1 + 632) = &off_69F68C; *(_DWORD *)(v1 + 616) = &off_69F68C; *(_DWORD *)(v1 + 600) = &off_69F68C; *(_DWORD *)(v1 + 592) = &off_69F68C; *(_DWORD *)(v1 + 576) = &off_69F7AC; nullsub_2((void *)(v1 + 584)); *(_DWORD *)(v1 + 576) = &off_69F68C; *(_DWORD *)(v1 + 568) = &off_69F68C; *(_DWORD *)(v1 + 560) = &off_69F68C; *(_DWORD *)(v1 + 552) = &off_69F68C; *(_DWORD *)(v1 + 544) = &off_69F68C; *(_DWORD *)(v1 + 536) = &off_69F68C; *(_DWORD *)(v1 + 528) = &off_69F68C; *(_DWORD *)(v1 + 520) = &off_69F68C; *(_DWORD *)(v1 + 512) = &off_69F68C; *(_DWORD *)(v1 + 504) = &off_69F68C; *(_DWORD *)(v1 + 496) = &off_69F68C; *(_DWORD *)(v1 + 488) = &off_69F68C; *(_DWORD *)(v1 + 436) = &off_69F68C; *(_DWORD *)(v1 + 420) = &off_69F68C; *(_DWORD *)(v1 + 412) = &off_69F68C; *(_DWORD *)(v1 + 404) = &off_69F68C; *(_DWORD *)(v1 + 396) = &off_69F68C; *(_DWORD *)(v1 + 388) = &off_69F68C; *(_DWORD *)(v1 + 380) = &off_69F68C; *(_DWORD *)(v1 + 328) = &off_69F68C; *(_DWORD *)(v1 + 320) = &off_69F68C; *(_DWORD *)(v1 + 304) = &off_69F7AC; nullsub_2((void *)(v1 + 312)); *(_DWORD *)(v1 + 304) = &off_69F68C; *(_DWORD *)(v1 + 296) = &off_69F68C; *(_DWORD *)(v1 + 280) = &off_69F7AC; nullsub_2((void *)(v1 + 288)); *(_DWORD *)(v1 + 280) = &off_69F68C; *(_DWORD *)(v1 + 272) = &off_69F68C; *(_DWORD *)(v1 + 264) = &off_69F68C; *(_DWORD *)(v1 + 256) = &off_69F68C; *(_DWORD *)(v1 + 248) = &off_69F68C; *(_DWORD *)(v1 + 240) = &off_69F68C; *(_DWORD *)(v1 + 232) = &off_69F68C; *(_DWORD *)(v1 + 224) = &off_69F68C; *(_DWORD *)(v1 + 172) = &off_69F68C; *(_DWORD *)(v1 + 164) = &off_69F68C; *(_DWORD *)(v1 + 156) = &off_69F68C; *(_DWORD *)(v1 + 148) = &off_69F68C; *(_DWORD *)(v1 + 140) = &off_69F68C; *(_DWORD *)(v1 + 132) = &off_69F68C; *(_DWORD *)(v1 + 124) = &off_69F68C; *(_DWORD *)(v1 + 116) = &off_69F68C; *(_DWORD *)(v1 + 108) = &off_69F68C; *(_DWORD *)(v1 + 100) = &off_69F68C; *(_DWORD *)(v1 + 92) = &off_69F68C; *(_DWORD *)(v1 + 84) = &off_69F68C; *(_DWORD *)(v1 + 32) = &off_69F68C; *(_DWORD *)(v1 + 24) = &off_69F68C; *(_DWORD *)(v1 + 8) = &off_69F7AC; nullsub_2((void *)(v1 + 16)); *(_DWORD *)(v1 + 8) = &off_69F68C; *(_DWORD *)v1 = &off_69F68C; } // 69F68C: using guessed type int (*off_69F68C)(); // 69F6BC: using guessed type int (*off_69F6BC)(); // 69F7AC: using guessed type int (*off_69F7AC)(); // 6A04B4: using guessed type int (__thiscall *off_6A04B4)(void *, char); //----- (00405050) -------------------------------------------------------- char __thiscall sub_405050(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 char result; // al@2 int v6; // eax@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_639670(&unk_877F50, a3); if ( v4 == -1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); result = 0; } else { v4 = (unsigned __int16)v4; if ( dword_8772EC >= (unsigned int)(unsigned __int16)v4 ) { v6 = dword_8772E4 + 1452 * v4; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v4); v6 = 0; } *((_DWORD *)v3 + a2 + 8) = v6; if ( v6 ) { *((_DWORD *)v3 + a2 + 2) = *(_DWORD *)(*(_DWORD *)v6 + 34); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; //----- (00405190) -------------------------------------------------------- char __thiscall sub_405190(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@2 int v5; // eax@4 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_639670(&unk_877F50, a2); if ( v3 == -1 ) { --dword_750CB8; sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); result = 0; } else { v3 = (unsigned __int16)v3; if ( dword_8772EC >= (unsigned int)(unsigned __int16)v3 ) { v5 = dword_8772E4 + 1452 * v3; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v3); v5 = 0; } *((_DWORD *)v2 + 4) = v5; if ( v5 ) { *((_DWORD *)v2 + 2) = *(_DWORD *)(*(_DWORD *)v5 + 34); --dword_750CB8; sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); result = 1; } else { --dword_750CB8; sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; //----- (004052D0) -------------------------------------------------------- int __thiscall sub_4052D0(void *this, int a2) { void *v2; // esi@1 signed int v3; // edx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; if ( a2 && dword_871508[3 * *((_DWORD *)v2 + 1)] ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)dword_871508[3 * *((_DWORD *)v2 + 1)] + 36))(a2); v3 = 1; } dword_750CB8 -= v3; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (004053A0) -------------------------------------------------------- int __thiscall sub_4053A0(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // edi@1 int v7; // eax@1 void *v8; // edi@1 __int16 v9; // dx@1 __int16 v10; // ax@1 int v11; // eax@1 int v12; // ST08_4@1 int v13; // eax@1 int v15[3]; // [sp+Ch] [bp-1Ch]@1 int v16; // [sp+18h] [bp-10h]@1 int v17; // [sp+24h] [bp-4h]@1 v4 = this; v16 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v5 = sub_50E7F0(dword_13231278, 6); (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 1252))( v4, (unsigned int)((unsigned int)(a3 * v5) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1628))(v4); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1256))(v4) - v6; v8 = off_849C18; *(_WORD *)off_849C18 = 9276; v9 = *((_WORD *)v4 + 2); *((_DWORD *)v8 + 1) = v7; *((_WORD *)v8 + 4) = 0; *((_WORD *)v8 + 5) = a4; *((_WORD *)v8 + 1) = v9; v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2024))(v4); v16 = 15; v15[2] = (int)&off_849C18; *((_WORD *)v8 + 6) = v10; *((_BYTE *)v8 + 14) = 0; sub_4287B0(v15, (void *)v15[2], v16); v11 = *(_DWORD *)((char *)v4 + 102); v16 = 65535; v15[2] = 1; v15[1] = (int)v15; v15[0] = 0; v12 = v11; LOBYTE(v17) = 1; v13 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v13, v12, 0, v15[0], v15[1], v15[2], v16); LOBYTE(v17) = 0; sub_428A70(v15); --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231278: using guessed type int dword_13231278[]; //----- (00405500) -------------------------------------------------------- int __thiscall sub_405500(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_SPHealOverTime"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_SPHealOverTime"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_50E7F0(dword_13231278, 6); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1464))( v3, (unsigned int)((unsigned int)(a3 * v4) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_SPHealOverTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231278: using guessed type int dword_13231278[]; //----- (004055D0) -------------------------------------------------------- int __thiscall sub_4055D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // ST04_4@1 int v7; // eax@1 void *v8; // eax@1 int v9; // ST04_4@1 int v10; // eax@1 char v12; // [sp+Ch] [bp-1Ch]@1 int v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+24h] [bp-4h]@1 v4 = this; v13 = (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 9255; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); v14 = 0; *((_DWORD *)v5 + 1) = a2; sub_4287B0(&v12, &off_849C18, 8); v6 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v14) = 1; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v7, v6, 0, 0, (int)&v12, 0, 65535); LOBYTE(v14) = 0; sub_428A70(&v12); v8 = off_849C18; *(_WORD *)off_849C18 = 7192; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v8 + 2) = a3; *((_DWORD *)v8 + 1) = a2; *((_DWORD *)v8 + 3) = a4; sub_4287B0(&v12, &off_849C18, 16); v9 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v14) = 2; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v10, v9, 0, 0, (int)&v12, 1, 65535); LOBYTE(v14) = 0; sub_428A70(&v12); --dword_750CB8; v14 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00405730) -------------------------------------------------------- int __thiscall sub_405730(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+8h] [bp-1Ch]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 9256; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); v9 = 0; *((_DWORD *)v3 + 1) = a2; sub_4287B0(&v7, &off_849C18, 8); v4 = *(_DWORD *)((char *)v2 + 102); LOBYTE(v9) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v5, v4, 0, 0, (int)&v7, 1, 65535); LOBYTE(v9) = 0; sub_428A70(&v7); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00405830) -------------------------------------------------------- int __thiscall sub_405830(void *this, int a2, int a3, char a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Inform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Inform"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = ((a4 == 0) + 41) & 0x3FF | 0x2400; *(_DWORD *)((char *)v5 + 2) = a2; *(_DWORD *)((char *)v5 + 6) = a3; if ( sub_4C81E0(&off_849C18, 10) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Inform : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Inform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00405940) -------------------------------------------------------- int __thiscall sub_405940(int this) { int v1; // esi@1 int v2; // ebx@1 int v3; // edi@1 v1 = this; *(_DWORD *)this = &off_69EE3C; *(_DWORD *)(this + 4) = &off_69EE3C; *(_DWORD *)(this + 8) = &off_69EE3C; *(_DWORD *)(this + 12) = &off_69EE3C; *(_DWORD *)(this + 16) = &off_69EE3C; *(_DWORD *)(this + 20) = &off_69EE3C; *(_DWORD *)(this + 24) = &off_69EE3C; *(_DWORD *)(this + 28) = &off_69EE3C; *(_DWORD *)(this + 32) = &off_69EE3C; *(_DWORD *)(this + 36) = &off_69EE3C; *(_DWORD *)(this + 40) = &off_69EE3C; *(_DWORD *)(this + 44) = &off_69EE3C; *(_DWORD *)(this + 48) = &off_69EE3C; *(_DWORD *)(this + 52) = &off_69EE3C; *(_DWORD *)(this + 56) = &off_69EE3C; *(_DWORD *)(this + 60) = &off_69EE3C; *(_DWORD *)(this + 64) = &off_69EE3C; *(_DWORD *)(this + 68) = &off_69F1BC; *(_DWORD *)(this + 72) = &off_69F22C; *(_DWORD *)(this + 76) = &off_69EE3C; *(_DWORD *)(this + 80) = &off_69EE3C; *(_DWORD *)(this + 84) = &off_69EE3C; *(_DWORD *)(this + 88) = &off_69EE3C; *(_DWORD *)(this + 92) = &off_69EF8C; *(_DWORD *)(this + 96) = &off_69EE3C; *(_DWORD *)(this + 100) = &off_69EEAC; *(_DWORD *)(this + 104) = &off_69EEAC; *(_DWORD *)(this + 108) = &off_69F29C; *(_DWORD *)(this + 112) = &off_69F30C; *(_DWORD *)(this + 116) = &off_69F37C; *(_DWORD *)(this + 120) = &off_69EE3C; *(_DWORD *)(this + 124) = &off_69EE3C; *(_DWORD *)(this + 128) = &off_69EE3C; *(_DWORD *)(this + 132) = &off_69EF8C; *(_DWORD *)(this + 136) = &off_69EF1C; *(_DWORD *)(this + 140) = &off_6A051C; *(_DWORD *)(this + 144) = &off_69F06C; *(_DWORD *)(this + 148) = &off_69F53C; *(_DWORD *)(this + 152) = &off_69F5AC; *(_DWORD *)(this + 156) = &off_69F61C; *(_DWORD *)(this + 160) = &off_69FB9C; *(_DWORD *)(this + 164) = &off_69EF8C; *(_DWORD *)(this + 168) = &off_69EFFC; *(_DWORD *)(this + 172) = &off_69EE3C; *(_DWORD *)(this + 176) = &off_69EE3C; *(_DWORD *)(this + 180) = &off_69EE3C; *(_DWORD *)(this + 184) = &off_69EE3C; *(_DWORD *)(this + 188) = &off_69EEAC; *(_DWORD *)(this + 192) = &off_69EEAC; *(_DWORD *)(this + 196) = &off_69F0DC; *(_DWORD *)(this + 200) = &off_69EE3C; *(_DWORD *)(this + 204) = &off_69EE3C; *(_DWORD *)(this + 208) = &off_69EE3C; *(_DWORD *)(this + 212) = &off_69EE3C; *(_DWORD *)(this + 216) = &off_69EE3C; *(_DWORD *)(this + 220) = &off_69EE3C; *(_DWORD *)(this + 224) = &off_69EE3C; *(_DWORD *)(this + 228) = &off_69EE3C; *(_DWORD *)(this + 232) = &off_69EE3C; *(_DWORD *)(this + 236) = &off_69EE3C; *(_DWORD *)(this + 240) = &off_69EE3C; *(_DWORD *)(this + 244) = &off_69EE3C; *(_DWORD *)(this + 248) = &off_69EE3C; *(_DWORD *)(this + 252) = &off_69EE3C; *(_DWORD *)(this + 256) = &off_69EE3C; *(_DWORD *)(this + 260) = &off_69EE3C; *(_DWORD *)(this + 264) = &off_69EE3C; *(_DWORD *)(this + 268) = &off_69EE3C; *(_DWORD *)(this + 272) = &off_69F14C; *(_DWORD *)(this + 276) = &off_69EF8C; *(_DWORD *)(this + 280) = &off_69EF8C; *(_DWORD *)(this + 284) = &off_69EE3C; *(_DWORD *)(this + 288) = &off_69F3EC; *(_DWORD *)(this + 292) = &off_69F45C; *(_DWORD *)(this + 296) = &off_69F4CC; *(_DWORD *)(this + 300) = &off_69FC0C; *(_DWORD *)(this + 304) = &off_69FD64; *(_DWORD *)(this + 308) = &off_69EF8C; *(_DWORD *)(this + 312) = &off_69FC0C; *(_DWORD *)(this + 316) = &off_69EE3C; *(_DWORD *)(this + 320) = &off_69FE24; *(_DWORD *)(this + 324) = &off_69EE3C; *(_DWORD *)(this + 328) = &off_69EE3C; *(_DWORD *)(this + 332) = &off_69FE94; *(_DWORD *)(this + 336) = &off_69FC0C; *(_DWORD *)(this + 340) = &off_69EE3C; *(_DWORD *)(this + 344) = &off_69EE3C; *(_DWORD *)(this + 348) = &off_69F1BC; *(_DWORD *)(this + 352) = &off_69F1BC; *(_DWORD *)(this + 356) = &off_69FF04; *(_DWORD *)(this + 360) = &off_69EE3C; *(_DWORD *)(this + 364) = &off_69FFE4; *(_DWORD *)(this + 368) = &off_69FF74; *(_DWORD *)(this + 372) = &off_6A0054; *(_DWORD *)(this + 376) = &off_69EE3C; *(_DWORD *)(this + 380) = &off_6A00C4; *(_DWORD *)(this + 384) = &off_6A0134; *(_DWORD *)(this + 388) = &off_69EE3C; *(_DWORD *)(this + 392) = &off_6A01A4; *(_DWORD *)(this + 396) = &off_6A0214; *(_DWORD *)(this + 400) = &off_6A0284; *(_DWORD *)(this + 404) = &off_6A02F4; *(_DWORD *)(this + 408) = &off_6A0364; *(_DWORD *)(this + 412) = &off_6A03D4; *(_DWORD *)(this + 416) = &off_6A0444; v2 = this + 420; memset((void *)(this + 420), 0, 0x1E0u); *(_DWORD *)(this + 420) = this + 4; *(_DWORD *)(v1 + 424) = v1 + 8; *(_DWORD *)(v1 + 428) = v1 + 12; *(_DWORD *)(v1 + 432) = v1 + 16; *(_DWORD *)(v1 + 436) = v1 + 20; *(_DWORD *)(v1 + 440) = v1 + 24; *(_DWORD *)(v1 + 444) = v1 + 28; *(_DWORD *)(v1 + 448) = v1 + 32; *(_DWORD *)(v1 + 452) = v1 + 36; *(_DWORD *)(v1 + 456) = v1 + 40; *(_DWORD *)(v1 + 460) = v1 + 44; *(_DWORD *)(v1 + 464) = v1 + 48; *(_DWORD *)(v1 + 468) = v1 + 52; *(_DWORD *)(v1 + 472) = v1 + 56; *(_DWORD *)(v1 + 476) = v1 + 60; *(_DWORD *)(v1 + 480) = v1 + 64; *(_DWORD *)(v1 + 484) = v1 + 68; *(_DWORD *)(v1 + 488) = v1 + 72; *(_DWORD *)(v1 + 492) = v1 + 76; *(_DWORD *)(v1 + 496) = v1 + 80; *(_DWORD *)(v1 + 500) = v1 + 84; *(_DWORD *)(v1 + 504) = v1 + 88; *(_DWORD *)(v1 + 508) = v1 + 92; *(_DWORD *)(v1 + 512) = v1 + 96; *(_DWORD *)(v1 + 516) = v1 + 100; *(_DWORD *)(v1 + 520) = v1 + 104; *(_DWORD *)(v1 + 524) = v1 + 108; *(_DWORD *)(v1 + 528) = v1 + 132; *(_DWORD *)(v1 + 532) = v1 + 136; *(_DWORD *)(v1 + 536) = v1 + 144; *(_DWORD *)(v1 + 540) = v1 + 148; *(_DWORD *)(v1 + 544) = v1 + 152; *(_DWORD *)(v1 + 548) = v1 + 156; *(_DWORD *)(v1 + 556) = v1 + 168; *(_DWORD *)(v1 + 560) = v1 + 172; *(_DWORD *)(v1 + 564) = v1 + 176; *(_DWORD *)(v1 + 568) = v1 + 180; *(_DWORD *)(v1 + 572) = v1 + 184; *(_DWORD *)(v1 + 576) = v1 + 188; *(_DWORD *)(v1 + 580) = v1 + 192; *(_DWORD *)(v1 + 584) = v1 + 196; *(_DWORD *)(v1 + 588) = v1 + 200; *(_DWORD *)(v1 + 592) = v1 + 204; *(_DWORD *)(v1 + 596) = v1 + 208; *(_DWORD *)(v1 + 600) = v1 + 212; *(_DWORD *)(v1 + 604) = v1 + 216; *(_DWORD *)(v1 + 608) = v1 + 220; *(_DWORD *)(v1 + 612) = v1 + 224; *(_DWORD *)(v1 + 616) = v1 + 228; *(_DWORD *)(v1 + 620) = v1 + 232; *(_DWORD *)(v1 + 624) = v1 + 236; *(_DWORD *)(v1 + 628) = v1 + 240; *(_DWORD *)(this + 552) = this + 164; *(_DWORD *)(v1 + 632) = v1 + 244; *(_DWORD *)(v1 + 636) = v1 + 248; *(_DWORD *)(v1 + 640) = v1 + 252; *(_DWORD *)(v1 + 644) = v1 + 256; *(_DWORD *)(v1 + 648) = v1 + 260; *(_DWORD *)(v1 + 656) = v1 + 116; *(_DWORD *)(v1 + 660) = v1 + 120; *(_DWORD *)(v1 + 652) = v1 + 112; *(_DWORD *)(v1 + 664) = v1 + 124; *(_DWORD *)(v1 + 668) = v1 + 128; *(_DWORD *)(v1 + 672) = v1 + 264; *(_DWORD *)(v1 + 680) = v1 + 268; *(_DWORD *)(v1 + 684) = v1 + 272; *(_DWORD *)(v1 + 700) = v1 + 140; *(_DWORD *)(v1 + 752) = v1 + 276; *(_DWORD *)(v1 + 756) = v1 + 280; *(_DWORD *)(v1 + 864) = v1 + 284; *(_DWORD *)(v1 + 720) = v1 + 288; *(_DWORD *)(v1 + 724) = v1 + 292; *(_DWORD *)(v1 + 728) = v1 + 296; *(_DWORD *)(v1 + 748) = v1 + 300; *(_DWORD *)(v1 + 732) = v1 + 304; *(_DWORD *)(v1 + 772) = v1 + 160; *(_DWORD *)(v1 + 796) = v1 + 308; *(_DWORD *)(v1 + 676) = v1; *(_DWORD *)(v1 + 712) = v1; *(_DWORD *)(v1 + 716) = v1; *(_DWORD *)(v1 + 704) = v1; *(_DWORD *)(v1 + 708) = v1; *(_DWORD *)(this + 688) = this + 164; *(_DWORD *)(v1 + 692) = v1; *(_DWORD *)(v1 + 764) = v1; *(_DWORD *)(v1 + 768) = v1; *(_DWORD *)(v1 + 760) = v1; *(_DWORD *)(v1 + 696) = v1; *(_DWORD *)(v1 + 736) = v1; *(_DWORD *)(v1 + 740) = v1; *(_DWORD *)(v1 + 744) = v1; *(_DWORD *)(v1 + 776) = v1; *(_DWORD *)(v1 + 780) = v1; *(_DWORD *)(v1 + 784) = v1; *(_DWORD *)(v1 + 800) = v1 + 312; *(_DWORD *)(v1 + 804) = v1 + 316; *(_DWORD *)(v1 + 808) = v1 + 320; *(_DWORD *)(v1 + 812) = v1 + 324; *(_DWORD *)(v1 + 816) = v1 + 328; *(_DWORD *)(v1 + 820) = v1 + 332; *(_DWORD *)(v1 + 824) = v1 + 336; *(_DWORD *)(v1 + 828) = v1 + 340; *(_DWORD *)(v1 + 832) = v1 + 344; *(_DWORD *)(v1 + 788) = v1 + 348; *(_DWORD *)(v1 + 792) = v1 + 352; *(_DWORD *)(v1 + 840) = v1 + 356; *(_DWORD *)(v1 + 836) = v1 + 360; *(_DWORD *)(v1 + 844) = v1 + 364; *(_DWORD *)(v1 + 848) = v1 + 368; *(_DWORD *)(v1 + 852) = v1 + 376; *(_DWORD *)(v1 + 856) = v1 + 380; *(_DWORD *)(v1 + 860) = v1 + 384; *(_DWORD *)(v1 + 868) = v1 + 388; *(_DWORD *)(v1 + 876) = v1 + 392; *(_DWORD *)(v1 + 872) = v1 + 396; *(_DWORD *)(v1 + 880) = v1 + 400; *(_DWORD *)(v1 + 884) = v1 + 404; *(_DWORD *)(v1 + 888) = v1 + 412; *(_DWORD *)(v1 + 892) = v1 + 408; *(_DWORD *)(v1 + 896) = v1 + 416; v3 = 0; do { if ( !*(_DWORD *)v2 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateContainer::ActorCluster::ActorCluster : Buffer not full", v3); loc_6391B0("AbnormalStateContainer::ActorCluster::ActorCluster"); } ++v3; v2 += 4; } while ( v3 < 120 ); return v1; } // 69EE3C: using guessed type int (*off_69EE3C)(); // 69EEAC: using guessed type int (*off_69EEAC)(); // 69EF1C: using guessed type int (*off_69EF1C)(); // 69EF8C: using guessed type int (*off_69EF8C)(); // 69EFFC: using guessed type int (*off_69EFFC)(); // 69F06C: using guessed type int (*off_69F06C)(); // 69F0DC: using guessed type int (*off_69F0DC)(); // 69F14C: using guessed type int (*off_69F14C)(); // 69F1BC: using guessed type int (*off_69F1BC)(); // 69F22C: using guessed type int (*off_69F22C)(); // 69F29C: using guessed type int (*off_69F29C)(); // 69F30C: using guessed type int (*off_69F30C)(); // 69F37C: using guessed type int (*off_69F37C)(); // 69F3EC: using guessed type int (*off_69F3EC)(); // 69F45C: using guessed type int (*off_69F45C)(); // 69F4CC: using guessed type int (*off_69F4CC)(); // 69F53C: using guessed type int (*off_69F53C)(); // 69F5AC: using guessed type int (*off_69F5AC)(); // 69F61C: using guessed type int (*off_69F61C)(); // 69FB9C: using guessed type int (*off_69FB9C)(); // 69FC0C: using guessed type int (*off_69FC0C)(); // 69FD64: using guessed type int (*off_69FD64)(); // 69FE24: using guessed type int (*off_69FE24)(); // 69FE94: using guessed type int (*off_69FE94)(); // 69FF04: using guessed type int (*off_69FF04)(); // 69FF74: using guessed type int (*off_69FF74)(); // 69FFE4: using guessed type int (*off_69FFE4)(); // 6A0054: using guessed type int (*off_6A0054)(); // 6A00C4: using guessed type int (*off_6A00C4)(); // 6A0134: using guessed type int (*off_6A0134)(); // 6A01A4: using guessed type int (*off_6A01A4)(); // 6A0214: using guessed type int (*off_6A0214)(); // 6A0284: using guessed type int (*off_6A0284)(); // 6A02F4: using guessed type int (*off_6A02F4)(); // 6A0364: using guessed type int (*off_6A0364)(); // 6A03D4: using guessed type int (*off_6A03D4)(); // 6A0444: using guessed type int (*off_6A0444)(); // 6A051C: using guessed type int (*off_6A051C)(); //----- (00406480) -------------------------------------------------------- void *__thiscall sub_406480(void *this) { void *v1; // esi@1 v1 = this; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)this + 36); sub_50EB30((int)((char *)v1 + 96)); *((_DWORD *)v1 + 1) = 792; *((_DWORD *)v1 + 12) = 0; *((_DWORD *)v1 + 14) = 0; *((_DWORD *)v1 + 16) = 0; *((_DWORD *)v1 + 18) = 0; *((_DWORD *)v1 + 20) = 0; *((_BYTE *)v1 + 16) = 0; *((_DWORD *)v1 + 5) = 0; return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); //----- (004064F0) -------------------------------------------------------- int __thiscall sub_4064F0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_CompName"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_CompName"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(a4 + 4) - *((_DWORD *)v4 + 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_CompName"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00406560) -------------------------------------------------------- int __thiscall sub_406560(void *this) { void *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = (void *)*((_DWORD *)this + 843); *((_DWORD *)this + 841) = &off_6A04D8; if ( v2 ) sub_6530A4(v2); return _LN21(v1, 0x74u, 29, (void (__thiscall *)(void *))sub_401A10); } // 6A04D8: using guessed type int (__thiscall *off_6A04D8)(void *, char); //----- (004065A0) -------------------------------------------------------- char __thiscall sub_4065A0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 char result; // al@2 int v6; // eax@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_639670(&unk_877F50, a3); if ( v4 == -1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); result = 0; } else { v4 = (unsigned __int16)v4; if ( dword_8772EC >= (unsigned int)(unsigned __int16)v4 ) { v6 = dword_8772E4 + 1452 * v4; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v4); v6 = 0; } *((_DWORD *)v3 + 2 * a2 + 12) = v6; if ( v6 ) { *((_DWORD *)v3 + 2 * a2 + 11) = *(_DWORD *)(*(_DWORD *)v6 + 34); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; //----- (004066E0) -------------------------------------------------------- int __thiscall sub_4066E0(int this) { int v1; // eax@1 int v2; // eax@2 int result; // eax@3 v1 = *(_WORD *)(this + 4); if ( (unsigned __int16)v1 < word_877020 && (v2 = *(_DWORD *)(dword_877024 + 12 * v1)) != 0 ) result = *(_DWORD *)v2; else result = 0; return result; } // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; //----- (00406710) -------------------------------------------------------- int __thiscall sub_406710(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int v5; // eax@2 int v6; // eax@3 int result; // eax@6 v3 = a2; v4 = *(_WORD *)(a2 + 4); if ( (unsigned __int16)v4 < word_877020 && (v5 = *(_DWORD *)(dword_877024 + 12 * v4)) != 0 ) v6 = *(_DWORD *)v5; else v6 = 0; BYTE3(a2) = 0; if ( v6 ) result = (*(int (__thiscall **)(int, _DWORD, int, int, char *))(*(_DWORD *)v6 + 4))( v6, *(_DWORD *)(this + 4), a3, v3, (char *)&a2 + 3); else result = 1; return result; } // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; //----- (00406770) -------------------------------------------------------- char __thiscall sub_406770(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 int (__stdcall **v6)(int, int); // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"AbnormalStateContainer::AbstateListInObject::asl_Routine"; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateListInObject::asl_Routine"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v6 = &off_6A0968; v7 = a2; LOBYTE(v9) = 1; v3 = sub_43C470((int)((char *)v2 + 3364), (int)&v6); --dword_750CB8; v4 = v3; v6 = &off_6A04FC; v9 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_Routine"); return v4; } // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A0968: using guessed type int (__stdcall *off_6A0968)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00406840) -------------------------------------------------------- char __stdcall sub_406840(void *a1, int a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@2 int v6; // eax@2 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateElement::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateElement::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a3 + 4); if ( (unsigned int)dword_14D129E8 >= *(_DWORD *)(a3 + 32) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1616))(a1, v4); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1184))(a1); *(_BYTE *)(v5 + v4 / 8) &= ~(1 << v4 % 8); sub_405730(a1, v4); *(_DWORD *)(a3 + 4) = 792; *(_BYTE *)(a3 + 24) = 0; v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1324))(a1); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v6 + 3364) + 12))(v6 + 3364, a2); *(_BYTE *)a4 = 1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateElement::ase_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00406970) -------------------------------------------------------- char __stdcall sub_406970(void *a1, int a2, int a3, int a4) { char result; // al@2 unsigned int v5; // eax@3 int v6; // eax@4 char v7; // bl@5 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; sub_406840(a1, a2, a3, a4); if ( *(_BYTE *)a4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"); result = 1; } else { v5 = *(_DWORD *)(a3 + 36); if ( dword_14D129E8 > v5 && (*(_DWORD *)(a3 + 36) = v5 + *(_DWORD *)(a3 + 40), v6 = *(_DWORD *)(a3 + 4), dword_871508[3 * v6]) ) v7 = (*(int (__stdcall **)(int, void *, _DWORD))(*(_DWORD *)dword_871508[3 * v6] + 12))( a3, a1, *(_DWORD *)(a3 + 4)); else v7 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00406AA0) -------------------------------------------------------- char __stdcall sub_406AA0(void *a1, int a2, int a3, int a4) { char result; // al@2 char v5; // al@3 char v6; // bl@3 int v7; // [sp+0h] [bp-20h]@0 int v8; // [sp+4h] [bp-1Ch]@0 int v9; // [sp+8h] [bp-18h]@0 int v10; // [sp+Ch] [bp-14h]@0 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; sub_406840(a1, a2, a3, a4); if ( *(_BYTE *)a4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"); result = 1; } else { v5 = (*(int (__stdcall **)(int, void *, _DWORD, int, int, int, int))(*(_DWORD *)dword_871508[3 * *(_DWORD *)(a3 + 4)] + 12))( a3, a1, (unsigned __int16)a2, v7, v8, v9, v10); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"); result = v6; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (00406BB0) -------------------------------------------------------- char __stdcall sub_406BB0(void *a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePolymorph::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStatePolymorph::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; sub_406840(a1, a2, a3, a4); if ( *(_BYTE *)a4 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 3752))(a1, 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePolymorph::ase_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00406C80) -------------------------------------------------------- char __stdcall sub_406C80(int a1, int a2, int a3) { void *v3; // ecx@2 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActor::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActor::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 63) ) { v3 = *(void **)(a2 + 122); if ( v3 ) { v4 = sub_4627E0(v3); if ( v4 ) sub_479690((void *)v4, a2); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActor::sasa_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00406D60) -------------------------------------------------------- char __stdcall sub_406D60(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateFear::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateFear::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)(a2 + 7888) |= 4u; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateFear::sasa_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00406DC0) -------------------------------------------------------- char __stdcall sub_406DC0(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // edi@1 unsigned int v6; // edi@1 int v7; // edi@2 signed int v8; // edx@3 int v9; // ecx@3 char v10; // al@3 char v11; // bl@3 int v13; // [sp+30h] [bp+Ch]@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = a1; v13 = sub_402620(a1, *(_DWORD *)(a2 + 102)); v5 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 30); v6 = v5 - sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 82); if ( !v6 ) { v7 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 47); v6 = (unsigned int)((unsigned int)(v7 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1264))(v3)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } v8 = (signed int)((unsigned __int64)((signed int)(v6 * (unsigned __int16)sub_50E830((void *)(a1 + 96), 1)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v9 = (v8 + ((unsigned int)v8 >> 31)) * (unsigned __int16)sub_50E870((void *)(a1 + 96), 12); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1844))( v3, v13, ((signed int)((unsigned __int64)(v9 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v9 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31), a3); v10 = sub_406C80(a1, v3, a3); --dword_750CB8; v11 = v10; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_Routine"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00406F60) -------------------------------------------------------- char __stdcall sub_406F60(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 char v6; // al@1 char v7; // bl@1 int v9; // [sp+28h] [bp+8h]@1 int v10; // [sp+2Ch] [bp+Ch]@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = a1; v10 = sub_402620(a1, *(_DWORD *)(a2 + 102)); v9 = *(_DWORD *)v3; v5 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 30); (*(void (__thiscall **)(int, int, int))(v9 + 1848))(v3, v10, v5); v6 = sub_406C80(v4, v3, a3); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_Routine"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00407050) -------------------------------------------------------- char __stdcall sub_407050(int a1, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // ebx@1 int v6; // ebx@1 signed int v7; // edx@1 int v8; // ecx@1 char v9; // al@1 int v11; // [sp+2Ch] [bp+8h]@1 int v12; // [sp+30h] [bp+Ch]@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = a1; v12 = sub_402620(a1, *(_DWORD *)(a2 + 102)); v5 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 30); v6 = v5 - sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 82); v7 = (signed int)((unsigned __int64)(v6 * (unsigned __int16)sub_50E830((void *)(a1 + 96), 1) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v8 = (v7 + ((unsigned int)v7 >> 31)) * (unsigned __int16)sub_50E870((void *)(a1 + 96), 12); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 1844))(v3, v12); v11 = *(_DWORD *)v3; sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 30); (*(void (__thiscall **)(int))(v11 + 1848))(v3); v9 = sub_406C80(v4, v3, a3); --dword_750CB8; LOBYTE(v6) = v9; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_Routine"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (004071E0) -------------------------------------------------------- int __stdcall sub_4071E0(int a1) { int v1; // eax@1 int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 29); --dword_750CB8; v2 = v1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (004072A0) -------------------------------------------------------- int __stdcall sub_4072A0(int a1, int a2, int a3) { int v3; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 84); if ( v3 > *(_DWORD *)a3 ) { *(_DWORD *)(a2 + 84) = v3 - *(_DWORD *)a3; *(_DWORD *)a3 = 0; } else { *(_DWORD *)(a2 + 84) = 0; *(_DWORD *)a3 -= v3; *(_DWORD *)(a2 + 32) = dword_14D129E8; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00407330) -------------------------------------------------------- int __stdcall sub_407330(int a1, int a2, int a3) { int v3; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_Act_DamegeAbsorpt"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_Act_DamegeAbsorpt"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1260))(a1); if ( v3 <= *(_DWORD *)a3 ) { *(_DWORD *)a3 -= v3; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1272))(a1, v3); *(_DWORD *)(a2 + 32) = dword_14D129E8; } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1272))(a1, *(_DWORD *)a3); *(_DWORD *)a3 = 0; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_Act_DamegeAbsorpt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00407420) -------------------------------------------------------- int __stdcall sub_407420(int a1, int a2) { int v2; // eax@1 sub_4675D0( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 84); if ( v2 <= 0 ) { *(_DWORD *)(a1 + 32) = dword_14D129E8; } else { *(_DWORD *)(a1 + 84) = v2 - 1; *(_DWORD *)a2 = 0; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004074A0) -------------------------------------------------------- int __stdcall sub_4074A0(int a1, int a2) { int v2; // eax@1 sub_4675D0( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 50); *(_DWORD *)a2 = ((signed int)((unsigned __int64)(v2 * *(_DWORD *)a2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v2 * *(_DWORD *)a2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00407580) -------------------------------------------------------- int __stdcall sub_407580(int a1, int a2, int a3) { int v3; // eax@1 sub_4675D0( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 50); *(_DWORD *)a3 = ((signed int)((unsigned __int64)(v3 * *(_DWORD *)a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * *(_DWORD *)a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00407660) -------------------------------------------------------- int __stdcall sub_407660(int a1, int a2) { int v2; // esi@1 unsigned __int16 v3; // ax@3 int v4; // ebx@5 signed __int16 v5; // ax@6 int v6; // eax@9 signed int v7; // ebx@9 signed int i; // edi@12 int v9; // esi@13 int v11; // [sp-4h] [bp-28h]@2 unsigned int v12; // [sp+14h] [bp-10h]@5 int v13; // [sp+30h] [bp+Ch]@3 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed"; dword_750AB8[dword_750CB8++] = -1; v2 = a2; if ( a2 ) { v3 = (*(int (**)(void))(*(_DWORD *)a1 + 1360))(); v13 = v3; if ( v3 == -1 ) { v11 = (int)"AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed"; } else { v4 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v2 + 4)] + 36 * *(_BYTE *)(v2 + 24) + 12), 24); v12 = v4; if ( v2 != -96 ) { v5 = sub_50E870((void *)(v2 + 96), 9); v12 = ((signed int)((unsigned __int64)(v4 * (unsigned __int16)v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * (unsigned __int16)v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } if ( (unsigned __int16)v13 < 0xFA0u ) { v6 = 208 * (unsigned __int16)v13; v7 = *(_BYTE *)(v6 + dword_DA230A4); if ( v7 < 2 || v7 > 5 ) { sub_639100( &unk_86DDD8, (int)"SubAbnormalStateActorPartyRecharge::sasa_Act_Killed : Invalid party member number", *(_BYTE *)(v6 + dword_DA230A4)); } else { for ( i = 0; i < v7; ++i ) { v9 = sub_4CB7D0(v13, i); if ( v9 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1156))(v9) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1156))(v9) != 3 && (unsigned int)sub_402710(a1, v9) < 0xF4240 ) (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)v9 + 1952))(v9, v12); } } } else { sub_639100( &unk_86DDD8, (int)"SubAbnormalStateActorPartyRecharge::sasa_Act_Killed : Too large party handle", (unsigned __int16)v13); } v11 = (int)"AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed"; } --dword_750CB8; } else { --dword_750CB8; v11 = (int)"AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed"; } return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // DA230A4: using guessed type int dword_DA230A4; //----- (00407840) -------------------------------------------------------- int __stdcall sub_407840(int a1, int a2) { int v2; // edi@1 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 40); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 3144))(a1, 1); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 3152))(a1, v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00407920) -------------------------------------------------------- int __thiscall sub_407920(void *this, int a2) { void *v2; // edi@1 int v3; // ecx@1 unsigned int v4; // edx@1 int v5; // esi@2 int v6; // esi@37 int v7; // esi@38 int v8; // ebx@67 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_87150C[3 * *((_DWORD *)v2 + 1)]; v4 = 0; do { v5 = 36 * *((_BYTE *)v2 + 24); switch ( *(_DWORD *)(v5 + v4 + v3 + 16) ) { case 1: *(_DWORD *)(a2 + 2448) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 2: *(_DWORD *)(a2 + 2244) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x59: *(_DWORD *)(a2 + 2244) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 3: *(_DWORD *)(a2 + 2268) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2264) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 4: *(_DWORD *)(a2 + 2472) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2468) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x5E: *(_DWORD *)(a2 + 2268) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2264) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x5F: *(_DWORD *)(a2 + 2472) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2468) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 5: *(_DWORD *)(a2 + 2272) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 6: *(_DWORD *)(a2 + 2476) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x49: *(_DWORD *)(a2 + 2272) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x4A: *(_DWORD *)(a2 + 2476) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 7: *(_DWORD *)(a2 + 2252) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x51: *(_DWORD *)(a2 + 2252) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 8: *(_DWORD *)(a2 + 2280) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 9: *(_DWORD *)(a2 + 2484) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x5A: *(_DWORD *)(a2 + 2280) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x5B: *(_DWORD *)(a2 + 2484) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0xA: *(_DWORD *)(a2 + 2276) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0xB: *(_DWORD *)(a2 + 2480) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x5C: *(_DWORD *)(a2 + 2276) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x5D: *(_DWORD *)(a2 + 2480) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0xC: *(_DWORD *)(a2 + 2256) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0xD: *(_DWORD *)(a2 + 2288) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2284) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x2E: *(_DWORD *)(a2 + 2492) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2488) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x53: *(_DWORD *)(a2 + 2288) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2284) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x54: *(_DWORD *)(a2 + 2492) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2488) -= *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0xE: *(_DWORD *)(a2 + 2260) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x63: *(_DWORD *)(a2 + 2464) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0xF: *(_DWORD *)(a2 + 2292) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x10: *(_DWORD *)(a2 + 2496) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x56: *(_DWORD *)(a2 + 2292) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x57: *(_DWORD *)(a2 + 2496) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x12: *(_DWORD *)(a2 + 2552) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x13: if ( v3 ) { v6 = *(_DWORD *)(v5 + v3 + 12); if ( v6 ) { v7 = *(_DWORD *)(v6 + 38); if ( v7 == 21 || v7 == 96 ) goto LABEL_70; } } *(_BYTE *)(a2 + 3278) |= 2u; break; case 0x14: *(_DWORD *)(a2 + 2524) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x58: *(_DWORD *)(a2 + 2524) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x15: *(_DWORD *)(a2 + 2584) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x4E: *(_DWORD *)(a2 + 2584) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x16: *(_DWORD *)(a2 + 2588) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x55: *(_DWORD *)(a2 + 2588) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x17: *(_DWORD *)(a2 + 2596) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x19: *(_BYTE *)(a2 + 3278) |= 4u; break; case 0x1F: *(_DWORD *)(a2 + 2624) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x20: *(_DWORD *)(a2 + 2628) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x21: *(_DWORD *)(a2 + 2632) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x22: *(_DWORD *)(a2 + 2576) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x50: *(_DWORD *)(a2 + 2576) -= *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x23: *(_DWORD *)(a2 + 2384) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x24: *(_DWORD *)(a2 + 2392) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x25: *(_DWORD *)(a2 + 2460) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x27: *(_DWORD *)(a2 + 2448) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2452) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2456) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2460) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2464) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x77: *(_DWORD *)(a2 + 2244) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2248) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2252) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2256) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_DWORD *)(a2 + 2260) += *(_DWORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x2F: *(_WORD *)(a2 + 3286) = *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x46: *(_WORD *)(a2 + 3266) += *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x4D: *(_WORD *)(a2 + 3266) -= *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x45: *(_WORD *)(a2 + 3270) += *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x4C: *(_WORD *)(a2 + 3270) -= *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x44: *(_WORD *)(a2 + 3266) += *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3268) += *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3270) += *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3272) += *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3264) += *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x4B: *(_WORD *)(a2 + 3266) -= *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3268) -= *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3270) -= *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3272) -= *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); *(_WORD *)(a2 + 3264) -= *(_WORD *)(v4 + 36 * *((_BYTE *)v2 + 24) + v3 + 20); break; case 0x48: *(_WORD *)(a2 + 3274) += *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x47: v8 = *(_DWORD *)(v5 + v3 + 12); if ( v8 && *(_DWORD *)(v8 + 38) == 85 ) *(_WORD *)(a2 + 3276) += *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x31: LABEL_70: *(_BYTE *)(a2 + 3278) |= 1u; break; case 0x38: *(_DWORD *)(a2 + 2640) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x3D: *(_WORD *)(a2 + 3282) += *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x3C: *(_WORD *)(a2 + 3280) += *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x3A: *(_WORD *)(a2 + 3284) = *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x66: *(_WORD *)(a2 + 3494) = *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x67: *(_WORD *)(a2 + 3492) = *(_WORD *)(v4 + v5 + v3 + 20); break; case 0x74: *(_DWORD *)(a2 + 2636) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x71: *(_DWORD *)(a2 + 2444) += *(_DWORD *)(v4 + v5 + v3 + 20); break; case 0x78: *(_DWORD *)(a2 + 3496) += *(_DWORD *)(v4 + v5 + v3 + 20); break; default: break; } v4 += 8; } while ( v4 < 0x20 ); sub_50F0A0((char *)v2 + 96, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (004082D0) -------------------------------------------------------- int __stdcall sub_4082D0(int a1, int a2, int a3) { void *v3; // eax@5 int v4; // ST04_4@5 int v5; // eax@5 char v7; // [sp+8h] [bp-1Ch]@5 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_PreAttachObject"; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_PreAttachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_PreAttachObject"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a2 && a1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1160))(a2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 2256))(a2); sub_437780(&dword_87B264, a2); v3 = off_849C18; *(_WORD *)off_849C18 = 9302; *((_WORD *)v3 + 1) = *(_WORD *)(a2 + 4); sub_4287B0(&v7, &off_849C18, 4); v4 = *(_DWORD *)(a2 + 102); LOBYTE(v9) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v5, v4, 0, 0, (int)&v7, 1, 65535); LOBYTE(v9) = 0; sub_428A70(&v7); --dword_750CB8; } else { --dword_750CB8; } v9 = -1; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_PreAttachObject"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00408410) -------------------------------------------------------- int __thiscall sub_408410(int this, int a2, int a3) { sub_401F10(this, a2, a3); sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateElementRecover::ase_DetachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateElementRecover::ase_DetachObject"; dword_750AB8[dword_750CB8++] = -1; if ( a3 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 3404))(a3, 0); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateElementRecover::ase_DetachObject"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004084E0) -------------------------------------------------------- int __thiscall sub_4084E0(int this, int a2, int a3) { sub_401F10(this, a2, a3); sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_DetachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_DetachObject"; dword_750AB8[dword_750CB8++] = -1; if ( a3 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 3404))(a3, 0); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateReinforcedMove::ase_DetachObject"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004085B0) -------------------------------------------------------- int __thiscall sub_4085B0(void *this, int a2) { void *v2; // esi@1 bool v3; // zf@1 int v4; // eax@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 8) == 0; *((_DWORD *)v2 + 7) = a2; if ( v3 ) { LOBYTE(v4) = sub_405050(v2, 0, *(_DWORD *)a2 + 44) && sub_405050(v2, 1, *(_DWORD *)a2 + 76) && sub_405050(v2, 2, *(_DWORD *)a2 + 108) && sub_405050(v2, 3, *(_DWORD *)a2 + 140) && sub_405050(v2, 4, *(_DWORD *)a2 + 172); v4 = (unsigned __int8)v4; if ( !(_BYTE)v4 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain", v4); *((_DWORD *)v2 + 8) = 0; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004086E0) -------------------------------------------------------- int __thiscall sub_4086E0(void *this, int a2) { void *v2; // esi@1 bool v3; // zf@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 4) == 0; *((_DWORD *)v2 + 3) = a2; if ( v3 ) { v4 = (unsigned __int8)sub_405190(v2, *(_DWORD *)a2 + 44); if ( !(_BYTE)v4 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain", v4); *((_DWORD *)v2 + 4) = 0; } } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004087B0) -------------------------------------------------------- char __thiscall sub_4087B0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@2 int v5; // eax@6 int v6; // ecx@6 int v8; // [sp-4h] [bp-20h]@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_IsMine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_IsMine"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 1) != a3 || (v4 = *((_DWORD *)v3 + 2)) == 0 || !a2 ) { --dword_750CB8; goto LABEL_10; } if ( *(_WORD *)(v4 + 4) != *(_WORD *)(a2 + 4) ) { --dword_750CB8; LABEL_10: v8 = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_IsMine"; v6 = (int)&unk_D020420; goto LABEL_11; } v5 = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); v8 = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_IsMine"; v6 = (int)&unk_D020420; if ( v5 == *((_DWORD *)v3 + 3) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_IsMine"); return 1; } --dword_750CB8; LABEL_11: sub_467660(v6, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004088C0) -------------------------------------------------------- unsigned int __thiscall sub_4088C0(void *this) { void *v1; // esi@1 unsigned int v2; // ecx@1 unsigned int v3; // esi@2 unsigned int result; // eax@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 8); --dword_750CB8; if ( dword_14D129E8 >= v2 ) { sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"); result = 0; } else { v3 = 1000 * (v2 - dword_14D129E8 + 9) / 0xA; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"); result = v3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00408990) -------------------------------------------------------- int __thiscall sub_408990(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@3 int result; // eax@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12); if ( v3 ) { switch ( *(_DWORD *)(v3 + 38) ) { case 0x16: v4 = *((_WORD *)v2 + 3695); break; case 0x21: v4 = *((_WORD *)v2 + 3693); break; case 0x22: v4 = *((_WORD *)v2 + 3694); break; case 0x53: v4 = *((_WORD *)v2 + 3692); break; case 0x54: v4 = *((_WORD *)v2 + 3696); break; default: goto LABEL_9; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); result = v4; } else { LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (00408B10) -------------------------------------------------------- char __stdcall sub_408B10(int a1, int a2) { int v2; // eax@1 signed int v3; // edi@1 char result; // al@3 int v5; // esi@5 int v6; // [sp+28h] [bp+8h]@5 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AbstateCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_AbstateCheck"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = 0; if ( *(_DWORD *)(*(_DWORD *)(a1 + 4) + 263) > 1u || *(_DWORD *)(*(_DWORD *)a1 + 58) != 2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AbstateCheck"); LABEL_3: result = 1; } else { v6 = 0; v5 = v2 + 64; do { if ( *(_DWORD *)v5 != 792 ) { ++v6; if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a2 + 2668))( a2, *(_DWORD *)v5, *(_DWORD *)(v5 + 4)) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AbstateCheck"); return 1; } } ++v3; v5 += 12; } while ( v3 < 4 ); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AbstateCheck"); if ( !v6 ) goto LABEL_3; result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00408C60) -------------------------------------------------------- char __stdcall sub_408C60(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_smo_CanEnchant"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_smo_CanEnchant"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_smo_CanEnchant"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00408CB0) -------------------------------------------------------- char __userpurge sub_408CB0(int a1, int a2, int a3, int a4, int a5) { int v5; // ebx@1 __int16 v7; // ax@5 void *v8; // esi@5 int v9; // edi@6 int v10; // ecx@7 int v11; // ST1C_4@10 void (__thiscall *v12)(_DWORD); // eax@10 int v13; // ecx@10 int v14; // ST1C_4@14 int v15; // [sp-8h] [bp-18h]@4 int v16; // [sp-4h] [bp-14h]@4 int v17; // [sp+Ch] [bp-4h]@6 v5 = a3; if ( !a3 || !a4 ) return 0; v16 = a2; v15 = a1; if ( !sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 105) ) return sub_406C80(v5, a4, a5); v7 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v5 + 4)] + 36 * *(_BYTE *)(v5 + 24) + 12), 105); v8 = sub_447910((int)&unk_132577A0, v7); if ( v8 ) { v9 = sub_54DF90(&unk_13253630, (int)&v17, 6); if ( v9 ) { v10 = sub_401A80(v5); if ( !v10 ) { sub_555DF0(&unk_13253630, v17, 0, 4); return 0; } LOWORD(a3) = 0; if ( *((_BYTE *)v8 + 272) == 1 ) { v11 = *(_DWORD *)v9; (*(void (__stdcall **)(void *, _DWORD, int *, int, int))(*(_DWORD *)v10 + 2956))( v8, *(_DWORD *)(a4 + 102), &a3, v15, v16); v12 = *(void (__thiscall **)(_DWORD))(v11 + 2008); v13 = v9; LABEL_11: v12(v13); return sub_406C80(v5, a4, a5); } if ( *((_BYTE *)v8 + 440) == 1 ) { v14 = *(_DWORD *)v9; (*(void (__stdcall **)(void *, _DWORD, int *, int, int))(*(_DWORD *)v10 + 2956))( v8, *(_DWORD *)(a4 + 102), &a3, v15, v16); v12 = *(void (__thiscall **)(_DWORD))(v14 + 2012); v13 = v9; goto LABEL_11; } sub_555DF0(&unk_13253630, v17, 0, 4); } } return 0; } // 408CB0: could not find valid save-restore pair for edi // 408CB0: could not find valid save-restore pair for esi // 87150C: using guessed type int dword_87150C[]; //----- (00408E20) -------------------------------------------------------- int __stdcall sub_408E20(int a1) { int v1; // eax@2 int v2; // eax@3 sub_4675D0( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_DamegeIntercept"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_DamegeIntercept"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) { v1 = *(_DWORD *)(a1 + 84); if ( v1 <= 0 || (v2 = v1 - 1, *(_DWORD *)(a1 + 84) = v2, v2 <= 0) ) *(_DWORD *)(a1 + 32) = dword_14D129E8; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_DamegeIntercept"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00408EC0) -------------------------------------------------------- int __stdcall sub_408EC0(int a1, int a2) { signed int v2; // ebx@1 char v3; // al@3 unsigned __int16 v4; // ax@7 int v5; // eax@7 int v6; // eax@8 int v7; // ebx@11 int v8; // ebx@13 int v9; // ST04_4@13 int v10; // eax@13 char v12; // [sp+14h] [bp-660h]@11 int (__stdcall **v13)(int, int, int); // [sp+18h] [bp-65Ch]@13 unsigned int v14; // [sp+664h] [bp-10h]@1 int v15; // [sp+670h] [bp-4h]@1 int v16; // [sp+674h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorExpUpRate::sasa_DetachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorExpUpRate::sasa_DetachObject"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( !a1 || !a2 || (v3 = *(_BYTE *)a1, *(_BYTE *)a1 & 1) || v3 & 2 || v3 & 4 ) { --dword_750CB8; } else { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 52) == 1 ) { v4 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 52); v5 = sub_4012D0((int)&unk_877138, v4); if ( v5 ) { v6 = *(_DWORD *)v5; if ( v6 ) (*(void (__thiscall **)(int, int, _DWORD, signed int, signed int))(*(_DWORD *)a2 + 1604))( a2, a2, *(_DWORD *)(v6 + 34), 1, 1); } } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 54) == 1 ) { v7 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 55); sub_4C0E10(&v12, a2, 1, 0); LOBYTE(v15) = 1; sub_551C80(a2, (int)&v12, (_UNKNOWN *)v7); sub_401AC0(a1, a2, (int)&v12, 54); LOBYTE(v15) = 0; sub_4C11C0(&v12); v2 = -1; } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 53) == 1 ) { v8 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 55); sub_401F90(&v13, a2); v9 = *(_DWORD *)(a2 + 102); LOBYTE(v15) = 2; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v10, v9, (_UNKNOWN *)v8, 0, (int)&v13, 0, 65535); sub_401AC0(a1, a2, (int)&v13, 53); LOBYTE(v15) = 0; v13 = &off_69FD50; sub_4C11C0(&v13); v2 = -1; } --dword_750CB8; } v15 = v2; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorExpUpRate::sasa_DetachObject"); } // 69FD50: using guessed type int (__stdcall *off_69FD50)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; //----- (00409160) -------------------------------------------------------- int __stdcall sub_409160(int a1, int a2) { signed int v2; // ebx@1 char v3; // al@3 unsigned __int16 v4; // ax@7 int v5; // eax@7 int v6; // eax@8 int v7; // ebx@11 int v8; // ebx@13 int v9; // ST04_4@13 int v10; // eax@13 char v12; // [sp+14h] [bp-660h]@11 int (__stdcall **v13)(int, int, int); // [sp+18h] [bp-65Ch]@13 unsigned int v14; // [sp+664h] [bp-10h]@1 int v15; // [sp+670h] [bp-4h]@1 int v16; // [sp+674h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorDropUpRate::sasa_DetachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorDropUpRate::sasa_DetachObject"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( !a1 || !a2 || (v3 = *(_BYTE *)a1, *(_BYTE *)a1 & 1) || v3 & 2 || v3 & 4 ) { --dword_750CB8; } else { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 52) == 1 ) { v4 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 52); v5 = sub_4012D0((int)&unk_877138, v4); if ( v5 ) { v6 = *(_DWORD *)v5; if ( v6 ) (*(void (__thiscall **)(int, int, _DWORD, signed int, signed int))(*(_DWORD *)a2 + 1604))( a2, a2, *(_DWORD *)(v6 + 34), 1, 1); } } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 54) == 1 ) { v7 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 55); sub_4C0E10(&v12, a2, 1, 0); LOBYTE(v15) = 1; sub_551C80(a2, (int)&v12, (_UNKNOWN *)v7); sub_401AC0(a1, a2, (int)&v12, 54); LOBYTE(v15) = 0; sub_4C11C0(&v12); v2 = -1; } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 53) == 1 ) { v8 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 55); sub_401F90(&v13, a2); v9 = *(_DWORD *)(a2 + 102); LOBYTE(v15) = 2; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v10, v9, (_UNKNOWN *)v8, 0, (int)&v13, 0, 65535); sub_401AC0(a1, a2, (int)&v13, 53); LOBYTE(v15) = 0; v13 = &off_69FD50; sub_4C11C0(&v13); v2 = -1; } --dword_750CB8; } v15 = v2; return sub_467660( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorDropUpRate::sasa_DetachObject"); } // 69FD50: using guessed type int (__stdcall *off_69FD50)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; //----- (00409400) -------------------------------------------------------- void __stdcall sub_409400(int a1, int a2, int a3, int a4) { int v4; // esi@1 unsigned int v5; // edi@6 int v6; // ebx@6 unsigned int v7; // edx@11 bool v8; // sf@11 int v9; // [sp+Ch] [bp+8h]@5 v4 = a1; if ( a1 ) { if ( a2 ) { if ( a3 ) { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115) ) { v9 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115); if ( v9 ) { v5 = (unsigned int)(2 * (5 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1740))(a2) + 600)) >> 3; v6 = sub_402710(a2, a3); if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 118) == 1 ) { if ( v6 <= v5 * v5 ) return; goto LABEL_11; } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 117) == 1 && v6 <= v5 * v5 ) { LABEL_11: v7 = (unsigned int)((unsigned int)(v9 * *(_DWORD *)a4) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v8 = ((*(_DWORD *)a4 - v7) & 0x80000000u) != 0; *(_DWORD *)a4 -= v7; if ( v8 ) *(_DWORD *)a4 = 0; return; } } } } } } } // 87150C: using guessed type int dword_87150C[]; //----- (00409520) -------------------------------------------------------- void __stdcall sub_409520(int a1, int a2, int a3, int a4) { int v4; // esi@1 unsigned int v5; // edi@6 int v6; // ebx@6 unsigned int v7; // edx@11 bool v8; // sf@11 int v9; // [sp+Ch] [bp+8h]@5 v4 = a1; if ( a1 ) { if ( a2 ) { if ( a3 ) { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115) ) { v9 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 115); if ( v9 ) { v5 = (unsigned int)(2 * (5 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1740))(a3) + 600)) >> 3; v6 = sub_402710(a3, a2); if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 118) == 1 ) { if ( v6 <= v5 * v5 ) return; goto LABEL_11; } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 117) == 1 && v6 <= v5 * v5 ) { LABEL_11: v7 = (unsigned int)((unsigned int)(v9 * *(_DWORD *)a4) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v8 = ((*(_DWORD *)a4 - v7) & 0x80000000u) != 0; *(_DWORD *)a4 -= v7; if ( v8 ) *(_DWORD *)a4 = 0; return; } } } } } } } // 87150C: using guessed type int dword_87150C[]; //----- (00409640) -------------------------------------------------------- char __thiscall sub_409640(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; result = 1; } else { result = 0; } return result; } //----- (00409670) -------------------------------------------------------- char __thiscall sub_409670(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; result = 1; } else { result = 0; } return result; } //----- (004096A0) -------------------------------------------------------- char __thiscall sub_4096A0(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x74u); result = 1; } else { result = 0; } return result; } //----- (004096E0) -------------------------------------------------------- int __cdecl sub_4096E0(int a1) { int result; // eax@2 int v2; // eax@3 if ( a1 ) { v2 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v2 ) { while ( (_UNKNOWN *)v2 != &unk_132541BC ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_6; } result = a1; } else { LABEL_6: result = 0; } } else { result = 0; } return result; } //----- (00409730) -------------------------------------------------------- int __cdecl sub_409730(int a1) { int result; // eax@2 int v2; // eax@3 if ( a1 ) { v2 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v2 ) { while ( (_UNKNOWN *)v2 != &unk_132541F4 ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_6; } result = a1; } else { LABEL_6: result = 0; } } else { result = 0; } return result; } //----- (00409780) -------------------------------------------------------- char __thiscall sub_409780(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6A0504; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); //----- (00409910) -------------------------------------------------------- int __thiscall sub_409910(int this, void *a2) { int v2; // edi@1 int result; // eax@1 unsigned int v4; // edx@5 int v5; // esi@5 v2 = this; result = *(_WORD *)(this + 4); if ( (unsigned __int16)result < word_877020 ) { result = *(_DWORD *)(dword_877024 + 12 * result); if ( result ) { result = *(_DWORD *)result; if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)result + 12))(result); if ( !(_BYTE)result ) { v4 = (unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 32) - dword_14D129E8 + 9)) >> 32; v5 = 1000 * (((signed int)v4 >> 2) + (v4 >> 31)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1008))( a2, *(_DWORD *)(v2 + 4), v5, 0); result = sub_4055D0(a2, *(_DWORD *)(v2 + 4), v5, *(_BYTE *)(v2 + 24)); } } } } return result; } // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; // 14D129E8: using guessed type int dword_14D129E8; //----- (004099A0) -------------------------------------------------------- int __thiscall sub_4099A0(int this) { int v1; // ecx@1 int v2; // eax@2 int v3; // eax@5 int result; // eax@6 v1 = *(_WORD *)(this + 4); if ( (unsigned __int16)v1 < word_877020 && (v2 = *(_DWORD *)(dword_877024 + 12 * v1)) != 0 && *(_DWORD *)v2 ) { if ( (unsigned __int16)v1 < word_877020 && (v3 = *(_DWORD *)(dword_877024 + 12 * v1)) != 0 ) result = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v3 + 12))(*(_DWORD *)v3); else result = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(v0 + 12))(0); } else { result = 0; } return result; } // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; //----- (00409A00) -------------------------------------------------------- int __thiscall sub_409A00(void *this, int a2) { void *v2; // esi@1 int (__stdcall **v4)(int, int); // [sp+8h] [bp-9Ch]@1 char *v5; // [sp+Ch] [bp-98h]@1 int (__thiscall *v6)(void *, int, int, int); // [sp+10h] [bp-94h]@1 char *v7; // [sp+14h] [bp-90h]@1 int v8; // [sp+18h] [bp-8Ch]@1 __int16 v9; // [sp+1Ch] [bp-88h]@1 char v10; // [sp+20h] [bp-84h]@1 int v11; // [sp+24h] [bp-80h]@1 char v12; // [sp+30h] [bp-74h]@1 int v13; // [sp+34h] [bp-70h]@1 char v14; // [sp+44h] [bp-60h]@1 int v15; // [sp+50h] [bp-54h]@1 int v16; // [sp+58h] [bp-4Ch]@1 int v17; // [sp+60h] [bp-44h]@1 int v18; // [sp+68h] [bp-3Ch]@1 int v19; // [sp+70h] [bp-34h]@1 char v20; // [sp+80h] [bp-24h]@1 unsigned int v21; // [sp+94h] [bp-10h]@1 int v22; // [sp+A0h] [bp-4h]@1 int v23; // [sp+A4h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v2 = this; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v14); v22 = 0; sub_50EB30((int)&v20); v11 = a2; v15 = 0; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v12 = 0; v13 = 0; v22 = 1; v4 = &off_6A050C; v5 = (char *)v2 + 3364; v6 = sub_4064F0; v7 = &v10; v8 = 0; v9 = -1; LOBYTE(v22) = 2; sub_43C470((int)((char *)v2 + 3364), (int)&v4); v4 = &off_6A04FC; v22 = 3; nullsub_2(&v20); v22 = -1; nullsub_2(&v14); return v8; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A050C: using guessed type int (__stdcall *off_6A050C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00409B00) -------------------------------------------------------- char __thiscall sub_409B00(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateHide::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateHide::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; sub_406840((void *)a2, a3, a4, a5); if ( !a5 ) *(_BYTE *)(*(_DWORD *)(a2 + 118) + 4) = *((_BYTE *)v5 + 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateHide::ase_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00409BC0) -------------------------------------------------------- int __thiscall sub_409BC0(void *this, int a2, int a3, int a4, char a5, int a6) { int v6; // esi@1 int v7; // eax@2 int v8; // ebx@7 unsigned __int16 v9; // di@8 void *v10; // edi@9 int v11; // eax@9 int v12; // ST04_4@12 int v13; // eax@12 void *v14; // ecx@12 unsigned __int16 v15; // di@13 void *v16; // edi@14 int v17; // eax@14 int v18; // ST04_4@17 int v19; // eax@17 int v20; // ecx@19 __int16 v21; // di@19 unsigned __int16 v22; // bx@20 int v23; // edx@21 int v24; // ecx@22 int v25; // ecx@24 int v26; // eax@26 int v27; // eax@29 int v28; // eax@30 int v29; // edx@30 int v30; // ebx@30 int v31; // edi@30 int v32; // edi@31 int v33; // ST14_4@33 unsigned __int16 v34; // ax@33 void *v35; // ebx@36 int v36; // eax@36 int v37; // ST04_4@40 int v38; // eax@40 char v40; // [sp+10h] [bp-38h]@40 char v41; // [sp+1Ch] [bp-2Ch]@17 __int16 v42; // [sp+1Eh] [bp-2Ah]@21 char v43; // [sp+28h] [bp-20h]@12 int v44; // [sp+34h] [bp-14h]@1 int v45; // [sp+38h] [bp-10h]@19 int v46; // [sp+44h] [bp-4h]@1 v6 = (int)this; v44 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime"; dword_750AB8[dword_750CB8++] = -1; v46 = 0; if ( a2 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); sub_5A7F60(v7 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2532))(v6) ) { if ( !*(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1072))(v6) + 3280) ) goto LABEL_19; if ( a2 ) { if ( *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1072))(v6) + 3496) ) { v8 = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1072))(v6) + 3496); if ( sub_402710(v6, a2) > (unsigned int)(v8 * v8) ) { v9 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( v9 < *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1072))(v6) + 3280) ) { v10 = off_849C18; *(_WORD *)off_849C18 = 9276; *((_WORD *)v10 + 1) = *(_WORD *)(v6 + 4); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1256))(v6); *((_WORD *)v10 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2024))(v6); *((_WORD *)v10 + 4) = 0; v11 = a4; *((_BYTE *)v10 + 14) = 1; if ( v11 == 792 ) *((_WORD *)v10 + 5) = -1; else *((_WORD *)v10 + 5) = v11; sub_4287B0(&v43, &off_849C18, 15); v12 = *(_DWORD *)(v6 + 102); LOBYTE(v46) = 1; v13 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v6, v13, v12, 0, 0, (int)&v43, 1, 65535); v14 = &v43; LABEL_41: LOBYTE(v46) = 0; sub_428A70(v14); LABEL_42: v46 = -1; goto LABEL_43; } } } LABEL_19: v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1324))(v6); v21 = *(_WORD *)(*(_DWORD *)(v20 + 3372) + 12 * *(_WORD *)(v20 + 3378) + 4); v45 = v20; while ( 1 ) { v22 = *(_WORD *)(v20 + 3368); if ( v21 >= v22 ) break; v23 = *(_DWORD *)(v20 + 3372); v42 = *(_WORD *)(v23 + 12 * (unsigned __int16)v21 + 4); if ( *(_BYTE *)(v23 + 12 * (unsigned __int16)v21 + 8) ) v24 = *(_DWORD *)(v23 + 12 * (unsigned __int16)v21); else v24 = 0; v25 = dword_871508[3 * *(_DWORD *)(v24 + 4)]; if ( v21 < v22 && *(_BYTE *)(v23 + 12 * (unsigned __int16)v21 + 8) ) v26 = *(_DWORD *)(v23 + 12 * (unsigned __int16)v21); else v26 = 0; (*(void (__stdcall **)(int, int, int *))(*(_DWORD *)v25 + 48))(v6, v26, &a3); v20 = v45; v21 = v42; } v27 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 3048))(v6, a3); a3 = v27; if ( v27 <= 0 ) goto LABEL_42; v28 = (*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v6 + 3500))(v6, v27, 1); v29 = *(_DWORD *)v6; a3 = v28; v30 = (*(int (__thiscall **)(int))(v29 + 1628))(v6); v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1256))(v6) - v30; if ( v31 <= a3 ) { (*(void (__thiscall **)(int, int, int, signed int, signed int))(*(_DWORD *)v6 + 1468))(v6, a2, v31, 1000, 1); v32 = 0; } else { (*(void (__thiscall **)(int, int, int, signed int, _DWORD))(*(_DWORD *)v6 + 1472))(v6, a2, a3, 1000, 0); v32 = v31 - a3; if ( v32 ) { LABEL_33: v33 = a3; v34 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2024))(v6); sub_549760((int)"so_mobile_DamageOverTime", v34, v33, v32); if ( a6 ) *(_DWORD *)a6 = a3; if ( !a5 ) goto LABEL_42; v35 = off_849C18; *(_WORD *)off_849C18 = 9276; *((_WORD *)v35 + 1) = *(_WORD *)(v6 + 4); *((_DWORD *)v35 + 1) = v32; *((_WORD *)v35 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2024))(v6); v36 = a4; *((_WORD *)v35 + 4) = a3; *((_BYTE *)v35 + 14) = 0; if ( v36 == 792 ) *((_WORD *)v35 + 5) = -1; else *((_WORD *)v35 + 5) = v36; sub_4287B0(&v40, &off_849C18, 15); v37 = *(_DWORD *)(v6 + 102); LOBYTE(v46) = 3; v38 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v6, v38, v37, 0, 0, (int)&v40, 1, 65535); v14 = &v40; goto LABEL_41; } } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 2260))(v6, 1); goto LABEL_33; } v15 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( v15 >= *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1072))(v6) + 3280) ) goto LABEL_19; v16 = off_849C18; *(_WORD *)off_849C18 = 9276; *((_WORD *)v16 + 1) = *(_WORD *)(v6 + 4); *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1256))(v6); *((_WORD *)v16 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2024))(v6); v17 = a4; *((_WORD *)v16 + 4) = 0; *((_BYTE *)v16 + 14) = 1; if ( v17 == 792 ) *((_WORD *)v16 + 5) = -1; else *((_WORD *)v16 + 5) = v17; sub_4287B0(&v41, &off_849C18, 15); v18 = *(_DWORD *)(v6 + 102); LOBYTE(v46) = 2; v19 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v6, v19, v18, 0, 0, (int)&v41, 1, 65535); LOBYTE(v46) = 0; sub_428A70(&v41); } v46 = -1; LABEL_43: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (0040A090) -------------------------------------------------------- int __thiscall sub_40A090(void *this, int a2, signed int a3) { void *v3; // esi@1 int v4; // ebx@1 unsigned __int16 v5; // ax@1 unsigned __int16 v6; // di@2 int v7; // edx@3 int v8; // ecx@3 unsigned __int16 v9; // si@3 int v10; // edi@5 int v11; // esi@10 int v12; // ecx@14 bool v13; // zf@14 int v14; // ecx@14 unsigned __int16 v16; // [sp+10h] [bp-1Ch]@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_CureCurse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_CureCurse"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1324))(v3); v5 = *(_WORD *)(*(_DWORD *)(v4 + 3372) + 12 * *(_WORD *)(v4 + 3378) + 4); while ( 1 ) { v6 = *(_WORD *)(v4 + 3368); if ( v5 >= v6 ) break; v7 = *(_DWORD *)(v4 + 3372); v8 = v5; v9 = v5; v5 = *(_WORD *)(v7 + 12 * v5 + 4); v16 = v9; if ( v9 < v6 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v10 = *(_DWORD *)(v7 + 12 * v8); else v10 = 0; if ( *(_DWORD *)(*(_DWORD *)(dword_87150C[3 * *(_DWORD *)(v10 + 4)] + 36 * *(_BYTE *)(v10 + 24) + 12) + 38) == a2 ) { if ( v9 < *(_WORD *)(v4 + 3368) && *(_BYTE *)(v7 + 12 * v8 + 8) ) v11 = *(_DWORD *)(v7 + 12 * v8); else v11 = 0; if ( *(_BYTE *)(*(_DWORD *)dword_87150C[3 * *(_DWORD *)(v11 + 4)] + 43) <= a3 ) { if ( v16 >= *(_WORD *)(v4 + 3368) || (v12 = 3 * v8, v13 = *(_BYTE *)(v7 + 4 * v12 + 8) == 0, v14 = v7 + 4 * v12, v13) ) v20 = dword_14D129E8; else *(_DWORD *)(*(_DWORD *)v14 + 32) = dword_14D129E8; } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_CureCurse"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040A230) -------------------------------------------------------- char __userpurge sub_40A230(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8, int a9, int a10, int a11, int a12, int a13) { int v13; // esi@1 int v14; // ebx@2 __int16 **v15; // eax@2 __int16 *v16; // eax@2 int v17; // edx@5 int v18; // ecx@5 __int16 **v19; // eax@9 __int16 *v20; // eax@9 int v21; // eax@19 int v22; // eax@19 int v23; // edi@19 int v24; // eax@20 int v25; // eax@24 int v26; // ecx@27 unsigned __int64 v27; // qax@30 unsigned int v28; // edx@32 void *v29; // eax@35 void *v30; // ecx@35 signed int v31; // eax@35 int v32; // ebx@38 signed int v33; // edx@38 int v34; // eax@46 int v35; // eax@47 int v36; // eax@48 unsigned int v37; // edx@51 int v38; // eax@52 int v39; // eax@53 int v40; // eax@55 int v41; // ecx@55 int v42; // eax@58 void *v43; // eax@59 int v44; // ST04_4@59 int v45; // eax@59 char v46; // al@61 void *v47; // ecx@61 char v49; // [sp+10h] [bp-7Ch]@63 char v50; // [sp+3Ch] [bp-50h]@61 char v51; // [sp+68h] [bp-24h]@59 int v52; // [sp+74h] [bp-18h]@1 void *v53; // [sp+78h] [bp-14h]@2 unsigned __int8 v54; // [sp+7Fh] [bp-Dh]@4 int v55; // [sp+88h] [bp-4h]@1 int v56; // [sp+A8h] [bp+1Ch]@48 int v57; // [sp+B4h] [bp+28h]@38 signed int v58; // [sp+B4h] [bp+28h]@55 v13 = a1; v52 = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Set"; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Set"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Set"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)v13 &= 0xF8u; v55 = 0; if ( !a7 || (v14 = a5, v15 = &a7[9 * a5 + 3], v53 = v15, (v16 = *v15) == 0) ) { --dword_750CB8; v55 = -1; goto LABEL_70; } if ( *a7 ) { v54 = *((_BYTE *)*a7 + 288); if ( v54 ) { v17 = a11; v18 = a11 - *(_DWORD *)((char *)v16 + 43); v53 = (void *)v54; if ( a5 < *(_BYTE *)(v13 + 24) + 1 ) { a5 = *(_BYTE *)(v13 + 24) + 1; v14 = *(_BYTE *)(v13 + 24) + 1; } if ( v14 > (signed int)v53 ) { a5 = (int)v53; v14 = (int)v53; } v19 = &a7[9 * v14 + 3]; v53 = v19; v20 = *v19; if ( !v20 ) goto LABEL_18; if ( !a11 ) goto LABEL_13; a11 = v18 + *(_DWORD *)((char *)v20 + 43); } } v17 = a11; LABEL_13: dword_871500 = v14; if ( *(_BYTE *)(v13 + 24) > v14 ) { if ( *a7 && *((_BYTE *)*a7 + 256) == 45 ) { if ( a3 ) (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(2, 66, 4052); } goto LABEL_18; } v21 = *(_DWORD *)(*a7 + 17); *(_DWORD *)(v13 + 4) = v21; dword_87150C[3 * v21] = (int)a7; v22 = *(_WORD *)(v13 + 4); v23 = a8; if ( (unsigned __int16)v22 < word_877020 ) { v24 = *(_DWORD *)(dword_877024 + 12 * v22); if ( v24 ) { if ( *(_DWORD *)v24 ) { (*(void (__stdcall **)(int, int, int))(**(_DWORD **)v24 + 24))(a3, a8, v14); v17 = a11; } } } *(_DWORD *)(v13 + 8) = a3; if ( a3 ) { v25 = (*(int (**)(void))(*(_DWORD *)a3 + 836))(); v17 = a11; } else { v25 = -1; } *(_BYTE *)(v13 + 24) = v14; *(_DWORD *)(v13 + 12) = v25; *(_DWORD *)(v13 + 28) = a6; if ( v17 ) { *(_DWORD *)(v13 + 32) = v17; if ( (unsigned int)v17 <= 0xEA60 ) v28 = (unsigned int)((unsigned int)(10 * v17) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; else v28 = 10 * ((unsigned int)((unsigned int)v17 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_DWORD *)(v13 + 32) = v28; v27 = (unsigned int)(*(_DWORD *)(v13 + 32) * sub_50E7F0(dword_13231278, 4)) * (unsigned __int64)(unsigned int)&unk_10624DD3; } else { v26 = *(_DWORD *)(*(_DWORD *)v53 + 43) + a9 + 999; *(_DWORD *)(v13 + 32) = v26; if ( (unsigned int)v26 <= 0xEA60 ) *(_DWORD *)(v13 + 32) = (unsigned int)((unsigned int)(10 * v26) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; else *(_DWORD *)(v13 + 32) = 10 * ((unsigned int)((unsigned int)v26 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v27 = (unsigned int)(*(_DWORD *)(v13 + 32) * sub_50E7F0(dword_13231278, 4)) * (unsigned __int64)(unsigned int)&unk_10624DD3; } *(_DWORD *)(v13 + 32) = HIDWORD(v27) >> 6; *(_DWORD *)(v13 + 32) += a6; v29 = sub_4A2240((int)&unk_D73D278, **a7); v30 = v53; *(_DWORD *)(v13 + 112) = v29; word_871510[6 * *(_DWORD *)(v13 + 4)] = *(_WORD *)(*(_DWORD *)v30 + 38); word_871512[6 * *(_DWORD *)(v13 + 4)] = *(_BYTE *)(*(_DWORD *)v30 + 42); v31 = *(_DWORD *)(*(_DWORD *)v30 + 38); if ( v31 >= 120 ) dword_871508[3 * *(_DWORD *)(v13 + 4)] = (int)dword_873A28; else dword_871508[3 * *(_DWORD *)(v13 + 4)] = dword_873BCC[v31]; v32 = 10 * sub_415C60(v30, 26); v33 = (signed int)((unsigned __int64)(v32 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v57 = dword_14D129E8 - (v33 + ((unsigned int)v33 >> 31)); if ( (unsigned __int8)sub_4099A0(v13) && !*(_DWORD *)(v13 + 48) && (!sub_4065A0((void *)v13, 0, (int)(*a7 + 22)) || !sub_4065A0((void *)v13, 1, (int)(*a7 + 38)) || !sub_4065A0((void *)v13, 2, (int)(*a7 + 54)) || !sub_4065A0((void *)v13, 3, (int)(*a7 + 70)) || !sub_4065A0((void *)v13, 4, (int)(*a7 + 86))) ) { *(_DWORD *)(v13 + 48) = 0; --dword_750CB8; v55 = -1; goto LABEL_70; } v34 = *(_WORD *)(v13 + 4); if ( (unsigned __int16)v34 < word_877020 && (v35 = *(_DWORD *)(dword_877024 + 12 * v34)) != 0 && (v36 = *(_DWORD *)v35, (v56 = v36) != 0) && ((*(void (__thiscall **)(int, __int16 **))(*(_DWORD *)v36 + 8))(v36, a7), (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v56 + 12))()) ) { *(_DWORD *)(v13 + 40) = 50; *(_DWORD *)(v13 + 36) = v57; } else { v37 = (unsigned int)((unsigned int)v32 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)(v13 + 40) = v37; *(_DWORD *)(v13 + 36) = v57 + v37; } v38 = *(_WORD *)(v13 + 4); if ( (unsigned __int16)v38 >= word_877020 || (v39 = *(_DWORD *)(dword_877024 + 12 * v38)) == 0 || !*(_DWORD *)v39 ) { LABEL_18: --dword_750CB8; v55 = -1; LABEL_70: sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Set"); return 0; } v40 = sub_4066E0(v13); *(_DWORD *)(v13 + 84) = (*(int (__thiscall **)(int, __int16 **, int, int))(*(_DWORD *)v40 + 40))(v40, a7, a5, v23); sub_50E810(v13 + 96); sub_50EE50((void *)v13); v41 = 16; v58 = 16; while ( v23 && a3 ) { v42 = *(int *)((char *)&a7[9 * *(_BYTE *)(v13 + 24)] + v41); if ( v42 == 25 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v23 + 2780))(v23); v43 = off_849C18; *(_WORD *)off_849C18 = 9277; *((_WORD *)v43 + 1) = *(_WORD *)(v23 + 4); sub_4287B0(&v51, &off_849C18, 4); v44 = *(_DWORD *)(v23 + 102); LOBYTE(v55) = 1; v45 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v23, v45, v44, 0, 0, (int)&v51, 1, 65535); LOBYTE(v55) = 0; sub_428A70(&v51); } else { if ( v42 == 96 ) { sub_42A950((int)&v50, a3, v23, 0, 0, 0); LOBYTE(v55) = 2; *(_DWORD *)(v13 + 20) = sub_502E00((int)off_8551E4, a2, (int)&v50); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1240))(a3); v47 = &v50; LABEL_64: *(_BYTE *)(v13 + 16) = v46; LOBYTE(v55) = 0; nullsub_2(v47); goto LABEL_65; } if ( v42 == 98 ) { sub_42A950((int)&v49, a3, v23, 0, 0, 0); LOBYTE(v55) = 3; *(_DWORD *)(v13 + 20) = sub_502E00((int)off_8551E8, a2, (int)&v49); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1240))(a3); v47 = &v49; goto LABEL_64; } } LABEL_65: v41 = v58 + 8; v58 = v41; if ( (unsigned int)v41 >= 0x30 ) break; } if ( a13 ) { *(_DWORD *)(v13 + 88) = *(_DWORD *)a13; *(_DWORD *)(v13 + 92) = *(_DWORD *)(a13 + 4); } --dword_750CB8; v55 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Set"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); // 871500: using guessed type int dword_871500; // 871508: using guessed type int dword_871508[]; // 87150C: using guessed type int dword_87150C[]; // 871510: using guessed type __int16 word_871510[]; // 871512: using guessed type __int16 word_871512[]; // 873BCC: using guessed type int dword_873BCC[]; // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; // 13231278: using guessed type int dword_13231278[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040A820) -------------------------------------------------------- char __thiscall sub_40A820(void *this, int a2, int a3) { int v3; // eax@2 int v5; // eax@8 int v6; // esi@10 int v7; // esi@10 int (__thiscall *v8)(_DWORD); // eax@12 int v9; // eax@12 int v10; // eax@14 int v11; // eax@15 int v12; // [sp-Ch] [bp-C0h]@5 int v13; // [sp-8h] [bp-BCh]@5 int (__stdcall **v14)(int, int); // [sp+10h] [bp-A4h]@10 char *v15; // [sp+14h] [bp-A0h]@10 int (__thiscall *v16)(void *, int, int, int); // [sp+18h] [bp-9Ch]@10 char *v17; // [sp+1Ch] [bp-98h]@10 int v18; // [sp+20h] [bp-94h]@10 __int16 v19; // [sp+24h] [bp-90h]@10 void *v20; // [sp+2Ch] [bp-88h]@1 char v21; // [sp+30h] [bp-84h]@10 int v22; // [sp+34h] [bp-80h]@10 char v23; // [sp+40h] [bp-74h]@10 int v24; // [sp+44h] [bp-70h]@10 char v25; // [sp+54h] [bp-60h]@10 int v26; // [sp+60h] [bp-54h]@10 int v27; // [sp+68h] [bp-4Ch]@10 int v28; // [sp+70h] [bp-44h]@10 int v29; // [sp+78h] [bp-3Ch]@10 int v30; // [sp+80h] [bp-34h]@10 char v31; // [sp+90h] [bp-24h]@10 unsigned int v32; // [sp+A4h] [bp-10h]@1 int v33; // [sp+B0h] [bp-4h]@1 int v34; // [sp+B4h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v20 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateReset"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateReset"; dword_750AB8[dword_750CB8++] = -1; v33 = 0; if ( a3 < 792 ) { v3 = dword_8772F0[a3]; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a3); v3 = 0; } if ( v3 == 0 ) { v13 = a3; v12 = (int)"AbnormalStateContainer::AbnormalStateList::asl_AbstateReset : NULL stateid"; LABEL_6: sub_639100(&unk_86DDD8, v12, v13); LABEL_7: --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateReset"); return 0; } v5 = *(_DWORD *)v3; if ( v5 == 0 ) { v13 = a3; v12 = (int)"AbnormalStateContainer::AbnormalStateList::asl_AbstateReset : NULL statestr"; goto LABEL_6; } v6 = *(_DWORD *)(v5 + 34); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v25); LOBYTE(v33) = 1; sub_50EB30((int)&v31); v22 = v6; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v23 = 0; v24 = 0; v14 = &off_6A050C; v15 = (char *)v20 + 3364; v16 = sub_4064F0; v17 = &v21; v18 = 0; v19 = -1; LOBYTE(v33) = 3; sub_43C470((int)((char *)v20 + 3364), (int)&v14); v7 = v18; LOBYTE(v33) = 2; v14 = &off_6A04FC; if ( !v18 ) { LOBYTE(v33) = 4; nullsub_2(&v31); LOBYTE(v33) = 0; nullsub_2(&v25); goto LABEL_7; } v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2524); v20 = (void *)(dword_87150C[3 * *(_DWORD *)(v18 + 4)] + 36 * *(_BYTE *)(v18 + 24) + 12); v9 = v8(a2); if ( v20 == (void *)v9 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 2520))(a2, 0); v10 = *(_WORD *)(v7 + 4); if ( (unsigned __int16)v10 < word_877020 ) { v11 = *(_DWORD *)(dword_877024 + 12 * v10); if ( v11 ) { if ( *(_DWORD *)v11 ) (*(void (__stdcall **)(int, int))(**(_DWORD **)v11 + 32))(v7, a2); } } *(_DWORD *)(v7 + 32) = dword_14D129E8; (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1320))(a2); LOBYTE(v33) = 5; nullsub_2(&v31); LOBYTE(v33) = 0; nullsub_2(&v25); --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateReset"); return 1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A050C: using guessed type int (__stdcall *off_6A050C)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040AAA0) -------------------------------------------------------- char __thiscall sub_40AAA0(void *this) { void *v1; // ebx@1 unsigned __int16 v2; // di@1 int v3; // ecx@3 int v4; // eax@3 bool v5; // zf@3 int v6; // eax@3 int v7; // eax@4 int v8; // eax@7 int v9; // eax@9 v1 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 843) + 12 * *((_WORD *)v1 + 1689) + 4); while ( v2 < *((_WORD *)v1 + 1684) ) { v3 = *((_DWORD *)v1 + 843); v4 = v2; v2 = *(_WORD *)(v3 + 12 * v2 + 4); v5 = *(_BYTE *)(v3 + 12 * v4 + 8) == 0; v6 = v3 + 12 * v4; if ( !v5 ) { v7 = *(_DWORD *)v6; if ( v7 ) { if ( dword_87150C[3 * *(_DWORD *)(v7 + 4)] && *(_DWORD *)dword_87150C[3 * *(_DWORD *)(v7 + 4)] ) { v8 = *(_DWORD *)(*(_DWORD *)dword_87150C[3 * *(_DWORD *)(v7 + 4)] + 34); if ( v8 < 792 ) { v9 = dword_8772F0[v8]; if ( v9 && *(_DWORD *)(*(_DWORD *)v9 + 244) == 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"); return 1; } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v8); } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 8772F0: using guessed type int dword_8772F0[]; //----- (0040AC30) -------------------------------------------------------- char __thiscall sub_40AC30(void *this) { void *v1; // ebx@1 unsigned __int16 v2; // di@1 int v3; // ecx@3 int v4; // eax@3 bool v5; // zf@3 int v6; // eax@3 int v7; // eax@4 int v8; // eax@7 int v9; // eax@9 v1 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 843) + 12 * *((_WORD *)v1 + 1689) + 4); while ( v2 < *((_WORD *)v1 + 1684) ) { v3 = *((_DWORD *)v1 + 843); v4 = v2; v2 = *(_WORD *)(v3 + 12 * v2 + 4); v5 = *(_BYTE *)(v3 + 12 * v4 + 8) == 0; v6 = v3 + 12 * v4; if ( !v5 ) { v7 = *(_DWORD *)v6; if ( v7 ) { if ( dword_87150C[3 * *(_DWORD *)(v7 + 4)] && *(_DWORD *)dword_87150C[3 * *(_DWORD *)(v7 + 4)] ) { v8 = *(_DWORD *)(*(_DWORD *)dword_87150C[3 * *(_DWORD *)(v7 + 4)] + 34); if ( v8 < 792 ) { v9 = dword_8772F0[v8]; if ( v9 && *(_DWORD *)(*(_DWORD *)v9 + 244) != 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"); return 1; } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v8); } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 8772F0: using guessed type int dword_8772F0[]; //----- (0040ADC0) -------------------------------------------------------- int __thiscall sub_40ADC0(void *this, void *a2) { void *v2; // edi@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // dx@2 int v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // ST14_2@3 bool v8; // zf@4 int v9; // ecx@4 int v10; // ecx@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 843) + 12 * *((_WORD *)v2 + 1689) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 1684); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 843); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 >= v4 ) break; v8 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0; v9 = v5 + 12 * v6; if ( v8 ) break; v10 = *(_DWORD *)v9; if ( !v10 ) break; sub_409910(v10, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0040AEC0) -------------------------------------------------------- int __thiscall sub_40AEC0(void *this, int a2, int a3) { int v3; // ebx@1 int (__thiscall *v4)(_DWORD); // eax@1 int v5; // eax@1 int v6; // esi@2 unsigned int v7; // edx@3 unsigned int v8; // edi@6 int v9; // edi@7 signed int v10; // ecx@8 int v11; // eax@10 int v12; // ecx@10 _BYTE *v13; // ecx@10 int v14; // eax@14 int v15; // eax@15 int v16; // eax@21 int v17; // eax@24 int v18; // ecx@24 _BYTE *v19; // ecx@24 int v20; // esi@24 int v21; // eax@26 signed int v22; // edi@28 int v23; // eax@28 int v24; // edx@30 int (__stdcall **v26)(int, int); // [sp+10h] [bp-28h]@1 int v27; // [sp+14h] [bp-24h]@1 int v28; // [sp+18h] [bp-20h]@1 void *v29; // [sp+1Ch] [bp-1Ch]@1 int v30; // [sp+20h] [bp-18h]@1 unsigned int v31; // [sp+24h] [bp-14h]@4 int v32; // [sp+28h] [bp-10h]@2 int v33; // [sp+34h] [bp-4h]@1 char v34; // [sp+43h] [bp+Bh]@17 v29 = this; v28 = (int)"AbnormalStateContainer::AbstateListInObject::asl_Store"; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_Store"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateListInObject::asl_Store"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1184); v33 = 0; memcpy((void *)v4(a2), &unk_13244DF0, 0x63u); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1324))(v3); v26 = &off_6A0504; v27 = v5 + 3364; LOBYTE(v33) = 1; sub_43C470(v5 + 3364, (int)&v26); LOBYTE(v33) = 0; v26 = &off_6A04FC; v30 = 0; if ( *(_WORD *)(a3 + 4) > 0u ) { v6 = a3 + 8; v32 = a3 + 8; do { v7 = (unsigned int)((unsigned int)(10 * *(_DWORD *)(v6 + 1)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( dword_14D129E8 >= v7 ) v31 = dword_14D129E8 - v7; else v31 = 0; v8 = *(_WORD *)(v6 - 2); if ( dword_8772EC >= v8 ) { v9 = dword_8772E4 + 1452 * v8; if ( v9 && *(_DWORD *)v9 ) { v10 = 1; goto LABEL_9; } } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", *(_WORD *)(v6 - 2)); v9 = 0; } v10 = 0; LABEL_9: if ( v10 ) { v14 = *(_WORD *)(*(_DWORD *)v9 + 34); if ( (unsigned __int16)v14 < word_877020 ) v15 = *(_DWORD *)(dword_877024 + 12 * v14); else v15 = 0; v34 = 0; if ( v15 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v15 + 12))(*(_DWORD *)v15) ) v34 = 1; } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::AbnormalStateList::asl_Store : invalid abstate", *(_DWORD *)(*(_DWORD *)v9 + 34)); } v16 = *(_DWORD *)(v6 + 5); if ( v16 ) (*(void (__thiscall **)(int, int, _DWORD, _DWORD, int, int, _DWORD, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1592))( v3, v34 != 0 ? v3 : 0, *(_DWORD *)(*(_DWORD *)v9 + 34), *(_BYTE *)v6, v9, dword_14D129E8, 0, *(_WORD *)(v6 + 9), v16, 0, 0); else (*(void (__thiscall **)(int, int, _DWORD, _DWORD, int, unsigned int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1592))( v3, v34 != 0 ? v3 : 0, *(_DWORD *)(*(_DWORD *)v9 + 34), *(_BYTE *)v6, v9, v31, 0, *(_WORD *)(v6 + 9), 0, 0, 0); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); v18 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v18; v19 = &byte_85A2C0[256 * v18]; *(_DWORD *)v19 = *(_DWORD *)v17; *((_DWORD *)v19 + 1) = *(_DWORD *)(v17 + 4); *((_DWORD *)v19 + 2) = *(_DWORD *)(v17 + 8); *((_DWORD *)v19 + 3) = *(_DWORD *)(v17 + 12); *((_DWORD *)v19 + 4) = *(_DWORD *)(v17 + 16); v19[20] = 0; v20 = sub_409A00(v29, *(_DWORD *)(*(_DWORD *)v9 + 34)); if ( v20 ) { sub_50EA90(v20 + 96, v32 - 2); v21 = v32; *(_BYTE *)(v20 + 16) = *(_BYTE *)(v32 + 13); *(_DWORD *)(v20 + 20) = *(_DWORD *)(v21 + 14); } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::AbstateListInObject::asl_Store : Null abstate", *(_WORD *)(v32 - 2)); } if ( !v34 ) { v22 = *(_DWORD *)(*(_DWORD *)v9 + 34); v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1184))(v3); *(_BYTE *)(v22 / 8 + v23) |= 1 << v22 % 8; } v6 = v32; } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::AbnormalStateList::asl_Store : No dic", *(_WORD *)(v6 - 2)); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); *((_DWORD *)v13 + 4) = *(_DWORD *)(v11 + 16); v13[20] = 0; } v24 = *(_WORD *)(a3 + 4); v6 += 36; ++v30; v32 = v6; } while ( v30 < v24 ); } --dword_750CB8; v33 = -1; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_Store"); } // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 877020: using guessed type __int16 word_877020; // 877024: using guessed type int dword_877024; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040B250) -------------------------------------------------------- int __userpurge sub_40B250(double a1, int a2, int a3, int a4) { int result; // eax@2 int v5; // edi@5 int (__thiscall *v6)(_DWORD); // eax@7 int v7; // edi@10 int v8; // eax@10 int v9; // edi@13 int v10; // edi@15 signed int v11; // edx@18 int v12; // edi@18 unsigned __int8 v13; // ST10_1@18 signed int v14; // eax@18 signed int v15; // edx@20 int v16; // edi@20 unsigned __int8 v17; // ST10_1@20 signed int v18; // eax@20 char v19; // [sp+10h] [bp-68h]@20 char v20; // [sp+3Ch] [bp-3Ch]@18 int v21; // [sp+68h] [bp-10h]@1 int v22; // [sp+74h] [bp-4h]@18 v21 = 0; if ( a2 && a3 ) { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 27) == 1 ) { v21 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 27); v5 = v21 + sub_408990((void *)a3, a2); if ( v5 < 1 ) v5 = 1; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1256); v21 = v5; if ( v6(a3) <= (unsigned int)v5 ) v21 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1256))(a3) - 1; } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 67) == 1 ) { v7 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 67) + v21; v8 = v7 + sub_408990((void *)a3, a2); if ( v8 < 1 ) v8 = 1; v21 = v8; } v9 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 57); if ( v9 ) v21 += (unsigned int)((unsigned int)(v9 * (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1264))(a3)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v10 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 106); if ( v10 ) v21 += (unsigned int)((unsigned int)(v10 * (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1256))(a3)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 96) == 1 ) { v11 = (signed int)((unsigned __int64)(sub_415C60( (void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 96) * *(_DWORD *)(a2 + 20) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v12 = v11 + ((unsigned int)v11 >> 31); sub_42A950((int)&v20, 0, a3, 0, 0, a4); v13 = *(_BYTE *)(a2 + 16); v22 = 0; v14 = sub_502FF0((int)off_8551E4, a1, (int)&v20, v12, v13); v21 += v14; v22 = -1; nullsub_2(&v20); } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 98) == 1 ) { v15 = (signed int)((unsigned __int64)(sub_415C60( (void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 98) * *(_DWORD *)(a2 + 20) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v16 = v15 + ((unsigned int)v15 >> 31); sub_42A950((int)&v19, 0, a3, 0, 0, a4); v17 = *(_BYTE *)(a2 + 16); v22 = 1; v18 = sub_502FF0((int)off_8551E8, a1, (int)&v19, v16, v17); v21 += v18; v22 = -1; nullsub_2(&v19); } result = v21; } else { result = 0; } return result; } // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); // 87150C: using guessed type int dword_87150C[]; //----- (0040B560) -------------------------------------------------------- char __stdcall sub_40B560(int a1, int a2, int a3, int a4, int a5, char a6) { int v6; // edi@1 char result; // al@2 int v8; // eax@5 int v9; // esi@5 int v10; // ebx@7 int v11; // eax@7 unsigned int v12; // ecx@9 int v13; // ecx@10 int v14; // ebx@11 int v15; // eax@14 int v16; // esi@14 void *v17; // eax@18 void *v18; // eax@22 int v19; // eax@22 int v20; // [sp+4h] [bp-10h]@5 int v21; // [sp+8h] [bp-Ch]@7 int v22; // [sp+Ch] [bp-8h]@7 int i; // [sp+10h] [bp-4h]@11 int v24; // [sp+1Ch] [bp+8h]@11 v6 = a1; if ( a1 && a2 && a3 ) { v8 = dword_87150C[3 * *(_DWORD *)(a1 + 4)]; v9 = v8 + 36 * *(_BYTE *)(a1 + 24) + 12; v20 = v8 + 36 * *(_BYTE *)(a1 + 24) + 12; if ( v8 + 36 * *(_BYTE *)(a1 + 24) == -12 ) { sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::SubAbnormalStateActor::sasa_SetAbstateToArea NULL aeo_GetIndexArgument", v8 + 36 * *(_BYTE *)(a1 + 24) + 12); result = 0; } else { v10 = 0; v11 = v8 + 36 * *(_BYTE *)(a1 + 24) + 20; v22 = 0; v21 = v9 + 8; while ( 1 ) { if ( a4 == *(_DWORD *)(v11 - 4) ) { v12 = *(_WORD *)v11; if ( dword_8772EC < v12 ) { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", *(_WORD *)v11); LABEL_29: sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_SetAbstateToArea Over Abstate value ", *(_DWORD *)(v9 + 8 * v10 + 8)); return 0; } v13 = dword_8772E4 + 1452 * v12; if ( !v13 ) goto LABEL_29; v14 = *(_DWORD *)(*(_DWORD *)v13 + 34); v24 = 0; for ( i = 0; i < sub_4C0DC0(a3); ++i ) { if ( a5 && v24 >= a5 ) break; v15 = sub_4C0DD0(a3, i); v16 = v15; if ( v15 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v15 + 1156))(v15) != 3 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 40))(v16) ) { if ( a6 || (v17 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 1324))(v16), !sub_409A00(v17, v14)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v16 + 1604))( v16, a2, v14, 1, 1) ) { if ( sub_415C90( (void *)(dword_87150C[3 * *(_DWORD *)(v6 + 4)] + 36 * *(_BYTE *)(v6 + 24) + 12), 98) == 1 || sub_415C90( (void *)(dword_87150C[3 * *(_DWORD *)(v6 + 4)] + 36 * *(_BYTE *)(v6 + 24) + 12), 96) == 1 ) { v18 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 1324))(v16); v19 = sub_409A00(v18, v14); if ( v19 ) { *(_BYTE *)(v19 + 16) = *(_BYTE *)(v6 + 16); *(_DWORD *)(v19 + 20) = *(_DWORD *)(v6 + 20); } } ++v24; } } } } } } } v10 = v22 + 1; v11 = v21 + 8; v22 = v10; v21 += 8; if ( (unsigned int)v10 >= 4 ) break; v9 = v20; } result = 1; } } else { result = 0; } return result; } // 87150C: using guessed type int dword_87150C[]; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; //----- (0040B790) -------------------------------------------------------- char __stdcall sub_40B790(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ebx@1 char result; // al@2 int v6; // edi@4 int v7; // eax@7 char v8; // al@11 char v9; // bl@11 int v10; // [sp+2Ch] [bp+8h]@1 int v11; // [sp+30h] [bp+Ch]@4 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = a1; v10 = sub_402620(a1, *(_DWORD *)(a2 + 102)); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 996))(v3, 291) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 996))(a2, 499) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine"); result = 0; } else { v11 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 36 * *(_BYTE *)(v4 + 24) + 12), 27); v6 = v11 + sub_408990((void *)v3, v4); if ( v6 < 1 ) v6 = 1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1256))(v3) > (unsigned int)v6 ) v7 = v6; else v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1256))(v3) - 1; if ( v7 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1840))( v3, v10, v7, a3, 1, 0); v8 = sub_406C80(v4, v3, a3); --dword_750CB8; v9 = v8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine"); result = v9; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (0040B920) -------------------------------------------------------- int __userpurge sub_40B920(double a1, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@3 int v6; // edi@6 signed int v7; // eax@8 int v8; // ebx@8 int v9; // eax@8 int v10; // edi@8 int v11; // eax@8 int v13; // [sp-4h] [bp-24h]@2 int v14; // [sp+28h] [bp+8h]@8 __int16 **v15; // [sp+2Ch] [bp+Ch]@4 int v16; // [sp+2Ch] [bp+Ch]@8 sub_4675D0( (int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef"; dword_750AB8[dword_750CB8++] = -1; v4 = a3; if ( *(_BYTE *)(a3 + 24) < 2u ) { v5 = *(_DWORD *)(a3 + 4); if ( v5 < 792 ) { v15 = (__int16 **)dword_8772F0[v5]; } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(a3 + 4)); v15 = 0; } v6 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v4 + 4)] + 84), 51); if ( !v6 ) v6 = 1000; v7 = sub_4088C0((void *)v4); v8 = v7; v9 = v7 / v6; v10 = a2; sub_40A230( v4, a1, *(_DWORD *)(v4 + 8), *(_WORD *)(v4 + 4), 2, dword_14D129E8, v15, a2, 0, *(_DWORD *)(v4 + 84), 1000 * v9, 9, 0); v16 = *(_DWORD *)(v4 + 4) / 8; v14 = *(_DWORD *)(v4 + 4) % 8; v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1184))(v10); *(_BYTE *)(v16 + v11) |= 1 << v14; sub_4055D0((void *)v10, *(_DWORD *)(v4 + 4), v8, 2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 1008))(v10, *(_DWORD *)(v4 + 4), v8, 0); --dword_750CB8; v13 = (int)"AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef"; } else { --dword_750CB8; v13 = (int)"AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef"; } return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040BAC0) -------------------------------------------------------- void __stdcall sub_40BAC0(int a1, int a2) { __int16 v2; // bx@4 int v3; // eax@4 int v4; // edi@4 if ( a1 && a2 && sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 59) ) { v2 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 59); v3 = sub_409730(a2); v4 = v3; if ( v3 ) { sub_55E6E0((void *)v3); sub_4A2710(v4, v2, *(_DWORD *)(a1 + 4)); } } } // 87150C: using guessed type int dword_87150C[]; //----- (0040BB50) -------------------------------------------------------- void __thiscall sub_40BB50(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // eax@4 int v5; // edi@4 int v6; // eax@8 v3 = this; if ( a2 && a3 ) { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 62) ) { v4 = sub_4096E0(a3); v5 = v4; if ( !v4 ) return; if ( sub_55B830((void *)v4) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, v5, *(_DWORD *)(a2 + 4)); } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 59) ) { v6 = sub_409730(a3); if ( v6 ) sub_4A2710(v6, -1, *(_DWORD *)(a2 + 4)); } } } // 87150C: using guessed type int dword_87150C[]; //----- (0040BC10) -------------------------------------------------------- int __thiscall sub_40BC10(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 unsigned __int16 v5; // cx@1 unsigned __int16 v6; // dx@4 int v7; // ebx@5 unsigned __int16 v8; // di@5 int v9; // ecx@5 int v10; // esi@7 int v11; // edi@12 signed int v12; // ecx@14 void *v13; // esi@14 int v14; // eax@15 bool v15; // zf@15 int v16; // eax@15 int v17; // eax@16 int v18; // eax@20 unsigned __int16 v20; // [sp+10h] [bp-2Ch]@5 unsigned __int16 v21; // [sp+12h] [bp-2Ah]@5 void *v22; // [sp+20h] [bp-1Ch]@1 int v23; // [sp+2Ch] [bp-10h]@1 v3 = this; v22 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1324))(v3); v5 = *(_WORD *)(*(_DWORD *)(v4 + 3372) + 12 * *(_WORD *)(v4 + 3378) + 4); v23 = v4; while ( 1 ) { v6 = *(_WORD *)(v4 + 3368); if ( v5 >= v6 ) break; v7 = v5; v8 = v5; v9 = *(_DWORD *)(v4 + 3372); v20 = v8; v21 = *(_WORD *)(v9 + 12 * v7 + 4); if ( v8 < v6 && *(_BYTE *)(v9 + 12 * v7 + 8) ) v10 = *(_DWORD *)(v9 + 12 * v7); else v10 = 0; if ( *(_DWORD *)(*(_DWORD *)(dword_87150C[3 * *(_DWORD *)(v10 + 4)] + 36 * *(_BYTE *)(v10 + 24) + 12) + 38) == a2 ) { if ( v8 < v6 && *(_BYTE *)(v9 + 12 * v7 + 8) ) v11 = *(_DWORD *)(v9 + 12 * v7); else v11 = 0; v12 = 1000 * (*(_DWORD *)(v11 + 32) - dword_14D129E8); *(_DWORD *)(v11 + 32) += ((signed int)((unsigned __int64)(10 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v13 = off_849C18; *(_WORD *)off_849C18 = 9258; *(_DWORD *)((char *)v13 + 6) = a3 + v12 / 10; if ( v20 >= *(_WORD *)(v23 + 3368) || (v14 = *(_DWORD *)(v23 + 3372), v15 = *(_BYTE *)(v14 + 12 * v7 + 8) == 0, v16 = v14 + 12 * v7, v15) ) v17 = 0; else v17 = *(_DWORD *)v16; *(_DWORD *)((char *)v13 + 2) = *(_DWORD *)(v17 + 4); if ( sub_4C81E0(&off_849C18, 10) ) { v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v22 + 764))(v22); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v18 + 12))(v18, v22, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Inform : Packet Too Long", 10); } v4 = v23; } v5 = v21; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040BE40) -------------------------------------------------------- char __thiscall sub_40BE40(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // edx@2 int v6; // ecx@2 int v8; // edi@5 int v9; // edi@7 int v10; // edi@7 int v11; // ebx@7 unsigned __int16 v12; // di@8 unsigned __int16 v13; // dx@8 int v14; // ecx@10 int v15; // eax@10 int v16; // eax@11 bool v17; // zf@11 int v18; // ecx@11 int v19; // ecx@12 int v20; // eax@14 int v21; // ecx@14 int v22; // eax@17 int v23; // ecx@18 int v24; // eax@20 int v25; // [sp-4h] [bp-30h]@2 unsigned __int16 v26; // [sp+10h] [bp-1Ch]@10 int v27; // [sp+34h] [bp+8h]@7 int v28; // [sp+38h] [bp+Ch]@7 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_409A00(v3, a2); if ( v4 ) { v5 = *(_BYTE *)(v4 + 24); --dword_750CB8; v25 = (int)"AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; v6 = (int)&unk_D020420; if ( v5 > a3 ) { sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"); return 0; } } else { if ( a2 < 792 ) { v8 = dword_8772F0[a2]; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a2); v8 = 0; } v9 = v8 + 36 * a3 + 12; v27 = v9; v10 = *(_DWORD *)v9; v11 = *(_DWORD *)(v10 + 38); v28 = v10; if ( v11 != 38 ) { v12 = *((_WORD *)v3 + 1684); v13 = *(_WORD *)(*((_DWORD *)v3 + 843) + 12 * *((_WORD *)v3 + 1689) + 4); while ( v13 < v12 ) { v14 = *((_DWORD *)v3 + 843); v15 = v13; v26 = v13; v13 = *(_WORD *)(v14 + 12 * v13 + 4); if ( v26 >= v12 || (v16 = 3 * v15, v17 = *(_BYTE *)(v14 + 4 * v16 + 8) == 0, v18 = v14 + 4 * v16, v17) ) v19 = 0; else v19 = *(_DWORD *)v18; v20 = 6 * *(_DWORD *)(v19 + 4); v21 = (unsigned __int16)word_871512[6 * *(_DWORD *)(v19 + 4)]; if ( word_871510[v20] == v11 && v21 == *(_BYTE *)(v28 + 42) ) { if ( v26 < v12 && (v22 = *((_DWORD *)v3 + 843) + 12 * v26, *(_BYTE *)(v22 + 8)) ) v23 = *(_DWORD *)v22; else v23 = 0; v24 = sub_58F970(dword_87150C[3 * *(_DWORD *)(v23 + 4)] + 36 * *(_BYTE *)(v23 + 24) + 12, v27); if ( v24 && v24 != 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"); return 0; } break; } } } --dword_750CB8; v6 = (int)&unk_D020420; v25 = (int)"AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; } sub_467660(v6, v25); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 871510: using guessed type __int16 word_871510[]; // 871512: using guessed type __int16 word_871512[]; // 8772F0: using guessed type int dword_8772F0[]; //----- (0040C070) -------------------------------------------------------- bool __thiscall sub_40C070(void *this, int a2, int a3) { bool result; // al@2 int v4; // eax@4 if ( a2 == 792 ) { result = 0; } else { if ( (unsigned int)(a3 - 1) <= 0x26 && (v4 = sub_409A00(this, a2)) != 0 ) result = *(_BYTE *)(v4 + 24) == a3; else result = 0; } return result; } //----- (0040C0B0) -------------------------------------------------------- int __thiscall sub_40C0B0(void *this, int a2, int a3) { char v3; // cl@3 unsigned __int16 v4; // ax@7 int v5; // eax@7 int v6; // eax@8 int v7; // ebx@11 int v8; // ebx@13 int v9; // ST04_4@13 int v10; // eax@13 unsigned int v11; // ebx@14 int v13; // [sp-8h] [bp-680h]@20 void *v14; // [sp+10h] [bp-668h]@1 unsigned __int16 v15; // [sp+14h] [bp-664h]@14 int v16; // [sp+14h] [bp-664h]@16 char v17; // [sp+18h] [bp-660h]@11 int (__stdcall **v18)(int, int, int); // [sp+1Ch] [bp-65Ch]@13 unsigned int v19; // [sp+668h] [bp-10h]@1 int v20; // [sp+674h] [bp-4h]@1 int v21; // [sp+678h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v14 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( !a2 || !a3 || (v3 = *(_BYTE *)a2, *(_BYTE *)a2 & 1) || v3 & 2 || v3 & 4 ) { --dword_750CB8; v13 = (int)"AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject"; v20 = -1; } else { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 52) ) { v4 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 52); v5 = sub_4012D0((int)&unk_877138, v4); if ( v5 ) { v6 = *(_DWORD *)v5; if ( v6 ) (*(void (__thiscall **)(int, int, _DWORD, signed int, signed int))(*(_DWORD *)a3 + 1604))( a3, a3, *(_DWORD *)(v6 + 34), 1, 1); } } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 54) ) { v7 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 55); sub_4C0E10(&v17, a3, 1, 0); LOBYTE(v20) = 1; sub_551C80(a3, (int)&v17, (_UNKNOWN *)v7); sub_401AC0(a2, a3, (int)&v17, 54); LOBYTE(v20) = 0; sub_4C11C0(&v17); } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 53) ) { v8 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 55); sub_401F90(&v18, a3); v9 = *(_DWORD *)(a3 + 102); LOBYTE(v20) = 2; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a3, v10, v9, (_UNKNOWN *)v8, 0, (int)&v18, 0, 65535); sub_401AC0(a2, a3, (int)&v18, 53); LOBYTE(v20) = 0; v18 = &off_69FD50; sub_4C11C0(&v18); } v11 = 0; v15 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 57); if ( v15 ) v11 = (unsigned int)((unsigned int)v15 * (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1264))(a3) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v16 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a2 + 4)] + 36 * *(_BYTE *)(a2 + 24) + 12), 106); if ( v16 ) v11 += (unsigned int)((unsigned int)(v16 * (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1256))(a3)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( (signed int)v11 > 0 ) (*(void (__thiscall **)(int, _DWORD, unsigned int, signed int, signed int, _DWORD))(*(_DWORD *)a3 + 1840))( a3, 0, v11, 792, 1, 0); sub_40BB50(v14, a2, a3); --dword_750CB8; v20 = -1; v13 = (int)"AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject"; } return sub_467660((int)&unk_D020420, v13); } // 69FD50: using guessed type int (__stdcall *off_69FD50)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; //----- (0040C410) -------------------------------------------------------- int __thiscall sub_40C410(void *this, int a2, int a3) { char v3; // al@3 int v5; // [sp-4h] [bp-28h]@2 void *v6; // [sp+14h] [bp-10h]@1 v6 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_DetachObject"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_DetachObject"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || (v3 = *(_BYTE *)a2, *(_BYTE *)a2 & 1) || v3 & 2 || v3 & 4 ) { --dword_750CB8; v5 = (int)"AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_DetachObject"; } else { if ( a3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) != 3 && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 291) && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 499) && (unsigned __int8)(*(int (__stdcall **)(int, int))(*(_DWORD *)v6 + 52))(a2, a3) ) sub_40BB50(v6, a2, a3); --dword_750CB8; v5 = (int)"AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_DetachObject"; } return sub_467660((int)&unk_D020420, v5); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0040C530) -------------------------------------------------------- char __userpurge sub_40C530(int a1, double a2, int a3, int a4) { char result; // al@2 void *v5; // ecx@7 signed int v6; // edx@8 int v7; // ebx@8 signed int v8; // edx@10 int v9; // ebx@10 signed int v10; // eax@10 int v11; // ebx@11 char v12; // [sp+Ch] [bp-CE8h]@8 int v13; // [sp+38h] [bp-CBCh]@1 int v14; // [sp+3Ch] [bp-CB8h]@8 int v15; // [sp+40h] [bp-CB4h]@7 int (__stdcall **v16)(int, int, int); // [sp+44h] [bp-CB0h]@19 char v17; // [sp+694h] [bp-660h]@17 unsigned int v18; // [sp+CE4h] [bp-10h]@1 int v19; // [sp+CF0h] [bp-4h]@8 int v20; // [sp+CF4h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v13 = a1; if ( !a3 || !a4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1156))(a4) == 3 || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a4 + 996))(a4, 291) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a4 + 996))(a4, 499) ) { result = 0; } else { v5 = (void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12); v15 = 0; if ( sub_415C90(v5, 96) == 1 ) { v6 = (signed int)((unsigned __int64)(sub_415C60( (void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 96) * *(_DWORD *)(a3 + 20) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v7 = v6 + ((unsigned int)v6 >> 31); sub_42A950((int)&v12, 0, a4, 0, 0, *(_DWORD *)(a4 + 102)); LOBYTE(v14) = *(_BYTE *)(a3 + 16); v19 = 0; v15 = sub_502FF0((int)off_8551E4, a2, (int)&v12, v7, v14); v19 = -1; nullsub_2(&v12); } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 98) == 1 ) { v8 = (signed int)((unsigned __int64)(sub_415C60( (void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 98) * *(_DWORD *)(a3 + 20) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v9 = v8 + ((unsigned int)v8 >> 31); sub_42A950((int)&v12, 0, a4, 0, 0, *(_DWORD *)(a4 + 102)); LOBYTE(v14) = *(_BYTE *)(a3 + 16); v19 = 1; v10 = sub_502FF0((int)off_8551E8, a2, (int)&v12, v9, v14); v15 += v10; v19 = -1; nullsub_2(&v12); } v11 = sub_401A80(a3); if ( v15 ) (*(void (__thiscall **)(int, int, int, signed int, signed int, _DWORD))(*(_DWORD *)a4 + 1840))( a4, v11, v15, 792, 1, 0); if ( v11 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 768))(v11) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1156))(a4) == 3 ) { v14 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 97); v15 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 55); if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 54) ) { sub_4C0E10(&v17, a4, 1, 0); v19 = 2; sub_551C80(a4, (int)&v17, (_UNKNOWN *)(v15 / 2)); sub_401350((int)&v17); sub_40B560(a3, v11, (int)&v17, 54, v14, 0); v19 = -1; sub_4C11C0(&v17); } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 53) ) { sub_402010(&v16, a4, v11); v19 = 3; sub_551C80(a4, (int)&v16, (_UNKNOWN *)(v15 / 2)); sub_401350((int)&v16); sub_40B560(a3, v11, (int)&v16, 53, v14, 0); v19 = -1; v16 = &off_69FDD4; sub_4C11C0(&v16); } } result = 1; } return result; } // 69FDD4: using guessed type int (__stdcall *off_69FDD4)(int, int, int); // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; //----- (0040C910) -------------------------------------------------------- void __stdcall sub_40C910(int a1, void *a2) { int v2; // esi@1 void *v3; // edi@2 int v4; // eax@3 int v5; // ebx@4 unsigned __int16 v6; // bx@5 int v7; // ecx@7 int v8; // eax@7 bool v9; // zf@7 int v10; // ecx@7 int v11; // ecx@8 int v12; // eax@10 int v13; // esi@12 int v14; // eax@13 int v15; // [sp+4h] [bp-8h]@4 char v16; // [sp+Ah] [bp-2h]@5 char v17; // [sp+Bh] [bp-1h]@5 char v18; // [sp+17h] [bp+Bh]@5 char v19; // [sp+1Bh] [bp+Fh]@5 v2 = a1; if ( a1 ) { v3 = a2; if ( a2 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1324))(a2); if ( v4 ) { v5 = v4 + 3364; v15 = v4 + 3364; if ( v4 != -3364 ) { v18 = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a1 + 4)] + 36 * *(_BYTE *)(a1 + 24) + 12), 31); v19 = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v2 + 4)] + 36 * *(_BYTE *)(v2 + 24) + 12), 32); v17 = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v2 + 4)] + 36 * *(_BYTE *)(v2 + 24) + 12), 33); v16 = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v2 + 4)] + 36 * *(_BYTE *)(v2 + 24) + 12), 116); v6 = *(_WORD *)(*(_DWORD *)(v5 + 8) + 12 * *(_WORD *)(v5 + 14) + 4); while ( v6 < *(_WORD *)(v15 + 4) ) { v7 = *(_DWORD *)(v15 + 8); v8 = v6; v6 = *(_WORD *)(v7 + 12 * v6 + 4); v8 *= 3; v9 = *(_BYTE *)(v7 + 4 * v8 + 8) == 0; v10 = v7 + 4 * v8; if ( v9 ) v11 = 0; else v11 = *(_DWORD *)v10; v12 = *(_DWORD *)(v11 + 4); if ( v12 < 792 ) { v13 = dword_8772F0[v12]; if ( v13 ) { v14 = *(_DWORD *)v13; if ( *(_DWORD *)v13 ) { if ( v18 == 1 && *(_DWORD *)(v14 + 244) == 4 || v19 == 1 && *(_DWORD *)(v14 + 244) == 3 || v17 == 1 && *(_DWORD *)(v14 + 244) == 5 || v16 == 1 && *(_DWORD *)(v14 + 248) == 2 ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v3 + 1616))(v3, *(_DWORD *)(v14 + 34)); sub_401940(v3, *(_DWORD *)(*(_DWORD *)v13 + 34)); sub_405730(v3, *(_DWORD *)(*(_DWORD *)v13 + 34)); } } } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v12); } } } } } } } // 87150C: using guessed type int dword_87150C[]; // 8772F0: using guessed type int dword_8772F0[]; //----- (0040CAD0) -------------------------------------------------------- unsigned int __thiscall sub_40CAD0(void *this, unsigned int a2, int a3) { int v3; // eax@1 int v4; // ecx@1 unsigned __int16 v5; // si@1 unsigned __int16 v6; // di@2 int v7; // edx@3 int v8; // eax@3 unsigned __int16 v9; // bx@3 int v10; // ecx@6 int v11; // ecx@8 int v12; // eax@9 bool v13; // zf@9 int v14; // edx@9 unsigned __int16 v15; // di@12 int v16; // edx@13 int v17; // eax@13 unsigned __int16 v18; // bx@13 int v19; // ecx@16 int v20; // ecx@18 int v21; // eax@19 int v22; // edx@19 int v23; // eax@22 int v24; // ebx@22 unsigned __int16 v25; // si@22 unsigned __int16 v26; // cx@23 int v27; // edx@24 int v28; // eax@24 unsigned __int16 v29; // di@24 int v30; // ecx@27 int v31; // eax@30 int v32; // edx@30 unsigned int result; // eax@34 int (__thiscall *v34)(_DWORD); // edx@35 int v35; // esi@35 unsigned __int16 v36; // bx@35 unsigned __int16 v37; // cx@36 int v38; // edx@37 int v39; // eax@37 unsigned __int16 v40; // di@37 int v41; // ecx@39 int v42; // eax@42 int v43; // eax@42 int v44; // [sp+10h] [bp-10h]@1 unsigned int v45; // [sp+18h] [bp-8h]@35 void *v46; // [sp+1Ch] [bp-4h]@1 int v47; // [sp+1Ch] [bp-4h]@41 v46 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1324))(); v4 = v3 + 3364; v5 = *(_WORD *)(*(_DWORD *)(v3 + 3372) + 12 * *(_WORD *)(v3 + 3378) + 4); v44 = v3 + 3364; if ( (_BYTE)a3 == 1 ) { while ( 1 ) { v6 = *(_WORD *)(v4 + 4); if ( v5 >= v6 ) break; v7 = *(_DWORD *)(v4 + 8); v8 = v5; v9 = v5; v5 = *(_WORD *)(v7 + 12 * v5 + 4); if ( (signed int)a2 <= 0 ) break; if ( v9 < v6 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v10 = *(_DWORD *)(v7 + 12 * v8); else v10 = 0; v11 = dword_871508[3 * *(_DWORD *)(v10 + 4)]; if ( v9 >= v6 || (v12 = 3 * v8, v13 = *(_BYTE *)(v7 + 4 * v12 + 8) == 0, v14 = v7 + 4 * v12, v13) ) { (*(void (__stdcall **)(_DWORD, unsigned int *))(*(_DWORD *)v11 + 92))(0, &a2); v4 = v44; } else { (*(void (__stdcall **)(_DWORD, unsigned int *))(*(_DWORD *)v11 + 92))(*(_DWORD *)v14, &a2); v4 = v44; } } } else { while ( 1 ) { v15 = *(_WORD *)(v4 + 4); if ( v5 >= v15 ) break; v16 = *(_DWORD *)(v4 + 8); v17 = v5; v18 = v5; v5 = *(_WORD *)(v16 + 12 * v5 + 4); if ( (signed int)a2 <= 0 ) break; if ( v18 < v15 && *(_BYTE *)(v16 + 12 * v17 + 8) ) v19 = *(_DWORD *)(v16 + 12 * v17); else v19 = 0; v20 = dword_871508[3 * *(_DWORD *)(v19 + 4)]; if ( v18 >= v15 || (v21 = 3 * v17, v13 = *(_BYTE *)(v16 + 4 * v21 + 8) == 0, v22 = v16 + 4 * v21, v13) ) { (*(void (__stdcall **)(_DWORD, unsigned int *))(*(_DWORD *)v20 + 88))(0, &a2); v4 = v44; } else { (*(void (__stdcall **)(_DWORD, unsigned int *))(*(_DWORD *)v20 + 88))(*(_DWORD *)v22, &a2); v4 = v44; } } } v23 = (*(int (**)(void))(*(_DWORD *)v46 + 1324))(); v24 = v23 + 3364; v25 = *(_WORD *)(*(_DWORD *)(v23 + 3372) + 12 * *(_WORD *)(v23 + 3378) + 4); while ( 1 ) { v26 = *(_WORD *)(v24 + 4); if ( v25 >= v26 ) break; v27 = *(_DWORD *)(v24 + 8); v28 = v25; v29 = v25; v25 = *(_WORD *)(v27 + 12 * v25 + 4); if ( (signed int)a2 <= 0 ) return 0; if ( v29 < v26 && *(_BYTE *)(v27 + 12 * v28 + 8) ) v30 = *(_DWORD *)(v27 + 12 * v28); else v30 = 0; a3 = dword_871508[3 * *(_DWORD *)(v30 + 4)]; if ( v29 >= *(_WORD *)(v24 + 4) || (v31 = 3 * v28, v13 = *(_BYTE *)(v27 + 4 * v31 + 8) == 0, v32 = v27 + 4 * v31, v13) ) (*(void (__stdcall **)(_DWORD, unsigned int *))(*(_DWORD *)a3 + 84))(0, &a2); else (*(void (__stdcall **)(_DWORD, unsigned int *))(*(_DWORD *)a3 + 84))(*(_DWORD *)v32, &a2); } if ( (signed int)a2 <= 0 ) return 0; v34 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v46 + 1256); a3 = 0; v45 = v34(v46); v35 = (*(int (__thiscall **)(void *))(*(_DWORD *)v46 + 1324))(v46); v36 = *(_WORD *)(*(_DWORD *)(v35 + 3372) + 12 * *(_WORD *)(v35 + 3378) + 4); while ( 1 ) { v37 = *(_WORD *)(v35 + 3368); if ( v36 >= v37 ) break; v38 = *(_DWORD *)(v35 + 3372); v39 = v36; v40 = v36; v36 = *(_WORD *)(v38 + 12 * v36 + 4); if ( v40 < v37 && *(_BYTE *)(v38 + 12 * v39 + 8) ) v41 = *(_DWORD *)(v38 + 12 * v39); else v41 = 0; v47 = dword_871508[3 * *(_DWORD *)(v41 + 4)]; if ( v40 >= *(_WORD *)(v35 + 3368) || (v42 = 3 * v39, v13 = *(_BYTE *)(v38 + 4 * v42 + 8) == 0, v43 = v38 + 4 * v42, v13) ) (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v47 + 100))(0, &a3); else (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v47 + 100))(*(_DWORD *)v43, &a3); } if ( v45 <= a3 ) return 0; result = a2; if ( a2 > v45 - a3 ) result = v45 - a3; return result; } // 871508: using guessed type int dword_871508[]; //----- (0040CDD0) -------------------------------------------------------- void *__thiscall sub_40CDD0(void *this) { void *v1; // ebx@1 signed int v2; // edx@1 signed int v3; // eax@1 void *v4; // edi@1 int v5; // ecx@3 v1 = this; _eh_vector_constructor_iterator_(this, 0x74u, 29, (int)sub_406480, (void (__thiscall *)(void *))sub_401A10); *((_DWORD *)v1 + 841) = &off_6A04D8; *((_DWORD *)v1 + 845) = 0; sub_409780((int)((char *)v1 + 3364), 0x1Du); v2 = 0; v3 = 0; v4 = v1; do { if ( v2 < *((_WORD *)v1 + 1684) ) { v5 = *((_DWORD *)v1 + 843); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v4; } v3 += 12; ++v2; v4 = (char *)v4 + 116; } while ( v3 < 348 ); return v1; } // 6A04D8: using guessed type int (__thiscall *off_6A04D8)(void *, char); //----- (0040CE80) -------------------------------------------------------- char __userpurge sub_40CE80(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13) { int v13; // ebx@1 int v14; // edi@5 bool v15; // zf@5 int v16; // eax@7 int v17; // eax@7 int v18; // esi@7 int v19; // edx@9 unsigned __int16 v20; // di@9 int v21; // esi@9 __int16 v22; // dx@9 int v23; // ecx@12 int v24; // eax@12 int v25; // eax@13 int v26; // ecx@13 int v27; // ecx@14 int v28; // eax@16 int v29; // ecx@16 int v30; // eax@18 int v31; // eax@18 int v32; // eax@28 int v33; // ecx@31 int v34; // eax@34 int v35; // eax@38 unsigned __int16 v37; // [sp+10h] [bp-34h]@9 __int16 v38; // [sp+12h] [bp-32h]@18 int v39; // [sp+14h] [bp-30h]@9 int v40; // [sp+18h] [bp-2Ch]@9 int v41; // [sp+1Ch] [bp-28h]@1 int v42; // [sp+20h] [bp-24h]@7 int v43; // [sp+24h] [bp-20h]@8 int v44; // [sp+28h] [bp-1Ch]@8 int v45; // [sp+2Ch] [bp-18h]@7 int v46; // [sp+30h] [bp-14h]@5 int v47; // [sp+34h] [bp-10h]@1 int v48; // [sp+40h] [bp-4h]@1 v13 = a1; v47 = a1; v41 = (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet"; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet"; dword_750AB8[dword_750CB8++] = -1; v48 = 0; if ( !a6 || !*a6 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet : Null struct", 0); --dword_750CB8; LABEL_45: v48 = -1; goto LABEL_46; } if ( (unsigned int)(a5 - 1) > 0x26 ) { --dword_750CB8; goto LABEL_45; } v14 = a7; v15 = *(_DWORD *)(a6[9 * a5 + 3] + 19) == 28; v46 = (int)&a6[9 * a5 + 3]; if ( v15 ) (*(void (__thiscall **)(int))(*(_DWORD *)a7 + 1988))(a7); v16 = *(_DWORD *)(*a6 + 17); v45 = 65535; v42 = v16; v17 = sub_409A00((void *)v13, v16); v18 = v17; if ( v17 ) { v33 = dword_871508[3 * *(_DWORD *)(v17 + 4)]; if ( v33 ) (*(void (__stdcall **)(int, int))(*(_DWORD *)v33 + 52))(v17, a7); } else { v43 = *(_DWORD *)v46; v44 = *(_DWORD *)(v43 + 38); if ( v44 != 38 ) { v19 = *(_DWORD *)(v13 + 3372); v20 = *(_WORD *)(v13 + 3368); v21 = v13 + 3364; v37 = *(_WORD *)(v13 + 3368); v22 = *(_WORD *)(v19 + 12 * *(_WORD *)(v13 + 3378) + 4); v39 = v13 + 3364; v40 = 0; while ( 1 ) { if ( v22 >= v20 ) { v38 = v22; goto LABEL_27; } v23 = *(_DWORD *)(v21 + 8); v24 = (unsigned __int16)v22; v37 = v22; v22 = *(_WORD *)(v23 + 12 * (unsigned __int16)v22 + 4); if ( v37 >= v20 || (v25 = 3 * v24, v15 = *(_BYTE *)(v23 + 4 * v25 + 8) == 0, v26 = v23 + 4 * v25, v15) ) v27 = 0; else v27 = *(_DWORD *)v26; v28 = 6 * *(_DWORD *)(v27 + 4); v29 = (unsigned __int16)word_871512[6 * *(_DWORD *)(v27 + 4)]; if ( word_871510[v28] == v44 ) { if ( v29 == *(_BYTE *)(v43 + 42) ) break; } v13 = v47; } v38 = v22; v30 = sub_4A2CF0((int)&v37); v31 = sub_58F970(dword_87150C[3 * *(_DWORD *)(v30 + 4)] + 36 * *(_BYTE *)(v30 + 24) + 12, v46); if ( !v31 ) goto LABEL_21; if ( v31 == 1 ) { *(_DWORD *)(sub_4A2CF0((int)&v37) + 32) = dword_14D129E8; LABEL_21: v13 = v47; LABEL_27: v14 = a7; goto LABEL_28; } if ( *((_BYTE *)*a6 + 256) == 45 && a3 ) (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(2, 66, 4052); --dword_750CB8; v48 = -1; goto LABEL_46; } LABEL_28: v32 = sub_4CD350((void *)(v13 + 3364), (int)&v45); v18 = v32; if ( !v32 ) { sub_639150( &unk_86DDD8, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet : Alloc Error", v42, *(_WORD *)(v13 + 3384)); --dword_750CB8; v48 = -1; LABEL_46: sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet"); return 0; } *(_DWORD *)(v32 + 4) = 792; *(_BYTE *)(v32 + 24) = 0; } if ( sub_40A230(v18, a2, a3, a4, a5, a8, a6, v14, a9, a10, a11, a12, a13) != 1 ) { if ( (_WORD)v45 != -1 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)(v13 + 3364) + 12))(v13 + 3364, v45); --dword_750CB8; v48 = -1; goto LABEL_46; } (*(void (__thiscall **)(int))(*(_DWORD *)v14 + 1320))(v14); v34 = sub_4066E0(v18); if ( v34 ) sub_4052D0((void *)v34, v14); if ( *(_DWORD *)(*(_DWORD *)v46 + 38) == 64 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v14 + 2520))( v14, dword_87150C[3 * *(_DWORD *)(v18 + 4)] + 36 * *(_BYTE *)(v18 + 24) + 12); v35 = sub_4066E0(v18); if ( v35 ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v35 + 28))(v35, v18, v14); --dword_750CB8; v48 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateListInObject::asl_AbstateSet"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; // 87150C: using guessed type int dword_87150C[]; // 871510: using guessed type __int16 word_871510[]; // 871512: using guessed type __int16 word_871512[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040D250) -------------------------------------------------------- void __stdcall sub_40D250(int a1, int a2) { int v2; // eax@2 char v3; // al@5 int v4; // esi@6 sub_40BAC0(a1, a2); if ( a2 ) { v2 = (**(int (__thiscall ***)(_DWORD))a2)(a2); if ( v2 ) { while ( (_UNKNOWN *)v2 != &unk_132541BC ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_5; } v3 = 1; } else { LABEL_5: v3 = 0; } v4 = v3 != 0 ? a2 : 0; if ( v3 != 0 ? a2 : 0 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3788))(v4); sub_437780(&dword_87B264, v4); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3860))(v4, 1); } } } //----- (0040D2C0) -------------------------------------------------------- void __thiscall sub_40D2C0(void *this, int a2, int a3) { int v3; // eax@2 char v4; // al@5 sub_40BB50(this, a2, a3); if ( a3 ) { v3 = (**(int (__thiscall ***)(_DWORD))a3)(a3); if ( v3 ) { while ( (_UNKNOWN *)v3 != &unk_132541BC ) { v3 = *(_DWORD *)(v3 + 4); if ( !v3 ) goto LABEL_5; } v4 = 1; } else { LABEL_5: v4 = 0; } if ( v4 != 0 ? a3 : 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)(v4 != 0 ? a3 : 0) + 3860))(0); } } //----- (0040D320) -------------------------------------------------------- char __userpurge sub_40D320(double a1, int a2, int a3, int a4) { int v4; // edi@1 char result; // al@2 int v6; // eax@7 char v7; // al@9 char v8; // bl@9 int v9; // [sp+28h] [bp+8h]@7 sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 ) { if ( !a3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 996))(a3, 291) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 996))(a3, 499) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine"); result = 0; } else { v9 = sub_402620(a2, *(_DWORD *)(a3 + 102)); v6 = sub_40B250(a1, v4, a3, *(_DWORD *)(a3 + 102)); if ( v6 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1840))( a3, v9, v6, a4, 1, 0); v7 = sub_406C80(v4, a3, a4); --dword_750CB8; v8 = v7; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine"); result = v8; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0040D4A0) -------------------------------------------------------- char __userpurge sub_40D4A0(int a1, double a2, int a3, int a4, int a5) { int v5; // edi@1 void *v6; // ecx@1 char v7; // bl@2 int v8; // ecx@3 int v9; // edi@6 int v10; // eax@10 void *v11; // ecx@13 int v12; // eax@16 char v13; // al@16 int v14; // ecx@18 int v15; // eax@20 int v16; // eax@20 int v17; // esi@20 int v18; // eax@26 void (__thiscall *v19)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@27 int v20; // eax@27 int v21; // edx@27 __int16 v22; // ax@27 int v23; // edx@27 void *v24; // edx@30 int v25; // ST04_4@32 int v26; // eax@32 unsigned int v28; // [sp-4h] [bp-E60h]@1 char v29; // [sp+10h] [bp-E4Ch]@32 int v30; // [sp+1Ch] [bp-E40h]@6 int v31; // [sp+20h] [bp-E3Ch]@16 int v32; // [sp+24h] [bp-E38h]@16 int v33; // [sp+28h] [bp-E34h]@27 int v34; // [sp+2Ch] [bp-E30h]@1 int v35; // [sp+30h] [bp-E2Ch]@14 int v36; // [sp+34h] [bp-E28h]@1 int v37; // [sp+38h] [bp-E24h]@14 int v38; // [sp+3Ch] [bp-E20h]@1 char v39; // [sp+43h] [bp-E19h]@16 char v40; // [sp+44h] [bp-E18h]@10 char v41; // [sp+694h] [bp-7C8h]@16 __int16 v42; // [sp+CE4h] [bp-178h]@16 char v43; // [sp+CE6h] [bp-176h]@16 char v44; // [sp+CEAh] [bp-172h]@19 unsigned int v45; // [sp+E4Ch] [bp-10h]@1 int v46; // [sp+E58h] [bp-4h]@1 int v47; // [sp+E5Ch] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v28 = (unsigned int)&v47 ^ __security_cookie; v5 = a4; v34 = a1; v36 = a4; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine"; dword_750AB8[dword_750CB8++] = -1; v6 = (void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12); v46 = 0; v38 = sub_415C60(v6, 55); if ( !v38 ) { v7 = sub_40D320(a2, a3, a4, a5); LABEL_34: --dword_750CB8; v46 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine"); return v7; } v8 = *(_DWORD *)(a3 + 8); if ( !v8 ) { LABEL_8: v7 = sub_406C80(a3, v5, a5); goto LABEL_34; } if ( (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v8 + 836))(v28) != *(_DWORD *)(a3 + 12) ) { *(_DWORD *)(a3 + 8) = 0; v7 = sub_406C80(a3, a4, a5); goto LABEL_34; } v9 = *(_DWORD *)(a3 + 8); v30 = v9; if ( !v9 ) { v5 = v36; goto LABEL_8; } if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 54) ) { sub_4C0E10(&v40, v9, 0, 1); LOBYTE(v46) = 1; sub_551C80(v9, (int)&v40, (_UNKNOWN *)v38); v10 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 97); if ( v10 <= 0 ) sub_401AC0(a3, v9, (int)&v40, 54); else sub_40B560(a3, v9, (int)&v40, 54, v10, 1); v7 = sub_406C80(a3, v36, a5); v11 = &v40; LABEL_33: LOBYTE(v46) = 0; sub_4C11C0(v11); goto LABEL_34; } LOBYTE(v37) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 64); LOBYTE(v35) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 66); if ( (_BYTE)v35 ) LOBYTE(v37) = 1; sub_4C0E10(&v41, v9, v37, v35); LOBYTE(v46) = 2; sub_551C80(v9, (int)&v41, (_UNKNOWN *)v38); v42 = 0; memset(&v43, 0, 0x166u); v12 = *(_WORD *)(v9 + 4); v32 = *(_DWORD *)(a3 + 4); v31 = v12; v13 = sub_4C0DC0((int)&v41); v39 = v13; if ( (unsigned __int8)v13 > 0x1Eu ) { sub_639100( &unk_86DDD8, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine Max 30 Over :", (unsigned __int8)v13); v39 = 30; v13 = 30; } v14 = (unsigned __int8)v13; v37 = 0; v35 = (unsigned __int8)v13; if ( (signed int)(unsigned __int8)v13 <= 0 ) { LABEL_30: v24 = off_849C18; *(_WORD *)off_849C18 = 9306; *((_WORD *)v24 + 1) = v32; *((_WORD *)v24 + 2) = v31; *((_BYTE *)v24 + 6) = v39; if ( v14 > 0 ) { memcpy((char *)v24 + 7, &v42, 4 * ((unsigned int)(12 * v14) >> 2)); v9 = v30; } sub_4287B0(&v29, &off_849C18, 12 * *((_BYTE *)v24 + 6) + 7); v25 = *(_DWORD *)(v9 + 102); LOBYTE(v46) = 3; v26 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v9, v26, v25, 0, 0, (int)&v29, 1, 65535); v7 = sub_406C80(a3, v36, a5); LOBYTE(v46) = 2; sub_428A70(&v29); v11 = &v41; goto LABEL_33; } v38 = (int)&v44; while ( 1 ) { v15 = sub_4C0DD0((int)&v41, v37); v16 = sub_4096E0(v15); v17 = v16; if ( !v16 ) break; if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v16 + 996))(v16, 499) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v17 + 1156))(v17) != 3 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v17 + 40))(v17) && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v17 + 996))(v17, 291) ) { if ( !v36 ) break; v18 = sub_40B250(a2, a3, v17, *(_DWORD *)(v36 + 102)); if ( v18 ) { v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v17 + 1840); v33 = 0; v19(v17, v9, v18, a5, 0, &v33); v20 = v38; v21 = v33; *(_WORD *)(v38 - 6) = *(_WORD *)(v17 + 4); *(_DWORD *)v20 = v21; v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 2024))(v17); v23 = *(_DWORD *)v17; *(_WORD *)(v38 + 4) = v22; *(_DWORD *)(v38 - 4) = (*(int (__thiscall **)(int))(v23 + 1256))(v17); } } v38 += 12; ++v37; if ( v37 >= v35 ) { v14 = v35; goto LABEL_30; } } LOBYTE(v46) = 0; sub_4C11C0(&v41); --dword_750CB8; v46 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; //----- (0040DA00) -------------------------------------------------------- char __thiscall sub_40DA00(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_40BE40((char *)v3 + 432, a2, a3); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0040DAC0) -------------------------------------------------------- char __userpurge sub_40DAC0(int a1, double a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // ebx@5 int v8; // ecx@7 int v9; // esi@10 void *v10; // ebx@17 __int16 v11; // ax@17 int v12; // esi@17 int v13; // ebx@21 int v14; // eax@22 int v15; // esi@22 int v16; // eax@26 void (__thiscall *v17)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@27 int v18; // eax@27 int v19; // ecx@27 int v20; // eax@27 int v21; // esi@30 int v22; // ST04_4@30 int v23; // eax@30 char v24; // bl@30 unsigned int v25; // [sp-4h] [bp-69Ch]@1 char v26; // [sp+Ch] [bp-68Ch]@30 int v27; // [sp+18h] [bp-680h]@10 int v28; // [sp+1Ch] [bp-67Ch]@17 int v29; // [sp+20h] [bp-678h]@20 int v30; // [sp+24h] [bp-674h]@1 int v31; // [sp+28h] [bp-670h]@3 int v32; // [sp+2Ch] [bp-66Ch]@5 int v33; // [sp+30h] [bp-668h]@1 int v34; // [sp+34h] [bp-664h]@3 char v35; // [sp+38h] [bp-660h]@13 unsigned int v36; // [sp+688h] [bp-10h]@1 int v37; // [sp+694h] [bp-4h]@13 int v38; // [sp+698h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v25 = (unsigned int)&v38 ^ __security_cookie; v5 = a4; v33 = a1; v30 = a4; if ( a3 && a4 ) { LOBYTE(v34) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 64); LOBYTE(v31) = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 66); if ( (_BYTE)v31 ) LOBYTE(v34) = 1; v32 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 97); v6 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 55); if ( !v6 ) return sub_40D320(a2, a3, a4, a5); v8 = *(_DWORD *)(a3 + 8); if ( !v8 ) return sub_406C80(a3, v5, a5); if ( (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v8 + 836))(v25) != *(_DWORD *)(a3 + 12) ) { *(_DWORD *)(a3 + 8) = 0; return sub_406C80(a3, a4, a5); } v9 = *(_DWORD *)(a3 + 8); v27 = v9; if ( !v9 ) { v5 = v30; return sub_406C80(a3, v5, a5); } sub_4C0E10(&v35, v9, v34, v31); v37 = 0; sub_551C80(v30, (int)&v35, (_UNKNOWN *)v6); if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(a3 + 4)] + 36 * *(_BYTE *)(a3 + 24) + 12), 54) ) { if ( v32 <= 0 ) sub_401AC0(a3, v9, (int)&v35, 54); else sub_40B560(a3, v9, (int)&v35, 54, v32, 1); } v10 = off_849C18; *(_WORD *)off_849C18 = 9306; *((_WORD *)v10 + 1) = *(_DWORD *)(a3 + 4); v11 = *(_WORD *)(v9 + 4); v12 = v32; v28 = (int)v10; *((_WORD *)v10 + 2) = v11; *((_BYTE *)v10 + 6) = 0; if ( v12 <= 0 || v12 > sub_4C0DC0((int)&v35) ) { v32 = sub_4C0DC0((int)&v35); v12 = v32; } v29 = 7; v34 = 0; if ( v12 <= 0 ) { LABEL_30: sub_4287B0(&v26, &off_849C18, v29); v21 = v30; v22 = *(_DWORD *)(v30 + 102); LOBYTE(v37) = 1; v23 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v21, v23, v22, 0, 0, (int)&v26, 1, 65535); v24 = sub_406C80(a3, v21, a5); LOBYTE(v37) = 0; sub_428A70(&v26); v37 = -1; sub_4C11C0(&v35); return v24; } v13 = (int)((char *)v10 + 17); while ( 1 ) { v14 = sub_4C0DD0((int)&v35, v34); v15 = sub_4096E0(v14); if ( !v15 ) break; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1156))(v15) == 3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v15 + 40))(v15) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v15 + 996))(v15, 291) ) goto LABEL_36; v16 = sub_40B250(a2, a3, v15, *(_DWORD *)(v30 + 102)); if ( v16 ) { v17 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v15 + 1840); v31 = 0; v17(v15, v27, v16, a5, 0, &v31); *(_WORD *)(v13 - 10) = *(_WORD *)(v15 + 4); *(_WORD *)v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 2024))(v15); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1256))(v15); v19 = v31; *(_DWORD *)(v13 - 8) = v18; v20 = v28; *(_DWORD *)(v13 - 4) = v19; ++*(_BYTE *)(v20 + 6); v29 += 12; } if ( v29 < 8000 ) { LABEL_36: v13 += 12; ++v34; if ( v34 < v32 ) continue; } goto LABEL_30; } v37 = -1; sub_4C11C0(&v35); } return 0; } // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; //----- (0040DEF0) -------------------------------------------------------- char __thiscall sub_40DEF0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6A1318; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6A1318: using guessed type int (__stdcall *off_6A1318)(int, int); //----- (0040E070) -------------------------------------------------------- int __userpurge sub_40E070(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8) { int v8; // esi@1 int v9; // ecx@1 int v10; // esi@5 int v11; // ST14_4@6 int v12; // eax@6 int v14; // [sp+14h] [bp-10h]@4 int v15; // [sp+2Ch] [bp+8h]@4 v8 = a1; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanParty::alnsp_Buffing"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanParty::alnsp_Buffing"; dword_750AB8[dword_750CB8++] = -1; v9 = a3; if ( a3 >= *(_DWORD *)(v8 + 1604) ) v9 = *(_DWORD *)(v8 + 1604); if ( v9 > 0 ) { v15 = v8 + 4; v14 = v9; do { v10 = *(_DWORD *)v15; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v15 + 1156))(*(_DWORD *)v15) != 3 ) { v11 = dword_14D129E8; v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1324))(v10); if ( sub_40CE80(v12, a2, a4, a5, a6, a7, v10, v11, a8, 0, 0, 1, 0) ) { sub_4055D0((void *)v10, a5, -1, a6); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 1008))(v10, a5, -1, 0); } } v15 += 8; --v14; } while ( v14 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AxialListNearScanParty::alnsp_Buffing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040E1A0) -------------------------------------------------------- int __userpurge sub_40E1A0(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8) { int v8; // esi@1 int v9; // ecx@1 int v10; // esi@5 int v11; // ST14_4@6 int v12; // eax@6 int v14; // [sp+14h] [bp-10h]@4 int v15; // [sp+2Ch] [bp+8h]@4 v8 = a1; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanCoupleParty::alnsp_Buffing"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanCoupleParty::alnsp_Buffing"; dword_750AB8[dword_750CB8++] = -1; v9 = a3; if ( a3 >= *(_DWORD *)(v8 + 1604) ) v9 = *(_DWORD *)(v8 + 1604); if ( v9 > 0 ) { v15 = v8 + 4; v14 = v9; do { v10 = *(_DWORD *)v15; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v15 + 1156))(*(_DWORD *)v15) != 3 ) { v11 = dword_14D129E8; v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1324))(v10); if ( sub_40CE80(v12, a2, a4, a5, a6, a7, v10, v11, a8, 0, 0, 1, 0) ) { sub_4055D0((void *)v10, a5, -1, a6); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 1008))(v10, a5, -1, 1); } } v15 += 8; --v14; } while ( v14 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AxialListNearScanCoupleParty::alnsp_Buffing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040E2D0) -------------------------------------------------------- int __userpurge sub_40E2D0(int a1, double a2, int a3, int a4, int a5, int a6, __int16 **a7, int a8) { int v8; // esi@1 int v9; // ecx@1 int v10; // esi@5 int v11; // ST14_4@6 int v12; // eax@6 int v14; // [sp+14h] [bp-10h]@4 int v15; // [sp+2Ch] [bp+8h]@4 v8 = a1; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanGuildAcademy::alnsga_Buffing"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanGuildAcademy::alnsga_Buffing"; dword_750AB8[dword_750CB8++] = -1; v9 = a3; if ( a3 >= *(_DWORD *)(v8 + 1604) ) v9 = *(_DWORD *)(v8 + 1604); if ( v9 > 0 ) { v15 = v8 + 4; v14 = v9; do { v10 = *(_DWORD *)v15; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v15 + 1156))(*(_DWORD *)v15) != 3 ) { v11 = dword_14D129E8; v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1324))(v10); if ( sub_40CE80(v12, a2, a4, a5, a6, a7, v10, v11, a8, 0, 0, 1, 0) ) { sub_4055D0((void *)v10, a5, -1, a6); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 1008))(v10, a5, -1, 0); } } v15 += 8; --v14; } while ( v14 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AxialListNearScanGuildAcademy::alnsga_Buffing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040E400) -------------------------------------------------------- char __userpurge sub_40E400(int a1, double a2, void *a3, int a4, int a5, int a6) { int v6; // edi@1 unsigned int v7; // eax@2 int v8; // ecx@3 int v9; // ST40_4@6 __int16 v10; // ST44_2@6 _UNKNOWN *v11; // ST18_4@6 int v12; // ST14_4@6 int v13; // eax@6 int v14; // ST14_4@13 int v15; // ST0C_4@13 int v16; // ST08_4@13 int v17; // ST04_4@13 int v18; // eax@13 unsigned int v19; // edx@13 int v21; // [sp-4h] [bp-67Ch]@1 int v22; // [sp+10h] [bp-668h]@8 int v23; // [sp+14h] [bp-664h]@13 int (__stdcall **v24)(int, int, int); // [sp+18h] [bp-660h]@6 char v25; // [sp+1Ch] [bp-65Ch]@6 size_t v26; // [sp+65Ch] [bp-1Ch]@6 __int16 v27; // [sp+660h] [bp-18h]@6 int v28; // [sp+664h] [bp-14h]@6 unsigned int v29; // [sp+668h] [bp-10h]@1 int v30; // [sp+674h] [bp-4h]@1 int v31; // [sp+678h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v21 = (unsigned int)&v31 ^ __security_cookie; v6 = a1; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; sub_406840(a3, a4, a5, a6); if ( !*(_BYTE *)a6 ) { v7 = *(_DWORD *)(a5 + 36); if ( dword_14D129E8 > v7 ) { *(_DWORD *)(a5 + 36) = v7 + *(_DWORD *)(a5 + 40); v8 = *(_DWORD *)(a5 + 8); if ( v8 ) { if ( (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v8 + 1360))() != -1 ) { v9 = *(_DWORD *)((*(int (**)(void))(**(_DWORD **)(a5 + 8) + 2392))() + 37); v10 = (*(int (**)(void))(**(_DWORD **)(a5 + 8) + 1360))(); sub_4C0DA0(&v24); v24 = &off_69FB7C; v27 = v10; v28 = v9; v11 = *(_UNKNOWN **)(**(_DWORD **)(v6 + 28) + 204); v12 = *(_DWORD *)(*(_DWORD *)(a5 + 8) + 102); LOBYTE(v30) = 1; v13 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a5 + 8), v13, v12, v11, 0, (int)&v24, 0, 65535); qsort(&v25, v26, 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); if ( sub_4C0DC0((int)&v24) < 0 || sub_4C0DC0((int)&v24) <= 4 ) { if ( sub_4C0DC0((int)&v24) >= 0 ) v22 = sub_4C0DC0((int)&v24); else v22 = 0; } else { v22 = 4; } sub_40E1A0( (int)&v24, a2, *(_DWORD *)(**(_DWORD **)(v6 + 28) + 208), *(_DWORD *)(a5 + 8), *(_DWORD *)(v6 + 4 * v22 + 8), *(_BYTE *)(a5 + 24), *(__int16 ***)(v6 + 4 * v22 + 32), 0); if ( (signed int)v26 > 0 ) { v14 = dword_14D129E8; v15 = *(_DWORD *)(v6 + 4 * v22 + 32); v16 = *(_BYTE *)(a5 + 24); v17 = *(_WORD *)(v6 + 4 * v22 + 8); v18 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)a3 + 1324))(a3, *(_DWORD *)(a5 + 8)); sub_40CE80(v18, a2, v17, v16, v15, (__int16 **)a3, v14, 0, 0, 0, 2, 0, v21); v19 = 1000 * (*(_DWORD *)(a5 + 32) - dword_14D129E8) / 0xAu; v23 = 1000 * (*(_DWORD *)(a5 + 32) - dword_14D129E8) / 0xAu; if ( *(_DWORD *)(a5 + 32) - dword_14D129E8 >= (unsigned int)((char *)loc_5B8D7E + 2) ) { v23 = 900000000; v19 = 900000000; } (*(void (__thiscall **)(void *, _DWORD, unsigned int))(*(_DWORD *)a3 + 1008))( a3, *(_DWORD *)(v6 + 4 * v22 + 8), v19); sub_4055D0(a3, *(_DWORD *)(v6 + 4 * v22 + 8), v23, *(_BYTE *)(a5 + 24)); } LOBYTE(v30) = 0; v24 = &off_69FB7C; sub_4C11C0(&v24); } } else { *(_DWORD *)(a5 + 32) = dword_14D129E8; } } } --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_Routine"); return 1; } // 5B8D7E: using guessed type int __stdcall loc_5B8D7E(__int16, __int16, __int16); // 69FB7C: using guessed type int (__stdcall *off_69FB7C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040E730) -------------------------------------------------------- char __userpurge sub_40E730(int a1, double a2, int a3, int a4, int a5, int a6) { int v6; // ebx@1 unsigned int v7; // eax@2 int v8; // ecx@3 int v9; // ST14_4@6 int v10; // ST0C_4@6 int v11; // eax@6 __int16 v12; // ST44_2@7 _UNKNOWN *v13; // ST18_4@7 int v14; // ST14_4@7 int v15; // eax@7 int v16; // eax@7 int v17; // ST14_4@12 __int16 **v18; // ST0C_4@12 int v19; // ST08_4@12 int v20; // ST04_4@12 int v21; // ST00_4@12 int v22; // eax@12 int v23; // ecx@13 int v25; // [sp-10h] [bp-684h]@14 int v26; // [sp-Ch] [bp-680h]@14 int v27; // [sp-8h] [bp-67Ch]@14 int v28; // [sp-4h] [bp-678h]@1 int v29; // [sp+0h] [bp-674h]@0 int v30; // [sp+4h] [bp-670h]@0 signed int v31; // [sp+14h] [bp-660h]@7 int (__stdcall **v32)(int, int, int); // [sp+18h] [bp-65Ch]@7 char v33; // [sp+1Ch] [bp-658h]@7 size_t v34; // [sp+65Ch] [bp-18h]@7 __int16 v35; // [sp+660h] [bp-14h]@7 unsigned int v36; // [sp+664h] [bp-10h]@1 int v37; // [sp+670h] [bp-4h]@1 int v38; // [sp+674h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v28 = (unsigned int)&v38 ^ __security_cookie; v6 = a1; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; sub_406840((void *)a3, a4, a5, a6); if ( *(_BYTE *)a6 || (v7 = *(_DWORD *)(a5 + 36), dword_14D129E8 <= v7) ) goto LABEL_18; *(_DWORD *)(a5 + 36) = v7 + *(_DWORD *)(a5 + 40); v8 = *(_DWORD *)(a5 + 8); if ( !v8 ) { *(_DWORD *)(a5 + 32) = dword_14D129E8; goto LABEL_18; } if ( (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v8 + 1360))() == -1 ) { v9 = dword_14D129E8; v10 = *(_DWORD *)(v6 + 32); v11 = (*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1324))( a3, *(_DWORD *)(a5 + 8), *(_WORD *)(v6 + 8), *(_BYTE *)(a5 + 24)); sub_40CE80(v11, a2, v10, a3, v9, 0, 0, 0, 2, 0, v28, v29, v30); (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 1008))(a3); sub_4055D0( (void *)a3, *(_DWORD *)(v6 + 8), 1000 * (*(_DWORD *)(a5 + 32) - dword_14D129E8) / 0xAu, *(_BYTE *)(a5 + 24)); goto LABEL_18; } v12 = (*(int (__cdecl **)(int))(**(_DWORD **)(a5 + 8) + 1360))(v28); sub_4C0DA0(&v32); v32 = &off_69FB6C; v35 = v12; v13 = *(_UNKNOWN **)(**(_DWORD **)(v6 + 28) + 204); v14 = *(_DWORD *)(*(_DWORD *)(a5 + 8) + 102); LOBYTE(v37) = 1; v15 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a5 + 8), v15, v14, v13, 0, (int)&v32, 0, 65535); qsort(&v33, v34, 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); v16 = sub_4C0DC0((int)&v32); v31 = v16; if ( v16 < 0 ) { v31 = 0; LABEL_11: v16 = v31; goto LABEL_12; } if ( v16 > 4 ) { v31 = 4; goto LABEL_11; } LABEL_12: sub_40E070( (int)&v32, a2, *(_DWORD *)(**(_DWORD **)(v6 + 28) + 208), *(_DWORD *)(a5 + 8), *(_DWORD *)(v6 + 4 * v16 + 8), *(_BYTE *)(a5 + 24), *(__int16 ***)(v6 + 4 * v16 + 32), 0); v17 = dword_14D129E8; v18 = *(__int16 ***)(v6 + 4 * v31 + 32); v19 = *(_BYTE *)(a5 + 24); v20 = *(_WORD *)(v6 + 4 * v31 + 8); v21 = *(_DWORD *)(a5 + 8); v22 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1324))(a3); if ( sub_40CE80(v22, a2, v21, v20, v19, v18, a3, v17, 0, 0, 0, 2, 0) ) { v23 = *(_DWORD *)(a5 + 32) - dword_14D129E8; if ( v23 < (unsigned int)((char *)loc_5B8D7E + 2) ) { (*(void (__thiscall **)(int, _DWORD, unsigned int, _DWORD))(*(_DWORD *)a3 + 1008))( a3, *(_DWORD *)(v6 + 4 * v31 + 8), 1000 * v23 / 0xAu, 0); v27 = *(_BYTE *)(a5 + 24); v26 = 1000 * (*(_DWORD *)(a5 + 32) - dword_14D129E8) / 0xAu; v25 = *(_DWORD *)(v6 + 4 * v31 + 8); } else { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)a3 + 1008))( a3, *(_DWORD *)(v6 + 4 * v31 + 8), 900000000, 1); v27 = *(_BYTE *)(a5 + 24); v26 = 900000000; v25 = *(_DWORD *)(v6 + 4 * v31 + 8); } sub_4055D0((void *)a3, v25, v26, v27); } LOBYTE(v37) = 0; v32 = &off_69FB6C; sub_4C11C0(&v32); LABEL_18: --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStatePartyEnchant::ase_Routine"); return 1; } // 5B8D7E: using guessed type int __stdcall loc_5B8D7E(__int16, __int16, __int16); // 69FB6C: using guessed type int (__stdcall *off_69FB6C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040EAE0) -------------------------------------------------------- char __userpurge sub_40EAE0(int a1, double a2, void *a3, int a4, int a5, int a6) { int v6; // edi@1 unsigned int v7; // eax@2 int v8; // ecx@3 int v9; // ST3C_4@5 _UNKNOWN *v10; // ST18_4@5 int v11; // ST14_4@5 int v12; // eax@5 int v13; // eax@5 int v14; // ST14_4@7 int v15; // ST0C_4@7 int v16; // ST08_4@7 int v17; // ST04_4@7 int v18; // eax@7 unsigned int v20; // [sp-4h] [bp-674h]@1 int v21; // [sp+0h] [bp-670h]@0 int (__stdcall **v22)(int, int, int); // [sp+14h] [bp-65Ch]@5 char v23; // [sp+18h] [bp-658h]@5 size_t v24; // [sp+658h] [bp-18h]@5 int v25; // [sp+65Ch] [bp-14h]@5 unsigned int v26; // [sp+660h] [bp-10h]@1 int v27; // [sp+66Ch] [bp-4h]@1 int v28; // [sp+670h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v20 = (unsigned int)&v28 ^ __security_cookie; v6 = a1; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_Routine"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_Routine"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; sub_406840(a3, a4, a5, a6); if ( !*(_BYTE *)a6 ) { v7 = *(_DWORD *)(a5 + 36); if ( dword_14D129E8 > v7 ) { *(_DWORD *)(a5 + 36) = v7 + *(_DWORD *)(a5 + 40); v8 = *(_DWORD *)(a5 + 8); if ( v8 ) { v9 = (*(int (__stdcall **)(unsigned int))(*(_DWORD *)v8 + 2072))(v20); sub_4C0DA0(&v22); v22 = &off_69FB8C; v25 = v9; v10 = *(_UNKNOWN **)(**(_DWORD **)(v6 + 12) + 204); v11 = *(_DWORD *)(*(_DWORD *)(a5 + 8) + 102); LOBYTE(v27) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a5 + 8), v12, v11, v10, 0, (int)&v22, 0, 65535); qsort(&v23, v24, 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); v13 = sub_4C0DC0((int)&v22); if ( v13 < 0 ) v13 = 0; sub_40E2D0( (int)&v22, a2, v13, *(_DWORD *)(a5 + 8), *(_DWORD *)(v6 + 8), *(_BYTE *)(a5 + 24), *(__int16 ***)(v6 + 16), 0); v14 = dword_14D129E8; v15 = *(_DWORD *)(v6 + 16); v16 = *(_BYTE *)(a5 + 24); v17 = *(_WORD *)(v6 + 8); v18 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)a3 + 1324))(a3, *(_DWORD *)(a5 + 8)); sub_40CE80(v18, a2, v17, v16, v15, (__int16 **)a3, v14, 0, 0, 0, 2, 0, v21); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)a3 + 1008))(a3, *(_DWORD *)(v6 + 8)); sub_4055D0(a3, *(_DWORD *)(v6 + 8), 900000000, *(_BYTE *)(a5 + 24)); LOBYTE(v27) = 0; v22 = &off_69FB8C; sub_4C11C0(&v22); } else { *(_DWORD *)(a5 + 32) = dword_14D129E8; } } } --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_Routine"); return 1; } // 5B8D7E: using guessed type int __stdcall loc_5B8D7E(__int16, __int16, __int16); // 69FB8C: using guessed type int (__stdcall *off_69FB8C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (0040ED50) -------------------------------------------------------- int __thiscall sub_40ED50(int this) { int v1; // esi@1 int v2; // edi@1 signed int v3; // ecx@1 int v4; // eax@1 int v5; // edx@5 signed int v7; // [sp+14h] [bp-14h]@1 int v8; // [sp+18h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_69F6BC; *(_DWORD *)(this + 8) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(this + 16); *(_DWORD *)(v1 + 24) = &off_69F6BC; *(_DWORD *)(v1 + 32) = &off_69F74C; *(_DWORD *)(v1 + 84) = &off_69F6BC; *(_DWORD *)(v1 + 92) = &off_69F6BC; *(_DWORD *)(v1 + 100) = &off_69F6BC; *(_DWORD *)(v1 + 108) = &off_69F6BC; *(_DWORD *)(v1 + 116) = &off_69F6BC; *(_DWORD *)(v1 + 124) = &off_69F6BC; *(_DWORD *)(v1 + 132) = &off_69F6BC; *(_DWORD *)(v1 + 140) = &off_69F6BC; *(_DWORD *)(v1 + 148) = &off_69F6BC; *(_DWORD *)(v1 + 156) = &off_69F6BC; *(_DWORD *)(v1 + 164) = &off_69F6BC; *(_DWORD *)(v1 + 172) = &off_69F74C; *(_DWORD *)(v1 + 224) = &off_69F6BC; *(_DWORD *)(v1 + 232) = &off_69F6BC; *(_DWORD *)(v1 + 240) = &off_69F6BC; *(_DWORD *)(v1 + 248) = &off_69F6BC; *(_DWORD *)(v1 + 256) = &off_69F6BC; *(_DWORD *)(v1 + 264) = &off_69F6BC; *(_DWORD *)(v1 + 272) = &off_69F6BC; *(_DWORD *)(v1 + 280) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 288); *(_DWORD *)(v1 + 296) = &off_69F6BC; *(_DWORD *)(v1 + 304) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 312); *(_DWORD *)(v1 + 320) = &off_69F6BC; *(_DWORD *)(v1 + 328) = &off_69F74C; *(_DWORD *)(v1 + 380) = &off_69F6BC; *(_DWORD *)(v1 + 388) = &off_69F6BC; *(_DWORD *)(v1 + 396) = &off_69F6BC; *(_DWORD *)(v1 + 404) = &off_69F6BC; *(_DWORD *)(v1 + 412) = &off_69F6BC; *(_DWORD *)(v1 + 420) = &off_69F77C; *(_DWORD *)(v1 + 436) = &off_69F74C; *(_DWORD *)(v1 + 488) = &off_69F6BC; *(_DWORD *)(v1 + 496) = &off_69F6BC; *(_DWORD *)(v1 + 504) = &off_69F6BC; *(_DWORD *)(v1 + 512) = &off_69F6BC; *(_DWORD *)(v1 + 520) = &off_69F6BC; *(_DWORD *)(v1 + 528) = &off_69F6BC; *(_DWORD *)(v1 + 536) = &off_69F6BC; *(_DWORD *)(v1 + 544) = &off_69F6BC; *(_DWORD *)(v1 + 552) = &off_69F6BC; *(_DWORD *)(v1 + 560) = &off_69F6BC; *(_DWORD *)(v1 + 568) = &off_69F6BC; *(_DWORD *)(v1 + 576) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 584); *(_DWORD *)(v1 + 592) = &off_69F6BC; *(_DWORD *)(v1 + 600) = &off_69F77C; *(_DWORD *)(v1 + 616) = &off_69F77C; *(_DWORD *)(v1 + 632) = &off_69F77C; *(_DWORD *)(v1 + 648) = &off_69F77C; *(_DWORD *)(v1 + 664) = &off_69F77C; *(_DWORD *)(v1 + 680) = &off_69F77C; *(_DWORD *)(v1 + 696) = &off_69F6BC; *(_DWORD *)(v1 + 704) = &off_69F6BC; *(_DWORD *)(v1 + 712) = &off_69F6BC; *(_DWORD *)(v1 + 720) = &off_69F6BC; *(_DWORD *)(v1 + 728) = &off_69F6BC; *(_DWORD *)(v1 + 736) = &off_69F86C; *(_DWORD *)(v1 + 744) = &off_69F6BC; *(_DWORD *)(v1 + 752) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 760); *(_DWORD *)(v1 + 768) = &off_69F6BC; *(_DWORD *)(v1 + 776) = &off_69F74C; *(_DWORD *)(v1 + 828) = &off_69F6BC; *(_DWORD *)(v1 + 836) = &off_69F6BC; *(_DWORD *)(v1 + 844) = &off_69F6BC; *(_DWORD *)(v1 + 852) = &off_69F6BC; *(_DWORD *)(v1 + 860) = &off_69F6BC; *(_DWORD *)(v1 + 868) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 876); *(_DWORD *)(v1 + 884) = &off_69F6BC; *(_DWORD *)(v1 + 892) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 900); *(_DWORD *)(v1 + 908) = &off_69F6BC; *(_DWORD *)(v1 + 916) = &off_69F74C; *(_DWORD *)(v1 + 968) = &off_69F6BC; *(_DWORD *)(v1 + 976) = &off_69F6BC; *(_DWORD *)(v1 + 984) = &off_69F6BC; *(_DWORD *)(v1 + 992) = &off_69F6BC; *(_DWORD *)(v1 + 1000) = &off_69F6BC; *(_DWORD *)(v1 + 1008) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1016); *(_DWORD *)(v1 + 1024) = &off_69F6BC; *(_DWORD *)(v1 + 1032) = &off_69F6BC; *(_DWORD *)(v1 + 1040) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1048); *(_DWORD *)(v1 + 1056) = &off_69F6BC; *(_DWORD *)(v1 + 1064) = &off_69F6BC; *(_DWORD *)(v1 + 1072) = &off_69F6BC; *(_DWORD *)(v1 + 1080) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1088); *(_DWORD *)(v1 + 1096) = &off_69F6BC; *(_DWORD *)(v1 + 1104) = &off_69F6BC; *(_DWORD *)(v1 + 1112) = &off_69F6BC; *(_DWORD *)(v1 + 1120) = &off_69F6BC; *(_DWORD *)(v1 + 1128) = &off_69F6BC; *(_DWORD *)(v1 + 1136) = &off_69F6BC; *(_DWORD *)(v1 + 1144) = &off_69F6BC; *(_DWORD *)(v1 + 1152) = &off_69F6BC; *(_DWORD *)(v1 + 1160) = &off_69F6BC; *(_DWORD *)(v1 + 1168) = &off_69F6BC; *(_DWORD *)(v1 + 1176) = &off_69F7DC; *(_DWORD *)(v1 + 1184) = &off_69F6BC; *(_DWORD *)(v1 + 1192) = &off_69F6BC; *(_DWORD *)(v1 + 1200) = &off_69F6BC; *(_DWORD *)(v1 + 1208) = &off_69F6BC; *(_DWORD *)(v1 + 1216) = &off_69F74C; *(_DWORD *)(v1 + 1268) = &off_69F6BC; *(_DWORD *)(v1 + 1276) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1284); *(_DWORD *)(v1 + 1292) = &off_69F6BC; *(_DWORD *)(v1 + 1300) = &off_69F6BC; *(_DWORD *)(v1 + 1308) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1316); *(_DWORD *)(v1 + 1324) = &off_69F6BC; *(_DWORD *)(v1 + 1332) = &off_69F6BC; *(_DWORD *)(v1 + 1340) = &off_69F6BC; *(_DWORD *)(v1 + 1348) = &off_69F6BC; *(_DWORD *)(v1 + 1356) = &off_69F6BC; *(_DWORD *)(v1 + 1364) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1372); *(_DWORD *)(v1 + 1380) = &off_69F6BC; *(_DWORD *)(v1 + 1388) = &off_69F6BC; *(_DWORD *)(v1 + 1396) = &off_69F6BC; *(_DWORD *)(v1 + 1404) = &off_69F7DC; *(_DWORD *)(v1 + 1412) = &off_69F7DC; *(_DWORD *)(v1 + 1420) = &off_69F7DC; *(_DWORD *)(v1 + 1428) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1436); *(_DWORD *)(v1 + 1444) = &off_69F6BC; *(_DWORD *)(v1 + 1452) = &off_69F6BC; *(_DWORD *)(v1 + 1460) = &off_69F6BC; *(_DWORD *)(v1 + 1468) = &off_69F6BC; *(_DWORD *)(v1 + 1476) = &off_69F6BC; *(_DWORD *)(v1 + 1484) = &off_69F6BC; *(_DWORD *)(v1 + 1492) = &off_69F6BC; *(_DWORD *)(v1 + 1500) = &off_69F6BC; *(_DWORD *)(v1 + 1508) = &off_69F6BC; *(_DWORD *)(v1 + 1516) = &off_69F6BC; *(_DWORD *)(v1 + 1524) = &off_69F6BC; *(_DWORD *)(v1 + 1532) = &off_69F6BC; *(_DWORD *)(v1 + 1540) = &off_69F6BC; *(_DWORD *)(v1 + 1548) = &off_69F6BC; *(_DWORD *)(v1 + 1556) = &off_69F6BC; *(_DWORD *)(v1 + 1564) = &off_69F6BC; *(_DWORD *)(v1 + 1572) = &off_69F6BC; *(_DWORD *)(v1 + 1580) = &off_69F6BC; *(_DWORD *)(v1 + 1588) = &off_69F6BC; *(_DWORD *)(v1 + 1596) = &off_69F6BC; *(_DWORD *)(v1 + 1604) = &off_69F6BC; *(_DWORD *)(v1 + 1612) = &off_69F6BC; *(_DWORD *)(v1 + 1620) = &off_69F6BC; *(_DWORD *)(v1 + 1628) = &off_69F6BC; *(_DWORD *)(v1 + 1636) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1644); *(_DWORD *)(v1 + 1652) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1660); *(_DWORD *)(v1 + 1668) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1676); *(_DWORD *)(v1 + 1684) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1692); *(_DWORD *)(v1 + 1700) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1708); *(_DWORD *)(v1 + 1716) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1724); *(_DWORD *)(v1 + 1732) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1740); *(_DWORD *)(v1 + 1748) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1756); *(_DWORD *)(v1 + 1764) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1772); *(_DWORD *)(v1 + 1780) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1788); *(_DWORD *)(v1 + 1796) = &off_69F6BC; *(_DWORD *)(v1 + 1804) = &off_69F6BC; *(_DWORD *)(v1 + 1812) = &off_69F6BC; *(_DWORD *)(v1 + 1820) = &off_69F6BC; *(_DWORD *)(v1 + 1828) = &off_69F6BC; *(_DWORD *)(v1 + 1836) = &off_69F6BC; *(_DWORD *)(v1 + 1844) = &off_69F6BC; *(_DWORD *)(v1 + 1852) = &off_69F6BC; *(_DWORD *)(v1 + 1860) = &off_69F6BC; *(_DWORD *)(v1 + 1868) = &off_69F6BC; *(_DWORD *)(v1 + 1876) = &off_69F6BC; *(_DWORD *)(v1 + 1884) = &off_69F6BC; *(_DWORD *)(v1 + 1892) = &off_69F6BC; *(_DWORD *)(v1 + 1900) = &off_69F6BC; *(_DWORD *)(v1 + 1908) = &off_69F6BC; *(_DWORD *)(v1 + 1916) = &off_69F6BC; *(_DWORD *)(v1 + 1924) = &off_69F6BC; *(_DWORD *)(v1 + 1932) = &off_69F6BC; *(_DWORD *)(v1 + 1940) = &off_69F6BC; *(_DWORD *)(v1 + 1948) = &off_69F6BC; *(_DWORD *)(v1 + 1956) = &off_69F6BC; *(_DWORD *)(v1 + 1964) = &off_69F6BC; *(_DWORD *)(v1 + 1972) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1980); *(_DWORD *)(v1 + 1988) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 1996); *(_DWORD *)(v1 + 2004) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2012); *(_DWORD *)(v1 + 2020) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2028); *(_DWORD *)(v1 + 2036) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2044); *(_DWORD *)(v1 + 2052) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2060); *(_DWORD *)(v1 + 2068) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2076); *(_DWORD *)(v1 + 2084) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2092); *(_DWORD *)(v1 + 2100) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2108); *(_DWORD *)(v1 + 2116) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2124); *(_DWORD *)(v1 + 2132) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2140); *(_DWORD *)(v1 + 2148) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2156); *(_DWORD *)(v1 + 2164) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2172); *(_DWORD *)(v1 + 2180) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2188); *(_DWORD *)(v1 + 2196) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2204); *(_DWORD *)(v1 + 2212) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2220); *(_DWORD *)(v1 + 2228) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2236); *(_DWORD *)(v1 + 2244) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2252); *(_DWORD *)(v1 + 2260) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2268); *(_DWORD *)(v1 + 2276) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2284); *(_DWORD *)(v1 + 2292) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2300); *(_DWORD *)(v1 + 2308) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2316); *(_DWORD *)(v1 + 2324) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2332); *(_DWORD *)(v1 + 2340) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2348); *(_DWORD *)(v1 + 2356) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2364); *(_DWORD *)(v1 + 2372) = &off_69F6BC; *(_DWORD *)(v1 + 2380) = &off_69F6BC; *(_DWORD *)(v1 + 2388) = &off_69F6BC; *(_DWORD *)(v1 + 2396) = &off_69F6BC; *(_DWORD *)(v1 + 2404) = &off_69F6BC; *(_DWORD *)(v1 + 2412) = &off_69F6BC; *(_DWORD *)(v1 + 2420) = &off_69F6BC; *(_DWORD *)(v1 + 2428) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2436); *(_DWORD *)(v1 + 2444) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2452); *(_DWORD *)(v1 + 2460) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2468); *(_DWORD *)(v1 + 2476) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2484); *(_DWORD *)(v1 + 2492) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2500); *(_DWORD *)(v1 + 2508) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2516); *(_DWORD *)(v1 + 2524) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2532); *(_DWORD *)(v1 + 2540) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2548); *(_DWORD *)(v1 + 2556) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2564); *(_DWORD *)(v1 + 2572) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2580); *(_DWORD *)(v1 + 2588) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 2596); *(_DWORD *)(v1 + 2604) = &off_69F6BC; *(_DWORD *)(v1 + 2612) = &off_69F6BC; *(_DWORD *)(v1 + 2620) = &off_69F6BC; *(_DWORD *)(v1 + 2628) = &off_69F6BC; *(_DWORD *)(v1 + 2636) = &off_69F6BC; *(_DWORD *)(v1 + 2644) = &off_69F6BC; *(_DWORD *)(v1 + 2652) = &off_69F6BC; *(_DWORD *)(v1 + 2660) = &off_69F6BC; *(_DWORD *)(v1 + 2668) = &off_69F6BC; *(_DWORD *)(v1 + 2676) = &off_69F6BC; *(_DWORD *)(v1 + 2684) = &off_69F6BC; *(_DWORD *)(v1 + 2692) = &off_69F6BC; *(_DWORD *)(v1 + 2700) = &off_69F6BC; *(_DWORD *)(v1 + 2708) = &off_69F6BC; *(_DWORD *)(v1 + 2716) = &off_69F6BC; *(_DWORD *)(v1 + 2724) = &off_69F6BC; *(_DWORD *)(v1 + 2732) = &off_69F6BC; *(_DWORD *)(v1 + 2740) = &off_69F6BC; *(_DWORD *)(v1 + 2748) = &off_69F6BC; *(_DWORD *)(v1 + 2756) = &off_69F6BC; *(_DWORD *)(v1 + 2764) = &off_69F6BC; *(_DWORD *)(v1 + 2772) = &off_69F6BC; *(_DWORD *)(v1 + 2780) = &off_69F6BC; *(_DWORD *)(v1 + 2788) = &off_69F6BC; *(_DWORD *)(v1 + 2796) = &off_69F6BC; *(_DWORD *)(v1 + 2804) = &off_69F6BC; *(_DWORD *)(v1 + 2812) = &off_69F6BC; *(_DWORD *)(v1 + 2820) = &off_69F6BC; *(_DWORD *)(v1 + 2828) = &off_69F6BC; *(_DWORD *)(v1 + 2836) = &off_69F6BC; *(_DWORD *)(v1 + 2844) = &off_69F6BC; *(_DWORD *)(v1 + 2852) = &off_69F6BC; *(_DWORD *)(v1 + 2860) = &off_69F6BC; *(_DWORD *)(v1 + 2868) = &off_69F6BC; *(_DWORD *)(v1 + 2876) = &off_69F6BC; *(_DWORD *)(v1 + 2884) = &off_69F6BC; *(_DWORD *)(v1 + 2892) = &off_69F6BC; *(_DWORD *)(v1 + 2900) = &off_69F6BC; *(_DWORD *)(v1 + 2908) = &off_69F6BC; *(_DWORD *)(v1 + 2916) = &off_69F6BC; *(_DWORD *)(v1 + 2924) = &off_69F6BC; *(_DWORD *)(v1 + 2932) = &off_69F6BC; *(_DWORD *)(v1 + 2940) = &off_69F6BC; *(_DWORD *)(v1 + 2948) = &off_69F6BC; *(_DWORD *)(v1 + 2956) = &off_69F6BC; *(_DWORD *)(v1 + 2964) = &off_69F6BC; *(_DWORD *)(v1 + 2972) = &off_69F6BC; *(_DWORD *)(v1 + 2980) = &off_69F6BC; *(_DWORD *)(v1 + 2988) = &off_69F6BC; *(_DWORD *)(v1 + 2996) = &off_69F6BC; *(_DWORD *)(v1 + 3004) = &off_69F6BC; *(_DWORD *)(v1 + 3012) = &off_69F6BC; *(_DWORD *)(v1 + 3020) = &off_69F6BC; *(_DWORD *)(v1 + 3028) = &off_69F6BC; *(_DWORD *)(v1 + 3036) = &off_69F6BC; *(_DWORD *)(v1 + 3044) = &off_69F6BC; *(_DWORD *)(v1 + 3052) = &off_69F6BC; *(_DWORD *)(v1 + 3060) = &off_69F6BC; *(_DWORD *)(v1 + 3068) = &off_69F6BC; *(_DWORD *)(v1 + 3076) = &off_69F6BC; *(_DWORD *)(v1 + 3084) = &off_69F6BC; *(_DWORD *)(v1 + 3092) = &off_69F6BC; *(_DWORD *)(v1 + 3100) = &off_69F6BC; *(_DWORD *)(v1 + 3108) = &off_69F6BC; *(_DWORD *)(v1 + 3116) = &off_69F6BC; *(_DWORD *)(v1 + 3124) = &off_69F6BC; *(_DWORD *)(v1 + 3132) = &off_69F6BC; *(_DWORD *)(v1 + 3140) = &off_69F6BC; *(_DWORD *)(v1 + 3148) = &off_69F6BC; *(_DWORD *)(v1 + 3156) = &off_69F6BC; *(_DWORD *)(v1 + 3164) = &off_69F6BC; *(_DWORD *)(v1 + 3172) = &off_69F6BC; *(_DWORD *)(v1 + 3180) = &off_69F6BC; *(_DWORD *)(v1 + 3188) = &off_69F83C; *(_BYTE *)(v1 + 3196) = 0; *(_DWORD *)(v1 + 3200) = &off_69F6BC; *(_DWORD *)(v1 + 3208) = &off_69F6BC; *(_DWORD *)(v1 + 3216) = &off_69F6BC; *(_DWORD *)(v1 + 3224) = &off_69F6BC; *(_DWORD *)(v1 + 3232) = &off_69F6BC; *(_DWORD *)(v1 + 3240) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3248); *(_DWORD *)(v1 + 3256) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3264); *(_DWORD *)(v1 + 3272) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3280); *(_DWORD *)(v1 + 3288) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3296); *(_DWORD *)(v1 + 3304) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3312); *(_DWORD *)(v1 + 3320) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3328); *(_DWORD *)(v1 + 3336) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3344); *(_DWORD *)(v1 + 3352) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3360); *(_DWORD *)(v1 + 3368) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3376); *(_DWORD *)(v1 + 3384) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3392); *(_DWORD *)(v1 + 3400) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3408); *(_DWORD *)(v1 + 3416) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3424); *(_DWORD *)(v1 + 3432) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3440); *(_DWORD *)(v1 + 3448) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3456); *(_DWORD *)(v1 + 3464) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3472); *(_DWORD *)(v1 + 3480) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3488); *(_DWORD *)(v1 + 3496) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3504); *(_DWORD *)(v1 + 3512) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3520); *(_DWORD *)(v1 + 3528) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3536); *(_DWORD *)(v1 + 3544) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3552); *(_DWORD *)(v1 + 3560) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3568); *(_DWORD *)(v1 + 3576) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3584); *(_DWORD *)(v1 + 3592) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3600); *(_DWORD *)(v1 + 3608) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3616); *(_DWORD *)(v1 + 3624) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3632); *(_DWORD *)(v1 + 3640) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3648); *(_DWORD *)(v1 + 3656) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3664); *(_DWORD *)(v1 + 3672) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3680); *(_DWORD *)(v1 + 3688) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3696); *(_DWORD *)(v1 + 3704) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3712); *(_DWORD *)(v1 + 3720) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3728); *(_DWORD *)(v1 + 3736) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3744); *(_DWORD *)(v1 + 3752) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3760); *(_DWORD *)(v1 + 3768) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3776); *(_DWORD *)(v1 + 3784) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3792); *(_DWORD *)(v1 + 3800) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3808); *(_DWORD *)(v1 + 3816) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3824); *(_DWORD *)(v1 + 3832) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3840); *(_DWORD *)(v1 + 3848) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3856); *(_DWORD *)(v1 + 3864) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3872); *(_DWORD *)(v1 + 3880) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3888); *(_DWORD *)(v1 + 3896) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3904); *(_DWORD *)(v1 + 3912) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3920); *(_DWORD *)(v1 + 3928) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3936); *(_DWORD *)(v1 + 3944) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3952); *(_DWORD *)(v1 + 3960) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3968); *(_DWORD *)(v1 + 3976) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 3984); *(_DWORD *)(v1 + 3992) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4000); *(_DWORD *)(v1 + 4008) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4016); *(_DWORD *)(v1 + 4024) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4032); *(_DWORD *)(v1 + 4040) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4048); *(_DWORD *)(v1 + 4056) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4064); *(_DWORD *)(v1 + 4072) = &off_69FB3C; *(_DWORD *)(v1 + 4124) = &off_69F6BC; *(_DWORD *)(v1 + 4132) = &off_69F6BC; *(_DWORD *)(v1 + 4140) = &off_69F6BC; *(_DWORD *)(v1 + 4148) = &off_69F6BC; *(_DWORD *)(v1 + 4156) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4164); *(_DWORD *)(v1 + 4172) = &off_69F80C; *(_DWORD *)(v1 + 4192) = &off_69F6BC; *(_DWORD *)(v1 + 4200) = &off_69F80C; *(_DWORD *)(v1 + 4220) = &off_69F6BC; *(_DWORD *)(v1 + 4228) = &off_69F6BC; *(_DWORD *)(v1 + 4236) = &off_69F6BC; *(_DWORD *)(v1 + 4244) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4252); *(_DWORD *)(v1 + 4260) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4268); *(_DWORD *)(v1 + 4276) = &off_69F6BC; *(_DWORD *)(v1 + 4284) = &off_69F6BC; *(_DWORD *)(v1 + 4292) = &off_69F6BC; *(_DWORD *)(v1 + 4300) = &off_69F6BC; *(_DWORD *)(v1 + 4308) = &off_69F6BC; *(_DWORD *)(v1 + 4316) = &off_69F6BC; *(_DWORD *)(v1 + 4324) = &off_69F6BC; *(_DWORD *)(v1 + 4332) = &off_69F6BC; *(_DWORD *)(v1 + 4340) = &off_69F6BC; *(_DWORD *)(v1 + 4348) = &off_69F6BC; *(_DWORD *)(v1 + 4356) = &off_69F6BC; *(_DWORD *)(v1 + 4364) = &off_69F7DC; *(_DWORD *)(v1 + 4372) = &off_69F7DC; *(_DWORD *)(v1 + 4380) = &off_69F7DC; *(_DWORD *)(v1 + 4388) = &off_69F7DC; *(_DWORD *)(v1 + 4396) = &off_69F7DC; *(_DWORD *)(v1 + 4404) = &off_69F7DC; *(_DWORD *)(v1 + 4412) = &off_69F7DC; *(_DWORD *)(v1 + 4420) = &off_69F7DC; *(_DWORD *)(v1 + 4428) = &off_69F7DC; *(_DWORD *)(v1 + 4436) = &off_69F7DC; *(_DWORD *)(v1 + 4444) = &off_69F6BC; *(_DWORD *)(v1 + 4452) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4460); *(_DWORD *)(v1 + 4468) = &off_69F6BC; *(_DWORD *)(v1 + 4476) = &off_69F6BC; *(_DWORD *)(v1 + 4484) = &off_69F6BC; *(_DWORD *)(v1 + 4492) = &off_69F6BC; *(_DWORD *)(v1 + 4500) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4508); *(_DWORD *)(v1 + 4516) = &off_69F77C; *(_DWORD *)(v1 + 4532) = &off_69F6BC; *(_DWORD *)(v1 + 4540) = &off_69F6BC; *(_DWORD *)(v1 + 4548) = &off_69F6BC; *(_DWORD *)(v1 + 4556) = &off_69F6BC; *(_DWORD *)(v1 + 4564) = &off_69F6BC; *(_DWORD *)(v1 + 4572) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4580); *(_DWORD *)(v1 + 4588) = &off_69F6BC; *(_DWORD *)(v1 + 4596) = &off_69F6BC; *(_DWORD *)(v1 + 4604) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4612); *(_DWORD *)(v1 + 4620) = &off_69F7DC; *(_DWORD *)(v1 + 4628) = &off_69F71C; *(_DWORD *)(v1 + 4636) = &off_69F71C; *(_DWORD *)(v1 + 4644) = &off_69F71C; *(_DWORD *)(v1 + 4652) = &off_69F71C; *(_DWORD *)(v1 + 4660) = &off_69F6BC; *(_DWORD *)(v1 + 4668) = &off_69F6EC; *(_DWORD *)(v1 + 4676) = &off_69F6BC; *(_DWORD *)(v1 + 4684) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4692); *(_DWORD *)(v1 + 4700) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4708); *(_DWORD *)(v1 + 4716) = &off_69F6BC; *(_DWORD *)(v1 + 4724) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4732); *(_DWORD *)(v1 + 4740) = &off_69F6BC; *(_DWORD *)(v1 + 4748) = &off_69F6BC; *(_DWORD *)(v1 + 4756) = &off_69F6BC; *(_DWORD *)(v1 + 4764) = &off_69F6BC; *(_DWORD *)(v1 + 4772) = &off_69F6BC; *(_DWORD *)(v1 + 4780) = &off_69F6BC; *(_DWORD *)(v1 + 4788) = &off_69F6BC; *(_DWORD *)(v1 + 4796) = &off_69F6BC; *(_DWORD *)(v1 + 4804) = &off_69F6BC; *(_DWORD *)(v1 + 4812) = &off_69F6BC; *(_DWORD *)(v1 + 4820) = &off_69F6BC; *(_DWORD *)(v1 + 4828) = &off_69F6BC; *(_DWORD *)(v1 + 4836) = &off_69F6BC; *(_DWORD *)(v1 + 4844) = &off_69F6BC; *(_DWORD *)(v1 + 4852) = &off_69F6BC; *(_DWORD *)(v1 + 4860) = &off_69F6BC; *(_DWORD *)(v1 + 4868) = &off_69F6BC; *(_DWORD *)(v1 + 4876) = &off_69F6BC; *(_DWORD *)(v1 + 4884) = &off_69F6BC; *(_DWORD *)(v1 + 4892) = &off_69F6BC; *(_DWORD *)(v1 + 4900) = &off_69F6BC; *(_DWORD *)(v1 + 4908) = &off_69F6BC; *(_DWORD *)(v1 + 4916) = &off_69F6BC; *(_DWORD *)(v1 + 4924) = &off_69F6BC; *(_DWORD *)(v1 + 4932) = &off_69F6BC; *(_DWORD *)(v1 + 4940) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4948); *(_DWORD *)(v1 + 4956) = &off_69F6BC; *(_DWORD *)(v1 + 4964) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 4972); *(_DWORD *)(v1 + 4980) = &off_69F6BC; *(_DWORD *)(v1 + 4988) = &off_69F6BC; *(_DWORD *)(v1 + 4996) = &off_69F6BC; *(_DWORD *)(v1 + 5004) = &off_69F6BC; *(_DWORD *)(v1 + 5012) = &off_69F6BC; *(_DWORD *)(v1 + 5020) = &off_69F6BC; *(_DWORD *)(v1 + 5028) = &off_69F6BC; *(_DWORD *)(v1 + 5036) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5044); *(_DWORD *)(v1 + 5052) = &off_69F6BC; *(_DWORD *)(v1 + 5060) = &off_69F6BC; *(_DWORD *)(v1 + 5068) = &off_69F6BC; *(_DWORD *)(v1 + 5076) = &off_69F6BC; *(_DWORD *)(v1 + 5084) = &off_69F6BC; *(_DWORD *)(v1 + 5092) = &off_69F6BC; *(_DWORD *)(v1 + 5100) = &off_69F6BC; *(_DWORD *)(v1 + 5108) = &off_69F6BC; *(_DWORD *)(v1 + 5116) = &off_69F6BC; *(_DWORD *)(v1 + 5124) = &off_69F6BC; *(_DWORD *)(v1 + 5132) = &off_69F6BC; *(_DWORD *)(v1 + 5140) = &off_69F6BC; *(_DWORD *)(v1 + 5148) = &off_69F6BC; *(_DWORD *)(v1 + 5156) = &off_69F6BC; *(_DWORD *)(v1 + 5164) = &off_69F6BC; *(_DWORD *)(v1 + 5172) = &off_69F6BC; *(_DWORD *)(v1 + 5180) = &off_69F6BC; *(_DWORD *)(v1 + 5188) = &off_69F6BC; *(_DWORD *)(v1 + 5196) = &off_69F6BC; *(_DWORD *)(v1 + 5204) = &off_69F6BC; *(_DWORD *)(v1 + 5212) = &off_69F7DC; *(_DWORD *)(v1 + 5220) = &off_69F6BC; *(_DWORD *)(v1 + 5228) = &off_69F6BC; *(_DWORD *)(v1 + 5236) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5244); *(_DWORD *)(v1 + 5252) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5260); *(_DWORD *)(v1 + 5268) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5276); *(_DWORD *)(v1 + 5284) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5292); *(_DWORD *)(v1 + 5300) = &off_69F6BC; *(_DWORD *)(v1 + 5308) = &off_69F6BC; *(_DWORD *)(v1 + 5316) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5324); *(_DWORD *)(v1 + 5332) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5340); *(_DWORD *)(v1 + 5348) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5356); *(_DWORD *)(v1 + 5364) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5372); *(_DWORD *)(v1 + 5380) = &off_69F6BC; *(_DWORD *)(v1 + 5388) = &off_69F71C; *(_DWORD *)(v1 + 5396) = &off_69F6BC; *(_DWORD *)(v1 + 5404) = &off_69F6BC; *(_DWORD *)(v1 + 5412) = &off_69F6BC; *(_DWORD *)(v1 + 5420) = &off_69F6BC; *(_DWORD *)(v1 + 5428) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5436); *(_DWORD *)(v1 + 5444) = &off_69F71C; *(_DWORD *)(v1 + 5452) = &off_69F6BC; *(_DWORD *)(v1 + 5460) = &off_69F6BC; *(_DWORD *)(v1 + 5468) = &off_69F6BC; *(_DWORD *)(v1 + 5476) = &off_69F6BC; *(_DWORD *)(v1 + 5484) = &off_69F6BC; *(_DWORD *)(v1 + 5492) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5500); *(_DWORD *)(v1 + 5508) = &off_69F6BC; *(_DWORD *)(v1 + 5516) = &off_69F6BC; *(_DWORD *)(v1 + 5524) = &off_69F6BC; *(_DWORD *)(v1 + 5532) = &off_69F6BC; *(_DWORD *)(v1 + 5540) = &off_69F6BC; *(_DWORD *)(v1 + 5548) = &off_69F6BC; *(_DWORD *)(v1 + 5556) = &off_69F6BC; *(_DWORD *)(v1 + 5564) = &off_69F6BC; *(_DWORD *)(v1 + 5572) = &off_69F6BC; *(_DWORD *)(v1 + 5580) = &off_69F6BC; *(_DWORD *)(v1 + 5588) = &off_69F6BC; *(_DWORD *)(v1 + 5596) = &off_69F6BC; *(_DWORD *)(v1 + 5604) = &off_69F6BC; *(_DWORD *)(v1 + 5612) = &off_69F6BC; *(_DWORD *)(v1 + 5620) = &off_69F6BC; *(_DWORD *)(v1 + 5628) = &off_69F6BC; *(_DWORD *)(v1 + 5636) = &off_69F6BC; *(_DWORD *)(v1 + 5644) = &off_69F6BC; *(_DWORD *)(v1 + 5652) = &off_69F6BC; *(_DWORD *)(v1 + 5660) = &off_69F6BC; *(_DWORD *)(v1 + 5668) = &off_69F6BC; *(_DWORD *)(v1 + 5676) = &off_69F6BC; *(_DWORD *)(v1 + 5684) = &off_69F6BC; *(_DWORD *)(v1 + 5692) = &off_69F6BC; *(_DWORD *)(v1 + 5700) = &off_69F6BC; *(_DWORD *)(v1 + 5708) = &off_69F6BC; *(_DWORD *)(v1 + 5716) = &off_69F6BC; *(_DWORD *)(v1 + 5724) = &off_69F6BC; *(_DWORD *)(v1 + 5732) = &off_69F6BC; *(_DWORD *)(v1 + 5740) = &off_69F6BC; *(_DWORD *)(v1 + 5748) = &off_69F6BC; *(_DWORD *)(v1 + 5756) = &off_69F6BC; *(_DWORD *)(v1 + 5764) = &off_69F6BC; *(_DWORD *)(v1 + 5772) = &off_69F6BC; *(_DWORD *)(v1 + 5780) = &off_69F6BC; *(_DWORD *)(v1 + 5788) = &off_69F6BC; *(_DWORD *)(v1 + 5796) = &off_69F6BC; *(_DWORD *)(v1 + 5804) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5812); *(_DWORD *)(v1 + 5820) = &off_69F6BC; *(_DWORD *)(v1 + 5828) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5836); *(_DWORD *)(v1 + 5844) = &off_69F6BC; *(_DWORD *)(v1 + 5852) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5860); *(_DWORD *)(v1 + 5868) = &off_69F74C; *(_DWORD *)(v1 + 5920) = &off_69F6BC; *(_DWORD *)(v1 + 5928) = &off_69F6BC; *(_DWORD *)(v1 + 5936) = &off_69F6BC; *(_DWORD *)(v1 + 5944) = &off_69F6BC; *(_DWORD *)(v1 + 5952) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 5960); *(_DWORD *)(v1 + 5968) = &off_69F6BC; *(_DWORD *)(v1 + 5976) = &off_69F6BC; *(_DWORD *)(v1 + 5984) = &off_69F6BC; *(_DWORD *)(v1 + 5992) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6000); *(_DWORD *)(v1 + 6008) = &off_69F6BC; *(_DWORD *)(v1 + 6016) = &off_69F6BC; *(_DWORD *)(v1 + 6024) = &off_69F6BC; *(_DWORD *)(v1 + 6032) = &off_69F6BC; *(_DWORD *)(v1 + 6040) = &off_69F6BC; *(_DWORD *)(v1 + 6048) = &off_69F6BC; *(_DWORD *)(v1 + 6056) = &off_69F6BC; *(_DWORD *)(v1 + 6064) = &off_69F6BC; *(_DWORD *)(v1 + 6072) = &off_69F6BC; *(_DWORD *)(v1 + 6080) = &off_69F6BC; *(_DWORD *)(v1 + 6088) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6096); *(_DWORD *)(v1 + 6104) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6112); *(_DWORD *)(v1 + 6120) = &off_69F6BC; *(_DWORD *)(v1 + 6128) = &off_69F6BC; *(_DWORD *)(v1 + 6136) = &off_69F6BC; *(_DWORD *)(v1 + 6144) = &off_69F6BC; *(_DWORD *)(v1 + 6152) = &off_69F6BC; *(_DWORD *)(v1 + 6160) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6168); *(_DWORD *)(v1 + 6176) = &off_69F6BC; *(_DWORD *)(v1 + 6184) = &off_69F6BC; *(_DWORD *)(v1 + 6192) = &off_69F6BC; *(_DWORD *)(v1 + 6200) = &off_69F6BC; *(_DWORD *)(v1 + 6208) = &off_69F6BC; *(_DWORD *)(v1 + 6216) = &off_69F6BC; *(_DWORD *)(v1 + 6224) = &off_69F6BC; *(_DWORD *)(v1 + 6232) = &off_69F6BC; *(_DWORD *)(v1 + 6240) = &off_69F6BC; *(_DWORD *)(v1 + 6248) = &off_69F6BC; *(_DWORD *)(v1 + 6256) = &off_69F6BC; *(_DWORD *)(v1 + 6264) = &off_69F6BC; *(_DWORD *)(v1 + 6272) = &off_69F6BC; *(_DWORD *)(v1 + 6280) = &off_69F6BC; *(_DWORD *)(v1 + 6288) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6296); *(_DWORD *)(v1 + 6304) = &off_69F6BC; *(_DWORD *)(v1 + 6312) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6320); *(_DWORD *)(v1 + 6328) = &off_69F6BC; *(_DWORD *)(v1 + 6336) = &off_69F77C; *(_DWORD *)(v1 + 6352) = &off_69F77C; *(_DWORD *)(v1 + 6368) = &off_69F6BC; *(_DWORD *)(v1 + 6376) = &off_69F6BC; *(_DWORD *)(v1 + 6384) = &off_69F6BC; *(_DWORD *)(v1 + 6392) = &off_69F6BC; *(_DWORD *)(v1 + 6400) = &off_69F6BC; *(_DWORD *)(v1 + 6408) = &off_69F6BC; *(_DWORD *)(v1 + 6416) = &off_69F6BC; *(_DWORD *)(v1 + 6424) = &off_69F6BC; *(_DWORD *)(v1 + 6432) = &off_69F6BC; *(_DWORD *)(v1 + 6440) = &off_69F77C; *(_DWORD *)(v1 + 6456) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6464); *(_DWORD *)(v1 + 6472) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6480); *(_DWORD *)(v1 + 6488) = &off_69F6BC; *(_DWORD *)(v1 + 6496) = &off_69F6BC; *(_DWORD *)(v1 + 6504) = &off_69F6BC; *(_DWORD *)(v1 + 6512) = &off_69F6BC; *(_DWORD *)(v1 + 6520) = &off_69F6BC; *(_DWORD *)(v1 + 6528) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6536); *(_DWORD *)(v1 + 6544) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6552); *(_DWORD *)(v1 + 6560) = &off_69F6BC; *(_DWORD *)(v1 + 6568) = &off_69F6BC; *(_DWORD *)(v1 + 6576) = &off_69F71C; *(_DWORD *)(v1 + 6584) = &off_69F6BC; *(_DWORD *)(v1 + 6592) = &off_69F6BC; *(_DWORD *)(v1 + 6600) = &off_69F6BC; *(_DWORD *)(v1 + 6608) = &off_69F6BC; *(_DWORD *)(v1 + 6616) = &off_69F6BC; *(_DWORD *)(v1 + 6624) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6632); *(_DWORD *)(v1 + 6640) = &off_69F6BC; *(_DWORD *)(v1 + 6648) = &off_69F71C; *(_DWORD *)(v1 + 6656) = &off_69F6BC; *(_DWORD *)(v1 + 6664) = &off_69F6BC; *(_DWORD *)(v1 + 6672) = &off_69F6BC; *(_DWORD *)(v1 + 6680) = &off_69F6BC; *(_DWORD *)(v1 + 6688) = &off_69F6BC; *(_DWORD *)(v1 + 6696) = &off_69F6BC; *(_DWORD *)(v1 + 6704) = &off_69F6BC; *(_DWORD *)(v1 + 6712) = &off_69F6BC; *(_DWORD *)(v1 + 6720) = &off_69F6BC; *(_DWORD *)(v1 + 6728) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6736); *(_DWORD *)(v1 + 6744) = &off_69F6BC; *(_DWORD *)(v1 + 6752) = &off_69F6BC; *(_DWORD *)(v1 + 6760) = &off_69F6BC; *(_DWORD *)(v1 + 6768) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6776); *(_DWORD *)(v1 + 6784) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6792); *(_DWORD *)(v1 + 6800) = &off_69F6BC; *(_DWORD *)(v1 + 6808) = &off_69F6BC; *(_DWORD *)(v1 + 6816) = &off_69F6BC; *(_DWORD *)(v1 + 6824) = &off_69F6BC; *(_DWORD *)(v1 + 6832) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6840); *(_DWORD *)(v1 + 6848) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6856); *(_DWORD *)(v1 + 6864) = &off_69F6BC; *(_DWORD *)(v1 + 6872) = &off_69F6BC; *(_DWORD *)(v1 + 6880) = &off_69F6BC; *(_DWORD *)(v1 + 6888) = &off_69F6BC; *(_DWORD *)(v1 + 6896) = &off_69F6BC; *(_DWORD *)(v1 + 6904) = &off_69F6BC; *(_DWORD *)(v1 + 6912) = &off_69F6BC; *(_DWORD *)(v1 + 6920) = &off_69F6BC; *(_DWORD *)(v1 + 6928) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6936); *(_DWORD *)(v1 + 6944) = &off_69F6BC; *(_DWORD *)(v1 + 6952) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6960); *(_DWORD *)(v1 + 6968) = &off_69F89C; *(_DWORD *)(v1 + 6980) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 6988); *(_DWORD *)(v1 + 6996) = &off_69F6BC; *(_DWORD *)(v1 + 7004) = &off_69F6BC; *(_DWORD *)(v1 + 7012) = &off_69F6BC; *(_DWORD *)(v1 + 7020) = &off_69F6BC; *(_DWORD *)(v1 + 7028) = &off_69F77C; *(_DWORD *)(v1 + 7044) = &off_69F6BC; *(_DWORD *)(v1 + 7052) = &off_69F6BC; *(_DWORD *)(v1 + 7060) = &off_69F6BC; *(_DWORD *)(v1 + 7068) = &off_69F6BC; *(_DWORD *)(v1 + 7076) = &off_69F6BC; *(_DWORD *)(v1 + 7084) = &off_69F74C; *(_DWORD *)(v1 + 7136) = &off_69F6BC; *(_DWORD *)(v1 + 7144) = &off_69F6BC; *(_DWORD *)(v1 + 7152) = &off_69F6BC; *(_DWORD *)(v1 + 7160) = &off_69F6BC; *(_DWORD *)(v1 + 7168) = &off_69F6BC; *(_DWORD *)(v1 + 7176) = &off_69F6BC; *(_DWORD *)(v1 + 7184) = &off_69F6BC; *(_DWORD *)(v1 + 7192) = &off_69F6BC; *(_DWORD *)(v1 + 7200) = &off_69F6BC; *(_DWORD *)(v1 + 7208) = &off_69F6BC; *(_DWORD *)(v1 + 7216) = &off_69F6BC; *(_DWORD *)(v1 + 7224) = &off_69F6BC; *(_DWORD *)(v1 + 7232) = &off_69F6BC; *(_DWORD *)(v1 + 7240) = &off_69F6BC; *(_DWORD *)(v1 + 7248) = &off_69F6BC; *(_DWORD *)(v1 + 7256) = &off_69F71C; *(_DWORD *)(v1 + 7264) = &off_69F6BC; *(_DWORD *)(v1 + 7272) = &off_69F6BC; *(_DWORD *)(v1 + 7280) = &off_69F6BC; *(_DWORD *)(v1 + 7288) = &off_69F6BC; *(_DWORD *)(v1 + 7296) = &off_69F6BC; *(_DWORD *)(v1 + 7304) = &off_69F6BC; *(_DWORD *)(v1 + 7312) = &off_69F6BC; *(_DWORD *)(v1 + 7320) = &off_69F6BC; *(_DWORD *)(v1 + 7328) = &off_69F6BC; *(_DWORD *)(v1 + 7336) = &off_69F6BC; *(_DWORD *)(v1 + 7344) = &off_69F6BC; *(_DWORD *)(v1 + 7352) = &off_69F6BC; *(_DWORD *)(v1 + 7360) = &off_69F6BC; *(_DWORD *)(v1 + 7368) = &off_69F6BC; *(_DWORD *)(v1 + 7376) = &off_69F6BC; *(_DWORD *)(v1 + 7384) = &off_69F6BC; *(_DWORD *)(v1 + 7392) = &off_69F6BC; *(_DWORD *)(v1 + 7400) = &off_69F6BC; *(_DWORD *)(v1 + 7408) = &off_69F6BC; *(_DWORD *)(v1 + 7416) = &off_69F6BC; *(_DWORD *)(v1 + 7424) = &off_69F6BC; *(_DWORD *)(v1 + 7432) = &off_69F6BC; *(_DWORD *)(v1 + 7440) = &off_69F6BC; *(_DWORD *)(v1 + 7448) = &off_69F6BC; *(_DWORD *)(v1 + 7456) = &off_69F6BC; *(_DWORD *)(v1 + 7464) = &off_69F6BC; *(_DWORD *)(v1 + 7472) = &off_69F6BC; *(_DWORD *)(v1 + 7480) = &off_69F6BC; *(_DWORD *)(v1 + 7488) = &off_69F6BC; *(_DWORD *)(v1 + 7496) = &off_69F6BC; *(_DWORD *)(v1 + 7504) = &off_69F6BC; *(_DWORD *)(v1 + 7512) = &off_69F6BC; *(_DWORD *)(v1 + 7520) = &off_69F6BC; *(_DWORD *)(v1 + 7528) = &off_69F6BC; *(_DWORD *)(v1 + 7536) = &off_69F6BC; *(_DWORD *)(v1 + 7544) = &off_69F6BC; *(_DWORD *)(v1 + 7552) = &off_69F6BC; *(_DWORD *)(v1 + 7560) = &off_69F6BC; *(_DWORD *)(v1 + 7568) = &off_69F6BC; *(_DWORD *)(v1 + 7576) = &off_69F6BC; *(_DWORD *)(v1 + 7584) = &off_69F6BC; *(_DWORD *)(v1 + 7592) = &off_69F6BC; *(_DWORD *)(v1 + 7600) = &off_69F6BC; *(_DWORD *)(v1 + 7608) = &off_69F6BC; *(_DWORD *)(v1 + 7616) = &off_69F6BC; *(_DWORD *)(v1 + 7624) = &off_69F6BC; *(_DWORD *)(v1 + 7632) = &off_69F6BC; *(_DWORD *)(v1 + 7640) = &off_69F6BC; *(_DWORD *)(v1 + 7648) = &off_69F6BC; *(_DWORD *)(v1 + 7656) = &off_69F6BC; *(_DWORD *)(v1 + 7664) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7672); *(_DWORD *)(v1 + 7680) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7688); *(_DWORD *)(v1 + 7696) = &off_69F6BC; *(_DWORD *)(v1 + 7704) = &off_69F6BC; *(_DWORD *)(v1 + 7712) = &off_69F6BC; *(_DWORD *)(v1 + 7720) = &off_69F6BC; *(_DWORD *)(v1 + 7728) = &off_69F6BC; *(_DWORD *)(v1 + 7736) = &off_69F6BC; *(_DWORD *)(v1 + 7744) = &off_69F6BC; *(_DWORD *)(v1 + 7752) = &off_69F6BC; *(_DWORD *)(v1 + 7760) = &off_69F6BC; *(_DWORD *)(v1 + 7768) = &off_69F6BC; *(_DWORD *)(v1 + 7776) = &off_69F6BC; *(_DWORD *)(v1 + 7784) = &off_69F6BC; *(_DWORD *)(v1 + 7792) = &off_69F6BC; *(_DWORD *)(v1 + 7800) = &off_69F6BC; *(_DWORD *)(v1 + 7808) = &off_69F6BC; *(_DWORD *)(v1 + 7816) = &off_69F6BC; *(_DWORD *)(v1 + 7824) = &off_69F6BC; *(_DWORD *)(v1 + 7832) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7840); *(_DWORD *)(v1 + 7848) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7856); *(_DWORD *)(v1 + 7864) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7872); *(_DWORD *)(v1 + 7880) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7888); *(_DWORD *)(v1 + 7896) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7904); *(_DWORD *)(v1 + 7912) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7920); *(_DWORD *)(v1 + 7928) = &off_69F6BC; *(_DWORD *)(v1 + 7936) = &off_69F6BC; *(_DWORD *)(v1 + 7944) = &off_69F6BC; *(_DWORD *)(v1 + 7952) = &off_69F6BC; *(_DWORD *)(v1 + 7960) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7968); *(_DWORD *)(v1 + 7976) = &off_69F7DC; *(_DWORD *)(v1 + 7984) = &off_69F7DC; *(_DWORD *)(v1 + 7992) = &off_69F6BC; *(_DWORD *)(v1 + 8000) = &off_69F6BC; *(_DWORD *)(v1 + 8008) = &off_69F6BC; *(_DWORD *)(v1 + 8016) = &off_69F6BC; *(_DWORD *)(v1 + 8024) = &off_69F6BC; *(_DWORD *)(v1 + 8032) = &off_69F6BC; *(_DWORD *)(v1 + 8040) = &off_69F71C; *(_DWORD *)(v1 + 8048) = &off_69F71C; *(_DWORD *)(v1 + 8056) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8064); *(_DWORD *)(v1 + 8072) = &off_69F6BC; *(_DWORD *)(v1 + 8080) = &off_69F6BC; *(_DWORD *)(v1 + 8088) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8096); *(_DWORD *)(v1 + 8104) = &off_69F7DC; *(_DWORD *)(v1 + 8112) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8120); *(_DWORD *)(v1 + 8128) = &off_69F6BC; *(_DWORD *)(v1 + 8136) = &off_69F6BC; *(_DWORD *)(v1 + 8144) = &off_69F6BC; *(_DWORD *)(v1 + 8152) = &off_69F6BC; *(_DWORD *)(v1 + 8160) = &off_69F6BC; *(_DWORD *)(v1 + 8168) = &off_69F6BC; *(_DWORD *)(v1 + 8176) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8184); *(_DWORD *)(v1 + 8192) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8200); *(_DWORD *)(v1 + 8208) = &off_69F6BC; *(_DWORD *)(v1 + 8216) = &off_69F6BC; *(_DWORD *)(v1 + 8224) = &off_69F6BC; *(_DWORD *)(v1 + 8232) = &off_69F6BC; *(_DWORD *)(v1 + 8240) = &off_69F6BC; *(_DWORD *)(v1 + 8248) = &off_69F6BC; *(_DWORD *)(v1 + 8256) = &off_69F6BC; *(_DWORD *)(v1 + 8264) = &off_69F6BC; *(_DWORD *)(v1 + 8272) = &off_69F6BC; *(_DWORD *)(v1 + 8280) = &off_69F6BC; *(_DWORD *)(v1 + 8288) = &off_69F6BC; *(_DWORD *)(v1 + 8296) = &off_69F6BC; *(_DWORD *)(v1 + 8304) = &off_69F6BC; *(_DWORD *)(v1 + 8312) = &off_69F6BC; *(_DWORD *)(v1 + 8320) = &off_69F6BC; *(_DWORD *)(v1 + 8328) = &off_69F6BC; *(_DWORD *)(v1 + 8336) = &off_69F6BC; *(_DWORD *)(v1 + 8344) = &off_69F6BC; *(_DWORD *)(v1 + 8352) = &off_69F6BC; *(_DWORD *)(v1 + 8360) = &off_69F6BC; *(_DWORD *)(v1 + 8368) = &off_69F6BC; *(_DWORD *)(v1 + 8376) = &off_69F6BC; *(_DWORD *)(v1 + 8384) = &off_69F6BC; *(_DWORD *)(v1 + 8392) = &off_69F74C; *(_DWORD *)(v1 + 8444) = &off_69F74C; *(_DWORD *)(v1 + 8496) = &off_69F74C; *(_DWORD *)(v1 + 8548) = &off_69F74C; *(_DWORD *)(v1 + 8600) = &off_69F74C; *(_DWORD *)(v1 + 8652) = &off_69F6BC; *(_DWORD *)(v1 + 8660) = &off_69F6BC; *(_DWORD *)(v1 + 8668) = &off_69F6BC; *(_DWORD *)(v1 + 8676) = &off_69F6BC; *(_DWORD *)(v1 + 8684) = &off_69F6BC; *(_DWORD *)(v1 + 8692) = &off_69F6BC; *(_DWORD *)(v1 + 8700) = &off_69F6BC; *(_DWORD *)(v1 + 8708) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8716); *(_DWORD *)(v1 + 8724) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8732); *(_DWORD *)(v1 + 8740) = &off_69F6BC; *(_DWORD *)(v1 + 8748) = &off_69F6BC; *(_DWORD *)(v1 + 8756) = &off_69F6BC; *(_DWORD *)(v1 + 8764) = &off_69F6BC; *(_DWORD *)(v1 + 8772) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8780); *(_DWORD *)(v1 + 8788) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8796); *(_DWORD *)(v1 + 8804) = &off_69F6BC; *(_DWORD *)(v1 + 8812) = &off_69F6BC; *(_DWORD *)(v1 + 8820) = &off_69F6BC; *(_DWORD *)(v1 + 8828) = &off_69F74C; *(_DWORD *)(v1 + 8880) = &off_69F6BC; *(_DWORD *)(v1 + 8888) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8896); *(_DWORD *)(v1 + 8904) = &off_69F71C; *(_DWORD *)(v1 + 8912) = &off_69F6BC; *(_DWORD *)(v1 + 8920) = &off_69F7DC; *(_DWORD *)(v1 + 8928) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 8936); *(_DWORD *)(v1 + 8944) = &off_69F6BC; *(_DWORD *)(v1 + 8952) = &off_69F6BC; *(_DWORD *)(v1 + 8960) = &off_69F6BC; *(_DWORD *)(v1 + 8968) = &off_69F6BC; *(_DWORD *)(v1 + 8976) = &off_69F6BC; *(_DWORD *)(v1 + 8984) = &off_69F6BC; *(_DWORD *)(v1 + 8992) = &off_69F6BC; *(_DWORD *)(v1 + 9000) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9008); *(_DWORD *)(v1 + 9016) = &off_69F6BC; *(_DWORD *)(v1 + 9024) = &off_69F6BC; *(_DWORD *)(v1 + 9032) = &off_69F6BC; *(_DWORD *)(v1 + 9040) = &off_69F6BC; *(_DWORD *)(v1 + 9048) = &off_69F6BC; *(_DWORD *)(v1 + 9056) = &off_69F6BC; *(_DWORD *)(v1 + 9064) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9072); *(_DWORD *)(v1 + 9080) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9088); *(_DWORD *)(v1 + 9096) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9104); *(_DWORD *)(v1 + 9112) = &off_69F6BC; *(_DWORD *)(v1 + 9120) = &off_69F6BC; *(_DWORD *)(v1 + 9128) = &off_69F6BC; *(_DWORD *)(v1 + 9136) = &off_69F6BC; *(_DWORD *)(v1 + 9144) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9152); *(_DWORD *)(v1 + 9160) = &off_69F6BC; *(_DWORD *)(v1 + 9168) = &off_69F6BC; *(_DWORD *)(v1 + 9176) = &off_69F6BC; *(_DWORD *)(v1 + 9184) = &off_69F6BC; *(_DWORD *)(v1 + 9192) = &off_69F6BC; *(_DWORD *)(v1 + 9200) = &off_69F6BC; *(_DWORD *)(v1 + 9208) = &off_69F6BC; *(_DWORD *)(v1 + 9216) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9224); *(_DWORD *)(v1 + 9232) = &off_69F6BC; *(_DWORD *)(v1 + 9240) = &off_69F6BC; *(_DWORD *)(v1 + 9248) = &off_69F6BC; *(_DWORD *)(v1 + 9256) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9264); *(_DWORD *)(v1 + 9272) = &off_69F6BC; *(_DWORD *)(v1 + 9280) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9288); *(_DWORD *)(v1 + 9296) = &off_69F6BC; *(_DWORD *)(v1 + 9304) = &off_69F71C; *(_DWORD *)(v1 + 9312) = &off_69F6BC; *(_DWORD *)(v1 + 9320) = &off_69F6BC; *(_DWORD *)(v1 + 9328) = &off_69F6BC; *(_DWORD *)(v1 + 9336) = &off_69F6BC; *(_DWORD *)(v1 + 9344) = &off_69F6BC; *(_DWORD *)(v1 + 9352) = &off_69F6BC; *(_DWORD *)(v1 + 9360) = &off_69F6BC; *(_DWORD *)(v1 + 9368) = &off_69F6BC; *(_DWORD *)(v1 + 9376) = &off_69F6BC; *(_DWORD *)(v1 + 9384) = &off_69F6BC; *(_DWORD *)(v1 + 9392) = &off_69F6BC; *(_DWORD *)(v1 + 9400) = &off_69F6BC; *(_DWORD *)(v1 + 9408) = &off_69F6BC; *(_DWORD *)(v1 + 9416) = &off_69F6BC; *(_DWORD *)(v1 + 9424) = &off_69F71C; *(_DWORD *)(v1 + 9432) = &off_69F6BC; *(_DWORD *)(v1 + 9440) = &off_69F77C; *(_DWORD *)(v1 + 9456) = &off_69F6BC; *(_DWORD *)(v1 + 9464) = &off_69F71C; *(_DWORD *)(v1 + 9472) = &off_69F89C; *(_DWORD *)(v1 + 9484) = &off_69F6BC; *(_DWORD *)(v1 + 9492) = &off_69F6BC; *(_DWORD *)(v1 + 9500) = &off_69F6BC; *(_DWORD *)(v1 + 9508) = &off_69F6BC; *(_DWORD *)(v1 + 9516) = &off_69F6BC; *(_DWORD *)(v1 + 9524) = &off_69F6BC; *(_DWORD *)(v1 + 9532) = &off_69F6BC; *(_DWORD *)(v1 + 9540) = &off_69F7AC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 9548); *(_DWORD *)(v1 + 9556) = &off_69F71C; *(_DWORD *)(v1 + 9564) = &off_69F7DC; *(_DWORD *)(v1 + 9572) = &off_69F6BC; *(_DWORD *)(v1 + 9580) = &off_69F6BC; *(_DWORD *)(v1 + 9588) = &off_69F6BC; *(_DWORD *)(v1 + 9596) = &off_69F6BC; *(_DWORD *)(v1 + 9604) = &off_69F6BC; *(_DWORD *)(v1 + 9612) = &off_69F6BC; *(_DWORD *)(v1 + 9620) = &off_69F6BC; *(_DWORD *)(v1 + 9628) = &off_69F6BC; *(_DWORD *)(v1 + 9636) = &off_69F6BC; *(_DWORD *)(v1 + 9644) = &off_69F6BC; *(_DWORD *)(v1 + 9652) = &off_69F6BC; *(_DWORD *)(v1 + 9660) = &off_69F6BC; *(_DWORD *)(v1 + 9668) = &off_69F6BC; *(_DWORD *)(v1 + 9676) = &off_69F6BC; *(_DWORD *)(v1 + 9684) = &off_69F6BC; *(_DWORD *)(v1 + 9692) = &off_69F6BC; *(_DWORD *)(v1 + 9700) = &off_69F6BC; *(_DWORD *)(v1 + 9708) = &off_69F6BC; *(_DWORD *)(v1 + 9716) = &off_69F6BC; *(_DWORD *)(v1 + 9724) = &off_69F6BC; *(_DWORD *)(v1 + 9732) = &off_69F6BC; *(_DWORD *)(v1 + 12908) = &off_6A04B4; *(_DWORD *)(v1 + 12924) = 0; sub_40DEF0(v1 + 12908, 0x318u); memset((void *)(v1 + 9740), 0, 0xC60u); *(_DWORD *)(v1 + 9740) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 36))(v1); *(_DWORD *)(v1 + 9744) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8) + 36))(v1 + 8); *(_DWORD *)(v1 + 9748) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 24) + 36))(v1 + 24); *(_DWORD *)(v1 + 40) = 792; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 44) = 792; *(_DWORD *)(v1 + 68) = 0; *(_DWORD *)(v1 + 48) = 792; *(_DWORD *)(v1 + 72) = 0; *(_DWORD *)(v1 + 52) = 792; *(_DWORD *)(v1 + 76) = 0; *(_DWORD *)(v1 + 56) = 792; *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 9752) = v1 + 32; *(_DWORD *)(v1 + 9756) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 84) + 36))(v1 + 84); *(_DWORD *)(v1 + 9760) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 124) + 36))(v1 + 124); *(_DWORD *)(v1 + 9764) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 132) + 36))(v1 + 132); *(_DWORD *)(v1 + 9768) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 140) + 36))(v1 + 140); *(_DWORD *)(v1 + 9772) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 148) + 36))(v1 + 148); *(_DWORD *)(v1 + 9776) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 156) + 36))(v1 + 156); *(_DWORD *)(v1 + 9780) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 92) + 36))(v1 + 92); *(_DWORD *)(v1 + 9784) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 100) + 36))(v1 + 100); *(_DWORD *)(v1 + 9788) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 108) + 36))(v1 + 108); *(_DWORD *)(v1 + 9792) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 116) + 36))(v1 + 116); *(_DWORD *)(v1 + 9808) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 164) + 36))(v1 + 164); *(_DWORD *)(v1 + 180) = 792; *(_DWORD *)(v1 + 204) = 0; *(_DWORD *)(v1 + 184) = 792; *(_DWORD *)(v1 + 208) = 0; *(_DWORD *)(v1 + 188) = 792; *(_DWORD *)(v1 + 212) = 0; *(_DWORD *)(v1 + 192) = 792; *(_DWORD *)(v1 + 216) = 0; *(_DWORD *)(v1 + 196) = 792; *(_DWORD *)(v1 + 220) = 0; *(_DWORD *)(v1 + 9812) = v1 + 172; *(_DWORD *)(v1 + 9816) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 224) + 36))(v1 + 224); *(_DWORD *)(v1 + 9820) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 264) + 36))(v1 + 264); *(_DWORD *)(v1 + 9824) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 272) + 36))(v1 + 272); *(_DWORD *)(v1 + 9828) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 280) + 36))(v1 + 280); *(_DWORD *)(v1 + 9832) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 296) + 36))(v1 + 296); *(_DWORD *)(v1 + 9836) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 304) + 36))(v1 + 304); *(_DWORD *)(v1 + 9840) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 320) + 36))(v1 + 320); *(_DWORD *)(v1 + 336) = 792; *(_DWORD *)(v1 + 360) = 0; *(_DWORD *)(v1 + 340) = 792; *(_DWORD *)(v1 + 364) = 0; *(_DWORD *)(v1 + 344) = 792; *(_DWORD *)(v1 + 368) = 0; *(_DWORD *)(v1 + 348) = 792; *(_DWORD *)(v1 + 372) = 0; *(_DWORD *)(v1 + 352) = 792; *(_DWORD *)(v1 + 376) = 0; *(_DWORD *)(v1 + 9844) = v1 + 328; *(_DWORD *)(v1 + 9848) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 380) + 36))(v1 + 380); *(_DWORD *)(v1 + 432) = 17; *(_DWORD *)(v1 + 9852) = v1 + 420; *(_DWORD *)(v1 + 444) = 792; *(_DWORD *)(v1 + 468) = 0; *(_DWORD *)(v1 + 448) = 792; *(_DWORD *)(v1 + 472) = 0; *(_DWORD *)(v1 + 452) = 792; *(_DWORD *)(v1 + 476) = 0; *(_DWORD *)(v1 + 456) = 792; *(_DWORD *)(v1 + 480) = 0; *(_DWORD *)(v1 + 460) = 792; *(_DWORD *)(v1 + 484) = 0; *(_DWORD *)(v1 + 9856) = v1 + 436; *(_DWORD *)(v1 + 9860) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 488) + 36))(v1 + 488); *(_DWORD *)(v1 + 9864) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 528) + 36))(v1 + 528); *(_DWORD *)(v1 + 9868) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 536) + 36))(v1 + 536); *(_DWORD *)(v1 + 9872) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 544) + 36))(v1 + 544); *(_DWORD *)(v1 + 9876) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 552) + 36))(v1 + 552); *(_DWORD *)(v1 + 9880) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 560) + 36))(v1 + 560); *(_DWORD *)(v1 + 9884) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 232) + 36))(v1 + 232); *(_DWORD *)(v1 + 9888) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 240) + 36))(v1 + 240); *(_DWORD *)(v1 + 9892) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 248) + 36))(v1 + 248); *(_DWORD *)(v1 + 9896) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 256) + 36))(v1 + 256); *(_DWORD *)(v1 + 9900) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 388) + 36))(v1 + 388); *(_DWORD *)(v1 + 9904) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 396) + 36))(v1 + 396); *(_DWORD *)(v1 + 9908) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 404) + 36))(v1 + 404); *(_DWORD *)(v1 + 9912) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 412) + 36))(v1 + 412); *(_DWORD *)(v1 + 9916) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 496) + 36))(v1 + 496); *(_DWORD *)(v1 + 9920) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 504) + 36))(v1 + 504); *(_DWORD *)(v1 + 9924) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 512) + 36))(v1 + 512); *(_DWORD *)(v1 + 9928) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 520) + 36))(v1 + 520); *(_DWORD *)(v1 + 9940) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 568) + 36))(v1 + 568); *(_DWORD *)(v1 + 628) = 17; *(_DWORD *)(v1 + 9804) = v1 + 616; *(_DWORD *)(v1 + 9796) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 576) + 36))(v1 + 576); *(_DWORD *)(v1 + 612) = 41; *(_DWORD *)(v1 + 9800) = v1 + 600; *(_DWORD *)(v1 + 9932) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 592) + 36))(v1 + 592); *(_DWORD *)(v1 + 10044) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 712) + 36))(v1 + 712); *(_DWORD *)(v1 + 10040) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 696) + 36))(v1 + 696); *(_DWORD *)(v1 + 10048) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 704) + 36))(v1 + 704); *(_DWORD *)(v1 + 9936) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 720) + 36))(v1 + 720); *(_DWORD *)(v1 + 10124) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 728) + 36))(v1 + 728); *(_DWORD *)(v1 + 10128) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 736) + 36))(v1 + 736); *(_DWORD *)(v1 + 10132) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 744) + 36))(v1 + 744); *(_DWORD *)(v1 + 9944) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 752) + 36))(v1 + 752); *(_DWORD *)(v1 + 9948) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 768) + 36))(v1 + 768); *(_DWORD *)(v1 + 784) = 792; *(_DWORD *)(v1 + 808) = 0; *(_DWORD *)(v1 + 788) = 792; *(_DWORD *)(v1 + 812) = 0; *(_DWORD *)(v1 + 792) = 792; *(_DWORD *)(v1 + 816) = 0; *(_DWORD *)(v1 + 796) = 792; *(_DWORD *)(v1 + 820) = 0; *(_DWORD *)(v1 + 800) = 792; *(_DWORD *)(v1 + 824) = 0; *(_DWORD *)(v1 + 9952) = v1 + 776; *(_DWORD *)(v1 + 9956) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 828) + 36))(v1 + 828); *(_DWORD *)(v1 + 9960) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 868) + 36))(v1 + 868); *(_DWORD *)(v1 + 9964) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 884) + 36))(v1 + 884); *(_DWORD *)(v1 + 9968) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 892) + 36))(v1 + 892); *(_DWORD *)(v1 + 9972) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 908) + 36))(v1 + 908); *(_DWORD *)(v1 + 924) = 792; *(_DWORD *)(v1 + 948) = 0; *(_DWORD *)(v1 + 928) = 792; *(_DWORD *)(v1 + 952) = 0; *(_DWORD *)(v1 + 932) = 792; *(_DWORD *)(v1 + 956) = 0; *(_DWORD *)(v1 + 936) = 792; *(_DWORD *)(v1 + 960) = 0; *(_DWORD *)(v1 + 940) = 792; *(_DWORD *)(v1 + 964) = 0; *(_DWORD *)(v1 + 9976) = v1 + 916; *(_DWORD *)(v1 + 9980) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 968) + 36))(v1 + 968); *(_DWORD *)(v1 + 9984) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1008) + 36))(v1 + 1008); *(_DWORD *)(v1 + 9988) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1024) + 36))(v1 + 1024); *(_DWORD *)(v1 + 9992) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1032) + 36))(v1 + 1032); *(_DWORD *)(v1 + 9996) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1040) + 36))(v1 + 1040); *(_DWORD *)(v1 + 10000) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1056) + 36))(v1 + 1056); *(_DWORD *)(v1 + 10004) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1064) + 36))(v1 + 1064); *(_DWORD *)(v1 + 10008) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 836) + 36))(v1 + 836); *(_DWORD *)(v1 + 10012) = (*(int (**)(void))(*(_DWORD *)(v1 + 844) + 36))(); *(_DWORD *)(v1 + 10016) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 852) + 36))(v1 + 852); *(_DWORD *)(v1 + 10020) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 860) + 36))(v1 + 860); *(_DWORD *)(v1 + 10024) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 976) + 36))(v1 + 976); *(_DWORD *)(v1 + 10028) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 984) + 36))(v1 + 984); *(_DWORD *)(v1 + 10032) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 992) + 36))(v1 + 992); *(_DWORD *)(v1 + 10036) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1000) + 36))(v1 + 1000); *(_DWORD *)(v1 + 10052) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1072) + 36))(v1 + 1072); *(_DWORD *)(v1 + 10056) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1080) + 36))(v1 + 1080); *(_DWORD *)(v1 + 10060) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1096) + 36))(v1 + 1096); *(_DWORD *)(v1 + 10064) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1104) + 36))(v1 + 1104); *(_DWORD *)(v1 + 10068) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1152) + 36))(v1 + 1152); *(_DWORD *)(v1 + 10072) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1160) + 36))(v1 + 1160); *(_DWORD *)(v1 + 10076) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1168) + 36))(v1 + 1168); *(_DWORD *)(v1 + 10080) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1176) + 36))(v1 + 1176); *(_DWORD *)(v1 + 10084) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1184) + 36))(v1 + 1184); *(_DWORD *)(v1 + 10088) = (*(int (**)(void))(*(_DWORD *)(v1 + 1192) + 36))(); *(_DWORD *)(v1 + 10092) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1200) + 36))(v1 + 1200); *(_DWORD *)(v1 + 10096) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1208) + 36))(v1 + 1208); *(_DWORD *)(v1 + 1224) = 792; *(_DWORD *)(v1 + 1248) = 0; *(_DWORD *)(v1 + 1228) = 792; *(_DWORD *)(v1 + 1252) = 0; *(_DWORD *)(v1 + 1232) = 792; *(_DWORD *)(v1 + 1256) = 0; *(_DWORD *)(v1 + 1236) = 792; *(_DWORD *)(v1 + 1260) = 0; *(_DWORD *)(v1 + 1240) = 792; *(_DWORD *)(v1 + 1264) = 0; *(_DWORD *)(v1 + 10100) = v1 + 1216; *(_DWORD *)(v1 + 10104) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1112) + 36))(v1 + 1112); *(_DWORD *)(v1 + 10108) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1120) + 36))(v1 + 1120); *(_DWORD *)(v1 + 10112) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1128) + 36))(v1 + 1128); *(_DWORD *)(v1 + 10116) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1136) + 36))(v1 + 1136); *(_DWORD *)(v1 + 10120) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1144) + 36))(v1 + 1144); *(_DWORD *)(v1 + 10136) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1268) + 36))(v1 + 1268); *(_DWORD *)(v1 + 10140) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1276) + 36))(v1 + 1276); *(_DWORD *)(v1 + 10144) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1292) + 36))(v1 + 1292); *(_DWORD *)(v1 + 10148) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1300) + 36))(v1 + 1300); *(_DWORD *)(v1 + 10152) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1308) + 36))(v1 + 1308); *(_DWORD *)(v1 + 10156) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1324) + 36))(v1 + 1324); *(_DWORD *)(v1 + 10160) = (*(int (**)(void))(*(_DWORD *)(v1 + 1332) + 36))(); *(_DWORD *)(v1 + 10164) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1340) + 36))(v1 + 1340); *(_DWORD *)(v1 + 10168) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1348) + 36))(v1 + 1348); *(_DWORD *)(v1 + 10172) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1356) + 36))(v1 + 1356); *(_DWORD *)(v1 + 10176) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1364) + 36))(v1 + 1364); *(_DWORD *)(v1 + 10180) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1380) + 36))(v1 + 1380); *(_DWORD *)(v1 + 10184) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1388) + 36))(v1 + 1388); *(_DWORD *)(v1 + 10188) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1396) + 36))(v1 + 1396); *(_DWORD *)(v1 + 10192) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1404) + 36))(v1 + 1404); *(_DWORD *)(v1 + 10196) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1412) + 36))(v1 + 1412); *(_DWORD *)(v1 + 10200) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1420) + 36))(v1 + 1420); *(_DWORD *)(v1 + 10204) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1428) + 36))(v1 + 1428); *(_DWORD *)(v1 + 10208) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1444) + 36))(v1 + 1444); *(_DWORD *)(v1 + 10212) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1452) + 36))(v1 + 1452); *(_DWORD *)(v1 + 10216) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1460) + 36))(v1 + 1460); *(_DWORD *)(v1 + 10220) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1468) + 36))(v1 + 1468); *(_DWORD *)(v1 + 10224) = (*(int (**)(void))(*(_DWORD *)(v1 + 1476) + 36))(); *(_DWORD *)(v1 + 10228) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1484) + 36))(v1 + 1484); *(_DWORD *)(v1 + 10232) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1492) + 36))(v1 + 1492); *(_DWORD *)(v1 + 10236) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1500) + 36))(v1 + 1500); *(_DWORD *)(v1 + 10240) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1508) + 36))(v1 + 1508); *(_DWORD *)(v1 + 10244) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1516) + 36))(v1 + 1516); *(_DWORD *)(v1 + 10248) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1524) + 36))(v1 + 1524); *(_DWORD *)(v1 + 10252) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1532) + 36))(v1 + 1532); *(_DWORD *)(v1 + 10256) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1540) + 36))(v1 + 1540); *(_DWORD *)(v1 + 10260) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1548) + 36))(v1 + 1548); *(_DWORD *)(v1 + 10264) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1556) + 36))(v1 + 1556); *(_DWORD *)(v1 + 10268) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1564) + 36))(v1 + 1564); *(_DWORD *)(v1 + 10272) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1572) + 36))(v1 + 1572); *(_DWORD *)(v1 + 10276) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1580) + 36))(v1 + 1580); *(_DWORD *)(v1 + 10280) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1588) + 36))(v1 + 1588); *(_DWORD *)(v1 + 10284) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1596) + 36))(v1 + 1596); *(_DWORD *)(v1 + 10288) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1604) + 36))(v1 + 1604); *(_DWORD *)(v1 + 10292) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1612) + 36))(v1 + 1612); *(_DWORD *)(v1 + 10296) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1620) + 36))(v1 + 1620); *(_DWORD *)(v1 + 10300) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1628) + 36))(v1 + 1628); *(_DWORD *)(v1 + 10304) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1636) + 36))(v1 + 1636); *(_DWORD *)(v1 + 10308) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1652) + 36))(v1 + 1652); *(_DWORD *)(v1 + 10312) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1668) + 36))(v1 + 1668); *(_DWORD *)(v1 + 10316) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1684) + 36))(v1 + 1684); *(_DWORD *)(v1 + 10320) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1700) + 36))(v1 + 1700); *(_DWORD *)(v1 + 10324) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1716) + 36))(v1 + 1716); *(_DWORD *)(v1 + 10328) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1732) + 36))(v1 + 1732); *(_DWORD *)(v1 + 10332) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1748) + 36))(v1 + 1748); *(_DWORD *)(v1 + 10336) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1764) + 36))(v1 + 1764); *(_DWORD *)(v1 + 10340) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1780) + 36))(v1 + 1780); *(_DWORD *)(v1 + 10344) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1796) + 36))(v1 + 1796); *(_DWORD *)(v1 + 10348) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1804) + 36))(v1 + 1804); *(_DWORD *)(v1 + 10352) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1812) + 36))(v1 + 1812); *(_DWORD *)(v1 + 10356) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1820) + 36))(v1 + 1820); *(_DWORD *)(v1 + 10360) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1828) + 36))(v1 + 1828); *(_DWORD *)(v1 + 10364) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1836) + 36))(v1 + 1836); *(_DWORD *)(v1 + 10368) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1844) + 36))(v1 + 1844); *(_DWORD *)(v1 + 10372) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1852) + 36))(v1 + 1852); *(_DWORD *)(v1 + 10376) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1860) + 36))(v1 + 1860); *(_DWORD *)(v1 + 10380) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1868) + 36))(v1 + 1868); *(_DWORD *)(v1 + 10384) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1876) + 36))(v1 + 1876); *(_DWORD *)(v1 + 10388) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1884) + 36))(v1 + 1884); *(_DWORD *)(v1 + 10392) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1892) + 36))(v1 + 1892); *(_DWORD *)(v1 + 10396) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1900) + 36))(v1 + 1900); *(_DWORD *)(v1 + 10400) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1908) + 36))(v1 + 1908); *(_DWORD *)(v1 + 10404) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1916) + 36))(v1 + 1916); *(_DWORD *)(v1 + 10408) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1924) + 36))(v1 + 1924); *(_DWORD *)(v1 + 10412) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1932) + 36))(v1 + 1932); *(_DWORD *)(v1 + 10416) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1940) + 36))(v1 + 1940); *(_DWORD *)(v1 + 10420) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1948) + 36))(v1 + 1948); *(_DWORD *)(v1 + 10424) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1956) + 36))(v1 + 1956); *(_DWORD *)(v1 + 10428) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1964) + 36))(v1 + 1964); *(_DWORD *)(v1 + 10432) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1972) + 36))(v1 + 1972); *(_DWORD *)(v1 + 10436) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 1988) + 36))(v1 + 1988); *(_DWORD *)(v1 + 10440) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2004) + 36))(v1 + 2004); *(_DWORD *)(v1 + 10444) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2020) + 36))(v1 + 2020); *(_DWORD *)(v1 + 10448) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2036) + 36))(v1 + 2036); *(_DWORD *)(v1 + 10452) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2052) + 36))(v1 + 2052); *(_DWORD *)(v1 + 10456) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2068) + 36))(v1 + 2068); *(_DWORD *)(v1 + 10460) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2084) + 36))(v1 + 2084); *(_DWORD *)(v1 + 10464) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2100) + 36))(v1 + 2100); *(_DWORD *)(v1 + 10468) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2116) + 36))(v1 + 2116); *(_DWORD *)(v1 + 10472) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2132) + 36))(v1 + 2132); *(_DWORD *)(v1 + 10476) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2148) + 36))(v1 + 2148); *(_DWORD *)(v1 + 10480) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2164) + 36))(v1 + 2164); *(_DWORD *)(v1 + 10484) = (*(int (**)(void))(*(_DWORD *)(v1 + 2180) + 36))(); *(_DWORD *)(v1 + 10488) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2196) + 36))(v1 + 2196); *(_DWORD *)(v1 + 10492) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2212) + 36))(v1 + 2212); *(_DWORD *)(v1 + 10496) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2228) + 36))(v1 + 2228); *(_DWORD *)(v1 + 10500) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2244) + 36))(v1 + 2244); *(_DWORD *)(v1 + 10504) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2260) + 36))(v1 + 2260); *(_DWORD *)(v1 + 10508) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2276) + 36))(v1 + 2276); *(_DWORD *)(v1 + 10512) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2292) + 36))(v1 + 2292); *(_DWORD *)(v1 + 10516) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2308) + 36))(v1 + 2308); *(_DWORD *)(v1 + 10520) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2324) + 36))(v1 + 2324); *(_DWORD *)(v1 + 10524) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2340) + 36))(v1 + 2340); *(_DWORD *)(v1 + 10528) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2356) + 36))(v1 + 2356); *(_DWORD *)(v1 + 10532) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2372) + 36))(v1 + 2372); *(_DWORD *)(v1 + 10536) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2380) + 36))(v1 + 2380); *(_DWORD *)(v1 + 10552) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2388) + 36))(v1 + 2388); *(_DWORD *)(v1 + 11536) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2396) + 36))(v1 + 2396); *(_DWORD *)(v1 + 10540) = (*(int (**)(void))(*(_DWORD *)(v1 + 2404) + 36))(); *(_DWORD *)(v1 + 10544) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2412) + 36))(v1 + 2412); *(_DWORD *)(v1 + 10548) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2420) + 36))(v1 + 2420); *(_DWORD *)(v1 + 10556) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2428) + 36))(v1 + 2428); *(_DWORD *)(v1 + 10560) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2444) + 36))(v1 + 2444); *(_DWORD *)(v1 + 10564) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2460) + 36))(v1 + 2460); *(_DWORD *)(v1 + 10568) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2476) + 36))(v1 + 2476); *(_DWORD *)(v1 + 10572) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2492) + 36))(v1 + 2492); *(_DWORD *)(v1 + 10576) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2508) + 36))(v1 + 2508); *(_DWORD *)(v1 + 10580) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2524) + 36))(v1 + 2524); *(_DWORD *)(v1 + 10584) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2540) + 36))(v1 + 2540); *(_DWORD *)(v1 + 10588) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2556) + 36))(v1 + 2556); *(_DWORD *)(v1 + 10592) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2572) + 36))(v1 + 2572); *(_DWORD *)(v1 + 10596) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2588) + 36))(v1 + 2588); *(_DWORD *)(v1 + 10600) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2604) + 36))(v1 + 2604); *(_DWORD *)(v1 + 10604) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2612) + 36))(v1 + 2612); *(_DWORD *)(v1 + 10608) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2620) + 36))(v1 + 2620); *(_DWORD *)(v1 + 10612) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2628) + 36))(v1 + 2628); *(_DWORD *)(v1 + 10616) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2636) + 36))(v1 + 2636); *(_DWORD *)(v1 + 10620) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2644) + 36))(v1 + 2644); *(_DWORD *)(v1 + 10624) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2652) + 36))(v1 + 2652); *(_DWORD *)(v1 + 10628) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2660) + 36))(v1 + 2660); *(_DWORD *)(v1 + 10640) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2668) + 36))(v1 + 2668); *(_DWORD *)(v1 + 10644) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2676) + 36))(v1 + 2676); *(_DWORD *)(v1 + 10648) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2684) + 36))(v1 + 2684); *(_DWORD *)(v1 + 10632) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2692) + 36))(v1 + 2692); *(_DWORD *)(v1 + 10636) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2700) + 36))(v1 + 2700); *(_DWORD *)(v1 + 10652) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2708) + 36))(v1 + 2708); *(_DWORD *)(v1 + 10656) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2716) + 36))(v1 + 2716); *(_DWORD *)(v1 + 10660) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2724) + 36))(v1 + 2724); *(_DWORD *)(v1 + 10664) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2732) + 36))(v1 + 2732); *(_DWORD *)(v1 + 10668) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2740) + 36))(v1 + 2740); *(_DWORD *)(v1 + 10672) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2748) + 36))(v1 + 2748); *(_DWORD *)(v1 + 10676) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2756) + 36))(v1 + 2756); *(_DWORD *)(v1 + 10680) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2764) + 36))(v1 + 2764); *(_DWORD *)(v1 + 10684) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2772) + 36))(v1 + 2772); *(_DWORD *)(v1 + 10688) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2780) + 36))(v1 + 2780); *(_DWORD *)(v1 + 10692) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2788) + 36))(v1 + 2788); *(_DWORD *)(v1 + 10696) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2796) + 36))(v1 + 2796); *(_DWORD *)(v1 + 10700) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2804) + 36))(v1 + 2804); *(_DWORD *)(v1 + 10704) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2812) + 36))(v1 + 2812); *(_DWORD *)(v1 + 10708) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2820) + 36))(v1 + 2820); *(_DWORD *)(v1 + 10712) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2828) + 36))(v1 + 2828); *(_DWORD *)(v1 + 10716) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2836) + 36))(v1 + 2836); *(_DWORD *)(v1 + 10720) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2844) + 36))(v1 + 2844); *(_DWORD *)(v1 + 10724) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2852) + 36))(v1 + 2852); *(_DWORD *)(v1 + 10728) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2860) + 36))(v1 + 2860); *(_DWORD *)(v1 + 10732) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2868) + 36))(v1 + 2868); *(_DWORD *)(v1 + 10736) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2876) + 36))(v1 + 2876); *(_DWORD *)(v1 + 10740) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2884) + 36))(v1 + 2884); *(_DWORD *)(v1 + 10744) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2892) + 36))(v1 + 2892); *(_DWORD *)(v1 + 10748) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2900) + 36))(v1 + 2900); *(_DWORD *)(v1 + 10752) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2908) + 36))(v1 + 2908); *(_DWORD *)(v1 + 10756) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2916) + 36))(v1 + 2916); *(_DWORD *)(v1 + 10760) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2924) + 36))(v1 + 2924); *(_DWORD *)(v1 + 10764) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2932) + 36))(v1 + 2932); *(_DWORD *)(v1 + 10768) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2940) + 36))(v1 + 2940); *(_DWORD *)(v1 + 10772) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2948) + 36))(v1 + 2948); *(_DWORD *)(v1 + 10776) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2956) + 36))(v1 + 2956); *(_DWORD *)(v1 + 10780) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2964) + 36))(v1 + 2964); *(_DWORD *)(v1 + 10784) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2972) + 36))(v1 + 2972); *(_DWORD *)(v1 + 10788) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2980) + 36))(v1 + 2980); *(_DWORD *)(v1 + 10792) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2988) + 36))(v1 + 2988); *(_DWORD *)(v1 + 10796) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 2996) + 36))(v1 + 2996); *(_DWORD *)(v1 + 10800) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3004) + 36))(v1 + 3004); *(_DWORD *)(v1 + 10804) = (*(int (**)(void))(*(_DWORD *)(v1 + 3012) + 36))(); *(_DWORD *)(v1 + 10808) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3020) + 36))(v1 + 3020); *(_DWORD *)(v1 + 10812) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3028) + 36))(v1 + 3028); *(_DWORD *)(v1 + 10816) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3036) + 36))(v1 + 3036); *(_DWORD *)(v1 + 10820) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3044) + 36))(v1 + 3044); *(_DWORD *)(v1 + 10824) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3052) + 36))(v1 + 3052); *(_DWORD *)(v1 + 10828) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3060) + 36))(v1 + 3060); *(_DWORD *)(v1 + 10832) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3068) + 36))(v1 + 3068); *(_DWORD *)(v1 + 10836) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3076) + 36))(v1 + 3076); *(_DWORD *)(v1 + 10840) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3084) + 36))(v1 + 3084); *(_DWORD *)(v1 + 10844) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3092) + 36))(v1 + 3092); *(_DWORD *)(v1 + 10848) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3100) + 36))(v1 + 3100); *(_DWORD *)(v1 + 10852) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3108) + 36))(v1 + 3108); *(_DWORD *)(v1 + 10856) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3116) + 36))(v1 + 3116); *(_DWORD *)(v1 + 10860) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3124) + 36))(v1 + 3124); *(_DWORD *)(v1 + 10864) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3132) + 36))(v1 + 3132); *(_DWORD *)(v1 + 10868) = (*(int (**)(void))(*(_DWORD *)(v1 + 3140) + 36))(); *(_DWORD *)(v1 + 10872) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3148) + 36))(v1 + 3148); *(_DWORD *)(v1 + 10876) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3156) + 36))(v1 + 3156); *(_DWORD *)(v1 + 10880) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3164) + 36))(v1 + 3164); *(_DWORD *)(v1 + 10884) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3172) + 36))(v1 + 3172); *(_DWORD *)(v1 + 10888) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3180) + 36))(v1 + 3180); *(_BYTE *)(v1 + 3196) = 3; *(_DWORD *)(v1 + 10892) = v1 + 3188; *(_DWORD *)(v1 + 10896) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3200) + 36))(v1 + 3200); *(_DWORD *)(v1 + 10900) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3208) + 36))(v1 + 3208); *(_DWORD *)(v1 + 11412) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3216) + 36))(v1 + 3216); *(_DWORD *)(v1 + 10904) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3224) + 36))(v1 + 3224); *(_DWORD *)(v1 + 10908) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 3232) + 36))(v1 + 3232); *(_DWORD *)(v1 + 4080) = 792; *(_DWORD *)(v1 + 4104) = 0; *(_DWORD *)(v1 + 4084) = 792; *(_DWORD *)(v1 + 4108) = 0; *(_DWORD *)(v1 + 4088) = 792; *(_DWORD *)(v1 + 4112) = 0; *(_DWORD *)(v1 + 4092) = 792; *(_DWORD *)(v1 + 4116) = 0; *(_DWORD *)(v1 + 4096) = 792; *(_DWORD *)(v1 + 4120) = 0; *(_DWORD *)(v1 + 10912) = v1 + 4072; *(_DWORD *)(v1 + 10916) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4124) + 36))(v1 + 4124); *(_DWORD *)(v1 + 10920) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4132) + 36))(v1 + 4132); *(_DWORD *)(v1 + 10924) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4156) + 36))(v1 + 4156); *(_DWORD *)(v1 + 10928) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4172) + 36))(v1 + 4172); *(_DWORD *)(v1 + 10932) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4192) + 36))(v1 + 4192); *(_DWORD *)(v1 + 10936) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4200) + 36))(v1 + 4200); *(_DWORD *)(v1 + 10940) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4220) + 36))(v1 + 4220); *(_DWORD *)(v1 + 10944) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4228) + 36))(v1 + 4228); *(_DWORD *)(v1 + 10948) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4236) + 36))(v1 + 4236); *(_DWORD *)(v1 + 10952) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4244) + 36))(v1 + 4244); *(_DWORD *)(v1 + 10956) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4260) + 36))(v1 + 4260); *(_DWORD *)(v1 + 10960) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4276) + 36))(v1 + 4276); *(_DWORD *)(v1 + 10964) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4284) + 36))(v1 + 4284); *(_DWORD *)(v1 + 10968) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4292) + 36))(v1 + 4292); *(_DWORD *)(v1 + 10972) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4300) + 36))(v1 + 4300); *(_DWORD *)(v1 + 10976) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4308) + 36))(v1 + 4308); *(_DWORD *)(v1 + 10980) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4316) + 36))(v1 + 4316); *(_DWORD *)(v1 + 10984) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4324) + 36))(v1 + 4324); *(_DWORD *)(v1 + 10988) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4332) + 36))(v1 + 4332); *(_DWORD *)(v1 + 10992) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4340) + 36))(v1 + 4340); *(_DWORD *)(v1 + 10996) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4348) + 36))(v1 + 4348); *(_DWORD *)(v1 + 11000) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4356) + 36))(v1 + 4356); *(_DWORD *)(v1 + 11004) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4364) + 36))(v1 + 4364); *(_DWORD *)(v1 + 11008) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4372) + 36))(v1 + 4372); *(_DWORD *)(v1 + 11012) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4380) + 36))(v1 + 4380); *(_DWORD *)(v1 + 11016) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4388) + 36))(v1 + 4388); *(_DWORD *)(v1 + 11020) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4396) + 36))(v1 + 4396); *(_DWORD *)(v1 + 11024) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4404) + 36))(v1 + 4404); *(_DWORD *)(v1 + 11028) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4412) + 36))(v1 + 4412); *(_DWORD *)(v1 + 11032) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4420) + 36))(v1 + 4420); *(_DWORD *)(v1 + 11036) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4428) + 36))(v1 + 4428); *(_DWORD *)(v1 + 11040) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4436) + 36))(v1 + 4436); *(_DWORD *)(v1 + 11048) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4452) + 36))(v1 + 4452); *(_DWORD *)(v1 + 11052) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4468) + 36))(v1 + 4468); *(_DWORD *)(v1 + 11056) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4476) + 36))(v1 + 4476); *(_DWORD *)(v1 + 11060) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4484) + 36))(v1 + 4484); *(_DWORD *)(v1 + 11064) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4492) + 36))(v1 + 4492); *(_DWORD *)(v1 + 11044) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4444) + 36))(v1 + 4444); *(_DWORD *)(v1 + 11068) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4500) + 36))(v1 + 4500); *(_DWORD *)(v1 + 4528) = 17; *(_DWORD *)(v1 + 11072) = v1 + 4516; *(_DWORD *)(v1 + 11076) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4532) + 36))(v1 + 4532); *(_DWORD *)(v1 + 11080) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4540) + 36))(v1 + 4540); *(_DWORD *)(v1 + 11084) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4548) + 36))(v1 + 4548); *(_DWORD *)(v1 + 11088) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4556) + 36))(v1 + 4556); *(_DWORD *)(v1 + 11092) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4564) + 36))(v1 + 4564); *(_DWORD *)(v1 + 11096) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4572) + 36))(v1 + 4572); *(_DWORD *)(v1 + 11100) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4588) + 36))(v1 + 4588); *(_DWORD *)(v1 + 11104) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4596) + 36))(v1 + 4596); *(_DWORD *)(v1 + 11108) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4604) + 36))(v1 + 4604); *(_DWORD *)(v1 + 11112) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4620) + 36))(v1 + 4620); *(_DWORD *)(v1 + 11124) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4628) + 36))(v1 + 4628); *(_DWORD *)(v1 + 11128) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4636) + 36))(v1 + 4636); *(_DWORD *)(v1 + 11132) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4644) + 36))(v1 + 4644); *(_DWORD *)(v1 + 11136) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4652) + 36))(v1 + 4652); *(_DWORD *)(v1 + 11140) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4668) + 36))(v1 + 4668); *(_DWORD *)(v1 + 11120) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4676) + 36))(v1 + 4676); *(_DWORD *)(v1 + 11320) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4684) + 36))(v1 + 4684); *(_DWORD *)(v1 + 11324) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4700) + 36))(v1 + 4700); *(_DWORD *)(v1 + 11328) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4716) + 36))(v1 + 4716); *(_DWORD *)(v1 + 11332) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4724) + 36))(v1 + 4724); *(_DWORD *)(v1 + 11336) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4740) + 36))(v1 + 4740); *(_DWORD *)(v1 + 11340) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4748) + 36))(v1 + 4748); *(_DWORD *)(v1 + 11344) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4756) + 36))(v1 + 4756); *(_DWORD *)(v1 + 11348) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4764) + 36))(v1 + 4764); *(_DWORD *)(v1 + 11352) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4772) + 36))(v1 + 4772); *(_DWORD *)(v1 + 11356) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4780) + 36))(v1 + 4780); *(_DWORD *)(v1 + 11360) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4788) + 36))(v1 + 4788); *(_DWORD *)(v1 + 11316) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4796) + 36))(v1 + 4796); *(_DWORD *)(v1 + 11312) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4804) + 36))(v1 + 4804); *(_DWORD *)(v1 + 11364) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4820) + 36))(v1 + 4820); *(_DWORD *)(v1 + 11368) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4828) + 36))(v1 + 4828); *(_DWORD *)(v1 + 11308) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4660) + 36))(v1 + 4660); *(_DWORD *)(v1 + 11304) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4836) + 36))(v1 + 4836); *(_DWORD *)(v1 + 11372) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4844) + 36))(v1 + 4844); *(_DWORD *)(v1 + 11116) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4852) + 36))(v1 + 4852); *(_DWORD *)(v1 + 11444) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4900) + 36))(v1 + 4900); *(_DWORD *)(v1 + 11440) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4892) + 36))(v1 + 4892); *(_DWORD *)(v1 + 11504) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5036) + 36))(v1 + 5036); *(_DWORD *)(v1 + 11500) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5028) + 36))(v1 + 5028); *(_DWORD *)(v1 + 11460) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4932) + 36))(v1 + 4932); *(_DWORD *)(v1 + 11464) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4940) + 36))(v1 + 4940); *(_DWORD *)(v1 + 11456) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4924) + 36))(v1 + 4924); *(_DWORD *)(v1 + 11436) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4884) + 36))(v1 + 4884); *(_DWORD *)(v1 + 11432) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4876) + 36))(v1 + 4876); *(_DWORD *)(v1 + 11452) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4916) + 36))(v1 + 4916); *(_DWORD *)(v1 + 11448) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4908) + 36))(v1 + 4908); *(_DWORD *)(v1 + 11472) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4964) + 36))(v1 + 4964); *(_DWORD *)(v1 + 11468) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4956) + 36))(v1 + 4956); *(_DWORD *)(v1 + 11496) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5020) + 36))(v1 + 5020); *(_DWORD *)(v1 + 11492) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5012) + 36))(v1 + 5012); *(_DWORD *)(v1 + 11488) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5004) + 36))(v1 + 5004); *(_DWORD *)(v1 + 11484) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4996) + 36))(v1 + 4996); *(_DWORD *)(v1 + 11480) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4988) + 36))(v1 + 4988); *(_DWORD *)(v1 + 11476) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4980) + 36))(v1 + 4980); *(_DWORD *)(v1 + 11428) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4868) + 36))(v1 + 4868); *(_DWORD *)(v1 + 11424) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 4860) + 36))(v1 + 4860); *(_DWORD *)(v1 + 11144) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5052) + 36))(v1 + 5052); *(_DWORD *)(v1 + 11148) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5060) + 36))(v1 + 5060); *(_DWORD *)(v1 + 11152) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5068) + 36))(v1 + 5068); *(_DWORD *)(v1 + 11156) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5076) + 36))(v1 + 5076); *(_DWORD *)(v1 + 11160) = (*(int (**)(void))(*(_DWORD *)(v1 + 5084) + 36))(); *(_DWORD *)(v1 + 11164) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5092) + 36))(v1 + 5092); *(_DWORD *)(v1 + 11168) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5100) + 36))(v1 + 5100); *(_DWORD *)(v1 + 11172) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5108) + 36))(v1 + 5108); *(_DWORD *)(v1 + 11176) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5116) + 36))(v1 + 5116); *(_DWORD *)(v1 + 11180) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5124) + 36))(v1 + 5124); *(_DWORD *)(v1 + 11184) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5140) + 36))(v1 + 5140); *(_DWORD *)(v1 + 11188) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5148) + 36))(v1 + 5148); *(_DWORD *)(v1 + 11192) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5132) + 36))(v1 + 5132); *(_DWORD *)(v1 + 11196) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5156) + 36))(v1 + 5156); *(_DWORD *)(v1 + 11200) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5164) + 36))(v1 + 5164); *(_DWORD *)(v1 + 11204) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5172) + 36))(v1 + 5172); *(_DWORD *)(v1 + 11208) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5180) + 36))(v1 + 5180); *(_DWORD *)(v1 + 11212) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5188) + 36))(v1 + 5188); *(_DWORD *)(v1 + 11216) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5196) + 36))(v1 + 5196); *(_DWORD *)(v1 + 11220) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5204) + 36))(v1 + 5204); *(_DWORD *)(v1 + 11224) = (*(int (**)(void))(*(_DWORD *)(v1 + 5212) + 36))(); *(_DWORD *)(v1 + 11228) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5220) + 36))(v1 + 5220); *(_DWORD *)(v1 + 11232) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5228) + 36))(v1 + 5228); *(_DWORD *)(v1 + 11236) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5236) + 36))(v1 + 5236); *(_DWORD *)(v1 + 11240) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5252) + 36))(v1 + 5252); *(_DWORD *)(v1 + 11244) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5268) + 36))(v1 + 5268); *(_DWORD *)(v1 + 11248) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5284) + 36))(v1 + 5284); *(_DWORD *)(v1 + 11252) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5300) + 36))(v1 + 5300); *(_DWORD *)(v1 + 11256) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5308) + 36))(v1 + 5308); *(_DWORD *)(v1 + 11260) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5348) + 36))(v1 + 5348); *(_DWORD *)(v1 + 11264) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5364) + 36))(v1 + 5364); *(_DWORD *)(v1 + 11268) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5380) + 36))(v1 + 5380); *(_DWORD *)(v1 + 11272) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5388) + 36))(v1 + 5388); *(_DWORD *)(v1 + 11272) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5388) + 36))(v1 + 5388); *(_DWORD *)(v1 + 11904) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5396) + 36))(v1 + 5396); *(_DWORD *)(v1 + 11908) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5404) + 36))(v1 + 5404); *(_DWORD *)(v1 + 11912) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5412) + 36))(v1 + 5412); *(_DWORD *)(v1 + 11916) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5420) + 36))(v1 + 5420); *(_DWORD *)(v1 + 11920) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5428) + 36))(v1 + 5428); *(_DWORD *)(v1 + 11924) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5444) + 36))(v1 + 5444); *(_DWORD *)(v1 + 11928) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5452) + 36))(v1 + 5452); *(_DWORD *)(v1 + 11932) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5460) + 36))(v1 + 5460); *(_DWORD *)(v1 + 11276) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5468) + 36))(v1 + 5468); *(_DWORD *)(v1 + 11280) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5476) + 36))(v1 + 5476); *(_DWORD *)(v1 + 11284) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5484) + 36))(v1 + 5484); *(_DWORD *)(v1 + 11288) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5492) + 36))(v1 + 5492); *(_DWORD *)(v1 + 11292) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5508) + 36))(v1 + 5508); *(_DWORD *)(v1 + 11296) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5516) + 36))(v1 + 5516); *(_DWORD *)(v1 + 11300) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5524) + 36))(v1 + 5524); *(_DWORD *)(v1 + 11768) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5532) + 36))(v1 + 5532); *(_DWORD *)(v1 + 11772) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5540) + 36))(v1 + 5540); *(_DWORD *)(v1 + 11776) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5548) + 36))(v1 + 5548); *(_DWORD *)(v1 + 11780) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5556) + 36))(v1 + 5556); *(_DWORD *)(v1 + 11784) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5564) + 36))(v1 + 5564); *(_DWORD *)(v1 + 11788) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5572) + 36))(v1 + 5572); *(_DWORD *)(v1 + 11792) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5580) + 36))(v1 + 5580); *(_DWORD *)(v1 + 11796) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5588) + 36))(v1 + 5588); *(_DWORD *)(v1 + 11800) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5596) + 36))(v1 + 5596); *(_DWORD *)(v1 + 11804) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5604) + 36))(v1 + 5604); *(_DWORD *)(v1 + 11808) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5612) + 36))(v1 + 5612); *(_DWORD *)(v1 + 11812) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5620) + 36))(v1 + 5620); *(_DWORD *)(v1 + 11816) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5628) + 36))(v1 + 5628); *(_DWORD *)(v1 + 11820) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5636) + 36))(v1 + 5636); *(_DWORD *)(v1 + 11824) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5644) + 36))(v1 + 5644); *(_DWORD *)(v1 + 11828) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5652) + 36))(v1 + 5652); *(_DWORD *)(v1 + 11832) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5660) + 36))(v1 + 5660); *(_DWORD *)(v1 + 11836) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5668) + 36))(v1 + 5668); *(_DWORD *)(v1 + 11840) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5676) + 36))(v1 + 5676); *(_DWORD *)(v1 + 11844) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5684) + 36))(v1 + 5684); *(_DWORD *)(v1 + 11848) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5692) + 36))(v1 + 5692); *(_DWORD *)(v1 + 11852) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5700) + 36))(v1 + 5700); *(_DWORD *)(v1 + 11856) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5708) + 36))(v1 + 5708); *(_DWORD *)(v1 + 11860) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5716) + 36))(v1 + 5716); *(_DWORD *)(v1 + 11864) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5724) + 36))(v1 + 5724); *(_DWORD *)(v1 + 11868) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5732) + 36))(v1 + 5732); *(_DWORD *)(v1 + 11872) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5740) + 36))(v1 + 5740); *(_DWORD *)(v1 + 11876) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5748) + 36))(v1 + 5748); *(_DWORD *)(v1 + 11880) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5756) + 36))(v1 + 5756); *(_DWORD *)(v1 + 11884) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5764) + 36))(v1 + 5764); *(_DWORD *)(v1 + 11888) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5772) + 36))(v1 + 5772); *(_DWORD *)(v1 + 11892) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5780) + 36))(v1 + 5780); *(_DWORD *)(v1 + 11896) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5788) + 36))(v1 + 5788); *(_DWORD *)(v1 + 11900) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5796) + 36))(v1 + 5796); *(_DWORD *)(v1 + 11420) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5804) + 36))(v1 + 5804); *(_DWORD *)(v1 + 11380) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5828) + 36))(v1 + 5828); *(_DWORD *)(v1 + 11384) = (*(int (**)(void))(*(_DWORD *)(v1 + 5844) + 36))(); *(_DWORD *)(v1 + 11376) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5852) + 36))(v1 + 5852); *(_DWORD *)(v1 + 11388) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5920) + 36))(v1 + 5920); *(_DWORD *)(v1 + 11392) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5928) + 36))(v1 + 5928); *(_DWORD *)(v1 + 11396) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5936) + 36))(v1 + 5936); *(_DWORD *)(v1 + 11400) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5944) + 36))(v1 + 5944); *(_DWORD *)(v1 + 11404) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5952) + 36))(v1 + 5952); *(_DWORD *)(v1 + 11408) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5968) + 36))(v1 + 5968); *(_DWORD *)(v1 + 11416) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5976) + 36))(v1 + 5976); *(_DWORD *)(v1 + 11540) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5984) + 36))(v1 + 5984); *(_DWORD *)(v1 + 11544) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 5992) + 36))(v1 + 5992); *(_DWORD *)(v1 + 11548) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6008) + 36))(v1 + 6008); *(_DWORD *)(v1 + 11552) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6016) + 36))(v1 + 6016); *(_DWORD *)(v1 + 11556) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6024) + 36))(v1 + 6024); *(_DWORD *)(v1 + 11508) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6032) + 36))(v1 + 6032); *(_DWORD *)(v1 + 11512) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6040) + 36))(v1 + 6040); *(_DWORD *)(v1 + 11516) = (*(int (**)(void))(*(_DWORD *)(v1 + 6048) + 36))(); *(_DWORD *)(v1 + 11584) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6088) + 36))(v1 + 6088); *(_DWORD *)(v1 + 11588) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6104) + 36))(v1 + 6104); *(_DWORD *)(v1 + 11592) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6120) + 36))(v1 + 6120); *(_DWORD *)(v1 + 11596) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6128) + 36))(v1 + 6128); *(_DWORD *)(v1 + 11600) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6136) + 36))(v1 + 6136); *(_DWORD *)(v1 + 11604) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6144) + 36))(v1 + 6144); *(_DWORD *)(v1 + 11608) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6152) + 36))(v1 + 6152); *(_DWORD *)(v1 + 11612) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6160) + 36))(v1 + 6160); *(_DWORD *)(v1 + 11616) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6176) + 36))(v1 + 6176); *(_DWORD *)(v1 + 11620) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6184) + 36))(v1 + 6184); *(_DWORD *)(v1 + 11636) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6192) + 36))(v1 + 6192); *(_DWORD *)(v1 + 11640) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6200) + 36))(v1 + 6200); *(_DWORD *)(v1 + 11644) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6208) + 36))(v1 + 6208); *(_DWORD *)(v1 + 11648) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6216) + 36))(v1 + 6216); *(_DWORD *)(v1 + 11652) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6224) + 36))(v1 + 6224); *(_DWORD *)(v1 + 11656) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6232) + 36))(v1 + 6232); *(_DWORD *)(v1 + 11660) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6240) + 36))(v1 + 6240); *(_DWORD *)(v1 + 11664) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6248) + 36))(v1 + 6248); *(_DWORD *)(v1 + 11668) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6256) + 36))(v1 + 6256); *(_DWORD *)(v1 + 11672) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6264) + 36))(v1 + 6264); *(_DWORD *)(v1 + 11676) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6272) + 36))(v1 + 6272); *(_DWORD *)(v1 + 11680) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6280) + 36))(v1 + 6280); *(_DWORD *)(v1 + 11560) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6288) + 36))(v1 + 6288); *(_DWORD *)(v1 + 11564) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6304) + 36))(v1 + 6304); *(_DWORD *)(v1 + 11568) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6312) + 36))(v1 + 6312); *(_DWORD *)(v1 + 11572) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6328) + 36))(v1 + 6328); *(_DWORD *)(v1 + 11520) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6056) + 36))(v1 + 6056); *(_DWORD *)(v1 + 11524) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6064) + 36))(v1 + 6064); *(_DWORD *)(v1 + 11528) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6072) + 36))(v1 + 6072); *(_DWORD *)(v1 + 11532) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6080) + 36))(v1 + 6080); *(_DWORD *)(v1 + 6348) = 17; *(_DWORD *)(v1 + 11576) = v1 + 6336; *(_DWORD *)(v1 + 6364) = 17; *(_DWORD *)(v1 + 11580) = v1 + 6352; *(_DWORD *)(v1 + 11632) = (*(int (**)(void))(*(_DWORD *)(v1 + 6368) + 36))(); *(_DWORD *)(v1 + 11624) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6376) + 36))(v1 + 6376); *(_DWORD *)(v1 + 11628) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6384) + 36))(v1 + 6384); *(_DWORD *)(v1 + 11684) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6392) + 36))(v1 + 6392); *(_DWORD *)(v1 + 11688) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6400) + 36))(v1 + 6400); *(_DWORD *)(v1 + 11692) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6408) + 36))(v1 + 6408); *(_DWORD *)(v1 + 11696) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6416) + 36))(v1 + 6416); *(_DWORD *)(v1 + 11700) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6424) + 36))(v1 + 6424); *(_DWORD *)(v1 + 11704) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6432) + 36))(v1 + 6432); *(_DWORD *)(v1 + 6452) = 104; *(_DWORD *)(v1 + 11712) = v1 + 6440; *(_DWORD *)(v1 + 11716) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6456) + 36))(v1 + 6456); *(_DWORD *)(v1 + 11720) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6472) + 36))(v1 + 6472); *(_DWORD *)(v1 + 11724) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6488) + 36))(v1 + 6488); *(_DWORD *)(v1 + 11728) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6496) + 36))(v1 + 6496); *(_DWORD *)(v1 + 11732) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6504) + 36))(v1 + 6504); *(_DWORD *)(v1 + 11736) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6512) + 36))(v1 + 6512); *(_DWORD *)(v1 + 11740) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6520) + 36))(v1 + 6520); *(_DWORD *)(v1 + 11744) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6528) + 36))(v1 + 6528); *(_DWORD *)(v1 + 11708) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6544) + 36))(v1 + 6544); *(_DWORD *)(v1 + 11748) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6560) + 36))(v1 + 6560); *(_DWORD *)(v1 + 11752) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6568) + 36))(v1 + 6568); *(_DWORD *)(v1 + 11756) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6576) + 36))(v1 + 6576); *(_DWORD *)(v1 + 11760) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6584) + 36))(v1 + 6584); *(_DWORD *)(v1 + 11764) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6592) + 36))(v1 + 6592); *(_DWORD *)(v1 + 11952) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6600) + 36))(v1 + 6600); *(_DWORD *)(v1 + 11960) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6608) + 36))(v1 + 6608); *(_DWORD *)(v1 + 11964) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6616) + 36))(v1 + 6616); *(_DWORD *)(v1 + 11968) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6624) + 36))(v1 + 6624); *(_DWORD *)(v1 + 11972) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6640) + 36))(v1 + 6640); *(_DWORD *)(v1 + 11976) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6648) + 36))(v1 + 6648); *(_DWORD *)(v1 + 11980) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6656) + 36))(v1 + 6656); *(_DWORD *)(v1 + 11984) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6664) + 36))(v1 + 6664); *(_DWORD *)(v1 + 12012) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6672) + 36))(v1 + 6672); *(_DWORD *)(v1 + 11936) = (*(int (**)(void))(*(_DWORD *)(v1 + 6680) + 36))(); *(_DWORD *)(v1 + 11940) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6688) + 36))(v1 + 6688); *(_DWORD *)(v1 + 11944) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6696) + 36))(v1 + 6696); *(_DWORD *)(v1 + 11948) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6704) + 36))(v1 + 6704); *(_DWORD *)(v1 + 11956) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6712) + 36))(v1 + 6712); *(_DWORD *)(v1 + 11988) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6720) + 36))(v1 + 6720); *(_DWORD *)(v1 + 11992) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6728) + 36))(v1 + 6728); *(_DWORD *)(v1 + 11996) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6744) + 36))(v1 + 6744); *(_DWORD *)(v1 + 12004) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6752) + 36))(v1 + 6752); *(_DWORD *)(v1 + 12008) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6760) + 36))(v1 + 6760); *(_DWORD *)(v1 + 12064) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6784) + 36))(v1 + 6784); *(_DWORD *)(v1 + 12000) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6904) + 36))(v1 + 6904); *(_DWORD *)(v1 + 12068) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6768) + 36))(v1 + 6768); *(_DWORD *)(v1 + 12072) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6800) + 36))(v1 + 6800); *(_DWORD *)(v1 + 12076) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6808) + 36))(v1 + 6808); *(_DWORD *)(v1 + 12080) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6816) + 36))(v1 + 6816); *(_DWORD *)(v1 + 12084) = (*(int (**)(void))(*(_DWORD *)(v1 + 6824) + 36))(); *(_DWORD *)(v1 + 12040) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6848) + 36))(v1 + 6848); *(_DWORD *)(v1 + 12044) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6864) + 36))(v1 + 6864); *(_DWORD *)(v1 + 12048) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6872) + 36))(v1 + 6872); *(_DWORD *)(v1 + 12052) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6880) + 36))(v1 + 6880); *(_DWORD *)(v1 + 12056) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6888) + 36))(v1 + 6888); *(_DWORD *)(v1 + 12060) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6896) + 36))(v1 + 6896); *(_DWORD *)(v1 + 12088) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6832) + 36))(v1 + 6832); *(_DWORD *)(v1 + 12024) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6912) + 36))(v1 + 6912); *(_DWORD *)(v1 + 12016) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6920) + 36))(v1 + 6920); *(_DWORD *)(v1 + 12020) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6928) + 36))(v1 + 6928); *(_DWORD *)(v1 + 12092) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6944) + 36))(v1 + 6944); *(_DWORD *)(v1 + 12096) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6952) + 36))(v1 + 6952); *(_DWORD *)(v1 + 6976) = 112; *(_DWORD *)(v1 + 12100) = v1 + 6968; *(_DWORD *)(v1 + 12104) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6980) + 36))(v1 + 6980); *(_DWORD *)(v1 + 12108) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 6996) + 36))(v1 + 6996); *(_DWORD *)(v1 + 12112) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7004) + 36))(v1 + 7004); *(_DWORD *)(v1 + 12116) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7012) + 36))(v1 + 7012); *(_DWORD *)(v1 + 12120) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7020) + 36))(v1 + 7020); *(_DWORD *)(v1 + 7040) = 17; *(_DWORD *)(v1 + 12124) = v1 + 7028; *(_DWORD *)(v1 + 12128) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7044) + 36))(v1 + 7044); *(_DWORD *)(v1 + 12028) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7168) + 36))(v1 + 7168); *(_DWORD *)(v1 + 12032) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7176) + 36))(v1 + 7176); *(_DWORD *)(v1 + 12036) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7184) + 36))(v1 + 7184); *(_DWORD *)(v1 + 12168) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7192) + 36))(v1 + 7192); *(_DWORD *)(v1 + 12172) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7200) + 36))(v1 + 7200); *(_DWORD *)(v1 + 12176) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7208) + 36))(v1 + 7208); *(_DWORD *)(v1 + 12180) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7216) + 36))(v1 + 7216); *(_DWORD *)(v1 + 12184) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7224) + 36))(v1 + 7224); *(_DWORD *)(v1 + 12188) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7232) + 36))(v1 + 7232); *(_DWORD *)(v1 + 12132) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7052) + 36))(v1 + 7052); *(_DWORD *)(v1 + 12136) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7060) + 36))(v1 + 7060); *(_DWORD *)(v1 + 12140) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7068) + 36))(v1 + 7068); *(_DWORD *)(v1 + 12144) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7076) + 36))(v1 + 7076); *(_DWORD *)(v1 + 7092) = 792; *(_DWORD *)(v1 + 7116) = 0; *(_DWORD *)(v1 + 7096) = 792; *(_DWORD *)(v1 + 7120) = 0; *(_DWORD *)(v1 + 7100) = 792; *(_DWORD *)(v1 + 7124) = 0; *(_DWORD *)(v1 + 7104) = 792; *(_DWORD *)(v1 + 7128) = 0; *(_DWORD *)(v1 + 7108) = 792; *(_DWORD *)(v1 + 7132) = 0; *(_DWORD *)(v1 + 12148) = v1 + 7084; *(_DWORD *)(v1 + 12152) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7136) + 36))(v1 + 7136); *(_DWORD *)(v1 + 12156) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7144) + 36))(v1 + 7144); *(_DWORD *)(v1 + 12496) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7240) + 36))(v1 + 7240); *(_DWORD *)(v1 + 12500) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7248) + 36))(v1 + 7248); *(_DWORD *)(v1 + 12504) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7256) + 36))(v1 + 7256); *(_DWORD *)(v1 + 12508) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7280) + 36))(v1 + 7280); *(_DWORD *)(v1 + 12512) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7288) + 36))(v1 + 7288); *(_DWORD *)(v1 + 12516) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7296) + 36))(v1 + 7296); *(_DWORD *)(v1 + 12520) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7304) + 36))(v1 + 7304); *(_DWORD *)(v1 + 12524) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7312) + 36))(v1 + 7312); *(_DWORD *)(v1 + 12528) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7320) + 36))(v1 + 7320); *(_DWORD *)(v1 + 12532) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7328) + 36))(v1 + 7328); *(_DWORD *)(v1 + 12160) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7152) + 36))(v1 + 7152); *(_DWORD *)(v1 + 12164) = (*(int (**)(void))(*(_DWORD *)(v1 + 7160) + 36))(); *(_DWORD *)(v1 + 12472) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7656) + 36))(v1 + 7656); *(_DWORD *)(v1 + 12476) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7664) + 36))(v1 + 7664); *(_DWORD *)(v1 + 12480) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7680) + 36))(v1 + 7680); *(_DWORD *)(v1 + 12484) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7696) + 36))(v1 + 7696); *(_DWORD *)(v1 + 12420) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7704) + 36))(v1 + 7704); *(_DWORD *)(v1 + 12424) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7712) + 36))(v1 + 7712); *(_DWORD *)(v1 + 12428) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7720) + 36))(v1 + 7720); *(_DWORD *)(v1 + 12432) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7728) + 36))(v1 + 7728); *(_DWORD *)(v1 + 12436) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7736) + 36))(v1 + 7736); *(_DWORD *)(v1 + 12440) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7744) + 36))(v1 + 7744); *(_DWORD *)(v1 + 12444) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7752) + 36))(v1 + 7752); *(_DWORD *)(v1 + 12448) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7760) + 36))(v1 + 7760); *(_DWORD *)(v1 + 12452) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7768) + 36))(v1 + 7768); *(_DWORD *)(v1 + 12456) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7776) + 36))(v1 + 7776); *(_DWORD *)(v1 + 12460) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7784) + 36))(v1 + 7784); *(_DWORD *)(v1 + 12464) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7792) + 36))(v1 + 7792); *(_DWORD *)(v1 + 12468) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7800) + 36))(v1 + 7800); *(_DWORD *)(v1 + 12492) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7808) + 36))(v1 + 7808); *(_DWORD *)(v1 + 12192) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7816) + 36))(v1 + 7816); *(_DWORD *)(v1 + 12196) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7824) + 36))(v1 + 7824); *(_DWORD *)(v1 + 12200) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7832) + 36))(v1 + 7832); *(_DWORD *)(v1 + 12204) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7848) + 36))(v1 + 7848); *(_DWORD *)(v1 + 12208) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7864) + 36))(v1 + 7864); *(_DWORD *)(v1 + 12212) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7880) + 36))(v1 + 7880); *(_DWORD *)(v1 + 12216) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7896) + 36))(v1 + 7896); *(_DWORD *)(v1 + 12220) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7912) + 36))(v1 + 7912); *(_DWORD *)(v1 + 12224) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7928) + 36))(v1 + 7928); *(_DWORD *)(v1 + 12228) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7936) + 36))(v1 + 7936); *(_DWORD *)(v1 + 12488) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7944) + 36))(v1 + 7944); *(_DWORD *)(v1 + 12232) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7952) + 36))(v1 + 7952); *(_DWORD *)(v1 + 12236) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7960) + 36))(v1 + 7960); *(_DWORD *)(v1 + 12240) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7976) + 36))(v1 + 7976); *(_DWORD *)(v1 + 12244) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7984) + 36))(v1 + 7984); *(_DWORD *)(v1 + 12248) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 7992) + 36))(v1 + 7992); *(_DWORD *)(v1 + 12252) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8000) + 36))(v1 + 8000); *(_DWORD *)(v1 + 12256) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8008) + 36))(v1 + 8008); *(_DWORD *)(v1 + 12260) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8016) + 36))(v1 + 8016); *(_DWORD *)(v1 + 12264) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8024) + 36))(v1 + 8024); *(_DWORD *)(v1 + 12268) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8032) + 36))(v1 + 8032); *(_DWORD *)(v1 + 12272) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8040) + 36))(v1 + 8040); *(_DWORD *)(v1 + 12276) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8048) + 36))(v1 + 8048); *(_DWORD *)(v1 + 12280) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8056) + 36))(v1 + 8056); *(_DWORD *)(v1 + 12284) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8072) + 36))(v1 + 8072); *(_DWORD *)(v1 + 12288) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8080) + 36))(v1 + 8080); *(_DWORD *)(v1 + 12292) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8088) + 36))(v1 + 8088); *(_DWORD *)(v1 + 12296) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8104) + 36))(v1 + 8104); *(_DWORD *)(v1 + 12300) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8112) + 36))(v1 + 8112); *(_DWORD *)(v1 + 12536) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8128) + 36))(v1 + 8128); *(_DWORD *)(v1 + 12540) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8136) + 36))(v1 + 8136); *(_DWORD *)(v1 + 12544) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8144) + 36))(v1 + 8144); *(_DWORD *)(v1 + 12548) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8152) + 36))(v1 + 8152); *(_DWORD *)(v1 + 12552) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8160) + 36))(v1 + 8160); *(_DWORD *)(v1 + 12556) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8168) + 36))(v1 + 8168); *(_DWORD *)(v1 + 12304) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8176) + 36))(v1 + 8176); *(_DWORD *)(v1 + 12308) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8192) + 36))(v1 + 8192); *(_DWORD *)(v1 + 12312) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8208) + 36))(v1 + 8208); *(_DWORD *)(v1 + 12316) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8216) + 36))(v1 + 8216); *(_DWORD *)(v1 + 12320) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8224) + 36))(v1 + 8224); *(_DWORD *)(v1 + 12324) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8232) + 36))(v1 + 8232); *(_DWORD *)(v1 + 12328) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8240) + 36))(v1 + 8240); *(_DWORD *)(v1 + 12332) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8248) + 36))(v1 + 8248); *(_DWORD *)(v1 + 12336) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8256) + 36))(v1 + 8256); *(_DWORD *)(v1 + 12340) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8264) + 36))(v1 + 8264); *(_DWORD *)(v1 + 12344) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8272) + 36))(v1 + 8272); *(_DWORD *)(v1 + 12348) = (*(int (**)(void))(*(_DWORD *)(v1 + 8280) + 36))(); *(_DWORD *)(v1 + 12352) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8288) + 36))(v1 + 8288); *(_DWORD *)(v1 + 12356) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8296) + 36))(v1 + 8296); *(_DWORD *)(v1 + 12360) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8304) + 36))(v1 + 8304); *(_DWORD *)(v1 + 12364) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8312) + 36))(v1 + 8312); *(_DWORD *)(v1 + 12560) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8320) + 36))(v1 + 8320); *(_DWORD *)(v1 + 12564) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8328) + 36))(v1 + 8328); *(_DWORD *)(v1 + 12568) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8336) + 36))(v1 + 8336); *(_DWORD *)(v1 + 12572) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8344) + 36))(v1 + 8344); *(_DWORD *)(v1 + 12652) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8352) + 36))(v1 + 8352); *(_DWORD *)(v1 + 12656) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8360) + 36))(v1 + 8360); *(_DWORD *)(v1 + 12660) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8368) + 36))(v1 + 8368); *(_DWORD *)(v1 + 12664) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8376) + 36))(v1 + 8376); *(_DWORD *)(v1 + 12668) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8384) + 36))(v1 + 8384); *(_DWORD *)(v1 + 8400) = 792; *(_DWORD *)(v1 + 8424) = 0; *(_DWORD *)(v1 + 8404) = 792; *(_DWORD *)(v1 + 8428) = 0; *(_DWORD *)(v1 + 8408) = 792; *(_DWORD *)(v1 + 8432) = 0; *(_DWORD *)(v1 + 8412) = 792; *(_DWORD *)(v1 + 8436) = 0; *(_DWORD *)(v1 + 8416) = 792; *(_DWORD *)(v1 + 8440) = 0; *(_DWORD *)(v1 + 12672) = v1 + 8392; *(_DWORD *)(v1 + 8452) = 792; *(_DWORD *)(v1 + 8476) = 0; *(_DWORD *)(v1 + 8456) = 792; *(_DWORD *)(v1 + 8480) = 0; *(_DWORD *)(v1 + 8460) = 792; *(_DWORD *)(v1 + 8484) = 0; *(_DWORD *)(v1 + 8464) = 792; *(_DWORD *)(v1 + 8488) = 0; *(_DWORD *)(v1 + 8468) = 792; *(_DWORD *)(v1 + 8492) = 0; *(_DWORD *)(v1 + 12676) = v1 + 8444; *(_DWORD *)(v1 + 8504) = 792; *(_DWORD *)(v1 + 8528) = 0; *(_DWORD *)(v1 + 8508) = 792; *(_DWORD *)(v1 + 8532) = 0; *(_DWORD *)(v1 + 8512) = 792; *(_DWORD *)(v1 + 8536) = 0; *(_DWORD *)(v1 + 8516) = 792; *(_DWORD *)(v1 + 8540) = 0; *(_DWORD *)(v1 + 8520) = 792; *(_DWORD *)(v1 + 8544) = 0; *(_DWORD *)(v1 + 12680) = v1 + 8496; *(_DWORD *)(v1 + 8556) = 792; *(_DWORD *)(v1 + 8580) = 0; *(_DWORD *)(v1 + 8560) = 792; *(_DWORD *)(v1 + 8584) = 0; *(_DWORD *)(v1 + 8564) = 792; *(_DWORD *)(v1 + 8588) = 0; *(_DWORD *)(v1 + 8568) = 792; *(_DWORD *)(v1 + 8592) = 0; *(_DWORD *)(v1 + 8572) = 792; *(_DWORD *)(v1 + 8596) = 0; *(_DWORD *)(v1 + 12684) = v1 + 8548; *(_DWORD *)(v1 + 8608) = 792; *(_DWORD *)(v1 + 8632) = 0; *(_DWORD *)(v1 + 8612) = 792; *(_DWORD *)(v1 + 8636) = 0; *(_DWORD *)(v1 + 8616) = 792; *(_DWORD *)(v1 + 8640) = 0; *(_DWORD *)(v1 + 8620) = 792; *(_DWORD *)(v1 + 8644) = 0; *(_DWORD *)(v1 + 8624) = 792; *(_DWORD *)(v1 + 8648) = 0; *(_DWORD *)(v1 + 12688) = v1 + 8600; *(_DWORD *)(v1 + 12692) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8652) + 36))(v1 + 8652); *(_DWORD *)(v1 + 12696) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8660) + 36))(v1 + 8660); *(_DWORD *)(v1 + 12700) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8668) + 36))(v1 + 8668); *(_DWORD *)(v1 + 12704) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8676) + 36))(v1 + 8676); *(_DWORD *)(v1 + 12708) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8684) + 36))(v1 + 8684); *(_DWORD *)(v1 + 12368) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8692) + 36))(v1 + 8692); *(_DWORD *)(v1 + 12372) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8700) + 36))(v1 + 8700); *(_DWORD *)(v1 + 12376) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8708) + 36))(v1 + 8708); *(_DWORD *)(v1 + 12380) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8724) + 36))(v1 + 8724); *(_DWORD *)(v1 + 12584) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8740) + 36))(v1 + 8740); *(_DWORD *)(v1 + 12588) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8748) + 36))(v1 + 8748); *(_DWORD *)(v1 + 12592) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8756) + 36))(v1 + 8756); *(_DWORD *)(v1 + 12596) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8764) + 36))(v1 + 8764); *(_DWORD *)(v1 + 12576) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8772) + 36))(v1 + 8772); *(_DWORD *)(v1 + 12580) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8788) + 36))(v1 + 8788); *(_DWORD *)(v1 + 12612) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8804) + 36))(v1 + 8804); *(_DWORD *)(v1 + 12616) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8812) + 36))(v1 + 8812); *(_DWORD *)(v1 + 12600) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8820) + 36))(v1 + 8820); *(_DWORD *)(v1 + 8836) = 792; *(_DWORD *)(v1 + 8860) = 0; *(_DWORD *)(v1 + 8840) = 792; *(_DWORD *)(v1 + 8864) = 0; *(_DWORD *)(v1 + 8844) = 792; *(_DWORD *)(v1 + 8868) = 0; *(_DWORD *)(v1 + 8848) = 792; *(_DWORD *)(v1 + 8872) = 0; *(_DWORD *)(v1 + 8852) = 792; *(_DWORD *)(v1 + 8876) = 0; *(_DWORD *)(v1 + 12604) = v1 + 8828; *(_DWORD *)(v1 + 12608) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8880) + 36))(v1 + 8880); *(_DWORD *)(v1 + 12384) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8888) + 36))(v1 + 8888); *(_DWORD *)(v1 + 12388) = (*(int (**)(void))(*(_DWORD *)(v1 + 8904) + 36))(); *(_DWORD *)(v1 + 12392) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8912) + 36))(v1 + 8912); *(_DWORD *)(v1 + 12396) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8920) + 36))(v1 + 8920); *(_DWORD *)(v1 + 12400) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8928) + 36))(v1 + 8928); *(_DWORD *)(v1 + 12404) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8944) + 36))(v1 + 8944); *(_DWORD *)(v1 + 12408) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8952) + 36))(v1 + 8952); *(_DWORD *)(v1 + 12828) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8960) + 36))(v1 + 8960); *(_DWORD *)(v1 + 12832) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8968) + 36))(v1 + 8968); *(_DWORD *)(v1 + 12620) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8976) + 36))(v1 + 8976); *(_DWORD *)(v1 + 12624) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8984) + 36))(v1 + 8984); *(_DWORD *)(v1 + 12412) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 8992) + 36))(v1 + 8992); *(_DWORD *)(v1 + 12416) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9000) + 36))(v1 + 9000); *(_DWORD *)(v1 + 12628) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9016) + 36))(v1 + 9016); *(_DWORD *)(v1 + 12632) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9024) + 36))(v1 + 9024); *(_DWORD *)(v1 + 12636) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9032) + 36))(v1 + 9032); *(_DWORD *)(v1 + 12640) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9040) + 36))(v1 + 9040); *(_DWORD *)(v1 + 12644) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9048) + 36))(v1 + 9048); *(_DWORD *)(v1 + 12648) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9056) + 36))(v1 + 9056); *(_DWORD *)(v1 + 12744) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9064) + 36))(v1 + 9064); *(_DWORD *)(v1 + 12748) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9080) + 36))(v1 + 9080); *(_DWORD *)(v1 + 12752) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9096) + 36))(v1 + 9096); *(_DWORD *)(v1 + 12756) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9112) + 36))(v1 + 9112); *(_DWORD *)(v1 + 12760) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9120) + 36))(v1 + 9120); *(_DWORD *)(v1 + 12764) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9128) + 36))(v1 + 9128); *(_DWORD *)(v1 + 12768) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9136) + 36))(v1 + 9136); *(_DWORD *)(v1 + 12772) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9144) + 36))(v1 + 9144); *(_DWORD *)(v1 + 12712) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9160) + 36))(v1 + 9160); *(_DWORD *)(v1 + 12716) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9168) + 36))(v1 + 9168); *(_DWORD *)(v1 + 12720) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9176) + 36))(v1 + 9176); *(_DWORD *)(v1 + 12724) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9184) + 36))(v1 + 9184); *(_DWORD *)(v1 + 12728) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9192) + 36))(v1 + 9192); *(_DWORD *)(v1 + 12732) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9200) + 36))(v1 + 9200); *(_DWORD *)(v1 + 12776) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9208) + 36))(v1 + 9208); *(_DWORD *)(v1 + 12780) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9216) + 36))(v1 + 9216); *(_DWORD *)(v1 + 12784) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9232) + 36))(v1 + 9232); *(_DWORD *)(v1 + 12788) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9240) + 36))(v1 + 9240); *(_DWORD *)(v1 + 12792) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9248) + 36))(v1 + 9248); *(_DWORD *)(v1 + 12796) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9256) + 36))(v1 + 9256); *(_DWORD *)(v1 + 12800) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9272) + 36))(v1 + 9272); *(_DWORD *)(v1 + 12804) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9280) + 36))(v1 + 9280); *(_DWORD *)(v1 + 12808) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9296) + 36))(v1 + 9296); *(_DWORD *)(v1 + 12812) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9304) + 36))(v1 + 9304); *(_DWORD *)(v1 + 12736) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9312) + 36))(v1 + 9312); *(_DWORD *)(v1 + 12740) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9320) + 36))(v1 + 9320); *(_DWORD *)(v1 + 12816) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9508) + 36))(v1 + 9508); *(_DWORD *)(v1 + 12820) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9516) + 36))(v1 + 9516); *(_DWORD *)(v1 + 12824) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9524) + 36))(v1 + 9524); *(_DWORD *)(v1 + 12836) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9596) + 36))(v1 + 9596); *(_DWORD *)(v1 + 12840) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9604) + 36))(v1 + 9604); *(_DWORD *)(v1 + 12844) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9612) + 36))(v1 + 9612); *(_DWORD *)(v1 + 12848) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9620) + 36))(v1 + 9620); *(_DWORD *)(v1 + 12852) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9628) + 36))(v1 + 9628); *(_DWORD *)(v1 + 12856) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9636) + 36))(v1 + 9636); *(_DWORD *)(v1 + 12860) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9644) + 36))(v1 + 9644); *(_DWORD *)(v1 + 12864) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9652) + 36))(v1 + 9652); *(_DWORD *)(v1 + 12868) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9660) + 36))(v1 + 9660); *(_DWORD *)(v1 + 12872) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9668) + 36))(v1 + 9668); *(_DWORD *)(v1 + 12876) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9676) + 36))(v1 + 9676); *(_DWORD *)(v1 + 12880) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9684) + 36))(v1 + 9684); *(_DWORD *)(v1 + 12884) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9692) + 36))(v1 + 9692); *(_DWORD *)(v1 + 12888) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9700) + 36))(v1 + 9700); *(_DWORD *)(v1 + 12892) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9708) + 36))(v1 + 9708); *(_DWORD *)(v1 + 12896) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9716) + 36))(v1 + 9716); *(_DWORD *)(v1 + 12900) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9724) + 36))(v1 + 9724); *(_DWORD *)(v1 + 12904) = (*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 9732) + 36))(v1 + 9732); v2 = 0; v3 = 0; v4 = v1 + 9740; v7 = 0; v8 = v1 + 9740; do { if ( *(_DWORD *)v4 == 0 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateContainer::AbnormalStateList::AbnormalStateList : Buffer not full", v2); loc_6391B0("AbnormalStateContainer::AbnormalStateList::AbnormalStateList"); v4 = v8; v3 = v7; } *(_DWORD *)(*(_DWORD *)v4 + 4) = v2; if ( v2 < *(_WORD *)(v1 + 12912) ) { v5 = *(_DWORD *)(v1 + 12916); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v4; } v3 += 12; v4 += 4; ++v2; v8 = v4; v7 = v3; } while ( v3 < 9504 ); return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 69F6BC: using guessed type int (*off_69F6BC)(); // 69F6EC: using guessed type int (*off_69F6EC)(); // 69F71C: using guessed type int (*off_69F71C)(); // 69F74C: using guessed type int (*off_69F74C)(); // 69F77C: using guessed type int (*off_69F77C)(); // 69F7AC: using guessed type int (*off_69F7AC)(); // 69F7DC: using guessed type int (*off_69F7DC)(); // 69F80C: using guessed type int (*off_69F80C)(); // 69F83C: using guessed type int (*off_69F83C)(); // 69F86C: using guessed type int (*off_69F86C)(); // 69F89C: using guessed type int (*off_69F89C)(); // 69FB3C: using guessed type int (*off_69FB3C)(); // 6A04B4: using guessed type int (__thiscall *off_6A04B4)(void *, char); //----- (00415C60) -------------------------------------------------------- int __thiscall sub_415C60(void *this, int a2) { unsigned int v2; // eax@1 char *v3; // edx@1 v2 = 0; v3 = (char *)this + 4; while ( *(_DWORD *)v3 != a2 ) { ++v2; v3 += 8; if ( v2 >= 4 ) return 0; } return *((_DWORD *)this + 2 * v2 + 2); } //----- (00415C90) -------------------------------------------------------- char __thiscall sub_415C90(void *this, int a2) { unsigned int v2; // eax@1 char *v3; // ecx@1 v2 = 0; v3 = (char *)this + 4; while ( *(_DWORD *)v3 != a2 ) { ++v2; v3 += 8; if ( v2 >= 4 ) return 0; } return 1; } //----- (00415CC0) -------------------------------------------------------- char __stdcall sub_415CC0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { return 0; } //----- (00415CD0) -------------------------------------------------------- char __userpurge sub_415CD0(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11, int a12) { int v12; // esi@1 int v13; // eax@1 char result; // al@3 __int16 *v15; // ecx@7 int v16; // ecx@9 int v17; // ecx@12 char v18; // [sp+13h] [bp+Fh]@4 v12 = a1; v13 = sub_4012C0(a1); if ( v13 && sub_4637F0((void *)v13, a4) == 1 ) { result = 0; } else { result = sub_40CE80(v12 + 432, a2, a3, a4, a5, a6, v12, a7, a8, a9, a10, a11, a12); v18 = result; if ( result ) { if ( a6 ) { if ( (unsigned int)(a5 - 1) <= 0x26 ) { v15 = a6[9 * a5 + 3]; if ( v15 ) { if ( a3 != v12 ) { v16 = *(_DWORD *)(v15 + 19); if ( v16 == 21 || v16 == 96 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 3788))(v12); (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 2256))(v12); sub_437780(&dword_87B264, v12); result = v18; } v17 = *(_DWORD *)(a6[9 * a5 + 3] + 19); if ( v17 == 32 || v17 == 28 || v17 == 67 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 3788))(v12); (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 2256))(v12); sub_437780(&dword_87B264, v12); result = v18; } } } } } } } return result; } //----- (00415DE0) -------------------------------------------------------- char __userpurge sub_415DE0(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11, int a12) { int v12; // esi@1 char result; // al@2 int v14; // eax@6 v12 = a1; if ( (*(int (**)(void))(*(_DWORD *)a1 + 1256))() ) { if ( a6 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 2616))(v12, 3, a4, 0); result = sub_415CD0(v12, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); if ( result ) { v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v12 + 3188))(v12); if ( v14 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v14 + 3316))( v14, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); result = 1; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Set : Invalid AbState", 0); result = sub_415CD0(v12, a2, a3, a4, a5, 0, a7, a8, a9, a10, a11, a12); } } else { result = 0; } return result; } //----- (00415EE0) -------------------------------------------------------- char __thiscall sub_415EE0(void *this, int a2, int a3, int a4, char a5) { void *v5; // edi@1 int v7; // esi@4 int v8; // ebx@8 int v9; // [sp+1Ch] [bp+14h]@8 v5 = this; if ( a3 >= 792 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a3); return 0; } v7 = dword_8772F0[a3]; if ( !v7 || !*(_DWORD *)(v7 + 36 * a4 + 12) ) return 0; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 1592))( this, a2, *(_DWORD *)(*(_DWORD *)v7 + 34), a4, v7, dword_14D129E8, 0, -1, 0, 0, 0) ) { if ( a5 ) { v8 = dword_871500; sub_401900(v5, *(_DWORD *)(*(_DWORD *)v7 + 34)); v9 = v7 + 36 * v8 + 12; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1008))( v5, *(_DWORD *)(*(_DWORD *)v7 + 34), *(_DWORD *)(*(_DWORD *)v9 + 43), 1); sub_4055D0(v5, *(_DWORD *)(*(_DWORD *)v7 + 34), *(_DWORD *)(*(_DWORD *)v9 + 43), v8); return 1; } } else { if ( a5 ) return 0; } return 1; } // 871500: using guessed type int dword_871500; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00415FD0) -------------------------------------------------------- char __thiscall sub_415FD0(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8) { void *v8; // esi@1 char result; // al@2 int v10; // edi@3 v8 = this; if ( a3 < 792 ) { v10 = dword_8772F0[a3]; if ( v10 ) { if ( a8 == 12 && (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)this + 996))(this, a3) ) a5 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 1592))( v8, a2, *(_DWORD *)(*(_DWORD *)v10 + 34), a4, v10, dword_14D129E8, 0, -1, a6, a8, 0) ) { if ( a5 ) { sub_401900(v8, *(_DWORD *)(*(_DWORD *)v10 + 34)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 1008))( v8, *(_DWORD *)(*(_DWORD *)v10 + 34), a7, 1); sub_4055D0(v8, *(_DWORD *)(*(_DWORD *)v10 + 34), a7, a4); } result = 1; } else { result = 0; } } else { result = 0; } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a3); result = 0; } return result; } // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (004160C0) -------------------------------------------------------- char __stdcall sub_4160C0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) { return 0; } //----- (004160D0) -------------------------------------------------------- char __userpurge sub_4160D0(int a1, double a2, int a3, int a4, int a5, __int16 **a6, int a7, int a8, int a9, int a10, int a11) { int v11; // esi@1 char result; // al@2 v11 = a1; if ( a6 ) { (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 2616))(3, a4, 0); result = sub_415CD0(v11, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, 0); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Set : Invalid AbState", 0); result = sub_415CD0(v11, a2, a3, a4, a5, 0, a7, a8, a9, a10, a11, 0); } return result; } //----- (00416170) -------------------------------------------------------- bool __thiscall sub_416170(int this, int a2) { signed int v2; // esi@1 int v3; // edx@2 v2 = 0; if ( *(_WORD *)(*(_DWORD *)(this + 8168) + 20) != -1 ) { v3 = *(_DWORD *)(*(_DWORD *)a2 + 248); if ( v3 ) { if ( this != -9573 ) { switch ( v3 ) { case 4: v2 = *(_WORD *)(this + 9605); break; case 1: v2 = *(_WORD *)(this + 9607); break; case 2: v2 = *(_WORD *)(this + 9609); break; case 3: v2 = *(_WORD *)(this + 9611); break; case 8: v2 = *(_WORD *)(this + 9613); break; case 7: v2 = *(_WORD *)(this + 9615); break; case 9: v2 = *(_WORD *)(this + 9617); break; case 10: v2 = *(_WORD *)(this + 9619); break; case 11: v2 = *(_WORD *)(this + 9621); break; case 12: v2 = *(_WORD *)(this + 9623); break; default: return (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < v2; } } } } return (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < v2; } //----- (00416240) -------------------------------------------------------- bool __thiscall sub_416240(void *this, int a2) { bool result; // al@2 int v3; // eax@3 if ( a2 ) { v3 = *(_DWORD *)(a2 + 8); result = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_DWORD *)((char *)this + v3 + 4528) + *(_DWORD *)((char *)this + v3 + 6568); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_AbnormalState_Resist : Invalid AbState", 0); result = 1; } return result; } //----- (004162A0) -------------------------------------------------------- bool __thiscall sub_4162A0(int this, int a2) { bool result; // al@2 int v3; // eax@5 signed int v4; // esi@8 if ( a2 ) { if ( *(_DWORD *)a2 ) { v3 = *(_DWORD *)(this + 8104); if ( v3 ) { switch ( *(_DWORD *)(*(_DWORD *)a2 + 248) ) { case 4: v4 = *(_WORD *)(v3 + 32); goto LABEL_18; case 1: v4 = *(_WORD *)(v3 + 34); goto LABEL_18; case 2: v4 = *(_WORD *)(v3 + 36); goto LABEL_18; case 3: v4 = *(_WORD *)(v3 + 38); goto LABEL_18; case 8: v4 = *(_WORD *)(v3 + 40); goto LABEL_18; case 7: v4 = *(_WORD *)(v3 + 42); goto LABEL_18; case 9: v4 = *(_WORD *)(v3 + 44); goto LABEL_18; case 0xA: v4 = *(_WORD *)(v3 + 46); goto LABEL_18; case 0xB: v4 = *(_WORD *)(v3 + 48); goto LABEL_18; case 0xC: v4 = *(_WORD *)(v3 + 50); LABEL_18: result = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < v4; break; default: result = 0; break; } } else { result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ShineMover::so_AbnormalState_Resist : AbnormalStateInfo data null", 0); result = 1; } } else { sub_639100(&unk_86DDD8, (int)"ShineMover::so_AbnormalState_Resist : Abstate data null", 0); result = 1; } return result; } //----- (00416390) -------------------------------------------------------- char __thiscall sub_416390(void *this, int a2, int a3) { unsigned int v3; // eax@1 void *v4; // esi@1 int v6; // eax@4 bool v7; // zf@4 int v8; // eax@4 int v9; // edi@4 int v10; // eax@5 signed int v11; // ecx@7 v3 = *(_WORD *)(a2 + 4); v4 = this; if ( dword_8772EC < v3 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", *(_WORD *)(a2 + 4)); return 0; } v6 = 1452 * v3; v7 = dword_8772E4 + v6 == 0; v8 = dword_8772E4 + v6; v9 = v8; if ( v7 || (v10 = *(_DWORD *)v8, !*(_DWORD *)v9) || (!*(_BYTE *)a3 ? (v11 = -1) : (v11 = *(_DWORD *)(a3 + 4)), !(unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, signed int, int, int, _DWORD, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(v10 + 34), 1, v9, dword_14D129E8, 0, 0, v11, 13, 0)) ) return 0; sub_401900(v4, *(_DWORD *)(*(_DWORD *)v9 + 34)); sub_4055D0(v4, *(_DWORD *)(*(_DWORD *)v9 + 34), 0, 1); (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1008))( v4, *(_DWORD *)(*(_DWORD *)v9 + 34), 0, 0); return 1; } // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; // 14D129E8: using guessed type int dword_14D129E8; //----- (00416450) -------------------------------------------------------- void *__thiscall sub_416450(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1068, 79) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1068, 1068, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00416510) -------------------------------------------------------- void *__thiscall sub_416510(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 4042, 289) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 4042, 4042, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004165D0) -------------------------------------------------------- void *__thiscall sub_4165D0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 22, 7) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 22, 22, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00416670) -------------------------------------------------------- void *__thiscall sub_416670(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A1D60; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A1D60: using guessed type int (__thiscall *off_6A1D60)(void *, char); //----- (004166A0) -------------------------------------------------------- void *__thiscall sub_4166A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A1DCC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A1DCC: using guessed type int (__thiscall *off_6A1DCC)(void *, char); //----- (004166D0) -------------------------------------------------------- void *__thiscall sub_4166D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A1DD4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A1DD4: using guessed type int (__thiscall *off_6A1DD4)(void *, char); //----- (00416700) -------------------------------------------------------- void *__thiscall sub_416700(void *this) { void *v1; // esi@1 char *v2; // edi@1 v1 = this; v2 = (char *)this + 4; sub_639920((int)((char *)this + 4)); *(_DWORD *)v2 = &off_6A1D60; memset(v2 + 64, 0, 0x4Fu); *(_DWORD *)v1 = (char *)v1 + 68; *((_WORD *)v1 + 34) = -1; *(_BYTE *)(*(_DWORD *)v1 + 2) = 0; *(_DWORD *)(*(_DWORD *)v1 + 34) = 0; *(_DWORD *)(*(_DWORD *)v1 + 38) = 38; *(_DWORD *)(*(_DWORD *)v1 + 71) = 0; *(_DWORD *)(*(_DWORD *)v1 + 63) = 0; *(_DWORD *)(*(_DWORD *)v1 + 47) = 0; *(_DWORD *)(*(_DWORD *)v1 + 47) = 0; *(_DWORD *)(*(_DWORD *)v1 + 75) = 0; *(_DWORD *)(*(_DWORD *)v1 + 67) = 0; *(_DWORD *)(*(_DWORD *)v1 + 59) = 0; *(_DWORD *)(*(_DWORD *)v1 + 51) = 0; return v1; } // 6A1D60: using guessed type int (__thiscall *off_6A1D60)(void *, char); //----- (00416780) -------------------------------------------------------- int __thiscall sub_416780(int this) { int v1; // esi@1 FILE *v2; // eax@1 v1 = this; sub_416450((void *)(this + 4), "../9Data/Shine/SubAbState.shn"); *(_DWORD *)(v1 + 148) = *(_DWORD *)(*(_DWORD *)(v1 + 56) + 40); v2 = fopen("../9Data/SubAbStateClass.txt", "w"); return fclose(v2); } //----- (004167C0) -------------------------------------------------------- int __thiscall sub_4167C0(int this, int a2, int a3) { int v3; // esi@1 int result; // eax@2 unsigned int v5; // ebx@3 int v6; // edi@5 unsigned int v7; // esi@7 int v8; // eax@9 int v9; // [sp+4h] [bp-8h]@1 char v10; // [sp+Bh] [bp-1h]@3 v3 = this; v9 = this; if ( *(_BYTE *)a2 == 45 ) { result = *(_DWORD *)this; } else { v5 = 0; v10 = 0; if ( *(_DWORD *)(this + 148) ) { do { if ( v5 < *(_DWORD *)(*(_DWORD *)(v3 + 56) + 40) ) v6 = sub_626BC0(v3 + 4, v5); else v6 = v3 + 68; v7 = *(_DWORD *)(v6 + 34); if ( v7 != 999 ) { v8 = v5 < *(_DWORD *)(*(_DWORD *)(v9 + 56) + 40) ? sub_626BC0(v9 + 4, v5) : v9 + 68; v7 = *(_DWORD *)(v6 + 34); if ( v7 > 0x28 ) { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::SubAbState::sas_Find : Wrong MaxStrength", *(_DWORD *)(v8 + 34)); return *(_DWORD *)v9; } } if ( !strcmp((const char *)a2, (const char *)(v6 + 2)) ) { v10 = 1; if ( v7 == 999 || v7 == a3 ) return v6; } ++v5; v3 = v9; } while ( v5 < *(_DWORD *)(v9 + 148) ); if ( v10 ) goto LABEL_18; } sub_6390B0(&unk_86DDD8, (int)"AbnormalStateDictionary::SubAbState::sas_Find : Not found", a2); LABEL_18: result = *(_DWORD *)v3; } return result; } //----- (004168E0) -------------------------------------------------------- int __thiscall sub_4168E0(int this) { int v1; // esi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_6A1DCC; memset((void *)(v1 + 64), 0, 0x121u); sub_639920(v1 + 356); *(_DWORD *)(v1 + 356) = &off_6A1DD4; *(_DWORD *)(v1 + 420) = 0; *(_WORD *)(v1 + 424) = 0; *(_BYTE *)(v1 + 426) = 0; sub_639540(v1 + 3608); sub_639540(v1 + 4636); return v1; } // 6A1DCC: using guessed type int (__thiscall *off_6A1DCC)(void *, char); // 6A1DD4: using guessed type int (__thiscall *off_6A1DD4)(void *, char); //----- (00416990) -------------------------------------------------------- void __thiscall sub_416990(int this) { int v1; // esi@1 v1 = this; operator delete(*(void **)(this + 428)); sub_639560((void *)(v1 + 4636)); sub_639560((void *)(v1 + 3608)); *(_DWORD *)(v1 + 356) = &off_6A1DD4; sub_639940(v1 + 356); *(_DWORD *)v1 = &off_6A1DCC; sub_639940(v1); } // 6A1DCC: using guessed type int (__thiscall *off_6A1DCC)(void *, char); // 6A1DD4: using guessed type int (__thiscall *off_6A1DD4)(void *, char); //----- (00416A30) -------------------------------------------------------- FILE *__thiscall sub_416A30(void *this) { int v1; // esi@1 int v2; // eax@1 unsigned int v3; // edi@1 int v4; // eax@3 int v5; // eax@7 int v6; // eax@11 unsigned int v7; // ecx@13 int v8; // eax@13 int v9; // edx@15 unsigned int v10; // edi@15 int v11; // ebx@19 int v12; // eax@22 int v13; // ebx@25 int v14; // eax@28 int v15; // ebx@31 unsigned int v16; // edi@33 int v17; // eax@35 signed int v18; // edi@52 int v19; // eax@53 int v20; // ecx@53 int v21; // edx@53 int v22; // ST18_4@53 int v23; // ecx@53 int v24; // edx@53 int v25; // ST18_4@53 int v26; // ecx@53 int v27; // edx@53 int v28; // ST18_4@53 int v29; // ecx@53 int v30; // ecx@53 int v31; // edx@53 int v32; // eax@53 int v33; // esi@56 int v34; // ebx@56 FILE *result; // eax@57 int v36; // edi@59 signed int v37; // [sp+14h] [bp-Ch]@1 unsigned int v38; // [sp+18h] [bp-8h]@15 int v39; // [sp+1Ch] [bp-4h]@52 v1 = (int)this; sub_416510(this, "../9Data/Shine/AbState.shn"); sub_4165D0((void *)(v1 + 356), "../9Data/Shine/AbStateSaveTypeInfo.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v3 = 0; v37 = *(_DWORD *)(*(_DWORD *)(v1 + 408) + 40); *(_DWORD *)(v1 + 432) = v2; *(_DWORD *)(v1 + 436) = 0; if ( v2 ) { do { if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v4 = sub_626BC0(v1, v3); else v4 = v1 + 64; if ( (unsigned int)*(_WORD *)v4 > *(_DWORD *)(v1 + 436) ) { if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v5 = sub_626BC0(v1, v3); else v5 = v1 + 64; *(_DWORD *)(v1 + 436) = *(_WORD *)v5; } ++v3; } while ( v3 < *(_DWORD *)(v1 + 432) ); } v6 = unknown_libname_130(1452 * (*(_DWORD *)(v1 + 436) + 1) | -((unsigned __int8)(1452 * (unsigned __int64)(unsigned int)(*(_DWORD *)(v1 + 436) + 1) >> 32) != 0)); *(_DWORD *)(v1 + 428) = v6; if ( v6 == 0 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_Load : Fail to alloc memory", 0); loc_6391B0("AbnormalStateDictionary::AbState::as_Load"); } v7 = 0; v8 = 0; do { *(_DWORD *)(v8 + *(_DWORD *)(v1 + 428)) = 0; *(_DWORD *)(v8 + *(_DWORD *)(v1 + 428) + 4) = 0; *(_DWORD *)(v8 + *(_DWORD *)(v1 + 428) + 8) = 172; ++v7; v8 += 1452; } while ( v7 <= *(_DWORD *)(v1 + 436) ); v9 = v1 + 440; memset((void *)(v1 + 440), 0, 0xC60u); v10 = 0; v38 = 0; if ( *(_DWORD *)(v1 + 432) > 0u ) { while ( 1 ) { sub_401750(&unk_873DB0, v10); if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v11 = sub_626BC0(v1, v10); else v11 = v1 + 64; if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v12 = sub_626BC0(v1, v10); else v12 = v1 + 64; sub_639590((void *)(v1 + 3608), (unsigned __int8 *)(v12 + 2), *(_WORD *)v11); if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v13 = sub_626BC0(v1, v10); else v13 = v1 + 64; if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v14 = sub_626BC0(v1, v10); else v14 = v1 + 64; sub_639590((void *)(v1 + 4636), (unsigned __int8 *)(v14 + 2), *(_DWORD *)(v13 + 34)); if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v15 = sub_626BC0(v1, v10); else v15 = v1 + 64; v16 = 0; *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428)) = v15; if ( v37 > 0 ) { while ( 1 ) { v17 = v16 < *(_DWORD *)(*(_DWORD *)(v1 + 408) + 40) ? sub_626BC0(v1 + 356, v16) : v1 + 420; if ( v17 && *(_DWORD *)(v15 + 252) == *(_DWORD *)v17 ) break; ++v16; if ( (signed int)v16 >= v37 ) goto LABEL_42; } *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 4) = v17; } LABEL_42: switch ( *(_DWORD *)(v15 + 244) ) { case 3: *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 8) = 180; break; case 4: *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 8) = 176; break; case 5: *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 8) = 184; break; } if ( *(_DWORD *)(v15 + 248) == 2 ) { *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 8) = 188; } else { if ( *(_DWORD *)(v15 + 248) == 13 ) *(_DWORD *)(1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 8) = 192; } v39 = 0; *(_DWORD *)(v1 + 4 * *(_DWORD *)(v15 + 34) + 440) = *(_DWORD *)(v1 + 428) + 1452 * *(_WORD *)v15; v18 = 0; do { v19 = sub_4167C0((int)&unk_8770A0, v15 + 212, v39); *(_DWORD *)(v18 + 1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 12) = v19; v20 = v18 + 1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 12; *(_DWORD *)(v18 + 1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 16) = 0; *(_DWORD *)(v20 + 12) = 0; *(_DWORD *)(v20 + 20) = 0; *(_DWORD *)(v20 + 28) = 0; v21 = v18 + 1452 * *(_WORD *)v15; v22 = *(_DWORD *)(v19 + 51); v23 = v21 + *(_DWORD *)(v1 + 428) + 12; *(_DWORD *)(v21 + *(_DWORD *)(v1 + 428) + 16) = *(_DWORD *)(v19 + 47); *(_DWORD *)(v23 + 8) = v22; v24 = v18 + 1452 * *(_WORD *)v15; v25 = *(_DWORD *)(v19 + 59); v26 = v24 + *(_DWORD *)(v1 + 428) + 12; *(_DWORD *)(v24 + *(_DWORD *)(v1 + 428) + 24) = *(_DWORD *)(v19 + 55); *(_DWORD *)(v26 + 16) = v25; v27 = v18 + 1452 * *(_WORD *)v15; v28 = *(_DWORD *)(v19 + 67); v29 = v27 + *(_DWORD *)(v1 + 428) + 12; *(_DWORD *)(v27 + *(_DWORD *)(v1 + 428) + 32) = *(_DWORD *)(v19 + 63); ++v39; *(_DWORD *)(v29 + 24) = v28; v30 = v18 + 1452 * *(_WORD *)v15 + *(_DWORD *)(v1 + 428) + 12; v31 = *(_DWORD *)(v19 + 71); v32 = *(_DWORD *)(v19 + 75); v18 += 36; *(_DWORD *)(v30 + 28) = v31; *(_DWORD *)(v30 + 32) = v32; } while ( v18 < 1440 ); ++v38; if ( v38 >= *(_DWORD *)(v1 + 432) ) break; v10 = v38; } v9 = v1 + 440; } v33 = 0; v34 = v9; do { result = (FILE *)(v33 < 792); if ( v33 < 792 ) { v36 = *(_DWORD *)v34; if ( *(_DWORD *)v34 ) { result = (FILE *)(*(_DWORD *)v36 != 0); if ( !*(_DWORD *)v36 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_Load : Null Index", v33); result = (FILE *)loc_6391B0("AbnormalStateDictionary::AbState::as_Load"); } if ( !*(_DWORD *)(v36 + 4) ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_Load : Null SaveTypeInfo", v33); result = (FILE *)loc_6391B0("AbnormalStateDictionary::AbState::as_Load"); } } } else { result = sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v33); } ++v33; v34 += 4; } while ( (unsigned int)v33 < 0x318 ); return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00416EE0) -------------------------------------------------------- void __thiscall sub_416EE0(void *this, int a2, int a3) { void *v3; // eax@3 char *v4; // eax@3 char *v5; // esi@3 unsigned __int16 v6; // bx@4 int v7; // ecx@7 int v8; // edi@7 int v9; // ecx@8 int v10; // eax@11 void *v11; // eax@12 int v12; // eax@15 int v13; // eax@16 unsigned __int16 v14; // [sp+6h] [bp-Ah]@7 int v15; // [sp+18h] [bp+8h]@4 if ( a2 ) { if ( a3 ) { *(_BYTE *)a3 = 0; v3 = (void *)(*(int (**)(void))(*(_DWORD *)this + 1324))(); v4 = sub_401150(v3); v5 = v4; if ( v4 ) { v6 = *(_WORD *)(*((_DWORD *)v4 + 2) + 12 * *((_WORD *)v4 + 7) + 4); v15 = a2 + 8; while ( v6 < *((_WORD *)v5 + 2) ) { v7 = *((_DWORD *)v5 + 2); v14 = *(_WORD *)(v7 + 12 * v6 + 4); v8 = 12 * v6; if ( *(_BYTE *)(v7 + v8 + 8) ) { v9 = *(_DWORD *)(v7 + v8); if ( v9 ) { if ( *(_BYTE *)a3 >= 0x1Du ) return; *(_DWORD *)(v15 - 8) = sub_428740(v9); if ( v6 < *((_WORD *)v5 + 2) && (v10 = *((_DWORD *)v5 + 2), *(_BYTE *)(v10 + v8 + 8)) ) v11 = *(void **)(v10 + v8); else v11 = 0; *(_DWORD *)(v15 - 4) = sub_4088C0(v11); if ( v6 < *((_WORD *)v5 + 2) && (v12 = *((_DWORD *)v5 + 2), *(_BYTE *)(v12 + v8 + 8)) ) v13 = *(_DWORD *)(v12 + v8); else v13 = 0; *(_DWORD *)v15 = sub_4010E0(v13); ++*(_BYTE *)a3; v15 += 12; } } v6 = v14; } } } } } //----- (00416FF0) -------------------------------------------------------- int __thiscall sub_416FF0(void *this) { *(_DWORD *)this = &off_6A1FD4; return sub_653970(this); } // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00417000) -------------------------------------------------------- void *__thiscall sub_417000(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A1FD4; sub_653970(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00417030) -------------------------------------------------------- void *__thiscall sub_417030(void *this) { void *v1; // esi@1 v1 = this; sub_5940B0(this); *(_DWORD *)v1 = &off_6A1FE0; return v1; } // 6A1FE0: using guessed type int (__thiscall *off_6A1FE0)(void *, char); //----- (00417060) -------------------------------------------------------- int __thiscall sub_417060(void *this) { return *(_DWORD *)this; } //----- (00417070) -------------------------------------------------------- int __thiscall sub_417070(int this, int a2, int a3, int a4) { int v4; // esi@1 int result; // eax@3 v4 = this; if ( *(_DWORD *)(this + 161632) > 0 || *(_BYTE *)(this + 161628) ) { result = sub_57AFB0((void *)this, *(_WORD *)(this + 161632)); *(_BYTE *)(v4 + 161628) = 0; *(_DWORD *)(v4 + 161632) = 0; } return result; } //----- (004170B0) -------------------------------------------------------- void *__thiscall sub_4170B0(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_6A1FD4; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004170D0) -------------------------------------------------------- int __thiscall sub_4170D0(int this, int a2) { int v2; // esi@1 unsigned int v3; // edi@1 int result; // eax@1 int v5; // ebx@2 v2 = *(_DWORD *)this; v3 = 0; result = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( result ) { v5 = 0; do { if ( *(_DWORD *)(v5 + v2) == a2 ) *(_DWORD *)(v5 + v2) = -1; v2 = *(_DWORD *)this; ++v3; result = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; v5 += 20; } while ( v3 < result ); } return result; } //----- (00417130) -------------------------------------------------------- int __thiscall sub_417130(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 __int16 v6; // bx@4 int v7; // edi@4 int v9; // [sp-4h] [bp-28h]@3 int v10; // [sp+14h] [bp-10h]@6 int v11; // [sp+20h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122); v11 = 0; if ( !v5 || *(_BYTE *)(v5 + 496) & 1 ) { v6 = *((_WORD *)sub_418C70(&dword_14D20890) + 32); v7 = sub_418CB0((int)&dword_14D20890, v6); if ( v7 ) { if ( sub_587680(v4, v6, (int)&v10) ) sub_53E400(&unk_13258864, (int)v4, (int)((char *)v4 + 36484), (int **)v7, v10); 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); } v11 = -1; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 18, 58, 1793); v11 = -1; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00417270) -------------------------------------------------------- int __thiscall sub_417270(void *this, void *a2) { void *v2; // esi@1 unsigned int v3; // ecx@3 int v4; // edi@4 int v5; // eax@5 int v7; // [sp-4h] [bp-28h]@2 int v8; // [sp+14h] [bp-10h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_AbstateRecover"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_AbstateRecover"; dword_750AB8[dword_750CB8++] = -1; v8 = sub_401310(&unk_877138, *((_DWORD *)v2 + 1)); if ( v8 && (v3 = *((_DWORD *)v2 + 8), v3 > dword_14D129E8) ) { v4 = 1000 * (v3 - dword_14D129E8) / 0xA; if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD, _DWORD, _DWORD, int, int, _DWORD, _DWORD, unsigned int, signed int, _DWORD))(*(_DWORD *)a2 + 1592))( a2, *((_DWORD *)v2 + 2), *((_DWORD *)v2 + 1), *((_BYTE *)v2 + 24), v8, dword_14D129E8, 0, *((_DWORD *)v2 + 21), 1000 * (v3 - dword_14D129E8) / 0xA, 11, 0) ) { v5 = *(_DWORD *)v8; if ( *(_DWORD *)v8 && (!*(_DWORD *)(v5 + 204) || !*(_DWORD *)(v5 + 208)) ) { sub_401900(a2, *((_DWORD *)v2 + 1)); sub_4055D0(a2, *((_DWORD *)v2 + 1), v4, *((_BYTE *)v2 + 24)); (*(void (__thiscall **)(void *, _DWORD, int, _DWORD))(*(_DWORD *)a2 + 1008))(a2, *((_DWORD *)v2 + 1), v4, 0); } (*(void (__thiscall **)(void *))(*(_DWORD *)a2 + 1320))(a2); } v7 = (int)"ShineObjectClass::ShinePlayer::so_AbstateRecover"; } else { v7 = (int)"ShineObjectClass::ShinePlayer::so_AbstateRecover"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004173D0) -------------------------------------------------------- void *__thiscall sub_4173D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A1FE0; sub_5940C0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A1FE0: using guessed type int (__thiscall *off_6A1FE0)(void *, char); //----- (00417400) -------------------------------------------------------- int __thiscall sub_417400(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ReviveByItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ReviveByItem"; dword_750AB8[dword_750CB8++] = -1; sub_57AFB0(v1, 0x3E8u); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ReviveByItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004174B0) -------------------------------------------------------- void __thiscall sub_4174B0(void *this) { *(_DWORD *)this = &off_6A200C; } // 6A200C: using guessed type int (__stdcall *off_6A200C)(int, int); //----- (004174C0) -------------------------------------------------------- int __thiscall sub_4174C0(void *this, int a2, void *a3) { void *v3; // esi@1 int v4; // eax@1 bool v5; // zf@1 int v6; // eax@2 int v7; // eax@3 signed int v8; // ebx@4 int v9; // edx@4 int v10; // ecx@4 int v11; // eax@4 int v12; // edx@4 __time32_t v13; // ST40_4@4 __time32_t v14; // eax@4 int v16; // [sp-8h] [bp-54h]@9 int v17; // [sp+10h] [bp-3Ch]@2 int Time1; // [sp+14h] [bp-38h]@4 int v19; // [sp+18h] [bp-34h]@4 int v20; // [sp+1Ch] [bp-30h]@4 int v21; // [sp+20h] [bp-2Ch]@4 int v22; // [sp+24h] [bp-28h]@4 int v23; // [sp+28h] [bp-24h]@4 int v24; // [sp+2Ch] [bp-20h]@4 int v25; // [sp+38h] [bp-14h]@4 unsigned int v26; // [sp+3Ch] [bp-10h]@1 int v27; // [sp+48h] [bp-4h]@1 int v28; // [sp+4Ch] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)v3; v5 = *(_DWORD *)(*(_DWORD *)v3 + 36) == 31; v27 = 0; if ( v5 ) { v6 = sub_4012D0((int)&unk_877138, *(_WORD *)(v4 + 40)); v17 = v6; if ( !v6 || (v7 = *(_DWORD *)v6) == 0 ) { v16 = (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete"; goto LABEL_11; } v8 = *(_DWORD *)(v7 + 34); v9 = *((_BYTE *)v3 + 4); v10 = *((_BYTE *)v3 + 6); v23 = *((_BYTE *)v3 + 5) - 1; v11 = *((_BYTE *)v3 + 8); v24 = v9 + 100; v12 = *((_BYTE *)v3 + 7); v22 = v10; v20 = v11; v21 = v12; v19 = 0; v25 = 0; v13 = _LN52(&v19); v14 = _LN52(&unk_AA0BCC); Time1 = (signed int)(_difftime32(v13, v14) * 1000.0); if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, signed int, _DWORD, int, int, _DWORD, _DWORD, int, signed int, _DWORD))(*(_DWORD *)a3 + 1592))( a3, a3, v8, *(_BYTE *)(*(_DWORD *)v3 + 42), v17, dword_14D129E8, 0, 0, Time1, 11, 0) ) { if ( !*(_DWORD *)(*(_DWORD *)v17 + 204) || !*(_DWORD *)(*(_DWORD *)v17 + 208) ) { sub_401900(a3, v8); sub_4055D0(a3, v8, Time1, *(_BYTE *)(*(_DWORD *)v3 + 42)); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)a3 + 1008))(a3, v8, Time1, 1); } (*(void (__thiscall **)(void *))(*(_DWORD *)a3 + 1320))(a3); } } v16 = (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete"; LABEL_11: --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, v16); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (00417680) -------------------------------------------------------- int __thiscall sub_417680(void *this) { void *v1; // esi@1 int (__stdcall **v3)(int, int); // [sp+8h] [bp-18h]@1 void *v4; // [sp+Ch] [bp-14h]@1 int v5; // [sp+10h] [bp-10h]@1 int v6; // [sp+1Ch] [bp-4h]@1 v1 = this; v5 = (int)"ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"; dword_750AB8[dword_750CB8++] = -1; v6 = 0; v3 = &off_6A20B4; v4 = v1; LOBYTE(v6) = 1; sub_43C470((int)((char *)v1 + 159688), (int)&v3); --dword_750CB8; v3 = &off_6A200C; v6 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"); } // 6A200C: using guessed type int (__stdcall *off_6A200C)(int, int); // 6A20B4: using guessed type int (__stdcall *off_6A20B4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417740) -------------------------------------------------------- void __thiscall sub_417740(int this, int a2, char a3) { int v3; // esi@1 int v4; // edi@1 int v5; // ebx@1 int v6; // eax@3 int v7; // eax@3 bool v8; // zf@9 int v9; // [sp+Ch] [bp-Ch]@2 __int16 v10; // [sp+10h] [bp-8h]@6 unsigned int v11; // [sp+14h] [bp-4h]@2 int v12; // [sp+20h] [bp+8h]@12 v3 = a2; v4 = 0; v5 = this; if ( a2 ) { v9 = (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) / 116; v11 = 0; if ( v9 ) { do { v6 = sub_428740(v4 + *(_DWORD *)(v5 + 4)); v7 = sub_401310(&unk_877138, v6); if ( v7 ) { if ( *(_DWORD *)v7 ) { v10 = **(_WORD **)v7; if ( v10 == -1 ) { sub_639100(&unk_86DDD8, (int)"AbstateBuffer::ab_SaveAbstate : Invalid ABState", 0); } else { if ( a3 == 1 ) v8 = *(_BYTE *)(*(_DWORD *)(v7 + 4) + 6) == 0; else v8 = *(_BYTE *)(*(_DWORD *)(v7 + 4) + 4) == 0; if ( !v8 ) { v12 = dword_14D129E8; if ( *((_DWORD *)sub_42A860((void *)(v4 + *(_DWORD *)(v5 + 4))) + 1) >= (unsigned int)dword_14D129E8 ) { *(_WORD *)(v3 + 36 * *(_WORD *)(v3 + 6) + 8) = v10; *(_BYTE *)(v3 + 36 * *(_WORD *)(v3 + 6) + 10) = sub_4010E0(v4 + *(_DWORD *)(v5 + 4)); *(_WORD *)(v3 + 36 * *(_WORD *)(v3 + 6) + 19) = sub_4010F0(v4 + *(_DWORD *)(v5 + 4)); *(_WORD *)(v3 + 36 * *(_WORD *)(v3 + 6) + 21) = 0; *(_DWORD *)(v3 + 36 * *(_WORD *)(v3 + 6) + 11) = 1000 * (v12 - *(_DWORD *)sub_42A860((void *)(v4 + *(_DWORD *)(v5 + 4)))) / 0xAu; *(_DWORD *)(v3 + 36 * *(_WORD *)(v3 + 6) + 15) = sub_4066E0(v4 + *(_DWORD *)(v5 + 4)) ? sub_4088C0((void *)(v4 + *(_DWORD *)(v5 + 4))) : 0; sub_452CA0((void *)(v4 + *(_DWORD *)(v5 + 4)), v3 + 36 * *(_WORD *)(v3 + 6) + 8); *(_BYTE *)(v3 + 36 * *(_WORD *)(v3 + 6) + 23) = sub_401160(v4 + *(_DWORD *)(v5 + 4)); *(_DWORD *)(v3 + 36 * (*(_WORD *)(v3 + 6))++ + 24) = sub_401170(v4 + *(_DWORD *)(v5 + 4)); if ( 36 * (unsigned int)*(_WORD *)(v3 + 6) + 44 > 0x1F40 ) return; } } } } } else { sub_639100(&unk_86DDD8, (int)"AbstateBuffer::ab_SaveAbstate : Null Abstate", 0); } v4 += 116; ++v11; } while ( v11 < v9 ); } } } // 14D129E8: using guessed type int dword_14D129E8; //----- (00417940) -------------------------------------------------------- int __thiscall sub_417940(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned int v4; // ecx@1 int v5; // edx@2 int result; // eax@5 int v7; // esi@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateShelter::as_GetAbstateBuffer"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateShelter::AbstateShelter::as_GetAbstateBuffer"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; v4 = 0; if ( (*((_DWORD *)v2 + 1) - *(_DWORD *)v2) / 20 ) { v5 = *(_DWORD *)v2; while ( *(_DWORD *)v5 != a2 ) { ++v4; v5 += 20; if ( v4 >= (*((_DWORD *)v2 + 1) - *(_DWORD *)v2) / 20 ) goto LABEL_5; } --dword_750CB8; v7 = v3 + 20 * v4; sub_467660((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateShelter::as_GetAbstateBuffer"); result = v7; } else { LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateShelter::as_GetAbstateBuffer"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417A40) -------------------------------------------------------- int __stdcall sub_417A40(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_234F72C || (result = operator new(116 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00417AA0) -------------------------------------------------------- int __thiscall sub_417AA0(void *this, void *a2) { void *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateBuffer::ab_Recover"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateShelter::AbstateBuffer::ab_Recover"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v4 = 0; if ( (*((_DWORD *)v2 + 2) - *((_DWORD *)v2 + 1)) / 116 ) { do { sub_417270((void *)(v3 + *((_DWORD *)v2 + 1)), a2); ++v4; v3 += 116; } while ( v4 < (*((_DWORD *)v2 + 2) - *((_DWORD *)v2 + 1)) / 116 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateBuffer::ab_Recover"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417B80) -------------------------------------------------------- char __thiscall sub_417B80(void *this, void *a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedEffectAfterLoginComplete::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectList::ChargedEffectAfterLoginComplete::lid_Call"; dword_750AB8[dword_750CB8++] = -1; sub_4174C0(a2, a3, *((void **)v3 + 1)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedEffectAfterLoginComplete::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417C30) -------------------------------------------------------- char __thiscall sub_417C30(void *this, int a2) { void *v2; // esi@1 unsigned __int16 v3; // di@1 unsigned __int16 v4; // dx@1 int v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // ST18_2@3 int v8; // eax@4 bool v9; // zf@4 int v10; // ecx@4 int v11; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_WORD *)v2 + 79846); v4 = *(_WORD *)(*((_DWORD *)v2 + 39924) + 12 * *((_WORD *)v2 + 79851) + 4); while ( v4 < v3 ) { v5 = *((_DWORD *)v2 + 39924); v6 = v4; v7 = v4; v4 = *(_WORD *)(v5 + 12 * v4 + 4); if ( v7 >= v3 ) break; v8 = 3 * v6; v9 = *(_BYTE *)(v5 + 4 * v8 + 8) == 0; v10 = v5 + 4 * v8; if ( v9 ) break; v11 = *(_DWORD *)v10; if ( !*(_DWORD *)v10 ) break; if ( *(_DWORD *)v11 && *(_DWORD *)(*(_DWORD *)v11 + 36) == 31 && *(_WORD *)(*(_DWORD *)v11 + 40) == *(_WORD *)(a2 + 40) && *(_BYTE *)(*(_DWORD *)v11 + 42) >= *(_BYTE *)(a2 + 42) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"); return 0; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417D70) -------------------------------------------------------- int __thiscall sub_417D70(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // cx@1 int v4; // edx@3 int v5; // eax@3 bool v6; // zf@3 int v7; // eax@3 int v8; // eax@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 39924) + 12 * *((_WORD *)v2 + 79851) + 4); while ( v3 < *((_WORD *)v2 + 79846) ) { v4 = *((_DWORD *)v2 + 39924); v5 = v3; v3 = *(_WORD *)(v4 + 12 * v3 + 4); v5 *= 3; v6 = *(_BYTE *)(v4 + 4 * v5 + 8) == 0; v7 = v4 + 4 * v5; if ( v6 ) break; v8 = *(_DWORD *)v7; if ( !v8 ) break; if ( *(_DWORD *)v8 && *(_DWORD *)(*(_DWORD *)v8 + 36) == 31 ) { if ( *(_WORD *)(*(_DWORD *)v8 + 40) == a2 ) *(_BYTE *)(v8 + 4) = 1; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417E30) -------------------------------------------------------- int __thiscall sub_417E30(void *this) { void *v1; // esi@1 unsigned __int16 v2; // cx@1 int v3; // edx@3 int v4; // eax@3 bool v5; // zf@3 int v6; // edx@3 int v7; // edx@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 39924) + 12 * *((_WORD *)v1 + 79851) + 4); while ( v2 < *((_WORD *)v1 + 79846) ) { v3 = *((_DWORD *)v1 + 39924); v4 = v2; v2 = *(_WORD *)(v3 + 12 * v2 + 4); v4 *= 3; v5 = *(_BYTE *)(v3 + 4 * v4 + 8) == 0; v6 = v3 + 4 * v4; if ( v5 ) break; v7 = *(_DWORD *)v6; if ( !v7 ) break; if ( *(_DWORD *)v7 ) *(_BYTE *)(v7 + 4) = 1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00417EE0) -------------------------------------------------------- void *__cdecl sub_417EE0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 116 ) { if ( result ) memcpy(result, v3, 0x74u); v3 = (char *)v3 + 116; } return result; } //----- (00417F20) -------------------------------------------------------- int __thiscall sub_417F20(int this) { int v1; // ebx@1 int v2; // esi@1 int i; // edi@2 int result; // eax@5 v1 = this; v2 = *(_DWORD *)this; if ( *(_DWORD *)this ) { for ( i = *(_DWORD *)(this + 4); v2 != i; v2 += 116 ) sub_401A10(v2); operator delete(*(void **)v1); } result = 0; *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (00417F60) -------------------------------------------------------- int __thiscall sub_417F60(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 const void *v5; // ecx@4 const void *v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 116; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_234F72C ) sub_65178B((int)"vector too long"); v4 = sub_417A40(v3); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 116 * v3; v5 = *(const void **)(a2 + 4); v6 = *(const void **)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_417EE0(v6, v5, (void *)v4); } return v2; } //----- (00418024) -------------------------------------------------------- void __usercall sub_418024(int a1) { sub_417F20(*(_DWORD *)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00418080) -------------------------------------------------------- int __cdecl sub_418080(int a1, int a2) { int v2; // esi@1 int result; // eax@1 int i; // edi@2 v2 = *(_DWORD *)(a2 + 4); result = 0; if ( v2 ) { for ( i = *(_DWORD *)(a2 + 8); v2 != i; v2 += 116 ) sub_401A10(v2); operator delete(*(void **)(a2 + 4)); result = 0; } *(_DWORD *)(a2 + 4) = result; *(_DWORD *)(a2 + 8) = result; *(_DWORD *)(a2 + 12) = result; return result; } //----- (004180D0) -------------------------------------------------------- int __cdecl sub_4180D0(int a1, int a2) { int v2; // edi@2 void *v3; // esi@3 void *i; // ebx@4 int result; // eax@7 if ( a1 != a2 ) { v2 = a1 + 4; do { v3 = *(void **)v2; if ( *(_DWORD *)v2 ) { for ( i = *(void **)(v2 + 4); v3 != i; v3 = (char *)v3 + 116 ) sub_401A10((int)v3); operator delete(*(void **)v2); } result = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)(v2 + 8) = 0; v2 += 20; } while ( v2 - 4 != a2 ); } return result; } //----- (00418130) -------------------------------------------------------- int __cdecl sub_418130(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_417F60(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (004181E0) -------------------------------------------------------- int __thiscall sub_4181E0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 int v10; // [sp+0h] [bp-24h]@1 int v11; // [sp+10h] [bp-14h]@4 int *v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [bp-4h]@4 v12 = &v10; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v11 = v4; v13 = 0; sub_418130((int)v6, v5, v4); v7 = *(_DWORD *)v2; v8 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v9 = v8 + ((unsigned int)v8 >> 31); v13 = -1; if ( v7 ) { sub_4180D0(v7, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v11; *(_DWORD *)(v2 + 8) = v11 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v9; *(_DWORD *)v2 = result; } return result; } //----- (004182DA) -------------------------------------------------------- void __usercall sub_4182DA(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004182F0) -------------------------------------------------------- int __thiscall sub_4182F0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_4181E0(this, v5); } return result; } //----- (00418370) -------------------------------------------------------- int __thiscall sub_418370(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4182F0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; v8 = a2 + 4; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4182F0(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; v8 = v6 + 4; LABEL_11: result = sub_417F60(result + 4, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 20; return result; } //----- (00418440) -------------------------------------------------------- int __thiscall sub_418440(void *this, int a2) { int v2; // esi@1 int v3; // ebx@1 unsigned int v4; // edi@1 int v5; // eax@1 int v6; // ecx@2 int v7; // ecx@5 int v8; // edi@6 void *v9; // edi@10 int v10; // ebx@10 int i; // esi@11 int v13; // esi@16 int v14; // esi@16 int v15; // [sp+10h] [bp-24h]@10 void *v16; // [sp+14h] [bp-20h]@10 int v17; // [sp+18h] [bp-1Ch]@10 int v18; // [sp+1Ch] [bp-18h]@10 int v19; // [sp+24h] [bp-10h]@1 int v20; // [sp+30h] [bp-4h]@1 v2 = (int)this; v19 = (int)"AbnormalStateShelter::AbstateShelter::operator []"; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateShelter::operator []"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateShelter::AbstateShelter::operator []"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; v4 = 0; v5 = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20; v20 = 0; if ( v5 ) { v6 = v3; while ( *(_DWORD *)v6 != a2 ) { ++v4; v6 += 20; if ( v4 >= v5 ) goto LABEL_5; } v10 = v3 + 20 * v4; goto LABEL_14; } LABEL_5: v7 = 0; if ( !v5 ) { LABEL_10: v16 = (void *)v7; v17 = v7; v18 = v7; LOBYTE(v20) = 1; v15 = a2; sub_418370(v2, (unsigned int)&v15); v9 = v16; v10 = *(_DWORD *)v2 + 20 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20 - 20; LOBYTE(v20) = 0; if ( v16 ) { for ( i = (int)v16; i != v17; i += 116 ) sub_401A10(i); operator delete(v9); } LABEL_14: --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateShelter::operator []"); return v10; } v8 = v3; while ( *(_DWORD *)v8 != -1 ) { ++v7; v8 += 20; if ( v7 >= (unsigned int)v5 ) { v7 = 0; goto LABEL_10; } } *(_DWORD *)(20 * v7 + v3) = a2; v13 = *(_DWORD *)v2; --dword_750CB8; v14 = 20 * v7 + v13; sub_467660((int)&unk_D020420, (int)"AbnormalStateShelter::AbstateShelter::operator []"); return v14; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004185E0) -------------------------------------------------------- int __thiscall sub_4185E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // eax@3 char v7; // al@3 int v8; // eax@4 int v9; // eax@4 int v10; // eax@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122); if ( (!v5 || *(_BYTE *)(v5 + 496) & 2) && (v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4), sub_4170D0((int)&dword_878768, v6), v7 = *((_BYTE *)v4 + 23825), v7 & 0x40) ) { *((_BYTE *)v4 + 23825) = v7 & 0xBF; sub_57AFB0(v4, 0x3E8u); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v9 = sub_418440(&dword_878758, v8); sub_417AA0((void *)v9, v4); v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); sub_4170D0((int)&dword_878758, v10); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 18, 43, 5382); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00418710) -------------------------------------------------------- int __stdcall sub_418710(void *a1, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // eax@1 int v6; // eax@1 int v7; // eax@1 int v8; // eax@1 void *v10; // [sp+Ch] [bp-Ch]@0 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemJustReviveAtDead::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemJustReviveAtDead::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; v3 = a1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2712))(a1); v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 836))(v3, v3); v5 = sub_418440(&dword_878768, v4); sub_417AA0((void *)v5, v10); v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); v7 = sub_418440(&dword_878758, v6); sub_417AA0((void *)v7, a1); v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); sub_4170D0((int)&dword_878758, v8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemJustReviveAtDead::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00418810) -------------------------------------------------------- int __thiscall sub_418810(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ebx@1 int v6; // ecx@1 signed int v7; // edx@1 int v8; // edi@2 int v9; // eax@3 int v10; // eax@6 int v11; // edx@7 const void *v12; // esi@8 void *v13; // edi@8 int v14; // edi@9 int i; // esi@9 int v16; // eax@13 int v17; // edi@13 signed int v18; // ecx@13 int result; // eax@13 int v20; // esi@14 int v21; // eax@15 int v22; // ebx@18 int v23; // eax@18 int v24; // edx@19 const void *v25; // esi@20 void *v26; // edi@20 int v27; // ebx@22 int j; // esi@22 int v29; // [sp+Ch] [bp-Ch]@6 int v30; // [sp+Ch] [bp-Ch]@13 int v31; // [sp+10h] [bp-8h]@2 int v32; // [sp+10h] [bp-8h]@14 int v33; // [sp+14h] [bp-4h]@1 v4 = this; v33 = this; v5 = sub_418440(&dword_878768, *(_DWORD *)(this + 32661)); v6 = *(_DWORD *)(v5 + 8) - *(_DWORD *)(v5 + 4); v7 = (signed int)(v6 + ((unsigned __int64)(-1925330167i64 * v6) >> 32)) >> 6; if ( v7 + ((unsigned int)v7 >> 31) ) { v8 = *(_DWORD *)(v5 + 4); v31 = v8; while ( v8 != *(_DWORD *)(v5 + 8) ) { v9 = sub_401130(v8); if ( !v9 ) break; if ( *(_DWORD *)(*(_DWORD *)v9 + 34) == 48 ) { v10 = v8 + 116; v29 = *(_DWORD *)(v5 + 8); if ( v8 + 116 != v29 ) { v11 = v8; do { v12 = (const void *)v10; v13 = (void *)v11; v10 += 116; v11 += 116; memcpy(v13, v12, 0x74u); } while ( v10 != v29 ); } v14 = *(_DWORD *)(v5 + 8); for ( i = v14 - 116; i != v14; i += 116 ) sub_401A10(i); *(_DWORD *)(v5 + 8) -= 116; v8 = v31; v4 = v33; } else { v8 += 116; v31 = v8; } } } v16 = sub_418440(&dword_878758, *(_DWORD *)(v4 + 32661)); v17 = v16; v18 = *(_DWORD *)(v16 + 8) - *(_DWORD *)(v16 + 4); result = -1925330167 * v18; v30 = v17; if ( v18 / 116 ) { v20 = *(_DWORD *)(v17 + 4); v32 = v20; while ( v20 != *(_DWORD *)(v17 + 8) ) { v21 = sub_401130(v20); if ( !v21 ) break; if ( *(_DWORD *)(*(_DWORD *)v21 + 34) == 48 ) { v22 = *(_DWORD *)(v17 + 8); v23 = v20 + 116; if ( v20 + 116 != v22 ) { v24 = v20; do { v25 = (const void *)v23; v26 = (void *)v24; v23 += 116; v24 += 116; memcpy(v26, v25, 0x74u); } while ( v23 != v22 ); v17 = v30; } v27 = *(_DWORD *)(v17 + 8); for ( j = v27 - 116; j != v27; j += 116 ) sub_401A10(j); *(_DWORD *)(v17 + 8) -= 116; v20 = v32; } else { v20 += 116; v32 = v20; } } result = v33; *(_BYTE *)(v33 + 161628) = 0; *(_DWORD *)(v33 + 161632) = 0; } else { *(_BYTE *)(v4 + 161628) = 0; *(_DWORD *)(v4 + 161632) = 0; } return result; } //----- (004189B0) -------------------------------------------------------- int __cdecl sub_4189B0(int a1, int a2, unsigned int a3) { int v3; // ecx@1 int v4; // edx@1 unsigned int v5; // esi@1 signed int v6; // eax@5 v3 = a2; v4 = a1; v5 = a3; if ( a3 < 4 ) { LABEL_4: if ( !v5 ) return 0; } else { while ( *(_DWORD *)v4 == *(_DWORD *)v3 ) { v5 -= 4; v3 += 4; v4 += 4; if ( v5 < 4 ) goto LABEL_4; } } v6 = *(_BYTE *)v4 - *(_BYTE *)v3; if ( *(_BYTE *)v4 != *(_BYTE *)v3 ) return (v6 >> 31) | 1; if ( v5 <= 1 ) return 0; v6 = *(_BYTE *)(v4 + 1) - *(_BYTE *)(v3 + 1); if ( *(_BYTE *)(v4 + 1) != *(_BYTE *)(v3 + 1) ) return (v6 >> 31) | 1; if ( v5 <= 2 ) return 0; v6 = *(_BYTE *)(v4 + 2) - *(_BYTE *)(v3 + 2); if ( *(_BYTE *)(v4 + 2) != *(_BYTE *)(v3 + 2) ) return (v6 >> 31) | 1; if ( v5 > 3 ) { v6 = *(_BYTE *)(v4 + 3) - *(_BYTE *)(v3 + 3); return (v6 >> 31) | 1; } return 0; } //----- (00418A30) -------------------------------------------------------- char *__thiscall sub_418A30(char *this, const char *a2) { char *v2; // esi@1 v2 = this; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; strncpy(this, a2, 0xCu); return v2; } //----- (00418A60) -------------------------------------------------------- char *__thiscall sub_418A60(char *this, const char *a2) { *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; return strncpy(this, a2, 0xCu); } //----- (00418A80) -------------------------------------------------------- char *__thiscall sub_418A80(char *this, const char *a2) { char *v2; // esi@1 v2 = this; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; strncpy(this, a2, 0x20u); return v2; } //----- (00418AC0) -------------------------------------------------------- char *__thiscall sub_418AC0(char *this, const char *a2) { char *v2; // esi@1 v2 = this; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; strncpy(this, a2, 0x14u); return v2; } //----- (00418AF0) -------------------------------------------------------- int __thiscall sub_418AF0(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 52); if ( v1 ) result = *(_DWORD *)(v1 + 40); else result = 0; return result; } //----- (00418B00) -------------------------------------------------------- int __thiscall sub_418B00(int this, int a2) { int v2; // edx@1 int result; // eax@1 v2 = (*(_DWORD *)(this + 32768) + 1) & *(_DWORD *)(this + 32772); *(_DWORD *)(this + 32768) = v2; result = this + (v2 << 8); *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_BYTE *)(result + 12) = 0; return result; } //----- (00418B40) -------------------------------------------------------- int __thiscall sub_418B40(int this, int a2) { int v2; // edx@1 int result; // eax@1 v2 = (*(_DWORD *)(this + 32768) + 1) & *(_DWORD *)(this + 32772); *(_DWORD *)(this + 32768) = v2; result = this + (v2 << 8); *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a2 + 16); *(_BYTE *)(result + 20) = 0; return result; } //----- (00418BA0) -------------------------------------------------------- void *__thiscall sub_418BA0(void *this, __int16 a2) { void *v2; // esi@1 size_t v3; // ST08_4@1 void *result; // eax@1 unsigned int v5; // ecx@2 int v6; // edx@3 char v7; // [sp+8h] [bp-Ch]@1 __int16 v8; // [sp+10h] [bp-4h]@1 v2 = this; v3 = *((_DWORD *)this + 3072); v8 = a2; result = bsearch(&v7, this, v3, 0xCu, (int (__cdecl *)(const void *, const void *))sub_4C48B0); if ( !result ) { v5 = *((_DWORD *)v2 + 3072); if ( v5 < 0x400 ) { v6 = (int)((char *)v2 + 12 * v5 + 8); while ( *(_WORD *)v6 != a2 ) { ++v5; v6 += 12; if ( v5 >= 0x400 ) return result; } result = (char *)v2 + 12 * v5; } } return result; } //----- (00418C10) -------------------------------------------------------- int __thiscall sub_418C10(int this, unsigned __int8 *a2) { int v2; // esi@1 int v3; // eax@1 int result; // eax@4 v2 = this; v3 = sub_639620((void *)(this + 3608), a2); if ( v3 == -1 ) LOWORD(v3) = -1; v3 = (unsigned __int16)v3; if ( *(_DWORD *)(v2 + 436) >= (unsigned int)(unsigned __int16)v3 ) { result = *(_DWORD *)(v2 + 428) + 1452 * v3; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v3); result = 0; } return result; } //----- (00418C70) -------------------------------------------------------- char *__thiscall sub_418C70(void *this) { return (char *)this + 2296; } //----- (00418C80) -------------------------------------------------------- signed int __thiscall sub_418C80(int this, unsigned __int8 *a2) { signed int result; // eax@1 result = sub_639620((void *)(this + 8), a2); if ( result == -1 ) result = 65535; else result = (unsigned __int16)result; return result; } //----- (00418CB0) -------------------------------------------------------- int __thiscall sub_418CB0(int this, unsigned __int16 a2) { int v2; // edi@2 int v3; // ecx@4 if ( (unsigned int)a2 >= *(_DWORD *)(this + 4) || (v2 = *(_DWORD *)(this + 2292) + 40 * a2) == 0 || !*(_DWORD *)v2 ) return 0; v3 = **(_WORD **)v2; if ( (_WORD)v3 != a2 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v3 + 10000 * a2); return 0; } return v2; } //----- (00418D10) -------------------------------------------------------- signed int __thiscall sub_418D10(int this, unsigned __int8 *a2) { signed int result; // eax@1 result = sub_639620((void *)(this + 1640), a2); if ( result == -1 ) result = 65535; else result = (unsigned __int16)result; return result; } //----- (00418D40) -------------------------------------------------------- int __thiscall sub_418D40(int this, unsigned __int16 a2) { int result; // eax@2 int v3; // ecx@4 if ( (unsigned int)a2 <= *(_DWORD *)(this + 1636) ) { result = *(_DWORD *)(this + 1628) + 52 * a2; if ( result ) { if ( *(_DWORD *)result ) { v3 = **(_WORD **)result; if ( (_WORD)v3 == a2 ) return result; sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", a2, v3); } } } return 0; } //----- (00418D90) -------------------------------------------------------- __int32 __thiscall sub_418D90(__time32_t this) { __time32_t v1; // edi@1 struct tm *v2; // esi@3 __int32 result; // eax@3 __time32_t Time; // [sp+8h] [bp-4h]@3 v1 = this; if ( byte_7493ED && *(_BYTE *)(this + 644) ) { sub_44FB50(this, (int)&Time); v2 = _localtime32(&Time); sprintf((char *)(v1 + 260), "%04d%02d%02d", v2->tm_year + 1900, v2->tm_mon + 1, v2->tm_mday); sprintf((char *)(v1 + 324), "%02d:%02d:%02d", v2->tm_hour, v2->tm_min, v2->tm_sec); sprintf((char *)(v1 + 388), "%s%s%02d.txt", v1, v1 + 260, v2->tm_hour); result = v1 + 388; } else { result = this + 388; *(_BYTE *)(this + 388) = 0; } return result; } // 7493ED: using guessed type char byte_7493ED; //----- (00418E40) -------------------------------------------------------- int __thiscall sub_418E40(__time32_t this) { __time32_t v1; // esi@1 int result; // eax@1 FILE *v3; // eax@5 v1 = this; result = *(_DWORD *)(this + 256); if ( !result ) { if ( !*(_BYTE *)sub_418D90(this) ) { *(_DWORD *)(v1 + 256) = 0; return 0; } v3 = fopen((const char *)(v1 + 388), "a+"); *(_DWORD *)(v1 + 256) = v3; if ( !v3 ) return 0; fprintf(v3, "%s : ", v1 + 324); result = *(_DWORD *)(v1 + 256); } return result; } //----- (00418EA0) -------------------------------------------------------- __time32_t __thiscall sub_418EA0(__time32_t this, int a2) { __time32_t v2; // esi@1 char v4; // [sp+4h] [bp-104h]@3 unsigned int v5; // [sp+104h] [bp-4h]@1 int v6; // [sp+108h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v2 = this; if ( byte_7493ED ) { if ( *(_BYTE *)(this + 644) ) { sprintf(&v4, "%.255s", a2); sub_418E40(v2); if ( *(_DWORD *)(v2 + 256) ) fputs(&v4, *(FILE **)(v2 + 256)); } } return v2; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; //----- (00418F20) -------------------------------------------------------- void __thiscall sub_418F20(__time32_t this, int a2) { __time32_t v2; // esi@1 int v3; // eax@4 v2 = this; if ( byte_7493ED && *(_BYTE *)(this + 644) ) { if ( *(_DWORD *)(this + 256) ) { v3 = sub_418E40(this); sub_654AB0(10, (FILE *)v3); fflush(*(FILE **)(v2 + 256)); fclose(*(FILE **)(v2 + 256)); *(_DWORD *)(v2 + 256) = 0; } } } // 7493ED: using guessed type char byte_7493ED; //----- (00418F80) -------------------------------------------------------- char *__thiscall sub_418F80(void *this) { return (char *)this + 67672; } //----- (00418F90) -------------------------------------------------------- int __thiscall sub_418F90(int this, int a2, int a3, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD)) { return a4(*(_DWORD *)(this + 20), a2, a3); } //----- (00418FB0) -------------------------------------------------------- signed int __thiscall sub_418FB0(int this, int a2, const void *a3) { return sub_5071A0(*(void **)(this + 68), a2, a3, this); } //----- (00418FD0) -------------------------------------------------------- void __thiscall sub_418FD0(int this, const char *a2) { int v2; // esi@1 v2 = this; sub_507950(*(void **)(this + 68), a2, this); sub_49D420((void *)(*(_DWORD *)(v2 + 20) + 1072), *(_DWORD *)(v2 + 20)); } //----- (00419000) -------------------------------------------------------- int __thiscall sub_419000(int this) { return *(_DWORD *)(this + 60); } //----- (00419010) -------------------------------------------------------- int __thiscall sub_419010(int this, int a2, int a3) { return sub_5070A0(*(void **)(this + 68), a2, a3); } //----- (00419020) -------------------------------------------------------- char *__thiscall sub_419020(void *this) { return (char *)this + 24; } //----- (00419030) -------------------------------------------------------- char *__thiscall sub_419030(void *this) { return (char *)this + 76; } //----- (00419040) -------------------------------------------------------- bool __thiscall sub_419040(void *this, unsigned __int16 a2) { return ((unsigned __int8)(1 << a2 % 8) & *(_BYTE *)(a2 / 8 + *(_DWORD *)this)) != 0; } //----- (00419080) -------------------------------------------------------- int __thiscall sub_419080(int this, unsigned __int16 a2) { int result; // eax@2 if ( a2 < 0xDu ) result = *(_DWORD *)(this + 4 * a2 + 492); else result = *(_DWORD *)(this + 492); return result; } //----- (004190B0) -------------------------------------------------------- int __thiscall sub_4190B0(int this) { return *(_DWORD *)(this + 118); } //----- (004190C0) -------------------------------------------------------- char *__thiscall sub_4190C0(void *this) { return (char *)this + 161784; } //----- (004190D0) -------------------------------------------------------- int __thiscall sub_4190D0(int this, unsigned __int16 a2) { int result; // eax@2 if ( (signed int)a2 < *(_DWORD *)(this + 144) ) result = *(_DWORD *)(*(_DWORD *)(this + 140) + 4 * a2); else result = 0; return result; } //----- (00419100) -------------------------------------------------------- signed int __thiscall sub_419100(int this, unsigned __int8 *a2) { signed int result; // eax@1 result = sub_639620((void *)(this + 148), a2); if ( result != -1 ) result = (unsigned __int16)result; return result; } //----- (00419140) -------------------------------------------------------- int __thiscall sub_419140(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 9) = 0; *(_DWORD *)(this + 5) = 0; *(_DWORD *)(this + 1) = 0; *(_DWORD *)(this + 21) = 0; *(_DWORD *)(this + 17) = 0; *(_DWORD *)(this + 13) = 0; return result; } //----- (00419160) -------------------------------------------------------- int __stdcall sub_419160(int a1, int a2, int a3, int a4) { return sub_55E170(a2); } //----- (00419170) -------------------------------------------------------- int __stdcall sub_419170(int a1, void *a2, int a3, const char *a4) { int v4; // esi@1 v4 = (int)off_849C18; *(_DWORD *)off_849C18 = -45039; if ( a3 == 2 ) *(_WORD *)(v4 + 2) = atoi(a4); return sub_576BC0(a2, v4, 2, 65535); } //----- (004191B0) -------------------------------------------------------- int __stdcall sub_4191B0(int a1, void *a2, int a3, const char *a4) { int v4; // esi@1 v4 = (int)off_849C18; *(_DWORD *)off_849C18 = -42991; if ( a3 == 2 ) *(_WORD *)(v4 + 2) = atoi(a4); return sub_576CC0(a2, v4, 2, 65535); } //----- (004191F0) -------------------------------------------------------- int __userpurge sub_4191F0(int a1, int a2, int a3, int a4, const char *a5) { int v5; // edi@1 int result; // eax@1 int v7; // ecx@2 int v8; // eax@2 _BYTE *v9; // eax@2 int v10; // esi@2 signed int v11; // ebx@4 int v12; // eax@6 void *v13; // ecx@11 int v14; // eax@13 int v15; // [sp-8h] [bp-10h]@4 unsigned __int16 v16; // [sp+4h] [bp-4h]@10 int v17; // [sp+14h] [bp+Ch]@8 v5 = a3; result = *(_DWORD *)(a3 + 122); if ( result ) { v7 = *(_DWORD *)(result + 12); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); v9[12] = 0; v10 = sub_4858E0(&unk_D714FF8, v9); if ( v10 ) { v15 = a1; v11 = 10; if ( a4 == 2 ) v11 = atoi(a5); v12 = (unsigned __int16)(*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 1360))(a3, v15); if ( (unsigned int)v11 <= 1 ) v11 = 1; v17 = v12; if ( sub_49E990((void *)v10, v11, v12) ) { if ( sub_49E860((void *)v10, (int)&v16, v17) ) { v13 = off_849C18; *(_WORD *)off_849C18 = 2064; *((_BYTE *)v13 + 2) = 1; *(_WORD *)((char *)v13 + 3) = v16 / 10; if ( sub_4C81E0(&off_849C18, 5) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_IDTimeChange : Packet Too Long", 5); } } result = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1924))(v5); } else { result = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1924))(v5); } } else { result = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)a3 + 1924))(a3, "NotFind InstanceDungeon System"); } } return result; } // 4191F0: could not find valid save-restore pair for ebx // 4191F0: could not find valid save-restore pair for esi // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00419360) -------------------------------------------------------- int __stdcall sub_419360(int a1, int a2, int a3, int a4) { int result; // eax@1 result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1884))(a2); if ( !result ) result = a2; if ( *(_DWORD *)(a2 + 122) ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)result + 1788))(result, a2); return result; } //----- (004193A0) -------------------------------------------------------- void __stdcall sub_4193A0(int a1, int a2, int a3, int a4) { if ( *(_BYTE *)a4 ) sub_5D34C0((int)&unk_87B218, a2); else sub_5D34C0((int)&unk_87B218, 0); } //----- (004193D0) -------------------------------------------------------- int __stdcall sub_4193D0(int a1, int a2, int a3, int a4) { int result; // eax@1 result = (*(int (**)(void))(*(_DWORD *)a2 + 1884))(); if ( result ) result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)result + 2924))(result, a4, a4 + 33); return result; } //----- (00419400) -------------------------------------------------------- int __stdcall sub_419400(int a1, int a2, int a3, int a4) { signed int v4; // esi@1 char v5; // bl@2 int result; // eax@2 v4 = 0; while ( 1 ) { v5 = *(_BYTE *)(v4 + a4); result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2904))(a2); *(_BYTE *)(result + v4) = v5; if ( !v5 ) break; ++v4; if ( v4 >= 9 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2904))(a2); *(_BYTE *)(result + 9) = 0; return result; } } return result; } //----- (00419460) -------------------------------------------------------- int __stdcall sub_419460(int a1, int a2, int a3, int a4) { int result; // eax@2 if ( a2 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 3352))(a2, 1); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 3356))(a2); } return result; } //----- (00419490) -------------------------------------------------------- int __stdcall sub_419490(int a1, int a2, int a3, const char *a4) { int result; // eax@1 int v5; // edi@1 char v6[4]; // [sp+8h] [bp-10h]@1 int v7; // [sp+Ch] [bp-Ch]@1 int v8; // [sp+10h] [bp-8h]@1 unsigned int v9; // [sp+14h] [bp-4h]@1 int v10; // [sp+18h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, a4, 0xCu); result = sub_483840((int)&unk_CFCF380, (int)v6, 1); v5 = result; if ( result ) { sub_486220(&unk_D714FF8, a4); result = sub_5064A0(&unk_13230E20, v5 + 35); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00419510) -------------------------------------------------------- int __stdcall sub_419510(int a1, int a2, int a3, unsigned __int8 *a4) { signed int v4; // eax@1 int result; // eax@2 v4 = sub_639620(&unk_14D20898, a4); if ( v4 == -1 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 3428))(65535); else result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 3428))((unsigned __int16)v4); return result; } //----- (00419560) -------------------------------------------------------- int __stdcall sub_419560(int a1, int a2, int a3, const char *a4) { int v4; // edi@1 int v5; // eax@1 v4 = *(_DWORD *)a2; v5 = atoi(a4); return (*(int (__thiscall **)(int, int))(v4 + 3432))(a2, v5); } //----- (00419590) -------------------------------------------------------- int __stdcall sub_419590(int a1, int a2, int a3, int a4) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 3436))(1); } //----- (004195B0) -------------------------------------------------------- int __stdcall sub_4195B0(int a1, int a2, int a3, char *a4) { int v4; // esi@1 int result; // eax@1 v4 = atoi(a4); result = atoi(a4 + 33); if ( v4 < 2 ) { if ( result < 2 ) result = (*(int (__stdcall **)(int, int))(*(_DWORD *)a2 + 3508))(v4, result); } return result; } //----- (004195F0) -------------------------------------------------------- int __stdcall sub_4195F0(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 int result; // eax@1 __int64 v6; // qax@2 v4 = atoi(a4); result = sub_54E4D0(&unk_13253630, v4); if ( result ) { v6 = sub_548D10(result); result = (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 3512))(v6, HIDWORD(v6)); } return result; } //----- (00419630) -------------------------------------------------------- int __thiscall sub_419630(int this) { int result; // eax@1 result = this; if ( *(_DWORD *)(this + 20) >= 0x10u ) result = *(_DWORD *)this; return result; } //----- (00419640) -------------------------------------------------------- int __cdecl sub_419640(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 21); i = *(_DWORD *)i ) result = i; return result; } //----- (00419660) -------------------------------------------------------- int __thiscall sub_419660(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 21) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (004196E0) -------------------------------------------------------- void *__thiscall sub_4196E0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6A2518; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A2518: using guessed type int (__thiscall *off_6A2518)(void *, char); //----- (00419730) -------------------------------------------------------- int __thiscall sub_419730(int this) { int v1; // esi@1 int result; // eax@2 v1 = this; if ( *(_DWORD *)(this + 9668) && !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 9668) + 768))() && (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 9668) + 1156))() && (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 9668) + 1156))() != 7 ) result = *(_DWORD *)(*(_DWORD *)(v1 + 9668) + 122) == *(_DWORD *)(v1 + 122) ? *(_DWORD *)(v1 + 9668) : 0; else result = 0; return result; } //----- (004197A0) -------------------------------------------------------- int __thiscall sub_4197A0(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6A2588; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"; dword_750AB8[dword_750CB8] = -1; result = sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"); *(_DWORD *)v1 = &off_6A253C; return result; } // 6A253C: using guessed type int (__stdcall *off_6A253C)(int, int); // 6A2588: using guessed type int (__stdcall *off_6A2588)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00419830) -------------------------------------------------------- char __thiscall sub_419830(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdArgument::lid_Call"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)a2 != *((_DWORD *)v3 + 1) || *(_DWORD *)(a2 + 4) != *((_DWORD *)v3 + 2) || *(_DWORD *)(a2 + 8) != *((_DWORD *)v3 + 3) || *(_DWORD *)(a2 + 12) != *((_DWORD *)v3 + 4) || *(_DWORD *)(a2 + 16) != *((_DWORD *)v3 + 5) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::lid_Call"); result = 1; } else { if ( (signed int)(unsigned __int8)(*(int (**)(void))(**((_DWORD **)v3 + 107) + 1236))() >= *(_DWORD *)(a2 + 20) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(a2 + 24))( (char *)&dword_878A00 + *(_DWORD *)(a2 + 28), *((_WORD *)v3 + 212), *((_DWORD *)v3 + 107), *((_DWORD *)v3 + 105), (char *)v3 + 24); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::lid_Call"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 878A00: using guessed type int dword_878A00; //----- (00419980) -------------------------------------------------------- int __thiscall sub_419980(int this, const char *a2, int a3) { int v3; // edi@1 int v4; // esi@1 char v6; // [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 int v10; // [sp+38h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v3 = this; *(_DWORD *)this = &off_6A25E0; v4 = this + 4; v9 = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::ListIter_AmpCmdLevel"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdLevel::ListIter_AmpCmdLevel"; dword_750AB8[dword_750CB8++] = -1; v6 = 38; strncpy(&v7, a2, 0x13u); *(_DWORD *)(v4 + 16) = 0; *(_DWORD *)(v4 + 12) = 0; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 4) = 0; *(_DWORD *)v4 = 0; strncpy((char *)v4, &v6, 0x14u); *(_DWORD *)(v3 + 24) = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::ListIter_AmpCmdLevel"); return v3; } // 6A25E0: using guessed type int (__stdcall *off_6A25E0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00419A80) -------------------------------------------------------- int __thiscall sub_419A80(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6A25E0; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"; dword_750AB8[dword_750CB8] = -1; result = sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"); *(_DWORD *)v1 = &off_6A253C; return result; } // 6A253C: using guessed type int (__stdcall *off_6A253C)(int, int); // 6A25E0: using guessed type int (__stdcall *off_6A25E0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00419B10) -------------------------------------------------------- char __thiscall sub_419B10(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdLevel::lid_Call"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)a2 != *((_DWORD *)v3 + 1) || *(_DWORD *)(a2 + 4) != *((_DWORD *)v3 + 2) || *(_DWORD *)(a2 + 8) != *((_DWORD *)v3 + 3) || *(_DWORD *)(a2 + 12) != *((_DWORD *)v3 + 4) || *(_DWORD *)(a2 + 16) != *((_DWORD *)v3 + 5) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::lid_Call"); result = 1; } else { *(_DWORD *)(a2 + 20) = *((_DWORD *)v3 + 6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::lid_Call"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00419C00) -------------------------------------------------------- int __cdecl sub_419C00() { unsigned int i; // ebx@1 int result; // eax@2 int v2; // esi@4 unsigned __int8 v3; // al@6 int (__stdcall **v4)(int, int); // [sp+Ch] [bp-2Ch]@8 unsigned int v5; // [sp+28h] [bp-10h]@1 int v6; // [sp+34h] [bp-4h]@8 int v7; // [sp+38h] [bp+0h]@1 v5 = (unsigned int)&v7 ^ __security_cookie; for ( i = 0; ; ++i ) { result = dword_13359344; if ( !dword_13359344 ) break; if ( i >= *(_DWORD *)(dword_13359344 + 40) ) break; v2 = sub_626BC0((int)&unk_13359310, i); if ( !v2 ) loc_6391B0("ZoneServer::zs_start_old"); v3 = *(_BYTE *)(v2 + 19); if ( v3 ) { if ( v3 <= 0x64u ) { sub_419980((int)&v4, (const char *)v2, v3); v6 = 0; sub_43C470((int)&dword_878A00, (int)&v4); v4 = &off_6A25E0; v6 = 1; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"); v6 = -1; v4 = &off_6A253C; } } } return result; } // 6A253C: using guessed type int (__stdcall *off_6A253C)(int, int); // 6A25E0: using guessed type int (__stdcall *off_6A25E0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 878A00: using guessed type int dword_878A00; // 13359344: using guessed type int dword_13359344; //----- (00419D10) -------------------------------------------------------- char __thiscall sub_419D10(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AmpersandCommand"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_AmpersandCommand"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a3 + 1) == 38 ) { if ( *(_BYTE *)a3 > 0x64u ) { *(_BYTE *)a3 = 100; *(_BYTE *)(a3 + 101) = 0; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2404))(v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AmpersandCommand"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AmpersandCommand"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00419E00) -------------------------------------------------------- int __stdcall sub_419E00(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_wall"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1924))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00419EB0) -------------------------------------------------------- int __stdcall sub_419EB0(int a1) { sub_419E00( a1, (int)"usage : &templink [ []]"); sub_419E00( a1, (int)"ex : &mobbreed 10 Rou Rou 7828 4325 1 150 0"); sub_419E00(a1, (int)"note : Permanantly change if linknumber is large then 10000"); return sub_419E00(a1, (int)" : Gate Close if linknumber is -1"); } //----- (00419F00) -------------------------------------------------------- int __stdcall sub_419F00(int a1) { sub_419E00( a1, (int)"usage : &mobbreed "); return sub_419E00( a1, (int)"ex : &mobbreed Slime 3 0 n 1 - - 2"); } //----- (00419F30) -------------------------------------------------------- int __stdcall sub_419F30(const char *a1) { int v1; // esi@1 int v3; // [sp+4h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Scanf"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Scanf"; dword_750AB8[dword_750CB8++] = -1; sscanf(a1, "%d", &v3); v1 = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Scanf"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00419FB0) -------------------------------------------------------- int __thiscall sub_419FB0(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7) { int v7; // esi@2 int result; // eax@6 if ( *((_WORD *)this + 6) == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6)); if ( v7 == 0 ) { sub_639100(&unk_86DDD8, (int)"Too many AmpersandCommand", 0); loc_6391B0("AmpersandCommand::ac_Store"); } *(_DWORD *)(v7 + 16) = 0; *(_DWORD *)(v7 + 12) = 0; *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)v7 = 0; strncpy((char *)v7, a2, 0x14u); *(_DWORD *)(v7 + 20) = a3; *(_DWORD *)(v7 + 24) = a4; *(_DWORD *)(v7 + 28) = a5; *(_DWORD *)(v7 + 32) = a6; result = a7; *(_DWORD *)(v7 + 36) = a7; return result; } //----- (0041A040) -------------------------------------------------------- int __stdcall sub_41A040(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Hide"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Hide"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 304))(a2) ) { sub_419E00(a2, (int)"fail to 'hide' : not allowed to do 'hide' in the MH"); } else { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) == 6 && sub_45CDE0(a2) == 2 ) sub_45D1C0(a2, a2, 0); sub_549900((void *)a2); *(_BYTE *)(*(_DWORD *)(a2 + 118) + 4) = 3; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1592))( a2, a2, 288, 1, dword_877770, dword_14D129E8, 0, -1, 0, 3, 0) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1008))(a2, 288, -94967296, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Hide"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 877770: using guessed type int dword_877770; // 14D129E8: using guessed type int dword_14D129E8; //----- (0041A170) -------------------------------------------------------- int __stdcall sub_41A170(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Show"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Show"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 304))(a2) ) { sub_419E00(a2, (int)"fail to 'show' : not allowed to do 'show' in the MH"); } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1616))(a2, 288); *(_BYTE *)(*(_DWORD *)(a2 + 118) + 4) = 0; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Show"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041A240) -------------------------------------------------------- int __stdcall sub_41A240(int a1, int a2, int a3, const char *a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Dimension"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Dimension"; dword_750AB8[dword_750CB8++] = -1; sub_549900((void *)a2); **(_DWORD **)(a2 + 118) = sub_419F30(a4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Dimension"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041A2F0) -------------------------------------------------------- int __stdcall sub_41A2F0(int a1, int a2, int a3, int a4) { int (__thiscall *v4)(_DWORD); // eax@1 unsigned __int8 v5; // al@1 char v7; // [sp+Ch] [bp-50h]@1 unsigned int v8; // [sp+4Ch] [bp-10h]@1 int v9; // [sp+58h] [bp-4h]@1 int v10; // [sp+5Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_AdminLevel"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_AdminLevel"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1236); v9 = 0; v5 = v4(a2); sprintf(&v7, "Admin level is %d", v5); sub_419E00(a2, (int)&v7); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_AdminLevel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041A3D0) -------------------------------------------------------- int __stdcall sub_41A3D0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_SrverIndex"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_SrverIndex"; dword_750AB8[dword_750CB8++] = -1; sub_419E00(a2, (int)"20120409-Hero[Release]-1"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_SrverIndex"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041A480) -------------------------------------------------------- int __thiscall sub_41A480(void *this, int a2, int a3, signed int a4, char *a5) { unsigned int v5; // ST14_4@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // eax@4 int v8; // eax@5 bool v9; // zf@6 int v10; // ebx@8 int v11; // eax@10 _BYTE *v12; // eax@10 signed int v13; // eax@10 int v14; // eax@14 int v15; // eax@15 void (__thiscall *v16)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@17 int v18; // [sp+10h] [bp-84h]@5 int v19; // [sp+14h] [bp-80h]@5 int v20; // [sp+18h] [bp-7Ch]@13 void *v21; // [sp+1Ch] [bp-78h]@1 char v22; // [sp+20h] [bp-74h]@17 char v23; // [sp+34h] [bp-60h]@6 char v24; // [sp+40h] [bp-54h]@6 char v25; // [sp+55h] [bp-3Fh]@14 int v26; // [sp+76h] [bp-1Eh]@15 int v27; // [sp+7Ah] [bp-1Ah]@17 unsigned int v28; // [sp+84h] [bp-10h]@1 int v29; // [sp+90h] [bp-4h]@1 int v30; // [sp+94h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v5 = (unsigned int)&v30 ^ __security_cookie; v21 = this; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_LinkTo"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_LinkTo"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 304); v29 = 0; if ( (unsigned __int8)v6(a3, v5) ) { sub_419E00(a3, (int)"fail to 'linkto' : not allowed to do 'linkto' in the MH"); LABEL_18: --dword_750CB8; goto LABEL_19; } if ( a4 == 1 ) { v7 = *(_DWORD *)(a3 + 122); if ( v7 ) { v8 = sub_418B00((int)byte_85A2C0, v7); strncpy(a5, (const char *)v8, 0x20u); sub_438450(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 122) + 20) + 1068), (int)&v18); sprintf(a5 + 33, "%d", v18); sprintf(a5 + 66, "%d", v19); a4 = 4; } } strncpy(&v23, a5, 0xCu); v9 = *a5 == 45; v24 = 0; if ( !v9 ) { v10 = sub_63AB60(&unk_CFCF398, a5); if ( !v10 ) goto LABEL_22; v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); v12[12] = 0; v13 = sub_639620(&unk_14D20404, v12); if ( v13 == -1 ) LOWORD(v13) = -1; v13 = (unsigned __int16)v13; if ( (unsigned __int16)v13 < dword_14D20400 && (v20 = *(_DWORD *)(dword_14D203FC + 4 * v13)) != 0 ) { v14 = sub_418B00((int)byte_85A2C0, v10); strncpy(&v25, (const char *)v14, 0x20u); if ( a4 == 4 ) { v26 = sub_419F30(a5 + 33); v15 = sub_419F30(a5 + 66); } else { v26 = *(_DWORD *)(v20 + 50); v15 = *(_DWORD *)(v20 + 54); } v16 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1536); v27 = v15; v16(a3, &v22, 6, 9, 10); } else { LABEL_22: sub_419E00(a3, (int)"Invalid map name"); } goto LABEL_18; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a3 + 2596))(a3, 0); --dword_750CB8; LABEL_19: v29 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_LinkTo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (0041A6F0) -------------------------------------------------------- int __stdcall sub_41A6F0(int a1, int a2, int a3, unsigned __int8 *a4) { unsigned __int8 *v4; // edi@1 signed int v5; // eax@1 int v6; // ebx@6 __int64 v7; // qax@6 __int64 v8; // ST1C_8@6 int v9; // ST38_4@6 int v10; // ST18_4@6 int v11; // ST10_4@6 int v12; // ST0C_4@6 int v13; // ST08_4@6 int v14; // eax@6 signed int v16; // [sp+18h] [bp-14h]@1 int v17; // [sp+1Ch] [bp-10h]@4 int v18; // [sp+28h] [bp-4h]@1 int v19; // [sp+38h] [bp+Ch]@6 int v20; // [sp+40h] [bp+14h]@4 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_DoorBuild"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_DoorBuild"; dword_750AB8[dword_750CB8++] = -1; v4 = a4; v18 = 0; v5 = sub_639620(&unk_14D16018, a4); v16 = v5; if ( v5 != -1 && (_WORD)v5 != -1 ) { v20 = sub_54DF90(&unk_13253630, (int)&v17, 7); if ( v20 ) { v6 = a2; v7 = sub_548D10(a2); v19 = *(_DWORD *)(a2 + 122); v8 = v7; v9 = *(_DWORD *)v20; v10 = sub_419F30((const char *)v4 + 132); v11 = v17; v12 = sub_419F30((const char *)v4 + 99); v13 = sub_419F30((const char *)v4 + 66); v14 = sub_419F30((const char *)v4 + 33); if ( (*(int (__thiscall **)(int, int, int, int, int, int, signed int, int, _DWORD, _DWORD))(v9 + 1756))( v20, v19, v14, v13, v12, v11, v16, v10, v8, HIDWORD(v8)) ) { sub_419E00(v6, (int)"Make fail"); sub_555DF0(&unk_13253630, v17, 0, 39); } v18 = -1; } else { sub_419E00(a2, (int)"Too many doors"); v18 = -1; } } else { sub_419E00(a2, (int)"Invalid mob index"); v18 = -1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_DoorBuild"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041A880) -------------------------------------------------------- int __stdcall sub_41A880(int a1, int a2, int a3, const char *a4) { int v4; // ebx@5 char v6; // [sp+10h] [bp-214h]@5 __int16 v7; // [sp+110h] [bp-114h]@5 char v8; // [sp+114h] [bp-110h]@5 unsigned int v9; // [sp+214h] [bp-10h]@1 int v10; // [sp+220h] [bp-4h]@1 int v11; // [sp+224h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ScriptInterrupt"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ScriptInterrupt"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; if ( a3 == 2 ) { if ( *(_DWORD *)(a2 + 122) ) { sub_4D57B0(&v8, a4); memcpy(&v6, &v8, 0x100u); nullsub_2(&v8); v4 = *(_DWORD *)(a2 + 122); v7 = *(_WORD *)(a2 + 4); sub_5070A0(*(void **)(v4 + 68), (int)sub_50ACF0, (int)&v6); } else { sub_419E00(a2, (int)"Null map"); } } else { sub_419E00(a2, (int)"Called block needed"); } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ScriptInterrupt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041A9B0) -------------------------------------------------------- int __stdcall sub_41A9B0(int a1, int a2, int a3, const char *a4) { __int16 v4; // cx@1 void *v5; // eax@3 char v7; // [sp+Ch] [bp-1Ch]@3 int v8; // [sp+18h] [bp-10h]@1 int v9; // [sp+24h] [bp-4h]@1 v8 = (int)"AmpersandCommand::ac_Timer"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Timer"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Timer"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v4 = sub_419F30(a4); if ( v4 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 2064; *(_WORD *)((char *)v5 + 3) = v4; *((_BYTE *)v5 + 2) = 1; sub_4287B0(&v7, &off_849C18, 5); LOBYTE(v9) = 1; sub_549B60((void *)a2, (int)&v7, 1); LOBYTE(v9) = 0; sub_428A70(&v7); } else { sub_419E00(a2, (int)"sec needed"); } --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Timer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041AAB0) -------------------------------------------------------- int __stdcall sub_41AAB0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildCollectClear"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GuildCollectClear"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildCollectClear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041AB00) -------------------------------------------------------- int __stdcall sub_41AB00(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildCollectSet"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GuildCollectSet"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildCollectSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041AB50) -------------------------------------------------------- int __stdcall sub_41AB50(int a1, void *a2, int a3, const char *a4) { int v4; // ebx@1 char *v5; // edi@4 char v6; // al@5 char *v7; // eax@7 char v8; // cl@8 unsigned int v9; // eax@10 const void *v10; // esi@10 void *v11; // edi@10 char v12; // cl@11 char v14; // [sp+10h] [bp-120h]@13 void *v15; // [sp+18h] [bp-118h]@1 const char *v16; // [sp+1Ch] [bp-114h]@2 char v17; // [sp+20h] [bp-110h]@1 _BYTE v18[3]; // [sp+21h] [bp-10Fh]@9 unsigned int v19; // [sp+120h] [bp-10h]@1 int v20; // [sp+12Ch] [bp-4h]@1 int v21; // [sp+130h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v15 = a2; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_NoticeZone"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_NoticeZone"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; v20 = 0; v17 = 0; if ( a3 > 0 ) { v16 = a4; do { if ( v4 ) { v5 = (char *)&v16 + 3; do v6 = (v5++)[1]; while ( v6 ); *(_WORD *)v5 = *(_WORD *)word_6A2BF8; } v7 = &v17; do v8 = *v7++; while ( v8 ); if ( v7 - v18 + 33 >= 0x100 ) break; v10 = v16; v9 = strlen(v16) + 1; v11 = (char *)&v16 + 3; do { v12 = *((_BYTE *)v11 + 1); v11 = (char *)v11 + 1; } while ( v12 ); v16 += 33; memcpy(v11, v10, 4 * (v9 >> 2)); ++v4; memcpy((char *)v11 + 4 * (v9 >> 2), (char *)v10 + 4 * (v9 >> 2), v9 & 3); } while ( v4 < a3 ); } sub_427E90((int)&v14, (int)&v17); LOBYTE(v20) = 1; sub_549B60(v15, (int)&v14, 1); LOBYTE(v20) = 0; sub_427EB0(&v14); --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_NoticeZone"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041ACD0) -------------------------------------------------------- int __stdcall sub_41ACD0(int a1, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GMChat"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GMChat"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)(a2 + 32784) = 1; v4 = off_849C18; *(_WORD *)off_849C18 = 2109; *(_DWORD *)((char *)v4 + 2) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); if ( sub_4C81E0(&off_849C18, 6) ) { v5 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_GMChat : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GMChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (0041ADD0) -------------------------------------------------------- bool __thiscall sub_41ADD0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // bl@1 int v7; // [sp+0h] [bp-1Ch]@0 int v8; // [sp+4h] [bp-18h]@0 int v9; // [sp+8h] [bp-14h]@0 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListDoorAction::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListDoorAction::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__stdcall **)(_DWORD, _DWORD, int, int, int, _DWORD))(*(_DWORD *)a3 + 792))( *((_DWORD *)v4 + 1), *((_DWORD *)v4 + 2), v7, v8, v9, "AxialListDoorAction::ali_Work") == 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListDoorAction::ali_Work"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041AE90) -------------------------------------------------------- int __stdcall sub_41AE90(int a1, int a2, int a3, int a4) { char v4; // al@1 signed int v5; // esi@2 int (__stdcall **v7)(int, int, int); // [sp+8h] [bp-1Ch]@5 int v8; // [sp+Ch] [bp-18h]@5 int v9; // [sp+10h] [bp-14h]@5 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v10 = (int)"AmpersandCommand::ac_OXBlock"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_OXBlock"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_OXBlock"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_BYTE *)a4; v11 = 0; if ( v4 == 79 ) { v5 = 1; } else { if ( v4 != 67 ) { sub_419E00(a2, (int)"&oxblock Open or &oxblock Close"); goto LABEL_7; } v5 = 0; } sub_427BE0(&v7); v7 = &off_6A2454; v8 = (int)"OXBlock"; v9 = v5; LOBYTE(v11) = 1; sub_549B60((void *)a2, (int)&v7, 0); LOBYTE(v11) = 0; v7 = &off_6A2454; sub_427EB0(&v7); LABEL_7: --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_OXBlock"); } // 6A2454: using guessed type int (__stdcall *off_6A2454)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041AFC0) -------------------------------------------------------- int __stdcall sub_41AFC0(int a1, int a2, signed int a3, char *a4) { unsigned int v4; // ST14_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 int v6; // eax@11 void *v7; // eax@11 int v9; // [sp-4h] [bp-94h]@2 int v10; // [sp+10h] [bp-80h]@5 int v11; // [sp+14h] [bp-7Ch]@5 signed int v12; // [sp+18h] [bp-78h]@5 char v13; // [sp+1Ch] [bp-74h]@13 char v14; // [sp+30h] [bp-60h]@5 char v15; // [sp+51h] [bp-3Fh]@5 int v16; // [sp+72h] [bp-1Eh]@5 int v17; // [sp+76h] [bp-1Ah]@5 __int16 v18; // [sp+7Ah] [bp-16h]@5 char v19; // [sp+7Ch] [bp-14h]@9 unsigned int v20; // [sp+80h] [bp-10h]@1 int v21; // [sp+8Ch] [bp-4h]@1 int v22; // [sp+90h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v4 = (unsigned int)&v22 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_TempLink"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_TempLink"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1884); v21 = 0; if ( !v5(a2, v4) ) { v9 = (int)"Target needed"; LABEL_15: sub_419E00(a2, v9); goto LABEL_16; } if ( a3 < 6 ) { sub_419E00( a2, (int)"usage : &templink [ []]"); sub_419E00( a2, (int)"ex : &mobbreed 10 Rou Rou 7828 4325 1 150 0"); sub_419E00(a2, (int)"note : Permanantly change if linknumber is large then 10000"); v9 = (int)" : Gate Close if linknumber is -1"; goto LABEL_15; } v10 = sub_419F30(a4); strncpy(&v14, a4 + 33, 0x21u); strncpy(&v15, a4 + 66, 0x21u); v16 = sub_419F30(a4 + 99); v17 = sub_419F30(a4 + 132); v18 = 0; v12 = 1; v11 = (unsigned __int8)byte_DA2294C; if ( a3 > 7 ) { v12 = (unsigned __int16)sub_419F30(a4 + 165); v11 = (unsigned __int16)sub_419F30(a4 + 198); } if ( (unsigned __int16)v12 <= (unsigned __int16)v11 ) { v19 = 0; if ( a3 > 8 ) v19 = sub_419F30(a4 + 231); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1884))(a2); v7 = sub_418BA0(dword_D9FBF28, *(_WORD *)(v6 + 4)); if ( !v7 || !*((_DWORD *)v7 + 1) ) { v9 = (int)"Target is not NPC"; goto LABEL_15; } (*(void (__stdcall **)(int, int, char *, signed int, int))(**((_DWORD **)v7 + 1) + 48))(a2, v10, &v13, v12, v11); } else { sub_419EB0(a2); } LABEL_16: --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_TempLink"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // DA2294C: using guessed type char byte_DA2294C; //----- (0041B1E0) -------------------------------------------------------- int __stdcall sub_41B1E0(int a1, int a2, signed int a3, int a4) { signed int v4; // eax@2 char v5; // al@6 unsigned __int16 v6; // ax@15 int v7; // ebx@15 int v8; // eax@20 __int64 v9; // qax@20 int v11; // [sp-8h] [bp-A4h]@4 int v12; // [sp-8h] [bp-A4h]@20 int v13; // [sp+10h] [bp-8Ch]@20 int v14; // [sp+14h] [bp-88h]@20 int v15; // [sp+18h] [bp-84h]@1 int v16; // [sp+1Ch] [bp-80h]@5 int v17; // [sp+20h] [bp-7Ch]@2 int v18; // [sp+24h] [bp-78h]@6 int v19; // [sp+28h] [bp-74h]@11 void *v20; // [sp+2Ch] [bp-70h]@7 int v21; // [sp+30h] [bp-6Ch]@18 int v22; // [sp+34h] [bp-68h]@9 char v23; // [sp+38h] [bp-64h]@20 char v24; // [sp+4Ch] [bp-50h]@20 unsigned int v25; // [sp+8Ch] [bp-10h]@1 int v26; // [sp+98h] [bp-4h]@1 int v27; // [sp+9Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v15 = a4; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_MobBreed"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_MobBreed"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; if ( a3 < 6 ) goto LABEL_23; v4 = sub_639620(&unk_14D16018, (unsigned __int8 *)a4); v17 = v4; if ( v4 == -1 || (_WORD)v4 == -1 ) { v11 = (int)"Invalid mob index"; LABEL_22: sub_419E00(a2, v11); LABEL_23: sub_419E00( a2, (int)"usage : &mobbreed "); v12 = (int)"ex : &mobbreed Slime 3 0 n 1 - - 2"; LABEL_24: sub_419E00(a2, v12); goto LABEL_25; } v16 = sub_419F30((const char *)(a4 + 33)); if ( (unsigned int)(v16 - 1) > 0x3F ) { v11 = (int)"MobNumber wrong"; goto LABEL_22; } v18 = sub_419F30((const char *)(a4 + 66)); v5 = *(_BYTE *)(a4 + 99); if ( v5 == 89 || (LOBYTE(v20) = 0, v5 == 121) ) LOBYTE(v20) = 1; v22 = sub_419F30((const char *)(a4 + 132)); if ( v22 > 250 ) v22 = 250; v19 = (int)"-"; if ( a3 > 6 ) v19 = a4 + 165; if ( a3 <= 7 || *(_BYTE *)(a4 + 198) == 45 ) { v7 = 65535; goto LABEL_18; } v6 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)(a4 + 198)); v7 = v6; if ( v6 != -1 ) { LABEL_18: v21 = -1; if ( a3 > 8 ) v21 = sub_419F30((const char *)(v15 + 231)); sub_418AC0(&v23, "Def"); v8 = *(_DWORD *)(a2 + 102); v13 = *(_DWORD *)v8; v14 = *(_DWORD *)(v8 + 4); v9 = sub_548D10(a2); sub_4B5FD0( (void *)dword_D9FAF98, *(_DWORD *)(a2 + 122), (int)&v13, 0, v17, 0, v16, v18, v20, v22, (int)&v23, 0, v19, v7, v21, v9, SHIDWORD(v9)); sprintf(&v24, "Mob : %d", *(_WORD *)(dword_13253830 + 20)); v12 = (int)&v24; goto LABEL_24; } sub_419E00(a2, (int)"DropMobIndex wrong"); sub_419F00(a2); LABEL_25: --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_MobBreed"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; // 13253830: using guessed type int dword_13253830; //----- (0041B460) -------------------------------------------------------- int __thiscall sub_41B460(void *this, int a2, int a3, int a4, unsigned __int8 *a5) { signed int v5; // ebx@1 int v6; // eax@4 __int64 v7; // qax@4 int v9; // [sp-4h] [bp-74h]@3 int v10; // [sp+Ch] [bp-64h]@4 int v11; // [sp+10h] [bp-60h]@4 void *v12; // [sp+14h] [bp-5Ch]@1 char v13[4]; // [sp+18h] [bp-58h]@4 int v14; // [sp+1Ch] [bp-54h]@4 int v15; // [sp+20h] [bp-50h]@4 int v16; // [sp+24h] [bp-4Ch]@4 int v17; // [sp+28h] [bp-48h]@4 char v18; // [sp+2Ch] [bp-44h]@4 unsigned int v19; // [sp+6Ch] [bp-4h]@1 int v20; // [sp+70h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v12 = this; v5 = sub_639620(&unk_14D16018, a5); if ( v5 != -1 && (_WORD)v5 != -1 ) { v17 = 0; v16 = 0; v15 = 0; v14 = 0; *(_DWORD *)v13 = 0; strncpy(v13, "Def", 0x14u); v6 = *(_DWORD *)(a3 + 102); v10 = *(_DWORD *)v6; v11 = *(_DWORD *)(v6 + 4); v7 = sub_548D10(a3); sub_4B5FD0( (void *)dword_D9FAF98, *(_DWORD *)(a3 + 122), (int)&v10, 0, v5, 0, 1, 0, 0, 1, (int)v13, 0, (int)"-", 65535, -1, v7, SHIDWORD(v7)); sprintf(&v18, "Mob : %d", *(_WORD *)(dword_13253830 + 20)); v9 = (int)&v18; } else { sub_419E00(a3, (int)"Invalid mob index"); sub_419E00( a3, (int)"usage : &mobbreed "); v9 = (int)"ex : &mobbreed Slime 3 0 n 1 - - 2"; } return sub_419E00(a3, v9); } // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; // 13253830: using guessed type int dword_13253830; //----- (0041B570) -------------------------------------------------------- int __stdcall sub_41B570(int a1, int a2, int a3, unsigned __int8 *a4) { signed int v4; // eax@1 unsigned int v5; // edi@3 int v6; // ST0C_4@3 char *v7; // eax@3 int v8; // ecx@4 int v9; // ecx@5 int v10; // edx@6 int v11; // eax@9 int v12; // ebx@9 void *v13; // esi@11 unsigned __int8 *v14; // ebx@11 int v15; // edx@15 int v16; // eax@16 __int16 v17; // cx@17 int v18; // eax@17 int v19; // edx@19 int v20; // edi@21 int v21; // eax@21 int v22; // eax@25 int v23; // edi@25 int v24; // esi@26 int v26; // [sp-8h] [bp-D4h]@8 int v27; // [sp+14h] [bp-B8h]@4 int v28; // [sp+18h] [bp-B4h]@9 int v29; // [sp+28h] [bp-A4h]@11 char v30; // [sp+2Ch] [bp-A0h]@3 __int16 v31; // [sp+34h] [bp-98h]@3 char v32; // [sp+9Ch] [bp-30h]@11 unsigned int v33; // [sp+BCh] [bp-10h]@1 int v34; // [sp+C8h] [bp-4h]@1 int v35; // [sp+CCh] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_MakeItem"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_MakeItem"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; v4 = sub_639620(&unk_14D20898, a4); if ( v4 == -1 ) LOWORD(v4) = -1; v5 = (unsigned __int16)v4; v6 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v7 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v30, v5, 0, *((_DWORD *)v7 + 4), v6); v31 = v5; if ( v5 >= dword_14D20894 || (v27 = 40 * v5, (v8 = dword_14D21184 + 40 * v5) == 0) || (v9 = *(_DWORD *)v8) == 0 ) goto LABEL_8; v10 = *(_WORD *)v9; if ( (_WORD)v10 != (_WORD)v5 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v5 + v10); LABEL_8: v26 = (int)"AmpersandCommand::ac_MakeItem"; goto LABEL_31; } v11 = sub_418CB0((int)&dword_14D20890, v5); v12 = *(_DWORD *)v11; v28 = *(_DWORD *)v11; if ( *(_DWORD *)v11 ) { v13 = sub_63ACA0(dword_1508B168, v5); (*(void (__thiscall **)(void *, unsigned int, char *, _DWORD))(*(_DWORD *)v13 + 20))(v13, v5, &v30, "-o"); sprintf(&v32, "-l%d", *(_DWORD *)(v12 + 106)); (*(void (__thiscall **)(void *, unsigned int, char *, char *))(*(_DWORD *)v13 + 20))(v13, v5, &v30, &v32); v29 = 1; v14 = a4 + 33; do { if ( *v14 != 45 ) break; (*(void (__thiscall **)(void *, unsigned int, char *, unsigned __int8 *))(*(_DWORD *)v13 + 20))( v13, v5, &v30, v14); v14 += 33; ++v29; } while ( v29 < 12 ); if ( v5 < dword_14D20894 ) { v15 = dword_14D21184 + v27; if ( dword_14D21184 + v27 ) { v16 = *(_DWORD *)v15; if ( *(_DWORD *)v15 ) { v17 = *(_WORD *)v16; v18 = 10000 * v5 + *(_WORD *)v16; if ( v17 == (_WORD)v5 ) { v19 = *(_DWORD *)(v15 + 4); if ( v19 ) { if ( v19 != -137 ) { v20 = (int)sub_4934A0(&dword_D61E064, (const char *)(v19 + 137)); v21 = (*(int (__thiscall **)(void *, __int16 *))(*(_DWORD *)v13 + 112))(v13, &v31); if ( v20 ) { if ( v21 ) sub_4928F0(v21, v20); } } } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v18); } } } } if ( *(_DWORD *)(v28 + 102) == 4 ) { v22 = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v13 + 48))(v13, &v30); v23 = v22; if ( v22 > 0 ) { v24 = 0; if ( v22 > 0 ) { do { ++v24; LOBYTE(v29) = 0; *(_WORD *)((char *)&v29 + 1) = 0; } while ( sub_5C3690(&unk_1325CAB8, (int)&v31, (int)&v29, 1, v24) && v24 < v23 ); } } } sub_526E50((void *)a2, a1, (int)&v30); } else { sub_419E00(a2, (int)"Invalid item"); } v26 = (int)"AmpersandCommand::ac_MakeItem"; LABEL_31: --dword_750CB8; v34 = -1; return sub_467660((int)&unk_D020420, v26); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0041B8A0) -------------------------------------------------------- int __stdcall sub_41B8A0(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@1 void *v7; // esi@2 int v8; // eax@2 int v9; // eax@3 void *v10; // edi@3 int v11; // eax@5 int v12; // ecx@6 int v13; // ecx@7 int v14; // ecx@8 __int16 v15; // ax@10 void *v16; // eax@10 int v17; // ecx@10 int v18; // edi@10 int v19; // eax@10 __int16 v20; // ax@10 char v21; // al@12 int v22; // esi@12 int v23; // eax@15 char v25; // [sp+10h] [bp-38h]@1 char v26; // [sp+20h] [bp-28h]@1 int v27; // [sp+2Ch] [bp-1Ch]@1 int v28; // [sp+30h] [bp-18h]@3 int v29; // [sp+34h] [bp-14h]@8 int v30; // [sp+38h] [bp-10h]@5 int v31; // [sp+44h] [bp-4h]@1 v27 = (int)"AmpersandCommand::ac_ClearInventory"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ClearInventory"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ClearInventory"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v31 = 0; sub_43BAC0((int)&v25, a2 + 36484, 0); v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v31) = 1; v6 = v5(v4); sub_43BC00((int)&v26, 9, (int)&v25, v6); LOBYTE(v31) = 2; if ( sub_486D40(&v26) ) { v7 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v7 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); *((_WORD *)v7 + 4) = sub_4802C0(v8); *((_BYTE *)v7 + 10) = 0; LOWORD(a2) = a2 & 0x3FF | 0x2400; do { v9 = sub_43BC20(&v26); v10 = (void *)v9; v28 = v9; if ( v9 ) { if ( sub_5CF620((void *)v9) ) { v11 = *((_WORD *)sub_5CF620(v10) + 4); v30 = v11; if ( (unsigned __int16)v11 < (unsigned int)dword_14D20894 ) { v12 = dword_14D21184 + 40 * (unsigned __int16)v11; if ( v12 ) { v13 = *(_DWORD *)v12; if ( v13 ) { v14 = *(_WORD *)v13; v29 = v14 + 10000 * (unsigned __int16)v11; if ( (_WORD)v14 == (_WORD)v30 ) { v15 = sub_43BC30(&v26); LOWORD(a2) = (a2 ^ v15) & 0x3FF ^ a2; v16 = sub_5CF620(v10); v17 = *((_BYTE *)v7 + 10) & 0x7F; *(_DWORD *)((char *)v7 + 8 * v17 + 25) = *(_DWORD *)v16; *(_DWORD *)((char *)v7 + 8 * v17 + 29) = *((_DWORD *)v16 + 1); *((_BYTE *)v7 + 10) ^= (*((_BYTE *)v7 + 10) ^ (*((_BYTE *)v7 + 10) + 1)) & 0x7F; v18 = *(_DWORD *)(v4 + 58688); v19 = (*(int (__thiscall **)(int, int, int *, int *))(*(_DWORD *)v4 + 2004))(v4, v28, &a2, &a2); v20 = sub_4802C0(v19); (*(void (__thiscall **)(int, _DWORD))(v18 + 48))(v4 + 58688, (unsigned __int16)v20); } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v29); } } } } } } } while ( sub_486DA0((void **)&v26) ); v21 = *((_BYTE *)v7 + 10); v22 = 8 * (*((_BYTE *)v7 + 10) & 0x7F) + 25; if ( v21 & 0x7F ) { if ( sub_4C81E0(&off_849C18, v22) ) { v23 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v23); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v22); } sub_43BBF0(v4 + 58688); } } LOBYTE(v31) = 1; nullsub_2(&v26); LOBYTE(v31) = 0; sub_43BB10(&v25); --dword_750CB8; v31 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ClearInventory"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0041BB60) -------------------------------------------------------- int __stdcall sub_41BB60(int a1, int a2, int a3, int a4) { int v4; // eax@1 int v5; // edx@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_fullpoint"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_fullpoint"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1264))(a2); v5 = *(_DWORD *)a2; *(_DWORD *)(a2 + 32703) = v4; *(_DWORD *)(a2 + 32707) = (*(int (__thiscall **)(int))(v5 + 1268))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_fullpoint"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041BC20) -------------------------------------------------------- int __stdcall sub_41BC20(int a1, int a2, int a3, const char *a4) { unsigned int v4; // ST14_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // edx@1 int v6; // edi@3 int v7; // ecx@6 int v8; // eax@6 _BYTE *v9; // eax@6 int v10; // ecx@6 int v11; // eax@6 _BYTE *v12; // eax@6 int v13; // esi@6 char v15; // [sp+18h] [bp-88h]@6 char v16; // [sp+2Ch] [bp-74h]@6 char v17; // [sp+4Dh] [bp-53h]@6 int v18; // [sp+6Eh] [bp-32h]@6 int v19; // [sp+72h] [bp-2Eh]@6 char v20[4]; // [sp+7Ch] [bp-24h]@3 int v21; // [sp+80h] [bp-20h]@3 int v22; // [sp+84h] [bp-1Ch]@3 int v23; // [sp+88h] [bp-18h]@3 int v24; // [sp+8Ch] [bp-14h]@3 unsigned int v25; // [sp+90h] [bp-10h]@1 int v26; // [sp+9Ch] [bp-4h]@1 int v27; // [sp+A0h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v4 = (unsigned int)&v27 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_summonplayer"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_summonplayer"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 304); v26 = 0; if ( (unsigned __int8)v5(a2, v4) ) { sub_419E00(a2, (int)"fail to 'summonplayer' : not allowed to do 'summonplayer' in the MH"); } else { v24 = 0; v23 = 0; v22 = 0; v21 = 0; *(_DWORD *)v20 = 0; strncpy(v20, a4, 0x14u); v6 = sub_54E5A0(&unk_13253630, (int)v20); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 304))(v6) ) { sub_419E00(a2, (int)"fail to 'summonplayer' : not allowed to do 'summonplayer' in the MH"); } else { v7 = *(_DWORD *)(a2 + 122); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); v9[12] = 0; strncpy(&v16, v9, 0xCu); v10 = *(_DWORD *)(*(_DWORD *)(a2 + 122) + 12); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); v12[12] = 0; strncpy(&v17, v12, 0xCu); v13 = *(_DWORD *)(a2 + 102); v18 = *(_DWORD *)v13; v19 = *(_DWORD *)(v13 + 4); (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v6 + 1536))( v6, &v15, 6, 9, 10); } } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_summonplayer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (0041BE10) -------------------------------------------------------- int __stdcall sub_41BE10(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_questrecieve"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_questrecieve"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_questrecieve"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041BE60) -------------------------------------------------------- int __stdcall sub_41BE60(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_questgiveup"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_questgiveup"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_questgiveup"); } // 41BE60: using guessed type int __stdcall sub_41BE60(int, int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041BEB0) -------------------------------------------------------- int __stdcall sub_41BEB0(int a1, int a2, int a3, const char *a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_questcomplete"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_questcomplete"; dword_750AB8[dword_750CB8++] = -1; sub_419F30(a4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_questcomplete"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041BF60) -------------------------------------------------------- int __stdcall sub_41BF60(int a1, int a2, int a3, const char *a4) { __int16 v4; // ax@1 void *v5; // esi@1 __int16 v6; // bx@1 int v7; // eax@1 int v8; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_learnskill"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_learnskill"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); v5 = off_849C18; v6 = v4; *(_WORD *)off_849C18 = 18433; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)((char *)v5 + 15) = -1; *((_DWORD *)v5 + 2) = v7; *((_WORD *)v5 + 6) = v6; *((_BYTE *)v5 + 14) = 0; if ( sub_4C81E0(&off_849C18, 17) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_learnskill : Packet Too Long", 17); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_learnskill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0041C090) -------------------------------------------------------- int __stdcall sub_41C090(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_skillcooltime"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_skillcooltime"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_skillcooltime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041C0E0) -------------------------------------------------------- int __stdcall sub_41C0E0(int a1, void *a2, int a3, unsigned __int8 *a4) { void *v4; // ebx@1 int v5; // eax@3 int v6; // eax@7 bool v7; // zf@7 int v8; // eax@7 int v9; // edi@7 unsigned __int8 *v10; // esi@10 const char *v11; // edx@10 unsigned __int8 *v12; // eax@10 char v13; // cl@11 const char *v14; // esi@14 const char *v15; // ecx@14 int v16; // eax@14 char v17; // dl@15 int v18; // ecx@20 int v19; // esi@24 int v21; // [sp-4h] [bp-28h]@2 int v22; // [sp+30h] [bp+Ch]@10 unsigned __int8 *v23; // [sp+38h] [bp+14h]@10 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Setabstate"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Setabstate"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 ) { v5 = sub_639620(&unk_877F50, a4); if ( v5 == -1 ) LOWORD(v5) = -1; v5 = (unsigned __int16)v5; if ( dword_8772EC >= (unsigned int)(unsigned __int16)v5 ) { v6 = 1452 * v5; v7 = dword_8772E4 + v6 == 0; v8 = dword_8772E4 + v6; v9 = v8; if ( !v7 && *(_DWORD *)v8 ) { v10 = a4; v11 = (const char *)(a4 + 33); v12 = a4 + 33; v22 = 0; v23 = a4 + 34; do v13 = *v12++; while ( v13 ); if ( v12 != v23 ) v22 = sub_419F30(v11); v14 = (const char *)(v10 + 66); v15 = v14; v16 = 1; do v17 = *v15++; while ( v17 ); if ( v15 != v14 + 1 ) { v16 = sub_419F30(v14); if ( v16 <= 0 || v16 >= 40 ) v16 = 1; } v18 = *(_DWORD *)(v9 + 36 * v16 + 12); if ( v18 ) { if ( !v22 ) v22 = *(_DWORD *)(v18 + 43); if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, int, int, int, _DWORD, signed int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(*(_DWORD *)v9 + 34), v16, v9, dword_14D129E8, 0, -1, v22, 0, 0) ) { v19 = dword_871500; sub_401900(v4, *(_DWORD *)(*(_DWORD *)v9 + 34)); if ( v19 <= 0 || v19 >= 40 ) v19 = 1; if ( *(_DWORD *)(v9 + 36 * v19 + 12) ) { (*(void (__thiscall **)(void *, _DWORD, int, signed int))(*(_DWORD *)v4 + 1008))( v4, *(_DWORD *)(*(_DWORD *)v9 + 34), v22, 1); sub_4055D0(v4, *(_DWORD *)(*(_DWORD *)v9 + 34), v22, v19); } } } } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v5); } --dword_750CB8; v21 = (int)"AmpersandCommand::ac_Setabstate"; } else { --dword_750CB8; v21 = (int)"AmpersandCommand::ac_Setabstate"; } return sub_467660((int)&unk_D020420, v21); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871500: using guessed type int dword_871500; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; // 14D129E8: using guessed type int dword_14D129E8; //----- (0041C2F0) -------------------------------------------------------- int __stdcall sub_41C2F0(int a1, int a2, int a3, int a4) { unsigned int v4; // esi@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_resetabstate"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_resetabstate"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; do (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1616))(a2, v4++); while ( v4 < 0x318 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_resetabstate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041C3B0) -------------------------------------------------------- int __stdcall sub_41C3B0(int a1, int a2, int a3, unsigned __int8 *a4) { unsigned __int8 *v4; // esi@4 int v5; // eax@4 int v6; // edi@4 unsigned __int8 *v7; // eax@7 char v8; // cl@8 const char *v9; // esi@11 const char *v10; // ecx@11 int v11; // eax@11 char v12; // dl@12 int v13; // ecx@17 int v14; // esi@21 int v15; // eax@24 int v17; // [sp-4h] [bp-30h]@2 void *v18; // [sp+1Ch] [bp-10h]@3 int v19; // [sp+40h] [bp+14h]@7 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_SetAbstateTarget"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_SetAbstateTarget"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && (v18 = (void *)(*(int (**)(void))(*(_DWORD *)a2 + 1884))()) != 0 ) { v4 = a4; v5 = sub_418C10((int)&unk_877138, a4); v6 = v5; if ( v5 && *(_DWORD *)v5 ) { v7 = a4 + 33; v19 = 0; do v8 = *v7++; while ( v8 ); if ( v7 != v4 + 34 ) v19 = sub_419F30((const char *)v4 + 33); v9 = (const char *)(v4 + 66); v10 = v9; v11 = 1; do v12 = *v10++; while ( v12 ); if ( v10 != v9 + 1 ) { v11 = sub_419F30(v9); if ( v11 <= 0 || v11 >= 40 ) v11 = 1; } v13 = *(_DWORD *)(v6 + 36 * v11 + 12); if ( v13 ) { if ( !v19 ) v19 = *(_DWORD *)(v13 + 43); if ( (unsigned __int8)(*(int (__thiscall **)(void *, int, _DWORD, int, int, int, _DWORD, signed int, int, _DWORD, _DWORD))(*(_DWORD *)v18 + 1592))( v18, a2, *(_DWORD *)(*(_DWORD *)v6 + 34), v11, v6, dword_14D129E8, 0, -1, v19, 0, 0) ) { v14 = dword_871500; sub_401900(v18, *(_DWORD *)(*(_DWORD *)v6 + 34)); if ( v14 <= 0 || v14 >= 40 ) v14 = 1; v15 = *(_DWORD *)(v6 + 36 * v14 + 12); if ( v15 ) { (*(void (__stdcall **)(_DWORD, _DWORD, signed int))(*(_DWORD *)v18 + 1008))( *(_DWORD *)(*(_DWORD *)v6 + 34), *(_DWORD *)(v15 + 43), 1); sub_4055D0(v18, *(_DWORD *)(*(_DWORD *)v6 + 34), *(_DWORD *)(*(_DWORD *)(v6 + 36 * v14 + 12) + 43), v14); } } } } --dword_750CB8; v17 = (int)"AmpersandCommand::ac_SetAbstateTarget"; } else { --dword_750CB8; v17 = (int)"AmpersandCommand::ac_SetAbstateTarget"; } return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871500: using guessed type int dword_871500; // 14D129E8: using guessed type int dword_14D129E8; //----- (0041C5A0) -------------------------------------------------------- int __stdcall sub_41C5A0(int a1, int a2, int a3, const char *a4) { double v4; // st7@1 __int16 v5; // ax@1 char v7; // [sp+1Ch] [bp-50h]@1 unsigned int v8; // [sp+5Ch] [bp-10h]@1 int v9; // [sp+68h] [bp-4h]@1 int v10; // [sp+6Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_performance"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_performance"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v4 = sub_4CE330(&dword_84BE30); sprintf(&v7, "Main performance : %g loop/sec", LODWORD(v4), *(unsigned __int64 *)&v4 >> 32); sub_419E00(a2, (int)&v7); v5 = 10; if ( *a4 ) v5 = sub_419F30(a4); sub_467480((int)&unk_D020420, v5); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_performance"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BE30: using guessed type int dword_84BE30; // 86FEB8: using guessed type int __security_cookie; //----- (0041C6A0) -------------------------------------------------------- int __stdcall sub_41C6A0(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 int v5; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Sethp"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Sethp"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); sub_55C1B0((void *)a2, v4, 0, (int)"AmpersandCommand::ac_Sethp"); v5 = sub_419F30(a4); *(_DWORD *)(a2 + 32703) = v5; if ( (unsigned int)v5 < 1 ) *(_DWORD *)(a2 + 32703) = 1; if ( *(_DWORD *)(a2 + 32703) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1264))(a2) ) *(_DWORD *)(a2 + 32703) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1264))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Sethp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041C7A0) -------------------------------------------------------- int __stdcall sub_41C7A0(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Setsp"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Setsp"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); *(_DWORD *)(a2 + 32707) = v4; if ( (unsigned int)v4 < 1 ) *(_DWORD *)(a2 + 32707) = 1; if ( *(_DWORD *)(a2 + 32707) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1268))(a2) ) *(_DWORD *)(a2 + 32707) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1268))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Setsp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041C890) -------------------------------------------------------- int __stdcall sub_41C890(int a1, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 int v6; // eax@1 long double v7; // st7@2 char v9; // [sp+14h] [bp-50h]@2 unsigned int v10; // [sp+54h] [bp-10h]@1 int v11; // [sp+60h] [bp-4h]@1 int v12; // [sp+64h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v4 = (unsigned int)&v12 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Dist"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Dist"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1884); v11 = 0; v6 = v5(a2, v4); if ( v6 ) { v7 = sqrt((double)sub_402710(a2, v6)); sprintf(&v9, "Distance : %d Grid", (signed int)v7); sub_419E00(a2, (int)&v9); } --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Dist"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041C980) -------------------------------------------------------- int __stdcall sub_41C980(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_BlockMatrix"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_BlockMatrix"; dword_750AB8[dword_750CB8++] = -1; nullsub_3(a4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_BlockMatrix"); } // 4FF7B0: using guessed type _DWORD __stdcall nullsub_3(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041CA30) -------------------------------------------------------- int __stdcall sub_41CA30(int a1, int a2, int a3, int a4) { unsigned int v4; // ST18_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 int v6; // eax@1 int v7; // edx@3 unsigned __int8 v8; // bl@4 int v9; // ecx@4 int v10; // edi@4 int v11; // ST30_4@4 int v12; // ecx@4 _BYTE *v13; // ecx@4 int v15; // [sp-4h] [bp-B0h]@4 char v16; // [sp+1Ch] [bp-90h]@4 unsigned int v17; // [sp+9Ch] [bp-10h]@1 int v18; // [sp+A8h] [bp-4h]@1 int v19; // [sp+ACh] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = (unsigned int)&v19 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_CurrentLoc"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_CurrentLoc"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1884); v18 = 0; v6 = v5(a2, v4); if ( !v6 ) v6 = a2; v7 = *(_DWORD *)(a2 + 122); if ( v7 ) { v8 = **(_BYTE **)(v6 + 106); v9 = *(_DWORD *)(v6 + 102); v10 = *(_DWORD *)(v9 + 4); v11 = *(_DWORD *)v9; v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v7; *((_DWORD *)v13 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v7 + 8); v13[12] = 0; sprintf(&v16, "Location[%d] : %s/%d/%d/%d", *(_WORD *)(v6 + 4), v13, v11, v10, v8); sub_419E00(a2, (int)&v16); v18 = -1; v15 = (int)"AmpersandCommand::ac_CurrentLoc"; } else { v18 = -1; v15 = (int)"AmpersandCommand::ac_CurrentLoc"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (0041CB90) -------------------------------------------------------- int __stdcall sub_41CB90(int a1, int a2, int a3, const char *a4) { int v4; // esi@1 char *v5; // eax@1 char *v6; // ST00_4@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_KickOutPlayer"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_KickOutPlayer"; dword_750AB8[dword_750CB8++] = -1; v4 = (int)off_849C18; v5 = (char *)off_849C18 + 10; v6 = (char *)off_849C18 + 10; *(_DWORD *)((char *)off_849C18 + 26) = 0; *((_DWORD *)v5 + 3) = 0; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 1) = 0; *(_DWORD *)v5 = 0; strncpy(v6, a4, 0x14u); sub_5A5350(off_86B040, a2, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_KickOutPlayer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B040: using guessed type int (__stdcall *(*off_86B040[9])[3])(int, int); //----- (0041CC60) -------------------------------------------------------- int __stdcall sub_41CC60(int a1, int a2, int a3, unsigned __int8 *a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_FindMob"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_FindMob"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 304))(a2) ) sub_419E00(a2, (int)"fail to 'mfind' : not allowed to do 'mfind' in the MH"); else sub_4525C0((void *)a2, a4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_FindMob"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041CD20) -------------------------------------------------------- int __stdcall sub_41CD20(int a1, int a2, int a3, const char *a4) { int v4; // edi@3 char *v5; // eax@3 char *v6; // ST00_4@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_FindPlayer"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_FindPlayer"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 304))(a2) ) { sub_419E00(a2, (int)"fail to 'pfind' : not allowed to do 'pfind' in the MH"); } else { v4 = (int)off_849C18; v5 = (char *)off_849C18 + 9; v6 = (char *)off_849C18 + 9; *(_DWORD *)((char *)off_849C18 + 25) = 0; *((_DWORD *)v5 + 3) = 0; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 1) = 0; *(_DWORD *)v5 = 0; strncpy(v6, a4, 0x14u); sub_5A4E00(off_86B038, a2, v4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_FindPlayer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B038: using guessed type int (__stdcall *(*off_86B038[11])[3])(int, int); //----- (0041CE10) -------------------------------------------------------- int __stdcall sub_41CE10(int a1, int a2, int a3, const char *a4) { int v4; // esi@4 char *v5; // eax@4 char *v6; // ST00_4@4 int v7; // eax@4 int v8; // eax@4 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_SummonPlayer"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_SummonPlayer"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 304))(a2) ) { sub_419E00(a2, (int)"fail to 'psummon' : not allowed to do 'psummon' in the MH"); } else { if ( *(_DWORD *)(a2 + 122) ) { v4 = (int)off_849C18; v5 = (char *)off_849C18 + 9; v6 = (char *)off_849C18 + 9; *(_DWORD *)((char *)off_849C18 + 25) = 0; *((_DWORD *)v5 + 3) = 0; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 1) = 0; *(_DWORD *)v5 = 0; strncpy(v6, a4, 0x14u); v7 = *(_DWORD *)(a2 + 122); *(_DWORD *)(v4 + 29) = *(_DWORD *)v7; *(_DWORD *)(v4 + 33) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v4 + 37) = *(_DWORD *)(v7 + 8); v8 = *(_DWORD *)(a2 + 102); *(_DWORD *)(v4 + 41) = *(_DWORD *)v8; *(_DWORD *)(v4 + 45) = *(_DWORD *)(v8 + 4); sub_5A4C40(off_86B03C, a2, v4); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_SummonPlayer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B03C: using guessed type int (__stdcall *(*off_86B03C[10])[3])(int, int); //----- (0041CF20) -------------------------------------------------------- int __stdcall sub_41CF20(int a1, void *a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_MobDistribute"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_MobDistribute"; dword_750AB8[dword_750CB8++] = -1; sub_458B60(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_MobDistribute"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041CFD0) -------------------------------------------------------- int __stdcall sub_41CFD0(int a1, void *a2, int a3, const char *a4) { int v4; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ChargedItem"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ChargedItem"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); sub_450B10(a2, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ChargedItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041D0A0) -------------------------------------------------------- int __stdcall sub_41D0A0(int a1, void *a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_killallmob"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_killallmob"; dword_750AB8[dword_750CB8++] = -1; sub_55C4E0(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_killallmob"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041D140) -------------------------------------------------------- int __stdcall sub_41D140(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_mobdamage"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_mobdamage"; dword_750AB8[dword_750CB8++] = -1; sub_55C670(a2, a4, a4 + 33, (const char *)(a4 + 66)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_mobdamage"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041D220) -------------------------------------------------------- int __stdcall sub_41D220(int a1, void *a2, int a3, int a4) { int (__stdcall **v5)(int, int, int); // [sp+4h] [bp-18h]@1 __int16 v6; // [sp+8h] [bp-14h]@1 int v7; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [bp-4h]@1 v7 = (int)"AmpersandCommand::ac_SuicideAllMob"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_SuicideAllMob"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_SuicideAllMob"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sub_427BE0(&v5); v5 = &off_6A23AC; v6 = -1; LOBYTE(v8) = 1; sub_549B60(a2, (int)&v5, 0); LOBYTE(v8) = 0; v5 = &off_6A23AC; sub_427EB0(&v5); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_SuicideAllMob"); } // 6A23AC: using guessed type int (__stdcall *off_6A23AC)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041D300) -------------------------------------------------------- int __stdcall sub_41D300(int a1, int a2, int a3, unsigned __int8 *a4) { signed int v4; // eax@1 __int16 v5; // si@1 int (__stdcall **v7)(int, int, int); // [sp+10h] [bp-58h]@4 __int16 v8; // [sp+14h] [bp-54h]@4 char v9; // [sp+18h] [bp-50h]@4 unsigned int v10; // [sp+58h] [bp-10h]@1 int v11; // [sp+64h] [bp-4h]@1 int v12; // [sp+68h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_SuicideMob"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_SuicideMob"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v4 = sub_639620(&unk_14D16018, a4); v5 = v4; if ( v4 != -1 && (_WORD)v4 != -1 ) { sprintf(&v9, "SuicideMob : %d", (unsigned __int16)v4); sub_419E00(a2, (int)&v9); sub_427BE0(&v7); v7 = &off_6A23AC; v8 = v5; LOBYTE(v11) = 1; sub_549B60((void *)a2, (int)&v7, 0); LOBYTE(v11) = 0; v7 = &off_6A23AC; sub_427EB0(&v7); } else { sub_419E00(a2, (int)"Invalid mob index"); } --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_SuicideMob"); } // 6A23AC: using guessed type int (__stdcall *off_6A23AC)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041D440) -------------------------------------------------------- int __stdcall sub_41D440(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 int v5; // eax@3 int v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ServerSocketCut"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ServerSocketCut"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); if ( (unsigned int)v4 <= 3 ) dword_14D16438[66 * v4] = 3; v5 = sub_419F30(a4); if ( (unsigned int)v5 <= 3 ) dword_14D148D8[66 * v5] = 3; v6 = sub_419F30(a4); if ( (unsigned int)v6 <= 3 ) dword_14D12A08[66 * v6] = 3; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ServerSocketCut"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A08: using guessed type int dword_14D12A08[]; // 14D148D8: using guessed type int dword_14D148D8[]; // 14D16438: using guessed type int dword_14D16438[]; //----- (0041D530) -------------------------------------------------------- int __stdcall sub_41D530(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 int v5; // ecx@3 int v6; // ecx@3 int v8; // [sp-8h] [bp-20h]@2 int v9; // [sp-4h] [bp-1Ch]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_EmptyMap"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_EmptyMap"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_49F830(&unk_D714FF8, a4); if ( v4 ) { v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = (int)&byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *(_DWORD *)(v6 + 4) = *(_DWORD *)(v4 + 4); v9 = v6; *(_DWORD *)(v6 + 8) = *(_DWORD *)(v4 + 8); *(_BYTE *)(v6 + 12) = 0; v8 = a2; } else { v9 = (int)"NULL"; v8 = a2; } sub_419E00(v8, v9); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_EmptyMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0041D630) -------------------------------------------------------- int __stdcall sub_41D630(int a1, int a2, int a3, int a4) { void *v4; // esi@1 int v6; // [sp+0h] [bp-18h]@0 int v7; // [sp+4h] [bp-14h]@0 int v8; // [sp+Ch] [bp-Ch]@0 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ZoneLinkTest"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ZoneLinkTest"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 2065; *((_BYTE *)v4 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v4 + 3) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v4 + 5) = (*(int (__stdcall **)(int, int, _DWORD, int))(*(_DWORD *)a2 + 836))( v6, v7, "AmpersandCommand::ac_ZoneLinkTest", v8); *((_BYTE *)v4 + 9) = 0; sub_5A4B40(&off_849C18, 10); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ZoneLinkTest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041D710) -------------------------------------------------------- int __stdcall sub_41D710(int a1, int a2, int a3, int a4) { int v4; // eax@1 int v5; // ecx@3 _BYTE *v6; // ecx@3 signed int v7; // eax@3 char v9; // [sp+24h] [bp-80h]@1 char v10; // [sp+30h] [bp-74h]@1 char v11; // [sp+74h] [bp-30h]@7 __int16 v12; // [sp+75h] [bp-2Fh]@7 __int16 v13; // [sp+77h] [bp-2Dh]@7 int v14; // [sp+79h] [bp-2Bh]@7 int v15; // [sp+7Dh] [bp-27h]@7 int v16; // [sp+81h] [bp-23h]@7 char v17[4]; // [sp+88h] [bp-1Ch]@1 unsigned int v18; // [sp+94h] [bp-10h]@1 int v19; // [sp+A0h] [bp-4h]@1 int v20; // [sp+A4h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildTournament"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GuildTournament"; dword_750AB8[dword_750CB8++] = -1; strcpy(v17, "GuildT01"); v19 = 0; strncpy(&v9, v17, 0xCu); v10 = 0; v4 = sub_63AB60(&unk_CFCF398, v17); if ( !v4 ) goto LABEL_11; v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); v6[12] = 0; v7 = sub_639620(&unk_14D20404, v6); if ( v7 == -1 ) LOWORD(v7) = -1; v7 = (unsigned __int16)v7; if ( (unsigned __int16)v7 < dword_14D20400 && *(_DWORD *)(dword_14D203FC + 4 * v7) ) { v13 = 1; v11 = 0; v12 = 0; v14 = 3932190; v15 = 4; v16 = 1; sub_4760D0((int)&v11); --dword_750CB8; } else { LABEL_11: sub_419E00(a2, (int)"Invalid map name"); --dword_750CB8; } v19 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildTournament"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (0041D8B0) -------------------------------------------------------- int __stdcall sub_41D8B0(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_EndOfKingdomQuest"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_EndOfKingdomQuest"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); sub_5A2470(&unk_14D12A04, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_EndOfKingdomQuest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041D960) -------------------------------------------------------- int __stdcall sub_41D960(int a1, int a2, int a3, const char *a4) { char v5; // [sp+Ch] [bp-20h]@1 char v6[4]; // [sp+10h] [bp-1Ch]@1 int v7; // [sp+14h] [bp-18h]@1 int v8; // [sp+18h] [bp-14h]@1 unsigned int v9; // [sp+1Ch] [bp-10h]@1 int v10; // [sp+28h] [bp-4h]@1 int v11; // [sp+2Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ReroadKingdomQuest"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ReroadKingdomQuest"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, a4, 0xCu); if ( sub_5063A0(&unk_13230E20, (unsigned __int8 *)a4, (int)&v5) ) { sub_486220(&unk_D714FF8, a4); sub_5064A0(&unk_13230E20, (int)a4); } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ReroadKingdomQuest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041DA50) -------------------------------------------------------- int __stdcall sub_41DA50(int a1, int a2, int a3, int a4) { void *v4; // ecx@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_deathaura"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_deathaura"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_55C320; if ( *(int (__thiscall **)(void *))(a2 + 155568) == sub_55C320 ) v4 = sub_55C1D0; *(_DWORD *)(a2 + 155568) = v4; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_deathaura"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041DAD0) -------------------------------------------------------- int __stdcall sub_41DAD0(int a1, int a2, int a3, int a4) { int v5; // [sp-4h] [bp-1Ch]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_immortal"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_immortal"; dword_750AB8[dword_750CB8++] = -1; if ( *(int (__thiscall **)(void *))(a2 + 155568) == sub_55C410 ) { *(_BYTE *)(a2 + 23824) &= 0x7Fu; *(_DWORD *)(a2 + 155568) = sub_55C1D0; v5 = (int)"Immortal Mode False"; } else { *(_BYTE *)(a2 + 23824) |= 0x80u; *(_DWORD *)(a2 + 155568) = sub_55C410; v5 = (int)"Immortal Mode True"; } sub_419E00(a2, v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_immortal"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041DBB0) -------------------------------------------------------- int __stdcall sub_41DBB0(int a1, int a2, int a3, const char *a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_HorseSpeed"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_HorseSpeed"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(a2 + 160776) = sub_419F30(a4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_HorseSpeed"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041DC60) -------------------------------------------------------- int __stdcall sub_41DC60(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_EnterMiniHouse"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_EnterMiniHouse"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_EnterMiniHouse"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041DCB0) -------------------------------------------------------- int __stdcall sub_41DCB0(int a1, int a2, int a3, const char *a4) { int v4; // eax@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_staticdamage"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_staticdamage"; dword_750AB8[dword_750CB8++] = -1; if ( !*a4 || (v4 = sub_419F30(a4), v4 < 0) ) v4 = 0; *(_DWORD *)(a2 + 7892) = v4; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_staticdamage"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041DD70) -------------------------------------------------------- int __stdcall sub_41DD70(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 char v6[4]; // [sp+14h] [bp-24h]@1 int v7; // [sp+18h] [bp-20h]@1 int v8; // [sp+1Ch] [bp-1Ch]@1 int v9; // [sp+20h] [bp-18h]@1 int v10; // [sp+24h] [bp-14h]@1 unsigned int v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@1 int v13; // [sp+38h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_KeepFromChat"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_KeepFromChat"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, a4, 0x14u); v4 = sub_54E5A0(&unk_13253630, (int)v6); if ( v4 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 2288))(v4, a2); else sub_419E00(a2, (int)"Player not found"); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_KeepFromChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041DE70) -------------------------------------------------------- int __stdcall sub_41DE70(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@5 int v7; // [sp+14h] [bp-1Ch]@10 __int16 v8; // [sp+1Dh] [bp-13h]@10 unsigned int v9; // [sp+20h] [bp-10h]@1 int v10; // [sp+2Ch] [bp-4h]@1 int v11; // [sp+30h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_BonusExp"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_BonusExp"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 122); v10 = 0; if ( v4 ) { if ( a3 == 3 ) { v5 = sub_419F30((const char *)(a4 + 33)); if ( v5 <= 0 ) v5 = 0; if ( *(_BYTE *)a4 == 65 || *(_BYTE *)a4 == 97 ) { LOWORD(v7) = v7 & 0x3FF | 0x1800; LOWORD(v7) = v7 & 0xFC10 | 0x10; v8 = v5; sub_5A5600(off_86B044, a2, (int)&v7); } else { *(_DWORD *)(v4 + 76) = v5; } } else { sub_419E00(a2, (int)"Usger : &expbonus [map] [rate]"); } --dword_750CB8; v10 = -1; } else { --dword_750CB8; v10 = -1; } return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_BonusExp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B044: using guessed type int (__stdcall *(*off_86B044[8])[3])(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (0041DFB0) -------------------------------------------------------- int __stdcall sub_41DFB0(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@5 int v7; // [sp+14h] [bp-1Ch]@10 __int16 v8; // [sp+1Dh] [bp-13h]@10 unsigned int v9; // [sp+20h] [bp-10h]@1 int v10; // [sp+2Ch] [bp-4h]@1 int v11; // [sp+30h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_BonusItem"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_BonusItem"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 122); v10 = 0; if ( v4 ) { if ( a3 == 3 ) { v5 = sub_419F30((const char *)(a4 + 33)); if ( v5 <= 0 ) v5 = 0; if ( *(_BYTE *)a4 == 65 || *(_BYTE *)a4 == 97 ) { LOWORD(v7) = v7 & 0x3FF | 0x1800; LOWORD(v7) = v7 & 0xFC11 | 0x11; v8 = v5; sub_5A54F0(off_86B048, a2, (int)&v7); } else { *(_DWORD *)(v4 + 80) = v5; } } else { sub_419E00(a2, (int)"Usger : &itembonus [map] [rate]"); } --dword_750CB8; v10 = -1; } else { --dword_750CB8; v10 = -1; } return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_BonusItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B048: using guessed type int (__stdcall *(*off_86B048[7])[3])(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (0041E0F0) -------------------------------------------------------- int __stdcall sub_41E0F0(int a1, int a2, int a3, int a4) { int v4; // eax@1 char v6; // [sp+24h] [bp-90h]@3 unsigned int v7; // [sp+A4h] [bp-10h]@1 int v8; // [sp+B0h] [bp-4h]@1 int v9; // [sp+B4h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_FieldBonus"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_FieldBonus"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 122); v8 = 0; if ( v4 ) { sprintf(&v6, "E[%g%%] D[%g%%]", (double)*(signed int *)(v4 + 76) / 10.0, (double)*(signed int *)(v4 + 80) / 10.0); sub_419E00(a2, (int)&v6); --dword_750CB8; } else { --dword_750CB8; } v8 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_FieldBonus"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041E1F0) -------------------------------------------------------- int __stdcall sub_41E1F0(int a1, int a2, int a3, int a4) { int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_CharInform"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_CharInform"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1884))(a2) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1884))(a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2264))(v4, a2); } else { sub_419E00(a2, (int)"Target needed"); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_CharInform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041E2C0) -------------------------------------------------------- int __stdcall sub_41E2C0(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 char v6[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 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_PartyInform"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_PartyInform"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, a4, 0x14u); v4 = sub_54E5A0(&unk_13253630, (int)v6); if ( !v4 ) v4 = a2; (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 1400))(v4, a2); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_PartyInform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041E3B0) -------------------------------------------------------- int __stdcall sub_41E3B0(int a1, int a2, int a3, int a4) { char v5; // [sp+8h] [bp-90h]@1 unsigned int v6; // [sp+88h] [bp-10h]@1 int v7; // [sp+94h] [bp-4h]@1 int v8; // [sp+98h] [bp+0h]@1 v6 = (unsigned int)&v8 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_PartyInform"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_PartyInform"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; sprintf( &v5, "Thread : %d : %d/%d : %d/%d\n", dword_14D409C8, dword_14D409D4, dword_14D409CC, dword_14D409D8, dword_14D409D0); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 1924))(a2, &v5); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_PartyInform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D409C8: using guessed type int dword_14D409C8; // 14D409CC: using guessed type int dword_14D409CC; // 14D409D0: using guessed type int dword_14D409D0; // 14D409D4: using guessed type int dword_14D409D4; // 14D409D8: using guessed type int dword_14D409D8; //----- (0041E4B0) -------------------------------------------------------- int __stdcall sub_41E4B0(int a1, void *a2, int a3, const char *a4) { int v4; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ParameterView"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ParameterView"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); sub_4CAB50(a2, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ParameterView"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041E560) -------------------------------------------------------- int __stdcall sub_41E560(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ST10_4@1 void *v6; // ecx@1 int v7; // ST0C_4@1 int v8; // ebx@1 int v9; // ST30_4@1 int v10; // ST2C_4@1 char v11; // al@1 char v13; // [sp+18h] [bp-90h]@1 unsigned int v14; // [sp+98h] [bp-10h]@1 int v15; // [sp+A4h] [bp-4h]@1 int v16; // [sp+A8h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_IsBlock"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_IsBlock"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 102); v5 = *(_DWORD *)(v4 + 4); v6 = *(void **)(*(_DWORD *)(a2 + 122) + 20); v7 = *(_DWORD *)v4; v15 = 0; v8 = (unsigned __int8)sub_49D470(v6, v7, v5, 0); v9 = (unsigned __int8)sub_49D470(*(void **)(*(_DWORD *)(a2 + 122) + 20), *(_DWORD *)v4, *(_DWORD *)(v4 + 4), 1); v10 = (unsigned __int8)sub_49D470(*(void **)(*(_DWORD *)(a2 + 122) + 20), *(_DWORD *)v4, *(_DWORD *)(v4 + 4), 2); v11 = sub_49D470(*(void **)(*(_DWORD *)(a2 + 122) + 20), *(_DWORD *)v4, *(_DWORD *)(v4 + 4), 3); sprintf(&v13, "Block : %d/%d/%d/%d 0:Block 1:Non-Block", v8, v9, v10, (unsigned __int8)v11); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 1924))(a2, &v13); --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_IsBlock"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041E6B0) -------------------------------------------------------- int __stdcall sub_41E6B0(int a1, int a2, int a3, char *a4) { unsigned int v4; // ST08_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 int v6; // esi@5 char *v7; // ST00_4@5 int v9; // [sp+10h] [bp-28h]@3 char v10[4]; // [sp+14h] [bp-24h]@3 int v11; // [sp+18h] [bp-20h]@3 int v12; // [sp+1Ch] [bp-1Ch]@3 int v13; // [sp+20h] [bp-18h]@3 int v14; // [sp+24h] [bp-14h]@3 unsigned int v15; // [sp+28h] [bp-10h]@1 int v16; // [sp+34h] [bp-4h]@1 int v17; // [sp+38h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v4 = (unsigned int)&v17 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Propose"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Propose"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 304); v16 = 0; if ( (unsigned __int8)v5(a2, v4) ) { sub_419E00(a2, (int)"fail to 'pfind' : not allowed to do 'pfind' in the MH"); } else { v14 = 0; v13 = 0; v12 = 0; v11 = 0; *(_DWORD *)v10 = 0; strncpy(v10, a4, 0x14u); v9 = sub_54E5A0(&unk_13253630, (int)v10); if ( v9 ) { v6 = (int)off_849C18; v7 = (char *)off_849C18 + 4; *(_WORD *)off_849C18 = 8271; strncpy(v7, a4 + 33, 0x25u); *(_BYTE *)(v6 + 40) = 0; *(_WORD *)(v6 + 2) = *(_WORD *)(v9 + 4); sub_59D290((void *)a2, v6, 39, 65535); } else { sub_419E00(a2, (int)"Failed : Cannot find character"); } } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Propose"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041E810) -------------------------------------------------------- int __stdcall sub_41E810(int a1, int a2, int a3, const char *a4) { unsigned int v4; // ST08_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 int v6; // eax@3 int v7; // ecx@5 char v9[4]; // [sp+10h] [bp-24h]@3 int v10; // [sp+14h] [bp-20h]@3 int v11; // [sp+18h] [bp-1Ch]@3 int v12; // [sp+1Ch] [bp-18h]@3 int v13; // [sp+20h] [bp-14h]@3 unsigned int v14; // [sp+24h] [bp-10h]@1 int v15; // [sp+30h] [bp-4h]@1 int v16; // [sp+34h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v4 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ProposeOK"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ProposeOK"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 304); v15 = 0; if ( (unsigned __int8)v5(a2, v4) ) { sub_419E00(a2, (int)"fail to 'pfind' : not allowed to do 'pfind' in the MH"); } else { v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, a4, 0x14u); v6 = sub_54E5A0(&unk_13253630, (int)v9); if ( v6 ) { v7 = (int)off_849C18; *(_WORD *)off_849C18 = 8273; *(_BYTE *)(v7 + 4) = a4[33] == 49; *(_WORD *)(v7 + 2) = *(_WORD *)(v6 + 4); sub_59D430((void *)a2, v7, 40, 65535); } else { sub_419E00(a2, (int)"Failed : Cannot find character"); } } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ProposeOK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041E950) -------------------------------------------------------- int __stdcall sub_41E950(int a1, int a2, int a3, int a4) { void *v4; // esi@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingReset"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_WeddingReset"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 8277; *((_BYTE *)v4 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v4 + 3) = -1; *(_DWORD *)((char *)v4 + 5) = -1; *(_DWORD *)((char *)v4 + 9) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); *(_DWORD *)((char *)v4 + 13) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); *((_BYTE *)v4 + 17) = 0; sub_5A4B40(&off_849C18, 18); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingReset"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041EA50) -------------------------------------------------------- int __stdcall sub_41EA50(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingReserve"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_WeddingReserve"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 304))(a2) ) sub_419E00(a2, (int)"fail to 'pfind' : not allowed to do 'pfind' in the MH"); else sub_59FE60((void *)a2, (int)off_849C18, 0, 65535); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingReserve"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041EB20) -------------------------------------------------------- int __stdcall sub_41EB20(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingGuestEnterReady"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_WeddingGuestEnterReady"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 304))(a2) ) sub_419E00(a2, (int)"fail to 'pfind' : not allowed to do 'pfind' in the MH"); else sub_59D690((void *)a2, (int)off_849C18, 0, 65535); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingGuestEnterReady"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041EBF0) -------------------------------------------------------- int __stdcall sub_41EBF0(int a1, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 int (__thiscall *v6)(_DWORD); // eax@3 char v8; // [sp+10h] [bp-74h]@5 char v9; // [sp+24h] [bp-60h]@3 char v10; // [sp+30h] [bp-54h]@3 char v11; // [sp+45h] [bp-3Fh]@3 char v12; // [sp+51h] [bp-33h]@3 int v13; // [sp+66h] [bp-1Eh]@3 int v14; // [sp+6Ah] [bp-1Ah]@3 unsigned int v15; // [sp+74h] [bp-10h]@1 int v16; // [sp+80h] [bp-4h]@1 int v17; // [sp+84h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v4 = (unsigned int)&v17 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingGuestEnter"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_WeddingGuestEnter"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 304); v16 = 0; if ( (unsigned __int8)v5(a2, v4) ) { sub_419E00(a2, (int)"fail to 'pfind' : not allowed to do 'pfind' in the MH"); } else { sub_526320((void *)a2, *(_WORD *)(a2 + 4), word_14D211BA, 1, 0); strncpy(&v9, "Wedding", 0xCu); v10 = 0; strncpy(&v11, "Wedding", 0xCu); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156); v12 = 0; v13 = 558; v14 = 154; if ( (unsigned __int8)v6(a2) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1160))(a2); (*(void (__thiscall **)(int, char *, signed int))(*(_DWORD *)a2 + 1020))(a2, &v8, 1); } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_WeddingGuestEnter"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D211BA: using guessed type __int16 word_14D211BA; //----- (0041ED30) -------------------------------------------------------- int __stdcall sub_41ED30(int a1, int a2, int a3, const char *a4) { __int16 v4; // ax@1 void *v5; // esi@1 __int16 v6; // bx@1 int v7; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Unlearnskill"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Unlearnskill"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); v5 = off_849C18; v6 = v4; *(_WORD *)off_849C18 = 18469; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_WORD *)v5 + 4) = v6; if ( sub_4C81E0(&off_849C18, 10) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_Unlearnskill : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Unlearnskill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0041EE40) -------------------------------------------------------- int __stdcall sub_41EE40(int a1, int a2, int a3, const char *a4) { __int16 v4; // ax@1 void *v5; // esi@1 __int16 v6; // bx@1 int v7; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_UnlearnPassive"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_UnlearnPassive"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); v5 = off_849C18; v6 = v4; *(_WORD *)off_849C18 = 18469; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_WORD *)v5 + 4) = v6 + 30000; if ( sub_4C81E0(&off_849C18, 10) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_UnlearnPassive : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_UnlearnPassive"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0041EF50) -------------------------------------------------------- int __stdcall sub_41EF50(int a1, int a2, int a3, const char *a4) { __int16 v4; // ax@1 void *v5; // esi@1 __int16 v6; // bx@1 int v7; // eax@1 int v8; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_learnPassive"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_learnPassive"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30(a4); v5 = off_849C18; v6 = v4; *(_WORD *)off_849C18 = 18433; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)((char *)v5 + 15) = -1; *((_DWORD *)v5 + 2) = v7; *((_WORD *)v5 + 6) = v6; *((_BYTE *)v5 + 14) = 1; if ( sub_4C81E0(&off_849C18, 17) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_learnPassive : Packet Too Long", 17); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_learnPassive"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0041F080) -------------------------------------------------------- FILE *__stdcall sub_41F080(int a1, int a2, int a3, const char *a4) { FILE *result; // eax@1 FILE *v5; // ebx@1 void *v6; // esi@3 int v7; // eax@5 char v8[4]; // [sp+Ch] [bp-18h]@1 int v9; // [sp+10h] [bp-14h]@1 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+18h] [bp-Ch]@1 int v12; // [sp+1Ch] [bp-8h]@1 unsigned int v13; // [sp+20h] [bp-4h]@1 int v14; // [sp+24h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v12 = 0; v11 = 0; v10 = 0; v9 = 0; *(_DWORD *)v8 = 0; strncpy(v8, a4, 0x14u); result = (FILE *)sub_54E5A0(&unk_13253630, (int)v8); v5 = result; if ( result ) { result = (FILE *)(*(int (__thiscall **)(FILE *))((int (__thiscall **)(_DWORD))result->_ptr + 308))(result); if ( (_BYTE)result == 2 ) { v6 = off_849C18; *(_WORD *)off_849C18 = 4241; *((_WORD *)v6 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_DWORD *)v6 + 2) = (*(int (__thiscall **)(FILE *))((int (__thiscall **)(_DWORD))v5->_ptr + 209))(v5); if ( sub_4C81E0(&off_849C18, 12) ) { v7 = sub_428750((int)&dword_14D16430); result = (FILE *)sub_4C7EC0(&off_849C18, v7); } else { result = sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ac_Wedding::sa_Step : Packet Too Long", 12); } } } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0041F180) -------------------------------------------------------- int __stdcall sub_41F180(int a1, int a2, int a3, int a4) { signed int v4; // ebx@1 int v5; // eax@1 int v6; // eax@3 void *v7; // edi@6 int v8; // ST18_4@6 int v9; // ST04_4@6 int v10; // eax@6 unsigned __int8 v11; // al@6 int v12; // ebx@8 int v13; // eax@10 char v15; // [sp+10h] [bp-1Ch]@6 int v16; // [sp+1Ch] [bp-10h]@1 int v17; // [sp+28h] [bp-4h]@1 v16 = (int)"AmpersandCommand::ac_ShowPlayerID"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ShowPlayerID"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ShowPlayerID"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(a2 + 122); v17 = 0; if ( v5 && (v6 = *(_DWORD *)(v5 + 12)) != 0 ) { if ( *(_BYTE *)(v6 + 106) ) { v7 = off_849C18; v8 = (int)off_849C18; *(_WORD *)off_849C18 = 7190; sub_427EE0((int)&v15, v8); v9 = *(_DWORD *)(a2 + 102); LOBYTE(v17) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v10, v9, 0, 0, (int)&v15, 0, 65535); v11 = *((_BYTE *)v7 + 2); if ( v11 && v11 < 0x1Du ) { v12 = 30 * v11 + 3; if ( sub_4C81E0(&off_849C18, 30 * v11 + 3) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_ShowPlayerID : Packet Too Long", v12); } *((_BYTE *)v7 + 2) = 0; v4 = -1; } LOBYTE(v17) = 0; sub_427EB0(&v15); } else { sub_419E00( a2, (int)"fail to 'showid' : This instruction code is not used in condition which the FieldMap option - NameHide is activated."); } --dword_750CB8; } else { --dword_750CB8; } v17 = v4; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ShowPlayerID"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041F300) -------------------------------------------------------- int __stdcall sub_41F300(int a1, void *a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_EraseChargeBuff"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_EraseChargeBuff"; dword_750AB8[dword_750CB8++] = -1; sub_417E30(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_EraseChargeBuff"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041F3A0) -------------------------------------------------------- int __stdcall sub_41F3A0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_MobHatchery"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_MobHatchery"; dword_750AB8[dword_750CB8++] = -1; sub_4B3180((void *)dword_D9FAF98, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_MobHatchery"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FAF98: using guessed type int dword_D9FAF98; //----- (0041F450) -------------------------------------------------------- int __stdcall sub_41F450(int a1, int a2, int a3, const char *a4) { int v5; // [sp-4h] [bp-18h]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_AllCritical"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_AllCritical"; dword_750AB8[dword_750CB8++] = -1; if ( strcmp("0", a4) ) v5 = (int)off_8551FC; else v5 = (int)off_8551E4; sub_548350(a2, v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_AllCritical"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551FC: using guessed type double (__stdcall *(*off_8551FC[2])[2])(int); //----- (0041F530) -------------------------------------------------------- int __stdcall sub_41F530(int a1, int a2, int a3, char *a4) { int v4; // esi@1 int v5; // esi@4 int v6; // eax@4 int v7; // edi@4 int v8; // edx@6 int (__thiscall *v9)(_DWORD); // eax@6 int v10; // eax@6 int v11; // edx@6 char v12; // al@6 char v13; // al@6 int v15; // [sp-Ch] [bp-74h]@6 int v16; // [sp-8h] [bp-70h]@6 int v17; // [sp+10h] [bp-58h]@2 char v18[4]; // [sp+1Ch] [bp-4Ch]@2 int v19; // [sp+20h] [bp-48h]@2 int v20; // [sp+24h] [bp-44h]@2 int v21; // [sp+28h] [bp-40h]@2 int v22; // [sp+2Ch] [bp-3Ch]@2 char v23[4]; // [sp+30h] [bp-38h]@2 int v24; // [sp+34h] [bp-34h]@2 int v25; // [sp+38h] [bp-30h]@2 int v26; // [sp+3Ch] [bp-2Ch]@2 int v27; // [sp+40h] [bp-28h]@2 char v28; // [sp+44h] [bp-24h]@6 int v29; // [sp+45h] [bp-23h]@6 __int16 v30; // [sp+49h] [bp-1Fh]@6 __int16 v31; // [sp+4Bh] [bp-1Dh]@6 int v32; // [sp+4Dh] [bp-1Bh]@6 int v33; // [sp+51h] [bp-17h]@6 unsigned int v34; // [sp+58h] [bp-10h]@1 int v35; // [sp+64h] [bp-4h]@1 int v36; // [sp+68h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v4 = a2; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_StartGuildTournament"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_StartGuildTournament"; dword_750AB8[dword_750CB8++] = -1; v35 = 0; if ( !*(_DWORD *)(a2 + 122) ) goto LABEL_8; v22 = 0; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)v18 = 0; strncpy(v18, a4, 0x14u); v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)v23 = 0; strncpy(v23, a4 + 33, 0x14u); v17 = atoi(a4 + 66); if ( v17 < 1 ) LOWORD(v17) = 1; v5 = sub_54E5A0(&unk_13253630, (int)v18); v6 = sub_54E5A0(&unk_13253630, (int)v23); v7 = v6; if ( !v5 || !v6 ) { v4 = a2; LABEL_8: v16 = (int)"Fail CreateGuildtournamentSystem"; v15 = v4; goto LABEL_9; } v8 = *(_DWORD *)v5; v30 = 0; v9 = *(int (__thiscall **)(_DWORD))(v8 + 2072); v31 = v17; v28 = 0; v29 = 65536; v10 = v9(v5); v11 = *(_DWORD *)v7; v32 = v10; v33 = (*(int (__thiscall **)(int))(v11 + 2072))(v7); sub_4760D0((int)&v28); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); sub_47BD60(v12, 0); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); sub_47BD60(v13, 0); v16 = (int)"CreateGuildtournamentStart"; v15 = a2; LABEL_9: sub_419E00(v15, v16); --dword_750CB8; v35 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_StartGuildTournament"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041F6F0) -------------------------------------------------------- int __stdcall sub_41F6F0(int a1, int a2, int a3, const char *a4) { int v4; // eax@2 int v6; // [sp-8h] [bp-3Ch]@3 char v7[4]; // [sp+10h] [bp-24h]@2 int v8; // [sp+14h] [bp-20h]@2 int v9; // [sp+18h] [bp-1Ch]@2 int v10; // [sp+1Ch] [bp-18h]@2 int v11; // [sp+20h] [bp-14h]@2 unsigned int v12; // [sp+24h] [bp-10h]@1 int v13; // [sp+30h] [bp-4h]@1 int v14; // [sp+34h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_FlagCapture"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_FlagCapture"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( *(_DWORD *)(a2 + 122) && (v11 = 0, v10 = 0, v9 = 0, v8 = 0, *(_DWORD *)v7 = 0, strncpy(v7, a4, 0x14u), (v4 = sub_54E670(&unk_13253630, (int)v7)) != 0) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 2352))(a2, *(_WORD *)(v4 + 4)); v6 = (int)"FlagCapture"; } else { v6 = (int)"Fail FlagCapture"; } sub_419E00(a2, v6); --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_FlagCapture"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0041F800) -------------------------------------------------------- int __stdcall sub_41F800(int a1, int a2, int a3, const char *a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // eax@3 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+2Ch] [bp+Ch]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_UseGuildSkill"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_UseGuildSkill"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = *(void **)(a2 + 122); if ( v5 ) { v9 = atoi(a4); if ( sub_4627E0(v5) ) { v6 = sub_4627E0(v5); sub_47AAA0((void *)v6, v4, v9); } v8 = (int)"Soccess ac_UseGuildSkill"; } else { v8 = (int)"Fail ac_UseGuildSkill"; } sub_419E00(v4, v8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_UseGuildSkill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041F8E0) -------------------------------------------------------- int __stdcall sub_41F8E0(int a1, void *a2, int a3, const char *a4) { int v4; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ObserverLinkTo"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ObserverLinkTo"; dword_750AB8[dword_750CB8++] = -1; v4 = atoi(a4); sub_477BB0(a2, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ObserverLinkTo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041F990) -------------------------------------------------------- int __stdcall sub_41F990(int a1, void *a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ObserverLinkTo"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ObserverLinkTo"; dword_750AB8[dword_750CB8++] = -1; sub_474E90(a2, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ObserverLinkTo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041FA30) -------------------------------------------------------- int __stdcall sub_41FA30(int a1, int a2, int a3, const char *a4) { signed int v4; // eax@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_EditSpeed"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_EditSpeed"; dword_750AB8[dword_750CB8++] = -1; if ( atoi(a4) >= 1000 ) v4 = atoi(a4); else v4 = 1000; sub_55E150(a2, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_EditSpeed"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041FB00) -------------------------------------------------------- int __stdcall sub_41FB00(int a1, int a2, int a3, char *a4) { int v4; // eax@1 void (__stdcall *v5)(_DWORD); // edx@1 int v7; // [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 v9 = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v7 = sub_419F30(a4); v4 = sub_419F30(a4 + 33); v5 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 1632); v8 = v4; v5(&v7); --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041FBD0) -------------------------------------------------------- int __stdcall sub_41FBD0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GhostRemove"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GhostRemove"; dword_750AB8[dword_750CB8++] = -1; sub_494EA0(*(void **)(a2 + 122), 946); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GhostRemove"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0041FC80) -------------------------------------------------------- int __stdcall sub_41FC80(int a1, int a2, int a3, int a4) { __time32_t v4; // ecx@1 int v6; // [sp+Ch] [bp-94h]@1 char v7; // [sp+10h] [bp-90h]@1 unsigned int v8; // [sp+90h] [bp-10h]@1 int v9; // [sp+9Ch] [bp-4h]@1 int v10; // [sp+A0h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_CurTime"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_CurTime"; v4 = dword_750CB8; dword_750AB8[dword_750CB8++] = -1; v9 = 0; sub_44FB50(v4, (int)&v6); sprintf( &v7, "%d.%d.%d %d:%d[%u]", (unsigned __int8)dword_AA0BC8 + 2000, ((unsigned int)dword_AA0BC8 >> 8) & 0x1F, ((unsigned int)dword_AA0BC8 >> 13) & 0x3F, ((unsigned int)dword_AA0BC8 >> 19) & 0x3F, (unsigned int)dword_AA0BC8 >> 25, v6); sub_419E00(a2, (int)&v7); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_CurTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0BC8: using guessed type int dword_AA0BC8; //----- (0041FDA0) -------------------------------------------------------- int __stdcall sub_41FDA0(int a1, int a2, int a3, int a4) { int v4; // eax@1 int v5; // ebx@1 int v6; // eax@5 int v8; // [sp-8h] [bp-ACh]@2 char v9; // [sp+10h] [bp-94h]@3 char v10; // [sp+14h] [bp-90h]@1 unsigned int v11; // [sp+94h] [bp-10h]@1 int v12; // [sp+A0h] [bp-4h]@1 int v13; // [sp+A4h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_AmIBusy"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_AmIBusy"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v4 = sub_498E60((int)&dword_D64C510); sprintf(&v10, "TotalKQList : %d", v4); sub_419E00(a2, (int)&v10); v5 = *(_DWORD *)(*(_DWORD *)(a2 + 122) + 60); if ( v5 == -1 ) { v8 = (int)"No KQ"; } else { if ( sub_494970(&dword_D61E090, v5, (int)&v9) ) { v6 = sub_498FE0(&dword_D64C510, v5, a2); sprintf(&v10, "MyKill : %d", v6); v8 = (int)&v10; } else { sprintf(&v10, "KQElement[%d] not found", v5); v8 = (int)&v10; } } sub_419E00(a2, v8); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_AmIBusy"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D61E090: using guessed type int dword_D61E090; //----- (0041FF00) -------------------------------------------------------- int __stdcall sub_41FF00(int a1, void *a2, int a3, int a4) { int v4; // eax@1 int v5; // edi@3 int v6; // eax@3 int v8; // [sp-4h] [bp-20h]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_KnockBack"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_KnockBack"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1884))(a2); if ( v4 ) { v5 = dword_877858; (*(void (__thiscall **)(void *, int, _DWORD, signed int, int, int, _DWORD, signed int, signed int, signed int, _DWORD))(*(_DWORD *)a2 + 1592))( a2, v4, *(_DWORD *)(*(_DWORD *)dword_877858 + 34), 1, dword_877858, dword_14D129E8, 0, -1, 1000, 5, 0); sub_401900(a2, *(_DWORD *)(*(_DWORD *)v5 + 34)); v6 = *(_DWORD *)(v5 + 48); if ( v6 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 1008))( a2, *(_DWORD *)(*(_DWORD *)v5 + 34), *(_DWORD *)(v6 + 43), 1); sub_4055D0(a2, *(_DWORD *)(*(_DWORD *)v5 + 34), *(_DWORD *)(*(_DWORD *)(v5 + 48) + 43), 1); } v8 = (int)"AmpersandCommand::ac_KnockBack"; } else { v8 = (int)"AmpersandCommand::ac_KnockBack"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 877858: using guessed type int dword_877858; // 14D129E8: using guessed type int dword_14D129E8; //----- (00420020) -------------------------------------------------------- int __stdcall sub_420020(int a1, FILE *a2, int a3, char *a4) { int v4; // ebx@3 FILE *v5; // eax@4 int v6; // esi@5 int v7; // edi@5 char v8; // al@9 int v9; // edi@16 char v10; // al@22 char v11; // al@26 int v13; // [sp-8h] [bp-38h]@24 int v14; // [sp-4h] [bp-34h]@2 FILE *v15; // [sp-4h] [bp-34h]@24 int v16; // [sp+14h] [bp-1Ch]@3 int v17; // [sp+18h] [bp-18h]@1 int v18; // [sp+1Ch] [bp-14h]@3 int v19; // [sp+20h] [bp-10h]@3 FILE *v20; // [sp+3Ch] [bp+Ch]@4 int i; // [sp+44h] [bp+14h]@5 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_PartBlock"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_PartBlock"; dword_750AB8[dword_750CB8++] = -1; v17 = *(int *)((char *)&a2[3]._bufsiz + 2); if ( v17 ) { v18 = sub_419F30(a4); v19 = sub_419F30(a4 + 33); v4 = sub_419F30(a4 + 66); v16 = v4; if ( v4 <= 100 ) { v5 = fopen("PartBlock.txt", "w"); v20 = v5; if ( v5 ) { fputs("MoveBlock\n", v5); v6 = -v4; v7 = -v4; for ( i = -v4; v7 <= v4; ++v7 ) { for ( ; v6 <= v4; ++v6 ) { if ( sub_49D1B0(*(void **)(v17 + 20), v6 + v18, v7 + v19) ) { if ( v6 || (v8 = 64, v7) ) v8 = 42; } else { if ( v6 || (v8 = 58, v7) ) v8 = 46; } sub_654AB0(v8, v20); } sub_654AB0(10, v20); v6 = -v4; } sub_654AB0(10, v20); fputs("AttackBlock\n", v20); v9 = v6; if ( v6 <= v4 ) { while ( 1 ) { if ( v6 <= v4 ) { do { if ( sub_49D140(*(void **)(v17 + 20), v6 + v18, v9 + v19) ) { if ( v6 || (v10 = 64, v9) ) v10 = 42; v15 = v20; v13 = v10; } else { if ( v6 || (v11 = 58, v9) ) v11 = 46; v15 = v20; v13 = v11; } sub_654AB0(v13, v15); ++v6; } while ( v6 <= v16 ); v4 = v16; } sub_654AB0(10, v20); ++v9; if ( v9 > v4 ) break; v6 = i; } } fclose(v20); } } --dword_750CB8; v14 = (int)"AmpersandCommand::ac_PartBlock"; } else { --dword_750CB8; v14 = (int)"AmpersandCommand::ac_PartBlock"; } return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00420260) -------------------------------------------------------- int __stdcall sub_420260(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_InventoryView"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_InventoryView"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a2 + 2648))(0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_InventoryView"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00420310) -------------------------------------------------------- int __stdcall sub_420310(int a1, int a2, int a3, int a4) { char v4; // al@1 int v6; // [sp-8h] [bp-28h]@2 int v7; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_DebugLogging"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_DebugLogging"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_419F30((const char *)(a4 + 33)); if ( strcmp((const char *)a4, "BalanceLog") ) { v7 = (int)"All of log changed"; byte_7493ED = v4; v6 = a2; } else { byte_14D159AC = v4; v7 = (int)"BalanceLog changed"; v6 = a2; } sub_419E00(v6, v7); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_DebugLogging"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D159AC: using guessed type char byte_14D159AC; //----- (00420410) -------------------------------------------------------- int __stdcall sub_420410(int a1, int a2, int a3, int a4) { signed int v4; // edx@1 char v5; // al@3 int v6; // edx@5 char v7; // al@8 int v8; // edx@8 __int16 v9; // ax@10 int v10; // eax@10 char v12[4]; // [sp+10h] [bp-10h]@3 int v13; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_TaiSai_DiceFix"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_TaiSai_DiceFix"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; v13 = 0; if ( a3 == 2 ) { do { v5 = *(&v12[v4] + a4 - (_DWORD)v12) - 48; v12[v4] = v5; if ( (unsigned __int8)(v5 - 1) > 5u ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 1924))("1 ~ 6 »çÀÌÀÇ °ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä."); goto LABEL_14; } ++v4; } while ( v4 < 3 ); v6 = *(_DWORD *)a2; if ( *(_DWORD *)(a2 + 122) ) { v7 = (*(int (__thiscall **)(int))(v6 + 304))(a2); v8 = *(_DWORD *)a2; if ( v7 ) { v9 = (*(int (__thiscall **)(int))(v8 + 312))(a2); v10 = sub_54DE90(&unk_13253630, v9); if ( v10 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v10 + 460))(v10, v12) ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1924))(a2, "ÁÖ»çÀ§ ¼ÂÆÃ¿¡ ½ÇÆÐ ÇÏ¿´½À´Ï´Ù."); } else { (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)a2 + 1924))(a2, &unk_6A3D60); } } else { (*(void (__thiscall **)(int, _UNKNOWN *))(v8 + 1924))(a2, &unk_6A3D88); } } else { (*(void (__thiscall **)(int, _UNKNOWN *))(v6 + 1924))(a2, &unk_6A3DD0); } LABEL_14: --dword_750CB8; } else { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 1924))("111 ~ 666 »çÀÌÀÇ ÁÖ»çÀ§¸¦ ºÙ¿©¼­ ÀÔ·ÂÇϼ¼¿ä."); --dword_750CB8; } v13 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_TaiSai_DiceFix"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 420410: using guessed type char var_10[4]; //----- (004205A0) -------------------------------------------------------- int __stdcall sub_4205A0(int a1, int a2, int a3, int a4) { int v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 char v7; // al@3 int v8; // edx@3 __int16 v9; // ax@5 int v10; // eax@5 signed int v11; // edx@13 char v12; // al@14 unsigned __int16 v13; // ax@16 int v15; // [sp-4h] [bp-28h]@2 char v16[4]; // [sp+14h] [bp-10h]@14 int v17; // [sp+20h] [bp-4h]@1 int v18; // [sp+30h] [bp+Ch]@5 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_TaiSai_DiceProbability"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = *(_DWORD *)(a2 + 122) == 0; v6 = *(_DWORD *)a2; v17 = 0; if ( v5 ) { (*(void (__thiscall **)(int, _UNKNOWN *))(v6 + 1924))(a2, &unk_6A3DD0); v15 = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; } else { v7 = (*(int (__thiscall **)(int))(v6 + 304))(a2); v8 = *(_DWORD *)a2; if ( v7 ) { v9 = (*(int (__thiscall **)(int))(v8 + 312))(a2); v10 = sub_54DE90(&unk_13253630, v9); v18 = v10; if ( v10 ) { if ( a3 == 1 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v10 + 464))(v10, 0, 0) ) (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3E98); v15 = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; } else { if ( a3 == 3 ) { v11 = 0; do { v12 = *(&v16[v11] + a4 - (_DWORD)v16) - 48; v16[v11] = v12; if ( (unsigned __int8)(v12 - 1) > 5u ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1924))(v4, "1 ~ 6 »çÀÌÀÇ °ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä."); goto LABEL_18; } ++v11; } while ( v11 < 3 ); v13 = atoi((const char *)(a4 + 33)); if ( !(unsigned __int8)(*(int (__stdcall **)(char *, _DWORD))(*(_DWORD *)v18 + 464))(v16, v13) ) (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3E38); LABEL_18: v15 = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; } else { (*(void (__thiscall **)(_DWORD, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3E5C); v15 = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; } } } else { (*(void (__thiscall **)(_DWORD, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3D60); v15 = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; } } else { (*(void (__thiscall **)(int, _UNKNOWN *))(v8 + 1924))(a2, &unk_6A3D88); v15 = (int)"AmpersandCommand::ac_TaiSai_DiceProbability"; } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 4205A0: using guessed type char var_10[4]; //----- (00420760) -------------------------------------------------------- int __stdcall sub_420760(int a1, int a2, int a3, int a4) { int v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 signed int v7; // edi@7 char v8; // cl@8 int v9; // eax@10 int v11; // [sp-4h] [bp-28h]@2 char v12[4]; // [sp+14h] [bp-10h]@8 int v13; // [sp+20h] [bp-4h]@1 int v14; // [sp+30h] [bp+Ch]@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceFix"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceFix"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = *(_DWORD *)(a2 + 122) == 0; v6 = *(_DWORD *)a2; v13 = 0; if ( v5 ) { (*(void (__thiscall **)(int, _UNKNOWN *))(v6 + 1924))(a2, &unk_6A3DD0); v11 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceFix"; } else { v14 = (*(int (__thiscall **)(int))(v6 + 1884))(a2); if ( v14 ) { if ( a3 == 2 ) { v7 = 0; do { v8 = *(&v12[v7] + a4 - (_DWORD)v12) - 48; v12[v7] = v8; if ( (unsigned __int8)(v8 - 1) > 5u ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1924))(v4, "1 ~ 6 »çÀÌÀÇ °ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä."); goto LABEL_15; } ++v7; } while ( v7 < 3 ); v9 = sub_612360((int)&dword_14D41B48, *(_WORD *)(v14 + 4)); if ( v9 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v9 + 168))(v9, v12) ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1924))(v4, "ÁÖ»çÀ§ ¼ÂÆÃ¿¡ ½ÇÆÐ ÇÏ¿´½À´Ï´Ù."); } else { (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3EEC); } LABEL_15: v11 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceFix"; } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1924))( v4, "111 ~ 666 »çÀÌÀÇ ÁÖ»çÀ§¸¦ ºÙ¿©¼­ ÀÔ·ÂÇϼ¼¿ä."); v11 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceFix"; } } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1924))(v4, "ÁÖ»çÀ§ °ÔÀӱ⸦ Ŭ¸¯ ÇÑ ÈÄ »ç¿ëÇϼ¼¿ä."); v11 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceFix"; } } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 420760: using guessed type char var_10[4]; //----- (004208E0) -------------------------------------------------------- int __stdcall sub_4208E0(int a1, int a2, int a3, int a4) { int v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 int v7; // eax@3 int v8; // eax@5 signed int v9; // edx@13 char v10; // al@14 unsigned __int16 v11; // ax@16 int v13; // [sp-4h] [bp-28h]@2 char v14[4]; // [sp+14h] [bp-10h]@14 int v15; // [sp+20h] [bp-4h]@1 int v16; // [sp+30h] [bp+Ch]@5 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = *(_DWORD *)(a2 + 122) == 0; v6 = *(_DWORD *)a2; v15 = 0; if ( v5 ) { (*(void (__thiscall **)(int, _UNKNOWN *))(v6 + 1924))(a2, &unk_6A3DD0); v13 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; } else { v7 = (*(int (__thiscall **)(int))(v6 + 1884))(a2); if ( v7 ) { v8 = sub_612360((int)&dword_14D41B48, *(_WORD *)(v7 + 4)); v16 = v8; if ( v8 ) { if ( a3 == 1 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v8 + 172))(v8, 0, 0) ) (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3E98); v13 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; } else { if ( a3 == 3 ) { v9 = 0; do { v10 = *(&v14[v9] + a4 - (_DWORD)v14) - 48; v14[v9] = v10; if ( (unsigned __int8)(v10 - 1) > 5u ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1924))(v4, "1 ~ 6 »çÀÌÀÇ °ªÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä."); goto LABEL_18; } ++v9; } while ( v9 < 3 ); v11 = atoi((const char *)(a4 + 33)); if ( !(unsigned __int8)(*(int (__stdcall **)(char *, _DWORD))(*(_DWORD *)v16 + 172))(v14, v11) ) (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3E38); LABEL_18: v13 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; } else { (*(void (__thiscall **)(_DWORD, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3E5C); v13 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; } } } else { (*(void (__thiscall **)(_DWORD, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3EEC); v13 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1924))(a2, "ÁÖ»çÀ§ °ÔÀӱ⸦ Ŭ¸¯ ÇÑ ÈÄ »ç¿ëÇϼ¼¿ä."); v13 = (int)"AmpersandCommand::ac_Gamble_TaiSai_DiceProbability"; } } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 4208E0: using guessed type char var_10[4]; //----- (00420AA0) -------------------------------------------------------- int __stdcall sub_420AA0(int a1, int a2, int a3, int a4) { int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 __int16 v6; // ax@1 int v7; // eax@1 int v8; // edi@1 int v9; // ST08_4@2 unsigned __int16 v10; // ax@2 char v12; // [sp+Ch] [bp-2Ch]@2 char v13; // [sp+18h] [bp-20h]@2 int v14; // [sp+24h] [bp-14h]@1 int v15; // [sp+28h] [bp-10h]@2 int v16; // [sp+34h] [bp-4h]@1 v14 = (int)"AmpersandCommand::ac_makeraid"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_makeraid"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_makeraid"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1360); v16 = 0; v6 = v5(a2); v7 = sub_5CB1E0(v6, 0); v8 = v7; if ( v7 ) { sub_639C10((void *)v7, (int)&v12); (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3FB0); sub_639BF0((void *)v8, (int)&v13); sub_639A70((int)&v13); sub_639EC0((int)&v13, (int)&v15); sub_63A600((void *)v8, v15, 1u, 0, (int)&a2); v9 = *(_WORD *)(v8 + 4); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4); sub_484580((int)&unk_D714FF8, v10, 0, v9, 3); } else { (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v4 + 1924))(v4, &unk_6A3F9C); } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_makeraid"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00420BF0) -------------------------------------------------------- int __stdcall sub_420BF0(int a1, int a2, int a3, int a4) { signed int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // ebx@1 int v7; // eax@2 unsigned int v8; // esi@5 unsigned int v10; // [sp+10h] [bp-68h]@5 int v11[20]; // [sp+14h] [bp-64h]@6 int v12; // [sp+64h] [bp-14h]@1 char v13; // [sp+68h] [bp-10h]@2 int v14; // [sp+74h] [bp-4h]@1 v12 = (int)"AmpersandCommand::ac_outraid"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_outraid"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_outraid"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2692); v14 = 0; v6 = v5(a2); if ( v6 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( sub_63A7F0((void *)v6, v7, (int)&v13) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 2696))(a2, 0); (*(void (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)a2 + 1924))(a2, &unk_6A3FF0); } if ( (unsigned __int8)sub_639A40(v6) < 2u ) { sub_5CBAC0((int)&v10, *(_WORD *)(v6 + 4)); v8 = 0; if ( v10 ) { do { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v11[v8] + 2696))(0); (*(void (__stdcall **)(signed int))(*(_DWORD *)v11[v8++] + 1396))(65535); } while ( v8 < v10 ); } sub_63A360((void *)v6, (int)&v13); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1924))(a2, "·¹À̵å ÇØÃ¼"); v4 = -1; } } --dword_750CB8; v14 = v4; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_outraid"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 420BF0: using guessed type int var_64[20]; //----- (00420D40) -------------------------------------------------------- int __stdcall sub_420D40(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ST08_4@1 int v6; // ebx@1 int v7; // ecx@2 _BYTE *v8; // esi@2 int v9; // eax@2 int v10; // esi@2 void *v11; // ecx@3 char v13; // [sp+10h] [bp-110h]@3 unsigned int v14; // [sp+110h] [bp-10h]@1 int v15; // [sp+11Ch] [bp-4h]@1 int v16; // [sp+120h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_PlayInstanceDungeon"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_PlayInstanceDungeon"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 122); v5 = *(_DWORD *)(v4 + 12); v15 = 0; v6 = sub_483840((int)&unk_CFCF380, v5, 1); if ( v6 ) { v7 = *(_DWORD *)(v4 + 12); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v8 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v8 = *(_DWORD *)v7; *((_DWORD *)v8 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v7 + 8); v8[12] = 0; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v10 = sub_4855F0(&unk_D714FF8, v8, v9, 0, 1); if ( v10 ) { sub_4D5720(&v13); v11 = *(void **)(v10 + 68); LOBYTE(v15) = 1; sub_5071A0(v11, v6 + 35, &v13, v10); LOBYTE(v15) = 0; nullsub_2(&v13); } } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_PlayInstanceDungeon"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (00420E90) -------------------------------------------------------- int __stdcall sub_420E90(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ebx@2 int v6; // eax@2 char v7; // al@2 signed int v8; // eax@3 int v9; // ecx@7 int v10; // ecx@8 int v11; // ecx@9 void *v12; // edi@13 int v13; // eax@15 int v14; // eax@18 int v15; // ebx@18 signed int v16; // eax@18 int v17; // edi@22 int v18; // ecx@24 int v19; // eax@27 char v20; // al@27 void *v21; // edi@29 int v22; // eax@31 int v24; // [sp+14h] [bp-14h]@7 int v25; // [sp+18h] [bp-10h]@1 int v26; // [sp+24h] [bp-4h]@1 signed int v27; // [sp+34h] [bp+Ch]@6 signed int v28; // [sp+34h] [bp+Ch]@21 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_AllLearnSKill"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_AllLearnSKill"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; v25 = 0; sub_56E9E0((int)&v25); v4 = a2; while ( sub_50E7B0((int)&unk_132577A0, (int)&v25) ) { v5 = sub_50E7D0((int)&unk_132577A0, (int)&v25); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1180))(v4); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 56))(v6); if ( sub_63D810((int)&unk_14D130B8, *(_DWORD *)(*(_DWORD *)(v5 + 4) + 267), v7) == 1 ) { v8 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(v5 + 4) + 2)); v8 = v8 == -1 ? 65535 : (unsigned __int16)v8; v27 = v8; v8 = (unsigned __int16)v8; if ( (unsigned __int16)v8 < (unsigned int)dword_14D20894 ) { v9 = dword_14D21184 + 40 * v8; v24 = v9; if ( v9 ) { v10 = *(_DWORD *)v9; if ( v10 ) { v11 = *(_WORD *)v10; if ( (_WORD)v11 == (_WORD)v27 ) { if ( *(_DWORD *)(*(_DWORD *)v24 + 127) <= (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4) && !sub_445FC0((void *)(v4 + 84388), **(_WORD **)(v5 + 4)) ) { v12 = off_849C18; *(_WORD *)off_849C18 = 18433; *((_WORD *)v12 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v12 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v12 + 6) = **(_WORD **)(v5 + 4); *(_WORD *)((char *)v12 + 15) = -1; *((_BYTE *)v12 + 14) = 0; if ( sub_4C81E0(&off_849C18, 17) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"sp_NC_SKILL_PRODUCTFIELD_REQ Learn Skill : Packet Too Long", 17); } } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v8 + v11); } } } } } } sub_56E9E0((int)&v25); while ( sub_582B30((int)&dword_13258088, (int)&v25) ) { v14 = sub_583910((int)&dword_13258088, (unsigned int *)&v25); v15 = v14; v16 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v14 + 2)); if ( v16 == -1 ) v16 = 65535; else v16 = (unsigned __int16)v16; v28 = v16; v16 = (unsigned __int16)v16; if ( (unsigned __int16)v16 < (unsigned int)dword_14D20894 ) { v17 = dword_14D21184 + 40 * v16; if ( v17 ) { if ( *(_DWORD *)v17 ) { v18 = **(_WORD **)v17; if ( (_WORD)v18 == (_WORD)v28 ) { if ( *(_DWORD *)(*(_DWORD *)v17 + 127) <= (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4) ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1180))(v4); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 56))(v19); if ( sub_63D810((int)&unk_14D130B8, *(_DWORD *)(*(_DWORD *)v17 + 207), v20) == 1 ) { if ( !((unsigned __int8)(1 << *(_WORD *)v15 % 8) & *(_BYTE *)(((signed int)*(_WORD *)v15 >> 3) + *(_DWORD *)(v4 + 84424))) ) { v21 = off_849C18; *(_WORD *)off_849C18 = 18433; *((_WORD *)v21 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v21 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v21 + 6) = *(_WORD *)v15; *(_WORD *)((char *)v21 + 15) = -1; *((_BYTE *)v21 + 14) = 1; if ( sub_4C81E0(&off_849C18, 17) ) { v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); } else { sub_639100(&unk_86DDD8, (int)"sp_NC_SKILL_PRODUCTFIELD_REQ Learn Skill : Packet Too Long", 17); } } } } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v18 + 10000 * v16); } } } } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_AllLearnSKill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258088: using guessed type int dword_13258088; // 14D16430: using guessed type int dword_14D16430; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (004212C0) -------------------------------------------------------- int __stdcall sub_4212C0(int a1, int a2, int a3, const char *a4) { int v4; // eax@1 int v5; // edi@4 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_LevelUp"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_LevelUp"; v4 = 1; dword_750AB8[dword_750CB8++] = -1; if ( a3 == 2 ) v4 = atoi(a4); if ( v4 > 0 ) { v5 = v4; do { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2716))(a2); --v5; } while ( v5 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_LevelUp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421390) -------------------------------------------------------- int __stdcall sub_421390(int a1, void *a2, int a3, int a4) { int v4; // esi@1 char *v5; // eax@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_TestLink"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_TestLink"; dword_750AB8[dword_750CB8++] = -1; v4 = (int)off_849C18; v5 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 31750; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 1) = 0; *(_DWORD *)v5 = 0; strncpy(v5, "RouCos02", 0xCu); sub_5594E0(a2, v4, 39, 65535); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_TestLink"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421460) -------------------------------------------------------- int __stdcall sub_421460(int a1, int a2, int a3, const char *a4) { void *v4; // edi@2 int v5; // ST08_4@4 int v6; // eax@4 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildTournamentItemEffect"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GuildTournamentItemEffect"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && (v4 = *(void **)(a2 + 122)) != 0 ) { if ( sub_4627E0(*(void **)(a2 + 122)) ) { v5 = atoi(a4); v6 = sub_4627E0(v4); sub_47B270((void *)v6, 0, a2, v5); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GuildTournamentItemEffect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421540) -------------------------------------------------------- int __stdcall sub_421540(int a1, int a2, int a3, int a4) { int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ItemActionCoolTimeReset"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ItemActionCoolTimeReset"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1488))(a2) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1488))(a2); sub_5CECB0(v4); sub_419E00(a2, (int)"Item Action CoolTime Reset"); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ItemActionCoolTimeReset"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421610) -------------------------------------------------------- void __stdcall sub_421610(int a1, int a2, int a3, const char *a4) { void *v4; // esi@2 int v5; // eax@4 if ( a2 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 2150; *(_DWORD *)((char *)v4 + 22) = 0; *(_DWORD *)((char *)v4 + 18) = 0; *(_DWORD *)((char *)v4 + 14) = 0; *(_DWORD *)((char *)v4 + 10) = 0; *(_DWORD *)((char *)v4 + 6) = 0; strncpy((char *)v4 + 6, a4, 0x14u); *(_DWORD *)((char *)v4 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); if ( sub_4C81E0(&off_849C18, 26) ) { v5 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", 26); } } } // 14D12A00: using guessed type int dword_14D12A00; //----- (004216B0) -------------------------------------------------------- int __stdcall sub_4216B0(int a1, void *a2, int a3, char *a4) { int v5; // [sp+Ch] [bp-404h]@1 unsigned int v6; // [sp+40Ch] [bp-4h]@1 int v7; // [sp+410h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; LOWORD(v5) = (v5 & 0x3FF | 0x3000) & 0xFC48 | 0x48; BYTE3(v5) = sub_419F30(a4); BYTE2(v5) = sub_419F30(a4 + 33); return sub_51A190(a2, (int)&v5, 4, a1); } // 86FEB8: using guessed type int __security_cookie; //----- (00421750) -------------------------------------------------------- int __stdcall sub_421750(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_MobItemDrop"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_MobItemDrop"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_MobItemDrop"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004217A0) -------------------------------------------------------- int __stdcall sub_4217A0(int a1, int a2, signed int a3, const char *a4) { int v4; // eax@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_GetMoney"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_GetMoney"; dword_750AB8[dword_750CB8++] = -1; if ( a3 >= 2 ) { v4 = atoi(a4); if ( v4 ) { if ( a2 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 1936))(v4); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_GetMoney"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421860) -------------------------------------------------------- int __stdcall sub_421860(int a1, int a2, int a3, unsigned __int8 *a4) { signed int v4; // eax@3 int v5; // eax@6 int v6; // eax@8 int v7; // ecx@10 int v8; // eax@12 int v10; // [sp-8h] [bp-D4h]@5 int v11; // [sp+10h] [bp-BCh]@6 __int16 v12; // [sp+14h] [bp-B8h]@3 char v13; // [sp+18h] [bp-B4h]@14 int v14; // [sp+98h] [bp-34h]@14 int v15; // [sp+9Ch] [bp-30h]@14 int v16; // [sp+A0h] [bp-2Ch]@14 char v17; // [sp+A4h] [bp-28h]@14 unsigned int v18; // [sp+BCh] [bp-10h]@1 int v19; // [sp+C8h] [bp-4h]@1 int v20; // [sp+CCh] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_FindNPC"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_FindNPC"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( a2 ) { v4 = sub_639620(&unk_14D16018, a4); v12 = v4; if ( v4 != -1 && (_WORD)v4 != -1 && (v5 = sub_418D40((int)&unk_14D159B0, v4), (v11 = v5) != 0) && *(_DWORD *)v5 ) { v6 = sub_54E740(&unk_13253630, v12); if ( v6 ) { v7 = *(_DWORD *)(v6 + 122); if ( v7 ) { v8 = *(_DWORD *)(v6 + 102); if ( v8 ) { v14 = *(_DWORD *)v7; v15 = *(_DWORD *)(v7 + 4); v16 = *(_DWORD *)(v7 + 8); v17 = 0; sprintf(&v13, "%s, %s, %d, %d", *(_DWORD *)v11 + 34, &v14, *(_DWORD *)v8, *(_DWORD *)(v8 + 4)); v10 = (int)&v13; } else { v10 = (int)"NPC Coord Data Error"; } } else { v10 = (int)"NPC Field Data Error"; } } else { v10 = (int)"Not Find NPC"; } } else { v10 = (int)"Invalid NPC IndexName"; } sub_419E00(a2, v10); --dword_750CB8; } else { --dword_750CB8; } v19 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_FindNPC"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00421A00) -------------------------------------------------------- int __thiscall sub_421A00(void *this, int a2, int a3, int a4, char *a5) { int v5; // esi@1 signed int v6; // eax@4 int v7; // edi@7 int v8; // eax@7 int v10; // [sp-30h] [bp-54h]@11 int v11; // [sp-2Ch] [bp-50h]@11 int v12; // [sp-28h] [bp-4Ch]@11 int v13; // [sp-24h] [bp-48h]@11 int v14; // [sp-20h] [bp-44h]@11 int v15; // [sp-1Ch] [bp-40h]@11 int v16; // [sp-18h] [bp-3Ch]@11 int v17; // [sp-14h] [bp-38h]@11 int v18; // [sp-10h] [bp-34h]@11 int v19; // [sp-Ch] [bp-30h]@11 int v20; // [sp-8h] [bp-2Ch]@11 int v21; // [sp-4h] [bp-28h]@6 int v22; // [sp+10h] [bp-14h]@1 void *v23; // [sp+14h] [bp-10h]@1 int v24; // [sp+20h] [bp-4h]@1 int v25; // [sp+30h] [bp+Ch]@3 v23 = this; v22 = (int)"AmpersandCommand::ac_RegenNPC"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_RegenNPC"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_RegenNPC"; dword_750AB8[dword_750CB8++] = -1; v5 = a3; v24 = 0; if ( a3 ) { v25 = *(_DWORD *)(a3 + 122); if ( v25 ) { v6 = sub_639620(&unk_14D16018, (unsigned __int8 *)a5); if ( v6 != -1 && (_WORD)v6 != -1 ) { v7 = atoi(a5 + 33); v8 = atoi(a5 + 66); if ( v7 <= 0 ) v7 = **(_DWORD **)(v5 + 102); if ( v8 <= 0 ) v8 = *(_DWORD *)(*(_DWORD *)(v5 + 102) + 4); v21 = 2 * **(_BYTE **)(v5 + 106); v20 = v8; v19 = v7; v18 = v25; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; strncpy((char *)&v10, a5, 0x20u); if ( sub_4C62B0(dword_D9FBF28, v25, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) ) goto LABEL_14; v21 = (int)"NPC Regen Fail"; } else { v21 = (int)"Invalid NPC IndexName"; } sub_419E00(v5, v21); LABEL_14: --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_RegenNPC"); } } --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_RegenNPC"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421B70) -------------------------------------------------------- int __stdcall sub_421B70(int a1, int a2, int a3, int a4) { int v4; // eax@3 int v5; // edi@3 int v7; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ReleaseNPC"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ReleaseNPC"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1884))(a2); v5 = v4; if ( v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1012))(v5); else sub_419E00(a2, (int)"Not NPC"); } else { sub_419E00(a2, (int)"Invaild Target Object"); } --dword_750CB8; v7 = (int)"AmpersandCommand::ac_ReleaseNPC"; } else { --dword_750CB8; v7 = (int)"AmpersandCommand::ac_ReleaseNPC"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00421C70) -------------------------------------------------------- int __thiscall sub_421C70(void *this, int a2, int a3, signed int a4, const char *a5) { int result; // eax@1 int v6; // ebx@1 int v7; // eax@3 int v8; // ecx@3 int v9; // eax@3 int v10; // edi@3 int v11; // eax@5 char v12; // cl@5 void *v13; // eax@15 int v14; // edx@15 int v15; // [sp-8h] [bp-CCh]@4 int v16; // [sp-8h] [bp-CCh]@7 char v17; // [sp+Ch] [bp-B8h]@15 int v18; // [sp+18h] [bp-ACh]@2 int v19; // [sp+1Ch] [bp-A8h]@5 int v20; // [sp+20h] [bp-A4h]@3 int v21; // [sp+24h] [bp-A0h]@3 int v22; // [sp+28h] [bp-9Ch]@3 const char *v23; // [sp+2Ch] [bp-98h]@1 void *v24; // [sp+30h] [bp-94h]@1 char v25; // [sp+34h] [bp-90h]@13 unsigned int v26; // [sp+B4h] [bp-10h]@1 int v27; // [sp+B8h] [bp-Ch]@1 int v28; // [sp+C0h] [bp-4h]@15 int v29; // [sp+C4h] [bp+0h]@1 v26 = (unsigned int)&v29 ^ __security_cookie; result = (int)&v27; v24 = this; LOWORD(v6) = 0; v23 = a5; if ( a3 ) { result = *(_DWORD *)(a3 + 122); v18 = result; if ( result ) { v7 = *(_DWORD *)(a3 + 102); v8 = *(_DWORD *)v7; v9 = *(_DWORD *)(v7 + 4); LOWORD(v10) = 0; v22 = 0; v20 = v8; v21 = v9; if ( a4 < 2 ) { v15 = (int)"&cmt [Type:0~1] [AngleXZ:0~360] [AngleY:0~90] [Dist:0~] [x] [y]"; return sub_419E00(a3, v15); } v11 = atoi(a5); v12 = v11; v19 = v11; if ( (unsigned int)v11 > 1 ) { sub_419E00(a3, (int)"Invalid Camera Move Type"); v15 = (int)"1 : ON, 0 : OFF"; return sub_419E00(a3, v15); } *(_DWORD *)(v18 + 292) = v11; if ( v11 ) { if ( v11 != 1 ) { LABEL_15: v13 = off_849C18; *(_WORD *)off_849C18 = 27668; v14 = v21; *((_BYTE *)v13 + 2) = v12; *(_DWORD *)((char *)v13 + 3) = v20; *(_WORD *)((char *)v13 + 15) = v22; *(_DWORD *)((char *)v13 + 7) = v14; *(_WORD *)((char *)v13 + 11) = v10; *(_WORD *)((char *)v13 + 13) = v6; sub_4287B0(&v17, &off_849C18, 17); v28 = 0; sub_549B60((void *)a3, (int)&v17, 1); v28 = -1; return sub_428A70(&v17); } if ( a4 < 5 ) { sub_419E00(a3, (int)"Camera Moving Type Need Default Input"); v15 = (int)"[AngleXZ:0~360] [AngleY:0~90] [Dist:0~] "; return sub_419E00(a3, v15); } v10 = (unsigned __int16)atoi(v23 + 33); v6 = (unsigned __int16)atoi(v23 + 66); v22 = (unsigned __int16)atoi(v23 + 99); if ( a4 >= 7 ) { v20 = atoi(v23 + 132); v21 = atoi(v23 + 165); } sub_419E00(a3, (int)"Camera Move ON"); sprintf(&v25, "aXZ:%d aY:%d D:%d x:%d y:%d", v10, v6, (unsigned __int16)v22, v20, v21); v16 = (int)&v25; } else { v16 = (int)"Camera Move OFF"; } sub_419E00(a3, v16); v12 = v19; goto LABEL_15; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00421EE0) -------------------------------------------------------- int __stdcall sub_421EE0(int a1, int a2, int a3, const char *a4) { int result; // eax@1 result = sub_419F30(a4); *(_DWORD *)(a2 + 161720) = result; return result; } //----- (00421F00) -------------------------------------------------------- int __stdcall sub_421F00(int a1, int a2, int a3, int a4) { int v4; // esi@1 int result; // eax@1 v4 = a2; *(_DWORD *)(a2 + 7892) = 1000000; sub_419E00(a2, (int)"StaticDamage 1mil true"); sub_55E220(a2, 1); sub_419E00(a2, (int)"IgnoreSkillCoolTime true"); sub_55E150(a2, 10000); sub_419E00(a2, (int)"EditSpeed 10x true"); *(_BYTE *)(v4 + 23824) |= 0x80u; *(_DWORD *)(a2 + 155568) = sub_55C410; sub_419E00(a2, (int)"Immortal Mode true"); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1072))(v4) + 344) = &unk_989680; sub_5488B0((void *)a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1460))(v4, &unk_989680); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 52))(v4, 1); sub_419E00(a2, (int)"MaxHP Plus 10mil true"); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1072))(v4) + 352) = &unk_989680; sub_558960((void *)a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1464))(v4, &unk_989680); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 52))(v4, 1); sub_419E00(a2, (int)"MaxSP Plus 10mil true"); *(_DWORD *)(v4 + 32703) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1264))(v4); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1268))(v4); *(_DWORD *)(a2 + 32707) = result; return result; } //----- (00422030) -------------------------------------------------------- unsigned int __stdcall sub_422030(int a1, int a2, int a3, int a4) { unsigned int result; // eax@1 int v5; // edi@2 int v6; // edi@6 int v7; // [sp+Ch] [bp-118h]@3 char v8; // [sp+20h] [bp-104h]@10 unsigned int v9; // [sp+120h] [bp-4h]@1 int v10; // [sp+124h] [bp+0h]@1 result = (unsigned int)&v10 ^ __security_cookie; v9 = (unsigned int)&v10 ^ __security_cookie; if ( a2 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2564))(a2); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5) == 12 ) { v6 = sub_419730(v5); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) == 2 ) { sprintf( &v8, "Target Info (PetNo : %d) (Mind : %.1lf) (Stress : %.1lf)", *(_DWORD *)(v6 + 161820), (double)*(unsigned int *)(v6 + 161840) / 1000.0, (double)*(unsigned int *)(v6 + 161844) / 1000.0); v7 = (int)&v8; } else { v7 = (int)"GetPetTendency : Target's Master is not Player"; } } else { v7 = (int)"GetPetTendency : No Target's Master"; } } else { v7 = (int)"GetPetTendency : Target is not Pet"; } } else { v7 = (int)"GetPetTendency : No Target"; } result = sub_419E00(a2, v7); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00422140) -------------------------------------------------------- int __stdcall sub_422140(int a1, int a2, int a3, int a4) { int result; // eax@1 int v5; // eax@2 int v6; // esi@2 int v7; // eax@6 int v8; // esi@6 int v9; // eax@10 int v10; // ebx@12 int v11; // [sp+Ch] [bp-120h]@3 int v12; // [sp+20h] [bp-10Ch]@12 char v13; // [sp+28h] [bp-104h]@14 unsigned int v14; // [sp+128h] [bp-4h]@1 int v15; // [sp+12Ch] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; result = a4; if ( a2 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2564))(a2); v6 = v5; if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5) == 12 ) { v7 = sub_419730(v6); v8 = v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 2 ) { v9 = atoi((const char *)a4); if ( v9 < (unsigned __int8)byte_1325CC98 || v9 > (unsigned __int8)byte_1325CC9C ) { sprintf( &v13, "SetPetTendency : Mind Range Over ( %d ~ %d )", (unsigned __int8)byte_1325CC98, (unsigned __int8)byte_1325CC9C); v11 = (int)&v13; } else { v12 = v9; v10 = atoi((const char *)(a4 + 33)); if ( v10 < (unsigned __int8)byte_1325CCA0 || v10 > (unsigned __int8)byte_1325CCA4 ) { sprintf( &v13, "SetPetTendency : Stress Range Over ( %d ~ %d )", (unsigned __int8)byte_1325CCA0, (unsigned __int8)byte_1325CCA4); v11 = (int)&v13; } else { sprintf( &v13, "Target Info From (PetNo : %d) (Mind : %.1lf) (Stress : %.1lf)", *(_DWORD *)(v8 + 161820), (double)*(unsigned int *)(v8 + 161840) / 1000.0, (double)*(unsigned int *)(v8 + 161844) / 1000.0); sub_419E00(a2, (int)&v13); *(_DWORD *)(v8 + 161844) = 1000 * v10; *(_DWORD *)(v8 + 161840) = 1000 * v12; sub_4D0520(v8, v12, v10); sprintf( &v13, "Target Info To (PetNo : %d) (Mind : %.1lf) (Stress : %.1lf)", *(_DWORD *)(v8 + 161820), (double)*(unsigned int *)(v8 + 161840) / 1000.0, (double)*(unsigned int *)(v8 + 161844) / 1000.0); v11 = (int)&v13; } } } else { v11 = (int)"SetPetTendency : Target's Master is not Player"; } } else { v11 = (int)"SetPetTendency : No Target's Master"; } } else { v11 = (int)"SetPetTendency : Target is not Pet"; } } else { v11 = (int)"SetPetTendency : No Target"; } result = sub_419E00(a2, v11); } return result; } // 86FEB8: using guessed type int __security_cookie; // 1325CC98: using guessed type char byte_1325CC98; // 1325CC9C: using guessed type char byte_1325CC9C; // 1325CCA0: using guessed type char byte_1325CCA0; // 1325CCA4: using guessed type char byte_1325CCA4; //----- (004223B0) -------------------------------------------------------- void __stdcall sub_4223B0(int a1, int a2, int a3, int a4) { int v4; // eax@3 char v5; // [sp+8h] [bp-118h]@3 char v6; // [sp+10h] [bp-110h]@3 unsigned int v7; // [sp+110h] [bp-10h]@1 int v8; // [sp+11Ch] [bp-4h]@3 int v9; // [sp+120h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; if ( a2 ) { if ( *(_DWORD *)(a2 + 122) ) { DNameNode::DNameNode(&v5); v8 = 0; sub_549B60((void *)a2, (int)&v5, 0); v4 = sub_428740((int)&v5); sprintf(&v6, "vanish itme count - %d ", v4); sub_419E00(a2, (int)&v6); v8 = -1; sub_427EB0(&v5); } } } // 4286F0: using guessed type int __thiscall DNameNode__DNameNode(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00422470) -------------------------------------------------------- int __stdcall sub_422470(int a1, int a2, int a3, char *a4) { int v4; // eax@3 void (__thiscall *v5)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@3 int v7; // [sp-4h] [bp-2Ch]@2 int v8; // [sp+10h] [bp-18h]@3 int v9; // [sp+14h] [bp-14h]@3 int v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v10 = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; if ( a2 ) { v8 = sub_419F30(a4); v4 = sub_419F30(a4 + 33); v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1632); v9 = v4; v5(a2, &v8, 1000, 1, 0); --dword_750CB8; v11 = -1; v7 = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; } else { --dword_750CB8; v11 = -1; v7 = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00422560) -------------------------------------------------------- int __stdcall sub_422560(int a1, int a2, int a3, char *a4) { int v4; // eax@3 void (__thiscall *v5)(_DWORD, _DWORD); // edx@3 int v7; // [sp-4h] [bp-2Ch]@2 int v8; // [sp+10h] [bp-18h]@3 int v9; // [sp+14h] [bp-14h]@3 int v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v10 = (int)"ac_CastTeleport"; sub_4675D0((int)&unk_D020420, (int)"ac_CastTeleport"); dword_7508B8[dword_750CB8] = (int)"ac_CastTeleport"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; if ( a2 ) { v8 = sub_419F30(a4); v4 = sub_419F30(a4 + 33); v5 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1748); v9 = v4; v5(a2, &v8); --dword_750CB8; v11 = -1; v7 = (int)"ac_CastTeleport"; } else { --dword_750CB8; v11 = -1; v7 = (int)"ac_CastTeleport"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00422640) -------------------------------------------------------- int __stdcall sub_422640(int a1, int a2, int a3, char *a4) { int v4; // esi@1 char v5; // bl@3 int v7; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"ac_SetObjectDirect"); dword_7508B8[dword_750CB8] = (int)"ac_SetObjectDirect"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 ) { v5 = sub_419F30(a4); LOBYTE(a2) = 1; if ( a3 == 2 ) LOBYTE(a2) = sub_419F30(a4 + 33); **(_BYTE **)(v4 + 106) = v5; sub_551650(v4, a2); --dword_750CB8; v7 = (int)"ac_SetObjectDirect"; } else { --dword_750CB8; v7 = (int)"ac_SetObjectDirect"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00422730) -------------------------------------------------------- signed int __thiscall sub_422730(int this, unsigned int a2, unsigned int a3, int a4, unsigned int a5) { unsigned int v5; // eax@1 unsigned int v6; // esi@3 unsigned int v7; // eax@3 unsigned int v8; // edx@5 int v9; // eax@8 signed int result; // eax@10 v5 = *(_DWORD *)(this + 16); if ( v5 < a2 ) sub_6517D8((int)"invalid string position"); v6 = a3; v7 = v5 - a2; if ( v7 < a3 ) v6 = v7; v8 = v6; if ( v6 >= a5 ) v8 = a5; if ( *(_DWORD *)(this + 20) < 0x10u ) v9 = this; else v9 = *(_DWORD *)this; result = sub_4189B0(a2 + v9, a4, v8); if ( !result ) { if ( v6 >= a5 ) result = v6 != a5; else result = -1; } return result; } //----- (004227A0) -------------------------------------------------------- int __stdcall sub_4227A0(size_t a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0xFFFFFFFF || (result = operator new(a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004227F0) -------------------------------------------------------- char __thiscall sub_4227F0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v2 + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v2 + 28) = *(_DWORD *)(a2 + 28); *(_DWORD *)(v2 + 32) = *(_DWORD *)(a2 + 32); *(_DWORD *)(v2 + 36) = *(_DWORD *)(a2 + 36); result = 1; } else { result = 0; } return result; } //----- (00422860) -------------------------------------------------------- char __thiscall sub_422860(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v2 + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v2 + 28) = *(_DWORD *)(a2 + 28); *(_DWORD *)(v2 + 32) = *(_DWORD *)(a2 + 32); *(_DWORD *)(v2 + 36) = *(_DWORD *)(a2 + 36); result = 1; } else { result = 0; } return result; } //----- (004228D0) -------------------------------------------------------- char __thiscall sub_4228D0(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v5 + 20); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v5 + 24); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v5 + 28); *(_DWORD *)(a2 + 32) = *(_DWORD *)(v5 + 32); *(_DWORD *)(a2 + 36) = *(_DWORD *)(v5 + 36); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (00422950) -------------------------------------------------------- char __thiscall sub_422950(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v5 + 20); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v5 + 24); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v5 + 28); *(_DWORD *)(a2 + 32) = *(_DWORD *)(v5 + 32); *(_DWORD *)(a2 + 36) = *(_DWORD *)(v5 + 36); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004229D0) -------------------------------------------------------- void *__thiscall sub_4229D0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6A2684; _LN21((char *)this + 24, 0x28u, 256, nullsub_2); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6A2518; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A2518: using guessed type int (__thiscall *off_6A2518)(void *, char); // 6A2684: using guessed type int (__thiscall *off_6A2684)(void *, char); //----- (00422A60) -------------------------------------------------------- int __thiscall sub_422A60(int this) { int v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_((void *)(this + 196), 0x1Au, 4, (int)sub_419140, nullsub_2); _eh_vector_constructor_iterator_((void *)(v1 + 384), 0x24u, 4, (int)sub_419140, nullsub_2); sub_4D5720((void *)(v1 + 528)); sub_4D5720((void *)(v1 + 784)); sub_498C70(v1 + 1040); return v1; } //----- (00422B10) -------------------------------------------------------- int __thiscall sub_422B10(void *this) { void *v1; // esi@1 v1 = this; sub_496020((int)((char *)this + 1040)); nullsub_2((char *)v1 + 784); nullsub_2((char *)v1 + 528); _LN21((char *)v1 + 384, 0x24u, 4, nullsub_2); return _LN21((char *)v1 + 196, 0x1Au, 4, nullsub_2); } //----- (00422BB0) -------------------------------------------------------- int __stdcall sub_422BB0(int a1, int a2, int a3, int a4) { int v4; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // eax@4 bool v8; // zf@4 int v9; // eax@4 void *v10; // ecx@5 int v11; // edx@7 int v12; // eax@7 _BYTE *v13; // eax@7 int v14; // ecx@7 int v15; // ST10_4@7 int v16; // ST0C_4@7 void (__thiscall *v17)(_DWORD, _DWORD); // edx@7 __int16 v19; // [sp+16h] [bp-72h]@3 int v20; // [sp+24h] [bp-64h]@7 int v21; // [sp+28h] [bp-60h]@7 int v22; // [sp+2Ch] [bp-5Ch]@3 int v23; // [sp+30h] [bp-58h]@3 int v24; // [sp+34h] [bp-54h]@3 char v25; // [sp+38h] [bp-50h]@7 unsigned int v26; // [sp+78h] [bp-10h]@1 int v27; // [sp+84h] [bp-4h]@1 int v28; // [sp+88h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_PlayerDistribute"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_PlayerDistribute"; dword_750AB8[dword_750CB8++] = -1; LOWORD(v4) = *(_WORD *)(dword_CFCF388 + 12 * (unsigned __int16)word_CFCF38E + 4); v5 = 0; v27 = 0; v6 = 0; while ( (unsigned __int16)v4 < word_CFCF384 ) { v4 = (unsigned __int16)v4; v19 = *(_WORD *)(dword_CFCF388 + 12 * (unsigned __int16)v4 + 4); v24 = 0; v23 = 0; v22 = 0; if ( (unsigned __int16)v4 >= word_CFCF384 || (v7 = 3 * v4, v8 = *(_BYTE *)(dword_CFCF388 + 4 * v7 + 8) == 0, v9 = dword_CFCF388 + 4 * v7, v8) ) v10 = 0; else v10 = *(void **)v9; sub_462540(v10, (int)&v22, (int)&v20, (int)&v21); v11 = v23; v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = v22; v14 = v24; *((_DWORD *)v13 + 1) = v11; v15 = v21; *((_DWORD *)v13 + 2) = v14; v16 = v20; v13[12] = 0; sprintf(&v25, "%s ply:%d/mob:%d", v13, v16, v15); sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_wall"; dword_750AB8[dword_750CB8++] = -1; v17 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1924); LOBYTE(v27) = 1; v17(a2, &v25); --dword_750CB8; LOBYTE(v27) = 0; sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); v5 += v20; v6 += v21; LOWORD(v4) = v19; } sprintf(&v25, "Total ply:%d/mob:%d", v5, v6); sub_419E00(a2, (int)&v25); --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_PlayerDistribute"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // CFCF384: using guessed type __int16 word_CFCF384; // CFCF388: using guessed type int dword_CFCF388; // CFCF38E: using guessed type __int16 word_CFCF38E; //----- (00422DC0) -------------------------------------------------------- int __stdcall sub_422DC0(int a1, int a2, int a3, int a4) { unsigned __int16 v4; // bx@1 int v5; // edx@3 int v6; // eax@3 bool v7; // zf@3 int v8; // eax@3 int v9; // edi@4 int v10; // edx@5 int v11; // eax@6 int v12; // eax@9 int v13; // esi@17 int v14; // eax@17 int v15; // edx@17 int v16; // eax@17 int v18; // [sp+14h] [bp-14h]@1 signed int v19; // [sp+18h] [bp-10h]@1 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_NPCRevive"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_NPCRevive"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v4 = *(_WORD *)(*(_DWORD *)(dword_1325382C + 8) + 12 * *(_WORD *)(dword_1325382C + 14) + 4); v19 = 10000; while ( v4 < *(_WORD *)(dword_1325382C + 4) ) { v5 = *(_DWORD *)(dword_1325382C + 8); v6 = v4; v4 = *(_WORD *)(v5 + 12 * v4 + 4); v6 *= 3; v7 = *(_BYTE *)(v5 + 4 * v6 + 8) == 0; v8 = v5 + 4 * v6; if ( v7 ) break; v9 = *(_DWORD *)v8; if ( !*(_DWORD *)v8 ) break; v10 = *(_DWORD *)(v9 + 122); if ( v10 ) { if ( a2 ) { v12 = *(_DWORD *)(a2 + 122); if ( v12 ) { if ( *(_DWORD *)v10 == *(_DWORD *)v12 && *(_DWORD *)(v10 + 4) == *(_DWORD *)(v12 + 4) && *(_DWORD *)(v10 + 8) == *(_DWORD *)(v12 + 8) ) { if ( **(_DWORD **)(v9 + 118) == **(_DWORD **)(a2 + 118) ) { v13 = *(_DWORD *)(a2 + 102); v14 = *(_DWORD *)(v9 + 102); v15 = *(_DWORD *)v14; v16 = *(_DWORD *)(v14 + 4) - *(_DWORD *)(v13 + 4); v11 = (v15 - *(_DWORD *)v13) * (v15 - *(_DWORD *)v13) + v16 * v16; } else { v11 = 999999999; } } else { v11 = 999999999; } } else { v11 = 999999999; } } else { v11 = 999999999; } } else { v11 = 999999999; } if ( v11 < (unsigned int)v19 ) { v18 = v9; v19 = v11; } } if ( v18 ) (*(void (__stdcall **)(int))(*(_DWORD *)v18 + 2684))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_NPCRevive"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325382C: using guessed type int dword_1325382C; //----- (00422F50) -------------------------------------------------------- int __stdcall sub_422F50(int a1, int a2, int a3, const char *a4) { int v4; // esi@1 void *v5; // edi@2 int (__thiscall *v6)(_DWORD); // eax@3 int v7; // eax@3 int v8; // edx@3 int v9; // eax@3 char v11; // [sp+10h] [bp-48h]@3 char v12[4]; // [sp+14h] [bp-44h]@1 int v13; // [sp+18h] [bp-40h]@1 int v14; // [sp+1Ch] [bp-3Ch]@1 int v15; // [sp+20h] [bp-38h]@1 int v16; // [sp+24h] [bp-34h]@1 int v17; // [sp+28h] [bp-30h]@3 int v18; // [sp+30h] [bp-28h]@3 int v19; // [sp+34h] [bp-24h]@3 int v20; // [sp+38h] [bp-20h]@3 int v21; // [sp+3Ch] [bp-1Ch]@3 int v22; // [sp+40h] [bp-18h]@3 char v23; // [sp+47h] [bp-11h]@3 unsigned int v24; // [sp+48h] [bp-10h]@1 int v25; // [sp+54h] [bp-4h]@1 int v26; // [sp+58h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_inraid"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_inraid"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, a4, 0x14u); v4 = sub_54E5A0(&unk_13253630, (int)v12); if ( v4 ) { v5 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2); if ( v5 ) { v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836); v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v23 = 0; v7 = v6(v4); v8 = *(_DWORD *)v4; v17 = v7; v9 = (*(int (__thiscall **)(int))(v8 + 1388))(v4); v18 = *(_DWORD *)v9; v19 = *(_DWORD *)(v9 + 4); v20 = *(_DWORD *)(v9 + 8); v21 = *(_DWORD *)(v9 + 12); v22 = *(_DWORD *)(v9 + 16); sub_63A510(v5, (int)&v17, (int)&v11); (*(void (__thiscall **)(int, void *))(*(_DWORD *)v4 + 2696))(v4, v5); } } --dword_750CB8; v25 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_inraid"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004230A0) -------------------------------------------------------- int __stdcall sub_4230A0(int a1, int a2, signed int a3, const char *a4) { signed int v4; // ecx@1 signed int v5; // edx@1 int v6; // eax@3 int v7; // esi@7 __int16 v8; // dx@8 __int16 v9; // bx@8 __int16 v10; // dx@11 int v11; // edi@11 int v12; // eax@11 bool v13; // zf@11 int v14; // eax@12 int v15; // ecx@15 int v16; // eax@16 unsigned __int16 v17; // cx@19 int v18; // edx@20 int v19; // eax@21 int v20; // eax@25 int v21; // eax@26 int v22; // edx@30 int v23; // eax@31 int v24; // eax@33 int v25; // ecx@37 int v26; // eax@38 int v27; // eax@41 int v28; // ecx@41 int v29; // edi@42 int v30; // ST14_4@42 int v31; // ST10_4@42 int v32; // eax@42 int v33; // eax@42 __int16 v35; // [sp+18h] [bp-128h]@8 __int16 v36; // [sp+1Ah] [bp-126h]@9 int v37; // [sp+1Ch] [bp-124h]@8 int v38; // [sp+20h] [bp-120h]@8 char v39[4]; // [sp+24h] [bp-11Ch]@1 int v40; // [sp+28h] [bp-118h]@1 int v41; // [sp+2Ch] [bp-114h]@1 char v42; // [sp+30h] [bp-110h]@42 unsigned int v43; // [sp+130h] [bp-10h]@1 int v44; // [sp+13Ch] [bp-4h]@1 int v45; // [sp+140h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ShowAllChar"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ShowAllChar"; v4 = -1; dword_750AB8[dword_750CB8] = -1; v5 = 1; ++dword_750CB8; v44 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; if ( a3 > 1 ) { v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; strncpy(v39, a4, 0xCu); v4 = -1; v5 = 1; } else { if ( !a2 || (v6 = *(_DWORD *)(a2 + 122)) == 0 ) goto LABEL_5; *(_DWORD *)v39 = *(_DWORD *)v6; v40 = *(_DWORD *)(v6 + 4); v41 = *(_DWORD *)(v6 + 8); } v7 = dword_13253824; if ( !dword_13253824 ) { LABEL_5: dword_750CB8 -= v5; v44 = v4; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ShowAllChar"); } v8 = *(_WORD *)(dword_13253824 + 4); v9 = *(_WORD *)(*(_DWORD *)(dword_13253824 + 8) + 12 * *(_WORD *)(dword_13253824 + 14) + 4); v37 = dword_13253824; v38 = 0; v35 = v8; while ( (unsigned __int16)v9 < *(_WORD *)(v7 + 4) ) { v10 = *(_WORD *)(*(_DWORD *)(v7 + 8) + 12 * (unsigned __int16)v9 + 4); v11 = 12 * (unsigned __int16)v9; v12 = *(_DWORD *)(v7 + 8); v13 = *(_BYTE *)(v12 + v11 + 8) == 0; v35 = v9; v36 = v10; if ( v13 ) break; v14 = *(_DWORD *)(v12 + v11); if ( !v14 ) break; if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 768))(v14) ) { if ( (unsigned __int16)v9 < *(_WORD *)(v7 + 4) && (v15 = *(_DWORD *)(v7 + 8), *(_BYTE *)(v11 + v15 + 8)) ) v16 = *(_DWORD *)(v11 + v15); else v16 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1232))(v16) == 2 ) { v17 = *(_WORD *)(v7 + 4); if ( v9 < v17 && (v18 = *(_DWORD *)(v7 + 8), *(_BYTE *)(v11 + v18 + 8)) ) v19 = *(_DWORD *)(v11 + v18); else v19 = 0; if ( *(_DWORD *)(v19 + 122) ) { if ( v9 < v17 && (v20 = *(_DWORD *)(v7 + 8), *(_BYTE *)(v20 + v11 + 8)) ) v21 = *(_DWORD *)(v20 + v11); else v21 = 0; if ( *(_DWORD *)(v21 + 122) ) { if ( v9 < v17 && (v22 = *(_DWORD *)(v7 + 8), *(_BYTE *)(v11 + v22 + 8)) ) v23 = *(_DWORD *)(v11 + v22); else v23 = 0; v24 = *(_DWORD *)(v23 + 122); if ( *(_DWORD *)v24 == *(_DWORD *)v39 ) { if ( *(_DWORD *)(v24 + 4) == v40 && *(_DWORD *)(v24 + 8) == v41 ) { if ( v9 < v17 && (v25 = *(_DWORD *)(v7 + 8), *(_BYTE *)(v11 + v25 + 8)) ) v26 = *(_DWORD *)(v11 + v25); else v26 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v26 + 1388))(v26) ) { v27 = sub_4A2CF0((int)&v35); v28 = *(_DWORD *)(v27 + 102); if ( v28 ) { v29 = *(_WORD *)(v27 + 4); v30 = *(_DWORD *)(v28 + 4); v31 = *(_DWORD *)v28; v32 = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 1388))(v27); v33 = sub_418B40((int)byte_85A2C0, v32); sprintf(&v42, "[%d]%s:%d/%d", v29, v33, v31, v30); sub_419E00(a2, (int)&v42); } } } } } } } } v9 = v36; } --dword_750CB8; v44 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ShowAllChar"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; //----- (004233C0) -------------------------------------------------------- signed int __thiscall sub_4233C0(int this, int a2) { return sub_422730(this, 0, *(_DWORD *)(this + 16), a2, strlen((const char *)a2)); } //----- (004233F0) -------------------------------------------------------- int __thiscall sub_4233F0(int this, unsigned int a2, unsigned int a3) { int v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // edi@3 unsigned int v6; // eax@3 unsigned int v7; // edx@6 int v8; // ebx@7 int v9; // edx@10 int v10; // eax@12 bool v11; // cf@12 v3 = this; v4 = *(_DWORD *)(this + 16); if ( v4 < a2 ) sub_6517D8((int)"invalid string position"); v5 = a3; v6 = v4 - a2; if ( v6 < a3 ) v5 = v6; if ( v5 ) { v7 = *(_DWORD *)(this + 20); if ( v7 < 0x10 ) v8 = this; else v8 = *(_DWORD *)this; if ( v7 < 0x10 ) v9 = this; else v9 = *(_DWORD *)this; memmove_0((void *)(a2 + v9), (const void *)(v5 + a2 + v8), v6 - v5); v10 = *(_DWORD *)(v3 + 16) - v5; v11 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = v10; if ( !v11 ) { *(_BYTE *)(*(_DWORD *)v3 + v10) = 0; return v3; } *(_BYTE *)(v3 + v10) = 0; } return v3; } //----- (00423480) -------------------------------------------------------- void *__usercall sub_423480(int a1, int a2, unsigned int a3, size_t a4) { int v4; // edi@1 unsigned int v5; // esi@1 unsigned int v6; // ebx@3 unsigned int v7; // ecx@3 int v8; // eax@6 const void *v9; // eax@14 void *result; // eax@19 int v11; // [sp-10h] [bp-38h]@1 int (__thiscall **v12)(void *, char); // [sp+0h] [bp-28h]@11 int v13; // [sp+10h] [bp-18h]@10 int v14; // [sp+14h] [bp-14h]@1 int *v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+1Ch] [bp-Ch]@1 int (__cdecl *v17)(EXCEPTION_RECORD *, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // [sp+20h] [bp-8h]@1 int v18; // [sp+24h] [bp-4h]@1 void *v19; // [sp+30h] [bp+8h]@9 v18 = -1; v17 = sub_67ECF0; v16 = a1; v11 = a1; v15 = &v11; v4 = a2; v14 = a2; v5 = a3 | 0xF; if ( (a3 | 0xF) <= 0xFFFFFFFE ) { v6 = *(_DWORD *)(a2 + 20); v7 = *(_DWORD *)(a2 + 20) >> 1; if ( v7 > v5 / 3 ) { v5 = v7 + v6; if ( v6 > -2 - v7 ) v5 = -2; } } else { v5 = a3; } v8 = 0; v18 = 0; if ( v5 != -1 ) { if ( v5 + 1 > 0xFFFFFFFF || (v8 = operator new(v5 + 1)) == 0 ) { v13 = 0; std::exception::exception(&v13); v12 = &off_6A1FD4; _CxxThrowException(&v12, &unk_733E50); } } v19 = (void *)v8; if ( a4 ) { if ( *(_DWORD *)(v4 + 20) < 0x10u ) v9 = (const void *)v4; else v9 = *(const void **)v4; memmove(v19, v9, a4); } if ( *(_DWORD *)(v4 + 20) >= 0x10u ) operator delete(*(void **)v4); result = v19; *(_BYTE *)v4 = 0; *(_DWORD *)v4 = v19; *(_DWORD *)(v4 + 20) = v5; *(_DWORD *)(v4 + 16) = a4; if ( v5 >= 0x10 ) v4 = (int)v19; *(_BYTE *)(v4 + a4) = 0; return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004235BB) -------------------------------------------------------- void __usercall sub_4235BB(int a1) { int v1; // esi@1 v1 = *(_DWORD *)(a1 - 20); if ( *(_DWORD *)(v1 + 20) >= 0x10u ) operator delete(*(void **)v1); *(_DWORD *)(v1 + 20) = 15; *(_DWORD *)(v1 + 16) = 0; *(_BYTE *)v1 = 0; _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004235F0) -------------------------------------------------------- int __thiscall sub_4235F0(int this, int a2, int a3, int a4) { int result; // eax@1 int (__stdcall **v5)(int, int); // [sp+4h] [bp-24h]@1 int v6; // [sp+8h] [bp-20h]@1 int v7; // [sp+Ch] [bp-1Ch]@1 int v8; // [sp+10h] [bp-18h]@1 int v9; // [sp+14h] [bp-14h]@1 __int16 v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v7 = a2; v8 = a4; v5 = &off_6A4700; v6 = this; v9 = 0; v10 = -1; v11 = 0; sub_43C470(this, (int)&v5); result = v9; *(_WORD *)a3 = v10; return result; } // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); //----- (00423670) -------------------------------------------------------- char __thiscall sub_423670(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6A254C; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6A254C: using guessed type int (__stdcall *off_6A254C)(int, int); //----- (004237F0) -------------------------------------------------------- int __stdcall sub_4237F0(int a1, int a2, int a3, unsigned __int8 *a4) { void *v4; // esi@3 int v5; // eax@5 int v6; // edi@5 int v7; // eax@6 int v8; // ST00_4@7 void *v9; // eax@7 int v11; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ReSetAbstateTarget"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ReSetAbstateTarget"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = (void *)(*(int (**)(void))(*(_DWORD *)a2 + 1884))(); if ( v4 ) { v5 = sub_418C10((int)&unk_877138, a4); v6 = v5; if ( v5 ) { v7 = *(_DWORD *)v5; if ( *(_DWORD *)v6 ) { v8 = *(_DWORD *)(v7 + 34); v9 = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1324))(v4); if ( sub_409A00(v9, v8) ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 1616))(v4, *(_DWORD *)(*(_DWORD *)v6 + 34)); sub_401940(v4, *(_DWORD *)(*(_DWORD *)v6 + 34)); sub_405730(v4, *(_DWORD *)(*(_DWORD *)v6 + 34)); } } } v11 = (int)"AmpersandCommand::ac_ReSetAbstateTarget"; } else { v11 = (int)"AmpersandCommand::ac_ReSetAbstateTarget"; } --dword_750CB8; } else { --dword_750CB8; v11 = (int)"AmpersandCommand::ac_ReSetAbstateTarget"; } return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00423910) -------------------------------------------------------- int __stdcall sub_423910(int a1, int a2, int a3, const char *a4) { __int16 v4; // ax@1 void (__thiscall *v5)(_DWORD, _DWORD); // edx@1 char v7; // [sp+10h] [bp-43Ch]@1 __int16 v8; // [sp+A7h] [bp-3A5h]@1 unsigned int v9; // [sp+43Ch] [bp-10h]@1 int v10; // [sp+448h] [bp-4h]@1 int v11; // [sp+44Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_KQReward"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_KQReward"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; sub_422A60((int)&v7); LOBYTE(v10) = 1; v4 = sub_419F30(a4); v5 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1900); v8 = v4; v5(a2, &v7); LOBYTE(v10) = 0; sub_422B10(&v7); --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_KQReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00423A10) -------------------------------------------------------- int __thiscall sub_423A10(void *this, int a2, int a3, int a4, char *a5) { int v5; // esi@1 int v6; // eax@3 _BYTE *v7; // eax@3 signed int v8; // eax@3 int v9; // eax@8 _BYTE *v10; // eax@8 void (__stdcall *v11)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@8 int v12; // esi@8 __time32_t v13; // eax@10 __time32_t v14; // eax@10 void *v15; // ecx@10 int (__stdcall **v17)(int, int); // [sp+10h] [bp-3A4h]@8 int v18; // [sp+14h] [bp-3A0h]@8 int (__thiscall *v19)(int, int, int, int); // [sp+18h] [bp-39Ch]@8 char *v20; // [sp+1Ch] [bp-398h]@8 int v21; // [sp+20h] [bp-394h]@8 __int16 v22; // [sp+24h] [bp-390h]@8 void *v23; // [sp+28h] [bp-38Ch]@1 int v24; // [sp+2Ch] [bp-388h]@6 int v25; // [sp+30h] [bp-384h]@1 char v26; // [sp+34h] [bp-380h]@8 char v27; // [sp+234h] [bp-180h]@10 char v28; // [sp+334h] [bp-80h]@8 char v29; // [sp+348h] [bp-6Ch]@1 char v30; // [sp+354h] [bp-60h]@1 char v31; // [sp+369h] [bp-4Bh]@8 int v32; // [sp+38Ah] [bp-2Ah]@8 int v33; // [sp+38Eh] [bp-26h]@8 char v34[4]; // [sp+398h] [bp-1Ch]@8 int v35; // [sp+39Ch] [bp-18h]@8 int v36; // [sp+3A0h] [bp-14h]@8 unsigned int v37; // [sp+3A4h] [bp-10h]@1 int v38; // [sp+3B0h] [bp-4h]@1 int v39; // [sp+3B4h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v23 = this; v25 = a3; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_KingdomQuest"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_KingdomQuest"; dword_750AB8[dword_750CB8++] = -1; v38 = 0; strncpy(&v29, a5, 0xCu); v30 = 0; v5 = sub_63AB60(&unk_CFCF398, a5); if ( v5 ) { v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); v7[12] = 0; v8 = sub_639620(&unk_14D20404, v7); if ( v8 == -1 ) LOWORD(v8) = -1; v8 = (unsigned __int16)v8; if ( (unsigned __int16)v8 < dword_14D20400 && (v24 = *(_DWORD *)(dword_14D203FC + 4 * v8)) != 0 ) { v9 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v9; v10 = &byte_85A2C0[256 * v9]; *(_DWORD *)v10 = *(_DWORD *)v5; *((_DWORD *)v10 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)(v5 + 8); v10[12] = 0; strncpy(&v31, v10, 0x20u); v32 = *(_DWORD *)(v24 + 50); v11 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v25 + 1536); v33 = *(_DWORD *)(v24 + 54); v11(&v28, 6, 9, 10); v36 = 0; v35 = 0; *(_DWORD *)v34 = 0; strncpy(v34, a5, 0xCu); sub_465590((int)&v26, (int)v34); v17 = &off_6A4700; v18 = (int)&unk_CFCF380; v19 = sub_4521E0; v20 = &v26; v21 = 0; v22 = -1; LOBYTE(v38) = 2; sub_43C470((int)&unk_CFCF380, (int)&v17); v12 = v21; LOBYTE(v38) = 1; v17 = &off_6A2544; if ( v21 != 0 ) { v24 = (int)(a5 + 33); v13 = sub_418EA0((__time32_t)byte_14D14D00, (int)"&kingdomquet script load/"); v14 = sub_418EA0(v13, (int)(a5 + 33)); sub_418F20(v14, (int)&unk_13359E04); sub_4D57B0(&v27, a5 + 66); v15 = *(void **)(v12 + 68); LOBYTE(v38) = 3; sub_5071A0(v15, v24, &v27, v12); LOBYTE(v38) = 1; nullsub_2(&v27); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_KingdomQuest : Map not found", 0); } LOBYTE(v38) = 0; sub_4646E0((int)&v26); } else { sub_419E00(v25, (int)"Invalid map name"); } } else { sub_419E00(v25, (int)"Invalid map name"); } --dword_750CB8; v38 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_KingdomQuest"); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00423D10) -------------------------------------------------------- int __thiscall sub_423D10(void *this, int a2, int a3, int a4, char *a5) { int v5; // edi@1 int v6; // eax@14 int (__stdcall **v8)(int, int); // [sp+10h] [bp-43Ch]@1 int v9; // [sp+14h] [bp-438h]@1 int (__thiscall *v10)(int, int, int, int); // [sp+18h] [bp-434h]@1 char *v11; // [sp+1Ch] [bp-430h]@1 void *v12; // [sp+20h] [bp-42Ch]@1 __int16 v13; // [sp+24h] [bp-428h]@1 int v14; // [sp+28h] [bp-424h]@1 void *v15; // [sp+2Ch] [bp-420h]@1 char v16; // [sp+30h] [bp-41Ch]@1 char v17[4]; // [sp+230h] [bp-21Ch]@1 int v18; // [sp+234h] [bp-218h]@1 int v19; // [sp+238h] [bp-214h]@1 char v20; // [sp+23Ch] [bp-210h]@5 char v21; // [sp+33Ch] [bp-110h]@9 unsigned int v22; // [sp+43Ch] [bp-10h]@1 int v23; // [sp+448h] [bp-4h]@1 int v24; // [sp+44Ch] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v15 = this; v14 = a3; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_BigBang"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_BigBang"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; strncpy(v17, a5, 0xCu); sub_465590((int)&v16, (int)v17); v8 = &off_6A4700; v9 = (int)&unk_CFCF380; v10 = sub_4521E0; v11 = &v16; v12 = 0; v13 = -1; LOBYTE(v23) = 2; sub_43C470((int)&unk_CFCF380, (int)&v8); v5 = (int)v12; LOBYTE(v23) = 1; v8 = &off_6A2544; if ( v12 != 0 ) { if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v20, "%.255s", "&bigbang script unload/"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v20, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v21, "%.255s", a5 + 33); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v21, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v6 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v6); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } sub_494EA0(v12, 944); sub_507950(*(void **)(v5 + 68), a5 + 33, v5); sub_49D420((void *)(*(_DWORD *)(v5 + 20) + 1072), *(_DWORD *)(v5 + 20)); } else { sub_639100(&unk_86DDD8, (int)"AmpersandCommand::ac_KingdomQuest : Map not found", 0); sub_419E00(v14, (int)"Invalid map name"); } LOBYTE(v23) = 0; sub_4646E0((int)&v16); --dword_750CB8; v23 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_BigBang"); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D14F84: using guessed type char byte_14D14F84; //----- (00423FC0) -------------------------------------------------------- int __thiscall sub_423FC0(void *this, int a2, unsigned int a3, unsigned int a4) { int v4; // esi@1 int v5; // ecx@1 unsigned int v6; // edi@1 size_t v7; // edi@3 int result; // eax@6 unsigned int v9; // eax@9 void *v10; // eax@14 bool v11; // cf@20 v4 = (int)this; v5 = a2; v6 = *(_DWORD *)(a2 + 16); if ( v6 < a3 ) sub_6517D8((int)"invalid string position"); v7 = v6 - a3; if ( a4 < v7 ) v7 = a4; if ( v4 == a2 ) { sub_4233F0(v4, a3 + v7, 0xFFFFFFFFu); sub_4233F0(v4, 0, a3); return v4; } if ( v7 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v9 = *(_DWORD *)(v4 + 20); if ( v9 < v7 ) { sub_423480(*(_DWORD *)(v4 + 16), v4, v7, *(_DWORD *)(v4 + 16)); v5 = a2; if ( !v7 ) return v4; LABEL_11: if ( *(_DWORD *)(v5 + 20) >= 0x10u ) v5 = *(_DWORD *)v5; if ( *(_DWORD *)(v4 + 20) < 0x10u ) v10 = (void *)v4; else v10 = *(void **)v4; memmove(v10, (const void *)(a3 + v5), v7); v11 = *(_DWORD *)(v4 + 20) < 0x10u; *(_DWORD *)(v4 + 16) = v7; if ( !v11 ) { *(_BYTE *)(*(_DWORD *)v4 + v7) = 0; return v4; } *(_BYTE *)(v4 + v7) = 0; return v4; } if ( v7 ) goto LABEL_11; *(_DWORD *)(v4 + 16) = 0; if ( v9 < 0x10 ) { result = v4; *(_BYTE *)v4 = 0; } else { **(_BYTE **)v4 = 0; result = v4; } return result; } //----- (004240B0) -------------------------------------------------------- int __thiscall sub_4240B0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // di@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 21) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 21) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5CC4F0(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5CC450(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5CC4F0(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (00424190) -------------------------------------------------------- void __thiscall sub_424190(void **this) { void **v1; // esi@1 v1 = this; if ( *this ) operator delete(*this); *v1 = 0; v1[1] = 0; v1[2] = 0; } //----- (004241C0) -------------------------------------------------------- int __thiscall sub_4241C0(int this, char *a2, size_t a3) { int v3; // esi@1 unsigned int v4; // ecx@2 unsigned int v5; // eax@3 int v6; // eax@7 int result; // eax@11 int v8; // eax@15 void *v9; // eax@18 bool v10; // cf@24 v3 = this; if ( a2 ) { v4 = *(_DWORD *)(this + 20); v5 = v4 < 0x10 ? v3 : *(_DWORD *)v3; if ( (unsigned int)a2 >= v5 ) { v6 = v4 < 0x10 ? v3 : *(_DWORD *)v3; if ( v6 + *(_DWORD *)(v3 + 16) > (unsigned int)a2 ) { if ( v4 < 0x10 ) result = sub_423FC0((void *)v3, v3, (unsigned int)&a2[-v3], a3); else result = sub_423FC0((void *)v3, v3, (unsigned int)&a2[-*(_DWORD *)v3], a3); return result; } } } if ( a3 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v8 = *(_DWORD *)(v3 + 20); if ( v8 < a3 ) { sub_423480(v8, v3, a3, *(_DWORD *)(v3 + 16)); if ( !a3 ) return v3; LABEL_17: if ( *(_DWORD *)(v3 + 20) < 0x10u ) v9 = (void *)v3; else v9 = *(void **)v3; memmove(v9, a2, a3); v10 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = a3; if ( !v10 ) { *(_BYTE *)(*(_DWORD *)v3 + a3) = 0; return v3; } *(_BYTE *)(v3 + a3) = 0; return v3; } if ( a3 ) goto LABEL_17; *(_DWORD *)(v3 + 16) = 0; if ( (unsigned int)v8 < 0x10 ) { result = v3; *(_BYTE *)v3 = 0; } else { **(_BYTE **)v3 = 0; result = v3; } return result; } //----- (004242C0) -------------------------------------------------------- int __thiscall sub_4242C0(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // eax@1 signed int v4; // edi@3 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)this > a2 ) { if ( v3 == *(_DWORD *)(this + 8) ) sub_4CEB10(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) *(_DWORD *)result = *(_DWORD *)a2; } else { v4 = (signed int)(a2 - *(_DWORD *)this) >> 2; if ( v3 == *(_DWORD *)(this + 8) ) sub_4CEB10(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)(*(_DWORD *)v2 + 4 * v4); *(_DWORD *)(v2 + 4) += 4; return result; } } *(_DWORD *)(v2 + 4) += 4; return result; } //----- (00424330) -------------------------------------------------------- void *__thiscall sub_424330(void *this) { void *v1; // esi@1 v1 = this; sub_427BE0(this); *(_DWORD *)v1 = &off_6A48EC; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 2) = 0; *((_DWORD *)v1 + 3) = 0; return v1; } // 424330: could not find valid save-restore pair for ebx // 6A48EC: using guessed type int (__stdcall *off_6A48EC)(int, int, int); //----- (004243E0) -------------------------------------------------------- FILE *__stdcall sub_4243E0(int a1, int a2, int a3, int a4) { FILE *result; // eax@2 if ( a2 ) { sub_5CDAA0((int)&unk_14D41FD0); sub_623150(&unk_14D41FD0); sub_419E00(a2, (int)"Pet Lua Reloaded"); result = sub_639100(&unk_86DDD8, (int)"Pet Lua Reloaded", 0); } return result; } //----- (00424430) -------------------------------------------------------- char __thiscall sub_424430(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListMobList::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListMobList::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1232))() == 5 ) sub_4242C0((int)((char *)v4 + 4), (unsigned int)&a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMobList::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004244F0) -------------------------------------------------------- int __thiscall sub_4244F0(int this, char *a2) { int v2; // esi@1 v2 = this; *(_DWORD *)(this + 20) = 15; *(_DWORD *)(this + 16) = 0; *(_BYTE *)this = 0; sub_4241C0(this, a2, strlen(a2)); return v2; } //----- (00424530) -------------------------------------------------------- void **__thiscall sub_424530(void **this, int a2) { void **v2; // esi@1 v2 = this; if ( this != (void **)a2 ) { if ( *this ) operator delete(*this); *v2 = 0; v2[1] = 0; v2[2] = 0; *v2 = *(void **)a2; v2[1] = *(void **)(a2 + 4); v2[2] = *(void **)(a2 + 8); *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; } return v2; } //----- (00424580) -------------------------------------------------------- int __stdcall sub_424580(int a1, int a2, int a3, char *a4) { void *v4; // eax@1 int v5; // eax@3 bool v6; // zf@3 int v7; // edi@6 unsigned int v9; // [sp-4h] [bp-44h]@1 void *v10; // [sp+14h] [bp-2Ch]@1 int v11; // [sp+24h] [bp-1Ch]@1 unsigned int v12; // [sp+28h] [bp-18h]@1 unsigned int v13; // [sp+30h] [bp-10h]@1 int v14; // [sp+3Ch] [bp-4h]@1 int v15; // [sp+40h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v9 = (unsigned int)&v15 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_HPChange"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_HPChange"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v12 = 15; v11 = 0; LOBYTE(v10) = 0; sub_4241C0((int)&v10, a4, strlen(a4)); v4 = v10; LOBYTE(v14) = 1; if ( v12 < 0x10 ) v4 = &v10; v5 = sub_4189B0((int)v4, (int)byte_6A492E, 0); v6 = v5 == 0; if ( !v5 ) v6 = v11 == 0; if ( v6 ) { v7 = 100000; } else { if ( atoi(a4) >= 1000 ) v7 = atoi(a4); else v7 = 1000; } *(_DWORD *)((*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 1072))(a2, v9) + 344) = v7; sub_5488B0((void *)a2); (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1460))(a2, v7); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 52))(a2, 1); sub_419E00(a2, (int)"MaxHP Plue OK"); if ( v12 >= 0x10 ) operator delete(v10); --dword_750CB8; v12 = 15; v11 = 0; LOBYTE(v10) = 0; v14 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_HPChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00424710) -------------------------------------------------------- int __stdcall sub_424710(int a1, int a2, int a3, char *a4) { void *v4; // eax@1 int v5; // eax@3 bool v6; // zf@3 int v7; // edi@6 unsigned int v9; // [sp-4h] [bp-44h]@1 void *v10; // [sp+14h] [bp-2Ch]@1 int v11; // [sp+24h] [bp-1Ch]@1 unsigned int v12; // [sp+28h] [bp-18h]@1 unsigned int v13; // [sp+30h] [bp-10h]@1 int v14; // [sp+3Ch] [bp-4h]@1 int v15; // [sp+40h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v9 = (unsigned int)&v15 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_SPChange"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_SPChange"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v12 = 15; v11 = 0; LOBYTE(v10) = 0; sub_4241C0((int)&v10, a4, strlen(a4)); v4 = v10; LOBYTE(v14) = 1; if ( v12 < 0x10 ) v4 = &v10; v5 = sub_4189B0((int)v4, (int)byte_6A492E, 0); v6 = v5 == 0; if ( !v5 ) v6 = v11 == 0; if ( v6 ) { v7 = 100000; } else { if ( atoi(a4) >= 1000 ) v7 = atoi(a4); else v7 = 1000; } *(_DWORD *)((*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 1072))(a2, v9) + 352) = v7; sub_558960((void *)a2); (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1464))(a2, v7); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 52))(a2, 1); sub_419E00(a2, (int)"MaxSP Plue OK"); if ( v12 >= 0x10 ) operator delete(v10); --dword_750CB8; v12 = 15; v11 = 0; LOBYTE(v10) = 0; v14 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_SPChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004248A0) -------------------------------------------------------- int __stdcall sub_4248A0(int a1, int a2, int a3, char *a4) { unsigned int v4; // esi@1 unsigned int v5; // ecx@1 void *v6; // eax@3 int v7; // eax@5 bool v8; // zf@5 signed int v9; // eax@7 void *v11; // [sp+14h] [bp-2Ch]@1 unsigned int v12; // [sp+24h] [bp-1Ch]@1 unsigned int v13; // [sp+28h] [bp-18h]@1 unsigned int v14; // [sp+30h] [bp-10h]@1 int v15; // [sp+3Ch] [bp-4h]@1 int v16; // [sp+40h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_ReLoadData"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_ReLoadData"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v13 = 15; v12 = 0; LOBYTE(v11) = 0; sub_4241C0((int)&v11, a4, strlen(a4)); v4 = v12; LOBYTE(v15) = 1; v5 = v12; if ( v12 >= 0xB ) v5 = 11; v6 = v11; if ( v13 < 0x10 ) v6 = &v11; v7 = sub_4189B0((int)v6, (int)"ActiveSkill", v5); v8 = v7 == 0; if ( !v7 ) { if ( v4 >= 0xB ) v9 = v4 != 11; else v9 = -1; v8 = v9 == 0; } if ( v8 ) { loc_583BF0(&unk_132577A0, 0); sub_419E00(a2, (int)"Reroad ActiveSkillData"); } if ( v13 >= 0x10 ) operator delete(v11); --dword_750CB8; v13 = 15; v12 = 0; LOBYTE(v11) = 0; v15 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_ReLoadData"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00424A00) -------------------------------------------------------- int __stdcall sub_424A00(int a1, int a2, int a3, char *a4) { unsigned int v4; // esi@1 unsigned int v5; // eax@1 void *v6; // ecx@3 int v7; // eax@5 bool v8; // zf@5 signed int v9; // eax@7 void (__thiscall *v10)(_DWORD, _DWORD, _DWORD); // eax@10 unsigned int v12; // [sp-4h] [bp-44h]@1 int v13; // [sp-4h] [bp-44h]@11 void *v14; // [sp+14h] [bp-2Ch]@1 unsigned int v15; // [sp+24h] [bp-1Ch]@1 unsigned int v16; // [sp+28h] [bp-18h]@1 unsigned int v17; // [sp+30h] [bp-10h]@1 int v18; // [sp+3Ch] [bp-4h]@1 int v19; // [sp+40h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v12 = (unsigned int)&v19 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_Captivate"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_Captivate"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v16 = 15; v15 = 0; LOBYTE(v14) = 0; sub_4241C0((int)&v14, a4, strlen(a4)); v4 = v15; LOBYTE(v18) = 1; v5 = v15; if ( v15 >= 1 ) v5 = 1; v6 = v14; if ( v16 < 0x10 ) v6 = &v14; v7 = sub_4189B0((int)v6, (int)"1", v5); v8 = v7 == 0; if ( !v7 ) { if ( v4 >= 1 ) v9 = v4 != 1; else v9 = -1; v8 = v9 == 0; } v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 3860); if ( v8 ) { v10(a2, 1, v12); v13 = (int)"smo_SetCaptivate true"; } else { v10(a2, 0, v12); v13 = (int)"smo_SetCaptivate false"; } sub_419E00(a2, v13); if ( v16 >= 0x10 ) operator delete(v14); --dword_750CB8; v16 = 15; v15 = 0; LOBYTE(v14) = 0; v18 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_Captivate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00424B60) -------------------------------------------------------- int __stdcall sub_424B60(int a1, int a2, int a3, char *a4) { unsigned int v4; // esi@1 unsigned int v5; // eax@1 void *v6; // ecx@3 int v7; // eax@5 bool v8; // zf@5 signed int v9; // eax@7 int v11; // [sp-8h] [bp-48h]@11 void *v12; // [sp+14h] [bp-2Ch]@1 unsigned int v13; // [sp+24h] [bp-1Ch]@1 unsigned int v14; // [sp+28h] [bp-18h]@1 unsigned int v15; // [sp+30h] [bp-10h]@1 int v16; // [sp+3Ch] [bp-4h]@1 int v17; // [sp+40h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; v14 = 15; v13 = 0; LOBYTE(v12) = 0; sub_4241C0((int)&v12, a4, strlen(a4)); v4 = v13; LOBYTE(v16) = 1; v5 = v13; if ( v13 >= 1 ) v5 = 1; v6 = v12; if ( v14 < 0x10 ) v6 = &v12; v7 = sub_4189B0((int)v6, (int)"1", v5); v8 = v7 == 0; if ( !v7 ) { if ( v4 >= 1 ) v9 = v4 != 1; else v9 = -1; v8 = v9 == 0; } if ( v8 ) { sub_55E220(a2, 0); v11 = (int)"IgnoreSkillCoolTime false"; } else { sub_55E220(a2, 1); v11 = (int)"IgnoreSkillCoolTime true"; } sub_419E00(a2, v11); if ( v14 >= 0x10 ) operator delete(v12); --dword_750CB8; v14 = 15; v13 = 0; LOBYTE(v12) = 0; v16 = -1; return sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_IgnoreSkillCoolTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00424CC0) -------------------------------------------------------- void __stdcall sub_424CC0(int a1, int a2, int a3, char *a4) { int v4; // ebx@2 int v5; // ebx@6 signed int v6; // eax@10 char *v7; // eax@14 char v8; // cl@15 unsigned int v9; // edi@16 unsigned int v10; // eax@16 void *v11; // ecx@18 int v12; // eax@20 int v13; // [sp-8h] [bp-44h]@23 unsigned int v14; // [sp-4h] [bp-40h]@1 void *v15; // [sp+10h] [bp-2Ch]@14 unsigned int v16; // [sp+20h] [bp-1Ch]@14 unsigned int v17; // [sp+24h] [bp-18h]@14 unsigned int v18; // [sp+2Ch] [bp-10h]@1 int v19; // [sp+38h] [bp-4h]@16 int v20; // [sp+3Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v14 = (unsigned int)&v20 ^ __security_cookie; if ( a2 ) { v4 = 0; if ( *a4 != 12080 ) { if ( atoi(a4) >= 100000 ) v4 = atoi(a4); else v4 = 100000; } *(_DWORD *)((*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 1072))(a2, v14) + 344) = v4; sub_5488B0((void *)a2); (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1460))(a2, v4); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 52))(a2, 1); sub_419E00(a2, (int)"MaxHP Plue OK"); v5 = 0; if ( a4[33] != 12080 ) { if ( atoi(a4 + 33) >= 100000 ) v5 = atoi(a4 + 33); else v5 = 100000; } *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1072))(a2) + 352) = v5; sub_558960((void *)a2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1464))(a2); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 52))(a2, 1); sub_419E00(a2, (int)"MaxSP Plue OK"); v6 = 1000; if ( a4[66] != 12080 ) { if ( atoi(a4 + 66) >= 3000 ) v6 = atoi(a4 + 66); else v6 = 3000; } sub_55E150(a2, v6); sub_419E00(a2, (int)"Speed Change OK"); v7 = a4 + 99; v17 = 15; v16 = 0; LOBYTE(v15) = 0; do v8 = *v7++; while ( v8 ); sub_4241C0((int)&v15, a4 + 99, v7 - (a4 + 100)); v9 = v16; v19 = 0; v10 = v16; if ( v16 >= 1 ) v10 = 1; v11 = v15; if ( v17 < 0x10 ) v11 = &v15; v12 = sub_4189B0((int)v11, (int)"1", v10); if ( v12 || v9 < 1 || (LOBYTE(v12) = v9 != 1, v12) ) { sub_55E220(a2, 1); v13 = (int)"IgnoreSkillCoolTime true"; } else { sub_55E220(a2, 0); v13 = (int)"IgnoreSkillCoolTime false"; } sub_419E00(a2, v13); if ( v17 >= 0x10 ) operator delete(v15); } } // 86FEB8: using guessed type int __security_cookie; //----- (00424EF0) -------------------------------------------------------- int __thiscall sub_424EF0(void *this, int a2) { sub_5C0AA0(a2, (int)((char *)this + 4)); return a2; } //----- (00424F20) -------------------------------------------------------- void __cdecl sub_424F20(int a1, int a2) { int i; // esi@1 for ( i = a1; i != a2; i += 28 ) { if ( *(_DWORD *)(i + 20) >= 0x10u ) operator delete(*(void **)i); *(_DWORD *)(i + 20) = 15; *(_DWORD *)(i + 16) = 0; *(_BYTE *)i = 0; } } //----- (00424F60) -------------------------------------------------------- void __thiscall sub_424F60(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_5CF580(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (00424FC0) -------------------------------------------------------- void __stdcall sub_424FC0(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@1 unsigned int v6; // edi@2 int v7; // eax@2 unsigned int v8; // edx@3 int v9; // ecx@3 void *v10; // eax@6 void *v11; // eax@7 int v12; // esi@9 __int16 v13; // bx@12 int v14; // eax@12 void *v15; // esi@12 int v16; // edi@12 int v17; // eax@12 int v18; // eax@15 int v19; // eax@15 struct tm *v20; // esi@18 FILE *v21; // edi@18 void *v22; // esi@18 int v23; // ST44_4@19 int v24; // ST44_4@19 void *v25; // eax@19 void *v26; // esi@20 void *v27; // eax@23 bool v28; // zf@23 int v29; // ecx@27 int v30; // eax@30 int k; // eax@31 int j; // eax@34 int v33; // ecx@41 int v34; // eax@41 _BYTE *v35; // eax@41 int v36; // edx@41 int v37; // ebx@42 int v38; // esi@42 unsigned int v39; // eax@44 int v40; // ebx@45 void (__stdcall *v41)(_DWORD); // edx@48 int v42; // eax@50 int m; // eax@51 int l; // eax@54 int v45; // ecx@60 int n; // eax@61 int v47; // eax@64 int v48; // esi@73 void (__thiscall *v49)(_DWORD, _DWORD); // edx@73 int v50; // ST44_4@73 int v51; // ST44_4@73 void *v52; // eax@73 void *v53; // esi@74 unsigned int v54; // [sp-4h] [bp-13Ch]@1 int v55; // [sp+Ch] [bp-12Ch]@15 void *v56; // [sp+14h] [bp-124h]@2 int (__thiscall **v57)(void *, char); // [sp+18h] [bp-120h]@79 int (__thiscall **v58)(void *, char); // [sp+24h] [bp-114h]@81 int v59; // [sp+28h] [bp-110h]@15 __int16 v60; // [sp+30h] [bp-108h]@15 int v61; // [sp+34h] [bp-104h]@15 __time32_t Time; // [sp+38h] [bp-100h]@18 void *v63; // [sp+3Ch] [bp-FCh]@2 unsigned int v64; // [sp+40h] [bp-F8h]@2 int v65; // [sp+44h] [bp-F4h]@2 __int16 v66; // [sp+4Ch] [bp-ECh]@15 int v67; // [sp+50h] [bp-E8h]@15 int v68; // [sp+54h] [bp-E4h]@19 int v69; // [sp+58h] [bp-E0h]@8 int v70; // [sp+5Ch] [bp-DCh]@1 int v71; // [sp+60h] [bp-D8h]@1 int (__stdcall **v72)(int, int, int); // [sp+64h] [bp-D4h]@2 void *v73; // [sp+68h] [bp-D0h]@19 void *v74; // [sp+6Ch] [bp-CCh]@19 void *v75; // [sp+70h] [bp-C8h]@23 char v76; // [sp+78h] [bp-C0h]@15 void *v77; // [sp+7Ch] [bp-BCh]@7 int v78; // [sp+80h] [bp-B8h]@6 char v79; // [sp+88h] [bp-B0h]@15 void *v80; // [sp+8Ch] [bp-ACh]@8 int v81; // [sp+90h] [bp-A8h]@7 unsigned int i; // [sp+98h] [bp-A0h]@8 int v83; // [sp+9Ch] [bp-9Ch]@12 char v84; // [sp+A0h] [bp-98h]@18 char v85; // [sp+C8h] [bp-70h]@48 char v86; // [sp+F8h] [bp-40h]@18 char v87; // [sp+108h] [bp-30h]@18 char v88; // [sp+118h] [bp-20h]@18 unsigned int v89; // [sp+128h] [bp-10h]@1 int v90; // [sp+134h] [bp-4h]@2 int v91; // [sp+138h] [bp+0h]@1 v89 = (unsigned int)&v91 ^ __security_cookie; v54 = (unsigned int)&v91 ^ __security_cookie; v4 = a2; v5 = *(_DWORD *)(a2 + 122); v70 = a2; v71 = v5; if ( v5 ) { v6 = 0; v63 = 0; v64 = 0; v65 = 0; v90 = 0; sub_424330(&v72); LOBYTE(v90) = 1; sub_549B60((void *)a2, (int)&v72, 0); v7 = sub_424EF0(&v72, (int)&v56); if ( &v63 != (void **)v7 ) { v8 = *(_DWORD *)(v7 + 4); v63 = *(void **)v7; v9 = *(_DWORD *)(v7 + 8); v6 = (unsigned int)v63; v64 = v8; v65 = v9; *(_DWORD *)v7 = 0; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)(v7 + 8) = 0; } LOBYTE(v90) = 1; if ( v56 ) operator delete(v56); v78 = 0; v10 = (void *)operator new(0x18u); if ( !v10 ) { i = 0; std::exception::exception(&i); v58 = &off_6A1FD4; _CxxThrowException(&v58, &unk_733E50); } v77 = v10; *(_DWORD *)v10 = v10; *((_DWORD *)v77 + 1) = v77; *((_DWORD *)v77 + 2) = v77; *((_BYTE *)v77 + 20) = 1; *((_BYTE *)v77 + 21) = 1; LOBYTE(v90) = 3; v81 = 0; v11 = (void *)operator new(0x18u); if ( !v11 ) { v68 = 0; std::exception::exception(&v68); v57 = &off_6A1FD4; _CxxThrowException(&v57, &unk_733E50); } v80 = v11; *(_DWORD *)v11 = v11; *((_DWORD *)v80 + 1) = v80; *((_DWORD *)v80 + 2) = v80; *((_BYTE *)v80 + 20) = 1; *((_BYTE *)v80 + 21) = 1; LOBYTE(v90) = 4; v69 = 0; for ( i = v6; v6 < v64; i = v6 ) { v12 = *(_DWORD *)v6; if ( !*(_DWORD *)v6 ) break; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 40))(*(_DWORD *)v6) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1232))(v12) == 5 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1800))(v12); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 2196))(v12); v15 = v77; v16 = v14; v17 = *(_DWORD *)v77; v83 = v17; if ( (void *)v17 == v77 ) { LABEL_15: v66 = v13; v67 = v16; v18 = sub_5C5AB0(&v76, (int)&v66); sub_4240B0((int)&v76, (int)&v55, (void *)v18, 0); v60 = v13; v61 = 1; v19 = sub_5C5AB0(&v79, (int)&v60); sub_4240B0((int)&v79, (int)&v59, (void *)v19, 0); } else { while ( v13 != *(_WORD *)(v17 + 12) ) { sub_5CC3C0(&v83); v17 = v83; if ( (void *)v83 == v15 ) goto LABEL_15; } v29 = *(_DWORD *)v80; if ( *(void **)v80 != v80 ) { while ( v13 != *(_WORD *)(v29 + 12) ) { if ( !*(_BYTE *)(v29 + 21) ) { v30 = *(_DWORD *)(v29 + 8); if ( *(_BYTE *)(v30 + 21) ) { for ( j = *(_DWORD *)(v29 + 4); !*(_BYTE *)(j + 21); j = *(_DWORD *)(j + 4) ) { if ( v29 != *(_DWORD *)(j + 8) ) break; v29 = j; } v29 = j; } else { v29 = *(_DWORD *)(v29 + 8); for ( k = *(_DWORD *)v30; !*(_BYTE *)(k + 21); k = *(_DWORD *)k ) v29 = k; } } if ( (void *)v29 == v80 ) goto LABEL_16; } ++*(_DWORD *)(v29 + 16); } } LABEL_16: ++v69; v4 = v70; v6 = i; } v6 += 4; } sub_44FB50((__time32_t)&Time, (int)&Time); v20 = _localtime32(&Time); sprintf(&v86, "MobCounting"); sprintf(&v88, "%04d%02d%02d", v20->tm_year + 1900, v20->tm_mon + 1, v20->tm_mday); sprintf(&v87, "%02d:%02d:%02d", v20->tm_hour, v20->tm_min, v20->tm_sec); sprintf(&v84, "%s%s%02d.txt", &v86, &v88, v20->tm_hour); v21 = fopen(&v84, "a+"); v22 = 0; if ( v21 ) { v33 = v71; v34 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v34; v35 = &byte_85A2C0[256 * v34]; *(_DWORD *)v35 = *(_DWORD *)v71; *((_DWORD *)v35 + 1) = *(_DWORD *)(v33 + 4); *((_DWORD *)v35 + 2) = *(_DWORD *)(v33 + 8); v35[12] = 0; fprintf(v21, "Mob Count Statistics [%s] - %s\n\n", v35, &v87, v54); fprintf(v21, "--------------------------------------------------------\n"); fprintf(v21, " sMobIndex nCount \n"); fprintf(v21, "--------------------------------------------------------\n"); v36 = *(_DWORD *)v77; v83 = v36; if ( (void *)v36 != v77 ) { do { v37 = *(_DWORD *)(v36 + 16); v71 = *(_WORD *)(v36 + 12); v38 = *(_DWORD *)v80; i = v37; while ( (void *)v38 != v80 ) { if ( (_WORD)v71 == *(_WORD *)(v38 + 12) ) { fprintf(v21, off_6A4AD8, v37); v39 = strlen((const char *)v37); if ( (signed int)(47 - v39) > 0 ) { v40 = 47 - v39; do { fprintf(v21, word_6A2BF8); --v40; } while ( v40 ); v37 = i; } fprintf(v21, "%d\n", *(_DWORD *)(v38 + 16)); sprintf(&v85, "%s %d", v37, *(_DWORD *)(v38 + 16)); v67 = (int)"AmpersandCommand::ac_wall"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_wall"; dword_750AB8[dword_750CB8++] = -1; v41 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v70 + 1924); LOBYTE(v90) = 7; v41(&v85); --dword_750CB8; LOBYTE(v90) = 4; sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); v36 = v83; v37 = i; } if ( !*(_BYTE *)(v38 + 21) ) { v42 = *(_DWORD *)(v38 + 8); if ( *(_BYTE *)(v42 + 21) ) { for ( l = *(_DWORD *)(v38 + 4); !*(_BYTE *)(l + 21); l = *(_DWORD *)(l + 4) ) { if ( v38 != *(_DWORD *)(l + 8) ) break; v38 = l; } v38 = l; } else { v38 = *(_DWORD *)(v38 + 8); for ( m = *(_DWORD *)v42; !*(_BYTE *)(m + 21); m = *(_DWORD *)m ) v38 = m; } } } if ( !*(_BYTE *)(v36 + 21) ) { v45 = *(_DWORD *)(v36 + 8); if ( *(_BYTE *)(v45 + 21) ) { v47 = *(_DWORD *)(v36 + 4); if ( !*(_BYTE *)(v47 + 21) ) { while ( v36 == *(_DWORD *)(v47 + 8) ) { v83 = v47; v47 = *(_DWORD *)(v47 + 4); if ( *(_BYTE *)(v47 + 21) ) break; v36 = v83; } } v83 = v47; } else { for ( n = *(_DWORD *)v45; !*(_BYTE *)(n + 21); n = *(_DWORD *)n ) v45 = n; v83 = v45; } v36 = v83; } } while ( (void *)v36 != v77 ); v4 = v70; } fprintf(v21, "--------------------------------------------------------\n"); v48 = v69; fprintf(v21, " Total %-5d \n", v69); fprintf(v21, "--------------------------------------------------------\n\n\n\n"); fclose(v21); sprintf(&v85, "Total %d", v48); v67 = (int)"AmpersandCommand::ac_wall"; sub_4675D0((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); dword_7508B8[dword_750CB8] = (int)"AmpersandCommand::ac_wall"; dword_750AB8[dword_750CB8++] = -1; v49 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1924); LOBYTE(v90) = 8; v49(v4, &v85); --dword_750CB8; LOBYTE(v90) = 4; sub_467660((int)&unk_D020420, (int)"AmpersandCommand::ac_wall"); v50 = *(_DWORD *)v80; LOBYTE(v90) = 9; sub_5CF580((int)&v79, (int)&v67, v50, (int)v80); operator delete(v80); v51 = *(_DWORD *)v77; LOBYTE(v90) = 10; sub_5CF580((int)&v76, (int)&v67, v51, (int)v77); operator delete(v77); v52 = v73; LOBYTE(v90) = 0; v72 = &off_6A48EC; if ( v73 != v74 ) { v53 = v73; memmove_0(v73, v74, 0); v52 = v73; v74 = v53; } if ( v52 ) operator delete(v52); v73 = 0; v74 = 0; v75 = 0; sub_427EB0(&v72); v27 = v63; v28 = v63 == 0; } else { v23 = *(_DWORD *)v80; LOBYTE(v90) = 5; sub_5CF580((int)&v79, (int)&v68, v23, (int)v80); operator delete(v80); v24 = *(_DWORD *)v77; LOBYTE(v90) = 6; sub_5CF580((int)&v76, (int)&v68, v24, (int)v77); operator delete(v77); v25 = v73; LOBYTE(v90) = 0; v72 = &off_6A48EC; if ( v73 != v74 ) { v26 = v73; memmove_0(v73, v74, 0); v25 = v73; v74 = v26; v22 = 0; } if ( v25 != v22 ) operator delete(v25); v73 = v22; v74 = v22; v75 = v22; sub_427EB0(&v72); v27 = v63; v28 = v63 == v22; } if ( !v28 ) operator delete(v27); } } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6A48EC: using guessed type int (__stdcall *off_6A48EC)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (00425890) -------------------------------------------------------- int __thiscall sub_425890(int this) { int v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // edi@1 int v5; // ecx@3 int v6; // ecx@6 bool v7; // zf@6 int v8; // ecx@6 int v9; // ecx@9 int v10; // ecx@9 int v11; // ecx@12 int v12; // ecx@12 signed int v14; // [sp+14h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6A2518; *(_DWORD *)(this + 16) = 0; sub_423670(this, 0x100u); *(_DWORD *)v1 = &off_6A2684; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x28u, 256, (int)sub_650160, nullsub_2); v2 = 2; v3 = 0; v4 = v1 + 64; v14 = 64; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v4 - 40; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v6 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 + 12) == 0; v8 = v6 + v3 + 12; if ( v7 ) *(_DWORD *)v8 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v9 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v9 + v3 + 24) == 0; v10 = v9 + v3 + 24; if ( v7 ) *(_DWORD *)v10 = v4 + 40; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v11 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v11 + v3 + 36) == 0; v12 = v11 + v3 + 36; if ( v7 ) *(_DWORD *)v12 = v4 + 80; } v3 += 48; v2 += 4; v4 += 160; --v14; } while ( v14 ); sub_419FB0((void *)v1, "&hide", 10, (int)sub_41A040, 0, 0, 0); sub_419FB0((void *)v1, "&¼", 10, (int)sub_41A040, 0, 0, 0); sub_419FB0((void *)v1, "&show", 10, (int)sub_41A170, 0, 0, 0); sub_419FB0((void *)v1, "&º¸¿©", 10, (int)sub_41A170, 0, 0, 0); sub_419FB0((void *)v1, "&pfind", 10, (int)sub_41CD20, 0, 0, 0); sub_419FB0((void *)v1, "&ijÃßÀ", 10, (int)sub_41CD20, 0, 0, 0); sub_419FB0((void *)v1, "&mfind", 10, (int)sub_41CC60, 0, 0, 0); sub_419FB0((void *)v1, "&¸", 10, (int)sub_41CC60, 0, 0, 0); sub_419FB0((void *)v1, "&kickout", 10, (int)sub_41CB90, 0, 0, 0); sub_419FB0((void *)v1, "&Ãß¹æ", 10, (int)sub_41CB90, 0, 0, 0); sub_419FB0((void *)v1, "&linkto", 10, (int)sub_41A480, 0, 0, 0); sub_419FB0((void *)v1, "&À̵¿", 10, (int)sub_41A480, 0, 0, 0); sub_419FB0((void *)v1, "&psummon", 10, (int)sub_41CE10, 0, 0, 0); sub_419FB0((void *)v1, "&ij¼Òȯ", 10, (int)sub_41CE10, 0, 0, 0); sub_419FB0((void *)v1, "&expbonus", 50, (int)sub_41DE70, 0, 0, 0); sub_419FB0((void *)v1, "&°æÇèÄ¡º¸³Ê½º", 50, (int)sub_41DE70, 0, 0, 0); sub_419FB0((void *)v1, "&itembonus", 50, (int)sub_41DFB0, 0, 0, 0); sub_419FB0((void *)v1, "&¾ÆÀÌÅÛº¸³Ê½º", 50, (int)sub_41DFB0, 0, 0, 0); sub_419FB0((void *)v1, "&fieldbonus", 50, (int)sub_41E0F0, 0, 0, 0); sub_419FB0((void *)v1, "&Çʵ庸³Ê½º", 50, (int)sub_41E0F0, 0, 0, 0); sub_419FB0((void *)v1, "&silence", 100, (int)sub_41DD70, 0, 0, 0); sub_419FB0((void *)v1, "&Á¶¿ëÈ", 100, (int)sub_41DD70, 0, 0, 0); sub_419FB0((void *)v1, "&distribute", 10, (int)sub_422BB0, 0, 0, 0); sub_419FB0((void *)v1, "&isblock", 10, (int)sub_41E560, 0, 0, 0); sub_419FB0((void *)v1, "&mobdist", 10, (int)sub_41CF20, 0, 0, 0); sub_419FB0((void *)v1, "&chargeditem", 100, (int)sub_41CFD0, 0, 0, 0); sub_419FB0((void *)v1, "¶meterview", 100, (int)sub_41E4B0, 0, 0, 0); sub_419FB0((void *)v1, "&adminlevel", 1, (int)sub_41A2F0, 0, 0, 0); sub_419FB0((void *)v1, "&serverindex", 100, (int)sub_41A3D0, 0, 0, 0); sub_419FB0((void *)v1, "&makeitem", 100, (int)sub_41B570, 0, 0, 0); sub_419FB0((void *)v1, "&cleariv", 1, (int)sub_41B8A0, 0, 0, 0); sub_419FB0((void *)v1, "&dimension", 100, (int)sub_41A240, 0, 0, 0); sub_419FB0((void *)v1, "&doorbuild", 100, (int)sub_41A6F0, 0, 0, 0); sub_419FB0((void *)v1, "&mobbreed", 50, (int)sub_41B1E0, 0, 0, 0); sub_419FB0((void *)v1, "&mb", 50, (int)sub_41B460, 0, 0, 0); sub_419FB0((void *)v1, "&fullpoint", 50, (int)sub_41BB60, 0, 0, 0); sub_419FB0((void *)v1, "&summonplayer", 100, (int)sub_41BC20, 0, 0, 0); sub_419FB0((void *)v1, "&performance", 10, (int)sub_41C5A0, 0, 0, 0); sub_419FB0((void *)v1, "&sethp", 100, (int)sub_41C6A0, 0, 0, 0); sub_419FB0((void *)v1, "&setsp", 100, (int)sub_41C7A0, 0, 0, 0); sub_419FB0((void *)v1, "&dist", 10, (int)sub_41C890, 0, 0, 0); sub_419FB0((void *)v1, "&coord", 10, (int)sub_41CA30, 0, 0, 0); sub_419FB0((void *)v1, "&scrint", 10, (int)sub_41A880, 0, 0, 0); sub_419FB0((void *)v1, "&timer", 50, (int)sub_41A9B0, 0, 0, 0); sub_419FB0((void *)v1, "&templink", 10, (int)sub_41AFC0, 0, 0, 0); sub_419FB0((void *)v1, "&oxblock", 100, (int)sub_41AE90, 0, 0, 0); sub_419FB0((void *)v1, "&z", 10, (int)sub_41AB50, 0, 0, 0); sub_419FB0((void *)v1, "&¤»", 10, (int)sub_41AB50, 0, 0, 0); sub_419FB0((void *)v1, "&gmchat", 1, (int)sub_41ACD0, 0, 0, 0); sub_419FB0((void *)v1, "&gldcollectclear", 100, (int)sub_41AAB0, 0, 0, 0); sub_419FB0((void *)v1, "&gldcollectset", 100, (int)sub_41AB00, 0, 0, 0); sub_419FB0((void *)v1, "&questgiveup", 100, (int)sub_41BE60, 0, 0, 0); sub_419FB0((void *)v1, "&questrecieve", 100, (int)sub_41BE10, 0, 0, 0); sub_419FB0((void *)v1, "&questcomplete", 100, (int)sub_41BEB0, 0, 0, 0); sub_419FB0((void *)v1, "&learnskill", 100, (int)sub_41BF60, 0, 0, 0); sub_419FB0((void *)v1, "&skillcooltime", 100, (int)sub_41C090, 0, 0, 0); sub_419FB0((void *)v1, "&setabstate", 100, (int)sub_41C0E0, 0, 0, 0); sub_419FB0((void *)v1, "&resetabstate", 100, (int)sub_41C2F0, 0, 0, 0); sub_419FB0((void *)v1, "&setabstatetarget", 100, (int)sub_41C3B0, 0, 0, 0); sub_419FB0((void *)v1, "&resetabstatetarget", 100, (int)sub_4237F0, 0, 0, 0); sub_419FB0((void *)v1, "&kqreward", 100, (int)sub_423910, 0, 0, 0); sub_419FB0((void *)v1, "&killallmob", 50, (int)sub_41D0A0, 0, 0, 0); sub_419FB0((void *)v1, "&mobdamage", 100, (int)sub_41D140, 0, 0, 0); sub_419FB0((void *)v1, "&suicideallmob", 50, (int)sub_41D220, 0, 0, 0); sub_419FB0((void *)v1, "&suicidemob", 100, (int)sub_41D300, 0, 0, 0); sub_419FB0((void *)v1, "&kingdomquest", 100, (int)sub_423A10, 0, 0, 0); sub_419FB0((void *)v1, "&Reroadkingdomquest", 100, (int)sub_41D960, 0, 0, 0); sub_419FB0((void *)v1, "&endofkq", 100, (int)sub_41D8B0, 0, 0, 0); sub_419FB0((void *)v1, "&guildtournament", 100, (int)sub_41D710, 0, 0, 0); sub_419FB0((void *)v1, "&zonelink", 100, (int)sub_41D630, 0, 0, 0); sub_419FB0((void *)v1, "&block", 100, (int)sub_41C980, 0, 0, 0); sub_419FB0((void *)v1, "&emptymap", 100, (int)sub_41D530, 0, 0, 0); sub_419FB0((void *)v1, "&serversocketcut", 100, (int)sub_41D440, 0, 0, 0); sub_419FB0((void *)v1, "&staticdamage", 50, (int)sub_41DCB0, 0, 0, 0); sub_419FB0((void *)v1, "&deathaura", 100, (int)sub_41DA50, 0, 0, 0); sub_419FB0((void *)v1, "&immortal", 10, (int)sub_41DAD0, 0, 0, 0); sub_419FB0((void *)v1, "&enterminihouse", 100, (int)sub_41DC60, 0, 0, 0); sub_419FB0((void *)v1, "&horsespeed", 100, (int)sub_41DBB0, 0, 0, 0); sub_419FB0((void *)v1, "&charinform", 10, (int)sub_41E1F0, 0, 0, 0); sub_419FB0((void *)v1, "&partyinfo", 100, (int)sub_41E2C0, 0, 0, 0); sub_419FB0((void *)v1, "&propose", 100, (int)sub_41E6B0, 0, 0, 0); sub_419FB0((void *)v1, "&proposeres", 100, (int)sub_41E810, 0, 0, 0); sub_419FB0((void *)v1, "&weddingreset", 100, (int)sub_41E950, 0, 0, 0); sub_419FB0((void *)v1, "&reserve", 100, (int)sub_41EA50, 0, 0, 0); sub_419FB0((void *)v1, "&enterready", 100, (int)sub_41EB20, 0, 0, 0); sub_419FB0((void *)v1, "&enter", 100, (int)sub_41EBF0, 0, 0, 0); sub_419FB0((void *)v1, "&learnpassive", 100, (int)sub_41EF50, 0, 0, 0); sub_419FB0((void *)v1, "&unlearn", 100, (int)sub_41ED30, 0, 0, 0); sub_419FB0((void *)v1, "&unlearnpassive", 100, (int)sub_41EE40, 0, 0, 0); sub_419FB0((void *)v1, "&wedding", 100, (int)sub_41F080, 0, 0, 0); sub_419FB0((void *)v1, "&showid", 100, (int)sub_41F180, 0, 0, 0); sub_419FB0((void *)v1, "&mobhatchery", 100, (int)sub_41F3A0, 0, 0, 0); sub_419FB0((void *)v1, "&allcritical", 100, (int)sub_41F450, 0, 0, 0); sub_419FB0((void *)v1, "&erasechargebuf", 100, (int)sub_41F300, 0, 0, 0); sub_419FB0((void *)v1, "&startGT", 100, (int)sub_41F530, 0, 0, 0); sub_419FB0((void *)v1, "&flagcapture", 100, (int)sub_41F6F0, 0, 0, 0); sub_419FB0((void *)v1, "&useguildskill", 100, (int)sub_41F800, 0, 0, 0); sub_419FB0((void *)v1, "&observerlinkto", 100, (int)sub_41F8E0, 0, 0, 0); sub_419FB0((void *)v1, "&observerout", 100, (int)sub_41F990, 0, 0, 0); sub_419FB0((void *)v1, "&HP", 100, (int)sub_424580, 0, 0, 0); sub_419FB0((void *)v1, "&SP", 100, (int)sub_424710, 0, 0, 0); sub_419FB0((void *)v1, "&speed", 50, (int)sub_41FA30, 0, 0, 0); sub_419FB0((void *)v1, "&linktosavedata", 100, (int)sub_419160, 0, 0, 0); sub_419FB0((void *)v1, "&reloaddata", 100, (int)sub_4248A0, 0, 0, 0); sub_419FB0((void *)v1, "&captivate", 100, (int)sub_424A00, 0, 0, 0); sub_419FB0((void *)v1, "&ignoreskillcooltime", 100, (int)sub_424B60, 0, 0, 0); sub_419FB0((void *)v1, "&Ä", 100, (int)sub_424B60, 0, 0, 0); sub_419FB0((void *)v1, "&invenview", 100, (int)sub_420260, 0, 0, 0); sub_419FB0((void *)v1, "&runto", 100, (int)sub_41FB00, 0, 0, 0); sub_419FB0((void *)v1, "&ghostremove", 100, (int)sub_41FBD0, 0, 0, 0); sub_419FB0((void *)v1, "&curtime", 100, (int)sub_41FC80, 0, 0, 0); sub_419FB0((void *)v1, "&amibusy", 100, (int)sub_41FDA0, 0, 0, 0); sub_419FB0((void *)v1, "&knockback", 100, (int)sub_41FF00, 0, 0, 0); sub_419FB0((void *)v1, "&partblock", 100, (int)sub_420020, 0, 0, 0); sub_419FB0((void *)v1, "&debuglogging", 100, (int)sub_420310, 0, 0, 0); sub_419FB0((void *)v1, "&&&", 100, (int)nullsub_1, 0, 0, 0); sub_419FB0((void *)v1, "&npcrevive", 100, (int)sub_422DC0, 0, 0, 0); sub_419FB0((void *)v1, "&ts_DiceFix", 100, (int)sub_420410, 0, 0, 0); sub_419FB0((void *)v1, "&ts_DiceProbability", 100, (int)sub_4205A0, 0, 0, 0); sub_419FB0((void *)v1, "&GB_DiceFix", 100, (int)sub_420760, 0, 0, 0); sub_419FB0((void *)v1, "&GB_DiceProbability", 100, (int)sub_4208E0, 0, 0, 0); sub_419FB0((void *)v1, "&makeraid", 100, (int)sub_420AA0, 0, 0, 0); sub_419FB0((void *)v1, "&outraid", 100, (int)sub_420BF0, 0, 0, 0); sub_419FB0((void *)v1, "&inraid", 100, (int)sub_422F50, 0, 0, 0); sub_419FB0((void *)v1, "&PlayIns", 100, (int)sub_420D40, 0, 0, 0); sub_419FB0((void *)v1, "&bigbang", 100, (int)sub_423D10, 0, 0, 0); sub_419FB0((void *)v1, "&alllearnskill", 100, (int)sub_420E90, 0, 0, 0); sub_419FB0((void *)v1, "&levelup", 100, (int)sub_4212C0, 0, 0, 0); sub_419FB0((void *)v1, "&showallchar", 100, (int)sub_4230A0, 0, 0, 0); sub_419FB0((void *)v1, "&·ç¾ÆÀμ", 100, (int)sub_41E3B0, 0, 0, 0); sub_419FB0((void *)v1, "&testlink", 50, (int)sub_421390, 0, 0, 0); sub_419FB0((void *)v1, ">ieffect", 50, (int)sub_421460, 0, 0, 0); sub_419FB0((void *)v1, "&iareset", 50, (int)sub_421540, 0, 0, 0); sub_419FB0((void *)v1, "&queststart", 50, (int)sub_419170, 0, 0, 0); sub_419FB0((void *)v1, "&questread", 50, (int)sub_4191B0, 0, 0, 0); sub_419FB0((void *)v1, "&disposition", 50, (int)nullsub_1, 0, 0, 0); sub_419FB0((void *)v1, "&idtimechange", 50, (int)sub_4191F0, 0, 0, 0); sub_419FB0((void *)v1, "&releasechatban", 50, (int)sub_421610, 0, 0, 0); sub_419FB0((void *)v1, "&slotmachine", 1, (int)nullsub_1, 0, 0, 0); sub_419FB0((void *)v1, "&godofslotmachine", 100, (int)sub_419400, 0, 0, 0); sub_419FB0((void *)v1, "&viewaggrolist", 50, (int)sub_419360, 0, 0, 0); sub_419FB0((void *)v1, "&ebcu", 50, (int)sub_4216B0, 0, 0, 0); sub_419FB0((void *)v1, "&luaobserver", 100, (int)sub_4193A0, 0, 0, 0); sub_419FB0((void *)v1, "&luafuncexec", 100, (int)sub_4193D0, 0, 0, 0); sub_419FB0((void *)v1, "&mobitemdrop", 100, (int)sub_421750, 0, 0, 0); sub_419FB0((void *)v1, "&getmoney", 100, (int)sub_4217A0, 0, 0, 0); sub_419FB0((void *)v1, "&fnpc", 100, (int)sub_421860, 0, 0, 0); sub_419FB0((void *)v1, "&RegenNPC", 100, (int)sub_421A00, 0, 0, 0); sub_419FB0((void *)v1, "&ReleaseNPC", 100, (int)sub_421B70, 0, 0, 0); sub_419FB0((void *)v1, "&gmtestmode", 100, (int)sub_424CC0, 0, 0, 0); sub_419FB0((void *)v1, "&arrangeiv", 100, (int)sub_419460, 0, 0, 0); sub_419FB0((void *)v1, "&cmt", 100, (int)sub_421C70, 0, 0, 0); sub_419FB0((void *)v1, "&reloadid", 100, (int)sub_419490, 0, 0, 0); sub_419FB0((void *)v1, "&vie", 100, (int)sub_419510, 0, 0, 0); sub_419FB0((void *)v1, "&viue", 100, (int)sub_419560, 0, 0, 0); sub_419FB0((void *)v1, "&viuea", 100, (int)sub_419590, 0, 0, 0); sub_419FB0((void *)v1, "&setlp", 100, (int)sub_421EE0, 0, 0, 0); sub_419FB0((void *)v1, "&movelayer", 100, (int)sub_4195B0, 0, 0, 0); sub_419FB0((void *)v1, "&moveotherlayer", 100, (int)sub_4195F0, 0, 0, 0); sub_419FB0((void *)v1, "&godmode", 100, (int)sub_421F00, 0, 0, 0); sub_419FB0((void *)v1, "&fieldmobcount", 100, (int)sub_424FC0, 0, 0, 0); sub_419FB0((void *)v1, "&reloadpetlua", 100, (int)sub_4243E0, 0, 0, 0); sub_419FB0((void *)v1, "&getpetinfo", 100, (int)sub_422030, 0, 0, 0); sub_419FB0((void *)v1, "&setpetinfo", 100, (int)sub_422140, 0, 0, 0); sub_419FB0((void *)v1, "&vanishdropitem", 100, (int)sub_4223B0, 0, 0, 0); sub_419FB0((void *)v1, "&walkto", 100, (int)sub_422470, 0, 0, 0); sub_419FB0((void *)v1, "&castteleport", 100, (int)sub_422560, 0, 0, 0); sub_419FB0((void *)v1, "&setobjectdirect", 100, (int)sub_422640, 0, 0, 0); return v1; } // 419450: using guessed type int __stdcall nullsub_1(int, int, int, int); // 41BE60: using guessed type int __stdcall sub_41BE60(int, int, int, int); // 6A2518: using guessed type int (__thiscall *off_6A2518)(void *, char); // 6A2684: using guessed type int (__thiscall *off_6A2684)(void *, char); //----- (004271F0) -------------------------------------------------------- void __thiscall sub_4271F0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)this ) { sub_424F20(*(_DWORD *)this, *(_DWORD *)(this + 4)); operator delete(*(void **)v1); } *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (00427240) -------------------------------------------------------- int __thiscall sub_427240(int this, __int16 a2, int a3, void *a4) { unsigned int v4; // ST14_4@1 int v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // edx@1 int v7; // eax@3 int v8; // ecx@3 int v9; // ecx@3 int v10; // ST10_4@3 int v11; // ST08_4@3 __time32_t v12; // eax@3 __time32_t v13; // eax@3 __time32_t v14; // eax@3 __time32_t v15; // eax@3 int v16; // eax@4 signed int v17; // ecx@4 char *v18; // edi@14 int v19; // eax@14 char *v20; // esi@18 char *v21; // ecx@27 int v22; // edx@27 int v23; // eax@29 int v24; // esi@31 signed int v25; // edx@31 const char *v26; // eax@32 char *v27; // edi@34 int v28; // eax@36 bool v29; // cf@36 char *v30; // esi@39 void *v32; // [sp+Ch] [bp-C4h]@6 int v33; // [sp+1Ch] [bp-B4h]@6 unsigned int v34; // [sp+20h] [bp-B0h]@6 int v35; // [sp+28h] [bp-A8h]@1 void *v36; // [sp+2Ch] [bp-A4h]@6 int v37; // [sp+3Ch] [bp-94h]@6 unsigned int v38; // [sp+40h] [bp-90h]@6 void *v39; // [sp+48h] [bp-88h]@6 int v40; // [sp+58h] [bp-78h]@6 unsigned int v41; // [sp+5Ch] [bp-74h]@6 int v42; // [sp+64h] [bp-6Ch]@30 char *v43; // [sp+68h] [bp-68h]@1 int v44; // [sp+6Ch] [bp-64h]@1 char *v45; // [sp+70h] [bp-60h]@18 char *v46; // [sp+74h] [bp-5Ch]@6 char *v47; // [sp+78h] [bp-58h]@6 int v48; // [sp+7Ch] [bp-54h]@6 void *v49; // [sp+84h] [bp-4Ch]@1 void *v50; // [sp+88h] [bp-48h]@6 int v51; // [sp+98h] [bp-38h]@6 unsigned int v52; // [sp+9Ch] [bp-34h]@6 void *v53; // [sp+A4h] [bp-2Ch]@6 int v54; // [sp+B4h] [bp-1Ch]@6 unsigned int v55; // [sp+B8h] [bp-18h]@6 unsigned int v56; // [sp+C0h] [bp-10h]@1 int v57; // [sp+CCh] [bp-4h]@1 int v58; // [sp+D0h] [bp+0h]@1 v56 = (unsigned int)&v58 ^ __security_cookie; v4 = (unsigned int)&v58 ^ __security_cookie; v44 = this; v43 = (char *)a3; v49 = a4; *(_DWORD *)this = &off_6A2588; v5 = this + 4; v57 = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; v35 = (int)"ListIter_AmpCmdArgument::ListIter_AmpCmdArgument"; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::ListIter_AmpCmdArgument"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdArgument::ListIter_AmpCmdArgument"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1236); LOBYTE(v57) = 1; if ( (unsigned __int8)v6(a3, v4) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1236))(a3) <= 0x64u ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1388))(a3); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = (int)&byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v7 + 12); v10 = (int)v49; v11 = v9; *(_DWORD *)(v9 + 16) = *(_DWORD *)(v7 + 16); *(_BYTE *)(v9 + 20) = 0; v12 = sub_418EA0((__time32_t)byte_878778, (int)"["); v13 = sub_418EA0(v12, v11); v14 = sub_418EA0(v13, (int)"] "); v15 = sub_418EA0(v14, v10); sub_418F20(v15, (int)&unk_13359E04); } v16 = v44 + 24; v17 = 12; do { *(_BYTE *)v16 = 0; v16 += 33; --v17; } while ( v17 ); v46 = 0; v47 = 0; v48 = 0; LOBYTE(v57) = 2; v55 = 15; v54 = 0; LOBYTE(v53) = 0; sub_4241C0((int)&v53, (char *)v49, strlen((const char *)v49)); LOBYTE(v57) = 3; v34 = 15; v33 = 0; LOBYTE(v32) = 0; sub_4241C0((int)&v32, "\\", 1u); LOBYTE(v57) = 4; v41 = 15; v40 = 0; LOBYTE(v39) = 0; sub_4241C0((int)&v39, (char *)"\"", 1u); LOBYTE(v57) = 5; v38 = 15; v37 = 0; LOBYTE(v36) = 0; sub_4241C0((int)&v36, byte_6A492E, 0); LOBYTE(v57) = 6; v52 = 15; v51 = 0; LOBYTE(v50) = 0; sub_4241C0((int)&v50, word_6A2BF8, 1u); LOBYTE(v57) = 7; sub_58FE50((int)&v53, (int)&v46, (int)&v50, (int)&v36, (int)&v39, (int)&v32); if ( v52 >= 0x10 ) operator delete(v50); v52 = 15; v51 = 0; LOBYTE(v50) = 0; if ( v38 >= 0x10 ) operator delete(v36); v38 = 15; v37 = 0; LOBYTE(v36) = 0; if ( v41 >= 0x10 ) operator delete(v39); v41 = 15; v40 = 0; LOBYTE(v39) = 0; LOBYTE(v57) = 3; if ( v34 >= 0x10 ) operator delete(v32); v18 = v46; v19 = (signed int)(v47 - v46) / 28; if ( v19 ) { if ( (unsigned int)v19 <= 0 ) LABEL_24: sub_6517D8((int)"invalid vector subscript"); if ( *((_DWORD *)v46 + 5) >= 0x10u ) v18 = *(char **)v46; *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)v5 = 0; strncpy((char *)v5, v18, 0x14u); v21 = v47; v18 = v46; v22 = (signed int)(v47 - v46) / 28 - 1; v49 = (void *)v22; if ( (unsigned int)v22 > 0xC ) { v49 = (void *)12; v22 = 12; } v23 = 0; if ( (unsigned int)v22 > 0 ) { v42 = 28; v45 = (char *)(v44 + 24); do { v24 = v23 + 1; v25 = (signed int)(v21 - v18 + ((unsigned __int64)(-1840700269i64 * (signed int)(v21 - v18)) >> 32)) >> 4; if ( v25 + ((unsigned int)v25 >> 31) <= v23 + 1 ) goto LABEL_24; v26 = &v18[v42]; if ( *(_DWORD *)&v18[v42 + 20] >= 0x10u ) v26 = *(const char **)v26; v27 = v45; strncpy(v45, v26, 0x20u); v42 += 28; v21 = v47; v23 = v24; v45 = v27 + 33; v18 = v46; } while ( v24 < (unsigned int)v49 ); v22 = (int)v49; } v28 = v44; *(_DWORD *)(v44 + 428) = v43; v29 = v55 < 0x10; *(_WORD *)(v28 + 424) = a2; *(_DWORD *)(v28 + 420) = v22 + 1; if ( !v29 ) { operator delete(v53); v21 = v47; v18 = v46; } v55 = 15; v54 = 0; LOBYTE(v53) = 0; if ( v18 ) { v43 = v21; v30 = v18; if ( v18 != v21 ) { do { if ( *((_DWORD *)v30 + 5) >= 0x10u ) operator delete(*(void **)v30); *((_DWORD *)v30 + 5) = 15; *((_DWORD *)v30 + 4) = 0; *v30 = 0; v30 += 28; } while ( v30 != v43 ); goto LABEL_43; } LABEL_44: operator delete(v18); goto LABEL_45; } } else { if ( v55 >= 0x10 ) { operator delete(v53); v18 = v46; } v55 = 15; v54 = 0; LOBYTE(v53) = 0; if ( v18 ) { v45 = v47; v20 = v18; if ( v18 != v47 ) { do { if ( *((_DWORD *)v20 + 5) >= 0x10u ) operator delete(*(void **)v20); *((_DWORD *)v20 + 5) = 15; *((_DWORD *)v20 + 4) = 0; *v20 = 0; v20 += 28; } while ( v20 != v45 ); LABEL_43: v18 = v46; goto LABEL_44; } goto LABEL_44; } } LABEL_45: --dword_750CB8; v46 = 0; v47 = 0; v48 = 0; LOBYTE(v57) = 0; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::ListIter_AmpCmdArgument"); return v44; } // 6A2588: using guessed type int (__stdcall *off_6A2588)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (00427730) -------------------------------------------------------- int __thiscall sub_427730(void *this, const char *a2, size_t a3) { int v3; // esi@1 __int16 v4; // ST00_2@1 int v5; // ecx@3 int v6; // eax@3 _BYTE *v7; // eax@3 int v8; // edx@3 int v9; // ecx@3 int (__stdcall **v11)(int, int); // [sp+10h] [bp-300h]@1 int v12; // [sp+14h] [bp-2FCh]@3 int v13; // [sp+18h] [bp-2F8h]@3 int v14; // [sp+1Ch] [bp-2F4h]@3 int v15; // [sp+20h] [bp-2F0h]@3 int v16; // [sp+24h] [bp-2ECh]@3 char v17[256]; // [sp+1C0h] [bp-150h]@1 char v18; // [sp+2C0h] [bp-50h]@3 unsigned int v19; // [sp+300h] [bp-10h]@1 int v20; // [sp+30Ch] [bp-4h]@1 int v21; // [sp+310h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_AdminCommand"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_AdminCommand"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; strncpy(v17, a2, a3); v4 = *(_WORD *)(v3 + 4); v17[a3] = 0; sub_427240((int)&v11, v4, v3, v17); LOBYTE(v20) = 1; if ( sub_43C470((int)&dword_878A00, (int)&v11) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1236))(v3) ) { v5 = v12; v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *((_DWORD *)v7 + 1) = v13; v8 = v15; *(_DWORD *)v7 = v5; v9 = v14; *((_DWORD *)v7 + 3) = v8; *((_DWORD *)v7 + 2) = v9; *((_DWORD *)v7 + 4) = v16; v7[20] = 0; sprintf(&v18, "Invalid command : %s", v7); sub_419E00(v3, (int)&v18); } v11 = &off_6A2588; LOBYTE(v20) = 2; sub_4675D0((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"); dword_7508B8[dword_750CB8] = (int)"ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"); --dword_750CB8; v11 = &off_6A253C; v20 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_AdminCommand"); } // 6A253C: using guessed type int (__stdcall *off_6A253C)(int, int); // 6A2588: using guessed type int (__stdcall *off_6A2588)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 878A00: using guessed type int dword_878A00; // 427730: using guessed type char var_150[256]; //----- (00427900) -------------------------------------------------------- unsigned int __stdcall sub_427900(int a1, int a2) { return ((signed int)((unsigned __int64)(10 * a2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * a2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } //----- (00427920) -------------------------------------------------------- int __thiscall sub_427920(void *this, int a2) { char *v2; // ecx@2 int v3; // eax@2 int result; // eax@2 if ( (unsigned int)(a2 - 1) > 0x63 ) { result = 0; } else { v2 = (char *)this + 32776 * a2; v3 = *((_DWORD *)v2 + 8193) & (*((_DWORD *)v2 + 8192) + 1); *((_DWORD *)v2 + 8192) = v3; result = *(_WORD *)&v2[2 * v3]; } return result; } //----- (00427960) -------------------------------------------------------- void __stdcall sub_427960(int a1, int a2) { char *v2; // eax@3 int v3; // ecx@3 ++*(_BYTE *)(a1 + 5); if ( *(_BYTE *)(a1 + 5) >= 3u ) { *(_BYTE *)(a1 + 5) = 0; if ( (a2 != 21 ? 11 : 5) > 0x63u ) { *(_BYTE *)(a1 + 4) = 0; } else { v2 = (char *)&unk_14D42DC0 + 32776 * (a2 != 21 ? 12 : 6); v3 = *((_DWORD *)v2 + 8193) & (*((_DWORD *)v2 + 8192) + 1); *((_DWORD *)v2 + 8192) = v3; *(_BYTE *)(a1 + 4) = *(_WORD *)&v2[2 * v3]; } } } //----- (004279C0) -------------------------------------------------------- int __thiscall sub_4279C0(void *this, int a2) { unsigned __int8 v2; // al@1 int result; // eax@2 v2 = *(_BYTE *)(a2 + 4); if ( v2 < 0xCu ) result = *((_DWORD *)this + *(_BYTE *)(a2 + 5) + 3 * v2 + 1); else result = *((_DWORD *)this + *(_BYTE *)(a2 + 5) + 1); return result; } //----- (004279F0) -------------------------------------------------------- int __fastcall sub_4279F0(int a1, int a2, int a3, int a4) { int result; // eax@3 if ( *(_BYTE *)(a3 + 4) >= 6u && *(_BYTE *)(a3 + 5) ) result = ((a2 & 0x1FFFF) + 1180 * a4) >> 17; else result = ((signed int)((unsigned __int64)(10 * a4 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * a4 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); return result; } //----- (00427A40) -------------------------------------------------------- int __stdcall sub_427A40(int a1, int a2) { int result; // eax@1 result = a1; *(_BYTE *)(a1 + 5) = (*(_BYTE *)(a1 + 5) + 1) & 2; return result; } //----- (00427A60) -------------------------------------------------------- int __stdcall sub_427A60(int a1) { return *(_BYTE *)(a1 + 5); } //----- (00427A70) -------------------------------------------------------- bool __thiscall sub_427A70(int this, int a2) { return *(_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); } //----- (00427AD0) -------------------------------------------------------- char *__thiscall sub_427AD0(char *this, const char *a2) { *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; return strncpy(this, a2, 0x20u); } //----- (00427B00) -------------------------------------------------------- bool __thiscall sub_427B00(int this, int a2) { return *(_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); } //----- (00427B40) -------------------------------------------------------- bool __stdcall sub_427B40(int a1, int a2) { return *(_DWORD *)a1 == *(_DWORD *)a2 || *(_DWORD *)a1 == -1 || *(_DWORD *)a2 == -1; } //----- (00427B70) -------------------------------------------------------- char __thiscall sub_427B70(int this, int a2, unsigned int a3, unsigned int a4) { int v4; // eax@1 char result; // al@2 float v6; // ST04_4@3 float v7; // ST00_4@3 v4 = sub_62A340(*(_DWORD *)(this + 20) + 36, a2); if ( v4 ) { v6 = (double)a4; v7 = (double)a3; result = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v4)(v4, LODWORD(v7), LODWORD(v6)); } else { result = 0; } return result; } //----- (00427BD0) -------------------------------------------------------- int __thiscall sub_427BD0(void *this) { ++*(_DWORD *)this; return *(_DWORD *)this; } //----- (00427BE0) -------------------------------------------------------- void *__thiscall sub_427BE0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6A54A8; return result; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); //----- (00427BF0) -------------------------------------------------------- char __stdcall sub_427BF0(int a1, int a2, int a3) { return 1; } //----- (00427C00) -------------------------------------------------------- int __thiscall sub_427C00(int this, int a2, int a3, int a4) { return (*(int (__stdcall **)(_DWORD, _DWORD))(this + 20))(a2, a3); } //----- (00427C20) -------------------------------------------------------- bool __thiscall sub_427C20(int this, int a2, int a3) { int v3; // edi@1 bool result; // al@2 v3 = this; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1800))(a3) == *(_WORD *)(this + 4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) ) ++*(_DWORD *)(v3 + 12); result = *(_DWORD *)(v3 + 12) <= *(_DWORD *)(v3 + 16); } else { result = 1; } return result; } //----- (00427C90) -------------------------------------------------------- bool __thiscall sub_427C90(void *this, int a2, int a3) { void *v3; // edi@1 bool result; // al@2 v3 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2204))(a3) && *(_BYTE *)(*(_DWORD *)(a3 + 118) + 4) != 3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) != 10 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) ) ++*((_DWORD *)v3 + 3); result = *((_DWORD *)v3 + 3) <= *((_DWORD *)v3 + 4); } else { result = 1; } return result; } //----- (00427D10) -------------------------------------------------------- bool __thiscall sub_427D10(void *this, int a2, int a3) { void *v3; // edi@1 bool result; // al@2 v3 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 6 ) ++*((_DWORD *)v3 + 3); result = *((_DWORD *)v3 + 3) <= *((_DWORD *)v3 + 4); } else { result = 1; } return result; } //----- (00427D90) -------------------------------------------------------- bool __thiscall sub_427D90(void *this, int a2, int a3) { void *v3; // edi@1 bool result; // al@2 v3 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 6 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2088))(a3) == *((_DWORD *)v3 + 2) ) ++*((_DWORD *)v3 + 3); } result = *((_DWORD *)v3 + 3) <= *((_DWORD *)v3 + 4); } else { result = 1; } return result; } //----- (00427E20) -------------------------------------------------------- char __thiscall sub_427E20(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@3 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) != *(_DWORD *)(this + 16) || (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1800))(a3) != *(_WORD *)(v4 + 4) ) return 1; v5 = *(_DWORD *)(v4 + 8); if ( v5 > 0 ) { *(_DWORD *)(v4 + 8) = v5 - 1; return 1; } *(_DWORD *)(v4 + 12) = a3; *(_WORD *)(v4 + 6) = *(_WORD *)(a3 + 4); return 0; } //----- (00427E80) -------------------------------------------------------- void *__thiscall sub_427E80(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6A54B0; return result; } // 6A54B0: using guessed type int (__stdcall *off_6A54B0)(int, int, int); //----- (00427E90) -------------------------------------------------------- int __thiscall sub_427E90(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A54B8; *(_DWORD *)(this + 4) = a2; return result; } // 6A54B8: using guessed type int (__stdcall *off_6A54B8)(int, int, int); //----- (00427EB0) -------------------------------------------------------- void __thiscall sub_427EB0(void *this) { *(_DWORD *)this = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); //----- (00427EC0) -------------------------------------------------------- char __thiscall sub_427EC0(int this, int a2, int a3, int a4) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a3 + 1924))(*(_DWORD *)(this + 4)); return 1; } //----- (00427EE0) -------------------------------------------------------- int __thiscall sub_427EE0(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6A54C0; *(_DWORD *)(this + 8) = a2 + 2; *(_BYTE *)(a2 + 2) = 0; return result; } // 6A54C0: using guessed type int (__stdcall *off_6A54C0)(int, int, int); //----- (00427F10) -------------------------------------------------------- char __thiscall sub_427F10(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 v4 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1232))() == 2 ) { result = 1; ++*((_DWORD *)v4 + 1); } else { result = 1; } return result; } //----- (00427F40) -------------------------------------------------------- int __thiscall sub_427F40(int this, int a2, int a3, int a4) { return (*(int (__stdcall **)(_DWORD, _DWORD))(this + 60))(a2, a3); } //----- (00427F60) -------------------------------------------------------- bool __thiscall sub_427F60(int this, int a2) { int v2; // esi@1 int v3; // eax@3 bool result; // al@4 int v5; // eax@5 int v6; // eax@6 float v7; // ST04_4@6 float v8; // ST00_4@6 v2 = this; if ( *(_DWORD *)(this + 52) || (*(_DWORD *)(this + 56) || (v3 = *(_DWORD *)(a2 + 122), (*(_DWORD *)(this + 56) = v3) != 0)) && (v5 = sub_62A340(*(_DWORD *)(*(_DWORD *)(this + 56) + 20) + 36, this + 20), (*(_DWORD *)(v2 + 52) = v5) != 0) ) { v6 = *(_DWORD *)(a2 + 102); v7 = (double)*(unsigned int *)(v6 + 4); v8 = (double)*(unsigned int *)v6; result = (***(int (__stdcall ****)(_DWORD, _DWORD))(v2 + 52))(LODWORD(v8), LODWORD(v7)) != 0; } else { result = 0; } return result; } //----- (00428000) -------------------------------------------------------- int __thiscall sub_428000(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A54D0; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; return result; } // 6A54D0: using guessed type int (__stdcall *off_6A54D0)(int, int, int); //----- (00428020) -------------------------------------------------------- char __thiscall sub_428020(int this, int a2, int a3, int a4) { (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 772))(*(_DWORD *)(this + 4), *(_DWORD *)(this + 8)); return 1; } //----- (00428050) -------------------------------------------------------- int __thiscall sub_428050(int this, int a2, int a3, __int16 a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6A54D8; *(_DWORD *)(this + 8) = a3; *(_WORD *)(this + 12) = a4; return result; } // 6A54D8: using guessed type int (__stdcall *off_6A54D8)(int, int, int); //----- (00428080) -------------------------------------------------------- int __thiscall sub_428080(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A54E0; *(_DWORD *)(this + 4) = 65535; return result; } // 6A54E0: using guessed type int (__stdcall *off_6A54E0)(int, int, int); //----- (004280A0) -------------------------------------------------------- int __cdecl sub_4280A0(int a1) { return (*(int (**)(void))(*(_DWORD *)a1 + 1012))(); } //----- (004280C0) -------------------------------------------------------- char __thiscall sub_4280C0(int this, int a2, int a3, int a4) { int v4; // edx@1 bool v5; // zf@2 v4 = *(_DWORD *)a3; if ( *(_WORD *)(this + 4) == -1 ) v5 = (*(int (__thiscall **)(int))(v4 + 1232))(a3) == 5; else v5 = (unsigned __int16)(*(int (__thiscall **)(int))(v4 + 1800))(a3) == *(_WORD *)(this + 4); if ( v5 ) (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 1012))(a3); return 1; } //----- (00428110) -------------------------------------------------------- void *__thiscall sub_428110(void *this, int a2) { void *v2; // esi@1 int v3; // ST00_4@1 int v4; // eax@1 v2 = this; v3 = a2; *(_DWORD *)this = &off_6A54E8; v4 = sub_494970(&dword_D61E090, v3, (int)&a2); *((_DWORD *)v2 + 1) = v4; if ( v4 ) *((_DWORD *)v2 + 2) = *(_WORD *)(v4 + 153); return v2; } // 6A54E8: using guessed type int (__stdcall *off_6A54E8)(int, int, int); // D61E090: using guessed type int dword_D61E090; //----- (00428180) -------------------------------------------------------- char __thiscall sub_428180(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@1 v4 = this; v5 = *(_DWORD *)(this + 4); if ( v5 ) { if ( sub_498FE0(&dword_D64C510, *(_DWORD *)(v5 + 4), a3) >= *(_DWORD *)(this + 8) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a3 + 1900))(a3, *(_DWORD *)(v4 + 4)); return 1; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(a3, 22, 35, 4356); } return 1; } //----- (004281E0) -------------------------------------------------------- int __thiscall sub_4281E0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = &off_6A54F0; return result; } // 6A54F0: using guessed type int (__stdcall *off_6A54F0)(int, int, int); //----- (00428200) -------------------------------------------------------- int __thiscall sub_428200(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A54F8; *(_DWORD *)(this + 4) = a2; return result; } // 6A54F8: using guessed type int (__stdcall *off_6A54F8)(int, int, int); //----- (00428220) -------------------------------------------------------- char __thiscall sub_428220(void *this, int a2, void *a3, int a4) { void *v4; // edi@1 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 996))(a3, 289) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1160))(a3); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 && !sub_56E870(a3) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1020))(a3, *((_DWORD *)v4 + 1), 0); } return 1; } //----- (00428290) -------------------------------------------------------- int __thiscall sub_428290(int this, __int16 a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A5500; *(_WORD *)(this + 4) = a2; return result; } // 6A5500: using guessed type int (__stdcall *off_6A5500)(int, int, int); //----- (004282B0) -------------------------------------------------------- int __thiscall sub_4282B0(int this, int a2, int a3, int a4, int a5) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = &off_6A5508; *(_DWORD *)(this + 12) = a4; *(_DWORD *)(this + 16) = a5; return result; } // 6A5508: using guessed type int (__stdcall *off_6A5508)(int, int, int); //----- (004282E0) -------------------------------------------------------- int __thiscall sub_4282E0(void *this, int a2) { void *v2; // edi@1 int result; // eax@1 int v4; // eax@3 int v5; // ST24_4@4 void *v6; // eax@4 v2 = this; result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2); if ( (_BYTE)result != 3 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 40))(a2); if ( !(_BYTE)result ) { v4 = *((_DWORD *)v2 + 3); if ( v4 ) { result = (*(int (__thiscall **)(int, int, _DWORD, _DWORD, int, int, _DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)a2 + 1592))( a2, a2, *((_DWORD *)v2 + 1), *((_DWORD *)v2 + 2), v4, dword_14D129E8, 0, 0, *((_DWORD *)v2 + 4), 9, 0); if ( (_BYTE)result ) { sub_401900((void *)a2, *((_DWORD *)v2 + 1)); sub_4055D0((void *)a2, *((_DWORD *)v2 + 1), *((_DWORD *)v2 + 4), *((_DWORD *)v2 + 2)); (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 1008))( a2, *((_DWORD *)v2 + 1), *((_DWORD *)v2 + 4), 1); result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1320))(a2); } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1616))(a2, *((_DWORD *)v2 + 1)); v5 = *((_DWORD *)v2 + 1); v6 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); sub_40A820(v6, a2, v5); result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1320))(a2); } } } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004283D0) -------------------------------------------------------- char __userpurge sub_4283D0(int a1, int a2, int a3, int a4) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1232))() == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1156))(a3, a1) == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1160))(a3); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1748))(a3); } return 1; } // 4283D0: could not find valid save-restore pair for esi //----- (00428420) -------------------------------------------------------- char __stdcall sub_428420(int a1, int a2, int a3) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a1 + 1232))() == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1160))(a2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1752))(a2); } return 1; } //----- (00428470) -------------------------------------------------------- char __thiscall sub_428470(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 v4 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1232))() == 2 ) { result = 1; ++*((_DWORD *)v4 + 1); } else { result = 1; } return result; } //----- (004284A0) -------------------------------------------------------- char __thiscall sub_4284A0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 char result; // al@5 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1160))(a3); if ( *((_DWORD *)v4 + 4) >= *((_DWORD *)v4 + 3) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1024))(a3, *((_DWORD *)v4 + 1)); result = 1; ++*((_DWORD *)v4 + 4); } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1024))(a3, *((_DWORD *)v4 + 2)); result = 1; ++*((_DWORD *)v4 + 4); } } else { result = 1; } return result; } //----- (00428530) -------------------------------------------------------- int __thiscall sub_428530(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = &off_6A5510; *(_DWORD *)(this + 12) = a4; return result; } // 6A5510: using guessed type int (__stdcall *off_6A5510)(int, int, int); //----- (00428560) -------------------------------------------------------- char __thiscall sub_428560(int this, int a2, int a3, int a4) { int v4; // esi@1 v4 = this; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2072))(a3) == *(_DWORD *)(this + 12) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 772))(a3, *(_DWORD *)(v4 + 4), *(_DWORD *)(v4 + 8)); return 1; } //----- (004285A0) -------------------------------------------------------- void __thiscall sub_4285A0(int this) { *(_DWORD *)(this + 20) = -1; } //----- (004285B0) -------------------------------------------------------- void *__thiscall sub_4285B0(void *this, int a2) { void *v2; // esi@1 int v3; // ST00_4@1 int v4; // eax@1 v2 = this; v3 = a2; *(_DWORD *)this = &off_6A5518; v4 = sub_494970(&dword_D61E090, v3, (int)&a2); *((_DWORD *)v2 + 1) = v4; if ( v4 ) *((_DWORD *)v2 + 2) = *(_WORD *)(v4 + 153); return v2; } // 6A5518: using guessed type int (__stdcall *off_6A5518)(int, int, int); // D61E090: using guessed type int dword_D61E090; //----- (00428620) -------------------------------------------------------- int __thiscall sub_428620(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A5520; *(_DWORD *)(this + 4) = a2; return result; } // 6A5520: using guessed type int (__stdcall *off_6A5520)(int, int, int); //----- (00428640) -------------------------------------------------------- char __thiscall sub_428640(void *this, int a2, int a3, int a4) { void *v4; // edi@1 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1160))(a3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1020))(a3, *((_DWORD *)v4 + 1), 0); return 1; } //----- (00428680) -------------------------------------------------------- int __thiscall sub_428680(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A5528; *(_DWORD *)(this + 8) = &unk_5F5E0FF; *(_WORD *)(this + 12) = -1; *(_DWORD *)(this + 4) = a2; return result; } // 6A5528: using guessed type int (__stdcall *off_6A5528)(int, int, int); //----- (004286B0) -------------------------------------------------------- __int16 __thiscall sub_4286B0(int this) { return *(_WORD *)(this + 12); } //----- (004286C0) -------------------------------------------------------- char *__thiscall sub_4286C0(void *this) { return (char *)this + 4; } //----- (004286D0) -------------------------------------------------------- int __thiscall sub_4286D0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = &off_6A5530; return result; } // 6A5530: using guessed type int (__stdcall *off_6A5530)(int, int, int); //----- (00428700) -------------------------------------------------------- char __thiscall sub_428700(void *this, int a2, int a3, int a4) { void *v4; // edi@1 v4 = this; if ( a3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 1 ) { ++*((_DWORD *)v4 + 1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1012))(a3); } return 1; } //----- (00428740) -------------------------------------------------------- int __thiscall sub_428740(int this) { return *(_DWORD *)(this + 4); } //----- (00428750) -------------------------------------------------------- int __thiscall sub_428750(int this) { int v1; // edi@1 signed int v2; // esi@1 int v3; // edx@2 int v4; // eax@2 v1 = *(_DWORD *)(this + 1064); v2 = 0; while ( 1 ) { v3 = 264 * (v1 & (*(_DWORD *)(this + 1060) + 1)); *(_DWORD *)(this + 1060) = v1 & (*(_DWORD *)(this + 1060) + 1); v4 = *(_DWORD *)(v3 + this + 8); if ( v4 == 1 || v4 == 2 ) { if ( *(_BYTE *)(v3 + this + 264) ) break; } ++v2; if ( v2 >= 4 ) return this + 4; } return 264 * *(_DWORD *)(this + 1060) + this + 4; } //----- (004287B0) -------------------------------------------------------- void *__thiscall sub_4287B0(void *this, void *a2, int a3) { void *v3; // esi@1 v3 = this; *(_DWORD *)this = &off_6A558C; sub_4675D0((int)&unk_D020420, (int)"AxialListPacketBroadcast::AxialListPacketBroadcast"); dword_7508B8[dword_750CB8] = (int)"AxialListPacketBroadcast::AxialListPacketBroadcast"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 1) = a2; if ( sub_4C81E0(a2, a3) ) { *((_DWORD *)v3 + 2) = a3; } else { sub_639100(&unk_86DDD8, (int)"AxialListPacketBroadcast::AxialListPacketBroadcast : Too long packet", a3); *((_DWORD *)v3 + 2) = 0; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListPacketBroadcast::AxialListPacketBroadcast"); return v3; } // 6A558C: using guessed type int (__stdcall *off_6A558C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428890) -------------------------------------------------------- char __thiscall sub_428890(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v6; // eax@5 int v7; // ecx@5 int v8; // edi@13 int v9; // eax@16 int v10; // [sp-4h] [bp-28h]@14 void *v11; // [sp+14h] [bp-10h]@1 v4 = this; v11 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListPacketBroadcast::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListPacketBroadcast::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( !*((_DWORD *)v4 + 2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListPacketBroadcast::ali_Work"); return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) != 2 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) ) { v10 = (int)"AxialListPacketBroadcast::ali_Work"; goto LABEL_19; } v6 = **(_DWORD **)(a2 + 118); v7 = **(_DWORD **)(a3 + 118); if ( v6 != v7 && v6 != -1 && v7 != -1 || !sub_499E90(a2, a3) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 768))(a3) ) goto LABEL_14; if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1948))(a3) ) goto LABEL_16; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 11 ) { if ( a3 != a2 ) { LABEL_17: v10 = (int)"AxialListPacketBroadcast::ali_Work"; goto LABEL_19; } LABEL_16: v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v9 + 12))(v9, a3, *((_DWORD *)v11 + 1)); goto LABEL_17; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3240))(a2) != -1 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3240))(a2); if ( v8 == (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3) ) goto LABEL_16; } LABEL_14: v10 = (int)"AxialListPacketBroadcast::ali_Work"; LABEL_19: --dword_750CB8; sub_467660((int)&unk_D020420, v10); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428A40) -------------------------------------------------------- void *__thiscall sub_428A40(void *this, void *a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4287B0(this, a2, a3); *(_DWORD *)v4 = &off_6A5620; *((_DWORD *)v4 + 3) = a4; return v4; } // 6A5620: using guessed type int (__stdcall *off_6A5620)(int, int, int); //----- (00428A70) -------------------------------------------------------- int __thiscall sub_428A70(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6A558C; sub_4675D0((int)&unk_D020420, (int)"AxialListPacketBroadcast::~AxialListPacketBroadcast"); dword_7508B8[dword_750CB8] = (int)"AxialListPacketBroadcast::~AxialListPacketBroadcast"; dword_750AB8[dword_750CB8] = -1; result = sub_467660((int)&unk_D020420, (int)"AxialListPacketBroadcast::~AxialListPacketBroadcast"); *(_DWORD *)v1 = &off_6A54A8; return result; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A558C: using guessed type int (__stdcall *off_6A558C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428B00) -------------------------------------------------------- char __thiscall sub_428B00(int this, int a2, int a3, int a4) { int v4; // esi@1 char result; // al@2 v4 = this; if ( *(_DWORD *)(this + 12) == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2072))(a3) ) result = sub_428890((void *)v4, a2, a3, a4); else result = 1; return result; } //----- (00428B40) -------------------------------------------------------- void *__thiscall sub_428B40(void *this, void *a2, int a3) { void *v3; // esi@1 v3 = this; *(_DWORD *)this = &off_6A5688; sub_4675D0((int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"); dword_7508B8[dword_750CB8] = (int)"AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 1) = a2; if ( sub_4C81E0(a2, a3) ) { *((_DWORD *)v3 + 2) = a3; } else { sub_639100( &unk_86DDD8, (int)"AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp : Too long packet", a3); *((_DWORD *)v3 + 2) = 0; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"); return v3; } // 6A5688: using guessed type int (__stdcall *off_6A5688)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428C20) -------------------------------------------------------- int __thiscall sub_428C20(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6A5688; sub_4675D0((int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"); dword_7508B8[dword_750CB8] = (int)"AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"; dword_750AB8[dword_750CB8] = -1; result = sub_467660( (int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"); *(_DWORD *)v1 = &off_6A54A8; return result; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A5688: using guessed type int (__stdcall *off_6A5688)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428CB0) -------------------------------------------------------- char __thiscall sub_428CB0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 char result; // al@2 int v6; // eax@5 int v7; // edx@5 int v8; // eax@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListPacketBroadcast4ItemPickUp::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) ) { v6 = **(_DWORD **)(a2 + 118); v7 = **(_DWORD **)(a3 + 118); if ( v6 == v7 || v6 == -1 || v7 == -1 ) { if ( sub_499E90(a2, a3) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 768))(a3) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v8 + 12))(v8, a3, *((_DWORD *)v4 + 1)); } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::ali_Work"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListPacketBroadcast4ItemPickUp::ali_Work"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428DF0) -------------------------------------------------------- char __stdcall sub_428DF0(int a1, void *a2, int a3) { int v3; // eax@2 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"AxialListBossFind::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListBossFind::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1156))(a2) != 3 ) { v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1804))(a2); if ( v3 ) { v4 = *(_DWORD *)v3; if ( v4 ) { if ( *(_DWORD *)(v4 + 95) == 2 ) sub_549A40(a2, (int)sub_5789F0, 0, 0, 0, 0); } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListBossFind::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00428EE0) -------------------------------------------------------- char __thiscall sub_428EE0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@4 int v6; // ecx@4 int v7; // eax@4 int v8; // esi@5 int v9; // eax@7 int v11; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListShowID::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListShowID::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( sub_499E90(a2, a3) ) { *(_WORD *)(*((_DWORD *)v4 + 2) + 30 * **((_BYTE **)v4 + 2) + 1) = *(_WORD *)(a3 + 4); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1388))(a3); v6 = *((_DWORD *)v4 + 2) + 30 * **((_BYTE **)v4 + 2) + 3; *(_DWORD *)v6 = *(_DWORD *)v5; *(_DWORD *)(v6 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v6 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(v6 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(v6 + 16) = *(_DWORD *)(v5 + 16); *(_BYTE *)(*((_DWORD *)v4 + 2) + 30 * **((_BYTE **)v4 + 2) + 23) = *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1056))(a3) + 1160); *(_BYTE *)(*((_DWORD *)v4 + 2) + 30 * **((_BYTE **)v4 + 2) + 24) = *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1056))(a3) + 1161); *(_WORD *)(*((_DWORD *)v4 + 2) + 30 * **((_BYTE **)v4 + 2) + 25) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1056))(a3) + 1162); *(_DWORD *)(*((_DWORD *)v4 + 2) + 30 * (**((_BYTE **)v4 + 2))++ + 27) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2072))(a3); v7 = *((_DWORD *)v4 + 2); if ( *(_BYTE *)v7 >= 0x1Du ) { v8 = 30 * *(_BYTE *)v7 + 3; if ( sub_4C81E0(&off_849C18, v8) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"AxialListShowID::ali_Work : Packet Too Long", v8); } **((_BYTE **)v4 + 2) = 0; } } v11 = (int)"AxialListShowID::ali_Work"; } else { v11 = (int)"AxialListShowID::ali_Work"; } --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004290E0) -------------------------------------------------------- bool __thiscall sub_4290E0(int this, int a2, int a3) { int v3; // edi@1 bool result; // al@2 v3 = this; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1800))(a3) == *(_WORD *)(this + 4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) ) { if ( sub_427F60(v3, a3) ) ++*(_DWORD *)(v3 + 12); } result = *(_DWORD *)(v3 + 12) <= *(_DWORD *)(v3 + 16); } else { result = 1; } return result; } //----- (00429160) -------------------------------------------------------- bool __thiscall sub_429160(void *this, int a2, int a3) { int v3; // edi@1 bool result; // al@2 v3 = (int)this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2204))(a3) && *(_BYTE *)(*(_DWORD *)(a3 + 118) + 4) != 3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) ) { if ( sub_427F60(v3, a3) ) ++*(_DWORD *)(v3 + 12); } result = *(_DWORD *)(v3 + 12) <= *(_DWORD *)(v3 + 16); } else { result = 1; } return result; } //----- (004291E0) -------------------------------------------------------- bool __thiscall sub_4291E0(void *this, int a2, int a3) { int v3; // edi@1 bool result; // al@2 v3 = (int)this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 6 ) { if ( sub_427F60(v3, a3) ) ++*(_DWORD *)(v3 + 12); } result = *(_DWORD *)(v3 + 12) <= *(_DWORD *)(v3 + 16); } else { result = 1; } return result; } //----- (00429260) -------------------------------------------------------- bool __thiscall sub_429260(void *this, int a2, int a3) { int v3; // edi@1 bool result; // al@2 v3 = (int)this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 4 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 6 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2088))(a3) == *(_DWORD *)(v3 + 8) ) { if ( sub_427F60(v3, a3) ) ++*(_DWORD *)(v3 + 12); } } result = *(_DWORD *)(v3 + 12) <= *(_DWORD *)(v3 + 16); } else { result = 1; } return result; } //----- (00429300) -------------------------------------------------------- char __thiscall sub_429300(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // esi@2 __int16 v6; // ax@2 int v7; // eax@2 int v8; // edi@2 int v10; // eax@4 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { v5 = off_849C18; v6 = *(_WORD *)off_849C18 & 0x3FF | (*((_WORD *)v4 + 2) << 10); *(_WORD *)off_849C18 = v6; *(_WORD *)v5 = v6 ^ (v6 ^ *((_WORD *)v4 + 4)) & 0x3FF; *(_DWORD *)((char *)v5 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *((_BYTE *)v5 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1240))(a3); *((_BYTE *)v5 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1244))(a3); *((_WORD *)v5 + 4) = *((_WORD *)v4 + 6); v7 = *(_DWORD *)(a3 + 122); *(_DWORD *)((char *)v5 + 10) = *(_DWORD *)v7; *(_DWORD *)((char *)v5 + 14) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v5 + 18) = *(_DWORD *)(v7 + 8); v8 = *(_DWORD *)(a3 + 102); *(_DWORD *)((char *)v5 + 22) = *(_DWORD *)v8; *(_DWORD *)((char *)v5 + 26) = *(_DWORD *)(v8 + 4); if ( !sub_4C81E0(&off_849C18, 30) ) { sub_639100(&unk_86DDD8, (int)"AxialListMobKillLog::ali_Work : Packet Too Long", 30); return 1; } v10 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v10); } return 1; } // 14D148D0: using guessed type int dword_14D148D0; //----- (004293F0) -------------------------------------------------------- char __thiscall sub_4293F0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // edi@2 int v6; // ST18_4@7 char v8[4]; // [sp+Ch] [bp-18h]@4 int v9; // [sp+10h] [bp-14h]@4 int v10; // [sp+14h] [bp-10h]@4 int v11; // [sp+18h] [bp-Ch]@4 int v12; // [sp+1Ch] [bp-8h]@4 unsigned int v13; // [sp+20h] [bp-4h]@1 int v14; // [sp+24h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 4 ) { v5 = sub_418BA0(dword_D9FBF28, *(_WORD *)(a3 + 4)); if ( v5 ) { if ( *(_DWORD *)v5 ) { v12 = 0; v11 = 0; v10 = 0; v9 = 0; *(_DWORD *)v8 = 0; strncpy(v8, "Gate", 0x14u); if ( sub_427B00(*(_DWORD *)v5 + 64, (int)v8) ) { if ( *((_DWORD *)v4 + 2) ) { v6 = sub_402710(a2, *((_DWORD *)v4 + 2)); if ( sub_402710(a2, a3) < (unsigned int)v6 ) { *((_DWORD *)v4 + 2) = a3; *((_WORD *)v4 + 2) = *(_WORD *)(a3 + 4); } } else { *((_DWORD *)v4 + 2) = a3; *((_WORD *)v4 + 2) = *(_WORD *)(a3 + 4); } } } } } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (004294C0) -------------------------------------------------------- char __thiscall sub_4294C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListItemErase4All::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListItemErase4All::ali_Work"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 2232))(*((_WORD *)v4 + 2), -1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListItemErase4All::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00429570) -------------------------------------------------------- char __thiscall sub_429570(void *this, int a2, int a3, int a4) { void *v4; // edi@1 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) sub_4282E0(v4, a3); return 1; } //----- (004295A0) -------------------------------------------------------- bool __thiscall sub_4295A0(void *this, int a2) { void *v2; // esi@1 bool v3; // bl@1 int v5; // [sp+0h] [bp-1Ch]@0 int v6; // [sp+4h] [bp-18h]@0 int v7; // [sp+8h] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectCollector::ala_CompareGuild"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectCollector::ala_CompareGuild"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__stdcall **)(int, int, int, _DWORD))(*(_DWORD *)a2 + 2088))( v5, v6, v7, "AxialListObjectCollector::ala_CompareGuild") == *((_DWORD *)v2 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectCollector::ala_CompareGuild"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00429650) -------------------------------------------------------- char __thiscall sub_429650(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@1 char result; // al@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectCollector::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectCollector::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v5 = (int (__thiscall *)(_DWORD, _DWORD))*((_DWORD *)v4 + 3); if ( v5 ) { if ( (unsigned __int8)v5(v4, a3) ) (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a3 + 1020))(a3, *((_DWORD *)v4 + 1), 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectCollector::ali_Work"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectCollector::ali_Work"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00429740) -------------------------------------------------------- int __thiscall sub_429740(int this, const char *a2, int a3) { int v3; // ebx@1 int v4; // esi@1 v3 = this; *(_DWORD *)this = &off_6A58FC; v4 = this + 4; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; sub_4675D0((int)&unk_D020420, (int)"AxialListNPCSearch::AxialListNPCSearch"); dword_7508B8[dword_750CB8] = (int)"AxialListNPCSearch::AxialListNPCSearch"; dword_750AB8[dword_750CB8++] = -1; *(_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, a2, 0x20u); *(_DWORD *)(v3 + 36) = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNPCSearch::AxialListNPCSearch"); return v3; } // 6A58FC: using guessed type int (__stdcall *off_6A58FC)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00429820) -------------------------------------------------------- char __thiscall sub_429820(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@3 int v6; // eax@4 int v7; // eax@5 int v8; // ecx@5 int v10; // [sp-8h] [bp-48h]@5 char v11; // [sp+10h] [bp-30h]@5 unsigned int v12; // [sp+30h] [bp-10h]@1 int v13; // [sp+3Ch] [bp-4h]@1 int v14; // [sp+40h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNPCSearch::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListNPCSearch::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( !a3 || !*((_DWORD *)v4 + 9) ) { --dword_750CB8; goto LABEL_10; } v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1804))(a3); if ( !v5 || (v6 = *(_DWORD *)v5) == 0 ) { --dword_750CB8; LABEL_10: v8 = (int)&unk_D020420; v10 = (int)"AxialListNPCSearch::ali_Work"; v13 = -1; goto LABEL_11; } sub_418A80(&v11, (const char *)(v6 + 2)); LOBYTE(v7) = sub_427A70((int)((char *)v4 + 4), (int)&v11); v13 = -1; v10 = (int)"AxialListNPCSearch::ali_Work"; v8 = (int)&unk_D020420; if ( v7 ) { **((_WORD **)v4 + 9) = *(_WORD *)(a3 + 4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNPCSearch::ali_Work"); return 0; } --dword_750CB8; LABEL_11: sub_467660(v8, v10); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00429940) -------------------------------------------------------- void *__thiscall sub_429940(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; *(_DWORD *)this = &off_6A5924; sub_4675D0((int)&unk_D020420, (int)"AxialQuesterFind::AxialQuesterFind"); dword_7508B8[dword_750CB8] = (int)"AxialQuesterFind::AxialQuesterFind"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v4 + 1) = a2; *((_DWORD *)v4 + 2) = a3; *((_DWORD *)v4 + 3) = a4; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialQuesterFind::AxialQuesterFind"); return v4; } // 6A5924: using guessed type int (__stdcall *off_6A5924)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004299F0) -------------------------------------------------------- char __thiscall sub_4299F0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialQuesterFind::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialQuesterFind::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 && *((_DWORD *)v4 + 2) && *((_DWORD *)v4 + 3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) ) { **((_WORD **)v4 + 2) = *(_WORD *)(a3 + 4); **((_WORD **)v4 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1360))(a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialQuesterFind::ali_Work"); return 0; } --dword_750CB8; } else { --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"AxialQuesterFind::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00429B20) -------------------------------------------------------- bool __thiscall sub_429B20(int this) { ++*(_DWORD *)(this + 20); return *(_DWORD *)(this + 20) < (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 2; } //----- (00429B40) -------------------------------------------------------- int __thiscall sub_429B40(int this) { return *(_DWORD *)(*(_DWORD *)(this + 4) + 4 * *(_DWORD *)(this + 20)); } //----- (00429B50) -------------------------------------------------------- int __thiscall sub_429B50(int this) { return (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 2; } //----- (00429B60) -------------------------------------------------------- int __thiscall sub_429B60(int this) { return (*(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)) >> 2; } //----- (00429B70) -------------------------------------------------------- char __thiscall sub_429B70(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // eax@3 void (__thiscall *v6)(_DWORD); // edx@4 void *v7; // esi@7 int v8; // eax@7 int v9; // eax@9 v4 = this; if ( a3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { v5 = *(_DWORD *)a3; if ( *((_DWORD *)v4 + 2) == 18 ) v6 = *(void (__thiscall **)(_DWORD))(v5 + 2044); else v6 = *(void (__thiscall **)(_DWORD))(v5 + 2048); v6(a3); if ( *(_DWORD *)(a3 + 122) ) { v7 = off_849C18; *(_WORD *)off_849C18 = 1090; *(_DWORD *)((char *)v7 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); v8 = *(_DWORD *)(a3 + 122); *(_DWORD *)((char *)v7 + 6) = *(_DWORD *)v8; *(_DWORD *)((char *)v7 + 10) = *(_DWORD *)(v8 + 4); *(_DWORD *)((char *)v7 + 14) = *(_DWORD *)(v8 + 8); *(_DWORD *)((char *)v7 + 18) = **(_DWORD **)(a3 + 102); *(_DWORD *)((char *)v7 + 22) = *(_DWORD *)(*(_DWORD *)(a3 + 102) + 4); *((_WORD *)v7 + 13) = *(_WORD *)(*(_DWORD *)(a3 + 122) + 64); *((_DWORD *)v7 + 7) = *(_DWORD *)(*(_DWORD *)(a3 + 122) + 60); *((_BYTE *)v7 + 32) = *((_DWORD *)v4 + 2) == 18; if ( sub_4C81E0(&off_849C18, 33) ) { v9 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v9); } else { sub_639100(&unk_86DDD8, (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen : Packet Too Long", 33); } } (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a3 + 772))(a3, *((_DWORD *)v4 + 1), *((_DWORD *)v4 + 2)); } return 1; } // 14D148D0: using guessed type int dword_14D148D0; //----- (00429C80) -------------------------------------------------------- int __thiscall sub_429C80(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = &off_6A596C; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 12) = a3 != 0 ? (int)sub_4295A0 : 0; return result; } // 6A596C: using guessed type int (__stdcall *off_6A596C)(int, int, int); //----- (00429CB0) -------------------------------------------------------- char __thiscall sub_429CB0(int this) { int v1; // edi@1 unsigned int v2; // eax@1 int v3; // esi@2 v1 = this; v2 = *(_DWORD *)(this + 4); if ( v2 != *(_DWORD *)(this + 8) ) { v3 = *(_DWORD *)(this + 4); if ( v2 < *(_DWORD *)(this + 8) ) { do { sub_451380(*(_DWORD *)v3, v1, v3); v3 += 4; } while ( (unsigned int)v3 < *(_DWORD *)(v1 + 8) ); } } return 1; } //----- (00429CE0) -------------------------------------------------------- char __thiscall sub_429CE0(int this) { int v1; // edi@1 unsigned int v2; // eax@1 unsigned int v3; // esi@2 v1 = this; v2 = *(_DWORD *)(this + 32); if ( v2 != *(_DWORD *)(this + 36) ) { v3 = *(_DWORD *)(this + 32); if ( v2 < *(_DWORD *)(this + 36) ) { do { (*(void (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)v3 + 2192))(v1 + 12, v1 + 24); v3 += 4; } while ( v3 < *(_DWORD *)(v1 + 36) ); } } return 1; } //----- (00429D20) -------------------------------------------------------- char __thiscall sub_429D20(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // esi@1 int v6; // eax@6 int v7; // eax@6 int v8; // edx@7 int v9; // ecx@7 int v11; // [sp+14h] [bp+Ch]@6 v4 = a3; v5 = this; if ( a3 ) { if ( a2 ) { if ( *(_DWORD *)(this + 4) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1180))(a3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) != 3 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1180))(a3); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 72))(v6); v7 = sub_402710(v4, a2); if ( (unsigned int)v7 < *(_DWORD *)(v5 + 8) ) { v8 = *(_DWORD *)(v5 + 4); v9 = *(_DWORD *)v8; if ( *(_DWORD *)v8 != *(_DWORD *)(v8 + 4) ) { while ( v11 != *(_DWORD *)v9 ) { v9 += 4; if ( v9 == *(_DWORD *)(*(_DWORD *)(v5 + 4) + 4) ) return 1; } *(_DWORD *)(v5 + 8) = v7; *(_WORD *)(v5 + 12) = *(_WORD *)(v4 + 4); } } } } } } } return 1; } //----- (00429DD0) -------------------------------------------------------- int __thiscall sub_429DD0(int this) { *(_DWORD *)this = &off_6A5974; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; return this; } // 429DD0: could not find valid save-restore pair for ebx // 6A5974: using guessed type int (__stdcall *off_6A5974)(int, int, int); //----- (00429E10) -------------------------------------------------------- void __thiscall sub_429E10(int this) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = this; *(_DWORD *)this = &off_6A5974; v2 = *(const void **)(this + 8); v3 = *(void **)(v1 + 4); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 8) = v3; } if ( *(_DWORD *)(v1 + 4) ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)v1 = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A5974: using guessed type int (__stdcall *off_6A5974)(int, int, int); //----- (00429E70) -------------------------------------------------------- int __thiscall sub_429E70(int this, int a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 const void *v7; // ecx@1 void *v8; // edi@1 v6 = this; *(_DWORD *)this = &off_6A597C; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 4) = a3; *(_DWORD *)(this + 8) = a2; *(_DWORD *)(this + 12) = *(_DWORD *)a4; *(_DWORD *)(this + 16) = *(_DWORD *)(a4 + 4); *(_DWORD *)(this + 20) = *(_DWORD *)(a4 + 8); *(_DWORD *)(this + 24) = a5; *(_DWORD *)(this + 28) = a6; v7 = *(const void **)(this + 36); v8 = *(void **)(v6 + 32); if ( v8 != v7 ) { memmove_0(v8, v7, 0); *(_DWORD *)(v6 + 36) = v8; } return v6; } // 6A597C: using guessed type int (__stdcall *off_6A597C)(int, int, int); //----- (00429EF0) -------------------------------------------------------- void __thiscall sub_429EF0(int this) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = this; *(_DWORD *)this = &off_6A597C; v2 = *(const void **)(this + 36); v3 = *(void **)(v1 + 32); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 36) = v3; } if ( *(_DWORD *)(v1 + 32) ) operator delete(*(void **)(v1 + 32)); *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 36) = 0; *(_DWORD *)(v1 + 40) = 0; *(_DWORD *)v1 = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A597C: using guessed type int (__stdcall *off_6A597C)(int, int, int); //----- (00429F60) -------------------------------------------------------- int __thiscall sub_429F60(int this) { int v1; // esi@1 const void *v2; // eax@1 void *v3; // edi@1 v1 = this; *(_DWORD *)this = &off_6A5984; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; sub_4675D0((int)&unk_D020420, (int)"AxialListNPCSearch::AxialListNPCSearch"); dword_7508B8[dword_750CB8] = (int)"AxialListNPCSearch::AxialListNPCSearch"; dword_750AB8[dword_750CB8++] = -1; v2 = *(const void **)(v1 + 8); v3 = *(void **)(v1 + 4); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 8) = v3; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNPCSearch::AxialListNPCSearch"); return v1; } // 6A5984: using guessed type int (__stdcall *off_6A5984)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042A030) -------------------------------------------------------- void __thiscall sub_42A030(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6A5984; if ( *(_DWORD *)(this + 4) ) operator delete(*(void **)(this + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)v1 = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A5984: using guessed type int (__stdcall *off_6A5984)(int, int, int); //----- (0042A070) -------------------------------------------------------- int __thiscall sub_42A070(int this) { *(_DWORD *)this = &off_6A598C; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; return this; } // 42A070: could not find valid save-restore pair for ebx // 6A598C: using guessed type int (__stdcall *off_6A598C)(int, int, int); //----- (0042A0B0) -------------------------------------------------------- void __thiscall sub_42A0B0(int this) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = this; *(_DWORD *)this = &off_6A598C; v2 = *(const void **)(this + 8); v3 = *(void **)(v1 + 4); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 8) = v3; } if ( *(_DWORD *)(v1 + 4) ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)v1 = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A598C: using guessed type int (__stdcall *off_6A598C)(int, int, int); //----- (0042A110) -------------------------------------------------------- int __thiscall sub_42A110(int this, int a2, int a3, char a4) { int v4; // esi@1 const void *v5; // ecx@1 void *v6; // edi@1 v4 = this; *(_DWORD *)this = &off_6A5994; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_BYTE *)(this + 12) = a4; v5 = *(const void **)(this + 20); v6 = *(void **)(v4 + 16); if ( v6 != v5 ) { memmove_0(v6, v5, 0); *(_DWORD *)(v4 + 20) = v6; } return v4; } // 6A5994: using guessed type int (__stdcall *off_6A5994)(int, int, int); //----- (0042A170) -------------------------------------------------------- void __thiscall sub_42A170(int this) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = this; *(_DWORD *)this = &off_6A5994; v2 = *(const void **)(this + 20); v3 = *(void **)(v1 + 16); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 20) = v3; } if ( *(_DWORD *)(v1 + 16) ) operator delete(*(void **)(v1 + 16)); *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)v1 = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A5994: using guessed type int (__stdcall *off_6A5994)(int, int, int); //----- (0042A1D0) -------------------------------------------------------- int __thiscall sub_42A1D0(int this, char a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6A599C; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_BYTE *)(this + 20) = a2; return result; } // 6A599C: using guessed type int (__stdcall *off_6A599C)(int, int, int); //----- (0042A1F0) -------------------------------------------------------- void __thiscall sub_42A1F0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6A599C; if ( *(_DWORD *)(this + 4) ) operator delete(*(void **)(this + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)v1 = &off_6A54A8; } // 6A54A8: using guessed type int (__stdcall *off_6A54A8)(int, int, int); // 6A599C: using guessed type int (__stdcall *off_6A599C)(int, int, int); //----- (0042A230) -------------------------------------------------------- char __thiscall sub_42A230(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListRevival::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListRevival::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1232))() == 2 ) sub_4242C0((int)((char *)v4 + 4), (unsigned int)&a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListRevival::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042A2F0) -------------------------------------------------------- char __thiscall sub_42A2F0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListBanArea::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListBanArea::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v5 = a3; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1236))(v5) && sub_427B70( *((_DWORD *)v4 + 1), *((_DWORD *)v4 + 2), **(_DWORD **)(v5 + 102), *(_DWORD *)(*(_DWORD *)(v5 + 102) + 4)) ) sub_4242C0((int)((char *)v4 + 32), (unsigned int)&a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListBanArea::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042A3D0) -------------------------------------------------------- char __thiscall sub_42A3D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNPCSearch::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListNPCSearch::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( a3 ) sub_4242C0((int)((char *)v4 + 4), (unsigned int)&a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNPCSearch::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042A480) -------------------------------------------------------- char __thiscall sub_42A480(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListPlayerList::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListPlayerList::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1232))() == 2 ) sub_4242C0((int)((char *)v4 + 4), (unsigned int)&a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListPlayerList::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042A540) -------------------------------------------------------- char __thiscall sub_42A540(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edi@1 int v6; // eax@3 unsigned int v7; // ebx@3 int v8; // eax@3 float v9; // ST04_4@4 float v10; // ST00_4@4 int v12; // [sp+4h] [bp-2Ch]@2 unsigned int v13; // [sp+20h] [bp-10h]@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListAreaObjectList::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListAreaObjectList::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v5 = a3; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == *((_BYTE *)v4 + 12) ) { v6 = *(_DWORD *)(v5 + 102); v7 = *(_DWORD *)(v6 + 4); v13 = *(_DWORD *)v6; v8 = sub_62A340(*(_DWORD *)(*((_DWORD *)v4 + 1) + 20) + 36, *((_DWORD *)v4 + 2)); if ( v8 ) { v9 = (double)v7; v10 = (double)v13; if ( (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v8)(v8, LODWORD(v10), LODWORD(v9)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5) != 3 ) sub_4242C0((int)((char *)v4 + 16), (unsigned int)&a3); } } v12 = (int)"AxialListAreaObjectList::ali_Work"; } else { v12 = (int)"AxialListAreaObjectList::ali_Work"; } --dword_750CB8; sub_467660((int)&unk_D020420, v12); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042A670) -------------------------------------------------------- char __thiscall sub_42A670(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 v4 = a3; v5 = this; if ( a3 && a2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) != 3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) == *((_BYTE *)v5 + 20) ) sub_4242C0((int)((char *)v5 + 4), (unsigned int)&a3); return 1; } //----- (0042A6C0) -------------------------------------------------------- int __thiscall sub_42A6C0(void *this, int a2) { sub_5C0AA0(a2, (int)((char *)this + 16)); return a2; } //----- (0042A700) -------------------------------------------------------- signed int __thiscall sub_42A700(void *this, const char *a2) { int v2; // edi@1 signed int result; // eax@2 int v4; // eax@3 int i; // esi@5 int v6; // eax@6 v2 = (int)this; if ( sub_627480(this, a2, 18, 36) && (v4 = *(_DWORD *)(v2 + 52)) != 0 && *(_DWORD *)(v4 + 40) ) { for ( i = 0; i < sub_418AF0(v2); ++i ) { v6 = sub_626BC0(v2, i); _mbsupr((unsigned __int8 *)v6); } result = 1; } else { result = 0; } return result; } //----- (0042A770) -------------------------------------------------------- signed int __thiscall sub_42A770(void *this, const unsigned __int8 *a2) { int v2; // edi@1 const unsigned __int8 *v3; // eax@1 const unsigned __int8 v4; // cl@2 int i; // esi@3 int v6; // eax@4 int v7; // ecx@4 unsigned __int8 v9; // [sp+Ch] [bp-84h]@2 unsigned int v10; // [sp+8Ch] [bp-4h]@1 int v11; // [sp+90h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = (int)this; v3 = a2; do { v4 = *v3; v3[&v9 - a2] = *v3; ++v3; } while ( v4 ); _mbsupr(&v9); for ( i = 0; i < sub_418AF0(v2); ++i ) { v6 = sub_626BC0(v2, i); v7 = *(_DWORD *)(v6 + 32); if ( v7 ) { if ( v7 == 1 && _mbsstr(&v9, (const unsigned __int8 *)v6) ) return 1; } else { if ( !_mbsicmp(a2, (const unsigned __int8 *)v6) ) return 1; } } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (0042A830) -------------------------------------------------------- int __thiscall sub_42A830(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 10; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 10; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; return result; } //----- (0042A860) -------------------------------------------------------- char *__thiscall sub_42A860(void *this) { return (char *)this + 28; } //----- (0042A870) -------------------------------------------------------- char *__thiscall sub_42A870(void *this) { return (char *)this + 296; } //----- (0042A880) -------------------------------------------------------- int __thiscall sub_42A880(int this, void *a2) { int result; // eax@1 result = this; if ( *(_BYTE *)(this + 43) ) { memcpy(a2, (const void *)this, 0x2Bu); *(_BYTE *)(this + 43) = 0; } return result; } //----- (0042A8B0) -------------------------------------------------------- FILE *__thiscall sub_42A8B0(int this, int a2, FILE *a3, int a4, int a5) { bool v5; // zf@1 FILE *result; // eax@2 v5 = *(_DWORD *)(this + 12) == 4; *(_DWORD *)this = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * a5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * a5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( v5 ) { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::TimeScheduler::ts_Set - ", a4); } else { result = a3; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 16) = sub_5673F0; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 12) = a4; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0042A910) -------------------------------------------------------- bool __thiscall sub_42A910(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 12); return v1 == 2 || v1 == 3; } //----- (0042A930) -------------------------------------------------------- void __thiscall sub_42A930(int this) { *(_DWORD *)(this + 8) = 0; *(_BYTE *)this = 0; } //----- (0042A940) -------------------------------------------------------- int __thiscall sub_42A940(int this) { int result; // eax@1 result = *(_DWORD *)(this + 8); if ( !result ) result = *(_DWORD *)(this + 12); return result; } //----- (0042A950) -------------------------------------------------------- int __thiscall sub_42A950(int this, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 __int16 v7; // dx@2 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = a3; *(_DWORD *)(this + 8) = a4; *(_BYTE *)(this + 16) = 0; *(_DWORD *)(this + 17) = 0; *(_BYTE *)(this + 22) = 0; if ( a5 ) v7 = *(_WORD *)a5; else v7 = 0; *(_WORD *)(this + 12) = v7; *(_DWORD *)(this + 24) = a6; *(_DWORD *)(this + 28) = 1000; *(_DWORD *)(this + 32) = 0; *(_BYTE *)(this + 21) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 1000; return result; } //----- (0042A9C0) -------------------------------------------------------- int __thiscall sub_42A9C0(int this) { return *(_DWORD *)(this + 9528); } //----- (0042A9D0) -------------------------------------------------------- char __thiscall sub_42A9D0(int this, char a2) { char result; // al@1 result = a2; if ( *(_DWORD *)(this + 9528) != *(_DWORD *)(this + 9524) || *(_BYTE *)(this + 9533) != a2 ) *(_BYTE *)(this + 9532) = 1; *(_BYTE *)(this + 9533) = a2; return result; } //----- (0042AA00) -------------------------------------------------------- bool __thiscall sub_42AA00(int this) { return *(_DWORD *)(this + 32800) != 0; } //----- (0042AA10) -------------------------------------------------------- bool __thiscall sub_42AA10(int this) { return *(_BYTE *)(this + 9533) != 0; } //----- (0042AA20) -------------------------------------------------------- signed __int16 __thiscall sub_42AA20(void *this, int a2, __int16 a3) { int v3; // esi@1 int v4; // eax@3 signed __int16 result; // ax@4 int v6; // eax@5 int v7; // eax@7 void *v8; // eax@12 v3 = (int)this; if ( a2 >= 792 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a2); LABEL_4: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::EraseAbstate : Not Find Abstate Index :", a2); return a3; } v4 = dword_8772F0[a2]; if ( !v4 ) goto LABEL_4; v6 = *(_DWORD *)v4; if ( v6 ) { v7 = *(_DWORD *)(v6 + 244); if ( v7 != 1 && v7 && v7 != 9 ) { result = 7282; } else { if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)this + 996))(a2) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 1616))(v3, a2); v8 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1324))(v3); sub_40A820(v8, v3, a2); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1320))(v3); result = 7280; } else { result = a3; } } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::EraseAbstate : Not Find AbnormalStateInfo :", a2); result = a3; } return result; } // 8772F0: using guessed type int dword_8772F0[]; //----- (0042AB10) -------------------------------------------------------- char __stdcall sub_42AB10(int a1, int a2, int a3, int a4) { return 0; } //----- (0042AB20) -------------------------------------------------------- char __stdcall sub_42AB20(int a1, int a2, int a3, int a4, int a5) { return 0; } //----- (0042AB30) -------------------------------------------------------- int __thiscall sub_42AB30(int this, int a2, int a3, int a4) { int result; // eax@2 if ( *(_DWORD *)(this + 9668) ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)(this + 9668) + 1476))(a2, a3, a4); return result; } //----- (0042AB60) -------------------------------------------------------- int __thiscall sub_42AB60(int this) { int v1; // esi@1 void *v2; // eax@1 int v3; // ST04_4@1 int v4; // eax@1 char v6; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v1 = this; v2 = off_849C18; *(_WORD *)off_849C18 = 9277; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); sub_4287B0(&v6, &off_849C18, 4); v3 = *(_DWORD *)(v1 + 102); v7 = 0; v4 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v4, v3, 0, 0, (int)&v6, 1, 65535); v7 = -1; return sub_428A70(&v6); } //----- (0042AC00) -------------------------------------------------------- int __stdcall sub_42AC00(int a1, int a2, int a3, int a4, int a5, int a6) { *(_DWORD *)a2 = 0; return 0; } //----- (0042AC20) -------------------------------------------------------- void __userpurge sub_42AC20(int a1, int a2, int a3, int a4, int a5) { int v5; // edi@1 int v6; // ebx@1 int v7; // edx@18 void (__thiscall *v8)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@19 int v9; // [sp-Ch] [bp-14h]@19 signed int v10; // [sp-8h] [bp-10h]@19 int v11; // [sp+18h] [bp+10h]@2 v5 = a5; v6 = a1; if ( a5 ) { v11 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 1256))(a3, a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 40))(a3) ) { (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)a3 + 1468))(a3, v6, v11, v11); } else { if ( *(_BYTE *)(v5 + 17) && *(_BYTE *)(v5 + 20) && *(_BYTE *)(v5 + 19) && *(_BYTE *)(v5 + 22) || *(int (__stdcall *(***)[4])(int))(v6 + 7884) != off_8551E4 || !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 201) ) { if ( *(_BYTE *)(v5 + 17) && *(_BYTE *)(v5 + 20) && *(_BYTE *)(v5 + 19) && *(_BYTE *)(v5 + 22) || *(int (__stdcall *(***)[4])(int))(v6 + 7884) != off_8551E8 || !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 202) ) { v7 = *(_DWORD *)a3; if ( a4 < v11 ) { v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(v7 + 1472); v10 = 1000; v9 = a4; } else { v10 = v11; v9 = v11; v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(v7 + 1468); } v8(a3, v6, v9, v10); (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 3028))(a3); } else { (*(void (__thiscall **)(int, int, _DWORD, signed int))(*(_DWORD *)a3 + 1472))(a3, v6, 0, 1000); (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1252))(a3, a4); *(_BYTE *)(v5 + 21) = 1; } } else { (*(void (__thiscall **)(int, int, _DWORD, signed int))(*(_DWORD *)a3 + 1472))(a3, v6, 0, 1000); (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1252))(a3, a4); *(_BYTE *)(v5 + 21) = 1; } } } } // 42AC20: could not find valid save-restore pair for esi // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); //----- (0042AD80) -------------------------------------------------------- int __thiscall sub_42AD80(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 996))(198); } //----- (0042AD90) -------------------------------------------------------- int __thiscall sub_42AD90(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 7900) = a2; return result; } //----- (0042ADA0) -------------------------------------------------------- int __thiscall sub_42ADA0(int this) { return *(_DWORD *)(this + 7900); } //----- (0042ADB0) -------------------------------------------------------- int __thiscall sub_42ADB0(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 996))(326); } //----- (0042ADC0) -------------------------------------------------------- __int16 __thiscall sub_42ADC0(int this) { return *(_WORD *)(this + 161184); } //----- (0042ADD0) -------------------------------------------------------- int __thiscall sub_42ADD0(int this, unsigned __int16 a2, int a3) { int result; // eax@4 if ( a3 ) *(_BYTE *)a3 = 0; if ( a2 < *(_WORD *)(this + 4) ) { if ( a3 ) *(_BYTE *)a3 = *(_BYTE *)(*(_DWORD *)(this + 8) + 12 * a2 + 8); result = *(_DWORD *)(*(_DWORD *)(this + 8) + 12 * a2); } else { result = 0; } return result; } //----- (0042AE20) -------------------------------------------------------- char __thiscall sub_42AE20(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@2 int v7; // eax@5 int v8; // eax@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListTargetInform::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListTargetInform::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2564))(a3) == *((_DWORD *)v4 + 2) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 9218; *((_BYTE *)v5 + 2) = *((_BYTE *)v4 + 12); if ( !*((_DWORD *)v4 + 2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListTargetInform::ali_Work"); return 0; } if ( (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v4 + 2) + 2572))() == 1 ) { v7 = 0; if ( *((_DWORD *)v4 + 1) ) { *(_WORD *)((char *)v5 + 3) = *(_WORD *)(*((_DWORD *)v4 + 1) + 4); *(_DWORD *)((char *)v5 + 5) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 1256))(); *(_DWORD *)((char *)v5 + 9) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 1264))(); *(_DWORD *)((char *)v5 + 13) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 1260))(); *(_DWORD *)((char *)v5 + 17) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 1268))(); *(_DWORD *)((char *)v5 + 21) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 3464))(); *(_DWORD *)((char *)v5 + 25) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 3468))(); *((_WORD *)v5 + 15) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 2024))(); *((_BYTE *)v5 + 29) = (*(int (**)(void))(**((_DWORD **)v4 + 1) + 1240))(); LABEL_9: if ( sub_4C81E0(&off_849C18, 32) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, a3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"TargetObject::to_SendInform : Packet Too Long", 32); } (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)a3 + 2560))( a3, *((_DWORD *)v4 + 1), *((_DWORD *)v4 + 3) + 1); goto LABEL_13; } } else { v7 = 0; } *(_WORD *)((char *)v5 + 3) = -1; *(_DWORD *)((char *)v5 + 5) = v7; *(_DWORD *)((char *)v5 + 9) = v7; *(_DWORD *)((char *)v5 + 13) = v7; *(_DWORD *)((char *)v5 + 17) = v7; *(_DWORD *)((char *)v5 + 21) = v7; *(_DWORD *)((char *)v5 + 25) = v7; *((_WORD *)v5 + 15) = 0; *((_BYTE *)v5 + 29) = 0; goto LABEL_9; } LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListTargetInform::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042B050) -------------------------------------------------------- int __thiscall sub_42B050(void *this, int a2, signed int a3) { void *v3; // esi@1 int v4; // ST04_4@3 int v5; // eax@3 int (__stdcall **v7)(int, int, int); // [sp+Ch] [bp-20h]@3 int v8; // [sp+10h] [bp-1Ch]@3 void *v9; // [sp+14h] [bp-18h]@3 int v10; // [sp+18h] [bp-14h]@3 int v11; // [sp+1Ch] [bp-10h]@1 int v12; // [sp+28h] [bp-4h]@1 v3 = this; v11 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( a3 <= 1 ) { sub_427BE0(&v7); v7 = &off_6A5A2C; v8 = a2; v9 = v3; v10 = a3; v4 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v12) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v5, v4, 0, 0, (int)&v7, 1, 65535); LOBYTE(v12) = 0; v7 = &off_6A5A2C; sub_427EB0(&v7); --dword_750CB8; } else { --dword_750CB8; } v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget"); } // 6A5A2C: using guessed type int (__stdcall *off_6A5A2C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042B150) -------------------------------------------------------- int __thiscall sub_42B150(int this) { return *(_DWORD *)(this + 32800); } //----- (0042B160) -------------------------------------------------------- int __thiscall sub_42B160(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@3 int v4; // eax@5 int v5; // esi@6 void *v6; // edi@8 int v7; // eax@10 int v9; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TargetObject::to_SendInform"); dword_7508B8[dword_750CB8] = (int)"TargetObject::to_SendInform"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 2) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 9218; *((_BYTE *)v3 + 2) = 0; *(_WORD *)((char *)v3 + 3) = *(_WORD *)(*((_DWORD *)v2 + 2) + 4); *(_DWORD *)((char *)v3 + 5) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 1256))(); *(_DWORD *)((char *)v3 + 9) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 1264))(); *(_DWORD *)((char *)v3 + 13) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 1260))(); *(_DWORD *)((char *)v3 + 17) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 1268))(); *(_DWORD *)((char *)v3 + 21) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 3464))(); *(_DWORD *)((char *)v3 + 25) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 3468))(); *((_WORD *)v3 + 15) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 2024))(); *((_BYTE *)v3 + 29) = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 1240))(); if ( sub_4C81E0(&off_849C18, 32) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"TargetObject::to_SendInform : Packet Too Long", 32); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 2560))(a2, *((_DWORD *)v2 + 2), 1); v5 = (*(int (**)(void))(**((_DWORD **)v2 + 2) + 2564))(); if ( v5 && (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v2 + 2) + 2572))() == 1 ) { v6 = off_849C18; *(_WORD *)off_849C18 = 9218; *((_BYTE *)v6 + 2) = 1; *(_WORD *)((char *)v6 + 3) = *(_WORD *)(v5 + 4); *(_DWORD *)((char *)v6 + 5) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1256))(v5); *(_DWORD *)((char *)v6 + 9) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1264))(v5); *(_DWORD *)((char *)v6 + 13) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1260))(v5); *(_DWORD *)((char *)v6 + 17) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1268))(v5); *(_DWORD *)((char *)v6 + 21) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3464))(v5); *(_DWORD *)((char *)v6 + 25) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3468))(v5); *((_WORD *)v6 + 15) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2024))(v5); *((_BYTE *)v6 + 29) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1240))(v5); if ( sub_4C81E0(&off_849C18, 32) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"TargetObject::to_SendInform : Packet Too Long", 32); } } --dword_750CB8; v9 = (int)"TargetObject::to_SendInform"; } else { --dword_750CB8; v9 = (int)"TargetObject::to_SendInform"; } return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042B410) -------------------------------------------------------- int __thiscall sub_42B410(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_87B224 & 1) ) { dword_87B224 |= 1u; word_87B220 = 126; atexit(nullsub_7); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_87B220 ) { *((_DWORD *)v4 + 8200) = 0; *((_BYTE *)v4 + 32792) = 0; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2560))(v4, 0, v5); --dword_750CB8; } else { dword_750CB8 -= v5; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87B220: using guessed type __int16 word_87B220; // 87B224: using guessed type int dword_87B224; //----- (0042B510) -------------------------------------------------------- int __thiscall sub_42B510(void *this, int a2, int a3, int a4) { void *v4; // edi@1 signed int v5; // eax@1 int v6; // eax@5 void *v7; // esi@7 int v8; // eax@9 int v10; // [sp-4h] [bp-24h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_87B22C & 1) ) { dword_87B22C |= 1u; word_87B228 = 126; atexit(nullsub_8); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_87B228 ) { v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); if ( v6 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 9279; *((_WORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1876))(v6); if ( sub_4C81E0(&off_849C18, 4) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ : Packet Too Long", 4); } v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ"; } else { v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ"; } --dword_750CB8; } else { dword_750CB8 -= v5; v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ"; } return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87B228: using guessed type __int16 word_87B228; // 87B22C: using guessed type int dword_87B22C; //----- (0042B670) -------------------------------------------------------- FILE *__thiscall sub_42B670(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 FILE *result; // eax@3 int v6; // esi@4 int v7; // edi@6 int v8; // eax@9 signed __int16 v9; // cx@11 void *v10; // eax@13 int v11; // eax@15 v4 = this; if ( !(dword_87B234 & 1) ) { dword_87B234 |= 1u; word_87B230 = 126; atexit(nullsub_9); } result = (FILE *)(unsigned __int16)word_87B230; if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_87B230 ) { v6 = *(_WORD *)(a2 + 2); if ( v6 >= 792 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v6); return sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Not Find Abstate Index :", v6); } v7 = dword_8772F0[v6]; if ( !v7 ) return sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Not Find Abstate Index :", v6); if ( !strcmp((const char *)(*(_DWORD *)v7 + 256), "-") ) goto LABEL_18; v8 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(*(_DWORD *)v7 + 256)); if ( !v8 ) return sub_6390B0( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Not Find MainAbstate Index :", *(_DWORD *)v7 + 256); v9 = sub_42AA20(v4, *(_DWORD *)(*(_DWORD *)v8 + 34), 7282); if ( v9 == 7280 ) LABEL_18: v9 = sub_42AA20(v4, *(_DWORD *)(*(_DWORD *)v7 + 34), 7281); v10 = off_849C18; *(_WORD *)off_849C18 = 9301; *((_WORD *)v10 + 1) = v9; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Packet Too Long", 4); } } return result; } // 8772F0: using guessed type int dword_8772F0[]; // 87B230: using guessed type __int16 word_87B230; // 87B234: using guessed type int dword_87B234; //----- (0042B800) -------------------------------------------------------- int __thiscall sub_42B800(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // esi@1 int v5; // eax@3 int v6; // ecx@3 __int16 v7; // dx@4 int v8; // eax@6 int v9; // eax@6 int (__thiscall *v10)(_DWORD, _DWORD); // edx@6 int v11; // eax@6 int v12; // eax@7 int v13; // edx@7 void *v14; // edi@10 __int16 v15; // ax@10 int v16; // ST18_4@10 int v17; // ST04_4@10 int v18; // eax@10 int result; // eax@11 void *v20; // [sp+10h] [bp-4Ch]@3 int v21; // [sp+14h] [bp-48h]@3 int v22; // [sp+18h] [bp-44h]@3 __int16 v23; // [sp+1Ch] [bp-40h]@6 char v24; // [sp+20h] [bp-3Ch]@3 int v25; // [sp+21h] [bp-3Bh]@3 char v26; // [sp+25h] [bp-37h]@6 char v27; // [sp+26h] [bp-36h]@3 int v28; // [sp+28h] [bp-34h]@6 int v29; // [sp+2Ch] [bp-30h]@6 int v30; // [sp+30h] [bp-2Ch]@6 int v31; // [sp+34h] [bp-28h]@6 int v32; // [sp+38h] [bp-24h]@6 char v33; // [sp+3Ch] [bp-20h]@10 int v34; // [sp+48h] [bp-14h]@1 int v35; // [sp+4Ch] [bp-10h]@6 int v36; // [sp+58h] [bp-4h]@1 int v37; // [sp+64h] [bp+8h]@6 int v38; // [sp+64h] [bp+8h]@6 v3 = this; v34 = (int)"ShineObjectClass::ShineMobileObject::so_skillsmash"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_skillsmash"; dword_750AB8[dword_750CB8++] = -1; v36 = 0; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash", 0); v4 = a2; if ( a2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) != 3 ) { v5 = *(_DWORD *)(a3 + 4); v6 = *(_DWORD *)((char *)v3 + 102); v20 = v3; v21 = a2; v22 = v5; v24 = 0; v25 = 0; v27 = 0; if ( a3 == -8 ) v7 = 0; else v7 = *(_WORD *)(a3 + 8); v23 = v7; v28 = v6; v29 = 1000; v32 = 1000; v30 = 0; v26 = 0; v31 = 0; v8 = (*(int (__stdcall **)(void **))(**(_DWORD **)(v5 + 112) + 28))(&v20); *(_BYTE *)(a3 + 2) = v24; v37 = v8; (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1416))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1416))(v4); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1256))(v4); v10 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3048); v35 = v9; v11 = v10(v4, v37); v38 = v11; if ( v11 > 0 ) { v12 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 3500))(v4, v11, 0); v13 = *(_DWORD *)v4; v38 = v12; if ( v12 < v35 ) { (*(void (__thiscall **)(int, void *, int))(v13 + 1472))(v4, v3, v12); *(_BYTE *)(a3 + 3) = 0; } else { (*(void (__thiscall **)(int, void *, int))(v13 + 1468))(v4, v3, v35); *(_BYTE *)(a3 + 3) = 1; } v14 = off_849C18; v15 = *(_WORD *)off_849C18 & 0x3FF | 0x2400; *(_WORD *)off_849C18 = v15; *(_WORD *)v14 = v15 ^ (v15 ^ ((*(_BYTE *)(a3 + 3) != 0) + 36)) & 0x3FF; *((_WORD *)v14 + 2) = *((_WORD *)v3 + 2); *((_WORD *)v14 + 3) = *(_WORD *)(v4 + 4); *((_WORD *)v14 + 1) = ***(_WORD ***)(a3 + 4); sub_4287B0(&v33, &off_849C18, 8); v16 = *((_WORD *)v14 + 3); v17 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v36) = 1; v18 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v18, v17, 0, 0, (int)&v33, 0, v16); LOBYTE(v36) = 0; sub_428A70(&v33); } --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash"); result = v38; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042BA80) -------------------------------------------------------- int __thiscall sub_42BA80(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // edi@1 int v5; // eax@1 void *v6; // esi@1 int v7; // ecx@1 __int16 v8; // ax@1 int v9; // eax@4 __int16 v10; // dx@5 __int16 v11; // ax@5 int v12; // eax@7 char v13; // al@8 int v15; // [sp+2Ch] [bp+Ch]@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_skillsmash"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_skillsmash"; dword_750AB8[dword_750CB8++] = -1; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_skillsmash : Must be changed as Skillbash", 0); v4 = a3; v5 = sub_42B800(v3, a2, a3); v6 = off_849C18; v7 = v5; v8 = *(_WORD *)off_849C18 & 0x3FF | 0x2400; v15 = v7; *(_WORD *)off_849C18 = v8; if ( v7 > 0 ) { *(_WORD *)v6 = v8 & 0xFC20 | 0x20; *((_WORD *)v6 + 1) = *(_WORD *)(a2 + 4); *((_WORD *)v6 + 2) = **(_WORD **)(*(_DWORD *)(v4 + 4) + 4); v10 = *((_WORD *)v6 + 3); *((_BYTE *)v6 + 8) = *(_BYTE *)(v4 + 1); v11 = v10 & 0xFFFE | *(_BYTE *)(v4 + 3) & 1; *((_WORD *)v6 + 3) = v11; *((_WORD *)v6 + 3) = 4 * v7 | (v11 & 1 | (unsigned __int8)(2 * (*(_BYTE *)(v4 + 2) & 1))) & 3; if ( sub_4C81E0(&off_849C18, 9) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash : Packet Too Long", 9); } *(_WORD *)v6 = *(_WORD *)v6 & 0xFC21 | 0x21; *((_WORD *)v6 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v6 + 1) = *(_DWORD *)((char *)v6 + 2); v13 = *((_WORD *)v6 + 3); *((_WORD *)v6 + 4) = *((_WORD *)v6 + 3); *((_BYTE *)v6 + 10) = v13; if ( !sub_4C81E0(&off_849C18, 11) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash : Packet Too Long", 11); goto LABEL_12; } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); LABEL_11: (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 12))(v9); goto LABEL_12; } *(_WORD *)v6 = v8 & 0xFC22 | 0x22; *((_WORD *)v6 + 1) = *(_WORD *)(a2 + 4); *((_BYTE *)v6 + 4) = *(_BYTE *)(v4 + 1); if ( sub_4C81E0(&off_849C18, 5) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); goto LABEL_11; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_skillsmash : Packet Too Long", 5); LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_skillsmash"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042BCE0) -------------------------------------------------------- char __thiscall sub_42BCE0(void *this, int a2, int a3, int a4, int a5) { int v5; // ebx@1 int v6; // esi@5 int v7; // eax@5 int v9; // eax@7 int v10; // ecx@7 unsigned __int16 v11; // si@7 int v12; // eax@8 int v13; // eax@9 int v14; // esi@10 signed int v15; // eax@12 int v16; // eax@13 int v17; // eax@16 int v18; // eax@27 int v19; // eax@30 unsigned __int16 v20; // si@30 int v21; // eax@30 int v22; // edx@30 unsigned __int16 v23; // di@30 int v24; // esi@31 signed int v25; // eax@36 int v26; // edi@37 int v27; // eax@42 int v28; // eax@43 int v29; // edx@43 unsigned __int16 v30; // cx@43 int v31; // ST18_4@49 int v32; // ST10_4@49 int v33; // eax@49 int v34; // eax@50 int v35; // [sp+10h] [bp-28h]@7 int v36; // [sp+18h] [bp-20h]@0 void *v37; // [sp+20h] [bp-18h]@1 unsigned __int16 v38; // [sp+24h] [bp-14h]@30 unsigned __int16 v39; // [sp+28h] [bp-10h]@30 unsigned __int16 v40; // [sp+2Ah] [bp-Eh]@7 char v41; // [sp+43h] [bp+Bh]@7 v37 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Dispel"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_Dispel"; dword_750AB8[dword_750CB8++] = -1; v5 = a2; if ( !a2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) == 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Dispel"); return 0; } if ( !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2436))(a2) + 88) & 1) || !(a5 & 2) ) { v35 = 1; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); v10 = *(_DWORD *)(v9 + 3372); v11 = *(_WORD *)(v10 + 12 * *(_WORD *)(v9 + 3378) + 4); v40 = *(_WORD *)(v10 + 12 * *(_WORD *)(v10 + 12 * *(_WORD *)(v9 + 3378) + 4) + 4); v41 = 0; while ( 1 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1324))(v5); if ( v11 >= *(_WORD *)(v12 + 3368) || (v13 = *(_DWORD *)(v12 + 3372) + 12 * v11, !*(_BYTE *)(v13 + 8)) || (v14 = *(_DWORD *)v13) == 0 ) { LABEL_30: v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1324))(v5); v20 = *(_WORD *)(v19 + 3368); v38 = *(_WORD *)(v19 + 3368); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1324))(v5); v22 = *(_DWORD *)(v21 + 3372); v23 = *(_WORD *)(v22 + 12 * v20 + 6); v39 = v23; if ( v23 < *(_WORD *)(v21 + 3368) ) v24 = *(_DWORD *)(v22 + 12 * v23); else v24 = 0; if ( v38 > v23 ) { while ( v24 ) { if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= 0x3E8u ) { v25 = *(_DWORD *)(v24 + 4); if ( v25 < 792 ) { v26 = dword_8772F0[v25]; } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v24 + 4)); v26 = 0; } if ( (1 << *(_DWORD *)(*(_DWORD *)v26 + 244)) & a5 ) { if ( *(_BYTE *)(*(_DWORD *)(a3 + 4) + 280) == 1 ) { if ( !sub_4066E0(v24) || (v27 = sub_4066E0(v24), !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v27 + 12))(v27)) ) { if ( (signed int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_DWORD *)(*(_DWORD *)(a3 + 4) + 284) ) { v31 = *(_DWORD *)(v24 + 84); v32 = *(_DWORD *)(v24 + 28); v33 = *(_DWORD *)(v24 + 4); *(_DWORD *)(v24 + 32) = dword_14D129E8; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v37 + 1592))(v37) ) { sub_401900(v37, *(_DWORD *)(*(_DWORD *)v26 + 34)); v34 = *(_DWORD *)(v26 + 36 * *(_BYTE *)(v24 + 24) + 12); if ( v34 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v37 + 1008))( v37, *(_DWORD *)(*(_DWORD *)v26 + 34), *(_DWORD *)(v34 + 43), 1); sub_4055D0( v37, *(_DWORD *)(*(_DWORD *)v26 + 34), *(_DWORD *)(*(_DWORD *)(v26 + 36 * *(_BYTE *)(v24 + 24) + 12) + 43), *(_BYTE *)(v24 + 24)); } } v41 = 1; } break; } } } v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1324))(v5); v29 = *(_DWORD *)(v28 + 3372); v30 = *(_WORD *)(v29 + 12 * v39 + 6); v39 = v30; v23 = v30; if ( v30 < *(_WORD *)(v28 + 3368) ) v24 = *(_DWORD *)(v29 + 12 * v30); else v24 = 0; } if ( v38 <= v23 ) break; } } if ( v35 > 1 ) { *(_BYTE *)v36 |= 2u; *(_DWORD *)(v36 + 32) = dword_14D129E8; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Dispel"); return v41; } if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= 0x3E8u ) { v15 = *(_DWORD *)(v14 + 4); if ( v15 < 792 ) { v16 = dword_8772F0[v15]; } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v14 + 4)); v16 = 0; } if ( (1 << *(_DWORD *)(*(_DWORD *)v16 + 244)) & a5 ) { v17 = *(_DWORD *)(a3 + 4); if ( *(_BYTE *)(v17 + 184) == 1 ) { *(_DWORD *)(v14 + 32) = dword_14D129E8; goto LABEL_6; } if ( *(_BYTE *)(v17 + 176) == 1 ) { *(_DWORD *)(v14 + 32) = dword_14D129E8; LABEL_26: v41 = 1; goto LABEL_27; } if ( *(_BYTE *)(v17 + 192) == 1 ) { if ( v35 == 1 || !(unsigned __int16)sub_427920(&unk_14D42DC0, v35) ) v36 = v14; ++v35; } if ( *(_BYTE *)(*(_DWORD *)(a3 + 4) + 432) == 1 ) { *(_BYTE *)v14 |= 2u; *(_DWORD *)(v14 + 32) = dword_14D129E8; goto LABEL_26; } } } LABEL_27: v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1324))(v5); v11 = v40; if ( v40 >= *(_WORD *)(v18 + 3368) ) goto LABEL_30; v40 = *(_WORD *)(*(_DWORD *)(v18 + 3372) + 12 * v40 + 4); } } v6 = *(_DWORD *)a2; v7 = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 1256))(a2, 1000, 1); (*(void (__thiscall **)(int, int, int))(v6 + 1472))(a2, a2, v7); LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Dispel"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0042C1B0) -------------------------------------------------------- char __stdcall sub_42C1B0(int a1, int a2, int a3) { int v3; // eax@3 int v4; // eax@4 int v5; // ecx@4 unsigned __int16 v6; // si@4 unsigned __int16 i; // bx@4 int v8; // eax@5 int v9; // eax@6 int v10; // esi@7 signed int v11; // eax@9 int v12; // eax@10 int v13; // eax@12 int v14; // ecx@12 int v15; // eax@15 char v16; // bl@17 char result; // al@19 signed int v18; // [sp+2Ch] [bp+Ch]@4 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SkillCure"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_SkillCure"; dword_750AB8[dword_750CB8++] = -1; if ( a1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1) != 3 && (v3 = *(_DWORD *)(a2 + 4), *(_BYTE *)(v3 + 128)) ) { v18 = *(_DWORD *)(v3 + 132); v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1324))(a1); v5 = *(_DWORD *)(v4 + 3372); v6 = *(_WORD *)(v5 + 12 * *(_WORD *)(v4 + 3378) + 4); for ( i = *(_WORD *)(v5 + 12 * *(_WORD *)(v5 + 12 * *(_WORD *)(v4 + 3378) + 4) + 4); ; i = *(_WORD *)(*(_DWORD *)(v15 + 3372) + 12 * i + 4) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1324))(a1); if ( v6 >= *(_WORD *)(v8 + 3368) ) break; v9 = *(_DWORD *)(v8 + 3372) + 12 * v6; if ( !*(_BYTE *)(v9 + 8) ) break; v10 = *(_DWORD *)v9; if ( !*(_DWORD *)v9 ) break; if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= 0x3E8u ) { v11 = *(_DWORD *)(v10 + 4); if ( v11 < 792 ) { v12 = dword_8772F0[v11]; } else { sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v10 + 4)); v12 = 0; } v13 = *(_DWORD *)v12; v14 = *(_DWORD *)(v13 + 244); if ( v14 == 3 || v14 == 4 ) { if ( *(_BYTE *)(v13 + 43) <= v18 ) { *(_BYTE *)v10 |= 1u; *(_DWORD *)(v10 + 32) = dword_14D129E8; v16 = 1; goto LABEL_19; } } } v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1324))(a1); if ( i >= *(_WORD *)(v15 + 3368) ) break; v6 = i; } v16 = 0; LABEL_19: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SkillCure"); result = v16; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SkillCure"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0042C3C0) -------------------------------------------------------- int __thiscall sub_42C3C0(void *this, int a2) { void *v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // edx@1 int v7; // edi@1 int result; // eax@2 int v9; // eax@3 int v10; // ecx@3 void *v11; // edi@6 __int16 v12; // ax@6 int v13; // ST18_4@6 int v14; // ST04_4@6 int v15; // eax@6 __int16 v16; // ax@7 int v17; // eax@9 int v18; // [sp+0h] [bp-30h]@0 int v19; // [sp+4h] [bp-2Ch]@0 char v20; // [sp+10h] [bp-20h]@6 int v21; // [sp+1Ch] [bp-14h]@1 int v22; // [sp+20h] [bp-10h]@1 int v23; // [sp+2Ch] [bp-4h]@1 int v24; // [sp+38h] [bp+8h]@3 v2 = this; v21 = (int)"ShineObjectClass::ShineMobileObject::so_smash"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smash"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_smash"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_smash : Must be changed as Bash", 0); v3 = a2; v4 = (*(int (__stdcall **)(int))(**((_DWORD **)v2 + 1971) + 28))(a2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1416))(v2); (*(void (**)(void))(**(_DWORD **)(a2 + 4) + 1416))(); v5 = (*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1256))(); v6 = **(_DWORD **)(a2 + 4); v22 = v5; v7 = (*(int (__stdcall **)(int))(v6 + 3048))(v4); if ( v7 > 0 ) { v9 = (*(int (__stdcall **)(int, _DWORD, int, int))(**(_DWORD **)(a2 + 4) + 3500))(v7, 0, v18, v19); v10 = *(_DWORD *)(a2 + 4); v24 = v9; if ( v9 < v22 ) { (*(void (__stdcall **)(void *, int))(*(_DWORD *)v10 + 1472))(v2, v9); *(_BYTE *)(v3 + 18) = 0; } else { (*(void (__stdcall **)(void *, int))(*(_DWORD *)v10 + 1468))(v2, v22); *(_BYTE *)(v3 + 18) = 1; } v11 = off_849C18; v12 = *(_WORD *)off_849C18 & 0x3FF | 0x2400; *(_WORD *)off_849C18 = v12; *(_WORD *)v11 = v12 ^ (v12 ^ ((*(_BYTE *)(v3 + 18) != 0) + 22)) & 0x3FF; *((_WORD *)v11 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v11 + 2) = *(_WORD *)(*(_DWORD *)(v3 + 4) + 4); *((_BYTE *)v11 + 6) = *(_BYTE *)(v3 + 14); sub_4287B0(&v20, &off_849C18, 7); v13 = *((_WORD *)v11 + 2); v14 = *(_DWORD *)((char *)v2 + 102); LOBYTE(v23) = 1; v15 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v15, v14, 0, 0, (int)&v20, 0, v13); if ( (unsigned __int8)(*(int (__cdecl **)(signed int, signed int))(**(_DWORD **)(v3 + 4) + 1232))(1000, 1) == 2 ) { *(_WORD *)v11 = 9236; *((_BYTE *)v11 + 6) = *(_BYTE *)(v3 + 15); v16 = *((_WORD *)v11 + 2) & 0xFFFE | *(_BYTE *)(v3 + 18) & 1; *((_WORD *)v11 + 2) = v16; *((_WORD *)v11 + 2) = 4 * v24 | (v16 & 1 | (unsigned __int8)(2 * (*(_BYTE *)(v3 + 16) & 1))) & 3; *((_WORD *)v11 + 1) = *((_WORD *)v2 + 2); if ( sub_4C81E0(&off_849C18, 7) ) { v17 = (*(int (**)(void))(**(_DWORD **)(v3 + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v17 + 12))(v17, *(_DWORD *)(v3 + 4), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_smash : Packet Too Long", 7); } } LOBYTE(v23) = 0; sub_428A70(&v20); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smash"); result = v24; } else { --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smash"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042C680) -------------------------------------------------------- int __thiscall sub_42C680(void *this, int a2) { void *v2; // edi@1 int v3; // ebx@1 void *v4; // eax@1 __int16 v5; // cx@1 int v6; // esi@2 __int16 v7; // cx@3 int v8; // eax@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_smash"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_smash"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_42C3C0(v2, a2); v4 = off_849C18; v5 = *(_WORD *)off_849C18 & 0x3FF | 0x2400; *(_WORD *)off_849C18 = v5; if ( *(_BYTE *)(a2 + 17) ) { *(_WORD *)v4 = v5 & 0xFC15 | 0x15; *((_WORD *)v4 + 1) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 4); *((_BYTE *)v4 + 4) = *(_BYTE *)(a2 + 15); v6 = 5; } else { *(_WORD *)v4 = v5 & 0xFC13 | 0x13; *((_WORD *)v4 + 1) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 4); *((_BYTE *)v4 + 6) = *(_BYTE *)(a2 + 15); v7 = *((_WORD *)v4 + 2) & 0xFFFE | *(_BYTE *)(a2 + 18) & 1; *((_WORD *)v4 + 2) = v7; *((_WORD *)v4 + 2) = 4 * v3 | (v7 & 1 | (unsigned __int8)(2 * (*(_BYTE *)(a2 + 16) & 1))) & 3; v6 = 7; } if ( sub_4C81E0(&off_849C18, v6) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_smash : Packet Too Long", v6); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_smash"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042C820) -------------------------------------------------------- int __thiscall sub_42C820(void *this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // eax@1 int v7; // esi@1 int v9; // [sp+10h] [bp-1Ch]@1 __int16 v10; // [sp+14h] [bp-18h]@1 int v11; // [sp+18h] [bp-14h]@1 char v12; // [sp+1Fh] [bp-Dh]@1 int v13; // [sp+28h] [bp-4h]@1 v3 = (int)this; v11 = (int)"ShineObjectClass::ShineMobileObject::so_attack"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_attack"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_attack"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)v3; v13 = 0; v9 = 0; v10 = 0; v5 = sub_4FB990(off_8551DC, v3, a2, (int)&v9, (int)&v12); v6 = (*(int (__thiscall **)(int, int, int, int))(v4 + 1412))(v3, a2, v5, a3); --dword_750CB8; v7 = v6; v13 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_attack"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551DC: using guessed type int (__stdcall *(*off_8551DC[2])[4])(int, int, int); //----- (0042C8F0) -------------------------------------------------------- signed int __thiscall sub_42C8F0(void *this, int a2, int a3, char a4) { void *v4; // edi@1 int v5; // esi@1 int v6; // ebx@1 int v7; // eax@2 signed int result; // eax@3 int v9; // eax@4 int v10; // edx@4 signed __int16 v11; // dx@5 void *v12; // eax@7 __int16 v13; // cx@7 signed int v14; // ebx@8 signed int v15; // eax@8 int v16; // ST04_4@10 int v17; // eax@10 char v18; // [sp+10h] [bp-1Ch]@10 int v19; // [sp+1Ch] [bp-10h]@1 int v20; // [sp+28h] [bp-4h]@1 signed int v21; // [sp+34h] [bp+8h]@5 int v22; // [sp+38h] [bp+Ch]@2 signed int v23; // [sp+38h] [bp+Ch]@4 v4 = this; v19 = (int)"ShineObjectClass::ShineMobileObject::so_attack"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_attack"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_attack"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_attack called", 0); v5 = a2; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1256))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5) == 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_attack"); result = 0; } else { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1416))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1416))(a2); v7 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 3048))(a2, a3); v22 = v7; if ( v7 > 0 ) { v9 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)a2 + 3500))(a2, v7, 0); v10 = *(_DWORD *)a2; v23 = v9; if ( v9 < v6 ) { (*(void (__thiscall **)(int, void *, int))(v10 + 1472))(a2, v4, v9); v11 = 5; v21 = 4; } else { (*(void (__thiscall **)(int, void *, int))(v10 + 1468))(a2, v4, v6); v11 = 7; v21 = 6; } v12 = off_849C18; v13 = *(_WORD *)off_849C18 & 0x3FF | 0x2400; *(_WORD *)off_849C18 = v13; if ( v23 < 256 ) { v14 = v23; *(_WORD *)v12 = v13 ^ (v21 ^ v13) & 0x3FF; *((_WORD *)v12 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v12 + 2) = *(_WORD *)(v5 + 4); *((_BYTE *)v12 + 6) = v23; *((_BYTE *)v12 + 7) = a4; v15 = 6; } else { *(_WORD *)v12 = v13 ^ (v11 ^ v13) & 0x3FF; v14 = v23; *((_WORD *)v12 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v12 + 2) = *(_WORD *)(v5 + 4); *((_WORD *)v12 + 3) = v23; *((_BYTE *)v12 + 8) = a4; v15 = 7; } sub_4287B0(&v18, &off_849C18, v15 + 2); v16 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v20) = 1; v17 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v17, v16, 0, 0, (int)&v18, 1, 65535); LOBYTE(v20) = 0; sub_428A70(&v18); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_attack"); result = v14; } else { --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_attack"); result = v22; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042CB70) -------------------------------------------------------- int __thiscall sub_42CB70(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_attack"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_attack"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_42C820(v3, a2, a3); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_attack"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042CC20) -------------------------------------------------------- int __thiscall sub_42CC20(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_recoverhp"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_recoverhp"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 1991) += a2; v3 = *((_DWORD *)v2 + 960); if ( *((_DWORD *)v2 + 1991) >= v3 ) *((_DWORD *)v2 + 1991) = v3; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_recoverhp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042CCA0) -------------------------------------------------------- int __thiscall sub_42CCA0(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_recoversp"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_recoversp"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 1992) += a2; v3 = *((_DWORD *)v2 + 961); if ( *((_DWORD *)v2 + 1992) >= v3 ) *((_DWORD *)v2 + 1992) = v3; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_recoversp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042CD20) -------------------------------------------------------- int __thiscall sub_42CD20(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_recoverhp"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_recoverhp"; dword_750AB8[dword_750CB8++] = -1; sub_55C1B0(v2, a2, 1, (int)"ShineObjectClass::ShinePlayer::so_recoverhp"); v3 = *((_DWORD *)v2 + 960); *(_DWORD *)((char *)v2 + 32703) += a2; if ( *(_DWORD *)((char *)v2 + 32703) >= v3 ) *(_DWORD *)((char *)v2 + 32703) = v3; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_recoverhp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042CDF0) -------------------------------------------------------- int __thiscall sub_42CDF0(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_recoversp"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_recoversp"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v2 + 32707) += a2; v3 = *((_DWORD *)v2 + 961); if ( *(_DWORD *)((char *)v2 + 32707) >= v3 ) *(_DWORD *)((char *)v2 + 32707) = v3; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_recoversp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042CE70) -------------------------------------------------------- void __thiscall sub_42CE70(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v6; // eax@2 int v7; // eax@2 v5 = this; if ( a2 ) { v6 = (*(int (**)(void))(*(_DWORD *)a2 + 1064))(); *(_DWORD *)(v6 + 8) += a3; v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1324))(v5); sub_5A7F60(v7 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A36A0); } } //----- (0042CEB0) -------------------------------------------------------- int __thiscall sub_42CEB0(void *this, int a2, int a3, int a4, char a5) { void *v5; // esi@1 int v6; // eax@2 int v7; // ecx@2 _BYTE *v8; // ecx@2 int v9; // eax@4 int v10; // ecx@4 _BYTE *v11; // ecx@4 int v12; // eax@6 int v13; // eax@6 int v14; // eax@8 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_DamagedBy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_DamagedBy"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 996))(v5, 291) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); *((_DWORD *)v8 + 4) = *(_DWORD *)(v6 + 16); v8[20] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 996))(v5, 499) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = &byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *((_DWORD *)v11 + 1) = *(_DWORD *)(v9 + 4); *((_DWORD *)v11 + 2) = *(_DWORD *)(v9 + 8); *((_DWORD *)v11 + 3) = *(_DWORD *)(v9 + 12); *((_DWORD *)v11 + 4) = *(_DWORD *)(v9 + 16); v11[20] = 0; } if ( a2 ) { v12 = (*(int (**)(void))(*(_DWORD *)a2 + 1064))(); *(_DWORD *)(v12 + 8) += a3; v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1324))(v5); sub_5A7F60(v13 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A36A0); } sub_55C1B0(v5, a3, -1, (int)"ShineObjectClass::ShinePlayer::so_DamagedBy"); *(_DWORD *)((char *)v5 + 32703) -= a3; if ( a5 ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1064))(v5); ++*(_DWORD *)(v14 + 24); (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 2256))(v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_DamagedBy"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0042D070) -------------------------------------------------------- FILE *__thiscall sub_42D070(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 FILE *result; // eax@2 int v7; // eax@4 int v8; // ecx@4 _BYTE *v9; // ecx@4 int v10; // eax@6 int v11; // ecx@6 _BYTE *v12; // ecx@6 int v13; // eax@8 int v14; // eax@8 v5 = this; if ( *((_DWORD *)this + 2023) ) { if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(*(_DWORD *)this + 996))(291) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 996))(v5, 499) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); *((_DWORD *)v12 + 4) = *(_DWORD *)(v10 + 16); v12[20] = 0; } if ( a2 ) { v13 = (*(int (**)(void))(*(_DWORD *)a2 + 1064))(); *(_DWORD *)(v13 + 8) += a3; v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1324))(v5); sub_5A7F60(v14 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A36A0); } result = (FILE *)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v5 + 2732))(v5, **((_DWORD **)v5 + 2072) - a3); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMover::so_DamagedBy : Moverdata null", 0); } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0042D1A0) -------------------------------------------------------- int __thiscall sub_42D1A0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 void (__thiscall *v4)(_DWORD, _DWORD); // eax@4 int v6; // [sp-4h] [bp-20h]@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_ViewAggroList"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_ViewAggroList"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( *((_DWORD *)v2 + 2211) ) { v3 = *((_DWORD *)v2 + 2211); v6 = a2; v4 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 24); } else { v3 = a2; v4 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1924); v6 = (int)"ERROR : selector °¡ NULL ÀÔ´Ï´Ù."; } v4(v3, v6); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_ViewAggroList"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042D280) -------------------------------------------------------- int __thiscall sub_42D280(void *this, int a2, int a3) { void *v3; // edi@1 int i; // esi@3 int v6; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_DecreaseAggro"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_DecreaseAggro"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { (*(void (__stdcall **)(int, int))(**((_DWORD **)v3 + 2211) + 32))(a2, a3); for ( i = *(_DWORD *)((char *)v3 + 9485); (void *)i != v3; i = *(_DWORD *)(i + 9485) ) (*(void (__stdcall **)(int, int))(**(_DWORD **)(i + 8844) + 32))(a2, a3); --dword_750CB8; v6 = (int)"ShineObjectClass::ShineMob::so_mob_DecreaseAggro"; } else { --dword_750CB8; v6 = (int)"ShineObjectClass::ShineMob::so_mob_DecreaseAggro"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042D370) -------------------------------------------------------- int __thiscall sub_42D370(void *this, int a2, int a3) { int v3; // esi@1 int v4; // edi@7 int v5; // eax@9 int v6; // eax@10 int v7; // edi@12 int v8; // edi@13 int v9; // eax@13 int i; // edi@17 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_AppendAggro"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_AppendAggro"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 3672))(v3, a2) != 1 ) { if ( !sub_4627E0(*(void **)(v3 + 122)) || (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2088))(v3) == -1 || (v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2), (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2088))(v3) != v4) ) { if ( sub_55C7D0(v3) || (v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1804))(v3)) != 0 && (v6 = *(_DWORD *)(v5 + 44)) != 0 && *(_BYTE *)(v6 + 66) ) { v7 = a3; (*(void (__stdcall **)(int, int))(**(_DWORD **)(v3 + 8844) + 28))(a2, a3); if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) { v8 = **(_DWORD **)(v3 + 8844); v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 2480))(a2, a3); (*(void (__thiscall **)(_DWORD, int))(v8 + 28))(*(_DWORD *)(v3 + 8844), v9); v7 = a3; } if ( v7 > 0 ) { a3 = v7 / 4; if ( !(v7 / 4) ) a3 = 1; } for ( i = *(_DWORD *)(v3 + 9485); i != v3; i = *(_DWORD *)(i + 9485) ) (*(void (__stdcall **)(int, int))(**(_DWORD **)(i + 8844) + 28))(a2, a3); } } } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_AppendAggro"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042D530) -------------------------------------------------------- int __thiscall sub_42D530(void *this, int a2, int a3) { int result; // eax@1 void *v4; // esi@1 int (__thiscall *v5)(_DWORD, _DWORD); // eax@2 int v6; // [sp+10h] [bp-Ch]@1 int v7; // [sp+18h] [bp-4h]@2 result = (int)&v6; v4 = this; if ( a2 ) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_AppendAggro"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_mob_AppendAggro"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1836); v7 = 0; if ( (unsigned __int8)v5(v4, a2) ) sub_42D370(v4, a2, a3); --dword_750CB8; v7 = -1; result = sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_AppendAggro"); } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042D5F0) -------------------------------------------------------- int __thiscall sub_42D5F0(void *this) { void *v1; // esi@1 void *v2; // ST2C_4@1 int v3; // edx@1 int v4; // ebx@1 __int64 v5; // qdi@1 unsigned __int64 v6; // kr08_8@1 int result; // eax@2 unsigned __int64 v8; // kr10_8@3 v1 = this; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NextSaveExperience"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NextSaveExperience"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_DA22974[2 * *((_BYTE *)v1 + 32686)]; v4 = dword_DA22970[2 * *((_BYTE *)v1 + 32686)]; LODWORD(v5) = (__PAIR__(dword_DA2297C[2 * *((_BYTE *)v1 + 32686)], dword_DA22978[2 * *((_BYTE *)v1 + 32686)]) - __PAIR__(v3, v4)) >> 32; HIDWORD(v5) = dword_DA22978[2 * *(_BYTE *)(HIDWORD(v5) + 32686)] - v4; v6 = *(_QWORD *)((char *)v2 + 32687) - __PAIR__(v3, v4); if ( v5 ) { --dword_750CB8; v8 = __PAIR__(v3, v4) + ((16 * v6 / __PAIR__(v5, HIDWORD(v5)) + 1) * __PAIR__(v5, HIDWORD(v5)) >> 4); sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NextSaveExperience"); result = v8; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NextSaveExperience"); result = v4; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22970: using guessed type int dword_DA22970[]; // DA22974: using guessed type int dword_DA22974[]; // DA22978: using guessed type int dword_DA22978[]; // DA2297C: using guessed type int dword_DA2297C[]; //----- (0042D730) -------------------------------------------------------- int __thiscall sub_42D730(void *this, int a2, __int16 a3, int a4) { int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // edi@3 int v7; // eax@5 void *v8; // eax@6 int v9; // eax@8 unsigned __int8 v10; // cf@13 void *v11; // eax@13 int v12; // eax@15 void *v13; // edi@16 int v14; // eax@18 unsigned int v15; // edx@19 unsigned int v16; // edi@19 int v17; // ecx@19 int v18; // eax@22 void *v19; // eax@22 int v20; // eax@24 void *v21; // eax@25 int v22; // ST04_4@25 int v23; // eax@25 void *v24; // edi@25 int v25; // eax@27 void *v26; // edi@28 int v27; // eax@28 int v28; // eax@28 int v29; // eax@30 void *v30; // edi@33 int v31; // eax@35 int v32; // edi@36 int v33; // eax@36 void *v34; // ecx@37 int v35; // eax@39 int v36; // eax@40 int v37; // edx@40 int v38; // edx@42 int v40; // [sp-4h] [bp-30h]@12 char v41; // [sp+10h] [bp-1Ch]@25 int v42; // [sp+1Ch] [bp-10h]@1 int v43; // [sp+28h] [bp-4h]@1 v4 = (int)this; v42 = (int)"ShineObjectClass::ShinePlayer::sp_GainExp"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GainExp"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GainExp"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1156); v43 = 0; if ( (unsigned __int8)v5(v4) == 3 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1156))(v4) ) { v40 = (int)"ShineObjectClass::ShinePlayer::sp_GainExp"; goto LABEL_45; } v6 = a2; if ( a2 > 0 ) { if ( (_WORD)a4 != -1 ) { v7 = *(_DWORD *)v4; a4 = (unsigned __int16)a4; if ( (*(int (__thiscall **)(int, int *))(v7 + 1524))(v4, &a4) == 1 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 23565; *((_WORD *)v8 + 1) = a4; if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 4); } } } } if ( *(_BYTE *)(v4 + 160356) == 1 ) v6 = 0; if ( *(_BYTE *)(v4 + 32686) >= (unsigned __int8)byte_DA2294C ) { v40 = (int)"ShineObjectClass::ShinePlayer::sp_GainExp"; LABEL_45: v43 = -1; goto LABEL_46; } v10 = __CFADD__(v6, *(_DWORD *)(v4 + 32687)); *(_DWORD *)(v4 + 32687) += v6; *(_DWORD *)(v4 + 32691) += ((unsigned __int64)v6 >> 32) + v10; v11 = off_849C18; *(_WORD *)off_849C18 = 9227; *(_DWORD *)((char *)v11 + 2) = v6; *((_WORD *)v11 + 3) = a3; if ( sub_4C81E0(&off_849C18, 8) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 8); } v13 = off_849C18; *(_WORD *)off_849C18 = 4211; *((_WORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v4 + 32687); *((_DWORD *)v13 + 3) = *(_DWORD *)(v4 + 32691); if ( sub_4C81E0(&off_849C18, 16) ) { v14 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 16); } v15 = *(_DWORD *)(v4 + 32691); v16 = *(_DWORD *)(v4 + 32687); v17 = *(_BYTE *)(v4 + 32686); if ( v15 < dword_DA2297C[2 * v17] || v15 <= dword_DA2297C[2 * v17] && v16 < dword_DA22978[2 * v17] ) { if ( __PAIR__(v15, v16) > *(_QWORD *)(v4 + 32776) ) { *(_DWORD *)(v4 + 32776) = sub_42D5F0((void *)v4); *(_DWORD *)(v4 + 32780) = v38; } v43 = -1; v40 = (int)"ShineObjectClass::ShinePlayer::sp_GainExp"; } else { ++*(_BYTE *)(v4 + 32686); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1404))(v4); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1264))(v4); sub_55C1B0((void *)v4, v18, 0, (int)"ShineObjectClass::ShinePlayer::sp_GainExp"); *(_DWORD *)(v4 + 32703) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1264))(v4); *(_DWORD *)(v4 + 32707) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1268))(v4); sub_5C96C0(v4 + 156368, *(_BYTE *)(v4 + 32686)); sub_5B6920((int)&unk_133595F0, v4 + 32665, *(_BYTE *)(v4 + 32686)); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v4 + 82048) + 4))(v4 + 82048, *(_BYTE *)(v4 + 32686)); v19 = off_849C18; *(_WORD *)off_849C18 = 9228; *((_BYTE *)v19 + 2) = *(_BYTE *)(v4 + 32686); *(_WORD *)((char *)v19 + 3) = a3; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v4 + 1640))(v4, (char *)v19 + 5); if ( sub_4C81E0(&off_849C18, 237) ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v20 + 12))(v20, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 237); } v21 = off_849C18; *(_WORD *)off_849C18 = 9229; *((_WORD *)v21 + 1) = *(_WORD *)(v4 + 4); *((_WORD *)v21 + 2) = a3; sub_4287B0(&v41, &off_849C18, 6); v22 = *(_DWORD *)(v4 + 102); LOBYTE(v43) = 1; v23 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v23, v22, 0, 0, (int)&v41, 0, 65535); LOBYTE(v43) = 0; sub_428A70(&v41); sub_452D30(&unk_AA0EC0, v4); v24 = off_849C18; *(_WORD *)off_849C18 = 4212; *((_WORD *)v24 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_DWORD *)v24 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v24 + 8) = *(_BYTE *)(v4 + 32686); if ( sub_4C81E0(&off_849C18, 9) ) { v25 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v25); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 9); } v26 = off_849C18; *(_WORD *)off_849C18 = 1054; *(_DWORD *)((char *)v26 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v27 = *(_DWORD *)(v4 + 122); *(_DWORD *)((char *)v26 + 6) = *(_DWORD *)v27; *(_DWORD *)((char *)v26 + 10) = *(_DWORD *)(v27 + 4); *(_DWORD *)((char *)v26 + 14) = *(_DWORD *)(v27 + 8); v28 = *(_DWORD *)(v4 + 102); *(_DWORD *)((char *)v26 + 18) = *(_DWORD *)v28; *(_DWORD *)((char *)v26 + 22) = *(_DWORD *)(v28 + 4); *((_BYTE *)v26 + 26) = *(_BYTE *)(v4 + 32686); *(_DWORD *)((char *)v26 + 27) = *(_DWORD *)(v4 + 32687); *(_DWORD *)((char *)v26 + 31) = *(_DWORD *)(v4 + 32691); if ( sub_4C81E0(&off_849C18, 35) ) { v29 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v29); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 35); } sub_4551B0(&unk_AA0EC0, v4, 1, 8); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2136))(v4) == 1 && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2140))(v4) ) { v30 = off_849C18; *(_WORD *)off_849C18 = -26517; *((_DWORD *)v30 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v30 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v30 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v30 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2140))(v4); *((_BYTE *)v30 + 16) = *(_BYTE *)(v4 + 32686); if ( sub_4C81E0(&off_849C18, 17) ) { v31 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v31); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 17); } } v32 = sub_444A00((void *)(v4 + 84388)); v33 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4) - v32; if ( v33 > 0 ) { v34 = off_849C18; *(_WORD *)off_849C18 = 18448; *((_BYTE *)v34 + 2) = v33; if ( sub_4C81E0(&off_849C18, 3) ) { v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v35 + 12))(v35, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 3); } } sub_589A00((void *)v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 32))(v4, *(_BYTE *)(v4 + 32686)); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1104))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1100))(v4); *(_DWORD *)(v4 + 32776) = sub_42D5F0((void *)v4); v36 = *(_DWORD *)v4; *(_DWORD *)(v4 + 32780) = v37; *(_BYTE *)(*(_DWORD *)(v4 + 32650) + 197) = (*(int (__thiscall **)(int))(v36 + 1240))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2840))(v4); sub_46CAA0((int)&unk_14D138B8, v4); v43 = -1; v40 = (int)"ShineObjectClass::ShinePlayer::sp_GainExp"; } LABEL_46: --dword_750CB8; return sub_467660((int)&unk_D020420, v40); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA2294C: using guessed type char byte_DA2294C; // DA22978: using guessed type int dword_DA22978[]; // DA2297C: using guessed type int dword_DA2297C[]; // 14D12A00: using guessed type int dword_14D12A00; // 14D148D0: using guessed type int dword_14D148D0; // 14D16430: using guessed type int dword_14D16430; //----- (0042DE00) -------------------------------------------------------- int __thiscall sub_42DE00(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@1 int v4; // ecx@3 int v5; // eax@3 void *v6; // eax@5 int v7; // eax@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GainFame"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_GainFame"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)((char *)v2 + 32715); if ( v3 < 0xF4240 ) { v4 = a2; v5 = a2 + v3; *(_DWORD *)((char *)v2 + 32715) = v5; if ( (unsigned int)v5 >= 0xF4240 ) { v4 = 1000000 - v5 + a2; *(_DWORD *)((char *)v2 + 32715) = 1000000; } v6 = off_849C18; *(_WORD *)off_849C18 = 9286; *(_DWORD *)((char *)v6 + 2) = v4; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_GainFame : Packet Too Long", 6); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GainFame"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042DF30) -------------------------------------------------------- int __stdcall sub_42DF30(__int64 a1, __int64 a2, int a3) { int v3; // ecx@1 int v4; // esi@1 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"; dword_750AB8[dword_750CB8++] = -1; v3 = (a2 - a1) / 0x64ui64 >> 32; v4 = (a2 - a1) / 0x64ui64; if ( a3 ) { v3 = *(_WORD *)(a3 + 167) * (a2 - a1) / 0x64ui64 / 0x3E8 >> 32; v4 = *(_WORD *)(a3 + 167) * (a2 - a1) / 0x64ui64 / 0x3E8; } if ( v3 || (unsigned int)v4 >= 0x80000000 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob : overflow", v4); v4 &= 0x7FFFFFFFu; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042E030) -------------------------------------------------------- int __thiscall sub_42E030(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int v7; // esi@1 signed int v8; // edx@2 v6 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)(dword_DA22E30[(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1240))(v6)] + 107); if ( a6 ) { v8 = (signed int)((unsigned __int64)(v7 * *(_WORD *)(a6 + 169) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v7 = v8 + ((unsigned int)v8 >> 31); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22E30: using guessed type int dword_DA22E30[]; //----- (0042E110) -------------------------------------------------------- int __thiscall sub_42E110(void *this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD)) { void *v2; // esi@1 int v3; // eax@2 char v4; // dl@2 int v5; // eax@3 int v6; // eax@4 int result; // eax@7 unsigned __int8 v8; // al@11 int v9; // edi@11 unsigned __int8 v10; // al@11 int v11; // ecx@11 int v12; // edx@11 int v13; // ebx@11 int v14; // eax@11 int v15; // eax@13 unsigned int v16; // ecx@13 int v17; // edi@13 unsigned int v18; // eax@13 unsigned int v19; // eax@17 int v20; // ecx@17 void *v21; // eax@19 int v22; // eax@21 void *v23; // ebx@22 int v24; // eax@24 int v25; // [sp+14h] [bp-1Ch]@11 int v26; // [sp+18h] [bp-18h]@11 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"; dword_750AB8[dword_750CB8++] = -1; if ( *((_BYTE *)v2 + 160318) ) { v3 = *((_WORD *)v2 + 80160); v4 = 0; if ( (unsigned __int16)v3 < *((_WORD *)v2 + 79846) ) { v6 = *((_DWORD *)v2 + 39924) + 12 * v3; v4 = *(_BYTE *)(v6 + 8); v5 = *(_DWORD *)v6; } else { v5 = 0; } if ( !v4 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Not in list", *((_WORD *)v2 + 80160)); LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); return 0; } if ( v5 != 0 ) goto LABEL_7; sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Null node", *((_WORD *)v2 + 80160)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); result = 0; } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2) < LOBYTE(dword_DA22970[0]) ) goto LABEL_7; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); v9 = dword_DA22978[2 * v8]; v25 = dword_DA2297C[2 * v8]; v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1240))(v2); v11 = *(_DWORD *)((char *)v2 + 122); v12 = dword_DA22970[2 * v10]; v13 = dword_DA22974[2 * v10]; v14 = 0; v26 = v12; if ( v11 ) v14 = *(_DWORD *)(v11 + 12); v15 = a2(v2, v12, v13, v9, v25, v14); v16 = *(_DWORD *)((char *)v2 + 32687); v17 = v15; v18 = *(_DWORD *)((char *)v2 + 32691); if ( (v18 || v16 >= v17) && v17 ) { v19 = (__PAIR__(v18, v16) - (unsigned int)v17) >> 32; v20 = v16 - v17; if ( __PAIR__(v19, v20) < __PAIR__(v13, v26) ) { v20 = v26; v19 = v13; v17 = *(_DWORD *)((char *)v2 + 32687) - v26; } *(_DWORD *)((char *)v2 + 32687) = v20; *(_DWORD *)((char *)v2 + 32691) = v19; v21 = off_849C18; *(_WORD *)off_849C18 = 9233; *(_DWORD *)((char *)v21 + 2) = v17; if ( sub_4C81E0(&off_849C18, 6) ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v22 + 12))(v22, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 6); } v23 = off_849C18; *(_WORD *)off_849C18 = 4211; *((_WORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 832))(v2); *((_DWORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v23 + 2) = *(_DWORD *)((char *)v2 + 32687); *((_DWORD *)v23 + 3) = *(_DWORD *)((char *)v2 + 32691); if ( sub_4C81E0(&off_849C18, 16) ) { v24 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v24); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 16); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); result = v17; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22970: using guessed type int dword_DA22970[]; // DA22974: using guessed type int dword_DA22974[]; // DA22978: using guessed type int dword_DA22978[]; // DA2297C: using guessed type int dword_DA2297C[]; // 14D12A00: using guessed type int dword_14D12A00; //----- (0042E420) -------------------------------------------------------- int __stdcall sub_42E420(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a1 + 2) && *(_DWORD *)(a1 + 6) ) sub_5CA240((int)&unk_13267D80, a1 + 2); if ( *(_DWORD *)(a1 + 10) && *(_DWORD *)(a1 + 14) ) sub_5CA240((int)&unk_13267D80, a1 + 10); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042E4F0) -------------------------------------------------------- int __stdcall sub_42E4F0(int a1, int a2) { void *v2; // eax@3 int v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildWarRequest"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GuildWarRequest"; dword_750AB8[dword_750CB8++] = -1; if ( a1 && a2 ) { v2 = off_849C18; *(_WORD *)off_849C18 = 29816; *(_DWORD *)((char *)v2 + 2) = a1; *(_DWORD *)((char *)v2 + 6) = a2; if ( sub_4C81E0(&off_849C18, 10) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GuildWarRequest : Packet Too Long", 10); --dword_750CB8; } } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildWarRequest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (0042E600) -------------------------------------------------------- int __thiscall sub_42E600(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_87B23C & 1) ) { dword_87B23C |= 1u; word_87B238 = 4; atexit(nullsub_11); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_87B238 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792))(v4); --dword_750CB8; } else { dword_750CB8 -= v5; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87B238: using guessed type __int16 word_87B238; // 87B23C: using guessed type int dword_87B23C; //----- (0042E700) -------------------------------------------------------- int __cdecl sub_42E700() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_BashStop"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_BashStop"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_BashStop"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042E740) -------------------------------------------------------- int __thiscall sub_42E740(void *this) { void *v1; // esi@1 int v2; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_BashStop"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_BashStop"; dword_750AB8[dword_750CB8++] = -1; sub_5644F0((char *)v1 + 32654); sub_518CF0(v1); sub_518E00(v1); sub_519300(v1); sub_519410(v1); *((_BYTE *)v1 + 155428) &= 0xFBu; v2 = *((_DWORD *)v1 + 40202); if ( v2 == 2 || v2 == 3 ) { *((_DWORD *)v1 + 40199) = 0; *((_DWORD *)v1 + 40200) = sub_5131E0; *((_DWORD *)v1 + 40203) = sub_452C70; *((_DWORD *)v1 + 40202) = 0; sub_5750E0((char *)v1 + 82024); } *((_WORD *)v1 + 80592) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_BashStop"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042E850) -------------------------------------------------------- int __userpurge sub_42E850(void *a1, double a2, int a3, int a4, int a5, int a6, signed int a7, int a8) { void *v8; // ebx@1 __int16 v9; // ST14_2@1 __int16 v10; // ST10_2@1 int v11; // eax@1 unsigned int v12; // edx@4 int v13; // eax@4 void (__stdcall *v14)(_DWORD, _DWORD); // edx@4 int v15; // ecx@5 int v16; // esi@12 int v17; // eax@15 int v18; // esi@23 int v19; // eax@23 int (__thiscall *v20)(_DWORD); // edx@23 int v21; // eax@23 int v22; // esi@23 int v23; // edx@23 int v24; // eax@25 void *v25; // esi@28 char v26; // al@30 char v27; // cl@30 char v28; // al@30 int v29; // eax@32 int v30; // edx@33 __int16 v31; // ax@33 unsigned int v32; // edx@33 int v33; // ST18_4@33 int v34; // eax@37 int v35; // ecx@41 int v36; // ST18_4@42 int v37; // ST04_4@42 int v38; // eax@42 unsigned int v40; // [sp-4h] [bp-D8h]@1 char v41; // [sp+10h] [bp-C4h]@40 double v42; // [sp+14h] [bp-C0h]@2 int v43; // [sp+1Ch] [bp-B8h]@1 int v44; // [sp+20h] [bp-B4h]@1 int v45; // [sp+24h] [bp-B0h]@3 unsigned int v46; // [sp+28h] [bp-ACh]@2 char v47; // [sp+2Ch] [bp-A8h]@1 int v48; // [sp+30h] [bp-A4h]@23 int v49; // [sp+38h] [bp-9Ch]@3 int v50; // [sp+48h] [bp-8Ch]@17 int v51; // [sp+4Ch] [bp-88h]@17 int v52[10]; // [sp+50h] [bp-84h]@17 int v53; // [sp+78h] [bp-5Ch]@12 unsigned int v54; // [sp+C4h] [bp-10h]@1 int v55; // [sp+D0h] [bp-4h]@1 int v56; // [sp+D4h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v40 = (unsigned int)&v56 ^ __security_cookie; v8 = a1; v43 = a5; v44 = a4; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Bash"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_Bash"; dword_750AB8[dword_750CB8++] = -1; v9 = *(_WORD *)(*(_DWORD *)(a3 + 4) + 4); v10 = *((_WORD *)v8 + 2); v55 = 0; sub_4346E0((int)&v47, v10, v9); v11 = *((_DWORD *)v8 + 1973); LOBYTE(v55) = 1; if ( v11 > 0 ) goto LABEL_7; (*(void (__stdcall **)(int))(**((_DWORD **)v8 + 1971) + 24))(a3); v42 = a2; v46 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( (double)(signed int)v46 <= a2 ) { v12 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v13 = **((_DWORD **)v8 + 1971); v46 = v12; v14 = *(void (__stdcall **)(_DWORD, _DWORD))(v13 + 44); v42 = (double)(signed int)v46; v14(a3, v40); if ( v42 < v42 ) { v15 = *(_DWORD *)(a3 + 4); *(_BYTE *)(a3 + 17) = 1; v40 = 1; (*(void (__stdcall **)(void *))(*(_DWORD *)v15 + 1792))(v8); goto LABEL_8; } v11 = (*(int (__cdecl **)(int))(**((_DWORD **)v8 + 1971) + 28))(a3); LABEL_7: v45 = v11; goto LABEL_8; } v45 = 0; *(_BYTE *)(a3 + 17) = 1; v49 = 1; LABEL_8: v46 = 0; while ( 1 ) { if ( v45 <= 0 || v43 == 792 || (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) >= a7 ) goto LABEL_19; v16 = v53; if ( (unsigned int)v53 < 4 ) break; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_Bash : Too many abstates", v53); LABEL_19: ++v46; if ( v46 >= 1 ) goto LABEL_23; } if ( v43 >= 792 ) { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v43); goto LABEL_23; } v17 = dword_8772F0[v43]; if ( !v17 ) goto LABEL_23; if ( !(unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(a3 + 4) + 1588))(v17) ) { *(&v50 + 3 * v16) = v43; *(&v51 + 3 * v16) = a6; v52[3 * v16] = 0; ++v53; if ( a8 > 0 ) (*(void (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v8 + 1796))(v8, *(_DWORD *)(a3 + 4), a8); goto LABEL_19; } *(_BYTE *)(a3 + 20) = 1; LABEL_23: (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v8 + 1416))(v8, v40); (*(void (**)(void))(**(_DWORD **)(a3 + 4) + 1416))(); v48 = v45; sub_434A10((int)&v47, dword_14D129E8 + 10); v18 = *(_DWORD *)(a3 + 4); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v18 + 1628))(*(_DWORD *)(a3 + 4)); v20 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v18 + 1256); v46 = v19; v21 = v20(v18); v22 = v44; v23 = v45; *(_DWORD *)v44 = v21 - v46; (*(void (__stdcall **)(int))(**(_DWORD **)(a3 + 4) + 1620))(v23); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 40))() ) { *(_BYTE *)(a3 + 18) = 1; *(_DWORD *)v22 = 0; } else { v24 = v45; if ( v45 < *(_DWORD *)v22 ) { *(_BYTE *)(a3 + 18) = 0; *(_DWORD *)v22 -= v24; } else { (*(void (**)(void))(**(_DWORD **)(a3 + 4) + 36))(); *(_BYTE *)(a3 + 18) = 1; *(_DWORD *)v22 = 0; } } v25 = off_849C18; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1232))() == 2 ) { if ( *(_BYTE *)(a3 + 17) ) { *(_WORD *)v25 = 9264; *((_WORD *)v25 + 1) = *((_WORD *)v8 + 2); *((_BYTE *)v25 + 4) ^= (*((_BYTE *)v25 + 4) ^ *(_BYTE *)(a3 + 14)) & 0xF; v26 = *((_BYTE *)v25 + 4) ^ (*((_BYTE *)v25 + 4) ^ 16 * *(_BYTE *)(a3 + 17)) & 0x10; *((_BYTE *)v25 + 4) = v26; v27 = v26 ^ (v26 ^ 32 * *(_BYTE *)(a3 + 19)) & 0x20; *((_BYTE *)v25 + 4) = v27; v28 = v27 ^ (v27 ^ (*(_BYTE *)(a3 + 20) << 6)) & 0x40; *((_BYTE *)v25 + 4) = v28; *((_BYTE *)v25 + 4) = v28 & 0x7F | (*(_BYTE *)(a3 + 22) << 7); *(_WORD *)((char *)v25 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1292))(v8); if ( sub_4C81E0(&off_849C18, 7) ) { v29 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v29 + 12))(v29, *(_DWORD *)(a3 + 4), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_Bash : Packet Too Long", 7); } } else { *(_WORD *)v25 = 9261; *((_WORD *)v25 + 1) = *((_WORD *)v8 + 2); v30 = v44; *((_WORD *)v25 + 2) = 2 * v45 | *(_BYTE *)(a3 + 16) & 1; *((_BYTE *)v25 + 6) ^= (*((_BYTE *)v25 + 6) ^ *(_BYTE *)(a3 + 14)) & 0xF; *((_BYTE *)v25 + 6) ^= (*((_BYTE *)v25 + 6) ^ 16 * *(_BYTE *)(a3 + 20)) & 0x10; *(_DWORD *)((char *)v25 + 7) = *(_DWORD *)v30; *(_WORD *)((char *)v25 + 13) = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 2024))(); v31 = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1292))(v8); v32 = *((_WORD *)v25 + 2); v33 = *(_DWORD *)((char *)v25 + 7); *(_WORD *)((char *)v25 + 11) = v31; sub_549760((int)"ShineMobileObject::so_Bash", *(_WORD *)((char *)v25 + 13), v32 >> 1, v33); if ( !*(_DWORD *)((char *)v25 + 7) ) (*(void (__stdcall **)(signed int))(**(_DWORD **)(a3 + 4) + 2260))(2); if ( sub_4C81E0(&off_849C18, 15) ) { v34 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v34 + 12))(v34, *(_DWORD *)(a3 + 4), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_Bash : Packet Too Long", 15); } (*(void (**)(void))(**(_DWORD **)(a3 + 4) + 1256))(); (*(void (**)(void))(**(_DWORD **)(a3 + 4) + 1628))(); } } if ( *(_BYTE *)(a3 + 17) ) { *(_WORD *)v25 = 9265; *((_WORD *)v25 + 1) = *((_WORD *)v8 + 2); *((_WORD *)v25 + 2) = *(_WORD *)(*(_DWORD *)(a3 + 4) + 4); *((_BYTE *)v25 + 6) = *(_BYTE *)(a3 + 14); *(_WORD *)((char *)v25 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1292))(v8); sub_4287B0(&v41, &off_849C18, 9); LOBYTE(v55) = 2; } else { *(_WORD *)v25 = 9262; *((_WORD *)v25 + 1) = *((_WORD *)v8 + 2); v35 = v44; *((_WORD *)v25 + 2) = *(_WORD *)(*(_DWORD *)(a3 + 4) + 4); *((_BYTE *)v25 + 6) = *(_BYTE *)(a3 + 14); *(_DWORD *)((char *)v25 + 7) = *(_DWORD *)v35; *(_WORD *)((char *)v25 + 13) = (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(a3 + 4) + 2024))(*(_DWORD *)(a3 + 4)); *(_WORD *)((char *)v25 + 11) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1292))(v8); sub_4287B0(&v41, &off_849C18, 15); LOBYTE(v55) = 3; } v36 = *((_WORD *)v25 + 2); v37 = *(_DWORD *)((char *)v8 + 102); v38 = sub_427BD0(&unk_13253E80); sub_549E00(v8, v38, v37, 0, 0, (int)&v41, 0, v36); LOBYTE(v55) = 1; sub_428A70(&v41); LOBYTE(v55) = 0; nullsub_2(&v47); --dword_750CB8; v55 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Bash"); return v45; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; // 42E850: using guessed type int var_84[10]; //----- (0042EEB0) -------------------------------------------------------- int __userpurge sub_42EEB0(int a1, double a2, int a3, int a4, int a5, int a6, signed int a7, int a8) { int v8; // ebx@1 int v9; // eax@1 void *v10; // esi@1 int v11; // edx@1 __int16 v12; // ax@1 char v13; // al@4 unsigned __int16 v14; // ax@4 int v15; // edx@4 int v16; // esi@6 char v17; // al@9 char v18; // cl@9 int v19; // eax@10 int v21; // [sp+3Ch] [bp+1Ch]@1 v8 = a1; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Bash"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Bash"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 2256))(v8); v9 = sub_42E850((void *)v8, a2, a3, a4, a5, a6, a7, a8); v10 = off_849C18; v11 = v9; v12 = *(_WORD *)off_849C18 & 0x3FF | 0x2400; *(_WORD *)off_849C18 = v12; v21 = v11; if ( *(_BYTE *)(a3 + 17) || *(_BYTE *)(a3 + 19) || *(_BYTE *)(a3 + 22) ) { *(_WORD *)v10 = v12 & 0xFC2F | 0x2F; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(a3 + 4) + 4); *((_BYTE *)v10 + 4) ^= (*((_BYTE *)v10 + 4) ^ *(_BYTE *)(a3 + 15)) & 0xF; v17 = *((_BYTE *)v10 + 4) ^ (*((_BYTE *)v10 + 4) ^ 16 * *(_BYTE *)(a3 + 17)) & 0x10; *((_BYTE *)v10 + 4) = v17; v18 = v17 ^ (v17 ^ 32 * *(_BYTE *)(a3 + 19)) & 0x20; *((_BYTE *)v10 + 4) = v18; *(_WORD *)((char *)v10 + 5) = *(_WORD *)(v8 + 155424); *((_BYTE *)v10 + 4) ^= (v18 ^ (*(_BYTE *)(a3 + 22) << 6)) & 0x40; v16 = 7; } else { *(_WORD *)v10 = v12 & 0xFC2C | 0x2C; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(a3 + 4) + 4); *((_BYTE *)v10 + 6) ^= (*((_BYTE *)v10 + 6) ^ *(_BYTE *)(a3 + 15)) & 0xF; v13 = *((_BYTE *)v10 + 6) ^ (*((_BYTE *)v10 + 6) ^ 16 * *(_BYTE *)(a3 + 20)) & 0x10; *((_BYTE *)v10 + 6) = v13; *((_BYTE *)v10 + 6) = v13 ^ (v13 ^ 32 * *(_BYTE *)(a3 + 22)) & 0x20; *((_WORD *)v10 + 2) = 2 * v11 | *(_BYTE *)(a3 + 16) & 1; *(_DWORD *)((char *)v10 + 7) = *(_DWORD *)a4; v14 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 2024))(); v15 = *(_DWORD *)((char *)v10 + 7); *(_WORD *)((char *)v10 + 13) = v14; *(_WORD *)((char *)v10 + 11) = *(_WORD *)(v8 + 155424); sub_549760((int)"ShinePlayer::so_Bash", v14, (unsigned int)*((_WORD *)v10 + 2) >> 1, v15); if ( !*(_DWORD *)((char *)v10 + 7) ) (*(void (__thiscall **)(_DWORD, signed int))(**(_DWORD **)(a3 + 4) + 2260))(*(_DWORD *)(a3 + 4), 3); v16 = 15; } if ( sub_4C81E0(&off_849C18, v16) ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v19 + 12))(v19, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Bash : Packet Too Long", v16); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Bash"); return v21; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F120) -------------------------------------------------------- char __thiscall sub_42F120(void *this, int a2) { void *v2; // ebx@1 int v3; // esi@1 char result; // al@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2480))(a2) ) v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2480))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 996))(v3, 291) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 996))(v3, 499) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3672))(v2, v3) == 1 || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2252))(v3) == 3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) != 8 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) != 5 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) != 11 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); result = 0; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F2A0) -------------------------------------------------------- char __stdcall sub_42F2A0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_mobile_IsEnemy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::so_mobile_IsEnemy"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_mobile_IsEnemy"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F2F0) -------------------------------------------------------- int __thiscall sub_42F2F0(void *this, int a2) { void *v2; // esi@1 void *v3; // edi@1 int (__stdcall *v4)(_DWORD); // eax@1 int v5; // ebx@1 int v6; // ST04_4@1 int v7; // eax@1 int v8; // esi@1 int v9; // eax@2 int v11; // [sp+0h] [bp-2Ch]@0 int v12; // [sp+4h] [bp-28h]@0 int v13; // [sp+8h] [bp-24h]@0 int v14; // [sp+Ch] [bp-20h]@0 char v15; // [sp+10h] [bp-1Ch]@1 int v16; // [sp+14h] [bp-18h]@4 int v17; // [sp+18h] [bp-14h]@4 int v18; // [sp+1Ch] [bp-10h]@1 int v19; // [sp+28h] [bp-4h]@1 v2 = this; v18 = (int)"ShineObjectClass::ShineMobileObject::smo_SwingStart"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SwingStart"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SwingStart"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 9287; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v3 + 2) = *(_WORD *)(a2 + 4); v4 = *(int (__stdcall **)(_DWORD))(**((_DWORD **)v2 + 1906) + 4); v5 = (int)((char *)v2 + 7624); v19 = 0; *((_BYTE *)v3 + 6) = v4((char *)v2 + 7624); *(_WORD *)((char *)v3 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1292))(v2); *((_BYTE *)v3 + 10) = *((_BYTE *)v2 + 7896); ++*((_WORD *)v2 + 3952); *((_BYTE *)v3 + 9) = *((_BYTE *)v2 + 7904); sub_4287B0(&v15, &off_849C18, 11); v6 = *(_DWORD *)((char *)v2 + 102); LOBYTE(v19) = 1; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v7, v6, 0, 0, (int)&v15, 1, 0); v8 = *((_DWORD *)v2 + 1029); if ( v8 ) v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 72))(v8); else v9 = 0; (***(void (__stdcall ****)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))v5)( v5, v9, v11, v12, v13, v14, *(_DWORD *)&v15, v16, v17); LOBYTE(v19) = 0; sub_428A70(&v15); --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SwingStart"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F450) -------------------------------------------------------- int __thiscall sub_42F450(void *this) { int v1; // esi@1 int v2; // edi@1 int v3; // edx@3 int v4; // ecx@3 unsigned int v5; // ebx@10 int v6; // eax@10 int v7; // edx@10 signed int v8; // edx@12 bool v9; // zf@12 void *v10; // ecx@14 int v11; // edi@14 unsigned __int16 v12; // ax@16 unsigned int v13; // eax@18 bool v15; // [sp+17h] [bp-Dh]@3 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 32800); if ( !v2 ) v2 = *(_DWORD *)(v1 + 32804); v3 = *(_DWORD *)v1; v15 = *(_WORD *)(v1 + 161184) == 1; v4 = v1; if ( !v2 ) goto LABEL_6; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(v3 + 1836))(v1, v2) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 40))(v2) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 996))(v2, 291) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 996))(v2, 499) ) { v3 = *(_DWORD *)v1; v4 = v1; LABEL_6: (*(void (__thiscall **)(int))(v3 + 3792))(v4); goto LABEL_25; } v5 = (unsigned int)(10 * (*(_DWORD *)(v1 + 155420) + (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1740))(v2))) >> 3; v6 = sub_402710(v1, v2); v7 = *(_DWORD *)v1; if ( v6 <= v5 * v5 ) { v8 = (signed int)((unsigned __int64)(140737488400i64 * (*(int (__thiscall **)(int))(v7 + 1288))(v1)) >> 32) >> 12; v9 = (*(_BYTE *)(v1 + 155428) & 4) == 0; *(_DWORD *)(v1 + 23832) = *(_DWORD *)(v1 + 23836) + v8 + ((unsigned int)v8 >> 31); if ( !v9 && !(unsigned __int8)(*(int (__thiscall **)(int, int, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3812))( v1, v2, 792, 0, 0, 0) ) { v10 = *(void **)(v1 + 160868); v11 = 0; if ( v10 ) { if ( sub_5CF620(v10) ) { v12 = *((_WORD *)sub_5CF620(*(void **)(v1 + 160868)) + 4); if ( v12 != -1 ) v11 = sub_418CB0((int)&dword_14D20890, v12); } } v13 = *(_WORD *)(v1 + 161184); if ( v13 >= 3 || !v11 || !*(_WORD *)(v11 + 2 * v13 + 18) ) *(_WORD *)(v1 + 161184) = 0; ++*(_WORD *)(v1 + 161184); } if ( v15 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3844))(v1, 0, 0, 0); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3848))(v1, 0, 0, 0); } } else { (*(void (__thiscall **)(int))(v7 + 3792))(v1); } LABEL_25: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0042F680) -------------------------------------------------------- char __thiscall sub_42F680(void *this) { void *v1; // esi@1 char v2; // bl@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2532))(v1) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1236))(v1) && *((_BYTE *)v1 + 23824) & 0x80 ) v2 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F750) -------------------------------------------------------- signed int __thiscall sub_42F750(void *this) { void *v1; // edi@1 signed int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_HitNotRevision"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_HitNotRevision"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( *((_WORD *)v1 + 3952) == 1 ) v2 = -150; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_HitNotRevision"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F7C0) -------------------------------------------------------- signed int __cdecl sub_42F7C0() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"); return 1000; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F810) -------------------------------------------------------- int __thiscall sub_42F810(void *this) { void *v1; // esi@1 bool v2; // cl@2 int v3; // esi@2 int result; // eax@2 int v5; // [sp+0h] [bp-18h]@0 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__stdcall **)(int))(**((_DWORD **)v1 + 1029) + 72))(v5) == 21 ) { v2 = *((_WORD *)v1 + 80592) != 3; --dword_750CB8; v3 = (v2 - 1) & 0x64; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); result = v3 + 300; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); result = 1000; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042F900) -------------------------------------------------------- int __thiscall sub_42F900(void *this) { int v1; // esi@1 void (*v2)(void); // edx@1 int v3; // eax@1 void *v4; // eax@1 char v5; // dl@1 int v6; // eax@3 void *v7; // eax@4 __int16 v8; // dx@4 int v9; // ST04_4@4 int v10; // eax@4 void *v11; // edi@4 int v12; // eax@6 void *v13; // edi@7 int v14; // eax@7 int v15; // eax@7 int v16; // eax@9 void *v17; // edi@12 int v18; // eax@14 int v19; // edi@15 int v20; // eax@15 void *v21; // ecx@16 int v22; // eax@18 int v23; // eax@19 int v24; // edx@19 char v26; // [sp+Ch] [bp-18h]@4 int v27; // [sp+20h] [bp-4h]@4 v1 = (int)this; v2 = *(void (**)(void))(*(_DWORD *)this + 1404); ++*(_BYTE *)(v1 + 32686); v2(); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1264))(v1); sub_55C1B0((void *)v1, v3, 0, (int)"ShineObjectClass::ShinePlayer::sp_GainExp"); *(_DWORD *)(v1 + 32703) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1264))(v1); *(_DWORD *)(v1 + 32707) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1); sub_5C96C0(v1 + 156368, *(_BYTE *)(v1 + 32686)); sub_5B6920((int)&unk_133595F0, v1 + 32665, *(_BYTE *)(v1 + 32686)); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v1 + 82048) + 4))(v1 + 82048, *(_BYTE *)(v1 + 32686)); v4 = off_849C18; *(_WORD *)off_849C18 = 9228; v5 = *(_BYTE *)(v1 + 32686); *(_WORD *)((char *)v4 + 3) = 0; *((_BYTE *)v4 + 2) = v5; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v1 + 1640))(v1, (char *)v4 + 5); if ( sub_4C81E0(&off_849C18, 237) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 237); } v7 = off_849C18; *(_WORD *)off_849C18 = 9229; v8 = *(_WORD *)(v1 + 4); *((_WORD *)v7 + 2) = 0; *((_WORD *)v7 + 1) = v8; sub_4287B0(&v26, &off_849C18, 6); v9 = *(_DWORD *)(v1 + 102); v27 = 0; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v10, v9, 0, 0, (int)&v26, 0, 65535); v27 = -1; sub_428A70(&v26); sub_452D30(&unk_AA0EC0, v1); v11 = off_849C18; *(_WORD *)off_849C18 = 4212; *((_WORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 832))(v1); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 836))(v1); *((_BYTE *)v11 + 8) = *(_BYTE *)(v1 + 32686); if ( sub_4C81E0(&off_849C18, 9) ) { v12 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v12); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 9); } v13 = off_849C18; *(_WORD *)off_849C18 = 1054; *(_DWORD *)((char *)v13 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 836))(v1); v14 = *(_DWORD *)(v1 + 122); *(_DWORD *)((char *)v13 + 6) = *(_DWORD *)v14; *(_DWORD *)((char *)v13 + 10) = *(_DWORD *)(v14 + 4); *(_DWORD *)((char *)v13 + 14) = *(_DWORD *)(v14 + 8); v15 = *(_DWORD *)(v1 + 102); *(_DWORD *)((char *)v13 + 18) = *(_DWORD *)v15; *(_DWORD *)((char *)v13 + 22) = *(_DWORD *)(v15 + 4); *((_BYTE *)v13 + 26) = *(_BYTE *)(v1 + 32686); *(_DWORD *)((char *)v13 + 27) = *(_DWORD *)(v1 + 32687); *(_DWORD *)((char *)v13 + 31) = *(_DWORD *)(v1 + 32691); if ( sub_4C81E0(&off_849C18, 35) ) { v16 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 35); } sub_4551B0(&unk_AA0EC0, v1, 1, 8); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2136))(v1) == 1 && (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2140))(v1) ) { v17 = off_849C18; *(_WORD *)off_849C18 = -26517; *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v17 + 1) = *(_WORD *)(v1 + 4); *((_DWORD *)v17 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_DWORD *)v17 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2140))(v1); *((_BYTE *)v17 + 16) = *(_BYTE *)(v1 + 32686); if ( sub_4C81E0(&off_849C18, 17) ) { v18 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 17); } } v19 = sub_444A00((void *)(v1 + 84388)); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1720))(v1) - v19; if ( v20 > 0 ) { v21 = off_849C18; *(_WORD *)off_849C18 = 18448; *((_BYTE *)v21 + 2) = v20; if ( sub_4C81E0(&off_849C18, 3) ) { v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v22 + 12))(v22, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 3); } } sub_589A00((void *)v1); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v1 + 32))(v1, *(_BYTE *)(v1 + 32686)); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1104))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1100))(v1); *(_DWORD *)(v1 + 32776) = sub_42D5F0((void *)v1); v23 = *(_DWORD *)v1; *(_DWORD *)(v1 + 32780) = v24; *(_BYTE *)(*(_DWORD *)(v1 + 32650) + 197) = (*(int (__thiscall **)(int))(v23 + 1240))(v1); return (*(int (**)(void))(*(_DWORD *)v1 + 2840))(); } // 14D12A00: using guessed type int dword_14D12A00; // 14D148D0: using guessed type int dword_14D148D0; // 14D16430: using guessed type int dword_14D16430; //----- (0042FD50) -------------------------------------------------------- int __cdecl sub_42FD50() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042FDA0) -------------------------------------------------------- int __thiscall sub_42FDA0(void *this) { void *v1; // esi@1 int result; // eax@2 int v3; // eax@3 int v4; // esi@3 int v5; // [sp+0h] [bp-18h]@0 int v6; // [sp+4h] [bp-14h]@0 int v7; // [sp+Ch] [bp-Ch]@0 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 2211) ) { v3 = (*(int (__stdcall **)(void *, int, int, _DWORD, int))(**((_DWORD **)v1 + 2211) + 56))( v1, v5, v6, "ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget", v7); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"); result = v4; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0042FE90) -------------------------------------------------------- int __thiscall sub_42FE90(int this, __int16 a2, int a3, int a4) { int v4; // esi@1 v4 = this; *(_WORD *)(this + 2) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 836))(a3); *(_BYTE *)v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1248))(a3); *(_DWORD *)(v4 + 16) = -1; return sub_42B160((void *)v4, a4); } //----- (0042FEE0) -------------------------------------------------------- int __thiscall sub_42FEE0(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // edi@8 int v7; // eax@9 int v8; // eax@10 int v9; // ebx@16 unsigned __int16 v10; // di@16 unsigned __int16 v11; // dx@17 int v12; // ecx@18 int v13; // eax@18 unsigned __int16 v14; // ST1C_2@18 int v15; // eax@19 bool v16; // zf@19 int v17; // ecx@19 int v18; // ecx@20 int v19; // eax@23 int v20; // edx@23 int v21; // eax@25 void *v22; // eax@27 int v23; // eax@29 int v25; // [sp-4h] [bp-34h]@4 int v26; // [sp+20h] [bp-10h]@8 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_87B244 & 1) ) { dword_87B244 |= 1u; word_87B240 = 126; atexit(nullsub_6); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_87B240 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 392) ) { v25 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ"; } else { v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v26 = v6; if ( v6 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1804))(v6); if ( !v7 || (v8 = *(_DWORD *)(*(_DWORD *)v7 + 99), v8 != 12) && v8 != 13 && v8 != 24 && v8 != 27 && v8 != 29 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1324))(v6); v10 = *(_WORD *)(*(_DWORD *)(v9 + 3372) + 12 * *(_WORD *)(v9 + 3378) + 4); while ( 1 ) { v11 = *(_WORD *)(v9 + 3368); if ( v10 >= v11 ) break; v12 = *(_DWORD *)(v9 + 3372); v13 = v10; v14 = v10; v10 = *(_WORD *)(v12 + 12 * v10 + 4); if ( v14 < v11 ) { v15 = 3 * v13; v16 = *(_BYTE *)(v12 + 4 * v15 + 8) == 0; v17 = v12 + 4 * v15; if ( !v16 ) { v18 = *(_DWORD *)v17; if ( v18 ) { if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)dword_871508[3 * *(_DWORD *)(v18 + 4)] + 60))() ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2456))(v4, 0); goto LABEL_30; } } } } } LOBYTE(v19) = sub_548D30(v4, v26); v20 = *(_DWORD *)v4; if ( v19 ) { (*(void (__thiscall **)(int))(v20 + 3792))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3788))(v4); sub_566EF0((void *)(v4 + 7644)); sub_42FE90(v4 + 32792, *(_WORD *)(a2 + 2), v26, v4); v21 = *(_DWORD *)(v4 + 161188); if ( v21 && *(_WORD *)(v21 + 4) == *(_WORD *)(a2 + 2) ) { v22 = off_849C18; *(_WORD *)off_849C18 = 9299; *((_WORD *)v22 + 1) = *(_WORD *)(a2 + 2); *((_BYTE *)v22 + 4) = *(_BYTE *)(v4 + 161192); if ( sub_4C81E0(&off_849C18, 5) ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v23 + 12))(v23, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_SoulManage : Packet Too Long", 5); } } } else { (*(void (__thiscall **)(int, _DWORD))(v20 + 2456))(v4, 0); } } } LABEL_30: v25 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ"; } --dword_750CB8; } else { dword_750CB8 -= v5; v25 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ"; } return sub_467660((int)&unk_D020420, v25); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; // 87B240: using guessed type __int16 word_87B240; // 87B244: using guessed type int dword_87B244; //----- (004301A0) -------------------------------------------------------- int __thiscall sub_4301A0(void *this, signed int a2, int a3, __int16 a4) { void *v4; // ebx@1 int v5; // eax@1 double v6; // st6@1 double v7; // st7@3 double v8; // st7@9 int v9; // ecx@9 unsigned __int16 v10; // si@9 unsigned __int16 v11; // di@10 int v12; // edx@11 int v13; // ecx@12 int v14; // ecx@14 int v15; // eax@16 double v16; // st7@18 int v17; // esi@21 unsigned __int16 v19; // [sp+12h] [bp-2Ah]@11 double v20; // [sp+1Ch] [bp-20h]@1 int v21; // [sp+2Ch] [bp-10h]@9 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetExperienceFromMob"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_GetExperienceFromMob"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122); v6 = (double)*((_WORD *)v4 + 80169) / 1000.0; v20 = v6; if ( v5 && v5 != -76 ) { v7 = (double)*(signed int *)(v5 + 76) / 1000.0 * v6; v20 = v7; } else { v7 = v6; } if ( *((_BYTE *)v4 + 160876) == 1 ) v20 = v7 * 1.2; if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 996))(v4, 345) ) v20 = (double)(unsigned int)dword_DA22958 / 1000.0 * v20; v8 = v20; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1324))(v4); v10 = *(_WORD *)(*(_DWORD *)(v9 + 3372) + 12 * *(_WORD *)(v9 + 3378) + 4); v21 = v9; while ( 1 ) { v11 = *(_WORD *)(v9 + 3368); if ( v10 >= v11 ) break; v12 = *(_DWORD *)(v9 + 3372); v19 = *(_WORD *)(v12 + 12 * v10 + 4); if ( *(_BYTE *)(v12 + 12 * v10 + 8) ) v13 = *(_DWORD *)(v12 + 12 * v10); else v13 = 0; v14 = dword_871508[3 * *(_DWORD *)(v13 + 4)]; if ( v10 < v11 && *(_BYTE *)(v12 + 12 * v10 + 8) ) v15 = *(_DWORD *)(v12 + 12 * v10); else v15 = 0; v16 = (double)(unsigned int)((*(int (__stdcall **)(int))(*(_DWORD *)v14 + 68))(v15) + 1000); v10 = v19; v9 = v21; v8 = v16 / 1000.0 * v20; v20 = v8; } if ( dbl_DA22950 < v8 ) v8 = dbl_DA22950; v17 = (signed int)(v8 * (double)a2); if ( v17 <= 0 ) v17 = 1; sub_4B6580((char *)v4 + 160832, (int)v4, a3, v17); sub_42D730(v4, v17, a4, a3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetExperienceFromMob"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; // DA22950: using guessed type double dbl_DA22950; // DA22958: using guessed type int dword_DA22958; //----- (004303C0) -------------------------------------------------------- bool __thiscall sub_4303C0(void *this, int a2) { void *v2; // edi@1 void *v3; // ecx@5 int v4; // ebx@7 int v5; // eax@8 v2 = this; return sub_42F120(this, a2) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 3184))(a2) != 1 && ((unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) != 11 || (v3 = *(void **)((char *)v2 + 122)) != 0 && (!sub_4627E0(v3) || (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2088))(a2), (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2) != v4))) && ((v5 = sub_4096E0(a2)) == 0 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3864))(v5)); } //----- (00430470) -------------------------------------------------------- char __thiscall sub_430470(void *this, int a2) { void *v2; // edi@1 int v4; // esi@3 int v5; // ebx@9 int v6; // eax@12 int v7; // eax@17 int v8; // eax@20 int v9; // eax@22 __int16 v10; // bx@27 int v11; // ST04_4@28 int v12; // eax@28 int v13; // ST04_4@29 int v14; // eax@29 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_IsEnemy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_mobile_IsEnemy"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_DWORD *)((char *)v2 + 122) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_IsEnemy"); return 0; } v4 = a2; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2204))(v4) ) { if ( v2 != (void *)v4 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3184))(v4) != 1 ) { if ( (v7 = sub_409730(v4)) != 0 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3864))(v7) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 3864))(v2) || (v8 = *(_DWORD *)((char *)v2 + 122)) != 0 && (*(_BYTE *)(v8 + 84) || (v9 = *(_DWORD *)(v8 + 16)) != 0 && *(_BYTE *)(v9 + 58) == 4 && (unsigned __int8)(*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v2 + 2432))( v2, v4, "ShineObjectClass::ShinePlayer::so_mobile_IsEnemy") || *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v2 + 122) + 12) + 105) && ((unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1360))(v2) == -1 || (v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4), (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1360))(v2) != v10)) || (v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4), v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2088))(v2), sub_5CA1C0((int)&unk_13267D80, v12, v11)) || (v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4), v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2088))(v2), sub_462840(*(void **)((char *)v2 + 122), v14, v13)) || ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 11) && (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3588))(v2, v4) == 1) ) goto LABEL_33; } goto LABEL_7; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3672))(v2, v4) == 1 || sub_4627E0(*(void **)((char *)v2 + 122)) && (v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4), (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2) == v5) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 3864))(v2) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 499) ) goto LABEL_7; v6 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1004))(v4, 291); if ( v6 ) { if ( v6 < 3600 ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1616))(v4, 291); goto LABEL_33; } LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_IsEnemy"); return 0; } LABEL_33: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_IsEnemy"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004307B0) -------------------------------------------------------- bool __thiscall sub_4307B0(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 bool result; // al@2 bool v5; // al@4 bool v6; // bl@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_IsEnemy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_mobile_IsEnemy"; dword_750AB8[dword_750CB8++] = -1; v3 = (void *)*((_DWORD *)v2 + 2417); if ( v3 ) { if ( v3 == v2 ) v5 = sub_4303C0(v2, a2); else v5 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v3 + 1836))(a2); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_IsEnemy"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_IsEnemy"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004308A0) -------------------------------------------------------- char __thiscall sub_4308A0(void *this, int a2) { int v2; // esi@1 void *v3; // edi@1 int v5; // ebx@10 int v6; // eax@13 int v7; // eax@18 int v8; // eax@21 __int16 v9; // bx@27 int v10; // ST04_4@28 int v11; // eax@28 int v12; // ST04_4@29 int v13; // eax@29 v2 = a2; v3 = this; if ( !a2 ) return 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) v2 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2); if ( (void *)v2 == v3 || !*(_DWORD *)((char *)v3 + 122) ) return 0; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2204))(v2) == 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3672))(v3, v2) != 1 ) { if ( !sub_4627E0(*(void **)((char *)v3 + 122)) || (v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2088))(v2), (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3) != v5) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3864))(v3) && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 996))(v2, 499) ) { v6 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 1004))(v2, 291); if ( !v6 ) return 1; if ( v6 < 3600 ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 1616))(v2, 291); return 1; } } } } } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3184))(v2) ) { if ( (v7 = sub_409730(v2)) != 0 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3864))(v7) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3864))(v3) || (v8 = *(_DWORD *)((char *)v3 + 122), *(_BYTE *)(v8 + 84) == 1) || !*(_DWORD *)(v8 + 16) && (v3A == 4 && (unsigned __int8)(*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v3 + 2432))( v3, v2, "ShineObjectClass::ShineMover::so_mobile_IsEnemy") == 1 || *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 122) + 12) + 105) && ((unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1360))(v3) == -1 || (v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1360))(v2), (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1360))(v3) != v9)) || (v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2088))(v2), v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3), sub_5CA1C0((int)&unk_13267D80, v11, v10) == 1) || (v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2), v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3), sub_462840(*(void **)((char *)v3 + 122), v13, v12) == 1)) ) return 1; } } return 0; } //----- (00430AC0) -------------------------------------------------------- int __thiscall sub_430AC0(void *this) { int v1; // esi@1 int v2; // eax@1 int v3; // ebx@2 bool v4; // zf@4 int v5; // eax@4 int v6; // ecx@4 int v7; // eax@9 unsigned int v8; // edi@14 int v9; // eax@16 int v10; // edx@16 int v11; // eax@16 int v12; // eax@18 int v13; // ecx@19 int v14; // ecx@26 signed int v15; // edx@28 void *v16; // ecx@30 unsigned __int16 v17; // ax@32 int v18; // ebx@33 signed int v19; // edx@35 int v20; // edi@35 char v21; // ST0C_1@36 int v22; // ST08_4@36 int v23; // ST04_4@36 signed int v24; // eax@36 signed int v25; // eax@38 char v26; // ST0C_1@38 int v27; // ST04_4@38 int v28; // edi@38 signed int v29; // eax@38 int v30; // eax@39 int v31; // edi@39 signed int v32; // eax@39 int v34; // [sp+10h] [bp-20h]@16 int v35; // [sp+14h] [bp-1Ch]@16 int v36; // [sp+18h] [bp-18h]@1 int v37; // [sp+1Ch] [bp-14h]@34 int v38; // [sp+20h] [bp-10h]@2 int v39; // [sp+2Ch] [bp-4h]@1 v1 = (int)this; v36 = (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(v1 + 161184) = 0; v2 = *(_DWORD *)(v1 + 32800); v39 = 0; if ( v2 ) { v38 = v2; v3 = v2; } else { v3 = *(_DWORD *)(v1 + 32804); v38 = *(_DWORD *)(v1 + 32804); } v4 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v1 + 2432))(v1, v3, "sp_Schedule_SwingStart") == 0; v5 = *(_DWORD *)v1; v6 = v1; if ( v4 ) goto LABEL_43; if ( *(_BYTE *)((*(int (__thiscall **)(int))(v5 + 1072))(v1) + 3278) & 4 ) goto LABEL_48; if ( !*(_DWORD *)(*(_DWORD *)(v1 + 160912) + 10) || !*(_DWORD *)(*(_DWORD *)(v1 + 160916) + 10) ) goto LABEL_49; v7 = *(_DWORD *)(v1 + 32800); if ( !v7 ) v7 = *(_DWORD *)(v1 + 32804); if ( !(unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v1 + 4116) + 80))(v7) ) { LABEL_49: (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 3792))(v1); LABEL_44: v39 = -1; goto LABEL_45; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) ) { LABEL_48: v5 = *(_DWORD *)v1; v6 = v1; LABEL_43: (*(void (__thiscall **)(int))(v5 + 3792))(v6); goto LABEL_44; } v8 = (unsigned int)(10 * (*(_DWORD *)(v1 + 155420) + (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1740))(v3))) >> 3; if ( sub_402710(v1, v3) <= v8 * v8 ) { v9 = *(_DWORD *)(v3 + 102); v34 = *(_DWORD *)v9; v10 = *(_DWORD *)(v9 + 4); v11 = *(_DWORD *)(v1 + 32800); v35 = v10; if ( !v11 ) v11 = *(_DWORD *)(v1 + 32804); sub_4BE0E0( (void *)v1, *(_DWORD *)(v11 + 102), 10000, (int)&v34, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); v12 = *(_DWORD *)(v1 + 32800); if ( v12 ) v13 = *(_DWORD *)(v1 + 32800); else v13 = *(_DWORD *)(v1 + 32804); if ( **(_DWORD **)(v13 + 102) != v34 ) goto LABEL_50; if ( !v12 ) v12 = *(_DWORD *)(v1 + 32804); if ( *(_DWORD *)(*(_DWORD *)(v12 + 102) + 4) != v35 ) { LABEL_50: (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 3792))(v1); v39 = -1; goto LABEL_45; } ++*(_BYTE *)(v1 + 7896); if ( *(_BYTE *)(v1 + 155428) & 4 ) { sub_42F2F0((void *)v1, v3); v14 = *(_DWORD *)(v1 + 4116); if ( v14 && (*(int (**)(void))(*(_DWORD *)v14 + 72))() == 11 ) { v15 = (signed int)((unsigned __int64)(1374389535000i64 * sub_4011C0( &unk_AF09DA8, **(_DWORD **)(v3 + 102) - **(_DWORD **)(v1 + 102), *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4) - *(_DWORD *)(*(_DWORD *)(v1 + 102) + 4))) >> 32) >> 8; *(_WORD *)(v1 + 160860) = v15 + ((unsigned int)v15 >> 31); } else { *(_WORD *)(v1 + 160860) = 0; } v16 = *(void **)(v1 + 160868); if ( v16 && sub_5CF620(v16) && (v17 = *((_WORD *)sub_5CF620(*(void **)(v1 + 160868)) + 4), v17 != -1) ) { v18 = sub_418CB0((int)&dword_14D20890, v17) + 18; if ( !*(_WORD *)v18 ) goto LABEL_15; v37 = 0; do { v19 = (signed int)((unsigned __int64)(*(_WORD *)v18 * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1288))(v1) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v20 = v19 + ((unsigned int)v19 >> 31); if ( v20 <= 0 ) break; v21 = *(_BYTE *)(v1 + 7896); v22 = v38; v23 = *(_WORD *)(v1 + 160860); v24 = sub_42F750((void *)v1); sub_574FF0((void *)(v1 + 82024), v20 + v24, v23, v22, v21); v18 += 2; ++v37; } while ( v37 < 3 ); } else { v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1288))(v1); v26 = *(_BYTE *)(v1 + 7896); v27 = *(_WORD *)(v1 + 160860); v28 = v25 / 2; v29 = sub_42F750((void *)v1); sub_574FF0((void *)(v1 + 82024), v28 + v29, v27, v3, v26); } v30 = *(_DWORD *)v1; *(_WORD *)(v1 + 161184) = 1; v31 = (*(int (__thiscall **)(int))(v30 + 1288))(v1); v32 = sub_42F750((void *)v1); sub_42A8B0(v1 + 160796, (int)sub_430AC0, 0, 3, v32 + v31); } v39 = -1; goto LABEL_45; } LABEL_15: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3792))(v1); v39 = -1; LABEL_45: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00430EA0) -------------------------------------------------------- int __thiscall sub_430EA0(void *this, int a2, int a3, int a4) { int v4; // esi@1 char v5; // al@6 int v6; // edx@6 int v7; // ecx@6 int v8; // edi@8 int v9; // eax@9 int v10; // eax@13 int v11; // eax@19 int v12; // eax@21 int v13; // ecx@22 unsigned __int16 v14; // ax@24 int v15; // eax@25 int v16; // ecx@26 int v17; // ecx@28 int v18; // eax@30 int v19; // ecx@31 int v20; // eax@39 int v21; // eax@39 int v22; // edi@41 int v23; // eax@42 int v24; // ecx@44 int v25; // eax@46 char v26; // al@48 int v27; // eax@52 int v28; // ecx@55 __int16 v29; // di@57 bool v30; // zf@57 int v31; // ecx@59 int v32; // ST0C_4@61 int v33; // eax@61 int v34; // eax@64 int v35; // ecx@67 int v36; // ST0C_4@69 int v37; // eax@69 int v38; // ecx@70 int v39; // ST0C_4@72 int v40; // eax@72 int v41; // ecx@73 char v42; // bl@76 int v44; // [sp-4h] [bp-2Ch]@38 int v45; // [sp+10h] [bp-18h]@28 int v46; // [sp+14h] [bp-14h]@28 int v47; // [sp+18h] [bp-10h]@1 int v48; // [sp+24h] [bp-4h]@1 v4 = (int)this; v47 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; dword_750AB8[dword_750CB8++] = -1; v48 = 0; if ( !(dword_87B24C & 1) ) { dword_87B24C |= 1u; word_87B248 = 4; atexit(nullsub_10); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_87B248) ) goto LABEL_83; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); sub_575B60((void *)(v4 + 82024)); if ( !*(_DWORD *)(v4 + 122) || *(_BYTE *)(v4 + 7888) & 4 ) goto LABEL_88; v5 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291); v6 = *(_DWORD *)v4; v7 = v4; if ( v5 ) { LABEL_82: (*(void (__thiscall **)(int))(v6 + 3792))(v7); LABEL_83: v44 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; goto LABEL_84; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(v6 + 996))(v4, 499) ) { LABEL_88: v6 = *(_DWORD *)v4; v7 = v4; goto LABEL_82; } v8 = *(_DWORD *)(v4 + 32800); if ( v8 ) v9 = *(_DWORD *)(v4 + 32800); else v9 = *(_DWORD *)(v4 + 32804); if ( !v9 || (v8 ? (v10 = *(_DWORD *)(v4 + 32800)) : (v10 = *(_DWORD *)(v4 + 32804)), !sub_427B40(*(_DWORD *)(v4 + 118), *(_DWORD *)(v10 + 118))) ) goto LABEL_50; if ( !v8 ) v8 = *(_DWORD *)(v4 + 32804); if ( !sub_499ED0((void *)v4, v8) ) goto LABEL_50; v11 = *(_DWORD *)(v4 + 32800); if ( !v11 ) v11 = *(_DWORD *)(v4 + 32804); LOBYTE(v12) = sub_548D30(v4, v11); if ( !v12 ) goto LABEL_50; v13 = *(_DWORD *)(v4 + 32800); if ( !v13 ) v13 = *(_DWORD *)(v4 + 32804); v14 = (*(int (**)(void))(*(_DWORD *)v13 + 1800))(); if ( !sub_63EDC0((int)&unk_14D159B0, v14, 2) ) goto LABEL_50; v15 = *(_DWORD *)(v4 + 32800); if ( v15 ) v16 = *(_DWORD *)(v4 + 32800); else v16 = *(_DWORD *)(v4 + 32804); v17 = *(_DWORD *)(v16 + 102); v45 = *(_DWORD *)v17; v46 = *(_DWORD *)(v17 + 4); if ( !v15 ) v15 = *(_DWORD *)(v4 + 32804); sub_4BE0E0( (void *)v4, *(_DWORD *)(v15 + 102), 10000, (int)&v45, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); v18 = *(_DWORD *)(v4 + 32800); v19 = v18 ? *(_DWORD *)(v4 + 32800) : *(_DWORD *)(v4 + 32804); if ( **(_DWORD **)(v19 + 102) != v45 ) goto LABEL_50; if ( !v18 ) v18 = *(_DWORD *)(v4 + 32804); if ( *(_DWORD *)(*(_DWORD *)(v18 + 102) + 4) != v46 ) goto LABEL_50; if ( *(_DWORD *)(v4 + 23832) > (unsigned int)dword_14D129E8 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); v44 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; LABEL_84: v48 = -1; goto LABEL_85; } *(_DWORD *)(v4 + 23836) = dword_14D129E8; v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v20 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); v21 = *(_DWORD *)(v4 + 32800); if ( !v21 ) v21 = *(_DWORD *)(v4 + 32804); v22 = sub_409730(v21); if ( !v22 ) { v41 = *(_DWORD *)(v4 + 32800); if ( !v41 ) v41 = *(_DWORD *)(v4 + 32804); v26 = (*(int (__stdcall **)(int))(*(_DWORD *)v41 + 2488))(v4); LABEL_49: if ( !v26 ) { LABEL_50: (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); v44 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; goto LABEL_84; } goto LABEL_76; } v23 = *(_DWORD *)(v4 + 122); if ( *(_BYTE *)(v23 + 84) ) goto LABEL_76; if ( !v23 ) goto LABEL_89; v24 = *(_DWORD *)(v23 + 16); if ( v24 && *(_BYTE *)(v24 + 58) == 4 ) { v25 = *(_DWORD *)(v4 + 32800); if ( !v25 ) v25 = *(_DWORD *)(v4 + 32804); v26 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, v25, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"); goto LABEL_49; } if ( v23 && (v27 = *(_DWORD *)(v23 + 12)) != 0 && *(_BYTE *)(v27 + 105) ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4) == -1 ) goto LABEL_76; v28 = *(_DWORD *)(v4 + 32800); if ( !v28 ) v28 = *(_DWORD *)(v4 + 32804); v29 = (*(int (**)(void))(*(_DWORD *)v28 + 1360))(); v30 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4) == v29; } else { LABEL_89: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v22 + 3864))(v22) ) goto LABEL_76; v34 = *(_DWORD *)(v4 + 32800); if ( !v34 ) v34 = *(_DWORD *)(v4 + 32804); if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 3588))(v4, v34) == 1 ) goto LABEL_76; v35 = *(_DWORD *)(v4 + 32800); if ( !v35 ) v35 = *(_DWORD *)(v4 + 32804); v36 = (*(int (**)(void))(*(_DWORD *)v35 + 2088))(); v37 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4); if ( sub_5CA1C0((int)&unk_13267D80, v37, v36) ) goto LABEL_76; v38 = *(_DWORD *)(v4 + 32800); if ( !v38 ) v38 = *(_DWORD *)(v4 + 32804); v39 = (*(int (**)(void))(*(_DWORD *)v38 + 2088))(); v40 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4); v30 = sub_462840(*(void **)(v4 + 122), v40, v39) == 0; } if ( v30 ) { v31 = *(_DWORD *)(v4 + 32800); if ( !v31 ) v31 = *(_DWORD *)(v4 + 32804); v32 = (*(int (**)(void))(*(_DWORD *)v31 + 2088))(); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4); sub_42E4F0(v33, v32); goto LABEL_50; } LABEL_76: *(_BYTE *)(v4 + 155428) |= 4u; v42 = *(_BYTE *)(v4 + 155428); *(_WORD *)(v4 + 7904) = 0; if ( !sub_42A910(v4 + 160796) ) { *(_DWORD *)(v4 + 155416) = 0; *(_BYTE *)(v4 + 155428) = v42 | 1; if ( !sub_560060((void *)v4) ) *(_BYTE *)(v4 + 155428) &= 0xFEu; sub_42A8B0(v4 + 160796, (int)sub_430AC0, 0, 2, 0); } v48 = -1; v44 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; LABEL_85: --dword_750CB8; return sub_467660((int)&unk_D020420, v44); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87B248: using guessed type __int16 word_87B248; // 87B24C: using guessed type int dword_87B24C; // 14D129E8: using guessed type int dword_14D129E8; //----- (004313C0) -------------------------------------------------------- bool __cdecl sub_4313C0(int a1, int a2) { return sub_422730(a1, 0, *(_DWORD *)(a1 + 16), a2, strlen((const char *)a2)) != 0; } //----- (00431400) -------------------------------------------------------- void *__cdecl sub_431400(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 116 ) { if ( result ) memcpy(result, v3, 0x74u); v3 = (char *)v3 + 116; } return result; } //----- (00431440) -------------------------------------------------------- int __thiscall sub_431440(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v6; // eax@2 int v7; // eax@2 int v8; // ebx@4 int v9; // eax@4 int v10; // eax@6 bool v11; // zf@6 int v12; // eax@9 void (__thiscall *v13)(_DWORD); // edx@9 int v14; // eax@11 int *v15; // ecx@12 int v16; // eax@20 int v17; // eax@21 int v18; // eax@23 int v20; // [sp+0h] [bp-40h]@0 int v21; // [sp+4h] [bp-3Ch]@0 char v22; // [sp+10h] [bp-30h]@9 signed int v23; // [sp+24h] [bp-1Ch]@24 int v24; // [sp+28h] [bp-18h]@24 char v25; // [sp+2Ch] [bp-14h]@24 int v26; // [sp+30h] [bp-10h]@1 int v27; // [sp+3Ch] [bp-4h]@1 v5 = this; v26 = (int)"ShineObjectClass::ShineMob::so_DamagedBy"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_DamagedBy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_DamagedBy"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; if ( a2 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1064))(a2); *(_DWORD *)(v6 + 8) += a3; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1324))(v5); sub_5A7F60(v7 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A36A0); } sub_4ADAA0(&dword_848F94, (int)v5); *((_DWORD *)v5 + 1991) -= a3; if ( *(_DWORD *)((char *)v5 + 126) ) { v8 = *(_DWORD *)((char *)v5 + 230); v9 = (int)((char *)v5 + 214); if ( *(_DWORD *)((char *)v5 + 234) >= 0x10u ) v9 = *(_DWORD *)v9; v10 = sub_4189B0(v9, (int)byte_6A492E, 0); v11 = v10 == 0; if ( !v10 ) v11 = v8 == 0; if ( !v11 ) { v12 = (*(int (__thiscall **)(void *, _DWORD, void *))(*(_DWORD *)v5 + 1264))(v5, *((_DWORD *)v5 + 1991), v5); sub_5D49D0((int)&v22, *(_DWORD *)((char *)v5 + 122), a2, v12, v20, v21); v13 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2920); v21 = (int)&v22; v20 = 88; LOBYTE(v27) = 1; v13(v5); LOBYTE(v27) = 0; sub_5D4580(&v22); } } if ( a2 ) { (*(void (__thiscall **)(void *, int, unsigned int))(*(_DWORD *)v5 + 1792))( v5, a2, ((signed int)((unsigned __int64)(a4 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a4 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); sub_482190((int)((char *)v5 + 9032), a2, a3); v14 = *((_DWORD *)v5 + 2042); if ( v14 ) { v15 = *(int **)(v14 + 4); if ( v15 ) { if ( *(_BYTE *)(v14 + 40) & 2 ) sub_5D22D0(&unk_14D40984, *(_WORD *)v15, a2, (int)v5); } } } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1232))(v5) != 10 ) (*(void (__stdcall **)(char *))(**((_DWORD **)v5 + 2255) + 4))((char *)v5 + 8220); if ( *((_WORD *)v5 + 4739) == -1 && a2 ) *((_WORD *)v5 + 4739) = *(_WORD *)(a2 + 4); v16 = *((_DWORD *)v5 + 2042); if ( v16 ) { v17 = *(_DWORD *)(v16 + 4); if ( v17 ) { if ( !*(_BYTE *)(v17 + 61) ) { v18 = *(_DWORD *)((char *)v5 + 102); *((_DWORD *)v5 + 2367) = *(_DWORD *)v18; *((_DWORD *)v5 + 2368) = *(_DWORD *)(v18 + 4); } } } v23 = *(_DWORD *)(*(_DWORD *)((*(int (__thiscall **)(void *, signed int, _DWORD, int, int))(*(_DWORD *)v5 + 1804))( v5, 999, 0, v20, v21) + 4) + 95); sub_5668F0(v5, a2, v23, v24, v25); --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_DamagedBy"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; //----- (004316A0) -------------------------------------------------------- void __cdecl sub_4316A0(void *a1, int a2) { void *v2; // ebx@1 void *v3; // eax@3 unsigned int v4; // [sp-4h] [bp-A0h]@1 void *v5; // [sp+Ch] [bp-90h]@1 void *v6; // [sp+10h] [bp-8Ch]@2 char v7; // [sp+14h] [bp-88h]@3 unsigned int v8; // [sp+88h] [bp-14h]@1 unsigned int *v9; // [sp+8Ch] [bp-10h]@1 int v10; // [sp+98h] [bp-4h]@1 int v11; // [sp+9Ch] [bp+0h]@1 v8 = (unsigned int)&v11 ^ __security_cookie; v4 = (unsigned int)&v11 ^ __security_cookie; v9 = &v4; v2 = a1; v5 = a1; v10 = 0; while ( 1 ) { v6 = v2; if ( !a2 ) break; v3 = sub_406480(&v7); if ( v2 ) memcpy(v2, v3, 0x74u); sub_401A10((int)&v7); --a2; v2 = (char *)v2 + 116; } } // 86FEB8: using guessed type int __security_cookie; //----- (00431770) -------------------------------------------------------- int __thiscall sub_431770(int this, int a2, void *a3, void *a4) { void *v4; // eax@1 void *v5; // ebx@1 void *v6; // edx@2 const void *v7; // esi@3 void *v8; // edi@3 void *v9; // edi@4 int v10; // esi@4 int result; // eax@7 int v12; // [sp+4h] [bp-4h]@1 v4 = a4; v5 = a3; v12 = this; *(_DWORD *)a2 = a3; if ( a3 == a4 ) { result = a2; } else { v6 = *(void **)(this + 4); if ( a4 != v6 ) { do { v7 = v4; v8 = v5; v4 = (char *)v4 + 116; v5 = (char *)v5 + 116; memcpy(v8, v7, 0x74u); } while ( v4 != v6 ); } v9 = *(void **)(this + 4); v10 = (int)v5; if ( v5 != v9 ) { do { sub_401A10(v10); v10 += 116; } while ( (void *)v10 != v9 ); this = v12; } result = a2; *(_DWORD *)(this + 4) = v5; } return result; } //----- (004317E0) -------------------------------------------------------- int __thiscall sub_4317E0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 int v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 int v10; // ecx@8 int v11; // edi@8 int v12; // [sp+0h] [bp-28h]@1 int v13; // [sp+10h] [bp-18h]@4 int v14; // [sp+14h] [bp-14h]@4 int *v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@4 v15 = &v12; v2 = this; if ( a2 > (unsigned int)&unk_234F72C ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 116; if ( result < a2 ) { v4 = sub_417A40(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v13 = v4; v16 = 0; sub_431400(v6, v5, (void *)v4); v7 = *(_DWORD *)v2; v14 = *(_DWORD *)(v2 + 4); v8 = (signed int)(v14 - v7 + ((unsigned __int64)(-1925330167i64 * (v14 - v7)) >> 32)) >> 6; v9 = v8 + ((unsigned int)v8 >> 31); v16 = -1; if ( v7 ) { for ( ; v7 != v14; v7 += 116 ) sub_401A10(v7); operator delete(*(void **)v2); } v10 = v13; result = v13 + 116 * a2; v11 = v13 + 116 * v9; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v11; *(_DWORD *)v2 = v10; } return result; } //----- (004318E6) -------------------------------------------------------- void __usercall sub_4318E6(int a1) { operator delete(*(void **)(a1 - 24)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00431900) -------------------------------------------------------- char __thiscall sub_431900(void *this, int a2, int a3, int a4, int a5, int a6) { int v6; // edi@1 int v7; // ebx@1 int v8; // eax@3 int v9; // esi@3 int v10; // eax@6 int v11; // eax@7 signed int v12; // ebx@9 signed int v13; // esi@11 void *v14; // eax@12 int v15; // eax@18 int v16; // eax@19 int v17; // eax@22 unsigned __int16 v18; // ax@24 int v19; // eax@25 unsigned int v20; // eax@28 int v21; // eax@30 int v22; // eax@30 int v23; // eax@33 int v24; // ST18_4@35 int (__thiscall *v25)(_DWORD); // eax@35 void *v26; // eax@35 int v27; // edx@40 int v28; // ecx@40 int v29; // esi@41 int v30; // eax@41 int v31; // edx@42 int v32; // edx@47 signed int v33; // edx@48 signed int v34; // edx@49 int v35; // esi@50 int v36; // edi@50 int v37; // edx@51 int v38; // ST24_4@51 void *v39; // eax@51 int v40; // eax@51 int v41; // ST24_4@53 void *v42; // eax@53 int v43; // eax@53 int v44; // eax@54 signed int v45; // eax@59 int v46; // esi@60 signed int v47; // edx@61 int v48; // edi@62 int v50; // [sp-4h] [bp-50h]@5 int v51; // [sp+10h] [bp-3Ch]@35 int v52; // [sp+14h] [bp-38h]@35 int v53; // [sp+18h] [bp-34h]@35 int v54; // [sp+20h] [bp-2Ch]@1 int v55; // [sp+24h] [bp-28h]@25 int v56; // [sp+28h] [bp-24h]@30 int v57; // [sp+2Ch] [bp-20h]@28 int v58; // [sp+30h] [bp-1Ch]@22 unsigned int v59; // [sp+34h] [bp-18h]@30 int v60; // [sp+38h] [bp-14h]@23 int v61; // [sp+3Ch] [bp-10h]@1 int v62; // [sp+48h] [bp-4h]@1 char v63; // [sp+57h] [bp+Bh]@6 v6 = (int)this; v61 = (int)this; v54 = (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"; dword_750AB8[dword_750CB8++] = -1; v7 = a2; v62 = 0; if ( !a2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) == 3 ) { v50 = (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"; goto LABEL_68; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); v9 = a3; if ( !*(_DWORD *)(a3 + 4) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLENCHANT_REQ : Blast invalid spell", v8); goto LABEL_5; } *(_BYTE *)a5 = 0; v10 = *(_DWORD *)(a3 + 4); v63 = 0; if ( *(_DWORD *)(v10 + 24) != *(_DWORD *)(v10 + 28) ) { v11 = *(_DWORD *)(v10 + 4); if ( !v11 ) goto LABEL_5; if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 3012))(v6, *(_WORD *)v11) ) { v12 = 0; while ( 1 ) { v13 = *(_DWORD *)(*(_DWORD *)(v9 + 4) + v12 + 64); if ( v13 != 792 ) { v14 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1324))(v6); if ( sub_409A00(v14, v13) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 1616))(v6, v13); sub_401940((void *)v6, v13); sub_405730((void *)v6, v13); } } v12 += 12; if ( v12 >= 48 ) break; v9 = a3; } v50 = (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"; goto LABEL_68; } } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 996))(v7, 291) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 996))(v7, 499) ) goto LABEL_5; v15 = *(_DWORD *)(*(_DWORD *)(a3 + 4) + 4); if ( !v15 ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLENCHANT_REQ : Blast invalid spell activ", v16); v50 = (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"; goto LABEL_68; } if ( *(_DWORD *)(v15 + 527) == 5 && !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 3724))(v6, v7) ) { LABEL_5: v50 = (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"; LABEL_68: --dword_750CB8; sub_467660((int)&unk_D020420, v50); return 0; } v17 = 0; v58 = 0; do { v60 = *(_DWORD *)(*(_DWORD *)(v9 + 4) + v17 + 64); if ( v60 != 792 ) { v18 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( (signed int)v18 < *(_DWORD *)(*(_DWORD *)(v9 + 4) + v58 + 72) ) { v19 = sub_401310(&unk_877138, v60); v55 = v19; if ( v19 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 1588))(v7, v19) ) { *(_BYTE *)a5 |= 1u; } else { v20 = *(_WORD *)(v9 + 8); v57 = 0; if ( v20 & 0xF00 ) v57 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v9 + 4) + 4) + 4 * ((v20 >> 8) & 0xF) + 483); v21 = *(_DWORD *)(*(_DWORD *)(v9 + 4) + v58 + 68); v56 = v21; v22 = *(_DWORD *)(v55 + 36 * v21 + 12); v59 = 0; if ( v22 ) v59 = *(_DWORD *)(v22 + 43); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1488))(v6) ) { v23 = *(_DWORD *)(v9 + 4); if ( v23 ) { if ( *(_DWORD *)(v23 + 8) != *(_DWORD *)(v23 + 12) ) { v51 = 0; v52 = 0; v53 = 0; v24 = v23; v25 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1488); LOBYTE(v62) = 1; v26 = (void *)v25(v6); if ( sub_5CF200(v26, (int)&v51, v24, 2, v6, v7) ) v59 = sub_5CDED0((int)&v51, v59); LOBYTE(v62) = 0; sub_424190((void **)&v51); } } } v55 = sub_401310(&unk_877138, v60); if ( v55 != 0 ) { v27 = *(_DWORD *)(v9 + 4); v28 = 0; if ( *(_DWORD *)(v27 + 8) != *(_DWORD *)(v27 + 12) ) { v29 = 0; v30 = (*(_DWORD *)(v27 + 12) - *(_DWORD *)(v27 + 8)) >> 2; if ( v30 > 0 ) { v31 = *(_DWORD *)(v27 + 8); while ( *(_DWORD *)v31 ) { if ( *(_DWORD *)(*(_DWORD *)v31 + 32) == 99 ) { v32 = v59 + v57; if ( (signed int)(v59 + v57) < 3600000 ) { v34 = (signed int)((unsigned __int64)(v32 * *(_WORD *)(v61 + 7408) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v28 = v34 + ((unsigned int)v34 >> 31); } else { v33 = (signed int)((unsigned __int64)(v32 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v28 = (v33 + ((unsigned int)v33 >> 31)) * *(_WORD *)(v61 + 7408); } break; } ++v29; v31 += 4; if ( v29 >= v30 ) break; } } } v35 = v55; v36 = v57 + v28 + v59; if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int, int, int, int, _DWORD, signed int, unsigned int, signed int, _DWORD))(*(_DWORD *)v7 + 1592))( v7, v61, v60, v56, v55, dword_14D129E8, 0, -1, v57 + v28 + v59, 5, 0) ) { v37 = *(_DWORD *)(*(_DWORD *)v35 + 34); v56 = dword_871500; v38 = v37; v39 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1324))(v7); v40 = sub_409A00(v39, v38); if ( v40 ) (*(void (__thiscall **)(int, int, _DWORD, int))(*(_DWORD *)v61 + 1492))( v61, v40, *(_DWORD *)(a3 + 4), v7); v41 = *(_DWORD *)(*(_DWORD *)v35 + 34); v42 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1324))(v7); v43 = sub_409A00(v42, v41); if ( v43 ) { v44 = sub_4066E0(v43); } else { sub_639100(&unk_86DDD8, (int)"BattleObjectGroup::BattleObject::bo_Routine: invalid abstate", v60); v44 = 0; } if ( v44 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v44 + 12))(v44) ) { sub_401900((void *)v7, *(_DWORD *)(*(_DWORD *)v35 + 34)); v45 = sub_50E7F0(dword_13231278, 4); if ( v36 < 3600000 ) { v47 = (signed int)((unsigned __int64)(v36 * v45 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v46 = v47 + ((unsigned int)v47 >> 31); } else { v46 = (((signed int)((unsigned __int64)(v36 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v36 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) * v45; } v48 = v55; (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v7 + 1008))( v7, *(_DWORD *)(*(_DWORD *)v55 + 34), v46, 1); sub_4055D0((void *)v7, *(_DWORD *)(*(_DWORD *)v48 + 34), v46, v56); } } else { sub_639100(&unk_86DDD8, (int)"BattleObjectGroup::BattleObject::bo_Routine : invalid abstate 2", v60); } v63 = 1; } v9 = a3; v6 = v61; } else { sub_639100(&unk_86DDD8, (int)"BattleObjectGroup::BattleObject::bo_Routine : Invalid abstate", v60); } } } } } v17 = v58 + 12; v58 = v17; } while ( v17 < 48 ); --dword_750CB8; v62 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SkillEnchant"); return v63; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871500: using guessed type int dword_871500; // 13231278: using guessed type int dword_13231278[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00431EA0) -------------------------------------------------------- int __thiscall sub_431EA0(void *this, int a2, int a3, int a4, int a5) { unsigned int v5; // ST24_4@1 int v6; // ebx@1 void (__thiscall *v7)(_DWORD, _DWORD); // edx@1 signed __int16 v8; // ax@1 int v9; // esi@4 int v10; // eax@4 int v11; // eax@6 bool v12; // zf@6 void (__thiscall *v13)(_DWORD, _DWORD, _DWORD); // edx@9 int v14; // esi@10 int v15; // edi@12 int v16; // eax@12 int v17; // eax@14 bool v18; // zf@14 int v19; // eax@18 int v20; // esi@21 int v21; // eax@23 int v22; // ST04_4@25 int v23; // eax@25 int v24; // esi@25 int v25; // eax@26 int v26; // edx@26 int v27; // eax@26 int v28; // eax@26 int v29; // eax@27 const char *v30; // eax@27 int (__thiscall *v31)(_DWORD); // eax@27 const char *v32; // eax@27 int v33; // eax@28 int v34; // edx@30 void *v35; // eax@30 int v37; // [sp+10h] [bp-150h]@30 int v38; // [sp+14h] [bp-14Ch]@30 int v39; // [sp+18h] [bp-148h]@30 int v40; // [sp+1Ch] [bp-144h]@30 int v41; // [sp+20h] [bp-140h]@30 int v42; // [sp+24h] [bp-13Ch]@30 int v43; // [sp+28h] [bp-138h]@30 char v44; // [sp+2Ch] [bp-134h]@9 void *v45; // [sp+34h] [bp-12Ch]@30 int v46; // [sp+38h] [bp-128h]@30 int (__stdcall **v47)(int, int); // [sp+3Ch] [bp-124h]@20 int v48; // [sp+40h] [bp-120h]@20 unsigned int v49; // [sp+44h] [bp-11Ch]@18 int v50; // [sp+48h] [bp-118h]@1 __int16 v51; // [sp+4Ch] [bp-114h]@27 char v52[4]; // [sp+4Eh] [bp-112h]@27 int v53; // [sp+52h] [bp-10Eh]@27 int v54; // [sp+56h] [bp-10Ah]@27 int v55; // [sp+5Ah] [bp-106h]@27 int v56; // [sp+5Eh] [bp-102h]@27 int v57; // [sp+62h] [bp-FEh]@27 int v58; // [sp+66h] [bp-FAh]@27 int v59; // [sp+6Ah] [bp-F6h]@27 __int16 v60; // [sp+6Eh] [bp-F2h]@27 char v61[4]; // [sp+70h] [bp-F0h]@27 int v62; // [sp+74h] [bp-ECh]@27 int v63; // [sp+78h] [bp-E8h]@27 int v64; // [sp+7Ch] [bp-E4h]@27 int v65; // [sp+80h] [bp-E0h]@27 int v66; // [sp+84h] [bp-DCh]@27 int v67; // [sp+88h] [bp-D8h]@27 int v68; // [sp+8Ch] [bp-D4h]@27 unsigned int v69; // [sp+150h] [bp-10h]@1 int v70; // [sp+15Ch] [bp-4h]@1 int v71; // [sp+160h] [bp+0h]@1 v69 = (unsigned int)&v71 ^ __security_cookie; v5 = (unsigned int)&v71 ^ __security_cookie; v6 = (int)this; v50 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_KilledBy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_KilledBy"; dword_750AB8[dword_750CB8++] = -1; **(_BYTE **)(v6 + 3828) = 3; v7 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 3856); v70 = 0; v7(v6, v5); v8 = -1; if ( a2 ) v8 = *(_WORD *)(a2 + 4); v12 = *(_DWORD *)(v6 + 126) == 0; *(_WORD *)(v6 + 360) = v8; if ( !v12 ) { v9 = *(_DWORD *)(v6 + 258); v10 = v6 + 242; if ( *(_DWORD *)(v6 + 262) >= 0x10u ) v10 = *(_DWORD *)v10; v11 = sub_4189B0(v10, (int)byte_6A492E, 0); v12 = v11 == 0; if ( !v11 ) v12 = v9 == 0; if ( !v12 ) { sub_5D4C20((int)&v44, *(_DWORD *)(v6 + 122), a2, v6); v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 2920); LOBYTE(v70) = 1; v13(v6, 116, &v44); LOBYTE(v70) = 0; sub_5D4580(&v44); } } v14 = *(_DWORD *)(v6 + 122); if ( v14 && *(_DWORD *)(v14 + 296) ) { v15 = *(_DWORD *)(v14 + 428); v16 = v14 + 412; if ( *(_DWORD *)(v14 + 432) >= 0x10u ) v16 = *(_DWORD *)v16; v17 = sub_4189B0(v16, (int)byte_6A492E, 0); v18 = v17 == 0; if ( !v17 ) v18 = v15 == 0; if ( !v18 ) { sub_5D4C20((int)&v44, v14, v50, v6); LOBYTE(v70) = 2; sub_463090(v14, 116, (int)&v44); LOBYTE(v70) = 0; sub_5D4580(&v44); } } v19 = sub_409A00((void *)(v6 + 432), 345); v49 = 0; if ( v19 ) v49 = sub_4088C0((void *)v19); (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 3932))(v6); memcpy((void *)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1184))(v6), &unk_13244DF0, 0x63u); v47 = &off_6A0504; v48 = v6 + 3796; LOBYTE(v70) = 3; sub_43C470(v6 + 3796, (int)&v47); LOBYTE(v70) = 0; if ( v49 ) { v20 = dword_877854; if ( dword_877854 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, signed int, unsigned int, _DWORD))(*(_DWORD *)v6 + 1596))( v6, v6, *(_DWORD *)(*(_DWORD *)dword_877854 + 34), 1, dword_877854, dword_14D129E8, 0, -1, v49, 0) ) { sub_401900((void *)v6, *(_DWORD *)(*(_DWORD *)v20 + 34)); v21 = *(_DWORD *)(v20 + 48); if ( v21 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v6 + 1008))( v6, *(_DWORD *)(*(_DWORD *)v20 + 34), *(_DWORD *)(v21 + 43), 1); sub_4055D0((void *)v6, *(_DWORD *)(*(_DWORD *)v20 + 34), *(_DWORD *)(*(_DWORD *)(v20 + 48) + 43), 1); } } } } (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 864))(v6); v22 = *(_DWORD *)(v6 + 102); v23 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v6, v23, v22, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 52))(v6, 0); v24 = v50; if ( v50 ) { v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v50 + 1064))(v50); v26 = *(_DWORD *)v6; v50 = v25 + 4; v27 = (*(int (__thiscall **)(int))(v26 + 3808))(v6); *(_DWORD *)v50 += v27; v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v24 + 1064))(v24); *(_DWORD *)(v28 + 8) += a3; if ( *(_DWORD *)(v6 + 122) ) { v29 = *(_DWORD *)v6; v51 = *(_WORD *)(v6 + 4); v30 = (const char *)(*(int (__thiscall **)(int))(v29 + 2196))(v6); v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; v54 = 0; v53 = 0; *(_DWORD *)v52 = 0; strncpy(v52, v30, 0x20u); v31 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v24 + 2196); v60 = *(_WORD *)(v24 + 4); v32 = (const char *)v31(v24); v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; *(_DWORD *)v61 = 0; strncpy(v61, v32, 0x20u); sub_5070A0(*(void **)(*(_DWORD *)(v6 + 122) + 68), (int)sub_50B140, (int)&v51); if ( sub_4627E0(*(void **)(v6 + 122)) ) { v33 = sub_4627E0(*(void **)(v6 + 122)); sub_47D6D0((void *)v33, v6, v24); } } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v24 + 1488))(v24) ) { v39 = 10; v40 = 0; v37 = 4; v38 = 0; v41 = v24; v42 = v24; v43 = v6; v45 = 0; v46 = 0; v47 = 0; v34 = *(_DWORD *)v24; LOBYTE(v70) = 4; v35 = (void *)(*(int (__thiscall **)(int))(v34 + 1488))(v24); sub_5CF1E0(v35, (int)&v45, (int)&v37); LOBYTE(v70) = 0; if ( v45 ) operator delete(v45); v45 = 0; v46 = 0; v47 = 0; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v24 + 2568))(v24, 0); } --dword_750CB8; v70 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_KilledBy"); } // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 877854: using guessed type int dword_877854; // 14D129E8: using guessed type int dword_14D129E8; //----- (004323C0) -------------------------------------------------------- int __thiscall sub_4323C0(void *this, int a2, int a3, int a4, int a5) { int v5; // esi@1 char v6; // al@1 int v7; // eax@3 int v8; // eax@5 int v9; // edi@7 int v10; // ebx@8 unsigned __int16 v11; // cx@10 int v12; // eax@14 int v13; // ebx@20 unsigned __int16 v14; // ST14_2@26 void *v15; // eax@26 int v16; // eax@26 int v17; // ecx@26 void *v18; // eax@28 int v19; // eax@30 void *v20; // eax@32 int v21; // ebx@32 int v22; // ebx@32 int v23; // eax@34 int v24; // eax@37 int v25; // eax@43 int v26; // ecx@43 void *v27; // ebx@45 int v28; // eax@45 int v29; // eax@45 int v30; // eax@50 void *v31; // ebx@53 int v32; // edi@53 int v33; // eax@55 int v35; // [sp-4h] [bp-50h]@2 char v36; // [sp+10h] [bp-3Ch]@51 char v37; // [sp+20h] [bp-2Ch]@35 int v38; // [sp+2Ch] [bp-20h]@1 int v39; // [sp+30h] [bp-1Ch]@14 int v40; // [sp+34h] [bp-18h]@8 int v41; // [sp+38h] [bp-14h]@10 char v42; // [sp+3Ch] [bp-10h]@9 int v43; // [sp+48h] [bp-4h]@1 int v44; // [sp+54h] [bp+8h]@9 int v45; // [sp+5Ch] [bp+10h]@17 v5 = (int)this; v38 = (int)"ShineObjectClass::ShineMob::so_KilledBy"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_KilledBy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_KilledBy"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_BYTE *)(v5 + 7888); v43 = 0; if ( !(v6 & 8) ) { *(_BYTE *)(v5 + 7888) = v6 | 8; v7 = *(_DWORD *)(v5 + 122); if ( v7 ) sub_4B0020((void *)(v7 + 72), ***(_WORD ***)(v5 + 8168)); v8 = *(_DWORD *)(v5 + 9024); if ( v8 ) *(_DWORD *)(v8 + 80) = dword_14D129E8; v9 = a2; (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v5 + 1792))( v5, a2, ((signed int)((unsigned __int64)(a4 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a4 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); sub_431EA0((void *)v5, a2, a3, a4, a5); *(_DWORD *)(v5 + 8212) = dword_14D129E8; *(_DWORD *)(v5 + 7964) = 0; sub_4ADB70(&dword_848F94, v5); if ( !a2 ) goto LABEL_56; *(_WORD *)(v5 + 8210) = *(_WORD *)(a2 + 4); v10 = *(_DWORD *)(*(_DWORD *)(v5 + 122) + 60); v40 = v10; if ( v10 == -1 || (v44 = sub_494970(&dword_D61E090, v10, (int)&v42)) == 0 ) goto LABEL_26; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1360))(v9); v41 = v11; if ( v11 == -1 ) { sub_499220(&dword_D64C510, v10, v9, *(_WORD *)(v44 + 153), 1); LABEL_26: v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1800))(v5); v15 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1056))(v9); sub_5C9240(v15, v14); sub_4822C0(v5 + 9032, v9, a3, v5); v16 = *(_DWORD *)(v5 + 8168); v17 = *(_DWORD *)(v16 + 28); if ( v17 && **(_WORD **)v16 == *(_DWORD *)v17 ) { v18 = off_849C18; *(_WORD *)off_849C18 = 9304; *(_DWORD *)((char *)v18 + 2) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v5 + 8168) + 28) + 4); if ( sub_4C81E0(&off_849C18, 6) ) { v19 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 6); } } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v5 + 8168) + 4) + 155) ) { v20 = off_849C18; *(_WORD *)off_849C18 = 9292; v21 = (int)((char *)v20 + 2); (*(void (__stdcall **)(char *, _DWORD))(**(_DWORD **)(v5 + 8844) + 48))( (char *)v20 + 2, **(_WORD **)(*(_DWORD *)(v5 + 8168) + 4)); v22 = 4 * *(_BYTE *)(v21 + 2) + 5; if ( sub_4C81E0(&off_849C18, v22) ) { v23 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v23); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", v22); } } sub_481400((void *)(v5 + 9032), (int)&v37); sub_481A00((void *)(v5 + 9032), v5, *(_DWORD *)(v5 + 8168), *(_WORD *)(v5 + 4)); if ( *(_BYTE *)(v5 + 9572) == 1 ) { if ( *(_WORD *)(v5 + 9648) == -1 || (v24 = sub_418D40((int)&unk_14D159B0, *(_WORD *)(v5 + 9648))) == 0 ) v24 = *(_DWORD *)(v5 + 8168); sub_48EA50(&unk_D5552D0, v9, v24, *(void **)(v5 + 9024), v5, (int)&v37, a5); } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2692))(v9) ) sub_5CBAE0((int)sub_575EA0, v9, v5, *(_DWORD *)(v5 + 8168)); else sub_4CC040((int)sub_575EA0, v9, v5, *(_DWORD *)(v5 + 8168)); v25 = *(_DWORD *)(v5 + 8168); v26 = *(_DWORD *)(v25 + 32); if ( v26 && **(_WORD **)v25 == *(_DWORD *)v26 ) { v27 = off_849C18; *(_WORD *)off_849C18 = 1937; *((_WORD *)v27 + 1) = ***(_WORD ***)(v5 + 8168); v28 = *(_DWORD *)(v5 + 122); *((_DWORD *)v27 + 1) = *(_DWORD *)v28; *((_DWORD *)v27 + 2) = *(_DWORD *)(v28 + 4); *((_DWORD *)v27 + 3) = *(_DWORD *)(v28 + 8); v29 = *(_DWORD *)(v5 + 102); *((_DWORD *)v27 + 4) = *(_DWORD *)v29; *((_DWORD *)v27 + 5) = *(_DWORD *)(v29 + 4); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1232))(v9) == 2 ) *((_DWORD *)v27 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); else *((_DWORD *)v27 + 6) = 0; if ( sub_4C81E0(&off_849C18, 28) ) { v30 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v30); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 28); } sub_428050((int)&v36, 1, 911, ***(_WORD ***)(v5 + 8168)); LOBYTE(v43) = 1; sub_549B60((void *)v5, (int)&v36, 0); LOBYTE(v43) = 0; sub_427EB0(&v36); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1232))(v9) == 2 ) { v31 = off_849C18; *(_WORD *)off_849C18 = -14325; *(_DWORD *)((char *)v31 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 840))(v9); *(_DWORD *)((char *)v31 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *((_BYTE *)v31 + 10) = sub_5A7540(byte_14D16AE8)[16]; *((_BYTE *)v31 + 11) = 1; *((_DWORD *)v31 + 3) = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1800))(v5); v32 = *(_DWORD *)(v9 + 102); *((_DWORD *)v31 + 4) = *(_DWORD *)v32; *((_DWORD *)v31 + 5) = *(_DWORD *)(v32 + 4); if ( sub_4C81E0(&off_849C18, 24) ) { v33 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v33); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 24); } } goto LABEL_56; } if ( v11 < 0xFA0u ) { v12 = *(_BYTE *)(208 * v11 + dword_DA230A4); v39 = v12; if ( v12 >= 2 && v12 <= 5 ) { v45 = 0; if ( v12 > 0 ) { while ( 1 ) { v13 = sub_4CB7D0(v11, v45); if ( v13 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1156))(v13) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1156))(v13) != 3 && (unsigned int)sub_402710(v5, v13) < 0xF4240 ) sub_499220(&dword_D64C510, v40, v13, *(_WORD *)(v44 + 153), 1); ++v45; if ( v45 >= v39 ) break; v11 = v41; } } goto LABEL_26; } sub_639100(&unk_86DDD8, (int)"ShineMob::so_KilledBy : Invalid party member number", v12); } else { sub_639100(&unk_86DDD8, (int)"ShineMob::so_KilledBy : Too large party handle", v11); } LABEL_56: --dword_750CB8; v43 = -1; v35 = (int)"ShineObjectClass::ShineMob::so_KilledBy"; return sub_467660((int)&unk_D020420, v35); } --dword_750CB8; v43 = -1; v35 = (int)"ShineObjectClass::ShineMob::so_KilledBy"; return sub_467660((int)&unk_D020420, v35); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; // D61E090: using guessed type int dword_D61E090; // DA230A4: using guessed type int dword_DA230A4; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D148D0: using guessed type int dword_14D148D0; //----- (004329D0) -------------------------------------------------------- char __thiscall sub_4329D0(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 char result; // al@1 int v7; // eax@3 int v8; // ecx@3 _BYTE *v9; // ecx@3 int v10; // eax@5 int v11; // ecx@5 _BYTE *v12; // ecx@5 v5 = this; result = *((_BYTE *)this + 7888); if ( !(result & 8) ) { *((_BYTE *)this + 7888) = result | 8; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(*(_DWORD *)this + 996))(291) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 996))(v5, 499) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); *((_DWORD *)v12 + 4) = *(_DWORD *)(v10 + 16); v12[20] = 0; } sub_431EA0(v5, a2, a3, a4, a5); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v5 + 2732))(v5, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v5 + 3264))(v5, 0); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v5 + 828))(v5, 0, 1, 3); result = sub_555DF0(&unk_13253630, *((_WORD *)v5 + 2), 0, 126); } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00432B10) -------------------------------------------------------- char __userpurge sub_432B10(int a1, double a2, int a3, int a4, int a5, signed int a6, int a7) { int v7; // esi@1 int v8; // edi@1 int v10; // eax@5 int v11; // eax@5 signed int v12; // edx@7 void (__stdcall *v13)(_DWORD); // eax@7 double v14; // st7@7 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD); // eax@9 int v16; // ebx@14 signed int v17; // edx@16 int v18; // ebx@16 int v19; // eax@19 unsigned int v20; // eax@19 int v21; // edx@22 int v22; // eax@22 int v23; // ebx@23 int v24; // edx@27 int v25; // eax@31 int v26; // ecx@31 int v27; // eax@33 int v28; // eax@33 void (__thiscall *v29)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@33 int v30; // ebx@37 int v31; // eax@42 int v32; // eax@42 int v33; // eax@46 int v34; // edx@48 int v35; // ecx@50 int v36; // eax@53 int v37; // eax@53 void *v38; // ebx@57 char v39; // dl@57 char v40; // cl@57 char v41; // al@57 char v42; // cl@57 char v43; // dl@63 int v44; // eax@65 int v45; // eax@68 int v46; // eax@68 int v47; // ebx@68 int v48; // eax@68 int v49; // eax@71 int v50; // eax@74 int v51; // eax@74 int v52; // ebx@74 int v53; // eax@74 void *v54; // ebx@75 char v55; // dl@75 int v56; // ST24_4@81 int v57; // ST10_4@81 int v58; // eax@81 int (__stdcall *(**v59)[4])(int); // eax@82 signed int v60; // ebx@82 int (__thiscall *v61)(_DWORD); // edx@86 int (__thiscall *v62)(_DWORD); // eax@87 void *v63; // eax@87 int (__thiscall *v64)(_DWORD); // edx@87 void *v65; // eax@87 int (__thiscall *v66)(_DWORD); // eax@89 void *v67; // eax@89 int (__thiscall *v68)(_DWORD); // edx@89 void *v69; // eax@89 int v70; // edi@91 int v71; // eax@91 int v72; // eax@93 bool v73; // zf@93 void (__thiscall *v74)(_DWORD, _DWORD, _DWORD); // edx@96 int v75; // [sp+10h] [bp-84h]@5 int v76; // [sp+14h] [bp-80h]@5 int v77; // [sp+18h] [bp-7Ch]@5 __int16 v78; // [sp+1Ch] [bp-78h]@5 char v79; // [sp+20h] [bp-74h]@5 int v80; // [sp+21h] [bp-73h]@5 __int16 v81; // [sp+25h] [bp-6Fh]@5 int v82; // [sp+28h] [bp-6Ch]@5 int v83; // [sp+2Ch] [bp-68h]@5 int v84; // [sp+30h] [bp-64h]@5 int v85; // [sp+34h] [bp-60h]@5 int v86; // [sp+38h] [bp-5Ch]@5 int v87; // [sp+3Ch] [bp-58h]@82 int v88; // [sp+40h] [bp-54h]@82 int v89; // [sp+44h] [bp-50h]@82 int v90; // [sp+48h] [bp-4Ch]@82 int v91; // [sp+4Ch] [bp-48h]@82 int v92; // [sp+50h] [bp-44h]@82 int v93; // [sp+54h] [bp-40h]@82 void *v94; // [sp+58h] [bp-3Ch]@86 int v95; // [sp+5Ch] [bp-38h]@86 int v96; // [sp+60h] [bp-34h]@86 int v97; // [sp+68h] [bp-2Ch]@1 char v98; // [sp+6Ch] [bp-28h]@96 char v99; // [sp+74h] [bp-20h]@81 __int16 v100; // [sp+76h] [bp-1Eh]@48 double v101; // [sp+78h] [bp-1Ch]@6 int v102; // [sp+80h] [bp-14h]@23 unsigned int v103; // [sp+84h] [bp-10h]@5 int v104; // [sp+90h] [bp-4h]@1 signed int v105; // [sp+9Ch] [bp+8h]@6 int v106; // [sp+9Ch] [bp+8h]@17 signed int v107; // [sp+9Ch] [bp+8h]@23 char v108; // [sp+9Fh] [bp+Bh]@33 int v109; // [sp+A0h] [bp+Ch]@42 int v110; // [sp+A0h] [bp+Ch]@52 int v111; // [sp+A0h] [bp+Ch]@68 int v112; // [sp+A0h] [bp+Ch]@74 v7 = a1; v97 = (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage"; dword_750AB8[dword_750CB8++] = -1; v8 = a3; v104 = 0; if ( !a3 || !*(_DWORD *)(v7 + 122) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 12 ) { --dword_750CB8; v104 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage"); return 0; } **(_BYTE **)(v7 + 106) = sub_401220( &unk_AF09DA8, **(_DWORD **)(a3 + 102) - **(_DWORD **)(v7 + 102), *(_DWORD *)(*(_DWORD *)(a3 + 102) + 4) - *(_DWORD *)(*(_DWORD *)(v7 + 102) + 4)); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1800))(a3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v7 + 3776))(v7, v10); (*(void (__thiscall **)(int))(*(_DWORD *)v7 + 1416))(v7); (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 1416))(a3); v82 = *(_DWORD *)(v7 + 102); v11 = *(_DWORD *)(v7 + 7892); v75 = v7; v76 = a3; v77 = 0; v79 = 0; v80 = 0; v78 = 0; v83 = 1000; v84 = 0; v81 = 0; v85 = 0; v86 = 1000; v103 = 0; if ( v11 > 0 ) goto LABEL_11; (*(void (__stdcall **)(int *))(**(_DWORD **)(v7 + 7884) + 24))(&v75); v101 = a2 * dbl_86D0B0; v105 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( (double)v105 <= v101 ) { v12 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v13 = *(void (__stdcall **)(_DWORD))(**(_DWORD **)(v7 + 7884) + 44); v14 = (double)v12; v101 = v14; v13(&v75); if ( v14 >= v101 ) { v11 = (*(int (__stdcall **)(int *))(**(_DWORD **)(v7 + 7884) + 28))(&v75); LABEL_11: v103 = v11; goto LABEL_12; } } if ( *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1072))(v7) + 3120) < 1 ) { v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 1792); LOBYTE(v80) = 1; v15(v8, v7, 1); } LABEL_12: if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1072))(v8) + 3282) ) { v16 = (_BYTE)v80 == 1 ? (*(int (__stdcall **)(int *))(**(_DWORD **)(v7 + 7884) + 28))(&v75) : v103; v17 = (signed int)((unsigned __int64)(v16 * *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1072))(v8) + 3282) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v18 = v17 + ((unsigned int)v17 >> 31); if ( !*(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1072))(v8) + 3496) || (v106 = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1072))(v8) + 3496), sub_402710(v7, v8) > (unsigned int)(v106 * v106)) ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 3924))(v7, v18, v8); } v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3892))(v7); v20 = ((signed int)((unsigned __int64)((signed int)(v103 * v19) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v103 * v19) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); HIDWORD(v101) = v20; if ( (signed int)v103 > 0 && !v20 ) { v20 = 1; HIDWORD(v101) = 1; } v21 = *(_DWORD *)v8; v103 = v20; v22 = (*(int (__thiscall **)(int))(v21 + 2524))(v8); if ( v22 ) { v102 = 1000; v107 = 0; v23 = v22 + 8; while ( *(_DWORD *)(v23 - 4) != 45 || *(_DWORD *)v23 != (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1800))(v7) ) { if ( *(_DWORD *)(v23 - 4) == 44 ) { v24 = *(_DWORD *)v23; v23 += 8; v102 = v24; ++v107; if ( v107 < 4 ) continue; } goto LABEL_30; } v103 = ((signed int)((unsigned __int64)(HIDWORD(v101) * v102 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(HIDWORD(v101) * v102 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } LABEL_30: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 28))(v8) ) { v26 = v103; } else { v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1072))(v7); v26 = *(_DWORD *)(v25 + 3120) + v103; } v27 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 3048))(v8, v26); v28 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v8 + 3500))(v8, v27, 0); v29 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 3816); v103 = v28; v29(v7, v8, v28, &v75); v108 = 0; if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1256))(v8) ) v108 = 1; if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < a6 ) { if ( a4 < 792 ) { v30 = dword_8772F0[a4]; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", a4); v30 = 0; } if ( v30 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int, int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v8 + 1592))( v8, v7, a4, a5, v30, dword_14D129E8, 0, -1, 0, 4, 0) ) { sub_401900((void *)v8, *(_DWORD *)(*(_DWORD *)v30 + 34)); v31 = v30 + 36 * a5 + 12; v109 = v31; v32 = *(_DWORD *)v31; if ( v32 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v8 + 1008))( v8, *(_DWORD *)(*(_DWORD *)v30 + 34), *(_DWORD *)(v32 + 43), 1); sub_4055D0((void *)v8, *(_DWORD *)(*(_DWORD *)v30 + 34), *(_DWORD *)(*(_DWORD *)v109 + 43), a5); } } if ( a7 > 0 ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 1796))(v7, v8, a7); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage : Invalid abstate", a4); } } LOWORD(v33) = *(_WORD *)(*(_DWORD *)(v7 + 3804) + 12 * *(_WORD *)(v7 + 3810) + 4); while ( (unsigned __int16)v33 < *(_WORD *)(v7 + 3800) ) { v34 = *(_DWORD *)(v7 + 3804); v33 = (unsigned __int16)v33; v100 = *(_WORD *)(v34 + 12 * (unsigned __int16)v33 + 4); if ( (unsigned __int16)v33 < *(_WORD *)(v7 + 3800) && *(_BYTE *)(v34 + 12 * v33 + 8) ) v35 = *(_DWORD *)(v34 + 12 * v33); else v35 = 0; v110 = dword_871508[3 * *(_DWORD *)(v35 + 4)]; if ( (unsigned __int16)v33 >= *(_WORD *)(v7 + 3800) || (v36 = 3 * v33, v73 = *(_BYTE *)(v34 + 4 * v36 + 8) == 0, v37 = v34 + 4 * v36, v73) ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v110 + 64))(0); LOWORD(v33) = v100; } else { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v110 + 64))(*(_DWORD *)v37); LOWORD(v33) = v100; } } (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v7 + 2616))(v7, 8, *(_WORD *)(v8 + 4), 0); (*(void (__thiscall **)(int, _DWORD, int, signed int, _DWORD))(*(_DWORD *)v7 + 3064))(v7, 0, v8, 1, 0); (*(void (__thiscall **)(int, signed int, int, int, _DWORD))(*(_DWORD *)v7 + 3064))(v7, 3, v7, v80, 0); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 3052))(v8) ) goto LABEL_82; v38 = off_849C18; *(_WORD *)off_849C18 = 9288; v39 = *((_BYTE *)v38 + 6); *((_WORD *)v38 + 1) = *(_WORD *)(v7 + 4); *((_WORD *)v38 + 2) = *(_WORD *)(v8 + 4); *((_BYTE *)v38 + 6) ^= (v79 ^ v39) & 1; v40 = *((_BYTE *)v38 + 6) ^ (*((_BYTE *)v38 + 6) ^ 2 * BYTE3(v80)) & 2; *((_BYTE *)v38 + 6) = v40; v41 = v40 ^ (v40 ^ 4 * v80) & 4; *((_BYTE *)v38 + 6) = v41; v42 = v41 & 0x7F | (HIBYTE(v81) << 7); *((_BYTE *)v38 + 6) = v42; *((_BYTE *)v38 + 6) = v42 ^ (v42 ^ 8 * BYTE2(v80)) & 8; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3756))(v7) == 1 ) *((_BYTE *)v38 + 6) ^= (*((_BYTE *)v38 + 6) ^ 16 * (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3836))(v7)) & 0x10; else *((_BYTE *)v38 + 6) &= 0xEFu; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3756))(v7) == 1 ) *((_BYTE *)v38 + 7) ^= ((*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3840))(v7) ^ *((_BYTE *)v38 + 7)) & 1; else *((_BYTE *)v38 + 7) &= 0xFEu; v43 = *((_BYTE *)v38 + 6) ^ ((_BYTE)v81 << 6); *((_WORD *)v38 + 4) = v103; *((_BYTE *)v38 + 6) ^= v43 & 0x40; *(_DWORD *)((char *)v38 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1256))(v8); *((_WORD *)v38 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2024))(v8); *((_BYTE *)v38 + 17) = *(_BYTE *)(v7 + 7897); *((_BYTE *)v38 + 16) = *(_BYTE *)(v7 + 7904); if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2480))(v7) ) { if ( sub_4C81E0(&off_849C18, 18) ) { v44 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v44 + 12))(v44, v7, &off_849C18); goto LABEL_69; } goto LABEL_67; } if ( !sub_4C81E0(&off_849C18, 18) ) { LABEL_67: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage : Packet Too Long", 18); goto LABEL_69; } v45 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2480))(v7); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v45 + 764))(v45); v47 = *(_DWORD *)v46; v111 = v46; v48 = (*(int (__thiscall **)(int, void **))(*(_DWORD *)v7 + 2480))(v7, &off_849C18); (*(void (__thiscall **)(int, int))(v47 + 12))(v111, v48); LABEL_69: if ( (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2480))(v8) ) { if ( sub_4C81E0(&off_849C18, 18) ) { v50 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2480))(v8); v51 = (*(int (__thiscall **)(int))(*(_DWORD *)v50 + 764))(v50); v52 = *(_DWORD *)v51; v112 = v51; v53 = (*(int (__thiscall **)(int, void **))(*(_DWORD *)v8 + 2480))(v8, &off_849C18); (*(void (__thiscall **)(int, int))(v52 + 12))(v112, v53); goto LABEL_75; } goto LABEL_73; } if ( !sub_4C81E0(&off_849C18, 18) ) { LABEL_73: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage : Packet Too Long", 18); goto LABEL_75; } v49 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v49 + 12))(v49, v8, &off_849C18); LABEL_75: v54 = off_849C18; *(_WORD *)off_849C18 = 9289; v55 = *((_BYTE *)v54 + 6); *((_WORD *)v54 + 1) = *(_WORD *)(v7 + 4); *((_WORD *)v54 + 2) = *(_WORD *)(v8 + 4); *((_BYTE *)v54 + 6) ^= (v80 ^ v55) & 1; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 3756))(v7) == 1 ) *((_BYTE *)v54 + 6) ^= (*((_BYTE *)v54 + 6) ^ 2 * (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3836))(v7)) & 2; else *((_BYTE *)v54 + 6) &= 0xFDu; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 3756))(v7) == 1 ) *((_BYTE *)v54 + 6) ^= (*((_BYTE *)v54 + 6) ^ 4 * (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3840))(v7)) & 4; else *((_BYTE *)v54 + 6) &= 0xFBu; *(_DWORD *)((char *)v54 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1256))(v8); *(_WORD *)((char *)v54 + 11) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2024))(v8); *((_BYTE *)v54 + 13) = *(_BYTE *)(v7 + 7904); *((_BYTE *)v54 + 14) = 0; sub_4287B0(&v99, &off_849C18, 15); v56 = *(_WORD *)(v8 + 4); v57 = *(_DWORD *)(v7 + 102); LOBYTE(v104) = 1; v58 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v7, v58, v57, 0, 0, (int)&v99, 0, v56); LOBYTE(v104) = 0; sub_428A70(&v99); LABEL_82: v59 = *(int (__stdcall *(***)[4])(int))(v7 + 7884); v60 = 0; v88 = 0; v89 = 10; v90 = 0; v91 = 0; v92 = v7; v93 = v8; v87 = 0; if ( v59 == off_8551E4 ) { v60 = 3; } else { if ( v59 == off_8551E8 ) v60 = 2; } v94 = 0; v95 = 0; v96 = 0; v61 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1488); LOBYTE(v104) = 2; if ( v61(v7) ) { v62 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1488); v91 = v7; v88 = 0; v63 = (void *)v62(v7); sub_5CF1E0(v63, (int)&v94, (int)&v87); v64 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1488); v88 = v60; v65 = (void *)v64(v7); sub_5CF1E0(v65, (int)&v94, (int)&v87); } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1488))(v8) ) { v66 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1488); v91 = v8; v88 = 0; v67 = (void *)v66(v8); sub_5CF1E0(v67, (int)&v94, (int)&v87); v68 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1488); v88 = v60; v69 = (void *)v68(v8); sub_5CF1E0(v69, (int)&v94, (int)&v87); } if ( *(_DWORD *)(v7 + 126) ) { v70 = *(_DWORD *)(v7 + 314); v71 = v7 + 298; if ( *(_DWORD *)(v7 + 318) >= 0x10u ) v71 = *(_DWORD *)v71; v72 = sub_4189B0(v71, (int)byte_6A492E, 0); v73 = v72 == 0; if ( !v72 ) v73 = v70 == 0; if ( !v73 ) { sub_5D4E20((int)&v98, *(_DWORD *)(v7 + 122), v7); v74 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 2920); LOBYTE(v104) = 3; v74(v7, 172, &v98); LOBYTE(v104) = 2; sub_5D4580(&v98); } } if ( v94 ) operator delete(v94); --dword_750CB8; v94 = 0; v95 = 0; v96 = 0; v104 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SwingDamage"); return v108; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); // 86D0B0: using guessed type double dbl_86D0B0; // 871508: using guessed type int dword_871508[]; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (004335D0) -------------------------------------------------------- int __thiscall sub_4335D0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 116; if ( (unsigned int)((char *)&unk_234F72C - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 116; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_234F72C - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_4317E0(this, v5); } return result; } //----- (00433650) -------------------------------------------------------- char __userpurge sub_433650(int a1, double a2, int a3, int a4, int a5, int a6, int a7) { int v7; // edx@1 v7 = *(_DWORD *)(*(_DWORD *)(a1 + 8168) + 8) + 12 * *(_DWORD *)(a1 + 8192); return sub_432B10( a1, a2, a3, *(_DWORD *)(v7 + 8), *(_WORD *)(*(_DWORD *)v7 + 146), *(_WORD *)(*(_DWORD *)v7 + 148), *(_WORD *)(*(_DWORD *)v7 + 150)); } //----- (004336A0) -------------------------------------------------------- int __thiscall sub_4336A0(int this, unsigned int a2) { unsigned int v2; // esi@1 int v3; // edi@1 void *v4; // ebx@1 signed int v5; // ecx@1 int result; // eax@1 v2 = a2; v3 = this; v4 = *(void **)(this + 4); v5 = *(_DWORD *)(this + 4) - *(_DWORD *)this; result = v5 / 116; if ( v5 / 116 <= a2 ) { if ( v5 / 116 < a2 ) { sub_4335D0(v3, a2 - result); sub_4316A0(*(void **)(v3 + 4), v2 - (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 116); result = (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 116; *(_DWORD *)(v3 + 4) += 116 * (v2 - result); } } else { result = sub_431770(v3, (int)&a2, (void *)(*(_DWORD *)v3 + 116 * a2), v4); } return result; } //----- (00433750) -------------------------------------------------------- void __thiscall sub_433750(int this, const void *a2) { const void *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 void *v7; // edi@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( (unsigned int)a2 >= v4 || *(_DWORD *)v3 > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(v3 + 8) ) sub_4335D0(v3, 1); } else { v5 = (signed int)((char *)a2 + ((unsigned __int64)(-1925330167i64 * (signed int)((char *)a2 - *(_DWORD *)v3)) >> 32) - *(_DWORD *)v3) >> 6; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_4335D0(v3, 1); v2 = (const void *)(*(_DWORD *)v3 + 116 * v6); } v7 = *(void **)(v3 + 4); if ( v7 ) memcpy(v7, v2, 0x74u); *(_DWORD *)(v3 + 4) += 116; } //----- (004337C0) -------------------------------------------------------- int __thiscall sub_4337C0(void *this, int a2, int a3, int a4, int a5) { int v5; // edi@1 int v6; // ebx@1 char v7; // al@1 int v8; // eax@10 int v9; // ecx@10 _BYTE *v10; // ecx@10 int v11; // eax@12 int v12; // ecx@12 _BYTE *v13; // ecx@12 int v14; // ecx@19 int v15; // eax@19 int v16; // edx@21 int v17; // ecx@23 int v18; // eax@26 bool v19; // zf@26 int v20; // eax@26 int v21; // eax@27 int (__thiscall *v22)(_DWORD); // eax@30 int v23; // eax@30 int v24; // eax@31 int v25; // edx@32 unsigned __int16 v26; // dx@35 int v27; // ecx@36 const void **v28; // eax@38 int v29; // eax@39 int v30; // eax@41 int v31; // eax@43 int v32; // ecx@45 unsigned __int16 v33; // cx@51 unsigned __int16 v34; // si@52 int v35; // edx@53 int v36; // eax@53 int v37; // eax@54 const void **v38; // eax@54 int v39; // eax@56 int v40; // eax@58 int v41; // eax@59 int v42; // esi@67 int v43; // eax@67 int (__thiscall *v44)(_DWORD); // eax@69 int v45; // esi@69 char v46; // al@70 int v47; // edx@70 int v48; // eax@71 int v49; // eax@74 int v50; // eax@77 int v51; // edx@77 int v52; // eax@77 void *v53; // esi@77 int v54; // edx@77 int v55; // eax@77 int v56; // eax@80 int v57; // edx@80 __int16 v58; // ST24_2@80 unsigned __int16 v59; // ax@80 int v60; // eax@81 void *v61; // eax@82 int v62; // edx@82 int v63; // eax@84 int v64; // eax@87 int v65; // ST24_4@88 int v66; // eax@88 void *v67; // esi@89 int v68; // eax@91 int v69; // eax@92 int v70; // esi@92 int v71; // edx@92 double v72; // st7@92 double v73; // st6@95 double v74; // st7@95 double v75; // st7@98 signed int v76; // eax@100 int v77; // ecx@100 void *v78; // esi@103 int v79; // eax@103 int v80; // eax@107 int v81; // eax@112 unsigned int v82; // ecx@113 void *v83; // esi@116 int v84; // eax@116 int v85; // eax@116 signed __int16 v86; // ax@116 char v87; // al@119 int v88; // eax@120 int v89; // eax@120 int v90; // eax@121 int v91; // eax@121 int v92; // eax@123 void *v93; // esi@125 int v94; // eax@125 int v95; // eax@127 void *v96; // esi@128 int v97; // eax@133 int v98; // eax@135 int v100; // [sp-8h] [bp-C0h]@2 unsigned int v101; // [sp-4h] [bp-BCh]@1 char v102; // [sp+10h] [bp-A8h]@33 int v103; // [sp+14h] [bp-A4h]@92 unsigned __int16 v104; // [sp+18h] [bp-A0h]@53 unsigned __int16 v105; // [sp+1Ah] [bp-9Eh]@21 int v106; // [sp+24h] [bp-94h]@25 int v107; // [sp+28h] [bp-90h]@20 float v108; // [sp+2Ch] [bp-8Ch]@19 float v109; // [sp+30h] [bp-88h]@1 char v110; // [sp+34h] [bp-84h]@39 int v111; // [sp+38h] [bp-80h]@39 unsigned int v112; // [sp+A8h] [bp-10h]@1 int v113; // [sp+B4h] [bp-4h]@1 int v114; // [sp+B8h] [bp+0h]@1 v112 = (unsigned int)&v114 ^ __security_cookie; v101 = (unsigned int)&v114 ^ __security_cookie; v5 = a2; v6 = (int)this; LODWORD(v109) = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_KilledBy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_KilledBy"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_BYTE *)(v6 + 7888); v113 = 0; if ( v7 & 8 ) { --dword_750CB8; v113 = -1; v100 = (int)"ShineObjectClass::ShinePlayer::so_KilledBy"; return sub_467660((int)&unk_D020420, v100); } *(_BYTE *)(v6 + 7888) = v7 | 8; if ( **(_BYTE **)(v6 + 3828) == 5 ) sub_590F40((void *)v6); if ( a2 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2) ) sub_5CBAE0((int)sub_575EA0, a2, v6, 0); else sub_4CC040((int)sub_575EA0, a2, v6, 0); } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, unsigned int))(*(_DWORD *)v6 + 996))(v6, 291, v101) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1388))(v6); v9 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v9; v10 = &byte_85A2C0[256 * v9]; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *(_DWORD *)(v8 + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)(v8 + 8); *((_DWORD *)v10 + 3) = *(_DWORD *)(v8 + 12); *((_DWORD *)v10 + 4) = *(_DWORD *)(v8 + 16); v10[20] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 996))(v6, 499) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1388))(v6); v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); *((_DWORD *)v13 + 4) = *(_DWORD *)(v11 + 16); v13[20] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1156))(v6) == 6 ) { if ( sub_45CDE0(v6) == 2 ) sub_45D1C0(v6, (int)"ShineObjectClass::ShinePlayer::so_KilledBy", 0); else sub_45F070((void *)v6); } if ( *(_DWORD *)(v6 + 160808) != 4 ) { *(_DWORD *)(v6 + 160796) = 0; *(_DWORD *)(v6 + 160800) = sub_5131E0; *(_DWORD *)(v6 + 160812) = sub_452C70; *(_DWORD *)(v6 + 160808) = 0; } (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 2256))(v6); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1324))(v6); LOWORD(v15) = *(_WORD *)(*(_DWORD *)(v14 + 3372) + 12 * *(_WORD *)(v14 + 3378) + 4); for ( LODWORD(v108) = v14; ; v14 = LODWORD(v108) ) { v107 = *(_WORD *)(v14 + 3368); if ( (unsigned __int16)v15 >= (unsigned __int16)v107 ) break; v16 = *(_DWORD *)(v14 + 3372); v15 = (unsigned __int16)v15; v105 = *(_WORD *)(v16 + 12 * (unsigned __int16)v15 + 4); if ( (unsigned __int16)v15 < (unsigned __int16)v107 && *(_BYTE *)(v16 + 12 * v15 + 8) ) v17 = *(_DWORD *)(v16 + 12 * v15); else v17 = 0; v106 = dword_871508[3 * *(_DWORD *)(v17 + 4)]; if ( (unsigned __int16)v15 >= (unsigned __int16)v107 || (v18 = 3 * v15, v19 = *(_BYTE *)(v16 + 4 * v18 + 8) == 0, v20 = v16 + 4 * v18, v19) ) v21 = 0; else v21 = *(_DWORD *)v20; (*(void (__stdcall **)(int, int))(*(_DWORD *)v106 + 20))(v6, v21); LOWORD(v15) = v105; } v22 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1324); v107 = 0; v23 = v22(v6); if ( *(_WORD *)(v23 + 3368) > 0x127u ) { v24 = *(_DWORD *)(*(_DWORD *)(v23 + 3372) + 3540); if ( v24 ) { v25 = *(_DWORD *)(v24 + 84); v106 = *(_DWORD *)(v24 + 28); v107 = v25; } } if ( sub_587680((void *)v6, word_14D211C8, (int)&v102) ) { LODWORD(v108) = sub_418440(&dword_878768, *(_DWORD *)(v6 + 32661)) + 4; sub_4336A0(SLODWORD(v108), 0); v105 = *(_WORD *)(*(_DWORD *)(v6 + 3804) + 12 * *(_WORD *)(v6 + 3810) + 4); while ( 1 ) { while ( 1 ) { while ( 1 ) { v26 = v105; if ( v105 >= *(_WORD *)(v6 + 3800) ) goto LABEL_51; v27 = *(_DWORD *)(v6 + 3804); v105 = *(_WORD *)(v27 + 12 * v105 + 4); if ( v26 < *(_WORD *)(v6 + 3800) ) { if ( *(_BYTE *)(v27 + 12 * v26 + 8) ) { v28 = (const void **)(v27 + 12 * v26); if ( *v28 ) break; } } } memcpy(&v110, *v28, 0x74u); v29 = dword_87150C[3 * v111]; LOBYTE(v113) = 1; if ( v29 ) { if ( *(_DWORD *)v29 ) break; } LABEL_50: LOBYTE(v113) = 0; sub_401A10((int)&v110); v5 = LODWORD(v109); } v30 = *(_DWORD *)(*(_DWORD *)v29 + 34); if ( v30 < 792 ) { v31 = dword_8772F0[v30]; if ( v31 ) { v32 = *(_DWORD *)(*(_DWORD *)v31 + 244); if ( v32 != 1 && v32 != 11 ) goto LABEL_50; if ( !*(_BYTE *)(*(_DWORD *)(v31 + 4) + 5) ) { sub_433750(SLODWORD(v108), &v110); goto LABEL_50; } LOBYTE(v113) = 0; sub_401A10((int)&v110); v5 = LODWORD(v109); } else { LOBYTE(v113) = 0; sub_401A10((int)&v110); v5 = LODWORD(v109); } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v30); LOBYTE(v113) = 0; sub_401A10((int)&v110); v5 = LODWORD(v109); } } } LABEL_51: LODWORD(v108) = sub_418440(&dword_878758, *(_DWORD *)(v6 + 32661)) + 4; sub_4336A0(SLODWORD(v108), 0); v33 = *(_WORD *)(*(_DWORD *)(v6 + 3804) + 12 * *(_WORD *)(v6 + 3810) + 4); while ( 1 ) { v34 = *(_WORD *)(v6 + 3800); if ( v33 >= v34 ) break; v35 = *(_DWORD *)(v6 + 3804); v36 = v33; v104 = v33; v33 = *(_WORD *)(v35 + 12 * v33 + 4); v105 = v33; if ( v104 < v34 ) { v37 = 3 * v36; v19 = *(_BYTE *)(v35 + 4 * v37 + 8) == 0; v38 = (const void **)(v35 + 4 * v37); if ( !v19 ) { if ( *v38 ) { memcpy(&v110, *v38, 0x74u); v39 = dword_87150C[3 * v111]; LOBYTE(v113) = 2; if ( v39 && *(_DWORD *)v39 ) { v40 = *(_DWORD *)(*(_DWORD *)v39 + 34); if ( v40 < 792 ) { v41 = dword_8772F0[v40]; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v40); v41 = 0; } if ( *(_BYTE *)(*(_DWORD *)(v41 + 4) + 5) ) sub_433750(SLODWORD(v108), &v110); } LOBYTE(v113) = 0; sub_401A10((int)&v110); v33 = v105; v5 = LODWORD(v109); } } } } sub_431EA0((void *)v6, v5, a3, a4, a5); if ( *(_BYTE *)(v6 + 155503) ) { memcpy((void *)(*(_DWORD *)(v6 + 32650) + 37), (const void *)(v6 + 155460), 0x2Bu); v5 = LODWORD(v109); *(_BYTE *)(v6 + 155503) = 0; } if ( v107 ) { v42 = dword_87778C; (*(void (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, int, _DWORD, signed int, _DWORD))(*(_DWORD *)v6 + 1592))( v6, v6, *(_DWORD *)(*(_DWORD *)dword_87778C + 34), 1, dword_87778C, v106, 0, v107, 0, 9, 0); sub_401900((void *)v6, *(_DWORD *)(*(_DWORD *)v42 + 34)); v43 = *(_DWORD *)(v42 + 48); if ( v43 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v6 + 1008))( v6, *(_DWORD *)(*(_DWORD *)v42 + 34), *(_DWORD *)(v43 + 43), 1); sub_4055D0((void *)v6, *(_DWORD *)(*(_DWORD *)v42 + 34), *(_DWORD *)(*(_DWORD *)(v42 + 48) + 43), 1); } } *(_DWORD *)(v6 + 32703) = 0; *(_DWORD *)(v6 + 156352) = nullsub_2; *(_DWORD *)(v6 + 156364) = nullsub_2; sub_4D1950(v6, 8); v44 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1064); v107 = 0; v45 = v44(v6); v106 = v45; if ( v5 ) { v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2204))(v5); v47 = *(_DWORD *)v5; if ( v46 == 1 ) { v48 = (*(int (__thiscall **)(int))(v47 + 2480))(v5); LODWORD(v108) = v48; if ( v48 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v48 + 1232))(v48) == 2 ) { v5 = LODWORD(v108); goto LABEL_74; } } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v47 + 1232))(v5) == 2 ) { LABEL_74: v49 = *(_DWORD *)(v6 + 122); if ( v49 && (*(_BYTE *)(v49 + 84) || *(_BYTE *)(*(_DWORD *)(v49 + 16) + 58) == 4) ) { v50 = sub_42E110((void *)v6, (int (__thiscall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))sub_42E030); v51 = *(_DWORD *)v5; v107 = v50; v52 = (*(int (__thiscall **)(int))(v51 + 900))(v5); v53 = off_849C18; *(_WORD *)off_849C18 = 9290; v54 = *(_DWORD *)v5; LODWORD(v109) = v52; *((_WORD *)v53 + 1) = (*(int (__thiscall **)(int))(v54 + 832))(v5); v55 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_DWORD *)v53 + 2) = LODWORD(v109); *((_DWORD *)v53 + 1) = v55; if ( sub_4C81E0(&off_849C18, 12) ) { v60 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v60); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 12); } v61 = off_849C18; *(_WORD *)off_849C18 = 9291; v62 = LODWORD(v109); *((_WORD *)v61 + 1) = *(_WORD *)(v5 + 4); *((_WORD *)v61 + 2) = *(_WORD *)(v6 + 4); *(_DWORD *)((char *)v61 + 6) = v62; if ( sub_4C81E0(&off_849C18, 10) ) { v63 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v63 + 12))(v63, v6, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 10); } if ( sub_4C81E0(&off_849C18, 10) ) { v64 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v64 + 12))(v64, v5, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 10); } } v65 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2088))(v6); v66 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2088))(v5); if ( sub_5CA1C0((int)&unk_13267D80, v66, v65) ) { v67 = off_849C18; *(_WORD *)off_849C18 = 29765; *((_WORD *)v67 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 832))(v5); *((_WORD *)v67 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 832))(v6); if ( sub_4C81E0(&off_849C18, 6) ) { v68 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v68); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 6); } } v69 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1064))(v5); v70 = v106; ++*(_DWORD *)(v70 + 32); ++*(_DWORD *)(v69 + 36); v71 = *(_DWORD *)(v69 + 40); v108 = (double)*(unsigned int *)(v70 + 40); v72 = (double)*(signed int *)(v69 + 40); v103 = v69 + 40; if ( v71 < 0 ) v72 = v72 + 4294967300.0; v109 = v72; if ( v109 <= (double)v108 ) { v73 = v108; v74 = v109; } else { v73 = v108; v74 = v109; v109 = v108; } v109 = v109 / (v74 + v73); if ( v73 >= v74 ) { v75 = 1.0 - v109; } else { v108 = v109 * v109; v75 = v108 + v108; } v109 = v75; v109 = v109 * 1000.0; v76 = (signed int)v109; v77 = *(_DWORD *)(v70 + 40) - v76; if ( (unsigned int)v77 < 0x3E8 ) v77 = 1000; *(_DWORD *)(v70 + 40) = v77; *(_DWORD *)v103 += v76; v45 = v106; goto LABEL_103; } } v56 = sub_42E110((void *)v6, (int (__thiscall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))sub_42DF30); v57 = *(_DWORD *)v5; v107 = v56; v58 = *(_WORD *)(v5 + 4); v59 = (*(int (__thiscall **)(int))(v57 + 1800))(v5); sub_5C91A0(v6 + 156368, v59, v58); } LABEL_103: sub_4989A0((void *)v6, (int (__stdcall *)(_DWORD))sub_496290); *(_DWORD *)(v45 + 28) += 50; v78 = off_849C18; *(_WORD *)off_849C18 = 4173; v79 = *(_DWORD *)(v6 + 122); if ( v79 ) *(_DWORD *)((char *)v78 + 2) = *(_DWORD *)(v79 + 500); else *(_DWORD *)((char *)v78 + 2) = 180; *((_BYTE *)v78 + 6) = 50; if ( !*(_BYTE *)(v6 + 161628) || (*(_DWORD *)((char *)v78 + 7) = 1, (v80 = *(_DWORD *)(v6 + 122)) != 0) && !(*(_BYTE *)(v80 + 496) & 2) ) *(_DWORD *)((char *)v78 + 7) = 0; if ( sub_4C81E0(&off_849C18, 11) ) { v81 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v81 + 12))(v81, v6, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 11); } v82 = *(_DWORD *)((char *)v78 + 2); if ( v82 ) v82 += 2 * v82 / 0x3C + 2; *(_DWORD *)(v6 + 161508) = dword_14D129E8 + 10 * v82; if ( v5 ) { v87 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2204))(v5); v83 = off_849C18; if ( !v87 ) { *(_WORD *)off_849C18 = 1065; *(_DWORD *)((char *)v83 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v90 = *(_DWORD *)(v6 + 122); *(_DWORD *)((char *)v83 + 6) = *(_DWORD *)v90; *(_DWORD *)((char *)v83 + 10) = *(_DWORD *)(v90 + 4); *(_DWORD *)((char *)v83 + 14) = *(_DWORD *)(v90 + 8); v91 = *(_DWORD *)(v6 + 102); *(_DWORD *)((char *)v83 + 18) = *(_DWORD *)v91; *(_DWORD *)((char *)v83 + 22) = *(_DWORD *)(v91 + 4); *(_DWORD *)((char *)v83 + 26) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); *(_DWORD *)((char *)v83 + 30) = 0; *((_BYTE *)v83 + 34) = 0; if ( sub_4C81E0(&off_849C18, 35) ) { v92 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v92); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 35); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5) != 2 ) goto LABEL_128; v93 = off_849C18; *(_WORD *)off_849C18 = -14325; *(_DWORD *)((char *)v93 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 840))(v5); *(_DWORD *)((char *)v93 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); *((_BYTE *)v93 + 10) = sub_5A7540(byte_14D16AE8)[16]; *((_BYTE *)v93 + 11) = 0; *((_DWORD *)v93 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); v94 = *(_DWORD *)(v5 + 102); *((_DWORD *)v93 + 4) = *(_DWORD *)v94; *((_DWORD *)v93 + 5) = *(_DWORD *)(v94 + 4); if ( !sub_4C81E0(&off_849C18, 24) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 24); goto LABEL_128; } LABEL_127: v95 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v95); goto LABEL_128; } *(_WORD *)off_849C18 = 1067; *(_DWORD *)((char *)v83 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836))(v6); v88 = *(_DWORD *)(v6 + 122); *(_DWORD *)((char *)v83 + 6) = *(_DWORD *)v88; *(_DWORD *)((char *)v83 + 10) = *(_DWORD *)(v88 + 4); *(_DWORD *)((char *)v83 + 14) = *(_DWORD *)(v88 + 8); v89 = *(_DWORD *)(v6 + 102); *(_DWORD *)((char *)v83 + 18) = *(_DWORD *)v89; *(_DWORD *)((char *)v83 + 22) = *(_DWORD *)(v89 + 4); v86 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1800))(v5); } else { v83 = off_849C18; *(_WORD *)off_849C18 = 1067; *(_DWORD *)((char *)v83 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836))(v6); v84 = *(_DWORD *)(v6 + 122); *(_DWORD *)((char *)v83 + 6) = *(_DWORD *)v84; *(_DWORD *)((char *)v83 + 10) = *(_DWORD *)(v84 + 4); *(_DWORD *)((char *)v83 + 14) = *(_DWORD *)(v84 + 8); v85 = *(_DWORD *)(v6 + 102); *(_DWORD *)((char *)v83 + 18) = *(_DWORD *)v85; *(_DWORD *)((char *)v83 + 22) = *(_DWORD *)(v85 + 4); v86 = -1; } *((_WORD *)v83 + 13) = v86; *(_QWORD *)((char *)v83 + 28) = v107; if ( sub_4C81E0(&off_849C18, 36) ) goto LABEL_127; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 36); LABEL_128: v96 = off_849C18; *(_WORD *)off_849C18 = -14326; *(_DWORD *)((char *)v96 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 840))(v6); *(_DWORD *)((char *)v96 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836))(v6); *((_BYTE *)v96 + 10) = sub_5A7540(byte_14D16AE8)[16]; if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2204))(v5) ) { *((_BYTE *)v96 + 11) = 1; *((_DWORD *)v96 + 3) = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1800))(v5); } else { *((_BYTE *)v96 + 11) = 0; *((_DWORD *)v96 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); } } else { *((_BYTE *)v96 + 11) = 2; *((_DWORD *)v96 + 3) = 0; } v97 = *(_DWORD *)(v6 + 102); *((_DWORD *)v96 + 4) = *(_DWORD *)v97; *((_DWORD *)v96 + 5) = *(_DWORD *)(v97 + 4); if ( sub_4C81E0(&off_849C18, 24) ) { v98 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v98); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 24); } (*(void (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v6 + 2616))(v6, 1, 0); --dword_750CB8; v113 = -1; v100 = (int)"ShineObjectClass::ShinePlayer::so_KilledBy"; return sub_467660((int)&unk_D020420, v100); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 871508: using guessed type int dword_871508[]; // 87150C: using guessed type int dword_87150C[]; // 8772F0: using guessed type int dword_8772F0[]; // 87778C: using guessed type int dword_87778C; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D148D0: using guessed type int dword_14D148D0; // 14D211C8: using guessed type __int16 word_14D211C8; //----- (00434610) -------------------------------------------------------- int __thiscall sub_434610(int this, __int16 a2, int a3) { int result; // eax@1 *(_WORD *)(this + 332) = a2; *(_DWORD *)(this + 334) = *(_DWORD *)a3; *(_DWORD *)(this + 338) = *(_DWORD *)(a3 + 4); *(_DWORD *)(this + 342) = *(_DWORD *)(a3 + 8); *(_DWORD *)(this + 346) = *(_DWORD *)(a3 + 12); *(_DWORD *)(this + 350) = *(_DWORD *)(a3 + 16); result = *(_WORD *)(a3 + 20); *(_WORD *)(this + 354) = result; return result; } //----- (00434660) -------------------------------------------------------- int __thiscall sub_434660(int this) { int result; // eax@1 result = this; *(_DWORD *)this = -1; *(_DWORD *)(this + 4) = 1000; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 792; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 792; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 792; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 52) = 792; *(_DWORD *)(this + 56) = 0; return result; } //----- (004346A0) -------------------------------------------------------- int __thiscall sub_4346A0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = -1; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 16) = 1000; *(_DWORD *)(this + 76) = 0; *(_DWORD *)(this + 144) = 0; *(_DWORD *)(this + 148) = 792; return result; } //----- (004346E0) -------------------------------------------------------- int __thiscall sub_4346E0(int this, __int16 a2, __int16 a3) { int result; // eax@1 result = this; memcpy((void *)this, &unk_749CA8, 0x98u); *(_WORD *)this = a2; *(_WORD *)(this + 2) = a3; return result; } //----- (00434710) -------------------------------------------------------- int __thiscall sub_434710(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 4) = -1; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 20) = 1000; *(_DWORD *)(this + 80) = 0; *(_DWORD *)(this + 148) = 0; *(_DWORD *)(this + 152) = 792; sub_5CF620((void *)(this + 156)); return v1; } //----- (00434760) -------------------------------------------------------- void __thiscall sub_434760(int this) { nullsub_2((void *)(this + 156)); } //----- (00434770) -------------------------------------------------------- __int16 __thiscall sub_434770(int this) { __int16 result; // ax@1 result = (*(_WORD *)(this + 16) + 1) & 0x7FFF; *(_WORD *)(this + 16) = result; return result; } //----- (00434790) -------------------------------------------------------- int __thiscall sub_434790(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 44) = -1; *(_DWORD *)(this + 48) = 1000; *(_DWORD *)(this + 56) = 0; *(_DWORD *)(this + 60) = 792; *(_DWORD *)(this + 64) = 0; *(_DWORD *)(this + 68) = 0; *(_DWORD *)(this + 72) = 792; *(_DWORD *)(this + 76) = 0; *(_DWORD *)(this + 80) = 0; *(_DWORD *)(this + 84) = 792; *(_DWORD *)(this + 88) = 0; *(_DWORD *)(this + 92) = 0; *(_DWORD *)(this + 96) = 792; *(_DWORD *)(this + 100) = 0; return result; } //----- (00434800) -------------------------------------------------------- char __thiscall sub_434800(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0xE0u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00434850) -------------------------------------------------------- char __thiscall sub_434850(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0xE0u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (004348A0) -------------------------------------------------------- void *__thiscall sub_4348A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6A7008; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A7008: using guessed type int (__thiscall *off_6A7008)(void *, char); //----- (004348E0) -------------------------------------------------------- int __thiscall sub_4348E0(int this, unsigned __int16 a2) { int result; // eax@2 if ( a2 < (unsigned int)((*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 4) ) result = *(_DWORD *)this + 16 * a2; else result = this + 16; return result; } //----- (00434910) -------------------------------------------------------- int __thiscall sub_434910(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v6; // eax@2 signed int v7; // eax@3 int v8; // eax@4 int v9; // ecx@5 v5 = this; sub_4675D0((int)&unk_D020420, (int)"MultiHitArgument::mha_SetAbState"); dword_7508B8[dword_750CB8] = (int)"MultiHitArgument::mha_SetAbState"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)a3 == 45 ) { v6 = (int)((char *)v5 + 12 * a2); *(_DWORD *)(v6 + 12) = 0; *(_DWORD *)(v6 + 16) = 792; *(_DWORD *)(v6 + 20) = 0; } else { v7 = sub_639670(&byte_878354, a3); if ( v7 == -1 ) { v8 = (int)((char *)v5 + 12 * a2); *(_DWORD *)(v8 + 12) = 0; *(_DWORD *)(v8 + 16) = 792; *(_DWORD *)(v8 + 20) = 0; } else { v9 = (int)((char *)v5 + 12 * a2); *(_DWORD *)(v9 + 16) = v7; *(_DWORD *)(v9 + 12) = a4; *(_DWORD *)(v9 + 20) = a5; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MultiHitArgument::mha_SetAbState"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00434A10) -------------------------------------------------------- int __stdcall sub_434A10(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"BattleObjectGroup::BattleObjectList::bol_Store"); dword_7508B8[dword_750CB8] = (int)"BattleObjectGroup::BattleObjectList::bol_Store"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"BattleObjectGroup::BattleObjectList::bol_Store"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00434A60) -------------------------------------------------------- char __thiscall sub_434A60(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@10 bool v5; // zf@11 signed int v6; // eax@11 int v7; // ST04_4@13 unsigned __int16 v8; // ax@13 int v9; // eax@15 int v10; // ecx@15 int v12; // [sp-4h] [bp-24h]@2 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(v3 + 7888) & 4 ) { --dword_750CB8; v12 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"; LABEL_19: v10 = (int)&unk_D020420; goto LABEL_20; } if ( !a2 || *(_WORD *)(v3 + 4) == *(_WORD *)(a2 + 4) || !sub_499ED0((void *)v3, a2) || !*(_DWORD *)(v3 + 122) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) == 3 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 3 || (LOBYTE(v4) = sub_548D30(v3, a2), !v4) ) { --dword_750CB8; goto LABEL_18; } v5 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1800))(v3) == -1; v6 = 1; if ( v5 ) v6 = 2; v7 = v6; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1800))(a2); if ( !sub_63EDC0((int)&unk_14D159B0, v8, v7) ) { --dword_750CB8; LABEL_18: v12 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"; goto LABEL_19; } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2252))(a2); --dword_750CB8; v12 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"; v10 = (int)&unk_D020420; if ( v9 != 3 ) { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"); return 1; } LABEL_20: sub_467660(v10, v12); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00434C20) -------------------------------------------------------- char __stdcall sub_434C20(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_mobile_ICanDamageTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::so_mobile_ICanDamageTo"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_mobile_ICanDamageTo"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00434C70) -------------------------------------------------------- char __thiscall sub_434C70(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 int v5; // ecx@2 int v7; // ebx@11 char v8; // al@12 int v9; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mobile_ICanDamageTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mobile_ICanDamageTo"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( !sub_434A60(v3, a2, a3) ) goto LABEL_16; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 12 || ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) == 11) && ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3184))(v4) == 1 || sub_4627E0(*(void **)((char *)v3 + 122)) && (v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4), (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3) == v7)) ) { LABEL_16: --dword_750CB8; v9 = (int)"ShineObjectClass::ShineMob::so_mobile_ICanDamageTo"; v5 = (int)&unk_D020420; LABEL_3: sub_467660(v5, v9); return 0; } v8 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3672))(v3, v4); --dword_750CB8; v9 = (int)"ShineObjectClass::ShineMob::so_mobile_ICanDamageTo"; v5 = (int)&unk_D020420; if ( v8 == 1 ) goto LABEL_3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mobile_ICanDamageTo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00434E00) -------------------------------------------------------- bool __thiscall sub_434E00(void *this, int a2) { void *v2; // esi@1 bool v3; // bl@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ICanHealTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ICanHealTo"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2432))(v2, a2, "smo_ICanHealTo") == 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ICanHealTo"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00434EC0) -------------------------------------------------------- char __thiscall sub_434EC0(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // eax@1 int v5; // ecx@3 int v7; // eax@9 int v8; // ST04_4@11 int v9; // eax@11 int v10; // eax@12 int v11; // ebx@14 int v12; // eax@16 __int16 v13; // di@20 bool v14; // bl@22 int v15; // eax@26 int v16; // eax@26 int v17; // ebx@28 int v18; // esi@32 char v19; // al@37 int v20; // [sp-4h] [bp-24h]@3 int v21; // [sp+28h] [bp+8h]@26 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ICanHealTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ICanHealTo"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v4 && *(_DWORD *)(*(_DWORD *)v4 + 99) == 16 ) goto LABEL_3; if ( !sub_434E00(v2, a2) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 996))(a2, 336) ) goto LABEL_34; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 5 ) { v19 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3672))(v2, a2); --dword_750CB8; v20 = (int)"ShineObjectClass::ShinePlayer::smo_ICanHealTo"; v5 = (int)&unk_D020420; if ( v19 ) goto LABEL_4; goto LABEL_35; } goto LABEL_34; } if ( *((_WORD *)v2 + 2) == *(_WORD *)(a2 + 4) ) goto LABEL_3; v7 = *(_DWORD *)((char *)v2 + 122); if ( *(_BYTE *)(v7 + 84) ) goto LABEL_34; if ( !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 99) ) goto LABEL_3; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2088))(v2); if ( sub_5CA1C0((int)&unk_13267D80, v9, v8) ) { LABEL_34: --dword_750CB8; v20 = (int)"ShineObjectClass::ShinePlayer::smo_ICanHealTo"; v5 = (int)&unk_D020420; LABEL_35: sub_467660(v5, v20); return 0; } v10 = *(_DWORD *)(*(_DWORD *)((char *)v2 + 122) + 16); if ( !v10 || *(_BYTE *)(v10 + 58) != 4 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2088))(a2) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2); v16 = sub_5CA140((int)&unk_13267D80, v15); v21 = v16; if ( v16 ) { if ( *(_BYTE *)(v16 + 44) == 2 ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2088))(v3); if ( v17 != (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2088))(v2) ) { word_87B250 = 4048; goto LABEL_34; } v16 = v21; } if ( *(_DWORD *)(v16 + 52) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2088))(v3); if ( v18 != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2) ) { word_87B250 = 4048; goto LABEL_34; } } } } LABEL_3: --dword_750CB8; v20 = (int)"ShineObjectClass::ShinePlayer::smo_ICanHealTo"; v5 = (int)&unk_D020420; LABEL_4: sub_467660(v5, v20); return 1; } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); if ( !v11 ) v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); if ( !v12 ) v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2140))(a2); if ( v11 && v11 == v12 ) goto LABEL_3; v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1360))(v2); v14 = v13 != -1 && v13 == (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ICanHealTo"); return v14; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87B250: using guessed type __int16 word_87B250; //----- (004351E0) -------------------------------------------------------- char __thiscall sub_4351E0(void *this, int a2) { void *v2; // esi@1 char v3; // bl@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::smo_ICanHealTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::smo_ICanHealTo"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *((_DWORD *)v2 + 2417) ) v3 = (*(int (__stdcall **)(int))(**((_DWORD **)v2 + 2417) + 3724))(a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::smo_ICanHealTo"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004352A0) -------------------------------------------------------- char __stdcall sub_4352A0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::smo_ICanHealTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::smo_ICanHealTo"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::smo_ICanHealTo"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004352F0) -------------------------------------------------------- char __thiscall sub_4352F0(void *this, int a2) { void *v2; // esi@1 char result; // al@2 char v4; // al@3 char v5; // bl@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_ICanHealTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::smo_ICanHealTo"; dword_750AB8[dword_750CB8++] = -1; if ( sub_434E00(v2, a2) ) { v4 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3672))(v2, a2); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_ICanHealTo"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_ICanHealTo"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004353D0) -------------------------------------------------------- int __cdecl sub_4353D0() { sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00435410) -------------------------------------------------------- int __stdcall sub_435410(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlastTick"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlastTick"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlastTick"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00435460) -------------------------------------------------------- int __stdcall sub_435460(int a1) { signed int v1; // edx@2 int v2; // esi@2 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_SkillBlastTick"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_SkillBlastTick"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) { v1 = (signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)a1 + 75) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v2 = v1 + ((unsigned int)v1 >> 31); } else { v2 = 100000; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_SkillBlastTick"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004354E0) -------------------------------------------------------- int __thiscall sub_4354E0(void *this, int a2) { void *v2; // edi@1 signed int v3; // edx@1 signed int v4; // edx@2 int v5; // esi@2 int v6; // ecx@4 int v7; // eax@5 int v8; // eax@7 signed int v9; // edx@8 int v11; // [sp-4h] [bp-24h]@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_SkillBlastTick"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::smo_SkillBlastTick"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = (signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)a2 + 75) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v5 = v4 + ((unsigned int)v4 >> 31); v3 = 1; } else { v5 = 99999; } v6 = *((_DWORD *)v2 + 2042); if ( !v6 || (v7 = *((_DWORD *)v2 + 2048), v7 < 0) || v7 >= *(_DWORD *)(v6 + 12) ) { v11 = (int)"ShineObjectClass::ShineMob::smo_SkillBlastTick"; goto LABEL_10; } v8 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 12 * v7); v11 = (int)"ShineObjectClass::ShineMob::smo_SkillBlastTick"; if ( !v8 ) { LABEL_10: dword_750CB8 -= v3; goto LABEL_11; } v9 = (signed int)((unsigned __int64)(10 * *(_WORD *)(v8 + 77) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v5 = v9 + ((unsigned int)v9 >> 31); --dword_750CB8; LABEL_11: sub_467660((int)&unk_D020420, v11); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004355F0) -------------------------------------------------------- char __thiscall sub_4355F0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListTargetChange::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListTargetChange::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2564))(a3); if ( v5 ) { if ( *(_WORD *)(v5 + 4) == *((_WORD *)v4 + 2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 2456))(a3, *((_DWORD *)v4 + 2)); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListTargetChange::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004356D0) -------------------------------------------------------- int __thiscall sub_4356D0(void *this) { void *v1; // esi@1 __int16 v2; // di@1 int v3; // ST04_4@1 int v4; // eax@1 int (__stdcall **v6)(int, int, int); // [sp+Ch] [bp-1Ch]@1 __int16 v7; // [sp+10h] [bp-18h]@1 int v8; // [sp+14h] [bp-14h]@1 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v1 = this; v9 = (int)"ShineObjectClass::ShineObject::so_EscapeFromTarget"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_EscapeFromTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_EscapeFromTarget"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 2); v10 = 0; sub_427BE0(&v6); v6 = &off_6A7000; v7 = v2; v8 = 0; v3 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v10) = 1; v4 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v4, v3, 0, 0, (int)&v6, 0, 65535); LOBYTE(v10) = 0; v6 = &off_6A7000; sub_427EB0(&v6); --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_EscapeFromTarget"); } // 6A7000: using guessed type int (__stdcall *off_6A7000)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004357C0) -------------------------------------------------------- int __stdcall sub_4357C0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_25ED097 || (result = operator new(108 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00435820) -------------------------------------------------------- int __stdcall sub_435820(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_12492492 || (result = operator new(14 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00435880) -------------------------------------------------------- char __thiscall sub_435880(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0xE0u); result = 1; } else { result = 0; } return result; } //----- (004358C0) -------------------------------------------------------- char __thiscall sub_4358C0(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0xE0u); result = 1; } else { result = 0; } return result; } //----- (00435900) -------------------------------------------------------- void *__cdecl sub_435900(void *a1, int a2, int a3) { void *v3; // edi@1 const void *i; // ebx@1 v3 = a1; for ( i = (char *)a1 + 108; i != (const void *)a2; i = (char *)i + 108 ) { if ( !sub_5771D0((int)i, a3) ) { a1 = (char *)a1 + 108; memcpy(v3, i, 0x6Cu); v3 = a1; } } return v3; } //----- (00435960) -------------------------------------------------------- void *__thiscall sub_435960(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6A7058; _LN21((char *)this + 24, 0xE0u, 1024, (void (__thiscall *)(void *))sub_434760); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6A7008; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A7008: using guessed type int (__thiscall *off_6A7008)(void *, char); // 6A7058: using guessed type int (__thiscall *off_6A7058)(void *, char); //----- (004359F0) -------------------------------------------------------- int __thiscall sub_4359F0(void *this) { int v1; // esi@1 int (__thiscall *v2)(_DWORD); // eax@1 int v3; // ebx@1 int v4; // edi@2 int v5; // edi@3 unsigned __int16 v6; // ax@3 void *v7; // edi@3 int v8; // eax@3 int v9; // edx@3 int v10; // ST04_4@3 int v11; // eax@3 int v12; // edi@5 int v13; // edi@6 unsigned __int16 v14; // ax@6 int v15; // edi@8 int v16; // eax@8 int v17; // ecx@8 int v18; // ST04_4@8 int v19; // eax@8 char v21; // [sp+10h] [bp-1Ch]@3 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 v1 = (int)this; v22 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"; dword_750AB8[dword_750CB8++] = -1; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1548); v23 = 0; v3 = v2(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1972))(v1) == 1 ) { v4 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1968))(v1) != v4 ) { v5 = *(_DWORD *)v1; v6 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v1 + 1300))(v1, 1, 0); (*(void (__thiscall **)(int, int, _DWORD))(v5 + 1632))(v1, v3, v6); v7 = off_849C18; *(_WORD *)off_849C18 = 8216; *((_WORD *)v7 + 1) = *(_WORD *)(v1 + 4); v8 = *(_DWORD *)(v1 + 102); *((_DWORD *)v7 + 1) = *(_DWORD *)v8; *((_DWORD *)v7 + 2) = *(_DWORD *)(v8 + 4); *((_DWORD *)v7 + 3) = *(_DWORD *)v3; v9 = *(_DWORD *)(v3 + 4); *((_WORD *)v7 + 11) &= 0xFFFEu; *((_DWORD *)v7 + 4) = v9; *((_WORD *)v7 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); *(_WORD *)(v1 + 332) = 24; *(_DWORD *)(v1 + 334) = *(_DWORD *)((char *)v7 + 2); *(_DWORD *)(v1 + 338) = *(_DWORD *)((char *)v7 + 6); *(_DWORD *)(v1 + 342) = *(_DWORD *)((char *)v7 + 10); *(_DWORD *)(v1 + 346) = *(_DWORD *)((char *)v7 + 14); *(_DWORD *)(v1 + 350) = *(_DWORD *)((char *)v7 + 18); *(_WORD *)(v1 + 354) = *((_WORD *)v7 + 11); sub_4287B0(&v21, &off_849C18, 24); v10 = *(_DWORD *)(v1 + 102); LOBYTE(v23) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v11, v10, 0, 0, (int)&v21, 0, 65535); LOBYTE(v23) = 0; sub_428A70(&v21); } } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1972))(v1) == 2 ) { v12 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1304))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1968))(v1) != v12 ) { v13 = *(_DWORD *)v1; v14 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v1 + 1304))(v1, 2, 0); (*(void (__thiscall **)(int, int, _DWORD))(v13 + 1632))(v1, v3, v14); if ( sub_409730(v1) ) { (*(void (__thiscall **)(int, int, signed int, signed int, signed int, _DWORD))(*(_DWORD *)v1 + 1456))( v1, v3, 26, 73, 2, 0); } else { v15 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8218; *(_WORD *)v15 = *(_WORD *)(v1 + 4); v16 = *(_DWORD *)(v1 + 102); *(_DWORD *)(v15 + 2) = *(_DWORD *)v16; *(_DWORD *)(v15 + 6) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 10) = *(_DWORD *)v3; v17 = *(_DWORD *)(v3 + 4); *(_WORD *)(v15 + 20) &= 0xFFFEu; *(_DWORD *)(v15 + 14) = v17; *(_WORD *)(v15 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1304))(v1); sub_434610(v1, 26, v15); sub_4287B0(&v21, &off_849C18, 24); v18 = *(_DWORD *)(v1 + 102); LOBYTE(v23) = 2; v19 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v19, v18, 0, 0, (int)&v21, 0, 65535); LOBYTE(v23) = 0; sub_428A70(&v21); } } } --dword_750CB8; v23 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00435CE0) -------------------------------------------------------- bool __thiscall sub_435CE0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@1 int v5; // eax@13 int v6; // ecx@13 int v8; // eax@20 int v9; // eax@21 __int16 v10; // bx@23 bool v11; // bl@25 int v12; // esi@33 int v13; // eax@49 __int16 v14; // bx@53 int v15; // ebx@60 int v16; // ST04_4@61 int v17; // eax@61 int v18; // ST04_4@63 int v19; // eax@63 char v20; // al@64 int v21; // [sp-4h] [bp-24h]@13 int v22; // [sp+2Ch] [bp+Ch]@12 int v23; // [sp+2Ch] [bp+Ch]@29 int v24; // [sp+2Ch] [bp+Ch]@31 int v25; // [sp+2Ch] [bp+Ch]@57 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( !sub_434A60(v3, a2, a3) ) goto LABEL_66; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2); if ( (void *)v4 == v3 ) goto LABEL_66; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) != 11 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 5 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 8 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) == 4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3672))(v3, v4) != 1 ) { if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3) || (v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4), v22 != (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3)) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1804))(v4); --dword_750CB8; v21 = (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"; v6 = (int)&unk_D020420; if ( v5 ) { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"); return 1; } goto LABEL_68; } } } goto LABEL_66; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3184))(v4) == 1 || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291) || (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 996))(v3, 291) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 499) || (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 996))(v3, 499) ) goto LABEL_66; v8 = *(_DWORD *)((char *)v3 + 122); if ( v8 ) { v9 = *(_DWORD *)(v8 + 16); if ( v9 ) { if ( *(_BYTE *)(v9 + 58) == 4 ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1360))(v3); v11 = v10 != -1 && v10 == (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2692))(v4) ) { v23 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2692))(v3) + 4); if ( (_WORD)v23 == *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2692))(v3) + 4) ) v11 = 1; } } v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2072))(v3); if ( !v24 ) v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2140))(v3); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4); if ( !v12 ) v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2140))(v4); if ( !sub_5CA1C0((int)&unk_13267D80, v24, v12) ) { if ( !v24 || !v12 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"); return v11 == 0; } v21 = (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"; v6 = (int)&unk_D020420; if ( v24 != v12 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"); return v11 == 0; } goto LABEL_67; } goto LABEL_36; } } } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291) || (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 996))(v3, 291) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v4 + 996))(v4, 499) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v3 + 996))(v3, 499) ) goto LABEL_66; if ( *(_BYTE *)(*(_DWORD *)((char *)v3 + 122) + 84) || (v13 = sub_409730(v4)) != 0 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 3864))(v13) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3864))(v3) ) goto LABEL_36; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1360))(v3) != -1 ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4); if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1360))(v3) == v14 ) goto LABEL_66; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 122) + 12) + 105) ) { LABEL_36: --dword_750CB8; v21 = (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"; v6 = (int)&unk_D020420; LABEL_37: sub_467660(v6, v21); return 1; } if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2692))(v4) ) { v25 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) + 4); if ( (_WORD)v25 == *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2692))(v4) + 4) ) { LABEL_66: v21 = (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"; v6 = (int)&unk_D020420; LABEL_67: --dword_750CB8; goto LABEL_68; } } } if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3) != v15 ) { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3); if ( sub_462840(*(void **)((char *)v3 + 122), v17, v16) || *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 122) + 12) + 99) && (v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4), v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3), sub_5CA1C0((int)&unk_13267D80, v19, v18)) ) goto LABEL_36; } } } v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3588))(v3, v4); --dword_750CB8; v21 = (int)"ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo"; v6 = (int)&unk_D020420; if ( v20 == 1 ) goto LABEL_37; LABEL_68: sub_467660(v6, v21); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004362D0) -------------------------------------------------------- char __thiscall sub_4362D0(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@2 char result; // al@3 char v6; // bl@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_ICanDamageTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_mobile_ICanDamageTo"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3556))(v3) == 1 ) { v4 = sub_434C70(v3, a2, a3); --dword_750CB8; if ( v4 ) { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_ICanDamageTo"); result = 1; } else { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_ICanDamageTo"); result = 0; } } else { if ( *((_DWORD *)v3 + 2417) ) v6 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v3 + 2417) + 2432))( *((_DWORD *)v3 + 2417), a2, a3); else v6 = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mobile_ICanDamageTo"); result = v6; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00436400) -------------------------------------------------------- bool __thiscall sub_436400(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@1 int v5; // eax@14 int v6; // ecx@15 int v8; // eax@23 int v9; // eax@28 int v10; // ecx@29 __int16 v11; // ST1C_2@36 int v12; // esi@40 __int16 v13; // bx@52 int v14; // ebx@60 int v15; // ST04_4@61 int v16; // eax@61 int v17; // ST04_4@64 int v18; // eax@64 int v19; // [sp-4h] [bp-2Ch]@15 __int16 v20; // [sp+14h] [bp-14h]@31 int v21; // [sp+18h] [bp-10h]@31 int v22; // [sp+30h] [bp+8h]@13 int v23; // [sp+30h] [bp+8h]@57 char v24; // [sp+33h] [bp+Bh]@31 int v25; // [sp+34h] [bp+Ch]@31 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 ) { if ( !sub_434A60(v3, a2, a3) ) goto LABEL_66; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) != 11 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 5 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 8 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) == 4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3672))(v3, v4) != 1 ) { if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3) || (v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4), v22 != (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2088))(v3)) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1804))(v4); if ( v5 ) { v19 = (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"; v6 = (int)&unk_D020420; if ( *(_DWORD *)v5 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"); return 1; } --dword_750CB8; goto LABEL_69; } } } } goto LABEL_66; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3184))(v4) == 1 || (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 996))(v3, 291) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291) || (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 996))(v3, 499) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 499) ) goto LABEL_66; v8 = sub_409730(v4); if ( !v8 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 3864))(v8) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3864))(v3) != 1 ) { v9 = *(_DWORD *)((char *)v3 + 122); if ( !v9 || (v10 = *(_DWORD *)(v9 + 16)) == 0 ) goto LABEL_66; if ( *(_BYTE *)(v10 + 58) == 4 ) { v24 = 0; v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1360))(v3); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2072))(v3); v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4); if ( v20 != -1 && v20 == (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4) ) v24 = 1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2692))(v4) ) { v11 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2692))(v3) + 4); if ( v11 == *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2692))(v3) + 4) ) v24 = 1; } } if ( !v25 ) v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2140))(v3); v12 = v21; if ( !v21 ) v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2140))(v4); if ( sub_5CA1C0((int)&unk_13267D80, v25, v12) != 1 ) { if ( !v25 || !v12 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"); return v24 == 0; } v19 = (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"; if ( v25 != v12 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"); return v24 == 0; } --dword_750CB8; goto LABEL_68; } --dword_750CB8; LABEL_26: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"); return 1; } if ( *(_BYTE *)(v9 + 84) != 1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1360))(v3) != -1 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4); if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1360))(v3) == v13 ) { --dword_750CB8; goto LABEL_67; } } if ( !*(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 122) + 12) + 105) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2692))(v4) && (v23 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) + 4), (_WORD)v23 == *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2692))(v4) + 4)) || (!(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4) || !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3) || (v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4), (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3) == v14) || (v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4), v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3), sub_462840(*(void **)((char *)v3 + 122), v16, v15) != 1) && (!*(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v3 + 122) + 12) + 99) || (v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2088))(v4), v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3), sub_5CA1C0((int)&unk_13267D80, v18, v17) != 1))) && (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3588))(v3, v4) != 1 ) { LABEL_66: --dword_750CB8; goto LABEL_67; } } } } } --dword_750CB8; goto LABEL_26; } --dword_750CB8; LABEL_67: v19 = (int)"ShineObjectClass::ShineMover::so_mobile_ICanDamageTo"; LABEL_68: v6 = (int)&unk_D020420; LABEL_69: sub_467660(v6, v19); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004369C0) -------------------------------------------------------- int __thiscall sub_4369C0(void *this) { void *v1; // edi@1 char v2; // al@1 unsigned __int16 i; // bx@2 unsigned __int16 v4; // dx@4 int v5; // eax@5 int v6; // ecx@6 int v7; // ecx@8 bool v8; // zf@9 int v9; // eax@9 int v10; // eax@10 int v11; // edx@14 unsigned __int16 v13; // [sp+12h] [bp-1Ah]@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChineCastCut"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChineCastCut"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_BYTE *)v1 + 7888); if ( v2 & 0x40 ) { *((_BYTE *)v1 + 7888) = v2 & 0xBF; for ( i = *(_WORD *)(*((_DWORD *)v1 + 951) + 12 * *((_WORD *)v1 + 1905) + 4); ; i = v13 ) { v4 = *((_WORD *)v1 + 1900); if ( i >= v4 ) break; v5 = *((_DWORD *)v1 + 951); v13 = *(_WORD *)(v5 + 12 * i + 4); if ( *(_BYTE *)(v5 + 12 * i + 8) ) v6 = *(_DWORD *)(v5 + 12 * i); else v6 = 0; v7 = dword_871508[3 * *(_DWORD *)(v6 + 4)]; if ( i >= v4 || (v8 = *(_BYTE *)(v5 + 12 * i + 8) == 0, v9 = v5 + 12 * i, v8) ) v10 = 0; else v10 = *(_DWORD *)v9; if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v7 + 32))(v10) ) { if ( i < *((_WORD *)v1 + 1900) && (v11 = *((_DWORD *)v1 + 951), *(_BYTE *)(v11 + 12 * i + 8)) ) *(_DWORD *)(*(_DWORD *)(v11 + 12 * i) + 32) = dword_14D129E8; else v20 = dword_14D129E8; } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChineCastCut"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00436B40) -------------------------------------------------------- int __cdecl sub_436B40(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // ecx@1 int result; // eax@1 signed int v6; // edi@1 int v7; // edx@2 int v8; // ecx@5 int v9; // eax@5 int v10; // ecx@7 int v11; // eax@10 char v12; // [sp+Ch] [bp-7Ch]@10 int v13; // [sp+78h] [bp-10h]@1 int v14; // [sp+7Ch] [bp-Ch]@9 int v15; // [sp+80h] [bp-8h]@5 int i; // [sp+84h] [bp-4h]@5 int v17; // [sp+94h] [bp+Ch]@1 v3 = a1; v4 = (a2 - a1) / 108; result = (a3 - a1) / 108; v13 = v4; v17 = (a3 - a1) / 108; v6 = v4; if ( v4 ) { do { v7 = result % v6; v17 = v6; result = v6; v6 = v7; } while ( v7 ); } if ( result < (a3 - a1) / 108 && result > 0 ) { v8 = 108 * v4; v9 = a1 + 108 * result; v15 = v8; for ( i = v9; ; v9 = i ) { v10 = v9 + v8; if ( v10 != a3 ) v3 = v10; while ( 1 ) { memcpy(&v12, (const void *)v9, 0x6Cu); memcpy((void *)v9, (const void *)v3, 0x6Cu); memcpy((void *)v3, &v12, 0x6Cu); v11 = (a3 - v3) / 108; v14 = v3; if ( v13 >= v11 ) v3 = a1 + 108 * (v13 - v11); else v3 += v15; if ( v3 == i ) break; v9 = v14; } i -= 108; result = v17 - 1; v17 = result; if ( result <= 0 ) break; v3 = a1; v8 = v15; } } return result; } //----- (00436C50) -------------------------------------------------------- int __stdcall sub_436C50(int a1) { void *v1; // esi@1 int v2; // eax@1 void *v3; // eax@5 int v4; // ecx@6 int v5; // eax@8 int v6; // ecx@8 _BYTE *v7; // ecx@8 int v8; // ST04_4@8 int v9; // eax@8 int v10; // esi@8 int v11; // eax@9 char v12; // al@12 int v13; // ebx@13 char v15; // [sp+10h] [bp-1Ch]@8 int v16; // [sp+1Ch] [bp-10h]@1 int v17; // [sp+28h] [bp-4h]@1 v16 = (int)"SkillEffectApply::SkillDamageSender::sds_Finish"; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillDamageSender::sds_Finish"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillDamageSender::sds_Finish"; dword_750AB8[dword_750CB8++] = -1; v1 = off_849C18; *(_WORD *)off_849C18 = 9298; *((_WORD *)v1 + 1) = *(_WORD *)(a1 + 4); *((_BYTE *)v1 + 6) = (dword_87B258 - (signed int)dword_87B254) / 14; v2 = *(_DWORD *)(a1 + 16); v17 = 0; if ( v2 ) *((_WORD *)v1 + 2) = *(_WORD *)(v2 + 4); else *((_WORD *)v1 + 2) = -1; if ( (unsigned int)(14 * (dword_87B258 - (signed int)dword_87B254) / 14) < 0x1D4C ) { v3 = dword_87B254; if ( dword_87B254 != (void *)dword_87B258 ) { v4 = (int)((char *)v1 + 7); do { *(_DWORD *)v4 = *(_DWORD *)v3; *(_DWORD *)(v4 + 4) = *((_DWORD *)v3 + 1); *(_DWORD *)(v4 + 8) = *((_DWORD *)v3 + 2); *(_WORD *)(v4 + 12) = *((_WORD *)v3 + 6); v3 = (char *)v3 + 14; v4 += 14; } while ( v3 != (void *)dword_87B258 ); } } v5 = (*(int (**)(void))(**(_DWORD **)(a1 + 16) + 1388))(); v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); *((_DWORD *)v7 + 4) = *(_DWORD *)(v5 + 16); v7[20] = 0; sub_4287B0(&v15, &off_849C18, 14 * *((_BYTE *)v1 + 6) + 7); v8 = *(_DWORD *)(*(_DWORD *)(a1 + 16) + 102); LOBYTE(v17) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a1 + 16), v9, v8, 0, 0, (int)&v15, 1, 65535); v10 = *(_DWORD *)(a1 + 16); if ( v10 ) { v11 = (**(int (__thiscall ***)(_DWORD))v10)(*(_DWORD *)(a1 + 16)); if ( v11 ) { while ( (_UNKNOWN *)v11 != &unk_132541F4 ) { v11 = *(_DWORD *)(v11 + 4); if ( !v11 ) goto LABEL_12; } v12 = 1; } else { LABEL_12: v12 = 0; } v13 = v12 != 0 ? v10 : 0; if ( (v12 != 0 ? v10 : 0) && sub_55E210(v12 != 0 ? v10 : 0) ) (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v13 + 884))( v13, **(_WORD **)(*(_DWORD *)(a1 + 8) + 4), 0); } LOBYTE(v17) = 0; sub_428A70(&v15); --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillDamageSender::sds_Finish"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 87B258: using guessed type int dword_87B258; //----- (00436EA0) -------------------------------------------------------- char __thiscall sub_436EA0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6A7378; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6A7378: using guessed type int (__stdcall *off_6A7378)(int, int); //----- (00437020) -------------------------------------------------------- int __usercall sub_437020(int result, int a2, int a3) { int v3; // edx@1 v3 = a3; if ( a3 ) { result = a2; do { if ( result ) { *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; *(_DWORD *)(result + 8) = 0; *(_WORD *)(result + 12) = 0; } result += 14; --v3; } while ( v3 ); } return result; } //----- (00437050) -------------------------------------------------------- int __cdecl sub_437050(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 14 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_WORD *)(result + 12) = *(_WORD *)(v3 + 12); } v3 += 14; } return result; } //----- (00437090) -------------------------------------------------------- int __cdecl sub_437090(void *a1, unsigned int a2) { void *v2; // edx@1 unsigned int v3; // ebx@1 int result; // eax@1 char v5; // [sp+4h] [bp-70h]@3 int v6; // [sp+30h] [bp-44h]@2 int v7; // [sp+34h] [bp-40h]@2 int v8; // [sp+3Ch] [bp-38h]@2 int v9; // [sp+40h] [bp-34h]@2 int v10; // [sp+44h] [bp-30h]@2 int v11; // [sp+48h] [bp-2Ch]@2 int v12; // [sp+4Ch] [bp-28h]@2 int v13; // [sp+50h] [bp-24h]@2 int v14; // [sp+54h] [bp-20h]@2 int v15; // [sp+58h] [bp-1Ch]@2 int v16; // [sp+5Ch] [bp-18h]@2 int v17; // [sp+60h] [bp-14h]@2 int v18; // [sp+64h] [bp-10h]@2 int v19; // [sp+68h] [bp-Ch]@2 unsigned int v20; // [sp+70h] [bp-4h]@1 int v21; // [sp+74h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v2 = a1; v3 = a2; result = 0; if ( a2 ) { do { v6 = -1; v7 = 1000; v8 = 0; v9 = 792; v10 = 0; v11 = 0; v12 = 792; v13 = 0; v14 = 0; v15 = 792; v16 = 0; v17 = 0; v18 = 792; v19 = 0; if ( v2 ) memcpy(v2, &v5, 0x6Cu); --v3; v2 = (char *)v2 + 108; } while ( v3 > 0 ); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00437110) -------------------------------------------------------- void *__cdecl sub_437110(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 108 ) { if ( result ) memcpy(result, v3, 0x6Cu); v3 = (char *)v3 + 108; } return result; } //----- (00437150) -------------------------------------------------------- int __thiscall sub_437150(int this) { int v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // edi@1 int v5; // ecx@3 int v6; // ecx@6 bool v7; // zf@6 int v8; // ecx@6 int v9; // ecx@9 int v10; // ecx@9 int v11; // ecx@12 int v12; // ecx@12 signed int v14; // [sp+10h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6A7008; *(_DWORD *)(this + 16) = 0; sub_436EA0(this, 0x400u); *(_DWORD *)v1 = &off_6A7058; _eh_vector_constructor_iterator_( (void *)(v1 + 24), 0xE0u, 1024, (int)sub_434710, (void (__thiscall *)(void *))sub_434760); v2 = 2; v3 = 0; v4 = v1 + 248; v14 = 256; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v4 - 224; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v6 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 + 12) == 0; v8 = v6 + v3 + 12; if ( v7 ) *(_DWORD *)v8 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v9 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v9 + v3 + 24) == 0; v10 = v9 + v3 + 24; if ( v7 ) *(_DWORD *)v10 = v4 + 224; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v11 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v11 + v3 + 36) == 0; v12 = v11 + v3 + 36; if ( v7 ) *(_DWORD *)v12 = v4 + 448; } v3 += 48; v2 += 4; v4 += 896; --v14; } while ( v14 ); return v1; } // 6A7008: using guessed type int (__thiscall *off_6A7008)(void *, char); // 6A7058: using guessed type int (__thiscall *off_6A7058)(void *, char); //----- (00437270) -------------------------------------------------------- int __thiscall sub_437270(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_12492492 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 14; if ( result < a2 ) { v4 = sub_435820(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v10 = v4; v12 = 0; sub_437050((int)v6, v5, v4); v7 = (signed int)(*(_DWORD *)(v2 + 4) - *(_DWORD *)v2 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32)) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 14 * a2; *(_DWORD *)(v2 + 4) = result + 14 * v8; *(_DWORD *)v2 = result; } return result; } //----- (0043735B) -------------------------------------------------------- void __usercall sub_43735B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00437380) -------------------------------------------------------- int __thiscall sub_437380(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 14; if ( (unsigned int)((char *)&unk_12492492 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 14; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_12492492 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_437270(this, v5); } return result; } //----- (00437400) -------------------------------------------------------- int __thiscall sub_437400(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 const void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 const void *i; // eax@5 int v11; // ecx@8 int v12; // edi@8 int v13; // [sp+0h] [bp-24h]@1 int v14; // [sp+10h] [bp-14h]@4 int *v15; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [bp-4h]@4 v15 = &v13; v2 = this; if ( a2 > (unsigned int)&unk_25ED097 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 108; if ( result < a2 ) { v4 = sub_4357C0(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v14 = v4; v16 = 0; sub_437110(v6, v5, (void *)v4); v7 = *(const void **)v2; v8 = (signed int)((unsigned __int64)(1272582903i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 5; v9 = v8 + ((unsigned int)v8 >> 31); if ( *(_DWORD *)v2 ) { for ( i = *(const void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 108 ) ; operator delete(*(void **)v2); } v11 = v14; result = v14 + 108 * a2; v12 = v14 + 108 * v9; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v12; *(_DWORD *)v2 = v11; } return result; } //----- (004374EE) -------------------------------------------------------- void __usercall sub_4374EE(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00437510) -------------------------------------------------------- int __thiscall sub_437510(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 int result; // eax@1 unsigned int v6; // ecx@2 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; result = v4 / 14; if ( v4 / 14 <= a2 ) { if ( v4 / 14 < a2 ) { sub_437380(v2, a2 - result); sub_437020( -1840700269 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2), *(_DWORD *)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 14); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 14; *(_DWORD *)(v2 + 4) += 14 * (a2 - result); } } else { result = *(_DWORD *)v2; v6 = *(_DWORD *)v2 + 14 * a2; if ( v6 != v3 ) { result = v3; *(_DWORD *)(v2 + 4) = v6; } } return result; } //----- (00437600) -------------------------------------------------------- int __thiscall sub_437600(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 108; if ( (unsigned int)((char *)&unk_25ED097 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 108; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_25ED097 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_437400(this, v5); } return result; } //----- (00437680) -------------------------------------------------------- int __thiscall sub_437680(void *this) { int v1; // esi@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillDamageSender::sds_Initialize"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillDamageSender::sds_Initialize"; dword_750AB8[dword_750CB8++] = -1; sub_437510(v1, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillDamageSender::sds_Initialize"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00437720) -------------------------------------------------------- int __thiscall sub_437720(void *this) { int *v1; // edx@1 int result; // eax@1 void *v3; // esi@1 void *v4; // ecx@2 void *v5; // ebx@6 void *v6; // edx@7 const void *v7; // esi@8 void *v8; // edi@8 int *v9; // [sp+4h] [bp-4h]@1 v1 = *(int **)this; result = **(_DWORD **)this; v3 = *(void **)(*(_DWORD *)this + 4); v9 = *(int **)this; if ( (void *)result != v3 ) { v4 = (void *)*((_DWORD *)this + 1); while ( (void *)result != v4 ) { result += 108; if ( (void *)result == v3 ) return result; } v5 = v3; result = (int)((char *)v4 + 108); if ( (char *)v4 + 108 != v3 ) { v6 = v4; do { v7 = (const void *)result; v8 = v6; result += 108; v6 = (char *)v6 + 108; memcpy(v8, v7, 0x6Cu); } while ( (void *)result != v5 ); v1 = v9; } v1[1] -= 108; } return result; } //----- (00437780) -------------------------------------------------------- int __thiscall sub_437780(void *this, int a2) { void *v2; // ebx@1 int v3; // edi@1 int v4; // esi@1 void *v5; // eax@4 void *v6; // edx@9 int v7; // eax@9 const void *v8; // esi@10 void *v9; // edi@10 int v11; // [sp+Ch] [bp-80h]@9 char v12; // [sp+10h] [bp-7Ch]@2 int v13; // [sp+20h] [bp-6Ch]@1 int v14; // [sp+3Ch] [bp-50h]@1 int v15; // [sp+40h] [bp-4Ch]@1 int v16; // [sp+48h] [bp-44h]@1 int v17; // [sp+4Ch] [bp-40h]@1 int v18; // [sp+50h] [bp-3Ch]@1 int v19; // [sp+54h] [bp-38h]@1 int v20; // [sp+58h] [bp-34h]@1 int v21; // [sp+5Ch] [bp-30h]@1 int v22; // [sp+60h] [bp-2Ch]@1 int v23; // [sp+64h] [bp-28h]@1 int v24; // [sp+68h] [bp-24h]@1 int v25; // [sp+6Ch] [bp-20h]@1 int v26; // [sp+70h] [bp-1Ch]@1 int v27; // [sp+74h] [bp-18h]@1 unsigned int v28; // [sp+7Ch] [bp-10h]@1 int v29; // [sp+88h] [bp-4h]@1 int v30; // [sp+8Ch] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; v13 = a2; v4 = *((_DWORD *)v2 + 1); v14 = -1; v29 = 0; v15 = 1000; v16 = 0; v17 = 792; v18 = 0; v19 = 0; v20 = 792; v21 = 0; v22 = 0; v23 = 792; v24 = 0; v25 = 0; v26 = 792; v27 = 0; if ( v3 == v4 ) goto LABEL_15; while ( !sub_5771D0(v3, (int)&v12) ) { v3 += 108; if ( v3 == v4 ) { v5 = (void *)v3; goto LABEL_8; } } if ( v3 != v4 ) v5 = sub_435900((void *)v3, v4, (int)&v12); else LABEL_15: v5 = (void *)v3; LABEL_8: if ( v5 != (void *)v4 ) { v6 = v5; v11 = *((_DWORD *)v2 + 1); v7 = v4; while ( v7 != v11 ) { v8 = (const void *)v7; v9 = v6; v7 += 108; v6 = (char *)v6 + 108; memcpy(v9, v8, 0x6Cu); } *((_DWORD *)v2 + 1) = v6; } --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004378D0) -------------------------------------------------------- int __thiscall sub_4378D0(int this, unsigned int a2) { int v2; // ebx@1 int v3; // ecx@1 int result; // eax@1 unsigned int v5; // edx@3 v2 = this; v3 = *(_DWORD *)(this + 4); result = (v3 - *(_DWORD *)v2) / 108; if ( result <= a2 ) { if ( result < a2 ) { sub_437600(v2, a2 - result); sub_437090(*(void **)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 108); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 108; *(_DWORD *)(v2 + 4) += 108 * (a2 - result); } } else { if ( *(_DWORD *)v2 + 108 * a2 != v3 ) { v5 = *(_DWORD *)v2 + 108 * a2; result = v3; *(_DWORD *)(v2 + 4) = v5; } } return result; } //----- (004379A0) -------------------------------------------------------- void __thiscall sub_4379A0(int this, const void *a2) { const void *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 void *v7; // edi@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( (unsigned int)a2 >= v4 || *(_DWORD *)v3 > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(v3 + 8) ) sub_437600(v3, 1); } else { v5 = (signed int)((unsigned __int64)(1272582903i64 * (signed int)((char *)a2 - *(_DWORD *)v3)) >> 32) >> 5; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_437600(v3, 1); v2 = (const void *)(*(_DWORD *)v3 + 108 * v6); } v7 = *(void **)(v3 + 4); if ( v7 ) memcpy(v7, v2, 0x6Cu); *(_DWORD *)(v3 + 4) += 108; } //----- (00437A10) -------------------------------------------------------- int __thiscall sub_437A10(void *this, int a2, int a3, const void *a4) { int v4; // ebx@1 signed int v5; // ecx@1 int v6; // esi@1 void *v7; // edi@3 int v8; // esi@5 int v9; // ecx@5 int v10; // eax@5 int result; // eax@8 int v12; // [sp+8h] [bp-4h]@1 v4 = (int)this; v5 = a3 - *(_DWORD *)this; v6 = v5 / 108; v12 = v5 / 108; if ( *(_DWORD *)(v4 + 4) == *(_DWORD *)(v4 + 8) ) sub_437600(v4, 1); v7 = *(void **)(v4 + 4); if ( v7 ) { memcpy(v7, a4, 0x6Cu); v6 = v12; } *(_DWORD *)(v4 + 4) += 108; v8 = 108 * v6; v9 = *(_DWORD *)(v4 + 4); v10 = v8 + *(_DWORD *)v4; if ( v10 != v9 - 108 && v9 - 108 != v9 ) sub_436B40(v10, v9 - 108, v9); result = a2; *(_DWORD *)a2 = v8 + *(_DWORD *)v4; return result; } //----- (00437AA0) -------------------------------------------------------- int __usercall sub_437AA0(int a1, double a2) { int v2; // ebx@2 int v3; // esi@2 bool v4; // zf@4 int v5; // ecx@5 int v6; // eax@10 __int16 *v7; // eax@11 int v8; // ecx@15 int v9; // eax@37 unsigned int v11; // [sp-4h] [bp-78h]@1 int v12; // [sp+10h] [bp-64h]@1 signed int v13; // [sp+14h] [bp-60h]@1 int v14; // [sp+18h] [bp-5Ch]@4 int v15; // [sp+1Ch] [bp-58h]@4 char v16; // [sp+20h] [bp-54h]@1 unsigned int v17; // [sp+64h] [bp-10h]@1 int v18; // [sp+70h] [bp-4h]@1 int v19; // [sp+74h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v11 = (unsigned int)&v19 ^ __security_cookie; v12 = a1; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; memcpy(&v16, dword_13231278, 0x44u); LOBYTE(v18) = 1; v13 = 0; while ( 1 ) { v2 = *(_DWORD *)v12; v3 = v12; if ( *(_DWORD *)v12 == *(_DWORD *)(v12 + 4) ) break; if ( *(_DWORD *)v2 > (unsigned int)dword_14D129E8 ) break; v15 = *(_DWORD *)v12; v14 = v12; v4 = *(_DWORD *)(v2 + 8) == 0; LOBYTE(v18) = 2; if ( !v4 ) { v5 = *(_DWORD *)(v2 + 16); if ( v5 ) { if ( !(unsigned __int8)(*(int (__cdecl **)(unsigned int))(*(_DWORD *)v5 + 768))(v11) && (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 836))() == *(_DWORD *)(v2 + 12) && ((unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 16) + 1156))() == 1 || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 16) + 1156))() == 2) ) { v6 = *(_WORD *)(v2 + 106); if ( (unsigned __int16)v6 < 0x80u && (v7 = &word_132423D0[36 * v6]) != 0 && *v7 == *(_WORD *)(*(_DWORD *)(v2 + 16) + 4) ) memcpy(dword_13231278, v7 + 2, 0x44u); else sub_50EDC0(dword_13231278); v8 = *(_DWORD *)(v2 + 28); if ( !v8 ) { sub_437680(&dword_87B254); sub_581D90(v2, a2); goto LABEL_37; } if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v8 + 768))() ) { if ( !*(_DWORD *)(v2 + 44) ) (*(void (__thiscall **)(_DWORD, signed int))(**(_DWORD **)(v2 + 16) + 3804))(*(_DWORD *)(v2 + 16), 4043); } else { if ( *(_BYTE *)(*(_DWORD *)(v2 + 8) + 256) || !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 28) + 40))() ) { if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v2 + 28) + 996))(291) ) { if ( !*(_DWORD *)(v2 + 44) ) (*(void (__thiscall **)(_DWORD, signed int))(**(_DWORD **)(v2 + 16) + 3804))( *(_DWORD *)(v2 + 16), 4043); } else { if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v2 + 28) + 996))(499) ) { if ( !*(_DWORD *)(v2 + 44) ) (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 3804))(*(_DWORD *)(v2 + 16), 4043); } else { if ( (*(int (**)(void))(**(_DWORD **)(v2 + 28) + 836))() == *(_DWORD *)(v2 + 24) ) { if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 28) + 1156))() ) { sub_437680(&dword_87B254); sub_5817F0(v2, a2); LABEL_37: sub_436C50(v2); (*(void (**)(void))(**(_DWORD **)(v2 + 16) + 3832))(); v9 = *(_DWORD *)(v2 + 44); if ( v9 == -1 || !v9 ) { (*(void (__stdcall **)(signed int, _DWORD, signed int))(**(_DWORD **)(v2 + 16) + 3844))( 1, *(_DWORD *)(v2 + 8), 1); (*(void (__stdcall **)(signed int, _DWORD, signed int))(**(_DWORD **)(v2 + 16) + 3848))( 1, *(_DWORD *)(v2 + 8), 1); } goto LABEL_40; } if ( !*(_DWORD *)(v2 + 44) ) (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 3804))( *(_DWORD *)(v2 + 16), 4043); } else { if ( !*(_DWORD *)(v2 + 44) ) (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 3804))( *(_DWORD *)(v2 + 16), 4043); } } } } else { if ( !*(_DWORD *)(v2 + 44) ) (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 3804))(*(_DWORD *)(v2 + 16), 4043); } } } } } LABEL_40: LOBYTE(v18) = 1; sub_437720(&v14); ++v13; if ( v13 >= 10 ) { v3 = v12; break; } } if ( (unsigned int)((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 108) >= 0x12C ) { sub_639100( &unk_86DDD8, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Routine : Too many skill reserved", 0); sub_4378D0(v3, 0); } memcpy(dword_13231278, &v16, 0x44u); LOBYTE(v18) = 0; nullsub_2(&v16); --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13231278: using guessed type int dword_13231278[]; // 132423D0: using guessed type __int16 word_132423D0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00437E60) -------------------------------------------------------- int __thiscall sub_437E60(void *this, __int16 a2, int a3, int a4, int a5, int a6, int a7, __int16 a8, int a9, unsigned __int8 a10) { int v10; // ebx@1 bool v11; // zf@5 int v12; // eax@6 int v13; // eax@8 __int16 v14; // dx@10 int v15; // eax@10 int (__thiscall *v16)(_DWORD); // edx@10 int v17; // eax@10 int v18; // ecx@10 int v19; // eax@11 int v20; // eax@13 int v21; // edx@15 int v22; // eax@15 int v23; // eax@17 signed int v24; // edi@18 int v25; // esi@19 int v26; // ecx@21 unsigned int v27; // eax@21 int v28; // edx@21 int v29; // ecx@21 int v30; // eax@21 int v31; // ecx@21 signed int v32; // eax@29 int v33; // eax@30 int (__thiscall *v34)(_DWORD, _DWORD); // edx@31 int v35; // eax@31 int v36; // ecx@33 unsigned int v37; // eax@33 __int16 v38; // dx@40 int v39; // eax@40 int (__thiscall *v40)(_DWORD); // edx@40 signed int v41; // esi@41 int v42; // edx@44 int v43; // edi@45 int v44; // ecx@45 int v45; // eax@46 int v46; // ecx@46 unsigned int v48; // [sp-4h] [bp-ACh]@1 char v49; // [sp+10h] [bp-98h]@17 unsigned __int8 v50; // [sp+14h] [bp-94h]@17 int v51; // [sp+1Ch] [bp-8Ch]@1 int v52; // [sp+20h] [bp-88h]@1 int v53; // [sp+24h] [bp-84h]@1 int v54; // [sp+28h] [bp-80h]@16 int v55; // [sp+2Ch] [bp-7Ch]@5 __int16 v56; // [sp+30h] [bp-78h]@10 int v57; // [sp+34h] [bp-74h]@10 int v58; // [sp+38h] [bp-70h]@10 int v59; // [sp+3Ch] [bp-6Ch]@10 __int16 v60; // [sp+40h] [bp-68h]@10 int v61; // [sp+44h] [bp-64h]@11 int v62; // [sp+48h] [bp-60h]@10 int v63; // [sp+4Ch] [bp-5Ch]@15 int v64; // [sp+50h] [bp-58h]@15 int v65; // [sp+54h] [bp-54h]@10 int v66; // [sp+58h] [bp-50h]@21 unsigned int v67; // [sp+5Ch] [bp-4Ch]@21 int v68; // [sp+60h] [bp-48h]@21 int v69; // [sp+64h] [bp-44h]@21 int v70; // [sp+68h] [bp-40h]@21 int v71; // [sp+6Ch] [bp-3Ch]@21 unsigned __int8 v72; // [sp+94h] [bp-14h]@5 __int16 v73; // [sp+96h] [bp-12h]@5 unsigned int v74; // [sp+98h] [bp-10h]@1 int v75; // [sp+A4h] [bp-4h]@1 int v76; // [sp+A8h] [bp+0h]@1 v74 = (unsigned int)&v76 ^ __security_cookie; v48 = (unsigned int)&v76 ^ __security_cookie; v10 = (int)this; v52 = a6; v53 = a5; v51 = a9; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Store"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Store"; dword_750AB8[dword_750CB8++] = -1; v75 = 0; if ( !a4 || !a3 || !*(_DWORD *)(a3 + 4) || !*(_DWORD *)a3 ) { --dword_750CB8; v75 = -1; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Store"); } sub_434790((int)&v55); v11 = *(_DWORD *)(a3 + 4) == 0; v72 = a10; v73 = a8; if ( v11 ) goto LABEL_26; (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)a4 + 3172))( a4, dword_14D129E8 + ((unsigned int)(10 * (unsigned int)*(_WORD *)(*(_DWORD *)a3 + 73) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6)); v12 = *(_DWORD *)(a3 + 4); if ( *(_WORD *)(v12 + 669) && a10 <= 1u ) { v13 = sub_4C0070(&dword_D9FB84C, *(_WORD *)(v12 + 669)); v51 = v13; if ( v13 && *(_WORD *)v13 == *(_WORD *)(*(_DWORD *)(a3 + 4) + 669) ) { v14 = *(_WORD *)(a4 + 7684); v56 = a2; v15 = *(_DWORD *)a4; v65 = a7; v60 = v14; v16 = *(int (__thiscall **)(_DWORD))(v15 + 836); v57 = a3; v59 = a4; v17 = v16(a4); v18 = v53; v58 = v17; v62 = v53; if ( v53 ) { v19 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v53 + 836))(v48); v18 = v53; v61 = v19; } else { v61 = -1; } v20 = v52; if ( !v52 ) v20 = *(_DWORD *)(a4 + 102); v21 = *(_DWORD *)v20; v22 = *(_DWORD *)(v20 + 4); v63 = v21; v11 = *(_BYTE *)(*(_DWORD *)(a3 + 4) + 668) == 0; v64 = v22; if ( v11 ) { v54 = 1000; } else { (*(void (__thiscall **)(int, int, char *, int))(*(_DWORD *)a4 + 3888))(a4, a3, &v49, v18); v23 = sub_4348E0((int)&dword_AF09A70, *(_BYTE *)(*(_DWORD *)(a3 + 4) + 668)); v54 = *(_WORD *)(v23 + 2 * v50); } v24 = 0; if ( *(_BYTE *)(v51 + 164) ) { v25 = v51 + 4; do { if ( !*(_WORD *)v25 ) break; v26 = v54 * *(_WORD *)(v25 + 12); v55 = ((signed int)((unsigned __int64)(10 * *(_WORD *)v25 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)v25 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31) + dword_14D129E8 - 2; v27 = ((signed int)((unsigned __int64)(v26 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v26 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v28 = *(_WORD *)(v25 + 10); v68 = *(_BYTE *)(v25 + 14); v29 = *(_BYTE *)(v25 + 8); v67 = v27; v70 = *(_DWORD *)(v25 + 4); v30 = *(_DWORD *)v10; v71 = v29; v31 = *(_DWORD *)(v10 + 4); v66 = v24; v69 = v28; if ( v30 == v31 ) { LABEL_24: sub_4379A0(v10, &v55); } else { while ( *(_DWORD *)v30 <= (unsigned int)v55 ) { v30 += 108; if ( v30 == v31 ) goto LABEL_24; } sub_437A10((void *)v10, (int)&v52, v30, &v55); } sub_4353D0(); ++v24; v25 += 16; } while ( v24 < *(_BYTE *)(v51 + 164) ); } } LABEL_26: --dword_750CB8; v75 = -1; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Store"); } v11 = *(_BYTE *)(v12 + 668) == 0; v66 = -1; if ( v11 ) { v32 = 1000; } else { (*(void (__thiscall **)(int, int, char *, int))(*(_DWORD *)a4 + 3888))(a4, a3, &v49, v53); v33 = sub_4348E0((int)&dword_AF09A70, *(_BYTE *)(*(_DWORD *)(a3 + 4) + 668)); v32 = *(_WORD *)(v33 + 2 * v50); } v67 = ((signed int)((unsigned __int64)(1000 * v32 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(1000 * v32 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); sub_434910( &v66, 0, *(_DWORD *)(a3 + 4) + 271, *(_DWORD *)(*(_DWORD *)(a3 + 4) + 307), *(_DWORD *)(*(_DWORD *)(a3 + 4) + 303)); sub_434910( &v66, 1, *(_DWORD *)(a3 + 4) + 311, *(_DWORD *)(*(_DWORD *)(a3 + 4) + 347), *(_DWORD *)(*(_DWORD *)(a3 + 4) + 343)); sub_434910( &v66, 2, *(_DWORD *)(a3 + 4) + 351, *(_DWORD *)(*(_DWORD *)(a3 + 4) + 387), *(_DWORD *)(*(_DWORD *)(a3 + 4) + 383)); sub_434910( &v66, 3, *(_DWORD *)(a3 + 4) + 391, *(_DWORD *)(*(_DWORD *)(a3 + 4) + 427), *(_DWORD *)(*(_DWORD *)(a3 + 4) + 423)); v34 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a4 + 3852); v68 = 0; v35 = v34(a4, a3); v11 = *(_BYTE *)(a3 + 496) == 1; v54 = v35; if ( v11 && v51 ) { v36 = 10 * 1000 * sub_4011C0( &unk_AF09DA8, **(_DWORD **)(v53 + 102) - *(_DWORD *)v51, *(_DWORD *)(*(_DWORD *)(v53 + 102) + 4) - *(_DWORD *)(v51 + 4)) / *(_DWORD *)(a3 + 500); v37 = ((signed int)((unsigned __int64)(v36 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v36 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( (signed int)v37 < 1 ) v37 = 1; if ( a10 == 1 ) v54 += v37; else v54 = v37; } v11 = *(_BYTE *)(a3 + 464) == 1; v55 = dword_14D129E8 + v54; if ( !v11 ) v55 -= 2; v38 = *(_WORD *)(a4 + 7684); v56 = a2; v39 = *(_DWORD *)a4; v65 = a7; v60 = v38; v40 = *(int (__thiscall **)(_DWORD))(v39 + 836); v57 = a3; v59 = a4; v58 = v40(a4); v62 = v53; if ( v53 ) { v61 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v53 + 836))(v48); v41 = -1; } else { v41 = -1; v61 = -1; } if ( v52 ) { v42 = *(_DWORD *)(v52 + 4); v63 = *(_DWORD *)v52; v64 = v42; } else { v43 = *(_DWORD *)(a4 + 102); v44 = *(_DWORD *)(v43 + 4); v63 = *(_DWORD *)v43; v64 = v44; } v45 = *(_DWORD *)v10; v46 = *(_DWORD *)(v10 + 4); if ( *(_DWORD *)v10 == v46 ) { LABEL_49: sub_4379A0(v10, &v55); } else { while ( *(_DWORD *)v45 <= (unsigned int)v55 ) { v45 += 108; if ( v45 == v46 ) goto LABEL_49; } sub_437A10((void *)v10, (int)&v52, v45, &v55); } sub_4353D0(); --dword_750CB8; v75 = v41; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffectContainer::sbec_Store"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (004383E0) -------------------------------------------------------- int __thiscall sub_4383E0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = this; *(_DWORD *)(this + 4) = a2; v3 = (a2 + 7) / 8; *(_DWORD *)(this + 8) = v3; *(_DWORD *)this = operator new(v3); return v2; } //----- (00438420) -------------------------------------------------------- unsigned int __thiscall sub_438420(int this) { unsigned int result; // eax@1 result = 0; if ( *(_DWORD *)(this + 8) ) { do *(_BYTE *)(result++ + *(_DWORD *)this) = 0; while ( result < *(_DWORD *)(this + 8) ); } return result; } //----- (00438440) -------------------------------------------------------- bool __cdecl sub_438440(int a1) { return *(_BYTE *)(a1 + 28) == 0; } //----- (00438450) -------------------------------------------------------- char __thiscall sub_438450(int this, int a2) { int v2; // edi@1 bool v3; // zf@1 int v4; // ecx@1 signed int v5; // esi@2 signed int v6; // eax@2 int v7; // edx@2 int v8; // ecx@5 int v9; // eax@7 unsigned int v10; // esi@7 int v11; // edx@8 signed int v12; // eax@8 int v13; // ecx@9 int v14; // ecx@12 __int64 v15; // qax@18 __int64 v16; // qax@18 int v18; // [sp+10h] [bp-14h]@4 int v19; // [sp+14h] [bp-10h]@7 int v20; // [sp+18h] [bp-Ch]@7 int v21; // [sp+1Ch] [bp-8h]@7 unsigned int v22; // [sp+20h] [bp-4h]@1 int v23; // [sp+24h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v2 = this; v3 = *(_WORD *)(this + 24) == 0; v4 = a2; if ( !v3 ) { while ( 2 ) { v5 = 0; v6 = 0; v7 = v2 + 8; do { if ( *(_DWORD *)v7 ) { v8 = *(_WORD *)(*(_DWORD *)v7 + 26); *(&v18 + v6) = v8; v5 += v8; } else { *(&v18 + v6) = 0; } ++v6; v7 += 4; } while ( v6 < 4 ); v18 = 1000 * v18 / v5; v19 = 1000 * v19 / v5; v20 = 1000 * v20 / v5; v9 = 1000 * v21 / v5; v10 = 0; v21 = v9; LABEL_8: v11 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v12 = 0; while ( 1 ) { v13 = *(&v18 + v12); if ( v11 < v13 ) break; ++v12; v11 -= v13; if ( v12 >= 4 ) { ++v10; if ( v10 < 0xA ) goto LABEL_8; v12 = 0; v14 = v2 + 8; while ( v12 < 4 ) { if ( *(_DWORD *)v14 ) goto LABEL_16; ++v12; v14 += 4; } return 0; } } LABEL_16: v2 = *(_DWORD *)(v2 + 4 * v12 + 8); if ( *(_WORD *)(v2 + 24) ) continue; break; } v4 = a2; } v15 = *(_WORD *)v2 + *(_WORD *)(v2 + 2); *(_DWORD *)v4 = ((signed int)v15 - HIDWORD(v15)) >> 1; v16 = *(_WORD *)(v2 + 4) + *(_WORD *)(v2 + 6); *(_DWORD *)(v4 + 4) = ((signed int)v16 - HIDWORD(v16)) >> 1; return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (004385B0) -------------------------------------------------------- void *__thiscall sub_4385B0(void *this) { void *v1; // esi@1 int v2; // esi@1 signed int v3; // edi@1 void *v5; // [sp+Ch] [bp-4h]@1 v1 = this; v5 = this; _eh_vector_constructor_iterator_(this, 0x10u, 64, (int)sub_4B03E0, nullsub_2); v2 = (int)((char *)v1 + 4); v3 = 64; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; strncpy((char *)(v2 - 4), byte_6A492E, 0xCu); *(_DWORD *)(v2 + 8) = 0; v2 += 16; --v3; } while ( v3 ); return v5; } //----- (00438610) -------------------------------------------------------- int __thiscall sub_438610(char *this) { char *v1; // eax@1 signed int v2; // esi@1 int v3; // edx@2 int v4; // edx@6 int v5; // edx@8 v1 = this + 28; 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 ); return _LN21(this, 0x10u, 64, nullsub_2); } //----- (004386D0) -------------------------------------------------------- int __thiscall sub_4386D0(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // ecx@1 int result; // eax@3 char v7; // [sp+Ch] [bp-2Ch]@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 char v12; // [sp+28h] [bp-10h]@1 int v13; // [sp+34h] [bp-4h]@1 v1 = this; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v2 = *(_DWORD *)this; v3 = *(_DWORD *)(*(_DWORD *)this + 4); v13 = 0; v4 = loc_438660(v1, v2, v3, &v7); v5 = *((_DWORD *)v1 + 1); if ( (unsigned int)((char *)&unk_7FFFFFE - v5) < 1 ) sub_65178B((int)"list too long"); *((_DWORD *)v1 + 1) = v5 + 1; *(_DWORD *)(v2 + 4) = v4; **(_DWORD **)(v4 + 4) = v4; result = *(_DWORD *)(*(_DWORD *)v1 + 4) + 8; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v1 + 4) + 36) = 1; return result; } //----- (00438770) -------------------------------------------------------- signed int __thiscall sub_438770(void *this, void *a2, signed int a3, signed int a4, signed int a5, signed int a6) { unsigned __int16 v6; // ax@1 void *v7; // esi@1 unsigned __int16 v8; // dx@4 __int16 v9; // cx@8 signed int result; // eax@8 int v11; // eax@9 int v12; // edi@9 int v13; // ebx@9 int v14; // eax@9 int v15; // eax@9 int v16; // eax@9 int v17; // eax@9 int v18; // eax@11 int v19; // eax@13 int v20; // eax@15 v6 = a3; v7 = this; if ( a3 >= 60000 || a4 >= 60000 || a5 >= 60000 || (v8 = a6, a6 >= 60000) ) { sub_639100(&unk_86DDD8, (int)"Too small size", 0); loc_6391B0("BlockDistribute::BlockingDistribute::BlockingDistribute"); v8 = a6; v6 = a3; } *(_WORD *)v7 = v6; *((_WORD *)v7 + 1) = a4; *((_WORD *)v7 + 2) = a5; *((_WORD *)v7 + 3) = v8; if ( v6 - (unsigned __int16)a4 >= 100 || v8 - (unsigned __int16)a5 >= 100 ) { v11 = sub_4386D0(&dword_8B3298); v12 = (a5 + a6) / 2; v13 = (a3 + a4) / 2; *((_DWORD *)v7 + 2) = v11; sub_438770((void *)v11, a2, a3, v13, a5, v12); v14 = sub_4386D0(&dword_8B3298); *((_DWORD *)v7 + 3) = v14; sub_438770((void *)v14, a2, a3, v13, v12, a6); v15 = sub_4386D0(&dword_8B3298); *((_DWORD *)v7 + 4) = v15; sub_438770((void *)v15, a2, v13, a4, a5, v12); v16 = sub_4386D0(&dword_8B3298); *((_DWORD *)v7 + 5) = v16; sub_438770((void *)v16, a2, v13, a4, v12, a6); v17 = *((_DWORD *)v7 + 2); if ( !*(_WORD *)(v17 + 26) ) { *(_BYTE *)(v17 + 28) = 0; *((_DWORD *)v7 + 2) = 0; } v18 = *((_DWORD *)v7 + 3); if ( !*(_WORD *)(v18 + 26) ) { *(_BYTE *)(v18 + 28) = 0; *((_DWORD *)v7 + 3) = 0; } v19 = *((_DWORD *)v7 + 4); if ( !*(_WORD *)(v19 + 26) ) { *(_BYTE *)(v19 + 28) = 0; *((_DWORD *)v7 + 4) = 0; } v20 = *((_DWORD *)v7 + 5); if ( !*(_WORD *)(v20 + 26) ) { *(_BYTE *)(v20 + 28) = 0; *((_DWORD *)v7 + 5) = 0; } *((_DWORD *)v7 + 6) = 0; result = 1; if ( *((_DWORD *)v7 + 2) ) { ++*((_WORD *)v7 + 12); *((_WORD *)v7 + 13) += *(_WORD *)(*((_DWORD *)v7 + 2) + 26); } if ( *((_DWORD *)v7 + 3) ) { ++*((_WORD *)v7 + 12); *((_WORD *)v7 + 13) += *(_WORD *)(*((_DWORD *)v7 + 3) + 26); } if ( *((_DWORD *)v7 + 4) ) { ++*((_WORD *)v7 + 12); *((_WORD *)v7 + 13) += *(_WORD *)(*((_DWORD *)v7 + 4) + 26); } if ( *((_DWORD *)v7 + 5) ) { ++*((_WORD *)v7 + 12); result = *((_DWORD *)v7 + 5); *((_WORD *)v7 + 13) += *(_WORD *)(result + 26); } } else { v9 = sub_49D1B0(a2, ((unsigned __int16)a4 + v6) / 2, (v8 + (unsigned __int16)a5) / 2) == 0; result = 0; *((_DWORD *)v7 + 5) = 0; *((_DWORD *)v7 + 4) = 0; *((_DWORD *)v7 + 3) = 0; *((_WORD *)v7 + 13) = v9; *((_DWORD *)v7 + 2) = 0; *((_WORD *)v7 + 12) = 0; } return result; } //----- (00438980) -------------------------------------------------------- int __thiscall sub_438980(void *this) { void *v1; // esi@1 int v2; // ecx@1 int result; // eax@1 int v4; // ecx@2 int v5; // edi@2 int v6; // ecx@4 int v7; // ecx@6 int v8; // ecx@8 v1 = this; v2 = *(_DWORD *)this; result = *(_DWORD *)v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)v1 + 4) = *(_DWORD *)v1; *((_DWORD *)v1 + 1) = 0; if ( result != *(_DWORD *)v1 ) { do { v4 = *(_DWORD *)(result + 16); v5 = *(_DWORD *)result; if ( v4 ) *(_BYTE *)(v4 + 28) = 0; v6 = *(_DWORD *)(result + 20); if ( v6 ) *(_BYTE *)(v6 + 28) = 0; v7 = *(_DWORD *)(result + 24); if ( v7 ) *(_BYTE *)(v7 + 28) = 0; v8 = *(_DWORD *)(result + 28); if ( v8 ) *(_BYTE *)(v8 + 28) = 0; operator delete((void *)result); result = v5; } while ( v5 != *(_DWORD *)v1 ); } return result; } //----- (004389E0) -------------------------------------------------------- void __thiscall sub_4389E0(void *this, int (__cdecl *a2)(_DWORD)) { void *v2; // edi@1 int v3; // esi@1 int v4; // ecx@3 int v5; // eax@3 int v6; // ecx@3 int v7; // ecx@5 int v8; // ecx@7 int v9; // ecx@9 int v10; // [sp+8h] [bp-4h]@1 v2 = this; v3 = **(_DWORD **)this; v10 = *(_DWORD *)this; while ( v3 != v10 ) { if ( (unsigned __int8)a2(v3 + 8) ) { v4 = *(_DWORD *)(v3 + 4); v5 = v3; v3 = *(_DWORD *)v3; *(_DWORD *)v4 = v3; *(_DWORD *)(v3 + 4) = v4; v6 = *(_DWORD *)(v5 + 16); if ( v6 ) *(_BYTE *)(v6 + 28) = 0; v7 = *(_DWORD *)(v5 + 20); if ( v7 ) *(_BYTE *)(v7 + 28) = 0; v8 = *(_DWORD *)(v5 + 24); if ( v8 ) *(_BYTE *)(v8 + 28) = 0; v9 = *(_DWORD *)(v5 + 28); if ( v9 ) *(_BYTE *)(v9 + 28) = 0; operator delete((void *)v5); --*((_DWORD *)v2 + 1); } else { v3 = *(_DWORD *)v3; } } } //----- (00438A60) -------------------------------------------------------- int __thiscall sub_438A60(int this, int a2, int a3, signed int a4, signed int a5, signed int a6, signed int a7) { unsigned int v7; // esi@1 int v8; // eax@1 int v9; // esi@9 int v10; // edx@9 char *v11; // ebx@9 int v12; // eax@9 void *v14; // ecx@12 char v15; // [sp+10h] [bp-30h]@9 int v16; // [sp+18h] [bp-28h]@9 int v17; // [sp+1Ch] [bp-24h]@9 int v18; // [sp+20h] [bp-20h]@9 int v19; // [sp+24h] [bp-1Ch]@9 char v20; // [sp+2Ch] [bp-14h]@9 int v21; // [sp+30h] [bp-10h]@1 int v22; // [sp+3Ch] [bp-4h]@9 v21 = this; v7 = 0; v8 = this + 8; do { if ( *(_DWORD *)(v8 - 8) == *(_DWORD *)a2 && *(_DWORD *)(v8 - 4) == *(_DWORD *)(a2 + 4) && *(_DWORD *)v8 == *(_DWORD *)(a2 + 8) ) { sub_49D420((void *)(a3 + 1072), a3); return *(_DWORD *)(v21 + 16 * v7 + 12); } if ( !*(_DWORD *)(v8 + 4) ) break; ++v7; v8 += 16; } while ( v7 < 0x40 ); if ( v7 >= 0x40 ) { sub_639100(&unk_86DDD8, (int)"BlockDistribute::BlockDistributeManager::bdm_Find : Too many BlockDistribute", 0); loc_6391B0("BlockDistribute::BlockDistributeManager::bdm_Find"); this = v21; } v9 = this + 16 * v7; *(_DWORD *)v9 = *(_DWORD *)a2; *(_DWORD *)(v9 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(a2 + 8); sub_49D420((void *)(a3 + 1072), a3); v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; v10 = *((_DWORD *)dword_8B3298 + 1); v22 = 0; v11 = (char *)dword_8B3298 + 4; v12 = loc_438660(&dword_8B3298, dword_8B3298, v10, &v15); if ( (unsigned int)((char *)&unk_7FFFFFE - dword_8B329C) < 1 ) sub_65178B((int)"list too long"); ++dword_8B329C; *(_DWORD *)v11 = v12; **(_DWORD **)(v12 + 4) = v12; v14 = (void *)(*((_DWORD *)dword_8B3298 + 1) + 8); *(_BYTE *)(*((_DWORD *)dword_8B3298 + 1) + 36) = 1; v22 = -1; *(_DWORD *)(v9 + 12) = v14; sub_438770(v14, (void *)a3, a4, a5, a6, a7); sub_4389E0(&dword_8B3298, (int (__cdecl *)(_DWORD))sub_438440); return *(_DWORD *)(v9 + 12); } // 8B329C: using guessed type int dword_8B329C; //----- (00438BE0) -------------------------------------------------------- char __thiscall sub_438BE0(void *this, int a2) { void *v2; // esi@1 FILE *v3; // edi@1 __int32 v4; // ebx@3 signed int v5; // ecx@19 signed int v6; // ebx@20 void *v7; // eax@22 int v9; // edi@24 void *v10; // ebx@25 FILE *v11; // ebx@30 int v12; // edi@32 int v13; // eax@34 unsigned __int8 v14; // cl@35 int i; // ebx@41 int v16; // edi@42 signed int v17; // eax@45 FILE *v18; // [sp+10h] [bp-2784h]@1 int v19; // [sp+10h] [bp-2784h]@43 char v20; // [sp+14h] [bp-2780h]@12 int v21; // [sp+18h] [bp-277Ch]@19 int v22; // [sp+1Ch] [bp-2778h]@20 unsigned __int16 v23; // [sp+22h] [bp-2772h]@16 int v24; // [sp+24h] [bp-2770h]@14 __int16 v25; // [sp+40h] [bp-2754h]@3 int v26; // [sp+42h] [bp-2752h]@7 __int16 v27; // [sp+46h] [bp-274Eh]@9 __int16 v28; // [sp+48h] [bp-274Ch]@10 __int32 v29; // [sp+4Ah] [bp-274Ah]@32 char v30; // [sp+50h] [bp-2744h]@30 char v31[1022]; // [sp+52h] [bp-2742h]@35 char v32[8000]; // [sp+450h] [bp-2344h]@33 char v33; // [sp+2390h] [bp-404h]@1 unsigned int v34; // [sp+2790h] [bp-4h]@1 int v35; // [sp+2794h] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v2 = this; sprintf(&v33, "../9Data/%sAreaBMP/%s.bmp", "Shine/", a2); v3 = fopen(&v33, "rb"); v18 = v3; if ( !v3 ) { sub_639100(&unk_86DDD8, (int)"SBmpDataInfo::bdi_LoadBmpFile : BMP file name error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } fseek(v3, 0, 2); v4 = ftell(v3); fseek(v3, 0, 0); if ( fread(&v25, 0xEu, 1u, v3) != 1 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file header info error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } if ( v25 != 19778 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file - \"BM\" error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } if ( v26 != v4 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file - File Size Error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } if ( v27 || v28 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file - Reserved Error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } if ( fread(&v20, 0x28u, 1u, v3) != 1 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file info error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } if ( v24 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file - biCompression Error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } if ( v23 != 1 && v23 != 8 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file bit error - biBitCount ", v23); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } v5 = v21; if ( v21 > 8000 || (v6 = v22, v22 > 8000) ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file size error ", 8000); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); v6 = v22; v5 = v21; } *(_DWORD *)v2 = v6 / 2; *((_DWORD *)v2 + 1) = v5 / 2; *((_DWORD *)v2 + 3) = v6; *((_DWORD *)v2 + 4) = v5; v7 = malloc(4 * v6); *((_DWORD *)v2 + 5) = v7; if ( !v7 ) return 0; v9 = 0; if ( v6 > 0 ) { v10 = v7; do { *((_DWORD *)v10 + v9) = malloc(*((_DWORD *)v2 + 4)); v10 = (void *)*((_DWORD *)v2 + 5); if ( !*((_DWORD *)v10 + v9) ) return 0; ++v9; } while ( v9 < *((_DWORD *)v2 + 3) ); } if ( v23 != 1 && v23 == 8 ) { v11 = v18; if ( fread(&v30, 4u, 0x100u, v18) != 256 ) { sub_639100(&unk_86DDD8, (int)"BmpDataInfo::bdi_LoadBmpFile : BMP file - RGBQuad Error", 0); loc_6391B0("BmpDataInfo::bdi_LoadBmpFile"); } fseek(v18, v29, 0); v12 = 0; if ( *((_DWORD *)v2 + 3) > 0 ) { while ( fread(v32, 4 * (*((_DWORD *)v2 + 4) + 3) / 4, 1u, v11) == 1 ) { v13 = 0; if ( *((_DWORD *)v2 + 4) > 0 ) { do { v14 = v31[4 * (unsigned __int8)v32[v13]]; if ( v14 <= 0xC8u ) *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v2 + 5) + 4 * v12) - v13 + *((_DWORD *)v2 + 4) - 1) = v14 >> 1; else *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v2 + 5) + 4 * v12) - v13 + *((_DWORD *)v2 + 4) - 1) = 100; ++v13; } while ( v13 < *((_DWORD *)v2 + 4) ); v11 = v18; } ++v12; if ( v12 >= *((_DWORD *)v2 + 3) ) goto LABEL_41; } return 0; } } LABEL_41: fclose(v18); for ( i = 0; i < *((_DWORD *)v2 + 3); ++i ) { v16 = 0; if ( *((_DWORD *)v2 + 4) > 0 ) { v19 = *((_DWORD *)v2 + 5) + 4 * i; do { if ( *(_BYTE *)(v16 + *(_DWORD *)v19) == 1 ) { v17 = (signed int)sqrt((double)((*(_DWORD *)v2 - i) * (*(_DWORD *)v2 - i) + (*((_DWORD *)v2 + 1) - v16) * (*((_DWORD *)v2 + 1) - v16))); if ( v17 > *((_DWORD *)v2 + 2) ) *((_DWORD *)v2 + 2) = v17; } ++v16; } while ( v16 < *((_DWORD *)v2 + 4) ); } } return 1; } // 86FEB8: using guessed type int __security_cookie; // 438BE0: using guessed type char var_2344[8000]; // 438BE0: using guessed type char var_2742[1022]; //----- (00439010) -------------------------------------------------------- int __thiscall sub_439010(int this, int a2) { int v2; // esi@1 signed int v3; // eax@1 int result; // eax@2 v2 = this; v3 = sub_639670((void *)(this + 16), a2); if ( (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2 > (unsigned int)v3 ) result = *(_DWORD *)(*(_DWORD *)v2 + 4 * v3); else result = 0; return result; } //----- (00439040) -------------------------------------------------------- char __thiscall sub_439040(void *this) { int v1; // esi@1 unsigned int v2; // ecx@3 int v3; // edi@6 int v4; // eax@6 void *v5; // ebx@7 unsigned int v6; // eax@11 int v7; // edx@12 int v8; // ecx@13 signed int v9; // edi@13 int v10; // eax@14 int v11; // eax@15 int v12; // ecx@15 unsigned int v13; // ecx@17 int v14; // eax@22 int v15; // ecx@24 int v16; // eax@25 int v17; // eax@26 int v18; // ecx@26 unsigned int v19; // ecx@28 int v20; // eax@33 void *v22; // [sp+Ch] [bp-58h]@9 unsigned int v23; // [sp+10h] [bp-54h]@3 char v24; // [sp+14h] [bp-50h]@1 int v25; // [sp+48h] [bp-1Ch]@4 unsigned int v26; // [sp+54h] [bp-10h]@1 int v27; // [sp+60h] [bp-4h]@1 int v28; // [sp+64h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v1 = (int)this; sub_626B20((int)&v24); v27 = 0; if ( !sub_627480(&v24, "../9Data/Shine/BMP.shn", 44, 64) ) { sub_639100(&unk_86DDD8, (int)"Fail to read BMPIndex.shn", 0); loc_6391B0("BmpDataBox::bdb_ReadData"); } v2 = 0; v23 = 0; while ( v25 && v2 < *(_DWORD *)(v25 + 40) ) { v3 = sub_626BC0((int)&v24, v2); v4 = operator new(0x18u); if ( v4 ) { *(_DWORD *)v4 = 0; *(_DWORD *)(v4 + 4) = 0; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 12) = 0; *(_DWORD *)(v4 + 16) = 0; *(_DWORD *)(v4 + 20) = 0; v5 = (void *)v4; } else { v5 = 0; } v22 = v5; if ( !sub_438BE0(v5, v3 + 32) ) { sub_639100(&unk_86DDD8, (int)"BmpDataBox::bdb_ReadData : BMP file Load Fail", 0); loc_6391B0("BmpDataBox::bdb_ReadData"); } sub_639590((void *)(v1 + 16), (unsigned __int8 *)v3, v23); v6 = *(_DWORD *)(v1 + 4); if ( (unsigned int)&v22 >= v6 || (v7 = *(_DWORD *)v1, *(_DWORD *)v1 > (unsigned int)&v22) ) { v15 = *(_DWORD *)(v1 + 8); if ( v6 == v15 ) { v16 = (signed int)(v6 - *(_DWORD *)v1) >> 2; if ( (unsigned int)v16 > 0x3FFFFFFE ) LABEL_36: sub_65178B((int)"vector too long"); v17 = v16 + 1; v18 = (v15 - *(_DWORD *)v1) >> 2; if ( v17 > (unsigned int)v18 ) { if ( 1073741823 - ((unsigned int)v18 >> 1) >= v18 ) v19 = ((unsigned int)v18 >> 1) + v18; else v19 = 0; if ( v19 < v17 ) v19 = v17; sub_5839E0(v1, v19); } } v20 = *(_DWORD *)(v1 + 4); if ( v20 ) *(_DWORD *)v20 = v5; LABEL_35: *(_DWORD *)(v1 + 4) += 4; ++v23; v2 = v23; } else { v8 = *(_DWORD *)(v1 + 8); v9 = (signed int)((char *)&v22 - v7) >> 2; if ( v6 == v8 ) { v10 = (signed int)(v6 - v7) >> 2; if ( (unsigned int)v10 > 0x3FFFFFFE ) goto LABEL_36; v11 = v10 + 1; v12 = (v8 - v7) >> 2; if ( v11 > (unsigned int)v12 ) { if ( 1073741823 - ((unsigned int)v12 >> 1) >= v12 ) v13 = ((unsigned int)v12 >> 1) + v12; else v13 = 0; if ( v13 < v11 ) v13 = v11; sub_5839E0(v1, v13); } } v14 = *(_DWORD *)(v1 + 4); if ( !v14 ) goto LABEL_35; *(_DWORD *)v14 = *(_DWORD *)(*(_DWORD *)v1 + 4 * v9); *(_DWORD *)(v1 + 4) += 4; ++v23; v2 = v23; } } v27 = -1; sub_626C10((int)&v24); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00439250) -------------------------------------------------------- int __thiscall sub_439250(int this) { int v1; // eax@1 int result; // eax@2 int v3; // eax@3 v1 = *(_DWORD *)(this + 12); if ( v1 == -1 ) { *(_DWORD *)(this + 12) = 0; result = 0; } else { v3 = v1 + 1; *(_DWORD *)(this + 12) = v3; if ( (unsigned int)v3 >= 0xFFFFFFFE ) *(_DWORD *)(this + 12) = 0; result = *(_DWORD *)(this + 12); } return result; } //----- (00439280) -------------------------------------------------------- void *__thiscall sub_439280(void *this) { void *v1; // esi@1 void **v2; // ecx@1 void *result; // eax@1 void *v4; // edi@2 v1 = this; v2 = *(void ***)this; result = *v2; *v2 = v2; *(_DWORD *)(*(_DWORD *)v1 + 4) = *(_DWORD *)v1; *((_DWORD *)v1 + 1) = 0; if ( result != *(void **)v1 ) { do { v4 = *(void **)result; operator delete(result); result = v4; } while ( v4 != *(void **)v1 ); } return result; } //----- (004393A0) -------------------------------------------------------- int __thiscall sub_4393A0(void *this, int a2) { int v3; // ecx@4 int v4; // eax@4 char v5; // [sp+0h] [bp-104h]@2 unsigned int v6; // [sp+100h] [bp-4h]@1 int v7; // [sp+104h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( a2 == -1 ) { sprintf(&v5, "BoothItemManager::GetItem - The booth item handle value is invalid."); sub_6390B0(&unk_86DDD8, (int)&v5, (int)byte_6A492E); return 0; } v3 = *(_DWORD *)this; v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == v3 ) return 0; while ( *(_DWORD *)(v4 + 9) != a2 ) { v4 = *(_DWORD *)v4; if ( v4 == v3 ) return 0; } return v4 + 8; } // 86FEB8: using guessed type int __security_cookie; //----- (00439430) -------------------------------------------------------- int __thiscall sub_439430(void *this, __int16 a2, int a3, int a4) { int result; // eax@3 int v5; // ecx@4 int v6; // eax@4 int v7; // ecx@8 int v8; // eax@8 char v9; // [sp+0h] [bp-104h]@2 unsigned int v10; // [sp+100h] [bp-4h]@1 int v11; // [sp+104h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; if ( a2 == -1 ) { sprintf(&v9, "BoothStoreManager::GetStoreItem - The booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v9, (int)byte_6A492E); return 0; } v5 = *(_DWORD *)this; v6 = *(_DWORD *)v5; if ( *(_DWORD *)v5 == v5 ) return 0; while ( *(_WORD *)(v6 + 8) != a2 ) { v6 = *(_DWORD *)v6; if ( v6 == v5 ) return 0; } v7 = *(_DWORD *)(v6 + 20); v8 = *(_DWORD *)v7; if ( *(_DWORD *)v7 == v7 ) { LABEL_12: result = 0; } else { while ( *(_DWORD *)(v8 + 8) != a3 || *(_DWORD *)(v8 + 12) != a4 ) { v8 = *(_DWORD *)v8; if ( v8 == v7 ) goto LABEL_12; } result = v8 + 8; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00439500) -------------------------------------------------------- int __thiscall sub_439500(void *this, unsigned __int16 a2) { int v2; // edx@2 int v3; // ecx@3 int v4; // eax@3 char v6; // [sp+0h] [bp-204h]@6 char v7; // [sp+100h] [bp-104h]@2 unsigned int v8; // [sp+200h] [bp-4h]@1 int v9; // [sp+204h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; if ( a2 == -1 ) { sprintf(&v7, "BoothStoreManager::GetStorePosition - The target booth owner handle value is Invalid."); v2 = (int)&v7; LABEL_7: sub_6390B0(&unk_86DDD8, v2, (int)byte_6A492E); return 0; } v3 = *(_DWORD *)this; v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == v3 ) { LABEL_6: sprintf(&v6, "BoothStoreManager::GetStorePosition - Cannot find the booth. (nBoothOwnerHandle : %d)", a2); v2 = (int)&v6; goto LABEL_7; } while ( *(_WORD *)(v4 + 8) != a2 ) { v4 = *(_DWORD *)v4; if ( v4 == v3 ) goto LABEL_6; } return v4 + 10; } // 86FEB8: using guessed type int __security_cookie; //----- (004395B0) -------------------------------------------------------- char __thiscall sub_4395B0(void *this, __int16 a2) { int v3; // ecx@4 int v4; // eax@4 char v5; // [sp+0h] [bp-104h]@2 unsigned int v6; // [sp+100h] [bp-4h]@1 int v7; // [sp+104h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( a2 == -1 ) { sprintf(&v5, "BoothStoreManager::CheckStoreIsOpening - The target booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v5, (int)byte_6A492E); return 0; } v3 = *(_DWORD *)this; v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == v3 ) return 0; while ( *(_WORD *)(v4 + 8) != a2 ) { v4 = *(_DWORD *)v4; if ( v4 == v3 ) return 0; } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00439650) -------------------------------------------------------- signed int __thiscall sub_439650(void *this, __int16 a2, int a3) { int v4; // eax@7 int v5; // eax@11 int v6; // edx@11 char *v7; // eax@15 int v8; // ecx@17 int v9; // eax@17 if ( a2 == -1 ) return 12753; if ( a3 == -1 ) return 12754; if ( !this ) return 12751; v4 = **(_DWORD **)this; if ( v4 == *(_DWORD *)this ) return 12755; while ( *(_WORD *)(v4 + 8) != a2 ) { v4 = *(_DWORD *)v4; if ( v4 == *(_DWORD *)this ) return 12755; } v5 = *(_DWORD *)(v4 + 20); v6 = *(_DWORD *)v5; if ( *(_DWORD *)v5 == v5 ) return 12756; while ( *(_DWORD *)(v6 + 16) != a3 ) { v6 = *(_DWORD *)v6; if ( v6 == v5 ) return 12756; } v7 = (char *)this + 12; if ( this == (void *)-12 ) return 12748; v8 = *(_DWORD *)v7; v9 = **(_DWORD **)v7; if ( v9 == v8 ) return 12756; while ( *(_DWORD *)(v9 + 9) != a3 ) { v9 = *(_DWORD *)v9; if ( v9 == v8 ) return 12756; } return 12744; } //----- (00439710) -------------------------------------------------------- int __thiscall sub_439710(void *this, unsigned __int16 a2) { int result; // eax@2 if ( a2 == -1 ) result = 0; else result = sub_439500(this, a2); return result; } //----- (00439730) -------------------------------------------------------- char __thiscall sub_439730(void *this, __int16 a2) { char result; // al@2 if ( a2 == -1 ) result = 0; else result = sub_4395B0(this, a2); return result; } //----- (00439750) -------------------------------------------------------- int __thiscall sub_439750(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@3 __time32_t v6; // eax@3 int v7; // eax@10 signed __int16 v8; // cx@11 int v9; // eax@13 int v10; // eax@14 int v11; // eax@16 int v12; // eax@18 int v13; // ecx@18 int v14; // esi@18 int v15; // ebx@18 bool v16; // zf@22 int v17; // eax@24 char v18; // al@29 int v19; // esi@30 int v20; // ecx@30 int v21; // edx@30 __int16 v22; // ST04_2@30 int v23; // ST00_4@30 void *v24; // eax@30 unsigned __int8 v25; // al@30 int v26; // eax@30 int v27; // ebx@31 void *v28; // ebx@33 int v29; // eax@33 int v30; // eax@34 int v31; // ebx@45 int v33; // [sp-8h] [bp-32Ch]@2 int v34; // [sp-8h] [bp-32Ch]@22 unsigned int v35; // [sp-4h] [bp-328h]@1 int v36; // [sp+10h] [bp-314h]@18 int v37; // [sp+14h] [bp-310h]@26 void *v38; // [sp+18h] [bp-30Ch]@3 int v39; // [sp+1Ch] [bp-308h]@18 int v40; // [sp+20h] [bp-304h]@24 int v41; // [sp+20h] [bp-304h]@34 void *v42; // [sp+24h] [bp-300h]@1 int v43; // [sp+28h] [bp-2FCh]@18 char v44; // [sp+2Fh] [bp-2F5h]@18 int v45; // [sp+30h] [bp-2F4h]@30 int v46; // [sp+34h] [bp-2F0h]@30 __int16 v47; // [sp+38h] [bp-2ECh]@30 char v48; // [sp+3Ah] [bp-2EAh]@30 char v49; // [sp+9Eh] [bp-286h]@30 char v50; // [sp+A0h] [bp-284h]@30 char v51; // [sp+114h] [bp-210h]@23 char v52; // [sp+214h] [bp-110h]@25 unsigned int v53; // [sp+314h] [bp-10h]@1 int v54; // [sp+320h] [bp-4h]@1 int v55; // [sp+324h] [bp+0h]@1 v53 = (unsigned int)&v55 ^ __security_cookie; v35 = (unsigned int)&v55 ^ __security_cookie; v4 = (int)this; v42 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ"; dword_750AB8[dword_750CB8++] = -1; v54 = 0; if ( a2 ) { v5 = off_849C18; *(_DWORD *)off_849C18 = 835217428; v38 = v5; *((_BYTE *)v5 + 4) = 0; v6 = _time32(0); if ( *(_BYTE *)(a2 + 7) == 1 ) { if ( v6 - *(_DWORD *)(v4 + 161748) < 3 ) goto LABEL_5; *(_DWORD *)(v4 + 161748) = v6; } else { if ( v6 - *(_DWORD *)(v4 + 161752) < 3 ) { LABEL_5: *((_WORD *)v5 + 1) = 12760; if ( !sub_4C81E0(&off_849C18, 5) ) { LABEL_6: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ : Packet Too Long", 5); LABEL_49: --dword_750CB8; v33 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ"; v54 = -1; return sub_467660((int)&unk_D020420, v33); } goto LABEL_47; } *(_DWORD *)(v4 + 161752) = v6; } v7 = sub_4012C0(v4); if ( !v7 ) { v8 = 12745; LABEL_12: *((_WORD *)v5 + 1) = v8; if ( !sub_4C81E0(&off_849C18, 5) ) goto LABEL_6; v9 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v4 + 764))(v4, v35); LABEL_48: (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 12))(v9, v4); goto LABEL_49; } v10 = v7 + 468; if ( !v10 ) { v8 = 12746; goto LABEL_12; } v11 = v10 + 12; if ( !v11 ) { v8 = 12747; goto LABEL_12; } v12 = *(_DWORD *)v11; v13 = (int)((char *)v5 + 5); v14 = *(_DWORD *)v12; v39 = v13; v15 = v13; v44 = 1; v36 = v12; v43 = *(_DWORD *)v12; if ( *(_DWORD *)v12 == v12 ) { LABEL_43: if ( !*((_BYTE *)v38 + 4) && v44 != 1 ) goto LABEL_49; v31 = v15 - v13; if ( !sub_4C81E0(&off_849C18, v31 + 5) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ : Packet Too Long", v31 + 5); goto LABEL_49; } LABEL_47: v9 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v4 + 764))(v4, v35); goto LABEL_48; } while ( 1 ) { if ( *(_WORD *)(v14 + 23) == -1 ) goto LABEL_41; v16 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v14 + 23)) == 0; v34 = *(_WORD *)(v14 + 23); if ( v16 ) { sprintf( &v51, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ - ÇØ´ç ¾ÆÀÌÅÛ Á¤º¸¸¦ ãÀ» ¼", v34); sub_6390B0(&unk_86DDD8, (int)&v51, (int)byte_6A492E); goto LABEL_41; } v17 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v34); v40 = v17; if ( !v17 ) { sprintf( &v52, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ - ÇØ´ç ¾ÆÀÌÅÛÀÇ ItemInfo °¡ ¾", *(_WORD *)(v14 + 23)); sub_6390B0(&unk_86DDD8, (int)&v52, (int)byte_6A492E); goto LABEL_41; } v37 = *(_DWORD *)(a2 + 2); if ( !v37 || sub_62A9B0((int)dword_133591B8, *(_DWORD *)(v17 + 114)) == v37 ) { if ( *(_BYTE *)(a2 + 6) != 1 ) break; v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1244))(v4); if ( sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v40 + 207), v18) ) break; } LABEL_41: v43 = *(_DWORD *)v14; if ( *(_DWORD *)v14 == v36 ) { v13 = v39; goto LABEL_43; } v14 = *(_DWORD *)v14; } sub_641100((int)&v50); v45 = 0; v46 = 0; v47 = *(_WORD *)(v14 + 23); v19 = v14 + 25; memcpy(&v48, (const void *)v19, 0x64u); v20 = *(_DWORD *)(v43 + 9); v49 = *(_BYTE *)(v19 + 100); *(_DWORD *)(v15 + 1) = v20; *(_WORD *)(v15 + 5) = *(_WORD *)(v43 + 13); *(_DWORD *)(v15 + 7) = *(_DWORD *)(v43 + 15); v21 = *(_DWORD *)(v43 + 19); LOBYTE(v54) = 1; *(_DWORD *)(v15 + 11) = v21; sub_63F850((int)&v50, &v45); v22 = sub_63FD50((int)&v50); v23 = sub_43BBE0((int)&v50); v24 = sub_5CF620(&v50); v25 = sub_63D090(v24, v23, v22, v15 + 15) - (v15 + 15) + 14; *(_BYTE *)v15 = v25; ++*((_BYTE *)v38 + 4); v15 += v25 + 1; v26 = v15 - v39; if ( *((_BYTE *)v38 + 4) < 0xFAu ) { v30 = v26 + 5; v41 = v30; if ( (unsigned int)v30 <= 0x1D4C ) { LABEL_40: LOBYTE(v54) = 0; nullsub_2(&v50); v14 = v43; v4 = (int)v42; goto LABEL_41; } if ( !sub_4C81E0(&off_849C18, v30) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ : Packet Too Long", v41); goto LABEL_39; } v28 = v42; v29 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v42 + 764))(v42, v35); } else { v27 = v26 + 5; if ( !sub_4C81E0(&off_849C18, v26 + 5) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ : Packet Too Long", v27); LABEL_39: v44 = 0; *((_BYTE *)v38 + 4) = 0; v15 = v39; goto LABEL_40; } v28 = v42; v29 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v42 + 764))(v42, v35); } v35 = (unsigned int)&off_849C18; (*(void (__thiscall **)(int, void *))(*(_DWORD *)v29 + 12))(v29, v28); goto LABEL_39; } --dword_750CB8; v54 = -1; v33 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_ITEM_LIST_CATEGORIZED_REQ"; return sub_467660((int)&unk_D020420, v33); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (00439C20) -------------------------------------------------------- int __thiscall sub_439C20(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 int v6; // ebx@1 int v7; // eax@3 int v8; // eax@6 __int16 v9; // ax@10 int v10; // eax@12 int v12; // [sp-4h] [bp-24h]@5 void *v13; // [sp+28h] [bp+8h]@8 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_BOOTH_POSITION_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_BOOTH_POSITION_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = a2; *(_WORD *)off_849C18 = 26646; if ( *(_WORD *)(a2 + 6) == -1 ) { *((_WORD *)v5 + 1) = 12753; if ( sub_4C81E0(&off_849C18, 14) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); LABEL_18: (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); goto LABEL_19; } } else { if ( *(_DWORD *)(a2 + 2) == -1 ) { *((_WORD *)v5 + 1) = 12754; v12 = 14; } else { v8 = sub_4012C0(v4); if ( v8 ) { v13 = (void *)(v8 + 468); if ( v8 == -468 ) { *((_WORD *)v5 + 1) = 12746; v12 = 14; } else { v9 = sub_439650((void *)(v8 + 468), *(_WORD *)(v6 + 6), *(_DWORD *)(v6 + 2)); if ( v9 == 12744 ) { v10 = sub_439710(v13, *(_WORD *)(v6 + 6)); v12 = 14; if ( v10 ) { *(_DWORD *)((char *)v5 + 6) = *(_DWORD *)v10; *(_DWORD *)((char *)v5 + 10) = *(_DWORD *)(v10 + 4); *((_WORD *)v5 + 1) = 12744; *((_WORD *)v5 + 2) = *(_WORD *)(v6 + 6); } else { *((_WORD *)v5 + 1) = 12755; } } else { *((_WORD *)v5 + 1) = v9; v12 = 14; } } } else { *((_WORD *)v5 + 1) = 12745; v12 = 14; } } if ( sub_4C81E0(&off_849C18, v12) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); goto LABEL_18; } } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_BOOTH_POSITION_REQ : Packet Too Long", 14); LABEL_19: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_SEARCH_BOOTH_POSITION_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00439DF0) -------------------------------------------------------- int __thiscall sub_439DF0(void *this, int a2, void *a3) { void *v3; // eax@1 void *v4; // esi@1 int v5; // ecx@1 int result; // eax@3 int v7; // [sp+10h] [bp+Ch]@1 v3 = a3; v4 = this; v5 = *(_DWORD *)a3; v7 = *(_DWORD *)a3; if ( v3 != *(void **)v4 ) { **((_DWORD **)v3 + 1) = *(_DWORD *)v3; *(_DWORD *)(*(_DWORD *)v3 + 4) = *((_DWORD *)v3 + 1); operator delete(v3); v5 = v7; --*((_DWORD *)v4 + 1); } result = a2; *(_DWORD *)a2 = v5; return result; } //----- (00439E30) -------------------------------------------------------- int __thiscall sub_439E30(int this, int a2, int a3, int a4, int a5) { int v5; // edi@1 int result; // eax@1 int v7; // eax@3 int v8; // ecx@3 int v9; // [sp+0h] [bp-28h]@1 int v10; // [sp+10h] [bp-18h]@1 int v11; // [sp+14h] [bp-14h]@1 int *v12; // [sp+18h] [bp-10h]@1 int v13; // [sp+24h] [bp-4h]@1 v12 = &v9; v5 = this; v10 = this; result = a3; v11 = a3; v13 = 0; while ( result != a4 ) { v7 = loc_4392C0(v5, a2, *(_DWORD *)(a2 + 4), result + 8); v8 = *(_DWORD *)(v5 + 4); if ( (unsigned int)(357913940 - v8) < 1 ) sub_65178B((int)"list too long"); *(_DWORD *)(v5 + 4) = v8 + 1; *(_DWORD *)(a2 + 4) = v7; **(_DWORD **)(v7 + 4) = v7; result = *(_DWORD *)a3; a3 = *(_DWORD *)a3; } return result; } //----- (00439F00) -------------------------------------------------------- signed int __thiscall sub_439F00(void *this, unsigned __int16 a2, int a3, int a4) { signed int result; // eax@2 int v5; // eax@3 int v6; // esi@3 void **v7; // ecx@7 void *v8; // eax@7 signed int v9; // edi@12 char v10; // [sp+4h] [bp-204h]@6 char v11; // [sp+104h] [bp-104h]@2 unsigned int v12; // [sp+204h] [bp-4h]@1 int v13; // [sp+208h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; if ( a2 == -1 ) { sprintf(&v11, "BoothStoreManager::RemoveItem - The booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v11, (int)byte_6A492E); result = -1; } else { v5 = *(_DWORD *)this; v6 = **(_DWORD **)this; if ( *(_DWORD *)v5 == v5 ) { LABEL_6: sprintf(&v10, "BoothStoreManager::RemoveItem - Cannot find the booth. (nBoothOwnerHandle : %d)", a2); sub_6390B0(&unk_86DDD8, (int)&v10, (int)byte_6A492E); result = -1; } else { while ( *(_WORD *)(v6 + 8) != a2 ) { v6 = *(_DWORD *)v6; if ( v6 == v5 ) goto LABEL_6; } v7 = *(void ***)(v6 + 20); v8 = *v7; if ( *v7 == v7 ) { LABEL_11: sprintf( &v11, "BoothStoreManager::RemoveItem - Cannot find the item. (nBoothOwnerHandle : %d, nItemKey : %X)", a2, a3, a4); sub_6390B0(&unk_86DDD8, (int)&v11, (int)byte_6A492E); result = -1; } else { while ( *((_DWORD *)v8 + 2) != a3 || *((_DWORD *)v8 + 3) != a4 ) { v8 = *(void **)v8; if ( v8 == v7 ) goto LABEL_11; } v9 = *((_DWORD *)v8 + 4); if ( v8 != v7 ) { **((_DWORD **)v8 + 1) = *(_DWORD *)v8; *(_DWORD *)(*(_DWORD *)v8 + 4) = *((_DWORD *)v8 + 1); operator delete(v8); --*(_DWORD *)(v6 + 24); } result = v9; } } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0043A070) -------------------------------------------------------- void __thiscall sub_43A070(int this) { int v1; // esi@1 void **v2; // ecx@1 void *v3; // eax@1 void *v4; // edi@2 v1 = this; v2 = *(void ***)(this + 12); v3 = *v2; *v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 12) + 4) = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 16) = 0; if ( v3 != *(void **)(v1 + 12) ) { do { v4 = *(void **)v3; operator delete(v3); v3 = v4; } while ( v4 != *(void **)(v1 + 12) ); } operator delete(*(void **)(v1 + 12)); } //----- (0043A0C0) -------------------------------------------------------- int __thiscall sub_43A0C0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int result; // eax@1 int v5; // ecx@1 v2 = this; v3 = *(_DWORD *)this; result = loc_439330(*(_DWORD *)this, *(_DWORD *)(*(_DWORD *)this + 4), a2); v5 = *((_DWORD *)v2 + 1); if ( (unsigned int)((char *)&unk_22B63CA - v5) < 1 ) sub_65178B((int)"list too long"); *((_DWORD *)v2 + 1) = v5 + 1; *(_DWORD *)(v3 + 4) = result; **(_DWORD **)(result + 4) = result; return result; } //----- (0043A110) -------------------------------------------------------- int __thiscall sub_43A110(void *this, int a2, void *a3) { void *v3; // esi@1 void *v4; // edi@1 int v5; // ecx@1 int result; // eax@3 int v7; // [sp+14h] [bp+Ch]@1 v3 = a3; v4 = this; v5 = *(_DWORD *)a3; v7 = *(_DWORD *)a3; if ( v3 != *(void **)v4 ) { **((_DWORD **)v3 + 1) = *(_DWORD *)v3; *(_DWORD *)(*(_DWORD *)v3 + 4) = *((_DWORD *)v3 + 1); nullsub_2((char *)v3 + 8); operator delete(v3); v5 = v7; --*((_DWORD *)v4 + 1); } result = a2; *(_DWORD *)a2 = v5; return result; } //----- (0043A160) -------------------------------------------------------- void __thiscall sub_43A160(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // ebx@2 v1 = this; v2 = **(_DWORD **)this; **(_DWORD **)this = *(_DWORD *)this; *(_DWORD *)(*(_DWORD *)this + 4) = *(_DWORD *)this; *((_DWORD *)this + 1) = 0; if ( v2 != *(_DWORD *)this ) { do { v3 = *(_DWORD *)v2; nullsub_2((void *)(v2 + 8)); operator delete((void *)v2); v2 = v3; } while ( v3 != *(_DWORD *)v1 ); } } //----- (0043A1A0) -------------------------------------------------------- signed int __thiscall sub_43A1A0(void *this, __int16 a2, int a3, int a4, char 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) { void *v30; // ebx@1 signed int result; // eax@3 unsigned __int16 v32; // si@4 int v33; // edi@7 int v34; // ST08_4@9 int v35; // esi@9 int v36; // [sp+Ch] [bp-2F0h]@1 __int16 v37; // [sp+70h] [bp-28Ch]@1 char v38; // [sp+72h] [bp-28Ah]@1 char v39; // [sp+74h] [bp-288h]@9 int v40; // [sp+75h] [bp-287h]@9 __int16 v41; // [sp+79h] [bp-283h]@9 int v42; // [sp+7Bh] [bp-281h]@9 int v43; // [sp+7Fh] [bp-27Dh]@9 unsigned __int16 v44; // [sp+83h] [bp-279h]@9 char v45; // [sp+85h] [bp-277h]@9 char v46; // [sp+E9h] [bp-213h]@9 char v47; // [sp+ECh] [bp-210h]@8 char v48; // [sp+1ECh] [bp-110h]@2 unsigned int v49; // [sp+2ECh] [bp-10h]@1 int v50; // [sp+2F8h] [bp-4h]@9 int v51; // [sp+2FCh] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v30 = this; memcpy(&v36, &a5, 0x64u); v37 = a30; v38 = BYTE2(a30); if ( a2 == -1 ) { sprintf(&v48, "BoothItemManager::AddItem - The booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v48, (int)byte_6A492E); return -1; } v32 = v36; if ( (_WORD)v36 == -1 ) return -1; if ( sub_418CB0((int)&dword_14D20890, v36) ) { v33 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v32); if ( v33 ) { sub_62A710((int)&v39); v34 = *(_DWORD *)(v33 + 102); v50 = 0; v39 = sub_62A860(v34); v40 = sub_439250((int)v30); v43 = a4; v44 = v32; v41 = a2; v42 = a3; memcpy(&v45, (char *)&v36 + 2, 0x64u); v46 = v38; sub_43A0C0(v30, (int)&v39); v35 = v40; v50 = -1; nullsub_2(&v39); result = v35; } else { sprintf(&v47, "BoothItemManager::AddItem - ÇØ´ç ¾ÆÀÌÅÛÀÇ ItemInfo °¡ ¾", v32); sub_6390B0(&unk_86DDD8, (int)&v47, (int)byte_6A492E); result = -1; } } else { sprintf(&v48, "BoothItemManager::AddItem - ÇØ´ç ¾ÆÀÌÅÛ Á¤º¸¸¦ ãÀ» ¼", v32); sub_6390B0(&unk_86DDD8, (int)&v48, (int)byte_6A492E); result = -1; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (0043A370) -------------------------------------------------------- char __thiscall sub_43A370(void *this, int a2) { void *v2; // edi@1 char result; // al@2 void *v4; // eax@3 void *v5; // esi@3 char v6; // [sp+4h] [bp-104h]@2 unsigned int v7; // [sp+104h] [bp-4h]@1 int v8; // [sp+108h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = this; if ( a2 == -1 ) { sprintf(&v6, "BoothItemManager::RemoveItem - The target item handle value is invalid."); sub_6390B0(&unk_86DDD8, (int)&v6, (int)byte_6A492E); result = 0; } else { v4 = *(void **)this; v5 = (void *)**(_DWORD **)this; if ( *(void **)v4 == v4 ) { LABEL_6: result = 0; } else { while ( *(_DWORD *)((char *)v5 + 9) != a2 ) { v5 = *(void **)v5; if ( v5 == v4 ) goto LABEL_6; } if ( v5 != v4 ) { **((_DWORD **)v5 + 1) = *(_DWORD *)v5; *(_DWORD *)(*(_DWORD *)v5 + 4) = *((_DWORD *)v5 + 1); nullsub_2((char *)v5 + 8); operator delete(v5); --*((_DWORD *)v2 + 1); } result = 1; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0043A430) -------------------------------------------------------- char __thiscall sub_43A430(void *this, __int16 a2) { void *v2; // ebx@1 char result; // al@2 int v4; // eax@3 int v5; // esi@3 int v6; // edi@6 int v7; // [sp+4h] [bp-10Ch]@3 int v8; // [sp+8h] [bp-108h]@3 char v9; // [sp+Ch] [bp-104h]@2 unsigned int v10; // [sp+10Ch] [bp-4h]@1 int v11; // [sp+110h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; if ( a2 == -1 ) { sprintf(&v9, "BoothItemManager::RemoveItemsOfOneStore - The booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v9, (int)byte_6A492E); result = 0; } else { v4 = *(_DWORD *)this; v5 = **(_DWORD **)this; v8 = 0; v7 = *(_DWORD *)this; if ( v5 != *(_DWORD *)this ) { do { if ( *(_WORD *)(v5 + 13) == a2 ) { v6 = *(_DWORD *)v5; if ( v5 != *(_DWORD *)v2 ) { **(_DWORD **)(v5 + 4) = v6; *(_DWORD *)(*(_DWORD *)v5 + 4) = *(_DWORD *)(v5 + 4); nullsub_2((void *)(v5 + 8)); operator delete((void *)v5); v4 = v7; --*((_DWORD *)v2 + 1); } ++v8; v5 = v6; } else { v5 = *(_DWORD *)v5; } } while ( v5 != v4 ); } result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0043A510) -------------------------------------------------------- char __userpurge sub_43A510(int a1, int a2, unsigned __int16 a3, int a4, int a5, int a6) { int v7; // ecx@4 int v8; // ecx@5 int v9; // eax@5 int v10; // ST0C_4@10 int v11; // edi@10 int v12; // esi@10 int v13; // eax@10 int v14; // eax@10 int v15; // ecx@10 int v16; // [sp+0h] [bp-210h]@10 int v17; // [sp+4h] [bp-20Ch]@10 int v18; // [sp+8h] [bp-208h]@10 char v19; // [sp+Ch] [bp-204h]@8 char v20; // [sp+10Ch] [bp-104h]@2 unsigned int v21; // [sp+20Ch] [bp-4h]@1 int v22; // [sp+210h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; if ( a3 == -1 ) { sprintf(&v20, "BoothStoreManager::AddItem - The booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v20, (int)byte_6A492E); return 0; } if ( a6 == -1 ) { sprintf(&v20, "BoothStoreManager::AddItem - The item handle value is Invalid."); v7 = (int)&v20; LABEL_9: sub_6390B0(&unk_86DDD8, v7, (int)byte_6A492E); return 0; } v8 = *(_DWORD *)a1; v9 = *(_DWORD *)v8; if ( *(_DWORD *)v8 == v8 ) { LABEL_8: sprintf(&v19, "BoothStoreManager::AddItem - Cannot find the booth. (nBoothOwnerHandle : %d)", a3); v7 = (int)&v19; goto LABEL_9; } while ( *(_WORD *)(v9 + 8) != a3 ) { v9 = *(_DWORD *)v9; if ( v9 == v8 ) goto LABEL_8; } v10 = a2; v11 = *(_DWORD *)(v9 + 20); v18 = a6; v12 = v9 + 20; v13 = *(_DWORD *)(v11 + 4); v16 = a4; v17 = a5; v14 = loc_4392C0(v12, v11, v13, &v16, v10); v15 = *(_DWORD *)(v12 + 4); if ( (unsigned int)(357913940 - v15) < 1 ) sub_65178B((int)"list too long"); *(_DWORD *)(v12 + 4) = v15 + 1; *(_DWORD *)(v11 + 4) = v14; **(_DWORD **)(v14 + 4) = v14; return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0043A660) -------------------------------------------------------- char __thiscall sub_43A660(int this, unsigned __int16 a2, int a3, int a4, int a5, int a6, char 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, int a31, int a32) { char result; // al@2 int v33; // esi@3 char v34; // [sp-68h] [bp-280h]@3 int v35; // [sp-64h] [bp-27Ch]@3 int v36; // [sp-60h] [bp-278h]@3 int v37; // [sp-5Ch] [bp-274h]@3 int v38; // [sp-58h] [bp-270h]@3 int v39; // [sp-54h] [bp-26Ch]@3 int v40; // [sp-50h] [bp-268h]@3 int v41; // [sp-4Ch] [bp-264h]@3 int v42; // [sp-48h] [bp-260h]@3 int v43; // [sp-44h] [bp-25Ch]@3 int v44; // [sp-40h] [bp-258h]@3 int v45; // [sp-3Ch] [bp-254h]@3 int v46; // [sp-38h] [bp-250h]@3 int v47; // [sp-34h] [bp-24Ch]@3 int v48; // [sp-30h] [bp-248h]@3 int v49; // [sp-2Ch] [bp-244h]@3 int v50; // [sp-28h] [bp-240h]@3 int v51; // [sp-24h] [bp-23Ch]@3 int v52; // [sp-20h] [bp-238h]@3 int v53; // [sp-1Ch] [bp-234h]@3 int v54; // [sp-18h] [bp-230h]@3 int v55; // [sp-14h] [bp-22Ch]@3 int v56; // [sp-10h] [bp-228h]@3 int v57; // [sp-Ch] [bp-224h]@3 int v58; // [sp-8h] [bp-220h]@3 __int16 v59; // [sp-4h] [bp-21Ch]@3 char v60; // [sp-2h] [bp-21Ah]@3 char v61; // [sp-1h] [bp-219h]@5 int v62; // [sp+Ch] [bp-20Ch]@1 void *v63; // [sp+10h] [bp-208h]@3 char v64; // [sp+14h] [bp-204h]@7 char v65; // [sp+114h] [bp-104h]@2 unsigned int v66; // [sp+214h] [bp-4h]@1 int v67; // [sp+218h] [bp+0h]@1 v66 = (unsigned int)&v67 ^ __security_cookie; v62 = this; if ( a2 == -1 ) { sprintf(&v65, "BoothManager::AddItem - Invalid Booth Owner Handle."); sub_6390B0(&unk_86DDD8, (int)&v65, (int)byte_6A492E); result = 0; } else { memcpy(&v34, &a7, 0x64u); v59 = a32; v63 = (void *)(this + 12); v60 = BYTE2(a32); v33 = sub_43A1A0( (void *)(this + 12), a2, a5, a6, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, *(int *)&v59); if ( v33 == -1 ) { sprintf(&v65, "BoothManager::AddItem - Invalid New Booth Item Handle is Created."); sub_6390B0(&unk_86DDD8, (int)&v65, (int)byte_6A492E); result = 0; } else { if ( sub_43A510(v62, (int)&v61, a2, a3, a4, v33) || (*(_DWORD *)&v59 = v33, v58 = a2, sprintf( &v65, "BoothManager::AddItem - Failed to Add Item.(nBoothOwnerHandle : %d, nNewItemHandle : %d)", a2, v33), sub_6390B0(&unk_86DDD8, (int)&v65, (int)byte_6A492E), sub_43A370(v63, v33)) ) { result = 1; } else { *(_DWORD *)&v59 = v33; v58 = a2; sprintf( &v64, "BoothManager::AddItem - Failed to Add Item, and Failed to rollback, too.(nBoothOwnerHandle : %d, nNewItemHandle : %d)", a2, v33); sub_6390B0(&unk_86DDD8, (int)&v64, (int)byte_6A492E); sub_6390B0(&unk_86DDD8, (int)"BoothManager::AddItem - Warning : Memory Leak is Available.", (int)byte_6A492E); result = 0; } } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0043A810) -------------------------------------------------------- char __thiscall sub_43A810(void *this, unsigned __int16 a2, int a3, int a4) { void *v4; // edi@1 char result; // al@2 int v6; // eax@3 int v7; // esi@3 char v8; // [sp+8h] [bp-104h]@2 unsigned int v9; // [sp+108h] [bp-4h]@1 int v10; // [sp+10Ch] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v4 = this; if ( a2 == -1 ) { sprintf(&v8, "BoothManager::RemoveItem - Invalid Booth Owner Handle."); sub_6390B0(&unk_86DDD8, (int)&v8, (int)byte_6A492E); result = 0; } else { v6 = sub_439F00(this, a2, a3, a4); v7 = v6; if ( v6 == -1 ) { sprintf(&v8, "BoothManager::RemoveItem - Invalid Del Target Booth Item Handle."); sub_6390B0(&unk_86DDD8, (int)&v8, (int)byte_6A492E); result = 0; } else { if ( !sub_43A370((char *)v4 + 12, v6) ) { sprintf( &v8, "BoothManager::RemoveItem - Failed to Remove Item.(nBoothOwnerHandle : %d, nDeletedItemHandle : %d)", a2, v7); sub_6390B0(&unk_86DDD8, (int)&v8, (int)byte_6A492E); } result = 1; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0043A920) -------------------------------------------------------- char __thiscall sub_43A920(void *this, unsigned __int16 a2, int a3, int a4, unsigned __int16 a5) { void *v5; // esi@1 int v7; // eax@3 int v8; // eax@5 int v9; // esi@5 int v10; // edx@6 int v11; // esi@6 char *v12; // esi@6 int v13; // eax@6 int v14; // edi@6 int v15; // eax@6 int v16; // eax@7 char *v17; // esi@9 char v18; // [sp-6Ch] [bp-380h]@9 int v19; // [sp-68h] [bp-37Ch]@9 int v20; // [sp-64h] [bp-378h]@9 int v21; // [sp-60h] [bp-374h]@9 int v22; // [sp-5Ch] [bp-370h]@9 int v23; // [sp-58h] [bp-36Ch]@9 int v24; // [sp-54h] [bp-368h]@9 int v25; // [sp-50h] [bp-364h]@9 int v26; // [sp-4Ch] [bp-360h]@9 int v27; // [sp-48h] [bp-35Ch]@9 int v28; // [sp-44h] [bp-358h]@9 int v29; // [sp-40h] [bp-354h]@9 int v30; // [sp-3Ch] [bp-350h]@9 int v31; // [sp-38h] [bp-34Ch]@9 int v32; // [sp-34h] [bp-348h]@9 int v33; // [sp-30h] [bp-344h]@9 int v34; // [sp-2Ch] [bp-340h]@9 int v35; // [sp-28h] [bp-33Ch]@9 int v36; // [sp-24h] [bp-338h]@9 int v37; // [sp-20h] [bp-334h]@9 int v38; // [sp-1Ch] [bp-330h]@9 int v39; // [sp-18h] [bp-32Ch]@9 int v40; // [sp-14h] [bp-328h]@9 int v41; // [sp-10h] [bp-324h]@9 int v42; // [sp-Ch] [bp-320h]@9 int v43; // [sp-8h] [bp-31Ch]@6 unsigned int v44; // [sp-4h] [bp-318h]@1 int v45; // [sp+Ch] [bp-308h]@6 int v46; // [sp+10h] [bp-304h]@6 int v47; // [sp+14h] [bp-300h]@1 int v48; // [sp+18h] [bp-2FCh]@1 void *v49; // [sp+1Ch] [bp-2F8h]@1 __int64 v50; // [sp+20h] [bp-2F4h]@6 __int16 v51; // [sp+28h] [bp-2ECh]@6 char v52; // [sp+2Ah] [bp-2EAh]@6 char v53; // [sp+8Eh] [bp-286h]@6 char v54; // [sp+90h] [bp-284h]@6 char v55; // [sp+104h] [bp-210h]@10 char v56; // [sp+204h] [bp-110h]@2 unsigned int v57; // [sp+304h] [bp-10h]@1 int v58; // [sp+310h] [bp-4h]@6 int v59; // [sp+314h] [bp+0h]@1 v57 = (unsigned int)&v59 ^ __security_cookie; v44 = (unsigned int)&v59 ^ __security_cookie; v5 = this; v49 = this; v47 = a3; v48 = a4; if ( a2 == -1 ) { sprintf(&v56, "BoothManager::UpdateItem - Invalid Booth Owner Handle."); sub_6390B0(&unk_86DDD8, (int)&v56, (int)byte_6A492E); return 0; } v7 = sub_439430(this, a2, a3, a4); if ( !v7 || (v8 = sub_4393A0((char *)v5 + 12, *(_DWORD *)(v7 + 8)), (v9 = v8) == 0) ) { sprintf(&v56, "BoothManager::UpdateItem - The item is not found"); sub_6390B0(&unk_86DDD8, (int)&v56, (int)byte_6A492E); return 0; } v10 = *(_DWORD *)(v8 + 11); v45 = *(_DWORD *)(v8 + 7); v46 = v10; sub_641100((int)&v54); v50 = a2; v51 = *(_WORD *)(v9 + 15); v11 = v9 + 17; memcpy(&v52, (const void *)v11, 0x64u); v43 = (int)&v50; v58 = 0; v53 = *(_BYTE *)(v11 + 100); sub_63F850((int)&v54, &v50); v12 = (char *)sub_5CF620(&v54) + 8; v13 = sub_43BBE0((int)&v54); v14 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v13 + 28))(v13, v12); v15 = sub_43BBE0((int)&v54); (*(void (__thiscall **)(int, char *, int))(*(_DWORD *)v15 + 32))(v15, v12, v14 - a5); if ( !sub_43A810(v49, a2, v47, v48) ) { sprintf(&v56, "BoothManager::UpdateItem - The item has not removed during update", v44); v16 = (int)&v56; LABEL_8: sub_6390B0(&unk_86DDD8, v16, (int)byte_6A492E); v58 = -1; nullsub_2(&v54); return 0; } v17 = (char *)sub_5CF620(&v54) + 8; memcpy(&v18, v17, 0x64u); v17 += 100; LOWORD(v43) = *(_WORD *)v17; BYTE2(v43) = v17[2]; if ( !sub_43A660( (int)v49, a2, v47, v48, v45, v46, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) ) { sprintf(&v55, "BoothManager::UpdateItem - The item has not readded during update", v44); v16 = (int)&v55; goto LABEL_8; } v58 = -1; nullsub_2(&v54); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0043AC12) -------------------------------------------------------- void __usercall sub_43AC12(int a1) { sub_439280(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0043AC50) -------------------------------------------------------- void __cdecl sub_43AC50(int a1, int a2) { void **v2; // ecx@1 void *v3; // eax@1 void *v4; // edi@2 v2 = *(void ***)(a2 + 20); v3 = *v2; *v2 = v2; *(_DWORD *)(*(_DWORD *)(a2 + 20) + 4) = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 24) = 0; if ( v3 != *(void **)(a2 + 20) ) { do { v4 = *(void **)v3; operator delete(v3); v3 = v4; } while ( v4 != *(void **)(a2 + 20) ); } operator delete(*(void **)(a2 + 20)); } //----- (0043ACA0) -------------------------------------------------------- int __thiscall sub_43ACA0(void *this, int a2, void *a3) { void *v3; // esi@1 void *v4; // edi@1 int v5; // ecx@1 int result; // eax@2 int v7; // [sp+14h] [bp+Ch]@1 v3 = a3; v4 = this; v5 = *(_DWORD *)a3; v7 = *(_DWORD *)a3; if ( v3 == *(void **)v4 ) { result = a2; *(_DWORD *)a2 = v5; } else { **((_DWORD **)v3 + 1) = *(_DWORD *)v3; *(_DWORD *)(*(_DWORD *)v3 + 4) = *((_DWORD *)v3 + 1); sub_43AC50((int)((char *)v4 + 8), (int)v3); operator delete(v3); result = a2; --*((_DWORD *)v4 + 1); *(_DWORD *)a2 = v7; } return result; } //----- (0043AD00) -------------------------------------------------------- void __thiscall sub_43AD00(void *this) { void *v1; // ebx@1 int v2; // esi@1 void **v3; // ecx@2 void *v4; // eax@2 int v5; // edi@2 void *v6; // edi@3 int v7; // [sp+8h] [bp-4h]@2 v1 = this; v2 = **(_DWORD **)this; **(_DWORD **)this = *(_DWORD *)this; *(_DWORD *)(*(_DWORD *)this + 4) = *(_DWORD *)this; *((_DWORD *)this + 1) = 0; if ( v2 != *(_DWORD *)this ) { do { v3 = *(void ***)(v2 + 20); v4 = *v3; v5 = *(_DWORD *)v2; *v3 = v3; *(_DWORD *)(*(_DWORD *)(v2 + 20) + 4) = *(_DWORD *)(v2 + 20); v7 = v5; *(_DWORD *)(v2 + 24) = 0; if ( v4 != *(void **)(v2 + 20) ) { do { v6 = *(void **)v4; operator delete(v4); v4 = v6; } while ( v6 != *(void **)(v2 + 20) ); v5 = v7; } operator delete(*(void **)(v2 + 20)); operator delete((void *)v2); v2 = v5; } while ( v5 != *(_DWORD *)v1 ); } } //----- (0043AD80) -------------------------------------------------------- char __thiscall sub_43AD80(void *this, unsigned __int16 a2) { void *v2; // ebx@1 char result; // al@2 int *v4; // eax@3 int v5; // esi@3 void **v6; // ecx@7 void *v7; // eax@7 void *v8; // edi@8 char v9; // [sp+4h] [bp-204h]@6 char v10; // [sp+104h] [bp-104h]@2 unsigned int v11; // [sp+204h] [bp-4h]@1 int v12; // [sp+208h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v2 = this; if ( a2 == -1 ) { sprintf(&v10, "BoothStoreManager::CloseStore - The target booth owner handle value is Invalid."); sub_6390B0(&unk_86DDD8, (int)&v10, (int)byte_6A492E); result = 0; } else { v4 = *(int **)this; v5 = **(_DWORD **)this; if ( (int *)*v4 == v4 ) { LABEL_6: sprintf(&v9, "BoothStoreManager::CloseStore - Cannot find the booth. (nBoothOwnerHandle : %d)", a2); sub_6390B0(&unk_86DDD8, (int)&v9, (int)byte_6A492E); result = 0; } else { while ( *(_WORD *)(v5 + 8) != a2 ) { v5 = *(_DWORD *)v5; if ( (int *)v5 == v4 ) goto LABEL_6; } v6 = *(void ***)(v5 + 20); v7 = *v6; *v6 = v6; *(_DWORD *)(*(_DWORD *)(v5 + 20) + 4) = *(_DWORD *)(v5 + 20); *(_DWORD *)(v5 + 24) = 0; if ( v7 != *(void **)(v5 + 20) ) { do { v8 = *(void **)v7; operator delete(v7); v7 = v8; } while ( v8 != *(void **)(v5 + 20) ); } if ( *(_DWORD *)(v5 + 24) ) { sprintf( &v10, "BoothStoreManager::CloseStore - Removing all items info. is failed. (nBoothOwnerHandle : %d)", *(_WORD *)(v5 + 8)); sub_6390B0(&unk_86DDD8, (int)&v10, (int)byte_6A492E); } *(_WORD *)(v5 + 8) = -1; if ( v5 != *(_DWORD *)v2 ) { **(_DWORD **)(v5 + 4) = *(_DWORD *)v5; *(_DWORD *)(*(_DWORD *)v5 + 4) = *(_DWORD *)(v5 + 4); sub_43AC50((int)((char *)v2 + 8), v5); operator delete((void *)v5); --*((_DWORD *)v2 + 1); } result = 1; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0043AEF0) -------------------------------------------------------- char __thiscall sub_43AEF0(int this, __int16 a2) { int v2; // esi@1 char result; // al@2 v2 = this; if ( a2 != -1 && sub_43A430((void *)(this + 12), a2) ) result = sub_43AD80((void *)v2, a2); else result = 0; return result; } //----- (0043AFC8) -------------------------------------------------------- void __usercall sub_43AFC8(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0043B030) -------------------------------------------------------- int __thiscall sub_43B030(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@2 int (__thiscall **v5)(void *, char); // [sp+Ch] [bp-30h]@7 int (__thiscall **v6)(void *, char); // [sp+18h] [bp-24h]@5 int v7; // [sp+24h] [bp-18h]@1 int v8; // [sp+28h] [bp-14h]@6 int v9; // [sp+2Ch] [bp-10h]@4 int v10; // [sp+38h] [bp-4h]@2 v1 = this; v7 = this; *(_DWORD *)(this + 4) = 0; v2 = operator new(0x20u); if ( !v2 ) { v8 = 0; std::exception::exception(&v8); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)v1 = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)v1 + 4) = *(_DWORD *)v1; v10 = 0; *(_DWORD *)(v1 + 16) = 0; v3 = operator new(0x80u); if ( !v3 ) { v9 = 0; std::exception::exception(&v9); v6 = &off_6A1FD4; _CxxThrowException(&v6, &unk_733E50); } *(_DWORD *)(v1 + 12) = v3; *(_DWORD *)v3 = v3; *(_DWORD *)(*(_DWORD *)(v1 + 12) + 4) = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 24) = -1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0043B100) -------------------------------------------------------- void __thiscall sub_43B100(int this) { int v1; // esi@1 void **v2; // edi@1 v1 = this; v2 = (void **)(this + 12); sub_43A160((void *)(this + 12)); operator delete(*v2); sub_43AD00((void *)v1); operator delete(*(void **)v1); } //----- (0043B300) -------------------------------------------------------- char __stdcall sub_43B300(int a1, int a2, int a3) { char result; // al@2 if ( (_WORD)a1 == -1 ) result = 0; else result = loc_43B180(a1, a2, a3); return result; } //----- (0043B330) -------------------------------------------------------- int __thiscall sub_43B330(int this, int a2, int a3, int a4) { int v4; // eax@2 int result; // eax@3 if ( a2 > 0 && (v4 = a4 + *(_DWORD *)(this + 4 * a2 + 84), v4 >= 0) ) result = *(_DWORD *)(*(_DWORD *)(this + 80) + 4 * v4); else result = 0; return result; } //----- (0043B360) -------------------------------------------------------- int __thiscall sub_43B360(int this, int a2) { int result; // eax@2 if ( *(_DWORD *)(this + 248) >= a2 ) result = *(_DWORD *)(*(_DWORD *)(this + 244) + 4 * a2); else result = 0; return result; } //----- (0043B3A0) -------------------------------------------------------- void *__thiscall sub_43B3A0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 81, 14) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 81, 81, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0043B440) -------------------------------------------------------- void *__thiscall sub_43B440(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A8624; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A8624: using guessed type int (__thiscall *off_6A8624)(void *, char); //----- (0043B470) -------------------------------------------------------- void *__thiscall sub_43B470(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A862C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6A862C: using guessed type int (__thiscall *off_6A862C)(void *, char); //----- (0043B4A0) -------------------------------------------------------- int __thiscall sub_43B4A0(int this) { int v1; // esi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_6A8624; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 0; *(_DWORD *)(v1 + 72) = 0; *(_WORD *)(v1 + 76) = 0; sub_639920(v1 + 100); *(_DWORD *)(v1 + 100) = &off_6A862C; memset((void *)(v1 + 164), 0, 0x50u); *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; *(_DWORD *)(v1 + 88) = 0; *(_DWORD *)(v1 + 92) = 0; *(_DWORD *)(v1 + 96) = 0; *(_DWORD *)(v1 + 244) = 0; *(_DWORD *)(v1 + 248) = 0; return v1; } // 6A8624: using guessed type int (__thiscall *off_6A8624)(void *, char); // 6A862C: using guessed type int (__thiscall *off_6A862C)(void *, char); //----- (0043B540) -------------------------------------------------------- void __thiscall sub_43B540(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 244); if ( v2 ) { sub_6530A4(v2); *(_DWORD *)(v1 + 244) = 0; } if ( *(_DWORD *)(v1 + 80) ) { sub_6530A4(*(void **)(v1 + 80)); *(_DWORD *)(v1 + 80) = 0; } *(_DWORD *)(v1 + 100) = &off_6A862C; sub_639940(v1 + 100); *(_DWORD *)v1 = &off_6A8624; sub_639940(v1); } // 6A8624: using guessed type int (__thiscall *off_6A8624)(void *, char); // 6A862C: using guessed type int (__thiscall *off_6A862C)(void *, char); //----- (0043B5E0) -------------------------------------------------------- char __thiscall sub_43B5E0(void *this) { int v1; // esi@1 unsigned int v2; // edi@1 signed int v3; // ebx@1 int v4; // eax@2 int v5; // eax@3 int v6; // eax@6 int i; // eax@7 unsigned int v8; // edi@9 int v9; // eax@10 int v10; // eax@13 int v11; // ecx@14 int v13; // eax@18 signed int v14; // ebx@21 unsigned int v15; // edi@21 int v16; // eax@22 int v17; // eax@23 int v18; // eax@26 int j; // eax@27 unsigned int v20; // edi@29 int v21; // eax@30 char v22; // [sp+10h] [bp-110h]@20 unsigned int v23; // [sp+110h] [bp-10h]@1 int v24; // [sp+11Ch] [bp-4h]@1 int v25; // [sp+120h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"BR_AccUpgradeDataBox::LoadBRAccUpgradeData"); dword_7508B8[dword_750CB8] = (int)"BR_AccUpgradeDataBox::LoadBRAccUpgradeData"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; v24 = 0; sub_43B3A0((void *)v1, "../9Data/Shine/BRAccUpGrade.shn"); v3 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); if ( v3 > 0 ) { do { v4 = sub_626BC0(v1, v2); if ( !v4 ) goto LABEL_15; v5 = *(_DWORD *)v4; if ( v5 ) ++*(_DWORD *)(v1 + 4 * v5 + 88); ++*(_DWORD *)(v1 + 84); ++v2; } while ( (signed int)v2 < v3 ); } *(_DWORD *)(v1 + 92) += *(_DWORD *)(v1 + 88); *(_DWORD *)(v1 + 96) += *(_DWORD *)(v1 + 92); v6 = unknown_libname_130(4 * *(_DWORD *)(v1 + 84) | -((unsigned __int64)*(_DWORD *)(v1 + 84) >> 30 != 0)); *(_DWORD *)(v1 + 80) = v6; if ( !v6 ) goto LABEL_15; for ( i = 0; i <= *(_DWORD *)(v1 + 84); ++i ) *(_DWORD *)(*(_DWORD *)(v1 + 80) + 4 * i) = 0; v8 = 0; if ( v3 > 0 ) { do { v9 = sub_626BC0(v1, v8); if ( !v9 ) goto LABEL_15; *(_DWORD *)(*(_DWORD *)(v1 + 80) + 4 * v8++) = v9; } while ( (signed int)v8 < v3 ); } if ( !sub_627480((void *)(v1 + 100), "../9Data/Shine/BRAccUpgradeInfo.shn", 6860, 80) ) { sub_6390B0( &unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/BRAccUpgradeInfo.shn"); v10 = *(_DWORD *)(v1 + 152); if ( v10 ) v11 = *(_DWORD *)v10; else v11 = 0; if ( v10 ) v13 = *(_DWORD *)v10; else v13 = 0; sprintf(&v22, "Code:%X:%d\tSHN:%X:%d", 6860, 6860, v13, v11); sub_639100(&unk_86DDD8, (int)&v22, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v14 = *(_DWORD *)(*(_DWORD *)(v1 + 152) + 40); v15 = 0; if ( v14 > 0 ) { do { v16 = sub_626BC0(v1 + 100, v15); if ( !v16 ) goto LABEL_15; v17 = *(_WORD *)v16; if ( *(_DWORD *)(v1 + 248) < v17 ) *(_DWORD *)(v1 + 248) = v17; ++v15; } while ( (signed int)v15 < v14 ); } v18 = unknown_libname_130(4 * (*(_DWORD *)(v1 + 248) + 1) | -((unsigned __int64)(unsigned int)(*(_DWORD *)(v1 + 248) + 1) >> 30 != 0)); *(_DWORD *)(v1 + 244) = v18; if ( !v18 ) { LABEL_15: --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"BR_AccUpgradeDataBox::LoadBRAccUpgradeData"); return 0; } for ( j = 0; j <= *(_DWORD *)(v1 + 248); ++j ) *(_DWORD *)(*(_DWORD *)(v1 + 244) + 4 * j) = 0; v20 = 0; if ( v14 > 0 ) { do { v21 = sub_626BC0(v1 + 100, v20); if ( !v21 ) goto LABEL_15; ++v20; *(_DWORD *)(*(_DWORD *)(v1 + 244) + 4 * *(_WORD *)v21) = v21; } while ( (signed int)v20 < v14 ); } --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"BR_AccUpgradeDataBox::LoadBRAccUpgradeData"); return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0043B890) -------------------------------------------------------- char *__thiscall sub_43B890(int this) { int v1; // esi@1 int v2; // ecx@1 char *result; // eax@1 v1 = this; v2 = *(_DWORD *)(this + 13); *(_WORD *)(v1 + 8) = 0; *(_WORD *)v1 = -1; *(_DWORD *)(v1 + 2) = -1; *(_DWORD *)(v1 + 9) = v2; *(_DWORD *)(v1 + 33) = 0; *(_DWORD *)(v1 + 29) = 0; *(_DWORD *)(v1 + 25) = 0; *(_DWORD *)(v1 + 21) = 0; *(_DWORD *)(v1 + 17) = 0; result = strncpy((char *)(v1 + 17), byte_6A492E, 0x14u); *(_WORD *)(v1 + 41) = 0; *(_DWORD *)(v1 + 37) = -1; return result; } //----- (0043B8E0) -------------------------------------------------------- int __thiscall sub_43B8E0(int this) { int result; // eax@1 result = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 10000; return result; } //----- (0043B910) -------------------------------------------------------- __time32_t __thiscall sub_43B910(__time32_t this, int a2) { __time32_t v2; // esi@1 FILE *v3; // eax@3 v2 = this; if ( byte_7493ED ) { if ( *(_BYTE *)(this + 644) ) { sub_418E40(this); v3 = *(FILE **)(v2 + 256); if ( v3 ) fprintf(v3, "%d", a2); } } return v2; } // 7493ED: using guessed type char byte_7493ED; //----- (0043B950) -------------------------------------------------------- void *__thiscall sub_43B950(void *this) { void *v1; // esi@1 v1 = this; sub_4A7BD0((int)((char *)this + 1004)); sub_4A7BD0((int)((char *)v1 + 2228)); sub_4A7BD0((int)((char *)v1 + 3452)); sub_4A7BD0((int)((char *)v1 + 4692)); sub_4A7BD0((int)((char *)v1 + 5916)); return v1; } //----- (0043B9E0) -------------------------------------------------------- void __thiscall sub_43B9E0(void *this) { void *v1; // esi@1 v1 = this; sub_4A79E0((int)((char *)this + 5916)); sub_4A79E0((int)((char *)v1 + 4692)); sub_4A79E0((int)((char *)v1 + 3452)); sub_4A79E0((int)((char *)v1 + 2228)); sub_4A79E0((int)((char *)v1 + 1004)); } //----- (0043BA70) -------------------------------------------------------- int __thiscall sub_43BA70(int this) { int v1; // eax@1 int result; // eax@1 v1 = 248 * ((*(_DWORD *)(this + 15876) + 1) & *(_DWORD *)(this + 15880)); *(_DWORD *)(this + 15876) = (*(_DWORD *)(this + 15876) + 1) & *(_DWORD *)(this + 15880); result = v1 + this + 4; *(_DWORD *)this = 0; *(_WORD *)(result + 4) = -1; *(_BYTE *)(result + 228) = 0; *(_BYTE *)(result + 220) = 0; *(_BYTE *)(result + 112) = 0; *(_BYTE *)(result + 6) = 0; return result; } //----- (0043BAC0) -------------------------------------------------------- int __thiscall sub_43BAC0(int this, int a2, int a3) { int v3; // esi@1 int v4; // edx@1 int result; // eax@2 v3 = this; *(_DWORD *)this = &off_6A86A4; *(_DWORD *)(this + 4) = a2; v4 = *(_DWORD *)a2; if ( a3 ) { *(_DWORD *)(this + 12) = (*(int (__stdcall **)(int))(v4 + 4))(a3); *(_DWORD *)v3 = &off_6A86AC; result = v3; } else { *(_DWORD *)(this + 12) = (*(int (**)(void))(v4 + 8))(); *(_DWORD *)v3 = &off_6A86AC; result = v3; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); //----- (0043BB10) -------------------------------------------------------- void __thiscall sub_43BB10(void *this) { *(_DWORD *)this = &off_6A86A4; } // 6A86A4: using guessed type int (*off_6A86A4)(); //----- (0043BB20) -------------------------------------------------------- int __thiscall sub_43BB20(int this, int a2, int a3) { int v3; // esi@1 int v4; // edx@1 int result; // eax@2 v3 = this; *(_DWORD *)this = &off_6A86A4; *(_DWORD *)(this + 4) = a2; v4 = *(_DWORD *)a2; if ( a3 ) { *(_DWORD *)(this + 12) = (*(int (__stdcall **)(int))(v4 + 4))(a3); *(_DWORD *)v3 = &off_6A86B4; result = v3; } else { *(_DWORD *)(this + 12) = (*(int (**)(void))(v4 + 8))(); *(_DWORD *)v3 = &off_6A86B4; result = v3; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); //----- (0043BB70) -------------------------------------------------------- int __thiscall sub_43BB70(int this, int a2, __int16 a3, int a4) { int v4; // esi@1 int v5; // edx@1 int v6; // eax@2 v4 = this; *(_DWORD *)this = &off_6A86A4; *(_DWORD *)(this + 4) = a2; v5 = *(_DWORD *)a2; if ( a4 ) v6 = (*(int (__stdcall **)(int))(v5 + 4))(a4); else v6 = (*(int (**)(void))(v5 + 8))(); *(_DWORD *)(v4 + 12) = v6; *(_DWORD *)v4 = &off_6A86BC; *(_WORD *)(v4 + 16) = a3; return v4; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); //----- (0043BBB0) -------------------------------------------------------- char __thiscall sub_43BBB0(void *this) { void *v1; // esi@1 int (*v2)(void); // edx@1 char result; // al@2 v1 = this; v2 = (int (*)(void))**(_DWORD **)this; *((_DWORD *)this + 2) = 0; if ( (unsigned __int8)v2() ) result = 1; else result = sub_63F7F0(v1); return result; } //----- (0043BBD0) -------------------------------------------------------- int __thiscall sub_43BBD0(int this) { return (***(int (__stdcall ****)(_DWORD))(this + 4))(*(_DWORD *)(this + 8)); } //----- (0043BBE0) -------------------------------------------------------- int __thiscall sub_43BBE0(int this) { return *(_DWORD *)(this + 112); } //----- (0043BBF0) -------------------------------------------------------- void __thiscall sub_43BBF0(int this) { ++*(_WORD *)(this + 4); } //----- (0043BC00) -------------------------------------------------------- int __thiscall sub_43BC00(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)this = a3; *(_DWORD *)(this + 4) = a4; *(_DWORD *)(this + 8) = a2; return result; } //----- (0043BC20) -------------------------------------------------------- int __thiscall sub_43BC20(void *this) { return (***(int (__stdcall ****)(_DWORD))(*(_DWORD *)this + 4))(*(_DWORD *)(*(_DWORD *)this + 8)); } //----- (0043BC30) -------------------------------------------------------- int __thiscall sub_43BC30(void *this) { return *(_DWORD *)(*(_DWORD *)this + 8); } //----- (0043BC40) -------------------------------------------------------- signed int __thiscall sub_43BC40(int this) { int v1; // esi@1 int v2; // ST00_4@1 signed int result; // eax@1 v1 = this; v2 = *(_DWORD *)(this + 254) + 2; *(_DWORD *)(*(_DWORD *)(this + 254) + 18) = 0; *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 8) = 0; *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; strncpy((char *)v2, "???", 0x14u); *(_BYTE *)(*(_DWORD *)(v1 + 254) + 87) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 254) + 88) = 0; result = 65535; *(_WORD *)(*(_DWORD *)(v1 + 254) + 89) = -1; *(_DWORD *)(*(_DWORD *)(v1 + 254) + 190) = 0; return result; } //----- (0043BCA0) -------------------------------------------------------- int __thiscall sub_43BCA0(int this, int a2, char a3, char a4, __int16 a5, int a6) { int v6; // eax@1 int result; // eax@1 v6 = *(_DWORD *)(this + 254); *(_DWORD *)(v6 + 2) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v6 + 6) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v6 + 10) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v6 + 14) = *(_DWORD *)(a2 + 20); *(_DWORD *)(v6 + 18) = *(_DWORD *)(a2 + 24); *(_BYTE *)(*(_DWORD *)(this + 254) + 87) = a3; *(_BYTE *)(*(_DWORD *)(this + 254) + 88) = a4; *(_WORD *)(*(_DWORD *)(this + 254) + 89) = a5; result = *(_DWORD *)(this + 254); *(_DWORD *)(result + 190) = a6; return result; } //----- (0043BD10) -------------------------------------------------------- void *__thiscall sub_43BD10(int this, const char *a2) { void *result; // eax@1 result = (void *)a2; if ( a2 ) result = strncpy((char *)(*(_DWORD *)(this + 254) + 198), a2, 0x20u); return result; } //----- (0043BD40) -------------------------------------------------------- int __thiscall sub_43BD40(int this, __int16 a2, int a3) { int result; // eax@2 if ( *(_DWORD *)(this + 158) ) { **(_WORD **)(this + 158) = a2; *(_DWORD *)(*(_DWORD *)(this + 158) + 2) = a3; *(_WORD *)(*(_DWORD *)(this + 158) + 119) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 121) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 123) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 125) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 127) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 129) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 131) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 133) = -1; *(_WORD *)(*(_DWORD *)(this + 158) + 135) = -1; result = *(_DWORD *)(this + 158); *(_WORD *)(result + 137) = -1; } return result; } //----- (0043BDF0) -------------------------------------------------------- int __thiscall sub_43BDF0(int this) { int v1; // esi@1 int v2; // eax@1 int result; // eax@4 int v4; // esi@5 v1 = this; v2 = *(_DWORD *)(this + 122); if ( v2 && *(_DWORD *)(v2 + 16) ) { if ( sub_549240(this) == 1 || (v4 = *(_DWORD *)(v1 + 122), *(_DWORD *)(v4 + 292) == 1) ) result = -1; else result = *(_DWORD *)(*(_DWORD *)(v4 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v4 + 16) + 72); } else { result = 0; } return result; } //----- (0043BE30) -------------------------------------------------------- int __thiscall sub_43BE30(int this) { int v1; // ebx@1 int result; // eax@1 v1 = this; memcpy((void *)this, &dword_DA12010, 0xCCu); memcpy((void *)(this + 204), &dword_DA12010, 0xCCu); memcpy((void *)(this + 408), &dword_DA11F40, 0xCCu); memcpy((void *)(this + 612), &dword_DA12010, 0xCCu); memcpy((void *)(this + 816), &dword_DA11F40, 0xCCu); memcpy((void *)(this + 1020), &dword_DA12010, 0xCCu); memcpy((void *)(this + 1224), &dword_DA11F40, 0xCCu); memcpy((void *)(this + 1428), &dword_DA12010, 0xCCu); memcpy((void *)(this + 1632), &dword_DA11F40, 0xCCu); memcpy((void *)(this + 1836), &dword_DA12010, 0xCCu); memcpy((void *)(this + 2040), &dword_DA11F40, 0xCCu); memcpy((void *)(this + 2244), &dword_DA12010, 0xCCu); memcpy((void *)(this + 2448), &dword_DA11F40, 0xCCu); memcpy((void *)(this + 2652), &dword_DA12010, 0xCCu); memcpy((void *)(this + 2856), &dword_DA11F40, 0xCCu); *(_BYTE *)(v1 + 3278) &= 0xF8u; *(_WORD *)(this + 3274) = 1000; *(_DWORD *)(this + 3266) = 0; *(_DWORD *)(this + 3270) = 0; *(_WORD *)(this + 3264) = 0; *(_WORD *)(this + 3276) = 0; *(_DWORD *)(this + 3282) = -65536; *(_WORD *)(this + 3280) = 0; *(_DWORD *)(this + 1760) = 0; *(_DWORD *)(this + 1764) = 0; *(_DWORD *)(this + 3286) = 1000; *(_DWORD *)(this + 3290) = 0; sub_4C83D0(this + 3296); sub_4C83D0(v1 + 3324); sub_4C83D0(v1 + 3352); sub_4C83D0(v1 + 3380); sub_4C83D0(v1 + 3408); sub_4C83D0(v1 + 3436); sub_4C83D0(v1 + 3464); *(_DWORD *)(v1 + 3496) = 0; *(_DWORD *)(v1 + 3492) = 0; *(_WORD *)(v1 + 3500) = 0; return result; } // DA11F40: using guessed type int dword_DA11F40; // DA12010: using guessed type int dword_DA12010; //----- (0043C010) -------------------------------------------------------- int __thiscall sub_43C010(int this, int a2) { int result; // eax@1 result = this; memcpy((void *)this, &dword_DA12010, 0xCCu); *(_DWORD *)this = *(_WORD *)(*(_DWORD *)(a2 + 4) + 80); *(_DWORD *)(this + 4) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 84); *(_DWORD *)(this + 8) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 82); *(_DWORD *)(this + 12) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 86); *(_DWORD *)(this + 16) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 88); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 28) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 37); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 39); *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 48) = *(_WORD *)(*(_DWORD *)(a2 + 4) + 41); *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 56) = *(_WORD *)(*(_DWORD *)(a2 + 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; } // DA12010: using guessed type int dword_DA12010; //----- (0043C0D0) -------------------------------------------------------- int __thiscall sub_43C0D0(int this) { int result; // eax@1 result = 2 * *(_DWORD *)(this + 256); *(_DWORD *)(this + 16 * *(_DWORD *)(this + 256)) = 0; return result; } //----- (0043C0E0) -------------------------------------------------------- void *__thiscall sub_43C0E0(void *this, int a2) { void *result; // eax@1 result = this; *(_BYTE *)(a2 + 1) = 0; return result; } //----- (0043C0F0) -------------------------------------------------------- signed int __stdcall sub_43C0F0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) { return 1; } //----- (0043C100) -------------------------------------------------------- int __thiscall sub_43C100(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 4488) ) { **(_BYTE **)(this + 4488) = 0; } else { *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4484) = this + 12; *(_DWORD *)(this + 4) = 4470; *(_WORD *)(this + 12) = *(_WORD *)(this + 12) & 0x3FF | 0x1C00; **(_WORD **)(this + 4484) = **(_WORD **)(this + 4484) & 0xFC09 | 9; result = *(_DWORD *)(this + 4484) + 2; *(_DWORD *)(this + 4488) = result; *(_BYTE *)result = 0; } return result; } //----- (0043C170) -------------------------------------------------------- int __thiscall sub_43C170(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 8) = 0; return result; } //----- (0043C180) -------------------------------------------------------- void __thiscall sub_43C180(int this) { int v1; // eax@2 signed int v2; // esi@2 int v3; // edx@3 int v4; // eax@4 if ( !*(_DWORD *)(this + 10676) ) { v1 = this; v2 = 29; do { *(_DWORD *)(v1 + 4) = 353; *(_DWORD *)v1 = v1 + 12; *(_WORD *)(v1 + 12) = 7193; *(_DWORD *)(this + 10672) = v1 + 12; v3 = *(_DWORD *)v1 + 2; *(_DWORD *)(this + 10676) = v3; *(_WORD *)v3 = -1; v1 += 368; --v2; *(_BYTE *)(*(_DWORD *)(this + 10676) + 2) = 0; } while ( v2 ); v4 = *(_DWORD *)this + 2; *(_DWORD *)(this + 10680) = 0; *(_DWORD *)(this + 10676) = v4; } } //----- (0043C1F0) -------------------------------------------------------- FILE *__thiscall sub_43C1F0(int this) { int v1; // esi@1 FILE *result; // eax@2 v1 = this; if ( *(_DWORD *)(this + 4188) || (*(_DWORD *)this = this + 12, *(_DWORD *)(this + 4184) = this + 12, *(_DWORD *)(this + 4) = 4170, *(_WORD *)(this + 12) = *(_WORD *)(this + 12) & 0x3FF | 0x1C00, **(_WORD **)(this + 4184) = **(_WORD **)(this + 4184) & 0xFC1B | 0x1B, result = (FILE *)(*(_DWORD *)(this + 4184) + 2), (*(_DWORD *)(this + 4188) = result) != 0) ) { **(_BYTE **)(this + 4188) = 0; } else { result = sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeMover::bixmv_Init : bixmv_Pointer NULL", 0); **(_BYTE **)(v1 + 4188) = 0; } return result; } //----- (0043C280) -------------------------------------------------------- int __thiscall sub_43C280(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 1908) ) { **(_BYTE **)(this + 1908) = 0; } else { *(_DWORD *)this = this + 12; *(_DWORD *)(this + 1904) = this + 12; *(_DWORD *)(this + 4) = 1890; *(_WORD *)(this + 12) = *(_WORD *)(this + 12) & 0x3FF | 0x1C00; **(_WORD **)(this + 1904) = **(_WORD **)(this + 1904) & 0xFC1D | 0x1D; result = *(_DWORD *)(this + 1904) + 2; *(_DWORD *)(this + 1908) = result; *(_BYTE *)result = 0; } return result; } //----- (0043C2F0) -------------------------------------------------------- int __thiscall sub_43C2F0(int this) { signed int v1; // esi@1 int v2; // eax@1 unsigned int v3; // eax@2 v1 = 1; v2 = 1 - *(_DWORD *)(this + 2000); *(_DWORD *)this = 2560000; if ( (unsigned int)v2 < 0x1F4 ) { do { v3 = (signed __int64)sqrt((double)((signed int)&unk_47868C0 / v1)); if ( v3 <= 0x640 ) *(_DWORD *)(this + 4 * (v1 - *(_DWORD *)(this + 2000))) = v3 * v3; else *(_DWORD *)(this + 2000) = v1; ++v1; } while ( (unsigned int)(v1 - *(_DWORD *)(this + 2000)) < 0x1F4 ); } return this; } //----- (0043C390) -------------------------------------------------------- int __thiscall sub_43C390(int this) { int result; // eax@1 result = this; *(_BYTE *)(this + 43) = 0; return result; } //----- (0043C3A0) -------------------------------------------------------- char __thiscall sub_43C3A0(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 160876) = a2; return result; } //----- (0043C3B0) -------------------------------------------------------- char __thiscall sub_43C3B0(int this) { return *(_BYTE *)(this + 160876); } //----- (0043C3D0) -------------------------------------------------------- char __thiscall sub_43C3D0(void *this, int a2, void *a3, int a4) { void *v4; // esi@1 int v5; // eax@3 v4 = this; if ( a3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1388))(a3); if ( *(_DWORD *)v5 == *((_DWORD *)v4 + 1) ) { if ( *(_DWORD *)(v5 + 4) == *((_DWORD *)v4 + 2) && *(_DWORD *)(v5 + 8) == *((_DWORD *)v4 + 3) && *(_DWORD *)(v5 + 12) == *((_DWORD *)v4 + 4) && *(_DWORD *)(v5 + 16) == *((_DWORD *)v4 + 5) ) sub_549900(a3); } } } return 1; } //----- (0043C430) -------------------------------------------------------- int __thiscall sub_43C430(int this, __int16 a2) { int v2; // edx@1 int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 416); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = *(_DWORD *)(this + 412); v5 = *(_DWORD *)(this + 412); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = v4 + 8 * v3; } return result; } //----- (0043C470) -------------------------------------------------------- char __thiscall sub_43C470(int this, int a2) { int v2; // esi@1 int v3; // edx@1 int v4; // eax@2 int v5; // ecx@2 int v6; // eax@3 int v7; // edi@3 char result; // al@6 v2 = this; v3 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4); if ( (unsigned __int16)v3 >= *(_WORD *)(this + 4) ) { LABEL_6: result = 1; } else { while ( 1 ) { v4 = 12 * (unsigned __int16)v3; v5 = v4 + *(_DWORD *)(v2 + 8); if ( !*(_BYTE *)(v5 + 8) ) break; v6 = *(_DWORD *)(v2 + 8) + v4; v7 = *(_WORD *)(v6 + 4); if ( *(_DWORD *)v6 ) { if ( !(unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))a2)(a2, *(_DWORD *)v5, v3) ) break; } v3 = v7; if ( (unsigned __int16)v7 >= *(_WORD *)(v2 + 4) ) goto LABEL_6; } result = 0; } return result; } //----- (0043C4E0) -------------------------------------------------------- void __thiscall sub_43C4E0(int this) { int v1; // esi@1 v1 = this; nullsub_2((void *)(this + 16)); sub_5C9980((void *)v1); } //----- (0043C540) -------------------------------------------------------- bool __thiscall sub_43C540(int this) { return *(_WORD *)((***(int (__stdcall ****)(_DWORD))(this + 4))(*(_DWORD *)(this + 8)) + 8) != -1; } //----- (0043C560) -------------------------------------------------------- bool __thiscall sub_43C560(int this) { return *(_WORD *)((***(int (__stdcall ****)(_DWORD))(this + 4))(*(_DWORD *)(this + 8)) + 8) == -1; } //----- (0043C580) -------------------------------------------------------- bool __thiscall sub_43C580(int this) { return *(_WORD *)((***(int (__stdcall ****)(_DWORD))(this + 4))(*(_DWORD *)(this + 8)) + 8) == *(_WORD *)(this + 16); } //----- (0043C5A0) -------------------------------------------------------- char __thiscall sub_43C5A0(int this, int a2) { int v2; // esi@1 v2 = this; **(_WORD **)(this + 369) = *(_WORD *)(a2 + 4); *(_BYTE *)(*(_DWORD *)(this + 369) + 2) = 0; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2708))( *(_DWORD *)(this + 369) + 3, *(_DWORD *)(this + 369) + 2); return sub_4C81E0((void *)v2, 12 * *(_BYTE *)(*(_DWORD *)(v2 + 369) + 2) + 5); } //----- (0043C600) -------------------------------------------------------- int __thiscall sub_43C600(int this) { int v1; // eax@1 int result; // eax@1 *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 8) = 0; v1 = *(_DWORD *)(*(_DWORD *)(this + 4) + 102); *(_DWORD *)(this + 20) = *(_DWORD *)v1; result = *(_DWORD *)(v1 + 4); *(_DWORD *)(this + 24) = result; return result; } //----- (0043C630) -------------------------------------------------------- int __thiscall sub_43C630(void *this) { void *v1; // edi@1 int v2; // ebx@1 int v3; // eax@9 int v5; // ecx@11 unsigned __int16 v6; // ax@11 unsigned __int16 i; // cx@11 int v8; // edx@13 int v9; // eax@13 bool v10; // zf@13 int v11; // eax@13 int v12; // esi@14 int v13; // ST24_4@16 int v14; // edi@21 int v15; // eax@28 unsigned int v16; // [sp-4h] [bp-130h]@1 void *v17; // [sp+14h] [bp-118h]@1 unsigned __int16 v18; // [sp+1Ah] [bp-112h]@12 char v19; // [sp+1Ch] [bp-110h]@4 unsigned int v20; // [sp+11Ch] [bp-10h]@1 int v21; // [sp+128h] [bp-4h]@1 int v22; // [sp+12Ch] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v16 = (unsigned int)&v22 ^ __security_cookie; v1 = this; v17 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"; dword_750AB8[dword_750CB8++] = -1; v2 = dword_13253824; v21 = 0; if ( dword_13253824 ) { v5 = *(_DWORD *)(dword_13253824 + 8); v6 = *(_WORD *)(v5 + 12 * *(_WORD *)(dword_13253824 + 14) + 4); for ( i = *(_WORD *)(v5 + 12 * *(_WORD *)(v5 + 12 * *(_WORD *)(dword_13253824 + 14) + 4) + 4); ; i = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v18 + 4) ) { v18 = i; if ( v6 < *(_WORD *)(v2 + 4) ) { v8 = 3 * v6; v9 = *(_DWORD *)(v2 + 8); v10 = *(_BYTE *)(v9 + 4 * v8 + 8) == 0; v11 = v9 + 4 * v8; if ( !v10 ) { v12 = *(_DWORD *)v11; if ( *(_DWORD *)v11 ) { if ( *(_WORD *)(v12 + 4) != *((_WORD *)v1 + 2) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 840))(v12); if ( v13 == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 840))(v1) ) { if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf(&v19, "%.255s", "Kick by double connect "); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v19, dword_13359C60); } } v14 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v12 + 836))(v12, v16); if ( byte_7493ED ) { if ( byte_13359DE4 ) { sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fprintf(dword_13359C60, "%d", v14); } if ( byte_7493ED && byte_13359DE4 && dword_13359C60 ) { v15 = sub_418E40((__time32_t)byte_13359B60); sub_654AB0(10, (FILE *)v15); fflush(dword_13359C60); fclose(dword_13359C60); dword_13359C60 = 0; } } v16 = 1; (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 1532))(v12); } v1 = v17; } v6 = v18; if ( v18 < *(_WORD *)(v2 + 4) ) continue; } } } break; } } else { if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf(&v19, "%.255s", "ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin : List Null"); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v19, dword_13359C60); } if ( byte_7493ED && byte_13359DE4 && dword_13359C60 ) { v3 = sub_418E40((__time32_t)byte_13359B60); sub_654AB0(10, (FILE *)v3); fflush(dword_13359C60); fclose(dword_13359C60); dword_13359C60 = 0; } } } --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; // 13359DE4: using guessed type char byte_13359DE4; //----- (0043C920) -------------------------------------------------------- int __thiscall sub_43C920(void *this) { void *v1; // edi@1 int v2; // ecx@1 int v3; // eax@3 _BYTE *v4; // eax@3 int v5; // esi@3 int v6; // eax@5 _BYTE *v7; // eax@5 int v8; // eax@5 int v10; // [sp-8h] [bp-F0h]@2 char v11; // [sp+24h] [bp-C4h]@4 char v12; // [sp+45h] [bp-A3h]@4 int v13; // [sp+66h] [bp-82h]@4 int v14; // [sp+6Ah] [bp-7Eh]@4 char v15; // [sp+74h] [bp-74h]@8 int v16; // [sp+88h] [bp-60h]@7 int v17; // [sp+8Ch] [bp-5Ch]@7 int v18; // [sp+90h] [bp-58h]@7 char v19; // [sp+94h] [bp-54h]@7 int v20; // [sp+A9h] [bp-3Fh]@7 int v21; // [sp+ADh] [bp-3Bh]@7 int v22; // [sp+B1h] [bp-37h]@7 char v23; // [sp+B5h] [bp-33h]@7 int v24; // [sp+CAh] [bp-1Eh]@7 int v25; // [sp+CEh] [bp-1Ah]@7 unsigned int v26; // [sp+D8h] [bp-10h]@1 int v27; // [sp+E4h] [bp-4h]@1 int v28; // [sp+E8h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_2Roumen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_2Roumen"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 122); v27 = 0; if ( v2 ) { v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)v2; *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 8); v4[12] = 0; v5 = sub_63AB60(&unk_CFCF398, v4); if ( v5 ) { v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)(v5 + 110); *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 114); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 118); v7[12] = 0; v8 = sub_63AB60(&unk_CFCF398, v7); if ( v8 ) v5 = v8; v16 = *(_DWORD *)(v5 + 110); v17 = *(_DWORD *)(v5 + 114); v18 = *(_DWORD *)(v5 + 118); v19 = 0; v20 = *(_DWORD *)(v5 + 110); v21 = *(_DWORD *)(v5 + 114); v22 = *(_DWORD *)(v5 + 118); v23 = 0; v24 = *(_DWORD *)(v5 + 122); v25 = *(_DWORD *)(v5 + 126); } else { strncpy(&v11, "RouN", 0xCu); strncpy(&v12, "RouN", 0xCu); v13 = 6445; v14 = 8630; } (*(void (__thiscall **)(void *, char *, _DWORD))(*(_DWORD *)v1 + 1020))(v1, &v15, 0); --dword_750CB8; v27 = -1; v10 = (int)"ShineObjectClass::ShinePlayer::sp_2Roumen"; } else { --dword_750CB8; v27 = -1; v10 = (int)"ShineObjectClass::ShinePlayer::sp_2Roumen"; } return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (0043CAE0) -------------------------------------------------------- int __thiscall sub_43CAE0(void *this) { void *v1; // esi@1 int v2; // eax@4 int v3; // edi@7 int v4; // eax@10 int v5; // ecx@12 int v6; // eax@13 int (*v7)(); // eax@13 int v8; // eax@15 int (**v10)(); // [sp+10h] [bp-30h]@13 int v11; // [sp+14h] [bp-2Ch]@15 int v12; // [sp+18h] [bp-28h]@13 int (**v13)(); // [sp+20h] [bp-20h]@5 char *v14; // [sp+24h] [bp-1Ch]@5 int v15; // [sp+28h] [bp-18h]@5 int v16; // [sp+2Ch] [bp-14h]@5 int v17; // [sp+30h] [bp-10h]@1 int v18; // [sp+3Ch] [bp-4h]@1 v1 = this; v17 = (int)"ShineObjectClass::ShinePlayer::sp_RideInitialize"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RideInitialize"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RideInitialize"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( *((_DWORD *)v1 + 40411) == -1 ) { if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 3188))(v1) ) { v2 = *(_DWORD *)((char *)v1 + 122); *((_WORD *)v1 + 80381) = -1; *((_WORD *)v1 + 80380) = -1; if ( *(_BYTE *)(*(_DWORD *)(v2 + 12) + 164) ) { v13 = &off_6A86A4; v14 = (char *)v1 + 36484; v16 = (*(int (**)(void))(*((_DWORD *)v1 + 9121) + 8))(); v13 = (int (**)())&off_6A86AC; LOBYTE(v18) = 1; v15 = 0; if ( (unsigned __int8)off_6A86AC(&v13) || sub_63F7F0(&v13) ) { while ( 1 ) { v3 = (**(int (__stdcall ***)(_DWORD))v14)(v15); if ( (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v3 + 112) + 96))(v3 + 8) ) break; if ( !sub_63F7F0(&v13) ) goto LABEL_17; } *((_WORD *)v1 + 80381) = v15; v4 = sub_43C430((int)&dword_AA08E8, *(_WORD *)(v3 + 8)); *((_DWORD *)v1 + 40191) = v4; if ( v4 != 0 ) { sub_45EB20(v1, 0); v5 = *((_DWORD *)v1 + 957); *((_WORD *)v1 + 80380) = -1; *(_BYTE *)v5 = 6; v13 = &off_6A86A4; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_RideInitialize : Null Ride", 0); v13 = &off_6A86A4; } } } else { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1176))(v1); sub_43BAC0((int)&v10, (int)((char *)v1 + 36484), v6); v7 = *v10; LOBYTE(v18) = 2; v12 = 0; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v7)(&v10) || sub_63F7F0(&v10) ) { do { v8 = (**(int (__stdcall ***)(_DWORD))v11)(v12); (*(void (__stdcall **)(int, _DWORD))(**(_DWORD **)(v8 + 112) + 100))(v8 + 8, 0); } while ( sub_63F7F0(&v10) ); } v10 = &off_6A86A4; } } LABEL_17: --dword_750CB8; } else { --dword_750CB8; } v18 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RideInitialize"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA08E8: using guessed type int dword_AA08E8; //----- (0043CD20) -------------------------------------------------------- int __cdecl sub_43CD20() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043CD60) -------------------------------------------------------- int __thiscall sub_43CD60(void *this) { void *v1; // edi@1 int v2; // ebx@1 unsigned __int16 v3; // cx@1 int v4; // esi@4 int v5; // edx@6 int v7; // esi@10 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8204))( (char *)v1 + 32816, 10); v3 = *(_WORD *)((*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8204))( (char *)v1 + 32816, 12) + 8); if ( v3 == -1 ) v3 = *(_WORD *)(v2 + 8); if ( v3 < (unsigned int)dword_14D20894 ) { v4 = dword_14D21184 + 40 * v3; if ( v4 ) { if ( *(_DWORD *)v4 ) { v5 = **(_WORD **)v4; if ( (_WORD)v5 == v3 ) { v7 = *(_DWORD *)v4; if ( *(_DWORD *)(v7 + 102) == 5 ) { *((_WORD *)v1 + 77712) = *(_WORD *)(v7 + 123); goto LABEL_9; } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * v3); } } } } *((_WORD *)v1 + 77712) = 1000; LABEL_9: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0043CEA0) -------------------------------------------------------- int __cdecl sub_43CEA0() { *(_BYTE *)off_74BD44 = 0; sub_43C100((int)&off_74BD48); *(_BYTE *)off_74D488 = 0; *(_BYTE *)off_74DA40 = 0; *(_BYTE *)off_74DC1C = 0; *(_BYTE *)off_74DE10 = 0; *(_BYTE *)off_74E5A8 = 0; sub_43C180((int)&unk_8B42A0); sub_43C180((int)&unk_8B6C60); sub_43C1F0((int)&off_74E5B0); return sub_43C280((int)&off_74F610); } // 74BD44: using guessed type void *off_74BD44; // 74BD48: using guessed type __int16 *off_74BD48; // 74D488: using guessed type void *off_74D488; // 74DA40: using guessed type void *off_74DA40; // 74DC1C: using guessed type void *off_74DC1C; // 74DE10: using guessed type void *off_74DE10; // 74E5A8: using guessed type void *off_74E5A8; // 74E5B0: using guessed type void *off_74E5B0; // 74F610: using guessed type __int16 *off_74F610; //----- (0043CF10) -------------------------------------------------------- int __thiscall sub_43CF10(void *this, int a2) { void *v2; // edi@1 int v3; // esi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 1767) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = 235 * **((_BYTE **)v2 + 1767) + 3; if ( sub_4C81E0(v2, 235 * **((_BYTE **)v2 + 1767) + 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeCharacter::bixc_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D040) -------------------------------------------------------- int __thiscall sub_43D040(void *this, int a2) { void *v2; // edi@1 int v3; // esi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 1122) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = 149 * **((_BYTE **)v2 + 1122) + 3; if ( sub_4C81E0(v2, 149 * **((_BYTE **)v2 + 1122) + 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeMob::bixm_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D170) -------------------------------------------------------- int __thiscall sub_43D170(void *this, int a2) { void *v2; // edi@1 int v3; // esi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 364) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = 48 * **((_BYTE **)v2 + 364) + 3; if ( sub_4C81E0(v2, v3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeDoor::bixd_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D2A0) -------------------------------------------------------- int __thiscall sub_43D2A0(void *this, int a2) { void *v2; // edi@1 int v3; // esi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 364) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = 48 * **((_BYTE **)v2 + 364) + 3; if ( sub_4C81E0(v2, v3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeEffect::bixe_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D3D0) -------------------------------------------------------- int __thiscall sub_43D3D0(void *this, int a2) { void *v2; // edi@1 int v3; // esi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 117) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = 15 * **((_BYTE **)v2 + 117) + 3; if ( sub_4C81E0(v2, 15 * **((_BYTE **)v2 + 117) + 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeItem::bixi_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D500) -------------------------------------------------------- int __thiscall sub_43D500(void *this, int a2) { void *v2; // esi@1 int v3; // edi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 124) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = 16 * **((_BYTE **)v2 + 124) + 3; if ( sub_4C81E0(v2, 16 * **((_BYTE **)v2 + 124) + 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeMagicField::bixmfm_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D630) -------------------------------------------------------- int __thiscall sub_43D630(void *this, int a2) { void *v2; // esi@1 int v3; // edi@6 int v4; // eax@8 int v6; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v2 + 484) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { v3 = (**((_BYTE **)v2 + 484) << 6) + 3; if ( sub_4C81E0(v2, (**((_BYTE **)v2 + 484) << 6) + 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeMiniHouse::bixmh_Send", v3); } } --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send"; } else { --dword_750CB8; v6 = (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D760) -------------------------------------------------------- void *__thiscall sub_43D760(void *this) { void *v1; // esi@1 void *v2; // eax@1 signed int v3; // edx@1 int v4; // ecx@2 v1 = this; _eh_vector_constructor_iterator_(this, 0x170u, 29, (int)sub_43C170, nullsub_2); *((_DWORD *)v1 + 2670) = 0; v2 = v1; v3 = 29; do { *((_DWORD *)v2 + 1) = 353; *(_DWORD *)v2 = (char *)v2 + 12; *((_WORD *)v2 + 6) = 7193; *((_DWORD *)v1 + 2668) = (char *)v2 + 12; v4 = *(_DWORD *)v2 + 2; *((_DWORD *)v1 + 2669) = v4; *(_WORD *)v4 = -1; v2 = (char *)v2 + 368; --v3; *(_BYTE *)(*((_DWORD *)v1 + 2669) + 2) = 0; } while ( v3 ); *((_DWORD *)v1 + 2669) = *(_DWORD *)v1 + 2; return v1; } //----- (0043D810) -------------------------------------------------------- int __thiscall sub_43D810(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 void *v4; // edi@6 int v5; // eax@7 unsigned __int8 v6; // al@7 int v7; // ebx@8 int v8; // eax@10 int v9; // eax@12 int v11; // [sp-4h] [bp-28h]@13 int v12; // [sp+14h] [bp-10h]@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 2670); if ( v3 <= 0 || v3 > 29 ) { --dword_750CB8; v11 = (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send"; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { v12 = 0; if ( *((_DWORD *)v2 + 2670) > 0 ) { v4 = v2; do { v5 = *(_DWORD *)v4 + 2; *((_DWORD *)v2 + 2669) = v5; v6 = *(_BYTE *)(v5 + 2); if ( v6 ) { v7 = 12 * v6 + 5; if ( sub_4C81E0(v4, 12 * v6 + 5) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void *))(*(_DWORD *)v8 + 12))(v8, a2, v4); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeAbstate::bixa_Send", v7); } } v4 = (char *)v4 + 368; ++v12; } while ( v12 < *((_DWORD *)v2 + 2670) ); } v9 = *(_DWORD *)v2 + 2; *((_DWORD *)v2 + 2670) = 0; *((_DWORD *)v2 + 2669) = v9; } --dword_750CB8; v11 = (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send"; } return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043D990) -------------------------------------------------------- int __thiscall sub_43D990(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // eax@3 int v5; // eax@9 int v7; // [sp+28h] [bp+8h]@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixm_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixm_Send"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 && (v4 = *((_DWORD *)v2 + 1047)) != 0 && *(_BYTE *)v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { v7 = 139 * **((_BYTE **)v2 + 1047) + 3; if ( sub_4C81E0(v2, 139 * **((_BYTE **)v2 + 1047) + 3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void *))(*(_DWORD *)v5 + 12))(v5, v3, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangeMover::bixmv_Send", v7); } } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixm_Send"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043DAC0) -------------------------------------------------------- int __thiscall sub_43DAC0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // esi@8 int v5; // eax@10 int v7; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Send"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Send"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 477); if ( v3 && *(_BYTE *)v3 ) { if ( a2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { v4 = 63 * **((_BYTE **)v2 + 477) + 3; if ( sub_4C81E0(v2, 63 * **((_BYTE **)v2 + 477) + 3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void *))(*(_DWORD *)v5 + 12))(v5, a2, v2); } else { sub_639100(&unk_86DDD8, (int)"BriefInfoExchangePet::bixp_Send", v4); } } --dword_750CB8; v7 = (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Send"; } else { --dword_750CB8; v7 = (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Send"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043DBF0) -------------------------------------------------------- int __thiscall sub_43DBF0(void *this, int a2, int a3) { void *v3; // esi@1 int (__stdcall *v4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@1 int v5; // ST04_4@1 int v6; // edi@1 int v7; // eax@2 int v8; // ST04_4@4 int v9; // eax@4 char v11; // [sp+10h] [bp-24h]@4 int v12; // [sp+1Ch] [bp-18h]@1 int v13; // [sp+20h] [bp-14h]@1 int v14; // [sp+24h] [bp-10h]@1 int v15; // [sp+30h] [bp-4h]@1 v3 = this; v12 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(**(_DWORD **)(a2 + 112) + 36); v5 = *((_WORD *)v3 + 2); v15 = 0; v6 = v4(v5, off_849C18, a2 + 8, a3, &v14, &v13); if ( v6 > 0 ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1056))(v3); if ( *(_BYTE *)(v7 + 1160) == 10 ) sub_62AD70((void *)v7, 0xAu, v13, v14, 0); sub_4287B0(&v11, &off_849C18, v6); v8 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v15) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v9, v8, 0, 0, (int)&v11, 0, 65535); LOBYTE(v15) = 0; sub_428A70(&v11); } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043DD20) -------------------------------------------------------- int __thiscall sub_43DD20(void *this, int a2, int a3, int a4) { int v4; // edi@1 signed int v5; // eax@1 int v6; // ebx@5 int v7; // eax@5 int v8; // esi@5 int v9; // eax@6 int v10; // edi@6 __time32_t v11; // eax@6 __time32_t v12; // esi@6 FILE *v13; // eax@8 __time32_t v14; // eax@10 __time32_t v15; // esi@10 FILE *v16; // eax@12 int v17; // edi@14 __time32_t v18; // eax@14 __time32_t v19; // esi@14 FILE *v20; // eax@16 unsigned int v21; // edi@18 __time32_t v22; // eax@18 __time32_t v23; // esi@18 FILE *v24; // eax@20 int v25; // edi@22 __time32_t v26; // eax@22 __time32_t v27; // eax@22 __time32_t v28; // esi@22 FILE *v29; // eax@24 __time32_t v30; // eax@26 int v31; // eax@28 int v33; // [sp-4h] [bp-24h]@4 int v34; // [sp+28h] [bp+8h]@6 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_8B9620 & 1) ) { dword_8B9620 |= 1u; word_8B961C = 126; atexit(nullsub_13); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_8B961C ) { v6 = a2; v7 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 6)); v8 = v7; if ( v7 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v7 + 1224))(v7, v4); sub_43C5A0((int)&off_74A030, v4); if ( *((_BYTE *)off_74A1A1 + 2) ) { v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v31 + 12))(v31, v8, &off_74A030); } } else { v9 = *(_WORD *)(v4 + 4); v10 = *(_WORD *)(a2 + 2); v34 = v9; v11 = sub_418EA0( (__time32_t)byte_14D15498, (int)"ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD - client hnd["); v12 = v11; if ( byte_7493ED ) { if ( *(_BYTE *)(v11 + 644) ) { sub_418E40(v11); v13 = *(FILE **)(v12 + 256); if ( v13 ) fprintf(v13, "%d", v10); } } v14 = sub_418EA0(v12, (int)"] server hnd["); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); v16 = *(FILE **)(v15 + 256); if ( v16 ) fprintf(v16, "%d", (unsigned __int16)v34); } } v17 = *(_WORD *)(v6 + 4) & 0x3FF; v18 = sub_418EA0(v15, (int)"] command["); v19 = v18; if ( byte_7493ED ) { if ( *(_BYTE *)(v18 + 644) ) { sub_418E40(v18); v20 = *(FILE **)(v19 + 256); if ( v20 ) fprintf(v20, "%d", v17); } } v21 = (unsigned int)*(_WORD *)(v6 + 4) >> 10; v22 = sub_418EA0(v19, (int)"] department["); v23 = v22; if ( byte_7493ED ) { if ( *(_BYTE *)(v22 + 644) ) { sub_418E40(v22); v24 = *(FILE **)(v23 + 256); if ( v24 ) fprintf(v24, "%d", v21); } } v25 = *(_WORD *)(v6 + 6); v26 = sub_418EA0(v23, (int)"]"); v27 = sub_418EA0(v26, (int)"get handle["); v28 = v27; if ( byte_7493ED ) { if ( *(_BYTE *)(v27 + 644) ) { sub_418E40(v27); v29 = *(FILE **)(v28 + 256); if ( v29 ) fprintf(v29, "%d", v25); } } v30 = sub_418EA0(v28, (int)"]"); sub_418F20(v30, (int)&unk_13359E04); } --dword_750CB8; v33 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD"; } else { dword_750CB8 -= v5; v33 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD"; } return sub_467660((int)&unk_D020420, v33); } // 7493ED: using guessed type char byte_7493ED; // 74A030: using guessed type void *off_74A030; // 74A1A1: using guessed type void *off_74A1A1; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B961C: using guessed type __int16 word_8B961C; // 8B9620: using guessed type int dword_8B9620; //----- (0043E000) -------------------------------------------------------- int __thiscall sub_43E000(void *this, int a2) { void *v2; // esi@1 int v3; // ST04_4@1 int v4; // eax@1 int v5; // eax@2 int v6; // esi@5 int v7; // edi@6 signed __int16 v8; // ax@9 char v10; // [sp+Ch] [bp-18h]@1 int v11; // [sp+10h] [bp-14h]@1 int v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [bp-4h]@1 v2 = this; v12 = (int)"CalculateBroadcastDistance::cbd_DistanceSquar"; sub_4675D0((int)&unk_D020420, (int)"CalculateBroadcastDistance::cbd_DistanceSquar"); dword_7508B8[dword_750CB8] = (int)"CalculateBroadcastDistance::cbd_DistanceSquar"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; DNameNode::DNameNode(&v10); v3 = *(_DWORD *)(a2 + 102); LOBYTE(v13) = 1; v4 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v4, v3, (_UNKNOWN *)0x1F4, 0, (int)&v10, 0, 65535); if ( v11 >= *((_DWORD *)v2 + 500) ) { v8 = v11 - *((_WORD *)v2 + 1000); if ( (unsigned __int16)v8 >= 0x1F4u ) v8 = 499; v6 = *((_DWORD *)v2 + (unsigned __int16)v8); } else { v5 = *(_DWORD *)(a2 + 122); if ( v5 && *(_DWORD *)(v5 + 16) ) { if ( sub_549240(a2) == 1 || (v7 = *(_DWORD *)(a2 + 122), *(_DWORD *)(v7 + 292) == 1) ) v6 = -1; else v6 = *(_DWORD *)(*(_DWORD *)(v7 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v7 + 16) + 72); } else { v6 = 0; } } LOBYTE(v13) = 0; sub_427EB0(&v10); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"CalculateBroadcastDistance::cbd_DistanceSquar"); return v6; } // 427F00: using guessed type int __thiscall DNameNode__DNameNode(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043E140) -------------------------------------------------------- int __thiscall sub_43E140(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // ebx@11 int v7; // eax@15 int v8; // eax@16 int v9; // eax@17 int v10; // edi@18 int v12; // [sp-4h] [bp-24h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_8B964C & 1) ) { dword_8B964C |= 1u; word_8B9648 = 126; atexit(nullsub_17); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_8B9648 ) { if ( !(dword_8B964C & 2) ) { dword_8B964C |= 2u; dword_8B9644 = 0; dword_8B9640 = 0; *(_DWORD *)dword_8B963C = 0; strncpy(dword_8B963C, "RouN", 0xCu); atexit(nullsub_16); } if ( !(dword_8B964C & 4) ) { dword_8B964C |= 4u; dword_8B9638 = 0; dword_8B9634 = 0; *(_DWORD *)dword_8B9630 = 0; strncpy(dword_8B9630, "Eld", 0xCu); atexit(nullsub_15); } if ( !(dword_8B964C & 8) ) { dword_8B964C |= 8u; dword_8B962C = 0; dword_8B9628 = 0; *(_DWORD *)dword_8B9624 = 0; strncpy(dword_8B9624, "Urg", 0xCu); atexit(nullsub_14); } v6 = *(_DWORD *)((char *)v4 + 122); if ( v6 ) { if ( *(_DWORD *)dword_8B963C == *(_DWORD *)v6 && dword_8B9640 == *(_DWORD *)(v6 + 4) && dword_8B9644 == *(_DWORD *)(v6 + 8) || (LOBYTE(v7) = sub_401000((int)dword_8B9630, *(_DWORD *)((char *)v4 + 122)), !v7) || (LOBYTE(v8) = sub_401000((int)dword_8B9624, v6), !v8) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3188))(v4); if ( !v9 || (v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 3240))(v9), v10 == (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4)) ) *((_BYTE *)v4 + 23824) |= 8u; } } --dword_750CB8; v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"; } else { dword_750CB8 -= v5; v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"; } return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B9628: using guessed type int dword_8B9628; // 8B962C: using guessed type int dword_8B962C; // 8B9634: using guessed type int dword_8B9634; // 8B9638: using guessed type int dword_8B9638; // 8B9640: using guessed type int dword_8B9640; // 8B9644: using guessed type int dword_8B9644; // 8B9648: using guessed type __int16 word_8B9648; // 8B964C: using guessed type int dword_8B964C; //----- (0043E370) -------------------------------------------------------- int __thiscall sub_43E370(void *this) { unsigned int v1; // ST10_4@1 void *v2; // edi@1 __int16 v3; // bx@1 int (__stdcall *v4)(_DWORD); // eax@1 int (*v5)(void); // eax@4 int (__thiscall *v6)(_DWORD); // eax@4 int v7; // eax@4 int v8; // ST10_4@9 char *v9; // eax@9 int v10; // esi@9 void *v11; // eax@9 void *v12; // esi@9 int v13; // eax@9 int v14; // eax@9 __int16 v15; // cx@9 int v16; // ST0C_4@9 int v17; // eax@9 int v18; // esi@9 int v19; // eax@11 int v20; // eax@12 int (**v22)(); // [sp+10h] [bp-C0h]@1 char *v23; // [sp+14h] [bp-BCh]@1 int v24; // [sp+18h] [bp-B8h]@1 int v25; // [sp+1Ch] [bp-B4h]@1 __int16 v26; // [sp+20h] [bp-B0h]@1 int v27; // [sp+24h] [bp-ACh]@9 int (**v28)(); // [sp+28h] [bp-A8h]@4 char *v29; // [sp+2Ch] [bp-A4h]@4 int v30; // [sp+34h] [bp-9Ch]@4 int v31; // [sp+38h] [bp-98h]@6 int *v32; // [sp+3Ch] [bp-94h]@4 int v33; // [sp+40h] [bp-90h]@4 int v34; // [sp+44h] [bp-8Ch]@4 int v35; // [sp+48h] [bp-88h]@9 int v36; // [sp+4Ch] [bp-84h]@1 int v37; // [sp+50h] [bp-80h]@9 int v38; // [sp+54h] [bp-7Ch]@9 int v39; // [sp+58h] [bp-78h]@9 unsigned int v40; // [sp+C0h] [bp-10h]@1 int v41; // [sp+CCh] [bp-4h]@1 int v42; // [sp+D0h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v1 = (unsigned int)&v42 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"; dword_750AB8[dword_750CB8++] = -1; v3 = word_14D2119A; v22 = &off_6A86A4; v23 = (char *)v2 + 53776; v4 = *(int (__stdcall **)(_DWORD))(*((_DWORD *)v2 + 13444) + 8); v41 = 0; LOWORD(v36) = word_14D2119A; v25 = v4(v1); v22 = (int (**)())&off_6A86BC; v26 = v3; LOBYTE(v41) = 1; v24 = 0; if ( (unsigned __int8)off_6A86BC(&v22) || sub_63F7F0(&v22) ) { --dword_750CB8; v22 = &off_6A86A4; } else { v28 = &off_6A86A4; v29 = (char *)v2 + 53776; v5 = *(int (**)(void))(*((_DWORD *)v2 + 13444) + 8); LOBYTE(v41) = 0; v30 = v5(); v28 = (int (**)())&off_6A86B4; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); LOBYTE(v41) = 2; v7 = v6(v2); v32 = (int *)&v28; v33 = v7; v34 = 12; if ( sub_486D40(&v32) ) { while ( 1 ) { v31 = v32[2]; if ( (unsigned int)(v31 - 1) > 9 ) break; if ( !sub_486DA0((void **)&v32) ) { --dword_750CB8; goto LABEL_13; } } v35 = (**(int (__stdcall ***)(_DWORD))v32[1])(v32[2]); v8 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v9 = sub_5A7540(byte_14D16AE8); v10 = v36; sub_63D0E0(&v37, v36, 5, *((_DWORD *)v9 + 4), v8); LOWORD(v39) = v3; v11 = sub_63ACA0(dword_1508B168, v10); (*(void (__thiscall **)(void *, int, int *, _DWORD))(*(_DWORD *)v11 + 20))(v11, v10, &v37, "-o"); v12 = off_849C18; *((_WORD *)off_849C18 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_WORD *)v12 = 13415; *((_WORD *)v12 + 4) = *((_WORD *)v2 + 29346); *(_DWORD *)((char *)v12 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v13 = *(_DWORD *)((char *)v2 + 122); *(_DWORD *)((char *)v12 + 14) = *(_DWORD *)v13; *(_DWORD *)((char *)v12 + 18) = *(_DWORD *)(v13 + 4); *(_DWORD *)((char *)v12 + 22) = *(_DWORD *)(v13 + 8); v14 = *(_DWORD *)((char *)v2 + 102); *(_DWORD *)((char *)v12 + 26) = *(_DWORD *)v14; v15 = v31; *(_DWORD *)((char *)v12 + 30) = *(_DWORD *)(v14 + 4); *((_WORD *)v12 + 22) = v36; *((_WORD *)v12 + 17) = v15 & 0x3FF | 0x3000; v27 = (int)((char *)v12 + 34); *((_DWORD *)v12 + 9) = v37; *((_DWORD *)v12 + 10) = v38; *((_WORD *)v12 + 23) = 46; v16 = v39; v17 = (int)sub_63ACA0(dword_1508B168, v39); v18 = sub_63D0C0(&v37, v17, v16, (int)((char *)v12 + 48)) - (_DWORD)((char *)v12 + 48) + 48; if ( sub_4C81E0(&off_849C18, v18) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v18); } v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(char *, _DWORD, int, int *, int, int))(*((_DWORD *)v2 + 14672) + 64))( (char *)v2 + 58688, *(_WORD *)(v20 + 4), v35, &v37, v27, v27); ++*((_WORD *)v2 + 29346); --dword_750CB8; } else { --dword_750CB8; } LABEL_13: v28 = &off_6A86A4; } v41 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D2119A: using guessed type __int16 word_14D2119A; //----- (0043E6F0) -------------------------------------------------------- int __stdcall sub_43E6F0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 988))(v2, a1 + 8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043E7D0) -------------------------------------------------------- int __stdcall sub_43E7D0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 844))(v2, a1 + 2); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043E8D0) -------------------------------------------------------- int __thiscall sub_43E8D0(void *this, int *a2) { unsigned int v2; // ST0C_4@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // eax@1 int v6; // edi@6 int v7; // eax@13 int v8; // eax@14 char v10; // [sp+Ch] [bp-110h]@4 unsigned int v11; // [sp+10Ch] [bp-10h]@1 int v12; // [sp+118h] [bp-4h]@1 int v13; // [sp+11Ch] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v2 = (unsigned int)&v13 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MakeMiniHouse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_MakeMiniHouse"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2004); v12 = 0; v5 = v4(v3, v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int, _DWORD))(*(_DWORD *)v5 + 28))(v5, v3, *(_WORD *)a2, 0) ) { if ( byte_7493ED ) { if ( byte_14D15494 ) { sprintf(&v10, "%.255s", "ShineObjectClass::ShinePlayer::so_ply_MakeMiniHouse : "); sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fputs(&v10, dword_14D15310); } } v6 = *(_WORD *)a2; if ( byte_7493ED ) { if ( byte_14D15494 ) { sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fprintf(dword_14D15310, "%d", v6); } if ( byte_7493ED && byte_14D15494 && dword_14D15310 ) { v7 = sub_418E40((__time32_t)byte_14D15210); sub_654AB0(10, (FILE *)v7); fflush(dword_14D15310); fclose(dword_14D15310); dword_14D15310 = 0; } } } v8 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v3 + 53776))(v3 + 53776, 0); if ( *(_WORD *)(v8 + 8) != -1 ) sub_532D50((void *)(v3 + 155460), v3, v8); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MakeMiniHouse"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D15494: using guessed type char byte_14D15494; //----- (0043EAB0) -------------------------------------------------------- int __thiscall sub_43EAB0(void *this) { void *v1; // esi@1 bool v2; // zf@1 char v4; // [sp+8h] [bp-50h]@2 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 int v7; // [sp+58h] [bp+0h]@1 v5 = (unsigned int)&v7 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_BYTE *)v1 + 32761) == 0; v6 = 0; if ( !v2 ) { sprintf( &v4, "From %d.%d.%d.%d", *((_BYTE *)v1 + 160872), *((_BYTE *)v1 + 160873), *((_BYTE *)v1 + 160874), *((_BYTE *)v1 + 160875)); (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v1 + 1924))(v1, &v4); } *((_BYTE *)v1 + 160876) = 0; --dword_750CB8; v6 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0043EBB0) -------------------------------------------------------- int __stdcall sub_43EBB0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_CONNECTFROMWHERE_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_CONNECTFROMWHERE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2368))(v2, *(_BYTE *)(a1 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_CONNECTFROMWHERE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043EC90) -------------------------------------------------------- int __thiscall sub_43EC90(void *this) { void *v1; // edi@1 int (__thiscall *v2)(_DWORD); // eax@1 int v3; // esi@1 int (__stdcall **v5)(int, int, int); // [sp+10h] [bp-28h]@1 int v6; // [sp+14h] [bp-24h]@1 int v7; // [sp+18h] [bp-20h]@1 int v8; // [sp+1Ch] [bp-1Ch]@1 int v9; // [sp+20h] [bp-18h]@1 int v10; // [sp+24h] [bp-14h]@1 unsigned int v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@1 int v13; // [sp+38h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GhostBan"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GhostBan"; dword_750AB8[dword_750CB8++] = -1; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1388); v12 = 0; v3 = v2(v1); sub_427BE0(&v5); v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v5 = &off_6A8700; v6 = *(_DWORD *)v3; v7 = *(_DWORD *)(v3 + 4); v8 = *(_DWORD *)(v3 + 8); v9 = *(_DWORD *)(v3 + 12); v10 = *(_DWORD *)(v3 + 16); LOBYTE(v12) = 1; sub_549B60(v1, (int)&v5, 0); LOBYTE(v12) = 0; v5 = &off_6A8700; sub_427EB0(&v5); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GhostBan"); } // 6A8700: using guessed type int (__stdcall *off_6A8700)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0043EDA0) -------------------------------------------------------- int __cdecl sub_43EDA0() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_WeaponRangeSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_WeaponRangeSet"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_WeaponRangeSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043EDE0) -------------------------------------------------------- int __thiscall sub_43EDE0(void *this) { void *v1; // edi@1 int v2; // ebx@1 unsigned __int16 v3; // cx@1 int v4; // esi@4 int v5; // edx@6 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8204))( (char *)v1 + 32816, 10); v3 = *(_WORD *)((*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8204))( (char *)v1 + 32816, 12) + 8); if ( v3 == -1 ) v3 = *(_WORD *)(v2 + 8); if ( v3 < (unsigned int)dword_14D20894 ) { v4 = dword_14D21184 + 40 * v3; if ( v4 ) { if ( *(_DWORD *)v4 ) { v5 = **(_WORD **)v4; if ( (_WORD)v5 == v3 ) { if ( *(_DWORD *)(*(_DWORD *)v4 + 232) == 2 || *(_DWORD *)(*(_DWORD *)v4 + 232) == 10 ) { *((_DWORD *)v1 + 38855) = 600; goto LABEL_9; } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * v3); } } } } *((_DWORD *)v1 + 38855) = 120; LABEL_9: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0043EF20) -------------------------------------------------------- int __stdcall sub_43EF20(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_AAAAAAA || (result = operator new(24 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0043EF90) -------------------------------------------------------- void *__thiscall sub_43EF90(void *this, char a2) { void *v2; // esi@1 v2 = this; nullsub_2((char *)this + 16); sub_5C9980(v2); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0043F000) -------------------------------------------------------- void *__thiscall sub_43F000(void *this, __int16 a2) { void *v2; // esi@1 v2 = this; if ( !(dword_8BB23C & 1) ) { dword_8BB23C |= 1u; sub_43B950(&word_8B9650); atexit(sub_698BC0); } word_8B9650 = a2; return bsearch( &word_8B9650, (char *)v2 + 4, *(_DWORD *)v2, 0x1BECu, (int (__cdecl *)(const void *, const void *))sub_4A2220); } // 8B9650: using guessed type __int16 word_8B9650; // 8BB23C: using guessed type int dword_8BB23C; //----- (0043F090) -------------------------------------------------------- int __thiscall sub_43F090(int this) { return *(_WORD *)(*(_DWORD *)(this + 68) + 20); } //----- (0043F0A0) -------------------------------------------------------- int __thiscall sub_43F0A0(int this) { int v1; // eax@2 int result; // eax@2 if ( *(_DWORD *)this != 3 ) { *(_DWORD *)this = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 8) = 0; v1 = *(_DWORD *)(*(_DWORD *)(this + 4) + 102); *(_DWORD *)(this + 20) = *(_DWORD *)v1; result = *(_DWORD *)(v1 + 4); *(_DWORD *)(this + 24) = result; } return result; } //----- (0043F0D0) -------------------------------------------------------- signed int __thiscall sub_43F0D0(void *this, int a2, int a3, int a4, signed int a5, int a6, unsigned __int16 a7, __int16 a8, int a9, int a10) { int v10; // esi@1 int v11; // eax@1 int v12; // eax@3 int v13; // ST00_4@3 int v14; // eax@3 signed int result; // eax@4 signed int v16; // edi@5 int v17; // eax@8 int v18; // eax@8 v10 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_Build"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDoor::so_door_Build"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(v10 + 332) = 0; *(_DWORD *)(v10 + 8007) = *(_DWORD *)a2; *(_DWORD *)(v10 + 8011) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v10 + 8015) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v10 + 8023) = a4; v11 = a5 / 2; *(_DWORD *)(v10 + 8019) = a3; if ( a5 / 2 < 0 ) LOBYTE(v11) = v11 - 76; *(_BYTE *)(v10 + 8027) = v11; v12 = *(_DWORD *)(v10 + 8003); *(_DWORD *)(v12 + 4) = a3; *(_DWORD *)(v12 + 8) = *(_DWORD *)(v10 + 8023); *(_BYTE *)(*(_DWORD *)(v10 + 8003) + 12) = *(_BYTE *)(v10 + 8027); *(_BYTE *)(*(_DWORD *)(v10 + 8003) + 13) = 0; v13 = *(_DWORD *)(v10 + 8003) + 14; *(_DWORD *)(*(_DWORD *)(v10 + 8003) + 42) = 0; *(_DWORD *)(v13 + 24) = 0; *(_DWORD *)(v13 + 20) = 0; *(_DWORD *)(v13 + 16) = 0; *(_DWORD *)(v13 + 12) = 0; *(_DWORD *)(v13 + 8) = 0; *(_DWORD *)(v13 + 4) = 0; *(_DWORD *)v13 = 0; strncpy((char *)v13, byte_6A492E, 0x20u); v14 = sub_418D40((int)&unk_14D159B0, a7); *(_DWORD *)(v10 + 8028) = v14; if ( v14 != 0 ) { v16 = sub_465790((void *)v10, 1); if ( v16 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_Build"); result = v16; } else { *(_DWORD *)(v10 + 8032) = *(_DWORD *)(**(_DWORD **)(v10 + 8028) + 70); **(_WORD **)(v10 + 8003) = a6; *(_WORD *)(*(_DWORD *)(v10 + 8003) + 2) = a7; *(_WORD *)(*(_DWORD *)(v10 + 8003) + 46) = a8; sub_548CF0(v10, a9, a10); (*(void (__thiscall **)(int, int))(*(_DWORD *)v10 + 1784))(v10, a6); if ( *(_DWORD *)(v10 + 368) != 3 ) { v17 = *(_DWORD *)(v10 + 372); *(_DWORD *)(v10 + 368) = 0; *(_DWORD *)(v10 + 396) = 0; *(_DWORD *)(v10 + 400) = 0; *(_DWORD *)(v10 + 404) = 0; *(_DWORD *)(v10 + 408) = 0; *(_DWORD *)(v10 + 412) = 0; *(_DWORD *)(v10 + 376) = 0; v18 = *(_DWORD *)(v17 + 102); *(_DWORD *)(v10 + 388) = *(_DWORD *)v18; *(_DWORD *)(v10 + 392) = *(_DWORD *)(v18 + 4); } *(_WORD *)(v10 + 332) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_Build"); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDoor::so_door_Build : Not in MobDataBox", 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_Build"); result = 3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043F360) -------------------------------------------------------- int __thiscall sub_43F360(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@2 int v4; // edi@5 int v5; // eax@7 char v6; // al@7 int v7; // edx@7 int v8; // eax@8 int v9; // eax@8 int v10; // eax@8 signed int v11; // eax@8 void *v12; // ecx@9 void *v13; // edx@11 char v14; // al@12 int v15; // eax@16 char v16; // al@17 int v18; // [sp-4h] [bp-30h]@6 signed int v19; // [sp+14h] [bp-18h]@8 char v20; // [sp+18h] [bp-14h]@5 char v21; // [sp+1Fh] [bp-Dh]@8 int v22; // [sp+28h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 122); v22 = 0; if ( !v2 || (v3 = *(_DWORD *)(v2 + 12)) == 0 || *(_BYTE *)(v3 + 54) != 1 ) { --dword_750CB8; LABEL_24: v18 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"; goto LABEL_25; } if ( *(_DWORD *)(v2 + 60) == -1 ) { if ( *(_WORD *)(*(_DWORD *)(v2 + 68) + 20) <= 0u ) { sub_43C920(v1); --dword_750CB8; } else { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); --dword_750CB8; } goto LABEL_24; } v4 = sub_494970(&dword_D61E090, *(_DWORD *)(v2 + 60), (int)&v20); if ( v4 == 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ : Cannot found KQ Element", *(_DWORD *)(*(_DWORD *)((char *)v1 + 122) + 60)); --dword_750CB8; v18 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"; LABEL_25: v22 = -1; return sub_467660((int)&unk_D020420, v18); } v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v6 = sub_498120(v4 + 1040, v5); v7 = *(_DWORD *)v1; if ( v6 == 1 ) { v8 = (*(int (__thiscall **)(void *))(v7 + 836))(v1); v19 = sub_497E30(v4 + 1040, v8); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v10 = sub_497ED0((void *)(v4 + 1040), (int (__stdcall *)(_DWORD))sub_494710, v9); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v1 + 3580))(v1, v10); v11 = sub_496040((void *)v4, (int)&v21); if ( v19 < v11 ) { v13 = off_849C18; *(_WORD *)off_849C18 = 22552; if ( v11 == 99999 ) v14 = 0; else v14 = v11 - v19; *((_BYTE *)v13 + 2) = v14; if ( sub_4C81E0(&off_849C18, 3) ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v15 + 12))(v15, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ : Packet Too Long", 3); } goto LABEL_19; } v12 = v1; } else { v16 = (*(int (__thiscall **)(void *))(v7 + 1236))(v1); v12 = v1; if ( v16 ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1924))(v1, "Doing KQ"); goto LABEL_19; } } sub_43C920(v12); LABEL_19: --dword_750CB8; v22 = -1; v18 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D61E090: using guessed type int dword_D61E090; //----- (0043F5A0) -------------------------------------------------------- int __stdcall sub_43F5A0(int a1) { sub_43CF10(&off_74A1A8, a1); sub_43D040(&off_74BD48, a1); sub_43D170(&off_74CED8, a1); sub_43D3D0(&off_74DA48, a1); sub_43D500(&off_74DC20, a1); sub_43D630(&off_74DE18, a1); sub_43D810(&unk_8B42A0, a1); sub_43D810(&unk_8B6C60, a1); sub_43D990(&off_74E5B0, a1); return sub_43DAC0(&off_74F610, a1); } // 74A1A8: using guessed type void *off_74A1A8; // 74BD48: using guessed type __int16 *off_74BD48; // 74CED8: using guessed type void *off_74CED8; // 74DA48: using guessed type void *off_74DA48; // 74DC20: using guessed type void *off_74DC20; // 74DE18: using guessed type void *off_74DE18; // 74E5B0: using guessed type void *off_74E5B0; // 74F610: using guessed type __int16 *off_74F610; //----- (0043F620) -------------------------------------------------------- int __thiscall sub_43F620(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( v4 == v5 || v4 == -1 || v5 == -1 ) { if ( sub_499E90(a2, a3) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1224))(a2, a3); if ( sub_499E90(a3, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 1767) >= 0x1Du ) { sub_43CF10(v3, a2); **((_BYTE **)v3 + 1767) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, 235 * (**((_BYTE **)v3 + 1767))++ + *((_DWORD *)v3 + 1767) + 1); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043F760) -------------------------------------------------------- int __thiscall sub_43F760(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( (v4 == v5 || v4 == -1 || v5 == -1) && sub_499E90(a3, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 1122) >= 0x1Du ) { sub_43D040(v3, a2); **((_BYTE **)v3 + 1122) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, 149 * (**((_BYTE **)v3 + 1122))++ + *((_DWORD *)v3 + 1122) + 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMob::bixm_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043F880) -------------------------------------------------------- int __thiscall sub_43F880(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@2 int v5; // ecx@2 _BYTE *v6; // ecx@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Exchange"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v6[20] = 0; if ( **((_BYTE **)v3 + 364) >= 0x1Du ) { sub_43D170(v3, a2); **((_BYTE **)v3 + 364) = 0; } (*(void (__stdcall **)(int))(*(_DWORD *)a3 + 1220))(*((_DWORD *)v3 + 364) + 48 * (**((_BYTE **)v3 + 364))++ + 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0043F9C0) -------------------------------------------------------- int __thiscall sub_43F9C0(void *this, int a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Exchange"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 364) >= 0x1Du ) { sub_43D2A0(v3, a2); **((_BYTE **)v3 + 364) = 0; } (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a3 + 1220))(*((_DWORD *)v3 + 364) + 48 * (**((_BYTE **)v3 + 364))++ + 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043FAC0) -------------------------------------------------------- int __thiscall sub_43FAC0(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // eax@1 int v5; // ecx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( (v4 == v5 || v4 == -1 || v5 == -1) && sub_499E90(a3, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 117) >= 0x1Du ) { sub_43D3D0(v3, a2); **((_BYTE **)v3 + 117) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1336))(a2, a3); (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, 15 * (**((_BYTE **)v3 + 117))++ + *((_DWORD *)v3 + 117) + 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeItem::bixi_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043FBF0) -------------------------------------------------------- int __thiscall sub_43FBF0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( (v4 == v5 || v4 == -1 || v5 == -1) && sub_499E90(a3, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 124) >= 0x1Du ) { sub_43D500(v3, a2); **((_BYTE **)v3 + 124) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, *((_DWORD *)v3 + 124) + 16 * **((_BYTE **)v3 + 124) + 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043FD00) -------------------------------------------------------- int __thiscall sub_43FD00(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( v4 == v5 || v4 == -1 || v5 == -1 ) { if ( sub_499E90(a2, a3) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1224))(a2, a3); if ( sub_499E90(a3, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 484) >= 0x1Du ) { sub_43D630(v3, a2); **((_BYTE **)v3 + 484) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, ((**((_BYTE **)v3 + 484))++ << 6) + *((_DWORD *)v3 + 484) + 1); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043FE30) -------------------------------------------------------- int __thiscall sub_43FE30(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 int v6; // eax@7 int v7; // eax@11 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( (v4 == v5 || v4 == -1 || v5 == -1) && sub_499E90(a3, a2) ) { if ( sub_499E90(a2, a3) ) { sub_43C5A0((int)&off_74A030, a2); if ( *((_BYTE *)off_74A1A1 + 2) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a3, &off_74A030); } } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( *((_DWORD *)v3 + 2670) > 29 ) { sub_43D810(v3, a2); *((_DWORD *)v3 + 2670) = 0; } v7 = *((_DWORD *)v3 + 92 * *((_DWORD *)v3 + 2670)) + 2; *((_DWORD *)v3 + 2669) = v7; *(_WORD *)v7 = *(_WORD *)(a3 + 4); *(_BYTE *)(*((_DWORD *)v3 + 2669) + 2) = 0; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 2708))( a3, *((_DWORD *)v3 + 2669) + 3, *((_DWORD *)v3 + 2669) + 2); ++*((_DWORD *)v3 + 2670); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Exchange"); } // 74A030: using guessed type void *off_74A030; // 74A1A1: using guessed type void *off_74A1A1; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0043FFB0) -------------------------------------------------------- int __thiscall sub_43FFB0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@5 int v5; // ecx@5 int v7; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixmv_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixmv_Exchange"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( a3 ) { if ( *((_DWORD *)v3 + 1047) ) { v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( v4 == v5 || v4 == -1 || v5 == -1 ) { if ( sub_499E90(a3, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 1047) >= 0x1Du ) { sub_43D990(v3, a2); **((_BYTE **)v3 + 1047) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, 139 * (**((_BYTE **)v3 + 1047))++ + *((_DWORD *)v3 + 1047) + 1); } } } } --dword_750CB8; v7 = (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixmv_Exchange"; } else { --dword_750CB8; v7 = (int)"BriefInfoExchanger::BriefInfoExchangeMover::bixmv_Exchange"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004400F0) -------------------------------------------------------- int __thiscall sub_4400F0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@4 int v5; // ecx@4 int v7; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Exchange"); dword_7508B8[dword_750CB8] = (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Exchange"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( a3 ) { v4 = **(_DWORD **)(a2 + 118); v5 = **(_DWORD **)(a3 + 118); if ( v4 == v5 || v4 == -1 || v5 == -1 ) { if ( sub_499E90(a3, a2) && *((_DWORD *)v3 + 477) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { if ( **((_BYTE **)v3 + 477) >= 0x1Du ) { sub_43DAC0(v3, a2); **((_BYTE **)v3 + 477) = 0; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a3 + 1220))( a3, 63 * (**((_BYTE **)v3 + 477))++ + *((_DWORD *)v3 + 477) + 1); } } } --dword_750CB8; v7 = (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Exchange"; } else { --dword_750CB8; v7 = (int)"BriefInfoExchanger::BriefInfoExchangePet::bixp_Exchange"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00440230) -------------------------------------------------------- int __thiscall sub_440230(void *this) { void *v1; // esi@1 signed int v2; // edi@1 int v3; // eax@1 int v4; // eax@2 int v5; // eax@6 int v6; // eax@7 int v7; // ebx@7 int (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // edx@8 int v9; // edi@9 int v10; // edi@10 void *v11; // ecx@11 int v12; // eax@11 void *v13; // ecx@12 int v15; // [sp-8h] [bp-B0h]@15 char v16; // [sp+Ch] [bp-9Ch]@11 char v17; // [sp+24h] [bp-84h]@9 int v18; // [sp+28h] [bp-80h]@1 int v19; // [sp+2Ch] [bp-7Ch]@8 int v20; // [sp+30h] [bp-78h]@8 char v21; // [sp+34h] [bp-74h]@13 unsigned int v22; // [sp+98h] [bp-10h]@1 int v23; // [sp+A4h] [bp-4h]@1 int v24; // [sp+A8h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v1 = this; v18 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)((char *)v1 + 122); v23 = 0; if ( !v3 || (v4 = *(_DWORD *)(v3 + 12)) == 0 || *(_BYTE *)(v4 + 54) != 3 ) { --dword_750CB8; goto LABEL_19; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1) >= 0x64u ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1924))(v1, "You are administrator."); --dword_750CB8; LABEL_19: v15 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; goto LABEL_20; } v5 = *(_DWORD *)((char *)v1 + 122); if ( *(_WORD *)(*(_DWORD *)(v5 + 68) + 20) < 1u || (v6 = sub_418B00((int)byte_85A2C0, *(_DWORD *)(v5 + 12)), (v7 = sub_4858E0(&unk_D714FF8, (const char *)v6)) == 0) || (v8 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 2700), v19 = -1, v20 = -1, !(unsigned __int8)v8(v1, &v19, &v20)) ) { LABEL_17: sub_43C920(v1); --dword_750CB8; v15 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; LABEL_20: v23 = v2; return sub_467660((int)&unk_D020420, v15); } v9 = *(_DWORD *)((char *)v1 + 122); if ( v9 != sub_483F50((void *)v7, v20, v19, (int)&v17) || (v10 = sub_483740((int)&unk_CFCF380, *(_DWORD *)(v9 + 12))) == 0 ) { v2 = -1; goto LABEL_17; } sub_4E20F0(&v16, -1, 0, 0, 100); v11 = *(void **)((char *)v1 + 122); LOBYTE(v23) = 1; v12 = sub_462A60(v11); sub_549B60((void *)v12, (int)&v16, 0); if ( sub_4B81F0((int)&v16) > *(_BYTE *)(v10 + 107) ) { v13 = *(void **)((char *)v1 + 122); if ( v13 ) { if ( sub_462AC0(v13, (int)&v21) ) (*(void (__thiscall **)(void *, char *, _DWORD))(*(_DWORD *)v1 + 1020))(v1, &v21, 0); } } LOBYTE(v23) = 0; sub_4E2170(&v16); --dword_750CB8; v23 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00440460) -------------------------------------------------------- int __thiscall sub_440460(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // edi@4 unsigned __int16 i; // bx@5 int v5; // eax@8 unsigned __int16 v6; // dx@8 bool v7; // zf@8 int v8; // eax@8 int v9; // eax@9 int v10; // eax@11 int v11; // eax@14 int v12; // eax@14 int v13; // eax@15 int v14; // edx@18 int v16; // [sp-4h] [bp-34h]@2 unsigned __int16 v17; // [sp+12h] [bp-1Eh]@8 void *v18; // [sp+20h] [bp-10h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RemoveField"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RemoveField"; dword_750AB8[dword_750CB8++] = -1; v18 = *(void **)((char *)v1 + 122); if ( v18 ) { v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1324))(v1); if ( v2 ) { v3 = v2 + 3364; if ( v2 != -3364 ) { for ( i = *(_WORD *)(*(_DWORD *)(v2 + 3372) + 12 * *(_WORD *)(v2 + 3378) + 4); i < *(_WORD *)(v3 + 4); i = v17 ) { v5 = *(_DWORD *)(v3 + 8); v6 = *(_WORD *)(v5 + 12 * i + 4); v7 = *(_BYTE *)(v5 + 12 * i + 8) == 0; v8 = v5 + 12 * i; v17 = v6; if ( v7 ) v9 = 0; else v9 = *(_DWORD *)v8; v10 = *(_DWORD *)dword_87150C[3 * *(_DWORD *)(v9 + 4)]; if ( v10 && sub_4637F0(v18, *(_DWORD *)(v10 + 34)) ) { if ( i >= *(_WORD *)(v3 + 4) || (v11 = *(_DWORD *)(v3 + 8), v7 = *(_BYTE *)(v11 + 12 * i + 8) == 0, v12 = v11 + 12 * i, v7) ) v13 = 0; else v13 = *(_DWORD *)v12; *(_BYTE *)v13 |= 4u; if ( i < *(_WORD *)(v3 + 4) && (v14 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v14 + 12 * i + 8)) ) *(_DWORD *)(*(_DWORD *)(v14 + 12 * i) + 32) = dword_14D129E8; else v20 = dword_14D129E8; } } } } --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_RemoveField"; } else { --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_RemoveField"; } return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (004405F0) -------------------------------------------------------- int __cdecl sub_4405F0(int a1, int a2, int a3) { int v3; // ecx@2 int result; // eax@2 int v5; // esi@3 if ( a1 == a2 ) { result = a3; } else { v3 = a1 + 8; result = a3; do { *(_DWORD *)(result + 4) = *(_DWORD *)(v3 - 4); *(_DWORD *)(result + 8) = *(_DWORD *)v3; *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 8); v5 = *(_DWORD *)(v3 + 12); v3 += 24; *(_DWORD *)(result + 20) = v5; result += 24; } while ( v3 - 8 != a2 ); } return result; } //----- (00440640) -------------------------------------------------------- char __thiscall sub_440640(int this) { int (__stdcall **v2)(int, int); // [sp+4h] [bp-14h]@1 int v3; // [sp+8h] [bp-10h]@1 int v4; // [sp+14h] [bp-4h]@1 *(_BYTE *)(this + 23080) = 0; v2 = &off_6A8F9C; v3 = this + 12; v4 = 0; return sub_43C470(this + 12, (int)&v2); } // 6A8F9C: using guessed type int (__stdcall *off_6A8F9C)(int, int); //----- (004406A0) -------------------------------------------------------- int __thiscall sub_4406A0(void *this) { void *v1; // esi@1 void (__thiscall *v2)(_DWORD); // eax@1 void (__thiscall *v3)(_DWORD); // eax@1 int v5; // [sp+10h] [bp-18h]@1 int v6; // [sp+18h] [bp-10h]@1 int v7; // [sp+24h] [bp-4h]@1 v1 = this; v6 = (int)"ShineObjectClass::ShinePlayer::sp_LoginInit"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LoginInit"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_LoginInit"; dword_750AB8[dword_750CB8++] = -1; v2 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 992); v7 = 0; *((_BYTE *)v1 + 160756) = -1; v2(v1); *((_DWORD *)v1 + 40199) = 0; *((_DWORD *)v1 + 40200) = sub_5131E0; *((_DWORD *)v1 + 40203) = sub_452C70; *((_DWORD *)v1 + 40202) = 0; v3 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3092); *((_BYTE *)v1 + 82020) = 0; v3(v1); sub_43CAE0(v1); *((_DWORD *)v1 + 89) = 0; sub_56B680((int)((char *)v1 + 155356)); *((_BYTE *)v1 + 7888) &= 0xE7u; *((_DWORD *)v1 + 40204) = -1; LOBYTE(v7) = 1; sub_43C470((int)((char *)v1 + 160832), (int)&v5); memcpy((char *)v1 + 81792, &dword_DA12010, 0xCCu); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LoginInit"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA12010: using guessed type int dword_DA12010; //----- (004407E0) -------------------------------------------------------- int __cdecl sub_4407E0(int a1, int a2, int a3) { int v3; // ecx@2 int result; // eax@2 if ( a1 == a2 ) { result = a3; } else { v3 = a1 + 8; result = a3; do { if ( result ) { *(_DWORD *)result = &off_6A8FAC; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 - 4); *(_DWORD *)(result + 8) = *(_DWORD *)v3; *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 20) = *(_DWORD *)(v3 + 12); } v3 += 24; result += 24; } while ( v3 - 8 != a2 ); } return result; } // 6A8FAC: using guessed type int (__thiscall *off_6A8FAC)(void *, char); //----- (00440830) -------------------------------------------------------- int __thiscall sub_440830(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // edi@1 int result; // eax@2 int v8; // eax@7 int v9; // ecx@20 int v10; // [sp+8h] [bp-8h]@20 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a4; if ( !*(_DWORD *)(this + 8) ) { sub_5CC4F0(this, a2, 1, v5, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v5 ) { if ( *(_WORD *)(a4 + 12) < *(_WORD *)(a3 + 12) ) { sub_5CC4F0(this, a2, 1, a3, (void *)a4); return a2; } goto LABEL_20; } if ( a3 == v5 ) { v8 = *(_DWORD *)(v5 + 8); if ( *(_WORD *)(v8 + 12) < *(_WORD *)(a4 + 12) ) { sub_5CC4F0(this, a2, 0, v8, (void *)a4); return a2; } goto LABEL_20; } if ( *(_WORD *)(a4 + 12) >= *(_WORD *)(a3 + 12) || (a4 = a3, sub_5CC450(&a4), *(_WORD *)(a4 + 12) >= *(_WORD *)(v6 + 12)) ) { if ( *(_WORD *)(a3 + 12) >= *(_WORD *)(v6 + 12) || (a4 = a3, sub_5CC3C0(&a4), a4 != *(_DWORD *)(v4 + 4)) && *(_WORD *)(v6 + 12) >= *(_WORD *)(a4 + 12) ) { LABEL_20: v9 = *(_DWORD *)sub_4240B0(v4, (int)&v10, (void *)v6, 0); result = a2; *(_DWORD *)a2 = v9; return result; } if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 21) ) { sub_5CC4F0(v4, a2, 0, a3, (void *)v6); result = a2; } else { sub_5CC4F0(v4, a2, 1, a4, (void *)v6); result = a2; } } else { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 21) ) { sub_5CC4F0(v4, a2, 0, a4, (void *)v6); result = a2; } else { sub_5CC4F0(v4, a2, 1, a3, (void *)v6); result = a2; } } return result; } //----- (004409A0) -------------------------------------------------------- int __thiscall sub_4409A0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 int v10; // edi@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 21) ) { v10 = *((_DWORD *)a3 + 3); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v7 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 21) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5CC4F0(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5CC450(&a4); v11 = a4; v4 = a3; } if ( *(_DWORD *)(v11 + 12) >= *((_DWORD *)v4 + 3) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5CC4F0(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (00440A80) -------------------------------------------------------- void __cdecl sub_440A80(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 void *v4; // eax@3 int v5; // [sp+0h] [bp-3Ch]@1 char v6; // [sp+10h] [bp-2Ch]@3 char v7; // [sp+20h] [bp-1Ch]@5 int v8; // [sp+28h] [bp-14h]@1 int *v9; // [sp+2Ch] [bp-10h]@1 int v10; // [sp+38h] [bp-4h]@1 v9 = &v5; v2 = a1; v3 = a2; v8 = a1; v10 = 0; while ( v3 ) { v4 = sub_5C9AF0(&v6); if ( v2 ) { *(_DWORD *)v2 = &off_6A8FAC; *(_DWORD *)(v2 + 4) = *((_DWORD *)v4 + 1); *(_DWORD *)(v2 + 8) = *((_DWORD *)v4 + 2); *(_DWORD *)(v2 + 12) = *((_DWORD *)v4 + 3); *(_DWORD *)(v2 + 16) = *((_DWORD *)v4 + 4); *(_DWORD *)(v2 + 20) = *((_DWORD *)v4 + 5); } LOBYTE(v10) = 1; nullsub_2(&v7); LOBYTE(v10) = 0; sub_5C9980(&v6); --v3; v2 += 24; } } // 6A8FAC: using guessed type int (__thiscall *off_6A8FAC)(void *, char); //----- (00440B50) -------------------------------------------------------- int __thiscall sub_440B50(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x18u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 20) = 0; if ( result != -12 ) { v4 = a2; *(_DWORD *)(result + 12) = *(_DWORD *)a2; *(_DWORD *)(result + 16) = *(_DWORD *)(v4 + 4); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00440C20) -------------------------------------------------------- void *__thiscall sub_440C20(int this, unsigned int a2) { int v2; // esi@1 const void *v3; // ecx@1 void *result; // eax@1 void *v5; // edi@2 int v6; // edx@5 v2 = this; v3 = *(const void **)(this + 4); result = (void *)((signed int)((char *)v3 - *(_DWORD *)v2) >> 2); if ( (unsigned int)result <= a2 ) { if ( (unsigned int)result < a2 ) { sub_4CEB10(v2, a2 - (_DWORD)result); v6 = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2; if ( a2 != v6 ) memset(*(void **)(v2 + 4), 0, 4 * (a2 - v6)); result = *(void **)(v2 + 4); *(_DWORD *)(v2 + 4) = (char *)result + 4 * (a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2)); } } else { v5 = (void *)(*(_DWORD *)v2 + 4 * a2); if ( v5 != v3 ) { result = memmove_0(v5, v3, 0); *(_DWORD *)(v2 + 4) = v5; } } return result; } //----- (00440CB0) -------------------------------------------------------- int __thiscall sub_440CB0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // edi@1 int result; // eax@2 int v8; // eax@7 int v9; // ecx@20 int v10; // [sp+8h] [bp-8h]@20 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a4; if ( !*(_DWORD *)(this + 8) ) { sub_5CC4F0(this, a2, 1, v5, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v5 ) { if ( *(_DWORD *)(a4 + 12) < *(_DWORD *)(a3 + 12) ) { sub_5CC4F0(this, a2, 1, a3, (void *)a4); return a2; } goto LABEL_20; } if ( a3 == v5 ) { v8 = *(_DWORD *)(v5 + 8); if ( *(_DWORD *)(v8 + 12) < *(_DWORD *)(a4 + 12) ) { sub_5CC4F0(this, a2, 0, v8, (void *)a4); return a2; } goto LABEL_20; } if ( *(_DWORD *)(a4 + 12) >= *(_DWORD *)(a3 + 12) || (a4 = a3, sub_5CC450(&a4), *(_DWORD *)(a4 + 12) >= *(_DWORD *)(v6 + 12)) ) { if ( *(_DWORD *)(a3 + 12) >= *(_DWORD *)(v6 + 12) || (a4 = a3, sub_5CC3C0(&a4), a4 != *(_DWORD *)(v4 + 4)) && *(_DWORD *)(v6 + 12) >= *(_DWORD *)(a4 + 12) ) { LABEL_20: v9 = *(_DWORD *)sub_4409A0(v4, (int)&v10, (void *)v6, 0); result = a2; *(_DWORD *)a2 = v9; return result; } if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 21) ) { sub_5CC4F0(v4, a2, 0, a3, (void *)v6); result = a2; } else { sub_5CC4F0(v4, a2, 1, a4, (void *)v6); result = a2; } } else { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 21) ) { sub_5CC4F0(v4, a2, 0, a4, (void *)v6); result = a2; } else { sub_5CC4F0(v4, a2, 1, a3, (void *)v6); result = a2; } } return result; } //----- (00440E10) -------------------------------------------------------- char __thiscall sub_440E10(void *this, int a2, unsigned int a3) { unsigned int v3; // esi@1 int v4; // eax@3 unsigned __int8 v5; // al@7 unsigned __int8 v6; // al@22 int v8; // [sp-4h] [bp-24h]@2 v3 = (unsigned int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); switch ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 8))(v3) ) { case 0: goto LABEL_2; case 2: v4 = sub_43BDF0(v3); if ( a3 <= v4 ) break; v8 = (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo"; goto LABEL_24; case 3: if ( a3 <= dword_8B3AC4 ) break; v8 = (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo"; goto LABEL_24; case 1: break; default: v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo : INVALID TYPE", v5); break; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2584))(v3) || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1972))(v3) ) { a3 = v3; sub_4242C0((int)&dword_D9FB808, (unsigned int)&a3); } switch ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) ) { case 2u: case 8u: sub_43F620(&off_74A1A8, a2, v3); sub_43FE30(&unk_8B42A0, a2, v3); break; case 1u: sub_43FAC0(&off_74DA48, a2, v3); break; case 4u: case 5u: case 0xAu: sub_43F760(&off_74BD48, a2, v3); sub_43FE30(&unk_8B6C60, a2, v3); break; case 7u: sub_43F880(&off_74CED8, a2, v3); break; case 9u: sub_43F9C0(&off_74D490, a2, v3); break; case 6u: sub_43FBF0(&off_74DC20, a2, v3); break; case 3u: sub_43FD00(&off_74DE18, a2, v3); break; case 0xBu: sub_43FFB0(&off_74E5B0, a2, v3); sub_43FE30(&unk_8B42A0, a2, v3); break; case 0xCu: sub_4400F0(&off_74F610, a2, v3); break; case 0u: break; default: v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo : INVALID TYPE", v6); break; } v8 = (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo"; } else { LABEL_2: v8 = (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo"; } LABEL_24: --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 1; } // 74A1A8: using guessed type void *off_74A1A8; // 74BD48: using guessed type __int16 *off_74BD48; // 74CED8: using guessed type void *off_74CED8; // 74D490: using guessed type void *off_74D490; // 74DA48: using guessed type void *off_74DA48; // 74DC20: using guessed type void *off_74DC20; // 74DE18: using guessed type void *off_74DE18; // 74E5B0: using guessed type void *off_74E5B0; // 74F610: using guessed type __int16 *off_74F610; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B3AC4: using guessed type int dword_8B3AC4; //----- (004410B0) -------------------------------------------------------- char __thiscall sub_4410B0(void *this, int a2, unsigned int a3) { unsigned int v3; // esi@1 int v4; // eax@3 unsigned __int8 v5; // al@7 int v6; // ebx@15 unsigned __int8 v8; // al@20 int v9; // [sp-4h] [bp-24h]@2 v3 = (unsigned int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_HideExceptMeOff_BriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_HideExceptMeOff_BriefInfo"; dword_750AB8[dword_750CB8++] = -1; switch ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 8))(v3) ) { case 0: goto LABEL_2; case 2: v4 = sub_43BDF0(v3); if ( a3 <= v4 ) break; v9 = (int)"ShineObjectClass::ShineObject::so_HideExceptMeOff_BriefInfo"; goto LABEL_18; case 3: if ( a3 <= dword_8B3AC4 ) break; v9 = (int)"ShineObjectClass::ShineObject::so_HideExceptMeOff_BriefInfo"; goto LABEL_18; case 1: break; default: v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo : INVALID TYPE", v5); break; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2584))(v3) || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1972))(v3) ) { a3 = v3; sub_4242C0((int)&dword_D9FB808, (unsigned int)&a3); } switch ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) ) { case 2u: case 8u: sub_43F620(&off_74A1A8, a2, v3); sub_43FE30(&unk_8B42A0, a2, v3); break; case 4u: case 5u: case 0xAu: sub_43F760(&off_74BD48, a2, v3); sub_43FE30(&unk_8B6C60, a2, v3); break; case 0xBu: v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3240))(v3) != v6 ) { sub_43FFB0(&off_74E5B0, a2, v3); sub_43FE30(&unk_8B42A0, a2, v3); } break; case 0u: case 1u: case 3u: case 6u: case 7u: case 9u: break; case 0xCu: sub_4400F0(&off_74F610, a2, v3); break; default: v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ExchageBriefInfo : INVALID TYPE", v8); break; } v9 = (int)"ShineObjectClass::ShineObject::so_HideExceptMeOff_BriefInfo"; } else { LABEL_2: v9 = (int)"ShineObjectClass::ShineObject::so_HideExceptMeOff_BriefInfo"; } LABEL_18: --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 1; } // 74A1A8: using guessed type void *off_74A1A8; // 74BD48: using guessed type __int16 *off_74BD48; // 74E5B0: using guessed type void *off_74E5B0; // 74F610: using guessed type __int16 *off_74F610; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B3AC4: using guessed type int dword_8B3AC4; //----- (004412F0) -------------------------------------------------------- int __thiscall sub_4412F0(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v7; // [sp-4h] [bp-24h]@4 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_8BB244 & 1) ) { dword_8BB244 |= 1u; word_8BB240 = 126; atexit(nullsub_18); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_8BB240 ) { *(_BYTE *)(v4 + 23824) &= 0xF7u; sub_440C20((int)&dword_D9FB808, 0); *(_BYTE *)off_74BD44 = 0; sub_43C100((int)&off_74BD48); *(_BYTE *)off_74E5A8 = 0; sub_43C180((int)&unk_8B42A0); sub_43C180((int)&unk_8B6C60); sub_43C1F0((int)&off_74E5B0); sub_43C280((int)&off_74F610); dword_8B3AC4 = sub_43E000(&unk_8B3AC8, v4); sub_549A40((void *)v4, (int)sub_4410B0, 0, 0, 0, 0); sub_43CF10(&off_74A1A8, v4); sub_43D040(&off_74BD48, v4); sub_43D630(&off_74DE18, v4); sub_43D810(&unk_8B42A0, v4); sub_43D810(&unk_8B6C60, v4); sub_43D990(&off_74E5B0, v4); sub_43DAC0(&off_74F610, v4); sub_4B6EA0(&dword_D9FB808, v4); --dword_750CB8; v7 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"; } else { dword_750CB8 -= v5; v7 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"; } return sub_467660((int)&unk_D020420, v7); } // 74A1A8: using guessed type void *off_74A1A8; // 74BD44: using guessed type void *off_74BD44; // 74BD48: using guessed type __int16 *off_74BD48; // 74DE18: using guessed type void *off_74DE18; // 74E5A8: using guessed type void *off_74E5A8; // 74E5B0: using guessed type void *off_74E5B0; // 74F610: using guessed type __int16 *off_74F610; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B3AC4: using guessed type int dword_8B3AC4; // 8BB240: using guessed type __int16 word_8BB240; // 8BB244: using guessed type int dword_8BB244; //----- (004414C0) -------------------------------------------------------- int __thiscall sub_4414C0(void *this) { int v1; // esi@1 v1 = (int)this; sub_440C20((int)&dword_D9FB808, 0); sub_43CEA0(); dword_8B3AC4 = sub_43E000(&unk_8B3AC8, v1); sub_549A40((void *)v1, (int)sub_440E10, 0, 0, 0, 0); sub_43F5A0(v1); sub_4B6EA0(&dword_D9FB808, v1); return sub_40ADC0((void *)(v1 + 432), (void *)v1); } // 8B3AC4: using guessed type int dword_8B3AC4; //----- (00441540) -------------------------------------------------------- char __thiscall sub_441540(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListCameraMove::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListCameraMove::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1232))() == 2 ) sub_4242C0((int)((char *)v4 + 4), (unsigned int)&a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListCameraMove::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00441600) -------------------------------------------------------- char __thiscall sub_441600(int this) { int v1; // ebx@1 int *v2; // esi@1 void *v3; // eax@3 void *v4; // eax@5 int v5; // edi@7 int v6; // eax@7 int v7; // eax@10 int v8; // edi@11 _UNKNOWN *v9; // ST08_4@15 int v10; // eax@15 int v11; // eax@15 void *v12; // edi@15 void *v13; // eax@16 v1 = this; v2 = *(int **)(this + 4); if ( v2 != *(int **)(this + 8) && (unsigned int)v2 < *(_DWORD *)(this + 8) ) { do { *(_BYTE *)off_74BD44 = 0; v3 = off_74CED0; if ( !off_74CED0 ) { off_74BD48 = &word_74BD54; off_74CECC = &word_74BD54; v3 = &unk_74BD56; dword_74BD4C = 4470; word_74BD54 = 7177; off_74CED0 = &unk_74BD56; } *(_BYTE *)v3 = 0; *(_BYTE *)off_74D488 = 0; *(_BYTE *)off_74DA40 = 0; *(_BYTE *)off_74DC1C = 0; *(_BYTE *)off_74DE10 = 0; *(_BYTE *)off_74E5A8 = 0; sub_43C180((int)&unk_8B42A0); sub_43C180((int)&unk_8B6C60); sub_43C1F0((int)&off_74E5B0); v4 = off_74FD84; if ( !off_74FD84 ) { off_74F610 = &word_74F61C; off_74FD80 = &word_74F61C; v4 = &unk_74F61E; dword_74F614 = 1890; word_74F61C = 7197; off_74FD84 = &unk_74F61E; } *(_BYTE *)v4 = 0; v5 = *v2; v6 = *(_DWORD *)(*v2 + 122); if ( v6 && *(_DWORD *)(v6 + 16) ) { if ( sub_549240(*v2) == 1 ) { v7 = -1; } else { v8 = *(_DWORD *)(v5 + 122); if ( *(_DWORD *)(v8 + 292) == 1 ) v7 = -1; else v7 = *(_DWORD *)(*(_DWORD *)(v8 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v8 + 16) + 72); } } else { v7 = 0; } dword_8B3AC4 = v7; v9 = *(_UNKNOWN **)(v1 + 28); v10 = sub_427BD0(&unk_13253E80); sub_549C70((void *)*v2, v10, v1 + 20, v9, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); sub_43F5A0(*v2); v11 = (*(int (**)(void))(*(_DWORD *)*v2 + 3004))(); v12 = (void *)v11; if ( v11 ) { v13 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1324))(v11); sub_40ADC0(v13, v12); } ++v2; } while ( (unsigned int)v2 < *(_DWORD *)(v1 + 8) ); } return 1; } // 74BD44: using guessed type void *off_74BD44; // 74BD48: using guessed type __int16 *off_74BD48; // 74BD4C: using guessed type int dword_74BD4C; // 74BD54: using guessed type __int16 word_74BD54; // 74CECC: using guessed type __int16 *off_74CECC; // 74CED0: using guessed type void *off_74CED0; // 74D488: using guessed type void *off_74D488; // 74DA40: using guessed type void *off_74DA40; // 74DC1C: using guessed type void *off_74DC1C; // 74DE10: using guessed type void *off_74DE10; // 74E5A8: using guessed type void *off_74E5A8; // 74E5B0: using guessed type void *off_74E5B0; // 74F610: using guessed type __int16 *off_74F610; // 74F614: using guessed type int dword_74F614; // 74F61C: using guessed type __int16 word_74F61C; // 74FD80: using guessed type __int16 *off_74FD80; // 74FD84: using guessed type void *off_74FD84; // 8B3AC4: using guessed type int dword_8B3AC4; //----- (004417B0) -------------------------------------------------------- void __thiscall sub_4417B0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // edi@2 int (__stdcall **v7)(int, int, int); // [sp+Ch] [bp-2Ch]@1 void *v8; // [sp+10h] [bp-28h]@1 void *v9; // [sp+14h] [bp-24h]@1 int v10; // [sp+18h] [bp-20h]@1 int v11; // [sp+20h] [bp-18h]@1 int v12; // [sp+24h] [bp-14h]@1 int v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@1 v4 = this; sub_427BE0(&v7); v7 = &off_6A9410; v8 = 0; v9 = 0; v10 = 0; v11 = a2; v12 = a3; v13 = a4; v14 = 0; sub_549B60(v4, (int)&v7, 0); sub_441600((int)&v7); v5 = v8; v14 = -1; v7 = &off_6A9410; if ( v8 != v9 ) { v6 = v8; memmove_0(v8, v9, 0); v5 = v8; v9 = v6; } if ( v5 ) operator delete(v5); v8 = 0; v9 = 0; v10 = 0; sub_427EB0(&v7); } // 6A9410: using guessed type int (__stdcall *off_6A9410)(int, int, int); //----- (00441880) -------------------------------------------------------- int __thiscall sub_441880(void *this) { int v1; // esi@1 int v2; // ST04_4@1 int v3; // eax@1 v1 = (int)this; sub_440C20((int)&dword_D9FB808, 0); sub_43CEA0(); dword_8B3AC4 = sub_43E000(&unk_8B3AC8, v1); v2 = *(_DWORD *)(v1 + 102); v3 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v1, v3, v2, 0, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); sub_43F5A0(v1); sub_4B6EA0(&dword_D9FB808, v1); return sub_40ADC0((void *)(v1 + 432), (void *)v1); } // 8B3AC4: using guessed type int dword_8B3AC4; //----- (00441910) -------------------------------------------------------- char __thiscall sub_441910(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@4 int v4; // eax@4 v1 = this; v2 = *(_DWORD *)(this + 8168); if ( v2 ) { v2 = *(_DWORD *)(v2 + 4); if ( v2 ) { if ( *(_BYTE *)(v2 + 36) ) { dword_8B3AC4 = sub_43BDF0(this); v3 = *(_DWORD *)(v1 + 102); v4 = sub_427BD0(&unk_13253E80); LOBYTE(v2) = sub_549C70((void *)v1, v4, v3, 0, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); } } } return v2; } // 8B3AC4: using guessed type int dword_8B3AC4; //----- (00441980) -------------------------------------------------------- char __thiscall sub_441980(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@4 int v4; // eax@5 int *v5; // edx@8 __int16 v6; // cx@8 int v7; // ST04_4@8 int v8; // eax@8 v1 = this; v2 = *(_DWORD *)(this + 122); if ( v2 && *(_DWORD *)(v2 + 16) ) { if ( sub_549240(this) == 1 || (v4 = *(_DWORD *)(v1 + 122), *(_DWORD *)(v4 + 292) == 1) ) v3 = -1; else v3 = *(_DWORD *)(*(_DWORD *)(v4 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v4 + 16) + 72); } else { v3 = 0; } v5 = (int *)**(_DWORD **)(v1 + 8092); v6 = *(_WORD *)(v1 + 4); dword_8B3AC4 = v3; sub_43BD40(v1 + 8125, v6, *v5); v7 = *(_DWORD *)(v1 + 102); v8 = sub_427BD0(&unk_13253E80); return sub_549C70((void *)v1, v8, v7, 0, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); } // 8B3AC4: using guessed type int dword_8B3AC4; //----- (00441A20) -------------------------------------------------------- int __thiscall sub_441A20(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // edi@1 int v6; // eax@8 int result; // eax@8 __int16 v8; // [sp+8h] [bp-8h]@8 int v9; // [sp+Ch] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); v5 = v3; while ( !*(_BYTE *)(v4 + 21) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a2 ) { v5 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v5 != *(_DWORD *)(v2 + 4) && *(_WORD *)a2 >= *(_WORD *)(v5 + 12) ) { result = v5 + 16; } else { v8 = *(_WORD *)a2; v9 = 0; v6 = sub_5C5AB0((void *)v2, (int)&v8); sub_440830(v2, (int)&a2, v5, v6); result = a2 + 16; } return result; } //----- (00441AB0) -------------------------------------------------------- int __thiscall sub_441AB0(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // eax@2 int v7; // edi@2 int v8; // ebx@2 int i; // esi@2 int v10; // [sp+4h] [bp-4h]@1 result = a2; v5 = this; v10 = this; *(_DWORD *)a2 = a3; if ( a3 != a4 ) { v6 = sub_4405F0(a4, *(_DWORD *)(this + 4), a3); v7 = *(_DWORD *)(v5 + 4); v8 = v6; for ( i = v6; i != v7; i += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); *(_DWORD *)(v10 + 4) = v8; result = a2; } return result; } //----- (00441B10) -------------------------------------------------------- int __thiscall sub_441B10(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // edi@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edx@4 void *v8; // ecx@4 signed int v9; // edx@4 int v10; // ebx@4 void *i; // edi@5 int v12; // [sp+0h] [bp-28h]@1 int v13; // [sp+10h] [bp-18h]@4 int v14; // [sp+14h] [bp-14h]@4 int *v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@4 v15 = &v12; v2 = this; if ( a2 > (unsigned int)&unk_AAAAAAA ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 24; if ( result < a2 ) { v4 = sub_43EF20(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v13 = v4; v16 = 0; sub_4407E0((int)v6, v5, v4); v7 = *(_DWORD *)(v2 + 4); v8 = *(void **)v2; v14 = v7; v9 = (signed int)((unsigned __int64)(715827883i64 * (v7 - (signed int)v8)) >> 32) >> 2; v10 = v9 + ((unsigned int)v9 >> 31); v16 = -1; if ( v8 ) { for ( i = v8; i != (void *)v14; i = (char *)i + 24 ) (**(void (__thiscall ***)(void *, _DWORD))i)(i, 0); operator delete(*(void **)v2); v4 = v13; } result = 3 * v10; *(_DWORD *)(v2 + 8) = v4 + 24 * a2; *(_DWORD *)(v2 + 4) = v4 + 24 * v10; *(_DWORD *)v2 = v4; } return result; } //----- (00441C1B) -------------------------------------------------------- void __usercall sub_441C1B(int a1) { operator delete(*(void **)(a1 - 24)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00441C40) -------------------------------------------------------- int __thiscall sub_441C40(void *this, int a2) { int v2; // esi@1 int v3; // edx@1 int v4; // eax@1 int v5; // eax@1 int v6; // eax@4 int v7; // eax@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_BuildComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDoor::so_door_BuildComplete"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3092))(v2); v3 = *(_DWORD *)(v2 + 3828); *(_WORD *)(v2 + 332) = 0; *(_BYTE *)v3 = 1; v4 = *(_DWORD *)(v2 + 118); *(_BYTE *)(v2 + 8036) = 0; *(_DWORD *)v4 = 0; *(_BYTE *)(*(_DWORD *)(v2 + 118) + 4) = 0; *(_BYTE *)off_74D488 = 0; v5 = *(_DWORD *)(v2 + 122); if ( v5 && *(_DWORD *)(v5 + 16) ) { if ( sub_549240(v2) == 1 || (v7 = *(_DWORD *)(v2 + 122), *(_DWORD *)(v7 + 292) == 1) ) v6 = -1; else v6 = *(_DWORD *)(*(_DWORD *)(v7 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v7 + 16) + 72); } else { v6 = 0; } dword_8B3AC4 = v6; sub_549A40((void *)v2, (int)sub_440E10, 0, 0, 0, 0); *(_BYTE *)(v2 + 7888) &= 0xFDu; *(_WORD *)(v2 + 332) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_BuildComplete"); } // 74D488: using guessed type void *off_74D488; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B3AC4: using guessed type int dword_8B3AC4; //----- (00441D80) -------------------------------------------------------- int __thiscall sub_441D80(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@4 int v5; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_BlastComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineEffectObject::so_effect_BlastComplete"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3092))(v2); **(_DWORD **)((char *)v2 + 118) = 0; *(_BYTE *)(*(_DWORD *)((char *)v2 + 118) + 4) = 0; *(_BYTE *)off_74DA40 = 0; v3 = *(_DWORD *)((char *)v2 + 122); if ( v3 && *(_DWORD *)(v3 + 16) ) { if ( sub_549240((int)v2) == 1 || (v5 = *(_DWORD *)((char *)v2 + 122), *(_DWORD *)(v5 + 292) == 1) ) v4 = -1; else v4 = *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72); } else { v4 = 0; } dword_8B3AC4 = v4; sub_549A40(v2, (int)sub_440E10, 0, 0, 0, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_BlastComplete"); } // 74DA40: using guessed type void *off_74DA40; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8B3AC4: using guessed type int dword_8B3AC4; //----- (00441E90) -------------------------------------------------------- int __thiscall sub_441E90(void *this, void *a2) { int v2; // ebx@1 int v3; // edi@1 void (__thiscall *v4)(_DWORD); // eax@1 int v5; // esi@1 int v6; // ecx@1 unsigned __int16 v7; // ax@1 int v8; // eax@4 int v9; // eax@6 int v10; // eax@7 char v11; // cl@8 int (__thiscall *v12)(_DWORD); // edx@12 int v13; // eax@17 int v14; // eax@20 int v15; // eax@21 int v16; // ST04_4@25 int v17; // eax@25 bool v18; // zf@29 void *v19; // eax@30 int v20; // ecx@32 __int16 v21; // ax@34 int v22; // ecx@34 int v23; // eax@35 int v24; // eax@35 char v25; // al@36 int v26; // ecx@36 int v27; // ecx@36 __int16 **v28; // edx@36 void *v29; // eax@36 int *v30; // ecx@36 void (__thiscall *v31)(_DWORD); // edx@39 int v32; // ecx@39 int v33; // eax@39 int v34; // eax@40 unsigned int v35; // edx@42 int v36; // ecx@42 int v37; // eax@42 int v38; // ecx@44 void (__thiscall *v39)(_DWORD, _DWORD); // edx@44 int v41; // [sp-4h] [bp-28h]@25 int v42; // [sp+0h] [bp-24h]@0 int v43; // [sp+4h] [bp-20h]@0 int v44; // [sp+8h] [bp-1Ch]@0 int v45; // [sp+Ch] [bp-18h]@0 int v46; // [sp+14h] [bp-10h]@6 int v47; // [sp+20h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3548); v5 = 0; v47 = 0; v4(v2); v6 = *(_DWORD *)(v2 + 8168); *(_DWORD *)(v2 + 9564) = 0; *(_DWORD *)(v2 + 9568) = 0; *(_BYTE *)(v2 + 9572) = 1; v7 = *(_WORD *)(v6 + 20); if ( v7 == -1 ) { memset((void *)(v2 + 9573), 0, 0x34u); } else { memcpy((void *)(v2 + 9573), (const void *)sub_6417E0((int)&dword_1508B308, v7), 0x34u); v5 = 0; v3 = -1; } *(_WORD *)(v2 + 7904) = 2; v8 = *(_DWORD *)(v2 + 8168); *(_DWORD *)(v2 + 9628) = 6; *(_DWORD *)(v2 + 9632) = v3; *(_DWORD *)(v2 + 9636) = v3; *(_DWORD *)(v2 + 9640) = v3; *(_DWORD *)(v2 + 9644) = v3; *(_WORD *)(v2 + 9648) = -1; *(_WORD *)(v2 + 332) = 0; *(_DWORD *)(v2 + 8924) = v5; *(_DWORD *)(v2 + 9028) = v5; *(_WORD *)(v2 + 9478) = -1; if ( v8 == v5 || *(_DWORD *)(v8 + 4) == v5 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3092))(v2); } else { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3092))(v2); v46 = **(_WORD **)(*(_DWORD *)(v2 + 8168) + 4); v9 = *(_DWORD *)sub_441A20((int)&unk_14D41FC0, (int)&v46); *(_DWORD *)(v2 + 126) = v9; if ( v9 != v5 ) { v10 = **(_DWORD **)(v2 + 8168) + 2; do v11 = *(_BYTE *)v10++; while ( v11 ); sub_4241C0(v2 + 130, (char *)(**(_DWORD **)(v2 + 8168) + 2), v10 - (**(_DWORD **)(v2 + 8168) + 3)); v3 = -1; } } sub_4B8A50((void *)(v2 + 8916)); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 3580))(v2, 2); if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v2 + 8168) + 4) + 36) ) { v46 = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete1"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete1"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete1"; dword_750AB8[dword_750CB8++] = v3; **(_DWORD **)(v2 + 118) = v5; *(_BYTE *)(*(_DWORD *)(v2 + 118) + 4) = 0; v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232); LOBYTE(v47) = 1; if ( (unsigned __int8)v12(v2) == 8 ) { *(_BYTE *)off_74BD44 = 0; sub_43C180((int)&unk_8B42A0); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 12 ) { sub_43C280((int)&off_74F610); } else { sub_43C100((int)&off_74BD48); sub_43C180((int)&unk_8B6C60); } } v13 = *(_DWORD *)(v2 + 122); if ( v13 == v5 || *(_DWORD *)(v13 + 16) == v5 ) { v14 = 0; } else { if ( sub_549240(v2) == 1 ) { v14 = v3; } else { v15 = *(_DWORD *)(v2 + 122); if ( *(_DWORD *)(v15 + 292) == 1 ) v14 = v3; else v14 = *(_DWORD *)(*(_DWORD *)(v15 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v15 + 16) + 72); } } dword_8B3AC4 = v14; v16 = *(_DWORD *)(v2 + 102); v17 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v2, v17, v16, (_UNKNOWN *)v5, v5, (int)sub_440E10, 0, v5, 0, v5, 65535); v41 = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete1"; } else { v46 = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete2"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete2"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete2"; dword_750AB8[dword_750CB8++] = v3; **(_DWORD **)(v2 + 118) = v5; *(_BYTE *)(*(_DWORD *)(v2 + 118) + 4) = 3; LOBYTE(v47) = 2; if ( dword_877770 != v5 ) (*(void (__thiscall **)(int, int, signed int, signed int, int, int, int, int, int, signed int, int))(*(_DWORD *)v2 + 1592))( v2, v2, 288, 1, dword_877770, dword_14D129E8, v5, v3, v5, 3, v5); v41 = (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete2"; } --dword_750CB8; LOBYTE(v47) = 0; sub_467660((int)&unk_D020420, v41); v18 = (*(_BYTE *)(v2 + 9520) & 1) == 0; *(_BYTE *)(v2 + 8208) = 0; *(_WORD *)(v2 + 8210) = -1; *(_DWORD *)(v2 + 9028) = v5; if ( v18 ) { v19 = sub_4B87F0((void *)(v2 + 8888)); } else { *(_BYTE *)(v2 + 9521) = 0; v19 = off_8492D4; } v20 = *(_DWORD *)(v2 + 8168); *(_DWORD *)(v2 + 9020) = v19; if ( *(_DWORD *)(*(_DWORD *)(v20 + 4) + 45) == 2 ) *(_DWORD *)(v2 + 9020) = off_8492D8; v21 = (signed __int16)a2; v22 = *(_DWORD *)(v2 + 3828); *(_DWORD *)(v2 + 8224) = v2; *(_WORD *)(v2 + 8220) = v21; *(_BYTE *)v22 = 2; sub_43BE30(v2 + 4120); sub_43C010(v2 + 4120, *(_DWORD *)(v2 + 8168)); sub_4C8F40((void *)(v2 + 4120)); sub_482110(v2 + 9032); *(_DWORD *)(v2 + 4112) = v5; *(_DWORD *)(v2 + 16 * *(_DWORD *)(v2 + 4104) + 3848) = v5; *(_DWORD *)(v2 + 368) = v5; if ( v5 != 3 ) { v23 = *(_DWORD *)(v2 + 372); *(_DWORD *)(v2 + 368) = v5; *(_DWORD *)(v2 + 396) = v5; *(_DWORD *)(v2 + 400) = v5; *(_DWORD *)(v2 + 404) = v5; *(_DWORD *)(v2 + 408) = v5; *(_DWORD *)(v2 + 412) = v5; *(_DWORD *)(v2 + 376) = v5; v24 = *(_DWORD *)(v23 + 102); *(_DWORD *)(v2 + 388) = *(_DWORD *)v24; *(_DWORD *)(v2 + 392) = *(_DWORD *)(v24 + 4); } *(_BYTE *)(v2 + 7888) &= 0xFEu; *(_WORD *)(v2 + 332) = 0; v25 = *(_BYTE *)(v2 + 9476) & 0xFB; *(_DWORD *)(v2 + 7644) = v5; v25 |= 2u; *(_BYTE *)(v2 + 9476) = v25; v26 = dword_14D129E8; *(_DWORD *)(v2 + 3836) = dword_14D129E8; *(_DWORD *)(v2 + 3832) = v26; v27 = *(_DWORD *)(v2 + 102); *(_DWORD *)(v2 + 9460) = *(_DWORD *)v27; *(_DWORD *)(v2 + 9464) = *(_DWORD *)(v27 + 4); *(_DWORD *)(v2 + 9468) = *(_DWORD *)v27; v28 = *(__int16 ***)(v2 + 8168); *(_DWORD *)(v2 + 9472) = *(_DWORD *)(v27 + 4); *(_BYTE *)(v2 + 9476) = v25 & 0xF7; *(_BYTE *)(v2 + 9480) = 0; v29 = sub_43F000(&unk_D740EB0, **v28); v30 = *(int **)(v2 + 8168); *(_DWORD *)(v2 + 8196) = v29; *(_DWORD *)(v2 + 8200) = v5; sub_648340((int)&unk_14D21474, (int)&a2, *v30); if ( a2 == dword_14D21478 ) *(_DWORD *)(v2 + 9536) = v5; else *(_DWORD *)(v2 + 9536) = (char *)a2 + 16; v31 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 864); *(_DWORD *)(v2 + 360) = -1; *(_BYTE *)(v2 + 7636) = 0; *(_DWORD *)(v2 + 7640) = v5; v31(v2); v32 = *(_DWORD *)(v2 + 4116); *(_BYTE *)(v2 + 9492) = *(_BYTE *)(v2 + 9492) & 0xFB | 1; *(_DWORD *)(v2 + 4656) = v5; *(_DWORD *)(v2 + 9496) = v5; *(_DWORD *)(v2 + 9500) = 60000; *(_DWORD *)(v2 + 7624) = (*(int (**)(void))(*(_DWORD *)v32 + 60))(); *(_WORD *)(v2 + 7628) = 0; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 3776))(v2, 65535); v33 = ***(_WORD ***)(v2 + 8168); if ( v33 >= dword_848F94 ) v34 = 1000000000; else v34 = (***(int (__thiscall ****)(_DWORD))(dword_848F9C + 4 * v33))(*(_DWORD *)(dword_848F9C + 4 * v33)); v35 = (unsigned int)((unsigned int)(10 * v34) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v36 = v35 + dword_14D129E8; *(_DWORD *)(v2 + 7940) = v35; *(_DWORD *)(v2 + 7936) = v36; v37 = *(_DWORD *)(v2 + 9024); if ( v37 != v5 ) *(_DWORD *)(v37 + 76) = dword_14D129E8; v38 = *(_DWORD *)(v2 + 8844); *(_BYTE *)(v2 + 7888) &= 0xE5u; *(_WORD *)(v2 + 332) = 0; *(_DWORD *)(v2 + 356) = v5; *(_DWORD *)(v2 + 9028) = v5; (*(void (__stdcall **)(int, int, int, int, _DWORD))(*(_DWORD *)v38 + 20))( v42, v43, v44, v45, "ShineObjectClass::ShineMob::so_mob_RegenComplete"); v39 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3056); *(_BYTE *)(v2 + 9476) |= 1u; *(_DWORD *)(v2 + 9524) = v5; *(_DWORD *)(v2 + 9528) = v5; *(_WORD *)(v2 + 9532) = 0; v39(v2, v5); *(_BYTE *)(*(_DWORD *)(v2 + 8140) + 148) = 0; sub_55C7B0(v2, dword_14D129E8); --dword_750CB8; v47 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_RegenComplete"); } // 74BD44: using guessed type void *off_74BD44; // 74BD48: using guessed type __int16 *off_74BD48; // 74F610: using guessed type __int16 *off_74F610; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; // 848F9C: using guessed type int dword_848F9C; // 8492D4: using guessed type int (__stdcall *(*off_8492D4[3])[2])(int); // 8492D8: using guessed type int (__stdcall *(*off_8492D8[2])[2])(int); // 877770: using guessed type int dword_877770; // 8B3AC4: using guessed type int dword_8B3AC4; // 14D129E8: using guessed type int dword_14D129E8; // 1508B308: using guessed type int dword_1508B308; //----- (00442540) -------------------------------------------------------- int __thiscall sub_442540(void *this, void *a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_mob_RegenComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineNPC::so_mob_RegenComplete"; dword_750AB8[dword_750CB8++] = -1; sub_441E90(v2, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_mob_RegenComplete"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004425F0) -------------------------------------------------------- int __thiscall sub_4425F0(void *this, void *a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_RegenComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_mob_RegenComplete"; dword_750AB8[dword_750CB8++] = -1; sub_441E90(v2, a2); v3 = *((_DWORD *)v2 + 2416); *((_DWORD *)v2 + 2417) = 0; *((_DWORD *)v2 + 2418) = 0; v4 = *(_DWORD *)(v3 + 84); if ( v4 ) *((_DWORD *)v2 + 2053) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * v4 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v4 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); else *((_DWORD *)v2 + 2053) = 0; switch ( *(_DWORD *)(v3 + 92) ) { case 1: case 4: *((_DWORD *)v2 + 2419) = off_848CD4; break; case 2: *((_DWORD *)v2 + 2419) = off_848CD8; break; case 3: *((_DWORD *)v2 + 2419) = sub_5792F0(v2); break; case 5: *((_DWORD *)v2 + 2419) = &off_848CE0; break; default: *((_DWORD *)v2 + 2419) = off_848CD0; break; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_RegenComplete"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); // 848CD4: using guessed type int (__stdcall *off_848CD4[4])(int, int); // 848CD8: using guessed type int (__stdcall *off_848CD8[3])(int, int); // 848CE0: using guessed type int (__stdcall **off_848CE0)(int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (00442740) -------------------------------------------------------- int __thiscall sub_442740(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // edi@1 int v6; // eax@8 int result; // eax@8 int v8; // [sp+8h] [bp-8h]@8 int v9; // [sp+Ch] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); v5 = v3; while ( !*(_BYTE *)(v4 + 21) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a2 ) { v5 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v5 != *(_DWORD *)(v2 + 4) && *(_DWORD *)a2 >= *(_DWORD *)(v5 + 12) ) { result = v5 + 16; } else { v8 = *(_DWORD *)a2; v9 = 0; v6 = sub_440B50((void *)v2, (int)&v8); sub_440CB0(v2, (int)&a2, v5, v6); result = a2 + 16; } return result; } //----- (004427C0) -------------------------------------------------------- int __thiscall sub_4427C0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 24; if ( (unsigned int)((char *)&unk_AAAAAAA - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 24; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_AAAAAAA - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_441B10(this, v5); } return result; } //----- (00442840) -------------------------------------------------------- int __thiscall sub_442840(void *this, __int16 a2) { int v2; // esi@1 void (__thiscall *v3)(_DWORD); // eax@1 int v4; // eax@1 void (__thiscall *v5)(_DWORD); // edx@1 int v6; // eax@1 int v7; // eax@2 int v8; // ecx@2 char v9; // dl@3 int v10; // eax@5 int v11; // eax@8 int v12; // eax@9 int v13; // ecx@13 int v14; // ST04_4@13 int v15; // eax@13 bool v16; // zf@13 int v17; // ecx@16 int v18; // edx@16 int v19; // eax@16 int v20; // ecx@16 int v21; // ecx@16 int v22; // edx@16 void (__thiscall *v23)(_DWORD); // eax@16 int v24; // ecx@16 void (__thiscall *v25)(_DWORD, _DWORD); // eax@16 int v27; // [sp+14h] [bp-10h]@1 int v28; // [sp+20h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::spt_RegenComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::spt_RegenComplete"; dword_750AB8[dword_750CB8++] = -1; v3 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3548); v28 = 0; v3(v2); *(_DWORD *)(v2 + 9564) = 0; *(_DWORD *)(v2 + 9568) = 0; *(_BYTE *)(v2 + 9572) = 1; memset((void *)(v2 + 9573), 0, 0x34u); *(_WORD *)(v2 + 332) = 0; v4 = *(_DWORD *)v2; *(_WORD *)(v2 + 9648) = -1; *(_WORD *)(v2 + 7904) = 2; *(_WORD *)(v2 + 9478) = -1; v5 = *(void (__thiscall **)(_DWORD))(v4 + 3092); *(_DWORD *)(v2 + 9628) = 6; *(_DWORD *)(v2 + 9632) = -1; *(_DWORD *)(v2 + 9636) = -1; *(_DWORD *)(v2 + 9640) = -1; *(_DWORD *)(v2 + 9644) = -1; *(_DWORD *)(v2 + 8924) = 0; *(_DWORD *)(v2 + 9028) = 0; v5(v2); v27 = 1; v6 = *(_DWORD *)sub_442740((int)&unk_14D41FD0, (int)&v27); *(_DWORD *)(v2 + 126) = v6; if ( v6 ) { v7 = sub_622F60((int)&unk_14D41FD0, 1); v8 = v7; v27 = v7 + 1; do v9 = *(_BYTE *)v8++; while ( v9 ); sub_4241C0(v2 + 130, (char *)v7, v8 - v27); } sub_4B8A50((void *)(v2 + 8916)); **(_DWORD **)(v2 + 118) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 118) + 4) = 0; sub_43C280((int)&off_74F610); v10 = *(_DWORD *)(v2 + 122); if ( v10 && *(_DWORD *)(v10 + 16) ) { if ( sub_549240(v2) == 1 ) { v11 = -1; } else { v12 = *(_DWORD *)(v2 + 122); if ( *(_DWORD *)(v12 + 292) == 1 ) v11 = -1; else v11 = *(_DWORD *)(*(_DWORD *)(v12 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v12 + 16) + 72); } } else { v11 = 0; } v13 = *(_DWORD *)(v2 + 102); dword_8B3AC4 = v11; v14 = v13; v15 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v2, v15, v14, 0, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); v16 = (*(_BYTE *)(v2 + 9520) & 1) == 0; *(_BYTE *)(v2 + 8208) = 0; *(_WORD *)(v2 + 8210) = -1; if ( v16 ) sub_4B87F0((void *)(v2 + 8888)); else *(_BYTE *)(v2 + 9521) = 0; v17 = *(_DWORD *)(v2 + 3828); *(_DWORD *)(v2 + 9020) = off_8492D8; *(_DWORD *)(v2 + 8224) = v2; *(_WORD *)(v2 + 8220) = a2; *(_BYTE *)v17 = 2; sub_43BE30(v2 + 4120); sub_4C8F40((void *)(v2 + 4120)); sub_482110(v2 + 9032); *(_DWORD *)(v2 + 4112) = 0; *(_DWORD *)(v2 + 16 * *(_DWORD *)(v2 + 4104) + 3848) = 0; *(_DWORD *)(v2 + 368) = 0; v18 = *(_DWORD *)(v2 + 372); *(_DWORD *)(v2 + 368) = 0; *(_DWORD *)(v2 + 396) = 0; *(_DWORD *)(v2 + 400) = 0; *(_DWORD *)(v2 + 404) = 0; *(_DWORD *)(v2 + 408) = 0; *(_DWORD *)(v2 + 412) = 0; *(_DWORD *)(v2 + 376) = 0; v19 = *(_DWORD *)(v18 + 102); *(_DWORD *)(v2 + 388) = *(_DWORD *)v19; *(_DWORD *)(v2 + 392) = *(_DWORD *)(v19 + 4); *(_BYTE *)(v2 + 7888) &= 0xFEu; *(_WORD *)(v2 + 332) = 0; LOBYTE(v19) = *(_BYTE *)(v2 + 9476) & 0xFB; *(_DWORD *)(v2 + 7644) = 0; LOBYTE(v19) = v19 | 2; *(_BYTE *)(v2 + 9476) = v19; v20 = dword_14D129E8; *(_DWORD *)(v2 + 3836) = dword_14D129E8; *(_DWORD *)(v2 + 3832) = v20; v21 = *(_DWORD *)(v2 + 102); *(_DWORD *)(v2 + 9460) = *(_DWORD *)v21; *(_DWORD *)(v2 + 9464) = *(_DWORD *)(v21 + 4); *(_DWORD *)(v2 + 9468) = *(_DWORD *)v21; v22 = *(_DWORD *)v2; *(_DWORD *)(v2 + 9472) = *(_DWORD *)(v21 + 4); *(_BYTE *)(v2 + 9476) = v19 & 0xF7; v23 = *(void (__thiscall **)(_DWORD))(v22 + 864); *(_BYTE *)(v2 + 9480) = 0; *(_DWORD *)(v2 + 8200) = 0; *(_DWORD *)(v2 + 9536) = 0; *(_DWORD *)(v2 + 360) = -1; *(_BYTE *)(v2 + 7636) = 0; *(_DWORD *)(v2 + 7640) = 0; v23(v2); *(_BYTE *)(v2 + 9492) = *(_BYTE *)(v2 + 9492) & 0xFB | 1; v24 = *(_DWORD *)(v2 + 4116); *(_DWORD *)(v2 + 4656) = 0; *(_DWORD *)(v2 + 9496) = 0; *(_DWORD *)(v2 + 9500) = 60000; *(_DWORD *)(v2 + 7624) = (*(int (**)(void))(*(_DWORD *)v24 + 60))(); *(_WORD *)(v2 + 7628) = 0; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 3776))(v2, 65535); v25 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3056); *(_BYTE *)(v2 + 7888) &= 0xE5u; *(_BYTE *)(v2 + 9476) |= 1u; *(_WORD *)(v2 + 332) = 0; *(_DWORD *)(v2 + 356) = 0; *(_DWORD *)(v2 + 9028) = 0; *(_DWORD *)(v2 + 9524) = 0; *(_DWORD *)(v2 + 9528) = 0; *(_WORD *)(v2 + 9532) = 0; v25(v2, 0); *(_BYTE *)(*(_DWORD *)(v2 + 8140) + 148) = 0; sub_55C7B0(v2, dword_14D129E8); --dword_750CB8; v28 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::spt_RegenComplete"); } // 74F610: using guessed type __int16 *off_74F610; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492D8: using guessed type int (__stdcall *(*off_8492D8[2])[2])(int); // 8B3AC4: using guessed type int dword_8B3AC4; // 14D129E8: using guessed type int dword_14D129E8; //----- (00442C70) -------------------------------------------------------- int __thiscall sub_442C70(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 unsigned int v5; // edi@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; v5 = a2; result = v4 / 24; if ( v4 / 24 <= a2 ) { if ( v4 / 24 < a2 ) { sub_4427C0(v2, a2 - result); sub_440A80(*(_DWORD *)(v2 + 4), v5 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 24); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 24; *(_DWORD *)(v2 + 4) += 24 * (v5 - result); } } else { result = sub_441AB0(v2, (int)&a2, *(_DWORD *)v2 + 24 * a2, v3); } return result; } //----- (00442D20) -------------------------------------------------------- int __thiscall sub_442D20(void *this, int a2, int a3, int a4) { int v4; // ebx@1 void (__thiscall *v5)(_DWORD); // eax@1 void (__thiscall *v6)(_DWORD, _DWORD); // eax@1 void (__thiscall *v7)(_DWORD); // eax@1 int *v8; // edx@6 int v9; // esi@6 int v10; // eax@17 int v11; // edx@17 int v12; // ecx@18 int (__thiscall *v13)(_DWORD); // eax@18 int v14; // eax@18 int v15; // ecx@19 int v16; // esi@19 int v17; // eax@22 int v18; // ecx@24 int v19; // eax@28 int (__thiscall *v20)(_DWORD); // eax@30 int v21; // eax@30 int v22; // eax@31 int v23; // ecx@32 int v24; // eax@34 int v25; // eax@34 int v26; // eax@35 int v27; // eax@38 int v28; // ecx@38 int v29; // eax@39 int v30; // eax@47 int v31; // esi@47 __int16 v32; // ax@49 int v33; // edi@50 int v34; // edx@50 void (__thiscall *v35)(_DWORD); // eax@50 int v36; // edx@50 int v37; // eax@50 void (__thiscall *v38)(_DWORD); // eax@50 void (__thiscall *v39)(_DWORD); // eax@50 void (__thiscall *v40)(_DWORD); // eax@50 void *v41; // esi@50 int v42; // eax@50 int v43; // eax@50 int v44; // edx@50 int v45; // edx@50 int v46; // eax@54 unsigned __int16 v47; // ax@57 int v48; // esi@57 int (__thiscall *v49)(_DWORD); // eax@57 int v50; // ecx@57 int v51; // esi@59 int v52; // eax@61 __int16 v53; // ax@61 int v54; // edx@63 int v55; // edi@63 int v56; // eax@63 int v57; // eax@65 void (__thiscall *v58)(_DWORD); // edx@65 int v59; // ecx@65 int v60; // eax@65 int v61; // eax@67 int v62; // eax@69 int v63; // edx@69 int v64; // edx@69 __int16 v65; // ax@69 int v66; // edx@69 int v67; // eax@71 void (__thiscall *v68)(_DWORD); // eax@72 int v69; // eax@72 int v70; // edx@74 int v71; // ecx@76 int v72; // edi@76 int v73; // eax@78 void *v74; // ecx@78 int v75; // eax@80 int v76; // eax@81 bool v77; // zf@81 int (__thiscall *v78)(_DWORD); // eax@92 void *v79; // esi@93 __int16 v80; // ax@93 int v81; // eax@95 void *v82; // esi@96 int v83; // eax@96 int v84; // eax@98 int v85; // eax@99 int v86; // esi@99 int v87; // eax@100 char v88; // al@104 int v89; // eax@105 char *v90; // eax@106 unsigned __int8 v91; // al@109 int v92; // edi@110 int v93; // eax@110 int v94; // eax@115 int v95; // eax@116 unsigned __int16 v96; // ax@117 void *v97; // ecx@118 int v98; // eax@120 void *v99; // eax@122 int v100; // edx@122 int v101; // eax@124 char v102; // al@126 int v103; // eax@128 void *v104; // eax@129 char v105; // dl@129 int v106; // eax@131 void (__thiscall *v107)(_DWORD, _DWORD); // eax@134 int v108; // esi@135 unsigned __int16 v109; // ax@135 unsigned int v110; // eax@135 __time32_t v111; // eax@137 __time32_t v112; // eax@137 int v113; // eax@141 signed int v114; // ecx@142 void *v115; // eax@143 int v116; // eax@145 int v117; // edx@145 int v118; // eax@146 int *v119; // esi@146 int v120; // ecx@146 int v121; // eax@147 void *v122; // esi@148 int v123; // eax@148 int v124; // eax@150 int v125; // eax@151 int v126; // ecx@153 int v128; // [sp-Ch] [bp-50h]@18 int v129; // [sp-8h] [bp-4Ch]@14 int v130; // [sp-4h] [bp-48h]@1 char v131; // [sp+10h] [bp-34h]@153 char v132; // [sp+14h] [bp-30h]@72 unsigned __int16 v133; // [sp+18h] [bp-2Ch]@32 __int16 v134; // [sp+1Ah] [bp-2Ah]@32 int v135; // [sp+1Ch] [bp-28h]@32 int v136; // [sp+20h] [bp-24h]@32 int v137; // [sp+24h] [bp-20h]@1 int v138; // [sp+28h] [bp-1Ch]@63 int v139; // [sp+2Ch] [bp-18h]@59 int v140; // [sp+30h] [bp-14h]@57 char v141; // [sp+34h] [bp-10h]@100 int v142; // [sp+40h] [bp-4h]@1 v4 = (int)this; v137 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1404); v142 = 0; v5(v4); v6 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2788); v130 = 0; *(_DWORD *)(v4 + 161508) = 0; *(_BYTE *)(v4 + 161628) = 0; *(_DWORD *)(v4 + 161632) = 0; v6(v4, v130); *(_BYTE *)(v4 + 161562) = 0; sub_44C440((void *)v4); v7 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3340); *(_BYTE *)(v4 + 23825) &= 0xBFu; v7(v4); v77 = (dword_8BB24C & 1) == 0; *(_DWORD *)(v4 + 23832) = 0; *(_DWORD *)(v4 + 23836) = 0; if ( v77 ) { dword_8BB24C |= 1u; word_8BB248 = 1; atexit(nullsub_12); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_8BB248) ) goto LABEL_156; *(_BYTE *)(*(_DWORD *)(v4 + 32650) + 197) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4); **(_BYTE **)(v4 + 106) = 90; *(_WORD *)(v4 + 7904) = 2; sub_575B60((void *)(v4 + 82024)); sub_54FAA0((void *)v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1240))(v4) > 0x96u ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1528))(v4, 1677, 0, 0); LABEL_156: v142 = -1; goto LABEL_157; } nullsub_3(2); v8 = *(int **)(v4 + 3828); v9 = *(_WORD *)(v4 + 4); *(_WORD *)(v4 + 332) = 0; if ( *(_BYTE *)v8 ) { sub_639150(&unk_86DDD8, (int)"sp_NC_MAP_LOGINCOMPLETE_CMD Link", v9, *(_BYTE *)v8); LABEL_8: v142 = -1; goto LABEL_157; } if ( *(_DWORD *)(v4 + 122) == 0 ) { sub_639100(&unk_86DDD8, (int)"sp_NC_MAP_LOGINCOMPLETE_CMD Field", v9); v142 = -1; goto LABEL_157; } *(_BYTE *)(v4 + 155428) &= 0xFBu; v130 = 0; *(_DWORD *)(v4 + 161188) = 0; *(_BYTE *)(v4 + 161192) = 0; *(_DWORD *)(v4 + 161196) = 0; sub_442C70(v4 + 161248, v130); *(_WORD *)(*(_DWORD *)(v4 + 32650) + 82) = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2136))(v4) == 1 ) { *(_BYTE *)(*(_DWORD *)(v4 + 32650) + 195) = 1; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 106) ) { sub_43BC40(v4 + 32396); goto LABEL_19; } v130 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2140))(v4); v129 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4) + 1162); } else { *(_BYTE *)(*(_DWORD *)(v4 + 32650) + 195) = 0; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 106) ) { sub_43BC40(v4 + 32396); goto LABEL_19; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4); v11 = *(_DWORD *)v4; v130 = v10; v129 = *(_WORD *)((*(int (__thiscall **)(int))(v11 + 1056))(v4) + 1162); } v12 = *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4) + 1161); v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1056); v128 = v12; v14 = v13(v4); sub_43BCA0(v4 + 32396, v4 + 32657, *(_BYTE *)(v14 + 1160), v128, v129, v130); LABEL_19: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2112))(v4, 65535); sub_43BD10(v4 + 32396, byte_6A492E); **(_BYTE **)(v4 + 3828) = 1; v15 = *(_DWORD *)(v4 + 122); *(_BYTE *)(v4 + 155503) = 0; *(_DWORD *)(v4 + 32388) = v4 + 24180; *(_DWORD *)(v4 + 32384) = v4 + 24180; v16 = *(_DWORD *)(v15 + 12); if ( sub_409A00((void *)(v4 + 432), 288) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4) ) { **(_DWORD **)(v4 + 118) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 118) + 4) = 3; } else { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1616))(v4, 288); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v17); } } else { **(_DWORD **)(v4 + 118) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 118) + 4) = *(_BYTE *)(v16 + 171); } v18 = *(_DWORD *)(v4 + 122); if ( v18 ) { v130 = 289; if ( sub_474A60(v18) ) { if ( sub_409A00((void *)(v4 + 432), v130) ) { **(_DWORD **)(v4 + 118) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 118) + 4) = 2; if ( sub_4627E0(*(void **)(v4 + 122)) ) { v19 = sub_4627E0(*(void **)(v4 + 122)); sub_47EDA0((void *)v19, v4); } } } else { (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 1616))(v4, v130); } } v20 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1324); *(_BYTE *)(v4 + 23824) &= 0xF7u; v21 = v20(v4); if ( v21 ) { v22 = v21 + 3364; if ( v22 ) { v133 = *(_WORD *)(v22 + 4); v23 = *(_WORD *)(v22 + 14); v135 = v22; v134 = *(_WORD *)(*(_DWORD *)(v22 + 8) + 12 * v23 + 4); v136 = 0; if ( sub_402530((int)&v133) ) { while ( 1 ) { if ( v133 >= *(_WORD *)(v135 + 4) || (v24 = *(_DWORD *)(v135 + 8), v77 = *(_BYTE *)(v24 + 12 * v133 + 8) == 0, v25 = v24 + 12 * v133, v77) ) v26 = v136; else v26 = *(_DWORD *)v25; if ( !v26 ) break; v27 = sub_4A2CF0((int)&v133); v28 = *(_DWORD *)dword_87150C[3 * *(_DWORD *)(v27 + 4)]; if ( v28 ) { v29 = *(_DWORD *)(dword_87150C[3 * *(_DWORD *)(v27 + 4)] + 4); if ( !*(_BYTE *)(v29 + 4) ) { if ( !*(_BYTE *)(v29 + 6) && !*(_BYTE *)(v29 + 5) ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1616))(v4, *(_DWORD *)(v28 + 34)); } } if ( !sub_402530((int)&v133) ) goto LABEL_46; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD Abstate List Null ListTraveler", 0); } } } LABEL_46: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1616))(v4, 290); (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, 291, 1, dword_87777C, dword_14D129E8, 0, -1, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 63), 7, 0); sub_401900((void *)v4, 291); v130 = 0; *(_WORD *)(v4 + 84376) = -1; sub_440C20((int)&dword_D9FB808, v130); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3436))(v4, 0); sub_551820(v4); sub_549230(v4, 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3580))(v4, 2); sub_561890((void *)v4); sub_55F460((void *)v4); if ( *(_DWORD *)(v4 + 161376) != 792 ) { v30 = sub_409A00((void *)(v4 + 432), *(_DWORD *)(v4 + 161376)); v31 = v30; if ( v30 ) { if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v30 + 4)] + 36 * *(_BYTE *)(v30 + 24) + 12), 59) == 1 ) { v32 = sub_415C60((void *)(dword_87150C[3 * *(_DWORD *)(v31 + 4)] + 36 * *(_BYTE *)(v31 + 24) + 12), 59); sub_4A25D0(v4, v32, *(_DWORD *)(v4 + 161376), 0); } } } sub_43CEA0(); v33 = 0; dword_8B3AC4 = sub_43E000(&unk_8B3AC8, v4); sub_549A40((void *)v4, (int)sub_440E10, 0, 0, 0, 0); sub_43F5A0(v4); sub_4B6EA0(&dword_D9FB808, v4); sub_40ADC0((void *)(v4 + 432), (void *)v4); sub_440640(v4 + 58688); *(_DWORD *)(v4 + 84508) = 0; sub_50E3F0((void *)(v4 + 84520)); *(_WORD *)(v4 + 85728) = 0; v34 = *(_DWORD *)v4; *(_WORD *)(v4 + 84500) = -1; v35 = *(void (__thiscall **)(_DWORD))(v34 + 1576); *(_DWORD *)(v4 + 84504) = 0; *(_DWORD *)(v4 + 4112) = 0; v35(v4); *(_DWORD *)(v4 + 16 * *(_DWORD *)(v4 + 4104) + 3848) = 0; v36 = *(_DWORD *)v4; *(_DWORD *)(v4 + 81788) = -1; *(_DWORD *)(v4 + 81784) = -1; *(_DWORD *)(v4 + 81780) = -1; *(_DWORD *)(v4 + 81776) = -1; v37 = dword_14D129E8; *(_DWORD *)(v4 + 3836) = dword_14D129E8; *(_DWORD *)(v4 + 3832) = v37; v38 = *(void (__thiscall **)(_DWORD))(v36 + 3460); *(_DWORD *)(v4 + 156356) = dword_14D129E8; v38(v4); v39 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3368); *(_BYTE *)(v4 + 23824) &= 0xEFu; v39(v4); v40 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2348); *(_BYTE *)(v4 + 23824) &= 0xBFu; *(_BYTE *)(v4 + 23825) &= 0xF8u; *(_WORD *)(v4 + 24165) = -157; v40(v4); v41 = off_849C18; *(_WORD *)off_849C18 = 6156; *((_WORD *)v41 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_WORD *)v41 + 2) = *(_WORD *)(v4 + 4); *(_DWORD *)((char *)v41 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v42 = *(_DWORD *)(v4 + 122); *(_DWORD *)((char *)v41 + 10) = *(_DWORD *)v42; *(_DWORD *)((char *)v41 + 14) = *(_DWORD *)(v42 + 4); *(_DWORD *)((char *)v41 + 18) = *(_DWORD *)(v42 + 8); *((_BYTE *)v41 + 22) = sub_5A7540(byte_14D16AE8)[16]; v43 = *(_DWORD *)(v4 + 102); *(_DWORD *)((char *)v41 + 23) = *(_DWORD *)v43; *(_DWORD *)((char *)v41 + 27) = *(_DWORD *)(v43 + 4); *((_BYTE *)v41 + 31) = 99; *((_DWORD *)v41 + 8) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1080))(v4); *((_DWORD *)v41 + 9) = v44; *((_DWORD *)v41 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1076))(v4); *((_DWORD *)v41 + 11) = v45; *((_BYTE *)v41 + 48) = 0; if ( sub_474B20(v4) == 1 ) *((_BYTE *)v41 + 48) = 1; if ( sub_4C81E0(&off_849C18, 49) ) { v46 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v46); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 49); } if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1364))(v4) == -1 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4) != -1 ) { v47 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4); v48 = sub_641CA0(&dword_DA230A4, v47); v49 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1360); v140 = v48; v50 = (unsigned __int16)v49(v4); if ( v48 != 0 ) { v51 = v140 + 4; v139 = 5; do { if ( *(_DWORD *)v51 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4) ) { v52 = v140; *(_DWORD *)(v51 + 32) = v4; (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 1908))(v4, v52); *(_BYTE *)(v51 + 31) = sub_5A7540(byte_14D16AE8)[16]; *(_DWORD *)v51 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)(v51 + 4) = *(_WORD *)(v4 + 4); v53 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); v130 = v4 + 32665; *(_WORD *)(v51 + 6) = v53; sub_4836B0(v51 + 8, v130); *(_BYTE *)(v51 + 28) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1240))(v4); *(_BYTE *)(v51 + 29) = 0; } if ( *(_DWORD *)(v51 + 32) != v33 ) { v54 = *(_DWORD *)v4; v55 = **(_DWORD **)(v51 + 32); v138 = *(_DWORD *)(v51 + 32); v56 = (*(int (__thiscall **)(int))(v54 + 836))(v4); (*(void (__thiscall **)(int, int))(v55 + 1912))(v138, v56); v33 = 0; } v51 += 36; --v139; } while ( v139 ); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Party not found", v50); } } v57 = *(_DWORD *)(v4 + 32650); *(_BYTE *)(v4 + 7636) = 0; *(_DWORD *)(v4 + 7640) = v33; *(_WORD *)(v57 + 84) = word_13244DBC; *(_BYTE *)(v57 + 86) = byte_13244DBE; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1576))(v4); *(_DWORD *)(v4 + 368) = v33; sub_43F0A0(v4 + 368); *(_WORD *)(v4 + 332) = 0; v58 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1928); *(_DWORD *)(v4 + 7644) = v33; *(_DWORD *)(v4 + 155404) = 7; *(_DWORD *)(v4 + 155400) = v33; *(_DWORD *)(v4 + 360) = -1; v58(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1932))(v4); v59 = *(_DWORD *)(v4 + 4116); *(_DWORD *)(v4 + 155568) = sub_55C1D0; *(_DWORD *)(v4 + 7892) = -1; *(_DWORD *)(v4 + 7624) = (*(int (**)(void))(*(_DWORD *)v59 + 60))(); *(_WORD *)(v4 + 7628) = 0; *(_DWORD *)(v4 + 155596) = dword_14D129E8; *(_DWORD *)(v4 + 155600) = dword_14D129E8; *(_WORD *)(v4 + 159648) = -1; sub_589A00((void *)v4); *(_DWORD *)(v4 + 159652) = dword_14D129E8 + 6000; *(_DWORD *)(v4 + 159656) = 6000; v60 = dword_14D129E8 + 20; *(_DWORD *)(v4 + 159664) = 20; *(_DWORD *)(v4 + 159660) = v60; if ( *(_DWORD *)(*(_DWORD *)(v4 + 122) + 60) == -1 ) { if ( *(_BYTE *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1064))(v4) ) { v61 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1064))(v4); sub_43B8E0(v61); } *(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1064))(v4) = 1; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); v130 = 9; *(_DWORD *)(v4 + 155612) = &unk_13253600; sub_50E0B0((void *)v4, v130); sub_50E0B0((void *)v4, 8); sub_51AD70((void *)v4, 1); v62 = sub_42D5F0((void *)v4); *(_BYTE *)(v4 + 23824) &= 0xFCu; *(_DWORD *)(v4 + 32776) = v62; *(_DWORD *)(v4 + 32780) = v63; *(_DWORD *)(v4 + 81996) = dword_14D129E8; *(_DWORD *)(v4 + 82008) = dword_14D129E8; *(_DWORD *)(v4 + 82000) = dword_14D129E8; v64 = *(_DWORD *)v4; *(_DWORD *)(v4 + 82012) = dword_14D129E8; *(_DWORD *)(v4 + 82004) = nullsub_2; *(_DWORD *)(v4 + 82016) = nullsub_2; v65 = (*(int (__thiscall **)(int))(v64 + 1300))(v4); v66 = *(_DWORD *)v4; *(_WORD *)(v4 + 156346) = v65; *(_WORD *)(v4 + 156348) = (*(int (__thiscall **)(int))(v66 + 1304))(v4); *(_DWORD *)off_849C18 = *(_DWORD *)(v4 + 156344); *((_WORD *)off_849C18 + 2) = *(_WORD *)(v4 + 156348); if ( sub_4C81E0(&off_849C18, 6) == v33 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } else { v67 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v67 + 12))(v67, v4, &off_849C18); } *(_BYTE *)(v4 + 7888) &= 0xFDu; v130 = v4; v129 = v4 + 159688; *(_BYTE *)(v4 + 160360) = 0; *(_DWORD *)(v4 + 160752) = -1; sub_450600((int)&v132, v129, v130); memcpy((void *)(v4 + 160312), &byte_13244DC0, 0x2Cu); v130 = (int)&v132; LOBYTE(v142) = 1; *(_WORD *)(v4 + 160356) = *((_WORD *)&byte_13244DC0 + 22); sub_43C470(v4 + 159688, v130); v68 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 860); *(_BYTE *)(v4 + 3820) = 1; v68(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 872))(v4); *(_BYTE *)(v4 + 155564) = 1; LOBYTE(v142) = 0; sub_450670((int)&v132); *(_DWORD *)(v4 + 155504) = 0; sub_43E370((void *)v4); v69 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 53776))(v4 + 53776, 0); if ( *(_WORD *)(v69 + 8) != -1 ) sub_532D50((void *)(v4 + 155460), v4, v69); sub_4406A0((void *)v4); v70 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 0; if ( !(*(int (__thiscall **)(int))(v70 + 1256))(v4) ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1252))(v4, 1); sub_43F360((void *)v4); sub_440230((void *)v4); v71 = *(_DWORD *)(v4 + 122); v72 = 0; if ( v71 && sub_474A60(v71) ) { v73 = sub_409A00((void *)(v4 + 432), 289); v74 = *(void **)(v4 + 122); if ( v73 ) { v77 = sub_4627E0(v74) == 0; } else { if ( !sub_4627E0(v74) ) { LABEL_84: sub_43C920((void *)v4); goto LABEL_85; } v75 = sub_4627E0(*(void **)(v4 + 122)); if ( sub_47EA00((void *)v75, v4) ) goto LABEL_85; v76 = sub_4627E0(*(void **)(v4 + 122)); v77 = sub_479420((void *)v76, v4) == 0; } if ( !v77 ) goto LABEL_85; goto LABEL_84; } LABEL_85: (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3860))(v4, 0); *(_BYTE *)(v4 + 23824) &= 0x7Fu; *(_WORD *)(v4 + 332) = 0; if ( sub_55B770(v4) == 1 ) { v130 = 40; LABEL_91: (*(void (__thiscall **)(int, signed int, int))(*(_DWORD *)v4 + 772))(v4, 6, v130); goto LABEL_92; } if ( *(_BYTE *)(*(_DWORD *)(v4 + 122) + 84) ) (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 6, 18); if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 105) ) { v130 = 24; goto LABEL_91; } LABEL_92: (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3596))(v4); v78 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1360); *(_WORD *)(v4 + 160862) = -1; if ( (unsigned __int16)v78(v4) != -1 ) { v79 = off_849C18; *(_WORD *)off_849C18 = 14414; v80 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1360))(v4); v130 = 4; *((_WORD *)v79 + 1) = v80; if ( sub_4C81E0(&off_849C18, v130) ) { v81 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v81); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 4); } } sub_43EAB0((void *)v4); *(_DWORD *)(v4 + 160864) = 0; sub_641000((void *)(v4 + 152568)); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1036))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1048))(v4); sub_43B890(v4 + 23840); v82 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v82 + 1) = *(_WORD *)(v4 + 4); v83 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v130 = 8; *((_DWORD *)v82 + 1) = v83; if ( sub_4C81E0(&off_849C18, v130) ) { v84 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v84); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 8); } *(_DWORD *)(v4 + 160880) = 0; sub_43EC90((void *)v4); sub_43C630((void *)v4); *(_BYTE *)(v4 + 160884) = 0; *(_DWORD *)(v4 + 23820) = 0; sub_48FF10((void *)(v4 + 7936)); sub_43BA70(v4 + 7936); v85 = *(_DWORD *)(v4 + 122); *(_BYTE *)(v4 + 160910) = 0; *(_WORD *)(v4 + 160886) = -1; v86 = *(_DWORD *)(v85 + 60); if ( v86 != -1 ) { v87 = sub_494970(&dword_D61E090, v86, (int)&v141); if ( v87 ) sub_499220(&dword_D64C510, v86, v4, *(_WORD *)(v87 + 153), 0); } *(_WORD *)(v4 + 161184) = 0; if ( sub_55E380(v4, 25) == 1 || sub_55E380(v4, 28) == 1 ) { v88 = sub_55E370(v4); sub_5631C0(v4, v88); } sub_55F890(v4); v89 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1056))(v4); if ( !v89 || (v90 = sub_5C7D90(&unk_1325D0A0, *(_BYTE *)(v89 + 1160), *(_BYTE *)(v89 + 1161))) == 0 ) goto LABEL_8; v138 = (unsigned __int8)*v90; v139 = 0; if ( v138 > 0 ) { v140 = (int)(v90 + 4); while ( 1 ) { v86 = *(_DWORD *)(v140 + 4); v91 = *(_BYTE *)v140; if ( !v86 ) goto LABEL_8; v92 = v91; v93 = *(_DWORD *)(v86 + 36 * v91 + 12); if ( v93 && (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(*(_DWORD *)v86 + 34), v92, v86, dword_14D129E8, 0, -1, *(_DWORD *)(v93 + 43), 1, 0) ) { sub_401900((void *)v4, *(_DWORD *)(*(_DWORD *)v86 + 34)); sub_4055D0((void *)v4, *(_DWORD *)(*(_DWORD *)v86 + 34), -1, v92); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 1008))( v4, *(_DWORD *)(*(_DWORD *)v86 + 34), -1, 1); } v140 += 12; ++v139; if ( v139 >= v138 ) { v72 = 0; break; } } } v94 = *(_DWORD *)(v4 + 122); if ( v94 != v72 ) { v95 = sub_418B00((int)byte_85A2C0, *(_DWORD *)(v94 + 12)); v86 = sub_4858E0(&unk_D714FF8, (const char *)v95); if ( v86 != v72 ) { v96 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1360))(v4); if ( sub_49E860((void *)v86, (int)&v138, v96) ) { v97 = off_849C18; *(_WORD *)off_849C18 = 2064; *((_BYTE *)v97 + 2) = 1; *(_WORD *)((char *)v97 + 3) = (unsigned __int16)v138 / 10; if ( sub_4C81E0(&off_849C18, 5) == v72 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 5); } else { v98 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v98 + 12))(v98, v4, &off_849C18); } } } } if ( *(_WORD *)(v4 + 32759) != (_WORD)v72 ) { v99 = off_849C18; *(_DWORD *)off_849C18 = &unk_DA97C05; v100 = 60 * *(_WORD *)(v4 + 32759); v130 = 8; *((_DWORD *)v99 + 1) = v100; if ( sub_4C81E0(&off_849C18, v130) == v72 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 8); } else { v101 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v101 + 12))(v101, v4, &off_849C18); } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1236))(v4) ) { v86 = (int)off_849C18; *(_WORD *)off_849C18 = 4294; v102 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4); v130 = 3; *(_BYTE *)(v86 + 2) = v102; if ( sub_4C81E0(&off_849C18, v130) == v72 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 3); } else { v103 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v103 + 12))(v103, v4, &off_849C18); } } sub_417680((void *)v4); sub_564100((void *)v4); sub_440460((void *)v4); (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v4 + 2752))(v4, dword_14D129E8, 600); v104 = off_849C18; *(_WORD *)off_849C18 = 4308; v105 = *(_BYTE *)(v4 + 161500); v130 = 3; *((_BYTE *)v104 + 2) = v105; if ( sub_4C81E0(&off_849C18, v130) == v72 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 3); } else { v106 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v106 + 12))(v106, v4, &off_849C18); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2768))(v4); sub_55E900(v4, v72); *(_WORD *)(v4 + 84382) = 0; *(_BYTE *)(v4 + 84384) = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2808))(v4) ) { v138 = (int)&v128; v130 = v72; v129 = v72; v128 = v72; strncpy((char *)&v128, byte_6A492E, 0xCu); (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v4 + 2812))(v4, v128, v129, v130); } v107 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3036); *(_WORD *)(v4 + 161560) = -1; v107(v4, v72); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 3044))(v4, v72); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 3056))(v4, v72); (*(void (__thiscall **)(int, signed int, int, int, int))(*(_DWORD *)v4 + 3064))(v4, 2, v4, v72, v72); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 3172))(v4, v72); sub_45D290(v4, v4, v86); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3212))(v4); sub_55EFA0(v4, v72); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3388))(v4); sub_55B690(v4); if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1364))(v4) != -1 ) { v108 = *(_DWORD *)v4; v109 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1364))(v4); v110 = sub_5CB350(v109); (*(void (__thiscall **)(int, unsigned int))(v108 + 2696))(v4, v110); if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 166) == 1 ) { sub_5CAD90(v4); sub_5CAE20(v4); sub_5CAFD0(v4); } } v111 = _time32((__time32_t *)v72); v129 = v72; *(_DWORD *)(v4 + 161748) = v111; v112 = _time32((__time32_t *)v129); v130 = v4; *(_DWORD *)(v4 + 161752) = v112; sub_46CAA0((int)&unk_14D138B8, v130); sub_55F510(v4, v72); sub_55F670(v4, v72); sub_4D14D0(v4); if ( *(_BYTE *)(v4 + 161856) == 1 ) { if ( *(_QWORD *)(v4 + 161864) == __PAIR__(468469881, (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4)) + 2075117744 ) { v130 = *(_WORD *)(v4 + 161872); if ( !sub_4D1660(v4, v72, v130) ) sub_4D14D0(v4); } } sub_4D1570(v4); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 3700))(v4, v72, v72); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 3704))(v4, v72, v72); v113 = *(_DWORD *)(v4 + 122); if ( v113 != v72 ) { v114 = *(_DWORD *)(v113 + 504); if ( v114 < 3 ) { v115 = off_849C18; *(_WORD *)off_849C18 = 6188; *(_DWORD *)((char *)v115 + 2) = v114; if ( sub_4C81E0(&off_849C18, 6) == v72 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } else { v116 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v117 = *(_DWORD *)v116; v130 = (int)&off_849C18; (*(void (__thiscall **)(int, int, void **))(v117 + 12))(v116, v4, &off_849C18); } } } v118 = *(_DWORD *)(v4 + 122); v119 = *(int **)(v118 + 16); v120 = *(_DWORD *)(v118 + 504); if ( v119 != (int *)v72 ) { v130 = v4; v121 = sub_461E60(v120); sub_463870(&unk_1325D018, *(_WORD *)v119, v121, (void *)v130); } v122 = off_849C18; *(_WORD *)off_849C18 = 13519; v123 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v130 = 6; *(_DWORD *)((char *)v122 + 2) = v123; if ( sub_4C81E0(&off_849C18, v130) == v72 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } else { v124 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v124); } v125 = *(_DWORD *)(v4 + 122); if ( v125 != v72 && *(_DWORD *)(v125 + 296) != v72 ) { sub_5D48D0((int)&v131, v125, v4); v126 = *(_DWORD *)(v4 + 122); LOBYTE(v142) = 2; sub_463090(v126, 4, (int)&v131); LOBYTE(v142) = 0; sub_5D4580(&v131); } v142 = -1; LABEL_157: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"); } // 4FF7B0: using guessed type _DWORD __stdcall nullsub_3(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; // 87777C: using guessed type int dword_87777C; // 8B3AC4: using guessed type int dword_8B3AC4; // 8BB248: using guessed type __int16 word_8BB248; // 8BB24C: using guessed type int dword_8BB24C; // D61E090: using guessed type int dword_D61E090; // DA230A4: using guessed type int dword_DA230A4; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; // 13244DC0: using guessed type char byte_13244DC0; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; //----- (004442D0) -------------------------------------------------------- void *__thiscall sub_4442D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6A98A4; if ( a2 & 1 ) operator delete(this); return v2; } // 6A98A4: using guessed type int (__thiscall *off_6A98A4)(void *, char); //----- (00444300) -------------------------------------------------------- int __thiscall sub_444300(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // eax@1 _BYTE *v7; // eax@1 int v8; // eax@1 _BYTE *v9; // eax@1 v5 = this; *(_DWORD *)this = &off_6A98B4; v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)a2; *((_DWORD *)v7 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(a2 + 8); v7[12] = 0; strncpy((char *)(this + 24), v7, 0xCu); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)a3; *((_DWORD *)v9 + 1) = *(_DWORD *)(a3 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(a3 + 8); v9[12] = 0; strncpy((char *)(v5 + 57), v9, 0xCu); *(_DWORD *)(v5 + 90) = a4; *(_DWORD *)(v5 + 94) = a5; return v5; } // 6A98B4: using guessed type int (__thiscall *off_6A98B4)(void *, char); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (004443A0) -------------------------------------------------------- int __thiscall sub_4443A0(void *this, int a2) { return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1536))((char *)this + 4, 6, 9, 10); } //----- (004443C0) -------------------------------------------------------- signed int __cdecl sub_4443C0() { return 1; } //----- (004443D0) -------------------------------------------------------- void *__thiscall sub_4443D0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 void *v4; // eax@1 int v5; // ecx@1 _BYTE *v6; // ecx@1 int v7; // eax@1 int v8; // eax@1 int v9; // ecx@1 _BYTE *v10; // ecx@1 v2 = this; *(_DWORD *)this = &off_6A98B4; v3 = sub_4012C0(a2); v4 = sub_5CF620((void *)v3); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *((_DWORD *)v4 + 1); *((_DWORD *)v6 + 2) = *((_DWORD *)v4 + 2); v6[12] = 0; strncpy((char *)v2 + 24, v6, 0xCu); v7 = sub_4012C0(a2); v8 = sub_4B81F0(v7); v9 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v9; v10 = &byte_85A2C0[256 * v9]; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *(_DWORD *)(v8 + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)(v8 + 8); v10[12] = 0; strncpy((char *)v2 + 57, v10, 0xCu); *(_DWORD *)((char *)v2 + 90) = *(_DWORD *)sub_552F20(a2); *(_DWORD *)((char *)v2 + 94) = *(_DWORD *)(sub_552F20(a2) + 4); return v2; } // 6A98B4: using guessed type int (__thiscall *off_6A98B4)(void *, char); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (004444E0) -------------------------------------------------------- void *__thiscall sub_4444E0(int this, __int16 a2) { int v2; // eax@1 size_t v3; // ecx@1 __int16 *v5; // [sp+0h] [bp-208h]@1 __int16 v6; // [sp+4Ch] [bp-1BCh]@1 unsigned int v7; // [sp+204h] [bp-4h]@1 int v8; // [sp+208h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = this; v5 = &v6; v3 = *(_DWORD *)(this + 508); v6 = a2; return bsearch(&v5, *(const void **)(v2 + 504), v3, 0x4Cu, (int (__cdecl *)(const void *, const void *))sub_469630); } // 86FEB8: using guessed type int __security_cookie; //----- (00444540) -------------------------------------------------------- bool __cdecl sub_444540(int a1, int a2) { return *(_WORD *)a1 < *(_WORD *)a2; } //----- (00444560) -------------------------------------------------------- char __stdcall sub_444560(int a1, unsigned __int16 a2) { int v3; // eax@3 int v4; // eax@6 int v5; // eax@9 int v6; // eax@12 int v7; // ecx@12 if ( !a1 ) { sub_639100(&unk_86DDD8, (int)"CharacterToggleSkillList::ctsl_CanUseSkill_WeaponType : INVALID SKILL", 0); return 0; } v3 = *(_DWORD *)(a1 + 4); if ( !v3 ) { sub_639100(&unk_86DDD8, (int)"CharacterToggleSkillList::ctsl_CanUseSkill_WeaponType : INVALID SKILL ActiveData", 0); return 0; } if ( a2 == -1 ) { v4 = *(_DWORD *)(v3 + 110); if ( v4 == 6 || v4 == 2 ) return 1; return 0; } v5 = sub_418CB0((int)&dword_14D20890, a2); if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"CharacterToggleSkillList::ctsl_CanUseSkill_WeaponType : INVALID Item", a2); return 0; } v6 = *(_DWORD *)v5; v7 = *(_DWORD *)(v6 + 102); if ( v7 != 5 && v7 != 7 ) return 0; switch ( *(_DWORD *)(*(_DWORD *)(a1 + 4) + 110) ) { case 0: if ( *(_BYTE *)(v6 + 122) ) return 0; return 1; case 1: if ( *(_BYTE *)(v6 + 122) != 1 ) return 0; return 1; case 3: if ( v7 != 5 ) return 0; return 1; case 4: if ( *(_DWORD *)(v6 + 232) != 13 ) return 0; return 1; case 5: if ( *(_DWORD *)(v6 + 232) != 5 ) return 0; return 1; case 7: if ( v7 != 7 ) return 0; return 1; case 8: if ( *(_DWORD *)(v6 + 232) != 2 ) return 0; return 1; case 9: if ( *(_DWORD *)(v6 + 232) != 10 ) return 0; return 1; case 0xA: if ( *(_DWORD *)(v6 + 232) != 3 ) return 0; return 1; case 0xB: if ( *(_DWORD *)(v6 + 232) != 11 ) return 0; return 1; case 0xC: if ( *(_DWORD *)(v6 + 232) != 18 ) return 0; return 1; case 0xD: if ( *(_DWORD *)(v6 + 232) != 17 ) return 0; return 1; case 0xE: if ( *(_DWORD *)(v6 + 232) != 19 ) return 0; break; case 2: case 6: return 1; default: return 0; } return 1; } // 14D20890: using guessed type int dword_14D20890; //----- (00444740) -------------------------------------------------------- int __thiscall sub_444740(int this) { int result; // eax@1 int v2; // esi@1 signed int v3; // edi@1 result = this; v2 = this + 176; v3 = 22; do { *(_DWORD *)(v2 - 176) = 102; *(_DWORD *)(v2 - 88) = 150; *(_DWORD *)v2 = 102; *(_DWORD *)(v2 + 88) = 150; v2 += 4; --v3; } while ( v3 ); *(_DWORD *)(this + 88) = 150; *(_DWORD *)(this + 92) = 154; *(_DWORD *)(this + 96) = 150; *(_DWORD *)(this + 100) = 150; *(_DWORD *)(this + 104) = 150; *(_DWORD *)(this + 108) = 170; *(_DWORD *)(this + 112) = 150; *(_DWORD *)(this + 116) = 150; *(_DWORD *)(this + 120) = 150; *(_DWORD *)(this + 124) = 150; *(_DWORD *)(this + 128) = 150; *(_DWORD *)(this + 132) = 150; *(_DWORD *)(this + 136) = 150; *(_DWORD *)(this + 140) = 158; *(_DWORD *)(this + 144) = 150; *(_DWORD *)(this + 160) = 190; *(_DWORD *)(this + 156) = 194; *(_DWORD *)(this + 164) = 150; *(_DWORD *)(this + 168) = 150; *(_DWORD *)this = 102; *(_DWORD *)(this + 4) = 106; *(_DWORD *)(this + 8) = 102; *(_DWORD *)(this + 12) = 102; *(_DWORD *)(this + 16) = 102; *(_DWORD *)(this + 20) = 122; *(_DWORD *)(this + 24) = 102; *(_DWORD *)(this + 28) = 102; *(_DWORD *)(this + 32) = 102; *(_DWORD *)(this + 36) = 102; *(_DWORD *)(this + 40) = 102; *(_DWORD *)(this + 44) = 102; *(_DWORD *)(this + 48) = 102; *(_DWORD *)(this + 52) = 110; *(_DWORD *)(this + 56) = 102; *(_DWORD *)(this + 72) = 142; *(_DWORD *)(this + 68) = 146; *(_DWORD *)(this + 76) = 102; *(_DWORD *)(this + 80) = 102; *(_DWORD *)(this + 84) = 102; *(_DWORD *)(this + 264) = 150; *(_DWORD *)(this + 268) = 150; *(_DWORD *)(this + 272) = 174; *(_DWORD *)(this + 276) = 186; *(_DWORD *)(this + 280) = 166; *(_DWORD *)(this + 284) = 150; *(_DWORD *)(this + 288) = 150; *(_DWORD *)(this + 292) = 150; *(_DWORD *)(this + 296) = 150; *(_DWORD *)(this + 300) = 150; *(_DWORD *)(this + 304) = 178; *(_DWORD *)(this + 308) = 182; *(_DWORD *)(this + 312) = 150; *(_DWORD *)(this + 316) = 150; *(_DWORD *)(this + 320) = 150; *(_DWORD *)(this + 336) = 190; *(_DWORD *)(this + 332) = 194; *(_DWORD *)(this + 340) = 150; *(_DWORD *)(this + 344) = 150; *(_DWORD *)(this + 348) = 162; *(_DWORD *)(this + 176) = 102; *(_DWORD *)(this + 180) = 150; *(_DWORD *)(this + 184) = 126; *(_DWORD *)(this + 188) = 138; *(_DWORD *)(this + 192) = 118; *(_DWORD *)(this + 196) = 102; *(_DWORD *)(this + 200) = 102; *(_DWORD *)(this + 204) = 102; *(_DWORD *)(this + 208) = 102; *(_DWORD *)(this + 212) = 102; *(_DWORD *)(this + 216) = 130; *(_DWORD *)(this + 220) = 134; *(_DWORD *)(this + 224) = 102; *(_DWORD *)(this + 228) = 102; *(_DWORD *)(this + 232) = 102; *(_DWORD *)(this + 248) = 142; *(_DWORD *)(this + 244) = 146; *(_DWORD *)(this + 252) = 102; *(_DWORD *)(this + 256) = 102; *(_DWORD *)(this + 260) = 114; return result; } //----- (00444960) -------------------------------------------------------- int __cdecl sub_444960(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)) { int v5; // ebx@1 int i; // edi@1 int v7; // esi@2 int v8; // eax@3 int result; // eax@4 v5 = a2; for ( i = (a2 - 1) / 2; a3 < v5; i = (i - 1) / 2 ) { v7 = a1 + 20 * i; if ( !(unsigned __int8)a5(a1 + 20 * i, a4) ) break; v8 = a1 + 20 * v5; *(_DWORD *)v8 = *(_DWORD *)v7; *(_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; } result = a1 + 20 * v5; *(_DWORD *)result = *(_DWORD *)a4; *(_DWORD *)(result + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a4 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a4 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a4 + 16); return result; } //----- (00444A00) -------------------------------------------------------- int __thiscall sub_444A00(void *this) { int v1; // esi@1 int v2; // edi@1 void *v3; // edx@1 signed int v4; // eax@1 unsigned int v5; // ebx@1 int v6; // ecx@1 int v7; // ecx@2 unsigned int v8; // eax@6 int v10; // [sp+10h] [bp-Ch]@2 void *v11; // [sp+14h] [bp-8h]@1 unsigned int v12; // [sp+18h] [bp-4h]@2 v11 = this; v1 = 0; v2 = 0; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerSummary"); v3 = v11; dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_EmpowerSummary"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v11 + 4); v5 = 0; v6 = 0; if ( v4 >= 2 ) { v7 = *(_DWORD *)v11 + 28; v12 = ((unsigned int)(v4 - 2) >> 1) + 1; v10 = 2 * v12; do { v1 += ((unsigned int)*(_WORD *)(v7 - 20) >> 12) + (((unsigned int)*(_WORD *)(v7 - 20) >> 4) & 0xF) + (((unsigned int)*(_WORD *)(v7 - 20) >> 8) & 0xF) + (*(_WORD *)(v7 - 20) & 0xF); v2 += ((unsigned int)*(_WORD *)v7 >> 12) + (((unsigned int)*(_WORD *)v7 >> 4) & 0xF) + (((unsigned int)*(_WORD *)v7 >> 8) & 0xF) + (*(_WORD *)v7 & 0xF); v7 += 40; --v12; } while ( v12 ); v6 = v10; v5 = 0; v3 = v11; } if ( v6 < *((_DWORD *)v3 + 4) ) { v8 = *(_WORD *)(*(_DWORD *)v3 + 20 * v6 + 8); v5 = (v8 & 0xF) + (v8 >> 12) + (((unsigned int)*(_WORD *)(*(_DWORD *)v3 + 20 * v6 + 8) >> 4) & 0xF) + (((unsigned int)*(_WORD *)(*(_DWORD *)v3 + 20 * v6 + 8) >> 8) & 0xF); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerSummary"); return v5 + v2 + v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00444B20) -------------------------------------------------------- int __thiscall sub_444B20(void *this) { void *v1; // esi@1 int v2; // edi@1 unsigned int v3; // ebx@1 int v4; // ecx@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerClear"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_EmpowerClear"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)v1; v3 = 0; if ( (*((_DWORD *)v1 + 1) - *(_DWORD *)v1) / 20 ) { v4 = 0; do { *(_WORD *)(v4 + v2 + 8) &= 0xFFFu; *(_WORD *)(v4 + *(_DWORD *)v1 + 8) &= 0xF0FFu; *(_WORD *)(v4 + *(_DWORD *)v1 + 8) &= 0xFF0Fu; *(_WORD *)(v4 + *(_DWORD *)v1 + 8) &= 0xFFF0u; v2 = *(_DWORD *)v1; ++v3; v4 += 20; } while ( v3 < (*((_DWORD *)v1 + 1) - *(_DWORD *)v1) / 20 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerClear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00444BF0) -------------------------------------------------------- int __thiscall sub_444BF0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 __time32_t v5; // ecx@1 int v6; // esi@1 int v7; // eax@2 int v8; // ebx@2 int v9; // ecx@4 unsigned int v10; // edx@4 int v11; // eax@10 int v12; // eax@10 int v13; // eax@10 int v15; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [bp-4h]@1 int v17; // [sp+2Ch] [bp+8h]@1 unsigned int v18; // [sp+30h] [bp+Ch]@7 v4 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_FillSaveBuffer"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_FillSaveBuffer"; v5 = dword_750CB8; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_44FB50(v5, (int)&v15); v6 = a2; *(_WORD *)(a2 + 6) = 0; v17 = a3; if ( a3 < *((_DWORD *)v4 + 4) ) { v7 = dword_14D129E8; v8 = 20 * a3; do { if ( *(_WORD *)(v6 + 6) >= 0x1F4u ) break; v9 = v8 + *(_DWORD *)v4; v10 = *(_DWORD *)(v9 + 4); if ( v10 > v7 ) { v18 = (v10 - v7) / 0xA; *(_DWORD *)(v9 + 16) = 1; if ( (signed int)v18 > 10800 ) sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_FillSaveBuffer : Too long cooltime ", 0); } else { if ( !*(_DWORD *)(v9 + 16) && a4 == 1 ) goto LABEL_11; v18 = 0; *(_DWORD *)(v9 + 16) = 0; } *(_DWORD *)(v6 + 16 * *(_WORD *)(v6 + 6) + 8) = v15; *(_WORD *)(v6 + 16 * *(_WORD *)(v6 + 6) + 12) = *(_WORD *)(v8 + *(_DWORD *)v4); *(_DWORD *)(v6 + 16 * *(_WORD *)(v6 + 6) + 14) = v18; v11 = v6 + 16 * *(_WORD *)(v6 + 6) + 18; *(_BYTE *)v11 ^= (*(_BYTE *)v11 ^ *(_BYTE *)(v8 + *(_DWORD *)v4 + 8)) & 0xF; v12 = v6 + 16 * *(_WORD *)(v6 + 6) + 18; *(_BYTE *)v12 = *(_BYTE *)v12 & 0xF | *(_WORD *)(v8 + *(_DWORD *)v4 + 8) & 0xF0; v13 = v6 + 16 * *(_WORD *)(v6 + 6) + 19; *(_BYTE *)v13 ^= (*(_BYTE *)v13 ^ *(_BYTE *)(v8 + *(_DWORD *)v4 + 9)) & 0xF; *(_BYTE *)(v6 + 16 * *(_WORD *)(v6 + 6) + 19) = *(_BYTE *)(v6 + 16 * *(_WORD *)(v6 + 6) + 19) & 0xF | 16 * (unsigned __int16)(*(_WORD *)(v8 + *(_DWORD *)v4 + 8) >> 12); *(_DWORD *)(v6 + 16 * (*(_WORD *)(v6 + 6))++ + 20) = *(_DWORD *)(v8 + *(_DWORD *)v4 + 12); v7 = dword_14D129E8; LABEL_11: v8 += 20; ++v17; } while ( v17 < *((_DWORD *)v4 + 4) ); } --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_FillSaveBuffer"); return v17; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00444DF0) -------------------------------------------------------- int __thiscall sub_444DF0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 __time32_t v5; // ecx@1 int v6; // esi@1 int v7; // ebx@2 signed int v8; // eax@4 unsigned int v9; // ecx@8 int v10; // eax@14 int v11; // eax@14 int v12; // eax@14 char v14; // [sp+10h] [bp-14h]@1 int v15; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [bp-4h]@1 int v17; // [sp+2Ch] [bp+8h]@1 unsigned int v18; // [sp+30h] [bp+Ch]@9 v4 = this; v15 = (int)"CharaterSkillList::csl_FillSaveBuffer"; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_FillSaveBuffer"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_FillSaveBuffer"; v5 = dword_750CB8; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_44FB50(v5, (int)&v14); v6 = a2; *(_WORD *)(a2 + 4) = 0; v17 = a3; if ( a3 < *((_DWORD *)v4 + 4) ) { v7 = 20 * a3; do { if ( *(_WORD *)(v6 + 4) >= 0x1F4u ) break; v8 = *(_WORD *)(v7 + *(_DWORD *)v4); if ( v8 > 29429 ) { if ( (unsigned int)(v8 - 29535) > 1 ) goto LABEL_8; } else { if ( v8 < 29428 && (v8 < 29200 || v8 > 29205) ) { LABEL_8: v9 = *(_DWORD *)(v7 + *(_DWORD *)v4 + 4); if ( v9 > dword_14D129E8 ) { v18 = (v9 - dword_14D129E8) / 0xA; if ( (signed int)v18 > 10800 ) sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_FillSaveBuffer : Too long cooltime ", 0); } else { v18 = 0; } *(_WORD *)(v6 + 12 * *(_WORD *)(v6 + 4) + 6) = *(_WORD *)(v7 + *(_DWORD *)v4); *(_DWORD *)(v6 + 12 * *(_WORD *)(v6 + 4) + 8) = v18; v10 = v6 + 4 * (3 * *(_WORD *)(v6 + 4) + 3); *(_BYTE *)v10 ^= (*(_BYTE *)v10 ^ *(_BYTE *)(v7 + *(_DWORD *)v4 + 8)) & 0xF; v11 = v6 + 4 * (3 * *(_WORD *)(v6 + 4) + 3); *(_BYTE *)v11 = *(_BYTE *)v11 & 0xF | *(_WORD *)(v7 + *(_DWORD *)v4 + 8) & 0xF0; v12 = v6 + 12 * *(_WORD *)(v6 + 4) + 13; *(_BYTE *)v12 ^= (*(_BYTE *)v12 ^ *(_BYTE *)(v7 + *(_DWORD *)v4 + 9)) & 0xF; *(_BYTE *)(v6 + 12 * *(_WORD *)(v6 + 4) + 13) = *(_BYTE *)(v6 + 12 * *(_WORD *)(v6 + 4) + 13) & 0xF | 16 * (unsigned __int16)(*(_WORD *)(v7 + *(_DWORD *)v4 + 8) >> 12); *(_DWORD *)(v6 + 12 * (*(_WORD *)(v6 + 4))++ + 14) = *(_DWORD *)(v7 + *(_DWORD *)v4 + 12); goto LABEL_15; } } --*(_WORD *)a4; LABEL_15: v7 += 20; ++v17; } while ( v17 < *((_DWORD *)v4 + 4) ); } --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_FillSaveBuffer"); return v17; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00445010) -------------------------------------------------------- int __thiscall sub_445010(int this, __int16 a2) { int v2; // edx@1 int v3; // esi@1 int result; // eax@1 int v5; // edx@2 int v6; // ecx@3 v2 = *(_DWORD *)(this + 24); v3 = *(_DWORD *)(this + 20); result = 0; if ( v3 != v2 ) { v5 = (v2 - v3) >> 2; if ( v5 ) { v6 = *(_DWORD *)(this + 20); while ( *(_WORD *)v6 != a2 ) { ++result; v6 += 4; if ( result >= (unsigned int)v5 ) goto LABEL_6; } result = v3 + 4 * result; } else { LABEL_6: result = 0; } } return result; } //----- (00445050) -------------------------------------------------------- char __thiscall sub_445050(int this, __int16 a2) { int v2; // edx@1 int v3; // esi@1 int v4; // edx@2 unsigned int v5; // eax@2 int v6; // ecx@3 char result; // al@6 int v8; // eax@7 v2 = *(_DWORD *)(this + 24); v3 = *(_DWORD *)(this + 20); if ( v3 == v2 || (v4 = (v2 - v3) >> 2, v5 = 0, !v4) ) goto LABEL_12; v6 = *(_DWORD *)(this + 20); while ( *(_WORD *)v6 != a2 ) { ++v5; v6 += 4; if ( v5 >= v4 ) return 0; } v8 = v3 + 4 * v5; if ( v8 ) result = *(_BYTE *)(v8 + 2); else LABEL_12: result = 0; return result; } //----- (004450A0) -------------------------------------------------------- char __stdcall sub_4450A0(int a1, int a2) { int v2; // edi@1 int v4; // ebx@3 int v5; // edx@6 int v6; // eax@6 unsigned int v7; // ecx@7 int v8; // esi@8 unsigned int v9; // esi@10 int v10; // eax@13 unsigned __int16 v11; // [sp-8h] [bp-14h]@14 unsigned int v12; // [sp+14h] [bp+8h]@7 v2 = a2; if ( !a2 ) return 0; v4 = a1; if ( !a1 ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_Toggle_CanUseSkill : INVALID Skill", a1); return 0; } v5 = *(_DWORD *)(a1 + 24); v6 = *(_DWORD *)(a1 + 28); if ( v5 == v6 ) return 0; v7 = 0; v12 = 0; if ( (v6 - v5) >> 2 ) { do { v8 = *(_DWORD *)(v4 + 24) + 4 * v7; if ( !*(_DWORD *)v8 ) return 0; if ( !*(_DWORD *)(*(_DWORD *)v8 + 32) ) { v9 = (unsigned int)((unsigned int)*(_WORD *)(*(_DWORD *)v8 + 36) * (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1264))(v2) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1256))(v2) <= v9 ) return 0; v7 = v12; } ++v7; v12 = v7; } while ( v7 < (*(_DWORD *)(v4 + 28) - *(_DWORD *)(v4 + 24)) >> 2 ); } v10 = (*(int (__thiscall **)(int, int *))(*(_DWORD *)v2 + 1964))(v2, &a2); v11 = v10 ? *(_WORD *)(v10 + 8) : -1; if ( !sub_444560(v4, v11) ) return 0; return 1; } //----- (004451A0) -------------------------------------------------------- char __thiscall sub_4451A0(void *this, int a2, unsigned __int8 *a3) { void *v3; // esi@1 int v5; // [sp+0h] [bp-1Ch]@0 int v6; // [sp+4h] [bp-18h]@0 int v7; // [sp+8h] [bp-14h]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::cpl_PreSkillCheck"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::cpl_PreSkillCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *a3 == 45 ) { --dword_750CB8; } else { dword_13257798 = sub_639620(&unk_13257C80, a3); if ( !((unsigned __int8)(1 << (unsigned __int16)dword_13257798 % 8) & *(_BYTE *)((unsigned __int16)dword_13257798 / 8 + *(_DWORD *)v3)) ) { (*(void (__stdcall **)(signed int, signed int, int, int, int, _DWORD))(*(_DWORD *)a2 + 2332))( 1804, 9, v5, v6, v7, "CharacterPassiveList::cpl_PreSkillCheck"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CharacterPassiveList::cpl_PreSkillCheck"); return 0; } --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"CharacterPassiveList::cpl_PreSkillCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257798: using guessed type int dword_13257798; //----- (004452D0) -------------------------------------------------------- int __thiscall sub_4452D0(void *this, int a2, int a3) { int v3; // edi@1 int v4; // ebx@1 signed int v5; // esi@3 int v6; // esi@7 int v7; // edx@11 int v8; // ecx@13 int v9; // ecx@15 unsigned int v10; // eax@15 int v11; // edx@16 int v12; // ecx@19 int v13; // eax@23 int v14; // eax@25 int v15; // eax@27 int v16; // eax@29 int v17; // eax@31 int v18; // eax@33 int v19; // eax@35 int v20; // eax@37 int v21; // eax@39 int v22; // eax@41 int v23; // eax@44 int v24; // eax@47 __int16 v25; // ax@51 __int16 v26; // ax@53 __int16 v27; // ax@55 int v28; // eax@57 __int16 v29; // ax@63 void *v31; // [sp+14h] [bp-14h]@1 signed int v32; // [sp+18h] [bp-10h]@3 int v33; // [sp+34h] [bp+Ch]@1 v31 = this; sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::cpl_RecalcParam"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::cpl_RecalcParam"; dword_750AB8[dword_750CB8++] = -1; v3 = (**(int (__thiscall ***)(_DWORD, _DWORD))a3)(a3, 10); v4 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))a3)(a3, 12) + 8); v33 = v4; if ( (_WORD)v4 == -1 ) { LOWORD(v4) = *(_WORD *)(v3 + 8); v33 = *(_WORD *)(v3 + 8); } v5 = 0; v32 = 0; while ( 1 ) { if ( (unsigned __int8)(1 << v5 % 8) & *(_BYTE *)(v5 / 8 + *(_DWORD *)v31) ) { if ( (unsigned __int16)v5 >= dword_132581D4 ) v6 = dword_13258088; else v6 = *(_DWORD *)(dword_132581CC + 4 * (unsigned __int16)v5); if ( *(_DWORD *)(v6 + 66) ) { if ( (unsigned __int16)v4 < (unsigned int)dword_14D20894 ) { v7 = dword_14D21184 + 40 * (unsigned __int16)v4; if ( v7 ) { if ( *(_DWORD *)v7 ) { v8 = **(_WORD **)v7; if ( (_WORD)v8 == (_WORD)v33 ) { v9 = *(_DWORD *)v7; v10 = *(_DWORD *)(*(_DWORD *)v7 + 232); if ( v10 >= 0x16 ) v11 = dword_8BB358; else v11 = dword_8BB2A8[v10 + 44 * (*(_BYTE *)(v9 + 122) & 1)]; if ( v10 >= 0x16 ) v12 = dword_8BB300; else v12 = dword_8BB250[v10 + 44 * (*(_BYTE *)(v9 + 122) & 1)]; if ( v10 == 3 || v10 == 11 ) { v15 = *(_DWORD *)(v11 + v6); if ( v15 ) *(_DWORD *)(a2 + 1936) = v15; v16 = *(_DWORD *)(v12 + v6); if ( v16 ) *(_DWORD *)(a2 + 2140) = v16 + 1000; } else { v13 = *(_DWORD *)(v11 + v6); if ( v13 ) *(_DWORD *)(a2 + 1932) = v13; v14 = *(_DWORD *)(v12 + v6); if ( v14 ) *(_DWORD *)(a2 + 2136) = v14 + 1000; } } else { sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v8 + 10000 * (unsigned __int16)v4); } } } } } v17 = *(_DWORD *)(v6 + 198); if ( v17 ) *(_DWORD *)(a2 + 1920) = v17; v18 = *(_DWORD *)(v6 + 202); if ( v18 ) *(_DWORD *)(a2 + 1872) = v18; v19 = *(_DWORD *)(v6 + 214); if ( v19 ) *(_DWORD *)(a2 + 1848) = v19; v20 = *(_DWORD *)(v6 + 218); if ( v20 != 1000 ) *(_DWORD *)(a2 + 2128) = v20; v21 = *(_WORD *)(v6 + 222); if ( (_WORD)v21 ) *(_DWORD *)(a2 + 2172) = v21; v22 = *(_DWORD *)(v6 + 206); if ( v22 ) *(_DWORD *)(a2 + 1984) = v22; if ( *(_WORD *)(v6 + 232) ) { v23 = *(_WORD *)(v6 + 234); if ( (_WORD)v23 ) { sub_4C8410(a2 + 3296, *(_WORD *)v6, v23, *(_WORD *)(v6 + 232)); sub_4C8410(a2 + 3324, *(_WORD *)v6, *(_WORD *)(v6 + 234), *(_WORD *)(v6 + 232)); sub_4C8410(a2 + 3352, *(_WORD *)v6, *(_WORD *)(v6 + 234), *(_WORD *)(v6 + 232)); sub_4C8410(a2 + 3380, *(_WORD *)v6, *(_WORD *)(v6 + 234), *(_WORD *)(v6 + 232)); } } if ( *(_WORD *)(v6 + 236) ) { v24 = *(_WORD *)(v6 + 238); if ( (_WORD)v24 ) { sub_4C8410(a2 + 3408, *(_WORD *)v6, v24, *(_WORD *)(v6 + 236)); sub_4C8410(a2 + 3436, *(_WORD *)v6, *(_WORD *)(v6 + 238), *(_WORD *)(v6 + 236)); } } if ( *(_WORD *)(v6 + 240) ) sub_4C8410(a2 + 3464, *(_WORD *)v6, 1000, *(_WORD *)(v6 + 240)); v25 = *(_WORD *)(v6 + 242); if ( v25 ) *(_WORD *)(a2 + 3290) = v25; v26 = *(_WORD *)(v6 + 244); if ( v26 ) *(_WORD *)(a2 + 3288) = v26; v27 = *(_WORD *)(v6 + 246); if ( v27 ) *(_WORD *)(a2 + 3292) = v27; v28 = *(_DWORD *)(v6 + 210); if ( v28 ) *(_DWORD *)(a2 + 2032) = v28; if ( *(_DWORD *)(v6 + 224) ) { *(_DWORD *)(a2 + 2060) = *(_DWORD *)(v6 + 224) + 1000; *(_DWORD *)(a2 + 2064) = *(_DWORD *)(v6 + 224) + 1000; } if ( *(_DWORD *)(v6 + 228) ) { *(_DWORD *)(a2 + 2080) = *(_DWORD *)(v6 + 228) + 1000; *(_DWORD *)(a2 + 2084) = *(_DWORD *)(v6 + 228) + 1000; } v29 = *(_WORD *)(v6 + 252); v5 = v32; if ( v29 ) *(_WORD *)(a2 + 3500) = v29; } ++v5; v32 = v5; if ( v5 >= 1000 ) break; LOWORD(v4) = v33; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharacterPassiveList::cpl_RecalcParam"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8BB250: using guessed type int dword_8BB250[]; // 8BB2A8: using guessed type int dword_8BB2A8[]; // 8BB300: using guessed type int dword_8BB300; // 8BB358: using guessed type int dword_8BB358; // 13258088: using guessed type int dword_13258088; // 132581CC: using guessed type int dword_132581CC; // 132581D4: using guessed type int dword_132581D4; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00445710) -------------------------------------------------------- int __stdcall sub_445710(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_CCCCCCC || (result = operator new(20 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00445770) -------------------------------------------------------- int __cdecl sub_445770(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)) { int v5; // ecx@1 int v6; // ebx@1 int v7; // esi@1 int v8; // edi@2 int v9; // eax@4 int v10; // ecx@4 int v11; // eax@8 int v12; // edi@8 int i; // edi@9 int v14; // esi@10 int v15; // eax@11 int result; // eax@12 v5 = a3; v6 = a2; v7 = 2 * a2 + 2; if ( v7 >= a3 ) { v8 = a1; } else { do { v8 = a1; if ( (unsigned __int8)a5(a1 + 20 * v7, a1 + 20 * v7 - 20) ) --v7; v9 = a1 + 20 * v7; *(_DWORD *)(a1 + 20 * v6) = *(_DWORD *)v9; v10 = a1 + 20 * v6; *(_DWORD *)(v10 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v10 + 12) = *(_DWORD *)(v9 + 12); v6 = v7; v7 = 2 * v7 + 2; *(_DWORD *)(v10 + 16) = *(_DWORD *)(v9 + 16); } while ( v7 < a3 ); v5 = a3; } if ( v7 == v5 ) { v11 = v8 + 20 * v5 - 20; v12 = v8 + 20 * v6; *(_DWORD *)v12 = *(_DWORD *)v11; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v12 + 8) = *(_DWORD *)(v11 + 8); *(_DWORD *)(v12 + 12) = *(_DWORD *)(v11 + 12); *(_DWORD *)(v12 + 16) = *(_DWORD *)(v11 + 16); v6 = v5 - 1; } for ( i = (v6 - 1) / 2; a2 < v6; i = (i - 1) / 2 ) { v14 = a1 + 20 * i; if ( !(unsigned __int8)a5(a1 + 20 * i, a4) ) break; v15 = a1 + 20 * v6; *(_DWORD *)v15 = *(_DWORD *)v14; *(_DWORD *)(v15 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v15 + 8) = *(_DWORD *)(v14 + 8); *(_DWORD *)(v15 + 12) = *(_DWORD *)(v14 + 12); *(_DWORD *)(v15 + 16) = *(_DWORD *)(v14 + 16); v6 = i; } result = a1 + 20 * v6; *(_DWORD *)result = *(_DWORD *)a4; *(_DWORD *)(result + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a4 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a4 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a4 + 16); return result; } //----- (004458A0) -------------------------------------------------------- int __cdecl sub_4458A0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 20 ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 16); v3 += 20; } return result; } //----- (004458E0) -------------------------------------------------------- int __cdecl sub_4458E0(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // ebx@1 signed int v5; // edx@1 signed int v6; // edi@1 int v7; // ebx@4 int result; // eax@8 v4 = a1; v5 = (signed int)((unsigned __int64)(1717986919i64 * (a2 - a1)) >> 32) >> 3; v6 = v5 + ((unsigned int)v5 >> 31); if ( v6 <= 0 ) { result = a1; } else { while ( 1 ) { v7 = v4 + 20 * v6 / 2; if ( (unsigned __int8)a4(v7, a3) ) { a1 = v7 + 20; v6 += -1 - v6 / 2; } else { v6 /= 2; } if ( v6 <= 0 ) break; v4 = a1; } result = a1; } return result; } //----- (00445950) -------------------------------------------------------- int __cdecl sub_445950(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)) { int v3; // ecx@1 int result; // eax@1 int v5; // esi@2 int v6; // edx@2 int v7; // edi@4 int v8; // edx@4 int v9; // edi@4 int v10; // eax@4 int v11; // esi@4 int v12; // edx@4 int v13; // edi@4 bool v14; // zf@4 int v15; // eax@7 int v16; // ecx@7 int v17; // edx@10 int v18; // esi@10 int v19; // [sp+4h] [bp-2Ch]@4 int v20; // [sp+8h] [bp-28h]@4 int v21; // [sp+10h] [bp-20h]@1 int v22; // [sp+14h] [bp-1Ch]@4 int v23; // [sp+18h] [bp-18h]@4 int v24; // [sp+1Ch] [bp-14h]@4 int v25; // [sp+20h] [bp-10h]@4 int v26; // [sp+24h] [bp-Ch]@4 int v27; // [sp+28h] [bp-8h]@4 unsigned int v28; // [sp+2Ch] [bp-4h]@1 int v29; // [sp+30h] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v3 = (a2 - a1) / 20; result = (a2 - a1) / 20 / 2; v21 = (a2 - a1) / 20; if ( result > 0 ) { v5 = 2 * result + 2; v6 = a1 + 20 * result; while ( 1 ) { v7 = *(_DWORD *)(v6 - 20); v8 = v6 - 20; v23 = v7; v24 = *(_DWORD *)(v8 + 4); v25 = *(_DWORD *)(v8 + 8); v9 = *(_DWORD *)(v8 + 12); v10 = result - 1; v11 = v5 - 2; v19 = v8; v12 = *(_DWORD *)(v8 + 16); v26 = v9; v22 = v10; v20 = v11; v27 = v12; v13 = v10; v14 = v11 == v3; if ( v11 < v3 ) { do { if ( (unsigned __int8)a3(a1 + 20 * v11, a1 + 20 * v11 - 20) ) --v11; v15 = a1 + 20 * v11; *(_DWORD *)(a1 + 20 * v13) = *(_DWORD *)v15; v16 = a1 + 20 * v13; *(_DWORD *)(v16 + 4) = *(_DWORD *)(v15 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(v15 + 8); *(_DWORD *)(v16 + 12) = *(_DWORD *)(v15 + 12); v13 = v11; v11 = 2 * v11 + 2; *(_DWORD *)(v16 + 16) = *(_DWORD *)(v15 + 16); } while ( v11 < v21 ); v3 = (a2 - a1) / 20; v10 = v22; v14 = v11 == v21; } if ( v14 ) { v17 = a1 + 20 * v3 - 20; *(_DWORD *)(a1 + 20 * v13) = *(_DWORD *)(a1 + 20 * v3 - 20); v18 = a1 + 20 * v13; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v18 + 8) = *(_DWORD *)(v17 + 8); *(_DWORD *)(v18 + 12) = *(_DWORD *)(v17 + 12); *(_DWORD *)(v18 + 16) = *(_DWORD *)(v17 + 16); v13 = v3 - 1; } result = sub_444960(a1, v13, v10, (int)&v23, a3); if ( v22 <= 0 ) break; result = v22; v3 = (a2 - a1) / 20; v6 = v19; v5 = v20; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00445AA0) -------------------------------------------------------- int __cdecl sub_445AA0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)) { int v3; // esi@1 int result; // eax@1 int v5; // ebx@2 int v6; // edx@4 int v7; // eax@4 int v8; // edx@4 int v9; // eax@4 int v10; // edi@4 int i; // eax@5 int v12; // edx@6 int v13; // ecx@7 int v14; // edx@7 int v15; // ecx@7 int j; // esi@8 int v17; // edx@10 int v18; // ecx@10 int v19; // edx@10 int v20; // [sp+Ch] [bp-1Ch]@3 int v21; // [sp+10h] [bp-18h]@4 int v22; // [sp+14h] [bp-14h]@4 int v23; // [sp+18h] [bp-10h]@4 int v24; // [sp+1Ch] [bp-Ch]@4 int v25; // [sp+20h] [bp-8h]@4 unsigned int v26; // [sp+24h] [bp-4h]@1 int v27; // [sp+28h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v3 = a1; result = a2; if ( a1 != a2 ) { v5 = a1 + 20; if ( a1 + 20 != a2 ) { v20 = a1; do { v6 = *(_DWORD *)v5; v7 = *(_DWORD *)(v5 + 4); v23 = *(_DWORD *)(v5 + 8); v21 = v6; v8 = *(_DWORD *)(v5 + 12); v22 = v7; v9 = *(_DWORD *)(v5 + 16); v10 = v5; v24 = v8; v25 = v9; if ( (unsigned __int8)a3(&v21, v3) ) { for ( i = v5; i != v3; *(_DWORD *)(i + 36) = *(_DWORD *)(i + 16) ) { v12 = *(_DWORD *)(i - 20); i -= 20; *(_DWORD *)(i + 20) = v12; *(_DWORD *)(i + 24) = *(_DWORD *)(i + 4); *(_DWORD *)(i + 28) = *(_DWORD *)(i + 8); *(_DWORD *)(i + 32) = *(_DWORD *)(i + 12); } v13 = v22; v14 = v23; *(_DWORD *)v3 = v21; result = v24; *(_DWORD *)(v3 + 4) = v13; v15 = v25; *(_DWORD *)(v3 + 8) = v14; *(_DWORD *)(v3 + 12) = result; *(_DWORD *)(v3 + 16) = v15; } else { for ( j = v20; (unsigned __int8)a3(&v21, j); j -= 20 ) { *(_DWORD *)v10 = *(_DWORD *)j; *(_DWORD *)(v10 + 4) = *(_DWORD *)(j + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(j + 8); *(_DWORD *)(v10 + 12) = *(_DWORD *)(j + 12); *(_DWORD *)(v10 + 16) = *(_DWORD *)(j + 16); v10 = j; } v17 = v22; result = v23; v3 = a1; *(_DWORD *)v10 = v21; v18 = v24; *(_DWORD *)(v10 + 4) = v17; v19 = v25; *(_DWORD *)(v10 + 8) = result; *(_DWORD *)(v10 + 12) = v18; *(_DWORD *)(v10 + 16) = v19; } v20 += 20; v5 += 20; } while ( v5 != a2 ); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00445BF0) -------------------------------------------------------- int __cdecl sub_445BF0(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // eax@2 int v5; // ecx@2 int v6; // edx@2 int v7; // ST20_4@2 int v8; // ST24_4@2 int v9; // eax@4 int v10; // ecx@4 int v11; // ST1C_4@4 int v12; // ST20_4@4 int v13; // ST24_4@4 int result; // eax@5 int v15; // eax@6 int v16; // ecx@6 int v17; // edx@6 int v18; // ST20_4@6 int v19; // ST24_4@6 if ( (unsigned __int8)a4(a2, a1) ) { v4 = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 12); v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)a2 = *(_DWORD *)a1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(a1 + 16); *(_DWORD *)a1 = v4; *(_DWORD *)(a1 + 4) = v5; *(_DWORD *)(a1 + 8) = v6; *(_DWORD *)(a1 + 12) = v7; *(_DWORD *)(a1 + 16) = v8; } if ( (unsigned __int8)a4(a3, a2) ) { v9 = *(_DWORD *)a3; v10 = *(_DWORD *)(a3 + 4); v11 = *(_DWORD *)(a3 + 8); v12 = *(_DWORD *)(a3 + 12); v13 = *(_DWORD *)(a3 + 16); *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a3 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(a3 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(a3 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)a2 = v9; *(_DWORD *)(a2 + 4) = v10; *(_DWORD *)(a2 + 8) = v11; *(_DWORD *)(a2 + 12) = v12; *(_DWORD *)(a2 + 16) = v13; } result = a4(a2, a1); if ( (_BYTE)result ) { v15 = *(_DWORD *)a2; v16 = *(_DWORD *)(a2 + 4); v17 = *(_DWORD *)(a2 + 8); v18 = *(_DWORD *)(a2 + 12); v19 = *(_DWORD *)(a2 + 16); *(_DWORD *)a2 = *(_DWORD *)a1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(a1 + 16); *(_DWORD *)a1 = v15; result = v18; *(_DWORD *)(a1 + 4) = v16; *(_DWORD *)(a1 + 8) = v17; *(_DWORD *)(a1 + 12) = v18; *(_DWORD *)(a1 + 16) = v19; } return result; } //----- (00445D00) -------------------------------------------------------- char __thiscall sub_445D00(int this, unsigned __int16 a2, unsigned int a3) { int v3; // edx@1 int v4; // eax@1 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)this; if ( !((*(_DWORD *)(this + 4) - *(_DWORD *)this) & 0xFFFFFFF8) || v4 == v3 ) { LABEL_5: sub_639100(&unk_86DDD8, (int)"MoverSkillList::msl_UpdateCoolTime : Did not learn skills", a2); return 0; } while ( *(_WORD *)v4 != a2 ) { v4 += 8; if ( v4 == v3 ) goto LABEL_5; } if ( *(_DWORD *)(v4 + 4) <= a3 ) return 0; *(_DWORD *)(v4 + 4) = a3; return 1; } //----- (00445D60) -------------------------------------------------------- bool __thiscall sub_445D60(int this, unsigned __int16 a2) { int v2; // edx@1 int v3; // eax@1 bool result; // al@5 v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)this; if ( (*(_DWORD *)(this + 4) - *(_DWORD *)this) & 0xFFFFFFF8 && v3 != v2 ) { while ( *(_WORD *)v3 != a2 ) { v3 += 8; if ( v3 == v2 ) goto LABEL_5; } result = (unsigned int)dword_14D129E8 >= *(_DWORD *)(v3 + 4); } else { LABEL_5: sub_639100(&unk_86DDD8, (int)"MoverSkillList::msl_CoolTimeCheck : Did not learn skills", a2); result = 0; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00445E20) -------------------------------------------------------- int __usercall sub_445E20(int result, int a2, int a3) { int v3; // edx@1 v3 = a3; if ( a3 ) { result = a2; do { if ( result ) { *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 16) = 0; } result += 20; --v3; } while ( v3 ); } return result; } //----- (00445E50) -------------------------------------------------------- int __cdecl sub_445E50(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 20 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 16); } v3 += 20; } return result; } //----- (00445E90) -------------------------------------------------------- int __cdecl sub_445E90(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // eax@1 int v5; // eax@2 int v6; // ebx@2 int v7; // edx@2 int v8; // esi@2 int v9; // ST30_4@2 int result; // eax@2 int v11; // [sp+Ch] [bp+8h]@2 v4 = (a3 - a1) / 20; if ( v4 <= 40 ) { result = sub_445BF0(a1, a2, a3, a4); } else { v5 = (v4 + 1) / 8; v6 = 40 * v5; v7 = 40 * v5 + a1; v8 = 20 * v5; v9 = a1; v11 = 20 * v5 + a1; sub_445BF0(v9, v11, v7, a4); sub_445BF0(a2 - v8, a2, v8 + a2, a4); sub_445BF0(a3 - v6, a3 - v8, a3, a4); result = sub_445BF0(v11, a2, a3 - v8, a4); } return result; } //----- (00445F40) -------------------------------------------------------- int __thiscall sub_445F40(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // edi@1 int result; // eax@2 unsigned __int16 v6; // [sp+Ch] [bp-18h]@2 unsigned int v7; // [sp+20h] [bp-4h]@1 int v8; // [sp+24h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)this; v4 = *(_DWORD *)(this + 4); if ( !((*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20) || (v6 = a2, result = sub_4458E0(v3, v4, (int)&v6, (int (__cdecl *)(_DWORD, _DWORD))sub_444540), result == *(_DWORD *)(v2 + 4)) || v6 < *(_WORD *)result ) result = 0; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00445FC0) -------------------------------------------------------- bool __thiscall sub_445FC0(void *this, unsigned __int16 a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // ebx@1 signed int v5; // ecx@1 int v6; // eax@2 bool v7; // bl@5 unsigned __int16 v9; // [sp+14h] [bp-24h]@2 unsigned int v10; // [sp+28h] [bp-10h]@1 int v11; // [sp+34h] [bp-4h]@1 int v12; // [sp+38h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_IsLearn"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_IsLearn"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1); v4 = *(_DWORD *)v2; v5 = *((_DWORD *)v2 + 1) - *(_DWORD *)v2; v11 = 0; if ( !(v5 / 20) || (v9 = a2, v6 = sub_4458E0(v4, v3, (int)&v9, (int (__cdecl *)(_DWORD, _DWORD))sub_444540), v6 == *((_DWORD *)v2 + 1)) || v9 < *(_WORD *)v6 ) v6 = 0; v7 = v6 != 0; --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_IsLearn"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004460C0) -------------------------------------------------------- int __thiscall sub_4460C0(void *this, int a2, unsigned __int16 a3, int a4) { void *v4; // esi@1 int v5; // edi@1 int v6; // ebx@1 signed int v7; // ecx@1 int v8; // eax@2 void *v9; // ecx@7 int v10; // eax@9 unsigned __int16 v12; // [sp+14h] [bp-24h]@2 unsigned int v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@1 int v15; // [sp+38h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_AddMastery"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_AddMastery"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v4 + 1); v6 = *(_DWORD *)v4; v7 = *((_DWORD *)v4 + 1) - *(_DWORD *)v4; v14 = 0; if ( !(v7 / 20) || (v12 = a3, v8 = sub_4458E0(v6, v5, (int)&v12, (int (__cdecl *)(_DWORD, _DWORD))sub_444540), v8 == *((_DWORD *)v4 + 1)) || v12 < *(_WORD *)v8 ) v8 = 0; if ( v8 ) { *(_DWORD *)(v8 + 12) += a4; *(_DWORD *)(v8 + 16) = 1; v9 = off_849C18; *(_WORD *)off_849C18 = 18461; *((_WORD *)v9 + 1) = a3; *((_DWORD *)v9 + 1) = *(_DWORD *)(v8 + 12); if ( sub_4C81E0(&off_849C18, 8) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_AddMastery : Packet Too Long", 8); } --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_AddMastery : Not learn", a3); --dword_750CB8; } v14 = -1; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_AddMastery"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00446250) -------------------------------------------------------- char __thiscall sub_446250(void *this, unsigned __int16 a2, unsigned int a3) { void *v3; // esi@1 int v4; // edi@1 int v5; // ebx@1 signed int v6; // ecx@1 int v7; // eax@2 unsigned __int16 v9; // [sp+14h] [bp-24h]@2 unsigned int v10; // [sp+28h] [bp-10h]@1 int v11; // [sp+34h] [bp-4h]@1 int v12; // [sp+38h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_UpdateCoolTime"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_UpdateCoolTime"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); v5 = *(_DWORD *)v3; v6 = *((_DWORD *)v3 + 1) - *(_DWORD *)v3; v11 = 0; if ( !(v6 / 20) || (v9 = a2, v7 = sub_4458E0(v5, v4, (int)&v9, (int (__cdecl *)(_DWORD, _DWORD))sub_444540), v7 == *((_DWORD *)v3 + 1)) || v9 < *(_WORD *)v7 ) v7 = 0; if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_UpdateCoolTime : Not learn", a2); LABEL_7: --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_UpdateCoolTime"); return 0; } if ( *(_DWORD *)(v7 + 4) <= a3 ) goto LABEL_7; *(_DWORD *)(v7 + 4) = a3; --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_UpdateCoolTime"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004463A0) -------------------------------------------------------- int __thiscall sub_4463A0(void *this, signed int a2, int a3, int a4, char a5, int a6) { void *v6; // esi@1 int v7; // ecx@1 int v8; // eax@6 int v9; // edx@6 int v10; // eax@9 int v11; // edi@10 int v12; // esi@14 int v13; // eax@15 int v14; // eax@20 int v15; // esi@20 int v17; // [sp-8h] [bp-34h]@28 int v18; // [sp-4h] [bp-30h]@2 int v19; // [sp-4h] [bp-30h]@28 void *v20; // [sp+14h] [bp-18h]@1 int v21; // [sp+18h] [bp-14h]@6 char v22; // [sp+1Ch] [bp-10h]@14 int v23; // [sp+28h] [bp-4h]@1 v6 = this; v20 = this; sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::cpl_SetAbstate"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::cpl_SetAbstate"; dword_750AB8[dword_750CB8++] = -1; v7 = a3; v23 = 0; if ( a3 && a4 && *((_DWORD *)v6 + 4) && a2 < 4 ) { v8 = *((_DWORD *)v6 + 3); v9 = *(_DWORD *)v8; v21 = *(_DWORD *)v8; if ( *(_DWORD *)v8 != v8 ) { while ( 1 ) { v10 = *(_DWORD *)(v9 + 8); if ( !v10 ) goto LABEL_31; v11 = *(_DWORD *)(v10 + 4); if ( !v11 ) { sub_639100( &unk_86DDD8, (int)"CharacterPassiveList::cpl_SetAbstate : INVALID PSkillSetAbstate Data", *(_WORD *)v10); goto LABEL_31; } if ( *(_DWORD *)(v11 + 32) == a2 ) break; LABEL_24: v21 = *(_DWORD *)v9; if ( *(_DWORD *)v9 == *((_DWORD *)v6 + 3) ) goto LABEL_31; v9 = *(_DWORD *)v9; } switch ( a2 ) { case 0: if ( a5 ) { v12 = (*(int (__stdcall **)(char *))(*(_DWORD *)v7 + 1964))(&v22); if ( v12 ) { v13 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v12 + 8)); if ( v13 ) { if ( *(_DWORD *)(*(_DWORD *)v13 + 232) == 10 ) goto LABEL_19; } else { sub_639100( &unk_86DDD8, (int)"CharacterPassiveList::cpl_SetAbstate : INVALID Item Data", *(_WORD *)(v12 + 8)); } } } break; case 3: if ( a5 ) goto LABEL_19; break; case 1: case 2: LABEL_19: if ( *(_WORD *)(v11 + 36) <= (unsigned __int16)sub_4011A0(&unk_14D42DC0) ) break; v14 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(v11 + 38)); v15 = v14; if ( v14 ) { if ( *(_DWORD *)v14 ) { if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)a4 + 1588))(v14) != 1 ) { (*(void (__stdcall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 1604))( a3, *(_DWORD *)(*(_DWORD *)v15 + 34), *(_BYTE *)(v11 + 70), 1); v7 = a3; v9 = v21; v6 = v20; goto LABEL_24; } break; } v19 = v11 + 38; v17 = (int)"CharacterPassiveList::cpl_SetAbstate : INVALID Abstate Index Data"; } else { v19 = v11 + 38; v17 = (int)"CharacterPassiveList::cpl_SetAbstate : INVALID Abstate Data"; } sub_6390B0(&unk_86DDD8, v17, v19); break; default: break; } } LABEL_31: --dword_750CB8; v18 = (int)"CharacterPassiveList::cpl_SetAbstate"; goto LABEL_32; } --dword_750CB8; v18 = (int)"CharacterPassiveList::cpl_SetAbstate"; LABEL_32: v23 = -1; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004465E0) -------------------------------------------------------- int __cdecl sub_4465E0(int a1, int a2, unsigned int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // esi@1 unsigned int v5; // ebx@1 unsigned int v6; // eax@9 unsigned int v7; // edi@9 int v8; // ecx@13 int v9; // ST5C_4@13 int v10; // ST60_4@13 int v11; // ST64_4@13 int v12; // ST68_4@13 bool v13; // zf@16 int v14; // eax@20 int v15; // edx@20 int v16; // ecx@20 int v17; // ST84_4@20 int v18; // ST90_4@20 int v19; // ST8C_4@20 int v20; // eax@20 int v21; // ecx@27 int v22; // ST34_4@27 int v23; // ST38_4@27 int v24; // ST3C_4@27 int v25; // ST40_4@27 int v26; // ST94_4@28 int v27; // ST98_4@28 int v28; // ST9C_4@28 int v29; // STA0_4@28 int v30; // STA4_4@28 unsigned int v31; // ecx@28 int v32; // ecx@31 int v33; // ST70_4@31 int v34; // ST74_4@31 int v35; // ST78_4@31 int v36; // ST7C_4@31 int v37; // ecx@32 int v38; // ST48_4@32 int v39; // ST4C_4@32 int v40; // ST50_4@32 int v41; // ST54_4@32 int v42; // ecx@33 int v43; // ST20_4@33 int v44; // ST24_4@33 int v45; // ST28_4@33 int v46; // ST2C_4@33 int result; // eax@34 int v48; // [sp+98h] [bp-8h]@2 unsigned int v49; // [sp+98h] [bp-8h]@9 int v50; // [sp+9Ch] [bp-4h]@17 v4 = a2 + 20 * (signed int)(a3 - a2) / 20 / 2; sub_445E90(a2, a2 + 20 * (signed int)(a3 - a2) / 20 / 2, a3 - 20, a4); v5 = v4 + 20; if ( a2 < (unsigned int)v4 ) { do { v48 = v4 - 20; if ( (unsigned __int8)a4(v4 - 20, v4) ) break; if ( (unsigned __int8)a4(v4, v48) ) break; v4 -= 20; } while ( a2 < (unsigned int)v48 ); } for ( ; v5 < a3; v5 += 20 ) { if ( (unsigned __int8)a4(v5, v4) ) break; if ( (unsigned __int8)a4(v4, v5) ) break; } v6 = v4; v7 = v5; v49 = v4; while ( 1 ) { while ( 1 ) { if ( v7 < a3 ) { do { if ( !(unsigned __int8)a4(v4, v7) ) { if ( (unsigned __int8)a4(v7, v4) ) break; v8 = *(_DWORD *)v5; v9 = *(_DWORD *)(v5 + 4); v10 = *(_DWORD *)(v5 + 8); v11 = *(_DWORD *)(v5 + 12); v12 = *(_DWORD *)(v5 + 16); *(_DWORD *)v5 = *(_DWORD *)v7; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v5 + 12) = *(_DWORD *)(v7 + 12); *(_DWORD *)(v5 + 16) = *(_DWORD *)(v7 + 16); *(_DWORD *)v7 = v8; *(_DWORD *)(v7 + 4) = v9; *(_DWORD *)(v7 + 8) = v10; *(_DWORD *)(v7 + 12) = v11; v5 += 20; *(_DWORD *)(v7 + 16) = v12; } v7 += 20; } while ( v7 < a3 ); v6 = v49; } v13 = v6 == a2; if ( v6 > a2 ) { v50 = v6 - 20; do { if ( (unsigned __int8)a4(v50, v4) ) { v20 = v50; } else { if ( (unsigned __int8)a4(v4, v50) ) break; v14 = *(_DWORD *)(v4 - 16); v15 = *(_DWORD *)(v4 - 12); v16 = *(_DWORD *)(v4 - 20); v4 -= 20; v17 = v14; v18 = *(_DWORD *)(v4 + 16); v19 = *(_DWORD *)(v4 + 12); v20 = v50; *(_DWORD *)v4 = *(_DWORD *)v50; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v50 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v50 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v50 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v50 + 16); *(_DWORD *)v50 = v16; *(_DWORD *)(v50 + 4) = v17; *(_DWORD *)(v50 + 8) = v15; *(_DWORD *)(v50 + 12) = v19; *(_DWORD *)(v50 + 16) = v18; } v49 -= 20; v50 = v20 - 20; } while ( a2 < v49 ); v6 = v49; v13 = v49 == a2; } if ( v13 ) break; v6 -= 20; v49 = v6; if ( v7 == a3 ) { 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); v5 -= 20; v41 = *(_DWORD *)(v4 + 16); *(_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; *(_DWORD *)(v6 + 16) = v46; v7 += 20; } } if ( v7 == a3 ) break; if ( v5 != v7 ) { v21 = *(_DWORD *)v4; v22 = *(_DWORD *)(v4 + 4); v23 = *(_DWORD *)(v4 + 8); v24 = *(_DWORD *)(v4 + 12); v25 = *(_DWORD *)(v4 + 16); *(_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) = v24; *(_DWORD *)(v5 + 16) = v25; } v26 = *(_DWORD *)v4; v27 = *(_DWORD *)(v4 + 4); v28 = *(_DWORD *)(v4 + 8); v29 = *(_DWORD *)(v4 + 12); v30 = *(_DWORD *)(v4 + 16); *(_DWORD *)v4 = *(_DWORD *)v7; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v7 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v7 + 16); v31 = v7; *(_DWORD *)v7 = v26; *(_DWORD *)(v7 + 4) = v27; *(_DWORD *)(v7 + 8) = v28; *(_DWORD *)(v7 + 12) = v29; v5 += 20; v4 += 20; v7 += 20; *(_DWORD *)(v31 + 16) = v30; } result = a1; *(_DWORD *)a1 = v4; *(_DWORD *)(a1 + 4) = v5; return result; } //----- (004469D0) -------------------------------------------------------- int __cdecl sub_4469D0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)) { signed int v3; // ecx@1 int result; // eax@1 int v5; // esi@2 int v6; // edx@3 int v7; // eax@3 int v8; // edx@3 int v9; // eax@3 int v10; // edx@3 int v11; // [sp+Ch] [bp-18h]@3 int v12; // [sp+10h] [bp-14h]@3 int v13; // [sp+14h] [bp-10h]@3 int v14; // [sp+18h] [bp-Ch]@3 int v15; // [sp+1Ch] [bp-8h]@3 unsigned int v16; // [sp+20h] [bp-4h]@1 int v17; // [sp+24h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = a2 - a1; result = (a2 - a1) / 20; if ( result > 1 ) { v5 = a2 - 20; do { v6 = *(_DWORD *)v5; v12 = *(_DWORD *)(v5 + 4); v7 = *(_DWORD *)(v5 + 12); v11 = v6; v8 = *(_DWORD *)(v5 + 8); v14 = v7; v9 = *(_DWORD *)a1; v13 = v8; v10 = *(_DWORD *)(v5 + 16); *(_DWORD *)v5 = v9; v15 = v10; *(_DWORD *)(v5 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(a1 + 8); *(_DWORD *)(v5 + 12) = *(_DWORD *)(a1 + 12); *(_DWORD *)(v5 + 16) = *(_DWORD *)(a1 + 16); sub_445770(a1, 0, (v3 - 20) / 20, (int)&v11, a3); v5 -= 20; v3 = v5 - a1 + 20; result = v3 / 20; } while ( v3 / 20 > 1 ); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00446AA0) -------------------------------------------------------- char __thiscall sub_446AA0(void *this, int a2, unsigned __int8 *a3) { void *v3; // esi@1 signed int v5; // eax@4 bool v6; // al@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_PreSkillCheck"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_PreSkillCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *a3 == 45 ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_PreSkillCheck"); return 1; } v5 = sub_639620(&unk_13257C80, a3); dword_13257798 = v5; v6 = sub_445FC0(v3, v5); --dword_750CB8; if ( v6 ) goto LABEL_3; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_PreSkillCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257798: using guessed type int dword_13257798; //----- (00446C50) -------------------------------------------------------- void __thiscall sub_446C50(int this) { int v1; // esi@1 void **v2; // ecx@1 void *v3; // eax@1 void *v4; // edi@2 void **v5; // ecx@3 void *v6; // eax@3 void *v7; // edi@4 v1 = this; v2 = *(void ***)(this + 12); v3 = *v2; *v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 12) + 4) = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 16) = 0; if ( v3 != *(void **)(v1 + 12) ) { do { v4 = *(void **)v3; operator delete(v3); v3 = v4; } while ( v4 != *(void **)(v1 + 12) ); } v5 = *(void ***)(v1 + 12); v6 = *v5; *v5 = v5; *(_DWORD *)(*(_DWORD *)(v1 + 12) + 4) = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 16) = 0; if ( v6 != *(void **)(v1 + 12) ) { do { v7 = *(void **)v6; operator delete(v6); v6 = v7; } while ( v7 != *(void **)(v1 + 12) ); } operator delete(*(void **)(v1 + 12)); operator delete(*(void **)v1); } //----- (00446CD0) -------------------------------------------------------- int __thiscall sub_446CD0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 void **v4; // edi@4 void *i; // ecx@4 int v6; // edx@5 int v7; // edi@11 int v8; // eax@11 int v9; // ecx@11 int v11; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::cpl_StoreSetAbstateList"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::cpl_StoreSetAbstateList"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_582B50((int)&dword_13258088, a2); a2 = v3; if ( v3 ) { if ( *(_DWORD *)(v3 + 8) ) { v4 = (void **)*((_DWORD *)v2 + 3); for ( i = *v4; i != v4; i = *(void **)i ) { v6 = *((_DWORD *)i + 2); if ( !v6 ) break; if ( **(_WORD **)(v3 + 8) == *(_WORD *)v6 ) { if ( i != v4 ) { **((_DWORD **)i + 1) = *(_DWORD *)i; *(_DWORD *)(*(_DWORD *)i + 4) = *((_DWORD *)i + 1); operator delete(i); --*((_DWORD *)v2 + 4); } break; } } } v7 = *((_DWORD *)v2 + 3); v8 = loc_445DC0((char *)v2 + 12, *((_DWORD *)v2 + 3), *(_DWORD *)(v7 + 4), &a2); v9 = *((_DWORD *)v2 + 4); if ( (unsigned int)(1073741822 - v9) < 1 ) sub_65178B((int)"list too long"); *((_DWORD *)v2 + 4) = v9 + 1; *(_DWORD *)(v7 + 4) = v8; **(_DWORD **)(v8 + 4) = v8; --dword_750CB8; v11 = (int)"CharacterPassiveList::cpl_StoreSetAbstateList"; } else { --dword_750CB8; v11 = (int)"CharacterPassiveList::cpl_StoreSetAbstateList"; } return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258088: using guessed type int dword_13258088; //----- (00446E10) -------------------------------------------------------- int __thiscall sub_446E10(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v10 = v4; v12 = 0; sub_445E50((int)v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (00446EEB) -------------------------------------------------------- void __usercall sub_446EEB(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00446F10) -------------------------------------------------------- int __thiscall sub_446F10(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_446E10(this, v5); } return result; } //----- (00446F90) -------------------------------------------------------- int __cdecl sub_446F90(int a1, int a2, signed int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // ebx@1 int v5; // edi@1 int result; // eax@1 int v7; // esi@2 int v8; // [sp+Ch] [bp-8h]@4 int v9; // [sp+10h] [bp-4h]@4 v4 = a1; v5 = a2; result = (a2 - a1) / 20; if ( result <= 32 ) goto LABEL_8; v7 = a3; while ( v7 > 0 ) { sub_4465E0((int)&v8, v4, v5, a4); v7 = v7 / 2 / 2 + v7 / 2; if ( (v8 - v4) / 20 >= (v5 - v9) / 20 ) { sub_446F90(v9, v5, v7, a4); v5 = v8; } else { sub_446F90(v4, v8, v7, a4); v4 = v9; } result = (v5 - v4) / 20; if ( result <= 32 ) goto LABEL_8; } if ( result <= 32 ) { LABEL_8: if ( result > 1 ) result = sub_445AA0(v4, v5, a4); } else { if ( (v5 - v4) / 20 > 1 ) sub_445950(v4, v5, a4); result = sub_4469D0(v4, v5, a4); } return result; } //----- (004470D0) -------------------------------------------------------- int __thiscall sub_4470D0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // ecx@4 int v7; // ebx@7 int v8; // eax@10 int v9; // ecx@10 int v10; // eax@13 int v11; // esi@14 int v12; // eax@17 int v13; // edi@17 int v15; // [sp-8h] [bp-2Ch]@24 int v16; // [sp-4h] [bp-28h]@2 int v17; // [sp-4h] [bp-28h]@9 int v18; // [sp-4h] [bp-28h]@24 void *v19; // [sp+14h] [bp-10h]@1 int v20; // [sp+30h] [bp+Ch]@10 v3 = this; v19 = this; sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::psl_Store"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::psl_Store"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int16)a2 < 0x3E8u ) { if ( (unsigned int)(unsigned __int16)a2 < *((_DWORD *)v3 + 1) ) { v6 = (unsigned __int16)a2 & 0x80000007; if ( v6 < 0 ) LOBYTE(v6) = ((unsigned __int8)(v6 - 1) | 0xF8) + 1; *(_BYTE *)(((unsigned int)(unsigned __int16)a2 >> 3) + *(_DWORD *)v3) |= 1 << v6; } sub_446CD0(v3, a2); v7 = sub_54E5A0(&unk_13253630, a3); if ( v7 ) { sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::cpl_SetAbstate"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::cpl_SetAbstate"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 4) ) { v8 = *((_DWORD *)v3 + 3); v9 = *(_DWORD *)v8; v20 = *(_DWORD *)v8; if ( *(_DWORD *)v8 != v8 ) { while ( 1 ) { v10 = *(_DWORD *)(v9 + 8); if ( !v10 ) break; v11 = *(_DWORD *)(v10 + 4); if ( !v11 ) { sub_639100( &unk_86DDD8, (int)"CharacterPassiveList::cpl_SetAbstate : INVALID PSkillSetAbstate Data", *(_WORD *)v10); break; } if ( *(_DWORD *)(v11 + 32) == 2 ) { if ( *(_WORD *)(v11 + 36) <= (unsigned __int16)sub_4011A0(&unk_14D42DC0) ) break; v12 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(v11 + 38)); v13 = v12; if ( !v12 ) { v18 = v11 + 38; v15 = (int)"CharacterPassiveList::cpl_SetAbstate : INVALID Abstate Data"; LABEL_26: sub_6390B0(&unk_86DDD8, v15, v18); break; } if ( !*(_DWORD *)v12 ) { v18 = v11 + 38; v15 = (int)"CharacterPassiveList::cpl_SetAbstate : INVALID Abstate Index Data"; goto LABEL_26; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 1588))(v7, v12) == 1 ) break; (*(void (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v7 + 1604))( v7, v7, *(_DWORD *)(*(_DWORD *)v13 + 34), *(_BYTE *)(v11 + 70), 1); v9 = v20; v3 = v19; } v20 = *(_DWORD *)v9; if ( *(_DWORD *)v9 == *((_DWORD *)v3 + 3) ) break; v9 = *(_DWORD *)v9; } } --dword_750CB8; v17 = (int)"CharacterPassiveList::cpl_SetAbstate"; } else { --dword_750CB8; v17 = (int)"CharacterPassiveList::cpl_SetAbstate"; } sub_467660((int)&unk_D020420, v17); } v16 = (int)"CharacterPassiveList::psl_Store"; } else { sub_639100(&unk_86DDD8, (int)"CharacterPassiveList::cpl_Store : Invalid passive", (unsigned __int16)a2); v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)a3; *((_DWORD *)v5 + 1) = *(_DWORD *)(a3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(a3 + 12); *((_DWORD *)v5 + 4) = *(_DWORD *)(a3 + 16); v5[20] = 0; v16 = (int)"CharacterPassiveList::psl_Store"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00447360) -------------------------------------------------------- int __thiscall sub_447360(void *this, int a2, int a3) { void *v3; // ebx@1 int *v4; // edi@2 int v5; // eax@4 _BYTE *v6; // eax@4 unsigned int v7; // ecx@5 int v8; // eax@6 int v9; // ecx@6 signed int v11; // [sp+14h] [bp-10h]@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CharacterPassiveList::psl_Store"); dword_7508B8[dword_750CB8] = (int)"CharacterPassiveList::psl_Store"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; if ( *(_WORD *)a2 > 0u ) { v4 = (int *)(a2 + 2); do { if ( *(_WORD *)v4 < 0x3E8u ) { v7 = *(_WORD *)v4; if ( v7 < *((_DWORD *)v3 + 1) ) { v8 = *(_DWORD *)v3 + (v7 >> 3); v9 = v7 & 0x80000007; if ( v9 < 0 ) LOBYTE(v9) = ((unsigned __int8)(v9 - 1) | 0xF8) + 1; *(_BYTE *)v8 |= 1 << v9; } sub_446CD0(v3, *(_WORD *)v4); } else { sub_639100(&unk_86DDD8, (int)"CharacterPassiveList::cpl_Store : Invalid passive", *(_WORD *)v4); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)a3; *((_DWORD *)v6 + 1) = *(_DWORD *)(a3 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(a3 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(a3 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(a3 + 16); v6[20] = 0; } v4 = (int *)((char *)v4 + 2); ++v11; } while ( v11 < *(_WORD *)a2 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharacterPassiveList::psl_Store"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (004474C0) -------------------------------------------------------- int __thiscall sub_4474C0(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; result = v4 / 20; if ( v4 / 20 <= a2 ) { if ( v4 / 20 < a2 ) { sub_446F10(v2, a2 - result); sub_445E20( (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20, *(_DWORD *)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20; *(_DWORD *)(v2 + 4) += 20 * (a2 - result); } } else { result = *(_DWORD *)v2 + 20 * a2; if ( result != v3 ) { result = sub_4458A0(v3, v3, *(_DWORD *)v2 + 20 * a2); *(_DWORD *)(v2 + 4) = result; } } return result; } //----- (00447580) -------------------------------------------------------- int __thiscall sub_447580(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_446F10(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a2 + 16); } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_446F10(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v6 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v6 + 16); *(_DWORD *)(v2 + 4) += 20; return result; } } *(_DWORD *)(v2 + 4) += 20; return result; } //----- (00447630) -------------------------------------------------------- unsigned int __thiscall sub_447630(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; if ( 1073741823 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 2; if ( result > v4 ) { if ( 1073741823 - ((unsigned int)v4 >> 1) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_61F820(this, v5); } return result; } //----- (004476B0) -------------------------------------------------------- void __thiscall sub_4476B0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 40) ) operator delete(*(void **)(this + 40)); *(_DWORD *)(v1 + 40) = 0; *(_DWORD *)(v1 + 44) = 0; *(_DWORD *)(v1 + 48) = 0; if ( *(_DWORD *)(v1 + 24) ) operator delete(*(void **)(v1 + 24)); *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 8) ) operator delete(*(void **)(v1 + 8)); *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; } //----- (00447710) -------------------------------------------------------- int __thiscall sub_447710(int this) { int v1; // esi@1 int v2; // edx@1 v1 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 0; sub_446E10(this, 0xBB8u); *(_DWORD *)(v1 + 16) = 0; v2 = *(_DWORD *)(v1 + 20); if ( v2 != *(_DWORD *)(v1 + 24) ) *(_DWORD *)(v1 + 24) = v2; return v1; } //----- (004477A0) -------------------------------------------------------- void __thiscall sub_4477A0(int this) { int v1; // esi@1 int v2; // edx@1 v1 = this; v2 = *(_DWORD *)(this + 20); if ( v2 != *(_DWORD *)(this + 24) ) *(_DWORD *)(this + 24) = v2; if ( *(_DWORD *)(this + 20) ) operator delete(*(void **)(this + 20)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 0; if ( *(_DWORD *)v1 ) operator delete(*(void **)v1); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (00447800) -------------------------------------------------------- signed int __thiscall sub_447800(void *this) { int v1; // edi@1 signed int result; // eax@1 signed int v3; // esi@1 int v4; // ebx@1 int v5; // ecx@4 int i; // [sp+Ch] [bp-20h]@1 __int16 v7; // [sp+10h] [bp-1Ch]@2 __int16 v8; // [sp+14h] [bp-18h]@7 int v9; // [sp+18h] [bp-14h]@7 __int16 v10; // [sp+1Ch] [bp-10h]@7 int v11; // [sp+20h] [bp-Ch]@7 int v12; // [sp+24h] [bp-8h]@7 unsigned int v13; // [sp+28h] [bp-4h]@1 int v14; // [sp+2Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v1 = (int)this; result = Concurrency::details::InternalContextBase::GetProxy(&unk_AF09A98); v3 = *(_DWORD *)(v1 + 16); v4 = 0; for ( i = result; v4 < i; ++v4 ) { result = sub_45CC20((int)&unk_AF09A98, v4, (int)&v7); if ( !result ) break; result = 0; if ( v3 <= 0 ) { LABEL_7: v12 = 0; v11 = 0; v8 = v7; v9 = dword_14D129E8; v10 = 0; result = sub_447580(v1, (unsigned int)&v8); ++*(_DWORD *)(v1 + 16); } else { v5 = *(_DWORD *)v1; while ( v7 != *(_WORD *)v5 ) { ++result; v5 += 20; if ( result >= v3 ) goto LABEL_7; } } } return result; } // 45CC10: using guessed type int __thiscall Concurrency__details__InternalContextBase__GetProxy(_DWORD); // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (004478A0) -------------------------------------------------------- int __thiscall sub_4478A0(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // eax@1 signed int v4; // edi@3 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)this > a2 ) { if ( v3 == *(_DWORD *)(this + 8) ) sub_447630(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) *(_DWORD *)result = *(_DWORD *)a2; } else { v4 = (signed int)(a2 - *(_DWORD *)this) >> 2; if ( v3 == *(_DWORD *)(this + 8) ) sub_447630(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)(*(_DWORD *)v2 + 4 * v4); *(_DWORD *)(v2 + 4) += 4; return result; } } *(_DWORD *)(v2 + 4) += 4; return result; } //----- (00447910) -------------------------------------------------------- void *__thiscall sub_447910(int this, __int16 a2) { int v2; // eax@1 size_t v3; // ecx@1 const void *v4; // ST04_4@1 void *v5; // edi@1 char v7; // [sp+8h] [bp-50Ch]@1 __int16 *v8; // [sp+Ch] [bp-508h]@1 void *v9; // [sp+10h] [bp-504h]@1 int v10; // [sp+14h] [bp-500h]@1 int v11; // [sp+18h] [bp-4FCh]@1 void *v12; // [sp+20h] [bp-4F4h]@1 int v13; // [sp+24h] [bp-4F0h]@1 int v14; // [sp+28h] [bp-4ECh]@1 void *v15; // [sp+30h] [bp-4E4h]@1 int v16; // [sp+34h] [bp-4E0h]@1 int v17; // [sp+38h] [bp-4DCh]@1 __int16 v18; // [sp+270h] [bp-2A4h]@1 unsigned int v19; // [sp+510h] [bp-4h]@1 int v20; // [sp+514h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v2 = this; v8 = &v18; v3 = *(_DWORD *)(this + 1232); v18 = a2; v4 = *(const void **)(v2 + 1228); v9 = 0; v10 = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v5 = bsearch(&v7, v4, v3, 0x268u, (int (__cdecl *)(const void *, const void *))sub_582110); if ( v15 ) operator delete(v15); v15 = 0; v16 = 0; v17 = 0; if ( v12 ) operator delete(v12); v12 = 0; v13 = 0; v14 = 0; if ( v9 ) operator delete(v9); return v5; } // 86FEB8: using guessed type int __security_cookie; //----- (00447A10) -------------------------------------------------------- __int16 __stdcall sub_447A10(__int16 a1) { void *v1; // eax@1 int i; // ecx@1 __int16 v3; // si@3 sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_MaximumSkill"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_MaximumSkill"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_447910((int)&unk_132577A0, a1); for ( i = *((_DWORD *)v1 + 15); i; i = *(_DWORD *)(i + 60) ) v1 = (void *)i; v3 = **((_WORD **)v1 + 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_MaximumSkill"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00447A90) -------------------------------------------------------- int __thiscall sub_447A90(void *this, __int16 a2, int a3) { void *v3; // esi@1 void *v4; // ebx@1 int v5; // ecx@4 int v6; // esi@4 signed int v7; // edx@5 signed int v8; // ecx@5 __int16 v9; // cx@13 __int16 v10; // ax@13 __int16 v11; // cx@13 void *v13; // [sp+14h] [bp-18h]@1 void *v14; // [sp+18h] [bp-14h]@1 unsigned __int16 v15; // [sp+1Ch] [bp-10h]@4 v3 = this; v13 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerStruct"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_EmpowerStruct"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)a3 = 0; v4 = sub_447910((int)&unk_132577A0, a2); v14 = v4; if ( v4 ) { while ( 1 ) { v5 = *((_DWORD *)v3 + 1); v6 = *(_DWORD *)v3; v15 = **((_WORD **)v4 + 1); if ( (v5 - v6) / 20 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (v5 - v6)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( v8 > 0 ) { do { if ( *(_WORD *)(v6 + 20 * v8 / 2) >= v15 ) { v8 /= 2; } else { v6 += 20 * v8 / 2 + 20; v8 += -1 - v8 / 2; } } while ( v8 > 0 ); v4 = v14; } if ( v6 != *((_DWORD *)v13 + 1) && v15 >= *(_WORD *)v6 ) { v9 = *(_WORD *)a3 ^ ((unsigned __int8)*(_WORD *)a3 ^ (unsigned __int8)(*(_WORD *)a3 + (unsigned __int8)*(_WORD *)(v6 + 8))) & 0xF; *(_WORD *)a3 = v9; v10 = v9 ^ (v9 ^ (v9 + (*(_WORD *)(v6 + 8) & 0xFFF0))) & 0xF0; *(_WORD *)a3 = v10; v11 = v10 ^ (v10 ^ (v10 + (*(_WORD *)(v6 + 8) & 0xFF00))) & 0xF00; *(_WORD *)a3 = v11; *(_WORD *)a3 = v11 + (*(_WORD *)(v6 + 8) & 0xF000); } } v4 = (void *)*((_DWORD *)v4 + 14); v14 = v4; if ( !v4 ) break; v3 = v13; } } if ( (*(_WORD *)a3 & 0xFu) > 5 ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", *(_WORD *)a3 & 0xF); *(_WORD *)a3 = *(_WORD *)a3 & 0xFFF5 | 5; } if ( (*(_WORD *)a3 & 0xF0u) > 0x50 ) { sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", ((unsigned int)*(_WORD *)a3 >> 4) & 0xF); *(_WORD *)a3 = *(_WORD *)a3 & 0xFF5F | 0x50; } if ( (*(_WORD *)a3 & 0xF00u) > 0x500 ) { sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", ((unsigned int)*(_WORD *)a3 >> 8) & 0xF); *(_WORD *)a3 = *(_WORD *)a3 & 0xF5FF | 0x500; } if ( (*(_WORD *)a3 & 0xF000u) > 0x5000 ) { sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", (unsigned int)*(_WORD *)a3 >> 12); *(_WORD *)a3 = *(_WORD *)a3 & 0xFFF | 0x5000; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerStruct"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00447D40) -------------------------------------------------------- char __thiscall sub_447D40(void *this, __int16 *a2, int a3) { void *v3; // edi@1 __int16 *v4; // esi@1 __int16 v5; // ax@1 __int16 v6; // cx@1 int v7; // eax@1 int v8; // ecx@1 int v10; // ecx@5 unsigned int v11; // ecx@5 unsigned int v12; // ecx@7 unsigned int v13; // edi@9 int v14; // eax@11 int v15; // ecx@15 int v16; // edi@17 int v17; // eax@19 __int16 v18; // cx@21 __int16 v19; // dx@21 __int16 v20; // cx@21 __int16 v21; // dx@21 __int16 v22; // cx@21 __int16 v23; // cx@21 __int16 v24; // cx@21 __int16 v25; // si@21 int v26; // [sp-8h] [bp-30h]@2 int v27; // [sp-4h] [bp-2Ch]@2 int v28; // [sp-4h] [bp-2Ch]@3 int v29; // [sp+14h] [bp-14h]@1 int v30; // [sp+18h] [bp-10h]@5 v3 = this; v29 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerAlloc"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_EmpowerAlloc"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = sub_447A10(*a2); sub_447A90(v3, v5, (int)&a2); v6 = v4[1]; v7 = (unsigned __int8)a2 & 0xF; v8 = v7 + (v6 & 0xF); if ( v8 > 5 ) { v27 = v8; v26 = (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point1"; LABEL_3: sub_639100(&unk_86DDD8, v26, v27); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, v28); return 0; } v10 = (unsigned __int8)a2 >> 4; v30 = v10; v11 = (((unsigned int)(unsigned __int16)v4[1] >> 4) & 0xF) + v10; if ( (signed int)v11 > 5 ) { v27 = v11; v26 = (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point2"; goto LABEL_3; } v12 = ((unsigned int)(unsigned __int16)a2 >> 8) & 0xF; if ( (signed int)(v12 + (*((_BYTE *)v4 + 3) & 0xF)) > 5 ) { sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point3", v12 + (*((_BYTE *)v4 + 3) & 0xF)); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } v13 = (unsigned int)(unsigned __int16)a2 >> 12; if ( (signed int)(v13 + ((unsigned int)(unsigned __int16)v4[1] >> 12)) > 5 ) { sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point4", v13 + ((unsigned int)(unsigned __int16)v4[1] >> 12)); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } v14 = v7 - (v4[2] & 0xF); if ( (unsigned __int8)((unsigned __int8)a2 & 0xF) < (unsigned __int8)(v4[2] & 0xF) ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point5", v14); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } if ( ((unsigned __int8)a2 & 0xF0u) < (v4[2] & 0xF0u) ) { sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point6", v30 - (((unsigned int)(unsigned __int16)v4[2] >> 4) & 0xF)); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } v15 = v12 - (((unsigned int)(unsigned __int16)v4[2] >> 8) & 0xF); if ( ((unsigned __int16)a2 & 0xF00u) < (v4[2] & 0xF00u) ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point7", v15); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } v16 = v13 - ((unsigned int)(unsigned __int16)v4[2] >> 12); if ( ((unsigned __int16)a2 & 0xF000u) < (v4[2] & 0xF000u) ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Too many point8", v16); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } v17 = sub_445F40(v29, *v4); if ( !v17 ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_EmpowerAlloc : Not learn", 0); v28 = (int)"CharaterSkillList::csl_EmpowerAlloc"; goto LABEL_4; } v18 = *(_WORD *)(v17 + 8) ^ ((unsigned __int8)*(_WORD *)(v17 + 8) ^ (unsigned __int8)(*(_WORD *)(v17 + 8) + v4[1])) & 0xF; *(_WORD *)(v17 + 8) = v18; v19 = v18 ^ (v18 ^ (v4[1] + (v18 & 0xFFF0))) & 0xF0; *(_WORD *)(v17 + 8) = v19; v20 = v19 ^ (v19 ^ (v19 + (v4[1] & 0xFF00))) & 0xF00; *(_WORD *)(v17 + 8) = v20; v21 = (v20 ^ v4[1]) & 0xFFF ^ (v4[1] + (v20 & 0xF000)); *(_WORD *)(v17 + 8) = v21; v22 = v21 ^ ((unsigned __int8)v21 ^ (unsigned __int8)(v21 - v4[2])) & 0xF; *(_WORD *)(v17 + 8) = v22; v23 = v22 ^ (v22 ^ (v22 - 16 * (((unsigned __int16)v4[2] >> 4) & 0xF))) & 0xF0; *(_WORD *)(v17 + 8) = v23; v24 = v23 ^ (v23 ^ (v23 - ((*((_BYTE *)v4 + 5) & 0xF) << 8))) & 0xF00; *(_WORD *)(v17 + 8) = v24; v25 = (unsigned __int16)v4[2] >> 12 << 12; *(_WORD *)(v17 + 8) = v24 - v25; *(_WORD *)a3 = v24 - v25; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_EmpowerAlloc"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00448120) -------------------------------------------------------- signed int __stdcall sub_448120(__int16 a1, int a2) { void *v2; // eax@1 signed int v3; // esi@2 signed int result; // eax@2 __int16 *v5; // [sp+10h] [bp-214h]@3 __int16 v6; // [sp+5Ch] [bp-1C8h]@3 unsigned int v7; // [sp+214h] [bp-10h]@1 int v8; // [sp+220h] [bp-4h]@1 int v9; // [sp+224h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_GetDelayGroup"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_GetDelayGroup"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; v2 = sub_447910((int)&unk_132577A0, a1); if ( v2 ) { *(_DWORD *)a2 = *(_DWORD *)(*((_DWORD *)v2 + 1) + 215); v3 = *(_DWORD *)(*((_DWORD *)v2 + 1) + 211); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_GetDelayGroup"); result = v3; } else { v5 = &v6; v6 = a1; if ( bsearch(&v5, dword_D0207D0, dword_D0207D4, 0x4Cu, (int (__cdecl *)(const void *, const void *))sub_469630) ) { *(_DWORD *)a2 = 0; --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_GetDelayGroup"); result = 0; } else { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_GetDelayGroup : Cannot found Skill", (unsigned __int16)a1); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_GetDelayGroup"); result = -1; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00448280) -------------------------------------------------------- int __thiscall sub_448280(void *this, unsigned __int16 a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int v7; // edi@1 int v8; // ebx@1 signed int v9; // ecx@1 int v10; // eax@2 int v11; // edi@4 int v12; // ebx@6 int v13; // edi@10 unsigned int v14; // eax@11 char v16; // [sp+Ch] [bp-30h]@9 int v17; // [sp+10h] [bp-2Ch]@1 int v18; // [sp+14h] [bp-28h]@8 unsigned __int16 v19; // [sp+18h] [bp-24h]@2 unsigned int v20; // [sp+2Ch] [bp-10h]@1 int v21; // [sp+38h] [bp-4h]@1 int v22; // [sp+3Ch] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v6 = this; v17 = (int)"CharaterSkillList::csl_SetCoolTime"; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_SetCoolTime"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_SetCoolTime"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_DWORD *)v6 + 1); v8 = *(_DWORD *)v6; v9 = *((_DWORD *)v6 + 1) - *(_DWORD *)v6; v21 = 0; if ( v9 / 20 && (v19 = a2, v10 = sub_4458E0(v8, v7, (int)&v19, (int (__cdecl *)(_DWORD, _DWORD))sub_444540), v10 != *((_DWORD *)v6 + 1)) && v19 >= *(_WORD *)v10 ) v11 = v10; else v11 = 0; v12 = 0; if ( v11 != 0 ) { v18 = 0; for ( *(_DWORD *)(v11 + 4) = ((signed int)((unsigned __int64)(10 * (a3 - a6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * (a3 - a6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31) + dword_14D129E8 - 3; v18 < *((_DWORD *)v6 + 4); ++v18 ) { if ( sub_448120(*(_WORD *)(*(_DWORD *)v6 + v12), (int)&v16) == a4 ) { v13 = *(_DWORD *)v6; if ( *(_WORD *)(*(_DWORD *)v6 + v12) != a2 ) { v14 = ((signed int)((unsigned __int64)(10 * (a5 - a6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * (a5 - a6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31) + dword_14D129E8 - 3; if ( *(_DWORD *)(v13 + v12 + 4) < v14 ) *(_DWORD *)(v13 + v12 + 4) = v14; } } v12 += 20; } } else { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_SetCoolTime : Not learn", a2); } --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_SetCoolTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (00448430) -------------------------------------------------------- void *__thiscall sub_448430(void *this, unsigned int a2) { unsigned __int16 v2; // si@1 int v3; // edi@1 void *result; // eax@1 int v5; // eax@4 __int16 *v6; // eax@5 int v7; // eax@6 v2 = a2; v3 = (int)this; result = sub_447910((int)&unk_132577A0, a2); if ( result ) { if ( *((_DWORD *)result + 6) != *((_DWORD *)result + 7) ) { v5 = *((_DWORD *)result + 14); LOWORD(a2) = v2; BYTE2(a2) = 0; if ( v5 ) { v6 = *(__int16 **)(v5 + 4); if ( v6 ) { v7 = sub_445010(v3, *v6); if ( v7 ) BYTE2(a2) = *(_BYTE *)(v7 + 2); } } result = (void *)sub_4478A0(v3 + 20, (unsigned int)&a2); } } else { result = sub_639100(&unk_86DDD8, (int)"CharacterSkillList::csl_Toggle_Store : INVALID Skill Data", v2); } return result; } //----- (004484B0) -------------------------------------------------------- FILE *__thiscall sub_4484B0(int this, __int16 a2, char a3) { int v3; // ebx@1 FILE *result; // eax@1 void *v5; // eax@2 int v6; // eax@5 int v7; // esi@6 int v8; // edx@6 int v9; // edx@7 unsigned int v10; // ecx@7 __int16 v11; // ax@8 int v12; // ecx@12 int v13; // ebx@15 int v14; // edi@16 int v15; // edx@17 int v16; // ecx@17 int v17; // ecx@18 __int16 v18; // di@19 int v19; // [sp+4h] [bp-8h]@1 void *v20; // [sp+8h] [bp-4h]@2 void *v21; // [sp+14h] [bp+8h]@4 v3 = this; result = *(FILE **)(this + 20); v19 = this; if ( result != *(FILE **)(this + 24) ) { v5 = sub_447910((int)&unk_132577A0, a2); v20 = v5; if ( v5 ) { v21 = v5; do { v6 = *((_DWORD *)v21 + 1); if ( !v6 ) return sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_Toggle_SetOnOff : INVALID Skill Activ PrevSkill", 0); v7 = *(_DWORD *)(v3 + 20); v8 = *(_DWORD *)(v3 + 24); if ( v7 != v8 ) { v9 = (v8 - v7) >> 2; v10 = 0; if ( v9 ) { v11 = *(_WORD *)v6; while ( *(_WORD *)v7 != v11 ) { ++v10; v7 += 4; if ( v10 >= v9 ) goto LABEL_14; } v12 = *(_DWORD *)(v3 + 20) + 4 * v10; if ( v12 ) *(_BYTE *)(v12 + 2) = a3; } } LABEL_14: result = (FILE *)*((_DWORD *)v21 + 14); v21 = result; } while ( result ); v13 = *((_DWORD *)v20 + 15); if ( v13 ) { while ( 1 ) { v14 = *(_DWORD *)(v13 + 4); if ( !v14 ) break; v15 = *(_DWORD *)(v19 + 20); v16 = *(_DWORD *)(v19 + 24); if ( v15 != v16 ) { v17 = (v16 - v15) >> 2; result = 0; if ( v17 ) { v18 = *(_WORD *)v14; while ( *(_WORD *)v15 != v18 ) { result = (FILE *)((char *)result + 1); v15 += 4; if ( (unsigned int)result >= v17 ) goto LABEL_26; } result = (FILE *)(*(_DWORD *)(v19 + 20) + 4 * (_DWORD)result); if ( result ) BYTE2(result->_ptr) = a3; } } LABEL_26: v13 = *(_DWORD *)(v13 + 56); if ( !v13 ) return result; } result = sub_639100( &unk_86DDD8, (int)"CharaterSkillList::csl_Toggle_SetOnOff : INVALID Skill Activ NextSkill", 0); } } else { result = sub_639100( &unk_86DDD8, (int)"CharacterSkillList::csl_Toggle_Store : INVALID Skill Data", (unsigned __int16)a2); } } return result; } //----- (004485F0) -------------------------------------------------------- void __thiscall sub_4485F0(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 int v4; // ecx@3 int v5; // eax@3 int v6; // edx@4 int v7; // eax@5 bool v8; // zf@5 __int16 *v9; // eax@5 int v10; // eax@6 int v11; // ebx@6 int v12; // ebx@8 signed int v13; // esi@9 int v14; // ST04_4@10 void *v15; // eax@10 void *v16; // [sp+8h] [bp-Ch]@1 int v17; // [sp+Ch] [bp-8h]@6 int v18; // [sp+10h] [bp-4h]@4 signed int v19; // [sp+1Ch] [bp+8h]@8 v2 = a2; v3 = this; v16 = this; if ( a2 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 768))(a2) ) { v4 = *((_DWORD *)v3 + 5); v5 = *((_DWORD *)v3 + 6); if ( v4 != v5 ) { v6 = 0; v18 = 0; if ( (v5 - v4) >> 2 ) { do { v7 = *((_DWORD *)v3 + 5); v8 = *(_BYTE *)(v7 + 4 * v6 + 2) == 0; v9 = (__int16 *)(v7 + 4 * v6); if ( !v8 ) { v10 = (int)sub_447910((int)&unk_132577A0, *v9); v11 = v10; v17 = v10; if ( v10 ) { if ( !sub_4450A0(v10, v2) ) { v12 = v11 + 64; v19 = 4; do { v13 = *(_DWORD *)v12; if ( *(_DWORD *)v12 != 792 ) { v14 = *(_DWORD *)v12; v15 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1324))(v2); if ( sub_409A00(v15, v14) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 1616))(v2, v13); sub_401940((void *)v2, v13); sub_405730((void *)v2, v13); } } v12 += 12; --v19; } while ( v19 ); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 3020))(v2, v17); v3 = v16; } } } v6 = v18 + 1; v18 = v6; } while ( v6 < (unsigned int)((*((_DWORD *)v3 + 6) - *((_DWORD *)v3 + 5)) >> 2) ); } } } } } //----- (00448700) -------------------------------------------------------- void __thiscall sub_448700(int this, int a2) { int v2; // esi@1 int v3; // ecx@2 int v4; // eax@2 unsigned int v5; // edi@3 int v6; // eax@4 bool v7; // zf@4 __int16 *v8; // eax@4 void *v9; // eax@5 v2 = this; if ( a2 ) { v3 = *(_DWORD *)(this + 20); v4 = *(_DWORD *)(v2 + 24); if ( v3 != v4 ) { v5 = 0; if ( (v4 - v3) >> 2 ) { do { v6 = *(_DWORD *)(v2 + 20); v7 = *(_BYTE *)(v6 + 4 * v5 + 2) == 0; v8 = (__int16 *)(v6 + 4 * v5); if ( !v7 ) { v9 = sub_447910((int)&unk_132577A0, *v8); if ( v9 ) (*(void (__thiscall **)(int, void *))(*(_DWORD *)a2 + 3020))(a2, v9); } ++v5; } while ( v5 < (*(_DWORD *)(v2 + 24) - *(_DWORD *)(v2 + 20)) >> 2 ); } } } } //----- (00448770) -------------------------------------------------------- void __thiscall sub_448770(int this, void *a2) { void *v2; // edi@1 int v3; // ebx@1 int v4; // ecx@2 int v5; // eax@2 void *v6; // esi@4 int v7; // ebx@5 signed int v8; // esi@6 int v9; // ST00_4@7 void *v10; // eax@7 int v11; // [sp+8h] [bp-8h]@1 signed int v12; // [sp+Ch] [bp-4h]@5 unsigned int v13; // [sp+18h] [bp+8h]@3 v2 = a2; v3 = this; v11 = this; if ( a2 ) { v4 = *(_DWORD *)(this + 20); v5 = *(_DWORD *)(v3 + 24); if ( v4 != v5 ) { v13 = 0; if ( (v5 - v4) >> 2 ) { do { v6 = sub_447910((int)&unk_132577A0, *(_WORD *)(*(_DWORD *)(v3 + 20) + 4 * v13)); if ( v6 ) { (*(void (__thiscall **)(void *, void *))(*(_DWORD *)v2 + 3020))(v2, v6); v7 = (int)((char *)v6 + 64); v12 = 4; do { v8 = *(_DWORD *)v7; if ( *(_DWORD *)v7 != 792 ) { v9 = *(_DWORD *)v7; v10 = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1324))(v2); if ( sub_409A00(v10, v9) ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1616))(v2, v8); sub_401940(v2, v8); sub_405730(v2, v8); } } v7 += 12; --v12; } while ( v12 ); v3 = v11; } ++v13; } while ( v13 < (*(_DWORD *)(v3 + 24) - *(_DWORD *)(v3 + 20)) >> 2 ); } } } } //----- (00448850) -------------------------------------------------------- int __thiscall sub_448850(void *this) { void *v1; // edi@1 int v2; // ebx@2 void *v3; // eax@4 int i; // [sp+14h] [bp-10h]@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)v1 != *((_DWORD *)v1 + 1) ) { v2 = 0; for ( i = 0; i < *((_DWORD *)v1 + 4); ++i ) { if ( *(_DWORD *)(*(_DWORD *)v1 + v2 + 4) > (unsigned int)dword_14D129E8 ) { v3 = sub_447910((int)&unk_132577A0, *(_WORD *)(*(_DWORD *)v1 + v2)); if ( v3 ) { if ( *((_BYTE *)v3 + 416) == 1 ) *(_DWORD *)(v2 + *(_DWORD *)v1 + 4) += ((signed int)((unsigned __int64)(-10 * *((_DWORD *)v3 + 105) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(-10 * *((_DWORD *)v3 + 105) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } } v2 += 20; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00448960) -------------------------------------------------------- void __thiscall sub_448960(void *this, void *a2, void *a3, int a4, int a5) { int v5; // ebx@1 void *v6; // esi@1 void *v7; // eax@5 int v8; // eax@7 void *v9; // [sp-4h] [bp-24h]@3 __int16 v10; // [sp+Ch] [bp-14h]@9 int v11; // [sp+10h] [bp-10h]@9 int v12; // [sp+1Ch] [bp-4h]@1 v5 = (int)this; v6 = a2; v12 = 0; if ( a2 == a3 ) { if ( !a2 ) return; v9 = a2; goto LABEL_13; } do { if ( !*(_DWORD *)v6 ) break; v7 = sub_583BA0(&unk_132577A0, *(_DWORD *)v6 + 32); if ( v7 ) { v8 = *((_DWORD *)v7 + 1); if ( v8 ) { v10 = *(_WORD *)v8; v11 = 0; sub_5F1770(v5, (unsigned int)&v10); } else { sub_6390B0(&unk_86DDD8, (int)"MoverSkillList::msl_Store : ActiveSkillInfo data null", *(_DWORD *)v6 + 32); } } else { sub_6390B0(&unk_86DDD8, (int)"MoverSkillList::msl_Store : Skill data null", *(_DWORD *)v6 + 32); } v6 = (char *)v6 + 4; } while ( v6 != a3 ); if ( a2 ) { v9 = a2; LABEL_13: operator delete(v9); } } //----- (00448A40) -------------------------------------------------------- unsigned int __thiscall sub_448A40(int this, unsigned __int16 a2, int a3, int a4, int a5) { int v5; // ebx@1 int v6; // eax@1 int v7; // ecx@1 unsigned int result; // eax@5 int i; // esi@6 void *v10; // eax@7 v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)this; if ( (v6 - v7) & 0xFFFFFFF8 && v7 != v6 ) { while ( *(_WORD *)v7 != a2 ) { v7 += 8; if ( v7 == v6 ) goto LABEL_5; } result = dword_14D129E8; *(_DWORD *)(v7 + 4) = ((unsigned int)((unsigned int)(10 * a3) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) + dword_14D129E8 - 3; for ( i = *(_DWORD *)v5; i != *(_DWORD *)(v5 + 4); i += 8 ) { v10 = sub_447910((int)&unk_132577A0, *(_WORD *)i); if ( v10 ) { result = *((_DWORD *)v10 + 1); if ( result ) { if ( *(_DWORD *)(result + 215) == a4 ) { result = ((unsigned int)((unsigned int)(10 * a5) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) + dword_14D129E8 - 3; if ( *(_DWORD *)(i + 4) < result ) *(_DWORD *)(i + 4) = result; } } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"MoverSkillList::msl_SetCoolTime : ActiveSkillInfo data null", *(_WORD *)i); } } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"MoverSkillList::msl_SetCoolTime : Skill data null", *(_WORD *)i); } } } else { LABEL_5: result = (unsigned int)sub_639100(&unk_86DDD8, (int)"MoverSkillList::msl_SetCoolTime : Did not learn skills", a2); } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00448B30) -------------------------------------------------------- int __thiscall sub_448B30(void *this, int a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // ecx@1 bool v5; // zf@1 int v6; // edx@4 int v9; // edi@9 int v10; // eax@10 int v11; // eax@10 int v12; // eax@10 int v13; // eax@10 int v14; // eax@10 int v15; // ecx@13 int v16; // edx@15 int v17; // edi@17 int v18; // esi@17 signed int v19; // edx@17 int v21; // [sp-4h] [bp-2Ch]@2 __time32_t Time1; // [sp+14h] [bp-14h]@3 int v23; // [sp+18h] [bp-10h]@8 int v24; // [sp+24h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_Store"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_Store"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(_WORD *)(a2 + 7); v5 = *(_WORD *)(a2 + 7) >= 0xBB8u; v24 = 0; if ( v5 ) { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_Store : Too many skills", v4); v21 = (int)"CharaterSkillList::csl_Store"; } else { sub_44FB50((__time32_t)&Time1, (int)&Time1); if ( !*(_DWORD *)(v2 + 16) ) { sub_4474C0(v2, *(_WORD *)(a2 + 5)); v6 = *(_DWORD *)(v2 + 20); if ( v6 != *(_DWORD *)(v2 + 24) ) *(_DWORD *)(v2 + 24) = v6; } v23 = 0; if ( *(_WORD *)(a2 + 7) > 0u ) { v9 = a2 + 20; do { *(_WORD *)(*(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16)) = *(_WORD *)(v9 - 7); v10 = *(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16) + 8; *(_WORD *)v10 = *(_WORD *)v10 & 0xFFF0 | *(_BYTE *)(v9 - 1) & 0xF; v11 = *(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16) + 8; *(_WORD *)v11 = *(_WORD *)v11 & 0xFF0F | 16 * (unsigned __int8)(*(_BYTE *)(v9 - 1) >> 4); v12 = *(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16) + 8; *(_WORD *)v12 = *(_WORD *)v12 & 0xF0FF | ((*(_BYTE *)v9 & 0xF) << 8); v13 = *(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16) + 8; *(_WORD *)v13 = *(_WORD *)v13 & 0xFFF | ((unsigned __int8)(*(_BYTE *)v9 >> 4) << 12); *(_DWORD *)(*(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16) + 12) = *(_DWORD *)(v9 + 1); v14 = *(_DWORD *)(v2 + 16); if ( *(_DWORD *)(v9 - 5) ) *(_DWORD *)(*(_DWORD *)v2 + 20 * v14 + 16) = 1; else *(_DWORD *)(*(_DWORD *)v2 + 20 * v14 + 16) = 0; v15 = *(_DWORD *)(v9 - 5) - (signed int)_difftime32(Time1, *(_DWORD *)(v9 - 11)); if ( v15 < 0 ) v15 = 0; *(_DWORD *)(*(_DWORD *)v2 + 20 * *(_DWORD *)(v2 + 16) + 4) = dword_14D129E8 + 10 * v15; sub_448430((void *)v2, *(_WORD *)(v9 - 7)); ++*(_DWORD *)(v2 + 16); v3 = a2; v16 = *(_WORD *)(a2 + 7); v9 += 16; ++v23; } while ( v23 < v16 ); } if ( *(_DWORD *)(v2 + 16) == *(_WORD *)(v3 + 5) ) { sub_447800((void *)v2); v17 = *(_DWORD *)(v2 + 4); v18 = *(_DWORD *)v2; v19 = (signed int)((unsigned __int64)(1717986919i64 * (v17 - v18)) >> 32) >> 3; sub_446F90(v18, v17, v19 + ((unsigned int)v19 >> 31), (int (__cdecl *)(_DWORD, _DWORD))sub_444540); } v21 = (int)"CharaterSkillList::csl_Store"; } --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, v21); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00448DD0) -------------------------------------------------------- int __stdcall sub_448DD0(int a1, int a2) { return 0; } //----- (00448DE0) -------------------------------------------------------- int __thiscall sub_448DE0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 v3 = this; v4 = 5 * (*(_DWORD *)(a3 + 4) - *(_DWORD *)(*((_DWORD *)this + (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) + 16918) + 8)); return v4 + *(_WORD *)(*((_DWORD *)v3 + (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) + 16918) + 116); } //----- (00448E30) -------------------------------------------------------- int __thiscall sub_448E30(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 v3 = this; v4 = 5 * (*(_DWORD *)(a3 + 16) - *(_DWORD *)(*((_DWORD *)this + (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) + 16918) + 24)); return v4 + *(_WORD *)(*((_DWORD *)v3 + (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) + 16918) + 118); } //----- (00448E80) -------------------------------------------------------- int (__stdcall ***__cdecl sub_448E80())(int, int) { return &off_749680; } // 749680: using guessed type int (__stdcall **off_749680)(int, int); //----- (00448E90) -------------------------------------------------------- bool __stdcall sub_448E90(int a1) { return (*(int (**)(void))(*(_DWORD *)a1 + 1984))() == 0; } //----- (00448EB0) -------------------------------------------------------- signed int __cdecl sub_448EB0() { return 28; } //----- (00448EC0) -------------------------------------------------------- int (__stdcall ***__cdecl sub_448EC0())(int, int) { return &off_749718; } // 749718: using guessed type int (__stdcall **off_749718)(int, int); //----- (00448ED0) -------------------------------------------------------- int __stdcall sub_448ED0(int a1, int a2) { return *(_DWORD *)(*(_DWORD *)(*(int (**)(void))(*(_DWORD *)a1 + 1804))() + 70); } //----- (00448EF0) -------------------------------------------------------- bool __stdcall sub_448EF0(int a1) { return a1 == 1; } //----- (00448F00) -------------------------------------------------------- bool __stdcall sub_448F00(int a1) { return a1 == 1 || a1 == 2; } //----- (00448F30) -------------------------------------------------------- bool __stdcall sub_448F30(int a1) { return a1 == 1 || a1 == 2 || a1 == 3; } //----- (00448F60) -------------------------------------------------------- signed int __cdecl sub_448F60() { return 6; } //----- (00448F70) -------------------------------------------------------- signed int __cdecl sub_448F70() { return 7; } //----- (00448F80) -------------------------------------------------------- bool __stdcall sub_448F80(int a1) { return a1 == 6; } //----- (00448F90) -------------------------------------------------------- signed int __cdecl sub_448F90() { return 8; } //----- (00448FA0) -------------------------------------------------------- bool __stdcall sub_448FA0(int a1) { return a1 == 6 || a1 == 7; } //----- (00448FC0) -------------------------------------------------------- signed int __cdecl sub_448FC0() { return 9; } //----- (00448FD0) -------------------------------------------------------- bool __stdcall sub_448FD0(int a1) { return a1 == 6 || a1 == 7 || a1 == 8; } //----- (00449000) -------------------------------------------------------- signed int __cdecl sub_449000() { return 10; } //----- (00449010) -------------------------------------------------------- signed int __cdecl sub_449010() { return 11; } //----- (00449020) -------------------------------------------------------- signed int __cdecl sub_449020() { return 12; } //----- (00449030) -------------------------------------------------------- int __cdecl sub_449030() { return (int)off_749714; } // 749714: using guessed type int (__stdcall *off_749714[2])(int, int); //----- (00449040) -------------------------------------------------------- bool __stdcall sub_449040(int a1) { return a1 == 11; } //----- (00449050) -------------------------------------------------------- signed int __cdecl sub_449050() { return 13; } //----- (00449060) -------------------------------------------------------- bool __stdcall sub_449060(int a1) { return a1 == 11 || a1 == 12; } //----- (00449080) -------------------------------------------------------- signed int __cdecl sub_449080() { return 14; } //----- (00449090) -------------------------------------------------------- signed int __cdecl sub_449090() { return 15; } //----- (004490A0) -------------------------------------------------------- bool __stdcall sub_4490A0(int a1) { return a1 == 11 || a1 == 12 || a1 == 13; } //----- (004490D0) -------------------------------------------------------- signed int __cdecl sub_4490D0() { return 16; } //----- (004490E0) -------------------------------------------------------- int __stdcall sub_4490E0(int a1) { return (*(int (**)(void))(*(_DWORD *)a1 + 3792))(); } //----- (00449100) -------------------------------------------------------- signed int __cdecl sub_449100() { return 17; } //----- (00449110) -------------------------------------------------------- signed int __cdecl sub_449110() { return 18; } //----- (00449120) -------------------------------------------------------- bool __stdcall sub_449120(int a1) { return a1 == 16; } //----- (00449130) -------------------------------------------------------- bool __stdcall sub_449130(int a1) { return a1 == 16 || a1 == 17; } //----- (00449150) -------------------------------------------------------- signed int __cdecl sub_449150() { return 19; } //----- (00449160) -------------------------------------------------------- signed int __cdecl sub_449160() { return 20; } //----- (00449170) -------------------------------------------------------- bool __stdcall sub_449170(int a1) { return a1 == 16 || a1 == 17 || a1 == 18; } //----- (004491A0) -------------------------------------------------------- signed int __cdecl sub_4491A0() { return 22; } //----- (004491B0) -------------------------------------------------------- bool __stdcall sub_4491B0(int a1) { return a1 == 21; } //----- (004491D0) -------------------------------------------------------- bool __stdcall sub_4491D0(int a1) { return a1 == 21 || a1 == 22; } //----- (004491F0) -------------------------------------------------------- signed int __cdecl sub_4491F0() { return 24; } //----- (00449200) -------------------------------------------------------- signed int __cdecl sub_449200() { return 25; } //----- (00449210) -------------------------------------------------------- bool __stdcall sub_449210(int a1) { return a1 == 21 || a1 == 22 || a1 == 23; } //----- (00449240) -------------------------------------------------------- signed int __cdecl sub_449240() { return 26; } //----- (00449250) -------------------------------------------------------- bool __stdcall sub_449250(int a1) { return a1 == 26; } //----- (00449260) -------------------------------------------------------- int __stdcall sub_449260(int a1) { int result; // eax@1 int v2; // edi@3 int v3; // eax@3 result = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1); if ( (_BYTE)result != 3 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3492))(a1); if ( (_BYTE)result ) { v2 = *(_DWORD *)a1; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3480))(a1); result = (*(int (__thiscall **)(int, int))(v2 + 3472))(a1, v3); } } return result; } //----- (004492B0) -------------------------------------------------------- int __thiscall sub_4492B0(void *this) { int v1; // esi@1 v1 = (int)this; sub_6432E0((int)((char *)this + 4)); *(_DWORD *)v1 = off_6AA3FC; memset32((void *)(v1 + 67672), v1 + 68276, 0x97u); sub_6432E0(v1 + 68412); memset32((void *)(v1 + 136080), v1 + 136684, 0x97u); *(_DWORD *)(v1 + 68408) = off_6AA4BC; sub_6432E0(v1 + 136820); memset32((void *)(v1 + 204488), v1 + 205092, 0x97u); *(_DWORD *)(v1 + 136816) = off_6AA51C; sub_6432E0(v1 + 205228); memset32((void *)(v1 + 272896), v1 + 273500, 0x97u); *(_DWORD *)(v1 + 205224) = off_6AA57C; sub_6432E0(v1 + 273636); memset32((void *)(v1 + 341304), v1 + 341908, 0x97u); *(_DWORD *)(v1 + 273632) = off_6AA5DC; sub_6432E0(v1 + 342044); memset32((void *)(v1 + 409712), v1 + 410316, 0x97u); *(_DWORD *)(v1 + 342040) = off_6AA63C; sub_6432E0(v1 + 410452); memset32((void *)(v1 + 478120), v1 + 478724, 0x97u); *(_DWORD *)(v1 + 410448) = off_6AA69C; sub_6432E0(v1 + 478860); memset32((void *)(v1 + 546528), v1 + 547132, 0x97u); *(_DWORD *)(v1 + 478856) = off_6AA6FC; sub_6432E0(v1 + 547268); memset32((void *)(v1 + 614936), v1 + 615540, 0x97u); *(_DWORD *)(v1 + 547264) = off_6AA75C; sub_6432E0(v1 + 615676); memset32((void *)(v1 + 683344), v1 + 683948, 0x97u); *(_DWORD *)(v1 + 615672) = off_6AA7BC; sub_6432E0(v1 + 684084); memset32((void *)(v1 + 751752), v1 + 752356, 0x97u); *(_DWORD *)(v1 + 684080) = off_6AA81C; sub_6432E0(v1 + 752492); memset32((void *)(v1 + 820160), v1 + 820764, 0x97u); *(_DWORD *)(v1 + 752488) = off_6AA87C; sub_6432E0(v1 + 820900); memset32((void *)(v1 + 888568), v1 + 889172, 0x97u); *(_DWORD *)(v1 + 820896) = off_6AA8DC; sub_6432E0(v1 + 889308); memset32((void *)(v1 + 956976), v1 + 957580, 0x97u); *(_DWORD *)(v1 + 889304) = off_6AA93C; sub_6432E0(v1 + 957716); memset32((void *)(v1 + 1025384), v1 + 1025988, 0x97u); *(_DWORD *)(v1 + 957712) = off_6AA99C; sub_6432E0(v1 + 1026124); memset32((void *)(v1 + 1093792), v1 + 1094396, 0x97u); *(_DWORD *)(v1 + 1026120) = off_6AA9FC; sub_6432E0(v1 + 1094532); memset32((void *)(v1 + 1162200), v1 + 1162804, 0x97u); *(_DWORD *)(v1 + 1094528) = off_6AAA5C; sub_6432E0(v1 + 1162940); memset32((void *)(v1 + 1230608), v1 + 1231212, 0x97u); *(_DWORD *)(v1 + 1162936) = off_6AAABC; sub_6432E0(v1 + 1231348); memset32((void *)(v1 + 1299016), v1 + 1299620, 0x97u); *(_DWORD *)(v1 + 1231344) = off_6AAB1C; sub_6432E0(v1 + 1299756); memset32((void *)(v1 + 1367424), v1 + 1368028, 0x97u); *(_DWORD *)(v1 + 1299752) = off_6AAB7C; sub_6432E0(v1 + 1368164); memset32((void *)(v1 + 1435832), v1 + 1436436, 0x97u); *(_DWORD *)(v1 + 1368160) = off_6AABDC; sub_6432E0(v1 + 1436572); memset32((void *)(v1 + 1504240), v1 + 1504844, 0x97u); *(_DWORD *)(v1 + 1436568) = off_6AAC3C; sub_6432E0(v1 + 1504980); memset32((void *)(v1 + 1572648), v1 + 1573252, 0x97u); *(_DWORD *)(v1 + 1504976) = off_6AAC9C; sub_6432E0(v1 + 1573388); memset32((void *)(v1 + 1641056), v1 + 1641660, 0x97u); *(_DWORD *)(v1 + 1573384) = off_6AACFC; sub_6432E0(v1 + 1641796); memset32((void *)(v1 + 1709464), v1 + 1710068, 0x97u); *(_DWORD *)(v1 + 1641792) = off_6AAD5C; sub_6432E0(v1 + 1710204); memset32((void *)(v1 + 1777872), v1 + 1778476, 0x97u); *(_DWORD *)(v1 + 1710200) = off_6AADBC; sub_6432E0(v1 + 1778612); memset32((void *)(v1 + 1846280), v1 + 1846884, 0x97u); *(_DWORD *)(v1 + 1778608) = off_6AAE1C; sub_6432E0(v1 + 1847020); memset32((void *)(v1 + 1914688), v1 + 1915292, 0x97u); *(_DWORD *)(v1 + 1847016) = off_6AAE7C; sub_6432E0(v1 + 1915428); memset32((void *)(v1 + 1983096), v1 + 1983700, 0x97u); *(_DWORD *)(v1 + 1915424) = off_6AA45C; memset32((void *)(v1 + 1983832), v1, 0x40u); *(_DWORD *)(v1 + 1983840) = v1 + 136816; *(_DWORD *)(v1 + 1983844) = v1 + 205224; *(_DWORD *)(v1 + 1983848) = v1 + 273632; *(_DWORD *)(v1 + 1983852) = v1 + 342040; *(_DWORD *)(v1 + 1983856) = v1 + 410448; *(_DWORD *)(v1 + 1983860) = v1 + 478856; *(_DWORD *)(v1 + 1983864) = v1 + 547264; *(_DWORD *)(v1 + 1983868) = v1 + 615672; *(_DWORD *)(v1 + 1983872) = v1 + 684080; *(_DWORD *)(v1 + 1983876) = v1 + 752488; *(_DWORD *)(v1 + 1983880) = v1 + 820896; *(_DWORD *)(v1 + 1983884) = v1 + 889304; *(_DWORD *)(v1 + 1983888) = v1 + 957712; *(_DWORD *)(v1 + 1983892) = v1 + 1026120; *(_DWORD *)(v1 + 1983896) = v1 + 1094528; *(_DWORD *)(v1 + 1983900) = v1 + 1162936; *(_DWORD *)(v1 + 1983904) = v1 + 1231344; *(_DWORD *)(v1 + 1983908) = v1 + 1299752; *(_DWORD *)(v1 + 1983912) = v1 + 1368160; *(_DWORD *)(v1 + 1983916) = v1 + 1436568; *(_DWORD *)(v1 + 1983920) = v1 + 1504976; *(_DWORD *)(v1 + 1983924) = v1 + 1573384; *(_DWORD *)(v1 + 1983928) = v1 + 1641792; *(_DWORD *)(v1 + 1983932) = v1 + 1710200; *(_DWORD *)(v1 + 1983936) = v1 + 1778608; *(_DWORD *)(v1 + 1983940) = v1 + 1847016; *(_DWORD *)(v1 + 1983836) = v1 + 68408; *(_DWORD *)(v1 + 1983944) = v1 + 1915424; return v1; } // 6AA3FC: using guessed type int (__stdcall *off_6AA3FC[10])(int, int); // 6AA45C: using guessed type int (__stdcall *off_6AA45C[10])(int, int); // 6AA4BC: using guessed type int (__stdcall *off_6AA4BC[10])(int, int); // 6AA51C: using guessed type int (__stdcall *off_6AA51C[10])(int, int); // 6AA57C: using guessed type int (__stdcall *off_6AA57C[10])(int, int); // 6AA5DC: using guessed type int (__stdcall *off_6AA5DC[10])(int, int); // 6AA63C: using guessed type int (__stdcall *off_6AA63C[10])(int, int); // 6AA69C: using guessed type int (__stdcall *off_6AA69C[10])(int, int); // 6AA6FC: using guessed type int (__stdcall *off_6AA6FC[10])(int, int); // 6AA75C: using guessed type int (__stdcall *off_6AA75C[10])(int, int); // 6AA7BC: using guessed type int (__stdcall *off_6AA7BC[10])(int, int); // 6AA81C: using guessed type int (__stdcall *off_6AA81C[10])(int, int); // 6AA87C: using guessed type int (__stdcall *off_6AA87C[10])(int, int); // 6AA8DC: using guessed type int (__stdcall *off_6AA8DC[10])(int, int); // 6AA93C: using guessed type int (__stdcall *off_6AA93C[10])(int, int); // 6AA99C: using guessed type int (__stdcall *off_6AA99C[10])(int, int); // 6AA9FC: using guessed type int (__stdcall *off_6AA9FC[10])(int, int); // 6AAA5C: using guessed type int (__stdcall *off_6AAA5C[10])(int, int); // 6AAABC: using guessed type int (__stdcall *off_6AAABC[10])(int, int); // 6AAB1C: using guessed type int (__stdcall *off_6AAB1C[10])(int, int); // 6AAB7C: using guessed type int (__stdcall *off_6AAB7C[10])(int, int); // 6AABDC: using guessed type int (__stdcall *off_6AABDC[10])(int, int); // 6AAC3C: using guessed type int (__stdcall *off_6AAC3C[10])(int, int); // 6AAC9C: using guessed type int (__stdcall *off_6AAC9C[10])(int, int); // 6AACFC: using guessed type int (__stdcall *off_6AACFC[10])(int, int); // 6AAD5C: using guessed type int (__stdcall *off_6AAD5C[10])(int, int); // 6AADBC: using guessed type int (__stdcall *off_6AADBC[10])(int, int); // 6AAE1C: using guessed type int (__stdcall *off_6AAE1C[10])(int, int); // 6AAE7C: using guessed type int (__stdcall *off_6AAE7C[10])(int, int); //----- (00449940) -------------------------------------------------------- void __thiscall sub_449940(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 1915424) = off_6AA3FC; sub_643080((void *)(this + 1915428)); *(_DWORD *)(v1 + 1847016) = off_6AA3FC; sub_643080((void *)(v1 + 1847020)); *(_DWORD *)(v1 + 1778608) = off_6AA3FC; sub_643080((void *)(v1 + 1778612)); *(_DWORD *)(v1 + 1710200) = off_6AA3FC; sub_643080((void *)(v1 + 1710204)); *(_DWORD *)(v1 + 1641792) = off_6AA3FC; sub_643080((void *)(v1 + 1641796)); *(_DWORD *)(v1 + 1573384) = off_6AA3FC; sub_643080((void *)(v1 + 1573388)); *(_DWORD *)(v1 + 1504976) = off_6AA3FC; sub_643080((void *)(v1 + 1504980)); *(_DWORD *)(v1 + 1436568) = off_6AA3FC; sub_643080((void *)(v1 + 1436572)); *(_DWORD *)(v1 + 1368160) = off_6AA3FC; sub_643080((void *)(v1 + 1368164)); *(_DWORD *)(v1 + 1299752) = off_6AA3FC; sub_643080((void *)(v1 + 1299756)); *(_DWORD *)(v1 + 1231344) = off_6AA3FC; sub_643080((void *)(v1 + 1231348)); *(_DWORD *)(v1 + 1162936) = off_6AA3FC; sub_643080((void *)(v1 + 1162940)); *(_DWORD *)(v1 + 1094528) = off_6AA3FC; sub_643080((void *)(v1 + 1094532)); *(_DWORD *)(v1 + 1026120) = off_6AA3FC; sub_643080((void *)(v1 + 1026124)); *(_DWORD *)(v1 + 957712) = off_6AA3FC; sub_643080((void *)(v1 + 957716)); *(_DWORD *)(v1 + 889304) = off_6AA3FC; sub_643080((void *)(v1 + 889308)); *(_DWORD *)(v1 + 820896) = off_6AA3FC; sub_643080((void *)(v1 + 820900)); *(_DWORD *)(v1 + 752488) = off_6AA3FC; sub_643080((void *)(v1 + 752492)); *(_DWORD *)(v1 + 684080) = off_6AA3FC; sub_643080((void *)(v1 + 684084)); *(_DWORD *)(v1 + 615672) = off_6AA3FC; sub_643080((void *)(v1 + 615676)); *(_DWORD *)(v1 + 547264) = off_6AA3FC; sub_643080((void *)(v1 + 547268)); *(_DWORD *)(v1 + 478856) = off_6AA3FC; sub_643080((void *)(v1 + 478860)); *(_DWORD *)(v1 + 410448) = off_6AA3FC; sub_643080((void *)(v1 + 410452)); *(_DWORD *)(v1 + 342040) = off_6AA3FC; sub_643080((void *)(v1 + 342044)); *(_DWORD *)(v1 + 273632) = off_6AA3FC; sub_643080((void *)(v1 + 273636)); *(_DWORD *)(v1 + 205224) = off_6AA3FC; sub_643080((void *)(v1 + 205228)); *(_DWORD *)(v1 + 136816) = off_6AA3FC; sub_643080((void *)(v1 + 136820)); *(_DWORD *)(v1 + 68408) = off_6AA3FC; sub_643080((void *)(v1 + 68412)); *(_DWORD *)v1 = off_6AA3FC; sub_643080((void *)(v1 + 4)); } // 6AA3FC: using guessed type int (__stdcall *off_6AA3FC[10])(int, int); //----- (00449BE0) -------------------------------------------------------- int __thiscall sub_449BE0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ecx@1 int v5; // edx@1 int v6; // eax@1 void *v7; // edi@1 int v8; // eax@2 int v9; // esi@4 int v10; // eax@5 int v12; // [sp-24h] [bp-F4h]@5 int v13; // [sp-20h] [bp-F0h]@5 int v14; // [sp-1Ch] [bp-ECh]@5 int v15; // [sp-18h] [bp-E8h]@5 int v16; // [sp-14h] [bp-E4h]@5 const char *v17; // [sp-10h] [bp-E0h]@5 int v18; // [sp-Ch] [bp-DCh]@5 int v19; // [sp-8h] [bp-D8h]@5 unsigned int v20; // [sp-4h] [bp-D4h]@1 int *v21; // [sp+Ch] [bp-C4h]@5 int v22; // [sp+10h] [bp-C0h]@1 int v23; // [sp+14h] [bp-BCh]@1 void *v24; // [sp+18h] [bp-B8h]@1 char v25; // [sp+1Fh] [bp-B1h]@2 char v26; // [sp+20h] [bp-B0h]@1 int v27; // [sp+A0h] [bp-30h]@1 int v28; // [sp+A4h] [bp-2Ch]@1 int v29; // [sp+A8h] [bp-28h]@1 int v30; // [sp+ACh] [bp-24h]@1 char v31; // [sp+B0h] [bp-20h]@1 unsigned int v32; // [sp+C0h] [bp-10h]@1 int v33; // [sp+CCh] [bp-4h]@1 int v34; // [sp+D0h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v20 = (unsigned int)&v34 ^ __security_cookie; v3 = this; v24 = this; v23 = a3; v22 = (int)"CharClass::cc_Load"; sub_4675D0((int)&unk_D020420, (int)"CharClass::cc_Load"); dword_7508B8[dword_750CB8] = (int)"CharClass::cc_Load"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 4); v27 = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 12); v28 = v4; v29 = v5; v33 = 0; v30 = v6; v31 = 0; sprintf(&v26, "../9Data/Shine/World/%s/%s.txt", &v27, a3); v7 = (char *)v3 + 4; if ( !sub_6434A0(v7, &v26) ) { sprintf(&v26, "../9Data/Shine/World/%s.txt", a3); v25 = sub_6434A0(v7, &v26); v8 = sub_642790(v7); if ( !v25 ) { sub_639100(&unk_86DDD8, (int)"CharClass::cc_Load : Error in read", v8); loc_6391B0(a3); } } v9 = 1; v24 = (char *)v24 + 67676; do { v19 = 0; v18 = v9; v17 = "Level"; v21 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; strncpy((char *)&v12, "Param", 0x14u); v10 = sub_644B70(v7, v12, v13, v14, v15, v16, v17, v18, v19); *(_DWORD *)v24 = v10; if ( v10 == 0 ) { sub_639100(&unk_86DDD8, (int)"CharClass::cc_Load : Error in level", v9); loc_6391B0(v23); } v24 = (char *)v24 + 4; ++v9; } while ( (unsigned int)v9 < 0x97 ); --dword_750CB8; v33 = -1; return sub_467660((int)&unk_D020420, (int)"CharClass::cc_Load"); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00449DD0) -------------------------------------------------------- int __thiscall sub_449DD0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CharClassManager::ccm_Load"); dword_7508B8[dword_750CB8] = (int)"CharClassManager::ccm_Load"; dword_750AB8[dword_750CB8++] = -1; sub_449BE0((char *)v2 + 68408, a2, (int)"ParamFighterServer"); sub_449BE0((char *)v2 + 136816, a2, (int)"ParamCleverFighterServer"); sub_449BE0((char *)v2 + 205224, a2, (int)"ParamWarriorServer"); sub_449BE0((char *)v2 + 273632, a2, (int)"ParamGladiatorServer"); sub_449BE0((char *)v2 + 342040, a2, (int)"ParamKnightServer"); sub_449BE0((char *)v2 + 410448, a2, (int)"ParamClericServer"); sub_449BE0((char *)v2 + 478856, a2, (int)"ParamHighClericServer"); sub_449BE0((char *)v2 + 547264, a2, (int)"ParamPaladinServer"); sub_449BE0((char *)v2 + 615672, a2, (int)"ParamHolyKnightServer"); sub_449BE0((char *)v2 + 684080, a2, (int)"ParamGuardianServer"); sub_449BE0((char *)v2 + 752488, a2, (int)"ParamArcherServer"); sub_449BE0((char *)v2 + 820896, a2, (int)"ParamHawkArcherServer"); sub_449BE0((char *)v2 + 889304, a2, (int)"ParamScoutServer"); sub_449BE0((char *)v2 + 957712, a2, (int)"ParamSharpShooterServer"); sub_449BE0((char *)v2 + 1026120, a2, (int)"ParamRangerServer"); sub_449BE0((char *)v2 + 1094528, a2, (int)"ParamMageServer"); sub_449BE0((char *)v2 + 1162936, a2, (int)"ParamWizMageServer"); sub_449BE0((char *)v2 + 1231344, a2, (int)"ParamEnchanterServer"); sub_449BE0((char *)v2 + 1299752, a2, (int)"ParamWarrockServer"); sub_449BE0((char *)v2 + 1368160, a2, (int)"ParamWizardServer"); sub_449BE0((char *)v2 + 1436568, a2, (int)"ParamJokerServer"); sub_449BE0((char *)v2 + 1504976, a2, (int)"ParamChaserServer"); sub_449BE0((char *)v2 + 1573384, a2, (int)"ParamCruelServer"); sub_449BE0((char *)v2 + 1641792, a2, (int)"ParamCloserServer"); sub_449BE0((char *)v2 + 1710200, a2, (int)"ParamAssassinServer"); sub_449BE0((char *)v2 + 1778608, a2, (int)"ParamSentinelServer"); sub_449BE0((char *)v2 + 1847016, a2, (int)"ParamSaviorServer"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharClassManager::ccm_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044A040) -------------------------------------------------------- __int16 __cdecl sub_44A040() { void *v1; // [sp+0h] [bp-20h]@1 int v2; // [sp+4h] [bp-1Ch]@1 int v3; // [sp+8h] [bp-18h]@1 int v4; // [sp+Ch] [bp-14h]@1 int v5; // [sp+10h] [bp-10h]@1 unsigned int v6; // [sp+14h] [bp-Ch]@1 int v7; // [sp+18h] [bp-8h]@1 void **v8; // [sp+1Ch] [bp-4h]@1 v8 = &v1; v6 = 15; v5 = 0; LOBYTE(v1) = 0; sub_4241C0((int)&v1, "SenMaxLP", 8u); return sub_62BD30((int)&unk_1325CFB8, v1, v2, v3, v4, v5, v6, v7); } //----- (0044A080) -------------------------------------------------------- __int16 __cdecl sub_44A080() { void *v1; // [sp+0h] [bp-20h]@1 int v2; // [sp+4h] [bp-1Ch]@1 int v3; // [sp+8h] [bp-18h]@1 int v4; // [sp+Ch] [bp-14h]@1 int v5; // [sp+10h] [bp-10h]@1 unsigned int v6; // [sp+14h] [bp-Ch]@1 int v7; // [sp+18h] [bp-8h]@1 void **v8; // [sp+1Ch] [bp-4h]@1 v8 = &v1; v6 = 15; v5 = 0; LOBYTE(v1) = 0; sub_4241C0((int)&v1, "SenSPRecover_Amount", 0x13u); return sub_62BD30((int)&unk_1325CFB8, v1, v2, v3, v4, v5, v6, v7); } //----- (0044A0C0) -------------------------------------------------------- int __cdecl sub_44A0C0() { void *v1; // [sp+0h] [bp-20h]@1 int v2; // [sp+4h] [bp-1Ch]@1 int v3; // [sp+8h] [bp-18h]@1 int v4; // [sp+Ch] [bp-14h]@1 int v5; // [sp+10h] [bp-10h]@1 unsigned int v6; // [sp+14h] [bp-Ch]@1 int v7; // [sp+18h] [bp-8h]@1 void **v8; // [sp+1Ch] [bp-4h]@1 v8 = &v1; v6 = 15; v5 = 0; LOBYTE(v1) = 0; sub_4241C0((int)&v1, "SenSPRecover_Time", 0x11u); return 1000 * (unsigned __int16)sub_62BD30((int)&unk_1325CFB8, v1, v2, v3, v4, v5, v6, v7); } //----- (0044A100) -------------------------------------------------------- bool __thiscall sub_44A100(int this, int a2) { return *(_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); } //----- (0044A140) -------------------------------------------------------- void *__thiscall sub_44A140(void *this, unsigned __int8 a2) { void *result; // eax@1 result = this; if ( a2 < 0x40u ) result = (void *)*((_DWORD *)this + a2 + 495958); return result; } //----- (0044A160) -------------------------------------------------------- FILE *__stdcall sub_44A160(int a1) { return sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SetRegistNumber", 0); } //----- (0044A180) -------------------------------------------------------- int __thiscall sub_44A180(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 9664) = a2; return result; } //----- (0044A190) -------------------------------------------------------- int __thiscall sub_44A190(int this) { return *(_BYTE *)(this + 32748) + *(_BYTE *)(this + 32749) + *(_BYTE *)(this + 32750) + *(_BYTE *)(this + 32751) + *(_BYTE *)(this + 32752); } //----- (0044A1C0) -------------------------------------------------------- int __thiscall sub_44A1C0(void *this, int a2) { void *v2; // esi@1 int result; // eax@2 int v4; // edi@3 unsigned int v5; // ecx@5 int v6; // ecx@6 v2 = this; if ( a2 ) { v4 = dword_14D129E8; result = _time32(0); if ( *(_DWORD *)a2 ) { result = v4 + 10 * *(_DWORD *)a2; *((_DWORD *)v2 + 40371) = result; *((_DWORD *)v2 + 40372) = result + 10 * *(_DWORD *)(a2 + 4); *((_DWORD *)v2 + 40373) = 1; } else { *((_DWORD *)v2 + 40371) = v4; v5 = *(_DWORD *)(a2 + 4); if ( v5 <= result ) { *((_DWORD *)v2 + 40372) = v4; } else { v6 = v5 - result; result = 5 * v6; *((_DWORD *)v2 + 40372) = v4 + 10 * v6; *((_DWORD *)v2 + 40373) = 1; } } } else { result = (int)sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_CharSpammerData : data is NULL", 0); } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0044A270) -------------------------------------------------------- int __stdcall sub_44A270(int a1, int a2) { int v2; // edi@1 int v3; // eax@3 _BYTE *v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_REGISTNUMBER_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_REGISTNUMBER_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 748))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_REGISTNUMBER_ACK : Invalid player", 0); v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)(a1 + 18); *((_DWORD *)v4 + 1) = *(_DWORD *)(a1 + 22); *((_DWORD *)v4 + 2) = *(_DWORD *)(a1 + 26); *((_DWORD *)v4 + 3) = *(_DWORD *)(a1 + 30); *((_DWORD *)v4 + 4) = *(_DWORD *)(a1 + 34); v4[20] = 0; sub_644DD0((int)&unk_86F128, "NC_CHAR_REGISTNUMBER_ACK : Invalid Player [CharID=%s]", v4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_REGISTNUMBER_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0044A3A0) -------------------------------------------------------- int __stdcall sub_44A3A0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1652))(v2, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD : Invalid player", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044A490) -------------------------------------------------------- int __thiscall sub_44A490(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); *(_BYTE *)(this + 24) = *(_BYTE *)(a2 + 24); *(_BYTE *)(this + 25) = *(_BYTE *)(a2 + 25); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_WORD *)(this + 34) = *(_WORD *)(a2 + 34); *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); *(_WORD *)(this + 38) = *(_WORD *)(a2 + 38); *(_WORD *)(this + 40) = *(_WORD *)(a2 + 40); *(_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); *(_DWORD *)(this + 78) = *(_DWORD *)(a2 + 78); *(_DWORD *)(this + 82) = *(_DWORD *)(a2 + 82); *(_BYTE *)(this + 86) = *(_BYTE *)(a2 + 86); *(_DWORD *)(this + 87) = *(_DWORD *)(a2 + 87); *(_WORD *)(this + 91) = *(_WORD *)(a2 + 91); *(_BYTE *)(this + 93) = *(_BYTE *)(a2 + 93); *(_DWORD *)(this + 94) = *(_DWORD *)(a2 + 94); *(_WORD *)(this + 98) = *(_WORD *)(a2 + 98); *(_BYTE *)(this + 100) = *(_BYTE *)(a2 + 100); *(_DWORD *)(this + 101) = *(_DWORD *)(a2 + 101); return result; } //----- (0044A580) -------------------------------------------------------- int __stdcall sub_44A580(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SHAPE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SHAPE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1656))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SHAPE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SHAPE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044A690) -------------------------------------------------------- int __thiscall sub_44A690(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charsharpdata"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_charsharpdata"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v2 + 32766) = *(_DWORD *)a2; v3 = off_849C18; *(_WORD *)off_849C18 = 4153; *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)a2; if ( sub_4C81E0(&off_849C18, 6) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charsharpdata : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charsharpdata"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044A790) -------------------------------------------------------- int __stdcall sub_44A790(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DOING_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DOING_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1660))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DOING_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044A8A0) -------------------------------------------------------- int __stdcall sub_44A8A0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE__DONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE__DONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1664))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE__DONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044A9B0) -------------------------------------------------------- int __stdcall sub_44A9B0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1668))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044AAC0) -------------------------------------------------------- int __stdcall sub_44AAC0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1672))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_REPEAT_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044ABD0) -------------------------------------------------------- int __thiscall sub_44ABD0(void *this, int a2) { void *v2; // edi@1 signed int v3; // ebx@1 char *v4; // eax@1 int v5; // esi@2 void *v6; // edx@2 int v7; // esi@6 int v8; // eax@8 void *v10; // [sp+14h] [bp-10h]@1 int i; // [sp+2Ch] [bp+8h]@2 v2 = this; v10 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDoing"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDoing"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; sub_62C450((int)((char *)v2 + 82048), a2); v4 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 4154; *(_DWORD *)v4 = *(_DWORD *)a2; *((_WORD *)v4 + 2) = *(_WORD *)(a2 + 4); if ( (unsigned __int8)v4[5] > 0u ) { v5 = a2 - (_DWORD)v4; v6 = v4 + 6; for ( i = a2 - (_DWORD)v4; ; v5 = i ) { memcpy(v6, (char *)v6 + v5, 0x20u); ++v3; v6 = (char *)v6 + 32; if ( v3 >= (unsigned __int8)v4[5] ) break; } v2 = v10; } v7 = 32 * (unsigned __int8)v4[5] + 8; if ( sub_4C81E0(&off_849C18, 32 * (unsigned __int8)v4[5] + 8) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDoing : Packet Too Long", v7); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDoing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044AD10) -------------------------------------------------------- int __thiscall sub_44AD10(void *this, int a2) { void *v2; // edi@1 char *v3; // ecx@1 signed int v4; // edx@1 int v5; // eax@2 int v6; // esi@2 int v7; // esi@4 int v8; // eax@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDone"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDone"; dword_750AB8[dword_750CB8++] = -1; sub_62C530((char *)v2 + 82048, a2); v3 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 4155; *(_DWORD *)v3 = *(_DWORD *)a2; *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 8); v4 = 0; if ( *((_WORD *)v3 + 4) > 0u ) { v5 = (int)(v3 + 12); v6 = a2 - (_DWORD)v3; do { *(_DWORD *)v5 = *(_DWORD *)(v6 + v5); *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 + v5 + 4); *(_WORD *)(v5 + 8) = *(_WORD *)(v6 + v5 + 8); ++v4; v5 += 10; } while ( v4 < *((_WORD *)v3 + 4) ); } v7 = 10 * *((_WORD *)v3 + 4) + 14; if ( sub_4C81E0(&off_849C18, 10 * *((_WORD *)v3 + 4) + 14) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDone : Packet Too Long", v7); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestDone"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044AE50) -------------------------------------------------------- int __thiscall sub_44AE50(void *this, int a2) { void *v2; // edi@1 void *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; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead"; dword_750AB8[dword_750CB8++] = -1; sub_62C600((char *)v2 + 82048, a2); v3 = off_849C18; *(_WORD *)off_849C18 = 4302; v4 = (int)((char *)v3 + 2); *(_DWORD *)v4 = *(_DWORD *)a2; *(_WORD *)(v4 + 4) = *(_WORD *)(a2 + 4); v5 = 0; if ( *(_WORD *)(v4 + 4) > 0u ) { v6 = v4 + 6; do { *(_WORD *)v6 = *(_WORD *)(a2 - v4 + v6); ++v5; v6 += 2; } while ( v5 < *(_WORD *)(v4 + 4) ); } v7 = 2 * *(_WORD *)(v4 + 4) + 8; if ( sub_4C81E0(&off_849C18, 2 * *(_WORD *)(v4 + 4) + 8) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead : Packet Too Long", v7); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044AF80) -------------------------------------------------------- int __thiscall sub_44AF80(void *this, int a2) { void *v2; // edi@1 signed int v3; // ebx@1 void *v4; // eax@1 int v5; // eax@1 unsigned __int16 v6; // dx@1 int v7; // esi@2 void *v8; // edx@2 int v9; // esi@6 int v10; // eax@8 void *v12; // [sp+14h] [bp-10h]@1 int i; // [sp+2Ch] [bp+8h]@2 v2 = this; v12 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; sub_62C6D0((char *)v2 + 82048, a2); v4 = off_849C18; *(_WORD *)off_849C18 = 4311; v5 = (int)((char *)v4 + 2); *(_DWORD *)v5 = *(_DWORD *)a2; v6 = *(_WORD *)(a2 + 4); *(_WORD *)(v5 + 4) = v6; if ( v6 > 0u ) { v7 = a2 - v5; v8 = (void *)(v5 + 6); for ( i = a2 - v5; ; v7 = i ) { memcpy(v8, (char *)v8 + v7, 0x20u); ++v3; v8 = (char *)v8 + 32; if ( v3 >= *(_WORD *)(v5 + 4) ) break; } v2 = v12; } v9 = 32 * *(_WORD *)(v5 + 4) + 8; if ( sub_4C81E0(&off_849C18, 32 * *(_WORD *)(v5 + 4) + 8) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRepeat : Packet Too Long", v9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreQuestRead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B0C0) -------------------------------------------------------- int __stdcall sub_44B0C0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1676))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B1D0) -------------------------------------------------------- int __stdcall sub_44B1D0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_GUILD_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_GUILD_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2076))(v2, *(_DWORD *)(a1 + 8)); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_GUILD_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B2E0) -------------------------------------------------------- int __stdcall sub_44B2E0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_GUILD_ACADEMY_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_GUILD_ACADEMY_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2144))(v2, *(_DWORD *)(a1 + 8)); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_GUILD_ACADEMY_ZONE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_GUILD_ACADEMY_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B3F0) -------------------------------------------------------- int __stdcall sub_44B3F0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1688))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B500) -------------------------------------------------------- int __stdcall sub_44B500(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARGEDBUFF_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARGEDBUFF_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1684))(v2, a1 + 8); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1404))(v2); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARGEDBUFF_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARGEDBUFF_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B620) -------------------------------------------------------- int __stdcall sub_44B620(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SKILL_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SKILL_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1680))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SKILL_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SKILL_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044B730) -------------------------------------------------------- int __thiscall sub_44B730(void *this, int a2) { void *v2; // ebx@1 unsigned __int8 v3; // al@1 int v4; // eax@2 void *v5; // esi@5 int v6; // eax@5 int v7; // eax@8 int v8; // ecx@8 int v9; // eax@11 int v10; // edi@14 int v11; // eax@16 int v13; // [sp+14h] [bp-10h]@5 signed int v14; // [sp+2Ch] [bp+8h]@11 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charskilldata"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_charskilldata"; dword_750AB8[dword_750CB8++] = -1; v3 = (*((_BYTE *)v2 + 32766) >> 2) & 0x1F; if ( v3 >= 0x40u ) v4 = (int)&unk_8BB3B0; else v4 = dword_A9F908[v3]; *((_DWORD *)v2 + 1029) = v4; (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); sub_448B30((char *)v2 + 84388, a2); if ( *((_DWORD *)v2 + 21101) == *(_WORD *)(a2 + 5) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 4157; v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1720))(v2); v6 = sub_444A00((char *)v2 + 84388); if ( v13 >= v6 ) { *((_BYTE *)v5 + 2) = v13 - v6; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charskilldata : Too many empow", 0); *((_BYTE *)v5 + 2) = 0; } *(_DWORD *)((char *)v5 + 6) = *(_DWORD *)a2; v7 = *((_DWORD *)v2 + 21101); v8 = 0; *((_WORD *)v5 + 2) = v7; *((_BYTE *)v5 + 3) = 1; if ( (unsigned __int16)v7 > 0u ) { while ( 1 ) { v9 = sub_444DF0((char *)v2 + 84388, (int)((char *)v5 + 6), v8, (int)((char *)v5 + 4)); v14 = v9; if ( v9 <= 0 ) break; if ( v9 >= *((_WORD *)v5 + 2) ) *((_BYTE *)v5 + 3) |= 2u; v10 = 4 * (3 * *((_WORD *)v5 + 5) + 3); if ( sub_4C81E0(&off_849C18, v10) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charskilldata : Packet Too Long", v10); } *((_BYTE *)v5 + 3) = *((_BYTE *)v5 + 3) & 2 ^ ((*((_BYTE *)v5 + 3) & 0xFC) + 4); if ( v14 >= *((_WORD *)v5 + 2) ) break; v8 = v14; } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charskilldata"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // A9F908: using guessed type int dword_A9F908[]; //----- (0044B920) -------------------------------------------------------- int __stdcall sub_44B920(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_GAME_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_GAME_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1696))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_GAME_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044BA30) -------------------------------------------------------- int __thiscall sub_44BA30(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@1 signed __int16 v5; // ax@1 void *v6; // eax@3 int v7; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Storegamedata"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Storegamedata"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 8196) = *(_DWORD *)a2; v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 32788) = *(_BYTE *)(a2 + 4); v4 = (*(int (__thiscall **)(void *))(v3 + 836))(v2); v5 = sub_4CC180(v4); if ( *(_WORD *)((char *)v2 + 32785) != v5 ) *(_WORD *)((char *)v2 + 32785) = v5; v6 = off_849C18; *(_WORD *)off_849C18 = 4168; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)((char *)v2 + 32785); if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Storegamedata : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Storegamedata"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044BB60) -------------------------------------------------------- int __stdcall sub_44BB60(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1692))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044BC70) -------------------------------------------------------- int __stdcall sub_44BC70(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1700))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044BD40) -------------------------------------------------------- int __thiscall sub_44BD40(void *this, int a2) { void *v2; // ebx@1 void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 int v6; // ecx@1 int v7; // eax@1 unsigned __int8 v8; // cl@1 int v9; // eax@5 char v10; // al@6 char v11; // cl@7 int v13; // [sp+14h] [bp-10h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_accountstoragefill"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_accountstoragefill"; dword_750AB8[dword_750CB8++] = -1; sub_640350((char *)v2 + 85744, a2 + 16, a2 + 17, 6); *((_DWORD *)v2 + 21434) = *(_DWORD *)(a2 + 8); *((_DWORD *)v2 + 21435) = *(_DWORD *)(a2 + 12); v3 = off_849C18; *(_WORD *)off_849C18 = 15368; *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)(a2 + 8); *(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(a2 + 12); *((_BYTE *)v3 + 10) = 16; *((_BYTE *)v3 + 11) = *(_BYTE *)(a2 + 6); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1388))(v2); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = (int)&byte_85A2C0[256 * v5]; *(_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); *(_BYTE *)(v6 + 20) = 0; v7 = sub_640460( (char *)v2 + 85744, (int)((char *)v3 + 13), (int)((char *)v3 + 14), v6, 36 * *((_BYTE *)v3 + 11), 36 * *((_BYTE *)v3 + 11) + 35); *((_BYTE *)v3 + 12) = *(_BYTE *)(a2 + 7); v8 = *(_BYTE *)(a2 + 16); v13 = v7; if ( *((_BYTE *)v3 + 13) != v8 ) sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", *((_BYTE *)v3 + 13) - v8); if ( sub_4C81E0(&off_849C18, v13 + 14) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v13 + 14); } v10 = *((_BYTE *)v2 + 23824); if ( !(v10 & 0x20) ) { v11 = *(_BYTE *)(a2 + 7); if ( v11 ) { if ( v11 == 1 ) { *((_BYTE *)v2 + 23824) = v10 | 0x20; sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_accountstoragefill : AccountStorage Flag Error", 0); } } else { *((_BYTE *)v2 + 23824) = v10 | 0x10; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_accountstoragefill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0044BF50) -------------------------------------------------------- int __stdcall sub_44BF50(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::wms_NC_CHAR_ZONE_CHESTINFO_CMD"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::wms_NC_CHAR_ZONE_CHESTINFO_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1732))(v2, a1 + 8); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::wms_NC_CHAR_ZONE_CHESTINFO_CMD : Invalid player", 0); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::wms_NC_CHAR_ZONE_CHESTINFO_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C060) -------------------------------------------------------- int __stdcall sub_44C060(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_Getchestinform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_Getchestinform"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_Getchestinform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C0B0) -------------------------------------------------------- int __thiscall sub_44C0B0(void *this, int a2) { void *v2; // esi@1 signed int v3; // ebx@1 int *v4; // edi@2 unsigned int v5; // ecx@5 int v6; // eax@6 int v7; // ecx@6 void *v9; // [sp+18h] [bp-10h]@1 v2 = this; v9 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Getchestinform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Getchestinform"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; sub_438420((int)((char *)v2 + 155582)); if ( *(_WORD *)a2 > 0u ) { v4 = (int *)(a2 + 2); do { if ( (unsigned int)*(_WORD *)v4 < *(_DWORD *)((char *)v9 + 155586) ) { v5 = *(_WORD *)v4; if ( v5 < *(_DWORD *)((char *)v2 + 155586) ) { v6 = (v5 >> 3) + *(_DWORD *)((char *)v2 + 155582); v7 = v5 & 0x80000007; if ( v7 < 0 ) LOBYTE(v7) = ((unsigned __int8)(v7 - 1) | 0xF8) + 1; *(_BYTE *)v6 |= 1 << v7; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_Getchestinform : Too large location", *(_WORD *)v4); } ++v3; v4 = (int *)((char *)v4 + 2); } while ( v3 < *(_WORD *)a2 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Getchestinform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C1C0) -------------------------------------------------------- int __stdcall sub_44C1C0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_GET_CHAT_BLOCK_SPAMMER_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_GET_CHAT_BLOCK_SPAMMER_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2740))(v2, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD : Invalid player", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_GET_CHAT_BLOCK_SPAMMER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C2B0) -------------------------------------------------------- int __stdcall sub_44C2B0(int a1, int a2) { int v2; // esi@1 int v3; // ST04_4@1 void *v4; // eax@1 signed __int16 v5; // ax@1 unsigned __int16 v6; // ST04_2@2 void *v7; // eax@2 void *v8; // edi@2 int v9; // eax@3 unsigned __int16 v10; // ax@7 int v11; // edi@7 signed int v12; // eax@9 char v14; // [sp+Ch] [bp-28h]@3 char v15; // [sp+18h] [bp-1Ch]@3 int v16; // [sp+24h] [bp-10h]@1 int v17; // [sp+30h] [bp-4h]@1 v16 = (int)"WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = *(_DWORD *)(a1 + 2); v17 = 0; v4 = sub_5CB170(); v5 = sub_63A2A0(v4, v3); if ( -1 == v5 ) { v10 = sub_641AC0(&dword_DA230A4, *(_DWORD *)(v2 + 2)); v11 = v10; if ( v10 != -1 ) { if ( (unsigned __int16)v11 < 0xFA0u ) { v12 = sub_641BE0(&dword_DA230A4, v11, *(_DWORD *)(v2 + 2)); if ( v12 >= 0 ) { if ( *(_BYTE *)(v2 + 6) == 1 ) sub_641FA0(&dword_DA230A4, v11, *(_DWORD *)(v2 + 2)); else sub_4836B0(dword_DA230A4 + 208 * v11 + 36 * v12 + 12, v2 + 27); } } } } else { v6 = v5; v7 = sub_5CB170(); v8 = (void *)sub_63A0C0(v7, v6); if ( v8 ) { sub_63A470(v8, (int)&v15, *(_DWORD *)(v2 + 2)); v9 = sub_639C10(v8, (int)&v14); if ( sub_639F40((int)&v15, v9) ) { if ( *(_BYTE *)(v2 + 6) == 1 ) sub_63A7F0(v8, *(_DWORD *)(v2 + 2), (int)&a1); else sub_63A010((int)&v15, v2 + 27); } } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (0044C440) -------------------------------------------------------- int __thiscall sub_44C440(void *this) { void *v1; // esi@1 void *v2; // ecx@1 int v3; // eax@2 int v4; // edx@2 int v5; // edi@2 int v6; // eax@2 int v7; // edx@2 int v8; // edi@3 int v9; // eax@5 void *v10; // eax@6 int v11; // edi@8 int v12; // eax@10 void *v13; // eax@11 int v14; // edi@13 int v15; // eax@15 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CardCollectionSend"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CardCollectionSend"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 4324; *((_WORD *)v2 + 3) = 0; if ( (*((_DWORD *)v1 + 40396) - *((_DWORD *)v1 + 40395)) / 11 ) { do { v3 = *((_DWORD *)v1 + 40395); v4 = 11 * *((_WORD *)v2 + 3); v5 = *(_DWORD *)(v3 + v4); v6 = v4 + v3; *(_DWORD *)((char *)v2 + v4 + 8) = v5; v7 = (int)((char *)v2 + v4 + 8); *(_DWORD *)(v7 + 4) = *(_DWORD *)(v6 + 4); *(_WORD *)(v7 + 8) = *(_WORD *)(v6 + 8); *(_BYTE *)(v7 + 10) = *(_BYTE *)(v6 + 10); ++*((_WORD *)v2 + 3); } while ( *((_WORD *)v2 + 3) < (unsigned int)((*((_DWORD *)v1 + 40396) - *((_DWORD *)v1 + 40395)) / 11) ); } v8 = 11 * *((_WORD *)v2 + 3) + 8; if ( sub_4C81E0(&off_849C18, 11 * *((_WORD *)v2 + 3) + 8) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CardCollectionSend : Packet Too Long", v8); } v10 = off_849C18; *(_WORD *)off_849C18 = 4327; *((_WORD *)v10 + 3) = 0; if ( (*((_DWORD *)v1 + 40400) - *((_DWORD *)v1 + 40399)) >> 2 ) { do { *((_DWORD *)v10 + *((_WORD *)v10 + 3) + 2) = *(_DWORD *)(4 * *((_WORD *)v10 + 3) + *((_DWORD *)v1 + 40399)); ++*((_WORD *)v10 + 3); } while ( *((_WORD *)v10 + 3) < (unsigned int)((*((_DWORD *)v1 + 40400) - *((_DWORD *)v1 + 40399)) >> 2) ); } v11 = 4 * *((_WORD *)v10 + 3) + 8; if ( sub_4C81E0(&off_849C18, 4 * *((_WORD *)v10 + 3) + 8) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CardCollectionSend : Packet Too Long", v11); } v13 = off_849C18; *(_WORD *)off_849C18 = 4330; *((_WORD *)v13 + 3) = 0; if ( (*((_DWORD *)v1 + 40404) - *((_DWORD *)v1 + 40403)) >> 1 ) { do { *((_WORD *)v13 + *((_WORD *)v13 + 3) + 4) = *(_WORD *)(*((_DWORD *)v1 + 40403) + 2 * *((_WORD *)v13 + 3)); ++*((_WORD *)v13 + 3); } while ( *((_WORD *)v13 + 3) < (unsigned int)((*((_DWORD *)v1 + 40404) - *((_DWORD *)v1 + 40403)) >> 1) ); } v14 = 2 * *((_WORD *)v13 + 3) + 8; if ( sub_4C81E0(&off_849C18, 2 * *((_WORD *)v13 + 3) + 8) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v15 + 12))(v15, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CardCollectionSend : Packet Too Long", v14); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CardCollectionSend"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C700) -------------------------------------------------------- int __stdcall sub_44C700(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3068))(v2, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_CMD : Invalid player", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C7F0) -------------------------------------------------------- int __thiscall sub_44C7F0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollect"; dword_750AB8[dword_750CB8++] = -1; sub_626390((char *)v2 + 161580, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C8A0) -------------------------------------------------------- int __stdcall sub_44C8A0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_BOOKMARK_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_BOOKMARK_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3072))(v2, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_BOOKMARK_CMD : Invalid player", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_BOOKMARK_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044C990) -------------------------------------------------------- int __thiscall sub_44C990(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollectBookMark"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollectBookMark"; dword_750AB8[dword_750CB8++] = -1; sub_626520((char *)v2 + 161596, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollectBookMark"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044CA40) -------------------------------------------------------- int __stdcall sub_44CA40(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_REWARD_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_REWARD_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3076))(v2, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_REWARD_CMD : Invalid player", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CARDCOLLECT_REWARD_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044CB30) -------------------------------------------------------- int __thiscall sub_44CB30(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollectReward"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollectReward"; dword_750AB8[dword_750CB8++] = -1; sub_625C40((char *)v2 + 161612, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardCollectReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044CBE0) -------------------------------------------------------- int __stdcall sub_44CBE0(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_TUTORIAL_INFO_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_TUTORIAL_INFO_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3568))(v2, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_TUTORIAL_INFO_ZONE_CMD - ShineObject Null", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_TUTORIAL_INFO_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044CCB0) -------------------------------------------------------- int __stdcall sub_44CCB0(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int v6; // [sp+28h] [bp+8h]@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHAT_COLOR_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHAT_COLOR_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v4 = v3; if ( v3 ) { v6 = *(_DWORD *)(a1 + 4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 768))(v4) == 1 ) { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHAT_COLOR_CMD : Invalid player Empty", *(_DWORD *)(v2 + 4)); } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3624))(v4, *(_BYTE *)(v2 + 8)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3632))(v4, *(_BYTE *)(v2 + 9)); } } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHAT_COLOR_CMD : Invalid player CharNo", v6); } } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHAT_COLOR_CMD : Invalid player", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHAT_COLOR_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044CDE0) -------------------------------------------------------- int __thiscall sub_44CDE0(void *this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 void *v6; // ebx@1 int v7; // edi@3 int v8; // edi@5 __int16 v9; // ax@5 int v10; // [sp+8h] [bp-78h]@1 char v11; // [sp+Ch] [bp-74h]@5 unsigned int v12; // [sp+7Ch] [bp-4h]@1 int v13; // [sp+80h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; result = a2; v5 = a3; v6 = this; v10 = 0; if ( *(_BYTE *)a2 ) { while ( 1 ) { if ( (unsigned int)*(_WORD *)(v5 + 1) >> 10 != a4 ) goto LABEL_6; v7 = *(_WORD *)(v5 + 1) & 0x3FF; if ( (*(_WORD *)(v5 + 1) & 0x3FF) < (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 8))(v6) ) break; sub_639100(&unk_86DDD8, (int)"ItemSmallBag::isb_Initializetotal : Invalid slot", v7); v5 += *(_BYTE *)v5 + 1; LABEL_7: result = v10 + 1; v10 = result; if ( result >= *(_BYTE *)a2 ) return result; } sub_63D1E0((int)&v11, (int)dword_1508B168, 65535, v5 + 3); v8 = (**(int (__thiscall ***)(void *, int))v6)(v6, *(_WORD *)(v5 + 1) & 0x3FF); sub_63FD60(v8, (int)&v11); v9 = sub_63FD50(v8); *(_DWORD *)(v8 + 16) = sub_63ACA0(dword_1508B168, v9); LABEL_6: v5 += *(_BYTE *)v5 + 1; goto LABEL_7; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0044CEE0) -------------------------------------------------------- int __thiscall sub_44CEE0(void *this, int a2, int a3, __int16 a4) { unsigned int v4; // ST08_4@1 void *v5; // ebx@1 int (__thiscall **v6)(_DWORD, _DWORD); // edx@1 int v7; // esi@1 int v8; // edi@1 int v9; // eax@4 int v10; // ebx@4 __int16 v11; // ax@8 unsigned __int8 v12; // al@8 void *v14; // [sp+18h] [bp-8Ch]@1 int v15; // [sp+1Ch] [bp-88h]@6 int v16; // [sp+20h] [bp-84h]@1 char v17; // [sp+24h] [bp-80h]@6 unsigned int v18; // [sp+94h] [bp-10h]@1 int v19; // [sp+A0h] [bp-4h]@1 int v20; // [sp+A4h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = (unsigned int)&v20 ^ __security_cookie; v5 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ItemSmallBag::isb_FullBufferItem2Client"); dword_7508B8[dword_750CB8] = (int)"ItemSmallBag::isb_FullBufferItem2Client"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a2 = 0; v6 = *(int (__thiscall ***)(_DWORD, _DWORD))v5; v19 = 0; v16 = 0; v7 = a3; v8 = 0; if ( ((int (__thiscall **)(void *, unsigned int))v6)[2](v5, v4) > 0 ) { while ( 1 ) { v9 = (**(int (__thiscall ***)(void *, int))v5)(v5, v16); v10 = v9; if ( v9 ) { if ( sub_63FD50(v9) != -1 ) { sub_63FD90(v10, (int)&v17); *(_WORD *)(v7 + 1) = (a4 << 10) ^ v16 & 0x3FF; v15 = (int)dword_1508B168; if ( *(_DWORD *)(v10 + 16) ) v15 = *(_DWORD *)(v10 + 16); v11 = sub_63FD50(v10); v12 = sub_63D090(&v17, v15, v11, v7 + 3) - (v7 + 3) + 2; *(_BYTE *)v7 = v12; ++*(_BYTE *)a2; v7 += v12 + 1; v8 = v7 - a3; if ( v7 - a3 >= 8000 ) break; } } ++v16; if ( v16 >= (*(int (**)(void))(*(_DWORD *)v14 + 8))() ) break; v5 = v14; } } --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"ItemSmallBag::isb_FullBufferItem2Client"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0044D0A0) -------------------------------------------------------- int __thiscall sub_44D0A0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@2 char v4; // cl@3 int v5; // eax@6 _BYTE *v6; // edi@6 int v7; // eax@6 _BYTE *v8; // eax@6 bool v9; // zf@6 int v10; // edi@30 int v11; // eax@37 int v12; // eax@40 int v13; // edi@40 int v14; // edi@40 int v15; // eax@42 int v16; // eax@44 int (__stdcall **v18)(int, int); // [sp+10h] [bp-62Ch]@40 int v19; // [sp+14h] [bp-628h]@40 int (__thiscall *v20)(int, int, int, int); // [sp+18h] [bp-624h]@40 char *v21; // [sp+1Ch] [bp-620h]@40 int v22; // [sp+20h] [bp-61Ch]@40 __int16 v23; // [sp+24h] [bp-618h]@40 int v24; // [sp+28h] [bp-614h]@14 char v25; // [sp+2Ch] [bp-610h]@40 char v26; // [sp+12Ch] [bp-510h]@28 char v27; // [sp+22Ch] [bp-410h]@20 char v28; // [sp+32Ch] [bp-310h]@24 char v29; // [sp+42Ch] [bp-210h]@12 char v30; // [sp+52Ch] [bp-110h]@8 unsigned int v31; // [sp+62Ch] [bp-10h]@1 int v32; // [sp+638h] [bp-4h]@1 int v33; // [sp+63Ch] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charbasedata"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_charbasedata"; dword_750AB8[dword_750CB8++] = -1; v32 = 0; if ( !(dword_A9FC90 & 1) ) { dword_A9FC90 |= 1u; LOBYTE(v32) = 1; v3 = 0; do { v4 = byte_6AC47C[v3]; byte_A9FA08[v3++] = v4; } while ( v4 ); dword_A9FB08 = 0; sub_5A7CA0(byte_6AC47C); byte_A9FC8C = 1; atexit(nullsub_19); LOBYTE(v32) = 0; } if ( *(_DWORD *)((char *)v2 + 32661) != *(_DWORD *)a2 ) { v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)(a2 + 4); *((_DWORD *)v6 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v6 + 2) = *(_DWORD *)(a2 + 12); *((_DWORD *)v6 + 3) = *(_DWORD *)(a2 + 16); *((_DWORD *)v6 + 4) = *(_DWORD *)(a2 + 20); v6[20] = 0; v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; v9 = byte_7493ED == 0; *(_DWORD *)v8 = *(_DWORD *)((char *)v2 + 32665); *((_DWORD *)v8 + 1) = *(_DWORD *)((char *)v2 + 32669); *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v2 + 32673); *((_DWORD *)v8 + 3) = *(_DWORD *)((char *)v2 + 32677); *((_DWORD *)v8 + 4) = *(_DWORD *)((char *)v2 + 32681); v8[20] = 0; if ( !v9 ) { if ( byte_A9FC8C ) { sprintf(&v30, "%.255s", v8); sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fputs(&v30, dword_A9FB08); } if ( byte_7493ED ) { if ( byte_A9FC8C ) { sprintf(&v29, "%.255s", "/"); sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fputs(&v29, dword_A9FB08); } } } v24 = *(_DWORD *)((char *)v2 + 32661); if ( byte_7493ED ) { if ( byte_A9FC8C ) { sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fprintf(dword_A9FB08, "%d", v24); } if ( byte_7493ED ) { if ( byte_A9FC8C ) { sprintf(&v27, "%.255s", "\t"); sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fputs(&v27, dword_A9FB08); } if ( byte_7493ED ) { if ( byte_A9FC8C ) { sprintf(&v28, "%.255s", v6); sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fputs(&v28, dword_A9FB08); } if ( byte_7493ED ) { if ( byte_A9FC8C ) { sprintf(&v26, "%.255s", "/"); sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fputs(&v26, dword_A9FB08); } } } } } v10 = *(_DWORD *)a2; if ( byte_7493ED ) { if ( byte_A9FC8C ) { sub_418E40((__time32_t)byte_A9FA08); if ( dword_A9FB08 ) fprintf(dword_A9FB08, "%d", v10); } if ( byte_7493ED && byte_A9FC8C && dword_A9FB08 ) { v11 = sub_418E40((__time32_t)byte_A9FA08); sub_654AB0(10, (FILE *)v11); fflush(dword_A9FB08); fclose(dword_A9FB08); dword_A9FB08 = 0; } } } sub_44A490((int)((char *)v2 + 32661), a2); if ( *((_BYTE *)v2 + 32686) <= 0x96u ) { v12 = *(_DWORD *)((char *)v2 + 102); *(_DWORD *)v12 = *(_DWORD *)((char *)v2 + 32739); *(_DWORD *)(v12 + 4) = *(_DWORD *)((char *)v2 + 32743); v13 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 4152; sub_44A490(v13, a2); v14 = v13 + 66; sub_465590((int)&v25, v14); v18 = &off_6A4700; v19 = (int)&unk_CFCF380; v20 = sub_4521E0; v21 = &v25; v22 = 0; v23 = -1; LOBYTE(v32) = 3; sub_43C470((int)&unk_CFCF380, (int)&v18); if ( v22 ) { v15 = *(_DWORD *)(v22 + 12); *(_DWORD *)v14 = *(_DWORD *)v15; *(_DWORD *)(v14 + 4) = *(_DWORD *)(v15 + 4); *(_DWORD *)(v14 + 8) = *(_DWORD *)(v15 + 8); v18 = &off_6A2544; LOBYTE(v32) = 0; sub_4646E0((int)&v25); if ( sub_4C81E0(&off_849C18, 107) ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v16 + 12))(v16, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charbasedata : Packet Too Long", 107); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charbasedata : Map not fount", 0); v18 = &off_6A2544; LOBYTE(v32) = 0; sub_4646E0((int)&v25); } } else { (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); } --dword_750CB8; v32 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charbasedata"); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // A9FC8C: using guessed type char byte_A9FC8C; // A9FC90: using guessed type int dword_A9FC90; //----- (0044D600) -------------------------------------------------------- int __thiscall sub_44D600(void *this, signed int a2) { void *v2; // edi@1 signed int v3; // ebx@1 char v4; // al@1 int v5; // ST10_4@2 int v6; // ST0C_4@2 int v7; // ST10_4@4 int v8; // ST0C_4@4 int v9; // ST10_4@6 int v10; // ST0C_4@6 int v11; // ST10_4@8 int v12; // ST0C_4@8 int v13; // eax@11 bool v14; // zf@14 void *v15; // esi@15 int v16; // esi@15 int v17; // eax@16 unsigned __int8 v18; // bl@16 int v19; // esi@16 int v20; // eax@20 char v21; // bl@21 int v22; // eax@21 int v23; // ebx@24 int v24; // eax@26 int (**v26)(); // [sp+10h] [bp-24h]@9 char *v27; // [sp+14h] [bp-20h]@9 int v28; // [sp+18h] [bp-1Ch]@9 int v29; // [sp+1Ch] [bp-18h]@9 int v30; // [sp+20h] [bp-14h]@1 int v31; // [sp+24h] [bp-10h]@21 int v32; // [sp+30h] [bp-4h]@1 int v33; // [sp+3Ch] [bp+8h]@16 v2 = this; v30 = (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(_BYTE *)(a2 + 1); v32 = 0; if ( v4 & 4 ) { v5 = a2 + 3; v6 = a2 + 2; a2 = 9; sub_640350((char *)v2 + 36484, v6, v5, 9); } else { if ( v4 & 8 ) { v7 = a2 + 3; v8 = a2 + 2; a2 = 8; sub_640350((char *)v2 + 32816, v8, v7, 8); } else { if ( v4 & 0x10 ) { v9 = a2 + 3; v10 = a2 + 2; a2 = 12; sub_640350((char *)v2 + 53776, v10, v9, 12); } else { if ( v4 & 0x20 ) { v11 = a2 + 3; v12 = a2 + 2; a2 = 15; sub_44CDE0((char *)v2 + 57840, v12, v11, 15); } } } } v26 = &off_6A86A4; v27 = (char *)v2 + 36484; v29 = (*(int (**)(void))(*((_DWORD *)v2 + 9121) + 8))(); v26 = (int (**)())&off_6A86AC; LOBYTE(v32) = 1; v28 = 0; if ( (unsigned __int8)off_6A86AC(&v26) || sub_63F7F0(&v26) ) { do { v13 = (**(int (__stdcall ***)(_DWORD))v27)(v28); if ( v13 ) (*(void (__stdcall **)(int))(**(_DWORD **)(v13 + 112) + 68))(v13); } while ( sub_63F7F0(&v26) ); } v14 = (*(_BYTE *)v3 & 0x80) == 0; LOBYTE(v32) = 0; if ( !v14 ) { v15 = off_849C18; *(_WORD *)off_849C18 = 4167; *((_BYTE *)v15 + 4) |= 1u; v16 = (int)((char *)v15 + 2); *(_BYTE *)(v16 + 1) = a2; if ( (_BYTE)a2 == 15 ) { v17 = sub_44CEE0((char *)v2 + 57840, v16, v16 + 3, 15); v18 = *(_BYTE *)(v3 + 2); v33 = v17; LOBYTE(v17) = *(_BYTE *)v16; v19 = *(_BYTE *)v16 - v18; if ( (_BYTE)v17 != v18 ) sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", v19); if ( sub_4C81E0(&off_849C18, v33 + 5) ) { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v20 + 12))(v20, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v33 + 5); } } else { v31 = 0; v21 = 1; v22 = sub_640690((int)((char *)v2 + 32816), v16, v16 + 3, (unsigned __int8)a2, (int)&v31, 8000, 0); if ( v22 > 0 ) { while ( 1 ) { *(_BYTE *)(v16 + 2) ^= (v21 ^ *(_BYTE *)(v16 + 2)) & 1; v23 = v22 + 5; if ( sub_4C81E0(&off_849C18, v22 + 5) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v24 + 12))(v24, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v23); } v22 = sub_640690((int)((char *)v2 + 32816), v16, v16 + 3, *(_BYTE *)(v16 + 1), (int)&v31, 8000, 0); if ( v22 <= 0 ) break; v21 = 0; } } } } --dword_750CB8; v32 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044D8F0) -------------------------------------------------------- int __thiscall sub_44D8F0(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 bool v4; // zf@1 int (__stdcall **v6)(int, int); // [sp+Ch] [bp-18h]@3 int v7; // [sp+10h] [bp-14h]@3 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = (int)this; v8 = (int)"ShineObjectClass::ShinePlayer::so_CharAbstateData"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_CharAbstateData"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_CharAbstateData"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 4); v4 = *(_WORD *)(a2 + 4) >= 0x318u; v9 = 0; if ( v4 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_CharAbstateData : Too many ABState", v3); } else { v6 = &off_6A0504; v7 = v2 + 3796; LOBYTE(v9) = 1; sub_43C470(v2 + 3796, (int)&v6); LOBYTE(v9) = 0; v6 = &off_6A04FC; sub_40AEC0((void *)(v2 + 432), v2, a2); } --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_CharAbstateData"); } // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044D9F0) -------------------------------------------------------- int __thiscall sub_44D9F0(void *this, int a2) { int v2; // esi@1 void *v3; // edi@1 void *v4; // ebx@1 int v5; // ebx@2 int v6; // esi@2 int v7; // edi@3 int v8; // edi@8 int v9; // eax@15 void *v10; // eax@16 int v11; // edx@18 int v12; // eax@20 int v13; // esi@20 int v14; // eax@29 int v15; // eax@30 void *v17; // [sp+10h] [bp-124h]@1 int (__stdcall **v18)(int, int); // [sp+14h] [bp-120h]@1 int v19; // [sp+18h] [bp-11Ch]@1 int v20; // [sp+1Ch] [bp-118h]@1 void *v21; // [sp+20h] [bp-114h]@1 char v22; // [sp+24h] [bp-110h]@6 unsigned int v23; // [sp+124h] [bp-10h]@1 int v24; // [sp+130h] [bp-4h]@1 int v25; // [sp+134h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v2 = a2; v3 = this; v21 = this; v20 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_CharChargedBuffData"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_CharChargedBuffData"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; v24 = 0; v17 = off_849C18; *(_WORD *)off_849C18 = 4170; v18 = &off_6AC3EC; v19 = (int)((char *)v3 + 159688); LOBYTE(v24) = 1; sub_43C470((int)((char *)v3 + 159688), (int)&v18); *((_BYTE *)v3 + 160358) = 0; LOBYTE(v24) = 0; v19 = 0; if ( *(_WORD *)a2 <= 0u ) { LABEL_20: v12 = *(_WORD *)v2; v13 = 14 * v12 + 4; *((_WORD *)v4 + 1) = v12; if ( sub_4C81E0(&off_849C18, 14 * v12 + 4) ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v15 + 12))(v15, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_CharChargedBuffData : Packet Too Long", v13); } goto LABEL_31; } v5 = (int)((char *)v4 + 4); v6 = a2 + 12; while ( 1 ) { v7 = sub_44FB80((int)&dword_AA0A90, *(_WORD *)(v6 - 6)); if ( !v7 ) { if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v22, "%.255s", "ShineObjectClass::ShinePlayer::so_CharChargedBuffData : Invalid buff "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v22, dword_14D212E0); } } v8 = *(_WORD *)(v6 - 6); if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v8); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v9 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v9); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } goto LABEL_18; } v10 = (void *)(*(int (__thiscall **)(char *, _DWORD))(*((_DWORD *)v21 + 39922) + 8))( (char *)v21 + 159688, *(_WORD *)(v6 - 10)); if ( !v10 ) break; sub_44FCC0( v10, v7, *(_DWORD *)v6, (*(_WORD *)v6 >> 8) & 0x1F, (*(_DWORD *)v6 >> 13) & 0x3F, (*(_DWORD *)v6 >> 19) & 0x3F, *(_DWORD *)v6 >> 25); *(_DWORD *)v5 = *(_DWORD *)(v6 - 10); *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 - 6); *(_DWORD *)(v5 + 8) = *(_DWORD *)(v6 - 2); *(_WORD *)(v5 + 12) = *(_WORD *)(v6 + 2); LABEL_18: v11 = *(_WORD *)v20; v6 += 14; v5 += 14; ++v19; if ( v19 >= v11 ) { v4 = v17; v3 = v21; v2 = v20; goto LABEL_20; } } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v22, "%.255s", "ShineObjectClass::ShinePlayer::so_CharChargedBuffData : Too many buff"); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v22, dword_14D212E0); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v14 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v14); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } LABEL_31: --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_CharChargedBuffData"); } // 6AC3EC: using guessed type int (__stdcall *off_6AC3EC)(int, int); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // 14D21464: using guessed type char byte_14D21464; //----- (0044DDB0) -------------------------------------------------------- int __thiscall sub_44DDB0(void *this, int a2) { void *v2; // edi@1 void **v3; // eax@1 void *v4; // ecx@1 void *v5; // ebx@2 int v6; // eax@3 void *v7; // esi@3 int v8; // esi@3 int v9; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charpassivedata"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_charpassivedata"; dword_750AB8[dword_750CB8++] = -1; sub_438420((int)((char *)v2 + 84424)); v3 = (void **)*((_DWORD *)v2 + 21109); v4 = *v3; *v3 = v3; *(_DWORD *)(*((_DWORD *)v2 + 21109) + 4) = *((_DWORD *)v2 + 21109); *((_DWORD *)v2 + 21110) = 0; if ( v4 != *((void **)v2 + 21109) ) { do { v5 = *(void **)v4; operator delete(v4); v4 = v5; } while ( v5 != *((void **)v2 + 21109) ); } v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1388))(v2); sub_447360((char *)v2 + 84424, a2, v6); v7 = off_849C18; *(_WORD *)off_849C18 = 4158; *((_WORD *)v7 + 1) = *(_WORD *)a2; memmove((char *)v7 + 4, (const void *)(a2 + 2), 2 * *(_WORD *)a2); v8 = 2 * *((_WORD *)v7 + 1) + 4; if ( sub_4C81E0(&off_849C18, v8) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charpassivedata : Packet Too Long", v8); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_charpassivedata"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044DF20) -------------------------------------------------------- int __stdcall sub_44DF20(int a1, int a2) { __int16 v2; // ST08_2@1 int v3; // edi@1 unsigned int v4; // ebx@8 int v5; // esi@8 int v6; // eax@9 int v7; // ecx@9 int v8; // eax@9 unsigned __int16 v9; // ST08_2@13 unsigned __int16 v10; // ST04_2@13 int v11; // ST00_4@13 int v12; // eax@13 int v13; // edx@14 __time64_t Time; // [sp+10h] [bp-24h]@7 char v16; // [sp+18h] [bp-1Ch]@9 int v17; // [sp+1Ch] [bp-18h]@1 int v18; // [sp+20h] [bp-14h]@9 int v19; // [sp+24h] [bp-10h]@7 int v20; // [sp+30h] [bp-4h]@1 v17 = (int)"WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_ZONE_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v20 = 0; v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3) ) { Time = 0i64; _time64(&Time); v19 = 0; if ( *(_WORD *)(a1 + 8) > 0u ) { v4 = Time; v5 = a1 + 12; do { v18 = *(_WORD *)(v5 - 2); v6 = sub_5C5630((int)&unk_14D40974, (int)&v16, (int)&v18); v7 = *(_DWORD *)(v5 + 4); v8 = *(_DWORD *)(*(_DWORD *)v6 + 16); if ( v7 >= SHIDWORD(Time) && (v7 > SHIDWORD(Time) || *(_DWORD *)v5 > v4) && v8 ) { v9 = *(_WORD *)v8; v10 = *(_WORD *)(v8 + 8); v11 = 1000 * (*(_DWORD *)v5 - v4); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3); sub_5CEE10(v12, v11, v10, v9); v4 = Time; } v13 = *(_WORD *)(a1 + 8); v5 += 10; ++v19; } while ( v19 < v13 ); } } } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_ZONE_CMD : Invalid player", 0); if ( v3 ) (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1528))(v3, 1673, 0, 0); } --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044E0D0) -------------------------------------------------------- int __thiscall sub_44E0D0(int this) { int v1; // esi@1 int result; // eax@1 int v3; // edx@1 v1 = this; *(_DWORD *)(this + 16) = 0; result = sub_4474C0(this, 0); v3 = *(_DWORD *)(v1 + 20); if ( v3 != *(_DWORD *)(v1 + 24) ) { result = *(_DWORD *)(v1 + 24); *(_DWORD *)(v1 + 24) = v3; } return result; } // 44E0D0: could not find valid save-restore pair for edi //----- (0044E110) -------------------------------------------------------- int __thiscall sub_44E110(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 _BYTE *v4; // eax@1 int v5; // ecx@1 int v6; // edx@6 int v7; // eax@6 int v8; // edx@6 int v9; // ecx@6 int v10; // eax@6 int v11; // edx@6 int v12; // eax@6 __int16 v13; // ax@9 void *v14; // ebx@9 int v15; // eax@11 int (__thiscall *v16)(_DWORD); // edx@12 int v17; // eax@13 int v18; // eax@15 _BYTE *v19; // eax@15 unsigned int v21; // [sp-4h] [bp-1A4h]@1 char v22; // [sp+10h] [bp-190h]@6 char v23[4]; // [sp+110h] [bp-90h]@6 int v24; // [sp+114h] [bp-8Ch]@6 int v25; // [sp+118h] [bp-88h]@6 int v26; // [sp+11Ch] [bp-84h]@6 int v27; // [sp+120h] [bp-80h]@6 char v28; // [sp+124h] [bp-7Ch]@6 int v29; // [sp+150h] [bp-50h]@6 int v30; // [sp+154h] [bp-4Ch]@6 int v31; // [sp+158h] [bp-48h]@6 int v32; // [sp+15Ch] [bp-44h]@6 int v33; // [sp+160h] [bp-40h]@6 char v34; // [sp+164h] [bp-3Ch]@6 unsigned int v35; // [sp+190h] [bp-10h]@1 int v36; // [sp+19Ch] [bp-4h]@1 int v37; // [sp+1A0h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v21 = (unsigned int)&v37 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SetRegistNumber"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SetRegistNumber"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_8622C4 & (dword_8622C0 + 1); v36 = 0; dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)(a2 + 10); *((_DWORD *)v4 + 1) = *(_DWORD *)(a2 + 14); *((_DWORD *)v4 + 2) = *(_DWORD *)(a2 + 18); *((_DWORD *)v4 + 3) = *(_DWORD *)(a2 + 22); *((_DWORD *)v4 + 4) = *(_DWORD *)(a2 + 26); v4[20] = 0; v5 = *(_DWORD *)(a2 + 10); if ( *(_DWORD *)((char *)v2 + 161761) != v5 || *(_DWORD *)((char *)v2 + 161765) != *(_DWORD *)(a2 + 14) || *(_DWORD *)((char *)v2 + 161769) != *(_DWORD *)(a2 + 18) || *(_DWORD *)((char *)v2 + 161773) != *(_DWORD *)(a2 + 22) || *(_DWORD *)((char *)v2 + 161777) != *(_DWORD *)(a2 + 26) ) { v6 = *(_DWORD *)((char *)v2 + 161769); *(_DWORD *)v23 = *(_DWORD *)((char *)v2 + 161761); v24 = *(_DWORD *)((char *)v2 + 161765); v7 = *(_DWORD *)((char *)v2 + 161773); v25 = v6; v8 = *(_DWORD *)((char *)v2 + 161777); v29 = v5; v9 = *(_DWORD *)(a2 + 18); v26 = v7; v10 = *(_DWORD *)(a2 + 14); v27 = v8; v11 = *(_DWORD *)(a2 + 22); v31 = v9; v30 = v10; v12 = *(_DWORD *)(a2 + 26); v32 = v11; v33 = v12; v28 = 0; v34 = 0; sprintf(&v22, " Zone %s World %s ", v23, &v29); sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::so_SetRegistNumber", (int)&v22); sub_644DD0((int)&unk_86F128, "so_SetRegistNumber : CharID Not Match [%s/%s]", v23, &v29); LABEL_16: (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD, unsigned int))(*(_DWORD *)v2 + 1528))( v2, 1673, 0, 0, v21); v36 = -1; goto LABEL_17; } if ( *(_DWORD *)a2 == -1 || *(_DWORD *)(a2 + 4) == -1 ) { v18 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v18; v19 = &byte_85A2C0[256 * v18]; *(_DWORD *)v19 = *(_DWORD *)((char *)v2 + 161761); *((_DWORD *)v19 + 1) = *(_DWORD *)((char *)v2 + 161765); *((_DWORD *)v19 + 2) = *(_DWORD *)((char *)v2 + 161769); *((_DWORD *)v19 + 3) = *(_DWORD *)((char *)v2 + 161773); *((_DWORD *)v19 + 4) = *(_DWORD *)((char *)v2 + 161777); v19[20] = 0; sub_644DD0((int)&unk_86F128, "so_SetRegistNumber : Invalid Regnum [CharID=%s]", v19); goto LABEL_16; } sub_55E730(v2); v13 = *((_WORD *)v2 + 2); *(_DWORD *)((char *)v2 + 32657) = *(_DWORD *)a2; *(_DWORD *)((char *)v2 + 32661) = *(_DWORD *)(a2 + 4); v14 = off_849C18; *((_WORD *)off_849C18 + 1) = v13; *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v2 + 836))(v2, v21); *(_WORD *)v14 = 4124; *((_WORD *)v14 + 4) = *(_WORD *)(a2 + 8); *(_DWORD *)((char *)v14 + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)((char *)v14 + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)((char *)v14 + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)((char *)v14 + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)((char *)v14 + 26) = *(_DWORD *)(a2 + 26); *((_WORD *)v2 + 77786) = *((_WORD *)v14 + 4); if ( sub_4C81E0(&off_849C18, 30) ) { v15 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v15); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SetRegistNumber : Packet Too Long", 30); } sub_44E0D0((int)((char *)v2 + 84388)); nullsub_3(1); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 3192))(v2, 0); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 3200))(v2, 10); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3212))(v2); sub_640070((char *)v2 + 32816); sub_640210((int)((char *)v2 + 32816)); v16 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1488); *((_DWORD *)v2 + 40344) = 792; if ( v16(v2) ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1488))(v2); sub_5CEC60(v17); } v36 = -1; LABEL_17: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SetRegistNumber"); } // 4FF7B0: using guessed type _DWORD __stdcall nullsub_3(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; //----- (0044E490) -------------------------------------------------------- int __stdcall sub_44E490(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 void *v4; // eax@7 int v5; // eax@9 void *v6; // ebx@11 int v7; // eax@13 int v9; // [sp-4h] [bp-24h]@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(_DWORD *)v2; v9 = *(_WORD *)(a1 + 8); if ( *(_BYTE *)(a1 + 10) ) { (*(void (__thiscall **)(int, int))(v3 + 1568))(v2, v9); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 872))(v2); } else { (*(void (__thiscall **)(int, int))(v3 + 1572))(v2, v9); } v4 = off_849C18; *(_WORD *)off_849C18 = 18436; *((_WORD *)v4 + 1) = *(_WORD *)(a1 + 8); *((_BYTE *)v4 + 4) = *(_BYTE *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 5) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK : Packet Too Long", 5); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1320))(v2); if ( *(_BYTE *)(a1 + 10) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 18464; *((_WORD *)v6 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 832))(v2); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v6 + 4) = *(_WORD *)(a1 + 8); if ( sub_4C81E0(&off_849C18, 10) ) { v7 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK : Packet Too Long", 10); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (0044E680) -------------------------------------------------------- int __stdcall sub_44E680(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 772))(v2, 18, 5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_SKILLTEACHFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044E760) -------------------------------------------------------- int __stdcall sub_44E760(int a1, int a2) { int v2; // esi@1 void *v3; // edi@3 int v4; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_SUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_SUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1724))(v2); v3 = off_849C18; *(_WORD *)off_849C18 = 18447; *((_BYTE *)v3 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1720))(v2); if ( sub_4C81E0(&off_849C18, 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_SUC_ACK : Packet Too Long", 3); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_SUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044E890) -------------------------------------------------------- int __stdcall sub_44E890(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_FAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_FAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 772))(v2, 18, 14); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_FAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044E960) -------------------------------------------------------- int __thiscall sub_44E960(void *this, int a2, int a3, int a4) { void *v4; // edi@1 __int16 v5; // ax@5 __int16 *v6; // esi@5 unsigned int v7; // ebx@15 int (__thiscall *v8)(_DWORD); // edx@16 int v9; // eax@16 int v10; // eax@18 int v11; // eax@18 int v12; // ebx@23 int v13; // eax@23 void *v14; // ebx@27 int (__thiscall *v15)(_DWORD); // edx@28 int v16; // eax@28 int v17; // esi@30 int (__stdcall *v18)(_DWORD); // eax@30 int v19; // eax@30 int v20; // edx@30 int v21; // eax@31 int v22; // eax@31 int v23; // esi@32 void *v24; // esi@32 __int16 v25; // cx@32 int v26; // eax@32 int v27; // edx@32 int v28; // edi@32 int v29; // eax@32 void *v30; // ecx@32 int v31; // esi@32 int v32; // esi@32 int v33; // eax@33 int v34; // esi@38 int v35; // eax@40 unsigned int v37; // [sp-4h] [bp-F4h]@1 int (**v38)(); // [sp+Ch] [bp-E4h]@16 int (**v39)(); // [sp+20h] [bp-D0h]@28 int v40; // [sp+34h] [bp-BCh]@1 int *v41; // [sp+38h] [bp-B8h]@16 int v42; // [sp+3Ch] [bp-B4h]@16 int v43; // [sp+40h] [bp-B0h]@16 int v44; // [sp+44h] [bp-ACh]@30 int *v45; // [sp+48h] [bp-A8h]@28 int v46; // [sp+4Ch] [bp-A4h]@28 int v47; // [sp+50h] [bp-A0h]@28 void *v48; // [sp+54h] [bp-9Ch]@29 void *v49; // [sp+58h] [bp-98h]@1 int v50; // [sp+5Ch] [bp-94h]@15 __int16 v51; // [sp+60h] [bp-90h]@25 void *v52; // [sp+64h] [bp-8Ch]@17 int v53; // [sp+68h] [bp-88h]@30 int v54; // [sp+6Ch] [bp-84h]@16 int v55; // [sp+70h] [bp-80h]@32 int v56; // [sp+74h] [bp-7Ch]@32 __int16 v57; // [sp+78h] [bp-78h]@32 __int16 v58; // [sp+DCh] [bp-14h]@32 char v59; // [sp+DEh] [bp-12h]@32 unsigned int v60; // [sp+E0h] [bp-10h]@1 int v61; // [sp+ECh] [bp-4h]@1 int v62; // [sp+F0h] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v37 = (unsigned int)&v62 ^ __security_cookie; v4 = this; v49 = this; v40 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"; dword_750AB8[dword_750CB8++] = -1; v61 = 0; if ( !(dword_A9FC98 & 1) ) { dword_A9FC98 |= 1u; word_A9FC94 = 118; atexit(nullsub_20); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_A9FC94 ) { v5 = *(_WORD *)(a2 + 4); v6 = (__int16 *)(a2 + 2); if ( v5 & 0xF && *(_BYTE *)(a2 + 6) & 0xF || v5 & 0xF0 && *(_WORD *)(a2 + 6) & 0xF0 ) goto LABEL_45; if ( *(_WORD *)(a2 + 4) & 0xF00 && *(_BYTE *)(a2 + 7) & 0xF ) { (*(void (__thiscall **)(void *, signed int, _DWORD, unsigned int))(*(_DWORD *)v4 + 896))( v4, 2185, (unsigned __int16)*v6, v37); v61 = -1; goto LABEL_42; } if ( *(_WORD *)(a2 + 4) & 0xF000 && *(_WORD *)(a2 + 6) & 0xF000 ) { LABEL_45: (*(void (__thiscall **)(void *, signed int, _DWORD, unsigned int))(*(_DWORD *)v4 + 896))( v4, 2185, (unsigned __int16)*v6, v37); v61 = -1; goto LABEL_42; } v7 = (*(_WORD *)(a2 + 6) & 0xF) + ((unsigned int)*(_WORD *)(a2 + 6) >> 12) + (((unsigned int)*(_WORD *)(a2 + 6) >> 4) & 0xF) + (((unsigned int)*(_WORD *)(a2 + 6) >> 8) & 0xF); v50 = v7; if ( (signed int)v7 > 0 ) { v54 = 0; sub_43BB70((int)&v38, (int)((char *)v4 + 36484), word_14D21196, (int)((char *)v4 + 160312)); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v61) = 1; v9 = v8(v4); v41 = (int *)&v38; v42 = v9; v43 = 9; if ( sub_486D40(&v41) ) { v52 = sub_63ACA0(dword_1508B168, word_14D21196); while ( 1 ) { v10 = (**(int (__stdcall ***)(_DWORD))v41[1])(v41[2]); v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v52 + 28))(v10 + 8); v54 += v11; if ( v54 >= (signed int)v7 ) break; if ( !sub_486DA0((void **)&v41) ) goto LABEL_20; } } else { LABEL_20: if ( v54 < (signed int)v7 ) { (*(void (__thiscall **)(void *, signed int, _DWORD, unsigned int))(*(_DWORD *)v4 + 896))( v4, 2182, (unsigned __int16)*v6, v37); v38 = &off_6A86A4; LABEL_41: v61 = -1; goto LABEL_42; } } LOBYTE(v61) = 0; } v12 = (*(_WORD *)(a2 + 4) & 0xF) + ((unsigned int)*(_WORD *)(a2 + 4) >> 12) + (((unsigned int)*(_WORD *)(a2 + 4) >> 4) & 0xF) + (((unsigned int)*(_WORD *)(a2 + 4) >> 8) & 0xF) - (((unsigned int)*(_WORD *)(a2 + 6) >> 8) & 0xF) - (((unsigned int)*(_WORD *)(a2 + 6) >> 4) & 0xF) - ((unsigned int)*(_WORD *)(a2 + 6) >> 12) - (*(_WORD *)(a2 + 6) & 0xF); v52 = (void *)(v12 + sub_444A00((char *)v4 + 84388)); v13 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 1720))(v4, v37); if ( v13 >= (signed int)v52 ) { if ( sub_447D40((char *)v4 + 84388, v6, (int)&v51) ) { v14 = off_849C18; *(_WORD *)off_849C18 = 18450; *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v14 + 1) = *((_WORD *)v4 + 2); *(_WORD *)((char *)v14 + 15) = v51; *(_WORD *)((char *)v14 + 17) = v51; *(_WORD *)((char *)v14 + 13) = *v6; *((_WORD *)v14 + 5) = *v6; *((_BYTE *)v14 + 27) = 0; *((_BYTE *)v14 + 12) = 0; *(_WORD *)((char *)v14 + 25) = *((_WORD *)v4 + 29346); v52 = 0; if ( v50 > 0 ) { sub_43BB70((int)&v39, (int)((char *)v4 + 36484), word_14D21196, (int)((char *)v4 + 160312)); v15 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v61) = 2; v16 = v15(v4); v45 = (int *)&v39; v46 = v16; v47 = 9; v54 = 0; if ( sub_486D40(&v45) ) { v48 = sub_63ACA0(dword_1508B168, word_14D21196); do { v17 = (**(int (__stdcall ***)(_DWORD))v45[1])(v45[2]); v18 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)v48 + 28); v44 = v17; v19 = v18(v17 + 8); v54 += v19; LOWORD(v53) = v53 & 0x3FF | 0x2400; v20 = v50; LOWORD(v53) = (v53 ^ *((_WORD *)v45 + 4)) & 0x3FF ^ v53; if ( v54 > v50 ) { *((_BYTE *)v14 + 27) |= 0x80u; memcpy(&v55, (const void *)v17, 0x6Cu); v23 = v17 + 108; v58 = *(_WORD *)v23; v59 = *(_BYTE *)(v23 + 2); v24 = v48; (*(void (__thiscall **)(void *, __int16 *, int))(*(_DWORD *)v48 + 32))(v48, &v57, v54 - v20); *((_WORD *)v14 + 14) = v57; v25 = v53; *(_DWORD *)((char *)v14 + 30) = v55; v26 = v56; v27 = *((_BYTE *)v14 + 27) & 0x7F; *((_WORD *)v14 + 20) = v25; v28 = (int)((char *)v14 + 8 * v27 + 42); *(_DWORD *)((char *)v14 + 34) = v26; v29 = (*(int (__thiscall **)(void *, __int16 *, int))(*(_DWORD *)v24 + 4))(v24, &v57, v28); v30 = v49; v31 = v29; *((_WORD *)v14 + 19) = v28 - (_WORD)v14 - 2; (*(void (__thiscall **)(char *, _DWORD, int, int *, int *, int *))(*((_DWORD *)v30 + 14672) + 64))( (char *)v30 + 58688, *(_WORD *)((char *)v14 + 25), v44, &v55, &v53, &v53); v32 = v31 - v28; v4 = v49; v52 = (void *)v32; } else { v21 = *((_BYTE *)v14 + 27) & 0x7F; *(_DWORD *)((char *)v14 + 8 * v21 + 42) = *(_DWORD *)v17; *(_DWORD *)((char *)v14 + 8 * v21 + 46) = *(_DWORD *)(v17 + 4); v22 = *(_WORD *)((char *)v14 + 25); *((_BYTE *)v14 + 27) ^= (*((_BYTE *)v14 + 27) ^ (*((_BYTE *)v14 + 27) + 1)) & 0x7F; (*(void (__thiscall **)(char *, int, int, int *, int *))(*((_DWORD *)v4 + 14672) + 48))( (char *)v4 + 58688, v22, v17, &v53, &v53); } v33 = v50; *((_BYTE *)v14 + 12) = 1; } while ( v54 < v33 && sub_486DA0((void **)&v45) ); } LOBYTE(v61) = 0; v39 = &off_6A86A4; } if ( *((_BYTE *)v14 + 12) == 1 ) *((_WORD *)v14 + 4) = (*((_WORD *)v4 + 29346))++; v34 = (int)((char *)v52 + 8 * (*((_BYTE *)v14 + 27) & 0x7F) + 42); if ( sub_4C81E0(&off_849C18, (int)((char *)v52 + 8 * (*((_BYTE *)v14 + 27) & 0x7F) + 42)) ) { v35 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v35); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOW_RESET_REQ : Packet Too Long", v34); } } else { (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2180, (unsigned __int16)*v6); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ : Too many points", v12); (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2179, (unsigned __int16)*v6); } goto LABEL_41; } (*(void (__thiscall **)(void *, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 896))(v4, 2178, 65535, v37); v61 = -1; LABEL_42: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // A9FC94: using guessed type __int16 word_A9FC94; // A9FC98: using guessed type int dword_A9FC98; // 14D16430: using guessed type int dword_14D16430; // 14D21196: using guessed type __int16 word_14D21196; //----- (0044EFE0) -------------------------------------------------------- int __stdcall sub_44EFE0(int a1, int a2) { int v2; // esi@1 int v3; // eax@6 int v4; // ST04_4@7 __time32_t v5; // eax@7 __time32_t v6; // eax@7 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_EMPOWALLOC_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_SKILL_EMPOWALLOC_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 896))(v2, *(_WORD *)(a1 + 12), *(_WORD *)(a1 + 10)); if ( *(_WORD *)(a1 + 12) != 2177 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1674, 0, 0); if ( *(_BYTE *)(a1 + 14) == 1 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_SKILL_EMPOWALLOC_DB_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_EMPOWALLOC_DB_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044F130) -------------------------------------------------------- int __thiscall sub_44F130(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 14) = 0; *(_DWORD *)(this + 10) = 0; *(_DWORD *)(this + 6) = 0; return result; } //----- (0044F140) -------------------------------------------------------- int __cdecl sub_44F140(unsigned __int16 a1) { int v1; // eax@1 int v2; // eax@1 int v3; // eax@2 int result; // eax@3 v1 = sub_645030((int)&dword_14D20890, a1); v2 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v1); if ( v2 && (v3 = *(_DWORD *)(v2 + 4)) != 0 ) result = *(_DWORD *)(v3 + 33); else result = 0; return result; } // 14D20890: using guessed type int dword_14D20890; //----- (0044F170) -------------------------------------------------------- char __thiscall sub_44F170(int this, unsigned int a2) { int v2; // eax@1 char result; // al@3 int v4; // eax@4 v2 = *(_DWORD *)(this + 52); if ( v2 && a2 < *(_DWORD *)(v2 + 40) && (v4 = sub_626BC0(this, a2)) != 0 ) result = *(_BYTE *)v4; else result = 0; return result; } //----- (0044F1A0) -------------------------------------------------------- char __thiscall sub_44F1A0(int this, __int16 a2) { int v2; // edx@2 int v3; // eax@2 int v4; // ecx@3 char result; // al@6 if ( a2 == -1 || (v2 = *(_DWORD *)this, v3 = 0, *(_DWORD *)this <= 0) ) { LABEL_6: result = 0; } else { v4 = *(_DWORD *)(this + 4); while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 2; if ( v3 >= v2 ) goto LABEL_6; } result = 1; } return result; } //----- (0044F1E0) -------------------------------------------------------- char __thiscall sub_44F1E0(int this, int a2) { char result; // al@2 int v3; // eax@3 if ( *(_DWORD *)a2 < -1 || (v3 = *(_DWORD *)a2 + 1, *(_DWORD *)a2 = v3, v3 >= *(_DWORD *)(this + 416)) ) { *(_DWORD *)a2 = -10; result = 0; } else { result = 1; } return result; } //----- (0044F210) -------------------------------------------------------- int __thiscall sub_44F210(int this, __int16 a2) { int v2; // edx@1 int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 112); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = *(_DWORD *)(this + 108); v5 = *(_DWORD *)(this + 108); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = v4 + 8 * v3; } return result; } //----- (0044F250) -------------------------------------------------------- void *__thiscall sub_44F250(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 22, 4) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 22, 22, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0044F300) -------------------------------------------------------- void *__thiscall sub_44F300(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ACB30; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB30: using guessed type int (__thiscall *off_6ACB30)(void *, char); //----- (0044F330) -------------------------------------------------------- void *__thiscall sub_44F330(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 103); *(_DWORD *)this = &off_6ACB38; if ( v3 ) operator delete(v3); *(_DWORD *)v2 = &off_6ACB30; sub_639940((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB30: using guessed type int (__thiscall *off_6ACB30)(void *, char); // 6ACB38: using guessed type int (__thiscall *off_6ACB38)(void *, char); //----- (0044F380) -------------------------------------------------------- void *__thiscall sub_44F380(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ACB40; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB40: using guessed type int (__thiscall *off_6ACB40)(void *, char); //----- (0044F3B0) -------------------------------------------------------- void *__thiscall sub_44F3B0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 27); *(_DWORD *)this = &off_6ACB48; if ( v3 ) operator delete(v3); *(_DWORD *)v2 = &off_6ACB40; sub_639940((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB40: using guessed type int (__thiscall *off_6ACB40)(void *, char); // 6ACB48: using guessed type int (__thiscall *off_6ACB48)(void *, char); //----- (0044F3F0) -------------------------------------------------------- void *__thiscall sub_44F3F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ACB50; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB50: using guessed type int (__thiscall *off_6ACB50)(void *, char); //----- (0044F420) -------------------------------------------------------- void *__thiscall sub_44F420(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 44); *(_DWORD *)this = &off_6ACB58; if ( v3 ) operator delete(v3); *(_DWORD *)v2 = &off_6ACB50; sub_639940((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB50: using guessed type int (__thiscall *off_6ACB50)(void *, char); // 6ACB58: using guessed type int (__thiscall *off_6ACB58)(void *, char); //----- (0044F470) -------------------------------------------------------- void *__thiscall sub_44F470(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ACB60; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB60: using guessed type int (__thiscall *off_6ACB60)(void *, char); //----- (0044F4A0) -------------------------------------------------------- void *__thiscall sub_44F4A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 53); *(_DWORD *)this = &off_6ACB68; if ( v3 ) operator delete(v3); *(_DWORD *)v2 = &off_6ACB60; sub_639940((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB60: using guessed type int (__thiscall *off_6ACB60)(void *, char); // 6ACB68: using guessed type int (__thiscall *off_6ACB68)(void *, char); //----- (0044F4F0) -------------------------------------------------------- void *__thiscall sub_44F4F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ACB70; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB70: using guessed type int (__thiscall *off_6ACB70)(void *, char); //----- (0044F520) -------------------------------------------------------- void *__thiscall sub_44F520(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ACB78; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACB78: using guessed type int (__thiscall *off_6ACB78)(void *, char); //----- (0044F550) -------------------------------------------------------- void *__thiscall sub_44F550(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 5585, 346) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 5585, 5585, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0044F600) -------------------------------------------------------- __int16 __cdecl sub_44F600(unsigned __int16 a1) { int v1; // eax@1 int v2; // eax@1 int v3; // eax@2 int v5; // eax@4 char *v6; // eax@8 int v7; // eax@9 v1 = sub_645030((int)&dword_14D20890, a1); v2 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v1); if ( v2 ) { v3 = *(_DWORD *)(v2 + 8); if ( v3 ) return *(_WORD *)(v3 + 66); return 0; } v5 = 0; if ( dword_AA0A88 <= 0 ) return 0; while ( *((_WORD *)dword_AA0A84 + 4 * v5) != a1 ) { ++v5; if ( v5 >= dword_AA0A88 ) return 0; } v6 = (char *)dword_AA0A84 + 8 * v5; if ( !v6 || (v7 = *((_DWORD *)v6 + 1)) == 0 ) return 0; return *(_WORD *)(v7 + 200); } // AA0A88: using guessed type int dword_AA0A88; // 14D20890: using guessed type int dword_14D20890; //----- (0044F670) -------------------------------------------------------- char __thiscall sub_44F670(void *this) { sub_44F250(this, "../9Data/Shine/ChatColor.shn"); return 1; } //----- (0044F680) -------------------------------------------------------- char __thiscall sub_44F680(void *this) { void *v1; // esi@1 int (__thiscall **v2)(void *, char); // ebx@1 unsigned int v3; // eax@1 int v4; // eax@2 int i; // eax@3 unsigned int v6; // edi@5 int v7; // eax@7 signed int v8; // eax@8 int v9; // ecx@10 char result; // al@13 int (__thiscall **v11)(void *, char); // [sp+Ch] [bp-70h]@1 int v12; // [sp+40h] [bp-3Ch]@1 int v13; // [sp+4Ch] [bp-30h]@1 int v14; // [sp+50h] [bp-2Ch]@1 int v15; // [sp+54h] [bp-28h]@1 int v16; // [sp+58h] [bp-24h]@1 int v17; // [sp+5Ch] [bp-20h]@1 int v18; // [sp+60h] [bp-1Ch]@1 int v19; // [sp+64h] [bp-18h]@1 int v20; // [sp+68h] [bp-14h]@1 unsigned int v21; // [sp+6Ch] [bp-10h]@1 int v22; // [sp+78h] [bp-4h]@1 int v23; // [sp+7Ch] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v1 = this; sub_639920((int)&v11); v2 = &off_6ACB78; v11 = &off_6ACB78; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v20 = 0; v22 = 0; sub_627220(&v11, "../9Data/Shine/ChargedDeletableBuff.shn"); v3 = *(_DWORD *)(v12 + 40); *(_DWORD *)v1 = v3; if ( (signed int)v3 > 0 && (v4 = unknown_libname_130(2 * v3 | -((unsigned __int64)v3 >> 31 != 0)), (*((_DWORD *)v1 + 1) = v4) != 0) ) { for ( i = 0; i < *(_DWORD *)v1; ++i ) *(_WORD *)(*((_DWORD *)v1 + 1) + 2 * i) = -1; v6 = 0; if ( *(_DWORD *)v1 <= 0 ) { LABEL_16: v22 = -1; v11 = v2; sub_639940((int)&v11); result = 1; } else { while ( 1 ) { if ( v6 >= *(_DWORD *)(v12 + 40) || (v7 = sub_626BC0((int)&v11, v6), (int *)v7 == &v13) ) { sub_639100(&unk_86DDD8, (int)"CChargedDeletableBuff::cdb_Load - def data black", v6); goto LABEL_19; } v8 = sub_639620(&unk_14D20898, (unsigned __int8 *)v7); if ( v8 == -1 ) break; if ( (_WORD)v8 == -1 ) break; v9 = 0; if ( dword_AA0B00 <= 0 ) goto LABEL_13; while ( *((_WORD *)dword_AA0AFC + 4 * v9) != (_WORD)v8 ) { ++v9; if ( v9 >= dword_AA0B00 ) goto LABEL_13; } if ( !((char *)dword_AA0AFC + 8 * v9) ) { LABEL_13: sub_639100(&unk_86DDD8, (int)"CChargedDeletableBuff::cdb_Load - invalid chargeditemeffect", v6); v22 = -1; v11 = &off_6ACB78; sub_639940((int)&v11); return 0; } *(_WORD *)(*((_DWORD *)v1 + 1) + 2 * v6++) = v8; v2 = &off_6ACB78; if ( (signed int)v6 >= *(_DWORD *)v1 ) goto LABEL_16; } sub_639100(&unk_86DDD8, (int)"CChargedDeletableBuff::cdb_Load - invalid itemidx", v6); v22 = -1; v11 = v2; sub_639940((int)&v11); result = 0; } } else { LABEL_19: v22 = -1; v11 = v2; sub_639940((int)&v11); result = 0; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6ACB78: using guessed type int (__thiscall *off_6ACB78)(void *, char); // 86FEB8: using guessed type int __security_cookie; // AA0B00: using guessed type int dword_AA0B00; //----- (0044F870) -------------------------------------------------------- FILE *__thiscall sub_44F870(void *this, const char *a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@1 int v6; // ecx@1 FILE *result; // eax@1 unsigned int v8; // esi@1 int v9; // edi@3 signed int v10; // eax@7 int i; // edi@11 int v12; // eax@12 int v13; // ecx@12 unsigned int v14; // ecx@15 int v15; // edx@16 int v16; // edx@17 int v17; // edi@18 int v18; // [sp+14h] [bp+8h]@16 v4 = (int)this; sub_44F550(this, a2); v5 = 8 * *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); v6 = (unsigned __int64)*(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) >> 29 != 0; *(_DWORD *)(v4 + 416) = *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); result = (FILE *)unknown_libname_130(v5 | -v6); v8 = 0; *(_DWORD *)(v4 + 412) = result; if ( *(_DWORD *)(v4 + 416) > 0 ) { do { if ( v8 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ) v9 = sub_626BC0(v4, v8); else v9 = v4 + 64; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Null argument", v8); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } v10 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v9 + 2)); if ( v10 == -1 ) LOWORD(v10) = -1; *(_WORD *)(*(_DWORD *)(v4 + 412) + 8 * v8) = v10; *(_DWORD *)(*(_DWORD *)(v4 + 412) + 8 * v8 + 4) = v9; if ( *(_WORD *)(*(_DWORD *)(v4 + 412) + 8 * v8) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Invalid item", v9 + 2); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v8 - 1); ++i ) { v12 = *(_DWORD *)(v4 + 412); v13 = **(_WORD **)(v12 + 8 * i + 4); if ( (_WORD)v13 == **(_WORD **)(v12 + 8 * v8 + 4) ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Same Handle", v13); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } } v14 = *(_WORD *)(*(_DWORD *)(v4 + 412) + 8 * v8); result = (FILE *)v14; if ( v14 < dword_14D20894 ) { v15 = dword_14D21184 + 40 * v14; v18 = v15; if ( v15 ) { v16 = *(_DWORD *)v15; if ( v16 ) { v17 = *(_WORD *)v16; if ( (_WORD)v17 == (_WORD)v14 ) { result = *(FILE **)(*(_DWORD *)v18 + 102); if ( result != (FILE *)27 && result != (FILE *)28 ) { if ( result != (FILE *)29 ) result = (FILE *)sub_594070((int)&dword_13258868, *(_WORD *)(*(_DWORD *)(v4 + 412) + 8 * v8), a3, a4); } } else { result = sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v14); } } } } ++v8; } while ( (signed int)v8 < *(_DWORD *)(v4 + 416) ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 13258868: using guessed type int dword_13258868; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0044FA70) -------------------------------------------------------- FILE *__thiscall sub_44FA70(void *this) { void *v1; // edi@1 int v2; // eax@1 FILE *result; // eax@1 signed int v4; // ebx@1 int v5; // esi@4 signed int v6; // eax@5 unsigned __int16 v7; // di@7 int v8; // eax@9 void *v9; // [sp+Ch] [bp-4h]@1 v1 = this; v9 = this; v2 = (int)sub_59A6B0((int)"UseRide"); result = sub_44F870(v1, "../9Data/Shine/Riding.shn", (int)&off_86ACC0, v2); v4 = -1; while ( v4 >= -1 ) { ++v4; if ( v4 >= *((_DWORD *)v1 + 104) ) break; result = (FILE *)*((_DWORD *)v1 + 103); v5 = *(&result->_cnt + 2 * v4) + 132; if ( *(_BYTE *)v5 != 45 ) { v6 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(&result->_cnt + 2 * v4) + 132)); if ( v6 == -1 ) LOWORD(v6) = -1; v7 = v6; if ( (unsigned __int16)v6 == 65535 ) { sub_6390B0(&unk_86DDD8, (int)"RidePetDataBox::rpdb_Load : Invalid food", v5); loc_6391B0("RidePetDataBox::rpdb_Load"); } v8 = (int)sub_59A6B0((int)"UseSkill"); result = (FILE *)sub_594070((int)&dword_13258868, v7, (int)off_86ACC8, v8); v1 = v9; } } return result; } // 86ACC0: using guessed type int (__thiscall **off_86ACC0)(void *, char); // 86ACC8: using guessed type int (__thiscall *off_86ACC8[6])(void *, char); // 13258868: using guessed type int dword_13258868; //----- (0044FB50) -------------------------------------------------------- __int32 __thiscall sub_44FB50(__time32_t this, int a2) { __int32 result; // eax@1 __time32_t Time; // [sp+0h] [bp-4h]@1 Time = this; _time32(&Time); result = dword_AA0C18 + Time; if ( a2 ) *(_DWORD *)a2 = result; return result; } // AA0C18: using guessed type int dword_AA0C18; //----- (0044FB80) -------------------------------------------------------- int __thiscall sub_44FB80(int this, int a2) { int v2; // edx@1 int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 112); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = *(_DWORD *)(this + 108); v5 = v4 + 4; while ( **(_WORD **)v5 != a2 ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = *(_DWORD *)(v4 + 8 * v3 + 4); } return result; } //----- (0044FBE0) -------------------------------------------------------- char __thiscall sub_44FBE0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); result = 1; } else { result = 0; } return result; } //----- (0044FC20) -------------------------------------------------------- char __thiscall sub_44FC20(void *this, int a2) { int v2; // esi@1 int v3; // edx@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (0044FC80) -------------------------------------------------------- void *__thiscall sub_44FC80(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6ACDB8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACDB8: using guessed type int (__thiscall *off_6ACDB8)(void *, char); //----- (0044FCC0) -------------------------------------------------------- int __thiscall sub_44FCC0(void *this, int a2, char a3, char a4, char a5, char a6, char a7) { void *v7; // esi@1 v7 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffect::cie_SetEndTime"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectList::ChargedItemEffect::cie_SetEndTime"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v7 + 4) = a3; *(_DWORD *)v7 = a2; *((_BYTE *)v7 + 6) = a5; *((_BYTE *)v7 + 5) = a4; *((_BYTE *)v7 + 8) = a7; *((_BYTE *)v7 + 7) = a6; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffect::cie_SetEndTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0044FD40) -------------------------------------------------------- int __thiscall sub_44FD40(void *this, int a2, __int16 a3) { void *v3; // esi@1 int v4; // eax@1 unsigned __int16 v5; // ax@12 unsigned __int16 v6; // ax@14 unsigned __int16 v7; // ax@16 unsigned __int16 v8; // ax@18 unsigned __int16 v9; // ax@20 unsigned __int16 v10; // ax@22 unsigned __int16 v11; // ax@24 unsigned __int16 v12; // ax@26 unsigned __int16 v13; // ax@28 unsigned int v14; // eax@30 int v15; // ecx@32 unsigned int v16; // eax@32 unsigned __int16 v17; // ax@37 unsigned __int16 v18; // ax@42 int v19; // ecx@44 unsigned __int16 v20; // ax@45 unsigned __int16 v21; // ax@47 unsigned __int16 v22; // ax@50 unsigned __int16 v23; // ax@52 unsigned __int16 v24; // ax@54 unsigned __int16 v25; // ax@56 unsigned __int16 v26; // ax@60 int v27; // eax@63 int v28; // eax@64 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)v3; switch ( *(_DWORD *)(*(_DWORD *)v3 + 36) ) { case 0: if ( (unsigned __int16)*(_BYTE *)(a2 + 624) > *(_WORD *)(v4 + 40) ) *(_BYTE *)(a2 + 624) = *(_BYTE *)(v4 + 40); break; case 1: *(_BYTE *)(a2 + 630) = 1; *(_WORD *)(a2 + 632) = a3; break; case 2: *(_BYTE *)(a2 + 634) += *(_BYTE *)(v4 + 40); if ( *(_BYTE *)(a2 + 634) > 4u ) *(_BYTE *)(a2 + 634) = 4; break; case 3: *(_BYTE *)(a2 + 635) += *(_BYTE *)(v4 + 40); if ( *(_BYTE *)(a2 + 635) > 2u ) *(_BYTE *)(a2 + 635) = 2; break; case 4: *(_BYTE *)(a2 + 636) += *(_BYTE *)(v4 + 40); if ( *(_BYTE *)(a2 + 636) > 0x14u ) *(_BYTE *)(a2 + 636) = 20; break; case 5: *(_BYTE *)(a2 + 637) = 1; break; case 6: v5 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 626) < v5 ) *(_WORD *)(a2 + 626) = v5; break; case 7: v6 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 628) < v6 ) *(_WORD *)(a2 + 628) = v6; break; case 8: v7 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 626) < v7 ) *(_WORD *)(a2 + 626) = v7; v8 = *(_WORD *)(*(_DWORD *)v3 + 40); if ( *(_WORD *)(a2 + 628) < v8 ) *(_WORD *)(a2 + 628) = v8; break; case 0xD: v9 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 638) < v9 ) *(_WORD *)(a2 + 638) = v9; break; case 0xE: v10 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 640) < v10 ) *(_WORD *)(a2 + 640) = v10; break; case 0xF: v11 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 638) < v11 ) *(_WORD *)(a2 + 638) = v11; v12 = *(_WORD *)(*(_DWORD *)v3 + 40); if ( *(_WORD *)(a2 + 640) < v12 ) *(_WORD *)(a2 + 640) = v12; v13 = *(_WORD *)(*(_DWORD *)v3 + 40); if ( *(_WORD *)(a2 + 662) < v13 ) *(_WORD *)(a2 + 662) = v13; break; case 0xA: v14 = ((signed int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( *(_WORD *)(a2 + 642) < (signed int)v14 ) *(_WORD *)(a2 + 642) = v14; break; case 0xB: v15 = a2; v16 = ((signed int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); goto LABEL_33; case 0xC: v15 = a2; v16 = ((signed int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( *(_WORD *)(a2 + 642) < (signed int)v16 ) *(_WORD *)(a2 + 642) = v16; LABEL_33: if ( *(_WORD *)(v15 + 644) < (signed int)v16 ) *(_WORD *)(v15 + 644) = v16; break; case 0x10: v17 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 646) < v17 ) *(_WORD *)(a2 + 646) = v17; break; case 0x11: *(_BYTE *)(a2 + 648) = *(_BYTE *)(v4 + 40); break; case 0x12: *(_WORD *)(a2 + 650) = *(_WORD *)(v4 + 40); break; case 0x13: *(_BYTE *)(a2 + 649) = *(_BYTE *)(v4 + 40); break; case 0x14: v18 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 652) < v18 ) *(_WORD *)(a2 + 652) = v18; break; case 0x15: v19 = a2; goto LABEL_45; case 0x16: v21 = *(_WORD *)(v4 + 40); v19 = a2; if ( *(_WORD *)(a2 + 652) < v21 ) *(_WORD *)(a2 + 652) = v21; v4 = *(_DWORD *)v3; LABEL_45: v20 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(v19 + 654) < v20 ) *(_WORD *)(v19 + 654) = v20; break; case 0x17: v22 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 656) < v22 ) *(_WORD *)(a2 + 656) = v22; break; case 0x18: v23 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 658) < v23 ) *(_WORD *)(a2 + 658) = v23; break; case 0x19: v24 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 656) < v24 ) *(_WORD *)(a2 + 656) = v24; v25 = *(_WORD *)(*(_DWORD *)v3 + 40); if ( *(_WORD *)(a2 + 658) < v25 ) *(_WORD *)(a2 + 658) = v25; break; case 0x21: if ( (unsigned __int16)*(_BYTE *)(a2 + 660) < *(_WORD *)(v4 + 40) ) *(_BYTE *)(a2 + 660) = *(_BYTE *)(v4 + 40); break; case 0x22: v26 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(a2 + 662) < v26 ) *(_WORD *)(a2 + 662) = v26; break; case 0x23: *(_BYTE *)(a2 + 664) = 1; break; case 0x24: v27 = *(_WORD *)(v4 + 40) - 1; if ( v27 ) { v28 = v27 - 1; if ( v28 ) { if ( v28 == 1 ) *(_BYTE *)(a2 + 667) = 1; } else { *(_BYTE *)(a2 + 666) = 1; } } else { *(_BYTE *)(a2 + 665) = 1; } break; case 0x26: *(_BYTE *)(a2 + 668) = 1; break; default: break; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00450240) -------------------------------------------------------- int __thiscall sub_450240(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@3 int v6; // eax@6 void *v7; // eax@7 int v8; // eax@9 void *v10; // [sp+14h] [bp-10h]@1 v10 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_Free"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_Free"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 12))(a3); v4 = off_849C18; *(_WORD *)off_849C18 = -28670; *(_DWORD *)((char *)v4 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 836))(a4); *(_DWORD *)((char *)v4 + 6) = (unsigned __int16)a3; *((_WORD *)v4 + 5) = **(_WORD **)v10; *((_DWORD *)v4 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 836))(a4); if ( sub_4C81E0(&off_849C18, 16) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::ciee_Free1 : Packet Too Long", 16); } if ( sub_4C81E0(&off_849C18, 16) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::ciee_Free2 : Packet Too Long", 16); } v7 = off_849C18; *(_WORD *)off_849C18 = -28668; *(_DWORD *)((char *)v7 + 2) = (unsigned __int16)a3; if ( sub_4C81E0(&off_849C18, 6) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 764))(a4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, a4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::ciee_Free3 : Packet Too Long", 6); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 860))(a4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 872))(a4); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a4 + 52))(a4, 1); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a4 + 3640))(a4, *(_DWORD *)v10); *(_BYTE *)(a2 + 670) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_Free"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; //----- (00450430) -------------------------------------------------------- int __thiscall sub_450430(void *this, int a2, int a3, int a4) { void *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@10 unsigned int v11; // eax@10 int v13; // [sp-Ch] [bp-24h]@3 int v14; // [sp-8h] [bp-20h]@3 int v15; // [sp-4h] [bp-1Ch]@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_BYTE *)v4 + 4); if ( v5 > (unsigned __int8)dword_AA0BC8 ) goto LABEL_11; if ( v5 < (unsigned __int8)dword_AA0BC8 ) { LABEL_3: v15 = a4; v14 = a3; v13 = a2; LABEL_16: sub_450240(v4, v13, v14, v15); goto LABEL_17; } v6 = *((_BYTE *)v4 + 5); v7 = ((unsigned int)dword_AA0BC8 >> 8) & 0x1F; if ( v6 <= v7 ) { if ( v6 < v7 ) { v15 = a4; v14 = a3; v13 = a2; goto LABEL_16; } v8 = *((_BYTE *)v4 + 6); v9 = ((unsigned int)dword_AA0BC8 >> 13) & 0x3F; if ( v8 > v9 ) goto LABEL_20; if ( v8 >= v9 ) { v10 = *((_BYTE *)v4 + 7); v11 = ((unsigned int)dword_AA0BC8 >> 19) & 0x3F; if ( v10 > v11 ) { LABEL_11: sub_44FD40(v4, a2, a3); goto LABEL_17; } if ( v10 < v11 ) goto LABEL_3; if ( *((_BYTE *)v4 + 8) >= (unsigned int)dword_AA0BC8 >> 25 ) { LABEL_20: sub_44FD40(v4, a2, a3); goto LABEL_17; } } v15 = a4; v14 = a3; v13 = a2; goto LABEL_16; } sub_44FD40(v4, a2, a3); LABEL_17: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; //----- (00450590) -------------------------------------------------------- void __thiscall sub_450590(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6ACF80; _LN21((void *)(this + 24), 0xCu, 50, nullsub_2); *(_DWORD *)v1 = &off_6ACDB8; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6ACDB8: using guessed type int (__thiscall *off_6ACDB8)(void *, char); // 6ACF80: using guessed type int (__thiscall *off_6ACF80)(void *, char); //----- (00450600) -------------------------------------------------------- int __thiscall sub_450600(int this, int a2, int a3) { int v3; // esi@1 v3 = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6ACFA4; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 12) = *(_BYTE *)((*(int (**)(void))(*(_DWORD *)a3 + 1176))() + 25); return v3; } // 6ACFA4: using guessed type int (__stdcall *off_6ACFA4)(int, int); //----- (00450670) -------------------------------------------------------- int __thiscall sub_450670(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6ACFA4; result = *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(this + 8) + 1176))() + 25); if ( result != *(_DWORD *)(v1 + 12) ) { (*(void (**)(void))(**(_DWORD **)(v1 + 8) + 1404))(); result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v1 + 8) + 52))(1); } *(_DWORD *)v1 = &off_6A200C; return result; } // 6A200C: using guessed type int (__stdcall *off_6A200C)(int, int); // 6ACFA4: using guessed type int (__stdcall *off_6ACFA4)(int, int); //----- (004506F0) -------------------------------------------------------- char __thiscall sub_4506F0(void *this, void *a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedEffectListRouter::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ChargedItemEffectList::ChargedEffectListRouter::lid_Call"; dword_750AB8[dword_750CB8++] = -1; sub_450430(a2, *((_DWORD *)v3 + 1), a3, *((_DWORD *)v3 + 2)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ChargedItemEffectList::ChargedEffectListRouter::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004507A0) -------------------------------------------------------- int __thiscall sub_4507A0(int this, int a2, int a3, int a4, char a5) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = &off_6ACFE8; *(_DWORD *)(this + 12) = a4; *(_BYTE *)(this + 16) = a5; return result; } // 6ACFE8: using guessed type int (__stdcall *off_6ACFE8)(int, int); //----- (004507D0) -------------------------------------------------------- char __thiscall sub_4507D0(int this, void *a2, int a3) { int v3; // esi@1 int v5; // eax@3 int v6; // eax@6 int v7; // ecx@8 int v8; // edx@8 int v9; // eax@14 bool v10; // zf@14 v3 = this; if ( !*(_DWORD *)(this + 4) || (v5 = *(_DWORD *)(this + 12)) == 0 || *(_DWORD *)(v5 + 36) != 36 ) return 0; if ( !a2 || (v6 = sub_417060(a2)) == 0 || *(_DWORD *)(v6 + 36) != 36 ) return 1; v7 = *(_WORD *)(*(_DWORD *)(v3 + 12) + 40); v8 = *(_WORD *)(v6 + 40); if ( (_WORD)v7 == (_WORD)v8 ) { LABEL_12: sub_450240(a2, *(_DWORD *)(v3 + 4), a3, *(_DWORD *)(v3 + 8)); return 1; } if ( v7 == 1 ) { if ( v8 != 3 ) return 1; v9 = *(_DWORD *)(v3 + 4); v10 = *(_BYTE *)(v9 + 666) == 0; goto LABEL_17; } if ( v7 == 2 ) { if ( v8 != 3 ) return 1; v9 = *(_DWORD *)(v3 + 4); v10 = *(_BYTE *)(v9 + 665) == 0; LABEL_17: if ( !v10 ) sub_450240(a2, v9, a3, *(_DWORD *)(v3 + 8)); return 1; } if ( v7 == 3 ) goto LABEL_12; return 1; } //----- (00450880) -------------------------------------------------------- int __thiscall sub_450880(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int (__thiscall *v6)(_DWORD); // eax@1 int v7; // eax@1 int v8; // ecx@1 _BYTE *v9; // ecx@1 __int16 v11; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [bp-4h]@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ItemDelete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ItemDelete"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1388); v12 = 0; v7 = v6(v5); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; sub_526030(v5, *((_WORD *)v5 + 2), a2, (int)&v11); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ItemDelete"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00450990) -------------------------------------------------------- int __stdcall sub_450990(int a1, int a2) { int v2; // esi@1 __time32_t Time; // [sp+10h] [bp-24h]@1 SYSTEMTIME SystemTime; // [sp+14h] [bp-20h]@1 unsigned int v6; // [sp+24h] [bp-10h]@1 int v7; // [sp+30h] [bp-4h]@1 int v8; // [sp+34h] [bp+0h]@1 v6 = (unsigned int)&v8 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; memcpy(&word_AA0BF4, (const void *)(a1 + 2), 0x24u); v2 = _LN52(&word_AA0BF4); _time32(&Time); SystemTime.wSecond = word_AA0BF4; SystemTime.wHour = dword_AA0BFC; SystemTime.wMinute = dword_AA0BF8; SystemTime.wDay = dword_AA0C00; SystemTime.wYear = dword_AA0C08 + 1900; SystemTime.wMonth = dword_AA0C04 + 1; dword_AA0C18 = v2 - Time; SystemTime.wDayOfWeek = word_AA0C0C; SystemTime.wMilliseconds = 0; SetLocalTime(&SystemTime); if ( !byte_14D129F4 ) { dword_14D129E8 = 0; qword_14D129E0 = 0i64; dword_14D129D8 = timeGetTime(); byte_14D129F4 = 1; dword_14D129F0 = timeGetTime(); } sub_5CFAD0(&unk_14D40994); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0BF4: using guessed type __int16 word_AA0BF4; // AA0BF8: using guessed type int dword_AA0BF8; // AA0BFC: using guessed type int dword_AA0BFC; // AA0C00: using guessed type int dword_AA0C00; // AA0C04: using guessed type int dword_AA0C04; // AA0C08: using guessed type int dword_AA0C08; // AA0C0C: using guessed type __int16 word_AA0C0C; // AA0C18: using guessed type int dword_AA0C18; // 14D129D8: using guessed type int dword_14D129D8; // 14D129E0: using guessed type __int64 qword_14D129E0; // 14D129E8: using guessed type int dword_14D129E8; // 14D129F0: using guessed type int dword_14D129F0; // 14D129F4: using guessed type char byte_14D129F4; //----- (00450B10) -------------------------------------------------------- int __thiscall sub_450B10(void *this, __time32_t a2) { void *v2; // esi@1 int v3; // eax@1 char *v4; // ecx@2 int v5; // edi@6 void *v6; // esi@8 struct tm *v7; // eax@9 __time32_t Time; // [sp+14h] [bp-10h]@9 int v10; // [sp+20h] [bp-4h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemTest"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemTest"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v10 = 0; if ( dword_AA0B00 > 0 ) { v4 = (char *)dword_AA0AFC + 4; while ( **(_WORD **)v4 != a2 ) { ++v3; v4 += 8; if ( v3 >= dword_AA0B00 ) goto LABEL_10; } v5 = *((_DWORD *)dword_AA0AFC + 2 * v3 + 1); if ( v5 ) { if ( *((_WORD *)v2 + 79850) != -1 ) { v6 = (void *)(*(int (__stdcall **)(_DWORD))(*((_DWORD *)v2 + 39922) + 8))(*((_WORD *)v2 + 79850)); if ( v6 ) { _time32(&a2); a2 += dword_AA0C18; Time = a2; v7 = _localtime32(&Time); sub_44FCC0(v6, v5, v7->tm_year - 100, v7->tm_mon + 1, v7->tm_mday, v7->tm_hour, LOBYTE(v7->tm_min) + 5); } } } } LABEL_10: --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemTest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0B00: using guessed type int dword_AA0B00; // AA0C18: using guessed type int dword_AA0C18; //----- (00450C50) -------------------------------------------------------- void *__thiscall sub_450C50(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6ACF80; _LN21((char *)this + 24, 0xCu, 50, nullsub_2); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6ACDB8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ACDB8: using guessed type int (__thiscall *off_6ACDB8)(void *, char); // 6ACF80: using guessed type int (__thiscall *off_6ACF80)(void *, char); //----- (00450CE0) -------------------------------------------------------- int __thiscall sub_450CE0(void *this, int a2, int a3) { void *v3; // ebx@1 int (*v4)(void); // eax@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // edi@2 int v7; // esi@2 int v8; // eax@4 unsigned int v9; // esi@5 unsigned int v10; // edx@5 int v11; // ecx@8 unsigned int v12; // edx@8 int v13; // ecx@10 unsigned int v14; // edx@10 int v15; // ecx@12 unsigned int v16; // edx@12 int (**v18)(); // [sp+10h] [bp-2Ch]@1 int v19; // [sp+14h] [bp-28h]@1 int v20; // [sp+1Ch] [bp-20h]@1 int *v21; // [sp+20h] [bp-1Ch]@1 int v22; // [sp+24h] [bp-18h]@1 int v23; // [sp+28h] [bp-14h]@1 int v24; // [sp+2Ch] [bp-10h]@1 int v25; // [sp+38h] [bp-4h]@1 v3 = this; v24 = (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"; dword_750AB8[dword_750CB8++] = -1; v18 = &off_6A86A4; v19 = a2; v4 = *(int (**)(void))(*(_DWORD *)a2 + 8); v25 = 0; v20 = v4(); v18 = (int (**)())&off_6A86AC; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); LOBYTE(v25) = 1; v21 = (int *)&v18; v22 = v5(v3); v23 = a3; if ( sub_486D40(&v21) ) { do { v6 = (**(int (__stdcall ***)(_DWORD))v21[1])(v21[2]); v7 = *(_DWORD *)(v6 + 112); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 40))(*(_DWORD *)(v6 + 112)) != 23 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1156))(v3) != 6 ) { v8 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 52))(v7, v6 + 8); if ( v8 ) { v9 = *(_DWORD *)v8; v10 = (unsigned __int8)*(_DWORD *)v8; if ( (unsigned __int8)*(_DWORD *)v8 ) { if ( v10 <= (unsigned __int8)dword_AA0BC8 ) { if ( v10 < (unsigned __int8)dword_AA0BC8 || (v11 = (v9 >> 8) & 0x1F, v12 = ((unsigned int)dword_AA0BC8 >> 8) & 0x1F, v11 <= v12) && (v11 < v12 || (v13 = (v9 >> 13) & 0x3F, v14 = ((unsigned int)dword_AA0BC8 >> 13) & 0x3F, v13 <= v14) && (v13 < v14 || (v15 = (v9 >> 19) & 0x3F, v16 = ((unsigned int)dword_AA0BC8 >> 19) & 0x3F, v15 <= v16) && (v15 < v16 || (v9 & 0xFE000000) < (dword_AA0BC8 & 0xFE000000u)))) ) sub_450880(v3, v6, a3, v21[2], v8); } } } } } while ( sub_486DA0((void **)&v21) ); } --dword_750CB8; v18 = &off_6A86A4; v25 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; //----- (00450EC0) -------------------------------------------------------- char __thiscall sub_450EC0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6AC3EC; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6AC3EC: using guessed type int (__stdcall *off_6AC3EC)(int, int); //----- (00451040) -------------------------------------------------------- int __thiscall sub_451040(int this) { int v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // edi@1 int v5; // ecx@3 int v6; // ecx@6 bool v7; // zf@6 int v8; // ecx@6 int v9; // ecx@9 int v10; // ecx@12 int v11; // ecx@15 signed int v13; // [sp+18h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6ACDB8; *(_DWORD *)(this + 16) = 0; sub_450EC0(this, 0x32u); *(_DWORD *)v1 = &off_6ACF80; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0xCu, 50, (int)sub_5CF620, nullsub_2); v2 = 2; v13 = 36; v3 = v1 + 36; v4 = -36 - v1; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = v4 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v3 - 12; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v6 = v4 + *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 + 12) == 0; v8 = v6 + v3 + 12; if ( v7 ) *(_DWORD *)v8 = v3; } if ( v2 < *(_WORD *)(v1 + 4) ) { v9 = -12 - v1 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v9 + v3) ) *(_DWORD *)(v9 + v3) = v3 + 12; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v10 = v13 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)v10 ) *(_DWORD *)v10 = v3 + 24; } if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v11 = 12 - v1 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v11 + v3) ) *(_DWORD *)(v11 + v3) = v3 + 36; } v13 += 60; v2 += 5; v3 += 60; } while ( v2 - 2 < 50 ); return v1; } // 6ACDB8: using guessed type int (__thiscall *off_6ACDB8)(void *, char); // 6ACF80: using guessed type int (__thiscall *off_6ACF80)(void *, char); //----- (00451180) -------------------------------------------------------- int __thiscall sub_451180(int this, int a2) { int v2; // edx@1 int result; // eax@1 v2 = (*(_DWORD *)(this + 32768) + 1) & *(_DWORD *)(this + 32772); *(_DWORD *)(this + 32768) = v2; result = this + (v2 << 8); *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(result + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(result + 28) = *(_DWORD *)(a2 + 28); *(_BYTE *)(result + 32) = 0; return result; } //----- (004511E0) -------------------------------------------------------- int __thiscall sub_4511E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ecx@4 int v6; // eax@4 int v7; // eax@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 816))(v4, 0); if ( !(dword_AA0C24 & 1) ) { dword_AA0C24 |= 1u; word_AA0C20 = 1; atexit(nullsub_21); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AA0C20 ) { v5 = off_849C18; v6 = dword_AA0C1C + 1; *(_WORD *)off_849C18 = 2055; dword_AA0C1C = v6; if ( v6 >= dword_703A38 ) { LOWORD(v6) = 0; dword_AA0C1C = 0; } *((_WORD *)v5 + 1) = v6; if ( v4 == (void *)-32392 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ : No PacketEncrypt", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(vFFFF8178 + 1528))(-32392, 1670, 0, 0); } else { if ( sub_4C81E0(&off_849C18, 4) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ : Packet Too Long", 4); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ"); } // 703A38: using guessed type int dword_703A38; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0C1C: using guessed type int dword_AA0C1C; // AA0C20: using guessed type __int16 word_AA0C20; // AA0C24: using guessed type int dword_AA0C24; //----- (00451380) -------------------------------------------------------- int __usercall sub_451380(int a1, int a2, int a3) { int v3; // ebx@1 int result; // eax@3 int v5; // esi@4 int (__thiscall *v6)(_DWORD); // eax@7 int v7; // eax@7 int v8; // eax@7 int v9; // ecx@9 int v10; // eax@9 int v11; // eax@9 int v12; // ST04_4@9 __time32_t v13; // eax@9 __time32_t v14; // eax@9 __time32_t v15; // eax@9 __time32_t v16; // eax@9 __time32_t v17; // eax@9 int v18; // edi@9 bool v19; // al@9 __time32_t v20; // eax@12 __time32_t v21; // eax@12 int v22; // esi@12 unsigned __int8 v23; // al@13 int v24; // eax@16 int v25; // edi@16 int v26; // eax@18 __time32_t v27; // eax@22 __time32_t v28; // eax@22 int v29; // eax@22 int v30; // esi@22 int v31; // eax@23 unsigned __int16 v32; // ax@23 int v33; // edi@23 int v34; // eax@23 int v35; // eax@23 int v36; // eax@24 int v37; // edx@24 unsigned __int8 v38; // al@25 unsigned __int8 v39; // al@26 int v40; // eax@30 int v41; // edi@30 int v42; // eax@32 unsigned __int8 v43; // al@36 void *v44; // ecx@39 int v45; // eax@41 int v46; // edi@43 int (__thiscall *v47)(_DWORD, _DWORD); // eax@44 int v48; // eax@44 int v49; // eax@44 int v50; // eax@44 int v51; // [sp-8h] [bp-80h]@9 int v52; // [sp-4h] [bp-7Ch]@4 void *v53; // [sp+4h] [bp-74h]@7 char v54; // [sp+8h] [bp-70h]@7 char v55; // [sp+Fh] [bp-69h]@7 char v56[4]; // [sp+24h] [bp-54h]@13 int v57; // [sp+28h] [bp-50h]@13 int v58; // [sp+2Ch] [bp-4Ch]@13 char v59; // [sp+30h] [bp-48h]@13 char v60[4]; // [sp+45h] [bp-33h]@13 int v61; // [sp+49h] [bp-2Fh]@13 int v62; // [sp+4Dh] [bp-2Bh]@13 char v63; // [sp+51h] [bp-27h]@13 int v64; // [sp+66h] [bp-12h]@14 int v65; // [sp+6Ah] [bp-Eh]@14 __int16 v66; // [sp+6Eh] [bp-Ah]@19 unsigned int v67; // [sp+74h] [bp-4h]@1 int v68; // [sp+78h] [bp+0h]@1 v67 = (unsigned int)&v68 ^ __security_cookie; v3 = a1; if ( !(dword_AA0C2C & 1) ) { dword_AA0C2C |= 1u; word_AA0C28 = 8; atexit(nullsub_23); } result = (unsigned __int16)word_AA0C28; if ( (1 << **(_BYTE **)(v3 + 3828)) & (unsigned __int16)word_AA0C28 ) { v52 = a3; v5 = 0; if ( *(_DWORD *)(v3 + 122) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836); *(_DWORD *)(v3 + 161508) = 0; *(_BYTE *)(v3 + 161628) = 0; *(_DWORD *)(v3 + 161632) = 0; v7 = v6(v3); sub_4170D0((int)&dword_878768, v7); v8 = sub_494970(&dword_D61E090, *(_DWORD *)(*(_DWORD *)(v3 + 122) + 60), (int)&v54); v53 = (void *)v8; v55 = 0; if ( v8 ) v5 = sub_496040((void *)v8, (int)&v55); v9 = *(_DWORD *)(v3 + 122); v10 = dword_8622C4 & (dword_8622C0 + 1); v51 = a2; dword_8622C0 = v10; v11 = (int)&byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v9 + 4); v12 = v11; *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_BYTE *)(v11 + 12) = 0; v13 = sub_418EA0((__time32_t)byte_14D14D00, (int)"Revive Ready["); v14 = sub_418EA0(v13, v12); v15 = sub_418EA0(v14, (int)"/"); v16 = sub_43B910(v15, v5); v17 = sub_418EA0(v16, (int)"]"); sub_418F20(v17, (int)&unk_13359E04); v18 = sub_4989A0((void *)v3, (int (__stdcall *)(_DWORD))sub_496300); v19 = sub_474A60(*(_DWORD *)(v3 + 122)); if ( (!v5 || v5 <= v18) && !v19 ) { v20 = sub_418EA0((__time32_t)byte_14D14D00, (int)"Revive City["); v21 = sub_43B910(v20, v18); sub_418F20(v21, (int)&unk_13359E04); result = *(_DWORD *)(v3 + 122); v22 = *(_DWORD *)(result + 12); if ( !v22 ) return result; *(_DWORD *)v56 = *(_DWORD *)(v22 + 110); v57 = *(_DWORD *)(v22 + 114); v58 = *(_DWORD *)(v22 + 118); v59 = 0; *(_DWORD *)v60 = *(_DWORD *)(v22 + 110); v61 = *(_DWORD *)(v22 + 114); v62 = *(_DWORD *)(v22 + 118); v63 = 0; v23 = sub_427920(&unk_14D42DC0, *(_BYTE *)(v22 + 154)); if ( v23 >= 4u ) { v64 = *(_DWORD *)(v22 + 122); v65 = *(_DWORD *)(v22 + 126); } else { v64 = *(_DWORD *)(v22 + 8 * v23 + 122); v65 = *(_DWORD *)(v22 + 8 * v23 + 126); } v24 = sub_4627E0(*(void **)(v3 + 122)); v25 = v24; if ( v24 && sub_479420((void *)v24, v3) ) { v26 = sub_4780E0(v25, v3); if ( (unsigned int)v26 < 4 ) { v64 = *(_DWORD *)(v22 + 8 * v26 + 122); v65 = *(_DWORD *)(v22 + 8 * v26 + 126); v66 = 0; LABEL_42: (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v3 + 3860))(v3, 0, v51, v52); *(_BYTE *)(v3 + 23824) |= 1u; **(_BYTE **)(v3 + 3828) = 1; if ( *(_BYTE *)(v3 + 155503) ) { v46 = *(_DWORD *)(v3 + 32650) + 37; memcpy((void *)v46, (const void *)(v3 + 155460), 0x28u); v46 += 40; *(_WORD *)v46 = *(_WORD *)(v3 + 155500); *(_BYTE *)(v46 + 2) = *(_BYTE *)(v3 + 155502); *(_BYTE *)(v3 + 155503) = 0; } *(_DWORD *)(v3 + 32703) = (unsigned int)(307 * (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1264))(v3)) >> 10; *(_BYTE *)(v3 + 7636) = 0; sub_590150((void *)v3); v47 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 836); v66 = 0; v48 = v47(v3, v3); v49 = sub_418440(&dword_878758, v48); sub_417AA0((void *)v49, v53); v50 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); sub_4170D0((int)&dword_878758, v50); return (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1536))(v3); } v64 = *(_DWORD *)(v22 + 122); v65 = *(_DWORD *)(v22 + 126); sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ReviveReqProcess : Guild Map Revive Point Low", v26); } v66 = 0; goto LABEL_42; } v27 = sub_418EA0((__time32_t)byte_14D14D00, (int)"Revive Here["); v28 = sub_43B910(v27, v18); sub_418F20(v28, (int)&unk_13359E04); v29 = sub_418B00((int)byte_85A2C0, *(_DWORD *)(v3 + 122)); result = sub_63AB60(&unk_CFCF398, (const char *)v29); v30 = result; if ( !result ) return result; v31 = sub_418B00((int)byte_85A2C0, result); v32 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v31); v33 = sub_4190D0((int)&unk_14D20370, v32); v34 = sub_418B00((int)byte_85A2C0, *(_DWORD *)(v3 + 122)); strncpy(v56, (const char *)v34, 0xCu); v35 = sub_418B00((int)byte_85A2C0, v30); strncpy(v60, (const char *)v35, 0xCu); v63 = 0; v59 = 0; if ( v55 ) { v36 = *(_DWORD *)(v3 + 102); v64 = *(_DWORD *)v36; v37 = *(_DWORD *)(v36 + 4); } else { v38 = *(_BYTE *)(v30 + 154); if ( v38 <= 1u ) { v64 = *(_DWORD *)(v33 + 50); v65 = *(_DWORD *)(v33 + 54); } else { v39 = sub_427920(&unk_14D42DC0, v38); if ( v39 >= 4u ) v39 = 0; v64 = *(_DWORD *)(v30 + 8 * v39 + 122); v65 = *(_DWORD *)(v30 + 8 * v39 + 126); } v40 = sub_4627E0(*(void **)(v3 + 122)); v41 = v40; if ( v40 && sub_479420((void *)v40, v3) ) { v42 = sub_4780E0(v41, v3); if ( (unsigned int)v42 >= 4 ) { v64 = *(_DWORD *)(v30 + 122); v65 = *(_DWORD *)(v30 + 126); sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ReviveReqProcess : Guild Map Revive Point Low", v42); } else { v64 = *(_DWORD *)(v30 + 8 * v42 + 122); v65 = *(_DWORD *)(v30 + 8 * v42 + 126); } } if ( !v53 || (v43 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3584))(v3), v43 >= 2u) ) goto LABEL_39; v64 = *(_DWORD *)((char *)v53 + 8 * v43 + 365); v37 = *(_DWORD *)((char *)v53 + 8 * v43 + 369); } v65 = v37; LABEL_39: *(_BYTE *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1064))(v3) = 0; v44 = *(void **)(v3 + 122); if ( v44 && sub_4627E0(v44) ) { v45 = sub_4627E0(*(void **)(v3 + 122)); sub_479520((void *)v45, v3); } goto LABEL_42; } } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // AA0C28: using guessed type __int16 word_AA0C28; // AA0C2C: using guessed type int dword_AA0C2C; // D61E090: using guessed type int dword_D61E090; //----- (00451880) -------------------------------------------------------- int __stdcall sub_451880(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_CLASSCHANGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_CLASSCHANGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1736))(v2, *(_BYTE *)(a1 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_CLASSCHANGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00451960) -------------------------------------------------------- int __thiscall sub_451960(void *this, unsigned __int8 a2) { int v2; // esi@1 void *v3; // ebx@1 int v4; // eax@4 int v5; // eax@9 int v6; // edx@13 unsigned __int8 v7; // cl@13 void *v8; // edi@17 int v9; // eax@19 int v10; // ST04_4@21 int v11; // eax@21 char v13; // [sp+10h] [bp-1Ch]@21 int v14; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+28h] [bp-4h]@1 v2 = (int)this; v14 = (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v15 = 0; *(_WORD *)off_849C18 = 4185; if ( a2 ) { *(_BYTE *)(v2 + 32766) ^= (*(_BYTE *)(v2 + 32766) ^ 4 * a2) & 0x7C; if ( a2 >= 0x40u ) v4 = (int)&unk_8BB3B0; else v4 = dword_A9F908[a2]; *(_DWORD *)(v2 + 4116) = v4; *((_BYTE *)v3 + 2) = a2; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange : None Class", 0); *((_BYTE *)v3 + 2) = 0; } if ( sub_4C81E0(&off_849C18, 3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange : Packet Too Long", 3); } if ( a2 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1404))(v2); sub_589A00((void *)v2); } if ( *(_DWORD *)(v2 + 32650) ) { *(_BYTE *)(*(_DWORD *)(v2 + 32650) + 32) = a2; v6 = *(_DWORD *)(v2 + 32650); v7 = *(_BYTE *)(v6 + 31); if ( v7 ) { if ( v7 <= 2u || v7 == 6 ) *(_BYTE *)(*(_DWORD *)(v2 + 32650) + 33) ^= (*(_BYTE *)(v6 + 33) ^ 4 * a2) & 0x7C; } } v8 = off_849C18; *(_WORD *)off_849C18 = 4184; *((_WORD *)v8 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v8 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 832))(v2); *((_BYTE *)v8 + 10) = (*(int (**)(void))(**(_DWORD **)(v2 + 4116) + 56))(); if ( sub_4C81E0(&off_849C18, 11) ) { v9 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v9); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange : Packet Too Long", 11); } if ( a2 ) { *(_WORD *)v3 = 4186; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_BYTE *)v3 + 4) = a2; sub_4287B0(&v13, &off_849C18, 5); v10 = *(_DWORD *)(v2 + 102); LOBYTE(v15) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v11, v10, 0, 0, (int)&v13, 0, 65535); LOBYTE(v15) = 0; sub_428A70(&v13); } sub_46CAA0((int)&unk_14D138B8, v2); --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ClassChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // A9F908: using guessed type int dword_A9F908[]; // 14D12A00: using guessed type int dword_14D12A00; //----- (00451BE0) -------------------------------------------------------- int __thiscall sub_451BE0(void *this, int a2) { void *v2; // esi@1 int v3; // ST20_4@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+10h] [bp-90h]@1 unsigned int v8; // [sp+90h] [bp-10h]@1 int v9; // [sp+9Ch] [bp-4h]@1 int v10; // [sp+A0h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_NPCRevive"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineNPC::so_NPCRevive"; dword_750AB8[dword_750CB8++] = -1; v3 = **((_BYTE **)v2 + 957); v9 = 0; sprintf(&v7, "Changed from %d to %d", v3, 2); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 1924))(a2, &v7); **((_BYTE **)v2 + 957) = 2; v4 = *(_DWORD *)((char *)v2 + 102); v5 = sub_427BD0(&unk_13253E80); sub_549C70(v2, v5, v4, 0, 0, (int)sub_5789F0, 0, 0, 0, 0, 65535); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_NPCRevive"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00451D00) -------------------------------------------------------- int __thiscall sub_451D00(void *this) { void *v1; // esi@1 int v2; // edi@1 int result; // eax@1 int v4; // ebx@2 v1 = this; v2 = 0; result = (*(int (**)(void))(*(_DWORD *)this + 8))(); if ( result > 0 ) { do { v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))v1)(v1, v2); sub_63FD30(v4); *(_DWORD *)(v4 + 16) = dword_1508B168; ++v2; result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 8))(v1); } while ( v2 < result ); } return result; } //----- (00451D40) -------------------------------------------------------- int __thiscall sub_451D40(void *this, int a2, int a3, __int16 a4) { void *v4; // edi@1 int v5; // eax@1 int v6; // esi@1 _BYTE *v7; // eax@1 signed int v8; // eax@1 unsigned int v9; // ebx@1 int v10; // eax@3 int v11; // eax@5 _BYTE *v12; // eax@5 void *v13; // eax@5 int v14; // eax@7 int v15; // eax@12 _BYTE *v16; // eax@12 int v17; // eax@13 _BYTE *v18; // eax@13 void *v19; // eax@13 int v20; // eax@15 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 816))(v4, 0); v5 = dword_8622C4 & (dword_8622C0 + 1); v6 = a2 + 4; dword_8622C0 = v5; v7 = &byte_85A2C0[256 * v5]; *(_DWORD *)v7 = *(_DWORD *)(a2 + 4); *((_DWORD *)v7 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v7 + 2) = *(_DWORD *)(a2 + 12); *((_DWORD *)v7 + 3) = *(_DWORD *)(a2 + 16); *((_DWORD *)v7 + 4) = *(_DWORD *)(a2 + 20); v7[20] = 0; v8 = sub_62E0C0(&unk_14D420D8, a2 + 24); v9 = v8; if ( (unsigned int)v8 > 0x30 ) { if ( !(dword_AA0C34 & 1) ) { dword_AA0C34 |= 1u; word_AA0C30 = 1; atexit(nullsub_22); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AA0C30 ) { v17 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v17; v18 = &byte_85A2C0[256 * v17]; *(_DWORD *)v18 = *(_DWORD *)v6; *((_DWORD *)v18 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v18 + 2) = *(_DWORD *)(a2 + 12); *((_DWORD *)v18 + 3) = *(_DWORD *)(a2 + 16); *((_DWORD *)v18 + 4) = *(_DWORD *)(a2 + 20); v18[20] = 0; v19 = off_849C18; *((_WORD *)off_849C18 + 1) = a4; *((_DWORD *)v19 + 1) = -1; *(_WORD *)v19 = 4171; *((_WORD *)v19 + 4) = *(_WORD *)(a2 + 2); *(_DWORD *)((char *)v19 + 10) = *(_DWORD *)v6; *(_DWORD *)((char *)v19 + 14) = *(_DWORD *)(a2 + 8); *(_DWORD *)((char *)v19 + 18) = *(_DWORD *)(a2 + 12); *(_DWORD *)((char *)v19 + 22) = *(_DWORD *)(a2 + 16); *(_DWORD *)((char *)v19 + 26) = *(_DWORD *)(a2 + 20); if ( sub_4C81E0(&off_849C18, 30) ) { v20 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v20); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ : Packet Too Long", 30); } sub_641000((char *)v4 + 32816); sub_641000((char *)v4 + 36484); sub_641000((char *)v4 + 53192); sub_641000((char *)v4 + 53776); sub_451D00((char *)v4 + 57840); *(_DWORD *)((char *)v4 + 161761) = *(_DWORD *)v6; *(_DWORD *)((char *)v4 + 161765) = *(_DWORD *)(a2 + 8); *(_DWORD *)((char *)v4 + 161769) = *(_DWORD *)(a2 + 12); *(_DWORD *)((char *)v4 + 161773) = *(_DWORD *)(a2 + 16); *(_DWORD *)((char *)v4 + 161777) = *(_DWORD *)(a2 + 20); *(_WORD *)((char *)v4 + 161781) = 0; sub_50D340((char *)v4 + 162000); } else { v15 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v15; v16 = &byte_85A2C0[256 * v15]; *(_DWORD *)v16 = *(_DWORD *)v6; *((_DWORD *)v16 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v16 + 2) = *(_DWORD *)(a2 + 12); *((_DWORD *)v16 + 3) = *(_DWORD *)(a2 + 16); *((_DWORD *)v16 + 4) = *(_DWORD *)(a2 + 20); v16[20] = 0; sub_644DD0((int)&unk_86F128, "sp_NC_MAP_LOGIN_REQ : Invalid Mode [CharID=%s]", v16); } } else { if ( sub_62E140(&unk_14D420D8, v8) ) { sub_418B40((int)byte_85A2C0, v6); sub_62E1A0(&unk_14D420D8, v9); sub_451180((int)byte_85A2C0, 32 * v9 + a2 + 24); v10 = (int)sub_62E140(&unk_14D420D8, v9); sub_451180((int)byte_85A2C0, v10); } else { sub_418B40((int)byte_85A2C0, v6); sub_62E1A0(&unk_14D420D8, v9); sub_451180((int)byte_85A2C0, 32 * v9 + a2 + 24); } v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v6; *((_DWORD *)v12 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v12 + 2) = *(_DWORD *)(a2 + 12); *((_DWORD *)v12 + 3) = *(_DWORD *)(a2 + 16); *((_DWORD *)v12 + 4) = *(_DWORD *)(a2 + 20); v12[20] = 0; sub_644DD0((int)&unk_86F128, "sp_NC_MAP_LOGIN_REQ : DataFail [CharID=%s]", v12); v13 = off_849C18; *(_DWORD *)off_849C18 = &unk_1471804; *((_BYTE *)v13 + 4) = v9; if ( sub_4C81E0(&off_849C18, 5) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v14 + 12))(v14, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ : Packet Too Long", 5); } (*(void (__thiscall **)(void *, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 1528))(v4, 1678, 1, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // AA0C30: using guessed type __int16 word_AA0C30; // AA0C34: using guessed type int dword_AA0C34; // 14D12A00: using guessed type int dword_14D12A00; //----- (00452130) -------------------------------------------------------- int __userpurge sub_452130(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 v5 = a1; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ"; dword_750AB8[dword_750CB8++] = -1; sub_451380(v5, a2, v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004521E0) -------------------------------------------------------- int __thiscall sub_4521E0(int this, int a2, int a3, int a4) { bool v4; // cf@1 int result; // eax@2 unsigned int v6; // edx@3 unsigned int v7; // esi@3 unsigned int v8; // eax@4 unsigned int v9; // ecx@4 v4 = *(_DWORD *)this < *(_DWORD *)a4; if ( *(_DWORD *)this != *(_DWORD *)a4 || (v6 = *(_DWORD *)(a4 + 4), v7 = *(_DWORD *)(this + 4), v4 = v7 < v6, v7 != v6) ) { result = v4 ? 1 : -1; } else { v8 = *(_DWORD *)(a4 + 8); v9 = *(_DWORD *)(this + 8); if ( v8 <= v9 ) result = -(v8 < v9); else result = 1; } return result; } //----- (00452220) -------------------------------------------------------- void __thiscall sub_452220(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ecx@1 v4 = this; v5 = *(_DWORD *)(this + 122); if ( v5 ) { if ( sub_4616A0(v5, a2, a3) ) { **(_DWORD **)(v4 + 102) = a2; *(_DWORD *)(*(_DWORD *)(v4 + 102) + 4) = a3; sub_586060((void *)(v4 + 22), *(void **)(v4 + 122), v4); sub_586060((void *)(v4 + 34), *(void **)(v4 + 122), v4); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1804))(v4) ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1804))(v4); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2616))(v4, 7, 0, 0); } } //----- (004522B0) -------------------------------------------------------- char __thiscall sub_4522B0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ebx@3 int v6; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_collesioncheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_collesioncheck"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1208))(v3) ) { v4 = (*(int (**)(void))(*(_DWORD *)a2 + 1208))(); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1208))(v3) == v4 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1208))(v3) != 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_collesioncheck"); return 0; } v6 = (int)"ShineObjectClass::ShineObject::so_collesioncheck"; } else { v6 = (int)"ShineObjectClass::ShineObject::so_collesioncheck"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004523C0) -------------------------------------------------------- int __thiscall sub_4523C0(void *this, int a2, int a3) { int v3; // eax@4 _BYTE *v4; // eax@4 int v5; // eax@4 _BYTE *v6; // eax@4 int v7; // esi@4 int v8; // eax@5 _BYTE *v9; // eax@5 signed int v10; // eax@5 int v11; // eax@9 _BYTE *v12; // eax@9 int v13; // edx@9 void (__stdcall *v14)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@9 void *v16; // [sp+10h] [bp-78h]@1 char v17; // [sp+14h] [bp-74h]@9 char v18; // [sp+28h] [bp-60h]@4 char v19; // [sp+34h] [bp-54h]@4 char v20; // [sp+49h] [bp-3Fh]@9 int v21; // [sp+6Ah] [bp-1Eh]@9 int v22; // [sp+6Eh] [bp-1Ah]@9 unsigned int v23; // [sp+78h] [bp-10h]@1 int v24; // [sp+84h] [bp-4h]@1 int v25; // [sp+88h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v16 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_BriefLink"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_BriefLink"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; if ( a2 && a3 ) { v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)a2; *((_DWORD *)v4 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(a2 + 8); v4[12] = 0; strncpy(&v18, v4, 0xCu); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)a2; *((_DWORD *)v6 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(a2 + 8); v19 = 0; v6[12] = 0; v7 = sub_63AB60(&unk_CFCF398, v6); if ( v7 ) { v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); v9[12] = 0; v10 = sub_639620(&unk_14D20404, v9); if ( v10 == -1 ) LOWORD(v10) = -1; v10 = (unsigned __int16)v10; if ( (unsigned __int16)v10 < dword_14D20400 && *(_DWORD *)(dword_14D203FC + 4 * v10) ) { v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v7; *((_DWORD *)v12 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v7 + 8); v12[12] = 0; strncpy(&v20, v12, 0x20u); v13 = *(_DWORD *)(a3 + 4); v21 = *(_DWORD *)a3; v14 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v16 + 1536); v22 = v13; v14(&v17, 6, 9, 10); } } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_BriefLink : Error", 0); } --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_BriefLink"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (004525C0) -------------------------------------------------------- int __thiscall sub_4525C0(void *this, unsigned __int8 *a2) { void *v2; // esi@1 signed int v3; // eax@1 __int16 v4; // bx@1 unsigned int v6; // [sp-4h] [bp-B8h]@1 int (__stdcall **v7)(int, int, int); // [sp+10h] [bp-A4h]@4 __int16 v8; // [sp+14h] [bp-A0h]@4 __int16 v9; // [sp+16h] [bp-9Eh]@4 int v10; // [sp+18h] [bp-9Ch]@4 int v11; // [sp+1Ch] [bp-98h]@4 int v12; // [sp+20h] [bp-94h]@4 char v13; // [sp+24h] [bp-90h]@3 unsigned int v14; // [sp+A4h] [bp-10h]@1 int v15; // [sp+B0h] [bp-4h]@1 int v16; // [sp+B4h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v6 = (unsigned int)&v16 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Admin_FindMob"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Admin_FindMob"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v3 = sub_639620(&unk_14D16018, a2); v4 = v3; if ( v3 != -1 && (_WORD)v3 != -1 ) { sub_427BE0(&v7); v8 = v4; v7 = &off_6AD44C; v9 = -1; v11 = 0; v10 = 0; v12 = 5; LOBYTE(v15) = 1; sub_549B60(v2, (int)&v7, 0); if ( v11 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, unsigned int))(*(_DWORD *)v2 + 2192))( v2, *(_DWORD *)(v11 + 122), *(_DWORD *)(v11 + 102), v6); } else { sprintf(&v13, "%s is not in this map", a2); (*(void (__thiscall **)(void *, char *, unsigned int))(*(_DWORD *)v2 + 1924))(v2, &v13, v6); } LOBYTE(v15) = 0; v7 = &off_6AD44C; sub_427EB0(&v7); } else { sprintf(&v13, "%s is not Mob index", a2); (*(void (__thiscall **)(void *, char *, unsigned int))(*(_DWORD *)v2 + 1924))(v2, &v13, v6); } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Admin_FindMob"); } // 6AD44C: using guessed type int (__stdcall *off_6AD44C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00452770) -------------------------------------------------------- signed int __thiscall sub_452770(void *this, int a2, int a3, int a4, char a5) { int v5; // edi@1 int v6; // esi@1 int v7; // eax@1 int v8; // ecx@3 int v9; // ebx@5 int v10; // edx@7 __int64 v11; // qax@9 signed int v12; // ebx@9 unsigned int v13; // eax@9 unsigned __int64 v14; // qtt@9 int v16; // eax@18 int v17; // ST04_4@20 int v18; // eax@20 char v19; // al@22 char v20; // al@28 int v21; // ecx@28 int v22; // eax@32 _BYTE *v23; // eax@32 int v24; // [sp-4h] [bp-34h]@28 int v25; // [sp+10h] [bp-20h]@18 int v26; // [sp+14h] [bp-1Ch]@18 unsigned int v27; // [sp+18h] [bp-18h]@23 unsigned int v28; // [sp+1Ch] [bp-14h]@23 int v29; // [sp+20h] [bp-10h]@1 int v30; // [sp+2Ch] [bp-4h]@1 signed int v31; // [sp+38h] [bp+8h]@9 v5 = (int)this; v29 = (int)"FieldMap::fm_Marking"; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_Marking"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_Marking"; dword_750AB8[dword_750CB8++] = -1; v6 = a2; v30 = 0; *(_DWORD *)(a2 + 122) = v5; sub_550DC0((void *)(a2 + 62), (int)dword_13244DAC); v7 = *(_DWORD *)(a2 + 102); if ( *(_DWORD *)v7 > *(_DWORD *)(v5 + 24) || *(_DWORD *)(v7 + 4) > *(_DWORD *)(v5 + 28) ) { v22 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v22; v23 = &byte_85A2C0[256 * v22]; *(_DWORD *)v23 = *(_DWORD *)v5; *((_DWORD *)v23 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v23 + 2) = *(_DWORD *)(v5 + 8); v23[12] = 0; (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2); LABEL_33: v21 = (int)&unk_D020420; v30 = -1; v24 = (int)"FieldMap::fm_Marking"; LABEL_34: --dword_750CB8; sub_467660(v21, v24); return 3; } *(_DWORD *)(a2 + 122) = v5; sub_550DC0((void *)(a2 + 62), (int)dword_13244DAC); v8 = *(_DWORD *)(a2 + 102); v9 = *(_DWORD *)v8 < (unsigned int)&unk_FFFFFF && *(_DWORD *)(v8 + 4) < (unsigned int)&unk_FFFFFF; v10 = *(_DWORD *)v8; if ( !v9 ) { sub_639150(&unk_86DDD8, (int)"FieldMap::fm_Marking : Invalid coordinate", v10, *(_DWORD *)(v8 + 4)); goto LABEL_33; } v11 = (unsigned int)(5 * v10) / *(_DWORD *)(v5 + 24); v12 = v11; LODWORD(v14) = 5 * *(_DWORD *)(v8 + 4); HIDWORD(v14) = HIDWORD(v11); v13 = v14 / *(_DWORD *)(v5 + 28); v31 = v14 / *(_DWORD *)(v5 + 28); if ( (unsigned int)v12 > 4 ) v12 = 4; if ( v13 > 4 ) v31 = 4; if ( !sub_585A10((void *)(v6 + 22), *(_DWORD *)(v5 + 4 * v12 + 40) + 22) || !sub_585A10((void *)(v6 + 34), *(_DWORD *)(v5 + 4 * v31 + 40) + 34) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 2208))(v6, 0); sub_4623E0(&unk_CFCE178, "MapMarking"); sub_462120((void *)v5, (int)"FieldMap::fm_Marking"); } if ( !a5 ) { v16 = *(_DWORD *)(v6 + 102); v25 = *(_DWORD *)v16; v26 = *(_DWORD *)(v16 + 4); sub_4604D0(&unk_CFCDB50, a4); while ( 1 ) { if ( !sub_49D1B0(*(void **)(v5 + 20), **(_DWORD **)(v6 + 102), *(_DWORD *)(*(_DWORD *)(v6 + 102) + 4)) ) { v17 = *(_DWORD *)(v6 + 102); v18 = sub_427BD0(&unk_13253E80); if ( sub_549C70((void *)v6, v18, v17, (_UNKNOWN *)a3, 0, (int)sub_4522B0, 0, 0, 0, 0, 65535) ) break; } if ( (unsigned int)dword_CFCDCD0 < 0x20 ) { v27 = v25; v28 = v26; v19 = sub_460230((int)((char *)&unk_CFCDB50 + 12 * dword_CFCDCD0), dword_CFCDCD4, (int)&v27, a3); } else { sub_639100(&unk_86DDD8, (int)"DropLocationManager::dlm_Getloc", 32); v19 = 0; } if ( !v19 ) { sub_639100(&unk_86DDD8, (int)"FieldMap::fm_Marking : Fail mark", 0); goto LABEL_33; } if ( v27 > *(_DWORD *)(v5 + 24) || v28 > *(_DWORD *)(v5 + 28) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6); sub_418B00((int)byte_85A2C0, v5); goto LABEL_33; } sub_452220(v6, v27, v28, 0); if ( !sub_460540(&unk_CFCDB50) ) { v20 = sub_49D1B0(*(void **)(v5 + 20), **(_DWORD **)(v6 + 102), *(_DWORD *)(*(_DWORD *)(v6 + 102) + 4)); v30 = -1; v24 = (int)"FieldMap::fm_Marking"; v21 = (int)&unk_D020420; if ( v20 ) goto LABEL_34; *(_BYTE *)(v6 + 326) = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_Marking"); return 0; } } } *(_BYTE *)(v6 + 326) = 1; --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_Marking"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // CFCDCD0: using guessed type int dword_CFCDCD0; // CFCDCD4: using guessed type int dword_CFCDCD4; // 13244DAC: using guessed type int dword_13244DAC[]; //----- (00452B10) -------------------------------------------------------- int __thiscall sub_452B10(int this) { return *(_DWORD *)(this + 12) + 110; } //----- (00452B20) -------------------------------------------------------- int __stdcall sub_452B20(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveMisc2WMS", 0); return 0; } //----- (00452B40) -------------------------------------------------------- int __stdcall sub_452B40(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveCharTitle", 0); return 0; } //----- (00452B60) -------------------------------------------------------- int __stdcall sub_452B60(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveToDB_CharTitle", 0); return 0; } //----- (00452B80) -------------------------------------------------------- int __stdcall sub_452B80(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ply_SavePKCount", 0); return 0; } //----- (00452BA0) -------------------------------------------------------- int __stdcall sub_452BA0(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveLocation", 0); return 0; } //----- (00452BC0) -------------------------------------------------------- int __stdcall sub_452BC0(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveChestInfo", 0); return 0; } //----- (00452BE0) -------------------------------------------------------- int __stdcall sub_452BE0(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveLevel", 0); return 0; } //----- (00452C00) -------------------------------------------------------- int __stdcall sub_452C00(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveStat", 0); return 0; } //----- (00452C20) -------------------------------------------------------- int __stdcall sub_452C20(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveGameData", 0); return 0; } //----- (00452C40) -------------------------------------------------------- int __thiscall sub_452C40(int this, int a2) { return sub_5B9210((void *)(this + 82048), a2); } //----- (00452C50) -------------------------------------------------------- int __thiscall sub_452C50(int this, int a2) { return sub_5B9340((void *)(this + 82048), a2); } //----- (00452C60) -------------------------------------------------------- unsigned int __thiscall sub_452C60(void *this, int a2) { return sub_5BA0B0((int)((char *)this + 82048), a2); } //----- (00452C70) -------------------------------------------------------- int __stdcall sub_452C70(int a1) { return 0; } //----- (00452C80) -------------------------------------------------------- int __thiscall sub_452C80(int this, int a2) { return sub_5B9470((void *)(this + 82048), a2); } //----- (00452C90) -------------------------------------------------------- int __thiscall sub_452C90(int this, int a2) { return sub_5B9590((void *)(this + 82048), a2); } //----- (00452CA0) -------------------------------------------------------- int __thiscall sub_452CA0(void *this, int a2) { return sub_50EAE0((int)((char *)this + 96), a2); } //----- (00452CB0) -------------------------------------------------------- int __stdcall sub_452CB0(int a1, int a2, int a3) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveAbstate", 0); return 0; } //----- (00452CD0) -------------------------------------------------------- char __stdcall sub_452CD0(int a1, int a2) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveItem_Part", 0); return 0; } //----- (00452CF0) -------------------------------------------------------- int __stdcall sub_452CF0(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveItem", 0); return 0; } //----- (00452D10) -------------------------------------------------------- int __stdcall sub_452D10(int a1, int a2) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SaveSkill", 0); return 0; } //----- (00452D30) -------------------------------------------------------- int __thiscall sub_452D30(void *this, int a2) { void *v2; // esi@1 void *v3; // edi@1 __int16 v4; // ax@2 int v5; // eax@4 _BYTE v7[6]; // [sp+Ch] [bp-18h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_savelevel2worldmamager"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_savelevel2worldmamager"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)off_849C18 & 0x3FF | 0x4000; *(_WORD *)v7 = *(_DWORD *)v2; *(_DWORD *)&v7[2] = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( *(_DWORD *)(a2 + 122) ) { *(_WORD *)v3 = 16398; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 832))(a2); *((_DWORD *)v3 + 1) = *(_DWORD *)v7; *((_WORD *)v3 + 4) = *(_WORD *)&v7[4]; *((_WORD *)v3 + 1) = v4; (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 908))(a2, (char *)v3 + 27); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 912))(a2, (char *)v3 + 10); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 940))(a2, (char *)v3 + 75); if ( sub_4C81E0(&off_849C18, 109) ) { v5 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_savelevel2worldmamager : Packet Too Long", 109); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_savelevel2worldmamager"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00452EA0) -------------------------------------------------------- int __thiscall sub_452EA0(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 void *v4; // ebx@4 int v5; // edi@4 int v6; // eax@7 int v7; // eax@11 int v8; // eax@15 int v9; // eax@16 int v10; // eax@16 int v11; // eax@18 int v12; // eax@23 int v13; // eax@24 int v14; // eax@26 int v15; // eax@29 int v16; // ebx@30 int v17; // eax@32 int v18; // eax@34 _BYTE v20[6]; // [sp+10h] [bp-18h]@4 int v21; // [sp+30h] [bp+8h]@5 int v22; // [sp+30h] [bp+8h]@9 int v23; // [sp+30h] [bp+8h]@13 int v24; // [sp+30h] [bp+8h]@16 int v25; // [sp+30h] [bp+8h]@16 int v26; // [sp+30h] [bp+8h]@24 int v27; // [sp+30h] [bp+8h]@27 int v28; // [sp+30h] [bp+8h]@27 v2 = this; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_save2worldmanager"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_save2worldmanager"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { v4 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)off_849C18 & 0x3FF | 0x4000; sub_452D30(v2, a2); *(_WORD *)v20 = *(_DWORD *)v2; *(_DWORD *)&v20[2] = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v5 = (int)((char *)v4 + 2); if ( (*(int (__thiscall **)(int, char *))(*(_DWORD *)a2 + 916))(a2, (char *)v4 + 2) >= 0 ) { *(_WORD *)v4 = 16399; *(_WORD *)v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 832))(a2); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v21 = 32 * *((_BYTE *)v4 + 9) + 10; if ( sub_4C81E0(&off_849C18, 32 * *((_BYTE *)v4 + 9) + 10) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v21); } } (*(void (__thiscall **)(int, void *))(*(_DWORD *)v3 + 3360))(v3, v4); if ( (*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 924))(v3, (char *)v4 + 2) >= 0 ) { *(_WORD *)v4 = 16425; *(_WORD *)v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 832))(v3); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v22 = 2 * *((_WORD *)v4 + 4) + 10; if ( sub_4C81E0(&off_849C18, 2 * *((_WORD *)v4 + 4) + 10) ) { v7 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v22); } } if ( (*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 928))(v3, (char *)v4 + 2) >= 0 ) { *(_WORD *)v4 = 16427; *(_WORD *)v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 832))(v3); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v23 = 32 * *((_WORD *)v4 + 4) + 10; if ( sub_4C81E0(&off_849C18, 32 * *((_WORD *)v4 + 4) + 10) ) { v8 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v23); } } v24 = *(_DWORD *)v3; v9 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 1388))(v3, 0); (*(void (__thiscall **)(int, char *, int))(v24 + 932))(v3, (char *)v4 + 4, v9); *(_WORD *)v4 = 16401; *(_WORD *)v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 832))(v3); v10 = 36 * *((_WORD *)v4 + 5) + 12; *((_DWORD *)v4 + 1) = *(_DWORD *)v20; *((_WORD *)v4 + 4) = *(_WORD *)&v20[4]; v25 = v10; if ( sub_4C81E0(&off_849C18, v10) ) { v11 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v25); } (*(void (__thiscall **)(int, void *))(*(_DWORD *)v3 + 2796))(v3, v4); *(_WORD *)v4 = 16403; *(_WORD *)v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 832))(v3); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( (unsigned __int8)(*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v3 + 952))(v3, v4, (char *)v4 + 2) ) { if ( (*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 944))(v3, (char *)v4 + 8) > 0 ) { *(_WORD *)v4 = 16405; *(_WORD *)v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 832))(v3); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( sub_4C81E0(&off_849C18, 13) ) { v12 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v12); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", 13); } } *(_WORD *)v4 = 16404; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v3 + 956))(v3, (char *)v4 + 4); *(_WORD *)v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 832))(v3); v13 = 2 * *((_WORD *)v4 + 5) + 12; *((_DWORD *)v4 + 1) = *(_DWORD *)v20; *((_WORD *)v4 + 4) = *(_WORD *)&v20[4]; v26 = v13; if ( sub_4C81E0(&off_849C18, v13) ) { v14 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v26); } *(_WORD *)v4 = 16406; v27 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 960))(v3, (char *)v4 + 8); *(_WORD *)v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 832))(v3); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); v28 = v27 + 8; if ( sub_4C81E0(&off_849C18, v28) ) { v15 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v15); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v28); } *(_WORD *)v4 = 16407; v16 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 964))(v3, (char *)v4 + 2); *(_WORD *)v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 832))(v3); *(_DWORD *)(v5 + 14) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( sub_4C81E0(&off_849C18, v16 + 2) ) { v17 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v17); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v16 + 2); } sub_560AC0((void *)v3); sub_560F50((void *)v3); sub_613B30((void *)v3); sub_613C50((void *)v3); sub_45DFC0((void *)v3); sub_561B70((void *)v3); sub_4D0C40((void *)v3); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3); sub_5CE250(v18); } sub_561D70((void *)v3); sub_535F50((void *)v3); } } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_save2worldmanager"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00453450) -------------------------------------------------------- int __thiscall sub_453450(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; } //----- (004534F0) -------------------------------------------------------- int __cdecl sub_4534F0() { sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_saveassure"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_saveassure"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_saveassure"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00453530) -------------------------------------------------------- int __thiscall sub_453530(void *this) { void *v1; // esi@1 int v2; // eax@1 FILE *v3; // edi@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"EventSaveCheck::erb_happen"); dword_7508B8[dword_750CB8] = (int)"EventSaveCheck::erb_happen"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 6); if ( v2 != -1 ) { sub_639100(&unk_86DDD8, (int)"EventSaveCheck::erb_happen : Error in Character save", v2); v3 = fopen("NotSaved.bin", "wb"); fwrite((char *)v1 + 4, 0x69u, 1u, v3); fclose(v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"EventSaveCheck::erb_happen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00453610) -------------------------------------------------------- signed int __thiscall sub_453610(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)(a2 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); *(_DWORD *)(a2 + 6) = v3; *(_DWORD *)(a2 + 10) = *(_DWORD *)((char *)v2 + 32715); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"); return 18; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004536D0) -------------------------------------------------------- int __thiscall sub_4536D0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@1 int v5; // edi@1 int v6; // ecx@4 int v7; // eax@4 signed int v8; // edx@4 int v9; // esi@7 int v10; // ebx@7 unsigned __int8 v11; // dl@9 int v13; // [sp+14h] [bp-14h]@6 int v14; // [sp+30h] [bp+8h]@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveCharTitle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveCharTitle"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); v4 = a2; v5 = v3; *(_BYTE *)a2 = 1; *(_BYTE *)(a2 + 1) = *(_BYTE *)(v3 + 1160); *(_WORD *)(a2 + 3) = *(_WORD *)(v3 + 1162); if ( *(_BYTE *)(v3 + 1160) == 10 ) *(_BYTE *)(a2 + 2) = 0; else *(_BYTE *)(a2 + 2) = *(_BYTE *)(v3 + 1161); v6 = a2 + 5; v7 = v3 + 1176; v8 = 128; do { *(_DWORD *)v6 = *(_DWORD *)v7; *(_DWORD *)(v6 + 4) = *(_DWORD *)(v7 + 4); v7 += 16; v6 += 8; --v8; } while ( v8 ); *(_WORD *)(a2 + 1029) = *(_WORD *)(v5 + 132); v13 = *(_DWORD *)(v5 + 132); v14 = 0; if ( v13 > 0 ) { v9 = v4 + 1032; v10 = v5 + 136; do { if ( *(_BYTE *)v10 ) { v11 = *(_BYTE *)v10; *(_BYTE *)(v9 - 1) = *(_BYTE *)v10; *(_BYTE *)v9 ^= (*(_BYTE *)v9 ^ *(_BYTE *)(v10 + 1)) & 0x3F; *(_BYTE *)v9 = ((unsigned __int8)sub_62AC10((void *)v5, v11, *(_BYTE *)v9 & 0x3F) << 6) | *(_BYTE *)v9 & 0x3F; if ( (unsigned int)(v10 + 897 - v5) > 0x1F40 ) break; } v10 += 2; v9 += 2; ++v14; } while ( v14 < *(_DWORD *)(v5 + 132) ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveCharTitle"); return 2 * v13 + 1031; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00453870) -------------------------------------------------------- signed int __thiscall sub_453870(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 signed int result; // eax@2 int *v5; // eax@3 signed int v6; // ebx@3 int v7; // edi@3 int v8; // eax@6 int v9; // ecx@6 int *v10; // [sp+14h] [bp-10h]@3 signed int v11; // [sp+2Ch] [bp+8h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 ) { v5 = (int *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); v10 = v5; v11 = 2; *(_WORD *)v3 = 0; v6 = 0; v7 = (int)(v5 + 296); while ( 1 ) { if ( sub_5C7B40(v5, v6) ) { *(_BYTE *)(*(_WORD *)v3 + v3 + 8 * *(_WORD *)v3 + 2) = v6; v8 = *(_WORD *)v3; v9 = v3 + 8 * v8; *(_DWORD *)(v8 + v9 + 3) = *(_DWORD *)(v7 - 8); *(_DWORD *)(v8 + v9 + 7) = *(_DWORD *)(v7 - 4); ++*(_WORD *)v3; *(_DWORD *)v7 = 0; v11 += 9; if ( v11 > 8000 ) break; } ++v6; v7 += 16; if ( v6 >= 128 ) break; v5 = v10; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"); result = v11; } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer:::so_SaveToDB_CharTitle : buf is NULL", 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004539D0) -------------------------------------------------------- signed int __thiscall sub_4539D0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SavePKCount"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(a2 + 4) = *(_DWORD *)((char *)v2 + 32755); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); return 8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00453A90) -------------------------------------------------------- signed int __thiscall sub_453A90(void *this, int a2) { int v2; // ebx@1 bool v3; // zf@1 int v5; // eax@3 void *v6; // esi@3 char *v7; // eax@5 int v8; // esi@5 int v9; // eax@7 int v10; // eax@7 unsigned int v11; // eax@8 int v12; // ecx@8 int v13; // eax@10 int v14; // eax@10 int v15; // eax@18 unsigned __int16 v16; // ax@18 int v17; // eax@18 int v18; // eax@21 int v19; // eax@21 int v20; // eax@22 int v21; // ecx@24 int v22; // eax@25 int v23; // eax@25 __int16 v24; // ax@26 int v25; // eax@26 int v26; // eax@27 int v27; // eax@34 int v28; // ecx@34 _BYTE *v29; // ecx@34 void *v30; // [sp+10h] [bp-78h]@3 int v31; // [sp+10h] [bp-78h]@8 char v32; // [sp+14h] [bp-74h]@24 int v33; // [sp+6Ah] [bp-1Eh]@24 int v34; // [sp+6Eh] [bp-1Ah]@24 unsigned int v35; // [sp+78h] [bp-10h]@1 int v36; // [sp+84h] [bp-4h]@1 int v37; // [sp+88h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveLocation"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveLocation"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 122) == 0; v36 = 0; if ( v3 ) { --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveLocation"); return 0; } *(_DWORD *)a2 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); v5 = sub_56E860(v2); v6 = (void *)v5; v30 = (void *)v5; if ( v5 && (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 8))(v5) == 1 ) { v7 = sub_4286C0(v6); v8 = a2 + 4; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 4) = 0; strncpy((char *)(a2 + 4), v7 + 20, 0xCu); *(_DWORD *)(a2 + 16) = *(_DWORD *)(sub_4286C0(v30) + 86); *(_DWORD *)(a2 + 20) = *(_DWORD *)(sub_4286C0(v30) + 90); } else { if ( sub_4627E0(*(void **)(v2 + 122)) ) { v9 = *(_DWORD *)(v2 + 122); *(_DWORD *)(a2 + 4) = *(_DWORD *)v9; *(_DWORD *)(a2 + 8) = *(_DWORD *)(v9 + 4); v8 = a2 + 4; *(_DWORD *)(a2 + 12) = *(_DWORD *)(v9 + 8); v10 = *(_DWORD *)(v2 + 102); *(_DWORD *)(a2 + 16) = *(_DWORD *)v10; *(_DWORD *)(a2 + 20) = *(_DWORD *)(v10 + 4); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1156))(v2) == 3 ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1264))(v2); v12 = *(_DWORD *)(v2 + 122); *(_DWORD *)(v2 + 32703) = v11 / 3; v31 = *(_DWORD *)(v12 + 12); if ( !v31 ) { --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveLocation"); return 0; } v13 = sub_4627E0((void *)v12); v14 = sub_4780E0(v13, v2); if ( v14 != 100 ) { if ( (unsigned int)v14 >= 4 ) { *(_DWORD *)(a2 + 16) = *(_DWORD *)(v31 + 122); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v31 + 126); sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ReviveReqProcess : Guild Map Revive Point Low", v14); } else { *(_DWORD *)(a2 + 16) = *(_DWORD *)(v31 + 8 * v14 + 122); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v31 + 8 * v14 + 126); } } } } else { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1156))(v2) == 3 || !*(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v2 + 122) + 12) + 155) || *(_BYTE *)(v2 + 23824) & 1 ) { v20 = *(_DWORD *)(*(_DWORD *)(v2 + 122) + 12); v8 = a2 + 4; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v20 + 110); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v20 + 114); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v20 + 118); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1156))(v2) == 3 ) *(_DWORD *)(v2 + 32703) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1264))(v2) / 3u; sub_462AC0(*(void **)(v2 + 122), (int)&v32); v21 = v34; *(_DWORD *)(a2 + 16) = v33; *(_DWORD *)(a2 + 20) = v21; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2808))(v2) ) { v15 = sub_418B00((int)byte_85A2C0, v2 + 161520); v16 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v15); v17 = sub_4190D0((int)&unk_14D20370, v16); v8 = a2 + 4; if ( v17 ) { *(_DWORD *)v8 = *(_DWORD *)(v2 + 161520); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v2 + 161524); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v2 + 161528); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v17 + 50); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v17 + 54); } else { sub_418A60((char *)(a2 + 4), "RouN"); *(_DWORD *)(a2 + 16) = 6445; *(_DWORD *)(a2 + 20) = 8630; } } else { v18 = *(_DWORD *)(v2 + 122); *(_DWORD *)(a2 + 4) = *(_DWORD *)v18; v8 = a2 + 4; *(_DWORD *)(a2 + 8) = *(_DWORD *)(v18 + 4); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v18 + 8); v19 = *(_DWORD *)(v2 + 102); *(_DWORD *)(a2 + 16) = *(_DWORD *)v19; *(_DWORD *)(a2 + 20) = *(_DWORD *)(v19 + 4); } } } } *(_DWORD *)(a2 + 24) = *(_DWORD *)(*(_DWORD *)(v2 + 122) + 60); v22 = *(_DWORD *)(v2 + 122); *(_DWORD *)(a2 + 28) = *(_DWORD *)v22; *(_DWORD *)(a2 + 32) = *(_DWORD *)(v22 + 4); *(_DWORD *)(a2 + 36) = *(_DWORD *)(v22 + 8); v23 = *(_DWORD *)(v2 + 102); *(_DWORD *)(a2 + 40) = *(_DWORD *)v23; *(_DWORD *)(a2 + 44) = *(_DWORD *)(v23 + 4); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 304))(v2) ) { v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 312))(v2); v25 = sub_54DE90(&unk_13253630, v24); if ( v25 ) { v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 332))(v25); if ( v26 ) { *(_DWORD *)v8 = *(_DWORD *)v26; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v26 + 4); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v26 + 8); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v26 + 12); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v26 + 16); } } else { *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = 0; strncpy((char *)v8, "RouN", 0xCu); *(_DWORD *)(a2 + 16) = 6445; *(_DWORD *)(a2 + 20) = 8630; } } if ( *(_DWORD *)(a2 + 16) <= 0xAu || *(_DWORD *)(a2 + 20) <= 0xAu || *(_DWORD *)(a2 + 40) <= 0xAu || *(_DWORD *)(a2 + 44) <= 0xAu ) { v27 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1388))(v2); v28 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v28; v29 = &byte_85A2C0[256 * v28]; *(_DWORD *)v29 = *(_DWORD *)v27; *((_DWORD *)v29 + 1) = *(_DWORD *)(v27 + 4); *((_DWORD *)v29 + 2) = *(_DWORD *)(v27 + 8); *((_DWORD *)v29 + 3) = *(_DWORD *)(v27 + 12); *((_DWORD *)v29 + 4) = *(_DWORD *)(v27 + 16); v29[20] = 0; *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = 0; strncpy((char *)v8, "RouN", 0xCu); *(_DWORD *)(a2 + 16) = 6445; *(_DWORD *)(a2 + 20) = 8630; } --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveLocation"); return 48; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (00453F40) -------------------------------------------------------- int __thiscall sub_453F40(void *this, int a2) { void *v2; // ebx@1 signed int v3; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveChestInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveChestInfo"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(a2 + 6) = 0; v3 = 0; if ( *(_DWORD *)((char *)v2 + 155586) ) { while ( 1 ) { if ( (unsigned __int8)(1 << v3 % 8) & *(_BYTE *)(v3 / 8 + *(_DWORD *)((char *)v2 + 155582)) ) { *(_WORD *)(a2 + 2 * (*(_WORD *)(a2 + 6))++ + 8) = v3; if ( 2 * (unsigned int)*(_WORD *)(a2 + 6) + 10 > 0x1F40 ) break; } ++v3; if ( (unsigned int)v3 >= *(_DWORD *)((char *)v2 + 155586) ) goto LABEL_5; } --dword_750CB8; } else { LABEL_5: --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveChestInfo"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454050) -------------------------------------------------------- signed int __thiscall sub_454050(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveLevel"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveLevel"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); *(_BYTE *)(a2 + 4) = *((_BYTE *)v2 + 32686); *(_DWORD *)(a2 + 5) = *(_DWORD *)((char *)v2 + 32687); *(_DWORD *)(a2 + 9) = *(_DWORD *)((char *)v2 + 32691); *(_DWORD *)(a2 + 13) = *(_DWORD *)((char *)v2 + 32715); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveLevel"); return 17; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454130) -------------------------------------------------------- signed int __thiscall sub_454130(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveStat"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveStat"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(a2 + 4) = *(_WORD *)((char *)v2 + 32695); *(_DWORD *)(a2 + 8) = *(_WORD *)((char *)v2 + 32697); *(_DWORD *)(a2 + 12) = *(_WORD *)((char *)v2 + 32699); *(_DWORD *)(a2 + 16) = *(_WORD *)((char *)v2 + 32701); *(_DWORD *)(a2 + 20) = *(_DWORD *)((char *)v2 + 32703); *(_DWORD *)(a2 + 24) = *(_DWORD *)((char *)v2 + 32707); *(_DWORD *)(a2 + 28) = *((_DWORD *)v2 + 8187); *(_WORD *)(a2 + 32) = *((_WORD *)v2 + 16376); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveStat"); return 34; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454230) -------------------------------------------------------- signed int __thiscall sub_454230(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveGameData"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveGameData"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a2 = *((_DWORD *)v2 + 8196); *(_BYTE *)(a2 + 4) = *((_BYTE *)v2 + 32788); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveGameData"); return 5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004542B0) -------------------------------------------------------- char __thiscall sub_4542B0(void *this, int a2, unsigned __int16 a3) { void *v3; // esi@1 signed int v4; // edx@1 int v5; // eax@1 int v6; // eax@2 int v7; // ecx@7 int v8; // eax@8 bool v9; // zf@9 int v11; // eax@21 int v12; // [sp-8h] [bp-28h]@5 int v13; // [sp-4h] [bp-24h]@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateSaver::lid_Call"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateSaver::lid_Call"; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(a2 + 4); if ( v5 < 792 ) { v6 = dword_8772F0[v5]; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v5); v6 = 0; v4 = 1; } if ( !v6 ) { v13 = a3; v12 = (int)"AbnormalStateSaver::lid_Call : Null Abstate"; LABEL_6: sub_639100(&unk_86DDD8, v12, v13); --dword_750CB8; LABEL_12: sub_467660((int)&unk_D020420, (int)"AbnormalStateSaver::lid_Call"); return 1; } v7 = *(_DWORD *)v6; if ( !*(_DWORD *)v6 || ((v8 = *(_DWORD *)(v6 + 4), *((_BYTE *)v3 + 16) != 1) ? (v9 = *(_BYTE *)(v8 + 4) == 0) : (v9 = *(_BYTE *)(v8 + 6) == 0), v9) ) { dword_750CB8 -= v4; goto LABEL_12; } if ( *(_WORD *)v7 == -1 ) { v13 = a3; v12 = (int)"AbnormalStateSaver::lid_Call : Invalid ABState"; goto LABEL_6; } *(_WORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 8) = *(_WORD *)v7; *(_BYTE *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 10) = *(_BYTE *)(a2 + 24); *(_WORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 19) = *(_DWORD *)(a2 + 84); *(_WORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 21) = 0; *(_DWORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 11) = 1000 * (dword_14D129E8 - *(_DWORD *)(a2 + 28)) / 0xAu; if ( sub_4066E0(a2) ) *(_DWORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 15) = sub_4088C0((void *)a2); else *(_DWORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 15) = 0; sub_50EAE0(a2 + 96, *((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 8); *(_BYTE *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 23) = *(_BYTE *)(a2 + 16); *(_DWORD *)(*((_DWORD *)v3 + 1) + 36 * *(_WORD *)(*((_DWORD *)v3 + 1) + 6) + 24) = *(_DWORD *)(a2 + 20); if ( *((_DWORD *)v3 + 2) ) sub_418B40((int)byte_85A2C0, *((_DWORD *)v3 + 2)); ++*(_WORD *)(*((_DWORD *)v3 + 1) + 6); v11 = *(_WORD *)(*((_DWORD *)v3 + 1) + 6); --dword_750CB8; if ( (unsigned int)(36 * v11 + 44) <= 0x1F40 ) goto LABEL_12; sub_467660((int)&unk_D020420, (int)"AbnormalStateSaver::lid_Call"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772F0: using guessed type int dword_8772F0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00454520) -------------------------------------------------------- int __thiscall sub_454520(void *this, int a2, int a3, char a4) { void *v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@1 int v7; // eax@1 int v8; // eax@3 int v9; // esi@4 int (__stdcall **v11)(int, __int16); // [sp+Ch] [bp-24h]@1 int v12; // [sp+10h] [bp-20h]@1 int v13; // [sp+14h] [bp-1Ch]@1 int v14; // [sp+18h] [bp-18h]@1 int v15; // [sp+1Ch] [bp-14h]@1 int v16; // [sp+20h] [bp-10h]@1 int v17; // [sp+2Ch] [bp-4h]@1 v4 = this; v16 = (int)"ShineObjectClass::ShinePlayer::so_SaveAbstate"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveAbstate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveAbstate"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836); v17 = 0; v6 = v5(v4); v11 = &off_6ADBB8; v12 = a2; *(_WORD *)(a2 + 6) = 0; v13 = a3; v14 = v6; LOBYTE(v15) = a4; LOBYTE(v17) = 1; v7 = sub_417940(&dword_878758, v6); if ( v7 ) sub_417740(v7, v12, v15); sub_43C470((int)((char *)v4 + 3796), (int)&v11); v8 = *(_WORD *)(a2 + 6); if ( (_WORD)v8 ) v9 = 36 * v8 + 8; else v9 = 0; --dword_750CB8; v11 = (int (__stdcall **)(int, __int16))&off_6A04FC; v17 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveAbstate"); return v9; } // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6ADBB8: using guessed type int (__stdcall *off_6ADBB8)(int, __int16); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454640) -------------------------------------------------------- int __thiscall sub_454640(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveItem"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a2 = 0; v3 = sub_640E00((char *)v2 + 32816, a2, a2 + 1); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveItem"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454700) -------------------------------------------------------- int __thiscall sub_454700(void *this, int a2, int a3) { void *v3; // edi@1 __time32_t v4; // ecx@1 int v5; // ebx@1 int v6; // eax@2 unsigned int v7; // edx@3 int v8; // ecx@3 unsigned int v9; // edx@7 int v10; // eax@19 int v11; // eax@20 int v12; // eax@20 int v14; // [sp+10h] [bp-11Ch]@1 int v15; // [sp+14h] [bp-118h]@1 unsigned int v16; // [sp+18h] [bp-114h]@6 char v17; // [sp+1Ch] [bp-110h]@10 unsigned int v18; // [sp+11Ch] [bp-10h]@1 int v19; // [sp+128h] [bp-4h]@1 int v20; // [sp+12Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_FillSaveBuffer"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_FillSaveBuffer"; v4 = dword_750CB8; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v19 = 0; sub_44FB50(v4, (int)&v14); *(_WORD *)(a2 + 6) = 0; v15 = 0; if ( *((_DWORD *)v3 + 4) > 0 ) { v6 = dword_14D129E8; while ( 1 ) { v7 = *(_DWORD *)(*(_DWORD *)v3 + v5 + 4); v8 = v5 + *(_DWORD *)v3; if ( v7 > v6 ) break; if ( *(_DWORD *)(v8 + 16) || a3 != 1 ) { v16 = 0; *(_DWORD *)(v8 + 16) = 0; LABEL_20: *(_DWORD *)(a2 + 16 * *(_WORD *)(a2 + 6) + 8) = v14; *(_WORD *)(a2 + 16 * *(_WORD *)(a2 + 6) + 12) = *(_WORD *)(v5 + *(_DWORD *)v3); *(_DWORD *)(a2 + 16 * *(_WORD *)(a2 + 6) + 14) = v16; v11 = a2 + 16 * *(_WORD *)(a2 + 6) + 18; *(_BYTE *)v11 ^= (*(_BYTE *)v11 ^ *(_BYTE *)(*(_DWORD *)v3 + v5 + 8)) & 0xF; *(_BYTE *)(a2 + 16 * *(_WORD *)(a2 + 6) + 18) = *(_BYTE *)(a2 + 16 * *(_WORD *)(a2 + 6) + 18) & 0xF | *(_WORD *)(*(_DWORD *)v3 + v5 + 8) & 0xF0; v12 = a2 + 16 * *(_WORD *)(a2 + 6) + 19; *(_BYTE *)v12 ^= (*(_BYTE *)v12 ^ *(_BYTE *)(*(_DWORD *)v3 + v5 + 9)) & 0xF; *(_BYTE *)(a2 + 16 * *(_WORD *)(a2 + 6) + 19) = *(_BYTE *)(a2 + 16 * *(_WORD *)(a2 + 6) + 19) & 0xF | 16 * (unsigned __int16)(*(_WORD *)(*(_DWORD *)v3 + v5 + 8) >> 12); *(_DWORD *)(a2 + 16 * (*(_WORD *)(a2 + 6))++ + 20) = *(_DWORD *)(*(_DWORD *)v3 + v5 + 12); if ( 16 * (unsigned int)*(_WORD *)(a2 + 6) + 24 > 0x1F40 ) goto LABEL_23; v6 = dword_14D129E8; } v5 += 20; ++v15; if ( v15 >= *((_DWORD *)v3 + 4) ) goto LABEL_23; } v9 = (v7 - v6) / 0xA; v16 = v9; *(_DWORD *)(v8 + 16) = 1; if ( (signed int)v9 > 10800 && byte_7493ED ) { if ( byte_AA0EBC ) { sprintf(&v17, "%.255s", "CharaterSkillList::csl_FillSaveBuffer : Too long cooltime "); sub_418E40((__time32_t)byte_AA0C38); if ( dword_AA0D38 ) fputs(&v17, dword_AA0D38); } if ( byte_7493ED ) { if ( byte_AA0EBC ) { sub_418E40((__time32_t)byte_AA0C38); if ( dword_AA0D38 ) fprintf(dword_AA0D38, "%d", v16); } if ( byte_7493ED && byte_AA0EBC && dword_AA0D38 ) { v10 = sub_418E40((__time32_t)byte_AA0C38); sub_654AB0(10, (FILE *)v10); fflush(dword_AA0D38); fclose(dword_AA0D38); dword_AA0D38 = 0; } } } goto LABEL_20; } LABEL_23: --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_FillSaveBuffer"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0EBC: using guessed type char byte_AA0EBC; // 14D129E8: using guessed type int dword_14D129E8; //----- (00454A00) -------------------------------------------------------- int __stdcall sub_454A00(int a1, int a2) { int v2; // eax@1 void *v3; // eax@3 int v4; // esi@3 int v5; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_ALL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARSAVE_ALL_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_successall"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_successall"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_successall"); v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 10)); if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1240))(v2) >= 0x3Cu ) { v3 = off_849C18; v4 = *(_DWORD *)(a1 + 10); *(_WORD *)off_849C18 = 29964; *(_DWORD *)((char *)v3 + 2) = v4; if ( sub_4C81E0(&off_849C18, 6) ) { v5 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHARSAVE_ALL_ACK : Packet Too Long", 6); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_ALL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00454B50) -------------------------------------------------------- int __stdcall sub_454B50(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_successquest"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_successquest"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_successquest"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454C30) -------------------------------------------------------- int __stdcall sub_454C30(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_successabstate"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_successabstate"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_successabstate"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454D10) -------------------------------------------------------- int __stdcall sub_454D10(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_SKILL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARSAVE_SKILL_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_successskill"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_successskill"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_successskill"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_SKILL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454DF0) -------------------------------------------------------- int __stdcall sub_454DF0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_successskill"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_successskill"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"WholeSaver::ws_successskill"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454ED0) -------------------------------------------------------- int __stdcall sub_454ED0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00454F20) -------------------------------------------------------- char __thiscall sub_454F20(void *this, int a2) { int v2; // esi@1 void *v3; // edi@1 int v4; // eax@1 int v5; // ebx@1 int v6; // edi@6 int v7; // eax@8 void *v9; // [sp+14h] [bp+8h]@2 v2 = a2; v3 = this; *(_WORD *)a2 = 16402; *(_WORD *)(a2 + 2) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *(_WORD *)(a2 + 5) = *((_WORD *)v3 + 42202); *(_BYTE *)(a2 + 4) = 1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v5 = 0; *(_DWORD *)(a2 + 9) = v4; if ( *(_WORD *)(a2 + 5) > 0u ) { v9 = (char *)v3 + 84388; do { v4 = sub_444BF0(v9, v2 + 7, v5, 0); v5 = v4; if ( v4 <= 0 ) break; if ( v4 >= *(_WORD *)(v2 + 5) ) *(_BYTE *)(v2 + 4) |= 2u; v6 = 16 * *(_WORD *)(v2 + 13) + 15; if ( sub_4C81E0(&off_849C18, 16 * *(_WORD *)(v2 + 13) + 15) ) { v7 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v6); } LOBYTE(v4) = *(_BYTE *)(v2 + 4) & 2; *(_BYTE *)(v2 + 4) = v4 ^ ((*(_BYTE *)(v2 + 4) & 0xFC) + 4); } while ( v5 < *(_WORD *)(v2 + 5) ); } return v4; } // 14D12A00: using guessed type int dword_14D12A00; //----- (00455000) -------------------------------------------------------- int __thiscall sub_455000(void *this, int a2, int a3, __int16 a4, int a5, int a6) { void *v6; // ebx@1 int v7; // esi@1 int v8; // edi@1 int v9; // eax@2 char v10; // al@8 char v11; // dl@8 __int16 v13; // [sp+Ch] [bp-94h]@3 int v14; // [sp+18h] [bp-88h]@2 int v15; // [sp+1Ch] [bp-84h]@4 int v16; // [sp+24h] [bp-7Ch]@1 int v17; // [sp+28h] [bp-78h]@1 char v18; // [sp+2Ch] [bp-74h]@8 unsigned int v19; // [sp+9Ch] [bp-4h]@1 int v20; // [sp+A0h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v6 = this; v7 = a3; *(_BYTE *)a2 = 0; v8 = 0; v16 = 0; v17 = 0; if ( (*(int (**)(void))(*(_DWORD *)this + 8))() > 0 ) { do { v9 = (**(int (__thiscall ***)(void *, int))v6)(v6, v17); v14 = v9; if ( v9 ) { v13 = sub_63FD50(v9); if ( v13 != -1 ) { v15 = (int)dword_1508B168; if ( *(_DWORD *)(v14 + 16) ) v15 = *(_DWORD *)(v14 + 16); if ( v16 >= *(_DWORD *)a5 ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 8))(v6); sub_63FD90(v14, (int)&v18); *(_WORD *)(v7 + 1) = (a4 << 10) ^ v17 & 0x3FF; v10 = sub_63D1A0((int)&v18, v15, v13, v7 + 3); v11 = 2 - (v7 + 3); *(_BYTE *)v7 = v11 + v10; v7 += (unsigned __int8)(v11 + v10) + 1; ++*(_BYTE *)a2; ++*(_DWORD *)a5; v8 = v7 - a3; if ( v7 - a3 >= a6 ) return v8; } else { ++v16; } } } ++v17; } while ( v17 < (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 8))(v6) ); } return v8; } // 86FEB8: using guessed type int __security_cookie; //----- (00455160) -------------------------------------------------------- int __thiscall sub_455160(void *this) { void *v1; // esi@1 int v2; // ebx@1 int v3; // edi@1 int v4; // eax@2 v1 = this; v2 = 0; v3 = 0; if ( (*(int (**)(void))(*(_DWORD *)this + 8))() > 0 ) { do { v4 = (**(int (__thiscall ***)(void *, int))v1)(v1, v3); if ( v4 && sub_63FD50(v4) != -1 ) ++v2; ++v3; } while ( v3 < (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 8))(v1) ); } return v2; } //----- (004551B0) -------------------------------------------------------- int __thiscall sub_4551B0(void *this, int a2, char a3, char a4) { int v4; // esi@1 void *v5; // ebx@3 int v6; // eax@5 void *v7; // ebx@6 int v8; // eax@9 int v9; // edi@13 int v10; // eax@15 int v11; // edi@16 int v12; // eax@16 int v13; // eax@18 int v14; // eax@19 int v15; // eax@22 int v16; // eax@23 int v17; // eax@25 int v18; // edi@26 int v19; // eax@28 void *v20; // edi@29 int v21; // eax@29 int v22; // eax@29 int v23; // edx@29 int v24; // edx@29 int v25; // edx@29 int v26; // eax@31 void *v27; // eax@32 int v28; // eax@34 int v29; // eax@38 int v30; // eax@39 int v31; // edi@39 void *v32; // eax@41 int v34; // [sp-4h] [bp-30h]@43 _BYTE v35[6]; // [sp+10h] [bp-1Ch]@6 void *v36; // [sp+1Ch] [bp-10h]@1 int v37; // [sp+34h] [bp+8h]@16 int v38; // [sp+34h] [bp+8h]@20 v36 = this; sub_4675D0((int)&unk_D020420, (int)"WholeSaver::ws_save2DB"); dword_7508B8[dword_750CB8] = (int)"WholeSaver::ws_save2DB"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)a2 + 2752))(a2, dword_14D129E8, 600); v5 = off_849C18; *(_WORD *)off_849C18 = 16408; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 904))(a2, (char *)v5 + 8); if ( sub_4C81E0(&off_849C18, 16) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", 16); } (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1920))(a2); v7 = off_849C18; *((_WORD *)off_849C18 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)v35 = *(_DWORD *)v36; *(_DWORD *)&v35[2] = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); if ( *(_DWORD *)(a2 + 122) ) { *(_WORD *)v7 = 16385; *((_DWORD *)v7 + 2) = *(_DWORD *)v35; *((_WORD *)v7 + 6) = *(_WORD *)&v35[4]; (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 908))(a2, (char *)v7 + 31); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 912))(a2, (char *)v7 + 14); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 940))(a2, (char *)v7 + 79); if ( sub_4C81E0(&off_849C18, 113) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", 113); } sub_453450((int)((char *)v36 + (_DWORD)&unk_A45400C), (int)((char *)v7 + 8)); } if ( !a3 && (*(int (__thiscall **)(int, char *))(*(_DWORD *)a2 + 920))(a2, (char *)v7 + 8) > 0 ) { *(_WORD *)v7 = 16389; *((_DWORD *)v7 + 2) = *(_DWORD *)v35; *((_WORD *)v7 + 6) = *(_WORD *)&v35[4]; v9 = 32 * *((_BYTE *)v7 + 15) + 16; if ( sub_4C81E0(&off_849C18, 32 * *((_BYTE *)v7 + 15) + 16) ) { v10 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v10); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", v9); } } v11 = (int)((char *)v7 + 8); (*(void (__thiscall **)(int, char *, _DWORD, signed int))(*(_DWORD *)a2 + 932))(a2, (char *)v7 + 8, 0, 1); *(_WORD *)v7 = 16391; v12 = 36 * *((_WORD *)v7 + 7) + 16; *((_DWORD *)v7 + 2) = *(_DWORD *)v35; *((_WORD *)v7 + 6) = *(_WORD *)&v35[4]; v37 = v12; if ( sub_4C81E0(&off_849C18, v12) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", v37); } v14 = *(_DWORD *)((char *)v36 + (_DWORD)&dword_A45CD20); *(_DWORD *)v14 = *(_DWORD *)v11; *(_DWORD *)(v14 + 4) = *((_DWORD *)v7 + 3); memmove((void *)(*(_DWORD *)((char *)v36 + (_DWORD)&dword_A45CD20) + 8), (char *)v7 + 16, 36 * *((_WORD *)v7 + 7)); if ( (*(int (__thiscall **)(int, char *, signed int))(*(_DWORD *)v4 + 936))(v4, (char *)v7 + 8, 1) <= 0 ) { *(_DWORD *)(*(_DWORD *)((char *)v36 + (_DWORD)&dword_A4688AC) + 2) = -1; } else { *(_WORD *)v7 = 16393; *(_DWORD *)v11 = *(_DWORD *)v35; *((_WORD *)v7 + 6) = *(_WORD *)&v35[4]; v38 = 16 * (*((_WORD *)v7 + 7) + 1); if ( sub_4C81E0(&off_849C18, 16 * (*((_WORD *)v7 + 7) + 1)) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", v38); } v16 = *(_DWORD *)((char *)v36 + (_DWORD)&dword_A4688AC); *(_DWORD *)v16 = *(_DWORD *)v11; *(_DWORD *)(v16 + 4) = *((_DWORD *)v7 + 3); memmove((void *)(*(_DWORD *)((char *)v36 + (_DWORD)&dword_A4688AC) + 8), (char *)v7 + 16, 16 * *((_WORD *)v7 + 7)); } v17 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v4 + 968))(v4, (char *)v7 + 14); if ( v17 > 0 ) { *(_WORD *)v7 = 16395; *(_DWORD *)v11 = *(_DWORD *)v35; *((_WORD *)v7 + 6) = *(_WORD *)&v35[4]; v18 = v17 + 14; if ( sub_4C81E0(&off_849C18, v17 + 14) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", v18); } } sub_4534F0(); v20 = off_849C18; *(_WORD *)off_849C18 = 1040; *(_DWORD *)((char *)v20 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v21 = *(_DWORD *)(v4 + 122); *(_DWORD *)((char *)v20 + 6) = *(_DWORD *)v21; *(_DWORD *)((char *)v20 + 10) = *(_DWORD *)(v21 + 4); *(_DWORD *)((char *)v20 + 14) = *(_DWORD *)(v21 + 8); v22 = *(_DWORD *)(v4 + 102); *(_DWORD *)((char *)v20 + 18) = *(_DWORD *)v22; v23 = *(_DWORD *)(v22 + 4); *((_BYTE *)v20 + 26) = a4; *(_DWORD *)((char *)v20 + 22) = v23; *(_DWORD *)((char *)v20 + 27) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1080))(v4); *(_DWORD *)((char *)v20 + 31) = v24; *(_DWORD *)((char *)v20 + 35) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1076))(v4); *(_DWORD *)((char *)v20 + 39) = v25; if ( sub_4C81E0(&off_849C18, 43) ) { v26 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v26); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB : Packet Too Long", 43); } v27 = off_849C18; *(_WORD *)off_849C18 = 16410; *(_DWORD *)((char *)v27 + 2) = *(_DWORD *)v35; *((_WORD *)v27 + 3) = *(_WORD *)&v35[4]; if ( sub_4C81E0(&off_849C18, 8) ) { v28 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v28); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2DB-Send_REST_EXP : Packet Too Long", 8); } if ( !a3 ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2744))(v4); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1488))(v4) ) { v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1488))(v4); sub_5CE110(v29); } v30 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3004))(v4); v31 = v30; if ( v30 ) { sub_4D1A00(v30); sub_4D1AB0(v31); } v32 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3004))(v4); if ( v32 ) sub_561C80(v32); v34 = (int)"WholeSaver::ws_save2DB"; } else { v34 = (int)"WholeSaver::ws_save2DB"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v34); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // A45CD20: using guessed type int dword_A45CD20; // A4688AC: using guessed type int dword_A4688AC; // 14D129E8: using guessed type int dword_14D129E8; // 14D148D0: using guessed type int dword_14D148D0; // 14D16430: using guessed type int dword_14D16430; //----- (00455790) -------------------------------------------------------- int __thiscall sub_455790(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6ADE74; *(_DWORD *)(this + 39) = 0; *(_DWORD *)(this + 35) = 0; *(_DWORD *)(this + 31) = 0; *(_DWORD *)(this + 63) = 0; *(_DWORD *)(this + 59) = 0; *(_DWORD *)(this + 55) = 0; *(_DWORD *)(this + 36120) = this + 112; *(_DWORD *)(result + 84132) = result + 36124; return result; } // 6ADE74: using guessed type int (*off_6ADE74)(); //----- (004557D0) -------------------------------------------------------- char __thiscall sub_4557D0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 signed int v5; // eax@2 int v6; // eax@7 signed int v7; // eax@10 int v8; // eax@22 int v10; // eax@24 signed int v11; // eax@27 int v12; // edi@30 __time32_t v13; // eax@33 int v14; // eax@34 int v15; // eax@37 int v16; // edi@40 int v17; // eax@43 int v18; // [sp-Ch] [bp-13Ch]@32 int v19; // [sp-8h] [bp-138h]@32 void *v20; // [sp+10h] [bp-120h]@1 int v21; // [sp+14h] [bp-11Ch]@5 int v22; // [sp+14h] [bp-11Ch]@13 int v23; // [sp+18h] [bp-118h]@1 int v24; // [sp+18h] [bp-118h]@9 int v25; // [sp+18h] [bp-118h]@26 int v26; // [sp+18h] [bp-118h]@36 int v27; // [sp+1Ch] [bp-114h]@1 char v28; // [sp+20h] [bp-110h]@17 unsigned int v29; // [sp+120h] [bp-10h]@1 int v30; // [sp+12Ch] [bp-4h]@1 int v31; // [sp+130h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v3 = this; v20 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveItem_Part"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveItem_Part"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; *(_WORD *)(a3 + 6) = 1280; v27 = 0; v23 = sub_63F720((char *)v3 + 36484); v4 = a3 + 8; do { *(_BYTE *)v4 = 0; v5 = sub_640B70((int)((char *)v3 + 32816), a3 + 8, a3 + 9, 9u, (int)&v27, 8000); if ( v5 < 0 ) { if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf( &v28, "%.255s", "ShineObjectClass::ShinePlayer::so_SaveItem_Part : Char Inven Fail. will be disconnect."); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v28, dword_13359C60); } if ( byte_7493ED && byte_13359DE4 && dword_13359C60 ) { v8 = sub_418E40((__time32_t)byte_13359B60); sub_654AB0(10, (FILE *)v8); fflush(dword_13359C60); fclose(dword_13359C60); dword_13359C60 = 0; } } goto LABEL_23; } if ( v27 >= v23 ) *(_BYTE *)(a3 + 6) |= 0x80u; v21 = v5 + 11; if ( sub_4C81E0(&off_849C18, v5 + 11) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::so_SaveItem_Part : Packet Too Long", v21); } *(_BYTE *)(a3 + 6) ^= (*(_BYTE *)(a3 + 6) ^ (*(_BYTE *)(a3 + 6) + 1)) & 0x7F; } while ( v27 < v23 ); *(_WORD *)(a3 + 6) = 2048; v27 = 0; v24 = sub_63F720((char *)v3 + 32816); do { *(_BYTE *)v4 = 0; v7 = sub_640B70((int)((char *)v3 + 32816), a3 + 8, a3 + 9, 8u, (int)&v27, 8000); if ( v7 < 0 ) { v19 = (int)&unk_13359E04; v18 = (int)"ShineObjectClass::ShinePlayer::so_SaveItem_Part : Equip Inven Fail. will be disconnect."; goto LABEL_33; } if ( v27 >= v24 ) *(_BYTE *)(a3 + 6) |= 0x80u; v22 = v7 + 11; if ( sub_4C81E0(&off_849C18, v7 + 11) ) { v10 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v10); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::so_SaveItem_Part : Packet Too Long", v22); } *(_BYTE *)(a3 + 6) ^= (*(_BYTE *)(a3 + 6) ^ (*(_BYTE *)(a3 + 6) + 1)) & 0x7F; } while ( v27 < v24 ); *(_WORD *)(a3 + 6) = 4608; v27 = 0; v25 = sub_63F720((char *)v3 + 53776); while ( 1 ) { *(_BYTE *)v4 = 0; v11 = sub_640B70((int)((char *)v3 + 32816), a3 + 8, a3 + 9, 0xCu, (int)&v27, 8000); if ( v11 < 0 ) break; if ( v27 >= v25 ) *(_BYTE *)(a3 + 6) |= 0x80u; v12 = v11 + 11; *(_BYTE *)(a3 + 6) ^= (*(_BYTE *)(a3 + 6) ^ (*(_BYTE *)(a3 + 6) + 1)) & 0x7F; if ( sub_4C81E0(&off_849C18, v11 + 11) ) { v14 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::so_SaveItem_Part : Packet Too Long", v12); } v3 = v20; if ( v27 >= v25 ) { *(_WORD *)(a3 + 6) = 8704; v27 = 0; v26 = sub_455160((char *)v20 + 57840); while ( 1 ) { *(_BYTE *)v4 = 0; v15 = sub_455000((char *)v3 + 57840, a3 + 8, a3 + 9, 15, (int)&v27, 8000); if ( v15 < 0 ) break; if ( v27 >= v26 ) *(_BYTE *)(a3 + 6) |= 0x80u; v16 = v15 + 11; *(_BYTE *)(a3 + 6) ^= (*(_BYTE *)(a3 + 6) ^ (*(_BYTE *)(a3 + 6) + 1)) & 0x7F; if ( sub_4C81E0(&off_849C18, v15 + 11) ) { v17 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v17); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::so_SaveItem_Part : Packet Too Long", v16); } if ( v27 >= v26 ) { --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 1; } v3 = v20; } break; } } v19 = (int)&unk_13359E04; v18 = (int)"ShineObjectClass::ShinePlayer::so_SaveItem_Part : MiniHouse Skin Inven Fail. will be disconnect."; LABEL_33: v13 = sub_418EA0((__time32_t)byte_13359B60, v18); sub_418F20(v13, v19); LABEL_23: (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1528))(v3, 1676, 0, 0); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 0; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13359DE4: using guessed type char byte_13359DE4; // 14D12A00: using guessed type int dword_14D12A00; //----- (00455CC0) -------------------------------------------------------- int __thiscall sub_455CC0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // esi@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveSkill"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SaveSkill"; dword_750AB8[dword_750CB8++] = -1; sub_454700((char *)v3 + 84388, a2, a3); v4 = *(_WORD *)(a2 + 6); if ( (_WORD)v4 ) v5 = 16 * v4 + 8; else v5 = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SaveSkill"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00455D90) -------------------------------------------------------- int __thiscall sub_455D90(int this) { int v1; // esi@1 int v2; // eax@1 signed int v3; // edx@1 int v4; // edi@2 int v5; // edi@2 int v6; // edi@2 int v7; // edi@2 int v8; // edi@2 v1 = this; *(_DWORD *)(this + 4) = 2047; *(_DWORD *)this = 0; _eh_vector_constructor_iterator_((void *)(this + 8), 0x148A8u, 2048, (int)sub_455790, sub_4B0610); *(int *)((char *)&dword_A454008 + v1) = (int)&off_6ADE74; *(int *)((char *)&dword_A45402F + v1) = 0; *(int *)((char *)&dword_A45402B + v1) = 0; *(int *)((char *)&dword_A454027 + v1) = 0; *(int *)((char *)&dword_A454047 + v1) = 0; *(int *)((char *)&dword_A454043 + v1) = 0; *(int *)((char *)&dword_A45403F + v1) = 0; *(int *)((char *)&dword_A45CD20 + v1) = (int)((char *)&unk_A454078 + v1); *(int *)((char *)&dword_A4688AC + v1) = (int)((char *)&unk_A45CD24 + v1); v2 = v1 + 36128; v3 = 512; do { v4 = *(_DWORD *)v2; *(_DWORD *)(v2 - 36114) = -1; *(_DWORD *)(v4 + 2) = -1; *(_DWORD *)(*(_DWORD *)(v2 + 48012) + 2) = -1; v5 = *(_DWORD *)(v2 + 84136); *(_DWORD *)(v2 + 48022) = -1; *(_DWORD *)(v5 + 2) = -1; *(_DWORD *)(*(_DWORD *)(v2 + 132148) + 2) = -1; v6 = *(_DWORD *)(v2 + 168272); *(_DWORD *)(v2 + 132158) = -1; *(_DWORD *)(v6 + 2) = -1; *(_DWORD *)(*(_DWORD *)(v2 + 216284) + 2) = -1; v7 = *(_DWORD *)(v2 + 252408); *(_DWORD *)(v2 + 216294) = -1; *(_DWORD *)(v7 + 2) = -1; v8 = *(_DWORD *)(v2 + 300420); v2 += 336544; --v3; *(_DWORD *)(v8 + 2) = -1; } while ( v3 ); return v1; } // 6ADE74: using guessed type int (*off_6ADE74)(); // A454008: using guessed type int dword_A454008; // A454027: using guessed type int dword_A454027; // A45402B: using guessed type int dword_A45402B; // A45402F: using guessed type int dword_A45402F; // A45403F: using guessed type int dword_A45403F; // A454043: using guessed type int dword_A454043; // A454047: using guessed type int dword_A454047; // A45CD20: using guessed type int dword_A45CD20; // A4688AC: using guessed type int dword_A4688AC; //----- (00455E80) -------------------------------------------------------- char *__thiscall sub_455E80(char *this, const char *a2) { char *v2; // esi@1 v2 = this; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; strncpy(this, a2, 0x10u); return v2; } //----- (00455EB0) -------------------------------------------------------- bool __thiscall sub_455EB0(int this, int a2) { return *(_DWORD *)this != *(_DWORD *)a2 || *(_DWORD *)(this + 4) != *(_DWORD *)(a2 + 4) || *(_DWORD *)(this + 8) != *(_DWORD *)(a2 + 8) || *(_DWORD *)(this + 12) != *(_DWORD *)(a2 + 12); } //----- (00455EF0) -------------------------------------------------------- int __thiscall sub_455EF0(int this, const void *a2) { int result; // eax@1 result = this; if ( !*(_BYTE *)(this + 43) ) { memcpy((void *)this, a2, 0x2Bu); *(_BYTE *)(this + 43) = 1; } return result; } //----- (00455F20) -------------------------------------------------------- char __thiscall sub_455F20(int this, int a2) { return sub_49D470(*(void **)(*(_DWORD *)(this + 122) + 20), *(_DWORD *)a2, *(_DWORD *)(a2 + 4), 1); } //----- (00455F40) -------------------------------------------------------- bool __thiscall sub_455F40(int this, int a2) { int v2; // ecx@1 int v3; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 102); v3 = *(_DWORD *)v2; v4 = *(_DWORD *)(v2 + 4) - *(_DWORD *)(a2 + 4); return (unsigned int)((v3 - *(_DWORD *)a2) * (v3 - *(_DWORD *)a2) + v4 * v4) <= 0x9C40; } //----- (00455F80) -------------------------------------------------------- char __thiscall sub_455F80(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 char v7; // [sp+4h] [bp-104h]@1 unsigned int v8; // [sp+104h] [bp-4h]@1 int v9; // [sp+108h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v4 = this; v5 = (*(int (__cdecl **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1388))( **(_DWORD **)(a3 + 102), *(_DWORD *)(*(_DWORD *)(a3 + 102) + 4)); sprintf(&v7, "%s/%d/%d", v5); (*(void (__stdcall **)(char *))(**((_DWORD **)v4 + 1) + 1924))(&v7); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00455FF0) -------------------------------------------------------- void __thiscall sub_455FF0(void *this) { void *v1; // esi@1 __int16 v2; // di@2 __int16 v3; // cx@2 void *v4; // eax@4 __int16 v5; // dx@4 int v6; // eax@6 v1 = this; if ( *((_DWORD *)this + 1987) ) { v2 = (*(int (**)(void))(*(_DWORD *)this + 1300))(); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1304))(v1); if ( *((_WORD *)v1 + 4041) != v2 || *((_WORD *)v1 + 4042) != v3 ) { v4 = off_849C18; *(_WORD *)off_849C18 = -13299; v5 = *((_WORD *)v1 + 2); *((_WORD *)v4 + 3) = v3; *((_WORD *)v4 + 1) = v5; *((_WORD *)v4 + 2) = v2; *((_WORD *)v1 + 4042) = v3; *((_WORD *)v1 + 4041) = v2; if ( sub_4C81E0(&off_849C18, 8) ) { v6 = (*(int (**)(void))(**((_DWORD **)v1 + 1987) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v6 + 12))(v6, *((_DWORD *)v1 + 1987), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SendMoveSpeed : Packet Too Long", 8); } } } } //----- (004560B0) -------------------------------------------------------- void __thiscall sub_4560B0(void *this, char a2) { void *v2; // esi@1 __int16 v3; // di@2 __int16 v4; // cx@2 void *v5; // eax@5 __int16 v6; // dx@5 int v7; // eax@7 v2 = this; if ( *((_DWORD *)this + 1987) ) { v3 = (*(int (**)(void))(*(_DWORD *)this + 1300))(); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1304))(v2); if ( *((_WORD *)v2 + 4041) != v3 || *((_WORD *)v2 + 4042) != v4 || !a2 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -13299; v6 = *((_WORD *)v2 + 2); *((_WORD *)v5 + 3) = v4; *((_WORD *)v5 + 1) = v6; *((_WORD *)v5 + 2) = v3; *((_WORD *)v2 + 4042) = v4; *((_WORD *)v2 + 4041) = v3; if ( sub_4C81E0(&off_849C18, 8) ) { v7 = (*(int (**)(void))(**((_DWORD **)v2 + 1987) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v7 + 12))(v7, *((_DWORD *)v2 + 1987), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SendMoveSpeed : Packet Too Long", 8); } } } } //----- (00456190) -------------------------------------------------------- bool __thiscall sub_456190(int this, int a2) { bool result; // al@2 int v3; // ecx@3 int v4; // eax@3 int v5; // ecx@3 if ( a2 ) { v3 = *(_DWORD *)(this + 102); v4 = *(_DWORD *)v3; v5 = *(_DWORD *)(v3 + 4) - *(_DWORD *)(a2 + 4); result = (unsigned int)((v4 - *(_DWORD *)a2) * (v4 - *(_DWORD *)a2) + v5 * v5) <= 0x9C40; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_MoveLocationCheck_From : pFromLoc null", 0); result = 0; } return result; } //----- (004561E0) -------------------------------------------------------- bool __thiscall sub_4561E0(int this, int a2) { bool result; // al@2 if ( a2 ) { result = sub_49D470(*(void **)(*(_DWORD *)(this + 122) + 20), *(_DWORD *)a2, *(_DWORD *)(a2 + 4), 1) != 0; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::sp_MoveLocationCheck_To : pToLoc null", 0); result = 0; } return result; } //----- (00456220) -------------------------------------------------------- char __thiscall sub_456220(void *this, int a2, int a3, int a4) { int v4; // edx@1 int v5; // eax@1 void *v6; // esi@1 unsigned int v7; // ecx@1 int v8; // edi@2 int v9; // edx@3 int v10; // eax@3 int v11; // ebx@4 double v12; // st7@5 int v13; // edi@6 int v14; // edi@13 int v16; // edi@21 int v17; // eax@22 int v18; // edx@22 int v19; // ebx@23 double v20; // st7@24 int v21; // edi@25 double v22; // [sp+Ch] [bp-24h]@5 double v23; // [sp+Ch] [bp-24h]@24 unsigned int v24; // [sp+18h] [bp-18h]@1 float v25; // [sp+1Ch] [bp-14h]@5 float v26; // [sp+1Ch] [bp-14h]@24 float v27; // [sp+20h] [bp-10h]@5 float v28; // [sp+20h] [bp-10h]@24 unsigned int v29; // [sp+28h] [bp-8h]@1 int v30; // [sp+2Ch] [bp-4h]@5 int v31; // [sp+2Ch] [bp-4h]@24 float v32; // [sp+38h] [bp+8h]@5 float v33; // [sp+38h] [bp+8h]@5 float v34; // [sp+38h] [bp+8h]@6 float v35; // [sp+38h] [bp+8h]@24 float v36; // [sp+38h] [bp+8h]@24 float v37; // [sp+38h] [bp+8h]@25 int v38; // [sp+3Ch] [bp+Ch]@4 int v39; // [sp+3Ch] [bp+Ch]@23 v4 = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 4); v6 = this; v7 = *(_DWORD *)(a3 + 4); v29 = *(_DWORD *)a3; v24 = *(_DWORD *)(a3 + 4); if ( (*(_DWORD *)a2 - *(_DWORD *)a3) * (*(_DWORD *)a2 - *(_DWORD *)a3) <= (v5 - v7) * (v5 - v7) ) { if ( v5 != v7 ) { v16 = *(_DWORD *)a3; if ( v5 > v7 ) { v17 = v7 ^ v5; v7 ^= v17; v18 = v29 ^ v4; v16 = v18 ^ v29; v5 = v7 ^ v17; v24 = v7; v4 = v18 ^ v29 ^ v18; } v19 = v5 + 1; v39 = 0; if ( v5 + 1 < v7 ) { v26 = (double)(unsigned int)v4; v28 = (double)(unsigned int)v5; v35 = (double)(unsigned int)v16 - v26; v20 = v35; v31 = v5 - 9; v36 = (double)v7 - v28; v23 = v20 / v36; while ( 1 ) { v37 = (double)(unsigned int)v19 - v28; v21 = (signed __int64)(v37 * v23 + v26); if ( !sub_49D470(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21, v19, 1) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21 + 10, v19) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21 + 10, v19)) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21 - 10, v19) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21 - 10, v19)) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21, v31 + 20) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21, v31 + 20)) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21, v31) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v21, v31)) ) { ++v39; if ( v39 >= a4 ) return 1; } else { v39 = 0; } ++v31; ++v19; if ( v19 >= v24 ) return 0; } } } return 0; } v8 = *(_DWORD *)a3; if ( v4 > v29 ) { v9 = v29 ^ v4; v8 = v9 ^ v29; v10 = v7 ^ v5; v7 ^= v10; v4 = v9 ^ v29 ^ v9; v29 = v8; v5 = v7 ^ v10; } v11 = v4 + 1; v38 = 0; if ( v4 + 1 >= (unsigned int)v8 ) return 0; v27 = (double)(unsigned int)v5; v25 = (double)(unsigned int)v4; v32 = (double)v7 - v27; v12 = v32; v30 = v4 - 9; v33 = (double)(unsigned int)v8 - v25; v22 = v12 / v33; do { v34 = (double)(unsigned int)v11 - v25; v13 = (signed __int64)(v34 * v22 + v27); if ( !sub_49D470(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v11, v13, 1) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v30 + 20, v13) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v30 + 20, v13)) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v30, v13) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v30, v13)) && (sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v11, v13 + 10) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v11, v13 + 10)) && ((v14 = v13 - 10, sub_49D140(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v11, v14)) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), v11, v14)) ) { ++v38; if ( v38 >= a4 ) return 1; } else { v38 = 0; } ++v30; ++v11; } while ( v11 < v29 ); return 0; } //----- (004565E0) -------------------------------------------------------- bool __thiscall sub_4565E0(int this, int a2, int a3) { int v3; // esi@1 bool result; // al@2 void *v5; // ecx@3 int v6; // ecx@7 int v7; // eax@7 int v8; // ecx@7 int v9; // eax@8 bool v10; // zf@10 v3 = this; if ( !*(_DWORD *)(this + 122) ) return (unsigned int)sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMover::so_smv_MoveStop : Invalid map", 0); v5 = (void *)(this + 368); if ( !*(_DWORD *)(v3 + 400) || (result = *(_DWORD *)v5 == 3, result != 1) ) { sub_4BDD80(v5, 1); if ( !a2 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_MoveLocationCheck_From : pFromLoc null", 0); LABEL_8: v9 = *(_DWORD *)v3; LABEL_9: (*(void (__thiscall **)(int))(v9 + 3900))(v3); return (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2636))(v3); } v6 = *(_DWORD *)(v3 + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(a2 + 4); if ( (unsigned int)((v7 - *(_DWORD *)a2) * (v7 - *(_DWORD *)a2) + v8 * v8) > 0x9C40 ) goto LABEL_8; v10 = sub_4561E0(v3, a2) == 0; v9 = *(_DWORD *)v3; if ( v10 ) goto LABEL_9; result = (*(int (__thiscall **)(int))(v9 + 2632))(v3); } return result; } //----- (004566A0) -------------------------------------------------------- int __thiscall sub_4566A0(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // ecx@1 int v4; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 8266; v3 = *(_DWORD *)((char *)v1 + 102); *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)v3; *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(v3 + 4); if ( sub_4C81E0(&off_849C18, 10) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v4 + 12))(v4, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004567A0) -------------------------------------------------------- int __thiscall sub_4567A0(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // edi@9 int v7; // eax@9 int v8; // ecx@11 int v9; // eax@11 int v10; // eax@11 int v11; // ecx@11 int v12; // edx@12 void (__thiscall *v13)(_DWORD); // eax@13 char v14; // al@14 int v16; // [sp-4h] [bp-24h]@4 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_AF09774 & 1) ) { dword_AF09774 |= 1u; word_AF09770 = 70; atexit(nullsub_25); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF09770 ) { if ( !*(_DWORD *)(v4 + 122) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", *(_DWORD *)(v4 + 122) != 0); v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"; LABEL_19: --dword_750CB8; return sub_467660((int)&unk_D020420, v16); } if ( *(_DWORD *)(v4 + 400) && *(_DWORD *)(v4 + 368) == 3 ) { LABEL_18: v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"; goto LABEL_19; } v6 = a2 + 2; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3188))(v4); if ( v7 ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 3284))(v7, v6, v4); goto LABEL_18; } sub_4BDD80((void *)(v4 + 368), 1); v8 = *(_DWORD *)(v4 + 102); v9 = *(_DWORD *)(v8 + 4) - *(_DWORD *)(a2 + 6); v10 = (*(_DWORD *)v8 - *(_DWORD *)v6) * (*(_DWORD *)v8 - *(_DWORD *)v6) + v9 * v9; v11 = v4; if ( (unsigned int)v10 <= 0x9C40 ) { v14 = sub_455F20(v4, v6); v12 = *(_DWORD *)v4; if ( v14 ) { v13 = *(void (__thiscall **)(_DWORD))(v12 + 2632); goto LABEL_17; } v11 = v4; } else { v12 = *(_DWORD *)v4; } (*(void (__thiscall **)(int))(v12 + 3900))(v11); v13 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2636); LABEL_17: v13(v4); goto LABEL_18; } dword_750CB8 -= v5; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09770: using guessed type __int16 word_AF09770; // AF09774: using guessed type int dword_AF09774; //----- (00456950) -------------------------------------------------------- int __thiscall sub_456950(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // eax@8 int v7; // edi@8 int v8; // ebx@8 void *v9; // eax@8 int v10; // ecx@8 int v11; // ST04_4@8 int v12; // eax@8 int v13; // esi@8 int v15; // [sp-4h] [bp-30h]@8 char v16; // [sp+10h] [bp-1Ch]@8 int v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 v4 = (int)this; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( !(dword_AF0977C & 1) ) { dword_AF0977C |= 1u; word_AF09778 = 70; atexit(nullsub_26); v5 = 1; } if ( !((v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF09778) || *(_BYTE *)(v4 + 7888) & 4 ) goto LABEL_10; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) ) { v5 = 1; LABEL_10: dword_750CB8 -= v5; goto LABEL_11; } if ( !*(_DWORD *)(v4 + 122) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ : Invalid map", *(_DWORD *)(v4 + 122) != 0); --dword_750CB8; LABEL_11: v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"; v18 = -1; return sub_467660((int)&unk_D020420, v15); } v6 = *(_DWORD *)(v4 + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4); sub_452220(v4, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), 2); v9 = off_849C18; *(_WORD *)off_849C18 = 8196; *((_WORD *)v9 + 1) = a4; *((_DWORD *)v9 + 1) = v7; *((_DWORD *)v9 + 2) = v8; v10 = *(_DWORD *)(v4 + 102); *((_DWORD *)v9 + 3) = *(_DWORD *)v10; *((_DWORD *)v9 + 4) = *(_DWORD *)(v10 + 4); sub_4287B0(&v16, &off_849C18, 20); v11 = *(_DWORD *)(v4 + 102); LOBYTE(v18) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v12, v11, 0, 0, (int)&v16, 0, 65535); v13 = *(_DWORD *)(v4 + 32650); *(_WORD *)(v13 + 84) = word_13244DBC; *(_BYTE *)(v13 + 86) = byte_13244DBE; LOBYTE(v18) = 0; sub_428A70(&v16); --dword_750CB8; v18 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09778: using guessed type __int16 word_AF09778; // AF0977C: using guessed type int dword_AF0977C; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00456B30) -------------------------------------------------------- int __thiscall sub_456B30(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // eax@8 int v7; // edi@8 int v8; // ebx@8 void *v9; // eax@8 int v10; // ecx@8 int v11; // ST04_4@8 int v12; // eax@8 int v13; // esi@8 int v15; // [sp-4h] [bp-30h]@8 char v16; // [sp+10h] [bp-1Ch]@8 int v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 v4 = (int)this; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( !(dword_AF09784 & 1) ) { dword_AF09784 |= 1u; word_AF09780 = 70; atexit(nullsub_27); v5 = 1; } if ( !((v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF09780) || *(_BYTE *)(v4 + 7888) & 4 ) goto LABEL_10; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) ) { v5 = 1; LABEL_10: dword_750CB8 -= v5; goto LABEL_11; } if ( !*(_DWORD *)(v4 + 122) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ : Invalid map", *(_DWORD *)(v4 + 122) != 0); --dword_750CB8; LABEL_11: v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"; v18 = -1; return sub_467660((int)&unk_D020420, v15); } v6 = *(_DWORD *)(v4 + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4); sub_452220(v4, *(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14), 3); v9 = off_849C18; *(_WORD *)off_849C18 = 8198; *((_WORD *)v9 + 1) = a4; *((_DWORD *)v9 + 1) = v7; *((_DWORD *)v9 + 2) = v8; v10 = *(_DWORD *)(v4 + 102); *((_DWORD *)v9 + 3) = *(_DWORD *)v10; *((_DWORD *)v9 + 4) = *(_DWORD *)(v10 + 4); sub_4287B0(&v16, &off_849C18, 20); v11 = *(_DWORD *)(v4 + 102); LOBYTE(v18) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v12, v11, 0, 0, (int)&v16, 0, 65535); v13 = *(_DWORD *)(v4 + 32650); *(_WORD *)(v13 + 84) = word_13244DBC; *(_BYTE *)(v13 + 86) = byte_13244DBE; LOBYTE(v18) = 0; sub_428A70(&v16); --dword_750CB8; v18 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09780: using guessed type __int16 word_AF09780; // AF09784: using guessed type int dword_AF09784; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00456D10) -------------------------------------------------------- int __thiscall sub_456D10(void *this, int a2, int a3, __int16 a4) { void *v4; // ebx@1 signed int v5; // esi@1 signed int v6; // eax@1 unsigned __int8 v7; // al@7 int v8; // edx@9 void *v9; // edi@13 int v10; // edi@14 void *v11; // eax@15 int v12; // ST04_4@15 int v13; // eax@15 int v14; // ebx@15 int v16; // [sp-4h] [bp-30h]@4 char v17; // [sp+10h] [bp-1Ch]@15 int v18; // [sp+1Ch] [bp-10h]@1 int v19; // [sp+28h] [bp-4h]@1 v4 = this; v18 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; v5 = -1; v6 = 1; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( !(dword_AF0978C & 1) ) { dword_AF0978C |= 1u; word_AF09788 = 6; atexit(nullsub_28); v6 = 1; } if ( (v6 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AF09788 ) { if ( *(_DWORD *)((char *)v4 + 122) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); v7 = *(_BYTE *)(a2 + 2); v8 = v7 == 1 || v7 == 2; if ( v8 ) { **((_BYTE **)v4 + 957) = v7; v9 = (void *)(*(_DWORD *)((char *)v4 + 32650) + 37); if ( *((_BYTE *)v4 + 155503) ) { memcpy(v9, (char *)v4 + 155460, 0x28u); v10 = (int)((char *)v9 + 40); *(_WORD *)v10 = *((_WORD *)v4 + 77750); *(_BYTE *)(v10 + 2) = *((_BYTE *)v4 + 155502); *((_BYTE *)v4 + 155503) = 0; v5 = -1; } v11 = off_849C18; *(_WORD *)off_849C18 = 8201; *((_WORD *)v11 + 1) = a4; *((_BYTE *)v11 + 4) = **((_BYTE **)v4 + 957); sub_4287B0(&v17, &off_849C18, 5); v12 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v19) = 1; v13 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v13, v12, 0, 0, (int)&v17, 0, 65535); v14 = *(_DWORD *)((char *)v4 + 32650); *(_WORD *)(v14 + 84) = word_13244DBC; *(_BYTE *)(v14 + 86) = byte_13244DBE; LOBYTE(v19) = 0; sub_428A70(&v17); v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ : Try to set invalid mode", v7); v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ : Invalid map", *(_DWORD *)((char *)v4 + 122) != 0); v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; } --dword_750CB8; } else { dword_750CB8 -= v6; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; } v19 = v5; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09788: using guessed type __int16 word_AF09788; // AF0978C: using guessed type int dword_AF0978C; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00456F10) -------------------------------------------------------- int __thiscall sub_456F10(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 int v5; // eax@7 int v6; // ST04_4@9 int v7; // eax@9 int v8; // eax@11 const void *v9; // ST24_4@11 int v10; // eax@13 int v11; // eax@15 void *v12; // ecx@16 int v13; // eax@16 int v14; // ST10_4@16 int v15; // eax@16 int v16; // eax@16 int v17; // edx@16 signed int v19; // [sp-4h] [bp-30h]@4 int v20; // [sp+0h] [bp-2Ch]@10 char v21; // [sp+10h] [bp-1Ch]@16 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 v4 = this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; if ( !(dword_AF09794 & 1) ) { dword_AF09794 |= 1u; word_AF09790 = 6; atexit(nullsub_29); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AF09790) ) { v19 = 2690; LABEL_19: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, v19); v23 = -1; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; goto LABEL_20; } if ( *((_BYTE *)v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) { v19 = 2694; goto LABEL_19; } v5 = *(_DWORD *)((char *)v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 157) ) { v19 = 2692; goto LABEL_19; } v6 = *(_DWORD *)((char *)v4 + 102); v7 = sub_427BD0(&unk_13253E80); if ( sub_549C70(v4, v7, v6, (_UNKNOWN *)0x190, 0, (int)sub_58AF00, 0, 0, 0, 0, 65535) ) { v8 = *(_DWORD *)((char *)v4 + 32650); *(_WORD *)(v8 + 84) = word_13244DBC; *(_BYTE *)(v8 + 86) = byte_13244DBE; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2632))(v4); v9 = (const void *)(*(_DWORD *)((char *)v4 + 32650) + 37); *((_DWORD *)v4 + 39088) = sub_5690B0; sub_455EF0((int)((char *)v4 + 155460), v9); if ( sub_56C420(v4, *(_DWORD *)((char *)v4 + 32650) + 37) ) { sub_448770((int)((char *)v4 + 84388), v4); **((_BYTE **)v4 + 957) = 4; v10 = *((_DWORD *)v4 + 40446); if ( v10 == 5 || v10 == 6 ) { v11 = dword_14D129E8 + 600; *((_DWORD *)v4 + 40474) = 600; *((_DWORD *)v4 + 40473) = v11; } v12 = off_849C18; *(_WORD *)off_849C18 = 8233; *((_WORD *)v12 + 1) = a4; v13 = *(_DWORD *)((char *)v4 + 32650); *((_DWORD *)v12 + 1) = *(_DWORD *)(v13 + 37); *((_DWORD *)v12 + 2) = *(_DWORD *)(v13 + 41); *((_DWORD *)v12 + 3) = *(_DWORD *)(v13 + 45); sub_4287B0(&v21, &off_849C18, 16); v14 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v23) = 1; v15 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v15, v14, 0, 0, (int)&v21, 0, 65535); v16 = dword_14D129E8; v17 = *(_DWORD *)v4; *((_DWORD *)v4 + 959) = dword_14D129E8; *((_DWORD *)v4 + 958) = v16; (*(void (__thiscall **)(void *))(v17 + 3792))(v4); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2689); LOBYTE(v23) = 0; sub_428A70(&v21); v23 = -1; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2693); sub_42A880((int)((char *)v4 + 155460), (void *)(*(_DWORD *)((char *)v4 + 32650) + 37)); v23 = -1; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2691); v23 = -1; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; } LABEL_20: --dword_750CB8; return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09790: using guessed type __int16 word_AF09790; // AF09794: using guessed type int dword_AF09794; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; // 14D129E8: using guessed type int dword_14D129E8; //----- (00457240) -------------------------------------------------------- int __thiscall sub_457240(void *this, int a2, int a3, __int16 a4) { void *v4; // ebx@1 int v5; // eax@3 void *v6; // edi@5 int v7; // edi@6 void *v8; // eax@7 int v9; // esi@7 int v10; // ST04_4@7 int v11; // eax@7 int v12; // ebx@7 int v14; // [sp+0h] [bp-2Ch]@4 char v15; // [sp+10h] [bp-1Ch]@7 int v16; // [sp+1Ch] [bp-10h]@1 int v17; // [sp+28h] [bp-4h]@1 v4 = this; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; if ( !(dword_AF0979C & 1) ) { dword_AF0979C |= 1u; word_AF09798 = 16; atexit(nullsub_30); } v5 = *((_DWORD *)v4 + 957); if ( (1 << *(_BYTE *)v5) & (unsigned __int16)word_AF09798 ) { *((_DWORD *)v4 + 39088) = nullsub_2; *(_BYTE *)v5 = 1; v6 = (void *)(*(_DWORD *)((char *)v4 + 32650) + 37); if ( *((_BYTE *)v4 + 155503) ) { memcpy(v6, (char *)v4 + 155460, 0x28u); v7 = (int)((char *)v6 + 40); *(_WORD *)v7 = *((_WORD *)v4 + 77750); *(_BYTE *)(v7 + 2) = *((_BYTE *)v4 + 155502); *((_BYTE *)v4 + 155503) = 0; } v8 = off_849C18; *(_WORD *)off_849C18 = 8236; *((_WORD *)v8 + 1) = a4; v9 = *(_DWORD *)((char *)v4 + 32650) + 37; memcpy((char *)v8 + 4, (const void *)v9, 0x28u); v9 += 40; *((_WORD *)v8 + 22) = *(_WORD *)v9; *((_BYTE *)v8 + 46) = *(_BYTE *)(v9 + 2); sub_4287B0(&v15, &off_849C18, 47); v10 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v17) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v11, v10, 0, 0, (int)&v15, 0, 65535); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 43, 2689); v12 = *(_DWORD *)((char *)v4 + 32650); *(_WORD *)(v12 + 84) = word_13244DBC; *(_BYTE *)(v12 + 86) = byte_13244DBE; LOBYTE(v17) = 0; sub_428A70(&v15); v17 = -1; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 43, 2690); v17 = -1; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09798: using guessed type __int16 word_AF09798; // AF0979C: using guessed type int dword_AF0979C; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00457410) -------------------------------------------------------- int __thiscall sub_457410(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // edi@5 int v7; // eax@5 int v9; // eax@19 int v10; // ebx@22 int v11; // edi@22 int v12; // eax@24 int v13; // ecx@24 bool v14; // zf@30 int v15; // eax@31 int v16; // ecx@31 int v17; // ST04_4@31 int v18; // eax@31 int v19; // esi@31 int v20; // [sp-4h] [bp-30h]@4 char v21; // [sp+10h] [bp-1Ch]@31 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 int v24; // [sp+34h] [bp+8h]@5 v4 = (int)this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v23 = 0; if ( !(dword_AF097A4 & 1) ) { dword_AF097A4 |= 1u; word_AF097A0 = 70; atexit(nullsub_31); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF097A0 ) { v6 = a2 + 2; v24 = a2 + 2; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3188))(v4); if ( v7 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 3276))(v7, v6, v4) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2636))(v4); goto LABEL_8; } if ( *(_DWORD *)(v4 + 161784) == 1 ) sub_4D1880(v4); if ( *(_BYTE *)(v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) || *(_DWORD *)(v4 + 400) && *(_DWORD *)(v4 + 368) == 3 ) goto LABEL_8; if ( !*(_DWORD *)(v4 + 122) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", *(_DWORD *)(v4 + 122) != 0); LABEL_8: --dword_750CB8; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; goto LABEL_9; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v9 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A35C0); if ( sub_42A910(v4 + 160796) && !*(_BYTE *)(v4 + 160884) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); sub_575B60((void *)(v4 + 82024)); } sub_5799F0((void *)v4); v10 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4); v11 = v6 + 8; if ( *(_DWORD *)v24 != *(_DWORD *)v11 || *(_DWORD *)(v24 + 4) != *(_DWORD *)(v24 + 12) ) { if ( !sub_455F40(v4, v24) || !sub_455F20(v4, v11) || !sub_455F20(v4, *(_DWORD *)(v4 + 102)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3900))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2636))(v4); goto LABEL_26; } v14 = sub_456220((void *)v4, *(_DWORD *)(v4 + 102), v11, 2) == 1; v12 = *(_DWORD *)v4; v13 = v4; if ( !v14 ) { (*(void (__thiscall **)(int, int, int, signed int, _DWORD))(v12 + 1632))(v4, v11, v10, 1, 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3404))(v4, 1); v15 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8216; *(_WORD *)v15 = *(_WORD *)(v4 + 4); v16 = *(_DWORD *)(v4 + 102); *(_DWORD *)(v15 + 2) = *(_DWORD *)v16; *(_DWORD *)(v15 + 6) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 10) = *(_DWORD *)v11; *(_DWORD *)(v15 + 14) = *(_DWORD *)(v11 + 4); *(_WORD *)(v15 + 20) &= 0xFFFEu; *(_WORD *)(v15 + 18) = v10; sub_434610(v4, 24, v15); sub_4287B0(&v21, &off_849C18, 24); v17 = *(_DWORD *)(v4 + 102); LOBYTE(v23) = 1; v18 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v18, v17, 0, 0, (int)&v21, 0, 65535); v19 = *(_DWORD *)(v4 + 32650); *(_WORD *)(v19 + 84) = word_13244DBC; *(_BYTE *)(v19 + 86) = byte_13244DBE; LOBYTE(v23) = 0; sub_428A70(&v21); goto LABEL_26; } } else { v12 = *(_DWORD *)v4; v13 = v4; } (*(void (__thiscall **)(int))(v12 + 3900))(v13); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2636))(v4); LABEL_26: --dword_750CB8; v23 = -1; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; return sub_467660((int)&unk_D020420, v20); } dword_750CB8 -= v5; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; LABEL_9: v23 = -1; return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097A0: using guessed type __int16 word_AF097A0; // AF097A4: using guessed type int dword_AF097A4; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00457770) -------------------------------------------------------- int __thiscall sub_457770(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // edi@5 int v7; // eax@5 int v9; // eax@21 int v10; // ebx@21 int v11; // edi@24 int v12; // eax@26 int v13; // ecx@26 bool v14; // zf@32 int v15; // eax@33 int v16; // ecx@33 int v17; // ST04_4@33 int v18; // eax@33 int v19; // esi@33 int v20; // [sp-4h] [bp-30h]@4 char v21; // [sp+10h] [bp-1Ch]@33 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 int v24; // [sp+34h] [bp+8h]@5 v4 = (int)this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v23 = 0; if ( !(dword_AF097AC & 1) ) { dword_AF097AC |= 1u; word_AF097A8 = 70; atexit(nullsub_32); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF097A8 ) { v6 = a2 + 2; v24 = a2 + 2; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3188))(v4); if ( v7 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 3280))(v7, v6, v4) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2636))(v4); goto LABEL_8; } if ( *(_DWORD *)(v4 + 161784) == 1 ) sub_4D1880(v4); if ( *(_BYTE *)(v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) || *(_DWORD *)(v4 + 400) && *(_DWORD *)(v4 + 368) == 3 ) goto LABEL_8; if ( !*(_DWORD *)(v4 + 122) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", *(_DWORD *)(v4 + 122) != 0); LABEL_8: --dword_750CB8; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; goto LABEL_9; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); if ( **(_BYTE **)(v4 + 3828) == 6 && *(_BYTE *)(v4 + 160784) ) goto LABEL_8; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v9 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3550); v10 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); if ( sub_42A910(v4 + 160796) && !*(_BYTE *)(v4 + 160884) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); sub_575B60((void *)(v4 + 82024)); } sub_5799F0((void *)v4); v11 = v6 + 8; if ( *(_DWORD *)v24 != *(_DWORD *)v11 || *(_DWORD *)(v24 + 4) != *(_DWORD *)(v24 + 12) ) { if ( !sub_455F40(v4, v24) || !sub_455F20(v4, v11) || !sub_455F20(v4, *(_DWORD *)(v4 + 102)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3900))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2636))(v4); goto LABEL_28; } v14 = sub_456220((void *)v4, *(_DWORD *)(v4 + 102), v11, 2) == 1; v12 = *(_DWORD *)v4; v13 = v4; if ( !v14 ) { (*(void (__thiscall **)(int, int, int, signed int, _DWORD))(v12 + 1632))(v4, v11, v10, 2, 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3404))(v4, 1); v15 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8218; *(_WORD *)v15 = *(_WORD *)(v4 + 4); v16 = *(_DWORD *)(v4 + 102); *(_DWORD *)(v15 + 2) = *(_DWORD *)v16; *(_DWORD *)(v15 + 6) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 10) = *(_DWORD *)v11; *(_DWORD *)(v15 + 14) = *(_DWORD *)(v11 + 4); *(_WORD *)(v15 + 20) &= 0xFFFEu; *(_WORD *)(v15 + 18) = v10; sub_434610(v4, 26, v15); sub_4287B0(&v21, &off_849C18, 24); v17 = *(_DWORD *)(v4 + 102); LOBYTE(v23) = 1; v18 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v18, v17, 0, 0, (int)&v21, 0, 65535); v19 = *(_DWORD *)(v4 + 32650); *(_WORD *)(v19 + 84) = word_13244DBC; *(_BYTE *)(v19 + 86) = byte_13244DBE; LOBYTE(v23) = 0; sub_428A70(&v21); goto LABEL_28; } } else { v12 = *(_DWORD *)v4; v13 = v4; } (*(void (__thiscall **)(int))(v12 + 3900))(v13); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2636))(v4); LABEL_28: --dword_750CB8; v23 = -1; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; return sub_467660((int)&unk_D020420, v20); } dword_750CB8 -= v5; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; LABEL_9: v23 = -1; return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097A8: using guessed type __int16 word_AF097A8; // AF097AC: using guessed type int dword_AF097AC; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00457AE0) -------------------------------------------------------- int __thiscall sub_457AE0(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // ecx@1 int v4; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 8219; v3 = *(_DWORD *)((char *)v1 + 102); *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)v3; *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(v3 + 4); if ( sub_4C81E0(&off_849C18, 10) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v4 + 12))(v4, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SendMoveFail : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00457BE0) -------------------------------------------------------- int __thiscall sub_457BE0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@5 int v6; // eax@8 void *v7; // eax@11 void *v8; // ebx@11 unsigned __int16 v9; // ax@13 int v10; // eax@15 int v11; // eax@16 int v12; // eax@17 void **v13; // ebx@19 signed __int16 v14; // cx@25 int v15; // eax@28 void (__thiscall *v16)(_DWORD, _DWORD, _DWORD); // eax@29 void *v17; // ecx@29 void *v19; // [sp-8h] [bp-28h]@29 int v20; // [sp-4h] [bp-24h]@4 void **v21; // [sp-4h] [bp-24h]@29 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_AF097B4 & 1) ) { dword_AF097B4 |= 1u; word_AF097B0 = 70; atexit(nullsub_33); } if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2852))(v4, 0) != 1 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 8296; if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AF097B0) ) goto LABEL_6; if ( !*(_DWORD *)((char *)v4 + 122) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Invalid map", *(_DWORD *)((char *)v4 + 122) != 0); LABEL_6: *((_WORD *)v5 + 1) = 7209; if ( sub_4C81E0(&off_849C18, 5) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5); } goto LABEL_36; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); v7 = (void *)(*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 14460))( (char *)v4 + 57840, *(_BYTE *)(a2 + 2)); v8 = v7; if ( !v7 || !sub_5CF620(v7) ) { v14 = 7210; LABEL_31: *((_WORD *)v5 + 1) = v14; if ( sub_4C81E0(&off_849C18, 5) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); goto LABEL_34; } LABEL_32: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5); LABEL_36: v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; goto LABEL_37; } v9 = *((_WORD *)sub_5CF620(v8) + 4); if ( v9 == -1 ) { *((_WORD *)v5 + 1) = 7210; if ( sub_4C81E0(&off_849C18, 5) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); LABEL_34: v21 = &off_849C18; v17 = (void *)v10; v16 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12); v19 = v4; LABEL_35: v16(v17, v19, v21); goto LABEL_36; } goto LABEL_32; } v11 = sub_486C40((int)&dword_13258868, v9); if ( v11 ) { v12 = *(_DWORD *)v11; if ( v12 ) { if ( *(_DWORD *)(v12 + 32) == 9 ) { v13 = (void **)*(_WORD *)(v12 + 36); goto LABEL_24; } if ( *(_DWORD *)(v12 + 38) == 9 ) { v13 = (void **)*(_WORD *)(v12 + 42); goto LABEL_24; } if ( *(_DWORD *)(v12 + 44) == 9 ) { v13 = (void **)*(_WORD *)(v12 + 48); LABEL_24: if ( (signed int)v13 >= 0 ) { *((_WORD *)v5 + 1) = 7208; *((_BYTE *)v5 + 4) = (_BYTE)v13; if ( sub_4C81E0(&off_849C18, 5) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v15 + 12))(v15, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5); } v21 = v13; v19 = (void *)*((_WORD *)v4 + 2); v16 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2624); v17 = v4; goto LABEL_35; } goto LABEL_25; } } } LABEL_25: v14 = 7211; goto LABEL_31; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2636))(v4); v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; LABEL_37: --dword_750CB8; return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097B0: using guessed type __int16 word_AF097B0; // AF097B4: using guessed type int dword_AF097B4; // 13258868: using guessed type int dword_13258868; //----- (00457EE0) -------------------------------------------------------- int __thiscall sub_457EE0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // ebx@4 unsigned int v6; // edi@6 int v7; // eax@7 int v9; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2852))(v4, 0) == 1 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2636))(v4); v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"; } else { if ( dword_1335906C ) v5 = *(_DWORD *)(dword_1335906C + 40); else v5 = 0; v6 = 0; if ( !v5 ) goto LABEL_12; while ( 1 ) { v7 = sub_626BC0((int)&unk_13359038, v6); if ( v7 ) { if ( *(_BYTE *)v7 == *(_BYTE *)(a2 + 2) ) break; } ++v6; if ( v6 >= v5 ) goto LABEL_12; } if ( *(_DWORD *)(v7 + 101) != 2 ) { LABEL_12: if ( v6 != v5 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2624))(v4, a4, *(_BYTE *)(a2 + 2)); } v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1335906C: using guessed type int dword_1335906C; //----- (00458000) -------------------------------------------------------- int __thiscall sub_458000(void *this, __int16 a2, unsigned __int8 a3) { void *v3; // esi@1 signed int v4; // eax@1 unsigned int v5; // edi@1 void *v6; // eax@7 unsigned __int8 v7; // bl@7 int v8; // ST04_4@7 int v9; // eax@7 int v10; // eax@7 int v11; // eax@13 int v12; // eax@18 char v14; // [sp+10h] [bp-1Ch]@7 int v15; // [sp+1Ch] [bp-10h]@1 int v16; // [sp+28h] [bp-4h]@1 unsigned int v17; // [sp+38h] [bp+Ch]@10 v3 = this; v15 = (int)"ShineObjectClass::ShinePlayer::sp_DoEmotion"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DoEmotion"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DoEmotion"; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v16 = 0; if ( !(dword_AF097BC & 1) ) { dword_AF097BC |= 1u; word_AF097B8 = 70; atexit(nullsub_34); v4 = 1; } if ( (v4 << **((_BYTE **)v3 + 957)) & (unsigned __int16)word_AF097B8 ) { if ( *(_DWORD *)((char *)v3 + 122) != 0 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2256))(v3); v6 = off_849C18; v7 = a3; *(_WORD *)off_849C18 = 8225; *((_WORD *)v6 + 1) = a2; *((_BYTE *)v6 + 4) = a3; sub_4287B0(&v14, &off_849C18, 5); v8 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v16) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v9, v8, 0, 0, (int)&v14, 1, 65535); *(_BYTE *)(*(_DWORD *)((char *)v3 + 32650) + 84) = a3; *(_WORD *)(*(_DWORD *)((char *)v3 + 32650) + 85) = 0; (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 2616))(v3, 4, a3, 0); v10 = *((_DWORD *)v3 + 40446); if ( v10 == 5 || v10 == 6 ) { v17 = dword_1335906C ? *(_DWORD *)(dword_1335906C + 40) : 0; if ( v17 ) { while ( 1 ) { v11 = sub_626BC0((int)&unk_13359038, v5); if ( v11 ) { if ( *(_BYTE *)v11 == v7 ) break; } ++v5; if ( v5 >= v17 ) goto LABEL_19; } if ( *(_BYTE *)(v11 + 113) == 1 ) { v12 = dword_14D129E8 + 600; *((_DWORD *)v3 + 40478) = 600; *((_DWORD *)v3 + 40477) = v12; *((_DWORD *)v3 + 40479) = v5; } } } LABEL_19: LOBYTE(v16) = 0; sub_428A70(&v14); v16 = -1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_DoEmotion : Invalid map", 0); v16 = -1; } --dword_750CB8; } else { dword_750CB8 -= v4; v16 = -1; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DoEmotion"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097B8: using guessed type __int16 word_AF097B8; // AF097BC: using guessed type int dword_AF097BC; // 1335906C: using guessed type int dword_1335906C; // 14D129E8: using guessed type int dword_14D129E8; //----- (00458210) -------------------------------------------------------- int __thiscall sub_458210(void *this, int a2, int a3, __int16 a4) { void *v4; // edi@1 signed int v5; // eax@1 int v6; // esi@7 unsigned int v7; // ebx@10 bool v8; // zf@10 int v9; // eax@11 void *v10; // eax@16 int v11; // ST04_4@16 int v12; // eax@16 int v13; // eax@16 int v15; // [sp-4h] [bp-30h]@4 char v16; // [sp+10h] [bp-1Ch]@16 int v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 unsigned int v19; // [sp+34h] [bp+8h]@8 v4 = this; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( !(dword_AF097C4 & 1) ) { dword_AF097C4 |= 1u; word_AF097C0 = 70; atexit(nullsub_35); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AF097C0 ) { if ( *(_DWORD *)((char *)v4 + 122) ) { v6 = a2; if ( dword_1335906C ) v19 = *(_DWORD *)(dword_1335906C + 40); else v19 = 0; v7 = 0; v8 = v19 == 0; if ( v19 > 0 ) { do { v9 = sub_626BC0((int)&unk_13359038, v7); if ( v9 && *(_BYTE *)v9 == *(_BYTE *)(v6 + 2) ) break; ++v7; } while ( v7 < v19 ); v8 = v7 == v19; } if ( !v8 ) { v10 = off_849C18; *(_WORD *)off_849C18 = 8227; *((_WORD *)v10 + 1) = a4; *((_WORD *)v10 + 2) = *(_WORD *)(v6 + 2); *((_BYTE *)v10 + 6) = *(_BYTE *)(v6 + 4); sub_4287B0(&v16, &off_849C18, 7); v11 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v18) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v12, v11, 0, 0, (int)&v16, 1, 65535); v13 = *(_DWORD *)((char *)v4 + 32650); *(_WORD *)(v13 + 84) = *(_WORD *)(v6 + 2); *(_BYTE *)(v13 + 86) = *(_BYTE *)(v6 + 4); LOBYTE(v18) = 0; sub_428A70(&v16); } v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; v18 = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD : Invalid map", *(_DWORD *)((char *)v4 + 122) != 0); v18 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; } --dword_750CB8; } else { dword_750CB8 -= v5; v18 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; } return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097C0: using guessed type __int16 word_AF097C0; // AF097C4: using guessed type int dword_AF097C4; // 1335906C: using guessed type int dword_1335906C; //----- (004583E0) -------------------------------------------------------- int __stdcall sub_4583E0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Chat"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_Chat"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Chat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00458430) -------------------------------------------------------- int __thiscall sub_458430(void *this, __int16 a2, const void *a3, unsigned __int16 a4, char a5) { void *v5; // edi@1 void *v6; // esi@1 __int16 v7; // ax@1 int (__thiscall *v8)(_DWORD); // eax@1 int v9; // ST04_4@2 int v10; // eax@2 int v11; // edi@3 int v12; // esi@4 int v13; // eax@6 char v15; // [sp+10h] [bp-1Ch]@2 int v16; // [sp+1Ch] [bp-10h]@1 int v17; // [sp+28h] [bp-4h]@1 v5 = this; v16 = (int)"ShineObjectClass::ShineMobileObject::so_Chat"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Chat"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_Chat"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 8194; v7 = *((_WORD *)v5 + 2); *((_BYTE *)v6 + 5) ^= (*((_BYTE *)v6 + 5) ^ 2 * a5) & 2; *((_WORD *)v6 + 1) = v7; *((_BYTE *)v6 + 4) = a4; v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3820); v17 = 0; *((_BYTE *)v6 + 5) ^= (v8(v5) ^ *((_BYTE *)v6 + 5)) & 1; *((_BYTE *)v6 + 6) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 3620))(v5); *((_BYTE *)v6 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 3628))(v5); memmove((char *)v6 + 8, a3, a4); if ( a2 == -1 ) { sub_4287B0(&v15, &off_849C18, *((_BYTE *)v6 + 4) + 8); v9 = *(_DWORD *)((char *)v5 + 102); LOBYTE(v17) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v5, v10, v9, 0, 0, (int)&v15, 1, 65535); LOBYTE(v17) = 0; sub_428A70(&v15); } else { v11 = sub_54DE90(&unk_13253630, a2); if ( v11 ) { v12 = *((_BYTE *)v6 + 4) + 8; if ( sub_4C81E0(&off_849C18, v12) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 764))(v11); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v11, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_Chat : Packet Too Long", v12); } } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Chat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004585F0) -------------------------------------------------------- int __thiscall sub_4585F0(void *this, int a2, int a3, signed int a4) { int v4; // esi@1 signed int v5; // edx@1 int v6; // eax@5 void (__thiscall *v7)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@13 signed int v9; // [sp-10h] [bp-34h]@13 int v10; // [sp-Ch] [bp-30h]@13 int v11; // [sp-8h] [bp-2Ch]@13 int v12; // [sp-4h] [bp-28h]@4 int v13; // [sp-4h] [bp-28h]@13 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_AF097CC & 1) ) { dword_AF097CC |= 1u; word_AF097C8 = 126; atexit(nullsub_37); v5 = 1; } if ( !((v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF097C8) ) goto LABEL_4; v6 = *(_DWORD *)(v4 + 122); if ( !v6 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD: Invalid map", 0); goto LABEL_7; } if ( *(_BYTE *)(*(_DWORD *)(v6 + 12) + 161) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4) > (unsigned int)dword_DA22944 ) { if ( (unsigned int)dword_14D129E8 > *(_DWORD *)(v4 + 160880) ) { *(_DWORD *)(v4 + 160880) = dword_14D129E8 + 10 * dword_DA22948; if ( !sub_562760((void *)v4) ) { if ( sub_55EA30(v4) ) { v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1332); v13 = *(_BYTE *)(a2 + 2); v11 = a2 + 3; v10 = (int)byte_6A492E; v9 = a4; } else { v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1332); v13 = *(_BYTE *)(a2 + 2); v11 = a2 + 3; v10 = (int)byte_6A492E; v9 = 65535; } v7(v4, v9, v10, v11, v13); sub_5C96A0(v4 + 156368); v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"; goto LABEL_16; } } } LABEL_7: v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"; LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, v12); } LABEL_4: dword_750CB8 -= v5; v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"; return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097C8: using guessed type __int16 word_AF097C8; // AF097CC: using guessed type int dword_AF097CC; // DA22944: using guessed type int dword_DA22944; // DA22948: using guessed type int dword_DA22948; // 14D129E8: using guessed type int dword_14D129E8; //----- (004587A0) -------------------------------------------------------- int __stdcall sub_4587A0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::smo_Shout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::smo_Shout"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::smo_Shout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004587F0) -------------------------------------------------------- int __thiscall sub_4587F0(void *this, __int16 a2, int a3, const void *a4, unsigned __int16 a5) { void *v5; // edi@1 void *v6; // esi@1 int v7; // eax@1 bool v8; // zf@1 int v9; // edi@5 int v10; // esi@6 int v11; // eax@8 char v13; // [sp+Ch] [bp-1Ch]@4 int v14; // [sp+18h] [bp-10h]@1 int v15; // [sp+24h] [bp-4h]@1 v5 = this; v14 = (int)"ShineObjectClass::ShineMobileObject::smo_Shout"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_Shout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_Shout"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; v7 = a3; *(_WORD *)off_849C18 = 8223; *((_BYTE *)v6 + 22) &= 0xFDu; v8 = *(_BYTE *)a3 == 0; v15 = 0; if ( v8 ) v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)v7; *(_DWORD *)((char *)v6 + 6) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)(v7 + 8); *(_DWORD *)((char *)v6 + 14) = *(_DWORD *)(v7 + 12); *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)(v7 + 16); *((_BYTE *)v6 + 22) ^= ((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 3820))(v5) ^ *((_BYTE *)v6 + 22)) & 1; *((_BYTE *)v6 + 23) = a5; memmove((char *)v6 + 24, a4, a5); if ( a2 == -1 ) { sub_4287B0(&v13, &off_849C18, *((_BYTE *)v6 + 23) + 24); LOBYTE(v15) = 1; sub_549B60(v5, (int)&v13, 1); LOBYTE(v15) = 0; sub_428A70(&v13); } else { v9 = sub_54DE90(&unk_13253630, a2); if ( v9 ) { v10 = *((_BYTE *)v6 + 23) + 24; if ( sub_4C81E0(&off_849C18, v10) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v9, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_Shout : Packet Too Long", v10); } } } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_Shout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004589A0) -------------------------------------------------------- int __thiscall sub_4589A0(void *this, __int16 a2, int a3, const void *a4, unsigned __int16 a5) { void *v5; // edi@1 void *v6; // esi@1 bool v7; // zf@1 int v8; // edi@6 int v9; // esi@7 int v10; // eax@9 char v12; // [sp+Ch] [bp-1Ch]@5 int v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+24h] [bp-4h]@1 v5 = this; v13 = (int)"ShineObjectClass::ShineMob::smo_Shout"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_Shout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::smo_Shout"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 8223; v7 = *(_BYTE *)a3 == 0; v14 = 0; *((_BYTE *)v6 + 22) ^= (*((_BYTE *)v6 + 22) ^ 2 * v7) & 2; if ( *((_BYTE *)v6 + 22) & 2 ) { *((_WORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1800))(v5); } else { *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)a3; *(_DWORD *)((char *)v6 + 6) = *(_DWORD *)(a3 + 4); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)(a3 + 8); *(_DWORD *)((char *)v6 + 14) = *(_DWORD *)(a3 + 12); *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)(a3 + 16); } *((_BYTE *)v6 + 22) ^= ((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 3820))(v5) ^ *((_BYTE *)v6 + 22)) & 1; *((_BYTE *)v6 + 23) = a5; memmove((char *)v6 + 24, a4, a5); if ( a2 == -1 ) { sub_4287B0(&v12, &off_849C18, *((_BYTE *)v6 + 23) + 24); LOBYTE(v14) = 1; sub_549B60(v5, (int)&v12, 1); LOBYTE(v14) = 0; sub_428A70(&v12); } else { v8 = sub_54DE90(&unk_13253630, a2); if ( v8 ) { v9 = *((_BYTE *)v6 + 23) + 24; if ( sub_4C81E0(&off_849C18, v9) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_Shout : Packet Too Long", v9); } } } --dword_750CB8; v14 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_Shout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00458B60) -------------------------------------------------------- void __thiscall sub_458B60(void *this) { void *v1; // esi@1 int (__stdcall **v2)(int, int, int); // [sp+8h] [bp-14h]@1 void *v3; // [sp+Ch] [bp-10h]@1 int v4; // [sp+18h] [bp-4h]@1 v1 = this; sub_427BE0(&v2); v2 = &off_6AE034; v3 = v1; v4 = 0; sub_549B60(v1, (int)&v2, 1); v4 = -1; v2 = &off_6AE034; sub_427EB0(&v2); } // 6AE034: using guessed type int (__stdcall *off_6AE034)(int, int, int); //----- (00458BE0) -------------------------------------------------------- FILE *__thiscall sub_458BE0(void *this) { void *v1; // esi@1 int v2; // edi@1 FILE *result; // eax@1 int v4; // eax@5 v1 = this; v2 = (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1304))(); result = (FILE *)(unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1300))(v1); if ( *((_WORD *)v1 + 78174) != v2 || (FILE *)*((_WORD *)v1 + 78173) != result ) { *((_WORD *)v1 + 78174) = v2; *((_WORD *)v1 + 78173) = (_WORD)result; *(_DWORD *)off_849C18 = *((_DWORD *)v1 + 39086); *((_WORD *)off_849C18 + 2) = *((_WORD *)v1 + 78174); if ( sub_4C81E0(&off_849C18, 6) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); result = (FILE *)(*(int (__thiscall **)(int, void *, void **))(*(_DWORD *)v4 + 12))(v4, v1, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD : Packet Too Long", 6); } } return result; } //----- (00458C90) -------------------------------------------------------- FILE *__thiscall sub_458C90(void *this, char a2) { void *v2; // esi@1 int v3; // edi@1 FILE *result; // eax@1 int v5; // eax@6 v2 = this; v3 = (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1304))(); result = (FILE *)(unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1300))(v2); if ( *((_WORD *)v2 + 78174) != v3 || (FILE *)*((_WORD *)v2 + 78173) != result || !a2 ) { *((_WORD *)v2 + 78174) = v3; *((_WORD *)v2 + 78173) = (_WORD)result; *(_DWORD *)off_849C18 = *((_DWORD *)v2 + 39086); *((_WORD *)off_849C18 + 2) = *((_WORD *)v2 + 78174); if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); result = (FILE *)(*(int (__thiscall **)(int, void *, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD : Packet Too Long", 6); } } return result; } //----- (00458D50) -------------------------------------------------------- int __thiscall sub_458D50(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // edi@1 bool v7; // zf@1 void *v8; // esi@7 int v9; // eax@7 int v10; // edx@7 int v11; // ST04_4@7 int v12; // eax@7 int v14; // [sp-4h] [bp-30h]@2 char v15; // [sp+10h] [bp-1Ch]@7 int v16; // [sp+1Ch] [bp-10h]@1 int v17; // [sp+28h] [bp-4h]@1 v6 = this; v16 = (int)"ShineObjectClass::ShineMobileObject::so_ReinforceMove"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_ReinforceMove"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_ReinforceMove"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)((char *)v6 + 122) == 0; v17 = 0; if ( v7 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); v17 = -1; v14 = (int)"ShineObjectClass::ShineMobileObject::so_ReinforceMove"; LABEL_11: --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } if ( !(*((_BYTE *)v6 + 7398) & 2) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 2256))(v6); (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 3792))(v6); if ( sub_49D470(*(void **)(*(_DWORD *)((char *)v6 + 122) + 20), *(_DWORD *)a2, *(_DWORD *)(a2 + 4), 1) ) { (*(void (__thiscall **)(void *, int, int, signed int, int))(*(_DWORD *)v6 + 1632))(v6, a2, a3, 3, a4); v8 = off_849C18; *(_WORD *)off_849C18 = 8297; *((_WORD *)v8 + 1) = *((_WORD *)v6 + 2); v9 = *(_DWORD *)((char *)v6 + 102); *((_DWORD *)v8 + 1) = *(_DWORD *)v9; *((_DWORD *)v8 + 2) = *(_DWORD *)(v9 + 4); *((_DWORD *)v8 + 3) = *(_DWORD *)a2; v10 = *(_DWORD *)(a2 + 4); *((_WORD *)v8 + 10) = a3; *((_DWORD *)v8 + 4) = v10; *((_WORD *)v8 + 11) ^= (*((_WORD *)v8 + 11) ^ a4 != 0) & 1; sub_4287B0(&v15, &off_849C18, 24); v11 = *(_DWORD *)((char *)v6 + 102); LOBYTE(v17) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00(v6, v12, v11, 0, 0, (int)&v15, 1, 65535); if ( a5 ) { *(_DWORD *)a5 = *(_DWORD *)((char *)v8 + 2); *(_DWORD *)(a5 + 4) = *(_DWORD *)((char *)v8 + 6); *(_DWORD *)(a5 + 8) = *(_DWORD *)((char *)v8 + 10); *(_DWORD *)(a5 + 12) = *(_DWORD *)((char *)v8 + 14); *(_DWORD *)(a5 + 16) = *(_DWORD *)((char *)v8 + 18); *(_WORD *)(a5 + 20) = *((_WORD *)v8 + 11); } LOBYTE(v17) = 0; sub_428A70(&v15); v17 = -1; } else { v17 = -1; } v14 = (int)"ShineObjectClass::ShineMobileObject::so_ReinforceMove"; goto LABEL_11; } --dword_750CB8; v17 = -1; v14 = (int)"ShineObjectClass::ShineMobileObject::so_ReinforceMove"; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00458F40) -------------------------------------------------------- int __thiscall sub_458F40(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 bool v7; // zf@1 int v8; // edx@5 int v9; // ecx@5 int v10; // edx@5 __int16 v11; // ax@5 int v12; // esi@5 int v14; // [sp-4h] [bp-38h]@2 int v15; // [sp+Ch] [bp-28h]@3 int v16; // [sp+10h] [bp-24h]@5 int v17; // [sp+14h] [bp-20h]@5 int v18; // [sp+18h] [bp-1Ch]@5 int v19; // [sp+1Ch] [bp-18h]@5 __int16 v20; // [sp+20h] [bp-14h]@5 int v21; // [sp+24h] [bp-10h]@1 int v22; // [sp+30h] [bp-4h]@1 v6 = this; v21 = (int)"ShineObjectClass::ShinePlayer::so_ReinforceMove"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ReinforceMove"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ReinforceMove"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)((char *)v6 + 122) == 0; v22 = 0; if ( v7 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); v14 = (int)"ShineObjectClass::ShinePlayer::so_ReinforceMove"; } else { sub_458D50(v6, a2, a3, a4, (int)&v15, a6); if ( (_BYTE)a6 ) sub_5644E0((char *)v6 + 32654); sub_5799F0(v6); v8 = v16; *(_DWORD *)((char *)v6 + 334) = v15; v9 = v18; *(_DWORD *)((char *)v6 + 338) = v8; v10 = v19; *((_WORD *)v6 + 166) = 105; *(_DWORD *)((char *)v6 + 342) = v17; v11 = v20; *(_DWORD *)((char *)v6 + 346) = v9; *(_DWORD *)((char *)v6 + 350) = v10; *((_WORD *)v6 + 177) = v11; v12 = *(_DWORD *)((char *)v6 + 32650); *(_WORD *)(v12 + 84) = word_13244DBC; *(_BYTE *)(v12 + 86) = byte_13244DBE; v14 = (int)"ShineObjectClass::ShinePlayer::so_ReinforceMove"; } --dword_750CB8; v22 = -1; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00459090) -------------------------------------------------------- int __thiscall sub_459090(void *this, int a2) { void *v2; // esi@1 int v3; // edi@3 int v4; // eax@3 int v5; // ecx@4 int v6; // eax@7 int v7; // eax@9 int v8; // eax@10 int v10; // [sp-4h] [bp-24h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ShootMeTo"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)((char *)v2 + 122) ) { v3 = 1000; v4 = sub_401310(&unk_877138, 391); if ( v4 ) { v5 = *(_DWORD *)(v4 + 48); if ( v5 ) v3 = *(_DWORD *)(v5 + 43); (*(void (__thiscall **)(void *, void *, signed int, signed int, int, int, _DWORD, signed int, int, signed int, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, 391, 1, v4, dword_14D129E8, 0, -1, v3, 9, 0); sub_401900(v2, 391); sub_4055D0(v2, 391, v3, 1); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 1008))(v2, 391, v3, 1); } v6 = sub_401310(&unk_877138, 350); if ( v6 ) { (*(void (__thiscall **)(void *, void *, signed int, signed int, int, int, _DWORD, signed int, int, signed int, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, 350, 1, v6, dword_14D129E8, 0, -1, v3, 9, 0); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 1008))(v2, 350, v3, 1); } v7 = sub_4011C0( &unk_AF09DA8, *(_DWORD *)a2 - **(_DWORD **)((char *)v2 + 102), *(_DWORD *)(a2 + 4) - *(_DWORD *)(*(_DWORD *)((char *)v2 + 102) + 4)); if ( v3 ) v8 = 1000 * v7 / v3; else v8 = 100; (*(void (__thiscall **)(void *, int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 2600))(v2, a2, v8, 0, 0, 1); --dword_750CB8; v10 = (int)"ShineObjectClass::ShineMobileObject::smo_ShootMeTo"; } else { --dword_750CB8; v10 = (int)"ShineObjectClass::ShineMobileObject::smo_ShootMeTo"; } return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00459250) -------------------------------------------------------- char __thiscall sub_459250(void *this, int a2, int a3) { int v3; // esi@1 char result; // al@3 void *v5; // ecx@6 int v6; // eax@12 int v7; // ebx@12 int v8; // edi@13 int v9; // eax@15 int v10; // ecx@15 bool v11; // al@17 int v12; // ecx@17 bool v13; // al@19 bool v14; // al@20 bool v15; // zf@21 int v16; // eax@22 int v17; // ecx@22 int v18; // ST04_4@22 int v19; // eax@22 char v20; // [sp+10h] [bp-18h]@22 int v21; // [sp+24h] [bp-4h]@22 v3 = (int)this; if ( !a2 ) { sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_MoveWalk : Moverwalk data null", 0); return 0; } if ( *((_BYTE *)this + 7888) & 4 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 3864))() == 1 || (v5 = (void *)(v3 + 368), *(_DWORD *)(v3 + 400)) && (*(_DWORD *)v5 == 3) == 1 ) return 0; if ( !*(_DWORD *)(v3 + 122) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMover::smv_MoveWalk : Invalid map", 0); return 0; } if ( *(_DWORD *)(v3 + 7948) != a3 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMover::smv_MoveWalk : Not the driver", 0); return 0; } sub_4BDD80(v5, 1); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1324))(v3); sub_5A7F60(v6 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A35C0); v7 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1300))(v3); if ( v7 <= 0 ) return 0; v8 = a2 + 8; if ( *(_DWORD *)a2 == *(_DWORD *)(a2 + 8) && *(_DWORD *)(a2 + 4) == *(_DWORD *)(a2 + 12) ) { v9 = *(_DWORD *)v3; v10 = v3; LABEL_16: (*(void (__thiscall **)(int))(v9 + 3900))(v10); return 0; } v11 = sub_456190(v3, a2); v12 = v3; if ( v11 && (v13 = sub_4561E0(v3, v8), v12 = v3, v13) && (v14 = sub_4561E0(v3, *(_DWORD *)(v3 + 102)), v12 = v3, v14) ) { v15 = sub_456220((void *)v3, *(_DWORD *)(v3 + 102), v8, 2) == 1; v9 = *(_DWORD *)v3; v10 = v3; if ( v15 ) goto LABEL_16; (*(void (__thiscall **)(int))(v9 + 1632))(v3); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 3404))(v3, 1); v16 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8216; *(_WORD *)v16 = *(_WORD *)(v3 + 4); v17 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v16 + 2) = *(_DWORD *)v17; *(_DWORD *)(v16 + 6) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 10) = *(_DWORD *)v8; *(_DWORD *)(v16 + 14) = *(_DWORD *)(a2 + 12); *(_WORD *)(v16 + 20) &= 0xFFFEu; *(_WORD *)(v16 + 18) = v7; sub_434610(v3, 24, v16); sub_4287B0(&v20, &off_849C18, 24); v18 = *(_DWORD *)(v3 + 102); v21 = 0; v19 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(v3 + 7948), v19, v18, 0, 0, (int)&v20, 0, 65535); v21 = -1; sub_428A70(&v20); result = 1; } else { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3900))(v12); result = 0; } return result; } //----- (004594D0) -------------------------------------------------------- char __thiscall sub_4594D0(void *this, int a2, int a3) { int v3; // esi@1 char result; // al@3 int v5; // eax@12 int v6; // ebx@12 int v7; // edi@13 int v8; // eax@15 int v9; // ecx@15 bool v10; // al@17 int v11; // ecx@17 bool v12; // al@19 bool v13; // al@20 bool v14; // zf@21 int v15; // eax@22 int v16; // ecx@22 int v17; // ST04_4@22 int v18; // eax@22 char v19; // [sp+10h] [bp-18h]@22 int v20; // [sp+24h] [bp-4h]@22 v3 = (int)this; if ( !a2 ) { sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_MoveRun : Moverun data null", 0); return 0; } if ( *((_BYTE *)this + 7888) & 4 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 3864))() == 1 || *(_DWORD *)(v3 + 400) && (*(_DWORD *)(v3 + 368) == 3) == 1 ) return 0; if ( !*(_DWORD *)(v3 + 122) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMover::smv_MovRun : Invalid map", 0); return 0; } if ( *(_DWORD *)(v3 + 7948) != a3 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMover::smv_MovRun : Not the driver", 0); return 0; } v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1324))(v3); sub_5A7F60(v5 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3550); sub_4BDD80((void *)(v3 + 368), 1); v6 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1304))(v3); if ( v6 <= 0 ) return 0; v7 = a2 + 8; if ( *(_DWORD *)a2 == *(_DWORD *)(a2 + 8) && *(_DWORD *)(a2 + 4) == *(_DWORD *)(a2 + 12) ) { v8 = *(_DWORD *)v3; v9 = v3; LABEL_16: (*(void (__thiscall **)(int))(v8 + 3900))(v9); return 0; } v10 = sub_456190(v3, a2); v11 = v3; if ( v10 && (v12 = sub_4561E0(v3, v7), v11 = v3, v12) && (v13 = sub_4561E0(v3, *(_DWORD *)(v3 + 102)), v11 = v3, v13) ) { v14 = sub_456220((void *)v3, *(_DWORD *)(v3 + 102), v7, 2) == 1; v8 = *(_DWORD *)v3; v9 = v3; if ( v14 ) goto LABEL_16; (*(void (__thiscall **)(int))(v8 + 1632))(v3); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 3404))(v3, 1); v15 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8218; *(_WORD *)v15 = *(_WORD *)(v3 + 4); v16 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v15 + 2) = *(_DWORD *)v16; *(_DWORD *)(v15 + 6) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 10) = *(_DWORD *)v7; *(_DWORD *)(v15 + 14) = *(_DWORD *)(a2 + 12); *(_WORD *)(v15 + 20) &= 0xFFFEu; *(_WORD *)(v15 + 18) = v6; sub_434610(v3, 26, v15); sub_4287B0(&v19, &off_849C18, 24); v17 = *(_DWORD *)(v3 + 102); v20 = 0; v18 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(v3 + 7948), v18, v17, 0, 0, (int)&v19, 0, 65535); v20 = -1; sub_428A70(&v19); result = 1; } else { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3900))(v11); result = 0; } return result; } //----- (00459750) -------------------------------------------------------- int __thiscall sub_459750(int this, int a2, int a3, char a4) { int v4; // esi@1 int v5; // eax@2 int result; // eax@2 int v7; // [sp+4h] [bp-8h]@2 int v8; // [sp+8h] [bp-4h]@2 v4 = this; if ( *(_BYTE *)(this + 326) ) { v5 = *(_DWORD *)(this + 102); v7 = *(_DWORD *)v5; v8 = *(_DWORD *)(v5 + 4); sub_4BD480((void *)this, (int)&a2); **(_BYTE **)(v4 + 106) = a4; sub_452220(v4, a2, a3, 120); result = sub_4BD660((void *)v4, (int)&v7); } return result; } //----- (004597B0) -------------------------------------------------------- int __thiscall sub_4597B0(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // edx@2 int v4; // eax@2 void *v5; // eax@3 int v6; // ecx@3 int (__thiscall *v7)(_DWORD); // eax@3 int v8; // edi@4 int v9; // eax@5 void *v10; // ecx@5 int v12; // [sp-18h] [bp-44h]@5 _UNKNOWN *v13; // [sp-14h] [bp-40h]@5 int v14; // [sp-10h] [bp-3Ch]@5 int v15; // [sp-Ch] [bp-38h]@5 int v16; // [sp-8h] [bp-34h]@5 int v17; // [sp-4h] [bp-30h]@5 char v18; // [sp+10h] [bp-1Ch]@3 int v19; // [sp+1Ch] [bp-10h]@1 int v20; // [sp+28h] [bp-4h]@1 v1 = this; v19 = (int)"ShineObjectClass::ShineMobileObject::so_mobile_StopHere"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_StopHere"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_mobile_StopHere"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 92) == 3; v20 = 0; if ( !v2 ) { v3 = *((_DWORD *)v1 + 93); *((_DWORD *)v1 + 92) = 0; *((_DWORD *)v1 + 99) = 0; *((_DWORD *)v1 + 100) = 0; *((_DWORD *)v1 + 101) = 0; *((_DWORD *)v1 + 102) = 0; *((_DWORD *)v1 + 103) = 0; *((_DWORD *)v1 + 94) = 0; v4 = *(_DWORD *)(v3 + 102); *((_DWORD *)v1 + 97) = *(_DWORD *)v4; *((_DWORD *)v1 + 98) = *(_DWORD *)(v4 + 4); } *((_WORD *)v1 + 166) = 0; v5 = off_849C18; *(_WORD *)off_849C18 = 8211; *((_WORD *)v5 + 1) = *((_WORD *)v1 + 2); v6 = *(_DWORD *)((char *)v1 + 102); *((_DWORD *)v5 + 1) = *(_DWORD *)v6; *((_DWORD *)v5 + 2) = *(_DWORD *)(v6 + 4); sub_4287B0(&v18, &off_849C18, 12); v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1232); LOBYTE(v20) = 1; if ( (unsigned __int8)v7(v1) != 11 ) { v17 = 65535; v16 = 0; v15 = (int)&v18; v14 = 0; v13 = 0; v12 = *(_DWORD *)((char *)v1 + 102); v9 = sub_427BD0(&unk_13253E80); v10 = v1; goto LABEL_7; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 3248))(v1); if ( v8 ) { v17 = 65535; v16 = 0; v15 = (int)&v18; v14 = 0; v13 = 0; v12 = *(_DWORD *)((char *)v1 + 102); v9 = sub_427BD0(&unk_13253E80); v10 = (void *)v8; LABEL_7: sub_549E00(v10, v9, v12, v13, v14, v15, v16, v17); } LOBYTE(v20) = 0; sub_428A70(&v18); --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_mobile_StopHere"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00459940) -------------------------------------------------------- int __cdecl sub_459940(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 8 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); } v3 += 8; } return result; } //----- (00459AD0) -------------------------------------------------------- int __thiscall sub_459AD0(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 signed int v5; // eax@1 void *v6; // eax@5 int v7; // ST04_4@5 int v8; // eax@5 void *v9; // ebx@5 void *i; // edi@5 int v11; // esi@9 int v13; // [sp-4h] [bp-40h]@4 void *v14; // [sp+10h] [bp-2Ch]@5 void *v15; // [sp+14h] [bp-28h]@5 int v16; // [sp+18h] [bp-24h]@5 char v17; // [sp+20h] [bp-1Ch]@5 int v18; // [sp+2Ch] [bp-10h]@1 int v19; // [sp+38h] [bp-4h]@1 v4 = (int)this; v18 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( !(dword_AF097D4 & 1) ) { dword_AF097D4 |= 1u; word_AF097D0 = 70; atexit(nullsub_24); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF097D0 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); v6 = off_849C18; *(_WORD *)off_849C18 = 8229; *((_WORD *)v6 + 1) = a4; sub_4287B0(&v17, &off_849C18, 4); v7 = *(_DWORD *)(v4 + 102); LOBYTE(v19) = 1; v8 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v8, v7, 0, 0, (int)&v17, 0, 65535); v14 = 0; v15 = 0; v16 = 0; LOBYTE(v19) = 2; loc_459970(&dword_D56DC48, v4, &v14); v9 = v14; for ( i = v14; i != v15; i = (char *)i + 4 ) { if ( *(_DWORD *)i ) sub_48FBE0(*(void **)i, v4); } v11 = *(_DWORD *)(v4 + 32650); *(_WORD *)(v11 + 84) = word_13244DBC; *(_BYTE *)(v11 + 86) = byte_13244DBE; if ( v9 ) operator delete(v9); LOBYTE(v19) = 0; sub_428A70(&v17); --dword_750CB8; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; } else { dword_750CB8 -= v5; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; } v19 = -1; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF097D0: using guessed type __int16 word_AF097D0; // AF097D4: using guessed type int dword_AF097D4; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; //----- (00459C80) -------------------------------------------------------- int __thiscall sub_459C80(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // ebx@7 bool v7; // al@10 void (__thiscall *v8)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@10 int v9; // eax@12 int v10; // eax@15 int v11; // eax@16 int v12; // edx@16 int v13; // ecx@16 char *v14; // eax@16 char v15; // cl@17 size_t v16; // ebx@18 int v17; // edi@19 unsigned __int8 v18; // bl@26 size_t v19; // edi@26 int v20; // ebx@28 void **i; // edi@28 int v23; // [sp-10h] [bp-18Ch]@10 int v24; // [sp-Ch] [bp-188h]@10 unsigned int v25; // [sp-4h] [bp-180h]@1 const char *v26; // [sp+14h] [bp-168h]@10 char v27[4]; // [sp+1Ch] [bp-160h]@15 int v28; // [sp+20h] [bp-15Ch]@25 int v29; // [sp+24h] [bp-158h]@25 char v30[256]; // [sp+2Ch] [bp-150h]@28 char v31[4]; // [sp+12Ch] [bp-50h]@16 int v32; // [sp+130h] [bp-4Ch]@16 int v33; // [sp+134h] [bp-48h]@16 int v34; // [sp+138h] [bp-44h]@16 char v35; // [sp+13Ch] [bp-40h]@16 unsigned int v36; // [sp+16Ch] [bp-10h]@1 int v37; // [sp+178h] [bp-4h]@1 int v38; // [sp+17Ch] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v25 = (unsigned int)&v38 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v37 = 0; if ( !(dword_AF097DC & 1) ) { dword_AF097DC |= 1u; word_AF097D8 = 126; atexit(nullsub_36); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_AF097D8 ) { if ( *(_DWORD *)(v4 + 122) != 0 ) { v6 = a2 + 2; if ( !sub_419D10((void *)v4, a4, a2 + 2) && *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 160) && !sub_562760((void *)v4) ) { v7 = sub_55EA30(v4); v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1328); v24 = *(_BYTE *)v6; v26 = (const char *)(a2 + 3); v23 = a2 + 3; if ( v7 ) { v8(v4, a4, v23, v24, 1, v25); } else { v8(v4, 65535, v23, v24, 1, v25); v9 = *(_DWORD *)(v4 + 161784); if ( v9 == 5 || v9 == 6 ) { if ( *(_DWORD *)(v4 + 161820) != -1 ) { sub_455E80(v27, byte_6A492E); LOBYTE(v10) = sub_455EB0(v4 + 161824, (int)v27); if ( v10 ) { v11 = *(_DWORD *)(v4 + 161832); v12 = *(_DWORD *)(v4 + 161828); *(_DWORD *)v31 = *(_DWORD *)(v4 + 161824); v13 = *(_DWORD *)(v4 + 161836); v33 = v11; v14 = v31; v32 = v12; v34 = v13; v35 = 0; do v15 = *v14++; while ( v15 ); v16 = v14 - &v31[1]; if ( (signed int)(v14 - &v31[1]) >= 4 ) { v17 = 0; if ( ((a3 - v16) & 0x80000000u) == 0 ) { while ( strncmp(&v26[v17], v31, v16) ) { ++v17; if ( v17 > (signed int)(a3 - v16) ) goto LABEL_24; } *(_DWORD *)(v4 + 161792) = 1; } } LABEL_24: v6 = a2 + 2; } } } } sub_5C9670(v4 + 156368); *(_DWORD *)v27 = 0; v28 = 0; v29 = 0; LOBYTE(v37) = 1; if ( loc_459970(&dword_D56DC58, v4) > 0 ) { v18 = *(_BYTE *)v6; v19 = v18; if ( v18 >= 0xFFu ) v19 = 255; strncpy(v30, v26, v19); v20 = v28; v30[v19] = 0; for ( i = *(void ***)v27; i != (void **)v20; ++i ) { if ( *i ) sub_48FAD0(*i, v4, (int)v30); } } if ( *(_DWORD *)v27 ) operator delete(*(void **)v27); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ : Invalid map", 0); } --dword_750CB8; } else { dword_750CB8 -= v5; } v37 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AF097D8: using guessed type __int16 word_AF097D8; // AF097DC: using guessed type int dword_AF097DC; // 459C80: using guessed type char var_150[256]; //----- (00459FA0) -------------------------------------------------------- int __thiscall sub_459FA0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 unsigned int v5; // esi@1 void *v6; // eax@4 int v7; // eax@6 signed int v8; // edi@7 signed int v9; // ebx@7 int v10; // eax@9 unsigned int v11; // esi@13 int v12; // eax@15 int v13; // ecx@17 int v14; // eax@17 int v15; // eax@21 char *v16; // edx@23 char v17; // cl@24 int v18; // eax@26 unsigned __int16 v19; // ax@29 int v20; // eax@29 unsigned __int16 **v21; // ebx@29 int v22; // eax@30 int v23; // edi@33 int v24; // eax@33 int (__thiscall *v25)(_DWORD); // eax@33 int v26; // eax@33 void *v27; // eax@34 int v28; // eax@36 void *v29; // eax@38 int v30; // eax@39 void *v31; // esi@40 char *v32; // eax@40 __int16 v33; // ax@40 void *v34; // ebx@42 int v35; // eax@42 __int16 v36; // cx@42 __int16 v37; // ax@42 int v38; // eax@44 int v39; // esi@45 int v40; // eax@45 void (__thiscall *v41)(_DWORD); // edx@45 int v42; // eax@45 void *v44; // [sp-1Ch] [bp-1D8h]@41 int v45; // [sp-18h] [bp-1D4h]@41 int v46; // [sp-14h] [bp-1D0h]@41 int v47; // [sp-10h] [bp-1CCh]@41 int v48; // [sp-Ch] [bp-1C8h]@41 signed int v49; // [sp-8h] [bp-1C4h]@4 unsigned int v50; // [sp-4h] [bp-1C0h]@1 int v51; // [sp+0h] [bp-1BCh]@45 char *v52; // [sp+4h] [bp-1B8h]@45 int *v53; // [sp+8h] [bp-1B4h]@45 int *v54; // [sp+Ch] [bp-1B0h]@1 char v55; // [sp+10h] [bp-1ACh]@33 char v56; // [sp+20h] [bp-19Ch]@33 int v57; // [sp+2Ch] [bp-190h]@1 int v58; // [sp+30h] [bp-18Ch]@13 unsigned int v59; // [sp+34h] [bp-188h]@7 int v60; // [sp+38h] [bp-184h]@7 char v61; // [sp+3Ch] [bp-180h]@40 char v62; // [sp+44h] [bp-178h]@40 __int16 v63; // [sp+A8h] [bp-114h]@42 char v64; // [sp+AAh] [bp-112h]@42 char v65[256]; // [sp+ACh] [bp-110h]@23 unsigned int v66; // [sp+1ACh] [bp-10h]@1 int v67; // [sp+1B8h] [bp-4h]@1 int v68; // [sp+1BCh] [bp+0h]@1 v66 = (unsigned int)&v68 ^ __security_cookie; v50 = (unsigned int)&v68 ^ __security_cookie; v4 = this; v57 = (int)this; v54 = (int *)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v67 = 0; if ( !(dword_AF097E8 & 1) ) { dword_AF097E8 |= 1u; word_AF097E4 = 6; atexit(nullsub_38); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AF097E4 ) { v8 = *(_DWORD *)(dword_1508BA44 + 40); v9 = 0; v59 = 0; v60 = 0; if ( v8 > 0 ) { do { if ( v5 < *(_DWORD *)(dword_1508BA44 + 40) ) v10 = sub_626BC0((int)&dword_1508BA10, v5); else v10 = (int)&dword_1508BA50; v9 += *(_DWORD *)(v10 + 36); ++v5; } while ( (signed int)v5 < v8 ); if ( v9 ) { v58 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v11 = 0; while ( 1 ) { v12 = v11 < *(_DWORD *)(dword_1508BA44 + 40) ? sub_626BC0((int)&dword_1508BA10, v11) : &dword_1508BA50; v13 = *(_DWORD *)(v12 + 36) + v60; v14 = 1000 * (*(_DWORD *)(v12 + 36) + v60) / v9; v60 = v13; if ( v58 <= v14 ) break; ++v11; if ( (signed int)v11 >= v8 ) goto LABEL_29; } if ( v11 < *(_DWORD *)(dword_1508BA44 + 40) ) v15 = sub_626BC0((int)&dword_1508BA10, v11); else v15 = (int)&dword_1508BA50; v16 = &v65[-v15]; do { v17 = *(_BYTE *)v15; v16[v15] = *(_BYTE *)v15; ++v15; } while ( v17 ); if ( v11 < *(_DWORD *)(dword_1508BA44 + 40) ) v18 = sub_626BC0((int)&dword_1508BA10, v11); else v18 = (int)&dword_1508BA50; v59 = *(_DWORD *)(v18 + 32); } } LABEL_29: v19 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v65); v20 = sub_418CB0((int)&dword_14D20890, v19); v21 = (unsigned __int16 **)v20; if ( !v20 || (v22 = *(_DWORD *)v20, !*v21) ) goto LABEL_47; if ( *(_DWORD *)(v22 + 106) < v59 ) { sub_6390B0( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ : Invalid item data (Item Index : )", v22 + 2); v59 = *(_DWORD *)(*v21 + 53); } v23 = v57; v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v57 + 1176))(v57); sub_43BB20((int)&v55, v57 + 36484, v24); v25 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v23 + 2004); LOBYTE(v67) = 1; v26 = v25(v23); sub_43BC00((int)&v56, 9, (int)&v55, v26); LOBYTE(v67) = 2; if ( sub_486D40(&v56) ) { v58 = sub_43BC20(&v56); if ( v58 ) { v31 = sub_63ACA0(dword_1508B168, **v21); (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD, unsigned int))(*(_DWORD *)v31 + 20))( v31, **v21, &v61, "-o", v50); v50 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v32 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v61, **v21, 11, *((_DWORD *)v32 + 4), v50); (*(void (__thiscall **)(void *, char *, unsigned int))(*(_DWORD *)v31 + 32))(v31, &v62, v59); LOWORD(v60) = v60 & 0x3FF | 0x2400; v33 = sub_43BC30(&v56); LOWORD(v60) = (v60 ^ v33) & 0x3FF ^ v60; if ( !(dword_AF097E8 & 2) ) { dword_AF097E8 |= 2u; v59 = (unsigned int)&v44; v49 = 15; v48 = 0; LOBYTE(v67) = 3; LOBYTE(v44) = 0; sub_4241C0((int)&v44, "FriendUsePoint", 0xEu); word_AF097E0 = sub_62BD30((int)&unk_1325CFB8, v44, v45, v46, v47, v48, v49, v50); LOBYTE(v67) = 2; } v34 = off_849C18; *(_WORD *)off_849C18 = 13503; *((_WORD *)v34 + 1) = *(_WORD *)(v23 + 4); *((_DWORD *)v34 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 836))(v23); v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 2004))(v23); *((_WORD *)v34 + 6) = sub_4802C0(v35); memcpy((char *)v34 + 14, &v61, 0x6Cu); v36 = word_AF097E0; *((_WORD *)v34 + 61) = v63; *((_BYTE *)v34 + 124) = v64; v37 = v60; *((_WORD *)v34 + 5) = v36; v50 = 125; *((_WORD *)v34 + 4) = v37; if ( sub_4C81E0(&off_849C18, v50) ) { v38 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v38); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ : Packet Too Long", 125); } v39 = v57; v40 = (*(int (__thiscall **)(int, int, char *, int *, int *))(*(_DWORD *)v57 + 2004))(v57, v51, v52, v53, v54); v41 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v40 + 64); v54 = &v60; v53 = &v60; v52 = &v61; v51 = v58; v50 = *((_WORD *)v34 + 6); v41(v40); v42 = (*(int (__thiscall **)(int))(*(_DWORD *)v39 + 2004))(v39); sub_43BBF0(v42); goto LABEL_46; } v29 = off_849C18; *(_WORD *)off_849C18 = 21538; v49 = 9; *(_DWORD *)((char *)v29 + 2) = 14020; if ( sub_4C81E0(&off_849C18, v49) ) { v30 = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 764))(v23); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v30 + 12))(v30, v23, &off_849C18); goto LABEL_46; } } else { v27 = off_849C18; *(_WORD *)off_849C18 = 21538; v49 = 9; *(_DWORD *)((char *)v27 + 2) = 14020; if ( sub_4C81E0(&off_849C18, v49) ) { v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 764))(v23); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v28 + 12))(v28, v23, &off_849C18); goto LABEL_46; } } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ : Packet Too Long", 9); LABEL_46: LOBYTE(v67) = 1; nullsub_2(&v56); LOBYTE(v67) = 0; sub_43BB10(&v55); LABEL_47: v49 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ"; goto LABEL_48; } v6 = off_849C18; *(_WORD *)off_849C18 = 21538; *((_DWORD *)v6 + 1) = 0; *((_BYTE *)v6 + 8) = 0; v49 = 9; *((_WORD *)v6 + 1) = 14017; if ( sub_4C81E0(&off_849C18, v49) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); v49 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ : Packet Too Long", 9); v49 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ"; } LABEL_48: --dword_750CB8; v67 = -1; return sub_467660((int)&unk_D020420, v49); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AF097E0: using guessed type __int16 word_AF097E0; // AF097E4: using guessed type __int16 word_AF097E4; // AF097E8: using guessed type int dword_AF097E8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 1508BA10: using guessed type int dword_1508BA10; // 1508BA44: using guessed type int dword_1508BA44; // 1508BA50: using guessed type int dword_1508BA50; // 459FA0: using guessed type char var_110[256]; //----- (0045A580) -------------------------------------------------------- int __thiscall sub_45A580(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 int v4; // edx@3 int v5; // eax@3 int v6; // ecx@3 int v7; // edx@3 int v8; // ebx@3 int v9; // edx@4 int v10; // eax@4 int v11; // eax@4 int v12; // edx@4 int v13; // edx@6 int v14; // ecx@6 int v15; // edi@6 int v16; // eax@6 int v17; // edx@6 void *v18; // edi@6 void *v19; // eax@6 int v20; // ecx@7 int v21; // eax@10 int v22; // ebx@10 int v23; // ebx@13 int v24; // ST10_4@13 int v25; // eax@13 int v26; // eax@13 int v27; // eax@16 int v28; // eax@16 char v30; // [sp+Ch] [bp-44h]@13 int v31; // [sp+18h] [bp-38h]@1 int v32; // [sp+1Ch] [bp-34h]@10 int v33; // [sp+20h] [bp-30h]@4 int v34; // [sp+24h] [bp-2Ch]@4 int v35; // [sp+28h] [bp-28h]@3 int v36; // [sp+2Ch] [bp-24h]@3 int v37; // [sp+30h] [bp-20h]@3 char v38; // [sp+34h] [bp-1Ch]@3 int v39; // [sp+35h] [bp-1Bh]@3 int v40; // [sp+39h] [bp-17h]@3 unsigned int v41; // [sp+40h] [bp-10h]@1 int v42; // [sp+4Ch] [bp-4h]@1 int v43; // [sp+50h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v2 = (int)this; v31 = (int)"ShineObjectClass::ShineMobileObject::smo_ShadowStep"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ShadowStep"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ShadowStep"; dword_750AB8[dword_750CB8++] = -1; v42 = 0; if ( !(dword_AF097FC & 1) ) { dword_AF097FC |= 1u; dword_AF097EC = 0; dword_AF097F0 = 0; dword_AF097F4 = 0; sub_492BD0((int)&dword_AF097EC, 0x20u); atexit(sub_698FD0); LOBYTE(v42) = 0; } v3 = *(_DWORD *)(v2 + 102); v4 = *(_DWORD *)v3; v5 = *(_DWORD *)(v3 + 4); v6 = *(_DWORD *)(a2 + 102); v36 = *(_DWORD *)v6; v37 = *(_DWORD *)(v6 + 4); LOBYTE(v6) = **(_BYTE **)(a2 + 106); v39 = v4; v7 = *(_DWORD *)(a2 + 122); v38 = v6; v40 = v5; v35 = v7; sub_45FD70(&v35, (int)&dword_AF097EC); v8 = (dword_AF097F0 - (signed int)dword_AF097EC) >> 3; if ( v8 > 0 ) { v9 = *((_DWORD *)dword_AF097EC + 2 * v8 - 1); v10 = *(_DWORD *)v2; v33 = *((_DWORD *)dword_AF097EC + 2 * v8 - 2); v34 = v9; (*(void (__thiscall **)(int))(v10 + 2632))(v2); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 828))(v2, 2, 0, 3); v11 = *(_DWORD *)(v2 + 102); v12 = v34; *(_DWORD *)v11 = v33; *(_DWORD *)(v11 + 4) = v12; if ( sub_452770(*(void **)(v2 + 122), v2, 0, 0, 1) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1669, 0, 0); } else { v13 = *(_DWORD *)(v2 + 102); v14 = *(_DWORD *)(v13 + 4); v15 = *(_DWORD *)(a2 + 102); v16 = *(_DWORD *)(v15 + 4); v17 = *(_DWORD *)v13; v34 = v14; **(_BYTE **)(v2 + 106) = sub_401220(&unk_AF09DA8, *(_DWORD *)v15 - v17, v16 - v14); v18 = off_849C18; *(_WORD *)off_849C18 = 8298; *((_WORD *)v18 + 1) = *(_WORD *)(v2 + 4); *((_WORD *)v18 + 2) = 500; *((_BYTE *)v18 + 6) = **(_BYTE **)(v2 + 106); *((_BYTE *)v18 + 7) = v8; v19 = dword_AF097EC; if ( dword_AF097EC != (void *)dword_AF097F0 ) { v20 = (int)((char *)v18 + 8); do { *(_DWORD *)v20 = *(_DWORD *)v19; *(_DWORD *)(v20 + 4) = *((_DWORD *)v19 + 1); v19 = (char *)v19 + 8; v20 += 8; } while ( v19 != (void *)dword_AF097F0 ); } v34 = 0; if ( v8 > 1 ) { v21 = (int)((char *)v18 + 12); v32 = (int)((char *)v18 + 12); v22 = v8 - 1; while ( 1 ) { v34 += sub_4011C0( &unk_AF09DA8, *(_DWORD *)(v21 - 4) - *(_DWORD *)(v21 + 4), *(_DWORD *)v21 - *(_DWORD *)(v21 + 8)); --v22; v32 += 8; if ( !v22 ) break; v21 = v32; } } v23 = 1000 * v34 / *((_WORD *)v18 + 2); sub_4287B0(&v30, &off_849C18, 8 * *((_BYTE *)v18 + 7) + 8); v24 = *(_DWORD *)(v2 + 102); LOBYTE(v42) = 3; v25 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v25, v24, 0, 0, (int)&v30, 1, 65535); v26 = sub_401310(&unk_877138, 350); if ( v26 ) { (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, signed int, int, signed int, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, 350, 1, v26, dword_14D129E8, 0, -1, v23, 9, 0); (*(void (__thiscall **)(int, signed int, int, signed int))(*(_DWORD *)v2 + 1008))(v2, 350, v23, 1); } if ( *(_DWORD *)(v2 + 368) != 3 ) { v27 = *(_DWORD *)(v2 + 372); *(_DWORD *)(v2 + 368) = 0; *(_DWORD *)(v2 + 396) = 0; *(_DWORD *)(v2 + 400) = 0; *(_DWORD *)(v2 + 404) = 0; *(_DWORD *)(v2 + 408) = 0; *(_DWORD *)(v2 + 412) = 0; *(_DWORD *)(v2 + 376) = 0; v28 = *(_DWORD *)(v27 + 102); *(_DWORD *)(v2 + 388) = *(_DWORD *)v28; *(_DWORD *)(v2 + 392) = *(_DWORD *)(v28 + 4); } LOBYTE(v42) = 0; sub_428A70(&v30); } } --dword_750CB8; v42 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ShadowStep"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AF097F0: using guessed type int dword_AF097F0; // AF097F4: using guessed type int dword_AF097F4; // AF097FC: using guessed type int dword_AF097FC; // 14D129E8: using guessed type int dword_14D129E8; //----- (0045A8D0) -------------------------------------------------------- int __thiscall sub_45A8D0(int this, int a2) { int v2; // edx@1 int result; // eax@1 v2 = (*(_DWORD *)(this + 32768) + 1) & *(_DWORD *)(this + 32772); *(_DWORD *)(this + 32768) = v2; result = this + (v2 << 8); *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a2 + 12); *(_BYTE *)(result + 16) = 0; return result; } //----- (0045A910) -------------------------------------------------------- void *__thiscall sub_45A910(void *this) { void *v1; // esi@1 v1 = this; sub_5A4590(this); *(_DWORD *)v1 = &off_6AEDEC; *((_DWORD *)v1 + 65) = -1; *((_DWORD *)v1 + 67) = 0; return v1; } // 6AEDEC: using guessed type int (__stdcall *off_6AEDEC)(int); //----- (0045A940) -------------------------------------------------------- void *__thiscall sub_45A940(void *this) { void *v1; // esi@1 v1 = this; sub_5A4590(this); *((_DWORD *)v1 + 65) = -1; *((_DWORD *)v1 + 67) = 0; *(_DWORD *)v1 = &off_6AEE00; return v1; } // 6AEE00: using guessed type int (__stdcall *off_6AEE00)(int); //----- (0045A980) -------------------------------------------------------- signed int __thiscall sub_45A980(int this, int a2) { return sub_5A4430(this, 300); } //----- (0045A990) -------------------------------------------------------- signed int __thiscall sub_45A990(int this, __int16 a2) { char v3; // [sp+0h] [bp-44h]@1 int v4; // [sp+1h] [bp-43h]@1 unsigned int v5; // [sp+40h] [bp-4h]@1 int v6; // [sp+44h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; LOWORD(v4) = v4 & 0x3FF | 0x800; LOWORD(v4) = v4 & 0xFC07 | 7; v3 = 4; HIWORD(v4) = a2; return sub_5A4320(this, (int)&v3, 5u); } // 86FEB8: using guessed type int __security_cookie; //----- (0045A9F0) -------------------------------------------------------- int __thiscall sub_45A9F0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 260) = a2; return result; } //----- (0045AA00) -------------------------------------------------------- int __thiscall sub_45AA00(int this) { return *(_DWORD *)(this + 260); } //----- (0045AA10) -------------------------------------------------------- int __thiscall sub_45AA10(int this) { int result; // eax@1 result = dword_14D129E8; *(_DWORD *)(this + 264) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0045AA20) -------------------------------------------------------- int __thiscall sub_45AA20(int this) { return *(_DWORD *)(this + 264); } //----- (0045AA30) -------------------------------------------------------- char *__thiscall sub_45AA30(void *this) { return (char *)this + 52; } //----- (0045AA40) -------------------------------------------------------- int __thiscall sub_45AA40(int this) { return *(_DWORD *)(this + 268); } //----- (0045AA50) -------------------------------------------------------- int __thiscall sub_45AA50(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 268) = a2; return result; } //----- (0045AA60) -------------------------------------------------------- bool __stdcall sub_45AA60(int a1) { return *(_BYTE *)a1 >= 0xAu || *(_BYTE *)a1 == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); } //----- (0045AA90) -------------------------------------------------------- int __stdcall sub_45AA90(int a1) { int v1; // eax@1 int v2; // esi@1 int result; // eax@3 v1 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 1)); v2 = v1; if ( v1 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1) == *(_DWORD *)(a1 + 3) ) result = v2; else result = 0; return result; } //----- (0045AAD0) -------------------------------------------------------- int __thiscall sub_45AAD0(int this, int a2, int a3) { int v3; // esi@1 v3 = this; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)(this + 224) + 44))(this + 224); *(_DWORD *)(v3 + 44) = a2; *(_DWORD *)(v3 + 48) = *(_DWORD *)a3; *(_DWORD *)(v3 + 52) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v3 + 56) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v3 + 60) = *(_DWORD *)(a3 + 12); *(_DWORD *)(v3 + 4) = 2; return v3; } //----- (0045AB20) -------------------------------------------------------- int __thiscall sub_45AB20(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); *(_DWORD *)(this + 43) = *(_DWORD *)(a2 + 43); return result; } //----- (0045AB80) -------------------------------------------------------- int __thiscall sub_45AB80(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); *(_DWORD *)(this + 43) = *(_DWORD *)(a2 + 43); *(_BYTE *)(this + 47) = *(_BYTE *)(a2 + 47); return result; } //----- (0045ABE0) -------------------------------------------------------- int __stdcall sub_45ABE0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_DummyFunction"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_DummyFunction"; dword_750AB8[dword_750CB8++] = -1; sub_639150( &unk_86DDD8, (int)"ZoneListenSession::zls_DummyFunction", (unsigned int)*(_WORD *)a1 >> 10, *(_WORD *)a1 & 0x3FF); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_DummyFunction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045ACA0) -------------------------------------------------------- int __thiscall sub_45ACA0(void *this, int a2) { int v2; // esi@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 2053; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v2); else sub_639100(&unk_86DDD8, (int)"ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045AD80) -------------------------------------------------------- int __stdcall sub_45AD80(int a1) { int v1; // ebx@1 int v2; // esi@1 char *v3; // eax@1 int v4; // ecx@1 int v5; // ebx@3 int v6; // edi@6 int v7; // eax@7 _BYTE *v8; // eax@7 void *v9; // eax@9 int v10; // edx@9 int v11; // ecx@10 int v12; // eax@10 signed int v14; // [sp+10h] [bp-54h]@5 signed int v15; // [sp+10h] [bp-54h]@9 char v16; // [sp+14h] [bp-50h]@5 unsigned int v17; // [sp+54h] [bp-10h]@1 int v18; // [sp+60h] [bp-4h]@1 int v19; // [sp+64h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = a1; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MISC_ZONERINGLINKTEST_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_MISC_ZONERINGLINKTEST_RNG"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v2 = a1 + 2; v3 = sub_5A72C0(&unk_13258988); v4 = v1 + 2 + 16 * *(_BYTE *)(v1 + 9) + 8; *(_DWORD *)v4 = *(_DWORD *)v3; *(_DWORD *)(v4 + 4) = *((_DWORD *)v3 + 1); *(_DWORD *)(v4 + 8) = *((_DWORD *)v3 + 2); *(_DWORD *)(v4 + 12) = *((_DWORD *)v3 + 3); ++*(_BYTE *)(v1 + 9); if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)v2 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v9 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; v10 = (int)((char *)v9 + 2); *(_DWORD *)((char *)v9 + 2) = *(_DWORD *)v2; *((_WORD *)v9 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v9 + 8) = *(_BYTE *)(a1 + 8); *((_BYTE *)v9 + 9) = *(_BYTE *)(a1 + 9); v15 = 0; if ( *(_BYTE *)(a1 + 9) ) { v11 = a1 + 22; v12 = (int)((char *)v9 + 14); do { ++v15; *(_DWORD *)(v12 - 4) = *(_DWORD *)(v11 - 12); *(_DWORD *)v12 = *(_DWORD *)(v2 - v10 + v12); *(_DWORD *)(v12 + 4) = *(_DWORD *)(v11 - 4); *(_DWORD *)(v12 + 8) = *(_DWORD *)v11; v11 += 16; v12 += 16; } while ( v15 < *(_BYTE *)(a1 + 9) ); } sub_5A4B40(&off_849C18, 16 * *(_BYTE *)(v10 + 7) + 10); } else { v5 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); if ( v5 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5) == *(_DWORD *)(a1 + 5) ) { sprintf(&v16, "%d mechines travel complete", *(_BYTE *)(a1 + 9)); (*(void (__thiscall **)(int, char *))(*(_DWORD *)v5 + 1924))(v5, &v16); v14 = 0; if ( *(_BYTE *)(a1 + 9) ) { v6 = a1 + 18; do { v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = *(_DWORD *)(v6 - 8); *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 - 4); *((_DWORD *)v8 + 2) = *(_DWORD *)v6; *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 4); v8[16] = 0; (*(void (__thiscall **)(int, _BYTE *))(*(_DWORD *)v5 + 1924))(v5, v8); v6 += 16; ++v14; } while ( v14 < *(_BYTE *)(a1 + 9) ); } } } } --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MISC_ZONERINGLINKTEST_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (0045AFC0) -------------------------------------------------------- int __stdcall sub_45AFC0(int a1) { int v1; // eax@1 int v2; // edi@1 _BYTE *v3; // eax@1 int v4; // esi@3 int v5; // eax@6 int v6; // ecx@9 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSUMMON_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSUMMON_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = dword_8622C4 & (dword_8622C0 + 1); v2 = a1 + 2; dword_8622C0 = v1; v3 = &byte_85A2C0[256 * v1]; *(_DWORD *)v3 = *(_DWORD *)(a1 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a1 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a1 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a1 + 21); *((_DWORD *)v3 + 4) = *(_DWORD *)(a1 + 25); v3[20] = 0; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)v2 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v5 = sub_54E5A0(&unk_13253630, a1 + 9); if ( v5 && *(_DWORD *)(v5 + 122) ) { sub_5A5710(0, a1); } else { v6 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = *(_WORD *)a1; sub_45AB20(v6, v2); sub_5A4B40(&off_849C18, 49); } } else { v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); if ( v4 && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(a1 + 5) ) sub_5A5B50(v4, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSUMMON_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0045B130) -------------------------------------------------------- int __stdcall sub_45B130(int a1) { int v1; // eax@1 int v2; // esi@1 _BYTE *v3; // eax@1 int v4; // esi@3 int v5; // eax@6 void *v6; // ecx@8 int v7; // edx@8 int v8; // eax@8 void *v9; // eax@9 int v11; // [sp-4h] [bp-20h]@8 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = dword_8622C4 & (dword_8622C0 + 1); v2 = a1 + 9; dword_8622C0 = v1; v3 = &byte_85A2C0[256 * v1]; *(_DWORD *)v3 = *(_DWORD *)(a1 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a1 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a1 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a1 + 21); *((_DWORD *)v3 + 4) = *(_DWORD *)(a1 + 25); v3[20] = 0; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v5 = sub_54E5A0(&unk_13253630, v2); if ( v5 && *(_DWORD *)(v5 + 122) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 4201; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v6 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v6 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v6 + 29) = *(_DWORD *)v2; *(_DWORD *)((char *)v6 + 33) = *(_DWORD *)(a1 + 13); *(_DWORD *)((char *)v6 + 37) = *(_DWORD *)(a1 + 17); *(_DWORD *)((char *)v6 + 41) = *(_DWORD *)(a1 + 21); *(_DWORD *)((char *)v6 + 45) = *(_DWORD *)(a1 + 25); v7 = *(_DWORD *)(v5 + 122); *(_DWORD *)((char *)v6 + 9) = *(_DWORD *)v7; *(_DWORD *)((char *)v6 + 13) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v6 + 17) = *(_DWORD *)(v7 + 8); v8 = *(_DWORD *)(v5 + 102); *(_DWORD *)((char *)v6 + 21) = *(_DWORD *)v8; *(_DWORD *)((char *)v6 + 25) = *(_DWORD *)(v8 + 4); v11 = 49; } else { v9 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v9 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v9 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v9 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v9 + 9) = *(_DWORD *)v2; *(_DWORD *)((char *)v9 + 13) = *(_DWORD *)(a1 + 13); *(_DWORD *)((char *)v9 + 17) = *(_DWORD *)(a1 + 17); *(_DWORD *)((char *)v9 + 21) = *(_DWORD *)(a1 + 21); *(_DWORD *)((char *)v9 + 25) = *(_DWORD *)(a1 + 25); v11 = 29; } sub_5A4B40(&off_849C18, v11); } else { v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); if ( v4 && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(a1 + 5) ) sub_5A5C70(v4, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0045B320) -------------------------------------------------------- int __stdcall sub_45B320(int a1) { int v1; // eax@3 _BYTE *v2; // eax@3 int v3; // edi@3 int v4; // eax@6 _BYTE *v5; // eax@6 void *v6; // eax@6 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)(a1 + 29); *((_DWORD *)v5 + 1) = *(_DWORD *)(a1 + 33); *((_DWORD *)v5 + 2) = *(_DWORD *)(a1 + 37); *((_DWORD *)v5 + 3) = *(_DWORD *)(a1 + 41); *((_DWORD *)v5 + 4) = *(_DWORD *)(a1 + 45); v5[20] = 0; v6 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v6 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v6 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v6 + 9) = *(_DWORD *)(a1 + 9); *(_DWORD *)((char *)v6 + 13) = *(_DWORD *)(a1 + 13); *(_DWORD *)((char *)v6 + 17) = *(_DWORD *)(a1 + 17); *(_DWORD *)((char *)v6 + 21) = *(_DWORD *)(a1 + 21); *(_DWORD *)((char *)v6 + 25) = *(_DWORD *)(a1 + 25); *(_DWORD *)((char *)v6 + 29) = *(_DWORD *)(a1 + 29); *(_DWORD *)((char *)v6 + 33) = *(_DWORD *)(a1 + 33); *(_DWORD *)((char *)v6 + 37) = *(_DWORD *)(a1 + 37); *(_DWORD *)((char *)v6 + 41) = *(_DWORD *)(a1 + 41); *(_DWORD *)((char *)v6 + 45) = *(_DWORD *)(a1 + 45); sub_5A4B40(&off_849C18, 49); } else { v1 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v1; v2 = &byte_85A2C0[256 * v1]; *(_DWORD *)v2 = *(_DWORD *)(a1 + 29); *((_DWORD *)v2 + 1) = *(_DWORD *)(a1 + 33); *((_DWORD *)v2 + 2) = *(_DWORD *)(a1 + 37); *((_DWORD *)v2 + 3) = *(_DWORD *)(a1 + 41); *((_DWORD *)v2 + 4) = *(_DWORD *)(a1 + 45); v2[20] = 0; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 5) ) sub_5A57D0(v3, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0045B4F0) -------------------------------------------------------- int __stdcall sub_45B4F0(int a1) { int v1; // eax@3 int v2; // edi@3 int v3; // edi@6 int v4; // eax@6 void *v5; // eax@8 void *v6; // eax@9 int v8; // [sp-4h] [bp-20h]@8 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_KICKPLAYEROUT_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_KICKPLAYEROUT_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v3 = a1 + 10; v4 = sub_54E5A0(&unk_13253630, a1 + 10); if ( v4 && *(_DWORD *)(v4 + 122) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1528))(v4, 1675, 0, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 4204; *(_DWORD *)((char *)v5 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v5 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v5 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v5 + 9) = *(_DWORD *)v3; *(_DWORD *)((char *)v5 + 13) = *(_DWORD *)(a1 + 14); *(_DWORD *)((char *)v5 + 17) = *(_DWORD *)(a1 + 18); *(_DWORD *)((char *)v5 + 21) = *(_DWORD *)(a1 + 22); *(_DWORD *)((char *)v5 + 25) = *(_DWORD *)(a1 + 26); v8 = 29; } else { v6 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v6 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v6 + 8) = *(_BYTE *)(a1 + 8); *((_BYTE *)v6 + 9) = *(_BYTE *)(a1 + 9); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)v3; *(_DWORD *)((char *)v6 + 14) = *(_DWORD *)(a1 + 14); *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)(a1 + 18); *(_DWORD *)((char *)v6 + 22) = *(_DWORD *)(a1 + 22); *(_DWORD *)((char *)v6 + 26) = *(_DWORD *)(a1 + 26); v8 = 30; } sub_5A4B40(&off_849C18, v8); } else { v1 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); v2 = v1; if ( v1 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1) == *(_DWORD *)(a1 + 5) ) sub_5A5EB0(v2, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_KICKPLAYEROUT_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045B6B0) -------------------------------------------------------- int __stdcall sub_45B6B0(int a1) { int v1; // eax@3 int v2; // edi@3 void *v3; // eax@6 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERBANNED_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_PLAYERBANNED_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v3 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v3 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v3 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v3 + 9) = *(_DWORD *)(a1 + 9); *(_DWORD *)((char *)v3 + 13) = *(_DWORD *)(a1 + 13); *(_DWORD *)((char *)v3 + 17) = *(_DWORD *)(a1 + 17); *(_DWORD *)((char *)v3 + 21) = *(_DWORD *)(a1 + 21); *(_DWORD *)((char *)v3 + 25) = *(_DWORD *)(a1 + 25); sub_5A4B40(&off_849C18, 29); } else { v1 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); v2 = v1; if ( v1 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1) == *(_DWORD *)(a1 + 5) ) sub_5A5EB0(v2, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERBANNED_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045B7F0) -------------------------------------------------------- int __stdcall sub_45B7F0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) sub_5A5600(off_86B044, 0, a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B044: using guessed type int (__stdcall *(*off_86B044[8])[3])(int, int); //----- (0045B8B0) -------------------------------------------------------- int __stdcall sub_45B8B0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) sub_5A54F0(off_86B048, 0, a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B048: using guessed type int (__stdcall *(*off_86B048[7])[3])(int, int); //----- (0045B970) -------------------------------------------------------- int __stdcall sub_45B970(int a1) { int v1; // eax@1 int v2; // esi@1 _BYTE *v3; // eax@1 int v4; // esi@3 int v5; // eax@6 void *v6; // edi@8 int v7; // ecx@8 int v8; // ecx@8 void *v9; // eax@9 int v11; // [sp-4h] [bp-24h]@8 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_BY_NORMAL_USER_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_BY_NORMAL_USER_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = dword_8622C4 & (dword_8622C0 + 1); v2 = a1 + 9; dword_8622C0 = v1; v3 = &byte_85A2C0[256 * v1]; *(_DWORD *)v3 = *(_DWORD *)(a1 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a1 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a1 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a1 + 21); *((_DWORD *)v3 + 4) = *(_DWORD *)(a1 + 25); v3[20] = 0; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v5 = sub_54E5A0(&unk_13253630, v2); if ( v5 && *(_DWORD *)(v5 + 122) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 4270; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v6 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v6 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v6 + 29) = *(_DWORD *)v2; *(_DWORD *)((char *)v6 + 33) = *(_DWORD *)(a1 + 13); *(_DWORD *)((char *)v6 + 37) = *(_DWORD *)(a1 + 17); *(_DWORD *)((char *)v6 + 41) = *(_DWORD *)(a1 + 21); *(_DWORD *)((char *)v6 + 45) = *(_DWORD *)(a1 + 25); v7 = *(_DWORD *)(v5 + 122); *(_DWORD *)((char *)v6 + 9) = *(_DWORD *)v7; *(_DWORD *)((char *)v6 + 13) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v6 + 17) = *(_DWORD *)(v7 + 8); v8 = *(_DWORD *)(v5 + 102); *(_DWORD *)((char *)v6 + 21) = *(_DWORD *)v8; *(_DWORD *)((char *)v6 + 25) = *(_DWORD *)(v8 + 4); *((_BYTE *)v6 + 49) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2680))(v5) == 1; v11 = 50; } else { v9 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v9 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v9 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v9 + 8) = *(_BYTE *)(a1 + 8); *(_DWORD *)((char *)v9 + 9) = *(_DWORD *)v2; *(_DWORD *)((char *)v9 + 13) = *(_DWORD *)(a1 + 13); *(_DWORD *)((char *)v9 + 17) = *(_DWORD *)(a1 + 17); *(_DWORD *)((char *)v9 + 21) = *(_DWORD *)(a1 + 21); *(_DWORD *)((char *)v9 + 25) = *(_DWORD *)(a1 + 25); v11 = 29; } sub_5A4B40(&off_849C18, v11); } else { v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); if ( v4 && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(a1 + 5) ) sub_5A5D90(v4, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_BY_NORMAL_USER_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0045BB80) -------------------------------------------------------- int __stdcall sub_45BB80(int a1) { int v1; // esi@1 int v2; // eax@3 _BYTE *v3; // eax@3 int v4; // edi@3 int v5; // eax@6 _BYTE *v6; // eax@6 int v7; // ecx@6 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = a1 + 2; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)v1 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)(a1 + 29); *((_DWORD *)v6 + 1) = *(_DWORD *)(a1 + 33); *((_DWORD *)v6 + 2) = *(_DWORD *)(a1 + 37); *((_DWORD *)v6 + 3) = *(_DWORD *)(a1 + 41); *((_DWORD *)v6 + 4) = *(_DWORD *)(a1 + 45); v6[20] = 0; v7 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = *(_WORD *)a1; sub_45AB80(v7, v1); sub_5A4B40(&off_849C18, 50); } else { v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *(_DWORD *)(a1 + 29); *((_DWORD *)v3 + 1) = *(_DWORD *)(a1 + 33); *((_DWORD *)v3 + 2) = *(_DWORD *)(a1 + 37); *((_DWORD *)v3 + 3) = *(_DWORD *)(a1 + 41); *((_DWORD *)v3 + 4) = *(_DWORD *)(a1 + 45); v3[20] = 0; v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); if ( v4 && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(a1 + 5) ) sub_5A5950(v4, a1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0045BD00) -------------------------------------------------------- signed int __thiscall sub_45BD00(int this, signed int a2) { int v2; // esi@1 void *v3; // edi@1 int v4; // ebx@1 int v5; // ecx@2 int v6; // ecx@4 int v7; // eax@4 signed int v8; // eax@6 int v9; // ecx@7 int v10; // edx@7 v2 = this; sub_5A4680(this); v3 = *(void **)(v2 + 24); v4 = 0; if ( v3 ) { v5 = *(_DWORD *)(v2 + 24); *(_DWORD *)v3 = &off_6AEDEC; sub_5A4290(v5); operator delete(v3); *(_DWORD *)(v2 + 24) = 0; } if ( a2 >= 1 ) { sub_5A4720(v2, a2); v6 = 272 * a2 | -((unsigned __int8)(272 * (unsigned __int64)(unsigned int)a2 >> 32) != 0); v7 = unknown_libname_130((v6 + 4) | -__CFADD__(v6, 4)); if ( v7 ) { v4 = v7 + 4; *(_DWORD *)v7 = a2; _eh_vector_constructor_iterator_((void *)(v7 + 4), 0x110u, a2, (int)sub_45A910, loc_45A970); } v8 = 0; *(_DWORD *)(v2 + 24) = v4; if ( a2 > 0 ) { v9 = 0; v10 = 0; do { *(_DWORD *)(*(_DWORD *)(v2 + 4) + v10 + 8) = v9 + *(_DWORD *)(v2 + 24); *(_WORD *)(v9 + *(_DWORD *)(v2 + 24) + 256) = v8++; v10 += 12; v9 += 272; } while ( v8 < a2 ); } } return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6AEDEC: using guessed type int (__stdcall *off_6AEDEC)(int); //----- (0045BE00) -------------------------------------------------------- int __thiscall sub_45BE00(int this) { int v1; // esi@1 v1 = this; sub_5A4660(this); *(_DWORD *)v1 = &off_6AF0D8; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 36) = 0; return v1; } // 6AF0D8: using guessed type int (__stdcall *off_6AF0D8)(int, int); //----- (0045BE20) -------------------------------------------------------- void __thiscall sub_45BE20(int this) { int v1; // esi@1 void *v2; // eax@3 v1 = this; *(_DWORD *)this = &off_6AF0D8; if ( *(_DWORD *)(this + 28) ) operator delete(*(void **)(this + 28)); *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 36) = 0; v2 = *(void **)(v1 + 4); *(_DWORD *)v1 = &off_6F4610; if ( v2 ) { operator delete(v2); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; } } // 6AF0D8: using guessed type int (__stdcall *off_6AF0D8)(int, int); // 6F4610: using guessed type int (__stdcall *off_6F4610)(int, int); //----- (0045BE60) -------------------------------------------------------- signed int __thiscall sub_45BE60(int this, int a2) { int v2; // eax@1 int v3; // edi@1 int v4; // ecx@2 signed int result; // eax@4 signed int v6; // eax@5 int v7; // edx@10 int v8; // eax@11 signed int v9; // eax@13 int v10; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)(this + 32); v3 = *(_DWORD *)(this + 28); v10 = this; if ( v3 == v2 ) goto LABEL_4; while ( 1 ) { v4 = *(_DWORD *)v3; if ( *(_DWORD *)(**(_DWORD **)v3 + 52) == *(_DWORD *)(a2 + 52) ) break; v3 += 4; if ( v3 == v2 ) goto LABEL_4; } v6 = 0; while ( *(_DWORD *)(v4 + 4 * v6) != a2 ) { ++v6; if ( v6 >= 10 ) return 0; } if ( v6 >= 10 ) { LABEL_4: result = 0; } else { v7 = v6 + 1; if ( v6 + 1 < 10 ) { v8 = v4 + 4 * v6; do { *(_DWORD *)v8 = *(_DWORD *)(v8 + 4); ++v7; v8 += 4; } while ( v7 < 10 ); } v9 = 0; *(_DWORD *)(v4 + 36) = 0; if ( *(_DWORD *)v4 ) v9 = 1; if ( *(_DWORD *)(v4 + 4) ) ++v9; if ( *(_DWORD *)(v4 + 8) ) ++v9; if ( *(_DWORD *)(v4 + 12) ) ++v9; if ( *(_DWORD *)(v4 + 16) ) ++v9; if ( *(_DWORD *)(v4 + 20) ) ++v9; if ( *(_DWORD *)(v4 + 24) ) ++v9; if ( *(_DWORD *)(v4 + 28) ) ++v9; if ( *(_DWORD *)(v4 + 32) ) ++v9; if ( *(_DWORD *)(v4 + 36) ) ++v9; if ( !v9 ) { sub_6530A4((void *)v4); memmove_0((void *)v3, (const void *)(v3 + 4), 4 * ((*(_DWORD *)(v10 + 32) - (v3 + 4)) >> 2)); *(_DWORD *)(v10 + 32) -= 4; } result = 1; } return result; } //----- (0045BF60) -------------------------------------------------------- signed int __thiscall sub_45BF60(int this, int a2) { void *v2; // edx@1 int v3; // ebx@1 void *v4; // ecx@1 int v5; // esi@1 int v6; // eax@2 int v7; // esi@5 signed int result; // eax@6 signed int v9; // edx@7 signed int v10; // ecx@7 signed int v11; // esi@7 int v12; // ecx@15 int v13; // ecx@17 int v14; // ecx@19 int v15; // ecx@21 int v16; // ecx@23 int v17; // ecx@25 int v18; // ecx@27 int v19; // ecx@29 int v20; // ecx@31 unsigned int v21; // eax@35 int v22; // edx@36 int v23; // ecx@37 signed int v24; // esi@37 int v25; // eax@38 int v26; // eax@40 int v27; // ecx@40 unsigned int v28; // ecx@42 int v29; // eax@47 int v30; // ecx@49 int v31; // eax@50 int v32; // eax@52 int v33; // ecx@52 unsigned int v34; // ecx@54 int v35; // eax@59 void *v36; // [sp+10h] [bp-4h]@1 v2 = *(void **)(this + 32); v3 = this + 28; v4 = *(void **)(this + 28); v5 = *(_DWORD *)(a2 + 52); v36 = v4; if ( v4 == v2 ) { LABEL_5: v7 = unknown_libname_130(40); v36 = (void *)v7; if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"Cannot memory allocation for array of session which is not certified yet.", 0); return 0; } *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)(v7 + 12) = 0; *(_DWORD *)(v7 + 16) = 0; *(_DWORD *)(v7 + 20) = 0; *(_DWORD *)(v7 + 24) = 0; *(_DWORD *)(v7 + 28) = 0; *(_DWORD *)(v7 + 32) = 0; *(_DWORD *)(v7 + 36) = 0; *(_DWORD *)v7 = a2; v21 = *(_DWORD *)(v3 + 4); if ( (unsigned int)&v36 >= v21 || (v22 = *(_DWORD *)v3, *(_DWORD *)v3 > (unsigned int)&v36) ) { v30 = *(_DWORD *)(v3 + 8); if ( v21 == v30 ) { v31 = (signed int)(v21 - *(_DWORD *)v3) >> 2; if ( (unsigned int)v31 > 0x3FFFFFFE ) sub_65178B((int)"vector too long"); v32 = v31 + 1; v33 = (v30 - *(_DWORD *)v3) >> 2; if ( v32 > (unsigned int)v33 ) { if ( 1073741823 - ((unsigned int)v33 >> 1) >= v33 ) v34 = ((unsigned int)v33 >> 1) + v33; else v34 = 0; if ( v34 < v32 ) v34 = v32; sub_5839E0(v3, v34); } } v35 = *(_DWORD *)(v3 + 4); if ( v35 ) *(_DWORD *)v35 = v7; } else { v23 = *(_DWORD *)(v3 + 8); v24 = (signed int)((char *)&v36 - v22) >> 2; if ( v21 == v23 ) { v25 = (signed int)(v21 - v22) >> 2; if ( (unsigned int)v25 > 0x3FFFFFFE ) sub_65178B((int)"vector too long"); v26 = v25 + 1; v27 = (v23 - v22) >> 2; if ( v26 > (unsigned int)v27 ) { if ( 1073741823 - ((unsigned int)v27 >> 1) >= v27 ) v28 = ((unsigned int)v27 >> 1) + v27; else v28 = 0; if ( v28 < v26 ) v28 = v26; sub_5839E0(v3, v28); } } v29 = *(_DWORD *)(v3 + 4); if ( v29 ) { *(_DWORD *)v29 = *(_DWORD *)(*(_DWORD *)v3 + 4 * v24); *(_DWORD *)(v3 + 4) += 4; return 1; } } *(_DWORD *)(v3 + 4) += 4; result = 1; } else { while ( 1 ) { v6 = *(_DWORD *)v4; if ( *(_DWORD *)(**(_DWORD **)v4 + 52) == v5 ) break; v4 = (char *)v4 + 4; if ( v4 == v2 ) { v36 = v4; goto LABEL_5; } } v36 = v4; v9 = 0; v10 = 0; v11 = 1; while ( *(_DWORD *)(v6 + 4 * v10) ) { ++v10; ++v9; if ( v10 >= 10 ) goto LABEL_12; } *(_DWORD *)(v6 + 4 * v10) = a2; v11 = 1; ++v9; LABEL_12: if ( v9 >= 10 ) { if ( *(_DWORD *)v6 ) { *(_DWORD *)(*(_DWORD *)v6 + 268) = v11; *(_DWORD *)v6 = 0; } v12 = *(_DWORD *)(v6 + 4); if ( v12 ) { *(_DWORD *)(v12 + 268) = v11; *(_DWORD *)(v6 + 4) = 0; } v13 = *(_DWORD *)(v6 + 8); if ( v13 ) { *(_DWORD *)(v13 + 268) = v11; *(_DWORD *)(v6 + 8) = 0; } v14 = *(_DWORD *)(v6 + 12); if ( v14 ) { *(_DWORD *)(v14 + 268) = v11; *(_DWORD *)(v6 + 12) = 0; } v15 = *(_DWORD *)(v6 + 16); if ( v15 ) { *(_DWORD *)(v15 + 268) = v11; *(_DWORD *)(v6 + 16) = 0; } v16 = *(_DWORD *)(v6 + 20); if ( v16 ) { *(_DWORD *)(v16 + 268) = v11; *(_DWORD *)(v6 + 20) = 0; } v17 = *(_DWORD *)(v6 + 24); if ( v17 ) { *(_DWORD *)(v17 + 268) = v11; *(_DWORD *)(v6 + 24) = 0; } v18 = *(_DWORD *)(v6 + 28); if ( v18 ) { *(_DWORD *)(v18 + 268) = v11; *(_DWORD *)(v6 + 28) = 0; } v19 = *(_DWORD *)(v6 + 32); if ( v19 ) { *(_DWORD *)(v19 + 268) = v11; *(_DWORD *)(v6 + 32) = 0; } v20 = *(_DWORD *)(v6 + 36); if ( v20 ) { *(_DWORD *)(v20 + 268) = v11; *(_DWORD *)(v6 + 36) = 0; } memmove_0(v36, (char *)v36 + 4, 4 * ((*(_DWORD *)(v3 + 4) - (signed int)((char *)v36 + 4)) >> 2)); *(_DWORD *)(v3 + 4) -= 4; } result = v11; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0045C1E0) -------------------------------------------------------- signed __int16 __thiscall sub_45C1E0(void *this, int a2) { int v2; // edi@1 signed __int16 result; // ax@8 v2 = a2; if ( a2 < 0 ) v2 = -a2; if ( v2 > 90 ) v2 += -180 - 180 * (v2 - 91) / 0xB4u; if ( (v2 >= 0 || (v2 = -v2, v2 >= 0)) && v2 <= 90 ) { result = *((_WORD *)this + v2); } else { sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::operator [] : Invalid delta", v2); result = 1000; } return result; } //----- (0045C250) -------------------------------------------------------- void __thiscall sub_45C250(int this, int a2, char *a3) { int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 int v6; // edi@1 char v7; // bl@2 int v8; // eax@2 int v9; // ebx@4 int v10; // esi@5 unsigned __int16 v11; // ax@8 int v12; // edi@8 int v13; // edi@10 int v14; // ebx@13 int v15; // edi@16 int i; // esi@20 int v17; // [sp-28h] [bp-10938h]@5 int v18; // [sp-24h] [bp-10934h]@5 int v19; // [sp-20h] [bp-10930h]@5 int v20; // [sp-1Ch] [bp-1092Ch]@5 int v21; // [sp-18h] [bp-10928h]@5 int v22; // [sp-14h] [bp-10924h]@5 unsigned int v23; // [sp-10h] [bp-10920h]@1 char *v24; // [sp+0h] [bp-10910h]@1 int *v25; // [sp+4h] [bp-1090Ch]@5 int v26; // [sp+8h] [bp-10908h]@1 char v27; // [sp+Ch] [bp-10904h]@1 char v28; // [sp+10860h] [bp-B0h]@1 int v29; // [sp+108E0h] [bp-30h]@1 int v30; // [sp+108E4h] [bp-2Ch]@1 int v31; // [sp+108E8h] [bp-28h]@1 int v32; // [sp+108ECh] [bp-24h]@1 char v33; // [sp+108F0h] [bp-20h]@1 unsigned int v34; // [sp+10900h] [bp-10h]@1 int v35; // [sp+1090Ch] [bp-4h]@1 int v36; // [sp+10910h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v23 = (unsigned int)&v36 ^ __security_cookie; v24 = a3; v26 = this; memset((void *)this, 0, 0xB4u); *(_WORD *)(this + 180) = 0; sub_6432E0((int)&v27); v3 = *(_DWORD *)(a2 + 4); v29 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 8); v30 = v3; v5 = *(_DWORD *)(a2 + 12); v31 = v4; v6 = 0; v35 = 0; v32 = v5; v33 = 0; sprintf(&v28, "../9Data/Shine/World/%s/DamageByAngle.txt", &v29); if ( !sub_6434A0(&v27, &v28) ) { sprintf(&v28, "../9Data/Shine/World/DamageByAngle.txt"); v7 = sub_6434A0(&v27, &v28); v8 = sub_642790(&v27); if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : Error in DamageByAngle.txt", v8); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } } v9 = 0; while ( 1 ) { v22 = v9; v25 = &v17; v21 = v6; v20 = v6; v19 = v6; v18 = v6; v17 = v6; strncpy((char *)&v17, v24, 0x14u); v10 = sub_6442C0(&v27, v17, v18, v19, v20, v21, v22); if ( v10 == v6 ) break; if ( (*(_WORD *)v10 == *(_WORD *)(v10 + 4)) == v6 ) { sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : CheckSum Error", v9); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } v22 = *(_WORD *)v10; v11 = sub_576EB0(v22); v12 = v11; if ( v11 > 0x5Au ) { v22 = *(_WORD *)v10; sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : angle must be in 0~180", v22); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } v13 = v26 + 2 * v12; if ( *(_WORD *)v13 ) { v22 = *(_WORD *)v10; sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : Duplicate angle", v22); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } *(_WORD *)v13 = *(_WORD *)(v10 + 2); ++v9; v6 = 0; } v14 = v26; if ( *(_WORD *)v26 <= (unsigned __int16)v6 || *(_WORD *)(v26 + 180) <= (unsigned __int16)v6 ) { sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : there must be 0 and 180", v6); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } v15 = 1; do { if ( !*(_WORD *)(v14 + 2) ) { if ( *(_WORD *)v14 <= 0u ) { sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : Upper Bound not found", v15); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } for ( i = v15 + 1; i <= 90; ++i ) { if ( *(_WORD *)(v26 + 2 * i) ) break; } if ( i > 90 ) { sub_639100(&unk_86DDD8, (int)"DamageByAngle::DamageTable::dt_Load : Lower Bound not found", v15); loc_6391B0("DamageByAngle::DamageTable::dt_Load"); } *(_WORD *)(v14 + 2) = *(_WORD *)v14 + (*(_WORD *)(v26 + 2 * i) - *(_WORD *)v14) / (i - v15 + 1); } ++v15; v14 += 2; } while ( v15 < 90 ); v35 = -1; sub_643080(&v27); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0045C570) -------------------------------------------------------- int __stdcall sub_45C570(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_FFFFFFF || (result = operator new(16 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0045C5D0) -------------------------------------------------------- int __cdecl sub_45C5D0(int a1, int a2, int a3) { int result; // eax@1 for ( result = a1; result != a2; result += 16 ) { *(_DWORD *)result = *(_DWORD *)a3; *(_DWORD *)(result + 4) = *(_DWORD *)(a3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a3 + 12); } return result; } //----- (0045C610) -------------------------------------------------------- int __cdecl sub_45C610(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 int v5; // esi@2 v3 = a2; for ( result = a3; v3 != a1; *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12) ) { v5 = *(_DWORD *)(v3 - 16); v3 -= 16; result -= 16; *(_DWORD *)result = v5; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); } return result; } //----- (0045C650) -------------------------------------------------------- void __cdecl sub_45C650(int a1, int a2, int a3) { int v3; // ecx@1 int v4; // eax@2 v3 = a2; if ( a2 ) { v4 = a1; do { if ( v4 ) { *(_DWORD *)v4 = *(_DWORD *)a3; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(a3 + 12); } v4 += 16; --v3; } while ( v3 ); } } //----- (0045C690) -------------------------------------------------------- int __thiscall sub_45C690(int this, int a2, unsigned int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // ebx@2 int v8; // ecx@2 int v9; // eax@2 unsigned int v10; // edx@4 int v11; // eax@4 unsigned int v12; // eax@6 int v13; // eax@10 int v14; // ebx@10 int v15; // ecx@10 int v16; // ecx@10 void *v17; // ebx@10 int v18; // edi@10 int v19; // eax@14 int v20; // ST04_4@14 int v21; // ST00_4@14 int v22; // edx@15 int v23; // ecx@15 int v24; // edx@15 int v25; // [sp+0h] [bp-34h]@1 int v26; // [sp+10h] [bp-24h]@14 int v27; // [sp+14h] [bp-20h]@14 int v28; // [sp+18h] [bp-1Ch]@14 int v29; // [sp+1Ch] [bp-18h]@14 void *v30; // [sp+20h] [bp-14h]@10 int *v31; // [sp+24h] [bp-10h]@1 int v32; // [sp+28h] [bp-Ch]@1 int v33; // [sp+30h] [bp-4h]@10 unsigned int v34; // [sp+40h] [bp+Ch]@6 result = (int)&v32; v31 = &v25; v5 = this; v6 = a3; if ( a3 ) { v7 = *(_DWORD *)(this + 4); v8 = *(_DWORD *)this; v9 = (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 4; if ( (unsigned int)((char *)&unk_FFFFFFF - v9) < a3 ) sub_65178B((int)"vector too long"); v10 = v9 + a3; v11 = (*(_DWORD *)(v5 + 8) - v8) >> 4; if ( v11 >= v10 ) { if ( (v7 - a2) >> 4 >= a3 ) { v22 = *(_DWORD *)(a4 + 4); v26 = *(_DWORD *)a4; v23 = *(_DWORD *)(a4 + 8); v27 = v22; v24 = *(_DWORD *)(a4 + 12); v28 = v23; v29 = v24; *(_DWORD *)(v5 + 4) = sub_481610(v7 - 16 * a3, v7, v7); sub_45C610(a2, v7 - 16 * a3, v7); result = sub_45C5D0(a2, a2 + 16 * a3, (int)&v26); } else { v26 = *(_DWORD *)a4; v27 = *(_DWORD *)(a4 + 4); v19 = *(_DWORD *)(a4 + 12); v28 = *(_DWORD *)(a4 + 8); v29 = v19; sub_481610(a2, v7, a2 + 16 * a3); v20 = a3 - ((*(_DWORD *)(v5 + 4) - a2) >> 4); v21 = *(_DWORD *)(v5 + 4); v33 = 2; sub_45C650(v21, v20, (int)&v26); *(_DWORD *)(v5 + 4) += 16 * a3; result = sub_45C5D0(a2, *(_DWORD *)(v5 + 4) - 16 * a3, (int)&v26); } } else { if ( (unsigned int)((char *)&unk_FFFFFFF - ((unsigned int)v11 >> 1)) >= v11 ) { v12 = ((unsigned int)v11 >> 1) + v11; v34 = v12; } else { v34 = 0; v12 = 0; } if ( v12 < v10 ) { v34 = v10; v12 = v10; } v13 = sub_45C570(v12); v14 = (a2 - *(_DWORD *)v5) >> 4; v15 = v13 + 16 * ((a2 - *(_DWORD *)v5) >> 4); v30 = (void *)v13; v33 = 0; sub_45C650(v15, v6, a4); sub_481610(*(_DWORD *)v5, a2, (int)v30); v16 = v14 + v6; v17 = v30; sub_481610(a2, *(_DWORD *)(v5 + 4), (int)((char *)v30 + 16 * v16)); v18 = ((*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 4) + v6; if ( *(_DWORD *)v5 ) operator delete(*(void **)v5); result = (int)((char *)v17 + 16 * v34); *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(v5 + 4) = (char *)v17 + 16 * v18; *(_DWORD *)v5 = v17; } } return result; } //----- (0045C910) -------------------------------------------------------- void __thiscall sub_45C910(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@3 int i; // edi@4 int v9; // eax@5 int v10; // eax@6 int v11; // edi@9 int v12; // ecx@9 int v13; // edx@9 int v14; // eax@9 int v15; // ecx@9 int v16; // eax@12 int v17; // ecx@13 int v20; // eax@17 int v21; // ecx@18 int v22; // edx@18 __int16 v23; // ax@18 int v24; // [sp-28h] [bp-10924h]@5 int v25; // [sp-24h] [bp-10920h]@5 int v26; // [sp-20h] [bp-1091Ch]@5 char *v27; // [sp-1Ch] [bp-10918h]@1 int v28; // [sp-18h] [bp-10914h]@1 int v29; // [sp-14h] [bp-10910h]@1 unsigned int v30; // [sp-10h] [bp-1090Ch]@1 int v31; // [sp+0h] [bp-108FCh]@9 int v32; // [sp+4h] [bp-108F8h]@9 int v33; // [sp+8h] [bp-108F4h]@9 int v34; // [sp+Ch] [bp-108F0h]@9 int *v35; // [sp+10h] [bp-108ECh]@5 int v36; // [sp+14h] [bp-108E8h]@4 char v37; // [sp+18h] [bp-108E4h]@1 char v38; // [sp+1086Ch] [bp-90h]@1 unsigned int v39; // [sp+108ECh] [bp-10h]@1 int v40; // [sp+108F8h] [bp-4h]@1 int v41; // [sp+108FCh] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v30 = (unsigned int)&v41 ^ __security_cookie; v2 = (int)this; sub_6432E0((int)&v37); v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = (int)&byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)a2; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); v5 = *(_DWORD *)(a2 + 8); v29 = v4; *(_DWORD *)(v4 + 8) = v5; v6 = *(_DWORD *)(a2 + 12); v28 = (int)"../9Data/Shine/World/%s/DamageBySoul.txt"; v27 = &v38; v40 = 0; *(_DWORD *)(v4 + 12) = v6; *(_BYTE *)(v4 + 16) = 0; sprintf(v27, (const char *)v28, v29); if ( !sub_6434A0(&v37, &v38) ) { sub_642780(&v37); sprintf(&v38, "../9Data/Shine/World/DamageBySoul.txt"); if ( !sub_6434A0(&v37, &v38) ) { v7 = sub_642790(&v37); sub_639100(&unk_86DDD8, (int)"DamageBySoul::SoulDamageContainer::sdc_Load : Read DamageBySoul.txt fail", v7); loc_6391B0("DamageBySoul::SoulDamageContainer::sdc_Load"); } } v36 = 0; for ( i = 0; ; ++i ) { v29 = i; v35 = &v24; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; strncpy((char *)&v24, "DamageBySoul", 0x14u); v9 = sub_6442C0(&v37, v24, v25, v26, (int)v27, v28, v29); if ( !v9 ) break; v10 = *(_WORD *)v9; if ( v10 > v36 ) v36 = v10; } v11 = *(_DWORD *)v2; *(_DWORD *)(v2 + 28) = 0; *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 16) = 0; *(_DWORD *)(v2 + 20) = 0; v12 = *(_DWORD *)(v2 + 24); v31 = 0; v33 = v12; v34 = 0; v13 = *(_DWORD *)(v2 + 4); v32 = 0; v14 = v36 + 1; v15 = (v13 - v11) >> 4; if ( v36 + 1 <= (unsigned int)v15 ) { if ( v36 + 1 < (unsigned int)v15 ) { v16 = v11 + 16 * v14; if ( v16 != v13 ) { v17 = v16; *(_DWORD *)(v2 + 4) = v17; } } } else { sub_45C690(v2, v13, v14 - v15, (int)&v31); } v36 = 0; while ( 1 ) { v29 = v36; v35 = &v24; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; strncpy((char *)&v24, "DamageBySoul", 0x14u); v20 = sub_6442C0(&v37, v24, v25, v26, (int)v27, v28, v29); if ( !v20 ) break; *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20) = *(_WORD *)(v20 + 2); *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20 + 2) = *(_WORD *)(v20 + 4); *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20 + 4) = *(_WORD *)(v20 + 6); *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20 + 6) = *(_WORD *)(v20 + 8); *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20 + 8) = *(_WORD *)(v20 + 10); *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20 + 10) = *(_WORD *)(v20 + 12); *(_WORD *)(*(_DWORD *)v2 + 16 * *(_WORD *)v20 + 12) = *(_WORD *)(v20 + 14); v21 = *(_WORD *)v20; v22 = *(_DWORD *)v2; v23 = *(_WORD *)(v20 + 16); ++v36; *(_WORD *)(v22 + 16 * v21 + 14) = v23; } v40 = -1; sub_643080(&v37); } // 642780: using guessed type int __thiscall sub_642780(_DWORD); // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (0045CC20) -------------------------------------------------------- signed int __thiscall sub_45CC20(int this, int a2, int a3) { signed int result; // eax@2 if ( a3 && a2 < *(_DWORD *)(this + 128) ) { *(_WORD *)a3 = *(_WORD *)(this + 4 * a2); result = 1; } else { result = 0; } return result; } //----- (0045CC50) -------------------------------------------------------- unsigned __int16 __thiscall sub_45CC50(void *this, unsigned __int16 a2) { (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 776))(8, 65, a2); return a2; } //----- (0045CC80) -------------------------------------------------------- int __thiscall sub_45CC80(int this) { int v1; // esi@1 void (__thiscall *v2)(_DWORD, _DWORD); // edx@1 v1 = this; v2 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(this + 58688) + 40); *(_WORD *)(this + 160760) = -1; v2(this + 58688, *(_WORD *)(this + 160772)); return (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 72); } //----- (0045CCC0) -------------------------------------------------------- int __thiscall sub_45CCC0(void *this) { *((_DWORD *)this + 40199) = 0; *((_DWORD *)this + 40200) = sub_5131E0; *((_DWORD *)this + 40203) = sub_452C70; *((_DWORD *)this + 40202) = 0; *((_BYTE *)this + 23888) = 0; return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); } //----- (0045CD00) -------------------------------------------------------- bool __thiscall sub_45CD00(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 + 36484))(this + 36484, *(_WORD *)(this + 160762)); if ( v2 ) { v4 = *(_DWORD *)(v2 + 112); if ( v4 ) { v5 = *(_DWORD *)(v1 + 160764); if ( v5 && *(_DWORD *)(v5 + 4) ) { result = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 64))(v2) >= *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 160764) + 4) + 198); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseNotHungry : No info", 0); result = 1; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseNotHungry : NULL Arrtibute", *(_WORD *)(v1 + 160762)); result = 1; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseNotHungry : NULL Cell", *(_WORD *)(v1 + 160762)); result = 1; } return result; } //----- (0045CDB0) -------------------------------------------------------- signed int __thiscall sub_45CDB0(int this) { signed int result; // eax@1 result = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(*(_DWORD *)(this + 160764) + 4) + 132)); if ( result == -1 ) result = 65535; else result = (unsigned __int16)result; return result; } //----- (0045CDE0) -------------------------------------------------------- int __thiscall sub_45CDE0(int this) { return *(_DWORD *)(this + 160788); } //----- (0045CE00) -------------------------------------------------------- char __userpurge sub_45CE00(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 char result; // al@2 int v7; // edi@4 int v8; // eax@6 int v9; // eax@6 int v10; // ebx@6 int v11; // ebx@13 unsigned __int8 v12; // al@13 int v13; // eax@13 int v14; // eax@14 int v15; // eax@16 void (__thiscall *v16)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@16 void *v17; // eax@16 int v18; // eax@18 int v19; // [sp-8h] [bp-14h]@7 int v20; // [sp-4h] [bp-10h]@7 int v21; // [sp+4h] [bp-8h]@10 int v22; // [sp+8h] [bp-4h]@6 v4 = a1; (*(void (**)(void))(*(_DWORD *)a1 + 2256))(); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2636))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2632))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); v5 = *(_DWORD *)(v4 + 118); if ( !v5 || *(_BYTE *)(v5 + 4) == 3 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1793, 9); return 0; } v7 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))(v4 + 36484))(v4 + 36484, a4, a3, a2); if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_Cast : Inven cell data null", a4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2332))(v4); return 0; } v8 = sub_645030((int)&dword_14D20890, *(_WORD *)(v7 + 8)); v22 = v8; v9 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v8); v10 = v9; if ( !v9 ) { v20 = v22; v19 = (int)"ShinePlayer::sp_MoverSystem_Cast : Mover data null"; LABEL_12: sub_6390B0(&unk_86DDD8, v19, v20); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2332))(v4); return 0; } if ( !*(_DWORD *)v9 ) { v20 = v22; v19 = (int)"ShinePlayer::sp_MoverSystem_Cast : Mover main data null"; goto LABEL_12; } v21 = *(_DWORD *)(v7 + 112); if ( !v21 ) { v20 = v22; v19 = (int)"ShinePlayer::sp_MoverSystem_Cast : Mover Attribute Class null"; goto LABEL_12; } sub_448770(v4 + 84388, (void *)v4); v11 = *(_DWORD *)(*(_DWORD *)v10 + 36); v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v21 + 192))(v7); v13 = sub_4BFA10((int)&unk_133593D0, v12); if ( v13 ) { v14 = *(_DWORD *)v13; if ( v14 ) v11 -= (unsigned int)(v11 * (unsigned int)*(_WORD *)(v14 + 6) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } v15 = *(_WORD *)(v4 + 58692); *(_DWORD *)(v4 + 160768) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * v11) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v16 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 44); *(_WORD *)(v4 + 160762) = a4; *(_WORD *)(v4 + 160760) = a4; *(_WORD *)(v4 + 160772) = v15; *(_DWORD *)(v4 + 160788) = 2; v16(v4 + 58688, v15, 9, a4); ++*(_WORD *)(v4 + 58692); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1792, 9); v17 = off_849C18; *(_WORD *)off_849C18 = 8263; *((_WORD *)v17 + 1) = v11; if ( sub_4C81E0(&off_849C18, 4) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v18 + 12))(v18); result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MoverSystem_Cast : Packet Too Long", 4); result = 1; } return result; } // 45CE00: could not find valid save-restore pair for ebx // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; //----- (0045D050) -------------------------------------------------------- char __thiscall sub_45D050(void *this, int a2, unsigned __int8 a3) { int v3; // edi@1 void *v4; // ebx@1 int v5; // eax@1 char result; // al@3 const void *v7; // esi@7 int v8; // esi@8 unsigned __int8 v9; // al@9 int v10; // eax@9 int v11; // esi@12 v3 = a2; v4 = this; v5 = *(_DWORD *)this; if ( !a2 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(v5 + 776))(51, 3, 12395); return 0; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(v5 + 996))(75) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 51, 3, 12394); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); result = 0; } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD))(*(_DWORD *)a2 + 3256))(a2, v4, a3) ) return 0; v7 = (const void *)(*(_DWORD *)((char *)v4 + 32650) + 37); if ( !*((_BYTE *)v4 + 155503) ) { memcpy((char *)v4 + 155460, v7, 0x28u); v8 = (int)((char *)v7 + 40); *((_WORD *)v4 + 77750) = *(_WORD *)v8; *((_BYTE *)v4 + 155502) = *(_BYTE *)(v8 + 2); v3 = a2; *((_BYTE *)v4 + 155503) = 1; } **((_BYTE **)v4 + 957) = 6; *((_WORD *)v4 + 80388) = 1000; *((_DWORD *)v4 + 40192) = 0; *((_DWORD *)v4 + 40193) = &unk_3E80000; *((_DWORD *)v4 + 40195) = 0; *((_BYTE *)v4 + 160784) = 0; *((_DWORD *)v4 + 40197) = 2; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3324))(v3); v10 = sub_4BFA10((int)&unk_133593D0, v9); if ( v10 && *(_DWORD *)v10 ) { *((_DWORD *)v4 + 39089) = dword_14D129E8; *((_WORD *)v4 + 78180) = *(_WORD *)(*(_DWORD *)v10 + 2); *((_WORD *)v4 + 78181) = *(_WORD *)(*(_DWORD *)v10 + 4); *((_DWORD *)v4 + 39091) = sub_5692F0; } v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3240))(v3); if ( v11 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) ) { *((_WORD *)v4 + 80380) = -1; *((_WORD *)v4 + 80381) = -1; } result = 1; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0045D1C0) -------------------------------------------------------- char __userpurge sub_45D1C0(int a1, int a2, int a3) { int v3; // edi@1 bool v4; // zf@1 int v5; // eax@1 char result; // al@2 int v7; // esi@3 int v8; // ebx@5 v3 = a1; v4 = (*(int (**)(void))(*(_DWORD *)a1 + 1156))() == 6; v5 = *(_DWORD *)v3; if ( v4 ) { v7 = (*(int (__thiscall **)(int, int))(v5 + 3188))(v3, a2); if ( v7 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3240))(v7); if ( v8 == (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v7 + 3264))(v7); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v7 + 828))(v7, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v7 + 4), 0, 123); result = 1; } else { result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3180))(v3); } } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 51, 7); result = 0; } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(v3, 51, 7, 12417); result = 0; } return result; } //----- (0045D290) -------------------------------------------------------- void __usercall sub_45D290(int a1, int a2, int a3) { int v3; // edi@1 int v4; // esi@5 int v5; // eax@6 __int64 v6; // qax@8 int v7; // ST18_4@8 int v8; // ST14_4@8 int v9; // eax@13 int v10; // ST28_4@21 int v11; // eax@21 __int16 v12; // ax@21 void (__thiscall *v13)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@21 int v14; // ecx@21 int v15; // ebx@22 unsigned __int8 v16; // al@22 int v17; // [sp-8h] [bp-20h]@5 int v18; // [sp+0h] [bp-18h]@9 int v19; // [sp+4h] [bp-14h]@19 int v20; // [sp+8h] [bp-10h]@15 int v21; // [sp+Ch] [bp-Ch]@13 char v22; // [sp+10h] [bp-8h]@6 unsigned __int8 v23; // [sp+17h] [bp-1h]@8 v3 = a1; if ( *(_DWORD *)(a1 + 161644) != -1 && *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(a1 + 122) + 12) + 164) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3188))(a1) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 51, 3, 12394); return; } v17 = a3; v4 = sub_54E810(&unk_13253630, *(_DWORD *)(v3 + 161660), *(_DWORD *)(v3 + 161652)); if ( !v4 ) { v5 = sub_54DF90(&unk_13253630, (int)&v22, 11); v4 = v5; if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_MoverOn : Too many mover", 0); return; } (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 3228))(v5, v17); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3328))(v4, *(_BYTE *)(v3 + 161664)); v6 = sub_548D10(v3); v7 = v6; LODWORD(v6) = *(_DWORD *)(v3 + 161652); v8 = *(_DWORD *)(v3 + 161656); v23 = **(_BYTE **)(v3 + 106); if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD, int, _DWORD, int, int, _DWORD))(*(_DWORD *)v4 + 3232))( v4, *(_DWORD *)(v3 + 122), **(_DWORD **)(v3 + 102), *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4), 2 * v23, v6, v8, v7, HIDWORD(v6)) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int, int))(*(_DWORD *)v4 + 828))(v4, 0, 1, 3, a2); v18 = 124; LABEL_18: sub_555DF0(&unk_13253630, *(_WORD *)(v4 + 4), 0, v18); return; } v17 = v3 + 161644; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3208))(v4); } if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 836))(v3, v17) == *(_DWORD *)(v3 + 161660) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, int))(*(_DWORD *)(v3 + 58688) + 12))( v3 + 58688, 9, *(_DWORD *)(v3 + 161648), a2) == 1 ) { LABEL_17: (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3264))(v4, 0); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 828))(v4, 0, 1, 3); v18 = 128; goto LABEL_18; } v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v3 + 36484))(v3 + 36484, *(_DWORD *)(v3 + 161648)); v21 = v9; if ( !v9 ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_MapLogin : Inven cell data null", *(_DWORD *)(v3 + 161648)); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3264))(v4, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 828))(v4); sub_555DF0(&unk_13253630, *(_WORD *)(v4 + 4), 0, 128); return; } v20 = *(_DWORD *)(v9 + 112); if ( !v20 ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_MapLogin : Item attribute data null", *(_DWORD *)(v3 + 161648)); goto LABEL_17; } v19 = sub_645030((int)&dword_14D20890, *(_WORD *)(v9 + 8)); if ( !sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v19) ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_MapLogin : Mover data null", v19); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3264))(v4, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 828))(v4); sub_555DF0(&unk_13253630, *(_WORD *)(v4 + 4), 0, 128); return; } (*(void (__stdcall **)(int))(*(_DWORD *)v20 + 100))(v21 + 8); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 3252))(v4, v20, v21); v10 = *(_DWORD *)v4; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); (*(void (__thiscall **)(int, int))(v10 + 3236))(v4, v11); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 3244))(v4, v3); v12 = *(_WORD *)(v3 + 161648); v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v3 + 58688) + 44); *(_WORD *)(v3 + 160762) = v12; *(_WORD *)(v3 + 160760) = -1; v14 = *(_WORD *)(v3 + 58692); *(_WORD *)(v3 + 160778) = v14; v13(v3 + 58688, v14, 9, v12); ++*(_WORD *)(v3 + 58692); } v15 = *(_DWORD *)v4; (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v16 = (*(int (__thiscall **)(int))(v15 + 3304))(v4); *(_BYTE *)(v3 + 161705) = v16; sub_45D050((void *)v3, v4, v16); } } // 45D290: could not find valid save-restore pair for ebx // 45D290: could not find valid save-restore pair for esi // 14D20890: using guessed type int dword_14D20890; //----- (0045D610) -------------------------------------------------------- void __thiscall sub_45D610(void *this, int a2) { void *v2; // esi@1 signed int v3; // ebx@2 int v4; // edi@2 int v5; // eax@3 v2 = this; if ( a2 ) { *(_DWORD *)a2 = -1; *(_DWORD *)(a2 + 8) = (*(int (**)(void))(*(_DWORD *)this + 3300))(); *(_DWORD *)(a2 + 12) = **((_DWORD **)v2 + 2072); *(_DWORD *)(a2 + 4) = -1; *(_DWORD *)(a2 + 16) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3240))(v2); v3 = 0; v4 = a2 + 21; do { v5 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3292))(v2, v3); *(_DWORD *)v4 = -1; if ( v5 ) *(_DWORD *)v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); ++v3; v4 += 4; } while ( v3 < 10 ); } } //----- (0045D6A0) -------------------------------------------------------- FILE *__thiscall sub_45D6A0(int this, int a2) { FILE *result; // eax@2 if ( a2 ) { *(_DWORD *)(this + 161644) = *(_DWORD *)a2; *(_DWORD *)(this + 161648) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 161652) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 161656) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 161660) = *(_DWORD *)(a2 + 16); *(_BYTE *)(this + 161664) = *(_BYTE *)(a2 + 20); *(_DWORD *)(this + 161665) = *(_DWORD *)(a2 + 21); *(_DWORD *)(this + 161669) = *(_DWORD *)(a2 + 25); *(_DWORD *)(this + 161673) = *(_DWORD *)(a2 + 29); *(_DWORD *)(this + 161677) = *(_DWORD *)(a2 + 33); *(_DWORD *)(this + 161681) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 161685) = *(_DWORD *)(a2 + 41); *(_DWORD *)(this + 161689) = *(_DWORD *)(a2 + 45); *(_DWORD *)(this + 161693) = *(_DWORD *)(a2 + 49); *(_DWORD *)(this + 161697) = *(_DWORD *)(a2 + 53); result = *(FILE **)(a2 + 57); *(_DWORD *)(this + 161701) = result; } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_MoverSystem_SetLinkData : ZoneLinktData null", 0); } return result; } //----- (0045D760) -------------------------------------------------------- FILE *__thiscall sub_45D760(void *this, int a2) { FILE *result; // eax@2 int v3; // edx@3 int v4; // edx@5 int v5; // edx@7 int v6; // edx@9 int v7; // edx@11 int v8; // edx@13 int v9; // edx@15 int v10; // edx@17 int v11; // edx@19 int v12; // edx@21 if ( a2 ) { *((_DWORD *)this + 1997) = 0; v3 = *(_DWORD *)(a2 + 21); if ( v3 != -1 ) { *((_DWORD *)this + 1998) = v3; *((_DWORD *)this + 1999) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v4 = *(_DWORD *)(a2 + 25); if ( v4 != -1 ) { *((_DWORD *)this + 2000) = v4; *((_DWORD *)this + 2001) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v5 = *(_DWORD *)(a2 + 29); if ( v5 != -1 ) { *((_DWORD *)this + 2002) = v5; *((_DWORD *)this + 2003) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v6 = *(_DWORD *)(a2 + 33); if ( v6 != -1 ) { *((_DWORD *)this + 2004) = v6; *((_DWORD *)this + 2005) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v7 = *(_DWORD *)(a2 + 37); if ( v7 != -1 ) { *((_DWORD *)this + 2006) = v7; *((_DWORD *)this + 2007) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v8 = *(_DWORD *)(a2 + 41); if ( v8 != -1 ) { *((_DWORD *)this + 2008) = v8; *((_DWORD *)this + 2009) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v9 = *(_DWORD *)(a2 + 45); if ( v9 != -1 ) { *((_DWORD *)this + 2010) = v9; *((_DWORD *)this + 2011) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v10 = *(_DWORD *)(a2 + 49); if ( v10 != -1 ) { *((_DWORD *)this + 2012) = v10; *((_DWORD *)this + 2013) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v11 = *(_DWORD *)(a2 + 53); if ( v11 != -1 ) { *((_DWORD *)this + 2014) = v11; *((_DWORD *)this + 2015) = dword_14D129E8; ++*((_DWORD *)this + 1997); } v12 = *(_DWORD *)(a2 + 57); if ( v12 != -1 ) { *((_DWORD *)this + 2016) = v12; *((_DWORD *)this + 2017) = dword_14D129E8; ++*((_DWORD *)this + 1997); } *((_DWORD *)this + 1984) = *(_DWORD *)(a2 + 16); result = (FILE *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 3328))(*(_BYTE *)(a2 + 20)); } else { result = sub_639100(&unk_86DDD8, (int)"ShineMover::so_MoverSystem_SetLinkData : ZoneLonkData null", 0); } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0045D8F0) -------------------------------------------------------- signed int __thiscall sub_45D8F0(int this) { signed int result; // eax@1 result = -1; *(_DWORD *)(this + 161644) = -1; *(_DWORD *)(this + 161648) = -1; *(_DWORD *)(this + 161652) = -1; *(_DWORD *)(this + 161660) = -1; *(_DWORD *)(this + 161656) = 0; *(_BYTE *)(this + 161664) = 0; *(_DWORD *)(this + 161665) = -1; *(_DWORD *)(this + 161669) = -1; *(_DWORD *)(this + 161673) = -1; *(_DWORD *)(this + 161677) = -1; *(_DWORD *)(this + 161681) = -1; *(_DWORD *)(this + 161685) = -1; *(_DWORD *)(this + 161689) = -1; *(_DWORD *)(this + 161693) = -1; *(_DWORD *)(this + 161697) = -1; *(_DWORD *)(this + 161701) = -1; return result; } //----- (0045D960) -------------------------------------------------------- int __thiscall sub_45D960(int this, int a2) { int v2; // eax@1 int result; // eax@3 v2 = *(_DWORD *)a2; if ( *(_DWORD *)a2 < 0 || v2 >= *(_DWORD *)(this + 416) ) result = 0; else result = *(_DWORD *)(this + 412) + 8 * v2; return result; } //----- (0045D990) -------------------------------------------------------- int __thiscall sub_45D990(void *this, int a2) { void *v2; // esi@1 void (__thiscall *v3)(_DWORD); // eax@1 int v4; // edi@1 signed int v5; // ecx@2 char *v6; // eax@6 int v7; // eax@13 int v8; // ecx@14 int v9; // ebx@15 unsigned __int8 v10; // al@15 int v11; // eax@15 int v12; // eax@16 int v13; // eax@18 void (__thiscall *v14)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@18 void *v15; // eax@18 int v16; // eax@20 int v18; // [sp+18h] [bp-10h]@2 int v19; // [sp+24h] [bp-4h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HorseCast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HorseCast"; dword_750AB8[dword_750CB8++] = -1; v3 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2256); v19 = 0; v3(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2632))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2636))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3792))(v2); v4 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9121))((char *)v2 + 36484, a2); if ( v4 ) { *((_DWORD *)v2 + 40191) = 0; sub_5CF620(&v18); LOBYTE(v19) = 1; v5 = -1; while ( v5 >= -1 ) { ++v5; v18 = v5; if ( v5 >= dword_AA0A88 ) break; if ( v5 < 0 ) v6 = 0; else v6 = (char *)dword_AA0A84 + 8 * v5; *((_DWORD *)v2 + 40191) = v6; if ( !v6 || !*((_DWORD *)v6 + 1) ) goto LABEL_21; if ( *(_WORD *)v6 == *(_WORD *)(v4 + 8) ) goto LABEL_13; } v18 = -10; LABEL_13: v7 = *((_DWORD *)v2 + 40191); if ( v7 ) { v8 = *(_DWORD *)(v4 + 112); if ( v8 ) { v9 = *(_WORD *)(*(_DWORD *)(v7 + 4) + 210); v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v8 + 192))(v4); v11 = sub_4BFA10((int)&unk_133593D0, v10); if ( v11 ) { v12 = *(_DWORD *)v11; if ( v12 ) v9 -= (unsigned int)(v9 * (unsigned int)*(_WORD *)(v12 + 6) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } v13 = *((_WORD *)v2 + 29346); *((_DWORD *)v2 + 40192) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * v9) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v14 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*((_DWORD *)v2 + 14672) + 44); *((_WORD *)v2 + 80380) = a2; *((_WORD *)v2 + 80381) = a2; *((_WORD *)v2 + 80386) = v13; v14((char *)v2 + 58688, v13, 9, a2); ++*((_WORD *)v2 + 29346); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); v15 = off_849C18; *(_WORD *)off_849C18 = 8263; *((_WORD *)v15 + 1) = v9; if ( sub_4C81E0(&off_849C18, 4) ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v16 + 12))(v16, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseCast : Packet Too Long", 4); } } } LABEL_21: LOBYTE(v19) = 0; nullsub_2(&v18); } --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HorseCast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0A88: using guessed type int dword_AA0A88; // 14D129E8: using guessed type int dword_14D129E8; //----- (0045DC00) -------------------------------------------------------- int __thiscall sub_45DC00(void *this, int a2, __int16 a3, int a4) { void *v4; // esi@1 int v5; // edi@3 int v6; // edx@3 int v7; // ebx@3 int v8; // ST08_4@3 int v9; // ST04_4@3 void *v10; // esi@3 int v11; // esi@3 int v12; // eax@3 int v13; // eax@5 int v15; // [sp-4h] [bp-2Ch]@2 void *v16; // [sp+14h] [bp-14h]@1 __int16 v17; // [sp+18h] [bp-10h]@3 int v18; // [sp+24h] [bp-4h]@1 int v19; // [sp+30h] [bp+8h]@3 v4 = this; v16 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ItemAttrSave"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( a4 >= 0 ) { v5 = a2; v6 = *((_DWORD *)v4 + 14672); v7 = *(_DWORD *)(a2 + 112); v17 = (a3 << 10) | a4 & 0x3FF; v8 = a2; v9 = a2; v19 = (int)((char *)v4 + 58688); (*(void (__stdcall **)(_DWORD, int, int, __int16 *, __int16 *))(v6 + 64))( *((_WORD *)v4 + 29346), v9, v8, &v17, &v17); v10 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v10 + 1) = *((_WORD *)v16 + 2); *((_DWORD *)v10 + 1) = (*(int (**)(void))(*(_DWORD *)v16 + 836))(); *((_WORD *)v10 + 4) = *((_WORD *)v16 + 29346); *(_DWORD *)((char *)v10 + 10) = *(_DWORD *)v5; *(_DWORD *)((char *)v10 + 14) = *(_DWORD *)(v5 + 4); *((_WORD *)v10 + 9) = *(_WORD *)(v5 + 8); memcpy((char *)v10 + 20, (const void *)(v5 + 10), 0x65u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v7 + 12))(v7, v5 + 10); v5 += 10; v11 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 12))(v7, v5) + 20; v12 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 12))(v7, v5); if ( sub_4C81E0(&off_849C18, v12 + 20) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : Packet Too Long", v11); } ++*(_WORD *)(v19 + 4); --dword_750CB8; v18 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; } else { --dword_750CB8; v18 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; } return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0045DDC0) -------------------------------------------------------- int __thiscall sub_45DDC0(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendHorseHungry"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SendHorseHungry"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 8262; *((_WORD *)v3 + 1) = a2; *((_BYTE *)v2 + 160784) = a2 == 0; if ( sub_4C81E0(&off_849C18, 4) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendHorseHungry : Packet Too Long", 4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendHorseHungry"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045DEC0) -------------------------------------------------------- int __thiscall sub_45DEC0(void *this, __int16 a2, char a3) { void *v3; // esi@1 void *v4; // eax@1 __int16 v5; // dx@1 int v6; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 12310; *((_WORD *)v4 + 1) = a2; v5 = *((_WORD *)v3 + 80431); *((_BYTE *)v4 + 6) = a3; *((_WORD *)v4 + 2) = v5; sub_4C81E0(&off_849C18, 7); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 12))(v6); *((_WORD *)v3 + 80431) = -1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045DFC0) -------------------------------------------------------- void __thiscall sub_45DFC0(void *this) { void *v1; // edi@1 void *v2; // esi@2 int v3; // eax@4 v1 = this; if ( *((_DWORD *)this + 40411) != -1 ) { v2 = off_849C18; *(_WORD *)off_849C18 = -13301; *(_DWORD *)((char *)v2 + 2) = (*(int (**)(void))(*(_DWORD *)this + 836))(); *(_DWORD *)((char *)v2 + 6) = *((_DWORD *)v1 + 40412); *(_DWORD *)((char *)v2 + 10) = *((_DWORD *)v1 + 40413); *(_DWORD *)((char *)v2 + 14) = *((_DWORD *)v1 + 40414); *(_DWORD *)((char *)v2 + 18) = *((_DWORD *)v1 + 40415); *((_BYTE *)v2 + 22) = *((_BYTE *)v1 + 161664); *(_DWORD *)((char *)v2 + 23) = *(_DWORD *)((char *)v1 + 161665); *(_DWORD *)((char *)v2 + 27) = *(_DWORD *)((char *)v1 + 161669); *(_DWORD *)((char *)v2 + 31) = *(_DWORD *)((char *)v1 + 161673); *(_DWORD *)((char *)v2 + 35) = *(_DWORD *)((char *)v1 + 161677); *(_DWORD *)((char *)v2 + 39) = *(_DWORD *)((char *)v1 + 161681); *(_DWORD *)((char *)v2 + 43) = *(_DWORD *)((char *)v1 + 161685); *(_DWORD *)((char *)v2 + 47) = *(_DWORD *)((char *)v1 + 161689); *(_DWORD *)((char *)v2 + 51) = *(_DWORD *)((char *)v1 + 161693); *(_DWORD *)((char *)v2 + 55) = *(_DWORD *)((char *)v1 + 161697); *(_DWORD *)((char *)v2 + 59) = *(_DWORD *)((char *)v1 + 161701); if ( sub_4C81E0(&off_849C18, 63) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_Gamble_PrevMapNameSave2World : Packet Too Long", 63); } } } // 14D12A00: using guessed type int dword_14D12A00; //----- (0045E0C0) -------------------------------------------------------- int __thiscall sub_45E0C0(void *this) { void *v1; // edi@1 signed int v2; // esi@1 __int16 v3; // ax@1 int v4; // eax@3 int v5; // ebx@3 int v6; // eax@5 int v7; // eax@6 int v8; // ecx@10 int v9; // eax@12 int v10; // eax@14 void *v11; // esi@15 __int16 v12; // ax@15 __int16 v13; // ax@15 __int16 v14; // cx@15 __int16 v15; // ax@15 __int16 v16; // ax@15 int v17; // eax@17 int v19; // [sp-4h] [bp-28h]@2 int v20; // [sp+14h] [bp-10h]@4 int v21; // [sp+20h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HorseItemSave"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HorseItemSave"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v3 = *((_WORD *)v1 + 80381); v21 = 0; if ( v3 == -1 ) { --dword_750CB8; v19 = (int)"ShineObjectClass::ShinePlayer::sp_HorseItemSave"; } else { v4 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 9121))( (char *)v1 + 36484, v3); v5 = v4; if ( v4 ) { v20 = *(_DWORD *)(v4 + 112); if ( v20 ) { v6 = sub_645030((int)&dword_14D20890, *(_WORD *)(v4 + 8)); if ( v6 ) { v7 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v6); if ( v7 && *(_DWORD *)(v7 + 4) && !(*(int (__stdcall **)(int))(*(_DWORD *)v20 + 184))(v5) ) { LOWORD(v20) = *((_WORD *)v1 + 80381) & 0x3FF | 0x2400; sub_526030(v1, *((_WORD *)v1 + 2), v5, (int)&v20); } else { v8 = *(_DWORD *)(v5 + 112); if ( v8 ) { if ( (*(int (__stdcall **)(int))(*(_DWORD *)v8 + 164))(v5) != 1 ) { v9 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v5 + 8)); if ( v9 ) { if ( *(_DWORD *)v9 ) { v10 = sub_645090(v5); if ( sub_62EFA0(&dword_1508B5A8, v10) ) { *(_DWORD *)(v5 + 18) = 1; v11 = off_849C18; *(_WORD *)off_849C18 = 1364; *(_DWORD *)((char *)v11 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v12 = *((_WORD *)v11 + 7); *(_DWORD *)((char *)v11 + 6) = *(_DWORD *)v5; *(_DWORD *)((char *)v11 + 10) = *(_DWORD *)(v5 + 4); v13 = v12 & 0x3FF | 0x2400; *((_WORD *)v11 + 7) = v13; v14 = v13 ^ (v13 ^ *((_WORD *)v1 + 80381)) & 0x3FF; v15 = *((_WORD *)v11 + 8); *((_WORD *)v11 + 7) = v14; v16 = v15 & 0x3FF | 0x2400; *((_WORD *)v11 + 8) = v16; *((_WORD *)v11 + 8) = v16 ^ (v16 ^ *((_WORD *)v1 + 80381)) & 0x3FF; if ( sub_4C81E0(&off_849C18, 18) ) { v17 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v17); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseItemSave : Packet Too Long", 18); } v2 = -1; } sub_45DC00(v1, v5, 9, *((_WORD *)v1 + 80381)); } } } } } } } } --dword_750CB8; v19 = (int)"ShineObjectClass::ShinePlayer::sp_HorseItemSave"; } v21 = v2; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D148D0: using guessed type int dword_14D148D0; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0045E350) -------------------------------------------------------- int __thiscall sub_45E350(void *this) { void *v1; // esi@1 __int16 v2; // ax@2 int v3; // eax@7 int v4; // ecx@7 int v5; // ebx@7 int v6; // edi@7 int v7; // eax@9 int v9; // [sp-4h] [bp-24h]@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1156))(v1) != 6 ) goto LABEL_4; v2 = *((_WORD *)v1 + 80381); if ( v2 < 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed : No ride", v2 >= 0); LABEL_4: v9 = (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; goto LABEL_11; } if ( *((_DWORD *)v1 + 40191) ) { v3 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 9121))( (char *)v1 + 36484, v2); v4 = *((_DWORD *)v1 + 40191); v5 = v3; v6 = *(_DWORD *)(v3 + 112); if ( *(_WORD *)(v3 + 8) == *(_WORD *)v4 ) { (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 60))( v6, v3, *(_WORD *)(*(_DWORD *)(v4 + 4) + 196), *(_WORD *)(*(_DWORD *)(v4 + 4) + 198)); sub_45E0C0(v1); v7 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 64))(v6, v5); sub_45DDC0(v1, v7); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No Ride", *(_WORD *)(v3 + 8) == *(_WORD *)v4); } v9 = (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed : No info", *((_DWORD *)v1 + 40191) != 0); v9 = (int)"ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; } LABEL_11: --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045E4C0) -------------------------------------------------------- char __userpurge sub_45E4C0(int a1, int a2, int a3, char a4) { int v4; // edi@1 int v5; // eax@1 char result; // al@5 int v7; // eax@6 int v8; // ebx@8 int v9; // eax@10 int v10; // esi@10 int v11; // eax@10 int v12; // eax@14 int v13; // esi@14 int v14; // ST38_4@16 int v15; // eax@16 int v16; // ST38_4@16 unsigned __int8 v17; // al@16 __int64 v18; // qax@16 int v19; // ecx@16 int v20; // ST38_4@16 int v21; // ST28_4@16 int v22; // ST2C_4@16 int v23; // ST24_4@16 int v24; // eax@16 unsigned __int8 v25; // al@18 int v26; // eax@18 int v27; // eax@19 int v28; // ST1C_4@21 int v29; // eax@21 int v30; // eax@22 void (__thiscall *v31)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@25 int v32; // ST14_4@25 int v33; // ST0C_4@25 int v34; // eax@25 int v35; // [sp-8h] [bp-38h]@10 int v36; // [sp-4h] [bp-34h]@8 int v37; // [sp+18h] [bp-18h]@10 int v38; // [sp+1Ch] [bp-14h]@10 unsigned int v39; // [sp+20h] [bp-10h]@18 int v40; // [sp+24h] [bp-Ch]@6 char v41; // [sp+28h] [bp-8h]@14 unsigned __int8 v42; // [sp+2Fh] [bp-1h]@16 int v43; // [sp+38h] [bp+8h]@22 v4 = a1; v5 = *(_DWORD *)(a1 + 118); if ( !v5 || *(_BYTE *)(v5 + 4) == 3 ) return 0; if ( (*(int (**)(void))(*(_DWORD *)a1 + 3188))() ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 51, 3, 12394); return 0; } v7 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, *(_WORD *)(v4 + 160762)); v40 = v7; if ( v7 ) { v36 = a2; v8 = *(_DWORD *)(v7 + 112); if ( v8 ) { v38 = v7 + 8; v35 = a3; v9 = sub_645030((int)&dword_14D20890, *(_WORD *)(v7 + 8)); v10 = v9; v11 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v9); v37 = v11; if ( v11 ) { if ( *(_DWORD *)v11 ) { v12 = sub_54DF90(&unk_13253630, (int)&v41, 11); v13 = v12; if ( v12 ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v12 + 3228))(v12, v35, v36); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v13 + 3252))(v13, v8, v40); v14 = *(_DWORD *)v13; v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); (*(void (__thiscall **)(int, int))(v14 + 3236))(v13, v15); (*(void (__thiscall **)(int, int))(*(_DWORD *)v13 + 3244))(v13, v4); v16 = *(_DWORD *)v13; v17 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 192))(v8, v40); (*(void (__thiscall **)(int, _DWORD))(v16 + 3328))(v13, v17); v18 = sub_548D10(v4); v19 = *(_DWORD *)(v4 + 102); v42 = **(_BYTE **)(v4 + 106); v20 = *(_DWORD *)(v19 + 4); v21 = *(_DWORD *)(v4 + 122); v22 = *(_DWORD *)v19; v23 = *(_DWORD *)v13; v24 = (*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v8 + 184))(v8, v40, v18, HIDWORD(v18)); if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int, int, int, _DWORD, int))(v23 + 3232))( v13, v21, v22, v20, 2 * v42, **(_DWORD **)v37, v24) ) { v39 = *(_DWORD *)(*(_DWORD *)v37 + 40); v25 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 192))(v8, v40); v26 = sub_4BFA10((int)&unk_133593D0, v25); if ( v26 ) { v27 = *(_DWORD *)v26; if ( v27 ) v39 -= (unsigned int)(v39 * *(_WORD *)(v27 + 8) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } v28 = *(_DWORD *)v4; v29 = sub_428740((int)&off_86ACC0); (*(void (__thiscall **)(int, _DWORD, unsigned int, _DWORD, _DWORD, _DWORD))(v28 + 3748))( v4, **(_WORD **)v29, v39, 0, 0, 0); if ( a4 ) { v43 = *(_DWORD *)v4; v30 = sub_428740((int)&off_86ACC0); (*(void (__thiscall **)(int, _DWORD, unsigned int))(v43 + 884))( v4, **(_WORD **)v30, (unsigned int)(v39 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); } sub_45CC80(v4); if ( sub_45D050((void *)v4, v13, 0) ) { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v8 + 100))(v8, v38, 1); v31 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 44); v32 = *(_WORD *)(v4 + 160762); v33 = *(_WORD *)(v4 + 58692); *(_WORD *)(v4 + 160778) = v33; v31(v4 + 58688, v33, 9, v32); ++*(_WORD *)(v4 + 58692); v34 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 52))(v8, v38); if ( v34 ) { if ( !*(_BYTE *)v34 ) { (*(void (__thiscall **)(int, int, _DWORD, _UNKNOWN *, unsigned int))(*(_DWORD *)v8 + 56))( v8, v38, *(_WORD *)(*(_DWORD *)v37 + 48), &unk_AA0BCC, ((unsigned int)dword_AA0BC8 >> 19) & 0x3F); sub_45E0C0((void *)v4); } result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_SummonItem : Delete time null", 0); result = 1; } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v13 + 828))(v13, 0); sub_555DF0(&unk_13253630, *(_WORD *)(v13 + 4), 0, 121); result = 0; } } else { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 776))(v4, 51); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v13 + 828))(v13, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v13 + 4), 0, 120); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_SummonItem : Too many mover", 0); result = 0; } } else { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_SummonItem : Mover main data null", v10); result = 0; } } else { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_SummonItem : Mover data null", v10); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_SummonItem : Item ttribute data null", *(_WORD *)(v4 + 160762)); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_MoverSystem_SummonItem : Inven cell data null", *(_WORD *)(v4 + 160762)); result = 0; } return result; } // 45E4C0: could not find valid save-restore pair for ebx // 45E4C0: could not find valid save-restore pair for esi // 86ACC0: using guessed type int (__thiscall **off_86ACC0)(void *, char); // AA0BC8: using guessed type int dword_AA0BC8; // 14D20890: using guessed type int dword_14D20890; //----- (0045E8D0) -------------------------------------------------------- char __userpurge sub_45E8D0(int a1, int a2, int a3) { int v3; // ebx@1 bool v4; // zf@1 int v5; // eax@1 char result; // al@2 int v7; // esi@3 int v8; // eax@3 int v9; // edi@5 unsigned __int8 v10; // al@5 int v11; // edi@7 __int16 v12; // ax@8 int v13; // eax@9 int v14; // edi@9 int v15; // esi@11 unsigned __int8 v16; // al@13 void (__thiscall *v17)(_DWORD, _DWORD); // edx@16 v3 = a1; v4 = (*(int (**)(void))(*(_DWORD *)a1 + 1156))() == 6; v5 = *(_DWORD *)v3; if ( !v4 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(v3, 51, 7, 12417); return 0; } v7 = (*(int (__thiscall **)(int, int))(v5 + 3188))(v3, a2); v8 = *(_DWORD *)v3; if ( !v7 ) { (*(void (__thiscall **)(int, signed int, signed int))(v8 + 776))(v3, 51, 7); return 0; } v9 = *(_DWORD *)v7; v10 = (*(int (__thiscall **)(int))(v8 + 3196))(v3); result = (*(int (__thiscall **)(int, int, _DWORD))(v9 + 3260))(v7, v3, v10); if ( result ) { if ( *(_BYTE *)(v3 + 155503) ) { v11 = *(_DWORD *)(v3 + 32650) + 37; memcpy((void *)v11, (const void *)(v3 + 155460), 0x28u); v11 += 40; *(_WORD *)v11 = *(_WORD *)(v3 + 155500); *(_BYTE *)(v11 + 2) = *(_BYTE *)(v3 + 155502); *(_BYTE *)(v3 + 155503) = 0; } **(_BYTE **)(v3 + 3828) = 1; v12 = *(_WORD *)(v3 + 160762); *(_DWORD *)(v3 + 160788) = 3; if ( v12 != -1 ) { v13 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v3 + 36484))(v3 + 36484, v12); v14 = v13; if ( !v13 ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_MoverSystem_GetOff : Inven cell data null", *(_WORD *)(v3 + 160762)); return 1; } v15 = *(_DWORD *)(v13 + 112); if ( !v15 ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_MoverSystem_GetOff : Item attribute data null", *(_WORD *)(v3 + 160762)); return 1; } v16 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v15 + 192))(v15, v13); sub_55F530((void *)v3, v16); (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v15 + 100))(v15, v14 + 8, 0); if ( !a3 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v3 + 58688) + 40))(v3 + 58688, *(_WORD *)(v3 + 160778)); sub_45E0C0((void *)v3); } v17 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2332); *(_DWORD *)(v3 + 156364) = nullsub_2; v17(v3, 1792); result = 1; } return result; } //----- (0045EA80) -------------------------------------------------------- int __thiscall sub_45EA80(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int result; // eax@2 int v5; // edi@3 int v6; // ebx@6 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1156))() == 6; v3 = *(_DWORD *)v1; if ( v2 ) { v5 = (*(int (__thiscall **)(void *))(v3 + 3188))(v1); if ( v5 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3240))(v5); if ( v6 == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3272))(v5); if ( (_BYTE)result ) result = sub_45E0C0(v1); } else { result = (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))( v1, 51, 9, 12433); } } else { result = (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))( v1, 51, 9, 12434); } } else { result = (*(int (__thiscall **)(void *, signed int, signed int, signed int))(v3 + 776))(v1, 51, 9, 12433); } return result; } //----- (0045EB20) -------------------------------------------------------- int __thiscall sub_45EB20(void *this, unsigned __int8 a2) { int v2; // ebx@1 const void *v3; // esi@1 bool v4; // zf@1 int v5; // esi@2 char v6; // al@3 int v7; // edx@3 int v8; // ebx@4 int v9; // eax@8 int v10; // esi@8 void *v11; // edi@9 int v12; // ST04_4@9 int v13; // eax@9 int v14; // eax@11 int v15; // eax@12 unsigned int v16; // edi@14 unsigned __int8 v17; // al@14 int v18; // eax@14 signed __int64 v19; // qax@17 int v20; // ecx@17 int v21; // eax@17 int v22; // eax@18 int v23; // eax@19 int v24; // ST10_4@21 __time32_t v25; // eax@21 __time32_t v26; // eax@21 __time32_t v27; // eax@21 __time32_t v28; // eax@21 __time32_t v29; // eax@21 int v30; // edi@22 int v31; // eax@22 int v32; // eax@23 void (__thiscall *v33)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@23 int v34; // ST18_4@23 int v35; // ST10_4@23 int v36; // eax@23 int v37; // edi@25 int v38; // eax@25 unsigned __int8 v39; // al@28 int v40; // eax@28 char v42; // [sp+10h] [bp-24h]@9 int v43; // [sp+1Ch] [bp-18h]@1 int v44; // [sp+20h] [bp-14h]@14 int v45; // [sp+24h] [bp-10h]@1 int v46; // [sp+30h] [bp-4h]@1 int v47; // [sp+3Ch] [bp+8h]@18 v2 = (int)this; v43 = (int)"ShineObjectClass::ShinePlayer::sp_HorseOn"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HorseOn"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HorseOn"; dword_750AB8[dword_750CB8++] = -1; v3 = (const void *)(*(_DWORD *)(v2 + 32650) + 37); v4 = *(_BYTE *)(v2 + 155503) == 0; v46 = 0; v45 = v2 + 155460; if ( v4 ) { memcpy((void *)(v2 + 155460), v3, 0x28u); v5 = (int)((char *)v3 + 40); *(_WORD *)(v2 + 155500) = *(_WORD *)v5; *(_BYTE *)(v2 + 155502) = *(_BYTE *)(v5 + 2); *(_BYTE *)(v2 + 155503) = 1; } v6 = sub_56C500((void *)v2, *(_DWORD *)(v2 + 32650) + 37); v7 = *(_DWORD *)v2; if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(v7 + 996))(v2, 75) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 65, 4291); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2256))(v2); } else { **(_BYTE **)(v2 + 3828) = 6; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 36484))(v2 + 36484, *(_WORD *)(v2 + 160762)); v10 = *(_DWORD *)(v9 + 112); v45 = v9; if ( v10 ) { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v10 + 100))(v10, v9 + 8, 1); v11 = off_849C18; *(_WORD *)off_849C18 = 8256; *((_WORD *)v11 + 1) = *(_WORD *)(v2 + 4); *((_WORD *)v11 + 2) = *(_WORD *)(*(_DWORD *)(v2 + 32650) + 80); sub_4287B0(&v42, &off_849C18, 6); v12 = *(_DWORD *)(v2 + 102); LOBYTE(v46) = 1; v13 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v13, v12, 0, 0, (int)&v42, 0, 65535); *(_WORD *)v11 = 8255; *((_WORD *)v11 + 1) = *(_WORD *)(*(_DWORD *)(v2 + 32650) + 80); if ( sub_4C81E0(&off_849C18, 4) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseOn : Packet Too Long", 4); } v15 = *(_DWORD *)(v2 + 160764); if ( v15 && *(_DWORD *)(v15 + 4) ) { *(_WORD *)(v2 + 160774) = *(_WORD *)(*(_DWORD *)(v15 + 4) + 208); *(_WORD *)(v2 + 160776) = *(_WORD *)(*(_DWORD *)(v15 + 4) + 206); v16 = *(_DWORD *)(*(_DWORD *)(v15 + 4) + 212); v17 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 192))(v10, v45); LOBYTE(v44) = v17; v18 = sub_4BFA10((int)&unk_133593D0, v17); if ( v18 && *(_DWORD *)v18 ) { *(_WORD *)(v2 + 160774) += **(_WORD **)v18; *(_WORD *)(v2 + 160776) += **(_WORD **)v18; v16 -= (unsigned int)(v16 * *(_WORD *)(*(_DWORD *)v18 + 8) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } v19 = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 160764) + 4) + 202) * (signed __int64)(signed int)&unk_10624DD3; v20 = (SHIDWORD(v19) >> 6) + (HIDWORD(v19) >> 31); HIDWORD(v19) = *(_DWORD *)v2; *(_DWORD *)(v2 + 160780) = dword_14D129E8 + v20; v44 = HIDWORD(v19); v21 = sub_428740((int)&off_86ACC0); (*(void (__thiscall **)(int, _DWORD, unsigned int, _DWORD, _DWORD, _DWORD))(v44 + 3748))( v2, **(_WORD **)v21, v16, 0, 0, 0); if ( a2 ) { v47 = *(_DWORD *)v2; v22 = sub_428740((int)&off_86ACC0); (*(void (__thiscall **)(int, _DWORD, unsigned int))(v47 + 884))( v2, **(_WORD **)v22, (unsigned int)(v16 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); } } else { *(_DWORD *)(v2 + 160774) = 655370; v4 = v15 == 0; *(_DWORD *)(v2 + 160780) = dword_14D129E8; v23 = (int)"NULL"; if ( !v4 ) v23 = (int)"Not Null"; v24 = v23; v25 = sub_418EA0((__time32_t)byte_AF09B20, (int)"CoolTimeSet["); v26 = sub_43B910(v25, a2); v27 = sub_418EA0(v26, (int)"] sp_RideCast.info["); v28 = sub_418EA0(v27, v24); v29 = sub_418EA0(v28, (int)"]"); sub_418F20(v29, (int)&unk_13359E04); if ( a2 ) { v30 = *(_DWORD *)v2; v31 = sub_428740((int)&off_86ACC0); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(v30 + 3748))( v2, **(_WORD **)v31, 10000, 0, 0, 0); } } *(_DWORD *)(v2 + 160788) = 0; sub_45CC80(v2); v32 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 64))(v10, v45); sub_45DDC0((void *)v2, v32); v33 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v2 + 58688) + 44); v34 = *(_WORD *)(v2 + 160762); v35 = *(_WORD *)(v2 + 58692); *(_WORD *)(v2 + 160778) = v35; v33(v2 + 58688, v35, 9, v34); ++*(_WORD *)(v2 + 58692); v36 = *(_DWORD *)(v2 + 160764); if ( v36 && *(_DWORD *)(v36 + 4) ) { v37 = v45 + 8; v38 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 52))(v10, v45 + 8); if ( v38 ) { if ( !*(_BYTE *)v38 ) { (*(void (__thiscall **)(int, int, _DWORD, _UNKNOWN *, unsigned int))(*(_DWORD *)v10 + 56))( v10, v37, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 160764) + 4) + 130), &unk_AA0BCC, ((unsigned int)dword_AA0BC8 >> 19) & 0x3F); sub_45E0C0((void *)v2); v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 192))(v10, v45); v40 = sub_4BFA10((int)&unk_133593D0, v39); if ( v40 ) { if ( *(_DWORD *)v40 ) { *(_DWORD *)(v2 + 156356) = dword_14D129E8; *(_WORD *)(v2 + 156360) = *(_WORD *)(*(_DWORD *)v40 + 2); *(_WORD *)(v2 + 156362) = *(_WORD *)(*(_DWORD *)v40 + 4); *(_DWORD *)(v2 + 156364) = sub_5692F0; } } } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseOn : Null deltime", 0); } } LOBYTE(v46) = 0; sub_428A70(&v42); } } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v7 + 776))(v2, 8, 65, 4291); v8 = *(_DWORD *)(v2 + 32650); if ( *(_BYTE *)(v45 + 43) ) { memcpy((void *)(v8 + 37), (const void *)v45, 0x2Bu); *(_BYTE *)(v45 + 43) = 0; } } --dword_750CB8; v46 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HorseOn"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86ACC0: using guessed type int (__thiscall **off_86ACC0)(void *, char); // AA0BC8: using guessed type int dword_AA0BC8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0045F070) -------------------------------------------------------- int __thiscall sub_45F070(void *this) { void *v1; // ebx@1 int v2; // eax@1 bool v3; // zf@1 int v4; // eax@4 int v5; // edi@4 int v6; // esi@6 void *v7; // eax@10 int v8; // ST04_4@10 int v9; // eax@10 int v11; // [sp-4h] [bp-38h]@2 char v12; // [sp+10h] [bp-24h]@10 int v13; // [sp+1Ch] [bp-18h]@1 int v14; // [sp+20h] [bp-14h]@6 int v15; // [sp+24h] [bp-10h]@4 int v16; // [sp+30h] [bp-4h]@1 v1 = this; v13 = (int)"ShineObjectClass::ShinePlayer::sp_HorseOff"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HorseOff"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HorseOff"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 957); v3 = *(_BYTE *)v2 == 6; v16 = 0; if ( v3 && *((_DWORD *)v1 + 40197) != 2 ) { *(_BYTE *)v2 = 1; v4 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 9121))( (char *)v1 + 36484, *((_WORD *)v1 + 80381)); v5 = v4; v15 = v4; if ( v4 ) { v6 = *(_DWORD *)(v4 + 112); v14 = v6; if ( v6 ) { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v6 + 100))(v6, v4 + 8, 0); if ( *((_BYTE *)v1 + 155503) ) { memcpy((void *)(*(_DWORD *)((char *)v1 + 32650) + 37), (char *)v1 + 155460, 0x2Bu); v5 = v15; v6 = v14; *((_BYTE *)v1 + 155503) = 0; } v7 = off_849C18; *(_WORD *)off_849C18 = 8259; *((_WORD *)v7 + 1) = *((_WORD *)v1 + 2); sub_4287B0(&v12, &off_849C18, 4); v8 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v16) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v9, v8, 0, 0, (int)&v12, 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 + 14672) + 40))( (char *)v1 + 58688, *((_WORD *)v1 + 80389)); sub_45E0C0(v1); *((_DWORD *)v1 + 40197) = 3; LOBYTE(v14) = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 192))(v6, v5); sub_55F530(v1, v14); *((_DWORD *)v1 + 39091) = nullsub_2; LOBYTE(v16) = 0; sub_428A70(&v12); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseOn : Null ItemAttribute", 0); } v16 = -1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HorseOn : Null rideslot", 0); v16 = -1; } --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::sp_HorseOff"; } else { --dword_750CB8; v16 = -1; v11 = (int)"ShineObjectClass::ShinePlayer::sp_HorseOff"; } return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045F290) -------------------------------------------------------- int __thiscall sub_45F290(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // ax@4 int v6; // eax@10 int v7; // edi@10 int v8; // ecx@10 int v9; // ebx@12 signed int v10; // eax@12 int v11; // eax@16 int v12; // eax@18 signed int v14; // [sp-4h] [bp-28h]@6 int v15; // [sp-4h] [bp-28h]@7 int v16; // [sp+14h] [bp-10h]@10 int v17; // [sp+2Ch] [bp+8h]@14 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_AF09A94 & 1) ) { dword_AF09A94 |= 1u; word_AF09A90 = 64; atexit(nullsub_39); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_AF09A90) ) goto LABEL_6; v5 = *((_WORD *)v4 + 80381); if ( v5 < 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No ride", v5 >= 0); LABEL_6: v14 = 4293; LABEL_7: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 69, v14); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"; goto LABEL_20; } if ( !*((_DWORD *)v4 + 40191) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No info", *((_DWORD *)v4 + 40191) != 0); v14 = 4294; goto LABEL_7; } v6 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v5); v7 = *(_DWORD *)(v6 + 112); v8 = *((_DWORD *)v4 + 40191); v16 = v6; if ( *(_WORD *)(v6 + 8) == *(_WORD *)v8 ) { v9 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); v10 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(*((_DWORD *)v4 + 40191) + 4) + 132)); if ( v10 == -1 ) LOWORD(v10) = -1; v17 = (unsigned __int16)v10; if ( *(_WORD *)(v9 + 8) == (unsigned __int16)v10 ) { v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(v9 + 112) + 28))(v9 + 8); if ( v11 > 0 ) { (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v7 + 60))( v7, v16, *(_WORD *)(*(_DWORD *)(*((_DWORD *)v4 + 40191) + 4) + 196), *(_WORD *)(*(_DWORD *)(*((_DWORD *)v4 + 40191) + 4) + 198)); sub_526320(v4, *((_WORD *)v4 + 2), v17, 1, 0); sub_45E0C0(v4); v12 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 64))(v7, v16); sub_45DDC0(v4, v12); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : invalid lot", v11); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 69, 4295); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 69, 4295); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No Ride", *(_WORD *)(v6 + 8) == *(_WORD *)v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 69, 4294); } v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"; LABEL_20: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AF09A90: using guessed type __int16 word_AF09A90; // AF09A94: using guessed type int dword_AF09A94; //----- (0045F530) -------------------------------------------------------- int __thiscall sub_45F530(void *this) { int v1; // edi@1 int v2; // eax@2 int v3; // ebx@2 int v4; // esi@2 double v5; // st7@5 double v6; // st5@14 int v7; // ebx@14 double v8; // st7@21 char *v9; // esi@27 int v10; // edi@30 int v11; // ebx@30 signed int v12; // eax@30 int result; // eax@30 signed int v14; // [sp+Ch] [bp-5C0h]@1 signed int v15; // [sp+14h] [bp-5B8h]@2 void *v16; // [sp+18h] [bp-5B4h]@1 double v17; // [sp+1Ch] [bp-5B0h]@9 signed int v18; // [sp+24h] [bp-5A8h]@14 int v19; // [sp+24h] [bp-5A8h]@27 double v20; // [sp+28h] [bp-5A4h]@1 char v21; // [sp+30h] [bp-59Ch]@1 unsigned int v22; // [sp+5C8h] [bp-4h]@1 int v23; // [sp+5CCh] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v20 = 1000.0; v16 = this; memcpy(&v21, &v20, 0x598u); v1 = -1024; v14 = -1024; do { v2 = v1 * v1; v3 = 2049 * v1; v4 = -1024; v15 = -1024; while ( 1 ) { *((_DWORD *)v16 + 2 * (v3 + v4 + 2099200)) = (signed __int64)sqrt((double)(v2 + v4 * v4)); if ( v1 ) { if ( !v4 ) { v5 = 45.0; goto LABEL_11; } v5 = atan((double)v14 / (double)v15) * 90.0 / 3.1415927; } else { v5 = (double)(((v4 > 0) - 1) & 0x5A); } v17 = v5; if ( v5 >= 0.0 ) goto LABEL_12; v5 = v5 + 90.0; LABEL_11: v17 = v5; LABEL_12: if ( v1 < 0 ) { v5 = v5 + 90.0; v17 = v5; } v6 = v5 + 0.5; v7 = (signed int)v6; v18 = (signed int)v6; if ( (signed int)v6 >= 180 ) { do { v5 = v5 - 180.0; v7 = (signed int)(v5 + 0.5); v18 = (signed int)(v5 + 0.5); } while ( (signed int)(v5 + 0.5) >= 180 ); v17 = v5; } if ( (unsigned int)v7 > 0xB3 ) { sub_639100(&unk_86DDD8, (int)"Invalid ShineRadian1", v7); loc_6391B0("DirectDistanceTable::ddt_Initialize"); v5 = v17; } *((_BYTE *)v16 + 8 * (v4 + 2049 * v1) + (_DWORD)byte_1004004) = v7; if ( v1 || v4 ) { v8 = v5 - (double)v18; if ( v8 < 0.0 ) v8 = -v8; if ( v8 < *(&v20 + v7) ) { *((_QWORD *)&v20 + v7) = *(_QWORD *)&v8; *(_DWORD *)((char *)v16 + 8 * v7 + (_DWORD)dword_2008008) = v1; *(_DWORD *)((char *)v16 + 8 * v7 + (_DWORD)dword_200800C) = v4; } } ++v4; v15 = v4; if ( v4 > 1024 ) break; v3 = 2049 * v1; v2 = v1 * v1; } ++v1; v14 = v1; } while ( v1 <= 1024 ); v19 = 0; v9 = (char *)v16 + (_DWORD)dword_200800C; do { if ( *(&v20 + v19) >= 0.1 ) { sub_639100(&unk_86DDD8, (int)"DirectDistanceTable::ddt_Initialize : Too much diff", 0); loc_6391B0("DirectDistanceTable::ddt_Initialize"); } v10 = *((_DWORD *)v9 - 1); v11 = *(_DWORD *)v9; v12 = (signed int)sqrt((double)(v11 * v11 + v10 * v10)); v9 += 8; *((_DWORD *)v9 - 3) = (v10 << 10) / v12; *((_DWORD *)v9 - 2) = (v11 << 10) / v12; result = v19 + 1; v19 = result; } while ( result < 180 ); return result; } // 86FEB8: using guessed type int __security_cookie; // 2008008: using guessed type int dword_2008008[]; // 200800C: using guessed type int dword_200800C[]; //----- (0045F830) -------------------------------------------------------- int __thiscall sub_45F830(int this, signed int a2) { unsigned int v2; // esi@1 int v3; // ebx@1 int v4; // edi@3 int v5; // edi@3 int result; // eax@3 int v7; // [sp+Ch] [bp-8h]@1 int v8; // [sp+10h] [bp-4h]@1 v2 = a2; v3 = this; v7 = *(_DWORD *)this; v8 = *(_DWORD *)(this + 4); if ( a2 < 0 ) v2 = a2 + 180 * (-1 - a2) / 0xB4u + 180; v4 = v8 * sub_576E10(&unk_132546E8, v2); *(_DWORD *)v3 = (v7 * sub_576E40(&unk_132546E8, v2) - v4) / 1024; v5 = v8 * sub_576E40(&unk_132546E8, v2); result = (v5 + v7 * sub_576E10(&unk_132546E8, v2)) / 1024; *(_DWORD *)(v3 + 4) = result; return result; } //----- (0045F8E0) -------------------------------------------------------- int __stdcall sub_45F8E0(int a1, int a2, int a3) { int v3; // esi@2 int v4; // eax@2 sub_4675D0((int)&unk_D020420, (int)"DirectDistanceTable::ddt_ShineRadianDiff"); dword_7508B8[dword_750CB8] = (int)"DirectDistanceTable::ddt_ShineRadianDiff"; dword_750AB8[dword_750CB8++] = -1; if ( a2 - a1 <= 0 ) { v3 = -(a2 - a1); v4 = a3; *(_DWORD *)a3 = -1; } else { v3 = a2 - a1; v4 = a3; *(_DWORD *)a3 = 1; } if ( v3 > 90 ) { v3 = 180 - v3; *(_DWORD *)v4 = -*(_DWORD *)v4; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"DirectDistanceTable::ddt_ShineRadianDiff"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045F970) -------------------------------------------------------- char __thiscall sub_45F970(void *this, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 char result; // al@2 int v7; // esi@3 int v8; // edi@3 bool v9; // bl@7 v5 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_IsStreight"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_IsStreight"; dword_750AB8[dword_750CB8++] = -1; if ( (a2 - a4) * (a2 - a4) + (a3 - a5) * (a3 - a5) >= 25 ) { v7 = (a2 + a4) / 2; v8 = (a3 + a5) / 2; if ( sub_49D1B0(*((void **)v5 + 5), (a2 + a4) / 2, (a3 + a5) / 2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_IsStreight"); result = 0; } else { v9 = sub_45F970(v5, a2, a3, v7, v8) && sub_45F970(v5, v7, v8, a4, a5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_IsStreight"); result = v9; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_IsStreight"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045FAE0) -------------------------------------------------------- int __thiscall sub_45FAE0(int this, unsigned int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@1 unsigned int v5; // edx@2 v2 = this; v3 = *(_DWORD *)(this + 4); result = (v3 - *(_DWORD *)v2) >> 3; if ( result <= a2 ) { if ( result < a2 ) { sub_5F14D0(v2, a2 - result); sub_55DDC0(*(_DWORD *)(v2 + 4), a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 3)); result = *(_DWORD *)(v2 + 4) + 8 * (a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 3)); *(_DWORD *)(v2 + 4) = result; } } else { v5 = *(_DWORD *)v2 + 8 * a2; if ( v5 != v3 ) { result = v3; *(_DWORD *)(v2 + 4) = v5; } } return result; } //----- (0045FB70) -------------------------------------------------------- char __thiscall sub_45FB70(void *this, int a2, int a3, int a4, int a5, signed int a6) { void *v6; // esi@1 char result; // al@2 int v8; // eax@3 int v9; // ecx@3 int v10; // edx@3 int v11; // ebx@3 int v12; // ecx@3 int v13; // ebx@3 bool v14; // bl@9 int v15; // [sp+14h] [bp-24h]@3 int v16; // [sp+18h] [bp-20h]@3 int v17; // [sp+1Ch] [bp-1Ch]@3 int v18; // [sp+20h] [bp-18h]@3 int v19; // [sp+24h] [bp-14h]@3 int v20; // [sp+28h] [bp-10h]@1 int v21; // [sp+34h] [bp-4h]@1 signed int v22; // [sp+50h] [bp+18h]@7 v6 = this; v20 = (int)"RadianMoveTrack::rmt_MakePath"; sub_4675D0((int)&unk_D020420, (int)"RadianMoveTrack::rmt_MakePath"); dword_7508B8[dword_750CB8] = (int)"RadianMoveTrack::rmt_MakePath"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; if ( a6 <= 30 ) { v8 = *(_DWORD *)(a3 + 4); v16 = *(_DWORD *)a3; v17 = v8; v18 = v16; v19 = v8; sub_45F830((int)&v18, -a4); sub_45F830((int)&v16, -a5); v9 = *((_DWORD *)v6 + 1); v10 = v17 + *((_DWORD *)v6 + 2); v15 = v19 + *((_DWORD *)v6 + 2); v11 = v9; v12 = v16 + v9; v13 = v18 + v11; v18 = v12; v19 = v10; if ( (unsigned int)(a5 - a4 + 19) > 0x26 ) { v22 = a6 + 1; v14 = sub_45FB70(v6, a2, a3, a4, (a4 + a5) / 2, v22) && sub_45FB70(v6, a2, a3, (a4 + a5) / 2, a5, v22); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"RadianMoveTrack::rmt_MakePath"); result = v14; } else { if ( sub_45F970(*(void **)v6, v13, v15, v12, v10) ) { sub_5F1770(a2, (unsigned int)&v18); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"RadianMoveTrack::rmt_MakePath"); result = 1; } else { --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"RadianMoveTrack::rmt_MakePath"); result = 0; } } } else { --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"RadianMoveTrack::rmt_MakePath"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045FD70) -------------------------------------------------------- char __thiscall sub_45FD70(void *this, int a2) { void *v2; // esi@1 bool v3; // zf@1 int v4; // ebx@3 char v5; // al@3 unsigned int v6; // ecx@3 int v7; // ecx@7 int v8; // edi@7 int v9; // edx@11 int v11; // [sp-4h] [bp-30h]@2 int v12; // [sp+10h] [bp-1Ch]@11 int v13; // [sp+14h] [bp-18h]@11 int v14; // [sp+18h] [bp-14h]@1 int v15; // [sp+1Ch] [bp-10h]@3 int v16; // [sp+28h] [bp-4h]@1 v2 = this; v14 = (int)"RadianMoveTrack::rmt_Calculate"; sub_4675D0((int)&unk_D020420, (int)"RadianMoveTrack::rmt_Calculate"); dword_7508B8[dword_750CB8] = (int)"RadianMoveTrack::rmt_Calculate"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2 == 0; v16 = 0; if ( !v3 ) { v4 = *(_DWORD *)((char *)v2 + 13) - *((_DWORD *)v2 + 1); v5 = sub_401220( &unk_AF09DA8, *(_DWORD *)((char *)v2 + 13) - *((_DWORD *)v2 + 1), *(_DWORD *)((char *)v2 + 17) - *((_DWORD *)v2 + 2)); v6 = *((_BYTE *)v2 + 12) + 90; v15 = (unsigned __int8)v5; if ( (signed int)v6 >= 180 ) v6 %= 0xB4u; if ( (v6 & 0x80000000u) != 0 ) v6 += 180 * (-1 - v6) / 0xB4 + 180; v7 = v6 - v15; v8 = v7; if ( v7 < 0 ) v8 = v7 + 180 * (-1 - v7) / 0xB4u + 180; if ( v8 >= 180 ) v8 %= 0xB4u; v9 = *(_DWORD *)((char *)v2 + 17) - *((_DWORD *)v2 + 2); v12 = v4; v13 = v9; sub_45FAE0(a2, 0); if ( v8 >= 90 ) { if ( sub_45FB70(v2, a2, (int)&v12, 0, v8 - 180, 0) ) goto LABEL_15; sub_45FAE0(a2, 0); } else { if ( sub_45FB70(v2, a2, (int)&v12, 0, v8, 0) ) goto LABEL_15; sub_45FAE0(a2, 0); v8 -= 180; } if ( !sub_45FB70(v2, a2, (int)&v12, 0, v8, 0) ) { sub_45FAE0(a2, 0); --dword_750CB8; v16 = -1; v11 = (int)"RadianMoveTrack::rmt_Calculate"; goto LABEL_19; } LABEL_15: --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"RadianMoveTrack::rmt_Calculate"); return 1; } --dword_750CB8; v16 = -1; v11 = (int)"RadianMoveTrack::rmt_Calculate"; LABEL_19: sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0045FF90) -------------------------------------------------------- int __thiscall sub_45FF90(void *this, __int16 a2, __int16 a3) { void *v3; // edi@1 signed int v4; // ecx@1 int v5; // esi@1 int v6; // eax@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"DropItemAnalyzer::dia_Set"); dword_7508B8[dword_750CB8] = (int)"DropItemAnalyzer::dia_Set"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; v5 = (int)((char *)v3 + 3000 * (unsigned __int8)a2 + 4); while ( 1 ) { if ( *(_WORD *)(v5 - 4) == a2 && *(_WORD *)(v5 - 2) == a3 ) { ++*((_WORD *)v3 + 3 * (v4 + 500 * (unsigned __int8)a2) + 2); 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)a2)); *(_WORD *)v6 = a2; *(_WORD *)(v6 + 2) = a3; *(_WORD *)(v6 + 4) = 1; LABEL_9: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"DropItemAnalyzer::dia_Set"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460090) -------------------------------------------------------- int __thiscall sub_460090(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 8) = 0; return result; } //----- (004600B0) -------------------------------------------------------- int __thiscall sub_4600B0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 v2 = this; if ( *(_DWORD *)(this + 8) ) operator delete(*(void **)(this + 8)); *(_DWORD *)v2 = a2; *(_DWORD *)(v2 + 8) = unknown_libname_130(8 * a2 | -((unsigned __int64)a2 >> 29 != 0)); for ( result = 0; result < *(_DWORD *)v2; ++result ) { *(_DWORD *)(*(_DWORD *)(v2 + 8) + 8 * result + 4) = 0; *(_DWORD *)(*(_DWORD *)(v2 + 8) + 8 * result) = 0; } *(_DWORD *)(v2 + 4) = 0; return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00460110) -------------------------------------------------------- int __thiscall sub_460110(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // edi@1 int v5; // eax@2 int v6; // ST14_4@2 int v7; // eax@2 int v8; // ebx@2 int v9; // eax@2 int v10; // ST14_4@2 int v11; // eax@2 int v12; // eax@2 int v13; // ecx@2 int result; // eax@2 int v15; // [sp+Ch] [bp-4h]@2 v3 = this; v4 = 0; do { v5 = sub_576EB0(v4); v6 = a2 * sub_576E40(&unk_132546E8, v5) / 1024; v7 = sub_576EB0(v4); v8 = v6 + a3 * sub_576E10(&unk_132546E8, v7) / 1024; v9 = sub_576EB0(v4); v10 = a2 * sub_576E10(&unk_132546E8, v9) / 1024; v11 = sub_576EB0(v4); v12 = sub_576E40(&unk_132546E8, v11); v13 = *((_DWORD *)v3 + 1); result = a3 * v12 / 1024 - v10; v15 = result; if ( v13 >= *(_DWORD *)v3 ) { sub_639100(&unk_86DDD8, (int)"DropLoc::SameDistanceCluster::sdc_Setdelta : Buffer overflow", v13); loc_6391B0("DropLoc::SameDistanceCluster::sdc_Setdelta"); result = v15; } *(_DWORD *)(*((_DWORD *)v3 + 2) + 8 * *((_DWORD *)v3 + 1)) = v8; *(_DWORD *)(*((_DWORD *)v3 + 2) + 8 * (*((_DWORD *)v3 + 1))++ + 4) = result; v4 += 60; } while ( v4 < 360 ); return result; } //----- (00460230) -------------------------------------------------------- char __thiscall sub_460230(int this, int a2, int a3, int a4) { char result; // al@2 int v5; // esi@3 int v6; // eax@3 int v7; // ecx@3 int v8; // eax@5 if ( a2 < *(_DWORD *)(this + 4) ) { v5 = *(_DWORD *)(this + 8) + 8 * a2; v6 = a4 * *(_DWORD *)(v5 + 4) / 1024; v7 = *(_DWORD *)a3 + a4 * *(_DWORD *)v5 / 1024; if ( v7 ) *(_DWORD *)a3 = v7; v8 = *(_DWORD *)(a3 + 4) + v6; if ( v8 ) *(_DWORD *)(a3 + 4) = v8; result = 1; } else { sub_639100(&unk_86DDD8, (int)"DropLoc::SameDistanceCluster::sdc_Getdelta", a2); result = 0; } return result; } //----- (004602A0) -------------------------------------------------------- int __thiscall sub_4602A0(void *this) { int v1; // ebx@1 int v2; // esi@3 int i; // eax@6 int v4; // esi@9 unsigned int v5; // edi@10 int j; // eax@12 signed int v7; // edx@14 int v8; // ebx@14 unsigned int v10; // [sp+14h] [bp-14h]@9 signed int v11; // [sp+18h] [bp-10h]@3 int v12; // [sp+18h] [bp-10h]@15 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"DropLocationManager::dlm_Load"); dword_7508B8[dword_750CB8] = (int)"DropLocationManager::dlm_Load"; dword_750AB8[dword_750CB8++] = -1; sub_4600B0(v1, 1u); if ( *(_DWORD *)(v1 + 4) >= *(_DWORD *)v1 ) { sub_639100(&unk_86DDD8, (int)"DropLoc::SameDistanceCluster::sdc_Setdelta : Buffer overflow", *(_DWORD *)(v1 + 4)); loc_6391B0("DropLoc::SameDistanceCluster::sdc_Setdelta"); } *(_DWORD *)(*(_DWORD *)(v1 + 8) + 8 * *(_DWORD *)(v1 + 4)) = 0; *(_DWORD *)(*(_DWORD *)(v1 + 8) + 8 * (*(_DWORD *)(v1 + 4))++ + 4) = 0; v11 = 1; v2 = v1 + 12; do { if ( *(_DWORD *)(v2 + 8) ) operator delete(*(void **)(v2 + 8)); *(_DWORD *)v2 = 6; *(_DWORD *)(v2 + 8) = unknown_libname_130(48); for ( i = 0; i < *(_DWORD *)v2; ++i ) { *(_DWORD *)(*(_DWORD *)(v2 + 8) + 8 * i + 4) = 0; *(_DWORD *)(*(_DWORD *)(v2 + 8) + 8 * i) = 0; } *(_DWORD *)(v2 + 4) = 0; sub_460110((void *)v2, (v11 + 1) / 2 << 10, 0); v2 += 24; v11 += 2; } while ( (unsigned int)v11 < 0x20 ); v10 = 2; v4 = v1 + 24; do { v5 = v10 >> 1; if ( *(_DWORD *)(v4 + 8) ) operator delete(*(void **)(v4 + 8)); *(_DWORD *)v4 = 6 * (v10 >> 1); *(_DWORD *)(v4 + 8) = unknown_libname_130(48 * (v10 >> 1) | -((unsigned __int64)(6 * (v10 >> 1)) >> 29 != 0)); for ( j = 0; j < *(_DWORD *)v4; ++j ) { *(_DWORD *)(*(_DWORD *)(v4 + 8) + 8 * j + 4) = 0; *(_DWORD *)(*(_DWORD *)(v4 + 8) + 8 * j) = 0; } *(_DWORD *)(v4 + 4) = 0; v7 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(17408 * (v5 + 1))) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( (signed int)v5 > 0 ) { v12 = (signed int)(1024 - (v5 << 10)) / 2; do { sub_460110((void *)v4, v12, v8); v12 += 1024; --v5; } while ( v5 ); } v4 += 24; v10 += 2; } while ( v10 < 0x20 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"DropLocationManager::dlm_Load"); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004604D0) -------------------------------------------------------- int __thiscall sub_4604D0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"DropLocationManager::dlm_home"); dword_7508B8[dword_750CB8] = (int)"DropLocationManager::dlm_home"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 96) = a2; *((_DWORD *)v2 + 97) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"DropLocationManager::dlm_home"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460540) -------------------------------------------------------- char __thiscall sub_460540(void *this) { void *v1; // esi@1 int v2; // eax@1 char result; // al@2 int v4; // eax@3 int v5; // edx@4 int v6; // eax@4 int v7; // esi@4 int v8; // ecx@4 int v9; // eax@4 int v10; // edx@4 int v11; // edi@4 int v12; // esi@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"DropLocationManager::dlm_next"); dword_7508B8[dword_750CB8] = (int)"DropLocationManager::dlm_next"; dword_750AB8[dword_750CB8++] = -1; ++*((_DWORD *)v1 + 97); v2 = *((_DWORD *)v1 + 96); if ( *((_DWORD *)v1 + 97) >= *((_DWORD *)v1 + 3 * v2 + 1) ) { v4 = v2 + 1; *((_DWORD *)v1 + 97) = 0; *((_DWORD *)v1 + 96) = v4; if ( (unsigned int)v4 >= 0x20 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"DropLocationManager::dlm_next"); result = 0; } else { v5 = 3 * v4; v6 = *((_DWORD *)v1 + 3 * v4 + 1); v7 = (int)((char *)v1 + 4 * v5); v8 = (unsigned __int16)sub_427920(&unk_14D42DC0, v6); v9 = *(_DWORD *)(v7 + 8); v10 = *(_DWORD *)v9; v11 = *(_DWORD *)(v9 + 4); *(_DWORD *)v9 = *(_DWORD *)(v9 + 8 * v8); *(_DWORD *)(v9 + 4) = *(_DWORD *)(v9 + 8 * v8 + 4); v12 = *(_DWORD *)(v7 + 8); *(_DWORD *)(v12 + 8 * v8) = v10; *(_DWORD *)(v12 + 8 * v8 + 4) = v11; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"DropLocationManager::dlm_next"); result = 1; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"DropLocationManager::dlm_next"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460690) -------------------------------------------------------- char __thiscall sub_460690(void *this, unsigned __int16 a2) { void *v2; // esi@1 int v3; // esi@1 int v4; // ecx@1 signed int v5; // edx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"DuplicatedMenuControl::dmc_CanMenuOpen"); dword_7508B8[dword_750CB8] = (int)"DuplicatedMenuControl::dmc_CanMenuOpen"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)v2; v4 = 0; v5 = 0; while ( (v3 & (1 << v4)) <= 0 || *(&byte_750690[a2] + v5) ) { v5 += 7; ++v4; if ( v5 >= 49 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"DuplicatedMenuControl::dmc_CanMenuOpen"); return 1; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"DuplicatedMenuControl::dmc_CanMenuOpen"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460790) -------------------------------------------------------- char __thiscall sub_460790(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_Next"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_Next"; dword_750AB8[dword_750CB8++] = -1; while ( 1 ) { ++*(_DWORD *)a2; if ( *(_DWORD *)a2 >= 30 ) break; if ( *((_DWORD *)v2 + *(_DWORD *)a2) != -1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_Next"); return 1; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_Next"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460860) -------------------------------------------------------- int __thiscall sub_460860(void *this, signed int *a2, int a3) { void *v3; // esi@1 signed int v4; // eax@1 int v5; // esi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_GetColumn"; dword_750AB8[dword_750CB8++] = -1; v4 = *a2; if ( *a2 < 0 || v4 >= 30 ) { *(_DWORD *)a3 = 0; v5 = *(_DWORD *)v3; } else { *(_DWORD *)a3 = v4; v5 = *((_DWORD *)v3 + *a2); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460910) -------------------------------------------------------- signed int __thiscall sub_460910(void *this, signed int a2, int a3) { void *v3; // ebx@1 int v4; // esi@1 int v6; // edi@5 signed int v7; // esi@5 int v8; // [sp+18h] [bp-14h]@1 signed int v9; // [sp+1Ch] [bp-10h]@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_EquipLocation"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_EquipLocation"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v8 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(a2 + 182)); if ( !v8 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_EquipLocation"); return 0; } v9 = 0; a2 = -1; if ( !sub_460790(v3, (int)&a2) ) { LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_EquipLocation"); return v9; } while ( 1 ) { sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_GetColumn"; dword_750AB8[dword_750CB8++] = v4; if ( (unsigned int)a2 > 0x1D ) { v6 = *(_DWORD *)v3; v7 = 0; } else { v6 = *((_DWORD *)v3 + a2); v7 = a2; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); if ( *(_BYTE *)(v6 + v8) != 1 ) goto LABEL_11; if ( *(_WORD *)((**(int (__stdcall ***)(_DWORD))a3)(v7) + 8) == -1 ) break; if ( !v9 ) v9 = v7; LABEL_11: v4 = -1; if ( !sub_460790(v3, (int)&a2) ) goto LABEL_12; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_EquipLocation"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460AE0) -------------------------------------------------------- int __thiscall sub_460AE0(void *this, signed int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int v7; // edi@1 int v8; // ebx@4 signed int v9; // esi@5 int v10; // eax@5 signed int v11; // edi@9 int v12; // esi@9 int v13; // eax@12 int v14; // ecx@13 int v16; // [sp-4h] [bp-30h]@2 int v17; // [sp+18h] [bp-14h]@1 void *v18; // [sp+1Ch] [bp-10h]@1 v6 = this; v18 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_ConflictWithNewEquip"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_ConflictWithNewEquip"; v7 = -1; dword_750AB8[dword_750CB8++] = -1; v17 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(a2 + 182)); if ( v17 ) { a2 = -1; if ( sub_460790(v6, (int)&a2) ) { v8 = a4; do { v9 = a2; v10 = 0; if ( *(_DWORD *)v8 <= 0 ) { LABEL_8: sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_GetColumn"; dword_750AB8[dword_750CB8++] = v7; if ( (unsigned int)v9 > 0x1D ) { v12 = *(_DWORD *)v18; v11 = 0; } else { v11 = v9; v12 = *((_DWORD *)v18 + v9); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); if ( *(_BYTE *)(v12 + v17) == 2 ) { v13 = (**(int (__stdcall ***)(_DWORD))a5)(v11); if ( *(_WORD *)(v13 + 8) != -1 ) { v14 = a3; *(_DWORD *)(a3 + 8 * *(_DWORD *)v8) = v11; *(_DWORD *)(v14 + 8 * (*(_DWORD *)v8)++ + 4) = v13; } } v7 = -1; } else { while ( *(_DWORD *)(a3 + 8 * v10) != a2 ) { ++v10; if ( v10 >= *(_DWORD *)v8 ) goto LABEL_8; } } } while ( sub_460790(v18, (int)&a2) ); } v16 = (int)"EquipEnumChanger::eec_ConflictWithNewEquip"; } else { v16 = (int)"EquipEnumChanger::eec_ConflictWithNewEquip"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460C80) -------------------------------------------------------- int __thiscall sub_460C80(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 signed int v7; // edi@1 signed int v8; // ebx@1 int v9; // esi@2 unsigned int v10; // edi@3 int v11; // eax@3 int v12; // eax@8 int v13; // ebx@8 int v14; // eax@8 int v15; // ecx@10 int v16; // ecx@11 int v17; // ecx@12 int v18; // eax@13 int v19; // eax@14 int v21; // [sp+1Ch] [bp-18h]@10 void *v22; // [sp+20h] [bp-14h]@1 unsigned int v23; // [sp+24h] [bp-10h]@1 int v24; // [sp+30h] [bp-4h]@1 int v25; // [sp+40h] [bp+Ch]@9 v6 = this; v22 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_ConflictWithOldEquip"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_ConflictWithOldEquip"; v7 = -1; v8 = 1; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v23 = -1; if ( !sub_460790(v6, (int)&v23) ) { LABEL_21: dword_750CB8 -= v8; v24 = v7; return sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_ConflictWithOldEquip"); } v9 = a3; while ( 1 ) { v10 = v23; v11 = 0; if ( *(_DWORD *)v9 > 0 ) { while ( *(_DWORD *)(a2 + 8 * v11) != v23 ) { v11 += v8; if ( v11 >= *(_DWORD *)v9 ) goto LABEL_6; } goto LABEL_19; } LABEL_6: sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_GetColumn"; dword_750AB8[dword_750CB8] = -1; dword_750CB8 += v8; dword_750CB8 -= v8; LOBYTE(v24) = 0; if ( v10 > 0x1D ) v10 = 0; sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetColumn"); v12 = (**(int (__stdcall ***)(_DWORD))a4)(v10); v13 = v12; v14 = *(_WORD *)(v12 + 8); if ( (_WORD)v14 == -1 ) goto LABEL_19; v25 = v14; v14 = (unsigned __int16)v14; if ( (unsigned __int16)v14 >= (unsigned int)dword_14D20894 || (v15 = dword_14D21184 + 40 * v14, (v21 = v15) == 0) || (v16 = *(_DWORD *)v15) == 0 ) goto LABEL_24; v17 = *(_WORD *)v16; if ( (_WORD)v17 != (_WORD)v25 ) break; v18 = *(_DWORD *)(v21 + 4); if ( !v18 ) goto LABEL_17; v19 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(v18 + 182)); if ( !v19 ) { *(_DWORD *)(a2 + 8 * *(_DWORD *)v9) = v10; *(_DWORD *)(a2 + 8 * *(_DWORD *)v9 + 4) = v13; LABEL_18: ++*(_DWORD *)v9; goto LABEL_19; } if ( *(_BYTE *)(v19 + *((_DWORD *)v22 + a5)) == 2 ) { LABEL_17: *(_DWORD *)(a2 + 8 * *(_DWORD *)v9) = v10; *(_DWORD *)(a2 + 8 * *(_DWORD *)v9 + 4) = v13; goto LABEL_18; } LABEL_19: v8 = 1; if ( !sub_460790(v22, (int)&v23) ) { v7 = -1; goto LABEL_21; } } sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v14); LABEL_24: --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"EquipEnumChanger::eec_ConflictWithOldEquip"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00460EB0) -------------------------------------------------------- int __thiscall sub_460EB0(void *this, int a2, signed int a3, int a4) { void *v4; // esi@1 signed int v5; // edi@3 int v6; // ebx@5 int v8; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_GetEquipSlotList"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_GetEquipSlotList"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && (v5 = a3) != 0 && a4 ) { v6 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(a4 + 182)); if ( v6 ) { a4 = 0; a3 = -1; while ( sub_460790(v4, (int)&a3) == 1 ) { if ( *(_BYTE *)(sub_460860(v4, &a3, (int)&a4) + v6) == 2 ) *(_DWORD *)(a2 + 4 * (*(_DWORD *)v5)++) = a4; } } --dword_750CB8; v8 = (int)"EquipEnumChanger::eec_GetEquipSlotList"; } else { --dword_750CB8; v8 = (int)"EquipEnumChanger::eec_GetEquipSlotList"; } return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00460FE0) -------------------------------------------------------- int __thiscall sub_460FE0(void *this, void *a2, signed int a3, int a4, int a5) { void *v5; // edi@1 signed int v6; // ebx@3 int v7; // esi@4 int v8; // eax@8 int v9; // eax@11 int v10; // edi@12 int v12; // [sp-4h] [bp-28h]@2 void *v13; // [sp+14h] [bp-10h]@1 v5 = this; v13 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_ConflictWithNewViewSlot"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_ConflictWithNewViewSlot"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && (v6 = a3) != 0 ) { v7 = a4; if ( a4 ) { if ( a5 ) { a5 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(a5 + 182)); if ( a5 ) { a4 = 0; a3 = -1; while ( sub_460790(v5, (int)&a3) == 1 ) { v8 = 0; if ( *(_DWORD *)v7 <= 0 ) { LABEL_11: v9 = sub_460860(v5, &a3, (int)&a4); if ( *(_BYTE *)(v9 + a5) == 2 ) { v10 = a4; if ( sub_640100(a2, a4) != -1 ) *(_DWORD *)(v6 + 4 * (*(_DWORD *)v7)++) = v10; v5 = v13; } } else { while ( *(_DWORD *)(v6 + 4 * v8) != a3 ) { ++v8; if ( v8 >= *(_DWORD *)v7 ) goto LABEL_11; } } } } } } --dword_750CB8; v12 = (int)"EquipEnumChanger::eec_ConflictWithNewViewSlot"; } else { --dword_750CB8; v12 = (int)"EquipEnumChanger::eec_ConflictWithNewViewSlot"; } return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00461160) -------------------------------------------------------- int __thiscall sub_461160(void *this, void *a2, int a3, int a4, int a5) { void *v5; // ebx@1 int v6; // edi@3 int v7; // esi@4 int v8; // eax@6 signed __int16 v9; // ax@9 signed __int16 v10; // dx@9 int v11; // edi@11 int v12; // ecx@13 int v13; // eax@13 int v14; // edi@14 int v15; // eax@16 int v17; // [sp-4h] [bp-2Ch]@2 void *v18; // [sp+14h] [bp-14h]@1 int v19; // [sp+18h] [bp-10h]@5 int v20; // [sp+24h] [bp-4h]@1 v5 = this; v18 = this; sub_4675D0((int)&unk_D020420, (int)"EquipEnumChanger::eec_ConflictWithOldViewSlot"); dword_7508B8[dword_750CB8] = (int)"EquipEnumChanger::eec_ConflictWithOldViewSlot"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( a2 && (v6 = a3) != 0 ) { v7 = a4; if ( a4 ) { a4 = 0; v19 = -1; while ( sub_460790(v5, (int)&v19) == 1 ) { v8 = 0; if ( *(_DWORD *)v7 > 0 ) { while ( *(_DWORD *)(v6 + 4 * v8) != v19 ) { ++v8; if ( v8 >= *(_DWORD *)v7 ) goto LABEL_9; } continue; } LABEL_9: sub_460860(v5, &v19, (int)&a4); v9 = sub_640100(a2, a4); v10 = v9; if ( v9 != -1 ) { if ( (unsigned __int16)v9 >= (unsigned int)dword_14D20894 || (v11 = dword_14D21184 + 40 * (unsigned __int16)v9) == 0 || !*(_DWORD *)v11 ) break; v12 = **(_WORD **)v11; v13 = v12 + 10000 * (unsigned __int16)v9; if ( !((_WORD)v12 == v10) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v13); break; } v14 = *(_DWORD *)(v11 + 4); if ( !v14 ) { v6 = a3; v5 = v18; *(_DWORD *)(a3 + 4 * *(_DWORD *)v7) = a4; LABEL_20: ++*(_DWORD *)v7; continue; } v15 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(v14 + 182)); v5 = v18; v6 = a3; if ( !v15 ) { *(_DWORD *)(a3 + 4 * *(_DWORD *)v7) = a4; goto LABEL_20; } if ( *(_BYTE *)(v15 + *((_DWORD *)v18 + a5)) == 2 ) { *(_DWORD *)(a3 + 4 * *(_DWORD *)v7) = a4; goto LABEL_20; } } } } --dword_750CB8; v20 = -1; v17 = (int)"EquipEnumChanger::eec_ConflictWithOldViewSlot"; } else { --dword_750CB8; v20 = -1; v17 = (int)"EquipEnumChanger::eec_ConflictWithOldViewSlot"; } return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00461350) -------------------------------------------------------- bool __thiscall sub_461350(void *this, int a2, int a3) { void *v3; // edi@1 bool result; // al@2 int v5; // esi@4 v3 = this; if ( a2 && (unsigned int)(a3 - 1) <= 0x1C ) { v5 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(a2 + 182)); if ( v5 ) result = *(_BYTE *)(sub_460860(v3, &a3, (int)&a2) + v5) == 1; else result = 0; } else { result = 0; } return result; } //----- (004613B0) -------------------------------------------------------- bool __thiscall sub_4613B0(int this, const void *a2, int a3) { bool v3; // bl@1 const void *v4; // eax@2 char v5; // cl@3 char *v6; // edi@4 char v7; // al@5 unsigned int v8; // eax@6 void *v9; // edi@6 char v10; // cl@7 char v12; // [sp+7h] [bp-205h]@4 char v13[512]; // [sp+8h] [bp-204h]@3 unsigned int v14; // [sp+208h] [bp-4h]@1 int v15; // [sp+20Ch] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v3 = sub_5D4FF0(this, a2, a3); if ( !v3 ) { v4 = a2; do { v5 = *(_BYTE *)v4; *((_BYTE *)v4 + v13 - a2) = *(_BYTE *)v4; v4 = (char *)v4 + 1; } while ( v5 ); v6 = &v12; do v7 = (v6++)[1]; while ( v7 ); *(_WORD *)v6 = word_6B0394; v8 = strlen((const char *)&unk_14D409E0) + 1; v9 = &v12; do { v10 = *((_BYTE *)v9 + 1); v9 = (char *)v9 + 1; } while ( v10 ); memcpy(v9, &unk_14D409E0, v8); sub_6390B0(&unk_86DDD8, (int)"LuaScriptScenario::lss_FuncExec : function call error", (int)v13); sub_5D34F0(&unk_87B218, (int)"function call error", (int)v13); } return v3; } // 6B0394: using guessed type __int16 word_6B0394; // 86FEB8: using guessed type int __security_cookie; // 4613B0: using guessed type char var_204[512]; //----- (00461480) -------------------------------------------------------- int __thiscall sub_461480(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 504) = a2; return result; } //----- (00461490) -------------------------------------------------------- void __thiscall sub_461490(void *this) { *(_DWORD *)this = &off_6B039C; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); //----- (004614A0) -------------------------------------------------------- int __thiscall sub_4614A0(int this, int a2) { int v2; // esi@1 signed int v3; // ecx@3 int v4; // edi@3 int v5; // eax@3 int result; // eax@3 v2 = this; if ( !*(_DWORD *)(this + 12) ) { *(_DWORD *)(this + 4) = 1; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 1; } v3 = *(_DWORD *)(this + 12); v4 = a2 * *(_DWORD *)(v2 + 4) / v3; v5 = a2 * *(_DWORD *)(v2 + 8) / v3; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v5; result = sub_4011C0(&unk_AF09DA8, v4, v5); *(_DWORD *)(v2 + 12) = result; return result; } //----- (00461500) -------------------------------------------------------- char *__thiscall sub_461500(char *this, const char *a2, char *a3) { char *result; // eax@1 char *v4; // edx@1 char v5; // bl@2 result = strcpy(this, a2); v4 = a3; do { v5 = *v4; v4[this + 64 - a3] = *v4; ++v4; } while ( v5 ); return result; } //----- (00461540) -------------------------------------------------------- int __thiscall sub_461540(int this) { int v1; // eax@1 char v2; // dl@2 int result; // eax@3 v1 = this; *(_BYTE *)(this + 128) = 45; do v2 = *(_BYTE *)v1++; while ( v2 ); result = v1 - (this + 1) - 1; *(_DWORD *)(this + 192) = result; return result; } //----- (00461570) -------------------------------------------------------- char *__thiscall sub_461570(void *this) { return (char *)this + 128; } //----- (00461580) -------------------------------------------------------- char __thiscall sub_461580(int this) { int v1; // eax@2 char v2; // cl@3 char result; // al@4 int v4; // eax@6 if ( *(_BYTE *)(this + 128) == 45 ) { v1 = this; do { v2 = *(_BYTE *)v1; *(_BYTE *)(v1 + 128) = *(_BYTE *)v1; ++v1; } while ( v2 ); result = 1; } else { if ( strcmp((const char *)(this + 128), (const char *)(this + 64)) && (v4 = *(_DWORD *)(this + 192), v4 >= 0) ) { while ( *(_BYTE *)(this + v4 + 128) >= 57 ) { --v4; *(_BYTE *)(this + v4 + 129) = 48; if ( v4 < 0 ) goto LABEL_9; } ++*(_BYTE *)(v4 + this + 128); result = 1; } else { LABEL_9: result = 0; } } return result; } //----- (00461610) -------------------------------------------------------- signed int __thiscall sub_461610(int this, int a2, int a3, int a4) { int v4; // edx@1 v4 = a4 + 14 * *(_WORD *)a4 + 3; *(_DWORD *)v4 = *(_DWORD *)this; *(_DWORD *)(v4 + 4) = *(_DWORD *)(this + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(this + 8); *(_BYTE *)(a4 + 14 * *(_WORD *)a4 + 2) = *(_BYTE *)(*(_DWORD *)(this + 12) + 166); *(_BYTE *)(a4 + 14 * (*(_WORD *)a4)++ + 15) = *(_BYTE *)(*(_DWORD *)(this + 12) + 166) == 0; return 1; } //----- (00461680) -------------------------------------------------------- int __thiscall sub_461680(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 24) >> 1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(this + 28) >> 1; return result; } //----- (004616A0) -------------------------------------------------------- bool __thiscall sub_4616A0(int this, int a2, int a3) { return a2 >= 0 && a2 < *(_DWORD *)(this + 24) && a3 >= 0 && a3 < *(_DWORD *)(this + 28); } //----- (004616E0) -------------------------------------------------------- char __thiscall sub_4616E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@2 v4 = this; if ( a3 ) { v5 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1232))() - 2; if ( v5 ) { if ( v5 == 3 ) { ++**((_DWORD **)v4 + 2); return 1; } } else { ++**((_DWORD **)v4 + 1); } } return 1; } //----- (00461720) -------------------------------------------------------- char __thiscall sub_461720(int this, int a2) { int v2; // eax@1 int v3; // ebx@1 int v5; // edi@3 int v6; // esi@4 char v7[4]; // [sp+4h] [bp-10h]@5 int v8; // [sp+8h] [bp-Ch]@5 int v9; // [sp+Ch] [bp-8h]@5 unsigned int v10; // [sp+10h] [bp-4h]@1 int v11; // [sp+14h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = 0; v3 = this; if ( !a2 ) return 0; v5 = 0; if ( *(_DWORD *)(this + 331912) <= 0 ) return 0; while ( 1 ) { v6 = *(_DWORD *)(*(_DWORD *)(v3 + 331908) + 4 * v5); if ( v6 != v2 ) break; LABEL_9: ++v5; if ( v5 >= *(_DWORD *)(v3 + 331912) ) return 0; } v9 = v2; v8 = v2; *(_DWORD *)v7 = v2; strncpy(v7, (const char *)v6, 0xCu); if ( *(_DWORD *)v7 != *(_DWORD *)a2 || v8 != *(_DWORD *)(a2 + 4) || v9 != *(_DWORD *)(a2 + 8) ) { v2 = 0; goto LABEL_9; } return *(_BYTE *)(v6 + 13); } // 86FEB8: using guessed type int __security_cookie; //----- (004617E0) -------------------------------------------------------- signed int __userpurge sub_4617E0(int a1, int a2, int a3, unsigned __int16 a4, unsigned __int16 a5) { signed int result; // eax@2 int v6; // edi@5 int v7; // ebx@6 unsigned __int8 v8; // bl@8 int v9; // esi@9 unsigned __int8 v10; // [sp+13h] [bp+Bh]@8 if ( !a2 ) return 1; if ( !a3 ) return 1; v6 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 3188))(a2, a1); if ( v6 ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3240))(v6); if ( v7 != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2) ) return 1; v8 = 0; v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3288))(v6); if ( v10 ) { while ( 1 ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3292))(v6); if ( v9 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1240))(v9) < a4 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1240))(v9) > a5 ) goto LABEL_18; if ( !*(_BYTE *)(a3 + 96) && (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1360))(v9) != -1 ) goto LABEL_21; } ++v8; if ( v8 >= v10 ) return 0; } } return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) >= a4 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) <= a5 ) { if ( *(_BYTE *)(a3 + 96) || (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1360))(a2) == -1 ) return 0; LABEL_21: result = 3; } else { LABEL_18: result = 2; } return result; } //----- (00461940) -------------------------------------------------------- int __userpurge sub_461940(int a1, int a2, int a3) { int v3; // esi@1 int result; // eax@2 int v5; // edi@3 int v6; // ebx@5 int v7; // esi@9 int v8; // edi@10 int v9; // ebx@18 unsigned __int8 v10; // [sp+4h] [bp-4h]@8 int v11; // [sp+10h] [bp+8h]@6 unsigned __int8 v12; // [sp+13h] [bp+Bh]@8 v3 = a2; if ( !a2 ) return a2 + 1; v5 = a3; if ( !a3 ) return a3 + 1; v6 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 3188))(a2, a1); if ( v6 ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3240))(v6); if ( v11 != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) ) return 1; v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3288))(v6); v10 = 0; if ( v12 ) { while ( 1 ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3292))(v6); if ( v7 ) { v8 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v5 + 20), 0); if ( v8 && ((unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1240))(v7) < *(_WORD *)(v8 + 34) || (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1240))(v7) > *(_WORD *)(v8 + 36)) ) goto LABEL_21; if ( !*(_BYTE *)(a3 + 96) && (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1360))(v7) != -1 ) goto LABEL_24; v5 = a3; } ++v10; if ( v10 >= v12 ) return 0; } } return 0; } v9 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(a3 + 20), 0); if ( v9 && ((unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) < *(_WORD *)(v9 + 34) || (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2) > *(_WORD *)(v9 + 36)) ) { LABEL_21: result = 2; } else { if ( *(_BYTE *)(a3 + 96) || (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1360))(a2) == -1 ) return 0; LABEL_24: result = 3; } return result; } // D020440: using guessed type int dword_D020440; //----- (00461AF0) -------------------------------------------------------- signed int __stdcall sub_461AF0(void *a1, int a2, int a3, int a4) { signed int result; // eax@2 int v5; // edi@5 int v6; // eax@14 int v7; // ecx@14 int v8; // eax@17 int v9; // edx@17 unsigned __int16 v10; // ax@19 int v11; // edx@19 __int16 v12; // ST04_2@23 void *v13; // eax@23 int v14; // eax@23 int v15; // eax@23 __int16 v16; // ax@24 int v17; // eax@25 if ( !a1 ) return 1; if ( !a2 ) return 1; v5 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(a2 + 22), *(_BYTE *)(a2 + 67)); if ( v5 && ((unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1240))(a1) < *(_WORD *)(v5 + 34) || (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1240))(a1) > *(_WORD *)(v5 + 36)) ) return 2; switch ( *(_BYTE *)(a2 + 68) ) { case 2: if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1360))(a1) != -1 && !(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2692))(a1) ) goto LABEL_19; return 4; case 3: if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2692))(a1) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2692))(a1); v7 = a4; *(_DWORD *)a3 = *(_WORD *)(v6 + 4); *(_DWORD *)v7 = 3; goto LABEL_20; } return 5; case 4: if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2692))(a1) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2692))(a1); v9 = a4; *(_DWORD *)a3 = *(_WORD *)(v8 + 4); *(_DWORD *)v9 = 3; } else { if ( -1 == (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1360))(a1) ) return 4; LABEL_19: v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1360))(a1); v11 = a4; *(_DWORD *)a3 = v10; *(_DWORD *)v11 = 0; } LABEL_20: if ( *(_DWORD *)a3 == -1 ) return 1; if ( *(_WORD *)(a2 + 71) ) { if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2056))(a1) || (v12 = *(_WORD *)(a2 + 71), v13 = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2056))(a1), v14 = (int)sub_5CF620(v13), LOBYTE(v15) = sub_62D240(v14, v12), !v15) ) return 4; } v16 = *(_WORD *)(a2 + 109); if ( v16 == -1 || (v17 = sub_587680(a1, v16, (int)&a4)) != 0 && sub_46F910(v17) >= (unsigned int)*(_BYTE *)(a2 + 105) ) result = 0; else result = 6; return result; case 0: case 1: goto LABEL_20; default: return 1; } } // D020440: using guessed type int dword_D020440; //----- (00461D00) -------------------------------------------------------- char __userpurge sub_461D00(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int v6; // edi@4 int v7; // ebx@5 int v8; // ST0C_4@9 int v9; // ST08_4@9 int v10; // eax@9 char *v11; // eax@9 void (__thiscall *v12)(_DWORD, _DWORD); // eax@16 int v13; // ecx@16 const char *v14; // [sp-4h] [bp-114h]@10 char *v15; // [sp-4h] [bp-114h]@15 char v16; // [sp+Ch] [bp-104h]@7 char v17; // [sp+Dh] [bp-103h]@7 unsigned int v18; // [sp+10Ch] [bp-4h]@1 int v19; // [sp+110h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v4 = a4; if ( !a2 || !a4 ) return 0; v6 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 3188))(a2, a1); if ( !v6 ) goto LABEL_7; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3240))(v6); if ( v7 == (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2) ) { v4 = a4; LABEL_7: v16 = 0; memset(&v17, 0, 0xFFu); switch ( a3 ) { case 0: return 1; case 2: v8 = *(_WORD *)(v4 + 2); v9 = *(_WORD *)v4; v10 = sub_48C200(&unk_150A0980, "LevelLimit"); sprintf(&v16, (const char *)v10, v9, v8); v11 = &v16; goto LABEL_15; case 3: v14 = "PartyLimitedField"; break; case 4: v14 = "NeedPartyOrQuest"; break; case 5: v14 = "NeedRaid"; break; case 6: v14 = "NeedItem"; break; default: return 0; } v11 = (char *)sub_48C200(&unk_150A0980, v14); LABEL_15: v15 = v11; if ( v6 ) { v12 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 3296); v13 = v6; } else { v12 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1924); v13 = a2; } v12(v13, v15); } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (00461E60) -------------------------------------------------------- signed int __stdcall sub_461E60(int a1) { signed int result; // eax@2 switch ( a1 ) { case 0: result = 0; break; case 1: case 3: result = 1; break; case 2: result = 2; break; default: result = 3; break; } return result; } //----- (00461EB0) -------------------------------------------------------- int __cdecl sub_461EB0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (00461ED0) -------------------------------------------------------- int __cdecl sub_461ED0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 17); i = *(_DWORD *)i ) result = i; return result; } //----- (00461F10) -------------------------------------------------------- void *__thiscall sub_461F10(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 57, 48) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 57, 57, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00461FB0) -------------------------------------------------------- void *__thiscall sub_461FB0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 103, 48) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 103, 103, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00462050) -------------------------------------------------------- void *__thiscall sub_462050(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B0410; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B0410: using guessed type int (__thiscall *off_6B0410)(void *, char); //----- (004620A0) -------------------------------------------------------- int __thiscall sub_4620A0(int this, int a2, int a3) { int v3; // esi@1 signed int v4; // ST04_4@1 signed int v5; // ST00_4@1 v3 = this; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 4) = a2; v4 = *(_DWORD *)(this + 8); v5 = *(_DWORD *)(this + 4); *(_DWORD *)this = &off_6B039C; *(_DWORD *)(this + 12) = sub_4011C0(&unk_AF09DA8, v5, v4); return v3; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); //----- (004620E0) -------------------------------------------------------- int __thiscall sub_4620E0(int this, int a2, int a3) { int v3; // esi@1 signed int v4; // ST04_4@1 signed int v5; // ST00_4@1 v3 = this; *(_DWORD *)(this + 4) = *(_DWORD *)a2 - *(_DWORD *)a3; *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 4) - *(_DWORD *)(a3 + 4); v4 = *(_DWORD *)(this + 8); v5 = *(_DWORD *)(this + 4); *(_DWORD *)this = &off_6B039C; *(_DWORD *)(this + 12) = sub_4011C0(&unk_AF09DA8, v5, v4); return v3; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); //----- (00462120) -------------------------------------------------------- int __thiscall sub_462120(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@2 int v4; // edi@2 int v5; // ecx@4 unsigned __int16 v6; // ax@4 int v7; // edx@4 unsigned __int16 v8; // bx@5 int v9; // ecx@6 int v10; // eax@6 bool v11; // zf@6 int v12; // eax@6 int v13; // eax@7 unsigned int v14; // ebx@15 unsigned int v15; // edx@15 void **v16; // edi@15 unsigned int v17; // eax@19 int v18; // edi@19 int v19; // ecx@21 unsigned __int16 v20; // ax@21 int v21; // edx@21 unsigned __int16 v22; // bx@22 int v23; // ecx@23 int v24; // eax@23 int v25; // eax@23 int v26; // eax@24 unsigned int v28; // [sp+14h] [bp-14h]@15 unsigned int v29; // [sp+18h] [bp-10h]@15 unsigned int v30; // [sp+30h] [bp+8h]@1 signed int v31; // [sp+30h] [bp+8h]@15 unsigned int v32; // [sp+30h] [bp+8h]@18 v2 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_Relink"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_Relink"; dword_750AB8[dword_750CB8++] = -1; sub_6390B0(&unk_86DDD8, (int)"FieldMap::fm_Relink : Relink", a2); v30 = 0; do { v3 = (unsigned __int16)word_750784[v30]; v4 = dword_1325381C[0]; if ( v3 < 0xD ) v4 = dword_1325381C[v3]; v5 = *(_DWORD *)(v4 + 8); v6 = *(_WORD *)(v5 + 12 * *(_WORD *)(v4 + 14) + 4); v7 = 3 * v6; while ( 1 ) { v8 = *(_WORD *)(v5 + 4 * v7 + 4); if ( v6 >= *(_WORD *)(v4 + 4) ) break; v9 = *(_DWORD *)(v4 + 8); v10 = 3 * v6; v11 = *(_BYTE *)(v9 + 4 * v10 + 8) == 0; v12 = v9 + 4 * v10; if ( v11 ) break; v13 = *(_DWORD *)v12; if ( !v13 ) break; if ( *(void **)(v13 + 122) == v2 ) sub_5523E0((void *)v13); if ( v8 >= *(_WORD *)(v4 + 4) ) break; v7 = 3 * v8; v5 = *(_DWORD *)(v4 + 8); v6 = v8; } v30 += 2; } while ( v30 < 24 ); if ( *((_DWORD *)v2 + 8) && *((_DWORD *)v2 + 9) ) { (*(void (__stdcall **)(_DWORD, _DWORD, void *, _DWORD))(**((_DWORD **)v2 + 8) + 1424))(0, 0, v2, 0); (*(void (__stdcall **)(_UNKNOWN *, _UNKNOWN *, void *, _DWORD))(**((_DWORD **)v2 + 9) + 1424))( &unk_FFFFFF, &unk_FFFFFF, v2, 0); sub_5523E0(*((void **)v2 + 8)); sub_5523E0(*((void **)v2 + 9)); sub_585EE0((void *)(*((_DWORD *)v2 + 8) + 22), (void *)(*((_DWORD *)v2 + 9) + 22)); sub_585EE0((void *)(*((_DWORD *)v2 + 8) + 34), (void *)(*((_DWORD *)v2 + 9) + 34)); v28 = *((_DWORD *)v2 + 6) / 5u; v14 = *((_DWORD *)v2 + 6) / 0xAu; v15 = *((_DWORD *)v2 + 7) / 0xAu - v14; v16 = (void **)((char *)v2 + 40); v29 = *((_DWORD *)v2 + 7) / 0xAu - v14; v31 = 5; while ( 1 ) { (*(void (__stdcall **)(unsigned int, unsigned int, void *, void *))(*(_DWORD *)*v16 + 1424))( v14, v14 + v15, v2, *v16); sub_5523E0(*v16); sub_585A10((char *)*v16 + 22, *((_DWORD *)v2 + 8) + 22); sub_585A10((char *)*v16 + 34, *((_DWORD *)v2 + 8) + 34); v14 += v28; ++v16; --v31; if ( !v31 ) break; v15 = v29; } v32 = 0; do { v17 = (unsigned __int16)word_750784[v32]; v18 = dword_1325381C[0]; if ( v17 < 0xD ) v18 = dword_1325381C[v17]; v19 = *(_DWORD *)(v18 + 8); v20 = *(_WORD *)(v19 + 12 * *(_WORD *)(v18 + 14) + 4); v21 = 3 * v20; while ( 1 ) { v22 = *(_WORD *)(v19 + 4 * v21 + 4); if ( v20 >= *(_WORD *)(v18 + 4) ) break; v23 = *(_DWORD *)(v18 + 8); v24 = 3 * v20; v11 = *(_BYTE *)(v23 + 4 * v24 + 8) == 0; v25 = v23 + 4 * v24; if ( v11 ) break; v26 = *(_DWORD *)v25; if ( !v26 ) break; if ( *(void **)(v26 + 122) == v2 ) sub_452770(v2, v26, 0, 0, 0); if ( v22 >= *(_WORD *)(v18 + 4) ) break; v21 = 3 * v22; v19 = *(_DWORD *)(v18 + 8); v20 = v22; } v32 += 2; } while ( v32 < 24 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_Relink"); } // 750784: using guessed type __int16 word_750784[]; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325381C: using guessed type int dword_1325381C[]; //----- (004623E0) -------------------------------------------------------- int __thiscall sub_4623E0(void *this, const char *a2) { void *v2; // edi@1 unsigned int v3; // edx@1 signed int v4; // eax@1 int v5; // esi@1 int v6; // ecx@2 int v7; // edx@15 int v8; // eax@15 int v9; // ecx@15 int v10; // edx@15 int v11; // ecx@15 int v12; // edx@15 int v13; // ecx@15 int v14; // edx@15 char v16[4]; // [sp+Ch] [bp-24h]@1 int v17; // [sp+10h] [bp-20h]@1 int v18; // [sp+14h] [bp-1Ch]@1 int v19; // [sp+18h] [bp-18h]@1 int v20; // [sp+1Ch] [bp-14h]@1 int v21; // [sp+20h] [bp-10h]@1 int v22; // [sp+24h] [bp-Ch]@1 int v23; // [sp+28h] [bp-8h]@1 unsigned int v24; // [sp+2Ch] [bp-4h]@1 int v25; // [sp+30h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"MapRearrangeObserver::mro_Set"); dword_7508B8[dword_750CB8] = (int)"MapRearrangeObserver::mro_Set"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; *(_DWORD *)v16 = 0; strncpy(v16, a2, 0x20u); v3 = *((_DWORD *)v2 + 1152); v4 = 0; v5 = v23; if ( (signed int)v3 > 0 ) { v6 = (int)((char *)v2 + 8); do { if ( *(_DWORD *)v16 == *(_DWORD *)(v6 - 8) && v17 == *(_DWORD *)(v6 - 4) && v18 == *(_DWORD *)v6 && v19 == *(_DWORD *)(v6 + 4) && v20 == *(_DWORD *)(v6 + 8) && v21 == *(_DWORD *)(v6 + 12) && v22 == *(_DWORD *)(v6 + 16) && v23 == *(_DWORD *)(v6 + 20) ) break; ++v4; v6 += 36; } while ( v4 < (signed int)v3 ); } if ( v4 >= (signed int)v3 ) { if ( v3 < 0x80 ) { *((_DWORD *)v2 + 1152) = v3 + 1; v7 = *(_DWORD *)v16; v8 = (int)((char *)v2 + 36 * v4); v9 = v17; *(_DWORD *)(v8 + 32) = 1; *(_DWORD *)v8 = v7; v10 = v18; *(_DWORD *)(v8 + 4) = v9; v11 = v19; *(_DWORD *)(v8 + 8) = v10; v12 = v20; *(_DWORD *)(v8 + 12) = v11; v13 = v21; *(_DWORD *)(v8 + 16) = v12; v14 = v22; *(_DWORD *)(v8 + 20) = v13; *(_DWORD *)(v8 + 24) = v14; *(_DWORD *)(v8 + 28) = v5; } } else { ++*((_DWORD *)v2 + 9 * v4 + 8); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MapRearrangeObserver::mro_Set"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00462540) -------------------------------------------------------- int __thiscall sub_462540(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ecx@1 int (__stdcall **v7)(int, int, int); // [sp+8h] [bp-1Ch]@1 int v8; // [sp+Ch] [bp-18h]@1 int v9; // [sp+10h] [bp-14h]@1 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v4 = this; v10 = (int)"FieldMap::fm_DistrubuteCalculate"; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_DistrubuteCalculate"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_DistrubuteCalculate"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; sub_427BE0(&v7); v8 = a3; v9 = a4; v7 = &off_6B03BC; *(_DWORD *)a4 = 0; *(_DWORD *)v8 = 0; v5 = (void *)*((_DWORD *)v4 + 12); LOBYTE(v11) = 1; sub_549B60(v5, (int)&v7, 0); *(_DWORD *)a2 = *(_DWORD *)v4; *(_DWORD *)(a2 + 4) = *((_DWORD *)v4 + 1); *(_DWORD *)(a2 + 8) = *((_DWORD *)v4 + 2); LOBYTE(v11) = 0; v7 = &off_6B03BC; sub_427EB0(&v7); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_DistrubuteCalculate"); } // 6B03BC: using guessed type int (__stdcall *off_6B03BC)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462640) -------------------------------------------------------- signed int __thiscall sub_462640(void *this, int a2, int a3, int a4, int a5, int (__fastcall *a6)(_DWORD, _DWORD, _DWORD, _DWORD)) { int v6; // eax@1 signed int result; // eax@2 int v8; // ecx@3 int v9; // edi@3 signed int v10; // esi@3 int v11; // eax@3 int v12; // edi@6 int v13; // ebx@6 int v14; // [sp+24h] [bp-20h]@3 int v15; // [sp+28h] [bp-1Ch]@3 void *v16; // [sp+2Ch] [bp-18h]@1 int v17; // [sp+30h] [bp-14h]@3 int v18; // [sp+34h] [bp-10h]@3 signed int v19; // [sp+4Ch] [bp+8h]@4 signed int v20; // [sp+50h] [bp+Ch]@3 signed int v21; // [sp+54h] [bp+10h]@4 v16 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_FindBlockLocation"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_FindBlockLocation"; dword_750AB8[dword_750CB8++] = -1; v6 = sub_4011C0(&unk_AF09DA8, *(_DWORD *)a2 - *(_DWORD *)a4, *(_DWORD *)(a2 + 4) - *(_DWORD *)(a4 + 4)); if ( v6 <= a3 ) { *(_DWORD *)a5 = *(_DWORD *)a2; *(_DWORD *)(a5 + 4) = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 4); v10 = v6 / 16 + 1; v11 = *(_DWORD *)a4 - *(_DWORD *)a2; v18 = *(_DWORD *)a2; v17 = *(_DWORD *)(a2 + 4); v15 = *(_DWORD *)a4 - *(_DWORD *)a2; v14 = *(_DWORD *)(a4 + 4) - v9; v20 = 1; if ( v10 >= 1 ) { v21 = *(_DWORD *)(a4 + 4) - v9; v19 = v11; while ( 1 ) { v12 = v8 + v19 / v10; v13 = v17 + v21 / v10; if ( (unsigned __int8)a6(*((_DWORD *)v16 + 5), v21 % v10, v12, v17 + v21 / v10) ) break; v19 += v15; v21 += v14; *(_DWORD *)a5 = v12; *(_DWORD *)(a5 + 4) = v13; ++v20; if ( v20 > v10 ) break; v8 = v18; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_FindBlockLocation"); result = v20 < v10; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_FindBlockLocation"); result = 2; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004627E0) -------------------------------------------------------- int __thiscall sub_4627E0(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_GetGuildTournamentSystem"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_GetGuildTournamentSystem"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 42); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GetGuildTournamentSystem"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462840) -------------------------------------------------------- char __thiscall sub_462840(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 char result; // al@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_GuildTournamentEnemy"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_GuildTournamentEnemy"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_4627E0(v3); if ( v4 && sub_4780A0(v4, a2, a3) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GuildTournamentEnemy"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GuildTournamentEnemy"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462930) -------------------------------------------------------- int __thiscall sub_462930(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_GetSaveLinktoData"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_GetSaveLinktoData"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)((char *)v1 + 262) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GetSaveLinktoData"); result = (int)((char *)v1 + 176); } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GetSaveLinktoData"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004629F0) -------------------------------------------------------- int __thiscall sub_4629F0(void *this, const void *a2) { void *v2; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_SetSaveLinktoData"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_SetSaveLinktoData"; dword_750AB8[dword_750CB8++] = -1; memcpy((char *)v2 + 176, a2, 0x61u); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_SetSaveLinktoData"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462A60) -------------------------------------------------------- int __thiscall sub_462A60(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_GetCenterObject"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_GetCenterObject"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 12); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GetCenterObject"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462AC0) -------------------------------------------------------- char __thiscall sub_462AC0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 char result; // al@2 int v5; // ecx@3 int v6; // ecx@3 char *v7; // edx@4 int v8; // ecx@4 __int16 v9; // cx@4 int v10; // ecx@5 int v11; // ecx@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_GetRegenCityLinkData"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_GetRegenCityLinkData"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 3); if ( v3 ) { *(_DWORD *)(a2 + 20) = *(_DWORD *)(v3 + 110); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v3 + 114); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v3 + 118); *(_BYTE *)(a2 + 32) = 0; v5 = *((_DWORD *)v2 + 3); *(_DWORD *)(a2 + 53) = *(_DWORD *)(v5 + 110); *(_DWORD *)(a2 + 57) = *(_DWORD *)(v5 + 114); *(_DWORD *)(a2 + 61) = *(_DWORD *)(v5 + 118); *(_BYTE *)(a2 + 65) = 0; v6 = *(_BYTE *)(v3 + 154); if ( (unsigned int)(v6 - 1) > 0x63 ) { *(_DWORD *)(a2 + 86) = *(_DWORD *)(v3 + 122); v11 = *(_DWORD *)(v3 + 126); } else { v7 = (char *)&unk_14D42DC0 + 32776 * v6; v8 = *((_DWORD *)v7 + 8193) & (*((_DWORD *)v7 + 8192) + 1); *((_DWORD *)v7 + 8192) = v8; v9 = *(_WORD *)&v7[2 * v8]; if ( (unsigned __int8)v9 >= 4u ) { *(_DWORD *)(a2 + 86) = *(_DWORD *)(v3 + 122); v11 = *(_DWORD *)(v3 + 126); } else { v10 = v3 + 8 * (unsigned __int8)v9; *(_DWORD *)(a2 + 86) = *(_DWORD *)(v10 + 122); v11 = *(_DWORD *)(v10 + 126); } } *(_DWORD *)(a2 + 90) = v11; *(_WORD *)(a2 + 94) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GetRegenCityLinkData"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GetRegenCityLinkData"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462C30) -------------------------------------------------------- char __thiscall sub_462C30(void *this, int a2, int a3, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD)) { int v4; // esi@4 void *v6; // edi@6 unsigned int v7; // eax@6 int v8; // ecx@6 bool v9; // bl@10 int v10; // [sp-4h] [bp-30h]@1 int v11; // [sp-4h] [bp-30h]@7 unsigned int v12; // [sp+10h] [bp-1Ch]@6 unsigned int v13; // [sp+14h] [bp-18h]@6 int v14; // [sp+18h] [bp-14h]@1 void *v15; // [sp+1Ch] [bp-10h]@1 int v16; // [sp+28h] [bp-4h]@1 v15 = this; v14 = (int)"FieldMap::fm_IsStraightPath"; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_IsStraightPath"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_IsStraightPath"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; if ( !a2 || !a3 || !a4 ) { --dword_750CB8; v16 = -1; v11 = (int)"FieldMap::fm_IsStraightPath"; goto LABEL_14; } v4 = *(_DWORD *)a3; if ( (*(_DWORD *)a2 - v4) * (*(_DWORD *)a2 - v4) + (*(_DWORD *)(a2 + 4) - *(_DWORD *)(a3 + 4)) * (*(_DWORD *)(a2 + 4) - *(_DWORD *)(a3 + 4)) < 25 ) { --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_IsStraightPath"); return 1; } v6 = v15; v7 = v4 + *(_DWORD *)a2; v13 = (unsigned int)(*(_DWORD *)(a2 + 4) + *(_DWORD *)(a3 + 4)) >> 1; v8 = *((_DWORD *)v15 + 5); v12 = v7 >> 1; if ( (unsigned __int8)a4(v8, v7 >> 1, v10) ) { --dword_750CB8; v16 = -1; v11 = (int)"FieldMap::fm_IsStraightPath"; LABEL_14: sub_467660((int)&unk_D020420, v11); return 0; } v9 = sub_462C30(v15, a2, (int)&v12, a4) && sub_462C30(v6, (int)&v12, a3, a4); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_IsStraightPath"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00462DD0) -------------------------------------------------------- int __thiscall sub_462DD0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // esi@1 char v5; // [sp+8h] [bp-24h]@1 int v6; // [sp+28h] [bp-4h]@1 v1 = this; sub_4E20F0(&v5, -1, 0, 0, 1000); v6 = 0; v2 = sub_462A60(v1); sub_549B60((void *)v2, (int)&v5, 0); v3 = sub_4B81F0((int)&v5); v6 = -1; sub_4E2170(&v5); return v3; } //----- (00462E60) -------------------------------------------------------- int __stdcall sub_462E60(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_5555555 || (result = operator new(48 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00462EC0) -------------------------------------------------------- int __thiscall sub_462EC0(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 17) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00462F20) -------------------------------------------------------- int __cdecl sub_462F20(int a1, int a2, int (__thiscall *a3)(_DWORD, _DWORD, _DWORD, _DWORD)) { unsigned __int16 v3; // si@1 unsigned __int16 v4; // di@2 int v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // dx@3 bool v8; // zf@4 int v9; // eax@4 int v10; // eax@5 int result; // eax@7 int v12; // [sp+Ch] [bp-Ch]@3 v3 = *(_WORD *)(*(_DWORD *)(a1 + 8) + 12 * *(_WORD *)(a1 + 14) + 4); while ( 1 ) { v4 = *(_WORD *)(a1 + 4); if ( v3 >= v4 ) break; v5 = *(_DWORD *)(a1 + 8); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); LOWORD(v12) = v7; HIWORD(v12) = v3; if ( v7 >= v4 || (v8 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v9 = v5 + 12 * v6, v8) ) v10 = 0; else v10 = *(_DWORD *)v9; result = a3(v10, a1, v12, a2); if ( !result ) return result; } return 1; } //----- (00462FC0) -------------------------------------------------------- void *__thiscall sub_462FC0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B05C0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B05C0: using guessed type int (__thiscall *off_6B05C0)(void *, char); //----- (00462FF0) -------------------------------------------------------- void *__thiscall sub_462FF0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B05C8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B05C8: using guessed type int (__thiscall *off_6B05C8)(void *, char); //----- (00463020) -------------------------------------------------------- FILE *__thiscall sub_463020(int this, int a2) { void *v2; // edi@1 char *v3; // esi@1 int v4; // ST04_4@1 int v5; // esi@1 FILE *result; // eax@2 v2 = off_849C18; v3 = (char *)off_849C18 + 2; v4 = (int)((char *)off_849C18 + 2); *((_WORD *)off_849C18 + 1) = 0; sub_462F20(this, v4, sub_461610); *(_WORD *)v2 = 6159; v5 = 14 * *(_WORD *)v3 + 4; if ( sub_4C81E0(&off_849C18, v5) ) result = (FILE *)sub_4C7EC0(&off_849C18, a2); else result = sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_MapRegist : Packet Too Long", v5); return result; } //----- (00463090) -------------------------------------------------------- char __thiscall sub_463090(int this, int a2, int a3) { int v3; // eax@1 int v4; // ecx@1 int v5; // eax@2 const void *v6; // esi@3 unsigned int v7; // edi@3 const char *v8; // eax@4 v3 = this; v4 = *(_DWORD *)(this + 296); if ( v4 ) { v6 = (const void *)(a2 + v3 + 296); v7 = *(_DWORD *)(a2 + v3 + 316); if ( v7 < 0x10 ) v8 = (const char *)(a2 + v3 + 296); else v8 = *(const char **)v6; v5 = strcmp(v8, byte_6A492E); if ( v5 ) { if ( v7 < 0x10 ) LOBYTE(v5) = sub_4613B0(v4, v6, a3); else LOBYTE(v5) = sub_4613B0(v4, *(const void **)v6, a3); } } else { LOBYTE(v5) = 0; } return v5; } //----- (00463120) -------------------------------------------------------- char __thiscall sub_463120(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B0434; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B0434: using guessed type int (__stdcall *off_6B0434)(int, int); //----- (004632A0) -------------------------------------------------------- int __thiscall sub_4632A0(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x14u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 16) = 0; if ( result != -12 ) *(_DWORD *)(result + 12) = *(_DWORD *)a2; return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00463310) -------------------------------------------------------- void __stdcall sub_463310(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 17); v1 = i ) { sub_463310(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (00463350) -------------------------------------------------------- int __thiscall sub_463350(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 int v10; // edi@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 17) ) { v10 = *((_DWORD *)a3 + 3); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v7 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 17) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5AF530(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5AF400(&a4); v11 = a4; v4 = a3; } if ( *(_DWORD *)(v11 + 12) >= *((_DWORD *)v4 + 3) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5AF530(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (00463430) -------------------------------------------------------- int __thiscall sub_463430(int this, int a2, int a3) { int v3; // ebx@1 bool v4; // zf@1 int v5; // eax@2 int v6; // ecx@2 int v7; // esi@2 int v8; // ST00_4@4 int v10; // [sp+0h] [bp-28h]@1 int v11; // [sp+10h] [bp-18h]@1 int v12; // [sp+14h] [bp-14h]@1 int *v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+24h] [bp-4h]@4 v13 = &v10; v3 = this; v11 = this; v4 = *(_BYTE *)(a2 + 17) == 0; v12 = *(_DWORD *)(this + 4); if ( v4 ) { v5 = sub_4632A0((void *)this, a2 + 12); v6 = v12; v7 = v5; *(_DWORD *)(v5 + 4) = a3; *(_BYTE *)(v5 + 16) = *(_BYTE *)(a2 + 16); if ( *(_BYTE *)(v6 + 17) ) v12 = v5; v8 = *(_DWORD *)a2; v14 = 0; *(_DWORD *)v5 = sub_463430(v3, v8, v5); *(_DWORD *)(v7 + 8) = sub_463430(v3, *(_DWORD *)(a2 + 8), v7); } return v12; } //----- (004634CE) -------------------------------------------------------- void __usercall sub_4634CE(int a1) { sub_463310(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004634F0) -------------------------------------------------------- void *__cdecl sub_4634F0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 48 ) { if ( result ) memcpy(result, v3, 0x30u); v3 = (char *)v3 + 48; } return result; } //----- (00463530) -------------------------------------------------------- void __thiscall sub_463530(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 164) >= 0x10u ) operator delete(*(void **)(this + 144)); *(_DWORD *)(v1 + 164) = 15; *(_DWORD *)(v1 + 160) = 0; *(_BYTE *)(v1 + 144) = 0; if ( *(_DWORD *)(v1 + 136) >= 0x10u ) operator delete(*(void **)(v1 + 116)); *(_DWORD *)(v1 + 136) = 15; *(_DWORD *)(v1 + 132) = 0; *(_BYTE *)(v1 + 116) = 0; if ( *(_DWORD *)(v1 + 108) >= 0x10u ) operator delete(*(void **)(v1 + 88)); *(_DWORD *)(v1 + 108) = 15; *(_DWORD *)(v1 + 104) = 0; *(_BYTE *)(v1 + 88) = 0; if ( *(_DWORD *)(v1 + 80) >= 0x10u ) operator delete(*(void **)(v1 + 60)); *(_DWORD *)(v1 + 80) = 15; *(_DWORD *)(v1 + 76) = 0; *(_BYTE *)(v1 + 60) = 0; if ( *(_DWORD *)(v1 + 52) >= 0x10u ) operator delete(*(void **)(v1 + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; } //----- (00463600) -------------------------------------------------------- int __thiscall sub_463600(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 17) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_DWORD *)a3 < *(_DWORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (00463670) -------------------------------------------------------- int __thiscall sub_463670(int this, int a2) { int v2; // esi@1 int v3; // edx@1 int result; // eax@1 int i; // ecx@2 int v6; // esi@4 int v7; // ecx@4 v2 = this; *(_DWORD *)(*(_DWORD *)(this + 4) + 4) = sub_463430(this, *(_DWORD *)(*(_DWORD *)(a2 + 4) + 4), *(_DWORD *)(this + 4)); v3 = *(_DWORD *)(v2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); result = *(_DWORD *)(v3 + 4); if ( *(_BYTE *)(result + 17) ) { *(_DWORD *)v3 = v3; *(_DWORD *)(*(_DWORD *)(v2 + 4) + 8) = *(_DWORD *)(v2 + 4); } else { for ( i = *(_DWORD *)result; !*(_BYTE *)(i + 17); i = *(_DWORD *)i ) result = i; *(_DWORD *)v3 = result; v6 = *(_DWORD *)(v2 + 4); v7 = *(_DWORD *)(v6 + 4); for ( result = *(_DWORD *)(v7 + 8); !*(_BYTE *)(result + 17); result = *(_DWORD *)(result + 8) ) v7 = result; *(_DWORD *)(v6 + 8) = v7; } return result; } //----- (004636F0) -------------------------------------------------------- void *__cdecl sub_4636F0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 48 ) { if ( result ) memcpy(result, v3, 0x30u); v3 = (char *)v3 + 48; } return result; } //----- (00463730) -------------------------------------------------------- int __thiscall sub_463730(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 int v5; // [sp+8h] [bp-18h]@1 int v6; // [sp+10h] [bp-10h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v2 = this; v6 = (int)"FieldContainer::fm_SetRefuseAbstate"; sub_4675D0((int)&unk_D020420, (int)"FieldContainer::fm_SetRefuseAbstate"); dword_7508B8[dword_750CB8] = (int)"FieldContainer::fm_SetRefuseAbstate"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; v3 = sub_4632A0((char *)v2 + 276, (int)&a2); sub_463350((int)((char *)v2 + 276), (int)&v5, (void *)v3, 0); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"FieldContainer::fm_SetRefuseAbstate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004637F0) -------------------------------------------------------- bool __thiscall sub_4637F0(void *this, char a2) { void *v2; // esi@1 bool v3; // bl@1 char v5; // [sp+8h] [bp-4h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"FieldContainer::fm_IsRefuseAbstate"); dword_7508B8[dword_750CB8] = (int)"FieldContainer::fm_IsRefuseAbstate"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)sub_463600((int)((char *)v2 + 276), (int)&v5, (int)&a2) != *((_DWORD *)v2 + 70); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FieldContainer::fm_IsRefuseAbstate"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00463870) -------------------------------------------------------- void __thiscall sub_463870(void *this, int a2, int a3, void *a4) { void *v4; // edi@1 int v5; // esi@1 int v6; // eax@3 int i; // ebx@4 int v8; // eax@6 int v9; // esi@6 v4 = a4; v5 = (int)this; if ( a4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)a4 + 1232))(a4) == 2 ) { v6 = *(_DWORD *)sub_648340(v5, (int)&a4, (int)&a2); a2 = v6; if ( v6 != *(_DWORD *)(v5 + 4) ) { for ( i = *(_DWORD *)(v6 + 16); i != *(_DWORD *)(v6 + 20); i += 48 ) { if ( a3 == *(_DWORD *)(i + 12) ) { v8 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(i + 16)); v9 = v8; if ( v8 && *(_DWORD *)v8 && *(_DWORD *)(v8 + 48) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(*(_DWORD *)v8 + 34), 1, v8, dword_14D129E8, 0, -1, 0, 0, 0) == 1 ) { sub_401900(v4, *(_DWORD *)(*(_DWORD *)v9 + 34)); (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 1008))( v4, *(_DWORD *)(*(_DWORD *)v9 + 34), *(_DWORD *)(*(_DWORD *)(v9 + 48) + 43), 1); sub_4055D0(v4, *(_DWORD *)(*(_DWORD *)v9 + 34), *(_DWORD *)(*(_DWORD *)(v9 + 48) + 43), 1); } } v6 = a2; } } } } } } // 14D129E8: using guessed type int dword_14D129E8; //----- (00463970) -------------------------------------------------------- int __thiscall sub_463970(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; sub_423FC0((void *)(this + 4), a2 + 4, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 32), a2 + 32, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 60), a2 + 60, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 88), a2 + 88, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 116), a2 + 116, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 144), a2 + 144, 0, 0xFFFFFFFFu); return v2; } //----- (004639F0) -------------------------------------------------------- int __thiscall sub_4639F0(int this, int a2, int a3, int a4, int a5) { int v5; // edi@1 int result; // eax@1 int v7; // eax@3 int v8; // ecx@3 int v9; // [sp+0h] [bp-28h]@1 int v10; // [sp+10h] [bp-18h]@1 int v11; // [sp+14h] [bp-14h]@1 int *v12; // [sp+18h] [bp-10h]@1 int v13; // [sp+24h] [bp-4h]@1 v12 = &v9; v5 = this; v10 = this; result = a3; v11 = a3; v13 = 0; while ( result != a4 ) { v7 = loc_439330(v5, a2, *(_DWORD *)(a2 + 4), result + 8); v8 = *(_DWORD *)(v5 + 4); if ( (unsigned int)((char *)&unk_22B63CA - v8) < 1 ) sub_65178B((int)"list too long"); *(_DWORD *)(v5 + 4) = v8 + 1; *(_DWORD *)(a2 + 4) = v7; **(_DWORD **)(v7 + 4) = v7; result = *(_DWORD *)a3; a3 = *(_DWORD *)a3; } return result; } //----- (00463AC0) -------------------------------------------------------- int __thiscall sub_463AC0(void *this, int a2, int a3, int a4, int a5) { int v5; // esi@1 bool v6; // zf@1 int v7; // eax@2 int v8; // eax@3 void *v9; // ecx@5 int v10; // edi@5 int v11; // ST0C_4@5 void *v12; // eax@5 int v13; // eax@5 int v15; // [sp+10h] [bp-10h]@2 int v16; // [sp+1Ch] [bp-4h]@1 v5 = (int)this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_CreateGuildTournamentSystem"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_CreateGuildTournamentSystem"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_DWORD *)(v5 + 168) == 0; v16 = 0; if ( v6 ) { v7 = operator new(0x1E8u); v15 = v7; LOBYTE(v16) = 1; if ( v7 ) v8 = sub_47FDC0(v7); else v8 = 0; v9 = *(void **)(v5 + 68); *(_DWORD *)(v5 + 168) = v8; v10 = **(_DWORD **)(v5 + 48); v11 = *(_DWORD *)(v5 + 48); LOBYTE(v16) = 0; v12 = sub_506ED0(v9, v5, v11); (*(void (__thiscall **)(_DWORD, void *))(v10 + 1648))(*(_DWORD *)(v5 + 48), v12); v13 = *(_DWORD *)(v5 + 48); v15 = *(_DWORD *)(v5 + 168); sub_4242C0(v13 + 348, (unsigned int)&v15); } sub_47FFA0(*(_DWORD *)(v5 + 168), a2, a3, a4, a5); --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_CreateGuildTournamentSystem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00463BE0) -------------------------------------------------------- int __thiscall sub_463BE0(void *this) { void *v1; // ebx@1 signed int v2; // edi@1 int v3; // edx@1 unsigned __int16 i; // ax@1 int v5; // esi@4 unsigned int v6; // eax@4 unsigned int v7; // ecx@4 int v8; // edi@8 char v9; // al@10 unsigned __int16 v10; // dx@10 int v11; // eax@12 int v12; // ecx@13 int v13; // ecx@15 int v14; // eax@20 int v15; // ecx@21 int v16; // ecx@23 int v17; // edx@27 void *v18; // ecx@28 unsigned __int16 v20; // [sp+10h] [bp-94h]@4 unsigned __int16 v21; // [sp+12h] [bp-92h]@4 char v22; // [sp+1Ch] [bp-88h]@10 unsigned int v23; // [sp+20h] [bp-84h]@4 int (__thiscall **v24)(void *, char); // [sp+24h] [bp-80h]@1 int v25; // [sp+58h] [bp-4Ch]@1 char v26; // [sp+64h] [bp-40h]@1 int v27; // [sp+84h] [bp-20h]@1 int v28; // [sp+88h] [bp-1Ch]@1 int v29; // [sp+8Ch] [bp-18h]@1 unsigned int v30; // [sp+94h] [bp-10h]@1 int v31; // [sp+A0h] [bp-4h]@1 int v32; // [sp+A4h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"FieldContainer::fc_AbstateInFieldLoad"); dword_7508B8[dword_750CB8] = (int)"FieldContainer::fc_AbstateInFieldLoad"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; v31 = 0; sub_639920((int)&v24); v24 = &off_6B05C0; v29 = 0; v28 = 0; v27 = 0; memset(&v26, 0, 0x30u); LOBYTE(v31) = 1; sub_461F10(&v24, "../9Data/Shine/StateField.shn"); v3 = v25; for ( i = *(_WORD *)(*((_DWORD *)v1 + 2) + 12 * *((_WORD *)v1 + 7) + 4); i < *((_WORD *)v1 + 2); i = v21 ) { v5 = i; v20 = i; v21 = *(_WORD *)(*((_DWORD *)v1 + 2) + 12 * i + 4); v6 = *(_DWORD *)(v3 + 40); v7 = 0; v23 = 0; if ( (signed int)v6 <= v2 ) continue; while ( 1 ) { v8 = v7 < v6 ? sub_626BC0((int)&v24, v7) : &v26; v9 = sub_639670(&byte_878354, v8); v10 = *((_WORD *)v1 + 2); v22 = v9; if ( *(_DWORD *)(v8 + 44) == 1 ) { if ( v20 < v10 && (v11 = *((_DWORD *)v1 + 2), *(_BYTE *)(v11 + 12 * v5 + 8)) ) v12 = *(_DWORD *)(v11 + 12 * v5); else v12 = 0; v13 = *(_DWORD *)(v12 + 12); if ( *(_DWORD *)(v8 + 32) != *(_DWORD *)v13 || *(_DWORD *)(v8 + 36) != *(_DWORD *)(v13 + 4) || *(_DWORD *)(v8 + 40) != *(_DWORD *)(v13 + 8) ) goto LABEL_26; } else { if ( v20 < v10 && (v14 = *((_DWORD *)v1 + 2), *(_BYTE *)(v14 + 12 * v5 + 8)) ) v15 = *(_DWORD *)(v14 + 12 * v5); else v15 = 0; v16 = *(_DWORD *)(v15 + 12); if ( *(_DWORD *)(v8 + 32) == *(_DWORD *)v16 && *(_DWORD *)(v8 + 36) == *(_DWORD *)(v16 + 4) && *(_DWORD *)(v8 + 40) == *(_DWORD *)(v16 + 8) ) { LABEL_26: if ( v20 < v10 && (v17 = *((_DWORD *)v1 + 2), *(_BYTE *)(v17 + 12 * v5 + 8)) ) v18 = *(void **)(v17 + 12 * v5); else v18 = 0; sub_463730(v18, v22); goto LABEL_31; } } LABEL_31: v3 = v25; v6 = *(_DWORD *)(v25 + 40); ++v23; if ( (signed int)v23 >= (signed int)v6 ) break; v7 = v23; } v2 = 0; } LOBYTE(v31) = 0; v24 = &off_6B05C0; sub_639940((int)&v24); --dword_750CB8; v31 = -1; return sub_467660((int)&unk_D020420, (int)"FieldContainer::fc_AbstateInFieldLoad"); } // 6B05C0: using guessed type int (__thiscall *off_6B05C0)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00463E30) -------------------------------------------------------- signed int __thiscall sub_463E30(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 _BYTE *v6; // eax@1 signed int v7; // eax@1 int v8; // eax@4 int v9; // edi@6 void *v10; // eax@11 int v11; // eax@13 int v12; // ecx@13 int v13; // ebx@13 int v14; // eax@14 bool v15; // zf@14 int v16; // eax@15 int v17; // eax@16 FILE *v18; // ebx@20 int v19; // eax@20 _BYTE *v20; // eax@20 int v21; // ST14_4@20 int v22; // ST0C_4@20 int v23; // edi@20 void *v24; // eax@20 int v25; // edx@22 unsigned __int16 v26; // di@22 int v27; // eax@24 int v28; // eax@24 int v29; // eax@25 signed int result; // eax@28 unsigned int v31; // [sp+10h] [bp-18h]@13 unsigned int v32; // [sp+14h] [bp-14h]@13 char v33; // [sp+18h] [bp-10h]@13 int v34; // [sp+24h] [bp-4h]@15 unsigned int v35; // [sp+30h] [bp+8h]@13 signed int v36; // [sp+34h] [bp+Ch]@13 int v37; // [sp+38h] [bp+10h]@13 v4 = this; *(_BYTE *)(this + 152) = -1; *(_BYTE *)(this + 84) = 0; *(_DWORD *)(this + 160) = 0; *(_DWORD *)(this + 156) = 0; v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)a2; *((_DWORD *)v6 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(a2 + 8); v6[12] = 0; v7 = sub_639620(&unk_14D20404, v6); if ( v7 == -1 ) LOWORD(v7) = -1; v7 = (unsigned __int16)v7; if ( (unsigned __int16)v7 < dword_14D20400 ) v8 = *(_DWORD *)(dword_14D203FC + 4 * v7); else v8 = 0; v9 = a4; *(_DWORD *)(v4 + 16) = v8; *(_DWORD *)(v4 + 76) = 1000; *(_DWORD *)(v4 + 80) = 1000; *(_DWORD *)(v4 + 60) = -1; if ( *(_DWORD *)a4 == *(_DWORD *)dword_CFCE16C && *(_DWORD *)(a4 + 4) == dword_CFCE170 && *(_DWORD *)(a4 + 8) == dword_CFCE174 ) dword_CFCDD50 = v4; *(_DWORD *)v4 = *(_DWORD *)a4; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(a4 + 8); *(_DWORD *)(v4 + 12) = a2; if ( *(_BYTE *)(a2 + 54) == 2 ) { dword_CFCDD5C = *(_DWORD *)a4; dword_CFCDD60 = *(_DWORD *)(a4 + 4); dword_CFCDD64 = *(_DWORD *)(a4 + 8); *(_DWORD *)(v4 + 88) = sub_551CC0; *(_DWORD *)(v4 + 104) = sub_551E30; *(_DWORD *)(v4 + 120) = sub_552170; v10 = sub_551FD0; } else { *(_DWORD *)(v4 + 88) = sub_549F80; *(_DWORD *)(v4 + 104) = sub_54A4F0; *(_DWORD *)(v4 + 120) = sub_54B4E0; v10 = sub_54AA80; } *(_DWORD *)(v4 + 136) = v10; *(_DWORD *)(v4 + 92) = 0; *(_DWORD *)(v4 + 108) = 0; *(_DWORD *)(v4 + 124) = 0; *(_DWORD *)(v4 + 140) = 0; *(_DWORD *)(v4 + 96) = 0; *(_DWORD *)(v4 + 112) = 0; *(_DWORD *)(v4 + 128) = 0; *(_DWORD *)(v4 + 144) = 0; *(_DWORD *)(v4 + 100) = 0; *(_DWORD *)(v4 + 116) = 0; *(_DWORD *)(v4 + 132) = 0; *(_DWORD *)(v4 + 148) = 0; *(_DWORD *)(v4 + 20) = sub_49DB80((int)&unk_D65CFD8, a4, a2, v4 + 24, v4 + 28); sub_4B59A0((void *)dword_D9FAF98, a3, a4); *(_DWORD *)(v4 + 32) = sub_54DF90(&unk_13253630, (int)&v33, 0); v11 = sub_54DF90(&unk_13253630, (int)&v33, 0); v12 = *(_DWORD *)(v4 + 32); *(_DWORD *)(v4 + 36) = v11; (*(void (__stdcall **)(_DWORD, _DWORD, int, _DWORD))(*(_DWORD *)v12 + 1424))(0, 0, v4, 0); (*(void (__stdcall **)(_UNKNOWN *, _UNKNOWN *, int, _DWORD))(**(_DWORD **)(v4 + 36) + 1424))( &unk_FFFFFF, &unk_FFFFFF, v4, 0); sub_5C79F0((int)&unk_13252690, *(_DWORD *)(v4 + 32)); sub_585D10((void *)(*(_DWORD *)(v4 + 32) + 22), (void *)(*(_DWORD *)(v4 + 36) + 22)); sub_585D10((void *)(*(_DWORD *)(v4 + 32) + 34), (void *)(*(_DWORD *)(v4 + 36) + 34)); v31 = *(_DWORD *)(v4 + 24) / 5u; v13 = v4 + 40; v35 = *(_DWORD *)(v4 + 24) / 0xAu; v37 = v4 + 40; v32 = *(_DWORD *)(v4 + 28) / 0xAu - *(_DWORD *)(v4 + 24) / 0xAu; v36 = 5; do { v14 = sub_54DF90(&unk_13253630, (int)&v33, 0); *(_DWORD *)v13 = v14; (*(void (__thiscall **)(int, unsigned int, unsigned int, int, int))(*(_DWORD *)v14 + 1424))( v14, v35, v35 + v32, v4, v14); sub_585A10((void *)(*(_DWORD *)v37 + 22), *(_DWORD *)(v4 + 32) + 22); sub_585A10((void *)(*(_DWORD *)v37 + 34), *(_DWORD *)(v4 + 32) + 34); v35 += v31; v13 = v37 + 4; v15 = v36-- == 1; v37 += 4; } while ( !v15 ); v16 = operator new(0x12E798u); v34 = 0; if ( v16 ) v17 = sub_507B30(v16); else v17 = 0; *(_DWORD *)(v4 + 68) = v17; v34 = -1; if ( v17 == 0 ) { sub_639100(&unk_86DDD8, (int)"FieldMap::fm_Init : Memory Leak", v17 != 0); loc_6391B0("FieldMap::fm_Init"); } dword_CFCDD58 += 1238936; v18 = fopen("MapLoad.txt", "a"); v19 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v19; v20 = &byte_85A2C0[256 * v19]; *(_DWORD *)v20 = *(_DWORD *)v9; *((_DWORD *)v20 + 1) = *(_DWORD *)(v9 + 4); v21 = dword_CFCDD58; *((_DWORD *)v20 + 2) = *(_DWORD *)(v9 + 8); v22 = dword_CFCDD54; v20[12] = 0; fprintf(v18, "[%d]%s/%d\n", v22, v20, v21); ++dword_CFCDD54; fclose(v18); v23 = **(_DWORD **)(v4 + 48) + 1648; v24 = sub_506ED0(*(void **)(v4 + 68), v4, *(_DWORD *)(v4 + 48)); (*(void (__thiscall **)(_DWORD, void *))v23)(*(_DWORD *)(v4 + 48), v24); if ( *(_BYTE *)(*(_DWORD *)(v4 + 12) + 104) ) *(_BYTE *)(v4 + 84) = 1; v25 = dword_D715000; v26 = *(_WORD *)(dword_D715000 + 12 * (unsigned __int16)word_D715006 + 4); while ( v26 < word_D714FFC ) { v27 = v26; v26 = *(_WORD *)(v25 + 12 * v26 + 4); v15 = *(_BYTE *)(v25 + 12 * v27 + 8) == 0; v28 = v25 + 12 * v27; if ( v15 ) v29 = 0; else v29 = *(_DWORD *)v28; sub_49DF80(v29, v4, *(_DWORD *)(v4 + 12)); v25 = dword_D715000; } sub_4B01F0((void *)(v4 + 72)); *(_DWORD *)(v4 + 172) = 0; *(_DWORD *)(v4 + 292) = 0; *(_DWORD *)(v4 + 296) = 0; sub_4241C0(v4 + 300, byte_6A492E, 0); sub_4241C0(v4 + 328, byte_6A492E, 0); sub_4241C0(v4 + 356, byte_6A492E, 0); sub_4241C0(v4 + 384, byte_6A492E, 0); sub_4241C0(v4 + 412, byte_6A492E, 0); sub_4241C0(v4 + 440, byte_6A492E, 0); result = 3; *(_BYTE *)(v4 + 496) |= 3u; *(_DWORD *)(v4 + 500) = 180; *(_DWORD *)(v4 + 504) = 3; return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // CFCDD50: using guessed type int dword_CFCDD50; // CFCDD54: using guessed type int dword_CFCDD54; // CFCDD58: using guessed type int dword_CFCDD58; // CFCDD5C: using guessed type int dword_CFCDD5C; // CFCDD60: using guessed type int dword_CFCDD60; // CFCDD64: using guessed type int dword_CFCDD64; // CFCE170: using guessed type int dword_CFCE170; // CFCE174: using guessed type int dword_CFCE174; // D714FFC: using guessed type __int16 word_D714FFC; // D715000: using guessed type int dword_D715000; // D715006: using guessed type __int16 word_D715006; // D9FAF98: using guessed type int dword_D9FAF98; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00464300) -------------------------------------------------------- char *__thiscall sub_464300(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { void *v6; // ebx@1 int v7; // ST08_4@1 int v8; // eax@1 char *result; // eax@1 int v10; // eax@2 _BYTE *v11; // eax@2 int v12; // esi@4 char v13; // [sp+8h] [bp-24h]@1 char *v14; // [sp+1Ch] [bp-10h]@2 __int16 v15[2]; // [sp+20h] [bp-Ch]@2 v6 = this; v7 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v8 = (int)sub_5A7530(byte_14D16AE8); result = (char *)sub_649CD0(v8, (int)&v13, 6, v7, a6, 6); if ( result ) { sub_5A7260(&unk_13258988, a6, v14, v15[0]); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = &byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)a4; *((_DWORD *)v11 + 1) = *(_DWORD *)(a4 + 4); *((_DWORD *)v11 + 2) = *(_DWORD *)(a4 + 8); v11[12] = 0; sub_639590(&unk_CFCDD68, v11, a5); result = sub_5A7540(byte_14D16AE8); if ( a6 == *((_DWORD *)result + 4) ) { if ( *((_WORD *)v6 + 6) == -1 ) v12 = 0; else v12 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v6 + 8))(v6, *((_WORD *)v6 + 6)); if ( !v12 ) { sub_639100(&unk_86DDD8, (int)"Too many map", 0); loc_6391B0("FieldContainer::fc_MakeField"); } sub_463E30(v12, a3, a2, a4); result = (char *)sub_63AC70((int)((char *)v6 + 24), a3); } } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00464410) -------------------------------------------------------- int __thiscall sub_464410(int this, int a2) { int result; // eax@1 int v3; // esi@1 result = a2; v3 = this; *(_DWORD *)(this + 296) = a2; if ( !a2 ) { sub_4241C0(this + 300, byte_6A492E, 0); sub_4241C0(v3 + 328, byte_6A492E, 0); sub_4241C0(v3 + 356, byte_6A492E, 0); sub_4241C0(v3 + 384, byte_6A492E, 0); sub_4241C0(v3 + 412, byte_6A492E, 0); result = sub_4241C0(v3 + 440, byte_6A492E, 0); } return result; } //----- (004644A0) -------------------------------------------------------- char __thiscall sub_4644A0(int this, int a2, char *a3) { char result; // al@2 if ( *(_DWORD *)(this + 296) ) { sub_4241C0(a2 + this + 296, a3, strlen(a3)); result = 1; } else { result = 0; } return result; } //----- (004644F0) -------------------------------------------------------- int __thiscall sub_4644F0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 const void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 const void *i; // eax@5 int v11; // ecx@8 int v12; // [sp+0h] [bp-24h]@1 int v13; // [sp+10h] [bp-14h]@4 int *v14; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@4 v14 = &v12; v2 = this; if ( a2 > (unsigned int)&unk_5555555 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 48; if ( result < a2 ) { v4 = sub_462E60(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v13 = v4; v15 = 0; sub_4636F0(v6, v5, (void *)v4); v7 = *(const void **)v2; v8 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v9 = v8 + ((unsigned int)v8 >> 31); if ( *(_DWORD *)v2 ) { for ( i = *(const void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 48 ) ; operator delete(*(void **)v2); } result = v13; v11 = v13 + 48 * v9; *(_DWORD *)(v2 + 8) = v13 + 48 * a2; *(_DWORD *)(v2 + 4) = v11; *(_DWORD *)v2 = result; } return result; } //----- (004645E4) -------------------------------------------------------- void __usercall sub_4645E4(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00464600) -------------------------------------------------------- int __thiscall sub_464600(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 const void *v5; // ecx@4 const void *v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 48; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_5555555 ) sub_65178B((int)"vector too long"); v4 = sub_462E60(v3); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 48 * v3; v5 = *(const void **)(a2 + 4); v6 = *(const void **)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_4634F0(v6, v5, (void *)v4); } return v2; } //----- (004646C5) -------------------------------------------------------- void __usercall sub_4646C5(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004646E0) -------------------------------------------------------- void __thiscall sub_4646E0(int this) { int v1; // esi@1 int v2; // ecx@1 int v3; // ST08_4@3 int v4; // ST04_4@3 char v5; // [sp+Ch] [bp-18h]@3 int v6; // [sp+10h] [bp-14h]@3 int v7; // [sp+14h] [bp-10h]@1 int v8; // [sp+20h] [bp-4h]@1 v1 = this; v7 = this; v2 = *(_DWORD *)(this + 68); v8 = 4; if ( v2 ) (**(void (__stdcall ***)(_DWORD))v2)(1); LOBYTE(v8) = 3; sub_43B100(v1 + 468); sub_463530(v1 + 296); v6 = v1 + 276; v3 = *(_DWORD *)(v1 + 280); v4 = **(_DWORD **)(v1 + 280); LOBYTE(v8) = 5; sub_5AFEC0(v1 + 276, (int)&v5, v4, v3); operator delete(*(void **)(v1 + 280)); LOBYTE(v8) = 0; nullsub_2((void *)(v1 + 164)); v8 = -1; sub_4AFF90((void **)(v1 + 72)); } //----- (004647A0) -------------------------------------------------------- void __thiscall sub_4647A0(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6B0720; sub_6530A4(*(void **)(this + 331888)); sub_6530A4(*(void **)(v1 + 331896)); _LN21((void *)(v1 + 69744), 0x200u, 512, (void (__thiscall *)(void *))sub_4646E0); sub_63AB50((void *)(v1 + 24)); *(_DWORD *)v1 = &off_6B0410; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6B0410: using guessed type int (__thiscall *off_6B0410)(void *, char); // 6B0720: using guessed type int (__thiscall *off_6B0720)(void *, char); //----- (00464840) -------------------------------------------------------- char __thiscall sub_464840(void *this, int a2) { int v2; // eax@1 int v3; // esi@1 signed int v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // edi@1 int v8; // eax@2 int v9; // eax@4 int i; // eax@6 int v11; // eax@9 int v12; // ebx@9 int v13; // eax@9 int v14; // eax@11 int v15; // eax@13 unsigned __int16 v16; // ax@14 signed __int16 v17; // cx@16 int v18; // eax@24 int k; // eax@24 int l; // ebx@26 int v21; // edx@29 int v22; // eax@31 int v23; // ebx@31 char v24; // al@34 char v25; // al@36 char v26; // al@38 int v27; // ecx@42 unsigned __int8 v28; // al@44 int v29; // eax@45 int v30; // ecx@47 char *v31; // eax@51 signed int v32; // ecx@51 char *v33; // eax@51 int v34; // eax@51 char *v35; // eax@53 char *v36; // eax@53 int v37; // eax@59 _BYTE *v38; // eax@59 char *v39; // edx@59 char v40; // cl@60 int v41; // eax@61 _BYTE *v42; // eax@61 char *v43; // edx@61 char v44; // cl@62 int v45; // eax@63 const void *v46; // edx@63 char v47; // cl@64 unsigned int v48; // eax@65 void *v49; // edi@65 char v50; // cl@66 void *v51; // edi@67 const void *v52; // esi@67 int v53; // ecx@67 int v54; // eax@67 const void *v55; // esi@67 char v56; // cl@68 unsigned int v57; // eax@69 void *v58; // edi@69 char v59; // cl@70 int v60; // eax@71 char v61; // cl@72 int v62; // eax@73 char v63; // cl@74 char *v64; // eax@75 char v65; // cl@76 void *v66; // edi@78 int v67; // esi@79 char *v68; // eax@80 char v69; // cl@81 char *v70; // eax@83 char v71; // cl@84 int v72; // eax@90 int v73; // eax@90 int v74; // eax@93 int v75; // ebx@93 char *v76; // eax@97 int v77; // ebx@100 int v79; // [sp-24h] [bp-1F0h]@53 int v80; // [sp-20h] [bp-1ECh]@53 int v81; // [sp-1Ch] [bp-1E8h]@9 int v82; // [sp-18h] [bp-1E4h]@4 int v83; // [sp-14h] [bp-1E0h]@4 char *v84; // [sp-10h] [bp-1DCh]@1 int v85; // [sp-Ch] [bp-1D8h]@1 signed int v86; // [sp-8h] [bp-1D4h]@1 int v87; // [sp-4h] [bp-1D0h]@1 int v88; // [sp+Ch] [bp-1C0h]@53 int v89; // [sp+10h] [bp-1BCh]@1 int *v90; // [sp+14h] [bp-1B8h]@53 int v91; // [sp+18h] [bp-1B4h]@1 int v92; // [sp+1Ch] [bp-1B0h]@14 char v93; // [sp+23h] [bp-1A9h]@2 char *v94; // [sp+24h] [bp-1A8h]@4 int j; // [sp+28h] [bp-1A4h]@8 char v96[64]; // [sp+2Ch] [bp-1A0h]@72 char v97[63]; // [sp+6Ch] [bp-160h]@74 char v98; // [sp+ABh] [bp-121h]@82 char v99; // [sp+ACh] [bp-120h]@75 _BYTE v100[3]; // [sp+ADh] [bp-11Fh]@82 unsigned int v101; // [sp+ECh] [bp-E0h]@77 char v102[4]; // [sp+F0h] [bp-DCh]@79 int v103; // [sp+F4h] [bp-D8h]@79 int v104; // [sp+F8h] [bp-D4h]@79 char v105; // [sp+FCh] [bp-D0h]@1 char v106; // [sp+13Bh] [bp-91h]@69 char v107[64]; // [sp+13Ch] [bp-90h]@61 char v108[64]; // [sp+17Ch] [bp-50h]@59 unsigned int v109; // [sp+1BCh] [bp-10h]@1 int v110; // [sp+1C8h] [bp-4h]@53 int v111; // [sp+1CCh] [bp+0h]@1 v109 = (unsigned int)&v111 ^ __security_cookie; v87 = (unsigned int)&v111 ^ __security_cookie; v2 = dword_8622C4 & (dword_8622C0 + 1); v3 = (int)this; dword_8622C0 = v2; v4 = (signed int)&byte_85A2C0[256 * v2]; *(_DWORD *)v4 = *(_DWORD *)a2; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); v5 = *(_DWORD *)(a2 + 8); v86 = v4; *(_DWORD *)(v4 + 8) = v5; v91 = a2; v6 = *(_DWORD *)(a2 + 12); v85 = (int)"../9Data/Shine/World/%s/Field.txt"; v84 = &v105; v89 = v3; *(_DWORD *)(v4 + 12) = v6; v7 = 0; *(_BYTE *)(v4 + 16) = 0; sprintf(v84, (const char *)v85, v86); if ( !sub_6434A0((void *)(v3 + 24), &v105) ) { v93 = sub_6434A0((void *)(v3 + 24), "../9Data/Shine/World/Field.txt"); v8 = sub_642790(v3 + 24); if ( !v93 ) { sub_639100(&unk_86DDD8, (int)"Error in read field option Field.xls", v8); loc_6391B0("FieldContainer::fc_Load"); } } v94 = (char *)&v82; v86 = 0; v85 = 0; v84 = 0; v83 = 0; v82 = 0; strncpy((char *)&v82, "InstanceDungeon", 0x14u); v9 = sub_644CC0((void *)(v3 + 24), v82, v83, (int)v84, v85, v86); *(_DWORD *)(v3 + 331900) = v9; if ( v9 != -1 ) { v86 = 4 * v9 | -((unsigned __int64)(unsigned int)v9 >> 30 != 0); *(_DWORD *)(v3 + 331896) = unknown_libname_130(v86); for ( i = 0; i < *(_DWORD *)(v3 + 331900); ++i ) *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * i) = 0; for ( j = 0; j < *(_DWORD *)(v3 + 331900); ++j ) { v86 = j; v94 = (char *)&v81; v85 = 0; v84 = 0; v83 = 0; v82 = 0; v81 = 0; strncpy((char *)&v81, "InstanceDungeon", 0x14u); v11 = sub_6442C0((void *)(v3 + 24), v81, v82, v83, (int)v84, v85, v86); v12 = v11; v13 = *(_BYTE *)(v11 + 20); if ( v13 >= *(_DWORD *)(v3 + 331900) ) { sub_639100(&unk_86DDD8, (int)"Error in InstanceDungeonInfo : Too large IDNo", v13); loc_6391B0("FieldContainer::fc_Load"); } v14 = *(_BYTE *)(v12 + 20); if ( *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * v14) != 0 ) { sub_639100(&unk_86DDD8, (int)"Error in InstanceDungeonInfo : duplicate IDNo", v14); loc_6391B0("FieldContainer::fc_Load"); } *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * *(_BYTE *)(v12 + 20)) = v12; v15 = *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * *(_BYTE *)(v12 + 20)); if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * *(_BYTE *)(v12 + 20)) + 73) == 45 ) { v17 = -1; } else { v16 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v15 + 73)); v92 = *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * *(_BYTE *)(v12 + 20)) + 73; v94 = (char *)v16; if ( v16 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"FieldContainer::fc_Load : Wrong Item ID", v92); loc_6391B0("FieldContainer::fc_Load"); } v15 = *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * *(_BYTE *)(v12 + 20)); v17 = (signed __int16)v94; } *(_WORD *)(v15 + 109) = v17; if ( *(_BYTE *)(v12 + 20) != *(_BYTE *)(v12 + 108) ) { sub_639100(&unk_86DDD8, (int)"Checksum error in table InstanceDungeonInfo(Field.txt)", j); loc_6391B0("FieldContainer::fc_Load"); } if ( *(_BYTE *)(v12 + 21) == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v86 = *(_BYTE *)(v12 + 20); if ( !sub_483BB0(&unk_D714FF8, (const char *)(v12 + 22), v86) ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : Cannot add Instance dungeon cluster", j); loc_6391B0("FieldContainer::fc_Load"); } } } } else { sub_639100(&unk_86DDD8, (int)"Error in InstanceDungeonInfo : Cannot find Instance dungeon info", 0); } v94 = (char *)&v82; v86 = 0; v85 = 0; v84 = 0; v83 = 0; v82 = 0; strncpy((char *)&v82, "TutorialMap", 0x14u); v18 = sub_644CC0((void *)(v3 + 24), v82, v83, (int)v84, v85, v86); *(_DWORD *)(v3 + 331912) = v18; v86 = 4 * v18 | -((unsigned __int64)(unsigned int)v18 >> 30 != 0); *(_DWORD *)(v3 + 331908) = unknown_libname_130(v86); for ( k = 0; k < *(_DWORD *)(v3 + 331912); ++k ) *(_DWORD *)(*(_DWORD *)(v3 + 331908) + 4 * k) = 0; for ( l = 0; l < *(_DWORD *)(v3 + 331912); ++l ) { v87 = l; v94 = (char *)&v82; v86 = 0; v85 = 0; v84 = 0; v83 = 0; v82 = 0; strncpy((char *)&v82, "TutorialMap", 0x14u); v94 = (char *)sub_6442C0((void *)(v3 + 24), v82, v83, (int)v84, v85, v86, v87); if ( !v94 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : TutorialMapInfo is NULL", l); loc_6391B0("FieldContainer::fc_Load"); } v21 = *(_DWORD *)(v3 + 331908); v87 = (int)v94; *(_DWORD *)(v21 + 4 * l) = v94; sub_49FAB0(&unk_D714FF8, (char *)v87); } v92 = 0; while ( 1 ) { v87 = v92; v94 = (char *)&v82; v86 = v7; v85 = v7; v84 = (char *)v7; v83 = v7; v82 = v7; strncpy((char *)&v82, "FieldList", 0x14u); v22 = sub_6442C0((void *)(v3 + 24), v82, v83, (int)v84, v85, v86, v87); v23 = v22; if ( v22 == v7 ) break; if ( (*(_BYTE *)(v22 + 21) == *(_BYTE *)(v22 + 172)) == v7 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : checksum error - Field struct changed", v7); loc_6391B0("FieldContainer::fc_Load"); } v24 = *(_BYTE *)(v23 + 107); if ( v24 && v24 != 1 || (v25 = *(_BYTE *)(v23 + 108)) != 0 && v25 != 1 || (v26 = *(_BYTE *)(v23 + 109)) != 0 && v26 != 1 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : checksum error - Field struct changed", v7); loc_6391B0("FieldContainer::fc_Load"); } *(_BYTE *)(v23 + 154) = 0; do { v27 = v23 + 8 * *(_BYTE *)(v23 + 154); if ( *(_DWORD *)(v27 + 122) == v7 ) break; if ( *(_DWORD *)(v27 + 126) == v7 ) break; v28 = *(_BYTE *)(v23 + 154) + 1; *(_BYTE *)(v23 + 154) = v28; } while ( v28 < 4u ); LOBYTE(v29) = *(_BYTE *)(v23 + 154); v30 = (_BYTE)v29 && (unsigned __int8)v29 <= 4u; v29 = (unsigned __int8)v29; if ( v30 == v7 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : RegenLocation Wrong", v29); loc_6391B0("FieldContainer::fc_Load"); } v31 = sub_5A7540(byte_14D16AE8); v32 = *(_BYTE *)(v23 + 21); v87 = *((_DWORD *)v31 + 4); v86 = v32; v33 = sub_5A7570(byte_14D16AE8); v34 = sub_63AC00(&unk_CFCF398, v33, v86, v87); j = v34; if ( (v34 != -1) == v7 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : machine number", v34); loc_6391B0("FieldContainer::fc_Load"); } v35 = (char *)*(_BYTE *)(v23 + 21); v87 = (int)&v88; v86 = 1; v85 = (int)v35; v84 = "Serial"; v94 = v35; v90 = &v79; v83 = v7; v82 = v7; v81 = v7; v80 = v7; v79 = v7; strncpy((char *)&v79, "FieldList", 0x14u); v110 = v7; v36 = sub_5A7570(byte_14D16AE8); v110 = -1; if ( (sub_644C30((void *)(v3 + 24), v36, v79, v80, v81, v82, v83, v84, v85, v86, v87) == v7) == v7 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : Duplicate serial", (int)v94); loc_6391B0("FieldContainer::fc_Load"); } if ( *(_BYTE *)(v23 + 65) != 45 ) sub_507F10(&unk_13230E20, v23 + 65); if ( *(_BYTE *)(v23 + 13) == 45 ) { sub_464300((void *)v3, v91, v23, v23, *(_BYTE *)(v23 + 21), j); ++v92; v3 = v89; v7 = 0; } else { v37 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v37; v38 = &byte_85A2C0[256 * v37]; *(_DWORD *)v38 = *(_DWORD *)v23; *((_DWORD *)v38 + 1) = *(_DWORD *)(v23 + 4); *((_DWORD *)v38 + 2) = *(_DWORD *)(v23 + 8); v38[12] = 0; v39 = (char *)(v108 - v38); do { v40 = *v38; v39[(_DWORD)v38] = *v38; ++v38; } while ( v40 ); v41 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v41; v42 = &byte_85A2C0[256 * v41]; *(_DWORD *)v42 = *(_DWORD *)v23; *((_DWORD *)v42 + 1) = *(_DWORD *)(v23 + 4); *((_DWORD *)v42 + 2) = *(_DWORD *)(v23 + 8); v42[12] = 0; v43 = (char *)(v107 - v42); do { v44 = *v42; v43[(_DWORD)v42] = *v42; ++v42; } while ( v44 ); v45 = v23 + 13; v46 = (const void *)(v23 + 13); do v47 = *(_BYTE *)v45++; while ( v47 ); v48 = v45 - (_DWORD)v46; v49 = &v107[63]; do { v50 = *((_BYTE *)v49 + 1); v49 = (char *)v49 + 1; } while ( v50 ); memcpy(v49, v46, 4 * (v48 >> 2)); v52 = (char *)v46 + 4 * (v48 >> 2); v51 = (char *)v49 + 4 * (v48 >> 2); v53 = v48 & 3; v54 = v23 + 17; memcpy(v51, v52, v53); v55 = (const void *)(v23 + 17); do v56 = *(_BYTE *)v54++; while ( v56 ); v57 = v54 - (_DWORD)v55; v58 = &v106; do { v59 = *((_BYTE *)v58 + 1); v58 = (char *)v58 + 1; } while ( v59 ); memcpy(v58, v55, v57); v60 = 0; do { v61 = v108[v60]; v96[v60++] = v61; } while ( v61 ); v62 = 0; do { v63 = v107[v62]; v97[v62++] = v63; } while ( v63 ); v64 = v96; v99 = 45; do v65 = *v64++; while ( v65 ); v101 = v64 - &v96[1] - 1; if ( sub_461580((int)v96) ) { v66 = (void *)v89; do { v67 = j; v104 = 0; v103 = 0; *(_DWORD *)v102 = 0; strncpy(v102, &v99, 0xCu); if ( v67 == 99 ) { v68 = &v99; do v69 = *v68++; while ( v69 ); if ( *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) != *(&v98 + v68 - v100) - 48 ) continue; v70 = &v99; do v71 = *v70++; while ( v71 ); v87 = (unsigned __int8)(*(&v98 + v70 - v100) - 48); } else { v87 = v67; } v86 = *(_BYTE *)(v23 + 21); sub_464300(v66, v91, v23, (int)v102, v86, v87); } while ( sub_461580((int)v96) ); } ++v92; v3 = v89; v7 = 0; } } v90 = &v83; v87 = v7; v86 = v7; v85 = v7; v84 = (char *)v7; v83 = v7; strncpy((char *)&v83, "GuildTournamentMap", 0x14u); v72 = sub_644CC0((void *)(v3 + 24), v83, (int)v84, v85, v86, v87); *(_DWORD *)(v3 + 331892) = v72; v87 = 4 * v72 | -((unsigned __int64)(unsigned int)v72 >> 30 != 0); *(_DWORD *)(v3 + 331888) = unknown_libname_130(v87); v73 = 0; if ( *(_DWORD *)(v3 + 331892) > v7 ) { do *(_DWORD *)(*(_DWORD *)(v3 + 331888) + 4 * v73++) = v7; while ( v73 < *(_DWORD *)(v3 + 331892) ); } j = v7; if ( *(_DWORD *)(v3 + 331892) > v7 ) { do { v87 = j; v90 = &v82; v86 = v7; v85 = v7; v84 = (char *)v7; v83 = v7; v82 = v7; strncpy((char *)&v82, "GuildTournamentMap", 0x14u); v74 = sub_6442C0((void *)(v3 + 24), v82, v83, (int)v84, v85, v86, v87); v75 = *(_BYTE *)(v74 + 13); v94 = (char *)v74; if ( v75 < *(_DWORD *)(v3 + 331892) == v7 ) { sub_639100(&unk_86DDD8, (int)"Error in GuildTournamentMap : Too large GTMapNo", v75); loc_6391B0("FieldContainer::fc_Load"); } if ( (*(_DWORD *)(*(_DWORD *)(v3 + 331888) + 4 * v75) == v7) == v7 ) { sub_639100(&unk_86DDD8, (int)"Error in GuildTournamentMap : duplicate GTMapNo", v75); loc_6391B0("FieldContainer::fc_Load"); } v76 = v94; *(_DWORD *)(*(_DWORD *)(v3 + 331888) + 4 * v75) = v94; if ( (v76[13] == v76[304]) == v7 ) { sub_639100(&unk_86DDD8, (int)"Checksum error in table GuildTournamentMap(Field.txt)", j); loc_6391B0("FieldContainer::fc_Load"); } v73 = j + 1; j = v73; } while ( v73 < *(_DWORD *)(v3 + 331892) ); } v77 = 0; if ( *(_DWORD *)(v3 + 331912) > v7 ) { do { v87 = v77; v90 = &v82; v86 = v7; v85 = v7; v84 = (char *)v7; v83 = v7; v82 = v7; strncpy((char *)&v82, "TutorialMap", 0x14u); v73 = sub_6442C0((void *)(v3 + 24), v82, v83, (int)v84, v85, v86, v87); if ( v73 == v7 ) break; LOBYTE(v73) = sub_49FFB0(&unk_D714FF8, (const char *)v73, v73 + 14); if ( !(_BYTE)v73 ) { sub_639100(&unk_86DDD8, (int)"FieldContainer::fc_Load : Fail to play tutorial script", v77); LOBYTE(v73) = loc_6391B0("FieldContainer::fc_Load"); } ++v77; } while ( v77 < *(_DWORD *)(v3 + 331912) ); } return v73; } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; // 464840: using guessed type char var_1A0[64]; // 464840: using guessed type char var_160[63]; // 464840: using guessed type char var_50[64]; // 464840: using guessed type char var_90[64]; //----- (00465330) -------------------------------------------------------- int __thiscall sub_465330(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 48; if ( (unsigned int)((char *)&unk_5555555 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 48; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_5555555 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_4644F0(this, v5); } return result; } //----- (004653B0) -------------------------------------------------------- int __thiscall sub_4653B0(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+10h] [bp-20h]@4 int v5; // [sp+1Ch] [bp-14h]@1 int v6; // [sp+20h] [bp-10h]@3 int v7; // [sp+2Ch] [bp-4h]@1 v1 = this; v5 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; unknown_libname_1(this + 72); v7 = 0; sub_5C75E0((void *)(v1 + 164), v1); LOBYTE(v7) = 1; *(_DWORD *)(v1 + 284) = 0; v2 = operator new(0x14u); if ( !v2 ) { v6 = 0; std::exception::exception(&v6); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 280) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 280) + 4) = *(_DWORD *)(v1 + 280); *(_DWORD *)(*(_DWORD *)(v1 + 280) + 8) = *(_DWORD *)(v1 + 280); *(_BYTE *)(*(_DWORD *)(v1 + 280) + 16) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 280) + 17) = 1; *(_DWORD *)(v1 + 316) = 0; *(_DWORD *)(v1 + 320) = 15; *(_BYTE *)(v1 + 300) = 0; *(_DWORD *)(v1 + 348) = 15; *(_DWORD *)(v1 + 344) = 0; *(_BYTE *)(v1 + 328) = 0; *(_DWORD *)(v1 + 376) = 15; *(_DWORD *)(v1 + 372) = 0; *(_BYTE *)(v1 + 356) = 0; *(_DWORD *)(v1 + 404) = 15; *(_DWORD *)(v1 + 400) = 0; *(_BYTE *)(v1 + 384) = 0; *(_DWORD *)(v1 + 432) = 15; *(_DWORD *)(v1 + 428) = 0; *(_BYTE *)(v1 + 412) = 0; *(_DWORD *)(v1 + 460) = 15; *(_DWORD *)(v1 + 456) = 0; *(_BYTE *)(v1 + 440) = 0; LOBYTE(v7) = 3; sub_43B030(v1 + 468); *(_DWORD *)(v1 + 88) = sub_549F80; *(_DWORD *)(v1 + 104) = sub_54A4F0; *(_DWORD *)(v1 + 120) = sub_54B4E0; *(_DWORD *)(v1 + 136) = sub_54AA80; *(_DWORD *)(v1 + 92) = 0; *(_DWORD *)(v1 + 108) = 0; *(_DWORD *)(v1 + 124) = 0; *(_DWORD *)(v1 + 140) = 0; *(_DWORD *)(v1 + 96) = 0; *(_DWORD *)(v1 + 112) = 0; *(_DWORD *)(v1 + 128) = 0; *(_DWORD *)(v1 + 144) = 0; *(_DWORD *)(v1 + 168) = 0; *(_DWORD *)(v1 + 60) = -1; *(_DWORD *)(v1 + 68) = 0; *(_BYTE *)(v1 + 84) = 0; *(_DWORD *)(v1 + 100) = 0; *(_DWORD *)(v1 + 116) = 0; *(_DWORD *)(v1 + 132) = 0; *(_DWORD *)(v1 + 148) = 0; memset((void *)(v1 + 176), 0, 0x61u); return v1; } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00465590) -------------------------------------------------------- int __thiscall sub_465590(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edx@2 int (__thiscall **v6)(void *, char); // [sp+10h] [bp-20h]@4 int v7; // [sp+1Ch] [bp-14h]@1 int v8; // [sp+20h] [bp-10h]@3 int v9; // [sp+2Ch] [bp-4h]@1 v2 = this; v7 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; unknown_libname_1(this + 72); v9 = 0; sub_5C75E0((void *)(v2 + 164), v2); LOBYTE(v9) = 1; *(_DWORD *)(v2 + 284) = 0; v3 = operator new(0x14u); if ( !v3 ) { v8 = 0; std::exception::exception(&v8); v6 = &off_6A1FD4; _CxxThrowException(&v6, &unk_733E50); } *(_DWORD *)(v2 + 280) = v3; *(_DWORD *)v3 = v3; *(_DWORD *)(*(_DWORD *)(v2 + 280) + 4) = *(_DWORD *)(v2 + 280); *(_DWORD *)(*(_DWORD *)(v2 + 280) + 8) = *(_DWORD *)(v2 + 280); *(_BYTE *)(*(_DWORD *)(v2 + 280) + 16) = 1; *(_BYTE *)(*(_DWORD *)(v2 + 280) + 17) = 1; *(_DWORD *)(v2 + 316) = 0; *(_DWORD *)(v2 + 320) = 15; *(_BYTE *)(v2 + 300) = 0; *(_DWORD *)(v2 + 348) = 15; *(_DWORD *)(v2 + 344) = 0; *(_BYTE *)(v2 + 328) = 0; *(_DWORD *)(v2 + 376) = 15; *(_DWORD *)(v2 + 372) = 0; *(_BYTE *)(v2 + 356) = 0; *(_DWORD *)(v2 + 404) = 15; *(_DWORD *)(v2 + 400) = 0; *(_BYTE *)(v2 + 384) = 0; *(_DWORD *)(v2 + 432) = 15; *(_DWORD *)(v2 + 428) = 0; *(_BYTE *)(v2 + 412) = 0; *(_DWORD *)(v2 + 460) = 15; *(_DWORD *)(v2 + 456) = 0; *(_BYTE *)(v2 + 440) = 0; LOBYTE(v9) = 3; sub_43B030(v2 + 468); *(_DWORD *)(v2 + 168) = 0; *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 88) = sub_549F80; *(_DWORD *)(v2 + 104) = sub_54A4F0; *(_DWORD *)(v2 + 120) = sub_54B4E0; *(_DWORD *)(v2 + 136) = sub_54AA80; *(_DWORD *)(v2 + 8) = v4; *(_DWORD *)(v2 + 92) = 0; *(_DWORD *)(v2 + 108) = 0; *(_DWORD *)(v2 + 124) = 0; *(_DWORD *)(v2 + 140) = 0; *(_DWORD *)(v2 + 96) = 0; *(_DWORD *)(v2 + 112) = 0; *(_DWORD *)(v2 + 128) = 0; *(_DWORD *)(v2 + 144) = 0; *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 68) = 0; *(_BYTE *)(v2 + 84) = 0; *(_DWORD *)(v2 + 100) = 0; *(_DWORD *)(v2 + 116) = 0; *(_DWORD *)(v2 + 132) = 0; *(_DWORD *)(v2 + 148) = 0; memset((void *)(v2 + 176), 0, 0x61u); *(_BYTE *)(v2 + 496) |= 3u; *(_DWORD *)(v2 + 500) = 180; return v2; } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00465790) -------------------------------------------------------- signed int __thiscall sub_465790(void *this, char a2) { unsigned int v2; // ST0C_4@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // eax@1 signed int result; // eax@2 signed int v7; // edi@3 int (__stdcall **v8)(int, int); // [sp+10h] [bp-228h]@1 int v9; // [sp+14h] [bp-224h]@1 int (__thiscall *v10)(int, int, int, int); // [sp+18h] [bp-220h]@1 char *v11; // [sp+1Ch] [bp-21Ch]@1 void *v12; // [sp+20h] [bp-218h]@1 __int16 v13; // [sp+24h] [bp-214h]@1 char v14; // [sp+28h] [bp-210h]@1 unsigned int v15; // [sp+228h] [bp-10h]@1 int v16; // [sp+234h] [bp-4h]@1 int v17; // [sp+238h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v2 = (unsigned int)&v17 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_MapMarking"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_MapMarking"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1212); v16 = 0; v5 = v4(v3, v2); sub_465590((int)&v14, v5); v8 = &off_6A4700; v9 = (int)&unk_CFCF380; v10 = sub_4521E0; v11 = &v14; v12 = 0; v13 = -1; LOBYTE(v16) = 2; sub_43C470((int)&unk_CFCF380, (int)&v8); LOBYTE(v16) = 1; v8 = &off_6A2544; if ( v12 ) { v7 = sub_452770(v12, v3, 25, 0, a2); if ( !v7 ) *(_BYTE *)(v3 + 326) = 1; LOBYTE(v16) = 0; sub_4646E0((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_MapMarking"); result = v7; } else { LOBYTE(v16) = 0; sub_4646E0((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_MapMarking"); result = 1; } return result; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00465910) -------------------------------------------------------- signed int __thiscall sub_465910(void *this, char a2) { unsigned int v2; // ST0C_4@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // eax@1 int (__thiscall *v6)(_DWORD); // edx@1 int v7; // edi@1 int v8; // eax@1 signed int result; // eax@2 int v10; // eax@4 signed int v11; // esi@7 int (__stdcall **v12)(int, int); // [sp+10h] [bp-228h]@1 int v13; // [sp+14h] [bp-224h]@1 int (__thiscall *v14)(int, int, int, int); // [sp+18h] [bp-220h]@1 char *v15; // [sp+1Ch] [bp-21Ch]@1 void *v16; // [sp+20h] [bp-218h]@1 __int16 v17; // [sp+24h] [bp-214h]@1 char v18; // [sp+28h] [bp-210h]@1 unsigned int v19; // [sp+228h] [bp-10h]@1 int v20; // [sp+234h] [bp-4h]@1 int v21; // [sp+238h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v2 = (unsigned int)&v21 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_MapMarking"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_MapMarking"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1212); v20 = 0; v5 = v4(v3, v2); sub_465590((int)&v18, v5); v12 = &off_6A4700; v13 = (int)&unk_CFCF380; v14 = sub_4521E0; v15 = &v18; v16 = 0; v17 = -1; LOBYTE(v20) = 2; sub_43C470((int)&unk_CFCF380, (int)&v12); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1804); LOBYTE(v20) = 1; v12 = &off_6A2544; v7 = 25; v8 = v6(v3); if ( v16 ) { if ( v8 ) { v10 = *(_DWORD *)(v8 + 4); if ( v10 ) { v7 = *(_WORD *)(v10 + 165); if ( v7 <= 0 ) v7 = 1; } } v11 = sub_452770(v16, v3, v7, 0, a2); LOBYTE(v20) = 0; sub_4646E0((int)&v18); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_MapMarking"); result = v11; } else { LOBYTE(v20) = 0; sub_4646E0((int)&v18); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_MapMarking"); result = 1; } return result; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00465AB0) -------------------------------------------------------- signed int __thiscall sub_465AB0(void *this, char a2) { unsigned int v2; // ST0C_4@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // eax@1 signed int result; // eax@2 signed int v7; // esi@3 int (__stdcall **v8)(int, int); // [sp+10h] [bp-228h]@1 int v9; // [sp+14h] [bp-224h]@1 int (__thiscall *v10)(int, int, int, int); // [sp+18h] [bp-220h]@1 char *v11; // [sp+1Ch] [bp-21Ch]@1 void *v12; // [sp+20h] [bp-218h]@1 __int16 v13; // [sp+24h] [bp-214h]@1 char v14; // [sp+28h] [bp-210h]@1 unsigned int v15; // [sp+228h] [bp-10h]@1 int v16; // [sp+234h] [bp-4h]@1 int v17; // [sp+238h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v2 = (unsigned int)&v17 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_MapMarking"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::so_MapMarking"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1212); v16 = 0; v5 = v4(v3, v2); sub_465590((int)&v14, v5); v8 = &off_6A4700; v9 = (int)&unk_CFCF380; v10 = sub_4521E0; v11 = &v14; v12 = 0; v13 = -1; LOBYTE(v16) = 2; sub_43C470((int)&unk_CFCF380, (int)&v8); LOBYTE(v16) = 1; v8 = &off_6A2544; if ( v12 ) { v7 = sub_452770(v12, v3, 25, 0, a2); LOBYTE(v16) = 0; sub_4646E0((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_MapMarking"); result = v7; } else { LOBYTE(v16) = 0; sub_4646E0((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_MapMarking"); result = 1; } return result; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00465C20) -------------------------------------------------------- int __thiscall sub_465C20(int this) { int v1; // esi@1 signed int v2; // ecx@1 int v3; // eax@1 int v4; // edi@1 int v5; // edx@3 int v6; // edx@6 bool v7; // zf@6 int v8; // edx@6 int v9; // edx@9 int v10; // edx@9 int v11; // edx@12 int v12; // edx@12 v1 = this; *(_DWORD *)this = &off_6B0410; *(_DWORD *)(this + 16) = 0; sub_463120(this, 0x200u); *(_DWORD *)v1 = &off_6B0720; sub_63AB40(v1 + 24); _eh_vector_constructor_iterator_( (void *)(v1 + 69744), 0x200u, 512, (int)sub_4653B0, (void (__thiscall *)(void *))sub_4646E0); v2 = 2; v3 = 0; v4 = v1 + 70256; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v4 - 512; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v6 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 + 12) == 0; v8 = v6 + v3 + 12; if ( v7 ) *(_DWORD *)v8 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v9 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v9 + v3 + 24) == 0; v10 = v9 + v3 + 24; if ( v7 ) *(_DWORD *)v10 = v4 + 512; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v11 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v11 + v3 + 36) == 0; v12 = v11 + v3 + 36; if ( v7 ) *(_DWORD *)v12 = v4 + 1024; } v2 += 4; v3 += 48; v4 += 2048; } while ( v2 - 2 < 512 ); return v1; } // 6B0410: using guessed type int (__thiscall *off_6B0410)(void *, char); // 6B0720: using guessed type int (__thiscall *off_6B0720)(void *, char); //----- (00465D50) -------------------------------------------------------- void *__thiscall sub_465D50(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_4647A0((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00465D80) -------------------------------------------------------- int __stdcall sub_465D80(const char *a1) { int (__stdcall **v2)(int, int); // [sp+4h] [bp-234h]@1 int v3; // [sp+8h] [bp-230h]@1 int (__thiscall *v4)(int, int, int, int); // [sp+Ch] [bp-22Ch]@1 char *v5; // [sp+10h] [bp-228h]@1 int v6; // [sp+14h] [bp-224h]@1 __int16 v7; // [sp+18h] [bp-220h]@1 char v8; // [sp+1Ch] [bp-21Ch]@1 char v9[4]; // [sp+21Ch] [bp-1Ch]@1 int v10; // [sp+220h] [bp-18h]@1 int v11; // [sp+224h] [bp-14h]@1 unsigned int v12; // [sp+228h] [bp-10h]@1 int v13; // [sp+234h] [bp-4h]@1 int v14; // [sp+238h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, a1, 0xCu); sub_465590((int)&v8, (int)v9); v13 = 0; v2 = &off_6A4700; v3 = (int)&unk_CFCF380; v4 = sub_4521E0; v5 = &v8; v6 = 0; v7 = -1; LOBYTE(v13) = 1; sub_43C470((int)&unk_CFCF380, (int)&v2); v2 = &off_6A2544; v13 = -1; sub_4646E0((int)&v8); return v6; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00465E70) -------------------------------------------------------- signed int __thiscall sub_465E70(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 _BYTE *v4; // ecx@1 signed int v5; // eax@1 int v6; // eax@4 signed int result; // eax@5 signed int v8; // eax@6 signed int v9; // esi@6 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1212))(v1); v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)v2; *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 8); v4[12] = 0; v5 = sub_639620(&unk_14D20404, v4); if ( v5 == -1 ) LOWORD(v5) = -1; v5 = (unsigned __int16)v5; if ( (unsigned __int16)v5 < dword_14D20400 && (v6 = *(_DWORD *)(dword_14D203FC + 4 * v5)) != 0 ) { **(_DWORD **)((char *)v1 + 102) = *(_DWORD *)(v6 + 50); *(_DWORD *)(*(_DWORD *)((char *)v1 + 102) + 4) = *(_DWORD *)(v6 + 54); v8 = sub_465790(v1, 0); --dword_750CB8; v9 = v8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"); result = v9; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00465FC0) -------------------------------------------------------- int __cdecl sub_465FC0(int a1, int a2, int a3) { *(_WORD *)a1 = *(_WORD *)a2; sub_464600(a1 + 4, a3); return a1; } //----- (00465FF0) -------------------------------------------------------- int __thiscall sub_465FF0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@6 int v7; // edx@6 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@13 int v11; // edx@14 int v12; // esi@14 int v13; // esi@15 int v14; // edx@18 int v15; // esi@20 int v16; // esi@22 int v17; // edx@26 int v18; // esi@26 int v19; // edi@26 int v20; // edi@28 int v21; // edi@30 int v22; // esi@33 void *v23; // edx@36 int v24; // esi@36 int v25; // esi@38 int v26; // esi@40 int v27; // edi@46 int v28; // edi@48 int v29; // ecx@54 int result; // eax@54 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_CCCCCCB ) { if ( *((_DWORD *)a5 + 4) ) operator delete(*((void **)a5 + 4)); *((_DWORD *)a5 + 4) = 0; *((_DWORD *)a5 + 5) = 0; *((_DWORD *)a5 + 6) = 0; operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; v8 = *(_DWORD *)(this + 4); LABEL_12: *(_DWORD *)(v8 + 8) = a5; goto LABEL_13; } if ( !a3 ) { *(_DWORD *)(a4 + 8) = a5; v8 = *(_DWORD *)(this + 4); if ( a4 != *(_DWORD *)(v8 + 8) ) goto LABEL_13; goto LABEL_12; } *(_DWORD *)a4 = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v9 ) *(_DWORD *)v9 = a5; LABEL_13: v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 32) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 32) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 33) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 33) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_52: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 32) = 1; *(_BYTE *)(v13 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 32) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 33) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 33) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_52; } *(_BYTE *)(v11 + 32) = 1; *(_BYTE *)(v22 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 32) = 1; return result; } //----- (00466230) -------------------------------------------------------- int __thiscall sub_466230(int this, int a2, int a3, int a4, int a5) { int v5; // edi@1 int result; // eax@1 int v7; // eax@3 int v8; // ecx@3 int v9; // [sp+0h] [bp-28h]@1 int v10; // [sp+10h] [bp-18h]@1 int v11; // [sp+14h] [bp-14h]@1 int *v12; // [sp+18h] [bp-10h]@1 int v13; // [sp+24h] [bp-4h]@1 v12 = &v9; v5 = this; v10 = this; result = a3; v11 = a3; v13 = 0; while ( result != a4 ) { v7 = loc_43AF30(v5, a2, *(_DWORD *)(a2 + 4), result + 8); v8 = *(_DWORD *)(v5 + 4); if ( (unsigned int)((char *)&unk_AAAAAA9 - v8) < 1 ) sub_65178B((int)"list too long"); *(_DWORD *)(v5 + 4) = v8 + 1; *(_DWORD *)(a2 + 4) = v7; **(_DWORD **)(v7 + 4) = v7; result = *(_DWORD *)a3; a3 = *(_DWORD *)a3; } return result; } //----- (00466300) -------------------------------------------------------- int __thiscall sub_466300(void *this) { int v1; // ebx@1 int v2; // edi@1 int v3; // esi@5 int v4; // eax@8 _BYTE *v5; // eax@8 signed int v6; // eax@8 signed __int16 v7; // di@9 int v8; // eax@11 int v9; // eax@11 int v10; // ecx@14 int v11; // eax@14 int v12; // eax@19 int *v13; // ecx@21 int v14; // ebx@23 int v15; // edi@24 void *v16; // eax@24 int v17; // eax@26 int v18; // esi@26 int v19; // eax@26 unsigned int v20; // ecx@31 unsigned int v21; // eax@32 signed int v22; // edx@33 int v23; // esi@33 void *v24; // eax@38 int v26; // [sp+Ch] [bp-C8h]@26 char v27; // [sp+14h] [bp-C0h]@26 void *v28; // [sp+18h] [bp-BCh]@26 int v29; // [sp+1Ch] [bp-B8h]@28 int v30; // [sp+20h] [bp-B4h]@28 int v31; // [sp+28h] [bp-ACh]@1 int v32; // [sp+2Ch] [bp-A8h]@19 int v33; // [sp+30h] [bp-A4h]@22 int v34; // [sp+34h] [bp-A0h]@1 void *v35; // [sp+38h] [bp-9Ch]@24 void *v36; // [sp+3Ch] [bp-98h]@24 int v37; // [sp+40h] [bp-94h]@24 int v38; // [sp+48h] [bp-8Ch]@9 void *v39; // [sp+4Ch] [bp-88h]@1 int v40; // [sp+50h] [bp-84h]@1 int (__thiscall **v41)(void *, char); // [sp+54h] [bp-80h]@1 int v42; // [sp+88h] [bp-4Ch]@1 int v43; // [sp+94h] [bp-40h]@1 int v44; // [sp+98h] [bp-3Ch]@1 int v45; // [sp+9Ch] [bp-38h]@1 unsigned int v46; // [sp+C4h] [bp-10h]@1 int v47; // [sp+D0h] [bp-4h]@1 int v48; // [sp+D4h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v39 = this; v31 = (int)"MapBuffDataBox::mbdb_Load"; sub_4675D0((int)&unk_D020420, (int)"MapBuffDataBox::mbdb_Load"); dword_7508B8[dword_750CB8] = (int)"MapBuffDataBox::mbdb_Load"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v47 = 0; sub_639920((int)&v41); v41 = &off_6B05C8; v45 = 0; v44 = 0; v43 = 0; memset(&v43, 0, 0x30u); LOBYTE(v47) = 1; sub_461FB0(&v41, "../9Data/Shine/MapBuff.shn"); v2 = 0; v34 = *(_DWORD *)(v42 + 40); v40 = 0; if ( v34 > 0 ) { while ( 1 ) { if ( (unsigned int)v2 < *(_DWORD *)(v42 + 40) ) { v3 = sub_626BC0((int)&v41, v2); if ( v3 == v1 ) { sub_639100(&unk_86DDD8, (int)"MapBuffDataBox::mbdb_Load : MapBuff NULL", v2); loc_6391B0("MapBuffDataBox::mbdb_Load"); } } else { v3 = (int)&v43; } v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v6 = sub_639620(&unk_14D20404, v5); if ( v6 == -1 ) { v7 = -1; v38 = 65535; } else { v7 = v6; v38 = (unsigned __int16)v6; if ( (_WORD)v6 != -1 ) goto LABEL_12; } v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = (int)&byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v3; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v3 + 8); *(_BYTE *)(v9 + 12) = 0; sub_6390B0(&unk_86DDD8, (int)"MapBuffDataBox::mbdb_Load : Invalid Map Name", v9); loc_6391B0("MapBuffDataBox::mbdb_Load"); LABEL_12: if ( !sub_418C10((int)&unk_877138, (unsigned __int8 *)(v3 + 16)) ) { sub_6390B0(&unk_86DDD8, (int)"MapBuffDataBox::mbdb_Load : Invalid Abstate Name", v3 + 16); loc_6391B0("MapBuffDataBox::mbdb_Load"); } v10 = *((_DWORD *)v39 + 1); v11 = *(_DWORD *)(v10 + 4); while ( !*(_BYTE *)(v11 + 33) ) { if ( *(_WORD *)(v11 + 12) >= (unsigned __int16)v7 ) { v10 = v11; v11 = *(_DWORD *)v11; } else { v11 = *(_DWORD *)(v11 + 8); } } v12 = *((_DWORD *)v39 + 1); v32 = v10; if ( v10 == v12 || (unsigned __int16)v7 < *(_WORD *)(v10 + 12) ) { v33 = v12; v13 = &v33; } else { v13 = &v32; } v14 = *v13; if ( *v13 == v12 ) { v15 = 0; v35 = 0; v36 = 0; v37 = 0; LOBYTE(v47) = 2; sub_465330((int)&v35, 1); v16 = v36; if ( v36 ) { memcpy(v36, (const void *)v3, 0x30u); v15 = 0; } v36 = (char *)v16 + 48; v17 = sub_465FC0((int)&v27, (int)&v38, (int)&v35); v18 = (int)v39; LOBYTE(v47) = 3; v19 = sub_4AFB10(v39, v17); sub_4AF820(v18, (int)&v26, (void *)v19, v15); if ( v28 != (void *)v15 ) operator delete(v28); v28 = (void *)v15; v29 = v15; v30 = v15; LOBYTE(v47) = 1; if ( v35 != (void *)v15 ) operator delete(v35); v35 = (void *)v15; v36 = (void *)v15; v37 = v15; } else { v20 = *(_DWORD *)(v14 + 20); if ( v3 >= v20 || (v21 = *(_DWORD *)(v14 + 16), v21 > v3) ) { if ( v20 == *(_DWORD *)(v14 + 24) ) sub_465330(v14 + 16, 1); } else { v22 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(v3 - v21)) >> 32) >> 3; v23 = v22 + ((unsigned int)v22 >> 31); if ( v20 == *(_DWORD *)(v14 + 24) ) sub_465330(v14 + 16, 1); v3 = *(_DWORD *)(v14 + 16) + 48 * v23; } v24 = *(void **)(v14 + 20); if ( v24 ) memcpy(v24, (const void *)v3, 0x30u); *(_DWORD *)(v14 + 20) += 48; } ++v40; if ( v40 >= v34 ) break; v2 = v40; v1 = 0; } } LOBYTE(v47) = 0; v41 = &off_6B05C8; sub_639940((int)&v41); --dword_750CB8; v47 = -1; return sub_467660((int)&unk_D020420, (int)"MapBuffDataBox::mbdb_Load"); } // 6B05C8: using guessed type int (__thiscall *off_6B05C8)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (004666E0) -------------------------------------------------------- int __thiscall sub_4666E0(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-10h]@4 int v5; // [sp+10h] [bp-4h]@3 v1 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x24u); if ( !v2 ) { v5 = 0; std::exception::exception(&v5); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 32) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 33) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00466750) -------------------------------------------------------- int __thiscall sub_466750(void *this, int *a2) { int *v2; // ebx@1 int v3; // edi@1 int v4; // esi@2 int v5; // ebx@3 int v6; // ST1C_4@4 int result; // eax@5 int v8; // [sp+18h] [bp+8h]@2 int v9; // [sp+18h] [bp+8h]@4 v2 = a2; v3 = (int)this; if ( this != a2 ) { v4 = *a2; v8 = *(_DWORD *)*a2; sub_43AD00(this); sub_466230(v3, **(_DWORD **)v3, v8, v4, v8); } v5 = (int)(v2 + 3); if ( v3 + 12 != v5 ) { v9 = *(_DWORD *)v5; v6 = **(_DWORD **)v5; sub_43A160((void *)(v3 + 12)); sub_4639F0(v3 + 12, **(_DWORD **)(v3 + 12), v6, v9, v9); } result = v3; *(_DWORD *)(v3 + 24) = *(_DWORD *)(v5 + 12); return result; } //----- (004667D0) -------------------------------------------------------- int __thiscall sub_4667D0(int this, int a2) { int v2; // eax@1 int v3; // ebx@1 char v5; // [sp+Ch] [bp-4h]@2 v2 = a2; v3 = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); memcpy((void *)(this + 32), (const void *)(a2 + 32), 0x22u); *(_DWORD *)(this + 68) = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 72) = *(_DWORD *)(a2 + 72); *(_DWORD *)(this + 76) = *(_DWORD *)(a2 + 76); *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); memcpy((void *)(this + 88), (const void *)(a2 + 88), 0x58u); memcpy((void *)(this + 176), (const void *)(a2 + 176), 0x61u); if ( this + 276 != a2 + 276 ) { sub_5AFEC0(this + 276, (int)&v5, **(_DWORD **)(this + 280), *(_DWORD *)(this + 280)); sub_463670(v3 + 276, a2 + 276); v2 = a2; } *(_DWORD *)(v3 + 292) = *(_DWORD *)(v2 + 292); sub_463970(v3 + 296, v2 + 296); sub_466750((void *)(v3 + 468), (int *)(a2 + 468)); *(_BYTE *)(v3 + 496) = *(_BYTE *)(a2 + 496); *(_DWORD *)(v3 + 500) = *(_DWORD *)(a2 + 500); *(_DWORD *)(v3 + 504) = *(_DWORD *)(a2 + 504); return v3; } //----- (00466940) -------------------------------------------------------- char __thiscall sub_466940(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_4667D0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00466980) -------------------------------------------------------- char __thiscall sub_466980(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_4667D0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (004669C0) -------------------------------------------------------- char __thiscall sub_4669C0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4667D0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00466A10) -------------------------------------------------------- char __thiscall sub_466A10(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4667D0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00466A60) -------------------------------------------------------- int __thiscall sub_466A60(int this) { float v1; // eax@1 float v2; // edx@1 unsigned __int64 v3; // st6@3 LODWORD(v1) = *(_DWORD *)(this + 4); LODWORD(v2) = *(_DWORD *)this; if ( v1 == 0.0 && v2 == 0.0 ) *(double *)&v3 = 0.0; else *(double *)&v3 = (double)*(unsigned __int64 *)(this + 16) / (double)*(unsigned __int64 *)&Frequency / (double)__PAIR__(LODWORD(v1), LODWORD(v2)); return fprintf( dword_D020410, "%s\t%I64u\t%f\t%f\n", *(_DWORD *)(this + 24), LODWORD(v2), LODWORD(v1), (double)*(unsigned __int64 *)(this + 16) / (double)*(unsigned __int64 *)&Frequency, v3, v3 >> 32); } //----- (00466B30) -------------------------------------------------------- signed int __thiscall sub_466B30(int this) { signed int result; // eax@1 result = *(_WORD *)(this + 18); if ( (signed __int16)result > 0 ) { *(_WORD *)(this + 16) = result; result = -1; *(_WORD *)(this + 18) = -1; } return result; } //----- (00466B50) -------------------------------------------------------- int __thiscall sub_466B50(int this, int a2) { int result; // eax@1 *(_WORD *)(this + 2 * *(_DWORD *)this + 8) = *(_WORD *)a2; result = *(_DWORD *)(this + 4) & (*(_DWORD *)this + 1); *(_DWORD *)this = result; *(_WORD *)(this + 2 * result + 8) = 0; return result; } //----- (00466B80) -------------------------------------------------------- int __thiscall sub_466B80(__time32_t this, int a2) { __time32_t v2; // esi@1 struct tm *v3; // eax@1 FILE *v4; // edi@1 int v5; // esi@1 signed int v6; // ebx@1 signed int v7; // esi@3 int v8; // ebx@3 __time32_t Time; // [sp+Ch] [bp-4Ch]@1 __time32_t v11; // [sp+10h] [bp-48h]@1 char v12; // [sp+14h] [bp-44h]@1 unsigned int v13; // [sp+54h] [bp-4h]@1 int v14; // [sp+58h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = this; v11 = this; sub_44FB50(this, (int)&Time); v3 = _localtime32(&Time); sprintf(&v12, "%s%04d%02d%02d%02d.txt", a2, v3->tm_year + 1900, v3->tm_mon + 1, v3->tm_mday, v3->tm_hour); v4 = fopen(&v12, "w"); fprintf(v4, "%s\n", "20120409-Hero[Release]-1"); v5 = v2 + 8; v6 = 64; do { fprintf(v4, "%d/%d\n", (unsigned int)*(_WORD *)v5 >> 10, *(_WORD *)v5 & 0x3FF); v5 += 2; --v6; } while ( v6 ); v7 = 127; v8 = v11 + 644; do { if ( *(_DWORD *)v8 ) fprintf(v4, "%c %s[%u]\n", *(_DWORD *)(v11 + 1160) - 1 != v7 ? 32 : 62, *(_DWORD *)v8, *(_DWORD *)(v8 + 512)); v8 -= 4; --v7; } while ( v7 >= 0 ); return fclose(v4); } // 86FEB8: using guessed type int __security_cookie; //----- (00466C90) -------------------------------------------------------- int __cdecl sub_466C90(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (00466CB0) -------------------------------------------------------- void *__thiscall sub_466CB0(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 49) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 49) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 49); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (00466D00) -------------------------------------------------------- int __thiscall sub_466D00(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 49) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00466D60) -------------------------------------------------------- int __thiscall sub_466D60(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 49) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00466DC0) -------------------------------------------------------- int __thiscall sub_466DC0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_7FFFFFE ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 48) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 48) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 49) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 49) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 48) = 1; *(_BYTE *)(v13 + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 48) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 49) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 49) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 48) = 1; *(_BYTE *)(v22 + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 48) = 1; return result; } //----- (00467060) -------------------------------------------------------- int __thiscall sub_467060(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 49) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_466CB0(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 49) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 49) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 49) ) { v9 = v6; } else { v9 = sub_4B67C0(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 49) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_466C90(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 49) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 49) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 48); *(_BYTE *)(v5 + 48) = *(_BYTE *)(v3 + 48); *(_BYTE *)(v3 + 48) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 48) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 48) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 48) ) { *(_BYTE *)(v15 + 48) = 1; *(_BYTE *)(v6 + 48) = 0; sub_466D00(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 49) ) goto LABEL_53; 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; sub_466D60(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 48) = *(_BYTE *)(v6 + 48); *(_BYTE *)(v6 + 48) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) = 1; sub_466D00(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 48) ) { *(_BYTE *)(v15 + 48) = 1; *(_BYTE *)(v6 + 48) = 0; sub_466D60(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 49) ) goto LABEL_53; 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; sub_466D00(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 48) = *(_BYTE *)(v6 + 48); *(_BYTE *)(v6 + 48) = 1; *(_BYTE *)(*(_DWORD *)v15 + 48) = 1; sub_466D60(i, v6); break; } } *(_BYTE *)(v15 + 48) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 48) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (004672B0) -------------------------------------------------------- void __stdcall sub_4672B0(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 49); v1 = i ) { sub_4672B0(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (004672F0) -------------------------------------------------------- int __thiscall sub_4672F0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned int v10; // edi@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 49) ) { v10 = *((_DWORD *)a3 + 10); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v7 + 40) >= v10; else v9 = v10 < *(_DWORD *)(v7 + 40); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 49) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_466DC0(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_4B67E0(&a4); v11 = a4; v4 = a3; } if ( *(_DWORD *)(v11 + 40) >= *((_DWORD *)v4 + 10) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_466DC0(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (004673D0) -------------------------------------------------------- FILE *__thiscall sub_4673D0(void *this) { void *v1; // edi@1 FILE *result; // eax@1 int v3; // eax@2 int v4; // esi@2 int v5; // eax@4 int j; // eax@5 int i; // eax@8 v1 = this; result = fopen("FunctionPerformance.txt", "w"); dword_D020410 = result; if ( result ) { fprintf(result, "Function\tExec Number\tTotal Second\tSecond/exec\n"); v3 = *((_DWORD *)v1 + 1); v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 != v3 ) { do { sub_466A60(v4 + 16); if ( !*(_BYTE *)(v4 + 49) ) { v5 = *(_DWORD *)(v4 + 8); if ( *(_BYTE *)(v5 + 49) ) { for ( i = *(_DWORD *)(v4 + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( v4 != *(_DWORD *)(i + 8) ) break; v4 = i; } v4 = i; } else { v4 = *(_DWORD *)(v4 + 8); for ( j = *(_DWORD *)v5; !*(_BYTE *)(j + 49); j = *(_DWORD *)j ) v4 = j; } } } while ( v4 != *((_DWORD *)v1 + 1) ); } result = (FILE *)fclose(dword_D020410); dword_D020410 = 0; } return result; } //----- (00467480) -------------------------------------------------------- int __thiscall sub_467480(int this, __int16 a2) { int v2; // edx@1 int result; // eax@1 int v4; // edx@3 int j; // edx@4 int i; // edx@7 v2 = *(_DWORD *)(this + 4); *(_WORD *)(this + 18) = a2; result = *(_DWORD *)v2; if ( *(_DWORD *)v2 != v2 ) { do { *(_DWORD *)(result + 32) = 0; *(_DWORD *)(result + 36) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 28) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 20) = 0; if ( !*(_BYTE *)(result + 49) ) { v4 = *(_DWORD *)(result + 8); if ( *(_BYTE *)(v4 + 49) ) { for ( i = *(_DWORD *)(result + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( result != *(_DWORD *)(i + 8) ) break; result = i; } result = i; } else { result = *(_DWORD *)(result + 8); for ( j = *(_DWORD *)v4; !*(_BYTE *)(j + 49); j = *(_DWORD *)j ) result = j; } } } while ( result != *(_DWORD *)(this + 4) ); } return result; } //----- (004674F0) -------------------------------------------------------- FILE *__thiscall sub_4674F0(int this) { int v1; // esi@1 FILE *result; // eax@1 v1 = this; result = (FILE *)*(_WORD *)(this + 16); if ( (signed __int16)result >= 0 ) { if ( !(_WORD)result ) result = sub_4673D0((void *)this); --*(_WORD *)(v1 + 16); } return result; } //----- (00467510) -------------------------------------------------------- int __thiscall sub_467510(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 49) ) { if ( *(_DWORD *)(v4 + 40) >= *(_DWORD *)(a3 + 24) ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_DWORD *)(a3 + 24) < *(_DWORD *)(v3 + 40) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (00467580) -------------------------------------------------------- int __thiscall sub_467580(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 49) ) { do { sub_4672B0(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 49) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (004675D0) -------------------------------------------------------- void __thiscall sub_4675D0(int this, int a2) { int v2; // esi@1 int v3; // eax@2 void *v4; // eax@3 unsigned __int8 v5; // cf@4 int v6; // [sp+8h] [bp-28h]@2 int v7; // [sp+Ch] [bp-24h]@3 int v8; // [sp+10h] [bp-20h]@3 int v9; // [sp+14h] [bp-1Ch]@3 int v10; // [sp+18h] [bp-18h]@3 int v11; // [sp+1Ch] [bp-14h]@3 int v12; // [sp+20h] [bp-10h]@2 int v13; // [sp+28h] [bp-8h]@3 v2 = this; if ( *(_WORD *)(this + 16) > 0 ) { v12 = a2; sub_467510(this, (int)&a2, (int)&v6); v3 = a2; if ( a2 != *(_DWORD *)(v2 + 4) || (v10 = 0, v11 = 0, v8 = 0, v9 = 0, v6 = 0, v7 = 0, v4 = (void *)loc_466FF0(v2, &v6), sub_4672F0(v2, (int)&v13, v4, 0), v3 = *(_DWORD *)sub_467510(v2, (int)&a2, (int)&v6), v3 != *(_DWORD *)(v2 + 4)) ) { v5 = __CFADD__((*(_DWORD *)(v3 + 16))++, 1); *(_DWORD *)(v3 + 20) += v5; QueryPerformanceCounter((LARGE_INTEGER *)(v3 + 24)); } } } //----- (00467660) -------------------------------------------------------- int __thiscall sub_467660(int this, int a2) { int v2; // edi@1 int result; // eax@2 int v4; // esi@2 DWORD v5; // ecx@3 int v6; // edx@3 unsigned __int8 v7; // cf@3 char v8; // [sp+4h] [bp-28h]@2 int v9; // [sp+1Ch] [bp-10h]@2 LARGE_INTEGER PerformanceCount; // [sp+24h] [bp-8h]@3 v2 = this; if ( *(_WORD *)(this + 16) > 0 ) { v9 = a2; result = sub_467510(this, (int)&a2, (int)&v8); v4 = a2; if ( a2 != *(_DWORD *)(v2 + 4) ) { result = QueryPerformanceCounter(&PerformanceCount); v5 = PerformanceCount.LowPart - *(_DWORD *)(v4 + 24); v6 = (unsigned __int64)(*(_QWORD *)&PerformanceCount - *(_QWORD *)(v4 + 24)) >> 32; v7 = __CFADD__(v5, *(_DWORD *)(v4 + 32)); *(_DWORD *)(v4 + 32) += v5; *(_DWORD *)(v4 + 36) += v6 + v7; } } return result; } //----- (004676C0) -------------------------------------------------------- int __thiscall sub_4676C0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 49) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 49) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 49); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_467060((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_467580(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (00467760) -------------------------------------------------------- int __thiscall sub_467760(int this) { int v1; // esi@1 int v2; // eax@1 LONG v3; // edx@2 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-10h]@6 int v6; // [sp+10h] [bp-4h]@5 v1 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x38u); if ( !v2 ) { v6 = 0; std::exception::exception(&v6); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 48) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 49) = 1; QueryPerformanceFrequency(&Frequency); v3 = Frequency.HighPart | Frequency.LowPart; if ( !*(_QWORD *)&Frequency ) { Frequency.LowPart = 1; Frequency.HighPart = v3; } *(_WORD *)(v1 + 18) = -1; *(_WORD *)(v1 + 16) = -1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00467810) -------------------------------------------------------- void *__thiscall sub_467810(void *this) { void *v1; // esi@1 v1 = this; sub_5A4590(this); *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *(_DWORD *)v1 = &off_6B0D34; *((_DWORD *)v1 + 2) = 2; return v1; } // 6B0D34: using guessed type int (__stdcall *off_6B0D34)(int); //----- (00467840) -------------------------------------------------------- int (__stdcall **__thiscall sub_467840(int this))(int, int) { *(_DWORD *)this = &off_6B0D34; return sub_5A4290(this); } // 6B0D34: using guessed type int (__stdcall *off_6B0D34)(int); //----- (00467850) -------------------------------------------------------- int __stdcall sub_467850(unsigned int *a1, int a2) { unsigned int v2; // eax@1 char v4; // [sp+8h] [bp-50h]@1 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 int v7; // [sp+58h] [bp+0h]@1 v5 = (unsigned int)&v7 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_DummyFunction"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_DummyFunction"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)a1; v6 = 0; sprintf(&v4, "%d/%d:%d", v2 >> 10, v2 & 0x3FF, a2); sub_6390B0(&unk_86DDD8, (int)"GameDBSession::gds_DummyFunction", (int)&v4); --dword_750CB8; v6 = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_DummyFunction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00467930) -------------------------------------------------------- int __thiscall sub_467930(void *this, int a2, int a3) { int v3; // edi@1 void *v4; // esi@1 char v5; // cl@1 __int16 v6; // dx@1 __int16 v7; // ax@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 2050; *(_WORD *)((char *)v4 + 3) = 1538; *((_BYTE *)v4 + 5) = sub_5A7540(byte_14D16AE8)[12]; v5 = sub_5A7540(byte_14D16AE8)[16]; v6 = *((_BYTE *)v4 + 3); v7 = *((_BYTE *)v4 + 4); *((_BYTE *)v4 + 6) = v5; *(_WORD *)((char *)v4 + 7) = v7 + v6; if ( sub_4C81E0(&off_849C18, 9) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY : Packet Too Long", 9); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00467A40) -------------------------------------------------------- int __thiscall sub_467A40(int this, int a2, int a3) { sub_5A0860(&dword_14D16430, this); return sub_622CD0(&unk_14D41F98); } // 14D16430: using guessed type int dword_14D16430; //----- (00467A60) -------------------------------------------------------- int __thiscall sub_467A60(void *this, int a2, int a3) { int v3; // esi@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 2053; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"GameDBSession::wms_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00467B40) -------------------------------------------------------- int __stdcall sub_467B40(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 15, 7, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3368))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00467C20) -------------------------------------------------------- int __stdcall sub_467C20(int a1, int a2) { int v2; // ST0C_4@1 int v3; // esi@1 int v4; // eax@4 int v5; // edi@4 char v7; // [sp+10h] [bp-28h]@6 int v8; // [sp+28h] [bp-10h]@1 int v9; // [sp+34h] [bp-4h]@1 v8 = (int)"GameDBSession::NC_CHAR_TUTORIAL_STEP_SAVE_ACK"; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::NC_CHAR_TUTORIAL_STEP_SAVE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::NC_CHAR_TUTORIAL_STEP_SAVE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 2); v9 = 0; v3 = sub_54E4D0(&unk_13253630, v2); if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v9 = -1; } else { v4 = sub_4012C0(v3); v5 = v4; if ( v4 && *(_DWORD *)sub_42A870((void *)v4) ) { sub_5D4B00((int)&v7, v5, v3, 1, *(_BYTE *)(a1 + 10)); LOBYTE(v9) = 1; sub_463090(v5, 60, (int)&v7); LOBYTE(v9) = 0; sub_5D4580(&v7); } v9 = -1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::NC_CHAR_TUTORIAL_STEP_SAVE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00467D30) -------------------------------------------------------- int __stdcall sub_467D30(int a1, int a2) { int v2; // esi@1 int v3; // edx@3 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_TUTORIAL_FREESTAT_INIT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_TUTORIAL_FREESTAT_INIT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v3 = *(_DWORD *)v2; if ( *(_WORD *)(a1 + 6) == 12781 ) (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(v3 + 1528))(v2, 12781, 0, 0); else (*(void (__thiscall **)(int))(v3 + 888))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2768))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_TUTORIAL_FREESTAT_INIT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00467E20) -------------------------------------------------------- int __stdcall sub_467E20(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // ebx@3 int (__thiscall *v5)(_DWORD); // eax@6 int v6; // eax@7 int v7; // ST04_4@8 __time32_t v8; // eax@8 __time32_t v9; // eax@8 void *v10; // eax@9 int v11; // eax@10 int v12; // eax@13 int v14; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MOVER_UPGRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MOVER_UPGRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); if ( *(_WORD *)(a1 + 10) == 12848 ) { v6 = v5(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)(a1 + 2), 0) ) { v7 = *(_WORD *)(a1 + 2); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_MOVER_UPGRADE_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } v10 = off_849C18; *(_DWORD *)off_849C18 = 841494610; } else { v11 = v5(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 40))(v11, *(_WORD *)(a1 + 2)); v10 = off_849C18; *(_DWORD *)off_849C18 = 841756754; } *((_BYTE *)v10 + 4) = 0; *((_BYTE *)v10 + 5) = *(_BYTE *)(a1 + 12); *((_BYTE *)v10 + 6) = *(_BYTE *)(a1 + 13); *(_WORD *)((char *)v10 + 7) = *(_WORD *)(a1 + 14); memcpy((char *)v10 + 9, (const void *)(a1 + 16), 0x65u); if ( sub_4C81E0(&off_849C18, 110) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MOVER_UPGRADE_ACK : Packet Too Long", 110); } sub_55F510(v4, 0); } v14 = (int)"GameDBSession::gds_NC_ITEMDB_MOVER_UPGRADE_ACK"; } else { v14 = (int)"GameDBSession::gds_NC_ITEMDB_MOVER_UPGRADE_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00467FF0) -------------------------------------------------------- int __stdcall sub_467FF0(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // ebx@3 int (__thiscall *v5)(_DWORD); // eax@6 int v6; // eax@7 int v7; // ST04_4@8 __time32_t v8; // eax@8 __time32_t v9; // eax@8 void *v10; // eax@9 int v11; // eax@10 int v12; // eax@13 int v14; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MOVER_RAREMOVER_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MOVER_RAREMOVER_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); if ( *(_WORD *)(a1 + 10) == 12856 ) { v6 = v5(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)(a1 + 2), 0) ) { v7 = *(_WORD *)(a1 + 2); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_MOVER_RAREMOVER_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } v10 = off_849C18; *(_DWORD *)off_849C18 = 841494610; } else { v11 = v5(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 40))(v11, *(_WORD *)(a1 + 2)); v10 = off_849C18; *(_DWORD *)off_849C18 = 841756754; } *((_WORD *)v10 + 2) = 1; *((_BYTE *)v10 + 6) = *(_BYTE *)(a1 + 12); *(_WORD *)((char *)v10 + 7) = *(_WORD *)(a1 + 13); memcpy((char *)v10 + 9, (const void *)(a1 + 15), 0x65u); if ( sub_4C81E0(&off_849C18, 110) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MOVER_RAREMOVER_ACK : Packet Too Long", 110); } sub_55F510(v4, 0); } v14 = (int)"GameDBSession::gds_NC_ITEMDB_MOVER_RAREMOVER_ACK"; } else { v14 = (int)"GameDBSession::gds_NC_ITEMDB_MOVER_RAREMOVER_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004681C0) -------------------------------------------------------- int __stdcall sub_4681C0(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int v5; // edx@5 int v6; // eax@6 int v7; // ST04_4@7 __time32_t v8; // eax@7 __time32_t v9; // eax@7 int v10; // eax@9 int v12; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMMONEY_BUY_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMMONEY_BUY_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v5 = *(_DWORD *)v4; if ( *(_WORD *)(a1 + 10) == 12864 ) { v6 = (*(int (__thiscall **)(int))(v5 + 2004))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)(a1 + 2), 0) ) { v7 = *(_WORD *)(a1 + 2); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_ITEMMONEY_BUY_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 513); } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(v4, 12, 4, 12865); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(a1 + 2)); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2884))(v4, 1); sub_55F670(v4, 0); } v12 = (int)"GameDBSession::gds_NC_ITEMDB_ITEMMONEY_BUY_ACK"; } else { v12 = (int)"GameDBSession::gds_NC_ITEMDB_ITEMMONEY_BUY_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00468350) -------------------------------------------------------- int __stdcall sub_468350(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int (__thiscall *v5)(_DWORD); // eax@5 int v6; // eax@6 int v7; // ST04_4@7 __time32_t v8; // eax@7 __time32_t v9; // eax@7 int v10; // eax@8 void *v11; // eax@9 int v12; // eax@11 int v14; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); if ( *(_WORD *)(a1 + 10) == 12872 ) { v6 = v5(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)(a1 + 2), 0) ) { v7 = *(_WORD *)(a1 + 2); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } } else { v10 = v5(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(a1 + 2)); } v11 = off_849C18; *(_WORD *)off_849C18 = 12386; *((_WORD *)v11 + 1) = *(_WORD *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : Packet Too Long", 4); } } v14 = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_ACK"; } else { v14 = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004684E0) -------------------------------------------------------- int __stdcall sub_4684E0(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 void *v4; // edi@3 int v6; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3004))(v2); v4 = (void *)v3; if ( v3 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) sub_51BEE0(v4, a1 + 2); v6 = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_ACK"; } else { v6 = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_CHANGE_CONSUME_AND_COUNTING_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004685C0) -------------------------------------------------------- int __stdcall sub_4685C0(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int (__thiscall *v5)(_DWORD); // eax@5 int v6; // eax@6 int v7; // ST04_4@7 __time32_t v8; // eax@7 __time32_t v9; // eax@7 int v10; // eax@8 void *v11; // eax@9 int v12; // eax@11 int v14; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_RECOVER_COUNT_LIMIT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_RECOVER_COUNT_LIMIT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); if ( *(_WORD *)(a1 + 10) == 12881 ) { v6 = v5(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)(a1 + 2), 0) ) { v7 = *(_WORD *)(a1 + 2); v8 = sub_418EA0( (__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_RECOVER_COUNT_LIMIT_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } } else { v10 = v5(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(a1 + 2)); } v11 = off_849C18; *(_WORD *)off_849C18 = 12396; *((_WORD *)v11 + 1) = *(_WORD *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::gds_NC_ITEMDB_RANDOMOPTION_RECOVER_COUNT_LIMIT_ACK : Packet Too Long", 4); } } v14 = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_RECOVER_COUNT_LIMIT_ACK"; } else { v14 = (int)"GameDBSession::gds_NC_ITEMDB_RANDOMOPTION_RECOVER_COUNT_LIMIT_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00468750) -------------------------------------------------------- int __stdcall sub_468750(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int (__thiscall *v5)(_DWORD); // eax@5 int v6; // eax@6 int v7; // ST04_4@7 __time32_t v8; // eax@7 __time32_t v9; // eax@7 int v10; // eax@9 int v12; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CLASS_CHANGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CLASS_CHANGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 2) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); if ( *(_WORD *)(a1 + 10) == 13952 ) { v6 = v5(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)(a1 + 8), 0) ) { v7 = *(_WORD *)(a1 + 8); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_CLASS_CHANGE_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 816))(v4, 1); sub_55FFF0(v4, dword_14D129E8); sub_560000(v4); } else { v10 = v5(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(a1 + 8)); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 776))( v4, 12, 95, *(_WORD *)(a1 + 10)); } v12 = (int)"GameDBSession::gds_NC_ITEMDB_CLASS_CHANGE_ACK"; } else { v12 = (int)"GameDBSession::gds_NC_ITEMDB_CLASS_CHANGE_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004688D0) -------------------------------------------------------- int __stdcall sub_4688D0(int a1, int a2) { int v2; // edi@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD); // eax@3 int v5; // eax@4 int v6; // ST04_4@5 __time32_t v7; // eax@5 __time32_t v8; // eax@5 int v9; // eax@7 void *v10; // eax@8 int v11; // eax@10 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHAT_COLOR_CHANGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CHAT_COLOR_CHANGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 6)); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) != 1 ) { v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); if ( *(_WORD *)v2 == 13824 ) { v5 = v4(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, v3, *(_WORD *)(a1 + 4), 0) ) { v6 = *(_WORD *)(a1 + 4); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_CHAT_COLOR_CHANGE_ACK : "); v8 = sub_43B910(v7, v6); sub_418F20(v8, (int)&unk_13359E04); } (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 3636))(v3, v2); } else { v9 = v4(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 40))(v9, *(_WORD *)(a1 + 4)); } v10 = off_849C18; *(_WORD *)off_849C18 = 12374; *((_WORD *)v10 + 1) = *(_WORD *)v2; *((_BYTE *)v10 + 4) = *(_BYTE *)(a1 + 24); if ( sub_4C81E0(&off_849C18, 5) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::gds_NC_ITEMDB_CHAT_COLOR_CHANGE_ACK : Packet Too Long", 5); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHAT_COLOR_CHANGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00468A60) -------------------------------------------------------- int __stdcall sub_468A60(int a1, int a2) { int v2; // ST10_4@1 int v3; // edi@1 void *v4; // ebx@3 int v5; // eax@5 int v6; // eax@6 int v7; // ST10_4@7 __time32_t v8; // eax@7 __time32_t v9; // eax@7 int v10; // ecx@8 int v11; // ebx@8 int v12; // esi@8 int v13; // eax@8 _BYTE *v14; // eax@8 int v15; // ST28_4@8 _BYTE *v16; // ST14_4@8 void *v17; // eax@8 int v18; // esi@8 int v19; // eax@8 _BYTE *v20; // eax@8 unsigned __int16 v21; // ax@8 int v22; // ebx@8 int v23; // eax@8 _BYTE *v24; // eax@8 int v26; // [sp-8h] [bp-9Ch]@2 unsigned int v27; // [sp-4h] [bp-98h]@1 char v28; // [sp+20h] [bp-74h]@8 char v29; // [sp+34h] [bp-60h]@8 char v30; // [sp+40h] [bp-54h]@8 char v31; // [sp+55h] [bp-3Fh]@8 int v32; // [sp+76h] [bp-1Eh]@8 int v33; // [sp+7Ah] [bp-1Ah]@8 unsigned int v34; // [sp+84h] [bp-10h]@1 int v35; // [sp+90h] [bp-4h]@1 int v36; // [sp+94h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v27 = (unsigned int)&v36 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MAPLINK_ITEM_CONSUME_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MAPLINK_ITEM_CONSUME_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 4); v35 = 0; v3 = sub_54E4D0(&unk_13253630, v2); if ( v3 ) { v4 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3004))(v3); if ( v4 ) { if ( 14152 == *(_WORD *)(a1 + 28) ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, unsigned int))(*(_DWORD *)v4 + 3748))( v4, *(_WORD *)(a1 + 22), *(_DWORD *)(a1 + 24), 0, 0, 0, v27); (*(void (__thiscall **)(void *, _DWORD, unsigned int))(*(_DWORD *)v4 + 884))( v4, *(_WORD *)(a1 + 22), (unsigned int)(*(_DWORD *)(a1 + 24) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); sub_516630(v4, *(_WORD *)(a1 + 28), 0, 0); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v3, *(_WORD *)(a1 + 2), 0) ) { v7 = *(_WORD *)(a1 + 2); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_MAPLINK_ITEM_CONSUME_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } v10 = *(_DWORD *)(a1 + 14); v11 = *(_DWORD *)(a1 + 10); v12 = *(_DWORD *)(a1 + 18); v13 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v13; v14 = &byte_85A2C0[256 * v13]; v15 = v10; *((_DWORD *)v14 + 1) = v10; *(_DWORD *)v14 = v11; *((_DWORD *)v14 + 2) = v12; v14[12] = 0; strncpy(&v29, v14, 0xCu); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v16 = &byte_85A2C0[256 * dword_8622C0]; v30 = 0; *(_DWORD *)v16 = v11; *((_DWORD *)v16 + 1) = v15; *((_DWORD *)v16 + 2) = v12; v16[12] = 0; v17 = sub_419020(&unk_CFCF380); v18 = sub_63AB60(v17, v16); v19 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v19; v20 = &byte_85A2C0[256 * v19]; *(_DWORD *)v20 = *(_DWORD *)v18; *((_DWORD *)v20 + 1) = *(_DWORD *)(v18 + 4); *((_DWORD *)v20 + 2) = *(_DWORD *)(v18 + 8); v20[12] = 0; v21 = sub_419100((int)&unk_14D20370, v20); v22 = sub_4190D0((int)&unk_14D20370, v21); v23 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v23; v24 = &byte_85A2C0[256 * v23]; *(_DWORD *)v24 = *(_DWORD *)v18; *((_DWORD *)v24 + 1) = *(_DWORD *)(v18 + 4); *((_DWORD *)v24 + 2) = *(_DWORD *)(v18 + 8); v24[12] = 0; strncpy(&v31, v24, 0x20u); v32 = *(_DWORD *)(v22 + 50); v33 = *(_DWORD *)(v22 + 54); (*(void (__thiscall **)(int, char *, signed int, signed int))(*(_DWORD *)v3 + 1536))(v3, &v28, 6, 9); } else { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *(_WORD *)(a1 + 2)); sub_516630(v4, *(_WORD *)(a1 + 28), 0, 0); } } v26 = (int)"GameDBSession::gds_NC_ITEMDB_MAPLINK_ITEM_CONSUME_ACK"; } else { v26 = (int)"GameDBSession::gds_NC_ITEMDB_MAPLINK_ITEM_CONSUME_ACK"; } --dword_750CB8; v35 = -1; return sub_467660((int)&unk_D020420, v26); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (00468D30) -------------------------------------------------------- int __stdcall sub_468D30(int a1, int a2) { int v2; // esi@1 int v3; // eax@2 int (*v4)(void); // eax@3 int v5; // eax@4 int v6; // ST04_4@5 __time32_t v7; // eax@5 __time32_t v8; // eax@5 int v9; // eax@6 void *v10; // eax@7 int v11; // eax@9 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MIX_ITEM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MIX_ITEM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3004))(v2); if ( v3 ) { v4 = *(int (**)(void))(*(_DWORD *)v3 + 2004); if ( *(_WORD *)(a1 + 10) == 14272 ) { v5 = v4(); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, v2, *(_WORD *)(a1 + 8), 0) ) { v6 = *(_WORD *)(a1 + 8); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_MIX_ITEM_ACK : "); v8 = sub_43B910(v7, v6); sub_418F20(v8, (int)&unk_13359E04); } } else { v9 = v4(); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 40))(v9, *(_WORD *)(a1 + 8)); sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MIX_ITEM_ACK : pDBAck->nError != ERR_MIX_ITEM_NOERR", 0); } v10 = off_849C18; *(_WORD *)off_849C18 = 12394; *((_WORD *)v10 + 1) = *(_WORD *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MIX_ITEM_ACK : Packet Too Long", 4); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MIX_ITEM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00468EC0) -------------------------------------------------------- int __stdcall sub_468EC0(int a1, int a2) { signed int v2; // ebx@1 int v3; // esi@1 int v4; // eax@5 __time32_t v5; // eax@6 __time32_t v6; // eax@6 void *v7; // eax@10 int v8; // ebx@10 int v9; // eax@10 int v10; // eax@12 int v11; // eax@13 void *v12; // eax@14 int v13; // eax@16 int v14; // edx@16 void *v16; // [sp-1Ch] [bp-3Ch]@8 int v17; // [sp-18h] [bp-38h]@8 int v18; // [sp-14h] [bp-34h]@8 int v19; // [sp-10h] [bp-30h]@8 int v20; // [sp-Ch] [bp-2Ch]@8 unsigned int v21; // [sp-8h] [bp-28h]@6 int v22; // [sp-4h] [bp-24h]@1 int v23; // [sp+10h] [bp-10h]@1 int v24; // [sp+1Ch] [bp-4h]@1 v23 = (int)"GameDBSession::gds_NC_ITEMDB_UES_FRIEND_POINT_ACK"; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UES_FRIEND_POINT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_UES_FRIEND_POINT_ACK"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v22 = *(_DWORD *)(a1 + 4); v24 = 0; v3 = sub_54E4D0(&unk_13253630, v22); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) != 1 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { if ( *(_WORD *)(a1 + 8) == 14016 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v3, *(_WORD *)(a1 + 14), 0) ) { v21 = *(_WORD *)(a1 + 14); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_UES_FRIEND_POINT_ACK : "); v6 = sub_43B910(v5, v21); sub_418F20(v6, (int)&unk_13359E04); } if ( !(dword_D020438 & 1) ) { dword_D020438 |= 1u; LOBYTE(v24) = 1; sub_4244F0((int)&v16, "FriendBroadcastItemID"); word_D020434 = sub_62BD30((int)&unk_1325CFB8, v16, v17, v18, v19, v20, v21, v22); LOBYTE(v24) = 0; } if ( *(_WORD *)(a1 + 10) == word_D020434 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 21539; v8 = (int)((char *)v7 + 2); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); sub_4836B0(v8, v9); if ( sub_4C81E0(&off_849C18, 22) ) { v10 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v10); v2 = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ : Packet Too Long", 22); v2 = -1; } } } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 40))(v11, *(_WORD *)(a1 + 14)); } v12 = off_849C18; *(_WORD *)off_849C18 = 21538; *((_WORD *)v12 + 2) = *(_WORD *)(a1 + 12); *((_WORD *)v12 + 3) = *(_WORD *)(a1 + 10); *((_BYTE *)v12 + 8) = *(_BYTE *)(a1 + 16); *((_WORD *)v12 + 1) = *(_WORD *)(a1 + 8); if ( sub_4C81E0(&off_849C18, 9) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); v14 = *(_DWORD *)v13; v22 = (int)&off_849C18; (*(void (__thiscall **)(int, int, void **))(v14 + 12))(v13, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::gds_NC_ITEMDB_UES_FRIEND_POINT_ACK : Packet Too Long", 9); } } --dword_750CB8; v24 = v2; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UES_FRIEND_POINT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D020434: using guessed type __int16 word_D020434; // D020438: using guessed type int dword_D020438; // 14D12A00: using guessed type int dword_14D12A00; //----- (00469120) -------------------------------------------------------- void *__thiscall sub_469120(void *this) { void *v1; // esi@1 v1 = this; sub_5A4590(this); *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *(_DWORD *)v1 = &off_6B163C; *((_DWORD *)v1 + 2) = 3; return v1; } // 6B163C: using guessed type int (__stdcall *off_6B163C)(int); //----- (00469150) -------------------------------------------------------- int (__stdcall **__thiscall sub_469150(int this))(int, int) { *(_DWORD *)this = &off_6B163C; return sub_5A4290(this); } // 6B163C: using guessed type int (__stdcall *off_6B163C)(int); //----- (00469160) -------------------------------------------------------- int __stdcall sub_469160(unsigned int *a1, int a2) { unsigned int v2; // eax@1 char v4; // [sp+8h] [bp-50h]@1 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 int v7; // [sp+58h] [bp+0h]@1 v5 = (unsigned int)&v7 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameLogSession::gls_DummyFunction"); dword_7508B8[dword_750CB8] = (int)"GameLogSession::gls_DummyFunction"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)a1; v6 = 0; sprintf(&v4, "%d/%d:%d", v2 >> 10, v2 & 0x3FF, a2); sub_6390B0(&unk_86DDD8, (int)"GameLogSession::gls_DummyFunction", (int)&v4); --dword_750CB8; v6 = -1; return sub_467660((int)&unk_D020420, (int)"GameLogSession::gls_DummyFunction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00469240) -------------------------------------------------------- int __thiscall sub_469240(void *this, int a2, int a3) { int v3; // edi@1 void *v4; // esi@1 char v5; // cl@1 __int16 v6; // dx@1 __int16 v7; // ax@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY"); dword_7508B8[dword_750CB8] = (int)"GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 2050; *(_WORD *)((char *)v4 + 3) = 1539; *((_BYTE *)v4 + 5) = sub_5A7540(byte_14D16AE8)[12]; v5 = sub_5A7540(byte_14D16AE8)[16]; v6 = *((_BYTE *)v4 + 3); v7 = *((_BYTE *)v4 + 4); *((_BYTE *)v4 + 6) = v5; *(_WORD *)((char *)v4 + 7) = v7 + v6; if ( sub_4C81E0(&off_849C18, 9) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY : Packet Too Long", 9); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00469350) -------------------------------------------------------- int __thiscall sub_469350(int this, int a2, int a3) { return sub_5A0860(&dword_14D148D0, this); } // 14D148D0: using guessed type int dword_14D148D0; //----- (00469360) -------------------------------------------------------- int __thiscall sub_469360(void *this, int a2, int a3) { int v3; // esi@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"GameLogSession::gls_NC_MISC_HEARTBEAT_REQ"); dword_7508B8[dword_750CB8] = (int)"GameLogSession::gls_NC_MISC_HEARTBEAT_REQ"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 2053; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"GameLogSession::wms_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameLogSession::gls_NC_MISC_HEARTBEAT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00469440) -------------------------------------------------------- void *__thiscall sub_469440(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 32, 38) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 32, 32, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004694E0) -------------------------------------------------------- void *__thiscall sub_4694E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B174C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B174C: using guessed type int (__thiscall *off_6B174C)(void *, char); //----- (00469510) -------------------------------------------------------- int __thiscall sub_469510(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; sub_469440(this, "../9Data/Shine/FieldLvCondition.shn"); result = *((_DWORD *)v1 + 13); *((_DWORD *)v1 + 26) = *(_DWORD *)(result + 40); return result; } //----- (00469530) -------------------------------------------------------- int __thiscall sub_469530(int this, const unsigned __int8 *a2, char a3) { int v3; // esi@1 unsigned int v4; // edi@3 const unsigned __int8 *v5; // eax@5 int v6; // eax@10 int result; // eax@14 v3 = this; if ( a2 && *(_DWORD *)(this + 104) > 0 ) { v4 = 0; while ( 1 ) { v5 = (const unsigned __int8 *)(v4 < *(_DWORD *)(*(_DWORD *)(v3 + 52) + 40) ? sub_626BC0(v3, v4) : v3 + 64); if ( !_mbscmp(v5, a2) ) { if ( !a3 ) break; v6 = v4 < *(_DWORD *)(*(_DWORD *)(v3 + 52) + 40) ? sub_626BC0(v3, v4) : v3 + 64; if ( a3 == *(_BYTE *)(v6 + 33) ) break; } ++v4; if ( (signed int)v4 >= *(_DWORD *)(v3 + 104) ) return 0; } if ( v4 < *(_DWORD *)(*(_DWORD *)(v3 + 52) + 40) ) result = sub_626BC0(v3, v4); else result = v3 + 64; } else { result = 0; } return result; } //----- (004695D0) -------------------------------------------------------- char *__thiscall sub_4695D0(void *this) { return (char *)this + 1236; } //----- (004695E0) -------------------------------------------------------- bool __thiscall sub_4695E0(int this, int a2, unsigned __int16 a3) { int v3; // eax@1 bool result; // al@2 v3 = sub_445F40(this, a3); if ( v3 ) { result = (unsigned int)dword_14D129E8 >= *(_DWORD *)(v3 + 4); } else { sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_CoolTimeCheck : Invalid skill id", a3); result = 0; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00469630) -------------------------------------------------------- int __cdecl sub_469630(int a1, int a2) { return **(_WORD **)a1 - **(_WORD **)a2; } //----- (00469650) -------------------------------------------------------- signed int __stdcall sub_469650(int a1, int a2) { return 2818; } //----- (00469660) -------------------------------------------------------- void *__thiscall sub_469660(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 959, 174) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 959, 959, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00469710) -------------------------------------------------------- void *__thiscall sub_469710(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 6309, 438) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 6309, 6309, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004697C0) -------------------------------------------------------- void *__thiscall sub_4697C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B17B0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B17B0: using guessed type int (__thiscall *off_6B17B0)(void *, char); //----- (004697F0) -------------------------------------------------------- void *__thiscall sub_4697F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B17B8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B17B8: using guessed type int (__thiscall *off_6B17B8)(void *, char); //----- (00469820) -------------------------------------------------------- int __thiscall sub_469820(void *this) { int v1; // esi@1 int v2; // edi@1 unsigned int v3; // eax@1 int v4; // eax@1 unsigned int v5; // ebx@3 int v6; // eax@5 signed int v7; // eax@7 signed int v8; // eax@9 signed int v9; // eax@11 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"GatherProduce::GatherTable::gt_Load"); dword_7508B8[dword_750CB8] = (int)"GatherProduce::GatherTable::gt_Load"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; sub_469660((void *)v1, "../9Data/Shine/Gather.shn"); v3 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); *(_DWORD *)(v1 + 244) = v3; v4 = unknown_libname_130(12 * v3 | -((unsigned __int8)(12 * (unsigned __int64)v3 >> 32) != 0)); *(_DWORD *)(v1 + 240) = v4; if ( v4 == 0 ) { sub_639100(&unk_86DDD8, (int)"GatherProduce::GatherTable::gt_Load : Memory leak", 0); loc_6391B0("GatherProduce::GatherTable::gt_Load"); } v5 = 0; if ( *(_DWORD *)(v1 + 244) > 0u ) { do { if ( v5 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v6 = sub_626BC0(v1, v5); else v6 = v1 + 64; *(_DWORD *)(v2 + *(_DWORD *)(v1 + 240)) = v6; v7 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(*(_DWORD *)(v1 + 240) + v2) + 38)); if ( v7 == -1 ) LOWORD(v7) = -1; *(_WORD *)(*(_DWORD *)(v1 + 240) + v2 + 4) = v7; v8 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(*(_DWORD *)(v1 + 240) + v2) + 70)); if ( v8 == -1 ) LOWORD(v8) = -1; *(_WORD *)(*(_DWORD *)(v1 + 240) + v2 + 6) = v8; v9 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(*(_DWORD *)(v1 + 240) + v2) + 102)); if ( v9 == -1 ) LOWORD(v9) = -1; *(_WORD *)(*(_DWORD *)(v1 + 240) + v2 + 8) = v9; sub_639590( &unk_13257C80, (unsigned __int8 *)(*(_DWORD *)(v2 + *(_DWORD *)(v1 + 240)) + 2), **(_WORD **)(v2 + *(_DWORD *)(v1 + 240))); ++v5; v2 += 12; } while ( v5 < *(_DWORD *)(v1 + 244) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GatherProduce::GatherTable::gt_Load"); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00469A00) -------------------------------------------------------- int __thiscall sub_469A00(void *this) { int v1; // esi@1 unsigned int v2; // eax@1 int v3; // eax@1 unsigned int v4; // eax@3 int v5; // edi@4 int v6; // eax@7 signed int v7; // eax@9 int v8; // ecx@11 int v9; // eax@11 int v10; // edx@11 int v11; // eax@11 signed int v12; // ebx@11 unsigned __int8 v13; // al@12 signed int v14; // eax@14 int v16; // [sp+10h] [bp-38h]@11 int v17; // [sp+14h] [bp-34h]@11 int v18; // [sp+18h] [bp-30h]@11 int v19; // [sp+1Ch] [bp-2Ch]@11 int v20; // [sp+20h] [bp-28h]@11 int v21; // [sp+24h] [bp-24h]@11 int v22; // [sp+28h] [bp-20h]@11 int v23; // [sp+2Ch] [bp-1Ch]@11 int v24; // [sp+30h] [bp-18h]@1 unsigned int v25; // [sp+34h] [bp-14h]@3 unsigned __int8 **v26; // [sp+38h] [bp-10h]@11 int v27; // [sp+44h] [bp-4h]@1 v1 = (int)this; v24 = (int)"GatherProduce::RecipeBook::rb_Load"; sub_4675D0((int)&unk_D020420, (int)"GatherProduce::RecipeBook::rb_Load"); dword_7508B8[dword_750CB8] = (int)"GatherProduce::RecipeBook::rb_Load"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; sub_469710((void *)v1, "../9Data/Shine/Produce.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); *(_DWORD *)(v1 + 508) = v2; v3 = unknown_libname_130(76 * v2 | -((unsigned __int8)(76 * (unsigned __int64)v2 >> 32) != 0)); *(_DWORD *)(v1 + 504) = v3; if ( v3 == 0 ) { sub_639100(&unk_86DDD8, (int)"GatherProduce::RecipeBook::rb_Load : Memory leak", v3 != 0); loc_6391B0("GatherProduce::RecipeBook::rb_Load"); } v4 = 0; v25 = 0; if ( *(_DWORD *)(v1 + 508) > 0 ) { v5 = 0; while ( 1 ) { if ( v4 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v6 = sub_626BC0(v1, v4); else v6 = v1 + 64; *(_DWORD *)(v5 + *(_DWORD *)(v1 + 504)) = v6; v7 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 98)); if ( v7 == -1 ) LOWORD(v7) = -1; *(_WORD *)(*(_DWORD *)(v1 + 504) + v5 + 4) = v7; *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 8) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 130); v8 = *(_DWORD *)(v1 + 504); v9 = *(_DWORD *)(v8 + v5); v16 = v9 + 134; v17 = v9 + 170; v18 = v9 + 206; v19 = v9 + 242; v20 = v9 + 278; v21 = v9 + 314; v22 = v9 + 350; v10 = v9 + 386; *(_DWORD *)(v8 + v5 + 16) = *(_DWORD *)(v9 + 166); v11 = *(_DWORD *)(v1 + 504); v23 = v10; *(_DWORD *)(v11 + v5 + 24) = *(_DWORD *)(*(_DWORD *)(v11 + v5) + 202); *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 32) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 238); *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 40) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 274); *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 48) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 310); *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 56) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 346); *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 64) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 382); *(_DWORD *)(*(_DWORD *)(v1 + 504) + v5 + 72) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 504) + v5) + 418); v12 = 0; v26 = (unsigned __int8 **)&v16; do { v13 = **v26; if ( v13 != 45 && v13 ) { v14 = sub_639620(&unk_14D20898, *v26); if ( v14 == -1 ) LOWORD(v14) = -1; *(_WORD *)(v5 + *(_DWORD *)(v1 + 504) + v12 + 12) = v14; if ( *(_WORD *)(v5 + *(_DWORD *)(v1 + 504) + v12 + 12) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"GatherProduce::RecipeBook::rb_Load : Invalid Raw", (int)*v26); loc_6391B0("GatherProduce::RecipeBook::rb_Load"); } } else { *(_WORD *)(v5 + *(_DWORD *)(v1 + 504) + v12 + 12) = -1; } ++v26; v12 += 8; } while ( v12 < 64 ); v5 += 76; ++v25; if ( (signed int)v25 >= *(_DWORD *)(v1 + 508) ) break; v4 = v25; } } qsort(*(void **)(v1 + 504), *(_DWORD *)(v1 + 508), 0x4Cu, (int (__cdecl *)(const void *, const void *))sub_469630); --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"GatherProduce::RecipeBook::rb_Load"); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00469D30) -------------------------------------------------------- signed __int16 __thiscall sub_469D30(void *this, int a2, int a3, int a4) { signed int v4; // ebx@1 int v5; // eax@3 unsigned __int16 v6; // ax@4 signed __int16 result; // ax@10 int v8; // edi@11 unsigned __int16 **v9; // esi@12 int v10; // eax@13 bool v11; // cf@17 signed __int16 v12; // si@17 int v13; // [sp+14h] [bp-14h]@1 unsigned int v14; // [sp+30h] [bp+8h]@11 v13 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_PreProduceCheck"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_PreProduceCheck"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( a4 ) { v5 = *(_DWORD *)(*(_DWORD *)a4 + 422); switch ( v5 ) { case 0: v6 = word_13257C78; break; case 1: v6 = word_13257C74; break; case 2: v6 = word_13257C76; break; case 5: v6 = word_13257C7A; break; case 4: v6 = word_13257C7C; break; default: sub_639100(&unk_86DDD8, (int)"CharaterSkillList::csl_PreProduceCheck : Wrong mastery type", v5); --dword_750CB8; goto LABEL_19; } if ( sub_445FC0((void *)(a2 + 84388), v6) ) { v14 = 0; v8 = 0; do { v9 = (unsigned __int16 **)((char *)dword_D0207D0 + v8); if ( !((char *)dword_D0207D0 + v8) ) break; v10 = sub_445F40(v13, **v9); if ( v10 ) { if ( *(_DWORD *)(*v9 + 211) == *(_DWORD *)(*(_DWORD *)a4 + 430) ) v14 += *(_DWORD *)(v10 + 12); } ++v4; v8 += 76; } while ( v4 < (signed int)dword_D0207D4 ); v11 = v14 < *(_DWORD *)(*(_DWORD *)a4 + 434); --dword_750CB8; v12 = v11 ? 1809 : 1792; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_PreProduceCheck"); result = v12; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_PreProduceCheck"); result = 1815; } } else { --dword_750CB8; LABEL_19: sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_PreProduceCheck"); result = 1794; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257C74: using guessed type __int16 word_13257C74; // 13257C76: using guessed type __int16 word_13257C76; // 13257C78: using guessed type __int16 word_13257C78; // 13257C7A: using guessed type __int16 word_13257C7A; // 13257C7C: using guessed type __int16 word_13257C7C; //----- (00469F30) -------------------------------------------------------- signed int __thiscall sub_469F30(void *this, int a2, int a3) { void *v3; // ebx@1 signed int v4; // edx@1 int v5; // ecx@1 int i; // eax@1 char *v7; // eax@3 int v8; // edi@5 __int16 v9; // si@7 int v10; // edx@7 int v11; // eax@8 int (**v13)(); // [sp+10h] [bp-34h]@7 char *v14; // [sp+14h] [bp-30h]@7 int v15; // [sp+18h] [bp-2Ch]@10 int v16; // [sp+1Ch] [bp-28h]@10 __int16 v17; // [sp+20h] [bp-24h]@10 int v18; // [sp+24h] [bp-20h]@1 int v19; // [sp+28h] [bp-1Ch]@2 int v20; // [sp+2Ch] [bp-18h]@5 unsigned int v21; // [sp+30h] [bp-14h]@1 int v22; // [sp+34h] [bp-10h]@5 int v23; // [sp+40h] [bp-4h]@1 v3 = this; v18 = (int)"ShineObjectClass::ShinePlayer::sp_GatherCheck"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GatherCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GatherCheck"; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = 0; *(_WORD *)a3 = -1; v23 = 0; v21 = 0; for ( i = 0; ; i = v19 + 12 ) { v19 = i; if ( v21 >= dword_D0205D4 ) break; v7 = (char *)dword_D0205D0 + i; if ( v7 == (char *)v5 ) break; if ( *(_DWORD *)(*(_DWORD *)v7 + 34) == a2 ) { v22 = v5; v8 = (int)(v7 + 4); v20 = 3; do { if ( *(_WORD *)v8 == -1 ) { v22 += v4; } else { v9 = *(_WORD *)v8; v13 = &off_6A86A4; v14 = (char *)v3 + 36484; v10 = *((_DWORD *)v3 + 9121); if ( v3 == (void *)-160312 ) v11 = (*(int (**)(void))(v10 + 8))(); else v11 = (*(int (__stdcall **)(char *))(v10 + 4))((char *)v3 + 160312); v16 = v11; v13 = (int (**)())&off_6A86BC; v17 = v9; LOBYTE(v23) = 1; v15 = 0; if ( (unsigned __int8)off_6A86BC(&v13) || sub_63F7F0(&v13) ) { if ( -1 == *(_WORD *)a3 ) *(_WORD *)a3 = *(_WORD *)v8; ++v22; } LOBYTE(v23) = 0; v13 = &off_6A86A4; v4 = 1; } v8 += 2; v20 -= v4; } while ( v20 ); if ( v22 == 3 ) { dword_750CB8 -= v4; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GatherCheck"); return 2817; } v5 = 0; } v21 += v4; } dword_750CB8 -= v4; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GatherCheck"); return 2828; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0205D4: using guessed type int dword_D0205D4; //----- (0046A110) -------------------------------------------------------- signed __int16 __thiscall sub_46A110(void *this, void *a2, int a3) { void *v3; // esi@1 signed __int16 v4; // si@2 signed __int16 result; // ax@3 signed __int16 v6; // ax@5 signed __int16 v7; // si@5 signed __int16 v8; // ax@6 signed __int16 v9; // si@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"; dword_750AB8[dword_750CB8++] = -1; switch ( *(_DWORD *)(**((_DWORD **)v3 + 2042) + 99) ) { case 8: case 0x16: v4 = sub_469F30(a2, 1, a3); if ( *(_WORD *)a3 == -1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"); result = 2828; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"); result = v4; } break; case 9: case 0x15: v6 = sub_469F30(a2, 0, a3); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"); result = v7; break; case 0xA: v8 = sub_469F30(a2, 2, a3); --dword_750CB8; v9 = v8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"); result = v9; break; default: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanGathered"); result = 2818; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046A2E0) -------------------------------------------------------- int __thiscall sub_46A2E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 __int16 v6; // ax@5 int v7; // eax@7 void *v8; // ecx@9 int v9; // ST04_4@9 int v10; // eax@9 char v12; // [sp+10h] [bp-1Ch]@9 int v13; // [sp+1Ch] [bp-10h]@1 int v14; // [sp+28h] [bp-4h]@1 v4 = this; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v14 = 0; if ( !(dword_D0204B0 & 1) ) { dword_D0204B0 |= 1u; word_D0204AC = 6; atexit(nullsub_41); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0204AC ) { v6 = *((_WORD *)v4 + 79824); if ( v6 == -1 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ : During other gathering", 0); } else { v7 = sub_54DE90(&unk_13253630, v6); *((_WORD *)v4 + 79824) = -1; if ( v7 != 0 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 8241; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v8 + 2) = *(_WORD *)(v7 + 4); sub_4287B0(&v12, &off_849C18, 6); v9 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v14) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v10, v9, 0, 0, (int)&v12, 0, 65535); *((_DWORD *)v4 + 40199) = 0; *((_DWORD *)v4 + 40200) = sub_5131E0; *((_DWORD *)v4 + 40203) = sub_452C70; *((_DWORD *)v4 + 40202) = 0; LOBYTE(v14) = 0; sub_428A70(&v12); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD : Object Null", 0); } } --dword_750CB8; } else { dword_750CB8 -= v5; } v14 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0204AC: using guessed type __int16 word_D0204AC; // D0204B0: using guessed type int dword_D0204B0; //----- (0046A4B0) -------------------------------------------------------- int __thiscall sub_46A4B0(void *this, signed int a2) { int v2; // edi@1 void *v3; // esi@1 int v4; // eax@6 __int16 v5; // ax@8 int v6; // ebx@11 int v7; // eax@14 int v8; // eax@17 int v9; // ST04_4@18 int v10; // eax@18 int v11; // eax@18 int v12; // eax@19 int v13; // esi@24 int v14; // eax@24 signed int v16; // [sp-4h] [bp-30h]@22 char v17; // [sp+10h] [bp-1Ch]@18 int v18; // [sp+1Ch] [bp-10h]@1 int v19; // [sp+28h] [bp-4h]@1 v2 = (int)this; v18 = (int)"ShineObjectClass::ShinePlayer::sp_GatherComplete"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GatherComplete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GatherComplete"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v19 = 0; if ( !(dword_D0204B8 & 1) ) { dword_D0204B8 |= 1u; word_D0204B4 = 6; atexit(nullsub_42); } if ( !((1 << **(_BYTE **)(v2 + 3828)) & (unsigned __int16)word_D0204B4) ) { *(_DWORD *)v3 = &unk_B042033; *((_WORD *)v3 + 2) = -1; if ( !sub_4C81E0(&off_849C18, 6) ) { LABEL_5: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : Packet Too Long", 6); v19 = -1; goto LABEL_26; } v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); LABEL_7: (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); v19 = -1; goto LABEL_26; } v5 = *(_WORD *)(v2 + 159648); if ( v5 == -1 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : During other gathering", 0); *(_DWORD *)v3 = &unk_B062033; *((_WORD *)v3 + 2) = -1; if ( !sub_4C81E0(&off_849C18, 6) ) goto LABEL_5; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); goto LABEL_7; } v6 = sub_54DE90(&unk_13253630, v5); *(_WORD *)(v2 + 159648) = -1; if ( v6 != 0 ) { *(_DWORD *)v3 = &unk_B012033; *((_WORD *)v3 + 2) = *(_WORD *)(v6 + 4); if ( sub_4C81E0(&off_849C18, 6) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : Packet Too Long", 6); } *(_WORD *)v3 = 8244; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_WORD *)v3 + 2) = *(_WORD *)(v6 + 4); sub_4287B0(&v17, &off_849C18, 6); v9 = *(_DWORD *)(v2 + 102); LOBYTE(v19) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v10, v9, 0, 0, (int)&v17, 0, 65535); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1804))(v6); if ( v11 && ((v12 = *(_DWORD *)(*(_DWORD *)v11 + 99), v12 == 8) || v12 == 9 || v12 == 10) ) v16 = a2; else v16 = 1; v13 = *(_DWORD *)v6; v14 = (*(int (__thiscall **)(int, _DWORD, signed int))(*(_DWORD *)v6 + 1256))(v6, 0, v16); (*(void (__thiscall **)(int, int, int))(v13 + 1468))(v6, v2, v14); sub_4D1950(v2, 5); LOBYTE(v19) = 0; sub_428A70(&v17); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : RawObject Not found", 65535); *(_DWORD *)v3 = &unk_B022033; *((_WORD *)v3 + 2) = *(_WORD *)(v2 + 159648); if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : Packet Too Long", 6); } } v19 = -1; LABEL_26: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GatherComplete"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0204B4: using guessed type __int16 word_D0204B4; // D0204B8: using guessed type int dword_D0204B8; //----- (0046A7E0) -------------------------------------------------------- int __thiscall sub_46A7E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 void *v6; // eax@6 int v7; // ST04_4@6 int v8; // eax@6 char v10; // [sp+Ch] [bp-1Ch]@6 int v11; // [sp+18h] [bp-10h]@1 int v12; // [sp+24h] [bp-4h]@1 v4 = this; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( !(dword_D0204C0 & 1) ) { dword_D0204C0 |= 1u; word_D0204BC = 6; atexit(nullsub_44); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0204BC && *((_DWORD *)v4 + 1911) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 8250; *((_WORD *)v6 + 1) = *((_WORD *)v4 + 2); sub_4287B0(&v10, &off_849C18, 4); v7 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v12) = 1; v8 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v8, v7, 0, 0, (int)&v10, 0, 65535); *((_DWORD *)v4 + 1911) = 0; LOBYTE(v12) = 0; sub_428A70(&v10); --dword_750CB8; } else { dword_750CB8 -= v5; } v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0204BC: using guessed type __int16 word_D0204BC; // D0204C0: using guessed type int dword_D0204C0; //----- (0046A930) -------------------------------------------------------- void *__thiscall sub_46A930(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ItemProducer::ItemProducer"); dword_7508B8[dword_750CB8] = (int)"ItemProducer::ItemProducer"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1176))(a2); *((_DWORD *)v4 + 1) = a3; *((_DWORD *)v4 + 2084) = v5; *((_DWORD *)v4 + 2) = a4; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemProducer::ItemProducer"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046AA00) -------------------------------------------------------- int __cdecl sub_46AA00() { sub_4675D0((int)&unk_D020420, (int)"ItemProducer::~ItemProducer"); dword_7508B8[dword_750CB8] = (int)"ItemProducer::~ItemProducer"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ItemProducer::~ItemProducer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046AA40) -------------------------------------------------------- signed int __thiscall sub_46AA40(void *this) { void *v1; // ebx@1 unsigned __int16 v2; // cx@1 int v3; // edi@1 int v4; // edx@2 int v5; // edx@3 int v6; // esi@4 int v7; // eax@7 signed int result; // eax@8 __int16 v9; // si@9 int v10; // ecx@9 int v11; // edx@9 int v12; // eax@9 int v13; // eax@10 int v14; // eax@12 int v15; // esi@13 int v16; // eax@15 int v17; // ecx@17 int v18; // eax@17 int v19; // edx@17 int v20; // eax@18 int v21; // edx@19 int v22; // esi@19 int v23; // esi@19 int v24; // eax@19 int v25; // eax@22 int v26; // ST0C_4@23 char *v27; // eax@23 int v28; // eax@23 void *v29; // esi@23 int *v30; // ecx@23 int (**v31)(); // [sp+10h] [bp-50h]@9 int v32; // [sp+14h] [bp-4Ch]@9 int v33; // [sp+1Ch] [bp-44h]@12 __int16 v34; // [sp+20h] [bp-40h]@12 int (**v35)(); // [sp+24h] [bp-3Ch]@17 int v36; // [sp+28h] [bp-38h]@17 int v37; // [sp+30h] [bp-30h]@22 int *v38; // [sp+34h] [bp-2Ch]@22 int v39; // [sp+38h] [bp-28h]@22 int v40; // [sp+3Ch] [bp-24h]@22 int *v41; // [sp+40h] [bp-20h]@12 int v42; // [sp+44h] [bp-1Ch]@12 int v43; // [sp+48h] [bp-18h]@12 int v44; // [sp+4Ch] [bp-14h]@1 int v45; // [sp+50h] [bp-10h]@2 int v46; // [sp+5Ch] [bp-4h]@1 v1 = this; v44 = (int)"ItemProducer::ip_WhereProductStore"; sub_4675D0((int)&unk_D020420, (int)"ItemProducer::ip_WhereProductStore"); dword_7508B8[dword_750CB8] = (int)"ItemProducer::ip_WhereProductStore"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 2) + 4); v3 = 0; v46 = 0; if ( v2 < (unsigned int)dword_14D20894 ) { v4 = dword_14D21184 + 40 * v2; v45 = v4; if ( v4 ) { v5 = *(_DWORD *)v4; if ( v5 ) { v6 = *(_WORD *)v5; if ( (_WORD)v6 == v2 ) { v3 = v45; } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v2 + v6); v3 = 0; } } } } v7 = *((_DWORD *)v1 + 2); if ( v3 ) { v9 = *(_WORD *)(v7 + 4); v10 = *((_DWORD *)v1 + 1); v11 = *((_DWORD *)v1 + 2084); v31 = &off_6A86A4; v32 = v10; v12 = *(_DWORD *)v10; if ( v11 ) v13 = (*(int (__stdcall **)(int))(v12 + 4))(v11); else v13 = (*(int (**)(void))(v12 + 8))(); v33 = v13; v31 = (int (**)())&off_6A86BC; v34 = v9; v14 = *(_DWORD *)v1; v41 = (int *)&v31; LOBYTE(v46) = 1; v42 = v14; v43 = 9; if ( sub_486D40(&v41) ) { do { v15 = (**(int (__stdcall ***)(_DWORD))v41[1])(v41[2]); v45 = v15; if ( v15 != 0 ) { v16 = (*(int (__stdcall **)(int))(**(_DWORD **)(v15 + 112) + 28))(v15 + 8); if ( (unsigned int)(v16 + *(_DWORD *)(*((_DWORD *)v1 + 2) + 8)) <= *(_DWORD *)(*(_DWORD *)v3 + 106) ) { v21 = v45; *((_DWORD *)v1 + 3) = v15; memcpy((char *)v1 + 20, (const void *)v15, 0x6Cu); v22 = v15 + 108; *((_WORD *)v1 + 64) = *(_WORD *)v22; *((_BYTE *)v1 + 130) = *(_BYTE *)(v22 + 2); v23 = *((_DWORD *)v1 + 2); *((_DWORD *)v1 + 4) = *(_DWORD *)(v21 + 112); (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v21 + 112) + 32))( (char *)v1 + 28, v16 + *(_DWORD *)(v23 + 8)); v24 = v41[2]; *((_BYTE *)v1 + 136) = 0; v31 = &off_6A86A4; goto LABEL_20; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : Invalid cell", 0); } } while ( sub_486DA0((void **)&v41) ); } v17 = *((_DWORD *)v1 + 1); v18 = *((_DWORD *)v1 + 2084); v35 = &off_6A86A4; v36 = v17; v19 = *(_DWORD *)v17; LOBYTE(v46) = 0; if ( v18 ) v20 = (*(int (__stdcall **)(int))(v19 + 4))(v18); else v20 = (*(int (**)(void))(v19 + 8))(); v37 = v20; v35 = (int (**)())&off_6A86B4; v25 = *(_DWORD *)v1; v38 = (int *)&v35; LOBYTE(v46) = 2; v39 = v25; v40 = 9; if ( sub_486D40(&v38) ) { *((_DWORD *)v1 + 3) = (**(int (__stdcall ***)(_DWORD))v38[1])(v38[2]); v26 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v27 = sub_5A7540(byte_14D16AE8); sub_63D0E0((char *)v1 + 20, *(_WORD *)(*((_DWORD *)v1 + 2) + 4), 8, *((_DWORD *)v27 + 4), v26); v28 = *((_DWORD *)v1 + 2); *((_WORD *)v1 + 14) = *(_WORD *)(v28 + 4); v29 = sub_63ACA0(dword_1508B168, *(_WORD *)(v28 + 4)); (*(void (__thiscall **)(void *, char *, _DWORD))(*(_DWORD *)v29 + 32))( v29, (char *)v1 + 28, *(_DWORD *)(*((_DWORD *)v1 + 2) + 8)); v30 = v38; *((_DWORD *)v1 + 4) = v29; v24 = v30[2]; *((_BYTE *)v1 + 136) = 1; v35 = &off_6A86A4; LABEL_20: *((_DWORD *)v1 + 33) = v24; --dword_750CB8; v46 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_WhereProductStore"); result = 2817; } else { --dword_750CB8; v35 = &off_6A86A4; v46 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_WhereProductStore"); result = 2826; } } else { sub_639100(&unk_86DDD8, (int)"ItemProducer::ip_WhereProductStore : Invalid Item", *(_WORD *)(v7 + 4)); --dword_750CB8; v46 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_WhereProductStore"); result = 2819; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0046ADB0) -------------------------------------------------------- signed __int16 __thiscall sub_46ADB0(void *this, __int16 a2, int a3) { void *v3; // ebx@1 int v4; // ecx@1 int (**v5)(); // edi@1 int (*v6)(void); // eax@1 int v7; // eax@1 int v9; // esi@4 int v10; // eax@6 int v11; // ecx@6 int v12; // esi@7 int v13; // ecx@7 int v14; // edx@7 int v15; // edi@8 int v16; // esi@8 int (**v17)(); // [sp+10h] [bp-30h]@1 int v18; // [sp+14h] [bp-2Ch]@1 int v19; // [sp+1Ch] [bp-24h]@1 __int16 v20; // [sp+20h] [bp-20h]@1 int *v21; // [sp+24h] [bp-1Ch]@1 int v22; // [sp+28h] [bp-18h]@1 int v23; // [sp+2Ch] [bp-14h]@1 int v24; // [sp+30h] [bp-10h]@1 int v25; // [sp+3Ch] [bp-4h]@1 int v26; // [sp+48h] [bp+8h]@4 v3 = this; v24 = (int)"ItemProducer::ip_FindRaw"; sub_4675D0((int)&unk_D020420, (int)"ItemProducer::ip_FindRaw"); dword_7508B8[dword_750CB8] = (int)"ItemProducer::ip_FindRaw"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); v5 = &off_6A86A4; v17 = &off_6A86A4; v18 = v4; v6 = *(int (**)(void))(*(_DWORD *)v4 + 8); v25 = 0; v19 = v6(); v17 = (int (**)())&off_6A86BC; v20 = a2; v7 = *(_DWORD *)v3; LOBYTE(v25) = 1; v21 = (int *)&v17; v22 = v7; v23 = 9; if ( !sub_486D40(&v21) ) { --dword_750CB8; v17 = &off_6A86A4; v25 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_FindRaw"); return 2827; } while ( 1 ) { if ( *((_DWORD *)v3 + 2083) >= 0x40u ) { sub_639100(&unk_86DDD8, (int)"ItemProducer::ip_FindRaw : Too many raws", 0); --dword_750CB8; v17 = v5; v25 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_FindRaw"); return 2827; } v9 = (**(int (__stdcall ***)(_DWORD))v21[1])(v21[2]); v26 = v9; if ( v9 != 0 ) break; sub_639100(&unk_86DDD8, (int)"ItemProducer::ip_Produce : Invalid cell", 0); LABEL_11: if ( !sub_486DA0((void **)&v21) ) { --dword_750CB8; v17 = v5; v25 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_FindRaw"); return (((a3 > 0) - 1) & 0xFFF6) + 2827; } } v10 = (*(int (__stdcall **)(int))(**(_DWORD **)(v9 + 112) + 28))(v9 + 8); v11 = *((_DWORD *)v3 + 2083) << 7; if ( v10 <= a3 ) { *(_DWORD *)((char *)v3 + v11 + 144) = 0; v15 = (int)((char *)v3 + 128 * *((_DWORD *)v3 + 2083) + 148); memcpy((void *)v15, (const void *)v9, 0x6Cu); v16 = v9 + 108; v15 += 108; *(_WORD *)v15 = *(_WORD *)v16; *(_BYTE *)(v15 + 2) = *(_BYTE *)(v16 + 2); *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 65) = v21[2]; *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 35) = v26; v14 = a3 - v10; *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 66) = v10; a3 -= v10; } else { memcpy((char *)v3 + v11 + 148, (const void *)v9, 0x6Cu); v12 = v9 + 108; *(_WORD *)((char *)v3 + v11 + 256) = *(_WORD *)v12; *((_BYTE *)v3 + v11 + 258) = *(_BYTE *)(v12 + 2); *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 36) = *(_DWORD *)(v26 + 112); (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v26 + 112) + 32))( (char *)v3 + 128 * *((_DWORD *)v3 + 2083) + 156, v10 - a3); *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 65) = v21[2]; v13 = a3; *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 35) = v26; a3 = 0; v14 = 0; *((_DWORD *)v3 + 32 * *((_DWORD *)v3 + 2083) + 66) = v13; } ++*((_DWORD *)v3 + 2083); if ( v14 > 0 ) { v5 = &off_6A86A4; goto LABEL_11; } --dword_750CB8; v17 = &off_6A86A4; v25 = -1; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_FindRaw"); return 2817; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046B0E0) -------------------------------------------------------- signed __int16 __thiscall sub_46B0E0(void *this) { void *v1; // edi@1 signed __int16 result; // ax@1 unsigned int v3; // esi@2 int v4; // eax@3 __int16 v5; // cx@3 v1 = this; result = sub_46AA40(this); if ( result == 2817 ) { v3 = 0; *((_DWORD *)v1 + 2083) = 0; while ( 1 ) { v4 = *((_DWORD *)v1 + 2); v5 = *(_WORD *)(v3 + v4 + 12); if ( v5 != -1 ) { result = sub_46ADB0(v1, v5, *(_DWORD *)(v3 + v4 + 16)); if ( result != 2817 ) break; } v3 += 8; if ( v3 >= 0x40 ) return 2817; } } return result; } //----- (0046B140) -------------------------------------------------------- __int16 __thiscall sub_46B140(void *this, int a2, __int16 a3, int a4) { void *v4; // esi@1 char v5; // al@1 int v6; // eax@2 int v7; // edi@2 __int16 v8; // ax@3 __int16 v9; // ax@3 int v10; // edx@5 int v11; // edi@5 __int16 v12; // ax@8 __int16 v13; // ax@8 __int16 v14; // ax@9 int v16; // [sp+14h] [bp-14h]@4 int v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+18h] [bp-10h]@2 int i; // [sp+30h] [bp+8h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ItemProducer::ip_ProductExecute"); dword_7508B8[dword_750CB8] = (int)"ItemProducer::ip_ProductExecute"; dword_750AB8[dword_750CB8++] = -1; v17 = *((_DWORD *)v4 + 2083) + a4 + 16 * *((_DWORD *)v4 + 2083) + 50; v5 = *((_BYTE *)v4 + 136); *(_BYTE *)(a4 + 10) = v5; if ( v5 ) { *(_DWORD *)(a4 + 11) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v6 = *(_DWORD *)(a2 + 122); *(_DWORD *)(a4 + 15) = *(_DWORD *)v6; *(_DWORD *)(a4 + 19) = *(_DWORD *)(v6 + 4); *(_DWORD *)(a4 + 23) = *(_DWORD *)(v6 + 8); v7 = *(_DWORD *)(a2 + 102); LOWORD(v6) = *(_WORD *)(a4 + 35); *(_DWORD *)(a4 + 27) = *(_DWORD *)v7; *(_DWORD *)(a4 + 31) = *(_DWORD *)(v7 + 4); LOWORD(v6) = v6 & 0x3FF | 0x2400; *(_WORD *)(a4 + 35) = v6; *(_WORD *)(a4 + 35) = v6 ^ (v6 ^ *((_WORD *)v4 + 66)) & 0x3FF; *(_DWORD *)(a4 + 37) = *((_DWORD *)v4 + 5); *(_DWORD *)(a4 + 41) = *((_DWORD *)v4 + 6); *(_WORD *)(a4 + 45) = *((_WORD *)v4 + 14); *(_WORD *)(a4 + 47) = v17 - a3 - 2; v18 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 4) + 4))((char *)v4 + 28, v17); (*(void (__stdcall **)(_DWORD, _DWORD, char *, int, int))(**(_DWORD **)v4 + 64))( *(_WORD *)(*(_DWORD *)v4 + 4), *((_DWORD *)v4 + 3), (char *)v4 + 20, a4 + 35, a4 + 35); } else { *(_DWORD *)(a4 + 11) = *((_DWORD *)v4 + 5); v8 = *(_WORD *)(a4 + 21); *(_DWORD *)(a4 + 15) = *((_DWORD *)v4 + 6); v9 = v8 & 0x3FF | 0x2400; *(_WORD *)(a4 + 21) = v9; *(_WORD *)(a4 + 21) = v9 ^ (v9 ^ *((_WORD *)v4 + 66)) & 0x3FF; *(_WORD *)(a4 + 19) = v17 - a3 - 2; v18 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 4) + 4))((char *)v4 + 28, v17); (*(void (__stdcall **)(_DWORD, _DWORD, char *, int, int))(**(_DWORD **)v4 + 64))( *(_WORD *)(*(_DWORD *)v4 + 4), *((_DWORD *)v4 + 3), (char *)v4 + 20, a4 + 21, a4 + 21); } *(_BYTE *)(a4 + 49) = *((_BYTE *)v4 + 8332); v16 = 0; if ( *((_DWORD *)v4 + 2083) > 0 ) { v10 = (int)((char *)v4 + 260); v11 = a4 + 63; for ( i = (int)((char *)v4 + 260); ; v10 = i ) { *(_WORD *)(v11 - 12) = *(_WORD *)(v10 - 104); *(_WORD *)(v11 - 10) = *(_WORD *)(v10 + 4); if ( *(_DWORD *)(v10 - 116) ) { *(_BYTE *)(v11 - 13) = 0; *(_DWORD *)(v11 - 8) = *(_DWORD *)(v10 - 112); *(_DWORD *)(v11 - 4) = *(_DWORD *)(v10 - 108); v14 = *(_WORD *)(v11 + 2) & 0x3FF | 0x2400; *(_WORD *)(v11 + 2) = v14; *(_WORD *)(v11 + 2) = v14 ^ (v14 ^ *(_WORD *)v10) & 0x3FF; *(_WORD *)v11 = v18 - a3 - 2; v18 = (*(int (__stdcall **)(int, int))(**((_DWORD **)v4 + 4) + 4))(v10 - 104, v18); (*(void (__stdcall **)(_DWORD, _DWORD, int, int, int))(**(_DWORD **)v4 + 64))( *(_WORD *)(*(_DWORD *)v4 + 4), *(_DWORD *)(i - 120), i - 112, v11 + 2, v11 + 2); } else { *(_BYTE *)(v11 - 13) = 1; *(_DWORD *)(v11 - 8) = *(_DWORD *)(v10 - 112); v12 = *(_WORD *)v11; *(_DWORD *)(v11 - 4) = *(_DWORD *)(v10 - 108); v13 = v12 & 0x3FF | 0x2400; *(_WORD *)v11 = v13; *(_WORD *)v11 = v13 ^ (v13 ^ *(_WORD *)v10) & 0x3FF; (*(void (__stdcall **)(_DWORD, _DWORD, int, int))(**(_DWORD **)v4 + 48))( *(_WORD *)(*(_DWORD *)v4 + 4), *(_DWORD *)(v10 - 120), v11, v11); } i += 128; v11 += 17; ++v16; if ( v16 >= *((_DWORD *)v4 + 2083) ) break; } } *(_WORD *)(a4 + 8) = *((_WORD *)v4 + 14); *(_WORD *)(a4 + 6) = (*(_WORD *)(*(_DWORD *)v4 + 4))++; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemProducer::ip_ProductExecute"); return v18 - a3 - 2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046B490) -------------------------------------------------------- int __thiscall sub_46B490(void *this, unsigned __int16 a2) { int v2; // esi@1 void *v3; // ebx@1 int v4; // edi@1 int v5; // eax@1 int v6; // eax@4 int (__thiscall *v7)(_DWORD); // eax@5 __int16 v8; // ax@6 int v9; // eax@8 signed __int16 v10; // ax@9 int v11; // eax@11 int v12; // edi@12 int v13; // eax@14 int v15; // [sp+8h] [bp-22ACh]@1 __int16 *v16; // [sp+Ch] [bp-22A8h]@1 char v17; // [sp+58h] [bp-225Ch]@5 unsigned __int16 v18; // [sp+20ECh] [bp-1C8h]@1 unsigned int v19; // [sp+22A4h] [bp-10h]@1 int v20; // [sp+22B0h] [bp-4h]@1 int v21; // [sp+22B4h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v16 = (__int16 *)&v18; v18 = a2; v20 = 0; v4 = (int)((char *)off_849C18 + 2); v5 = (int)bsearch(&v16, dword_D0207D0, dword_D0207D4, 0x4Cu, (int (__cdecl *)(const void *, const void *))sub_469630); v15 = v5; if ( v5 ) { sub_46A930(&v17, v2, v2 + 36484, v5); v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)(v2 + 58688) + 16); LOBYTE(v20) = 1; if ( (unsigned __int8)v7(v2 + 58688) ) { *(_WORD *)v3 = 8251; v8 = *(_WORD *)(v15 + 4); *(_WORD *)(v4 + 2) = 2826; *(_WORD *)v4 = v8; if ( sub_4C81E0(&off_849C18, 6) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v2, &off_849C18); goto LABEL_16; } } else { v10 = sub_46B0E0(&v17); if ( v10 == 2817 ) { *(_WORD *)v3 = 13399; *(_WORD *)v4 = *(_WORD *)(v2 + 4); *(_DWORD *)(v4 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); v12 = (unsigned __int16)sub_46B140(&v17, v2, (__int16)v3, v4) + 2; if ( sub_4C81E0(&off_849C18, v12) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", v12); } sub_4460C0( (void *)(v2 + 84388), v2, a2, ((signed int)((unsigned __int64)(*(_DWORD *)(*(_DWORD *)v15 + 426) * *(_WORD *)(v2 + 160346) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(*(_DWORD *)v15 + 426) * *(_WORD *)(v2 + 160346) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); sub_4D1950(v2, 6); goto LABEL_16; } *(_WORD *)v3 = 8251; *(_WORD *)v4 = *(_WORD *)(v15 + 4); *(_WORD *)(v4 + 2) = v10; if ( sub_4C81E0(&off_849C18, 6) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); goto LABEL_16; } } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", 6); LABEL_16: LOBYTE(v20) = 0; sub_46AA00(); goto LABEL_17; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Invalid skill", a2); *(_WORD *)v3 = 8251; *(_DWORD *)v4 = &unk_B09FFFF; if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", 6); } LABEL_17: --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0046B7D0) -------------------------------------------------------- int __stdcall sub_46B7D0(int a1, int a2) { __int16 v2; // ST18_2@1 int v3; // esi@1 int v4; // eax@5 int v5; // eax@6 int v6; // ST14_4@7 __time32_t v7; // eax@7 __time32_t v8; // eax@7 void *v9; // eax@8 int v10; // ST04_4@8 int v11; // eax@8 void *v12; // eax@9 int v13; // eax@11 char v15; // [sp+Ch] [bp-1Ch]@8 int v16; // [sp+18h] [bp-10h]@1 int v17; // [sp+24h] [bp-4h]@1 v16 = (int)"GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v17 = 0; v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { if ( *(_WORD *)(a1 + 12) == 2817 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, v3, *(_WORD *)(a1 + 8), 0) ) { v6 = *(_WORD *)(a1 + 8); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK : "); v8 = sub_43B910(v7, v6); sub_418F20(v8, (int)&unk_13359E04); } v9 = off_849C18; *(_WORD *)off_849C18 = 8252; *((_WORD *)v9 + 1) = *(_WORD *)(v3 + 4); *((_WORD *)v9 + 2) = *(_WORD *)(a1 + 10); sub_4287B0(&v15, &off_849C18, 6); v10 = *(_DWORD *)(v3 + 102); LOBYTE(v17) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v11, v10, 0, 0, (int)&v15, 0, 65535); LOBYTE(v17) = 0; sub_428A70(&v15); } else { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 40))(v4, *(_WORD *)(a1 + 8)); } v12 = off_849C18; *(_WORD *)off_849C18 = 8251; *((_WORD *)v12 + 1) = *(_WORD *)(a1 + 10); *((_WORD *)v12 + 2) = *(_WORD *)(a1 + 12); if ( sub_4C81E0(&off_849C18, 6) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK : Packet Too Long", 6); } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046B9E0) -------------------------------------------------------- int __thiscall sub_46B9E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@4 int v7; // eax@8 int v8; // eax@9 int v9; // edx@14 signed int v10; // ebx@20 int v11; // eax@34 void *v12; // edi@35 int v13; // eax@37 int v15; // [sp-4h] [bp-24h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 18467; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 2); if ( !(dword_D0204C8 & 1) ) { dword_D0204C8 |= 1u; word_D0204C4 = 22; atexit(nullsub_45); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0204C4) ) { v6 = 2820; LABEL_5: v15 = 6; *((_WORD *)v5 + 2) = v6; goto LABEL_6; } v8 = *(_WORD *)(a2 + 2); v9 = (_WORD)v8 == word_13257C74 || (_WORD)v8 == word_13257C76 || (_WORD)v8 == word_13257C78 || (_WORD)v8 == word_13257C7A || (_WORD)v8 == word_13257C7C; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : ProductField Error", v8); v6 = 2834; goto LABEL_5; } if ( sub_445FC0((char *)v4 + 84388, *(_WORD *)(a2 + 2)) ) { v6 = 2835; goto LABEL_5; } v10 = 0; if ( sub_445FC0((char *)v4 + 84388, word_13257C74) ) v10 = 1; if ( sub_445FC0((char *)v4 + 84388, word_13257C76) ) ++v10; if ( sub_445FC0((char *)v4 + 84388, word_13257C78) ) ++v10; if ( sub_445FC0((char *)v4 + 84388, word_13257C7A) ) ++v10; if ( sub_445FC0((char *)v4 + 84388, word_13257C7C) ) ++v10; v15 = 6; if ( v10 >= 2 ) { *((_WORD *)v5 + 2) = 2836; LABEL_6: if ( sub_4C81E0(&off_849C18, v15) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6); } goto LABEL_38; } *((_WORD *)v5 + 2) = 2817; if ( sub_4C81E0(&off_849C18, 6) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6); } v12 = off_849C18; *(_WORD *)off_849C18 = 18433; *((_WORD *)v12 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v12 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v12 + 6) = *(_WORD *)(a2 + 2); *(_WORD *)((char *)v12 + 15) = -1; *((_BYTE *)v12 + 14) = 0; if ( sub_4C81E0(&off_849C18, 17) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_SkillScroll_Result : Packet Too Long", 17); } LABEL_38: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0204C4: using guessed type __int16 word_D0204C4; // D0204C8: using guessed type int dword_D0204C8; // 13257C74: using guessed type __int16 word_13257C74; // 13257C76: using guessed type __int16 word_13257C76; // 13257C78: using guessed type __int16 word_13257C78; // 13257C7A: using guessed type __int16 word_13257C7A; // 13257C7C: using guessed type __int16 word_13257C7C; // 14D16430: using guessed type int dword_14D16430; //----- (0046BD00) -------------------------------------------------------- int __thiscall sub_46BD00(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Gather"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Gather"; dword_750AB8[dword_750CB8++] = -1; sub_46A4B0(v1, 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Gather"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046BDB0) -------------------------------------------------------- int __thiscall sub_46BDB0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v4 + 40199) = 0; *((_DWORD *)v4 + 40200) = sub_5131E0; *((_DWORD *)v4 + 40203) = sub_452C70; *((_DWORD *)v4 + 40202) = 0; sub_46A4B0(v4, 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046BE80) -------------------------------------------------------- int __thiscall sub_46BE80(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // ebx@8 __int16 v6; // di@10 void *v7; // eax@10 int v8; // eax@12 void *v9; // edi@15 int v10; // eax@15 int v11; // eax@15 void *v13; // [sp-1Ch] [bp-4Ch]@15 int v14; // [sp-18h] [bp-48h]@15 int v15; // [sp-14h] [bp-44h]@15 int v16; // [sp-10h] [bp-40h]@15 int v17; // [sp-Ch] [bp-3Ch]@15 unsigned int v18; // [sp-8h] [bp-38h]@15 int v19; // [sp-4h] [bp-34h]@4 char v20; // [sp+10h] [bp-20h]@15 int v21; // [sp+1Ch] [bp-14h]@1 __int16 v22; // [sp+20h] [bp-10h]@10 int v23; // [sp+2Ch] [bp-4h]@1 v4 = this; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; if ( !(dword_D0204D0 & 1) ) { dword_D0204D0 |= 1u; word_D0204CC = 6; atexit(nullsub_40); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0204CC) ) { v19 = 2820; LABEL_5: (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 8, 46, v19); v23 = -1; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ"; goto LABEL_20; } if ( *((_WORD *)v4 + 79824) != -1 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ : During other gathering", *((_WORD *)v4 + 79824) == -1); v19 = 2821; goto LABEL_5; } v5 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); if ( v5 != 0 ) { v6 = (*(int (__thiscall **)(int, void *, __int16 *))(*(_DWORD *)v5 + 1824))(v5, v4, &v22); v7 = off_849C18; *(_WORD *)off_849C18 = 8238; *((_WORD *)v7 + 3) = v6; *((_WORD *)v7 + 1) = v22; *((_WORD *)v7 + 2) = *(_WORD *)(v5 + 4); if ( sub_4C81E0(&off_849C18, 8) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ : Packet Too Long", 8); } if ( v6 == 2817 ) { v9 = off_849C18; *(_WORD *)off_849C18 = 8239; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v9 + 2) = *(_WORD *)(v5 + 4); v19 = 8; *((_WORD *)v9 + 3) = v22; sub_4287B0(&v20, &off_849C18, v19); v14 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v23) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v10, v14, 0, 0, (int)&v20, 0, 65535); *((_WORD *)v4 + 79824) = *((_WORD *)v9 + 2); sub_4244F0((int)&v13, "Gather_MaxTime_Gatherable"); v11 = (unsigned __int16)(1000 * sub_62BD30((int)&unk_1325CFB8, v13, v14, v15, v16, v17, v18, v19)); if ( *((_BYTE *)v4 + 160325) ) v11 = (unsigned int)v11 >> 1; sub_42A8B0((int)((char *)v4 + 160796), (int)sub_46BD00, 0, 1, v11); LOBYTE(v23) = 0; sub_428A70(&v20); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ : No Skill", v6 == 2817); } v23 = -1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ : Invalid Object", 0); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 46, 2818); v23 = -1; } v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ"; LABEL_20: --dword_750CB8; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0204CC: using guessed type __int16 word_D0204CC; // D0204D0: using guessed type int dword_D0204D0; //----- (0046C150) -------------------------------------------------------- int __thiscall sub_46C150(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@5 int v6; // eax@7 void *v7; // edi@12 void *v8; // eax@17 void *v9; // eax@19 int v10; // ST04_4@19 int v11; // eax@19 int v13; // [sp-8h] [bp-34h]@13 signed int v14; // [sp-4h] [bp-30h]@4 int v15; // [sp-4h] [bp-30h]@13 char v16; // [sp+10h] [bp-1Ch]@19 int v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 v4 = this; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( !(dword_D0204D8 & 1) ) { dword_D0204D8 |= 1u; word_D0204D4 = 6; atexit(nullsub_43); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0204D4) ) { v14 = 2820; LABEL_21: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, v14); goto LABEL_22; } v5 = *(_DWORD *)((char *)v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 163) ) { v14 = 2833; goto LABEL_21; } v6 = *((_DWORD *)v4 + 40202); if ( v6 == 2 || v6 == 3 ) { v14 = 2823; goto LABEL_21; } if ( !sub_4695E0((int)((char *)v4 + 84388), (int)v4, *(_WORD *)(a2 + 2)) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, 2824); LABEL_22: v18 = -1; goto LABEL_23; } sub_566EF0((char *)v4 + 7644); v7 = sub_4444E0((int)&dword_D0205D8, *(_WORD *)(a2 + 2)); if ( v7 != 0 ) { if ( *((_WORD *)v7 + 2) == -1 ) { v15 = 0; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ : Invalid Item Produce"; } else { v8 = sub_447910((int)&unk_132577A0, *(_WORD *)(a2 + 2)); *((_DWORD *)v4 + 1916) = v8; if ( v8 != 0 ) { *((_DWORD *)v4 + 1911) = 1000 * ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*((_DWORD *)v8 + 1) + 203)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) / *((_WORD *)v4 + 80172) + dword_14D129E8; *((_WORD *)v4 + 3824) = *(_WORD *)(a2 + 2); *((_BYTE *)v4 + 7686) = 0; *((_DWORD *)v4 + 1915) = 0; *((_DWORD *)v4 + 1914) = 0; *((_DWORD *)v4 + 1917) = v7; v9 = off_849C18; *(_WORD *)off_849C18 = 8248; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v9 + 2) = *((_WORD *)v7 + 2); sub_4287B0(&v16, &off_849C18, 6); v10 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v18) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v11, v10, 0, 0, (int)&v16, 0, 65535); LOBYTE(v18) = 0; sub_428A70(&v16); v18 = -1; goto LABEL_23; } v15 = *(_WORD *)(a2 + 2); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : Invalid skill"; } } else { v15 = 0; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ : Skill cannot found"; } sub_639100(&unk_86DDD8, v13, v15); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, 2825); v18 = -1; LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0204D4: using guessed type __int16 word_D0204D4; // D0204D8: using guessed type int dword_D0204D8; // D0205D8: using guessed type int dword_D0205D8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0046C420) -------------------------------------------------------- int __stdcall sub_46C420(int a1, int a2) { int result; // eax@2 if ( a1 ) { if ( a2 ) result = *(_BYTE *)((unsigned __int8)(*(int (**)(void))(*(_DWORD *)a1 + 1240))() + a2 + 16) != 0; else result = 0; } else { result = 0; } return result; } //----- (0046C460) -------------------------------------------------------- int __stdcall sub_46C460(int a1, int a2) { int result; // eax@2 if ( a1 ) { if ( a2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1244))(a1) < 0x40u ) result = *(_BYTE *)((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1244))(a1) + a2 + 271) != 0; else result = 0; } else { result = 0; } return result; } //----- (0046C4C0) -------------------------------------------------------- int __stdcall sub_46C4C0(int a1, int a2) { int result; // eax@2 int v3; // eax@5 int v4; // eax@6 int v5; // eax@8 if ( a1 ) { if ( a2 && sub_4012C0(a1) && (v3 = sub_4012C0(a1), sub_6419B0(v3)) && (v4 = sub_4012C0(a1), *(_WORD *)sub_6419B0(v4) < 0x400u) ) { v5 = sub_4012C0(a1); result = *(_BYTE *)(*(_WORD *)sub_6419B0(v5) + a2 + 1363) != 0; } else { result = 0; } } else { result = 0; } return result; } //----- (0046C540) -------------------------------------------------------- signed int __stdcall sub_46C540(void *a1, int a2) { void *v2; // ebx@1 signed int result; // eax@2 __time32_t v4; // edi@5 int v5; // eax@8 int v6; // esi@8 int v7; // ecx@9 int v8; // edx@10 int v9; // eax@11 int v10; // edi@16 __time32_t v11; // [sp+4h] [bp-Ch]@5 signed int v12; // [sp+8h] [bp-8h]@5 unsigned __int16 *v13; // [sp+Ch] [bp-4h]@5 int v14; // [sp+18h] [bp+8h]@13 v2 = a1; if ( a1 ) { if ( a2 ) { v4 = _time32(0); v11 = v4; v13 = (unsigned __int16 *)(a2 + 10); v12 = 3; while ( 1 ) { if ( *v13 != -1 ) { v5 = sub_4012D0((int)&unk_877138, *v13); v6 = v5; if ( v5 ) { v7 = *(_DWORD *)v5; if ( *(_DWORD *)v5 ) { v8 = *(_DWORD *)(v5 + 48); if ( v8 ) { v9 = *(_DWORD *)(a2 + 6); if ( v9 > v4 && v9 ) v14 = 1000 * (v9 - v4); else v14 = *(_DWORD *)(v8 + 43); if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, signed int, int, int, _DWORD, signed int, int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, *(_DWORD *)(v7 + 34), 1, v6, dword_14D129E8, 0, -1, v14, 0, 0) ) { v10 = dword_871500; sub_401900(v2, *(_DWORD *)(*(_DWORD *)v6 + 34)); if ( v10 <= 0 || v10 > 40 ) v10 = 1; if ( *(_DWORD *)(v6 + 36 * v10 + 12) ) { (*(void (__thiscall **)(void *, _DWORD, int, signed int))(*(_DWORD *)v2 + 1008))( v2, *(_DWORD *)(*(_DWORD *)v6 + 34), v14, 1); sub_4055D0(v2, *(_DWORD *)(*(_DWORD *)v6 + 34), v14, v10); } } } } } } ++v13; --v12; if ( !v12 ) break; v4 = v11; } result = 1; } else { result = 0; } } else { result = 0; } return result; } // 871500: using guessed type int dword_871500; // 14D129E8: using guessed type int dword_14D129E8; //----- (0046C690) -------------------------------------------------------- signed int __stdcall sub_46C690(int a1, int a2) { signed int result; // eax@2 if ( a1 ) { if ( a2 ) { if ( *(_BYTE *)(a2 + 2387) && *(_BYTE *)(a2 + 2388) && (*(_BYTE *)(a2 + 2389) != 1 || sub_46C420(a1, a2)) && (*(_BYTE *)(a2 + 2390) != 1 || sub_46C460(a1, a2)) ) { if ( *(_BYTE *)(a2 + 2391) != 1 || sub_46C4C0(a1, a2) ) sub_46C540((void *)a1, a2); } result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (0046C720) -------------------------------------------------------- int __stdcall sub_46C720(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x1B65E2 || (result = operator new(2392 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0046C780) -------------------------------------------------------- signed int __thiscall sub_46C780(void *this, int a2) { void *v2; // edi@1 signed int v3; // eax@1 int v4; // ecx@1 signed int v5; // eax@6 unsigned int v6; // eax@11 int v7; // esi@16 bool v8; // zf@16 signed int v9; // eax@17 signed int v10; // eax@23 signed int v11; // eax@29 signed int v12; // eax@35 int v13; // eax@40 signed int v14; // ecx@40 int v15; // eax@46 int v16; // esi@46 int v17; // ecx@46 unsigned __int16 v18; // ax@46 unsigned __int16 v19; // di@46 unsigned __int16 v20; // cx@46 int v21; // ecx@48 int v22; // eax@48 int v23; // eax@48 int v24; // eax@49 __time32_t v26; // [sp+10h] [bp-4h]@1 v2 = this; v26 = _time32(0); *(_BYTE *)(a2 + 2388) = 0; v3 = 0; v4 = a2 + 10; while ( *(_WORD *)v4 == -1 ) { ++v3; v4 += 2; if ( v3 >= 3 ) goto LABEL_6; } *(_BYTE *)(a2 + 2388) = 1; LABEL_6: *(_BYTE *)(a2 + 2389) = 0; v5 = 0; while ( *(_BYTE *)(a2 + v5 + 16) != 1 ) { ++v5; if ( v5 >= 255 ) goto LABEL_11; } *(_BYTE *)(a2 + 2389) = 1; LABEL_11: *(_BYTE *)(a2 + 2390) = 0; v6 = 0; while ( *(_BYTE *)(a2 + v6 + 271) != 1 ) { ++v6; if ( v6 >= 0x40 ) goto LABEL_16; } *(_BYTE *)(a2 + 2390) = 1; LABEL_16: v7 = a2 + 1363; memset((void *)(a2 + 1363), 0, 0x400u); v8 = *(_BYTE *)(a2 + 1359) == 1; *(_BYTE *)(a2 + 2391) = 0; if ( v8 ) { v9 = 0; do { if ( *((_BYTE *)v2 + v9 + 16) == 1 ) *(_BYTE *)(v7 + v9) = 1; ++v9; } while ( v9 < 1024 ); *(_BYTE *)(a2 + 2391) = 1; } if ( *(_BYTE *)(a2 + 1360) == 1 ) { v10 = 0; do { if ( *((_BYTE *)v2 + v10 + 1040) == 1 ) *(_BYTE *)(v7 + v10) = 1; ++v10; } while ( v10 < 1024 ); *(_BYTE *)(a2 + 2391) = 1; } if ( *(_BYTE *)(a2 + 1361) == 1 ) { v11 = 0; do { if ( *((_BYTE *)v2 + v11 + 2064) == 1 ) *(_BYTE *)(v7 + v11) = 1; ++v11; } while ( v11 < 1024 ); *(_BYTE *)(a2 + 2391) = 1; } if ( *(_BYTE *)(a2 + 1362) == 1 ) { v12 = 0; do { if ( *((_BYTE *)v2 + v12 + 3088) == 1 ) *(_BYTE *)(v7 + v12) = 1; ++v12; } while ( v12 < 1024 ); *(_BYTE *)(a2 + 2391) = 1; } v13 = a2 + 1363; v14 = 1024; do { if ( *(_BYTE *)(v13 - 1028) == 1 ) { *(_BYTE *)v13 = 1; *(_BYTE *)(a2 + 2391) = 1; } ++v13; --v14; } while ( v14 ); if ( *(_DWORD *)(a2 + 2) > v26 || *(_DWORD *)(a2 + 6) <= v26 ) { *(_BYTE *)(a2 + 2387) = 0; } else { *(_BYTE *)(a2 + 2387) = 1; v15 = sub_419080((int)&unk_13253630, 2u); v16 = v15; v17 = *(_DWORD *)(v15 + 8); v18 = *(_WORD *)(v17 + 12 * *(_WORD *)(v15 + 14) + 4); v19 = *(_WORD *)(v17 + 12 * v18 + 4); v20 = *(_WORD *)(v16 + 4); while ( v18 < v20 ) { v21 = *(_DWORD *)(v16 + 8); v22 = 3 * v18; v8 = *(_BYTE *)(v21 + 4 * v22 + 8) == 0; v23 = v21 + 4 * v22; if ( v8 ) break; v24 = *(_DWORD *)v23; if ( !v24 ) break; sub_46C690(v24, a2); v20 = *(_WORD *)(v16 + 4); if ( v19 >= v20 ) break; v18 = v19; v19 = *(_WORD *)(*(_DWORD *)(v16 + 8) + 12 * v19 + 4); } } return 1; } //----- (0046C9A0) -------------------------------------------------------- signed int __thiscall sub_46C9A0(int this) { int v1; // esi@1 __time32_t v2; // eax@2 int v3; // ebx@2 int v4; // eax@6 int v5; // esi@6 int v6; // ecx@6 unsigned __int16 v7; // ax@6 unsigned __int16 v8; // di@6 unsigned __int16 v9; // cx@6 int v10; // ecx@8 int v11; // eax@8 bool v12; // zf@8 int v13; // eax@8 int v14; // eax@9 __time32_t i; // [sp+4h] [bp-8h]@2 int v17; // [sp+8h] [bp-4h]@1 v1 = this; v17 = this; if ( *(_DWORD *)(this + 4112) <= (unsigned int)dword_14D129E8 ) { *(_DWORD *)(this + 4112) = dword_14D129E8 + 10; v2 = _time32(0); v3 = *(_DWORD *)v1; for ( i = v2; v3 != *(_DWORD *)(v1 + 4); v3 += 2392 ) { if ( *(_DWORD *)(v3 + 2) > v2 || *(_DWORD *)(v3 + 6) <= v2 ) { *(_BYTE *)(v3 + 2387) = 0; } else { if ( !*(_BYTE *)(v3 + 2387) ) { *(_BYTE *)(v3 + 2387) = 1; v4 = sub_419080((int)&unk_13253630, 2u); v5 = v4; v6 = *(_DWORD *)(v4 + 8); v7 = *(_WORD *)(v6 + 12 * *(_WORD *)(v4 + 14) + 4); v8 = *(_WORD *)(v6 + 12 * v7 + 4); v9 = *(_WORD *)(v5 + 4); while ( v7 < v9 ) { v10 = *(_DWORD *)(v5 + 8); v11 = 3 * v7; v12 = *(_BYTE *)(v10 + 4 * v11 + 8) == 0; v13 = v10 + 4 * v11; if ( v12 ) break; v14 = *(_DWORD *)v13; if ( !v14 ) break; sub_46C690(v14, v3); v9 = *(_WORD *)(v5 + 4); if ( v8 >= v9 ) break; v7 = v8; v8 = *(_WORD *)(*(_DWORD *)(v5 + 8) + 12 * v8 + 4); } v2 = i; v1 = v17; } } } } return 1; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0046CAA0) -------------------------------------------------------- signed int __thiscall sub_46CAA0(int this, int a2) { int v2; // edi@1 signed int result; // eax@2 int v4; // esi@3 v2 = this; if ( a2 ) { v4 = *(_DWORD *)this; if ( *(_DWORD *)this != *(_DWORD *)(this + 4) ) { do { sub_46C690(a2, v4); v4 += 2392; } while ( v4 != *(_DWORD *)(v2 + 4) ); } result = 1; } else { result = 0; } return result; } //----- (0046CAE0) -------------------------------------------------------- void *__cdecl sub_46CAE0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 2392 ) { if ( result ) memcpy(result, v3, 0x958u); v3 = (char *)v3 + 2392; } return result; } //----- (0046CB20) -------------------------------------------------------- int __thiscall sub_46CB20(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > 0x1B65E2 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 2392; if ( result < a2 ) { v4 = sub_46C720(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v12 = v4; v14 = 0; sub_46CAE0(v6, v5, (void *)v4); v7 = (signed int)((unsigned __int64)(1838648207i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 10; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); v9 = v12; result = v12 + 2392 * a2; v10 = v12 + 2392 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (0046CBFF) -------------------------------------------------------- void __usercall sub_46CBFF(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0046CC20) -------------------------------------------------------- signed int __thiscall sub_46CC20(int this, __int16 a2) { int v2; // eax@1 int v3; // ebx@1 signed int result; // eax@4 int v5; // eax@5 int v6; // edx@6 const void *v7; // esi@7 void *v8; // edi@7 v2 = *(_DWORD *)this; v3 = *(_DWORD *)(this + 4); if ( *(_DWORD *)this == v3 ) { LABEL_4: result = 0; } else { while ( *(_WORD *)v2 != a2 ) { v2 += 2392; if ( v2 == v3 ) goto LABEL_4; } v5 = v2 + 2392; if ( v5 != v3 ) { v6 = v5 - 2392; do { v7 = (const void *)v5; v8 = (void *)v6; v5 += 2392; v6 += 2392; memcpy(v8, v7, 0x958u); } while ( v5 != v3 ); } *(_DWORD *)(this + 4) -= 2392; result = 1; } return result; } //----- (0046CCA0) -------------------------------------------------------- int __stdcall sub_46CCA0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_EVENT_DEL_EVENT_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_EVENT_DEL_EVENT_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_46CC20((int)&unk_14D138B8, *(_WORD *)(a1 + 2)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_EVENT_DEL_EVENT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046CD10) -------------------------------------------------------- int __thiscall sub_46CD10(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 2392; if ( 1795554 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 2392; if ( v3 > (unsigned int)result ) { if ( 1795554 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_46CB20(this, v5); } return result; } //----- (0046CD90) -------------------------------------------------------- int __thiscall sub_46CD90(int this) { int result; // eax@1 int v2; // edx@1 signed int v3; // ecx@1 signed int v4; // edx@3 int v5; // ecx@5 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v2 = this + 1040; v3 = 1024; do { *(_BYTE *)(v2 - 1024) = 0; *(_BYTE *)v2 = 0; *(_BYTE *)(v2 + 1024) = 0; *(_BYTE *)(v2++ + 2048) = 0; --v3; } while ( v3 ); v4 = 0; do { if ( (unsigned __int16)v4 < dword_14D20400 ) { v5 = *(_DWORD *)(dword_14D203FC + 4 * (unsigned __int16)v4); if ( v5 ) { if ( !*(_BYTE *)(v5 + 58) ) *(_BYTE *)(v4 + result + 3088) = 1; if ( *(_BYTE *)(v5 + 58) == 1 ) *(_BYTE *)(v4 + result + 16) = 1; if ( *(_BYTE *)(v5 + 58) == 3 ) *(_BYTE *)(v4 + result + 2064) = 1; if ( *(_BYTE *)(v5 + 58) == 4 ) *(_BYTE *)(result + v4 + 1040) = 1; } } ++v4; } while ( v4 < 1024 ); *(_DWORD *)(result + 4112) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (0046CE40) -------------------------------------------------------- void __thiscall sub_46CE40(int this) { int v1; // esi@1 int v2; // ebx@1 v1 = this; v2 = *(_DWORD *)this; if ( *(_DWORD *)this != *(_DWORD *)(this + 4) ) *(_DWORD *)(v1 + 4) = v2; if ( *(_DWORD *)v1 ) operator delete(*(void **)v1); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (0046CEA0) -------------------------------------------------------- signed int __thiscall sub_46CEA0(int this, int a2) { int v2; // ebx@1 void *v4; // eax@3 unsigned int v5; // edi@6 signed int v6; // edx@8 int v7; // esi@8 void *v8; // edi@10 char *v9; // esi@10 char v10[2392]; // [sp+8h] [bp-95Ch]@6 unsigned int v11; // [sp+960h] [bp-4h]@1 int v12; // [sp+964h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v2 = this; if ( !a2 ) return 0; v4 = *(void **)this; if ( *(_DWORD *)this != *(_DWORD *)(this + 4) ) { while ( *(_WORD *)v4 != *(_WORD *)a2 ) { v4 = (char *)v4 + 2392; if ( v4 == *(void **)(this + 4) ) goto LABEL_6; } memcpy(v4, (const void *)a2, 0x553u); sub_46C780((void *)this, (int)v4); return 1; } LABEL_6: memcpy(v10, (const void *)a2, 0x550u); *(_WORD *)&v10[1360] = *(_WORD *)(a2 + 1360); v10[1362] = *(_BYTE *)(a2 + 1362); sub_46C780((void *)this, (int)v10); v5 = *(_DWORD *)(v2 + 4); if ( (unsigned int)v10 >= v5 || *(_DWORD *)v2 > (unsigned int)v10 ) { if ( v5 == *(_DWORD *)(v2 + 8) ) sub_46CD10(v2, 1); v8 = *(void **)(v2 + 4); if ( !v8 ) goto LABEL_18; v9 = v10; } else { v6 = (signed int)((unsigned __int64)(1838648207i64 * (signed int)&v10[-*(_DWORD *)v2]) >> 32) >> 10; v7 = v6 + ((unsigned int)v6 >> 31); if ( v5 == *(_DWORD *)(v2 + 8) ) sub_46CD10(v2, 1); v8 = *(void **)(v2 + 4); v9 = (char *)(*(_DWORD *)v2 + 2392 * v7); if ( !v8 ) goto LABEL_18; } memcpy(v8, v9, 0x958u); LABEL_18: *(_DWORD *)(v2 + 4) += 2392; return 1; } // 86FEB8: using guessed type int __security_cookie; // 46CEA0: using guessed type char var_95C[2392]; //----- (0046CFB0) -------------------------------------------------------- int __stdcall sub_46CFB0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_EVENT_ADD_UPDATE_EVENT_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_EVENT_ADD_UPDATE_EVENT_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_46CEA0((int)&unk_14D138B8, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_EVENT_ADD_UPDATE_EVENT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046D060) -------------------------------------------------------- char __thiscall sub_46D060(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 84380) = a2; return result; } //----- (0046D070) -------------------------------------------------------- char __cdecl sub_46D070() { return 99; } //----- (0046D080) -------------------------------------------------------- bool __thiscall sub_46D080(int this) { return *(_BYTE *)(this + 84380) <= 0u; } //----- (0046D090) -------------------------------------------------------- int __stdcall sub_46D090(int a1, int a2) { int result; // eax@1 int v3; // esi@1 result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = result; if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)result + 768))(result); if ( !(_BYTE)result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( result == *(_DWORD *)(a1 + 4) ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2156))(v3, a1 + 2); } } return result; } //----- (0046D0F0) -------------------------------------------------------- char __thiscall sub_46D0F0(void *this, int a2, int a3) { void *v3; // edi@1 char v4; // al@1 int v5; // edx@1 int v6; // eax@2 char result; // al@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeactive::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyRewardStorageDeactive::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2136))(a2); v5 = *(_DWORD *)a2; if ( v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v5 + 2136))(a2) == 1 ) v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2140))(a2); else v6 = a2; } else { v6 = (*(int (__thiscall **)(int))(v5 + 2072))(a2); } if ( v6 != *((_DWORD *)v3 + 1) || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2108))(a2) != *((_WORD *)v3 + 4) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeactive::lid_Call"); result = 0; } else { ++*((_DWORD *)v3 + 3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeactive::lid_Call"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046D220) -------------------------------------------------------- int __thiscall sub_46D220(int this, unsigned __int8 *a2) { int v2; // esi@1 int v3; // eax@1 int v4; // eax@4 v2 = this; *(_DWORD *)this = &off_6B2328; *(_DWORD *)(this + 8) = a2; v3 = sub_639620(&unk_877F50, a2); if ( v3 == -1 ) LOWORD(v3) = -1; v3 = (unsigned __int16)v3; if ( dword_8772EC >= (unsigned int)(unsigned __int16)v3 ) { v4 = dword_8772E4 + 1452 * v3; } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v3); v4 = 0; } *(_DWORD *)(v2 + 12) = v4; return v2; } // 6B2328: using guessed type int (__stdcall *off_6B2328)(int, int); // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; //----- (0046D2C0) -------------------------------------------------------- char __thiscall sub_46D2C0(void *this, void *a2, int a3) { void *v3; // edi@1 char v4; // al@1 int v5; // edx@1 int v6; // ebx@2 int v7; // ecx@6 int v8; // eax@13 int v9; // ecx@13 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyGuildBuff::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyGuildBuff::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 2136))(a2); v5 = *(_DWORD *)a2; if ( v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v5 + 2136))(a2) == 1 ) v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 2140))(a2); else v6 = (int)a2; } else { v6 = (*(int (__thiscall **)(void *))(v5 + 2072))(a2); } v7 = *((_DWORD *)v3 + 2); *((_DWORD *)v3 + 1) = 0; if ( *(_DWORD *)(v7 + 32) ) { while ( 1 ) { if ( v6 == *(_DWORD *)(*((_DWORD *)v3 + 2) + 4 * *((_DWORD *)v3 + 1) + 36) ) { if ( !*((_DWORD *)v3 + 3) ) goto LABEL_16; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)a2 + 996))(a2, 298) && !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)a2 + 996))(a2, 300) ) break; } ++*((_DWORD *)v3 + 1); if ( *((_DWORD *)v3 + 1) >= *(_DWORD *)(*((_DWORD *)v3 + 2) + 32) ) goto LABEL_16; } v8 = *((_DWORD *)v3 + 3); v9 = *(_DWORD *)(v8 + 48); if ( v9 && (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, signed int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)a2 + 1592))( a2, a2, *(_DWORD *)(*(_DWORD *)v8 + 34), 1, v8, dword_14D129E8, 0, -1, *(_DWORD *)(v9 + 43), 1, 0) ) { sub_401900(a2, *(_DWORD *)(**((_DWORD **)v3 + 3) + 34)); sub_4055D0(a2, *(_DWORD *)(**((_DWORD **)v3 + 3) + 34), -1, 1); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)a2 + 1008))( a2, *(_DWORD *)(**((_DWORD **)v3 + 3) + 34), -1, 1); } } LABEL_16: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyGuildBuff::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0046D480) -------------------------------------------------------- char __thiscall sub_46D480(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 int v6; // edx@2 int v7; // eax@5 int v8; // eax@9 int v9; // ecx@10 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyGuildBuff::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyGuildBuff::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v5 = *((_DWORD *)v3 + 2); *((_DWORD *)v3 + 1) = 0; if ( *(_DWORD *)v5 > 0u ) { while ( 1 ) { v6 = *((_DWORD *)v3 + 1); if ( v4 == *(_DWORD *)(v5 + 4 * (9 * v6 + 9)) ) break; *((_DWORD *)v3 + 1) = v6 + 1; if ( *((_DWORD *)v3 + 1) >= *(_DWORD *)v5 ) goto LABEL_12; } v7 = sub_639620(&unk_877F50, (unsigned __int8 *)(v5 + 36 * v6 + 4)); if ( v7 == -1 ) LOWORD(v7) = -1; v7 = (unsigned __int16)v7; if ( dword_8772EC >= (unsigned int)(unsigned __int16)v7 ) { v8 = dword_8772E4 + 1452 * v7; if ( v8 ) { v9 = *(_DWORD *)(v8 + 48); if ( v9 ) (*(void (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1592))( a2, a2, *(_DWORD *)(*(_DWORD *)v8 + 34), 1, v8, dword_14D129E8, 0, -1, *(_DWORD *)(v9 + 43), 0, 0); } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v7); } } LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyGuildBuff::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; // 14D129E8: using guessed type int dword_14D129E8; //----- (0046D5E0) -------------------------------------------------------- int __thiscall sub_46D5E0(void *this, int a2) { int v2; // edi@1 void *v3; // ebx@1 signed int v4; // esi@1 void *v5; // esi@8 int v6; // eax@8 int v7; // eax@8 __int64 v8; // qax@8 int v9; // edi@10 void *v10; // esi@12 int v11; // eax@12 signed int v13; // [sp+10h] [bp-58h]@10 int v14; // [sp+14h] [bp-54h]@5 int i; // [sp+18h] [bp-50h]@10 char v16; // [sp+20h] [bp-48h]@8 char v17; // [sp+54h] [bp-14h]@8 unsigned int v18; // [sp+58h] [bp-10h]@1 int v19; // [sp+64h] [bp-4h]@1 int v20; // [sp+68h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v2 = a2; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( *(_WORD *)(a2 + 6) != 6304 ) { --dword_750CB8; LABEL_16: v19 = v4; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"); } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2136))(v3) != 1 || !(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2140))(v3) ) { LABEL_15: --dword_750CB8; goto LABEL_16; } v14 = *(_DWORD *)(a2 + 12); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2140))(v3) != *(_DWORD *)(a2 + 12) ) { v4 = -1; goto LABEL_15; } if ( *(_DWORD *)(a2 + 48) || *(_DWORD *)(a2 + 44) ) { v5 = off_849C18; *(_WORD *)off_849C18 = -26510; v5 = (char *)v5 + 2; *(_BYTE *)v5 = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v5 + 1) = *((_WORD *)v3 + 2); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)((char *)v5 + 7) = v14; *(_DWORD *)((char *)v5 + 3) = v6; *(_WORD *)((char *)v5 + 11) = 769; *((_BYTE *)v5 + 13) = 2; *(_DWORD *)((char *)v5 + 37) = *(_DWORD *)(a2 + 44); *(_DWORD *)((char *)v5 + 41) = *(_DWORD *)(a2 + 48); *(_DWORD *)((char *)v5 + 45) = *(_DWORD *)(a2 + 52); *(_DWORD *)((char *)v5 + 49) = *(_DWORD *)(a2 + 56); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); sub_4836B0((int)((char *)v5 + 15), v7); *(_WORD *)((char *)v5 + 35) = -1; *((_BYTE *)v5 + 14) = 0; sub_5A4B40(&off_849C18, 55); memcpy(&v16, v5, 0x34u); v17 = *((_BYTE *)v5 + 52); sub_470F60(&dword_D0207E8, (int)&v16); sub_470730((int)&v16); LODWORD(v8) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1076))(v3); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 1088))( v3, *(_DWORD *)(a2 + 44) + v8, (unsigned __int64)(*(_QWORD *)(a2 + 44) + v8) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1096))(v3); v2 = a2; } if ( *(_BYTE *)(v2 + 60) ) { v9 = v2 + 64; v13 = 0; for ( i = v9; ; v9 = i ) { v10 = off_849C18; *(_WORD *)off_849C18 = -26510; v10 = (char *)v10 + 2; *(_BYTE *)v10 = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v10 + 1) = *((_WORD *)v3 + 2); *(_DWORD *)((char *)v10 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)((char *)v10 + 7) = v14; *(_WORD *)((char *)v10 + 11) = 769; *((_BYTE *)v10 + 13) = 1; v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); *(_DWORD *)((char *)v10 + 15) = *(_DWORD *)v11; *(_DWORD *)((char *)v10 + 19) = *(_DWORD *)(v11 + 4); *(_DWORD *)((char *)v10 + 23) = *(_DWORD *)(v11 + 8); *(_DWORD *)((char *)v10 + 27) = *(_DWORD *)(v11 + 12); *(_DWORD *)((char *)v10 + 31) = *(_DWORD *)(v11 + 16); *(_WORD *)((char *)v10 + 35) = *(_WORD *)(v9 - 2); *((_BYTE *)v10 + 14) = *(_BYTE *)v9; *(_DWORD *)((char *)v10 + 37) = *(_DWORD *)(v9 + 2); *(_DWORD *)((char *)v10 + 41) = 0; *(_DWORD *)((char *)v10 + 45) = 0; *(_DWORD *)((char *)v10 + 49) = 0; sub_5A4B40(&off_849C18, 55); memcpy(&v16, v10, 0x34u); v17 = *((_BYTE *)v10 + 52); sub_470F60(&dword_D0207E8, (int)&v16); sub_470730((int)&v16); i += 9; ++v13; if ( v13 >= *(_BYTE *)(a2 + 60) ) break; } } --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D0207E8: using guessed type int dword_D0207E8; //----- (0046D900) -------------------------------------------------------- int __thiscall sub_46D900(void *this, int a2) { void *v2; // ebx@1 void *v3; // esi@9 int v4; // eax@9 int v5; // ecx@10 int v6; // eax@10 char *v7; // ecx@14 int v8; // eax@14 __int64 v9; // qax@19 int v11; // [sp-18h] [bp-2034h]@2 int v12; // [sp-14h] [bp-2030h]@2 signed int v13; // [sp+8h] [bp-2014h]@9 signed int v14; // [sp+8h] [bp-2014h]@13 int v15; // [sp+Ch] [bp-2010h]@13 __int16 v16; // [sp+10h] [bp-200Ch]@13 char v17; // [sp+12h] [bp-200Ah]@13 int v18; // [sp+13h] [bp-2009h]@13 int v19; // [sp+17h] [bp-2005h]@13 int v20; // [sp+1Bh] [bp-2001h]@13 int v21; // [sp+1Fh] [bp-1FFDh]@13 int v22; // [sp+23h] [bp-1FF9h]@13 int v23; // [sp+27h] [bp-1FF5h]@13 int v24; // [sp+2Bh] [bp-1FF1h]@13 int v25; // [sp+2Fh] [bp-1FEDh]@13 int v26; // [sp+33h] [bp-1FE9h]@13 int v27; // [sp+37h] [bp-1FE5h]@13 char v28; // [sp+3Bh] [bp-1FE1h]@13 char v29; // [sp+3Ch] [bp-1FE0h]@14 unsigned int v30; // [sp+200Ch] [bp-10h]@1 int v31; // [sp+2018h] [bp-4h]@1 int v32; // [sp+201Ch] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; if ( !a2 ) { v12 = 0; v11 = (int)"ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - reward null"; LABEL_22: sub_639100(&unk_86DDD8, v11, v12); v31 = -1; goto LABEL_23; } if ( *(_WORD *)(a2 + 6) != 6304 ) { v12 = 0; v11 = (int)"ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - receive error"; goto LABEL_22; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2) != 1 ) { v12 = 0; v11 = (int)"ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - guildacademy member"; goto LABEL_22; } if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2) || (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2) != *(_DWORD *)(a2 + 12) ) { v12 = 0; v11 = (int)"ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - guildacademy number"; goto LABEL_22; } v3 = off_849C18; *(_WORD *)off_849C18 = -26491; *((_BYTE *)v3 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v3 + 3) = *((_WORD *)v2 + 2); *(_DWORD *)((char *)v3 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)((char *)v3 + 9) = *(_DWORD *)(a2 + 12); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1388))(v2); sub_4836B0((int)((char *)v3 + 13), v4); *(_DWORD *)((char *)v3 + 33) = *(_DWORD *)(a2 + 44); *(_DWORD *)((char *)v3 + 37) = *(_DWORD *)(a2 + 48); *(_DWORD *)((char *)v3 + 41) = *(_DWORD *)(a2 + 52); *(_DWORD *)((char *)v3 + 45) = *(_DWORD *)(a2 + 56); *((_BYTE *)v3 + 49) = *(_BYTE *)(a2 + 60); v13 = 0; if ( *(_BYTE *)(a2 + 60) ) { v5 = (int)((char *)v3 + 50); v6 = a2 + 61; while ( 1 ) { *(_DWORD *)v5 = *(_DWORD *)v6; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 + 4); *(_BYTE *)(v5 + 8) = *(_BYTE *)(v6 + 8); v6 += 9; ++v13; if ( v13 >= *(_BYTE *)(a2 + 60) ) break; v5 += 9; } } sub_5A4B40(&off_849C18, 9 * *((_BYTE *)v3 + 49) + 50); v15 = *(_DWORD *)((char *)v3 + 2); v16 = *((_WORD *)v3 + 3); v17 = *((_BYTE *)v3 + 8); v18 = *(_DWORD *)((char *)v3 + 9); v19 = *(_DWORD *)((char *)v3 + 13); v20 = *(_DWORD *)((char *)v3 + 17); v21 = *(_DWORD *)((char *)v3 + 21); v22 = *(_DWORD *)((char *)v3 + 25); v23 = *(_DWORD *)((char *)v3 + 29); v24 = *(_DWORD *)((char *)v3 + 33); v25 = *(_DWORD *)((char *)v3 + 37); v26 = *(_DWORD *)((char *)v3 + 41); v27 = *(_DWORD *)((char *)v3 + 45); v28 = *((_BYTE *)v3 + 49); v14 = 0; if ( *((_BYTE *)v3 + 49) ) { v7 = &v29; v8 = (int)((char *)v3 + 50); while ( 1 ) { *(_DWORD *)v7 = *(_DWORD *)v8; *((_DWORD *)v7 + 1) = *(_DWORD *)(v8 + 4); v7[8] = *(_BYTE *)(v8 + 8); v8 += 9; ++v14; if ( v14 >= *((_BYTE *)v3 + 49) ) break; v7 += 9; } } sub_4711B0(&dword_D0207E8, (int)&v15); sub_470C00((int)&v15); if ( *(_DWORD *)(a2 + 48) || *(_DWORD *)(a2 + 44) ) { LODWORD(v9) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1088))( v2, *(_DWORD *)(a2 + 44) + v9, (unsigned __int64)(*(_QWORD *)(a2 + 44) + v9) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1096))(v2); } v31 = -1; LABEL_23: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D0207E8: using guessed type int dword_D0207E8; //----- (0046DC50) -------------------------------------------------------- int __stdcall sub_46DC50(int a1, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // ebx@3 int v6; // [sp-4h] [bp-24h]@5 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 6)); if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 768))(v3) ) { v6 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"; } else { v4 = sub_5CA140((int)&unk_13267D80, *(_DWORD *)v2); if ( v4 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2144))(v3, *(_DWORD *)v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2148))(v3, v4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2132))(v3); sub_63B620(v2); } v6 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046DD60) -------------------------------------------------------- int __stdcall sub_46DD60(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2116))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2144))(v2, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2148))(v2, 0); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2132))(v2); sub_63B620(a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046DE60) -------------------------------------------------------- int __stdcall sub_46DE60(int a1, int a2) { int v2; // edi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MASTER_TELEPORT_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MASTER_TELEPORT_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2676))(v2) ) { v3 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 9) = *(_DWORD *)(a1 + 6); *(_DWORD *)(v3 + 13) = *(_DWORD *)(a1 + 10); *(_DWORD *)(v3 + 17) = *(_DWORD *)(a1 + 14); *(_DWORD *)(v3 + 21) = *(_DWORD *)(a1 + 18); *(_DWORD *)(v3 + 25) = *(_DWORD *)(a1 + 22); sub_5A50A0(off_86B04C, v2, v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MASTER_TELEPORT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B04C: using guessed type int (__stdcall *(*off_86B04C[6])[3])(int, int); //----- (0046DF60) -------------------------------------------------------- int __stdcall sub_46DF60(int a1, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // ebx@3 int v6; // [sp-4h] [bp-24h]@5 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_GUILD_JOIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_GUILD_JOIN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 6)); if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 768))(v3) ) { v6 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_GUILD_JOIN_CMD"; } else { v4 = sub_5CA140((int)&unk_13267D80, *(_DWORD *)v2); if ( v4 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2076))(v3, *(_DWORD *)v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2080))(v3, v4); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2144))(v3, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2148))(v3, 0); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2084))(v3); sub_63B620(v2); } v6 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_GUILD_JOIN_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046E090) -------------------------------------------------------- int __stdcall sub_46E090(int a1, int a2) { int (__stdcall **v3)(int, int); // [sp+4h] [bp-20h]@1 int v4; // [sp+14h] [bp-10h]@1 int v5; // [sp+20h] [bp-4h]@1 v4 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; sub_46D220((int)&v3, (unsigned __int8 *)(a1 + 2)); LOBYTE(v5) = 1; sub_43C470(dword_13253824, (int)&v3); --dword_750CB8; v3 = &off_6B22DC; v5 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253824: using guessed type int dword_13253824; //----- (0046E150) -------------------------------------------------------- int __stdcall sub_46E150(int a1, int a2) { int (__stdcall **v3)(int, int); // [sp+4h] [bp-1Ch]@1 int v4; // [sp+Ch] [bp-14h]@1 int v5; // [sp+10h] [bp-10h]@1 int v6; // [sp+1Ch] [bp-4h]@1 v5 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"; dword_750AB8[dword_750CB8++] = -1; v6 = 0; v3 = &off_6B2358; v4 = a1 + 2; LOBYTE(v6) = 1; sub_43C470(dword_13253824, (int)&v3); --dword_750CB8; v3 = &off_6B22DC; v6 = -1; return sub_467660( (int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6B2358: using guessed type int (__stdcall *off_6B2358)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253824: using guessed type int dword_13253824; //----- (0046E210) -------------------------------------------------------- int __stdcall sub_46E210(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2072))(v2) == *(_DWORD *)(a1 + 6) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2160))(v2, *(_BYTE *)(a1 + 10)); else sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD - guild number", 0); } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD - shineobject null", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046E300) -------------------------------------------------------- int __stdcall sub_46E300(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2120))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046E3E0) -------------------------------------------------------- int __stdcall sub_46E3E0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2124))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046E4C0) -------------------------------------------------------- int __stdcall sub_46E4C0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2168))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046E5A0) -------------------------------------------------------- int __thiscall sub_46E5A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned __int8 v5; // al@1 char v6; // al@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_BYTE *)(a2 + 2); if ( v5 < 3u ) { *((_BYTE *)v4 + v5 + 84382) = 0; v6 = 1; if ( *((_BYTE *)v4 + 84382) == 1 ) v6 = 0; if ( *((_BYTE *)v4 + 84383) == 1 ) v6 = 0; if ( *((_BYTE *)v4 + 84384) != 1 && v6 == 1 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2116))(v4); } else { sub_639100(&unk_86DDD8, (int)"sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD : nCloseType Error", v5); } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046E690) -------------------------------------------------------- int __thiscall sub_46E690(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // al@1 int v6; // edx@1 void *v7; // ecx@1 int (__thiscall *v8)(_DWORD); // eax@2 int v9; // ebx@5 void *v10; // edi@7 int v11; // eax@9 void *v12; // edi@10 int v13; // eax@12 int v15; // [sp-4h] [bp-24h]@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 2136))(v4) != 1 ) { LABEL_6: sub_46FE90(v4, 6106); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"; goto LABEL_14; } v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2140); v7 = v4; } else { v8 = *(int (__thiscall **)(_DWORD))(v6 + 2072); } v9 = v8(v7); if ( !v9 ) goto LABEL_6; v10 = off_849C18; *(_WORD *)off_849C18 = 13442; *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v10 + 2) = v9; *((_BYTE *)v10 + 12) = *(_BYTE *)(a2 + 2); if ( sub_4C81E0(&off_849C18, 13) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ : Packet Too Long", 13); } v12 = off_849C18; *(_WORD *)off_849C18 = -26512; *((_WORD *)v12 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( sub_4C81E0(&off_849C18, 8) ) { v13 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v13); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ : Packet Too Long", 8); } v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"; LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; //----- (0046E840) -------------------------------------------------------- int __thiscall sub_46E840(void *this, int a2, int a3) { int v3; // esi@1 int (__stdcall **v5)(int, int); // [sp+0h] [bp-20E0h]@1 int v6; // [sp+4h] [bp-20DCh]@1 int (__thiscall *v7)(int, int, int, int); // [sp+8h] [bp-20D8h]@1 char *v8; // [sp+Ch] [bp-20D4h]@1 int v9; // [sp+10h] [bp-20D0h]@1 __int16 v10; // [sp+14h] [bp-20CCh]@1 char v11; // [sp+18h] [bp-20C8h]@1 unsigned int v12; // [sp+20D0h] [bp-10h]@1 int v13; // [sp+20DCh] [bp-4h]@1 int v14; // [sp+20E0h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v3 = (int)this; sub_46F970((int)&v11, a2); v13 = 0; v5 = &off_6B29C0; v6 = v3; v7 = sub_46F9C0; v8 = &v11; v9 = 0; v10 = -1; LOBYTE(v13) = 1; sub_43C470(v3, (int)&v5); *(_WORD *)a3 = v10; v5 = &off_6B22E4; v13 = -1; sub_46F990(&v11); return v9; } // 6B22E4: using guessed type int (__stdcall *off_6B22E4)(int, int); // 6B29C0: using guessed type int (__stdcall *off_6B29C0)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (0046E920) -------------------------------------------------------- int __thiscall sub_46E920(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int v4; // edi@2 int v5; // eax@9 int v6; // ebx@9 int result; // eax@14 int (__stdcall **v8)(int, int); // [sp+10h] [bp-20h]@10 int v9; // [sp+14h] [bp-1Ch]@10 __int16 v10; // [sp+18h] [bp-18h]@10 unsigned int v11; // [sp+1Ch] [bp-14h]@10 int v12; // [sp+20h] [bp-10h]@5 int v13; // [sp+2Ch] [bp-4h]@10 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 2136))() == 0; v3 = *(_DWORD *)v1; if ( v2 ) { v4 = (*(int (__thiscall **)(void *))(v3 + 2072))(v1); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 2136))(v1) == 1 ) v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2140))(v1); else v4 = v12; } if ( v4 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2108))(v1) && *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2108))(v1) != -1 ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2108))(v1); v6 = sub_46E840(&dword_D0207E8, v4, v5); if ( v6 ) { v10 = *(_WORD *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2108))(v1); v8 = &off_6B22EC; v9 = v4; v11 = 0; v13 = 0; sub_43C470(dword_13253824, (int)&v8); if ( v11 <= 1 ) { sub_46F9A0(v6); sub_473C70((int)&dword_D0207E8, *((_WORD *)v1 + 42189)); } v13 = -1; v8 = &off_6B22DC; } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2112))(v1, 65535); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2108))(v1); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2108))(v1); if ( *(_WORD *)result != -1 ) result = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2112))(v1, 65535); } return result; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6B22EC: using guessed type int (__stdcall *off_6B22EC)(int, int); // D0207E8: using guessed type int dword_D0207E8; // 13253824: using guessed type int dword_13253824; //----- (0046EAA0) -------------------------------------------------------- int __thiscall sub_46EAA0(void *this, int a2) { unsigned int v2; // ST08_4@1 void *v3; // edi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 char v5; // al@1 int v6; // edx@1 void *v7; // ecx@1 int (__thiscall *v8)(_DWORD); // eax@2 int v9; // eax@6 int v10; // eax@6 int v11; // esi@6 int v12; // eax@8 int v13; // ST04_4@9 __time32_t v14; // eax@9 __time32_t v15; // eax@9 __int64 v16; // kr00_8@10 void *v17; // eax@10 int v18; // eax@12 void *v19; // eax@13 int v20; // esi@13 int v21; // eax@13 int v22; // eax@14 int v23; // eax@16 int v25; // [sp+18h] [bp-50h]@6 int v26; // [sp+1Ch] [bp-4Ch]@0 char v27; // [sp+20h] [bp-48h]@13 char v28; // [sp+54h] [bp-14h]@13 unsigned int v29; // [sp+58h] [bp-10h]@1 int v30; // [sp+64h] [bp-4h]@1 int v31; // [sp+68h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v2 = (unsigned int)&v31 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2136); v30 = 0; v5 = v4(v3, v2); v6 = *(_DWORD *)v3; v7 = v3; if ( !v5 ) { v8 = *(int (__thiscall **)(_DWORD))(v6 + 2072); LABEL_5: v26 = v8(v7); goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 2136))(v3) == 1 ) { v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2140); v7 = v3; goto LABEL_5; } LABEL_6: v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2108))(v3); v10 = sub_46E840(&dword_D0207E8, v26, v9); v11 = v10; v25 = v10; if ( *(_WORD *)(a2 + 16) == 6112 && v10 ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 28))( v12, v3, *(_WORD *)(a2 + 6), 0) ) { v13 = *(_WORD *)(a2 + 6); v14 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : "); v15 = sub_43B910(v14, v13); sub_418F20(v15, (int)&unk_13359E04); } v16 = sub_46FAC0(v11) - *(_QWORD *)(a2 + 8); sub_46FAD0(v25, v16, SHIDWORD(v16)); v17 = off_849C18; *(_WORD *)off_849C18 = 12336; *(_QWORD *)((char *)v17 + 2) = v16; *((_WORD *)v17 + 5) = *(_WORD *)(a2 + 16); if ( sub_4C81E0(&off_849C18, 12) ) { v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v18 + 12))(v18, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v19 = off_849C18; *(_WORD *)off_849C18 = -26510; v20 = (int)((char *)v19 + 2); *((_BYTE *)v19 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v20 + 1) = *((_WORD *)v3 + 2); *(_DWORD *)(v20 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)(v20 + 7) = v26; *(_WORD *)(v20 + 11) = 1; *(_BYTE *)(v20 + 13) = 2; *(_DWORD *)(v20 + 37) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v20 + 41) = *(_DWORD *)(a2 + 12); *(_QWORD *)(v20 + 45) = sub_46FAC0(v25); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); *(_DWORD *)(v20 + 15) = *(_DWORD *)v21; *(_DWORD *)(v20 + 19) = *(_DWORD *)(v21 + 4); *(_DWORD *)(v20 + 23) = *(_DWORD *)(v21 + 8); *(_DWORD *)(v20 + 27) = *(_DWORD *)(v21 + 12); *(_DWORD *)(v20 + 31) = *(_DWORD *)(v21 + 16); *(_WORD *)(v20 + 35) = -1; *(_BYTE *)(v20 + 14) = 0; sub_5A4B40(&off_849C18, 55); memcpy(&v27, (const void *)v20, 0x34u); v28 = *(_BYTE *)(v20 + 52); sub_470730((int)&v27); } else { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v22 + 40))(v22, *(_WORD *)(a2 + 6)); *(_WORD *)off_849C18 = 12336; *(_WORD *)(a2 + 16) = 6120; if ( sub_4C81E0(&off_849C18, 12) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v23 + 12))(v23, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } } --dword_750CB8; v30 = -1; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D0207E8: using guessed type int dword_D0207E8; //----- (0046EDB0) -------------------------------------------------------- int __thiscall sub_46EDB0(void *this, int a2) { unsigned int v2; // ST08_4@1 void *v3; // edi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 char v5; // al@1 int v6; // edx@1 void *v7; // ecx@1 int (__thiscall *v8)(_DWORD); // eax@2 int v9; // eax@6 int v10; // eax@6 int v11; // esi@6 int v12; // eax@8 int v13; // ST04_4@9 __time32_t v14; // eax@9 __time32_t v15; // eax@9 __int64 v16; // kr00_8@10 void *v17; // eax@10 int v18; // eax@12 void *v19; // eax@13 int v20; // esi@13 int v21; // eax@13 int v22; // eax@14 int v23; // eax@16 int v25; // [sp+18h] [bp-50h]@6 int v26; // [sp+1Ch] [bp-4Ch]@0 char v27; // [sp+20h] [bp-48h]@13 char v28; // [sp+54h] [bp-14h]@13 unsigned int v29; // [sp+58h] [bp-10h]@1 int v30; // [sp+64h] [bp-4h]@1 int v31; // [sp+68h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v2 = (unsigned int)&v31 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2136); v30 = 0; v5 = v4(v3, v2); v6 = *(_DWORD *)v3; v7 = v3; if ( !v5 ) { v8 = *(int (__thiscall **)(_DWORD))(v6 + 2072); LABEL_5: v26 = v8(v7); goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 2136))(v3) == 1 ) { v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2140); v7 = v3; goto LABEL_5; } LABEL_6: v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2108))(v3); v10 = sub_46E840(&dword_D0207E8, v26, v9); v11 = v10; v25 = v10; if ( *(_WORD *)(a2 + 16) == 6560 && v10 ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 28))( v12, v3, *(_WORD *)(a2 + 6), 0) ) { v13 = *(_WORD *)(a2 + 6); v14 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck : "); v15 = sub_43B910(v14, v13); sub_418F20(v15, (int)&unk_13359E04); } v16 = *(_QWORD *)(a2 + 8) + sub_46FAC0(v11); sub_46FAD0(v25, v16, SHIDWORD(v16)); v17 = off_849C18; *(_WORD *)off_849C18 = 12338; *(_QWORD *)((char *)v17 + 2) = v16; *((_WORD *)v17 + 5) = *(_WORD *)(a2 + 16); if ( sub_4C81E0(&off_849C18, 12) ) { v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v18 + 12))(v18, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck : Packet Too Long", 12); } v19 = off_849C18; *(_WORD *)off_849C18 = -26508; v20 = (int)((char *)v19 + 2); *((_BYTE *)v19 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v20 + 1) = *((_WORD *)v3 + 2); *(_DWORD *)(v20 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)(v20 + 7) = v26; *(_WORD *)(v20 + 11) = 1; *(_BYTE *)(v20 + 13) = 2; *(_DWORD *)(v20 + 37) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v20 + 41) = *(_DWORD *)(a2 + 12); *(_QWORD *)(v20 + 45) = sub_46FAC0(v25); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); *(_DWORD *)(v20 + 15) = *(_DWORD *)v21; *(_DWORD *)(v20 + 19) = *(_DWORD *)(v21 + 4); *(_DWORD *)(v20 + 23) = *(_DWORD *)(v21 + 8); *(_DWORD *)(v20 + 27) = *(_DWORD *)(v21 + 12); *(_DWORD *)(v20 + 31) = *(_DWORD *)(v21 + 16); *(_WORD *)(v20 + 35) = -1; *(_BYTE *)(v20 + 14) = 0; sub_5A4B40(&off_849C18, 55); memcpy(&v27, (const void *)v20, 0x34u); v28 = *(_BYTE *)(v20 + 52); sub_4708B0((int)&v27); } else { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v22 + 40))(v22, *(_WORD *)(a2 + 6)); *(_WORD *)off_849C18 = 12338; *(_WORD *)(a2 + 16) = 6120; if ( sub_4C81E0(&off_849C18, 12) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v23 + 12))(v23, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } } --dword_750CB8; v30 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D0207E8: using guessed type int dword_D0207E8; //----- (0046F0C0) -------------------------------------------------------- int __thiscall sub_46F0C0(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 int v4; // edx@1 int v5; // ebx@2 int v6; // eax@6 int v7; // eax@6 void *v8; // ecx@7 __int16 v9; // ax@8 int v10; // eax@9 int v11; // edi@9 unsigned __int8 v12; // al@13 int v14; // [sp-8h] [bp-28h]@7 int v15; // [sp-4h] [bp-24h]@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2); v4 = *(_DWORD *)v2; if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v4 + 2136))(v2) == 1 ) v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2); else v5 = a2; } else { v5 = (*(int (__thiscall **)(void *))(v4 + 2072))(v2); } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2108))(v2); v7 = sub_46E840(&dword_D0207E8, v5, v6); if ( v7 ) { v15 = (int)v2; v14 = a2; v8 = (void *)v7; } else { v9 = word_D0207F4; if ( word_D0207F4 == -1 || (*((_WORD *)v2 + 42189) = word_D0207F4, v10 = (*(int (__thiscall **)(int *, _DWORD))(dword_D0207E8 + 8))(&dword_D0207E8, (unsigned __int16)v9), (v11 = v10) == 0) ) { sub_46FE90(v2, 6105); goto LABEL_13; } *(_DWORD *)(v10 + 8368) = v5; sub_46F9B0(v10); v15 = (int)v2; v14 = a2; v8 = (void *)v11; } sub_46F9E0(v8, v14, v15); LABEL_13: v12 = *(_BYTE *)(a2 + 14); if ( v12 < 3u ) *((_BYTE *)v2 + v12 + 84382) = 1; else sub_639100(&unk_86DDD8, (int)"so_ply_GuildAcademyRewardStoreFill : nOpenType Error", v12); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; // D0207F4: using guessed type __int16 word_D0207F4; //----- (0046F240) -------------------------------------------------------- int __thiscall sub_46F240(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@4 int v7; // eax@7 int v8; // ebx@10 char v9; // al@10 int v10; // edx@10 void *v11; // ecx@10 int (__thiscall *v12)(_DWORD); // eax@11 int v13; // eax@15 int v14; // eax@18 signed __int16 v15; // cx@20 int v16; // eax@22 int v17; // eax@29 int v18; // edi@29 int v19; // ST20_4@29 int v20; // eax@29 __int16 v21; // ax@29 void *v22; // edi@29 int v23; // eax@29 int v24; // eax@31 int v25; // eax@32 int v27; // [sp+14h] [bp-10h]@15 v4 = this; sub_4675D0( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 12336; if ( !(dword_D0207DC & 1) ) { dword_D0207DC |= 1u; word_D0207D8 = 70; atexit(nullsub_46); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0207D8) ) { v6 = 6114; goto LABEL_5; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v6 = 6113; LABEL_5: *((_WORD *)v5 + 5) = v6; if ( sub_4C81E0(&off_849C18, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); } goto LABEL_33; } v8 = a2; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4); v10 = *(_DWORD *)v4; v11 = v4; if ( v9 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v10 + 2136))(v4) != 1 ) goto LABEL_15; v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2140); v11 = v4; } else { v12 = *(int (__thiscall **)(_DWORD))(v10 + 2072); } a2 = v12(v11); LABEL_15: v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2108))(v4); v27 = sub_46E840(&dword_D0207E8, a2, v13); if ( !v27 ) { *((_WORD *)v5 + 5) = 6115; if ( sub_4C81E0(&off_849C18, 12) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v14 + 12))(v14, v4, &off_849C18); goto LABEL_33; } goto LABEL_17; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4) ) { v15 = 6117; goto LABEL_21; } if ( *(_DWORD *)(v8 + 6) || *(_DWORD *)(v8 + 2) ) { if ( *(_QWORD *)(v8 + 2) > (unsigned __int64)sub_46FAC0(v27) ) *(_QWORD *)(v8 + 2) = sub_46FAC0(v27); if ( !*(_QWORD *)(v8 + 2) ) { v15 = 6116; LABEL_21: *((_WORD *)v5 + 5) = v15; if ( sub_4C81E0(&off_849C18, 12) ) { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v16 + 12))(v16, v4, &off_849C18); goto LABEL_33; } LABEL_17: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); goto LABEL_33; } v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v18 = *(_DWORD *)v17; v19 = v17; v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 2004))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), 1); v21 = sub_4802C0(v20); (*(void (__thiscall **)(int, _DWORD))(v18 + 72))(v19, (unsigned __int16)v21); v22 = off_849C18; *(_WORD *)off_849C18 = 13445; *((_DWORD *)v22 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v22 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v22 + 10) = a2; *(_DWORD *)((char *)v22 + 14) = *(_DWORD *)(v8 + 2); *(_DWORD *)((char *)v22 + 18) = *(_DWORD *)(v8 + 6); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); *((_WORD *)v22 + 4) = sub_4802C0(v23); if ( sub_4C81E0(&off_849C18, 22) ) { v24 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v24); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 22); } v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); sub_43BBF0(v25); } LABEL_33: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207D8: using guessed type __int16 word_D0207D8; // D0207DC: using guessed type int dword_D0207DC; // D0207E8: using guessed type int dword_D0207E8; // 14D16430: using guessed type int dword_14D16430; //----- (0046F5C0) -------------------------------------------------------- int __thiscall sub_46F5C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@4 int v7; // eax@7 int v8; // ebx@10 char v9; // al@10 int v10; // edx@10 void *v11; // ecx@10 int (__thiscall *v12)(_DWORD); // eax@11 int v13; // eax@15 int v14; // eax@18 unsigned __int64 v15; // qax@19 int v16; // edx@20 int v17; // eax@23 int v18; // eax@24 int v19; // edi@24 int v20; // ST20_4@24 int v21; // eax@24 __int16 v22; // ax@24 void *v23; // edi@24 int v24; // eax@24 int v25; // eax@26 int v26; // eax@27 v4 = this; sub_4675D0( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 12338; if ( !(dword_D0207E4 & 1) ) { dword_D0207E4 |= 1u; word_D0207E0 = 70; atexit(nullsub_47); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D0207E0) ) { v6 = 6562; goto LABEL_5; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v6 = 6561; LABEL_5: *((_WORD *)v5 + 5) = v6; if ( sub_4C81E0(&off_849C18, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ : Packet Too Long", 12); } goto LABEL_28; } v8 = a2; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4); v10 = *(_DWORD *)v4; v11 = v4; if ( v9 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v10 + 2136))(v4) != 1 ) goto LABEL_15; v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2140); v11 = v4; } else { v12 = *(int (__thiscall **)(_DWORD))(v10 + 2072); } a2 = v12(v11); LABEL_15: v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2108))(v4); if ( !sub_46E840(&dword_D0207E8, a2, v13) ) { *((_WORD *)v5 + 5) = 6563; if ( sub_4C81E0(&off_849C18, 12) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v14 + 12))(v14, v4, &off_849C18); goto LABEL_28; } goto LABEL_17; } LODWORD(v15) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1076))(v4); if ( *(_QWORD *)(v8 + 2) > v15 ) { *(_DWORD *)(v8 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1076))(v4); *(_DWORD *)(v8 + 6) = v16; } if ( !*(_QWORD *)(v8 + 2) ) { *((_WORD *)v5 + 5) = 6564; if ( sub_4C81E0(&off_849C18, 12) ) { v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v17 + 12))(v17, v4, &off_849C18); goto LABEL_28; } LABEL_17: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ : Packet Too Long", 12); goto LABEL_28; } v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v19 = *(_DWORD *)v18; v20 = v18; v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 2004))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), -1); v22 = sub_4802C0(v21); (*(void (__thiscall **)(int, _DWORD))(v19 + 72))(v20, (unsigned __int16)v22); v23 = off_849C18; *(_WORD *)off_849C18 = 13447; *((_DWORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v23 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v23 + 10) = a2; *(_DWORD *)((char *)v23 + 14) = *(_DWORD *)(v8 + 2); *(_DWORD *)((char *)v23 + 18) = *(_DWORD *)(v8 + 6); v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); *((_WORD *)v23 + 4) = sub_4802C0(v24); if ( sub_4C81E0(&off_849C18, 22) ) { v25 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v25); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ : Packet Too Long", 22); } v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); sub_43BBF0(v26); LABEL_28: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E0: using guessed type __int16 word_D0207E0; // D0207E4: using guessed type int dword_D0207E4; // D0207E8: using guessed type int dword_D0207E8; // 14D16430: using guessed type int dword_14D16430; //----- (0046F910) -------------------------------------------------------- int __thiscall sub_46F910(int this) { return (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(this + 112) + 28))(this + 8); } //----- (0046F930) -------------------------------------------------------- bool __thiscall sub_46F930(int this, int a2) { return *(_DWORD *)(this + 8368) == a2; } //----- (0046F950) -------------------------------------------------------- int __thiscall sub_46F950(int this) { int v1; // esi@1 v1 = this; sub_641390(this); *(_DWORD *)(v1 + 8368) = 0; return v1; } //----- (0046F970) -------------------------------------------------------- int __thiscall sub_46F970(int this, int a2) { int v2; // esi@1 v2 = this; sub_641390(this); *(_DWORD *)(v2 + 8368) = a2; return v2; } //----- (0046F9A0) -------------------------------------------------------- void __thiscall sub_46F9A0(int this) { *(_BYTE *)(this + 8372) = 0; } //----- (0046F9B0) -------------------------------------------------------- void __thiscall sub_46F9B0(int this) { *(_BYTE *)(this + 8372) = 1; } //----- (0046F9C0) -------------------------------------------------------- int __thiscall sub_46F9C0(int this, int a2, int a3, int a4) { return *(_DWORD *)(a4 + 8368) - *(_DWORD *)(this + 8368); } //----- (0046F9E0) -------------------------------------------------------- FILE *__thiscall sub_46F9E0(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // eax@1 int v5; // edi@1 int v6; // eax@1 unsigned __int8 v7; // bl@1 int v8; // esi@1 int v9; // esi@3 FILE *result; // eax@4 int v11; // eax@5 v3 = this; sub_641000(this); sub_640350(v3, a2 + 15, a2 + 16, 0); *((_DWORD *)v3 + 2090) = *(_DWORD *)(a2 + 6); *((_DWORD *)v3 + 2091) = *(_DWORD *)(a2 + 10); v4 = off_849C18; *(_DWORD *)off_849C18 = 400070766; *((_DWORD *)v4 + 1) = *((_DWORD *)v3 + 2090); *((_DWORD *)v4 + 2) = *((_DWORD *)v3 + 2091); v5 = (int)((char *)v4 + 12); v6 = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1316))( (char *)v4 + 12, (char *)v4 + 13, 0, v3); v7 = *(_BYTE *)(a2 + 15); v8 = v6; if ( *(_BYTE *)v5 != v7 ) sub_639100( &unk_86DDD8, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_StoreItem : ItemNumber not match", *(_BYTE *)v5 - v7); v9 = v8 + 13; if ( sub_4C81E0(&off_849C18, v9) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 760))(a3); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 12))(v11, a3, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::garse_StoreItem : Packet Too Long", v9); } return result; } //----- (0046FAC0) -------------------------------------------------------- __int64 __thiscall sub_46FAC0(int this) { return *(_QWORD *)(this + 8360); } //----- (0046FAD0) -------------------------------------------------------- int __thiscall sub_46FAD0(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 8360) = a2; *(_DWORD *)(this + 8364) = a3; return result; } //----- (0046FAF0) -------------------------------------------------------- int __thiscall sub_46FAF0(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); *(_DWORD *)(this + 31) = *(_DWORD *)(a2 + 31); *(_WORD *)(this + 35) = *(_WORD *)(a2 + 35); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 41) = *(_DWORD *)(a2 + 41); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 41) = *(_DWORD *)(a2 + 41); *(_DWORD *)(this + 45) = *(_DWORD *)(a2 + 45); *(_DWORD *)(this + 49) = *(_DWORD *)(a2 + 49); return result; } //----- (0046FB80) -------------------------------------------------------- bool __thiscall sub_46FB80(void *this, int a2, int a3, unsigned int a4, int a5) { int v5; // eax@1 bool result; // al@2 v5 = (**(int (__stdcall ***)(_DWORD))this)((a4 >> 16) & 0x3FF); if ( v5 && a2 == *(_DWORD *)v5 && a3 == *(_DWORD *)(v5 + 4) && *(_WORD *)(v5 + 8) == (_WORD)a4 ) result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v5 + 112) + 28))(v5 + 8) == a5; else result = 0; return result; } //----- (0046FBE0) -------------------------------------------------------- int __thiscall sub_46FBE0(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); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); *(_BYTE *)(this + 32) = *(_BYTE *)(a2 + 32); *(_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); *(_DWORD *)(this + 61) = *(_DWORD *)(a2 + 61); memcpy((void *)(this + 65), (const void *)(a2 + 65), 0x6Fu); return result; } //----- (0046FC80) -------------------------------------------------------- FILE *__thiscall sub_46FC80(void *this, int a2, char a3) { FILE *result; // eax@1 void *v4; // esi@1 __int16 v5; // cx@3 char v6; // dl@6 char v7; // cl@6 int v8; // edx@6 int v9; // ecx@6 int v10; // edx@6 int v11; // ecx@6 int v12; // edx@6 int v13; // ecx@6 int v14; // edx@6 int v15; // ecx@6 int v16; // edx@6 int v17; // eax@8 int *v18; // [sp+4h] [bp-5Ch]@3 int v19; // [sp+8h] [bp-58h]@6 int v20; // [sp+Ch] [bp-54h]@6 int v21; // [sp+10h] [bp-50h]@3 int v22; // [sp+14h] [bp-4Ch]@6 int v23; // [sp+18h] [bp-48h]@6 int v24; // [sp+1Ch] [bp-44h]@6 int v25; // [sp+20h] [bp-40h]@6 int v26; // [sp+24h] [bp-3Ch]@6 __int16 v27; // [sp+28h] [bp-38h]@6 char v28; // [sp+2Ah] [bp-36h]@6 int v29; // [sp+2Bh] [bp-35h]@6 int v30; // [sp+2Fh] [bp-31h]@6 int v31; // [sp+33h] [bp-2Dh]@6 int v32; // [sp+37h] [bp-29h]@6 unsigned int v33; // [sp+5Ch] [bp-4h]@1 int v34; // [sp+60h] [bp+0h]@1 v33 = (unsigned int)&v34 ^ __security_cookie; result = (FILE *)a2; v4 = this; if ( a2 ) { if ( a3 ) { if ( a3 != 1 ) return result; v18 = &v21; LOWORD(v21) = v21 & 0x3FF | 0x9800; v5 = v21 & 0xFC75 | 0x75; } else { v18 = &v21; LOWORD(v21) = v21 & 0x3FF | 0x9800; v5 = v21 & 0xFC73 | 0x73; } v6 = *(_BYTE *)a2; LOWORD(v21) = v5; v7 = *(_BYTE *)(a2 + 1); BYTE2(v21) = v6; v8 = *(_DWORD *)(a2 + 2); BYTE3(v21) = v7; v9 = *(_DWORD *)(a2 + 6); v22 = v8; v10 = *(_DWORD *)(a2 + 10); v23 = v9; v11 = *(_DWORD *)(a2 + 14); v24 = v10; v12 = *(_DWORD *)(a2 + 18); v25 = v11; LOWORD(v11) = *(_WORD *)(a2 + 22); v26 = v12; LOBYTE(v12) = *(_BYTE *)(a2 + 24); v27 = v11; v13 = *(_DWORD *)(a2 + 25); v28 = v12; v14 = *(_DWORD *)(a2 + 29); v29 = v13; v15 = *(_DWORD *)(a2 + 33); v30 = v14; v16 = *(_DWORD *)(a2 + 37); v31 = v15; v19 = 73; v20 = 0; v32 = v16; if ( sub_4C81E0(&v18, 43) ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); result = (FILE *)(*(int (__thiscall **)(int, void *, int **))(*(_DWORD *)v17 + 12))(v17, v4, &v18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineGuildAcademyRewardStorageItemInfoZonRng::lid_Call : Packet Too Long", 43); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0046FDE0) -------------------------------------------------------- void *__thiscall sub_46FDE0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B2EC8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B2EC8: using guessed type int (__thiscall *off_6B2EC8)(void *, char); //----- (0046FE30) -------------------------------------------------------- signed int __thiscall sub_46FE30(int this) { int v1; // esi@1 signed int result; // eax@1 v1 = this + 8; *(_DWORD *)this = -1; *(_DWORD *)(this + 4) = -1; memset((void *)(this + 8), 0, 0x67u); result = 65535; *(_WORD *)v1 = -1; return result; } //----- (0046FE60) -------------------------------------------------------- signed int __thiscall sub_46FE60(int this) { int v1; // esi@1 int v2; // edi@1 signed int result; // eax@1 v1 = this; v2 = this + 8; *(_DWORD *)this = -1; *(_DWORD *)(this + 4) = -1; memset((void *)(this + 8), 0, 0x67u); result = 65535; *(_WORD *)v2 = -1; *(_DWORD *)(v1 + 112) = dword_1508B168; return result; } //----- (0046FE90) -------------------------------------------------------- int __thiscall sub_46FE90(void *this, __int16 a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = -26514; *((_WORD *)v3 + 1) = a2; *((_BYTE *)v3 + 12) = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; if ( sub_4C81E0(&off_849C18, 13) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError : Packet Too Long", 13); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0046FF90) -------------------------------------------------------- int __thiscall sub_46FF90(void *this, int a2) { void *v2; // esi@1 int v3; // eax@4 int v4; // ebx@4 int v5; // ebx@5 int v6; // ebx@6 int v7; // eax@6 int v8; // esi@8 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a2 + 13) == 2 ) { *((_DWORD *)v2 + 2090) = *(_DWORD *)(a2 + 45); *((_DWORD *)v2 + 2091) = *(_DWORD *)(a2 + 49); } if ( *(_BYTE *)(a2 + 13) == 1 ) { v3 = (**(int (__thiscall ***)(_DWORD, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); v4 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 28))(v3 + 8); if ( (unsigned __int64)(unsigned int)v4 > *(_QWORD *)(a2 + 37) ) { v6 = v4 - *(_DWORD *)(a2 + 37); v7 = (**(int (__thiscall ***)(_DWORD, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); (*(void (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(v7 + 112) + 32))(v7 + 8, v6); } else { v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); *(_DWORD *)v5 = -1; *(_DWORD *)(v5 + 4) = -1; memset((void *)(v5 + 8), 0, 0x67u); *(_WORD *)(v5 + 8) = -1; *(_DWORD *)(v5 + 112) = dword_1508B168; } } if ( !*(_BYTE *)(a2 + 13) ) { v8 = (**(int (__thiscall ***)(_DWORD, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); *(_DWORD *)v8 = -1; *(_DWORD *)(v8 + 4) = -1; memset((void *)(v8 + 8), 0, 0x67u); *(_WORD *)(v8 + 8) = -1; *(_DWORD *)(v8 + 112) = dword_1508B168; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00470110) -------------------------------------------------------- int __thiscall sub_470110(void *this, int a2) { void *v2; // esi@1 int v3; // edx@2 unsigned __int8 v4; // cf@2 int v5; // eax@4 int v6; // ebx@4 int v7; // eax@4 int v8; // esi@6 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a2 + 13) == 2 ) { v3 = *(_DWORD *)(a2 + 37); v4 = __CFADD__(v3, *((_DWORD *)v2 + 2090)); *((_DWORD *)v2 + 2090) += v3; *((_DWORD *)v2 + 2091) += *(_DWORD *)(a2 + 41) + v4; } if ( *(_BYTE *)(a2 + 13) == 1 ) { v5 = (**(int (__thiscall ***)(void *, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); v6 = *(_DWORD *)(a2 + 37) + (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 28))(v5 + 8); v7 = (**(int (__thiscall ***)(void *, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); (*(void (__stdcall **)(int, int))(**(_DWORD **)(v7 + 112) + 32))(v7 + 8, v6); } if ( !*(_BYTE *)(a2 + 13) ) { v8 = (**(int (__thiscall ***)(_DWORD, _DWORD))v2)(v2, *(_BYTE *)(a2 + 14)); *(_DWORD *)v8 = -1; *(_DWORD *)(v8 + 4) = -1; memset((void *)(v8 + 8), 0, 0x67u); *(_WORD *)(v8 + 8) = -1; *(_DWORD *)(v8 + 112) = dword_1508B168; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00470240) -------------------------------------------------------- int __thiscall sub_470240(void *this, int a2) { void *v2; // ebx@1 int v3; // edi@8 int v4; // ebx@9 int v5; // ST2C_4@16 int v6; // eax@16 int v7; // ST2C_4@20 int v8; // ST24_4@20 int v9; // eax@20 char v11; // [sp+1Ch] [bp-84h]@16 char v12; // [sp+24h] [bp-7Ch]@16 int v13; // [sp+8Ch] [bp-14h]@16 unsigned int v14; // [sp+90h] [bp-10h]@1 int v15; // [sp+9Ch] [bp-4h]@1 int v16; // [sp+A0h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( a2 ) { if ( (*(_WORD *)(a2 + 43) & 0xFC00 || sub_46FB80(v2, *(_DWORD *)(a2 + 33), *(_DWORD *)(a2 + 37), *(_DWORD *)(a2 + 41), *(_DWORD *)(a2 + 45))) && (*(_WORD *)(a2 + 59) & 0xFC00 || sub_46FB80(v2, *(_DWORD *)(a2 + 49), *(_DWORD *)(a2 + 53), *(_DWORD *)(a2 + 57), *(_DWORD *)(a2 + 61))) ) { v3 = (**(int (__thiscall ***)(void *, int))v2)(v2, *(_WORD *)(a2 + 43) & 0x3FF); if ( v3 ) { v4 = (**(int (__thiscall ***)(void *, int))v2)(v2, *(_WORD *)(a2 + 59) & 0x3FF); if ( v4 ) { switch ( *(_BYTE *)(a2 + 32) ) { case 0: case 1: if ( !(*(_WORD *)(a2 + 43) & 0xFC00) ) sub_46FE60(v3); if ( !(*(_WORD *)(a2 + 59) & 0xFC00) ) goto LABEL_29; break; case 2: if ( !(*(_WORD *)(a2 + 43) & 0xFC00) ) { sub_641100((int)&v11); LOBYTE(v15) = 1; sub_63F850((int)&v11, (const void *)(a2 + 65)); v5 = (*(int (__stdcall **)(int))(**(_DWORD **)(v3 + 112) + 28))(v3 + 8); v6 = (*(int (__stdcall **)(char *))(*(_DWORD *)v13 + 28))(&v12); (*(void (__thiscall **)(_DWORD, int, int))(**(_DWORD **)(v3 + 112) + 32))( *(_DWORD *)(v3 + 112), v3 + 8, v5 - v6); LOBYTE(v15) = 0; nullsub_2(&v11); } if ( !(*(_WORD *)(a2 + 59) & 0xFC00) ) goto LABEL_29; break; case 3: if ( !(*(_WORD *)(a2 + 43) & 0xFC00) ) { sub_641100((int)&v11); LOBYTE(v15) = 2; sub_63F850((int)&v11, (const void *)(a2 + 65)); v7 = (*(int (__stdcall **)(int))(**(_DWORD **)(v3 + 112) + 28))(v3 + 8); v8 = *(_DWORD *)(a2 + 61); v9 = (*(int (__stdcall **)(char *))(*(_DWORD *)v13 + 28))(&v12); (*(void (__thiscall **)(_DWORD, int, int))(**(_DWORD **)(v3 + 112) + 32))( *(_DWORD *)(v3 + 112), v3 + 8, v8 - (v9 - v7)); LOBYTE(v15) = 0; nullsub_2(&v11); } if ( !(*(_WORD *)(a2 + 59) & 0xFC00) ) goto LABEL_29; break; case 4: if ( !(*(_WORD *)(a2 + 43) & 0xFC00) && (*(_WORD *)(a2 + 59) & 0xFC00) == 9216 ) sub_63F850(v3, (const void *)(a2 + 65)); if ( !(*(_WORD *)(a2 + 43) & 0xFC00) && !(*(_WORD *)(a2 + 59) & 0xFC00) ) { sub_63F850(v3, (const void *)v4); LABEL_29: sub_63F850(v4, (const void *)(a2 + 65)); } break; default: break; } } } v15 = -1; } else { *((_BYTE *)v2 + 8372) = 0; v15 = -1; } } else { sub_639100(&unk_86DDD8, (int)"GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther - ring null", 0); v15 = -1; } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00470580) -------------------------------------------------------- int __thiscall sub_470580(int this, int a2) { int result; // eax@2 int v3; // ebx@4 int v4; // esi@6 int v5; // edi@7 unsigned int v6; // edx@12 int v7; // [sp+4h] [bp-8h]@1 int v8; // [sp+8h] [bp-4h]@3 v7 = this; if ( a2 ) { result = *(_DWORD *)(a2 + 39); *(_DWORD *)(this + 8360) = result; *(_DWORD *)(this + 8364) = *(_DWORD *)(a2 + 43); v8 = 0; if ( *(_BYTE *)(a2 + 47) ) { v3 = a2 + 48; while ( 1 ) { result = (**(int (__stdcall ***)(_DWORD))this)(*(_WORD *)(v3 + 3) & 0x3FF); v4 = result; if ( !result ) break; v5 = result + 8; if ( *(_WORD *)(result + 8) != *(_WORD *)(v3 + 1) ) break; if ( *(_BYTE *)v3 ) { if ( *(_BYTE *)v3 == 1 ) { result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(result + 112) + 28))(result + 8); v6 = *(_DWORD *)(v3 + 5); if ( result <= v6 ) return result; (*(void (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 32))(v5, result - v6); } } else { result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(result + 112) + 28))(result + 8); if ( result != *(_DWORD *)(v3 + 5) ) return result; *(_DWORD *)v4 = -1; *(_DWORD *)(v4 + 4) = -1; memset((void *)(v4 + 8), 0, 0x67u); *(_WORD *)v5 = -1; *(_DWORD *)(v4 + 112) = dword_1508B168; } result = v8 + 1; v3 += 9; v8 = result; if ( result >= *(_BYTE *)(a2 + 47) ) break; this = v7; } } } else { result = (int)sub_639100( &unk_86DDD8, (int)"GuildAcademyRewardStorageElement::garse_RewardInfoZoneRngAtOther - ring null", 0); } return result; } //----- (00470680) -------------------------------------------------------- int __thiscall sub_470680(int this, int a2) { int result; // eax@1 int v3; // edx@1 int v4; // edx@1 int v5; // edx@1 result = this; *(_DWORD *)this = &off_6B310C; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 7); *(_DWORD *)(this + 24) = 73; *(_DWORD *)(result + 20) = result + 32; *(_WORD *)(this + 32) = -26509; *(_DWORD *)(result + 12) = result + 32; *(_DWORD *)(result + 16) = result + 34; *(_BYTE *)(this + 34) = *(_BYTE *)(a2 + 12); *(_BYTE *)(*(_DWORD *)(this + 16) + 1) = *(_BYTE *)(a2 + 13); v3 = *(_DWORD *)(this + 16); *(_DWORD *)(v3 + 2) = *(_DWORD *)(a2 + 15); *(_DWORD *)(v3 + 6) = *(_DWORD *)(a2 + 19); *(_DWORD *)(v3 + 10) = *(_DWORD *)(a2 + 23); *(_DWORD *)(v3 + 14) = *(_DWORD *)(a2 + 27); *(_DWORD *)(v3 + 18) = *(_DWORD *)(a2 + 31); *(_WORD *)(*(_DWORD *)(this + 16) + 22) = *(_WORD *)(a2 + 35); *(_BYTE *)(*(_DWORD *)(this + 16) + 24) = *(_BYTE *)(a2 + 14); v4 = *(_DWORD *)(this + 16); *(_DWORD *)(v4 + 25) = *(_DWORD *)(a2 + 37); *(_DWORD *)(v4 + 29) = *(_DWORD *)(a2 + 41); v5 = *(_DWORD *)(this + 16); *(_DWORD *)(v5 + 33) = *(_DWORD *)(a2 + 45); *(_DWORD *)(v5 + 37) = *(_DWORD *)(a2 + 49); *(_BYTE *)(this + 8) = *(_BYTE *)(a2 + 11); return result; } // 6B310C: using guessed type int (__stdcall *off_6B310C)(int, int); //----- (00470730) -------------------------------------------------------- int __stdcall sub_470730(int a1) { int (__stdcall **v2)(int, int); // [sp+8h] [bp-7Ch]@1 unsigned int v3; // [sp+74h] [bp-10h]@1 int v4; // [sp+80h] [bp-4h]@1 int v5; // [sp+84h] [bp+0h]@1 v3 = (unsigned int)&v5 ^ __security_cookie; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; sub_470680((int)&v2, a1); LOBYTE(v4) = 1; sub_43C470(dword_13253824, (int)&v2); --dword_750CB8; v2 = &off_6B22DC; v4 = -1; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; //----- (00470800) -------------------------------------------------------- int __thiscall sub_470800(int this, int a2) { int result; // eax@1 int v3; // edx@1 int v4; // edx@1 int v5; // edx@1 result = this; *(_DWORD *)this = &off_6B316C; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 7); *(_DWORD *)(this + 24) = 73; *(_DWORD *)(result + 20) = result + 32; *(_WORD *)(this + 32) = -26507; *(_DWORD *)(result + 12) = result + 32; *(_DWORD *)(result + 16) = result + 34; *(_BYTE *)(this + 34) = *(_BYTE *)(a2 + 12); *(_BYTE *)(*(_DWORD *)(this + 16) + 1) = *(_BYTE *)(a2 + 13); v3 = *(_DWORD *)(this + 16); *(_DWORD *)(v3 + 2) = *(_DWORD *)(a2 + 15); *(_DWORD *)(v3 + 6) = *(_DWORD *)(a2 + 19); *(_DWORD *)(v3 + 10) = *(_DWORD *)(a2 + 23); *(_DWORD *)(v3 + 14) = *(_DWORD *)(a2 + 27); *(_DWORD *)(v3 + 18) = *(_DWORD *)(a2 + 31); *(_WORD *)(*(_DWORD *)(this + 16) + 22) = *(_WORD *)(a2 + 35); *(_BYTE *)(*(_DWORD *)(this + 16) + 24) = *(_BYTE *)(a2 + 14); v4 = *(_DWORD *)(this + 16); *(_DWORD *)(v4 + 25) = *(_DWORD *)(a2 + 37); *(_DWORD *)(v4 + 29) = *(_DWORD *)(a2 + 41); v5 = *(_DWORD *)(this + 16); *(_DWORD *)(v5 + 33) = *(_DWORD *)(a2 + 45); *(_DWORD *)(v5 + 37) = *(_DWORD *)(a2 + 49); *(_BYTE *)(this + 8) = *(_BYTE *)(a2 + 11); return result; } // 6B316C: using guessed type int (__stdcall *off_6B316C)(int, int); //----- (004708B0) -------------------------------------------------------- int __stdcall sub_4708B0(int a1) { int (__stdcall **v2)(int, int); // [sp+8h] [bp-7Ch]@1 unsigned int v3; // [sp+74h] [bp-10h]@1 int v4; // [sp+80h] [bp-4h]@1 int v5; // [sp+84h] [bp+0h]@1 v3 = (unsigned int)&v5 ^ __security_cookie; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; sub_470800((int)&v2, a1); LOBYTE(v4) = 1; sub_43C470(dword_13253824, (int)&v2); --dword_750CB8; v2 = &off_6B22DC; v4 = -1; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; //----- (00470980) -------------------------------------------------------- int __thiscall sub_470980(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // esi@1 result = this; *(_DWORD *)this = &off_6B31CC; *(_DWORD *)(this + 26) = 0; *(_DWORD *)(this + 22) = 0; *(_DWORD *)(this + 18) = 0; *(_DWORD *)(this + 14) = 0; *(_DWORD *)(this + 10) = 0; *(_DWORD *)(this + 67) = 0; *(_DWORD *)(this + 63) = 0; *(_DWORD *)(this + 59) = 0; *(_DWORD *)(this + 55) = 0; *(_DWORD *)(this + 51) = 0; *(_DWORD *)(this + 4) = a2; *(_BYTE *)(this + 8) = *(_BYTE *)(a2 + 11); *(_BYTE *)(this + 9) = 0; *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 28); v3 = *(_DWORD *)(this + 4); *(_WORD *)(this + 30) = *(_WORD *)(v3 + 41); *(_BYTE *)(this + 32) = *(_BYTE *)(v3 + 43); *(_DWORD *)(this + 33) = 0; *(_DWORD *)(this + 37) = 0; *(_DWORD *)(this + 41) = 0; *(_DWORD *)(this + 45) = 0; *(_BYTE *)(this + 49) = *(_BYTE *)(v3 + 11); *(_BYTE *)(this + 50) = 0; *(_DWORD *)(this + 51) = *(_DWORD *)(v3 + 12); *(_DWORD *)(this + 55) = *(_DWORD *)(v3 + 16); *(_DWORD *)(this + 59) = *(_DWORD *)(v3 + 20); *(_DWORD *)(this + 63) = *(_DWORD *)(v3 + 24); *(_DWORD *)(this + 67) = *(_DWORD *)(v3 + 28); v4 = *(_DWORD *)(this + 4); *(_WORD *)(this + 71) = *(_WORD *)(v4 + 41); *(_BYTE *)(this + 73) = *(_BYTE *)(v4 + 43); *(_DWORD *)(this + 74) = 0; *(_DWORD *)(this + 78) = 0; *(_DWORD *)(this + 82) = 0; *(_DWORD *)(this + 86) = 0; return result; } // 6B31CC: using guessed type int (__stdcall *off_6B31CC)(int, int); //----- (00470A60) -------------------------------------------------------- int __stdcall sub_470A60(int a1) { int (__stdcall **v2)(int, int); // [sp+8h] [bp-6Ch]@3 unsigned int v3; // [sp+64h] [bp-10h]@1 int v4; // [sp+70h] [bp-4h]@1 int v5; // [sp+74h] [bp+0h]@1 v3 = (unsigned int)&v5 ^ __security_cookie; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( a1 ) { sub_470980((int)&v2, a1); LOBYTE(v4) = 1; sub_43C470(dword_13253824, (int)&v2); --dword_750CB8; v2 = &off_6B22DC; } else { --dword_750CB8; } v4 = -1; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; //----- (00470B40) -------------------------------------------------------- int __thiscall sub_470B40(int this, int a2) { int result; // eax@1 int v3; // ecx@1 int v4; // ecx@1 result = this; *(_DWORD *)this = &off_6B31D4; *(_DWORD *)(this + 26) = 0; *(_DWORD *)(this + 22) = 0; *(_DWORD *)(this + 18) = 0; *(_DWORD *)(this + 14) = 0; *(_DWORD *)(this + 10) = 0; *(_DWORD *)(this + 67) = 0; *(_DWORD *)(this + 63) = 0; *(_DWORD *)(this + 59) = 0; *(_DWORD *)(this + 55) = 0; *(_DWORD *)(this + 51) = 0; *(_DWORD *)(this + 4) = a2; *(_BYTE *)(this + 8) = 3; *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 11); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 15); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 19); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 27); *(_BYTE *)(this + 9) = 2; *(_BYTE *)(this + 32) = 0; *(_WORD *)(this + 30) = 0; v3 = *(_DWORD *)(this + 4); *(_DWORD *)(result + 33) = *(_DWORD *)(v3 + 31); *(_DWORD *)(result + 37) = *(_DWORD *)(v3 + 35); *(_DWORD *)(result + 41) = *(_DWORD *)(v3 + 39); *(_DWORD *)(result + 45) = *(_DWORD *)(v3 + 43); *(_BYTE *)(result + 49) = 3; *(_DWORD *)(result + 51) = *(_DWORD *)(v3 + 11); *(_DWORD *)(result + 55) = *(_DWORD *)(v3 + 15); *(_DWORD *)(result + 59) = *(_DWORD *)(v3 + 19); *(_DWORD *)(result + 63) = *(_DWORD *)(v3 + 23); *(_DWORD *)(result + 67) = *(_DWORD *)(v3 + 27); v4 = *(_DWORD *)(result + 4); *(_BYTE *)(result + 50) = 0; *(_WORD *)(result + 71) = *(_WORD *)(v4 + 49); *(_BYTE *)(result + 73) = 0; *(_DWORD *)(result + 74) = 0; *(_DWORD *)(result + 78) = 0; *(_DWORD *)(result + 82) = 0; *(_DWORD *)(result + 86) = 0; return result; } // 6B31D4: using guessed type int (__stdcall *off_6B31D4)(int, int); //----- (00470C00) -------------------------------------------------------- int __stdcall sub_470C00(int a1) { int (__stdcall **v2)(int, int); // [sp+8h] [bp-6Ch]@3 unsigned int v3; // [sp+64h] [bp-10h]@1 int v4; // [sp+70h] [bp-4h]@1 int v5; // [sp+74h] [bp+0h]@1 v3 = (unsigned int)&v5 ^ __security_cookie; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( a1 ) { sub_470B40((int)&v2, a1); LOBYTE(v4) = 1; sub_43C470(dword_13253824, (int)&v2); --dword_750CB8; v2 = &off_6B22DC; } else { --dword_750CB8; } v4 = -1; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; //----- (00470CE0) -------------------------------------------------------- void *__thiscall sub_470CE0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6B2EF4; _LN21((char *)this + 24, 0x20B8u, 500, sub_46F990); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6B2EC8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B2EC8: using guessed type int (__thiscall *off_6B2EC8)(void *, char); // 6B2EF4: using guessed type int (__thiscall *off_6B2EF4)(void *, char); //----- (00470D70) -------------------------------------------------------- int __thiscall sub_470D70(int this, int a2) { int result; // eax@1 int v3; // edx@1 const void *v4; // esi@2 void *v5; // edi@2 bool v6; // zf@2 signed int v7; // [sp+Ch] [bp-4h]@1 result = this; v3 = this + 4; v7 = 72; do { v4 = (const void *)(a2 - this + v3); v5 = (void *)v3; v3 += 116; v6 = v7-- == 1; memcpy(v5, v4, 0x74u); } while ( !v6 ); *(_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; } //----- (00470DE0) -------------------------------------------------------- char __thiscall sub_470DE0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B2EEC; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B2EEC: using guessed type int (__stdcall *off_6B2EEC)(int, int); //----- (00470F60) -------------------------------------------------------- int __thiscall sub_470F60(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = sub_46E840(v2, *(_DWORD *)(a2 + 7), (int)&a2); if ( v4 ) sub_46FF90((void *)v4, v3); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00471020) -------------------------------------------------------- int __thiscall sub_471020(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = sub_46E840(v2, *(_DWORD *)(a2 + 7), (int)&a2); if ( v4 ) sub_470110((void *)v4, v3); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004710E0) -------------------------------------------------------- int __thiscall sub_4710E0(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // eax@3 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 ) { v4 = sub_46E840(v2, *(_DWORD *)(a2 + 7), (int)&a2); if ( v4 ) sub_470240((void *)v4, v3); } else { sub_639100(&unk_86DDD8, (int)"GuildAcademyRewardStorageManager::garsm_ItemInfoZoneRngAtOther - ring null", a2); } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004711B0) -------------------------------------------------------- int __thiscall sub_4711B0(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // eax@3 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); dword_7508B8[dword_750CB8] = (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 ) { v4 = sub_46E840(v2, *(_DWORD *)(a2 + 7), (int)&a2); if ( v4 ) sub_470580(v4, v3); } else { sub_639100(&unk_86DDD8, (int)"::garsm_RewardInfoZoneRngAtOther - ring null", a2); } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00471280) -------------------------------------------------------- char __thiscall sub_471280(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 char v5; // al@1 int v6; // edx@1 int v7; // ecx@1 int (__thiscall *v8)(_DWORD); // eax@2 int v9; // eax@10 int v10; // ebx@13 int v11; // eax@13 int v12; // eax@13 int v13; // eax@15 int v14; // eax@15 int v15; // eax@17 __int16 v16; // cx@18 int v17; // edx@18 __int16 v18; // cx@18 void (__thiscall *v19)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@18 int v21; // [sp+14h] [bp-10h]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageWithdraw::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyRewardStorageWithdraw::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2136))(a2); v6 = *(_DWORD *)v4; v7 = v4; if ( !v5 ) { v8 = *(int (__thiscall **)(_DWORD))(v6 + 2072); LABEL_5: v21 = v8(v7); goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v6 + 2136))(v4) == 1 ) { v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2140); v7 = v4; goto LABEL_5; } LABEL_6: if ( v21 != *((_DWORD *)v3 + 1) ) goto LABEL_19; if ( *((_BYTE *)v3 + 8) ) { if ( sub_4C81E0((char *)v3 + 20, 43) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, char *))(*(_DWORD *)v9 + 12))(v9, v4, (char *)v3 + 20); } else { sub_639100(&unk_86DDD8, (int)"ShineGuildAcademyRewardStorageWithdraw::lid_Call : Packet Too Long", 43); } } if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2108))(v4) || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2108))(v4) == -1 || (v10 = *((_DWORD *)v3 + 4), v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4), LOBYTE(v12) = sub_44A100(v10 + 2, v11), !v12) || *(_BYTE *)(v10 + 1) == 2 ) goto LABEL_19; v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2108))(v4); v14 = sub_46E840(&dword_D0207E8, v21, v13); if ( v14 && *(_DWORD *)(v14 + 8368) == v21 ) { v15 = (**(int (__thiscall ***)(_DWORD, _DWORD))v14)(v14, *(_BYTE *)(*((_DWORD *)v3 + 4) + 24)); if ( v15 ) { v16 = a2 & 0x3FF; v17 = *((_DWORD *)v3 + 4); LOWORD(a2) = v16; v18 = (v16 ^ *(_BYTE *)(v17 + 24)) & 0x3FF ^ v16; v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1540); LOWORD(a2) = v18; v19(v4, &a2, v15, &a2); LABEL_19: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageWithdraw::lid_Call"); return 1; } } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2116))(v4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageWithdraw::lid_Call"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; //----- (004714C0) -------------------------------------------------------- char __thiscall sub_4714C0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 char v5; // al@1 int v6; // edx@1 int v7; // ecx@1 int (__thiscall *v8)(_DWORD); // eax@2 int v9; // eax@10 int v10; // ebx@13 int v11; // eax@13 int v12; // eax@13 int v13; // eax@15 int v14; // eax@15 int v15; // eax@17 __int16 v16; // cx@18 int v17; // edx@18 __int16 v18; // cx@18 void (__thiscall *v19)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@18 int v21; // [sp+14h] [bp-10h]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2136))(a2); v6 = *(_DWORD *)v4; v7 = v4; if ( !v5 ) { v8 = *(int (__thiscall **)(_DWORD))(v6 + 2072); LABEL_5: v21 = v8(v7); goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v6 + 2136))(v4) == 1 ) { v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2140); v7 = v4; goto LABEL_5; } LABEL_6: if ( v21 != *((_DWORD *)v3 + 1) ) goto LABEL_19; if ( *((_BYTE *)v3 + 8) ) { if ( sub_4C81E0((char *)v3 + 20, 43) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, char *))(*(_DWORD *)v9 + 12))(v9, v4, (char *)v3 + 20); } else { sub_639100(&unk_86DDD8, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call : Packet Too Long", 43); } } if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2108))(v4) || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2108))(v4) == -1 || (v10 = *((_DWORD *)v3 + 4), v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4), LOBYTE(v12) = sub_44A100(v10 + 2, v11), !v12) || *(_BYTE *)(v10 + 1) == 2 ) goto LABEL_19; v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2108))(v4); v14 = sub_46E840(&dword_D0207E8, v21, v13); if ( v14 && *(_DWORD *)(v14 + 8368) == v21 ) { v15 = (**(int (__thiscall ***)(_DWORD, _DWORD))v14)(v14, *(_BYTE *)(*((_DWORD *)v3 + 4) + 24)); if ( v15 ) { v16 = a2 & 0x3FF; v17 = *((_DWORD *)v3 + 4); LOWORD(a2) = v16; v18 = (v16 ^ *(_BYTE *)(v17 + 24)) & 0x3FF ^ v16; v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1540); LOWORD(a2) = v18; v19(v4, &a2, v15, &a2); LABEL_19: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 1; } } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2116))(v4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; //----- (00471700) -------------------------------------------------------- char __thiscall sub_471700(void *this, int a2, int a3) { void *v3; // esi@1 int v5; // eax@3 unsigned __int16 v6; // ax@4 char v7; // bl@6 unsigned __int16 v8; // ax@8 char v9; // al@11 int v10; // edx@11 int v11; // ecx@11 int (__thiscall *v12)(_DWORD); // eax@12 int v13; // eax@16 int v14; // eax@22 const void *v15; // ST08_4@24 const void *v16; // ST08_4@29 int v17; // eax@30 int v18; // eax@32 char v19; // dl@34 int v20; // eax@38 int v21; // eax@38 int v22; // eax@39 int v23; // eax@39 int v24; // ebx@39 int v25; // eax@41 int v26; // eax@42 int v27; // eax@45 int v28; // eax@46 int v29; // [sp+10h] [bp-8Ch]@15 __int16 v30; // [sp+14h] [bp-88h]@8 char v31; // [sp+18h] [bp-84h]@24 char v32; // [sp+20h] [bp-7Ch]@25 int v33; // [sp+88h] [bp-14h]@25 unsigned int v34; // [sp+8Ch] [bp-10h]@1 int v35; // [sp+98h] [bp-4h]@1 int v36; // [sp+9Ch] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v35 = 0; if ( !a2 || (v5 = *((_DWORD *)v3 + 1)) == 0 ) { --dword_750CB8; v35 = -1; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 0; } v6 = *(_WORD *)(v5 + 41); if ( v6 == -1 ) { --dword_750CB8; v35 = -1; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 0; } v7 = 0; if ( *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, v6) + 106) > 1u ) v7 = 1; v8 = *(_WORD *)(*((_DWORD *)v3 + 1) + 57); HIBYTE(v30) = 0; if ( v8 != -1 && *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, v8) + 106) > 1u ) HIBYTE(v30) = 1; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2136))(a2); v10 = *(_DWORD *)a2; v11 = a2; if ( !v9 ) { v12 = *(int (__thiscall **)(_DWORD))(v10 + 2072); LABEL_15: v29 = v12(v11); goto LABEL_16; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v10 + 2136))(a2) == 1 ) { v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2140); v11 = a2; goto LABEL_15; } LABEL_16: v13 = *((_DWORD *)v3 + 1); if ( v29 != *(_DWORD *)(v13 + 7) ) goto LABEL_48; if ( (*(_WORD *)(v13 + 43) & 0xFC00) == 9216 || (*(_WORD *)(v13 + 59) & 0xFC00) == 9216 ) { *((_BYTE *)v3 + 9) = v7; *((_BYTE *)v3 + 50) = v7; switch ( *(_BYTE *)(v13 + 32) ) { case 0: case 1: if ( !(*(_WORD *)(v13 + 43) & 0xFC00) ) { *(_DWORD *)((char *)v3 + 33) = *(_DWORD *)(v13 + 45); *(_DWORD *)((char *)v3 + 37) = 0; (*(void (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 8, 0); } v14 = *((_DWORD *)v3 + 1); if ( *(_WORD *)(v14 + 59) & 0xFC00 ) goto LABEL_36; *(_DWORD *)((char *)v3 + 74) = *(_DWORD *)(v14 + 45); *(_DWORD *)((char *)v3 + 78) = 0; goto LABEL_35; case 2: sub_641100((int)&v31); v15 = (const void *)(*((_DWORD *)v3 + 1) + 65); LOBYTE(v35) = 1; sub_63F850((int)&v31, v15); if ( !(*(_WORD *)(*((_DWORD *)v3 + 1) + 43) & 0xFC00) ) { *(_DWORD *)((char *)v3 + 33) = (*(int (__stdcall **)(char *))(*(_DWORD *)v33 + 28))(&v32); *(_DWORD *)((char *)v3 + 37) = 0; (*(void (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 8, 0); } if ( !(*(_WORD *)(*((_DWORD *)v3 + 1) + 59) & 0xFC00) ) { *(_DWORD *)((char *)v3 + 74) = (*(int (__stdcall **)(char *))(*(_DWORD *)v33 + 28))(&v32); *(_DWORD *)((char *)v3 + 78) = 0; (*(void (__thiscall **)(int, char *, signed int))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 49, 1); } LOBYTE(v35) = 0; nullsub_2(&v31); goto LABEL_36; case 3: sub_641100((int)&v31); v16 = (const void *)(*((_DWORD *)v3 + 1) + 65); LOBYTE(v35) = 2; sub_63F850((int)&v31, v16); if ( !(*(_WORD *)(*((_DWORD *)v3 + 1) + 43) & 0xFC00) ) { v17 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v33 + 28))(&v32) - *(_DWORD *)(*((_DWORD *)v3 + 1) + 61); *(_DWORD *)((char *)v3 + 37) = 0; *(_DWORD *)((char *)v3 + 33) = v17; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 8, 0); } if ( !(*(_WORD *)(*((_DWORD *)v3 + 1) + 59) & 0xFC00) ) { v18 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v33 + 28))(&v32) - *(_DWORD *)(*((_DWORD *)v3 + 1) + 61); *(_DWORD *)((char *)v3 + 78) = 0; *(_DWORD *)((char *)v3 + 74) = v18; (*(void (__thiscall **)(_DWORD, char *, signed int))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 49, 1); } LOBYTE(v35) = 0; nullsub_2(&v31); goto LABEL_36; case 4: *((_BYTE *)v3 + 9) = v7; *((_WORD *)v3 + 15) = *(_WORD *)(v13 + 41); *(_DWORD *)((char *)v3 + 33) = *(_DWORD *)(v13 + 45); v19 = HIBYTE(v30); *(_DWORD *)((char *)v3 + 37) = 0; *((_BYTE *)v3 + 50) = v19; *(_WORD *)((char *)v3 + 71) = *(_WORD *)(v13 + 57); *(_DWORD *)((char *)v3 + 74) = *(_DWORD *)(v13 + 61); *(_DWORD *)((char *)v3 + 78) = 0; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 8, 0); LABEL_35: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 2172))(a2, (char *)v3 + 49, 1); goto LABEL_36; default: goto LABEL_51; } goto LABEL_51; } LABEL_36: if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2108))(a2) ) goto LABEL_48; if ( *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2108))(a2) == -1 || (v20 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2), LOBYTE(v21) = sub_44A100(*((_DWORD *)v3 + 1) + 12, v20), !v21) ) goto LABEL_48; v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2108))(a2); v23 = sub_46E840(&dword_D0207E8, v29, v22); v24 = v23; if ( v23 && *(_DWORD *)(v23 + 8368) == v29 ) { v25 = *((_DWORD *)v3 + 1); if ( !(*(_WORD *)(v25 + 43) & 0xFC00) ) { v26 = (**(int (__thiscall ***)(_DWORD, _DWORD))v24)(v24, *(_WORD *)(v25 + 43) & 0x3FF); if ( !v26 ) { LABEL_43: --dword_750CB8; v35 = -1; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 0; } v30 = *(_WORD *)(*((_DWORD *)v3 + 1) + 43); (*(void (__thiscall **)(int, __int16 *, int, __int16 *))(*(_DWORD *)a2 + 1540))(a2, &v30, v26, &v30); } v27 = *((_DWORD *)v3 + 1); if ( !(*(_WORD *)(v27 + 59) & 0xFC00) ) { v28 = (**(int (__thiscall ***)(_DWORD, _DWORD))v24)(v24, *(_WORD *)(v27 + 59) & 0x3FF); if ( !v28 ) goto LABEL_43; LOWORD(v29) = *(_WORD *)(*((_DWORD *)v3 + 1) + 59); (*(void (__thiscall **)(int, int *, int, int *))(*(_DWORD *)a2 + 1540))(a2, &v29, v28, &v29); } LABEL_48: --dword_750CB8; v35 = -1; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 1; } (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 2116))(a2); LABEL_51: --dword_750CB8; v35 = -1; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D0207E8: using guessed type int dword_D0207E8; // 14D20890: using guessed type int dword_14D20890; //----- (00471C60) -------------------------------------------------------- char __thiscall sub_471C60(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 char v6; // al@5 int v7; // edx@5 int v8; // ecx@5 int (__thiscall *v9)(_DWORD); // eax@6 int v10; // eax@10 int v11; // ebx@14 char v12; // cl@14 int v13; // eax@15 int v14; // edx@16 int v15; // ecx@16 int v16; // eax@23 int v17; // eax@23 int v18; // eax@24 int v19; // ebx@24 int v20; // eax@24 int v21; // ebx@27 int v22; // eax@29 int v23; // [sp+14h] [bp-14h]@24 signed int v24; // [sp+18h] [bp-10h]@26 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( !a2 || !*((_DWORD *)v3 + 1) ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 0; } v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2136))(a2); v7 = *(_DWORD *)v4; v8 = v4; if ( !v6 ) { v9 = *(int (__thiscall **)(_DWORD))(v7 + 2072); LABEL_9: a2 = v9(v8); goto LABEL_10; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v7 + 2136))(v4) == 1 ) { v9 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2140); v8 = v4; goto LABEL_9; } LABEL_10: v10 = *((_DWORD *)v3 + 1); if ( a2 == *(_DWORD *)(v10 + 7) ) { if ( *(_DWORD *)(v10 + 35) || *(_DWORD *)(v10 + 31) ) (*(void (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)v4 + 2172))(v4, (char *)v3 + 8, 0); v11 = *((_DWORD *)v3 + 1); v12 = *(_BYTE *)(v11 + 47); if ( v12 ) { v13 = 0; if ( v12 ) { v14 = *(_BYTE *)(v11 + 47); v15 = v11 + 53; do { v13 += *(_DWORD *)v15; v15 += 9; --v14; } while ( v14 ); } *(_DWORD *)((char *)v3 + 74) = v13; *(_DWORD *)((char *)v3 + 78) = 0; if ( *(_WORD *)(v11 + 49) != -1 && *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(v11 + 49)) + 106) > 1u ) *((_BYTE *)v3 + 50) = 1; (*(void (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)v4 + 2172))(v4, (char *)v3 + 49, 0); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2108))(v4) ) { if ( *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2108))(v4) != -1 ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); LOBYTE(v17) = sub_44A100(*((_DWORD *)v3 + 1) + 11, v16); if ( v17 ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2108))(v4); v19 = a2; v20 = sub_46E840(&dword_D0207E8, a2, v18); v23 = v20; if ( !v20 || *(_DWORD *)(v20 + 8368) != v19 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2116))(v4); LABEL_33: --dword_750CB8; goto LABEL_3; } v24 = 0; if ( *(_BYTE *)(*((_DWORD *)v3 + 1) + 47) ) { v21 = 0; while ( 1 ) { v22 = (**(int (__thiscall ***)(_DWORD, _DWORD))v20)( v20, *(_WORD *)(v21 + *((_DWORD *)v3 + 1) + 51) & 0x3FF); if ( !v22 ) goto LABEL_33; LOWORD(a2) = *(_WORD *)(v21 + *((_DWORD *)v3 + 1) + 51); (*(void (__thiscall **)(int, int *, int, int *))(*(_DWORD *)v4 + 1540))(v4, &a2, v22, &a2); v21 += 9; ++v24; if ( v24 >= *(_BYTE *)(*((_DWORD *)v3 + 1) + 47) ) break; v20 = v23; } } } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildAcademyRewardStorageDeposit::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; // 14D20890: using guessed type int dword_14D20890; //----- (00471F10) -------------------------------------------------------- char __thiscall sub_471F10(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_470D70(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00471F50) -------------------------------------------------------- char __thiscall sub_471F50(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_470D70(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00471F90) -------------------------------------------------------- char __thiscall sub_471F90(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_470D70(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00471FE0) -------------------------------------------------------- char __thiscall sub_471FE0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_470D70(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00472030) -------------------------------------------------------- int __thiscall sub_472030(int this) { int v1; // esi@1 signed int v2; // eax@1 signed int v3; // ecx@1 int v4; // edi@1 int v5; // edx@3 bool v6; // zf@3 int v7; // edx@3 int v8; // edx@6 int v9; // edx@6 int v10; // edx@9 int v11; // edx@9 int v12; // edx@12 int v13; // edx@15 int v14; // edx@15 int v15; // edx@18 int v16; // edx@18 v1 = this; *(_DWORD *)this = &off_6B2EC8; *(_DWORD *)(this + 16) = 0; sub_470DE0(this, 0x12Cu); *(_DWORD *)v1 = &off_6B2EF4; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x20B8u, 500, (int)sub_46F950, sub_46F990); v2 = 36; v3 = 2; v4 = v1 + 8400; do { if ( v3 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v2 - 36) == 0; v7 = v5 + v2 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 8376; } if ( v3 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v2 - 24) == 0; v9 = v8 + v2 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v3 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v2 - 12) == 0; v11 = v10 + v2 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 8376; } if ( v3 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v2) ) *(_DWORD *)(v12 + v2) = v4 + 16752; } if ( v3 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v2 + 12) == 0; v14 = v13 + v2 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 25128; } if ( v3 + 3 < *(_WORD *)(v1 + 4) ) { v15 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v15 + v2 + 24) == 0; v16 = v15 + v2 + 24; if ( v6 ) *(_DWORD *)v16 = v4 + 33504; } v3 += 6; v2 += 72; v4 += 50256; } while ( v3 - 2 < 300 ); return v1; } // 6B2EC8: using guessed type int (__thiscall *off_6B2EC8)(void *, char); // 6B2EF4: using guessed type int (__thiscall *off_6B2EF4)(void *, char); //----- (00472190) -------------------------------------------------------- int __stdcall sub_472190(int a1) { int v1; // esi@1 bool v2; // cf@1 void *v3; // eax@4 int v5; // [sp-4h] [bp-58h]@3 char v6; // [sp+Ch] [bp-48h]@4 char v7; // [sp+40h] [bp-14h]@4 int v8; // [sp+44h] [bp-10h]@1 int v9; // [sp+50h] [bp-4h]@1 v8 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = a1 + 2; v2 = *(_BYTE *)(a1 + 2) < 0xAu; v9 = 0; if ( v2 && *(_BYTE *)v1 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v3 = off_849C18; *(_WORD *)off_849C18 = -26510; sub_46FAF0((int)((char *)v3 + 2), v1); sub_5A4B40(&off_849C18, 55); memcpy(&v6, (const void *)v1, 0x34u); v7 = *(_BYTE *)(a1 + 54); sub_470F60(&dword_D0207E8, (int)&v6); sub_470730((int)&v6); v5 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"; } else { v5 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"; } --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, v5); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; //----- (004722A0) -------------------------------------------------------- int __stdcall sub_4722A0(int a1) { int v1; // esi@1 bool v2; // cf@1 void *v3; // eax@4 int v5; // [sp-4h] [bp-58h]@3 char v6; // [sp+Ch] [bp-48h]@4 char v7; // [sp+40h] [bp-14h]@4 int v8; // [sp+44h] [bp-10h]@1 int v9; // [sp+50h] [bp-4h]@1 v8 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = a1 + 2; v2 = *(_BYTE *)(a1 + 2) < 0xAu; v9 = 0; if ( v2 && *(_BYTE *)v1 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v3 = off_849C18; *(_WORD *)off_849C18 = -26508; sub_46FAF0((int)((char *)v3 + 2), v1); sub_5A4B40(&off_849C18, 55); memcpy(&v6, (const void *)v1, 0x34u); v7 = *(_BYTE *)(a1 + 54); sub_471020(&dword_D0207E8, (int)&v6); sub_4708B0((int)&v6); v5 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; } else { v5 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; } --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, v5); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; //----- (004723B0) -------------------------------------------------------- int __stdcall sub_4723B0(int a1) { int v1; // esi@1 void *v2; // eax@3 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = a1 + 2; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)v1 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v2 = off_849C18; *(_WORD *)off_849C18 = -26492; sub_46FBE0((int)((char *)v2 + 2), v1); sub_5A4B40(&off_849C18, 178); sub_4710E0(&dword_D0207E8, v1); sub_470A60(v1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; //----- (004724B0) -------------------------------------------------------- int __stdcall sub_4724B0(int a1) { int v1; // esi@1 char *v2; // ecx@4 signed int v3; // edx@4 int v4; // eax@5 int v5; // edi@5 int v7; // [sp-4h] [bp-24h]@3 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = a1 + 2; if ( *(_BYTE *)(a1 + 2) < 0xAu && *(_BYTE *)v1 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v2 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = -26491; *(_DWORD *)v2 = *(_DWORD *)v1; *((_WORD *)v2 + 2) = *(_WORD *)(a1 + 6); v2[6] = *(_BYTE *)(a1 + 8); *(_DWORD *)(v2 + 7) = *(_DWORD *)(a1 + 9); *(_DWORD *)(v2 + 11) = *(_DWORD *)(a1 + 13); *(_DWORD *)(v2 + 15) = *(_DWORD *)(a1 + 17); *(_DWORD *)(v2 + 19) = *(_DWORD *)(a1 + 21); *(_DWORD *)(v2 + 23) = *(_DWORD *)(a1 + 25); *(_DWORD *)(v2 + 27) = *(_DWORD *)(a1 + 29); *(_DWORD *)(v2 + 31) = *(_DWORD *)(a1 + 33); *(_DWORD *)(v2 + 35) = *(_DWORD *)(a1 + 37); *(_DWORD *)(v2 + 39) = *(_DWORD *)(a1 + 41); *(_DWORD *)(v2 + 43) = *(_DWORD *)(a1 + 45); v3 = 0; v2[47] = *(_BYTE *)(a1 + 49); if ( *(_BYTE *)(a1 + 49) ) { v4 = (int)(v2 + 48); v5 = v1 - (_DWORD)v2; do { *(_DWORD *)v4 = *(_DWORD *)(v5 + v4); *(_DWORD *)(v4 + 4) = *(_DWORD *)(v5 + v4 + 4); *(_BYTE *)(v4 + 8) = *(_BYTE *)(v5 + v4 + 8); ++v3; v4 += 9; } while ( v3 < *(_BYTE *)(a1 + 49) ); } sub_5A4B40(&off_849C18, 9 * (unsigned __int8)v2[47] + 50); sub_4711B0(&dword_D0207E8, v1); sub_470C00(v1); v7 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; } else { v7 = (int)"ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; //----- (00472630) -------------------------------------------------------- __int16 __thiscall sub_472630(int this, __int16 a2, int a3) { int v3; // edx@1 v3 = (*(_DWORD *)(this + 512) + 1) & *(_DWORD *)(this + 516); *(_DWORD *)(this + 512) = v3; *(_WORD *)(this + 4 * v3) = a2; *(_BYTE *)(this + 4 * *(_DWORD *)(this + 512) + 2) = *(_BYTE *)a3; return *(_WORD *)(this + 512); } //----- (00472670) -------------------------------------------------------- int __thiscall sub_472670(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 14) = 0; *(_DWORD *)(this + 10) = 0; *(_DWORD *)(this + 6) = 0; *(_DWORD *)(this + 2) = 0; return result; } //----- (00472690) -------------------------------------------------------- int __thiscall sub_472690(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@5 int v6; // ebx@8 int v7; // edi@13 int v8; // eax@15 __int16 v9; // ax@17 int v10; // eax@17 void *v11; // edi@20 int v12; // eax@22 signed int v14; // [sp-4h] [bp-28h]@4 int v15; // [sp-4h] [bp-28h]@9 signed int v16; // [sp-4h] [bp-28h]@11 int v17; // [sp+14h] [bp-10h]@8 int v18; // [sp+2Ch] [bp+8h]@8 char *v19; // [sp+2Ch] [bp+8h]@13 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D41EF64 & 1) ) { dword_D41EF64 |= 1u; word_D41EF60 = 86; atexit(nullsub_48); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D41EF60) ) goto LABEL_28; v5 = *(_DWORD *)((char *)v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { v14 = 6722; goto LABEL_24; } if ( *((_WORD *)v4 + 42864) & 0xC ) { LABEL_28: v14 = 6721; LABEL_24: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 29, 173, v14); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; goto LABEL_25; } v6 = a2; v17 = *(_BYTE *)(a2 + 2); v18 = *(_BYTE *)(a2 + 2); if ( v18 >= (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 9121) + 8))((char *)v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : wrong slot", v17); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 29, 173, 6723); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; goto LABEL_25; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int, _DWORD))(*((_DWORD *)v4 + 14672) + 4))( (char *)v4 + 58688, 9, v18, *((_WORD *)v4 + 80389)) ) { v16 = 6724; LABEL_12: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 29, 173, v16); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; goto LABEL_25; } v7 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v6 + 2)); v19 = sub_418C70(&dword_14D20890) + 60; if ( *(_WORD *)v19 != sub_63FD50(v7) ) { v16 = 6723; goto LABEL_12; } v8 = sub_46F910(v7); if ( v8 <= 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to use lot 0 item", v8 > 0); v16 = 6725; goto LABEL_12; } v9 = sub_63FD50(v7); v10 = sub_418CB0((int)&dword_14D20890, v9); if ( !v10 || !*(_DWORD *)v10 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to equip empty cell", 0); v16 = 6725; goto LABEL_12; } v11 = off_849C18; *(_WORD *)off_849C18 = 29871; *((_WORD *)v11 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((char *)v11 + 9) = *(_DWORD *)(v6 + 3); *(_DWORD *)((char *)v11 + 13) = *(_DWORD *)(v6 + 7); *(_DWORD *)((char *)v11 + 17) = *(_DWORD *)(v6 + 11); *(_DWORD *)((char *)v11 + 21) = *(_DWORD *)(v6 + 15); *((_BYTE *)v11 + 8) = *(_BYTE *)(v6 + 2); if ( sub_4C81E0(&off_849C18, 25) ) { v12 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v12); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Packet Too Long", 25); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; } LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D41EF60: using guessed type __int16 word_D41EF60; // D41EF64: using guessed type int dword_D41EF64; // 14D12A00: using guessed type int dword_14D12A00; // 14D20890: using guessed type int dword_14D20890; //----- (004729A0) -------------------------------------------------------- int __thiscall sub_4729A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@5 int v6; // ebx@8 int v7; // edi@13 int v8; // eax@15 __int16 v9; // ax@17 int v10; // eax@17 void *v11; // edi@20 int v12; // eax@22 signed int v14; // [sp-4h] [bp-28h]@4 int v15; // [sp-4h] [bp-28h]@9 signed int v16; // [sp-4h] [bp-28h]@11 int v17; // [sp+14h] [bp-10h]@8 int v18; // [sp+2Ch] [bp+8h]@8 char *v19; // [sp+2Ch] [bp+8h]@13 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D41EF6C & 1) ) { dword_D41EF6C |= 1u; word_D41EF68 = 86; atexit(nullsub_49); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D41EF68) ) goto LABEL_28; v5 = *(_DWORD *)((char *)v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { v14 = 6746; goto LABEL_24; } if ( *((_WORD *)v4 + 42864) & 0xC ) { LABEL_28: v14 = 6745; LABEL_24: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 29, 181, v14); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; goto LABEL_25; } v6 = a2; v17 = *(_BYTE *)(a2 + 2); v18 = *(_BYTE *)(a2 + 2); if ( v18 >= (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 9121) + 8))((char *)v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : wrong slot", v17); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 29, 181, 6747); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; goto LABEL_25; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int, _DWORD))(*((_DWORD *)v4 + 14672) + 4))( (char *)v4 + 58688, 9, v18, *((_WORD *)v4 + 80389)) ) { v16 = 6748; LABEL_12: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 29, 181, v16); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; goto LABEL_25; } v7 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v6 + 2)); v19 = sub_418C70(&dword_14D20890) + 62; if ( *(_WORD *)v19 != sub_63FD50(v7) ) { v16 = 6747; goto LABEL_12; } v8 = sub_46F910(v7); if ( v8 <= 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to use lot 0 item", v8 > 0); v16 = 6749; goto LABEL_12; } v9 = sub_63FD50(v7); v10 = sub_418CB0((int)&dword_14D20890, v9); if ( !v10 || !*(_DWORD *)v10 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to equip empty cell", 0); v16 = 6749; goto LABEL_12; } v11 = off_849C18; *(_WORD *)off_849C18 = 29879; *((_WORD *)v11 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v11 + 9) = *(_BYTE *)(v6 + 3); *((_BYTE *)v11 + 8) = *(_BYTE *)(v6 + 2); if ( sub_4C81E0(&off_849C18, 10) ) { v12 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v12); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Packet Too Long", 10); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; } LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D41EF68: using guessed type __int16 word_D41EF68; // D41EF6C: using guessed type int dword_D41EF6C; // 14D12A00: using guessed type int dword_14D12A00; // 14D20890: using guessed type int dword_14D20890; //----- (00472CA0) -------------------------------------------------------- int __stdcall sub_472CA0(int a1, int a2, int a3, int a4, int a5) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_GuildReName"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_GuildReName"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_GuildReName"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00472CF0) -------------------------------------------------------- int __stdcall sub_472CF0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_GuildReType"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_GuildReType"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_GuildReType"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00472D40) -------------------------------------------------------- int __thiscall sub_472D40(void *this, unsigned __int8 a2, int a3) { int v3; // esi@1 int v4; // eax@5 int v5; // ebx@14 char *v6; // ST24_4@14 int v7; // eax@15 __int16 v8; // ax@17 int v9; // eax@17 __int16 v10; // ST08_2@20 signed int v12; // [sp-4h] [bp-28h]@4 signed int v13; // [sp-4h] [bp-28h]@10 int v14; // [sp-4h] [bp-28h]@11 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReType"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReType"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D41EF74 & 1) ) { dword_D41EF74 |= 1u; word_D41EF70 = 86; atexit(nullsub_51); } if ( !((1 << **(_BYTE **)(v3 + 3828)) & (unsigned __int16)word_D41EF70) ) goto LABEL_26; v4 = *(_DWORD *)(v3 + 122); if ( !v4 || !*(_BYTE *)(*(_DWORD *)(v4 + 12) + 158) ) { v12 = 6746; goto LABEL_22; } if ( *(_WORD *)(v3 + 85728) & 0xC ) { LABEL_26: v12 = 6745; LABEL_22: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, v12); v14 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReType"; goto LABEL_23; } if ( a2 < (*(int (__thiscall **)(int))(*(_DWORD *)(v3 + 36484) + 8))(v3 + 36484) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)(v3 + 58688) + 4))( v3 + 58688, 9, a2, *(_WORD *)(v3 + 160778)) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, 6748); v14 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReType"; goto LABEL_23; } v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v3 + 36484))(v3 + 36484, a2); v6 = sub_418C70(&dword_14D20890) + 62; if ( *(_WORD *)v6 == sub_63FD50(v5) ) { v7 = sub_46F910(v5); if ( v7 > 0 ) { v8 = sub_63FD50(v5); v9 = sub_418CB0((int)&dword_14D20890, v8); if ( v9 && *(_DWORD *)v9 ) { sub_53E400(off_86AD1C, v3, v3 + 36484, (int **)v9, a2); v10 = *(_WORD *)(v3 + 4); BYTE3(a3) = a3; *(_WORD *)(v3 + 160824) = sub_472630((int)&unk_751118, v10, (int)((char *)&a3 + 3)); v14 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReType"; goto LABEL_23; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to equip empty cell", 0); v13 = 6749; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to use lot 0 item", v7 > 0); v13 = 6749; } goto LABEL_11; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : wrong slot", a2); } v13 = 6747; LABEL_11: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, v13); v14 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReType"; LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD1C: using guessed type int (__thiscall *off_86AD1C[2])(void *, char); // D41EF70: using guessed type __int16 word_D41EF70; // D41EF74: using guessed type int dword_D41EF74; // 14D20890: using guessed type int dword_14D20890; //----- (00472FE0) -------------------------------------------------------- int __thiscall sub_472FE0(void *this) { void *v1; // esi@1 int v2; // eax@1 char *v3; // ebx@2 int v4; // eax@3 bool v5; // zf@3 _BYTE *v6; // edi@3 int v7; // esi@7 int v8; // eax@22 int v9; // eax@24 int v10; // ecx@24 int v11; // ecx@24 int v12; // ST08_4@24 __time32_t v13; // eax@24 __time32_t v14; // eax@24 void *v15; // edi@25 int v16; // eax@27 unsigned int v18; // [sp-4h] [bp-324h]@1 char v19; // [sp+10h] [bp-310h]@17 char v20; // [sp+110h] [bp-210h]@13 char v21; // [sp+210h] [bp-110h]@5 unsigned int v22; // [sp+310h] [bp-10h]@1 int v23; // [sp+31Ch] [bp-4h]@1 int v24; // [sp+320h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v18 = (unsigned int)&v24 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 80411); v23 = 0; if ( (unsigned __int16)v2 >= 0x80u || (v3 = (char *)&unk_D41EF80 + 18 * v2) == 0 ) { v4 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v18); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = byte_7493ED == 0; v6 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v6[20] = 0; if ( !v5 ) { if ( byte_14D21464 ) { sprintf(&v21, "%.255s", "Guild ReName Null return "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v21, dword_14D212E0); } } v7 = *((_WORD *)v1 + 80411); if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v7); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v20, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v20, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v19, "%.255s", v6); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v19, dword_14D212E0); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v8 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v8); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } } goto LABEL_29; } if ( *((_WORD *)v1 + 2) == *(_WORD *)v3 ) { v15 = off_849C18; *(_WORD *)off_849C18 = 29873; *((_WORD *)v15 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 836))(v1, v18); *((_DWORD *)v15 + 2) = *(_DWORD *)(v3 + 2); *((_DWORD *)v15 + 3) = *(_DWORD *)(v3 + 6); *((_DWORD *)v15 + 4) = *(_DWORD *)(v3 + 10); *((_DWORD *)v15 + 5) = *(_DWORD *)(v3 + 14); if ( sub_4C81E0(&off_849C18, 24) ) { v16 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v16); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess : Packet Too Long", 24); } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 29, 173, 6720); LABEL_29: v23 = -1; goto LABEL_30; } v9 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v18); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = (int)&byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v9 + 12); v12 = v11; *(_DWORD *)(v11 + 16) = *(_DWORD *)(v9 + 16); *(_BYTE *)(v11 + 20) = 0; v13 = sub_418EA0((__time32_t)byte_14D211E0, (int)"Guild ReName Null "); v14 = sub_418EA0(v13, v12); sub_418F20(v14, (int)&unk_13359E04); v23 = -1; LABEL_30: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; // 14D21464: using guessed type char byte_14D21464; //----- (00473390) -------------------------------------------------------- int __thiscall sub_473390(void *this) { void *v1; // esi@1 int v2; // eax@1 char *v3; // ebx@2 int v4; // eax@3 bool v5; // zf@3 _BYTE *v6; // edi@3 int v7; // esi@7 int v8; // eax@22 int v9; // eax@24 int v10; // ecx@24 int v11; // ecx@24 int v12; // ST08_4@24 __time32_t v13; // eax@24 __time32_t v14; // eax@24 void *v15; // edi@25 int v16; // eax@27 unsigned int v18; // [sp-4h] [bp-324h]@1 char v19; // [sp+10h] [bp-310h]@17 char v20; // [sp+110h] [bp-210h]@13 char v21; // [sp+210h] [bp-110h]@5 unsigned int v22; // [sp+310h] [bp-10h]@1 int v23; // [sp+31Ch] [bp-4h]@1 int v24; // [sp+320h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v18 = (unsigned int)&v24 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 80412); v23 = 0; if ( (unsigned __int16)v2 >= 0x80u || (v3 = (char *)&unk_751118 + 4 * v2) == 0 ) { v4 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v18); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = byte_7493ED == 0; v6 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v6[20] = 0; if ( !v5 ) { if ( byte_14D21464 ) { sprintf(&v21, "%.255s", "Guild ReType Null return "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v21, dword_14D212E0); } } v7 = *((_WORD *)v1 + 80412); if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v7); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v20, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v20, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v19, "%.255s", v6); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v19, dword_14D212E0); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v8 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v8); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } } goto LABEL_29; } if ( *((_WORD *)v1 + 2) == *(_WORD *)v3 ) { v15 = off_849C18; *(_WORD *)off_849C18 = 29881; *((_WORD *)v15 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 836))(v1, v18); *((_BYTE *)v15 + 8) = v3[2]; if ( sub_4C81E0(&off_849C18, 9) ) { v16 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v16); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess : Packet Too Long", 9); } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 29, 181, 6744); LABEL_29: v23 = -1; goto LABEL_30; } v9 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v18); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = (int)&byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v9 + 12); v12 = v11; *(_DWORD *)(v11 + 16) = *(_DWORD *)(v9 + 16); *(_BYTE *)(v11 + 20) = 0; v13 = sub_418EA0((__time32_t)byte_14D211E0, (int)"Guild ReType Null "); v14 = sub_418EA0(v13, v12); sub_418F20(v14, (int)&unk_13359E04); v23 = -1; LABEL_30: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; // 14D21464: using guessed type char byte_14D21464; //----- (00473730) -------------------------------------------------------- __int16 __thiscall sub_473730(int this, __int16 a2, int a3) { int v3; // edx@1 int v4; // eax@1 v3 = (*(_DWORD *)(this + 2304) + 1) & *(_DWORD *)(this + 2308); *(_DWORD *)(this + 2304) = v3; *(_WORD *)(this + 18 * v3) = a2; v4 = this + 18 * *(_DWORD *)(this + 2304) + 2; *(_DWORD *)v4 = *(_DWORD *)a3; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(a3 + 12); return *(_WORD *)(this + 2304); } //----- (00473790) -------------------------------------------------------- int __thiscall sub_473790(void *this, unsigned __int8 a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 int v7; // eax@5 int v8; // ebx@14 int v9; // eax@15 __int16 v10; // ax@17 int v11; // eax@17 __int16 v12; // ax@20 signed int v14; // [sp-4h] [bp-38h]@4 signed int v15; // [sp-4h] [bp-38h]@10 int v16; // [sp-4h] [bp-38h]@11 int v17; // [sp+10h] [bp-24h]@20 int v18; // [sp+14h] [bp-20h]@20 int v19; // [sp+18h] [bp-1Ch]@20 int v20; // [sp+1Ch] [bp-18h]@20 int v21; // [sp+20h] [bp-14h]@1 char *v22; // [sp+24h] [bp-10h]@14 int v23; // [sp+30h] [bp-4h]@1 v6 = (int)this; v21 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; if ( !(dword_D41EF7C & 1) ) { dword_D41EF7C |= 1u; word_D41EF78 = 86; atexit(nullsub_50); } if ( !((1 << **(_BYTE **)(v6 + 3828)) & (unsigned __int16)word_D41EF78) ) goto LABEL_26; v7 = *(_DWORD *)(v6 + 122); if ( !v7 || !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 158) ) { v14 = 6722; goto LABEL_22; } if ( *(_WORD *)(v6 + 85728) & 0xC ) { LABEL_26: v14 = 6721; LABEL_22: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 29, 173, v14); v23 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"; goto LABEL_23; } if ( a2 < (*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 36484) + 8))(v6 + 36484) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)(v6 + 58688) + 4))( v6 + 58688, 9, a2, *(_WORD *)(v6 + 160778)) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 29, 173, 6724); v23 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"; goto LABEL_23; } v8 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v6 + 36484))(v6 + 36484, a2); v22 = sub_418C70(&dword_14D20890) + 60; if ( *(_WORD *)v22 == sub_63FD50(v8) ) { v9 = sub_46F910(v8); if ( v9 > 0 ) { v10 = sub_63FD50(v8); v11 = sub_418CB0((int)&dword_14D20890, v10); if ( v11 && *(_DWORD *)v11 ) { sub_53E400(off_86AD18, v6, v6 + 36484, (int **)v11, a2); v19 = a5; v18 = a4; v12 = *(_WORD *)(v6 + 4); v17 = a3; v20 = a6; *(_WORD *)(v6 + 160822) = sub_473730((int)&unk_D41EF80, v12, (int)&v17); v23 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"; goto LABEL_23; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to equip empty cell", 0); v15 = 6725; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to use lot 0 item", v9 > 0); v15 = 6725; } goto LABEL_11; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : wrong slot", a2); } v15 = 6723; LABEL_11: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 29, 173, v15); v23 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildReName"; LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD18: using guessed type int (__thiscall *off_86AD18[3])(void *, char); // D41EF78: using guessed type __int16 word_D41EF78; // D41EF7C: using guessed type int dword_D41EF7C; // 14D20890: using guessed type int dword_14D20890; //----- (00473A40) -------------------------------------------------------- bool __thiscall sub_473A40(int this, int a2) { return *(_DWORD *)(this + 4200) == a2; } //----- (00473A60) -------------------------------------------------------- int __thiscall sub_473A60(int this) { int v1; // esi@1 v1 = this; sub_641330(this); *(_DWORD *)(v1 + 4200) = 0; return v1; } //----- (00473A90) -------------------------------------------------------- char __thiscall sub_473A90(int this, int a2, int a3) { if ( !*(_BYTE *)(this + 4204) ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 12))(a3); return 1; } //----- (00473AB0) -------------------------------------------------------- void __thiscall sub_473AB0(int this) { *(_BYTE *)(this + 4204) = 0; } //----- (00473AC0) -------------------------------------------------------- void __thiscall sub_473AC0(int this) { *(_BYTE *)(this + 4204) = 1; } //----- (00473AD0) -------------------------------------------------------- int __thiscall sub_473AD0(int this, int a2, int a3, int a4) { return *(_DWORD *)(a4 + 4200) - *(_DWORD *)(this + 4200); } //----- (00473AF0) -------------------------------------------------------- __int64 __thiscall sub_473AF0(int this) { return *(_QWORD *)(this + 4184); } //----- (00473B00) -------------------------------------------------------- int __thiscall sub_473B00(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 4184) = a2; *(_DWORD *)(this + 4188) = a3; return result; } //----- (00473B20) -------------------------------------------------------- __int64 __thiscall sub_473B20(int this) { return *(_QWORD *)(this + 4192); } //----- (00473B30) -------------------------------------------------------- int __thiscall sub_473B30(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 4192) = a2; *(_DWORD *)(this + 4196) = a3; return result; } //----- (00473B70) -------------------------------------------------------- int __thiscall sub_473B70(int this, unsigned __int16 a2) { int v3; // esi@3 int v4; // eax@3 __int16 v5; // bx@5 signed __int16 v6; // si@6 int v7; // edi@10 int v8; // esi@10 if ( a2 >= *(_WORD *)(this + 4) ) return 0; v3 = *(_DWORD *)(this + 8); v4 = 12 * a2; if ( *(_BYTE *)(v3 + v4 + 8) ) return 0; v5 = *(_WORD *)(v3 + v4 + 4); if ( v5 == a2 ) { v6 = -1; LABEL_9: *(_WORD *)(this + 12) = v6; goto LABEL_10; } *(_WORD *)(v3 + 12 * *(_WORD *)(v3 + v4 + 6) + 4) = v5; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6); if ( *(_WORD *)(this + 12) == a2 ) { v6 = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4); goto LABEL_9; } LABEL_10: v7 = *(_WORD *)(this + 14); v8 = *(_DWORD *)(this + 8); if ( (_WORD)v7 == -1 ) { *(_WORD *)(v8 + v4 + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = a2; *(_WORD *)(this + 14) = a2; } else { *(_WORD *)(v8 + v4 + 4) = *(_WORD *)(v8 + 12 * v7 + 4); *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = *(_WORD *)(this + 14); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4) + 6) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4) = a2; } *(_BYTE *)(*(_DWORD *)(this + 8) + v4 + 8) = 1; ++*(_WORD *)(this + 20); return *(_DWORD *)(v4 + *(_DWORD *)(this + 8)); } //----- (00473C70) -------------------------------------------------------- char __thiscall sub_473C70(int this, unsigned __int16 a2) { int v2; // edx@2 int v3; // eax@2 __int16 v4; // dx@4 char result; // al@7 if ( a2 < *(_WORD *)(this + 4) && (v2 = *(_DWORD *)(this + 8), v3 = 12 * a2, *(_BYTE *)(v2 + v3 + 8)) && a2 != *(_WORD *)(this + 14) ) { *(_WORD *)(v2 + 12 * *(_WORD *)(v2 + v3 + 6) + 4) = *(_WORD *)(v2 + v3 + 4); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 4) + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 6); v4 = *(_WORD *)(this + 12); if ( v4 == -1 ) { *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 6) = a2; *(_WORD *)(this + 12) = a2; } else { *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 4) = v4; *(_WORD *)(*(_DWORD *)(this + 8) + v3 + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 12) + 6); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 12) + 6) + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 12) + 6) = a2; } *(_BYTE *)(*(_DWORD *)(this + 8) + v3 + 8) = 0; --*(_WORD *)(this + 20); result = 1; } else { result = 0; } return result; } //----- (00473D60) -------------------------------------------------------- void *__thiscall sub_473D60(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B39B8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B39B8: using guessed type int (__thiscall *off_6B39B8)(void *, char); //----- (00473DB0) -------------------------------------------------------- FILE *__thiscall sub_473DB0(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // eax@1 int v5; // edi@1 int v6; // eax@1 unsigned __int8 v7; // bl@1 int v8; // esi@1 int v9; // esi@3 FILE *result; // eax@4 int v11; // eax@5 v3 = this; sub_641000(this); sub_640350(v3, a2 + 22, a2 + 23, 4); *((_DWORD *)v3 + 1046) = *(_DWORD *)(a2 + 6); *((_DWORD *)v3 + 1047) = *(_DWORD *)(a2 + 10); *((_DWORD *)v3 + 1048) = *(_DWORD *)(a2 + 14); *((_DWORD *)v3 + 1049) = *(_DWORD *)(a2 + 18); v4 = off_849C18; *(_DWORD *)off_849C18 = &unk_12407492; *((_DWORD *)v4 + 1) = *((_DWORD *)v3 + 1046); *((_DWORD *)v4 + 2) = *((_DWORD *)v3 + 1047); *((_DWORD *)v4 + 3) = *((_DWORD *)v3 + 1048); *((_DWORD *)v4 + 4) = *((_DWORD *)v3 + 1049); v5 = (int)((char *)v4 + 20); v6 = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1316))( (char *)v4 + 20, (char *)v4 + 21, 4, v3); v7 = *(_BYTE *)(a2 + 22); v8 = v6; if ( *(_BYTE *)v5 != v7 ) sub_639100( &unk_86DDD8, (int)"GuildStorage::GuildStorageElement::gse_StoreItem : ItemNumber not match", *(_BYTE *)v5 - v7); v9 = v8 + 21; if ( sub_4C81E0(&off_849C18, v9) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 760))(a3); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 12))(v11, a3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v9); } return result; } //----- (00473EB0) -------------------------------------------------------- int __thiscall sub_473EB0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageClose"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageClose"; dword_750AB8[dword_750CB8++] = -1; *((_WORD *)v1 + 42188) = -1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageClose"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00473F20) -------------------------------------------------------- int __thiscall sub_473F20(void *this, __int16 a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageError"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageError"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 29842; *((_WORD *)v3 + 1) = a2; *((_BYTE *)v3 + 20) = 0; if ( sub_4C81E0(&off_849C18, 21) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageError : Packet Too Long", 21); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GuildStorageError"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00474020) -------------------------------------------------------- int __thiscall sub_474020(int this, int a2) { int result; // eax@1 void *v3; // ecx@1 int v4; // ecx@1 int v5; // ecx@1 result = this; *(_DWORD *)this = &off_6B3B08; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 7); v3 = off_849C18; *(_WORD *)off_849C18 = 29844; *(_DWORD *)(result + 8) = v3; *(_DWORD *)(result + 12) = (char *)v3 + 2; *((_BYTE *)v3 + 2) = *(_BYTE *)(a2 + 11); *(_BYTE *)(*(_DWORD *)(result + 12) + 1) = *(_BYTE *)(a2 + 13); v4 = *(_DWORD *)(result + 12); *(_DWORD *)(v4 + 2) = *(_DWORD *)(a2 + 14); *(_DWORD *)(v4 + 6) = *(_DWORD *)(a2 + 18); *(_DWORD *)(v4 + 10) = *(_DWORD *)(a2 + 22); *(_DWORD *)(v4 + 14) = *(_DWORD *)(a2 + 26); *(_DWORD *)(v4 + 18) = *(_DWORD *)(a2 + 30); *(_WORD *)(*(_DWORD *)(result + 12) + 22) = *(_WORD *)(a2 + 34); *(_BYTE *)(*(_DWORD *)(result + 12) + 24) = *(_BYTE *)(a2 + 12); v5 = *(_DWORD *)(result + 12); *(_DWORD *)(v5 + 25) = *(_DWORD *)(a2 + 36); *(_DWORD *)(v5 + 29) = *(_DWORD *)(a2 + 40); return result; } // 6B3B08: using guessed type int (__stdcall *off_6B3B08)(int, int); //----- (004740B0) -------------------------------------------------------- int __stdcall sub_4740B0(int a1) { int (__stdcall **v2)(int, int); // [sp+4h] [bp-20h]@1 int v3; // [sp+14h] [bp-10h]@1 int v4; // [sp+20h] [bp-4h]@1 v3 = (int)"GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"; sub_4675D0((int)&unk_D020420, (int)"GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"); dword_7508B8[dword_750CB8] = (int)"GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; sub_474020((int)&v2, a1); LOBYTE(v4) = 1; sub_43C470(dword_13253824, (int)&v2); --dword_750CB8; v2 = &off_6B22DC; v4 = -1; return sub_467660((int)&unk_D020420, (int)"GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"); } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253824: using guessed type int dword_13253824; //----- (00474170) -------------------------------------------------------- void *__thiscall sub_474170(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6B3A34; _LN21((char *)this + 24, 0x1070u, 300, sub_473A80); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6B39B8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B39B8: using guessed type int (__thiscall *off_6B39B8)(void *, char); // 6B3A34: using guessed type int (__thiscall *off_6B3A34)(void *, char); //----- (00474200) -------------------------------------------------------- int __stdcall sub_474200(int a1) { const void *v1; // esi@1 bool v2; // cf@1 int v4; // [sp-4h] [bp-4Ch]@3 char v5; // [sp+Ch] [bp-3Ch]@4 int v6; // [sp+38h] [bp-10h]@1 int v7; // [sp+44h] [bp-4h]@1 v6 = (int)"ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = (const void *)(a1 + 2); v2 = *(_BYTE *)(a1 + 2) < 0xAu; v7 = 0; if ( v2 && *(_BYTE *)v1 != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { memcpy(&v5, v1, 0x2Cu); sub_4740B0((int)&v5); v4 = (int)"ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"; } else { v4 = (int)"ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"; } --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, v4); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004742D0) -------------------------------------------------------- int __thiscall sub_4742D0(int this, int a2) { int result; // eax@1 int v3; // edx@1 const void *v4; // esi@2 void *v5; // edi@2 bool v6; // zf@2 signed int v7; // [sp+Ch] [bp-4h]@1 result = this; v3 = this + 4; v7 = 36; do { v4 = (const void *)(a2 - this + v3); v5 = (void *)v3; v3 += 116; v6 = v7-- == 1; memcpy(v5, v4, 0x74u); } while ( !v6 ); *(_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; } //----- (00474360) -------------------------------------------------------- char __thiscall sub_474360(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B39E4; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B39E4: using guessed type int (__stdcall *off_6B39E4)(int, int); //----- (004744E0) -------------------------------------------------------- int __thiscall sub_4744E0(void *this, int a2, int a3) { int v3; // esi@1 int (__stdcall **v5)(int, int); // [sp+0h] [bp-1098h]@1 int v6; // [sp+4h] [bp-1094h]@1 int (__thiscall *v7)(int, int, int, int); // [sp+8h] [bp-1090h]@1 char *v8; // [sp+Ch] [bp-108Ch]@1 int v9; // [sp+10h] [bp-1088h]@1 __int16 v10; // [sp+14h] [bp-1084h]@1 char v11; // [sp+18h] [bp-1080h]@1 int v12; // [sp+1080h] [bp-18h]@1 unsigned int v13; // [sp+1088h] [bp-10h]@1 int v14; // [sp+1094h] [bp-4h]@1 int v15; // [sp+1098h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v3 = (int)this; sub_641330((int)&v11); v12 = a2; v14 = 0; v5 = &off_6B3B4C; v6 = v3; v7 = sub_473AD0; v8 = &v11; v9 = 0; v10 = -1; LOBYTE(v14) = 1; sub_43C470(v3, (int)&v5); *(_WORD *)a3 = v10; v5 = &off_6B39DC; v14 = -1; sub_63FB90((int)&v11); return v9; } // 6B39DC: using guessed type int (__stdcall *off_6B39DC)(int, int); // 6B3B4C: using guessed type int (__stdcall *off_6B3B4C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004745C0) -------------------------------------------------------- char __thiscall sub_4745C0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 int v5; // eax@4 int v6; // eax@7 int v7; // eax@7 int v8; // ST08_4@8 int v9; // eax@8 int v10; // ebx@8 int v11; // eax@10 int v12; // edx@11 __int16 v13; // cx@11 __int16 v14; // cx@11 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@11 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildStorageWithdraw::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildStorageWithdraw::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2) != *((_DWORD *)v3 + 1) || (sub_4C81E0(&off_849C18, 35) ? (v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4), (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))( v5, v4, &off_849C18)) : sub_639100( &unk_86DDD8, (int)"ShineGuildStorageWithdraw::lid_Call : Packet Too Long", 35), !(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2096))(v4) || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2096))(v4) == -1 || (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4), LOBYTE(v7) = sub_44A100(*((_DWORD *)v3 + 3) + 2, v6), !v7)) ) goto LABEL_12; v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2096))(v4); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4); v10 = sub_4744E0(&dword_D41F888, v9, v8); if ( v10 && *(_DWORD *)(v10 + 4200) == (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4) ) { v11 = (**(int (__thiscall ***)(_DWORD, _DWORD))v10)(v10, *(_BYTE *)(*((_DWORD *)v3 + 3) + 24)); if ( v11 ) { v12 = *((_DWORD *)v3 + 3); v13 = a2 & 0x3FF | 0x1000; LOWORD(a2) = v13; v14 = (v13 ^ *(_BYTE *)(v12 + 24)) & 0x3FF ^ v13; v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1540); LOWORD(a2) = v14; v15(v4, &a2, v11, &a2); LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildStorageWithdraw::lid_Call"); return 1; } } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2092))(v4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildStorageWithdraw::lid_Call"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D41F888: using guessed type int dword_D41F888; //----- (004747E0) -------------------------------------------------------- char __thiscall sub_4747E0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_4742D0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00474820) -------------------------------------------------------- char __thiscall sub_474820(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_4742D0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00474860) -------------------------------------------------------- char __thiscall sub_474860(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4742D0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (004748B0) -------------------------------------------------------- char __thiscall sub_4748B0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4742D0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00474900) -------------------------------------------------------- int __thiscall sub_474900(int this) { int v1; // esi@1 signed int v2; // eax@1 signed int v3; // ecx@1 int v4; // edi@1 int v5; // edx@3 bool v6; // zf@3 int v7; // edx@3 int v8; // edx@6 int v9; // edx@6 int v10; // edx@9 int v11; // edx@9 int v12; // edx@12 int v13; // edx@15 int v14; // edx@15 int v15; // edx@18 int v16; // edx@18 v1 = this; *(_DWORD *)this = &off_6B39B8; *(_DWORD *)(this + 16) = 0; sub_474360(this, 0x12Cu); *(_DWORD *)v1 = &off_6B3A34; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x1070u, 300, (int)sub_473A60, sub_473A80); v2 = 36; v3 = 2; v4 = v1 + 4232; do { if ( v3 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v2 - 36) == 0; v7 = v5 + v2 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 4208; } if ( v3 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v2 - 24) == 0; v9 = v8 + v2 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v3 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v2 - 12) == 0; v11 = v10 + v2 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 4208; } if ( v3 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v2) ) *(_DWORD *)(v12 + v2) = v4 + 8416; } if ( v3 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v2 + 12) == 0; v14 = v13 + v2 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 12624; } if ( v3 + 3 < *(_WORD *)(v1 + 4) ) { v15 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v15 + v2 + 24) == 0; v16 = v15 + v2 + 24; if ( v6 ) *(_DWORD *)v16 = v4 + 16832; } v3 += 6; v2 += 72; v4 += 25248; } while ( v3 - 2 < 300 ); return v1; } // 6B39B8: using guessed type int (__thiscall *off_6B39B8)(void *, char); // 6B3A34: using guessed type int (__thiscall *off_6B3A34)(void *, char); //----- (00474A60) -------------------------------------------------------- bool __thiscall sub_474A60(int this) { int v1; // eax@1 bool result; // al@2 int v3; // esi@3 _UNKNOWN *v4; // eax@3 unsigned int v5; // edx@3 v1 = *(_DWORD *)(this + 172); if ( v1 ) { result = v1 == 1; } else { v3 = *(_DWORD *)this; *(_DWORD *)(this + 172) = 1; v4 = &unk_D554079; v5 = 0; while ( *((_DWORD *)v4 - 2) != v3 || *((_DWORD *)v4 - 1) != *(_DWORD *)(this + 4) || *(_DWORD *)v4 != *(_DWORD *)(this + 8) ) { v5 += 13; v4 = (char *)v4 + 13; if ( v5 >= 0x193 ) { *(_DWORD *)(this + 172) = 2; return 0; } } result = 1; } return result; } //----- (00474AC0) -------------------------------------------------------- int __thiscall sub_474AC0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 25) = 0; *(_DWORD *)(this + 21) = 0; *(_DWORD *)(this + 17) = 0; *(_BYTE *)this = -1; return result; } //----- (00474AE0) -------------------------------------------------------- bool __thiscall sub_474AE0(int this) { int v1; // esi@1 v1 = *(_DWORD *)(this + 32); return v1 && dword_14D129E8 <= (unsigned int)(v1 + 4800 * *(_WORD *)(this + 3) / 10); } // 14D129E8: using guessed type int dword_14D129E8; //----- (00474B20) -------------------------------------------------------- bool __thiscall sub_474B20(int this) { unsigned __int8 v1; // al@1 bool result; // al@2 int *v3; // eax@4 int v4; // esi@4 v1 = *(_BYTE *)(this + 24166); if ( v1 == -1 || v1 >= 0x20u ) { result = 0; } else { v3 = &dword_D553BF0[9 * v1]; v4 = v3[8]; result = v4 && dword_14D129E8 <= (unsigned int)(v4 + 4800 * *(_WORD *)((char *)v3 + 3) / 10); } return result; } // D553BF0: using guessed type int dword_D553BF0[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00474B80) -------------------------------------------------------- void __thiscall sub_474B80(void *this) { void *v1; // ebx@1 signed int v2; // esi@1 int v3; // edi@5 int v4; // eax@7 int v5; // [sp+Ch] [bp-4h]@1 v1 = this; v5 = 0; v2 = (signed int)dword_D553C09; while ( 1 ) { if ( *(_BYTE *)(v2 - 25) == -1 || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(v1) != *(_DWORD *)(v2 - 16) && (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(v1) != *(_DWORD *)(v2 - 12) ) goto LABEL_11; v3 = *(_DWORD *)(v2 + 7); if ( !v3 || dword_14D129E8 > (unsigned int)(v3 + 4800 * *(_WORD *)(v2 - 22) / 10) ) return; v4 = *(_DWORD *)((char *)v1 + 122); if ( *(_DWORD *)v4 == *(_DWORD *)(v2 - 8) ) { if ( *(_DWORD *)(v4 + 4) == *(_DWORD *)(v2 - 4) && *(_DWORD *)(v4 + 8) == *(_DWORD *)v2 ) break; } (*(void (__thiscall **)(void *, int, int))(*(_DWORD *)v1 + 2344))(v1, v2 - 25, v5); LABEL_11: ++v5; v2 += 36; if ( v2 >= (signed int)((char *)&dword_D554086 + 3) ) return; } *((_BYTE *)v1 + 24166) = v5; } // D553C09: using guessed type int dword_D553C09[]; // D554086: using guessed type int dword_D554086; // 14D129E8: using guessed type int dword_14D129E8; //----- (00474C40) -------------------------------------------------------- int __thiscall sub_474C40(void *this, int a2, char a3) { void *v3; // esi@1 int result; // eax@2 int v5; // edi@4 int v6; // eax@4 int v7; // edi@4 int v8; // eax@4 int v9; // eax@7 v3 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 2072))() == *(_DWORD *)(a2 + 9) || (result = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2072))(v3), result == *(_DWORD *)(a2 + 13)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2676))(v3) ) { *((_BYTE *)v3 + 24166) = a3; *(_WORD *)off_849C18 = 29851; if ( sub_4C81E0(&off_849C18, 3) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); result = (*(int (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v3, &off_849C18); } else { result = (int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_Send2GuildTournamentLogIn : Packet Too Long", 3); } } else { v5 = *(_DWORD *)v3; v6 = sub_48C200(&unk_150A0980, "GTEntryMapErr0"); (*(void (__thiscall **)(void *, int))(v5 + 1924))(v3, v6); v7 = *(_DWORD *)v3; v8 = sub_48C200(&unk_150A0980, "GTEntryMapErr1"); result = (*(int (__thiscall **)(void *, int))(v7 + 1924))(v3, v8); } } return result; } //----- (00474D20) -------------------------------------------------------- char __thiscall sub_474D20(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@2 v1 = this; LOBYTE(dword_D553BF0[9 * *(_BYTE *)(this + 152)]) = -1; dword_D553C10[9 * *(_BYTE *)(this + 152)] = 0; *(_BYTE *)(this + 152) = -1; v2 = sub_4627E0((void *)this); if ( v2 ) { v3 = sub_4627E0((void *)v1); LOBYTE(v2) = sub_47F980(v3); } return v2; } // D553BF0: using guessed type int dword_D553BF0[]; // D553C10: using guessed type int dword_D553C10[]; //----- (00474D70) -------------------------------------------------------- void __thiscall sub_474D70(int this, int a2) { void *v2; // eax@2 int v3; // eax@4 if ( *(_DWORD *)(this + 9028) ) { v2 = off_849C18; *(_WORD *)off_849C18 = 29837; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); *((_DWORD *)v2 + 1) = *(_DWORD *)(this + 9028); if ( sub_4C81E0(&off_849C18, 8) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineMob::mb_SendMyGuildInfo : Packet Too Long", 8); } } } //----- (00474DF0) -------------------------------------------------------- char __thiscall sub_474DF0(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 24165) = a2; return result; } //----- (00474E00) -------------------------------------------------------- bool __thiscall sub_474E00(int this) { return *(_BYTE *)(this + 24165) <= 0u; } //----- (00474E10) -------------------------------------------------------- int __stdcall sub_474E10(int a1, int a2) { int result; // eax@1 int v3; // esi@1 result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = result; if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)result + 768))(result); if ( !(_BYTE)result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( result == *(_DWORD *)(a1 + 4) ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1512))(v3, a1 + 2); } } return result; } //----- (00474E70) -------------------------------------------------------- int __thiscall sub_474E70(void *this, int a2, int a3, int a4) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2352))(*(_WORD *)(a2 + 2)); } //----- (00474E90) -------------------------------------------------------- char __thiscall sub_474E90(void *this, int a2) { void *v2; // esi@1 char result; // al@1 int v4; // ecx@2 v2 = this; result = sub_56E870(this); if ( !result ) { v4 = *(_DWORD *)((char *)v2 + 122); if ( v4 ) { result = sub_474A60(v4); if ( result ) result = sub_43C920(v2); } } return result; } //----- (00474EC0) -------------------------------------------------------- FILE *__thiscall sub_474EC0(void *this, __int16 a2, int a3) { void *v3; // esi@1 void *v4; // eax@1 FILE *result; // eax@2 int v6; // eax@3 void *v7; // edi@5 char v8; // [sp+10h] [bp-18h]@5 int v9; // [sp+24h] [bp-4h]@5 v3 = this; v4 = off_849C18; *(_WORD *)off_849C18 = 29904; *((_WORD *)v4 + 1) = a2; *((_WORD *)v4 + 2) = a3; if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); result = (FILE *)(*(int (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK : Packet Too Long", 6); } if ( a3 != 65535 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 29905; *(_DWORD *)((char *)v7 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2072))(v3); *((_WORD *)v7 + 3) = a3; sub_4287B0(&v8, &off_849C18, 8); v9 = 0; sub_549B60(v3, (int)&v8, 1); v9 = -1; result = (FILE *)sub_428A70(&v8); } return result; } //----- (00474FC0) -------------------------------------------------------- FILE *__thiscall sub_474FC0(void *this, __int16 a2) { void *v2; // eax@1 void *v3; // esi@1 FILE *result; // eax@2 int v5; // eax@3 v2 = off_849C18; v3 = this; *(_WORD *)off_849C18 = 29899; *((_WORD *)v2 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_ACK : Packet Too Long", 4); } return result; } //----- (00475030) -------------------------------------------------------- int __thiscall sub_475030(int this, __int16 a2) { int v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 int v6; // eax@3 char v8; // [sp+8h] [bp-18h]@1 int v9; // [sp+1Ch] [bp-4h]@1 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 29900; *((_WORD *)v3 + 1) = a2; *((_WORD *)v3 + 2) = *(_WORD *)(this + 4); sub_4287B0(&v8, &off_849C18, 6); v4 = *(_DWORD *)(v2 + 102); v9 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, 0, 0, (int)&v8, 0, 65535); if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD : Packet Too Long", 6); } v9 = -1; return sub_428A70(&v8); } //----- (00475120) -------------------------------------------------------- FILE *__thiscall sub_475120(void *this, __int16 a2) { void *v2; // eax@1 void *v3; // esi@1 FILE *result; // eax@2 int v5; // eax@3 v2 = off_849C18; v3 = this; *(_WORD *)off_849C18 = 29908; *((_WORD *)v2 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_DICEGAME_THROW_ACK : Packet Too Long", 4); } return result; } //----- (00475190) -------------------------------------------------------- char __thiscall sub_475190(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineGuildStorageDeactive::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineGuildStorageDeactive::lid_Call"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2) != *((_DWORD *)v3 + 1) || *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2096))(a2) != *((_WORD *)v3 + 4) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildStorageDeactive::lid_Call"); result = 0; } else { ++*((_DWORD *)v3 + 3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineGuildStorageDeactive::lid_Call"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00475290) -------------------------------------------------------- int __thiscall sub_475290(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // cl@3 int v5; // esi@3 char v6; // al@3 int v7; // esi@3 void *v8; // eax@5 int v9; // eax@7 v3 = this; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_GuildTournamentEnd"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_GuildTournamentEnd"; dword_750AB8[dword_750CB8++] = -1; if ( *((_BYTE *)v3 + 152) == -1 ) { sub_639100(&unk_86DDD8, (int)"FieldMap::fm_GuildTournamentEnd : Seed not set", *((_BYTE *)v3 + 152)); } else { v4 = *((_BYTE *)v3 + 152); v5 = 18 * *((_BYTE *)v3 + 152); v6 = LOBYTE(dword_D553BF0[2 * v5 / 4u]); v7 = 2 * v5; if ( v6 == -1 ) { sub_639100(&unk_86DDD8, (int)"FieldMap::fm_GuildTournamentEnd : Seed not set<2>", 255); } else { v8 = off_849C18; *(_WORD *)off_849C18 = 29826; *((_BYTE *)v8 + 2) = v4; *(_WORD *)((char *)v8 + 3) = *(_WORD *)((char *)&dword_D553BF0[0] + v7 + 1); *(_DWORD *)((char *)v8 + 6) = a2; *((_BYTE *)v8 + 5) = a2 == a3; *(_DWORD *)((char *)v8 + 10) = a3; if ( sub_4C81E0(&off_849C18, 14) ) { v9 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v9); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step : Packet Too Long", 14); } byte_D553C0D[v7] = 1; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_GuildTournamentEnd"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D553BF0: using guessed type int dword_D553BF0[]; // 14D12A00: using guessed type int dword_14D12A00; //----- (00475400) -------------------------------------------------------- int __thiscall sub_475400(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+8h] [bp-1Ch]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 2257) = a2; v3 = off_849C18; *(_WORD *)off_849C18 = 29837; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v3 + 1) = *((_DWORD *)v2 + 2257); v9 = 0; sub_4287B0(&v7, &off_849C18, 8); v4 = *(_DWORD *)((char *)v2 + 102); LOBYTE(v9) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v5, v4, 0, 0, (int)&v7, 1, 65535); LOBYTE(v9) = 0; sub_428A70(&v7); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00475510) -------------------------------------------------------- int __thiscall sub_475510(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2092))(v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004755C0) -------------------------------------------------------- int __thiscall sub_4755C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@3 int v6; // eax@5 void *v7; // edi@6 int v8; // eax@8 int v10; // [sp-4h] [bp-20h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2072))(v4) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 13425; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2072))(v4); if ( sub_4C81E0(&off_849C18, 12) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ : Packet Too Long", 12); } v7 = off_849C18; *(_WORD *)off_849C18 = 29854; *((_WORD *)v7 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); if ( sub_4C81E0(&off_849C18, 8) ) { v8 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ : Packet Too Long", 8); } v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"; } else { sub_473F20(v4, 4674); v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; //----- (00475750) -------------------------------------------------------- int __stdcall sub_475750(int a1, int a2) { __int16 v2; // ax@1 unsigned int v3; // ebx@1 int v4; // esi@3 int v5; // esi@15 int v7; // [sp-8h] [bp-128h]@7 char v8; // [sp+10h] [bp-110h]@13 unsigned int v9; // [sp+110h] [bp-10h]@1 int v10; // [sp+11Ch] [bp-4h]@1 int v11; // [sp+120h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v3 = 0; v10 = 0; if ( 7000 == v2 ) { if ( *(_WORD *)(a1 + 9) > 0u ) { v4 = a1 + 11; do { sub_47BD60(*(_DWORD *)v4, *(_BYTE *)(v4 + 4)); ++v3; v4 += 5; } while ( v3 < *(_WORD *)(a1 + 9) ); } goto LABEL_19; } if ( 7001 == v2 ) { v7 = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK : ERR_GUILDTOURNAMENT_MEMBERGRADE_NOT_FOUND"; } else { if ( 7002 != v2 ) goto LABEL_11; v7 = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK : ERR_GUILDTOURNAMENT_MEMBERGRADE_NOT_TOURNAMENT"; } sub_418EA0((__time32_t)byte_14D12E30, v7); LABEL_11: if ( byte_7493ED ) { if ( byte_14D130B4 ) { sprintf(&v8, "%.255s", "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK : ErrorCode :"); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v8, dword_14D12F30); } } v5 = *(_WORD *)(a1 + 2); if ( byte_7493ED ) { if ( byte_14D130B4 ) { sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fprintf(dword_14D12F30, "%d", v5); } } LABEL_19: --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D130B4: using guessed type char byte_14D130B4; //----- (004758F0) -------------------------------------------------------- int __stdcall sub_4758F0(int a1, int a2) { int v2; // edi@1 int v3; // eax@2 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 8)); if ( v2 ) { v3 = operator new(0x68u); if ( v3 ) v4 = sub_444300(v3, a1 + 12, a1 + 12, *(_DWORD *)(a1 + 24), *(_DWORD *)(a1 + 28)); else v4 = 0; sub_56E820(v2, v4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004759E0) -------------------------------------------------------- int __stdcall sub_4759E0(int a1, int a2) { int v2; // eax@1 int v3; // esi@1 int v4; // eax@3 int v5; // edi@3 __int16 v6; // cx@5 void *v7; // eax@6 int v8; // eax@8 int v10; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 4); v3 = a1 + 2; if ( v2 == -1 ) { --dword_750CB8; v10 = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ"; } else { v4 = sub_54E4D0(&unk_13253630, v2); v5 = v4; if ( v4 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 768))(v4) ) { v6 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 2356))(v5, v3); if ( v6 != 7232 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 29924; *((_WORD *)v7 + 1) = v6; *((_WORD *)v7 + 2) = *(_WORD *)v3; *(_DWORD *)((char *)v7 + 6) = *(_DWORD *)(a1 + 4); *(_DWORD *)((char *)v7 + 10) = *(_DWORD *)(a1 + 8); *(_DWORD *)((char *)v7 + 14) = *(_DWORD *)(a1 + 12); *((_BYTE *)v7 + 18) = *(_BYTE *)(a1 + 16); *(_WORD *)((char *)v7 + 19) = *(_WORD *)(a1 + 17); *(_DWORD *)((char *)v7 + 21) = *(_DWORD *)(a1 + 19); *(_DWORD *)((char *)v7 + 25) = *(_DWORD *)(a1 + 23); if ( sub_4C81E0(&off_849C18, 29) ) { v8 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v8); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ : Packet Too Long", 29); } } } } --dword_750CB8; v10 = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ"; } return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00475B50) -------------------------------------------------------- signed int __userpurge sub_475B50(int a1, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // eax@3 int v6; // edi@3 unsigned int v7; // edx@3 void *v8; // edi@5 int v9; // eax@5 int v10; // eax@5 int v11; // edi@5 int v12; // ST14_4@5 int v13; // eax@5 __int16 v14; // ax@5 int v15; // eax@5 int v16; // eax@7 int v17; // [sp+Ch] [bp-1Ch]@3 unsigned int v18; // [sp+24h] [bp-4h]@1 int v19; // [sp+28h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v3 = a1; if ( (*(int (**)(void))(*(_DWORD *)a1 + 2072))() ) { v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 2004))(v3, a2); (*(void (__thiscall **)(int, int *))(*(_DWORD *)v5 + 100))(v5, &v17); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1076))(v3); if ( v17 + __PAIR__(v7, v6) >= *(_QWORD *)(a3 + 17) ) { v8 = off_849C18; *(_WORD *)off_849C18 = 29925; *((_WORD *)v8 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); *((_WORD *)v8 + 4) = sub_4802C0(v9); *((_WORD *)v8 + 5) = *(_WORD *)a3; *((_DWORD *)v8 + 3) = *(_DWORD *)(a3 + 2); *((_DWORD *)v8 + 4) = *(_DWORD *)(a3 + 6); *((_DWORD *)v8 + 5) = *(_DWORD *)(a3 + 10); *((_BYTE *)v8 + 24) = *(_BYTE *)(a3 + 14); *(_WORD *)((char *)v8 + 25) = *(_WORD *)(a3 + 15); *(_DWORD *)((char *)v8 + 27) = *(_DWORD *)(a3 + 17); *(_DWORD *)((char *)v8 + 31) = *(_DWORD *)(a3 + 21); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); v11 = *(_DWORD *)v10; v12 = v10; v13 = (*(int (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 2004))( v3, *(_DWORD *)(a3 + 17), *(_DWORD *)(a3 + 21), -1); v14 = sub_4802C0(v13); (*(void (__thiscall **)(int, _DWORD))(v11 + 72))(v12, (unsigned __int16)v14); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); sub_43BBF0(v15); if ( sub_4C81E0(&off_849C18, 35) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildTournamentJoinNew : Packet Too Long", 35); } result = 7232; } else { result = 7236; } } else { result = 7234; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00475D00) -------------------------------------------------------- int __stdcall sub_475D00(int a1, int a2) { void *v2; // eax@1 int v3; // eax@3 int v4; // eax@5 int v5; // edi@5 int v6; // eax@8 int v7; // eax@9 int v8; // edi@9 int v9; // eax@12 int v10; // ST04_4@13 __time32_t v11; // eax@13 __time32_t v12; // eax@13 __int16 v14; // [sp-4h] [bp-24h]@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 29924; *((_WORD *)v2 + 1) = *(_WORD *)(a1 + 10); *((_WORD *)v2 + 2) = *(_WORD *)(a1 + 12); *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(a1 + 14); *(_DWORD *)((char *)v2 + 10) = *(_DWORD *)(a1 + 18); *(_DWORD *)((char *)v2 + 14) = *(_DWORD *)(a1 + 22); *(_DWORD *)((char *)v2 + 21) = *(_DWORD *)(a1 + 29); *(_DWORD *)((char *)v2 + 25) = *(_DWORD *)(a1 + 33); if ( sub_4C81E0(&off_849C18, 29) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK : Packet Too Long", 29); } v14 = *(_WORD *)(a1 + 2); if ( *(_WORD *)(a1 + 10) == 7232 ) { v7 = sub_54DE90(&unk_13253630, v14); v8 = v7; if ( v7 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 768))(v7) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 836))(v8) == *(_DWORD *)(a1 + 4) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v8, *(_WORD *)(a1 + 8), 0) ) { v10 = *(_WORD *)(a1 + 8); v11 = sub_418EA0( (__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } } } } } else { v4 = sub_54DE90(&unk_13253630, v14); v5 = v4; if ( v4 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 768))(v4) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5) == *(_DWORD *)(a1 + 4) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 40))(v6, *(_WORD *)(a1 + 8)); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00475EF0) -------------------------------------------------------- int __stdcall sub_475EF0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00475F40) -------------------------------------------------------- FILE *__thiscall sub_475F40(int this, int a2, int a3, int a4) { char v4; // dl@1 void *v5; // eax@1 FILE *result; // eax@2 int v7; // eax@3 v4 = *(_BYTE *)(a2 + 2); v5 = off_849C18; *(_WORD *)off_849C18 = 29913; *((_BYTE *)v5 + 2) = v4; *(_WORD *)((char *)v5 + 3) = *(_WORD *)(this + 4); if ( sub_4C81E0(&off_849C18, 5) ) { v7 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v7); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ : Packet Too Long", 5); } return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (00475FB0) -------------------------------------------------------- char __thiscall sub_475FB0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@1 int v6; // ecx@2 v4 = this; result = sub_56E870(this); if ( !result ) { v6 = *(_DWORD *)((char *)v4 + 122); if ( v6 ) { result = sub_474A60(v6); if ( result ) result = sub_43C920(v4); } } return result; } //----- (00475FE0) -------------------------------------------------------- int __thiscall sub_475FE0(void *this) { int v1; // esi@1 int result; // eax@1 v1 = (int)this; result = 65535; if ( -1 != *((_WORD *)this + 12079) ) { *((_WORD *)this + 12079) = -1; *((_DWORD *)this + 40199) = 0; *((_DWORD *)this + 40202) = 0; *((_DWORD *)this + 40200) = sub_5131E0; *((_DWORD *)this + 40203) = sub_452C70; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); result = sub_475030(v1, 6993); } return result; } //----- (00476040) -------------------------------------------------------- __int16 __thiscall sub_476040(int this, __int16 a2) { __int16 result; // ax@1 result = *(_WORD *)(this + 24158); if ( result == a2 ) result = sub_475FE0((void *)this); return result; } //----- (00476060) -------------------------------------------------------- FILE *__thiscall sub_476060(void *this, __int16 a2) { void *v2; // eax@1 void *v3; // esi@1 FILE *result; // eax@2 int v5; // eax@3 v2 = off_849C18; v3 = this; *(_WORD *)off_849C18 = 29904; *((_WORD *)v2 + 2) = -1; *((_WORD *)v2 + 1) = a2; if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK : Packet Too Long", 6); } return result; } //----- (004760D0) -------------------------------------------------------- int __stdcall sub_4760D0(int a1) { int v1; // eax@1 int v2; // esi@2 int v4; // ebx@7 int v5; // eax@8 int *v6; // eax@8 char *v7; // eax@8 int v8; // ecx@8 int v9; // edx@8 int v10; // eax@8 int *v11; // ecx@8 int v12; // edx@8 int v13; // ecx@10 int v14; // eax@11 int v15; // eax@12 char *v16; // eax@12 int v17; // ecx@12 int v18; // edx@12 int v19; // edx@12 int *v20; // ecx@12 int v21; // eax@12 _BYTE *v22; // eax@12 int v23; // edx@12 void *v24; // ecx@12 void *v25; // eax@12 int v26; // eax@14 int v27; // eax@17 signed int v28; // eax@19 int v29; // ebx@23 unsigned __int16 v30; // si@23 unsigned __int16 v31; // dx@24 int v32; // ecx@25 int v33; // eax@25 unsigned __int16 v34; // STB4_2@25 bool v35; // zf@26 int v36; // eax@26 int v37; // eax@27 unsigned int v38; // [sp-4h] [bp-74Ch]@1 int (__stdcall **v39)(int, int); // [sp+1Ch] [bp-72Ch]@7 int v40; // [sp+20h] [bp-728h]@7 int (__thiscall *v41)(int, int, int, int); // [sp+24h] [bp-724h]@7 char *v42; // [sp+28h] [bp-720h]@7 int v43; // [sp+2Ch] [bp-71Ch]@7 __int16 v44; // [sp+30h] [bp-718h]@7 int v45; // [sp+34h] [bp-714h]@9 char v46; // [sp+38h] [bp-710h]@7 char v47; // [sp+238h] [bp-510h]@12 char v48; // [sp+338h] [bp-410h]@12 unsigned int v49; // [sp+738h] [bp-10h]@1 int v50; // [sp+744h] [bp-4h]@1 int v51; // [sp+748h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v38 = (unsigned int)&v51 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_GuildTournamantStart"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_GuildTournamantStart"; dword_750AB8[dword_750CB8++] = -1; v1 = (unsigned __int8)byte_D554070[13 * *(_WORD *)(a1 + 1)]; v50 = 0; if ( v1 < dword_D0203F4 ) v2 = *(_DWORD *)(dword_D0203F0 + 4 * v1); else v2 = 0; if ( v2 != 0 ) { sub_465590((int)&v46, (int)&byte_D554071[13 * *(_BYTE *)a1]); v39 = &off_6A4700; v40 = (int)&unk_CFCF380; v41 = sub_4521E0; v42 = &v46; v43 = 0; v44 = -1; LOBYTE(v50) = 2; sub_43C470((int)&unk_CFCF380, (int)&v39); v4 = v43; LOBYTE(v50) = 1; v39 = &off_6A2544; if ( v43 ) { v45 = v43 + 152; if ( 255 != *(_BYTE *)(v43 + 152) ) { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_GuildTournamantStart : seed not empty. May be RE-Match.", 1); v13 = v45; LOBYTE(dword_D553BF0[9 * *(_BYTE *)v45]) = -1; dword_D553C10[9 * *(_BYTE *)v13] = 0; *(_BYTE *)v13 = -1; if ( sub_4627E0((void *)v4) ) { v14 = sub_4627E0((void *)v4); sub_47F980(v14); } } *(_BYTE *)v45 = *(_BYTE *)a1; *(_DWORD *)(v4 + 160) = 0; *(_DWORD *)(v4 + 156) = 0; v15 = 9 * *(_BYTE *)a1; dword_D553BF0[9 * *(_BYTE *)a1] = *(_DWORD *)a1; dword_D553BF4[v15] = *(_DWORD *)(a1 + 4); dword_D553BF8[v15] = *(_DWORD *)(a1 + 8); dword_D553BFC[v15] = *(_DWORD *)(a1 + 12); byte_D553C00[4 * v15] = *(_BYTE *)(a1 + 16); v16 = &byte_D554071[13 * *(_BYTE *)a1]; v17 = 9 * *(_BYTE *)a1; dword_D553C01[9 * *(_BYTE *)a1] = *(_DWORD *)v16; v18 = *((_DWORD *)v16 + 1); dword_D553C09[v17] = *((_DWORD *)v16 + 2); dword_D553C05[v17] = v18; dword_D553C10[9 * *(_BYTE *)a1] = dword_14D129E8; byte_D553C0D[36 * *(_BYTE *)a1] = 0; v19 = dword_D553C01[9 * *(_BYTE *)a1]; v20 = &dword_D553C01[9 * *(_BYTE *)a1]; v21 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v21; v22 = &byte_85A2C0[256 * v21]; *(_DWORD *)v22 = v19; v23 = v20[1]; *((_DWORD *)v22 + 2) = v20[2]; *((_DWORD *)v22 + 1) = v23; v22[12] = 0; sprintf( &v48, "%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", v22, *(_DWORD *)(v2 + 14), *(_DWORD *)(v2 + 18), *(_DWORD *)(a1 + 9), *(_DWORD *)(v2 + 24), *(_DWORD *)(v2 + 28), *(_DWORD *)(v2 + 40), *(_DWORD *)(v2 + 44), *(_DWORD *)(v2 + 48), v2 + 52, *(_DWORD *)(v2 + 128), *(_DWORD *)(v2 + 132), *(_DWORD *)(v2 + 136), v2 + 140, *(_DWORD *)(v2 + 216), *(_DWORD *)(v2 + 220), *(_DWORD *)(v2 + 224), v2 + 228, *(_DWORD *)(a1 + 13), *(_DWORD *)(v2 + 32), *(_DWORD *)(v2 + 36), *(_DWORD *)(v2 + 84), *(_DWORD *)(v2 + 88), *(_DWORD *)(v2 + 92), v2 + 96, *(_DWORD *)(v2 + 172), *(_DWORD *)(v2 + 176), *(_DWORD *)(v2 + 180), v2 + 184, *(_DWORD *)(v2 + 260), *(_DWORD *)(v2 + 264), *(_DWORD *)(v2 + 268), v2 + 272, *(_WORD *)(a1 + 3), *(_WORD *)(a1 + 5), *(_WORD *)(a1 + 7), v38); memset(&v48, 0, 0x400u); sprintf(&v48, "%d %d %d %d", *(_DWORD *)(a1 + 9), *(_DWORD *)(a1 + 13), *(_WORD *)(a1 + 3), *(_WORD *)(a1 + 7)); sub_494EA0((void *)v4, 944); sub_507950(*(void **)(v4 + 68), "Guild/GuildTournament", v4); sub_49D420((void *)(*(_DWORD *)(v4 + 20) + 1072), *(_DWORD *)(v4 + 20)); sub_4D57B0(&v47, &v48); v24 = *(void **)(v4 + 68); LOBYTE(v50) = 3; sub_5071A0(v24, (int)"Guild/GuildTournament", &v47, v4); v25 = off_849C18; *(_WORD *)off_849C18 = 29894; *((_BYTE *)v25 + 2) = *(_BYTE *)a1; *(_DWORD *)((char *)v25 + 3) = *(_DWORD *)(a1 + 9); v45 = (int)v25; if ( sub_4C81E0(&off_849C18, 7) ) { v26 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v26); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::wms_GuildTournamantStart : Packet Too Long", 7); } *(_DWORD *)(v45 + 3) = *(_DWORD *)(a1 + 13); if ( sub_4C81E0(&off_849C18, 7) ) { v27 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v27); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::wms_GuildTournamantStart : Packet Too Long", 7); } sub_463AC0( (void *)v4, *(_DWORD *)(a1 + 9), *(_DWORD *)(a1 + 13), (unsigned __int8)byte_D554070[13 * *(_BYTE *)a1], *(_BYTE *)a1); LOBYTE(v50) = 1; nullsub_2(&v47); } else { v5 = 9 * *(_BYTE *)a1; dword_D553BF0[9 * *(_BYTE *)a1] = *(_DWORD *)a1; dword_D553BF4[v5] = *(_DWORD *)(a1 + 4); v6 = &dword_D553BF0[v5]; v6[2] = *(_DWORD *)(a1 + 8); v6[3] = *(_DWORD *)(a1 + 12); *((_BYTE *)v6 + 16) = *(_BYTE *)(a1 + 16); v7 = &byte_D554071[13 * *(_BYTE *)a1]; v8 = 9 * *(_BYTE *)a1; dword_D553C01[9 * *(_BYTE *)a1] = *(_DWORD *)v7; v9 = *((_DWORD *)v7 + 1); v10 = *((_DWORD *)v7 + 2); v11 = &dword_D553C01[v8]; v11[1] = v9; v12 = dword_14D129E8; v11[2] = v10; dword_D553C10[9 * *(_BYTE *)a1] = v12; byte_D553C0D[36 * *(_BYTE *)a1] = v4; } LOBYTE(v50) = 0; sub_4646E0((int)&v46); v28 = sub_639620(&unk_14D20404, (unsigned __int8 *)v2); if ( v28 == -1 ) LOWORD(v28) = -1; v28 = (unsigned __int16)v28; if ( (unsigned __int16)v28 < dword_14D20400 && *(_DWORD *)(dword_14D203FC + 4 * v28) ) { v29 = dword_13253824; v30 = *(_WORD *)(*(_DWORD *)(dword_13253824 + 8) + 12 * *(_WORD *)(dword_13253824 + 14) + 4); while ( 1 ) { v31 = *(_WORD *)(v29 + 4); if ( v30 >= v31 ) break; v32 = *(_DWORD *)(v29 + 8); v33 = v30; v34 = v30; v30 = *(_WORD *)(v32 + 12 * v30 + 4); if ( v34 >= v31 || (v35 = *(_BYTE *)(v32 + 12 * v33 + 8) == 0, v36 = v32 + 12 * v33, v35) ) v37 = 0; else v37 = *(_DWORD *)v36; (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v37 + 2344))(v37, a1, *(_BYTE *)a1); } } } else { sub_639100(&unk_86DDD8, (int)"const FieldOption::GuildTournamentMapStr *gtms NULL", 0); } --dword_750CB8; v50 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_GuildTournamantStart"); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // D0203F0: using guessed type int dword_D0203F0; // D0203F4: using guessed type int dword_D0203F4; // D553BF0: using guessed type int dword_D553BF0[]; // D553BF4: using guessed type int dword_D553BF4[]; // D553BF8: using guessed type int dword_D553BF8[]; // D553BFC: using guessed type int dword_D553BFC[]; // D553C01: using guessed type int dword_D553C01[]; // D553C05: using guessed type int dword_D553C05[]; // D553C09: using guessed type int dword_D553C09[]; // D553C10: using guessed type int dword_D553C10[]; // 13253824: using guessed type int dword_13253824; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00476710) -------------------------------------------------------- int __thiscall sub_476710(void *this) { void *v1; // esi@1 int v2; // ST04_4@4 int v3; // eax@4 __int16 v4; // di@5 int v5; // eax@5 int result; // eax@9 int (__stdcall **v7)(int, int); // [sp+Ch] [bp-20h]@5 int v8; // [sp+10h] [bp-1Ch]@5 __int16 v9; // [sp+14h] [bp-18h]@5 unsigned int v10; // [sp+18h] [bp-14h]@5 int v11; // [sp+1Ch] [bp-10h]@4 int v12; // [sp+28h] [bp-4h]@5 v1 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 2072))() && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2096))(v1) && *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2096))(v1) != -1 ) { v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2096))(v1); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(v1); v11 = sub_4744E0(&dword_D41F888, v3, v2); if ( v11 ) { v4 = *(_WORD *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2096))(v1); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(v1); v7 = &off_6B3DF0; v8 = v5; v9 = v4; v10 = 0; v12 = 0; sub_43C470(dword_13253824, (int)&v7); if ( v10 <= 1 ) sub_473AB0(v11); v12 = -1; v7 = &off_6B22DC; } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2100))(v1, 65535); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2096))(v1); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2096))(v1); if ( *(_WORD *)result != -1 ) result = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2100))(v1, 65535); } return result; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6B3DF0: using guessed type int (__stdcall *off_6B3DF0)(int, int); // D41F888: using guessed type int dword_D41F888; // 13253824: using guessed type int dword_13253824; //----- (00476860) -------------------------------------------------------- int __thiscall sub_476860(void *this, int a2) { void *v2; // esi@1 int v3; // ST04_4@1 int v4; // eax@1 int v5; // eax@1 void *v6; // ecx@2 __int16 v7; // ax@3 int v8; // edi@4 int v10; // [sp-8h] [bp-24h]@2 int v11; // [sp-4h] [bp-20h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2096))(v2); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2072))(v2); v5 = sub_4744E0(&dword_D41F888, v4, v3); if ( v5 ) { v11 = (int)v2; v10 = a2; v6 = (void *)v5; LABEL_7: sub_473DB0(v6, v10, v11); goto LABEL_8; } v7 = word_D41F894; if ( word_D41F894 != -1 ) { *((_WORD *)v2 + 42188) = word_D41F894; v8 = (*(int (__thiscall **)(_DWORD, _DWORD))(dword_D41F888 + 8))(&dword_D41F888, (unsigned __int16)v7); if ( v8 ) { *(_DWORD *)(v8 + 4200) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2072))(v2); sub_473AC0(v8); v11 = (int)v2; v10 = a2; v6 = (void *)v8; goto LABEL_7; } } sub_473F20(v2, 4673); LABEL_8: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D41F888: using guessed type int dword_D41F888; // D41F894: using guessed type __int16 word_D41F894; //----- (00476990) -------------------------------------------------------- int __cdecl sub_476990() { int v0; // esi@1 int (__stdcall **v2)(int, int); // [sp+Ch] [bp-22Ch]@4 int v3; // [sp+10h] [bp-228h]@4 int (__thiscall *v4)(int, int, int, int); // [sp+14h] [bp-224h]@4 char *v5; // [sp+18h] [bp-220h]@4 int v6; // [sp+1Ch] [bp-21Ch]@4 __int16 v7; // [sp+20h] [bp-218h]@4 int v8; // [sp+24h] [bp-214h]@1 char v9; // [sp+28h] [bp-210h]@4 unsigned int v10; // [sp+228h] [bp-10h]@1 int v11; // [sp+234h] [bp-4h]@1 int v12; // [sp+238h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_GuildTournamentCheck"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_GuildTournamentCheck"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v0 = (int)dword_D553C01; v8 = 32; do { if ( *(_BYTE *)(v0 - 17) != -1 && !*(_BYTE *)(v0 + 12) ) { sub_465590((int)&v9, v0); v2 = &off_6A4700; v3 = (int)&unk_CFCF380; v4 = sub_4521E0; v5 = &v9; v6 = 0; v7 = -1; LOBYTE(v11) = 2; sub_43C470((int)&unk_CFCF380, (int)&v2); LOBYTE(v11) = 1; v2 = &off_6A2544; if ( v6 && !*(_WORD *)(*(_DWORD *)(v6 + 68) + 20) ) sub_475290((void *)v6, 0, 0); LOBYTE(v11) = 0; sub_4646E0((int)&v9); } v0 += 36; --v8; } while ( v8 ); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_GuildTournamentCheck"); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D553C01: using guessed type int dword_D553C01[]; //----- (00476B00) -------------------------------------------------------- int __stdcall sub_476B00(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int v5; // ebx@6 int v6; // edi@6 __int64 v7; // qax@6 __int64 v9; // [sp-8h] [bp-28h]@4 int v10; // [sp-4h] [bp-24h]@9 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_4744E0(&dword_D41F888, *(_DWORD *)(a1 + 2), (int)&a1); v4 = v3; if ( v3 && *(_DWORD *)(v3 + 4200) == *(_DWORD *)(v2 + 2) ) { if ( (unsigned __int64)sub_473B20(v3) >= *(_QWORD *)(v2 + 6) ) v9 = sub_473B20(v4) - *(_QWORD *)(v2 + 6); else v9 = 0i64; sub_473B30(v4, v9, SHIDWORD(v9)); v5 = *(_DWORD *)(v2 + 14); v6 = *(_DWORD *)(v2 + 18); v7 = sub_473B20(v4); if ( (_DWORD)v7 != v5 || HIDWORD(v7) != v6 ) sub_473B30(v4, v5, v6); v10 = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"; } else { v10 = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D41F888: using guessed type int dword_D41F888; //----- (00476C10) -------------------------------------------------------- int __thiscall sub_476C10(int this, int a2, unsigned int a3, int a4) { int v4; // edx@1 unsigned int v5; // eax@1 int v6; // esi@1 int v7; // ebx@3 unsigned int v8; // eax@3 unsigned int v9; // eax@5 int v10; // edi@8 unsigned int v11; // ecx@10 int v12; // ecx@13 int result; // eax@16 int v14; // eax@20 bool v15; // cf@22 v4 = a2; v5 = *(_DWORD *)(a2 + 16); v6 = this; if ( v5 < a3 ) sub_6517D8((int)"invalid string position"); v7 = a4; v8 = v5 - a3; if ( v8 < a4 ) v7 = v8; v9 = *(_DWORD *)(this + 16); if ( -1 - v9 <= v7 ) sub_65178B((int)"string too long"); if ( !v7 ) return v6; v10 = v9 + v7; if ( v9 + v7 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v11 = *(_DWORD *)(this + 20); if ( v11 < v10 ) { sub_423480(v9, v6, v9 + v7, v9); v4 = a2; if ( v10 ) { LABEL_12: if ( *(_DWORD *)(v4 + 20) < 0x10u ) v12 = v4; else v12 = *(_DWORD *)v4; if ( *(_DWORD *)(v6 + 20) < 0x10u ) v14 = v6; else v14 = *(_DWORD *)v6; memmove((void *)(v14 + *(_DWORD *)(v6 + 16)), (const void *)(a3 + v12), v7); v15 = *(_DWORD *)(v6 + 20) < 0x10u; *(_DWORD *)(v6 + 16) = v10; if ( !v15 ) { *(_BYTE *)(*(_DWORD *)v6 + v10) = 0; return v6; } *(_BYTE *)(v6 + v10) = 0; } return v6; } if ( v10 ) goto LABEL_12; *(_DWORD *)(v6 + 16) = 0; if ( v11 < 0x10 ) { result = v6; *(_BYTE *)v6 = 0; } else { **(_BYTE **)v6 = 0; result = v6; } return result; } //----- (00476D00) -------------------------------------------------------- int __stdcall sub_476D00(int a1, int a2) { int v2; // esi@1 int v3; // ecx@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = *(_BYTE *)(a1 + 2); if ( *(_BYTE *)(a1 + 2) <= 0x20u ) { if ( LOBYTE(dword_D553BF0[9 * v3]) != -1 ) { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD : Seed not empty. May be RE-Match.", 0); LOBYTE(dword_D553BF0[9 * *(_BYTE *)v2]) = -1; } *(_WORD *)(a1 + 3) = (unsigned __int8)byte_D554070[13 * *(_BYTE *)(a1 + 2)]; sub_4760D0(v2); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD : Invalid seed", v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D553BF0: using guessed type int dword_D553BF0[]; //----- (00476E10) -------------------------------------------------------- FILE *__thiscall sub_476E10(int this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // ecx@1 int v6; // edi@2 FILE *result; // eax@3 v4 = this; v5 = *(void **)(this + 122); if ( v5 && (v6 = sub_4627E0(v5)) != 0 ) { sub_4794B0(v6, v4, (int)sub_476060); if ( sub_47AAA0((void *)v6, v4, *(_WORD *)(a2 + 2)) ) sub_474EC0((void *)v4, 6976, *(_WORD *)(a2 + 2)); result = (FILE *)sub_4794F0(v6); } else { result = sub_476060((void *)v4, 6978); } return result; } //----- (00476E90) -------------------------------------------------------- FILE *__thiscall sub_476E90(int this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // ecx@1 int v6; // esi@2 FILE *result; // eax@3 v4 = this; v5 = *(void **)(this + 122); if ( v5 && (v6 = sub_4627E0(v5)) != 0 ) { sub_4794B0(v6, v4, (int)sub_475120); sub_479FB0((void *)v6, v4); result = (FILE *)sub_4794F0(v6); } else { result = sub_475120((void *)v4, 6978); } return result; } //----- (00476EF0) -------------------------------------------------------- signed int __thiscall sub_476EF0(int this) { int v1; // esi@1 int v2; // edi@1 v1 = this; v2 = sub_4627E0(*(void **)(this + 122)); if ( v2 ) { sub_4794B0(v2, v1, (int)sub_474FC0); if ( sub_47DB70((void *)v2, v1, *(_WORD *)(v1 + 24158)) ) sub_474FC0((void *)v1, 6976); sub_4794F0(v2); *(_WORD *)(v1 + 24158) = -1; } return 1; } //----- (00476F60) -------------------------------------------------------- int __thiscall sub_476F60(int this, char *a2, int a3) { char *v3; // edx@1 int v4; // esi@1 unsigned int v5; // ecx@2 unsigned int v6; // eax@3 int v7; // eax@7 int result; // eax@11 unsigned int v9; // eax@13 int v10; // edi@16 unsigned int v11; // ecx@18 int v12; // eax@21 bool v13; // cf@27 v3 = a2; v4 = this; if ( a2 ) { v5 = *(_DWORD *)(this + 20); v6 = v5 < 0x10 ? v4 : *(_DWORD *)v4; if ( (unsigned int)a2 >= v6 ) { v7 = v5 < 0x10 ? v4 : *(_DWORD *)v4; if ( v7 + *(_DWORD *)(v4 + 16) > (unsigned int)a2 ) { if ( v5 < 0x10 ) result = sub_476C10(v4, v4, (unsigned int)&a2[-v4], a3); else result = sub_476C10(v4, v4, (unsigned int)&a2[-*(_DWORD *)v4], a3); return result; } } } v9 = *(_DWORD *)(v4 + 16); if ( -1 - v9 <= a3 ) sub_65178B((int)"string too long"); if ( !a3 ) return v4; v10 = v9 + a3; if ( v9 + a3 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v11 = *(_DWORD *)(v4 + 20); if ( v11 < v10 ) { sub_423480(v9, v4, v9 + a3, v9); v3 = a2; if ( v10 ) { LABEL_20: if ( *(_DWORD *)(v4 + 20) < 0x10u ) v12 = v4; else v12 = *(_DWORD *)v4; memmove((void *)(v12 + *(_DWORD *)(v4 + 16)), v3, a3); v13 = *(_DWORD *)(v4 + 20) < 0x10u; *(_DWORD *)(v4 + 16) = v10; if ( !v13 ) { *(_BYTE *)(*(_DWORD *)v4 + v10) = 0; return v4; } *(_BYTE *)(v4 + v10) = 0; } return v4; } if ( v10 ) goto LABEL_20; *(_DWORD *)(v4 + 16) = 0; if ( v11 < 0x10 ) { result = v4; *(_BYTE *)v4 = 0; } else { **(_BYTE **)v4 = 0; result = v4; } return result; } //----- (00477080) -------------------------------------------------------- FILE *__userpurge sub_477080(int a1, int a2, __int16 a3) { int v3; // esi@1 void *v4; // ecx@1 int v5; // eax@2 void *v6; // edi@2 FILE *result; // eax@3 char v8; // al@19 void *v9; // ecx@19 char v10; // al@21 int v11; // eax@22 int v12; // eax@35 v3 = a1; v4 = *(void **)(a1 + 122); if ( v4 && (v5 = sub_4627E0(v4), (v6 = (void *)v5) != 0) ) { if ( sub_4787D0((void *)v5, v3, a3) ) { result = sub_474FC0((void *)v3, 6984); } else { if ( sub_479420(v6, v3) ) { result = (FILE *)sub_54DE90(&unk_13253630, a3); if ( result ) { if ( (unsigned int)sub_402710((int)result, v3) <= 0x2710 ) { if ( !(dword_D553BE8 & 1) ) { dword_D553BE8 |= 1u; word_D553BE4 = 64; atexit(nullsub_53); } if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3)) & (unsigned __int16)word_D553BE4 ) { if ( sub_45CDE0(v3) == 2 ) sub_45D1C0(v3, v3, 0); else sub_45F070((void *)v3); } if ( !(dword_D553BE8 & 2) ) { dword_D553BE8 |= 2u; word_D553BE0 = 56; atexit(nullsub_52); } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3); v9 = (void *)v3; if ( (1 << v8) & (unsigned __int16)word_D553BE0 || (v10 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 996))(v3, 291), v9 = (void *)v3, v10) ) { result = sub_474FC0(v9, 6981); } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1072))(v3); if ( (unsigned __int8)sub_4C8380(v11) || *(_BYTE *)(v3 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3864))(v3) ) { result = sub_474FC0((void *)v3, 6981); } else { if ( *(_WORD *)(v3 + 24158) == -1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 3736))(v3, a2) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2256))(v3); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 996))(v3, 75) ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1616))(v3, 75); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 996))(v3) ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1616))(v3, 373); sub_474FC0((void *)v3, 6976); sub_475030(v3, 6976); sub_42A8B0(v3 + 160796, (int)sub_476EF0, 0, 1, 4000); *(_WORD *)(v3 + 24158) = a3; *(_DWORD *)off_849C18 = &unk_FA02047; if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); result = (FILE *)(*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))( v12, v3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_FlagCaptureCast : Packet Too Long", 4); } } else { result = sub_474FC0((void *)v3, 6982); } } } } else { result = sub_474FC0((void *)v3, 6994); } } } else { result = sub_474FC0((void *)v3, 6991); } } } else { result = sub_474FC0((void *)v3, 6978); } return result; } // 477080: could not find valid save-restore pair for ebx // D553BE0: using guessed type __int16 word_D553BE0; // D553BE4: using guessed type __int16 word_D553BE4; // D553BE8: using guessed type int dword_D553BE8; //----- (00477360) -------------------------------------------------------- char __cdecl sub_477360(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748008 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_74800C ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 4); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748008: using guessed type int dword_748008; // 74800C: using guessed type int dword_74800C; // 86FEB8: using guessed type int __security_cookie; //----- (00477490) -------------------------------------------------------- char __cdecl sub_477490(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748000 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_748004 ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 13) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 13); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748000: using guessed type int dword_748000; // 748004: using guessed type int dword_748004; // 86FEB8: using guessed type int __security_cookie; //----- (004775C0) -------------------------------------------------------- int __thiscall sub_4775C0(int this, int a2) { int v2; // eax@1 int v3; // esi@2 v2 = (unsigned __int8)byte_D554070[13 * *(_WORD *)(this + 1)]; if ( v2 >= dword_D0203F4 ) { v3 = 0; LABEL_4: sub_477360(a2, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); return v3; } v3 = *(_DWORD *)(dword_D0203F0 + 4 * v2); if ( !v3 ) goto LABEL_4; return v3; } // D0203F0: using guessed type int dword_D0203F0; // D0203F4: using guessed type int dword_D0203F4; //----- (00477610) -------------------------------------------------------- int __thiscall sub_477610(int this, int a2) { int v2; // eax@1 unsigned __int8 *v3; // esi@2 signed int v5; // eax@6 int v6; // esi@9 v2 = (unsigned __int8)byte_D554070[13 * *(_WORD *)(this + 1)]; if ( v2 < dword_D0203F4 ) { v3 = *(unsigned __int8 **)(dword_D0203F0 + 4 * v2); if ( v3 ) goto LABEL_6; } else { v3 = 0; } sub_477360(a2, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); if ( !v3 ) return 0; LABEL_6: v5 = sub_639620(&unk_14D20404, v3); if ( v5 == -1 ) LOWORD(v5) = -1; v5 = (unsigned __int16)v5; if ( (unsigned __int16)v5 >= dword_14D20400 ) { v6 = 0; LABEL_11: sub_477360(a2, 5187, "GuildTouramentLoginDataInfo::GetMapInfo"); return v6; } v6 = *(_DWORD *)(dword_14D203FC + 4 * v5); if ( !v6 ) goto LABEL_11; return v6; } // D0203F0: using guessed type int dword_D0203F0; // D0203F4: using guessed type int dword_D0203F4; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (004776B0) -------------------------------------------------------- int __thiscall sub_4776B0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 unsigned __int8 v6; // al@3 int v7; // ebx@5 int v8; // eax@8 int v9; // eax@15 int v10; // eax@20 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 29853; if ( !*(_BYTE *)(a2 + 2) ) { *((_WORD *)v5 + 1) = 5184; goto LABEL_18; } v6 = *(_BYTE *)(v4 + 24166); if ( v6 == -1 || v6 >= 0x20u ) { *((_WORD *)v5 + 1) = 5185; LABEL_18: if ( sub_4C81E0(&off_849C18, 4) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12))(v10, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ : Packet Too Long", 4); } goto LABEL_21; } v7 = (int)&dword_D553BF0[9 * v6]; if ( sub_474AE0(v7) ) { if ( sub_4775C0(v7, v4) != 0 ) { if ( sub_477610((int)&dword_D553BF0[9 * *(_BYTE *)(v4 + 24166)], v4) ) { *((_WORD *)v5 + 1) = 5184; if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ : Packet Too Long", 4); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2340))( v4, &dword_D553BF0[9 * *(_BYTE *)(v4 + 24166)], 0, 0); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ", 0); } } else { *((_WORD *)v5 + 1) = 5188; if ( sub_4C81E0(&off_849C18, 4) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ : Packet Too Long", 4); } } LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D553BF0: using guessed type int dword_D553BF0[]; //----- (00477900) -------------------------------------------------------- char __thiscall sub_477900(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 const char *v5; // edi@2 int v6; // eax@5 int v7; // ecx@5 int v8; // eax@5 const char *v9; // edi@6 signed int v10; // edi@10 int v12; // [sp+Ch] [bp-70h]@9 char v13; // [sp+14h] [bp-68h]@12 int v14; // [sp+28h] [bp-54h]@5 int v15; // [sp+2Ch] [bp-50h]@5 int v16; // [sp+30h] [bp-4Ch]@5 char v17; // [sp+34h] [bp-48h]@5 char v18; // [sp+49h] [bp-33h]@5 char v19; // [sp+55h] [bp-27h]@5 int v20; // [sp+6Ah] [bp-12h]@12 int v21; // [sp+6Eh] [bp-Eh]@12 char v22; // [sp+74h] [bp-8h]@12 unsigned int v23; // [sp+78h] [bp-4h]@1 int v24; // [sp+7Ch] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v3 = this; v4 = (unsigned __int8)byte_D554070[13 * *(_WORD *)(this + 1)]; if ( v4 < dword_D0203F4 ) { v5 = *(const char **)(dword_D0203F0 + 4 * v4); if ( v5 ) goto LABEL_5; } else { v5 = 0; } sub_477360(a3, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); LABEL_5: v6 = *(_DWORD *)(v3 + 21); v7 = *(_DWORD *)(v3 + 25); v14 = *(_DWORD *)(v3 + 17); v15 = v6; v16 = v7; strncpy(&v18, v5, 0xCu); v8 = (unsigned __int8)byte_D554070[13 * *(_WORD *)(v3 + 1)]; v19 = 0; v17 = 0; if ( v8 < dword_D0203F4 ) { v9 = *(const char **)(dword_D0203F0 + 4 * v8); if ( v9 ) goto LABEL_9; } else { v9 = 0; } sub_477360(a3, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); if ( !v9 ) return 0; LABEL_9: v12 = sub_63AB60(&unk_CFCF398, v9); if ( !v12 ) return 0; v10 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2072))(a3) == *(_DWORD *)(v3 + 13) ) v10 = 1; v20 = *(_DWORD *)(v12 + 8 * v10 + 122); v21 = *(_DWORD *)(v12 + 8 * v10 + 126); memcpy((void *)a2, &v13, 0x60u); *(_BYTE *)(a2 + 96) = v22; return 1; } // 86FEB8: using guessed type int __security_cookie; // D0203F0: using guessed type int dword_D0203F0; // D0203F4: using guessed type int dword_D0203F4; //----- (00477A40) -------------------------------------------------------- int __thiscall sub_477A40(void *this, int a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 int v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 char v8; // [sp+10h] [bp-74h]@10 unsigned int v9; // [sp+74h] [bp-10h]@1 int v10; // [sp+80h] [bp-4h]@1 int v11; // [sp+84h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v4 = (unsigned int)&v11 ^ __security_cookie; v5 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Summon2GuildTournament"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Summon2GuildTournament"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 768); v10 = 0; if ( !(unsigned __int8)v6(v5, v4) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1156))(v5) != 3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1156))(v5) != 5 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1156))(v5) != 7 && ((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2072))(v5) == *(_DWORD *)(a2 + 9) || (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2072))(v5) == *(_DWORD *)(a2 + 13)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1160))(v5); if ( sub_477900((int)&dword_D553BF0[9 * *(_BYTE *)a2], (int)&v8, v5) ) (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v5 + 1536))( v5, &v8, 6, 9, 10); } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Summon2GuildTournament"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D553BF0: using guessed type int dword_D553BF0[]; //----- (00477BB0) -------------------------------------------------------- char __thiscall sub_477BB0(void *this, signed int a2) { void *v2; // esi@1 int v3; // edi@1 char result; // al@3 int v5; // ebx@10 int v6; // eax@13 int v7; // ST0C_4@14 int v8; // ST08_4@14 char *v9; // eax@14 int v10; // ebx@14 void *v11; // eax@17 int v12; // esi@17 void (__thiscall *v13)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@19 int v14; // eax@20 int v15; // eax@20 int v16; // eax@22 int v17; // eax@26 unsigned int v18; // [sp-4h] [bp-88h]@1 int v19; // [sp-4h] [bp-88h]@3 char v20; // [sp+10h] [bp-74h]@10 char v21; // [sp+24h] [bp-60h]@14 unsigned int v22; // [sp+74h] [bp-10h]@1 int v23; // [sp+80h] [bp-4h]@17 int v24; // [sp+84h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v18 = (unsigned int)&v24 ^ __security_cookie; v2 = off_849C18; v3 = (int)this; *(_WORD *)off_849C18 = 29912; if ( a2 == 255 || a2 >= 32 ) { *((_WORD *)v2 + 1) = 6978; if ( sub_4C81E0(&off_849C18, 13) ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); result = (*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v17 + 12))(v17, v3, &off_849C18); } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ : Packet Too Long", 13); } } else { result = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)this + 1156))(v18); if ( result ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3); if ( result != 3 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3); if ( result != 5 ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3); if ( result != 7 ) { result = (*(int (__thiscall **)(int, int, signed int, signed int, _DWORD))(*(_DWORD *)v3 + 1604))( v3, v3, 289, 1, 0); if ( result ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1160))(v3); v5 = 9 * a2; result = sub_477900((int)&dword_D553BF0[9 * a2], (int)&v20, v3); if ( result ) { *((_WORD *)v2 + 1) = 6976; *((_BYTE *)v2 + 4) = a2; *(_DWORD *)((char *)v2 + 5) = *(int *)((char *)&dword_D553BF8[v5] + 1); *(_DWORD *)((char *)v2 + 9) = *(int *)((char *)&dword_D553BFC[v5] + 1); if ( sub_4C81E0(&off_849C18, 13) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ : Packet Too Long", 13); } v7 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); v8 = sub_639620(&unk_CFCDD68, (unsigned __int8 *)&v21); v9 = sub_5A7570(byte_14D16AE8); v10 = sub_63AC00(&unk_CFCF398, v9, v8, v7); if ( v10 != -1 ) { if ( v10 == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v11 = (void *)operator new(0x68u); v12 = 0; v23 = 0; if ( v11 ) v12 = (int)sub_4443D0(v11, v3); v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1536); v23 = -1; v13(v3, &v20, 6, 9, 10); result = sub_56E820(v3, v12); } else { *(_WORD *)v2 = 16409; *((_WORD *)v2 + 1) = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 832))(v3, v19); v14 = *(_DWORD *)(v3 + 102); *((_DWORD *)v2 + 5) = *(_DWORD *)v14; *((_DWORD *)v2 + 6) = *(_DWORD *)(v14 + 4); v15 = *(_DWORD *)(v3 + 122); *((_DWORD *)v2 + 2) = *(_DWORD *)v15; *((_DWORD *)v2 + 3) = *(_DWORD *)(v15 + 4); *((_DWORD *)v2 + 4) = *(_DWORD *)(v15 + 8); *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); if ( sub_4C81E0(&off_849C18, 28) ) { v16 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", 28); } result = (*(int (__thiscall **)(int, char *, signed int, signed int))(*(_DWORD *)v3 + 1536))( v3, &v20, 6, 9); } } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : machine number", v10); } } } } } } } } return result; } // 86FEB8: using guessed type int __security_cookie; // D553BF0: using guessed type int dword_D553BF0[]; // D553BF8: using guessed type int dword_D553BF8[]; // D553BFC: using guessed type int dword_D553BFC[]; // 14D12A00: using guessed type int dword_14D12A00; //----- (00477ED0) -------------------------------------------------------- int __stdcall sub_477ED0(int a1, int a2) { int v2; // esi@1 int v3; // eax@2 char v4; // al@5 int v5; // ecx@6 __int16 v6; // ax@7 __int16 v8; // [sp-8h] [bp-24h]@11 char *v9; // [sp-4h] [bp-20h]@11 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 5)); if ( v2 ) { v3 = (**(int (__thiscall ***)(_DWORD))v2)(v2); if ( v3 ) { while ( (_UNKNOWN *)v3 != &unk_132541F4 ) { v3 = *(_DWORD *)(v3 + 4); if ( !v3 ) goto LABEL_5; } v4 = 1; } else { LABEL_5: v4 = 0; } v5 = v4 != 0 ? v2 : 0; if ( v4 != 0 ? v2 : 0 ) { v6 = *(_WORD *)(a1 + 2); if ( 7008 != v6 ) { if ( 7009 == v6 ) { v9 = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK"; v8 = 7009; } else { if ( 7010 != v6 ) goto LABEL_15; v9 = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK"; v8 = 6996; } sub_477490(v5, v8, v9); goto LABEL_15; } sub_477BB0((void *)v5, *(_BYTE *)(a1 + 4)); } } LABEL_15: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00478010) -------------------------------------------------------- void *__thiscall sub_478010(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B499C; if ( a2 & 1 ) operator delete(this); return v2; } // 6B499C: using guessed type int (__thiscall *off_6B499C)(void *, char); //----- (00478040) -------------------------------------------------------- void *__thiscall sub_478040(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B49A8; if ( a2 & 1 ) operator delete(this); return v2; } // 6B49A8: using guessed type int (__thiscall *off_6B49A8)(void *, char); //----- (00478070) -------------------------------------------------------- bool __cdecl sub_478070(int a1, int a2) { return *(_DWORD *)(a1 + 4) < *(_DWORD *)(a2 + 4); } //----- (004780A0) -------------------------------------------------------- bool __thiscall sub_4780A0(int this, int a2, int a3) { int v3; // eax@1 v3 = *(_DWORD *)(this + 28); return v3 == a2 && *(_DWORD *)(this + 208) == a3 || v3 == a3 && *(_DWORD *)(this + 208) == a2; } //----- (004780E0) -------------------------------------------------------- signed int __thiscall sub_4780E0(int this, int a2) { int v2; // edi@1 signed int result; // eax@2 v2 = this; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2) == *(_DWORD *)(this + 28) ) result = 0; else result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2) != *(_DWORD *)(v2 + 208) ? 100 : 1; return result; } //----- (00478130) -------------------------------------------------------- int __cdecl sub_478130(void *a1) { void *v1; // esi@1 char v3; // [sp+Ch] [bp-18h]@1 int v4; // [sp+20h] [bp-4h]@1 v1 = off_849C18; *(_WORD *)off_849C18 = 7177; *((_BYTE *)v1 + 2) = 1; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)a1 + 1220))(a1, (char *)v1 + 3); sub_4287B0(&v3, &off_849C18, 149 * *((_BYTE *)v1 + 2) + 3); v4 = 0; sub_549B60(a1, (int)&v3, 1); v4 = -1; return sub_428A70(&v3); } //----- (004781E0) -------------------------------------------------------- char __thiscall sub_4781E0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@1 int v6; // esi@1 v4 = this; v5 = a2; *(_DWORD *)(this + 4) = a3; *(_DWORD *)(this + 8) = a4; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; sub_650330(this + 24, a2); sub_58FC60(v4 + 24, 1); v6 = v4 + 40; if ( a2 > 50 ) v5 = a2 - 50; sub_650330(v6, v5); sub_58FC60(v6, 1); return 1; } //----- (00478240) -------------------------------------------------------- int __stdcall sub_478240(int a1, int a2) { int result; // eax@1 void *v3; // esi@1 void *v4; // edi@2 int v5; // eax@2 char v6; // [sp+Ch] [bp-18h]@2 int v7; // [sp+20h] [bp-4h]@2 result = sub_54E4D0(&unk_13253630, a1); v3 = (void *)result; if ( result ) { v4 = off_849C18; *(_WORD *)off_849C18 = 29909; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)result + 2072))(result); *(_DWORD *)((char *)v4 + 6) = a2; *(_DWORD *)((char *)v4 + 2) = v5; sub_4287B0(&v6, &off_849C18, 10); v7 = 0; sub_549B60(v3, (int)&v6, 1); v7 = -1; result = sub_428A70(&v6); } return result; } //----- (004782F0) -------------------------------------------------------- bool __thiscall sub_4782F0(int this) { return !*(_DWORD *)this && !*(_DWORD *)(this + 4); } //----- (00478310) -------------------------------------------------------- void *__thiscall sub_478310(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 69) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 69) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 69); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 69); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (00478360) -------------------------------------------------------- int __cdecl sub_478360() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_D554210 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // D554210: using guessed type int dword_D554210; //----- (00478380) -------------------------------------------------------- int __cdecl sub_478380() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_D554214 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // D554214: using guessed type int dword_D554214; //----- (004783A0) -------------------------------------------------------- void *__thiscall sub_4783A0(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 69) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 69) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 69) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 69) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 69); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 69) ) goto LABEL_11; return result; } //----- (00478400) -------------------------------------------------------- int __cdecl sub_478400(int a1, int a2, int a3) { int v3; // eax@1 int result; // eax@1 v3 = (*(int (**)(void))(*(_DWORD *)a2 + 1388))(); *(_DWORD *)a1 = *(_DWORD *)v3; *(_DWORD *)(a1 + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(a1 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(a1 + 12) = *(_DWORD *)(v3 + 12); *(_DWORD *)(a1 + 16) = *(_DWORD *)(v3 + 16); *(_DWORD *)(a1 + 40) = *(_DWORD *)(a3 + 24); *(_DWORD *)(a1 + 24) = *(_DWORD *)(a3 + 12); *(_DWORD *)(a1 + 28) = *(_DWORD *)(a3 + 16); *(_DWORD *)(a1 + 36) = *(_DWORD *)(a3 + 4); *(_DWORD *)(a1 + 20) = *(_DWORD *)(a3 + 8); result = *(_DWORD *)(a3 + 20); *(_DWORD *)(a1 + 32) = result; return result; } //----- (00478460) -------------------------------------------------------- int __thiscall sub_478460(int this) { unsigned int v1; // eax@1 unsigned int v2; // edx@1 int result; // eax@2 v1 = *(_DWORD *)(this + 268); v2 = *(_DWORD *)(this + 88); if ( v2 <= v1 ) { if ( v2 >= v1 ) result = 0; else result = *(_DWORD *)(this + 208); } else { result = *(_DWORD *)(this + 28); } return result; } //----- (00478480) -------------------------------------------------------- int __thiscall sub_478480(int this) { unsigned int v1; // eax@1 unsigned int v2; // edx@1 int result; // eax@2 v1 = *(_DWORD *)(this + 268); v2 = *(_DWORD *)(this + 88); if ( v2 <= v1 ) { if ( v2 >= v1 ) result = 0; else result = *(_DWORD *)(this + 28); } else { result = *(_DWORD *)(this + 208); } return result; } //----- (004784A0) -------------------------------------------------------- unsigned int __thiscall sub_4784A0(int this, unsigned int a2) { if ( (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 28 <= a2 ) sub_6517D8((int)"invalid vector subscript"); return *(_DWORD *)this + 28 * a2; } //----- (004784E0) -------------------------------------------------------- unsigned int __thiscall sub_4784E0(int this, unsigned int a2) { if ( (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 4 <= a2 ) sub_6517D8((int)"invalid vector subscript"); return *(_DWORD *)this + 16 * a2; } //----- (00478510) -------------------------------------------------------- unsigned int __thiscall sub_478510(int this, unsigned int a2) { if ( (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 196 <= a2 ) sub_6517D8((int)"invalid vector subscript"); return *(_DWORD *)this + 196 * a2; } //----- (00478550) -------------------------------------------------------- int __stdcall sub_478550(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x7FFFFFFF || (result = operator new(2 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004785B0) -------------------------------------------------------- int __stdcall sub_4785B0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_5D1745D || (result = operator new(44 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00478610) -------------------------------------------------------- int __stdcall sub_478610(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_14E5E0A || (result = operator new(196 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00478670) -------------------------------------------------------- int __thiscall sub_478670(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 69) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (004786D0) -------------------------------------------------------- int __cdecl sub_4786D0(int a1) { int result; // eax@2 int v2; // eax@3 if ( a1 ) { v2 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v2 ) { while ( (_UNKNOWN *)v2 != &unk_13253E78 ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_6; } result = a1; } else { LABEL_6: result = 0; } } else { result = 0; } return result; } //----- (00478720) -------------------------------------------------------- int __cdecl sub_478720(int a1) { int result; // eax@2 int v2; // eax@3 if ( a1 ) { v2 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v2 ) { while ( (_UNKNOWN *)v2 != &unk_132460EC ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_6; } result = a1; } else { LABEL_6: result = 0; } } else { result = 0; } return result; } //----- (00478770) -------------------------------------------------------- char __thiscall sub_478770(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@2 char v6; // al@5 v4 = this; if ( a3 ) { v5 = (**(int (__thiscall ***)(_DWORD))a3)(a3); if ( v5 ) { while ( (_UNKNOWN *)v5 != &unk_132541F4 ) { v5 = *(_DWORD *)(v5 + 4); if ( !v5 ) goto LABEL_5; } v6 = 1; } else { LABEL_5: v6 = 0; } if ( v6 != 0 ? a3 : 0 ) sub_476040(v6 != 0 ? a3 : 0, *((_WORD *)v4 + 2)); } return 1; } //----- (004787D0) -------------------------------------------------------- char __thiscall sub_4787D0(void *this, int a2, __int16 a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 char result; // al@5 int v7; // ebx@8 unsigned int v8; // edi@8 int v9; // eax@8 v3 = this; v4 = (*(int (**)(void))(*(_DWORD *)a2 + 2072))(); v5 = (int)((char *)v3 + 28); if ( *((_DWORD *)v3 + 7) != v4 ) { v5 = (int)((char *)v3 + 208); if ( *((_DWORD *)v3 + 52) != v4 ) { if ( *((_DWORD *)v3 + 1) || *((_DWORD *)v3 + 2) ) { (*((void (__thiscall **)(_DWORD, _DWORD))v3 + 2))(*((_DWORD *)v3 + 1), 6991); return 0; } return 0; } } if ( !v5 ) return 0; v7 = *((_DWORD *)v3 + 3); v8 = 0; v9 = (*((_DWORD *)v3 + 4) - v7) / 196; if ( !v9 ) goto LABEL_12; if ( (unsigned int)v9 <= 0 ) sub_6517D8((int)"invalid vector subscript"); while ( *(_WORD *)(v7 + 4) != a3 ) { ++v8; v7 += 196; if ( v9 <= v8 ) goto LABEL_12; } if ( (*(int (**)(void))(*(_DWORD *)a2 + 2088))() == *(_DWORD *)v7 ) result = 1; else LABEL_12: result = 0; return result; } //----- (00478890) -------------------------------------------------------- char __thiscall sub_478890(void *this, int a2, __int16 a3, __int16 a4) { void *v4; // esi@1 int v5; // eax@2 int v6; // ecx@2 unsigned int v8; // edx@9 int v9; // eax@9 int v10; // ecx@10 v4 = this; if ( !sub_4787D0(this, a2, a3) ) return 0; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2); v6 = (int)((char *)v4 + 28); if ( *((_DWORD *)v4 + 7) != v5 ) { v6 = (int)((char *)v4 + 208); if ( *((_DWORD *)v4 + 52) != v5 ) { if ( *((_DWORD *)v4 + 1) || *((_DWORD *)v4 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v4 + 2))(*((_DWORD *)v4 + 1), 6991); return 0; } } if ( !v6 || (v8 = 0, (v9 = (*(_DWORD *)(v6 + 24) - *(_DWORD *)(v6 + 20)) >> 6) == 0) ) return 0; v10 = *(_DWORD *)(v6 + 20) + 2; while ( a4 != *(_WORD *)(v10 + 2) || a3 != *(_WORD *)v10 ) { ++v8; v10 += 64; if ( v8 >= v9 ) return 0; } return 1; } //----- (00478940) -------------------------------------------------------- int __thiscall sub_478940(int this) { int v1; // esi@1 int v2; // ecx@1 unsigned int v3; // ebx@1 int result; // eax@1 int v5; // edi@2 int v6; // eax@3 int v7; // edx@3 int v8; // eax@7 int v9; // eax@12 __int16 v10; // [sp-8h] [bp-10h]@6 v1 = this; v2 = *(_DWORD *)(this + 12); v3 = 0; result = (*(_DWORD *)(v1 + 16) - v2) / 196; if ( result ) { v5 = 0; if ( (unsigned int)result <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v6 = *(_DWORD *)(v5 + v2); v7 = v1 + 28; if ( (*(_DWORD *)(v1 + 28) == v6 || (v7 = v1 + 208, *(_DWORD *)(v1 + 208) == v6)) && v7 ) { v10 = *(_WORD *)(v5 + v2 + 4); if ( *(_DWORD *)(v7 + 144) > 1 ) { v9 = sub_54DE90(&unk_13253630, v10); if ( v9 ) (*(void (__thiscall **)(int, _DWORD, signed int, signed int, signed int))(*(_DWORD *)v9 + 1604))( v9, 0, 366, 1, 1); goto LABEL_9; } } else { v10 = *(_WORD *)(v5 + v2 + 4); } v8 = sub_54DE90(&unk_13253630, v10); if ( v8 ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 1616))(v8, 366); LABEL_9: v2 = *(_DWORD *)(v1 + 12); ++v3; result = (*(_DWORD *)(v1 + 16) - v2) / 196; v5 += 196; } while ( result > v3 ); } return result; } //----- (00478A20) -------------------------------------------------------- int __thiscall sub_478A20(void *this, unsigned __int8 *a2, int a3) { void *v3; // edi@1 int result; // eax@1 int v5; // esi@5 int v6; // eax@8 int v7; // ebx@8 int v8; // eax@9 char v9; // al@12 void *v10; // esi@13 int v11; // [sp+8h] [bp-8h]@1 int v12; // [sp+Ch] [bp-4h]@6 unsigned int v13; // [sp+18h] [bp+8h]@5 v3 = this; result = sub_418C10((int)&unk_877138, a2); v11 = result; if ( result ) { v5 = *((_DWORD *)v3 + 9); result = (*((_DWORD *)v3 + 10) - v5) / 28; v13 = 0; if ( result ) { v12 = 0; do { if ( result <= v13 ) sub_6517D8((int)"invalid vector subscript"); v6 = sub_54DE90(&unk_13253630, *(_WORD *)(v12 + v5)); v7 = v6; if ( v6 ) { v8 = (**(int (__thiscall ***)(_DWORD))v6)(v6); if ( v8 ) { while ( (_UNKNOWN *)v8 != &unk_132541F4 ) { v8 = *(_DWORD *)(v8 + 4); if ( !v8 ) goto LABEL_12; } v9 = 1; } else { LABEL_12: v9 = 0; } v10 = (void *)(v9 != 0 ? v7 : 0); if ( (v9 != 0 ? v7 : 0) && *(_DWORD *)v3 == (*(int (__thiscall **)(void *))(*(_DWORD *)v10 + 2072))(v10) && sub_55B830(v10) ) (*(void (__thiscall **)(void *, void *, _DWORD, signed int, signed int))(*(_DWORD *)v10 + 1604))( v10, v10, *(_DWORD *)(*(_DWORD *)v11 + 34), 1, 1); } v5 = *((_DWORD *)v3 + 9); v12 += 28; result = (*((_DWORD *)v3 + 10) - v5) / 28; ++v13; } while ( v13 < result ); } } else { if ( *((_DWORD *)v3 + 13) || *((_DWORD *)v3 + 14) ) result = (*((int (__thiscall **)(_DWORD, _DWORD))v3 + 14))(*((_DWORD *)v3 + 13), 6989); } return result; } //----- (00478B60) -------------------------------------------------------- int __thiscall sub_478B60(int this) { int v1; // esi@1 signed int v2; // ecx@1 int result; // eax@4 v1 = *(_DWORD *)(this + 36); v2 = *(_DWORD *)(this + 40) - v1; if ( !(v2 / 28) ) goto LABEL_9; if ( !(v2 / 28) ) sub_6517D8((int)"invalid vector subscript"); result = sub_54DE90(&unk_13253630, *(_WORD *)v1); if ( !result || *(_DWORD *)(v1 + 4) ) LABEL_9: result = 0; return result; } //----- (00478BB0) -------------------------------------------------------- int __thiscall sub_478BB0(int this) { int v1; // esi@1 int v2; // edi@1 unsigned int v3; // ebx@1 int v4; // eax@1 int result; // eax@3 int v6; // ecx@4 int v7; // edi@5 unsigned int v8; // ebx@5 int v9; // ecx@8 void *v10; // edi@13 int v11; // eax@13 int v12; // [sp+0h] [bp-34h]@0 int v13; // [sp+4h] [bp-30h]@0 int v14; // [sp+8h] [bp-2Ch]@0 int v15; // [sp+Ch] [bp-28h]@0 int v16; // [sp+10h] [bp-24h]@13 int v17; // [sp+14h] [bp-20h]@13 int v18; // [sp+18h] [bp-1Ch]@13 int v19; // [sp+1Ch] [bp-18h]@13 void *v20; // [sp+20h] [bp-14h]@3 int v21; // [sp+24h] [bp-10h]@2 int v22; // [sp+30h] [bp-4h]@13 v1 = this; v2 = *(_DWORD *)(this + 36); v3 = 0; v4 = (*(_DWORD *)(this + 40) - v2) / 28; if ( !v4 ) { LABEL_5: v7 = *(_DWORD *)(v1 + 36); v8 = 0; result = (*(_DWORD *)(v1 + 40) - v7) / 28; if ( !result ) { LABEL_9: *(_DWORD *)(v1 + 116) = 0; return result; } v21 = 0; if ( (unsigned int)result > 0 ) { while ( 1 ) { result = sub_54DE90(&unk_13253630, *(_WORD *)(v21 + v7)); if ( result ) break; v7 = *(_DWORD *)(v1 + 36); v9 = *(_DWORD *)(v1 + 40); v21 += 28; ++v8; result = (v9 - v7) / 28; if ( result <= v8 ) goto LABEL_9; } *(_DWORD *)(v1 + 116) = result; return result; } LABEL_11: sub_6517D8((int)"invalid vector subscript"); } v21 = 0; if ( (unsigned int)v4 <= 0 ) goto LABEL_11; while ( 1 ) { result = sub_54DE90(&unk_13253630, *(_WORD *)(v21 + v2)); v20 = (void *)result; if ( result ) break; v2 = *(_DWORD *)(v1 + 36); v6 = *(_DWORD *)(v1 + 40); v21 += 28; ++v3; if ( (v6 - v2) / 28 <= v3 ) goto LABEL_5; } if ( *(_DWORD *)(v1 + 116) != result ) { *(_DWORD *)(v1 + 116) = result; v10 = off_849C18; *(_WORD *)off_849C18 = 29921; v11 = (*(int (__stdcall **)(int, int, int, int, int, int, int, int, void *))(**(_DWORD **)(v1 + 116) + 1388))( v12, v13, v14, v15, v16, v17, v18, v19, v20); *(_DWORD *)((char *)v10 + 2) = *(_DWORD *)v11; *(_DWORD *)((char *)v10 + 6) = *(_DWORD *)(v11 + 4); *(_DWORD *)((char *)v10 + 10) = *(_DWORD *)(v11 + 8); *(_DWORD *)((char *)v10 + 14) = *(_DWORD *)(v11 + 12); *(_DWORD *)((char *)v10 + 18) = *(_DWORD *)(v11 + 16); sub_428A40(&v16, &off_849C18, 22, *(_DWORD *)v1); v22 = 0; sub_549B60(v20, (int)&v16, 1); v22 = -1; result = sub_428A70(&v16); } return result; } //----- (00478E90) -------------------------------------------------------- char __thiscall sub_478E90(int this, signed int a2) { int v2; // esi@1 void *v3; // eax@1 int v4; // edi@1 unsigned int v5; // ebx@1 int v6; // eax@1 int v7; // edi@3 int v8; // ecx@4 int v9; // ecx@8 char v11; // [sp-4h] [bp-30h]@9 char v12; // [sp+10h] [bp-1Ch]@7 int v13; // [sp+1Ch] [bp-10h]@2 int v14; // [sp+28h] [bp-4h]@7 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 29938; *((_BYTE *)v3 + 2) = a2; *(_DWORD *)((char *)v3 + 3) = *(_DWORD *)this; v4 = *(_DWORD *)(this + 36); v5 = 0; v6 = (*(_DWORD *)(this + 40) - v4) / 28; if ( v6 ) { v13 = 0; if ( (unsigned int)v6 <= 0 ) sub_6517D8((int)"invalid vector subscript"); while ( 1 ) { v7 = sub_54DE90(&unk_13253630, *(_WORD *)(v13 + v4)); if ( v7 ) break; v4 = *(_DWORD *)(v2 + 36); v8 = *(_DWORD *)(v2 + 40); v13 += 28; ++v5; if ( (v8 - v4) / 28 <= v5 ) goto LABEL_8; } sub_4287B0(&v12, &off_849C18, 7); v14 = 0; sub_549B60((void *)v7, (int)&v12, 1); v14 = -1; sub_428A70(&v12); } LABEL_8: *(_DWORD *)(v2 + 144) = a2; v9 = v2 + 148; if ( a2 <= 1 ) { v11 = 0; } else { sub_650330(v9, 600); v11 = 1; v9 = v2 + 148; } return sub_58FC60(v9, v11); } //----- (00478FC0) -------------------------------------------------------- char __thiscall sub_478FC0(void *this) { void *v1; // esi@1 unsigned int v2; // eax@1 unsigned int v3; // ecx@2 int (__thiscall *v4)(_DWORD, _DWORD); // edx@5 bool v5; // cf@5 int v6; // ecx@5 v1 = this; LOBYTE(v2) = sub_58FC80((int)((char *)this + 24)); if ( (_BYTE)v2 ) { sub_58FC60((int)((char *)v1 + 24), 0); v2 = *((_DWORD *)v1 + 4); v3 = *((_DWORD *)v1 + 3); if ( v2 != v3 ) { if ( *((_DWORD *)v1 + 16) || *((_DWORD *)v1 + 17) ) { v4 = (int (__thiscall *)(_DWORD, _DWORD))*((_DWORD *)v1 + 17); v5 = v2 < v3; v6 = *((_DWORD *)v1 + 16); if ( v5 ) LOBYTE(v2) = v4(v6, *((_DWORD *)v1 + 1)); else LOBYTE(v2) = v4(v6, *((_DWORD *)v1 + 2)); } } } return v2; } //----- (00479010) -------------------------------------------------------- char __thiscall sub_479010(int this, int a2, char a3) { void *v3; // edi@1 int v4; // eax@1 int v5; // edi@1 int v6; // ebx@1 int v7; // esi@2 int v8; // eax@3 char result; // al@5 int v10; // esi@7 int v11; // eax@9 int v12; // [sp+Ch] [bp-4h]@2 unsigned int v13; // [sp+1Ch] [bp+Ch]@1 v3 = off_849C18; *(_WORD *)off_849C18 = 29917; v4 = *(_DWORD *)(this + 20); *((_BYTE *)v3 + 2) = *(_BYTE *)v4; v5 = (int)((char *)v3 + 2); *(_DWORD *)(v5 + 1) = *(_DWORD *)(v4 + 1); *(_DWORD *)(v5 + 5) = *(_DWORD *)(v4 + 5); *(_DWORD *)(v5 + 9) = *(_DWORD *)(v4 + 9); *(_DWORD *)(v5 + 13) = *(_DWORD *)(v4 + 13); *(_DWORD *)(v5 + 13) = (*(_DWORD *)(this + 28) - *(_DWORD *)(this + 24)) / 44; *(_BYTE *)v5 = a3; v6 = *(_DWORD *)(this + 24); v13 = 0; if ( (*(_DWORD *)(this + 28) - v6) / 44 ) { v7 = v5 + 25; v12 = -25 - v5; if ( (unsigned int)((*(_DWORD *)(this + 28) - v6) / 44) <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v8 = v6 + v7 + v12; *(_DWORD *)(v7 - 8) = *(_DWORD *)(v7 + v12 + v6); *(_DWORD *)(v7 - 4) = *(_DWORD *)(v8 + 4); *(_DWORD *)v7 = *(_DWORD *)(v8 + 8); *(_DWORD *)(v7 + 4) = *(_DWORD *)(v8 + 12); *(_DWORD *)(v7 + 8) = *(_DWORD *)(v8 + 16); *(_DWORD *)(v7 + 12) = *(_DWORD *)(v8 + 20); *(_DWORD *)(v7 + 16) = *(_DWORD *)(v8 + 24); *(_DWORD *)(v7 + 20) = *(_DWORD *)(v8 + 28); *(_DWORD *)(v7 + 24) = *(_DWORD *)(v8 + 32); ++v13; *(_DWORD *)(v7 + 28) = *(_DWORD *)(v8 + 36); *(_DWORD *)(v7 + 32) = *(_DWORD *)(v8 + 40); v6 = *(_DWORD *)(this + 24); v7 += 44; } while ( (*(_DWORD *)(this + 28) - v6) / 44 > v13 ); } if ( a2 ) { v10 = 44 * *(_DWORD *)(v5 + 13) + 19; if ( sub_4C81E0(&off_849C18, 44 * *(_DWORD *)(v5 + 13) + 19) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, a2, &off_849C18); result = 1; } else { sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::SendScorePacket::SendtoPlayer : Packet Too Long", v10); result = 1; } } else { result = 0; } return result; } //----- (00479180) -------------------------------------------------------- char __thiscall sub_479180(int this, void *a2, char a3) { void *v3; // edi@1 int v4; // eax@1 int v5; // edi@1 int v6; // ebx@1 int v7; // eax@1 int v8; // esi@2 int v9; // eax@3 char result; // al@5 char v11; // [sp+10h] [bp-1Ch]@4 int v12; // [sp+1Ch] [bp-10h]@2 int v13; // [sp+28h] [bp-4h]@4 unsigned int v14; // [sp+38h] [bp+Ch]@1 v3 = off_849C18; *(_WORD *)off_849C18 = 29917; v4 = *(_DWORD *)(this + 20); *((_BYTE *)v3 + 2) = *(_BYTE *)v4; v5 = (int)((char *)v3 + 2); *(_DWORD *)(v5 + 1) = *(_DWORD *)(v4 + 1); *(_DWORD *)(v5 + 5) = *(_DWORD *)(v4 + 5); *(_DWORD *)(v5 + 9) = *(_DWORD *)(v4 + 9); *(_DWORD *)(v5 + 13) = *(_DWORD *)(v4 + 13); *(_DWORD *)(v5 + 13) = (*(_DWORD *)(this + 28) - *(_DWORD *)(this + 24)) / 44; *(_BYTE *)v5 = a3; v6 = *(_DWORD *)(this + 24); v7 = (*(_DWORD *)(this + 28) - v6) / 44; v14 = 0; if ( (*(_DWORD *)(this + 28) - v6) / 44 ) { v8 = v5 + 25; v12 = -25 - v5; if ( (unsigned int)v7 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v9 = v6 + v8 + v12; *(_DWORD *)(v8 - 8) = *(_DWORD *)(v8 + v12 + v6); *(_DWORD *)(v8 - 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)v8 = *(_DWORD *)(v9 + 8); *(_DWORD *)(v8 + 4) = *(_DWORD *)(v9 + 12); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v9 + 16); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v9 + 20); *(_DWORD *)(v8 + 16) = *(_DWORD *)(v9 + 24); *(_DWORD *)(v8 + 20) = *(_DWORD *)(v9 + 28); *(_DWORD *)(v8 + 24) = *(_DWORD *)(v9 + 32); ++v14; *(_DWORD *)(v8 + 28) = *(_DWORD *)(v9 + 36); *(_DWORD *)(v8 + 32) = *(_DWORD *)(v9 + 40); v6 = *(_DWORD *)(this + 24); v8 += 44; } while ( (*(_DWORD *)(this + 28) - v6) / 44 > v14 ); } sub_4287B0(&v11, &off_849C18, 44 * *(_DWORD *)(v5 + 13) + 19); v13 = 0; if ( a2 ) { sub_549B60(a2, (int)&v11, 1); v13 = -1; sub_428A70(&v11); result = 1; } else { v13 = -1; sub_428A70(&v11); result = 0; } return result; } //----- (00479330) -------------------------------------------------------- int __cdecl sub_479330(int a1, int a2, int a3, __int16 a4) { int i; // ecx@1 int result; // eax@4 for ( i = a2; i != a3; i += 28 ) { if ( *(_WORD *)i == a4 ) break; } result = a1; *(_DWORD *)a1 = i; return result; } //----- (00479360) -------------------------------------------------------- int __cdecl sub_479360(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // ebx@1 signed int v5; // edx@1 signed int v6; // edi@1 int v7; // ebx@4 int result; // eax@8 v4 = a1; v5 = (signed int)(a2 - a1 + ((unsigned __int64)(-1840700269i64 * (a2 - a1)) >> 32)) >> 4; v6 = v5 + ((unsigned int)v5 >> 31); if ( v6 <= 0 ) { result = a1; } else { while ( 1 ) { v7 = v4 + 28 * v6 / 2; if ( (unsigned __int8)a4(a3, v7) ) { v6 /= 2; } else { a1 = v7 + 28; v6 += -1 - v6 / 2; } if ( v6 <= 0 ) break; v4 = a1; } result = a1; } return result; } //----- (004793E0) -------------------------------------------------------- void *__cdecl sub_4793E0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 28 ) { if ( result ) memcpy(result, v3, 0x1Cu); v3 = (char *)v3 + 28; } return result; } //----- (00479420) -------------------------------------------------------- bool __thiscall sub_479420(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@2 __int16 v6; // ax@10 int v7; // edx@10 int v8; // ecx@10 bool v9; // zf@10 v2 = this; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); if ( *((_DWORD *)v2 + 7) == v3 ) { v4 = (int)((char *)v2 + 28); } else { if ( *((_DWORD *)v2 + 52) != v3 ) { if ( !*((_DWORD *)v2 + 1) && !*((_DWORD *)v2 + 2) ) return 0; (*((void (__thiscall **)(_DWORD, _DWORD))v2 + 2))(*((_DWORD *)v2 + 1), 6991); return 0; } v4 = (int)((char *)v2 + 208); } if ( !v4 ) return 0; v6 = sub_4802C0(a2); v7 = *(_DWORD *)(v4 + 40); v8 = *(_DWORD *)(v4 + 36); v9 = v8 == v7; if ( v8 != v7 ) { do { if ( *(_WORD *)v8 == v6 ) break; v8 += 28; } while ( v8 != v7 ); v9 = v8 == v7; } return !v9; } //----- (004794B0) -------------------------------------------------------- int __thiscall sub_4794B0(int this, int a2, int a3) { int result; // eax@1 result = a3; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 84) = a3; *(_DWORD *)(this + 80) = a2; *(_DWORD *)(this + 264) = a3; *(_DWORD *)(this + 260) = a2; *(_DWORD *)(this + 456) = a3; *(_DWORD *)(this + 452) = a2; return result; } //----- (004794F0) -------------------------------------------------------- int __thiscall sub_4794F0(int this) { int result; // eax@1 result = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 80) = 0; *(_DWORD *)(this + 84) = 0; *(_DWORD *)(this + 260) = 0; *(_DWORD *)(this + 264) = 0; *(_DWORD *)(this + 456) = 0; *(_DWORD *)(this + 452) = 0; return result; } //----- (00479520) -------------------------------------------------------- void __thiscall sub_479520(void *this, int a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // esi@3 v2 = this; if ( !a2 ) return; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2); if ( *((_DWORD *)v2 + 7) == v3 ) { v4 = (int)((char *)v2 + 28); goto LABEL_4; } if ( *((_DWORD *)v2 + 52) == v3 ) { v4 = (int)((char *)v2 + 208); LABEL_4: if ( v4 ) { if ( sub_478B60(v4) == a2 ) sub_58FC60(v4 + 96, 1); } return; } if ( *((_DWORD *)v2 + 1) || *((_DWORD *)v2 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v2 + 2))(*((_DWORD *)v2 + 1), 6991); } //----- (00479590) -------------------------------------------------------- int __usercall sub_479590(int a1, int a2) { int v2; // edi@1 int result; // eax@1 unsigned int v4; // ecx@1 char v5; // bl@2 unsigned int v6; // esi@7 int v7; // eax@11 int v8; // eax@12 int v9; // [sp-4h] [bp-14h]@7 bool v10; // [sp+8h] [bp-8h]@13 unsigned int v11; // [sp+Ch] [bp-4h]@2 v2 = a1; result = *(_DWORD *)(a1 + 268); v4 = *(_DWORD *)(a1 + 88); if ( v4 >= result ) { v11 = (unsigned __int16)(v4 - (_WORD)result); v5 = 0; } else { result = (unsigned __int16)(result - (_WORD)v4); v11 = (unsigned __int16)result; v5 = 1; } if ( (_WORD)v11 ) { result = *(_DWORD *)(dword_D554210 + 56); if ( result ) { if ( *(_DWORD *)(result + 40) ) { v9 = a2; v6 = 0; if ( sub_478360() ) { while ( 1 ) { result = sub_626BC0(dword_D554210 + 4, v6); if ( !result ) break; if ( (unsigned __int16)v11 < *(_WORD *)(result + 1) ) { v10 = v5; v11 = v6; loc_478D70(v2 + 28, &v10, v9); v10 = v5 == 0; goto LABEL_16; } ++v6; if ( v6 >= sub_478360() ) goto LABEL_11; } } else { LABEL_11: v7 = *(_DWORD *)(dword_D554210 + 56); if ( v7 ) v8 = *(_DWORD *)(v7 + 40); else v8 = 0; v6 = v8 - 1; v10 = v5; v11 = v8 - 1; loc_478D70(v2 + 28, &v10, v9); v10 = v5 == 0; LABEL_16: v11 = v6; result = loc_478D70(v2 + 208); } } } } return result; } // 479590: could not find valid save-restore pair for esi // D554210: using guessed type int dword_D554210; //----- (00479690) -------------------------------------------------------- void __thiscall sub_479690(void *this, int a2) { void *v2; // esi@1 int v3; // esi@4 void *v4; // ebx@7 int v5; // ecx@7 int v6; // edi@7 int v7; // eax@7 int v8; // eax@9 int v9; // edi@9 int v10; // eax@12 int v11; // eax@17 int v12; // [sp+Ch] [bp-Ch]@7 int v13; // [sp+10h] [bp-8h]@8 unsigned int v14; // [sp+14h] [bp-4h]@7 v2 = this; if ( a2 && sub_479420(this, a2) ) { v3 = (int)(*((_DWORD *)v2 + 7) == (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2) ? (char *)v2 + 208 : (char *)v2 + 28); if ( v3 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 29939; v5 = *(_DWORD *)(v3 + 40) - *(_DWORD *)(v3 + 36); *((_WORD *)v4 + 1) = ((signed int)(v5 + ((unsigned __int64)(-1840700269i64 * v5) >> 32)) >> 4) + ((unsigned int)(v5 + ((unsigned __int64)(-1840700269i64 * v5) >> 32)) >> 31); v12 = 0; v14 = 0; v6 = *(_DWORD *)(v3 + 36); v7 = (*(_DWORD *)(v3 + 40) - v6) / 28; if ( v7 ) { v13 = 0; if ( (unsigned int)v7 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v8 = sub_54DE90(&unk_13253630, *(_WORD *)(v13 + v6)); v9 = v8; if ( v8 && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 996))(v8, 75) && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 996))(v9, 373) ) { v10 = sub_552F20(v9); *((_DWORD *)v4 + 2 * (unsigned __int16)v12 + 1) = *(_DWORD *)v10; *((_DWORD *)v4 + 2 * (unsigned __int16)v12++ + 2) = *(_DWORD *)(v10 + 4); } v6 = *(_DWORD *)(v3 + 36); ++v14; v13 += 28; } while ( (*(_DWORD *)(v3 + 40) - v6) / 28 > v14 ); } *((_WORD *)v4 + 1) = v12; if ( sub_4C81E0(&off_849C18, 8 * (unsigned __int16)v12 + 4) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, a2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"GuildTourmentSystem::ScanEnemyUser : Packet Too Long", 8 * (unsigned __int16)v12 + 4); } } } } //----- (00479840) -------------------------------------------------------- int __thiscall sub_479840(int this) { int v1; // esi@1 int result; // eax@1 int v3; // ecx@3 int v4; // eax@5 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-11Ch]@3 int v6; // [sp+8h] [bp-118h]@3 int *v7; // [sp+Ch] [bp-114h]@3 unsigned int v8; // [sp+110h] [bp-10h]@1 int v9; // [sp+11Ch] [bp-4h]@3 int v10; // [sp+120h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v1 = this; result = *(_DWORD *)(this + 116); if ( result || (sub_478BB0(this), (result = *(_DWORD *)(v1 + 116)) != 0) ) { v5 = &off_6B49BC; v3 = *(_DWORD *)v1; v9 = 0; v6 = v3; v7 = (int *)&v5; if ( !result ) { sub_478BB0(v1); result = *(_DWORD *)(v1 + 116); } v4 = sub_4012C0(result); result = sub_419010(v4, (int)sub_50AE00, (int)&v7); } return result; } // 6B49BC: using guessed type int (__thiscall *off_6B49BC)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (004798F0) -------------------------------------------------------- char __thiscall sub_4798F0(void *this, int a2) { void *v2; // esi@1 char result; // al@1 int v4; // eax@7 int v5; // edx@8 int v6; // eax@12 v2 = this; result = sub_58FC80((int)((char *)this + 24)); if ( !result ) { if ( *((_DWORD *)v2 + 14) || *((_DWORD *)v2 + 15) ) result = (*((int (__thiscall **)(_DWORD, _DWORD))v2 + 15))(*((_DWORD *)v2 + 14), 6995); return result; } result = a2; if ( *((_DWORD *)v2 + 1) != a2 ) { if ( *((_DWORD *)v2 + 2) != a2 ) { if ( *((_DWORD *)v2 + 14) || *((_DWORD *)v2 + 15) ) result = (*((int (__thiscall **)(_DWORD, _DWORD))v2 + 15))(*((_DWORD *)v2 + 14), 6988); goto LABEL_21; } if ( !*((_DWORD *)v2 + 4) ) { v6 = (unsigned __int16)sub_4011A0(&unk_14D42DC0) % 6 + 1; for ( *((_DWORD *)v2 + 4) = v6; *((_DWORD *)v2 + 3) == *((_DWORD *)v2 + 4); *((_DWORD *)v2 + 4) = (unsigned __int16)sub_4011A0(&unk_14D42DC0) % 6 + 1 ) ; result = sub_478240(*((_DWORD *)v2 + 2), *((_DWORD *)v2 + 4)); goto LABEL_21; } goto LABEL_15; } if ( *((_DWORD *)v2 + 3) ) { LABEL_15: if ( *((_DWORD *)v2 + 14) || *((_DWORD *)v2 + 15) ) result = (*((int (__thiscall **)(_DWORD, _DWORD))v2 + 15))(*((_DWORD *)v2 + 14), 6990); goto LABEL_21; } v4 = (unsigned __int16)sub_4011A0(&unk_14D42DC0) % 6 + 1; *((_DWORD *)v2 + 3) = v4; if ( v4 == *((_DWORD *)v2 + 4) ) { do { v5 = (unsigned __int16)sub_4011A0(&unk_14D42DC0) % 6 + 1; *((_DWORD *)v2 + 3) = v5; } while ( v5 == *((_DWORD *)v2 + 4) ); } result = sub_478240(*((_DWORD *)v2 + 1), *((_DWORD *)v2 + 3)); LABEL_21: if ( *((_DWORD *)v2 + 4) && *((_DWORD *)v2 + 3) ) result = sub_478FC0(v2); return result; } //----- (00479A40) -------------------------------------------------------- bool __stdcall sub_479A40(int a1, int a2) { int v2; // eax@1 v2 = a2; if ( *(_DWORD *)(a2 + 20) >= 0x10u ) v2 = *(_DWORD *)a2; return sub_422730(a1, 0, *(_DWORD *)(a1 + 16), v2, *(_DWORD *)(a2 + 16)) < 0; } //----- (00479A70) -------------------------------------------------------- unsigned int __thiscall sub_479A70(int this, unsigned int a2) { unsigned int result; // eax@1 int v3; // esi@1 int v4; // ebx@4 int v5; // edi@4 result = a2; v3 = this; if ( a2 > 0x7FFFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 1 < a2 ) { v4 = sub_478550(a2); memmove_0((void *)v4, *(const void **)v3, 2 * ((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 1)); v5 = (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 1; if ( *(_DWORD *)v3 ) operator delete(*(void **)v3); result = a2; *(_DWORD *)v3 = v4; *(_DWORD *)(v3 + 8) = v4 + 2 * a2; *(_DWORD *)(v3 + 4) = v4 + 2 * v5; } return result; } //----- (00479AF0) -------------------------------------------------------- int __thiscall sub_479AF0(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; if ( *(_DWORD *)(this + 32) >= 0x10u ) operator delete(*(void **)(this + 12)); result = 0; *(_DWORD *)(v1 + 32) = 15; *(_DWORD *)(v1 + 28) = 0; *(_BYTE *)(v1 + 12) = 0; return result; } //----- (00479B20) -------------------------------------------------------- int __cdecl sub_479B20(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // ecx@1 int result; // eax@1 signed int v6; // edi@1 int v7; // edx@2 int v8; // edx@5 int v9; // eax@5 int v10; // eax@10 char v11; // [sp+Ch] [bp-2Ch]@10 int v12; // [sp+28h] [bp-10h]@1 int v13; // [sp+2Ch] [bp-Ch]@9 int v14; // [sp+30h] [bp-8h]@5 int i; // [sp+34h] [bp-4h]@5 int v16; // [sp+44h] [bp+Ch]@1 v3 = a1; v4 = (a2 - a1) / 28; result = (a3 - a1) / 28; v12 = v4; v16 = (a3 - a1) / 28; v6 = v4; if ( v4 ) { do { v7 = result % v6; v16 = v6; result = v6; v6 = v7; } while ( v7 ); } if ( result < (a3 - a1) / 28 && result > 0 ) { v8 = 28 * v4; v9 = a1 + 28 * result; v14 = 28 * v4; for ( i = v9; ; v9 = i ) { if ( v9 + v8 != a3 ) v3 = v9 + v8; while ( 1 ) { memcpy(&v11, (const void *)v9, 0x1Cu); memcpy((void *)v9, (const void *)v3, 0x1Cu); memcpy((void *)v3, &v11, 0x1Cu); v10 = (a3 - v3) / 28; v13 = v3; if ( v12 >= v10 ) v3 = a1 + 28 * (v12 - v10); else v3 += v14; if ( v3 == i ) break; v9 = v13; } i -= 28; result = v16 - 1; v16 = result; if ( result <= 0 ) break; v3 = a1; v8 = v14; } } return result; } //----- (00479C50) -------------------------------------------------------- void __thiscall sub_479C50(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 80) >= 0x10u ) operator delete(*(void **)(this + 60)); *(_DWORD *)(v1 + 80) = 15; *(_DWORD *)(v1 + 76) = 0; *(_BYTE *)(v1 + 60) = 0; if ( *(_DWORD *)(v1 + 52) >= 0x10u ) operator delete(*(void **)(v1 + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 15; *(_BYTE *)(v1 + 4) = 0; } //----- (00479CC0) -------------------------------------------------------- int __thiscall sub_479CC0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 28) = 15; *(_DWORD *)(this + 24) = 0; *(_BYTE *)(this + 8) = 0; *(_DWORD *)(this + 56) = 15; *(_DWORD *)(this + 52) = 0; *(_BYTE *)(this + 36) = 0; *(_DWORD *)(this + 84) = 15; *(_DWORD *)(this + 80) = 0; *(_BYTE *)(this + 64) = 0; sub_58FC10(this + 92); *(_DWORD *)(v1 + 132) = 15; *(_DWORD *)(v1 + 128) = 0; *(_BYTE *)(v1 + 112) = 0; *(_DWORD *)(v1 + 160) = 15; *(_DWORD *)(v1 + 156) = 0; *(_BYTE *)(v1 + 140) = 0; *(_DWORD *)(v1 + 188) = 15; *(_DWORD *)(v1 + 184) = 0; *(_BYTE *)(v1 + 168) = 0; return v1; } //----- (00479D70) -------------------------------------------------------- void __thiscall sub_479D70(void *this) { void *v1; // esi@1 v1 = this; sub_479C50((int)((char *)this + 108)); if ( *((_DWORD *)v1 + 21) >= 0x10u ) operator delete(*((void **)v1 + 16)); *((_DWORD *)v1 + 21) = 15; *((_DWORD *)v1 + 20) = 0; *((_BYTE *)v1 + 64) = 0; if ( *((_DWORD *)v1 + 14) >= 0x10u ) operator delete(*((void **)v1 + 9)); *((_DWORD *)v1 + 14) = 15; *((_DWORD *)v1 + 13) = 0; *((_BYTE *)v1 + 36) = 0; if ( *((_DWORD *)v1 + 7) >= 0x10u ) operator delete(*((void **)v1 + 2)); *((_DWORD *)v1 + 6) = 0; *((_DWORD *)v1 + 7) = 15; *((_BYTE *)v1 + 8) = 0; } //----- (00479DE0) -------------------------------------------------------- void __thiscall sub_479DE0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 56) >= 0x10u ) operator delete(*(void **)(this + 36)); *(_DWORD *)(v1 + 56) = 15; *(_DWORD *)(v1 + 52) = 0; *(_BYTE *)(v1 + 36) = 0; if ( *(_DWORD *)(v1 + 28) >= 0x10u ) operator delete(*(void **)(v1 + 8)); *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 15; *(_BYTE *)(v1 + 8) = 0; } //----- (00479E30) -------------------------------------------------------- int __thiscall sub_479E30(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int result; // eax@3 int v5; // ebx@4 int v6; // ST08_4@8 int v7; // eax@8 void *v8; // esi@8 int v9; // eax@8 int v10; // eax@8 char v11; // [sp+10h] [bp-18h]@8 int v12; // [sp+24h] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)(this + 144); if ( !v3 ) { sub_478BB0(this + 28); v3 = *(_DWORD *)(v2 + 144); } result = *(_DWORD *)(v2 + 324); if ( result ) { v5 = *(_DWORD *)(v2 + 324); } else { result = sub_478BB0(v2 + 208); v5 = *(_DWORD *)(v2 + 324); } if ( v5 ) { if ( v3 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); sub_4781E0(v2 + 396, a2, v7, v6); v8 = off_849C18; *(_WORD *)off_849C18 = 29906; *((_WORD *)v8 + 3) = sub_4802C0(v3); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); *((_DWORD *)v8 + 2) = *(_DWORD *)v9; *((_DWORD *)v8 + 3) = *(_DWORD *)(v9 + 4); *((_DWORD *)v8 + 4) = *(_DWORD *)(v9 + 8); *((_DWORD *)v8 + 5) = *(_DWORD *)(v9 + 12); *((_DWORD *)v8 + 6) = *(_DWORD *)(v9 + 16); *(_DWORD *)((char *)v8 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2072))(v3); *((_WORD *)v8 + 16) = sub_4802C0(v5); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1388))(v5); *(_DWORD *)((char *)v8 + 34) = *(_DWORD *)v10; *(_DWORD *)((char *)v8 + 38) = *(_DWORD *)(v10 + 4); *(_DWORD *)((char *)v8 + 42) = *(_DWORD *)(v10 + 8); *(_DWORD *)((char *)v8 + 46) = *(_DWORD *)(v10 + 12); *(_DWORD *)((char *)v8 + 50) = *(_DWORD *)(v10 + 16); *((_DWORD *)v8 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2072))(v5); sub_4287B0(&v11, &off_849C18, 54); v12 = 0; sub_549B60((void *)v3, (int)&v11, 1); v12 = -1; result = sub_428A70(&v11); } } return result; } //----- (00479FB0) -------------------------------------------------------- char __thiscall sub_479FB0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); return sub_4798F0((char *)v2 + 396, v3); } //----- (00479FE0) -------------------------------------------------------- int __thiscall sub_479FE0(void *this, int a2) { int v2; // esi@1 int result; // eax@1 signed int v4; // ecx@1 v2 = (int)this; *(_DWORD *)(v2 + 60) += a2; *(_DWORD *)(v2 + 68) += a2; result = *(_DWORD *)(dword_D554210 + 56); v4 = 2000; if ( result && *(_DWORD *)(result + 40) ) { result = sub_626BC0(dword_D554218 + 4, 0); v4 = *(_WORD *)result; } if ( *(_DWORD *)(v2 + 60) >= (unsigned int)v4 ) result = sub_479840(v2); return result; } // D554210: using guessed type int dword_D554210; // D554218: using guessed type int dword_D554218; //----- (0047A030) -------------------------------------------------------- FILE *__thiscall sub_47A030(int this, int a2) { int v2; // esi@1 signed int v3; // ecx@1 FILE *result; // eax@1 int v5; // edi@2 void *v6; // eax@4 int v7; // eax@6 v2 = this; *(_DWORD *)(this + 64) = a2; v3 = *(_DWORD *)(this + 40) - *(_DWORD *)(this + 36); result = (FILE *)(-1840700269 * v3); if ( v3 / 28 ) { v5 = *(_DWORD *)(v2 + 116); if ( v5 || (result = (FILE *)sub_478BB0(v2), (v5 = *(_DWORD *)(v2 + 116)) != 0) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 29902; *((_WORD *)v6 + 1) = *(_WORD *)(v2 + 64); if ( sub_4C81E0(&off_849C18, 4) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 760))(v5); result = (FILE *)(*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v5, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::AddPlayerDie : Packet Too Long", 4); } } } return result; } //----- (0047A0D0) -------------------------------------------------------- void __thiscall sub_47A0D0(int this) { int v1; // esi@1 int v2; // edi@1 signed int v3; // ecx@1 int v4; // ebx@4 unsigned __int8 *v5; // eax@6 int v6; // eax@8 void *v7; // [sp+Ch] [bp-2Ch]@6 unsigned int v8; // [sp+20h] [bp-18h]@6 unsigned int v9; // [sp+28h] [bp-10h]@1 int v10; // [sp+34h] [bp-4h]@6 int v11; // [sp+38h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 36); v3 = *(_DWORD *)(this + 40) - v2; if ( v3 / 28 ) { if ( !(v3 / 28) ) sub_6517D8((int)"invalid vector subscript"); v4 = sub_54DE90(&unk_13253630, *(_WORD *)v2); if ( v4 && !*(_DWORD *)(v2 + 4) ) { sub_5C4E40((int)&v7, *(_DWORD *)(v1 + 76)); v5 = (unsigned __int8 *)v7; v10 = 0; if ( v8 < 0x10 ) v5 = (unsigned __int8 *)&v7; v6 = sub_418C10((int)&unk_877138, v5); if ( v6 ) (*(void (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(*(_DWORD *)v6 + 34), 1, v6, dword_14D129E8, 0, -1, 0, 0, 0); if ( v8 >= 0x10 ) operator delete(v7); } } } // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (0047A1D0) -------------------------------------------------------- char __thiscall sub_47A1D0(int this, int a2, void *a3) { int v3; // esi@1 int v4; // edi@3 int v5; // ST04_4@4 __time32_t v6; // eax@4 __time32_t v7; // eax@4 __time32_t v8; // eax@4 int v9; // eax@5 unsigned int v10; // ecx@11 unsigned int v11; // eax@11 void *v12; // ecx@15 int v13; // eax@18 int v15; // ebx@23 signed int v16; // [sp-4h] [bp-31Ch]@13 int v17; // [sp+Ch] [bp-30Ch]@19 char v18; // [sp+14h] [bp-304h]@29 char v19; // [sp+114h] [bp-204h]@37 char v20; // [sp+214h] [bp-104h]@21 unsigned int v21; // [sp+314h] [bp-4h]@1 int v22; // [sp+318h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v3 = this; if ( a2 < 0 || (*(_DWORD *)(this + 84) - *(_DWORD *)(this + 80)) >> 4 <= a2 ) { v17 = (*(_DWORD *)(this + 84) - *(_DWORD *)(this + 80)) >> 4; if ( byte_7493ED ) { if ( byte_14D130B4 ) { sprintf(&v20, "%.255s", "GuildTourmentSystem::UseGuildSkill [ID is out of range]\tType:"); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v20, dword_14D12F30); } } v15 = *(_DWORD *)(v3 + 76); if ( byte_7493ED ) { if ( byte_14D130B4 ) { sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fprintf(dword_14D12F30, "%d", v15); } if ( byte_7493ED ) { if ( byte_14D130B4 ) { sprintf(&v18, "%.255s", "\tID:"); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v18, dword_14D12F30); } if ( byte_7493ED ) { if ( byte_14D130B4 ) { sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fprintf(dword_14D12F30, "%d", a2); } if ( byte_7493ED ) { if ( byte_14D130B4 ) { sprintf(&v19, "%.255s", "\tVector Size:"); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v19, dword_14D12F30); } if ( byte_7493ED ) { if ( byte_14D130B4 ) { sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fprintf(dword_14D12F30, "%d", v17); } } } } } } goto LABEL_43; } v4 = sub_5C4B40(*(_DWORD *)(this + 76), a2); if ( !v4 ) { v5 = *(_DWORD *)(v3 + 76); v6 = sub_418EA0( (__time32_t)byte_14D12E30, (int)"GuildTourmentSystem::UseGuildSkill Not Find GuildTournamentState Type :"); v7 = sub_43B910(v6, v5); v8 = sub_418EA0(v7, (int)" ID:"); sub_43B910(v8, a2); LABEL_43: if ( !*(_DWORD *)(v3 + 52) && !*(_DWORD *)(v3 + 56) ) return 0; v16 = 6989; goto LABEL_46; } v9 = *(_DWORD *)(v3 + 80); if ( (*(_DWORD *)(v3 + 84) - v9) >> 4 <= (unsigned int)a2 ) sub_6517D8((int)"invalid vector subscript"); if ( sub_58FC80(v9 + 16 * a2) ) { if ( *(_DWORD *)(v3 + 52) || *(_DWORD *)(v3 + 56) ) (*(void (__thiscall **)(_DWORD, signed int))(v3 + 56))(*(_DWORD *)(v3 + 52), 6992); return 0; } v10 = *(_WORD *)(v4 + 4); v11 = *(_DWORD *)(v3 + 64); if ( v11 >= v10 ) { sub_47A030(v3, v11 - v10); if ( *(_DWORD *)(v4 + 38) == 10 ) { v12 = (void *)v3; } else { v12 = a3; if ( !a3 ) { LABEL_18: v13 = sub_4784E0(v3 + 80, a2); sub_58FC60(v13, 1); return 1; } } sub_478A20(v12, (unsigned __int8 *)(v4 + 6), 0); goto LABEL_18; } if ( !sub_4782F0(v3 + 52) ) { v16 = 6987; LABEL_46: (*(void (__thiscall **)(_DWORD, signed int))(v3 + 56))(*(_DWORD *)(v3 + 52), v16); } return 0; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D130B4: using guessed type char byte_14D130B4; //----- (0047A510) -------------------------------------------------------- char __thiscall sub_47A510(void *this, int a2) { int v2; // esi@1 int v3; // ecx@3 int v4; // eax@3 unsigned int v5; // edi@3 int v6; // ebx@4 int v7; // eax@6 char result; // al@9 v2 = (int)this; if ( sub_58FCB0((int)((char *)this + 96), a2) ) { sub_58FC60(v2 + 96, 0); sub_47A0D0(v2); } v3 = *(_DWORD *)(v2 + 80); v4 = (*(_DWORD *)(v2 + 84) - v3) >> 4; v5 = 0; if ( v4 ) { v6 = 0; if ( (unsigned int)v4 <= 0 ) LABEL_12: sub_6517D8((int)"invalid vector subscript"); do { if ( sub_58FCB0(v6 + v3, a2) ) { v7 = *(_DWORD *)(v2 + 80); if ( (*(_DWORD *)(v2 + 84) - v7) >> 4 <= v5 ) goto LABEL_12; sub_58FC60(v6 + v7, 0); } v3 = *(_DWORD *)(v2 + 80); ++v5; v6 += 16; } while ( (*(_DWORD *)(v2 + 84) - v3) >> 4 > v5 ); } result = sub_58FCB0(v2 + 148, a2); if ( result ) { sub_478E90(v2, 1); result = sub_58FC60(v2 + 148, 0); } return result; } //----- (0047A5D0) -------------------------------------------------------- char __thiscall sub_47A5D0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // edi@5 void *v5; // eax@7 char v7; // [sp+10h] [bp-18h]@7 int v8; // [sp+24h] [bp-4h]@7 v2 = this; LOBYTE(v3) = sub_58FC80((int)((char *)this + 24)); if ( (_BYTE)v3 ) { if ( sub_58FCB0((int)((char *)v2 + 24), a2) ) { sub_4798F0(v2, *((_DWORD *)v2 + 1)); sub_4798F0(v2, *((_DWORD *)v2 + 2)); sub_58FC60((int)((char *)v2 + 24), 0); } LOBYTE(v3) = sub_58FCB0((int)((char *)v2 + 40), a2); if ( (_BYTE)v3 ) { v4 = sub_54E4D0(&unk_13253630, *((_DWORD *)v2 + 1)); if ( v4 || (v3 = sub_54E4D0(&unk_13253630, *((_DWORD *)v2 + 2)), (v4 = v3) != 0) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 29910; *(_DWORD *)((char *)v5 + 2) = 5; sub_4287B0(&v7, &off_849C18, 6); v8 = 0; sub_549B60((void *)v4, (int)&v7, 1); sub_58FC60((int)((char *)v2 + 40), 0); v8 = -1; LOBYTE(v3) = sub_428A70(&v7); } } } return v3; } //----- (0047A6E0) -------------------------------------------------------- int __thiscall sub_47A6E0(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 21) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_DWORD *)a3 < *(_DWORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (0047A750) -------------------------------------------------------- unsigned int __thiscall sub_47A750(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 1; if ( 2147483647 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 1; if ( result > v4 ) { if ( 2147483647 - ((unsigned int)v4 >> 1) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_479A70(this, v5); } return result; } //----- (0047A7B0) -------------------------------------------------------- int __thiscall sub_47A7B0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // edi@1 int result; // eax@2 int v8; // eax@7 int v9; // ecx@20 int v10; // [sp+8h] [bp-8h]@20 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a4; if ( !*(_DWORD *)(this + 8) ) { sub_5CC4F0(this, a2, 1, v5, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v5 ) { if ( *(_DWORD *)(a4 + 12) < *(_DWORD *)(a3 + 12) ) { sub_5CC4F0(this, a2, 1, a3, (void *)a4); return a2; } goto LABEL_20; } if ( a3 == v5 ) { v8 = *(_DWORD *)(v5 + 8); if ( *(_DWORD *)(v8 + 12) < *(_DWORD *)(a4 + 12) ) { sub_5CC4F0(this, a2, 0, v8, (void *)a4); return a2; } goto LABEL_20; } if ( *(_DWORD *)(a4 + 12) >= *(_DWORD *)(a3 + 12) || (a4 = a3, sub_5CC450(&a4), *(_DWORD *)(a4 + 12) >= *(_DWORD *)(v6 + 12)) ) { if ( *(_DWORD *)(a3 + 12) >= *(_DWORD *)(v6 + 12) || (a4 = a3, sub_5CC3C0(&a4), a4 != *(_DWORD *)(v4 + 4)) && *(_DWORD *)(v6 + 12) >= *(_DWORD *)(a4 + 12) ) { LABEL_20: v9 = *(_DWORD *)sub_5CC720(v4, (int)&v10, (void *)v6, 0); result = a2; *(_DWORD *)a2 = v9; return result; } if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 21) ) { sub_5CC4F0(v4, a2, 0, a3, (void *)v6); result = a2; } else { sub_5CC4F0(v4, a2, 1, a4, (void *)v6); result = a2; } } else { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 21) ) { sub_5CC4F0(v4, a2, 0, a4, (void *)v6); result = a2; } else { sub_5CC4F0(v4, a2, 1, a3, (void *)v6); result = a2; } } return result; } //----- (0047A910) -------------------------------------------------------- int __thiscall sub_47A910(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 v2 = this; *(_BYTE *)this = *(_BYTE *)a2; *(_WORD *)(this + 2) = *(_WORD *)(a2 + 2); v3 = this + 8; *(_WORD *)(v2 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; sub_423FC0((void *)v3, a2 + 8, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 56) = 15; *(_DWORD *)(v2 + 52) = 0; *(_BYTE *)(v2 + 36) = 0; sub_423FC0((void *)(v2 + 36), a2 + 36, 0, 0xFFFFFFFFu); return v2; } //----- (0047A9B0) -------------------------------------------------------- void *__thiscall sub_47A9B0(void *this, int a2) { void *v2; // esi@1 void *v3; // ST1C_4@1 char *v4; // ecx@1 v2 = this; v3 = this; v4 = (char *)this + 4; *(_WORD *)v3 = *(_WORD *)a2; *((_DWORD *)v4 + 5) = 15; *((_DWORD *)v4 + 4) = 0; *v4 = 0; sub_423FC0(v4, a2 + 4, 0, 0xFFFFFFFFu); *((_DWORD *)v2 + 13) = 15; *((_DWORD *)v2 + 12) = 0; *((_BYTE *)v2 + 32) = 0; sub_423FC0((char *)v2 + 32, a2 + 32, 0, 0xFFFFFFFFu); *((_DWORD *)v2 + 20) = 15; *((_DWORD *)v2 + 19) = 0; *((_BYTE *)v2 + 60) = 0; sub_423FC0((char *)v2 + 60, a2 + 60, 0, 0xFFFFFFFFu); return v2; } //----- (0047AA60) -------------------------------------------------------- void *__cdecl sub_47AA60(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 44 ) { if ( result ) memcpy(result, v3, 0x2Cu); v3 = (char *)v3 + 44; } return result; } //----- (0047AAA0) -------------------------------------------------------- bool __thiscall sub_47AAA0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ebx@1 bool result; // al@10 int v7; // eax@11 int v8; // eax@18 int v9; // ecx@18 v3 = this; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); v5 = (int)((char *)v3 + 28); if ( *((_DWORD *)v3 + 7) != v4 ) { v5 = (int)((char *)v3 + 208); if ( *((_DWORD *)v3 + 52) != v4 ) { if ( *((_DWORD *)v3 + 1) || *((_DWORD *)v3 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v3 + 2))(*((_DWORD *)v3 + 1), 6991); goto LABEL_7; } } if ( !v5 ) { LABEL_7: if ( *((_DWORD *)v3 + 1) || *((_DWORD *)v3 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v3 + 2))(*((_DWORD *)v3 + 1), 6991); return 0; } v7 = *(_DWORD *)(v5 + 116); if ( !v7 ) { sub_478BB0(v5); v7 = *(_DWORD *)(v5 + 116); } if ( v7 == a2 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); v9 = (int)((char *)v3 + 28); if ( *((_DWORD *)v3 + 7) == v8 ) v9 = (int)((char *)v3 + 208); result = sub_47A1D0(v5, a3, (void *)v9) != 0; } else { if ( *((_DWORD *)v3 + 1) || *((_DWORD *)v3 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v3 + 2))(*((_DWORD *)v3 + 1), 6988); result = 0; } return result; } //----- (0047AB80) -------------------------------------------------------- int __thiscall sub_47AB80(void *this, int a2) { void *v2; // edi@1 int result; // eax@1 int v4; // esi@2 signed int v5; // ecx@8 v2 = this; result = sub_54E4D0(&unk_13253630, a2); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)result + 2072))(result); v4 = (int)((char *)v2 + 28); if ( *((_DWORD *)v2 + 7) == result || (v4 = (int)((char *)v2 + 208), *((_DWORD *)v2 + 52) == result) ) { if ( v4 ) { *(_DWORD *)(v4 + 60) += 100; *(_DWORD *)(v4 + 68) += 100; result = *(_DWORD *)(dword_D554210 + 56); v5 = 2000; if ( result && *(_DWORD *)(result + 40) ) { result = sub_626BC0(dword_D554218 + 4, 0); v5 = *(_WORD *)result; } if ( *(_DWORD *)(v4 + 60) >= (unsigned int)v5 ) result = sub_479840(v4); } } else { if ( *((_DWORD *)v2 + 1) || *((_DWORD *)v2 + 2) ) result = (*((int (__thiscall **)(_DWORD, _DWORD))v2 + 2))(*((_DWORD *)v2 + 1), 6991); } } return result; } // D554210: using guessed type int dword_D554210; // D554218: using guessed type int dword_D554218; //----- (0047AC30) -------------------------------------------------------- int __thiscall sub_47AC30(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // eax@1 signed int v4; // edi@3 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)this > a2 ) { if ( v3 == *(_DWORD *)(this + 8) ) sub_47A750(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) *(_WORD *)result = *(_WORD *)a2; } else { v4 = (signed int)(a2 - *(_DWORD *)this) >> 1; if ( v3 == *(_DWORD *)(this + 8) ) sub_47A750(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_WORD *)result = *(_WORD *)(*(_DWORD *)v2 + 2 * v4); *(_DWORD *)(v2 + 4) += 2; return result; } } *(_DWORD *)(v2 + 4) += 2; return result; } //----- (0047ACA0) -------------------------------------------------------- int __thiscall sub_47ACA0(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // eax@1 unsigned int v6; // ecx@2 int v7; // eax@2 int result; // eax@5 int v9; // [sp+18h] [bp+Ch]@1 v3 = a3; v4 = this; v5 = sub_631390(this, a3); v9 = v5; if ( v5 == *(_DWORD *)(v4 + 4) ) goto LABEL_9; v6 = *(_DWORD *)(v5 + 28); v7 = v5 + 12; if ( *(_DWORD *)(v7 + 20) >= 0x10u ) v7 = *(_DWORD *)v7; if ( sub_422730(v3, 0, *(_DWORD *)(v3 + 16), v7, v6) < 0 ) { LABEL_9: result = a2; *(_DWORD *)a2 = *(_DWORD *)(v4 + 4); } else { result = a2; *(_DWORD *)a2 = v9; } return result; } //----- (0047AD10) -------------------------------------------------------- int __thiscall sub_47AD10(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); v3 = this + 8; *(_DWORD *)(v3 + 20) = 15; *(_DWORD *)(v3 + 16) = 0; *(_BYTE *)v3 = 0; sub_423FC0((void *)v3, a2 + 8, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 56) = 15; *(_DWORD *)(v2 + 52) = 0; *(_BYTE *)(v2 + 36) = 0; sub_423FC0((void *)(v2 + 36), a2 + 36, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 84) = 15; *(_DWORD *)(v2 + 80) = 0; *(_BYTE *)(v2 + 64) = 0; sub_423FC0((void *)(v2 + 64), a2 + 64, 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 92) = *(_DWORD *)(a2 + 92); *(_DWORD *)(v2 + 96) = *(_DWORD *)(a2 + 96); *(_DWORD *)(v2 + 100) = *(_DWORD *)(a2 + 100); *(_DWORD *)(v2 + 104) = *(_DWORD *)(a2 + 104); sub_47A9B0((void *)(v2 + 108), a2 + 108); return v2; } //----- (0047ADF0) -------------------------------------------------------- int __thiscall sub_47ADF0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_9249249 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 28; if ( result < a2 ) { v4 = sub_5CDCE0(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v10 = v4; v12 = 0; sub_4793E0(v6, v5, (void *)v4); v7 = (signed int)(*(_DWORD *)(v2 + 4) - *(_DWORD *)v2 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32)) >> 4; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 28 * a2; *(_DWORD *)(v2 + 4) = result + 28 * v8; *(_DWORD *)v2 = result; } return result; } //----- (0047AEDB) -------------------------------------------------------- void __usercall sub_47AEDB(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0047AF00) -------------------------------------------------------- char __thiscall sub_47AF00(void *this, int a2, int a3, int a4, int a5) { int v5; // edi@1 void *v6; // ebx@1 const void *v7; // ecx@3 void *v8; // esi@3 int v9; // eax@4 int v10; // eax@5 int v11; // eax@6 int i; // eax@7 int v13; // edi@10 int v14; // ecx@17 unsigned int v15; // esi@17 int v16; // eax@17 int v17; // eax@19 int v18; // eax@24 unsigned int v19; // edx@26 int v20; // ecx@26 int v21; // esi@34 int v22; // ecx@37 signed int v23; // edx@37 unsigned int v24; // edi@37 __int16 *v25; // eax@38 int v26; // eax@38 int v27; // eax@38 int v28; // ecx@41 signed int v29; // edx@41 v5 = a2; v6 = this; if ( !a2 || !a5 ) { LOBYTE(i) = (unsigned int)sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::MakeGTItemTargets", 0); return i; } v7 = *(const void **)(a2 + 4); v8 = *(void **)a2; if ( *(const void **)a2 != v7 ) { memmove_0(v8, v7, 0); v9 = a2; *(_DWORD *)(a2 + 4) = v8; v5 = v9; } v10 = *(_DWORD *)(a5 + 34); if ( v10 == 1 ) { v11 = sub_4096E0(a4); a2 = v11; if ( v11 ) { LOBYTE(i) = sub_55B830((void *)v11); if ( !(_BYTE)i ) return i; sub_4242C0(v5, (unsigned int)&a2); } goto LABEL_23; } if ( v10 == 11 ) { i = (*(int (**)(void))(*(_DWORD *)a4 + 2088))(); v13 = (int)((char *)v6 + 28); if ( *((_DWORD *)v6 + 7) != i ) { v13 = (int)((char *)v6 + 208); if ( *((_DWORD *)v6 + 52) != i ) { if ( *((_DWORD *)v6 + 1) || *((_DWORD *)v6 + 2) ) LOBYTE(i) = (*((int (__thiscall **)(_DWORD, _DWORD))v6 + 2))(*((_DWORD *)v6 + 1), 6991); return i; } } if ( !v13 ) return i; v14 = *(_DWORD *)(v13 + 164); v15 = 0; v16 = (*(_DWORD *)(v13 + 168) - v14) >> 1; if ( v16 ) { if ( (unsigned int)v16 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v17 = sub_54DE90(&unk_13253630, *(_WORD *)(v14 + 2 * v15)); a4 = sub_4096E0(v17); if ( a4 ) sub_4242C0(a2, (unsigned int)&a4); v14 = *(_DWORD *)(v13 + 164); ++v15; } while ( (*(_DWORD *)(v13 + 168) - v14) >> 1 > v15 ); } goto LABEL_22; } if ( v10 == 9 ) { i = (*(int (**)(void))(*(_DWORD *)a4 + 2088))(); v21 = (int)((char *)v6 + 28); if ( *((_DWORD *)v6 + 7) == i ) v21 = (int)((char *)v6 + 208); if ( v21 ) { v22 = *(_DWORD *)(v21 + 40) - *(_DWORD *)(v21 + 36); v23 = (signed int)(v22 + ((unsigned __int64)(-1840700269i64 * v22) >> 32)) >> 4; v24 = 0; if ( v23 + ((unsigned int)v23 >> 31) ) { do { v25 = (__int16 *)sub_4784A0(v21 + 36, v24); v26 = sub_54DE90(&unk_13253630, *v25); v27 = sub_4096E0(v26); a4 = v27; if ( v27 && sub_55B830((void *)v27) ) sub_4242C0(a2, (unsigned int)&a4); v28 = *(_DWORD *)(v21 + 40) - *(_DWORD *)(v21 + 36); v29 = (signed int)(v28 + ((unsigned __int64)(-1840700269i64 * v28) >> 32)) >> 4; ++v24; } while ( v24 < v29 + ((unsigned int)v29 >> 31) ); } LABEL_22: v5 = a2; goto LABEL_23; } } else { if ( v10 != 13 ) { LABEL_23: LOBYTE(i) = a5; if ( *(_BYTE *)(a5 + 38) ) { v18 = *(_DWORD *)(v5 + 4); if ( *(_DWORD *)v5 != v18 ) sub_4E6000(*(_DWORD *)v5, v18); v19 = *(_BYTE *)(a5 + 38); v20 = *(_DWORD *)v5; for ( i = (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2; v19 < i; i = (*(_DWORD *)(v5 + 4) - v20) >> 2 ) { i = *(_DWORD *)(v5 + 4); if ( !((*(_DWORD *)(v5 + 4) - v20) & 0xFFFFFFFC) ) break; if ( v20 != i ) *(_DWORD *)(v5 + 4) = i - 4; } } return i; } LOBYTE(i) = a3; if ( a3 ) { i = sub_4096E0(a3); a2 = i; if ( i ) LOBYTE(i) = sub_4242C0(v5, (unsigned int)&a2); } } return i; } //----- (0047B1B0) -------------------------------------------------------- int __thiscall sub_47B1B0(int this, __int16 a2) { int v2; // edx@1 int result; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 168); result = *(_DWORD *)(this + 164); v4 = this + 164; if ( result == v2 ) goto LABEL_8; do { if ( *(_WORD *)result == a2 ) break; result += 2; } while ( result != v2 ); if ( result == v2 ) LABEL_8: result = sub_47AC30(v4, (unsigned int)&a2); return result; } //----- (0047B1F0) -------------------------------------------------------- int __thiscall sub_47B1F0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 28; if ( (unsigned int)((char *)&unk_9249249 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 28; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_9249249 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_47ADF0(this, v5); } return result; } //----- (0047B270) -------------------------------------------------------- void __thiscall sub_47B270(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // esi@1 int v6; // eax@3 int v7; // ecx@3 void *v8; // eax@11 __int16 v9; // dx@11 int v10; // eax@13 int v11; // eax@15 int v12; // edi@15 int v13; // eax@22 int v14; // ecx@22 int v15; // esi@24 int v16; // eax@25 int v17; // ebx@26 int v18; // eax@27 int v19; // ebx@33 int v20; // eax@34 int v21; // ebx@39 int v22; // eax@40 unsigned __int16 v23; // ax@42 int v24; // eax@43 bool v25; // zf@43 int v26; // ebx@44 int v27; // eax@46 int v28; // edi@46 int v29; // ST18_4@46 int v30; // ST10_4@46 int v31; // eax@46 int v32; // edi@48 int v33; // eax@48 unsigned int v34; // ecx@50 int v35; // [sp-Ch] [bp-88h]@59 int v36; // [sp-8h] [bp-84h]@59 void *v37; // [sp+10h] [bp-6Ch]@1 int v38; // [sp+18h] [bp-64h]@22 int v39; // [sp+1Ch] [bp-60h]@43 int v40; // [sp+20h] [bp-5Ch]@43 int v41; // [sp+24h] [bp-58h]@42 void *v42; // [sp+28h] [bp-54h]@14 int v43; // [sp+2Ch] [bp-50h]@14 int v44; // [sp+30h] [bp-4Ch]@14 int v45; // [sp+38h] [bp-44h]@15 unsigned int v46; // [sp+3Ch] [bp-40h]@43 int v47; // [sp+40h] [bp-3Ch]@44 int v48; // [sp+44h] [bp-38h]@22 int v49; // [sp+48h] [bp-34h]@9 unsigned int v50; // [sp+4Ch] [bp-30h]@14 int v51; // [sp+50h] [bp-2Ch]@8 char v52; // [sp+57h] [bp-25h]@14 char v53; // [sp+58h] [bp-24h]@43 unsigned int v54; // [sp+6Ch] [bp-10h]@1 int v55; // [sp+78h] [bp-4h]@14 int v56; // [sp+7Ch] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v4 = 0; v5 = (int)this; v37 = this; if ( a3 && sub_479420(this, a3) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2072))(a3); v7 = v5 + 28; if ( *(_DWORD *)(v5 + 28) == v6 || (v7 = v5 + 208, *(_DWORD *)(v5 + 208) == v6) ) { v51 = v7; if ( v7 ) { v49 = (unsigned __int8)sub_5C4BE0(*(_BYTE *)(v7 + 136), *(_BYTE *)(v7 + 140)); if ( a4 ) v49 = a4; v8 = off_849C18; v9 = v49; *(_WORD *)off_849C18 = 29936; *((_WORD *)v8 + 1) = v9; if ( sub_4C81E0(&off_849C18, 4) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, a3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::CreateItemEffect : Packet Too Long", 4); } v42 = 0; v43 = 0; v44 = 0; v55 = 0; v52 = 1; v50 = 0; if ( sub_478380() ) { while ( 1 ) { v11 = sub_626BC0(dword_D554214 + 4, v50); v12 = v11; v45 = v11; if ( !v11 ) break; if ( v49 == *(_BYTE *)v11 ) { if ( *(_DWORD *)(v11 + 39) == 2 ) { sub_478E90(v51, 2); sub_478940(v5); } else { if ( (v43 - (_DWORD)v4) & 0xFFFFFFFC ) v52 = 0; else sub_47AF00((void *)v5, (int)&v42, a2, a3, v11); v4 = v42; v13 = (v43 - (signed int)v42) >> 2; v14 = 0; v48 = 0; v38 = v13; if ( v13 ) { if ( (unsigned int)v13 <= 0 ) sub_6517D8((int)"invalid vector subscript"); while ( 1 ) { v15 = *((_DWORD *)v4 + v14); if ( !v15 ) goto LABEL_56; v16 = *(_DWORD *)(v12 + 39); if ( v16 == 1 ) { v17 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(v12 + 43)); if ( !v17 ) { v36 = *(_BYTE *)v12; v35 = (int)"GuildTournamentSystem::CreateItemEffect Not Find Abstate ID :"; goto LABEL_63; } v18 = sub_401310(&unk_877138, *(_DWORD *)(*(_DWORD *)v17 + 34)); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v15 + 1588))(v15, v18) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v15 + 1604))( v15, v15, *(_DWORD *)(*(_DWORD *)v17 + 34), *(_BYTE *)(v12 + 75), 1) ) sub_639100(&unk_86DDD8, (int)"templog :", *(_BYTE *)v12); if ( v52 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v15 + 2736))(v15, *(_BYTE *)v12); } } else { if ( v16 ) { if ( v16 == 3 ) { v21 = sub_5C4D70((const char *)(v12 + 1)); if ( !v21 || (v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1804))(v15)) == 0 || !strcmp((const char *)(*(_DWORD *)v22 + 2), (const char *)(v21 + 33)) ) { v23 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)(v12 + 43)); v41 = v23; if ( v23 == -1 ) { sub_6390B0( &unk_86DDD8, (int)"GuildTournamentSystem::CreateItemEffect : Null MobIndex", v12 + 43); sub_424190(&v42); return; } sub_418AC0(&v53, "Def"); v24 = sub_552F20(v15); v25 = *(_BYTE *)(v12 + 75) == 0; v39 = *(_DWORD *)v24; v40 = *(_DWORD *)(v24 + 4); v46 = 0; if ( !v25 ) { do { v26 = sub_54DF90(&unk_13253630, (int)&v47, 5); if ( v26 ) { v27 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1744))(v15); v28 = *(_DWORD *)v26; v29 = v27; v30 = v47; v31 = sub_4012C0(v15); if ( (*(int (__thiscall **)(int, int, int, int, _DWORD, int, int, int, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(v28 + 1760))( v26, v31, v39, v40, 0, v30, v41, v29, -1, 0, 0, -1, 1, 0, 0) ) { sub_555DF0(&unk_13253630, v47, 0, 22); } else { v32 = *(_DWORD *)v26; v33 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 2088))(v15); (*(void (__thiscall **)(int, int))(v32 + 2304))(v26, v33); } v12 = v45; } else { sub_639100( &unk_86DDD8, (int)"GuildTournamentSystem::CreateItemEffect : Too many mob", 0); } v34 = *(_BYTE *)(v12 + 75); ++v46; } while ( v46 < v34 ); } } } else { sub_639100( &unk_86DDD8, (int)"GuildTournamentSystem::CreateItemEffect Not Define ACtionType ID :", *(_BYTE *)v12); } } else { v19 = (int)sub_583BA0(&unk_132577A0, v12 + 43); if ( !(v19 != 0) ) { v36 = 0; v35 = (int)"ShineObjectClass::ShineMob::sm_UseWeapon : Null skill"; LABEL_63: sub_639100(&unk_86DDD8, v35, v36); sub_424190(&v42); return; } v20 = sub_478720(v15); if ( v20 ) { if ( sub_55C5B0((void *)v20, **(_WORD **)(v19 + 4)) == 1 ) { sub_579C10((void *)v15, v19, v15, 0, -1); if ( v52 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v15 + 2736))(v15, *(_BYTE *)v12); } } } } v4 = v42; v14 = v48 + 1; v48 = v14; if ( v38 <= (unsigned int)v14 ) { v5 = (int)v37; break; } } } } } ++v50; if ( v50 >= sub_478380() ) goto LABEL_56; } sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::CreateItemEffect", 0); LABEL_56: if ( v4 ) operator delete(v4); } } } else { if ( *(_DWORD *)(v5 + 4) || *(_DWORD *)(v5 + 8) ) (*(void (__thiscall **)(_DWORD, signed int))(v5 + 8))(*(_DWORD *)(v5 + 4), 6991); } } } // 86FEB8: using guessed type int __security_cookie; // D554214: using guessed type int dword_D554214; //----- (0047B790) -------------------------------------------------------- FILE *__thiscall sub_47B790(void *this, __int16 a2) { void *v2; // esi@1 int v3; // eax@1 int v5; // eax@3 int v6; // ecx@3 v2 = this; v3 = sub_54DE90(&unk_13253630, a2); if ( !v3 ) return sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::AddTeamNPC Not Find Handle ", (unsigned __int16)a2); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2088))(v3); v6 = (int)((char *)v2 + 28); if ( *((_DWORD *)v2 + 7) != v5 ) { v6 = (int)((char *)v2 + 208); if ( *((_DWORD *)v2 + 52) != v5 ) { if ( *((_DWORD *)v2 + 1) || *((_DWORD *)v2 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v2 + 2))(*((_DWORD *)v2 + 1), 6991); return sub_639100( &unk_86DDD8, (int)"GuildTournamentSystem::AddTeamNPC Not Find Cur Guild Group", (unsigned __int16)a2); } } if ( !v6 ) return sub_639100( &unk_86DDD8, (int)"GuildTournamentSystem::AddTeamNPC Not Find Cur Guild Group", (unsigned __int16)a2); return (FILE *)sub_47B1B0(v6, a2); } //----- (0047B830) -------------------------------------------------------- int __thiscall sub_47B830(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // edi@1 int v6; // eax@8 int result; // eax@8 int v8; // [sp+8h] [bp-8h]@8 int v9; // [sp+Ch] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); v5 = v3; while ( !*(_BYTE *)(v4 + 21) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a2 ) { v5 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v5 != *(_DWORD *)(v2 + 4) && *(_DWORD *)a2 >= *(_DWORD *)(v5 + 12) ) { result = v5 + 16; } else { v8 = *(_DWORD *)a2; v9 = 0; v6 = sub_440B50((void *)v2, (int)&v8); sub_47A7B0(v2, (int)&a2, v5, v6); result = a2 + 16; } return result; } //----- (0047B8B0) -------------------------------------------------------- int __thiscall sub_47B8B0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 const void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 const void *i; // eax@5 int v11; // ecx@8 int v12; // edi@8 int v13; // [sp+0h] [bp-24h]@1 int v14; // [sp+10h] [bp-14h]@4 int *v15; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [bp-4h]@4 v15 = &v13; v2 = this; if ( a2 > (unsigned int)&unk_5D1745D ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 44; if ( result < a2 ) { v4 = sub_4785B0(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v14 = v4; v16 = 0; sub_47AA60(v6, v5, (void *)v4); v7 = *(const void **)v2; v8 = (signed int)((unsigned __int64)(780903145i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v9 = v8 + ((unsigned int)v8 >> 31); if ( *(_DWORD *)v2 ) { for ( i = *(const void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 44 ) ; operator delete(*(void **)v2); } v11 = v14; result = v14 + 44 * a2; v12 = v14 + 44 * v9; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v12; *(_DWORD *)v2 = v11; } return result; } //----- (0047B99E) -------------------------------------------------------- void __usercall sub_47B99E(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0047B9C0) -------------------------------------------------------- int __thiscall sub_47B9C0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@6 int v7; // edx@6 int v8; // edx@9 int v9; // edx@11 void *v10; // eax@13 int v11; // edx@14 int v12; // esi@14 int v13; // esi@15 int v14; // edx@18 int v15; // esi@20 int v16; // esi@22 int v17; // edx@26 int v18; // esi@26 int v19; // edi@26 int v20; // edi@28 int v21; // edi@30 int v22; // esi@33 void *v23; // edx@36 int v24; // esi@36 int v25; // esi@38 int v26; // esi@40 int v27; // edi@46 int v28; // edi@48 int v29; // ecx@54 int result; // eax@54 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_4924923 ) { if ( *((_DWORD *)a5 + 8) >= 0x10u ) operator delete(*((void **)a5 + 3)); *((_DWORD *)a5 + 8) = 15; *((_DWORD *)a5 + 7) = 0; *((_BYTE *)a5 + 12) = 0; operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 68) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 68) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 69) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 69) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_52: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 68) = 1; *(_BYTE *)(v13 + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 68) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 69) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 69) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_52; } *(_BYTE *)(v11 + 68) = 1; *(_BYTE *)(v22 + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 68) = 1; return result; } //----- (0047BC10) -------------------------------------------------------- int __cdecl sub_47BC10(int a1, int a2, int a3) { int v3; // edi@2 int v4; // esi@2 int result; // eax@4 if ( a1 == a2 ) { result = a3; } else { v3 = a3; v4 = a1 + 4; do { *(_BYTE *)v3 = *(_BYTE *)(v4 - 4); *(_WORD *)(v3 + 2) = *(_WORD *)(v4 - 2); *(_WORD *)(v3 + 4) = *(_WORD *)v4; sub_423FC0((void *)(v3 + 8), v4 + 4, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v3 + 36), v4 + 32, 0, 0xFFFFFFFFu); v4 += 64; v3 += 64; } while ( v4 - 4 != a2 ); result = v3; } return result; } //----- (0047BC80) -------------------------------------------------------- int __cdecl sub_47BC80(int a1, int a2, int a3) { int v3; // edi@2 int v4; // esi@2 int v5; // ecx@3 int result; // eax@4 if ( a1 == a2 ) { result = a3; } else { v3 = a3; v4 = a1 + 8; do { *(_DWORD *)v3 = *(_DWORD *)(v4 - 8); *(_DWORD *)(v3 + 4) = *(_DWORD *)(v4 - 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)v4; sub_423FC0((void *)(v3 + 12), v4 + 4, 0, 0xFFFFFFFFu); v5 = *(_DWORD *)(v4 + 32); v4 += 44; *(_DWORD *)(v3 + 40) = v5; v3 += 44; } while ( v4 - 8 != a2 ); result = v3; } return result; } //----- (0047BCE0) -------------------------------------------------------- void __cdecl sub_47BCE0(int a1, int a2) { if ( *(_DWORD *)(a2 + 56) >= 0x10u ) operator delete(*(void **)(a2 + 36)); *(_DWORD *)(a2 + 56) = 15; *(_DWORD *)(a2 + 52) = 0; *(_BYTE *)(a2 + 36) = 0; if ( *(_DWORD *)(a2 + 28) >= 0x10u ) operator delete(*(void **)(a2 + 8)); *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 28) = 15; *(_BYTE *)(a2 + 8) = 0; } //----- (0047BD30) -------------------------------------------------------- int __cdecl sub_47BD30(int a1, int a2) { int result; // eax@3 if ( *(_DWORD *)(a2 + 32) >= 0x10u ) operator delete(*(void **)(a2 + 12)); result = 0; *(_DWORD *)(a2 + 32) = 15; *(_DWORD *)(a2 + 28) = 0; *(_BYTE *)(a2 + 12) = 0; return result; } //----- (0047BD60) -------------------------------------------------------- int __cdecl sub_47BD60(char a1, int a2) { int result; // eax@1 result = sub_47B830((int)&unk_D55421C, (int)&a1); *(_DWORD *)result = a2; return result; } //----- (0047BD80) -------------------------------------------------------- char __thiscall sub_47BD80(int this, int a2, int a3, char *a4, char *a5) { int v5; // edi@1 int v6; // esi@1 signed int v7; // ecx@1 unsigned int v8; // ebx@1 char *v9; // eax@4 int v10; // esi@4 int v11; // esi@5 int v13; // [sp+18h] [bp-6Ch]@2 __int16 v14; // [sp+1Ch] [bp-68h]@4 void *v15; // [sp+20h] [bp-64h]@4 int v16; // [sp+30h] [bp-54h]@11 unsigned int v17; // [sp+34h] [bp-50h]@9 void *v18; // [sp+3Ch] [bp-48h]@4 int v19; // [sp+4Ch] [bp-38h]@9 unsigned int v20; // [sp+50h] [bp-34h]@7 void *v21; // [sp+58h] [bp-2Ch]@4 int v22; // [sp+68h] [bp-1Ch]@7 unsigned int v23; // [sp+6Ch] [bp-18h]@5 unsigned int v24; // [sp+74h] [bp-10h]@1 int v25; // [sp+80h] [bp-4h]@4 int v26; // [sp+84h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v5 = this; v6 = *(_DWORD *)(this + 12); v7 = *(_DWORD *)(this + 16) - v6; v8 = 0; if ( v7 / 196 ) { v13 = 0; if ( (unsigned int)(v7 / 196) <= 0 ) LABEL_14: sub_6517D8((int)"invalid vector subscript"); do { if ( a3 == *(_WORD *)(v6 + v13 + 4) ) { v25 = 0; memset(&v14, 0, 0x58u); v14 = sub_4802C0(a2); v9 = (char *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2196))(a2); sub_4241C0((int)&v21, v9, strlen(v9)); sub_4241C0((int)&v15, a4, strlen(a4)); sub_4241C0((int)&v18, a5, strlen(a5)); v10 = *(_DWORD *)(v5 + 12); if ( (*(_DWORD *)(v5 + 16) - v10) / 196 <= v8 ) goto LABEL_14; v11 = v10 + v13 + 108; *(_WORD *)v11 = v14; sub_423FC0((void *)(v11 + 4), (int)&v15, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v11 + 32), (int)&v18, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v11 + 60), (int)&v21, 0, 0xFFFFFFFFu); v25 = -1; if ( v23 >= 0x10 ) operator delete(v21); v23 = 15; v22 = 0; LOBYTE(v21) = 0; if ( v20 >= 0x10 ) operator delete(v18); v20 = 15; v19 = 0; LOBYTE(v18) = 0; if ( v17 >= 0x10 ) operator delete(v15); v17 = 15; v16 = 0; LOBYTE(v15) = 0; } v6 = *(_DWORD *)(v5 + 12); v13 += 196; ++v8; } while ( (*(_DWORD *)(v5 + 16) - v6) / 196 > v8 ); } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0047BFB0) -------------------------------------------------------- void __stdcall sub_47BFB0(void *a1) { void *v1; // esi@1 void *i; // edi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 69); v1 = i ) { sub_47BFB0(*((void **)i + 2)); i = *(void **)i; if ( *((_DWORD *)v1 + 8) >= 0x10u ) operator delete(*((void **)v1 + 3)); *((_DWORD *)v1 + 8) = 15; *((_DWORD *)v1 + 7) = 0; *((_BYTE *)v1 + 12) = 0; operator delete(v1); } } //----- (0047C010) -------------------------------------------------------- int __thiscall sub_47C010(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 44; if ( (unsigned int)((char *)&unk_5D1745D - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 44; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_5D1745D - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_47B8B0(this, v5); } return result; } //----- (0047C090) -------------------------------------------------------- int __thiscall sub_47C090(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int v14; // eax@35 int i; // ecx@36 int v16; // eax@38 int v17; // eax@61 int result; // eax@63 int v19; // [sp+10h] [bp-8h]@3 void *v20; // [sp+14h] [bp-4h]@1 v3 = a3; v20 = this; if ( *(_BYTE *)(a3 + 69) ) sub_6517D8((int)"invalid map/set iterator"); v19 = a3; sub_478310(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 69) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 69) ) *(_DWORD *)(v4 + 4) = v6; v7 = v20; v8 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v20 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 69) ) { v9 = v6; } else { v9 = sub_631310(v4); v7 = v20; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 69) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_6312F0(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 69) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 69) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 68); *(_BYTE *)(v5 + 68) = *(_BYTE *)(v3 + 68); *(_BYTE *)(v3 + 68) = v13; LABEL_35: v14 = v19; if ( *(_BYTE *)(v19 + 68) == 1 ) { for ( i = (int)v20; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 68) != 1 ) break; v16 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v16 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v16 + 68) ) { *(_BYTE *)(v16 + 68) = 1; *(_BYTE *)(v6 + 68) = 0; sub_478670(i, v6); v16 = *(_DWORD *)(v6 + 8); i = (int)v20; } if ( *(_BYTE *)(v16 + 69) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v16 + 68) != 1 || *(_BYTE *)(*(_DWORD *)(v16 + 8) + 68) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 68) == 1 ) { *(_BYTE *)(*(_DWORD *)v16 + 68) = 1; *(_BYTE *)(v16 + 68) = 0; sub_631330(i, v16); v16 = *(_DWORD *)(v6 + 8); i = (int)v20; } *(_BYTE *)(v16 + 68) = *(_BYTE *)(v6 + 68); *(_BYTE *)(v6 + 68) = 1; *(_BYTE *)(*(_DWORD *)(v16 + 8) + 68) = 1; sub_478670(i, v6); break; } } else { if ( !*(_BYTE *)(v16 + 68) ) { *(_BYTE *)(v16 + 68) = 1; *(_BYTE *)(v6 + 68) = 0; sub_631330(i, v6); v16 = *(_DWORD *)v6; i = (int)v20; } if ( *(_BYTE *)(v16 + 69) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 68) != 1 || *(_BYTE *)(*(_DWORD *)v16 + 68) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v16 + 68) == 1 ) { *(_BYTE *)(*(_DWORD *)(v16 + 8) + 68) = 1; *(_BYTE *)(v16 + 68) = 0; sub_478670(i, v16); v16 = *(_DWORD *)v6; i = (int)v20; } *(_BYTE *)(v16 + 68) = *(_BYTE *)(v6 + 68); *(_BYTE *)(v6 + 68) = 1; *(_BYTE *)(*(_DWORD *)v16 + 68) = 1; sub_631330(i, v6); break; } } *(_BYTE *)(v16 + 68) = 0; LABEL_53: v4 = v6; } v14 = v19; *(_BYTE *)(v4 + 68) = 1; } if ( *(_DWORD *)(v14 + 32) >= 0x10u ) operator delete(*(void **)(v14 + 12)); *(_DWORD *)(v19 + 32) = 15; *(_DWORD *)(v19 + 28) = 0; *(_BYTE *)(v19 + 12) = 0; operator delete((void *)v19); v17 = *((_DWORD *)v20 + 2); if ( v17 ) *((_DWORD *)v20 + 2) = v17 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (0047C310) -------------------------------------------------------- int __thiscall sub_47C310(int this, int a2, void *a3, int a4) { int v4; // edx@1 int v5; // eax@1 int v6; // ecx@1 int v7; // edi@1 void **v8; // ebx@1 bool v9; // al@1 int v10; // eax@4 char *v11; // edx@6 unsigned int v12; // esi@8 unsigned int v13; // edi@8 unsigned int v14; // ecx@8 int v15; // eax@12 bool v16; // sf@12 unsigned int v17; // edi@17 unsigned int v18; // esi@19 unsigned int v19; // edx@19 int v20; // ecx@22 int v21; // eax@24 bool v22; // sf@24 signed int v23; // eax@26 int v24; // edx@31 int v25; // esi@35 int v26; // ecx@37 int v27; // ecx@38 int result; // eax@38 int v29; // eax@41 int v30; // [sp-10h] [bp-2Ch]@37 char v31; // [sp-Ch] [bp-28h]@37 int v32; // [sp-8h] [bp-24h]@37 void *v33; // [sp-4h] [bp-20h]@37 int v34; // [sp+Ch] [bp-10h]@4 int v35; // [sp+10h] [bp-Ch]@1 char v36; // [sp+14h] [bp-8h]@1 int v37; // [sp+18h] [bp-4h]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = v5; v8 = (void **)((char *)a3 + 12); v9 = 1; v35 = v4; v37 = v6; v36 = 1; if ( !*(_BYTE *)(v6 + 69) ) { while ( 1 ) { v34 = v6; v10 = v6 + 12; if ( (_BYTE)a4 ) { if ( *((_DWORD *)a3 + 8) < 0x10u ) v11 = (char *)a3 + 12; else v11 = (char *)*v8; v12 = *(_DWORD *)(v6 + 28); v13 = *((_DWORD *)a3 + 7); v14 = v12; if ( v12 >= v13 ) v14 = *((_DWORD *)a3 + 7); if ( *(_DWORD *)(v10 + 20) >= 0x10u ) v10 = *(_DWORD *)v10; v15 = sub_4189B0(v10, (int)v11, v14); v16 = v15 < 0; if ( !v15 ) { if ( v12 < v13 ) { v9 = 0; goto LABEL_30; } v16 = (v12 != v13) < 0; } v9 = !v16; } else { v17 = *(_DWORD *)(v6 + 28); if ( *(_DWORD *)(v6 + 32) >= 0x10u ) v10 = *(_DWORD *)v10; v18 = *((_DWORD *)a3 + 7); v19 = *((_DWORD *)a3 + 7); if ( v18 >= v17 ) v19 = *(_DWORD *)(v6 + 28); if ( *((_DWORD *)a3 + 8) < 0x10u ) v20 = (int)((char *)a3 + 12); else v20 = (int)*v8; v21 = sub_4189B0(v20, v10, v19); v22 = v21 < 0; if ( !v21 ) { if ( v18 >= v17 ) v23 = v18 != v17; else v23 = -1; v22 = v23 < 0; } v9 = v22; } LABEL_30: v36 = v9; if ( v9 ) v24 = *(_DWORD *)v37; else v24 = *(_DWORD *)(v37 + 8); v37 = v24; if ( *(_BYTE *)(v24 + 69) ) { v7 = v34; v4 = v35; break; } v6 = v24; } } v25 = v7; a4 = v7; if ( v9 ) { if ( v7 == **(_DWORD **)(v4 + 4) ) { v33 = a3; v32 = v7; v31 = 1; v30 = (int)&a4; v26 = v4; LABEL_38: v27 = *(_DWORD *)sub_47B9C0(v26, v30, v31, v32, v33); result = a2; *(_DWORD *)a2 = v27; *(_BYTE *)(a2 + 4) = 1; return result; } sub_4783A0(&a4); v25 = a4; } if ( *((_DWORD *)a3 + 8) < 0x10u ) v29 = (int)((char *)a3 + 12); else v29 = (int)*v8; if ( sub_422730(v25 + 12, 0, *(_DWORD *)(v25 + 28), v29, *((_DWORD *)a3 + 7)) < 0 ) { v33 = a3; v32 = v7; v31 = v36; v26 = v35; v30 = (int)&a4; goto LABEL_38; } if ( *((_DWORD *)a3 + 8) >= 0x10u ) operator delete(*v8); *((_DWORD *)a3 + 8) = 15; *((_DWORD *)a3 + 7) = 0; *(_BYTE *)v8 = 0; operator delete(a3); result = a2; *(_DWORD *)a2 = v25; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (0047C4D0) -------------------------------------------------------- int __thiscall sub_47C4D0(void *this, int a2, int a3, const void *a4) { int v4; // ebx@1 signed int v5; // ecx@1 int v6; // edi@1 void *v7; // eax@3 int v8; // ecx@5 int v9; // eax@5 int result; // eax@8 int v11; // [sp+Ch] [bp-4h]@1 v4 = (int)this; v5 = a3 - *(_DWORD *)this; v6 = v5 / 28; v11 = v5 / 28; if ( *(_DWORD *)(v4 + 4) == *(_DWORD *)(v4 + 8) ) sub_47B1F0(v4, 1); v7 = *(void **)(v4 + 4); if ( v7 ) { memcpy(v7, a4, 0x1Cu); v6 = v11; } *(_DWORD *)(v4 + 4) += 28; v8 = *(_DWORD *)(v4 + 4); v9 = 28 * v6 + *(_DWORD *)v4; if ( v9 != v8 - 28 && v8 - 28 != v8 ) sub_479B20(v9, v8 - 28, v8); result = a2; *(_DWORD *)a2 = 28 * v6 + *(_DWORD *)v4; return result; } //----- (0047C608) -------------------------------------------------------- void __usercall sub_47C608(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0047C650) -------------------------------------------------------- int __cdecl sub_47C650(int a1, int a2, int a3) { int v3; // ebx@2 int v4; // edi@2 int v5; // esi@2 int result; // eax@4 if ( a1 == a2 ) { result = a3; } else { v3 = a3; v4 = a3 + 140; v5 = a1 + 140; do { *(_DWORD *)v3 = *(_DWORD *)(v5 - 140); *(_WORD *)(v4 - 136) = *(_WORD *)(v5 - 136); sub_423FC0((void *)(v4 - 132), v5 - 132, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v4 - 104), v5 - 104, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v4 - 76), v5 - 76, 0, 0xFFFFFFFFu); *(_DWORD *)(v4 - 48) = *(_DWORD *)(v5 - 48); *(_DWORD *)(v4 - 44) = *(_DWORD *)(v5 - 44); *(_DWORD *)(v4 - 40) = *(_DWORD *)(v5 - 40); *(_DWORD *)(v4 - 36) = *(_DWORD *)(v5 - 36); *(_WORD *)(v4 - 32) = *(_WORD *)(v5 - 32); sub_423FC0((void *)(v4 - 28), v5 - 28, 0, 0xFFFFFFFFu); sub_423FC0((void *)v4, v5, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v4 + 28), v5 + 28, 0, 0xFFFFFFFFu); v5 += 196; v3 += 196; v4 += 196; } while ( v5 - 140 != a2 ); result = v3; } return result; } //----- (0047C740) -------------------------------------------------------- void __cdecl sub_47C740(int a1, int a2) { int v2; // esi@2 if ( a1 != a2 ) { v2 = a1 + 56; do { if ( *(_DWORD *)v2 >= 0x10u ) operator delete(*(void **)(v2 - 20)); *(_DWORD *)v2 = 15; *(_DWORD *)(v2 - 4) = 0; *(_BYTE *)(v2 - 20) = 0; if ( *(_DWORD *)(v2 - 28) >= 0x10u ) operator delete(*(void **)(v2 - 48)); *(_DWORD *)(v2 - 28) = 15; *(_DWORD *)(v2 - 32) = 0; *(_BYTE *)(v2 - 48) = 0; v2 += 64; } while ( v2 - 56 != a2 ); } } //----- (0047C7A0) -------------------------------------------------------- void __cdecl sub_47C7A0(int a1, int a2) { int v2; // esi@2 if ( a1 != a2 ) { v2 = a1 + 32; do { if ( *(_DWORD *)v2 >= 0x10u ) operator delete(*(void **)(v2 - 20)); *(_DWORD *)v2 = 15; *(_DWORD *)(v2 - 4) = 0; *(_BYTE *)(v2 - 20) = 0; v2 += 44; } while ( v2 - 32 != a2 ); } } //----- (0047C7F0) -------------------------------------------------------- int __cdecl sub_47C7F0(int a1, int a2) { int v2; // esi@2 int result; // eax@15 if ( a1 != a2 ) { v2 = a1 + 188; do { if ( *(_DWORD *)v2 >= 0x10u ) operator delete(*(void **)(v2 - 20)); *(_DWORD *)v2 = 15; *(_DWORD *)(v2 - 4) = 0; *(_BYTE *)(v2 - 20) = 0; if ( *(_DWORD *)(v2 - 28) >= 0x10u ) operator delete(*(void **)(v2 - 48)); *(_DWORD *)(v2 - 28) = 15; *(_DWORD *)(v2 - 32) = 0; *(_BYTE *)(v2 - 48) = 0; if ( *(_DWORD *)(v2 - 56) >= 0x10u ) operator delete(*(void **)(v2 - 76)); *(_DWORD *)(v2 - 56) = 15; *(_DWORD *)(v2 - 60) = 0; *(_BYTE *)(v2 - 76) = 0; if ( *(_DWORD *)(v2 - 104) >= 0x10u ) operator delete(*(void **)(v2 - 124)); *(_DWORD *)(v2 - 104) = 15; *(_DWORD *)(v2 - 108) = 0; *(_BYTE *)(v2 - 124) = 0; if ( *(_DWORD *)(v2 - 132) >= 0x10u ) operator delete(*(void **)(v2 - 152)); *(_DWORD *)(v2 - 132) = 15; *(_DWORD *)(v2 - 136) = 0; *(_BYTE *)(v2 - 152) = 0; if ( *(_DWORD *)(v2 - 160) >= 0x10u ) operator delete(*(void **)(v2 - 180)); *(_DWORD *)(v2 - 160) = 15; *(_DWORD *)(v2 - 164) = 0; *(_BYTE *)(v2 - 180) = 0; v2 += 196; result = v2 - 188; } while ( v2 - 188 != a2 ); } return result; } //----- (0047C8F0) -------------------------------------------------------- int __cdecl sub_47C8F0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_BYTE *)v3 = *(_BYTE *)v4; *(_WORD *)(v3 + 2) = *(_WORD *)(v4 + 2); *(_WORD *)(v3 + 4) = *(_WORD *)(v4 + 4); *(_DWORD *)(v3 + 28) = 15; *(_DWORD *)(v3 + 24) = 0; *(_BYTE *)(v3 + 8) = 0; sub_423FC0((void *)(v3 + 8), v4 + 8, 0, 0xFFFFFFFFu); *(_DWORD *)(v3 + 56) = 15; *(_DWORD *)(v3 + 52) = 0; LOBYTE(v9) = 2; *(_BYTE *)(v3 + 36) = 0; sub_423FC0((void *)(v3 + 36), v4 + 36, 0, 0xFFFFFFFFu); } v3 += 64; LOBYTE(v9) = 0; v4 += 64; } return v3; } //----- (0047C9E0) -------------------------------------------------------- int __cdecl sub_47C9E0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; *(_DWORD *)(v3 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(v4 + 8); *(_DWORD *)(v3 + 32) = 15; *(_DWORD *)(v3 + 28) = 0; *(_BYTE *)(v3 + 12) = 0; sub_423FC0((void *)(v3 + 12), v4 + 12, 0, 0xFFFFFFFFu); *(_DWORD *)(v3 + 40) = *(_DWORD *)(v4 + 40); } v3 += 44; LOBYTE(v9) = 0; v4 += 44; } return v3; } //----- (0047CAB0) -------------------------------------------------------- int __cdecl sub_47CAB0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) sub_47AD10(v3, v4); v3 += 196; LOBYTE(v9) = 0; v4 += 196; } return v3; } //----- (0047CB60) -------------------------------------------------------- void __thiscall sub_47CB60(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 24) ) operator delete(*(void **)(this + 24)); *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 32) = 0; } //----- (0047CE40) -------------------------------------------------------- int __thiscall sub_47CE40(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(result + 20) = result; *(_DWORD *)(this + 1) = *(_DWORD *)a2; *(_DWORD *)(*(_DWORD *)(this + 20) + 5) = *(_DWORD *)(a2 + 60); *(_DWORD *)(*(_DWORD *)(this + 20) + 9) = *(_DWORD *)(a2 + 112); *(_DWORD *)(*(_DWORD *)(this + 20) + 13) = 0; **(_BYTE **)(this + 20) = 0; return result; } //----- (0047CE80) -------------------------------------------------------- void __thiscall sub_47CE80(int this, const void *a2) { const void *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 void *v7; // edi@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( (unsigned int)a2 >= v4 || *(_DWORD *)v3 > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(v3 + 8) ) sub_47C010(v3, 1); } else { v5 = (signed int)((unsigned __int64)(780903145i64 * (signed int)((char *)a2 - *(_DWORD *)v3)) >> 32) >> 3; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_47C010(v3, 1); v2 = (const void *)(*(_DWORD *)v3 + 44 * v6); } v7 = *(void **)(v3 + 4); if ( v7 ) memcpy(v7, v2, 0x2Cu); *(_DWORD *)(v3 + 4) += 44; } //----- (0047CEF0) -------------------------------------------------------- int __thiscall sub_47CEF0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 69) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 69) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 69); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 69); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_47C090((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_47BFB0(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (0047CFB0) -------------------------------------------------------- int __thiscall sub_47CFB0(int this, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // esi@1 int v6; // eax@1 int v7; // edi@1 int result; // eax@2 int v9; // eax@4 int v10; // eax@17 int v11; // ecx@23 int v12; // [sp+Ch] [bp-8h]@23 v4 = a4; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = a4 + 12; if ( !*(_DWORD *)(this + 8) ) { sub_47B9C0(this, a2, 1, v6, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v6 ) { v9 = a3 + 12; if ( *(_DWORD *)(a3 + 32) >= 0x10u ) v9 = *(_DWORD *)v9; if ( sub_422730(a4 + 12, 0, *(_DWORD *)(a4 + 28), v9, *(_DWORD *)(a3 + 28)) < 0 ) { sub_47B9C0(v5, a2, 1, a3, (void *)v4); return a2; } goto LABEL_23; } if ( a3 == v6 ) { if ( sub_479A40(*(_DWORD *)(v6 + 8) + 12, a4 + 12) ) { sub_47B9C0(v5, a2, 0, *(_DWORD *)(*(_DWORD *)(v5 + 4) + 8), (void *)v4); return a2; } goto LABEL_23; } if ( sub_479A40(a4 + 12, a3 + 12) ) { a4 = a3; sub_4783A0(&a4); if ( sub_479A40(a4 + 12, v7) ) { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 69) ) { sub_47B9C0(v5, a2, 0, a4, (void *)v4); result = a2; } else { sub_47B9C0(v5, a2, 1, a3, (void *)v4); result = a2; } return result; } } if ( !sub_479A40(a3 + 12, v7) ) goto LABEL_23; a4 = a3; sub_478310(&a4); v10 = a4; if ( a4 == *(_DWORD *)(v5 + 4) ) goto LABEL_20; if ( !sub_479A40(v7, a4 + 12) ) { LABEL_23: v11 = *(_DWORD *)sub_47C310(v5, (int)&v12, (void *)v4, 0); result = a2; *(_DWORD *)a2 = v11; return result; } v10 = a4; LABEL_20: if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 69) ) { sub_47B9C0(v5, a2, 0, a3, (void *)v4); result = a2; } else { sub_47B9C0(v5, a2, 1, v10, (void *)v4); result = a2; } return result; } //----- (0047D170) -------------------------------------------------------- int __thiscall sub_47D170(int this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@2 signed int v5; // ebx@9 int v6; // eax@11 int v7; // eax@11 signed int v8; // ecx@11 int v9; // ecx@16 int v10; // edx@16 int v11; // eax@16 void *v12; // eax@16 void *v13; // esi@17 int v14; // esi@26 int v15; // eax@26 int v16; // esi@29 int v17; // eax@29 int v19; // [sp+Ch] [bp-3Ch]@1 char v20; // [sp+10h] [bp-38h]@16 int v21; // [sp+11h] [bp-37h]@16 int v22; // [sp+15h] [bp-33h]@16 int v23; // [sp+19h] [bp-2Fh]@16 int v24; // [sp+1Dh] [bp-2Bh]@16 char *v25; // [sp+24h] [bp-24h]@16 void *v26; // [sp+28h] [bp-20h]@16 int v27; // [sp+2Ch] [bp-1Ch]@16 int v28; // [sp+30h] [bp-18h]@16 unsigned int v29; // [sp+38h] [bp-10h]@1 int v30; // [sp+44h] [bp-4h]@16 int v31; // [sp+48h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)(this + 12); v19 = v3; if ( v3 != *(_DWORD *)(this + 16) ) { do { v4 = v2 + 28; if ( *(_DWORD *)(v2 + 28) == *(_DWORD *)v3 || (v4 = v2 + 208, *(_DWORD *)(v2 + 208) == *(_DWORD *)v3) ) { if ( v4 && sub_58FCB0(v3 + 92, a2) ) { v5 = *(_DWORD *)(v4 + 144); if ( v5 <= 1 ) v5 = 1; v6 = v5 * sub_5C4AE0(*(_DWORD *)(v2 + 388)); *(_DWORD *)(v4 + 60) += v6; *(_DWORD *)(v4 + 68) += v6; v7 = *(_DWORD *)(dword_D554210 + 56); v8 = 2000; if ( v7 && *(_DWORD *)(v7 + 40) ) v8 = *(_WORD *)sub_626BC0(dword_D554218 + 4, 0); if ( *(_DWORD *)(v4 + 60) >= (unsigned int)v8 ) sub_479840(v4); sub_479590(v2, v4); v9 = *(_DWORD *)v4; v10 = *(_DWORD *)(v4 + 60); v25 = &v20; v11 = *(_DWORD *)(v4 + 112); v26 = 0; v27 = 0; v28 = 0; v21 = v9; v22 = v10; v23 = v11; v24 = 0; v20 = 0; v12 = *(void **)(v4 + 116); v30 = 0; if ( v12 ) { v13 = v12; } else { sub_478BB0(v4); v13 = *(void **)(v4 + 116); } if ( v13 ) sub_479180((int)&v20, v13, 0); v30 = -1; if ( v26 ) operator delete(v26); v26 = 0; v27 = 0; v28 = 0; v3 = v19; } } else { if ( *(_DWORD *)(v2 + 4) || *(_DWORD *)(v2 + 8) ) (*(void (__thiscall **)(_DWORD, signed int))(v2 + 8))(*(_DWORD *)(v2 + 4), 6991); } v3 += 196; v19 = v3; } while ( v3 != *(_DWORD *)(v2 + 16) ); } if ( sub_58FCB0(v2 + 472, a2) ) { sub_58FC60(v2 + 472, 0); v14 = *(_DWORD *)(v2 + 12); v15 = (*(_DWORD *)(v2 + 16) - v14) / 196; if ( v15 ) { if ( !v15 ) sub_6517D8((int)"invalid vector subscript"); v16 = *(_DWORD *)v14; v17 = v2 + 28; if ( *(_DWORD *)(v2 + 28) == v16 || (v17 = v2 + 208, *(_DWORD *)(v2 + 208) == v16) ) { if ( v17 ) sub_479840(v17); } else { if ( *(_DWORD *)(v2 + 4) || *(_DWORD *)(v2 + 8) ) (*(void (__thiscall **)(_DWORD, signed int))(v2 + 8))(*(_DWORD *)(v2 + 4), 6991); } } } sub_47A510((void *)(v2 + 28), a2); sub_47A510((void *)(v2 + 208), a2); return (**(int (__cdecl ***)(_DWORD))(v2 + 396))(a2); } // 86FEB8: using guessed type int __security_cookie; // D554210: using guessed type int dword_D554210; // D554218: using guessed type int dword_D554218; //----- (0047D3C0) -------------------------------------------------------- char __thiscall sub_47D3C0(int this, char a2, __int16 a3) { int v3; // esi@1 int v4; // edx@1 int v5; // eax@1 unsigned int v6; // ebx@1 int v7; // ecx@2 unsigned int v8; // edi@9 int v9; // eax@11 int v10; // eax@13 int v11; // eax@18 int v12; // edx@23 int v13; // eax@23 int v14; // edx@25 int v15; // eax@25 int v16; // edx@25 void *v17; // eax@25 int v19; // eax@38 int v20; // edi@40 int v21; // esi@49 __int16 v22; // ax@49 int v23; // [sp+Ch] [bp-13Ch]@23 char v24; // [sp+10h] [bp-138h]@25 int v25; // [sp+11h] [bp-137h]@25 int v26; // [sp+15h] [bp-133h]@25 int v27; // [sp+19h] [bp-12Fh]@25 int v28; // [sp+1Dh] [bp-12Bh]@25 char *v29; // [sp+24h] [bp-124h]@25 void *v30; // [sp+28h] [bp-120h]@25 int v31; // [sp+2Ch] [bp-11Ch]@25 int v32; // [sp+30h] [bp-118h]@25 char v33; // [sp+38h] [bp-110h]@32 unsigned int v34; // [sp+138h] [bp-10h]@1 int v35; // [sp+144h] [bp-4h]@25 int v36; // [sp+148h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 20); v5 = (*(_DWORD *)(this + 24) - v4) >> 6; v6 = 0; if ( !v5 ) return 0; v7 = v4 + 2; if ( (unsigned int)v5 <= 0 ) goto LABEL_8; while ( a3 != *(_WORD *)v7 ) { ++v6; v7 += 64; if ( v5 <= v6 ) return 0; } if ( a2 ) { if ( v5 <= v6 ) LABEL_8: sub_6517D8((int)"invalid vector subscript"); v8 = v6 << 6; if ( !*(_BYTE *)((v6 << 6) + v4) ) ++*(_DWORD *)(v3 + 112); v9 = *(_DWORD *)(v3 + 20); if ( (*(_DWORD *)(v3 + 24) - v9) >> 6 <= v6 ) sub_6517D8((int)"invalid vector subscript"); v10 = v8 + v9 + 36; } else { if ( v5 <= v6 ) sub_6517D8((int)"invalid vector subscript"); v8 = v6 << 6; if ( *(_BYTE *)((v6 << 6) + v4) ) --*(_DWORD *)(v3 + 112); v11 = *(_DWORD *)(v3 + 20); if ( (*(_DWORD *)(v3 + 24) - v11) >> 6 <= v6 ) sub_6517D8((int)"invalid vector subscript"); v10 = v8 + v11 + 8; } if ( *(_DWORD *)(v10 + 20) >= 0x10u ) v10 = *(_DWORD *)v10; v12 = (unsigned __int16)sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v10); v13 = *(_DWORD *)(v3 + 20); v23 = v12; if ( (*(_DWORD *)(v3 + 24) - v13) >> 6 <= v6 ) sub_6517D8((int)"invalid vector subscript"); *(_BYTE *)(v8 + v13) = a2; v14 = *(_DWORD *)v3; v29 = &v24; v15 = *(_DWORD *)(v3 + 60); v25 = v14; v16 = *(_DWORD *)(v3 + 112); v30 = 0; v31 = 0; v32 = 0; v26 = v15; v27 = v16; v28 = 0; v24 = 0; v17 = *(void **)(v3 + 116); v35 = 0; if ( !v17 ) { sub_478BB0(v3); v17 = *(void **)(v3 + 116); } if ( v17 ) sub_479180((int)&v24, v17, 0); if ( -1 == (_WORD)v23 ) { if ( byte_7493ED ) { if ( byte_14D130B4 ) { sprintf(&v33, "%.255s", "GuildTournamentSystem::GuildGroup::ChangeGateState Not Find Flag Change Type "); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v33, dword_14D12F30); } } LABEL_34: if ( v30 ) operator delete(v30); return 0; } v19 = *(_DWORD *)(v3 + 20); if ( (*(_DWORD *)(v3 + 24) - v19) >> 6 <= v6 ) sub_6517D8((int)"invalid vector subscript"); v20 = sub_54DE90(&unk_13253630, *(_WORD *)(v8 + v19 + 4)); if ( !v20 ) goto LABEL_34; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v20 + 1232))(v20) != 4 ) { if ( byte_7493ED ) { if ( byte_14D130B4 ) { sprintf(&v33, "%.255s", "GuildTourmentSystem::GuildGroup::ChangeGateState No NPC Type : "); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v33, dword_14D12F30); } } if ( *(_DWORD *)(v3 + 52) || *(_DWORD *)(v3 + 56) ) (*(void (__thiscall **)(_DWORD, signed int))(v3 + 56))(*(_DWORD *)(v3 + 52), 6977); goto LABEL_34; } v21 = *(_DWORD *)v20; v22 = sub_4802C0(v20); (*(void (__thiscall **)(int, _DWORD, int, _DWORD))(v21 + 3944))(v20, (unsigned __int16)v22, v23, 0); sub_478130((void *)v20); if ( v30 ) operator delete(v30); return 1; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D130B4: using guessed type char byte_14D130B4; //----- (0047D6D0) -------------------------------------------------------- int __thiscall sub_47D6D0(void *this, int a2, int a3) { int result; // eax@1 void *v4; // ebx@1 int v5; // ecx@3 int v6; // ecx@9 int v7; // ebx@12 int v8; // eax@13 int v9; // ST18_4@14 __time32_t v10; // eax@14 char *v11; // ebx@15 int v12; // ebx@17 bool v13; // zf@17 int v14; // ebx@17 __int16 v15; // ax@18 int v16; // edx@18 signed int v17; // ST18_4@18 unsigned __int8 v18; // al@18 int v19; // eax@18 int v20; // ecx@18 void *v21; // eax@18 void *v22; // eax@21 void *v23; // eax@25 int v24; // edx@25 int v25; // eax@25 int v26; // eax@25 int v27; // eax@25 int v28; // ST04_4@25 int v29; // eax@25 void *v30; // eax@25 int v31; // edx@25 int v32; // eax@25 int v33; // edi@25 int v34; // eax@25 int v35; // eax@25 int v36; // ST04_4@25 int v37; // eax@25 char v38; // [sp+Ch] [bp-A0h]@25 char v39; // [sp+1Ch] [bp-90h]@25 char v40; // [sp+2Ch] [bp-80h]@15 char v41; // [sp+30h] [bp-7Ch]@12 int v42; // [sp+34h] [bp-78h]@1 int v43; // [sp+38h] [bp-74h]@11 int v44; // [sp+3Ch] [bp-70h]@12 int v45; // [sp+40h] [bp-6Ch]@8 char *v46; // [sp+44h] [bp-68h]@12 char v47; // [sp+48h] [bp-64h]@18 char v48; // [sp+60h] [bp-4Ch]@18 int v49; // [sp+70h] [bp-3Ch]@18 int v50; // [sp+74h] [bp-38h]@18 int v51; // [sp+78h] [bp-34h]@18 int v52; // [sp+7Ch] [bp-30h]@18 int v53; // [sp+80h] [bp-2Ch]@18 unsigned int v54; // [sp+9Ch] [bp-10h]@1 int v55; // [sp+A0h] [bp-Ch]@1 int v56; // [sp+A8h] [bp-4h]@18 int v57; // [sp+ACh] [bp+0h]@1 v54 = (unsigned int)&v57 ^ __security_cookie; result = (int)&v55; v4 = this; v42 = (int)this; if ( a2 && a3 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); v5 = (int)((char *)v4 + 28); if ( *((_DWORD *)v4 + 7) != result ) { v5 = (int)((char *)v4 + 208); if ( *((_DWORD *)v4 + 52) != result ) goto LABEL_28; } v45 = v5; if ( !v5 ) return result; result = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2072))(a3); v6 = (int)((char *)v4 + 28); if ( *((_DWORD *)v4 + 7) != result && (v6 = (int)((char *)v4 + 208), *((_DWORD *)v4 + 52) != result) ) { LABEL_28: if ( *((_DWORD *)v4 + 1) || *((_DWORD *)v4 + 2) ) result = (*((int (__thiscall **)(_DWORD, _DWORD))v4 + 2))(*((_DWORD *)v4 + 1), 6991); } else { v43 = v6; if ( !v6 ) return result; LOWORD(v46) = sub_4802C0(a2); v7 = *(_DWORD *)(v45 + 40); v44 = *(_DWORD *)sub_479330((int)&v41, *(_DWORD *)(v45 + 36), *(_DWORD *)(v45 + 40), (__int16)v46); if ( v44 == v7 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); LABEL_14: v9 = sub_418B40((int)byte_85A2C0, v8); v10 = sub_418EA0((__time32_t)byte_14D12E30, (int)"GuildTourmentSystem::DeadPlayer Not Find Player : "); return sub_418EA0(v10, v9); } LOWORD(v46) = sub_4802C0(a3); v11 = *(char **)(v43 + 40); v46 = *(char **)sub_479330((int)&v40, *(_DWORD *)(v43 + 36), *(_DWORD *)(v43 + 40), (__int16)v46); if ( v46 == v11 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1388))(a3); goto LABEL_14; } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); v13 = v12 == (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2072))(a3); v14 = v44; if ( !v13 ) { v15 = sub_5C4A10(*(_DWORD *)(v42 + 388), *((_DWORD *)v46 + 1), *(_DWORD *)(v44 + 4)); v16 = *(_DWORD *)a2; v44 = (unsigned __int16)v15; v17 = (unsigned __int8)(*(int (__thiscall **)(int))(v16 + 1240))(a2); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1240))(a3); v44 = sub_5C51E0(*(_DWORD *)(v42 + 388), v44, v18, v17); sub_479FE0((void *)v43, v44); v19 = (int)v46; *(_DWORD *)(v19 + 8) += v44; ++*(_DWORD *)(v19 + 20); sub_47A030(v45, *(_DWORD *)(v45 + 64) + 1); v20 = v45; *(_DWORD *)(v14 + 12) += v44; ++*(_DWORD *)(v14 + 16); sub_47CE40((int)&v47, v20); v56 = 0; v53 = 0; v52 = 0; v51 = 0; v50 = 0; v49 = 0; sub_478400((int)&v49, a2, v14); sub_47CE80((int)&v48, &v49); v21 = *(void **)(v45 + 116); if ( v21 || (sub_478BB0(v45), (v21 = *(void **)(v45 + 116)) != 0) ) sub_479180((int)&v47, v21, 0); sub_47CB60((int)&v47); sub_47CE40((int)&v47, v43); v53 = 0; v52 = 0; v51 = 0; v50 = 0; v49 = 0; v56 = 1; sub_478400((int)&v49, a3, (int)v46); sub_47CE80((int)&v48, &v49); v22 = *(void **)(v45 + 116); if ( v22 || (sub_478BB0(v45), (v22 = *(void **)(v45 + 116)) != 0) ) sub_479180((int)&v47, v22, 0); v56 = -1; sub_47CB60((int)&v47); } v23 = off_849C18; *(_WORD *)off_849C18 = 29918; v24 = *(_DWORD *)a2; v46 = (char *)v23 + 2; v25 = (*(int (__thiscall **)(int))(v24 + 1388))(a2); sub_4836B0((int)v46, v25); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1388))(a3); sub_4836B0((int)(v46 + 20), v26); *((_DWORD *)v46 + 10) = *(_DWORD *)(v14 + 4); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2); sub_428A40(&v38, &off_849C18, 46, v27); v56 = 2; v28 = sub_552F20(a3); v29 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v29, v28, 0, 0, (int)&v38, 1, 65535); v56 = -1; sub_428A70(&v38); v30 = off_849C18; *(_WORD *)off_849C18 = 29919; v31 = *(_DWORD *)a2; v46 = (char *)v30 + 2; v32 = (*(int (__thiscall **)(int))(v31 + 1388))(a2); v33 = (int)v46; sub_4836B0((int)v46, v32); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1388))(a3); sub_4836B0(v33 + 20, v34); *(_DWORD *)(v33 + 40) = *(_DWORD *)(v14 + 4); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2072))(a3); sub_428A40(&v39, &off_849C18, 46, v35); v56 = 3; v36 = sub_552F20(a3); v37 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a3, v37, v36, 0, 0, (int)&v39, 1, 65535); v56 = -1; sub_428A70(&v39); result = sub_479590(v42, a3); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0047DB40) -------------------------------------------------------- int __thiscall sub_47DB40(int this) { int v1; // eax@3 if ( !*(_DWORD *)(this + 468) ) *(_DWORD *)(this + 468) = dword_14D129E8; v1 = dword_14D129E8 - *(_DWORD *)(this + 468); *(_DWORD *)(this + 468) = dword_14D129E8; return sub_47D170(this, v1); } // 14D129E8: using guessed type int dword_14D129E8; //----- (0047DB70) -------------------------------------------------------- char __thiscall sub_47DB70(void *this, int a2, unsigned __int16 a3) { void *v3; // edi@1 int v4; // edx@1 int (__stdcall *v5)(_DWORD); // eax@1 int v6; // eax@1 int v7; // eax@2 int v8; // ebx@6 unsigned int v9; // esi@6 int v10; // eax@6 int v11; // edx@11 void (__fastcall *v12)(_DWORD, _DWORD, _DWORD); // eax@15 int v13; // ecx@15 int v15; // eax@20 int v16; // ebx@20 int v17; // eax@24 bool v18; // zf@24 _BYTE *v19; // esi@24 int v20; // eax@33 int v21; // esi@33 int v22; // esi@33 int v23; // edi@40 unsigned __int16 v24; // ax@40 bool v25; // cf@40 int v26; // ecx@40 unsigned __int8 *v27; // eax@40 unsigned __int16 v28; // ax@42 int v29; // edx@42 unsigned __int8 *v30; // eax@42 int v31; // eax@44 unsigned __int8 *v32; // eax@48 int v33; // eax@54 int v34; // esi@54 unsigned int v35; // eax@56 int v36; // ebx@56 __int16 v37; // ax@56 int v38; // eax@58 int v39; // ebx@60 unsigned int v40; // eax@60 int v41; // ebx@61 __int16 v42; // ax@64 unsigned __int16 v43; // ax@69 int v44; // ebx@69 int v45; // ST04_4@69 __int16 v46; // ax@69 int v47; // esi@70 __int16 v48; // ax@70 void *v49; // esi@70 int v50; // eax@70 int v51; // ebx@70 int v52; // eax@70 int v53; // ecx@70 int v54; // eax@70 int v55; // edx@70 __int16 v56; // ax@70 int v57; // edx@70 int v58; // ecx@70 int v59; // esi@70 int v60; // ebx@75 int v61; // edi@75 unsigned int v62; // esi@75 int v63; // eax@75 signed int v64; // [sp-4h] [bp-2B0h]@15 bool v65; // [sp-4h] [bp-2B0h]@81 char v66; // [sp+Ch] [bp-2A0h]@70 int v67; // [sp+18h] [bp-294h]@44 int v68; // [sp+1Ch] [bp-290h]@1 int (__stdcall **v69)(int, int, int); // [sp+20h] [bp-28Ch]@70 __int16 v70; // [sp+24h] [bp-288h]@70 char *v71; // [sp+28h] [bp-284h]@2 int v72; // [sp+2Ch] [bp-280h]@1 unsigned int v73; // [sp+30h] [bp-27Ch]@20 int v74; // [sp+34h] [bp-278h]@1 int v75; // [sp+38h] [bp-274h]@40 int v76; // [sp+3Ch] [bp-270h]@1 int v77; // [sp+40h] [bp-26Ch]@20 char v78; // [sp+47h] [bp-265h]@4 char v79; // [sp+48h] [bp-264h]@74 char v80; // [sp+60h] [bp-24Ch]@74 int v81; // [sp+70h] [bp-23Ch]@74 int v82; // [sp+74h] [bp-238h]@74 int v83; // [sp+78h] [bp-234h]@74 int v84; // [sp+7Ch] [bp-230h]@74 int v85; // [sp+80h] [bp-22Ch]@74 char v86; // [sp+9Ch] [bp-210h]@26 char v87; // [sp+19Ch] [bp-110h]@30 unsigned int v88; // [sp+29Ch] [bp-10h]@1 int v89; // [sp+2A8h] [bp-4h]@70 int v90; // [sp+2ACh] [bp+0h]@1 v88 = (unsigned int)&v90 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)a2; v76 = a3; v5 = *(int (__stdcall **)(_DWORD))(v4 + 2072); v74 = (int)this; v68 = a2; v6 = v5((unsigned int)&v90 ^ __security_cookie); v72 = v6; if ( *((_DWORD *)v3 + 7) == v6 ) { v7 = (int)((char *)v3 + 28); v71 = (char *)v3 + 28; } else { v11 = (int)((char *)v3 + 208); if ( *((_DWORD *)v3 + 52) != v6 ) { if ( !*((_DWORD *)v3 + 1) && !*((_DWORD *)v3 + 2) ) return 0; v12 = (void (__fastcall *)(_DWORD, _DWORD, _DWORD))*((_DWORD *)v3 + 2); v13 = *((_DWORD *)v3 + 1); v64 = 6991; goto LABEL_16; } v7 = (int)((char *)v3 + 208); v71 = (char *)v3 + 208; } if ( !v7 ) return 0; v78 = 0; if ( (void *)v7 == (char *)v3 + 28 ) v78 = 1; v8 = *((_DWORD *)v3 + 3); v9 = 0; v10 = (*((_DWORD *)v3 + 4) - v8) / 196; if ( !v10 ) return 0; if ( (unsigned int)v10 <= 0 ) goto LABEL_19; while ( *(_WORD *)(v8 + 4) != (_WORD)v76 ) { ++v9; v8 += 196; if ( v10 <= v9 ) return 0; } v77 = v8; v73 = v9; v15 = sub_54DE90(&unk_13253630, v76); v16 = v15; if ( !v15 ) { if ( *((_DWORD *)v3 + 1) || *((_DWORD *)v3 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v3 + 2))(*((_DWORD *)v3 + 1), 6977); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 1388))(0); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v18 = byte_7493ED == 0; v19 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v19 = *(_DWORD *)v17; *((_DWORD *)v19 + 1) = *(_DWORD *)(v17 + 4); *((_DWORD *)v19 + 2) = *(_DWORD *)(v17 + 8); *((_DWORD *)v19 + 3) = *(_DWORD *)(v17 + 12); *((_DWORD *)v19 + 4) = *(_DWORD *)(v17 + 16); v19[20] = 0; if ( !v18 ) { if ( byte_14D130B4 ) { sprintf(&v86, "%.255s", "GuildTourmentSystem::FlagCapture Not Find Flag : "); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v86, dword_14D12F30); } if ( byte_7493ED && byte_14D130B4 ) { sprintf(&v87, "%.255s", v19); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v87, dword_14D12F30); } } return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1232))(v15) != 4 ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1388))(v16); v21 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v21; v22 = (int)&byte_85A2C0[256 * v21]; v18 = byte_7493ED == 0; *(_DWORD *)v22 = *(_DWORD *)v20; *(_DWORD *)(v22 + 4) = *(_DWORD *)(v20 + 4); *(_DWORD *)(v22 + 8) = *(_DWORD *)(v20 + 8); *(_DWORD *)(v22 + 12) = *(_DWORD *)(v20 + 12); *(_DWORD *)(v22 + 16) = *(_DWORD *)(v20 + 16); *(_BYTE *)(v22 + 20) = 0; if ( !v18 ) { if ( byte_14D130B4 ) { sprintf(&v87, "%.255s", "GuildTourmentSystem::FlagCapture No NPC Type : "); sub_418E40((__time32_t)byte_14D12E30); if ( dword_14D12F30 ) fputs(&v87, dword_14D12F30); } } sub_418EA0((__time32_t)byte_14D12E30, v22); if ( !*((_DWORD *)v3 + 1) && !*((_DWORD *)v3 + 2) ) return 0; v13 = *((_DWORD *)v3 + 1); v12 = (void (__fastcall *)(_DWORD, _DWORD, _DWORD))*((_DWORD *)v3 + 2); v64 = 6977; LABEL_16: v12(v13, v11, v64); return 0; } v23 = sub_4786D0(v16); v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1800))(v16); v25 = *(_DWORD *)(v77 + 28) < 0x10u; v26 = v24; v27 = (unsigned __int8 *)(v77 + 8); v75 = v26; if ( !v25 ) v27 = *(unsigned __int8 **)v27; v28 = sub_418D10((int)&unk_14D159B0, v27); v25 = *(_DWORD *)(v77 + 56) < 0x10u; v29 = v28; v30 = (unsigned __int8 *)(v77 + 36); v76 = v29; if ( !v25 ) v30 = *(unsigned __int8 **)v30; LOWORD(v31) = sub_418D10((int)&unk_14D159B0, v30); v67 = (unsigned __int16)v31; if ( v78 ) { if ( (_WORD)v31 != (_WORD)v75 ) { v31 = (unsigned __int16)v76; goto LABEL_52; } goto LABEL_48; } if ( (_WORD)v76 == (_WORD)v75 ) { LABEL_48: v32 = (unsigned __int8 *)(v77 + 64); if ( *(_DWORD *)(v77 + 84) >= 0x10u ) v32 = *(unsigned __int8 **)v32; LOWORD(v31) = sub_418D10((int)&unk_14D159B0, v32); } v31 = (unsigned __int16)v31; LABEL_52: v75 = v31; if ( -1 == (_WORD)v31 ) { sub_418EA0((__time32_t)byte_14D12E30, (int)"GuildTourmentSystem::FlagCapture Not Find Flag Change Type "); return 0; } v33 = sub_54DE90(&unk_13253630, *(_WORD *)(v77 + 108)); v34 = sub_4786D0(v33); if ( (_WORD)v76 != (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1800))(v16) && (_WORD)v67 != (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 1800))(v16) ) { v35 = sub_478510(v74 + 12, v73); v36 = v72; *(_DWORD *)v35 = v72; sub_58FC60(v35 + 92, 1); v76 = v36; v37 = sub_4802C0(v23); sub_47D3C0((int)v71, 1, v37); if ( !v34 ) goto LABEL_70; if ( v78 ) v38 = v77 + 112; else v38 = v77 + 140; goto LABEL_67; } v39 = v74; v40 = sub_478510(v74 + 12, v73); *(_DWORD *)v40 = 0; sub_58FC60(v40 + 92, 1); v76 = 0; if ( *(_DWORD *)(v39 + 28) == v72 ) v41 = v39 + 208; else v41 = v39 + 28; if ( v41 ) { v42 = sub_4802C0(v23); sub_47D3C0(v41, 0, v42); } if ( v34 ) { v38 = v77 + 168; LABEL_67: if ( *(_DWORD *)(v38 + 20) >= 0x10u ) v38 = *(_DWORD *)v38; v43 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v38); v44 = *(_DWORD *)v34; v45 = v43; v46 = sub_4802C0(v34); (*(void (__thiscall **)(int, _DWORD, int, _DWORD))(v44 + 3944))(v34, (unsigned __int16)v46, v45, 0); sub_478130((void *)v34); } LABEL_70: v47 = *(_DWORD *)v23; v48 = sub_4802C0(v23); (*(void (__thiscall **)(int, _DWORD, int, _DWORD))(v47 + 3944))(v23, (unsigned __int16)v48, v75, 0); sub_478130((void *)v23); LOWORD(v47) = sub_4802C0(v23); sub_427BE0(&v69); v69 = &off_6B49B4; v70 = v47; v89 = 0; sub_549B60((void *)v23, (int)&v69, 1); v49 = off_849C18; *(_WORD *)off_849C18 = 29901; v50 = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 1388))(v23); v51 = v68; *(_DWORD *)((char *)v49 + 22) = *(_DWORD *)v50; *(_DWORD *)((char *)v49 + 26) = *(_DWORD *)(v50 + 4); *(_DWORD *)((char *)v49 + 30) = *(_DWORD *)(v50 + 8); *(_DWORD *)((char *)v49 + 34) = *(_DWORD *)(v50 + 12); *(_DWORD *)((char *)v49 + 38) = *(_DWORD *)(v50 + 16); v52 = (*(int (__thiscall **)(int))(*(_DWORD *)v51 + 1388))(v51); *(_DWORD *)((char *)v49 + 2) = *(_DWORD *)v52; *(_DWORD *)((char *)v49 + 6) = *(_DWORD *)(v52 + 4); *(_DWORD *)((char *)v49 + 10) = *(_DWORD *)(v52 + 8); v53 = v76; *(_DWORD *)((char *)v49 + 14) = *(_DWORD *)(v52 + 12); v54 = *(_DWORD *)(v52 + 16); v55 = v72; *(_DWORD *)((char *)v49 + 46) = v53; *(_DWORD *)((char *)v49 + 18) = v54; *(_DWORD *)((char *)v49 + 42) = v55; sub_4287B0(&v66, &off_849C18, 50); LOBYTE(v89) = 1; sub_549B60((void *)v23, (int)&v66, 1); LOBYTE(v89) = 0; sub_428A70(&v66); v56 = sub_4802C0(v51); v57 = (int)v71; v58 = *((_DWORD *)v71 + 10); v59 = *((_DWORD *)v71 + 9); if ( v59 != v58 ) { do { if ( *(_WORD *)v59 == v56 ) break; v59 += 28; } while ( v59 != v58 ); if ( v59 != v58 ) { ++*(_DWORD *)(v59 + 24); sub_47CE40((int)&v79, v57); LOBYTE(v89) = 2; v85 = 0; v84 = 0; v83 = 0; v82 = 0; v81 = 0; sub_478400((int)&v81, v51, v59); sub_47CE80((int)&v80, &v81); sub_479180((int)&v79, (void *)v51, 0); LOBYTE(v89) = 0; sub_47CB60((int)&v79); } } v60 = *(_DWORD *)(v74 + 12); v61 = 0; v62 = 0; v63 = (*(_DWORD *)(v74 + 16) - v60) / 196; if ( !v63 ) goto LABEL_80; if ( (unsigned int)v63 <= 0 ) LABEL_19: sub_6517D8((int)"invalid vector subscript"); do { if ( *(_DWORD *)v60 == v72 ) ++v61; ++v62; v60 += 196; } while ( v63 > v62 ); LABEL_80: v65 = v63 == v61; sub_58FC60(v74 + 472, v65); sub_478940(v74); v89 = -1; v69 = &off_6B49B4; sub_427EB0(&v69); return 1; } // 6B49B4: using guessed type int (__stdcall *off_6B49B4)(int, int, int); // 7493ED: using guessed type char byte_7493ED; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D130B4: using guessed type char byte_14D130B4; //----- (0047E2F0) -------------------------------------------------------- void __thiscall sub_47E2F0(int this, int a2, char a3) { int v3; // ebx@1 int v4; // edx@2 int v5; // eax@2 int v6; // edx@2 int v7; // esi@2 int v8; // eax@2 int v9; // edi@3 int v10; // eax@6 int v11; // eax@7 unsigned int v12; // edx@7 int v13; // edx@7 int v14; // eax@7 int v15; // ecx@7 __int64 *v16; // edx@7 void *v17; // eax@7 int v18; // ecx@7 int v19; // edx@7 int v20; // eax@7 void *v21; // edi@7 signed int v22; // edx@9 int v23; // esi@9 const void *v24; // esi@11 unsigned int v25; // eax@23 unsigned int v26; // ecx@23 int v27; // edx@23 int v28; // ecx@23 signed int v29; // ebx@23 int v30; // esi@25 int v31; // eax@25 int v32; // eax@29 int v33; // edx@29 int v34; // ecx@29 int v35; // edx@29 int v36; // eax@29 int v37; // ecx@29 int v38; // edx@29 int v39; // eax@29 int v40; // edx@29 int v41; // eax@29 __int16 v42; // [sp+Ch] [bp-A8h]@4 unsigned int v43; // [sp+10h] [bp-A4h]@2 int v44; // [sp+14h] [bp-A0h]@3 char v45; // [sp+18h] [bp-9Ch]@2 unsigned int v46; // [sp+20h] [bp-94h]@2 int v47; // [sp+24h] [bp-90h]@29 int v48; // [sp+28h] [bp-8Ch]@29 int v49; // [sp+2Ch] [bp-88h]@29 int v50; // [sp+30h] [bp-84h]@29 int v51; // [sp+34h] [bp-80h]@29 int v52; // [sp+38h] [bp-7Ch]@29 int v53; // [sp+3Ch] [bp-78h]@29 int v54; // [sp+40h] [bp-74h]@29 int v55; // [sp+44h] [bp-70h]@29 int v56; // [sp+48h] [bp-6Ch]@29 int v57; // [sp+4Ch] [bp-68h]@29 char v58; // [sp+50h] [bp-64h]@2 int v59; // [sp+51h] [bp-63h]@2 int v60; // [sp+55h] [bp-5Fh]@2 int v61; // [sp+59h] [bp-5Bh]@2 int v62; // [sp+5Dh] [bp-57h]@2 char *v63; // [sp+64h] [bp-50h]@2 void *v64; // [sp+68h] [bp-4Ch]@2 void *v65; // [sp+6Ch] [bp-48h]@2 void *v66; // [sp+70h] [bp-44h]@2 int v67; // [sp+78h] [bp-3Ch]@7 unsigned __int64 v68; // [sp+7Ch] [bp-38h]@7 int v69; // [sp+84h] [bp-30h]@7 int v70; // [sp+88h] [bp-2Ch]@7 int v71; // [sp+8Ch] [bp-28h]@7 __int64 *v72; // [sp+90h] [bp-24h]@7 void *v73; // [sp+94h] [bp-20h]@7 int v74; // [sp+98h] [bp-1Ch]@7 int v75; // [sp+9Ch] [bp-18h]@7 int v76; // [sp+A0h] [bp-14h]@7 unsigned int v77; // [sp+A4h] [bp-10h]@1 int v78; // [sp+B0h] [bp-4h]@2 int v79; // [sp+B4h] [bp+0h]@1 v77 = (unsigned int)&v79 ^ __security_cookie; v3 = this; if ( a2 ) { v4 = *(_DWORD *)this; v63 = &v58; v5 = *(_DWORD *)(this + 60); v59 = v4; v6 = *(_DWORD *)(this + 112); v64 = 0; v65 = 0; v66 = 0; v60 = v5; v61 = v6; v62 = 0; v58 = 0; v7 = *(_DWORD *)(this + 36); v45 = a3; v8 = (*(_DWORD *)(this + 40) - v7) / 28; v78 = 0; v43 = -1; v46 = 0; if ( v8 ) { v9 = 0; v44 = 0; if ( (unsigned int)v8 > 0 ) { while ( 1 ) { v42 = *(_WORD *)(v9 + v7); if ( sub_4802C0(a2) == v42 ) v43 = v46; v10 = sub_54DE90(&unk_13253630, v42); if ( !v10 ) goto LABEL_21; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1388))(v10); v12 = *(_DWORD *)(v11 + 4); v67 = *(_DWORD *)v11; v68 = __PAIR__(*(_DWORD *)(v11 + 8), v12); v13 = *(_DWORD *)(v11 + 12); v14 = *(_DWORD *)(v11 + 16); v15 = *(_DWORD *)(v9 + v7 + 24); v69 = v13; v16 = *(__int64 **)(v9 + v7 + 12); v70 = v14; v17 = *(void **)(v9 + v7 + 16); v76 = v15; v18 = *(_DWORD *)(v9 + v7 + 4); v72 = v16; v19 = *(_DWORD *)(v9 + v7 + 8); v73 = v17; v20 = *(_DWORD *)(v9 + v7 + 20); v21 = v65; v75 = v18; v71 = v19; v74 = v20; if ( &v67 >= v65 || v64 > &v67 ) { if ( v65 == v66 ) { sub_47C010((int)&v64, 1); v21 = v65; } if ( !v21 ) goto LABEL_18; v24 = &v67; } else { v22 = (signed int)((unsigned __int64)(780903145i64 * (signed int)((char *)&v67 - v64)) >> 32) >> 3; v23 = v22 + ((unsigned int)v22 >> 31); if ( v65 == v66 ) { sub_47C010((int)&v64, 1); v21 = v65; } v24 = (char *)v64 + 44 * v23; if ( !v21 ) goto LABEL_18; } memcpy(v21, v24, 0x2Cu); v21 = v65; LABEL_18: v65 = (char *)v21 + 44; if ( (signed int)((char *)v21 + 44 - v64) / 44 > 200 ) { sub_479010((int)&v58, a2, v45); v45 = 0; } v9 = v44; LABEL_21: v7 = *(_DWORD *)(v3 + 36); ++v46; v9 += 28; v44 = v9; if ( (*(_DWORD *)(v3 + 40) - v7) / 28 <= v46 ) goto LABEL_22; } } LABEL_24: sub_6517D8((int)"invalid vector subscript"); } LABEL_22: sub_479010((int)&v58, a2, v45); if ( (v43 & 0x80000000u) == 0 ) { v25 = *(_DWORD *)v3; v26 = *(_DWORD *)(v3 + 60); v72 = (__int64 *)&v68; v27 = *(_DWORD *)(v3 + 112); v73 = 0; v74 = 0; v75 = 0; *(unsigned __int64 *)((char *)&v68 + 1) = __PAIR__(v26, v25); *(int *)((char *)&v69 + 1) = v27; *(int *)((char *)&v70 + 1) = 0; LOBYTE(v68) = 0; v28 = *(_DWORD *)(v3 + 36); v29 = *(_DWORD *)(v3 + 40) - v28; LOBYTE(v78) = 1; if ( v29 / 28 <= v43 ) goto LABEL_24; v30 = v28 + 28 * v43; v31 = sub_54DE90(&unk_13253630, *(_WORD *)(v28 + 28 * v43)); if ( v31 ) { v32 = (*(int (__thiscall **)(int))(*(_DWORD *)v31 + 1388))(v31); v33 = *(_DWORD *)(v32 + 4); v47 = *(_DWORD *)v32; v49 = *(_DWORD *)(v32 + 8); v34 = *(_DWORD *)(v30 + 24); v48 = v33; v35 = *(_DWORD *)(v32 + 12); v36 = *(_DWORD *)(v32 + 16); v57 = v34; v37 = *(_DWORD *)(v30 + 4); v50 = v35; v38 = *(_DWORD *)(v30 + 12); v51 = v36; v39 = *(_DWORD *)(v30 + 16); v56 = v37; v53 = v38; v40 = *(_DWORD *)(v30 + 8); v54 = v39; v41 = *(_DWORD *)(v30 + 20); v52 = v40; v55 = v41; sub_47CE80((int)&v73, &v47); sub_479180((int)&v68, (void *)a2, 0); if ( v73 ) operator delete(v73); } else { if ( v73 ) operator delete(v73); v73 = 0; v74 = 0; v75 = 0; } } if ( v64 ) operator delete(v64); } } // 86FEB8: using guessed type int __security_cookie; //----- (0047E690) -------------------------------------------------------- unsigned int __thiscall sub_47E690(int this, unsigned int a2) { int v2; // esi@1 unsigned int result; // eax@1 int v4; // ebx@4 int v5; // ST04_4@4 int v6; // ST00_4@4 int v7; // edi@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@4 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; result = a2; if ( a2 > (unsigned int)&unk_3FFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 6 < a2 ) { v4 = sub_4927C0(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v9 = v4; v11 = 0; sub_47C8F0(v6, v5, v4); v7 = *(_DWORD *)(v2 + 4) - *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { sub_47C740(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v4 + (a2 << 6); *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v4 + (v7 & 0xFFFFFFC0); *(_DWORD *)v2 = v4; } return result; } //----- (0047E75B) -------------------------------------------------------- void __usercall sub_47E75B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0047E780) -------------------------------------------------------- int __thiscall sub_47E780(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_5D1745D ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 44; if ( result < a2 ) { v4 = sub_4785B0(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v12 = v4; v14 = 0; sub_47C9E0(v6, v5, v4); v7 = (signed int)((unsigned __int64)(780903145i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_47C7A0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } v9 = v12; result = v12 + 44 * a2; v10 = v12 + 44 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (0047E86D) -------------------------------------------------------- void __usercall sub_47E86D(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0047E890) -------------------------------------------------------- int __thiscall sub_47E890(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_14E5E0A ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 196; if ( result < a2 ) { v4 = sub_478610(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v12 = v4; v14 = 0; sub_47CAB0(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1402438301i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 6; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_47C7F0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } v9 = v12; result = v12 + 196 * a2; v10 = v12 + 196 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (0047E987) -------------------------------------------------------- void __usercall sub_47E987(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0047E9A0) -------------------------------------------------------- void __thiscall sub_47E9A0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_47CEF0(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (0047EA00) -------------------------------------------------------- char __thiscall sub_47EA00(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // eax@4 int v5; // esi@4 int v6; // eax@8 int v7; // ST10_4@8 __time32_t v8; // eax@8 int v10; // eax@15 int v11; // eax@15 int v12; // eax@15 __int16 v13; // ax@16 int v14; // eax@19 void *v15; // esi@21 int v16; // edx@21 int v17; // eax@21 int v18; // eax@25 void *v19; // esi@26 int v20; // eax@28 int v21; // esi@29 int v22; // ecx@29 int v23; // esi@31 void *v24; // eax@32 int v25; // eax@34 __int16 v26; // [sp+Ch] [bp-58h]@15 int v27; // [sp+10h] [bp-54h]@15 int v28; // [sp+14h] [bp-50h]@15 int v29; // [sp+18h] [bp-4Ch]@15 int v30; // [sp+1Ch] [bp-48h]@15 int v31; // [sp+20h] [bp-44h]@15 int v32; // [sp+24h] [bp-40h]@15 int v33; // [sp+28h] [bp-3Ch]@7 char *v34; // [sp+2Ch] [bp-38h]@5 char *v35; // [sp+30h] [bp-34h]@1 int v36; // [sp+34h] [bp-30h]@7 void *v37; // [sp+38h] [bp-2Ch]@15 unsigned int v38; // [sp+4Ch] [bp-18h]@17 unsigned int v39; // [sp+54h] [bp-10h]@1 int v40; // [sp+60h] [bp-4h]@15 int v41; // [sp+64h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v2 = this; v35 = (char *)this; v3 = *(_BYTE *)(sub_4190B0(a2) + 4); if ( v3 && v3 != 1 || sub_479420(v2, a2) ) return 0; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); v5 = (int)((char *)v2 + 28); if ( *((_DWORD *)v2 + 7) == v4 ) { v34 = (char *)v2 + 28; } else { if ( *((_DWORD *)v2 + 52) != v4 ) { if ( !*((_DWORD *)v2 + 1) && !*((_DWORD *)v2 + 2) ) return 0; (*((void (__thiscall **)(_DWORD, _DWORD))v2 + 2))(*((_DWORD *)v2 + 1), 6991); return 0; } v34 = (char *)v2 + 208; v5 = (int)((char *)v2 + 208); } if ( !v5 ) return 0; v36 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); sub_47A6E0((int)&unk_D55421C, (int)&v33, (int)&v36); if ( (void *)v33 == dword_D554220 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); v7 = sub_418B40((int)byte_85A2C0, v6); v8 = sub_418EA0((__time32_t)byte_14D12E30, (int)"GuildTourmentSystem::PlayerRegiste Not Find Grade Info : "); sub_418EA0(v8, v7); return 0; } v36 = *(_DWORD *)(v33 + 16); v26 = sub_4802C0(a2); v28 = 0; v29 = 0; v30 = 0; v31 = 0; v32 = 0; v10 = *(_DWORD *)a2; v27 = v36; v11 = (*(int (__thiscall **)(int))(v10 + 1388))(a2); v12 = sub_418B40((int)byte_85A2C0, v11); sub_4244F0((int)&v37, (char *)v12); v40 = 0; sub_47ACA0(v5 + 4, (int)&v36, (int)&v37); if ( *(_DWORD *)(v5 + 8) != v36 ) { memcpy(&v26, (const void *)(v36 + 40), 0x1Cu); v13 = sub_4802C0(a2); v2 = v35; v5 = (int)v34; v26 = v13; } v40 = -1; if ( v38 >= 0x10 ) operator delete(v37); v14 = sub_479360(*(_DWORD *)(v5 + 36), *(_DWORD *)(v5 + 40), (int)&v26, (int (__cdecl *)(_DWORD, _DWORD))sub_478070); sub_47C4D0((void *)(v5 + 36), (int)&v35, v14, &v26); if ( !*(_DWORD *)(v33 + 16) ) sub_47A0D0(v5); v15 = off_849C18; *(_WORD *)off_849C18 = 29827; v16 = *((_DWORD *)v2 + 7); v35 = (char *)v2 + 28; *(_DWORD *)((char *)v15 + 2) = v16; v36 = (int)((char *)v2 + 208); *(_DWORD *)((char *)v15 + 6) = *((_DWORD *)v2 + 52); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); *((_DWORD *)v15 + 3) = v17; if ( !v17 ) sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::PlayerRegister", 0); *((_WORD *)v15 + 5) = *((_WORD *)v2 + 194); if ( sub_4C81E0(&off_849C18, 16) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v18 + 12))(v18, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::PlayerRegiste : Packet Too Long", 16); } v19 = off_849C18; *(_WORD *)off_849C18 = 29896; *(_DWORD *)((char *)v19 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_DWORD *)((char *)v19 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2072))(a2); *((_BYTE *)v19 + 2) = *((_BYTE *)v2 + 392); if ( sub_4C81E0(&off_849C18, 11) ) { v20 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v20); } else { sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::PlayerRegiste : Packet Too Long", 11); } v21 = (int)v35; sub_47E2F0((int)v35, a2, 1); v22 = v36; if ( *(_DWORD *)v21 == *(_DWORD *)v36 ) v22 = v21; sub_47E2F0(v22, a2, 0); v23 = (int)v34; if ( *((_DWORD *)v34 + 36) > 1 ) { v24 = off_849C18; *(_WORD *)off_849C18 = 29938; *((_BYTE *)v24 + 2) = *(_BYTE *)(v23 + 144); *(_DWORD *)((char *)v24 + 3) = *(_DWORD *)v23; if ( sub_4C81E0(&off_849C18, 7) ) { v25 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v25 + 12))(v25, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::PlayerRegiste : Packet Too Long", 7); } } return 1; } // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; //----- (0047EDA0) -------------------------------------------------------- void __thiscall sub_47EDA0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 v2 = this; sub_47E2F0((int)((char *)this + 28), a2, 1); v3 = (int)((char *)v2 + 208); if ( *((_DWORD *)v2 + 7) == *((_DWORD *)v2 + 52) ) v3 = (int)((char *)v2 + 28); sub_47E2F0(v3, a2, 0); } //----- (0047EDE0) -------------------------------------------------------- char __thiscall sub_47EDE0(void *this, int a2) { int (__thiscall *v2)(_DWORD, _DWORD); // edx@1 void *v3; // esi@1 int v4; // eax@1 int v5; // esi@2 __int16 v7; // ax@10 const void *v8; // edx@10 const void *v9; // ecx@10 int v10; // eax@14 int v11; // ecx@14 _BYTE *v12; // ecx@14 int v13; // ebx@14 int v14; // eax@14 int v15; // edi@14 unsigned int v16; // esi@15 int v17; // eax@15 unsigned int v18; // ecx@17 void *v19; // edx@19 int v20; // eax@21 unsigned int v21; // ecx@21 bool v22; // sf@21 unsigned __int8 v23; // of@21 signed int v24; // eax@23 int v25; // eax@29 int v26; // ebx@32 const void *v27; // eax@32 int v28; // eax@32 int v29; // edx@33 const void *v30; // esi@34 void *v31; // edi@34 void *v32; // esi@35 int v33; // edi@35 int v34; // eax@37 __int16 v35; // [sp+Ch] [bp-94h]@29 unsigned int v36; // [sp+10h] [bp-90h]@29 unsigned int v37; // [sp+14h] [bp-8Ch]@29 unsigned int v38; // [sp+18h] [bp-88h]@29 unsigned int v39; // [sp+1Ch] [bp-84h]@29 unsigned int v40; // [sp+20h] [bp-80h]@29 unsigned int v41; // [sp+24h] [bp-7Ch]@29 void *v42; // [sp+28h] [bp-78h]@1 int v43; // [sp+2Ch] [bp-74h]@1 const void *v44; // [sp+30h] [bp-70h]@10 int v45; // [sp+34h] [bp-6Ch]@2 int v46; // [sp+38h] [bp-68h]@14 void *v47; // [sp+3Ch] [bp-64h]@29 unsigned int v48; // [sp+4Ch] [bp-54h]@29 unsigned int v49; // [sp+50h] [bp-50h]@29 char v50; // [sp+58h] [bp-48h]@29 void *v51; // [sp+74h] [bp-2Ch]@14 unsigned int v52; // [sp+84h] [bp-1Ch]@14 unsigned int v53; // [sp+88h] [bp-18h]@14 unsigned int v54; // [sp+90h] [bp-10h]@1 int v55; // [sp+9Ch] [bp-4h]@14 int v56; // [sp+A0h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v2 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2072); v3 = this; v42 = this; v43 = a2; v4 = v2(a2, (unsigned int)&v56 ^ __security_cookie); if ( *((_DWORD *)v3 + 7) == v4 ) { v5 = (int)((char *)v3 + 28); v45 = v5; } else { if ( *((_DWORD *)v3 + 52) != v4 ) { if ( *((_DWORD *)v3 + 1) || *((_DWORD *)v3 + 2) ) { (*((void (__thiscall **)(_DWORD, _DWORD))v3 + 2))(*((_DWORD *)v3 + 1), 6991); return 0; } return 0; } v45 = (int)((char *)v3 + 208); v5 = (int)((char *)v3 + 208); } if ( !v5 || (v7 = sub_4802C0(a2), v8 = *(const void **)(v5 + 36), v9 = *(const void **)(v5 + 40), v44 = v8, v8 == v9) ) return 0; do { if ( *(_WORD *)v8 == v7 ) break; v8 = (char *)v8 + 28; } while ( v8 != v9 ); v44 = v8; if ( v8 == v9 ) return 0; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); *((_DWORD *)v12 + 4) = *(_DWORD *)(v10 + 16); v12[20] = 0; v53 = 15; v52 = 0; LOBYTE(v51) = 0; sub_4241C0((int)&v51, v12, strlen(v12)); v55 = 0; v13 = v5 + 4; v14 = sub_631390(v5 + 4, (int)&v51); v15 = v14; v46 = v14; if ( v14 == *(_DWORD *)(v5 + 8) ) { v21 = 0; } else { v16 = *(_DWORD *)(v14 + 28); v17 = v14 + 12; if ( *(_DWORD *)(v15 + 32) >= 0x10u ) v17 = *(_DWORD *)v17; v18 = v52; if ( v52 >= v16 ) v18 = *(_DWORD *)(v15 + 28); v19 = v51; if ( v53 < 0x10 ) v19 = &v51; v20 = sub_4189B0((int)v19, v17, v18); v21 = 0; v23 = 0; v22 = v20 < 0; if ( !v20 ) { if ( v52 >= v16 ) v24 = v52 != v16; else v24 = -1; v23 = 0; v22 = v24 < 0; } if ( !(v22 ^ v23) ) goto LABEL_32; } v36 = v21; v37 = v21; v38 = v21; v39 = v21; v40 = v21; v41 = v21; v48 = v21; v35 = 0; v49 = 15; LOBYTE(v47) = 0; sub_423FC0(&v47, (int)&v51, v21, 0xFFFFFFFFu); memcpy(&v50, &v35, 0x1Cu); LOBYTE(v55) = 1; v25 = loc_47C560(v13, &v47); sub_47CFB0(v13, (int)&v46, v46, v25); LOBYTE(v55) = 0; if ( v49 >= 0x10 ) operator delete(v47); v15 = v46; LABEL_32: v26 = v45; v27 = v44; memcpy((void *)(v15 + 40), v44, 0x1Cu); v28 = (int)((char *)v27 + 28); v45 = *(_DWORD *)(v26 + 40); if ( v28 != v45 ) { v29 = v28 - 28; do { v30 = (const void *)v28; v31 = (void *)v29; v28 += 28; v29 += 28; memcpy(v31, v30, 0x1Cu); } while ( v28 != v45 ); } *(_DWORD *)(v26 + 40) -= 28; sub_478BB0(v26); sub_47A030(v26, *(_DWORD *)(v26 + 64)); v32 = off_849C18; v33 = v43; *(_WORD *)off_849C18 = 29897; *(_DWORD *)((char *)v32 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v33 + 836))(v33); *(_DWORD *)((char *)v32 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v33 + 2072))(v33); *((_BYTE *)v32 + 2) = *((_BYTE *)v42 + 388); if ( sub_4C81E0(&off_849C18, 11) ) { v34 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v34); } else { sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::PlayerUnRegister : Packet Too Long", 11); } if ( v53 >= 0x10 ) operator delete(v51); return 1; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; //----- (0047F110) -------------------------------------------------------- void __thiscall sub_47F110(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)this ) { sub_47C740(*(_DWORD *)this, *(_DWORD *)(this + 4)); operator delete(*(void **)v1); } *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (0047F160) -------------------------------------------------------- void __thiscall sub_47F160(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)this ) { sub_47C7A0(*(_DWORD *)this, *(_DWORD *)(this + 4)); operator delete(*(void **)v1); } *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (0047F1B0) -------------------------------------------------------- void __thiscall sub_47F1B0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)this ) { sub_47C7F0(*(_DWORD *)this, *(_DWORD *)(this + 4)); operator delete(*(void **)v1); } *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (0047F200) -------------------------------------------------------- unsigned int __thiscall sub_47F200(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 6; if ( (unsigned int)((char *)&unk_3FFFFFF - a2) < v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 6; if ( result > v4 ) { if ( (unsigned int)((char *)&unk_3FFFFFF - ((unsigned int)v4 >> 1)) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_47E690(this, v5); } return result; } //----- (0047F260) -------------------------------------------------------- int __thiscall sub_47F260(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 44; if ( (unsigned int)((char *)&unk_5D1745D - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 44; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_5D1745D - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_47E780(this, v5); } return result; } //----- (0047F2E0) -------------------------------------------------------- int __thiscall sub_47F2E0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 196; if ( (unsigned int)((char *)&unk_14E5E0A - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 196; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_14E5E0A - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_47E890(this, v5); } return result; } //----- (0047F360) -------------------------------------------------------- void __thiscall sub_47F360(int this) { int v1; // esi@1 int v2; // eax@3 int v3; // eax@9 int v4; // esi@11 int v5; // ST10_4@11 int v6; // ST0C_4@11 char v7; // [sp+Ch] [bp-14h]@11 int v8; // [sp+10h] [bp-10h]@11 int v9; // [sp+1Ch] [bp-4h]@11 v1 = this; if ( *(_DWORD *)(this + 164) ) operator delete(*(void **)(this + 164)); *(_DWORD *)(v1 + 164) = 0; *(_DWORD *)(v1 + 168) = 0; *(_DWORD *)(v1 + 172) = 0; v2 = *(_DWORD *)(v1 + 120); if ( v2 ) { sub_47C7A0(v2, *(_DWORD *)(v1 + 124)); operator delete(*(void **)(v1 + 120)); } *(_DWORD *)(v1 + 120) = 0; *(_DWORD *)(v1 + 124) = 0; *(_DWORD *)(v1 + 128) = 0; if ( *(_DWORD *)(v1 + 80) ) operator delete(*(void **)(v1 + 80)); *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; *(_DWORD *)(v1 + 88) = 0; if ( *(_DWORD *)(v1 + 36) ) operator delete(*(void **)(v1 + 36)); *(_DWORD *)(v1 + 36) = 0; *(_DWORD *)(v1 + 40) = 0; *(_DWORD *)(v1 + 44) = 0; v3 = *(_DWORD *)(v1 + 20); if ( v3 ) { sub_47C740(v3, *(_DWORD *)(v1 + 24)); operator delete(*(void **)(v1 + 20)); } *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 0; v4 = v1 + 4; v8 = v4; v5 = *(_DWORD *)(v4 + 4); v6 = **(_DWORD **)(v4 + 4); v9 = 0; sub_47CEF0(v4, (int)&v7, v6, v5); operator delete(*(void **)(v4 + 4)); } //----- (0047F480) -------------------------------------------------------- char __thiscall sub_47F480(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@2 v2 = this; *(_DWORD *)a2 = *(_DWORD *)(this + 28); *(_WORD *)(a2 + 4) = *(_WORD *)(this + 88); *(_DWORD *)(a2 + 8) = *(_DWORD *)(this + 208); *(_WORD *)(a2 + 12) = *(_WORD *)(this + 268); v3 = *(_DWORD *)(this + 16); v4 = *(_DWORD *)(this + 12); if ( v4 != v3 ) { v5 = sub_47C650(v3, v3, v4); sub_47C7F0(v5, *(_DWORD *)(v2 + 16)); *(_DWORD *)(v2 + 16) = v5; } return 1; } //----- (0047F4F0) -------------------------------------------------------- void __thiscall sub_47F4F0(int this) { int v1; // ebx@1 int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 unsigned __int8 *v5; // eax@6 int v6; // eax@8 int v7; // ecx@13 int v8; // eax@13 int v9; // esi@14 int v14; // ecx@20 int v17; // ecx@24 int v18; // eax@24 int v19; // esi@25 void *v20; // esi@26 const void *v21; // ecx@26 int v22; // [sp+Ch] [bp-30h]@4 int v23; // [sp+Ch] [bp-30h]@16 void *v24; // [sp+10h] [bp-2Ch]@6 int v25; // [sp+20h] [bp-1Ch]@12 unsigned int v26; // [sp+24h] [bp-18h]@6 unsigned int v27; // [sp+2Ch] [bp-10h]@1 int v28; // [sp+38h] [bp-4h]@6 int v29; // [sp+3Ch] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 36); v3 = 0; v4 = (*(_DWORD *)(this + 40) - v2) / 28; if ( v4 ) { if ( (unsigned int)v4 <= 0 ) sub_6517D8((int)"invalid vector subscript"); v22 = sub_54DE90(&unk_13253630, *(_WORD *)v2); if ( v22 && !*(_DWORD *)(v2 + 4) ) { sub_5C4E40((int)&v24, *(_DWORD *)(v1 + 76)); v5 = (unsigned __int8 *)v24; v28 = 0; if ( v26 < 0x10 ) v5 = (unsigned __int8 *)&v24; v6 = sub_418C10((int)&unk_877138, v5); if ( v6 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v22 + 1616))(*(_DWORD *)(*(_DWORD *)v6 + 34)); v28 = -1; if ( v26 >= 0x10 ) operator delete(v24); v26 = 15; v25 = 0; LOBYTE(v24) = 0; } } v7 = *(_DWORD *)(v1 + 20); v8 = *(_DWORD *)(v1 + 24); if ( v7 != v8 ) { v9 = sub_47BC10(v8, v8, v7); sub_47C740(v9, *(_DWORD *)(v1 + 24)); *(_DWORD *)(v1 + 24) = v9; } if ( *(_DWORD *)(v1 + 36) != *(_DWORD *)(v1 + 40) ) { v23 = *(_DWORD *)(v1 + 36); *(_DWORD *)(v1 + 40) = v23; } v14 = *(_DWORD *)(v1 + 80); if ( v14 != *(_DWORD *)(v1 + 84) ) *(_DWORD *)(v1 + 84) = v14; sub_47BFB0(*(void **)(*(_DWORD *)(v1 + 8) + 4)); *(_DWORD *)(*(_DWORD *)(v1 + 8) + 4) = *(_DWORD *)(v1 + 8); **(_DWORD **)(v1 + 8) = *(_DWORD *)(v1 + 8); *(_DWORD *)(*(_DWORD *)(v1 + 8) + 8) = *(_DWORD *)(v1 + 8); *(_DWORD *)(v1 + 12) = v3; *(_DWORD *)v1 = v3; *(_DWORD *)(v1 + 60) = v3; *(_DWORD *)(v1 + 64) = v3; *(_DWORD *)(v1 + 68) = v3; *(_DWORD *)(v1 + 72) = v3; *(_DWORD *)(v1 + 76) = v3; sub_58FC60(v1 + 96, v3); *(_DWORD *)(v1 + 112) = v3; *(_DWORD *)(v1 + 116) = v3; v17 = *(_DWORD *)(v1 + 120); v18 = *(_DWORD *)(v1 + 124); if ( v17 != v18 ) { v19 = sub_47BC80(v18, v18, v17); sub_47C7A0(v19, *(_DWORD *)(v1 + 124)); *(_DWORD *)(v1 + 124) = v19; } *(_BYTE *)(v1 + 136) = 0; *(_DWORD *)(v1 + 140) = v3; *(_DWORD *)(v1 + 144) = 1; v20 = *(void **)(v1 + 164); v21 = *(const void **)(v1 + 168); if ( v20 != v21 ) { memmove_0(v20, v21, 0); *(_DWORD *)(v1 + 168) = v20; } } // 86FEB8: using guessed type int __security_cookie; //----- (0047F740) -------------------------------------------------------- unsigned int __thiscall sub_47F740(int this, int a2) { int v2; // esi@1 unsigned int result; // eax@1 int v4; // edi@1 int v5; // edi@3 int v6; // ecx@5 v2 = this; result = *(_DWORD *)(this + 4); v4 = a2; if ( a2 >= result || *(_DWORD *)this > (unsigned int)a2 ) { if ( result == *(_DWORD *)(this + 8) ) result = sub_47F200(this, 1); v6 = *(_DWORD *)(v2 + 4); } else { v5 = a2 - *(_DWORD *)this; if ( result == *(_DWORD *)(this + 8) ) result = sub_47F200(this, 1); v6 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)v2 + (v5 & 0xFFFFFFC0); } if ( v6 ) result = sub_47A910(v6, v4); *(_DWORD *)(v2 + 4) += 64; return result; } //----- (0047F7E0) -------------------------------------------------------- unsigned int __thiscall sub_47F7E0(int this, int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 int v4; // esi@1 signed int v5; // edx@3 int v6; // esi@3 int v7; // ebx@5 unsigned int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = a2; if ( a2 >= v3 || *(_DWORD *)v2 > (unsigned int)a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_47F260(v2, 1); v7 = *(_DWORD *)(v2 + 4); result = 0; } else { v5 = (signed int)((unsigned __int64)(780903145i64 * (a2 - *(_DWORD *)v2)) >> 32) >> 3; v6 = v5 + ((unsigned int)v5 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_47F260(v2, 1); v7 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)v2 + 44 * v6; result = 0; } if ( v7 != result ) { *(_DWORD *)v7 = *(_DWORD *)v4; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(v7 + 8) = *(_DWORD *)(v4 + 8); *(_DWORD *)(v7 + 32) = 15; *(_DWORD *)(v7 + 28) = result; *(_BYTE *)(v7 + 12) = result; sub_423FC0((void *)(v7 + 12), v4 + 12, result, 0xFFFFFFFFu); result = *(_DWORD *)(v4 + 40); *(_DWORD *)(v7 + 40) = result; } *(_DWORD *)(v2 + 4) += 44; return result; } //----- (0047F8C0) -------------------------------------------------------- int __thiscall sub_47F8C0(int this, int a2) { signed __int64 v2; // qax@1 int v3; // edi@1 unsigned int v4; // ecx@1 int v5; // esi@1 int v6; // esi@3 int v7; // ecx@5 int v9; // [sp+10h] [bp-Ch]@1 int v10; // [sp+18h] [bp-4h]@5 LODWORD(v2) = &v9; v3 = this; v4 = *(_DWORD *)(this + 4); v5 = a2; if ( a2 >= v4 || (LODWORD(v2) = *(_DWORD *)v3, *(_DWORD *)v3 > (unsigned int)a2) ) { if ( v4 == *(_DWORD *)(v3 + 8) ) LODWORD(v2) = sub_47F2E0(v3, 1); v7 = *(_DWORD *)(v3 + 4); v10 = 1; } else { v2 = 1402438301i64 * (a2 - (signed int)v2); v6 = (SHIDWORD(v2) >> 6) + (HIDWORD(v2) >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) LODWORD(v2) = sub_47F2E0(v3, 1); v7 = *(_DWORD *)(v3 + 4); v5 = *(_DWORD *)v3 + 196 * v6; v10 = 0; } if ( v7 ) LODWORD(v2) = sub_47AD10(v7, v5); *(_DWORD *)(v3 + 4) += 196; return v2; } //----- (0047F980) -------------------------------------------------------- char __thiscall sub_47F980(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 int v4; // edi@2 v1 = this; v2 = *(_DWORD *)(this + 16); v3 = *(_DWORD *)(this + 12); if ( v3 != v2 ) { v4 = sub_47C650(v2, v2, v3); sub_47C7F0(v4, *(_DWORD *)(v1 + 16)); *(_DWORD *)(v1 + 16) = v4; } sub_47F4F0(v1 + 28); sub_47F4F0(v1 + 208); *(_DWORD *)(v1 + 392) = -1; *(_DWORD *)(v1 + 388) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 208) = 0; return 1; } //----- (0047FA00) -------------------------------------------------------- char __thiscall sub_47FA00(void *this, int a2, char *a3, char *a4) { unsigned int v4; // ST04_4@1 void *v5; // ST14_4@1 char *v6; // eax@1 signed int v7; // edx@1 int v9; // [sp+10h] [bp-D4h]@1 __int16 v10; // [sp+14h] [bp-D0h]@1 char v11; // [sp+18h] [bp-CCh]@1 char v12; // [sp+34h] [bp-B0h]@1 char v13; // [sp+50h] [bp-94h]@1 char v14; // [sp+6Ch] [bp-78h]@1 __int16 v15; // [sp+7Ch] [bp-68h]@1 unsigned int v16; // [sp+D4h] [bp-10h]@1 int v17; // [sp+E0h] [bp-4h]@1 int v18; // [sp+E4h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = (unsigned int)&v18 ^ __security_cookie; v5 = this; sub_479CC0((int)&v9); v17 = 0; v9 = 0; v10 = sub_4802C0(a2); v6 = (char *)(*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 2196))(a2, v4); sub_4241C0((int)&v13, v6, strlen(v6)); sub_4241C0((int)&v11, a3, strlen(a3)); sub_4241C0((int)&v12, a4, strlen(a4)); v7 = (signed int)((unsigned __int64)(10 * sub_5C4A80(*((_DWORD *)v5 + 97)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; sub_650330((int)&v14, v7 + ((unsigned int)v7 >> 31)); v15 = -1; sub_47F8C0((int)((char *)v5 + 12), (int)&v9); sub_479D70(&v9); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0047FB40) -------------------------------------------------------- char __thiscall sub_47FB40(int this, int a2, int a3, __int16 a4, char *a5) { int v5; // eax@1 bool v6; // zf@1 int v7; // ecx@1 __int16 v9; // ax@8 int v10; // edx@8 char *v11; // esi@8 int v12; // [sp+Ch] [bp-54h]@6 char v13; // [sp+10h] [bp-50h]@8 __int16 v14; // [sp+12h] [bp-4Eh]@8 __int16 v15; // [sp+14h] [bp-4Ch]@8 void *v16; // [sp+18h] [bp-48h]@8 int v17; // [sp+28h] [bp-38h]@8 unsigned int v18; // [sp+2Ch] [bp-34h]@8 void *v19; // [sp+34h] [bp-2Ch]@8 int v20; // [sp+44h] [bp-1Ch]@8 unsigned int v21; // [sp+48h] [bp-18h]@8 unsigned int v22; // [sp+50h] [bp-10h]@1 int v23; // [sp+5Ch] [bp-4h]@8 int v24; // [sp+60h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v5 = this; v6 = *(_DWORD *)(this + 28) == a3; v7 = this + 28; if ( !v6 ) { v7 = v5 + 208; if ( *(_DWORD *)(v5 + 208) != a3 ) { if ( *(_DWORD *)(v5 + 4) || *(_DWORD *)(v5 + 8) ) { (*(void (__thiscall **)(_DWORD, signed int))(v5 + 8))(*(_DWORD *)(v5 + 4), 6991); return 0; } return 0; } } v12 = v7; if ( !v7 ) return 0; v18 = 15; v17 = 0; LOBYTE(v16) = 0; v21 = 15; v20 = 0; LOBYTE(v19) = 0; v23 = 0; v14 = a4; v9 = sub_4802C0(a2); v10 = *(_DWORD *)a2; v15 = v9; v11 = (char *)(*(int (__thiscall **)(int))(v10 + 2196))(a2); sub_4241C0((int)&v16, v11, strlen(v11)); sub_4241C0((int)&v19, a5, strlen(a5)); v13 = 0; sub_47F740(v12 + 20, (int)&v13); if ( v21 >= 0x10 ) operator delete(v19); v21 = 15; v20 = 0; LOBYTE(v19) = 0; if ( v18 >= 0x10 ) operator delete(v16); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0047FDC0) -------------------------------------------------------- int __thiscall sub_47FDC0(int this) { int v1; // esi@1 int v3; // [sp+1Ch] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6B5044; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; LOBYTE(v3) = 1; loc_47FCA0(this + 28); LOBYTE(v3) = 2; loc_47FCA0(v1 + 208); LOBYTE(v3) = 3; *(_DWORD *)(v1 + 396) = &off_6B4A00; sub_58FC10(v1 + 420); sub_58FC10(v1 + 436); *(_DWORD *)(v1 + 452) = 0; *(_DWORD *)(v1 + 456) = 0; *(_DWORD *)(v1 + 460) = 0; *(_DWORD *)(v1 + 464) = 0; *(_DWORD *)(v1 + 400) = 0; *(_DWORD *)(v1 + 404) = 0; *(_DWORD *)(v1 + 408) = 0; *(_DWORD *)(v1 + 412) = 0; sub_58FC10(v1 + 472); *(_DWORD *)(v1 + 468) = 0; *(_DWORD *)(v1 + 392) = -1; *(_DWORD *)(v1 + 388) = 0; *(_DWORD *)(v1 + 464) = sub_47AB80; *(_DWORD *)(v1 + 460) = v1; sub_650330(v1 + 472, 600); return v1; } // 6B4A00: using guessed type int (__stdcall *off_6B4A00)(int); // 6B5044: using guessed type int (__thiscall *off_6B5044)(void *, char); //----- (0047FED0) -------------------------------------------------------- void __thiscall sub_47FED0(void *this) { void *v1; // esi@1 int v2; // eax@1 v1 = this; sub_47F360((int)((char *)this + 208)); sub_47F360((int)((char *)v1 + 28)); v2 = *((_DWORD *)v1 + 3); if ( v2 ) { sub_47C7F0(v2, *((_DWORD *)v1 + 4)); operator delete(*((void **)v1 + 3)); } *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *((_DWORD *)v1 + 5) = 0; *(_DWORD *)v1 = &off_6B499C; } // 6B499C: using guessed type int (__thiscall *off_6B499C)(void *, char); //----- (0047FF70) -------------------------------------------------------- void *__thiscall sub_47FF70(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_47FED0(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0047FFA0) -------------------------------------------------------- char __thiscall sub_47FFA0(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 v5 = this; sub_47F980(this); *(_DWORD *)(v5 + 28) = a2; loc_47CB90(a4); *(_DWORD *)(v5 + 208) = a3; loc_47CB90(a4); *(_DWORD *)(v5 + 388) = a4; *(_DWORD *)(v5 + 392) = a5; return 1; } //----- (0047FFF0) -------------------------------------------------------- FILE *__thiscall sub_47FFF0(void *this, int a2, int a3) { int v3; // esi@1 void *v4; // edi@1 const char *v5; // ecx@2 int v6; // eax@4 int v8; // eax@8 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 int v13; // [sp-4h] [bp-14h]@4 int *v14; // [sp+Ch] [bp-4h]@4 v3 = a2 + 12; v4 = this; if ( *(_DWORD *)(a2 + 32) < 0x10u ) v5 = (const char *)(a2 + 12); else v5 = *(const char **)v3; v14 = &v9; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; strncpy((char *)&v9, v5, 0x14u); v6 = sub_4B1A40((void *)dword_D9FAF98, a2, v9, v10, v11, v12, v13); if ( v6 ) { sub_4B2780(v6, 0); v8 = (int)((char *)v4 + 28); if ( *((_DWORD *)v4 + 7) == a3 || (v8 = (int)((char *)v4 + 208), *((_DWORD *)v4 + 52) == a3) ) { if ( v8 ) return (FILE *)sub_47F7E0(v8 + 120, a2); } else { if ( *((_DWORD *)v4 + 1) || *((_DWORD *)v4 + 2) ) (*((void (__thiscall **)(_DWORD, _DWORD))v4 + 2))(*((_DWORD *)v4 + 1), 6991); } return sub_639100(&unk_86DDD8, (int)"GuildTournamentSystem::AddAdvanItemMonster Not Find GuildGroup :", a3); } if ( *(_DWORD *)(a2 + 32) >= 0x10u ) v3 = *(_DWORD *)v3; return sub_6390B0(&unk_86DDD8, (int)"GuildTournamentSystem::AddAdvanItemMonster Not Find BreedGroup :", v3); } // D9FAF98: using guessed type int dword_D9FAF98; //----- (004800D0) -------------------------------------------------------- signed int __thiscall sub_4800D0(int this) { signed int result; // eax@1 result = 4096; do { *(_DWORD *)(this + 8 * (*(_DWORD *)(this + 32768))++) = 0; --result; } while ( result ); return result; } //----- (00480100) -------------------------------------------------------- int __thiscall sub_480100(int this, int a2, int a3) { int v3; // eax@5 int v4; // edx@5 int v5; // eax@10 int result; // eax@11 if ( a2 != a3 && a2 && a3 ) { *(_DWORD *)(this + 32768) = 0; while ( 1 ) { v3 = *(_DWORD *)(this + 32768); v4 = *(_DWORD *)(this + 8 * v3); if ( v4 ) { if ( v4 == a2 && *(_DWORD *)(this + 8 * v3 + 4) == a3 || v4 == a3 && *(_DWORD *)(this + 8 * v3 + 4) == a2 ) break; } v5 = v3 + 1; *(_DWORD *)(this + 32768) = v5; if ( v5 >= 4096 ) goto LABEL_11; } result = this + 8 * v3; } else { LABEL_11: result = 0; } return result; } //----- (00480170) -------------------------------------------------------- void __thiscall sub_480170(int this, int a2, int a3) { int v3; // eax@4 int v4; // eax@5 if ( a2 && a3 ) { *(_DWORD *)(this + 32768) = 0; while ( 1 ) { v3 = *(_DWORD *)(this + 32768); if ( !*(_DWORD *)(this + 8 * v3) ) break; v4 = v3 + 1; *(_DWORD *)(this + 32768) = v4; if ( v4 >= 4096 ) return; } *(_DWORD *)(this + 8 * v3) = a2; *(_DWORD *)(this + 8 * *(_DWORD *)(this + 32768) + 4) = a3; } } //----- (004801D0) -------------------------------------------------------- void __thiscall sub_4801D0(int this, int a2, int a3) { int v3; // eax@4 int v4; // eax@5 if ( a2 && a3 ) { *(_DWORD *)(this + 32768) = 0; while ( 1 ) { v3 = *(_DWORD *)(this + 32768); if ( *(_DWORD *)(this + 8 * v3) == a2 ) break; v4 = v3 + 1; *(_DWORD *)(this + 32768) = v4; if ( v4 >= 4096 ) return; } *(_DWORD *)(this + 8 * v3) = 0; } } //----- (00480220) -------------------------------------------------------- int __thiscall sub_480220(int this, int a2, int a3, int a4) { return sub_480100(this, a3, a4); } //----- (00480240) -------------------------------------------------------- int __thiscall sub_480240(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1360))(); } //----- (00480250) -------------------------------------------------------- signed int __thiscall sub_480250(int this) { signed int result; // eax@2 if ( *(_DWORD *)(this + 9668) ) result = (unsigned __int16)(*(int (**)(void))(**(_DWORD **)(this + 9668) + 1360))(); else result = 65535; return result; } //----- (00480280) -------------------------------------------------------- int __thiscall sub_480280(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 836))(); } //----- (00480290) -------------------------------------------------------- int __thiscall sub_480290(void *this) { int result; // eax@2 if ( *((_DWORD *)this + 2417) ) result = (*(int (**)(void))(**((_DWORD **)this + 2417) + 836))(); else result = (*(int (**)(void))(*(_DWORD *)this + 836))(); return result; } //----- (004802C0) -------------------------------------------------------- __int16 __thiscall sub_4802C0(int this) { return *(_WORD *)(this + 4); } //----- (004802D0) -------------------------------------------------------- int __thiscall sub_4802D0(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 9668); if ( v1 ) result = *(_WORD *)(v1 + 4); else result = *(_WORD *)(this + 4); return result; } //----- (004802F0) -------------------------------------------------------- int __thiscall sub_4802F0(int this, int a2, int a3) { return dword_14D129E8 - *(_DWORD *)(this + 12); } // 14D129E8: using guessed type int dword_14D129E8; //----- (00480300) -------------------------------------------------------- int __thiscall sub_480300(int this) { int result; // eax@1 *(double *)this = 1.2; memcpy((void *)(this + 8), (const void *)this, 0x4A8u); memset((void *)(this + 1200), 0, 0x4B8u); *(double *)(this + 1120) = 1.2; *(double *)(this + 1128) = 1.2; *(double *)(this + 1136) = 1.2; *(double *)(this + 1144) = 1.2; *(double *)(this + 1152) = 1.2; *(double *)(this + 1160) = 1.2; result = this; *(double *)(this + 1168) = 1.15; *(double *)(this + 1176) = 1.1; *(double *)(this + 1184) = 1.05; *(double *)(this + 1192) = 1.0; *(double *)(this + 1200) = 1.0; *(double *)(this + 1208) = 1.0; *(double *)(this + 1216) = 0.95; *(double *)(this + 1224) = 0.85; *(double *)(this + 1232) = 0.75; *(double *)(this + 1240) = 0.65; *(double *)(this + 1248) = 0.5; *(double *)(this + 1256) = 0.35; *(double *)(this + 1264) = 0.15; *(double *)(this + 1272) = 0.01; *(double *)(this + 1280) = 0.005; return result; } //----- (00480420) -------------------------------------------------------- char __thiscall sub_480420(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v5 + 20); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004804A0) -------------------------------------------------------- void *__thiscall sub_4804A0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 10, 5) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 10, 10, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00480550) -------------------------------------------------------- void *__thiscall sub_480550(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 7, 4) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 7, 7, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00480600) -------------------------------------------------------- void *__thiscall sub_480600(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 7, 3) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 7, 7, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004806A0) -------------------------------------------------------- void *__thiscall sub_4806A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B5154; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B5154: using guessed type int (__thiscall *off_6B5154)(void *, char); //----- (004806E0) -------------------------------------------------------- void *__thiscall sub_4806E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B5180; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B5180: using guessed type int (__thiscall *off_6B5180)(void *, char); //----- (00480710) -------------------------------------------------------- void *__thiscall sub_480710(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B5188; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B5188: using guessed type int (__thiscall *off_6B5188)(void *, char); //----- (00480740) -------------------------------------------------------- void *__thiscall sub_480740(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B5190; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B5190: using guessed type int (__thiscall *off_6B5190)(void *, char); //----- (00480780) -------------------------------------------------------- char __thiscall sub_480780(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 v3 = this; v4 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(this + 20))(a2, *(_DWORD *)(this + 4), a3); if ( !*(_DWORD *)(v3 + 12) || v4 > *(_DWORD *)(v3 + 8) ) { *(_WORD *)(v3 + 16) = a3; *(_DWORD *)(v3 + 8) = v4; *(_DWORD *)(v3 + 12) = a2; } return 1; } //----- (004807C0) -------------------------------------------------------- int __thiscall sub_4807C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // esi@2 int v7; // eax@4 int v8; // edx@4 int v10; // [sp-4h] [bp-24h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"HitMeList::Enemy::e_ObjCompare"); dword_7508B8[dword_750CB8] = (int)"HitMeList::Enemy::e_ObjCompare"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)v4; if ( *(_DWORD *)v4 != *(_DWORD *)a4 ) { v6 = v5 - *(_DWORD *)a4; LABEL_8: v10 = (int)"HitMeList::Enemy::e_ObjCompare"; goto LABEL_9; } if ( v5 ) { v6 = *((_WORD *)v4 + 2) - *(_WORD *)(a4 + 4); goto LABEL_8; } v7 = *((_DWORD *)v4 + 1); v8 = *(_DWORD *)(a4 + 4); v10 = (int)"HitMeList::Enemy::e_ObjCompare"; if ( v7 == v8 ) v6 = *((_WORD *)v4 + 4) - *(_WORD *)(a4 + 8); else v6 = v7 - v8; LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, v10); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004808A0) -------------------------------------------------------- int __thiscall sub_4808A0(int this) { int v1; // ebx@1 void *v2; // edi@1 int result; // eax@1 int v4; // esi@1 int v5; // ecx@2 int v6; // eax@3 int v7; // [sp+Ch] [bp-4h]@1 v1 = 0; *(_DWORD *)(this + 4) = 0; v2 = dword_D554230; result = (dword_D554234 - (signed int)dword_D554230) / 12; v4 = 0; v7 = this; if ( result > 0 ) { v5 = 0; do { v6 = *((_BYTE *)v2 + v1 + 4); if ( v5 < v6 ) { v5 = *((_BYTE *)v2 + v1 + 4); *(_DWORD *)(v7 + 4) = v6; v2 = dword_D554230; } ++v4; result = (dword_D554234 - (signed int)v2) / 12; v1 += 12; } while ( v4 < result ); } return result; } // D554234: using guessed type int dword_D554234; //----- (00480920) -------------------------------------------------------- double __thiscall sub_480920(void *this, int a2, int a3, int a4) { void *v4; // esi@1 double result; // st7@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"LevelHandicap4ExperienceDouble::lh4ed_Handicap"); dword_7508B8[dword_750CB8] = (int)"LevelHandicap4ExperienceDouble::lh4ed_Handicap"; dword_750AB8[dword_750CB8++] = -1; result = *((double *)v4 + a3 - a4 + 150); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"LevelHandicap4ExperienceDouble::lh4ed_Handicap"); return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004809A0) -------------------------------------------------------- int __thiscall sub_4809A0(void *this, int a2, signed int a3) { void *v3; // edi@1 int v4; // esi@1 int v5; // ebx@1 unsigned __int8 v6; // al@1 unsigned __int16 v7; // ax@1 double v8; // st7@1 int v10; // [sp+14h] [bp-Ch]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ExperienceDistribute::ed_GiveExperience"); dword_7508B8[dword_750CB8] = (int)"ExperienceDistribute::ed_GiveExperience"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = *(_DWORD *)(**((_DWORD **)v3 + 1) + 66); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2); v7 = (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v4 + 1360))(v4, v6, v5); v8 = sub_480920(&unk_D554240, v7, (int)"ExperienceDistribute::ed_GiveExperience", v10) * (double)a3; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1476))(v4, (signed int)v8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ExperienceDistribute::ed_GiveExperience"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00480A90) -------------------------------------------------------- void __thiscall sub_480A90(void *this) { void *v1; // edi@1 unsigned int v2; // esi@1 signed int v3; // ebx@1 int v4; // eax@3 int v5; // esi@6 void *v6; // [sp+10h] [bp-5Ch]@1 int (__thiscall **v7)(void *, char); // [sp+14h] [bp-58h]@1 int v8; // [sp+48h] [bp-24h]@1 int v9; // [sp+54h] [bp-18h]@1 char v10; // [sp+58h] [bp-14h]@1 unsigned int v11; // [sp+5Ch] [bp-10h]@1 int v12; // [sp+68h] [bp-4h]@1 int v13; // [sp+6Ch] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = this; v6 = this; sub_639920((int)&v7); v7 = &off_6B5180; v2 = 0; v9 = 0; v10 = 0; v12 = 0; sub_4804A0(&v7, "../9Data/Shine/PartyBonusLimit.shn"); v3 = *(_DWORD *)(v8 + 40); memset(v1, 0, 0x25Cu); if ( v3 > 0 ) { do { if ( v2 < *(_DWORD *)(v8 + 40) ) v4 = sub_626BC0((int)&v7, v2); else v4 = (int)&v9; ++v2; *((_DWORD *)v6 + *(_BYTE *)v4) = *(_DWORD *)(v4 + 1); } while ( (signed int)v2 < v3 ); } v5 = 1; do { if ( *((_DWORD *)v6 + v5) <= 0u ) sub_639100(&unk_86DDD8, (int)"PartyExperienceBonusDouble::pebd_Load : Data error", v5); ++v5; } while ( v5 <= 150 ); v12 = -1; v7 = &off_6B5180; sub_639940((int)&v7); } // 6B5180: using guessed type int (__thiscall *off_6B5180)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00480B90) -------------------------------------------------------- void __thiscall sub_480B90(void *this, int a2) { void *v2; // edi@1 unsigned int v3; // ebx@1 double v4; // st7@2 int v5; // eax@4 signed int v6; // esi@6 unsigned int v7; // edx@8 int v8; // ecx@8 int v9; // ecx@12 int v10; // edx@12 signed int v11; // [sp+Ch] [bp-60h]@1 unsigned int v12; // [sp+10h] [bp-5Ch]@1 int (__thiscall **v13)(void *, char); // [sp+18h] [bp-54h]@1 int v14; // [sp+4Ch] [bp-20h]@1 int v15; // [sp+58h] [bp-14h]@1 unsigned int v16; // [sp+5Ch] [bp-10h]@1 int v17; // [sp+68h] [bp-4h]@1 int v18; // [sp+6Ch] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v2 = this; sub_639920((int)&v13); v13 = &off_6B5188; v15 = 0; v17 = 0; sub_480550(&v13, "../9Data/Shine/PartyBonusByLvDiff.shn"); v3 = 0; v11 = *(_DWORD *)(v14 + 40); v12 = 0; if ( v11 > 0 ) { v4 = 1000.0; do { if ( v3 < *(_DWORD *)(v14 + 40) ) { v5 = sub_626BC0((int)&v13, v3); v4 = 1000.0; } else { v5 = (int)&v15; } v6 = *(_WORD *)v5; if ( v6 <= 150 ) { if ( 151 - v6 >= 4 ) { v7 = ((unsigned int)(147 - v6) >> 2) + 1; v8 = (int)((char *)v2 + 8 * v6 + 1208); v6 += 4 * v7; do { v8 += 32; --v7; *(double *)(v8 - 40) = (double)*(_WORD *)(v5 + 2) / v4; *(double *)(v8 - 32) = (double)*(_WORD *)(v5 + 2) / v4; *(double *)(v8 - 24) = (double)*(_WORD *)(v5 + 2) / v4; *(double *)(v8 - 16) = (double)*(_WORD *)(v5 + 2) / v4; } while ( v7 ); v3 = v12; } if ( v6 <= 150 ) { v9 = (int)((char *)v2 + 8 * v6 + 1200); v10 = 151 - v6; do { v9 += 8; --v10; *(double *)(v9 - 8) = (double)*(_WORD *)(v5 + 2) / v4; } while ( v10 ); } } ++v3; v12 = v3; } while ( (signed int)v3 < v11 ); } v17 = -1; v13 = &off_6B5188; sub_639940((int)&v13); } // 6B5188: using guessed type int (__thiscall *off_6B5188)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00480D00) -------------------------------------------------------- void __thiscall sub_480D00(void *this, int a2) { void *v2; // edi@1 unsigned int v3; // esi@1 signed int v4; // ecx@1 unsigned __int8 v5; // bl@1 int v6; // eax@3 unsigned __int8 v7; // al@5 int i; // eax@10 unsigned int v9; // esi@12 int v10; // eax@14 int j; // esi@17 signed int v12; // [sp+10h] [bp-58h]@1 int (__thiscall **v13)(void *, char); // [sp+14h] [bp-54h]@1 int v14; // [sp+48h] [bp-20h]@1 __int16 v15; // [sp+54h] [bp-14h]@1 char v16; // [sp+56h] [bp-12h]@1 unsigned int v17; // [sp+58h] [bp-10h]@1 int v18; // [sp+64h] [bp-4h]@1 int v19; // [sp+68h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v2 = this; sub_639920((int)&v13); v13 = &off_6B5190; v3 = 0; v15 = 0; v16 = 0; v18 = 0; sub_480600(&v13, "../9Data/Shine/PartyBonusByMember.shn"); v4 = *(_DWORD *)(v14 + 40); v5 = 0; v12 = v4; if ( v4 > 0 ) { do { if ( v3 < *(_DWORD *)(v14 + 40) ) { v6 = sub_626BC0((int)&v13, v3); v4 = v12; } else { v6 = (int)&v15; } v7 = *(_BYTE *)v6; if ( v5 < v7 ) v5 = v7; ++v3; } while ( (signed int)v3 < v4 ); } if ( (signed int)v5 > *((_DWORD *)v2 + 42) ) { sub_639150(&unk_86DDD8, (int)"PartyExperienceBonusDouble::pebd_Load - Buffer max num", v5, *((_DWORD *)v2 + 42)); loc_6391B0("PartyExperienceBonusDouble::pebd_Load"); v4 = v12; } for ( i = 0; i <= *((_DWORD *)v2 + 42); ++i ) *((double *)v2 + i) = -1.0; v9 = 0; if ( v4 > 0 ) { do { if ( v9 < *(_DWORD *)(v14 + 40) ) { v10 = sub_626BC0((int)&v13, v9); v4 = v12; } else { v10 = (int)&v15; } ++v9; *((double *)v2 + *(_BYTE *)v10) = (double)*(_WORD *)(v10 + 1) / 1000.0; } while ( (signed int)v9 < v4 ); } for ( j = 0; j <= *((_DWORD *)v2 + 42); ++j ) { if ( *((double *)v2 + j) < 0.0 ) sub_639100(&unk_86DDD8, (int)"PartyExperienceBonusDouble::pebd_Load : Data error", j); } v18 = -1; v13 = &off_6B5190; sub_639940((int)&v13); } // 6B5190: using guessed type int (__thiscall *off_6B5190)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00480E80) -------------------------------------------------------- int __stdcall sub_480E80(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x15555555 || (result = operator new(12 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00480EE0) -------------------------------------------------------- char __thiscall sub_480EE0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v2 + 20) = *(_DWORD *)(a2 + 20); result = 1; } else { result = 0; } return result; } //----- (00480F30) -------------------------------------------------------- int __thiscall sub_480F30(int this, int a2, int a3, int a4) { int result; // eax@1 int (__stdcall **v5)(int, int); // [sp+4h] [bp-24h]@1 int v6; // [sp+8h] [bp-20h]@1 int v7; // [sp+Ch] [bp-1Ch]@1 int v8; // [sp+10h] [bp-18h]@1 int v9; // [sp+14h] [bp-14h]@1 __int16 v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v7 = a2; v8 = a4; v5 = &off_6B51A8; v6 = this; v9 = 0; v10 = -1; v11 = 0; sub_43C470(this, (int)&v5); result = v9; *(_WORD *)a3 = v10; return result; } // 6B51A8: using guessed type int (__stdcall *off_6B51A8)(int, int); //----- (00480FB0) -------------------------------------------------------- int __cdecl sub_480FB0(int a1) { int result; // eax@2 int v2; // eax@3 if ( a1 ) { v2 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v2 ) { while ( (_UNKNOWN *)v2 != &unk_13253858 ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_6; } result = a1; } else { LABEL_6: result = 0; } } else { result = 0; } return result; } //----- (00481000) -------------------------------------------------------- char __thiscall sub_481000(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B5198; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B5198: using guessed type int (__stdcall *off_6B5198)(int, int); //----- (00481180) -------------------------------------------------------- int __thiscall sub_481180(void *this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // eax@6 int v7; // eax@7 int v8; // ebx@7 int v9; // eax@9 __int16 v10; // ax@12 __int16 v11; // ax@15 int v12; // edx@15 int v13; // eax@16 int v14; // edx@16 int v15; // eax@19 int v17; // [sp-4h] [bp-6Ch]@2 int (__stdcall **v18)(int, int); // [sp+10h] [bp-58h]@23 int v19; // [sp+14h] [bp-54h]@23 int v20; // [sp+1Ch] [bp-4Ch]@23 int (__thiscall *v21)(int, int, int); // [sp+24h] [bp-44h]@23 int (__stdcall **v22)(int, int); // [sp+28h] [bp-40h]@19 int v23; // [sp+2Ch] [bp-3Ch]@19 int (__thiscall *v24)(void *, int, int, int); // [sp+30h] [bp-38h]@19 int *v25; // [sp+34h] [bp-34h]@19 int v26; // [sp+38h] [bp-30h]@19 __int16 v27; // [sp+3Ch] [bp-2Ch]@19 int v28; // [sp+40h] [bp-28h]@13 int v29; // [sp+44h] [bp-24h]@16 int v30; // [sp+48h] [bp-20h]@16 int v31; // [sp+4Ch] [bp-1Ch]@25 int v32; // [sp+50h] [bp-18h]@25 int v33; // [sp+58h] [bp-10h]@1 int v34; // [sp+64h] [bp-4h]@1 v4 = (int)this; v33 = (int)"HitMeList::EnemyList::el_Store"; sub_4675D0((int)&unk_D020420, (int)"HitMeList::EnemyList::el_Store"); dword_7508B8[dword_750CB8] = (int)"HitMeList::EnemyList::el_Store"; dword_750AB8[dword_750CB8++] = -1; v5 = a3; v34 = 0; if ( a3 > 0 ) { if ( !a2 ) goto LABEL_27; if ( !a4 ) a4 = dword_14D129E8; v6 = sub_480FB0(a2); if ( v6 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2480))(v6); v8 = v7; if ( !v7 || !(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2692))(v7) ) { v5 = a3; goto LABEL_15; } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2692))(v8); v5 = a3; } else { if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2) ) goto LABEL_15; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2); } v10 = *(_WORD *)(v9 + 4); if ( -1 != v10 ) { v28 = 2; goto LABEL_18; } LABEL_15: v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1376))(a2); v12 = *(_DWORD *)a2; if ( v11 == -1 ) { v13 = (*(int (__thiscall **)(int))(v12 + 1380))(a2); v14 = *(_DWORD *)a2; v29 = v13; LOWORD(v30) = (*(int (__thiscall **)(int))(v14 + 1384))(a2); v28 = 0; LABEL_19: v22 = &off_6B51A8; v23 = v4; v24 = sub_4807C0; v25 = &v28; v26 = 0; v27 = -1; LOBYTE(v34) = 1; sub_43C470(v4, (int)&v22); v15 = v26; LOBYTE(v34) = 0; v22 = &off_6B5178; if ( v26 ) { *(_DWORD *)(v26 + 16) += v5; LABEL_26: *(_DWORD *)(v15 + 20) = a2; *(_DWORD *)(v15 + 12) = a4; goto LABEL_27; } if ( *(_WORD *)(v4 + 12) != -1 && (v15 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 8))(v4, *(_WORD *)(v4 + 12))) != 0 || (v18 = &off_6B51A0, v19 = v4, v20 = 0, v21 = sub_4802F0, LOBYTE(v34) = 2, sub_43C470(v4, (int)&v18), v15 = v20, LOBYTE(v34) = 0, v18 = &off_6B5178, v20) ) { *(_DWORD *)v15 = v28; *(_DWORD *)(v15 + 4) = v29; *(_DWORD *)(v15 + 8) = v30; *(_DWORD *)(v15 + 12) = v31; *(_DWORD *)(v15 + 16) = v32; *(_DWORD *)(v15 + 16) = v5; goto LABEL_26; } sub_639100(&unk_86DDD8, (int)"HitMeList::EnemyList::el_Store", 0); LABEL_27: --dword_750CB8; v34 = -1; v17 = (int)"HitMeList::EnemyList::el_Store"; return sub_467660((int)&unk_D020420, v17); } v10 = (*(int (__thiscall **)(int))(v12 + 1376))(a2); v28 = 1; LABEL_18: LOWORD(v29) = v10; goto LABEL_19; } --dword_750CB8; v34 = -1; v17 = (int)"HitMeList::EnemyList::el_Store"; return sub_467660((int)&unk_D020420, v17); } // 6B5178: using guessed type int (__stdcall *off_6B5178)(int, int); // 6B51A0: using guessed type int (__stdcall *off_6B51A0)(int, int); // 6B51A8: using guessed type int (__stdcall *off_6B51A8)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00481400) -------------------------------------------------------- int __thiscall sub_481400(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 int v5; // ecx@1 int v6; // esi@1 unsigned __int16 v7; // bx@1 int v8; // eax@3 unsigned __int16 v9; // dx@3 int v10; // edx@5 int v11; // edx@10 int v12; // eax@13 bool v13; // zf@13 int v14; // eax@13 int v15; // esi@17 int v16; // edx@17 int v17; // eax@17 signed int v18; // esi@19 void *v19; // eax@19 int v20; // eax@23 int v21; // eax@23 int v22; // eax@24 int v23; // ecx@26 int v24; // edx@26 unsigned __int16 v26; // [sp+10h] [bp-30h]@3 int v27; // [sp+1Ch] [bp-24h]@1 int v28; // [sp+20h] [bp-20h]@17 int v29; // [sp+24h] [bp-1Ch]@17 int v30; // [sp+28h] [bp-18h]@1 int v31; // [sp+2Ch] [bp-14h]@1 int v32; // [sp+30h] [bp-10h]@1 int v33; // [sp+3Ch] [bp-4h]@1 v2 = this; v30 = (int)"HitMeList::EnemyList::el_FindLooter"; sub_4675D0((int)&unk_D020420, (int)"HitMeList::EnemyList::el_FindLooter"); dword_7508B8[dword_750CB8] = (int)"HitMeList::EnemyList::el_FindLooter"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v33 = 0; sub_4C0A40((int)&v27); v4 = *((_WORD *)v2 + 7); v5 = *((_DWORD *)v2 + 2); v6 = *((_WORD *)v2 + 2); v7 = *(_WORD *)(v5 + 12 * v4 + 4); v31 = 0; v32 = v6; while ( v7 < (unsigned __int16)v6 ) { v8 = v7; v9 = v7; v7 = *(_WORD *)(v5 + 12 * v7 + 4); v26 = v9; if ( v9 < (unsigned __int16)v6 && *(_BYTE *)(v5 + 12 * v8 + 8) ) v10 = *(_DWORD *)(v5 + 12 * v8); else v10 = 0; LOWORD(v6) = v32; if ( *(_DWORD *)(v10 + 16) > v31 ) { if ( v26 < (unsigned __int16)v32 && *(_BYTE *)(v5 + 12 * v8 + 8) ) v11 = *(_DWORD *)(v5 + 12 * v8); else v11 = 0; v31 = *(_DWORD *)(v11 + 16); if ( v26 >= (unsigned __int16)v32 || (v12 = 3 * v8, v13 = *(_BYTE *)(v5 + 4 * v12 + 8) == 0, v14 = v5 + 4 * v12, v13) ) v3 = 0; else v3 = *(_DWORD *)v14; } } if ( v3 ) { if ( *(_DWORD *)v3 == 2 ) { v18 = -1; v19 = (void *)sub_5CB350(*(_WORD *)(v3 + 4)); if ( v19 ) v18 = sub_639A50(v19); sub_4C0AD0((int)&v27, *(_WORD *)(v3 + 4), v18); } else { if ( *(_DWORD *)v3 == 1 ) { v20 = sub_641CA0(&dword_DA230A4, *(_WORD *)(v3 + 4)); v21 = sub_6419B0(v20 + 184); sub_4C0AB0((int)&v27, *(_WORD *)(v3 + 4), v21); } else { v22 = sub_54E4D0(&unk_13253630, *(_DWORD *)(v3 + 4)); if ( v22 ) sub_4C0A80((int)&v27, v22); } } v15 = a2; v23 = v28; v24 = v29; *(_DWORD *)a2 = v27; *(_DWORD *)(a2 + 4) = v23; *(_DWORD *)(a2 + 8) = v24; } else { v15 = a2; v16 = v28; v17 = v29; *(_DWORD *)a2 = v27; *(_DWORD *)(a2 + 4) = v16; *(_DWORD *)(a2 + 8) = v17; } --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"HitMeList::EnemyList::el_FindLooter"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004815E0) -------------------------------------------------------- void __cdecl sub_4815E0() { sub_480B90(&unk_D554240, 0); sub_480D00(dbl_759790, 0); sub_480A90(dword_D554BA8); } // 759790: using guessed type double dbl_759790[]; // D554BA8: using guessed type int dword_D554BA8[]; //----- (00481610) -------------------------------------------------------- int __cdecl sub_481610(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 16 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12); } v3 += 16; } return result; } //----- (00481650) -------------------------------------------------------- int __thiscall sub_481650(int this) { int result; // eax@1 void *i; // edx@1 int v3; // edi@2 int v4; // esi@2 result = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; for ( i = dword_D554230; i != (void *)dword_D554234; i = (char *)i + 12 ) { v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 8) += (*((_BYTE *)i + 4) + 5) * (*((_BYTE *)i + 4) + 5); v4 = *((_BYTE *)i + 4); if ( v3 - v4 > 20 ) { *((_BYTE *)i + 5) = 0; } else { *((_BYTE *)i + 5) = 1; *(_DWORD *)(this + 12) += v4 * v4; ++result; } } return result; } // D554234: using guessed type int dword_D554234; //----- (004816B0) -------------------------------------------------------- int __cdecl sub_4816B0() { void *v0; // edx@1 int result; // eax@1 int v2; // esi@2 unsigned int v3; // ecx@2 v0 = dword_D554230; for ( result = 0; v0 != (void *)dword_D554234; v0 = (char *)v0 + 12 ) { v2 = dword_D554BA8[*((_BYTE *)v0 + 4)]; v3 = *((_DWORD *)v0 + 2); if ( v3 > v2 ) { result += v3 - v2; *((_DWORD *)v0 + 2) = v2; } } return result; } // D554234: using guessed type int dword_D554234; // D554BA8: using guessed type int dword_D554BA8[]; //----- (004816F0) -------------------------------------------------------- int __thiscall sub_4816F0(int this, unsigned int a2) { void *v2; // edx@1 double v3; // st7@2 int result; // eax@3 int v5; // [sp+10h] [bp+8h]@3 v2 = dword_D554230; if ( dword_D554230 != (void *)dword_D554234 ) { v3 = (double)a2; do { v5 = (*((_BYTE *)v2 + 4) + 5) * (*((_BYTE *)v2 + 4) + 5); v2 = (char *)v2 + 12; result = (signed __int64)((double)v5 / (double)*(unsigned int *)(this + 8) * v3); *((_DWORD *)v2 - 1) += result; } while ( v2 != (void *)dword_D554234 ); } return result; } // D554234: using guessed type int dword_D554234; //----- (00481770) -------------------------------------------------------- int __thiscall sub_481770(int this, unsigned int a2) { void *i; // edx@1 int result; // eax@3 for ( i = dword_D554230; i != (void *)dword_D554234; i = (char *)i + 12 ) { if ( *((_BYTE *)i + 5) ) { result = (signed __int64)((double)(*((_BYTE *)i + 4) * *((_BYTE *)i + 4)) / (double)*(unsigned int *)(this + 12) * (double)a2); *((_DWORD *)i + 2) += result; } } return result; } // D554234: using guessed type int dword_D554234; //----- (00481800) -------------------------------------------------------- FILE *__stdcall sub_481800(int a1, int a2) { void *i; // esi@1 FILE *result; // eax@3 for ( i = dword_D554230; i != (void *)dword_D554234; i = (char *)i + 12 ) { if ( *(_DWORD *)i ) result = (FILE *)(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)i + 1476))( *((_DWORD *)i + 2), a1, a2); else result = sub_639100( &unk_86DDD8, (int)"NearFriendInformationSummary::nfis_ExpDistribute : k->nfi_PlayerObject NULL", *(_DWORD *)i != 0); } return result; } // D554234: using guessed type int dword_D554234; //----- (00481870) -------------------------------------------------------- void __thiscall sub_481870(void *this, int a2) { int v2; // ebx@1 int v3; // eax@2 int v4; // eax@4 int v5; // esi@4 int v6; // ecx@6 int v7; // edi@7 int v8; // eax@8 int v9; // edi@10 int v10; // eax@10 __int16 v11; // di@11 __int16 v12; // ax@11 int v13; // eax@16 int v14; // [sp+4h] [bp-20h]@12 int v15; // [sp+8h] [bp-1Ch]@12 __int16 v16; // [sp+Ch] [bp-18h]@15 int v17; // [sp+1Ch] [bp-8h]@16 int i; // [sp+20h] [bp-4h]@4 v2 = (int)this; if ( a2 ) { v3 = (*(int (**)(void))(*(_DWORD *)a2 + 1804))(); if ( v3 ) { if ( *(_DWORD *)(v3 + 4) ) { v4 = *(_WORD *)(*(_DWORD *)(v3 + 4) + 57); v5 = *(_DWORD *)(v2 + 408); for ( i = v4 * v4; v5 != *(_DWORD *)(v2 + 412); v5 += 16 ) { if ( *(_DWORD *)v5 != -1 ) { v6 = *(_DWORD *)(v5 + 4); if ( v6 ) { v7 = *(_DWORD *)v5; if ( (*(int (**)(void))(*(_DWORD *)v6 + 836))() == *(_DWORD *)v5 || (v8 = sub_54E4D0(&unk_13253630, v7), (*(_DWORD *)(v5 + 4) = v8) != 0) ) { v9 = *(_DWORD *)(v5 + 4); v10 = sub_402710(a2, *(_DWORD *)(v5 + 4)); if ( v10 > (unsigned int)i ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1364))(v9); v12 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1360))(); if ( v11 == -1 ) { if ( v12 == -1 ) { v15 = *(_DWORD *)v5; v16 = *(_WORD *)(*(_DWORD *)(v5 + 4) + 4); v14 = 0; } else { LOWORD(v15) = v12; v14 = 1; } } else { LOWORD(v15) = v11; v14 = 2; } v13 = sub_480F30(v2, (int)sub_4807C0, (int)&v17, (int)&v14); if ( v13 ) { *(_DWORD *)(v13 + 16) -= *(_DWORD *)(v5 + 12); if ( *(_DWORD *)(v13 + 16) <= 0 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v17); } } } else { *(_DWORD *)v5 = -1; } } } } } } } } //----- (004819D0) -------------------------------------------------------- int __usercall sub_4819D0(int result, int a2, int a3) { int v3; // edx@1 v3 = a3; if ( a3 ) { result = a2; do { if ( result ) { *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = 0; } result += 16; --v3; } while ( v3 ); } return result; } //----- (00481A00) -------------------------------------------------------- int __thiscall sub_481A00(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 int v5; // ecx@1 int (__stdcall **v7)(int, int); // [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 __int16 v12; // [sp+20h] [bp-14h]@1 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 v4 = (int)this; v13 = (int)"HitMeList::EnemyList::el_ExpDistribute"; sub_4675D0((int)&unk_D020420, (int)"HitMeList::EnemyList::el_ExpDistribute"); dword_7508B8[dword_750CB8] = (int)"HitMeList::EnemyList::el_ExpDistribute"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; sub_481870((void *)v4, a2); v5 = *(_DWORD *)(a3 + 4); v9 = *(_DWORD *)(v4 + 424); v7 = &off_6B5200; v8 = a3; v10 = a2; v11 = v5; v12 = a4; LOBYTE(v14) = 1; sub_43C470(v4, (int)&v7); --dword_750CB8; v7 = &off_6B5178; v14 = -1; return sub_467660((int)&unk_D020420, (int)"HitMeList::EnemyList::el_ExpDistribute"); } // 6B5178: using guessed type int (__stdcall *off_6B5178)(int, int); // 6B5200: using guessed type int (__stdcall *off_6B5200)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00481AE0) -------------------------------------------------------- void __cdecl sub_481AE0(int a1, unsigned int a2) { unsigned int v2; // esi@1 int v3; // eax@2 int v4; // [sp+8h] [bp-8h]@0 v2 = a2; if ( a2 ) { v3 = a1; do { LOWORD(v4) = 250; if ( v3 ) { *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = v4; *(_DWORD *)(v3 + 8) = 0; } --v2; v3 += 12; } while ( v2 > 0 ); } } //----- (00481B20) -------------------------------------------------------- unsigned int __thiscall sub_481B20(int this, unsigned int a2) { int v2; // esi@1 unsigned int result; // eax@1 int v4; // ebx@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edi@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@4 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; result = a2; if ( a2 > (unsigned int)&unk_FFFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 4 < a2 ) { v4 = sub_45C570(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v9 = v4; v11 = 0; sub_481610((int)v6, v5, v4); v7 = *(_DWORD *)(v2 + 4) - *(_DWORD *)v2; if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v4 + 16 * a2; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v4 + (v7 & 0xFFFFFFF0); *(_DWORD *)v2 = v4; } return result; } //----- (00481BD8) -------------------------------------------------------- void __usercall sub_481BD8(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00481BF0) -------------------------------------------------------- unsigned int __thiscall sub_481BF0(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 4; if ( (unsigned int)((char *)&unk_FFFFFFF - a2) < v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 4; if ( result > v4 ) { if ( (unsigned int)((char *)&unk_FFFFFFF - ((unsigned int)v4 >> 1)) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_481B20(this, v5); } return result; } //----- (00481C50) -------------------------------------------------------- int __thiscall sub_481C50(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 void *i; // eax@5 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > 0x15555555 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 12; if ( result < a2 ) { v4 = sub_480E80(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v12 = v4; v14 = 0; sub_5AE9E0((int)v6, v5, v4); v7 = *(void **)v2; v8 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 1; v9 = v8 + ((unsigned int)v8 >> 31); if ( *(_DWORD *)v2 ) { for ( i = *(void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 12 ) ; operator delete(*(void **)v2); } result = v12; *(_DWORD *)(v2 + 8) = v12 + 12 * a2; *(_DWORD *)(v2 + 4) = result + 12 * v9; *(_DWORD *)v2 = result; } return result; } //----- (00481D40) -------------------------------------------------------- void __usercall sub_481D40(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00481D60) -------------------------------------------------------- void __thiscall sub_481D60(int this) { int v1; // esi@1 void *v2; // esi@3 v1 = this; *(_DWORD *)this = &off_6B5400; if ( *(_DWORD *)(this + 408) ) operator delete(*(void **)(this + 408)); *(_DWORD *)(v1 + 408) = 0; *(_DWORD *)(v1 + 412) = 0; *(_DWORD *)(v1 + 416) = 0; *(_DWORD *)v1 = &off_6B5154; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6B5154: using guessed type int (__thiscall *off_6B5154)(void *, char); // 6B5400: using guessed type int (__thiscall *off_6B5400)(void *, char); //----- (00481DC0) -------------------------------------------------------- int __thiscall sub_481DC0(int this, unsigned int a2) { int v2; // edi@1 int v3; // edx@1 int v4; // ecx@1 int result; // eax@1 unsigned int v6; // ecx@2 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)this; result = (v3 - v4) >> 4; if ( result <= a2 ) { if ( result < a2 ) { sub_481BF0(v2, a2 - result); sub_4819D0(*(_DWORD *)(v2 + 4), *(_DWORD *)(v2 + 4), a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 4)); result = *(_DWORD *)(v2 + 4); *(_DWORD *)(v2 + 4) = result + 16 * (a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 4)); } } else { v6 = 16 * a2 + v4; if ( v6 != v3 ) { result = v3; *(_DWORD *)(v2 + 4) = v6; } } return result; } //----- (00481E70) -------------------------------------------------------- int __thiscall sub_481E70(int this, int a2) { int v2; // esi@1 int v3; // edi@1 unsigned int v4; // eax@1 int v5; // esi@3 int result; // eax@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( a2 >= v4 || *(_DWORD *)this > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(this + 8) ) sub_481BF0(this, 1); } else { v5 = a2 - *(_DWORD *)this; if ( v4 == *(_DWORD *)(this + 8) ) sub_481BF0(this, 1); v2 = *(_DWORD *)v3 + (v5 & 0xFFFFFFF0); } result = *(_DWORD *)(v3 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v2; *(_DWORD *)(result + 4) = *(_DWORD *)(v2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v2 + 12); } *(_DWORD *)(v3 + 4) += 16; return result; } //----- (00481EE0) -------------------------------------------------------- int __thiscall sub_481EE0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 12; if ( 357913941 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 12; if ( v3 > (unsigned int)result ) { if ( 357913941 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_481C50(this, v5); } return result; } //----- (00481F60) -------------------------------------------------------- int __thiscall sub_481F60(int this) { int v1; // esi@1 signed int v2; // edi@1 int v3; // eax@1 int v4; // edx@1 int v5; // ecx@3 int v6; // ecx@6 bool v7; // zf@6 int v8; // ecx@6 int v9; // ecx@9 int v10; // ecx@9 int v11; // ecx@12 int v12; // ecx@12 int (__stdcall **v14)(int, int); // [sp+14h] [bp-14h]@15 int v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6B5154; *(_DWORD *)(this + 16) = 0; sub_481000(this, 0x10u); *(_DWORD *)v1 = &off_6B5400; v16 = 0; *(_DWORD *)(v1 + 408) = 0; *(_DWORD *)(v1 + 412) = 0; *(_DWORD *)(v1 + 416) = 0; v2 = 2; v3 = 0; v4 = v1 + 48; v15 = 4; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v4 - 24; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v6 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 + 12) == 0; v8 = v6 + v3 + 12; if ( v7 ) *(_DWORD *)v8 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v9 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v9 + v3 + 24) == 0; v10 = v9 + v3 + 24; if ( v7 ) *(_DWORD *)v10 = v4 + 24; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v11 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v11 + v3 + 36) == 0; v12 = v11 + v3 + 36; if ( v7 ) *(_DWORD *)v12 = v4 + 48; } v4 += 96; v3 += 48; v2 += 4; --v15; } while ( v15 ); v14 = &off_6B5198; v15 = v1; LOBYTE(v16) = 2; sub_43C470(v1, (int)&v14); LOBYTE(v16) = 1; sub_481DC0(v1 + 408, 0); *(_DWORD *)(v1 + 424) = 0; return v1; } // 6B5154: using guessed type int (__thiscall *off_6B5154)(void *, char); // 6B5198: using guessed type int (__stdcall *off_6B5198)(int, int); // 6B5400: using guessed type int (__thiscall *off_6B5400)(void *, char); //----- (004820A0) -------------------------------------------------------- void *__thiscall sub_4820A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@3 v2 = this; *(_DWORD *)this = &off_6B5400; if ( *((_DWORD *)this + 102) ) operator delete(*((void **)this + 102)); *((_DWORD *)v2 + 102) = 0; *((_DWORD *)v2 + 103) = 0; *((_DWORD *)v2 + 104) = 0; v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6B5154; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B5154: using guessed type int (__thiscall *off_6B5154)(void *, char); // 6B5400: using guessed type int (__thiscall *off_6B5400)(void *, char); //----- (00482110) -------------------------------------------------------- int __thiscall sub_482110(int this) { int v1; // esi@1 int result; // eax@1 int (__stdcall **v3)(int, int); // [sp+8h] [bp-14h]@1 int v4; // [sp+Ch] [bp-10h]@1 int v5; // [sp+18h] [bp-4h]@1 v1 = this; v3 = &off_6B5198; v4 = this; v5 = 0; sub_43C470(this, (int)&v3); v5 = -1; v3 = &off_6B5178; result = sub_481DC0(v1 + 408, 0); *(_DWORD *)(v1 + 424) = 0; return result; } // 6B5178: using guessed type int (__stdcall *off_6B5178)(int, int); // 6B5198: using guessed type int (__stdcall *off_6B5198)(int, int); //----- (00482190) -------------------------------------------------------- void __thiscall sub_482190(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@6 int v6; // edx@6 int v7; // eax@11 int v8; // ecx@12 int v9; // edx@12 int v10; // edi@13 int v11; // [sp+8h] [bp-10h]@10 int v12; // [sp+Ch] [bp-Ch]@10 int v13; // [sp+10h] [bp-8h]@10 int v14; // [sp+14h] [bp-4h]@10 int v15; // [sp+20h] [bp+8h]@6 v3 = a2; v4 = this; if ( a2 ) { if ( a3 > 0 ) { *(_DWORD *)(this + 424) += a3; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 10 || (v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2)) != 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v5 = *(_DWORD *)(v4 + 408); v6 = *(_DWORD *)(v4 + 408); if ( v6 == *(_DWORD *)(v4 + 412) ) { LABEL_9: if ( (unsigned int)((*(_DWORD *)(v4 + 412) - v5) >> 4) >= 0x64 ) { v8 = *(_DWORD *)(v4 + 408); v9 = v5 + 16; if ( v5 + 16 != *(_DWORD *)(v4 + 412) ) { v10 = *(_DWORD *)(v4 + 412); do { if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v9 + 8) ) v8 = v9; v9 += 16; } while ( v9 != v10 ); } *(_DWORD *)v8 = v15; *(_DWORD *)(v8 + 4) = v3; *(_DWORD *)(v8 + 8) = dword_14D129E8; *(_DWORD *)(v8 + 12) = a3; } else { v13 = dword_14D129E8; v11 = v15; v12 = v3; v14 = a3; sub_481E70(v4 + 408, (int)&v11); } } else { while ( v15 != *(_DWORD *)v6 ) { v6 += 16; if ( v6 == *(_DWORD *)(v4 + 412) ) goto LABEL_9; } *(_DWORD *)(v6 + 4) = v3; v7 = dword_14D129E8; *(_DWORD *)(v6 + 12) += a3; *(_DWORD *)(v6 + 8) = v7; } } } } } } // 14D129E8: using guessed type int dword_14D129E8; //----- (004822C0) -------------------------------------------------------- void __thiscall sub_4822C0(int this, int a2, int a3, int a4) { int v4; // ebx@1 int i; // esi@4 int v6; // ecx@6 int v7; // edi@7 int v8; // eax@8 v4 = this; if ( a2 ) { if ( a3 > 0 ) { if ( a4 ) { sub_482190(this, a2, a3); for ( i = *(_DWORD *)(v4 + 408); i != *(_DWORD *)(v4 + 412); i += 16 ) { if ( *(_DWORD *)i != -1 ) { v6 = *(_DWORD *)(i + 4); if ( v6 ) { v7 = *(_DWORD *)i; if ( (*(int (**)(void))(*(_DWORD *)v6 + 836))() == *(_DWORD *)i || (v8 = sub_54E4D0(&unk_13253630, v7), (*(_DWORD *)(i + 4) = v8) != 0) ) sub_481180((void *)v4, *(_DWORD *)(i + 4), *(_DWORD *)(i + 12), *(_DWORD *)(i + 8)); else *(_DWORD *)i = -1; } } } } } } } //----- (00482350) -------------------------------------------------------- int __thiscall sub_482350(int this, unsigned int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@1 unsigned int v5; // edx@2 v2 = this; v3 = *(_DWORD *)(this + 4); result = (v3 - *(_DWORD *)v2) / 12; if ( result <= a2 ) { if ( result >= a2 ) return result; sub_481EE0(v2, a2 - result); sub_481AE0(*(_DWORD *)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12; v5 = *(_DWORD *)(v2 + 4) + 12 * (a2 - result); } else { result = 3 * a2; v5 = *(_DWORD *)v2 + 12 * a2; if ( v5 == v3 ) return result; result = v3; } *(_DWORD *)(v2 + 4) = v5; return result; } //----- (00482420) -------------------------------------------------------- int __thiscall sub_482420(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_481EE0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); } } else { v4 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 1; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_481EE0(v2, 1); v6 = *(_DWORD *)v2 + 12 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v2 + 4) += 12; return result; } } *(_DWORD *)(v2 + 4) += 12; return result; } //----- (004824B0) -------------------------------------------------------- unsigned int __thiscall sub_4824B0(void *this, unsigned __int16 a2, int a3) { void *v3; // edi@1 unsigned int result; // eax@3 unsigned int v5; // esi@5 int v6; // ecx@6 int (*v7)(void); // edx@7 unsigned int v8; // [sp+8h] [bp-60h]@4 int v9[20]; // [sp+Ch] [bp-5Ch]@6 int v10; // [sp+5Ch] [bp-Ch]@6 __int16 v11; // [sp+60h] [bp-8h]@6 int v12; // [sp+64h] [bp-4h]@6 v3 = this; if ( sub_5CB350(a2) == 0 ) { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::ed_FindReidInfo : FindRaid fail", a2); return 0; } if ( !sub_5CBAA0((int)&v8, a2, *((_DWORD *)v3 + 3)) ) return 0; result = v8; v5 = 0; if ( v8 ) { while ( 1 ) { v6 = v9[v5]; v10 = 0; v11 = 250; v12 = 0; if ( v6 == 0 ) break; v7 = *(int (**)(void))(*(_DWORD *)v6 + 1240); v10 = v6; LOBYTE(v11) = v7(); sub_482420((int)&dword_D554230, (unsigned int)&v10); result = v8; ++v5; if ( v5 >= v8 ) return result; } sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::ed_FindReidInfo : Null raid member", 0); result = 0; } return result; } // 4824B0: using guessed type int var_5C[20]; //----- (00482580) -------------------------------------------------------- int __thiscall sub_482580(void *this, unsigned __int16 a2, int a3) { unsigned __int16 v3; // dx@1 int result; // eax@2 int v5; // ecx@3 int v6; // ebx@6 int v7; // edi@6 int v8; // eax@9 int v9; // esi@9 int (__thiscall *v10)(_DWORD); // edx@11 int v11; // [sp+0h] [bp-14h]@11 char v12; // [sp+4h] [bp-10h]@11 char v13; // [sp+5h] [bp-Fh]@11 int v14; // [sp+8h] [bp-Ch]@11 int v15; // [sp+Ch] [bp-8h]@3 void *v16; // [sp+10h] [bp-4h]@1 v3 = a2; v16 = this; if ( a2 < 0xFA0u ) { v5 = *(_BYTE *)(208 * a2 + dword_DA230A4); v15 = v5; if ( v5 < 2 || v5 > 5 ) { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::ed_FindPartyInfo : Invalid party member number", v5); result = 0; } else { v6 = *(_DWORD *)a3 * *(_DWORD *)a3; v7 = 0; if ( v5 > 0 ) { while ( 1 ) { v8 = sub_4CB7D0(v3, v7); v9 = v8; if ( v8 ) { if ( sub_402710(v8, *((_DWORD *)v16 + 3)) <= (unsigned int)v6 ) { v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1240); v13 = 0; v14 = 0; v11 = v9; v12 = v10(v9); sub_482420((int)&dword_D554230, (unsigned int)&v11); } } ++v7; if ( v7 >= v15 ) break; v3 = a2; } } result = (dword_D554234 - (signed int)dword_D554230) / 12; } } else { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::ed_FindPartyInfo : Too large party handle", a2); result = 0; } return result; } // D554234: using guessed type int dword_D554234; // DA230A4: using guessed type int dword_DA230A4; //----- (00482680) -------------------------------------------------------- char __thiscall sub_482680(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // ebx@1 int (*v5)(void); // eax@1 int v6; // edi@3 double v7; // st7@3 int v8; // eax@3 int v9; // ebx@3 int v10; // eax@7 int v11; // eax@8 unsigned int v12; // eax@10 int v13; // eax@12 unsigned __int16 v14; // bx@20 int v15; // ecx@20 double v16; // st6@21 int v17; // eax@23 int v19; // [sp+10h] [bp-28h]@7 int v20; // [sp+14h] [bp-24h]@7 int v21; // [sp+18h] [bp-20h]@7 int v22; // [sp+1Ch] [bp-1Ch]@7 int v23; // [sp+20h] [bp-18h]@1 __int64 v24; // [sp+24h] [bp-14h]@3 int v25; // [sp+34h] [bp-4h]@1 unsigned int v26; // [sp+40h] [bp+8h]@3 v3 = this; v23 = (int)"ExperienceDistribute::lid_Call"; sub_4675D0((int)&unk_D020420, (int)"ExperienceDistribute::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ExperienceDistribute::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1) + 4) + 53); v5 = *(int (**)(void))(**((_DWORD **)v3 + 3) + 2972); v25 = 0; if ( v5() ) v4 = (*(int (**)(void))(**((_DWORD **)v3 + 3) + 2972))(); v6 = a2; v7 = (double)*(signed int *)(a2 + 16) / (double)*((signed int *)v3 + 2) * (double)v4; HIDWORD(v24) = HIWORD(v4) | 0xC00; v8 = *(_DWORD *)(a2 + 20); v9 = 0; v24 = (signed __int64)v7; v26 = (signed __int64)v7; if ( v8 == 0 ) { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::lid_Call : Free fail", 0); goto LABEL_24; } if ( !*(_DWORD *)v6 ) { sub_4809A0(v3, v8, (signed __int64)v7); goto LABEL_24; } v10 = *(_WORD *)(*((_DWORD *)v3 + 4) + 57); v20 = 0; v21 = 0; v22 = 0; v19 = v10; sub_482350((int)&dword_D554230, 0); if ( *(_DWORD *)v6 == 1 ) { v11 = *(_WORD *)(v6 + 4); if ( (_WORD)v11 == -1 ) { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::lid_Call : Invalid Party Regnum", v11); goto LABEL_16; } v12 = sub_482580(v3, v11, (int)&v19); } else { if ( *(_DWORD *)v6 != 2 ) goto LABEL_16; v13 = *(_WORD *)(v6 + 4); if ( (_WORD)v13 == -1 ) { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::lid_Call : Invalid Raid Regnum", v13); goto LABEL_16; } v12 = sub_4824B0(v3, v13, (int)&v19); } v9 = v12; LABEL_16: if ( v9 > 0 ) { if ( v9 == 1 ) { sub_4809A0(v3, *(_DWORD *)(v6 + 20), v26); } else { sub_4808A0((int)&v19); v14 = sub_481650((int)&v19); sub_4816F0(v15, v26); if ( v14 < 0x15u ) v16 = dbl_759790[v14]; else v16 = 1.0; v24 = (signed __int64)((v16 - 1.0) * (double)v26); sub_481770((int)&v19, v24); v17 = sub_4816B0(); sub_481770((int)&v19, v17); sub_481800(**(_WORD **)(*((_DWORD *)v3 + 1) + 4), *((_WORD *)v3 + 10)); } } else { sub_639100(&unk_86DDD8, (int)"ExperienceDistribute::lid_Call : friendnumber zero", v9); } LABEL_24: --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"ExperienceDistribute::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 759790: using guessed type double dbl_759790[]; //----- (00482910) -------------------------------------------------------- int __stdcall sub_482910(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2496))(v2, *(_DWORD *)(a1 + 6)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004829D0) -------------------------------------------------------- int __stdcall sub_4829D0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2496))(v2, *(_DWORD *)(a1 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00482AA0) -------------------------------------------------------- int __stdcall sub_482AA0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00482AF0) -------------------------------------------------------- int __stdcall sub_482AF0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00482B40) -------------------------------------------------------- int __cdecl sub_482B40() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00482B80) -------------------------------------------------------- int __stdcall sub_482B80(int a1) { int v1; // eax@1 _BYTE *v2; // eax@1 int v3; // eax@1 void *v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"HolyPromiseCenTransferManager::hpctm_Process"); dword_7508B8[dword_750CB8] = (int)"HolyPromiseCenTransferManager::hpctm_Process"; dword_750AB8[dword_750CB8++] = -1; v1 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v1; v2 = &byte_85A2C0[256 * v1]; *(_DWORD *)v2 = *(_DWORD *)(a1 + 15); *((_DWORD *)v2 + 1) = *(_DWORD *)(a1 + 19); *((_DWORD *)v2 + 2) = *(_DWORD *)(a1 + 23); *((_DWORD *)v2 + 3) = *(_DWORD *)(a1 + 27); *((_DWORD *)v2 + 4) = *(_DWORD *)(a1 + 31); v2[20] = 0; v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 7)); if ( v3 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 2508))(v3, a1); } else { v4 = off_849C18; *(_WORD *)off_849C18 = -27594; *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)a1; *((_WORD *)v4 + 3) = *(_WORD *)(a1 + 4); *((_BYTE *)v4 + 8) = *(_BYTE *)(a1 + 6); *(_DWORD *)((char *)v4 + 9) = *(_DWORD *)(a1 + 7); *(_DWORD *)((char *)v4 + 13) = *(_DWORD *)(a1 + 11); *(_DWORD *)((char *)v4 + 17) = *(_DWORD *)(a1 + 15); *(_DWORD *)((char *)v4 + 21) = *(_DWORD *)(a1 + 19); *(_DWORD *)((char *)v4 + 25) = *(_DWORD *)(a1 + 23); *(_DWORD *)((char *)v4 + 29) = *(_DWORD *)(a1 + 27); *(_DWORD *)((char *)v4 + 33) = *(_DWORD *)(a1 + 31); sub_5A4B40(&off_849C18, 37); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"HolyPromiseCenTransferManager::hpctm_Process"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00482CD0) -------------------------------------------------------- int __stdcall sub_482CD0(int a1) { int v1; // eax@2 _BYTE *v2; // eax@2 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_45AA60(a1 + 2) ) { v1 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v1; v2 = &byte_85A2C0[256 * v1]; *(_DWORD *)v2 = *(_DWORD *)(a1 + 17); *((_DWORD *)v2 + 1) = *(_DWORD *)(a1 + 21); *((_DWORD *)v2 + 2) = *(_DWORD *)(a1 + 25); *((_DWORD *)v2 + 3) = *(_DWORD *)(a1 + 29); *((_DWORD *)v2 + 4) = *(_DWORD *)(a1 + 33); v2[20] = 0; sub_482B80(a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00482DC0) -------------------------------------------------------- int __thiscall sub_482DC0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // eax@1 _BYTE *v5; // eax@1 void *v6; // eax@1 int v7; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom"; dword_750AB8[dword_750CB8++] = -1; v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)a3; *((_DWORD *)v5 + 1) = *(_DWORD *)(a3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(a3 + 12); *((_DWORD *)v5 + 4) = *(_DWORD *)(a3 + 16); v5[20] = 0; (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); (*(void (__thiscall **)(void *, int, signed int))(*(_DWORD *)v3 + 1940))(v3, a2, 1); v6 = off_849C18; *(_WORD *)off_849C18 = -27621; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)a3; *(_DWORD *)((char *)v6 + 6) = *(_DWORD *)(a3 + 4); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)(a3 + 8); *(_DWORD *)((char *)v6 + 14) = *(_DWORD *)(a3 + 12); *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)(a3 + 16); *(_DWORD *)((char *)v6 + 22) = a2; *(_DWORD *)((char *)v6 + 26) = 0; if ( sub_4C81E0(&off_849C18, 30) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom : Packet Too Long", 30); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00482F40) -------------------------------------------------------- int __thiscall sub_482F40(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -27586; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); if ( sub_4C81E0(&off_849C18, 8) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ : Packet Too Long", 8); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00483040) -------------------------------------------------------- int __stdcall sub_483040(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_HOLY_PROMISE_DB_GET_CEN_REWARD_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_HOLY_PROMISE_DB_GET_CEN_REWARD_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2512))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_HOLY_PROMISE_DB_GET_CEN_REWARD_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00483100) -------------------------------------------------------- int __thiscall sub_483100(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = -27587; *((_WORD *)v3 + 1) = *(_WORD *)(a2 + 6); *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 12); if ( sub_4C81E0(&off_849C18, 12) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward : Packet Too Long", 12); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00483200) -------------------------------------------------------- int __thiscall sub_483200(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // esi@1 int v6; // eax@4 void *v7; // esi@5 int v8; // eax@7 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 476615745; *((_DWORD *)v5 + 1) = 0; *((_DWORD *)v5 + 2) = 0; if ( (unsigned __int8)(*(int (**)(void))(*((_DWORD *)v4 + 14672) + 16))() ) { *((_WORD *)v5 + 1) = 7276; if ( sub_4C81E0(&off_849C18, 12) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ : Packet Too Long", 12); } } else { v7 = off_849C18; *(_WORD *)off_849C18 = -27582; *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v7 + 1) = *((_WORD *)v4 + 2); if ( sub_4C81E0(&off_849C18, 8) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ : Packet Too Long", 8); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00483370) -------------------------------------------------------- int __stdcall sub_483370(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_HOLY_PROMISE_DB_WITHDRAW_CEN_REWARD_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_HOLY_PROMISE_DB_WITHDRAW_CEN_REWARD_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2516))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_HOLY_PROMISE_DB_WITHDRAW_CEN_REWARD_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00483430) -------------------------------------------------------- int __thiscall sub_483430(void *this, int a2) { void *v2; // esi@1 __int64 v3; // qax@2 void *v4; // eax@3 int v5; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a2 + 6) == 7272 ) { LODWORD(v3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1088))( v2, *(_DWORD *)(a2 + 8) + v3, (unsigned __int64)(*(_QWORD *)(a2 + 8) + v3) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1096))(v2); } v4 = off_849C18; *(_WORD *)off_849C18 = -27583; *((_WORD *)v4 + 1) = *(_WORD *)(a2 + 6); *((_DWORD *)v4 + 1) = *(_DWORD *)(a2 + 8); *((_DWORD *)v4 + 2) = *(_DWORD *)(a2 + 12); if ( sub_4C81E0(&off_849C18, 12) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward : Packet Too Long", 12); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00483570) -------------------------------------------------------- int __thiscall sub_483570(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 _BYTE *v4; // eax@1 int v5; // edx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)(a2 + 15); *((_DWORD *)v4 + 1) = *(_DWORD *)(a2 + 19); *((_DWORD *)v4 + 2) = *(_DWORD *)(a2 + 23); *((_DWORD *)v4 + 3) = *(_DWORD *)(a2 + 27); v5 = *(_DWORD *)(a2 + 31); v4[20] = 0; *((_DWORD *)v4 + 4) = v5; if ( !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v2 + 14672) + 16))((char *)v2 + 58688) ) sub_482DC0(v2, *(_DWORD *)(a2 + 11), a2 + 15); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00483670) -------------------------------------------------------- bool __thiscall sub_483670(int this, int a2) { return *(_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); } //----- (004836B0) -------------------------------------------------------- int __thiscall sub_4836B0(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; } //----- (004836E0) -------------------------------------------------------- int __thiscall sub_4836E0(int this, int a2) { int v2; // edi@1 int result; // eax@1 int v4; // edx@1 int v5; // esi@2 v2 = *(_DWORD *)(this + 331900); result = 0; v4 = 0; if ( v2 > 0 ) { v5 = *(_DWORD *)(this + 331896); do { result = *(_DWORD *)v5; if ( *(_DWORD *)v5 && *(_DWORD *)result == *(_DWORD *)a2 && *(_DWORD *)(result + 4) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(result + 8) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(result + 12) == *(_DWORD *)(a2 + 12) && *(_DWORD *)(result + 16) == *(_DWORD *)(a2 + 16) ) break; ++v4; v5 += 4; } while ( v4 < v2 ); } return result; } //----- (00483740) -------------------------------------------------------- int __thiscall sub_483740(int this, int a2) { int v2; // ebx@1 int result; // eax@1 int v4; // edi@1 int v5; // esi@2 char v6[4]; // [sp+8h] [bp-10h]@3 int v7; // [sp+Ch] [bp-Ch]@3 int v8; // [sp+10h] [bp-8h]@3 unsigned int v9; // [sp+14h] [bp-4h]@1 int v10; // [sp+18h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v2 = this; result = 0; v4 = 0; if ( *(_DWORD *)(this + 331900) > 0 ) { while ( 1 ) { v5 = *(_DWORD *)(*(_DWORD *)(v2 + 331896) + 4 * v4); if ( v5 != result ) { v8 = result; v7 = result; *(_DWORD *)v6 = result; strncpy(v6, (const char *)(v5 + 22), 0xCu); if ( *(_DWORD *)v6 == *(_DWORD *)a2 && v7 == *(_DWORD *)(a2 + 4) && v8 == *(_DWORD *)(a2 + 8) ) return v5; result = 0; } ++v4; if ( v4 >= *(_DWORD *)(v2 + 331900) ) return v5; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004837D0) -------------------------------------------------------- int __thiscall sub_4837D0(int this, int a2, int a3) { int v3; // edi@1 int v4; // edx@1 int v5; // esi@2 int result; // eax@3 v3 = *(_DWORD *)(this + 331900); v4 = 0; if ( v3 <= 0 ) { LABEL_11: result = 0; } else { v5 = *(_DWORD *)(this + 331896); while ( 1 ) { result = *(_DWORD *)v5; if ( *(_DWORD *)v5 ) { if ( *(_DWORD *)result == *(_DWORD *)a2 && *(_DWORD *)(result + 4) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(result + 8) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(result + 12) == *(_DWORD *)(a2 + 12) && *(_DWORD *)(result + 16) == *(_DWORD *)(a2 + 16) && *(_BYTE *)(result + 67) == a3 ) break; } ++v4; v5 += 4; if ( v4 >= v3 ) goto LABEL_11; } } return result; } //----- (00483840) -------------------------------------------------------- int __thiscall sub_483840(int this, int a2, int a3) { int v3; // ebx@1 int v4; // eax@1 int v5; // edi@1 int v6; // esi@2 char v8[4]; // [sp+Ch] [bp-10h]@3 int v9; // [sp+10h] [bp-Ch]@3 int v10; // [sp+14h] [bp-8h]@3 unsigned int v11; // [sp+18h] [bp-4h]@1 int v12; // [sp+1Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = this; v4 = 0; v5 = 0; if ( *(_DWORD *)(this + 331900) <= 0 ) return 0; while ( 1 ) { v6 = *(_DWORD *)(*(_DWORD *)(v3 + 331896) + 4 * v5); if ( v6 != v4 ) break; LABEL_8: ++v5; if ( v5 >= *(_DWORD *)(v3 + 331900) ) return 0; } v10 = v4; v9 = v4; *(_DWORD *)v8 = v4; strncpy(v8, (const char *)(v6 + 22), 0xCu); if ( *(_DWORD *)v8 != *(_DWORD *)a2 || v9 != *(_DWORD *)(a2 + 4) || v10 != *(_DWORD *)(a2 + 8) || *(_BYTE *)(v6 + 67) != a3 ) { v4 = 0; goto LABEL_8; } return v6; } // 86FEB8: using guessed type int __security_cookie; //----- (004838F0) -------------------------------------------------------- void *__stdcall sub_4838F0(int a1, int a2) { void *result; // eax@1 void *v3; // edi@1 int v4; // edx@3 int v5; // ST14_4@3 int v6; // ST08_4@3 int v7; // eax@3 void *v8; // eax@3 void *v9; // eax@3 void *v10; // eax@3 int v11; // [sp+8h] [bp-D4h]@3 int v12; // [sp+70h] [bp-6Ch]@3 int v13; // [sp+74h] [bp-68h]@3 unsigned int v14; // [sp+D8h] [bp-4h]@1 int v15; // [sp+DCh] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; result = (void *)sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 7)); v3 = result; if ( result ) { result = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)result + 1232))(result); if ( (_BYTE)result == 2 ) { v4 = *(_DWORD *)(a1 + 3); v12 = *(_BYTE *)(a1 + 2); v13 = v4; v5 = sub_48C200(&unk_150A0980, "No"); v6 = sub_48C200(&unk_150A0980, off_6B5A90); v7 = sub_48C200(&unk_15090128, "ID_DeleteNow"); v8 = sub_54CA20(v3, (const char *)v7); v9 = sub_54CB10(v8, (int)sub_50DB60, (const char *)v6, &v12); v10 = sub_54CB10(v9, (int)sub_50D4B0, (const char *)v5, &v11); result = sub_54CC20(v10, 0, -1, 0, 1000); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004839E0) -------------------------------------------------------- char __thiscall sub_4839E0(int this, int a2, int a3, int a4) { int v4; // esi@1 char result; // al@2 v4 = this; if ( (1 << (*(int (**)(void))(*(_DWORD *)a3 + 1232))()) & *(_DWORD *)(this + 4) ) { *(_BYTE *)(v4 + 8) = 1; result = 0; } else { result = 1; } return result; } //----- (00483A20) -------------------------------------------------------- int __thiscall sub_483A20(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // edx@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; } //----- (00483A90) -------------------------------------------------------- void __thiscall sub_483A90(int this) { int v1; // esi@1 v1 = this; nullsub_2((void *)(this + 64)); nullsub_2((void *)(v1 + 56)); nullsub_2((void *)(v1 + 44)); nullsub_2((void *)(v1 + 32)); nullsub_2((void *)(v1 + 20)); nullsub_2((void *)(v1 + 12)); } //----- (00483B20) -------------------------------------------------------- void *__thiscall sub_483B20(void *this) { void *v1; // esi@1 v1 = this; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)this + 12); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 20); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 32); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 44); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 56); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 64); return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); //----- (00483BB0) -------------------------------------------------------- char __thiscall sub_483BB0(void *this, const char *a2, int a3) { void *v3; // esi@1 signed int v4; // eax@1 char *v5; // ecx@1 __int16 v7; // di@6 char *v8; // eax@8 char *v9; // eax@9 char v10; // al@12 int v11; // ecx@13 v3 = this; v4 = 0; v5 = (char *)this + 163944; while ( *(_DWORD *)v5 ) { ++v4; v5 += 4; if ( v4 >= 10 ) return 0; } if ( *((_WORD *)v3 + 6) == -1 ) { v7 = (signed __int16)a2; } else { v7 = *((_WORD *)v3 + 6); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v3 + 8))(v3, *((_WORD *)v3 + 6)); } v8 = (char *)operator new(0xA014u); if ( v8 ) v9 = sub_49E650(v8, a2); else v9 = 0; if ( (unsigned __int16)v7 < (signed int)*((_WORD *)v3 + 2) ) { v11 = *((_DWORD *)v3 + 2) + 12 * (unsigned __int16)v7; if ( *(_DWORD *)v11 ) { v10 = 0; } else { *(_DWORD *)v11 = v9; v10 = 1; } } else { v10 = 0; } if ( !v10 ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::AddInstanceDungeonCluster : Cannot Add", a3); loc_6391B0("MapClusterManager::ClusterManager::AddInstanceDungeonCluster"); } return 1; } //----- (00483CC0) -------------------------------------------------------- int __thiscall sub_483CC0(void *this, int a2, int a3, int a4) { int v4; // esi@1 unsigned int v5; // ecx@1 int v6; // edx@2 int result; // eax@7 int v8; // ecx@8 int v9; // eax@9 int v10; // ebx@11 int v11; // edi@11 unsigned int v12; // edx@11 int v13; // ebx@12 int v14; // edi@12 unsigned int v15; // edx@12 int v16; // edi@12 unsigned __int64 v17; // qax@12 int v18; // ecx@12 int v19; // esi@13 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::mc_FindEmptyByRegnum"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::mc_FindEmptyByRegnum"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; if ( *(_WORD *)(v4 + 40972) <= 0u ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_FindEmptyByRegnum"); result = 0; } else { v6 = *(_DWORD *)(v4 + 40972); while ( 1 ) { ++*(_DWORD *)(v4 + 40976); if ( *(_DWORD *)(v4 + 40976) >= v6 ) *(_DWORD *)(v4 + 40976) = 0; if ( *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 16) == -1 ) break; ++v5; if ( v5 >= (unsigned __int16)v6 ) goto LABEL_7; } *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 20) = 0; sub_494EA0(*(void **)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 12), 950); *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 16) = a2; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 84) = a3; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 88) = a4; *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 52) = 0; v8 = sub_483740((int)&unk_CFCF380, v4); if ( v8 ) { *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 64) = 0; v9 = *(_DWORD *)(v4 + 40976); if ( *(_BYTE *)(v8 + 106) ) { *(_BYTE *)(v4 + 80 * v9 + 40) = 1; *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 64) = 1; v10 = dword_14D129E8; v11 = v4 + 80 * *(_DWORD *)(v4 + 40976) + 44; v12 = (unsigned int)(600000 * (unsigned int)*(_BYTE *)(v8 + 106) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 48) = v12; *(_DWORD *)v11 = v10 + v12; if ( *(_BYTE *)(v8 + 106) > 5u ) { v13 = dword_14D129E8; v14 = v4 + 80 * *(_DWORD *)(v4 + 40976) + 68; v15 = (unsigned int)(600000 * ((unsigned int)*(_BYTE *)(v8 + 106) - 5) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 72) = v15; *(_DWORD *)v14 = v13 + v15; v16 = dword_14D129E8; v17 = 600000 * ((unsigned int)*(_BYTE *)(v8 + 106) - 1) * (unsigned __int64)(unsigned int)&unk_10624DD3; v18 = v4 + 80 * *(_DWORD *)(v4 + 40976) + 76; HIDWORD(v17) >>= 6; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 80) = HIDWORD(v17); *(_DWORD *)v18 = v16 + HIDWORD(v17); } } else { *(_BYTE *)(v4 + 80 * v9 + 40) = 0; } } v19 = *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40976) + 12); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_FindEmptyByRegnum"); result = v19; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00483F50) -------------------------------------------------------- int __thiscall sub_483F50(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // edx@1 int v6; // eax@4 int result; // eax@7 int v8; // esi@8 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::mc_FindExistByRegnum"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::mc_FindExistByRegnum"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; if ( *((_WORD *)v4 + 20486) <= 0u ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_FindExistByRegnum"); result = 0; } else { while ( 1 ) { if ( *((_DWORD *)v4 + 10244) >= *((_DWORD *)v4 + 10243) ) *((_DWORD *)v4 + 10244) = 0; v6 = *((_DWORD *)v4 + 10244); if ( *((_DWORD *)v4 + 20 * v6 + 4) == a2 ) { if ( *((_DWORD *)v4 + 20 * v6 + 21) == a3 ) break; } *((_DWORD *)v4 + 10244) = v6 + 1; ++v5; if ( v5 >= *((_WORD *)v4 + 20486) ) goto LABEL_7; } *(_DWORD *)a4 = *((_DWORD *)v4 + 20 * v6 + 22); v8 = *((_DWORD *)v4 + 20 * *((_DWORD *)v4 + 10244) + 3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_FindExistByRegnum"); result = v8; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00484090) -------------------------------------------------------- char __thiscall sub_484090(void *this, int a2, int a3, int a4, int a5) { void *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; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::mc_ChangeCategory"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::mc_ChangeCategory"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_DWORD *)v5 + 10243); v7 = 0; if ( v6 <= 0 ) { LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_ChangeCategory"); result = 0; } else { v8 = (int)((char *)v5 + 84); while ( *(_DWORD *)(v8 - 68) != a2 || *(_DWORD *)v8 != a3 ) { ++v7; v8 += 80; if ( v7 >= v6 ) goto LABEL_6; } v10 = 10 * v7; *((_DWORD *)v5 + 2 * v10 + 4) = a4; *((_DWORD *)v5 + 2 * v10 + 21) = a5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_ChangeCategory"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00484190) -------------------------------------------------------- char __thiscall sub_484190(void *this, int a2, int a3, int a4) { unsigned int v4; // ST04_4@1 void *v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // eax@2 int v8; // ecx@2 int v9; // eax@2 int v10; // ecx@2 int v11; // eax@2 int v12; // esi@2 unsigned __int8 v13; // al@2 int v14; // eax@5 char v16; // [sp+10h] [bp-74h]@5 int v17; // [sp+24h] [bp-60h]@2 int v18; // [sp+28h] [bp-5Ch]@2 int v19; // [sp+2Ch] [bp-58h]@2 char v20; // [sp+30h] [bp-54h]@2 int v21; // [sp+45h] [bp-3Fh]@2 int v22; // [sp+49h] [bp-3Bh]@2 int v23; // [sp+4Dh] [bp-37h]@2 char v24; // [sp+51h] [bp-33h]@2 int v25; // [sp+66h] [bp-1Eh]@3 int v26; // [sp+6Ah] [bp-1Ah]@3 __int16 v27; // [sp+6Eh] [bp-16h]@5 unsigned int v28; // [sp+74h] [bp-10h]@1 int v29; // [sp+80h] [bp-4h]@1 int v30; // [sp+84h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v4 = (unsigned int)&v30 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"KickPlayer::ali_Work"); dword_7508B8[dword_750CB8] = (int)"KickPlayer::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1232); v29 = 0; if ( (unsigned __int8)v6(a3, v4) == 2 ) { v7 = sub_452B10(*((_DWORD *)v5 + 1)); v17 = *(_DWORD *)v7; v8 = *((_DWORD *)v5 + 1); v18 = *(_DWORD *)(v7 + 4); v19 = *(_DWORD *)(v7 + 8); v20 = 0; v9 = sub_452B10(v8); v21 = *(_DWORD *)v9; v10 = *((_DWORD *)v5 + 1); v22 = *(_DWORD *)(v9 + 4); v23 = *(_DWORD *)(v9 + 8); v24 = 0; v11 = sub_4B81F0(v10); v12 = v11; v13 = sub_427920(&unk_14D42DC0, *(_BYTE *)(v11 + 154)); if ( v13 >= 4u ) { v25 = *(_DWORD *)(v12 + 122); v26 = *(_DWORD *)(v12 + 126); } else { v25 = *(_DWORD *)(v12 + 8 * v13 + 122); v26 = *(_DWORD *)(v12 + 8 * v13 + 126); } v14 = *(_DWORD *)a3; v27 = 0; (*(void (__thiscall **)(int, char *, _DWORD))(v14 + 1020))(a3, &v16, 0); } --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"KickPlayer::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004842E0) -------------------------------------------------------- int __thiscall sub_4842E0(void *this) { void *v1; // esi@1 void *v2; // ecx@1 int (__stdcall **v4)(int, int, int); // [sp+8h] [bp-18h]@1 void *v5; // [sp+Ch] [bp-14h]@1 int v6; // [sp+10h] [bp-10h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v1 = this; v6 = (int)"FieldMap::fm_KickAll"; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_KickAll"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_KickAll"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; sub_427BE0(&v4); v4 = &off_6B5A9C; v5 = v1; v2 = (void *)*((_DWORD *)v1 + 12); LOBYTE(v7) = 1; sub_549B60(v2, (int)&v4, 1); LOBYTE(v7) = 0; v4 = &off_6B5A9C; sub_427EB0(&v4); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_KickAll"); } // 6B5A9C: using guessed type int (__stdcall *off_6B5A9C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004843B0) -------------------------------------------------------- char __thiscall sub_4843B0(void *this, int a2) { void *v2; // esi@1 void *v3; // ecx@1 char v4; // bl@1 int (__stdcall **v6)(int, int, int); // [sp+Ch] [bp-1Ch]@1 int v7; // [sp+10h] [bp-18h]@1 char v8; // [sp+14h] [bp-14h]@1 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v2 = this; v9 = (int)"FieldMap::fm_Exist"; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_Exist"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_Exist"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; sub_427BE0(&v6); v6 = &off_6B5AA4; v7 = a2; v8 = 0; v3 = (void *)*((_DWORD *)v2 + 12); LOBYTE(v10) = 1; sub_549B60(v3, (int)&v6, 1); v4 = v8; LOBYTE(v10) = 0; v6 = &off_6B5AA4; sub_427EB0(&v6); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"FieldMap::fm_Exist"); return v4; } // 6B5AA4: using guessed type int (__stdcall *off_6B5AA4)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00484490) -------------------------------------------------------- int __stdcall sub_484490(int a1) { void *v1; // eax@2 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_45AA60(a1 + 2) ) { sub_5A6790(0, a1); v1 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v1 + 2) = *(_DWORD *)(a1 + 2); *(_DWORD *)((char *)v1 + 6) = *(_DWORD *)(a1 + 6); *((_WORD *)v1 + 5) = *(_WORD *)(a1 + 10); *((_BYTE *)v1 + 12) = *(_BYTE *)(a1 + 12); sub_5A4B40(&off_849C18, 13); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00484580) -------------------------------------------------------- char __thiscall sub_484580(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // eax@1 int v7; // ecx@1 unsigned __int16 v8; // ax@1 unsigned __int16 i; // di@1 int v10; // ecx@3 int v11; // eax@3 bool v12; // zf@3 int v13; // eax@3 void *v14; // eax@4 v5 = this; v6 = *(_WORD *)(this + 14); v7 = *(_DWORD *)(this + 8); v8 = *(_WORD *)(v7 + 12 * v6 + 4); for ( i = *(_WORD *)(v7 + 12 * v8 + 4); ; i = *(_WORD *)(*(_DWORD *)(v5 + 8) + 12 * i + 4) ) { if ( v8 < *(_WORD *)(v5 + 4) ) { v10 = *(_DWORD *)(v5 + 8); v11 = 3 * v8; v12 = *(_BYTE *)(v10 + 4 * v11 + 8) == 0; v13 = v10 + 4 * v11; if ( !v12 ) { v14 = *(void **)v13; if ( v14 ) sub_484090(v14, a2, a3, a4, a5); } } if ( i >= *(_WORD *)(v5 + 4) ) break; v8 = i; } return 1; } //----- (00484600) -------------------------------------------------------- int __thiscall sub_484600(void *this) { void *v1; // esi@1 int v2; // esi@6 int v3; // ST04_4@10 int v4; // eax@10 int v5; // edi@10 void *v6; // eax@12 int v7; // eax@14 unsigned int v8; // edx@16 int v10; // [sp+10h] [bp-68h]@6 int v11; // [sp+14h] [bp-64h]@12 char v12; // [sp+18h] [bp-60h]@15 char v13; // [sp+1Ch] [bp-5Ch]@16 char v14; // [sp+24h] [bp-54h]@16 char v15; // [sp+30h] [bp-48h]@7 char v16; // [sp+38h] [bp-40h]@15 char v17; // [sp+3Ch] [bp-3Ch]@7 char v18; // [sp+44h] [bp-34h]@15 char v19; // [sp+48h] [bp-30h]@7 char v20; // [sp+50h] [bp-28h]@7 char v21; // [sp+58h] [bp-20h]@12 int v22; // [sp+5Ch] [bp-1Ch]@10 int v23; // [sp+60h] [bp-18h]@1 void *v24; // [sp+64h] [bp-14h]@1 unsigned int v25; // [sp+68h] [bp-10h]@1 int v26; // [sp+74h] [bp-4h]@1 v1 = this; v24 = this; v23 = (int)"MapClusterManager::MapCluster::mc_AllDropFilm"; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_AllDropFilm"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::MapCluster::mc_AllDropFilm"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; v25 = 0; if ( *((_WORD *)v1 + 20486) > 0u ) { while ( 1 ) { ++*((_DWORD *)v1 + 10244); if ( *((_DWORD *)v1 + 10244) >= *((_DWORD *)v1 + 10243) ) *((_DWORD *)v1 + 10244) = 0; memcpy(&v10, (char *)v1 + 80 * *((_DWORD *)v1 + 10244) + 12, 0x50u); LOBYTE(v26) = 1; v2 = v10; if ( v10 ) { if ( sub_43F090(v10) ) { v3 = v22; v4 = sub_4B81F0(v2); v5 = sub_483840((int)&unk_CFCF380, v4, v3); if ( v5 ) { sub_4842E0((void *)v2); sub_418FD0(v2, (const char *)(v5 + 35)); sub_494EA0((void *)v2, 946); v6 = off_849C18; *(_WORD *)off_849C18 = -23549; *((_BYTE *)v6 + 2) = v21; *(_DWORD *)((char *)v6 + 3) = v11; if ( sub_4C81E0(&off_849C18, 7) ) { v7 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v7); } else { sub_639100( &unk_86DDD8, (int)"MapClusterManager::MapCluster::mc_DeleteInstanceDungeon : Packet Too Long", 7); } v12 = 0; v16 = 0; v18 = 0; v11 = -1; LOBYTE(v26) = 21; nullsub_2(&v20); LOBYTE(v26) = 20; nullsub_2(&v19); LOBYTE(v26) = 19; nullsub_2(&v17); LOBYTE(v26) = 18; nullsub_2(&v15); LOBYTE(v26) = 17; } else { LOBYTE(v26) = 16; nullsub_2(&v20); LOBYTE(v26) = 15; nullsub_2(&v19); LOBYTE(v26) = 14; nullsub_2(&v17); LOBYTE(v26) = 13; nullsub_2(&v15); LOBYTE(v26) = 12; } } else { LOBYTE(v26) = 11; nullsub_2(&v20); LOBYTE(v26) = 10; nullsub_2(&v19); LOBYTE(v26) = 9; nullsub_2(&v17); LOBYTE(v26) = 8; nullsub_2(&v15); LOBYTE(v26) = 7; } } else { LOBYTE(v26) = 6; nullsub_2(&v20); LOBYTE(v26) = 5; nullsub_2(&v19); LOBYTE(v26) = 4; nullsub_2(&v17); LOBYTE(v26) = 3; nullsub_2(&v15); LOBYTE(v26) = 2; } nullsub_2(&v14); LOBYTE(v26) = 0; nullsub_2(&v13); v8 = *((_WORD *)v24 + 20486); ++v25; if ( v25 >= v8 ) break; v1 = v24; } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_AllDropFilm"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (004848B0) -------------------------------------------------------- int __stdcall sub_4848B0(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 void *v4; // eax@4 void *v5; // ebx@4 int v6; // esi@8 void *v7; // esi@16 int v8; // edi@19 int v9; // eax@20 int v10; // eax@25 int v11; // edi@25 unsigned __int8 v12; // al@27 int v13; // esi@28 int v14; // eax@28 int v15; // esi@29 int v16; // eax@31 int v18; // [sp-8h] [bp-28h]@5 int v19; // [sp-8h] [bp-28h]@9 int v20; // [sp-4h] [bp-24h]@2 int v21; // [sp-4h] [bp-24h]@5 int v22; // [sp-4h] [bp-24h]@9 int v23; // [sp+28h] [bp+8h]@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v3 && (v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3004))(v3)) != 0 ) { v4 = sub_418BA0(dword_D9FBF28, *(_WORD *)(v2 + 6)); v5 = v4; if ( !v4 ) { v21 = 0; v18 = (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK Invalid NPC Handle1"; LABEL_33: sub_639100(&unk_86DDD8, v18, v21); v20 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"; goto LABEL_34; } if ( !*(_DWORD *)v4 || !*((_DWORD *)v4 + 1) ) { v21 = 0; v18 = (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK NPC Function NULL"; goto LABEL_33; } v6 = sub_54DE90(&unk_13253630, *(_WORD *)(v2 + 6)); if ( !v6 ) { v22 = 0; v19 = (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK Invalid NPC Handle2"; LABEL_10: sub_639100(&unk_86DDD8, v19, v22); LABEL_11: v20 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"; goto LABEL_34; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 4 ) { v22 = 0; v19 = (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK Invalid NPC Handle3"; goto LABEL_10; } if ( (unsigned int)sub_402710(v23, v6) > 0xF4240 ) { v22 = *(_DWORD *)(v2 + 2); v19 = (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK NPC Click Range Over"; goto LABEL_10; } v7 = off_849C18; *(_WORD *)off_849C18 = -23540; *((_WORD *)v7 + 1) = *(_WORD *)(v2 + 6); *((_BYTE *)v7 + 16) = 0; if ( *(_WORD *)(v2 + 8) ) { if ( *(_WORD *)(v2 + 8) == 2 ) { v8 = 0; do { v9 = sub_4837D0((int)&unk_CFCF380, *(_DWORD *)v5 + 84, v8); if ( v9 ) *(_DWORD *)((char *)v7 + 4 * (*((_BYTE *)v7 + 16))++ + 17) = *(_BYTE *)(v9 + 67); ++v8; } while ( v8 < 3 ); if ( v9 ) sub_418A60((char *)v7 + 4, (const char *)(v9 + 22)); } else { sub_639100( &unk_86DDD8, (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK Invalid Error Type", *(_WORD *)(v2 + 8)); } } else { v10 = sub_4837D0((int)&unk_CFCF380, *(_DWORD *)v5 + 84, *(_DWORD *)(v2 + 10)); v11 = v10; if ( !v10 ) goto LABEL_11; sub_418A60((char *)v7 + 4, (const char *)(v10 + 22)); *((_BYTE *)v7 + 16) = 1; *(_DWORD *)((char *)v7 + 17) = *(_BYTE *)(v11 + 67); } v12 = *((_BYTE *)v7 + 16); if ( !v12 ) { v13 = *(_DWORD *)v23; v14 = sub_48C200(&unk_150A0980, "RecallDisableField"); (*(void (__thiscall **)(int, int))(v13 + 1924))(v23, v14); v22 = 0; v19 = (int)"wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK Indun Level Data Null"; goto LABEL_10; } v15 = 4 * v12 + 17; if ( sub_4C81E0(&off_849C18, 4 * v12 + 17) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 764))(v23); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v23, &off_849C18); sub_55EFA0(v23, 0); v20 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"; } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK : Packet Too Long", v15); sub_55EFA0(v23, 0); v20 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"; } } else { v20 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ACK"; } LABEL_34: --dword_750CB8; return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00484B80) -------------------------------------------------------- int __thiscall sub_484B80(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@3 void *v6; // eax@7 void *v7; // ebx@7 int v8; // eax@11 int v9; // ST0C_4@19 int v10; // ebx@19 int v11; // eax@20 signed int v12; // eax@21 int v13; // eax@21 void *v14; // edi@24 int v15; // eax@24 int v16; // edx@24 int v17; // eax@26 int v19; // [sp-Ch] [bp-60h]@8 int v20; // [sp-8h] [bp-5Ch]@8 int v21; // [sp+10h] [bp-44h]@21 int v22; // [sp+14h] [bp-40h]@21 __int16 v23; // [sp+18h] [bp-3Ch]@21 __int16 v24; // [sp+1Ah] [bp-3Ah]@21 int v25; // [sp+1Ch] [bp-38h]@1 int v26; // [sp+20h] [bp-34h]@11 char v27; // [sp+24h] [bp-30h]@20 unsigned int v28; // [sp+44h] [bp-10h]@1 int v29; // [sp+50h] [bp-4h]@1 int v30; // [sp+54h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v4 = (int)this; v25 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; if ( sub_55EF90(v4) == 1 || sub_4C1A00(v4) || (v5 = (int)sub_48C260((void *)v4), !sub_50D480(v5)) ) goto LABEL_30; if ( !(dword_D554E0C & 1) ) { dword_D554E0C |= 1u; word_D554E08 = 70; atexit(nullsub_54); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_D554E08) ) goto LABEL_30; v6 = sub_418BA0(dword_D9FBF28, *(_WORD *)(a2 + 2)); v7 = v6; if ( !v6 ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK Invalid NPC Handle1"; LABEL_29: sub_639100(&unk_86DDD8, v19, v20); goto LABEL_30; } if ( !*(_DWORD *)v6 || !*((_DWORD *)v6 + 1) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK NPC Func NULL"; goto LABEL_29; } v8 = sub_54DE90(&unk_13253630, *(_WORD *)(v25 + 2)); v26 = v8; if ( !v8 ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK Invalid NPC Handle2"; goto LABEL_29; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1232))(v8) != 4 ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK Invalid NPC Handle3"; goto LABEL_29; } if ( (unsigned int)sub_402710(v4, v26) > 0xF4240 ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK NPC Click Range Over"; goto LABEL_29; } if ( *(_DWORD *)(v25 + 4) >= 3 ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK Invalid Level Type"; goto LABEL_29; } v9 = *(_DWORD *)(v25 + 4); v26 = *(_DWORD *)v7 + 84; v10 = sub_4837D0((int)&unk_CFCF380, v26, v9); if ( !v10 ) { v11 = sub_649DA0(v26, (int)&v27); sub_6390B0( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK Indun Info NULL", v11); LABEL_30: v29 = -1; goto LABEL_31; } v21 = -1; v22 = -1; v12 = sub_461AF0((void *)v4, v10, (int)&v21, (int)&v22); v23 = 1; v26 = v12; v24 = (unsigned __int8)sub_418F80(&unk_DA120E0)[20]; v13 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v10 + 22), *(_BYTE *)(v10 + 67)); if ( v13 ) { v23 = *(_WORD *)(v13 + 34); v24 = *(_WORD *)(v13 + 36); } if ( !sub_461D00(-1, v4, v26, (int)&v23) ) goto LABEL_30; v14 = off_849C18; *(_WORD *)off_849C18 = -23538; *((_BYTE *)v14 + 2) = sub_5A7540(byte_14D16AE8)[16]; *((_BYTE *)v14 + 3) = *(_BYTE *)(v10 + 21); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v16 = v25; *((_DWORD *)v14 + 1) = v15; *((_DWORD *)v14 + 2) = v21; *((_DWORD *)v14 + 3) = v22; *((_WORD *)v14 + 8) = *(_WORD *)(v16 + 2); sub_4836B0((int)((char *)v14 + 18), v10); *(_DWORD *)((char *)v14 + 38) = *(_DWORD *)(v25 + 4); if ( sub_4C81E0(&off_849C18, 42) ) { v17 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v17); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK : Packet Too Long", 42); } sub_55EFA0(v4, 1); v29 = -1; LABEL_31: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_LEVEL_SELECT_MENU_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D020440: using guessed type int dword_D020440; // D554E08: using guessed type __int16 word_D554E08; // D554E0C: using guessed type int dword_D554E0C; // 14D12A00: using guessed type int dword_14D12A00; //----- (00484F00) -------------------------------------------------------- int __stdcall sub_484F00(int a1, int a2) { int v2; // eax@1 int v3; // esi@3 void *v4; // eax@5 void *v5; // edi@5 int v6; // eax@9 int v7; // edi@16 int v8; // eax@17 int v9; // edi@18 void *v10; // eax@19 int v11; // eax@19 int v12; // esi@19 int v13; // edx@22 int v14; // ecx@22 int v15; // eax@22 int v16; // eax@22 unsigned __int8 v17; // cl@23 int v18; // esi@24 __int16 v19; // ax@24 int v20; // edi@27 int v21; // eax@27 int v22; // edi@28 int v23; // eax@28 int v24; // eax@30 void *v25; // ecx@31 int v26; // eax@33 int v28; // [sp-1Ch] [bp-CCh]@19 int v29; // [sp-18h] [bp-C8h]@19 int v30; // [sp-14h] [bp-C4h]@19 int v31; // [sp-10h] [bp-C0h]@19 int v32; // [sp-Ch] [bp-BCh]@6 int v33; // [sp-8h] [bp-B8h]@1 unsigned int v34; // [sp-4h] [bp-B4h]@1 int *v35; // [sp+Ch] [bp-A4h]@19 int v36; // [sp+10h] [bp-A0h]@1 int v37; // [sp+14h] [bp-9Ch]@3 int v38; // [sp+18h] [bp-98h]@9 char v39; // [sp+1Ch] [bp-94h]@22 int v40; // [sp+30h] [bp-80h]@22 int v41; // [sp+34h] [bp-7Ch]@22 int v42; // [sp+38h] [bp-78h]@22 int v43; // [sp+3Ch] [bp-74h]@22 int v44; // [sp+40h] [bp-70h]@22 int v45; // [sp+44h] [bp-6Ch]@22 int v46; // [sp+48h] [bp-68h]@22 int v47; // [sp+4Ch] [bp-64h]@22 char v48; // [sp+50h] [bp-60h]@22 char v49; // [sp+7Ch] [bp-34h]@22 char v50; // [sp+80h] [bp-30h]@17 unsigned int v51; // [sp+A0h] [bp-10h]@1 int v52; // [sp+ACh] [bp-4h]@1 int v53; // [sp+B0h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v34 = (unsigned int)&v53 ^ __security_cookie; v36 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK"; dword_750AB8[dword_750CB8++] = -1; v33 = *(_DWORD *)(a1 + 2); v52 = 0; v2 = sub_54E4D0(&unk_13253630, v33); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v37 = v3; if ( !v3 ) { v52 = -1; LABEL_39: v33 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK"; goto LABEL_40; } v4 = sub_418BA0(dword_D9FBF28, *(_WORD *)(a1 + 6)); v5 = v4; if ( v4 ) { if ( *(_DWORD *)v4 && *((_DWORD *)v4 + 1) ) { v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); v38 = v6; if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) == 4 ) { if ( (unsigned int)sub_402710(v3, v38) <= 0xF4240 ) { switch ( *(_WORD *)(a1 + 8) ) { case 0: v7 = *(_DWORD *)v5 + 84; v38 = sub_4837D0((int)&unk_CFCF380, v7, *(_DWORD *)(a1 + 10)); if ( !v38 ) { v8 = sub_649DA0(v7, (int)&v50); sub_6390B0( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK Indun Info NULL", v8); sub_55EFA0(v3, 0); goto LABEL_38; } v9 = 0; break; case 1: v33 = (int)"CannotAddAnymore"; goto LABEL_27; case 2: v22 = *(_DWORD *)v3; v23 = sub_48C200(&unk_150A0980, "RecallDisableField"); (*(void (__thiscall **)(int, int))(v22 + 1924))(v3, v23); sub_55EFA0(v3, 0); goto LABEL_38; case 3: v33 = (int)"InstanceDungeonMaxPlayer"; LABEL_27: v20 = *(_DWORD *)v3; v21 = sub_48C200(&unk_150A0980, (const char *)v33); (*(void (__thiscall **)(int, int))(v20 + 1924))(v3, v21); sub_55EFA0(v3, 0); goto LABEL_38; case 5: v24 = sub_4837D0((int)&unk_CFCF380, *(_DWORD *)v5 + 84, *(_DWORD *)(a1 + 10)); if ( !v24 ) goto LABEL_38; v25 = off_849C18; *(_WORD *)off_849C18 = -23540; *((_WORD *)v25 + 1) = *(_WORD *)(a1 + 6); *((_DWORD *)v25 + 1) = *(_DWORD *)(a1 + 14); *((_DWORD *)v25 + 2) = *(_DWORD *)(a1 + 18); *((_DWORD *)v25 + 3) = *(_DWORD *)(a1 + 22); *((_BYTE *)v25 + 16) = 1; *(_DWORD *)((char *)v25 + 17) = *(_BYTE *)(v24 + 67); if ( sub_4C81E0(&off_849C18, 21) ) { v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v26 + 12))(v26, v3, &off_849C18); sub_55EFA0(v3, 0); } else { v33 = 21; v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK : Packet Too Long"; LABEL_35: sub_639100(&unk_86DDD8, v32, v33); sub_55EFA0(v3, 0); } goto LABEL_38; default: v33 = 0; v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK Invalid Indun Find Error Code"; goto LABEL_35; } while ( 1 ) { v33 = v9; v35 = &v28; sub_418AC0((char *)&v28, "LinkTable"); LOBYTE(v52) = 1; v10 = sub_4C48A0(dword_D9FBF28); LOBYTE(v52) = 0; v11 = sub_6442C0(v10, v28, v29, v30, v31, v32, v33); v12 = v11; if ( !v11 ) goto LABEL_38; if ( sub_427B00(v11, v38) ) { v13 = *(_DWORD *)(a1 + 14); memcpy(&v39, (const void *)v12, 0x60u); v14 = *(_DWORD *)(a1 + 22); v49 = *(_BYTE *)(v12 + 96); v40 = 0; v41 = 0; v42 = 0; v43 = 0; v44 = 0; v45 = 0; v46 = 0; v47 = 0; v48 = 0; v15 = *(_DWORD *)(a1 + 18); v42 = v14; v41 = v15; v16 = *(_WORD *)(v38 + 109); v40 = v13; LOBYTE(v43) = 0; if ( (_WORD)v16 != -1 && (v17 = *(_BYTE *)(v38 + 105)) != 0 ) { v18 = v37; v33 = (int)&v39; v32 = v17; v31 = v16; v19 = sub_4802C0(v37); sub_526320((void *)v18, v19, v31, v32, v33); sub_55EFA0(v18, 0); } else { (*(void (__stdcall **)(char *, signed int, signed int, signed int))(*(_DWORD *)v37 + 1536))( &v39, 6, 9, 10); sub_55EFA0(v37, 0); } goto LABEL_38; } ++v9; } } v33 = *(_DWORD *)(a1 + 2); v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK NPC Click Range Over"; } else { v33 = 0; v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK Invalid NPC Handle3"; } } else { v33 = 0; v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK Invalid NPC Handle2"; } } else { v33 = 0; v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK NPC Function NULL"; } } else { v33 = 0; v32 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK Invalid NPC Handle1"; } sub_639100(&unk_86DDD8, v32, v33); LABEL_38: v52 = -1; goto LABEL_39; } v52 = -1; v33 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ACK"; LABEL_40: --dword_750CB8; return sub_467660((int)&unk_D020420, v33); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00485320) -------------------------------------------------------- char __thiscall sub_485320(void *this, int a2) { void *v2; // ebx@1 signed int v3; // eax@1 signed int v4; // edx@1 int v5; // ecx@1 char result; // al@2 int v7; // esi@9 bool v8; // cf@10 int v9; // [sp+Ch] [bp-16Ch]@9 char v10; // [sp+18h] [bp-160h]@9 char v11; // [sp+20h] [bp-158h]@9 char v12; // [sp+2Ch] [bp-14Ch]@9 char v13; // [sp+38h] [bp-140h]@9 char v14; // [sp+44h] [bp-134h]@9 char v15; // [sp+4Ch] [bp-12Ch]@9 int v16; // [sp+5Ch] [bp-11Ch]@1 int v17; // [sp+60h] [bp-118h]@3 int v18; // [sp+64h] [bp-114h]@1 char v19; // [sp+68h] [bp-110h]@10 unsigned int v20; // [sp+168h] [bp-10h]@1 int v21; // [sp+174h] [bp-4h]@1 int v22; // [sp+178h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v2 = this; v18 = a2; v16 = (int)"MapClusterManager::MapCluster::mc_PlayAllFilm"; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_PlayAllFilm"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::MapCluster::mc_PlayAllFilm"; v3 = -1; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v21 = 0; if ( a2 ) { v17 = 0; if ( *((_WORD *)v2 + 20486) > 0u ) { while ( 1 ) { *((_DWORD *)v2 + 10244) += v4; if ( *((_DWORD *)v2 + 10244) >= *((_DWORD *)v2 + 10243) ) *((_DWORD *)v2 + 10244) = v5; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v10); LOBYTE(v21) = 1; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v11); LOBYTE(v21) = 2; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v12); LOBYTE(v21) = 3; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v13); LOBYTE(v21) = 4; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v14); LOBYTE(v21) = 5; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(&v15); memcpy(&v9, (char *)v2 + 80 * *((_DWORD *)v2 + 10244) + 12, 0x50u); v7 = v9; LOBYTE(v21) = 6; if ( !v9 ) break; sub_4D5720(&v19); LOBYTE(v21) = 12; sub_418FB0(v7, v18, &v19); LOBYTE(v21) = 6; nullsub_2(&v19); LOBYTE(v21) = 17; nullsub_2(&v15); LOBYTE(v21) = 16; nullsub_2(&v14); LOBYTE(v21) = 15; nullsub_2(&v13); LOBYTE(v21) = 14; nullsub_2(&v12); LOBYTE(v21) = 13; nullsub_2(&v11); LOBYTE(v21) = 0; nullsub_2(&v10); v8 = v17++ + 1 < (unsigned int)*((_WORD *)v2 + 20486); v4 = 1; if ( !v8 ) { v3 = -1; goto LABEL_4; } v5 = 0; } sub_6390B0(&unk_86DDD8, (int)"MapClusterManager::MapCluster::mc_PlayAllFilm : Filed is NULL :", v18); LOBYTE(v21) = 11; nullsub_2(&v15); LOBYTE(v21) = 10; nullsub_2(&v14); LOBYTE(v21) = 9; nullsub_2(&v13); LOBYTE(v21) = 8; nullsub_2(&v12); LOBYTE(v21) = 7; nullsub_2(&v11); LOBYTE(v21) = 0; nullsub_2(&v10); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_PlayAllFilm"); result = 0; } else { LABEL_4: dword_750CB8 -= v4; v21 = v3; sub_467660((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_PlayAllFilm"); result = 1; } } else { --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_PlayAllFilm"); result = 0; } return result; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004855F0) -------------------------------------------------------- int __thiscall sub_4855F0(void *this, const char *a2, int a3, int a4, int a5) { int v5; // esi@1 int result; // eax@2 int v7; // esi@3 int (__stdcall **v8)(int, int); // [sp+4h] [bp-A03Ch]@1 int v9; // [sp+8h] [bp-A038h]@1 int (__thiscall *v10)(void *, int, int, int); // [sp+Ch] [bp-A034h]@1 char *v11; // [sp+10h] [bp-A030h]@1 void *v12; // [sp+14h] [bp-A02Ch]@1 __int16 v13; // [sp+18h] [bp-A028h]@1 char v14; // [sp+1Ch] [bp-A024h]@1 unsigned int v15; // [sp+A030h] [bp-10h]@1 int v16; // [sp+A03Ch] [bp-4h]@1 int v17; // [sp+A040h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v5 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_49E650(&v14, a2); v8 = &off_6B5AB4; v9 = v5; v10 = sub_49E7D0; v11 = &v14; v12 = 0; v13 = -1; LOBYTE(v16) = 2; sub_43C470(v5, (int)&v8); LOBYTE(v16) = 1; v8 = &off_6B5AAC; if ( v12 ) { v7 = sub_483CC0(v12, a3, a4, a5); LOBYTE(v16) = 0; sub_49DF60((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); result = v7; } else { LOBYTE(v16) = 0; sub_49DF60((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); result = 0; } return result; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00485760) -------------------------------------------------------- int __thiscall sub_485760(void *this, const char *a2, int a3, int a4, int a5) { int v5; // esi@1 int result; // eax@2 int v7; // esi@3 int (__stdcall **v8)(int, int); // [sp+4h] [bp-A03Ch]@1 int v9; // [sp+8h] [bp-A038h]@1 int (__thiscall *v10)(void *, int, int, int); // [sp+Ch] [bp-A034h]@1 char *v11; // [sp+10h] [bp-A030h]@1 void *v12; // [sp+14h] [bp-A02Ch]@1 __int16 v13; // [sp+18h] [bp-A028h]@1 char v14; // [sp+1Ch] [bp-A024h]@1 unsigned int v15; // [sp+A030h] [bp-10h]@1 int v16; // [sp+A03Ch] [bp-4h]@1 int v17; // [sp+A040h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v5 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindExistByRegnum"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_FindExistByRegnum"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_49E650(&v14, a2); v8 = &off_6B5AB4; v9 = v5; v10 = sub_49E7D0; v11 = &v14; v12 = 0; v13 = -1; LOBYTE(v16) = 2; sub_43C470(v5, (int)&v8); LOBYTE(v16) = 1; v8 = &off_6B5AAC; if ( v12 ) { v7 = sub_483F50(v12, a3, a4, a5); LOBYTE(v16) = 0; sub_49DF60((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindExistByRegnum"); result = v7; } else { LOBYTE(v16) = 0; sub_49DF60((int)&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindExistByRegnum"); result = 0; } return result; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004858E0) -------------------------------------------------------- int __thiscall sub_4858E0(void *this, const char *a2) { int v2; // esi@1 int (__stdcall **v4)(int, int); // [sp+4h] [bp-A03Ch]@1 int v5; // [sp+8h] [bp-A038h]@1 int (__thiscall *v6)(void *, int, int, int); // [sp+Ch] [bp-A034h]@1 char *v7; // [sp+10h] [bp-A030h]@1 int v8; // [sp+14h] [bp-A02Ch]@1 __int16 v9; // [sp+18h] [bp-A028h]@1 char v10; // [sp+1Ch] [bp-A024h]@1 unsigned int v11; // [sp+A030h] [bp-10h]@1 int v12; // [sp+A03Ch] [bp-4h]@1 int v13; // [sp+A040h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindMapCluster"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_FindMapCluster"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; sub_49E650(&v10, a2); v4 = &off_6B5AB4; v5 = v2; v6 = sub_49E7D0; v7 = &v10; v8 = 0; v9 = -1; LOBYTE(v12) = 2; sub_43C470(v2, (int)&v4); v4 = &off_6B5AAC; LOBYTE(v12) = 0; sub_49DF60((int)&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindMapCluster"); return v8; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00485A10) -------------------------------------------------------- char __thiscall sub_485A10(int this, int a2, int a3, char a4) { int (__stdcall **v5)(int, int); // [sp+4h] [bp-1Ch]@1 int v6; // [sp+8h] [bp-18h]@1 int v7; // [sp+Ch] [bp-14h]@1 char v8; // [sp+10h] [bp-10h]@1 int v9; // [sp+1Ch] [bp-4h]@1 v6 = a2; v5 = &off_6B6694; v7 = a3; v8 = a4; v9 = 0; return sub_43C470(this, (int)&v5); } // 6B6694: using guessed type int (__stdcall *off_6B6694)(int, int); //----- (00485A70) -------------------------------------------------------- int __thiscall sub_485A70(void *this, int a2, int a3) { void *v3; // eax@1 char *v4; // esi@1 int v5; // eax@3 void *v6; // ecx@4 int v7; // ST04_4@4 int v8; // eax@4 int v9; // eax@4 int result; // eax@6 v3 = off_849C18; *(_WORD *)off_849C18 = -23549; v4 = (char *)this + 80 * a2; *((_BYTE *)v3 + 2) = v4[84]; *(_DWORD *)((char *)v3 + 3) = *((_DWORD *)v4 + 4); if ( sub_4C81E0(&off_849C18, 7) ) { v5 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"MapClusterManager::MapCluster::mc_DeleteInstanceDungeon : Packet Too Long", 7); } v6 = (void *)*((_DWORD *)v4 + 3); v4[20] = 0; v4[52] = 0; v4[64] = 0; sub_4842E0(v6); v7 = *((_DWORD *)v4 + 22); v8 = sub_4B81F0(*((_DWORD *)v4 + 3)); v9 = sub_483840((int)&unk_CFCF380, v8, v7); if ( v9 ) sub_418FD0(*((_DWORD *)v4 + 3), (const char *)(v9 + 35)); result = sub_494EA0(*((void **)v4 + 3), 946); *((_DWORD *)v4 + 4) = -1; *((_DWORD *)v4 + 22) = 3; return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (00485B30) -------------------------------------------------------- int __thiscall sub_485B30(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // edx@1 int v6; // eax@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::mc_DeleteInstanceDungeon"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::mc_DeleteInstanceDungeon"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; if ( *((_WORD *)v4 + 20486) > 0u ) { while ( 1 ) { if ( *((_DWORD *)v4 + 10244) >= *((_DWORD *)v4 + 10243) ) *((_DWORD *)v4 + 10244) = 0; v6 = *((_DWORD *)v4 + 10244); if ( *((_DWORD *)v4 + 20 * v6 + 4) == a2 ) { if ( *((_DWORD *)v4 + 20 * v6 + 21) == a3 ) break; } *((_DWORD *)v4 + 10244) = v6 + 1; ++v5; if ( v5 >= *((_WORD *)v4 + 20486) ) goto LABEL_9; } sub_485A70(v4, v6, a4); } LABEL_9: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MapClusterNamager::mc_DeleteInstanceDungeon"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00485C30) -------------------------------------------------------- char __thiscall sub_485C30(void *this, int a2, int a3) { int v3; // edi@1 int v4; // esi@2 void *v5; // eax@6 int v6; // eax@8 int v7; // eax@12 unsigned int v8; // eax@14 int v9; // eax@16 void *v10; // eax@16 int v11; // eax@18 unsigned int v12; // eax@20 int v13; // edx@21 unsigned int v14; // eax@23 unsigned int v15; // eax@26 int v16; // edx@27 unsigned int v17; // eax@29 int v18; // eax@30 void *v19; // ecx@31 int v20; // eax@31 unsigned int v21; // eax@34 int v22; // eax@35 void *v23; // ecx@36 int v24; // eax@36 char v26; // [sp+10h] [bp-24h]@36 char v27; // [sp+18h] [bp-1Ch]@31 int v28; // [sp+20h] [bp-14h]@1 int v29; // [sp+24h] [bp-10h]@1 int v30; // [sp+30h] [bp-4h]@1 v3 = (int)this; v28 = (int)"MapClusterManager::MapCluster::mc_Routine"; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_Routine"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::MapCluster::mc_Routine"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; v29 = 0; if ( *(_DWORD *)(v3 + 40972) > 0 ) { v4 = v3 + 28; while ( *(_DWORD *)(v4 - 12) == -1 ) { LABEL_38: v4 += 80; ++v29; if ( v29 >= *(_DWORD *)(v3 + 40972) ) goto LABEL_39; } if ( sub_4843B0(*(void **)(v4 - 16), 4) ) { if ( *(_BYTE *)(v4 - 8) == 1 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -23549; *((_BYTE *)v5 + 2) = *(_BYTE *)(v4 + 56); *(_DWORD *)((char *)v5 + 3) = *(_DWORD *)(v4 - 12); if ( !sub_4C81E0(&off_849C18, 7) ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::MapCluster::mc_Routine : Packet Too Long", 7); *(_WORD *)(v4 - 8) = 0; goto LABEL_13; } v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } *(_WORD *)(v4 - 8) = 0; } else { if ( !*(_BYTE *)(v4 - 8) ) { if ( *(_BYTE *)(v4 - 7) ) { LABEL_14: v8 = *(_DWORD *)(v4 + 4); if ( dword_14D129E8 > v8 ) { *(_DWORD *)(v4 + 4) = v8 + *(_DWORD *)(v4 + 8); if ( *(_BYTE *)(v4 - 8) ) goto LABEL_20; *(_BYTE *)(v4 - 8) = 1; v9 = dword_14D129E8; *(_DWORD *)v4 = 3000; *(_DWORD *)(v4 - 4) = v9 + 3000; v10 = off_849C18; *(_WORD *)off_849C18 = -23551; *((_BYTE *)v10 + 2) = *(_BYTE *)(v4 + 56); *(_DWORD *)((char *)v10 + 3) = *(_DWORD *)(v4 - 12); if ( sub_4C81E0(&off_849C18, 7) ) { v11 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"MapClusterManager::MapCluster::mc_Routine : Packet Too Long", 7); } } LABEL_19: if ( !*(_BYTE *)(v4 - 8) ) { LABEL_22: if ( *(_BYTE *)(v4 + 12) ) { v14 = *(_DWORD *)(v4 + 16); if ( dword_14D129E8 > v14 ) { *(_DWORD *)(v4 + 16) = v14 + *(_DWORD *)(v4 + 20); sub_49E0B0(v3, *(_DWORD *)(v4 - 16), "DungeonTimeout"); } } if ( *(_BYTE *)(v4 + 24) ) { v15 = *(_DWORD *)(v4 + 28); if ( dword_14D129E8 > v15 ) { v16 = v29; *(_DWORD *)(v4 + 28) = v15 + *(_DWORD *)(v4 + 32); sub_485A70((void *)v3, v16, 0); } } if ( *(_BYTE *)(v4 + 36) ) { v17 = *(_DWORD *)(v4 + 40); if ( dword_14D129E8 > v17 ) { *(_DWORD *)(v4 + 40) = v17 + *(_DWORD *)(v4 + 44); v18 = sub_48C200(&unk_150A0980, "LimitTimeMessageFirst"); if ( v18 ) { sub_427E90((int)&v27, v18); v19 = *(void **)(v4 - 16); LOBYTE(v30) = 1; v20 = sub_462A60(v19); sub_549B60((void *)v20, (int)&v27, 0); LOBYTE(v30) = 0; sub_427EB0(&v27); } else { sub_639100(&unk_86DDD8, (int)"Not Found ETC : LimitTimeMessageFirst", 0); } } if ( *(_BYTE *)(v4 + 36) ) { v21 = *(_DWORD *)(v4 + 48); if ( dword_14D129E8 > v21 ) { *(_DWORD *)(v4 + 48) = v21 + *(_DWORD *)(v4 + 52); v22 = sub_48C200(&unk_150A0980, "LimitTimeMessageSecond"); if ( v22 ) { sub_427E90((int)&v26, v22); v23 = *(void **)(v4 - 16); LOBYTE(v30) = 2; v24 = sub_462A60(v23); sub_549B60((void *)v24, (int)&v26, 0); LOBYTE(v30) = 0; sub_427EB0(&v26); } else { sub_639100(&unk_86DDD8, (int)"Not Found ETC : LimitTimeMessageSecond", 0); } } } } goto LABEL_38; } LABEL_20: v12 = *(_DWORD *)(v4 - 4); if ( dword_14D129E8 > v12 ) { v13 = v29; *(_DWORD *)(v4 - 4) = v12 + *(_DWORD *)v4; sub_485A70((void *)v3, v13, 0); } goto LABEL_22; } v7 = dword_14D129E8 + 200; *(_DWORD *)(v4 + 8) = 200; *(_DWORD *)(v4 + 4) = v7; *(_BYTE *)(v4 - 7) = 1; } } LABEL_13: if ( !*(_BYTE *)(v4 - 7) ) goto LABEL_19; goto LABEL_14; } LABEL_39: --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00485F60) -------------------------------------------------------- int __stdcall sub_485F60(int a1, int a2, int a3) { int result; // eax@1 int v4; // ebx@3 int v5; // ST08_4@5 int v6; // eax@5 int v7; // eax@5 int v8; // eax@5 int v9; // esi@5 int v10; // eax@8 int v11; // eax@8 int v12; // eax@8 int v13; // esi@8 unsigned __int8 v14; // al@8 int v15; // eax@11 int v16; // [sp+8h] [bp-6Ch]@1 char v17; // [sp+Ch] [bp-68h]@11 int v18; // [sp+20h] [bp-54h]@8 int v19; // [sp+24h] [bp-50h]@8 int v20; // [sp+28h] [bp-4Ch]@8 char v21; // [sp+2Ch] [bp-48h]@8 int v22; // [sp+41h] [bp-33h]@8 int v23; // [sp+45h] [bp-2Fh]@8 int v24; // [sp+49h] [bp-2Bh]@8 char v25; // [sp+4Dh] [bp-27h]@8 int v26; // [sp+62h] [bp-12h]@9 int v27; // [sp+66h] [bp-Eh]@9 __int16 v28; // [sp+6Ah] [bp-Ah]@11 unsigned int v29; // [sp+70h] [bp-4h]@1 int v30; // [sp+74h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; result = a3; v16 = a3; if ( a1 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1); if ( (_BYTE)result ) { result = sub_4012C0(a1); v4 = result; if ( result ) { result = sub_4B81F0(result); if ( *(_BYTE *)(result + 54) == 3 ) { v5 = v16; v6 = sub_4012C0(a1); v7 = sub_4B81F0(v6); v8 = sub_418B00((int)byte_85A2C0, v7); result = sub_485760(&unk_D714FF8, (const char *)v8, a2, v5, (int)&v16); v9 = result; if ( result ) { if ( result == v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1) == 3 ) { result = sub_409730(a1); if ( result ) result = sub_451380(result, a1, v9); } else { v10 = sub_452B10(v9); v18 = *(_DWORD *)v10; v19 = *(_DWORD *)(v10 + 4); v20 = *(_DWORD *)(v10 + 8); v21 = 0; v11 = sub_452B10(v9); v22 = *(_DWORD *)v11; v23 = *(_DWORD *)(v11 + 4); v24 = *(_DWORD *)(v11 + 8); v25 = 0; v12 = sub_4B81F0(v9); v13 = v12; v14 = sub_427920(&unk_14D42DC0, *(_BYTE *)(v12 + 154)); if ( v14 >= 4u ) { v26 = *(_DWORD *)(v13 + 122); v27 = *(_DWORD *)(v13 + 126); } else { v26 = *(_DWORD *)(v13 + 8 * v14 + 122); v27 = *(_DWORD *)(v13 + 8 * v14 + 126); } v15 = *(_DWORD *)a1; v28 = 0; result = (*(int (__thiscall **)(int, char *, _DWORD))(v15 + 1020))(a1, &v17, 0); } } } } } } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004860E0) -------------------------------------------------------- char __stdcall sub_4860E0(int a1, int a2, int a3, int a4) { int v5; // ebx@3 int v6; // esi@3 int v7; // eax@7 int v8; // eax@7 int v9; // ecx@7 void *v10; // eax@10 char v11; // [sp+10h] [bp-24h]@7 int v12; // [sp+30h] [bp-4h]@7 if ( !a2 ) return 2; v5 = a4; v6 = sub_485760(&unk_D714FF8, (const char *)(a2 + 22), a3, a4, (int)&a4); if ( v6 ) { sub_4E20F0(&v11, -1, 0, 0, 100); v12 = 0; v7 = sub_462A60((void *)v6); sub_549B60((void *)v7, (int)&v11, 0); v8 = sub_4B81F0((int)&v11); v9 = *(_BYTE *)(a2 + 107); v12 = -1; if ( v9 <= v8 ) { sub_4E2170(&v11); return 3; } sub_4E2170(&v11); } else { v6 = sub_4855F0(&unk_D714FF8, (const char *)(a2 + 22), a3, v5, 1); if ( !v6 ) return 1; sub_5A6840(a2, v6); } v10 = sub_5CF620((void *)v6); *(_DWORD *)a1 = *(_DWORD *)v10; *(_DWORD *)(a1 + 4) = *((_DWORD *)v10 + 1); *(_DWORD *)(a1 + 8) = *((_DWORD *)v10 + 2); return 0; } //----- (00486220) -------------------------------------------------------- int __thiscall sub_486220(void *this, const char *a2) { int v2; // esi@1 int (__stdcall **v4)(int, int); // [sp+4h] [bp-A03Ch]@1 int v5; // [sp+8h] [bp-A038h]@1 int (__thiscall *v6)(void *, int, int, int); // [sp+Ch] [bp-A034h]@1 char *v7; // [sp+10h] [bp-A030h]@1 void *v8; // [sp+14h] [bp-A02Ch]@1 __int16 v9; // [sp+18h] [bp-A028h]@1 char v10; // [sp+1Ch] [bp-A024h]@1 unsigned int v11; // [sp+A030h] [bp-10h]@1 int v12; // [sp+A03Ch] [bp-4h]@1 int v13; // [sp+A040h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_AllDropFilm"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_AllDropFilm"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; sub_49E650(&v10, a2); v4 = &off_6B5AB4; v5 = v2; v6 = sub_49E7D0; v7 = &v10; v8 = 0; v9 = -1; LOBYTE(v12) = 2; sub_43C470(v2, (int)&v4); LOBYTE(v12) = 1; v4 = &off_6B5AAC; if ( v8 ) sub_484600(v8); LOBYTE(v12) = 0; sub_49DF60((int)&v10); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_AllDropFilm"); } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00486350) -------------------------------------------------------- int __stdcall sub_486350(int a1, int a2) { void *v2; // esi@1 __int16 v3; // dx@1 bool v4; // zf@5 int v5; // eax@5 int v6; // eax@9 int v8; // [sp+10h] [bp-34h]@1 char v9; // [sp+14h] [bp-30h]@1 unsigned int v10; // [sp+34h] [bp-10h]@1 int v11; // [sp+40h] [bp-4h]@1 int v12; // [sp+44h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = -23541; *((_BYTE *)v2 + 2) = *(_BYTE *)(a1 + 2); *(_DWORD *)((char *)v2 + 3) = *(_DWORD *)(a1 + 3); v3 = *(_WORD *)(a1 + 15); v11 = 0; *(_WORD *)((char *)v2 + 7) = v3; *(_WORD *)((char *)v2 + 9) = 2; *(_DWORD *)((char *)v2 + 11) = 3; v8 = sub_4836E0((int)&unk_CFCF380, a1 + 17); sub_649DA0(a1 + 17, (int)&v9); if ( v8 ) { if ( *(_BYTE *)(v8 + 21) == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v4 = sub_485760(&unk_D714FF8, (const char *)(v8 + 22), *(_DWORD *)(a1 + 7), *(_DWORD *)(a1 + 11), (int)&v8) == 0; v5 = v8; if ( !v4 ) { *(_WORD *)((char *)v2 + 9) = 0; *(_DWORD *)((char *)v2 + 11) = v5; } *(_DWORD *)((char *)v2 + 11) = v5; if ( sub_4C81E0(&off_849C18, 15) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ : Packet Too Long", 15); } } else { sub_6390B0( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ InstanceDungeonInfo Invalid Zone Number", (int)&v9); } } else { sub_6390B0( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ InstanceDungeonInfo Data NULL", (int)&v9); } --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; //----- (00486500) -------------------------------------------------------- int __stdcall sub_486500(int a1, int a2) { int v2; // eax@1 int v3; // ST0C_4@1 int v4; // ebx@1 void *v5; // edi@5 int v6; // ebx@5 int v7; // eax@5 int v8; // eax@7 void *v9; // eax@8 int v10; // esi@8 void *v11; // esi@12 int v12; // eax@12 int v13; // eax@12 void *v14; // eax@15 int v15; // eax@18 int v17; // [sp-Ch] [bp-174h]@4 int v18; // [sp-8h] [bp-170h]@4 char v19; // [sp+Ch] [bp-15Ch]@12 int v20; // [sp+24h] [bp-144h]@1 void *v21; // [sp+28h] [bp-140h]@5 int v22; // [sp+2Ch] [bp-13Ch]@1 int v23; // [sp+30h] [bp-138h]@1 int v24; // [sp+34h] [bp-134h]@5 char v25; // [sp+38h] [bp-130h]@10 char v26; // [sp+138h] [bp-30h]@1 unsigned int v27; // [sp+158h] [bp-10h]@1 int v28; // [sp+164h] [bp-4h]@1 int v29; // [sp+168h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v20 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ECHO_REQ"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ECHO_REQ"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ECHO_REQ"; dword_750AB8[dword_750CB8++] = -1; v28 = 0; v2 = sub_4836E0((int)&unk_CFCF380, a1 + 17); v3 = *(_DWORD *)(a1 + 37); v4 = v2; v22 = v2; v23 = sub_4837D0((int)&unk_CFCF380, a1 + 17, v3); sub_649DA0(a1 + 17, (int)&v26); if ( !v4 || !v23 ) { v18 = (int)&v26; v17 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ECHO_REQ InstanceDungeonInfo Data NULL"; goto LABEL_20; } if ( *(_BYTE *)(v4 + 21) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v18 = (int)&v26; v17 = (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ECHO_REQ InstanceDungeonInfo Invalid Zone Number"; LABEL_20: sub_6390B0(&unk_86DDD8, v17, v18); goto LABEL_21; } v5 = off_849C18; *(_WORD *)off_849C18 = -23535; *((_BYTE *)v5 + 2) = *(_BYTE *)(a1 + 2); *(_DWORD *)((char *)v5 + 3) = *(_DWORD *)(a1 + 3); *(_WORD *)((char *)v5 + 7) = *(_WORD *)(a1 + 15); *(_WORD *)((char *)v5 + 9) = 2; v6 = (int)((char *)v5 + 15); *(_DWORD *)((char *)v5 + 11) = *(_DWORD *)(a1 + 37); *(_DWORD *)((char *)v5 + 23) = 0; *(_DWORD *)((char *)v5 + 19) = 0; *(_DWORD *)((char *)v5 + 15) = 0; strncpy((char *)v5 + 15, byte_6A492E, 0xCu); v7 = sub_485760(&unk_D714FF8, (const char *)(v22 + 22), *(_DWORD *)(a1 + 7), *(_DWORD *)(a1 + 11), (int)&v24); v21 = (void *)v7; if ( v7 ) { if ( v24 != *(_DWORD *)(a1 + 37) ) { *(_DWORD *)((char *)v5 + 11) = v24; *(_WORD *)((char *)v5 + 9) = 5; v8 = sub_4B81F0(v7); *(_DWORD *)v6 = *(_DWORD *)v8; *(_DWORD *)((char *)v5 + 19) = *(_DWORD *)(v8 + 4); *(_DWORD *)((char *)v5 + 23) = *(_DWORD *)(v8 + 8); } goto LABEL_11; } v9 = (void *)sub_4855F0( &unk_D714FF8, (const char *)(v22 + 22), *(_DWORD *)(a1 + 7), *(_DWORD *)(a1 + 11), *(_DWORD *)(a1 + 37)); v10 = (int)v9; v21 = v9; if ( v9 ) { sub_494EA0(v9, 944); v24 = v23 + 35; sub_418FD0(v10, (const char *)(v23 + 35)); sub_461480(v10, *(_BYTE *)(v23 + 67)); sub_4D5720(&v25); LOBYTE(v28) = 1; sub_418FB0(v10, v24, &v25); LOBYTE(v28) = 0; nullsub_2(&v25); LABEL_11: if ( *(_WORD *)((char *)v5 + 9) != 5 ) { sub_4E20F0(&v19, -1, 0, 0, 100); v11 = v21; LOBYTE(v28) = 2; v12 = sub_462A60(v21); sub_549B60((void *)v12, (int)&v19, 0); v13 = sub_4B81F0((int)&v19); if ( *(_BYTE *)(v22 + 107) <= v13 ) *(_WORD *)((char *)v5 + 9) = 3; else *(_WORD *)((char *)v5 + 9) = 0; v14 = sub_5CF620(v11); *(_DWORD *)v6 = *(_DWORD *)v14; *(_DWORD *)((char *)v5 + 19) = *((_DWORD *)v14 + 1); *(_DWORD *)((char *)v5 + 23) = *((_DWORD *)v14 + 2); LOBYTE(v28) = 0; sub_4E2170(&v19); } goto LABEL_16; } *(_WORD *)((char *)v5 + 9) = 1; LABEL_16: if ( sub_4C81E0(&off_849C18, 27) ) { v15 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v15); } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_CHECK_ECHO_REQ : Packet Too Long", 27); } LABEL_21: --dword_750CB8; v28 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_INSTANCE_DUNGEON_LEVEL_SELECT_JOIN_ECHO_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; //----- (00486850) -------------------------------------------------------- char __thiscall sub_486850(int this, void *a2, int a3) { sub_485B30(a2, *(_DWORD *)(this + 8), *(_DWORD *)(this + 4), *(_BYTE *)(this + 12)); return 1; } //----- (00486870) -------------------------------------------------------- int __stdcall sub_486870(int a1) { int v1; // edi@2 int v2; // eax@4 unsigned __int16 v3; // ax@5 int v4; // eax@5 int v5; // eax@6 int v6; // eax@8 int v7; // edi@8 void *v8; // eax@9 int v9; // esi@9 int v10; // eax@12 unsigned __int8 v11; // cl@13 void *v12; // esi@14 __int16 v13; // ax@14 int v14; // esi@17 int v15; // eax@17 int v16; // esi@19 int v17; // eax@19 __int16 v18; // di@20 int v19; // edx@23 char v20; // al@23 int v21; // eax@24 int v22; // ecx@25 int v24; // [sp-1Ch] [bp-16Ch]@9 int v25; // [sp-18h] [bp-168h]@9 int v26; // [sp-14h] [bp-164h]@9 int v27; // [sp-10h] [bp-160h]@9 int v28; // [sp-Ch] [bp-15Ch]@9 int v29; // [sp-8h] [bp-158h]@2 unsigned int v30; // [sp-4h] [bp-154h]@1 int v31; // [sp+Ch] [bp-144h]@1 int *v32; // [sp+10h] [bp-140h]@9 int v33; // [sp+14h] [bp-13Ch]@1 int v34; // [sp+18h] [bp-138h]@2 int v35; // [sp+1Ch] [bp-134h]@2 char v36; // [sp+20h] [bp-130h]@12 char v37; // [sp+34h] [bp-11Ch]@12 char v38; // [sp+80h] [bp-D0h]@12 char v39; // [sp+84h] [bp-CCh]@8 char v40; // [sp+104h] [bp-4Ch]@20 int v41; // [sp+105h] [bp-4Bh]@20 int v42; // [sp+109h] [bp-47h]@20 int v43; // [sp+10Dh] [bp-43h]@20 int v44; // [sp+111h] [bp-3Fh]@20 int v45; // [sp+115h] [bp-3Bh]@20 int v46; // [sp+119h] [bp-37h]@20 int v47; // [sp+11Dh] [bp-33h]@20 int v48; // [sp+121h] [bp-2Fh]@20 char v49; // [sp+128h] [bp-28h]@2 int v50; // [sp+129h] [bp-27h]@2 int v51; // [sp+12Dh] [bp-23h]@2 __int64 v52; // [sp+131h] [bp-1Fh]@2 int v53; // [sp+139h] [bp-17h]@2 unsigned int v54; // [sp+140h] [bp-10h]@1 int v55; // [sp+14Ch] [bp-4h]@1 int v56; // [sp+150h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v30 = (unsigned int)&v56 ^ __security_cookie; v31 = (int)"ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG"; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG"; dword_750AB8[dword_750CB8++] = -1; v55 = 0; v33 = a1 + 2; if ( sub_45AA60(a1 + 2) ) { v49 = 0; v50 = 0; v51 = 0; v52 = 0i64; v53 = 0; v34 = a1 + 17; sub_649DA0(a1 + 17, (int)&v49); v29 = *(_DWORD *)(a1 + 5); BYTE3(v53) = 0; v1 = sub_54E4D0(&unk_13253630, v29); v35 = v1; if ( v1 ) { switch ( *(_WORD *)(a1 + 70) ) { case 0: v2 = sub_4837D0((int)&unk_CFCF380, v34, 1); v34 = v2; if ( !v2 ) goto LABEL_29; v3 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)(v2 + 22)); v4 = sub_4190D0((int)&unk_14D20370, v3); if ( v4 ) v5 = v4 + 14; else v5 = (int)byte_6A492E; v29 = v5; v6 = sub_48C200(&unk_15090128, "LinkTitle"); sprintf(&v39, (const char *)v6, v29); v7 = 0; break; case 1: v29 = (int)"CannotAddAnymore"; goto LABEL_19; case 2: v14 = *(_DWORD *)v1; v15 = sub_48C200(&unk_150A0980, "RecallDisableField"); (*(void (__thiscall **)(int, int))(v14 + 1924))(v1, v15); goto LABEL_29; case 3: v29 = (int)"InstanceDungeonMaxPlayer"; LABEL_19: v16 = *(_DWORD *)v1; v17 = sub_48C200(&unk_150A0980, (const char *)v29); (*(void (__thiscall **)(int, int))(v16 + 1924))(v1, v17); goto LABEL_29; default: goto LABEL_29; } while ( 1 ) { v29 = v7; v32 = &v24; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; strncpy((char *)&v24, "LinkTable", 0x14u); LOBYTE(v55) = 1; v8 = sub_4C48A0(dword_D9FBF28); LOBYTE(v55) = 0; v9 = sub_6442C0(v8, v24, v25, v26, v27, v28, v29); if ( !v9 ) break; if ( sub_427B00(v9, v34) ) { memcpy(&v36, (const void *)v9, 0x60u); v29 = 33; v28 = v33 + 35; v27 = (int)&v37; v38 = *(_BYTE *)(v9 + 96); strncpy(&v37, (const char *)(v33 + 35), 0x21u); v10 = *(_WORD *)(v34 + 109); if ( (_WORD)v10 == -1 || (v11 = *(_BYTE *)(v34 + 105), v11 <= 0u) ) { (*(void (__stdcall **)(char *, signed int, signed int, signed int))(*(_DWORD *)v35 + 1536))(&v36, 6, 9, 10); } else { v12 = (void *)v35; v29 = (int)&v36; v28 = v11; v27 = v10; v13 = sub_4802C0(v35); sub_526320(v12, v13, v27, v28, v29); } break; } ++v7; } } } else { v18 = *(_WORD *)(a1 + 70); v40 = 0; v41 = 0; v42 = 0; v43 = 0; v44 = 0; v45 = 0; v46 = 0; v47 = 0; v48 = 0; if ( v18 ) { v33 = sub_4837D0((int)&unk_CFCF380, a1 + 17, 1); if ( v33 ) { if ( *(_BYTE *)(v33 + 21) == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v19 = *(_DWORD *)(a1 + 13); v29 = *(_DWORD *)(a1 + 9); *(__int64 *)((char *)&v52 + 3) = 0i64; *(int *)((char *)&v51 + 3) = 0; v20 = sub_4860E0((int)((char *)&v51 + 3), v33, v19, v29); v18 = (unsigned __int8)v20; if ( !v20 ) { v21 = sub_418B00((int)byte_85A2C0, (int)((char *)&v51 + 3)); strncpy(&v40, (const char *)v21, 0x21u); } } } } v22 = (int)((char *)off_849C18 + 2); v29 = a1 + 2; *(_WORD *)off_849C18 = -23548; v35 = v22; sub_483A20(v22, v29); if ( *(_WORD *)(a1 + 70) != v18 && !v18 ) strncpy((char *)(v35 + 35), &v40, 0x21u); v29 = 72; v28 = (int)&off_849C18; *(_WORD *)(v35 + 68) = v18; sub_5A4B40((void *)v28, v29); } LABEL_29: --dword_750CB8; v55 = -1; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00486C40) -------------------------------------------------------- int __thiscall sub_486C40(int this, unsigned __int16 a2) { int result; // eax@2 if ( a2 < *(_WORD *)(this + 244) ) result = *(_DWORD *)(this + 240) + 16 * a2; else result = *(_DWORD *)(this + 240); return result; } //----- (00486C70) -------------------------------------------------------- int __thiscall sub_486C70(void *this, int a2, int a3, int a4) { return *(_WORD *)this - *(_WORD *)a4; } //----- (00486C90) -------------------------------------------------------- int __stdcall sub_486C90(int a1) { return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 776))(35, 32, 4558); } //----- (00486CB0) -------------------------------------------------------- void *__thiscall sub_486CB0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6B6D0C; return result; } // 6B6D0C: using guessed type int (__stdcall *off_6B6D0C)(int, int); //----- (00486CD0) -------------------------------------------------------- void __thiscall sub_486CD0(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 unsigned __int8 v4; // al@2 int v5; // ebx@2 int v6; // ST1C_4@2 int v7; // eax@2 v2 = a2; v3 = this; if ( a2 ) { v4 = (*(int (**)(void))(**(_DWORD **)(a2 + 4) + 12))(); v5 = *((_WORD *)v3 + 2); LOWORD(a2) = *(_WORD *)(v2 + 8) & 0x3FF | (v4 << 10); v6 = *(_DWORD *)v3; v7 = sub_63F820(v2); (*(void (__thiscall **)(void *, int, int, int *, int *))(v6 + 48))(v3, v5, v7, &a2, &a2); } } //----- (00486D40) -------------------------------------------------------- char __thiscall sub_486D40(void *this) { void *v1; // esi@1 void *v2; // edi@1 int (__thiscall *v3)(_DWORD); // edx@1 char result; // al@5 v1 = this; v2 = *(void **)this; v3 = (int (__thiscall *)(_DWORD))***(_DWORD ***)this; *(_DWORD *)(*(_DWORD *)this + 8) = 0; if ( (unsigned __int8)v3(v2) || sub_63F7F0(v2) ) { while ( (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v1 + 1) + 12))( *((_DWORD *)v1 + 2), *(_DWORD *)(*(_DWORD *)v1 + 8)) ) { if ( !sub_63F7F0(*(void **)v1) ) goto LABEL_5; } result = 1; } else { LABEL_5: result = 0; } return result; } //----- (00486DA0) -------------------------------------------------------- char __thiscall sub_486DA0(void **this) { void **v1; // esi@1 char result; // al@4 v1 = this; if ( sub_63F7F0(*this) ) { while ( (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v1[1] + 12))(v1[2], *((_DWORD *)*v1 + 2)) ) { if ( !sub_63F7F0(*v1) ) goto LABEL_4; } result = 1; } else { LABEL_4: result = 0; } return result; } //----- (00486DE0) -------------------------------------------------------- int __stdcall sub_486DE0(int a1, int a2, int a3) { int result; // eax@2 if ( a1 ) { result = a2; if ( a2 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 3688))( *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20), a2 + 24); } return result; } //----- (00486E10) -------------------------------------------------------- int __stdcall sub_486E10(int a1, int a2, int a3) { int result; // eax@2 if ( a1 ) { result = a2; if ( a2 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 3692))(*(_WORD *)(a2 + 16)); } return result; } //----- (00486E40) -------------------------------------------------------- int __thiscall sub_486E40(int this, unsigned __int16 a2) { int v3; // esi@3 int v4; // eax@3 __int16 v5; // bx@5 signed __int16 v6; // si@6 __int16 v7; // si@10 if ( a2 >= *(_WORD *)(this + 4) ) return 0; v3 = *(_DWORD *)(this + 8); v4 = 12 * a2; if ( *(_BYTE *)(v3 + v4 + 8) ) return 0; v5 = *(_WORD *)(v3 + v4 + 4); if ( v5 == a2 ) { v6 = -1; LABEL_9: *(_WORD *)(this + 12) = v6; goto LABEL_10; } *(_WORD *)(v3 + 12 * *(_WORD *)(v3 + v4 + 6) + 4) = v5; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6); if ( *(_WORD *)(this + 12) == a2 ) { v6 = *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4); goto LABEL_9; } LABEL_10: v7 = *(_WORD *)(this + 14); if ( v7 == -1 ) { *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = a2; *(_WORD *)(this + 14) = a2; } else { *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 4) = v7; *(_WORD *)(*(_DWORD *)(this + 8) + v4 + 6) = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 6); *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 6) + 4) = a2; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 6) = a2; } *(_BYTE *)(*(_DWORD *)(this + 8) + v4 + 8) = 1; ++*(_WORD *)(this + 20); return *(_DWORD *)(v4 + *(_DWORD *)(this + 8)); } //----- (00486F40) -------------------------------------------------------- char __thiscall sub_486F40(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0xA0u); result = 1; } else { result = 0; } return result; } //----- (00486F80) -------------------------------------------------------- char __thiscall sub_486F80(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0xA0u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00486FD0) -------------------------------------------------------- char __thiscall sub_486FD0(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0xA0u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00487020) -------------------------------------------------------- void *__thiscall sub_487020(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B6E08; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B6E08: using guessed type int (__thiscall *off_6B6E08)(void *, char); //----- (00487060) -------------------------------------------------------- int __stdcall sub_487060(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser::icr_Apply"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004870B0) -------------------------------------------------------- int __stdcall sub_4870B0(int a1, int a2, int a3) { __int64 v3; // qax@1 unsigned int v4; // ecx@1 int v5; // eax@2 int v6; // ecx@2 __int64 v7; // kr08_8@2 unsigned int v8; // edi@3 unsigned __int64 v9; // qax@5 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; LODWORD(v3) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1076))(a1); v4 = *(_DWORD *)(a2 + 16); if ( *(_WORD *)(a2 + 24) <= 0 ) { v8 = *(_DWORD *)(a2 + 20); if ( v3 >= __PAIR__(v8, v4) ) { v9 = v3 - __PAIR__(v8, v4); v6 = v9; v5 = HIDWORD(v9); } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Apply : Minus money", 0); v6 = 0; v5 = 0; } } else { v7 = v3 + *(_QWORD *)(a2 + 16); v5 = (unsigned __int64)(v3 + *(_QWORD *)(a2 + 16)) >> 32; v6 = v7; } (*(void (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 1088))(a1, v6, v5); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1096))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004871C0) -------------------------------------------------------- int __stdcall sub_4871C0(int a1, int a2, int a3) { int v3; // eax@1 int v4; // ecx@2 unsigned int v5; // edx@3 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1084))(a1); if ( *(_WORD *)(a2 + 20) <= 0 ) { v5 = *(_DWORD *)(a2 + 16); if ( v3 >= v5 ) { v4 = v3 - v5; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Apply : Minus fame", v3 >= v5); v4 = 0; } } else { v4 = v3 + *(_DWORD *)(a2 + 16); } (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1092))(a1, v4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1100))(a1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1104))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004872C0) -------------------------------------------------------- int __stdcall sub_4872C0(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CellChangeSmall::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CellChangeSmall::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 2588))(a2 + 16); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CellChangeSmall::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487380) -------------------------------------------------------- int __stdcall sub_487380(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 128) + 16))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487450) -------------------------------------------------------- int __stdcall sub_487450(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_PointStone::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_PointStone::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1120))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_PointStone::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487500) -------------------------------------------------------- int __stdcall sub_487500(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_QuestReward::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_QuestReward::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1124))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_QuestReward::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004875B0) -------------------------------------------------------- void __stdcall sub_4875B0(int a1, int a2, int a3) { unsigned __int16 v3; // ax@8 unsigned __int16 v4; // ax@11 int v5; // ebx@14 __int16 v6; // ax@16 unsigned int v7; // eax@18 void *v8; // eax@32 int v9; // ebx@32 int v10; // eax@32 char v11; // [sp+10h] [bp-138h]@11 char v12; // [sp+11h] [bp-137h]@14 char v13; // [sp+12h] [bp-136h]@8 char v14; // [sp+13h] [bp-135h]@14 char v15; // [sp+14h] [bp-134h]@32 char v16; // [sp+C4h] [bp-84h]@14 char v17; // [sp+CCh] [bp-7Ch]@14 int v18; // [sp+134h] [bp-14h]@14 unsigned int v19; // [sp+138h] [bp-10h]@1 int v20; // [sp+144h] [bp-4h]@14 int v21; // [sp+148h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; if ( !a1 ) { sub_639100( &unk_86DDD8, (int)"InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply - shineobject null", 0); return; } if ( !a2 ) { sub_639100( &unk_86DDD8, (int)"InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply - lockedcell null", 0); return; } if ( *(_WORD *)(a2 + 26) & 0xFC00 && *(_WORD *)(a2 + 42) & 0xFC00 ) { sub_639100( &unk_86DDD8, (int)"InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply - not used guildacademyrewardstorage", 0); return; } v3 = *(_WORD *)(a2 + 24); v13 = 0; if ( v3 != -1 && *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, v3) + 106) > 1u ) v13 = 1; v4 = *(_WORD *)(a2 + 40); v11 = 0; if ( v4 != -1 && *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, v4) + 106) > 1u ) v11 = 1; sub_641100((int)&v16); v20 = 0; sub_63F850((int)&v16, (const void *)(a2 + 48)); v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v18 + 28))(&v17); v12 = 2; v14 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2164))(a1) ) v12 = 0; v6 = *(_WORD *)(a2 + 40); if ( v6 == -1 ) { if ( v13 != 1 ) { LABEL_32: v8 = off_849C18; *(_WORD *)off_849C18 = -26492; v9 = (int)((char *)v8 + 2); *((_BYTE *)v8 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v9 + 1) = *(_WORD *)(a1 + 4); *(_DWORD *)(v9 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_DWORD *)(v9 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2072))(a1); *(_BYTE *)(v9 + 11) = v12; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1388))(a1); *(_DWORD *)(v9 + 12) = *(_DWORD *)v10; *(_DWORD *)(v9 + 16) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v9 + 20) = *(_DWORD *)(v10 + 8); *(_DWORD *)(v9 + 24) = *(_DWORD *)(v10 + 12); *(_DWORD *)(v9 + 28) = *(_DWORD *)(v10 + 16); *(_BYTE *)(v9 + 32) = v14; *(_DWORD *)(v9 + 33) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v9 + 37) = *(_DWORD *)(a2 + 20); *(_DWORD *)(v9 + 41) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v9 + 45) = *(_DWORD *)(a2 + 28); *(_DWORD *)(v9 + 49) = *(_DWORD *)(a2 + 32); *(_DWORD *)(v9 + 53) = *(_DWORD *)(a2 + 36); *(_DWORD *)(v9 + 57) = *(_DWORD *)(a2 + 40); *(_DWORD *)(v9 + 61) = *(_DWORD *)(a2 + 44); memcpy((void *)(v9 + 65), (const void *)(a2 + 48), 0x6Fu); sub_5A4B40(&off_849C18, 178); memcpy(&v15, (const void *)v9, 0xB0u); sub_470A60((int)&v15); goto LABEL_33; } v7 = *(_DWORD *)(a2 + 28); if ( v5 == v7 ) { v14 = 0; goto LABEL_32; } if ( v5 < v7 ) { v14 = 2; goto LABEL_32; } } else { if ( v13 != 1 || v11 != 1 || *(_WORD *)(a2 + 24) != v6 ) goto LABEL_36; if ( v5 == *(_DWORD *)(a2 + 44) + *(_DWORD *)(a2 + 28) ) { v14 = 1; goto LABEL_32; } if ( *(_DWORD *)(a2 + 44) == *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(a2 + 40)) + 106) ) { LABEL_36: v14 = 4; goto LABEL_32; } if ( v5 == *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(a2 + 24)) + 106) ) { v14 = 3; goto LABEL_32; } } sub_639100( &unk_86DDD8, (int)"InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply - invalid Guild_AcademyRewardStorage_ChangeType", 0); LABEL_33: v20 = -1; nullsub_2(&v16); } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (004878E0) -------------------------------------------------------- int __stdcall sub_4878E0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser::icr_Reserv"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser::icr_Reserv"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser::icr_Reserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487930) -------------------------------------------------------- int __stdcall sub_487930(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a1 += *(_DWORD *)(a2 + 16) * *(_WORD *)(a2 + 24); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004879A0) -------------------------------------------------------- int __stdcall sub_4879A0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)(a1 + 4) += *(_DWORD *)(a2 + 16) * *(_WORD *)(a2 + 20); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487A10) -------------------------------------------------------- int __stdcall sub_487A10(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_DWORD *)(a2 + 16) ) *(_DWORD *)(a1 + 8) += *(_DWORD *)(a2 + 20); if ( *(_DWORD *)(a2 + 16) == 1 ) *(_DWORD *)(a1 + 12) += *(_DWORD *)(a2 + 20); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487A90) -------------------------------------------------------- void __thiscall sub_487A90(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; *(_DWORD *)this = &off_6B7314; v2 = *(void **)(this + 20); *(_DWORD *)(this + 12) = &off_6B6E08; if ( v2 ) sub_6530A4(v2); *(_DWORD *)v1 = &off_6B6D0C; } // 6B6D0C: using guessed type int (__stdcall *off_6B6D0C)(int, int); // 6B6E08: using guessed type int (__thiscall *off_6B6E08)(void *, char); // 6B7314: using guessed type int (__stdcall *off_6B7314)(int, int); //----- (00487AC0) -------------------------------------------------------- char __thiscall sub_487AC0(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 23080) = a2; return result; } //----- (00487AD0) -------------------------------------------------------- char __thiscall sub_487AD0(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(void *, unsigned int, int))(*(_DWORD *)v2 + 12))( v2, (unsigned int)*(_WORD *)a2 >> 10, *(_WORD *)a2 & 0x3FF); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487B90) -------------------------------------------------------- char __thiscall sub_487B90(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 4))(v3); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00487C50) -------------------------------------------------------- int __thiscall sub_487C50(void *this, __int16 a2, __int16 a3, __int16 a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 __int16 v8; // dx@6 __int16 v9; // cx@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_OnlyLock"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_OnlyLock"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_WORD *)v4 + 12); if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = (*(int (__stdcall **)(int))(*((_DWORD *)v4 + 3) + 8))(v5); if ( v6 ) { v7 = *(_WORD *)(v6 + 10); *(_WORD *)v6 = a2; v8 = (a3 << 10) | v7 & 0x3FF; *(_DWORD *)(v6 + 4) = off_75A61C; v9 = v8 ^ (a4 ^ v8) & 0x3FF; *(_WORD *)(v6 + 10) = v9; *(_WORD *)(v6 + 8) = v8 ^ (v8 ^ v9) & 0x3FF; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_ClearItem : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_OnlyLock"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A61C: using guessed type int (__stdcall *off_75A61C[26])(int, int, int); //----- (00487D70) -------------------------------------------------------- int __thiscall sub_487D70(void *this, __int16 a2, int a3, int a4, int a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 __int16 v8; // cx@6 v5 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ClearItem"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_ClearItem"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_WORD *)v5 + 12); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*((_DWORD *)v5 + 3) + 8))(v6); if ( v7 ) { *(_WORD *)v7 = a2; v8 = *(_WORD *)a4 >> 10; if ( v8 == 4 ) { *(_DWORD *)(v7 + 4) = off_75A644; } else { if ( v8 == 3 || v8 == 13 || v8 == 14 || v8 == 16 ) *(_DWORD *)(v7 + 4) = off_75A668; else *(_DWORD *)(v7 + 4) = off_75A628; } if ( !(*(_WORD *)a4 & 0xFC00) ) *(_DWORD *)(v7 + 4) = off_75A654; *(_WORD *)(v7 + 8) = *(_WORD *)a4; *(_WORD *)(v7 + 10) = *(_WORD *)a5; *(_DWORD *)(v7 + 16) = a3; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_ClearItem : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ClearItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A628: using guessed type int (__stdcall *off_75A628[23])(int, int, int); // 75A644: using guessed type int (__stdcall *off_75A644[16])(int, int, int); // 75A654: using guessed type int (__stdcall *off_75A654[12])(int, int, int); // 75A668: using guessed type int (__stdcall *off_75A668[7])(int, int, int); //----- (00487EC0) -------------------------------------------------------- int __thiscall sub_487EC0(void *this, __int16 a2, int a3, int a4, int a5, int a6, signed int *a7) { void *v7; // esi@1 int v8; // eax@1 int v9; // eax@2 signed int v10; // edx@7 __int16 v11; // cx@9 v7 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_CardRegist"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_CardRegist"; dword_750AB8[dword_750CB8++] = -1; v8 = *((_WORD *)v7 + 12); if ( (_WORD)v8 == -1 ) v9 = 0; else v9 = (*(int (__stdcall **)(int))(*((_DWORD *)v7 + 3) + 8))(v8); if ( v9 ) { *(_WORD *)v9 = a2; *(_DWORD *)(v9 + 16) = a3; *(_DWORD *)(v9 + 4) = off_75A674; *(_WORD *)(v9 + 20) = *(_WORD *)(a6 + 17); *(_DWORD *)(v9 + 24) = *(_DWORD *)(a6 + 20); *(_DWORD *)(v9 + 28) = *(_BYTE *)(a6 + 19); *(_DWORD *)(v9 + 32) = *(_WORD *)a4 & 0x3FF; if ( a7 ) v10 = *a7; else v10 = 128; *(_DWORD *)(v9 + 36) = v10; v11 = *(_WORD *)a4; *(_WORD *)(v9 + 10) = *(_WORD *)a4; *(_WORD *)(v9 + 8) = v11; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_CardOpen : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_CardRegist"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A674: using guessed type int (__stdcall *off_75A674[4])(int, int, int); //----- (00487FF0) -------------------------------------------------------- int __thiscall sub_487FF0(void *this, __int16 a2, int a3, const void *a4, __int16 a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 __int16 v8; // dx@6 int v10; // [sp-4h] [bp-20h]@5 v5 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_CardOpen"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_CardOpen"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_WORD *)v5 + 12); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*((_DWORD *)v5 + 3) + 8))(v6); if ( v7 ) { *(_WORD *)v7 = a2; v8 = a5 & 0x3FF | 0x2400; *(_DWORD *)(v7 + 4) = off_75A678; *(_WORD *)(v7 + 8) = v8; *(_WORD *)(v7 + 10) = v8; memcpy((void *)(v7 + 16), a4, 0x6Fu); *(_DWORD *)(v7 + 128) = a3; *(_WORD *)(v7 + 132) = v8; v10 = (int)"InventoryLocking::InventoryCellLockList::icl_CardOpen"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_CardOpen : List Full", 0); v10 = (int)"InventoryLocking::InventoryCellLockList::icl_CardOpen"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A678: using guessed type int (__stdcall *off_75A678[3])(int, int, int); //----- (00488110) -------------------------------------------------------- int __thiscall sub_488110(void *this, __int16 a2, int a3, const void *a4, int a5, int a6) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // dx@6 bool v10; // zf@9 int v11; // edx@9 int v13; // [sp-4h] [bp-20h]@5 v6 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreItem"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StoreItem"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_WORD *)v6 + 12); if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (*(int (__stdcall **)(int))(*((_DWORD *)v6 + 3) + 8))(v7); if ( v8 ) { *(_WORD *)v8 = a2; v9 = *(_WORD *)a5 >> 10; if ( v9 == 3 || v9 == 13 || v9 == 14 || (v10 = v9 == 16, v11 = (int)off_75A62C, v10) ) v11 = (int)off_75A664; *(_DWORD *)(v8 + 4) = v11; if ( (*(_WORD *)a5 & 0xFC00) == 4096 ) *(_DWORD *)(v8 + 4) = off_75A64C; if ( !(*(_WORD *)a5 & 0xFC00) ) *(_DWORD *)(v8 + 4) = off_75A658; *(_WORD *)(v8 + 8) = *(_WORD *)a5; *(_WORD *)(v8 + 10) = *(_WORD *)a6; *(_DWORD *)(v8 + 16) = a3; memcpy((void *)(v8 + 20), a4, 0x6Fu); v13 = (int)"InventoryLocking::InventoryCellLockList::icl_StoreItem"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_StoreItem : List Full", 0); v13 = (int)"InventoryLocking::InventoryCellLockList::icl_StoreItem"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A62C: using guessed type int (__stdcall *off_75A62C[22])(int, int, int); // 75A64C: using guessed type int (__stdcall *off_75A64C[14])(int, int, int); // 75A658: using guessed type int (__stdcall *off_75A658[11])(int, int, int); // 75A664: using guessed type int (__stdcall *off_75A664[8])(int, int, int); //----- (00488270) -------------------------------------------------------- int __thiscall sub_488270(void *this, __int16 a2, int a3, const void *a4, int a5, int a6) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 int v10; // [sp-4h] [bp-20h]@5 v6 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_WORD *)v6 + 12); if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (*(int (__stdcall **)(int))(*((_DWORD *)v6 + 3) + 8))(v7); if ( v8 ) { *(_WORD *)v8 = a2; *(_DWORD *)(v8 + 4) = off_75A648; *(_WORD *)(v8 + 8) = *(_WORD *)a5; *(_WORD *)(v8 + 10) = *(_WORD *)a6; *(_WORD *)(v8 + 16) = *(_WORD *)a3; memcpy((void *)(v8 + 18), a4, 0x6Fu); v10 = (int)"InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_StoreSmallItem : List Full", 0); v10 = (int)"InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A648: using guessed type int (__stdcall *off_75A648[15])(int, int, int); //----- (00488380) -------------------------------------------------------- int __thiscall sub_488380(void *this, __int16 a2, int a3, const void *a4, int a5, int a6) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 int v10; // [sp-4h] [bp-20h]@5 v6 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreFurniture"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StoreFurniture"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_WORD *)v6 + 12); if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (*(int (__stdcall **)(int))(*((_DWORD *)v6 + 3) + 8))(v7); if ( v8 ) { *(_WORD *)v8 = a2; *(_DWORD *)(v8 + 4) = off_75A664; *(_WORD *)(v8 + 8) = *(_WORD *)a5; *(_WORD *)(v8 + 10) = *(_WORD *)a6; *(_DWORD *)(v8 + 16) = a3; memcpy((void *)(v8 + 20), a4, 0x6Fu); v10 = (int)"InventoryLocking::InventoryCellLockList::icl_StoreFurniture"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_ClearItem : List Full", 0); v10 = (int)"InventoryLocking::InventoryCellLockList::icl_StoreFurniture"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A664: using guessed type int (__stdcall *off_75A664[8])(int, int, int); //----- (00488490) -------------------------------------------------------- int __thiscall sub_488490(void *this, __int16 a2, int a3, int a4, __int16 a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 __int16 v8; // dx@6 v5 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreMoney"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StoreMoney"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_WORD *)v5 + 12); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*((_DWORD *)v5 + 3) + 8))(v6); if ( v7 ) { v8 = *(_WORD *)(v7 + 10); *(_WORD *)v7 = a2; *(_WORD *)(v7 + 10) = v8 & 0x3FF | 0x4400; *(_WORD *)(v7 + 8) = *(_WORD *)(v7 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v7 + 16) = a3; *(_DWORD *)(v7 + 4) = off_75A620; *(_DWORD *)(v7 + 20) = a4; *(_WORD *)(v7 + 24) = a5; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_StoreMoney : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreMoney"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A620: using guessed type int (__stdcall *off_75A620[25])(int, int, int); //----- (004885C0) -------------------------------------------------------- int __thiscall sub_4885C0(void *this, __int16 a2, int a3, __int16 a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreFame"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StoreFame"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_WORD *)v4 + 12); if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = (*(int (__stdcall **)(int))(*((_DWORD *)v4 + 3) + 8))(v5); if ( v6 ) { v7 = *(_WORD *)(v6 + 10); *(_WORD *)v6 = a2; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = *(_WORD *)(v6 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v6 + 4) = off_75A624; *(_DWORD *)(v6 + 16) = a3; *(_WORD *)(v6 + 20) = a4; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_StoreFame : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreFame"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A624: using guessed type int (__stdcall *off_75A624[24])(int, int, int); //----- (004886E0) -------------------------------------------------------- int __thiscall sub_4886E0(void *this, __int16 a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // dx@6 v6 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_WORD *)v6 + 12); if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (*(int (__stdcall **)(int))(*((_DWORD *)v6 + 3) + 8))(v7); if ( v8 ) { v9 = *(_WORD *)(v8 + 10); *(_WORD *)v8 = a2; *(_WORD *)(v8 + 10) = v9 & 0x3FF | 0x4400; *(_WORD *)(v8 + 8) = *(_WORD *)(v8 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v8 + 16) = a3; *(_DWORD *)(v8 + 20) = a4; *(_DWORD *)(v8 + 4) = off_75A630; *(_DWORD *)(v8 + 24) = a5; *(_DWORD *)(v8 + 28) = a6; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A630: using guessed type int (__stdcall *off_75A630[21])(int, int, int); //----- (00488810) -------------------------------------------------------- int __thiscall sub_488810(void *this, __int16 a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_WORD *)v4 + 12); if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = (*(int (__stdcall **)(int))(*((_DWORD *)v4 + 3) + 8))(v5); if ( v6 ) { v7 = *(_WORD *)(v6 + 10); *(_WORD *)v6 = a2; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = *(_WORD *)(v6 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v6 + 4) = off_75A634; *(_DWORD *)(v6 + 16) = a3; *(_DWORD *)(v6 + 20) = a4; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_EquipLocation"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A634: using guessed type int (__stdcall *off_75A634[20])(int, int, int); //----- (00488930) -------------------------------------------------------- int __thiscall sub_488930(void *this, __int16 a2, const void *a3, int a4, int a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 __int16 v8; // cx@6 int v10; // [sp-4h] [bp-20h]@5 v5 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_UseItem"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_UseItem"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_WORD *)v5 + 12); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*((_DWORD *)v5 + 3) + 8))(v6); if ( v7 ) { *(_WORD *)v7 = a2; *(_DWORD *)(v7 + 4) = off_75A638; v8 = *(_WORD *)a4; *(_WORD *)(v7 + 10) = *(_WORD *)a4; *(_WORD *)(v7 + 8) = v8; memcpy((void *)(v7 + 16), a3, 0x6Fu); *(_DWORD *)(v7 + 128) = a5; v10 = (int)"InventoryLocking::InventoryCellLockList::icl_UseItem"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_UseItem : List Full", 0); v10 = (int)"InventoryLocking::InventoryCellLockList::icl_UseItem"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A638: using guessed type int (__stdcall *off_75A638[19])(int, int, int); //----- (00488A40) -------------------------------------------------------- int __thiscall sub_488A40(void *this, __int16 a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StorePointStone"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StorePointStone"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_WORD *)v4 + 12); if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = (*(int (__stdcall **)(int))(*((_DWORD *)v4 + 3) + 8))(v5); if ( v6 ) { v7 = *(_WORD *)(v6 + 10); *(_WORD *)v6 = a2; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = *(_WORD *)(v6 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v6 + 4) = off_75A63C; *(_DWORD *)(v6 + 16) = a3; *(_DWORD *)(v6 + 20) = a4; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_StorePointStone : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StorePointStone"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A63C: using guessed type int (__stdcall *off_75A63C[18])(int, int, int); //----- (00488B60) -------------------------------------------------------- int __thiscall sub_488B60(void *this, __int16 a2, int a3, int a4, char a5, char a6) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // dx@6 v6 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_QuestReward"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_QuestReward"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_WORD *)v6 + 12); if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (*(int (__stdcall **)(int))(*((_DWORD *)v6 + 3) + 8))(v7); if ( v8 ) { v9 = *(_WORD *)(v8 + 10); *(_WORD *)v8 = a2; *(_WORD *)(v8 + 10) = v9 & 0x3FF | 0x4400; *(_WORD *)(v8 + 8) = *(_WORD *)(v8 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v8 + 16) = a3; *(_DWORD *)(v8 + 20) = a4; *(_DWORD *)(v8 + 4) = off_75A640; *(_BYTE *)(v8 + 24) = a5; *(_BYTE *)(v8 + 25) = a6; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_QuestReward : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_QuestReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A640: using guessed type int (__stdcall *off_75A640[17])(int, int, int); //----- (00488C90) -------------------------------------------------------- int __stdcall sub_488C90(int a1) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLock::icl_ReservedQuantity"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLock::icl_ReservedQuantity"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLock::icl_ReservedQuantity"); return a1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00488D10) -------------------------------------------------------- int __thiscall sub_488D10(void *this, __int16 a2, const void *a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 int v7; // [sp-4h] [bp-20h]@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_WORD *)v3 + 12); if ( (_WORD)v4 == -1 ) v5 = 0; else v5 = (*(int (__stdcall **)(int))(*((_DWORD *)v3 + 3) + 8))(v4); if ( v5 ) { *(_WORD *)v5 = a2; *(_DWORD *)(v5 + 4) = off_75A66C; memcpy((void *)(v5 + 16), a3, 0x61u); v7 = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem : List Full", 0); v7 = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A66C: using guessed type int (__stdcall *off_75A66C[6])(int, int, int); //----- (00488E00) -------------------------------------------------------- int __thiscall sub_488E00(void *this, __int16 a2, int a3, int a4, __int64 a5, int a6, int a7, __int64 a8, char 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, int a31, int a32, int a33, int a34, int a35, int a36) { void *v36; // esi@1 int v37; // eax@5 int v39; // [sp-4h] [bp-24h]@3 v36 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; dword_750AB8[dword_750CB8++] = -1; if ( WORD1(a5) & 0xFC00 && WORD1(a8) & 0xFC00 ) { --dword_750CB8; v39 = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; } else { if ( *((_WORD *)v36 + 12) == -1 ) v37 = 0; else v37 = (*(int (__stdcall **)(_DWORD))(*((_DWORD *)v36 + 3) + 8))(*((_WORD *)v36 + 12)); if ( v37 ) { *(_WORD *)v37 = a2; *(_DWORD *)(v37 + 4) = off_75A660; *(_DWORD *)(v37 + 16) = a3; *(_DWORD *)(v37 + 20) = a4; *(_QWORD *)(v37 + 24) = a5; *(_DWORD *)(v37 + 32) = a6; *(_DWORD *)(v37 + 36) = a7; *(_QWORD *)(v37 + 40) = a8; memcpy((void *)(v37 + 48), &a9, 0x6Cu); *(_WORD *)(v37 + 156) = a36; *(_BYTE *)(v37 + 158) = BYTE2(a36); v39 = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem : List Full", 0); v39 = (int)"InventoryLocking::InventoryCellLockList::icl_LinktoItem"; } --dword_750CB8; } return sub_467660((int)&unk_D020420, v39); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A660: using guessed type int (__stdcall *off_75A660[9])(int, int, int); //----- (00488F40) -------------------------------------------------------- int __stdcall sub_488F40(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ebx@1 __int64 v5; // qax@1 __int64 v6; // qax@3 unsigned int v7; // ecx@4 unsigned int v8; // edi@4 int v10; // [sp+14h] [bp-14h]@2 int v11; // [sp+30h] [bp+8h]@3 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = a1; v4 = 0; LODWORD(v5) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2820))(a1); if ( *(_WORD *)(a2 + 24) <= 0 ) { v7 = *(_DWORD *)(a2 + 16); v8 = *(_DWORD *)(a2 + 20); if ( v5 >= __PAIR__(v8, v7) ) { v10 = (v5 - __PAIR__(v8, v7)) >> 32; v4 = v5 - v7; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Apply : Minus money", 0); v10 = 0; } } else { v4 = v5 + *(_DWORD *)(a2 + 16); v10 = (unsigned __int64)(v5 + *(_QWORD *)(a2 + 16)) >> 32; if ( *(_BYTE *)(a2 + 26) == 1 ) { v11 = *(_DWORD *)a1; LODWORD(v6) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2832))(v3); (*(void (__thiscall **)(int, _DWORD, _DWORD))(v11 + 2836))( v3, *(_DWORD *)(a2 + 16) + v6, (unsigned __int64)(*(_QWORD *)(a2 + 16) + v6) >> 32); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2840))(v3); } } (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 2824))(v3, v4, v10); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2828))(v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00489080) -------------------------------------------------------- int __stdcall sub_489080(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Reserv"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Reserv"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a1 += *(_DWORD *)(a2 + 16) * *(_WORD *)(a2 + 24); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CoinChange::icr_Reserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004890F0) -------------------------------------------------------- int __thiscall sub_4890F0(void *this, __int16 a2, int a3, int a4, __int16 a5, char a6) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // dx@6 v6 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreGBCoin"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_StoreGBCoin"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_WORD *)v6 + 12); if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (*(int (__stdcall **)(int))(*((_DWORD *)v6 + 3) + 8))(v7); if ( v8 ) { v9 = *(_WORD *)(v8 + 10); *(_WORD *)v8 = a2; *(_WORD *)(v8 + 10) = v9 & 0x3FF | 0x4400; *(_WORD *)(v8 + 8) = *(_WORD *)(v8 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v8 + 16) = a3; *(_DWORD *)(v8 + 20) = a4; *(_DWORD *)(v8 + 4) = off_75A670; *(_WORD *)(v8 + 24) = a5; *(_BYTE *)(v8 + 26) = a6; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_StoreMoney : List Full", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_StoreGBCoin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A670: using guessed type int (__stdcall *off_75A670[5])(int, int, int); //----- (00489220) -------------------------------------------------------- int __thiscall sub_489220(void *this, __int16 a2, int a3, int a4, const void *a5) { void *v5; // edi@1 int v6; // eax@5 __int16 v7; // dx@7 __int16 v8; // dx@7 v5 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ItemSell"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_ItemSell"; dword_750AB8[dword_750CB8++] = -1; if ( a5 && *((_DWORD *)v5 + 2) ) { if ( *((_WORD *)v5 + 12) != -1 && (v6 = (*(int (__stdcall **)(_DWORD))(*((_DWORD *)v5 + 3) + 8))(*((_WORD *)v5 + 12))) != 0 ) { v7 = *(_WORD *)(v6 + 10); *(_WORD *)v6 = a2; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; v8 = *(_WORD *)(v6 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v6 + 4) = off_75A67C; *(_WORD *)(v6 + 8) = v8; *(_DWORD *)(v6 + 16) = a3; *(_DWORD *)(v6 + 20) = a4; memcpy((void *)(v6 + 24), a5, 0x6Fu); } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_ItemSell : List Full", 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ItemSell"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A67C: using guessed type int (__stdcall *off_75A67C[2])(int, int, int); //----- (00489360) -------------------------------------------------------- int __thiscall sub_489360(void *this, __int16 a2, __int16 a3) { void *v3; // edi@1 int v4; // eax@4 __int16 v5; // dx@6 __int16 v6; // dx@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ItemRepurchase"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_ItemRepurchase"; dword_750AB8[dword_750CB8++] = -1; if ( a3 == -1 ) { --dword_750CB8; } else { if ( *((_WORD *)v3 + 12) != -1 && (v4 = (*(int (__stdcall **)(_DWORD))(*((_DWORD *)v3 + 3) + 8))(*((_WORD *)v3 + 12))) != 0 ) { v5 = *(_WORD *)(v4 + 10); *(_WORD *)v4 = a2; *(_WORD *)(v4 + 10) = v5 & 0x3FF | 0x4400; v6 = *(_WORD *)(v4 + 8) & 0x3FF | 0x4400; *(_DWORD *)(v4 + 4) = &off_75A680; *(_WORD *)(v4 + 8) = v6; *(_WORD *)(v4 + 16) = a3; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_ItemRepurchase : List Full", 0); } --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ItemRepurchase"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 75A680: using guessed type int (__stdcall **off_75A680)(int, int, int); //----- (00489480) -------------------------------------------------------- char __thiscall sub_489480(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0xA0u); result = 1; } else { result = 0; } return result; } //----- (004894C0) -------------------------------------------------------- char __thiscall sub_4894C0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); result = 1; } else { result = 0; } return result; } //----- (00489510) -------------------------------------------------------- int __thiscall sub_489510(void *this, int a2, int a3, int a4) { int v4; // esi@1 __int16 v5; // dx@1 int v6; // ebx@3 int v7; // eax@7 int v9; // [sp-4h] [bp-44h]@2 int (__stdcall **v10)(int, int); // [sp+10h] [bp-30h]@4 int v11; // [sp+14h] [bp-2Ch]@4 int (__thiscall *v12)(void *, int, int, int); // [sp+18h] [bp-28h]@4 __int16 *v13; // [sp+1Ch] [bp-24h]@4 int v14; // [sp+20h] [bp-20h]@4 __int16 v15; // [sp+24h] [bp-1Ch]@4 __int16 v16; // [sp+28h] [bp-18h]@3 int v17; // [sp+30h] [bp-10h]@1 int v18; // [sp+3Ch] [bp-4h]@1 v4 = (int)this; v17 = (int)"ItemLotAnalyser::ItemLotAnalyser::ila_Store"; sub_4675D0((int)&unk_D020420, (int)"ItemLotAnalyser::ItemLotAnalyser::ila_Store"); dword_7508B8[dword_750CB8] = (int)"ItemLotAnalyser::ItemLotAnalyser::ila_Store"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_WORD *)a2 & 0xFC00; v18 = 0; if ( v5 == 9216 ) { v6 = a4 * (*(int (__stdcall **)(int))(**(_DWORD **)(a3 + 112) + 28))(a3 + 8); v16 = *(_WORD *)(a3 + 8); if ( v16 != -1 ) { v10 = &off_6B7C60; v11 = v4; v12 = sub_486C70; v13 = &v16; v14 = 0; v15 = -1; LOBYTE(v18) = 1; sub_43C470(v4, (int)&v10); if ( v14 ) { *(_DWORD *)(v14 + 4) += v6; } else { if ( *(_WORD *)(v4 + 12) == -1 ) v7 = 0; else v7 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 4))(v4, *(_WORD *)(v4 + 12)); if ( v7 ) *(_DWORD *)(v7 + 4) = v6; else sub_639100(&unk_86DDD8, (int)"ItemLotAnalyser::ItemLotAnalyser::ila_Store : List leck", 0); } v10 = &off_6B6E50; } --dword_750CB8; v9 = (int)"ItemLotAnalyser::ItemLotAnalyser::ila_Store"; v18 = -1; } else { --dword_750CB8; v18 = -1; v9 = (int)"ItemLotAnalyser::ItemLotAnalyser::ila_Store"; } return sub_467660((int)&unk_D020420, v9); } // 6B6E50: using guessed type int (__stdcall *off_6B6E50)(int, int); // 6B7C60: using guessed type int (__stdcall *off_6B7C60)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00489680) -------------------------------------------------------- int __stdcall sub_489680(int a1, int a2, int a3) { int v3; // eax@1 signed int v4; // ebx@1 int v5; // ecx@3 unsigned int v7; // [sp-4h] [bp-98h]@1 int v8; // [sp+14h] [bp-80h]@3 int v9; // [sp+18h] [bp-7Ch]@3 __int16 v10; // [sp+1Ch] [bp-78h]@3 unsigned int v11; // [sp+84h] [bp-10h]@1 int v12; // [sp+90h] [bp-4h]@1 int v13; // [sp+94h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v7 = (unsigned int)&v13 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CellClear::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CellClear::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 16); v12 = 0; v4 = 65535; if ( v3 ) v4 = *(_WORD *)(v3 + 8); sub_489510(&dword_D554E10, a2 + 8, v3, -1); v5 = *(_DWORD *)(a2 + 16); v8 = -1; v9 = -1; v10 = -1; sub_63F850(v5, &v8); (*(void (__thiscall **)(int, int, _DWORD, int, unsigned int))(*(_DWORD *)a1 + 1540))( a1, a2 + 8, *(_DWORD *)(a2 + 16), a2 + 10, v7); if ( (_WORD)v4 != -1 ) { if ( sub_4A18B0((int)&unk_133597B0, v4) == 2 ) (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 3664))(a1); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a1 + 3668))(a1, v4); } --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CellClear::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D554E10: using guessed type int dword_D554E10; //----- (004897C0) -------------------------------------------------------- int __stdcall sub_4897C0(int a1, int a2, int a3) { int v3; // eax@1 signed int v5; // [sp+14h] [bp-10h]@1 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CellChange::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CellChange::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 16); v5 = 65535; if ( v3 ) v5 = *(_WORD *)(v3 + 8); sub_489510(&dword_D554E10, a2 + 8, v3, -1); sub_63F850(*(_DWORD *)(a2 + 16), (const void *)(a2 + 20)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1540))( a1, a2 + 8, *(_DWORD *)(a2 + 16), a2 + 10); sub_489510(&dword_D554E10, a2 + 8, *(_DWORD *)(a2 + 16), 1); if ( (_WORD)v5 != -1 ) { if ( (*(_WORD *)(a2 + 8) & 0xFC00) == 8192 && sub_4A18B0((int)&unk_133597B0, v5) == 2 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 3664))(a1); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 3668))(a1, v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CellChange::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D554E10: using guessed type int dword_D554E10; //----- (00489900) -------------------------------------------------------- int __thiscall sub_489900(void *this, int a2, int a3, int a4) { char v4; // bl@1 char v5; // al@1 char v6; // bl@1 void *v7; // eax@3 __int16 v8; // ax@3 int v9; // eax@3 void *v10; // ecx@5 void *v11; // eax@8 __int16 v12; // ax@9 int v13; // edi@9 int v14; // eax@12 int v15; // eax@14 int v16; // eax@16 int v17; // ebx@16 int v18; // eax@18 int v19; // eax@19 int v20; // edx@22 __int16 v21; // ax@22 void *v22; // eax@24 __int16 v23; // ax@25 int v24; // ebx@25 __int16 v25; // ax@28 int v26; // eax@28 char v28; // [sp+Ch] [bp-C8h]@24 int v29; // [sp+18h] [bp-BCh]@1 void *v30; // [sp+1Ch] [bp-B8h]@1 char v31; // [sp+20h] [bp-B4h]@3 char v32; // [sp+2Fh] [bp-A5h]@1 char v33; // [sp+30h] [bp-A4h]@14 int v34; // [sp+38h] [bp-9Ch]@15 __int16 v35; // [sp+9Ch] [bp-38h]@14 char v36; // [sp+9Eh] [bp-36h]@14 char v37; // [sp+A0h] [bp-34h]@22 int v38; // [sp+A4h] [bp-30h]@22 unsigned int v39; // [sp+A8h] [bp-2Ch]@22 int v40; // [sp+ACh] [bp-28h]@22 int v41; // [sp+B0h] [bp-24h]@22 char v42; // [sp+B4h] [bp-20h]@22 unsigned int v43; // [sp+C4h] [bp-10h]@1 int v44; // [sp+D0h] [bp-4h]@1 int v45; // [sp+D4h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v30 = this; v29 = (int)"InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply"; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_BYTE *)(*(_DWORD *)(a3 + 16) + 10); v5 = *(_BYTE *)(a3 + 30) & 1; v44 = 0; v6 = v4 & 1; v32 = v5; sub_4897C0(a2, a3, a4); if ( v6 == 1 ) { if ( v32 != 1 ) { if ( v32 ) { LABEL_32: --dword_750CB8; goto LABEL_33; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 35, 38, 4545); v22 = off_849C18; *(_WORD *)off_849C18 = -29657; *(_WORD *)((char *)v22 + 3) = *(_WORD *)(*(_DWORD *)(a3 + 16) + 11); *((_BYTE *)v22 + 2) = 1; sub_4287B0(&v28, &off_849C18, 5); LOBYTE(v44) = 3; sub_549B60((void *)a2, (int)&v28, 1); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 304))(a2) ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 312))(a2); v24 = sub_54DE90(&unk_13253630, v23); if ( v24 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v24 + 500))( v24, **(_DWORD **)(a3 + 16), *(_DWORD *)(*(_DWORD *)(a3 + 16) + 4)) == 1 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v24 + 668))(v24); (*(void (__thiscall **)(int))(*(_DWORD *)v24 + 444))(v24); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v24 + 496))(v24, 0, -1, -1); } } } v25 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 312))(a2); v26 = sub_54DE90(&unk_13253630, v25); if ( v26 ) (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v26 + 736))( v26, *(_WORD *)(*(_DWORD *)(a3 + 16) + 11), a2); v10 = &v28; LABEL_31: LOBYTE(v44) = 0; sub_428A70(v10); goto LABEL_32; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 35, 32, 4545); v7 = off_849C18; *(_WORD *)off_849C18 = -29663; *((_BYTE *)v7 + 2) = 1; *(_WORD *)((char *)v7 + 3) = *(_WORD *)(*(_DWORD *)(a3 + 16) + 11); *(float *)((char *)v7 + 5) = *(float *)(*(_DWORD *)(a3 + 16) + 17); *(float *)((char *)v7 + 9) = *(float *)(*(_DWORD *)(a3 + 16) + 21); *(float *)((char *)v7 + 13) = *(float *)(*(_DWORD *)(a3 + 16) + 25); *(float *)((char *)v7 + 17) = *(float *)(*(_DWORD *)(a3 + 16) + 29); sub_4287B0(&v31, &off_849C18, 21); LOBYTE(v44) = 1; sub_549B60((void *)a2, (int)&v31, 1); v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 312))(a2); v9 = sub_54DE90(&unk_13253630, v8); if ( v9 ) (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v9 + 736))(v9, *(_WORD *)(*(_DWORD *)(a3 + 16) + 11), a2); LABEL_5: v10 = &v31; goto LABEL_31; } if ( v6 || v32 != 1 ) goto LABEL_32; (*(void (__thiscall **)(_DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)a2 + 776))(a2, 35, 35, 4545); v11 = off_849C18; *(_WORD *)off_849C18 = -29660; *((_BYTE *)v11 + 2) = 1; *(_WORD *)((char *)v11 + 3) = *(_WORD *)(*(_DWORD *)(a3 + 16) + 11); *(_WORD *)((char *)v11 + 5) = *(_WORD *)(*(_DWORD *)(a3 + 16) + 8); *(float *)((char *)v11 + 7) = *(float *)(*(_DWORD *)(a3 + 16) + 17); *(float *)((char *)v11 + 11) = *(float *)(*(_DWORD *)(a3 + 16) + 21); *(float *)((char *)v11 + 15) = *(float *)(*(_DWORD *)(a3 + 16) + 25); *(float *)((char *)v11 + 19) = *(float *)(*(_DWORD *)(a3 + 16) + 29); *((_BYTE *)v11 + 23) = *(_BYTE *)(*(_DWORD *)(a3 + 16) + 37); sub_4287B0(&v31, &off_849C18, 24); LOBYTE(v44) = 2; sub_549B60((void *)a2, (int)&v31, 1); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 304))(a2) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 312))(a2); v13 = sub_54DE90(&unk_13253630, v12); if ( v13 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v13 + 492))( v13, **(_DWORD **)(a3 + 16), *(_DWORD *)(*(_DWORD *)(a3 + 16) + 4)) == 1 ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v13 + 448))(v13, *(_DWORD *)(a3 + 16)); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v13 + 488))(v13, 0, -1, -1); } } } v14 = *(_DWORD *)(a3 + 16); if ( v14 ) { memcpy(&v33, (const void *)v14, 0x6Cu); v35 = *(_WORD *)(v14 + 108); v36 = *(_BYTE *)(v14 + 110); v15 = *(_DWORD *)(v14 + 112); if ( v15 ) { if ( BYTE2(v34) & 1 ) { v16 = (*(int (__thiscall **)(int, int *))(*(_DWORD *)v15 + 52))(v15, &v34); v17 = v16; if ( v16 ) { if ( !*(_BYTE *)v16 ) { v18 = sub_541630((int)&dword_AA07C0, v34); if ( v18 ) { v19 = *(_DWORD *)(v18 + 4); if ( v19 ) { if ( *(_WORD *)(v19 + 141) ) { memcpy(&v37, &unk_AA0BCC, 0x24u); v39 = *(_WORD *)(v19 + 141) + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); _LN52(&v37); v20 = v39 & 0x3F | (v38 << 6); v21 = v41; *(_BYTE *)v17 = v42 - 100; *(_DWORD *)v17 = *(_BYTE *)v17 | ((v21 + 1) << 8) & 0x1F00 | ((v40 & 0x3F | (v20 << 6)) << 13); v10 = &v31; } else { *(_DWORD *)v17 = 1992027391; v10 = &v31; } goto LABEL_31; } } } } goto LABEL_5; } } } LOBYTE(v44) = 0; sub_428A70(&v31); --dword_750CB8; LABEL_33: v44 = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA07C0: using guessed type int dword_AA07C0; // AA0BC8: using guessed type int dword_AA0BC8; //----- (00489E00) -------------------------------------------------------- int __stdcall sub_489E00(int a1, int a2, int a3) { __int16 v3; // dx@1 void *v4; // eax@2 char v6; // [sp+10h] [bp-1Ch]@2 int v7; // [sp+1Ch] [bp-10h]@1 int v8; // [sp+28h] [bp-4h]@1 v7 = (int)"InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply"; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 10); v8 = 0; if ( v3 == *(_WORD *)(a2 + 8) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a1 + 776))(a1, 35, 38, 4545); v4 = off_849C18; *(_WORD *)off_849C18 = -29657; *(_WORD *)((char *)v4 + 3) = *(_WORD *)(*(_DWORD *)(a2 + 16) + 11); *((_BYTE *)v4 + 2) = 1; sub_4287B0(&v6, &off_849C18, 5); LOBYTE(v8) = 1; sub_549B60((void *)a1, (int)&v6, 1); LOBYTE(v8) = 0; sub_428A70(&v6); } sub_489680(a1, a2, a3); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00489F20) -------------------------------------------------------- int __stdcall sub_489F20(int a1, int a2, int a3) { int v3; // edi@1 int v4; // ST18_4@1 __int16 v5; // ST20_2@1 void *v6; // esi@1 int v7; // eax@1 char v9; // [sp+18h] [bp-30h]@1 unsigned int v10; // [sp+44h] [bp-4h]@1 int v11; // [sp+48h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v3 = a1; v4 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(a2 + 16) + 112) + 28))(*(_DWORD *)(a2 + 16) + 8); v5 = *(_WORD *)(*(_DWORD *)(a2 + 16) + 8); sub_489680(a1, a2, a3); v6 = off_849C18; *(_WORD *)off_849C18 = 29843; v6 = (char *)v6 + 2; *(_BYTE *)v6 = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v6 + 1) = *(_WORD *)(a1 + 4); *(_DWORD *)((char *)v6 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)((char *)v6 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2072))(v3); *((_BYTE *)v6 + 11) = 0; *((_BYTE *)v6 + 13) = 0; *((_BYTE *)v6 + 12) = *(_BYTE *)(a2 + 8); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); *(_DWORD *)((char *)v6 + 14) = *(_DWORD *)v7; *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v6 + 22) = *(_DWORD *)(v7 + 8); *(_DWORD *)((char *)v6 + 26) = *(_DWORD *)(v7 + 12); *(_DWORD *)((char *)v6 + 30) = *(_DWORD *)(v7 + 16); *((_WORD *)v6 + 17) = v5; *((_DWORD *)v6 + 9) = v4; *((_DWORD *)v6 + 10) = 0; sub_5A4B40(&off_849C18, 46); memcpy(&v9, v6, 0x2Cu); return sub_4740B0((int)&v9); } // 86FEB8: using guessed type int __security_cookie; //----- (0048A040) -------------------------------------------------------- char __stdcall sub_48A040(int a1, int a2, int a3) { int v3; // eax@2 int v4; // ST08_4@4 int v5; // eax@4 int v6; // esi@4 int v7; // eax@5 void *v8; // eax@6 int v9; // ecx@7 int v10; // eax@8 int v11; // eax@9 int v12; // edx@9 int v13; // ecx@9 int v14; // eax@10 void *v15; // eax@14 void *v16; // esi@17 int v17; // esi@17 bool v18; // al@19 int v19; // eax@21 int v20; // edi@21 __int64 v21; // kr00_8@21 int v22; // edx@21 bool v23; // zf@21 unsigned __int64 v24; // kr08_8@22 int v26; // [sp-4h] [bp-54h]@9 unsigned int v27; // [sp+Ch] [bp-44h]@14 __int64 v28; // [sp+14h] [bp-3Ch]@14 bool v29; // [sp+1Fh] [bp-31h]@15 char v30; // [sp+20h] [bp-30h]@23 unsigned int v31; // [sp+4Ch] [bp-4h]@1 int v32; // [sp+50h] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; if ( (*(_WORD *)(a2 + 8) & 0xFC00) != 4096 ) { v14 = *(_DWORD *)(a2 + 16); if ( *(_WORD *)(v14 + 8) == -1 ) { v10 = 0; goto LABEL_14; } v13 = *(_DWORD *)(v14 + 112); v12 = *(_DWORD *)v13; v26 = v14 + 8; LABEL_13: v10 = (*(int (__thiscall **)(int, int))(v12 + 28))(v13, v26); goto LABEL_14; } v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2096))(a1); if ( !v3 || (v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2096))(a1), *(_WORD *)v3 == -1) || (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2096))(a1), v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2072))(a1), v3 = sub_4744E0(&dword_D41F888, v5, v4), (v6 = v3) == 0) || (v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2072))(a1), LOBYTE(v3) = sub_473A40(v6, v7), !(_BYTE)v3) || (v8 = sub_5CF620((void *)v6), (v3 = (**(int (__thiscall ***)(void *, int))v8)(v8, *(_WORD *)(a2 + 8) & 0x3FF)) == 0) ) return v3; v9 = v3 + 8; if ( *(_WORD *)(v3 + 8) != -1 ) { v11 = *(_DWORD *)(v3 + 112); v12 = *(_DWORD *)v11; v26 = v9; v13 = v11; goto LABEL_13; } v10 = 0; LABEL_14: v28 = (unsigned int)v10; sub_4897C0(a1, a2, a3); v27 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(a2 + 16) + 112) + 28))(*(_DWORD *)(a2 + 16) + 8); v15 = sub_63ACA0(dword_1508B168, *(_WORD *)(*(_DWORD *)(a2 + 16) + 8)); if ( v15 ) v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 24))(v15) != 0; else v29 = 1; v16 = off_849C18; *(_WORD *)off_849C18 = 29843; v17 = (int)((char *)v16 + 2); *(_BYTE *)v17 = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v17 + 1) = *(_WORD *)(a1 + 4); *(_DWORD *)(v17 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_DWORD *)(v17 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2072))(a1); *(_BYTE *)(v17 + 11) = 1; v18 = (unsigned int)v28 < v27; *(_BYTE *)(v17 + 13) = v18; *(_BYTE *)(v17 + 11) = v29; *(_BYTE *)(v17 + 12) = *(_BYTE *)(a2 + 8); v19 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1388))(a1); v20 = v27; *(_DWORD *)(v17 + 14) = *(_DWORD *)v19; *(_DWORD *)(v17 + 18) = *(_DWORD *)(v19 + 4); *(_DWORD *)(v17 + 22) = *(_DWORD *)(v19 + 8); *(_DWORD *)(v17 + 26) = *(_DWORD *)(v19 + 12); *(_DWORD *)(v17 + 30) = *(_DWORD *)(v19 + 16); v22 = 0; v21 = v28 - v27; v23 = *(_BYTE *)(v17 + 13) == 1; *(_QWORD *)(v17 + 36) = v21; if ( !v23 ) { v24 = v28 - v27; v22 = v24 >> 32; v20 = v24; } *(_DWORD *)(v17 + 36) = v20; *(_DWORD *)(v17 + 40) = v22; *(_WORD *)(v17 + 34) = *(_WORD *)(*(_DWORD *)(a2 + 16) + 8); sub_5A4B40(&off_849C18, 46); memcpy(&v30, (const void *)v17, 0x2Cu); LOBYTE(v3) = sub_4740B0((int)&v30); return v3; } // 86FEB8: using guessed type int __security_cookie; // D41F888: using guessed type int dword_D41F888; //----- (0048A2B0) -------------------------------------------------------- int __stdcall sub_48A2B0(int a1, int a2, int a3) { return sub_489680(a1, a2, a3); } //----- (0048A2C0) -------------------------------------------------------- int __stdcall sub_48A2C0(int a1, int a2, int a3) { return sub_4897C0(a1, a2, a3); } //----- (0048A2D0) -------------------------------------------------------- char __thiscall sub_48A2D0(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@3 unsigned __int16 v5; // cx@4 int v6; // edx@4 int v7; // ebx@4 unsigned __int16 v8; // di@4 int v9; // eax@6 unsigned __int16 v10; // si@6 int v11; // ecx@8 int v12; // ecx@13 int v13; // ecx@19 bool v14; // zf@21 int v15; // eax@23 int v16; // eax@23 int v17; // eax@24 unsigned __int16 v18; // [sp+14h] [bp-10h]@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"; dword_750AB8[dword_750CB8++] = -1; if ( *((_BYTE *)v3 + 23080) ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 1; } else { v5 = *((_WORD *)v3 + 8); v6 = *((_DWORD *)v3 + 5); v7 = a2; v8 = *(_WORD *)(v6 + 12 * *((_WORD *)v3 + 13) + 4); v18 = *((_WORD *)v3 + 8); while ( v8 < v5 ) { v9 = v8; v10 = v8; v8 = *(_WORD *)(v6 + 12 * v8 + 4); if ( v10 < v5 && *(_BYTE *)(v6 + 12 * v9 + 8) ) v11 = *(_DWORD *)(v6 + 12 * v9); else v11 = 0; if ( (unsigned int)*(_WORD *)(v11 + 8) >> 10 == v7 ) { if ( v10 < v18 && *(_BYTE *)(v6 + 12 * v9 + 8) ) v12 = *(_DWORD *)(v6 + 12 * v9); else v12 = 0; if ( (*(_WORD *)(v12 + 8) & 0x3FF) == a3 ) { LABEL_27: --dword_750CB8; goto LABEL_3; } v7 = a2; } if ( v10 < v18 && *(_BYTE *)(v6 + 12 * v9 + 8) ) v13 = *(_DWORD *)(v6 + 12 * v9); else v13 = 0; v14 = (unsigned int)*(_WORD *)(v13 + 10) >> 10 == v7; v5 = v18; if ( v14 ) { if ( v10 >= v18 || (v15 = 3 * v9, v14 = *(_BYTE *)(v6 + 4 * v15 + 8) == 0, v16 = v6 + 4 * v15, v14) ) v17 = 0; else v17 = *(_DWORD *)v16; if ( (*(_WORD *)(v17 + 10) & 0x3FF) == a3 ) goto LABEL_27; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048A490) -------------------------------------------------------- char __thiscall sub_48A490(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 char result; // al@2 int v6; // edx@3 unsigned __int16 v7; // di@3 int v8; // eax@3 int v9; // ecx@8 int v10; // ecx@13 int v11; // ecx@18 int v12; // ecx@23 int v13; // eax@27 bool v14; // zf@27 int v15; // eax@27 int v16; // eax@28 __int16 v17; // [sp+12h] [bp-16h]@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"; dword_750AB8[dword_750CB8++] = -1; if ( *((_BYTE *)v4 + 23080) ) { LABEL_2: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 1; } else { v6 = *((_DWORD *)v4 + 5); v7 = *((_WORD *)v4 + 8); LOWORD(v8) = *(_WORD *)(v6 + 12 * *((_WORD *)v4 + 13) + 4); while ( (unsigned __int16)v8 < v7 ) { v8 = (unsigned __int16)v8; v17 = *(_WORD *)(v6 + 12 * (unsigned __int16)v8 + 4); if ( (unsigned __int16)v8 < v7 && *(_BYTE *)(v6 + 12 * v8 + 8) ) v9 = *(_DWORD *)(v6 + 12 * v8); else v9 = 0; if ( *(_WORD *)v9 != a4 ) { v10 = (unsigned __int16)v8 < v7 && *(_BYTE *)(v6 + 12 * v8 + 8) ? *(_DWORD *)(v6 + 12 * v8) : 0; if ( (unsigned int)*(_WORD *)(v10 + 8) >> 10 == a2 && ((unsigned __int16)v8 >= v7 || !*(_BYTE *)(v6 + 12 * v8 + 8) ? (v11 = 0) : (v11 = *(_DWORD *)(v6 + 12 * v8)), (*(_WORD *)(v11 + 8) & 0x3FF) == a3) || ((unsigned __int16)v8 >= v7 || !*(_BYTE *)(v6 + 12 * v8 + 8) ? (v12 = 0) : (v12 = *(_DWORD *)(v6 + 12 * v8)), (unsigned int)*(_WORD *)(v12 + 10) >> 10 == a2 && ((unsigned __int16)v8 >= v7 || (v13 = 3 * v8, v14 = *(_BYTE *)(v6 + 4 * v13 + 8) == 0, v15 = v6 + 4 * v13, v14) ? (v16 = 0) : (v16 = *(_DWORD *)v15), (*(_WORD *)(v16 + 10) & 0x3FF) == a3)) ) goto LABEL_2; } LOWORD(v8) = v17; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048A660) -------------------------------------------------------- int __thiscall sub_48A660(void *this, __int16 a2) { void *v2; // esi@1 unsigned __int16 v3; // di@1 unsigned __int16 v4; // bx@2 int v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // dx@3 int v8; // edx@5 int v9; // eax@9 bool v10; // zf@9 int v11; // ecx@9 int v12; // ecx@10 int v14; // [sp+10h] [bp-20h]@3 void *v15; // [sp+20h] [bp-10h]@1 v2 = this; v15 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Free"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_Free"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 5) + 12 * *((_WORD *)v2 + 13) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 8); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 5); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); LOWORD(v14) = v7; HIWORD(v14) = v3; if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; if ( *(_WORD *)v8 == a2 ) { if ( (unsigned __int16)v14 >= *((_WORD *)v2 + 8) || (v9 = 3 * v6, v10 = *(_BYTE *)(v5 + 4 * v9 + 8) == 0, v11 = v5 + 4 * v9, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(v12 + 4) + 12))(*((_DWORD *)v15 + 2)); (*(void (__thiscall **)(char *, int))(*((_DWORD *)v2 + 3) + 12))((char *)v2 + 12, v14); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Free"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048A790) -------------------------------------------------------- int __thiscall sub_48A790(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edx@1 int v5; // ecx@1 unsigned __int16 v6; // si@1 unsigned __int16 v7; // di@2 int v8; // eax@3 unsigned __int16 v9; // bx@3 int v10; // edi@5 int v11; // eax@9 bool v12; // zf@9 int v13; // eax@9 int v14; // eax@10 int v16; // [sp+10h] [bp-1Ch]@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Free"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_Free"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 5); v5 = (int)((char *)v3 + 12); v6 = *(_WORD *)(v4 + 12 * *((_WORD *)v3 + 13) + 4); while ( 1 ) { v7 = *(_WORD *)(v5 + 4); if ( v6 >= v7 ) break; v8 = v6; v9 = v6; v6 = *(_WORD *)(v4 + 12 * v6 + 4); LOWORD(v16) = v9; if ( v9 < v7 && *(_BYTE *)(v4 + 12 * v8 + 8) ) v10 = *(_DWORD *)(v4 + 12 * v8); else v10 = 0; if ( (unsigned int)*(_WORD *)(v10 + 8) >> 10 == a2 ) { if ( v9 >= *(_WORD *)(v5 + 4) || (v11 = 3 * v8, v12 = *(_BYTE *)(v4 + 4 * v11 + 8) == 0, v13 = v4 + 4 * v11, v12) ) v14 = 0; else v14 = *(_DWORD *)v13; if ( (*(_WORD *)(v14 + 8) & 0x3FF) == a3 ) { HIWORD(v16) = v6; (*(void (__stdcall **)(int))(*(_DWORD *)v5 + 12))(v16); goto LABEL_15; } } } sub_639100( &unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_Free : No Releaser Free - LockIndex maybe wrong", 0); LABEL_15: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Free"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048A8D0) -------------------------------------------------------- char __thiscall sub_48A8D0(int this) { int v1; // ebx@1 char result; // al@2 unsigned __int16 v3; // si@3 int v4; // ecx@5 int v5; // eax@5 bool v6; // zf@5 int v7; // eax@5 int v8; // eax@6 v1 = this; if ( *(_BYTE *)(this + 23080) ) { result = 1; } else { v3 = *(_WORD *)(*(_DWORD *)(this + 20) + 12 * *(_WORD *)(this + 26) + 4); while ( v3 < *(_WORD *)(v1 + 16) ) { v4 = *(_DWORD *)(v1 + 20); v5 = v3; v3 = *(_WORD *)(v4 + 12 * v3 + 4); v6 = *(_BYTE *)(v4 + 12 * v5 + 8) == 0; v7 = v4 + 12 * v5; if ( v6 ) v8 = 0; else v8 = *(_DWORD *)v7; if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v8 + 4) + 8))() ) return 1; } result = 0; } return result; } //----- (0048A940) -------------------------------------------------------- bool __thiscall sub_48A940(int this) { bool result; // al@2 if ( *(_BYTE *)(this + 23080) ) result = 1; else result = *(_WORD *)(*(_DWORD *)(this + 20) + 12 * *(_WORD *)(this + 26) + 4) < *(_WORD *)(this + 16); return result; } //----- (0048A970) -------------------------------------------------------- int __thiscall sub_48A970(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 unsigned __int16 v4; // di@1 unsigned __int16 v5; // cx@2 int v6; // edx@3 int v7; // eax@3 unsigned __int16 v8; // bx@3 int v9; // ecx@5 int v10; // eax@8 bool v11; // zf@8 int v12; // edx@8 int v14; // [sp+14h] [bp-10h]@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ReservedQuantity"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_ReservedQuantity"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; sub_488C90(a2); v4 = *(_WORD *)(*((_DWORD *)v2 + 5) + 12 * *((_WORD *)v2 + 13) + 4); while ( 1 ) { v5 = *((_WORD *)v2 + 8); if ( v4 >= v5 ) break; v6 = *((_DWORD *)v2 + 5); v7 = v4; v8 = v4; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( v8 < v5 && *(_BYTE *)(v6 + 12 * v7 + 8) ) v9 = *(_DWORD *)(v6 + 12 * v7); else v9 = 0; v14 = *(_DWORD *)(v9 + 4); if ( v8 >= *((_WORD *)v2 + 8) || (v10 = 3 * v7, v11 = *(_BYTE *)(v6 + 4 * v10 + 8) == 0, v12 = v6 + 4 * v10, v11) ) { v3 = a2; (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v14 + 4))(a2, 0); } else { v3 = a2; (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v14 + 4))(a2, *(_DWORD *)v12); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_ReservedQuantity"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048AAA0) -------------------------------------------------------- int __stdcall sub_48AAA0(int a1, int a2, int a3) { __int16 v3; // bx@1 int v4; // ST30_4@1 int v5; // ST0C_4@1 int v6; // ST28_4@1 void *v7; // eax@1 int v8; // eax@3 int v10; // [sp+38h] [bp+Ch]@1 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CardRegist::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CardRegist::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 20); v4 = *(_DWORD *)(a2 + 24); v5 = a2; v6 = *(_DWORD *)(a2 + 32); v10 = *(_DWORD *)(a2 + 28); sub_489680(a1, v5, a3); v7 = off_849C18; *(_WORD *)off_849C18 = -15349; *(_DWORD *)((char *)v7 + 6) = v4; *((_BYTE *)v7 + 2) = v6; *((_WORD *)v7 + 5) = 11152; *(_WORD *)((char *)v7 + 3) = v3; *((_BYTE *)v7 + 5) = v10; if ( sub_4C81E0(&off_849C18, 12) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen : Packet Too Long", 12); } (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 3084))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CardRegist::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048ABF0) -------------------------------------------------------- int __thiscall sub_48ABF0(void *this, int a2, int a3, int a4) { int v4; // edx@1 void *v5; // eax@1 int v6; // eax@3 char v8; // [sp+10h] [bp-84h]@1 __int16 v9; // [sp+7Ch] [bp-18h]@1 char v10; // [sp+7Eh] [bp-16h]@1 int v11; // [sp+80h] [bp-14h]@1 void *v12; // [sp+84h] [bp-10h]@1 int v13; // [sp+90h] [bp-4h]@1 v12 = this; v11 = (int)"InventoryLocking::InvenCellReleaser_CardOpen::icr_Apply"; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CardOpen::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_CardOpen::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a3 + 128); memcpy(&v8, (const void *)(a3 + 16), 0x6Cu); v9 = *(_WORD *)(a3 + 124); v10 = *(_BYTE *)(a3 + 126); memcpy((void *)(a3 + 20), &v8, 0x6Cu); *(_WORD *)(a3 + 128) = v9; v13 = 0; *(_DWORD *)(a3 + 16) = v4; *(_BYTE *)(a3 + 130) = v10; sub_4897C0(a2, a3, a4); v5 = off_849C18; *(_WORD *)off_849C18 = -15353; *((_BYTE *)v5 + 4) = *(_BYTE *)(a3 + 132); *((_WORD *)v5 + 1) = 11136; memcpy((char *)v5 + 5, (const void *)(a3 + 24), 0x67u); if ( sub_4C81E0(&off_849C18, 108) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen : Packet Too Long", 108); } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_CardOpen::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048AD40) -------------------------------------------------------- int __stdcall sub_48AD40(int a1, int a2, int a3) { int v3; // eax@2 char v4; // al@5 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_LinkInfo::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_LinkInfo::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) { v3 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v3 ) { while ( (_UNKNOWN *)v3 != &unk_132541F4 ) { v3 = *(_DWORD *)(v3 + 4); if ( !v3 ) goto LABEL_5; } v4 = 1; } else { LABEL_5: v4 = 0; } if ( v4 != 0 ? a1 : 0 ) (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 != 0 ? a1 : 0) + 1536))(a2 + 16, 6, 9, 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_LinkInfo::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048AE30) -------------------------------------------------------- char __thiscall sub_48AE30(int this) { int v1; // eax@1 signed int v2; // edx@1 int v3; // eax@3 int v4; // esi@3 int v5; // eax@3 int (__stdcall **v7)(int, int); // [sp+10h] [bp-14h]@3 int v8; // [sp+14h] [bp-10h]@3 int v9; // [sp+20h] [bp-4h]@3 v1 = 0; v2 = 0; if ( *(_WORD *)(this + 4) > 0u ) { do { *(_WORD *)(*(_DWORD *)(this + 8) + v1 + 6) = v2 - 1; *(_WORD *)(*(_DWORD *)(this + 8) + v1 + 4) = v2 + 1; *(_BYTE *)(*(_DWORD *)(this + 8) + v1 + 8) = 0; ++v2; v1 += 12; } while ( v2 < *(_WORD *)(this + 4) ); } *(_WORD *)(*(_DWORD *)(this + 8) + 6) = *(_WORD *)(this + 4) - 1; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4) - 8) = 0; v3 = *(_WORD *)(this + 4); v4 = *(_DWORD *)(this + 8); *(_WORD *)(this + 12) = 0; *(_WORD *)(this + 14) = v3; *(_WORD *)(v4 + 12 * v3 + 6) = v3; v5 = *(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4); *(_WORD *)(v5 + 4) = *(_WORD *)(v5 + 6); *(_DWORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4)) = 0; *(_BYTE *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4) + 8) = 1; *(_WORD *)(this + 20) = 0; v7 = &off_6A8F9C; v8 = this; v9 = 0; return sub_43C470(this, (int)&v7); } // 6A8F9C: using guessed type int (__stdcall *off_6A8F9C)(int, int); //----- (0048AF30) -------------------------------------------------------- char __thiscall sub_48AF30(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6A8F9C; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6A8F9C: using guessed type int (__stdcall *off_6A8F9C)(int, int); //----- (0048B0B0) -------------------------------------------------------- char __thiscall sub_48B0B0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B7C68; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B7C68: using guessed type int (__stdcall *off_6B7C68)(int, int); //----- (0048B230) -------------------------------------------------------- bool __thiscall sub_48B230(void *this, int a2, __int16 a3, int a4) { void *v4; // ebx@1 int v5; // edx@1 int v6; // ebx@1 int v7; // eax@1 unsigned __int16 v8; // dx@3 int v9; // ecx@4 int v10; // edx@6 int v11; // eax@10 bool v12; // zf@10 int v13; // eax@10 const void *v14; // esi@11 void (__thiscall *v15)(_DWORD, _DWORD); // edx@13 int v16; // ecx@16 unsigned __int16 v17; // di@16 int v18; // eax@18 unsigned __int16 v19; // si@18 int v20; // edx@20 int v21; // eax@23 int v22; // eax@23 int v23; // eax@24 int v25; // [sp+10h] [bp-C8h]@4 int (__stdcall **v26)(int, int); // [sp+20h] [bp-B8h]@1 int v27; // [sp+24h] [bp-B4h]@1 char v28; // [sp+28h] [bp-B0h]@13 int v29; // [sp+2Ch] [bp-ACh]@13 unsigned int v30; // [sp+C8h] [bp-10h]@1 int v31; // [sp+D4h] [bp-4h]@1 int v32; // [sp+D8h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; v26 = &off_6B7C68; v27 = (int)&dword_D554E10; LOBYTE(v31) = 1; sub_43C470((int)&dword_D554E10, (int)&v26); v7 = *((_WORD *)v4 + 13); v5 = *((_DWORD *)v4 + 5); v6 = (int)((char *)v4 + 12); LOWORD(v7) = *(_WORD *)(v5 + 12 * v7 + 4); LOBYTE(v31) = 0; v27 = 0; while ( 1 ) { v8 = *(_WORD *)(v6 + 4); if ( (unsigned __int16)v7 >= v8 ) break; v9 = *(_DWORD *)(v6 + 8); v7 = (unsigned __int16)v7; LOWORD(v25) = v7; HIWORD(v25) = *(_WORD *)(v9 + 12 * (unsigned __int16)v7 + 4); if ( (unsigned __int16)v7 < v8 && *(_BYTE *)(v9 + 12 * v7 + 8) ) v10 = *(_DWORD *)(v9 + 12 * v7); else v10 = 0; if ( *(_WORD *)v10 == a3 ) { if ( (unsigned __int16)v7 >= *(_WORD *)(v6 + 4) || (v11 = 3 * v7, v12 = *(_BYTE *)(v9 + 4 * v11 + 8) == 0, v13 = v9 + 4 * v11, v12) ) v14 = 0; else v14 = *(const void **)v13; v15 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 12); memcpy(&v28, v14, 0xA0u); v15(v6, v25); (**(void (__stdcall ***)(int, char *, int))v29)(a2, &v28, a4); ++v27; } LOWORD(v7) = HIWORD(v25); } if ( v27 <= 0 ) sub_639100( &unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free : No Releaser apply - LockIndex maybe wrong", v27); v16 = dword_D554E18; v17 = *(_WORD *)(dword_D554E18 + 12 * (unsigned __int16)word_D554E1E + 4); while ( v17 < word_D554E14 ) { v18 = v17; v19 = v17; v17 = *(_WORD *)(v16 + 12 * v17 + 4); if ( v19 < word_D554E14 && *(_BYTE *)(v16 + 12 * v18 + 8) ) v20 = *(_DWORD *)(v16 + 12 * v18); else v20 = 0; if ( v19 >= word_D554E14 || (v21 = 3 * v18, v12 = *(_BYTE *)(v16 + 4 * v21 + 8) == 0, v22 = v16 + 4 * v21, v12) ) v23 = 0; else v23 = *(_DWORD *)v22; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2040))(*(_WORD *)v23, *(_DWORD *)(v20 + 4)); v16 = dword_D554E18; } --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"); return v27 > 0; } // 6B7C68: using guessed type int (__stdcall *off_6B7C68)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D554E10: using guessed type int dword_D554E10; // D554E14: using guessed type __int16 word_D554E14; // D554E18: using guessed type int dword_D554E18; // D554E1E: using guessed type __int16 word_D554E1E; //----- (0048B4A0) -------------------------------------------------------- char __thiscall sub_48B4A0(void *this, int a2, __int16 a3, int a4) { void *v4; // ebx@1 int v5; // edx@1 int v6; // ebx@1 int v7; // eax@1 unsigned __int16 v8; // dx@3 int v9; // ecx@4 unsigned __int16 v10; // di@4 int v11; // eax@5 bool v12; // zf@5 int v13; // eax@5 const void *v14; // eax@9 void (__thiscall *v15)(_DWORD, _DWORD); // edx@11 unsigned __int16 v16; // ax@12 __time32_t v17; // eax@12 __time32_t v18; // esi@12 FILE *v19; // eax@14 __time32_t v20; // eax@16 __time32_t v21; // esi@16 FILE *v22; // eax@18 int v23; // esi@21 __time32_t v24; // eax@22 __time32_t v25; // eax@23 __time32_t v26; // ecx@24 int v27; // ST04_4@25 __time32_t v28; // eax@25 __time32_t v29; // eax@26 __time32_t v30; // eax@26 __time32_t v31; // eax@26 __time32_t v32; // eax@26 __time32_t v33; // eax@26 __time32_t v34; // eax@26 __time32_t v35; // eax@26 int v37; // ecx@32 unsigned __int16 v38; // bx@32 int v39; // eax@34 unsigned __int16 v40; // si@34 int v41; // edx@36 int v42; // eax@39 int v43; // eax@39 int v44; // eax@40 int v45; // [sp-28h] [bp-104h]@24 int v46; // [sp-24h] [bp-100h]@24 int v47; // [sp-20h] [bp-FCh]@24 int v48; // [sp-1Ch] [bp-F8h]@24 int v49; // [sp-18h] [bp-F4h]@24 int v50; // [sp-14h] [bp-F0h]@24 int v51; // [sp-10h] [bp-ECh]@24 int v52; // [sp-Ch] [bp-E8h]@24 int v53; // [sp-8h] [bp-E4h]@22 int v54; // [sp+10h] [bp-CCh]@4 void *v55; // [sp+20h] [bp-BCh]@1 unsigned __int16 v56; // [sp+20h] [bp-BCh]@12 int (__stdcall **v57)(int, int); // [sp+24h] [bp-B8h]@1 int v58; // [sp+28h] [bp-B4h]@1 char v59; // [sp+2Ch] [bp-B0h]@11 int v60; // [sp+30h] [bp-ACh]@11 unsigned int v61; // [sp+CCh] [bp-10h]@1 int v62; // [sp+D8h] [bp-4h]@1 int v63; // [sp+DCh] [bp+0h]@1 v61 = (unsigned int)&v63 ^ __security_cookie; v4 = this; v55 = this; sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"; dword_750AB8[dword_750CB8++] = -1; v62 = 0; v57 = &off_6B7C68; v58 = (int)&dword_D554E10; LOBYTE(v62) = 1; sub_43C470((int)&dword_D554E10, (int)&v57); v7 = *((_WORD *)v4 + 13); v5 = *((_DWORD *)v4 + 5); v6 = (int)((char *)v4 + 12); LOWORD(v7) = *(_WORD *)(v5 + 12 * v7 + 4); LOBYTE(v62) = 0; v58 = 0; while ( 1 ) { v8 = *(_WORD *)(v6 + 4); if ( (unsigned __int16)v7 >= v8 ) break; v9 = *(_DWORD *)(v6 + 8); v10 = v7; v7 = (unsigned __int16)v7; LOWORD(v54) = v7; HIWORD(v54) = *(_WORD *)(v9 + 12 * (unsigned __int16)v7 + 4); if ( (unsigned __int16)v7 >= v8 || (v11 = 3 * v7, v12 = *(_BYTE *)(v9 + 4 * v11 + 8) == 0, v13 = v9 + 4 * v11, v12) || !*(_DWORD *)v13 ) { v16 = *(_WORD *)(v6 + 4); v58 = *((_WORD *)v55 + 8); v56 = v16; v17 = sub_418EA0( (__time32_t)byte_14D15210, (int)"InventoryCellLockList::icl_Apply_N_Free : LockedCell List MaxSize : "); v18 = v17; if ( byte_7493ED ) { if ( *(_BYTE *)(v17 + 644) ) { sub_418E40(v17); v19 = *(FILE **)(v18 + 256); if ( v19 ) fprintf(v19, "%d", v56); } } v20 = sub_418EA0(v18, (int)", icll_List MaxSize : "); v21 = v20; if ( byte_7493ED ) { if ( *(_BYTE *)(v20 + 644) ) { sub_418E40(v20); v22 = *(FILE **)(v21 + 256); if ( v22 ) fprintf(v22, "%d", (unsigned __int16)v58); } } sub_418F20(v21, (int)&unk_13359E04); if ( v10 < *(_WORD *)(v6 + 4) && (v23 = *(_DWORD *)(v6 + 8) + 12 * v10) != 0 ) { v25 = sub_418EA0( (__time32_t)byte_14D15210, (int)"InventoryCellLockList::icl_Apply_N_Free : LockedCell ListStruct Info"); sub_418F20(v25, (int)&unk_13359E04); v53 = (int)&unk_13359E04; if ( *(_DWORD *)v23 ) { v52 = *(_WORD *)(v23 + 10); v51 = (int)", Event : "; v50 = *(_WORD *)(v23 + 4); v49 = (int)", Next : "; v48 = *(_WORD *)(v23 + 6); v47 = (int)", Prev : "; v46 = *(_BYTE *)(v23 + 8); v45 = (int)", IsActive : "; v27 = **(_WORD **)v23; v28 = sub_418EA0((__time32_t)byte_14D15210, (int)"Content LockIndex : "); v26 = sub_43B910(v28, v27); } else { v52 = *(_WORD *)(v23 + 10); v51 = (int)", Event : "; v50 = *(_WORD *)(v23 + 4); v49 = (int)", Next : "; v48 = *(_WORD *)(v23 + 6); v47 = (int)", Prev : "; v46 = *(_BYTE *)(v23 + 8); v45 = (int)"Content Null, IsActive : "; v26 = (__time32_t)byte_14D15210; } v29 = sub_418EA0(v26, v45); v30 = sub_43B910(v29, v46); v31 = sub_418EA0(v30, v47); v32 = sub_43B910(v31, v48); v33 = sub_418EA0(v32, v49); v34 = sub_43B910(v33, v50); v35 = sub_418EA0(v34, v51); v24 = sub_43B910(v35, v52); } else { v53 = (int)&unk_13359E04; v24 = sub_418EA0( (__time32_t)byte_14D15210, (int)"InventoryCellLockList::icl_Apply_N_Free : LockedCell ListStruct NULL"); } sub_418F20(v24, v53); sub_48AE30(v6); (*(void (__stdcall **)(signed int, _DWORD, _DWORD))(*(_DWORD *)a2 + 1528))(1680, 0, 0); LABEL_28: --dword_750CB8; v62 = -1; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"); return 0; } if ( **(_WORD **)v13 == a3 ) { if ( *(_BYTE *)(v13 + 8) ) v14 = *(const void **)v13; else v14 = 0; v15 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 12); memcpy(&v59, v14, 0xA0u); v15(v6, v54); (**(void (__stdcall ***)(int, char *, int))v60)(a2, &v59, a4); ++v58; } LOWORD(v7) = HIWORD(v54); } if ( v58 <= 0 ) sub_639100( &unk_86DDD8, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free : No Releaser apply - LockIndex maybe wrong", v58); v37 = dword_D554E18; v38 = *(_WORD *)(dword_D554E18 + 12 * (unsigned __int16)word_D554E1E + 4); while ( v38 < word_D554E14 ) { v39 = v38; v40 = v38; v38 = *(_WORD *)(v37 + 12 * v38 + 4); if ( v40 < word_D554E14 && *(_BYTE *)(v37 + 12 * v39 + 8) ) v41 = *(_DWORD *)(v37 + 12 * v39); else v41 = 0; if ( v40 >= word_D554E14 || (v42 = 3 * v39, v12 = *(_BYTE *)(v37 + 4 * v42 + 8) == 0, v43 = v37 + 4 * v42, v12) ) v44 = 0; else v44 = *(_DWORD *)v43; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2040))(*(_WORD *)v44, *(_DWORD *)(v41 + 4)); v37 = dword_D554E18; } if ( v58 <= 0 ) goto LABEL_28; --dword_750CB8; v62 = -1; sub_467660((int)&unk_D020420, (int)"InventoryLocking::InventoryCellLockList::icl_Apply_N_Free"); return 1; } // 6B7C68: using guessed type int (__stdcall *off_6B7C68)(int, int); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D554E10: using guessed type int dword_D554E10; // D554E14: using guessed type __int16 word_D554E14; // D554E18: using guessed type int dword_D554E18; // D554E1E: using guessed type __int16 word_D554E1E; //----- (0048B900) -------------------------------------------------------- int __thiscall sub_48B900(int this, int a2, unsigned __int16 *a3) { int v3; // edx@1 int v4; // eax@1 int v5; // ebx@1 unsigned __int16 v6; // di@2 unsigned __int16 v7; // si@3 int v8; // eax@11 int result; // eax@18 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); v5 = *(_DWORD *)(this + 4); if ( !*(_BYTE *)(v4 + 21) ) { v6 = *a3; do { v7 = *(_WORD *)(v4 + 12); if ( v7 >= v6 ) { if ( *(_BYTE *)(v3 + 21) && v6 < v7 ) v3 = v4; v5 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } while ( !*(_BYTE *)(v4 + 21) ); } if ( *(_BYTE *)(v3 + 21) ) v8 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); else v8 = *(_DWORD *)v3; while ( !*(_BYTE *)(v8 + 21) ) { if ( *a3 >= *(_WORD *)(v8 + 12) ) { v8 = *(_DWORD *)(v8 + 8); } else { v3 = v8; v8 = *(_DWORD *)v8; } } result = a2; *(_DWORD *)a2 = v5; *(_DWORD *)(a2 + 4) = v3; return result; } //----- (0048B990) -------------------------------------------------------- int __thiscall sub_48B990(int this) { int v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@1 int v4; // edx@1 int v5; // ecx@3 bool v6; // zf@3 int v7; // ecx@3 int v8; // ecx@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@15 int v14; // ecx@15 int v15; // ecx@18 int v16; // ecx@18 signed int v18; // [sp+Ch] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6B6E2C; *(_DWORD *)(this + 16) = 0; sub_48B0B0(this, 0x90u); v2 = 2; *(_DWORD *)v1 = &off_6B819C; v3 = 36; v4 = v1 + 32; v18 = 24; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v3 - 36) == 0; v7 = v5 + v3 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 8; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v3 - 24) == 0; v9 = v8 + v3 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v3 - 12) == 0; v11 = v10 + v3 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 8; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v3) ) *(_DWORD *)(v12 + v3) = v4 + 16; } if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v3 + 12) == 0; v14 = v13 + v3 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 24; } if ( v2 + 3 < *(_WORD *)(v1 + 4) ) { v15 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v15 + v3 + 24) == 0; v16 = v15 + v3 + 24; if ( v6 ) *(_DWORD *)v16 = v4 + 32; } v4 += 48; v3 += 72; v2 += 6; --v18; } while ( v18 ); return v1; } // 6B6E2C: using guessed type int (__thiscall *off_6B6E2C)(void *, char); // 6B819C: using guessed type int (__thiscall *off_6B819C)(void *, char); //----- (0048BAA0) -------------------------------------------------------- void *__thiscall sub_48BAA0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B6E2C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B6E2C: using guessed type int (__thiscall *off_6B6E2C)(void *, char); //----- (0048BAE0) -------------------------------------------------------- int __thiscall sub_48BAE0(int this) { int v1; // edi@1 int v2; // esi@1 signed int v3; // edx@1 signed int v4; // ecx@1 int v5; // eax@1 int v6; // edi@3 bool v7; // zf@3 int v8; // edi@3 int v9; // edi@6 int v10; // edi@6 int v11; // edi@9 int v12; // edi@9 int v13; // edi@12 int v14; // edi@15 int v15; // edi@15 int v16; // edi@18 int v17; // edi@18 int v19; // [sp+10h] [bp-14h]@1 signed int v20; // [sp+14h] [bp-10h]@1 v1 = this; v19 = this; v2 = this + 12; *(_DWORD *)this = &off_6B7314; *(_DWORD *)(this + 12) = &off_6B6E08; *(_DWORD *)(this + 28) = 0; sub_48AF30(this + 12, 0x90u); v3 = 2; v4 = 36; v5 = v1 + 40; v20 = 24; do { *(_DWORD *)(v5 + 4) = off_75A61C; if ( v3 - 2 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v6 + v4 - 36) == 0; v8 = v6 + v4 - 36; if ( v7 ) *(_DWORD *)v8 = v5; } *(_DWORD *)(v5 + 164) = off_75A61C; if ( v3 - 1 < *(_WORD *)(v2 + 4) ) { v9 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v9 + v4 - 24) == 0; v10 = v9 + v4 - 24; if ( v7 ) *(_DWORD *)v10 = v5 + 160; } *(_DWORD *)(v5 + 324) = off_75A61C; if ( v3 < *(_WORD *)(v2 + 4) ) { v11 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v11 + v4 - 12) == 0; v12 = v11 + v4 - 12; if ( v7 ) *(_DWORD *)v12 = v5 + 320; } *(_DWORD *)(v5 + 484) = off_75A61C; if ( v3 + 1 < *(_WORD *)(v2 + 4) ) { v13 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v13 + v4) ) *(_DWORD *)(v13 + v4) = v5 + 480; } *(_DWORD *)(v5 + 644) = off_75A61C; if ( v3 + 2 < *(_WORD *)(v2 + 4) ) { v14 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v14 + v4 + 12) == 0; v15 = v14 + v4 + 12; if ( v7 ) *(_DWORD *)v15 = v5 + 640; } *(_DWORD *)(v5 + 804) = off_75A61C; if ( v3 + 3 < *(_WORD *)(v2 + 4) ) { v16 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v16 + v4 + 24) == 0; v17 = v16 + v4 + 24; if ( v7 ) *(_DWORD *)v17 = v5 + 800; } v4 += 72; v3 += 6; v5 += 960; --v20; } while ( v20 ); return v19; } // 6B6E08: using guessed type int (__thiscall *off_6B6E08)(void *, char); // 6B7314: using guessed type int (__stdcall *off_6B7314)(int, int); // 75A61C: using guessed type int (__stdcall *off_75A61C[26])(int, int, int); //----- (0048BC60) -------------------------------------------------------- char __cdecl sub_48BC60(int a1, int a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // edi@2 int v5; // eax@5 int j; // eax@6 int i; // eax@9 char result; // al@14 int v9; // [sp+Ch] [bp-8h]@1 int v10; // [sp+10h] [bp-4h]@1 sub_48B900((int)&unk_14D214D4, (int)&v9, (unsigned __int16 *)&a1); v2 = v9; v3 = v10; if ( v9 == v10 ) { LABEL_14: result = 1; } else { v4 = a1; while ( (*(int (__stdcall **)(_DWORD, int))(*(_DWORD *)a2 + 1496))(*(_WORD *)(*(_DWORD *)(v2 + 16) + 2), v4) == 1 ) { if ( !*(_BYTE *)(v2 + 21) ) { v5 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v5 + 21) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 4) ) { if ( v2 != *(_DWORD *)(i + 8) ) break; v2 = i; } v2 = i; } else { v2 = *(_DWORD *)(v2 + 8); for ( j = *(_DWORD *)v5; !*(_BYTE *)(j + 21); j = *(_DWORD *)j ) v2 = j; } } if ( v2 == v3 ) goto LABEL_14; } result = 0; } return result; } //----- (0048BD10) -------------------------------------------------------- char __cdecl sub_48BD10(int a1, int a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // edi@2 int v5; // eax@5 int j; // eax@6 int i; // eax@9 char result; // al@14 int v9; // [sp+Ch] [bp-8h]@1 int v10; // [sp+10h] [bp-4h]@1 sub_48B900((int)&unk_14D214D4, (int)&v9, (unsigned __int16 *)&a1); v2 = v9; v3 = v10; if ( v9 == v10 ) { LABEL_14: result = 1; } else { v4 = a1; while ( (*(int (__stdcall **)(_DWORD, int))(*(_DWORD *)a2 + 1500))(*(_WORD *)(*(_DWORD *)(v2 + 16) + 2), v4) == 1 ) { if ( !*(_BYTE *)(v2 + 21) ) { v5 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v5 + 21) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 4) ) { if ( v2 != *(_DWORD *)(i + 8) ) break; v2 = i; } v2 = i; } else { v2 = *(_DWORD *)(v2 + 8); for ( j = *(_DWORD *)v5; !*(_BYTE *)(j + 21); j = *(_DWORD *)j ) v2 = j; } } if ( v2 == v3 ) goto LABEL_14; } result = 0; } return result; } //----- (0048BDC0) -------------------------------------------------------- int __stdcall sub_48BDC0(int a1, int a2, int a3) { void (__thiscall *v3)(_DWORD, _DWORD, _DWORD); // edx@1 int v4; // ST08_4@1 int v5; // ST04_4@1 int v6; // eax@3 int v7; // ebx@3 int v8; // ST20_4@3 int v9; // eax@3 int v10; // edi@3 int v11; // eax@4 int v12; // ebx@4 unsigned __int16 v13; // ax@9 int v14; // eax@10 int v15; // esi@13 const char *v16; // esi@16 int v17; // eax@16 int v19; // [sp+1Ch] [bp-10h]@16 int v20; // [sp+28h] [bp-4h]@1 signed int v21; // [sp+34h] [bp+8h]@12 int *v22; // [sp+38h] [bp+Ch]@12 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply"; dword_750AB8[dword_750CB8++] = -1; v3 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1544); v4 = *(_DWORD *)(a2 + 16); v5 = *(_DWORD *)(a2 + 20); v20 = 0; v3(a1, v5, v4); if ( *(_DWORD *)(a2 + 24) != -1 ) (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a1 + 1544))(a1, *(_DWORD *)(a2 + 28), *(_DWORD *)(a2 + 24)); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1404))(a1); v6 = *(_DWORD *)(a1 + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4); (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a1 + 1204))( a1, *(_WORD *)(a1 + 4), "InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply"); v9 = *(_DWORD *)(a1 + 102); *(_DWORD *)v9 = v7; *(_DWORD *)(v9 + 4) = v8; v10 = *(_DWORD *)(a2 + 20); if ( v10 ) { v11 = sub_409730(a1); v12 = v11; if ( v11 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1488))(v11) && sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)) ) { if ( !sub_48BC60(*(_WORD *)(v10 + 8), v12) ) sub_639100( &unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply itemaction Can`t Add ActionID. ShineItemID=", *(_WORD *)(v10 + 8)); v13 = *(_WORD *)(v10 + 8); if ( v13 != -1 ) { v14 = sub_418CB0((int)&dword_14D20890, v13); if ( v14 && *(_DWORD *)(*(_DWORD *)v14 + 102) == 5 ) { v22 = (int *)(v10 + 58); v21 = 3; do { v15 = *(_WORD *)v22; if ( !sub_48BC60(*(_WORD *)v22, v12) ) sub_639100( &unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply itemaction Can`t Add ActionID. ShineItemID=", v15); v22 = (int *)((char *)v22 + 3); --v21; } while ( v21 ); } v16 = (const char *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)) + 342); v17 = (*(int (__thiscall **)(int, const char *))(*(_DWORD *)v12 + 1484))(v12, v16); if ( sub_5C5440(v16, v17, (int)&v19) && !(*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v12 + 1496))(v12, v19, 65535) ) sub_639100( &unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply Setitem Can`t Add ActionID", (unsigned __int16)v19); } } } } --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0048C000) -------------------------------------------------------- int __stdcall sub_48C000(int a1, int a2, int a3) { signed int v3; // ebx@1 int v4; // eax@2 char v5; // al@5 int v6; // esi@6 int v7; // edi@8 int v8; // eax@13 int v9; // ebx@16 int v10; // eax@20 const char *v11; // edi@20 int v12; // eax@20 int v14; // [sp+14h] [bp-10h]@20 int v15; // [sp+20h] [bp-4h]@1 int *v16; // [sp+2Ch] [bp+8h]@15 signed int v17; // [sp+30h] [bp+Ch]@15 sub_4675D0((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_UnEquipInfo::icr_Apply"); dword_7508B8[dword_750CB8] = (int)"InventoryLocking::InvenCellReleaser_UnEquipInfo::icr_Apply"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( a1 ) { v4 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v4 ) { while ( (_UNKNOWN *)v4 != &unk_132541F4 ) { v4 = *(_DWORD *)(v4 + 4); if ( !v4 ) goto LABEL_5; } v5 = 1; } else { LABEL_5: v5 = 0; } v6 = v5 != 0 ? a1 : 0; if ( v5 != 0 ? a1 : 0 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1488))(v6) ) { v7 = *(_DWORD *)(a2 + 20); if ( v7 ) { if ( !sub_48BD10(*(_WORD *)(v7 + 8), v6) ) sub_639100( &unk_86DDD8, (int)"InvenCellReleaser_UnEquipInfo::icr_Apply ItemAction Can`t Del ActionID. ShineItemID=", *(_WORD *)(v7 + 8)); if ( sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)) && *(_WORD *)(v7 + 8) != -1 ) { v8 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); if ( v8 && *(_DWORD *)(*(_DWORD *)v8 + 102) == 5 ) { v16 = (int *)(v7 + 58); v17 = 3; do { v9 = *(_WORD *)v16; if ( !sub_48BD10(*(_WORD *)v16, v6) ) sub_639100( &unk_86DDD8, (int)"InvenCellReleaser_UnEquipInfo::icr_Apply ItemAction Can`t Del ActionID. ShineItemID=", v9); v16 = (int *)((char *)v16 + 3); --v17; } while ( v17 ); v3 = -1; } v10 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); v11 = (const char *)(*(_DWORD *)v10 + 342); v12 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 1484))(v6, *(_DWORD *)v10 + 342); if ( sub_5C5440(v11, v12, (int)&v14) && !(*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v6 + 1500))(v6, v14, 65535) ) sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ SetItem Can`t Del ActionID", (unsigned __int16)v14); } } } } } --dword_750CB8; v15 = v3; return sub_467660((int)&unk_D020420, (int)"InventoryLocking::InvenCellReleaser_UnEquipInfo::icr_Apply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0048C200) -------------------------------------------------------- int __thiscall sub_48C200(void *this, const char *a2) { void *v2; // esi@1 int result; // eax@1 int v4; // [sp-1Ch] [bp-24h]@1 int v5; // [sp-18h] [bp-20h]@1 int v6; // [sp-14h] [bp-1Ch]@1 int v7; // [sp-10h] [bp-18h]@1 int v8; // [sp-Ch] [bp-14h]@1 const char *v9; // [sp-8h] [bp-10h]@1 int v10; // [sp-4h] [bp-Ch]@1 v10 = (int)&a2; v2 = this; v9 = a2; a2 = (const char *)&v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v4 = 0; strncpy((char *)&v4, "Script", 0x14u); result = sub_644390(v2, "ScrString", v4, v5, v6, v7, v8, v9, v10); if ( a2 != (const char *)2 || !result ) result = (int)byte_6A492E; return result; } //----- (0048C260) -------------------------------------------------------- char *__thiscall sub_48C260(void *this) { return (char *)this + 84520; } //----- (0048C270) -------------------------------------------------------- int __fastcall sub_48C270(int a1, char *a2, int a3, int a4, const void *a5) { int v5; // eax@1 int v6; // eax@4 int v7; // eax@7 int v8; // edi@10 void *v9; // eax@10 int v11; // [sp-1Ch] [bp-110h]@1 int v12; // [sp-18h] [bp-10Ch]@1 int v13; // [sp-14h] [bp-108h]@1 int v14; // [sp-10h] [bp-104h]@1 int v15; // [sp-Ch] [bp-100h]@1 char *v16; // [sp-8h] [bp-FCh]@1 const void *v17; // [sp-4h] [bp-F8h]@1 int v18; // [sp+Ch] [bp-E8h]@1 int v19; // [sp+10h] [bp-E4h]@4 int v20; // [sp+14h] [bp-E0h]@1 char *v21; // [sp+18h] [bp-DCh]@1 int v22; // [sp+1Ch] [bp-D8h]@1 int v23; // [sp+20h] [bp-D4h]@1 int v24; // [sp+88h] [bp-6Ch]@1 unsigned int v25; // [sp+F0h] [bp-4h]@1 int v26; // [sp+F4h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v18 = a3; v20 = a1; memcpy(&v24, a5, 0x68u); v17 = &v21; v16 = a2; v22 = (int)&v11; memcpy(&v23, a5, 0x68u); v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; strncpy((char *)&v11, "Script", 0x14u); v5 = sub_644390(&unk_15090128, "ScrString", v11, v12, v13, v14, v15, v16, (int)v17); if ( v21 != (char *)2 || !v5 ) v5 = (int)byte_6A492E; sub_54CA20((void *)a4, (const char *)v5); v17 = &v19; v16 = "ButtonCancel"; v22 = (int)&v11; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; strncpy((char *)&v11, "Script", 0x14u); v6 = sub_644390(&unk_150A0980, "ScrString", v11, v12, v13, v14, v15, v16, (int)v17); if ( v19 != 2 || (v21 = (char *)v6) == 0 ) v21 = byte_6A492E; v17 = &v22; v16 = "ButtonOK"; v22 = (int)&v11; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; strncpy((char *)&v11, "Script", 0x14u); v7 = sub_644390(&unk_150A0980, "ScrString", v11, v12, v13, v14, v15, v16, (int)v17); if ( v22 != 2 || !v7 ) v7 = (int)byte_6A492E; v8 = v20; v17 = &v24; v16 = v21; v15 = v20; v9 = sub_54CB10((void *)a4, v18, (const char *)v7, &v23); sub_54CB10(v9, v15, v16, v17); sub_50D490(a4 + 84520, 0); sub_54CC20((void *)a4, 0, -1, 0, 1000); return sub_547D60(a4, v8, &v24); } // 86FEB8: using guessed type int __security_cookie; //----- (0048C440) -------------------------------------------------------- int __stdcall sub_48C440(int a1, int a2) { int v2; // eax@1 v2 = (*(int (**)(void))(*(_DWORD *)a1 + 2004))(); return (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 40))(v2, *(_WORD *)(a2 + 22)); } //----- (0048C470) -------------------------------------------------------- int __stdcall sub_48C470(int a1, int a2) { int v2; // esi@1 int v3; // edi@2 int v4; // eax@5 int v5; // eax@5 int (__thiscall *v6)(_DWORD, _DWORD, _DWORD); // edx@6 int v7; // ebx@13 int v8; // ecx@14 int v9; // eax@18 int v10; // eax@20 int v11; // eax@20 int v12; // eax@20 void *v13; // edi@20 int v14; // eax@20 int v15; // esi@21 int v16; // eax@23 int v17; // edx@25 int v18; // ecx@25 int v19; // eax@30 int v20; // esi@31 int v21; // eax@33 signed int v23; // [sp-8h] [bp-30h]@6 int *v24; // [sp-4h] [bp-2Ch]@6 int v25; // [sp+14h] [bp-14h]@21 int v26; // [sp+18h] [bp-10h]@6 int v27; // [sp+24h] [bp-4h]@1 int v28; // [sp+30h] [bp+8h]@20 int v29; // [sp+30h] [bp+8h]@24 int v30; // [sp+34h] [bp+Ch]@14 sub_4675D0((int)&unk_D020420, (int)"ItemBreaker::ib_OK"); dword_7508B8[dword_750CB8] = (int)"ItemBreaker::ib_OK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v27 = 0; if ( !a1 || (v3 = a2) == 0 ) { --dword_750CB8; goto LABEL_35; } if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1148))(a1) ) goto LABEL_8; switch ( (unsigned int)*(_WORD *)a2 >> 10 ) { case 9u: v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1148))(a1); v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 3668))(v4 + 3668, *(_WORD *)a2 & 0x3FF); goto LABEL_13; case 3u: v6 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 80); v24 = &v26; v23 = 3; break; default: goto LABEL_8; case 0xDu: v6 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 80); v24 = &v26; v23 = 13; break; case 0xEu: v6 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 80); v24 = &v26; v23 = 14; break; case 0x10u: v6 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 80); v24 = &v26; v23 = 16; break; } if ( v6(a1, v23, v24) != 4481 ) { LABEL_8: --dword_750CB8; LABEL_35: v27 = -1; return sub_467660((int)&unk_D020420, (int)"ItemBreaker::ib_OK"); } v5 = (**(int (__stdcall ***)(_DWORD))v26)(*(_WORD *)a2 & 0x3FF); LABEL_13: v7 = v5; if ( !v5 || (v8 = *(_DWORD *)(v5 + 112), (v30 = v8) == 0) ) goto LABEL_19; if ( (*(int (**)(void))(*(_DWORD *)v8 + 40))() == 36 ) { if ( a1 == -161784 ) { LABEL_19: --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"ItemBreaker::ib_OK"); } if ( (unsigned int)(*(_DWORD *)(a1 + 161784) - 1) <= 7 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 40))(v9, *(_WORD *)(v3 + 2)); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a1 + 776))(a1, 53, 17, 13404); goto LABEL_19; } } v28 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1) + 4); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(v3 + 2)); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, int, int, int, int))(*(_DWORD *)v11 + 48))(v11, v28, v7, v3, v3); v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); ++*(_WORD *)(v12 + 4); v13 = off_849C18; *(_WORD *)off_849C18 = 13418; *((_WORD *)v13 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v13 + 4) = v28; *(_DWORD *)((char *)v13 + 10) = *(_DWORD *)v7; *(_DWORD *)((char *)v13 + 14) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v13 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v13 + 11) = *(_WORD *)(v7 + 8); *((_WORD *)v13 + 12) = (*(int (__stdcall **)(int))(*(_DWORD *)v30 + 28))(v7 + 8); *((_BYTE *)v13 + 26) = 0; v14 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); if ( !v14 || (v15 = *(_DWORD *)v14, (v25 = *(_DWORD *)v14) == 0) ) goto LABEL_19; if ( *(_DWORD *)(v15 + 102) == 15 ) { v16 = (*(int (__stdcall **)(int))(*(_DWORD *)v30 + 68))(v7); if ( (*(_BYTE *)v16 & 0xFu) > 8 ) goto LABEL_19; v29 = 0; if ( *(_BYTE *)v16 & 0xF ) { v17 = (int)((char *)v13 + 27); v18 = v16 + 1; do { ++v29; *(_DWORD *)v17 = *(_DWORD *)v18; *(_DWORD *)(v17 + 4) = *(_DWORD *)(v18 + 4); v18 += 8; v17 += 10; } while ( v29 < (*(_BYTE *)v16 & 0xF) ); v15 = v25; } *((_BYTE *)v13 + 26) = *(_BYTE *)v16 & 0xF; } if ( *(_DWORD *)(v15 + 102) == 29 ) { v19 = 5 * *((_BYTE *)v13 + 26); *(_DWORD *)((char *)v13 + 10 * *((_BYTE *)v13 + 26) + 27) = *(_DWORD *)(v7 + 10); *(_DWORD *)((char *)v13 + 2 * v19 + 31) = *(_DWORD *)(v7 + 14); ++*((_BYTE *)v13 + 26); } v20 = 10 * *((_BYTE *)v13 + 26) + 27; if ( sub_4C81E0(&off_849C18, 10 * *((_BYTE *)v13 + 26) + 27) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); --dword_750CB8; v27 = -1; } else { sub_639100(&unk_86DDD8, (int)"ItemBreaker::ib_OK : Packet Too Long", v20); --dword_750CB8; v27 = -1; } return sub_467660((int)&unk_D020420, (int)"ItemBreaker::ib_OK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (0048C820) -------------------------------------------------------- int __thiscall sub_48C820(void *this, int a2) { unsigned int v2; // ST0C_4@1 void *v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // eax@1 int v6; // edi@6 int v7; // eax@13 char v9; // [sp+Ch] [bp-110h]@4 unsigned int v10; // [sp+10Ch] [bp-10h]@1 int v11; // [sp+118h] [bp-4h]@1 int v12; // [sp+11Ch] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v2 = (unsigned int)&v12 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2004); v11 = 0; v5 = v4(v3, v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, v3, *(_WORD *)(a2 + 6), 0) ) { if ( byte_7493ED ) { if ( byte_14D15494 ) { sprintf(&v9, "%.255s", "ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess : "); sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fputs(&v9, dword_14D15310); } } v6 = *(_WORD *)(a2 + 6); if ( byte_7493ED ) { if ( byte_14D15494 ) { sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fprintf(dword_14D15310, "%d", v6); } if ( byte_7493ED && byte_14D15494 && dword_14D15310 ) { v7 = sub_418E40((__time32_t)byte_14D15210); sub_654AB0(10, (FILE *)v7); fflush(dword_14D15310); fclose(dword_14D15310); dword_14D15310 = 0; } } } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 772))(v3, 12); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D15494: using guessed type char byte_14D15494; //----- (0048C9E0) -------------------------------------------------------- int __thiscall sub_48C9E0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 40))(v3); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 776))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 37, *(_WORD *)(a2 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CAC0) -------------------------------------------------------- int __stdcall sub_48CAC0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMBREAKSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMBREAKSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2312))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMBREAKSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CBA0) -------------------------------------------------------- int __stdcall sub_48CBA0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMBREAKFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMBREAKFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2316))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMBREAKFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CC80) -------------------------------------------------------- int __stdcall sub_48CC80(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemBreakWarn1"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ItemBreakWarn1"; dword_750AB8[dword_750CB8++] = -1; sub_48C470(a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemBreakWarn1"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CD30) -------------------------------------------------------- int __stdcall sub_48CD30(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemBreakCancel"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ItemBreakCancel"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a2 + 2); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, v2); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 776))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemBreakCancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CE00) -------------------------------------------------------- int __stdcall sub_48CE00(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemDropWarn"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ItemDropWarn"; dword_750AB8[dword_750CB8++] = -1; sub_529830(a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemDropWarn"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CEA0) -------------------------------------------------------- int __stdcall sub_48CEA0(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemDropCancel"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ItemDropCancel"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a2 + 22); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, v2); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 776))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemDropCancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048CF80) -------------------------------------------------------- int __stdcall sub_48CF80(int a1, const void *a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemBreakWarn0"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ItemBreakWarn0"; dword_750AB8[dword_750CB8++] = -1; sub_48C270((int)sub_48CD30, "ItemBreakWarn1", (int)sub_48CC80, a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ItemBreakWarn0"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048D040) -------------------------------------------------------- char __stdcall sub_48D040(int a1, int a2, int a3, int a4, int a5) { char result; // al@2 int v6; // ecx@3 int v7; // edx@3 int v8; // ecx@3 int v9; // eax@3 int v10; // eax@3 int v11; // edx@3 int v12; // eax@3 int v13; // eax@3 __int16 v14; // [sp+Ch] [bp-78h]@3 int v15; // [sp+10h] [bp-74h]@3 int v16; // [sp+14h] [bp-70h]@3 int v17; // [sp+18h] [bp-6Ch]@3 int v18; // [sp+1Ch] [bp-68h]@3 __int16 v19; // [sp+20h] [bp-64h]@3 int v20; // [sp+22h] [bp-62h]@3 int v21; // [sp+74h] [bp-10h]@1 int v22; // [sp+80h] [bp-4h]@1 v21 = (int)"ItemDropper::id_Drop"; sub_4675D0((int)&unk_D020420, (int)"ItemDropper::id_Drop"); dword_7508B8[dword_750CB8] = (int)"ItemDropper::id_Drop"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; *(_WORD *)a5 = 781; if ( sub_50D480(a1 + 84520) ) { v14 = *(_WORD *)a3; v6 = *(_DWORD *)a4; v15 = a2; v7 = *(_DWORD *)(a4 + 4); v16 = v6; v8 = *(_DWORD *)(a4 + 8); v17 = v7; LOWORD(v7) = *(_WORD *)(a4 + 12); v9 = *(_DWORD *)a1; v18 = v8; v19 = v7; v10 = (*(int (__thiscall **)(int))(v9 + 2004))(a1); v11 = *(_DWORD *)a1; LOWORD(v20) = *(_WORD *)(v10 + 4); v12 = (*(int (__thiscall **)(int))(v11 + 2004))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 44))(v12); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v13 + 4); sub_48C270((int)sub_48CEA0, "ItemDropWarn", (int)sub_48CE00, a1, &v14); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"ItemDropper::id_Drop"); result = 1; } else { *(_WORD *)a5 = 5057; --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"ItemDropper::id_Drop"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048D1D0) -------------------------------------------------------- char __stdcall sub_48D1D0(int a1, int a2, unsigned __int16 a3, int a4) { int v4; // eax@2 int (__thiscall *v5)(_DWORD); // eax@5 __int16 v6; // cx@5 int (__thiscall *v7)(_DWORD); // eax@5 int v8; // eax@5 int v9; // eax@5 int v11; // [sp-4h] [bp-8Ch]@4 unsigned __int16 v12; // [sp+10h] [bp-78h]@5 int v13; // [sp+12h] [bp-76h]@5 int v14; // [sp+70h] [bp-18h]@5 const void *v15; // [sp+74h] [bp-14h]@5 int v16; // [sp+78h] [bp-10h]@1 int v17; // [sp+84h] [bp-4h]@1 v16 = (int)"ItemBreaker::ib_Break"; sub_4675D0((int)&unk_D020420, (int)"ItemBreaker::ib_Break"); dword_7508B8[dword_750CB8] = (int)"ItemBreaker::ib_Break"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; *(_WORD *)a4 = 781; if ( a2 && (v4 = sub_645090(a2), sub_62EDD0(&dword_1508B5A8, v4)) ) { if ( sub_50D480(a1 + 84520) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); v12 = a3; v6 = *(_WORD *)(v5(a1) + 4); v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); LOWORD(v13) = v6; v8 = v7(a1); (*(void (__thiscall **)(int, int, unsigned int, int))(*(_DWORD *)v8 + 44))( v8, v13, (unsigned int)a3 >> 10, a3 & 0x3FF); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v15 = &v12; v14 = a1; ++*(_WORD *)(v9 + 4); sub_48C270((int)sub_48CD30, "ItemBreakWarn0", (int)sub_48CF80, v14, v15); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ItemBreaker::ib_Break"); return 1; } *(_WORD *)a4 = 5057; v11 = (int)"ItemBreaker::ib_Break"; } else { v11 = (int)"ItemBreaker::ib_Break"; } --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0048D360) -------------------------------------------------------- unsigned int __thiscall sub_48D360(void *this) { return sub_639500((int)((char *)this + 3441480), 0xF4240u); } //----- (0048D380) -------------------------------------------------------- int __thiscall sub_48D380(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // edi@1 signed int v5; // ecx@1 int v6; // ecx@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 *)(result + 60) = *(_WORD *)(a2 + 60); *(_WORD *)(result + 62) = *(_WORD *)(a2 + 62); v6 = result + 64; v7 = 16; do { *(_WORD *)v6 = *(_WORD *)(v6 + v4); v6 += 2; --v7; } while ( v7 ); *(_DWORD *)(result + 96) = *(_DWORD *)(a2 + 96); return result; } //----- (0048D3F0) -------------------------------------------------------- int __thiscall sub_48D3F0(void *this, int a2) { int v2; // eax@1 int result; // eax@1 v2 = *(_DWORD *)this; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)this + 6424); *(_DWORD *)(a2 + 4) = *(_DWORD *)(v2 + 6428); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v2 + 6432); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v2 + 6436); result = *(_DWORD *)(v2 + 6440); *(_DWORD *)(a2 + 16) = result; return result; } //----- (0048D430) -------------------------------------------------------- int __cdecl sub_48D430(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 10257); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (0048D460) -------------------------------------------------------- int __cdecl sub_48D460(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 10257); i = *(_DWORD *)i ) result = i; return result; } //----- (0048D480) -------------------------------------------------------- void *__thiscall sub_48D480(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 10257) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 10257) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 10257); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 10257); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (0048D4E0) -------------------------------------------------------- void *__thiscall sub_48D4E0(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 10257) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 10257) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 10257) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 10257) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 10257); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 10257) ) goto LABEL_11; return result; } //----- (0048D560) -------------------------------------------------------- int __thiscall sub_48D560(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 18) = 0; *(_DWORD *)(this + 14) = 0; *(_DWORD *)(this + 10) = 0; *(_DWORD *)(this + 6) = 0; *(_DWORD *)(this + 2) = 0; return result; } //----- (0048D580) -------------------------------------------------------- int __thiscall sub_48D580(int this, __int16 a2, int a3) { int v3; // esi@1 int v4; // eax@1 char v6; // [sp+8h] [bp-104h]@1 unsigned int v7; // [sp+108h] [bp-4h]@1 int v8; // [sp+10Ch] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v3 = this; v4 = sub_649DA0(this, (int)&v6); if ( *(_DWORD *)(v3 + 10220) >= 0x64u ) { sub_6390B0(&unk_86DDD8, (int)"ItemDropFromMob::DropItemListInGroup::dilig_AppendItem : Too many item", v4); loc_6391B0("ItemDropFromMob::DropItemListInGroup::dilig_AppendItem"); } *(_WORD *)(102 * *(_DWORD *)(v3 + 10220) + v3 + 20) = a2; return sub_48D380(102 * (*(_DWORD *)(v3 + 10220))++ + v3 + 22, a3); } // 86FEB8: using guessed type int __security_cookie; //----- (0048D610) -------------------------------------------------------- int __thiscall sub_48D610(void *this, int a2, void *a3, int a4, int a5, unsigned __int8 a6, unsigned __int8 a7) { void *v7; // esi@1 signed int v8; // ecx@1 int v9; // eax@1 int v10; // ecx@4 char *v11; // eax@4 int v12; // eax@7 __int16 v13; // di@7 int v14; // ebx@7 int v15; // ST18_4@7 char *v16; // eax@7 int v17; // esi@7 unsigned __int16 v18; // ax@7 int v19; // edx@7 unsigned __int16 v20; // ax@7 int v21; // eax@8 int v22; // ebx@8 int v23; // eax@9 const char *v24; // eax@10 int v25; // edi@11 int v26; // eax@11 int v27; // kr00_4@15 unsigned __int8 v28; // al@15 unsigned __int8 v29; // cl@15 int v30; // ST10_4@17 __int16 v31; // ax@17 int v33; // [sp-8h] [bp-B0h]@2 unsigned int v34; // [sp-4h] [bp-ACh]@1 int v35; // [sp-4h] [bp-ACh]@7 char v36; // [sp+1Ch] [bp-8Ch]@17 char v37[7]; // [sp+1Dh] [bp-8Bh]@7 int v38; // [sp+24h] [bp-84h]@7 int v39; // [sp+28h] [bp-80h]@7 int v40; // [sp+2Ch] [bp-7Ch]@7 __int16 v41; // [sp+30h] [bp-78h]@7 unsigned int v42; // [sp+98h] [bp-10h]@1 int v43; // [sp+A4h] [bp-4h]@1 int v44; // [sp+A8h] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v34 = (unsigned int)&v44 ^ __security_cookie; v7 = this; sub_4675D0((int)&unk_D020420, (int)"ItemDropFromMob::DropItemListInGroup::dilig_Drop"); dword_7508B8[dword_750CB8] = (int)"ItemDropFromMob::DropItemListInGroup::dilig_Drop"; dword_750AB8[dword_750CB8] = -1; v8 = 1; ++dword_750CB8; v9 = *((_DWORD *)v7 + 2555); v43 = 0; if ( v9 && ((unsigned int)(v9 - 1) > 0x63 ? (LOWORD(v11) = 0) : (v11 = (char *)&unk_14D42DC0 + 32776 * v9, v10 = (*((_DWORD *)v11 + 8192) + 1) & *((_DWORD *)v11 + 8193), *((_DWORD *)v11 + 8192) = v10, LOWORD(v11) = *(_WORD *)&v11[2 * v10], v8 = 1), v11 = (char *)(unsigned __int16)v11, (signed int)(unsigned __int16)v11 < *((_DWORD *)v7 + 2555)) ) { v12 = 102 * (_DWORD)v11; v13 = *(_WORD *)((char *)v7 + v12 + 20); v14 = (int)((char *)v7 + v12); v39 = -1; v40 = -1; memset(&v41, 0, 0x67u); v41 = -1; v15 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v16 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v39, v13, 3, *((_DWORD *)v16 + 4), v15); v41 = v13; v17 = (int)sub_63ACA0(dword_1508B168, v13); v18 = sub_639500((int)&unk_1508B108, 0x3E8u); *(_DWORD *)&v37[3] = *(_DWORD *)v17; v19 = *(_DWORD *)a3; v38 = v18; v20 = (*(int (__cdecl **)(unsigned int))(v19 + 1800))(v34); if ( (unsigned __int8)(*(int (__thiscall **)(int, int *, int, _DWORD, _DWORD))(*(_DWORD *)&v37[3] + 44))( v17, &v39, v14 + 22, (unsigned __int16)v38, v20) ) { v21 = sub_418CB0((int)&dword_14D20890, v13); v22 = v21; if ( v21 ) { v23 = *(_DWORD *)(v21 + 4); if ( v23 ) { v24 = (const char *)(v23 + 137); if ( v24 ) { v25 = (int)sub_4934A0(&dword_D61E064, v24); v26 = (*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v17 + 112))(v17, &v41); if ( v25 && v26 ) sub_4928F0(v26, v25); if ( *(_DWORD *)v22 ) { v27 = a5 * (*(int (__thiscall **)(int, __int16 *, int))(*(_DWORD *)v17 + 28))(v17, &v41, v35); (*(void (__thiscall **)(int, __int16 *))(*(_DWORD *)v17 + 32))(v17, &v41); v28 = sub_6396E0(&unk_14D42DC0, a6, a7); v29 = *(_BYTE *)(*(_DWORD *)v22 + 240); LOBYTE(v38) = v28; if ( v29 < v28 ) LOBYTE(v38) = v29; *(_DWORD *)v37 = 0; *(_WORD *)&v37[4] = 0; v37[6] = 0; v36 = 0; sub_53A870((int)&v39, v17, v38, (int)&v36); v30 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v31 = sub_4802C0(a2); sub_4B0220(a3, (int)&v39, 1, a4, (unsigned __int16)v31, v30, v17, 1); } } } } } --dword_750CB8; v33 = (int)"ItemDropFromMob::DropItemListInGroup::dilig_Drop"; v43 = -1; } else { dword_750CB8 -= v8; v43 = -1; v33 = (int)"ItemDropFromMob::DropItemListInGroup::dilig_Drop"; } return sub_467660((int)&unk_D020420, v33); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (0048D920) -------------------------------------------------------- int __thiscall sub_48D920(int this, int a2) { int result; // eax@1 int v3; // ecx@1 int v4; // ebx@2 int v5; // edx@3 int v6; // edx@4 int v7; // edx@5 int v8; // esi@5 int v9; // edx@7 int v10; // esi@7 int v11; // edx@9 int v12; // esi@9 result = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(result + 4); if ( !*(_BYTE *)(v3 + 10257) ) { v4 = *(_DWORD *)a2; do { v5 = *(_DWORD *)(v3 + 12); if ( v5 == v4 ) { v7 = *(_DWORD *)(v3 + 16); v8 = *(_DWORD *)(a2 + 4); if ( v7 == v8 ) { v9 = *(_DWORD *)(v3 + 20); v10 = *(_DWORD *)(a2 + 8); if ( v9 == v10 ) { v11 = *(_DWORD *)(v3 + 24); v12 = *(_DWORD *)(a2 + 12); if ( v11 == v12 ) v6 = *(_DWORD *)(v3 + 28) - *(_DWORD *)(a2 + 16); else v6 = v11 - v12; } else { v6 = v9 - v10; } } else { v6 = v7 - v8; } } else { v6 = v5 - v4; } if ( v6 >= 0 ) { result = v3; v3 = *(_DWORD *)v3; } else { v3 = *(_DWORD *)(v3 + 8); } } while ( !*(_BYTE *)(v3 + 10257) ); } return result; } //----- (0048D9A0) -------------------------------------------------------- int __thiscall sub_48D9A0(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 10257) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (0048DA00) -------------------------------------------------------- int __thiscall sub_48DA00(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 10257) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (0048DA60) -------------------------------------------------------- char __thiscall sub_48DA60(void *this, unsigned __int8 *a2, int a3) { int v3; // esi@1 __int16 v4; // ax@1 char result; // al@2 unsigned __int16 v6; // ax@4 __int16 v7; // di@4 int v8; // eax@4 int v9; // eax@9 char v10; // [sp+Ch] [bp-11Ch]@3 char v11[4]; // [sp+10h] [bp-118h]@3 int v12; // [sp+14h] [bp-114h]@3 int v13; // [sp+18h] [bp-110h]@3 int v14; // [sp+1Ch] [bp-10Ch]@3 int v15; // [sp+20h] [bp-108h]@3 char v16; // [sp+24h] [bp-104h]@9 unsigned int v17; // [sp+124h] [bp-4h]@1 int v18; // [sp+128h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = (int)this; v4 = sub_418C80((int)&dword_14D20890, a2); if ( v4 == -1 ) { v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; strncpy(v11, (const char *)a2, 0x14u); sub_4A7850((int)&v10); do { v6 = sub_48F470(&dword_14D20890, (unsigned int *)&v10); v7 = v6; v8 = *(_DWORD *)(sub_418CB0((int)&dword_14D20890, v6) + 4); if ( *(_DWORD *)(v8 + 57) != *(_DWORD *)v11 || *(_DWORD *)(v8 + 61) != v12 || *(_DWORD *)(v8 + 65) != v13 || *(_DWORD *)(v8 + 69) != v14 || *(_DWORD *)(v8 + 73) != v15 ) { if ( *(_DWORD *)(v8 + 97) == *(_DWORD *)v11 && *(_DWORD *)(v8 + 101) == v12 && *(_DWORD *)(v8 + 105) == v13 && *(_DWORD *)(v8 + 109) == v14 && *(_DWORD *)(v8 + 113) == v15 ) sub_48D580(v3, v7, a3); } else { v9 = sub_649DA0(v3, (int)&v16); if ( *(_DWORD *)(v3 + 10220) >= 0x64u ) { sub_6390B0(&unk_86DDD8, (int)"ItemDropFromMob::DropItemListInGroup::dilig_AppendItem : Too many item", v9); loc_6391B0("ItemDropFromMob::DropItemListInGroup::dilig_AppendItem"); } *(_WORD *)(102 * *(_DWORD *)(v3 + 10220) + v3 + 20) = v7; sub_48D380(102 * (*(_DWORD *)(v3 + 10220))++ + v3 + 22, a3); } result = sub_48F450(&dword_14D20890, (int)&v10); } while ( result ); } else { result = sub_48D580(v3, v4, a3); } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (0048DC40) -------------------------------------------------------- int __thiscall sub_48DC40(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // edi@1 int v7; // edx@2 int v8; // esi@3 int v9; // ecx@4 int v10; // edx@4 int v11; // ecx@6 int v12; // edx@6 int v13; // ecx@8 int v14; // edx@8 int result; // eax@12 int v16; // [sp+18h] [bp+Ch]@1 v3 = a3; v4 = this; v5 = sub_48D920(this, a3); v6 = *(_DWORD *)(v4 + 4); v16 = v5; if ( v5 == v6 || ((v7 = *(_DWORD *)(v5 + 12), *(_DWORD *)v3 == v7) ? ((v9 = *(_DWORD *)(v3 + 4), v10 = *(_DWORD *)(v5 + 16), v9 == v10) ? ((v11 = *(_DWORD *)(v3 + 8), v12 = *(_DWORD *)(v5 + 20), v11 == v12) ? ((v13 = *(_DWORD *)(v3 + 12), v14 = *(_DWORD *)(v5 + 24), v13 == v14) ? (v8 = *(_DWORD *)(v3 + 16) - *(_DWORD *)(v5 + 28)) : (v8 = v13 - v14)) : (v8 = v11 - v12)) : (v8 = v9 - v10)) : (v8 = *(_DWORD *)v3 - v7), v8 < 0) ) { result = a2; *(_DWORD *)a2 = v6; } else { result = a2; *(_DWORD *)a2 = v16; } return result; } //----- (0048DCD0) -------------------------------------------------------- int __stdcall sub_48DCD0(int a1, int a2, int a3, void *a4, int a5, int a6, int a7) { int v7; // esi@2 int v8; // ebx@2 unsigned int v9; // eax@2 int v10; // ecx@2 __int16 v11; // ax@3 int v12; // edi@6 unsigned __int8 v13; // bl@6 unsigned __int8 v14; // si@6 int v15; // eax@6 unsigned int v17; // [sp+1Ch] [bp-94h]@2 char v18; // [sp+20h] [bp-90h]@6 unsigned int v19; // [sp+A0h] [bp-10h]@1 int v20; // [sp+ACh] [bp-4h]@1 int v21; // [sp+B0h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"); dword_7508B8[dword_750CB8] = (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( (signed int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_DWORD *)(a5 + 4) ) { v7 = a2 + 29 * a1; v8 = *(_DWORD *)(v7 + 175); v9 = sub_639500((int)&unk_1508B108, 0xF4240u); v10 = *(_DWORD *)(a5 + 8) + *(_DWORD *)(a5 + 12); v17 = v9; if ( v9 < ((signed int)((unsigned __int64)(v8 * (*(_DWORD *)a5 + v10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v8 * (*(_DWORD *)a5 + v10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31) ) { v11 = *(_WORD *)(v7 + 182); if ( v11 ) { if ( v11 != -1 ) *(_WORD *)(v7 + 182) = v11 - 1; v12 = v7 + 155; sub_649DA0(v7 + 155, (int)&v18); v13 = *(_BYTE *)(v7 + 179); v14 = *(_BYTE *)(v7 + 180); v15 = *(_DWORD *)sub_48DC40((int)&unk_D5552C0, (int)&v17, v12); if ( (void *)v15 != dword_D5552C4 && v15 != -32 ) sub_48D610((void *)(v15 + 32), a3, a4, a6, a7, v13, v14); } } } --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0048DE90) -------------------------------------------------------- int __thiscall sub_48DE90(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int v5; // eax@2 int v6; // ecx@3 int (__thiscall **v8)(void *, char); // [sp+8h] [bp-Ch]@6 v2 = this; v3 = operator new(0x2814u); v4 = v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v8 = &off_6A1FD4; _CxxThrowException(&v8, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 8) = *((_DWORD *)v2 + 1); v5 = v3 + 12; *(_WORD *)(v4 + 10256) = 0; if ( v4 != -12 ) { v6 = a2; *(_DWORD *)v5 = *(_DWORD *)a2; *(_DWORD *)(v4 + 16) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v4 + 20) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v4 + 24) = *(_DWORD *)(v6 + 12); *(_DWORD *)(v4 + 28) = *(_DWORD *)(v6 + 16); memmove((void *)(v4 + 32), (const void *)(v6 + 20), 0x27F0u); } return v4; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0048DF50) -------------------------------------------------------- int __stdcall sub_48DF50(const char *a1, int a2, int a3, void *a4, int a5, int a6, int a7) { int v7; // esi@1 const char *v8; // ebx@10 int v10; // [sp-8h] [bp-50h]@9 char v11[4]; // [sp+24h] [bp-24h]@4 int v12; // [sp+28h] [bp-20h]@4 int v13; // [sp+2Ch] [bp-1Ch]@4 int v14; // [sp+30h] [bp-18h]@4 int v15; // [sp+34h] [bp-14h]@4 unsigned int v16; // [sp+38h] [bp-10h]@1 int v17; // [sp+44h] [bp-4h]@1 int v18; // [sp+48h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"); dword_7508B8[dword_750CB8] = (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; v17 = 0; if ( !(dword_D5552BC & 1) ) { dword_D5552BC |= 1u; dword_D5552B8 = 0; dword_D5552B4 = 0; dword_D5552B0 = 0; dword_D5552AC = 0; *(_DWORD *)dword_D5552A8 = 0; strncpy(dword_D5552A8, "-", 0x14u); atexit(nullsub_55); } if ( *a1 == 45 || (v15 = 0, v14 = 0, v13 = 0, v12 = 0, *(_DWORD *)v11 = 0, strncpy(v11, a1, 0x14u), *(_DWORD *)v11 == *(_DWORD *)a2) && v12 == *(_DWORD *)(a2 + 4) && v13 == *(_DWORD *)(a2 + 8) && v14 == *(_DWORD *)(a2 + 12) && v15 == *(_DWORD *)(a2 + 16) ) { v8 = a1 + 163; do { if ( *((_DWORD *)v8 - 2) != *(_DWORD *)dword_D5552A8 || *((_DWORD *)v8 - 1) != dword_D5552AC || *(_DWORD *)v8 != dword_D5552B0 || *((_DWORD *)v8 + 1) != dword_D5552B4 || *((_DWORD *)v8 + 2) != dword_D5552B8 ) { if ( v8[18] == 114 ) sub_48DCD0(v7, (int)a1, a3, a4, a6, a5, a7); } ++v7; v8 += 29; } while ( (unsigned int)v7 < 0x2D ); v10 = (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; } else { v10 = (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D5552AC: using guessed type int dword_D5552AC; // D5552B0: using guessed type int dword_D5552B0; // D5552B4: using guessed type int dword_D5552B4; // D5552B8: using guessed type int dword_D5552B8; // D5552BC: using guessed type int dword_D5552BC; //----- (0048E120) -------------------------------------------------------- int __thiscall sub_48E120(int this, int a2, char a3, int a4, void *a5) { int v5; // edi@1 unsigned int v6; // eax@1 void *v7; // edx@4 int v8; // ecx@4 int v9; // ecx@7 int v10; // ecx@9 void *v11; // esi@11 int v12; // eax@12 int v13; // ecx@12 int v14; // ecx@13 int v15; // eax@15 int v16; // ecx@17 int v17; // ecx@19 int v18; // eax@23 int v19; // ecx@23 int v20; // edx@23 int v21; // edx@25 int v22; // edx@27 int v23; // edx@36 int v24; // edx@38 int result; // eax@44 v5 = this; v6 = *(_DWORD *)(this + 8); if ( v6 >= 0x665C1 ) { _LN21((char *)a5 + 52, 0x66u, 100, nullsub_2); operator delete(a5); sub_65178B((int)"map/set too long"); } v7 = a5; *(_DWORD *)(this + 8) = v6 + 1; *((_DWORD *)a5 + 1) = a4; v8 = *(_DWORD *)(this + 4); if ( a4 == v8 ) { *(_DWORD *)(v8 + 4) = a5; **(_DWORD **)(v5 + 4) = a5; *(_DWORD *)(*(_DWORD *)(v5 + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v9 = *(_DWORD *)(v5 + 4); if ( a4 == *(_DWORD *)v9 ) *(_DWORD *)v9 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v10 = *(_DWORD *)(v5 + 4); if ( a4 == *(_DWORD *)(v10 + 8) ) *(_DWORD *)(v10 + 8) = a5; } } v11 = a5; while ( !*(_BYTE *)(*((_DWORD *)v11 + 1) + 10256) ) { v12 = *((_DWORD *)v11 + 1); v13 = *(_DWORD *)(v12 + 4); if ( v12 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 10256) ) { if ( v11 == *(void **)(v12 + 8) ) { v11 = (void *)*((_DWORD *)v11 + 1); v15 = *(_DWORD *)(v12 + 8); *((_DWORD *)v11 + 2) = *(_DWORD *)v15; if ( !*(_BYTE *)(*(_DWORD *)v15 + 10257) ) *(_DWORD *)(*(_DWORD *)v15 + 4) = v11; *(_DWORD *)(v15 + 4) = *((_DWORD *)v11 + 1); v16 = *(_DWORD *)(v5 + 4); if ( v11 == *(void **)(v16 + 4) ) { *(_DWORD *)(v16 + 4) = v15; } else { v17 = *((_DWORD *)v11 + 1); if ( v11 == *(void **)v17 ) *(_DWORD *)v17 = v15; else *(_DWORD *)(v17 + 8) = v15; } *(_DWORD *)v15 = v11; *((_DWORD *)v11 + 1) = v15; } *(_BYTE *)(*((_DWORD *)v11 + 1) + 10256) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v11 + 1) + 4) + 10256) = 0; v18 = *(_DWORD *)(*((_DWORD *)v11 + 1) + 4); v19 = *(_DWORD *)v18; *(_DWORD *)v18 = *(_DWORD *)(*(_DWORD *)v18 + 8); v20 = *(_DWORD *)(v19 + 8); if ( !*(_BYTE *)(v20 + 10257) ) *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v19 + 4) = *(_DWORD *)(v18 + 4); v21 = *(_DWORD *)(v5 + 4); if ( v18 == *(_DWORD *)(v21 + 4) ) { *(_DWORD *)(v21 + 4) = v19; *(_DWORD *)(v19 + 8) = v18; } else { v22 = *(_DWORD *)(v18 + 4); if ( v18 == *(_DWORD *)(v22 + 8) ) { *(_DWORD *)(v22 + 8) = v19; *(_DWORD *)(v19 + 8) = v18; } else { *(_DWORD *)v22 = v19; *(_DWORD *)(v19 + 8) = v18; } } LABEL_42: v7 = a5; *(_DWORD *)(v18 + 4) = v19; continue; } } else { v14 = *(_DWORD *)v13; if ( *(_BYTE *)(v14 + 10256) ) { if ( v11 == *(void **)v12 ) { v11 = (void *)*((_DWORD *)v11 + 1); sub_48DA00(v5, v12); } *(_BYTE *)(*((_DWORD *)v11 + 1) + 10256) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v11 + 1) + 4) + 10256) = 0; v18 = *(_DWORD *)(*((_DWORD *)v11 + 1) + 4); v19 = *(_DWORD *)(v18 + 8); *(_DWORD *)(v18 + 8) = *(_DWORD *)v19; if ( !*(_BYTE *)(*(_DWORD *)v19 + 10257) ) *(_DWORD *)(*(_DWORD *)v19 + 4) = v18; *(_DWORD *)(v19 + 4) = *(_DWORD *)(v18 + 4); v23 = *(_DWORD *)(v5 + 4); if ( v18 == *(_DWORD *)(v23 + 4) ) { *(_DWORD *)(v23 + 4) = v19; } else { v24 = *(_DWORD *)(v18 + 4); if ( v18 == *(_DWORD *)v24 ) *(_DWORD *)v24 = v19; else *(_DWORD *)(v24 + 8) = v19; } *(_DWORD *)v19 = v18; goto LABEL_42; } } *(_BYTE *)(v12 + 10256) = 1; *(_BYTE *)(v14 + 10256) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v11 + 1) + 4) + 10256) = 0; v11 = *(void **)(*((_DWORD *)v11 + 1) + 4); } *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v5 + 4) + 4) + 10256) = 1; result = a2; *(_DWORD *)a2 = v7; return result; } //----- (0048E340) -------------------------------------------------------- int __thiscall sub_48E340(void *this, int a2, int a3, int a4, int a5, int a6) { int (__thiscall *v6)(_DWORD); // eax@1 int v7; // edi@1 int (__thiscall *v8)(_DWORD); // eax@1 int v9; // edi@1 int v10; // esi@1 int v11; // esi@1 int v12; // eax@2 int v13; // esi@4 signed int v14; // edi@5 int v15; // eax@6 int (__thiscall *v16)(_DWORD); // eax@11 void *v17; // eax@11 char *v18; // edi@11 __int16 i; // ax@11 int v20; // esi@13 unsigned __int16 v21; // cx@13 int v22; // eax@13 unsigned __int16 v23; // dx@13 bool v24; // zf@14 int v25; // eax@14 int v26; // eax@15 int v27; // eax@17 int v28; // edx@18 int v29; // edx@18 int v30; // edx@19 const char *v31; // eax@22 int v33; // [sp+10h] [bp-30h]@1 int v34; // [sp+14h] [bp-2Ch]@4 int v35; // [sp+18h] [bp-28h]@6 int v36; // [sp+1Ch] [bp-24h]@11 unsigned __int16 v37; // [sp+20h] [bp-20h]@13 __int16 v38; // [sp+22h] [bp-1Eh]@13 int v39; // [sp+2Ch] [bp-14h]@1 void *v40; // [sp+30h] [bp-10h]@1 int v41; // [sp+3Ch] [bp-4h]@1 v40 = this; v39 = (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop"; sub_4675D0((int)&unk_D020420, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop"); dword_7508B8[dword_750CB8] = (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1176); v41 = 0; v7 = *(_WORD *)(v6(a3) + 22); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1240); v9 = v7 - 1000; v33 = v9; v10 = (unsigned __int8)v8(a3); v11 = v10 - (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a4 + 1240))(); if ( v11 >= 0 ) v12 = 100 * (10 - v11); else v12 = 1000; v13 = a4; v34 = v9 + v12; if ( sub_4012C0(a4) ) { v15 = sub_4012C0(a4); v14 = *((_DWORD *)sub_419030((void *)v15) + 1); v35 = v14; if ( v14 >= 0 ) goto LABEL_9; v14 = 0; } else { v14 = 1000; } v35 = v14; LABEL_9: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2372))(a3) == 1 ) v35 = v14 + 200; v16 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1324); v36 = 0; v17 = (void *)v16(a3); v18 = sub_401150(v17); for ( i = *(_WORD *)(*((_DWORD *)v18 + 2) + 12 * *((_WORD *)v18 + 7) + 4); (unsigned __int16)i < *((_WORD *)v18 + 2); i = v38 ) { v20 = (unsigned __int16)i; v21 = i; v22 = *((_DWORD *)v18 + 2); v38 = *(_WORD *)(v22 + 12 * v20 + 4); v23 = *((_WORD *)v18 + 2); v37 = v21; if ( v21 >= v23 || (v24 = *(_BYTE *)(v22 + 12 * v20 + 8) == 0, v25 = v22 + 12 * v20, v24) ) v26 = 0; else v26 = *(_DWORD *)v25; v27 = sub_401140(v26); if ( v37 >= *((_WORD *)v18 + 2) || (v28 = *((_DWORD *)v18 + 2), v24 = *(_BYTE *)(v28 + 12 * v20 + 8) == 0, v29 = v28 + 12 * v20, v24) ) v30 = 0; else v30 = *(_DWORD *)v29; v36 += (*(int (__thiscall **)(int, int))(*(_DWORD *)v27 + 72))(v27, v30); v13 = a4; } v31 = (const char *)*((_DWORD *)v40 + sub_5CFBD0((void *)v13)); if ( v31 ) sub_48DF50(v31, a2, a3, (void *)v13, a5, (int)&v33, a6); --dword_750CB8; v41 = -1; return sub_467660((int)&unk_D020420, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048E550) -------------------------------------------------------- void __stdcall sub_48E550(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 10257); v1 = i ) { sub_48E550(*((void **)i + 2)); i = *(void **)i; _LN21((char *)v1 + 52, 0x66u, 100, nullsub_2); operator delete(v1); } } //----- (0048E5A0) -------------------------------------------------------- int __thiscall sub_48E5A0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 10257) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_48D480(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 10257) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 10257) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 10257) ) { v9 = v6; } else { v9 = sub_48D460(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 10257) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_48D430(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 10257) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 10257) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 10256); *(_BYTE *)(v5 + 10256) = *(_BYTE *)(v3 + 10256); *(_BYTE *)(v3 + 10256) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 10256) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 10256) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 10256) ) { *(_BYTE *)(v15 + 10256) = 1; *(_BYTE *)(v6 + 10256) = 0; sub_48D9A0(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 10257) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v15 + 10256) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 10256) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 10256) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 10256) = 1; *(_BYTE *)(v15 + 10256) = 0; sub_48DA00(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 10256) = *(_BYTE *)(v6 + 10256); *(_BYTE *)(v6 + 10256) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 10256) = 1; sub_48D9A0(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 10256) ) { *(_BYTE *)(v15 + 10256) = 1; *(_BYTE *)(v6 + 10256) = 0; sub_48DA00(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 10257) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 10256) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 10256) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 10256) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 10256) = 1; *(_BYTE *)(v15 + 10256) = 0; sub_48D9A0(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 10256) = *(_BYTE *)(v6 + 10256); *(_BYTE *)(v6 + 10256) = 1; *(_BYTE *)(*(_DWORD *)v15 + 10256) = 1; sub_48DA00(i, v6); break; } } *(_BYTE *)(v15 + 10256) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 10256) = 1; } _LN21((void *)(v18 + 52), 0x66u, 100, nullsub_2); operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (0048E8A0) -------------------------------------------------------- int __thiscall sub_48E8A0(int this, int a2, void *a3, int a4) { int v4; // edx@1 int v5; // ecx@1 int v6; // eax@1 void *v7; // esi@1 int v8; // ebx@1 bool v9; // cl@1 int v10; // edi@2 int v11; // ecx@4 int v12; // ecx@5 int v13; // ecx@6 int v14; // edx@6 int v15; // ecx@8 int v16; // edx@8 int v17; // ecx@10 int v18; // edx@10 int v19; // edx@15 int v20; // ecx@16 int v21; // ecx@17 int v22; // edx@17 int v23; // ecx@19 int v24; // edx@19 int v25; // ecx@21 int v26; // edx@21 int v27; // edi@30 int v28; // ecx@32 int v29; // edx@33 int result; // eax@33 int v31; // eax@35 int v32; // ecx@35 int v33; // eax@36 int v34; // eax@37 int v35; // ecx@37 int v36; // eax@39 int v37; // ecx@39 int v38; // eax@41 int v39; // ecx@41 int v40; // [sp-10h] [bp-20h]@32 char v41; // [sp-Ch] [bp-1Ch]@32 int v42; // [sp-8h] [bp-18h]@32 void *v43; // [sp-4h] [bp-14h]@32 int v44; // [sp+Ch] [bp-4h]@1 char v45; // [sp+1Ch] [bp+Ch]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = a3; v8 = v5; v9 = 1; v44 = v4; v45 = 1; if ( !*(_BYTE *)(v6 + 10257) ) { v10 = *((_DWORD *)v7 + 3); while ( 1 ) { v8 = v6; if ( (_BYTE)a4 ) { v11 = *(_DWORD *)(v6 + 12); if ( v11 == v10 ) { v13 = *(_DWORD *)(v6 + 16); v14 = *((_DWORD *)v7 + 4); if ( v13 == v14 ) { v15 = *(_DWORD *)(v6 + 20); v16 = *((_DWORD *)v7 + 5); if ( v15 == v16 ) { v17 = *(_DWORD *)(v6 + 24); v18 = *((_DWORD *)v7 + 6); if ( v17 == v18 ) v12 = *(_DWORD *)(v6 + 28) - *((_DWORD *)v7 + 7); else v12 = v17 - v18; } else { v12 = v15 - v16; } } else { v12 = v13 - v14; } } else { v12 = v11 - v10; } v9 = v12 < 0 == 0; v45 = v9; if ( !v9 ) goto LABEL_27; v6 = *(_DWORD *)v6; } else { v19 = *(_DWORD *)(v6 + 12); if ( v10 == v19 ) { v21 = *((_DWORD *)v7 + 4); v22 = *(_DWORD *)(v6 + 16); if ( v21 == v22 ) { v23 = *((_DWORD *)v7 + 5); v24 = *(_DWORD *)(v6 + 20); if ( v23 == v24 ) { v25 = *((_DWORD *)v7 + 6); v26 = *(_DWORD *)(v6 + 24); if ( v25 == v26 ) v20 = *((_DWORD *)v7 + 7) - *(_DWORD *)(v6 + 28); else v20 = v25 - v26; } else { v20 = v23 - v24; } } else { v20 = v21 - v22; } } else { v20 = v10 - v19; } if ( v20 >= 0 ) { v9 = 0; v45 = 0; LABEL_27: v6 = *(_DWORD *)(v6 + 8); goto LABEL_28; } v6 = *(_DWORD *)v6; v9 = 1; v45 = 1; } LABEL_28: if ( *(_BYTE *)(v6 + 10257) ) { v4 = v44; break; } } } v27 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v4 + 4) ) { v43 = v7; v42 = v8; v41 = 1; v40 = (int)&a4; v28 = v4; LABEL_33: v29 = *(_DWORD *)sub_48E120(v28, v40, v41, v42, v43); result = a2; *(_DWORD *)a2 = v29; *(_BYTE *)(a2 + 4) = 1; return result; } sub_48D4E0(&a4); v27 = a4; } v31 = *(_DWORD *)(v27 + 12); v32 = *((_DWORD *)v7 + 3); if ( v31 == v32 ) { v34 = *(_DWORD *)(v27 + 16); v35 = *((_DWORD *)v7 + 4); if ( v34 == v35 ) { v36 = *(_DWORD *)(v27 + 20); v37 = *((_DWORD *)v7 + 5); if ( v36 == v37 ) { v38 = *(_DWORD *)(v27 + 24); v39 = *((_DWORD *)v7 + 6); if ( v38 == v39 ) v33 = *(_DWORD *)(v27 + 28) - *((_DWORD *)v7 + 7); else v33 = v38 - v39; } else { v33 = v36 - v37; } } else { v33 = v34 - v35; } } else { v33 = v31 - v32; } if ( v33 < 0 ) { v43 = v7; v42 = v8; v41 = v45; v40 = (int)&a4; v28 = v44; goto LABEL_33; } _LN21((char *)v7 + 52, 0x66u, 100, nullsub_2); operator delete(v7); result = a2; *(_DWORD *)a2 = v27; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (0048EA50) -------------------------------------------------------- int __thiscall sub_48EA50(void *this, int a2, int a3, void *a4, int a5, int a6, int a7) { void *v8; // [sp+18h] [bp-A8h]@1 char v9; // [sp+1Ch] [bp-A4h]@7 char v10; // [sp+30h] [bp-90h]@9 unsigned int v11; // [sp+B0h] [bp-10h]@1 int v12; // [sp+BCh] [bp-4h]@1 int v13; // [sp+C0h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v8 = this; sub_4675D0((int)&unk_D020420, (int)"ItemDropFromMob::DropIndexCluster::dic_ItemDrop"); dword_7508B8[dword_750CB8] = (int)"ItemDropFromMob::DropIndexCluster::dic_ItemDrop"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( a3 && *(_DWORD *)a3 && **(_WORD **)a3 < sub_4AD8E0((int)&unk_14D159B0) && a2 && a5 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 5 ) { sub_418AC0(&v9, "-"); if ( a4 ) sub_48D3F0(a4, (int)&v9); sub_649DA0((int)&v9, (int)&v10); sub_48E340((void *)(*((_DWORD *)v8 + 16917) + 400 * **(_WORD **)a3), (int)&v9, a2, a5, a6, a7); } --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"ItemDropFromMob::DropIndexCluster::dic_ItemDrop"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0048EBD0) -------------------------------------------------------- int __thiscall sub_48EBD0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 10257) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 10257) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 10257); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 10257); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_48E5A0((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_48E550(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (0048ECA0) -------------------------------------------------------- int __thiscall sub_48ECA0(void *this, int a2) { void *v2; // ebx@1 int v3; // ecx@1 int v4; // eax@1 int v5; // edx@1 int v6; // esi@1 int v7; // eax@1 int v9; // [sp+0h] [bp-281Ch]@1 int v10; // [sp+4h] [bp-2818h]@1 int v11; // [sp+8h] [bp-2814h]@1 int v12; // [sp+Ch] [bp-2810h]@1 int v13; // [sp+10h] [bp-280Ch]@1 int v14; // [sp+14h] [bp-2808h]@1 int v15; // [sp+18h] [bp-2804h]@1 int v16; // [sp+1Ch] [bp-2800h]@1 int v17; // [sp+20h] [bp-27FCh]@1 int v18; // [sp+24h] [bp-27F8h]@1 int v19; // [sp+28h] [bp-27F4h]@1 int v20; // [sp+2Ch] [bp-27F0h]@1 char v21; // [sp+30h] [bp-27ECh]@1 int v22; // [sp+2808h] [bp-14h]@1 unsigned int v23; // [sp+280Ch] [bp-10h]@1 int v24; // [sp+2818h] [bp-4h]@1 int v25; // [sp+281Ch] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v2 = this; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; _eh_vector_constructor_iterator_(&v21, 0x66u, 100, (int)sub_48D560, nullsub_2); v3 = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)a2; v10 = *(_DWORD *)(a2 + 8); v13 = v10; v5 = *(_DWORD *)(a2 + 12); v6 = *(_DWORD *)(a2 + 16); v12 = v3; v17 = v3; v14 = v5; v19 = v5; v18 = v10; v24 = 0; v11 = v4; v15 = v6; v16 = v4; v20 = v6; v22 = 0; v7 = sub_48DE90(v2, (int)&v11); sub_48E8A0((int)v2, (int)&v9, (void *)v7, 0); v24 = -1; return _LN21(&v21, 0x66u, 100, nullsub_2); } // 86FEB8: using guessed type int __security_cookie; //----- (0048EDF0) -------------------------------------------------------- void __userpurge sub_48EDF0(int a1, int a2, int a3, int a4, int a5) { int v5; // ebx@1 int v6; // eax@1 int v7; // esi@1 int v8; // ecx@1 int v9; // eax@1 int v10; // edi@1 int v11; // eax@2 int v12; // esi@4 int v13; // ebx@5 int v14; // ecx@8 int v15; // edx@8 int v16; // eax@8 int v17; // eax@9 int v18; // eax@12 int v19; // esi@12 int v20; // edi@15 int v21; // ebx@16 int v22; // edi@16 int v23; // esi@20 signed int v24; // edi@20 int v25; // edx@25 int v26; // ecx@25 int v27; // edx@25 char v28; // bl@26 int v29; // eax@26 int v30; // eax@29 int v31; // esi@29 int v32; // ecx@30 int v33; // edx@30 int v34; // eax@30 int v35; // eax@34 int v36; // edx@35 int v37; // ecx@36 int v38; // edx@37 int v39; // ecx@37 int v40; // edx@39 int v41; // ecx@39 int v42; // edx@41 int v43; // ecx@41 int *v44; // eax@45 int v45; // eax@47 int v46; // [sp-18h] [bp-109B4h]@12 int v47; // [sp-14h] [bp-109B0h]@12 int v48; // [sp-10h] [bp-109ACh]@1 int v49; // [sp-Ch] [bp-109A8h]@1 void *(__thiscall *v50)(void *); // [sp-8h] [bp-109A4h]@1 int v51; // [sp-4h] [bp-109A0h]@1 int v52; // [sp+0h] [bp-1099Ch]@30 void *v53; // [sp+4h] [bp-10998h]@1 char v54; // [sp+Bh] [bp-10991h]@9 int v55; // [sp+Ch] [bp-10990h]@2 int v56; // [sp+10h] [bp-1098Ch]@11 int v57; // [sp+14h] [bp-10988h]@1 char v58; // [sp+18h] [bp-10984h]@25 char v59; // [sp+1086Ch] [bp-130h]@21 char v60; // [sp+108ECh] [bp-B0h]@8 int v61; // [sp+1096Ch] [bp-30h]@8 int v62; // [sp+10970h] [bp-2Ch]@8 int v63; // [sp+10974h] [bp-28h]@8 int v64; // [sp+10978h] [bp-24h]@8 char v65; // [sp+1097Ch] [bp-20h]@8 unsigned int v66; // [sp+1098Ch] [bp-10h]@1 int v67; // [sp+10998h] [bp-4h]@1 int v68; // [sp+1099Ch] [bp+0h]@1 v66 = (unsigned int)&v68 ^ __security_cookie; v51 = a2; v50 = (void *(__thiscall *)(void *))a4; v49 = a3; v48 = (unsigned int)&v68 ^ __security_cookie; v5 = a1; v57 = a1; v6 = sub_4AD8E0((int)&unk_14D159B0); v7 = v6; v8 = 400 * v6 | -((unsigned __int8)(400 * (unsigned __int64)(unsigned int)v6 >> 32) != 0); v9 = unknown_libname_130((v8 + 4) | -__CFADD__(v8, 4)); v53 = (void *)v9; v10 = 0; v67 = 0; if ( v9 ) { v51 = (int)nullsub_2; v50 = sub_5CF620; v49 = v7; *(_DWORD *)v9 = v7; v55 = v9 + 4; _eh_vector_constructor_iterator_((void *)(v9 + 4), 0x190u, v49, (int)v50, (void (__thiscall *)(void *))v51); v11 = v55; } else { v11 = 0; } v67 = -1; *(_DWORD *)(v5 + 67668) = v11; v12 = 0; if ( sub_4AD8E0((int)&unk_14D159B0) > 0 ) { v13 = 0; do { memset((void *)(v13 + *(_DWORD *)(v57 + 67668)), 0, 0x190u); ++v12; v13 += 400; } while ( v12 < sub_4AD8E0((int)&unk_14D159B0) ); v5 = v57; v10 = 0; } v14 = *(_DWORD *)(a5 + 4); v61 = *(_DWORD *)a5; v15 = *(_DWORD *)(a5 + 8); v16 = *(_DWORD *)(a5 + 12); v62 = v14; v63 = v15; v64 = v16; v65 = 0; sprintf(&v60, "../9Data/Shine/World/%s/ItemDropTable.txt", &v61); if ( !sub_6434A0((void *)v5, &v60) ) { v54 = sub_6434A0((void *)v5, "../9Data/Shine/World/ItemDropTable.txt"); v17 = sub_642790(v5); if ( v54 == v10 ) { sub_639100(&unk_86DDD8, (int)"DropItemManager::dim_Load : Error in ItemDropTable.txt", v17); loc_6391B0("ItemDropFromMob::DropIndexCluster::dic_Load"); } } v56 = v10; while ( 1 ) { v51 = v56; v53 = &v46; v50 = (void *(__thiscall *)(void *))v10; v49 = v10; v48 = v10; v47 = v10; v46 = v10; strncpy((char *)&v46, "ItemGroup", 0x14u); v18 = sub_6442C0((void *)v5, v46, v47, v48, v49, (int)v50, v51); v19 = v18; if ( v18 == v10 ) break; if ( (*(_BYTE *)(v18 + 70) + *(_DWORD *)(v18 + 71) + *(_DWORD *)(v18 + 75) + *(_DWORD *)(v18 + 79) + *(_WORD *)(v18 + 66) + *(_WORD *)(v18 + 68) == *(_DWORD *)(v18 + 1560)) == v10 ) { sub_639100(&unk_86DDD8, (int)"Checksum error in DropTable where MobID is", v56); loc_6391B0("ItemDropFromMob::DropIndexCluster::dic_Load"); } v20 = (unsigned __int16)sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)(v19 + 33)); if ( v20 < sub_4AD8E0((int)&unk_14D159B0) ) { v21 = *(_DWORD *)(v57 + 67668) + 400 * v20; v22 = *(_BYTE *)(v19 + 70); if ( *(_DWORD *)(v21 + 4 * v22) ) { v51 = *(_BYTE *)(v19 + 70); sub_639100( &unk_86DDD8, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_Store : AbstateNum is duplicate", v51); loc_6391B0("ItemDropFromMob::DropItemListForSpecies::dilfs_Store"); } if ( (unsigned int)v22 >= 0x64 ) { sub_639100( &unk_86DDD8, (int)"ItemDropFromMob::DropItemListForSpecies::dilfs_Store : AbstateNum is too big", v22); loc_6391B0("ItemDropFromMob::DropItemListForSpecies::dilfs_Store"); } *(_DWORD *)(v21 + 4 * v22) = v19; v23 = v19 + 155; v24 = 45; do { if ( *(_BYTE *)sub_649DA0(v23, (int)&v59) != 45 ) sub_48ECA0(&unk_D5552C0, v23); v23 += 29; --v24; } while ( v24 ); } ++v56; v5 = v57; v10 = 0; } sub_6432E0((int)&v58); v25 = *(_DWORD *)(a5 + 4); v61 = *(_DWORD *)a5; v26 = *(_DWORD *)(a5 + 8); v62 = v25; v27 = *(_DWORD *)(a5 + 12); v51 = (int)&v61; v63 = v26; v67 = 1; v64 = v27; v65 = 0; sprintf(&v60, "../9Data/Shine/World/%s/ItemDropGroup.txt", &v61); if ( !sub_6434A0(&v58, &v60) ) { v28 = sub_6434A0(&v58, "../9Data/Shine/World/ItemDropGroup.txt"); v29 = sub_642790(&v58); if ( v28 == v10 ) { sub_639100(&unk_86DDD8, (int)"DropItemManager::dim_Load : Error in ItemDropGroup.txt", v29); loc_6391B0("ItemDropFromMob::DropIndexCluster::dic_Load"); } } v57 = v10; while ( 1 ) { v51 = v57; v55 = (int)&v46; v50 = (void *(__thiscall *)(void *))v10; v49 = v10; v48 = v10; v47 = v10; v46 = v10; strncpy((char *)&v46, "ItemDropGroup", 0x14u); v30 = sub_6442C0(&v58, v46, v47, v48, v49, (int)v50, v51); v31 = v30; if ( v30 == v10 ) break; v32 = *(_WORD *)(v30 + 60) + *(_WORD *)(v30 + 62); v52 = v10; v56 = v10; v33 = 0; v34 = v30 + 66; v55 = 4; do { v32 += *(_WORD *)(v34 - 2); v33 += *(_WORD *)v34; v56 += *(_WORD *)(v34 + 2); v52 += *(_WORD *)(v34 + 4); v34 += 8; --v55; } while ( v55 ); if ( v52 + v56 + v33 + v32 != *(_DWORD *)(v31 + 96) ) { sub_639100(&unk_86DDD8, (int)"Checksum error in ItemGroup at", v57); loc_6391B0("ItemDropFromMob::DropIndexCluster::dic_Load"); } v35 = sub_48D920((int)&unk_D5552C0, v31); v55 = v35; if ( (void *)v35 == dword_D5552C4 || ((v36 = *(_DWORD *)(v35 + 12), *(_DWORD *)v31 == v36) ? ((v38 = *(_DWORD *)(v35 + 16), v39 = *(_DWORD *)(v31 + 4), v39 == v38) ? ((v40 = *(_DWORD *)(v35 + 20), v41 = *(_DWORD *)(v31 + 8), v41 == v40) ? ((v42 = *(_DWORD *)(v35 + 24), v43 = *(_DWORD *)(v31 + 12), v43 == v42) ? (v37 = *(_DWORD *)(v31 + 16) - *(_DWORD *)(v35 + 28)) : (v37 = v43 - v42)) : (v37 = v41 - v40)) : (v37 = v39 - v38)) : (v37 = *(_DWORD *)v31 - v36), v37 < 0) ) { v53 = dword_D5552C4; v44 = (int *)&v53; } else { v44 = &v55; } v45 = *v44; if ( (void *)v45 != dword_D5552C4 && v45 != -32 ) sub_48DA60((void *)(v45 + 32), (unsigned __int8 *)(v31 + 20), v31); ++v57; v10 = 0; } v67 = -1; sub_643080(&v58); } // 48EDF0: could not find valid save-restore pair for ebx // 48EDF0: could not find valid save-restore pair for edi // 48EDF0: could not find valid save-restore pair for esi // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0048F320) -------------------------------------------------------- void __thiscall sub_48F320(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_48EBD0(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (0048F380) -------------------------------------------------------- int __thiscall sub_48F380(int this) { int v1; // esi@1 int v2; // eax@1 void *v3; // ST04_4@2 int (__thiscall **v5)(void *, char); // [sp+Ch] [bp-20h]@4 int v6; // [sp+18h] [bp-14h]@1 int v7; // [sp+1Ch] [bp-10h]@3 int v8; // [sp+28h] [bp-4h]@2 v1 = this; v6 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x2814u); if ( !v2 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 10256) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 10257) = 1; v3 = *(void **)(*(_DWORD *)(v1 + 4) + 4); v8 = 0; sub_48E550(v3); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 8) = 0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0048F450) -------------------------------------------------------- bool __thiscall sub_48F450(void *this, int a2) { ++*(_DWORD *)a2; return *(_DWORD *)a2 < *(_DWORD *)this; } //----- (0048F470) -------------------------------------------------------- signed int __thiscall sub_48F470(void *this, unsigned int *a2) { signed int result; // eax@2 if ( *a2 < *(_DWORD *)this ) result = *(_WORD *)sub_4C1A30((int)((char *)this + 1036), *a2); else result = 65535; return result; } //----- (0048F4A0) -------------------------------------------------------- char __thiscall sub_48F4A0(void *this, unsigned __int16 a2, unsigned __int8 *a3) { char result; // al@1 void *v4; // edi@1 int v5; // esi@3 int v6; // esi@9 result = *a3; v4 = this; if ( *a3 && result != 45 ) { v5 = sub_639620(this, a3); if ( v5 == -1 ) { if ( *((_DWORD *)v4 + 8257) >= 0x3E8u ) { sub_639100(&unk_86DDD8, (int)"ItemGroupClassifier::igc_Load : Too many groups", *((_DWORD *)v4 + 8257)); loc_6391B0("ItemGroupClassifier::igc_Store"); } v5 = *((_DWORD *)v4 + 8257); *((_DWORD *)v4 + 8257) = v5 + 1; sub_639590(v4, a3, v5); } else { if ( (unsigned int)v5 >= *((_DWORD *)v4 + 8257) ) { sub_639100(&unk_86DDD8, (int)"ItemGroupClassifier::igc_Load : invalid index", v5); loc_6391B0("ItemGroupClassifier::igc_Store"); } } v6 = (int)((char *)v4 + 32 * v5 + 1028); sub_64AB90((void *)v6, a2); result = sub_64AAD0(v6, 1); } return result; } //----- (0048F570) -------------------------------------------------------- bool __thiscall sub_48F570(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 bool result; // al@3 v2 = this; v3 = *(_DWORD *)(this + 4); if ( v3 && a2 ) result = (unsigned int)sub_402710(v3, a2) < *(_DWORD *)(v2 + 72); else result = 0; return result; } //----- (0048F5A0) -------------------------------------------------------- int __thiscall sub_48F5A0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 v4 = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6B8AF0; *(_DWORD *)(this + 72) = a4 * a4; strncpy((char *)(this + 8), a3, 0x3Fu); *(_DWORD *)v4 = &off_6B8AF8; return v4; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8AF8: using guessed type int (__thiscall *off_6B8AF8)(void *, char); //----- (0048F5E0) -------------------------------------------------------- int __thiscall sub_48F5E0(int this, int a2, const char *a3, int a4) { int v4; // esi@1 v4 = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6B8AF0; *(_DWORD *)(this + 72) = a4 * a4; strncpy((char *)(this + 8), a3, 0x3Fu); *(_DWORD *)v4 = &off_6B8B00; return v4; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8B00: using guessed type int (__thiscall *off_6B8B00)(void *, char); //----- (0048F620) -------------------------------------------------------- int __thiscall sub_48F620(int this, int a2, const char *a3, int a4) { int v4; // esi@1 v4 = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6B8AF0; *(_DWORD *)(this + 72) = a4 * a4; strncpy((char *)(this + 8), a3, 0x3Fu); *(_DWORD *)v4 = &off_6B8B08; return v4; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8B08: using guessed type int (__thiscall *off_6B8B08)(void *, char); //----- (0048F660) -------------------------------------------------------- void __thiscall sub_48F660(void *this) { *(_DWORD *)this = &off_6B8AF0; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); //----- (0048F670) -------------------------------------------------------- int __thiscall sub_48F670(int this) { return *(_WORD *)(this + 20); } //----- (0048F680) -------------------------------------------------------- signed int __thiscall sub_48F680(void *this, int a2) { int v2; // edx@1 unsigned __int16 v3; // ax@1 int v4; // eax@2 bool v5; // zf@2 int v6; // eax@2 int v7; // esi@3 signed int result; // eax@4 int v9; // [sp+4h] [bp-4h]@0 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); LOWORD(v9) = v3; if ( v3 < *((_WORD *)this + 2) && (v4 = 3 * v3, v5 = *(_BYTE *)(v2 + 4 * v4 + 8) == 0, v6 = v2 + 4 * v4, !v5) && (v7 = *(_DWORD *)v6) != 0 ) { (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v9); *(_DWORD *)a2 = *(_DWORD *)v7; result = 1; } else { result = 0; } return result; } //----- (0048F6E0) -------------------------------------------------------- int __thiscall sub_48F6E0(int this) { unsigned int v1; // ebx@1 unsigned __int16 i; // di@2 int v3; // esi@5 int v4; // ecx@7 int result; // eax@10 int v6; // [sp+Ch] [bp-4h]@1 v1 = 0; *(_DWORD *)(this + 33028) = 0; v6 = this; if ( (unsigned int)dword_14D20890 > 0 ) goto LABEL_3; for ( i = -1; ; i = *(_WORD *)sub_4C1A30((int)&unk_14D20C9C, v1) ) { if ( i < (unsigned int)dword_14D20894 ) { v3 = dword_14D21184 + 40 * i; if ( v3 ) { if ( *(_DWORD *)v3 ) { v4 = **(_WORD **)v3; if ( (_WORD)v4 == i ) goto LABEL_10; sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v4 + 10000 * i); } } } v3 = 0; LABEL_10: sub_48F4A0((void *)v6, i, (unsigned __int8 *)(*(_DWORD *)(v3 + 4) + 57)); sub_48F4A0((void *)v6, i, (unsigned __int8 *)(*(_DWORD *)(v3 + 4) + 97)); result = dword_14D20890; ++v1; if ( v1 >= dword_14D20890 ) break; LABEL_3: ; } return result; } // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0048F790) -------------------------------------------------------- signed __int16 __thiscall sub_48F790(void *this, int a2, int a3) { void *v3; // edi@1 signed int v4; // eax@1 __int16 v5; // si@1 signed int v7; // eax@4 int v8; // esi@8 void *v9; // edi@8 int v10; // ebx@9 int v11; // ecx@10 unsigned __int16 v12; // ax@10 bool v13; // zf@11 int v14; // eax@11 int *v15; // esi@12 signed __int16 v16; // ax@13 int v17; // eax@16 int v18; // [sp-8h] [bp-30h]@20 int v19; // [sp-4h] [bp-2Ch]@20 int v20; // [sp+14h] [bp-14h]@8 unsigned int v21; // [sp+30h] [bp+8h]@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ItemGroupClassifier::igc_Getitem"); dword_7508B8[dword_750CB8] = (int)"ItemGroupClassifier::igc_Getitem"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_639620(&unk_14D20898, (unsigned __int8 *)a2); v5 = v4; if ( v4 != -1 && (_WORD)v4 != -1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemGroupClassifier::igc_Getitem"); return v5; } v7 = sub_639620(v3, (unsigned __int8 *)a2); if ( v7 == -1 ) goto LABEL_22; if ( (unsigned int)v7 >= *((_DWORD *)v3 + 8257) ) { sub_6390B0(&unk_86DDD8, (int)"ItemGroupClassifier::operator [] : Invalid group name", a2); goto LABEL_22; } v8 = (int)((char *)v3 + 32 * v7); v9 = (void *)(v8 + 1028); v20 = v8; sub_64AAD0(v8 + 1028, 1); v21 = 0; if ( *(_WORD *)(v8 + 1048) <= 0u ) { LABEL_22: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemGroupClassifier::igc_Getitem"); return -1; } v10 = 0; while ( 1 ) { v11 = *((_DWORD *)v9 + 2); v12 = *(_WORD *)(v11 + 12 * *((_WORD *)v9 + 7) + 4); if ( v12 < *((_WORD *)v9 + 2) && (v13 = *(_BYTE *)(v11 + 12 * v12 + 8) == 0, v14 = v11 + 12 * v12, !v13) && (v15 = *(int **)v14) != 0 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v9 + 12))(v9); v10 = *v15; v16 = 1; } else { v16 = 0; } if ( !v16 ) { v19 = 0; v18 = (int)"ItemGroupClassifier::operator [] : Empty card stack"; LABEL_21: sub_639100(&unk_86DDD8, v18, v19); goto LABEL_22; } sub_64ABE0(v9, v10); v17 = sub_418CB0((int)&dword_14D20890, v10); if ( !v17 ) { v19 = (unsigned __int16)v10; v18 = (int)"ItemGroupClassifier::igc_Getitem : Invalid Item"; goto LABEL_21; } if ( (unsigned int)sub_63D370((int)&unk_14D130B8, *(_DWORD *)(*(_DWORD *)v17 + 207)) & a3 ) break; ++v21; if ( v21 >= *(_WORD *)(v20 + 1048) ) goto LABEL_22; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemGroupClassifier::igc_Getitem"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0048F9E0) -------------------------------------------------------- char __stdcall sub_48F9E0(int a1, int a2) { int v2; // eax@1 int v3; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ItemGroupClassifier::igc_ChargedDuringUse"); dword_7508B8[dword_750CB8] = (int)"ItemGroupClassifier::igc_ChargedDuringUse"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 52))(a2 + 8); if ( v2 && (v3 = *(_DWORD *)v2 & 0xFF) != 0 && v3 != 255 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemGroupClassifier::igc_ChargedDuringUse"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemGroupClassifier::igc_ChargedDuringUse"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048FAD0) -------------------------------------------------------- int __thiscall sub_48FAD0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 void (__stdcall *v5)(_DWORD, _DWORD); // edx@3 char v7; // [sp+Ch] [bp-28h]@3 int v8; // [sp+24h] [bp-10h]@1 int v9; // [sp+30h] [bp-4h]@1 v3 = this; v8 = (int)"LuaFuncTrigger::TriggerChat::tc_PullTheTrigger"; sub_4675D0((int)&unk_D020420, (int)"LuaFuncTrigger::TriggerChat::tc_PullTheTrigger"); dword_7508B8[dword_750CB8] = (int)"LuaFuncTrigger::TriggerChat::tc_PullTheTrigger"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); v9 = 0; if ( v4 ) { sub_5D4550((int)&v7, v4, a2, a3); v5 = *(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v3 + 1) + 2916); LOBYTE(v9) = 1; v5((char *)v3 + 8, &v7); LOBYTE(v9) = 0; sub_5D4580(&v7); --dword_750CB8; } else { --dword_750CB8; } v9 = -1; return sub_467660((int)&unk_D020420, (int)"LuaFuncTrigger::TriggerChat::tc_PullTheTrigger"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048FBB0) -------------------------------------------------------- void *__thiscall sub_48FBB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B8AF0; if ( a2 & 1 ) operator delete(this); return v2; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); //----- (0048FBE0) -------------------------------------------------------- int __thiscall sub_48FBE0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 void (__stdcall *v4)(_DWORD, _DWORD); // eax@3 char v6; // [sp+Ch] [bp-28h]@3 int v7; // [sp+24h] [bp-10h]@1 int v8; // [sp+30h] [bp-4h]@1 v2 = this; v7 = (int)"LuaFuncTrigger::TriggerJump::tj_PullTheTrigger"; sub_4675D0((int)&unk_D020420, (int)"LuaFuncTrigger::TriggerJump::tj_PullTheTrigger"); dword_7508B8[dword_750CB8] = (int)"LuaFuncTrigger::TriggerJump::tj_PullTheTrigger"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1); v8 = 0; if ( v3 ) { sub_5D4550((int)&v6, v3, a2, (int)byte_6A492E); v4 = *(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v2 + 1) + 2916); LOBYTE(v8) = 1; v4((char *)v2 + 8, &v6); LOBYTE(v8) = 0; sub_5D4580(&v6); --dword_750CB8; } else { --dword_750CB8; } v8 = -1; return sub_467660((int)&unk_D020420, (int)"LuaFuncTrigger::TriggerJump::tj_PullTheTrigger"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048FCC0) -------------------------------------------------------- int __thiscall sub_48FCC0(void *this, int a2, __int16 a3) { void *v3; // esi@1 int v4; // eax@1 void (__stdcall *v5)(_DWORD, _DWORD); // edx@3 char v7; // [sp+Ch] [bp-28h]@3 int v8; // [sp+24h] [bp-10h]@1 int v9; // [sp+30h] [bp-4h]@1 v3 = this; v8 = (int)"LuaFuncTrigger::TriggerUseItem::tui_PullTheTrigger"; sub_4675D0((int)&unk_D020420, (int)"LuaFuncTrigger::TriggerUseItem::tui_PullTheTrigger"); dword_7508B8[dword_750CB8] = (int)"LuaFuncTrigger::TriggerUseItem::tui_PullTheTrigger"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); v9 = 0; if ( v4 ) { sub_5D4670((int)&v7, v4, a2, a3); v5 = *(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v3 + 1) + 2916); LOBYTE(v9) = 1; v5((char *)v3 + 8, &v7); LOBYTE(v9) = 0; sub_5D4580(&v7); --dword_750CB8; } else { --dword_750CB8; } v9 = -1; return sub_467660((int)&unk_D020420, (int)"LuaFuncTrigger::TriggerUseItem::tui_PullTheTrigger"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0048FDE0) -------------------------------------------------------- int __stdcall sub_48FDE0(int a1, __int16 a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int (**v5)(); // [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 v5 = &off_6A86A4; v6 = a1; v2 = 0; v8 = (*(int (**)(void))(*(_DWORD *)a1 + 8))(); v5 = (int (**)())&off_6A86BC; v9 = a2; v10 = 0; v7 = 0; if ( (unsigned __int8)off_6A86BC(&v5) || sub_63F7F0(&v5) ) { do { v4 = (**(int (__stdcall ***)(_DWORD))v6)(v7); v2 += (*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 28))(v4 + 8); } while ( sub_63F7F0(&v5) ); result = v2; } else { result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); //----- (0048FEA0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_48FEA0() { return &unk_13247470; } //----- (0048FEB0) -------------------------------------------------------- char *__thiscall sub_48FEB0(void *this) { return (char *)this + 7936; } //----- (0048FEC0) -------------------------------------------------------- int __thiscall sub_48FEC0(int this) { int result; // eax@1 int v2; // ecx@1 int v3; // ecx@1 result = this; *(_DWORD *)(this + 15880) = 63; *(_DWORD *)(this + 15876) = 0; v2 = *(_DWORD *)(this + 15880) & 1; *(_DWORD *)(result + 15876) = v2; v3 = 248 * v2 + result + 4; *(_DWORD *)result = 0; *(_WORD *)(v3 + 4) = -1; *(_BYTE *)(v3 + 228) = 0; *(_BYTE *)(v3 + 220) = 0; *(_BYTE *)(v3 + 112) = 0; *(_BYTE *)(v3 + 6) = 0; return result; } //----- (0048FF10) -------------------------------------------------------- char *__thiscall sub_48FF10(void *this) { char *result; // eax@1 signed int v2; // ecx@1 result = (char *)this + 4; v2 = 64; do { *((_WORD *)result + 2) = -1; *(_DWORD *)result = 0; result += 248; --v2; } while ( v2 ); return result; } //----- (0048FF40) -------------------------------------------------------- int __thiscall sub_48FF40(void *this, __int16 a2, int a3, char a4) { void *v4; // esi@1 int result; // eax@1 v4 = this; result = sub_48FDE0((int)((char *)this + 36484), a2); if ( a4 ) { if ( *((_BYTE *)v4 + 23824) & 0x10 ) { result += sub_48FDE0((int)((char *)v4 + 85744), a2); *(_BYTE *)a3 = 1; } else { *(_BYTE *)a3 = 0; } } else { if ( *(_BYTE *)a3 ) result += sub_48FDE0((int)((char *)v4 + 85744), a2); } return result; } //----- (0048FFC0) -------------------------------------------------------- int __thiscall sub_48FFC0(void *this) { void *v1; // esi@1 int v2; // edx@1 int v3; // ebx@1 FILE *v4; // eax@1 int v5; // esi@14 int v6; // esi@22 unsigned int v7; // esi@30 int v8; // esi@38 int v9; // esi@46 int v10; // esi@54 unsigned int v11; // esi@62 int v12; // esi@70 int v13; // esi@78 int v14; // esi@86 unsigned int v15; // esi@94 int v16; // esi@102 int v17; // esi@110 unsigned int v18; // esi@118 int v19; // esi@126 int v20; // esi@134 int v21; // esi@142 int v22; // esi@150 int v23; // eax@161 int v25; // [sp+4h] [bp-1420h]@1 void *v26; // [sp+Ch] [bp-1418h]@1 signed int v27; // [sp+10h] [bp-1414h]@1 char v28; // [sp+14h] [bp-1410h]@140 char v29; // [sp+114h] [bp-1310h]@52 char v30; // [sp+214h] [bp-1210h]@132 char v31; // [sp+314h] [bp-1110h]@20 char v32; // [sp+414h] [bp-1010h]@124 char v33; // [sp+514h] [bp-F10h]@36 char v34; // [sp+614h] [bp-E10h]@116 char v35; // [sp+714h] [bp-D10h]@148 char v36; // [sp+814h] [bp-C10h]@4 char v37; // [sp+914h] [bp-B10h]@108 char v38; // [sp+A14h] [bp-A10h]@44 char v39; // [sp+B14h] [bp-910h]@100 char v40; // [sp+C14h] [bp-810h]@28 char v41; // [sp+D14h] [bp-710h]@92 char v42; // [sp+E14h] [bp-610h]@12 char v43; // [sp+F14h] [bp-510h]@84 char v44; // [sp+1014h] [bp-410h]@156 char v45; // [sp+1114h] [bp-310h]@76 char v46; // [sp+1214h] [bp-210h]@68 char v47; // [sp+1314h] [bp-110h]@60 unsigned int v48; // [sp+1414h] [bp-10h]@1 int v49; // [sp+1420h] [bp-4h]@1 int v50; // [sp+1424h] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v1 = this; v26 = this; sub_4675D0((int)&unk_D020420, (int)"ItemLotInspector::ili_History"); dword_7508B8[dword_750CB8] = (int)"ItemLotInspector::ili_History"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 3970); v3 = *((_DWORD *)v1 + 3969); v49 = 0; v27 = 0; v4 = dword_132449E8; v25 = v2; do { v3 = v25 & (v3 + 1); if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v36, "%.255s", "\t"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v36, dword_132449E8); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v3); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v42, "%.255s", " Act["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v42, dword_132449E8); v4 = dword_132449E8; } } } } } v5 = *((_DWORD *)v26 + 62 * v3 + 1); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v5); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v31, "%.255s", "] From0["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v31, dword_132449E8); v4 = dword_132449E8; } } } } v6 = *((_BYTE *)v26 + 248 * v3 + 10); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v6); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v40, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v40, dword_132449E8); v4 = dword_132449E8; } } } } v7 = (unsigned int)*(_WORD *)((char *)v26 + 248 * v3 + 11) >> 10; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v7); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v33, "%.255s", &word_6B0394); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v33, dword_132449E8); v4 = dword_132449E8; } } } } v8 = *(_WORD *)((char *)v26 + 248 * v3 + 11) & 0x3FF; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v8); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v38, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v38, dword_132449E8); v4 = dword_132449E8; } } } } v9 = *(_WORD *)((char *)v26 + 248 * v3 + 13); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v9); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v29, "%.255s", "] From1["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v29, dword_132449E8); v4 = dword_132449E8; } } } } v10 = *((_BYTE *)v26 + 248 * v3 + 116); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v10); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v47, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v47, dword_132449E8); v4 = dword_132449E8; } } } } v11 = (unsigned int)*(_WORD *)((char *)v26 + 248 * v3 + 117) >> 10; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v11); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v46, "%.255s", &word_6B0394); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v46, dword_132449E8); v4 = dword_132449E8; } } } } v12 = *(_WORD *)((char *)v26 + 248 * v3 + 117) & 0x3FF; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v12); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v45, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v45, dword_132449E8); v4 = dword_132449E8; } } } } v13 = *(_WORD *)((char *)v26 + 248 * v3 + 119); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v13); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v43, "%.255s", "] To0["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v43, dword_132449E8); v4 = dword_132449E8; } } } } v14 = *((_BYTE *)v26 + 248 * v3 + 224); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v14); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v41, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v41, dword_132449E8); v4 = dword_132449E8; } } } } v15 = (unsigned int)*(_WORD *)((char *)v26 + 248 * v3 + 225) >> 10; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v15); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v39, "%.255s", &word_6B0394); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v39, dword_132449E8); v4 = dword_132449E8; } } } } v16 = *(_WORD *)((char *)v26 + 248 * v3 + 225) & 0x3FF; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v16); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v37, "%.255s", "] To1["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v37, dword_132449E8); v4 = dword_132449E8; } } } } v17 = *((_BYTE *)v26 + 248 * v3 + 232); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v17); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v34, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v34, dword_132449E8); v4 = dword_132449E8; } } } } v18 = (unsigned int)*(_WORD *)((char *)v26 + 248 * v3 + 233) >> 10; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v18); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v32, "%.255s", &word_6B0394); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v32, dword_132449E8); v4 = dword_132449E8; } } } } v19 = *(_WORD *)((char *)v26 + 248 * v3 + 233) & 0x3FF; if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v19); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v30, "%.255s", "] MoveLot["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v30, dword_132449E8); v4 = dword_132449E8; } } } } v20 = *((_DWORD *)v26 + 62 * v3 + 60); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v20); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v28, "%.255s", "] TotalLot["); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v28, dword_132449E8); v4 = dword_132449E8; } } } } v21 = *((_DWORD *)v26 + 62 * v3 + 61); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v21); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v35, "%.255s", "/"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v35, dword_132449E8); v4 = dword_132449E8; } } } } v22 = *((_BYTE *)v26 + 248 * v3 + 248); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fprintf(dword_132449E8, "%d", v22); v4 = dword_132449E8; } } if ( byte_7493ED ) { if ( byte_13244B6C ) { sprintf(&v44, "%.255s", "]"); sub_418E40((__time32_t)byte_132448E8); v4 = dword_132449E8; if ( dword_132449E8 ) { fputs(&v44, dword_132449E8); v4 = dword_132449E8; } } if ( byte_7493ED && byte_13244B6C && v4 ) { v23 = sub_418E40((__time32_t)byte_132448E8); sub_654AB0(10, (FILE *)v23); fflush(dword_132449E8); fclose(dword_132449E8); v4 = 0; dword_132449E8 = 0; } } } ++v27; } while ( v27 < 64 ); --dword_750CB8; v49 = -1; return sub_467660((int)&unk_D020420, (int)"ItemLotInspector::ili_History"); } // 6B0394: using guessed type __int16 word_6B0394; // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244B6C: using guessed type char byte_13244B6C; //----- (00490CA0) -------------------------------------------------------- char __thiscall sub_490CA0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@3 __time32_t v6; // eax@7 __time32_t v7; // esi@7 FILE *v8; // eax@9 int v9; // ebx@11 __time32_t v10; // eax@11 __time32_t v11; // esi@11 FILE *v12; // eax@13 int v13; // ebx@15 __time32_t v14; // eax@15 __time32_t v15; // esi@15 FILE *v16; // eax@17 int v17; // ebx@19 __time32_t v18; // eax@19 __time32_t v19; // esi@19 FILE *v20; // eax@21 char result; // al@23 int v22; // [sp+14h] [bp-10h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ItemLotInspector::ili_ItemCheck"); dword_7508B8[dword_750CB8] = (int)"ItemLotInspector::ili_ItemCheck"; dword_750AB8[dword_750CB8++] = -1; v22 = (int)((char *)v4 + 248 * *((_DWORD *)v4 + 3969) + 4); if ( a3 && *(_WORD *)a3 != *((_WORD *)v4 + 124 * *((_DWORD *)v4 + 3969) + 4) ) { v5 = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); if ( dword_132449E8 ) fprintf(dword_132449E8, "%d", v5); } } v6 = sub_418EA0((__time32_t)byte_132448E8, (int)" ItemID not match "); v7 = v6; if ( byte_7493ED ) { if ( *(_BYTE *)(v6 + 644) ) { sub_418E40(v6); v8 = *(FILE **)(v7 + 256); if ( v8 ) fprintf(v8, "%d", a4); } } v9 = *(_DWORD *)v4; v10 = sub_418EA0(v7, (int)"/"); v11 = v10; if ( byte_7493ED ) { if ( *(_BYTE *)(v10 + 644) ) { sub_418E40(v10); v12 = *(FILE **)(v11 + 256); if ( v12 ) fprintf(v12, "%d", v9); } } v13 = *(_WORD *)a3; v14 = sub_418EA0(v11, (int)" "); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); v16 = *(FILE **)(v15 + 256); if ( v16 ) fprintf(v16, "%d", v13); } } v17 = *(_WORD *)(v22 + 4); v18 = sub_418EA0(v15, (int)"/"); v19 = v18; if ( byte_7493ED && *(_BYTE *)(v18 + 644) ) { sub_418E40(v18); v20 = *(FILE **)(v19 + 256); if ( v20 ) fprintf(v20, "%d", v17); } sub_418F20(v19, (int)&unk_13359E04); sub_48FFC0(v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemLotInspector::ili_ItemCheck"); result = 0; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemLotInspector::ili_ItemCheck"); result = 1; } return result; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244B6C: using guessed type char byte_13244B6C; //----- (00490F00) -------------------------------------------------------- char __thiscall sub_490F00(void *this, int a2) { void *v2; // edi@1 int v4; // ebx@3 int v5; // ebx@4 __time32_t v6; // eax@8 __time32_t v7; // ebx@8 FILE *v8; // eax@10 int v9; // ecx@21 int v10; // ST18_4@26 int v11; // eax@26 __time32_t v12; // eax@26 __time32_t v13; // eax@26 __time32_t v14; // eax@26 int v15; // ST18_4@30 int v16; // ST10_4@30 int v17; // ST08_4@30 int v18; // eax@30 __time32_t v19; // eax@30 __time32_t v20; // eax@30 __time32_t v21; // eax@30 __time32_t v22; // eax@30 __time32_t v23; // eax@30 __time32_t v24; // eax@30 __time32_t v25; // eax@30 int v26; // [sp+14h] [bp-10h]@21 __int16 v27; // [sp+16h] [bp-Eh]@13 int v28; // [sp+2Ch] [bp+8h]@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ItemLotInspector::ili_Check"); dword_7508B8[dword_750CB8] = (int)"ItemLotInspector::ili_Check"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_DWORD *)v2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemLotInspector::ili_Check"); return 1; } v4 = (int)((char *)v2 + 248 * *((_DWORD *)v2 + 3969) + 4); if ( *((_WORD *)v2 + 124 * *((_DWORD *)v2 + 3969) + 4) == -1 ) { v5 = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); if ( dword_132449E8 ) fprintf(dword_132449E8, "%d", v5); } } v28 = *(_DWORD *)v2; v6 = sub_418EA0((__time32_t)byte_132448E8, (int)" ItemData Null "); v7 = v6; if ( byte_7493ED && *(_BYTE *)(v6 + 644) ) { sub_418E40(v6); v8 = *(FILE **)(v7 + 256); if ( v8 ) fprintf(v8, "%d", v28); } sub_418F20(v7, (int)&unk_13359E04); sub_48FFC0(v2); goto LABEL_31; } v27 = *(_WORD *)((char *)v2 + 248 * *((_DWORD *)v2 + 3969) + 225) >> 10; if ( v27 == 12 || (*(_WORD *)((char *)v2 + 248 * *((_DWORD *)v2 + 3969) + 11) & 0xFC00) == 2048 || v27 == 3 || v27 == 13 || v27 == 14 || v27 == 15 || v27 == 16 ) goto LABEL_14; v9 = 0; v26 = 0; if ( *((_BYTE *)v2 + 248 * *((_DWORD *)v2 + 3969) + 10) ) v9 = (int)((char *)v2 + 248 * *((_DWORD *)v2 + 3969) + 13); if ( *((_BYTE *)v2 + 248 * *((_DWORD *)v2 + 3969) + 116) ) v26 = (int)((char *)v2 + 248 * *((_DWORD *)v2 + 3969) + 119); if ( v9 ) { if ( !sub_490CA0(v2, a2, v9, 0) || !sub_490CA0(v2, a2, v26, 1) ) goto LABEL_31; if ( (*(int (__thiscall **)(int, _DWORD, int, _DWORD))(*(_DWORD *)a2 + 2416))(a2, *(_WORD *)(v4 + 4), v4 + 244, 0) != *(_DWORD *)(v4 + 240) ) { v15 = *(_DWORD *)v2; v16 = (*(int (__thiscall **)(int, _DWORD, int, _DWORD))(*(_DWORD *)a2 + 2416))( a2, *(_WORD *)(v4 + 4), v4 + 244, 0); v17 = *(_DWORD *)(v4 + 240); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v19 = sub_43B910((__time32_t)byte_132448E8, v18); v20 = sub_418EA0(v19, (int)" TotalItemNumber Not Match "); v21 = sub_43B910(v20, v17); v22 = sub_418EA0(v21, (int)" != "); v23 = sub_43B910(v22, v16); v24 = sub_418EA0(v23, (int)" : "); v25 = sub_43B910(v24, v15); sub_418F20(v25, (int)&unk_13359E04); sub_48FFC0(v2); goto LABEL_31; } LABEL_14: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemLotInspector::ili_Check"); return 1; } v10 = *(_DWORD *)v2; v11 = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); v12 = sub_43B910((__time32_t)byte_132448E8, v11); v13 = sub_418EA0(v12, (int)" From0 Null "); v14 = sub_43B910(v13, v10); sub_418F20(v14, (int)&unk_13359E04); sub_48FFC0(v2); LABEL_31: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemLotInspector::ili_Check"); return 0; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244B6C: using guessed type char byte_13244B6C; //----- (00491260) -------------------------------------------------------- char __thiscall sub_491260(int this, char a2) { int v2; // esi@2 int v3; // eax@2 int v4; // eax@2 int v5; // eax@3 if ( a2 ) { v2 = this + 7936; sub_490F00((void *)(this + 7936), this); v3 = *(_DWORD *)(v2 + 15880) & (*(_DWORD *)(v2 + 15876) + 1); *(_DWORD *)(v2 + 15876) = v3; v4 = 248 * v3 + v2 + 4; *(_DWORD *)v2 = 0; *(_WORD *)(v4 + 4) = -1; } else { v5 = *(_DWORD *)(this + 23816) & (*(_DWORD *)(this + 23812) + 1); *(_DWORD *)(this + 23812) = v5; v4 = 248 * v5 + this + 7940; *(_DWORD *)(this + 7936) = 0; *(_WORD *)(v4 + 4) = -1; } *(_BYTE *)(v4 + 228) = 0; *(_BYTE *)(v4 + 220) = 0; *(_BYTE *)(v4 + 112) = 0; *(_BYTE *)(v4 + 6) = 0; return 1; } //----- (004912F0) -------------------------------------------------------- int __thiscall sub_4912F0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 720896); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this; while ( *(_DWORD *)v4 != a2 ) { ++v3; v4 += 88; if ( v3 >= v2 ) goto LABEL_5; } result = this + 88 * v3; } return result; } //----- (00491330) -------------------------------------------------------- int __stdcall sub_491330(int a1, int a2) { signed int v2; // eax@3 int v3; // edx@5 int result; // eax@5 if ( *(_DWORD *)(a1 + 4) >= 10 ) { sub_639100(&unk_86DDD8, (int)"ItemMall::im_NewSet : Too many Set", *(_DWORD *)a1); loc_6391B0("ItemMall::im_AddSet"); } *(_DWORD *)(a1 + 8 * *(_DWORD *)(a1 + 4) + 12) = *(_DWORD *)(a2 + 36); v2 = sub_639620(&unk_14D20898, (unsigned __int8 *)(a2 + 4)); if ( v2 == -1 ) LOWORD(v2) = -1; *(_WORD *)(a1 + 8 * *(_DWORD *)(a1 + 4) + 8) = v2; v3 = *(_DWORD *)(a1 + 4); result = *(_WORD *)(a1 + 8 * v3 + 8) != -1; if ( *(_WORD *)(a1 + 8 * v3 + 8) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemMall::im_AddSet : Null Item", a2 + 4); result = loc_6391B0("ItemMall::im_AddSet"); } ++*(_DWORD *)(a1 + 4); return result; } //----- (004913E0) -------------------------------------------------------- FILE *__usercall sub_4913E0(int a1, int a2, __int16 a3) { void *v3; // eax@1 FILE *result; // eax@2 int v5; // eax@3 v3 = off_849C18; *(_WORD *)off_849C18 = 12323; *((_WORD *)v3 + 3) = a3; *(_DWORD *)((char *)v3 + 2) = a1; if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, a2, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ItemMallError : Packet Too Long", 8); } return result; } //----- (00491450) -------------------------------------------------------- void *__thiscall sub_491450(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 61, 40) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 61, 61, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00491500) -------------------------------------------------------- void *__thiscall sub_491500(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1001, 29) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1001, 1001, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004915B0) -------------------------------------------------------- void *__thiscall sub_4915B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B8E0C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B8E0C: using guessed type int (__thiscall *off_6B8E0C)(void *, char); //----- (004915E0) -------------------------------------------------------- void *__thiscall sub_4915E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B8E14; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B8E14: using guessed type int (__thiscall *off_6B8E14)(void *, char); //----- (00491610) -------------------------------------------------------- int __thiscall sub_491610(int this, int a2) { int v2; // esi@1 v2 = this; if ( *(_DWORD *)(this + 720896) >= 8192 ) { sub_639100(&unk_86DDD8, (int)"ItemMall::im_NewSet : Too many Goods", *(_DWORD *)(this + 720896) < 8192); loc_6391B0("ItemMall::im_NewSet"); } *(_DWORD *)(88 * *(_DWORD *)(v2 + 720896) + v2) = *(_DWORD *)a2; *(_DWORD *)(88 * *(_DWORD *)(v2 + 720896) + v2 + 4) = 0; return sub_491330(v2 + 88 * (*(_DWORD *)(v2 + 720896))++, a2); } //----- (00491690) -------------------------------------------------------- int __thiscall sub_491690(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@5 int v6; // eax@7 int v8; // [sp-4h] [bp-24h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D56DC6C & 1) ) { dword_D56DC6C |= 1u; word_D56DC68 = 94; atexit(nullsub_56); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D56DC68 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 13411; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 840))(v4); *((_WORD *)v5 + 6) = 24 * *(_WORD *)(a2 + 2); *((_WORD *)v5 + 7) = 24 * *(_WORD *)(a2 + 2) + 23; if ( sub_4C81E0(&off_849C18, 16) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ : Packet Too Long", 16); } v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 33, 4162); v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D56DC68: using guessed type __int16 word_D56DC68; // D56DC6C: using guessed type int dword_D56DC6C; // 14D16430: using guessed type int dword_14D16430; //----- (00491840) -------------------------------------------------------- int __stdcall sub_491840(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHARGED_LIST_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CHARGED_LIST_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1956))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHARGED_LIST_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00491930) -------------------------------------------------------- int __thiscall sub_491930(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@10 int (__thiscall *v6)(_DWORD); // eax@13 int v7; // eax@13 void *v8; // ebx@17 int v9; // eax@17 int v10; // edx@17 int v11; // eax@17 bool v12; // cf@17 int v13; // edi@19 int v14; // edx@20 int v15; // eax@21 int v16; // eax@21 int v17; // eax@21 int v18; // ecx@21 unsigned __int8 v19; // al@25 int v20; // ecx@25 int v21; // edi@25 int v22; // eax@25 int v23; // eax@26 unsigned __int16 v24; // di@28 int v25; // edx@28 unsigned __int16 v26; // ST10_2@28 void *v27; // edi@29 int v28; // ST10_4@29 char *v29; // eax@29 int v30; // eax@31 int v31; // edx@31 int v32; // ecx@31 int v33; // eax@32 int v34; // edi@32 void (__thiscall *v35)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@32 int v36; // eax@32 int v37; // edi@34 int v38; // eax@38 int v39; // edx@39 unsigned int v41; // [sp-4h] [bp-154h]@1 int v42[32]; // [sp+Ch] [bp-144h]@21 int v43; // [sp+8Ch] [bp-C4h]@1 int v44; // [sp+90h] [bp-C0h]@28 int (**v45)(); // [sp+94h] [bp-BCh]@13 int *v46; // [sp+A4h] [bp-ACh]@13 int v47; // [sp+A8h] [bp-A8h]@13 int v48; // [sp+ACh] [bp-A4h]@13 int v49; // [sp+B0h] [bp-A0h]@28 int i; // [sp+B4h] [bp-9Ch]@26 int v51; // [sp+B8h] [bp-98h]@25 int v52; // [sp+BCh] [bp-94h]@28 int v53; // [sp+C0h] [bp-90h]@1 int v54; // [sp+C4h] [bp-8Ch]@10 int v55; // [sp+C8h] [bp-88h]@17 int v56; // [sp+CCh] [bp-84h]@12 int v57; // [sp+D0h] [bp-80h]@29 int v58; // [sp+D4h] [bp-7Ch]@31 __int16 v59; // [sp+D8h] [bp-78h]@29 unsigned int v60; // [sp+140h] [bp-10h]@1 int v61; // [sp+14Ch] [bp-4h]@1 int v62; // [sp+150h] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v41 = (unsigned int)&v62 ^ __security_cookie; v4 = (int)this; v53 = a2; v43 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ"; dword_750AB8[dword_750CB8++] = -1; v61 = 0; if ( !(dword_D56DC74 & 1) ) { dword_D56DC74 |= 1u; word_D56DC70 = 94; atexit(nullsub_57); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_D56DC70) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4162); --dword_750CB8; v61 = -1; } else { if ( *(_DWORD *)(v4 + 122) ) { if ( *(_BYTE *)(v4 + 160360) ) { v5 = sub_62F180(v4 + 160364, *(_DWORD *)(a2 + 2)); v54 = v5; if ( v5 && (v56 = sub_4912F0((int)&unk_D56DC78, *(_DWORD *)(v5 + 4))) != 0 ) { sub_43BB20((int)&v45, v4 + 36484, v4 + 160312); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v61) = 1; v7 = v6(v4); v46 = (int *)&v45; v47 = v7; v48 = 9; if ( sub_486D40(&v46) ) { if ( *(_DWORD *)(v4 + 160752) == -1 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 13413; *((_WORD *)v8 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((char *)v8 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 840))(v4); *((_WORD *)v8 + 4) = *(_WORD *)(v4 + 58692); v9 = v54; *(_DWORD *)((char *)v8 + 14) = *(_DWORD *)v54; *(_DWORD *)((char *)v8 + 18) = *(_DWORD *)(v9 + 4); *(_DWORD *)((char *)v8 + 22) = *(_DWORD *)(v9 + 8); v10 = *(_DWORD *)(v9 + 12); v11 = v56; *(_DWORD *)((char *)v8 + 26) = v10; v12 = *(_DWORD *)(v11 + 4) < 0x20u; v55 = 0; if ( v12 ) { v13 = (int)((char *)v8 + 43); while ( 1 ) { v14 = v56; if ( v55 >= *(_DWORD *)(v56 + 4) ) break; *(_DWORD *)(v13 - 12) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v15 = *(_DWORD *)(v4 + 122); *(_DWORD *)(v13 - 8) = *(_DWORD *)v15; *(_DWORD *)(v13 - 4) = *(_DWORD *)(v15 + 4); *(_DWORD *)v13 = *(_DWORD *)(v15 + 8); v16 = *(_DWORD *)(v4 + 102); *(_DWORD *)(v13 + 4) = *(_DWORD *)v16; *(_DWORD *)(v13 + 8) = *(_DWORD *)(v16 + 4); *(_WORD *)(v13 + 12) = *((_WORD *)v46 + 4) & 0x3FF | 0x2400; v17 = (**(int (__stdcall ***)(_DWORD))v46[1])(v46[2]); v18 = v55; v42[v55] = v17; v55 = v18 + 1; v13 += 38; if ( !sub_486DA0((void **)&v46) ) { v14 = v56; break; } } if ( v55 == *(_DWORD *)(v14 + 4) ) { v19 = *(_BYTE *)(v14 + 4); v20 = v19; *((_BYTE *)v8 + 30) = v19; v21 = (int)((char *)v8 + 38 * v19 + 31); v22 = v21; v54 = v21; v51 = v21; v55 = 0; if ( v20 <= 0 ) { LABEL_34: v37 = 38 * *((_BYTE *)v8 + 30) + v22 - v21 + 31; if ( sub_4C81E0(&off_849C18, v37) ) { v38 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v38); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ : Packet Too Long", v37); } v39 = v53; ++*(_WORD *)(v4 + 58692); *(_DWORD *)(v4 + 160752) = *(_DWORD *)(v39 + 2); --dword_750CB8; } else { v23 = v14 + 12; v56 = (int)((char *)v8 + 65); for ( i = v14 + 12; ; v23 = i ) { v24 = *(_WORD *)(v23 - 4); v25 = *(_DWORD *)v23; v26 = *(_WORD *)(v23 - 4); v49 = *(_WORD *)(v23 - 4); v44 = v25; v52 = sub_418CB0((int)&dword_14D20890, v26); if ( !v52 ) { sub_4913E0(*(_DWORD *)(v53 + 2), v4, 4172); --dword_750CB8; goto LABEL_40; } v27 = sub_63ACA0(dword_1508B168, v24); v28 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v29 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v57, v49, 9, *((_DWORD *)v29 + 4), v28); v59 = v49; (*(void (__thiscall **)(void *, int, int *, _DWORD, unsigned int))(*(_DWORD *)v27 + 20))( v27, v49, &v57, "-o", v41); (*(void (__thiscall **)(void *, __int16 *, int))(*(_DWORD *)v27 + 32))(v27, &v59, v44); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v27 + 40))(v27) == 24 ) (*(void (__thiscall **)(void *, __int16 *, _DWORD))(*(_DWORD *)v27 + 108))( v27, &v59, *(_DWORD *)(*(_DWORD *)v52 + 106)); v30 = v56; v31 = v58; *(_DWORD *)(v56 - 8) = v57; *(_WORD *)v30 = v59; v32 = v51; *(_DWORD *)(v30 - 4) = v31; v41 = v32; *(_WORD *)(v30 + 2) = v32 - (_WORD)v8 - 2; v51 = (*(int (__thiscall **)(void *, __int16 *))(*(_DWORD *)v27 + 4))(v27, &v59); if ( v51 - v54 >= 7000 ) break; v33 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v34 = v55; v35 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 64); v52 = *(_WORD *)(v33 + 4); v35(v4 + 58688, v52, v42[v55], &v57, v56 - 10, v56 - 10); v36 = *((_BYTE *)v8 + 30); i += 8; v56 += 38; v55 = v34 + 1; if ( v34 + 1 >= v36 ) { v22 = v51; v21 = v54; goto LABEL_34; } } sub_4913E0(*(_DWORD *)(v53 + 2), v4, 4167); --dword_750CB8; } } else { sub_4913E0(*(_DWORD *)(v53 + 2), v4, 4165); --dword_750CB8; } } else { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4167); --dword_750CB8; } LABEL_40: v61 = -1; } else { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4171); --dword_750CB8; v61 = -1; } } else { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4165); --dword_750CB8; v61 = -1; } v45 = &off_6A86A4; } else { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4164); --dword_750CB8; v61 = -1; } } else { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4163); --dword_750CB8; v61 = -1; } } else { sub_4913E0(*(_DWORD *)(a2 + 2), v4, 4166); --dword_750CB8; v61 = -1; } } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D56DC70: using guessed type __int16 word_D56DC70; // D56DC74: using guessed type int dword_D56DC74; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 491930: using guessed type int var_144[32]; //----- (00491F70) -------------------------------------------------------- int __stdcall sub_491F70(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHARGED_WITHDRAW_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CHARGED_WITHDRAW_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1960))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHARGED_WITHDRAW_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00492060) -------------------------------------------------------- int __thiscall sub_492060(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 int v5; // eax@5 int v6; // edi@6 __time32_t v7; // eax@6 __time32_t v8; // esi@6 FILE *v9; // eax@8 int v10; // eax@11 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedWithdraw"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedWithdraw"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 12323; *((_WORD *)v3 + 3) = *(_WORD *)(a2 + 24); *(_DWORD *)((char *)v3 + 2) = *((_DWORD *)v2 + 40188); *((_DWORD *)v2 + 40188) = -1; if ( sub_4C81E0(&off_849C18, 8) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ply_ChargedWithdraw : Packet Too Long", 8); } if ( *(_WORD *)(a2 + 24) == 4161 ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, v2, *(_WORD *)(a2 + 6), 0) ) { v6 = *(_WORD *)(a2 + 6); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedWithdraw : "); v8 = v7; if ( byte_7493ED ) { if ( *(_BYTE *)(v7 + 644) ) { sub_418E40(v7); v9 = *(FILE **)(v8 + 256); if ( v9 ) fprintf(v9, "%d", v6); } } sub_418F20(v8, (int)&unk_13359E04); } } else { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(a2 + 6)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedWithdraw"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00492200) -------------------------------------------------------- int __thiscall sub_492200(void *this, int a2) { void *v2; // edi@1 void *v3; // ebx@1 __int16 v4; // ax@1 int v5; // edi@5 int v6; // esi@5 int v7; // esi@13 int v8; // eax@15 signed int v10; // [sp+14h] [bp-14h]@4 void *v11; // [sp+18h] [bp-10h]@1 v2 = this; v11 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 12321; v4 = *(_WORD *)(a2 + 6); *((_WORD *)v3 + 1) = v4; if ( v4 == 4161 ) { *((_BYTE *)v3 + 4) = *(_BYTE *)(a2 + 8); if ( *(_BYTE *)(a2 + 8) & 1 ) sub_62F120((int)((char *)v2 + 160364)); v10 = 0; if ( *(_WORD *)(a2 + 9) > 0u ) { v5 = (int)((char *)v3 + 7); v6 = a2 + 11; while ( sub_62F130((int)((char *)v11 + 160364), v6) ) { *(_DWORD *)v5 = *(_DWORD *)v6; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v5 + 12) = *(_DWORD *)(v6 + 12); v6 += 16; v5 += 16; ++v10; if ( v10 >= *(_WORD *)(a2 + 9) ) goto LABEL_10; } *((_BYTE *)v3 + 4) |= 2u; LABEL_10: v2 = v11; } *((_BYTE *)v2 + 160360) = 1; *(_WORD *)((char *)v3 + 5) = v10; } else { *(_WORD *)((char *)v3 + 5) = 0; } v7 = 16 * *(_WORD *)((char *)v3 + 5) + 7; if ( sub_4C81E0(&off_849C18, 16 * *(_WORD *)((char *)v3 + 5) + 7) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ply_FillChargedInven : Packet Too Long", v7); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004923A0) -------------------------------------------------------- int __thiscall sub_4923A0(void *this, signed int a2) { void *v2; // esi@1 int v3; // esi@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ItemEquipTable::iet_GetArray"); dword_7508B8[dword_750CB8] = (int)"ItemEquipTable::iet_GetArray"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < 34 ) v3 = (int)((char *)v2 + 29 * a2); else v3 = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemEquipTable::iet_GetArray"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00492410) -------------------------------------------------------- void __thiscall sub_492410(void *this) { unsigned int v1; // ebx@1 unsigned int v2; // eax@3 bool v3; // cf@3 int *v4; // eax@5 unsigned int v5; // eax@7 void *v6; // [sp+Ch] [bp-74h]@1 int (__thiscall **v7)(void *, char); // [sp+10h] [bp-70h]@1 int v8; // [sp+44h] [bp-3Ch]@1 int v9; // [sp+50h] [bp-30h]@1 int v10; // [sp+54h] [bp-2Ch]@1 int v11; // [sp+58h] [bp-28h]@1 int v12; // [sp+5Ch] [bp-24h]@1 int v13; // [sp+60h] [bp-20h]@1 int v14; // [sp+64h] [bp-1Ch]@1 int v15; // [sp+68h] [bp-18h]@1 char v16; // [sp+6Ch] [bp-14h]@1 unsigned int v17; // [sp+70h] [bp-10h]@1 int v18; // [sp+7Ch] [bp-4h]@1 int v19; // [sp+80h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v6 = this; sub_639920((int)&v7); v7 = &off_6B8E14; v1 = 0; v9 = 0; v10 = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v18 = 0; sub_491500(&v7, "../9Data/Shine/ItemServerEquipTypeInfo.shn"); if ( *(_DWORD *)(v8 + 40) <= 0 ) { sub_6390B0(&unk_86DDD8, (int)"ItemEquipTable::iet_Load : LoadError", (int)"ItemServerEquipTypeInfo.shn"); loc_6391B0("ItemEquipTable::iet_Load"); } v2 = *(_DWORD *)(v8 + 40); v3 = v2 > 0; if ( (signed int)v2 > 0 ) { do { if ( v3 ) v4 = (int *)sub_626BC0((int)&v7, v1); else v4 = &v9; memcpy((char *)v6 + 29 * *v4, v4, 0x1Du); v5 = *(_DWORD *)(v8 + 40); ++v1; v3 = v1 < v5; } while ( (signed int)v1 < (signed int)v5 ); } v18 = -1; v7 = &off_6B8E14; sub_639940((int)&v7); } // 6B8E14: using guessed type int (__thiscall *off_6B8E14)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00492520) -------------------------------------------------------- void __thiscall sub_492520(void *this) { int v1; // esi@1 unsigned int v2; // ebx@1 int v3; // eax@1 int v4; // eax@3 int v5; // ecx@5 int v6; // edx@6 int v7; // ecx@10 signed int v8; // [sp+Ch] [bp-7Ch]@1 int (__thiscall **v9)(void *, char); // [sp+10h] [bp-78h]@1 int v10; // [sp+44h] [bp-44h]@1 int v11; // [sp+50h] [bp-38h]@1 int v12; // [sp+54h] [bp-34h]@1 int v13; // [sp+58h] [bp-30h]@1 int v14; // [sp+5Ch] [bp-2Ch]@1 int v15; // [sp+60h] [bp-28h]@1 int v16; // [sp+64h] [bp-24h]@1 int v17; // [sp+68h] [bp-20h]@1 int v18; // [sp+6Ch] [bp-1Ch]@1 int v19; // [sp+70h] [bp-18h]@1 int v20; // [sp+74h] [bp-14h]@1 unsigned int v21; // [sp+78h] [bp-10h]@1 int v22; // [sp+84h] [bp-4h]@1 int v23; // [sp+88h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v1 = (int)this; sub_639920((int)&v9); v9 = &off_6B8E0C; v2 = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v20 = 0; v22 = 0; sub_491450(&v9, "../9Data/Shine/ItemShop.shn"); v8 = *(_DWORD *)(v10 + 40); v3 = *(_DWORD *)(v10 + 40); *(_DWORD *)(v1 + 720896) = 0; if ( v3 > 0 ) { do { if ( v2 < *(_DWORD *)(v10 + 40) ) v4 = sub_626BC0((int)&v9, v2); else v4 = (int)&v11; v5 = 0; if ( *(_DWORD *)(v1 + 720896) <= 0 ) goto LABEL_17; v6 = v1; while ( *(_DWORD *)v6 != *(_DWORD *)v4 ) { ++v5; v6 += 88; if ( v5 >= *(_DWORD *)(v1 + 720896) ) { sub_491610(v1, v4); goto LABEL_13; } } v7 = v1 + 88 * v5; if ( v7 ) sub_491330(v7, v4); else LABEL_17: sub_491610(v1, v4); LABEL_13: ++v2; } while ( (signed int)v2 < v8 ); } v22 = -1; v9 = &off_6B8E0C; sub_639940((int)&v9); } // 6B8E0C: using guessed type int (__thiscall *off_6B8E0C)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00492650) -------------------------------------------------------- void *__thiscall sub_492650(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 18, 37) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 18, 18, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00492700) -------------------------------------------------------- void *__thiscall sub_492700(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B91A0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B91A0: using guessed type int (__thiscall *off_6B91A0)(void *, char); //----- (00492730) -------------------------------------------------------- void *__thiscall sub_492730(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6B91A8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B91A8: using guessed type int (__thiscall *off_6B91A8)(void *, char); //----- (00492760) -------------------------------------------------------- int __cdecl sub_492760(int a1, int a2, int a3) { int result; // eax@1 for ( result = a1; result != a2; result += 64 ) { if ( *(_DWORD *)result == *(_DWORD *)a3 && *(_DWORD *)(result + 4) == *(_DWORD *)(a3 + 4) && *(_DWORD *)(result + 8) == *(_DWORD *)(a3 + 8) && *(_DWORD *)(result + 12) == *(_DWORD *)(a3 + 12) && *(_DWORD *)(result + 16) == *(_DWORD *)(a3 + 16) && *(_DWORD *)(result + 20) == *(_DWORD *)(a3 + 20) && *(_DWORD *)(result + 24) == *(_DWORD *)(a3 + 24) && *(_DWORD *)(result + 28) == *(_DWORD *)(a3 + 28) ) break; } return result; } //----- (004927C0) -------------------------------------------------------- int __stdcall sub_4927C0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_3FFFFFF || (result = operator new(a1 << 6)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00492820) -------------------------------------------------------- int __stdcall sub_492820(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x1FFFFFFF || (result = operator new(8 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00492880) -------------------------------------------------------- int __cdecl sub_492880(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 12 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); } v3 += 12; } return result; } //----- (004928C0) -------------------------------------------------------- int __cdecl sub_4928C0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 8 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); } v3 += 8; } return result; } //----- (004928F0) -------------------------------------------------------- int __stdcall sub_4928F0(int a1, int a2) { int v2; // ebx@4 unsigned __int16 v3; // ax@4 int v4; // edx@4 int v5; // ecx@4 int v6; // eax@4 int v7; // esi@5 int v8; // esi@11 int i; // eax@15 int j; // edi@17 unsigned __int16 v11; // ax@18 int v12; // ecx@18 int v13; // eax@21 int v14; // ebx@21 unsigned __int16 v15; // ax@21 int v16; // ecx@21 int v17; // edx@21 int v18; // eax@21 int v19; // edi@21 int v20; // esi@21 int v21; // ebx@22 int v23; // [sp-8h] [bp-108h]@3 int v24; // [sp+18h] [bp-E8h]@21 int v25; // [sp+1Ch] [bp-E4h]@20 signed int v26; // [sp+20h] [bp-E0h]@19 signed int v27; // [sp+24h] [bp-DCh]@4 int v28[50]; // [sp+28h] [bp-D8h]@16 unsigned int v29; // [sp+F0h] [bp-10h]@1 int v30; // [sp+FCh] [bp-4h]@1 int v31; // [sp+100h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ItemRandomOption::RandomOptionTable::rot_FillOption"); dword_7508B8[dword_750CB8] = (int)"ItemRandomOption::RandomOptionTable::rot_FillOption"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; *(_BYTE *)a1 = 1; if ( a2 && *(_DWORD *)a2 ) { v2 = 0; v27 = 0; v3 = sub_4011A0(&unk_14D42DC0); v4 = *(_DWORD *)a2; v5 = v3; v6 = *(_DWORD *)(*(_DWORD *)a2 + 32); if ( v6 != *(_DWORD *)(*(_DWORD *)a2 + 36) ) { while ( 1 ) { v7 = *(_DWORD *)(v6 + 4); if ( v5 < v7 ) break; v6 += 8; v5 -= v7; if ( v6 == *(_DWORD *)(v4 + 36) ) goto LABEL_9; } v27 = *(_DWORD *)v6; v2 = *(_DWORD *)v6; } LABEL_9: if ( v2 > 0 ) { v8 = (*(_DWORD *)(v4 + 52) - *(_DWORD *)(v4 + 48)) / 20; if ( v2 > v8 ) { sub_639100(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_FillOption : Too many option", v2); v27 = v8; v2 = v8; } if ( v2 > 50 ) { sub_639100(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_FillOption : Large then", 50); v27 = 50; v2 = 50; } for ( i = 0; i < v8; ++i ) v28[i] = i; for ( j = 0; j < v8; ++j ) { v11 = sub_427920(&unk_14D42DC0, v8); v12 = v28[v11]; v28[v11] = v28[j]; v28[j] = v12; } v26 = 0; if ( v2 > 0 ) { v25 = a1 + 2; do { v13 = *(_DWORD *)(*(_DWORD *)a2 + 48); v14 = v13 + 20 * v28[v26]; v24 = v13 + 20 * v28[v26]; v15 = sub_4011A0(&unk_14D42DC0); v16 = *(_DWORD *)(v14 + 8); v17 = v15; v18 = *(_DWORD *)(v14 + 4); v19 = 0; v20 = 0; if ( v18 != v16 ) { while ( 1 ) { v21 = *(_DWORD *)(v18 + 8); if ( v17 < v21 ) break; v18 += 12; v17 -= v21; if ( v18 == v16 ) goto LABEL_26; } v19 = *(_DWORD *)v18; v20 = *(_DWORD *)(v18 + 4); LABEL_26: v14 = v24; } if ( v19 > v20 ) { sub_639150( &unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_FillOption : Min/Max error", v19, v20); v19 = v20; } *(_BYTE *)(v25 - 1) = *(_BYTE *)v14; *(_WORD *)v25 = v19 + sub_6396B0(&unk_14D42DC0, v20 - v19 + 1); ++v26; v25 += 3; } while ( v26 < v27 ); LOBYTE(v2) = v27; } *(_BYTE *)a1 = 2 * v2 | *(_BYTE *)a1 & 1; } else { sub_639100(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_FillOption : Option Counter bug", v2 > 0); } v23 = (int)"ItemRandomOption::RandomOptionTable::rot_FillOption"; } else { sub_639100(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_FillOption : Null datum", 0); v23 = (int)"ItemRandomOption::RandomOptionTable::rot_FillOption"; } --dword_750CB8; v30 = -1; return sub_467660((int)&unk_D020420, v23); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 4928F0: using guessed type int var_D8[50]; //----- (00492BD0) -------------------------------------------------------- unsigned int __thiscall sub_492BD0(int this, unsigned int a2) { int v2; // esi@1 unsigned int result; // eax@1 int v4; // ebx@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edi@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@4 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; result = a2; if ( a2 > 0x1FFFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 3 < a2 ) { v4 = sub_492820(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v9 = v4; v11 = 0; sub_459940((int)v6, v5, v4); v7 = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 3; if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = a2; *(_DWORD *)(v2 + 8) = v4 + 8 * a2; *(_DWORD *)(v2 + 4) = v4 + 8 * v7; *(_DWORD *)v2 = v4; } return result; } //----- (00492C87) -------------------------------------------------------- void __usercall sub_492C87(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00492CA0) -------------------------------------------------------- int __thiscall sub_492CA0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 int v5; // ecx@4 int v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 12; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( (unsigned int)v3 > 0x15555555 ) sub_65178B((int)"vector too long"); v4 = sub_480E80(v3); *(_DWORD *)(v2 + 8) = v4 + 12 * v3; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_492880(v6, v5, v4); } return v2; } //----- (00492D62) -------------------------------------------------------- void __usercall sub_492D62(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00492D80) -------------------------------------------------------- int __thiscall sub_492D80(int this, int a2) { int v2; // esi@1 signed int v3; // edi@1 unsigned int v4; // edi@1 int v5; // eax@4 int v6; // ecx@4 int v7; // ST00_4@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@1 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; v10 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = *(_DWORD *)(a2 + 4) - *(_DWORD *)a2; *(_DWORD *)this = 0; v4 = v3 >> 3; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v4 ) { if ( v4 > 0x1FFFFFFF ) sub_65178B((int)"vector too long"); v5 = sub_492820(v4); *(_DWORD *)v2 = v5; *(_DWORD *)(v2 + 4) = v5; *(_DWORD *)(v2 + 8) = v5 + 8 * v4; v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)a2; v12 = 0; *(_DWORD *)(v2 + 4) = sub_4928C0(v7, v6, v5); } return v2; } //----- (00492E2F) -------------------------------------------------------- void __usercall sub_492E2F(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00492E50) -------------------------------------------------------- int __cdecl sub_492E50(int a1, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v6; // [sp+0h] [bp-2Ch]@1 int v7; // [sp+10h] [bp-1Ch]@3 int v8; // [sp+14h] [bp-18h]@3 int v9; // [sp+18h] [bp-14h]@1 int *v10; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [bp-4h]@1 v10 = &v6; v3 = a3; v4 = a1; v9 = a3; v11 = 0; while ( v4 != a2 ) { v8 = v3; v7 = v3; LOBYTE(v11) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_492CA0(v3 + 4, v4 + 4); v4 = a1; } v3 += 20; v4 += 20; LOBYTE(v11) = 0; a1 = v4; } return v3; } //----- (00492F10) -------------------------------------------------------- int __cdecl sub_492F10(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_492CA0(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (00492FC0) -------------------------------------------------------- int __cdecl sub_492FC0(int a1, int a2) { int result; // eax@1 int v3; // esi@2 result = a1; if ( a1 != a2 ) { v3 = a1 + 4; do { if ( *(_DWORD *)v3 ) operator delete(*(void **)v3); *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; v3 += 20; result = v3 - 4; } while ( v3 - 4 != a2 ); } return result; } //----- (00493000) -------------------------------------------------------- void __thiscall sub_493000(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)this ) { sub_492FC0(*(_DWORD *)this, *(_DWORD *)(this + 4)); operator delete(*(void **)v1); } *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (00493040) -------------------------------------------------------- int __thiscall sub_493040(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_492F10(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_492FC0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (0049312B) -------------------------------------------------------- void __usercall sub_49312B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00493150) -------------------------------------------------------- int __thiscall sub_493150(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 int v5; // ecx@4 int v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 20; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); v4 = sub_445710(v3); *(_DWORD *)(v2 + 8) = v4 + 20 * v3; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_492E50(v6, v5, v4); } return v2; } //----- (00493213) -------------------------------------------------------- void __usercall sub_493213(int a1) { sub_493000(*(_DWORD *)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00493230) -------------------------------------------------------- int __thiscall sub_493230(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_493040(this, v5); } return result; } //----- (00493300) -------------------------------------------------------- int __thiscall sub_493300(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_493230(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; v8 = a2 + 4; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_493230(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; v8 = v6 + 4; LABEL_11: result = sub_492CA0(result + 4, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 20; return result; } //----- (004933D0) -------------------------------------------------------- int __thiscall sub_4933D0(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@1 int v5; // eax@5 int v6; // esi@5 int v7; // [sp+10h] [bp-20h]@1 void *v8; // [sp+14h] [bp-1Ch]@1 int v9; // [sp+18h] [bp-18h]@1 int v10; // [sp+1Ch] [bp-14h]@1 int v11; // [sp+2Ch] [bp-4h]@1 v2 = this; v8 = 0; v9 = 0; v10 = 0; v3 = *(_DWORD *)(this + 52); result = *(_DWORD *)(v2 + 48); v11 = 0; v7 = a2; if ( result == v3 ) goto LABEL_17; do { if ( *(_DWORD *)result == a2 ) break; result += 20; } while ( result != v3 ); if ( result == v3 ) { LABEL_17: sub_493300(v2 + 48, (unsigned int)&v7); v5 = *(_DWORD *)(v2 + 52); v6 = *(_DWORD *)(v2 + 48); if ( v6 == v5 ) goto LABEL_18; do { if ( *(_DWORD *)v6 == v7 ) break; v6 += 20; } while ( v6 != v5 ); if ( v6 == v5 ) { LABEL_18: if ( v8 ) operator delete(v8); result = 0; } else { if ( v8 ) operator delete(v8); result = v6; } } return result; } //----- (004934A0) -------------------------------------------------------- int *__thiscall sub_4934A0(void *this, const char *a2) { void *v2; // esi@1 char v3; // bl@1 int v4; // edi@1 int v5; // eax@1 int v6; // eax@1 int v7; // ecx@1 int *result; // eax@2 char *i; // eax@3 int v10; // [sp+10h] [bp-70h]@1 int v11; // [sp+14h] [bp-6Ch]@1 int v12; // [sp+18h] [bp-68h]@1 int v13; // [sp+1Ch] [bp-64h]@1 int v14; // [sp+20h] [bp-60h]@1 int v15; // [sp+24h] [bp-5Ch]@1 int v16; // [sp+28h] [bp-58h]@1 int v17; // [sp+2Ch] [bp-54h]@1 int v18; // [sp+30h] [bp-50h]@1 int v19; // [sp+34h] [bp-4Ch]@1 int v20; // [sp+38h] [bp-48h]@1 int v21; // [sp+40h] [bp-40h]@1 int v22; // [sp+44h] [bp-3Ch]@1 int v23; // [sp+48h] [bp-38h]@1 char v24[4]; // [sp+50h] [bp-30h]@1 int v25; // [sp+54h] [bp-2Ch]@1 int v26; // [sp+58h] [bp-28h]@1 int v27; // [sp+5Ch] [bp-24h]@1 int v28; // [sp+60h] [bp-20h]@1 int v29; // [sp+64h] [bp-1Ch]@1 int v30; // [sp+68h] [bp-18h]@1 int v31; // [sp+6Ch] [bp-14h]@1 unsigned int v32; // [sp+70h] [bp-10h]@1 int v33; // [sp+7Ch] [bp-4h]@2 int v34; // [sp+80h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ItemRandomOption::RandomOptionTable::operator []"); dword_7508B8[dword_750CB8] = (int)"ItemRandomOption::RandomOptionTable::operator []"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v31 = 0; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; *(_DWORD *)v24 = 0; strncpy(v24, a2, 0x20u); v4 = *((_DWORD *)v2 + 1); v10 = *(_DWORD *)v24; v12 = v26; v13 = v27; v15 = v29; v11 = v25; v16 = v30; v5 = *(_DWORD *)v2; v14 = v28; v18 = 0; v19 = 0; v20 = 0; v21 = 0; v22 = 0; v23 = 0; v17 = v31; v6 = sub_492760(v5, v4, (int)&v10); v7 = v6 != v4 ? v6 : 0; dword_D61E05C = v7; if ( v7 ) { byte_D61E060 = 0; for ( i = *(char **)(v6 != v4 ? v6 + 0x20 : 32); i != *(char **)(v7 + 36); i += 8 ) { if ( (signed int)(unsigned __int8)v3 < *(_DWORD *)i ) { v3 = *i; byte_D61E060 = *i; } } --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"ItemRandomOption::RandomOptionTable::operator []"); result = &dword_D61E05C; } else { --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"ItemRandomOption::RandomOptionTable::operator []"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D61E05C: using guessed type int dword_D61E05C; // D61E060: using guessed type char byte_D61E060; //----- (00493620) -------------------------------------------------------- void __cdecl sub_493620(int a1, int a2) { int v2; // eax@1 v2 = *(_DWORD *)(a2 + 48); if ( v2 ) { sub_492FC0(v2, *(_DWORD *)(a2 + 52)); operator delete(*(void **)(a2 + 48)); } *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(a2 + 52) = 0; *(_DWORD *)(a2 + 56) = 0; if ( *(_DWORD *)(a2 + 32) ) operator delete(*(void **)(a2 + 32)); *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(a2 + 36) = 0; *(_DWORD *)(a2 + 40) = 0; } //----- (00493680) -------------------------------------------------------- void __cdecl sub_493680(int a1, int a2) { int v2; // edi@2 void *v3; // esi@3 void *v4; // ecx@4 void *i; // [sp+Ch] [bp+8h]@4 if ( a1 != a2 ) { v2 = a1 + 48; do { v3 = *(void **)v2; if ( *(_DWORD *)v2 ) { v4 = *(void **)(v2 + 4); for ( i = v4; v3 != v4; v3 = (char *)v3 + 20 ) { if ( *((_DWORD *)v3 + 1) ) { operator delete(*((void **)v3 + 1)); v4 = i; } *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)v3 + 3) = 0; } operator delete(*(void **)v2); } *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)(v2 + 8) = 0; if ( *(_DWORD *)(v2 - 16) ) operator delete(*(void **)(v2 - 16)); *(_DWORD *)(v2 - 16) = 0; *(_DWORD *)(v2 - 12) = 0; *(_DWORD *)(v2 - 8) = 0; v2 += 64; } while ( v2 - 48 != a2 ); } } //----- (00493710) -------------------------------------------------------- int __cdecl sub_493710(const void *a1, const void *a2, int a3) { int v3; // ebx@1 const void *v4; // eax@2 int v6; // [sp+0h] [bp-28h]@1 int v7; // [sp+10h] [bp-18h]@3 int v8; // [sp+14h] [bp-14h]@1 int *v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v9 = &v6; v3 = a3; v8 = a3; v10 = 0; while ( 1 ) { v4 = a1; if ( a1 == a2 ) break; v7 = v3; LOBYTE(v10) = 1; if ( v3 ) { memcpy((void *)v3, a1, 0x20u); sub_492D80(v3 + 32, (int)((char *)a1 + 32)); LOBYTE(v10) = 2; sub_493150(v3 + 48, (int)((char *)a1 + 48)); v4 = a1; } v3 += 64; LOBYTE(v10) = 0; a1 = (char *)v4 + 64; } return v3; } //----- (004937E0) -------------------------------------------------------- unsigned int __thiscall sub_4937E0(int this, unsigned int a2) { int v2; // esi@1 unsigned int result; // eax@1 int v4; // ebx@4 const void *v5; // ST04_4@4 int v6; // ST00_4@4 int v7; // edi@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@4 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; result = a2; if ( a2 > (unsigned int)&unk_3FFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 6 < a2 ) { v4 = sub_4927C0(a2); v5 = *(const void **)(v2 + 4); v6 = *(_DWORD *)v2; v9 = v4; v11 = 0; sub_493710((const void *)v6, v5, v4); v7 = *(_DWORD *)(v2 + 4) - *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { sub_493680(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v4 + (a2 << 6); *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v4 + (v7 & 0xFFFFFFC0); *(_DWORD *)v2 = v4; } return result; } //----- (004938AB) -------------------------------------------------------- void __usercall sub_4938AB(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004938D0) -------------------------------------------------------- unsigned int __thiscall sub_4938D0(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 6; if ( (unsigned int)((char *)&unk_3FFFFFF - a2) < v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 6; if ( result > v4 ) { if ( (unsigned int)((char *)&unk_3FFFFFF - ((unsigned int)v4 >> 1)) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_4937E0(this, v5); } return result; } //----- (00493930) -------------------------------------------------------- int __thiscall sub_493930(int this, const void *a2) { int v2; // ebx@1 unsigned int v3; // eax@1 char *v4; // esi@3 int result; // eax@5 const void *v6; // esi@5 int v7; // [sp-4h] [bp-28h]@6 int v8; // [sp+14h] [bp-10h]@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( (unsigned int)a2 >= v3 || *(_DWORD *)this > (unsigned int)a2 ) { if ( v3 == *(_DWORD *)(this + 8) ) sub_4938D0(this, 1); result = *(_DWORD *)(v2 + 4); v8 = result; if ( result ) { memcpy((void *)result, a2, 0x20u); sub_492D80(result + 32, (int)((char *)a2 + 32)); v7 = (int)((char *)a2 + 48); goto LABEL_11; } } else { v4 = (char *)a2 - *(_DWORD *)this; if ( v3 == *(_DWORD *)(this + 8) ) sub_4938D0(this, 1); result = *(_DWORD *)(v2 + 4); v6 = (const void *)(*(_DWORD *)v2 + ((unsigned int)v4 & 0xFFFFFFC0)); v8 = result; if ( result ) { memcpy((void *)result, v6, 0x20u); sub_492D80(result + 32, (int)((char *)v6 + 32)); v7 = (int)((char *)v6 + 48); LABEL_11: result = sub_493150(v8 + 48, v7); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 64; return result; } //----- (00493A20) -------------------------------------------------------- int __thiscall sub_493A20(void *this, int a2) { unsigned int v2; // eax@1 int v3; // eax@4 int v4; // ecx@4 int v5; // edi@9 int v6; // esi@9 int v7; // ST00_4@9 int v8; // eax@9 int v9; // esi@10 int v10; // edi@11 int v11; // ST0C_4@11 int v12; // eax@11 void *v13; // ecx@11 char *v14; // edi@13 int v15; // edx@22 unsigned int v16; // eax@22 unsigned int v17; // edi@23 int v18; // ecx@24 signed int v19; // edx@24 int v20; // eax@25 int v21; // eax@26 int v22; // ecx@26 unsigned int v23; // ecx@28 int v24; // edx@33 int v25; // eax@33 int v26; // edx@34 int v27; // ecx@35 int v28; // edx@36 int v29; // eax@36 int v30; // eax@37 int v31; // ecx@37 unsigned int v32; // ecx@39 unsigned int v33; // eax@52 char *v34; // edi@56 int v35; // ST04_4@58 int v36; // ST00_4@58 int v37; // eax@58 int v38; // esi@58 int v39; // esi@60 int v40; // ecx@62 int v41; // edx@62 int result; // eax@63 int i; // esi@63 int v44; // eax@64 int v45; // edx@64 int j; // ecx@64 int v47; // edx@66 int k; // edi@68 int v49; // eax@69 int v50; // edx@69 int l; // ecx@69 int v52; // edx@71 signed int v53; // [sp+Ch] [bp-200h]@1 signed int v54; // [sp+Ch] [bp-200h]@52 int v55; // [sp+10h] [bp-1FCh]@7 unsigned int v56; // [sp+14h] [bp-1F8h]@1 unsigned int v57; // [sp+14h] [bp-1F8h]@52 int v58; // [sp+18h] [bp-1F4h]@1 int (__thiscall **v59)(void *, char); // [sp+1Ch] [bp-1F0h]@2 int (__thiscall **v60)(void *, char); // [sp+28h] [bp-1E4h]@1 int v61; // [sp+50h] [bp-1BCh]@3 char v62[4]; // [sp+5Ch] [bp-1B0h]@1 int v63; // [sp+68h] [bp-1A4h]@1 int v64; // [sp+6Ch] [bp-1A0h]@1 int v65; // [sp+70h] [bp-19Ch]@1 int v66; // [sp+74h] [bp-198h]@1 int v67; // [sp+78h] [bp-194h]@1 int v68; // [sp+7Ch] [bp-190h]@1 int v69; // [sp+80h] [bp-18Ch]@1 int v70; // [sp+84h] [bp-188h]@1 int v71; // [sp+88h] [bp-184h]@1 char v72; // [sp+8Ch] [bp-180h]@1 int v73; // [sp+90h] [bp-17Ch]@9 int v74; // [sp+94h] [bp-178h]@9 int v75; // [sp+98h] [bp-174h]@9 int v76; // [sp+9Ch] [bp-170h]@9 int v77; // [sp+A0h] [bp-16Ch]@9 int v78; // [sp+A4h] [bp-168h]@9 int v79; // [sp+A8h] [bp-164h]@9 int v80; // [sp+ACh] [bp-160h]@9 void *v81; // [sp+B0h] [bp-15Ch]@9 int v82; // [sp+B4h] [bp-158h]@9 int v83; // [sp+B8h] [bp-154h]@9 void *v84; // [sp+C0h] [bp-14Ch]@9 void *v85; // [sp+C4h] [bp-148h]@9 int v86; // [sp+C8h] [bp-144h]@9 int v87; // [sp+D0h] [bp-13Ch]@62 int v88; // [sp+D4h] [bp-138h]@22 int v89; // [sp+D8h] [bp-134h]@22 char v90[4]; // [sp+DCh] [bp-130h]@9 int v91; // [sp+E0h] [bp-12Ch]@9 int v92; // [sp+E4h] [bp-128h]@9 int v93; // [sp+E8h] [bp-124h]@9 int v94; // [sp+ECh] [bp-120h]@9 int v95; // [sp+F0h] [bp-11Ch]@9 int v96; // [sp+F4h] [bp-118h]@9 int v97; // [sp+F8h] [bp-114h]@9 char v98; // [sp+FCh] [bp-110h]@51 int v99; // [sp+17Ch] [bp-90h]@66 int v100; // [sp+180h] [bp-8Ch]@66 int v101; // [sp+184h] [bp-88h]@66 int v102; // [sp+188h] [bp-84h]@66 int v103; // [sp+18Ch] [bp-80h]@66 int v104; // [sp+190h] [bp-7Ch]@66 int v105; // [sp+194h] [bp-78h]@66 int v106; // [sp+198h] [bp-74h]@66 char v107; // [sp+19Ch] [bp-70h]@66 int v108; // [sp+1BCh] [bp-50h]@11 int v109; // [sp+1C0h] [bp-4Ch]@11 int v110; // [sp+1C4h] [bp-48h]@11 int v111; // [sp+1C8h] [bp-44h]@11 int v112; // [sp+1CCh] [bp-40h]@11 int v113; // [sp+1D0h] [bp-3Ch]@11 int v114; // [sp+1D4h] [bp-38h]@11 int v115; // [sp+1D8h] [bp-34h]@11 int v116; // [sp+1DCh] [bp-30h]@11 int v117; // [sp+1E0h] [bp-2Ch]@11 int v118; // [sp+1E4h] [bp-28h]@11 int v119; // [sp+1ECh] [bp-20h]@11 int v120; // [sp+1F0h] [bp-1Ch]@11 int v121; // [sp+1F4h] [bp-18h]@11 unsigned int v122; // [sp+1FCh] [bp-10h]@1 int v123; // [sp+208h] [bp-4h]@1 int v124; // [sp+20Ch] [bp+0h]@1 v122 = (unsigned int)&v124 ^ __security_cookie; v58 = (int)this; sub_639920((int)&v60); v60 = &off_6B91A0; v63 = 0; v64 = 0; v65 = 0; v66 = 0; v67 = 0; v68 = 0; v69 = 0; v70 = 0; v71 = 0; v72 = 0; v123 = 0; sub_492650(&v60, "../9Data/Shine/RandomOptionCount.shn"); v2 = 0; v53 = *(_DWORD *)(*(_DWORD *)v62 + 40); v56 = 0; if ( v53 > 0 ) { while ( 1 ) { if ( v2 < *(_DWORD *)(*(_DWORD *)v62 + 40) ) v55 = sub_626BC0((int)&v60, v2); else v55 = (int)&v63; v97 = 0; v96 = 0; v95 = 0; v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, (const char *)v55, 0x20u); v5 = *(_DWORD *)v90; v74 = v91; v75 = v92; v76 = v93; v77 = v94; v78 = v95; v6 = *(_DWORD *)(v58 + 4); v79 = v96; v80 = v97; v7 = *(_DWORD *)v58; v81 = 0; v82 = 0; v83 = 0; v84 = 0; v85 = 0; v86 = 0; v73 = *(_DWORD *)v90; v8 = sub_492760(v7, v6, (int)&v73); if ( v8 == v6 || (v9 = v8) == 0 ) { v81 = 0; v82 = 0; v83 = 0; v84 = 0; v85 = 0; v86 = 0; v75 = v92; v74 = v91; v78 = v95; v76 = v93; v77 = v94; LOBYTE(v123) = 1; v73 = v5; v79 = v96; v80 = v97; sub_493930(v58, &v73); v10 = *(_DWORD *)(v58 + 4); v108 = *(_DWORD *)v90; v109 = v91; v110 = v92; v111 = v93; v112 = v94; v113 = v95; v114 = v96; v115 = v97; v11 = *(_DWORD *)v58; v116 = 0; v117 = 0; v118 = 0; v119 = 0; v120 = 0; v121 = 0; v12 = sub_492760(v11, v10, (int)&v108); v13 = v84; v9 = v12 != v10 ? v12 : 0; LOBYTE(v123) = 0; if ( v84 ) { if ( v84 != v85 ) { v14 = (char *)v84 + 4; do { if ( *(_DWORD *)v14 ) { operator delete(*(void **)v14); v13 = v84; } *(_DWORD *)v14 = 0; *((_DWORD *)v14 + 1) = 0; *((_DWORD *)v14 + 2) = 0; v14 += 20; } while ( v14 - 4 != v85 ); } operator delete(v13); } if ( v81 ) operator delete(v81); } if ( v9 == 0 ) { sub_639100(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_Load : Not appended in list", 0); loc_6391B0("ItemRandomOption::RandomOptionTable::rot_Load"); } v15 = *(_WORD *)(v55 + 35); v16 = *(_DWORD *)(v9 + 36); v88 = *(_WORD *)(v55 + 33); v89 = v15; if ( (unsigned int)&v88 >= v16 || (v17 = *(_DWORD *)(v9 + 32), v17 > (unsigned int)&v88) ) { v27 = *(_DWORD *)(v9 + 40); if ( v16 == v27 ) { v28 = *(_DWORD *)(v9 + 32); v29 = (signed int)(v16 - v28) >> 3; if ( (unsigned int)v29 > 0x1FFFFFFE ) LABEL_49: sub_65178B((int)"vector too long"); v30 = v29 + 1; v31 = (v27 - v28) >> 3; if ( v30 > (unsigned int)v31 ) { if ( 536870911 - ((unsigned int)v31 >> 1) >= v31 ) v32 = ((unsigned int)v31 >> 1) + v31; else v32 = 0; if ( v32 < v30 ) v32 = v30; sub_492BD0(v9 + 32, v32); } } v25 = *(_DWORD *)(v9 + 36); if ( v25 ) { v26 = v89; *(_DWORD *)v25 = v88; goto LABEL_46; } } else { v18 = *(_DWORD *)(v9 + 40); v19 = (signed int)((char *)&v88 - v17) >> 3; if ( v16 == v18 ) { v20 = (signed int)(v16 - v17) >> 3; if ( (unsigned int)v20 > 0x1FFFFFFE ) goto LABEL_49; v21 = v20 + 1; v22 = (signed int)(v18 - v17) >> 3; if ( v21 > (unsigned int)v22 ) { if ( 536870911 - ((unsigned int)v22 >> 1) >= v22 ) v23 = ((unsigned int)v22 >> 1) + v22; else v23 = 0; if ( v23 < v21 ) v23 = v21; sub_492BD0(v9 + 32, v23); v19 = (signed int)((char *)&v88 - v17) >> 3; } } v24 = *(_DWORD *)(v9 + 32) + 8 * v19; v25 = *(_DWORD *)(v9 + 36); if ( v25 ) { *(_DWORD *)v25 = *(_DWORD *)v24; v26 = *(_DWORD *)(v24 + 4); LABEL_46: *(_DWORD *)(v25 + 4) = v26; goto LABEL_47; } } LABEL_47: *(_DWORD *)(v9 + 36) += 8; ++v56; if ( (signed int)v56 >= v53 ) break; v2 = v56; } } v123 = -1; v60 = &off_6B91A0; sub_639940((int)&v60); sub_639920((int)&v59); v59 = &off_6B91A8; memset(v62, 0, 0x31u); v123 = 2; if ( !sub_627480(&v59, "../9Data/Shine/RandomOption.shn", 93, 49) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/RandomOption.shn"); if ( v61 ) { v3 = *(_DWORD *)v61; v4 = *(_DWORD *)v61; } else { v3 = 0; v4 = 0; } sprintf(&v98, "Code:%X:%d\tSHN:%X:%d", 93, 93, v4, v3); sub_639100(&unk_86DDD8, (int)&v98, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v33 = 0; v54 = *(_DWORD *)(v61 + 40); v57 = 0; if ( v54 > 0 ) { while ( 1 ) { if ( v33 < *(_DWORD *)(v61 + 40) ) v34 = (char *)sub_626BC0((int)&v59, v33); else v34 = v62; v97 = 0; v96 = 0; v95 = 0; v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, v34, 0x20u); v109 = v91; v108 = *(_DWORD *)v90; v110 = v92; v112 = v94; v111 = v93; v113 = v95; v115 = v97; v114 = v96; v35 = *(_DWORD *)(v58 + 4); v36 = *(_DWORD *)v58; v116 = 0; v117 = 0; v118 = 0; v119 = 0; v120 = 0; v121 = 0; v37 = sub_492760(v36, v35, (int)&v108); v38 = v37 != *(_DWORD *)(v58 + 4) ? v37 : 0; if ( v38 == 0 ) { sub_639100( &unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_Load : RandomOptionIndex out of CountList", 0); loc_6391B0("ItemRandomOption::RandomOptionTable::rot_Load"); } v39 = sub_4933D0(v38, *(_DWORD *)(v34 + 33)); if ( v39 == 0 ) { sub_639100(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_Load : Null RandomOption", 0); loc_6391B0("ItemRandomOption::RandomOptionTable::rot_Load"); } v40 = *(_DWORD *)(v34 + 37); v41 = *(_DWORD *)(v34 + 45); v88 = *(_DWORD *)(v34 + 41); v87 = v40; v89 = v41; sub_6200F0(v39 + 4, (unsigned int)&v87); ++v57; if ( (signed int)v57 >= v54 ) break; v33 = v57; } } v123 = -1; v59 = &off_6B91A8; sub_639940((int)&v59); result = v58; for ( i = *(_DWORD *)v58; i != *(_DWORD *)(v58 + 4); i += 64 ) { v44 = *(_DWORD *)(i + 32); v45 = *(_DWORD *)(i + 36); for ( j = 0; v44 != v45; v44 += 8 ) j += *(_DWORD *)(v44 + 4); v47 = *(_DWORD *)i; v100 = *(_DWORD *)(i + 4); v102 = *(_DWORD *)(i + 12); v104 = *(_DWORD *)(i + 20); v106 = *(_DWORD *)(i + 28); v99 = v47; result = j == 1000; v101 = *(_DWORD *)(i + 8); v103 = *(_DWORD *)(i + 16); v105 = *(_DWORD *)(i + 24); v107 = 0; if ( j != 1000 ) { sub_6390B0(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_Load : Count not 1000", (int)&v99); result = loc_6391B0("ItemRandomOption::RandomOptionTable::rot_Load"); } for ( k = *(_DWORD *)(i + 48); k != *(_DWORD *)(i + 52); k += 20 ) { v49 = *(_DWORD *)(k + 4); v50 = *(_DWORD *)(k + 8); for ( l = 0; v49 != v50; v49 += 12 ) l += *(_DWORD *)(v49 + 8); v52 = *(_DWORD *)i; v100 = *(_DWORD *)(i + 4); v102 = *(_DWORD *)(i + 12); v104 = *(_DWORD *)(i + 20); v106 = *(_DWORD *)(i + 28); v99 = v52; result = l == 1000; v101 = *(_DWORD *)(i + 8); v103 = *(_DWORD *)(i + 16); v105 = *(_DWORD *)(i + 24); v107 = 0; if ( l != 1000 ) { sub_6390B0(&unk_86DDD8, (int)"ItemRandomOption::RandomOptionTable::rot_Load : Option not 1000", (int)&v99); result = loc_6391B0("ItemRandomOption::RandomOptionTable::rot_Load"); } } } return result; } // 6B91A0: using guessed type int (__thiscall *off_6B91A0)(void *, char); // 6B91A8: using guessed type int (__thiscall *off_6B91A8)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (004942D0) -------------------------------------------------------- signed int __stdcall sub_4942D0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ItemsInChest::iic_SearchItem"); dword_7508B8[dword_750CB8] = (int)"ItemsInChest::iic_SearchItem"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ItemsInChest::iic_SearchItem"); return 65535; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494360) -------------------------------------------------------- int __stdcall sub_494360(int a1, int a2) { __int16 v2; // ax@3 int v4; // [sp-8h] [bp-1Ch]@2 int v5; // [sp-4h] [bp-18h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( (*(_DWORD *)(a1 + 6) & *(_DWORD *)(a1 + 2)) == -1 ) { v5 = 0; v4 = (int)"GameDBSession::gds_NC_ITEMDB_ITEMINFORM_INBOX_ACK : Invalid item"; LABEL_5: sub_639100(&unk_86DDD8, v4, v5); goto LABEL_6; } v2 = sub_4942D0(a1 + 2); if ( v2 == -1 ) { v5 = v2 != -1; v4 = (int)"GameDBSession::gds_NC_ITEMDB_ITEMINFORM_INBOX_ACK : store fail"; goto LABEL_5; } LABEL_6: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494440) -------------------------------------------------------- int __thiscall sub_494440(int this, int a2) { int result; // eax@1 int v3; // edx@1 int v4; // ecx@1 int v5; // esi@1 signed int v6; // edi@1 int v7; // ecx@3 signed int v8; // edi@3 int v9; // ecx@5 signed int v10; // edi@5 result = this; memcpy((void *)this, (const void *)a2, 0x9Bu); memcpy((void *)(this + 155), (const void *)(a2 + 155), 0x25u); v3 = a2 + 209; v4 = this + 197; 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 + 296; v8 = 32; do { *(_BYTE *)v7 = *(_BYTE *)(v7 + v5); ++v7; --v8; } while ( v8 ); v9 = result + 328; v10 = 32; do { *(_BYTE *)v9 = *(_BYTE *)(v9 + v5); ++v9; --v10; } while ( v10 ); *(_BYTE *)(result + 360) = *(_BYTE *)(a2 + 360); *(_DWORD *)(result + 361) = *(_DWORD *)(a2 + 361); *(_DWORD *)(result + 365) = *(_DWORD *)(a2 + 365); *(_DWORD *)(result + 369) = *(_DWORD *)(a2 + 369); *(_DWORD *)(result + 373) = *(_DWORD *)(a2 + 373); return result; } //----- (004945A0) -------------------------------------------------------- FILE *__thiscall sub_4945A0(void *this, unsigned __int16 a2) { FILE *result; // eax@2 int v3; // edx@3 if ( a2 < 0x80u ) { v3 = 508 * a2; ++*(_DWORD *)((char *)this + v3 + 4); result = (FILE *)((char *)this + v3 + 4); } else { result = sub_639100(&unk_86DDD8, (int)"KingdomQuestEntrance::kqe_entry : Subscript over", a2); } return result; } //----- (004945F0) -------------------------------------------------------- int __cdecl sub_4945F0(int a1, int a2) { return *(_DWORD *)a2 - *(_DWORD *)a1; } //----- (00494600) -------------------------------------------------------- void *__thiscall sub_494600(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6B96AC; return result; } // 6B96AC: using guessed type int (*off_6B96AC)(); //----- (00494610) -------------------------------------------------------- char __stdcall sub_494610(int *a1) { int *v1; // edi@1 int v2; // eax@2 int v3; // edx@5 int v4; // eax@5 int v5; // edx@8 char result; // al@8 int v7; // [sp-1Ch] [bp-24h]@2 int v8; // [sp-18h] [bp-20h]@2 int v9; // [sp-14h] [bp-1Ch]@2 int v10; // [sp-10h] [bp-18h]@2 int v11; // [sp-Ch] [bp-14h]@2 const char *v12; // [sp-8h] [bp-10h]@2 int v13; // [sp-4h] [bp-Ch]@2 v1 = a1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*a1 + 2676))(a1) ) { result = 1; } else { v13 = (int)&a1; v12 = "KQEntryMapErr0"; a1 = &v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "Script", 0x14u); v2 = sub_644390(&unk_150A0980, "ScrString", v7, v8, v9, v10, v11, v12, v13); if ( a1 != (int *)2 || !v2 ) v2 = (int)byte_6A492E; v3 = *v1; v13 = v2; (*(void (__thiscall **)(_DWORD, _DWORD))(v3 + 1924))(v1, v2); v13 = (int)&a1; v12 = "KQEntryMapErr1"; a1 = &v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "Script", 0x14u); v4 = sub_644390(&unk_150A0980, "ScrString", v7, v8, v9, v10, v11, v12, v13); if ( a1 != (int *)2 || !v4 ) v4 = (int)byte_6A492E; v5 = *v1; v13 = v4; (*(void (__thiscall **)(_DWORD, _DWORD))(v5 + 1924))(v1, v4); result = 0; } return result; } //----- (00494700) -------------------------------------------------------- int __thiscall sub_494700(void *this, int a2, int a3, int a4) { return *(_DWORD *)this - *(_DWORD *)a4; } //----- (00494710) -------------------------------------------------------- int __thiscall sub_494710(int this, int a2) { return *(_BYTE *)(this + 53); } //----- (00494720) -------------------------------------------------------- char __thiscall sub_494720(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x38u); result = 1; } else { result = 0; } return result; } //----- (00494760) -------------------------------------------------------- char __thiscall sub_494760(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x38u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (004947B0) -------------------------------------------------------- char __thiscall sub_4947B0(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x38u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00494820) -------------------------------------------------------- void *__thiscall sub_494820(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B96F8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B96F8: using guessed type int (__thiscall *off_6B96F8)(void *, char); //----- (00494860) -------------------------------------------------------- int __thiscall sub_494860(void *this) { void *v1; // edi@1 signed int v2; // eax@1 int *v3; // ebx@1 void *v4; // eax@3 int v5; // esi@3 int v6; // eax@3 signed int v8; // [sp+14h] [bp-10h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQElement::kqe_QuestStart"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQElement::kqe_QuestStart"; v2 = 1; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v1 = dword_14D129E8 + 600 * *(_WORD *)((char *)v1 + 77); v3 = (int *)((char *)v1 + 412); v8 = 4; do { if ( *v3 ) { v4 = sub_5CF620((char *)v1 + 528); v5 = *v3; sub_507950(*(void **)(*v3 + 68), (const char *)v4, *v3); sub_49D420((void *)(*(_DWORD *)(v5 + 20) + 1072), *(_DWORD *)(v5 + 20)); v6 = (int)sub_5CF620((char *)v1 + 528); sub_5071A0(*(void **)(*v3 + 68), v6, (char *)v1 + 784, *v3); v2 = 1; } v3 += 9; v8 -= v2; } while ( v8 ); dword_750CB8 -= v2; return sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQElement::kqe_QuestStart"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00494970) -------------------------------------------------------- int __thiscall sub_494970(void *this, int a2, int a3) { void *v3; // esi@1 int 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; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 2); v5 = *((_WORD *)v3 + 2); v6 = *(_WORD *)(v4 + 12 * *((_WORD *)v3 + 7) + 4); for ( i = *(_WORD *)(v4 + 12 * v6 + 4); ; i = *(_WORD *)(*((_DWORD *)v3 + 2) + 12 * i + 4) ) { if ( v6 < v5 ) { v8 = *((_DWORD *)v3 + 2) + 12 * v6; if ( *(_BYTE *)(v8 + 8) ) { v9 = *(_DWORD *)v8; if ( *(_DWORD *)v8 ) { if ( *(_DWORD *)(v9 + 4) == a2 ) { *(_WORD *)a3 = v6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"); return v9; } } } } if ( i >= v5 ) break; v6 = i; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494AB0) -------------------------------------------------------- char __thiscall sub_494AB0(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // ecx@1 int v5; // edx@1 int v6; // eax@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ListIteratorKingdomQuestMapFind::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ListIteratorKingdomQuestMapFind::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; v5 = a2 + 412; while ( 1 ) { v6 = *(_DWORD *)v5; if ( *(_DWORD *)v5 ) { if ( *(_DWORD *)v6 == *((_DWORD *)v3 + 1) && *(_DWORD *)(v6 + 4) == *((_DWORD *)v3 + 2) && *(_DWORD *)(v6 + 8) == *((_DWORD *)v3 + 3) ) break; } ++v4; v5 += 36; if ( v4 >= 4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIteratorKingdomQuestMapFind::lid_Call"); return 1; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ListIteratorKingdomQuestMapFind::lid_Call"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494BA0) -------------------------------------------------------- char __thiscall sub_494BA0(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 char v5; // al@1 char v6; // bl@1 int (__stdcall **v8)(int, int); // [sp+Ch] [bp-20h]@1 int v9; // [sp+10h] [bp-1Ch]@1 int v10; // [sp+14h] [bp-18h]@1 int v11; // [sp+18h] [bp-14h]@1 unsigned int v12; // [sp+1Ch] [bp-10h]@1 int v13; // [sp+28h] [bp-4h]@1 int v14; // [sp+2Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 4); v9 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 8); v13 = 0; v8 = &off_6B9794; v10 = v3; v11 = v4; LOBYTE(v13) = 1; v5 = sub_43C470(v2, (int)&v8); --dword_750CB8; v6 = v5; v8 = &off_6B971C; v13 = -1; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"); return v6; } // 6B971C: using guessed type int (__stdcall *off_6B971C)(int, int); // 6B9794: using guessed type int (__stdcall *off_6B9794)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00494C80) -------------------------------------------------------- void *__thiscall sub_494C80(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_427BE0(this); *(_DWORD *)v2 = &off_6B9800; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectClear::AxialListObjectClear"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectClear::AxialListObjectClear"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 1) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectClear::AxialListObjectClear"); return v2; } // 6B9800: using guessed type int (__stdcall *off_6B9800)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494D30) -------------------------------------------------------- void __thiscall sub_494D30(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6B9800; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectClear::~AxialListObjectClear"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectClear::~AxialListObjectClear"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"AxialListObjectClear::~AxialListObjectClear"); sub_427EB0(v1); } // 6B9800: using guessed type int (__stdcall *off_6B9800)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494DD0) -------------------------------------------------------- char __thiscall sub_494DD0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectClear::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectClear::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (1 << (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3)) & *((_DWORD *)v4 + 1) ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1012))(a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectClear::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494EA0) -------------------------------------------------------- int __thiscall sub_494EA0(void *this, int a2) { void *v2; // esi@1 void *v3; // ecx@1 char v5; // [sp+8h] [bp-18h]@1 int v6; // [sp+10h] [bp-10h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v2 = this; v6 = (int)"FieldMap::fm_ClearObject"; sub_4675D0((int)&unk_D020420, (int)"FieldMap::fm_ClearObject"); dword_7508B8[dword_750CB8] = (int)"FieldMap::fm_ClearObject"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; sub_494C80(&v5, a2); v3 = (void *)*((_DWORD *)v2 + 12); LOBYTE(v7) = 1; sub_549B60(v3, (int)&v5, 1); LOBYTE(v7) = 0; sub_494D30(&v5); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"FieldMap::fm_ClearObject"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00494F70) -------------------------------------------------------- int __cdecl sub_494F70() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_RetrateFromMap"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_RetrateFromMap"; dword_750AB8[dword_750CB8++] = -1; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_RetrateFromMap", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_RetrateFromMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495020) -------------------------------------------------------- int __thiscall sub_495020(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1012))(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004950D0) -------------------------------------------------------- int __thiscall sub_4950D0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_RetrateFromMap"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_RetrateFromMap"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v1 + 369) = -1; *(_DWORD *)((char *)v1 + 373) = -1; v1 = (char *)v1 + 377; memset(v1, 0, 0x67u); *(_WORD *)v1 = -1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_RetrateFromMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495150) -------------------------------------------------------- int __thiscall sub_495150(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_RetrateFromMap"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineEffectObject::so_RetrateFromMap"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v1 + 402) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_RetrateFromMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004951B0) -------------------------------------------------------- int __thiscall sub_4951B0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_RetrateFromMap"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v1 + 7888) |= 1u; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495210) -------------------------------------------------------- int __thiscall sub_495210(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_RetrateFromMap"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1012))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 828))(v1); sub_555DF0(&unk_13253630, *((_WORD *)v1 + 2), 0, 100); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004952E0) -------------------------------------------------------- int __thiscall sub_4952E0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_RetrateFromMap"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDoor::so_RetrateFromMap"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v1 + 8036) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_RetrateFromMap"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495340) -------------------------------------------------------- int __stdcall sub_495340(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LinkToReserv"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_LinkToReserv"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LinkToReserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495390) -------------------------------------------------------- int __thiscall sub_495390(void *this, const void *a2, char a3) { int v3; // esi@1 __int16 v4; // ax@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LinkToReserv"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_LinkToReserv"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_54FA10(v3, a2); *(_BYTE *)(v3 + 23824) |= 0x40u; *(_WORD *)(v3 + 155450) = v4; *(_BYTE *)(v3 + 23825) ^= (a3 ^ *(_BYTE *)(v3 + 23825)) & 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LinkToReserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495460) -------------------------------------------------------- int __stdcall sub_495460(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_TeleportReserv"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_TeleportReserv"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_TeleportReserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004954B0) -------------------------------------------------------- int __thiscall sub_4954B0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_TeleportReserv"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_TeleportReserv"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v2 + 23825) |= 2u; *((_DWORD *)v2 + 38863) = *(_DWORD *)a2; *((_DWORD *)v2 + 38864) = *(_DWORD *)(a2 + 4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_TeleportReserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495530) -------------------------------------------------------- void __thiscall sub_495530(void *this, unsigned __int16 a2) { if ( a2 < 0x80u ) qsort( (char *)this + 508 * a2 + 8, *((_DWORD *)this + 127 * a2), 5u, (int (__cdecl *)(const void *, const void *))sub_4945F0); else sub_639100(&unk_86DDD8, (int)"KingdomQuestEntrance::kqe_sort : Subscript over", a2); } //----- (00495580) -------------------------------------------------------- void *__thiscall sub_495580(void *this, const void *a2, unsigned __int16 a3) { void *result; // eax@2 if ( a3 < 0x80u ) { result = bsearch( a2, (char *)this + 508 * a3 + 8, *((_DWORD *)this + 127 * a3), 5u, (int (__cdecl *)(const void *, const void *))sub_4945F0); } else { sub_639100(&unk_86DDD8, (int)"KingdomQuestEntrance::kqe_search : Subscript over", a3); result = 0; } return result; } //----- (004955E0) -------------------------------------------------------- int __thiscall sub_4955E0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // esi@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuestEntrance::operator []"); dword_7508B8[dword_750CB8] = (int)"KingdomQuestEntrance::operator []"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 16256) = *((_DWORD *)v2 + 16257) & (*((_DWORD *)v2 + 16256) + 1); v3 = *(_WORD *)(a2 + 377); if ( (unsigned __int16)v3 > 0x64u ) { sub_639100(&unk_86DDD8, (int)"KingdomQuestEntrance::kqe_newentrance : Too many entrance", v3); LOWORD(v3) = 100; } *((_DWORD *)v2 + 127 * *((_DWORD *)v2 + 16256)) = (unsigned __int16)v3; *((_DWORD *)v2 + 127 * *((_DWORD *)v2 + 16256) + 1) = 0; memmove((char *)v2 + 508 * *((_DWORD *)v2 + 16256) + 8, (const void *)(a2 + 379), 5 * (unsigned __int16)v3); v4 = *((_DWORD *)v2 + 16256); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuestEntrance::operator []"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00495710) -------------------------------------------------------- int __thiscall sub_495710(void *this) { void *v1; // edi@1 int v2; // eax@8 int v3; // eax@9 int v4; // eax@19 int v5; // eax@20 int v6; // esi@26 int v7; // eax@26 unsigned __int16 v8; // cx@26 int v9; // eax@28 int *v10; // ebx@29 int v11; // eax@32 int v12; // esi@37 int v13; // esi@37 int v14; // eax@37 int v15; // ST04_4@37 __time32_t v16; // eax@37 __time32_t v17; // eax@37 __time32_t v18; // eax@37 int v19; // eax@40 unsigned __int8 v20; // al@40 int v21; // eax@42 void (__thiscall *v22)(_DWORD); // edx@42 void *v23; // esi@44 int v24; // eax@44 int v25; // eax@46 int v26; // ebx@52 int v27; // eax@63 int v29; // [sp-4h] [bp-2A4h]@1 signed int v30; // [sp+0h] [bp-2A0h]@0 signed int v31; // [sp+4h] [bp-29Ch]@0 signed int v32; // [sp+8h] [bp-298h]@0 int v33; // [sp+10h] [bp-290h]@32 void *v34; // [sp+18h] [bp-288h]@1 unsigned __int16 i; // [sp+1Eh] [bp-282h]@26 void *v36; // [sp+20h] [bp-280h]@34 int v37; // [sp+24h] [bp-27Ch]@23 int v38; // [sp+28h] [bp-278h]@23 char v39; // [sp+2Ch] [bp-274h]@42 int v40; // [sp+82h] [bp-21Eh]@42 int v41; // [sp+86h] [bp-21Ah]@42 char v42; // [sp+8Ch] [bp-214h]@42 char v43; // [sp+90h] [bp-210h]@58 char v44; // [sp+190h] [bp-110h]@3 unsigned int v45; // [sp+290h] [bp-10h]@1 int v46; // [sp+29Ch] [bp-4h]@1 int v47; // [sp+2A0h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v29 = (unsigned int)&v47 ^ __security_cookie; v1 = this; v34 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen"); dword_7508B8[dword_750CB8] = (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen"; dword_750AB8[dword_750CB8++] = -1; v46 = 0; if ( byte_7493ED ) { if ( byte_D64C50C ) { sprintf(&v44, "%.255s", "KingdomQuestGateKeeper::erb_happen 0"); sub_418E40((__time32_t)byte_D64C288); if ( dword_D64C388 ) fputs(&v44, dword_D64C388); } if ( byte_7493ED && byte_D64C50C && dword_D64C388 ) { v2 = sub_418E40((__time32_t)byte_D64C288); sub_654AB0(10, (FILE *)v2); fflush(dword_D64C388); fclose(dword_D64C388); dword_D64C388 = 0; } } v3 = *((_WORD *)v1 + 2); if ( (unsigned __int16)v3 >= 0x80u ) { sub_639100(&unk_86DDD8, (int)"KingdomQuestEntrance::kqe_allentry : Subscript over", v3); LABEL_12: if ( byte_7493ED ) { if ( byte_D64C50C ) { sprintf(&v44, "%.255s", "KingdomQuestGateKeeper::erb_happen 1"); sub_418E40((__time32_t)byte_D64C288); if ( dword_D64C388 ) fputs(&v44, dword_D64C388); } if ( byte_7493ED && byte_D64C50C && dword_D64C388 ) { v4 = sub_418E40((__time32_t)byte_D64C288); sub_654AB0(10, (FILE *)v4); fflush(dword_D64C388); fclose(dword_D64C388); dword_D64C388 = 0; } } v5 = *((_WORD *)v1 + 2); if ( (unsigned __int16)v5 < 0x80u ) qsort( (char *)&unk_838B30 + 508 * v5, dword_838B28[127 * v5], 5u, (int (__cdecl *)(const void *, const void *))sub_4945F0); else sub_639100(&unk_86DDD8, (int)"KingdomQuestEntrance::kqe_sort : Subscript over", v5); v37 = sub_494970(&dword_D61E090, *((_DWORD *)v1 + 27), (int)&v38); if ( !v37 ) { sub_639100( &unk_86DDD8, (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen : pKQElement NULL", *((_DWORD *)v1 + 27)); goto LABEL_25; } v6 = dword_13253824; v7 = *(_DWORD *)(dword_13253824 + 8); v8 = *(_WORD *)(v7 + 12 * *(_WORD *)(dword_13253824 + 14) + 4); LOWORD(v7) = *(_WORD *)(v7 + 12 * v8 + 4); v38 = dword_13253824; for ( i = v7; ; i = *(_WORD *)(*(_DWORD *)(v6 + 8) + 12 * i + 4) ) { if ( v8 < *(_WORD *)(v6 + 4) ) { v9 = *(_DWORD *)(v6 + 8) + 12 * v8; if ( *(_BYTE *)(v9 + 8) ) { v10 = *(int **)v9; if ( *(_DWORD *)v9 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int *))(*v10 + 1156))(v10) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*v10 + 1156))(v10) != 3 ) { v11 = (*(int (__thiscall **)(int *))(*v10 + 836))(v10); v33 = v11; if ( v11 == -1 ) { sub_639100( &unk_86DDD8, (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen : Invalin registnumber", v11 != -1); goto LABEL_64; } sub_495530(dword_838B28, *((_WORD *)v1 + 2)); v36 = sub_495580(dword_838B28, &v33, *((_WORD *)v1 + 2)); if ( v36 && sub_494610(v10) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int *, int))(*v10 + 1156))(v10, v29) == 5 ) { v12 = *v10; v29 = sub_48C200(&unk_150A0980, "KQEntryInCamp0"); (*(void (__thiscall **)(int *))(v12 + 1924))(v10); v13 = *v10; v14 = sub_48C200(&unk_150A0980, "KQEntryInCamp1"); (*(void (__thiscall **)(int *, int))(v13 + 1924))(v10, v14); v15 = (*(int (__thiscall **)(int *))(*v10 + 836))(v10); v16 = sub_418EA0((__time32_t)byte_D64C288, (int)" "); v17 = sub_43B910(v16, v15); v18 = sub_418EA0(v17, (int)" is in Booth"); sub_418F20(v18, (int)&unk_13359E04); v6 = v38; goto LABEL_64; } if ( (unsigned __int8)(*(int (__thiscall **)(int *))(*v10 + 1156))(v10) == 4 ) (*(void (__thiscall **)(int *))(*v10 + 1160))(v10); sub_4945A0(dword_838B28, *((_WORD *)v1 + 2)); v19 = (*(int (__thiscall **)(int *, signed int, signed int, signed int))(*v10 + 1056))( v10, v30, v31, v32); sub_5C9360(v19); v20 = *((_BYTE *)v36 + 4); v32 = 10; v31 = 9; v30 = 6; if ( v20 < 2u ) { memcpy(&v39, (char *)v1 + 8, 0x60u); v21 = v37 + 8 * v20; v42 = *((_BYTE *)v1 + 104); v40 = *(_DWORD *)(v21 + 365); v22 = *(void (__thiscall **)(_DWORD))(*v10 + 1536); v41 = *(_DWORD *)(v21 + 369); v29 = (int)&v39; v22(v10); v1 = v34; v6 = v38; } else { v29 = (int)((char *)v1 + 8); (*(void (__thiscall **)(int *))(*v10 + 1536))(v10); } if ( *(int *)((char *)v10 + 122) ) { v23 = off_849C18; *(_WORD *)off_849C18 = 1089; *(_DWORD *)((char *)v23 + 2) = (*(int (__thiscall **)(_DWORD))(*v10 + 836))(v10); v24 = *(int *)((char *)v10 + 122); *(_DWORD *)((char *)v23 + 6) = *(_DWORD *)v24; *(_DWORD *)((char *)v23 + 10) = *(_DWORD *)(v24 + 4); *(_DWORD *)((char *)v23 + 14) = *(_DWORD *)(v24 + 8); *(_DWORD *)((char *)v23 + 18) = **(_DWORD **)((char *)v10 + 102); *(_DWORD *)((char *)v23 + 22) = *(_DWORD *)(*(int *)((char *)v10 + 102) + 4); *((_WORD *)v23 + 13) = *((_WORD *)v1 + 53); *((_DWORD *)v23 + 7) = *((_DWORD *)v1 + 27); if ( !sub_4C81E0(&off_849C18, 32) ) { sub_639100( &unk_86DDD8, (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen : Packet Too Long", 32); v6 = v38; *(_DWORD *)v36 = -1; goto LABEL_64; } v25 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v25); v6 = v38; } *(_DWORD *)v36 = -1; } } else { if ( byte_7493ED ) { if ( byte_D64C50C ) { sprintf(&v44, "%.255s", " "); sub_418E40((__time32_t)byte_D64C288); if ( dword_D64C388 ) fputs(&v44, dword_D64C388); } } v26 = (*(int (__thiscall **)(_DWORD))(*v10 + 836))(v10); if ( byte_7493ED ) { if ( byte_D64C50C ) { sub_418E40((__time32_t)byte_D64C288); if ( dword_D64C388 ) fprintf(dword_D64C388, "%d", v26); } if ( byte_7493ED ) { if ( byte_D64C50C ) { sprintf(&v43, "%.255s", " is in Dead"); sub_418E40((__time32_t)byte_D64C288); if ( dword_D64C388 ) fputs(&v43, dword_D64C388); } if ( byte_7493ED && byte_D64C50C && dword_D64C388 ) { v27 = sub_418E40((__time32_t)byte_D64C288); sub_654AB0(10, (FILE *)v27); fflush(dword_D64C388); fclose(dword_D64C388); dword_D64C388 = 0; } } } } } } } LABEL_64: v8 = i; if ( i >= *(_WORD *)(v6 + 4) ) { v46 = -1; goto LABEL_67; } } } if ( dword_838B2C[127 * v3] < dword_838B28[127 * v3] ) goto LABEL_12; LABEL_25: v46 = -1; LABEL_67: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"KingdomQuestGate::KingdomQuestGateKeeper::erb_happen"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 838B28: using guessed type int dword_838B28[]; // 838B2C: using guessed type int dword_838B2C[]; // 86FEB8: using guessed type int __security_cookie; // D61E090: using guessed type int dword_D61E090; // D64C50C: using guessed type char byte_D64C50C; // 13253824: using guessed type int dword_13253824; // 14D148D0: using guessed type int dword_14D148D0; //----- (00495E20) -------------------------------------------------------- int __thiscall sub_495E20(void *this, int a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // eax@1 int v8; // ecx@1 _BYTE *v9; // ecx@1 bool v10; // zf@1 int v11; // edi@8 int v12; // eax@8 void (__thiscall *v13)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@9 char v15; // [sp+14h] [bp-78h]@8 char v16; // [sp+18h] [bp-74h]@9 int v17; // [sp+2Ch] [bp-60h]@9 int v18; // [sp+30h] [bp-5Ch]@9 int v19; // [sp+34h] [bp-58h]@9 char v20; // [sp+38h] [bp-54h]@9 int v21; // [sp+4Dh] [bp-3Fh]@9 int v22; // [sp+51h] [bp-3Bh]@9 int v23; // [sp+55h] [bp-37h]@9 char v24; // [sp+59h] [bp-33h]@9 int v25; // [sp+6Eh] [bp-1Eh]@9 int v26; // [sp+72h] [bp-1Ah]@9 unsigned int v27; // [sp+7Ch] [bp-10h]@1 int v28; // [sp+88h] [bp-4h]@1 int v29; // [sp+8Ch] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v4 = (unsigned int)&v29 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 1388); v28 = 0; v7 = v6(v5, v4); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; v10 = (dword_D61E078 & 1) == 0; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; if ( v10 ) { dword_D61E078 |= 1u; word_D61E074 = 86; atexit(nullsub_59); } if ( (1 << **((_BYTE **)v5 + 957)) & (unsigned __int16)word_D61E074 && *(_BYTE *)(a2 + 2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1156))(v5) == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 1160))(v5); v11 = *(_DWORD *)(a2 + 3) ^ (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 832))(v5); (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 832))(v5); v12 = sub_494970(&dword_D61E090, v11, (int)&v15); if ( v12 ) { v17 = *(_DWORD *)(v12 + 397); v18 = *(_DWORD *)(v12 + 401); v19 = *(_DWORD *)(v12 + 405); v21 = *(_DWORD *)(v12 + 385); v22 = *(_DWORD *)(v12 + 389); v23 = *(_DWORD *)(v12 + 393); v24 = 0; v20 = 0; v25 = *(_DWORD *)(*(_DWORD *)(v12 + 416) + 50); v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1536); v26 = *(_DWORD *)(*(_DWORD *)(v12 + 416) + 54); v13(v5, &v16, 6, 9, 10); } --dword_750CB8; } else { --dword_750CB8; } v28 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // D61E074: using guessed type __int16 word_D61E074; // D61E078: using guessed type int dword_D61E078; // D61E090: using guessed type int dword_D61E090; //----- (00496020) -------------------------------------------------------- void __thiscall sub_496020(int this) { void *v1; // ecx@1 *(_DWORD *)this = &off_6B96D4; v1 = *(void **)(this + 8); if ( v1 ) sub_6530A4(v1); } // 6B96D4: using guessed type int (__thiscall *off_6B96D4)(void *, char); //----- (00496040) -------------------------------------------------------- signed int __thiscall sub_496040(void *this, int a2) { void *v2; // esi@1 signed int v3; // esi@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQElement::kqe_ReviveNumber"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQElement::kqe_ReviveNumber"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a2 = 0; switch ( *((_BYTE *)v2 + 130) ) { case 1: v3 = 99999; *(_BYTE *)a2 = 0; break; case 2: v3 = *((_BYTE *)v2 + 131); *(_BYTE *)a2 = 0; break; case 3: v3 = 99999; *(_BYTE *)a2 = 1; break; case 4: v3 = *((_BYTE *)v2 + 131); *(_BYTE *)a2 = 1; break; default: v3 = 0; break; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQElement::kqe_ReviveNumber"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00496100) -------------------------------------------------------- int __thiscall sub_496100(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@3 int v4; // edi@4 int v6; // [sp-4h] [bp-28h]@5 char v7; // [sp+14h] [bp-10h]@4 int v8; // [sp+20h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MyKQElement"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MyKQElement"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 122); v8 = 0; if ( v2 && *(_DWORD *)(v2 + 12) && (v3 = *(_DWORD *)(v2 + 60), v3 != -1) ) { v4 = sub_494970(&dword_D61E090, v3, (int)&v7); if ( v4 ) { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MyKQElement"); return v4; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MyKQElement : Cannot found KQ Element", *(_DWORD *)(*(_DWORD *)((char *)v1 + 122) + 60)); --dword_750CB8; v6 = (int)"ShineObjectClass::ShinePlayer::sp_MyKQElement"; } else { --dword_750CB8; v6 = (int)"ShineObjectClass::ShinePlayer::sp_MyKQElement"; } v8 = -1; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D61E090: using guessed type int dword_D61E090; //----- (00496220) -------------------------------------------------------- int __thiscall sub_496220(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpi_KnockDownMinus"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQPlayerInfoList::kqpi_KnockDownMinus"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1) - 1; *((_DWORD *)v2 + 1) = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpi_KnockDownMinus"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00496290) -------------------------------------------------------- int __thiscall sub_496290(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_KnockDownPlus"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQPlayerInfoList::kqpil_KnockDownPlus"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1) + 1; *((_DWORD *)v2 + 1) = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_KnockDownPlus"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00496300) -------------------------------------------------------- int __thiscall sub_496300(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_KnockDownGet"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQPlayerInfoList::kqpil_KnockDownGet"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_KnockDownGet"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00496360) -------------------------------------------------------- _UNKNOWN *__cdecl sub_496360() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_GetBattleStat"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_GetBattleStat"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_GetBattleStat"); return &unk_13244E8C; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004963B0) -------------------------------------------------------- int __thiscall sub_4963B0(void *this) { unsigned int v1; // ST18_4@1 void *v2; // ebx@1 int (__thiscall *v3)(_DWORD, _DWORD); // eax@1 int v4; // eax@1 int v5; // edx@1 int v6; // eax@2 int v7; // eax@6 const void *v8; // esi@7 int v9; // eax@7 int v10; // eax@8 __int16 v11; // di@10 int v12; // ST18_4@10 char *v13; // eax@10 int v14; // esi@10 int v15; // esi@10 int v16; // edi@10 int v17; // eax@10 int v18; // eax@10 char v20; // [sp+10h] [bp-9Ch]@10 int (**v21)(); // [sp+1Ch] [bp-90h]@1 char *v22; // [sp+20h] [bp-8Ch]@1 int v23; // [sp+24h] [bp-88h]@4 int v24; // [sp+28h] [bp-84h]@4 char v25; // [sp+2Ch] [bp-80h]@10 int v26; // [sp+34h] [bp-78h]@10 __int16 v27; // [sp+98h] [bp-14h]@10 char v28; // [sp+9Ah] [bp-12h]@10 unsigned int v29; // [sp+9Ch] [bp-10h]@1 int v30; // [sp+A8h] [bp-4h]@1 int v31; // [sp+ACh] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v1 = (unsigned int)&v31 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQItemDrop"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_KQItemDrop"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1176); v30 = 0; v4 = v3(v2, v1); v21 = &off_6A86A4; v22 = (char *)v2 + 36484; v5 = *((_DWORD *)v2 + 9121); if ( v4 ) v6 = (*(int (__stdcall **)(int))(v5 + 4))(v4); else v6 = (*(int (**)(void))(v5 + 8))(); v24 = v6; v21 = (int (**)())&off_6A86AC; LOBYTE(v30) = 1; v23 = 0; if ( (unsigned __int8)off_6A86AC(&v21) || sub_63F7F0(&v21) ) { do { v7 = (**(int (__stdcall ***)(_DWORD))v22)(v23); if ( v7 ) { v8 = (const void *)(v7 + 8); v9 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); if ( v9 ) { v10 = *(_DWORD *)(v9 + 4); if ( v10 ) { if ( *(_BYTE *)(v10 + 220) ) { v11 = *(_WORD *)v8; v12 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v13 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v25, v11, 3, *((_DWORD *)v13 + 4), v12); memcpy(&v26, v8, 0x64u); v14 = (int)((char *)v8 + 100); v27 = *(_WORD *)v14; v28 = *(_BYTE *)(v14 + 2); v15 = (int)sub_63ACA0(dword_1508B168, v26); sub_4C0A40((int)&v20); sub_4C0A80((int)&v20, (int)v2); v16 = *((_WORD *)v2 + 2); v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v18 = (unsigned __int8)sub_4B0220(v2, (int)&v25, 1, (int)&v20, v16, v17, v15, 2); if ( !(_BYTE)v18 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQItemDrop : Drop fail", v18); } } } } } while ( sub_63F7F0(&v21) ); } --dword_750CB8; v21 = &off_6A86A4; v30 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQItemDrop"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (004965D0) -------------------------------------------------------- int __stdcall sub_4965D0(int a1, int a2) { int v2; // ST14_4@1 int v3; // esi@1 int v4; // ebx@4 unsigned __int8 v5; // cl@5 char v7; // [sp+10h] [bp-74h]@11 char v8; // [sp+24h] [bp-60h]@5 char v9; // [sp+45h] [bp-3Fh]@5 int v10; // [sp+66h] [bp-1Eh]@5 int v11; // [sp+6Ah] [bp-1Ah]@5 unsigned int v12; // [sp+74h] [bp-10h]@1 int v13; // [sp+80h] [bp-4h]@1 int v14; // [sp+84h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_LINK_TO_FORCE_BY_BAN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_KQ_LINK_TO_FORCE_BY_BAN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 2); v13 = 0; v3 = sub_54E4D0(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) ) { v4 = *(_DWORD *)(v3 + 122); if ( v4 ) { strncpy(&v8, "RouN", 0xCu); strncpy(&v9, "RouN", 0xCu); v10 = 6445; v11 = 8630; v5 = 0; while ( *(_DWORD *)v4 != *(_DWORD *)(a1 + 12 * v5 + 6) || *(_DWORD *)(v4 + 4) != *(_DWORD *)(a1 + 12 * v5 + 10) || *(_DWORD *)(v4 + 8) != *(_DWORD *)(a1 + 12 * v5 + 14) ) { ++v5; if ( v5 >= 4u ) goto LABEL_12; } (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v3 + 1536))( v3, &v7, 6, 9, 10); } LABEL_12: v13 = -1; } else { v13 = -1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_LINK_TO_FORCE_BY_BAN_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00496720) -------------------------------------------------------- char __thiscall sub_496720(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x38u); result = 1; } else { result = 0; } return result; } //----- (00496770) -------------------------------------------------------- int __stdcall sub_496770(int a1, int a2) { signed int v2; // esi@1 int v3; // ST00_4@1 int v4; // ebx@1 void **v5; // edi@2 void *v6; // eax@6 void *v7; // eax@6 void *v8; // esi@6 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 signed int v12; // [sp+2Ch] [bp+8h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_W2Z_DESTROY_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_KQ_W2Z_DESTROY_CMD"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a1 + 2); v11 = 0; v4 = sub_494970(&dword_D61E090, v3, (int)&v10); if ( v4 ) { sub_499720(&dword_D64C510, *(_DWORD *)(a1 + 2)); v5 = (void **)(v4 + 412); v12 = 4; do { if ( *v5 ) { if ( *((_BYTE *)v5 - 3) ) sub_494EA0(*v5, 944); v6 = *v5; *((_DWORD *)*v5 + 15) = v2; *((_WORD *)v6 + 32) = -1; v7 = sub_5CF620((void *)(v4 + 528)); v8 = *v5; sub_507950(*((void **)*v5 + 17), (const char *)v7, (int)*v5); sub_49D420((void *)(*((_DWORD *)v8 + 5) + 1072), *((_DWORD *)v8 + 5)); v2 = -1; } v5 += 9; --v12; } while ( v12 ); sub_473C70((int)&dword_D61E090, v10); } --dword_750CB8; v11 = v2; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_W2Z_DESTROY_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D61E090: using guessed type int dword_D61E090; //----- (004968A0) -------------------------------------------------------- char __thiscall sub_4968A0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B972C; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B972C: using guessed type int (__stdcall *off_6B972C)(int, int); //----- (00496A20) -------------------------------------------------------- char __thiscall sub_496A20(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6B9EF4; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B9EF4: using guessed type int (__stdcall *off_6B9EF4)(int, int); //----- (00496BA0) -------------------------------------------------------- void *__thiscall sub_496BA0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6B9F04; _LN21((char *)this + 24, 0x42Cu, 150, sub_422B10); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6B96F8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B96F8: using guessed type int (__thiscall *off_6B96F8)(void *, char); // 6B9F04: using guessed type int (__thiscall *off_6B9F04)(void *, char); //----- (00496C40) -------------------------------------------------------- int __stdcall sub_496C40(int a1, int a2) { int v2; // eax@8 int *v3; // esi@9 _BYTE *v4; // edi@9 int v5; // edx@9 int v6; // eax@32 void *v7; // edi@33 int v8; // ST0C_4@33 int v9; // eax@41 bool v10; // zf@42 int v11; // eax@45 __time32_t v12; // eax@47 __time32_t v13; // eax@47 __time32_t v14; // eax@47 int v15; // ebx@48 char *v16; // edi@50 int v17; // esi@50 int v18; // ebx@54 int v19; // eax@55 _BYTE *v20; // eax@55 int v21; // eax@55 int v22; // eax@56 char v23; // dl@58 int v24; // ecx@58 int v25; // eax@58 int v26; // edx@58 int v27; // eax@58 int v28; // ecx@58 int v29; // edx@58 int v30; // eax@59 __int16 v31; // cx@62 int v32; // edi@66 int v33; // ecx@66 _BYTE *v34; // esi@66 int v35; // eax@81 _BYTE *v36; // esi@85 int v37; // eax@85 int v38; // eax@104 int v39; // eax@107 int v40; // eax@108 int v41; // edi@109 int v42; // ecx@109 _BYTE *v43; // esi@109 int v44; // eax@124 int v45; // eax@127 int v46; // ebx@129 int v47; // ecx@129 int v48; // eax@129 int v49; // esi@129 __time32_t v50; // eax@129 __time32_t v51; // edi@129 FILE *v52; // eax@131 __time32_t v53; // eax@133 int v54; // ebx@135 int v55; // eax@145 int v56; // eax@148 int v57; // esi@149 int v58; // eax@161 int v59; // eax@164 void *v61; // [sp-14h] [bp-6F8h]@106 unsigned int v62; // [sp-10h] [bp-6F4h]@106 int v63; // [sp-Ch] [bp-6F0h]@106 void (__thiscall *v64)(void *); // [sp-8h] [bp-6ECh]@106 int (__stdcall **v65)(int, int); // [sp+10h] [bp-6D4h]@149 int v66; // [sp+14h] [bp-6D0h]@46 void *v67; // [sp+18h] [bp-6CCh]@33 int v68; // [sp+1Ch] [bp-6C8h]@9 char v69; // [sp+20h] [bp-6C4h]@33 char v70; // [sp+21h] [bp-6C3h]@48 char v71; // [sp+24h] [bp-6C0h]@55 char v72; // [sp+124h] [bp-5C0h]@15 char v73; // [sp+224h] [bp-4C0h]@48 char v74; // [sp+22Dh] [bp-4B7h]@50 int v75; // [sp+240h] [bp-4A4h]@50 int v76; // [sp+244h] [bp-4A0h]@50 int v77; // [sp+264h] [bp-480h]@50 int v78; // [sp+268h] [bp-47Ch]@50 int v79; // [sp+288h] [bp-45Ch]@50 int v80; // [sp+28Ch] [bp-458h]@50 int v81; // [sp+2ACh] [bp-438h]@50 int v82; // [sp+2B0h] [bp-434h]@50 char v83; // [sp+2B4h] [bp-430h]@19 char v84; // [sp+3B4h] [bp-330h]@23 char v85; // [sp+4B4h] [bp-230h]@3 char v86; // [sp+5B4h] [bp-130h]@27 char v87; // [sp+6B4h] [bp-30h]@46 int (__stdcall **v88)(int, int); // [sp+6BCh] [bp-28h]@55 int v89; // [sp+6C0h] [bp-24h]@55 int (__thiscall *v90)(int, int, int, int); // [sp+6C4h] [bp-20h]@55 char *v91; // [sp+6C8h] [bp-1Ch]@55 int v92; // [sp+6CCh] [bp-18h]@55 __int16 v93; // [sp+6D0h] [bp-14h]@55 unsigned int v94; // [sp+6D4h] [bp-10h]@1 int v95; // [sp+6E0h] [bp-4h]@1 int v96; // [sp+6E4h] [bp+0h]@1 v94 = (unsigned int)&v96 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKE_CMD"; dword_750AB8[dword_750CB8++] = -1; v95 = 0; if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v85, "%.255s", "WorldManagerSession::wms_NC_KQ_W2Z_MAKE_REQ"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v85, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v2 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v2); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } v3 = (int *)(a1 + 2); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v4 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v4 = *(_DWORD *)(a1 + 207); *((_DWORD *)v4 + 1) = *(_DWORD *)(a1 + 211); v5 = *(_DWORD *)(a1 + 215); v68 = a1 + 2; *((_DWORD *)v4 + 2) = v5; v4[12] = 0; if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v85, "%.255s", " Title : "); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v85, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v72, "%.255s", a1 + 11); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v72, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v83, "%.255s", "["); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v83, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v84, "%.255s", v4); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v84, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", "]"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v6 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v6); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } } } } v7 = off_849C18; *(_WORD *)off_849C18 = 22542; *(_DWORD *)((char *)v7 + 2) = *v3; *((_WORD *)v7 + 3) = 0; v8 = *v3; v67 = v7; if ( sub_494970(&dword_D61E090, v8, (int)&v69) != 0 ) { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Duplicate handle", *v3); if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", " ERR_KINGDOMQUEST_MAKE_DUPLICATEHANDLE"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v9 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v9); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } *((_WORD *)v7 + 3) = 2434; v10 = sub_4C81E0(&off_849C18, 8) == 0; goto LABEL_43; } strncpy(&v87, (const char *)(a1 + 298), 0x20u); if ( sub_5063A0(&unk_13230E20, (unsigned __int8 *)&v87, (int)&v66) == 0 ) { sub_6390B0(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Script not found", a1 + 298); v12 = sub_418EA0((__time32_t)byte_14D14D00, (int)" ERR_KINGDOMQUEST_MAKE_SCRIPTNOTFOUND["); v13 = sub_418EA0(v12, a1 + 298); v14 = sub_418EA0(v13, (int)"]"); sub_418F20(v14, (int)&unk_13359E04); *((_WORD *)v7 + 3) = 2444; v10 = sub_4C81E0(&off_849C18, 8) == 0; LABEL_43: if ( v10 ) { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Packet Too Long", 8); } else { v11 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v11); } goto LABEL_168; } _eh_vector_constructor_iterator_(&v73, 0x24u, 4, (int)sub_419140, nullsub_2); v15 = 0; LOBYTE(v95) = 1; v70 = 1; if ( !(dword_D61E088 & 1) ) { dword_D61E088 |= 1u; dword_D61E084 = 0; dword_D61E080 = 0; *(_DWORD *)dword_D61E07C = 0; strncpy(dword_D61E07C, byte_6A492E, 0xCu); atexit(nullsub_58); } v75 = 0; v76 = 0; v77 = 0; v78 = 0; v79 = 0; v80 = 0; v81 = 0; v82 = 0; v66 = 0; v16 = &v74; v17 = a1 + 203; while ( *(_DWORD *)dword_D61E07C != *(_DWORD *)(v17 + 4) || dword_D61E080 != *(_DWORD *)(v17 + 8) || dword_D61E084 != *(_DWORD *)(v17 + 12) ) { dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v18 = (int)&byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v18 = *(_DWORD *)(v17 + 4); *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 8); *(_DWORD *)(v18 + 8) = *(_DWORD *)(v17 + 12); *(_BYTE *)(v18 + 12) = 0; if ( !sub_494BA0(&dword_D61E090, v17 + 4) ) { sub_6390B0(&unk_86DDD8, (int)"Submap in use", v18); v32 = v66; *((_WORD *)v67 + 3) = word_838AA0[v66]; v33 = 26 * v32 + v68 + 205; dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v10 = byte_7493ED == 0; v34 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v34 = *(_DWORD *)v33; *((_DWORD *)v34 + 1) = *(_DWORD *)(v33 + 4); *((_DWORD *)v34 + 2) = *(_DWORD *)(v33 + 8); v34[12] = 0; if ( !v10 ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", " Not empty "); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fprintf(dword_14D14E00, "%d", v32); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v84, "%.255s", v34); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v84, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v35 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v35); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } } if ( sub_4C81E0(&off_849C18, 8) ) { v40 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v40); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Packet Too Long", 8); } goto LABEL_166; } sub_465590((int)&v71, v17 + 4); v88 = &off_6A4700; v89 = (int)&unk_CFCF380; v90 = sub_4521E0; v91 = &v71; v92 = 0; v93 = -1; LOBYTE(v95) = 3; sub_43C470((int)&unk_CFCF380, (int)&v88); v19 = dword_8622C4 & (dword_8622C0 + 1); *(_DWORD *)(v16 + 19) = v92; dword_8622C0 = v19; v20 = &byte_85A2C0[256 * v19]; *(_DWORD *)v20 = *(_DWORD *)(v17 - 8); *((_DWORD *)v20 + 1) = *(_DWORD *)(v17 - 4); *((_DWORD *)v20 + 2) = *(_DWORD *)v17; v20[12] = 0; v21 = (unsigned __int16)sub_639620(&unk_14D20404, v20); if ( (unsigned __int16)v21 < dword_14D20400 ) v22 = *(_DWORD *)(dword_14D203FC + 4 * v21); else v22 = 0; v23 = *(_BYTE *)(v17 - 9); v24 = *(_DWORD *)(v17 - 4); *(_DWORD *)(v16 + 23) = v22; v25 = *(_DWORD *)(v17 - 8); *(v16 - 9) = v23; v26 = *(_DWORD *)v17; *((_DWORD *)v16 - 2) = v25; v27 = *(_DWORD *)(v17 + 4); *((_DWORD *)v16 - 1) = v24; v28 = *(_DWORD *)(v17 + 8); *(_DWORD *)v16 = v26; v29 = *(_DWORD *)(v17 + 12); *((_DWORD *)v16 + 1) = v27; LOBYTE(v27) = *(_BYTE *)(v17 + 16); *((_DWORD *)v16 + 2) = v28; *((_DWORD *)v16 + 3) = v29; v16[16] = v27; if ( !*(_DWORD *)(v16 + 23) ) { v41 = v66; *((_WORD *)v67 + 3) = word_838A98[v66]; v42 = 26 * v41 + v68 + 193; dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v10 = byte_7493ED == 0; v43 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v43 = *(_DWORD *)v42; *((_DWORD *)v43 + 1) = *(_DWORD *)(v42 + 4); *((_DWORD *)v43 + 2) = *(_DWORD *)(v42 + 8); v43[12] = 0; if ( !v10 ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", " Not found2 "); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fprintf(dword_14D14E00, "%d", v41); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v84, "%.255s", v43); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v84, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v44 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v44); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } } LABEL_125: if ( sub_4C81E0(&off_849C18, 8) ) { v45 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v45); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Packet Too Long", 8); } v88 = &off_6A2544; LOBYTE(v95) = 1; sub_4646E0((int)&v71); LABEL_166: v64 = nullsub_2; v63 = 4; v62 = 36; v61 = &v73; goto LABEL_167; } v30 = *(_DWORD *)(v16 + 19); if ( v30 ) { v10 = *(_DWORD *)(v30 + 60) == -1; v70 = 1; if ( !v10 ) { v46 = v66; *((_WORD *)v67 + 3) = word_838AA0[v66]; v47 = 26 * v46 + v68 + 193; v48 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v48; v48 <<= 8; v49 = (int)&byte_85A2C0[v48]; *(_DWORD *)&byte_85A2C0[v48] = *(_DWORD *)v47; *(_DWORD *)&byte_85A2C0[v48 + 4] = *(_DWORD *)(v47 + 4); *(_DWORD *)&byte_85A2C0[v48 + 8] = *(_DWORD *)(v47 + 8); byte_85A2C0[v48 + 12] = 0; v50 = sub_418EA0((__time32_t)byte_14D14D00, (int)" Not empty2 "); v51 = v50; if ( byte_7493ED ) { if ( *(_BYTE *)(v50 + 644) ) { sub_418E40(v50); v52 = *(FILE **)(v51 + 256); if ( v52 ) fprintf(v52, "%d", v46); } } v53 = sub_418EA0(v51, v49); sub_418F20(v53, (int)&unk_13359E04); goto LABEL_125; } v31 = *(_WORD *)(v68 + 7); *(_DWORD *)(v30 + 60) = *(_DWORD *)v68; *(_WORD *)(v30 + 64) = v31; if ( *(_BYTE *)(v17 + 16) ) sub_494EA0(*(void **)(v16 + 19), 950); } else { v70 = 0; } v88 = &off_6A2544; LOBYTE(v95) = 1; sub_4646E0((int)&v71); v17 += 26; v16 += 36; ++v66; if ( v66 >= 4 ) goto LABEL_134; v15 = 0; } if ( v66 == v15 ) { *((_WORD *)v67 + 3) = word_838A98[0]; dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v10 = byte_7493ED == 0; v36 = &byte_85A2C0[256 * dword_8622C0]; v37 = v68; *(_DWORD *)v36 = *(_DWORD *)(v68 + 205); *((_DWORD *)v36 + 1) = *(_DWORD *)(v37 + 209); *((_DWORD *)v36 + 2) = *(_DWORD *)(v37 + 213); v36[12] = 0; if ( !v10 ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", " Not found "); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fprintf(dword_14D14E00, "%d", 0); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v84, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v84, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v83, "%.255s", v36); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v83, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v38 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v38); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } } } if ( sub_4C81E0(&off_849C18, 8) ) { v39 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v39); v64 = nullsub_2; v63 = 4; v62 = 36; v61 = &v73; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Packet Too Long", 8); v64 = nullsub_2; v63 = 4; v62 = 36; v61 = &v73; } } else { LABEL_134: if ( word_D61E09C == -1 ) v54 = 0; else v54 = (*(int (__thiscall **)(int *, _DWORD))(dword_D61E090 + 8))(&dword_D61E090, (unsigned __int16)word_D61E09C); if ( v54 ) { v57 = v68; sub_494440(v54 + 4, v68); v65 = &off_6B9EF4; v66 = v54 + 1040; LOBYTE(v95) = 4; sub_43C470(v54 + 1040, (int)&v65); LOBYTE(v95) = 1; memmove((void *)(v54 + 384), &v73, 0x90u); sub_4D57B0(&v85, (const char *)(v57 + 296)); memcpy((void *)(v54 + 528), &v85, 0x100u); nullsub_2(&v85); sub_4D57B0(&v85, (const char *)(v68 + 328)); memcpy((void *)(v54 + 784), &v85, 0x100u); nullsub_2(&v85); if ( v70 == 1 ) { if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", " ERR_KINGDOMQUEST_MAKE_NOERR "); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v84, "%.255s", v68 + 9); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v84, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v58 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v58); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } *((_WORD *)v67 + 3) = 2433; if ( sub_4C81E0(&off_849C18, 8) ) { v59 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v59); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Packet Too Long", 8); } } sub_499990(&dword_D64C510, *(_DWORD *)v68); goto LABEL_166; } sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Buffer full", 0); *((_WORD *)v67 + 3) = 2435; if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v86, "%.255s", " ERR_KINGDOMQUEST_MAKE_TOOMANYQUEST"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v86, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v55 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v55); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } if ( sub_4C81E0(&off_849C18, 8) ) { v56 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v56); v64 = nullsub_2; v63 = 4; v62 = 36; v61 = &v73; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKED_CMD : Packet Too Long", 8); v64 = nullsub_2; v63 = 4; v62 = 36; v61 = &v73; } } LABEL_167: LOBYTE(v95) = 0; _LN21(v61, v62, v63, v64); LABEL_168: --dword_750CB8; v95 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_W2Z_MAKE_CMD"); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 6B9EF4: using guessed type int (__stdcall *off_6B9EF4)(int, int); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 838A98: using guessed type __int16 word_838A98[]; // 838AA0: using guessed type __int16 word_838AA0[]; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // D61E080: using guessed type int dword_D61E080; // D61E084: using guessed type int dword_D61E084; // D61E088: using guessed type int dword_D61E088; // D61E090: using guessed type int dword_D61E090; // D61E09C: using guessed type __int16 word_D61E09C; // 14D12A00: using guessed type int dword_14D12A00; // 14D14F84: using guessed type char byte_14D14F84; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00497E30) -------------------------------------------------------- signed int __thiscall sub_497E30(int this, int a2) { signed int result; // eax@2 int (__stdcall **v3)(int, int); // [sp+0h] [bp-60h]@1 int v4; // [sp+4h] [bp-5Ch]@1 int (__thiscall *v5)(void *, int, int, int); // [sp+8h] [bp-58h]@1 int *v6; // [sp+Ch] [bp-54h]@1 int v7; // [sp+10h] [bp-50h]@1 __int16 v8; // [sp+14h] [bp-4Ch]@1 int v9; // [sp+18h] [bp-48h]@1 unsigned int v10; // [sp+50h] [bp-10h]@1 int v11; // [sp+5Ch] [bp-4h]@1 int v12; // [sp+60h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v9 = a2; v3 = &off_6B9EFC; v4 = this; v5 = sub_494700; v6 = &v9; v7 = 0; v8 = -1; v11 = 0; sub_43C470(this, (int)&v3); v3 = &off_6B9724; if ( v7 ) result = *(_DWORD *)(v7 + 4); else result = 99999; return result; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); // 6B9EFC: using guessed type int (__stdcall *off_6B9EFC)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00497ED0) -------------------------------------------------------- int __thiscall sub_497ED0(void *this, int (__stdcall *a2)(_DWORD), int a3) { int v3; // esi@1 int result; // eax@2 int v5; // eax@3 int v6; // esi@3 int (__stdcall **v7)(int, int); // [sp+10h] [bp-60h]@1 int v8; // [sp+14h] [bp-5Ch]@1 int (__thiscall *v9)(void *, int, int, int); // [sp+18h] [bp-58h]@1 int *v10; // [sp+1Ch] [bp-54h]@1 int v11; // [sp+20h] [bp-50h]@1 __int16 v12; // [sp+24h] [bp-4Ch]@1 int v13; // [sp+28h] [bp-48h]@1 unsigned int v14; // [sp+60h] [bp-10h]@1 int v15; // [sp+6Ch] [bp-4h]@1 int v16; // [sp+70h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v11 = 0; v13 = a3; v7 = &off_6B9EFC; v8 = v3; v9 = sub_494700; v10 = &v13; v12 = -1; LOBYTE(v15) = 1; sub_43C470(v3, (int)&v7); LOBYTE(v15) = 0; v7 = &off_6B9724; if ( v11 ) { v5 = a2(a3); --dword_750CB8; v6 = v5; v15 = -1; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"); result = v6; } else { --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"); result = 0; } return result; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); // 6B9EFC: using guessed type int (__stdcall *off_6B9EFC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00497FF0) -------------------------------------------------------- int __thiscall sub_497FF0(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ecx@2 int v5; // esi@5 int v6; // [sp-8h] [bp-78h]@2 int (__stdcall **v7)(int, int); // [sp+10h] [bp-60h]@4 int v8; // [sp+14h] [bp-5Ch]@4 int (__thiscall *v9)(void *, int, int, int); // [sp+18h] [bp-58h]@4 int *v10; // [sp+1Ch] [bp-54h]@4 int v11; // [sp+20h] [bp-50h]@4 __int16 v12; // [sp+24h] [bp-4Ch]@4 int v13; // [sp+28h] [bp-48h]@4 unsigned int v14; // [sp+60h] [bp-10h]@1 int v15; // [sp+6Ch] [bp-4h]@1 int v16; // [sp+70h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetBattleStat"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_GetBattleStat"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v2 = sub_496100(v1); if ( !v2 ) { --dword_750CB8; v15 = -1; v6 = (int)"ShineObjectClass::ShinePlayer::so_GetBattleStat"; v3 = (int)&unk_D020420; LABEL_3: sub_467660(v3, v6); return (int)&unk_13244E8C; } v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v7 = &off_6B9EFC; v8 = v2 + 1040; v9 = sub_494700; v10 = &v13; v11 = 0; v12 = -1; LOBYTE(v15) = 1; sub_43C470(v2 + 1040, (int)&v7); --dword_750CB8; v7 = &off_6B9724; v15 = -1; v6 = (int)"ShineObjectClass::ShinePlayer::so_GetBattleStat"; v3 = (int)&unk_D020420; if ( !v11 ) goto LABEL_3; v5 = v11 + 8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetBattleStat"); return v5; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); // 6B9EFC: using guessed type int (__stdcall *off_6B9EFC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00498120) -------------------------------------------------------- char __thiscall sub_498120(int this, int a2) { char result; // al@2 int (__stdcall **v3)(int, int); // [sp+0h] [bp-60h]@3 int v4; // [sp+4h] [bp-5Ch]@3 int (__thiscall *v5)(void *, int, int, int); // [sp+8h] [bp-58h]@3 int *v6; // [sp+Ch] [bp-54h]@3 int v7; // [sp+10h] [bp-50h]@3 __int16 v8; // [sp+14h] [bp-4Ch]@3 int v9; // [sp+18h] [bp-48h]@3 unsigned int v10; // [sp+50h] [bp-10h]@1 int v11; // [sp+5Ch] [bp-4h]@3 int v12; // [sp+60h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; if ( a2 != -1 && (v9 = a2, v3 = &off_6B9EFC, v4 = this, v5 = sub_494700, v6 = &v9, v7 = 0, v8 = -1, v11 = 0, sub_43C470(this, (int)&v3), v3 = &off_6B9724, v7) ) result = *(_BYTE *)(v7 + 52); else result = 0; return result; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); // 6B9EFC: using guessed type int (__stdcall *off_6B9EFC)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004981C0) -------------------------------------------------------- char __thiscall sub_4981C0(int this, int a2, char a3, char a4) { int v4; // esi@1 int v6; // eax@5 int (__stdcall **v7)(int, int); // [sp+Ch] [bp-60h]@3 int v8; // [sp+10h] [bp-5Ch]@3 int (__thiscall *v9)(void *, int, int, int); // [sp+14h] [bp-58h]@3 int *v10; // [sp+18h] [bp-54h]@3 int v11; // [sp+1Ch] [bp-50h]@3 __int16 v12; // [sp+20h] [bp-4Ch]@3 int v13; // [sp+24h] [bp-48h]@3 unsigned int v14; // [sp+5Ch] [bp-10h]@1 int v15; // [sp+68h] [bp-4h]@3 int v16; // [sp+6Ch] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v4 = this; if ( a2 == -1 ) return 0; v13 = a2; v7 = &off_6B9EFC; v8 = this; v9 = sub_494700; v10 = &v13; v11 = 0; v12 = -1; v15 = 0; sub_43C470(this, (int)&v7); v15 = -1; v7 = &off_6B9724; if ( !v11 ) { if ( *(_WORD *)(v4 + 12) == -1 || (v6 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 8))(v4, *(_WORD *)(v4 + 12))) == 0 ) return 0; *(_DWORD *)v6 = a2; *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)(v6 + 36) = 0; *(_DWORD *)(v6 + 32) = 0; *(_DWORD *)(v6 + 28) = 0; *(_DWORD *)(v6 + 24) = 0; *(_DWORD *)(v6 + 20) = 0; *(_DWORD *)(v6 + 16) = 0; *(_DWORD *)(v6 + 12) = 0; *(_DWORD *)(v6 + 40) = 0; *(_DWORD *)(v6 + 44) = 0; *(_DWORD *)(v6 + 48) = 10000; *(_BYTE *)(v6 + 52) = a4; *(_BYTE *)(v6 + 53) = a3; } return 1; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); // 6B9EFC: using guessed type int (__stdcall *off_6B9EFC)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004982C0) -------------------------------------------------------- char __thiscall sub_4982C0(int this, int a2) { int v2; // esi@1 int (__stdcall **v4)(int, int); // [sp+4h] [bp-60h]@2 int v5; // [sp+8h] [bp-5Ch]@2 int (__thiscall *v6)(void *, int, int, int); // [sp+Ch] [bp-58h]@2 int *v7; // [sp+10h] [bp-54h]@2 int v8; // [sp+14h] [bp-50h]@2 int v9; // [sp+18h] [bp-4Ch]@2 int v10; // [sp+1Ch] [bp-48h]@2 unsigned int v11; // [sp+54h] [bp-10h]@1 int v12; // [sp+60h] [bp-4h]@2 int v13; // [sp+64h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v2 = this; if ( a2 == -1 || (v10 = a2, v4 = &off_6B9EFC, v5 = this, v6 = sub_494700, v7 = &v10, v8 = 0, LOWORD(v9) = -1, v12 = 0, sub_43C470(this, (int)&v4), v12 = -1, v4 = &off_6B9724, !v8) ) return 0; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v9) ) { sub_639100(&unk_86DDD8, (int)"KQPlayerInfoList::kqpil_DeletePlayerInfo : l_Free fail", (unsigned __int16)v9); return 0; } return 1; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); // 6B9EFC: using guessed type int (__stdcall *off_6B9EFC)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00498390) -------------------------------------------------------- char __stdcall sub_498390(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = a1; v3 = sub_494970(&dword_D61E090, *(_DWORD *)(a1 + 2), (int)&a1); if ( v3 ) LOBYTE(v3) = sub_4982C0(v3 + 1040, *(_DWORD *)(v2 + 6)); return v3; } // D61E090: using guessed type int dword_D61E090; //----- (004983D0) -------------------------------------------------------- void *__thiscall sub_4983D0(void *this, int a2) { void *v2; // ebx@1 int v3; // ecx@1 int v4; // eax@1 signed int v5; // edi@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; sub_494440((int)((char *)this + 4), a2 + 4); v3 = a2 + 401; v4 = (int)((char *)v2 + 389); v5 = 4; do { *(_BYTE *)(v4 - 5) = *(_BYTE *)(v3 - 17); *(_DWORD *)(v4 - 4) = *(_DWORD *)(v3 - 16); *(_DWORD *)v4 = *(_DWORD *)(a2 - (_DWORD)v2 + 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); *(_DWORD *)(v4 + 23) = *(_DWORD *)(v3 + 11); *(_DWORD *)(v4 + 27) = *(_DWORD *)(v3 + 15); v3 += 36; v4 += 36; --v5; } while ( v5 ); memcpy((char *)v2 + 528, (const void *)(a2 + 528), 0x100u); memcpy((char *)v2 + 784, (const void *)(a2 + 784), 0x100u); *((_WORD *)v2 + 522) = *(_WORD *)(a2 + 1044); *((_DWORD *)v2 + 262) = *(_DWORD *)(a2 + 1048); *((_DWORD *)v2 + 263) = *(_DWORD *)(a2 + 1052); *((_DWORD *)v2 + 264) = *(_DWORD *)(a2 + 1056); *((_WORD *)v2 + 530) = *(_WORD *)(a2 + 1060); *((_DWORD *)v2 + 266) = *(_DWORD *)(a2 + 1064); return v2; } //----- (004984D0) -------------------------------------------------------- int __stdcall sub_4984D0(int a1, int a2) { int v2; // edi@1 int v3; // eax@12 int v4; // esi@13 int v5; // eax@21 int v6; // eax@29 int v7; // ebx@32 int v8; // ecx@33 int v9; // eax@34 int v10; // ecx@34 int v11; // eax@34 int v12; // edx@34 int v13; // eax@34 int v14; // ecx@34 int v15; // edx@34 int v16; // esi@34 int v17; // eax@34 int v18; // ecx@34 char *v19; // ebx@35 signed int v20; // eax@36 int v21; // ecx@39 int v22; // esi@39 int v23; // edx@39 char v25; // [sp+Ch] [bp-288h]@39 int v26; // [sp+20h] [bp-274h]@34 int v27; // [sp+24h] [bp-270h]@34 int v28; // [sp+28h] [bp-26Ch]@34 char v29; // [sp+2Ch] [bp-268h]@34 int v30; // [sp+41h] [bp-253h]@34 int v31; // [sp+45h] [bp-24Fh]@34 int v32; // [sp+49h] [bp-24Bh]@34 char v33; // [sp+4Dh] [bp-247h]@34 int v34; // [sp+62h] [bp-232h]@34 int v35; // [sp+66h] [bp-22Eh]@34 char v36; // [sp+6Ch] [bp-228h]@39 int v37; // [sp+70h] [bp-224h]@1 int v38; // [sp+74h] [bp-220h]@34 int v39; // [sp+78h] [bp-21Ch]@1 int v40; // [sp+7Ch] [bp-218h]@34 int v41; // [sp+80h] [bp-214h]@13 char v42; // [sp+84h] [bp-210h]@3 char v43; // [sp+184h] [bp-110h]@7 unsigned int v44; // [sp+284h] [bp-10h]@1 int v45; // [sp+290h] [bp-4h]@1 int v46; // [sp+294h] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v37 = (int)"WorldManagerSession::wms_NC_KQ_W2Z_START_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_W2Z_START_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_KQ_W2Z_START_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v45 = 0; v39 = a1 + 2; if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v42, "%.255s", "wms_NC_KQ_W2Z_START_CMD : "); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v42, dword_14D14E00); } if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v43, "%.255s", a1 + 11); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v43, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v3 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v3); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } v4 = sub_494970(&dword_D61E090, *(_DWORD *)v2, (int)&v41); if ( v4 != 0 ) { if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v43, "%.255s", " Success"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v43, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v6 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v6); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } if ( *(_DWORD *)(v4 + 412) ) { sub_494860((void *)v4); v41 = 0; if ( *(_WORD *)(a1 + 379) > 0u ) { v7 = a1 + 381; do { sub_4981C0(v4 + 1040, *(_DWORD *)v7, *(_BYTE *)(v7 + 4), 1); v8 = *(_WORD *)(a1 + 379); v7 += 5; ++v41; } while ( v41 < v8 ); } } v9 = sub_4955E0(dword_838B28, v2); v10 = *(_DWORD *)(v4 + 401); v38 = v9; v11 = *(_DWORD *)(v4 + 397); v40 = dword_14D129E8; v12 = *(_DWORD *)(v4 + 405); v26 = v11; v13 = *(_DWORD *)(v4 + 385); v27 = v10; v14 = *(_DWORD *)(v4 + 389); v28 = v12; v15 = *(_DWORD *)(v4 + 393); v16 = *(_DWORD *)(v4 + 416); v30 = v13; v17 = *(_DWORD *)(v16 + 50); v31 = v14; v18 = *(_DWORD *)(v16 + 54); v32 = v15; v33 = 0; v29 = 0; v34 = v17; v35 = v18; v41 = (int)&unk_838AA8; while ( 1 ) { dword_D64C270 = dword_D64C274 & (dword_D64C270 + 1); v19 = (char *)&unk_D645270 + 112 * dword_D64C270; v20 = word_13359DF4 == -1 ? 0 : (*(int (__thiscall **)(int *, _DWORD))(dword_13359DE8 + 8))( &dword_13359DE8, (unsigned __int16)word_13359DF4); if ( !v20 ) break; *((_DWORD *)v19 + 1) = v38; memcpy(v19 + 8, &v25, 0x60u); v21 = v39; v19[104] = v36; v22 = v40; *((_WORD *)v19 + 53) = *(_WORD *)(v21 + 7); v23 = v41; *((_DWORD *)v19 + 27) = *(_DWORD *)v21; *(_DWORD *)v20 = v22 + 10 * *(_DWORD *)v23; *(_DWORD *)(v20 + 4) = v19; *(_DWORD *)(v20 + 12) = 0; v41 = v23 + 4; if ( v23 + 4 >= (signed int)&off_838ABC ) goto LABEL_42; } sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_START_CMD : EventReserve error", 0); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_KQ_W2Z_START_CMD : Not exist KingdomQuest", *(_DWORD *)v2); if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v43, "%.255s", " Fail : KQ not exist"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v43, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v5 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v5); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } } LABEL_42: --dword_750CB8; v45 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_KQ_W2Z_START_CMD"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 838ABC: using guessed type int (__thiscall **off_838ABC)(void *, char); // 838B28: using guessed type int dword_838B28[]; // 86FEB8: using guessed type int __security_cookie; // D61E090: using guessed type int dword_D61E090; // D64C270: using guessed type int dword_D64C270; // D64C274: using guessed type int dword_D64C274; // 13359DE8: using guessed type int dword_13359DE8; // 13359DF4: using guessed type __int16 word_13359DF4; // 14D129E8: using guessed type int dword_14D129E8; // 14D14F84: using guessed type char byte_14D14F84; //----- (004989A0) -------------------------------------------------------- int __thiscall sub_4989A0(void *this, int (__stdcall *a2)(_DWORD)) { void *v2; // esi@1 int v3; // edi@1 int result; // eax@2 int v5; // eax@3 int v6; // eax@3 int v7; // esi@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQElementFunction"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_KQElementFunction"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_496100(v2); if ( v3 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v6 = sub_497ED0((void *)(v3 + 1040), a2, v5); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQElementFunction"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQElementFunction"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00498AA0) -------------------------------------------------------- int __thiscall sub_498AA0(int this, signed int a2) { int v2; // esi@1 signed int v3; // edi@1 int v4; // ebx@1 signed int v5; // eax@1 int v6; // edx@2 int v7; // ecx@4 v2 = this; v3 = a2; v4 = 0; *(_DWORD *)this = &off_6B96D4; *(_DWORD *)(this + 16) = 0; sub_496A20(this, a2); *(_DWORD *)v2 = &off_6BA384; *(_DWORD *)(v2 + 24) = unknown_libname_130(56 * v3 | -((unsigned __int8)(56 * (unsigned __int64)(unsigned int)v3 >> 32) != 0)); v5 = 0; if ( a2 > 0 ) { v6 = 0; do { if ( v5 < *(_WORD *)(v2 + 4) ) { v7 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v7 + v6) ) { *(_DWORD *)(v7 + v6) = v4 + *(_DWORD *)(v2 + 24); v3 = a2; } } ++v5; v4 += 56; v6 += 12; } while ( v5 < v3 ); } return v2; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6B96D4: using guessed type int (__thiscall *off_6B96D4)(void *, char); // 6BA384: using guessed type int (__thiscall *off_6BA384)(void *, char); //----- (00498B50) -------------------------------------------------------- char __thiscall sub_498B50(void *this, int a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_4983D0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00498B90) -------------------------------------------------------- char __thiscall sub_498B90(void *this, int a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_4983D0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00498BD0) -------------------------------------------------------- char __thiscall sub_498BD0(int this, void *a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4983D0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00498C20) -------------------------------------------------------- char __thiscall sub_498C20(int this, void *a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4983D0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00498C70) -------------------------------------------------------- int __thiscall sub_498C70(int this) { int v1; // esi@1 v1 = this; sub_498AA0(this, 100); *(_DWORD *)v1 = &off_6BA3A8; return v1; } // 6BA3A8: using guessed type int (__thiscall *off_6BA3A8)(void *, char); //----- (00498C90) -------------------------------------------------------- void *__thiscall sub_498C90(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6B96D4; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6B96D4: using guessed type int (__thiscall *off_6B96D4)(void *, char); //----- (00498CD0) -------------------------------------------------------- int __thiscall sub_498CD0(int this) { int v1; // esi@1 signed int v2; // ecx@1 signed int v3; // edx@1 int v4; // eax@1 int v5; // edi@3 bool v6; // zf@3 int v7; // edi@3 int v8; // edi@6 int v9; // edi@6 int v10; // edi@9 int v11; // edi@9 int v12; // edi@12 int v13; // edi@15 int v14; // edi@15 int v15; // edi@18 int v16; // edi@18 v1 = this; *(_DWORD *)this = &off_6B96F8; *(_DWORD *)(this + 16) = 0; sub_4968A0(this, 0x96u); *(_DWORD *)v1 = &off_6B9F04; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x42Cu, 150, (int)sub_422A60, sub_422B10); v2 = 2; v3 = 36; v4 = v1 + 24; do { *(_DWORD *)(v4 + 4) = -1; if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v3 - 36) == 0; v7 = v5 + v3 - 36; if ( v6 ) *(_DWORD *)v7 = v4; } *(_DWORD *)(v4 + 1072) = -1; if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v3 - 24) == 0; v9 = v8 + v3 - 24; if ( v6 ) *(_DWORD *)v9 = v4 + 1068; } *(_DWORD *)(v4 + 2140) = -1; if ( v2 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v3 - 12) == 0; v11 = v10 + v3 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 2136; } *(_DWORD *)(v4 + 3208) = -1; if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v3) ) *(_DWORD *)(v12 + v3) = v4 + 3204; } *(_DWORD *)(v4 + 4276) = -1; if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v3 + 12) == 0; v14 = v13 + v3 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 4272; } *(_DWORD *)(v4 + 5344) = -1; if ( v2 + 3 < *(_WORD *)(v1 + 4) ) { v15 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v15 + v3 + 24) == 0; v16 = v15 + v3 + 24; if ( v6 ) *(_DWORD *)v16 = v4 + 5340; } v2 += 6; v3 += 72; v4 += 6408; } while ( v2 - 2 < 150 ); return v1; } // 6B96F8: using guessed type int (__thiscall *off_6B96F8)(void *, char); // 6B9F04: using guessed type int (__thiscall *off_6B9F04)(void *, char); //----- (00498E60) -------------------------------------------------------- int __thiscall sub_498E60(int this) { return (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; } //----- (00498E80) -------------------------------------------------------- char __thiscall sub_498E80(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x1FFFFFFF ) sub_65178B((int)"vector too long"); v4 = sub_492820(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 8 * a2; result = 1; } else { result = 0; } return result; } //----- (00498ED0) -------------------------------------------------------- int __cdecl sub_498ED0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 8 ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); v3 += 8; } return result; } //----- (00498F00) -------------------------------------------------------- int __thiscall sub_498F00(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // edi@1 int result; // eax@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_FindKQ"); dword_7508B8[dword_750CB8] = (int)"KQContribute::KQContributeList::kqcl_FindKQ"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; v4 = *((_DWORD *)v2 + 1); if ( v3 == v4 ) { LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_FindKQ"); result = 0; } else { while ( *(_DWORD *)v3 != a2 ) { v3 += 20; if ( v3 == v4 ) goto LABEL_4; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_FindKQ"); result = v3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00498FE0) -------------------------------------------------------- int __thiscall sub_498FE0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // edi@1 int result; // eax@2 int v7; // esi@3 int v8; // ebx@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_GetMobKill"); dword_7508B8[dword_750CB8] = (int)"KQContribute::KQContributeList::kqcl_GetMobKill"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_498F00(v3, a2); v5 = v4; if ( v4 ) { v7 = *(_DWORD *)(v4 + 4); v8 = 0; if ( v7 != *(_DWORD *)(v4 + 8) ) { while ( *(_DWORD *)v7 != (*(int (**)(void))(*(_DWORD *)a3 + 836))() ) { v7 += 8; if ( v7 == *(_DWORD *)(v5 + 8) ) goto LABEL_8; } v8 = *(_DWORD *)(v7 + 4); } LABEL_8: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_GetMobKill"); result = v8; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_GetMobKill"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004990E0) -------------------------------------------------------- int __stdcall sub_4990E0(int a1, int a2, int a3) { return sub_459940(a1, a2, a3); } //----- (00499110) -------------------------------------------------------- int __thiscall sub_499110(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // ecx@2 int v5; // eax@2 int v6; // ecx@3 int v10; // edx@7 int v11; // ebx@10 int v12; // [sp+10h] [bp+8h]@7 v2 = a2; v3 = (int)this; if ( this != (void *)a2 ) { v4 = *(_DWORD *)a2; v5 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) >> 3; if ( v5 ) { v10 = *(_DWORD *)v3; v12 = (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 3; if ( v5 <= (unsigned int)v12 ) { sub_498ED0(v4, *(_DWORD *)(v2 + 4), v10); *(_DWORD *)(v3 + 4) = *(_DWORD *)v3 + 8 * ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 3); return v3; } if ( v5 <= (unsigned int)((*(_DWORD *)(v3 + 8) - v10) >> 3) ) { v11 = v4 + 8 * v12; sub_498ED0(v4, v4 + 8 * v12, v10); *(_DWORD *)(v3 + 4) = sub_459940(v11, *(_DWORD *)(v2 + 4), *(_DWORD *)(v3 + 4)); return v3; } if ( v10 ) operator delete((void *)v10); if ( sub_498E80(v3, (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 3) ) *(_DWORD *)(v3 + 4) = sub_4990E0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4), *(_DWORD *)v3); } else { v6 = *(_DWORD *)v3; if ( *(_DWORD *)v3 != *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = v6; return v3; } } } return v3; } //----- (00499220) -------------------------------------------------------- int __thiscall sub_499220(void *this, int a2, int a3, __int16 a4, int a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // edi@1 int v8; // esi@3 signed int v9; // ebx@3 int v10; // esi@8 void *v11; // eax@10 int v12; // eax@12 int v14; // [sp-4h] [bp-2Ch]@2 int v15; // [sp+10h] [bp-18h]@8 int v16; // [sp+14h] [bp-14h]@8 int v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@1 int v19; // [sp+30h] [bp+8h]@3 v5 = this; v17 = (int)"KQContribute::KQContributeList::kqcl_SendMobKill"; sub_4675D0((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_SendMobKill"); dword_7508B8[dword_750CB8] = (int)"KQContribute::KQContributeList::kqcl_SendMobKill"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v6 = sub_498F00(v5, a2); v7 = v6; if ( v6 ) { v8 = *(_DWORD *)(v6 + 4); v9 = -1; v19 = v6 + 4; if ( v8 == *(_DWORD *)(v6 + 8) ) goto LABEL_17; do { if ( *(_DWORD *)v8 == (*(int (**)(void))(*(_DWORD *)a3 + 836))() ) { *(_DWORD *)(v8 + 4) += a5; v9 = *(_DWORD *)(v8 + 4); } v8 += 8; } while ( v8 != *(_DWORD *)(v7 + 8) ); if ( v9 >= 0 ) { v10 = a3; } else { LABEL_17: v10 = a3; LOWORD(v9) = a5; v15 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); v16 = a5; sub_5F1770(v19, (unsigned int)&v15); } v11 = off_849C18; *(_WORD *)off_849C18 = 22562; *((_WORD *)v11 + 2) = a4; *((_WORD *)v11 + 1) = v9; if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 764))(v10); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v10, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"KQContribute::KQContributeList::kqcl_SendMobKill : Packet Too Long", 6); } v14 = (int)"KQContribute::KQContributeList::kqcl_SendMobKill"; } else { v14 = (int)"KQContribute::KQContributeList::kqcl_SendMobKill"; } --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00499390) -------------------------------------------------------- int __cdecl sub_499390(int a1, int a2, int a3) { int v3; // edi@1 int i; // esi@1 void *v5; // ecx@3 v3 = a1; for ( i = a1 + 20; i != a2; i += 20 ) { if ( *(_DWORD *)i != *(_DWORD *)a3 ) { *(_DWORD *)v3 = *(_DWORD *)i; v5 = (void *)(v3 + 4); v3 += 20; sub_499110(v5, i + 4); } } return v3; } //----- (004993D0) -------------------------------------------------------- int __cdecl sub_4993D0(int a1, unsigned int a2) { int result; // eax@1 int v3; // esi@1 unsigned int v4; // edi@1 int v5; // [sp+0h] [bp-38h]@1 int v6; // [sp+10h] [bp-28h]@4 int v7; // [sp+14h] [bp-24h]@3 int v8; // [sp+18h] [bp-20h]@3 int v9; // [sp+1Ch] [bp-1Ch]@3 int v10; // [sp+24h] [bp-14h]@1 int *v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-Ch]@1 int v13; // [sp+34h] [bp-4h]@1 result = (int)&v12; v11 = &v5; v3 = a1; v4 = a2; v10 = a1; v13 = 0; while ( v4 > 0 ) { v7 = 0; v8 = 0; v9 = 0; LOBYTE(v13) = 2; if ( v3 ) { *(_DWORD *)v3 = v6; result = sub_492D80(v3 + 4, (int)&v7); } --v4; v3 += 20; LOBYTE(v13) = 0; } return result; } //----- (00499480) -------------------------------------------------------- int __cdecl sub_499480(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_492D80(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (00499530) -------------------------------------------------------- int __thiscall sub_499530(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_499480(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_492FC0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (0049961B) -------------------------------------------------------- void __usercall sub_49961B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00499640) -------------------------------------------------------- int __thiscall sub_499640(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // ebx@2 int v8; // [sp+8h] [bp-4h]@1 result = a2; v5 = a4; v6 = a3; v8 = this; *(_DWORD *)a2 = a3; if ( a3 != a4 ) { v7 = *(_DWORD *)(this + 4); if ( a4 != v7 ) { do { *(_DWORD *)v6 = *(_DWORD *)v5; sub_499110((void *)(v6 + 4), v5 + 4); v5 += 20; v6 += 20; } while ( v5 != v7 ); this = v8; } sub_492FC0(v6, *(_DWORD *)(this + 4)); result = a2; *(_DWORD *)(v8 + 4) = v6; } return result; } //----- (004996A0) -------------------------------------------------------- int __thiscall sub_4996A0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_499530(this, v5); } return result; } //----- (00499720) -------------------------------------------------------- int __thiscall sub_499720(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // eax@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 int v10; // [sp+20h] [bp-10h]@1 int v11; // [sp+2Ch] [bp-4h]@1 v2 = (int)this; v10 = (int)"KQContribute::KQContributeList::kqpl_EndOfKQ"; sub_4675D0((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqpl_EndOfKQ"); dword_7508B8[dword_750CB8] = (int)"KQContribute::KQContributeList::kqpl_EndOfKQ"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v7 = 0; v8 = 0; v9 = 0; v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)v2; LOBYTE(v11) = 1; v6 = a2; if ( v4 != v3 ) { while ( *(_DWORD *)v4 != a2 ) { v4 += 20; if ( v4 == v3 ) goto LABEL_7; } if ( v4 != v3 ) v4 = sub_499390(v4, v3, (int)&v6); } LABEL_7: sub_499640(v2, (int)&a2, v4, v3); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqpl_EndOfKQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00499810) -------------------------------------------------------- int __thiscall sub_499810(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 unsigned int v5; // edi@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; v5 = a2; result = v4 / 20; if ( v4 / 20 <= a2 ) { if ( v4 / 20 < a2 ) { sub_4996A0(v2, a2 - result); sub_4993D0(*(_DWORD *)(v2 + 4), v5 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20; *(_DWORD *)(v2 + 4) += 20 * (v5 - result); } } else { result = sub_499640(v2, (int)&a2, *(_DWORD *)v2 + 20 * a2, v3); } return result; } //----- (004998C0) -------------------------------------------------------- int __thiscall sub_4998C0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4996A0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; v8 = a2 + 4; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4996A0(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; v8 = v6 + 4; LABEL_11: result = sub_492D80(result + 4, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 20; return result; } //----- (00499990) -------------------------------------------------------- int __thiscall sub_499990(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v5; // [sp+10h] [bp-24h]@3 void *v6; // [sp+14h] [bp-20h]@3 int v7; // [sp+18h] [bp-1Ch]@3 int v8; // [sp+1Ch] [bp-18h]@3 int v9; // [sp+24h] [bp-10h]@1 int v10; // [sp+30h] [bp-4h]@1 v2 = this; v9 = (int)"KQContribute::KQContributeList::kqcl_NewKQ"; sub_4675D0((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_NewKQ"); dword_7508B8[dword_750CB8] = (int)"KQContribute::KQContributeList::kqcl_NewKQ"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_498F00(v2, a2); if ( v3 ) { sub_45FAE0(v3 + 4, 0); *(_DWORD *)v3 = a2; } else { v6 = 0; v7 = 0; v8 = 0; LOBYTE(v10) = 1; sub_45FAE0((int)&v6, 0); v5 = a2; sub_4998C0((int)v2, (unsigned int)&v5); if ( v6 ) operator delete(v6); } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"KQContribute::KQContributeList::kqcl_NewKQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00499A80) -------------------------------------------------------- void *__thiscall sub_499A80(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 12969, 128) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 12969, 12969, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00499B30) -------------------------------------------------------- void *__thiscall sub_499B30(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BA520; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BA520: using guessed type int (__thiscall *off_6BA520)(void *, char); //----- (00499B60) -------------------------------------------------------- void *__thiscall sub_499B60(void *this, int a2) { return sub_499A80(this, "../9Data/Shine/KingdomQuestRew.shn"); } //----- (00499B70) -------------------------------------------------------- int __thiscall sub_499B70(int this, __int16 a2) { int v2; // edi@1 unsigned int v3; // eax@1 unsigned int v4; // esi@1 bool v5; // cf@2 int result; // eax@4 unsigned int v7; // eax@8 v2 = this; v3 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); v4 = 0; if ( (signed int)v3 > 0 ) { v5 = v3 > 0; do { if ( v5 ) result = sub_626BC0(v2, v4); else result = v2 + 64; if ( !result ) break; if ( a2 == *(_DWORD *)result ) return result; v7 = *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40); ++v4; v5 = v4 < v7; } while ( (signed int)v4 < (signed int)v7 ); } return 0; } //----- (00499BC0) -------------------------------------------------------- int __thiscall sub_499BC0(int this, int a2) { unsigned int v2; // eax@1 unsigned int v3; // esi@1 bool v4; // cf@2 int result; // eax@4 unsigned int v6; // ecx@7 unsigned int v7; // eax@11 int v8; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); v3 = 0; v8 = this; if ( (signed int)v2 > 0 ) { v4 = v2 > 0; do { if ( v4 ) result = sub_626BC0(this, v3); else result = this + 64; if ( !result ) break; v6 = 0; do { if ( *(_BYTE *)(result + v6 + 4) != *(_BYTE *)(v6 + a2) ) break; if ( !*(_BYTE *)(result + v6 + 4) ) return result; ++v6; } while ( v6 < 0x20 ); this = v8; v7 = *(_DWORD *)(*(_DWORD *)(v8 + 52) + 40); ++v3; v4 = v3 < v7; } while ( (signed int)v3 < (signed int)v7 ); } return 0; } //----- (00499C30) -------------------------------------------------------- void __stdcall sub_499C30(int a1) { int v1; // edx@1 int v2; // ecx@1 int v3; // edx@1 int v4; // ebx@1 int v5; // eax@2 signed int v6; // esi@4 int v7; // edi@6 int v8; // eax@6 int v9; // ebx@6 char v10; // cl@9 int v11; // [sp-28h] [bp-10938h]@6 int v12; // [sp-24h] [bp-10934h]@6 int v13; // [sp-20h] [bp-10930h]@6 int v14; // [sp-1Ch] [bp-1092Ch]@6 int v15; // [sp-18h] [bp-10928h]@6 int v16; // [sp-14h] [bp-10924h]@6 unsigned int v17; // [sp-10h] [bp-10920h]@1 int *v18; // [sp+0h] [bp-10910h]@6 int v19; // [sp+4h] [bp-1090Ch]@4 char v20; // [sp+Bh] [bp-10905h]@2 char v21; // [sp+Ch] [bp-10904h]@1 char v22; // [sp+10860h] [bp-B0h]@1 int v23; // [sp+108E0h] [bp-30h]@1 int v24; // [sp+108E4h] [bp-2Ch]@1 int v25; // [sp+108E8h] [bp-28h]@1 int v26; // [sp+108ECh] [bp-24h]@1 char v27; // [sp+108F0h] [bp-20h]@1 unsigned int v28; // [sp+10900h] [bp-10h]@1 int v29; // [sp+1090Ch] [bp-4h]@1 int v30; // [sp+10910h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v17 = (unsigned int)&v30 ^ __security_cookie; sub_6432E0((int)&v21); v1 = *(_DWORD *)(a1 + 4); v23 = *(_DWORD *)a1; v2 = *(_DWORD *)(a1 + 8); v24 = v1; v3 = *(_DWORD *)(a1 + 12); v25 = v2; v4 = 0; v29 = 0; v26 = v3; v27 = 0; sprintf(&v22, "../9Data/Shine/World/%s/SubLayerInteractLoader.txt", &v23); if ( !sub_6434A0(&v21, &v22) ) { sprintf(&v22, "../9Data/Shine/World/SubLayerInteract.txt"); v20 = sub_6434A0(&v21, &v22); v5 = sub_642790(&v21); if ( !v20 ) { sub_639100(&unk_86DDD8, (int)"SubLayerInteractLoader::slil_Load : Error in SubLayer Table", v5); loc_6391B0("SubLayer::SubLayerInteractLoader::slil_Load"); } } v19 = 0; v6 = 0; while ( 1 ) { v16 = v19; v18 = &v11; v15 = v4; v14 = v4; v13 = v4; v12 = v4; v11 = v4; strncpy((char *)&v11, "SendMyBrief", 0x14u); v7 = sub_6442C0(&v21, v11, v12, v13, v14, v15, v16); v16 = v19; v18 = &v11; v15 = v4; v14 = v4; v13 = v4; v12 = v4; v11 = v4; strncpy((char *)&v11, "CanAttack", 0x14u); v8 = sub_6442C0(&v21, v11, v12, v13, v14, v15, v16); v9 = v8; if ( *(_BYTE *)v7 != *(_BYTE *)(v7 + 27) || *(_BYTE *)v8 != *(_BYTE *)(v8 + 27) ) { sub_639100(&unk_86DDD8, (int)"9Data/Shine/World/SubLayerInteractLoader.txt struct mismatch", 0); loc_6391B0("SubLayer::SubLayerInteractLoader::slil_Load"); } byte_D64C5E0[v6] = *(_BYTE *)(v7 + 21); byte_D64C604[v6] = *(_BYTE *)(v9 + 21); byte_D64C5E1[v6] = *(_BYTE *)(v7 + 22); byte_D64C605[v6] = *(_BYTE *)(v9 + 22); byte_D64C5E2[v6] = *(_BYTE *)(v7 + 23); byte_D64C606[v6] = *(_BYTE *)(v9 + 23); byte_D64C5E3[v6] = *(_BYTE *)(v7 + 24); v10 = *(_BYTE *)(v9 + 24); ++v19; byte_D64C607[v6] = v10; byte_D64C5E4[v6] = *(_BYTE *)(v7 + 25); byte_D64C608[v6] = *(_BYTE *)(v9 + 25); byte_D64C5E5[v6] = *(_BYTE *)(v7 + 26); byte_D64C609[v6] = *(_BYTE *)(v9 + 26); v6 += 6; if ( v6 >= 36 ) break; v4 = 0; } v29 = -1; sub_643080(&v21); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00499E90) -------------------------------------------------------- char __thiscall sub_499E90(int this, int a2) { char result; // al@2 if ( a2 ) { result = *(&byte_D64C5E0[6 * *(_BYTE *)(*(_DWORD *)(this + 118) + 4)] + *(_BYTE *)(*(_DWORD *)(a2 + 118) + 4)); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_SubLayer_CanSee NULL Parameter", 0); result = 0; } return result; } //----- (00499ED0) -------------------------------------------------------- char __thiscall sub_499ED0(void *this, int a2) { void *v2; // edi@1 char result; // al@2 v2 = this; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 996))(a2, 199) ) result = 0; else result = *(&byte_D64C604[6 * *(_BYTE *)(*(_DWORD *)((char *)v2 + 118) + 4)] + *(_BYTE *)(*(_DWORD *)(a2 + 118) + 4)); return result; } //----- (00499F20) -------------------------------------------------------- char *__thiscall sub_499F20(char *this, const char *a2) { *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; return strncpy(this, a2, 0x10u); } //----- (00499F50) -------------------------------------------------------- char __thiscall sub_499F50(void *this, int a2, __int16 a3, int a4, int a5) { int v5; // edi@1 int v6; // ebx@1 int v7; // eax@1 void *v8; // esi@1 char *v9; // eax@3 void *v10; // esi@9 int v11; // eax@10 char v12; // al@12 int v13; // ecx@12 char v15; // al@16 char *v16; // eax@18 signed int v17; // eax@18 int v18; // eax@22 int v19; // edx@22 int v20; // eax@22 void *v21; // esi@22 int v22; // edx@22 int v23; // eax@22 int v24; // eax@24 int v25; // ecx@25 int (__thiscall *v26)(_DWORD); // eax@25 int v27; // esi@25 int v28; // eax@27 int v29; // ecx@27 char v30; // al@27 int v31; // edx@27 int v32; // eax@29 int (__thiscall *v33)(_DWORD); // eax@31 int v34; // eax@31 __int16 v35; // dx@31 unsigned __int64 v36; // kr00_8@31 int v37; // eax@31 int v38; // ecx@31 int v39; // eax@32 int v40; // edx@32 void (__thiscall *v41)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@33 int v42; // esi@36 int v43; // eax@36 void (__thiscall *v44)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@37 int v45; // eax@38 int v46; // eax@39 int v47; // ecx@39 int v48; // edx@39 int v49; // eax@39 void *v50; // esi@40 int v51; // eax@40 int v52; // eax@40 int v53; // eax@42 int v54; // edx@42 void *v55; // esi@44 int v56; // eax@44 int v57; // eax@44 __int16 v58; // ax@45 char v59; // cl@45 int v60; // eax@45 int v61; // eax@47 void *v62; // esi@48 int v63; // eax@48 char v64; // cl@48 char v65; // al@48 int v66; // eax@50 int v67; // [sp-Ch] [bp-74h]@34 int v68; // [sp-8h] [bp-70h]@3 unsigned int v69; // [sp-4h] [bp-6Ch]@1 char v70; // [sp+Ch] [bp-5Ch]@44 char *v71; // [sp+20h] [bp-48h]@45 __int16 v72; // [sp+24h] [bp-44h]@45 int v73; // [sp+30h] [bp-38h]@1 int v74; // [sp+34h] [bp-34h]@22 int v75; // [sp+38h] [bp-30h]@22 int v76; // [sp+3Ch] [bp-2Ch]@22 int v77; // [sp+40h] [bp-28h]@1 int v78; // [sp+44h] [bp-24h]@18 unsigned __int8 v79; // [sp+4Bh] [bp-1Dh]@26 char v80[4]; // [sp+4Ch] [bp-1Ch]@36 int v81; // [sp+50h] [bp-18h]@36 int v82; // [sp+54h] [bp-14h]@36 unsigned int v83; // [sp+58h] [bp-10h]@1 int v84; // [sp+64h] [bp-4h]@1 int v85; // [sp+68h] [bp+0h]@1 v83 = (unsigned int)&v85 ^ __security_cookie; v69 = (unsigned int)&v85 ^ __security_cookie; v5 = a2; v6 = (int)this; v77 = a2; v73 = (int)"ShineObjectClass::ShinePlayer::so_LinkTo"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_LinkTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_LinkTo"; dword_750AB8[dword_750CB8++] = -1; v84 = 0; v7 = sub_56E860(v6); v8 = (void *)v7; if ( v7 && (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 8))(v7) == 1 ) { v9 = sub_4286C0(v8); memcpy((void *)a2, v9, 0x60u); v68 = 0; *(_BYTE *)(a2 + 96) = v9[96]; sub_56E820(v6, v68); v5 = v77; } if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v6 + 1156))(v6, v69) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1160))(v6); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1156))(v6) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1156))(v6) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1156))(v6) != 6 ) goto LABEL_14; v10 = *(void **)(v6 + 84471); if ( v10 ) { v11 = *(_DWORD *)(v6 + 122); if ( v11 && *(_BYTE *)(*(_DWORD *)(v11 + 12) + 54) == 3 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 804))(v6); v13 = v6; if ( !v12 ) { sub_590150((void *)v6); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 772))(v6, 19, 11); sub_590150(v10); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v10 + 772))(v10, 19, 12); v13 = v6; } (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v6 + 1020))(v13, v5, 0); } goto LABEL_14; } v15 = (*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 58688) + 16))(v6 + 58688); if ( v15 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Link during item operation", v15 == 0); LABEL_14: --dword_750CB8; v84 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_LinkTo"); return 0; } v69 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); v68 = sub_639620(&unk_CFCDD68, (unsigned __int8 *)(v5 + 20)); v16 = sub_5A7570(byte_14D16AE8); v17 = sub_63AC00(&unk_CFCF398, v16, v68, v69); v78 = v17; if ( v17 == -1 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : machine number", -1); goto LABEL_14; } if ( v17 == 99 ) v78 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); sub_5A7570(byte_14D16AE8); v18 = *(_DWORD *)(v6 + 102); v19 = *(_DWORD *)v18; v20 = *(_DWORD *)(v18 + 4); v21 = off_849C18; v76 = *(_DWORD *)(v6 + 122); *(_WORD *)off_849C18 = 6155; v74 = v19; v22 = *(_DWORD *)v6; v75 = v20; *((_WORD *)v21 + 1) = (*(int (__thiscall **)(int))(v22 + 832))(v6); v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); v69 = 8; *((_DWORD *)v21 + 1) = v23; if ( sub_4C81E0(&off_849C18, v69) ) { v24 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v24); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 8); } v25 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); v26 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3188); v77 = v25; v27 = v26(v6); if ( v27 ) { v79 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3196))(v6); if ( v79 != 10 ) { v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); v29 = *(_WORD *)(v6 + 160762); *(_DWORD *)(v6 + 161644) = v28; *(_DWORD *)(v6 + 161648) = v29; *(_DWORD *)(v6 + 161652) = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 3300))(v27); *(_DWORD *)(v6 + 161656) = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 1256))(v27); *(_DWORD *)(v6 + 161660) = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 3240))(v27); v30 = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 3324))(v27); v31 = *(_DWORD *)v6; *(_BYTE *)(v6 + 161664) = v30; *(_DWORD *)(v6 + 4 * v79 + 161665) = (*(int (__thiscall **)(int))(v31 + 836))(v6); } sub_45D1C0(v6, v27, 1); } v32 = *(_DWORD *)(v6 + 161784); if ( v32 == 5 || v32 == 6 ) { v33 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836); *(_BYTE *)(v6 + 161856) = 1; v34 = v33(v6); v35 = *(_WORD *)(v6 + 161804); v36 = __PAIR__(468469881, v34) + 2075117744; *(_DWORD *)(v6 + 161864) = v34 + 2075117744; v37 = *(_DWORD *)(v6 + 161812); *(_DWORD *)(v6 + 161868) = HIDWORD(v36); v38 = *(_DWORD *)(v6 + 161820); *(_WORD *)(v6 + 161872) = v35; *(_DWORD *)(v6 + 161876) = v37; *(_DWORD *)(v6 + 161880) = v38; } v39 = *(_DWORD *)(v6 + 32650); *(_WORD *)(v39 + 84) = word_13244DBC; v40 = v77; *(_BYTE *)(v39 + 86) = byte_13244DBE; v69 = 2; if ( v78 == v40 ) { v41 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 828); v68 = 1; if ( a4 == 79 ) v67 = 3; else v67 = 0; v41(v6, v67, v68, v69); v82 = 0; v81 = 0; *(_DWORD *)v80 = 0; strncpy(v80, (const char *)(v5 + 20), 0xCu); v42 = v6 + 32727; LOBYTE(v43) = sub_401000(v6 + 32727, (int)v80); if ( v43 ) { v44 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 2812); v67 = *(_DWORD *)v42; v68 = *(_DWORD *)(v6 + 32731); v69 = *(_DWORD *)(v6 + 32735); v44(v6, v67, v68, v69); } *(_DWORD *)(v6 + 32735) = 0; *(_DWORD *)(v6 + 32731) = 0; *(_DWORD *)v42 = 0; strncpy((char *)(v6 + 32727), (const char *)(v5 + 20), 0xCu); **(_DWORD **)(v6 + 102) = *(_DWORD *)(v5 + 86); *(_DWORD *)(*(_DWORD *)(v6 + 102) + 4) = *(_DWORD *)(v5 + 90); (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1216))(v6); v45 = *(_DWORD *)(v6 + 3828); v69 = 0; *(_BYTE *)v45 = 0; if ( sub_465790((void *)v6, v69) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v6 + 1528))(v6, 1669, 0, 0); v46 = v76; *(_DWORD *)(v6 + 122) = v76; *(_DWORD *)v42 = *(_DWORD *)v46; v47 = v74; *(_DWORD *)(v6 + 32731) = *(_DWORD *)(v46 + 4); v48 = v75; *(_DWORD *)(v6 + 32735) = *(_DWORD *)(v46 + 8); v49 = *(_DWORD *)(v6 + 102); *(_DWORD *)v49 = v47; *(_DWORD *)(v49 + 4) = v48; (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1216))(v6); goto LABEL_14; } v50 = off_849C18; v69 = v5 + 53; *(_WORD *)off_849C18 = (a3 << 10) ^ a4 & 0x3FF; *((_WORD *)v50 + 1) = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v69); v51 = *(_DWORD *)(v6 + 102); *((_DWORD *)v50 + 1) = *(_DWORD *)v51; v52 = *(_DWORD *)(v51 + 4); v69 = 12; *((_DWORD *)v50 + 2) = v52; if ( sub_4C81E0(&off_849C18, v69) ) { v53 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); v54 = *(_DWORD *)v53; v69 = (unsigned int)&off_849C18; (*(void (__thiscall **)(int, int, void **))(v54 + 12))(v53, v6, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 12); } sub_448700(v6 + 84388, v6); *(_DWORD *)(v6 + 32384) = &off_8622C8; } else { sub_4551B0(&unk_AA0EC0, v6, 0, v69); sub_452EA0(&unk_AA0EC0, v6); **(_BYTE **)(v6 + 3828) = 0; v55 = off_849C18; v56 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v68 = v78; v67 = v56; v57 = (int)sub_5A7530(byte_14D16AE8); if ( sub_649CD0(v57, (int)&v70, 6, v67, v68, 20) == 1 ) { sub_499F20((char *)v55 + 41, v71); *(_WORD *)((char *)v55 + 57) = v72; sub_45A8D0((int)byte_85A2C0, (int)((char *)v55 + 41)); *(_WORD *)v55 = 6157; *((_DWORD *)v55 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836))(v6); *((_WORD *)v55 + 1) = *(_WORD *)(v6 + 4); v58 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 832))(v6); v59 = v78; *((_WORD *)v55 + 4) = v58; *((_BYTE *)v55 + 10) = v59; sub_418A60((char *)v55 + 11, (const char *)(v5 + 20)); *(_DWORD *)((char *)v55 + 23) = *(_DWORD *)(v5 + 86); v60 = *(_DWORD *)(v5 + 90); v69 = v5 + 53; *(_DWORD *)((char *)v55 + 27) = v60; *(_WORD *)((char *)v55 + 31) = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v69); *(_DWORD *)((char *)v55 + 33) = *(_DWORD *)(v5 + 86); *(_DWORD *)((char *)v55 + 37) = *(_DWORD *)(v5 + 90); *(_WORD *)((char *)v55 + 59) = *(_WORD *)(v6 + 155572); if ( sub_4C81E0(&off_849C18, 61) ) { v61 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v61); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 61); } } *(_BYTE *)(v6 + 23824) |= 2u; sub_448700(v6 + 84388, v6); v62 = off_849C18; *(_WORD *)off_849C18 = -14327; *(_DWORD *)((char *)v62 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 840))(v6); v63 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836))(v6); v64 = v77; *(_DWORD *)((char *)v62 + 6) = v63; *((_BYTE *)v62 + 10) = v78; *((_BYTE *)v62 + 11) = v64; v65 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1240))(v6); v69 = 13; *((_BYTE *)v62 + 12) = v65; if ( sub_4C81E0(&off_849C18, v69) ) { v66 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v66); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 13); } } --dword_750CB8; v84 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_LinkTo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C8: using guessed type int (__stdcall **off_8622C8)(int); // 86FEB8: using guessed type int __security_cookie; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; // 14D12A00: using guessed type int dword_14D12A00; // 14D148D0: using guessed type int dword_14D148D0; //----- (0049A6E0) -------------------------------------------------------- int __thiscall sub_49A6E0(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_WORD *)(this + 8) = *(_WORD *)(a2 + 8); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_WORD *)(this + 26) = *(_WORD *)(a2 + 26); *(_WORD *)(this + 28) = *(_WORD *)(a2 + 28); return result; } //----- (0049A730) -------------------------------------------------------- int __stdcall sub_49A730(int a1, int a2) { int v2; // esi@1 int v3; // ecx@7 int v4; // eax@9 int v5; // ebx@10 int v6; // edi@10 int v7; // eax@10 int v9; // [sp-8h] [bp-28h]@4 int v10; // [sp-4h] [bp-24h]@4 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( !v2 || (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) != *(_DWORD *)(a1 + 4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v10 = 0; v9 = (int)"WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK : Invalid player"; LABEL_12: sub_639100(&unk_86DDD8, v9, v10); goto LABEL_13; } if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1256))(v2) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1156))(v2) == 3 ) { v10 = 0; v9 = (int)"WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK : Link Fail Player Die"; goto LABEL_12; } v3 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 6154; sub_49A6E0(v3, a1 + 8); if ( sub_4C81E0(&off_849C18, 32) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_link : Packet Too Long", 32); } v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); v6 = *(_DWORD *)v5; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2672))(v2); (*(void (__thiscall **)(int, int))(v6 + 8))(v5, v7); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 1532))(v2, 0); LABEL_13: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049A8E0) -------------------------------------------------------- signed int __thiscall sub_49A8E0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@1 int v4; // eax@2 int (__thiscall *v5)(_DWORD); // eax@4 bool v6; // zf@4 signed int result; // eax@4 int (**v8)(); // [sp+8h] [bp-28h]@1 char *v9; // [sp+Ch] [bp-24h]@1 int v10; // [sp+14h] [bp-1Ch]@4 int *v11; // [sp+18h] [bp-18h]@4 int v12; // [sp+1Ch] [bp-14h]@4 int v13; // [sp+20h] [bp-10h]@4 int v14; // [sp+2Ch] [bp-4h]@4 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1176))(); v8 = &off_6A86A4; v9 = (char *)v1 + 36484; v3 = *((_DWORD *)v1 + 9121); if ( v2 ) v4 = (*(int (__stdcall **)(int))(v3 + 4))(v2); else v4 = (*(int (**)(void))(v3 + 8))(); v10 = v4; v8 = (int (**)())&off_6A86B4; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2004); v14 = 0; v11 = (int *)&v8; v12 = v5(v1); v13 = 9; v6 = sub_486D40(&v11) == 0; result = 1792; if ( v6 ) result = 1821; return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); //----- (0049A990) -------------------------------------------------------- void __cdecl sub_49A990() { char v0; // bl@1 int v1; // eax@1 int v2; // edi@3 int v3; // ebx@4 int v4; // eax@5 int v5; // edi@5 signed int v6; // eax@5 int v7; // eax@10 int v8; // ecx@10 int v9; // edx@10 int v10; // eax@56 int v11; // eax@57 int v12; // [sp-28h] [bp-10A34h]@5 int v13; // [sp-24h] [bp-10A30h]@3 int v14; // [sp-20h] [bp-10A2Ch]@3 int v15; // [sp-1Ch] [bp-10A28h]@3 int v16; // [sp-18h] [bp-10A24h]@3 int v17; // [sp-14h] [bp-10A20h]@3 unsigned int v18; // [sp-10h] [bp-10A1Ch]@1 int v19; // [sp+0h] [bp-10A0Ch]@5 int v20; // [sp+4h] [bp-10A08h]@3 int *v21; // [sp+8h] [bp-10A04h]@3 int v22; // [sp+Ch] [bp-10A00h]@6 int v23; // [sp+10h] [bp-109FCh]@10 int v24; // [sp+14h] [bp-109F8h]@10 int v25; // [sp+18h] [bp-109F4h]@10 int v26; // [sp+1Ch] [bp-109F0h]@10 int v27; // [sp+20h] [bp-109ECh]@10 char v28; // [sp+24h] [bp-109E8h]@1 char v29[4]; // [sp+10878h] [bp-194h]@3 int v30; // [sp+1087Ch] [bp-190h]@3 int v31; // [sp+10880h] [bp-18Ch]@3 int v32; // [sp+10884h] [bp-188h]@3 int v33; // [sp+10888h] [bp-184h]@3 char v34[4]; // [sp+1088Ch] [bp-180h]@3 int v35; // [sp+10890h] [bp-17Ch]@3 int v36; // [sp+10894h] [bp-178h]@3 int v37; // [sp+10898h] [bp-174h]@3 int v38; // [sp+1089Ch] [bp-170h]@3 char v39[4]; // [sp+108A0h] [bp-16Ch]@3 int v40; // [sp+108A4h] [bp-168h]@3 int v41; // [sp+108A8h] [bp-164h]@3 int v42; // [sp+108ACh] [bp-160h]@3 int v43; // [sp+108B0h] [bp-15Ch]@3 char v44[4]; // [sp+108B4h] [bp-158h]@3 int v45; // [sp+108B8h] [bp-154h]@3 int v46; // [sp+108BCh] [bp-150h]@3 int v47; // [sp+108C0h] [bp-14Ch]@3 int v48; // [sp+108C4h] [bp-148h]@3 char v49[4]; // [sp+108C8h] [bp-144h]@3 int v50; // [sp+108CCh] [bp-140h]@3 int v51; // [sp+108D0h] [bp-13Ch]@3 int v52; // [sp+108D4h] [bp-138h]@3 int v53; // [sp+108D8h] [bp-134h]@3 char v54[4]; // [sp+108DCh] [bp-130h]@3 int v55; // [sp+108E0h] [bp-12Ch]@3 int v56; // [sp+108E4h] [bp-128h]@3 int v57; // [sp+108E8h] [bp-124h]@3 int v58; // [sp+108ECh] [bp-120h]@3 char v59[4]; // [sp+108F0h] [bp-11Ch]@3 int v60; // [sp+108F4h] [bp-118h]@3 int v61; // [sp+108F8h] [bp-114h]@3 int v62; // [sp+108FCh] [bp-110h]@3 int v63; // [sp+10900h] [bp-10Ch]@3 char v64[4]; // [sp+10904h] [bp-108h]@3 int v65; // [sp+10908h] [bp-104h]@3 int v66; // [sp+1090Ch] [bp-100h]@3 int v67; // [sp+10910h] [bp-FCh]@3 int v68; // [sp+10914h] [bp-F8h]@3 char v69[4]; // [sp+10918h] [bp-F4h]@3 int v70; // [sp+1091Ch] [bp-F0h]@3 int v71; // [sp+10920h] [bp-ECh]@3 int v72; // [sp+10924h] [bp-E8h]@3 int v73; // [sp+10928h] [bp-E4h]@3 char v74[4]; // [sp+1092Ch] [bp-E0h]@3 int v75; // [sp+10930h] [bp-DCh]@3 int v76; // [sp+10934h] [bp-D8h]@3 int v77; // [sp+10938h] [bp-D4h]@3 int v78; // [sp+1093Ch] [bp-D0h]@3 char v79[4]; // [sp+10940h] [bp-CCh]@3 int v80; // [sp+10944h] [bp-C8h]@3 int v81; // [sp+10948h] [bp-C4h]@3 int v82; // [sp+1094Ch] [bp-C0h]@3 int v83; // [sp+10950h] [bp-BCh]@3 char v84[4]; // [sp+10954h] [bp-B8h]@3 int v85; // [sp+10958h] [bp-B4h]@3 int v86; // [sp+1095Ch] [bp-B0h]@3 int v87; // [sp+10960h] [bp-ACh]@3 int v88; // [sp+10964h] [bp-A8h]@3 char v89[4]; // [sp+10968h] [bp-A4h]@3 int v90; // [sp+1096Ch] [bp-A0h]@3 int v91; // [sp+10970h] [bp-9Ch]@3 int v92; // [sp+10974h] [bp-98h]@3 int v93; // [sp+10978h] [bp-94h]@3 char v94; // [sp+1097Ch] [bp-90h]@56 unsigned int v95; // [sp+109FCh] [bp-10h]@1 int v96; // [sp+10A08h] [bp-4h]@1 int v97; // [sp+10A0Ch] [bp+0h]@1 v95 = (unsigned int)&v97 ^ __security_cookie; v18 = (unsigned int)&v97 ^ __security_cookie; sub_6432E0((int)&v28); v96 = 0; v0 = sub_6434A0(&v28, "../9Data/Shine/World/ItemUseFunction.txt"); v1 = sub_642790(&v28); if ( !v0 ) { sub_639100(&unk_86DDD8, (int)"ItemUseFunction::iuf_Load : Option read error", v1); loc_6391B0("ItemUseFunction::iuf_Load"); } v21 = &v13; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; strncpy((char *)&v13, "ItemUseFunction", 0x14u); v2 = sub_644CC0(&v28, v13, v14, v15, v16, v17); v21 = (int *)v2; v88 = 0; v87 = 0; v86 = 0; v85 = 0; *(_DWORD *)v84 = 0; strncpy(v84, "-", 0x14u); v83 = 0; v82 = 0; v81 = 0; v80 = 0; *(_DWORD *)v79 = 0; strncpy(v79, "UseSilverWings", 0x14u); v73 = 0; v72 = 0; v71 = 0; v70 = 0; *(_DWORD *)v69 = 0; strncpy(v69, "StatClearStat", 0x14u); v78 = 0; v77 = 0; v76 = 0; v75 = 0; *(_DWORD *)v74 = 0; strncpy(v74, "StatClearEmpow", 0x14u); v93 = 0; v92 = 0; v91 = 0; v90 = 0; *(_DWORD *)v89 = 0; strncpy(v89, "LicenceClear", 0x14u); v68 = 0; v67 = 0; v66 = 0; v65 = 0; *(_DWORD *)v64 = 0; strncpy(v64, "AmountHP", 0x14u); v48 = 0; v47 = 0; v46 = 0; v45 = 0; *(_DWORD *)v44 = 0; strncpy(v44, "AmountMP", 0x14u); v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)v54 = 0; strncpy(v54, "MemoryFeather", 0x14u); v63 = 0; v62 = 0; v61 = 0; v60 = 0; *(_DWORD *)v59 = 0; strncpy(v59, "BossMobDetect", 0x14u); v43 = 0; v42 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; strncpy(v39, "NoEffect", 0x14u); v33 = 0; v32 = 0; v31 = 0; v30 = 0; *(_DWORD *)v29 = 0; strncpy(v29, "Propose", 0x14u); v38 = 0; v37 = 0; v36 = 0; v35 = 0; *(_DWORD *)v34 = 0; strncpy(v34, "IM_Divorce", 0x14u); v53 = 0; v52 = 0; v51 = 0; v50 = 0; *(_DWORD *)v49 = 0; strncpy(v49, "MobCardOpen", 0x14u); v20 = 0; if ( v2 > 0 ) { v3 = (int)v21; do { v17 = v20; v19 = (int)&v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; strncpy((char *)&v12, "ItemUseFunction", 0x14u); v4 = sub_6442C0(&v28, v12, v13, v14, v15, v16, v17); v5 = v4; v6 = sub_639620(&unk_14D20898, (unsigned __int8 *)v4); if ( v6 == -1 ) v22 = 65535; else v22 = (unsigned __int16)v6; if ( (_WORD)v22 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemUseFunction::iuf_Load : Invalid Item", v5); loc_6391B0("ItemUseFunction::iuf_Load"); } v17 = *(_BYTE *)(v5 + 33); sub_594050((int)&dword_13258868, v22, v17); v7 = *(_DWORD *)(v5 + 34); v8 = *(_DWORD *)(v5 + 38); v25 = *(_DWORD *)(v5 + 42); v26 = *(_DWORD *)(v5 + 46); v9 = *(_DWORD *)(v5 + 50); v19 = (int)"UseSkill"; v23 = v7; v24 = v8; v27 = v9; if ( v7 != *(_DWORD *)v84 || v8 != v85 || v25 != v86 || v26 != v87 || v27 != v88 ) { if ( v7 == *(_DWORD *)v79 && v8 == v80 && v25 == v81 && v26 == v82 && v27 == v83 ) { v3 = (int)off_86AC98; v19 = (int)"UseSilverWings"; LABEL_57: v11 = (int)sub_59A6B0(v19); sub_594070((int)&dword_13258868, v22, v3, v11); goto LABEL_58; } if ( v7 == *(_DWORD *)v69 && v8 == v70 && v25 == v71 && v26 == v72 && v27 == v73 ) { v3 = (int)&off_86ACDC; goto LABEL_57; } if ( v7 == *(_DWORD *)v74 && v8 == v75 && v25 == v76 && v26 == v77 && v27 == v78 ) { v3 = (int)&off_86ACE8; goto LABEL_57; } if ( v7 == *(_DWORD *)v89 && v8 == v90 && v25 == v91 && v26 == v92 && v27 == v93 ) { v3 = (int)off_86ACD0; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v64) ) { v3 = (int)off_86ACD4; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v44) ) { v3 = (int)off_86ACD8; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v54) ) { v3 = (int)off_86ACFC; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v59) ) { v3 = (int)off_86AD04; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v39) ) { v3 = (int)off_86AD08; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v29) ) { v3 = (int)off_86AD10; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v34) ) { v3 = (int)off_86AD14; goto LABEL_57; } if ( sub_427B00((int)&v23, (int)v49) ) { v3 = (int)&unk_13258860; goto LABEL_57; } v10 = sub_649DA0(v5 + 34, (int)&v94); sub_6390B0(&unk_86DDD8, (int)"ItemUseFunction::iuf_Load : Invalid function", v10); loc_6391B0("ItemUseFunction::iuf_Load"); if ( v3 ) goto LABEL_57; } else { v3 = 0; } LABEL_58: ++v20; } while ( v20 < (signed int)v21 ); } v96 = -1; sub_643080(&v28); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86AC98: using guessed type int (__thiscall *off_86AC98[11])(void *, char); // 86ACD0: using guessed type int (__thiscall *off_86ACD0[4])(void *, char); // 86ACD4: using guessed type int (__thiscall *off_86ACD4[3])(void *, char); // 86ACD8: using guessed type int (__thiscall *off_86ACD8[2])(void *, char); // 86ACDC: using guessed type int (__thiscall **off_86ACDC)(void *, char); // 86ACE8: using guessed type int (__thiscall **off_86ACE8)(void *, char); // 86ACFC: using guessed type int (__thiscall *off_86ACFC[10])(void *, char); // 86AD04: using guessed type int (__thiscall *off_86AD04[8])(void *, char); // 86AD08: using guessed type int (__thiscall *off_86AD08[7])(void *, char); // 86AD10: using guessed type int (__thiscall *off_86AD10[5])(void *, char); // 86AD14: using guessed type int (__thiscall *off_86AD14[4])(void *, char); // 86FEB8: using guessed type int __security_cookie; // 13258868: using guessed type int dword_13258868; //----- (0049B0D0) -------------------------------------------------------- void *__thiscall sub_49B0D0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 22, 9) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 22, 22, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0049B170) -------------------------------------------------------- void *__thiscall sub_49B170(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 51, 34) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 51, 51, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0049B210) -------------------------------------------------------- void *__thiscall sub_49B210(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BA9B0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BA9B0: using guessed type int (__thiscall *off_6BA9B0)(void *, char); //----- (0049B240) -------------------------------------------------------- void *__thiscall sub_49B240(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BA9B8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BA9B8: using guessed type int (__thiscall *off_6BA9B8)(void *, char); //----- (0049B270) -------------------------------------------------------- char __thiscall sub_49B270(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@3 int v6; // ecx@6 int v7; // eax@6 int v8; // ecx@6 int v9; // edi@6 int v10; // eax@9 int v11; // eax@12 int i; // ebx@12 int v13; // edi@13 unsigned int v14; // ecx@14 void *v15; // ebx@19 int v16; // ecx@19 char *v17; // eax@20 int v18; // ecx@20 unsigned __int16 v19; // ax@20 int v20; // eax@22 void *v21; // edi@24 int (__thiscall *v22)(_DWORD); // edx@24 int v23; // eax@24 int v25; // ebx@28 __int16 v26; // ax@29 int v27; // eax@29 int v28; // eax@31 int v29; // ebx@32 int (__cdecl *v30)(_DWORD); // edx@32 int v31; // eax@32 int v32; // edi@32 void *v33; // eax@32 int v34; // edi@32 int v35; // eax@32 int v36; // eax@32 int v37; // [sp-24h] [bp-4F0h]@6 int v38; // [sp-20h] [bp-4ECh]@6 int v39; // [sp-1Ch] [bp-4E8h]@6 int v40; // [sp-18h] [bp-4E4h]@6 int v41; // [sp-14h] [bp-4E0h]@6 const char *v42; // [sp-10h] [bp-4DCh]@6 int v43; // [sp-Ch] [bp-4D8h]@6 int v44; // [sp-8h] [bp-4D4h]@6 int v45; // [sp-4h] [bp-4D0h]@1 int v46; // [sp+Ch] [bp-4C0h]@1 int *v47; // [sp+10h] [bp-4BCh]@13 int (**v48)(); // [sp+14h] [bp-4B8h]@24 int *v49; // [sp+24h] [bp-4A8h]@24 int v50; // [sp+28h] [bp-4A4h]@24 int v51; // [sp+2Ch] [bp-4A0h]@24 unsigned int v52; // [sp+30h] [bp-49Ch]@12 int v53; // [sp+34h] [bp-498h]@29 int v54; // [sp+38h] [bp-494h]@6 int *v55; // [sp+3Ch] [bp-490h]@6 char v56; // [sp+40h] [bp-48Ch]@5 char v57; // [sp+42Ch] [bp-A0h]@19 int v58; // [sp+434h] [bp-98h]@19 char v59; // [sp+49Ch] [bp-30h]@19 unsigned int v60; // [sp+4BCh] [bp-10h]@1 int v61; // [sp+4C8h] [bp-4h]@1 int v62; // [sp+4CCh] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v45 = (unsigned int)&v62 ^ __security_cookie; v4 = this; v46 = (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake"; dword_750AB8[dword_750CB8++] = -1; v61 = 0; if ( a2 ) { v5 = sub_63ACA0(dword_1508B168, *(_WORD *)(a2 + 8)); if ( v5 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 40))(v5) == 15 ) { sub_5936D0(&v56, *(_WORD *)(a2 + 8), 6, 0); LOBYTE(v61) = 1; if ( sub_593340((int)&v56) ) { v6 = *(_WORD *)(a2 + 8); v44 = 0; v43 = v6; v42 = "ItemID"; v55 = &v37; v41 = 0; v40 = 0; v39 = 0; v38 = 0; v37 = 0; strncpy((char *)&v37, "Container", 0x14u); v7 = sub_644B70(&unk_D64C6B8, v37, v38, v39, v40, v41, v42, v43, v44); v8 = *(_WORD *)(a2 + 8); v9 = v7; v54 = v7; if ( v7 == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake : Null Container", v8); LOBYTE(v61) = 0; sub_5937F0(); goto LABEL_8; } v44 = *(_WORD *)(v7 + 41) - *(_WORD *)(v7 + 39) + 1; v10 = *(_WORD *)(v7 + 39) + (unsigned __int16)sub_427920(&unk_14D42DC0, v44); if ( v10 > 0 ) { v55 = (int *)v10; while ( 1 ) { v52 = sub_639500((int)&unk_1508B108, 0xF4240u); v11 = *(_WORD *)(v9 + 4); for ( i = 0; ; ++i ) { v44 = i; v43 = v11; v42 = "Index"; v47 = &v37; v41 = 0; v40 = 0; v39 = 0; v38 = 0; v37 = 0; strncpy((char *)&v37, "Content", 0x14u); v13 = sub_644B70(&unk_D64C6B8, v37, v38, v39, v40, v41, v42, v43, v44); v11 = *(_WORD *)(v54 + 4); if ( !v13 ) break; v14 = *(_DWORD *)(v13 + 43); if ( v52 <= v14 ) goto LABEL_17; v52 -= v14; } sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake : Content Null", v11, i); LABEL_17: if ( v13 ) { v44 = *(_WORD *)v13; v15 = sub_63ACA0(dword_1508B168, v44); LOWORD(v58) = *(_WORD *)v13; (*(void (__thiscall **)(void *, int, char *, _DWORD, int))(*(_DWORD *)v15 + 20))( v15, v58, &v57, "-o", v45); v45 = *(_WORD *)(v13 + 39); sprintf(&v59, "-L%d", v45); (*(void (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v15 + 20))(v15, v58, &v57, &v59); v16 = *(_BYTE *)(v13 + 41); if ( (unsigned int)*(_BYTE *)(v13 + 42) - v16 > 0x63 ) { v19 = 0; } else { v17 = (char *)&unk_14D42DC0 + 32776 * (*(_BYTE *)(v13 + 42) - v16 + 1); v18 = (*((_DWORD *)v17 + 8192) + 1) & *((_DWORD *)v17 + 8193); *((_DWORD *)v17 + 8192) = v18; v19 = *(_WORD *)&v17[2 * v18]; } v45 = *(_BYTE *)(v13 + 41) + v19; sprintf(&v59, "-U%d", v45); v20 = *(_DWORD *)v15; v45 = (int)&v59; v44 = (int)&v57; (*(void (__thiscall **)(void *, int, char *))(v20 + 20))(v15, v58, &v57); v44 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v43 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); sub_63D0E0(&v57, v58, 6, v43, v44); sub_593830(&v56, (int)&v57); } else { sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake : Content Null2", *(_WORD *)(v54 + 4), i); } v55 = (int *)((char *)v55 - 1); if ( !v55 ) break; v9 = v54; } } v21 = off_849C18; sub_43BB20((int)&v48, (int)((char *)v4 + 36484), (int)((char *)v4 + 160312)); v22 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v61) = 2; v23 = v22(v4); v49 = (int *)&v48; v50 = v23; v51 = 9; if ( sub_486D40(&v49) ) { v25 = sub_593BE0(&v56, 0, (int)((char *)v21 + 24), v49[2], (int)((char *)v4 + 155582), 9); if ( v25 ) { LOWORD(v53) = v53 & 0x3FF | 0x2400; LOWORD(v53) = (v53 ^ *((_WORD *)v49 + 4)) & 0x3FF ^ v53; *(_WORD *)v21 = 13389; *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 836))(v4, v45); *((_WORD *)v21 + 1) = *((_WORD *)v4 + 2); v26 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *((_DWORD *)v21 + 4) = a3; *((_WORD *)v21 + 6) = v26; *((_DWORD *)v21 + 5) = a4; v45 = *(_DWORD *)((char *)v4 + 122); v27 = sub_418B00((int)byte_85A2C0, v45); *((_WORD *)v21 + 7) = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v27); *((_DWORD *)v21 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( sub_4C81E0(&off_849C18, v25 + 25) ) { v28 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v28); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v25 + 25); } v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v30 = (int (__cdecl *)(_DWORD))**(_DWORD **)v49[1]; v45 = v49[2]; v55 = (int *)v30(v45); v31 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4) + 4); v32 = *(_DWORD *)v29; v44 = (int)&v53; v43 = (int)&v53; v54 = v31; v33 = sub_5CF620(&v56); (*(void (__thiscall **)(int, int, int *, void *, int, int))(v32 + 64))(v29, v54, v55, v33, v43, v44); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, signed int))(*(_DWORD *)v34 + 72))( v34, *(_WORD *)(v35 + 4), a3, a4, -1); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v36 + 4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2880))(v4); v48 = &off_6A86A4; LOBYTE(v61) = 0; sub_5937F0(); --dword_750CB8; goto LABEL_33; } } v48 = &off_6A86A4; } LOBYTE(v61) = 0; sub_5937F0(); } --dword_750CB8; v61 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); return 0; } LABEL_8: --dword_750CB8; LABEL_33: v61 = -1; goto LABEL_34; } --dword_750CB8; v61 = -1; LABEL_34: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); return 1; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0049B8A0) -------------------------------------------------------- int __thiscall sub_49B8A0(void *this, int a2) { void *v2; // edi@1 void *v3; // eax@3 signed int v4; // esi@3 int v5; // ST10_4@5 char *v6; // eax@5 int v7; // eax@5 void *v8; // eax@7 __int16 v10; // [sp+10h] [bp-84h]@3 char v11; // [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 int v15; // [sp+94h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; if ( a2 ) { v10 = *(_WORD *)(a2 + 8); v3 = bsearch(&v10, word_D64C630, dword_D64C6B0, 4u, (int (__cdecl *)(const void *, const void *))sub_4A2220); v4 = 65535; if ( v3 ) v4 = *((_WORD *)v3 + 1); v12 = v4; v5 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v6 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v11, v4, 6, *((_DWORD *)v6 + 4), v5); v12 = v4; v7 = sub_418CB0((int)&dword_14D20890, v4); if ( v7 && *(_DWORD *)v7 ) { v8 = sub_63ACA0(dword_1508B168, v4); (*(void (__thiscall **)(void *, signed int, char *, _DWORD))(*(_DWORD *)v8 + 20))(v8, v4, &v11, "-o"); sub_526E50(v2, *((_WORD *)v2 + 2), (int)&v11); } --dword_750CB8; } else { --dword_750CB8; } v14 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D64C630: using guessed type __int16 word_D64C630[]; // 14D20890: using guessed type int dword_14D20890; //----- (0049BA10) -------------------------------------------------------- int __thiscall sub_49BA10(void *this) { void *v1; // esi@1 char v2; // bl@1 int v3; // eax@1 int v4; // edi@1 int v5; // eax@2 int v6; // eax@3 int v7; // ebx@3 int result; // eax@3 int v9; // ecx@5 int v10; // esi@8 signed int v11; // eax@10 int v12; // edi@16 signed int v13; // eax@17 unsigned __int16 v14; // si@17 size_t v15; // eax@21 __int16 v16; // di@21 int v17; // eax@23 int v18; // edi@24 int i; // ebx@24 int v20; // eax@25 int v21; // esi@25 int v22; // eax@25 signed int v23; // eax@28 int v24; // [sp-20h] [bp-40h]@25 int v25; // [sp-1Ch] [bp-3Ch]@25 int v26; // [sp-18h] [bp-38h]@8 int v27; // [sp-14h] [bp-34h]@3 int v28; // [sp-10h] [bp-30h]@3 int v29; // [sp-Ch] [bp-2Ch]@3 int v30; // [sp-8h] [bp-28h]@3 int v31; // [sp-4h] [bp-24h]@3 int v32; // [sp+Ch] [bp-14h]@3 int v33; // [sp+10h] [bp-10h]@3 void *v34; // [sp+14h] [bp-Ch]@1 int v35; // [sp+18h] [bp-8h]@8 int v36; // [sp+1Ch] [bp-4h]@5 v1 = this; v34 = this; v2 = sub_6434A0(this, "../9Data/Shine/World/TreasureReward.txt"); v3 = sub_642790(v1); v4 = 0; if ( !v2 ) { sub_639100(&unk_86DDD8, (int)"MagicContainer::mc_Load : Option read error", v3); v5 = sub_6427A0(v1); sub_6390B0(&unk_86DDD8, (int)"\t", v5); loc_6391B0("MagicContainer::mc_Load"); } v32 = (int)&v27; v31 = 0; v30 = 0; v29 = 0; v28 = 0; v27 = 0; strncpy((char *)&v27, "Container", 0x14u); v6 = sub_644CC0(v1, v27, v28, v29, v30, v31); v7 = v6; result = v6 > 0; v33 = v7; if ( !result ) { sub_639100(&unk_86DDD8, (int)"MagicContainer::mc_Load : table Container empty or not exist", v7); result = loc_6391B0("MagicContainer::mc_Load"); } v9 = 0; v36 = 0; if ( v7 > 0 ) { while ( 1 ) { v31 = v4; v32 = (int)&v26; v30 = v9; v29 = v9; v28 = v9; v27 = v9; v26 = v9; strncpy((char *)&v26, "Container", 0x14u); v10 = sub_6442C0(v1, v26, v27, v28, v29, v30, v31); v35 = v10; if ( v10 == 0 ) { sub_639150(&unk_86DDD8, (int)"containerstr NULL", v4, v7); loc_6391B0("MagicContainer::mc_Load"); } v11 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v10 + 6)); if ( v11 == -1 ) LOWORD(v11) = -1; *(_DWORD *)v10 = (unsigned __int16)v11; if ( (unsigned __int16)v11 == 65535 ) { sub_6390B0(&unk_86DDD8, (int)"MagicContainer::mc_Load : Invalid card", v10 + 6); loc_6391B0("MagicContainer::mc_Load"); } if ( (unsigned int)*(_WORD *)(v10 + 41) >= 8 ) { sub_639150(&unk_86DDD8, (int)"MagicContainer::mc_Load : Too many content", *(_WORD *)(v10 + 41), 8); loc_6391B0("MagicContainer::mc_Load"); } v31 = (int)sub_59A6B0((int)"UsePresentBox"); sub_594070((int)&dword_13258868, *(_WORD *)v10, (int)off_86ACA4, v31); v12 = v10 + 43; if ( *(_BYTE *)(v10 + 43) != 45 ) { v13 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v10 + 43)); v14 = -1; if ( v13 != -1 ) v14 = v13; if ( v14 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MagicContainer::mc_Load : Invalid Dummycard", v12); loc_6391B0("MagicContainer::mc_Load"); } v15 = dword_D64C6B0; v16 = *(_WORD *)v35; if ( dword_D64C6B0 >= 0x20 ) { sub_639100(&unk_86DDD8, (int)"ItemConversionMap::icm_Store : Too many item map", dword_D64C6B0); loc_6391B0("ItemConversionMap::icm_Store"); v15 = dword_D64C6B0; } word_D64C630[2 * v15] = v14; word_D64C632[2 * dword_D64C6B0++] = v16; qsort(word_D64C630, dword_D64C6B0, 4u, (int (__cdecl *)(const void *, const void *))sub_4A2220); v17 = (int)sub_59A6B0((int)"UseSkill"); sub_594070((int)&dword_13258868, v14, (int)off_86AD0C, v17); v10 = v35; } v18 = 0; for ( i = 0; ; ++i ) { v20 = *(_WORD *)(v10 + 4); v31 = i; v30 = v20; v29 = (int)"Index"; v32 = (int)&v24; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; strncpy((char *)&v24, "Content", 0x14u); v21 = sub_644B70(v34, v24, v25, v26, v27, v28, (const char *)v29, v30, v31); v22 = 0; if ( !v21 ) break; LOBYTE(v22) = *(_DWORD *)v21 == *(_WORD *)(v21 + 47); if ( !v22 ) { sub_639150(&unk_86DDD8, (int)"MagicContainer::mc_Load : Checksum invalid", v36, i); loc_6391B0("MagicContainer::mc_Load"); } v32 = *(_DWORD *)(v21 + 43) + v18; v23 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v21 + 6)); if ( v23 == -1 ) LOWORD(v23) = -1; *(_DWORD *)v21 = (unsigned __int16)v23; if ( (unsigned __int16)v23 == 65535 ) { sub_6390B0(&unk_86DDD8, (int)"MagicContainer::mc_Load : Invalid reward", v21 + 6); loc_6391B0("MagicContainer::mc_Load"); } v10 = v35; v18 = v32; } LOBYTE(v22) = v18 == 1000000; if ( !v22 ) { sub_639100(&unk_86DDD8, (int)"MagicContainer::mc_Load : TotalRate not 1000", v36); loc_6391B0("MagicContainer::mc_Load"); } result = v36 + 1; v36 = result; if ( result >= v33 ) break; v7 = v33; v4 = v36; v1 = v34; v9 = 0; } } return result; } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 6427A0: using guessed type int __thiscall sub_6427A0(_DWORD); // 86ACA4: using guessed type int (__thiscall *off_86ACA4[8])(void *, char); // 86AD0C: using guessed type int (__thiscall *off_86AD0C[6])(void *, char); // D64C630: using guessed type __int16 word_D64C630[]; // D64C632: using guessed type __int16 word_D64C632[]; // 13258868: using guessed type int dword_13258868; //----- (0049BDE0) -------------------------------------------------------- int __thiscall sub_49BDE0(int this, __int16 a2) { int v2; // esi@1 int result; // eax@2 int v4; // eax@3 int v5; // ecx@4 unsigned int v6; // edi@9 int v7; // eax@9 int v8; // ebx@9 int v9; // esi@10 int v10; // ecx@18 char *v11; // ecx@19 int v12; // eax@19 unsigned __int16 v13; // ax@19 int v14; // [sp+4h] [bp-10h]@11 int v15; // [sp+8h] [bp-Ch]@9 unsigned int v16; // [sp+Ch] [bp-8h]@9 unsigned int v17; // [sp+10h] [bp-4h]@3 v2 = this; if ( *(_DWORD *)(this + 180) ) { v4 = *(_DWORD *)(this + 184); v17 = 1000000; if ( v4 != *(_DWORD *)(this + 188) ) { v5 = *(_DWORD *)(this + 188); if ( v4 != v5 ) { while ( *(_WORD *)v4 != a2 ) { v4 += 8; if ( v4 == v5 ) goto LABEL_9; } v17 = *(_DWORD *)(v4 + 4); } } LABEL_9: v6 = 0; v16 = sub_639500((int)&unk_1508B108, 0xF4240u); v7 = *(_DWORD *)(v2 + 176); v8 = 0; v15 = v7; if ( v7 > 0 ) { v9 = *(_DWORD *)(v2 + 180); while ( 1 ) { v14 = v9; if ( !v9 ) break; if ( *(_DWORD *)v9 == a2 ) { v6 += 1000000 * (unsigned __int64)*(_DWORD *)(v9 + 5) / v17; if ( v16 <= v6 ) goto LABEL_16; v7 = v15; } ++v8; v9 += 16; if ( v8 >= v7 ) { LABEL_16: if ( !*(_DWORD *)(v14 + 12) ) break; v10 = *(_BYTE *)(v14 + 9); if ( (unsigned int)(v10 - 1) > 0x63 ) { v13 = 0; } else { v11 = (char *)&unk_14D42DC0 + 32776 * v10; v12 = *((_DWORD *)v11 + 8193) & (*((_DWORD *)v11 + 8192) + 1); *((_DWORD *)v11 + 8192) = v12; v13 = *(_WORD *)&v11[2 * v12]; } return *(_DWORD *)(v14 + 12) + 34 * v13; } } } result = 0; } else { result = 0; } return result; } //----- (0049BF00) -------------------------------------------------------- int __thiscall sub_49BF00(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // ebx@1 __int16 *v7; // esi@3 void *v8; // eax@3 void *v9; // edi@3 int v10; // eax@6 int v11; // eax@7 int (__thiscall *v12)(_DWORD); // eax@8 int v13; // eax@8 __int16 v14; // ax@10 int v15; // eax@10 unsigned __int16 v16; // ax@12 unsigned int v17; // esi@12 void *v18; // edi@13 int v19; // ST10_4@13 char *v20; // eax@13 int v21; // eax@13 int v22; // eax@14 const char *v23; // eax@15 int v24; // esi@16 int v25; // eax@16 int v26; // eax@19 int v27; // esi@19 void *v28; // edi@19 int (__thiscall *v29)(_DWORD); // edx@19 __int16 v30; // ax@19 int v31; // eax@19 int v32; // edi@19 int v33; // eax@21 int v34; // esi@22 int v35; // edi@22 int v36; // eax@22 int v37; // esi@22 int v38; // eax@22 int v39; // esi@22 int v40; // eax@22 int v41; // esi@22 int v42; // eax@22 int v43; // eax@22 unsigned int v45; // [sp-4h] [bp-BCh]@1 int v46; // [sp-4h] [bp-BCh]@2 int (**v47)(); // [sp+10h] [bp-A8h]@8 int *v48; // [sp+20h] [bp-98h]@8 int v49; // [sp+24h] [bp-94h]@8 int v50; // [sp+28h] [bp-90h]@8 int v51; // [sp+2Ch] [bp-8Ch]@1 void *v52; // [sp+30h] [bp-88h]@10 int v53; // [sp+34h] [bp-84h]@10 int v54; // [sp+38h] [bp-80h]@13 int v55; // [sp+3Ch] [bp-7Ch]@19 __int16 v56; // [sp+40h] [bp-78h]@13 __int16 v57; // [sp+A4h] [bp-14h]@19 char v58; // [sp+A6h] [bp-12h]@19 unsigned int v59; // [sp+A8h] [bp-10h]@1 int v60; // [sp+B4h] [bp-4h]@1 int v61; // [sp+B8h] [bp+0h]@1 v59 = (unsigned int)&v61 ^ __security_cookie; v45 = (unsigned int)&v61 ^ __security_cookie; v6 = this; v51 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; dword_750AB8[dword_750CB8++] = -1; v60 = 0; if ( !a2 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v6 + 776))( v6, 12, 4, 515, v45); v46 = (int)"ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; LABEL_26: --dword_750CB8; goto LABEL_27; } v7 = (__int16 *)(a2 + 8); v8 = sub_63ACA0(dword_1508B168, *(_WORD *)(a2 + 8)); v9 = v8; if ( !v8 || (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 40))(v8) != 29 || (v10 = sub_44F210((int)&dword_AA0A90, *v7)) == 0 || (v11 = *(_DWORD *)(v10 + 4)) == 0 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v6 + 776))( v6, 12, 4, 515, v45); LABEL_25: v46 = (int)"ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; goto LABEL_26; } (*(void (__thiscall **)(void *, __int16 *, _DWORD, _UNKNOWN *, unsigned int, unsigned int))(*(_DWORD *)v9 + 176))( v9, v7, *(_WORD *)(v11 + 34), &unk_AA0BCC, ((unsigned int)dword_AA0BC8 >> 19) & 0x3F, v45); sub_43BB20((int)&v47, (int)((char *)v6 + 36484), (int)((char *)v6 + 160312)); v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004); LOBYTE(v60) = 1; v13 = v12(v6); v48 = (int *)&v47; v49 = v13; v50 = 9; if ( !sub_486D40(&v48) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 4, 522); LABEL_24: v47 = &off_6A86A4; goto LABEL_25; } v14 = v53 & 0x3FF | 0x2400; LOWORD(v53) = v14; LOWORD(v53) = (v14 ^ *((_WORD *)v48 + 4)) & 0x3FF ^ v14; v15 = sub_49BDE0((int)&unk_D65CF10, *v7); v52 = (void *)v15; if ( !v15 || (v16 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v15 + 1)), v17 = v16, v16 == -1) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 4, 515); goto LABEL_24; } v18 = sub_63ACA0(dword_1508B168, v16); v19 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v20 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v54, v17, 1, *((_DWORD *)v20 + 4), v19); v56 = v17; (*(void (__thiscall **)(void *, unsigned int, int *, _DWORD))(*(_DWORD *)v18 + 20))(v18, v17, &v54, "-o"); v21 = sub_418CB0((int)&dword_14D20890, v17); if ( !v21 || (v22 = *(_DWORD *)(v21 + 4)) == 0 || (v23 = (const char *)(v22 + 137)) == 0 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 4, 515); goto LABEL_24; } v24 = (int)sub_4934A0(&dword_D61E064, v23); v25 = (*(int (__thiscall **)(void *, __int16 *))(*(_DWORD *)v18 + 112))(v18, &v56); if ( v24 && v25 ) sub_4928F0(v25, v24); (*(void (__thiscall **)(void *, __int16 *, _DWORD))(*(_DWORD *)v18 + 32))(v18, &v56, *((_BYTE *)v52 + 33)); v26 = v54; v27 = v51; *(_DWORD *)(v51 + 14) = v55; *(_DWORD *)(v27 + 10) = v26; v28 = off_849C18; *(_WORD *)off_849C18 = 13472; v29 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 836); v52 = v28; *((_DWORD *)v28 + 1) = v29(v6); *((_WORD *)v28 + 1) = *((_WORD *)v6 + 2); *((_WORD *)v28 + 4) = *((_WORD *)v6 + 42250); v30 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2004))(v6) + 4); *(_DWORD *)((char *)v28 + 14) = a3; *((_WORD *)v28 + 5) = v30; *(_DWORD *)((char *)v28 + 26) = a6; *(_DWORD *)((char *)v28 + 18) = a4; *(_DWORD *)((char *)v28 + 22) = a5; v31 = sub_418B00((int)byte_85A2C0, *(_DWORD *)((char *)v6 + 122)); *((_WORD *)v28 + 6) = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v31); *((_WORD *)v28 + 15) = v53; v28 = (char *)v28 + 32; memcpy(v28, (const void *)v27, 0x6Cu); v27 += 108; v28 = (char *)v28 + 108; *(_WORD *)v28 = *(_WORD *)v27; *((_BYTE *)v28 + 2) = *(_BYTE *)(v27 + 2); v32 = (int)((char *)v52 + 143); memcpy((char *)v52 + 143, &v54, 0x6Cu); v32 += 108; *(_WORD *)v32 = v57; *(_BYTE *)(v32 + 2) = v58; if ( sub_4C81E0(&off_849C18, 252) ) { v33 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v33); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", 252); } v34 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2004))(v6); v35 = (**(int (__stdcall ***)(_DWORD))v48[1])(v48[2]); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, int, int *, int *))(*(_DWORD *)v34 + 64))( v34, *(_WORD *)(v36 + 4), v35, v51, &v53, &v53); v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, int, signed int))(*(_DWORD *)v37 + 72))( v37, *(_WORD *)(v38 + 4), a3, a4, -1); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v39 + 76))(v39, *(_WORD *)(v40 + 4), a5, -1); v41 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v42 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int, _DWORD))(*(_DWORD *)v41 + 112))( v41, *(_WORD *)(v42 + 4), a6, 0, -1, 0); v43 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); ++*(_WORD *)(v43 + 4); (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 2880))(v6); --dword_750CB8; v47 = &off_6A86A4; v46 = (int)"ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; LABEL_27: v60 = -1; return sub_467660((int)&unk_D020420, v46); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (0049C440) -------------------------------------------------------- int __thiscall sub_49C440(int this) { int v1; // esi@1 int v2; // edx@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_6BA9B0; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 0; *(_BYTE *)(v1 + 72) = 0; sub_639920(v1 + 76); *(_DWORD *)(v1 + 76) = &off_6BA9B8; *(_DWORD *)(v1 + 140) = 0; *(_DWORD *)(v1 + 144) = 0; *(_DWORD *)(v1 + 148) = 0; *(_DWORD *)(v1 + 152) = 0; *(_DWORD *)(v1 + 156) = 0; *(_DWORD *)(v1 + 160) = 0; *(_DWORD *)(v1 + 164) = 0; *(_DWORD *)(v1 + 168) = 0; *(_WORD *)(v1 + 172) = 0; *(_DWORD *)(v1 + 184) = 0; *(_DWORD *)(v1 + 188) = 0; *(_DWORD *)(v1 + 192) = 0; *(_DWORD *)(v1 + 176) = 0; *(_DWORD *)(v1 + 180) = 0; v2 = *(_DWORD *)(v1 + 184); if ( v2 != *(_DWORD *)(v1 + 188) ) *(_DWORD *)(v1 + 188) = v2; return v1; } // 6BA9B0: using guessed type int (__thiscall *off_6BA9B0)(void *, char); // 6BA9B8: using guessed type int (__thiscall *off_6BA9B8)(void *, char); //----- (0049C530) -------------------------------------------------------- void __thiscall sub_49C530(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // ebx@2 int v4; // ecx@8 v1 = this; v2 = 0; if ( *(_DWORD *)(this + 180) ) { v3 = 0; if ( *(_DWORD *)(this + 176) > 0 ) { do { if ( *(_DWORD *)(v2 + *(_DWORD *)(v1 + 180) + 12) ) sub_6530A4(*(void **)(v2 + *(_DWORD *)(v1 + 180) + 12)); ++v3; v2 += 16; } while ( v3 < *(_DWORD *)(v1 + 176) ); v2 = 0; } sub_6530A4(*(void **)(v1 + 180)); } v4 = *(_DWORD *)(v1 + 184); if ( v4 != *(_DWORD *)(v1 + 188) ) *(_DWORD *)(v1 + 188) = v4; if ( *(_DWORD *)(v1 + 184) != v2 ) operator delete(*(void **)(v1 + 184)); *(_DWORD *)(v1 + 184) = v2; *(_DWORD *)(v1 + 188) = v2; *(_DWORD *)(v1 + 192) = v2; *(_DWORD *)(v1 + 76) = &off_6BA9B8; sub_639940(v1 + 76); *(_DWORD *)v1 = &off_6BA9B0; sub_639940(v1); } // 6BA9B0: using guessed type int (__thiscall *off_6BA9B0)(void *, char); // 6BA9B8: using guessed type int (__thiscall *off_6BA9B8)(void *, char); //----- (0049C640) -------------------------------------------------------- int __thiscall sub_49C640(void *this) { int v1; // edi@1 unsigned int v2; // eax@1 int v3; // ecx@1 int result; // eax@1 bool v5; // zf@3 bool v6; // sf@3 unsigned int v7; // esi@4 int v8; // eax@5 int v9; // ecx@9 int v10; // ebx@9 int v11; // eax@10 int v12; // eax@13 int v13; // eax@16 unsigned int v14; // esi@18 int v15; // eax@20 int v16; // eax@25 unsigned int v17; // ebx@33 int v18; // eax@36 int v19; // eax@41 int v20; // eax@45 int v21; // eax@48 int v22; // eax@51 const void *v23; // esi@53 int v24; // eax@53 int v25; // edx@55 int v26; // esi@56 char v27; // bl@56 int v28; // eax@58 int v29; // eax@62 int v30; // eax@68 int v31; // ecx@70 int v32; // eax@71 int v33; // ecx@73 unsigned int v34; // eax@73 unsigned int v35; // ebx@74 int v36; // ecx@75 signed int v37; // edx@75 int v38; // eax@76 int v39; // eax@77 int v40; // ecx@77 unsigned int v41; // ecx@79 int v42; // eax@84 int v43; // ecx@85 int v44; // edx@85 int v45; // ecx@86 int v46; // edx@87 int v47; // eax@87 int v48; // eax@88 int v49; // ecx@88 unsigned int v50; // ecx@90 int v51; // [sp+4h] [bp-1Ch]@70 int v52; // [sp+8h] [bp-18h]@73 void *v53; // [sp+Ch] [bp-14h]@1 int v54; // [sp+10h] [bp-10h]@1 int v55; // [sp+14h] [bp-Ch]@34 int v56; // [sp+18h] [bp-8h]@9 unsigned int v57; // [sp+1Ch] [bp-4h]@3 v1 = (int)this; v53 = this; sub_49B0D0(this, "../9Data/Shine/LCGroupRate.shn"); sub_49B170((void *)(v1 + 76), "../9Data/Shine/LCReward.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v3 = *(_DWORD *)(v1 + 128); *(_DWORD *)(v1 + 176) = v2; v54 = *(_DWORD *)(v3 + 40); result = unknown_libname_130(16 * v2 | -((unsigned __int64)v2 >> 28 != 0)); *(_DWORD *)(v1 + 180) = result; if ( !result ) { sub_639100(&unk_86DDD8, (int)"CLCReward::clcr_Load - clcr_LCRewardGroup NULL", 0); result = loc_6391B0("CLCReward::clcr_Load"); } v5 = *(_DWORD *)(v1 + 176) == 0; v6 = *(_DWORD *)(v1 + 176) < 0; v57 = 0; if ( !(v6 | v5) ) { do { v7 = v57; if ( v57 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v8 = sub_626BC0(v1, v57); else v8 = v1 + 64; if ( !v8 ) { sub_639100(&unk_86DDD8, (int)"CLCReward::clcr_Load - clcr_LCGroupRateData NULL", v7); loc_6391B0("CLCReward::clcr_Load"); } v9 = *(_DWORD *)(v1 + 52); v10 = *(_DWORD *)(v1 + 180) + 16 * v7; v56 = *(_DWORD *)(v1 + 180) + 16 * v7; if ( v7 < *(_DWORD *)(v9 + 40) ) v11 = sub_626BC0(v1, v7); else v11 = v1 + 64; *(_DWORD *)v10 = *(_DWORD *)v11; if ( v7 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v12 = sub_626BC0(v1, v7); else v12 = v1 + 64; *(_BYTE *)(v10 + 4) = *(_BYTE *)(v12 + 4); if ( v7 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v13 = sub_626BC0(v1, v7); else v13 = v1 + 64; v14 = 0; *(_DWORD *)(v10 + 5) = *(_DWORD *)(v13 + 5); *(_BYTE *)(v10 + 9) = 0; if ( v54 > 0 ) { do { if ( v14 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v15 = sub_626BC0(v1 + 76, v14); else v15 = v1 + 140; if ( !v15 ) { sub_639100(&unk_86DDD8, (int)"CLCReward::clcr_Load - clcr_LCRewardData NULL", v57); loc_6391B0("CLCReward::clcr_Load"); } if ( v14 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v16 = sub_626BC0(v1 + 76, v14); else v16 = v1 + 140; if ( *(_BYTE *)(v56 + 4) == *(_BYTE *)v16 ) ++*(_BYTE *)(v56 + 9); ++v14; } while ( (signed int)v14 < v54 ); v10 = v56; } *(_DWORD *)(v10 + 12) = unknown_libname_130(34 * *(_BYTE *)(v10 + 9) | -((unsigned __int8)(34 * (unsigned __int64)*(_BYTE *)(v10 + 9) >> 32) != 0)); if ( !*(_DWORD *)(v1 + 180) ) { sub_639100(&unk_86DDD8, (int)"CLCReward::clcr_Load - clcr_LCRewardGroup NULL", 0); loc_6391B0("CLCReward::clcr_Load"); } v17 = 0; if ( v54 > 0 ) { v55 = 0; do { if ( v17 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v18 = sub_626BC0(v1 + 76, v17); else v18 = v1 + 140; if ( !v18 ) { sub_639100(&unk_86DDD8, (int)"CLCReward::clcr_Load - clcr_LCRewardData NULL", v57); loc_6391B0("CLCReward::clcr_Load"); } if ( v17 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v19 = sub_626BC0(v1 + 76, v17); else v19 = v1 + 140; if ( *(_BYTE *)(v56 + 4) == *(_BYTE *)v19 ) { if ( v17 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v20 = sub_626BC0(v1 + 76, v17); else v20 = v1 + 140; *(_BYTE *)(v55 + *(_DWORD *)(v56 + 12)) = *(_BYTE *)v20; if ( v17 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v21 = sub_626BC0(v1 + 76, v17); else v21 = v1 + 140; *(_BYTE *)(v55 + *(_DWORD *)(v56 + 12) + 33) = *(_BYTE *)(v21 + 33); if ( v17 < *(_DWORD *)(*(_DWORD *)(v1 + 128) + 40) ) v22 = sub_626BC0(v1 + 76, v17); else v22 = v1 + 140; v23 = (const void *)(v22 + 1); v24 = v55 + 34; memcpy((void *)(v55 + *(_DWORD *)(v56 + 12) + 1), v23, 0x20u); v1 = (int)v53; v55 = v24; } ++v17; } while ( (signed int)v17 < v54 ); } v25 = *(_DWORD *)(v1 + 184); if ( v25 == *(_DWORD *)(v1 + 188) ) goto LABEL_99; v26 = *(_DWORD *)(v1 + 184); v27 = 1; if ( v25 != *(_DWORD *)(v1 + 188) ) { do { if ( v57 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v28 = sub_626BC0(v1, v57); else v28 = v1 + 64; if ( *(_WORD *)v26 == *(_DWORD *)v28 ) { if ( v57 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v29 = sub_626BC0(v1, v57); else v29 = v1 + 64; *(_DWORD *)(v26 + 4) += *(_DWORD *)(v29 + 5); v27 = 0; } v26 += 8; } while ( v26 != *(_DWORD *)(v1 + 188) ); if ( v27 != 1 ) goto LABEL_99; } if ( v57 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v30 = sub_626BC0(v1, v57); else v30 = v1 + 64; v31 = *(_DWORD *)(v1 + 52); LOWORD(v51) = *(_WORD *)v30; if ( v57 < *(_DWORD *)(v31 + 40) ) v32 = sub_626BC0(v1, v57); else v32 = v1 + 64; v33 = *(_DWORD *)(v32 + 5); v34 = *(_DWORD *)(v1 + 188); v52 = v33; if ( (unsigned int)&v51 >= v34 || (v35 = *(_DWORD *)(v1 + 184), v35 > (unsigned int)&v51) ) { v45 = *(_DWORD *)(v1 + 192); if ( v34 == v45 ) { v46 = *(_DWORD *)(v1 + 184); v47 = (signed int)(v34 - v46) >> 3; if ( (unsigned int)v47 > 0x1FFFFFFE ) LABEL_101: sub_65178B((int)"vector too long"); v48 = v47 + 1; v49 = (v45 - v46) >> 3; if ( v48 > (unsigned int)v49 ) { if ( 536870911 - ((unsigned int)v49 >> 1) >= v49 ) v50 = ((unsigned int)v49 >> 1) + v49; else v50 = 0; if ( v50 < v48 ) v50 = v48; sub_492BD0(v1 + 184, v50); } } v42 = *(_DWORD *)(v1 + 188); if ( !v42 ) goto LABEL_98; v44 = v52; *(_DWORD *)v42 = v51; } else { v36 = *(_DWORD *)(v1 + 192); v37 = (signed int)((char *)&v51 - v35) >> 3; v55 = (signed int)((char *)&v51 - v35) >> 3; if ( v34 == v36 ) { v38 = (signed int)(v34 - v35) >> 3; if ( (unsigned int)v38 > 0x1FFFFFFE ) goto LABEL_101; v39 = v38 + 1; v40 = (signed int)(v36 - v35) >> 3; if ( v39 > (unsigned int)v40 ) { if ( 536870911 - ((unsigned int)v40 >> 1) >= v40 ) v41 = ((unsigned int)v40 >> 1) + v40; else v41 = 0; if ( v41 < v39 ) v41 = v39; sub_492BD0(v1 + 184, v41); v37 = v55; } } v42 = *(_DWORD *)(v1 + 188); if ( !v42 ) goto LABEL_98; v43 = *(_DWORD *)(v1 + 184); *(_DWORD *)v42 = *(_DWORD *)(v43 + 8 * v37); v44 = *(_DWORD *)(v43 + 8 * v37 + 4); } *(_DWORD *)(v42 + 4) = v44; LABEL_98: *(_DWORD *)(v1 + 188) += 8; LABEL_99: result = v57 + 1; v57 = result; } while ( result < *(_DWORD *)(v1 + 176) ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0049CB20) -------------------------------------------------------- int __cdecl sub_49CB20() { return sub_466B80((__time32_t)&unk_750830, (int)"5ZoneServerDumpStack"); } // 49CB20: using guessed type int sub_49CB20(); //----- (0049CB30) -------------------------------------------------------- int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { CHAR *v4; // eax@1 char v5; // cl@2 FILE *v6; // esi@12 char v8; // [sp+Bh] [bp-1C15h]@12 struct _SYSTEMTIME SystemTime; // [sp+Ch] [bp-1C14h]@5 char v10; // [sp+1Ch] [bp-1C04h]@3 char v11; // [sp+41Ch] [bp-1804h]@5 char pszPath; // [sp+81Ch] [bp-1404h]@3 char v13; // [sp+C1Ch] [bp-1004h]@3 char v14; // [sp+101Ch] [bp-C04h]@5 char v15; // [sp+141Ch] [bp-804h]@3 char v16[4]; // [sp+1818h] [bp-408h]@3 CHAR Filename; // [sp+181Ch] [bp-404h]@1 _BYTE v18[3]; // [sp+181Dh] [bp-403h]@3 unsigned int v19; // [sp+1C1Ch] [bp-4h]@1 int v20; // [sp+1C20h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; GetModuleFileNameA(0, &Filename, 0x400u); v4 = &Filename; do v5 = *v4++; while ( v5 ); v16[v4 - v18] = 0; sprintf(&v15, "%s.exe%c", &Filename, 0); sprintf(&v13, "%s.pdb%c", &Filename, 0); sprintf(&pszPath, "%s.exe_Reserve%c", &Filename, 0); sprintf(&v10, "%s.pdb_Reserve%c", &Filename, 0); if ( !PathFileExistsA(&pszPath) || !PathFileExistsA(&v10) || (GetLocalTime(&SystemTime), sprintf( &v14, "%s.exe_Backup_%04d-%02d-%02d-%02d-%02d-%02d", &Filename, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay, SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond), sprintf( &v11, "%s.pdb_Backup_%04d-%02d-%02d-%02d-%02d-%02d", &Filename, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay, SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond), rename(&v15, &v14)) ) goto LABEL_12; if ( rename(&v13, &v11) ) { rename(&v14, &v15); LABEL_12: v6 = fopen("Size.txt", "w"); fprintf(v6, "%d/%d\n", 235, 99); fclose(v6); sub_64B3D0(&v8); dword_154D2AE0 = sub_49CB20; return sub_5A91B0(byte_14D16AE8, (int)lpCmdLine); } if ( rename(&pszPath, &v15) ) { rename(&v14, &v15); rename(&v11, &v13); goto LABEL_12; } if ( rename(&v10, &v13) ) { rename(&v15, &pszPath); rename(&v14, &v15); rename(&v11, &v13); goto LABEL_12; } return 0; } // 49CB20: using guessed type int sub_49CB20(); // 86FEB8: using guessed type int __security_cookie; // 154D2AE0: using guessed type int (*dword_154D2AE0)(void); // 49CB30: using guessed type char var_408[4]; //----- (0049CE20) -------------------------------------------------------- bool __cdecl sub_49CE20() { return sub_5A83F0(byte_14D16AE8) != 0; } //----- (0049CE30) -------------------------------------------------------- void __cdecl sub_49CE30() { bool v0; // zf@1 v0 = byte_14D16AE8[0] == 0; byte_14D16AE8[1] = 1; if ( !v0 ) { do Sleep(5u); while ( byte_14D16AE8[0] ); } } //----- (0049CE40) -------------------------------------------------------- int __thiscall sub_49CE40(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; return result; } //----- (0049CE60) -------------------------------------------------------- int __thiscall sub_49CE60(void *this, FILE *a2) { FILE *v2; // edi@1 void *v3; // esi@1 int v4; // ebx@1 signed int v5; // ecx@1 int v6; // edi@1 int v7; // esi@1 int v8; // edi@3 int v10; // [sp+Ch] [bp-Ch]@1 int v11; // [sp+20h] [bp+8h]@1 v2 = a2; v3 = this; fread(this, 0x20u, 1u, a2); v4 = (int)((char *)v3 + 32); fread((char *)v3 + 32, 4u, 1u, a2); fread((char *)v3 + 36, 4u, 1u, a2); v11 = (int)((char *)v3 + 40); fread((char *)v3 + 40, 4u, 1u, v2); fread((char *)v3 + 44, 4u, 1u, v2); v10 = (int)((char *)v3 + 48); fread((char *)v3 + 48, 4u, 1u, v2); fread((char *)v3 + 52, 4u, 1u, v2); v5 = *((_DWORD *)v3 + 10) - *((_DWORD *)v3 + 8) + 1; v6 = v5 / 8; v7 = *((_DWORD *)v3 + 11) - *((_DWORD *)v3 + 9) + 1; if ( 8 * v5 / 8 != v5 ) { sub_639100( &unk_86DDD8, (int)"MapBlock::MapDoorBlockElement::mdbe_Load : Byte alignment error", *(_DWORD *)v11 - *(_DWORD *)v4 + 1); loc_6391B0("MapBlock::MapDoorBlockElement::mdbe_Load"); } v8 = v7 * v6; if ( v8 != *(_DWORD *)v10 ) { sub_639100(&unk_86DDD8, (int)"MapBlock::MapDoorBlockElement::mdbe_Load : Length error", v8 == *(_DWORD *)v10); loc_6391B0("MapBlock::MapDoorBlockElement::mdbe_Load"); } return 2 * *(_DWORD *)v10; } //----- (0049CF70) -------------------------------------------------------- FILE *__thiscall sub_49CF70(void *this, int a2) { void *v2; // esi@1 FILE *result; // eax@1 FILE *v4; // ebx@1 size_t v5; // edi@4 int v6; // eax@6 void *v7; // eax@7 void *v8; // [sp+8h] [bp-8Ch]@5 unsigned int v9; // [sp+Ch] [bp-88h]@4 char v10; // [sp+10h] [bp-84h]@1 unsigned int v11; // [sp+90h] [bp-4h]@1 int v12; // [sp+94h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v2 = this; sprintf(&v10, "../9Data/Shine/BlockInfo/%s.sbi", a2); *(_DWORD *)v2 = 0; result = fopen(&v10, "r"); v4 = result; if ( result ) { fread(v2, 4u, 1u, result); if ( *(_DWORD *)v2 >= 0x20u ) { sub_639100(&unk_86DDD8, (int)"MapBlock::MapDoorArray::mda_Load : Too many doors", *(_DWORD *)v2); loc_6391B0("MapBlock::MapDoorArray::mda_Load"); } v5 = 0; v9 = 0; if ( *(_DWORD *)v2 ) { v8 = (char *)v2 + 4; do { v6 = sub_49CE60(v8, v4); v8 = (char *)v8 + 56; v5 += v6; ++v9; } while ( v9 < *(_DWORD *)v2 ); } v7 = (void *)unknown_libname_130(v5); *((_DWORD *)v2 + 450) = v7; if ( fread(v7, 1u, v5, v4) != v5 ) { sub_639100(&unk_86DDD8, (int)"MapBlock::MapDoorArray::mda_Load : Buffer size wrong", 0); loc_6391B0("MapBlock::MapDoorArray::mda_Load"); } result = (FILE *)fclose(v4); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0049D0A0) -------------------------------------------------------- void __thiscall sub_49D0A0(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 20); if ( v2 ) operator delete(v2); if ( *(_DWORD *)(v1 + 24) ) operator delete(*(void **)(v1 + 24)); if ( *(_DWORD *)(v1 + 2872) ) operator delete(*(void **)(v1 + 2872)); _LN21((void *)(v1 + 1076), 0x38u, 32, nullsub_2); sub_62A3F0(v1 + 36); } //----- (0049D140) -------------------------------------------------------- char __thiscall sub_49D140(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // ecx@1 unsigned int v5; // edx@1 int v6; // eax@3 int v7; // eax@4 v3 = this; v4 = 8 * a2 / 0x32u; v5 = 8 * a3 / 0x32u; if ( v4 >= *((_DWORD *)v3 + 2) || v5 >= *((_DWORD *)v3 + 3) ) { LOBYTE(v7) = 1; } else { v6 = *((_DWORD *)v3 + 6); if ( v6 ) v7 = (1 << (v4 & 7)) & *(_BYTE *)(8 * a2 / 0x190u + v6 + v5 * *((_DWORD *)v3 + 4)); else LOBYTE(v7) = 0; } return v7; } //----- (0049D1B0) -------------------------------------------------------- char __thiscall sub_49D1B0(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // ecx@1 unsigned int v5; // edx@1 int v6; // eax@3 v3 = this; v4 = 8 * a2 / 0x32u; v5 = 8 * a3 / 0x32u; if ( v4 >= *((_DWORD *)v3 + 2) || v5 >= *((_DWORD *)v3 + 3) ) LOBYTE(v6) = 1; else v6 = (1 << (v4 & 7)) & *(_BYTE *)(8 * a2 / 0x190u + v5 * *((_DWORD *)v3 + 4) + *((_DWORD *)v3 + 5)); return v6; } //----- (0049D220) -------------------------------------------------------- int __thiscall sub_49D220(int this) { int v1; // edi@1 int v2; // esi@1 v1 = this; v2 = this + 20; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; sub_62A310(this + 56); _eh_vector_constructor_iterator_((void *)(v2 + 1076), 0x38u, 32, (int)sub_49CE40, nullsub_2); *(_DWORD *)(v2 + 2872) = 0; *(_DWORD *)(v2 + 20) = 0; *(_DWORD *)(v2 + 1068) = 0; *(_DWORD *)(v2 + 24) = 0; return v1; } //----- (0049D2B0) -------------------------------------------------------- void __thiscall sub_49D2B0(void *this) { sub_49D0A0((int)((char *)this + 20)); } //----- (0049D2C0) -------------------------------------------------------- char __thiscall sub_49D2C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 const void *v6; // ebx@1 unsigned int v7; // edx@3 unsigned int v8; // edi@3 unsigned int v9; // eax@6 void *v10; // eax@8 int v11; // ecx@15 unsigned int v12; // esi@15 void *v14; // [sp+18h] [bp-10h]@1 unsigned int v15; // [sp+34h] [bp+Ch]@3 v4 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mdbe_DoorAction2"); dword_7508B8[dword_750CB8] = (int)"MapBlock::MapDoorArray::mdbe_DoorAction2"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v6 = (const void *)(*((_DWORD *)v4 + 13) + *(_DWORD *)(a3 + 1800)); if ( a4 == 1 ) v6 = (char *)v6 + *((_DWORD *)v4 + 12); v7 = *((_DWORD *)v4 + 9); v8 = (unsigned int)(*((_DWORD *)v4 + 10) - *((_DWORD *)v4 + 8) + 1) >> 3; v15 = v7; if ( v7 <= *((_DWORD *)v4 + 11) ) { while ( 1 ) { v9 = *((_DWORD *)v4 + 8); if ( v9 >= *(_DWORD *)(a2 + 8) || v7 >= *(_DWORD *)(a2 + 12) ) v10 = 0; else v10 = (void *)((v9 >> 3) + v7 * *(_DWORD *)(a2 + 16) + *(_DWORD *)(a2 + 20)); if ( a4 == 1 ) { if ( v10 ) memmove(v10, v6, (unsigned __int16)v8); else sub_639100(&unk_86DDD8, (int)"MapBlock::MapDoorBlockElement::mdbe_DoorAction : Null block", 0); } else { if ( (signed int)v8 <= 0 ) goto LABEL_18; v11 = v6 - v10; v12 = v8; do { *(_BYTE *)v10 |= *((_BYTE *)v10 + v11); v10 = (char *)v10 + 1; --v12; } while ( v12 ); } v7 = v15; LABEL_18: ++v7; v6 = (char *)v6 + v8; v15 = v7; if ( v7 > *((_DWORD *)v14 + 11) ) { v5 = 1; break; } v4 = v14; } } dword_750CB8 -= v5; sub_467660((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mdbe_DoorAction2"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049D420) -------------------------------------------------------- void __thiscall sub_49D420(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 void *v4; // ebx@2 v2 = (int)this; v3 = 0; if ( *(_DWORD *)this ) { v4 = (char *)this + 4; do { if ( !sub_49D2C0(v4, a2, v2, 0) ) sub_639100(&unk_86DDD8, (int)"MapBlock::MapDoorArray::mda_CloseAllDoor : Close error", v3); ++v3; v4 = (char *)v4 + 56; } while ( (unsigned int)v3 < *(_DWORD *)v2 ); } } //----- (0049D470) -------------------------------------------------------- char __thiscall sub_49D470(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // ecx@1 int v6; // eax@1 unsigned int v7; // ebx@1 int v8; // esi@1 unsigned int v9; // edx@3 int v10; // ebx@3 int v12; // [sp+20h] [bp-18h]@1 int v13; // [sp+24h] [bp-14h]@3 int v14; // [sp+28h] [bp-10h]@2 unsigned int v15; // [sp+40h] [bp+8h]@1 unsigned int v16; // [sp+44h] [bp+Ch]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_OccupCellCheck"); dword_7508B8[dword_750CB8] = (int)"MapBlock::MapBlockInformation::mbi_OccupCellCheck"; dword_750AB8[dword_750CB8++] = -1; v5 = a4; v6 = -a4; v7 = 8 * a2 / 0x32u; v8 = -a4; v15 = 8 * a2 / 0x32u; v16 = 8 * a3 / 0x32u; v12 = -a4; if ( -a4 > a4 ) { LABEL_11: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_OccupCellCheck"); return 0; } while ( 1 ) { v14 = v6; if ( v6 <= v5 ) break; LABEL_10: ++v8; v12 = v8; if ( v8 > v5 ) goto LABEL_11; } v9 = v8 + v7; v10 = v6 + v16; v13 = v6 + v16; while ( 1 ) { if ( v9 >= *((_DWORD *)v4 + 2) || (unsigned int)v10 >= *((_DWORD *)v4 + 3) ) goto LABEL_8; if ( !((unsigned __int8)(1 << (v9 & 7)) & *(_BYTE *)((v9 >> 3) + v10 * *((_DWORD *)v4 + 4) + *((_DWORD *)v4 + 5))) ) break; v5 = a4; v8 = v12; v6 = v14; v10 = v13; LABEL_8: ++v6; ++v10; v14 = v6; v13 = v10; if ( v6 > v5 ) { v6 = -a4; v7 = v15; goto LABEL_10; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_OccupCellCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049D5F0) -------------------------------------------------------- int __thiscall sub_49D5F0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 int v5; // edi@1 int v6; // eax@1 _BYTE *v7; // eax@1 FILE *v8; // eax@1 FILE *v9; // ebx@1 int v10; // eax@6 size_t v11; // eax@8 int v12; // eax@11 _BYTE *v13; // eax@11 FILE *v14; // ebx@11 int v15; // eax@11 int v16; // eax@11 int v17; // eax@17 size_t v18; // eax@19 int v19; // ebx@19 int v20; // edx@21 unsigned int v21; // edx@21 int v22; // ecx@21 unsigned int v23; // edx@21 unsigned int v24; // eax@22 int v25; // eax@24 _BYTE *v26; // eax@24 int v27; // eax@24 _BYTE *v28; // eax@24 int v29; // eax@24 int v30; // eax@24 int v31; // eax@24 FILE *v33; // [sp+10h] [bp-ACh]@11 int v34; // [sp+1Ch] [bp-A0h]@2 int v35; // [sp+20h] [bp-9Ch]@4 int v36; // [sp+24h] [bp-98h]@13 int v37; // [sp+28h] [bp-94h]@15 char v38; // [sp+2Ch] [bp-90h]@1 unsigned int v39; // [sp+ACh] [bp-10h]@1 int v40; // [sp+B8h] [bp-4h]@1 int v41; // [sp+BCh] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v4 = (unsigned int)&v41 ^ __security_cookie; v5 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_Load"); dword_7508B8[dword_750CB8] = (int)"MapBlock::MapBlockInformation::mbi_Load"; dword_750AB8[dword_750CB8++] = -1; v6 = dword_8622C4 & (dword_8622C0 + 1); v40 = 0; dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)a2; *((_DWORD *)v7 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(a2 + 8); v7[12] = 0; sprintf(&v38, "../9Data/Shine/BlockInfo/%s.shab", v7, v4); v8 = fopen(&v38, "rb"); v9 = v8; if ( v8 ) { if ( fread(&v34, 4u, 1u, v8) != 1 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in read X size", 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load - shab"); } if ( fread(&v35, 4u, 1u, v9) != 1 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in read Y size", 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load - shab"); } v10 = unknown_libname_130(v34 * v35); *(_DWORD *)(v5 + 24) = v10; if ( v10 == 0 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in alloc mamory", v10 != 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load - shab"); } v11 = fread(*(void **)(v5 + 24), 1u, v34 * v35, v9); if ( v11 != v34 * v35 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in read Block information", v11 == v34 * v35); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load - shab"); } fclose(v9); } v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)a2; *((_DWORD *)v13 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(a2 + 8); v13[12] = 0; sprintf(&v38, "../9Data/Shine/BlockInfo/%s.shbd", v13); v14 = fopen(&v38, "rb"); v15 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v15; v16 = (int)&byte_85A2C0[256 * v15]; *(_DWORD *)v16 = *(_DWORD *)a2; *(_DWORD *)(v16 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(a2 + 8); v33 = v14; *(_BYTE *)(v16 + 12) = 0; if ( !v14 ) { sub_6390B0(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Map block information not found", v16); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load"); } if ( fread(&v36, 4u, 1u, v14) != 1 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in read X size", 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load"); } if ( fread(&v37, 4u, 1u, v14) != 1 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in read Y size", 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load"); } v17 = unknown_libname_130(v36 * v37); *(_DWORD *)(v5 + 20) = v17; if ( v17 == 0 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in alloc mamory", v17 != 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load"); } v18 = fread(*(void **)(v5 + 20), 1u, v36 * v37, v14); v19 = v36; if ( v18 != v36 * v37 ) { sub_639100(&unk_86DDD8, (int)"MapBlockInformation::mbi_Load : Error in read Block information", v18 == v36 * v37); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load"); v19 = v36; } v20 = v37; *(_DWORD *)(v5 + 8) = 8 * v19; *(_DWORD *)(v5 + 12) = v20; v21 = 5000 * v19 / 0x64u; *(_DWORD *)v5 = v21; *(_DWORD *)(v5 + 16) = v19; *(_DWORD *)a3 = v21; v22 = v37; v23 = 625 * *(_DWORD *)(v5 + 12) / 0x64u; *(_DWORD *)(v5 + 4) = v23; *(_DWORD *)a4 = v23; *(_DWORD *)(v5 + 28) = v19; *(_DWORD *)(v5 + 32) = v22; fclose(v33); if ( *(_DWORD *)(v5 + 24) ) { v24 = 0; if ( v36 * v37 ) { do { *(_BYTE *)(*(_DWORD *)(v5 + 20) + v24) |= *(_BYTE *)(v24 + *(_DWORD *)(v5 + 24)); ++v24; } while ( v24 < v36 * v37 ); } } v25 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v25; v26 = &byte_85A2C0[256 * v25]; *(_DWORD *)v26 = *(_DWORD *)a2; *((_DWORD *)v26 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v26 + 2) = *(_DWORD *)(a2 + 8); v26[12] = 0; v27 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v27; v28 = &byte_85A2C0[256 * v27]; *(_DWORD *)v28 = *(_DWORD *)a2; *((_DWORD *)v28 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v28 + 2) = *(_DWORD *)(a2 + 8); v28[12] = 0; sprintf(&v38, "../9Data/Shine/BlockInfo/%s.aid", v28); sub_62A430((void *)(v5 + 36), &v38); v29 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v29; v30 = (int)&byte_85A2C0[256 * v29]; *(_DWORD *)v30 = *(_DWORD *)a2; *(_DWORD *)(v30 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v30 + 8) = *(_DWORD *)(a2 + 8); *(_BYTE *)(v30 + 12) = 0; sub_49CF70((void *)(v5 + 1072), v30); v31 = sub_438A60((int)&unk_8B32A8, a2, v5, *(_DWORD *)(v5 + 4), 0, 0, *(_DWORD *)v5); *(_DWORD *)(v5 + 1068) = v31; if ( v31 == 0 ) { sub_639100(&unk_86DDD8, (int)"MapBlock::MapBlockInformation::mbi_Load : BlockDist fail", v31 != 0); loc_6391B0("MapBlock::MapBlockInformation::mbi_Load"); } --dword_750CB8; v40 = -1; return sub_467660((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_Load"); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (0049DB80) -------------------------------------------------------- int __thiscall sub_49DB80(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // edi@1 int v7; // eax@2 int v8; // eax@9 int v9; // eax@9 int v10; // ebx@9 int v11; // edi@9 int result; // eax@9 int v13; // eax@10 v5 = this; v6 = 0; if ( *(_DWORD *)(this + 741376) <= 0 ) { LABEL_7: if ( *(_DWORD *)(this + 741376) >= 0x100u ) { sub_639100( &unk_86DDD8, (int)"MapBlockInformationBox::mbib_Load : Too many block info", *(_DWORD *)(this + 741376)); loc_6391B0("MapBlock::MapBlockInformationBox::mbib_Load"); } v8 = *(_DWORD *)(v5 + 741376); *(_DWORD *)(v5 + 741376) = v8 + 1; v9 = v5 + 2896 * v8; *(_DWORD *)v9 = *(_DWORD *)a2; *(_DWORD *)(v9 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(a2 + 8); v10 = v9 + 20; sub_49D5F0((void *)(v9 + 20), a3, v9 + 12, v9 + 16); v11 = 2896 * v6; *(_DWORD *)a4 = *(_DWORD *)(v11 + v5 + 12); *(_DWORD *)a5 = *(_DWORD *)(v11 + v5 + 16); result = v10; } else { v7 = this + 8; while ( *(_DWORD *)(v7 - 8) != *(_DWORD *)a2 || *(_DWORD *)(v7 - 4) != *(_DWORD *)(a2 + 4) || *(_DWORD *)v7 != *(_DWORD *)(a2 + 8) ) { ++v6; v7 += 2896; if ( v6 >= *(_DWORD *)(this + 741376) ) goto LABEL_7; } v13 = 2896 * v6 + this; *(_DWORD *)a4 = *(_DWORD *)(v13 + 12); *(_DWORD *)a5 = *(_DWORD *)(v13 + 16); result = v13 + 20; } return result; } //----- (0049DC80) -------------------------------------------------------- char __thiscall sub_49DC80(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 char result; // al@9 char v7; // al@10 char v8; // bl@10 v5 = this; sub_4675D0((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mdbe_DoorAction"); dword_7508B8[dword_750CB8] = (int)"MapBlock::MapDoorArray::mdbe_DoorAction"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)a4 == *(_DWORD *)v5 && *(_DWORD *)(a4 + 4) == *((_DWORD *)v5 + 1) && *(_DWORD *)(a4 + 8) == *((_DWORD *)v5 + 2) && *(_DWORD *)(a4 + 12) == *((_DWORD *)v5 + 3) && *(_DWORD *)(a4 + 16) == *((_DWORD *)v5 + 4) && *(_DWORD *)(a4 + 20) == *((_DWORD *)v5 + 5) && *(_DWORD *)(a4 + 24) == *((_DWORD *)v5 + 6) && *(_DWORD *)(a4 + 28) == *((_DWORD *)v5 + 7) ) { v7 = sub_49D2C0(v5, a2, a3, a5); --dword_750CB8; v8 = v7; sub_467660((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mdbe_DoorAction"); result = v8; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mdbe_DoorAction"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049DDA0) -------------------------------------------------------- char __thiscall sub_49DDA0(void *this, int a2, int a3, int a4) { int v4; // esi@1 unsigned int v5; // edi@1 void *v6; // ebx@2 char result; // al@5 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mda_DoorAction"); dword_7508B8[dword_750CB8] = (int)"MapBlock::MapDoorArray::mda_DoorAction"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; if ( *(_DWORD *)v4 ) { v6 = (void *)(v4 + 4); while ( !sub_49DC80(v6, a2, v4, a3, a4) ) { ++v5; v6 = (char *)v6 + 56; if ( v5 >= *(_DWORD *)v4 ) goto LABEL_5; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mda_DoorAction"); result = 1; } else { LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapBlock::MapDoorArray::mda_DoorAction"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049DEA0) -------------------------------------------------------- char __thiscall sub_49DEA0(void *this, int a2, int a3) { int v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_DoorAction"); dword_7508B8[dword_750CB8] = (int)"MapBlock::MapBlockInformation::mbi_DoorAction"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_49DDA0((void *)(v3 + 1072), v3, a2, a3); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"MapBlock::MapBlockInformation::mbi_DoorAction"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049DF60) -------------------------------------------------------- int __thiscall sub_49DF60(int this) { return _LN21((void *)(this + 12), 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); } //----- (0049DF80) -------------------------------------------------------- int __thiscall sub_49DF80(int this, int a2, int a3) { int result; // eax@1 int v4; // esi@1 result = a3; v4 = this; if ( *(_DWORD *)this == *(_DWORD *)a3 && *(_DWORD *)(this + 4) == *(_DWORD *)(a3 + 4) && *(_DWORD *)(this + 8) == *(_DWORD *)(a3 + 8) ) { if ( *(_DWORD *)(this + 40972) >= 512 ) { sub_639100(&unk_86DDD8, (int)"MapClusterNamager::mc_Regist : Too many mapcluster", *(_DWORD *)(this + 40972)); loc_6391B0("MapClusterManager::MapCluster::mc_Regist"); } result = *(_DWORD *)(a2 + 12); if ( *(_DWORD *)a2 != *(_DWORD *)result || *(_DWORD *)(a2 + 4) != *(_DWORD *)(result + 4) || *(_DWORD *)(a2 + 8) != *(_DWORD *)(result + 8) ) { if ( *(_DWORD *)(v4 + 40972) >= 0x200u ) { sub_639100(&unk_86DDD8, (int)"MapClusterNamager::mc_Regist : Too many mapcluster", *(_DWORD *)(v4 + 40972)); loc_6391B0("MapClusterManager::MapCluster::mc_Regist"); } *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40972) + 12) = a2; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40972) + 16) = -1; *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40972) + 20) = 0; *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40972) + 21) = 0; *(_BYTE *)(v4 + 80 * *(_DWORD *)(v4 + 40972) + 52) = 0; *(_DWORD *)(v4 + 80 * *(_DWORD *)(v4 + 40972) + 84) = -1; result = *(_DWORD *)(v4 + 40972); *(_DWORD *)(v4 + 80 * result + 88) = 3; ++*(_DWORD *)(v4 + 40972); } } return result; } //----- (0049E0B0) -------------------------------------------------------- char __thiscall sub_49E0B0(int this, int a2, const char *a3) { unsigned int v3; // edx@2 int v4; // edi@3 int v5; // eax@6 char result; // al@8 int v7; // edx@9 int v8; // eax@9 int v9; // eax@9 int v10; // eax@11 int v11; // eax@13 char v12; // [sp+10h] [bp-14h]@13 int v13; // [sp+20h] [bp-4h]@13 if ( a2 && (v3 = 0, *(_WORD *)(this + 40972) > 0u) ) { v4 = *(_DWORD *)(this + 40972); while ( 1 ) { if ( *(_DWORD *)(this + 40976) >= v4 ) *(_DWORD *)(this + 40976) = 0; v5 = *(_DWORD *)(this + 40976); if ( *(_DWORD *)(this + 80 * v5 + 12) == a2 ) break; *(_DWORD *)(this + 40976) = v5 + 1; ++v3; if ( v3 >= (unsigned __int16)v4 ) goto LABEL_8; } *(_BYTE *)(this + 80 * v5 + 52) = 1; v7 = dword_14D129E8; v8 = this + 80 * *(_DWORD *)(this + 40976) + 56; *(_DWORD *)(this + 80 * *(_DWORD *)(this + 40976) + 60) = 50; *(_DWORD *)v8 = v7 + 50; v9 = sub_483840((int)&unk_CFCF380, *(_DWORD *)(a2 + 12), *(_DWORD *)(this + 80 * *(_DWORD *)(this + 40976) + 88)); if ( v9 ) { sub_507950(*(void **)(a2 + 68), (const char *)(v9 + 35), a2); sub_49D420((void *)(*(_DWORD *)(a2 + 20) + 1072), *(_DWORD *)(a2 + 20)); } v10 = sub_48C200(&unk_150A0980, a3); if ( v10 ) { sub_427E90((int)&v12, v10); v13 = 0; v11 = sub_462A60((void *)a2); sub_549B60((void *)v11, (int)&v12, 0); v13 = -1; sub_427EB0(&v12); sub_494EA0((void *)a2, 176); result = 1; } else { sub_639100(&unk_86DDD8, (int)"Not Found ETC : DungeonTimeout", 0); sub_494EA0((void *)a2, 176); result = 1; } } else { LABEL_8: result = 0; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0049E250) -------------------------------------------------------- int __thiscall sub_49E250(int this) { int v1; // esi@1 int v2; // edi@4 char v3; // bl@5 int v5; // [sp+Ch] [bp-4h]@1 v1 = this; v5 = 0; if ( *(_DWORD *)(this + 40972) <= 0 ) { LABEL_7: sub_639100( &unk_86DDD8, (int)"MapClusterManager::MapCluster::mc_FindNotFullMap : Tutorial Map Full - MapNumber : ", *(_DWORD *)(v1 + 40972)); } else { while ( 1 ) { if ( *(_DWORD *)(v1 + 40976) >= *(_DWORD *)(v1 + 40972) ) *(_DWORD *)(v1 + 40976) = 0; v2 = *(_DWORD *)(v1 + 80 * *(_DWORD *)(v1 + 40976) + 12); if ( !v2 ) break; v3 = sub_461720((int)&unk_CFCF380, *(_DWORD *)(v2 + 12)); if ( sub_462DD0((void *)v2) < (unsigned __int8)v3 ) { ++*(_DWORD *)(v1 + 40976); return v2; } ++v5; if ( v5 >= *(_DWORD *)(v1 + 40972) ) goto LABEL_7; } } return 0; } //----- (0049E320) -------------------------------------------------------- void *__thiscall sub_49E320(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 213, 43) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 213, 213, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0049E3D0) -------------------------------------------------------- void *__thiscall sub_49E3D0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6BB590; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BB590: using guessed type int (__thiscall *off_6BB590)(void *, char); //----- (0049E410) -------------------------------------------------------- int __thiscall sub_49E410(int this, int a2) { int result; // eax@1 int v3; // edx@1 const void *v4; // esi@2 void *v5; // edi@2 bool v6; // zf@2 signed int v7; // [sp+Ch] [bp-4h]@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); v3 = this + 12; v7 = 512; do { v4 = (const void *)(a2 - this + v3); v5 = (void *)v3; v3 += 80; v6 = v7-- == 1; memcpy(v5, v4, 0x50u); } while ( !v6 ); *(_DWORD *)(this + 40972) = *(_DWORD *)(a2 + 40972); *(_DWORD *)(this + 40976) = *(_DWORD *)(a2 + 40976); return result; } //----- (0049E480) -------------------------------------------------------- void *__thiscall sub_49E480(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BB5B4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BB5B4: using guessed type int (__thiscall *off_6BB5B4)(void *, char); //----- (0049E4C0) -------------------------------------------------------- char __thiscall sub_49E4C0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@4 int v4; // eax@5 char v5; // al@13 int v6; // eax@14 char v7; // al@22 int v8; // eax@23 char result; // al@31 int v10; // eax@32 v1 = this; v2 = *((_WORD *)this + 6); if ( (_WORD)v2 != -1 ) (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 8))(this, v2); if ( *((_WORD *)v1 + 2) > 0u ) { v4 = *((_DWORD *)v1 + 2); if ( *(_DWORD *)v4 ) { LOBYTE(v3) = 0; } else { *(_DWORD *)v3 = (char *)v1 + 24; LOBYTE(v3) = 1; } } else { LOBYTE(v3) = 0; } v3 = (unsigned __int8)v3; if ( !(_BYTE)v3 ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_Init : Init error", v3); loc_6391B0("MapClusterManager::ClusterManager::cm_Init"); } if ( *((_WORD *)v1 + 6) != -1 ) (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 8))(v1, *((_WORD *)v1 + 6)); if ( *((_WORD *)v1 + 2) > 1u ) { v6 = *((_DWORD *)v1 + 2); if ( *(_DWORD *)(v6 + 12) ) { v5 = 0; } else { *(_DWORD *)(v6 + 12) = (char *)v1 + 41004; v5 = 1; } } else { v5 = 0; } if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_Init : Init error", 1); loc_6391B0("MapClusterManager::ClusterManager::cm_Init"); } if ( *((_WORD *)v1 + 6) != -1 ) (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 8))(v1, *((_WORD *)v1 + 6)); if ( *((_WORD *)v1 + 2) > 2u ) { v8 = *((_DWORD *)v1 + 2); if ( *(_DWORD *)(v8 + 24) ) { v7 = 0; } else { *(_DWORD *)(v8 + 24) = (char *)v1 + 81984; v7 = 1; } } else { v7 = 0; } if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_Init : Init error", 2); loc_6391B0("MapClusterManager::ClusterManager::cm_Init"); } if ( *((_WORD *)v1 + 6) != -1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 8))(v1, *((_WORD *)v1 + 6)); if ( *((_WORD *)v1 + 2) > 3u ) { v10 = *((_DWORD *)v1 + 2); if ( *(_DWORD *)(v10 + 36) ) { result = 0; } else { *(_DWORD *)(v10 + 36) = (char *)v1 + 122964; result = 1; } } else { result = 0; } if ( !result ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_Init : Init error", 3); result = loc_6391B0("MapClusterManager::ClusterManager::cm_Init"); } return result; } //----- (0049E650) -------------------------------------------------------- char *__thiscall sub_49E650(char *this, const char *a2) { char *v2; // esi@1 v2 = this; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = 0; _eh_vector_constructor_iterator_(this + 12, 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 1) = 0; *(_DWORD *)v2 = 0; strncpy(v2, a2, 0xCu); *((_DWORD *)v2 + 10243) = 0; *((_DWORD *)v2 + 10244) = 0; return v2; } //----- (0049E6B0) -------------------------------------------------------- int __thiscall sub_49E6B0(void *this) { void *v1; // esi@1 unsigned int v2; // ecx@1 int v3; // edx@2 int result; // eax@7 int v5; // esi@8 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_FindEmpty"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::MapCluster::mc_FindEmpty"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( *((_WORD *)v1 + 20486) <= 0u ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_FindEmpty"); result = 0; } else { v3 = *((_DWORD *)v1 + 10243); while ( 1 ) { ++*((_DWORD *)v1 + 10244); if ( *((_DWORD *)v1 + 10244) >= v3 ) *((_DWORD *)v1 + 10244) = 0; if ( !*(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 20 * *((_DWORD *)v1 + 10244) + 3) + 68) + 20) ) break; ++v2; if ( v2 >= (unsigned __int16)v3 ) goto LABEL_7; } v5 = *((_DWORD *)v1 + 20 * *((_DWORD *)v1 + 10244) + 3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_FindEmpty"); result = v5; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049E7D0) -------------------------------------------------------- int __thiscall sub_49E7D0(void *this, int a2, int a3, int a4) { void *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; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_CompName"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::MapCluster::mc_CompName"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)v4 < *(_DWORD *)a4; if ( *(_DWORD *)v4 != *(_DWORD *)a4 || (v7 = *(_DWORD *)(a4 + 4), v8 = *((_DWORD *)v4 + 1), v5 = v8 < v7, v8 != v7) ) { v6 = v5 ? 1 : -1; } else { v9 = *(_DWORD *)(a4 + 8); v10 = *((_DWORD *)v4 + 2); if ( v9 <= v10 ) v6 = -(v9 < v10); else v6 = 1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterManager::MapCluster::mc_CompName"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049E860) -------------------------------------------------------- char __thiscall sub_49E860(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // ecx@1 int v5; // eax@4 int v6; // ecx@6 int v8; // eax@8 int v9; // [sp-4h] [bp-24h]@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_GetLimitTime"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::MapCluster::mc_GetLimitTime"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( *((_WORD *)v3 + 20486) <= 0u ) { LABEL_6: v9 = (int)"MapClusterNamager::MapCluster::mc_GetLimitTime"; v6 = (int)&unk_D020420; LABEL_7: --dword_750CB8; sub_467660(v6, v9); return 0; } while ( 1 ) { if ( *((_DWORD *)v3 + 10244) >= *((_DWORD *)v3 + 10243) ) *((_DWORD *)v3 + 10244) = 0; v5 = *((_DWORD *)v3 + 10244); if ( *((_DWORD *)v3 + 20 * v5 + 4) == a3 ) break; *((_DWORD *)v3 + 10244) = v5 + 1; ++v4; if ( v4 >= *((_WORD *)v3 + 20486) ) goto LABEL_6; } v8 = (int)((char *)v3 + 80 * v5); v9 = (int)"MapClusterNamager::MapCluster::mc_GetLimitTime"; v6 = (int)&unk_D020420; if ( !*(_BYTE *)(v8 + 40) ) goto LABEL_7; *(_DWORD *)a2 = *(_DWORD *)(v8 + 44) - dword_14D129E8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_GetLimitTime"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0049E990) -------------------------------------------------------- char __thiscall sub_49E990(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // edx@1 int v5; // eax@4 char result; // al@7 int v7; // edi@8 unsigned int v8; // edx@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_SetLimitItem"); dword_7508B8[dword_750CB8] = (int)"MapClusterNamager::MapCluster::mc_SetLimitItem"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( *((_WORD *)v3 + 20486) <= 0u ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_SetLimitItem"); result = 0; } else { while ( 1 ) { if ( *((_DWORD *)v3 + 10244) >= *((_DWORD *)v3 + 10243) ) *((_DWORD *)v3 + 10244) = 0; v5 = *((_DWORD *)v3 + 10244); if ( *((_DWORD *)v3 + 20 * v5 + 4) == a3 ) { if ( *((_BYTE *)v3 + 80 * v5 + 40) ) break; } *((_DWORD *)v3 + 10244) = v5 + 1; ++v4; if ( v4 >= *((_WORD *)v3 + 20486) ) goto LABEL_7; } v7 = dword_14D129E8; v8 = (unsigned int)((unsigned int)(600000 * a2) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *((_DWORD *)v3 + 20 * v5 + 12) = v8; *((_DWORD *)v3 + 20 * v5 + 11) = v7 + v8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MapClusterNamager::MapCluster::mc_SetLimitItem"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0049EAD0) -------------------------------------------------------- char __thiscall sub_49EAD0(void *this, int a2, int a3) { void *v3; // edi@1 int v5; // ecx@4 int v6; // eax@7 _BYTE *v7; // eax@7 signed int v8; // eax@7 int v9; // eax@10 int v10; // ecx@14 int v11; // ST00_4@14 void *v12; // ecx@14 int v13; // [sp-Ch] [bp-138h]@5 int v14; // [sp-8h] [bp-134h]@5 int v15; // [sp+10h] [bp-11Ch]@14 int v16; // [sp+14h] [bp-118h]@14 int v17; // [sp+18h] [bp-114h]@1 char v18; // [sp+1Ch] [bp-110h]@14 unsigned int v19; // [sp+11Ch] [bp-10h]@1 int v20; // [sp+128h] [bp-4h]@1 int v21; // [sp+12Ch] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v3 = this; v17 = a3; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_2JobDungeon"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_2JobDungeon"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( !a2 ) { --dword_750CB8; LABEL_3: v20 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_2JobDungeon"); return 0; } v5 = *(_DWORD *)(a2 + 12); if ( !v5 ) { v14 = 0; v13 = (int)"ShineObjectClass::ShinePlayer::so_ply_2JobDungeon : Null option"; LABEL_6: sub_639100(&unk_86DDD8, v13, v14); --dword_750CB8; goto LABEL_3; } v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); v7[12] = 0; v8 = sub_639620(&unk_14D20404, v7); if ( v8 == -1 ) LOWORD(v8) = -1; v8 = (unsigned __int16)v8; if ( (unsigned __int16)v8 < dword_14D20400 ) v9 = *(_DWORD *)(dword_14D203FC + 4 * v8); else v9 = 0; if ( !v9 ) { v14 = 0; v13 = (int)"ShineObjectClass::ShinePlayer::so_ply_2JobDungeon : Null info"; goto LABEL_6; } v15 = *(_DWORD *)(v9 + 50); v16 = *(_DWORD *)(v9 + 54); sub_494EA0((void *)a2, 950); (*(void (__thiscall **)(void *, int, int *))(*(_DWORD *)v3 + 2192))(v3, a2, &v15); sub_4D5720(&v18); v10 = v17; *(_BYTE *)(a2 + 496) &= 0xFCu; v11 = v10; v12 = *(void **)(a2 + 68); LOBYTE(v20) = 1; sub_5071A0(v12, v11, &v18, a2); LOBYTE(v20) = 0; nullsub_2(&v18); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_2JobDungeon"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (0049ECC0) -------------------------------------------------------- int __thiscall sub_49ECC0(void *this) { void *v1; // esi@1 int v2; // edi@1 void *v3; // edi@2 int v4; // eax@4 int v5; // eax@5 int v6; // esi@5 int v8; // [sp+0h] [bp-20h]@0 int v9; // [sp+4h] [bp-1Ch]@0 int v10; // [sp+8h] [bp-18h]@0 int v11; // [sp+10h] [bp-10h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 1029); v11 = (*(int (**)(void))(**((_DWORD **)v1 + 1029) + 68))(); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 56))(v2) != v11 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4182; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); *((_BYTE *)v3 + 8) = (*(int (**)(void))(**((_DWORD **)v1 + 1029) + 68))(); *((_BYTE *)v3 + 9) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1240))(v1); if ( sub_4C81E0(&off_849C18, 10) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_FirstJobChange : Packet Too Long", 10); } } v5 = (*(int (__stdcall **)(int, int, int, _DWORD, int))(**((_DWORD **)v1 + 1029) + 68))( v8, v9, v10, "ShineObjectClass::ShinePlayer::so_ply_FirstJobChange", v11); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0049EE10) -------------------------------------------------------- int __thiscall sub_49EE10(void *this) { int v1; // esi@1 unsigned int v2; // edi@1 int v3; // edx@1 int v4; // eax@1 unsigned int v5; // ebx@2 int v6; // eax@9 int v7; // eax@15 int v9; // [sp+14h] [bp-28h]@2 int v10; // [sp+18h] [bp-24h]@1 unsigned int v11; // [sp+1Ch] [bp-20h]@1 int v12; // [sp+20h] [bp-1Ch]@2 int v13; // [sp+24h] [bp-18h]@12 int *v14; // [sp+28h] [bp-14h]@11 int *v15; // [sp+2Ch] [bp-10h]@6 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"TownPortalData::tpd_Load"); dword_7508B8[dword_750CB8] = (int)"TownPortalData::tpd_Load"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; sub_49E320((void *)v1, "../9Data/Shine/TownPortal.shn"); v3 = *(_DWORD *)(v1 + 52); v4 = *(_DWORD *)(v3 + 40); v10 = *(_DWORD *)(v3 + 40); v11 = 0; if ( v4 - 1 > 0 ) { do { v5 = v2 + 1; v9 = v2 + 1; v12 = v2 + 1; if ( (signed int)(v2 + 1) < v4 ) { while ( 1 ) { v15 = (int *)(v5 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ? sub_626BC0(v1, v5) : v1 + 64); v6 = v2 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ? sub_626BC0(v1, v2) : v1 + 64; v14 = (int *)v6; v13 = v2 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ? sub_626BC0(v1, v2) : v1 + 64; v7 = v5 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ? sub_626BC0(v1, v5) : v1 + 64; if ( *(_BYTE *)v13 == *(_BYTE *)v7 ) { sub_639150(&unk_86DDD8, (int)"TownPortalData::tpd_Load : duplicate index", *(_BYTE *)v14, *(_BYTE *)v15); loc_6391B0("TownPortalData::tpd_Load"); } v4 = v10; v5 = v12 + 1; v12 = v5; if ( (signed int)v5 >= v10 ) break; v2 = v11; } v5 = v9; } v2 = v5; v11 = v5; } while ( (signed int)v5 < v4 - 1 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"TownPortalData::tpd_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049EFB0) -------------------------------------------------------- int __thiscall sub_49EFB0(void *this, char a2) { int v2; // esi@1 signed int v3; // ebx@1 unsigned int v4; // edi@1 int v5; // eax@3 int result; // eax@7 int v7; // esi@9 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"TownPortalData::operator []"); dword_7508B8[dword_750CB8] = (int)"TownPortalData::operator []"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40); v4 = 0; if ( v3 <= 0 ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TownPortalData::operator []"); result = 0; } else { while ( 1 ) { v5 = v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ? sub_626BC0(v2, v4) : v2 + 64; if ( *(_BYTE *)v5 == a2 ) break; ++v4; if ( (signed int)v4 >= v3 ) goto LABEL_7; } if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) v7 = sub_626BC0(v2, v4); else v7 = v2 + 64; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TownPortalData::operator []"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049F0C0) -------------------------------------------------------- int __thiscall sub_49F0C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@5 int v6; // edx@5 int v7; // ebx@5 int v8; // edi@7 int v9; // ebx@8 int v10; // edx@9 int (__thiscall *v11)(_DWORD); // eax@9 int v12; // eax@10 int (__thiscall *v13)(_DWORD); // eax@12 int v14; // eax@13 int v15; // edx@13 int (__thiscall *v16)(_DWORD); // eax@13 int v17; // eax@14 int v18; // ebx@15 int v19; // ebx@16 int (__thiscall *v20)(_DWORD); // eax@17 int *v21; // eax@18 char *v22; // ecx@18 bool v23; // cf@20 void (__thiscall *v24)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@20 unsigned int v26; // [sp-4h] [bp-94h]@1 int v27; // [sp+10h] [bp-80h]@22 int v28; // [sp+14h] [bp-7Ch]@22 int v29; // [sp+18h] [bp-78h]@13 int v30; // [sp+1Ch] [bp-74h]@13 int v31; // [sp+20h] [bp-70h]@5 int v32; // [sp+24h] [bp-6Ch]@9 int v33; // [sp+28h] [bp-68h]@9 int v34; // [sp+2Ch] [bp-64h]@9 int v35; // [sp+30h] [bp-60h]@9 int v36; // [sp+34h] [bp-5Ch]@9 int v37; // [sp+38h] [bp-58h]@9 int v38; // [sp+3Dh] [bp-53h]@9 int v39; // [sp+41h] [bp-4Fh]@9 int v40; // [sp+45h] [bp-4Bh]@9 int v41; // [sp+49h] [bp-47h]@9 int v42; // [sp+4Dh] [bp-43h]@9 int v43; // [sp+51h] [bp-3Fh]@9 int v44; // [sp+55h] [bp-3Bh]@9 int v45; // [sp+59h] [bp-37h]@9 int v46; // [sp+5Dh] [bp-33h]@9 int v47; // [sp+61h] [bp-2Fh]@9 char v48[4]; // [sp+68h] [bp-28h]@22 int v49; // [sp+6Ch] [bp-24h]@22 int v50; // [sp+70h] [bp-20h]@22 char v51[4]; // [sp+74h] [bp-1Ch]@13 int v52; // [sp+78h] [bp-18h]@13 int v53; // [sp+7Ch] [bp-14h]@13 unsigned int v54; // [sp+80h] [bp-10h]@1 int v55; // [sp+8Ch] [bp-4h]@1 int v56; // [sp+90h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v26 = (unsigned int)&v56 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"; dword_750AB8[dword_750CB8++] = -1; v55 = 0; if ( !(dword_D714FF4 & 1) ) { dword_D714FF4 |= 1u; word_D714FF0 = 70; atexit(nullsub_60); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D714FF0 ) { v5 = sub_49EFB0(&dword_D73D090, *(_BYTE *)(a2 + 2)); v6 = *(_DWORD *)v4; v7 = v5; v31 = v5; if ( !v5 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(v6 + 776))( v4, 6, 27, 6595, v26); v55 = -1; goto LABEL_25; } v8 = (*(int (__thiscall **)(void *, unsigned int))(v6 + 3188))(v4, v26); if ( v8 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 3240))(v8) == v9 ) { v10 = *(_DWORD *)v8; v33 = -1; v34 = -1; v35 = -1; v37 = -1; v38 = -1; v39 = -1; v40 = -1; v41 = -1; v42 = -1; v43 = -1; v44 = -1; v45 = -1; v46 = -1; v47 = -1; v11 = *(int (__thiscall **)(_DWORD))(v10 + 3288); v36 = 0; LOBYTE(v32) = 0; if ( (unsigned __int8)v11(v8) ) { while ( 1 ) { v12 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 3292))(v8, v32); if ( v12 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1240))(v12) < *(_BYTE *)(v31 + 1) ) break; } v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 3288); LOBYTE(v32) = v32 + 1; if ( (unsigned __int8)v32 >= (unsigned __int8)v13(v8) ) goto LABEL_13; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6596); goto LABEL_24; } LABEL_13: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6593); (*(void (__thiscall **)(int, int *))(*(_DWORD *)v8 + 3204))(v8, &v33); (*(void (__thiscall **)(void *, int *))(*(_DWORD *)v4 + 3208))(v4, &v33); v53 = 0; v52 = 0; *(_DWORD *)v51 = 0; strncpy(v51, (const char *)(v31 + 3), 0xCu); v14 = *(_DWORD *)(v31 + 39); v29 = *(_DWORD *)(v31 + 35); v15 = *(_DWORD *)v8; v30 = v14; v16 = *(int (__thiscall **)(_DWORD))(v15 + 3288); LOBYTE(v32) = 0; if ( (unsigned __int8)v16(v8) ) { do { v17 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 3292))(v8, v32); v31 = v17; if ( v17 ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 836))(v17); if ( v18 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) ) { v19 = v31; (*(void (__thiscall **)(int, int *))(*(_DWORD *)v31 + 3208))(v31, &v33); (*(void (__thiscall **)(int, char *, int *))(*(_DWORD *)v19 + 2192))(v19, v51, &v29); } } v20 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 3288); LOBYTE(v32) = v32 + 1; } while ( (unsigned __int8)v32 < (unsigned __int8)v20(v8) ); } v21 = &v29; v22 = v51; goto LABEL_23; } } else { v23 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) < *(_BYTE *)(v7 + 1); v24 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); if ( !v23 ) { v24(v4, 6, 27, 6593); v50 = 0; v49 = 0; *(_DWORD *)v48 = 0; strncpy(v48, (const char *)(v7 + 3), 0xCu); v27 = *(_DWORD *)(v7 + 35); v28 = *(_DWORD *)(v7 + 39); v21 = &v27; v22 = v48; LABEL_23: (*(void (__thiscall **)(void *, char *, int *))(*(_DWORD *)v4 + 2192))(v4, v22, v21); goto LABEL_24; } v24(v4, 6, 27, 6596); } LABEL_24: v55 = -1; goto LABEL_25; } (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 6, 27, 6594, v26); v55 = -1; LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D714FF0: using guessed type __int16 word_D714FF0; // D714FF4: using guessed type int dword_D714FF4; // D73D090: using guessed type int dword_D73D090; //----- (0049F440) -------------------------------------------------------- char __thiscall sub_49F440(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_49E410(v2, a2); result = 1; } else { result = 0; } return result; } //----- (0049F480) -------------------------------------------------------- char __thiscall sub_49F480(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_49E410(v2, a2); result = 1; } else { result = 0; } return result; } //----- (0049F4C0) -------------------------------------------------------- char __thiscall sub_49F4C0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_49E410(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (0049F510) -------------------------------------------------------- char __thiscall sub_49F510(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_49E410(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (0049F560) -------------------------------------------------------- void __thiscall sub_49F560(void *this) { void *v1; // esi@1 char *v2; // ebx@1 int v3; // edi@2 void *v4; // esi@5 signed int v5; // [sp+14h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6BB8D8; v2 = (char *)this + 163944; v5 = 10; do { v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { _LN21((void *)(v3 + 12), 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); operator delete((void *)v3); } v2 += 4; --v5; } while ( v5 ); nullsub_2((char *)v1 + 163984); _LN21((char *)v1 + 122976, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); _LN21((char *)v1 + 81996, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); _LN21((char *)v1 + 41016, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); _LN21((char *)v1 + 36, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); *(_DWORD *)v1 = &off_6BB590; v4 = (void *)*((_DWORD *)v1 + 2); if ( v4 ) sub_6530A4(v4); } // 6BB590: using guessed type int (__thiscall *off_6BB590)(void *, char); // 6BB8D8: using guessed type int (__thiscall *off_6BB8D8)(void *, char); //----- (0049F680) -------------------------------------------------------- char __thiscall sub_49F680(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6BB5BC; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BB5BC: using guessed type int (__stdcall *off_6BB5BC)(int, int); //----- (0049F800) -------------------------------------------------------- void *__thiscall sub_49F800(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_49F560(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049F830) -------------------------------------------------------- int __thiscall sub_49F830(void *this, const char *a2) { int v2; // esi@1 int result; // eax@2 int v4; // esi@3 int (__stdcall **v5)(int, int); // [sp+4h] [bp-A03Ch]@1 int v6; // [sp+8h] [bp-A038h]@1 int (__thiscall *v7)(void *, int, int, int); // [sp+Ch] [bp-A034h]@1 char *v8; // [sp+10h] [bp-A030h]@1 void *v9; // [sp+14h] [bp-A02Ch]@1 __int16 v10; // [sp+18h] [bp-A028h]@1 char v11[4]; // [sp+1Ch] [bp-A024h]@1 int v12; // [sp+20h] [bp-A020h]@1 int v13; // [sp+24h] [bp-A01Ch]@1 char v14; // [sp+28h] [bp-A018h]@1 int v15; // [sp+A028h] [bp-18h]@1 int v16; // [sp+A02Ch] [bp-14h]@1 unsigned int v17; // [sp+A030h] [bp-10h]@1 int v18; // [sp+A03Ch] [bp-4h]@1 int v19; // [sp+A040h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindEmpty"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_FindEmpty"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; _eh_vector_constructor_iterator_(&v14, 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; strncpy(v11, a2, 0xCu); v15 = 0; v16 = 0; v5 = &off_6B5AB4; v6 = v2; v7 = sub_49E7D0; v8 = v11; v9 = 0; v10 = -1; LOBYTE(v18) = 2; sub_43C470(v2, (int)&v5); LOBYTE(v18) = 1; v5 = &off_6B5AAC; if ( v9 ) { v4 = sub_49E6B0(v9); LOBYTE(v18) = 0; _LN21(&v14, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindEmpty"); result = v4; } else { LOBYTE(v18) = 0; _LN21(&v14, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindEmpty"); result = 0; } return result; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0049FA00) -------------------------------------------------------- int __stdcall sub_49FA00(const char *a1) { int v1; // eax@1 int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_49F830(&unk_D714FF8, a1); --dword_750CB8; v2 = v1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0049FAB0) -------------------------------------------------------- char __thiscall sub_49FAB0(void *this, char *a2) { int v2; // edi@1 signed int v3; // eax@3 int v4; // ecx@3 int v6; // eax@8 int v7; // edx@9 int v8; // eax@10 int v9; // esi@10 char *v10; // ST0C_4@11 signed int v11; // ecx@13 int v12; // eax@14 bool v13; // zf@14 int v14; // eax@14 int (__stdcall **v15)(int, int); // [sp+8h] [bp-A044h]@1 int v16; // [sp+Ch] [bp-A040h]@1 int (__thiscall *v17)(void *, int, int, int); // [sp+10h] [bp-A03Ch]@1 char *v18; // [sp+14h] [bp-A038h]@1 int v19; // [sp+18h] [bp-A034h]@1 __int16 v20; // [sp+1Ch] [bp-A030h]@1 int v21; // [sp+20h] [bp-A02Ch]@9 char *v22; // [sp+24h] [bp-A028h]@1 char v23[4]; // [sp+28h] [bp-A024h]@1 int v24; // [sp+2Ch] [bp-A020h]@1 int v25; // [sp+30h] [bp-A01Ch]@1 char v26; // [sp+34h] [bp-A018h]@1 int v27; // [sp+A034h] [bp-18h]@1 int v28; // [sp+A038h] [bp-14h]@1 unsigned int v29; // [sp+A03Ch] [bp-10h]@1 int v30; // [sp+A048h] [bp-4h]@1 int v31; // [sp+A04Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v2 = (int)this; v22 = a2; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_AddTutorialMapCluster"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_AddTutorialMapCluster"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; _eh_vector_constructor_iterator_(&v26, 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); v25 = 0; v24 = 0; *(_DWORD *)v23 = 0; strncpy(v23, a2, 0xCu); v27 = 0; v28 = 0; v15 = &off_6B5AB4; v16 = v2; v17 = sub_49E7D0; v18 = v23; v19 = 0; v20 = -1; LOBYTE(v30) = 2; sub_43C470(v2, (int)&v15); LOBYTE(v30) = 1; v15 = &off_6B5AAC; if ( v19 ) { sub_6390B0( &unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_AddTutorialMapCluster : Exist MapName - ", (int)a2); loc_6391B0("MapClusterManager::ClusterManager::cm_AddTutorialMapCluster"); } v3 = 0; v4 = v2 + 163944; while ( *(_DWORD *)v4 ) { ++v3; v4 += 4; if ( v3 >= 10 ) { LOBYTE(v30) = 0; _LN21(&v26, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_AddTutorialMapCluster"); return 0; } } v6 = *(_WORD *)(v2 + 12); if ( (_WORD)v6 != -1 ) { v7 = *(_DWORD *)v2; v21 = *(_WORD *)(v2 + 12); (*(void (__thiscall **)(int, int))(v7 + 8))(v2, v6); } v8 = operator new(0xA014u); v9 = v8; LOBYTE(v30) = 3; if ( v8 ) { *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = 0; _eh_vector_constructor_iterator_( (void *)(v8 + 12), 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); v10 = v22; *(_DWORD *)(v9 + 8) = 0; *(_DWORD *)(v9 + 4) = 0; *(_DWORD *)v9 = 0; strncpy((char *)v9, v10, 0xCu); *(_DWORD *)(v9 + 40972) = 0; *(_DWORD *)(v9 + 40976) = 0; } else { v9 = 0; } v11 = *(_WORD *)(v2 + 4); LOBYTE(v30) = 1; if ( (unsigned __int16)v21 < v11 && (v12 = *(_DWORD *)(v2 + 8), v13 = *(_DWORD *)(v12 + 12 * (unsigned __int16)v21) == 0, v14 = v12 + 12 * (unsigned __int16)v21, v13) ) { *(_DWORD *)v14 = v9; } else { sub_6390B0( &unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_AddTutorialMapCluster : Cannot Add, MapName - ", (int)v22); loc_6391B0("MapClusterManager::ClusterManager::cm_AddTutorialMapCluster"); } LOBYTE(v30) = 0; _LN21(&v26, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_AddTutorialMapCluster"); return 1; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0049FD90) -------------------------------------------------------- int __thiscall sub_49FD90(void *this, const char *a2) { int v2; // edi@1 int v4; // esi@6 int (__stdcall **v5)(int, int); // [sp+4h] [bp-A03Ch]@4 int v6; // [sp+8h] [bp-A038h]@4 int (__thiscall *v7)(void *, int, int, int); // [sp+Ch] [bp-A034h]@4 char *v8; // [sp+10h] [bp-A030h]@4 int v9; // [sp+14h] [bp-A02Ch]@4 __int16 v10; // [sp+18h] [bp-A028h]@4 char v11[4]; // [sp+1Ch] [bp-A024h]@4 int v12; // [sp+20h] [bp-A020h]@4 int v13; // [sp+24h] [bp-A01Ch]@4 char v14; // [sp+28h] [bp-A018h]@4 int v15; // [sp+A028h] [bp-18h]@4 int v16; // [sp+A02Ch] [bp-14h]@4 unsigned int v17; // [sp+A030h] [bp-10h]@1 int v18; // [sp+A03Ch] [bp-4h]@1 int v19; // [sp+A040h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindNotFullMap"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_FindNotFullMap"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( !a2 ) { --dword_750CB8; v18 = -1; LABEL_3: sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindNotFullMap"); return 0; } _eh_vector_constructor_iterator_(&v14, 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; strncpy(v11, a2, 0xCu); v15 = 0; v16 = 0; v5 = &off_6B5AB4; v6 = v2; v7 = sub_49E7D0; v8 = v11; v9 = 0; v10 = -1; LOBYTE(v18) = 2; sub_43C470(v2, (int)&v5); LOBYTE(v18) = 1; v5 = &off_6B5AAC; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_FindNotFullMap : don't find MapCluster", 0); LOBYTE(v18) = 0; _LN21(&v14, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v18 = -1; goto LABEL_3; } v4 = sub_49E250(v9); LOBYTE(v18) = 0; _LN21(&v14, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_FindNotFullMap"); return v4; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0049FFB0) -------------------------------------------------------- char __thiscall sub_49FFB0(void *this, const char *a2, int a3) { int v3; // edi@1 char v5; // bl@7 int (__stdcall **v6)(int, int); // [sp+4h] [bp-A03Ch]@5 int v7; // [sp+8h] [bp-A038h]@5 int (__thiscall *v8)(void *, int, int, int); // [sp+Ch] [bp-A034h]@5 char *v9; // [sp+10h] [bp-A030h]@5 void *v10; // [sp+14h] [bp-A02Ch]@5 __int16 v11; // [sp+18h] [bp-A028h]@5 char v12; // [sp+1Ch] [bp-A024h]@5 char v13; // [sp+28h] [bp-A018h]@6 unsigned int v14; // [sp+A030h] [bp-10h]@1 int v15; // [sp+A03Ch] [bp-4h]@1 int v16; // [sp+A040h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_PlayAllFilm"); dword_7508B8[dword_750CB8] = (int)"MapClusterManager::ClusterManager::cm_PlayAllFilm"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( !a2 || !a3 ) { --dword_750CB8; v15 = -1; LABEL_3: sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_PlayAllFilm"); return 0; } sub_49E650(&v12, a2); v6 = &off_6B5AB4; v7 = v3; v8 = sub_49E7D0; v9 = &v12; v10 = 0; v11 = -1; LOBYTE(v15) = 2; sub_43C470(v3, (int)&v6); LOBYTE(v15) = 1; v6 = &off_6B5AAC; if ( !v10 ) { sub_6390B0(&unk_86DDD8, (int)"MapClusterManager::ClusterManager::cm_PlayAllFilm : MapCluster Is NULL", (int)a2); LOBYTE(v15) = 0; _LN21(&v13, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v15 = -1; goto LABEL_3; } v5 = sub_485320(v10, a3); LOBYTE(v15) = 0; _LN21(&v13, 0x50u, 512, (void (__thiscall *)(void *))sub_483A90); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"MapClusterManager::ClusterManager::cm_PlayAllFilm"); return v5; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); // 6B5AB4: using guessed type int (__stdcall *off_6B5AB4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004A0170) -------------------------------------------------------- int __thiscall sub_4A0170(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6BB590; *(_DWORD *)(this + 16) = 0; sub_49F680(this, 0xEu); *(_DWORD *)v1 = &off_6BB8D8; *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 24) = 0; _eh_vector_constructor_iterator_( (void *)(v1 + 36), 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 24) = 0; strncpy((char *)(v1 + 24), "Job1_Dn01", 0xCu); *(_DWORD *)(v1 + 40996) = 0; *(_DWORD *)(v1 + 41000) = 0; *(_DWORD *)(v1 + 41012) = 0; *(_DWORD *)(v1 + 41008) = 0; *(_DWORD *)(v1 + 41004) = 0; _eh_vector_constructor_iterator_( (void *)(v1 + 41016), 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); *(_DWORD *)(v1 + 41012) = 0; *(_DWORD *)(v1 + 41008) = 0; *(_DWORD *)(v1 + 41004) = 0; strncpy((char *)(v1 + 41004), "Rou", 0xCu); *(_DWORD *)(v1 + 81976) = 0; *(_DWORD *)(v1 + 81980) = 0; *(_DWORD *)(v1 + 81992) = 0; *(_DWORD *)(v1 + 81988) = 0; *(_DWORD *)(v1 + 81984) = 0; _eh_vector_constructor_iterator_( (void *)(v1 + 81996), 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); *(_DWORD *)(v1 + 81992) = 0; *(_DWORD *)(v1 + 81988) = 0; *(_DWORD *)(v1 + 81984) = 0; strncpy((char *)(v1 + 81984), "Job2_Dn01", 0xCu); *(_DWORD *)(v1 + 122956) = 0; *(_DWORD *)(v1 + 122960) = 0; *(_DWORD *)(v1 + 122972) = 0; *(_DWORD *)(v1 + 122968) = 0; *(_DWORD *)(v1 + 122964) = 0; _eh_vector_constructor_iterator_( (void *)(v1 + 122976), 0x50u, 512, (int)sub_483B20, (void (__thiscall *)(void *))sub_483A90); *(_DWORD *)(v1 + 122972) = 0; *(_DWORD *)(v1 + 122968) = 0; *(_DWORD *)(v1 + 122964) = 0; strncpy((char *)(v1 + 122964), "Job2_Dn02", 0xCu); *(_DWORD *)(v1 + 163936) = 0; *(_DWORD *)(v1 + 163940) = 0; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 163984); *(_DWORD *)(v1 + 163944) = 0; *(_DWORD *)(v1 + 163948) = 0; *(_DWORD *)(v1 + 163952) = 0; *(_DWORD *)(v1 + 163956) = 0; *(_DWORD *)(v1 + 163960) = 0; *(_DWORD *)(v1 + 163964) = 0; *(_DWORD *)(v1 + 163968) = 0; *(_DWORD *)(v1 + 163972) = 0; *(_DWORD *)(v1 + 163976) = 0; *(_DWORD *)(v1 + 163980) = 0; *(_DWORD *)(v1 + 163984) = dword_14D129E8 + 150; *(_DWORD *)(v1 + 163988) = 150; return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6BB590: using guessed type int (__thiscall *off_6BB590)(void *, char); // 6BB8D8: using guessed type int (__thiscall *off_6BB8D8)(void *, char); // 14D129E8: using guessed type int dword_14D129E8; //----- (004A0370) -------------------------------------------------------- void *__thiscall sub_4A0370(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 251, 10) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 251, 251, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004A0420) -------------------------------------------------------- void *__thiscall sub_4A0420(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BBB78; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BBB78: using guessed type int (__thiscall *off_6BBB78)(void *, char); //----- (004A0450) -------------------------------------------------------- int __thiscall sub_4A0450(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MiniHouseEndureDataBox::mhe_Load"); dword_7508B8[dword_750CB8] = (int)"MiniHouseEndureDataBox::mhe_Load"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v1 = (char *)v1 + 68; sub_4A0370((char *)v1 + 4, "../9Data/Shine/MiniHouseEndure.shn"); *((_DWORD *)v1 + 20) = *(_DWORD *)(*((_DWORD *)v1 + 14) + 40); v2 = *(_DWORD *)v1; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 4) = 0; *(_WORD *)(v2 + 8) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MiniHouseEndureDataBox::mhe_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A0510) -------------------------------------------------------- signed int __thiscall sub_4A0510(int this, unsigned __int16 a2, unsigned int *a3, int a4) { int v4; // ebx@2 int v5; // eax@3 signed int result; // eax@7 int v7; // eax@10 unsigned int v8; // eax@14 unsigned int v9; // edx@14 int v10; // esi@14 int v11; // eax@14 unsigned __int16 v12; // di@16 int v13; // eax@17 signed int v14; // edi@21 int v15; // eax@23 int v16; // eax@27 unsigned __int16 v17; // [sp+14h] [bp-50h]@16 char v18; // [sp+18h] [bp-4Ch]@14 int v19; // [sp+3Ch] [bp-28h]@14 unsigned int v20; // [sp+40h] [bp-24h]@14 unsigned int v21; // [sp+44h] [bp-20h]@14 unsigned int v22; // [sp+48h] [bp-1Ch]@14 unsigned int v23; // [sp+4Ch] [bp-18h]@14 int v24; // [sp+50h] [bp-14h]@14 unsigned int v25; // [sp+60h] [bp-4h]@1 int v26; // [sp+64h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; if ( (signed int)a2 > *(_DWORD *)(*(_DWORD *)(this + 56) + 40) || ((v4 = this + 4, (unsigned int)a2 < *(_DWORD *)(*(_DWORD *)(this + 56) + 40)) ? (v5 = sub_626BC0(v4, a2)) : (v5 = this + 68), *(_WORD *)v5 != a2) ) { LABEL_31: result = 0; } else { if ( *a3 & 0xFF ) { if ( (*a3 & 0xFF) != 255 || ((unsigned int)a2 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ? (v7 = sub_626BC0(v4, a2)) : (v7 = v4 + 64), *(_WORD *)(v7 + 2)) ) { v8 = *a3; v9 = *a3 >> 8; memcpy(&v18, &unk_AA0BCC, 0x24u); v24 = (unsigned __int8)v8 + 100; v23 = (v9 & 0x1F) - 1; v20 = v8 >> 25; v22 = (v8 >> 13) & 0x3F; v21 = (v8 >> 19) & 0x3F; v19 = 0; v10 = _LN52(&v18); v11 = _LN52(&v19); if ( v11 > v10 ) { v12 = (v11 - v10) / 3600; v17 = (v11 - v10) / 3600; if ( (unsigned int)a2 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ) v13 = sub_626BC0(v4, a2); else v13 = v4 + 64; if ( v12 > *(_WORD *)(v13 + 2) ) v17 = *(_WORD *)(sub_4C1A30(v4, a2) + 2); v14 = 0; while ( 1 ) { v15 = (unsigned int)a2 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ? sub_626BC0(v4, a2) : v4 + 64; if ( v17 < *(_WORD *)(v15 + 2 * v14 + 2) ) { v16 = (unsigned int)a2 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ? sub_626BC0(v4, a2) : v4 + 64; if ( v17 >= *(_WORD *)(v16 + 2 * v14 + 4) ) break; } ++v14; if ( v14 >= 3 ) goto LABEL_31; } *(_DWORD *)a4 = v14 + 1; result = 1; } else { *(_DWORD *)a4 = 4; result = 1; } } else { *(_DWORD *)a4 = 1; result = 1; } } else { *(_DWORD *)a4 = 0; result = 1; } } return result; } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004A0730) -------------------------------------------------------- int __thiscall sub_4A0730(int this, unsigned __int16 a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // eax@2 int v5; // edi@2 __int16 v6; // ax@3 unsigned __int8 v7; // al@5 unsigned __int8 v8; // bl@8 int result; // eax@9 int v10; // [sp+10h] [bp+8h]@2 v2 = a2; v3 = this; if ( (unsigned int)a2 >= *(_DWORD *)(this + 112) ) { result = 0; } else { *(_WORD *)(this + 116) = a2; v4 = *(_DWORD *)(this + 124); v5 = v4 + 8 * a2; v10 = this + 116; if ( *(_BYTE *)(v4 + 8 * v2) ) { v5 = v4 + 8 * v2; v6 = *(_WORD *)(v5 + 4) + sub_427920(&unk_14D42DC0, *(_WORD *)(v4 + 8 * v2 + 2)); } else { v6 = *(_WORD *)(v5 + 4); } *(_WORD *)(v3 + 118) = v6; v7 = *(_BYTE *)(v5 + 6); if ( v7 ) *(_WORD *)(v3 + 120) = sub_427920(&unk_14D42DC0, v7) + 1; else *(_WORD *)(v3 + 120) = 0; v8 = *(_BYTE *)(*(_DWORD *)(v3 + 124) + 8 * v2 + 7); if ( v8 ) { *(_WORD *)(v3 + 122) = sub_427920(&unk_14D42DC0, v8) + 1; result = v10; } else { result = v10; *(_WORD *)(v3 + 122) = 0; } } return result; } //----- (004A07F0) -------------------------------------------------------- void *__thiscall sub_4A07F0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 625, 39) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 625, 625, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004A08A0) -------------------------------------------------------- void *__thiscall sub_4A08A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BBBC8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BBBC8: using guessed type int (__thiscall *off_6BBBC8)(void *, char); //----- (004A08D0) -------------------------------------------------------- int __thiscall sub_4A08D0(int this) { unsigned int v1; // esi@1 int v2; // edi@1 int v3; // eax@3 int v4; // eax@7 int result; // eax@11 unsigned int v6; // ebx@11 int v7; // ecx@11 int v8; // eax@18 int v9; // eax@21 int v10; // eax@25 int v11; // eax@28 unsigned int v12; // ebx@30 int v13; // eax@32 int v14; // eax@36 int v15; // eax@41 int v16; // ebx@45 unsigned int v17; // ecx@45 int v18; // eax@46 int v19; // ecx@51 int v20; // eax@52 int v21; // eax@55 int v22; // eax@58 int v23; // [sp+Ch] [bp-20h]@30 __int16 v24; // [sp+10h] [bp-1Ch]@27 unsigned __int16 v25; // [sp+14h] [bp-18h]@20 unsigned int v26; // [sp+18h] [bp-14h]@30 signed __int16 v27; // [sp+1Ch] [bp-10h]@30 int v28; // [sp+20h] [bp-Ch]@24 unsigned int v29; // [sp+24h] [bp-8h]@15 unsigned int v30; // [sp+28h] [bp-4h]@1 int v31; // [sp+28h] [bp-4h]@14 v1 = 0; v2 = this; *(_DWORD *)(this + 112) = 0; v30 = 0; if ( *(_DWORD *)(this + 108) ) { do { if ( v1 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v3 = sub_626BC0(v2 + 4, v1); else v3 = v2 + 68; if ( *(_DWORD *)(v2 + 112) < (unsigned int)*(_WORD *)v3 ) { if ( v1 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v4 = sub_626BC0(v2 + 4, v1); else v4 = v2 + 68; *(_DWORD *)(v2 + 112) = *(_WORD *)v4; } ++v30; v1 = v30; } while ( v30 < *(_DWORD *)(v2 + 108) ); } ++*(_DWORD *)(v2 + 112); result = unknown_libname_130(8 * *(_DWORD *)(v2 + 112) | -((unsigned __int64)*(_DWORD *)(v2 + 112) >> 29 != 0)); v6 = 0; v7 = 0; *(_DWORD *)(v2 + 124) = result; if ( *(_DWORD *)(v2 + 112) ) { result = 0; do { *(_BYTE *)(*(_DWORD *)(v2 + 124) + 8 * result) = 0; *(_WORD *)(*(_DWORD *)(v2 + 124) + 8 * result + 2) = 0; *(_WORD *)(*(_DWORD *)(v2 + 124) + 8 * result + 4) = -1; *(_BYTE *)(*(_DWORD *)(v2 + 124) + 8 * result + 6) = 0; ++v7; *(_BYTE *)(*(_DWORD *)(v2 + 124) + 8 * result + 7) = 0; result = (unsigned __int16)v7; } while ( (unsigned int)(unsigned __int16)v7 < *(_DWORD *)(v2 + 112) ); } v31 = 0; if ( *(_DWORD *)(v2 + 108) > 0u ) { v29 = 0; while ( 1 ) { v8 = v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ? sub_626BC0(v2 + 4, v6) : v2 + 68; v25 = *(_WORD *)v8; v9 = v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ? sub_626BC0(v2 + 4, v6) : v2 + 68; if ( *(_WORD *)(v9 + 11) < 0x2710u ) { v19 = 8 * v25; *(_BYTE *)(v19 + *(_DWORD *)(v2 + 124)) = 0; *(_WORD *)(v19 + *(_DWORD *)(v2 + 124) + 2) = 0; if ( v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) { v20 = sub_626BC0(v2 + 4, v6); v19 = 8 * v25; } else { v20 = v2 + 68; } *(_WORD *)(v19 + *(_DWORD *)(v2 + 124) + 4) = *(_WORD *)(v20 + 11); if ( v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) { v21 = sub_626BC0(v2 + 4, v6); v19 = 8 * v25; } else { v21 = v2 + 68; } *(_BYTE *)(v19 + *(_DWORD *)(v2 + 124) + 6) = *(_BYTE *)(v21 + 13); if ( v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) { v22 = sub_626BC0(v2 + 4, v6); v19 = 8 * v25; } else { v22 = v2 + 68; } *(_BYTE *)(v19 + *(_DWORD *)(v2 + 124) + 7) = *(_BYTE *)(v22 + 26); } else { v28 = 0; if ( v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v10 = sub_626BC0(v2 + 4, v6); else v10 = v2 + 68; v24 = *(_WORD *)(v10 + 2); if ( v6 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v11 = sub_626BC0(v2 + 4, v6); else v11 = v2 + 68; v12 = 0; v23 = *(_WORD *)(v11 + 11); v27 = -1; v26 = 0; if ( *(_DWORD *)(v2 + 108) ) { do { if ( v12 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v13 = sub_626BC0(v2 + 4, v12); else v13 = v2 + 68; if ( *(_WORD *)(v13 + 2) == v24 ) { v14 = v12 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ? sub_626BC0(v2 + 4, v12) : v2 + 68; if ( *(_WORD *)(v14 + 5) == v23 ) { ++v28; if ( v27 == -1 ) { if ( v12 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v15 = sub_626BC0(v2 + 4, v12); else v15 = v2 + 68; v27 = *(_WORD *)v15; } } } ++v26; v12 = v26; } while ( v26 < *(_DWORD *)(v2 + 108) ); } v16 = 8 * v25; *(_BYTE *)(v16 + *(_DWORD *)(v2 + 124)) = 1; *(_WORD *)(v16 + *(_DWORD *)(v2 + 124) + 2) = v28; *(_WORD *)(v16 + *(_DWORD *)(v2 + 124) + 4) = v27; v17 = v29; if ( v29 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) { v18 = sub_626BC0(v2 + 4, v29); v17 = v29; } else { v18 = v2 + 68; } *(_BYTE *)(v16 + *(_DWORD *)(v2 + 124) + 6) = *(_BYTE *)(v18 + 13); *(_BYTE *)(v16 + *(_DWORD *)(v2 + 124) + 7) = v17 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ? *(_BYTE *)(sub_626BC0(v2 + 4, v17) + 26) : *(_BYTE *)(v2 + 94); } result = v31 + 1; v31 = result; result = (unsigned __int16)result; v29 = result; if ( (unsigned int)(unsigned __int16)result >= *(_DWORD *)(v2 + 108) ) break; v6 = (unsigned __int16)result; } } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004A0BE0) -------------------------------------------------------- int __thiscall sub_4A0BE0(void *this) { int v1; // esi@1 void *v2; // ST00_4@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MiniHouseObjAniDataBox::mhoadb_Load"); dword_7508B8[dword_750CB8] = (int)"MiniHouseObjAniDataBox::mhoadb_Load"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v1 = v1 + 68; sub_4A07F0((void *)(v1 + 4), "../9Data/Shine/MiniHouseObjAni.shn"); v2 = *(void **)v1; *(_DWORD *)(v1 + 108) = *(_DWORD *)(*(_DWORD *)(v1 + 56) + 40); memset(v2, 0, 0x27u); sub_4A08D0(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MiniHouseObjAniDataBox::mhoadb_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A0CB0) -------------------------------------------------------- int __cdecl sub_4A0CB0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 55); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (004A0CD0) -------------------------------------------------------- int __cdecl sub_4A0CD0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 55); i = *(_DWORD *)i ) result = i; return result; } //----- (004A0CF0) -------------------------------------------------------- void *__thiscall sub_4A0CF0(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 55) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 55) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 55); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 55); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (004A0D50) -------------------------------------------------------- void *__thiscall sub_4A0D50(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 51, 40) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 51, 51, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004A0E00) -------------------------------------------------------- void *__thiscall sub_4A0E00(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 44, 36) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 44, 44, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004A0EA0) -------------------------------------------------------- void *__thiscall sub_4A0EA0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BBC18; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BBC18: using guessed type int (__thiscall *off_6BBC18)(void *, char); //----- (004A0ED0) -------------------------------------------------------- void *__thiscall sub_4A0ED0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BBC20; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BBC20: using guessed type int (__thiscall *off_6BBC20)(void *, char); //----- (004A0F00) -------------------------------------------------------- void *__thiscall sub_4A0F00(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 55) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 55) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 55) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 55) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 55); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 55) ) goto LABEL_11; return result; } //----- (004A0F60) -------------------------------------------------------- int __thiscall sub_4A0F60(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 55) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (004A0FC0) -------------------------------------------------------- int __thiscall sub_4A0FC0(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 55) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (004A1020) -------------------------------------------------------- int __thiscall sub_4A1020(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 33) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (004A1080) -------------------------------------------------------- int __thiscall sub_4A1080(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 33) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (004A10E0) -------------------------------------------------------- char __thiscall sub_4A10E0(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x7FFFFFFF ) sub_65178B((int)"vector too long"); v4 = sub_478550(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 2 * a2; result = 1; } else { result = 0; } return result; } //----- (004A1130) -------------------------------------------------------- int __thiscall sub_4A1130(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_6186185 ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 54) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 54) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 55) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 54) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 54) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 55) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 54) = 1; *(_BYTE *)(v13 + 54) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 54) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 54) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 55) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 54) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 54) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 55) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 54) = 1; *(_BYTE *)(v22 + 54) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 54) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 54) = 1; return result; } //----- (004A1360) -------------------------------------------------------- int __cdecl sub_4A1360(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 2 ) { if ( result ) *(_WORD *)result = *(_WORD *)v3; v3 += 2; } return result; } //----- (004A1390) -------------------------------------------------------- int __thiscall sub_4A1390(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 55) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_4A0CF0(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 55) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 55) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 55) ) { v9 = v6; } else { v9 = sub_4A0CD0(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 55) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_4A0CB0(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 55) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 55) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 54); *(_BYTE *)(v5 + 54) = *(_BYTE *)(v3 + 54); *(_BYTE *)(v3 + 54) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 54) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 54) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 54) ) { *(_BYTE *)(v15 + 54) = 1; *(_BYTE *)(v6 + 54) = 0; sub_4A0F60(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 55) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v15 + 54) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 54) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 54) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 54) = 1; *(_BYTE *)(v15 + 54) = 0; sub_4A0FC0(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 54) = *(_BYTE *)(v6 + 54); *(_BYTE *)(v6 + 54) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 54) = 1; sub_4A0F60(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 54) ) { *(_BYTE *)(v15 + 54) = 1; *(_BYTE *)(v6 + 54) = 0; sub_4A0FC0(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 55) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 54) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 54) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 54) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 54) = 1; *(_BYTE *)(v15 + 54) = 0; sub_4A0F60(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 54) = *(_BYTE *)(v6 + 54); *(_BYTE *)(v6 + 54) = 1; *(_BYTE *)(*(_DWORD *)v15 + 54) = 1; sub_4A0FC0(i, v6); break; } } *(_BYTE *)(v15 + 54) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 54) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (004A15E0) -------------------------------------------------------- void __stdcall sub_4A15E0(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 55); v1 = i ) { sub_4A15E0(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (004A1620) -------------------------------------------------------- int __thiscall sub_4A1620(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // di@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 55) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 55) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_4A1130(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_4A0F00(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_4A1130(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (004A1700) -------------------------------------------------------- int __thiscall sub_4A1700(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 55) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_WORD *)a3 < *(_WORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (004A1770) -------------------------------------------------------- int __thiscall sub_4A1770(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 33) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_DWORD *)a3 < *(_DWORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (004A17E0) -------------------------------------------------------- int __thiscall sub_4A17E0(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 55) ) { do { sub_4A15E0(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 55) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (004A1830) -------------------------------------------------------- int __thiscall sub_4A1830(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x38u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 54) = 0; if ( result != -12 ) { v4 = a2; *(_WORD *)(result + 12) = *(_WORD *)a2; memcpy((void *)(result + 14), (const void *)(v4 + 2), 0x28u); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004A18B0) -------------------------------------------------------- int __thiscall sub_4A18B0(int this, __int16 a2) { int v2; // esi@1 int result; // eax@2 int v4; // eax@3 char v5; // [sp+4h] [bp-4h]@3 v2 = this; if ( a2 == -1 || (v4 = *(_DWORD *)sub_4A1700(this, (int)&v5, (int)&a2), v4 == *(_DWORD *)(v2 + 4)) ) result = 0; else result = *(_DWORD *)(v4 + 50); return result; } //----- (004A18F0) -------------------------------------------------------- char __thiscall sub_4A18F0(int this, unsigned int a2, __int16 a3) { int v3; // esi@1 __int16 v4; // di@2 int v5; // eax@3 int v6; // ecx@3 int v7; // eax@4 int v8; // ecx@4 char result; // al@7 v3 = this; if ( a2 > 2 ) { result = 0; } else { v4 = a3; if ( a3 == -1 || (v5 = sub_4A1770(this, (int)&a3, (int)&a2), v6 = *(_DWORD *)v5, *(_DWORD *)v5 == *(_DWORD *)(v3 + 4)) || (v7 = *(_DWORD *)(v6 + 16), v8 = *(_DWORD *)(v6 + 20), v7 == v8) ) { LABEL_7: result = 0; } else { while ( *(_WORD *)v7 != v4 ) { v7 += 2; if ( v7 == v8 ) goto LABEL_7; } result = 1; } } return result; } //----- (004A1960) -------------------------------------------------------- int __thiscall sub_4A1960(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 55) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 55) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 55); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 55); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_4A1390((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_4A17E0(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (004A1A00) -------------------------------------------------------- int __thiscall sub_4A1A00(int this, int a2) { int v2; // esi@1 signed int v3; // edi@1 unsigned int v4; // edi@1 int v5; // eax@4 int v6; // ecx@4 int v7; // ST00_4@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@1 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; v10 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = *(_DWORD *)(a2 + 4) - *(_DWORD *)a2; *(_DWORD *)this = 0; v4 = v3 >> 1; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v4 ) { if ( v4 > 0x7FFFFFFF ) sub_65178B((int)"vector too long"); v5 = sub_478550(v4); *(_DWORD *)v2 = v5; *(_DWORD *)(v2 + 4) = v5; *(_DWORD *)(v2 + 8) = v5 + 2 * v4; v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)a2; v12 = 0; *(_DWORD *)(v2 + 4) = sub_4A1360(v7, v6, v5); } return v2; } //----- (004A1AAC) -------------------------------------------------------- void __usercall sub_4A1AAC(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004A1AC0) -------------------------------------------------------- char __thiscall sub_4A1AC0(void *this) { int v1; // ebx@1 unsigned int v2; // edi@1 int v3; // eax@3 int v4; // esi@3 __int16 v5; // di@4 int v6; // eax@6 int v7; // eax@6 char result; // al@9 __int16 v9; // [sp+Ch] [bp-BCh]@6 char v10; // [sp+Eh] [bp-BAh]@6 int v11; // [sp+38h] [bp-90h]@6 char v12; // [sp+40h] [bp-88h]@5 int v13; // [sp+44h] [bp-84h]@1 int v14; // [sp+48h] [bp-80h]@4 int v15; // [sp+4Ch] [bp-7Ch]@1 int (__thiscall **v16)(void *, char); // [sp+50h] [bp-78h]@1 int v17; // [sp+84h] [bp-44h]@1 int v18; // [sp+90h] [bp-38h]@1 int v19; // [sp+94h] [bp-34h]@1 int v20; // [sp+98h] [bp-30h]@1 int v21; // [sp+9Ch] [bp-2Ch]@1 int v22; // [sp+A0h] [bp-28h]@1 int v23; // [sp+A4h] [bp-24h]@1 int v24; // [sp+A8h] [bp-20h]@1 int v25; // [sp+ACh] [bp-1Ch]@1 int v26; // [sp+B0h] [bp-18h]@1 int v27; // [sp+B4h] [bp-14h]@1 unsigned int v28; // [sp+B8h] [bp-10h]@1 int v29; // [sp+C4h] [bp-4h]@1 int v30; // [sp+C8h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v1 = (int)this; sub_639920((int)&v16); v16 = &off_6BBC18; v2 = 0; v18 = 0; v19 = 0; v20 = 0; v21 = 0; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v29 = 0; sub_4A0D50(&v16, "../9Data/Shine/MinimonInfo.shn"); v13 = *(_DWORD *)(v17 + 40); v15 = 0; if ( v13 <= 0 ) { LABEL_12: v29 = -1; v16 = &off_6BBC18; sub_639940((int)&v16); result = 1; } else { while ( 1 ) { if ( v2 >= *(_DWORD *)(v17 + 40) || (v3 = sub_626BC0((int)&v16, v2), v4 = v3, (int *)v3 == &v18) ) { sub_639100(&unk_86DDD8, (int)"CMinimonDataBox::mmdb_Load - def data black", v2); goto LABEL_9; } v5 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v3); v14 = (unsigned __int16)v5; if ( v5 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"CMinimonDataBox::mmdb_Load - invalid itemid", v4); goto LABEL_9; } if ( *(_DWORD *)sub_4A1700(v1, (int)&v12, (int)&v14) != *(_DWORD *)(v1 + 4) ) break; v9 = v5; memcpy(&v10, (const void *)v4, 0x28u); v6 = sub_4A1830((void *)v1, (int)&v9); sub_4A1620(v1, (int)&v11, (void *)v6, 0); v7 = v15 + 1; v15 = v7; if ( v7 >= v13 ) goto LABEL_12; v2 = v7; } sub_6390B0(&unk_86DDD8, (int)"CMinimonDataBox::mmdb_Load - duplication item", v4); LABEL_9: v29 = -1; v16 = &off_6BBC18; sub_639940((int)&v16); result = 0; } return result; } // 6BBC18: using guessed type int (__thiscall *off_6BBC18)(void *, char); // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (004A1C80) -------------------------------------------------------- void __thiscall sub_4A1C80(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_4A1960(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (004A1CE0) -------------------------------------------------------- int __cdecl sub_4A1CE0(int a1, int a2, int a3) { *(_DWORD *)a1 = *(_DWORD *)a2; sub_4A1A00(a1 + 4, a3); return a1; } //----- (004A1D10) -------------------------------------------------------- int __thiscall sub_4A1D10(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-10h]@4 int v5; // [sp+10h] [bp-4h]@3 v1 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x38u); if ( !v2 ) { v5 = 0; std::exception::exception(&v5); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 54) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 55) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004A1D80) -------------------------------------------------------- int __thiscall sub_4A1D80(int this, int a2, void *a3, int a4) { int v4; // ebx@1 int v5; // ecx@1 int v6; // eax@1 int v7; // esi@1 void *v8; // edi@1 bool v9; // cl@1 int v10; // edx@2 int v11; // edx@12 int result; // eax@12 int v13; // ecx@15 int v14; // edx@18 char v15; // [sp+18h] [bp+Ch]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = v5; v8 = a3; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v6 + 33) ) { v10 = *((_DWORD *)v8 + 3); do { v7 = v6; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v6 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v6 + 12); v15 = v9; if ( v9 ) v6 = *(_DWORD *)v6; else v6 = *(_DWORD *)(v6 + 8); } while ( !*(_BYTE *)(v6 + 33) ); } a4 = v7; if ( v9 ) { if ( v7 == **(_DWORD **)(v4 + 4) ) { v11 = *(_DWORD *)sub_465FF0(v4, (int)&a4, 1, v7, v8); result = a2; *(_BYTE *)(a2 + 4) = 1; *(_DWORD *)a2 = v11; return result; } sub_5C2C10(&a4); } if ( *(_DWORD *)(a4 + 12) >= *((_DWORD *)v8 + 3) ) { if ( *((_DWORD *)v8 + 4) ) operator delete(*((void **)v8 + 4)); *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 6) = 0; operator delete(v8); result = a2; v14 = a4; *(_BYTE *)(a2 + 4) = 0; *(_DWORD *)a2 = v14; } else { v13 = *(_DWORD *)sub_465FF0(v4, (int)&a4, v15, v7, v8); result = a2; *(_DWORD *)a2 = v13; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (004A1E70) -------------------------------------------------------- char __thiscall sub_4A1E70(void *this) { int v1; // edi@1 int v2; // eax@1 int v3; // esi@3 unsigned __int16 v4; // ax@4 int v5; // eax@5 int v6; // eax@7 int v7; // eax@7 char result; // al@16 int v9; // [sp+Ch] [bp-B0h]@7 char v10; // [sp+14h] [bp-A8h]@7 void *v11; // [sp+18h] [bp-A4h]@7 int v12; // [sp+1Ch] [bp-A0h]@9 int v13; // [sp+20h] [bp-9Ch]@9 char v14; // [sp+28h] [bp-94h]@5 int v15; // [sp+2Ch] [bp-90h]@1 void *v16; // [sp+30h] [bp-8Ch]@7 int v17; // [sp+34h] [bp-88h]@7 int v18; // [sp+38h] [bp-84h]@7 int v19; // [sp+40h] [bp-7Ch]@4 int v20; // [sp+44h] [bp-78h]@1 int (__thiscall **v21)(void *, char); // [sp+48h] [bp-74h]@1 int v22; // [sp+7Ch] [bp-40h]@1 int v23; // [sp+88h] [bp-34h]@1 int v24; // [sp+8Ch] [bp-30h]@1 int v25; // [sp+90h] [bp-2Ch]@1 int v26; // [sp+94h] [bp-28h]@1 int v27; // [sp+98h] [bp-24h]@1 int v28; // [sp+9Ch] [bp-20h]@1 int v29; // [sp+A0h] [bp-1Ch]@1 int v30; // [sp+A4h] [bp-18h]@1 int v31; // [sp+A8h] [bp-14h]@1 unsigned int v32; // [sp+ACh] [bp-10h]@1 int v33; // [sp+B8h] [bp-4h]@1 int v34; // [sp+BCh] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v1 = (int)this; sub_639920((int)&v21); v21 = &off_6BBC20; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v31 = 0; v33 = 0; sub_4A0E00(&v21, "../9Data/Shine/MinimonAutoUseItem.shn"); v2 = 0; v15 = *(_DWORD *)(v22 + 40); v20 = 0; if ( v15 <= 0 ) { LABEL_18: v33 = -1; v21 = &off_6BBC20; sub_639940((int)&v21); result = 1; } else { while ( 1 ) { if ( (unsigned int)v2 >= *(_DWORD *)(v22 + 40) ) goto LABEL_15; v3 = sub_626BC0((int)&v21, v2); if ( (int *)v3 == &v23 ) { v2 = v20; LABEL_15: sub_639100(&unk_86DDD8, (int)"CMinimonAutoUseItemDataBox::mauidb_Load - def data black", v2); goto LABEL_16; } v4 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v3 + 4)); v19 = v4; if ( v4 == -1 ) break; v5 = *(_DWORD *)sub_4A1770(v1, (int)&v14, v3); if ( v5 == *(_DWORD *)(v1 + 4) ) { v16 = 0; v17 = 0; v18 = 0; LOBYTE(v33) = 1; sub_47AC30((int)&v16, (unsigned int)&v19); v6 = sub_4A1CE0((int)&v10, v3, (int)&v16); LOBYTE(v33) = 2; v7 = sub_5C4ED0((void *)v1, v6); sub_4A1D80(v1, (int)&v9, (void *)v7, 0); if ( v11 ) operator delete(v11); v11 = 0; v12 = 0; v13 = 0; LOBYTE(v33) = 0; if ( v16 ) operator delete(v16); v16 = 0; v17 = 0; v18 = 0; } else { sub_47AC30(v5 + 16, (unsigned int)&v19); } v2 = v20 + 1; v20 = v2; if ( v2 >= v15 ) goto LABEL_18; } sub_6390B0(&unk_86DDD8, (int)"CMinimonAutoUseItemDataBox::mauidb_Load - invalid itemid", v3 + 4); LABEL_16: v33 = -1; v21 = &off_6BBC20; sub_639940((int)&v21); result = 0; } return result; } // 6BBC20: using guessed type int (__thiscall *off_6BBC20)(void *, char); // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (004A20A0) -------------------------------------------------------- void __thiscall sub_4A20A0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_4AF910(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (004A2100) -------------------------------------------------------- int __thiscall sub_4A2100(void *this, unsigned int a2, int a3, int a4) { unsigned int v4; // edi@1 int v5; // esi@5 __int64 v6; // qax@5 __int64 v7; // qax@5 v4 = a2; if ( (a2 & 0x80000000u) != 0 ) v4 = a2 + 180 * (-1 - a2) / 0xB4 + 180; if ( (signed int)v4 >= 180 ) v4 %= 0xB4u; v5 = a4; v6 = a3 * *(_DWORD *)((char *)this + 8 * v4 + (_DWORD)dword_2008008); *(_DWORD *)v5 += ((WORD2(v6) & 0x3FF) + (signed int)v6) >> 10; v7 = a3 * *(_DWORD *)((char *)this + 8 * v4 + (_DWORD)dword_200800C); *(_DWORD *)(v5 + 4) += ((WORD2(v7) & 0x3FF) + (signed int)v7) >> 10; return a4; } // 2008008: using guessed type int dword_2008008[]; // 200800C: using guessed type int dword_200800C[]; //----- (004A21A0) -------------------------------------------------------- int __thiscall sub_4A21A0(int this, __int16 a2) { int result; // eax@1 *(_BYTE *)(this + 22) &= 0xFCu; *(_WORD *)this = a2; *(_WORD *)(this + 2) = -1; *(_WORD *)(this + 20) = -1; *(_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; *(_DWORD *)(this + 80) = 0; *(_BYTE *)(this + 88) &= 0xFEu; result = 0; *(_DWORD *)(this + 84) = 0; *(_WORD *)(this + 108) = 0; *(_DWORD *)(this + 92) = 0; *(_DWORD *)(this + 104) = 0; *(_DWORD *)(this + 116) = 0; *(_WORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; return result; } //----- (004A2220) -------------------------------------------------------- int __cdecl sub_4A2220(int a1, int a2) { return *(_WORD *)a1 - *(_WORD *)a2; } //----- (004A2240) -------------------------------------------------------- void *__thiscall sub_4A2240(int this, __int16 a2) { void *result; // eax@1 __int16 v3; // [sp+0h] [bp-10h]@1 unsigned int v4; // [sp+Ch] [bp-4h]@1 int v5; // [sp+10h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; v3 = a2; result = bsearch( &v3, (const void *)(this + 12804), *(_DWORD *)(this + 13404), 0xCu, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( !result ) result = &word_D73D258; return result; } // 86FEB8: using guessed type int __security_cookie; // D73D258: using guessed type __int16 word_D73D258; //----- (004A22A0) -------------------------------------------------------- char __stdcall sub_4A22A0(int a1, int a2, int a3, int a4, int a5, signed int *a6) { int v7; // ecx@9 signed int v8; // eax@13 int v9; // eax@16 signed __int64 v10; // qax@16 int v11; // edi@16 int v12; // edx@16 int v13; // ecx@17 int v14; // [sp+4h] [bp-10h]@16 int v15; // [sp+8h] [bp-Ch]@17 int v16; // [sp+Ch] [bp-8h]@16 int v17; // [sp+10h] [bp-4h]@16 int v18; // [sp+1Ch] [bp+8h]@16 if ( !a1 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Summon_RegenLoc - MiscData_Skill NULL", 0); return 0; } if ( !a3 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Summon_RegenLoc - Caster NULL", 0); return 0; } if ( !a5 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Summon_RegenLoc - pRegenLoc NULL", 0); return 0; } if ( !a6 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Summon_RegenLoc - pDirect NULL", 0); return 0; } v7 = *(_DWORD *)(a1 + 12); if ( v7 ) { if ( v7 != 1 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Summon_RegenLoc - mds_RegenLoc type default", 0); return 0; } *(_DWORD *)a5 = *(_DWORD *)a4; *(_DWORD *)(a5 + 4) = *(_DWORD *)(a4 + 4); v8 = **(_BYTE **)(a3 + 106); } else { *(_DWORD *)a5 = **(_DWORD **)(a3 + 102); *(_DWORD *)(a5 + 4) = *(_DWORD *)(*(_DWORD *)(a3 + 102) + 4); v8 = **(_BYTE **)(a3 + 106); } *a6 = v8; if ( *(_WORD *)(a1 + 120) ) { v9 = sub_576E80(v8 + a2 * 180 / *(_BYTE *)(a1 + 4)); *a6 = v9; v10 = *(_WORD *)(a1 + 120) * (signed __int64)sub_576E10(&unk_132546E8, v9) / 1024; v11 = *(_WORD *)(a1 + 120); v18 = v10; v12 = (unsigned __int64)(v11 * (signed __int64)sub_576E40(&unk_132546E8, *a6) / 1024) + *(_DWORD *)(a5 + 4); v16 = v18 + *(_DWORD *)a5; v17 = v12; if ( !sub_4BD750( (void *)a3, a5, (int)&v16, v11, (int)&v14, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) || (v13 = v15, v14 == *(_DWORD *)a5) && v15 == *(_DWORD *)(a5 + 4) ) return 0; *(_DWORD *)a5 = v14; *(_DWORD *)(a5 + 4) = v13; } return 1; } //----- (004A2470) -------------------------------------------------------- int __thiscall sub_4A2470(void *this) { void *v1; // esi@1 int result; // eax@1 void *v3; // eax@5 int v4; // ST04_4@5 int v5; // eax@5 char v6; // [sp+8h] [bp-18h]@5 int v7; // [sp+1Ch] [bp-4h]@5 v1 = this; result = *(_DWORD *)((char *)this + 32650); if ( *(_WORD *)(result + 82) != -1 ) { if ( *((_DWORD *)this + 40344) == 792 ) { *(_WORD *)(result + 82) = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 4271; *((_WORD *)v3 + 1) = *((_WORD *)this + 2); *((_WORD *)v3 + 2) = -1; *(_DWORD *)((char *)v3 + 6) = 792; sub_4287B0(&v6, &off_849C18, 10); v4 = *(_DWORD *)((char *)v1 + 102); v7 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v5, v4, 0, 0, (int)&v6, 1, 65535); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1616))(v1, 97); if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 996))(v1, 291) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1616))(v1, 291); sub_401310(&unk_877138, 291); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1616))(v1, 291); v7 = -1; result = sub_428A70(&v6); } else { result = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)this + 996))(this, *((_DWORD *)this + 40344)); if ( (_BYTE)result == 1 ) result = (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v1 + 1616))(*((_DWORD *)v1 + 40344)); } } return result; } //----- (004A25D0) -------------------------------------------------------- FILE *__thiscall sub_4A25D0(int this, __int16 a2, int a3, char a4) { int v4; // esi@1 void *v5; // eax@4 int v6; // ST04_4@5 int v7; // eax@5 FILE *result; // eax@5 int v9; // eax@8 char v10; // [sp+Ch] [bp-18h]@5 int v11; // [sp+20h] [bp-4h]@5 v4 = this; *(_WORD *)(*(_DWORD *)(this + 32650) + 82) = a2; if ( a2 == -1 ) *(_DWORD *)(this + 161376) = 792; else *(_DWORD *)(this + 161376) = a3; v5 = off_849C18; *(_WORD *)off_849C18 = 4271; *((_WORD *)v5 + 1) = *(_WORD *)(this + 4); *((_WORD *)v5 + 2) = a2; *(_DWORD *)((char *)v5 + 6) = a3; if ( a4 == 1 ) { sub_4287B0(&v10, &off_849C18, 10); v6 = *(_DWORD *)(v4 + 102); v11 = 0; v7 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v7, v6, 0, 0, (int)&v10, 1, 65535); v11 = -1; result = (FILE *)sub_428A70(&v10); } else { if ( sub_4C81E0(&off_849C18, 10) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); result = (FILE *)(*(int (__cdecl **)(int))(*(_DWORD *)v9 + 12))(v4); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 10); } } return result; } //----- (004A2710) -------------------------------------------------------- FILE *__thiscall sub_4A2710(int this, __int16 a2, int a3) { FILE *result; // eax@1 int v4; // esi@1 int v5; // [sp-8h] [bp-14h]@10 char v6; // [sp-4h] [bp-10h]@10 result = (FILE *)65535; v4 = this; if ( a2 == -1 ) { if ( *(_DWORD *)(this + 161376) == a3 ) result = sub_4A25D0(this, a2, a3, 1); } else { if ( *(_WORD *)(*(_DWORD *)(this + 32650) + 82) != -1 ) { if ( *(_DWORD *)(this + 161376) == 792 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)this + 996))(this, 97) == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1616))(v4, 97); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 996))(v4, 291) == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1616))(v4, 291); v6 = 1; v5 = 97; this = v4; } else { v6 = 1; v5 = *(_DWORD *)(this + 161376); } sub_4A25D0(this, -1, v5, v6); } result = sub_4A25D0(v4, a2, a3, 1); } return result; } //----- (004A27D0) -------------------------------------------------------- int __thiscall sub_4A27D0(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 3956))(0); } //----- (004A27E0) -------------------------------------------------------- void __thiscall sub_4A27E0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 __int16 **v4; // eax@1 __int16 v5; // di@3 int (__stdcall **v6)(int, int, int); // [sp+Ch] [bp-14h]@3 __int16 v7; // [sp+10h] [bp-10h]@3 int v8; // [sp+1Ch] [bp-4h]@3 v2 = this; *(_DWORD *)(this + 9676) = off_848CD0; v3 = *(_DWORD *)this; *(_DWORD *)(this + 8212) = dword_14D129E8 + 10 * a2; (*(void (**)(void))(v3 + 36))(); v4 = *(__int16 ***)(v2 + 8168); if ( v4 ) { if ( *v4 ) { v5 = **v4; sub_427BE0(&v6); v6 = &off_6A23AC; v7 = v5; v8 = 0; sub_4F0CF0((void *)v2); v8 = -1; v6 = &off_6A23AC; sub_427EB0(&v6); } } } // 6A23AC: using guessed type int (__stdcall *off_6A23AC)(int, int, int); // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (004A28A0) -------------------------------------------------------- void __thiscall sub_4A28A0(void *this, void *a2) { int v2; // edi@1 void *v3; // ebx@1 int v4; // esi@2 signed int v5; // eax@12 __int16 v6; // dx@15 int v7; // esi@15 signed int v8; // eax@15 bool v9; // cf@16 int v10; // eax@18 int v11; // eax@18 int v12; // ecx@18 int v13; // edx@18 int v14; // ecx@18 int v15; // edx@18 int v16; // eax@19 char v17; // cl@20 int v18; // eax@21 char v19; // cl@22 char *v20; // eax@23 char v21; // cl@24 char v22; // dl@25 char *v23; // eax@25 char v24; // cl@26 char v25; // dl@27 int v26; // esi@28 int v27; // edi@28 int v28; // eax@29 signed int v29; // eax@29 int v30; // edx@32 int v31; // eax@32 int v32; // ecx@32 int v33; // [sp-1Ch] [bp-21Ch]@2 int v34; // [sp-18h] [bp-218h]@2 int v35; // [sp-14h] [bp-214h]@2 int v36; // [sp-10h] [bp-210h]@2 int v37; // [sp-Ch] [bp-20Ch]@2 int v38; // [sp-8h] [bp-208h]@2 unsigned int v39; // [sp-4h] [bp-204h]@1 void *v40; // [sp+Ch] [bp-1F4h]@1 int *v41; // [sp+10h] [bp-1F0h]@2 int v42; // [sp+14h] [bp-1ECh]@16 int v43; // [sp+18h] [bp-1E8h]@6 int v44; // [sp+1Ch] [bp-1E4h]@15 int v45; // [sp+20h] [bp-1E0h]@13 int v46; // [sp+24h] [bp-1DCh]@15 int v47; // [sp+28h] [bp-1D8h]@1 char v48; // [sp+2Ch] [bp-1D4h]@27 char v49; // [sp+EFh] [bp-111h]@23 char v50[128]; // [sp+F0h] [bp-110h]@20 char v51[128]; // [sp+170h] [bp-90h]@22 unsigned int v52; // [sp+1F0h] [bp-10h]@1 int v53; // [sp+1FCh] [bp-4h]@27 int v54; // [sp+200h] [bp+0h]@1 v52 = (unsigned int)&v54 ^ __security_cookie; v39 = (unsigned int)&v54 ^ __security_cookie; v2 = 0; v3 = this; v40 = a2; word_D73D264 = -1; dword_D73D268 = 0; word_D73D26C = 1000; dword_D73D270 = 792; word_D73D274 = 0; v47 = 0; while ( 1 ) { v38 = v47; v41 = &v33; v37 = v2; v36 = v2; v35 = v2; v34 = v2; v33 = v2; strncpy((char *)&v33, "ExpandSkill", 0x14u); v4 = sub_6442C0(v40, v33, v34, v35, v36, v37, v38); if ( v4 == v2 ) break; if ( *(_BYTE *)v4 != *(_BYTE *)(v4 + 104) ) { v38 = *(_BYTE *)v4; sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_StateCondition : Checksum error", v38); loc_6391B0("MiscDataTable::mdt_StateCondition"); } if ( strcmp((const char *)(v4 + 34), "Stun") ) { if ( strcmp((const char *)(v4 + 34), "Slow") ) { if ( strcmp((const char *)(v4 + 34), "ACMRMinus") ) { sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_StateCondition : Invalid Condition", v4 + 34); loc_6391B0("MiscDataTable::mdt_StateCondition"); } else { v43 = 3; } } else { v43 = 2; } } else { v43 = 1; } v5 = sub_639670(&byte_878354, v4 + 69); if ( v5 == -1 || (v45 = v5, (unsigned int)v5 > 0x318) ) v45 = 792; v6 = *(_WORD *)(v4 + 102); LOWORD(v44) = *(_WORD *)(v4 + 67); v7 = v4 + 1; LOWORD(v46) = v6; v8 = sub_639670(&unk_13257C80, v7); if ( v8 == -1 ) { v16 = v7; do { v17 = *(_BYTE *)v16; *(&v50[v16] - v7) = *(_BYTE *)v16; ++v16; } while ( v17 ); v18 = v7; do { v19 = *(_BYTE *)v18; *(&v51[v18] - v7) = *(_BYTE *)v18; ++v18; } while ( v19 ); v20 = &v49; do v21 = (v20++)[1]; while ( v21 ); v22 = byte_6BBF1A; *(_WORD *)v20 = word_6BBF18; v20[2] = v22; v23 = &v50[127]; do v24 = (v23++)[1]; while ( v24 ); v25 = byte_6BBF16; *(_WORD *)v23 = word_6BBF14; v23[2] = v25; sub_461500(&v48, v50, v51); v53 = 0; sub_461540((int)&v48); if ( sub_461580((int)&v48) ) { v26 = v46; v27 = v44; do { v28 = (int)sub_461570(&v48); v29 = sub_639670(&unk_13257C80, v28); if ( v29 == -1 ) break; v9 = *((_DWORD *)v3 + 3852) < 0x64u; LOWORD(v42) = v29; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_StateConditionStore : Too many data", 0); loc_6391B0("MiscDataTable::mdt_StateConditionStore"); } v30 = v43; v31 = (int)((char *)v3 + 20 * *((_DWORD *)v3 + 3852) + 13408); *(_DWORD *)v31 = v42; v32 = v45; *(_DWORD *)(v31 + 4) = v30; *(_DWORD *)(v31 + 8) = v27; *(_DWORD *)(v31 + 12) = v32; *(_DWORD *)(v31 + 16) = v26; ++*((_DWORD *)v3 + 3852); } while ( sub_461580((int)&v48) ); } v53 = -1; nullsub_2(&v48); ++v47; v2 = 0; } else { v9 = *((_DWORD *)v3 + 3852) < 0x64u; LOWORD(v42) = v8; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_StateConditionStore : Too many data", 0); loc_6391B0("MiscDataTable::mdt_StateConditionStore"); } v10 = *((_DWORD *)v3 + 3852); ++v47; v11 = (int)((char *)v3 + 20 * v10 + 13408); v12 = v43; *(_DWORD *)v11 = v42; v13 = v44; *(_DWORD *)(v11 + 4) = v12; v14 = v45; *(_DWORD *)(v11 + 8) = v13; v15 = v46; *(_DWORD *)(v11 + 12) = v14; *(_DWORD *)(v11 + 16) = v15; ++*((_DWORD *)v3 + 3852); v2 = 0; } } qsort((char *)v3 + 13408, *((_DWORD *)v3 + 3852), 0x14u, (int (__cdecl *)(const void *, const void *))sub_4A2220); } // 6BBF14: using guessed type __int16 word_6BBF14; // 6BBF16: using guessed type char byte_6BBF16; // 6BBF18: using guessed type __int16 word_6BBF18; // 6BBF1A: using guessed type char byte_6BBF1A; // 86FEB8: using guessed type int __security_cookie; // D73D264: using guessed type __int16 word_D73D264; // D73D268: using guessed type int dword_D73D268; // D73D26C: using guessed type __int16 word_D73D26C; // D73D270: using guessed type int dword_D73D270; // D73D274: using guessed type __int16 word_D73D274; // 4A28A0: using guessed type char var_110[128]; // 4A28A0: using guessed type char var_90[128]; //----- (004A2CF0) -------------------------------------------------------- int __thiscall sub_4A2CF0(int this) { int v1; // eax@1 int v2; // edx@1 int v3; // edx@2 int v4; // eax@2 bool v5; // zf@2 int v6; // eax@2 int result; // eax@3 v1 = *(_WORD *)this; v2 = *(_DWORD *)(this + 4); if ( (unsigned __int16)v1 >= *(_WORD *)(v2 + 4) || (v3 = *(_DWORD *)(v2 + 8), v4 = 3 * v1, v5 = *(_BYTE *)(v3 + 4 * v4 + 8) == 0, v6 = v3 + 4 * v4, v5) ) result = *(_DWORD *)(this + 8); else result = *(_DWORD *)v6; return result; } //----- (004A2D20) -------------------------------------------------------- void *__thiscall sub_4A2D20(void *this) { void *result; // eax@1 byte_D73D1EE &= 0xFCu; byte_D73D230 &= 0xFEu; byte_D73D25A &= 0xF0u; result = this; word_D73D1EC = -1; dword_D73D1F0 = 0; dword_D73D1F4 = 0; dword_D73D1F8 = 0; dword_D73D1FC = 0; dword_D73D200 = 0; dword_D73D204 = 0; dword_D73D208 = 0; dword_D73D20C = 0; dword_D73D210 = 0; dword_D73D214 = 0; dword_D73D218 = 0; dword_D73D21C = 0; dword_D73D220 = 0; dword_D73D224 = 0; dword_D73D228 = 0; word_D73D244 = 0; byte_D73D1EF = 0; dword_D73D22C = 0; dword_D73D234 = 0; dword_D73D240 = 0; dword_D73D24C = 0; dword_D73D254 = 0; dword_D73D25C = 0; dword_D73D260 = 0; dword_D73D1D8 = -1; word_D73D250 = 0; word_D73D258 = -1; return result; } // D73D1D8: using guessed type int dword_D73D1D8; // D73D1EC: using guessed type __int16 word_D73D1EC; // D73D1EE: using guessed type char byte_D73D1EE; // D73D1EF: using guessed type char byte_D73D1EF; // D73D1F0: using guessed type int dword_D73D1F0; // D73D1F4: using guessed type int dword_D73D1F4; // D73D1F8: using guessed type int dword_D73D1F8; // D73D1FC: using guessed type int dword_D73D1FC; // D73D200: using guessed type int dword_D73D200; // D73D204: using guessed type int dword_D73D204; // D73D208: using guessed type int dword_D73D208; // D73D20C: using guessed type int dword_D73D20C; // D73D210: using guessed type int dword_D73D210; // D73D214: using guessed type int dword_D73D214; // D73D218: using guessed type int dword_D73D218; // D73D21C: using guessed type int dword_D73D21C; // D73D220: using guessed type int dword_D73D220; // D73D224: using guessed type int dword_D73D224; // D73D228: using guessed type int dword_D73D228; // D73D22C: using guessed type int dword_D73D22C; // D73D230: using guessed type char byte_D73D230; // D73D234: using guessed type int dword_D73D234; // D73D240: using guessed type int dword_D73D240; // D73D244: using guessed type __int16 word_D73D244; // D73D24C: using guessed type int dword_D73D24C; // D73D250: using guessed type __int16 word_D73D250; // D73D254: using guessed type int dword_D73D254; // D73D258: using guessed type __int16 word_D73D258; // D73D25A: using guessed type char byte_D73D25A; // D73D25C: using guessed type int dword_D73D25C; // D73D260: using guessed type int dword_D73D260; //----- (004A2E10) -------------------------------------------------------- int __stdcall sub_4A2E10(int a1, int a2, __int16 a3, int a4) { int v4; // edi@1 void *v5; // eax@1 int *v6; // esi@2 unsigned int v7; // esi@7 int v8; // edi@8 int v9; // eax@10 void (__thiscall *v10)(_DWORD); // edx@12 int v11; // esi@17 void *v12; // eax@17 int *v14; // [sp+18h] [bp-94h]@2 __int16 v15; // [sp+1Ch] [bp-90h]@1 unsigned int v16; // [sp+9Ch] [bp-10h]@1 int v17; // [sp+A8h] [bp-4h]@1 int v18; // [sp+ACh] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = a1; sub_4675D0((int)&unk_D020420, (int)"MiscDataTable::mdt_PostSkillBlast"); dword_7508B8[dword_750CB8] = (int)"MiscDataTable::mdt_PostSkillBlast"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v15 = a3; v5 = bsearch(&v15, &unk_D73D278, dword_D740478, 0x80u, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( v5 ) { v14 = (int *)v5; v6 = (int *)v5; } else { v6 = &dword_D73D1D8; v14 = &dword_D73D1D8; } if ( *((_WORD *)v6 + 10) != -1 ) (*(void (__thiscall **)(int, int *))(*(_DWORD *)a1 + 3752))(a1, v6); if ( *((_BYTE *)v6 + 23) ) { v7 = 0; while ( 1 ) { v8 = *((_WORD *)v14 + v7 + 12) + sub_50E7F0(dword_13231278, 13) - 1000; if ( v8 > (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) ) { if ( v7 == 10 ) { v10 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2468); goto LABEL_14; } v9 = *(_DWORD *)a2; if ( v7 == 12 ) { v10 = *(void (__thiscall **)(_DWORD))(v9 + 2464); LABEL_14: v10(a2); goto LABEL_15; } (*(void (__thiscall **)(int, unsigned int))(v9 + 2472))(a2, v7); } LABEL_15: ++v7; if ( v7 >= 0x1E ) { v4 = a1; break; } } } v11 = *(_DWORD *)v4; v12 = sub_447910((int)&unk_132577A0, a3); (*(void (__thiscall **)(int, int, void *))(v11 + 3884))(v4, a2, v12); --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_PostSkillBlast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D73D1D8: using guessed type int dword_D73D1D8; // 13231278: using guessed type int dword_13231278[]; //----- (004A2FE0) -------------------------------------------------------- int __thiscall sub_4A2FE0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@3 int v5; // eax@3 int v6; // eax@3 void *v7; // eax@6 int v9; // [sp-4h] [bp-20h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_serv_SetMaster"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_serv_SetMaster"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = *(_DWORD *)v3; *((_DWORD *)v3 + 2417) = a2; v5 = (*(int (**)(void))(*(_DWORD *)a2 + 2088))(); (*(void (__thiscall **)(void *, int))(v4 + 2304))(v3, v5); v6 = *(_DWORD *)(a3 + 8); *((_DWORD *)v3 + 2420) = v6; switch ( v6 ) { case 0: *((_DWORD *)v3 + 2255) = off_8492D8; break; case 1: if ( *((_DWORD *)v3 + 2418) ) { v7 = (void *)sub_4B7F90((int)((char *)v3 + 8940), *((_DWORD *)v3 + 2418)); goto LABEL_9; } break; case 2: v7 = sub_4B87F0((char *)v3 + 8888); goto LABEL_9; case 3: v7 = sub_43C0E0(off_8492D4, (int)((char *)v3 + 9520)); LABEL_9: *((_DWORD *)v3 + 2255) = v7; break; default: break; } --dword_750CB8; v9 = (int)"ShineObjectClass::ShineServant::so_serv_SetMaster"; } else { --dword_750CB8; v9 = (int)"ShineObjectClass::ShineServant::so_serv_SetMaster"; } return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492D4: using guessed type int (__stdcall *(*off_8492D4[3])[2])(int); // 8492D8: using guessed type int (__stdcall *(*off_8492D8[2])[2])(int); //----- (004A3120) -------------------------------------------------------- void *__thiscall sub_4A3120(void *this, int a2) { void *v2; // esi@1 signed int v3; // edi@1 size_t v4; // ST08_4@3 size_t v5; // ST08_4@7 void *v6; // esi@7 __int16 v8; // [sp+14h] [bp-90h]@3 unsigned int v9; // [sp+94h] [bp-10h]@1 int v10; // [sp+A0h] [bp-4h]@1 int v11; // [sp+A4h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"MiscDataTable::mdt_SkillBufferAlloc"); dword_7508B8[dword_750CB8] = (int)"MiscDataTable::mdt_SkillBufferAlloc"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_639620(&unk_13257C80, (unsigned __int8 *)a2); if ( v3 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBufferAlloc : Imvalid skill name", a2); loc_6391B0("MiscDataTable::mdt_SkillBufferAlloc"); } v4 = *((_DWORD *)v2 + 3200); v8 = v3; if ( !bsearch(&v8, v2, v4, 0x80u, (int (__cdecl *)(const void *, const void *))sub_4A2220) ) { if ( *((_DWORD *)v2 + 3200) >= 0x64u ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBufferAlloc : Too many Data", 0); loc_6391B0("MiscDataTable::mdt_SkillBufferAlloc"); } sub_4A21A0((int)((char *)v2 + 128 * (*((_DWORD *)v2 + 3200))++), v3); qsort(v2, *((_DWORD *)v2 + 3200), 0x80u, (int (__cdecl *)(const void *, const void *))sub_4A2220); } v5 = *((_DWORD *)v2 + 3200); v8 = v3; v6 = bsearch(&v8, v2, v5, 0x80u, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( v6 == 0 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBufferAlloc : skillarray error", 0); loc_6391B0("MiscDataTable::mdt_SkillBufferAlloc"); } --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_SkillBufferAlloc"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004A32E0) -------------------------------------------------------- void *__thiscall sub_4A32E0(void *this, int a2) { void *v2; // esi@1 signed int v3; // edi@1 size_t v4; // ST08_4@3 int v5; // edx@6 int v6; // eax@6 size_t v7; // ST08_4@7 void *v8; // esi@7 __int16 v10; // [sp+14h] [bp-1Ch]@3 unsigned int v11; // [sp+20h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-4h]@1 int v13; // [sp+30h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"MiscDataTable::mdt_AbStateBufferAlloc"); dword_7508B8[dword_750CB8] = (int)"MiscDataTable::mdt_AbStateBufferAlloc"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v3 = sub_639620(&unk_877F50, (unsigned __int8 *)a2); if ( v3 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateBufferAlloc : Imvalid skill name", a2); loc_6391B0("MiscDataTable::mdt_AbStateBufferAlloc"); } v4 = *((_DWORD *)v2 + 3351); v10 = v3; if ( !bsearch(&v10, (char *)v2 + 12804, v4, 0xCu, (int (__cdecl *)(const void *, const void *))sub_4A2220) ) { if ( *((_DWORD *)v2 + 3351) >= 0x32u ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateBufferAlloc : Too many Data", 0); loc_6391B0("MiscDataTable::mdt_AbStateBufferAlloc"); } v5 = 3 * *((_DWORD *)v2 + 3351) + 3201; *((_BYTE *)v2 + 4 * v5 + 2) &= 0xF0u; v6 = (int)((char *)v2 + 4 * v5); *(_WORD *)v6 = v3; *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)(v6 + 8) = 0; ++*((_DWORD *)v2 + 3351); qsort((char *)v2 + 12804, *((_DWORD *)v2 + 3351), 0xCu, (int (__cdecl *)(const void *, const void *))sub_4A2220); } v7 = *((_DWORD *)v2 + 3351); v10 = v3; v8 = bsearch(&v10, (char *)v2 + 12804, v7, 0xCu, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( v8 == 0 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateBufferAlloc : skillarray error", 0); loc_6391B0("MiscDataTable::mdt_AbStateBufferAlloc"); } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_AbStateBufferAlloc"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004A34A0) -------------------------------------------------------- int __stdcall sub_4A34A0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Vanish"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionBase::meb_Vanish"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 3956))(a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Vanish"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3550) -------------------------------------------------------- char __thiscall sub_4A3550(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Run"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Run"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 28); if ( v4 && *(_BYTE *)(v4 + 2) & 1 ) *((_DWORD *)v3 + 8) = dword_14D129E8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Run"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A35C0) -------------------------------------------------------- char __thiscall sub_4A35C0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Walk"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Walk"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 28); if ( v4 && *(_BYTE *)(v4 + 2) & 2 ) *((_DWORD *)v3 + 8) = dword_14D129E8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Walk"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A3630) -------------------------------------------------------- char __thiscall sub_4A3630(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Attack"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Attack"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 28); if ( v4 && *(_BYTE *)(v4 + 2) & 4 ) *((_DWORD *)v3 + 8) = dword_14D129E8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Attack"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A36A0) -------------------------------------------------------- char __thiscall sub_4A36A0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Attacked"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Attacked"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 28); if ( v4 && *(_BYTE *)(v4 + 2) & 8 ) *((_DWORD *)v3 + 8) = dword_14D129E8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_Attacked"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A3710) -------------------------------------------------------- char __thiscall sub_4A3710(void *this, int a2) { void *v2; // esi@1 signed int v3; // ecx@1 int v4; // eax@1 int v5; // eax@2 void *v6; // eax@4 void *v8; // eax@8 int v9; // eax@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"; dword_750AB8[dword_750CB8] = -1; v3 = 1; ++dword_750CB8; v4 = *((_DWORD *)v2 + 28); if ( !v4 || (v5 = *(_DWORD *)(v4 + 4)) == 0 || v5 != 1 ) goto LABEL_6; v6 = (void *)(**(int (__stdcall ***)(_DWORD))a2)(10); if ( !v6 ) { v3 = 1; LABEL_6: dword_750CB8 -= v3; goto LABEL_7; } v8 = sub_5CF620(v6); v9 = sub_418CB0((int)&dword_14D20890, *((_WORD *)v8 + 4)); if ( v9 ) { if ( *(_DWORD *)(*((_DWORD *)v2 + 28) + 8) == 1 && *(_DWORD *)(*(_DWORD *)v9 + 102) != 7 ) *((_DWORD *)v2 + 8) = dword_14D129E8; --dword_750CB8; } else { *((_DWORD *)v2 + 8) = dword_14D129E8; --dword_750CB8; } LABEL_7: sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; //----- (004A3830) -------------------------------------------------------- int __thiscall sub_4A3830(void *this) { int v1; // esi@1 int v2; // ecx@6 int v3; // eax@7 signed int v4; // ebx@7 int v5; // edi@9 void *v6; // edi@14 int v7; // eax@16 int v9; // [sp-4h] [bp-2Ch]@2 int v10; // [sp+14h] [bp-14h]@6 int v11; // [sp+18h] [bp-10h]@8 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Volley"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Volley"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v1 + 122) ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1360))(v1) != -1 && *(_DWORD *)(v1 + 155356) && (v2 = sub_42A940(v1 + 32792), (v10 = v2) != 0) ) { v3 = *(_DWORD *)(v1 + 155356); v4 = 0; if ( *(_BYTE *)v3 ) { v11 = 0; do { v5 = *(_DWORD *)(v11 + v3 + 36); if ( v5 && (unsigned int)sub_402710(v1, *(_DWORD *)(v11 + v3 + 36)) < 0xF4240 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 2456))(v5, v10); v3 = *(_DWORD *)(v1 + 155356); v11 += 36; ++v4; } while ( v4 < *(_BYTE *)v3 ); v2 = v10; } sub_578350((void *)v1, *(_DWORD *)(v1 + 7664), *(_DWORD *)(v2 + 102)); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 3904))(v1); v6 = off_849C18; *(_WORD *)off_849C18 = 9294; *((_WORD *)v6 + 1) = **(_WORD **)(*(_DWORD *)(v1 + 7664) + 4); *((_WORD *)v6 + 2) = *(_WORD *)(v10 + 4); *((_WORD *)v6 + 3) = sub_434770((int)&dword_87B264); if ( sub_4C81E0(&off_849C18, 8) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Packet Too Long", 8); } v9 = (int)"ShineObjectClass::ShinePlayer::so_ply_Volley"; } else { v9 = (int)"ShineObjectClass::ShinePlayer::so_ply_Volley"; } --dword_750CB8; } else { --dword_750CB8; v9 = (int)"ShineObjectClass::ShinePlayer::so_ply_Volley"; } return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3A10) -------------------------------------------------------- int __thiscall sub_4A3A10(void *this, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // eax@5 void *v5; // ebx@10 signed __int16 v6; // ax@10 int v7; // eax@14 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_TargetChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_TargetChange"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || sub_42A940(v2 + 32792) != a2 && ((v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2)) == 0 || (v4 = *(_DWORD *)(*(_DWORD *)v3 + 99), v4 != 12) && v4 != 13 && v4 != 24 && v4 != 27 && v4 != 29) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 9293; v6 = -1; if ( a2 ) v6 = *(_WORD *)(a2 + 4); *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 4) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_TargetChange : Packet Too Long", 4); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3792))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3788))(v2); sub_566EF0((void *)(v2 + 7644)); if ( a2 ) sub_42FE90(v2 + 32792, *((_WORD *)v5 + 1), a2, v2); else sub_42A930(v2 + 32792); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_TargetChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3BB0) -------------------------------------------------------- char __thiscall sub_4A3BB0(void *this, void *a2, int a3) { void *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_4A3710(a2, *((_DWORD *)v3 + 1)); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3C60) -------------------------------------------------------- int __thiscall sub_4A3C60(void *this) { void *v1; // esi@1 int (__thiscall *v2)(_DWORD); // edx@1 int v3; // eax@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-18h]@1 char *v6; // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v1 = this; v7 = (int)"ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; v5 = &off_6BC438; v6 = (char *)v1 + 32816; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1324); LOBYTE(v8) = 1; v3 = v2(v1); sub_43C470(v3 + 3364, (int)&v5); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"); } // 6BC438: using guessed type int (__stdcall *off_6BC438)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3D30) -------------------------------------------------------- char __thiscall sub_4A3D30(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListAggroAdjust::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListAggroAdjust::ali_Work"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 2448))(a2, *((_DWORD *)v4 + 1)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListAggroAdjust::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3DE0) -------------------------------------------------------- int __thiscall sub_4A3DE0(void *this, int a2, _UNKNOWN *a3) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 int (__stdcall **v7)(int, int, int); // [sp+8h] [bp-18h]@1 int v8; // [sp+Ch] [bp-14h]@1 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 v3 = this; v9 = (int)"ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; sub_427BE0(&v7); v7 = &off_6BBEB0; v8 = a2; v4 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v10) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v5, v4, a3, 0, (int)&v7, 0, 65535); LOBYTE(v10) = 0; v7 = &off_6BBEB0; sub_427EB0(&v7); --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"); } // 6BBEB0: using guessed type int (__stdcall *off_6BBEB0)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3ED0) -------------------------------------------------------- int __thiscall sub_4A3ED0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_AggroAdjust"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_AggroAdjust"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__cdecl **)(_DWORD, _DWORD))(**((_DWORD **)v3 + 2211) + 52))(a2, a3); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 40))(v4, v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_AggroAdjust"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A3F90) -------------------------------------------------------- int __thiscall sub_4A3F90(void *this) { void *v1; // esi@1 bool v2; // zf@1 void (__thiscall *v3)(_DWORD, _DWORD); // eax@1 void *v4; // ecx@1 int v6; // [sp+0h] [bp-18h]@0 signed int v7; // [sp+0h] [bp-18h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__stdcall **)(int))(**((_DWORD **)v1 + 1029) + 72))(v6) == 11; v3 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 2472); v7 = 12; v4 = v1; if ( v2 ) { v3(v1, 12); v3 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 2472); v7 = 10; v4 = v1; } v3(v4, v7); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 3788))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 3792))(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4070) -------------------------------------------------------- int __thiscall sub_4A4070(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (**)(void))(**((_DWORD **)v1 + 1029) + 72))() == 6 || (*(int (**)(void))(**((_DWORD **)v1 + 1029) + 72))() == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 2472))(v1, 10); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4140) -------------------------------------------------------- int __thiscall sub_4A4140(void *this, int a2) { void *v2; // esi@1 int (__thiscall *v3)(_DWORD, _DWORD, _DWORD); // eax@1 void *v4; // eax@2 void *v5; // ebx@2 int v6; // ST0C_4@5 int v7; // eax@5 int (__thiscall *v8)(_DWORD); // eax@5 int v9; // eax@5 int v11; // eax@9 int v12; // edx@9 int v13; // eax@9 void *v14; // edi@9 int v15; // eax@9 __int16 v16; // ax@9 __int16 v17; // cx@9 void *v18; // eax@9 int v19; // eax@11 int v20; // eax@12 int v21; // edx@12 int v22; // edi@12 int v23; // eax@12 __int16 v24; // ax@12 int v25; // eax@12 int v26; // edi@12 int v27; // edx@12 int v28; // eax@12 __int16 v29; // ax@12 int v30; // eax@12 int v31; // edi@12 int v32; // ST0C_4@12 int v33; // ST08_4@12 void *v34; // eax@12 int v35; // eax@12 __int16 v36; // ax@12 int v37; // eax@12 int v38; // edi@12 int v39; // edx@12 int v40; // eax@12 __int16 v41; // ax@12 int v42; // eax@12 char v43; // [sp+10h] [bp-3Ch]@5 char v44; // [sp+20h] [bp-2Ch]@5 int v45; // [sp+2Ch] [bp-20h]@1 int v46; // [sp+30h] [bp-1Ch]@9 int v47; // [sp+34h] [bp-18h]@12 int v48; // [sp+38h] [bp-14h]@9 void *v49; // [sp+3Ch] [bp-10h]@9 int v50; // [sp+48h] [bp-4h]@1 v2 = this; v45 = (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v2 + 14672) + 12); v50 = 0; if ( (unsigned __int8)v3((char *)v2 + 58688, 8, a2) || (v4 = (void *)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, a2), (v5 = v4) == 0) || !sub_5CF620(v4) || *((_WORD *)sub_5CF620(v5) + 4) == -1 ) goto LABEL_7; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1176))(v2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1148))(v2); sub_43BB20((int)&v43, v7 + 3668, v6); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); LOBYTE(v50) = 1; v9 = v8(v2); sub_43BC00((int)&v44, 9, (int)&v43, v9); LOBYTE(v50) = 2; if ( !sub_486D40(&v44) ) { LOBYTE(v50) = 1; nullsub_2(&v44); LOBYTE(v50) = 0; sub_43BB10(&v43); LABEL_7: v50 = -1; goto LABEL_8; } v11 = sub_43BC30(&v44); v12 = *((_DWORD *)v2 + 9121); v49 = (void *)v11; v13 = (*(int (__thiscall **)(char *, int))v12)((char *)v2 + 36484, v11); v14 = off_849C18; *(_WORD *)off_849C18 = 13439; *((_WORD *)v14 + 1) = *((_WORD *)v2 + 2); v46 = v13; *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v16 = sub_4802C0(v15); v17 = (unsigned __int16)v49 & 0x3FF; *((_WORD *)v14 + 9) = v16; *((_WORD *)v14 + 8) = v17 | 0x2400; v48 = (int)((char *)v14 + 16); v18 = sub_5CF620(v5); *((_DWORD *)v14 + 2) = *(_DWORD *)v18; *((_DWORD *)v14 + 3) = *((_DWORD *)v18 + 1); v14 = (char *)v14 + 20; *(_WORD *)v14 = a2 & 0x3FF | 0x2000; v49 = v14; if ( sub_4C81E0(&off_849C18, 22) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip : Packet Too Long", 22); } v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v21 = *(_DWORD *)v2; v22 = *(_DWORD *)v20; v47 = v20; v23 = (*(int (__thiscall **)(void *, int, void *))(v21 + 2004))(v2, a2, v5); v24 = sub_4802C0(v23); (*(void (__thiscall **)(int, _DWORD))(v22 + 84))(v47, (unsigned __int16)v24); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v26 = *(_DWORD *)v25; v27 = *(_DWORD *)v2; v47 = v25; v28 = (*(int (__thiscall **)(void *, void *, void *, int))(v27 + 2004))(v2, v5, v49, v48); v29 = sub_4802C0(v28); (*(void (__thiscall **)(int, _DWORD))(v26 + 48))(v47, (unsigned __int16)v29); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v31 = *(_DWORD *)v30; v47 = v30; v32 = (int)v49; v33 = v48; v34 = sub_5CF620(v5); v35 = (*(int (__thiscall **)(void *, int, void *, int, int))(*(_DWORD *)v2 + 2004))(v2, v46, v34, v33, v32); v36 = sub_4802C0(v35); (*(void (__thiscall **)(int, _DWORD))(v31 + 64))(v47, (unsigned __int16)v36); v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v38 = *(_DWORD *)v37; v39 = *(_DWORD *)v2; v46 = v37; v40 = (*(int (__thiscall **)(void *, int, void *, signed int, _DWORD))(v39 + 2004))(v2, a2, v5, -1, 0); v41 = sub_4802C0(v40); (*(void (__thiscall **)(int, _DWORD))(v38 + 80))(v46, (unsigned __int16)v41); v42 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); sub_43BBF0(v42); LOBYTE(v50) = 1; nullsub_2(&v44); LOBYTE(v50) = 0; sub_43BB10(&v43); v50 = -1; LABEL_8: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (004A44A0) -------------------------------------------------------- int __stdcall sub_4A44A0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1480))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 860))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 872))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1928))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2460))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4610) -------------------------------------------------------- int __stdcall sub_4A4610(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4700) -------------------------------------------------------- signed int __thiscall sub_4A4700(void *this, int a2) { int v2; // esi@1 bool v3; // zf@1 int v4; // edi@2 int (__stdcall *v5)(_DWORD); // edx@4 int v7; // eax@7 int v8; // edi@7 int v9; // [sp+0h] [bp-4Ch]@0 int v10; // [sp+4h] [bp-48h]@0 int v11; // [sp+8h] [bp-44h]@0 int v12; // [sp+Ch] [bp-40h]@0 char v13; // [sp+10h] [bp-3Ch]@4 int v14; // [sp+14h] [bp-38h]@7 int v15; // [sp+18h] [bp-34h]@7 int v16; // [sp+1Ch] [bp-30h]@7 int v17; // [sp+20h] [bp-2Ch]@7 int v18; // [sp+24h] [bp-28h]@7 int v19; // [sp+28h] [bp-24h]@7 int v20; // [sp+2Ch] [bp-20h]@7 int v21; // [sp+30h] [bp-1Ch]@7 int v22; // [sp+34h] [bp-18h]@7 int v23; // [sp+38h] [bp-14h]@7 int v24; // [sp+3Ch] [bp-10h]@1 int v25; // [sp+48h] [bp-4h]@1 v2 = (int)this; v24 = (int)"ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(_BYTE *)(v2 + 7888) & 0x10) == 0; v25 = 0; if ( v3 || (v4 = *(_DWORD *)(v2 + 7664)) == 0 || !*(_DWORD *)(v4 + 112) ) goto LABEL_6; sub_42A950((int)&v13, v2, a2, v4, v2 + 7684, *(_DWORD *)(v2 + 102)); v5 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 32); LOBYTE(v25) = 1; if ( !(unsigned __int8)v5(&v13) ) { LOBYTE(v25) = 0; nullsub_2(&v13); LABEL_6: --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"); return -1; } v7 = (*(int (__stdcall **)(char *, int, int, int, int, _DWORD, int, int, int, int, int, int, int, int, int, int))(**(_DWORD **)(v4 + 112) + 28))( &v13, v9, v10, v11, v12, *(_DWORD *)&v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23); *(_BYTE *)(v2 + 7888) &= 0xEFu; v8 = v7; *(_DWORD *)(v2 + 7644) = 0; LOBYTE(v25) = 0; nullsub_2(&v13); --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4850) -------------------------------------------------------- signed int __userpurge sub_4A4850(int a1, double a2, int a3) { int v3; // esi@1 signed int v4; // ebx@1 int v6; // eax@4 int (__stdcall *v7)(_DWORD); // edx@5 int v8; // edi@5 char v9; // [sp+10h] [bp-44h]@5 double v10; // [sp+3Ch] [bp-18h]@5 int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 signed int v13; // [sp+5Ch] [bp+8h]@5 v3 = a1; v11 = (int)"ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v4 = sub_4A4700((void *)v3, a3); if ( v4 >= 0 ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage"); return v4; } if ( unknown_libname_2(v3 + 82024) || (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3), !sub_575420(v3 + 82024, v6)) ) goto LABEL_7; (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1416))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 1416))(a3); sub_42A950((int)&v9, v3, a3, 0, 0, *(_DWORD *)(v3 + 102)); v7 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 7884) + 28); LOBYTE(v12) = 1; v8 = v7(&v9); (*(void (__stdcall **)(char *))(**(_DWORD **)(v3 + 7884) + 24))(&v9); v10 = a2; v13 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( (double)v13 > v10 ) { LOBYTE(v12) = 0; nullsub_2(&v9); LABEL_7: --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage"); return -1; } sub_5754D0(v3 + 82024); if ( v8 <= 0 ) v8 = 1; LOBYTE(v12) = 0; nullsub_2(&v9); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage"); return v8; } // 573D10: using guessed type int __thiscall unknown_libname_2(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4A40) -------------------------------------------------------- signed int __thiscall sub_4A4A40(void *this, int a2) { int v2; // esi@1 signed int v3; // ebx@1 signed int result; // eax@2 int (__stdcall *v5)(_DWORD); // edx@4 int v6; // eax@4 signed int v7; // edi@4 void (__thiscall *v8)(_DWORD); // edx@4 char v9; // [sp+10h] [bp-3Ch]@4 int v10; // [sp+3Ch] [bp-10h]@1 int v11; // [sp+48h] [bp-4h]@1 v2 = (int)this; v10 = (int)"ShineObjectClass::ShineMob::so_smo_CrossCounterDamage"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_smo_CrossCounterDamage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_smo_CrossCounterDamage"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v3 = sub_4A4700((void *)v2, a2); if ( v3 < 0 ) { if ( *(_BYTE *)(v2 + 9476) & 4 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1416))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1416))(a2); sub_42A950((int)&v9, v2, a2, 0, 0, *(_DWORD *)(v2 + 102)); v5 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 7884) + 28); LOBYTE(v11) = 1; v6 = v5(&v9); *(_BYTE *)(v2 + 9476) &= 0xFBu; v7 = v6; v8 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3792); *(_DWORD *)(v2 + 9020) = off_8492CC; v8(v2); if ( v7 <= 0 ) v7 = 1; LOBYTE(v11) = 0; nullsub_2(&v9); --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_smo_CrossCounterDamage"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_smo_CrossCounterDamage"); result = -1; } } else { --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_smo_CrossCounterDamage"); result = v3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (004A4BD0) -------------------------------------------------------- int __thiscall sub_4A4BD0(void *this, int a2) { void *v2; // esi@1 signed __int16 v3; // di@2 int v4; // eax@2 int v5; // eax@5 void *v6; // eax@8 int v7; // ST10_4@8 int v8; // eax@8 char v10; // [sp+10h] [bp-1Ch]@8 int v11; // [sp+1Ch] [bp-10h]@1 int v12; // [sp+28h] [bp-4h]@1 v2 = this; v11 = (int)"ShineObjectClass::ShinePlayer::smo_ply_Polymorph"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_Polymorph"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_Polymorph"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( a2 ) { v3 = *(_WORD *)(a2 + 20); v4 = sub_401310(&unk_877138, 291); (*(void (__thiscall **)(void *, void *, signed int, signed int, int, int, _DWORD, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, 291, 1, v4, dword_14D129E8, 0, 0, 1000000000, 9, 0); } else { v3 = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 996))(v2, 291) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1616))(v2, 291); } v5 = *(_DWORD *)((char *)v2 + 32650); if ( *(_WORD *)(v5 + 82) == -1 || *((_DWORD *)v2 + 40344) == 792 ) { *(_WORD *)(v5 + 82) = v3; v6 = off_849C18; *(_WORD *)off_849C18 = 4271; *((_WORD *)v6 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v6 + 2) = v3; *(_DWORD *)((char *)v6 + 6) = 792; sub_4287B0(&v10, &off_849C18, 10); v7 = *(_DWORD *)((char *)v2 + 102); LOBYTE(v12) = 1; v8 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v8, v7, 0, 0, (int)&v10, 1, 65535); LOBYTE(v12) = 0; sub_428A70(&v10); --dword_750CB8; } else { --dword_750CB8; } v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_Polymorph"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A4D70) -------------------------------------------------------- int __thiscall sub_4A4D70(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 void *v6; // eax@4 __int16 v7; // dx@4 int v8; // ST04_4@4 int v9; // eax@4 char v11; // [sp+8h] [bp-1Ch]@4 int v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [bp-4h]@1 v4 = this; v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v4 + 40344); v13 = 0; if ( v5 == 792 ) { *(_WORD *)(*(_DWORD *)((char *)v4 + 32650) + 82) = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 4271; v7 = *((_WORD *)v4 + 2); *((_WORD *)v6 + 2) = -1; *((_WORD *)v6 + 1) = v7; *(_DWORD *)((char *)v6 + 6) = 792; sub_4287B0(&v11, &off_849C18, 10); v8 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v13) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v9, v8, 0, 0, (int)&v11, 1, 65535); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1616))(v4, 97); if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 996))(v4, 291) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1616))(v4, 291); sub_401310(&unk_877138, 291); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1616))(v4, 291); LOBYTE(v13) = 0; sub_428A70(&v11); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 996))(v4, v5) == 1 ) sub_42AA20(v4, *((_DWORD *)v4 + 40344), 7282); } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4F10) -------------------------------------------------------- char __stdcall sub_4A4F10(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A4F60) -------------------------------------------------------- char __thiscall sub_4A4F60(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 char result; // al@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3672))(v2, a2); --dword_750CB8; if ( v3 == 1 ) { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"); result = 0; } else { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A5030) -------------------------------------------------------- char __thiscall sub_4A5030(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@2 char v5; // al@3 char v6; // bl@3 int v7; // [sp+0h] [bp-1Ch]@0 int v8; // [sp+4h] [bp-18h]@0 int v9; // [sp+8h] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 2417); if ( v3 ) { v5 = (*(int (__stdcall **)(int, _DWORD, int, int, int, _DWORD))(*(_DWORD *)a2 + 2432))( v3, "ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer", v7, v8, v9, "ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer"); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A5120) -------------------------------------------------------- char __stdcall sub_4A5120(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_mob_CanBeAttackedByPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::so_mob_CanBeAttackedByPlayer"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_mob_CanBeAttackedByPlayer"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A5170) -------------------------------------------------------- int __stdcall sub_4A5170(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SoulManage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SoulManage"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SoulManage"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A51C0) -------------------------------------------------------- int __thiscall sub_4A51C0(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // bl@3 void *v5; // eax@14 int v6; // ecx@14 signed __int16 v7; // cx@15 int v8; // eax@19 int v10; // [sp-4h] [bp-24h]@20 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_SoulManage"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_SoulManage"; dword_750AB8[dword_750CB8++] = -1; if ( !a3 || !*(_DWORD *)a3 ) { --dword_750CB8; v10 = (int)"ShineObjectClass::ShinePlayer::smo_SoulManage"; return sub_467660((int)&unk_D020420, v10); } v4 = 0; if ( *(_BYTE *)(*(_DWORD *)(a3 + 4) + 668) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 996))(v3, 394) ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 1616))(v3, 394); } else { *((_DWORD *)v3 + 40297) = 0; *((_BYTE *)v3 + 161192) = 0; *((_DWORD *)v3 + 40299) = 0; v4 = 1; } } if ( *(_BYTE *)(*(_DWORD *)a3 + 77) ) { if ( a2 != *((_DWORD *)v3 + 40297) ) { *((_DWORD *)v3 + 40297) = a2; *((_BYTE *)v3 + 161192) = 0; *((_DWORD *)v3 + 40299) = 0; } *((_BYTE *)v3 + 161192) += *(_BYTE *)(*(_DWORD *)a3 + 77); if ( *((_BYTE *)v3 + 161192) > 7u ) *((_BYTE *)v3 + 161192) = 7; *((_DWORD *)v3 + 40299) = dword_14D129E8 + 3000; goto LABEL_14; } if ( v4 ) { LABEL_14: v5 = off_849C18; *(_WORD *)off_849C18 = 9299; v6 = *((_DWORD *)v3 + 40297); if ( v6 ) v7 = *(_WORD *)(v6 + 4); else v7 = -1; *((_WORD *)v5 + 1) = v7; *((_BYTE *)v5 + 4) = *((_BYTE *)v3 + 161192); if ( sub_4C81E0(&off_849C18, 5) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_SoulManage : Packet Too Long", 5); } } --dword_750CB8; v10 = (int)"ShineObjectClass::ShinePlayer::smo_SoulManage"; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A5390) -------------------------------------------------------- int __stdcall sub_4A5390(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_HowMachSoul"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_HowMachSoul"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a2 = 0; *(_BYTE *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_HowMachSoul"); return a2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A5400) -------------------------------------------------------- int __thiscall sub_4A5400(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // ecx@1 int v6; // esi@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_HowMachSoul"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_HowMachSoul"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; if ( a2 && *(_DWORD *)a2 && *(_BYTE *)(*(_DWORD *)(a2 + 4) + 668) && a4 == *((_DWORD *)v4 + 40297) ) { v6 = a3; *(_DWORD *)a3 = *((_DWORD *)v4 + 40297); *(_DWORD *)(a3 + 4) = *((_DWORD *)v4 + 40298); v5 = *((_DWORD *)v4 + 40299); } else { v6 = a3; *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 0; } *(_DWORD *)(v6 + 8) = v5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_HowMachSoul"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A54B0) -------------------------------------------------------- int __thiscall sub_4A54B0(void *this, int a2) { void *v2; // ebx@1 signed int v3; // edi@1 int v4; // eax@2 int v5; // eax@3 size_t v6; // ST1C_4@6 void *v7; // ebx@6 int v8; // edi@9 int v9; // eax@11 __int16 v11; // [sp+10h] [bp-24h]@6 unsigned int v12; // [sp+24h] [bp-10h]@1 int v13; // [sp+30h] [bp-4h]@1 int v14; // [sp+34h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"MiscDataTable::mdt_ArgumentLoad"); dword_7508B8[dword_750CB8] = (int)"MiscDataTable::mdt_ArgumentLoad"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( a2 && (v4 = *(_DWORD *)(a2 + 8)) != 0 && (v5 = *(_DWORD *)(v4 + 4)) != 0 && *(_DWORD *)a2 && *(_DWORD *)(a2 + 4) ) { v6 = *((_DWORD *)v2 + 3852); v11 = *(_WORD *)v5; v7 = bsearch(&v11, (char *)v2 + 13408, v6, 0x14u, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( v7 ) { if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 4) + 2660))(*((_DWORD *)v7 + 1)) ) { *(_DWORD *)(a2 + 28) = *((_WORD *)v7 + 4); *(_DWORD *)(a2 + 32) = *((_WORD *)v7 + 8); if ( *((_DWORD *)v7 + 3) < 792 ) { v8 = sub_401310(&unk_877138, *((_DWORD *)v7 + 3)); if ( v8 ) { if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(**(_DWORD **)(a2 + 4) + 1592))( *(_DWORD *)a2, *((_DWORD *)v7 + 3), 1, v8, dword_14D129E8, 0, -1, 0, 6, 0) ) { sub_401900(*(void **)(a2 + 4), *(_DWORD *)(*(_DWORD *)v8 + 34)); v9 = *(_DWORD *)(v8 + 48); if ( v9 ) { (*(void (__stdcall **)(_DWORD, _DWORD, signed int))(**(_DWORD **)(a2 + 4) + 1008))( *(_DWORD *)(*(_DWORD *)v8 + 34), *(_DWORD *)(v9 + 43), 1); sub_4055D0( *(void **)(a2 + 4), *(_DWORD *)(*(_DWORD *)v8 + 34), *(_DWORD *)(*(_DWORD *)(v8 + 48) + 43), 1); } } } v3 = -1; } } } --dword_750CB8; } else { --dword_750CB8; } v13 = v3; return sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_ArgumentLoad"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A5680) -------------------------------------------------------- char __stdcall sub_4A5680(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A56D0) -------------------------------------------------------- int __cdecl sub_4A56D0() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_smo_RangeEvation"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_smo_RangeEvation"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_smo_RangeEvation"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A5720) -------------------------------------------------------- int __thiscall sub_4A5720(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 3698); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A5780) -------------------------------------------------------- int __thiscall sub_4A5780(void *this, void *a2) { int v2; // esi@1 int v3; // ebx@1 int result; // eax@2 int v5; // edi@2 unsigned __int8 v6; // al@3 void *v7; // esi@5 signed int v8; // eax@5 int v9; // [sp-18h] [bp-2Ch]@2 int v10; // [sp-14h] [bp-28h]@2 int v11; // [sp-10h] [bp-24h]@2 int v12; // [sp-Ch] [bp-20h]@2 int v13; // [sp-8h] [bp-1Ch]@2 int v14; // [sp-4h] [bp-18h]@2 int *v15; // [sp+Ch] [bp-8h]@2 void *v16; // [sp+10h] [bp-4h]@1 v2 = 0; v16 = this; v3 = 0; while ( 1 ) { v14 = v3; v15 = &v9; v13 = v2; v12 = v2; v11 = v2; v10 = v2; v9 = v2; strncpy((char *)&v9, "Polymorph", 0x14u); result = sub_6442C0(a2, v9, v10, v11, v12, v13, v14); v5 = result; if ( result == v2 ) break; v6 = *(_BYTE *)result; if ( (*(_BYTE *)v5 == *(_BYTE *)(v5 + 69)) == v2 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Polymorph : Checksum error", v6); loc_6391B0("MiscDataTable::mdt_Polymorph"); } v7 = sub_4A3120(v16, v5 + 1); v8 = sub_639620(&unk_14D16018, (unsigned __int8 *)(v5 + 34)); if ( v8 == -1 ) LOWORD(v8) = -1; *((_WORD *)v7 + 10) = v8; ++v3; *((_BYTE *)v7 + 22) ^= (*((_BYTE *)v7 + 22) ^ *(_BYTE *)(v5 + 67)) & 1; *((_BYTE *)v7 + 22) ^= (*((_BYTE *)v7 + 22) ^ 2 * *(_BYTE *)(v5 + 68)) & 2; v2 = 0; } return result; } //----- (004A5860) -------------------------------------------------------- int __thiscall sub_4A5860(void *this, void *a2) { int i; // edi@1 int result; // eax@2 int v4; // esi@2 unsigned __int8 v5; // al@3 void *v6; // eax@5 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 int *v13; // [sp+Ch] [bp-8h]@2 void *v14; // [sp+10h] [bp-4h]@1 v14 = this; for ( i = 0; ; ++i ) { v12 = i; v13 = &v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "Neutralization", 0x14u); result = sub_6442C0(a2, v7, v8, v9, v10, v11, v12); v4 = result; if ( !result ) break; v5 = *(_BYTE *)result; if ( *(_BYTE *)v4 != *(_BYTE *)(v4 + 42) ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_Neutralization : Checksum error", v5); loc_6391B0("MiscDataTable::mdt_Neutralization"); } v6 = sub_4A3120(v14, v4 + 1); *((_BYTE *)v6 + 23) = 1; *((_WORD *)v6 + 24) = *(_WORD *)(v4 + 34); *((_WORD *)v6 + 22) = *(_WORD *)(v4 + 36); *((_WORD *)v6 + 19) = *(_WORD *)(v4 + 38); *((_WORD *)v6 + 31) = *(_WORD *)(v4 + 40); } return result; } //----- (004A5920) -------------------------------------------------------- int __thiscall sub_4A5920(void *this, void *a2) { int v2; // esi@1 int result; // eax@2 int v4; // edi@2 unsigned __int8 v5; // al@3 void *v6; // esi@5 char v7; // cl@5 char v8; // al@5 char v9; // cl@5 int v10; // edx@5 int v11; // ecx@5 int v12; // eax@5 int v13; // ecx@5 int v14; // ebx@10 int v15; // eax@17 int v16; // edx@19 int v17; // eax@19 int v18; // ecx@19 int v19; // eax@19 int v20; // ecx@19 int v21; // eax@31 int v22; // [sp-18h] [bp-B4h]@2 int v23; // [sp-14h] [bp-B0h]@2 int v24; // [sp-10h] [bp-ACh]@2 int v25; // [sp-Ch] [bp-A8h]@2 int v26; // [sp-8h] [bp-A4h]@2 signed int v27; // [sp-4h] [bp-A0h]@2 int *v28; // [sp+Ch] [bp-90h]@2 void *v29; // [sp+10h] [bp-8Ch]@1 void *v30; // [sp+14h] [bp-88h]@1 int v31; // [sp+18h] [bp-84h]@19 int v32; // [sp+1Ch] [bp-80h]@19 int v33; // [sp+20h] [bp-7Ch]@19 int v34; // [sp+24h] [bp-78h]@19 int v35; // [sp+28h] [bp-74h]@19 int v36; // [sp+2Ch] [bp-70h]@5 int v37; // [sp+30h] [bp-6Ch]@5 int v38; // [sp+34h] [bp-68h]@5 int v39; // [sp+38h] [bp-64h]@5 int v40; // [sp+3Ch] [bp-60h]@5 int v41; // [sp+40h] [bp-5Ch]@1 char v42[4]; // [sp+44h] [bp-58h]@5 int v43; // [sp+48h] [bp-54h]@5 int v44; // [sp+4Ch] [bp-50h]@5 int v45; // [sp+50h] [bp-4Ch]@5 int v46; // [sp+54h] [bp-48h]@5 char v47; // [sp+58h] [bp-44h]@17 unsigned int v48; // [sp+98h] [bp-4h]@1 int v49; // [sp+9Ch] [bp+0h]@1 v48 = (unsigned int)&v49 ^ __security_cookie; v2 = 0; v29 = this; v30 = a2; v41 = 0; while ( 1 ) { v27 = v41; v28 = &v22; v26 = v2; v25 = v2; v24 = v2; v23 = v2; v22 = v2; strncpy((char *)&v22, "AbStateReset", 0x14u); result = sub_6442C0(v30, v22, v23, v24, v25, v26, v27); v4 = result; if ( result == v2 ) break; v5 = *(_BYTE *)result; if ( (*(_BYTE *)v4 == *(_BYTE *)(v4 + 78)) == v2 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateReset : Checksum error", v5); loc_6391B0("MiscDataTable::mdt_AbStateReset"); } v6 = sub_4A32E0(v29, v4 + 1); v7 = *((_BYTE *)v6 + 2) ^ *(_BYTE *)(v4 + 34); v27 = 20; *((_BYTE *)v6 + 2) ^= v7 & 1; v8 = *((_BYTE *)v6 + 2) ^ (*((_BYTE *)v6 + 2) ^ 2 * *(_BYTE *)(v4 + 35)) & 2; *((_BYTE *)v6 + 2) = v8; v9 = v8 ^ (v8 ^ 4 * *(_BYTE *)(v4 + 36)) & 4; *((_BYTE *)v6 + 2) = v9; *((_BYTE *)v6 + 2) = v9 ^ (v9 ^ 8 * *(_BYTE *)(v4 + 37)) & 8; v10 = *(_DWORD *)(v4 + 46); v11 = *(_DWORD *)(v4 + 42); v36 = *(_DWORD *)(v4 + 38); v12 = *(_DWORD *)(v4 + 50); v38 = v10; v37 = v11; v13 = *(_DWORD *)(v4 + 54); v39 = v12; v40 = v13; v46 = 0; v45 = 0; v44 = 0; v43 = 0; *(_DWORD *)v42 = 0; strncpy(v42, "-", v27); if ( v36 != *(_DWORD *)v42 || v37 != v43 || v38 != v44 || v39 != v45 || v40 != v46 ) { v46 = 0; v45 = 0; v44 = 0; v43 = 0; *(_DWORD *)v42 = 0; strncpy(v42, "LeftHand", 0x14u); if ( v36 != *(_DWORD *)v42 || v37 != v43 || v38 != v44 || v39 != v45 || v40 != v46 ) { v15 = sub_649DA0(v4 + 38, (int)&v47); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateReset : EquipWhere", v15); } else { *((_DWORD *)v6 + 1) = 1; } v14 = 0; } else { v14 = 0; *((_DWORD *)v6 + 1) = 0; } v16 = *(_DWORD *)(v4 + 66); v17 = *(_DWORD *)(v4 + 58); v18 = *(_DWORD *)(v4 + 62); v27 = 20; v33 = v16; v31 = v17; v19 = *(_DWORD *)(v4 + 70); v32 = v18; v20 = *(_DWORD *)(v4 + 74); v34 = v19; v35 = v20; v46 = v14; v45 = v14; v44 = v14; v43 = v14; *(_DWORD *)v42 = v14; strncpy(v42, "-", 0x14u); if ( v31 != *(_DWORD *)v42 || v32 != v43 || v33 != v44 || v34 != v45 || v35 != v46 ) { v46 = v14; v45 = v14; v44 = v14; v43 = v14; *(_DWORD *)v42 = v14; strncpy(v42, "Shield", 0x14u); if ( v31 != *(_DWORD *)v42 || v32 != v43 || v33 != v44 || v34 != v45 || v35 != v46 ) { v21 = sub_649DA0(v4 + 58, (int)&v47); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateReset : EquipClass", v21); } else { *((_DWORD *)v6 + 2) = 1; } } else { *((_DWORD *)v6 + 2) = v14; } if ( *((_DWORD *)v6 + 1) != v14 ) { if ( *((_DWORD *)v6 + 2) == v14 ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_AbStateReset : Invalis match", v14); loc_6391B0("MiscDataTable::mdt_Load"); } } ++v41; v2 = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004A5C20) -------------------------------------------------------- int __thiscall sub_4A5C20(void *this, void *a2) { int result; // eax@2 int v3; // edi@2 unsigned __int8 v4; // al@3 signed int v5; // eax@5 void *v6; // ebx@10 bool v7; // zf@10 int v8; // eax@15 int v9; // ecx@15 int v10; // edx@15 int v11; // ecx@15 int v12; // edx@15 int v13; // eax@39 int v14; // ecx@40 int v15; // edx@40 int v16; // eax@40 int v17; // edx@40 int v18; // eax@40 int v19; // eax@52 int v20; // edx@53 int v21; // ebx@53 int v22; // ecx@53 int v23; // edx@53 int v24; // ebx@58 int v25; // eax@85 int v26; // ecx@91 int v27; // edx@91 int v28; // eax@91 int v29; // edx@91 int v30; // eax@91 int v31; // eax@121 int v32; // ecx@122 int v33; // edx@122 int v34; // eax@122 int v35; // edx@122 int v36; // eax@122 int v37; // eax@128 int v38; // ecx@128 int v39; // edx@128 int v40; // ecx@128 int v41; // edx@128 int v42; // eax@140 int v43; // eax@141 int v44; // edx@141 int v45; // ecx@141 int v46; // edx@141 int v47; // edi@141 int v48; // eax@159 int v49; // [sp-18h] [bp-11Ch]@2 int v50; // [sp-14h] [bp-118h]@2 int v51; // [sp-10h] [bp-114h]@2 int v52; // [sp-Ch] [bp-110h]@2 int v53; // [sp-8h] [bp-10Ch]@2 int v54; // [sp-4h] [bp-108h]@2 void *v55; // [sp+Ch] [bp-F8h]@1 int v56; // [sp+10h] [bp-F4h]@122 int v57; // [sp+14h] [bp-F0h]@122 int v58; // [sp+18h] [bp-ECh]@122 int v59; // [sp+1Ch] [bp-E8h]@122 int v60; // [sp+20h] [bp-E4h]@122 void *v61; // [sp+24h] [bp-E0h]@1 int v62; // [sp+28h] [bp-DCh]@128 int v63; // [sp+2Ch] [bp-D8h]@128 int v64; // [sp+30h] [bp-D4h]@128 int v65; // [sp+34h] [bp-D0h]@128 int v66; // [sp+38h] [bp-CCh]@128 int v67; // [sp+3Ch] [bp-C8h]@40 int v68; // [sp+40h] [bp-C4h]@40 int v69; // [sp+44h] [bp-C0h]@40 int v70; // [sp+48h] [bp-BCh]@40 int v71; // [sp+4Ch] [bp-B8h]@40 int v72; // [sp+50h] [bp-B4h]@141 int v73; // [sp+54h] [bp-B0h]@141 int v74; // [sp+58h] [bp-ACh]@141 int v75; // [sp+5Ch] [bp-A8h]@141 int v76; // [sp+64h] [bp-A0h]@1 int v77; // [sp+68h] [bp-9Ch]@15 int v78; // [sp+6Ch] [bp-98h]@15 int v79; // [sp+70h] [bp-94h]@15 int v80; // [sp+74h] [bp-90h]@15 int v81; // [sp+78h] [bp-8Ch]@15 int v82; // [sp+7Ch] [bp-88h]@53 int v83; // [sp+80h] [bp-84h]@53 int v84; // [sp+84h] [bp-80h]@53 int v85; // [sp+88h] [bp-7Ch]@53 int v86; // [sp+8Ch] [bp-78h]@53 int v87; // [sp+90h] [bp-74h]@91 int v88; // [sp+94h] [bp-70h]@91 int v89; // [sp+98h] [bp-6Ch]@91 int v90; // [sp+9Ch] [bp-68h]@91 int v91; // [sp+A0h] [bp-64h]@91 int *v92; // [sp+A4h] [bp-60h]@2 void *v93; // [sp+A8h] [bp-5Ch]@10 char v94[4]; // [sp+ACh] [bp-58h]@15 int v95; // [sp+B0h] [bp-54h]@15 int v96; // [sp+B4h] [bp-50h]@15 int v97; // [sp+B8h] [bp-4Ch]@15 int v98; // [sp+BCh] [bp-48h]@15 char v99; // [sp+C0h] [bp-44h]@39 unsigned int v100; // [sp+100h] [bp-4h]@1 int v101; // [sp+104h] [bp+0h]@1 v100 = (unsigned int)&v101 ^ __security_cookie; v61 = this; v55 = a2; v76 = 0; while ( 1 ) { v54 = v76; v92 = &v49; v53 = 0; v52 = 0; v51 = 0; v50 = 0; v49 = 0; strncpy((char *)&v49, "SkillBreedMob", 0x14u); result = sub_6442C0(v55, v49, v50, v51, v52, v53, v54); v3 = result; if ( !result ) break; v4 = *(_BYTE *)result; if ( *(_BYTE *)v3 != *(_BYTE *)(v3 + 288) ) { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : SkillBreedMob : Checksum", v4); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } v5 = sub_639620(&unk_14D16018, (unsigned __int8 *)(v3 + 34)); if ( v5 == -1 ) v5 = 65535; else v5 = (unsigned __int16)v5; v92 = (int *)v5; if ( (_WORD)v5 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : Imvalid mob name", v3 + 34); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } v6 = sub_4A3120(v61, v3 + 1); *((_WORD *)v6 + 1) = (_WORD)v92; *((_BYTE *)v6 + 4) = *(_BYTE *)(v3 + 67); v7 = *(_BYTE *)(v3 + 134) == 45; v93 = v6; if ( v7 ) { *((_DWORD *)v6 + 4) = 792; } else { v92 = (int *)sub_639670(&byte_878354, v3 + 134); if ( (int *)((char *)v92 + 1) == 0 ) { v54 = *((_DWORD *)v6 + 4); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : Invalid abstate", v54); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } *((_DWORD *)v6 + 4) = v92; } v8 = *(_DWORD *)(v3 + 76); v9 = *(_DWORD *)(v3 + 68); v10 = *(_DWORD *)(v3 + 72); v54 = 20; v79 = v8; v77 = v9; v11 = *(_DWORD *)(v3 + 80); v78 = v10; v12 = *(_DWORD *)(v3 + 84); v80 = v11; v81 = v12; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Root", 0x14u); if ( v77 != *(_DWORD *)v94 || v78 != v95 || v79 != v96 || v80 != v97 || v81 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Chase", 0x14u); if ( v77 != *(_DWORD *)v94 || v78 != v95 || v79 != v96 || v80 != v97 || v81 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Rampage", 0x14u); if ( v77 != *(_DWORD *)v94 || v78 != v95 || v79 != v96 || v80 != v97 || v81 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Roam", 0x14u); if ( v77 != *(_DWORD *)v94 || v78 != v95 || v79 != v96 || v80 != v97 || v81 != v98 ) { v13 = sub_649DA0(v3 + 68, (int)&v99); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : AI type wrong", v13); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } else { *((_DWORD *)v93 + 2) = 3; } } else { *((_DWORD *)v93 + 2) = 2; } } else { *((_DWORD *)v93 + 2) = 1; } } else { *((_DWORD *)v93 + 2) = 0; } v14 = *(_DWORD *)(v3 + 96); v15 = *(_DWORD *)(v3 + 88); v16 = *(_DWORD *)(v3 + 92); v54 = 20; v69 = v14; v67 = v15; v17 = *(_DWORD *)(v3 + 100); v68 = v16; v18 = *(_DWORD *)(v3 + 104); v70 = v17; v71 = v18; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Caster", 0x14u); if ( v67 != *(_DWORD *)v94 || v68 != v95 || v69 != v96 || v70 != v97 || v71 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Target", 0x14u); if ( v67 != *(_DWORD *)v94 || v68 != v95 || v69 != v96 || v70 != v97 || v71 != v98 ) { v19 = sub_649DA0(v3 + 88, (int)&v99); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : RegenLoc wrong", v19); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } else { *((_DWORD *)v93 + 3) = 1; } } else { *((_DWORD *)v93 + 3) = 0; } v20 = *(_DWORD *)(v3 + 175); v21 = *(_DWORD *)(v3 + 167); v83 = *(_DWORD *)(v3 + 171); v22 = *(_DWORD *)(v3 + 179); v84 = v20; v23 = *(_DWORD *)(v3 + 183); v92 = (int *)(v3 + 167); v82 = v21; v85 = v22; v86 = v23; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "-", 0x14u); if ( v21 != *(_DWORD *)v94 || v83 != v95 || v84 != v96 || v85 != v97 || v86 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Enemy", 0x14u); if ( v21 != *(_DWORD *)v94 || v83 != v95 || v84 != v96 || v85 != v97 || v86 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Target", 0x14u); if ( v21 != *(_DWORD *)v94 || v83 != v95 || v84 != v96 || v85 != v97 || v86 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Always", 0x14u); if ( v21 != *(_DWORD *)v94 || v83 != v95 || v84 != v96 || v85 != v97 || v86 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "CasterTarget", 0x14u); if ( v21 != *(_DWORD *)v94 || v83 != v95 || v84 != v96 || v85 != v97 || v86 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "TargetAll", 0x14u); if ( sub_427B00((int)&v82, (int)v94) ) { v24 = (int)v93; *((_DWORD *)v93 + 23) = 5; } else { v25 = sub_649DA0((int)v92, (int)&v99); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : Triggerobject", v25); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); v24 = (int)v93; } } else { v24 = (int)v93; *((_DWORD *)v93 + 23) = 4; } } else { v24 = (int)v93; *((_DWORD *)v93 + 23) = 3; } } else { v24 = (int)v93; *((_DWORD *)v93 + 23) = 2; } } else { v24 = (int)v93; *((_DWORD *)v93 + 23) = 1; } } else { v24 = (int)v93; *((_DWORD *)v93 + 23) = 0; } *(_DWORD *)(v24 + 96) = *(_DWORD *)(v3 + 187); *(_DWORD *)(v24 + 84) = *(_DWORD *)(v3 + 130); *(_WORD *)(v24 + 108) = *(_WORD *)(v3 + 193); *(_DWORD *)(v24 + 112) = *(_WORD *)(v3 + 191); if ( *(_BYTE *)(v3 + 195) == 45 ) { *(_WORD *)(v24 + 100) = -1; } else { v93 = (void *)sub_639620(&unk_13257C80, (unsigned __int8 *)(v3 + 195)); if ( (char *)v93 + 1 == 0 ) { sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : ExplosionSkill wrong", v3 + 195); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } *(_WORD *)(v24 + 100) = (_WORD)v93; } v26 = *(_DWORD *)(v3 + 236); v27 = *(_DWORD *)(v3 + 228); v28 = *(_DWORD *)(v3 + 232); v54 = 20; v89 = v26; v87 = v27; v29 = *(_DWORD *)(v3 + 240); v88 = v28; v30 = *(_DWORD *)(v3 + 244); v90 = v29; v91 = v30; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "-", 0x14u); if ( v87 != *(_DWORD *)v94 || v88 != v95 || v89 != v96 || v90 != v97 || v91 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "MyLoc", 0x14u); if ( v87 != *(_DWORD *)v94 || v88 != v95 || v89 != v96 || v90 != v97 || v91 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "MyObj", 0x14u); if ( v87 != *(_DWORD *)v94 || v88 != v95 || v89 != v96 || v90 != v97 || v91 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "TargetLoc", 0x14u); if ( v87 != *(_DWORD *)v94 || v88 != v95 || v89 != v96 || v90 != v97 || v91 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "TargetObj", 0x14u); if ( v87 != *(_DWORD *)v94 || v88 != v95 || v89 != v96 || v90 != v97 || v91 != v98 ) { v31 = sub_649DA0((int)v92, (int)&v99); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : Triggerobject", v31); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } else { *(_DWORD *)(v24 + 104) = 4; } } else { *(_DWORD *)(v24 + 104) = 3; } } else { *(_DWORD *)(v24 + 104) = 2; } } else { *(_DWORD *)(v24 + 104) = 1; } } else { *(_DWORD *)(v24 + 104) = 0; } v32 = *(_DWORD *)(v3 + 256); v33 = *(_DWORD *)(v3 + 248); v34 = *(_DWORD *)(v3 + 252); v54 = 20; v58 = v32; v56 = v33; v35 = *(_DWORD *)(v3 + 260); v57 = v34; v36 = *(_DWORD *)(v3 + 264); v59 = v35; v60 = v36; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Dead", 0x14u); if ( v56 == *(_DWORD *)v94 && v57 == v95 && v58 == v96 && v59 == v97 && v60 == v98 ) *(_BYTE *)(v24 + 88) |= 1u; v37 = *(_DWORD *)(v3 + 276); v38 = *(_DWORD *)(v3 + 268); v39 = *(_DWORD *)(v3 + 272); v54 = 20; v64 = v37; v62 = v38; v40 = *(_DWORD *)(v3 + 280); v63 = v39; v41 = *(_DWORD *)(v3 + 284); v65 = v40; v66 = v41; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "-", 0x14u); if ( v62 != *(_DWORD *)v94 || v63 != v95 || v64 != v96 || v65 != v97 || v66 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Multi", 0x14u); if ( v62 != *(_DWORD *)v94 || v63 != v95 || v64 != v96 || v65 != v97 || v66 != v98 ) { v42 = sub_649DA0((int)v92, (int)&v99); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : MultiTarget", v42); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); } else { *(_DWORD *)(v24 + 116) = 1; } } else { *(_DWORD *)(v24 + 116) = 0; } *(_WORD *)(v24 + 120) = *(_WORD *)(v3 + 108); v43 = *(_DWORD *)(v3 + 114); v44 = *(_DWORD *)(v3 + 110); v45 = *(_DWORD *)(v3 + 118); v54 = 20; v73 = v43; v72 = v44; v46 = *(_DWORD *)(v3 + 122); v47 = *(_DWORD *)(v3 + 126); v74 = v45; v75 = v46; v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "-", 0x14u); if ( v72 != *(_DWORD *)v94 || v73 != v95 || v74 != v96 || v75 != v97 || v47 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Straight", 0x14u); if ( v72 != *(_DWORD *)v94 || v73 != v95 || v74 != v96 || v75 != v97 || v47 != v98 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "Random", 0x14u); if ( v72 != *(_DWORD *)v94 || v73 != v95 || v74 != v96 || v75 != v97 || v47 != v98 ) { v48 = sub_649DA0((int)v92, (int)&v99); sub_6390B0(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBreedMob : MultiTarget", v48); loc_6391B0("MiscDataTable::mdt_SkillBreedMob"); ++v76; } else { ++v76; *(_DWORD *)(v24 + 124) = 2; } } else { ++v76; *(_DWORD *)(v24 + 124) = 1; } } else { ++v76; *(_DWORD *)(v24 + 124) = 0; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004A68D0) -------------------------------------------------------- int __thiscall sub_4A68D0(void *this, int a2, int a3, __int16 a4, int a5, int a6) { signed int v6; // esi@1 void *v7; // eax@4 int v8; // edi@4 bool v10; // zf@13 int v11; // eax@14 int v12; // esi@14 int v13; // eax@16 int v14; // eax@17 void *v15; // eax@20 int v16; // eax@22 int v17; // eax@30 int v18; // edx@33 int v19; // [sp-Ch] [bp-ECh]@35 int v20; // [sp-8h] [bp-E8h]@35 int v21; // [sp-4h] [bp-E4h]@1 char v22; // [sp+Ch] [bp-D4h]@19 int v23; // [sp+24h] [bp-BCh]@1 int v24; // [sp+2Ch] [bp-B4h]@16 int v25; // [sp+30h] [bp-B0h]@17 void *v26; // [sp+34h] [bp-ACh]@1 int v27; // [sp+38h] [bp-A8h]@1 int v28; // [sp+3Ch] [bp-A4h]@15 int v29; // [sp+40h] [bp-A0h]@15 int v30; // [sp+44h] [bp-9Ch]@14 int v31; // [sp+48h] [bp-98h]@13 int v32; // [sp+4Ch] [bp-94h]@15 __int16 v33; // [sp+50h] [bp-90h]@4 unsigned int v34; // [sp+D0h] [bp-10h]@1 int v35; // [sp+DCh] [bp-4h]@1 int v36; // [sp+E0h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v21 = (unsigned int)&v36 ^ __security_cookie; v26 = this; v27 = a3; v23 = (int)"MiscDataTable::mdt_SkillBlast_Summon"; sub_4675D0((int)&unk_D020420, (int)"MiscDataTable::mdt_SkillBlast_Summon"); dword_7508B8[dword_750CB8] = (int)"MiscDataTable::mdt_SkillBlast_Summon"; v6 = -1; dword_750AB8[dword_750CB8++] = -1; v35 = 0; if ( a2 && a5 ) { v33 = a4; v7 = bsearch(&v33, &unk_D73D278, dword_D740478, 0x80u, (int (__cdecl *)(const void *, const void *))sub_4A2220); v8 = (int)&dword_D73D1D8; if ( v7 ) v8 = (int)v7; if ( *(_WORD *)(v8 + 2) != -1 && *(_DWORD *)(v8 + 116) == a6 ) { if ( *(_DWORD *)(a2 + 122) ) { v10 = *(_BYTE *)(v8 + 4) == 0; v31 = 0; if ( !v10 ) { while ( 1 ) { v11 = sub_54DF90(&unk_13253630, (int)&v30, 10); v12 = v11; if ( !v11 ) break; (*(void (__thiscall **)(int, int))(*(_DWORD *)v11 + 2484))(v11, v8); v32 = 0; v28 = 0; v29 = 0; if ( !sub_4A22A0(v8, v31, a2, a5, (int)&v28, &v32) ) { v20 = 0; v19 = (int)"MiscDataTable::mdt_SkillBlast_Summon : Get regenLocation fail"; goto LABEL_36; } v24 = (unsigned __int64)sub_548D10(a2) >> 32; if ( (*(int (__thiscall **)(int, _DWORD, int, int, int, int, _DWORD, _DWORD, signed int, _DWORD, _DWORD, signed int, signed int, int, int))(*(_DWORD *)v12 + 1760))( v12, *(_DWORD *)(a2 + 122), v28, v29, 2 * v32, v30, *(_WORD *)(v8 + 2), 0, -1, 0, 0, -1, 1, v13, v24) ) { sub_555DF0(&unk_13253630, v30, 0, 38); --dword_750CB8; v35 = -1; return sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_SkillBlast_Summon"); } v14 = *(_DWORD *)(v12 + 122); v25 = v14; if ( v14 && *(_DWORD *)(v14 + 296) ) { sub_5D4EE0((int)&v22, v14, v12, a2); LOBYTE(v35) = 1; sub_463090(v25, 144, (int)&v22); LOBYTE(v35) = 0; sub_5D4580(&v22); } v15 = (void *)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v12 + 1324))(v12, 291); if ( sub_409A00(v15, v21) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v12 + 1616))(v12, 291); sub_401940((void *)v12, 291); sub_405730((void *)v12, 291); } (*(void (__thiscall **)(int, _DWORD, int, int, _DWORD, _DWORD))(*(_DWORD *)v12 + 3156))( v12, *(_DWORD *)(v8 + 124), v32, 180 / *(_BYTE *)(v8 + 4) / 2, **(_DWORD **)(a2 + 102), *(_DWORD *)(*(_DWORD *)(a2 + 102) + 4)); v10 = *(_DWORD *)(v8 + 92) == 4; v16 = v27; v32 = v27; if ( v10 || !v27 ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1884))(a2); v32 = v16; } if ( *(_DWORD *)(v8 + 8) == 1 && v16 && v16 != a2 ) { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v12 + 1792))(v12, v16, 100000); (*(void (__thiscall **)(int, int))(*(_DWORD *)v12 + 2444))(v12, v32); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v12 + 1616))(v12, 291); } v21 = v8; (*(void (__thiscall **)(int, int))(*(_DWORD *)v12 + 2440))(v12, a2); if ( *(_DWORD *)(v8 + 16) != 792 ) { v17 = sub_401310(&unk_877138, *(_DWORD *)(v8 + 16)); if ( v17 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, signed int, signed int, signed int, _DWORD))(*(_DWORD *)v12 + 1592))( v12, v12, *(_DWORD *)(v8 + 16), 1, v17, dword_14D129E8, 0, -1, -94967296, 9, 0) ) { sub_401900((void *)v12, *(_DWORD *)(v8 + 16)); sub_4055D0((void *)v12, *(_DWORD *)(v8 + 16), -94967296, 1); } } } v18 = *(_BYTE *)(v8 + 4); ++v31; if ( v31 >= v18 ) { v6 = -1; goto LABEL_10; } } v20 = 0; v19 = (int)"MiscDataTable::mdt_SkillBlast_Summon : Too many mob"; LABEL_36: sub_639100(&unk_86DDD8, v19, v20); --dword_750CB8; v35 = -1; return sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_SkillBlast_Summon"); } } else { sub_639100(&unk_86DDD8, (int)"MiscDataTable::mdt_SkillBlast_Summon : Map name null", 0); } } LABEL_10: --dword_750CB8; } else { --dword_750CB8; } v35 = v6; return sub_467660((int)&unk_D020420, (int)"MiscDataTable::mdt_SkillBlast_Summon"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D73D1D8: using guessed type int dword_D73D1D8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A6D00) -------------------------------------------------------- char __userpurge sub_4A6D00(double a1, int a2, int a3, int a4) { int v4; // edi@4 int v5; // eax@5 int v6; // edx@5 int v7; // eax@5 int v8; // ecx@5 int v9; // edx@6 int v10; // eax@10 int v11; // eax@14 int v12; // eax@16 void *v13; // eax@19 int v14; // esi@21 char result; // al@21 int v16; // [sp-10h] [bp-B0h]@13 int v17; // [sp-Ch] [bp-ACh]@13 int v18; // [sp-8h] [bp-A8h]@13 int v19; // [sp+14h] [bp-8Ch]@5 __int16 v20; // [sp+20h] [bp-80h]@11 int v21; // [sp+24h] [bp-7Ch]@21 __int16 v22; // [sp+28h] [bp-78h]@21 int v23; // [sp+2Ch] [bp-74h]@21 int v24; // [sp+30h] [bp-70h]@21 int v25; // [sp+34h] [bp-6Ch]@21 __int16 v26; // [sp+38h] [bp-68h]@21 int v27; // [sp+3Ch] [bp-64h]@21 int v28; // [sp+40h] [bp-60h]@21 int v29; // [sp+44h] [bp-5Ch]@21 int v30; // [sp+48h] [bp-58h]@21 int v31; // [sp+4Ch] [bp-54h]@21 int v32; // [sp+50h] [bp-50h]@21 int v33; // [sp+54h] [bp-4Ch]@21 int v34; // [sp+5Ch] [bp-44h]@21 int v35; // [sp+60h] [bp-40h]@21 int v36; // [sp+64h] [bp-3Ch]@21 int v37; // [sp+68h] [bp-38h]@21 int v38; // [sp+6Ch] [bp-34h]@21 int v39; // [sp+70h] [bp-30h]@21 int v40; // [sp+74h] [bp-2Ch]@21 int v41; // [sp+78h] [bp-28h]@21 int v42; // [sp+7Ch] [bp-24h]@21 int v43; // [sp+80h] [bp-20h]@21 int v44; // [sp+84h] [bp-1Ch]@21 int v45; // [sp+88h] [bp-18h]@21 unsigned int v46; // [sp+90h] [bp-10h]@1 int v47; // [sp+9Ch] [bp-4h]@1 int v48; // [sp+A0h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Explosion"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionBase::meb_Explosion"; dword_750AB8[dword_750CB8++] = -1; v47 = 0; sub_437680(&dword_87B254); if ( a2 && a4 && *(_WORD *)(a3 + 100) != -1 && (v4 = (int)sub_447910((int)&unk_132577A0, *(_WORD *)(a3 + 100))) != 0 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); v6 = v5; v7 = *(_DWORD *)(v5 + 12); v8 = 0; v19 = v6; if ( v7 > 0 ) { v9 = *(_DWORD *)(v6 + 8) + 4; while ( *(_WORD *)v9 != *(_WORD *)(a3 + 100) ) { ++v8; v9 += 12; if ( v8 >= v7 ) goto LABEL_11; } v10 = *(_DWORD *)(*(_DWORD *)(v19 + 8) + 12 * v8); sub_4A9130( a2, *(_DWORD *)(v10 + 87), *(_DWORD *)(v10 + 83), *(_WORD *)(v10 + 91), *(_DWORD *)(v10 + 97), *(_DWORD *)(v10 + 93), *(_WORD *)(v10 + 101)); } LABEL_11: v20 = 0; switch ( *(_DWORD *)(a3 + 104) ) { case 1: sub_581220(a2, a1, *(_DWORD *)(a2 + 102), &v20, v4); break; case 2: v18 = v4; v17 = (int)&v20; v16 = a2; goto LABEL_18; case 3: v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3952))(a2); if ( v11 ) sub_581220(a2, a1, *(_DWORD *)(v11 + 102), &v20, v4); break; case 4: v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3952))(a2); if ( v12 ) { v18 = v4; v17 = (int)&v20; v16 = v12; LABEL_18: sub_5814E0(a2, a1, v16, v17, v18); } break; default: break; } v13 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); if ( sub_409A00(v13, 77) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 1616))(a2, 77); sub_401940((void *)a2, 77); sub_405730((void *)a2, 77); } sub_434660((int)&v32); v14 = *(_DWORD *)(a2 + 102); v21 = dword_14D129E8; v23 = v4; v26 = 0; v25 = a4; v22 = 0; v24 = -1; v27 = -1; v28 = 0; v29 = *(_DWORD *)v14; v30 = *(_DWORD *)(v14 + 4); LOBYTE(v47) = 1; v31 = 0; v32 = -1; v33 = 0; v34 = 0; v35 = 792; v36 = 0; v37 = 0; v38 = 792; v39 = 0; v40 = 0; v41 = 792; v42 = 0; v43 = 0; v44 = 792; v45 = 0; sub_436C50((int)&v21); LOBYTE(v47) = 0; nullsub_2(&v32); --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Explosion"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Explosion"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (004A6FF0) -------------------------------------------------------- void *__thiscall sub_4A6FF0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // esi@1 unsigned __int16 v5; // cx@1 unsigned __int16 v6; // dx@1 int v7; // edi@3 int v8; // eax@3 int v9; // eax@4 bool v10; // zf@4 int v11; // edi@4 int v12; // edi@5 int v13; // edx@9 int v14; // ebx@10 unsigned __int16 v15; // dx@13 int v16; // ecx@14 int v17; // ecx@15 int v18; // eax@18 int v19; // eax@18 int v20; // esi@19 signed int v21; // edx@21 unsigned __int16 v23; // [sp+10h] [bp-20h]@3 void *v24; // [sp+20h] [bp-10h]@1 v3 = this; v24 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_AggroAdjust"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_AggroAdjust"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 5); v5 = *(_WORD *)(v4 + 4); v6 = *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * *(_WORD *)(v4 + 14) + 4); while ( v6 < v5 ) { v7 = *(_DWORD *)(v4 + 8); v8 = v6; v23 = v6; v6 = *(_WORD *)(v7 + 12 * v6 + 4); if ( v23 >= v5 || (v9 = 3 * v8, v10 = *(_BYTE *)(v7 + 4 * v9 + 8) == 0, v11 = v7 + 4 * v9, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; if ( *(_WORD *)v12 == *(_WORD *)(a2 + 4) ) { if ( v23 < v5 && (v13 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v13 + 12 * v23 + 8)) ) v14 = *(_DWORD *)(v13 + 12 * v23); else v14 = 0; if ( *(_DWORD *)(v14 + 4) == (*(int (**)(void))(*(_DWORD *)a2 + 836))() ) { v15 = *(_WORD *)(v4 + 4); if ( v23 < v15 && (v16 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v16 + 12 * v23 + 8)) ) v17 = *(_DWORD *)(v16 + 12 * v23); else v17 = 0; if ( v23 >= v15 || (v18 = *(_DWORD *)(v4 + 8), v10 = *(_BYTE *)(v18 + 12 * v23 + 8) == 0, v19 = v18 + 12 * v23, v10) ) v20 = 0; else v20 = *(_DWORD *)v19; v21 = (signed int)((unsigned __int64)(a3 * *(_DWORD *)(v17 + 12) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *(_DWORD *)(v20 + 12) = v21 + ((unsigned int)v21 >> 31); } break; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_AggroAdjust"); return v24; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A7180) -------------------------------------------------------- int __thiscall sub_4A7180(void *this, int a2, int a3) { int v3; // esi@1 bool v4; // zf@1 int v5; // eax@6 int v6; // edx@6 int v7; // eax@6 void (__thiscall *v8)(_DWORD); // edx@6 void *v9; // edi@6 int v10; // eax@8 void *v11; // eax@9 int v12; // ecx@9 int v13; // ST04_4@9 int v14; // eax@9 int v16; // [sp-4h] [bp-40h]@2 char v17; // [sp+10h] [bp-2Ch]@9 int v18; // [sp+1Ch] [bp-20h]@4 int v19; // [sp+20h] [bp-1Ch]@6 int v20; // [sp+24h] [bp-18h]@6 int v21; // [sp+28h] [bp-14h]@6 int v22; // [sp+2Ch] [bp-10h]@1 int v23; // [sp+38h] [bp-4h]@1 v3 = (int)this; v22 = (int)"ShineObjectClass::ShineMobileObject::smo_WarpTo"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_WarpTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_WarpTo"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(v3 + 122) == 0; v23 = 0; if ( v4 || !a2 ) { --dword_750CB8; v23 = -1; v16 = (int)"ShineObjectClass::ShineMobileObject::smo_WarpTo"; } else { *(_DWORD *)a2 += 5; if ( sub_4BE0E0( (void *)v3, a2, *(_DWORD *)(a3 + 220), (int)&v18, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) { v5 = *(_DWORD *)(v3 + 102); v20 = *(_DWORD *)v5; v6 = *(_DWORD *)(v5 + 4); v7 = *(_DWORD *)v3; v21 = v6; v8 = *(void (__thiscall **)(_DWORD))(v7 + 2632); *(_DWORD *)(v3 + 368) = 0; v8(v3); sub_4BD480((void *)v3, (int)&v18); sub_452220(v3, v18, v19, 11); sub_4BD660((void *)v3, (int)&v20); v9 = off_849C18; *(_WORD *)off_849C18 = 9296; *((_WORD *)v9 + 1) = **(_WORD **)(a3 + 4); *((_DWORD *)v9 + 1) = *(_DWORD *)a2; *((_DWORD *)v9 + 2) = *(_DWORD *)(a2 + 4); *((_WORD *)v9 + 6) = sub_434770((int)&dword_87B264); if ( sub_4C81E0(&off_849C18, 14) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v11 = off_849C18; *(_WORD *)off_849C18 = 18472; *((_WORD *)v11 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v11 + 1) = v20; *((_DWORD *)v11 + 2) = v21; v12 = *(_DWORD *)(v3 + 102); *((_DWORD *)v11 + 3) = *(_DWORD *)v12; *((_DWORD *)v11 + 4) = *(_DWORD *)(v12 + 4); *((_WORD *)v11 + 10) = **(_WORD **)(a3 + 4); sub_4287B0(&v17, &off_849C18, 22); v13 = *(_DWORD *)(v3 + 102); LOBYTE(v23) = 1; v14 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v14, v13, 0, 0, (int)&v17, 1, 65535); sub_43F0A0(v3 + 368); LOBYTE(v23) = 0; sub_428A70(&v17); v23 = -1; v16 = (int)"ShineObjectClass::ShineMobileObject::smo_WarpTo"; } else { v23 = -1; v16 = (int)"ShineObjectClass::ShineMobileObject::smo_WarpTo"; } --dword_750CB8; } return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A73B0) -------------------------------------------------------- char __thiscall sub_4A73B0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // dx@2 unsigned __int16 v5; // bx@2 int v6; // eax@3 int v7; // eax@7 int v8; // ecx@8 int v9; // eax@12 int v10; // eax@12 int v11; // ecx@13 int v12; // eax@17 int v13; // eax@17 int v14; // ecx@18 int v15; // eax@22 int v16; // eax@22 int v17; // ecx@23 bool v18; // zf@25 int v19; // eax@27 int v20; // ecx@28 int v21; // eax@32 int v22; // ecx@33 unsigned __int16 v24; // [sp+12h] [bp-1Ah]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1324))(v2); v24 = *(_WORD *)(*(_DWORD *)(v3 + 3372) + 12 * *(_WORD *)(v3 + 3378) + 4); while ( 1 ) { v4 = *(_WORD *)(v3 + 3368); v5 = v24; if ( v24 >= v4 ) break; v6 = *(_DWORD *)(v3 + 3372); v24 = *(_WORD *)(v6 + 12 * v24 + 4); if ( a2 == 1 ) { if ( v5 >= v4 || (v18 = *(_BYTE *)(v6 + 12 * v5 + 8) == 0, v21 = v6 + 12 * v5, v18) ) v22 = 0; else v22 = *(_DWORD *)v21; v18 = *(_DWORD *)(*(_DWORD *)(dword_87150C[3 * *(_DWORD *)(v22 + 4)] + 36 * *(_BYTE *)(v22 + 24) + 12) + 38) == 21; goto LABEL_36; } if ( a2 == 2 ) { if ( v5 >= v4 || (v18 = *(_BYTE *)(v6 + 12 * v5 + 8) == 0, v19 = v6 + 12 * v5, v18) ) v20 = 0; else v20 = *(_DWORD *)v19; v18 = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v20 + 4)] + 36 * *(_BYTE *)(v20 + 24) + 12), 88) == 1; goto LABEL_36; } if ( a2 == 3 ) { if ( v5 >= v4 || (v18 = *(_BYTE *)(v6 + 12 * v5 + 8) == 0, v7 = v6 + 12 * v5, v18) ) v8 = 0; else v8 = *(_DWORD *)v7; if ( sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v8 + 4)] + 36 * *(_BYTE *)(v8 + 24) + 12), 73) == 1 || (v5 >= *(_WORD *)(v3 + 3368) || (v9 = *(_DWORD *)(v3 + 3372), v18 = *(_BYTE *)(v9 + 12 * v5 + 8) == 0, v10 = v9 + 12 * v5, v18) ? (v11 = 0) : (v11 = *(_DWORD *)v10), sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v11 + 4)] + 36 * *(_BYTE *)(v11 + 24) + 12), 74) == 1 || (v5 >= *(_WORD *)(v3 + 3368) || (v12 = *(_DWORD *)(v3 + 3372), v18 = *(_BYTE *)(v12 + 12 * v5 + 8) == 0, v13 = v12 + 12 * v5, v18) ? (v14 = 0) : (v14 = *(_DWORD *)v13), sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v14 + 4)] + 36 * *(_BYTE *)(v14 + 24) + 12), 86) == 1)) ) { LABEL_37: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); return 1; } if ( v5 >= *(_WORD *)(v3 + 3368) || (v15 = *(_DWORD *)(v3 + 3372), v18 = *(_BYTE *)(v15 + 12 * v5 + 8) == 0, v16 = v15 + 12 * v5, v18) ) v17 = 0; else v17 = *(_DWORD *)v16; v18 = sub_415C90((void *)(dword_87150C[3 * *(_DWORD *)(v17 + 4)] + 36 * *(_BYTE *)(v17 + 24) + 12), 87) == 1; LABEL_36: if ( v18 ) goto LABEL_37; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (004A7670) -------------------------------------------------------- void __thiscall sub_4A7670(void *this) { void *v1; // esi@1 char v2; // bl@1 int v3; // eax@1 char v4; // [sp+0h] [bp-10864h]@1 unsigned int v5; // [sp+10854h] [bp-10h]@1 int v6; // [sp+10860h] [bp-4h]@1 int v7; // [sp+10864h] [bp+0h]@1 v5 = (unsigned int)&v7 ^ __security_cookie; v1 = this; sub_6432E0((int)&v4); v6 = 0; v2 = sub_6434A0(&v4, "../9Data/Shine/World/MiscDataTable.txt"); v3 = sub_642790(&v4); if ( !v2 ) { sub_639100(&unk_86DDD8, (int)"Error in read MiscDataTable.txt", v3); loc_6391B0("MiscDataTable::mdt_Load"); } *((_DWORD *)v1 + 3351) = 0; *((_DWORD *)v1 + 3200) = 0; *((_DWORD *)v1 + 3852) = 0; sub_4A5C20(v1, &v4); sub_4A5920(v1, &v4); sub_4A5860(v1, &v4); sub_4A5780(v1, &v4); sub_4A28A0(v1, &v4); v6 = -1; sub_643080(&v4); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004A7780) -------------------------------------------------------- int __thiscall sub_4A7780(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int *v5; // edx@1 unsigned int v6; // ST00_4@1 int v8; // [sp+Ch] [bp-18h]@1 int v9; // [sp+10h] [bp-14h]@1 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v2 = this; v10 = (int)"ShineObjectClass::ShineMobileObject::smo_WarpForward"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_WarpForward"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_WarpForward"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)((char *)v2 + 102); v4 = *(_DWORD *)(a2 + 220); v8 = *(_DWORD *)v3; v5 = *(unsigned int **)((char *)v2 + 106); v9 = *(_DWORD *)(v3 + 4); v6 = *(_BYTE *)v5; v11 = 0; sub_4A2100(&unk_AF09DA8, v6, v4, (int)&v8); sub_4A7180(v2, (int)&v8, a2); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_WarpForward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A7850) -------------------------------------------------------- int __stdcall sub_4A7850(int a1) { int result; // eax@1 result = a1; *(_DWORD *)a1 = 0; return result; } //----- (004A7860) -------------------------------------------------------- bool __thiscall sub_4A7860(int this, int a2) { ++*(_DWORD *)a2; return *(_DWORD *)a2 < *(_DWORD *)(this + 1632); } //----- (004A7880) -------------------------------------------------------- signed int __thiscall sub_4A7880(int this, unsigned int *a2) { signed int result; // eax@2 if ( *a2 < *(_DWORD *)(this + 1632) ) result = *(_WORD *)sub_4C1A30(this, *a2); else result = 65535; return result; } //----- (004A78B0) -------------------------------------------------------- int __thiscall sub_4A78B0(int this, int a2) { int result; // eax@1 result = a2; ++*(_DWORD *)result; if ( *(_DWORD *)a2 >= (signed int)*(_BYTE *)(this + 2) ) *(_DWORD *)a2 = *(_BYTE *)(this + 7144); return result; } //----- (004A78D0) -------------------------------------------------------- int __thiscall sub_4A78D0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 signed int v5; // edi@2 signed int v6; // esi@6 int result; // eax@9 v4 = this; if ( *(_BYTE *)a2 == 45 ) { LOWORD(v5) = -1; } else { v5 = sub_639670(&unk_13257C80, a2); if ( v5 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::SkillChange::sc_Store : Null skill", a2); loc_6391B0("MagicContainer::mas_Load"); } } *(_WORD *)v4 = v5; if ( *(_BYTE *)a3 == 45 ) { LOWORD(v6) = -1; } else { v6 = sub_639670(&unk_13257C80, a3); if ( v6 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::SkillChange::sc_Store : Null skill", a3); loc_6391B0("MagicContainer::mas_Load"); } } result = a4; *((_WORD *)v4 + 1) = v6; *((_DWORD *)v4 + 1) = a4; *((_DWORD *)v4 + 2) = 0; return result; } //----- (004A7980) -------------------------------------------------------- char __thiscall sub_4A7980(void *this, int a2) { int v2; // esi@1 int v3; // edx@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004A79E0) -------------------------------------------------------- void __thiscall sub_4A79E0(int this) { void *v1; // ecx@1 *(_DWORD *)this = &off_6BD204; v1 = *(void **)(this + 8); if ( v1 ) sub_6530A4(v1); } // 6BD204: using guessed type int (__thiscall *off_6BD204)(void *, char); //----- (004A7A00) -------------------------------------------------------- char __thiscall sub_4A7A00(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); result = 1; } else { result = 0; } return result; } //----- (004A7A50) -------------------------------------------------------- char __thiscall sub_4A7A50(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6BD230; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BD230: using guessed type int (__stdcall *off_6BD230)(int, int); //----- (004A7BD0) -------------------------------------------------------- int __thiscall sub_4A7BD0(int this) { int v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // edi@1 int v5; // ecx@3 int v6; // ecx@6 bool v7; // zf@6 int v8; // ecx@6 int v9; // ecx@9 int v10; // ecx@12 int v11; // ecx@15 signed int v13; // [sp+14h] [bp-8h]@1 signed int v14; // [sp+18h] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6BD204; *(_DWORD *)(this + 16) = 0; sub_4A7A50(this, 0x64u); *(_DWORD *)v1 = &off_6BD238; v2 = 2; v14 = 36; v3 = v1 + 36; v4 = -36 - v1; v13 = 20; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = v4 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + v3) ) *(_DWORD *)(v5 + v3) = v3 - 12; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v6 = v4 + *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 + 12) == 0; v8 = v6 + v3 + 12; if ( v7 ) *(_DWORD *)v8 = v3; } if ( v2 < *(_WORD *)(v1 + 4) ) { v9 = -12 - v1 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v9 + v3) ) *(_DWORD *)(v9 + v3) = v3 + 12; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v10 = v14 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)v10 ) *(_DWORD *)v10 = v3 + 24; } if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v11 = 12 - v1 + *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v11 + v3) ) *(_DWORD *)(v11 + v3) = v3 + 36; } v14 += 60; v3 += 60; v2 += 5; --v13; } while ( v13 ); return v1; } // 6BD204: using guessed type int (__thiscall *off_6BD204)(void *, char); // 6BD238: using guessed type int (__thiscall *off_6BD238)(void *, char); //----- (004A7CD0) -------------------------------------------------------- void *__thiscall sub_4A7CD0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6BD204; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BD204: using guessed type int (__thiscall *off_6BD204)(void *, char); //----- (004A7D10) -------------------------------------------------------- int __thiscall sub_4A7D10(int this) { int v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; _eh_vector_constructor_iterator_((void *)(this + 4), 0x1BECu, 400, (int)sub_43B950, sub_43B9E0); v2 = v1 + 4680; 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 ); return v1; } //----- (004A7D80) -------------------------------------------------------- int __thiscall sub_4A7D80(void *this) { int v1; // esi@1 int v2; // ecx@1 unsigned int v3; // eax@1 signed int v4; // ebx@4 int **v5; // edi@7 FILE *v6; // eax@14 int v7; // eax@17 void *v8; // eax@24 int v9; // esi@24 void *v10; // ebx@24 int v11; // edi@26 int v12; // eax@27 int v13; // esi@27 char v14; // al@28 signed int v15; // edi@29 int v16; // esi@31 int v17; // edx@36 int v18; // ebx@38 unsigned __int16 v19; // si@41 void *v20; // edi@41 int v21; // edx@43 int v22; // ecx@43 int v23; // esi@43 int v24; // edx@43 int v25; // eax@49 int v26; // eax@50 int v27; // ecx@53 void *v28; // esi@54 int v29; // edx@55 int v30; // eax@58 int v31; // eax@58 int v32; // eax@65 int v33; // eax@66 int v34; // ecx@69 void *v35; // esi@70 int v36; // edx@71 int v37; // eax@74 int v38; // eax@74 int v39; // eax@81 int v40; // eax@82 int v41; // ecx@85 int v42; // edx@87 unsigned __int16 v43; // di@88 int v44; // eax@98 signed int v45; // esi@98 int v46; // esi@100 int v47; // eax@109 int v48; // eax@110 int v49; // ecx@113 void *v50; // esi@114 int v51; // edx@115 int v52; // eax@118 int v53; // eax@118 int v54; // eax@125 int v55; // eax@126 int v56; // ecx@129 int v57; // esi@130 int v58; // edx@131 int v59; // eax@133 int v60; // edi@133 int v61; // eax@133 bool v62; // zf@133 signed int v63; // ebx@134 int v64; // ecx@137 int v65; // edx@137 int v66; // eax@138 int result; // eax@140 int v68; // [sp-34h] [bp-109C0h]@27 int v69; // [sp-30h] [bp-109BCh]@27 int v70; // [sp-2Ch] [bp-109B8h]@27 int v71; // [sp-28h] [bp-109B4h]@27 int v72; // [sp-24h] [bp-109B0h]@27 int v73; // [sp-20h] [bp-109ACh]@27 int v74; // [sp-1Ch] [bp-109A8h]@27 int v75; // [sp-18h] [bp-109A4h]@27 int v76; // [sp-14h] [bp-109A0h]@14 unsigned int v77; // [sp-10h] [bp-1099Ch]@1 int v78; // [sp+0h] [bp-1098Ch]@27 int v79; // [sp+4h] [bp-10988h]@1 int i; // [sp+8h] [bp-10984h]@1 int v81; // [sp+10h] [bp-1097Ch]@43 int v82; // [sp+14h] [bp-10978h]@43 int v83; // [sp+18h] [bp-10974h]@43 int v84; // [sp+1Ch] [bp-10970h]@43 int j; // [sp+20h] [bp-1096Ch]@26 int *v86; // [sp+24h] [bp-10968h]@27 int v87; // [sp+28h] [bp-10964h]@6 int v88; // [sp+2Ch] [bp-10960h]@6 char v89; // [sp+30h] [bp-1095Ch]@15 char v90[4]; // [sp+10884h] [bp-108h]@43 int v91; // [sp+10888h] [bp-104h]@43 int v92; // [sp+1088Ch] [bp-100h]@43 int v93; // [sp+10890h] [bp-FCh]@43 int v94; // [sp+10894h] [bp-F8h]@43 char v95; // [sp+10898h] [bp-F4h]@138 char v96; // [sp+108D8h] [bp-B4h]@14 char v97; // [sp+10958h] [bp-34h]@58 unsigned int v98; // [sp+1097Ch] [bp-10h]@1 int v99; // [sp+10988h] [bp-4h]@15 int v100; // [sp+1098Ch] [bp+0h]@1 v98 = (unsigned int)&v100 ^ __security_cookie; v77 = (unsigned int)&v100 ^ __security_cookie; v1 = (int)this; v2 = dword_14D16010; v3 = 0; v79 = v1; for ( i = 0; ; v3 = i ) { if ( v3 < v2 ) v4 = *(_WORD *)sub_4C1A30((int)&unk_14D159B0, v3); else v4 = 65535; v88 = v4; v87 = (unsigned __int16)v4; if ( (unsigned __int16)v4 > (unsigned int)dword_14D16014 || (v5 = (int **)(dword_14D1600C + 52 * (unsigned __int16)v4)) == 0 || !*v5 ) goto LABEL_11; if ( *(_WORD *)*v5 != (_WORD)v4 ) { sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", v87, *(_WORD *)*v5); LABEL_11: v5 = 0; goto LABEL_12; } LOWORD(v4) = v88; LABEL_12: if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Null inf", v87); loc_6391B0("MobAttackSequence::mas_Load"); } v76 = (int)((char *)*v5 + 2); sprintf(&v96, "../9Data/Shine/MobAttackSequence/%s.txt", v76, v77); v6 = fopen(&v96, "r"); if ( v6 ) { fclose(v6); sub_6432E0((int)&v89); v99 = 0; if ( !sub_6434A0(&v89, &v96) ) { if ( sub_642790(&v89) != 0 ) { sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Option read error", (int)&v96); v7 = sub_642790(&v89); sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load", v7); loc_6391B0("MagicContainer::mas_Load"); } v99 = -1; sub_643080(&v89); goto LABEL_140; } if ( *(_DWORD *)v1 >= 0x190u ) { v76 = *(_DWORD *)v1; sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Append : Too many element", v76); loc_6391B0("MagicContainer::mas_Append"); } *(_WORD *)(7148 * *(_DWORD *)v1 + v1 + 4) = v4; *(_BYTE *)(7148 * (*(_DWORD *)v1)++ + v1 + 6) = 0; qsort((void *)(v1 + 4), *(_DWORD *)v1, 0x1BECu, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( !(dword_8BB23C & 1) ) { dword_8BB23C |= 1u; LOBYTE(v99) = 1; sub_4A7BD0((int)&unk_8B9A3C); LOBYTE(v99) = 2; sub_4A7BD0((int)&unk_8B9F04); LOBYTE(v99) = 3; sub_4A7BD0((int)&unk_8BA3CC); LOBYTE(v99) = 4; sub_4A7BD0((int)&unk_8BA8A4); LOBYTE(v99) = 5; sub_4A7BD0((int)&unk_8BAD6C); atexit(sub_698BC0); LOBYTE(v99) = 0; } v76 = (int)sub_4A2220; word_8B9650 = v4; v8 = bsearch( &word_8B9650, (const void *)(v1 + 4), *(_DWORD *)v1, 0x1BECu, (int (__cdecl *)(const void *, const void *))sub_4A2220); v9 = *(_DWORD *)v1; v10 = v8; if ( v8 == 0 ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Insert error", v9); loc_6391B0("MagicContainer::mas_Load"); } v11 = 0; j = 0; while ( 1 ) { v76 = (int)&v78; v75 = v11; v74 = j; v73 = (int)"Order"; v86 = &v68; v72 = v11; v71 = v11; v70 = v11; v69 = v11; v68 = v11; strncpy((char *)&v68, "AttSeq", 0x14u); v12 = sub_644C30(&v89, "Attack", v68, v69, v70, v71, v72, (const char *)v73, v74, v75, v76); v13 = v12; if ( v12 == v11 ) break; v14 = *(_BYTE *)v12; if ( *(_BYTE *)v13 == 45 ) { LOWORD(v15) = -1; } else { if ( v14 == 42 ) { v16 = v13 + 1; LOWORD(v15) = -1; if ( strncmp((const char *)v16, "RepeatStart", 0x20u) ) sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Invalid Command", v16); else *((_BYTE *)v10 + 7144) = j + 1; } else { v15 = sub_639620(&unk_13257C80, (unsigned __int8 *)v13); if ( v15 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Null skill", v13); loc_6391B0("MagicContainer::mas_Load"); } } } v17 = *((_BYTE *)v10 + 2); ++j; *((_WORD *)v10 + v17 + 2) = v15; ++*((_BYTE *)v10 + 2); v11 = 0; } for ( j = v11; ; ++j ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { LABEL_38: v76 = j; v86 = &v71; v75 = 0; v74 = 0; v73 = 0; v72 = 0; v71 = 0; strncpy((char *)&v71, "SkillChange", 0x14u); v18 = sub_6442C0(&v89, v71, v72, v73, v74, v75, v76); if ( !v18 ) { v99 = -1; sub_643080(&v89); v1 = v79; goto LABEL_140; } if ( !(dword_8BB23C & 1) ) { dword_8BB23C |= 1u; LOBYTE(v99) = 6; sub_4A7BD0((int)&unk_8B9A3C); LOBYTE(v99) = 7; sub_4A7BD0((int)&unk_8B9F04); LOBYTE(v99) = 8; sub_4A7BD0((int)&unk_8BA3CC); LOBYTE(v99) = 9; sub_4A7BD0((int)&unk_8BA8A4); LOBYTE(v99) = 10; sub_4A7BD0((int)&unk_8BAD6C); atexit(sub_698BC0); LOBYTE(v99) = 0; } v19 = v88; v76 = (int)sub_4A2220; word_8B9650 = v88; v20 = bsearch( &word_8B9650, (const void *)(v79 + 4), *(_DWORD *)v79, 0x1BECu, (int (__cdecl *)(const void *, const void *))sub_4A2220); if ( v20 == 0 ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : SkillExchange Error", v19); loc_6391B0("MagicContainer::mas_Load"); } v21 = *(_DWORD *)(v18 + 4); v22 = *(_DWORD *)(v18 + 12); v23 = *(_DWORD *)v18; v82 = *(_DWORD *)(v18 + 8); v76 = 20; v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; v81 = v21; v24 = *(_DWORD *)(v18 + 16); v83 = v22; v84 = v24; strncpy(v90, "OutOfRange", 0x14u); if ( v23 != *(_DWORD *)v90 ) break; if ( v81 != v91 || v82 != v92 || v83 != v93 || v84 != v94 ) break; if ( !*((_DWORD *)v20 + 1169) ) { v25 = operator new(0x4C8u); v86 = (int *)v25; LOBYTE(v99) = 11; if ( v25 ) v26 = sub_4A7BD0(v25); else v26 = 0; LOBYTE(v99) = 0; *((_DWORD *)v20 + 1169) = v26; } v27 = *((_DWORD *)v20 + 1169); if ( *(_WORD *)(v27 + 12) == -1 ) { v28 = 0; } else { v29 = *(_DWORD *)v27; v76 = *(_WORD *)(v27 + 12); v28 = (void *)(*(int (__stdcall **)(int))(v29 + 8))(v76); } if ( !v28 ) { sub_639100( &unk_86DDD8, (int)"MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)v88); loc_6391B0("MobAttackSequence::mas_Load"); } v30 = sub_649DA0(v18 + 20, (int)&v97); v31 = atoi((const char *)v30); sub_4A78D0(v28, v18 + 40, v18 + 73, v31); ++j; } v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, "HPLow", 0x14u); if ( v23 != *(_DWORD *)v90 ) break; if ( v81 != v91 || v82 != v92 || v83 != v93 || v84 != v94 ) break; if ( !*((_DWORD *)v20 + 1170) ) { v32 = operator new(0x4C8u); v86 = (int *)v32; LOBYTE(v99) = 12; if ( v32 ) v33 = sub_4A7BD0(v32); else v33 = 0; LOBYTE(v99) = 0; *((_DWORD *)v20 + 1170) = v33; } v34 = *((_DWORD *)v20 + 1170); if ( *(_WORD *)(v34 + 12) == -1 ) { v35 = 0; } else { v36 = *(_DWORD *)v34; v76 = *(_WORD *)(v34 + 12); v35 = (void *)(*(int (__stdcall **)(int))(v36 + 8))(v76); } if ( !v35 ) { sub_639100( &unk_86DDD8, (int)"MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)v88); loc_6391B0("MobAttackSequence::mas_Load"); } v37 = sub_649DA0(v18 + 20, (int)&v97); v38 = atoi((const char *)v37); sub_4A78D0(v35, v18 + 40, v18 + 73, v38); ++j; } v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, "TargetState", 0x14u); if ( v23 != *(_DWORD *)v90 ) break; if ( v81 != v91 || v82 != v92 || v83 != v93 || v84 != v94 ) break; if ( !*((_DWORD *)v20 + 1171) ) { v39 = operator new(0x4C8u); v86 = (int *)v39; LOBYTE(v99) = 13; if ( v39 ) v40 = sub_4A7BD0(v39); else v40 = 0; LOBYTE(v99) = 0; *((_DWORD *)v20 + 1171) = v40; } v41 = *((_DWORD *)v20 + 1171); if ( *(_WORD *)(v41 + 12) == -1 ) { v87 = 0; } else { v42 = *(_DWORD *)v41; v76 = *(_WORD *)(v41 + 12); v87 = (*(int (__stdcall **)(int))(v42 + 8))(v76); } v43 = v88; if ( !v87 ) { sub_639100( &unk_86DDD8, (int)"MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)v88); loc_6391B0("MobAttackSequence::mas_Load"); } if ( sub_649D90((void *)(v18 + 20)) ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Invalid ABState", v43); loc_6391B0("MobAttackSequence::mas_Load"); } v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, "-", 0x14u); if ( *(_DWORD *)(v18 + 20) != *(_DWORD *)v90 || *(_DWORD *)(v18 + 24) != v91 || *(_DWORD *)(v18 + 28) != v92 || *(_DWORD *)(v18 + 32) != v93 || *(_DWORD *)(v18 + 36) != v94 ) { v44 = sub_649DA0(v18 + 20, (int)&v97); v45 = sub_639620(&unk_877F50, (unsigned __int8 *)v44); if ( v45 == -1 ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Invalid ABState", v43); loc_6391B0("MobAttackSequence::mas_Load"); } v46 = sub_4012D0((int)&unk_877138, v45); if ( v46 == 0 ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Invalid ABState", v43); loc_6391B0("MobAttackSequence::mas_Load"); } v76 = *(_DWORD *)(*(_DWORD *)v46 + 34); sub_4A78D0((void *)v87, v18 + 40, v18 + 73, v76); ++j; } else { sub_4A78D0((void *)v87, v18 + 40, v18 + 73, 65535); ++j; } } v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, "NextSkill", 0x14u); if ( v23 != *(_DWORD *)v90 ) break; if ( v81 != v91 || v82 != v92 || v83 != v93 || v84 != v94 ) break; if ( !*((_DWORD *)v20 + 1172) ) { v47 = operator new(0x4C8u); v86 = (int *)v47; LOBYTE(v99) = 14; if ( v47 ) v48 = sub_4A7BD0(v47); else v48 = 0; LOBYTE(v99) = 0; *((_DWORD *)v20 + 1172) = v48; } v49 = *((_DWORD *)v20 + 1172); if ( *(_WORD *)(v49 + 12) == -1 ) { v50 = 0; } else { v51 = *(_DWORD *)v49; v76 = *(_WORD *)(v49 + 12); v50 = (void *)(*(int (__stdcall **)(int))(v51 + 8))(v76); } if ( !v50 ) { sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)v88); loc_6391B0("MobAttackSequence::mas_Load"); } v52 = sub_649DA0(v18 + 20, (int)&v97); v53 = atoi((const char *)v52); sub_4A78D0(v50, v18 + 40, v18 + 73, v53); ++j; } v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)v90 = 0; strncpy(v90, "HPLow_ChangeOrder", 0x14u); if ( v23 == *(_DWORD *)v90 ) { if ( v81 == v91 && v82 == v92 && v83 == v93 && v84 == v94 ) break; } v66 = sub_649DA0(v18, (int)&v95); sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : Invalid condition", v66); loc_6391B0("MobAttackSequence::mas_Load"); } if ( !*((_DWORD *)v20 + 1785) ) { v54 = operator new(0x4C8u); v86 = (int *)v54; LOBYTE(v99) = 15; if ( v54 ) v55 = sub_4A7BD0(v54); else v55 = 0; LOBYTE(v99) = 0; *((_DWORD *)v20 + 1785) = v55; } v56 = *((_DWORD *)v20 + 1785); if ( *(_WORD *)(v56 + 12) == -1 ) { v57 = 0; goto LABEL_132; } v58 = *(_DWORD *)v56; v76 = *(_WORD *)(v56 + 12); v57 = (*(int (__stdcall **)(int))(v58 + 8))(v76); if ( !v57 ) { LABEL_132: sub_639100(&unk_86DDD8, (int)"MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)v88); loc_6391B0("MobAttackSequence::mas_Load"); } v59 = sub_649DA0(v18 + 20, (int)&v97); v60 = v18 + 73; v86 = (int *)atoi((const char *)v59); v61 = atoi((const char *)(v18 + 40)); v62 = *(_BYTE *)(v18 + 73) == 45; v87 = v61; if ( v62 ) { LOWORD(v63) = -1; } else { v63 = sub_639670(&unk_13257C80, v60); if ( v63 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobAttackSequence::SkillChange::sc_Store : Null skill", v60); loc_6391B0("MagicContainer::mas_Load"); } } v64 = v87; v65 = (int)v86; ++j; *(_WORD *)v57 = -1; *(_DWORD *)(v57 + 8) = v64; *(_WORD *)(v57 + 2) = v63; *(_DWORD *)(v57 + 4) = v65; goto LABEL_38; } LABEL_140: v2 = dword_14D16010; result = i + 1; i = result; if ( result >= (unsigned int)dword_14D16010 ) break; } return result; } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; // 8B9650: using guessed type __int16 word_8B9650; // 8BB23C: using guessed type int dword_8BB23C; // 14D1600C: using guessed type int dword_14D1600C; // 14D16010: using guessed type int dword_14D16010; // 14D16014: using guessed type int dword_14D16014; //----- (004A8B20) -------------------------------------------------------- signed int __thiscall sub_4A8B20(void *this, int a2, int a3, char a4) { int v4; // eax@2 char v5; // al@5 int v6; // edi@6 signed int result; // eax@7 int v8; // ebx@9 int v9; // ebx@11 signed int v10; // ecx@11 signed int v11; // esi@11 int v12; // eax@12 __int16 v13; // dx@18 signed int v14; // ecx@19 unsigned int v15; // esi@19 int v16; // ebx@20 int v17; // eax@20 void *v18; // ebx@25 int v19; // ebx@27 int v20; // eax@30 unsigned __int16 v21; // di@30 int v22; // esi@30 unsigned __int16 v23; // cx@30 int v24; // eax@33 unsigned __int16 v25; // dx@33 int v26; // eax@34 bool v27; // zf@34 int v28; // eax@34 int v29; // eax@35 int v30; // eax@40 signed int v31; // ecx@43 int v32; // edi@44 int v33; // eax@47 int v34; // esi@53 int v35; // esi@54 int v36; // [sp+14h] [bp-1Ch]@6 void *v37; // [sp+18h] [bp-18h]@1 signed int v38; // [sp+1Ch] [bp-14h]@18 int v39; // [sp+20h] [bp-10h]@9 signed int v40; // [sp+38h] [bp+8h]@43 int v41; // [sp+40h] [bp+10h]@30 v37 = this; sub_4675D0((int)&unk_D020420, (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill"); dword_7508B8[dword_750CB8] = (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 ) goto LABEL_60; v4 = (**(int (__thiscall ***)(_DWORD))a2)(a2); if ( v4 ) { while ( (_UNKNOWN *)v4 != &unk_132460EC ) { v4 = *(_DWORD *)(v4 + 4); if ( !v4 ) goto LABEL_5; } v5 = 1; } else { LABEL_5: v5 = 0; } v6 = v5 != 0 ? a2 : 0; v36 = v5 != 0 ? a2 : 0; if ( v5 != 0 ? a2 : 0 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1804))(v6); v39 = v8; if ( a4 && sub_548710(v6) != -1 ) { v9 = (unsigned __int16)sub_548710(v6); sub_548720(v6, -1); v10 = *(_DWORD *)(v39 + 12); v11 = 1; if ( v10 <= 1 ) { LABEL_16: sub_639100(&unk_86DDD8, (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill : skill not found", v9); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill"); result = 0; } else { v12 = *(_DWORD *)(v39 + 8) + 12; while ( !*(_DWORD *)v12 || *(_WORD *)(v12 + 4) != (_WORD)v9 ) { ++v11; v12 += 12; if ( v11 >= v10 ) goto LABEL_16; } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 2804))(v6, 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill"); result = v11; } } else { v13 = *((_WORD *)v37 + *(_DWORD *)a3 + 2); v38 = 0; if ( v13 != -1 ) { v14 = *(_DWORD *)(v8 + 12); v15 = 1; if ( v14 > 1 ) { v16 = *(_DWORD *)(v8 + 8); v17 = v16 + 12; while ( !*(_DWORD *)v17 || *(_WORD *)(v17 + 4) != v13 ) { ++v15; v17 += 12; if ( (signed int)v15 >= v14 ) goto LABEL_29; } v18 = sub_447910((int)&unk_132577A0, *(_WORD *)(v16 + 12 * v15 + 4)); if ( v18 ) { if ( (unsigned int)(*(int (**)(void))(*(_DWORD *)a2 + 1260))() >= *(_DWORD *)(*((_DWORD *)v18 + 1) + 160) ) { v19 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v19 <= sub_4A9410(v6, v15) ) v38 = v15; } } } } LABEL_29: if ( a4 ) { v20 = *((_DWORD *)v37 + 1172); v21 = *(_WORD *)(v20 + 4); v22 = *(_DWORD *)(v20 + 8); v23 = *(_WORD *)(v22 + 12 * *(_WORD *)(v20 + 14) + 4); v41 = *(_WORD *)(v20 + 4); while ( v23 < v21 ) { v24 = v23; v25 = v23; v23 = *(_WORD *)(v22 + 12 * v23 + 4); if ( v25 >= v21 || (v26 = 3 * v24, v27 = *(_BYTE *)(v22 + 4 * v26 + 8) == 0, v28 = v22 + 4 * v26, v27) ) v29 = 0; else v29 = *(_DWORD *)v28; if ( *(_WORD *)v29 == *(_WORD *)(*(_DWORD *)(v39 + 8) + 12 * v38 + 4) ) { if ( v25 < (unsigned __int16)v41 && *(_BYTE *)(v22 + 12 * v25 + 8) ) v30 = *(_DWORD *)(v22 + 12 * v25); else v30 = 0; if ( *(_WORD *)(v30 + 2) != -1 ) { v31 = 1; v40 = *(_DWORD *)(v39 + 12); if ( v40 > 1 ) { v32 = *(_DWORD *)(v39 + 8) + 16; while ( 1 ) { v33 = v25 < (unsigned __int16)v41 && *(_BYTE *)(v22 + 12 * v25 + 8) ? *(_DWORD *)(v22 + 12 * v25) : 0; if ( *(_WORD *)v32 == *(_WORD *)(v33 + 2) ) break; ++v31; v32 += 12; if ( v31 >= v40 ) goto LABEL_57; } if ( v25 >= (unsigned __int16)v41 || (v27 = *(_BYTE *)(v22 + 12 * v25 + 8) == 0, v34 = v22 + 12 * v25, v27) ) v35 = 0; else v35 = *(_DWORD *)v34; sub_548720(v36, *(_WORD *)(v35 + 2)); } } break; } v21 = v41; } } LABEL_57: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill"); result = v38; } } else { LABEL_60: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobAttackSequence::AttackElement4Mob::ae4m_NextSkill"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A8ED0) -------------------------------------------------------- int __thiscall sub_4A8ED0(int this) { return sub_62F1C0( (int)dword_D711FE0, *(_DWORD *)(*(_DWORD *)(this + 20) + 28), *(_DWORD *)(*(_DWORD *)(this + 20) + 32), *(_DWORD *)(*(_DWORD *)(this + 20) + 20)); } //----- (004A8EF0) -------------------------------------------------------- void *__thiscall sub_4A8EF0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6BD53C; return result; } // 6BD53C: using guessed type int (__thiscall *off_6BD53C)(void *, char); //----- (004A8F10) -------------------------------------------------------- void *__thiscall sub_4A8F10(void *this) { void *v1; // esi@1 v1 = this; sub_588320((int)((char *)this + 20)); return v1; } //----- (004A8F20) -------------------------------------------------------- void __thiscall sub_4A8F20(int this) { sub_588340((void *)(this + 20)); } //----- (004A8F30) -------------------------------------------------------- void *__thiscall sub_4A8F30(void *this) { void *v1; // esi@1 v1 = this; sub_427BE0(this); *(_DWORD *)v1 = &off_6BD554; return v1; } // 6BD554: using guessed type int (__stdcall *off_6BD554)(int, int, int); //----- (004A8F50) -------------------------------------------------------- void __thiscall sub_4A8F50(void *this) { *(_DWORD *)this = &off_6BD554; sub_427EB0(this); } // 6BD554: using guessed type int (__stdcall *off_6BD554)(int, int, int); //----- (004A8F60) -------------------------------------------------------- bool __stdcall sub_4A8F60(unsigned __int8 a1, unsigned __int8 a2) { return a1 - a2 > 10; } //----- (004A8F80) -------------------------------------------------------- bool __stdcall sub_4A8F80(int a1) { bool result; // al@2 if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 996))(a1, 499) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 996))(a1, 291) ) result = 1; else result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 996))(a1, 75) != 0; return result; } //----- (004A8FD0) -------------------------------------------------------- bool __stdcall sub_4A8FD0(int a1, int a2) { unsigned __int16 v3; // ax@6 int v4; // eax@7 int v5; // eax@8 return !a1 || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a1 + 996))(a1, 291) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a1 + 996))(a1, 499) || !a2 || (v3 = (*(int (**)(void))(*(_DWORD *)a2 + 1800))(), v3 == -1) || (v4 = sub_418D40((int)&unk_14D159B0, v3)) == 0 || (v5 = *(_DWORD *)(v4 + 4)) == 0 || *(_DWORD *)(v5 + 45) != 4 && ((unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)a1 + 996))(a1, 75) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)a1 + 996))(a1, 77)); } //----- (004A9080) -------------------------------------------------------- char __thiscall sub_4A9080(int this) { return *(_BYTE *)(this + 160910); } //----- (004A9090) -------------------------------------------------------- bool __stdcall sub_4A9090(int a1) { bool result; // al@2 if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 996))(a1, 291) ) result = 1; else result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 996))(a1, 499) != 0; return result; } //----- (004A90D0) -------------------------------------------------------- int __thiscall sub_4A90D0(int this) { return *(_DWORD *)(this + 8192); } //----- (004A90E0) -------------------------------------------------------- int __thiscall sub_4A90E0(void *this, int a2, __int16 a3) { int result; // eax@1 LOWORD(result) = a3; *(_WORD *)((char *)this + a2 + 9573) = a3; return result; } //----- (004A9100) -------------------------------------------------------- __int16 __thiscall sub_4A9100(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 9648) = a2; return result; } //----- (004A9120) -------------------------------------------------------- signed int __stdcall sub_4A9120(int a1, int a2) { return -1; } //----- (004A9130) -------------------------------------------------------- int __thiscall sub_4A9130(int this, int a2, int a3, unsigned __int16 a4, int a5, int a6, unsigned __int16 a7) { int result; // eax@1 *(_DWORD *)(this + 4348) = a2; *(_DWORD *)(this + 4344) = a3; *(_DWORD *)(this + 4368) = a5; *(_DWORD *)(this + 4356) = a4; result = a6; *(_DWORD *)(this + 4364) = a6; *(_DWORD *)(this + 4376) = a7; return result; } //----- (004A9170) -------------------------------------------------------- void *__thiscall sub_4A9170(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BD53C; if ( a2 & 1 ) operator delete(this); return v2; } // 6BD53C: using guessed type int (__thiscall *off_6BD53C)(void *, char); //----- (004A91A0) -------------------------------------------------------- void *__thiscall sub_4A91A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BD554; sub_427EB0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BD554: using guessed type int (__stdcall *off_6BD554)(int, int, int); //----- (004A91D0) -------------------------------------------------------- char __thiscall sub_4A91D0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@1 unsigned __int16 v6; // ax@1 char v7; // al@6 int v8; // edx@6 int v9; // ecx@6 int v10; // eax@7 char v11; // al@8 unsigned __int8 v12; // al@14 unsigned __int8 v13; // al@14 int v15; // [sp+2Ch] [bp+Ch]@14 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetSelector::ali_Work"); dword_7508B8[dword_750CB8] = (int)"MobTargetSelector::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v5 = a3; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1800))(a3); if ( sub_63EDC0((int)&unk_14D159B0, v6, 1) && (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2252))(a3) && (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)a2 + 2432))( a2, a3, "MobTargetAggresive::ali_Work") && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2308))(a3) ) { v7 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 291); v8 = *(_DWORD *)a3; v9 = a3; if ( v7 || (v11 = (*(int (__thiscall **)(int, signed int))(v8 + 996))(a3, 499), v8 = *(_DWORD *)a3, v9 = a3, v11) ) { v10 = (*(int (__thiscall **)(int))(v8 + 1388))(v9); sub_418B40((int)byte_85A2C0, v10); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v8 + 1156))(a3) != 3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) ) { if ( sub_427B40(*(_DWORD *)(a3 + 118), *(_DWORD *)(a2 + 118)) ) { if ( sub_499E90(a3, a2) ) { if ( !sub_4A8FD0(a3, a2) ) { v15 = *(_DWORD *)v4; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2); v13 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 1240))(v5, v12); if ( !(unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(v15 + 64))(v4, v13) ) { if ( a4 < *((_DWORD *)v4 + 2) ) { *((_DWORD *)v4 + 2) = a4; *((_DWORD *)v4 + 1) = (char *)v4 + 24; *((_DWORD *)v4 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v4 + 12) = *(_WORD *)(v5 + 4); *((_DWORD *)v4 + 8) = v5; } } } } } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTargetSelector::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A93D0) -------------------------------------------------------- char __thiscall sub_4A93D0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 char result; // al@2 v4 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2528))(a3) ) result = 1; else result = sub_4A91D0(v4, a2, a3, a4); return result; } //----- (004A9410) -------------------------------------------------------- int __thiscall sub_4A9410(int this, unsigned int a2) { int result; // eax@2 int v3; // ecx@3 if ( (*(_DWORD *)(this + 9508) - *(_DWORD *)(this + 9504)) >> 1 <= a2 ) { v3 = *(_DWORD *)(this + 8168); if ( *(_DWORD *)(v3 + 12) <= (signed int)a2 ) result = 0; else result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 8) + 12 * a2) + 71); } else { result = *(_WORD *)(*(_DWORD *)(this + 9504) + 2 * a2); } return result; } //----- (004A9460) -------------------------------------------------------- int __thiscall sub_4A9460(void *this, const void *a2, int a3) { void *v3; // esi@1 bool v4; // zf@1 int v5; // ecx@2 int v6; // eax@2 int v7; // esi@2 int result; // eax@2 char v9; // [sp+Ch] [bp-20h]@2 int v10; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [bp-4h]@1 v3 = this; v10 = (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 126) == 0; v11 = 0; if ( v4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec"); result = 0; } else { sub_5D4460((int)&v9, a3); v5 = *(_DWORD *)((char *)v3 + 126); LOBYTE(v11) = 1; LOBYTE(v6) = sub_4613B0(v5, a2, (int)&v9); v7 = v6; LOBYTE(v11) = 0; sub_5D4580(&v9); --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9560) -------------------------------------------------------- int __thiscall sub_4A9560(void *this, const void *a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@2 int v6; // esi@2 int result; // eax@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec2"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec2"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 126); if ( v4 ) { LOBYTE(v5) = sub_4613B0(v4, a2, a3); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec2"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec2"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9650) -------------------------------------------------------- int __cdecl sub_4A9650() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_GetMonEXP"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_GetMonEXP"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_GetMonEXP"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A96A0) -------------------------------------------------------- int __thiscall sub_4A96A0(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetMonEXP"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_GetMonEXP"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 2392); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetMonEXP"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9700) -------------------------------------------------------- int __stdcall sub_4A9700(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetMobResist"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SetMobResist"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetMobResist"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9750) -------------------------------------------------------- int __thiscall sub_4A9750(void *this, const char *a2) { void *v2; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( strcmp(a2, "ED_BOUT") ) { if ( strcmp(a2, "ED_AGGRESSIVE") ) { if ( strcmp(a2, "ED_NOBRAIN") ) { if ( strcmp(a2, "ED_AGGRESSIVE2") ) { if ( strcmp(a2, "ED_AGGREESIVEALL") ) *((_DWORD *)v2 + 2407) = (strcmp(a2, "ED_ENEMYALLDETECT") != 0) + 5; else *((_DWORD *)v2 + 2407) = 4; } else { *((_DWORD *)v2 + 2407) = 3; } } else { *((_DWORD *)v2 + 2407) = 2; } } else { *((_DWORD *)v2 + 2407) = 1; } } else { *((_DWORD *)v2 + 2407) = 0; } sub_4B1BA0(v2); --dword_750CB8; } else { *((_DWORD *)v2 + 2407) = 6; --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9990) -------------------------------------------------------- int __stdcall sub_4A9990(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A99E0) -------------------------------------------------------- int __thiscall sub_4A99E0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"; dword_750AB8[dword_750CB8++] = -1; switch ( a2 ) { case 0: *((_DWORD *)v2 + 2407) = 0; break; case 1: *((_DWORD *)v2 + 2407) = 1; break; case 2: *((_DWORD *)v2 + 2407) = 2; break; case 3: *((_DWORD *)v2 + 2407) = 3; break; case 4: *((_DWORD *)v2 + 2407) = 4; break; case 5: *((_DWORD *)v2 + 2407) = 5; break; default: *((_DWORD *)v2 + 2407) = 6; break; } sub_4B1BA0(v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9B00) -------------------------------------------------------- int __stdcall sub_4A9B00(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9B50) -------------------------------------------------------- int __thiscall sub_4A9B50(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 2408) = a2; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9BC0) -------------------------------------------------------- int __thiscall sub_4A9BC0(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v2 + 9572) = a2; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9C30) -------------------------------------------------------- _UNKNOWN *__stdcall sub_4A9C30(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"MobActionElement::mae_Action"); dword_7508B8[dword_750CB8] = (int)"MobActionElement::mae_Action"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobActionElement::mae_Action"); return &unk_D9FB7EC; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9C80) -------------------------------------------------------- int __thiscall sub_4A9C80(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // dx@1 int v5; // ecx@1 int v6; // eax@1 unsigned __int16 v7; // dx@1 unsigned __int16 v8; // bx@2 int v9; // eax@3 int v10; // esi@3 unsigned __int16 v11; // dx@3 bool v12; // zf@3 int v13; // eax@3 int v14; // eax@4 unsigned __int16 v15; // ax@6 int v16; // eax@8 int v17; // eax@8 int v18; // edx@12 int v19; // eax@13 int v20; // ecx@17 int v21; // eax@20 int v22; // eax@20 int v23; // eax@21 int v24; // edx@25 int v25; // eax@26 int v26; // ecx@30 int v27; // eax@31 int v28; // edx@35 int v29; // eax@36 int v30; // ecx@40 int v31; // eax@41 int v32; // eax@43 unsigned __int16 v34; // [sp+10h] [bp-24h]@1 unsigned __int16 v35; // [sp+12h] [bp-22h]@1 int v36; // [sp+14h] [bp-20h]@1 int v37; // [sp+18h] [bp-1Ch]@1 int v38; // [sp+1Ch] [bp-18h]@1 int v39; // [sp+20h] [bp-14h]@1 int v40; // [sp+24h] [bp-10h]@1 int v41; // [sp+30h] [bp-4h]@1 v2 = this; v38 = (int)"MobTargetBout::mts_GetTopAggroTarget"; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_GetTopAggroTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_GetTopAggroTarget"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v4 = *(_WORD *)(v3 + 4); v5 = *(_DWORD *)(v3 + 8); v41 = 0; v40 = 0; v39 = 0; v37 = 0; v6 = 3 * *(_WORD *)(v3 + 14); v34 = v4; v7 = *(_WORD *)(v5 + 4 * v6 + 4); v36 = v3; v35 = v7; while ( 1 ) { v8 = v35; if ( v35 >= *(_WORD *)(v3 + 4) ) break; v9 = *(_DWORD *)(v3 + 8); v10 = v35; v11 = *(_WORD *)(v9 + 12 * v35 + 4); v12 = *(_BYTE *)(v9 + 12 * v35 + 8) == 0; v13 = v9 + 12 * v35; v34 = v35; v35 = v11; if ( v12 ) v14 = 0; else v14 = *(_DWORD *)v13; v15 = (*(int (**)(void))(**(_DWORD **)(v14 + 8) + 1800))(); if ( sub_63EDC0((int)&unk_14D159B0, v15, 1) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v18 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v18 + 12 * v8 + 8)) ) v19 = *(_DWORD *)(v18 + 12 * v10); else v19 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v19 + 8) + 40))() ) { if ( v8 < *(_WORD *)(v3 + 4) && (v20 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v20 + 12 * v8 + 8)) ) *(_DWORD *)(*(_DWORD *)(v20 + 12 * v10) + 12) = 0; else LABEL_10: vC = 0; } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v21 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v21 + 12 * v8 + 8) == 0, v22 = v21 + 12 * v8, v12) ) v23 = 0; else v23 = *(_DWORD *)v22; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v23 + 8) + 996))(291) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v24 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v24 + 12 * v8 + 8)) ) v25 = *(_DWORD *)(v24 + 12 * v10); else v25 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v25 + 8) + 996))(499) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v26 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v26 + 12 * v8 + 8)) ) v27 = *(_DWORD *)(v26 + 12 * v10); else v27 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v27 + 8) + 996))(335) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v28 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v28 + 12 * v8 + 8)) ) v29 = *(_DWORD *)(v28 + 12 * v10); else v29 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v29 + 8) + 996))(562) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v30 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v30 + 12 * v8 + 8)) ) v31 = *(_DWORD *)(v30 + 12 * v10); else v31 = 0; v32 = *(_DWORD *)(v31 + 12); if ( v32 > v40 ) { v40 = v32; v39 = *(_DWORD *)(sub_4A2CF0((int)&v34) + 8); } } } } } } } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v16 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v16 + 12 * v8 + 8) == 0, v17 = v16 + 12 * v8, v12) ) goto LABEL_10; *(_DWORD *)(*(_DWORD *)v17 + 12) = 0; } } --dword_750CB8; v41 = -1; sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_GetTopAggroTarget"); return v39; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004A9F30) -------------------------------------------------------- int __thiscall sub_4A9F30(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // dx@1 int v5; // ecx@1 int v6; // eax@1 unsigned __int16 v7; // dx@1 unsigned __int16 v8; // bx@2 int v9; // eax@3 int v10; // esi@3 unsigned __int16 v11; // dx@3 bool v12; // zf@3 int v13; // eax@3 int v14; // eax@4 unsigned __int16 v15; // ax@6 int v16; // eax@8 int v17; // eax@8 int v18; // edx@12 int v19; // eax@13 int v20; // ecx@17 int v21; // eax@20 int v22; // eax@20 int v23; // eax@21 int v24; // edx@25 int v25; // eax@26 int v26; // edx@29 int v27; // eax@30 int v28; // ecx@34 int v29; // eax@35 int v30; // ecx@38 _BYTE *v31; // ecx@38 int v32; // edx@40 int v33; // eax@41 int v34; // ecx@45 int v35; // eax@46 unsigned __int16 v36; // cx@49 int v37; // eax@50 int v38; // eax@50 int v39; // eax@51 signed int v40; // ebx@53 int v41; // edx@54 int v42; // eax@55 int v43; // eax@59 int v44; // ecx@59 unsigned __int16 v46; // [sp+10h] [bp-24h]@1 unsigned __int16 v47; // [sp+12h] [bp-22h]@1 int v48; // [sp+14h] [bp-20h]@1 int v49; // [sp+18h] [bp-1Ch]@1 int v50; // [sp+1Ch] [bp-18h]@1 int v51; // [sp+20h] [bp-14h]@1 int v52; // [sp+24h] [bp-10h]@1 int v53; // [sp+30h] [bp-4h]@1 v2 = this; v50 = (int)"MobTargetAggresive::mts_GetTopAggroTarget"; sub_4675D0((int)&unk_D020420, (int)"MobTargetAggresive::mts_GetTopAggroTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetAggresive::mts_GetTopAggroTarget"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v4 = *(_WORD *)(v3 + 4); v5 = *(_DWORD *)(v3 + 8); v53 = 0; v52 = 0; v51 = 0; v49 = 0; v6 = 3 * *(_WORD *)(v3 + 14); v46 = v4; v7 = *(_WORD *)(v5 + 4 * v6 + 4); v48 = v3; v47 = v7; while ( 1 ) { v8 = v47; if ( v47 >= *(_WORD *)(v3 + 4) ) break; v9 = *(_DWORD *)(v3 + 8); v10 = v47; v11 = *(_WORD *)(v9 + 12 * v47 + 4); v12 = *(_BYTE *)(v9 + 12 * v47 + 8) == 0; v13 = v9 + 12 * v47; v46 = v47; v47 = v11; if ( v12 ) v14 = 0; else v14 = *(_DWORD *)v13; v15 = (*(int (**)(void))(**(_DWORD **)(v14 + 8) + 1800))(); if ( sub_63EDC0((int)&unk_14D159B0, v15, 1) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v18 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v18 + 12 * v8 + 8)) ) v19 = *(_DWORD *)(v18 + 12 * v10); else v19 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v19 + 8) + 40))() ) { if ( v8 < *(_WORD *)(v3 + 4) && (v20 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v20 + 12 * v8 + 8)) ) *(_DWORD *)(*(_DWORD *)(v20 + 12 * v10) + 12) = 0; else LABEL_10: vC = 0; } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v21 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v21 + 12 * v8 + 8) == 0, v22 = v21 + 12 * v8, v12) ) v23 = 0; else v23 = *(_DWORD *)v22; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v23 + 8) + 996))(291) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v24 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v24 + 12 * v8 + 8)) ) v25 = (*(int (**)(void))(**(_DWORD **)(*(_DWORD *)(v24 + 12 * v10) + 8) + 1388))(); else v25 = (*(int (**)(void))(*::v8 + 1388))(); goto LABEL_38; } if ( v8 < *(_WORD *)(v3 + 4) && (v26 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v26 + 12 * v8 + 8)) ) v27 = *(_DWORD *)(v26 + 12 * v10); else v27 = 0; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v27 + 8) + 996))(499) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v28 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v28 + 12 * v8 + 8)) ) v29 = *(_DWORD *)(v28 + 12 * v10); else v29 = 0; v25 = (*(int (**)(void))(**(_DWORD **)(v29 + 8) + 1388))(); LABEL_38: v30 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v30; v31 = &byte_85A2C0[256 * v30]; *(_DWORD *)v31 = *(_DWORD *)v25; *((_DWORD *)v31 + 1) = *(_DWORD *)(v25 + 4); *((_DWORD *)v31 + 2) = *(_DWORD *)(v25 + 8); *((_DWORD *)v31 + 3) = *(_DWORD *)(v25 + 12); *((_DWORD *)v31 + 4) = *(_DWORD *)(v25 + 16); v31[20] = 0; } else { if ( v8 < *(_WORD *)(v3 + 4) && (v32 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v32 + 12 * v8 + 8)) ) v33 = *(_DWORD *)(v32 + 12 * v10); else v33 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v33 + 8) + 996))(335) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v34 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v34 + 12 * v8 + 8)) ) v35 = *(_DWORD *)(v34 + 12 * v10); else v35 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v35 + 8) + 996))(562) ) { v36 = *(_WORD *)(v3 + 4); if ( v8 >= v36 || (v37 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v37 + 12 * v8 + 8) == 0, v38 = v37 + 12 * v8, v12) ) v39 = 0; else v39 = *(_DWORD *)v38; v40 = *(_DWORD *)(v39 + 12); if ( v46 < v36 && (v41 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v41 + 12 * v10 + 8)) ) v42 = *(_DWORD *)(v41 + 12 * v10); else v42 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v42 + 8) + 2536))() ) { v40 = 1; } else { v43 = sub_4A2CF0((int)&v46); v44 = sub_402710(a2, *(_DWORD *)(v43 + 8)); if ( v44 > 250000 ) v40 /= 2; if ( v44 > 1000000 ) v40 = 0; } if ( v40 > v52 ) { v52 = v40; v51 = *(_DWORD *)(sub_4A2CF0((int)&v46) + 8); } } } } } } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v16 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v16 + 12 * v8 + 8) == 0, v17 = v16 + 12 * v8, v12) ) goto LABEL_10; *(_DWORD *)(*(_DWORD *)v17 + 12) = 0; } } --dword_750CB8; v53 = -1; sub_467660((int)&unk_D020420, (int)"MobTargetAggresive::mts_GetTopAggroTarget"); return v51; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (004AA2E0) -------------------------------------------------------- int __thiscall sub_4AA2E0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 i; // bx@1 int v5; // eax@4 unsigned __int16 v6; // dx@4 bool v7; // zf@4 int v8; // eax@4 int v9; // eax@5 unsigned __int16 v10; // ax@7 int v11; // eax@9 int v12; // eax@9 int v13; // edx@13 int v14; // eax@14 int v15; // ecx@18 int v16; // eax@21 int v17; // eax@21 int v18; // eax@22 int v19; // edx@26 int v20; // eax@27 int v21; // ecx@31 int v22; // eax@32 int v23; // edx@36 int v24; // eax@37 int v25; // ecx@41 int v26; // eax@42 unsigned __int16 v28; // [sp+12h] [bp-1Eh]@4 int v29; // [sp+20h] [bp-10h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetAggresiveALL::mts_GetTopAggroTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetAggresiveALL::mts_GetTopAggroTarget"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v29 = 0; for ( i = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); i < *(_WORD *)(v3 + 4); i = v28 ) { v5 = *(_DWORD *)(v3 + 8); v6 = *(_WORD *)(v5 + 12 * i + 4); v7 = *(_BYTE *)(v5 + 12 * i + 8) == 0; v8 = v5 + 12 * i; v28 = v6; if ( v7 ) v9 = 0; else v9 = *(_DWORD *)v8; v10 = (*(int (**)(void))(**(_DWORD **)(v9 + 8) + 1800))(); if ( !sub_63EDC0((int)&unk_14D159B0, v10, 1) ) { if ( i < *(_WORD *)(v3 + 4) ) { v11 = *(_DWORD *)(v3 + 8); v7 = *(_BYTE *)(v11 + 12 * i + 8) == 0; v12 = v11 + 12 * i; if ( !v7 ) { *(_DWORD *)(*(_DWORD *)v12 + 12) = 0; continue; } } LABEL_11: vC = 0; continue; } if ( i < *(_WORD *)(v3 + 4) && (v13 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v13 + 12 * i + 8)) ) v14 = *(_DWORD *)(v13 + 12 * i); else v14 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v14 + 8) + 40))() ) { if ( i >= *(_WORD *)(v3 + 4) || (v15 = *(_DWORD *)(v3 + 8), !*(_BYTE *)(v15 + 12 * i + 8)) ) goto LABEL_11; *(_DWORD *)(*(_DWORD *)(v15 + 12 * i) + 12) = 0; } else { if ( i >= *(_WORD *)(v3 + 4) || (v16 = *(_DWORD *)(v3 + 8), v7 = *(_BYTE *)(v16 + 12 * i + 8) == 0, v17 = v16 + 12 * i, v7) ) v18 = 0; else v18 = *(_DWORD *)v17; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v18 + 8) + 996))(291) ) { if ( i < *(_WORD *)(v3 + 4) && (v19 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v19 + 12 * i + 8)) ) v20 = *(_DWORD *)(v19 + 12 * i); else v20 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v20 + 8) + 996))(499) ) { if ( i < *(_WORD *)(v3 + 4) && (v21 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v21 + 12 * i + 8)) ) v22 = *(_DWORD *)(v21 + 12 * i); else v22 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v22 + 8) + 996))(335) ) { if ( i < *(_WORD *)(v3 + 4) && (v23 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v23 + 12 * i + 8)) ) v24 = *(_DWORD *)(v23 + 12 * i); else v24 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v24 + 8) + 996))(562) ) { if ( i < *(_WORD *)(v3 + 4) && (v25 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v25 + 12 * i + 8)) ) v26 = *(_DWORD *)(v25 + 12 * i); else v26 = 0; v29 = *(_DWORD *)(v26 + 8); break; } } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTargetAggresiveALL::mts_GetTopAggroTarget"); return v29; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AA560) -------------------------------------------------------- char __thiscall sub_4AA560(int this, int a2) { int v2; // ebx@1 int v3; // edi@1 unsigned __int16 v4; // ax@1 unsigned __int16 v5; // cx@3 int v6; // esi@4 unsigned __int16 v7; // bx@4 int v8; // eax@4 bool v9; // zf@5 int v10; // eax@5 int v11; // eax@6 unsigned __int16 v12; // ax@8 int v13; // eax@10 int v14; // eax@10 int v15; // edx@14 int v16; // eax@15 int v17; // ecx@19 int v18; // eax@20 int v19; // edx@24 int v20; // eax@25 int v21; // ecx@29 int v22; // eax@30 int v23; // edx@34 int v24; // eax@35 int v25; // ecx@39 unsigned int v26; // eax@40 unsigned __int16 v28; // [sp+Eh] [bp-Eh]@4 int v29; // [sp+18h] [bp-4h]@1 v2 = this; v3 = *(_DWORD *)(this + 20); v4 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); v29 = this; while ( 1 ) { v5 = *(_WORD *)(v3 + 4); if ( v4 >= v5 ) break; v6 = v4; v7 = v4; v8 = *(_DWORD *)(v3 + 8); v28 = *(_WORD *)(v8 + 12 * v6 + 4); if ( v7 >= v5 || (v9 = *(_BYTE *)(v8 + 12 * v6 + 8) == 0, v10 = v8 + 12 * v6, v9) ) v11 = 0; else v11 = *(_DWORD *)v10; v12 = (*(int (**)(void))(**(_DWORD **)(v11 + 8) + 1800))(); if ( sub_63EDC0((int)&unk_14D159B0, v12, 1) ) { if ( v7 < *(_WORD *)(v3 + 4) && (v15 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v15 + 12 * v6 + 8)) ) v16 = *(_DWORD *)(v15 + 12 * v6); else v16 = 0; if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v16 + 8) + 40))() ) { if ( v7 < *(_WORD *)(v3 + 4) && (v17 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v17 + 12 * v6 + 8)) ) v18 = *(_DWORD *)(v17 + 12 * v6); else v18 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v18 + 8) + 996))(291) ) { if ( v7 < *(_WORD *)(v3 + 4) && (v19 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v19 + 12 * v6 + 8)) ) v20 = *(_DWORD *)(v19 + 12 * v6); else v20 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v20 + 8) + 996))(499) ) { if ( v7 < *(_WORD *)(v3 + 4) && (v21 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v21 + 12 * v6 + 8)) ) v22 = *(_DWORD *)(v21 + 12 * v6); else v22 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v22 + 8) + 996))(335) ) { if ( v7 < *(_WORD *)(v3 + 4) && (v23 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v23 + 12 * v6 + 8)) ) v24 = *(_DWORD *)(v23 + 12 * v6); else v24 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v24 + 8) + 996))(562) ) { if ( v7 < *(_WORD *)(v3 + 4) ) { v25 = *(_DWORD *)(v3 + 8); if ( *(_BYTE *)(v25 + 12 * v7 + 8) ) { v26 = *(_DWORD *)(v25 + 12 * v7); if ( v26 ) { *(_DWORD *)(v29 + 4) = v26; return v26; } } } v2 = v29; break; } } } } } } else { if ( v7 >= *(_WORD *)(v3 + 4) || (v13 = *(_DWORD *)(v3 + 8), v9 = *(_BYTE *)(v13 + 12 * v6 + 8) == 0, v14 = v13 + 12 * v6, v9) ) vC = 0; else *(_DWORD *)(*(_DWORD *)v14 + 12) = 0; } v2 = v29; v4 = v28; } v26 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1772))(a2); *(_DWORD *)(v2 + 4) = &word_D9FAF74; if ( v26 <= (unsigned int)&unk_895440 ) { *(_DWORD *)(v2 + 8) = *(_DWORD *)(v2 + 16) * *(_DWORD *)(v2 + 16); LOBYTE(v26) = sub_551C80(a2, v2, 0); } else { *(_DWORD *)(v2 + 8) = 0; } return v26; } // D9FAF74: using guessed type __int16 word_D9FAF74; //----- (004AA7A0) -------------------------------------------------------- int __thiscall sub_4AA7A0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 const void *v5; // eax@2 int v6; // eax@4 int v7; // esi@4 int result; // eax@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 126); if ( v4 ) { v5 = (char *)v3 + a2 + 126; if ( *(_DWORD *)((char *)v3 + a2 + 146) >= 0x10u ) v5 = *(const void **)v5; LOBYTE(v6) = sub_4613B0(v4, v5, a3); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AA8A0) -------------------------------------------------------- char __thiscall sub_4AA8A0(void *this, int a2, char *a3) { void *v3; // esi@1 char result; // al@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LuaFunctionSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_LuaFunctionSet"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)((char *)v3 + 126) ) { sub_4241C0((int)((char *)v3 + a2 + 126), a3, strlen(a3)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LuaFunctionSet"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LuaFunctionSet"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AA990) -------------------------------------------------------- signed int __thiscall sub_4AA990(void *this, unsigned __int8 a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // ecx@3 int v6; // eax@7 int v7; // [sp-4h] [bp-24h]@3 void *v8; // [sp+28h] [bp+8h]@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 == -1 ) { *((_DWORD *)v2 + 2048) = -1; --dword_750CB8; LABEL_3: v7 = (int)"ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"; v4 = (int)&unk_D020420; LABEL_4: sub_467660(v4, v7); return -1; } v8 = sub_447910((int)&unk_132577A0, *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 2042) + 8) + 12 * a2 + 4)); if ( !v8 ) { *((_DWORD *)v2 + 2048) = -1; --dword_750CB8; goto LABEL_3; } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); v7 = (int)"ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"; v4 = (int)&unk_D020420; if ( (unsigned int)v6 < *(_DWORD *)(*((_DWORD *)v8 + 1) + 160) ) { *((_DWORD *)v2 + 2048) = -1; --dword_750CB8; goto LABEL_4; } *((_DWORD *)v2 + 2048) = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AAAD0) -------------------------------------------------------- unsigned int __thiscall sub_4AAAD0(void *this, int a2, char a3) { int v3; // esi@1 signed int v4; // ebx@1 unsigned int result; // eax@2 void *v6; // ecx@3 int v7; // eax@4 int v8; // ebx@6 double v9; // ST1C_8@6 unsigned int v10; // esi@8 unsigned int v11; // edi@9 int v12; // eax@10 int v13; // edx@11 void *v14; // ebx@12 int v15; // ebx@15 int v16; // [sp+1Ch] [bp-10h]@4 int v17; // [sp+28h] [bp-4h]@1 float v18; // [sp+38h] [bp+Ch]@6 int v19; // [sp+38h] [bp+Ch]@10 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SelectWeapon"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SelectWeapon"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v17 = 0; if ( sub_57A470((void *)v3) == 2 ) { *(_DWORD *)(v3 + 8192) = 0; --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SelectWeapon"); result = 0; } else { v6 = *(void **)(v3 + 8196); if ( v6 ) { v7 = v3 + 8200; v16 = *(_DWORD *)(v3 + 8200); if ( !a3 ) v7 = (int)&v16; *(_DWORD *)(v3 + 8192) = sub_4A8B20(v6, v3, v7, a3); v8 = sub_402710(v3, a2); v9 = (double)(unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 1296))(v3, a2) * 1.200000047683716; v18 = (double)(unsigned int)v8; if ( v18 > (double)(unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 1296))(v3, a2) * v9 ) sub_4BA470((void *)v3); v10 = *(_DWORD *)(v3 + 8192); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SelectWeapon"); result = v10; } else { v11 = *(_DWORD *)(*(_DWORD *)(v3 + 8168) + 12) - 1; if ( (v11 & 0x80000000u) != 0 ) { LABEL_18: *(_DWORD *)(v3 + 8192) = v4; --dword_750CB8; v17 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SelectWeapon"); result = v4; } else { v12 = 12 * v11; v19 = 12 * v11; while ( 1 ) { v13 = *(_DWORD *)(*(_DWORD *)(v3 + 8168) + 8); if ( *(_DWORD *)(v12 + v13) ) { v14 = sub_447910((int)&unk_132577A0, *(_WORD *)(v12 + v13 + 4)); if ( !v14 || (unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1260))(v3) >= *(_DWORD *)(*((_DWORD *)v14 + 1) + 160) ) { if ( *(_DWORD *)(*(_DWORD *)(v3 + 8176) + 4 * v11) <= (unsigned int)dword_14D129E8 ) { v15 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v15 <= sub_4A9410(v3, v11) ) break; } } } v12 = v19 - 12; --v11; v19 -= 12; if ( (v11 & 0x80000000u) != 0 ) { v4 = -1; goto LABEL_18; } } *(_DWORD *)(v3 + 8192) = v11; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SelectWeapon"); result = v11; } } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004AAD70) -------------------------------------------------------- int __thiscall sub_4AAD70(void *this, int a2) { int v2; // esi@1 int v3; // edx@1 int v4; // edi@3 int v5; // eax@3 int v6; // ebx@3 int v7; // eax@3 int v8; // edi@5 int v9; // ebx@11 int v10; // eax@15 int v11; // eax@16 int v12; // eax@18 int v13; // eax@20 int v14; // eax@21 int v15; // eax@24 int v16; // eax@25 int v17; // eax@26 int v18; // eax@27 int v19; // eax@35 int v21; // [sp-Ch] [bp-40h]@28 int v22; // [sp-8h] [bp-3Ch]@28 int v23; // [sp-4h] [bp-38h]@2 int v24; // [sp-4h] [bp-38h]@28 int v25; // [sp+14h] [bp-20h]@15 int v26; // [sp+18h] [bp-1Ch]@3 int v27; // [sp+1Ch] [bp-18h]@3 int v28; // [sp+20h] [bp-14h]@3 int v29; // [sp+24h] [bp-10h]@3 int v30; // [sp+30h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_UseWeapon"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_UseWeapon"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 8192); v30 = 0; if ( v3 >= 0 ) { *(_BYTE *)(v2 + 7888) &= 0xFDu; v4 = *(_DWORD *)(v2 + 8168); v5 = *(_DWORD *)(12 * v3 + *(_DWORD *)(v4 + 8)); v26 = *(_WORD *)(v5 + 101); v27 = *(_DWORD *)(v5 + 93); v28 = *(_DWORD *)(v5 + 97); v29 = *(_WORD *)(v5 + 91); v6 = *(_DWORD *)(v5 + 83); *(_DWORD *)(v2 + 4348) = *(_DWORD *)(v5 + 87); *(_DWORD *)(v2 + 4356) = (unsigned __int16)v29; *(_DWORD *)(v2 + 4368) = v28; *(_DWORD *)(v2 + 4364) = v27; v7 = (unsigned __int16)v26; *(_DWORD *)(v2 + 4344) = v6; *(_DWORD *)(v2 + 4376) = v7; if ( !v3 ) { sub_42F2F0((void *)v2, a2); sub_4AD9D0(&dword_848F94, v2); LABEL_32: if ( *(_BYTE *)(v2 + 8206) == 1 ) *(_BYTE *)(v2 + 8206) = 0; else sub_4B8250(v2); v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1324))(v2); sub_5A7F60(v19 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); goto LABEL_36; } v8 = (int)sub_447910((int)&unk_132577A0, *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * v3 + 4)); if ( v8 != 0 ) { if ( (unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1260))(v2) >= *(_DWORD *)(*(_DWORD *)(v8 + 4) + 160) ) { if ( *(_BYTE *)(v8 + 304) ) *(_BYTE *)(v2 + 7888) |= 2u; v9 = v2; if ( *(_DWORD *)(*(_DWORD *)(v8 + 4) + 184) != 1 ) v9 = a2; if ( !v9 ) { --dword_750CB8; LABEL_37: v23 = (int)"ShineObjectClass::ShineMob::sm_UseWeapon"; v30 = -1; return sub_467660((int)&unk_D020420, v23); } v10 = *(_DWORD *)(v9 + 102); v25 = *(_DWORD *)v10; v26 = *(_DWORD *)(v10 + 4); if ( *(_BYTE *)(v8 + 544) == 1 ) { v11 = *(_DWORD *)(v8 + 548); if ( !v11 || v11 == 2 ) { v12 = *(_DWORD *)(v8 + 4); if ( *(_DWORD *)(v12 + 184) == 4 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int *))(*(_DWORD *)v2 + 3104))(v2, v8, &v25) ) { v13 = *(_DWORD *)(v9 + 102); v25 = *(_DWORD *)v13; v26 = *(_DWORD *)(v13 + 4); } } else { v14 = (*(int (__thiscall **)(int, int, _DWORD, int))(*(_DWORD *)v2 + 3100))( v2, v8, *(_DWORD *)(v12 + 180), v2); if ( v14 ) v9 = v14; } } } if ( *(_BYTE *)(v8 + 608) == 1 ) { v15 = *(_DWORD *)(v8 + 4); if ( *(_DWORD *)(v15 + 184) == 4 ) { v16 = (*(int (__thiscall **)(int, int, _DWORD, int))(*(_DWORD *)v2 + 3100))( v2, v8, *(_DWORD *)(v15 + 180), v2); if ( v16 ) { v17 = *(_DWORD *)(v16 + 102); v25 = *(_DWORD *)v17; v26 = *(_DWORD *)(v17 + 4); } } } v18 = *(_DWORD *)(v8 + 4); if ( *(_DWORD *)(v18 + 184) == 4 ) { v24 = *(_DWORD *)(v18 + 203); v22 = (int)&v25; v21 = 0; } else { v24 = *(_DWORD *)(v18 + 203); v22 = 0; v21 = v9; } sub_579C10((void *)v2, v8, v21, v22, v24); if ( *(_BYTE *)(v8 + 568) == 1 ) sub_551650(v2, 0); goto LABEL_32; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_UseWeapon : Minus sp", 0); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_UseWeapon : Null skill", *(_DWORD *)(v2 + 8192)); } LABEL_36: --dword_750CB8; goto LABEL_37; } --dword_750CB8; v30 = -1; v23 = (int)"ShineObjectClass::ShineMob::sm_UseWeapon"; return sub_467660((int)&unk_D020420, v23); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; //----- (004AB070) -------------------------------------------------------- int __thiscall sub_4AB070(int this, int a2, int a3) { return *(_DWORD *)(this + 102); } //----- (004AB080) -------------------------------------------------------- int __thiscall sub_4AB080(int this, int a2, int a3) { int v3; // eax@1 v3 = *(_DWORD *)(this + 102); *(_DWORD *)a3 = *(_DWORD *)v3; *(_DWORD *)(a3 + 4) = *(_DWORD *)(v3 + 4); return sub_4A2100(&unk_AF09DA8, **(_BYTE **)(this + 106), 205 * a2 / 512, a3); } //----- (004AB0D0) -------------------------------------------------------- int __thiscall sub_4AB0D0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 12) = a2; return result; } //----- (004AB0E0) -------------------------------------------------------- int __thiscall sub_4AB0E0(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = (*(int (**)(void))(**(_DWORD **)(this + 9020) + 28))(); if ( !(_BYTE)result ) { result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v1 + 9020) + 16))(v1 + 8220); *(_DWORD *)(v1 + 9020) = result; } return result; } //----- (004AB130) -------------------------------------------------------- char __thiscall sub_4AB130(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@2 char *v6; // eax@3 int v7; // ecx@3 v4 = this; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1800))(a3) == *(_WORD *)(this + 4) ) { v5 = *(_DWORD *)(v4 + 8); if ( (unsigned int)(v5 - 1) > 0x63 || (v6 = (char *)&unk_14D42DC0 + 32776 * v5, v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193), *((_DWORD *)v6 + 8192) = v7, !*(_WORD *)&v6[2 * v7]) ) *(_DWORD *)(v4 + 12) = a3; ++*(_DWORD *)(v4 + 8); } return 1; } //----- (004AB190) -------------------------------------------------------- int __thiscall sub_4AB190(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 20) = a3; *(_DWORD *)(this + 16) = 600; *(_DWORD *)(result + 4) = result + 56; *(_DWORD *)(this + 12) = a2; return result; } //----- (004AB1C0) -------------------------------------------------------- char __thiscall sub_4AB1C0(int this, int a2) { char result; // al@1 result = this; *(_DWORD *)(this + 64) = 0; if ( a2 ) result = sub_551C80(a2, this, 0); return result; } //----- (004AB1F0) -------------------------------------------------------- void __thiscall sub_4AB1F0(int this) { *(_DWORD *)(this + 9020) = off_8492D0; } // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); //----- (004AB210) -------------------------------------------------------- void *__thiscall sub_4AB210(void *this, int a2, int a3) { void *v3; // esi@1 int v5; // [sp+0h] [bp-18h]@0 int v6; // [sp+4h] [bp-14h]@0 int v7; // [sp+Ch] [bp-Ch]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetSelector::mts_Initialize"); dword_7508B8[dword_750CB8] = (int)"MobTargetSelector::mts_Initialize"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 3) = a2; *((_DWORD *)v3 + 4) = *(_WORD *)(*(_DWORD *)((*(int (__stdcall **)(int, int, _DWORD, int))(*(_DWORD *)a2 + 1804))( v5, v6, "MobTargetSelector::mts_Initialize", v7) + 4) + 59); *((_DWORD *)v3 + 1) = &word_D9FAF74; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTargetSelector::mts_Initialize"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FAF74: using guessed type __int16 word_D9FAF74; //----- (004AB2D0) -------------------------------------------------------- void *__thiscall sub_4AB2D0(int this, int a2, int a3) { *(_DWORD *)(this + 20) = a3; return sub_4AB210((void *)this, a2, a3); } //----- (004AB2F0) -------------------------------------------------------- void *__thiscall sub_4AB2F0(void *this) { void *v1; // esi@1 int v2; // ecx@1 int v3; // eax@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetSelector::mts_InitThink"); dword_7508B8[dword_750CB8] = (int)"MobTargetSelector::mts_InitThink"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 3); *((_DWORD *)v1 + 4) = 0; if ( v2 && (*(int (**)(void))(*(_DWORD *)v2 + 1804))() ) *((_DWORD *)v1 + 4) = *(_WORD *)(*(_DWORD *)((*(int (**)(void))(**((_DWORD **)v1 + 3) + 1804))() + 4) + 59); v3 = *((_DWORD *)v1 + 4) * *((_DWORD *)v1 + 4); *((_DWORD *)v1 + 1) = &word_D9FAF74; *((_DWORD *)v1 + 2) = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTargetSelector::mts_InitThink"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FAF74: using guessed type __int16 word_D9FAF74; //----- (004AB3D0) -------------------------------------------------------- int __thiscall sub_4AB3D0(void *this, void *a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // edx@1 int v4; // ST10_4@1 _UNKNOWN *v5; // ST08_4@1 int v6; // ST04_4@1 int v7; // eax@1 char v9; // [sp+8h] [bp-18h]@1 int v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [bp-4h]@1 v2 = (int)this; v10 = (int)"MobTargetSelector::mt_SelectTarget"; sub_4675D0((int)&unk_D020420, (int)"MobTargetSelector::mt_SelectTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetSelector::mt_SelectTarget"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2292); v4 = *(_DWORD *)(v2 + 16); v5 = *(_UNKNOWN **)(v2 + 16); v11 = 0; v6 = v3(a2); v7 = sub_427BD0(&unk_13253E80); sub_549E00(a2, v7, v6, v5, (int)&v9, v4, 0, v2); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetSelector::mt_SelectTarget"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AB4A0) -------------------------------------------------------- int __thiscall sub_4AB4A0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetNoBrain::mt_SelectTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetNoBrain::mt_SelectTarget"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 36))(v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobTargetNoBrain::mt_SelectTarget"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AB550) -------------------------------------------------------- void *__thiscall sub_4AB550(void *this, int a2, int a3) { void *v3; // esi@1 v3 = this; *(_DWORD *)this = &off_6BDACC; sub_4675D0((int)&unk_D020420, (int)"MobTarget_AggroClear::MobTarget_AggroClear"); dword_7508B8[dword_750CB8] = (int)"MobTarget_AggroClear::MobTarget_AggroClear"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 2) = a3; *((_DWORD *)v3 + 1) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTarget_AggroClear::MobTarget_AggroClear"); return v3; } // 6BDACC: using guessed type int (__stdcall *off_6BDACC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AB600) -------------------------------------------------------- int __thiscall sub_4AB600(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6BDACC; sub_4675D0((int)&unk_D020420, (int)"MobTarget_AggroClear::~MobTarget_AggroClear"); dword_7508B8[dword_750CB8] = (int)"MobTarget_AggroClear::~MobTarget_AggroClear"; dword_750AB8[dword_750CB8] = -1; result = sub_467660((int)&unk_D020420, (int)"MobTarget_AggroClear::~MobTarget_AggroClear"); *(_DWORD *)v1 = &off_6BDA2C; return result; } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); // 6BDACC: using guessed type int (__stdcall *off_6BDACC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AB690) -------------------------------------------------------- char __thiscall sub_4AB690(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // edx@1 int v5; // ecx@3 char result; // al@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobTarget_AggroClear::lid_Call"); dword_7508B8[dword_750CB8] = (int)"MobTarget_AggroClear::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); if ( *(_WORD *)a2 != *(_WORD *)(v4 + 4) || *(_DWORD *)(a2 + 4) != (*(int (**)(void))(*(_DWORD *)v4 + 836))() ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTarget_AggroClear::lid_Call"); result = 1; } else { v5 = *(_DWORD *)(a2 + 12) * *((_DWORD *)v3 + 2); *(_DWORD *)(a2 + 12) -= ((signed int)((unsigned __int64)(v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( *(_DWORD *)(a2 + 12) <= 0 ) *(_DWORD *)(a2 + 12) = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTarget_AggroClear::lid_Call"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AB7A0) -------------------------------------------------------- int __thiscall sub_4AB7A0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 int (__stdcall **v6)(int, int); // [sp+Ch] [bp-1Ch]@1 int v7; // [sp+18h] [bp-10h]@1 int v8; // [sp+24h] [bp-4h]@1 v3 = this; v7 = (int)"MobTargetBout::mts_DecreaseAggroPoint"; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_DecreaseAggroPoint"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_DecreaseAggroPoint"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sub_4AB550(&v6, a2, a3); v4 = *((_DWORD *)v3 + 5); LOBYTE(v8) = 1; sub_43C470(v4, (int)&v6); *((_DWORD *)v3 + 1) = &word_D9FAF74; *((_DWORD *)v3 + 2) = 0; v6 = &off_6BDACC; LOBYTE(v8) = 2; sub_4675D0((int)&unk_D020420, (int)"MobTarget_AggroClear::~MobTarget_AggroClear"); dword_7508B8[dword_750CB8] = (int)"MobTarget_AggroClear::~MobTarget_AggroClear"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobTarget_AggroClear::~MobTarget_AggroClear"); --dword_750CB8; v6 = &off_6BDA2C; v8 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_DecreaseAggroPoint"); } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); // 6BDACC: using guessed type int (__stdcall *off_6BDACC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FAF74: using guessed type __int16 word_D9FAF74; //----- (004AB8B0) -------------------------------------------------------- int __thiscall sub_4AB8B0(void *this, int a2) { void *v2; // esi@1 __int64 v3; // qax@1 int v4; // ecx@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetSelector::mts_TargetChange"); dword_7508B8[dword_750CB8] = (int)"MobTargetSelector::mts_TargetChange"; dword_750AB8[dword_750CB8++] = -1; v3 = 1126 * *(_DWORD *)(*((_DWORD *)v2 + 1) + 12); if ( ((WORD2(v3) & 0x3FF) + (signed int)v3) >> 10 < *(_DWORD *)(a2 + 12) ) { v4 = *((_DWORD *)v2 + 3); *((_DWORD *)v2 + 1) = a2; (*(void (**)(void))(*(_DWORD *)v4 + 2296))(); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobTargetSelector::mts_TargetChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AB980) -------------------------------------------------------- void *__thiscall sub_4AB980(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 v3 = this; *(_DWORD *)this = &off_6BDBD8; sub_4675D0((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis"); dword_7508B8[dword_750CB8] = (int)"MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 1) = a3; *((_DWORD *)v3 + 2) = a2; v4 = (*(int (**)(void))(*(_DWORD *)a2 + 1804))(); if ( v4 != 0 ) { *((_DWORD *)v3 + 3) = 10 * ((unsigned int)(*(_DWORD *)(*(_DWORD *)(v4 + 4) + 64) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *((_DWORD *)v3 + 4) = *(_WORD *)(*(_DWORD *)(v4 + 4) + 62) * *(_WORD *)(*(_DWORD *)(v4 + 4) + 62); } else { sub_639100(&unk_86DDD8, (int)"MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis : Null info", 0); *((_DWORD *)v3 + 3) = 0; *((_DWORD *)v3 + 4) = 0; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis"); return v3; } // 6BDBD8: using guessed type int (__stdcall *off_6BDBD8)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ABA90) -------------------------------------------------------- int __thiscall sub_4ABA90(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = &off_6BDBD8; sub_4675D0((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"); dword_7508B8[dword_750CB8] = (int)"MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"; dword_750AB8[dword_750CB8] = -1; result = sub_467660((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"); *(_DWORD *)v1 = &off_6BDA2C; return result; } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); // 6BDBD8: using guessed type int (__stdcall *off_6BDBD8)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ABB20) -------------------------------------------------------- char __thiscall sub_4ABB20(void *this, int a2, int a3) { void *v3; // esi@1 int v5; // [sp+0h] [bp-18h]@0 int v6; // [sp+4h] [bp-14h]@0 int v7; // [sp+Ch] [bp-Ch]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::mtea_free"); dword_7508B8[dword_750CB8] = (int)"MobTarget_EnemyAnalysis::mtea_free"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(int, int, int, _DWORD, int))(**((_DWORD **)v3 + 1) + 12))( a3, v5, v6, "MobTarget_EnemyAnalysis::mtea_free", v7); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::mtea_free"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ABBD0) -------------------------------------------------------- char __thiscall sub_4ABBD0(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@3 char v5; // bl@3 int v7; // ecx@4 int v8; // eax@6 int v9; // edx@6 int v10; // ebx@6 int v11; // eax@6 int v12; // eax@7 int v13; // [sp-4h] [bp-24h]@2 int v14; // [sp+0h] [bp-20h]@0 int v15; // [sp+4h] [bp-1Ch]@0 int v16; // [sp+8h] [bp-18h]@0 int v17; // [sp+Ch] [bp-14h]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::lid_Call"); dword_7508B8[dword_750CB8] = (int)"MobTarget_EnemyAnalysis::lid_Call"; dword_750AB8[dword_750CB8++] = -1; if ( dword_14D129E8 > (unsigned int)(*((_DWORD *)v3 + 3) + *(_DWORD *)(a2 + 16)) ) goto LABEL_10; v7 = sub_54DE90(&unk_13253630, *(_WORD *)a2); if ( !v7 ) { v13 = a3; goto LABEL_3; } v8 = *(_DWORD *)(*((_DWORD *)v3 + 2) + 102); v9 = *(_DWORD *)v8; v10 = *(_DWORD *)(v7 + 102); v11 = *(_DWORD *)(v8 + 4) - *(_DWORD *)(v10 + 4); if ( (unsigned int)((v9 - *(_DWORD *)v10) * (v9 - *(_DWORD *)v10) + v11 * v11) > *((_DWORD *)v3 + 4) ) { LABEL_10: v13 = a3; LABEL_3: v4 = sub_4ABB20(v3, a2, v13); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::lid_Call"); return v5; } v12 = (*(int (__stdcall **)(int, int, int, int))(*(_DWORD *)v7 + 1152))(v14, v15, v16, v17); sub_5883C0((void *)(a2 + 20), *((_DWORD *)v3 + 2), v12); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004ABD10) -------------------------------------------------------- int __thiscall sub_4ABD10(void *this) { void *v1; // esi@1 int v2; // ST04_4@1 int v3; // ST00_4@1 int v4; // ecx@1 int (__stdcall **v6)(int, int); // [sp+8h] [bp-24h]@1 int v7; // [sp+1Ch] [bp-10h]@1 int v8; // [sp+28h] [bp-4h]@1 v1 = this; v7 = (int)"MobTargetBout::mts_Routine"; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_Routine"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_Routine"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 5); v3 = *((_DWORD *)v1 + 3); v8 = 0; sub_4AB980(&v6, v3, v2); v4 = *((_DWORD *)v1 + 5); LOBYTE(v8) = 1; sub_43C470(v4, (int)&v6); v6 = &off_6BDBD8; LOBYTE(v8) = 2; sub_4675D0((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"); dword_7508B8[dword_750CB8] = (int)"MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"); --dword_750CB8; v6 = &off_6BDA2C; v8 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_Routine"); } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); // 6BDBD8: using guessed type int (__stdcall *off_6BDBD8)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ABE20) -------------------------------------------------------- char __thiscall sub_4ABE20(void *this, int a2, int a3, int a4) { void *v4; // edi@1 char result; // al@2 int v6; // ebx@4 bool v7; // bl@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearFriend::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListNearFriend::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearFriend::ali_Work"); result = 1; } else { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1812))(a3) ) { v6 = (*(int (**)(void))(*(_DWORD *)a2 + 1812))(); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1812))(a3) == v6 ) *((_DWORD *)v4 + 3) = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1868))( a3, *((_DWORD *)v4 + 1), *((_DWORD *)v4 + 2)); } v7 = *((_DWORD *)v4 + 3) == 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearFriend::ali_Work"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ABF50) -------------------------------------------------------- int __stdcall sub_4ABF50(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ABFA0) -------------------------------------------------------- int __thiscall sub_4ABFA0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 int v6; // esi@1 int (__stdcall **v8)(int, int, int); // [sp+8h] [bp-20h]@1 int v9; // [sp+Ch] [bp-1Ch]@1 int v10; // [sp+10h] [bp-18h]@1 int v11; // [sp+14h] [bp-14h]@1 int v12; // [sp+18h] [bp-10h]@1 int v13; // [sp+24h] [bp-4h]@1 v3 = this; v12 = (int)"ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; sub_427BE0(&v8); v8 = &off_6BDA1C; v9 = a2; v10 = a3; v11 = 0; v4 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v13) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v5, v4, (_UNKNOWN *)0x1F4, 0, (int)&v8, 1, 65535); v6 = v11; LOBYTE(v13) = 0; v8 = &off_6BDA1C; sub_427EB0(&v8); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"); return v6; } // 6BDA1C: using guessed type int (__stdcall *off_6BDA1C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AC0A0) -------------------------------------------------------- int __stdcall sub_4AC0A0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanMyTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_CanMyTarget"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanMyTarget"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AC0F0) -------------------------------------------------------- int __stdcall sub_4AC0F0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AC140) -------------------------------------------------------- int __thiscall sub_4AC140(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 int v6; // esi@1 int (__stdcall **v8)(int, int, int); // [sp+8h] [bp-20h]@1 __int16 v9; // [sp+Ch] [bp-1Ch]@1 int v10; // [sp+10h] [bp-18h]@1 int v11; // [sp+14h] [bp-14h]@1 int v12; // [sp+18h] [bp-10h]@1 int v13; // [sp+24h] [bp-4h]@1 v3 = this; v12 = (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; sub_427BE0(&v8); v8 = &off_6BDA24; v9 = 188; v10 = 1; v11 = 0; v4 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v13) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v5, v4, (_UNKNOWN *)0x1F4, 0, (int)&v8, 0, 65535); v6 = v11; LOBYTE(v13) = 0; v8 = &off_6BDA24; sub_427EB0(&v8); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); return v6; } // 6BDA24: using guessed type int (__stdcall *off_6BDA24)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AC250) -------------------------------------------------------- int __stdcall sub_4AC250(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_CanMyTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_CanMyTarget"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_CanMyTarget"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AC2A0) -------------------------------------------------------- int __thiscall sub_4AC2A0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-18h]@1 int v6; // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; v7 = (int)"MobTargetBout::mt_InitRegen"; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mt_InitRegen"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mt_InitRegen"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v8 = 0; *((_DWORD *)v2 + 3) = a2; v5 = &off_6BDA34; v6 = v3; LOBYTE(v8) = 1; sub_43C470(v3, (int)&v5); --dword_750CB8; v5 = &off_6BDA2C; v8 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetBout::mt_InitRegen"); } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); // 6BDA34: using guessed type int (__stdcall *off_6BDA34)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AC370) -------------------------------------------------------- int __thiscall sub_4AC370(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // dx@1 int v5; // ecx@1 int v6; // eax@1 unsigned __int16 v7; // dx@1 unsigned __int16 v8; // bx@2 int v9; // eax@3 int v10; // esi@3 unsigned __int16 v11; // dx@3 bool v12; // zf@3 int v13; // eax@3 int v14; // eax@4 unsigned __int16 v15; // ax@6 int v16; // eax@8 int v17; // eax@8 int v18; // edx@12 int v19; // eax@13 int v20; // ecx@17 int v21; // eax@20 int v22; // eax@20 int v23; // eax@21 int v24; // edx@25 int v25; // eax@26 int v26; // ecx@30 int v27; // eax@31 int v28; // edx@35 int v29; // eax@36 int v30; // ecx@40 int v31; // eax@41 int v32; // eax@43 void *v33; // eax@47 unsigned __int16 v35; // [sp+10h] [bp-28h]@1 unsigned __int16 v36; // [sp+12h] [bp-26h]@1 int v37; // [sp+14h] [bp-24h]@1 int v38; // [sp+18h] [bp-20h]@1 int v39; // [sp+1Ch] [bp-1Ch]@1 void *v40; // [sp+20h] [bp-18h]@1 int v41; // [sp+24h] [bp-14h]@1 int v42; // [sp+28h] [bp-10h]@1 int v43; // [sp+34h] [bp-4h]@1 v2 = this; v40 = this; v39 = (int)"MobTargetBout::mt_SelectTarget"; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mt_SelectTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mt_SelectTarget"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v4 = *(_WORD *)(v3 + 4); v5 = *(_DWORD *)(v3 + 8); v43 = 0; v38 = 0; v42 = 0; v41 = 0; v6 = 3 * *(_WORD *)(v3 + 14); v35 = v4; v7 = *(_WORD *)(v5 + 4 * v6 + 4); v37 = v3; v36 = v7; while ( 1 ) { v8 = v36; if ( v36 >= *(_WORD *)(v3 + 4) ) break; v9 = *(_DWORD *)(v3 + 8); v10 = v36; v11 = *(_WORD *)(v9 + 12 * v36 + 4); v12 = *(_BYTE *)(v9 + 12 * v36 + 8) == 0; v13 = v9 + 12 * v36; v35 = v36; v36 = v11; if ( v12 ) v14 = 0; else v14 = *(_DWORD *)v13; v15 = (*(int (**)(void))(**(_DWORD **)(v14 + 8) + 1800))(); if ( sub_63EDC0((int)&unk_14D159B0, v15, 1) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v18 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v18 + 12 * v8 + 8)) ) v19 = *(_DWORD *)(v18 + 12 * v10); else v19 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v19 + 8) + 40))() ) { if ( v8 < *(_WORD *)(v3 + 4) && (v20 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v20 + 12 * v8 + 8)) ) *(_DWORD *)(*(_DWORD *)(v20 + 12 * v10) + 12) = 0; else LABEL_10: vC = 0; } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v21 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v21 + 12 * v8 + 8) == 0, v22 = v21 + 12 * v8, v12) ) v23 = 0; else v23 = *(_DWORD *)v22; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v23 + 8) + 996))(291) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v24 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v24 + 12 * v8 + 8)) ) v25 = *(_DWORD *)(v24 + 12 * v10); else v25 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v25 + 8) + 996))(499) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v26 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v26 + 12 * v8 + 8)) ) v27 = *(_DWORD *)(v26 + 12 * v10); else v27 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v27 + 8) + 996))(335) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v28 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v28 + 12 * v8 + 8)) ) v29 = *(_DWORD *)(v28 + 12 * v10); else v29 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v29 + 8) + 996))(562) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v30 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v30 + 12 * v8 + 8)) ) v31 = *(_DWORD *)(v30 + 12 * v10); else v31 = 0; v32 = *(_DWORD *)(v31 + 12); if ( v32 > v42 ) { v42 = v32; v41 = sub_4A2CF0((int)&v35); } } } } } } } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v16 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v16 + 12 * v8 + 8) == 0, v17 = v16 + 12 * v8, v12) ) goto LABEL_10; *(_DWORD *)(*(_DWORD *)v17 + 12) = 0; } } if ( v41 ) { *((_DWORD *)v40 + 1) = v41; } else { v33 = v40; *((_DWORD *)v40 + 1) = &word_D9FAF74; *((_DWORD *)v33 + 2) = 0; } --dword_750CB8; v43 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetBout::mt_SelectTarget"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FAF74: using guessed type __int16 word_D9FAF74; //----- (004AC640) -------------------------------------------------------- int __thiscall sub_4AC640(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // dx@1 int v5; // ecx@1 int v6; // eax@1 unsigned __int16 v7; // dx@1 unsigned __int16 v8; // bx@2 int v9; // eax@3 int v10; // esi@3 unsigned __int16 v11; // dx@3 bool v12; // zf@3 int v13; // eax@3 int v14; // eax@4 unsigned __int16 v15; // ax@6 int v16; // eax@8 int v17; // eax@8 int v18; // edx@12 int v19; // eax@13 int v20; // ecx@17 int v21; // eax@20 int v22; // eax@20 int v23; // eax@21 int v24; // edx@25 int v25; // eax@26 int v26; // edx@29 int v27; // eax@30 int v28; // ecx@34 int v29; // eax@35 int v30; // ecx@38 _BYTE *v31; // ecx@38 int v32; // edx@40 int v33; // eax@41 int v34; // ecx@45 int v35; // eax@46 unsigned __int16 v36; // cx@49 int v37; // eax@50 int v38; // eax@50 int v39; // eax@51 signed int v40; // ebx@53 int v41; // edx@54 int v42; // eax@55 int v43; // eax@59 int v44; // ecx@59 void *v45; // eax@68 void *v46; // ebx@69 _UNKNOWN *v47; // eax@69 int v48; // ST10_4@69 _UNKNOWN *v49; // ST08_4@69 int v50; // ST04_4@69 int v51; // eax@69 int v52; // edi@70 unsigned __int8 v53; // al@70 unsigned __int16 v55; // [sp+10h] [bp-2Ch]@1 unsigned __int16 v56; // [sp+12h] [bp-2Ah]@1 int v57; // [sp+14h] [bp-28h]@1 int v58; // [sp+18h] [bp-24h]@1 int v59; // [sp+1Ch] [bp-20h]@1 char v60; // [sp+20h] [bp-1Ch]@69 int v61; // [sp+24h] [bp-18h]@1 int v62; // [sp+28h] [bp-14h]@1 void *v63; // [sp+2Ch] [bp-10h]@1 int v64; // [sp+38h] [bp-4h]@1 v2 = this; v63 = this; v59 = (int)"MobTargetAggresive::mt_SelectTarget"; sub_4675D0((int)&unk_D020420, (int)"MobTargetAggresive::mt_SelectTarget"); dword_7508B8[dword_750CB8] = (int)"MobTargetAggresive::mt_SelectTarget"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v4 = *(_WORD *)(v3 + 4); v5 = *(_DWORD *)(v3 + 8); v64 = 0; v58 = 0; v62 = 0; v61 = 0; v6 = 3 * *(_WORD *)(v3 + 14); v55 = v4; v7 = *(_WORD *)(v5 + 4 * v6 + 4); v57 = v3; v56 = v7; while ( 1 ) { v8 = v56; if ( v56 >= *(_WORD *)(v3 + 4) ) break; v9 = *(_DWORD *)(v3 + 8); v10 = v56; v11 = *(_WORD *)(v9 + 12 * v56 + 4); v12 = *(_BYTE *)(v9 + 12 * v56 + 8) == 0; v13 = v9 + 12 * v56; v55 = v56; v56 = v11; if ( v12 ) v14 = 0; else v14 = *(_DWORD *)v13; v15 = (*(int (**)(void))(**(_DWORD **)(v14 + 8) + 1800))(); if ( sub_63EDC0((int)&unk_14D159B0, v15, 1) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v18 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v18 + 12 * v8 + 8)) ) v19 = *(_DWORD *)(v18 + 12 * v10); else v19 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v19 + 8) + 40))() ) { if ( v8 < *(_WORD *)(v3 + 4) && (v20 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v20 + 12 * v8 + 8)) ) *(_DWORD *)(*(_DWORD *)(v20 + 12 * v10) + 12) = 0; else LABEL_10: vC = 0; } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v21 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v21 + 12 * v8 + 8) == 0, v22 = v21 + 12 * v8, v12) ) v23 = 0; else v23 = *(_DWORD *)v22; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v23 + 8) + 996))(291) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v24 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v24 + 12 * v8 + 8)) ) v25 = (*(int (**)(void))(**(_DWORD **)(*(_DWORD *)(v24 + 12 * v10) + 8) + 1388))(); else v25 = (*(int (**)(void))(*::v8 + 1388))(); goto LABEL_38; } if ( v8 < *(_WORD *)(v3 + 4) && (v26 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v26 + 12 * v8 + 8)) ) v27 = *(_DWORD *)(v26 + 12 * v10); else v27 = 0; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v27 + 8) + 996))(499) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v28 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v28 + 12 * v8 + 8)) ) v29 = *(_DWORD *)(v28 + 12 * v10); else v29 = 0; v25 = (*(int (**)(void))(**(_DWORD **)(v29 + 8) + 1388))(); LABEL_38: v30 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v30; v31 = &byte_85A2C0[256 * v30]; *(_DWORD *)v31 = *(_DWORD *)v25; *((_DWORD *)v31 + 1) = *(_DWORD *)(v25 + 4); *((_DWORD *)v31 + 2) = *(_DWORD *)(v25 + 8); *((_DWORD *)v31 + 3) = *(_DWORD *)(v25 + 12); *((_DWORD *)v31 + 4) = *(_DWORD *)(v25 + 16); v31[20] = 0; } else { if ( v8 < *(_WORD *)(v3 + 4) && (v32 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v32 + 12 * v8 + 8)) ) v33 = *(_DWORD *)(v32 + 12 * v10); else v33 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v33 + 8) + 996))(335) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v34 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v34 + 12 * v8 + 8)) ) v35 = *(_DWORD *)(v34 + 12 * v10); else v35 = 0; if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(v35 + 8) + 996))(562) ) { v36 = *(_WORD *)(v3 + 4); if ( v8 >= v36 || (v37 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v37 + 12 * v8 + 8) == 0, v38 = v37 + 12 * v8, v12) ) v39 = 0; else v39 = *(_DWORD *)v38; v40 = *(_DWORD *)(v39 + 12); if ( v55 < v36 && (v41 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v41 + 12 * v10 + 8)) ) v42 = *(_DWORD *)(v41 + 12 * v10); else v42 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v42 + 8) + 2536))() ) { v40 = 1; } else { v43 = sub_4A2CF0((int)&v55); v44 = sub_402710(a2, *(_DWORD *)(v43 + 8)); if ( v44 > 250000 ) v40 /= 2; if ( v44 > 1000000 ) v40 = 0; } if ( v40 > v62 ) { v62 = v40; v61 = sub_4A2CF0((int)&v55); } } } } } } else { if ( v8 >= *(_WORD *)(v3 + 4) || (v16 = *(_DWORD *)(v3 + 8), v12 = *(_BYTE *)(v16 + 12 * v8 + 8) == 0, v17 = v16 + 12 * v8, v12) ) goto LABEL_10; *(_DWORD *)(*(_DWORD *)v17 + 12) = 0; } } if ( v61 ) { *((_DWORD *)v63 + 1) = v61; } else { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1772))(a2) <= (unsigned int)&unk_895440 ) { v46 = v63; v47 = (_UNKNOWN *)*((_DWORD *)v63 + 4); v48 = (int)v63; *((_DWORD *)v63 + 2) = (_DWORD)v47 * (_DWORD)v47; v49 = v47; *((_DWORD *)v46 + 1) = &word_D9FAF74; v50 = (*(int (__thiscall **)(int, _UNKNOWN *, char *))(*(_DWORD *)a2 + 2292))(a2, v47, &v60); v51 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v51, v50, v49, 0, v48, 0, 65535); if ( *(_DWORD *)(*((_DWORD *)v46 + 1) + 8) ) { v52 = *(_DWORD *)a2; v53 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2); (*(void (__thiscall **)(int, _DWORD, int))(v52 + 1792))(a2, *(_DWORD *)(*((_DWORD *)v46 + 1) + 8), 5 * v53); } } else { v45 = v63; *((_DWORD *)v63 + 1) = &word_D9FAF74; *((_DWORD *)v45 + 2) = 0; } } --dword_750CB8; v64 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetAggresive::mt_SelectTarget"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // D9FAF74: using guessed type __int16 word_D9FAF74; //----- (004ACAA0) -------------------------------------------------------- int __thiscall sub_4ACAA0(void *this) { void *v1; // esi@1 int v2; // ecx@1 int (__stdcall **v4)(int, int); // [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 v1 = this; v6 = (int)"MobTargetBout::mts_AggroClear"; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_AggroClear"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_AggroClear"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 5); v7 = 0; v4 = &off_6BDA34; v5 = v2; LOBYTE(v7) = 1; sub_43C470(v2, (int)&v4); --dword_750CB8; v4 = &off_6BDA2C; v7 = -1; return sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_AggroClear"); } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); // 6BDA34: using guessed type int (__stdcall *off_6BDA34)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ACB60) -------------------------------------------------------- int __thiscall sub_4ACB60(void *this, int a2) { void *v2; // edi@1 int v3; // ecx@3 unsigned __int16 v4; // bx@3 unsigned __int16 v5; // di@5 int v6; // edx@6 int v7; // eax@6 unsigned __int16 v8; // si@6 int v9; // ecx@8 int v10; // ecx@13 int v11; // ecx@15 int v12; // eax@16 bool v13; // zf@16 int v14; // eax@16 int v15; // esi@17 int v16; // eax@19 int v17; // ecx@19 _BYTE *v18; // ecx@19 int v20; // [sp-8h] [bp-43Ch]@2 unsigned int v21; // [sp-4h] [bp-438h]@1 int i; // [sp+10h] [bp-424h]@3 int v23; // [sp+20h] [bp-414h]@3 char v24; // [sp+24h] [bp-410h]@19 unsigned int v25; // [sp+424h] [bp-10h]@1 int v26; // [sp+430h] [bp-4h]@1 int v27; // [sp+434h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v21 = (unsigned int)&v27 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_AppendAggroPoint"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_AppendAggroPoint"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; if ( a2 ) { v3 = *((_DWORD *)v2 + 5); v23 = 0; v4 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); for ( i = *((_DWORD *)v2 + 5); ; v3 = i ) { v5 = *(_WORD *)(v3 + 4); if ( v4 >= v5 ) break; v6 = *(_DWORD *)(v3 + 8); ++v23; v7 = v4; v8 = v4; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( v8 < v5 && *(_BYTE *)(v6 + 12 * v7 + 8) ) v9 = *(_DWORD *)(v6 + 12 * v7); else v9 = 0; if ( *(_DWORD *)(v9 + 8) ) { if ( v8 < v5 && *(_BYTE *)(v6 + 12 * v7 + 8) ) v10 = *(_DWORD *)(v6 + 12 * v7); else v10 = 0; v11 = *(_DWORD *)(v10 + 8); if ( v8 >= v5 || (v12 = 3 * v7, v13 = *(_BYTE *)(v6 + 4 * v12 + 8) == 0, v14 = v6 + 4 * v12, v13) ) v15 = 0; else v15 = *(_DWORD *)v14; v16 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v11 + 1388))(v21); v17 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v17; v18 = &byte_85A2C0[256 * v17]; *(_DWORD *)v18 = *(_DWORD *)v16; *((_DWORD *)v18 + 1) = *(_DWORD *)(v16 + 4); *((_DWORD *)v18 + 2) = *(_DWORD *)(v16 + 8); *((_DWORD *)v18 + 3) = *(_DWORD *)(v16 + 12); *((_DWORD *)v18 + 4) = *(_DWORD *)(v16 + 16); v18[20] = 0; sprintf(&v24, "%d) %s : %d%c", v23, v18, *(_DWORD *)(v15 + 12), 0); (*(void (__stdcall **)(char *))(*(_DWORD *)a2 + 1924))(&v24); } } --dword_750CB8; v26 = -1; v20 = (int)"MobTargetBout::mts_AppendAggroPoint"; } else { --dword_750CB8; v26 = -1; v20 = (int)"MobTargetBout::mts_AppendAggroPoint"; } return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (004ACD50) -------------------------------------------------------- int __thiscall sub_4ACD50(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 int v5; // eax@1 int v6; // ecx@1 _BYTE *v7; // ecx@1 int v8; // esi@1 unsigned __int16 v9; // cx@1 int v10; // eax@4 unsigned __int16 v11; // di@4 int v12; // edx@5 int v13; // eax@5 bool v14; // zf@5 int v15; // eax@5 int v16; // eax@6 int v17; // eax@10 int v18; // eax@15 int v19; // eax@15 int v20; // eax@16 int v21; // eax@19 int v22; // eax@19 int v23; // eax@20 int v24; // eax@24 int v25; // eax@24 void *v26; // ecx@25 int v27; // edx@28 int v28; // eax@32 int v29; // eax@32 int v30; // eax@33 int v31; // eax@36 int v32; // eax@36 int v33; // eax@37 int v34; // edx@40 int v35; // esi@44 int v36; // eax@45 int v37; // edx@45 unsigned __int16 v38; // cx@45 unsigned __int16 i; // dx@45 int v40; // esi@47 int v41; // ecx@47 int v42; // ecx@47 int v43; // ecx@48 int v44; // eax@54 int v46; // [sp-4h] [bp-28h]@25 void *v47; // [sp+14h] [bp-10h]@1 int v48; // [sp+2Ch] [bp+8h]@11 int v49; // [sp+2Ch] [bp+8h]@29 v3 = this; v47 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_AppendAggroPoint"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_AppendAggroPoint"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); *((_DWORD *)v7 + 4) = *(_DWORD *)(v5 + 16); v7[20] = 0; v8 = *((_DWORD *)v3 + 5); v9 = *(_WORD *)(*(_DWORD *)(v8 + 8) + 12 * *(_WORD *)(v8 + 14) + 4); while ( v9 < *(_WORD *)(v8 + 4) ) { v10 = v9; v11 = v9; v9 = *(_WORD *)(*(_DWORD *)(v8 + 8) + 12 * v9 + 4); if ( v11 >= *(_WORD *)(v8 + 4) || (v12 = 3 * v10, v13 = *(_DWORD *)(v8 + 8), v14 = *(_BYTE *)(v13 + 4 * v12 + 8) == 0, v15 = v13 + 4 * v12, v14) ) v16 = 0; else v16 = *(_DWORD *)v15; if ( *(_WORD *)v16 == *(_WORD *)(a2 + 4) ) { if ( v11 < *(_WORD *)(v8 + 4) && (v17 = *(_DWORD *)(v8 + 8) + 12 * v11, *(_BYTE *)(v17 + 8)) ) v48 = *(_DWORD *)v17; else v48 = 0; if ( *(_DWORD *)(v48 + 4) == (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) ) { if ( v11 >= *(_WORD *)(v8 + 4) || (v18 = *(_DWORD *)(v8 + 8), v14 = *(_BYTE *)(v18 + 12 * v11 + 8) == 0, v19 = v18 + 12 * v11, v14) ) v20 = 0; else v20 = *(_DWORD *)v19; *(_DWORD *)(v20 + 12) += a3; if ( v11 >= *(_WORD *)(v8 + 4) || (v21 = *(_DWORD *)(v8 + 8), v14 = *(_BYTE *)(v21 + 12 * v11 + 8) == 0, v22 = v21 + 12 * v11, v14) ) v23 = 0; else v23 = *(_DWORD *)v22; *(_DWORD *)(v23 + 16) = dword_14D129E8; } else { if ( v11 < *(_WORD *)(v8 + 4) && (v27 = *(_DWORD *)(v8 + 8), *(_BYTE *)(v27 + 12 * v11 + 8)) ) v49 = *(_DWORD *)(v27 + 12 * v11); else v49 = 0; *(_DWORD *)(v49 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); if ( v11 >= *(_WORD *)(v8 + 4) || (v28 = *(_DWORD *)(v8 + 8), v14 = *(_BYTE *)(v28 + 12 * v11 + 8) == 0, v29 = v28 + 12 * v11, v14) ) v30 = 0; else v30 = *(_DWORD *)v29; *(_DWORD *)(v30 + 16) = dword_14D129E8; if ( v11 >= *(_WORD *)(v8 + 4) || (v31 = *(_DWORD *)(v8 + 8), v14 = *(_BYTE *)(v31 + 12 * v11 + 8) == 0, v32 = v31 + 12 * v11, v14) ) v33 = 0; else v33 = *(_DWORD *)v32; *(_DWORD *)(v33 + 8) = v4; if ( v11 < *(_WORD *)(v8 + 4) && (v34 = *(_DWORD *)(v8 + 8), *(_BYTE *)(v34 + 12 * v11 + 8)) ) *(_DWORD *)(*(_DWORD *)(v34 + 12 * v11) + 12) = a3; else vC = a3; } if ( v11 >= *(_WORD *)(v8 + 4) || (v24 = *(_DWORD *)(v8 + 8), v14 = *(_BYTE *)(v24 + 12 * v11 + 8) == 0, v25 = v24 + 12 * v11, v14) ) { v26 = v47; v46 = 0; } else { v26 = v47; v46 = *(_DWORD *)v25; } goto LABEL_55; } v3 = v47; } if ( *(_WORD *)(v8 + 12) == -1 || (v35 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 8))(v8, *(_WORD *)(v8 + 12))) == 0 ) { v36 = *((_DWORD *)v3 + 5); v37 = *(_DWORD *)(v36 + 8); v38 = *(_WORD *)(v37 + 12 * *(_WORD *)(v36 + 14) + 4); for ( i = *(_WORD *)(v37 + 12 * *(_WORD *)(v37 + 12 * *(_WORD *)(v36 + 14) + 4) + 4); ; i = *(_WORD *)(*(_DWORD *)(v36 + 8) + 12 * i + 4) ) { if ( v38 >= *(_WORD *)(v36 + 4) || (v40 = *(_DWORD *)(v36 + 8), v41 = 3 * v38, v14 = *(_BYTE *)(v40 + 4 * v41 + 8) == 0, v42 = v40 + 4 * v41, v14) ) v43 = 0; else v43 = *(_DWORD *)v42; if ( !*(_DWORD *)(v43 + 12) ) break; if ( i >= *(_WORD *)(v36 + 4) ) goto LABEL_56; v38 = i; } v35 = v43; } *(_WORD *)v35 = *(_WORD *)(a2 + 4); v44 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_DWORD *)(v35 + 12) = a3; *(_DWORD *)(v35 + 4) = v44; *(_DWORD *)(v35 + 8) = a2; *(_DWORD *)(v35 + 16) = dword_14D129E8; *(_DWORD *)(v35 + 24) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1152))(a2) + 256) & *(_DWORD *)(v35 + 28); v46 = v35; v26 = v3; LABEL_55: sub_4AB8B0(v26, v46); LABEL_56: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_AppendAggroPoint"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 14D129E8: using guessed type int dword_14D129E8; //----- (004AD0D0) -------------------------------------------------------- char __thiscall sub_4AD0D0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 unsigned __int16 v5; // ax@1 char v6; // al@3 int v7; // edx@3 int v8; // ecx@3 int v9; // eax@4 char result; // al@5 char v11; // al@6 int v12; // eax@10 v4 = this; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1800))(a3); if ( !sub_63EDC0((int)&unk_14D159B0, v5, 1) || !(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2252))(a3) ) return 1; v6 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 291); v7 = *(_DWORD *)a3; v8 = a3; if ( v6 || (v11 = (*(int (__thiscall **)(int, signed int))(v7 + 996))(a3, 499), v7 = *(_DWORD *)a3, v8 = a3, v11) ) { v9 = (*(int (__thiscall **)(int))(v7 + 1388))(v8); sub_418B40((int)byte_85A2C0, v9); return 1; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v7 + 1156))(a3) == 3 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 75) || (v12 = sub_409730(a3)) == 0 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 3864))(v12) ) return 1; if ( sub_427B40(*(_DWORD *)(a3 + 118), *(_DWORD *)(a2 + 118)) && sub_499E90(a3, a2) ) { *((_DWORD *)v4 + 16) = a3; *((_WORD *)v4 + 28) = *(_WORD *)(a3 + 4); *((_DWORD *)v4 + 15) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); result = 0; } else { result = 1; } return result; } //----- (004AD1F0) -------------------------------------------------------- int __thiscall sub_4AD1F0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // edi@2 int v6; // edi@2 void *v8; // eax@4 signed int v9; // edi@6 unsigned __int16 *v10; // ebx@6 int v11; // [sp-4h] [bp-24h]@10 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanMyTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_CanMyTarget"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 8) + 12 * a3; switch ( *(_DWORD *)(*(_DWORD *)v4 + 79) ) { case 1: v5 = (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1264))(v3) >> 1; v6 = -((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1256))(v3) < v5); goto LABEL_3; case 2: v8 = sub_447910((int)&unk_132577A0, *(_WORD *)(v4 + 4)); if ( v8 ) { v9 = 0; v10 = (unsigned __int16 *)((char *)v8 + 64); do { if ( *(_DWORD *)v10 != 792 ) { sub_42ADD0((int)((char *)v3 + 3796), *(_DWORD *)v10, (int)((char *)&a3 + 3)); if ( !BYTE3(a3) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanMyTarget"); return (int)v3; } } ++v9; v10 += 6; } while ( v9 < 4 ); --dword_750CB8; v11 = (int)"ShineObjectClass::ShineMob::so_mob_CanMyTarget"; } else { --dword_750CB8; LABEL_14: v11 = (int)"ShineObjectClass::ShineMob::so_mob_CanMyTarget"; } sub_467660((int)&unk_D020420, v11); return 0; case 4: v6 = -(sub_40AC30((char *)v3 + 432) != 0); LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CanMyTarget"); return (unsigned int)v3 & v6; default: --dword_750CB8; goto LABEL_14; } } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AD3C0) -------------------------------------------------------- void *__thiscall sub_4AD3C0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ebx@3 int v5; // eax@3 int v6; // edi@3 int v7; // edx@3 char v8; // al@4 int v9; // ecx@4 void *result; // eax@5 char v11; // al@6 void *v12; // eax@9 signed int v13; // edi@10 unsigned __int16 *v14; // ebx@10 char v15; // al@18 void *v16; // ecx@18 char v17; // al@19 int v18; // edi@20 int v19; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1232))(v3) == 4 ) { v19 = (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"; LABEL_15: --dword_750CB8; v9 = (int)&unk_D020420; LABEL_16: sub_467660(v9, v19); result = 0; } else { v4 = a2; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); v6 = 12 * a3; v7 = *(_DWORD *)(*(_DWORD *)(v5 + 8) + 12 * a3); a2 = v5; switch ( *(_DWORD *)(v7 + 79) ) { case 0: v8 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3672))(v3, v4); --dword_750CB8; v19 = (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"; v9 = (int)&unk_D020420; if ( v8 ) goto LABEL_16; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = v3; break; case 1: v11 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3672))(v3, v4); --dword_750CB8; v19 = (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"; v9 = (int)&unk_D020420; if ( v11 != 1 ) goto LABEL_16; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = v3; break; case 2: if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 3672))(v3, v4) == 1 || (v12 = sub_447910((int)&unk_132577A0, *(_WORD *)(*(_DWORD *)(a2 + 8) + v6 + 4))) == 0 ) goto LABEL_14; v13 = 0; v14 = (unsigned __int16 *)((char *)v12 + 64); while ( 1 ) { if ( *(_DWORD *)v14 != 792 ) { sub_42ADD0((int)((char *)v3 + 3796), *(_DWORD *)v14, (int)((char *)&a2 + 3)); if ( !BYTE3(a2) ) break; } ++v13; v14 += 6; if ( v13 >= 4 ) goto LABEL_14; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = v3; break; default: LABEL_14: v19 = (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"; goto LABEL_15; case 4: v15 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 3672))(v3, v4); v16 = (char *)v3 + 432; if ( v15 ) v17 = sub_40AC30(v16); else v17 = sub_40AAA0(v16); --dword_750CB8; v18 = v17 != 0 ? (int)v3 : 0; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = (void *)v18; break; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AD630) -------------------------------------------------------- void *__thiscall sub_4AD630(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // eax@1 void *result; // eax@2 void *v6; // eax@3 signed int v7; // esi@4 unsigned __int16 *v8; // ebx@4 char v9; // al@10 int v10; // esi@10 int v11; // [sp-4h] [bp-24h]@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)a2 + 1804))() + 8) + 12 * a3; switch ( *(_DWORD *)(*(_DWORD *)v4 + 79) ) { case 0: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"); result = v3; break; case 2: v6 = sub_447910((int)&unk_132577A0, *(_WORD *)(v4 + 4)); if ( !v6 ) goto LABEL_11; v7 = 0; v8 = (unsigned __int16 *)((char *)v6 + 64); while ( 1 ) { if ( *(_DWORD *)v8 != 792 ) { sub_42ADD0((int)((char *)v3 + 3796), *(_DWORD *)v8, (int)((char *)&a2 + 3)); if ( !BYTE3(a2) ) break; } ++v7; v8 += 6; if ( v7 >= 4 ) { v11 = (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_12; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"); result = v3; break; case 4: v9 = sub_40AAA0((char *)v3 + 432); --dword_750CB8; v10 = v9 != 0 ? (int)v3 : 0; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"); result = (void *)v10; break; default: LABEL_11: v11 = (int)"ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, v11); result = 0; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AD800) -------------------------------------------------------- void *__thiscall sub_4AD800(void *this, int a2, int a3) { void *v3; // ebx@1 void *result; // eax@2 int v5; // eax@3 int v6; // ecx@4 int v7; // ecx@5 void *v8; // eax@8 signed int v9; // esi@9 unsigned __int16 *v10; // edi@9 v3 = this; if ( a2 && (v5 = (*(int (**)(void))(*(_DWORD *)a2 + 1804))()) != 0 && (v6 = *(_DWORD *)(v5 + 8)) != 0 && (v7 = v6 + 12 * a3, *(_DWORD *)v7) ) { switch ( *(_DWORD *)(*(_DWORD *)v7 + 79) ) { default: goto LABEL_2; case 0: return v3; case 2: v8 = sub_447910((int)&unk_132577A0, *(_WORD *)(v7 + 4)); if ( !v8 ) goto LABEL_2; v9 = 0; v10 = (unsigned __int16 *)((char *)v8 + 64); break; case 4: return (void *)(sub_40AAA0((char *)v3 + 432) == 0 ? (int)v3 : 0); } while ( 1 ) { if ( *(_DWORD *)v10 != 792 ) { sub_42ADD0((int)((char *)v3 + 3796), *(_DWORD *)v10, (int)((char *)&a2 + 3)); if ( !BYTE3(a2) ) break; } ++v9; v10 += 6; if ( v9 >= 4 ) return 0; } result = v3; } else { LABEL_2: result = 0; } return result; } //----- (004AD8E0) -------------------------------------------------------- int __thiscall sub_4AD8E0(int this) { return *(_DWORD *)(this + 1636) + 1; } //----- (004AD8F0) -------------------------------------------------------- signed int __cdecl sub_4AD8F0() { return 1000000000; } //----- (004AD900) -------------------------------------------------------- int __thiscall sub_4AD900(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_WanderChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_WanderChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 2) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 4))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_WanderChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AD9D0) -------------------------------------------------------- int __thiscall sub_4AD9D0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_AttackChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_AttackChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 3) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 8))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_AttackChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ADAA0) -------------------------------------------------------- int __thiscall sub_4ADAA0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_DamageChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_DamageChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 4) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 12))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_DamageChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ADB70) -------------------------------------------------------- int __thiscall sub_4ADB70(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_KilledChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_KilledChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 5) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 16))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_KilledChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ADC40) -------------------------------------------------------- int __thiscall sub_4ADC40(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_HelpReqChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_HelpReqChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 6) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 20))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_HelpReqChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ADD10) -------------------------------------------------------- int __thiscall sub_4ADD10(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_HelpAckChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_HelpAckChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 7) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_HelpAckChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ADDE0) -------------------------------------------------------- int __thiscall sub_4ADDE0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_DetectBattleChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatManager::mcm_DetectBattleChat"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2); if ( v3 < *(_DWORD *)v2 ) { v4 = *(_DWORD *)(*((_DWORD *)v2 + 8) + 4 * v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 28))(v4, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatManager::mcm_DetectBattleChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004ADEB0) -------------------------------------------------------- int __thiscall sub_4ADEB0(int this, int a2) { int result; // eax@1 int v3; // ecx@2 int v4; // ecx@3 result = this; *(_DWORD *)this = &off_6BE068; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 4) = *(_DWORD *)a2; *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 24); memcpy((void *)(this + 32), (const void *)(a2 + 28), 0x104u); *(_DWORD *)(this + 292) = 0; do { v3 = *(_DWORD *)(result + 292); if ( *(_BYTE *)(v3 + result + (*(_DWORD *)(result + 292) << 6) + 32) == 45 ) break; v4 = v3 + 1; *(_DWORD *)(result + 292) = v4; } while ( v4 < 4 ); return result; } // 6BE068: using guessed type int (*off_6BE068)(); //----- (004ADF40) -------------------------------------------------------- signed int __thiscall sub_4ADF40(void *this) { void *v1; // edi@1 signed int result; // eax@2 int v3; // ecx@3 char *v4; // ecx@4 int v5; // eax@4 unsigned __int16 v6; // ax@4 int v7; // esi@6 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElementWander::mceb_MobChatInterval"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElementWander::mceb_MobChatInterval"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 73) ) { v3 = *((_DWORD *)v1 + 74); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = *((_DWORD *)v1 + 6) + *((_DWORD *)v1 + 75) * v6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElementWander::mceb_MobChatInterval"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElementWander::mceb_MobChatInterval"); result = 1000000000; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE040) -------------------------------------------------------- int __thiscall sub_4AE040(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char *v4; // ecx@4 int v5; // eax@4 unsigned __int16 v6; // ax@4 int v7; // edx@6 int v8; // eax@6 char v9; // cl@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElementWander::mceb_WanderChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElementWander::mceb_WanderChat"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 73); if ( v3 ) { if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6 + v6 + 32); v8 = (int)((char *)v2 + 64 * v6 + v6 + 32); do v9 = *(_BYTE *)v8++; while ( v9 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v7, v8 - (v7 + 1), 0); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElementWander::mceb_WanderChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE160) -------------------------------------------------------- int __thiscall sub_4AE160(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 char *v4; // ecx@5 int v5; // eax@5 unsigned __int16 v6; // ax@5 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // esi@7 char v11; // cl@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_AttackChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElement::mceb_AttackChat"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 73) ) { if ( (unsigned int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= *((_DWORD *)v2 + 6) ) { v3 = *((_DWORD *)v2 + 73); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6); v8 = v6 + v7 + 32; v9 = v6 + v7 + 32; v10 = v9 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v8, v9 - v10, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_AttackChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE290) -------------------------------------------------------- int __thiscall sub_4AE290(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 char *v4; // ecx@5 int v5; // eax@5 unsigned __int16 v6; // ax@5 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // esi@7 char v11; // cl@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_DamageChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElement::mceb_DamageChat"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 73) ) { if ( (unsigned int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= *((_DWORD *)v2 + 6) ) { v3 = *((_DWORD *)v2 + 73); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6); v8 = v6 + v7 + 32; v9 = v6 + v7 + 32; v10 = v9 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v8, v9 - v10, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_DamageChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE3C0) -------------------------------------------------------- int __thiscall sub_4AE3C0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 char *v4; // ecx@5 int v5; // eax@5 unsigned __int16 v6; // ax@5 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // esi@7 char v11; // cl@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_KilledChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElement::mceb_KilledChat"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 73) ) { if ( (unsigned int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= *((_DWORD *)v2 + 6) ) { v3 = *((_DWORD *)v2 + 73); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6); v8 = v6 + v7 + 32; v9 = v6 + v7 + 32; v10 = v9 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v8, v9 - v10, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_KilledChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE4F0) -------------------------------------------------------- int __thiscall sub_4AE4F0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 char *v4; // ecx@5 int v5; // eax@5 unsigned __int16 v6; // ax@5 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // esi@7 char v11; // cl@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_HelpReqChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElement::mceb_HelpReqChat"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 73) ) { if ( (unsigned int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= *((_DWORD *)v2 + 6) ) { v3 = *((_DWORD *)v2 + 73); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6); v8 = v6 + v7 + 32; v9 = v6 + v7 + 32; v10 = v9 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v8, v9 - v10, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_HelpReqChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE620) -------------------------------------------------------- int __thiscall sub_4AE620(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 char *v4; // ecx@5 int v5; // eax@5 unsigned __int16 v6; // ax@5 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // esi@7 char v11; // cl@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_HelpAckChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElement::mceb_HelpAckChat"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 73) ) { if ( (unsigned int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= *((_DWORD *)v2 + 6) ) { v3 = *((_DWORD *)v2 + 73); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6); v8 = v6 + v7 + 32; v9 = v6 + v7 + 32; v10 = v9 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v8, v9 - v10, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_HelpAckChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE750) -------------------------------------------------------- int __thiscall sub_4AE750(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@4 char *v4; // ecx@5 int v5; // eax@5 unsigned __int16 v6; // ax@5 int v7; // ecx@7 int v8; // edx@7 int v9; // eax@7 int v10; // esi@7 char v11; // cl@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_DetectBattleChat"); dword_7508B8[dword_750CB8] = (int)"MobChat::MobChatElement::mceb_DetectBattleChat"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 73) ) { if ( (unsigned int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) <= *((_DWORD *)v2 + 6) ) { v3 = *((_DWORD *)v2 + 73); if ( (unsigned int)(v3 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * v3; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = (int)((char *)v2 + 64 * v6); v8 = v6 + v7 + 32; v9 = v6 + v7 + 32; v10 = v9 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)a2 + 1328))(65535, v8, v9 - v10, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"MobChat::MobChatElement::mceb_DetectBattleChat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004AE9D0) -------------------------------------------------------- void __thiscall sub_4AE9D0(void *this, int a2) { void *v2; // edi@1 int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 unsigned int v6; // esi@1 char v7; // bl@2 int v8; // eax@2 int v9; // eax@4 int v10; // eax@4 int v11; // ecx@5 unsigned int v12; // eax@7 int v13; // ecx@7 signed __int16 v14; // cx@10 int v15; // eax@12 int v16; // ebx@15 int *v17; // eax@17 int v18; // eax@18 int v19; // eax@20 int v20; // esi@24 int v21; // eax@25 int v22; // ecx@25 int v23; // esi@32 signed int v24; // eax@33 signed int v25; // ecx@34 int v26; // eax@47 int v27; // eax@57 int v28; // eax@67 int v29; // eax@77 int v30; // eax@87 int v31; // eax@97 int v32; // eax@100 char *v33; // [sp+0h] [bp-109FCh]@7 char *v34; // [sp+4h] [bp-109F8h]@7 char *v35; // [sp+8h] [bp-109F4h]@7 char *v36; // [sp+Ch] [bp-109F0h]@7 char *v37; // [sp+10h] [bp-109ECh]@7 char *v38; // [sp+14h] [bp-109E8h]@7 char *v39; // [sp+18h] [bp-109E4h]@7 unsigned int v40; // [sp+1Ch] [bp-109E0h]@7 int v41; // [sp+20h] [bp-109DCh]@16 unsigned int v42; // [sp+24h] [bp-109D8h]@18 int v43; // [sp+28h] [bp-109D4h]@24 char v44; // [sp+2Ch] [bp-109D0h]@1 char v45[4]; // [sp+10880h] [bp-17Ch]@7 int v46; // [sp+10884h] [bp-178h]@7 int v47; // [sp+10888h] [bp-174h]@7 int v48; // [sp+1088Ch] [bp-170h]@7 int v49; // [sp+10890h] [bp-16Ch]@7 char v50[4]; // [sp+10894h] [bp-168h]@7 int v51; // [sp+10898h] [bp-164h]@7 int v52; // [sp+1089Ch] [bp-160h]@7 int v53; // [sp+108A0h] [bp-15Ch]@7 int v54; // [sp+108A4h] [bp-158h]@7 char v55[4]; // [sp+108A8h] [bp-154h]@7 int v56; // [sp+108ACh] [bp-150h]@7 int v57; // [sp+108B0h] [bp-14Ch]@7 int v58; // [sp+108B4h] [bp-148h]@7 int v59; // [sp+108B8h] [bp-144h]@7 char v60[4]; // [sp+108BCh] [bp-140h]@7 int v61; // [sp+108C0h] [bp-13Ch]@7 int v62; // [sp+108C4h] [bp-138h]@7 int v63; // [sp+108C8h] [bp-134h]@7 int v64; // [sp+108CCh] [bp-130h]@7 char v65[4]; // [sp+108D0h] [bp-12Ch]@7 int v66; // [sp+108D4h] [bp-128h]@7 int v67; // [sp+108D8h] [bp-124h]@7 int v68; // [sp+108DCh] [bp-120h]@7 int v69; // [sp+108E0h] [bp-11Ch]@7 char v70[4]; // [sp+108E4h] [bp-118h]@7 int v71; // [sp+108E8h] [bp-114h]@7 int v72; // [sp+108ECh] [bp-110h]@7 int v73; // [sp+108F0h] [bp-10Ch]@7 int v74; // [sp+108F4h] [bp-108h]@7 char v75[4]; // [sp+108F8h] [bp-104h]@7 int v76; // [sp+108FCh] [bp-100h]@7 int v77; // [sp+10900h] [bp-FCh]@7 int v78; // [sp+10904h] [bp-F8h]@7 int v79; // [sp+10908h] [bp-F4h]@7 char v80; // [sp+1090Ch] [bp-F0h]@100 char v81; // [sp+1094Ch] [bp-B0h]@1 int v82; // [sp+109CCh] [bp-30h]@1 int v83; // [sp+109D0h] [bp-2Ch]@1 int v84; // [sp+109D4h] [bp-28h]@1 int v85; // [sp+109D8h] [bp-24h]@1 char v86; // [sp+109DCh] [bp-20h]@1 unsigned int v87; // [sp+109ECh] [bp-10h]@1 int v88; // [sp+109F8h] [bp-4h]@1 int v89; // [sp+109FCh] [bp+0h]@1 v87 = (unsigned int)&v89 ^ __security_cookie; v2 = this; sub_6432E0((int)&v44); v3 = *(_DWORD *)(a2 + 4); v82 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 8); v83 = v3; v5 = *(_DWORD *)(a2 + 12); v84 = v4; v6 = 0; v88 = 0; v85 = v5; v86 = 0; sprintf(&v81, "../9Data/Shine/World/%s/MobChat.txt", &v82); if ( !sub_6434A0(&v44, &v81) ) { sprintf(&v81, "../9Data/Shine/World/MobChat.txt"); v7 = sub_6434A0(&v44, &v81); v8 = sub_642790(&v44); if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Error in Script read", v8); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } } v9 = dword_14D16014 + 1; *(_DWORD *)v2 = dword_14D16014 + 1; *((_DWORD *)v2 + 2) = unknown_libname_130(4 * v9 | -((unsigned __int64)(unsigned int)v9 >> 30 != 0)); *((_DWORD *)v2 + 3) = unknown_libname_130(4 * *(_DWORD *)v2 | -((unsigned __int64)*(_DWORD *)v2 >> 30 != 0)); *((_DWORD *)v2 + 4) = unknown_libname_130(4 * *(_DWORD *)v2 | -((unsigned __int64)*(_DWORD *)v2 >> 30 != 0)); *((_DWORD *)v2 + 5) = unknown_libname_130(4 * *(_DWORD *)v2 | -((unsigned __int64)*(_DWORD *)v2 >> 30 != 0)); *((_DWORD *)v2 + 6) = unknown_libname_130(4 * *(_DWORD *)v2 | -((unsigned __int64)*(_DWORD *)v2 >> 30 != 0)); *((_DWORD *)v2 + 7) = unknown_libname_130(4 * *(_DWORD *)v2 | -((unsigned __int64)*(_DWORD *)v2 >> 30 != 0)); *((_DWORD *)v2 + 8) = unknown_libname_130(4 * *(_DWORD *)v2 | -((unsigned __int64)*(_DWORD *)v2 >> 30 != 0)); v10 = 0; if ( *(_DWORD *)v2 > 0 ) { v11 = (int)((char *)v2 + 4); do { *(_DWORD *)(*((_DWORD *)v2 + 8) + 4 * v10) = v11; *(_DWORD *)(*((_DWORD *)v2 + 7) + 4 * v10) = v11; *(_DWORD *)(*((_DWORD *)v2 + 6) + 4 * v10) = v11; *(_DWORD *)(*((_DWORD *)v2 + 5) + 4 * v10) = v11; *(_DWORD *)(*((_DWORD *)v2 + 4) + 4 * v10) = v11; *(_DWORD *)(*((_DWORD *)v2 + 3) + 4 * v10) = v11; *(_DWORD *)(*((_DWORD *)v2 + 2) + 4 * v10++) = v11; } while ( v10 < *(_DWORD *)v2 ); } v54 = 0; v53 = 0; v52 = 0; v51 = 0; *(_DWORD *)v50 = 0; strncpy(v50, "PIECE", 0x14u); v64 = 0; v63 = 0; v62 = 0; v61 = 0; *(_DWORD *)v60 = 0; strncpy(v60, "ATTACK", 0x14u); v59 = 0; v58 = 0; v57 = 0; v56 = 0; *(_DWORD *)v55 = 0; strncpy(v55, "DAMAGED", 0x14u); v79 = 0; v78 = 0; v77 = 0; v76 = 0; *(_DWORD *)v75 = 0; strncpy(v75, "DEAD", 0x14u); v49 = 0; v48 = 0; v47 = 0; v46 = 0; *(_DWORD *)v45 = 0; strncpy(v45, "HELPMAIN", 0x14u); v74 = 0; v73 = 0; v72 = 0; v71 = 0; *(_DWORD *)v70 = 0; strncpy(v70, "HELPSUB", 0x14u); v69 = 0; v68 = 0; v67 = 0; v66 = 0; *(_DWORD *)v65 = 0; strncpy(v65, "RACERESCU", 0x14u); v33 = v50; v34 = v60; v35 = v55; v36 = v75; v38 = v70; v12 = 0; v39 = v65; v13 = dword_14D16010; v37 = v45; v40 = 0; while ( 2 ) { if ( v12 < v13 ) { if ( v12 < *(_DWORD *)(dword_14D159E4 + 40) ) v15 = sub_626BC0((int)&unk_14D159B0, v12); else v15 = (int)&unk_14D159F0; v14 = *(_WORD *)v15; } else { v14 = -1; } v16 = (unsigned __int16)v14; if ( (unsigned __int16)v14 <= (unsigned int)dword_14D16014 ) { v41 = dword_14D1600C + 52 * (unsigned __int16)v14; if ( dword_14D1600C + 52 * (unsigned __int16)v14 ) { v17 = *(int **)(dword_14D1600C + 52 * (unsigned __int16)v14); if ( v17 != (int *)v6 ) { v18 = *(_WORD *)v17; v42 = v18; if ( ((_WORD)v18 == v14) != v6 ) { v19 = v41; goto LABEL_21; } sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", (unsigned __int16)v14, v18); } } } v19 = 0; LABEL_21: v41 = v19; if ( (v19 != v6) == v6 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Null inf", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v42 = v6; do { v20 = (int)(&v33)[4 * v42]; v43 = sub_644460( &v44, *(_DWORD *)v20, *(_DWORD *)(v20 + 4), *(_DWORD *)(v20 + 8), *(_DWORD *)(v20 + 12), *(_DWORD *)(v20 + 16), "MobIndex", *(_DWORD *)v41 + 2, 0); if ( !v43 ) goto LABEL_101; v21 = *(_DWORD *)v20; v22 = *(_DWORD *)(v20 + 4); if ( *(_DWORD *)v20 != *(_DWORD *)v50 || v22 != v51 || *(_DWORD *)(v20 + 8) != v52 || *(_DWORD *)(v20 + 12) != v53 || *(_DWORD *)(v20 + 16) != v54 ) { if ( v21 != *(_DWORD *)v60 || v22 != v61 || *(_DWORD *)(v20 + 8) != v62 || *(_DWORD *)(v20 + 12) != v63 || *(_DWORD *)(v20 + 16) != v64 ) { if ( v21 != *(_DWORD *)v55 || v22 != v56 || *(_DWORD *)(v20 + 8) != v57 || *(_DWORD *)(v20 + 12) != v58 || *(_DWORD *)(v20 + 16) != v59 ) { if ( v21 != *(_DWORD *)v75 || v22 != v76 || *(_DWORD *)(v20 + 8) != v77 || *(_DWORD *)(v20 + 12) != v78 || *(_DWORD *)(v20 + 16) != v79 ) { if ( v21 != *(_DWORD *)v45 || v22 != v46 || *(_DWORD *)(v20 + 8) != v47 || *(_DWORD *)(v20 + 12) != v48 || *(_DWORD *)(v20 + 16) != v49 ) { if ( v21 != *(_DWORD *)v70 || v22 != v71 || *(_DWORD *)(v20 + 8) != v72 || *(_DWORD *)(v20 + 12) != v73 || *(_DWORD *)(v20 + 16) != v74 ) { if ( v21 != *(_DWORD *)v65 || v22 != v66 || *(_DWORD *)(v20 + 8) != v67 || *(_DWORD *)(v20 + 12) != v68 || *(_DWORD *)(v20 + 16) != v69 ) { v32 = sub_649DA0(v20, (int)&v80); sub_6390B0(&unk_86DDD8, (int)"Invalid Flag", v32); } else { if ( *(void **)(*((_DWORD *)v2 + 8) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v31 = operator new(0x128u); if ( v31 ) *(_DWORD *)(*((_DWORD *)v2 + 8) + 4 * v16) = sub_4ADEB0(v31, v43); else *(_DWORD *)(*((_DWORD *)v2 + 8) + 4 * v16) = 0; } } else { if ( *(void **)(*((_DWORD *)v2 + 7) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v30 = operator new(0x128u); if ( v30 ) *(_DWORD *)(*((_DWORD *)v2 + 7) + 4 * v16) = sub_4ADEB0(v30, v43); else *(_DWORD *)(*((_DWORD *)v2 + 7) + 4 * v16) = 0; } } else { if ( *(void **)(*((_DWORD *)v2 + 6) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v29 = operator new(0x128u); if ( v29 ) *(_DWORD *)(*((_DWORD *)v2 + 6) + 4 * v16) = sub_4ADEB0(v29, v43); else *(_DWORD *)(*((_DWORD *)v2 + 6) + 4 * v16) = 0; } } else { if ( *(void **)(*((_DWORD *)v2 + 5) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v28 = operator new(0x128u); if ( v28 ) *(_DWORD *)(*((_DWORD *)v2 + 5) + 4 * v16) = sub_4ADEB0(v28, v43); else *(_DWORD *)(*((_DWORD *)v2 + 5) + 4 * v16) = 0; } } else { if ( *(void **)(*((_DWORD *)v2 + 4) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v27 = operator new(0x128u); if ( v27 ) *(_DWORD *)(*((_DWORD *)v2 + 4) + 4 * v16) = sub_4ADEB0(v27, v43); else *(_DWORD *)(*((_DWORD *)v2 + 4) + 4 * v16) = 0; } } else { if ( *(void **)(*((_DWORD *)v2 + 3) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v26 = operator new(0x128u); if ( v26 ) *(_DWORD *)(*((_DWORD *)v2 + 3) + 4 * v16) = sub_4ADEB0(v26, v43); else *(_DWORD *)(*((_DWORD *)v2 + 3) + 4 * v16) = 0; } } else { if ( *(void **)(*((_DWORD *)v2 + 2) + 4 * v16) != (char *)v2 + 4 ) { sub_639100(&unk_86DDD8, (int)"MobChat::MobChatManager::mcm_Load : Duplicate entry", v16); loc_6391B0("MobChat::MobChatManager::mcm_Load"); } v23 = operator new(0x130u); if ( !v23 ) { v23 = 0; LABEL_39: *(_DWORD *)(*((_DWORD *)v2 + 2) + 4 * v16) = v23; goto LABEL_101; } sub_4ADEB0(v23, v43); v24 = *(_DWORD *)(v23 + 28) - *(_DWORD *)(v23 + 24); *(_DWORD *)v23 = &off_6BE08C; *(_DWORD *)(v23 + 296) = v24; *(_DWORD *)(v23 + 300) = 1; if ( v24 < 100 ) goto LABEL_39; v25 = 1; do { v24 /= 2; v25 *= 2; *(_DWORD *)(v23 + 296) = v24; *(_DWORD *)(v23 + 300) = v25; } while ( v24 >= 100 ); *(_DWORD *)(*((_DWORD *)v2 + 2) + 4 * v16) = v23; } LABEL_101: ++v42; } while ( v42 < 7 ); v13 = dword_14D16010; ++v40; if ( v40 < dword_14D16010 ) { v12 = v40; v6 = 0; continue; } break; } v88 = -1; sub_643080(&v44); } // 4AE9D0: could not find valid save-restore pair for ebx // 4AE9D0: could not find valid save-restore pair for edi // 4AE9D0: could not find valid save-restore pair for esi // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BE08C: using guessed type int (*off_6BE08C)(); // 86FEB8: using guessed type int __security_cookie; // 14D159E4: using guessed type int dword_14D159E4; // 14D1600C: using guessed type int dword_14D1600C; // 14D16010: using guessed type int dword_14D16010; // 14D16014: using guessed type int dword_14D16014; //----- (004AF3D0) -------------------------------------------------------- bool __thiscall sub_4AF3D0(void *this, int a2) { void *v2; // edi@1 bool result; // al@2 unsigned int v4; // ebx@5 v2 = this; if ( a2 && (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1800))(a2) != -1 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 3396))(a2) < *((_BYTE *)v2 + 4) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1256))(a2); result = v4 < (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1264))(a2) * *((_DWORD *)v2 + 3) / 0x64u; } else { result = 0; } return result; } //----- (004AF450) -------------------------------------------------------- int __cdecl sub_4AF450(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (004AF470) -------------------------------------------------------- void *__thiscall sub_4AF470(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6BE388; if ( a2 & 1 ) operator delete(this); return v2; } // 6BE388: using guessed type int (__thiscall *off_6BE388)(void *, char); //----- (004AF4A0) -------------------------------------------------------- int __cdecl sub_4AF4A0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 4 ) { if ( result ) *(_DWORD *)result = *(_DWORD *)v3; v3 += 4; } return result; } //----- (004AF4D0) -------------------------------------------------------- int __thiscall sub_4AF4D0(int this, __int16 a2) { int v2; // esi@1 int result; // eax@2 int v4; // [sp+4h] [bp-4h]@3 v2 = this; if ( a2 == -1 || (sub_648340(this, (int)&v4, (int)&a2), v4 == *(_DWORD *)(v2 + 4)) ) result = 0; else result = ((*(_DWORD *)(v4 + 20) - *(_DWORD *)(v4 + 16)) & 0xFFFFFFFC) != 0 ? v4 + 16 : 0; return result; } //----- (004AF520) -------------------------------------------------------- int __cdecl sub_4AF520(int a1, int a2, int a3) { *(_WORD *)a1 = *(_WORD *)a2; sub_5C0AA0(a1 + 4, a3); return a1; } //----- (004AF550) -------------------------------------------------------- void __stdcall sub_4AF550(void *a1) { void *v1; // esi@1 void *i; // edi@1 int v3; // ecx@2 v1 = a1; for ( i = a1; !*((_BYTE *)i + 33); v1 = i ) { sub_4AF550(*((void **)i + 2)); i = *(void **)i; v3 = 0; if ( *((_DWORD *)v1 + 4) ) { operator delete(*((void **)v1 + 4)); v3 = 0; } *((_DWORD *)v1 + 4) = v3; *((_DWORD *)v1 + 5) = v3; *((_DWORD *)v1 + 6) = v3; operator delete(v1); } } //----- (004AF5B0) -------------------------------------------------------- int __thiscall sub_4AF5B0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 unsigned int v16; // eax@61 int result; // eax@63 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 33) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_647B50(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 33) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 33) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 33) ) { v9 = v6; } else { v9 = sub_5C4910(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 33) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_4AF450(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 33) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 33) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 32); *(_BYTE *)(v5 + 32) = *(_BYTE *)(v3 + 32); *(_BYTE *)(v3 + 32) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 32) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 32) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 32) ) { *(_BYTE *)(v15 + 32) = 1; *(_BYTE *)(v6 + 32) = 0; sub_4A1020(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 33) ) goto LABEL_53; 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; sub_4A1080(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 32) = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) = 1; sub_4A1020(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 32) ) { *(_BYTE *)(v15 + 32) = 1; *(_BYTE *)(v6 + 32) = 0; sub_4A1080(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 33) ) goto LABEL_53; 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; sub_4A1020(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 32) = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = 1; *(_BYTE *)(*(_DWORD *)v15 + 32) = 1; sub_4A1080(i, v6); break; } } *(_BYTE *)(v15 + 32) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 32) = 1; } if ( *(_DWORD *)(v18 + 16) ) operator delete(*(void **)(v18 + 16)); *(_DWORD *)(v18 + 16) = 0; *(_DWORD *)(v18 + 20) = 0; *(_DWORD *)(v18 + 24) = 0; operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 > 0 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (004AF820) -------------------------------------------------------- int __thiscall sub_4AF820(int this, int a2, void *a3, int a4) { int v4; // ebx@1 int v5; // ecx@1 int v6; // eax@1 int v7; // esi@1 void *v8; // edi@1 bool v9; // cl@1 unsigned __int16 v10; // dx@2 int v11; // edx@12 int result; // eax@12 int v13; // ecx@15 int v14; // edx@18 char v15; // [sp+18h] [bp+Ch]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = v5; v8 = a3; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v6 + 33) ) { v10 = *((_WORD *)v8 + 6); do { v7 = v6; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v6 + 12) >= v10; else v9 = v10 < *(_WORD *)(v6 + 12); v15 = v9; if ( v9 ) v6 = *(_DWORD *)v6; else v6 = *(_DWORD *)(v6 + 8); } while ( !*(_BYTE *)(v6 + 33) ); } a4 = v7; if ( v9 ) { if ( v7 == **(_DWORD **)(v4 + 4) ) { v11 = *(_DWORD *)sub_465FF0(v4, (int)&a4, 1, v7, v8); result = a2; *(_BYTE *)(a2 + 4) = 1; *(_DWORD *)a2 = v11; return result; } sub_5C2C10(&a4); } if ( *(_WORD *)(a4 + 12) >= *((_WORD *)v8 + 6) ) { if ( *((_DWORD *)v8 + 4) ) operator delete(*((void **)v8 + 4)); *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 6) = 0; operator delete(v8); result = a2; v14 = a4; *(_BYTE *)(a2 + 4) = 0; *(_DWORD *)a2 = v14; } else { v13 = *(_DWORD *)sub_465FF0(v4, (int)&a4, v15, v7, v8); result = a2; *(_DWORD *)a2 = v13; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (004AF910) -------------------------------------------------------- int __thiscall sub_4AF910(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 33) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 33) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_4AF5B0((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_4AF550(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (004AF9D0) -------------------------------------------------------- int __thiscall sub_4AF9D0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ebx@1 void *v4; // ecx@2 void *v5; // eax@2 unsigned int v6; // edi@2 signed int v7; // esi@2 int v8; // ecx@3 int v9; // ecx@12 int j; // eax@13 int i; // eax@16 int result; // eax@22 void *v13; // [sp+10h] [bp-20h]@2 void *v14; // [sp+14h] [bp-1Ch]@2 int v15; // [sp+18h] [bp-18h]@11 int v16; // [sp+20h] [bp-10h]@1 int v17; // [sp+2Ch] [bp-4h]@2 v1 = this; v16 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != v2 ) { do { sub_5C0AA0((int)&v13, v3 + 16); v4 = v14; v5 = v13; v6 = 0; v7 = (signed int)(v14 - v13) >> 2; v17 = 0; if ( v7 ) { do { v8 = *((_DWORD *)v5 + v6); if ( v8 ) { (**(void (__stdcall ***)(_DWORD))v8)(1); v5 = v13; } ++v6; } while ( v7 > v6 ); v4 = v14; } if ( v5 != v4 ) { memmove_0(v5, v4, 0); v5 = v13; } v17 = -1; if ( v5 ) operator delete(v5); v13 = 0; v14 = 0; v15 = 0; if ( !*(_BYTE *)(v3 + 33) ) { v9 = *(_DWORD *)(v3 + 8); if ( *(_BYTE *)(v9 + 33) ) { for ( i = *(_DWORD *)(v3 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( v3 != *(_DWORD *)(i + 8) ) break; v3 = i; } v3 = i; } else { for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v9 = j; v3 = v9; } } } while ( v3 != *(_DWORD *)(v16 + 4) ); v1 = v16; } sub_4AF550(*(void **)(*(_DWORD *)(v1 + 4) + 4)); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (004AFB10) -------------------------------------------------------- int __thiscall sub_4AFB10(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int v5; // ecx@3 int (__thiscall **v6)(void *, char); // [sp+14h] [bp-18h]@7 v2 = this; result = operator new(0x24u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v6 = &off_6A1FD4; _CxxThrowException(&v6, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 32) = 0; if ( result != -12 ) { v4 = a2 + 4; *(_WORD *)(result + 12) = *(_WORD *)a2; v5 = result + 16; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 24) = 0; if ( result + 16 != v4 ) { *(_DWORD *)v5 = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)v5 = *(_DWORD *)v4; *(_DWORD *)(result + 20) = *(_DWORD *)(v4 + 4); *(_DWORD *)(result + 24) = *(_DWORD *)(v4 + 8); *(_DWORD *)v4 = 0; *(_DWORD *)(v4 + 4) = 0; *(_DWORD *)(v4 + 8) = 0; } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004AFBE0) -------------------------------------------------------- void __thiscall sub_4AFBE0(int this) { int v1; // esi@1 int v2; // ST08_4@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v6 = 0; sub_4AF9D0(this); v2 = *(_DWORD *)(v1 + 4); v3 = **(_DWORD **)(v1 + 4); v6 = 1; sub_4AF910(v1, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (004AFC50) -------------------------------------------------------- signed int __thiscall sub_4AFC50(void *this) { int v1; // edi@1 signed int result; // eax@3 int v3; // eax@4 unsigned int v4; // eax@4 int v5; // esi@7 unsigned __int16 v6; // bx@7 int v7; // eax@9 int v8; // edi@13 char v9; // dl@13 int v10; // ecx@13 int v11; // eax@14 int v12; // esi@14 int v13; // eax@14 void *v14; // esi@16 int v15; // eax@24 int v16; // esi@24 int v17; // eax@24 int v18; // [sp-Ch] [bp-A8h]@20 int v19; // [sp-8h] [bp-A4h]@20 int v20; // [sp+Ch] [bp-90h]@14 char v21; // [sp+14h] [bp-88h]@14 void *v22; // [sp+18h] [bp-84h]@14 int v23; // [sp+1Ch] [bp-80h]@26 int v24; // [sp+20h] [bp-7Ch]@26 int v25; // [sp+28h] [bp-74h]@7 void *v26; // [sp+2Ch] [bp-70h]@1 int v27; // [sp+30h] [bp-6Ch]@12 void *v28; // [sp+34h] [bp-68h]@4 void *v29; // [sp+38h] [bp-64h]@4 int v30; // [sp+3Ch] [bp-60h]@4 unsigned int v31; // [sp+44h] [bp-58h]@4 int v32; // [sp+48h] [bp-54h]@4 char v33; // [sp+4Ch] [bp-50h]@1 int v34; // [sp+80h] [bp-1Ch]@5 unsigned int v35; // [sp+8Ch] [bp-10h]@1 int v36; // [sp+98h] [bp-4h]@1 int v37; // [sp+9Ch] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v26 = this; sub_626B20((int)&v33); v1 = 0; v36 = 0; if ( sub_627480(&v33, "../9Data/Shine/MobConditionServer.shn", 96, 45) ) { v28 = 0; v29 = 0; v30 = 0; LOBYTE(v36) = 1; v3 = sub_626BC0((int)&v33, 0); v32 = (unsigned __int16)sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v3); v4 = 0; v31 = 0; while ( v34 != v1 && v4 < *(_DWORD *)(v34 + 40) ) { v5 = sub_626BC0((int)&v33, v4); v6 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v5); v25 = v6; if ( v6 == -1 ) { v19 = v1; v18 = (int)"MobConditionChecker::MCC_DataRead : Invalid Monster ID"; goto LABEL_21; } if ( *(_DWORD *)(v5 + 33) != v1 || (v7 = operator new(0x10u), v7 == v1) ) { v7 = 0; } else { *(_BYTE *)(v7 + 4) = 0; *(_DWORD *)(v7 + 8) = v1; *(_DWORD *)(v7 + 12) = v1; *(_DWORD *)v7 = &off_6BE394; } v27 = v7; if ( v7 == v1 ) { v19 = v1; v18 = (int)"MobConditionChecker::MCC_DataRead : Memory Alloc Fail"; LABEL_21: sub_639100(&unk_86DDD8, v18, v19); if ( v28 != (void *)v1 ) operator delete(v28); goto LABEL_3; } v8 = *(_DWORD *)(v5 + 37); v9 = *(_BYTE *)(v5 + 32); *(_DWORD *)(v7 + 12) = *(_DWORD *)(v5 + 41); *(_BYTE *)(v7 + 4) = v9; *(_DWORD *)(v7 + 8) = v8; v10 = (int)&v28; if ( (_WORD)v32 != v6 ) { v11 = sub_4AF520((int)&v21, (int)&v32, (int)&v28); v12 = (int)v26; LOBYTE(v36) = 2; v13 = sub_4AFB10(v26, v11); sub_4AF820(v12, (int)&v20, (void *)v13, 0); LOBYTE(v36) = 1; if ( v22 ) operator delete(v22); v14 = v28; if ( v28 != v29 ) { memmove_0(v28, v29, 0); v29 = v14; } v10 = (int)&v28; } sub_4242C0(v10, (unsigned int)&v27); ++v31; v32 = v6; v4 = v31; v1 = 0; } v15 = sub_4AF520((int)&v21, (int)&v25, (int)&v28); v16 = (int)v26; LOBYTE(v36) = 3; v17 = sub_4AFB10(v26, v15); sub_4AF820(v16, (int)&v20, (void *)v17, v1); if ( v22 != (void *)v1 ) operator delete(v22); v22 = (void *)v1; v23 = v1; v24 = v1; if ( v28 != (void *)v1 ) operator delete(v28); v36 = -1; sub_626C10((int)&v33); result = 1; } else { sub_639100(&unk_86DDD8, (int)"Fail to read MobConditionServer.shn", 0); LABEL_3: v36 = -1; sub_626C10((int)&v33); result = 0; } return result; } // 6BE394: using guessed type int (__thiscall *off_6BE394)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (004AFED0) -------------------------------------------------------- int __thiscall sub_4AFED0(int this) { int v1; // esi@1 int v2; // eax@1 void *v3; // ST04_4@2 int (__thiscall **v5)(void *, char); // [sp+Ch] [bp-20h]@4 int v6; // [sp+18h] [bp-14h]@1 int v7; // [sp+1Ch] [bp-10h]@3 int v8; // [sp+28h] [bp-4h]@2 v1 = this; v6 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x24u); if ( !v2 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 32) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 33) = 1; v3 = *(void **)(*(_DWORD *)(v1 + 4) + 4); v8 = 0; sub_4AF550(v3); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 8) = 0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004AFF90) -------------------------------------------------------- void __thiscall sub_4AFF90(void **this) { if ( *this ) sub_6530A4(*this); } //----- (004AFFB0) -------------------------------------------------------- int __thiscall sub_4AFFB0(void *this) { void *v1; // esi@1 int v2; // edx@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MobDeadCount::mdc_Clear"); v2 = dword_14D16014; dword_7508B8[dword_750CB8] = (int)"MobDeadCount::mdc_Clear"; dword_750AB8[dword_750CB8++] = -1; memset(*(void **)v1, 0, 2 * v2 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobDeadCount::mdc_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16014: using guessed type int dword_14D16014; //----- (004B0020) -------------------------------------------------------- int __thiscall sub_4B0020(void *this, unsigned __int16 a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobDeadCount::mdc_Count"); dword_7508B8[dword_750CB8] = (int)"MobDeadCount::mdc_Count"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < dword_14D16014 + 1 ) ++*(_WORD *)(*(_DWORD *)v2 + 2 * a2); else sub_639100(&unk_86DDD8, (int)"MobDeadCount::mdc_Counter : Invalid MobID", a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobDeadCount::mdc_Count"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16014: using guessed type int dword_14D16014; //----- (004B00F0) -------------------------------------------------------- int __thiscall sub_4B00F0(void *this, unsigned __int16 a2) { void *v2; // esi@1 int result; // eax@2 int v4; // esi@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobDeadCount::mdc_DeadCountGet"); dword_7508B8[dword_750CB8] = (int)"MobDeadCount::mdc_DeadCountGet"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < dword_14D16014 + 1 ) { v4 = *(_WORD *)(*(_DWORD *)v2 + 2 * a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobDeadCount::mdc_DeadCountGet"); result = v4; } else { sub_639100(&unk_86DDD8, (int)"MobDeadCount::mdc_Counter : Invalid MobID", a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobDeadCount::mdc_DeadCountGet"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16014: using guessed type int dword_14D16014; //----- (004B01F0) -------------------------------------------------------- int __thiscall sub_4B01F0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = unknown_libname_130(2 * (dword_14D16014 + 1) | -((unsigned __int64)(unsigned int)(dword_14D16014 + 1) >> 31 != 0)); return sub_4AFFB0(v1); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 14D16014: using guessed type int dword_14D16014; //----- (004B0220) -------------------------------------------------------- char __thiscall sub_4B0220(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 int v9; // eax@1 char result; // al@2 __int16 v11; // ax@3 __int16 **v12; // edi@5 int v13; // eax@5 int v14; // esi@8 int v15; // esi@9 int v16; // [sp+14h] [bp-10h]@1 int v17; // [sp+20h] [bp-4h]@1 v8 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_IsDropping"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_IsDropping"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v9 = sub_54DF90(&unk_13253630, (int)&v16, 1); if ( v9 ) { v11 = (*(int (__thiscall **)(int, int, void *, int, int, int, _DWORD))(*(_DWORD *)v9 + 1348))( v9, v16, v8, a2, a3, a4, 0); if ( v11 == 769 ) { v12 = (__int16 **)(*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1804))(v8); v13 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(a2 + 8)); if ( v12 && v13 ) sub_45FF90(&unk_CF12350, **v12, *(_WORD *)(a2 + 8)); v14 = *(_DWORD *)((char *)v8 + 122); if ( v14 ) { v15 = *(_DWORD *)(v14 + 12); if ( v15 ) sub_418B00((int)byte_85A2C0, v15); } --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_IsDropping"); result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_IsDropping : Drop mark fail", v11 == 769); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_IsDropping"); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_IsDropping : itembuf full", 0); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_IsDropping"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004B03E0) -------------------------------------------------------- int __thiscall sub_4B03E0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; return result; } //----- (004B03F0) -------------------------------------------------------- int __thiscall sub_4B03F0(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // ecx@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_BYTE *)(this + 30) = *(_BYTE *)(a2 + 30); *(_BYTE *)(this + 31) = *(_BYTE *)(a2 + 31); *(_BYTE *)(this + 32) = *(_BYTE *)(a2 + 32); *(_DWORD *)(this + 33) = *(_DWORD *)(a2 + 33); memcpy((void *)(this + 37), (const void *)(a2 + 37), 0x36u); memcpy((void *)(this + 91), (const void *)(a2 + 91), 0x6Bu); v3 = this + 198; v4 = 32; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - result + v3); ++v3; --v4; } while ( v4 ); *(_WORD *)(result + 230) = *(_WORD *)(a2 + 230); *(_BYTE *)(result + 232) = *(_BYTE *)(a2 + 232); *(_BYTE *)(result + 233) = *(_BYTE *)(a2 + 233); *(_BYTE *)(result + 234) = *(_BYTE *)(a2 + 234); return result; } //----- (004B0520) -------------------------------------------------------- int __thiscall sub_4B0520(int this, __int16 a2, __int16 a3) { int v3; // esi@1 int result; // eax@1 v3 = this; **(_WORD **)(this + 168) = a2; *(_WORD *)(*(_DWORD *)(this + 168) + 3) = a3; *(_BYTE *)(*(_DWORD *)(this + 168) + 14) = 0; strncpy((char *)(*(_DWORD *)(this + 168) + 114), byte_6A492E, 0x20u); result = *(_DWORD *)(v3 + 168); *(_BYTE *)(result + 146) = 0; *(_BYTE *)(*(_DWORD *)(v3 + 168) + 148) = 0; return result; } //----- (004B0590) -------------------------------------------------------- char *__thiscall sub_4B0590(int this, __int16 a2, int a3) { int v3; // esi@1 int v4; // ST0C_4@1 v3 = this; **(_WORD **)(this + 82) = a2; *(_DWORD *)(*(_DWORD *)(this + 82) + 2) = a3; *(_DWORD *)(*(_DWORD *)(this + 82) + 6) = 0; *(_DWORD *)(*(_DWORD *)(this + 82) + 10) = 0; *(_BYTE *)(*(_DWORD *)(this + 82) + 14) = 0; v4 = *(_DWORD *)(this + 82) + 15; *(_DWORD *)(*(_DWORD *)(this + 82) + 27) = 0; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 4) = 0; *(_DWORD *)v4 = 0; strncpy((char *)v4, byte_6A492E, 0x10u); return strncpy((char *)(*(_DWORD *)(v3 + 82) + 31), byte_6A492E, 0x20u); } //----- (004B0600) -------------------------------------------------------- void *__thiscall sub_4B0600(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6BE584; return result; } // 6BE584: using guessed type int (*off_6BE584)(); //----- (004B0610) -------------------------------------------------------- void __thiscall sub_4B0610(void *this) { *(_DWORD *)this = &off_6AD5E0; } // 6AD5E0: using guessed type int (*off_6AD5E0)(); //----- (004B0620) -------------------------------------------------------- signed int __stdcall sub_4B0620(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { return 1; } //----- (004B0630) -------------------------------------------------------- signed int __stdcall sub_4B0630(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14) { return 1; } //----- (004B0640) -------------------------------------------------------- int __thiscall sub_4B0640(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; } //----- (004B0660) -------------------------------------------------------- int __thiscall sub_4B0660(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = a3; *(_DWORD *)(this + 8) = a4; return result; } //----- (004B0680) -------------------------------------------------------- int __thiscall sub_4B0680(int this, int a2) { int v2; // eax@1 int v3; // eax@1 int v4; // edi@1 int v5; // eax@2 int v6; // edx@4 signed int v7; // kr00_4@8 int v8; // eax@8 __int64 v9; // qax@8 int v10; // edi@8 int v11; // ebx@8 int v12; // eax@8 int result; // eax@8 int v14; // [sp+Ch] [bp-4h]@1 v2 = dword_14D62DDC & (dword_14D62DD8 + 1); dword_14D62DD8 = v2; v3 = *(_WORD *)&word_14D5ADD8[2 * v2]; v4 = dword_14F4AFC0; v14 = this; if ( v3 ) { v5 = v3 - 1; if ( v5 ) { if ( v5 == 1 ) { dword_14E4AEC0 = dword_14E4AEC4 & (dword_14E4AEC0 + 1); v6 = (unsigned __int16)word_14E42EC0[dword_14E4AEC0] + 96; } else { v6 = a2; } } else { dword_14E4AEC0 = dword_14E4AEC4 & (dword_14E4AEC0 + 1); v6 = (unsigned __int16)word_14E42EC0[dword_14E4AEC0] + 64; } } else { v4 = dword_14F4AFC4 & (dword_14F4AFC0 + 1); dword_14F4AFC0 = v4; v6 = (unsigned __int16)word_14F42FC0[v4]; } v7 = v6 * *(_DWORD *)(this + 8); v8 = dword_14F4AFC4 & (v4 + 1); dword_14F4AFC0 = v8; v9 = 180 * (unsigned __int16)word_14F42FC0[v8]; v10 = ((BYTE4(v9) & 0x3F) + (signed int)v9) >> 6; v11 = v7 / 128 * sub_576E10(&unk_132546E8, v10) / 1024; v12 = sub_576E40(&unk_132546E8, v10); *(_DWORD *)a2 = v11 + *(_DWORD *)v14; result = v7 / 128 * v12 / 1024; *(_DWORD *)(a2 + 4) = result + *(_DWORD *)(v14 + 4); return result; } // 14D62DD8: using guessed type int dword_14D62DD8; // 14D62DDC: using guessed type int dword_14D62DDC; // 14E42EC0: using guessed type __int16 word_14E42EC0[]; // 14E4AEC0: using guessed type int dword_14E4AEC0; // 14E4AEC4: using guessed type int dword_14E4AEC4; // 14F42FC0: using guessed type __int16 word_14F42FC0[]; // 14F4AFC0: using guessed type int dword_14F4AFC0; // 14F4AFC4: using guessed type int dword_14F4AFC4; //----- (004B0790) -------------------------------------------------------- int __thiscall sub_4B0790(int this, int a2, int a3, int a4, int a5, signed int a6) { double v6; // ST04_8@1 *(_DWORD *)this = a2; v6 = (double)a6 * 0.01745329; *(_DWORD *)(this + 4) = a3; *(_DWORD *)(this + 8) = a4; *(_DWORD *)(this + 12) = a5; *(_DWORD *)(this + 16) = (signed int)(cos(v6) * 1024.0); *(_DWORD *)(this + 20) = (signed int)(sin(v6) * 1024.0); *(_DWORD *)(this + 24) = a6; return this; } //----- (004B0800) -------------------------------------------------------- void __thiscall sub_4B0800(int this, int a2) { int v2; // edi@1 int v3; // esi@1 __int64 v4; // qax@5 signed int v5; // ebx@5 __int64 v6; // qax@5 int v7; // [sp+8h] [bp-4h]@3 v2 = 0; v3 = this; if ( a2 ) { if ( *(_DWORD *)(this + 8) > 0 ) { v2 = rand() % (2 * *(_DWORD *)(this + 8)) - *(_DWORD *)(this + 8); v7 = rand() % (2 * *(_DWORD *)(v3 + 12)) - *(_DWORD *)(v3 + 12); } else { v7 = 0; } v4 = v7 * *(_DWORD *)(v3 + 16) - v2 * *(_DWORD *)(v3 + 20); v5 = (WORD2(v4) & 0x3FF) + v4; v6 = v2 * *(_DWORD *)(v3 + 16) + v7 * *(_DWORD *)(v3 + 20); *(_DWORD *)a2 = *(_DWORD *)v3 + (((WORD2(v6) & 0x3FF) + (signed int)v6) >> 10); *(_DWORD *)(a2 + 4) = (v5 >> 10) + *(_DWORD *)(v3 + 4); } } //----- (004B0890) -------------------------------------------------------- char __thiscall sub_4B0890(int this) { int v1; // eax@1 char result; // al@1 v1 = *(_DWORD *)(this + 8140); *(_DWORD *)(this + 8156) = *(_DWORD *)(v1 + 5); *(_DWORD *)(this + 8160) = *(_DWORD *)(v1 + 9); result = *(_BYTE *)(v1 + 13); *(_BYTE *)(this + 8164) = result; return result; } //----- (004B08C0) -------------------------------------------------------- char __thiscall sub_4B08C0(int this) { int v1; // eax@1 char result; // al@1 v1 = *(_DWORD *)(this + 9918); *(_DWORD *)(this + 8156) = *(_DWORD *)(v1 + 22); *(_DWORD *)(this + 8160) = *(_DWORD *)(v1 + 26); result = *(_BYTE *)(v1 + 30); *(_BYTE *)(this + 8164) = result; return result; } //----- (004B08F0) -------------------------------------------------------- char __thiscall sub_4B08F0(int this) { int v1; // eax@1 char result; // al@1 v1 = *(_DWORD *)(this + 9766); *(_DWORD *)(this + 8156) = *(_DWORD *)(v1 + 6); *(_DWORD *)(this + 8160) = *(_DWORD *)(v1 + 10); result = *(_BYTE *)(v1 + 14); *(_BYTE *)(this + 8164) = result; return result; } //----- (004B0920) -------------------------------------------------------- int __thiscall sub_4B0920(void *this, __int16 a2, __int16 a3, int a4) { void *v4; // esi@1 int v5; // ecx@2 int result; // eax@4 v4 = this; sub_4B0520((int)((char *)this + 7972), a2, a3); if ( (unsigned __int16)a3 > (unsigned int)dword_14D16014 || (v5 = dword_14D1600C + 52 * (unsigned __int16)a3) == 0 || !*(_DWORD *)v5 ) goto LABEL_6; result = **(_WORD **)v5; if ( (_WORD)result != a3 ) { sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", (unsigned __int16)a3, result); LABEL_6: result = 0; *((_DWORD *)v4 + 2042) = 0; return result; } *((_DWORD *)v4 + 2042) = v5; return result; } // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (004B09A0) -------------------------------------------------------- int __thiscall sub_4B09A0(int this, __int16 a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 result = a4; v5 = this; if ( a4 ) { sub_4B03F0(*(_DWORD *)(this + 9918), a4); **(_WORD **)(v5 + 9918) = a2; *(_BYTE *)(*(_DWORD *)(v5 + 9918) + 194) = 4; result = *(_DWORD *)(v5 + 9918); *(_DWORD *)(result + 190) = 0; *(_BYTE *)(*(_DWORD *)(v5 + 9918) + 195) = 0; } return result; } //----- (004B0A00) -------------------------------------------------------- char *__thiscall sub_4B0A00(void *this, __int16 a2, unsigned __int16 a3, int a4) { return sub_4B0590((int)((char *)this + 9684), a2, a3); } //----- (004B0A20) -------------------------------------------------------- void *__thiscall sub_4B0A20(void *this) { void *v1; // esi@1 int v2; // esi@1 signed int v3; // edi@1 void *result; // eax@3 void *v5; // [sp+Ch] [bp-4h]@1 v1 = this; v5 = this; _eh_vector_constructor_iterator_(this, 0x10u, 50, (int)sub_4B03E0, nullsub_2); v2 = (int)((char *)v1 + 8); v3 = 50; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; *(_DWORD *)(v2 - 8) = 0; strncpy((char *)(v2 - 8), byte_6A492E, 0xCu); v2 += 16; --v3; } while ( v3 ); result = v5; *((_DWORD *)v5 + 200) = 0; return result; } //----- (004B0A90) -------------------------------------------------------- int __cdecl sub_4B0A90(int a1, int a2) { 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 *)a2 < *(_DWORD *)a1; if ( *(_DWORD *)a2 != *(_DWORD *)a1 || (v4 = *(_DWORD *)(a1 + 4), v5 = *(_DWORD *)(a2 + 4), v2 = v5 < v4, v5 != v4) ) { result = v2 ? 1 : -1; } else { v6 = *(_DWORD *)(a1 + 8); v7 = *(_DWORD *)(a2 + 8); if ( v6 <= v7 ) result = -(v6 < v7); else result = 1; } return result; } //----- (004B0AD0) -------------------------------------------------------- int __thiscall sub_4B0AD0(int this) { int result; // eax@1 result = 0; *(_WORD *)(this + 4) = 0; return result; } //----- (004B0B00) -------------------------------------------------------- char __thiscall sub_4B0B00(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x64u); result = 1; } else { result = 0; } return result; } //----- (004B0B40) -------------------------------------------------------- char __thiscall sub_4B0B40(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x64u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (004B0B90) -------------------------------------------------------- char __thiscall sub_4B0B90(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x64u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (004B0C00) -------------------------------------------------------- void *__thiscall sub_4B0C00(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6BE59C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BE59C: using guessed type int (__thiscall *off_6BE59C)(void *, char); //----- (004B0C40) -------------------------------------------------------- signed int __thiscall sub_4B0C40(void *this, int a2, int a3, int a4, int a5, int a6, __int16 a7, char a8) { void *v8; // esi@1 int v9; // eax@1 __int16 v10; // dx@1 int v11; // eax@1 int v12; // eax@1 int v13; // ecx@1 int v14; // eax@1 int v15; // eax@1 int v16; // edx@1 int v17; // eax@1 signed int v18; // edi@1 signed int result; // eax@2 v8 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v8 + 427) = a4; *(_DWORD *)((char *)v8 + 402) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * a6) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v9 = dword_14D129E8; *(_DWORD *)((char *)v8 + 435) = 50; *(_DWORD *)((char *)v8 + 431) = v9 + 50; v10 = *(_WORD *)(a4 + 4); **(_WORD **)((char *)v8 + 398) = a2; v11 = *(_DWORD *)((char *)v8 + 398); *(_DWORD *)(v11 + 2) = *(_DWORD *)a5; *(_DWORD *)(v11 + 6) = *(_DWORD *)(a5 + 4); *(_DWORD *)(v11 + 10) = *(_DWORD *)(a5 + 8); *(_DWORD *)(v11 + 14) = *(_DWORD *)(a5 + 12); *(_DWORD *)(v11 + 18) = *(_DWORD *)(a5 + 16); *(_DWORD *)(v11 + 22) = *(_DWORD *)(a5 + 20); *(_DWORD *)(v11 + 26) = *(_DWORD *)(a5 + 24); *(_DWORD *)(v11 + 30) = *(_DWORD *)(a5 + 28); *(_WORD *)(*(_DWORD *)((char *)v8 + 398) + 43) = v10; *(_WORD *)(*(_DWORD *)((char *)v8 + 398) + 45) = a7; *(_BYTE *)(*(_DWORD *)((char *)v8 + 398) + 47) ^= (a8 ^ *(_BYTE *)(*(_DWORD *)((char *)v8 + 398) + 47)) & 1; v12 = *(_DWORD *)(*(_DWORD *)((char *)v8 + 427) + 102); v13 = *(_DWORD *)((char *)v8 + 102); *(_DWORD *)v13 = *(_DWORD *)v12; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v12 + 4); **(_BYTE **)((char *)v8 + 106) = **(_BYTE **)(*(_DWORD *)((char *)v8 + 427) + 106); v14 = (*(int (**)(void))(**(_DWORD **)((char *)v8 + 427) + 1212))(); *(_DWORD *)((char *)v8 + 406) = *(_DWORD *)v14; *(_DWORD *)((char *)v8 + 410) = *(_DWORD *)(v14 + 4); *(_DWORD *)((char *)v8 + 414) = *(_DWORD *)(v14 + 8); *(_DWORD *)((char *)v8 + 418) = *(_DWORD *)(v14 + 12); *(_DWORD *)((char *)v8 + 422) = *(_DWORD *)(v14 + 16); *((_BYTE *)v8 + 426) = *(_BYTE *)(v14 + 20); v15 = *(_DWORD *)((char *)v8 + 102); *(_DWORD *)((char *)v8 + 418) = *(_DWORD *)v15; v16 = *(_DWORD *)(v15 + 4); v17 = *(_DWORD *)((char *)v8 + 106); *(_DWORD *)((char *)v8 + 422) = v16; *((_BYTE *)v8 + 426) = *(_BYTE *)v17; v18 = sub_465790(v8, 1); if ( v18 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"); result = v18; } else { (*(void (__thiscall **)(void *, int))(*(_DWORD *)v8 + 1776))(v8, a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B0E80) -------------------------------------------------------- signed int __thiscall sub_4B0E80(void *this, int a2, int a3, int a4, int a5, signed int a6, int a7, int a8, __int16 a9, char a10) { void *v10; // esi@1 int v11; // eax@1 int v12; // eax@1 int v13; // eax@1 int v14; // eax@3 int v15; // ecx@3 signed int v16; // edi@3 signed int result; // eax@4 v10 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v10 + 427) = 0; *(_DWORD *)((char *)v10 + 402) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * a8) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v11 = dword_14D129E8; *(_DWORD *)((char *)v10 + 435) = 50; *(_DWORD *)((char *)v10 + 431) = v11 + 50; **(_WORD **)((char *)v10 + 398) = a2; v12 = *(_DWORD *)((char *)v10 + 398); *(_DWORD *)(v12 + 2) = *(_DWORD *)a7; *(_DWORD *)(v12 + 6) = *(_DWORD *)(a7 + 4); *(_DWORD *)(v12 + 10) = *(_DWORD *)(a7 + 8); *(_DWORD *)(v12 + 14) = *(_DWORD *)(a7 + 12); *(_DWORD *)(v12 + 18) = *(_DWORD *)(a7 + 16); *(_DWORD *)(v12 + 22) = *(_DWORD *)(a7 + 20); *(_DWORD *)(v12 + 26) = *(_DWORD *)(a7 + 24); *(_DWORD *)(v12 + 30) = *(_DWORD *)(a7 + 28); *(_WORD *)(*(_DWORD *)((char *)v10 + 398) + 43) = -1; *(_WORD *)(*(_DWORD *)((char *)v10 + 398) + 45) = a9; *(_BYTE *)(*(_DWORD *)((char *)v10 + 398) + 47) ^= (a10 ^ *(_BYTE *)(*(_DWORD *)((char *)v10 + 398) + 47)) & 1; **(_DWORD **)((char *)v10 + 102) = a4; *(_DWORD *)(*(_DWORD *)((char *)v10 + 102) + 4) = a5; v13 = a6 / 2; if ( a6 / 2 < 0 ) LOBYTE(v13) = v13 - 76; **(_BYTE **)((char *)v10 + 106) = v13; v14 = *(_DWORD *)((char *)v10 + 102); v15 = *(_DWORD *)((char *)v10 + 106); *(_DWORD *)((char *)v10 + 418) = *(_DWORD *)v14; *(_DWORD *)((char *)v10 + 422) = *(_DWORD *)(v14 + 4); *((_BYTE *)v10 + 426) = *(_BYTE *)v15; *(_DWORD *)((char *)v10 + 406) = *(_DWORD *)a3; *(_DWORD *)((char *)v10 + 410) = *(_DWORD *)(a3 + 4); *(_DWORD *)((char *)v10 + 414) = *(_DWORD *)(a3 + 8); v16 = sub_465790(v10, 1); if ( v16 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"); result = v16; } else { (*(void (__thiscall **)(void *, int))(*(_DWORD *)v10 + 1776))(v10, a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_effect_EffectBlast"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B1080) -------------------------------------------------------- int __cdecl sub_4B1080() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_npc_FromTable"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_npc_FromTable"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_npc_FromTable"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B10C0) -------------------------------------------------------- int __thiscall sub_4B10C0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_npc_FromTable"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineNPC::so_npc_FromTable"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v1 + 9664) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_npc_FromTable"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B1120) -------------------------------------------------------- int __thiscall sub_4B1120(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 bool v6; // zf@1 int v7; // eax@9 char v9; // [sp+Ch] [bp-110h]@4 unsigned int v10; // [sp+10Ch] [bp-10h]@1 int v11; // [sp+118h] [bp-4h]@1 int v12; // [sp+11Ch] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_KilledBy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineNPC::so_KilledBy"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_BYTE *)v5 + 9664) == 0; v11 = 0; if ( v6 ) { sub_4323C0(v5, a2, a3, a4, a5); } else { if ( byte_7493ED ) { if ( byte_D9FB4B4 ) { sprintf(&v9, "%.255s", "ShineObjectClass::ShineNPC::so_KilledBy : NPC from table is killed"); sub_418E40((__time32_t)byte_D9FB230); if ( dword_D9FB330 ) fputs(&v9, dword_D9FB330); } if ( byte_7493ED && byte_D9FB4B4 && dword_D9FB330 ) { v7 = sub_418E40((__time32_t)byte_D9FB230); sub_654AB0(10, (FILE *)v7); fflush(dword_D9FB330); fclose(dword_D9FB330); dword_D9FB330 = 0; } } } --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_KilledBy"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FB4B4: using guessed type char byte_D9FB4B4; //----- (004B12A0) -------------------------------------------------------- int __thiscall sub_4B12A0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Setregentime"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_Setregentime"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 3) = a2; *((_DWORD *)v2 + 4) = a2; *((_DWORD *)v2 + 5) = a2; *((_DWORD *)v2 + 6) = a2; *((_DWORD *)v2 + 7) = a2; *((_DWORD *)v2 + 8) = a2; *((_DWORD *)v2 + 9) = a2; *((_DWORD *)v2 + 10) = a2; *((_DWORD *)v2 + 11) = a2; *((_DWORD *)v2 + 12) = a2; *((_DWORD *)v2 + 13) = a2; *((_DWORD *)v2 + 14) = a2; *((_DWORD *)v2 + 18) = *((_DWORD *)v2 + 3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Setregentime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B1330) -------------------------------------------------------- void __thiscall sub_4B1330(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6BE75C; _LN21((void *)(this + 24), 0x64u, 64, nullsub_2); *(_DWORD *)v1 = &off_6BE59C; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6BE59C: using guessed type int (__thiscall *off_6BE59C)(void *, char); // 6BE75C: using guessed type int (__thiscall *off_6BE75C)(void *, char); //----- (004B13A0) -------------------------------------------------------- int __thiscall sub_4B13A0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_SetRegenLoc"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_SetRegenLoc"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 1632) = *(_DWORD *)a2; *((_DWORD *)v2 + 1633) = *(_DWORD *)(a2 + 4); *((_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; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_SetRegenLoc"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B1450) -------------------------------------------------------- char __thiscall sub_4B1450(int this, int a2, int a3) { char v3; // al@1 v3 = *(_BYTE *)(this + 4); if ( *(_BYTE *)(a2 + 4) != v3 ) *(_BYTE *)(a2 + 4) = v3; return 1; } //----- (004B1480) -------------------------------------------------------- char __thiscall sub_4B1480(void *this, int a2, int a3) { void *v3; // esi@1 bool v4; // zf@1 int v5; // eax@2 int v6; // edx@2 int v7; // eax@3 int v8; // edi@3 __int64 v9; // qax@6 signed int v10; // ebx@6 int v11; // ecx@6 int v13; // [sp+Ch] [bp-124h]@2 int v14; // [sp+10h] [bp-120h]@2 int v15; // [sp+14h] [bp-11Ch]@2 int v16; // [sp+18h] [bp-118h]@1 int v17; // [sp+1Ch] [bp-114h]@1 char v18; // [sp+20h] [bp-110h]@3 unsigned int v19; // [sp+120h] [bp-10h]@1 int v20; // [sp+12Ch] [bp-4h]@1 int v21; // [sp+130h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v3 = this; v16 = a2; v17 = (int)"MobRegenClass::MobBreederGroup::mbg_RegenLoc"; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_RegenLoc"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_RegenLoc"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a3 = *((_DWORD *)v3 + 1643); v4 = *((_DWORD *)v3 + 1635) == 0; v20 = 0; if ( v4 ) { v5 = *((_DWORD *)v3 + 1641); v6 = *((_DWORD *)v3 + 1632); v14 = *((_DWORD *)v3 + 1633); v13 = v6; v15 = v5; sub_4B0680((int)&v13, a2); } else { v7 = sub_649DA0((int)((char *)v3 + 6424), (int)&v18); v8 = 0; if ( *((_DWORD *)v3 + 1637) > 0 ) { v8 = rand() % (2 * *((_DWORD *)v3 + 1637)) - *((_DWORD *)v3 + 1637); v17 = rand() % (2 * *((_DWORD *)v3 + 1638)) - *((_DWORD *)v3 + 1638); } else { sub_6390B0(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::mbg_RegenLoc : Width Zero", v7); v17 = 0; } v9 = v17 * *((_DWORD *)v3 + 1640) + v8 * *((_DWORD *)v3 + 1639); v10 = (WORD2(v9) & 0x3FF) + v9; LODWORD(v9) = v17 * *((_DWORD *)v3 + 1639) - v8 * *((_DWORD *)v3 + 1640); v11 = v16; *(_DWORD *)v16 = (v10 >> 10) + *((_DWORD *)v3 + 1632); *(_DWORD *)(v11 + 4) = (signed int)v9 / 1024 + *((_DWORD *)v3 + 1633); } --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_RegenLoc"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004B1650) -------------------------------------------------------- int __thiscall sub_4B1650(void *this, int a2, int a3, char a4, int a5) { void *v5; // esi@1 int v6; // ecx@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_Set"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_Set"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v5 + 1606) = *(_DWORD *)a2; *((_DWORD *)v5 + 1607) = *(_DWORD *)(a2 + 4); *((_DWORD *)v5 + 1608) = *(_DWORD *)(a2 + 8); *((_DWORD *)v5 + 1609) = *(_DWORD *)(a2 + 12); *((_DWORD *)v5 + 1610) = *(_DWORD *)(a2 + 16); *((_BYTE *)v5 + 6444) = a4; *(_DWORD *)((char *)v5 + 6493) = *(_DWORD *)a3; *(_DWORD *)((char *)v5 + 6497) = *(_DWORD *)(a3 + 4); *(_DWORD *)((char *)v5 + 6501) = *(_DWORD *)(a3 + 8); *((_DWORD *)v5 + 1632) = *(_DWORD *)a5; *((_DWORD *)v5 + 1633) = *(_DWORD *)(a5 + 4); *((_DWORD *)v5 + 1634) = *(_DWORD *)(a5 + 8); *((_DWORD *)v5 + 1635) = *(_DWORD *)(a5 + 12); *((_DWORD *)v5 + 1636) = *(_DWORD *)(a5 + 16); *((_DWORD *)v5 + 1644) = 0; v6 = *(_DWORD *)(a5 + 12); if ( v6 ) { *((_DWORD *)v5 + 1638) = v6; *((_DWORD *)v5 + 1637) = *(_DWORD *)(a5 + 8); *((_DWORD *)v5 + 1639) = (signed int)(cos((double)*(unsigned int *)(a5 + 16) * 0.01745329) * 1024.0); *((_DWORD *)v5 + 1640) = (signed int)(sin((double)*(unsigned int *)(a5 + 16) * 0.01745329) * 1024.0); } else { *((_DWORD *)v5 + 1641) = *(_DWORD *)(a5 + 16); *((_DWORD *)v5 + 1642) = *(_DWORD *)(a5 + 16) * *(_DWORD *)(a5 + 16); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_Set"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B17C0) -------------------------------------------------------- int __thiscall sub_4B17C0(void *this, unsigned __int16 a2) { int v2; // esi@1 int v3; // esi@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::l_AllocA(ListHandle hnd)"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::l_AllocA(ListHandle hnd)"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_473B70(v2, a2); if ( v3 != 0 ) { *(_DWORD *)(v3 + 92) = 0; *(_DWORD *)(v3 + 88) = 0; } else { sub_639100(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::l_AllocA", 0); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::l_AllocA(ListHandle hnd)"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B18A0) -------------------------------------------------------- int __thiscall sub_4B18A0(void *this, unsigned __int16 a2) { int v2; // esi@1 int v3; // esi@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::l_AllocZ(ListHandle hnd)"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::l_AllocZ(ListHandle hnd)"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_486E40(v2, a2); if ( v3 != 0 ) { *(_DWORD *)(v3 + 92) = 0; *(_DWORD *)(v3 + 88) = 0; } else { sub_639100(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::l_AllocZ", 0); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::l_AllocZ(ListHandle hnd)"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B1980) -------------------------------------------------------- int __thiscall sub_4B1980(int this, unsigned __int16 a2) { int v2; // eax@1 int v3; // esi@1 v2 = sub_473B70(this, a2); v3 = v2; *(_DWORD *)(v2 + 6524) = 0; *(_DWORD *)(v2 + 6520) = 0; *(_DWORD *)(v2 + 6516) = 0; *(_DWORD *)(v2 + 6512) = 0; *(_DWORD *)(v2 + 6508) = 0; strncpy((char *)(v2 + 6508), "Def", 0x14u); return v3; } //----- (004B19C0) -------------------------------------------------------- int __thiscall sub_4B19C0(int this, unsigned __int16 a2) { int v2; // eax@1 int v3; // esi@1 v2 = sub_486E40(this, a2); v3 = v2; *(_DWORD *)(v2 + 6524) = 0; *(_DWORD *)(v2 + 6520) = 0; *(_DWORD *)(v2 + 6516) = 0; *(_DWORD *)(v2 + 6512) = 0; *(_DWORD *)(v2 + 6508) = 0; strncpy((char *)(v2 + 6508), "Def", 0x14u); return v3; } //----- (004B1A40) -------------------------------------------------------- int __thiscall sub_4B1A40(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { int result; // eax@1 int v8; // esi@2 unsigned __int16 v9; // ax@2 unsigned __int16 v10; // di@2 int i; // edx@2 unsigned __int16 v12; // dx@3 int v13; // eax@4 bool v14; // zf@4 int v15; // eax@4 result = a2; if ( a2 ) { v8 = *(_DWORD *)((char *)this + (_DWORD)&dword_19B8008); v9 = *(_WORD *)(v8 + 12 * *(_WORD *)((char *)this + (_DWORD)&word_19B800E) + 4); v10 = *(_WORD *)((char *)this + (_DWORD)&word_19B8004); for ( i = 3 * v9; ; i = 3 * v12 ) { v12 = *(_WORD *)(v8 + 4 * i + 4); if ( v9 >= v10 ) break; v13 = 3 * v9; v14 = *(_BYTE *)(v8 + 4 * v13 + 8) == 0; v15 = v8 + 4 * v13; if ( v14 ) break; result = *(_DWORD *)v15; if ( !result ) break; if ( *(_DWORD *)a2 == *(_DWORD *)(result + 6493) && *(_DWORD *)(a2 + 4) == *(_DWORD *)(result + 6497) && *(_DWORD *)(a2 + 8) == *(_DWORD *)(result + 6501) && a3 == *(_DWORD *)(result + 6424) && a4 == *(_DWORD *)(result + 6428) && a5 == *(_DWORD *)(result + 6432) && a6 == *(_DWORD *)(result + 6436) && a7 == *(_DWORD *)(result + 6440) ) return result; if ( v12 >= v10 ) break; v9 = v12; } result = 0; } return result; } // 19B8004: using guessed type __int16 word_19B8004; // 19B8008: using guessed type int dword_19B8008; // 19B800E: using guessed type __int16 word_19B800E; //----- (004B1B20) -------------------------------------------------------- int __thiscall sub_4B1B20(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int i; // ecx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetLeader"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_SetLeader"; v3 = a2; dword_750AB8[dword_750CB8++] = -1; for ( i = *(_DWORD *)(a2 + 92); i; i = *(_DWORD *)(i + 92) ) v3 = i; *(_DWORD *)(v3 + 92) = v2; *((_DWORD *)v2 + 22) = v3; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetLeader"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B1BA0) -------------------------------------------------------- int __thiscall sub_4B1BA0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SetBrain"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_SetBrain"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 2407); if ( v2 == 6 ) v2 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 2042) + 4) + 45); switch ( v2 ) { case 0: v3 = (int)((char *)v1 + 8572); goto LABEL_5; case 1: *((_DWORD *)v1 + 2211) = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 2149) + 16))( (char *)v1 + 8596, v1, (char *)v1 + 8228); break; case 2: v3 = (int)((char *)v1 + 8652); goto LABEL_5; case 3: *((_DWORD *)v1 + 2211) = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 2169) + 16))( (char *)v1 + 8676, v1, (char *)v1 + 8228); break; case 4: v3 = (int)((char *)v1 + 8732); LABEL_5: *((_DWORD *)v1 + 2211) = (*(int (__stdcall **)(void *, char *))(*(_DWORD *)v3 + 16))(v1, (char *)v1 + 8228); break; case 5: *((_DWORD *)v1 + 2211) = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 2197) + 16))( (char *)v1 + 8788, v1, (char *)v1 + 8228); break; default: *((_DWORD *)v1 + 2211) = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 2143) + 16))( (char *)v1 + 8572, v1, (char *)v1 + 8228); sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_SetBrain Not Case EnemyDetectType", *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 2042) + 4) + 45)); break; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SetBrain"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B1D50) -------------------------------------------------------- int __thiscall sub_4B1D50(void *this) { void **v1; // esi@1 signed int v2; // ebx@1 void *v3; // edi@2 void *v5; // [sp+10h] [bp-10h]@1 v5 = this; v1 = (void **)((char *)this + 12); v2 = 50; do { v3 = *v1; if ( *v1 ) { sub_643080(*v1); operator delete(v3); } v1 += 4; --v2; } while ( v2 ); return _LN21(v5, 0x10u, 50, nullsub_2); } //----- (004B1DD0) -------------------------------------------------------- void __thiscall sub_4B1DD0(void *this, char *a2) { char *v2; // eax@1 void *v3; // esi@1 char v4; // cl@2 signed int v5; // eax@3 char v6; // cl@4 int v7; // eax@11 int v8; // eax@12 int v9; // ST10_4@17 char v10[256]; // [sp+Ch] [bp-190h]@2 char v11; // [sp+10Ch] [bp-90h]@14 unsigned int v12; // [sp+18Ch] [bp-10h]@1 int v13; // [sp+198h] [bp-4h]@11 int v14; // [sp+19Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v2 = a2; v3 = this; do { v4 = *v2; v2[v10 - a2] = *v2; ++v2; } while ( v4 ); v5 = 0; do { v6 = v10[v5]; if ( !v6 ) break; if ( v6 == 46 ) { v10[v5] = 0; break; } ++v5; } while ( v5 < 256 ); if ( *((_DWORD *)v3 + 200) >= 0x32u ) { sub_639100(&unk_86DDD8, (int)"KQRegenTable::kqrt_Load : Too many kq regen table", *((_DWORD *)v3 + 200)); loc_6391B0("KQRegenTable::kqrt_Load"); } v7 = operator new(0x10854u); v13 = 0; if ( v7 ) v8 = sub_6432E0(v7); else v8 = 0; *((_DWORD *)v3 + 4 * *((_DWORD *)v3 + 200) + 3) = v8; v13 = -1; sprintf(&v11, "../9Data/Shine/MobRegen/KingdomQuest/%s.txt", v10); if ( !sub_6434A0(*((void **)v3 + 4 * *((_DWORD *)v3 + 200) + 3), &v11) ) { sprintf(&v11, "../9Data/Shine/MobRegen/Instant/%s.txt", v10); if ( !sub_6434A0(*((void **)v3 + 4 * *((_DWORD *)v3 + 200) + 3), &v11) ) { sub_6390B0(&unk_86DDD8, (int)"KQRegenTable::kqrt_Load : Error found", (int)&v11); loc_6391B0("KQRegenTable::kqrt_Load"); } } v9 = (int)((char *)v3 + 16 * *((_DWORD *)v3 + 200)); *(_DWORD *)(v9 + 8) = 0; *(_DWORD *)(v9 + 4) = 0; *(_DWORD *)v9 = 0; strncpy((char *)v9, v10, 0xCu); ++*((_DWORD *)v3 + 200); qsort(v3, *((_DWORD *)v3 + 200), 0x10u, (int (__cdecl *)(const void *, const void *))sub_4B0A90); } // 86FEB8: using guessed type int __security_cookie; // 4B1DD0: using guessed type char var_190[256]; //----- (004B1FA0) -------------------------------------------------------- char __thiscall sub_4B1FA0(void *this, int a2, int a3) { void *v3; // esi@1 __int16 v4; // ST20_2@1 bool v5; // zf@1 void **v6; // eax@1 int v7; // eax@10 unsigned int v9; // [sp-4h] [bp-31Ch]@1 char v10; // [sp+8h] [bp-310h]@3 char v11; // [sp+208h] [bp-110h]@5 unsigned int v12; // [sp+308h] [bp-10h]@1 int v13; // [sp+314h] [bp-4h]@1 int v14; // [sp+318h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v9 = (unsigned int)&v14 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_View"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_View"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_WORD *)v3 + 30); v13 = 0; v5 = sub_54DE90(&unk_13253630, v4) == 0; v6 = &off_6BEAD0; if ( v5 ) v6 = (void **)"No"; sprintf( &v10, " Mob[%d] RgNum[%d] Hnd[%d[%s]] NxtRg[%d/%d[%d]]", *((_WORD *)v3 + 3), *((_DWORD *)v3 + 21), *((_WORD *)v3 + 30), v6, *((_BYTE *)v3 + 68), *((_DWORD *)v3 + 16), dword_14D129E8); (*(void (__stdcall **)(char *, unsigned int))(*(_DWORD *)dword_D9FAF9C + 1924))(&v10, v9); if ( byte_7493ED ) { if ( byte_D9FB22C ) { sprintf(&v11, "%.255s", &v10); sub_418E40((__time32_t)byte_D9FAFA8); if ( dword_D9FB0A8 ) fputs(&v11, dword_D9FB0A8); } if ( byte_7493ED && byte_D9FB22C && dword_D9FB0A8 ) { v7 = sub_418E40((__time32_t)byte_D9FAFA8); sub_654AB0(10, (FILE *)v7); fflush(dword_D9FB0A8); fclose(dword_D9FB0A8); dword_D9FB0A8 = 0; } } --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_View"); return 1; } // 6BEAD0: using guessed type void *off_6BEAD0; // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF9C: using guessed type int dword_D9FAF9C; // D9FB22C: using guessed type char byte_D9FB22C; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B2170) -------------------------------------------------------- int __stdcall sub_4B2170(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x2AAAAAAA || (result = operator new(6 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004B21D0) -------------------------------------------------------- char __thiscall sub_4B21D0(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x64u); result = 1; } else { result = 0; } return result; } //----- (004B2210) -------------------------------------------------------- int __thiscall sub_4B2210(int this, int a2) { int v2; // edx@1 int result; // eax@1 int v4; // ecx@1 int v5; // ebx@1 const void *v6; // esi@3 void *v7; // edi@3 bool v8; // zf@3 int v9; // [sp+Ch] [bp-4h]@1 signed int v10; // [sp+18h] [bp+8h]@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 = a2 - this; v5 = result + 24; v9 = v4; v10 = 64; while ( 1 ) { v6 = (const void *)(v4 + v5); v7 = (void *)v5; v5 += 100; v8 = v10-- == 1; memcpy(v7, v6, 0x64u); if ( v8 ) break; v4 = v9; } *(_DWORD *)(result + 6424) = *(_DWORD *)(v2 + 6424); *(_DWORD *)(result + 6428) = *(_DWORD *)(v2 + 6428); *(_DWORD *)(result + 6432) = *(_DWORD *)(v2 + 6432); *(_DWORD *)(result + 6436) = *(_DWORD *)(v2 + 6436); *(_DWORD *)(result + 6440) = *(_DWORD *)(v2 + 6440); *(_BYTE *)(result + 6444) = *(_BYTE *)(v2 + 6444); memcpy((void *)(result + 6445), (const void *)(v2 + 6445), 0x3Cu); *(_DWORD *)(result + 6508) = *(_DWORD *)(v2 + 6508); *(_DWORD *)(result + 6512) = *(_DWORD *)(v2 + 6512); *(_DWORD *)(result + 6516) = *(_DWORD *)(v2 + 6516); *(_DWORD *)(result + 6520) = *(_DWORD *)(v2 + 6520); *(_DWORD *)(result + 6524) = *(_DWORD *)(v2 + 6524); memcpy((void *)(result + 6528), (const void *)(v2 + 6528), 0x38u); return result; } //----- (004B2370) -------------------------------------------------------- char __thiscall sub_4B2370(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x2AAAAAAA ) sub_65178B((int)"vector too long"); v4 = sub_4B2170(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 6 * a2; result = 1; } else { result = 0; } return result; } //----- (004B23D0) -------------------------------------------------------- int __cdecl sub_4B23D0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 6 ) { *(_DWORD *)result = *(_DWORD *)v3; *(_WORD *)(result + 4) = *(_WORD *)(v3 + 4); v3 += 6; } return result; } //----- (004B2410) -------------------------------------------------------- signed __int16 __thiscall sub_4B2410(void *this, int a2) { void *v2; // esi@1 int v3; // ST34_4@1 int v4; // edi@1 int v6; // eax@5 int v7; // eax@6 int v8; // edx@6 void *v9; // ecx@11 void *v10; // esi@15 int v11; // eax@15 _BYTE *v12; // eax@15 int v13; // edx@15 int v14; // eax@18 __int16 v15; // si@20 int v16; // [sp-8h] [bp-7Ch]@8 int v17; // [sp+10h] [bp-64h]@5 int v18; // [sp+14h] [bp-60h]@7 int v19; // [sp+18h] [bp-5Ch]@6 int v20; // [sp+1Ch] [bp-58h]@6 int v21; // [sp+20h] [bp-54h]@1 char v22; // [sp+24h] [bp-50h]@15 char v23; // [sp+25h] [bp-4Fh]@15 unsigned int v24; // [sp+64h] [bp-10h]@1 int v25; // [sp+70h] [bp-4h]@1 int v26; // [sp+74h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_regen"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_regen"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 24) != 0 ? 8 : 5; v25 = 0; v4 = sub_54DF90(&unk_13253630, (int)&v21, v3); if ( v4 == 0 ) { sub_639100(&unk_86DDD8, (int)"MobBreeder::mb_regen : Too many mob", 0); LABEL_3: --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_regen"); return -1; } if ( (void *)a2 == v2 ) { v17 = 0; if ( !sub_4B1480(*(void **)v2, (int)&v19, (int)&v18) ) { v16 = 35; LABEL_9: sub_555DF0(&unk_13253630, v21, 0, v16); goto LABEL_3; } v8 = v20; } else { v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 60)); v17 = v6; if ( !v6 ) goto LABEL_3; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1556))(v6); v19 = *(_DWORD *)v7; v8 = *(_DWORD *)(v7 + 4); v20 = *(_DWORD *)(v7 + 4); } dword_14F8B000 = dword_14F8B004 & (dword_14F8B000 + 1); v9 = *(void **)(*(_DWORD *)v2 + 6580); v18 = 5 * (unsigned __int16)word_14F83000[dword_14F8B000]; if ( v9 ) { sub_4B6DB0(v9, (int)&v19); v8 = v20; } if ( v19 >= (unsigned int)&unk_FFFFFF || v8 >= (unsigned int)&unk_FFFFFF ) { sub_639150(&unk_86DDD8, (int)"MobRegenClass::MobBreeder::mb_regen : Invalid locate", v19, v8); v22 = 0; memset(&v23, 0, 0x3Fu); sub_649DA0(*(_DWORD *)v2 + 6424, (int)&v22); sub_6390B0(&unk_86DDD8, (int)"MobRegenClass::MobBreeder::mb_regen : GroupName", (int)&v22); v10 = *(void **)v2; v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)((char *)v10 + 6493); *((_DWORD *)v12 + 1) = *(_DWORD *)((char *)v10 + 6497); v13 = v21; *((_DWORD *)v12 + 2) = *(_DWORD *)((char *)v10 + 6501); v12[12] = 0; sub_555DF0(&unk_13253630, v13, 0, 36); goto LABEL_3; } if ( (*(int (__thiscall **)(int, int, int, int, int, int, _DWORD, _DWORD, int, int, void *, _DWORD, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1760))( v4, *(_DWORD *)v2 + 6493, v19, v8, v18, v21, *((_WORD *)v2 + 3), *((_DWORD *)v2 + 24), dword_D9FB7F4, v17, v2, *((_DWORD *)v2 + 2), 1, 0, 0) ) { v16 = 37; goto LABEL_9; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2580))(v4, *(_DWORD *)(*(_DWORD *)v2 + 6580)); v14 = sub_418D40((int)&unk_14D159B0, *((_WORD *)v2 + 3)); if ( v14 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2748))(v4, *(_DWORD *)(v14 + 36)); v15 = v21; --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_regen"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // D9FB7F4: using guessed type int dword_D9FB7F4; // 14F83000: using guessed type __int16 word_14F83000[]; // 14F8B000: using guessed type int dword_14F8B000; // 14F8B004: using guessed type int dword_14F8B004; //----- (004B26F0) -------------------------------------------------------- void *__thiscall sub_4B26F0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6BE75C; _LN21((char *)this + 24, 0x64u, 64, nullsub_2); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6BE59C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BE59C: using guessed type int (__thiscall *off_6BE59C)(void *, char); // 6BE75C: using guessed type int (__thiscall *off_6BE75C)(void *, char); //----- (004B2780) -------------------------------------------------------- char __thiscall sub_4B2780(int this, char a2) { int (__stdcall **v3)(int, int); // [sp+4h] [bp-14h]@1 char v4; // [sp+8h] [bp-10h]@1 int v5; // [sp+14h] [bp-4h]@1 v3 = &off_6BE7B0; v4 = a2; v5 = 0; sub_43C470(this, (int)&v3); return 1; } // 6BE7B0: using guessed type int (__stdcall *off_6BE7B0)(int, int); //----- (004B27E0) -------------------------------------------------------- __int16 __thiscall sub_4B27E0(int this) { int v1; // ebx@1 int v2; // eax@1 unsigned __int16 v3; // si@1 int v4; // ecx@3 int v5; // eax@3 bool v6; // zf@3 v1 = this; LOWORD(v2) = 3 * *(_WORD *)(this + 14); v3 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4); while ( v3 < *(_WORD *)(v1 + 4) ) { v4 = *(_DWORD *)(v1 + 8); v5 = v3; v3 = *(_WORD *)(v4 + 12 * v3 + 4); v6 = *(_BYTE *)(v4 + 12 * v5 + 8) == 0; v2 = v4 + 12 * v5; if ( !v6 ) { v2 = *(_DWORD *)v2; if ( v2 ) LOWORD(v2) = sub_4B2410((void *)v2, v2); } } return v2; } //----- (004B2830) -------------------------------------------------------- char __thiscall sub_4B2830(void *this, int a2, __int16 a3, int a4, int a5) { void *v5; // ebx@1 int v6; // edx@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Set"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_Set"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v5 = a2; *((_WORD *)v5 + 3) = a3; *((_DWORD *)v5 + 2) = -1; memcpy((char *)v5 + 12, (const void *)a4, 0x30u); *((_BYTE *)v5 + 68) = 1; *((_DWORD *)v5 + 16) = 10 * *(_DWORD *)(a4 + 28); v6 = *((_DWORD *)v5 + 3); *((_DWORD *)v5 + 21) = a5; *((_DWORD *)v5 + 18) = v6; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetBrain"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_SetBrain"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetBrain"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Set"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B2940) -------------------------------------------------------- int __thiscall sub_4B2940(void *this) { void *v1; // edi@1 __int32 v2; // esi@1 __int32 v3; // esi@5 int v5; // [sp+8h] [bp-11Ch]@1 int v6; // [sp+1Ch] [bp-108h]@3 unsigned int v7; // [sp+120h] [bp-4h]@1 int v8; // [sp+124h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v1 = this; v2 = _findfirst32("../9Data/Shine/MobRegen/KingdomQuest/*.txt", (int)&v5); if ( v2 == -1 ) { sub_639100(&unk_86DDD8, (int)"KQRegenTable::kqrt_Load : Path Invalid", 0); loc_6391B0("KQRegenTable::kqrt_Load"); } sub_4B1DD0(v1, (char *)&v6); while ( !_findnext32((HANDLE)v2, (int)&v5) ) sub_4B1DD0(v1, (char *)&v6); _findclose(v2); v3 = _findfirst32("../9Data/Shine/MobRegen/Instant/*.txt", (int)&v5); if ( v3 == -1 ) { sub_639100(&unk_86DDD8, (int)"KQRegenTable::kqrt_Load : Path Invalid", 1); loc_6391B0("KQRegenTable::kqrt_Load"); } sub_4B1DD0(v1, (char *)&v6); while ( !_findnext32((HANDLE)v3, (int)&v5) ) sub_4B1DD0(v1, (char *)&v6); return _findclose(v3); } // 86FEB8: using guessed type int __security_cookie; //----- (004B2A90) -------------------------------------------------------- char __thiscall sub_4B2A90(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v5; // eax@3 int v6; // eax@6 _BYTE *v7; // eax@6 _BYTE *v8; // ST3C_4@6 int v9; // edx@6 int v10; // ST38_4@6 int v11; // ST34_4@6 int v12; // ST30_4@6 int v13; // ST2C_4@6 int v14; // ST28_4@6 int v15; // ST24_4@6 int v16; // ST20_4@6 int v17; // ST1C_4@6 int v18; // ST18_4@6 int v19; // ST14_4@6 int v20; // ST10_4@6 int v21; // ST0C_4@6 int v22; // eax@6 __time32_t v23; // eax@6 char result; // al@7 char v25; // [sp+Ch] [bp-250h]@6 char v26; // [sp+20Ch] [bp-50h]@6 unsigned int v27; // [sp+24Ch] [bp-10h]@1 int v28; // [sp+258h] [bp-4h]@1 int v29; // [sp+25Ch] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mh_View"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mh_View"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(dword_D9FAF9C + 122); v28 = 0; if ( v4 && *(_DWORD *)(v4 + 12) ) { v5 = *(_DWORD *)(v4 + 12); if ( *(_DWORD *)v5 == *(_DWORD *)(v3 + 6493) && *(_DWORD *)(v5 + 4) == *(_DWORD *)(v3 + 6497) ) { if ( *(_DWORD *)(v5 + 8) == *(_DWORD *)(v3 + 6501) ) { v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)(v3 + 6493); v8 = v7; *((_DWORD *)v7 + 1) = *(_DWORD *)(v3 + 6497); v9 = *(_DWORD *)(v3 + 6501); v7[12] = 0; *((_DWORD *)v7 + 2) = v9; v10 = *(_DWORD *)(v3 + 6489); v11 = *(_DWORD *)(v3 + 6485); v12 = *(_DWORD *)(v3 + 6481); v13 = *(_DWORD *)(v3 + 6477); v14 = *(_DWORD *)(v3 + 6473); v15 = *(_DWORD *)(v3 + 6469); v16 = *(_DWORD *)(v3 + 6465); v17 = *(_DWORD *)(v3 + 6461); v18 = *(_DWORD *)(v3 + 6457); v19 = *(_DWORD *)(v3 + 6453); v20 = *(_DWORD *)(v3 + 6449); v21 = *(_DWORD *)(v3 + 6445); v22 = sub_649DA0(v3 + 6424, (int)&v26); sprintf( &v25, "%s [%d/%d/%d]%d/%d/%d/%d/%d/%d/%d/%d/%d %s", v22, v21, v20, v19, v18, v17, v16, v15, v14, v13, v12, v11, v10, v8); (*(void (__stdcall **)(char *))(*(_DWORD *)dword_D9FAF9C + 1924))(&v25); v23 = sub_418EA0((__time32_t)byte_D9FAFA8, (int)&v25); sub_418F20(v23, (int)&unk_13359E04); sub_5A7F60(v3, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4B1FA0); } } --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mh_View"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mh_View"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // D9FAF9C: using guessed type int dword_D9FAF9C; //----- (004B2CA0) -------------------------------------------------------- char __thiscall sub_4B2CA0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_4B2210(v2, a2); result = 1; } else { result = 0; } return result; } //----- (004B2CE0) -------------------------------------------------------- char __thiscall sub_4B2CE0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_4B2210(v2, a2); result = 1; } else { result = 0; } return result; } //----- (004B2D20) -------------------------------------------------------- char __thiscall sub_4B2D20(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4B2210(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (004B2D70) -------------------------------------------------------- char __thiscall sub_4B2D70(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_4B2210(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (004B2DC0) -------------------------------------------------------- char __thiscall sub_4B2DC0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6BE5EC; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BE5EC: using guessed type int (__stdcall *off_6BE5EC)(int, int); //----- (004B2F40) -------------------------------------------------------- int __thiscall sub_4B2F40(void *this, int a2, int a3) { int v3; // ebx@1 signed int v4; // eax@1 signed __int16 v5; // di@1 int v6; // eax@4 int *v7; // eax@5 int v8; // ecx@6 int v9; // eax@10 void *v10; // esi@11 int v12; // [sp+14h] [bp-14h]@0 unsigned int v13; // [sp+34h] [bp+Ch]@9 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_ScriptDataStore"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_ScriptDataStore"; dword_750AB8[dword_750CB8++] = -1; memcpy((void *)(v3 + 6445), (const void *)(a2 + 55), 0x30u); *(_DWORD *)(v3 + 6508) = *(_DWORD *)a3; *(_DWORD *)(v3 + 6512) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v3 + 6516) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v3 + 6520) = *(_DWORD *)(a3 + 12); *(_DWORD *)(v3 + 6524) = *(_DWORD *)(a3 + 16); v4 = sub_639620(&unk_14D16018, (unsigned __int8 *)(a2 + 20)); v5 = -1; if ( v4 != -1 ) v5 = v4; if ( (unsigned __int16)v5 > (unsigned int)dword_14D16014 || (v6 = dword_14D1600C + 52 * (unsigned __int16)v5) == 0 || (v7 = *(int **)v6) == 0 ) goto LABEL_8; v8 = *(_WORD *)v7; if ( (_WORD)v8 != v5 ) { sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", (unsigned __int16)v5, v8); LABEL_8: sub_6390B0(&unk_86DDD8, (int)"MobBreeder::mbg_ScriptDataStore : Invalid mob name", a2 + 20); goto LABEL_25; } v13 = 0; if ( *(_BYTE *)(a2 + 53) ) { while ( 1 ) { v9 = *(_WORD *)(v3 + 12); if ( (_WORD)v9 == -1 ) { v10 = 0; } else { v12 = *(_WORD *)(v3 + 12); v10 = (void *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 8))(v3, v9); } if ( !v10 ) break; if ( v5 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::mbg_ScriptDataStore : Wrong mob name", a2 + 20); v5 = 1; } if ( !sub_4B2830(v10, v3, v5, a2 + 55, 1) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 12))(v3, v12); if ( *(_BYTE *)(v3 + 6444) == 89 ) { if ( *(_DWORD *)(v3 + 6576) ) sub_4B1B20(v10, *(_DWORD *)(v3 + 6576)); else *(_DWORD *)(v3 + 6576) = v10; } ++v13; if ( v13 >= *(_BYTE *)(a2 + 53) ) goto LABEL_25; } sub_639100(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::mbg_ScriptDataStore : Too many mob in regengroup", 0); } LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_ScriptDataStore"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (004B3180) -------------------------------------------------------- int __thiscall sub_4B3180(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobHatchery::mh_View"); dword_7508B8[dword_750CB8] = (int)"MobHatchery::mh_View"; dword_750AB8[dword_750CB8++] = -1; dword_D9FAF9C = a2; sub_5A7F60((int)((char *)v2 + (_DWORD)&dword_19B8000), (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4B2A90); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobHatchery::mh_View"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 19B8000: using guessed type int dword_19B8000; // D9FAF9C: using guessed type int dword_D9FAF9C; //----- (004B3240) -------------------------------------------------------- char __thiscall sub_4B3240(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6BEAFC; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BEAFC: using guessed type int (__stdcall *off_6BEAFC)(int, int); //----- (004B33C0) -------------------------------------------------------- int __cdecl sub_4B33C0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 6 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_WORD *)(result + 4) = *(_WORD *)(v3 + 4); } v3 += 6; } return result; } //----- (004B3400) -------------------------------------------------------- int __cdecl sub_4B3400(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 6 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_WORD *)(result + 4) = *(_WORD *)(v3 + 4); } v3 += 6; } return result; } //----- (004B3430) -------------------------------------------------------- int __thiscall sub_4B3430(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // eax@3 unsigned int v5; // [sp+14h] [bp-14h]@1 signed int v6; // [sp+18h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6BE59C; *(_DWORD *)(this + 16) = 0; sub_4B2DC0(this, 0x40u); v2 = v1 + 24; *(_DWORD *)v1 = &off_6BE75C; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x64u, 64, (int)sub_4B0640, nullsub_2); *(_DWORD *)(v1 + 6440) = 0; *(_DWORD *)(v1 + 6436) = 0; *(_DWORD *)(v1 + 6432) = 0; *(_DWORD *)(v1 + 6428) = 0; *(_DWORD *)(v1 + 6424) = 0; *(_DWORD *)(v1 + 6501) = 0; *(_DWORD *)(v1 + 6497) = 0; *(_DWORD *)(v1 + 6493) = 0; *(_DWORD *)(v1 + 6524) = 0; *(_DWORD *)(v1 + 6520) = 0; *(_DWORD *)(v1 + 6516) = 0; *(_DWORD *)(v1 + 6512) = 0; *(_DWORD *)(v1 + 6508) = 0; v6 = 0; v5 = 0; do { if ( v6 < *(_WORD *)(v1 + 4) ) { v3 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v3 + v5) ) *(_DWORD *)(v3 + v5) = v2; } sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetGroup"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_SetGroup"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v2 = v1; *(_BYTE *)(v2 + 68) = 1; *(_DWORD *)(v2 + 64) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetGroup"); ++v6; v2 += 100; v5 += 12; } while ( v5 < 0x300 ); *(_DWORD *)(v1 + 6580) = 0; return v1; } // 6BE59C: using guessed type int (__thiscall *off_6BE59C)(void *, char); // 6BE75C: using guessed type int (__thiscall *off_6BE75C)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B3590) -------------------------------------------------------- int __thiscall sub_4B3590(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // esi@2 int v9; // [sp-4h] [bp-20h]@5 v5 = this; sub_4675D0((int)&unk_D020420, (int)"MobHatchery::mh_ScriptBreed"); dword_7508B8[dword_750CB8] = (int)"MobHatchery::mh_ScriptBreed"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_WORD *)((char *)v5 + (_DWORD)&word_19B800C); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*(_DWORD *)((char *)v5 + (_DWORD)&dword_19B8000) + 8))(v6); if ( v7 ) { sub_4B1650((void *)v7, a3, a2, *(_BYTE *)(a4 + 20), a4 + 21); *(_DWORD *)(v7 + 6580) = sub_4B6FF0(&unk_D9FB7F8, a3); sub_4B2F40((void *)v7, a3, a5); v9 = (int)"MobHatchery::mh_ScriptBreed"; } else { sub_639100(&unk_86DDD8, (int)"MobHatchery::mh_ScriptBreed : Too many MobRegenGroup", 0); v9 = (int)"MobHatchery::mh_ScriptBreed"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 19B8000: using guessed type int dword_19B8000; // 19B800C: using guessed type __int16 word_19B800C; //----- (004B36A0) -------------------------------------------------------- void *__thiscall sub_4B36A0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6BE5C0; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BE5C0: using guessed type int (__thiscall *off_6BE5C0)(void *, char); //----- (004B36E0) -------------------------------------------------------- void *__thiscall sub_4B36E0(void *this) { void *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; // ecx@6 bool v8; // zf@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@12 void *v15; // [sp+10h] [bp-14h]@1 signed int v16; // [sp+14h] [bp-10h]@1 v1 = this; v15 = this; _eh_vector_constructor_iterator_(this, 0x19B8u, 4096, (int)sub_4B3430, (void (__thiscall *)(void *))sub_4B1330); v2 = (char *)v1 + (_DWORD)&dword_19B8000; *(_DWORD *)((char *)v1 + (_DWORD)&dword_19B8000) = &off_6BE5C0; *(_DWORD *)((char *)v1 + (_DWORD)&dword_19B8000 + 16) = 0; sub_4B3240((int)((char *)v1 + (_DWORD)&dword_19B8000), 0x1000u); *(_DWORD *)((char *)v1 + (_DWORD)&dword_19B8000) = &off_6BEE20; v3 = 2; v4 = 0; v5 = (int)((char *)v1 + 13168); v16 = 1024; do { if ( v3 - 2 < *((_WORD *)v2 + 2) ) { v6 = *((_DWORD *)v2 + 2); if ( !*(_DWORD *)(v6 + v4) ) *(_DWORD *)(v6 + v4) = v5 - 13168; } if ( v3 - 1 < *((_WORD *)v2 + 2) ) { v7 = *((_DWORD *)v2 + 2); v8 = *(_DWORD *)(v7 + v4 + 12) == 0; v9 = v7 + v4 + 12; if ( v8 ) *(_DWORD *)v9 = v5 - 6584; } if ( v3 < *((_WORD *)v2 + 2) ) { v10 = *((_DWORD *)v2 + 2); v8 = *(_DWORD *)(v10 + v4 + 24) == 0; v11 = v10 + v4 + 24; if ( v8 ) *(_DWORD *)v11 = v5; } if ( v3 + 1 < *((_WORD *)v2 + 2) ) { v12 = *((_DWORD *)v2 + 2); v8 = *(_DWORD *)(v12 + v4 + 36) == 0; v13 = v12 + v4 + 36; if ( v8 ) *(_DWORD *)v13 = v5 + 6584; } v5 += 26336; v4 += 48; v3 += 4; --v16; } while ( v16 ); return v15; } // 6BE5C0: using guessed type int (__thiscall *off_6BE5C0)(void *, char); // 6BEE20: using guessed type int (__thiscall *off_6BEE20)(void *, char); // 19B8000: using guessed type int dword_19B8000; //----- (004B3810) -------------------------------------------------------- int __stdcall sub_4B3810(int a1, int a2, int a3) { return sub_4B3400(a1, a2, a3); } //----- (004B3840) -------------------------------------------------------- signed int __thiscall sub_4B3840(void *this, int a2, int a3, int a4, signed int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15) { int v15; // ebx@1 int v16; // eax@1 int v17; // esi@1 int v18; // eax@1 void (__thiscall *v19)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@1 int v20; // ST1C_4@1 int v21; // eax@1 int v22; // eax@4 __int16 v23; // cx@6 int v24; // ecx@9 __int16 v25; // si@11 int v26; // ecx@11 signed int v27; // esi@14 int v29; // eax@16 bool v30; // zf@16 int v31; // eax@19 int i; // eax@20 signed int v33; // esi@21 int v34; // eax@24 int (__thiscall *v35)(_DWORD); // eax@27 int v36; // eax@27 unsigned int v37; // eax@27 int v38; // esi@29 int v39; // edi@32 int v40; // eax@38 int v41; // ecx@38 int v42; // [sp-8h] [bp-30h]@31 int v43; // [sp-4h] [bp-2Ch]@31 int (__stdcall **v44)(int, int); // [sp+10h] [bp-18h]@16 int v45; // [sp+14h] [bp-14h]@16 int v46; // [sp+18h] [bp-10h]@1 int v47; // [sp+24h] [bp-4h]@1 v15 = (int)this; v46 = (int)"ShineObjectClass::ShineMob::so_mob_Regenerate"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_Regenerate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_Regenerate"; dword_750AB8[dword_750CB8++] = -1; v16 = a2; v17 = a7; *(_DWORD *)(v15 + 7960) = a9; *(_DWORD *)(v15 + 8144) = *(_DWORD *)v16; *(_DWORD *)(v15 + 8148) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 8152) = *(_DWORD *)(v16 + 8); v18 = a8; **(_BYTE **)(v15 + 3828) = 0; v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v15 + 3944); v20 = a6; v47 = 0; *(_DWORD *)(v15 + 9628) = 6; v19(v15, v20, v17, v18); **(_DWORD **)(v15 + 102) = a3; *(_DWORD *)(*(_DWORD *)(v15 + 102) + 4) = a4; v21 = a5 / 2; if ( a5 / 2 < 0 ) LOBYTE(v21) = v21 - 76; **(_BYTE **)(v15 + 106) = v21; if ( (unsigned __int16)v17 <= (unsigned int)dword_14D16014 ) { v22 = dword_14D1600C + 52 * (unsigned __int16)v17; if ( v22 ) { if ( *(_DWORD *)v22 ) { v23 = **(_WORD **)v22; a9 = **(_WORD **)v22; if ( v23 == (_WORD)v17 ) goto LABEL_9; sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", (unsigned __int16)v17, a9); } } } v22 = 0; LABEL_9: v24 = a12; *(_DWORD *)(v15 + 8168) = v22; if ( v24 <= 0 ) LOBYTE(v24) = *(_BYTE *)(*(_DWORD *)v22 + 66); *(_BYTE *)(v15 + 8172) = v24; v25 = *(_WORD *)(v15 + 9520) & 0xFFFE | *(_BYTE *)(*(_DWORD *)(v22 + 4) + 147) & 1; *(_WORD *)(v15 + 9520) = v25; *(_WORD *)(v15 + 9520) = v25 & 0xFF01 | 2 * (*(_BYTE *)(*(_DWORD *)(v22 + 4) + 148) & 0x7F); *(_WORD *)(v15 + 9522) = *(_WORD *)(*(_DWORD *)(v22 + 4) + 149); v26 = *(_DWORD *)(v15 + 9528); *(_DWORD *)(v15 + 7952) = 0; if ( !v26 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v26 + 1232))() != 12 ) sub_4B8270((void *)(v15 + 8848), v15 + 9528); sub_4B1BA0((void *)v15); (*(void (__thiscall **)(int))(*(_DWORD *)v15 + 3940))(v15); *(_DWORD *)(v15 + 9024) = a11; v27 = sub_465910((void *)v15, 0); if ( v27 ) { --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_Regenerate"); return v27; } memcpy((void *)(*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1184))(v15), &unk_13244DF0, 0x63u); v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1324))(v15); v44 = &off_6A0504; v45 = v29 + 3364; LOBYTE(v47) = 1; sub_43C470(v29 + 3364, (int)&v44); v30 = *(_DWORD *)(*(_DWORD *)(v15 + 8168) + 44) == 0; LOBYTE(v47) = 0; if ( v30 ) { sub_55C7C0(v15, 1); if ( dword_87777C ) { (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, signed int, signed int, signed int, _DWORD))(*(_DWORD *)v15 + 1592))( v15, v15, 291, 1, dword_87777C, dword_14D129E8, 0, -1, 5000, 8, 0); sub_401900((void *)v15, 291); } } else { *(_BYTE *)(*(_DWORD *)(v15 + 8140) + 148) = 1; sub_55C7C0(v15, 0); v31 = *(_DWORD *)(v15 + 8168); if ( *(_DWORD *)(v31 + 48) != -1 ) { sub_63EEB0((int)&unk_14D159B0, (int)&a9, *(_DWORD *)(v31 + 48)); sub_63EEF0((int)&unk_14D159B0, (int)&a2, *(_DWORD *)(*(_DWORD *)(v15 + 8168) + 48)); for ( i = a9; a9 != a2; i = a9 ) { v33 = sub_639670(&byte_878354, *(_DWORD *)(i + 16) + 32); if ( v33 != -1 ) { if ( v33 < 792 ) { v34 = dword_8772F0[v33]; if ( v34 ) { (*(void (__thiscall **)(int, int, signed int, _DWORD, int, int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v15 + 1592))( v15, v15, v33, *(_BYTE *)(*(_DWORD *)(a9 + 16) + 64), v34, dword_14D129E8, 0, 0, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v15 + 8168) + 44) + 32), 0, 0); sub_401900((void *)v15, v33); } } else { sub_639100(&unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v33); } } sub_5CC3C0(&a9); } } } sub_548CF0(v15, a14, a15); sub_549230(v15, 0); (*(void (__thiscall **)(int, int))(*(_DWORD *)v15 + 1780))(v15, a6); *(_DWORD *)(v15 + 7964) = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1264))(v15); *(_DWORD *)(v15 + 7968) = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1268))(v15); sub_43C010(v15 + 4120, *(_DWORD *)(v15 + 8168)); v35 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v15 + 1804); *(_WORD *)(v15 + 8204) = -1; *(_BYTE *)(v15 + 8206) = 0; v36 = v35(v15); sub_440C20(v15 + 8176, *(_DWORD *)(v36 + 12)); v37 = 0; if ( (*(_DWORD *)(v15 + 8180) - *(_DWORD *)(v15 + 8176)) >> 2 ) { do *(_DWORD *)(*(_DWORD *)(v15 + 8176) + 4 * v37++) = 0; while ( v37 < (*(_DWORD *)(v15 + 8180) - *(_DWORD *)(v15 + 8176)) >> 2 ); } v38 = a10; *(_DWORD *)(v15 + 8192) = -1; if ( !v38 ) goto LABEL_36; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v38 + 1860))(v38) == 0 ) { v43 = 0; v42 = (int)"ShineObjectClass::ShineMob::so_mob_Regenerate : Null FamilyList - Leader"; LABEL_35: sub_639100(&unk_86DDD8, v42, v43); LABEL_36: *(_DWORD *)(v15 + 9485) = v15; *(_DWORD *)(v15 + 9481) = v15; goto LABEL_38; } v39 = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v38 + 1860))(v38) + 4); if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v38 + 1860))(v38) || !(*(int (__thiscall **)(int))(*(_DWORD *)v39 + 1860))(v39) ) { v43 = 0; v42 = (int)"ShineObjectClass::ShineMob::so_mob_Regenerate : Null FamilyList - member"; goto LABEL_35; } *(_DWORD *)(v15 + 9485) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v38 + 1860))(v38) + 4); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v38 + 1860))(v38) + 4) = v15; *(_DWORD *)(v15 + 9481) = *(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v39 + 1860))(v39); *(_DWORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v39 + 1860))(v39) = v15; LABEL_38: v40 = *(_DWORD *)(v15 + 8168); v41 = *(_DWORD *)(v40 + 8); if ( v41 && (!*(_DWORD *)v41 || *(_DWORD *)(*(_DWORD *)v41 + 109)) ) *(_DWORD *)(v15 + 7884) = off_8551E8; else *(_DWORD *)(v15 + 7884) = off_8551E4; *(_DWORD *)(v15 + 8216) = 0; *(_DWORD *)(v15 + 9652) = sub_4AF4D0((int)&unk_1325CC48, **(_WORD **)v40); sub_55B690(v15); --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_Regenerate"); return 0; } // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); // 8772F0: using guessed type int dword_8772F0[]; // 87777C: using guessed type int dword_87777C; // 14D129E8: using guessed type int dword_14D129E8; // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (004B3E10) -------------------------------------------------------- signed int __thiscall sub_4B3E10(void *this, int a2, int a3, int a4, signed int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15) { void *v15; // edi@1 int v16; // edx@2 signed int v18; // [sp+50h] [bp+30h]@1 v15 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_Regenerate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_mob_Regenerate"; dword_750AB8[dword_750CB8++] = -1; v18 = sub_4B3840(v15, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); if ( (unsigned __int16)a7 <= (unsigned int)dword_14D16014 ) { v16 = dword_14D1600C + 52 * (unsigned __int16)a7; if ( v16 ) { if ( *(_DWORD *)v16 ) { if ( **(_WORD **)v16 == (_WORD)a7 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v15 + 2748))(v15, *(_DWORD *)(v16 + 36)); else sub_639150( &unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", (unsigned __int16)a7, **(_WORD **)v16); } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_mob_Regenerate"); return v18; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (004B3F50) -------------------------------------------------------- signed int __thiscall sub_4B3F50(void *this, int a2, int a3, int a4, signed int a5, __int16 a6, int a7, int a8, int a9, char a10, int a11, int a12) { int v12; // ebx@1 int v13; // eax@1 int v14; // ecx@1 int v15; // edx@1 int v16; // edi@1 int v17; // eax@1 unsigned int v18; // ecx@1 int v19; // eax@1 signed int v20; // esi@3 signed int result; // eax@4 int v22; // eax@5 int (__stdcall **v23)(int, int); // [sp+18h] [bp-18h]@5 unsigned int v24; // [sp+1Ch] [bp-14h]@1 int v25; // [sp+20h] [bp-10h]@1 int v26; // [sp+2Ch] [bp-4h]@1 v12 = (int)this; v25 = (int)"ShineObjectClass::ShinePet::spt_Regenerate"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::spt_Regenerate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::spt_Regenerate"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)(v12 + 9664) = a8; *(_DWORD *)(v12 + 7960) = a8; *(_DWORD *)(v12 + 8144) = *(_DWORD *)a2; *(_DWORD *)(v12 + 8148) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v12 + 8152) = *(_DWORD *)(a2 + 8); v13 = *(_DWORD *)(v12 + 3828); v26 = 0; *(_BYTE *)v13 = 0; sub_4B0590(v12 + 9684, a6, a7); v14 = *(_DWORD *)a9; v15 = *(_DWORD *)(a9 + 4); v16 = *(_DWORD *)(a9 + 8); v24 = *(_DWORD *)(a9 + 12); v17 = *(_DWORD *)(v12 + 9766); *(_DWORD *)(v17 + 15) = v14; v18 = v24; *(_DWORD *)(v17 + 23) = v16; *(_DWORD *)(v17 + 27) = v18; *(_DWORD *)(v17 + 19) = v15; **(_DWORD **)(v12 + 102) = a3; *(_DWORD *)(*(_DWORD *)(v12 + 102) + 4) = a4; v19 = a5 / 2; if ( a5 / 2 < 0 ) LOBYTE(v19) = v19 - 76; **(_BYTE **)(v12 + 106) = v19; *(_DWORD *)(*(_DWORD *)(v12 + 9766) + 6) = a3; *(_DWORD *)(*(_DWORD *)(v12 + 9766) + 10) = a4; *(_BYTE *)(*(_DWORD *)(v12 + 9766) + 14) = v19; (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 3940))(v12); *(_WORD *)(v12 + 9520) &= 0xFF00u; *(_WORD *)(v12 + 9522) = 0; *(_DWORD *)(v12 + 8168) = 0; *(_BYTE *)(v12 + 8172) = 0; *(_BYTE *)(v12 + 9521) = 0; *(_DWORD *)(v12 + 9024) = 0; *(_DWORD *)(v12 + 7952) = 0; v20 = sub_465AB0((void *)v12, a10); if ( v20 ) { --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::spt_Regenerate"); result = v20; } else { memcpy((void *)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1184))(v12), &unk_13244DF0, 0x63u); v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1324))(v12); v23 = &off_6A0504; v24 = v22 + 3364; LOBYTE(v26) = 1; sub_43C470(v22 + 3364, (int)&v23); LOBYTE(v26) = 0; v23 = &off_6A04FC; if ( dword_87777C ) { (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, signed int, signed int, signed int, _DWORD))(*(_DWORD *)v12 + 1592))( v12, v12, 291, 1, dword_87777C, dword_14D129E8, 0, -1, 5000, 8, 0); sub_401900((void *)v12, 291); } sub_55C7C0(v12, 1); sub_548CF0(v12, a11, a12); sub_549230(v12, 0); sub_442840((void *)v12, a6); *(_DWORD *)(v12 + 7964) = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1264))(v12); *(_DWORD *)(v12 + 7968) = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1268))(v12); v24 = 0; *(_WORD *)(v12 + 8204) = -1; *(_BYTE *)(v12 + 8206) = 0; sub_440C20(v12 + 8176, v24); *(_DWORD *)(v12 + 8192) = -1; *(_DWORD *)(v12 + 9485) = v12; *(_DWORD *)(v12 + 9481) = v12; *(_DWORD *)(v12 + 7884) = off_8551E4; *(_DWORD *)(v12 + 8216) = 0; sub_55B690(v12); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::spt_Regenerate"); result = 0; } return result; } // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); // 87777C: using guessed type int dword_87777C; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B4250) -------------------------------------------------------- signed int __thiscall sub_4B4250(void *this, int a2, int a3, int a4, signed int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15) { void *v15; // esi@1 signed int v16; // eax@1 signed int v17; // esi@1 v15 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_mob_Regenerate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineNPC::so_mob_Regenerate"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v15 + 9664) = 0; v16 = sub_4B3840(v15, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); --dword_750CB8; v17 = v16; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_mob_Regenerate"); return v17; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B4330) -------------------------------------------------------- int __thiscall sub_4B4330(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 void *v7; // ebx@4 int v8; // edi@4 void *i; // eax@5 int v10; // [sp+0h] [bp-24h]@1 int v11; // [sp+10h] [bp-14h]@4 int *v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [bp-4h]@4 v12 = &v10; v2 = this; if ( a2 > 0x2AAAAAAA ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 6; if ( result < a2 ) { v4 = sub_4B2170(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v11 = v4; v13 = 0; sub_4B3400((int)v6, v5, v4); v7 = *(void **)v2; v8 = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 6; if ( *(_DWORD *)v2 ) { for ( i = *(void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 6 ) ; operator delete(*(void **)v2); } result = v11; *(_DWORD *)(v2 + 8) = v11 + 6 * a2; *(_DWORD *)(v2 + 4) = result + 6 * v8; *(_DWORD *)v2 = result; } return result; } //----- (004B4415) -------------------------------------------------------- void __usercall sub_4B4415(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004B4430) -------------------------------------------------------- int __thiscall sub_4B4430(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 int v5; // ecx@4 int v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 6; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( (unsigned int)v3 > 0x2AAAAAAA ) sub_65178B((int)"vector too long"); v4 = sub_4B2170(v3); *(_DWORD *)(v2 + 8) = v4 + 6 * v3; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_4B33C0(v6, v5, v4); } return v2; } //----- (004B44F0) -------------------------------------------------------- void __usercall sub_4B44F0(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004B4510) -------------------------------------------------------- int __thiscall sub_4B4510(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 6; if ( 715827882 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 6; if ( v3 > (unsigned int)result ) { if ( 715827882 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_4B4330(this, v5); } return result; } //----- (004B4590) -------------------------------------------------------- int __thiscall sub_4B4590(int this, int a2) { int v2; // esi@1 int v3; // ebx@2 int v4; // ecx@3 int v8; // ecx@7 int v9; // ebx@10 v2 = this; if ( this != a2 ) { v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 6; if ( v3 ) { v8 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 6; if ( v3 <= (unsigned int)v8 ) { sub_4B23D0(*(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)v2); *(_DWORD *)(v2 + 4) = *(_DWORD *)v2 + 6 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 6; return v2; } if ( v3 <= (unsigned int)((*(_DWORD *)(v2 + 8) - *(_DWORD *)v2) / 6) ) { v9 = *(_DWORD *)a2 + 6 * v8; sub_4B23D0(*(_DWORD *)a2, *(_DWORD *)a2 + 6 * v8, *(_DWORD *)v2); *(_DWORD *)(v2 + 4) = sub_4B3400(v9, *(_DWORD *)(a2 + 4), *(_DWORD *)(v2 + 4)); return v2; } if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); if ( sub_4B2370(v2, (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 6) ) *(_DWORD *)(v2 + 4) = sub_4B3810(*(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)v2); } else { v4 = *(_DWORD *)this; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) { *(_DWORD *)(v2 + 4) = v4; return v2; } } } return v2; } //----- (004B46E0) -------------------------------------------------------- int __thiscall sub_4B46E0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // edi@6 int i; // esi@6 int v8; // [sp-4h] [bp-20h]@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Initialize"); dword_7508B8[dword_750CB8] = (int)"FamilyMobManagement::FamilyMobManager::fmm_Initialize"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1); v4 = *(_DWORD *)v2; if ( *(_DWORD *)v2 == v3 ) goto LABEL_12; do { if ( *(_DWORD *)v4 == a2 ) break; v4 += 20; } while ( v4 != v3 ); if ( v4 != v3 ) { v5 = *(_DWORD *)(v4 + 8); for ( i = *(_DWORD *)(v4 + 4); i != v5; i += 6 ) sub_4B0AD0(i); v8 = (int)"FamilyMobManagement::FamilyMobManager::fmm_Initialize"; } else { LABEL_12: v8 = (int)"FamilyMobManagement::FamilyMobManager::fmm_Initialize"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B47B0) -------------------------------------------------------- bool __thiscall sub_4B47B0(void *this, int a2, __int16 a3) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 bool result; // al@5 int v7; // ecx@6 int v8; // eax@6 bool v9; // bl@10 v3 = this; sub_4675D0((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Dead"); dword_7508B8[dword_750CB8] = (int)"FamilyMobManagement::FamilyMobManager::fmm_Dead"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); v5 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == v4 ) goto LABEL_13; do { if ( *(_DWORD *)v5 == a2 ) break; v5 += 20; } while ( v5 != v4 ); if ( v5 == v4 || (v7 = *(_DWORD *)(v5 + 8), v8 = *(_DWORD *)(v5 + 4), v8 == v7) ) goto LABEL_13; do { if ( *(_WORD *)v8 == a3 ) break; v8 += 6; } while ( v8 != v7 ); if ( v8 == v7 ) { LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Dead"); result = 0; } else { ++*(_WORD *)(v8 + 4); v9 = *(_WORD *)(v8 + 4) >= *(_WORD *)(v8 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Dead"); result = v9; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B48C0) -------------------------------------------------------- int __thiscall sub_4B48C0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 int v4; // esi@3 int v5; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4B4510(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_WORD *)(result + 4) = *(_WORD *)(a2 + 4); } } else { v4 = (signed int)(a2 - *(_DWORD *)v2) / 6; if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4B4510(v2, 1); v5 = *(_DWORD *)v2 + 6 * v4; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v5; *(_WORD *)(result + 4) = *(_WORD *)(v5 + 4); *(_DWORD *)(v2 + 4) += 6; return result; } } *(_DWORD *)(v2 + 4) += 6; return result; } //----- (004B4950) -------------------------------------------------------- char __thiscall sub_4B4950(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 int v5; // eax@1 int v6; // eax@8 int i; // edi@8 int v8; // edi@12 int v9; // ebx@15 int v10; // eax@15 int v11; // edi@22 int v12; // eax@23 int v13; // edi@28 unsigned int v14; // edx@31 int v15; // edi@31 int v16; // eax@32 int v17; // eax@40 unsigned int v18; // ecx@40 int v20; // [sp+28h] [bp+8h]@11 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Routine"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_Routine"; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(v3 + 84); if ( v5 != -1 && !v5 ) { if ( !sub_54DE90(&unk_13253630, *(_WORD *)(v3 + 60)) ) (*(void (__stdcall **)(int))(*(_DWORD *)a2 + 12))(a3); LABEL_5: dword_750CB8 -= v4; goto LABEL_46; } if ( *(_WORD *)(v3 + 60) != -1 ) { sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Routine - FAMILYANIHILATED"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_Routine - FAMILYANIHILATED"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_54DE90(&unk_13253630, *(_WORD *)(v3 + 60)) ) { *(_WORD *)(v3 + 60) = -1; v6 = *(_DWORD *)(v3 + 88); for ( i = v3; v6; v6 = *(_DWORD *)(v6 + 88) ) i = v6; if ( sub_4B47B0(&dword_D9FB7DC, i, *(_WORD *)(v3 + 6)) ) { v20 = i; do { v8 = sub_54DE90(&unk_13253630, *(_WORD *)(v20 + 60)); if ( v8 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1156))(v8) != 3 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 40))(v8) ) { v9 = *(_DWORD *)v8; v10 = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v8 + 1256))(v8, 1000, 1); (*(void (__thiscall **)(int, int, int))(v9 + 1468))(v8, v8, v10); } v20 = *(_DWORD *)(v20 + 92); } while ( v20 ); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Routine - FAMILYANIHILATED"); v4 = 1; } if ( *(_DWORD *)(v3 + 88) || !*(_BYTE *)(v3 + 4) ) goto LABEL_5; if ( *(_BYTE *)(v3 + 68) ) { if ( (unsigned int)dword_14D129E8 > *(_DWORD *)(v3 + 64) ) { sub_4B46E0(&dword_D9FB7DC, v3); v11 = v3; do { *(_BYTE *)(v11 + 68) = 0; *(_WORD *)(v11 + 60) = sub_4B2410((void *)v11, v3); v12 = *(_DWORD *)(v11 + 84); if ( v12 > 0 ) *(_DWORD *)(v11 + 84) = v12 - 1; v11 = *(_DWORD *)(v11 + 92); } while ( v11 ); v4 = 1; } dword_750CB8 -= v4; } else { v13 = v3; while ( !sub_54DE90(&unk_13253630, *(_WORD *)(v13 + 60)) ) { v13 = *(_DWORD *)(v13 + 92); if ( !v13 ) { v14 = (*(_DWORD *)(v3 + 80) - *(_DWORD *)(v3 + 76)) / 0xAu; *(_BYTE *)(v3 + 68) = 1; v15 = dword_14D129E8; if ( (signed int)v14 >= *(_DWORD *)(v3 + 28) ) { if ( (signed int)v14 >= *(_DWORD *)(v3 + 36) ) { if ( (signed int)v14 <= *(_DWORD *)(v3 + 52) ) { if ( (signed int)v14 <= *(_DWORD *)(v3 + 44) ) v16 = 0; else v16 = *(_DWORD *)(v3 + 48); } else { v16 = *(_DWORD *)(v3 + 56); } } else { v16 = *(_DWORD *)(v3 + 32); } } else { v16 = *(_DWORD *)(v3 + 24); } v17 = *(_DWORD *)(v3 + 72) + v16; v18 = *(_DWORD *)(v3 + 16); if ( v17 >= v18 && (v18 = *(_DWORD *)(v3 + 20), v17 <= v18) ) *(_DWORD *)(v3 + 72) = v17; else *(_DWORD *)(v3 + 72) = v18; *(_DWORD *)(v3 + 64) = v15 + 10 * *(_DWORD *)(v3 + 72); break; } } --dword_750CB8; } LABEL_46: sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B4C30) -------------------------------------------------------- char __thiscall sub_4B4C30(void *this, int a2, int a3) { int v3; // esi@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_Routine"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(v3 + 20) ) sub_5A7F60(v3, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4B4950); else (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 12))(a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B4CF0) -------------------------------------------------------- int __cdecl sub_4B4CF0(int a1, int a2, int a3) { int v3; // edi@1 int i; // esi@1 int v5; // ecx@3 v3 = a1; for ( i = a1 + 20; i != a2; i += 20 ) { if ( *(_DWORD *)i != *(_DWORD *)a3 ) { *(_DWORD *)v3 = *(_DWORD *)i; v5 = v3 + 4; v3 += 20; sub_4B4590(v5, i + 4); } } return v3; } //----- (004B4D30) -------------------------------------------------------- int __cdecl sub_4B4D30() { sub_4675D0((int)&unk_D020420, (int)"EventMobRegen::erb_happen"); dword_7508B8[dword_750CB8] = (int)"EventMobRegen::erb_happen"; dword_750AB8[dword_750CB8++] = -1; sub_5A7F60((int)((char *)&dword_19B8000 + dword_D9FAF98), (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4B4C30); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"EventMobRegen::erb_happen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 19B8000: using guessed type int dword_19B8000; // D9FAF98: using guessed type int dword_D9FAF98; //----- (004B4DE0) -------------------------------------------------------- void __cdecl sub_4B4DE0(int a1, int a2) { if ( *(_DWORD *)(a2 + 4) ) operator delete(*(void **)(a2 + 4)); *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; } //----- (004B4E10) -------------------------------------------------------- int __cdecl sub_4B4E10(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_4B4430(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (004B4EC0) -------------------------------------------------------- int __thiscall sub_4B4EC0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_4B4E10(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_492FC0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (004B4FAB) -------------------------------------------------------- void __usercall sub_4B4FAB(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004B4FD0) -------------------------------------------------------- int __thiscall sub_4B4FD0(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // ebx@2 int v8; // [sp+8h] [bp-4h]@1 result = a2; v5 = a4; v6 = a3; v8 = this; *(_DWORD *)a2 = a3; if ( a3 != a4 ) { v7 = *(_DWORD *)(this + 4); if ( a4 != v7 ) { do { *(_DWORD *)v6 = *(_DWORD *)v5; sub_4B4590(v6 + 4, v5 + 4); v5 += 20; v6 += 20; } while ( v5 != v7 ); this = v8; } sub_492FC0(v6, *(_DWORD *)(this + 4)); result = a2; *(_DWORD *)(v8 + 4) = v6; } return result; } //----- (004B5030) -------------------------------------------------------- int __thiscall sub_4B5030(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_4B4EC0(this, v5); } return result; } //----- (004B50B0) -------------------------------------------------------- int __thiscall sub_4B50B0(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // eax@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 int v10; // [sp+20h] [bp-10h]@1 int v11; // [sp+2Ch] [bp-4h]@1 v2 = (int)this; v10 = (int)"FamilyMobManagement::FamilyMobManager::fmm_Remove"; sub_4675D0((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Remove"); dword_7508B8[dword_750CB8] = (int)"FamilyMobManagement::FamilyMobManager::fmm_Remove"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 4); v11 = 0; v7 = 0; v8 = 0; v9 = 0; v6 = a2; v4 = *(_DWORD *)v2; LOBYTE(v11) = 1; if ( v4 != v3 ) { while ( *(_DWORD *)v4 != a2 ) { v4 += 20; if ( v4 == v3 ) goto LABEL_7; } if ( v4 != v3 ) v4 = sub_4B4CF0(v4, v3, (int)&v6); } LABEL_7: sub_4B4FD0(v2, (int)&a2, v4, v3); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Remove"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B51A0) -------------------------------------------------------- int __thiscall sub_4B51A0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4B5030(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; v8 = a2 + 4; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4B5030(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; v8 = v6 + 4; LABEL_11: result = sub_4B4430(result + 4, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 20; return result; } //----- (004B5270) -------------------------------------------------------- char __thiscall sub_4B5270(void *this, unsigned __int16 a2) { int v2; // esi@1 char v3; // cl@1 int v4; // ebx@2 int v5; // ecx@3 char v6; // al@7 char v7; // bl@7 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::l_Free"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::l_Free"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( a2 < *(_WORD *)(v2 + 4) ) { v5 = *(_DWORD *)(v2 + 8); v4 = *(_DWORD *)(v5 + 12 * a2); v3 = *(_BYTE *)(v5 + 12 * a2 + 8); } else { v4 = 0; } if ( v3 ) { *(_DWORD *)(v4 + 92) = 0; *(_DWORD *)(v4 + 88) = 0; } else { sub_639100(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::l_Free", 0); } sub_4B50B0(&dword_D9FB7DC, v4); v6 = sub_473C70(v2, a2); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::l_Free"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B5360) -------------------------------------------------------- int __thiscall sub_4B5360(void *this, int a2, __int16 a3, int a4) { int v4; // esi@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // edi@4 int v9; // eax@5 int i; // esi@5 int v11; // ecx@11 int v14; // edx@16 int v15; // eax@16 signed __int16 v16; // ax@20 void *v18; // [sp-4h] [bp-40h]@10 int v19; // [sp+10h] [bp-2Ch]@1 int v20; // [sp+14h] [bp-28h]@1 int v21; // [sp+18h] [bp-24h]@1 int v22; // [sp+1Ch] [bp-20h]@1 __int16 v23; // [sp+24h] [bp-18h]@16 __int16 v24; // [sp+26h] [bp-16h]@22 __int16 v25; // [sp+28h] [bp-14h]@22 int v26; // [sp+2Ch] [bp-10h]@1 int v27; // [sp+38h] [bp-4h]@1 v4 = (int)this; v26 = (int)"FamilyMobManagement::FamilyMobManager::fmm_Regist"; sub_4675D0((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Regist"); dword_7508B8[dword_750CB8] = (int)"FamilyMobManagement::FamilyMobManager::fmm_Regist"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v27 = 0; v20 = 0; v21 = 0; v22 = 0; v19 = a2; v6 = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)v4; for ( LOBYTE(v27) = 1; v7 != v6; v7 += 20 ) { if ( *(_DWORD *)v7 == a2 ) break; } v8 = v7; if ( v7 == v6 ) { sub_4B51A0(v4, (unsigned int)&v19); v9 = *(_DWORD *)(v4 + 4); for ( i = *(_DWORD *)v4; i != v9; i += 20 ) { if ( *(_DWORD *)i == v19 ) break; } v8 = i; if ( i == v9 ) { if ( v20 ) { v18 = (void *)v20; LABEL_25: operator delete(v18); goto LABEL_26; } goto LABEL_26; } v11 = *(_DWORD *)(i + 4); if ( v11 != *(_DWORD *)(i + 8) ) *(_DWORD *)(i + 8) = v11; v5 = v20; } v14 = *(_DWORD *)(v8 + 8); v15 = *(_DWORD *)(v8 + 4); v23 = a3; if ( v15 == v14 ) goto LABEL_29; do { if ( *(_WORD *)v15 == a3 ) break; v15 += 6; } while ( v15 != v14 ); if ( v15 == v14 ) { LABEL_29: v16 = a4; if ( !a4 ) v16 = -5536; v24 = v16; v25 = 0; sub_4B48C0(v8 + 4, (unsigned int)&v23); } if ( v5 ) { v18 = (void *)v5; goto LABEL_25; } LABEL_26: --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"FamilyMobManagement::FamilyMobManager::fmm_Regist"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B54E0) -------------------------------------------------------- char __thiscall sub_4B54E0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edx@1 int v5; // edi@1 char result; // al@6 int v7; // eax@11 int v8; // eax@13 void *v9; // edi@14 int v10; // eax@15 signed int v11; // eax@18 __int16 v12; // si@18 int v13; // [sp+10h] [bp-118h]@0 unsigned int v14; // [sp+14h] [bp-114h]@12 char v15; // [sp+18h] [bp-110h]@11 unsigned int v16; // [sp+118h] [bp-10h]@1 int v17; // [sp+124h] [bp-4h]@1 int v18; // [sp+128h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"; dword_750AB8[dword_750CB8++] = -1; v4 = dword_D9FAFA4; v5 = *(_DWORD *)dword_D9FAFA4; v17 = 0; if ( v5 != *(_DWORD *)(v3 + 6424) || *(_DWORD *)(dword_D9FAFA4 + 4) != *(_DWORD *)(v3 + 6428) || *(_DWORD *)(dword_D9FAFA4 + 8) != *(_DWORD *)(v3 + 6432) || *(_DWORD *)(dword_D9FAFA4 + 12) != *(_DWORD *)(v3 + 6436) || *(_DWORD *)(dword_D9FAFA4 + 16) != *(_DWORD *)(v3 + 6440) || *(_DWORD *)dword_D9FAFA0 != *(_DWORD *)(v3 + 6493) || *(_DWORD *)(dword_D9FAFA0 + 4) != *(_DWORD *)(v3 + 6497) || *(_DWORD *)(dword_D9FAFA0 + 8) != *(_DWORD *)(v3 + 6501) ) { --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"); result = 1; } else { memcpy((void *)(v3 + 6445), (const void *)(dword_D9FAFA4 + 55), 0x30u); if ( *(_DWORD *)(v3 + 6445) < 0x93A80u ) { v14 = 0; if ( *(_BYTE *)(v4 + 53) ) { do { v8 = *(_WORD *)(v3 + 12); if ( (_WORD)v8 == -1 ) { v9 = 0; } else { v13 = *(_WORD *)(v3 + 12); v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 8))(v3, v8); v4 = dword_D9FAFA4; v9 = (void *)v10; } if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"MobBreederGroup::mbg_StoreData : Too many mob in regengroup", 0); loc_6391B0("MobRegenClass::MobBreederGroup::mbg_StoreData"); v4 = dword_D9FAFA4; } v11 = sub_639620(&unk_14D16018, (unsigned __int8 *)(v4 + 20)); v12 = -1; if ( v11 != -1 ) v12 = v11; if ( v12 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobBreederGroup::mbg_StoreData : Wrong mob name", dword_D9FAFA4 + 20); v12 = 1; } if ( *(_BYTE *)(v3 + 6444) == 89 ) { if ( *(_DWORD *)(v3 + 6576) ) sub_4B1B20(v9, *(_DWORD *)(v3 + 6576)); else *(_DWORD *)(v3 + 6576) = v9; sub_4B5360(&dword_D9FB7DC, *(_DWORD *)(v3 + 6576), v12, *(_BYTE *)(dword_D9FAFA4 + 54)); } if ( !sub_4B2830(v9, v3, v12, dword_D9FAFA4 + 55, -1) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 12))(v3, v13); v4 = dword_D9FAFA4; ++v14; } while ( v14 < *(_BYTE *)(dword_D9FAFA4 + 53) ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"); result = 0; } else { sub_639100( &unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::mbg_StoreData : Minus regen time", *(_DWORD *)(v3 + 6445)); v7 = sub_649DA0(v3 + 6424, (int)&v15); sub_6390B0(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::mbg_StoreData : Minus regen time", v7); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"); result = 1; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAFA0: using guessed type int dword_D9FAFA0; // D9FAFA4: using guessed type int dword_D9FAFA4; //----- (004B57C0) -------------------------------------------------------- char __thiscall sub_4B57C0(void *this, int a2, __int16 a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14) { void *v14; // esi@1 int v15; // ebx@1 int **v16; // edx@2 int v17; // eax@5 char result; // al@9 int v19; // ecx@12 v14 = this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_MobBreed"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_MobBreed"; v15 = -1; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v14 + 2) = a12; *(_DWORD *)v14 = a2; *((_WORD *)v14 + 3) = a3; if ( (unsigned __int16)a3 <= (unsigned int)dword_14D16014 && (v16 = (int **)(dword_14D1600C + 52 * (unsigned __int16)a3)) != 0 && *v16 ) { if ( *(_WORD *)*v16 == a3 ) { v17 = dword_14D1600C + 52 * (unsigned __int16)a3; v15 = -1; } else { sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", (unsigned __int16)a3, *(_WORD *)*v16); v17 = 0; v15 = -1; } } else { v17 = 0; } if ( v17 != 0 ) { if ( a8 && v14 != (void *)a8 ) { v19 = *(_DWORD *)(a8 + 92); *(_DWORD *)(a8 + 92) = v14; *((_DWORD *)v14 + 22) = a8; if ( v19 ) { *(_DWORD *)(v19 + 88) = v14; *((_DWORD *)v14 + 23) = v19; } sub_4B5360(&dword_D9FB7DC, a8, a3, 3); } sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetBrain"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreeder::mb_SetBrain"; dword_750AB8[dword_750CB8] = v15; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_SetBrain"); sub_4B12A0(v14, a6); *((_WORD *)v14 + 30) = -1; *((_DWORD *)v14 + 21) = a7; *((_BYTE *)v14 + 68) = 1; *((_DWORD *)v14 + 16) = 10 * a6; *((_DWORD *)v14 + 24) = a9; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_MobBreed"); result = 1; } else { sub_639100(&unk_86DDD8, (int)"MobBreeder::mb_MobBreed : Invalid mob index", *((_WORD *)v14 + 3)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreeder::mb_MobBreed"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (004B59A0) -------------------------------------------------------- int __thiscall sub_4B59A0(void *this, int a2, int a3) { int v3; // eax@1 void *v4; // esi@2 int v5; // eax@4 int v6; // eax@4 int v7; // edx@4 int v8; // ecx@4 int v9; // ecx@4 int v10; // edx@4 int v11; // eax@5 int v12; // eax@5 int v13; // edx@5 int v14; // eax@7 int v15; // esi@7 int v16; // eax@8 int v17; // edx@13 int v18; // eax@16 int v19; // esi@19 int v20; // ecx@19 int v21; // eax@20 int v23; // [sp-1Ch] [bp-214h]@7 int v24; // [sp-18h] [bp-210h]@7 char *v25; // [sp-14h] [bp-20Ch]@4 int v26; // [sp-10h] [bp-208h]@4 int v27; // [sp-Ch] [bp-204h]@4 int v28; // [sp-8h] [bp-200h]@4 unsigned int v29; // [sp-4h] [bp-1FCh]@1 int v30; // [sp+Ch] [bp-1ECh]@1 void *v31; // [sp+10h] [bp-1E8h]@4 void *v32; // [sp+14h] [bp-1E4h]@1 int v33; // [sp+18h] [bp-1E0h]@1 void *v34; // [sp+1Ch] [bp-1DCh]@2 int i; // [sp+20h] [bp-1D8h]@6 int *v36; // [sp+24h] [bp-1D4h]@1 char v37; // [sp+28h] [bp-1D0h]@20 char v38; // [sp+128h] [bp-D0h]@10 char v39; // [sp+168h] [bp-90h]@4 unsigned int v40; // [sp+1E8h] [bp-10h]@1 int v41; // [sp+1F4h] [bp-4h]@1 int v42; // [sp+1F8h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v29 = (unsigned int)&v42 ^ __security_cookie; v32 = this; v33 = a2; v30 = (int)"MobHatchery::mh_Load"; sub_4675D0((int)&unk_D020420, (int)"MobHatchery::mh_Load"); dword_7508B8[dword_750CB8] = (int)"MobHatchery::mh_Load"; dword_750AB8[dword_750CB8++] = -1; v41 = 0; v3 = operator new(0x10854u); v36 = (int *)v3; LOBYTE(v41) = 1; if ( v3 ) { v4 = (void *)sub_6432E0(v3); v34 = v4; } else { v34 = 0; v4 = 0; } v31 = v4; v5 = dword_8622C4 & (dword_8622C0 + 1); LOBYTE(v41) = 2; dword_8622C0 = v5; v6 = (int)&byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)a3; *(_DWORD *)(v6 + 4) = *(_DWORD *)(a3 + 4); v7 = v33; *(_DWORD *)(v6 + 8) = *(_DWORD *)(a3 + 8); *(_BYTE *)(v6 + 12) = 0; v8 = dword_8622C4 & (dword_8622C0 + 1); v28 = v6; dword_8622C0 = v8; v9 = (int)&byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v33 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v33 + 8); v10 = *(_DWORD *)(v33 + 12); v27 = v9; v26 = (int)"../9Data/Shine/World/%s/MobRegen/%s.txt"; v25 = &v39; *(_DWORD *)(v9 + 12) = v10; *(_BYTE *)(v9 + 16) = 0; sprintf(v25, (const char *)v26, v27, v28); if ( !sub_6434A0(v4, &v39) ) { sub_642780(v4); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = (int)&byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)a3; *(_DWORD *)(v12 + 4) = *(_DWORD *)(a3 + 4); v13 = *(_DWORD *)(a3 + 8); v28 = v12; *(_DWORD *)(v12 + 8) = v13; *(_BYTE *)(v12 + 12) = 0; sprintf(&v39, "../9Data/Shine/MobRegen/%s.txt", v28); if ( sub_6434A0(v4, &v39) ) { i = 0; while ( 1 ) { v28 = i; v36 = &v23; v27 = 0; v26 = 0; v25 = 0; v24 = 0; v23 = 0; strncpy((char *)&v23, "MobRegenGroup", 0x14u); v14 = sub_6442C0(v4, v23, v24, (int)v25, v26, v27, v28); v15 = v14; if ( !v14 ) break; v16 = *(_DWORD *)(v14 + 21); if ( v16 < (unsigned int)&unk_FFFFFF && *(_DWORD *)(v15 + 25) < (unsigned int)&unk_FFFFFF ) { if ( *(_WORD *)((char *)v32 + (_DWORD)&word_19B800C) == -1 ) { v36 = 0; } else { v17 = *(_DWORD *)((char *)v32 + (_DWORD)&dword_19B8000); v28 = *(_WORD *)((char *)v32 + (_DWORD)&word_19B800C); v36 = (int *)(*(int (__stdcall **)(int))(v17 + 8))(v28); } if ( v36 == 0 ) { sub_639100(&unk_86DDD8, (int)"MobHatchery::mh_Load : Too many MobRegenGroup", 0); loc_6391B0("MobHatchery::mh_Load"); } sub_4B1650(v36, v15, a3, *(_BYTE *)(v15 + 20), v15 + 21); v18 = sub_4B7910(&unk_D9FB7F8, v33, v15); ++i; v4 = v34; v36[1645] = v18; } else { v28 = *(_DWORD *)(v15 + 25); sub_639150(&unk_86DDD8, (int)"MobHatchery::mh_Load : Invalid LoginLoc", v16, v28); sub_649DA0(v15, (int)&v38); ++i; v4 = v34; } } dword_D9FAFA0 = a3; for ( i = 0; ; ++i ) { v28 = i; v36 = &v23; v27 = 0; v26 = 0; v25 = 0; v24 = 0; v23 = 0; strncpy((char *)&v23, "MobRegen", 0x14u); dword_D9FAFA4 = sub_6442C0(v34, v23, v24, (int)v25, v26, v27, v28); if ( !dword_D9FAFA4 ) break; v28 = (int)sub_4B54E0; dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v19 = (int)&byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v19 = *(_DWORD *)a3; *(_DWORD *)(v19 + 4) = *(_DWORD *)(a3 + 4); v20 = (int)((char *)v32 + (_DWORD)&dword_19B8000); *(_DWORD *)(v19 + 8) = *(_DWORD *)(a3 + 8); *(_BYTE *)(v19 + 12) = 0; if ( sub_5A7F60(v20, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))v28) ) { sub_6390B0(&unk_86DDD8, (int)"MobHatchery::mh_Load : RegenMob without RegenGroup in", v19); v21 = sub_649DA0(dword_D9FAFA4, (int)&v37); sub_6390B0(&unk_86DDD8, (int)"MobHatchery::mh_Load : RegenGroup is", v21); loc_6391B0("MobHatchery::mh_Load"); } } v4 = v34; } } LOBYTE(v41) = 0; if ( v4 ) { sub_643080(v4); operator delete(v4); } --dword_750CB8; v41 = -1; return sub_467660((int)&unk_D020420, (int)"MobHatchery::mh_Load"); } // 642780: using guessed type int __thiscall sub_642780(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 19B8000: using guessed type int dword_19B8000; // 19B800C: using guessed type __int16 word_19B800C; // D9FAFA0: using guessed type int dword_D9FAFA0; // D9FAFA4: using guessed type int dword_D9FAFA4; //----- (004B5DE0) -------------------------------------------------------- void *__thiscall sub_4B5DE0(void *this, int a2, int a3, int a4, __int16 a5, int a6, int a7, int a8, void *a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17) { int v17; // esi@1 int v18; // ebx@1 int v19; // eax@4 void *v20; // eax@5 void *v21; // edi@5 void *result; // eax@13 int v23; // [sp+28h] [bp+8h]@1 unsigned int v24; // [sp+2Ch] [bp+Ch]@3 int v25; // [sp+30h] [bp+10h]@5 v17 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_MobBreed"); dword_7508B8[dword_750CB8] = (int)"MobRegenClass::MobBreederGroup::mbg_MobBreed"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)(v17 + 6444) = (_BYTE)a9; *(_DWORD *)(v17 + 6493) = *(_DWORD *)a2; *(_DWORD *)(v17 + 6497) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v17 + 6501) = *(_DWORD *)(a2 + 8); sub_4B13A0((void *)v17, a3); v18 = a7; *(_DWORD *)(v17 + 6572) = a4; *(_DWORD *)(v17 + 6508) = *(_DWORD *)a11; *(_DWORD *)(v17 + 6512) = *(_DWORD *)(a11 + 4); *(_DWORD *)(v17 + 6516) = *(_DWORD *)(a11 + 8); *(_DWORD *)(v17 + 6520) = *(_DWORD *)(a11 + 12); *(_DWORD *)(v17 + 6524) = *(_DWORD *)(a11 + 16); v23 = 0; if ( a7 <= 0 ) { sub_639100(&unk_86DDD8, (int)"MobRegenClass::MobBreederGroup::mbg_MobBreed : Minus mobnum", a7); v18 = -a7; } v24 = 0; if ( (unsigned int)v18 <= 0 ) { v21 = a9; LABEL_15: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_MobBreed"); result = v21; } else { while ( 1 ) { v19 = *(_WORD *)(v17 + 12); if ( (_WORD)v19 == -1 ) break; v25 = *(_WORD *)(v17 + 12); v20 = (void *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v17 + 8))(v17, v19); v21 = v20; if ( !v20 ) break; if ( (_BYTE)a9 ) { if ( !v23 ) v23 = (int)v20; } if ( !sub_4B57C0(v20, v17, a5, a6, v18, a8, a10, v23, a12, a13, a14, a15, a16, a17) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v17 + 12))(v17, v25); break; } ++v24; if ( v24 >= v18 ) goto LABEL_15; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobRegenClass::MobBreederGroup::mbg_MobBreed"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B5FD0) -------------------------------------------------------- void *__thiscall sub_4B5FD0(void *this, int a2, int a3, int a4, __int16 a5, int a6, int a7, int a8, void *a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17) { void *v17; // esi@1 int v18; // eax@1 void *v19; // eax@2 void *result; // eax@3 void *v21; // eax@4 void *v22; // esi@4 v17 = this; sub_4675D0((int)&unk_D020420, (int)"MobHatchery::mh_MobBreed"); dword_7508B8[dword_750CB8] = (int)"MobHatchery::mh_MobBreed"; dword_750AB8[dword_750CB8++] = -1; v18 = *(_WORD *)((char *)v17 + (_DWORD)&word_19B800C); if ( (_WORD)v18 != -1 && (v19 = (void *)(*(int (__stdcall **)(int))(*(_DWORD *)((char *)v17 + (_DWORD)&dword_19B8000) + 8))(v18)) != 0 ) { v21 = sub_4B5DE0(v19, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); --dword_750CB8; v22 = v21; sub_467660((int)&unk_D020420, (int)"MobHatchery::mh_MobBreed"); result = v22; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobHatchery::mh_MobBreed"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 19B8000: using guessed type int dword_19B8000; // 19B800C: using guessed type __int16 word_19B800C; //----- (004B6110) -------------------------------------------------------- void __thiscall sub_4B6110(int this) { void *v1; // ecx@1 *(_DWORD *)this = &off_6BF454; v1 = *(void **)(this + 8); if ( v1 ) sub_6530A4(v1); } // 6BF454: using guessed type int (__thiscall *off_6BF454)(void *, char); //----- (004B6130) -------------------------------------------------------- char __thiscall sub_4B6130(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 int v5; // edx@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004B6180) -------------------------------------------------------- void *__thiscall sub_4B6180(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6BF454; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6BF454: using guessed type int (__thiscall *off_6BF454)(void *, char); //----- (004B61C0) -------------------------------------------------------- int __thiscall sub_4B61C0(void *this, int a2) { void *v2; // esi@1 void *v3; // edi@3 int v4; // eax@5 int v6; // [sp-4h] [bp-20h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"HuntingLog::MobHuntElement::mhe_Send2Log"); dword_7508B8[dword_750CB8] = (int)"HuntingLog::MobHuntElement::mhe_Send2Log"; dword_750AB8[dword_750CB8++] = -1; if ( *((_WORD *)v2 + 1) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 1069; *(_DWORD *)((char *)v3 + 2) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); *((_WORD *)v3 + 3) = *(_WORD *)v2; *((_WORD *)v3 + 4) = *((_WORD *)v2 + 1); *(_DWORD *)((char *)v3 + 10) = *((_DWORD *)v2 + 1); if ( sub_4C81E0(&off_849C18, 14) ) { v4 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"HuntingLog::MobHuntElement::mhe_Send2Log : Packet Too Long", 14); } *((_WORD *)v2 + 1) = 0; *((_DWORD *)v2 + 1) = 0; --dword_750CB8; v6 = (int)"HuntingLog::MobHuntElement::mhe_Send2Log"; } else { --dword_750CB8; v6 = (int)"HuntingLog::MobHuntElement::mhe_Send2Log"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D148D0: using guessed type int dword_14D148D0; //----- (004B6300) -------------------------------------------------------- int __thiscall sub_4B6300(void *this, int a2) { void *v2; // edi@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // dx@2 int v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // ST14_2@3 bool v8; // zf@4 void **v9; // ecx@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"HuntLog::MobHuntLog::mhl_SendAll2Log"); dword_7508B8[dword_750CB8] = (int)"HuntLog::MobHuntLog::mhl_SendAll2Log"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 >= v4 || (v8 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v9 = (void **)(v5 + 12 * v6), v8) ) sub_4B61C0(0, a2); else sub_4B61C0(*v9, a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"HuntLog::MobHuntLog::mhl_SendAll2Log"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B6400) -------------------------------------------------------- char __thiscall sub_4B6400(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6A8FA4; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6A8FA4: using guessed type int (__stdcall *off_6A8FA4)(int, int); //----- (004B6580) -------------------------------------------------------- int __thiscall sub_4B6580(void *this, int a2, __int16 a3, int a4) { int v4; // esi@1 int v5; // eax@1 void *v6; // ecx@1 int v7; // eax@5 int (__stdcall **v9)(int, int); // [sp+Ch] [bp-30h]@1 int v10; // [sp+10h] [bp-2Ch]@1 int (__thiscall *v11)(void *, int, int, int); // [sp+14h] [bp-28h]@1 __int16 *v12; // [sp+18h] [bp-24h]@1 int v13; // [sp+1Ch] [bp-20h]@1 __int16 v14; // [sp+20h] [bp-1Ch]@1 __int16 v15; // [sp+24h] [bp-18h]@1 int v16; // [sp+2Ch] [bp-10h]@1 int v17; // [sp+38h] [bp-4h]@1 v4 = (int)this; v16 = (int)"HuntingLog::MobHuntLog::mhl_Logging"; sub_4675D0((int)&unk_D020420, (int)"HuntingLog::MobHuntLog::mhl_Logging"); dword_7508B8[dword_750CB8] = (int)"HuntingLog::MobHuntLog::mhl_Logging"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v15 = a3; v9 = &off_6BF4E0; v10 = v4; v11 = sub_486C70; v12 = &v15; v13 = 0; v14 = -1; LOBYTE(v17) = 1; sub_43C470(v4, (int)&v9); v5 = v13; LOBYTE(v17) = 0; v9 = &off_6A8710; v6 = (void *)v13; if ( v13 ) { *(_DWORD *)(v13 + 4) += a4; ++*(_WORD *)(v5 + 2); if ( *(_WORD *)(v5 + 2) >= 0xFDE8u ) sub_4B61C0(v6, a2); } else { if ( *(_WORD *)(v4 + 12) != -1 ) { v7 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 4))(v4, *(_WORD *)(v4 + 12)); if ( v7 ) { *(_WORD *)v7 = a3; *(_WORD *)(v7 + 2) = 1; *(_DWORD *)(v7 + 4) = a4; } } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"HuntingLog::MobHuntLog::mhl_Logging"); } // 6A8710: using guessed type int (__stdcall *off_6A8710)(int, int); // 6BF4E0: using guessed type int (__stdcall *off_6BF4E0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B66C0) -------------------------------------------------------- int __thiscall sub_4B66C0(int this, signed int a2) { int v2; // esi@1 signed int v3; // eax@1 int v4; // edx@2 int v5; // ecx@4 v2 = this; *(_DWORD *)this = &off_6BF454; *(_DWORD *)(this + 16) = 0; sub_4B6400(this, a2); *(_DWORD *)v2 = &off_6BF534; *(_DWORD *)(v2 + 24) = unknown_libname_130(8 * a2 | -((unsigned __int64)(unsigned int)a2 >> 29 != 0)); v3 = 0; if ( a2 > 0 ) { v4 = 0; do { if ( v3 < *(_WORD *)(v2 + 4) ) { v5 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v5 + v4) ) *(_DWORD *)(v5 + v4) = *(_DWORD *)(v2 + 24) + 8 * v3; } ++v3; v4 += 12; } while ( v3 < a2 ); } return v2; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BF454: using guessed type int (__thiscall *off_6BF454)(void *, char); // 6BF534: using guessed type int (__thiscall *off_6BF534)(void *, char); //----- (004B6770) -------------------------------------------------------- int __thiscall sub_4B6770(int this) { int v1; // esi@1 v1 = this; sub_4B66C0(this, 50); *(_DWORD *)v1 = &off_6BF558; return v1; } // 6BF558: using guessed type int (__thiscall *off_6BF558)(void *, char); //----- (004B6790) -------------------------------------------------------- signed int __thiscall sub_4B6790(void *this) { signed int result; // eax@1 result = 1; *(_WORD *)this = 1; return result; } //----- (004B67A0) -------------------------------------------------------- int __thiscall sub_4B67A0(int this) { return *(_DWORD *)(this + 7952); } //----- (004B67B0) -------------------------------------------------------- char __thiscall sub_4B67B0(int this) { return (*(_BYTE *)(this + 9476) >> 3) & 1; } //----- (004B67C0) -------------------------------------------------------- int __cdecl sub_4B67C0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 49); i = *(_DWORD *)i ) result = i; return result; } //----- (004B67E0) -------------------------------------------------------- void *__thiscall sub_4B67E0(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 49) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 49) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 49) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 49) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 49) ) goto LABEL_11; return result; } //----- (004B6840) -------------------------------------------------------- char __thiscall sub_4B6840(void *this, int a2) { void *v2; // esi@1 unsigned int v3; // eax@1 __int16 v4; // cx@2 signed int v5; // edx@2 int v6; // ebx@2 __int16 v7; // cx@3 char v9[4]; // [sp+8h] [bp-2Ch]@5 int v10; // [sp+Ch] [bp-28h]@5 int v11; // [sp+10h] [bp-24h]@5 int v12; // [sp+14h] [bp-20h]@5 int v13; // [sp+18h] [bp-1Ch]@5 char v14[4]; // [sp+1Ch] [bp-18h]@5 int v15; // [sp+20h] [bp-14h]@5 int v16; // [sp+24h] [bp-10h]@5 int v17; // [sp+28h] [bp-Ch]@5 int v18; // [sp+2Ch] [bp-8h]@5 unsigned int v19; // [sp+30h] [bp-4h]@1 int v20; // [sp+34h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v2 = this; LOWORD(v3) = *(_WORD *)this; if ( *(_WORD *)this & 0x8000 ) { if ( v3 & 0x7FFF ) *(_WORD *)this = v3 ^ (v3 ^ (v3 - 1)) & 0x7FFF; else *(_WORD *)this = 1; } else { v4 = v3 ^ (v3 ^ (v3 + 1)) & 0x7FFF; *(_WORD *)v2 = v4; v5 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2)) >> 32) >> 3; v6 = v4 & 0x7FFF; if ( v6 < v5 + ((unsigned int)v5 >> 31) ) { v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, (const char *)(42 * v6 + *(_DWORD *)a2 + 10), 0x14u); v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)v14 = 0; strncpy(v14, "-", 0x14u); if ( *(_DWORD *)v9 != *(_DWORD *)v14 || v10 != v15 || v11 != v16 || (LOBYTE(v3) = v12, v12 != v17) || v13 != v18 ) { v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)v14 = 0; strncpy(v14, "return", 0x14u); if ( sub_427B00((int)v9, (int)v14) ) { *(_WORD *)v2 |= 0x8000u; v3 = (unsigned int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2)) >> 32) >> 31; *(_WORD *)v2 ^= (*(_WORD *)v2 ^ ((*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 42 - 2)) & 0x7FFF; } else { sub_418AC0(v14, "rotate"); LOBYTE(v3) = sub_427B00((int)v9, (int)v14); if ( (_BYTE)v3 ) { LOBYTE(v3) = 0; *(_WORD *)v2 = 0; } } } } else { v7 = v4 | 0x8000; *(_WORD *)v2 = v7; v3 = (unsigned int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2)) >> 32) >> 31; *(_WORD *)v2 = v7 ^ (v7 ^ ((*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 42 - 2)) & 0x7FFF; } } return v3; } // 86FEB8: using guessed type int __security_cookie; //----- (004B6A50) -------------------------------------------------------- int __thiscall sub_4B6A50(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_RoamingPathSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_RoamingPathSet"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 1988) = a2; if ( a2 ) *((_WORD *)v2 + 3978) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_RoamingPathSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B6AD0) -------------------------------------------------------- char __thiscall sub_4B6AD0(void *this, signed int *a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // ecx@1 char result; // al@2 int v8; // edi@3 int v9; // eax@5 int v10; // edi@5 int v11; // ecx@6 int v12; // eax@6 int v13; // edx@6 signed int v14; // ecx@7 int v15; // ecx@7 int v16; // eax@7 int v17; // [sp+14h] [bp-10h]@5 v5 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_NextPathPoint"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_NextPathPoint"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a5 = 0; *(_DWORD *)a3 = 0; *a2 = 0; v6 = *(_DWORD *)(v5 + 7952); if ( v6 ) { v8 = *(_WORD *)(v5 + 7956) & 0x7FFF; if ( (*(_DWORD *)(v6 + 4) - *(_DWORD *)v6) / 42 > (unsigned int)v8 ) { v9 = 42 * v8; v10 = *(_DWORD *)(*(_DWORD *)v6 + 42 * v8 + 2); v17 = *(_DWORD *)(*(_DWORD *)v6 + v9 + 6); if ( (unsigned int)sub_4012A0(v5, v10, v17) <= 0x64 ) { sub_4B6840((void *)(v5 + 7956), *(_DWORD *)(v5 + 7952)); v11 = *(_DWORD *)(v5 + 7952); v12 = 42 * (*(_WORD *)(v5 + 7956) & 0x7FFF); v10 = *(_DWORD *)(*(_DWORD *)v11 + v12 + 2); v13 = *(_DWORD *)(v12 + *(_DWORD *)v11 + 6); *(_BYTE *)(v5 + 9476) &= 0xF7u; v17 = v13; *(_BYTE *)a5 = 1; } *a2 = v10 - *(_DWORD *)sub_552F20(v5); v14 = v17 - *(_DWORD *)(sub_552F20(v5) + 4); *(_DWORD *)a3 = v14; *(_DWORD *)a4 = sub_4011C0(&unk_AF09DA8, *a2, v14); v15 = *(_DWORD *)(v5 + 7952); v16 = 42 * (*(_WORD *)(v5 + 7956) & 0x7FFF); *(_DWORD *)(v5 + 9460) = *(_DWORD *)(v16 + *(_DWORD *)v15 + 2); *(_DWORD *)(v5 + 9464) = *(_DWORD *)(v16 + *(_DWORD *)v15 + 6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_NextPathPoint"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_NextPathPoint"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_NextPathPoint"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B6CE0) -------------------------------------------------------- int __thiscall sub_4B6CE0(int this) { int v1; // esi@1 signed int v2; // edx@2 int v3; // edi@2 int result; // eax@2 v1 = *(_DWORD *)(this + 7952); if ( v1 ) { v2 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v1 + 4) - *(_DWORD *)v1)) >> 32) >> 3; v3 = *(_WORD *)(this + 7956) & 0x7FFF; result = v2 + ((unsigned int)v2 >> 31); if ( result > (unsigned int)v3 ) { *(_DWORD *)(this + 9460) = *(_DWORD *)(*(_DWORD *)v1 + 42 * v3 + 2); result = *(_DWORD *)(*(_DWORD *)v1 + 42 * v3 + 6); *(_DWORD *)(this + 9464) = result; } } return result; } //----- (004B6D40) -------------------------------------------------------- int __thiscall sub_4B6D40(int this, int a2) { int result; // eax@1 int v3; // ecx@1 int v4; // ebx@2 int v5; // edx@3 int v6; // edx@4 int v7; // edx@5 int v8; // esi@5 int v9; // edx@7 int v10; // esi@7 int v11; // edx@9 int v12; // esi@9 result = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(result + 4); if ( !*(_BYTE *)(v3 + 49) ) { v4 = *(_DWORD *)(a2 + 16); do { v5 = *(_DWORD *)(v3 + 28); if ( v5 == v4 ) { v7 = *(_DWORD *)(v3 + 32); v8 = *(_DWORD *)(a2 + 20); if ( v7 == v8 ) { v9 = *(_DWORD *)(v3 + 36); v10 = *(_DWORD *)(a2 + 24); if ( v9 == v10 ) { v11 = *(_DWORD *)(v3 + 40); v12 = *(_DWORD *)(a2 + 28); if ( v11 == v12 ) v6 = *(_DWORD *)(v3 + 44) - *(_DWORD *)(a2 + 32); else v6 = v11 - v12; } else { v6 = v9 - v10; } } else { v6 = v7 - v8; } } else { v6 = v5 - v4; } if ( v6 >= 0 ) { result = v3; v3 = *(_DWORD *)v3; } else { v3 = *(_DWORD *)(v3 + 8); } } while ( !*(_BYTE *)(v3 + 49) ); } return result; } //----- (004B6DB0) -------------------------------------------------------- int __thiscall sub_4B6DB0(void *this, int a2) { int result; // eax@1 int v3; // edx@2 result = *(_DWORD *)this; if ( *(_DWORD *)this != *((_DWORD *)this + 1) ) { v3 = *(_DWORD *)(result + 2); result = a2; *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 4) = *(_DWORD *)(*(_DWORD *)this + 6); } return result; } //----- (004B6DD0) -------------------------------------------------------- void *__cdecl sub_4B6DD0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 42 ) { if ( result ) memcpy(result, v3, 0x2Au); v3 = (char *)v3 + 42; } return result; } //----- (004B6E10) -------------------------------------------------------- int __thiscall sub_4B6E10(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // edi@1 int v7; // ecx@2 int v8; // edx@2 int v9; // esi@3 int v10; // ecx@4 int v11; // edx@4 int v12; // ecx@6 int v13; // edx@6 int v14; // ecx@8 int v15; // edx@8 int result; // eax@12 int v17; // [sp+18h] [bp+Ch]@1 v3 = a3; v4 = this; v5 = sub_4B6D40(this, a3); v6 = *(_DWORD *)(v4 + 4); v17 = v5; if ( v5 == v6 || ((v7 = *(_DWORD *)(v3 + 16), v8 = *(_DWORD *)(v5 + 28), v7 == v8) ? ((v10 = *(_DWORD *)(v3 + 20), v11 = *(_DWORD *)(v5 + 32), v10 == v11) ? ((v12 = *(_DWORD *)(v3 + 24), v13 = *(_DWORD *)(v5 + 36), v12 == v13) ? ((v14 = *(_DWORD *)(v3 + 28), v15 = *(_DWORD *)(v5 + 40), v14 == v15) ? (v9 = *(_DWORD *)(v3 + 32) - *(_DWORD *)(v5 + 44)) : (v9 = v14 - v15)) : (v9 = v12 - v13)) : (v9 = v10 - v11)) : (v9 = v7 - v8), v9 < 0) ) { result = a2; *(_DWORD *)a2 = v6; } else { result = a2; *(_DWORD *)a2 = v17; } return result; } //----- (004B6EA0) -------------------------------------------------------- void *__thiscall sub_4B6EA0(void *this, int a2) { void *v2; // edi@1 int i; // esi@1 const void *v4; // ecx@3 void *v5; // esi@3 void *result; // eax@3 v2 = this; for ( i = *(_DWORD *)this; i != *((_DWORD *)v2 + 1); i += 4 ) (*(void (__stdcall **)(int))(**(_DWORD **)i + 2576))(a2); v4 = (const void *)*((_DWORD *)v2 + 1); v5 = *(void **)v2; result = (void *)((*((_DWORD *)v2 + 1) - *(_DWORD *)v2) >> 2); if ( result ) { if ( v5 != v4 ) { result = memmove_0(v5, v4, 0); *((_DWORD *)v2 + 1) = v5; } } return result; } //----- (004B6F10) -------------------------------------------------------- int __thiscall sub_4B6F10(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 const void *v5; // ecx@4 const void *v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 42; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_6186186 ) sub_65178B((int)"vector too long"); v4 = sub_5ADD30(v3); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 42 * v3; v5 = *(const void **)(a2 + 4); v6 = *(const void **)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_4B6DD0(v6, v5, (void *)v4); } return v2; } //----- (004B6FD2) -------------------------------------------------------- void __usercall sub_4B6FD2(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004B6FF0) -------------------------------------------------------- int __thiscall sub_4B6FF0(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int v5; // ecx@1 int v6; // edx@1 int v7; // esi@1 int v8; // esi@2 int result; // eax@2 int v10; // [sp+8h] [bp-38h]@1 int v11; // [sp+Ch] [bp-34h]@1 int v12; // [sp+10h] [bp-30h]@1 int v13; // [sp+14h] [bp-2Ch]@1 int v14; // [sp+1Ch] [bp-24h]@1 int v15; // [sp+20h] [bp-20h]@1 int v16; // [sp+24h] [bp-1Ch]@1 int v17; // [sp+28h] [bp-18h]@1 int v18; // [sp+2Ch] [bp-14h]@1 unsigned int v19; // [sp+30h] [bp-10h]@1 int v20; // [sp+3Ch] [bp-4h]@1 int v21; // [sp+40h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MobRoaming::MobRoamingSet::mrs_Get"); dword_7508B8[dword_750CB8] = (int)"MobRoaming::MobRoamingSet::mrs_Get"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v12 = 0; v13 = 0; v3 = *(_DWORD *)(a2 + 4); v14 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 8); v15 = v3; v5 = *(_DWORD *)(a2 + 12); v16 = v4; v6 = *(_DWORD *)(a2 + 16); v17 = v5; v18 = v6; sub_4B6E10(v2, (int)&v10, (int)&v11); v7 = *(_DWORD *)(v2 + 4); --dword_750CB8; v20 = -1; if ( v10 == v7 ) { sub_467660((int)&unk_D020420, (int)"MobRoaming::MobRoamingSet::mrs_Get"); result = 0; } else { v8 = v10 + 12; sub_467660((int)&unk_D020420, (int)"MobRoaming::MobRoamingSet::mrs_Get"); result = v8; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004B70E0) -------------------------------------------------------- void __thiscall sub_4B70E0(int this, const void *a2) { const void *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 void *v7; // edi@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( (unsigned int)a2 >= v4 || *(_DWORD *)v3 > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(v3 + 8) ) sub_5B3C10(v3, 1); } else { v5 = (signed int)((unsigned __int64)(818089009i64 * (signed int)((char *)a2 - *(_DWORD *)v3)) >> 32) >> 3; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_5B3C10(v3, 1); v2 = (const void *)(*(_DWORD *)v3 + 42 * v6); } v7 = *(void **)(v3 + 4); if ( v7 ) memcpy(v7, v2, 0x2Au); *(_DWORD *)(v3 + 4) += 42; } //----- (004B7150) -------------------------------------------------------- int __thiscall sub_4B7150(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // ebx@3 int v6; // [sp+0h] [bp-38h]@1 int (__thiscall **v7)(void *, char); // [sp+10h] [bp-28h]@6 int v8; // [sp+1Ch] [bp-1Ch]@2 int v9; // [sp+20h] [bp-18h]@2 void *v10; // [sp+24h] [bp-14h]@1 int *v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@2 v11 = &v6; v2 = this; v3 = operator new(0x34u); v10 = (void *)v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v7 = &off_6A1FD4; _CxxThrowException(&v7, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(v3 + 48) = 0; v12 = 0; v9 = v3 + 12; v8 = v3 + 12; LOBYTE(v12) = 1; if ( v3 != -12 ) { v4 = a2; sub_4B6F10(v3 + 12, a2); *(_DWORD *)(v3 + 28) = *(_DWORD *)(v4 + 16); *(_DWORD *)(v3 + 32) = *(_DWORD *)(v4 + 20); *(_DWORD *)(v3 + 36) = *(_DWORD *)(v4 + 24); *(_DWORD *)(v3 + 40) = *(_DWORD *)(v4 + 28); *(_DWORD *)(v3 + 44) = *(_DWORD *)(v4 + 32); } return v3; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004B7240) -------------------------------------------------------- int __thiscall sub_4B7240(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@6 int v7; // edx@6 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@13 int v11; // edx@14 int v12; // esi@14 int v13; // esi@15 int v14; // edx@18 int v15; // esi@20 int v16; // esi@22 int v17; // edx@26 int v18; // esi@26 int v19; // edi@26 int v20; // edi@28 int v21; // edi@30 int v22; // esi@33 void *v23; // edx@36 int v24; // esi@36 int v25; // esi@38 int v26; // esi@40 int v27; // edi@46 int v28; // edi@48 int v29; // ecx@54 int result; // eax@54 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_71C71C6 ) { if ( *((_DWORD *)a5 + 3) ) operator delete(*((void **)a5 + 3)); *((_DWORD *)a5 + 3) = 0; *((_DWORD *)a5 + 4) = 0; *((_DWORD *)a5 + 5) = 0; operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; v8 = *(_DWORD *)(this + 4); LABEL_12: *(_DWORD *)(v8 + 8) = a5; goto LABEL_13; } if ( !a3 ) { *(_DWORD *)(a4 + 8) = a5; v8 = *(_DWORD *)(this + 4); if ( a4 != *(_DWORD *)(v8 + 8) ) goto LABEL_13; goto LABEL_12; } *(_DWORD *)a4 = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v9 ) *(_DWORD *)v9 = a5; LABEL_13: v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 48) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 48) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 49) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 49) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_52: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 48) = 1; *(_BYTE *)(v13 + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 48) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 49) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 49) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_52; } *(_BYTE *)(v11 + 48) = 1; *(_BYTE *)(v22 + 48) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 48) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 48) = 1; return result; } //----- (004B7480) -------------------------------------------------------- int __thiscall sub_4B7480(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 unsigned int v16; // eax@61 int result; // eax@63 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 49) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_466CB0(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 49) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 49) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 49) ) { v9 = v6; } else { v9 = sub_4B67C0(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 49) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_466C90(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 49) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 49) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 48); *(_BYTE *)(v5 + 48) = *(_BYTE *)(v3 + 48); *(_BYTE *)(v3 + 48) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 48) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 48) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 48) ) { *(_BYTE *)(v15 + 48) = 1; *(_BYTE *)(v6 + 48) = 0; sub_466D00(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 49) ) goto LABEL_53; 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; sub_466D60(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 48) = *(_BYTE *)(v6 + 48); *(_BYTE *)(v6 + 48) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) = 1; sub_466D00(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 48) ) { *(_BYTE *)(v15 + 48) = 1; *(_BYTE *)(v6 + 48) = 0; sub_466D60(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 49) ) goto LABEL_53; 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; sub_466D00(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 48) = *(_BYTE *)(v6 + 48); *(_BYTE *)(v6 + 48) = 1; *(_BYTE *)(*(_DWORD *)v15 + 48) = 1; sub_466D60(i, v6); break; } } *(_BYTE *)(v15 + 48) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 48) = 1; } if ( *(_DWORD *)(v18 + 12) ) operator delete(*(void **)(v18 + 12)); *(_DWORD *)(v18 + 12) = 0; *(_DWORD *)(v18 + 16) = 0; *(_DWORD *)(v18 + 20) = 0; operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 > 0 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (004B76F0) -------------------------------------------------------- void __stdcall sub_4B76F0(void *a1) { void *v1; // esi@1 void *i; // edi@1 int v3; // ecx@2 v1 = a1; for ( i = a1; !*((_BYTE *)i + 49); v1 = i ) { sub_4B76F0(*((void **)i + 2)); i = *(void **)i; v3 = 0; if ( *((_DWORD *)v1 + 3) ) { operator delete(*((void **)v1 + 3)); v3 = 0; } *((_DWORD *)v1 + 3) = v3; *((_DWORD *)v1 + 4) = v3; *((_DWORD *)v1 + 5) = v3; operator delete(v1); } } //----- (004B7750) -------------------------------------------------------- int __thiscall sub_4B7750(int this, int a2, void *a3, int a4) { int v4; // edx@1 int v5; // ecx@1 int v6; // eax@1 void *v7; // esi@1 int v8; // ebx@1 bool v9; // cl@1 int v10; // edi@2 int v11; // ecx@4 int v12; // ecx@6 int v13; // edx@6 int v14; // ecx@8 int v15; // edx@8 int v16; // ecx@10 int v17; // edx@10 int v18; // edx@13 int v19; // ecx@14 int v20; // ecx@15 int v21; // edx@15 int v22; // ecx@17 int v23; // edx@17 int v24; // ecx@19 int v25; // edx@19 int v26; // edi@28 int v27; // ecx@30 int v28; // edx@31 int result; // eax@31 int v30; // eax@33 int v31; // ecx@33 int v32; // eax@34 int v33; // eax@35 int v34; // ecx@35 int v35; // eax@37 int v36; // ecx@37 int v37; // eax@39 int v38; // ecx@39 int v39; // ecx@42 int v40; // [sp-10h] [bp-20h]@30 char v41; // [sp-Ch] [bp-1Ch]@30 int v42; // [sp-8h] [bp-18h]@30 void *v43; // [sp-4h] [bp-14h]@30 int v44; // [sp+Ch] [bp-4h]@1 char v45; // [sp+1Ch] [bp+Ch]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = a3; v8 = v5; v9 = 1; v44 = v4; v45 = 1; if ( !*(_BYTE *)(v6 + 49) ) { v10 = *((_DWORD *)v7 + 7); do { v8 = v6; if ( (_BYTE)a4 ) { v11 = *(_DWORD *)(v6 + 28); if ( v11 == v10 ) { v12 = *(_DWORD *)(v6 + 32); v13 = *((_DWORD *)v7 + 8); if ( v12 == v13 ) { v14 = *(_DWORD *)(v6 + 36); v15 = *((_DWORD *)v7 + 9); if ( v14 == v15 ) { v16 = *(_DWORD *)(v6 + 40); v17 = *((_DWORD *)v7 + 10); if ( v16 == v17 ) v9 = *(_DWORD *)(v6 + 44) - *((_DWORD *)v7 + 11) >= 0; else v9 = v16 - v17 >= 0; } else { v9 = v14 - v15 >= 0; } } else { v9 = v12 - v13 >= 0; } } else { v9 = v11 - v10 >= 0; } } else { v18 = *(_DWORD *)(v6 + 28); if ( v10 == v18 ) { v20 = *((_DWORD *)v7 + 8); v21 = *(_DWORD *)(v6 + 32); if ( v20 == v21 ) { v22 = *((_DWORD *)v7 + 9); v23 = *(_DWORD *)(v6 + 36); if ( v22 == v23 ) { v24 = *((_DWORD *)v7 + 10); v25 = *(_DWORD *)(v6 + 40); if ( v24 == v25 ) v19 = *((_DWORD *)v7 + 11) - *(_DWORD *)(v6 + 44); else v19 = v24 - v25; } else { v19 = v22 - v23; } } else { v19 = v20 - v21; } } else { v19 = v10 - v18; } v9 = v19 < 0; } v45 = v9; if ( v9 ) v6 = *(_DWORD *)v6; else v6 = *(_DWORD *)(v6 + 8); } while ( !*(_BYTE *)(v6 + 49) ); v4 = v44; } v26 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v4 + 4) ) { v43 = v7; v42 = v8; v41 = 1; v40 = (int)&a4; v27 = v4; LABEL_31: v28 = *(_DWORD *)sub_4B7240(v27, v40, v41, v42, v43); result = a2; *(_DWORD *)a2 = v28; *(_BYTE *)(a2 + 4) = 1; return result; } sub_4B67E0(&a4); v26 = a4; } v30 = *(_DWORD *)(v26 + 28); v31 = *((_DWORD *)v7 + 7); if ( v30 == v31 ) { v33 = *(_DWORD *)(v26 + 32); v34 = *((_DWORD *)v7 + 8); if ( v33 == v34 ) { v35 = *(_DWORD *)(v26 + 36); v36 = *((_DWORD *)v7 + 9); if ( v35 == v36 ) { v37 = *(_DWORD *)(v26 + 40); v38 = *((_DWORD *)v7 + 10); if ( v37 == v38 ) v32 = *(_DWORD *)(v26 + 44) - *((_DWORD *)v7 + 11); else v32 = v37 - v38; } else { v32 = v35 - v36; } } else { v32 = v33 - v34; } } else { v32 = v30 - v31; } v39 = 0; if ( v32 < 0 ) { v43 = v7; v42 = v8; v41 = v45; v40 = (int)&a4; v27 = v44; goto LABEL_31; } if ( *((_DWORD *)v7 + 3) ) { operator delete(*((void **)v7 + 3)); v39 = 0; } *((_DWORD *)v7 + 3) = v39; *((_DWORD *)v7 + 4) = v39; *((_DWORD *)v7 + 5) = v39; operator delete(v7); result = a2; *(_DWORD *)a2 = v26; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (004B7910) -------------------------------------------------------- int __thiscall sub_4B7910(void *this, int a2, int a3) { int v3; // edi@1 int result; // eax@1 int v5; // eax@2 int v6; // eax@2 int v7; // eax@2 int v8; // eax@3 int v9; // ecx@4 int v10; // edx@4 int v11; // eax@4 int v12; // ecx@4 int v13; // eax@4 int v14; // eax@4 int v15; // edx@4 int v16; // ecx@4 int v17; // edx@4 int v18; // eax@4 bool v19; // zf@4 int v20; // eax@4 int i; // esi@6 int v22; // eax@7 int v23; // esi@9 int v24; // [sp-28h] [bp-10964h]@7 int v25; // [sp-24h] [bp-10960h]@7 int v26; // [sp-20h] [bp-1095Ch]@7 int v27; // [sp-1Ch] [bp-10958h]@7 int v28; // [sp-18h] [bp-10954h]@7 int v29; // [sp-14h] [bp-10950h]@2 unsigned int v30; // [sp-10h] [bp-1094Ch]@1 char v31; // [sp+0h] [bp-1093Ch]@4 int v32; // [sp+4h] [bp-10938h]@4 int *v33; // [sp+8h] [bp-10934h]@7 int v34; // [sp+Ch] [bp-10930h]@2 bool v35; // [sp+13h] [bp-10929h]@4 char v36; // [sp+14h] [bp-10928h]@2 int v37; // [sp+10868h] [bp-D4h]@4 int v38; // [sp+1086Ch] [bp-D0h]@4 int v39; // [sp+10870h] [bp-CCh]@4 int v40; // [sp+10878h] [bp-C4h]@4 int v41; // [sp+1087Ch] [bp-C0h]@4 int v42; // [sp+10880h] [bp-BCh]@4 int v43; // [sp+10884h] [bp-B8h]@4 int v44; // [sp+10888h] [bp-B4h]@4 char v45; // [sp+1088Ch] [bp-B0h]@2 char v46; // [sp+1090Ch] [bp-30h]@2 unsigned int v47; // [sp+1092Ch] [bp-10h]@1 int v48; // [sp+10938h] [bp-4h]@2 int v49; // [sp+1093Ch] [bp+0h]@1 v47 = (unsigned int)&v49 ^ __security_cookie; v30 = (unsigned int)&v49 ^ __security_cookie; v3 = (int)this; result = sub_4B6FF0(this, a3); if ( !result ) { sub_6432E0((int)&v36); v5 = dword_8622C4 & (dword_8622C0 + 1); v48 = 0; dword_8622C0 = v5; v6 = (int)&byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)a2; *(_DWORD *)(v6 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v6 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v6 + 12) = *(_DWORD *)(a2 + 12); v29 = (int)&v46; v34 = v6; *(_BYTE *)(v6 + 16) = 0; v7 = sub_649DA0(a3, v29); sprintf(&v45, "../9Data/Shine/World/%s/MobRoam/%s.txt", v34, v7); if ( sub_6434A0(&v36, &v45) || (sub_642780(&v36), v8 = sub_649DA0(a3, (int)&v46), sprintf(&v45, "../9Data/Shine/MobRoam/%s.txt", v8), !sub_6434A0(&v36, &v45)) ) { v48 = -1; sub_643080(&v36); result = 0; } else { v9 = *(_DWORD *)(a3 + 4); v10 = *(_DWORD *)(a3 + 8); v40 = *(_DWORD *)a3; v11 = *(_DWORD *)(a3 + 12); v41 = v9; v12 = *(_DWORD *)(a3 + 16); v37 = 0; v38 = 0; v39 = 0; v42 = v10; v43 = v11; v44 = v12; LOBYTE(v48) = 1; v13 = sub_4B7150((void *)v3, (int)&v37); sub_4B7750(v3, (int)&v32, (void *)v13, 0); v14 = *(_DWORD *)(a3 + 8); v15 = *(_DWORD *)(a3 + 4); v40 = *(_DWORD *)a3; v16 = *(_DWORD *)(a3 + 12); v42 = v14; v43 = v16; v29 = (int)&v37; v41 = v15; v17 = *(_DWORD *)(a3 + 16); LOBYTE(v48) = 0; v37 = 0; v38 = 0; v39 = 0; v44 = v17; v18 = *(_DWORD *)sub_4B6E10(v3, (int)&v31, (int)&v37); v19 = v18 == *(_DWORD *)(v3 + 4); v34 = v18; v35 = !v19; v20 = sub_649DA0(a3, (int)&v46); if ( !v35 ) { sub_6390B0(&unk_86DDD8, (int)"MobRoaming::MobRoamingSet::mrs_Load : Error in load", v20); loc_6391B0("MobRoaming::MobRoamingSet::mrs_Load"); } for ( i = 0; ; ++i ) { v29 = i; v33 = &v24; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; strncpy((char *)&v24, "Roaming", 0x14u); v22 = sub_6442C0(&v36, v24, v25, v26, v27, v28, v29); if ( !v22 ) break; sub_4B70E0(v34 + 12, (const void *)v22); } v23 = v34; v48 = -1; sub_643080(&v36); result = v23 + 12; } } return result; } // 642780: using guessed type int __thiscall sub_642780(_DWORD); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (004B7BC0) -------------------------------------------------------- int __thiscall sub_4B7BC0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 49) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 49) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 49); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_4B7480((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_4B76F0(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (004B7C80) -------------------------------------------------------- void __thiscall sub_4B7C80(void *this, int a2) { char v2; // bl@1 int v3; // eax@1 int i; // ebx@3 int v5; // edi@4 int v6; // [sp-34h] [bp-108B8h]@4 int v7; // [sp-30h] [bp-108B4h]@4 int v8; // [sp-2Ch] [bp-108B0h]@4 int v9; // [sp-28h] [bp-108ACh]@4 int v10; // [sp-24h] [bp-108A8h]@4 const char *v11; // [sp-20h] [bp-108A4h]@4 int v12; // [sp-1Ch] [bp-108A0h]@4 int v13; // [sp-18h] [bp-1089Ch]@4 int v14; // [sp-14h] [bp-10898h]@4 unsigned int v15; // [sp-10h] [bp-10894h]@1 int v16; // [sp+0h] [bp-10884h]@4 void *v17; // [sp+4h] [bp-10880h]@1 int *v18; // [sp+8h] [bp-1087Ch]@4 char v19; // [sp+Ch] [bp-10878h]@1 char v20[4]; // [sp+10860h] [bp-24h]@7 int v21; // [sp+10864h] [bp-20h]@7 int v22; // [sp+10868h] [bp-1Ch]@7 int v23; // [sp+1086Ch] [bp-18h]@7 int v24; // [sp+10870h] [bp-14h]@7 unsigned int v25; // [sp+10874h] [bp-10h]@1 int v26; // [sp+10880h] [bp-4h]@1 int v27; // [sp+10884h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v15 = (unsigned int)&v27 ^ __security_cookie; v17 = this; sub_6432E0((int)&v19); v26 = 0; v2 = sub_6434A0(&v19, "../9Data/Shine/World/PineScript.txt"); v3 = sub_642790(&v19); if ( !v2 ) { sub_639100(&unk_86DDD8, (int)"MobRoaming::MobRoamingSet::mrs_Load : Option read error", v3); loc_6391B0("MobRoaming::MobRoamingSet::mrs_Load"); } for ( i = 0; ; ++i ) { v14 = (int)&v16; v13 = i; v12 = 0; v11 = byte_6A492E; v18 = &v6; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; strncpy((char *)&v6, "RoamingData", 0x14u); v5 = sub_644C30(&v19, "RoamingFile", v6, v7, v8, v9, v10, v11, v12, v13, v14); if ( !v5 ) break; if ( v16 != 2 ) { sub_639100(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_LoadScripts : Type error", v16); loc_6391B0("ScenarioBookShelf::sbs_LoadScripts"); } v24 = 0; v23 = 0; v22 = 0; v21 = 0; *(_DWORD *)v20 = 0; strncpy(v20, (const char *)v5, 0x14u); if ( sub_4B7910(v17, a2, (int)v20) == 0 ) { sub_6390B0(&unk_86DDD8, (int)"MobRoaming::MobRoamingSet::mrs_Load : Roaming Data(in PineScript.txt)not found", v5); loc_6391B0("ScenarioBookShelf::sbs_LoadScripts"); } } v26 = -1; sub_643080(&v19); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004B7E20) -------------------------------------------------------- int __thiscall sub_4B7E20(int this) { int v1; // esi@1 int v2; // eax@1 char v3; // al@2 int v4; // edx@2 int v5; // eax@3 int v6; // ecx@3 _BYTE *v7; // ecx@3 int result; // eax@4 char v9; // al@5 int v10; // ecx@5 int v11; // eax@6 v1 = this; v2 = *(_DWORD *)(this + 4); if ( !*(_DWORD *)(v2 + 8) ) return 0; v3 = (*(int (__stdcall **)(signed int))(**(_DWORD **)(v2 + 8) + 996))(291); v4 = **(_DWORD **)(*(_DWORD *)(v1 + 4) + 8); if ( v3 ) { v5 = (*(int (**)(void))(v4 + 1388))(); v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); *((_DWORD *)v7 + 4) = *(_DWORD *)(v5 + 16); v7[20] = 0; return 0; } v9 = (*(int (__stdcall **)(signed int))(v4 + 996))(499); v10 = *(_DWORD *)(v1 + 4); if ( v9 ) { v11 = (*(int (**)(void))(**(_DWORD **)(v10 + 8) + 1388))(); sub_418B40((int)byte_85A2C0, v11); result = 0; } else { result = *(_DWORD *)(v10 + 8); } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (004B7ED0) -------------------------------------------------------- void *__thiscall sub_4B7ED0(int this) { void *result; // eax@1 result = sub_447910( (int)&unk_132577A0, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 8) + 12 * *(_DWORD *)(this + 8192) + 4)); if ( result ) result = (void *)((unsigned int)((unsigned int)(10 * *(_DWORD *)(*((_DWORD *)result + 1) + 203)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); return result; } //----- (004B7F20) -------------------------------------------------------- int __thiscall sub_4B7F20(int this, __int16 a2) { int result; // eax@1 int v3; // edx@2 __int16 v4; // [sp+0h] [bp-108h]@3 __int16 v5; // [sp+2h] [bp-106h]@3 unsigned int v6; // [sp+104h] [bp-4h]@1 int v7; // [sp+108h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; result = this; if ( a2 != *(_WORD *)(this + 9478) ) { v3 = *(_DWORD *)(this + 122); *(_WORD *)(this + 9478) = a2; if ( v3 ) { v4 = *(_WORD *)(this + 4); result = 65535; v5 = a2; if ( a2 != -1 ) result = sub_5070A0(*(void **)(v3 + 68), (int)sub_50AF20, (int)&v4); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004B7F90) -------------------------------------------------------- int __thiscall sub_4B7F90(int this, int a2) { int result; // eax@1 result = this; **(_DWORD **)(this + 4) = a2; return result; } //----- (004B7FB0) -------------------------------------------------------- int __thiscall sub_4B7FB0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 v4 = this; *(_DWORD *)(this + 12) = a4; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 4) = a2; v5 = (*(int (**)(void))(*(_DWORD *)a2 + 1548))(); *(_DWORD *)(v4 + 16) = *(_DWORD *)v5; *(_DWORD *)(v4 + 20) = *(_DWORD *)(v5 + 4); return v4; } //----- (004B7FF0) -------------------------------------------------------- int __thiscall sub_4B7FF0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@2 int v6; // eax@3 __int16 v7; // ax@4 int result; // eax@5 v4 = this; *(_DWORD *)(this + 8) = a4; *(_DWORD *)(this + 4) = a2; if ( a3 && (v5 = (*(int (**)(void))(*(_DWORD *)a3 + 1804))()) != 0 && (v6 = *(_DWORD *)(v5 + 4)) != 0 && (v7 = *(_WORD *)(v6 + 156), (*(_WORD *)(v4 + 12) = v7) != 0) ) { *(_DWORD *)(v4 + 16) = dword_14D129E8; result = v4; } else { result = a2; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004B8050) -------------------------------------------------------- signed int __thiscall sub_4B8050(int this) { int v1; // eax@1 signed int result; // eax@2 v1 = **(_DWORD **)(this + 4); if ( v1 ) result = *(_WORD *)(v1 + 4); else result = 65535; return result; } //----- (004B8070) -------------------------------------------------------- int __thiscall sub_4B8070(int this) { return **(_DWORD **)(this + 4); } //----- (004B8080) -------------------------------------------------------- void __thiscall sub_4B8080(void *this) { *(_DWORD *)this = off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); //----- (004B8090) -------------------------------------------------------- void *__thiscall sub_4B8090(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF7F8; return result; } // 6BF7F8: using guessed type int (__stdcall *off_6BF7F8[2])(int); //----- (004B80A0) -------------------------------------------------------- void *__thiscall sub_4B80A0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF840; return result; } // 6BF840: using guessed type int (__stdcall *off_6BF840[2])(int); //----- (004B80B0) -------------------------------------------------------- void *__thiscall sub_4B80B0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF864; return result; } // 6BF864: using guessed type int (__stdcall *off_6BF864[2])(int); //----- (004B80C0) -------------------------------------------------------- void *__thiscall sub_4B80C0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6BF888; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)this + 4); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 12); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)v1 + 20); return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6BF888: using guessed type int (__stdcall *off_6BF888[2])(int); //----- (004B8130) -------------------------------------------------------- void __thiscall sub_4B8130(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_6BF888; nullsub_2((void *)(this + 20)); nullsub_2((void *)(v1 + 12)); nullsub_2((void *)(v1 + 4)); *(_DWORD *)v1 = off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 6BF888: using guessed type int (__stdcall *off_6BF888[2])(int); //----- (004B81A0) -------------------------------------------------------- void *__thiscall sub_4B81A0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF8D0; return result; } // 6BF8D0: using guessed type int (__stdcall *off_6BF8D0[2])(int); //----- (004B81B0) -------------------------------------------------------- void *__thiscall sub_4B81B0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF8F4; return result; } // 6BF8F4: using guessed type int (__stdcall *off_6BF8F4[2])(int); //----- (004B81C0) -------------------------------------------------------- void *__thiscall sub_4B81C0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF93C; return result; } // 6BF93C: using guessed type int (__stdcall *off_6BF93C[2])(int); //----- (004B81D0) -------------------------------------------------------- void *__thiscall sub_4B81D0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF960; return result; } // 6BF960: using guessed type int (__stdcall *off_6BF960[2])(int); //----- (004B81E0) -------------------------------------------------------- void *__thiscall sub_4B81E0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF984; return result; } // 6BF984: using guessed type int (__stdcall *off_6BF984[2])(int); //----- (004B81F0) -------------------------------------------------------- int __thiscall sub_4B81F0(int this) { return *(_DWORD *)(this + 12); } //----- (004B8200) -------------------------------------------------------- void *__thiscall sub_4B8200(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6BF9A8; return result; } // 6BF9A8: using guessed type int (__stdcall *off_6BF9A8[2])(int); //----- (004B8210) -------------------------------------------------------- int __stdcall sub_4B8210(int a1) { int result; // eax@1 result = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 2632))(); *(_DWORD *)(a1 + 800) = off_8492CC; return result; } // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (004B8240) -------------------------------------------------------- int __stdcall sub_4B8240(int a1) { return (int)off_8492CC; } // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (004B8250) -------------------------------------------------------- int __thiscall sub_4B8250(int this) { int result; // eax@1 int v2; // ecx@1 result = this; v2 = *(_DWORD *)(this + 8196); if ( v2 ) result = sub_4A78B0(v2, result + 8200); return result; } //----- (004B8270) -------------------------------------------------------- int __thiscall sub_4B8270(void *this, int a2) { void *v2; // esi@1 v2 = this; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 20))(a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 2) + 20))((char *)v2 + 8, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 4) + 20))((char *)v2 + 16, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 10) + 20))((char *)v2 + 40, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 17) + 20))((char *)v2 + 68, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 23) + 20))((char *)v2 + 92, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 25) + 20))((char *)v2 + 100, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 28) + 20))((char *)v2 + 112, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 30) + 20))((char *)v2 + 120, a2); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 34) + 20))((char *)v2 + 136, a2); return (*(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v2 + 38) + 20))((char *)v2 + 152, a2); } //----- (004B8310) -------------------------------------------------------- int __stdcall sub_4B8310(void *a1, int a2) { int v2; // edi@1 int (__thiscall *v3)(_DWORD); // edx@1 __int16 v4; // ST20_2@1 void *v5; // edi@1 int v6; // eax@1 int v7; // edx@1 int v8; // ST04_4@1 int v9; // eax@1 char v11; // [sp+10h] [bp-1Ch]@1 int v12; // [sp+1Ch] [bp-10h]@1 int v13; // [sp+28h] [bp-4h]@1 v12 = (int)"MobTacticElement::MobActionBase::mab_WalkTo"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_WalkTo"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionBase::mab_WalkTo"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)a1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1300); v13 = 0; v4 = v3(a1); (*(void (__thiscall **)(void *))(v2 + 1632))(a1); v5 = off_849C18; *(_WORD *)off_849C18 = 8216; *((_WORD *)v5 + 1) = *((_WORD *)a1 + 2); v6 = *(_DWORD *)((char *)a1 + 102); *((_DWORD *)v5 + 1) = *(_DWORD *)v6; *((_DWORD *)v5 + 2) = *(_DWORD *)(v6 + 4); *((_DWORD *)v5 + 3) = *(_DWORD *)a2; v7 = *(_DWORD *)(a2 + 4); *((_WORD *)v5 + 11) &= 0xFFFEu; *((_DWORD *)v5 + 4) = v7; *((_WORD *)v5 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1300))(a1); *((_WORD *)a1 + 166) = 24; *(_DWORD *)((char *)a1 + 334) = *(_DWORD *)((char *)v5 + 2); *(_DWORD *)((char *)a1 + 338) = *(_DWORD *)((char *)v5 + 6); *(_DWORD *)((char *)a1 + 342) = *(_DWORD *)((char *)v5 + 10); *(_DWORD *)((char *)a1 + 346) = *(_DWORD *)((char *)v5 + 14); *(_DWORD *)((char *)a1 + 350) = *(_DWORD *)((char *)v5 + 18); *((_WORD *)a1 + 177) = *((_WORD *)v5 + 11); sub_4287B0(&v11, &off_849C18, 24); v8 = *(_DWORD *)((char *)a1 + 102); LOBYTE(v13) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(a1, v9, v8, 0, 0, (int)&v11, 0, 65535); LOBYTE(v13) = 0; sub_428A70(&v11); --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_WalkTo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B84A0) -------------------------------------------------------- int __stdcall sub_4B84A0(int a1) { sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionBase::mab_Think"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_Think"); return (int)off_8492CC; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (004B84F0) -------------------------------------------------------- void *__thiscall sub_4B84F0(void *this, int a2) { void *v2; // edi@1 void *result; // eax@2 int v4; // [sp+0h] [bp-20h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionInMove::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionInMove::mab_Think"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 624) + 40))(*(_DWORD *)(a2 + 4)); if ( sub_4B7E20(*(_DWORD *)(a2 + 624)) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionInMove::mab_Think"); result = off_8492CC; } else { if ( !(unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(a2 + 4) + 1552))(v4) ) v2 = (void *)*((_DWORD *)v2 + 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionInMove::mab_Think"); result = v2; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (004B85F0) -------------------------------------------------------- void *__thiscall sub_4B85F0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@2 int v4; // eax@3 void *result; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::DuringReturn2Regen::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::DuringReturn2Regen::mab_Think"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1552))() ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::DuringReturn2Regen::mab_Think"); result = v2; } else { v3 = (*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1804))(); if ( v3 ) { v4 = *(_DWORD *)(v3 + 4); if ( v4 ) (*(void (__stdcall **)(unsigned int))(**(_DWORD **)(a2 + 4) + 2868))(dword_14D129E8 + ((signed int)((unsigned __int64)(10 * *(_WORD *)(v4 + 151) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(v4 + 151) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::DuringReturn2Regen::mab_Think"); result = off_8492CC; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 14D129E8: using guessed type int dword_14D129E8; //----- (004B8720) -------------------------------------------------------- void *__thiscall sub_4B8720(void *this, int a2) { void *v2; // esi@1 signed int v3; // ecx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionWaitSkillEnd::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionWaitSkillEnd::mab_Think"; dword_750AB8[dword_750CB8] = -1; v3 = 1; ++dword_750CB8; if ( a2 && *(_DWORD *)(a2 + 4) ) { (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(a2 + 4) + 1416))(*(_DWORD *)(a2 + 4)); v3 = 1; } if ( (unsigned int)dword_14D129E8 >= *((_DWORD *)v2 + 1) ) v2 = (void *)*((_DWORD *)v2 + 2); dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWaitSkillEnd::mab_Think"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B87F0) -------------------------------------------------------- void *__thiscall sub_4B87F0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@1 int v4; // ecx@1 unsigned int v5; // edx@1 int v6; // eax@1 int v7; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::maw_MetronomeReset"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionWander::maw_MetronomeReset"; v2 = dword_14D9AE14 & (dword_14D9AE10 + 1); dword_750AB8[dword_750CB8] = -1; dword_14D9AE10 = v2; v3 = *(_WORD *)&word_14D92E10[2 * v2]; v4 = dword_14D129E8; ++dword_750CB8; v5 = (unsigned int)((unsigned int)(10000 * (v3 + 55)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *((_DWORD *)v1 + 2) = v5; *((_DWORD *)v1 + 1) = v4 + v5; v6 = dword_14D129E8 + 10; *((_DWORD *)v1 + 4) = 10; *((_DWORD *)v1 + 3) = v6; v7 = dword_14D129E8 + 10; *((_DWORD *)v1 + 6) = 10; *((_DWORD *)v1 + 5) = v7; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::maw_MetronomeReset"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; //----- (004B88A0) -------------------------------------------------------- void *__thiscall sub_4B88A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edx@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionWaitSkillEnd::mawse_SetNextAction"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionWaitSkillEnd::mawse_SetNextAction"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v4 + 3) = a4; v5 = a2 + dword_14D129E8; *((_DWORD *)v4 + 2) = a3; *((_DWORD *)v4 + 1) = v5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWaitSkillEnd::mawse_SetNextAction"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B8920) -------------------------------------------------------- void *__thiscall sub_4B8920(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionSwingDamage::masd_SetDelay"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionSwingDamage::masd_SetDelay"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v4 + 2) = a4; *((_DWORD *)v4 + 1) = a2; *((_DWORD *)v4 + 3) = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionSwingDamage::masd_SetDelay"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B8990) -------------------------------------------------------- char __stdcall sub_4B8990(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_SkillRegistAtScript"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionBase::mab_SkillRegistAtScript"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_SkillRegistAtScript"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B89E0) -------------------------------------------------------- char __thiscall sub_4B89E0(void *this, int a2, __int16 a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_SkillRegistAtScript"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionAttack::mab_SkillRegistAtScript"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v4 + 5) = a2; *((_WORD *)v4 + 6) = a3; *((_DWORD *)v4 + 4) = a4; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_SkillRegistAtScript"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B8A50) -------------------------------------------------------- int __thiscall sub_4B8A50(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::maa_SkillFromScriptClear"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionAttack::maa_SkillFromScriptClear"; dword_750AB8[dword_750CB8++] = -1; *((_WORD *)v1 + 6) = -1; *((_DWORD *)v1 + 4) = -1; *((_DWORD *)v1 + 5) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::maa_SkillFromScriptClear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B8AC0) -------------------------------------------------------- int __thiscall sub_4B8AC0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_6BFC64; *(_DWORD *)(this + 8) = 0; sub_4B8A50((void *)this); return v1; } // 6BFC64: using guessed type int (__stdcall *off_6BFC64[2])(int); //----- (004B8B10) -------------------------------------------------------- int __stdcall sub_4B8B10(void *a1, int a2) { int v2; // edi@1 int (__thiscall *v3)(_DWORD, _DWORD, _DWORD); // edx@1 unsigned __int16 v4; // ax@1 int v5; // eax@1 char v6; // al@4 void *v7; // edi@8 int v8; // eax@8 int v9; // ecx@8 int v10; // ST04_4@8 int v11; // eax@8 char v13; // [sp+10h] [bp-1Ch]@8 int v14; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+28h] [bp-4h]@1 v14 = (int)"MobTacticElement::MobActionBase::mab_RunTo"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RunTo"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionBase::mab_RunTo"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)a1; v3 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1304); v15 = 0; v4 = v3(a1, 2, 0); (*(void (__thiscall **)(void *, int, _DWORD))(v2 + 1632))(a1, a2, v4); v5 = (**(int (__thiscall ***)(void *))a1)(a1); if ( v5 ) { while ( (_UNKNOWN *)v5 != &unk_132541F4 ) { v5 = *(_DWORD *)(v5 + 4); if ( !v5 ) goto LABEL_4; } v6 = 1; } else { LABEL_4: v6 = 0; } if ( v6 != 0 ? (int)a1 : 0 ) { (*(void (__thiscall **)(void *, int, signed int, signed int, signed int, _DWORD))(*(_DWORD *)a1 + 1456))( a1, a2, 26, 73, 2, 0); } else { v7 = off_849C18; *(_WORD *)off_849C18 = 8218; *((_WORD *)v7 + 1) = *((_WORD *)a1 + 2); v8 = *(_DWORD *)((char *)a1 + 102); *((_DWORD *)v7 + 1) = *(_DWORD *)v8; *((_DWORD *)v7 + 2) = *(_DWORD *)(v8 + 4); *((_DWORD *)v7 + 3) = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 4); *((_WORD *)v7 + 11) &= 0xFFFEu; *((_DWORD *)v7 + 4) = v9; *((_WORD *)v7 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1304))(a1); *((_WORD *)a1 + 166) = 26; *(_DWORD *)((char *)a1 + 334) = *(_DWORD *)((char *)v7 + 2); *(_DWORD *)((char *)a1 + 338) = *(_DWORD *)((char *)v7 + 6); *(_DWORD *)((char *)a1 + 342) = *(_DWORD *)((char *)v7 + 10); *(_DWORD *)((char *)a1 + 346) = *(_DWORD *)((char *)v7 + 14); *(_DWORD *)((char *)a1 + 350) = *(_DWORD *)((char *)v7 + 18); *((_WORD *)a1 + 177) = *((_WORD *)v7 + 11); sub_4287B0(&v13, &off_849C18, 24); v10 = *(_DWORD *)((char *)a1 + 102); LOBYTE(v15) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00(a1, v11, v10, 0, 0, (int)&v13, 0, 65535); LOBYTE(v15) = 0; sub_428A70(&v13); } --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RunTo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004B8CE0) -------------------------------------------------------- void *__thiscall sub_4B8CE0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@7 int v4; // ecx@7 int v5; // edi@7 int v6; // ebx@7 int v7; // edi@7 int v8; // eax@8 void *v9; // edi@15 int v10; // ebx@16 int v12; // [sp-4h] [bp-24h]@10 int v13; // [sp+28h] [bp+8h]@17 int v14; // [sp+28h] [bp+8h]@20 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionInChase::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionInChase::mab_Think"; dword_750AB8[dword_750CB8++] = -1; if ( !*((_DWORD *)v2 + 1) ) { --dword_750CB8; LABEL_25: v12 = (int)"MobTacticElement::MobActionInChase::mab_Think"; LABEL_26: sub_467660((int)&unk_D020420, v12); return off_8492D0; } if ( (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v2 + 1) + 768))() || (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v2 + 1) + 1156))() == 3 || !(unsigned __int8)(*(int (**)(void))(**((_DWORD **)v2 + 1) + 1156))() || (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v2 + 1) + 40))() ) { --dword_750CB8; goto LABEL_25; } v3 = (*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1560))(); v4 = *(_DWORD *)(a2 + 4); v5 = *(_DWORD *)(v4 + 102); v6 = *(_DWORD *)v5 - *(_DWORD *)v3; v7 = *(_DWORD *)(v5 + 4) - *(_DWORD *)(v3 + 4); if ( v7 * v7 + v6 * v6 > (unsigned int)(*(int (**)(void))(*(_DWORD *)v4 + 1564))() ) { v8 = sub_478720(*(_DWORD *)(a2 + 4)); if ( v8 ) (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 3948))(v8); --dword_750CB8; v12 = (int)"MobTacticElement::MobActionInChase::mab_Think"; goto LABEL_26; } if ( *(_DWORD *)(*(int (**)(void))(**((_DWORD **)v2 + 1) + 1548))() != *((_DWORD *)v2 + 4) || *(_DWORD *)((*(int (**)(void))(**((_DWORD **)v2 + 1) + 1548))() + 4) != *((_DWORD *)v2 + 5) ) { v2 = (void *)*((_DWORD *)v2 + 3); } else { if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1552))() ) { v9 = *(void **)(a2 + 4); if ( v9 ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1548))(v9); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1972))(v9) == 1 ) { v13 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1300))(v9); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1968))(v9) != v13 ) sub_4B8310(v9, v10); } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1972))(v9) == 2 ) { v14 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1304))(v9); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1968))(v9) != v14 ) sub_4B8B10(v9, v10); } } } else { v2 = (void *)*((_DWORD *)v2 + 2); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionInChase::mab_Think"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); //----- (004B8F60) -------------------------------------------------------- int __thiscall sub_4B8F60(void *this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // eax@2 char v5; // al@5 int v6; // esi@6 int v7; // esi@7 int v8; // ebx@8 int v9; // eax@12 int result; // eax@15 int v11; // ebx@16 int v12; // eax@18 int v13; // eax@20 int v14; // ebx@20 int v15; // ecx@20 int v16; // eax@24 int v17; // ebx@25 int (__stdcall *v18)(_DWORD, _DWORD); // eax@31 int v19; // eax@32 int v20; // ebx@33 int v21; // eax@35 int v22; // eax@37 int v23; // eax@38 int v24; // eax@40 int v25; // eax@42 int v26; // [sp-8h] [bp-30h]@31 int v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+14h] [bp-14h]@20 void *v29; // [sp+18h] [bp-10h]@1 int v30; // [sp+30h] [bp+8h]@27 int v31; // [sp+30h] [bp+8h]@35 int v32; // [sp+30h] [bp+8h]@36 int v33; // [sp+30h] [bp+8h]@37 v29 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionTargetting::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v2 = a2; v3 = *(_DWORD *)(a2 + 4); if ( !v3 ) goto LABEL_47; v4 = (**(int (__thiscall ***)(_DWORD))v3)(v3); if ( v4 ) { while ( (_UNKNOWN *)v4 != &unk_132460EC ) { v4 = *(_DWORD *)(v4 + 4); if ( !v4 ) goto LABEL_5; } v5 = 1; } else { LABEL_5: v5 = 0; } v6 = v5 != 0 ? v3 : 0; if ( v5 != 0 ? v3 : 0 ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3952))(v6); if ( v11 && v11 != (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2480))(v6) && (LOBYTE(v12) = sub_548D30(v6, v11), v12 == 1) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 2568))(v6, 1); **(_DWORD **)(a2 + 724) = v11; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); result = a2 + 720; } else { (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 624) + 40))(*(_DWORD *)(a2 + 4)); v13 = sub_4B7E20(*(_DWORD *)(a2 + 624)); v14 = v13; v28 = v13; v15 = v6; if ( v13 && (LOBYTE(v16) = sub_548D30(v6, v13), v15 = v6, v16) ) { sub_4B7F20(v6, *(_WORD *)(v14 + 4)); v17 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v6 + 1852))(v6, v14, 0); if ( v17 >= 0 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1804))(v6) && (v30 = 12 * v17, *(_DWORD *)(12 * v17 + *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1804))(v6) + 8))) ) { switch ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1804))(v6) + 8) + v30) + 105) ) { case 0: v18 = *(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v28 + 1888); v27 = v17; v26 = v6; goto LABEL_32; case 2: v31 = *(_DWORD *)v6; v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 1804))(v6, v17); v19 = (*(int (__thiscall **)(int, int))(v31 + 1864))(v6, v21); goto LABEL_33; case 1: v32 = *(_DWORD *)v6; v27 = v17; v26 = (*(int (__fastcall **)(int, int))(*(_DWORD *)v6 + 1804))(v6, 12 * v17); v18 = *(int (__stdcall **)(_DWORD, _DWORD))(v32 + 1868); LABEL_32: v19 = v18(v26, v27); goto LABEL_33; case 4: v33 = *(_DWORD *)v6; v22 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 1804))(v6, v17); v19 = (*(int (__thiscall **)(int, int))(v33 + 1872))(v6, v22); LABEL_33: v20 = v19; if ( !v19 ) goto LABEL_34; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v19 + 996))(v19, 291) ) { v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 1388))(v20); sub_418B40((int)byte_85A2C0, v24); } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v20 + 996))(v20, 499) ) { v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 1388))(v20); sub_418B40((int)byte_85A2C0, v25); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 2568))(v6, 1); **(_DWORD **)(v2 + 700) = v28; goto LABEL_44; default: v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1804))(v6); sub_639100( &unk_86DDD8, (int)"MobAction::ma_think : MobTarget Wrong", *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v23 + 8) + v30) + 105)); LABEL_34: sub_4B8250(v6); (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1816))(v6); (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1820))(v6); (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 1816))(v6); break; } } else { sub_639100(&unk_86DDD8, (int)"MobTacticElement::MobActionTargetting::mab_Think : Null Weapon", 0); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); result = (int)v29; } else { sub_4B7F20(v15, -1); if ( *(_BYTE *)(v6 + 9520) & 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); result = (int)off_8492D4; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); result = a2 + 668; } } } } else { LABEL_47: v7 = sub_409730(*(_DWORD *)(a2 + 4)); if ( !v7 ) goto LABEL_48; (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 624) + 40))(*(_DWORD *)(a2 + 4)); v8 = sub_4B7E20(*(_DWORD *)(a2 + 624)); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2564))(v7) != v8 && sub_55E230(v7) ) (*(void (__thiscall **)(int))(*(_DWORD *)v7 + 3792))(v7); if ( v8 && (LOBYTE(v9) = sub_548D30(v7, v8), v9 == 1) ) { **(_DWORD **)(a2 + 700) = v8; LABEL_44: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); result = v2 + 696; } else { LABEL_48: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionTargetting::mab_Think"); result = a2 + 668; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492D4: using guessed type int (__stdcall *(*off_8492D4[3])[2])(int); //----- (004B9420) -------------------------------------------------------- void *__thiscall sub_4B9420(void *this, int a2) { void *v2; // esi@1 bool v3; // zf@1 int v4; // edi@3 int v5; // ebx@4 int v6; // ecx@5 int v7; // eax@5 int v8; // ecx@5 int v9; // ebx@6 unsigned int v10; // ebx@8 int v11; // eax@8 int v12; // edi@9 int v13; // eax@9 int v14; // edi@11 int v15; // eax@11 unsigned int v16; // eax@11 int v17; // ecx@13 int v19; // [sp-4h] [bp-40h]@2 int v20; // [sp+10h] [bp-2Ch]@6 int v21; // [sp+14h] [bp-28h]@6 int v22; // [sp+18h] [bp-24h]@13 int v23; // [sp+1Ch] [bp-20h]@13 int v24; // [sp+20h] [bp-1Ch]@1 int v25; // [sp+24h] [bp-18h]@8 int v26; // [sp+28h] [bp-14h]@9 int v27; // [sp+2Ch] [bp-10h]@5 int v28; // [sp+38h] [bp-4h]@1 int v29; // [sp+44h] [bp+8h]@5 int v30; // [sp+44h] [bp+8h]@8 v2 = this; v24 = (int)"MobTacticElement::MobActionTurning::mab_Think"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionTurning::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionTurning::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_WORD *)v2 + 6) == 0; v28 = 0; if ( !v3 ) { v4 = a2; if ( *(_DWORD *)(a2 + 4) ) { v5 = *((_DWORD *)v2 + 2); if ( v5 ) { v6 = *(_DWORD *)(v5 + 102); v7 = *(_DWORD *)(v6 + 4); v8 = *(_DWORD *)v6; v29 = *(_DWORD *)(*(_DWORD *)(a2 + 4) + 102); v27 = *(_DWORD *)(v29 + 4); if ( sub_4011C0(&unk_AF09DA8, v8 - *(_DWORD *)v29, v7 - v27) >= 5 ) { v10 = (unsigned __int8)sub_401220( &unk_AF09DA8, **(_DWORD **)(v5 + 102) - **(_DWORD **)(*(_DWORD *)(v4 + 4) + 102), *(_DWORD *)(*(_DWORD *)(v5 + 102) + 4) - *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 4) + 102) + 4)); v30 = sub_45F8E0(**(_BYTE **)(*(_DWORD *)(v4 + 4) + 106), v10, (int)&v25); v11 = 180000 * (dword_14D129E8 - *((_DWORD *)v2 + 4)) / (10 * *((_WORD *)v2 + 6)); if ( v11 < v30 ) { if ( v11 >= 15 ) { v14 = *(_DWORD *)(v4 + 4); v15 = **(_BYTE **)(v14 + 106) + v25 * v11; v16 = v15 + (v15 < 0 ? 0xB4 : 0); if ( (signed int)v16 >= 180 ) v16 -= 180; v17 = *(_DWORD *)(v14 + 102); v22 = *(_DWORD *)v17; v23 = *(_DWORD *)(v17 + 4); sub_4A2100(&unk_AF09DA8, v16, 3, (int)&v22); sub_4B8B10((void *)v14, (int)&v22); *((_DWORD *)v2 + 4) = dword_14D129E8; } } else { v12 = *(_DWORD *)(v4 + 4); v13 = *(_DWORD *)(v12 + 102); v26 = *(_DWORD *)v13; v27 = *(_DWORD *)(v13 + 4); sub_4A2100(&unk_AF09DA8, v10, 3, (int)&v26); sub_4B8B10((void *)v12, (int)&v26); *((_DWORD *)v2 + 4) = dword_14D129E8; v2 = (void *)*((_DWORD *)v2 + 1); } goto LABEL_14; } v9 = *(_DWORD *)(v5 + 102); v20 = *(_DWORD *)v9; v21 = *(_DWORD *)(v9 + 4); (*(void (__stdcall **)(int *, signed int, signed int, _DWORD))(**(_DWORD **)(v4 + 4) + 1632))(&v20, 1, 2, 0); (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(v4 + 4) + 1988))(*(_DWORD *)(v4 + 4)); } v2 = (void *)*((_DWORD *)v2 + 1); LABEL_14: --dword_750CB8; v28 = -1; v19 = (int)"MobTacticElement::MobActionTurning::mab_Think"; goto LABEL_15; } } v2 = (void *)*((_DWORD *)v2 + 1); --dword_750CB8; v28 = -1; v19 = (int)"MobTacticElement::MobActionTurning::mab_Think"; LABEL_15: sub_467660((int)&unk_D020420, v19); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (004B9650) -------------------------------------------------------- int __thiscall sub_4B9650(void *this, int a2) { int v2; // edi@1 void *v3; // ebx@1 int v4; // eax@2 char v5; // al@5 int v6; // esi@6 int v7; // ST18_4@7 int v8; // edi@7 int v9; // ST1C_4@7 int result; // eax@8 int v11; // eax@10 int v12; // eax@12 v2 = *(_DWORD *)(a2 + 4); v3 = this; if ( v2 ) { v4 = (**(int (__thiscall ***)(_DWORD))v2)(*(_DWORD *)(a2 + 4)); if ( v4 ) { while ( (_UNKNOWN *)v4 != &unk_132541F4 ) { v4 = *(_DWORD *)(v4 + 4); if ( !v4 ) goto LABEL_5; } v5 = 1; } else { LABEL_5: v5 = 0; } v6 = v5 != 0 ? v2 : 0; if ( v5 != 0 ? v2 : 0 ) { v7 = sub_402710(v5 != 0 ? v2 : 0, **((_DWORD **)v3 + 1)); v8 = **((_DWORD **)v3 + 1); v9 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 1296))(v6, **((_DWORD **)v3 + 1)); if ( v7 > (unsigned int)((*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 1296))(v6, v8) * v9) ) { result = a2 + 720; **(_DWORD **)(a2 + 724) = **((_DWORD **)v3 + 1); return result; } v11 = **((_DWORD **)v3 + 1); if ( v6 != v11 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 2456))(v6, v11); sub_547A10(v6, 2); if ( !sub_55E230(v6) ) { v12 = (int)off_849C18; *(_WORD *)off_849C18 = 9259; sub_430EA0((void *)v6, v12, 2, *(_WORD *)(v6 + 4)); } } } } return (int)off_8492CC; } // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (004B9750) -------------------------------------------------------- int (__stdcall *(**__stdcall sub_4B9750(int a1))[2])(int) { int v1; // eax@4 int v2; // edi@4 int v3; // eax@5 int v4; // eax@7 int v5; // ecx@7 int v6; // eax@8 int v8; // eax@10 int v9; // eax@10 int v10; // ecx@11 sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobAction2Region::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobAction2Region::mab_Think"; dword_750AB8[dword_750CB8++] = -1; if ( a1 && *(_DWORD *)(a1 + 4) ) (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a1 + 4) + 2568))(0); v1 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1804))(); v2 = v1; if ( !v1 || (v3 = *(_DWORD *)(v1 + 4)) == 0 ) goto LABEL_9; if ( !*(_BYTE *)(v3 + 146) ) { v4 = sub_478720(*(_DWORD *)(a1 + 4)); v5 = v4; if ( v4 ) { v6 = *(_DWORD *)(v4 + 102); *(_DWORD *)(v5 + 9460) = *(_DWORD *)v6; *(_DWORD *)(v5 + 9464) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v5 + 9468) = *(_DWORD *)v6; *(_DWORD *)(v5 + 9472) = *(_DWORD *)(v6 + 4); (*(void (__stdcall **)(unsigned int))(*(_DWORD *)v5 + 2868))(dword_14D129E8 + ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v2 + 4) + 151) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v2 + 4) + 151) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); } LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobAction2Region::mab_Think"); return off_8492CC; } v8 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1556))(); sub_4B8B10(*(void **)(a1 + 4), v8); v9 = sub_478720(*(_DWORD *)(a1 + 4)); if ( v9 ) { v10 = *(_DWORD *)(v9 + 9464); *(_DWORD *)(v9 + 9468) = *(_DWORD *)(v9 + 9460); *(_DWORD *)(v9 + 9472) = v10; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobAction2Region::mab_Think"); return &off_8492DC; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 8492DC: using guessed type int (__stdcall *(*off_8492DC)[2])(int); // 14D129E8: using guessed type int dword_14D129E8; //----- (004B9910) -------------------------------------------------------- int __thiscall sub_4B9910(void *this, int a2) { void *v2; // edi@1 int (*v3)(void); // eax@1 int v4; // ebx@4 int v5; // ecx@4 int v6; // edx@4 signed int v7; // eax@4 int v8; // eax@4 unsigned __int8 v10; // cl@8 int v11; // eax@9 int v12; // edx@10 int v13; // ecx@13 int v14; // edx@13 int v15; // eax@17 int v16; // ecx@17 int v17; // eax@22 int v18; // esi@22 int v19; // [sp-4h] [bp-3Ch]@20 int (__stdcall **v20)(int); // [sp+10h] [bp-28h]@4 int v21; // [sp+14h] [bp-24h]@4 int v22; // [sp+18h] [bp-20h]@4 int v23; // [sp+1Ch] [bp-1Ch]@4 int v24; // [sp+20h] [bp-18h]@13 int v25; // [sp+24h] [bp-14h]@13 int v26; // [sp+28h] [bp-10h]@1 int v27; // [sp+34h] [bp-4h]@1 v2 = this; v26 = (int)"MobTacticElement::MobActionBackStep::mab_Think"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionBackStep::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionBackStep::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (**)(void))(**(_DWORD **)(a2 + 4) + 1300); v27 = 0; if ( !(unsigned __int16)v3() || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1072))() + 3278) & 1 || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1072))() + 3278) & 2 ) { v19 = (int)"MobTacticElement::MobActionBackStep::mab_Think"; goto LABEL_26; } v4 = **((_DWORD **)v2 + 1); v5 = *(_DWORD *)(*(_DWORD *)(a2 + 4) + 102); v6 = *(_DWORD *)(v4 + 102); v7 = *(_DWORD *)v5 - *(_DWORD *)v6; v22 = *(_DWORD *)(v5 + 4) - *(_DWORD *)(v6 + 4); v21 = v7; v20 = &off_6B039C; v8 = sub_4011C0(&unk_AF09DA8, v7, v22); v23 = v8; LOBYTE(v27) = 1; if ( !v8 ) { **(_DWORD **)(a2 + 744) = v4; LABEL_6: --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBackStep::mab_Think"); return a2 + 740; } if ( !byte_8492C4 ) { v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(a2 + 4) + 1296))(v4); goto LABEL_12; } v10 = *((_BYTE *)v2 + 8); if ( !v10 ) { v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(a2 + 4) + 1296))(v4); LABEL_12: v12 = 8 * v11 / 0xAu; goto LABEL_13; } v12 = v8 + v10; LABEL_13: sub_4614A0((int)&v20, v12); v13 = *((_DWORD *)v2 + 1); v14 = *(_DWORD *)(a2 + 4); v24 = v21 + **(_DWORD **)(*(_DWORD *)v13 + 102); v25 = v22 + *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v13 + 102) + 4); if ( sub_49D140(*(void **)(*(_DWORD *)(v14 + 122) + 20), v24, v25) || sub_49D1B0(*(void **)(*(_DWORD *)(*(_DWORD *)(a2 + 4) + 122) + 20), v24, v25) ) goto LABEL_24; if ( !sub_462C30( *(void **)(*(_DWORD *)(a2 + 4) + 122), *(_DWORD *)(**((_DWORD **)v2 + 1) + 102), (int)&v24, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_49D140) || !sub_462C30( *(void **)(*(_DWORD *)(a2 + 4) + 122), *(_DWORD *)(**((_DWORD **)v2 + 1) + 102), (int)&v24, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_49D1B0) ) { **(_DWORD **)(a2 + 744) = **((_DWORD **)v2 + 1); goto LABEL_6; } v15 = *(_DWORD *)(a2 + 4); v16 = *(_DWORD *)(v15 + 122); if ( !byte_8492C4 ) { sub_4A8ED0(v16); dword_D714ED4 = 8 * **(_DWORD **)(*(_DWORD *)(a2 + 4) + 102) / 0x32u; dword_D714ED8 = 8 * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a2 + 4) + 102) + 4) / 0x32u; dword_D714EDC = 8 * v24 / 0x32u; dword_D714EE0 = 8 * v25 / 0x32u; sub_62F910((int)dword_D711FE0); if ( dword_D714EEC <= 2 ) { LABEL_22: sub_4B8B10(*(void **)(a2 + 4), (int)&v24); **(_DWORD **)(a2 + 724) = **((_DWORD **)v2 + 1); **(_DWORD **)(a2 + 700) = **((_DWORD **)v2 + 1); v17 = sub_4B7FB0(a2 + 644, **((_DWORD **)v2 + 1), a2 + 696, a2 + 720); --dword_750CB8; v18 = v17; v27 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBackStep::mab_Think"); return v18; } LABEL_24: **(_DWORD **)(a2 + 744) = **((_DWORD **)v2 + 1); goto LABEL_6; } if ( v16 && sub_5C76D0((void *)(v16 + 164), **(_DWORD **)(v15 + 102), *(_DWORD *)(*(_DWORD *)(v15 + 102) + 4), v24, v25) ) goto LABEL_22; v19 = (int)"MobTacticElement::MobActionBackStep::mab_Think"; LABEL_26: --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, v19); return (int)off_8492CC; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492C4: using guessed type char byte_8492C4; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // D714ED4: using guessed type int dword_D714ED4; // D714ED8: using guessed type int dword_D714ED8; // D714EDC: using guessed type int dword_D714EDC; // D714EE0: using guessed type int dword_D714EE0; // D714EEC: using guessed type int dword_D714EEC; //----- (004B9CD0) -------------------------------------------------------- int __thiscall sub_4B9CD0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // esi@1 __int64 v5; // qax@1 signed int v6; // ebx@1 int v7; // ST0C_4@1 int v8; // ebx@1 int v9; // eax@1 int v10; // edx@1 int v11; // edx@1 int v12; // eax@1 int v14; // eax@4 int v15; // ecx@5 int v16; // ecx@10 int v17; // eax@10 int v18; // [sp+0h] [bp-2Ch]@0 int v19; // [sp+4h] [bp-28h]@0 int v20; // [sp+8h] [bp-24h]@0 int v21; // [sp+Ch] [bp-20h]@0 int v22; // [sp+10h] [bp-1Ch]@1 int v23; // [sp+14h] [bp-18h]@1 int v24; // [sp+18h] [bp-14h]@1 int v25; // [sp+1Ch] [bp-10h]@1 int v26; // [sp+28h] [bp-4h]@1 int v27; // [sp+34h] [bp+8h]@1 int v28; // [sp+34h] [bp+8h]@1 v2 = this; v24 = (int)"MobTacticElement::MobActionAvoidOverlap::mab_Think"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionAvoidOverlap::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionAvoidOverlap::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_14F4AFC4 & (dword_14F4AFC0 + 1); v4 = a2; dword_14F4AFC0 = v3; v5 = 180 * (unsigned __int16)word_14F42FC0[v3]; v6 = (BYTE4(v5) & 0x3F) + v5; v7 = **((_DWORD **)v2 + 1); LODWORD(v5) = *(_DWORD *)(**(_DWORD **)(a2 + 4) + 1296); v26 = 0; v25 = v6 >> 6; v27 = ((int (__stdcall *)(int))v5)(v7); v28 = 8 * sub_576E10(&unk_132546E8, v6 >> 6) * v27 / 1024 / 10; v8 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 4) + 1296))(**((_DWORD **)v2 + 1)); v9 = sub_576E40(&unk_132546E8, v25); v10 = *((_DWORD *)v2 + 1); v22 = v28 + **(_DWORD **)(*(_DWORD *)v10 + 102); v11 = 8 * v9 * v8 / 1024 / 10 + *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v10 + 102) + 4); v12 = *(_DWORD *)(v4 + 4); v23 = v11; if ( sub_49D140(*(void **)(*(_DWORD *)(v12 + 122) + 20), v22, v11) ) { **(_DWORD **)(v4 + 700) = **((_DWORD **)v2 + 1); --dword_750CB8; LABEL_3: v26 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAvoidOverlap::mab_Think"); return v4 + 696; } v14 = *(_DWORD *)(v4 + 4); if ( byte_8492C4 ) { v15 = *(_DWORD *)(v14 + 122); if ( !v15 || !sub_5C76D0((void *)(v15 + 164), **(_DWORD **)(v14 + 102), *(_DWORD *)(*(_DWORD *)(v14 + 102) + 4), v22, v23) ) { --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAvoidOverlap::mab_Think"); return (int)off_8492CC; } } else { sub_62F1C0( (int)dword_D711FE0, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v14 + 122) + 20) + 28), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v14 + 122) + 20) + 32), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v14 + 122) + 20) + 20)); dword_D714ED4 = 8 * **(_DWORD **)(*(_DWORD *)(v4 + 4) + 102) / 0x32u; dword_D714ED8 = 8 * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 4) + 102) + 4) / 0x32u; dword_D714EDC = 8 * v22 / 0x32u; dword_D714EE0 = 8 * v23 / 0x32u; sub_62F910((int)dword_D711FE0); if ( dword_D714EEC > 1 ) { **(_DWORD **)(v4 + 700) = **((_DWORD **)v2 + 1); --dword_750CB8; goto LABEL_3; } } sub_4B8B10(*(void **)(v4 + 4), (int)&v22); **(_DWORD **)(v4 + 724) = **((_DWORD **)v2 + 1); **(_DWORD **)(v4 + 700) = **((_DWORD **)v2 + 1); v16 = **((_DWORD **)v2 + 1); *(_DWORD *)(v4 + 656) = v4 + 720; *(_DWORD *)(v4 + 652) = v4 + 696; *(_DWORD *)(v4 + 648) = v16; v17 = (*(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)v16 + 1548))( v18, v19, v20, v21, v22, v23, v24); *(_DWORD *)(v4 + 660) = *(_DWORD *)v17; *(_DWORD *)(v4 + 664) = *(_DWORD *)(v17 + 4); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAvoidOverlap::mab_Think"); return v4 + 644; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492C4: using guessed type char byte_8492C4; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // D714ED4: using guessed type int dword_D714ED4; // D714ED8: using guessed type int dword_D714ED8; // D714EDC: using guessed type int dword_D714EDC; // D714EE0: using guessed type int dword_D714EE0; // D714EEC: using guessed type int dword_D714EEC; // 14F42FC0: using guessed type __int16 word_14F42FC0[]; // 14F4AFC0: using guessed type int dword_14F4AFC0; // 14F4AFC4: using guessed type int dword_14F4AFC4; //----- (004BA040) -------------------------------------------------------- void *__thiscall sub_4BA040(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@2 char v5; // al@5 int v6; // eax@6 void *v7; // eax@8 void *v8; // esi@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionSwingDamage::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionSwingDamage::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 4); if ( v3 ) { v4 = (**(int (__thiscall ***)(_DWORD))v3)(v3); if ( v4 ) { while ( (_UNKNOWN *)v4 != &unk_132460EC ) { v4 = *(_DWORD *)(v4 + 4); if ( !v4 ) goto LABEL_5; } v5 = 1; } else { LABEL_5: v5 = 0; } v6 = v5 != 0 ? v3 : 0; if ( v6 ) *(_BYTE *)(v6 + 9476) &= 0xFBu; } (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 4) + 3812))(*((_DWORD *)v2 + 2)); v7 = sub_4B88A0((void *)(a2 + 748), *((_DWORD *)v2 + 1), *((_DWORD *)v2 + 3), *((_DWORD *)v2 + 2)); --dword_750CB8; v8 = v7; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionSwingDamage::mab_Think"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BA160) -------------------------------------------------------- int __thiscall sub_4BA160(void *this, int a2, int a3, int a4, int a5, int a6) { int v6; // edi@1 int v7; // eax@2 char v8; // al@5 int v9; // esi@6 int v11; // eax@19 __int64 v12; // qax@19 int v13; // eax@19 int v14; // eax@21 int v15; // eax@21 int v16; // eax@21 int v17; // ecx@23 int v18; // eax@25 int v19; // [sp+10h] [bp-30h]@23 int v20; // [sp+14h] [bp-2Ch]@23 int v21; // [sp+18h] [bp-28h]@23 int v22; // [sp+1Ch] [bp-24h]@24 int v23; // [sp+20h] [bp-20h]@1 void *v24; // [sp+24h] [bp-1Ch]@1 int v25; // [sp+28h] [bp-18h]@12 int v26; // [sp+2Ch] [bp-14h]@12 int v27; // [sp+30h] [bp-10h]@18 int v28; // [sp+3Ch] [bp-4h]@1 v24 = this; v23 = (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"; dword_750AB8[dword_750CB8++] = -1; v6 = a2; v28 = 0; if ( !a2 ) goto LABEL_7; v7 = (**(int (__thiscall ***)(_DWORD))a2)(a2); if ( v7 ) { while ( (_UNKNOWN *)v7 != &unk_132460EC ) { v7 = *(_DWORD *)(v7 + 4); if ( !v7 ) goto LABEL_5; } v8 = 1; } else { LABEL_5: v8 = 0; } v9 = v8 != 0 ? v6 : 0; if ( !(v8 != 0 ? v6 : 0) ) goto LABEL_7; if ( a3 == -1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2872))(v9) ) { LABEL_15: --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"); return (int)off_8492CC; } if ( !sub_4B6AD0((void *)v9, &v25, (int)&v26, (int)&a3, (int)((char *)&a2 + 3)) ) { LABEL_7: v28 = -1; LABEL_8: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"); return a5; } if ( BYTE3(a2) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 2868))(v9, dword_14D129E8 + 50); goto LABEL_15; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3908))(v6) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 3912))(v6); --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"); return (int)off_8492D0; } v16 = v26; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int, int *, int *))(*(_DWORD *)v9 + 3160))(v9, &v27, &a3) ) { v13 = v27; } else { v11 = dword_14F4AFC4 & (dword_14F4AFC0 + 1); dword_14F4AFC0 = v11; v12 = 180 * (unsigned __int16)word_14F42FC0[v11]; v13 = ((BYTE4(v12) & 0x3F) + (signed int)v12) >> 6; v27 = v13; } v14 = sub_576E10(&unk_132546E8, v13); v25 = a3 * v14 / 1024; v15 = sub_576E40(&unk_132546E8, v27); v16 = a3 * v15 / 1024; v26 = v16; } v17 = *(_DWORD *)(v9 + 102); v19 = v25 + *(_DWORD *)v17; v20 = v16 + *(_DWORD *)(v17 + 4); if ( !sub_4BE0E0( (void *)v9, (int)&v19, 2 * a3, (int)&v21, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140) || (v19 = v21, v20 = v22, !sub_4BE0E0( (void *)v6, (int)&v19, 2 * a3, (int)&v21, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0)) ) { LABEL_29: v28 = -1; goto LABEL_8; } v18 = *(_DWORD *)(v6 + 102); if ( v21 == *(_DWORD *)v18 && v22 == *(_DWORD *)(v18 + 4) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3164))(v6) == 1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 3168))(v6); goto LABEL_29; } sub_4B8310((void *)v9, (int)&v21); --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionBase::mab_RandomDirectWalk"); return a4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); // 14D129E8: using guessed type int dword_14D129E8; // 14F42FC0: using guessed type __int16 word_14F42FC0[]; // 14F4AFC0: using guessed type int dword_14F4AFC0; // 14F4AFC4: using guessed type int dword_14F4AFC4; //----- (004BA470) -------------------------------------------------------- char __thiscall sub_4BA470(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@2 int v4; // ecx@3 signed __int16 v5; // di@4 unsigned __int16 v6; // bx@6 int v7; // edx@6 unsigned __int16 v8; // cx@6 int v9; // eax@8 unsigned __int16 v10; // si@8 int v11; // eax@9 bool v12; // zf@9 int v13; // eax@9 int v14; // eax@10 int v15; // eax@15 int v17; // eax@20 signed int v18; // ecx@20 int v19; // edi@21 int v20; // eax@25 int v21; // [sp-4h] [bp-30h]@30 unsigned __int16 v22; // [sp+14h] [bp-18h]@6 signed __int16 v23; // [sp+18h] [bp-14h]@6 void *v24; // [sp+1Ch] [bp-10h]@1 v1 = this; v24 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 2049); if ( v2 && (v3 = *(_DWORD *)(v2 + 4676)) != 0 ) { v4 = *((_DWORD *)v1 + 2048); if ( v4 ) v5 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 2042) + 8) + 12 * v4 + 4); else v5 = -1; v6 = *(_WORD *)(v3 + 4); v7 = *(_DWORD *)(v3 + 8); v8 = *(_WORD *)(v7 + 12 * *(_WORD *)(v3 + 14) + 4); v23 = v5; v22 = *(_WORD *)(v3 + 4); do { if ( v8 >= v6 ) goto LABEL_30; v9 = v8; v10 = v8; v8 = *(_WORD *)(v7 + 12 * v8 + 4); if ( v10 >= v6 || (v11 = 3 * v9, v12 = *(_BYTE *)(v7 + 4 * v11 + 8) == 0, v13 = v7 + 4 * v11, v12) ) v14 = 0; else v14 = *(_DWORD *)v13; } while ( *(_WORD *)v14 != v5 ); if ( v10 < v6 && *(_BYTE *)(v7 + 12 * v10 + 8) ) v15 = *(_DWORD *)(v7 + 12 * v10); else v15 = 0; if ( *(_WORD *)(v15 + 2) == -1 ) { *((_DWORD *)v24 + 2048) = 0; LABEL_19: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); return 1; } v17 = *((_DWORD *)v24 + 2042); v18 = 1; if ( *(_DWORD *)(v17 + 12) > 1 ) { v19 = *(_DWORD *)(v17 + 8) + 16; while ( 1 ) { v20 = v10 < v6 && *(_BYTE *)(v7 + 12 * v10 + 8) ? *(_DWORD *)(v7 + 12 * v10) : 0; if ( *(_WORD *)v19 == *(_WORD *)(v20 + 2) ) break; ++v18; v19 += 12; if ( v18 >= *(_DWORD *)(*((_DWORD *)v24 + 2042) + 12) ) goto LABEL_29; v6 = v22; } *((_DWORD *)v24 + 2048) = v18; goto LABEL_19; } LABEL_29: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange : Changed skill not found", (unsigned __int16)v23); LABEL_30: --dword_750CB8; v21 = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"; } else { --dword_750CB8; v21 = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"; } sub_467660((int)&unk_D020420, v21); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BA680) -------------------------------------------------------- char __thiscall sub_4BA680(void *this) { void *v1; // edi@1 int v2; // eax@1 int v3; // ecx@2 int v4; // eax@3 unsigned __int16 v5; // bx@4 unsigned __int16 v6; // si@7 int v7; // ecx@8 int v8; // eax@8 unsigned __int16 v9; // dx@8 int v10; // edx@10 int v11; // eax@14 bool v12; // zf@14 int v13; // eax@14 int v14; // esi@15 unsigned int v15; // esi@17 int v16; // ebx@18 int v17; // edx@19 int v18; // eax@20 int v20; // eax@25 signed int v21; // ecx@25 int v22; // edx@26 int v23; // ebx@29 int v24; // eax@30 int v25; // [sp-4h] [bp-3Ch]@35 unsigned __int16 v26; // [sp+10h] [bp-28h]@8 unsigned __int16 v27; // [sp+20h] [bp-18h]@18 signed __int16 v28; // [sp+24h] [bp-14h]@4 int v29; // [sp+28h] [bp-10h]@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 2049); if ( v2 && (v3 = *(_DWORD *)(v2 + 4680), (v29 = v3) != 0) ) { v4 = *((_DWORD *)v1 + 2048); if ( v4 ) { v28 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 2042) + 8) + 12 * v4 + 4); v5 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); } else { v5 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); v28 = -1; } while ( 1 ) { v6 = *(_WORD *)(v3 + 4); if ( v5 >= v6 ) goto LABEL_35; v7 = *(_DWORD *)(v3 + 8); v8 = v5; v9 = v5; v5 = *(_WORD *)(v7 + 12 * v5 + 4); v26 = v9; if ( v9 < v6 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v10 = *(_DWORD *)(v7 + 12 * v8); else v10 = 0; if ( *(_WORD *)v10 == v28 ) { if ( v26 >= *(_WORD *)(v29 + 4) || (v11 = 3 * v8, v12 = *(_BYTE *)(v7 + 4 * v11 + 8) == 0, v13 = v7 + 4 * v11, v12) ) v14 = 0; else v14 = *(_DWORD *)v13; v15 = (unsigned int)((unsigned int)(*(_DWORD *)(v14 + 4) * (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1264))(v1)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1256))(v1) < v15 ) break; } v3 = v29; } v16 = v29; v27 = *(_WORD *)(v29 + 4); if ( v26 < v27 && (v17 = *(_DWORD *)(v29 + 8), *(_BYTE *)(v17 + 12 * v26 + 8)) ) v18 = *(_DWORD *)(v17 + 12 * v26); else v18 = 0; if ( *(_WORD *)(v18 + 2) == -1 ) { *((_DWORD *)v1 + 2048) = 0; LABEL_24: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); return 1; } v20 = *((_DWORD *)v1 + 2042); v21 = 1; if ( *(_DWORD *)(v20 + 12) > 1 ) { v22 = *(_DWORD *)(v20 + 8) + 16; while ( 1 ) { if ( v26 < v27 && (v23 = *(_DWORD *)(v16 + 8), *(_BYTE *)(v23 + 12 * v26 + 8)) ) v24 = *(_DWORD *)(v23 + 12 * v26); else v24 = 0; if ( *(_WORD *)v22 == *(_WORD *)(v24 + 2) ) break; ++v21; v22 += 12; if ( v21 >= *(_DWORD *)(*((_DWORD *)v1 + 2042) + 12) ) goto LABEL_34; v16 = v29; } *((_DWORD *)v1 + 2048) = v21; goto LABEL_24; } LABEL_34: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_HPLow : Changed skill not found", (unsigned __int16)v28); LABEL_35: --dword_750CB8; v25 = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"; } else { --dword_750CB8; v25 = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"; } sub_467660((int)&unk_D020420, v25); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BA910) -------------------------------------------------------- char __thiscall sub_4BA910(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@2 int v5; // eax@3 unsigned __int16 v6; // si@4 unsigned __int16 v7; // di@7 int v8; // ecx@8 int v9; // eax@8 unsigned __int16 v10; // dx@8 int v11; // edx@10 unsigned __int16 v12; // bx@13 int v13; // eax@14 bool v14; // zf@14 int v15; // eax@14 int v16; // eax@15 int v17; // ecx@19 int v18; // eax@20 int v20; // eax@25 signed int v21; // ecx@25 int v22; // edx@26 int v23; // eax@29 int v24; // ebx@29 int v25; // eax@29 int v26; // eax@30 int v27; // [sp-4h] [bp-3Ch]@35 unsigned __int16 v28; // [sp+10h] [bp-28h]@8 void *v29; // [sp+20h] [bp-18h]@1 signed __int16 v30; // [sp+24h] [bp-14h]@4 int v31; // [sp+28h] [bp-10h]@2 v2 = this; v29 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 2049); if ( v3 && (v4 = *(_DWORD *)(v3 + 4684), (v31 = v4) != 0) ) { v5 = *((_DWORD *)v2 + 2048); if ( v5 ) { v30 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 2042) + 8) + 12 * v5 + 4); v6 = *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * *(_WORD *)(v4 + 14) + 4); } else { v6 = *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * *(_WORD *)(v4 + 14) + 4); v30 = -1; } while ( 1 ) { v7 = *(_WORD *)(v4 + 4); if ( v6 >= v7 ) goto LABEL_35; v8 = *(_DWORD *)(v4 + 8); v9 = v6; v10 = v6; v6 = *(_WORD *)(v8 + 12 * v6 + 4); v28 = v10; if ( v10 < v7 && *(_BYTE *)(v8 + 12 * v9 + 8) ) v11 = *(_DWORD *)(v8 + 12 * v9); else v11 = 0; if ( *(_WORD *)v11 == v30 ) { v12 = v28; if ( v28 >= v7 || (v13 = 3 * v9, v14 = *(_BYTE *)(v8 + 4 * v13 + 8) == 0, v15 = v8 + 4 * v13, v14) ) v16 = 0; else v16 = *(_DWORD *)v15; if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 996))(*(_DWORD *)(v16 + 4)) ) break; } v4 = v31; } if ( v28 < *(_WORD *)(v31 + 4) && (v17 = *(_DWORD *)(v31 + 8), *(_BYTE *)(v17 + 12 * v28 + 8)) ) v18 = *(_DWORD *)(v17 + 12 * v28); else v18 = 0; if ( *(_WORD *)(v18 + 2) == -1 ) { *((_DWORD *)v29 + 2048) = 0; LABEL_24: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); return 1; } v20 = *((_DWORD *)v29 + 2042); v21 = 1; if ( *(_DWORD *)(v20 + 12) > 1 ) { v22 = *(_DWORD *)(v20 + 8) + 16; while ( 1 ) { if ( v12 >= *(_WORD *)(v31 + 4) || (v23 = v12, v24 = *(_DWORD *)(v31 + 8), v23 *= 3, v14 = *(_BYTE *)(v24 + 4 * v23 + 8) == 0, v25 = v24 + 4 * v23, v14) ) v26 = 0; else v26 = *(_DWORD *)v25; if ( *(_WORD *)v22 == *(_WORD *)(v26 + 2) ) break; ++v21; v22 += 12; if ( v21 >= *(_DWORD *)(*((_DWORD *)v29 + 2042) + 12) ) goto LABEL_34; v12 = v28; } *((_DWORD *)v29 + 2048) = v21; goto LABEL_24; } LABEL_34: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_SkillExchange_TargetState\t : Changed skill not found", (unsigned __int16)v30); LABEL_35: --dword_750CB8; v27 = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"; } else { --dword_750CB8; v27 = (int)"ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"; } sub_467660((int)&unk_D020420, v27); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BAB80) -------------------------------------------------------- char __thiscall sub_4BAB80(int this) { int v1; // eax@1 char result; // al@2 int v3; // ebx@3 unsigned __int16 i; // ax@4 unsigned __int16 v5; // dx@6 int v6; // esi@7 unsigned __int16 v7; // cx@7 int v8; // eax@7 int v9; // ecx@9 bool v10; // zf@13 int v11; // eax@13 int v12; // edi@14 unsigned int v13; // edi@16 int v14; // eax@18 int v15; // eax@18 int v16; // eax@19 int v17; // eax@23 signed int v18; // edx@23 int v19; // ecx@24 int v20; // edi@26 int v21; // eax@27 unsigned __int16 v22; // [sp+0h] [bp-10h]@7 unsigned __int16 v23; // [sp+2h] [bp-Eh]@7 int v24; // [sp+Ch] [bp-4h]@1 v1 = *(_DWORD *)(this + 8196); v24 = this; if ( v1 ) { v3 = *(_DWORD *)(v1 + 7140); if ( v3 ) { for ( i = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); ; i = v23 ) { v5 = *(_WORD *)(v3 + 4); if ( i >= v5 ) break; v6 = i; v7 = i; v8 = *(_DWORD *)(v3 + 8); v22 = v7; v23 = *(_WORD *)(v8 + 12 * v6 + 4); if ( v7 < v5 && *(_BYTE *)(v8 + 12 * v6 + 8) ) v9 = *(_DWORD *)(v8 + 12 * v6); else v9 = 0; if ( *(_DWORD *)(v9 + 8) == *(_DWORD *)(v24 + 8200) ) { if ( v22 >= v5 || (v10 = *(_BYTE *)(v8 + 12 * v6 + 8) == 0, v11 = v8 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; v13 = (unsigned int)((unsigned int)(*(_DWORD *)(v12 + 4) * (*(int (**)(void))(*(_DWORD *)v24 + 1264))()) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( (*(int (**)(void))(*(_DWORD *)v24 + 1256))() < v13 ) { if ( v22 >= *(_WORD *)(v3 + 4) || (v14 = *(_DWORD *)(v3 + 8), v10 = *(_BYTE *)(v14 + 12 * v6 + 8) == 0, v15 = v14 + 12 * v6, v10) ) v16 = 0; else v16 = *(_DWORD *)v15; if ( *(_WORD *)(v16 + 2) == -1 ) *(_DWORD *)(v24 + 8192) = 0; v17 = *(_DWORD *)(v24 + 8168); v18 = 1; if ( *(_DWORD *)(v17 + 12) > 1 ) { v19 = *(_DWORD *)(v17 + 8) + 16; while ( 1 ) { if ( v22 < *(_WORD *)(v3 + 4) && (v20 = *(_DWORD *)(v3 + 8), *(_BYTE *)(v20 + 12 * v6 + 8)) ) v21 = *(_DWORD *)(v20 + 12 * v6); else v21 = 0; if ( *(_WORD *)v19 == *(_WORD *)(v21 + 2) ) break; ++v18; v19 += 12; if ( v18 >= *(_DWORD *)(*(_DWORD *)(v24 + 8168) + 12) ) goto LABEL_5; } *(_DWORD *)(v24 + 8192) = v18; return 1; } } } LABEL_5: ; } } result = 0; } else { result = 0; } return result; } //----- (004BAD10) -------------------------------------------------------- void *__thiscall sub_4BAD10(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int v4; // eax@11 int v5; // esi@11 int v7; // eax@15 int v8; // [sp-14h] [bp-34h]@10 int v9; // [sp-10h] [bp-30h]@10 int v10; // [sp-Ch] [bp-2Ch]@10 int v11; // [sp-8h] [bp-28h]@10 int v12; // [sp-4h] [bp-24h]@10 int v13; // [sp+28h] [bp+8h]@15 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionWander::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 ) { if ( !*(_DWORD *)(a2 + 4) ) { LABEL_22: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::mab_Think"); return off_8492CC; } (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a2 + 4) + 2568))(0); } if ( !*(_DWORD *)(a2 + 4) || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1072))() + 3278) & 1 || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1072))() + 3278) & 2 || !(*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1804))() || !*(_DWORD *)(*(_DWORD *)(*(int (**)(void))(**(_DWORD **)(a2 + 4) + 1804))() + 74) ) goto LABEL_22; if ( (*(int (**)(void))(**(_DWORD **)(a2 + 4) + 2584))() ) { v12 = a2; v11 = (int)v2; v10 = a2 + 636; *(_DWORD *)(a2 + 640) = v2; v9 = -1; v8 = *(_DWORD *)(a2 + 4); LABEL_11: v4 = sub_4BA160(v2, v8, v9, v10, v11, v12); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::mab_Think"); return (void *)v5; } if ( sub_4010C0((int)((char *)v2 + 4)) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::mab_Think"); return off_8492D0; } if ( sub_4010C0((int)((char *)v2 + 12)) ) goto LABEL_22; v7 = sub_478720(*(_DWORD *)(a2 + 4)); v13 = v7; if ( v7 && sub_4010C0(v7 + 7936) ) sub_4AD900(&dword_848F94, v13); if ( sub_4010C0((int)((char *)v2 + 20)) && (unsigned __int16)sub_427920(&unk_14D42DC0, 100) < 5u ) { v12 = v3; v11 = (int)v2; v10 = v3 + 636; *(_DWORD *)(v3 + 640) = v2; v9 = (unsigned __int16)sub_427920(&unk_14D42DC0, 20) + 30; v8 = *(_DWORD *)(v3 + 4); goto LABEL_11; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionWander::mab_Think"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); //----- (004BAF80) -------------------------------------------------------- int __thiscall sub_4BAF80(void *this, int a2) { int v2; // edi@1 signed int v3; // ebx@1 unsigned int v4; // edx@1 int v5; // esi@1 int v6; // eax@2 int v8; // eax@4 int v9; // ecx@7 int v10; // eax@18 int v11; // eax@19 char v12; // al@21 int v13; // edx@21 int v14; // eax@24 int v15; // eax@26 int v16; // eax@27 char v17; // al@29 void *v18; // eax@30 int v19; // esi@31 int v20; // eax@34 int v21; // ecx@34 int v22; // eax@34 int v23; // edx@38 int v24; // esi@43 int v25; // ebx@44 int v26; // ebx@44 int v27; // ST0C_4@44 int v28; // edx@46 int v29; // ecx@46 int v30; // eax@46 int v31; // ebx@49 int v32; // eax@50 int *v33; // eax@51 int v34; // eax@51 int v35; // eax@52 int v36; // eax@53 int v37; // eax@59 int v38; // ecx@59 int v39; // edx@59 int (__stdcall *v40)(_DWORD); // eax@59 int v41; // eax@59 int (__stdcall *v42)(_DWORD); // edx@59 int v43; // eax@59 int v44; // ebx@61 int v45; // eax@61 int (__thiscall *v46)(_DWORD, _DWORD); // edx@61 int v47; // eax@61 int v48; // edx@64 unsigned int v49; // ebx@66 int v50; // ecx@71 int v51; // edx@71 int v52; // eax@74 unsigned int v53; // edi@76 int v54; // ebx@76 int v55; // eax@80 int v56; // ebx@80 signed int v57; // edx@80 int v58; // edi@80 int v59; // eax@80 unsigned int v60; // ebx@80 int v61; // eax@80 signed int v62; // ecx@80 int v63; // eax@84 int v64; // eax@84 int v65; // eax@84 int v66; // edx@84 int v67; // eax@84 unsigned int v68; // eax@84 int v69; // ST0C_4@92 int v70; // eax@92 int v71; // ecx@95 int v72; // [sp+10h] [bp-3Ch]@34 int v73; // [sp+14h] [bp-38h]@34 int v74; // [sp+18h] [bp-34h]@1 void *v75; // [sp+1Ch] [bp-30h]@1 unsigned int v76; // [sp+20h] [bp-2Ch]@84 int v77; // [sp+24h] [bp-28h]@59 void *v78; // [sp+28h] [bp-24h]@68 int v79; // [sp+2Ch] [bp-20h]@44 int v80; // [sp+30h] [bp-1Ch]@74 int v81; // [sp+34h] [bp-18h]@59 int v82; // [sp+38h] [bp-14h]@46 int v83; // [sp+3Ch] [bp-10h]@41 int v84; // [sp+48h] [bp-4h]@1 v2 = (int)this; v75 = this; v74 = (int)"MobTacticElement::MobActionAttack::mab_Think"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionAttack::mab_Think"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(v2 + 8); v5 = a2; v84 = 0; if ( v4 > dword_14D129E8 ) { v6 = **(_DWORD **)(v2 + 4); LABEL_3: **(_DWORD **)(v5 + 724) = v6; --dword_750CB8; v84 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_Think"); return v5 + 720; } v8 = sub_478720(*(_DWORD *)(a2 + 4)); if ( v8 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 3952))(v8); if ( v6 ) goto LABEL_3; } if ( *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1072))() + 3278) & 4 ) goto LABEL_9; v9 = **(_DWORD **)(v2 + 4); if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"MobTacticElement::MobActionAttack::mab_Think : Target Null", 0); LABEL_9: v84 = v3; LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_Think"); return (int)off_8492CC; } if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v9 + 768))() || (unsigned __int8)(*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 1156))() == 3 || !(unsigned __int8)(*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 1156))() || (unsigned __int8)(*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 40))() ) goto LABEL_9; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v5 + 4) + 3736))() ) { v84 = -1; LABEL_17: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_Think"); return v2; } LOBYTE(v10) = sub_548D30(*(_DWORD *)(v5 + 4), **(_DWORD **)(v2 + 4)); if ( !v10 || (v11 = sub_409730(**(_DWORD **)(v2 + 4))) != 0 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 3864))(v11) ) goto LABEL_9; v12 = (*(int (__stdcall **)(signed int))(***(_DWORD ***)(v2 + 4) + 996))(291); v13 = ***(_DWORD ***)(v2 + 4); if ( v12 ) { LABEL_24: v14 = (*(int (**)(void))(v13 + 1388))(); sub_418B40((int)byte_85A2C0, v14); goto LABEL_9; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(v13 + 996))(499) ) { v13 = ***(_DWORD ***)(v2 + 4); goto LABEL_24; } if ( *(_DWORD *)(v5 + 4) ) { v15 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))(); if ( v15 ) { v16 = *(_DWORD *)(v15 + 4); if ( v16 ) { if ( *(_WORD *)(v16 + 156) ) { v17 = sub_401220( &unk_AF09DA8, **(_DWORD **)(**(_DWORD **)(v2 + 4) + 102) - **(_DWORD **)(*(_DWORD *)(v5 + 4) + 102), *(_DWORD *)(*(_DWORD *)(**(_DWORD **)(v2 + 4) + 102) + 4) - *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v5 + 4) + 102) + 4)); if ( sub_45F8E0(**(_BYTE **)(*(_DWORD *)(v5 + 4) + 106), (unsigned __int8)v17, (int)&a2) > 15 ) { v18 = (void *)sub_4B7FF0(v5 + 780, v2, *(_DWORD *)(v5 + 4), **(_DWORD **)(v2 + 4)); goto LABEL_31; } v3 = -1; } } } } v20 = *(_DWORD *)(v2 + 4); v21 = *(_DWORD *)(*(_DWORD *)v20 + 102); v72 = *(_DWORD *)v21; v73 = *(_DWORD *)(v21 + 4); sub_4BE0E0( *(void **)(v5 + 4), *(_DWORD *)(*(_DWORD *)v20 + 102), 10000, (int)&v72, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); v22 = **(_DWORD **)(v2 + 4); if ( **(_DWORD **)(v22 + 102) != v72 || *(_DWORD *)(*(_DWORD *)(v22 + 102) + 4) != v73 ) { if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) >= 0x320u ) { v24 = (int)off_8492CC; } else { v71 = *(_DWORD *)(v5 + 724); v24 = v5 + 720; *(_DWORD *)v71 = **(_DWORD **)(v2 + 4); } } else { if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1552))() ) (*(void (**)(void))(**(_DWORD **)(v5 + 4) + 2632))(); v23 = **(_DWORD **)(v5 + 4); if ( *(_WORD *)(v2 + 12) == -1 ) (*(void (__stdcall **)(_DWORD, signed int))(v23 + 1852))(**(_DWORD **)(v2 + 4), 1); else (*(void (__stdcall **)(_DWORD))(v23 + 2932))(*(_BYTE *)(v2 + 16)); v83 = sub_478720(*(_DWORD *)(v5 + 4)); if ( v83 ) { v25 = v83; sub_4BA680((void *)v83); sub_4BAB80(v25); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1856))(v25); v27 = *(_DWORD *)(v5 + 4); v79 = v26; if ( sub_409730(v27) ) { v26 = 0; v79 = 0; } else { if ( v26 < 0 ) { v84 = -1; goto LABEL_17; } } v28 = **(_DWORD **)(v2 + 4); v29 = *(_DWORD *)(v5 + 4); v82 = 12 * v26; v30 = *(_DWORD *)v29; a2 = v28; switch ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((*(int (**)(void))(v30 + 1804))() + 8) + 12 * v26) + 105) ) { case 0: v31 = (*(int (__stdcall **)(int, int))(*(_DWORD *)a2 + 1888))(v83, v26); goto LABEL_54; case 2: a2 = **(_DWORD **)(v5 + 4); v32 = (*(int (__stdcall **)(int))(a2 + 1804))(v26); v31 = (*(int (__thiscall **)(_DWORD, int))(a2 + 1864))(*(_DWORD *)(v5 + 4), v32); goto LABEL_54; case 1: v33 = *(int **)(v5 + 4); a2 = *v33; v34 = (*(int (__stdcall **)(int))(*v33 + 1804))(v26); v31 = (*(int (__thiscall **)(_DWORD, int))(a2 + 1868))(*(_DWORD *)(v5 + 4), v34); goto LABEL_54; case 4: a2 = **(_DWORD **)(v5 + 4); v35 = (*(int (__stdcall **)(int))(a2 + 1804))(v26); v31 = (*(int (__thiscall **)(_DWORD, int))(a2 + 1872))(*(_DWORD *)(v5 + 4), v35); a2 = v31; break; default: v36 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))(); sub_639100( &unk_86DDD8, (int)"MobAction::ma_think : MobTarget Wrong", *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v36 + 8) + v82) + 105)); v31 = 0; LABEL_54: a2 = v31; break; } if ( *(_DWORD *)(v2 + 20) ) { v31 = *(_DWORD *)(v2 + 20); a2 = *(_DWORD *)(v2 + 20); sub_4B8A50((void *)v2); } if ( !v31 ) { v84 = -1; goto LABEL_10; } v37 = sub_402710(v31, *(_DWORD *)(v5 + 4)); v38 = *(_DWORD *)(v5 + 4); v39 = *(_DWORD *)v38; v81 = v37; v40 = *(int (__stdcall **)(_DWORD))(v39 + 1296); v77 = v38; v41 = v40(v31); v42 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)v77 + 1296); v77 = v41; v43 = v42(v31); if ( v81 > (unsigned int)(v43 * v77) ) sub_4BA910((void *)v83, a2); v44 = *(_DWORD *)(v5 + 4); v45 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 4) + 1296))(a2); v46 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v44 + 1296); v77 = v45; v47 = v46(v44, a2); if ( v81 > (unsigned int)(v47 * v77) && !sub_4BA470((void *)v83) ) { if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) >= 0x320u ) { v19 = (int)off_8492CC; } else { v48 = *(_DWORD *)(v5 + 724); v19 = v5 + 720; *(_DWORD *)v48 = a2; } goto LABEL_32; } sub_4AAD70((void *)v83, a2); (*(void (**)(void))(**(_DWORD **)(v5 + 4) + 1816))(); v49 = (unsigned int)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v5 + 4) + 1296))(**(_DWORD **)(v2 + 4)) >> 2; if ( v49 > 0x96 ) v49 = 150; v77 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1820))(); v78 = sub_4B7ED0(v83); if ( v81 >= v49 * v49 ) { v81 = (int)off_8492CC; } else { if ( (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1856))() || (unsigned __int16)sub_427920(&unk_14D42DC0, 5) ) { v81 = v2; } else { v50 = **(_DWORD **)(v2 + 4); v51 = *(_DWORD *)(v5 + 732); *(_BYTE *)(v5 + 736) = 0; *(_DWORD *)v51 = v50; v81 = v5 + 728; } } v52 = (*(int (**)(void))(*(_DWORD *)v83 + 1804))(); v80 = 1; if ( v52 ) v80 = *(_DWORD *)(v52 + 12); v53 = v77; v54 = (unsigned int)(v77 << 8) >> 10; if ( *(_DWORD *)(v5 + 4) && (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))() && *(_DWORD *)((*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))() + 8) && v79 < v80 ) { v55 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))(); v56 = v82; v57 = (signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v55 + 8) + v82) + 75) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v58 = v57 + ((unsigned int)v57 >> 31); v59 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))(); v60 = ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v59 + 8) + v56) + 77) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v59 + 8) + v56) + 77) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v80 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)((*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))() + 8) + v82) + 75); v61 = *(_DWORD *)(*(_DWORD *)((*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))() + 8) + v82); v62 = *(_WORD *)(v61 + 69); if ( !*(_WORD *)(v61 + 69) ) v62 = 1; v80 = (v80 << 7) / v62; if ( !v80 ) v80 = 1; v63 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1072))(); v76 = v63; v53 = ((signed int)((unsigned __int64)(*(_DWORD *)(v63 + 2584) * (v58 << 7) / v80 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v63 + 2584) * (v58 << 7) / v80 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v64 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1072))(); v76 = v64; v54 = ((signed int)((unsigned __int64)(*(_DWORD *)(v64 + 2584) * (signed int)(v60 << 7) / v80 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v64 + 2584) * (signed int)(v60 << 7) / v80 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v65 = (*(int (**)(void))(**(_DWORD **)(v5 + 4) + 1804))(); v66 = **(_DWORD **)(v5 + 4); v76 = ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v65 + 8) + v82) + 73) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v65 + 8) + v82) + 73) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v67 = (*(int (**)(void))(v66 + 1072))(); v68 = ((signed int)((unsigned __int64)((signed int)(v76 * *(_DWORD *)(v67 + 2584)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v76 * *(_DWORD *)(v67 + 2584)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( (v53 & 0x80000000u) != 0 ) v53 = 0; if ( v54 < 0 ) v54 = 0; if ( (v68 & 0x80000000u) != 0 ) v68 = 0; *((_DWORD *)v75 + 2) = (char *)v78 + v53 + v68 + dword_14D129E8; } if ( v79 ) { v18 = sub_4B88A0((void *)(v5 + 748), (int)((char *)v78 + v77), v81, a2); } else { *(_BYTE *)(v83 + 9476) |= 4u; v69 = a2; v70 = (int)sub_4B8920((void *)(v5 + 764), v53 - v54, v81, a2); v18 = sub_4B88A0((void *)(v5 + 748), v54, v70, v69); } LABEL_31: v19 = (int)v18; LABEL_32: --dword_750CB8; v84 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_Think"); return v19; } if ( !sub_409730(*(_DWORD *)(v5 + 4)) ) goto LABEL_9; v24 = sub_4B9650((void *)v2, v5); } --dword_750CB8; v84 = v3; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionAttack::mab_Think"); return v24; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 14D129E8: using guessed type int dword_14D129E8; //----- (004BB920) -------------------------------------------------------- int __thiscall sub_4BB920(void *this, int a2) { void *v2; // edi@1 int v3; // ebx@1 int v4; // ecx@1 int v5; // eax@2 char v6; // al@5 int v7; // esi@6 unsigned __int16 v9; // ax@11 int v10; // eax@20 int v11; // esi@20 int v12; // [sp-10h] [bp-30h]@10 int v13; // [sp-Ch] [bp-2Ch]@10 int v14; // [sp-8h] [bp-28h]@10 int v15; // [sp-4h] [bp-24h]@10 int v16; // [sp+28h] [bp+8h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionRoaming::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionRoaming::mab_Think"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(_DWORD *)(a2 + 4); v16 = v4; if ( !v4 ) goto LABEL_7; v5 = (**(int (***)(void))v4)(); if ( v5 ) { while ( (_UNKNOWN *)v5 != &unk_132460EC ) { v5 = *(_DWORD *)(v5 + 4); if ( !v5 ) goto LABEL_5; } v6 = 1; } else { LABEL_5: v6 = 0; } v7 = v6 != 0 ? v16 : 0; if ( !(v6 != 0 ? v16 : 0) ) goto LABEL_7; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) != 10 ) { v9 = (*(_WORD *)(v7 + 9520) >> 1) & 0x7F; if ( v9 ) { if ( *(_BYTE *)(v7 + 9521) < v9 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2872))(v7) ) { ++*(_BYTE *)(v7 + 9521); v15 = v3; v14 = (int)v2; v13 = v3 + 636; *(_DWORD *)(v3 + 640) = v2; v12 = *(_WORD *)(v7 + 9522); goto LABEL_20; } LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionRoaming::mab_Think"); return (int)off_8492CC; } *(_BYTE *)(v7 + 9521) = 0; } else { if ( **(_DWORD **)(v7 + 102) == *(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1556))(v7) && *(_DWORD *)(*(_DWORD *)(v7 + 102) + 4) == *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1556))(v7) + 4) ) goto LABEL_7; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionRoaming::mab_Think"); return (int)off_8492D0; } v15 = v3; *(_DWORD *)(v3 + 640) = v2; v14 = (int)v2; v13 = v3 + 636; v12 = *(_WORD *)(v7 + 9522); LABEL_20: v10 = sub_4BA160(v2, v7, v12, v13, v14, v15); --dword_750CB8; v11 = v10; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionRoaming::mab_Think"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); //----- (004BBB20) -------------------------------------------------------- void __cdecl sub_4BBB20(void *a1, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@3 int v5; // [sp+0h] [bp-30h]@1 char v6; // [sp+10h] [bp-20h]@3 void *v7; // [sp+1Ch] [bp-14h]@1 int *v8; // [sp+20h] [bp-10h]@1 int v9; // [sp+2Ch] [bp-4h]@1 v8 = &v5; v2 = a1; v3 = a2; v7 = a1; v9 = 0; while ( v3 ) { v4 = sub_5C5DD0((int)&v6); if ( v2 ) { *(_DWORD *)v2 = *(_DWORD *)v4; *((_DWORD *)v2 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v2 + 2) = *(_DWORD *)(v4 + 8); } nullsub_2(&v6); --v3; v2 = (char *)v2 + 12; } } //----- (004BBC10) -------------------------------------------------------- int __thiscall sub_4BBC10(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 int v10; // [sp+0h] [bp-28h]@1 int v11; // [sp+10h] [bp-18h]@4 void *v12; // [sp+14h] [bp-14h]@4 int *v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+24h] [bp-4h]@4 v13 = &v10; v2 = this; if ( a2 > 0x15555555 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 12; if ( result < a2 ) { v4 = sub_480E80(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v11 = v4; v14 = 0; sub_5AE9E0((int)v6, v5, v4); v7 = *(void **)v2; v12 = *(void **)(v2 + 4); v8 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(v12 - v7)) >> 32) >> 1; v9 = v8 + ((unsigned int)v8 >> 31); v14 = -1; if ( v7 ) { for ( ; v7 != v12; v7 = (char *)v7 + 12 ) nullsub_2(v7); operator delete(*(void **)v2); } result = v11; *(_DWORD *)(v2 + 8) = v11 + 12 * a2; *(_DWORD *)(v2 + 4) = result + 12 * v9; *(_DWORD *)v2 = result; } return result; } //----- (004BBD0D) -------------------------------------------------------- void __usercall sub_4BBD0D(int a1) { operator delete(*(void **)(a1 - 24)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004BBD30) -------------------------------------------------------- int __thiscall sub_4BBD30(int this, int a2, void *a3, void *a4) { void *v4; // eax@1 void *v5; // esi@1 int v6; // edx@1 void *v7; // ecx@2 void *v8; // ebx@4 void *v9; // edi@4 int result; // eax@7 int v11; // [sp+4h] [bp-4h]@1 v4 = a4; v5 = a3; v6 = this; v11 = this; *(_DWORD *)a2 = a3; if ( a3 == a4 ) { result = a2; } else { v7 = *(void **)(this + 4); if ( a4 != v7 ) { do { *(_DWORD *)v5 = *(_DWORD *)v4; *((_DWORD *)v5 + 1) = *((_DWORD *)v4 + 1); *((_DWORD *)v5 + 2) = *((_DWORD *)v4 + 2); v4 = (char *)v4 + 12; v5 = (char *)v5 + 12; } while ( v4 != v7 ); } v8 = *(void **)(v6 + 4); v9 = v5; if ( v5 != v8 ) { do { nullsub_2(v9); v9 = (char *)v9 + 12; } while ( v9 != v8 ); v6 = v11; } result = a2; *(_DWORD *)(v6 + 4) = v5; } return result; } //----- (004BBDA0) -------------------------------------------------------- int __thiscall sub_4BBDA0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 12; if ( 357913941 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 12; if ( v3 > (unsigned int)result ) { if ( 357913941 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_4BBC10(this, v5); } return result; } //----- (004BBE20) -------------------------------------------------------- int __thiscall sub_4BBE20(int this, unsigned int a2) { int v2; // esi@1 void *v3; // ebx@1 signed int v4; // ecx@1 unsigned int v5; // edi@1 int result; // eax@1 v2 = this; v3 = *(void **)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; v5 = a2; result = v4 / 12; if ( v4 / 12 <= a2 ) { if ( v4 / 12 < a2 ) { sub_4BBDA0(v2, a2 - result); sub_4BBB20(*(void **)(v2 + 4), v5 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12; *(_DWORD *)(v2 + 4) += 12 * (v5 - result); } } else { result = sub_4BBD30(v2, (int)&a2, (void *)(*(_DWORD *)v2 + 12 * a2), v3); } return result; } //----- (004BBED0) -------------------------------------------------------- int __thiscall sub_4BBED0(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 int (*v4)(void); // eax@1 int v5; // eax@6 int v6; // ecx@6 int v7; // ebx@6 int v8; // edx@6 int v9; // ebx@6 int v10; // eax@7 int v12; // ebx@10 int v13; // ecx@10 int v14; // eax@10 int v15; // edx@10 int v16; // edx@10 int v17; // eax@10 int v18; // eax@10 int v19; // eax@11 void *v20; // ST10_4@11 int v21; // esi@11 signed int v22; // edi@11 int v23; // eax@14 signed int v24; // esi@16 int v25; // ebx@18 int v26; // eax@18 int v27; // edx@18 int (__thiscall *v28)(_DWORD); // eax@18 int v29; // eax@18 unsigned int v30; // ebx@21 int v31; // ebx@23 int v32; // eax@23 int v33; // ecx@23 int v34; // edx@23 int v35; // eax@23 int v36; // eax@23 signed int v37; // eax@23 int v38; // eax@24 int v39; // ecx@24 int v40; // edx@24 unsigned int v41; // edx@27 int v42; // edx@32 int v43; // eax@32 int v44; // eax@33 int v45; // ecx@35 signed int v46; // eax@35 int v47; // eax@36 unsigned int v48; // edx@36 int v49; // eax@36 int v50; // ecx@36 int v51; // eax@36 int v52; // edx@36 int v53; // ecx@36 int v54; // ebx@36 int v55; // eax@36 int v56; // edx@36 int v57; // ebx@36 int v58; // eax@36 int v59; // ecx@36 int v60; // edx@37 signed int v61; // edx@38 int v62; // ebx@38 int v63; // eax@41 int (*v64)(void); // eax@42 int v65; // eax@47 int v66; // [sp-4h] [bp-4Ch]@12 int v67; // [sp-4h] [bp-4Ch]@16 unsigned int v68; // [sp+10h] [bp-38h]@27 unsigned int v69; // [sp+14h] [bp-34h]@32 int v70; // [sp+18h] [bp-30h]@1 int v71; // [sp+1Ch] [bp-2Ch]@10 int v72; // [sp+20h] [bp-28h]@10 int v73; // [sp+24h] [bp-24h]@23 int v74; // [sp+28h] [bp-20h]@23 int v75; // [sp+2Ch] [bp-1Ch]@18 int v76; // [sp+30h] [bp-18h]@15 int v77; // [sp+34h] [bp-14h]@14 int v78; // [sp+38h] [bp-10h]@10 int v79; // [sp+44h] [bp-4h]@1 v2 = (int)this; v70 = (int)"MobTacticElement::MobActionChase::mab_Think"; sub_4675D0((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); dword_7508B8[dword_750CB8] = (int)"MobTacticElement::MobActionChase::mab_Think"; dword_750AB8[dword_750CB8++] = 0; v3 = a2; v4 = *(int (**)(void))(**(_DWORD **)(a2 + 4) + 1300); v79 = 0; if ( !(unsigned __int16)v4() || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(v3 + 4) + 1072))() + 3278) & 1 || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(v3 + 4) + 1072))() + 3278) & 2 ) { --dword_750CB8; goto LABEL_49; } if ( *(_DWORD *)(v3 + 4) ) (*(void (**)(void))(**(_DWORD **)(v3 + 4) + 3916))(); v5 = (*(int (**)(void))(**(_DWORD **)(v3 + 4) + 1560))(); v6 = *(_DWORD *)(v3 + 4); v7 = *(_DWORD *)(v6 + 102); v8 = *(_DWORD *)v7 - *(_DWORD *)v5; v9 = *(_DWORD *)(v7 + 4) - *(_DWORD *)(v5 + 4); a2 = v8; if ( v9 * v9 + a2 * a2 <= (unsigned int)(*(int (**)(void))(*(_DWORD *)v6 + 1564))() ) { sub_4026A0(&v78, 603, (int)"MobTacticElement::MobActionChase::mab_Think", 1); v12 = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 102); v13 = **(_DWORD **)(v2 + 4); v14 = *(_DWORD *)(v13 + 102); v15 = *(_DWORD *)v12 - *(_DWORD *)v14; LOBYTE(v79) = 1; v71 = v15; v16 = *(_DWORD *)(v12 + 4) - *(_DWORD *)(v14 + 4); v17 = *(_DWORD *)v13; v72 = v16; v18 = (*(int (**)(void))(v17 + 1548))(); if ( v71 * (*(_DWORD *)v12 - *(_DWORD *)v18) + v72 * (*(_DWORD *)(v12 + 4) - *(_DWORD *)(v18 + 4)) <= 0 ) { v19 = *(_DWORD *)(**(_DWORD **)(v2 + 4) + 102); v71 = *(_DWORD *)v19; v20 = *(void **)(v3 + 4); v72 = *(_DWORD *)(v19 + 4); sub_4B8B10(v20, (int)&v71); **(_DWORD **)(v3 + 700) = **(_DWORD **)(v2 + 4); v21 = sub_4B7FB0(v3 + 644, **(_DWORD **)(v2 + 4), v3 + 696, v2); v22 = 1; goto LABEL_12; } sub_4026A0(&v77, 603, (int)"MobTacticElement::MobActionChase::mab_Think", 2); v23 = *(_DWORD *)(v3 + 4); LOBYTE(v79) = 2; BYTE3(a2) = 0; if ( byte_8492C4 ) { v76 = *(_DWORD *)(v23 + 122); if ( !v76 ) { v24 = 1; --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v77); v67 = v78; LABEL_17: dword_750CB8 -= v24; LOBYTE(v79) = 0; sub_467660((int)&unk_D020420, v67); dword_750CB8 -= v24; LABEL_49: v79 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); return (int)off_8492CC; } v25 = **(_DWORD **)(v2 + 4); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 1548))(**(_DWORD **)(v2 + 4)); v27 = *(_DWORD *)v25; v75 = v26; v28 = *(int (__thiscall **)(_DWORD))(v27 + 1548); v76 += 164; v29 = v28(v25); if ( sub_5C7610((void *)v76, *(_DWORD *)v75, *(_DWORD *)(v29 + 4)) ) { **(_DWORD **)(v3 + 700) = **(_DWORD **)(v2 + 4); --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v77); --dword_750CB8; LOBYTE(v79) = 0; sub_467660((int)&unk_D020420, v78); --dword_750CB8; v79 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); return v3 + 696; } if ( dword_D9FB828 & 1 ) { v30 = 0; } else { dword_D9FB828 |= 1u; v30 = 0; dword_D9FB818 = 0; dword_D9FB81C = 0; dword_D9FB820 = 0; LOBYTE(v79) = 4; sub_4BBC10((int)&dword_D9FB818, 0x400u); atexit(sub_699FD0); LOBYTE(v79) = 2; } sub_4BBE20((int)&dword_D9FB818, v30); v31 = **(_DWORD **)(v2 + 4); v32 = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 102); v33 = *(_DWORD *)(v32 + 4); v34 = *(_DWORD *)v32; v35 = *(_DWORD *)v31; v74 = v33; v73 = v34; v75 = (*(int (__thiscall **)(int))(v35 + 1548))(v31); v36 = (*(int (__thiscall **)(int))(*(_DWORD *)v31 + 1548))(v31); v37 = sub_5C72C0(dword_D9FB82C, v76, v73, v74, *(_DWORD *)v75, *(_DWORD *)(v36 + 4), (int)&dword_D9FB818); if ( v37 <= 0 ) { v38 = **(_DWORD **)(v2 + 4); v39 = *(_DWORD *)(v3 + 732); v40 = v77; *(_BYTE *)(v3 + 736) = 10; *(_DWORD *)v39 = v38; --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v40); --dword_750CB8; LOBYTE(v79) = 0; sub_467660((int)&unk_D020420, v78); --dword_750CB8; v79 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); return v3 + 728; } if ( v37 == 2 ) BYTE3(a2) = 1; v68 = *((_DWORD *)dword_D9FB818 + 3); v41 = *((_DWORD *)dword_D9FB818 + 4); } else { sub_4A8ED0(*(_DWORD *)(v23 + 122)); dword_D714ED4 = 8 * **(_DWORD **)(*(_DWORD *)(v3 + 4) + 102) / 0x32u; dword_D714ED8 = 8 * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 4) + 102) + 4) / 0x32u; dword_D714EDC = 8 * *(_DWORD *)(*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 1548))() / 0x32u; dword_D714EE0 = 8 * *(_DWORD *)((*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 1548))() + 4) / 0x32u; sub_62F910((int)dword_D711FE0); if ( dword_D714EEC <= 0 ) { sub_639100(&unk_86DDD8, (int)"Path not found", dword_D714EEC); v24 = 1; --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v77); v67 = v78; goto LABEL_17; } if ( dword_D714EEC == 1 ) BYTE3(a2) = 1; v42 = *(_DWORD *)(v3 + 4); v69 = (unsigned int)(50 * dword_D714EF4) >> 3; v68 = (unsigned int)(50 * dword_D714EF0) >> 3; LOBYTE(v43) = sub_401060( &unk_86DDD8, (**(_DWORD **)(v42 + 102) - v68) * (**(_DWORD **)(v42 + 102) - v68) + (*(_DWORD *)(*(_DWORD *)(v42 + 102) + 4) - v69) * (*(_DWORD *)(*(_DWORD *)(v42 + 102) + 4) - v69) > 0, (int)"MobThink_Chase::mtc_pathfind : Zero path", (unsigned int)(50 * dword_D714EF0) >> 3, (unsigned int)(50 * dword_D714EF4) >> 3); if ( !v43 ) { LABEL_35: sub_4026A0(&v76, 603, (int)"MobTacticElement::MobActionChase::mab_Think", 3); v45 = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 102); v46 = *(_DWORD *)v45 - v68; v75 = *(_DWORD *)(v45 + 4) - v69; LOBYTE(v79) = 5; v74 = v46; v72 = sub_4011C0(&unk_AF09DA8, v46, v75); if ( BYTE3(a2) ) { v47 = (*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 1548))(); v68 = *(_DWORD *)v47; v48 = *(_DWORD *)(v47 + 4); v49 = *(_DWORD *)(v2 + 4); v50 = *(_DWORD *)(v3 + 4); v69 = v48; v51 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v50 + 1296))(*(_DWORD *)v49); v52 = *(_DWORD *)(v3 + 4); v53 = **(_DWORD **)(v2 + 4); v73 = v51; v54 = **(_DWORD **)(v52 + 102) - *(_DWORD *)(*(int (**)(void))(*(_DWORD *)v53 + 1548))(); v55 = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 102); v56 = ***(_DWORD ***)(v2 + 4); a2 = v54; v57 = *(_DWORD *)(v55 + 4); v58 = (*(int (**)(void))(v56 + 1548))(); v59 = sub_4011C0(&unk_AF09DA8, a2, v57 - *(_DWORD *)(v58 + 4)); if ( v59 < v73 ) { v60 = v76; **(_DWORD **)(v3 + 700) = **(_DWORD **)(v2 + 4); --dword_750CB8; LOBYTE(v79) = 2; sub_467660((int)&unk_D020420, v60); --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v77); --dword_750CB8; LOBYTE(v79) = 0; sub_467660((int)&unk_D020420, v78); --dword_750CB8; v79 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); return v3 + 696; } v61 = (signed int)((unsigned __int64)(13743895352i64 * v73) >> 32) >> 2; v62 = v61 + ((unsigned int)v61 >> 31); if ( v62 ) { a2 = v74 * v62 / v59; v68 += v74 * v62 / v59; v69 += v75 * v62 / v59; } } if ( sub_409730(*(_DWORD *)(v3 + 4)) ) { (*(void (**)(void))(**(_DWORD **)(v3 + 4) + 3792))(); sub_4B8B10(*(void **)(v3 + 4), (int)&v68); **(_DWORD **)(v3 + 700) = **(_DWORD **)(v2 + 4); v63 = sub_4B7FB0(v3 + 644, **(_DWORD **)(v2 + 4), v3 + 696, v2); v22 = 1; --dword_750CB8; v21 = v63; LOBYTE(v79) = 2; sub_467660((int)&unk_D020420, v76); --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v77); v66 = v78; goto LABEL_13; } sub_4026A0(&a2, 603, (int)"MobTacticElement::MobActionChase::mab_Think", 4); v64 = *(int (**)(void))(**(_DWORD **)(v3 + 4) + 1804); LOBYTE(v79) = 6; if ( v64() && *(_DWORD *)((*(int (**)(void))(**(_DWORD **)(v3 + 4) + 1804))() + 4) && *(_WORD *)(*(_DWORD *)((*(int (**)(void))(**(_DWORD **)(v3 + 4) + 1804))() + 4) + 158) < v72 ) sub_4B8B10(*(void **)(v3 + 4), (int)&v68); else sub_4B8310(*(void **)(v3 + 4), (int)&v68); **(_DWORD **)(v3 + 700) = **(_DWORD **)(v2 + 4); v65 = sub_4B7FB0(v3 + 644, **(_DWORD **)(v2 + 4), v3 + 696, v2); v22 = 1; --dword_750CB8; v21 = v65; LOBYTE(v79) = 5; sub_467660((int)&unk_D020420, a2); --dword_750CB8; LOBYTE(v79) = 2; sub_467660((int)&unk_D020420, v76); --dword_750CB8; LOBYTE(v79) = 1; sub_467660((int)&unk_D020420, v77); LABEL_12: v66 = v78; LABEL_13: dword_750CB8 -= v22; LOBYTE(v79) = 0; sub_467660((int)&unk_D020420, v66); dword_750CB8 -= v22; v79 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); return v21; } v44 = (*(int (**)(void))(***(_DWORD ***)(v2 + 4) + 1548))(); v68 = *(_DWORD *)v44; v41 = *(_DWORD *)(v44 + 4); BYTE3(a2) = 1; } v69 = v41; goto LABEL_35; } v10 = sub_478720(*(_DWORD *)(v3 + 4)); if ( v10 ) (*(void (__thiscall **)(int))(*(_DWORD *)v10 + 3948))(v10); --dword_750CB8; v79 = -1; sub_467660((int)&unk_D020420, (int)"MobTacticElement::MobActionChase::mab_Think"); return (int)off_8492D0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492C4: using guessed type char byte_8492C4; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); // D714ED4: using guessed type int dword_D714ED4; // D714ED8: using guessed type int dword_D714ED8; // D714EDC: using guessed type int dword_D714EDC; // D714EE0: using guessed type int dword_D714EE0; // D714EEC: using guessed type int dword_D714EEC; // D714EF0: using guessed type int dword_D714EF0; // D714EF4: using guessed type int dword_D714EF4; // D9FB81C: using guessed type int dword_D9FB81C; // D9FB820: using guessed type int dword_D9FB820; // D9FB828: using guessed type int dword_D9FB828; //----- (004BC840) -------------------------------------------------------- void *__thiscall sub_4BC840(void *this) { void *v1; // esi@1 v1 = this; sub_4A8F30(this); *(_DWORD *)v1 = &off_6C012C; *((_DWORD *)v1 + 5) = 0; return v1; } // 6C012C: using guessed type int (__stdcall *off_6C012C)(int, int, int); //----- (004BC860) -------------------------------------------------------- void *__thiscall sub_4BC860(void *this) { void *v1; // esi@1 v1 = this; sub_4A8F30(this); *((_DWORD *)v1 + 5) = 0; *(_DWORD *)v1 = &off_6C016C; sub_588320((int)((char *)v1 + 44)); return v1; } // 6C016C: using guessed type int (__stdcall *off_6C016C)(int, int, int); //----- (004BC8C0) -------------------------------------------------------- void *__thiscall sub_4BC8C0(void *this) { void *v1; // esi@1 v1 = this; sub_4A8F30(this); *((_DWORD *)v1 + 5) = 0; *(_DWORD *)v1 = &off_6C016C; sub_588320((int)((char *)v1 + 44)); *(_DWORD *)v1 = &off_6C01B4; return v1; } // 6C016C: using guessed type int (__stdcall *off_6C016C)(int, int, int); // 6C01B4: using guessed type int (__stdcall *off_6C01B4)(int, int, int); //----- (004BC920) -------------------------------------------------------- void __thiscall sub_4BC920(int this) { void *v1; // esi@1 v1 = (void *)this; *(_DWORD *)this = &off_6C016C; sub_588340((void *)(this + 44)); *(_DWORD *)v1 = &off_6C012C; sub_4A8F50(v1); } // 6C012C: using guessed type int (__stdcall *off_6C012C)(int, int, int); // 6C016C: using guessed type int (__stdcall *off_6C016C)(int, int, int); //----- (004BC990) -------------------------------------------------------- void *__thiscall sub_4BC990(void *this) { void *v1; // esi@1 v1 = this; sub_4A8F30(this); *((_DWORD *)v1 + 5) = 0; *(_DWORD *)v1 = &off_6C01FC; return v1; } // 6C01FC: using guessed type int (__stdcall *off_6C01FC)(int, int, int); //----- (004BC9B0) -------------------------------------------------------- void __thiscall sub_4BC9B0(void *this) { *(_DWORD *)this = &off_6C012C; sub_4A8F50(this); } // 6C012C: using guessed type int (__stdcall *off_6C012C)(int, int, int); //----- (004BC9C0) -------------------------------------------------------- char __thiscall sub_4BC9C0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@4 v3 = this; if ( *(_DWORD *)(a2 + 8) ) { if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a2 + 8) + 1232))() == 2 ) { if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a2 + 8) + 768))() ) { v4 = *(_DWORD *)(a2 + 4); if ( (*(int (**)(void))(**(_DWORD **)(a2 + 8) + 836))() == v4 ) *(_DWORD *)(*((_DWORD *)v3 + 1) + 4 * (*(_BYTE *)(*((_DWORD *)v3 + 1) + 2))++ + 3) = v4; } } } return 1; } //----- (004BCA40) -------------------------------------------------------- void *__thiscall sub_4BCA40(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C023C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C023C: using guessed type int (__thiscall *off_6C023C)(void *, char); //----- (004BCA80) -------------------------------------------------------- void __thiscall sub_4BCA80(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6C0260; _LN21((void *)(this + 24), 0x20u, 10, (void (__thiscall *)(void *))sub_4A8F20); *(_DWORD *)v1 = &off_6C023C; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6C023C: using guessed type int (__thiscall *off_6C023C)(void *, char); // 6C0260: using guessed type int (__thiscall *off_6C0260)(void *, char); //----- (004BCAF0) -------------------------------------------------------- void *__thiscall sub_4BCAF0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C012C; sub_4A8F50(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C012C: using guessed type int (__stdcall *off_6C012C)(int, int, int); //----- (004BCB20) -------------------------------------------------------- void *__thiscall sub_4BCB20(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C016C; sub_588340((char *)this + 44); *(_DWORD *)v2 = &off_6C012C; sub_4A8F50(v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C012C: using guessed type int (__stdcall *off_6C012C)(int, int, int); // 6C016C: using guessed type int (__stdcall *off_6C016C)(int, int, int); //----- (004BCBA0) -------------------------------------------------------- char __thiscall sub_4BCBA0(int this, int a2, __int16 a3) { int v3; // ecx@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-14h]@1 int v6; // [sp+Ch] [bp-10h]@1 int v7; // [sp+18h] [bp-4h]@1 v6 = a2; v5 = &off_6C0284; *(_BYTE *)(a2 + 2) = 0; *(_WORD *)v6 = a3; v3 = *(_DWORD *)(this + 20); v7 = 0; return sub_43C470(v3, (int)&v5); } // 6C0284: using guessed type int (__stdcall *off_6C0284)(int, int); //----- (004BCC10) -------------------------------------------------------- void *__thiscall sub_4BCC10(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6C0260; _LN21((char *)this + 24, 0x20u, 10, (void (__thiscall *)(void *))sub_4A8F20); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6C023C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C023C: using guessed type int (__thiscall *off_6C023C)(void *, char); // 6C0260: using guessed type int (__thiscall *off_6C0260)(void *, char); //----- (004BCCA0) -------------------------------------------------------- char __thiscall sub_4BCCA0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6BDA34; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6BDA34: using guessed type int (__stdcall *off_6BDA34)(int, int); //----- (004BCE20) -------------------------------------------------------- char __thiscall sub_4BCE20(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_WORD *)v2 = *(_WORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v2 + 28) = *(_DWORD *)(a2 + 28); result = 1; } else { result = 0; } return result; } //----- (004BCE80) -------------------------------------------------------- char __thiscall sub_4BCE80(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_WORD *)v2 = *(_WORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v2 + 28) = *(_DWORD *)(a2 + 28); result = 1; } else { result = 0; } return result; } //----- (004BCEE0) -------------------------------------------------------- char __thiscall sub_4BCEE0(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_WORD *)a2 = *(_WORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v5 + 24); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v5 + 28); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004BCF50) -------------------------------------------------------- char __thiscall sub_4BCF50(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_WORD *)a2 = *(_WORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v5 + 24); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v5 + 28); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004BCFE0) -------------------------------------------------------- int __thiscall sub_4BCFE0(int this) { int v1; // esi@1 int v2; // eax@2 int v3; // eax@5 int v4; // eax@8 int v5; // eax@11 int v6; // eax@14 int v7; // eax@17 int v8; // eax@20 int v9; // eax@23 int v10; // eax@26 int v11; // eax@29 v1 = this; *(_DWORD *)this = &off_6C023C; *(_DWORD *)(this + 16) = 0; sub_4BCCA0(this, 0xAu); *(_DWORD *)v1 = &off_6C0260; _eh_vector_constructor_iterator_( (void *)(v1 + 24), 0x20u, 10, (int)sub_4A8F10, (void (__thiscall *)(void *))sub_4A8F20); if ( *(_WORD *)(v1 + 4) > 0u ) { v2 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)v2 ) *(_DWORD *)v2 = v1 + 24; } if ( *(_WORD *)(v1 + 4) > 1u ) { v3 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v3 + 12) ) *(_DWORD *)(v3 + 12) = v1 + 56; } if ( *(_WORD *)(v1 + 4) > 2u ) { v4 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v4 + 24) ) *(_DWORD *)(v4 + 24) = v1 + 88; } if ( *(_WORD *)(v1 + 4) > 3u ) { v5 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + 36) ) *(_DWORD *)(v5 + 36) = v1 + 120; } if ( *(_WORD *)(v1 + 4) > 4u ) { v6 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v6 + 48) ) *(_DWORD *)(v6 + 48) = v1 + 152; } if ( *(_WORD *)(v1 + 4) > 5u ) { v7 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v7 + 60) ) *(_DWORD *)(v7 + 60) = v1 + 184; } if ( *(_WORD *)(v1 + 4) > 6u ) { v8 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v8 + 72) ) *(_DWORD *)(v8 + 72) = v1 + 216; } if ( *(_WORD *)(v1 + 4) > 7u ) { v9 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v9 + 84) ) *(_DWORD *)(v9 + 84) = v1 + 248; } if ( *(_WORD *)(v1 + 4) > 8u ) { v10 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v10 + 96) ) *(_DWORD *)(v10 + 96) = v1 + 280; } if ( *(_WORD *)(v1 + 4) > 9u ) { v11 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v11 + 108) ) *(_DWORD *)(v11 + 108) = v1 + 312; } return v1; } // 6C023C: using guessed type int (__thiscall *off_6C023C)(void *, char); // 6C0260: using guessed type int (__thiscall *off_6C0260)(void *, char); //----- (004BD170) -------------------------------------------------------- unsigned int __thiscall sub_4BD170(int this, int a2) { int v2; // esi@1 unsigned int result; // eax@2 int v4; // eax@3 unsigned int v5; // ecx@3 unsigned int v6; // edi@3 bool v7; // zf@3 int v8; // edx@3 v2 = this; if ( a2 > 0 ) { v4 = *(_DWORD *)(this + 4); v5 = *(_DWORD *)(this + 20); v6 = *(_DWORD *)(v2 + 24); *(_BYTE *)(v2 + 52) = v5 > **(_DWORD **)(v4 + 102); v7 = *(_BYTE *)(v2 + 52) == 0; *(_BYTE *)(v2 + 60) = v6 > *(_DWORD *)(*(_DWORD *)(v4 + 102) + 4); v8 = *(_DWORD *)(v4 + 102); if ( v7 ) *(_DWORD *)(v2 + 48) = *(_DWORD *)v8 - v5; else *(_DWORD *)(v2 + 48) = v5 - *(_DWORD *)v8; if ( *(_BYTE *)(v2 + 60) ) *(_DWORD *)(v2 + 56) = v6 - *(_DWORD *)(*(_DWORD *)(v4 + 102) + 4); else *(_DWORD *)(v2 + 56) = *(_DWORD *)(*(_DWORD *)(v4 + 102) + 4) - v6; result = 1000 * sub_4011C0(&unk_AF09DA8, *(_DWORD *)(v2 + 48), *(_DWORD *)(v2 + 56)) / (unsigned int)a2; *(_DWORD *)(v2 + 8) = a2; *(_DWORD *)(v2 + 32) = result; if ( !result ) *(_DWORD *)(v2 + 32) = 1; } else { result = (unsigned int)sub_639100(&unk_86DDD8, (int)"MoveManager::mm_RecalcSpeed : speed zero", a2); } return result; } //----- (004BD250) -------------------------------------------------------- int __thiscall sub_4BD250(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@5 DWORD v6; // eax@7 int v8; // [sp-4h] [bp-24h]@2 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"MoveManager::mm_MoveStart"); dword_7508B8[dword_750CB8] = (int)"MoveManager::mm_MoveStart"; dword_750AB8[dword_750CB8++] = -1; if ( a3 > 0 ) { if ( a2 ) { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 4) + 102); if ( *(_DWORD *)v5 != *(_DWORD *)a2 || *(_DWORD *)(v5 + 4) != *(_DWORD *)(a2 + 4) ) { *(_DWORD *)v4 = a4; *(_DWORD *)(v4 + 12) = *(_DWORD *)v5; *(_DWORD *)(v4 + 16) = *(_DWORD *)(v5 + 4); v6 = timeGetTime(); *(_DWORD *)(v4 + 28) = v6; *(_DWORD *)(v4 + 40) = v6; *(_DWORD *)(v4 + 36) = v6; *(_DWORD *)(v4 + 44) = 0; *(_DWORD *)(v4 + 20) = *(_DWORD *)a2; *(_DWORD *)(v4 + 24) = *(_DWORD *)(a2 + 4); sub_4BD170(v4, a3); } } else { sub_639100(&unk_86DDD8, (int)"MoveManager::mm_MoveStart : Where am I to go?", 0); } --dword_750CB8; v8 = (int)"MoveManager::mm_MoveStart"; } else { --dword_750CB8; v8 = (int)"MoveManager::mm_MoveStart"; } return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BD370) -------------------------------------------------------- char __stdcall sub_4BD370(int a1, int a2, int a3) { int v3; // eax@1 int v4; // ebx@4 int v5; // eax@5 int v6; // eax@14 int v7; // eax@17 v3 = *(_DWORD *)(a1 + 122); if ( v3 && *(_DWORD *)(v3 + 16) ) { if ( sub_549240(a1) == 1 ) { v4 = -1; } else { v5 = *(_DWORD *)(a1 + 122); if ( *(_DWORD *)(v5 + 292) == 1 ) v4 = -1; else v4 = *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72); } } else { v4 = 0; } if ( sub_402710(a1, a2) >= (unsigned int)v4 ) { if ( a1 == a2 ) sub_639100(&unk_86DDD8, (int)"AxialListBriefExchangerAtMove::ali_Work : BriefInfo to me", 0); if ( sub_499E90(a1, a2) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)a1 + 1224))(a1, a2); sub_43C5A0((int)&off_74A030, a1); if ( *((_BYTE *)off_74A1A1 + 2) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a2, &off_74A030); } } if ( sub_499E90(a2, a1) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1224))(a2, a1); sub_43C5A0((int)&off_74A030, a2); if ( *((_BYTE *)off_74A1A1 + 2) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, a1, &off_74A030); } } } return 1; } // 74A030: using guessed type void *off_74A030; // 74A1A1: using guessed type void *off_74A1A1; //----- (004BD480) -------------------------------------------------------- int __thiscall sub_4BD480(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int (__stdcall **v5)(int, int, int); // [sp+8h] [bp-18h]@1 int v6; // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; v7 = (int)"ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sub_427BE0(&v5); v5 = &off_6C02B8; v6 = a2; LOBYTE(v8) = 1; v3 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v3, a2, 0, 0, (int)&v5, 0, 65535); LOBYTE(v8) = 0; v5 = &off_6C02B8; sub_427EB0(&v5); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"); } // 6C02B8: using guessed type int (__stdcall *off_6C02B8)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BD570) -------------------------------------------------------- char __stdcall sub_4BD570(int a1, int a2, int a3) { int v3; // eax@2 signed int v4; // ebx@5 int v5; // eax@6 int v6; // eax@14 int v7; // eax@16 if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 4 ) { v3 = *(_DWORD *)(a1 + 122); if ( v3 && *(_DWORD *)(v3 + 16) ) { if ( sub_549240(a1) == 1 ) { v4 = -1; } else { v5 = *(_DWORD *)(a1 + 122); v4 = *(_DWORD *)(v5 + 292) == 1 ? -1 : *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72); } } else { v4 = 0; } if ( sub_402710(a1, a2) >= (unsigned int)v4 ) { if ( a1 == a2 ) sub_639100(&unk_86DDD8, (int)"AxialListBriefDeleteAtMove::ali_Work : BriefInfo to me", 0); if ( sub_499E90(a1, a2) ) { *(_WORD *)dword_74A028 = *(_WORD *)(a1 + 4); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a2, &off_749F98); } if ( sub_499E90(a2, a1) ) { *(_WORD *)dword_74A028 = *(_WORD *)(a2 + 4); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, a2, &off_749F98); } } } return 1; } // 749F98: using guessed type void *off_749F98; // 74A028: using guessed type int dword_74A028; //----- (004BD660) -------------------------------------------------------- int __thiscall sub_4BD660(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int (__stdcall **v5)(int, int, int); // [sp+8h] [bp-18h]@1 int v6; // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; v7 = (int)"ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sub_427BE0(&v5); v5 = &off_6C02C0; v6 = a2; LOBYTE(v8) = 1; v3 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v3, a2, 0, 0, (int)&v5, 0, 65535); LOBYTE(v8) = 0; v5 = &off_6C02C0; sub_427EB0(&v5); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"); } // 6C02C0: using guessed type int (__stdcall *off_6C02C0)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BD750) -------------------------------------------------------- char __thiscall sub_4BD750(void *this, int a2, int a3, int a4, int a5, int (__fastcall *a6)(_DWORD, _DWORD, _DWORD, _DWORD)) { char result; // al@2 int v7; // eax@3 int v8; // ecx@3 int v9; // edi@3 signed int v10; // esi@3 int v11; // eax@3 int v12; // edx@3 int v13; // edi@6 int v14; // eax@6 int v15; // ebx@6 char v16; // [sp+10h] [bp-34h]@1 int v17; // [sp+20h] [bp-24h]@1 int v18; // [sp+24h] [bp-20h]@3 int v19; // [sp+28h] [bp-1Ch]@3 void *v20; // [sp+2Ch] [bp-18h]@1 int v21; // [sp+30h] [bp-14h]@3 int v22; // [sp+34h] [bp-10h]@3 int v23; // [sp+40h] [bp-4h]@1 signed int v24; // [sp+4Ch] [bp+8h]@4 signed int v25; // [sp+50h] [bp+Ch]@4 signed int v26; // [sp+54h] [bp+10h]@3 v20 = this; v17 = (int)"ShineObjectClass::ShineObject::so_FindBlockLocateFrom"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_FindBlockLocateFrom"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; sub_4620E0((int)&v16, a2, a3); LOBYTE(v23) = 1; if ( sub_4B81F0((int)&v16) <= a4 + 10 ) { *(_DWORD *)a5 = *(_DWORD *)a2; *(_DWORD *)(a5 + 4) = *(_DWORD *)(a2 + 4); v7 = sub_4B81F0((int)&v16); v8 = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 4); v10 = v7 / 8 + 1; v11 = *(_DWORD *)a3 - *(_DWORD *)a2; v12 = *(_DWORD *)(a3 + 4) - v9; v22 = *(_DWORD *)a2; v21 = v9; v19 = v11; v18 = v12; v26 = 1; if ( v10 < 1 ) { LABEL_9: LOBYTE(v23) = 0; sub_461490(&v16); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 1; } else { v24 = v12; v25 = v11; while ( 1 ) { v13 = v8 + v25 / v10; v14 = *(_DWORD *)((char *)v20 + 122); v15 = v21 + v24 / v10; if ( !v14 ) break; if ( (unsigned __int8)a6(*(_DWORD *)(v14 + 20), v24 % v10, v13, v21 + v24 / v10) || (v25 += v19, v24 += v18, *(_DWORD *)a5 = v13, *(_DWORD *)(a5 + 4) = v15, ++v26, v26 > v10) ) goto LABEL_9; v8 = v22; } LOBYTE(v23) = 0; sub_461490(&v16); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 0; } } else { LOBYTE(v23) = 0; sub_461490(&v16); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BD930) -------------------------------------------------------- char __stdcall sub_4BD930(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_BlockCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_BlockCheck"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_BlockCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BD980) -------------------------------------------------------- bool __thiscall sub_4BD980(void *this, int a2, int a3) { void *v3; // esi@1 bool v4; // bl@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"g_MoveBlockCheck"); dword_7508B8[dword_750CB8] = (int)"g_MoveBlockCheck"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_49D140(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"g_MoveBlockCheck"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BDA50) -------------------------------------------------------- char __thiscall sub_4BDA50(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"g_FindEmpty"); dword_7508B8[dword_750CB8] = (int)"g_FindEmpty"; dword_750AB8[dword_750CB8++] = -1; if ( sub_49D140(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"g_FindEmpty"); result = 1; } else { *((_DWORD *)v3 + 40300) = a2; *((_DWORD *)v3 + 40301) = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"g_FindEmpty"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BDB50) -------------------------------------------------------- char __cdecl sub_4BDB50() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_StopBlockCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_StopBlockCheck"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_StopBlockCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BDBA0) -------------------------------------------------------- bool __thiscall sub_4BDBA0(void *this, int a2, int a3) { void *v3; // esi@1 bool v4; // bl@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"smv_MoveBlockCheck"); dword_7508B8[dword_750CB8] = (int)"smv_MoveBlockCheck"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_49D140(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3) || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"smv_MoveBlockCheck"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BDC70) -------------------------------------------------------- char __thiscall sub_4BDC70(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"smv_MoveFindEmpty"); dword_7508B8[dword_750CB8] = (int)"smv_MoveFindEmpty"; dword_750AB8[dword_750CB8++] = -1; if ( sub_49D140(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3) == 1 || sub_49D1B0(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), a2, a3) == 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"smv_MoveFindEmpty"); result = 1; } else { *(_DWORD *)((char *)v3 + 8313) = a2; *(_DWORD *)((char *)v3 + 8317) = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"smv_MoveFindEmpty"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BDD80) -------------------------------------------------------- int __thiscall sub_4BDD80(void *this, char a2) { int v2; // esi@1 int (*v3)(void); // eax@3 int v4; // ebx@9 DWORD v5; // eax@9 int v6; // edi@9 int v7; // ecx@13 int v8; // edx@13 int v9; // ecx@13 int v10; // eax@13 int v11; // eax@15 unsigned int v12; // ecx@19 int v13; // eax@20 int v14; // ebx@21 unsigned int v15; // eax@21 unsigned int v16; // eax@24 int v17; // eax@28 int v18; // eax@32 int v19; // eax@44 int v20; // eax@44 int v22; // [sp+10h] [bp-20h]@13 unsigned int v23; // [sp+14h] [bp-1Ch]@13 unsigned int v24; // [sp+18h] [bp-18h]@13 unsigned int v25; // [sp+1Ch] [bp-14h]@13 int v26; // [sp+20h] [bp-10h]@1 int v27; // [sp+2Ch] [bp-4h]@1 v2 = (int)this; v26 = (int)"MoveManager::mm_Step"; sub_4675D0((int)&unk_D020420, (int)"MoveManager::mm_Step"); dword_7508B8[dword_750CB8] = (int)"MoveManager::mm_Step"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; if ( !*(_DWORD *)(v2 + 32) ) { *(_DWORD *)v2 = 0; --dword_750CB8; LABEL_47: v27 = -1; return sub_467660((int)&unk_D020420, (int)"MoveManager::mm_Step"); } v3 = *(int (**)(void))(**(_DWORD **)(v2 + 4) + 1072); if ( *(_DWORD *)v2 == 3 ) { if ( *(_BYTE *)(v3() + 3278) & 2 ) goto LABEL_5; } else { if ( *(_BYTE *)(v3() + 3278) & 1 || *(_BYTE *)((*(int (**)(void))(**(_DWORD **)(v2 + 4) + 1072))() + 3278) & 2 ) { if ( *(_DWORD *)v2 != 3 ) { v19 = *(_DWORD *)(v2 + 4); *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 28) = 0; *(_DWORD *)(v2 + 32) = 0; *(_DWORD *)(v2 + 36) = 0; *(_DWORD *)(v2 + 40) = 0; *(_DWORD *)(v2 + 44) = 0; *(_DWORD *)(v2 + 8) = 0; v20 = *(_DWORD *)(v19 + 102); *(_DWORD *)(v2 + 20) = *(_DWORD *)v20; *(_DWORD *)(v2 + 24) = *(_DWORD *)(v20 + 4); } (*(void (**)(void))(**(_DWORD **)(v2 + 4) + 2632))(); (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(v2 + 4) + 2640))(*(_DWORD *)(v2 + 4)); goto LABEL_46; } if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 4) + 2852))(0) == 1 ) { LABEL_5: sub_43F0A0(v2); (*(void (**)(void))(**(_DWORD **)(v2 + 4) + 2632))(); (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(v2 + 4) + 2640))(*(_DWORD *)(v2 + 4)); LABEL_46: --dword_750CB8; goto LABEL_47; } } v4 = *(_DWORD *)(v2 + 36); v5 = timeGetTime(); v6 = v5 - *(_DWORD *)(v2 + 28); if ( a2 || *(_DWORD *)(v2 + 32) < 0x64u || v4 - v5 >= 0x64 || (unsigned int)v6 >= 0x64 ) { v7 = *(_DWORD *)(*(_DWORD *)(v2 + 4) + 102); v22 = *(_DWORD *)v7; v8 = v22; v9 = *(_DWORD *)(v7 + 4); *(_DWORD *)(v2 + 36) = v5; v10 = *(_DWORD *)(v2 + 32); v23 = v9; v24 = v8; v25 = v9; *(_DWORD *)(v2 + 40) = v4; if ( v6 > (unsigned int)v10 ) v6 = v10; v11 = *(_DWORD *)(v2 + 44); if ( (unsigned int)(v6 - v11) >= 0x64 ) *(_DWORD *)(v2 + 44) = v11 + 100; else *(_DWORD *)(v2 + 44) = v6; if ( *(_DWORD *)(v2 + 44) <= (unsigned int)v6 ) { while ( 1 ) { v23 = v25; v12 = *(_DWORD *)(v2 + 32); v22 = v24; if ( v6 == v12 ) { v13 = *(_DWORD *)(v2 + 24); v24 = *(_DWORD *)(v2 + 20); v25 = v13; } else { v14 = *(_DWORD *)(v2 + 44); v15 = v14 * *(_DWORD *)(v2 + 48) / v12; if ( *(_BYTE *)(v2 + 52) ) v24 = *(_DWORD *)(v2 + 12) + v15; else v24 = *(_DWORD *)(v2 + 12) - v15; v16 = v14 * *(_DWORD *)(v2 + 56) / v12; if ( *(_BYTE *)(v2 + 60) ) v25 = *(_DWORD *)(v2 + 16) + v16; else v25 = *(_DWORD *)(v2 + 16) - v16; } if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 4) + 2536))() ) { v17 = *(_DWORD *)(*(_DWORD *)(v2 + 4) + 122); if ( !v17 || sub_49D140(*(void **)(v17 + 20), v24, v25) || sub_49D1B0(*(void **)(*(_DWORD *)(*(_DWORD *)(v2 + 4) + 122) + 20), v24, v25) ) { sub_43F0A0(v2); (*(void (**)(void))(**(_DWORD **)(v2 + 4) + 2632))(); (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(v2 + 4) + 2640))(*(_DWORD *)(v2 + 4)); goto LABEL_39; } } if ( !(unsigned __int8)(*(int (__stdcall **)(unsigned int, unsigned int))(**(_DWORD **)(v2 + 4) + 3896))( v24, v25) ) goto LABEL_39; sub_4BD480(*(void **)(v2 + 4), (int)&v24); sub_452220(*(_DWORD *)(v2 + 4), v24, v25, 5); sub_4BD660(*(void **)(v2 + 4), (int)&v22); v18 = *(_DWORD *)(v2 + 44); if ( v18 == v6 ) break; if ( (unsigned int)(v6 - v18) >= 0x64 ) *(_DWORD *)(v2 + 44) = v18 + 100; else *(_DWORD *)(v2 + 44) = v6; if ( *(_DWORD *)(v2 + 44) > (unsigned int)v6 ) { --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"MoveManager::mm_Step"); } } if ( v6 == *(_DWORD *)(v2 + 32) ) sub_43C600(v2); } --dword_750CB8; v27 = -1; } else { LABEL_39: --dword_750CB8; v27 = -1; } return sub_467660((int)&unk_D020420, (int)"MoveManager::mm_Step"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BE0E0) -------------------------------------------------------- char __thiscall sub_4BE0E0(void *this, int a2, int a3, int a4, int (__fastcall *a5)(_DWORD, _DWORD, _DWORD, _DWORD)) { void *v5; // esi@1 char v6; // al@1 char v7; // bl@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FindBlockLocate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_FindBlockLocate"; dword_750AB8[dword_750CB8++] = -1; v6 = sub_4BD750(v5, *(_DWORD *)((char *)v5 + 102), a2, a3, a4, a5); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FindBlockLocate"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BE1A0) -------------------------------------------------------- char __thiscall sub_4BE1A0(void *this, int a2, int a3) { int v3; // esi@1 int v4; // edx@3 int v5; // eax@3 char result; // al@4 int v7; // ecx@6 int v8; // eax@6 int v9; // ecx@6 int v10; // eax@12 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_BlockCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_BlockCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v3 + 122) ) { if ( sub_4BD980((void *)v3, a2, a3) ) { v7 = *(_DWORD *)(v3 + 102); v8 = *(_DWORD *)v7; v9 = *(_DWORD *)(v7 + 4) - *(_DWORD *)(v3 + 161204); if ( (unsigned int)((v8 - *(_DWORD *)(v3 + 161200)) * (v8 - *(_DWORD *)(v3 + 161200)) + v9 * v9) >= 0x384 && sub_4BDA50((void *)v3, a2 + 10, a3) && sub_4BDA50((void *)v3, a2 - 10, a3) && sub_4BDA50((void *)v3, a2, a3 + 10) && sub_4BDA50((void *)v3, a2, a3 - 10) ) { sub_452220(v3, *(_DWORD *)(v3 + 161200), *(_DWORD *)(v3 + 161204), 10); sub_43F0A0(v3 + 368); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2632))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2640))(v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_BlockCheck"); return 0; } } else { v10 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v3 + 161200) = *(_DWORD *)v10; *(_DWORD *)(v3 + 161204) = *(_DWORD *)(v10 + 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_BlockCheck"); result = 1; } else { if ( *(_DWORD *)(v3 + 368) != 3 ) { v4 = *(_DWORD *)(v3 + 372); *(_DWORD *)(v3 + 368) = 0; *(_DWORD *)(v3 + 396) = 0; *(_DWORD *)(v3 + 400) = 0; *(_DWORD *)(v3 + 404) = 0; *(_DWORD *)(v3 + 408) = 0; *(_DWORD *)(v3 + 412) = 0; *(_DWORD *)(v3 + 376) = 0; v5 = *(_DWORD *)(v4 + 102); *(_DWORD *)(v3 + 388) = *(_DWORD *)v5; *(_DWORD *)(v3 + 392) = *(_DWORD *)(v5 + 4); } (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2632))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2640))(v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_BlockCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BE3E0) -------------------------------------------------------- char __thiscall sub_4BE3E0(void *this) { int v1; // esi@1 int v2; // eax@1 int v3; // edx@5 int v4; // eax@5 int v6; // edx@9 int v7; // eax@9 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_StopBlockCheck"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 102); if ( *(_DWORD *)(v1 + 161200) == *(_DWORD *)v2 && *(_DWORD *)(v1 + 161204) == *(_DWORD *)(v2 + 4) ) { LABEL_11: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 1; } if ( *(_DWORD *)(v1 + 122) ) { if ( sub_4BD980((void *)v1, *(_DWORD *)v2, *(_DWORD *)(v2 + 4)) ) { sub_452220(v1, *(_DWORD *)(v1 + 161200), *(_DWORD *)(v1 + 161204), 4); if ( *(_DWORD *)(v1 + 368) != 3 ) { v6 = *(_DWORD *)(v1 + 372); *(_DWORD *)(v1 + 368) = 0; *(_DWORD *)(v1 + 396) = 0; *(_DWORD *)(v1 + 400) = 0; *(_DWORD *)(v1 + 404) = 0; *(_DWORD *)(v1 + 408) = 0; *(_DWORD *)(v1 + 412) = 0; *(_DWORD *)(v1 + 376) = 0; v7 = *(_DWORD *)(v6 + 102); *(_DWORD *)(v1 + 388) = *(_DWORD *)v7; *(_DWORD *)(v1 + 392) = *(_DWORD *)(v7 + 4); } (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2632))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2640))(v1); } goto LABEL_11; } if ( *(_DWORD *)(v1 + 368) != 3 ) { v3 = *(_DWORD *)(v1 + 372); *(_DWORD *)(v1 + 368) = 0; *(_DWORD *)(v1 + 396) = 0; *(_DWORD *)(v1 + 400) = 0; *(_DWORD *)(v1 + 404) = 0; *(_DWORD *)(v1 + 408) = 0; *(_DWORD *)(v1 + 412) = 0; *(_DWORD *)(v1 + 376) = 0; v4 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v1 + 388) = *(_DWORD *)v4; *(_DWORD *)(v1 + 392) = *(_DWORD *)(v4 + 4); } (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2632))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2640))(v1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BE5C0) -------------------------------------------------------- char __thiscall sub_4BE5C0(void *this, int a2, int a3) { int v3; // esi@1 int v4; // edx@3 int v5; // eax@3 char result; // al@4 int v7; // ecx@6 int v8; // eax@6 int v9; // ecx@6 int v10; // eax@12 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::smo_BlockCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMover::smo_BlockCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v3 + 122) ) { if ( sub_4BDBA0((void *)v3, a2, a3) == 1 ) { v7 = *(_DWORD *)(v3 + 102); v8 = *(_DWORD *)v7; v9 = *(_DWORD *)(v7 + 4) - *(_DWORD *)(v3 + 8317); if ( (unsigned int)((v8 - *(_DWORD *)(v3 + 8313)) * (v8 - *(_DWORD *)(v3 + 8313)) + v9 * v9) >= 0x384 && sub_4BDC70((void *)v3, a2 + 10, a3) == 1 && sub_4BDC70((void *)v3, a2 - 10, a3) == 1 && sub_4BDC70((void *)v3, a2, a3 + 10) == 1 && sub_4BDC70((void *)v3, a2, a3 - 10) == 1 ) { sub_452220(v3, *(_DWORD *)(v3 + 8313), *(_DWORD *)(v3 + 8317), 10); sub_43F0A0(v3 + 368); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2632))(v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::smo_BlockCheck"); return 0; } } else { v10 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v3 + 8313) = *(_DWORD *)v10; *(_DWORD *)(v3 + 8317) = *(_DWORD *)(v10 + 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::smo_BlockCheck"); result = 1; } else { if ( *(_DWORD *)(v3 + 368) != 3 ) { v4 = *(_DWORD *)(v3 + 372); *(_DWORD *)(v3 + 368) = 0; *(_DWORD *)(v3 + 396) = 0; *(_DWORD *)(v3 + 400) = 0; *(_DWORD *)(v3 + 404) = 0; *(_DWORD *)(v3 + 408) = 0; *(_DWORD *)(v3 + 412) = 0; *(_DWORD *)(v3 + 376) = 0; v5 = *(_DWORD *)(v4 + 102); *(_DWORD *)(v3 + 388) = *(_DWORD *)v5; *(_DWORD *)(v3 + 392) = *(_DWORD *)(v5 + 4); } (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2632))(v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::smo_BlockCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004BE7E0) -------------------------------------------------------- int __thiscall sub_4BE7E0(void *this, unsigned __int16 a2) { void *v2; // esi@1 int result; // eax@2 int v4; // eax@3 v2 = this; if ( a2 != -1 && (v4 = sub_645030((int)&dword_14D20890, a2)) != 0 ) result = 3 - (sub_639620((char *)v2 + 1712, (unsigned __int8 *)v4) != -1); else result = 3; return result; } // 14D20890: using guessed type int dword_14D20890; //----- (004BE830) -------------------------------------------------------- unsigned int __thiscall sub_4BE830(int this, unsigned int a2) { int v2; // edx@2 unsigned int result; // eax@4 if ( a2 != -1 && (v2 = *(_DWORD *)(this + 680)) != 0 && a2 <= *(_DWORD *)(this + 676) ) result = v2 + 32 * a2; else result = 0; return result; } //----- (004BE860) -------------------------------------------------------- int __thiscall sub_4BE860(int this, unsigned __int8 *a2) { int v2; // esi@1 signed int v3; // eax@2 int v4; // ecx@3 int result; // eax@5 v2 = this; if ( a2 && (v3 = sub_639620((void *)(this + 1712), a2), v3 != -1) && (v4 = *(_DWORD *)(v2 + 680)) != 0 && (unsigned int)v3 <= *(_DWORD *)(v2 + 676) ) result = v4 + 32 * v3; else result = 0; return result; } //----- (004BE8C0) -------------------------------------------------------- void *__thiscall sub_4BE8C0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 186, 51) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 186, 186, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004BE980) -------------------------------------------------------- void *__thiscall sub_4BE980(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 904, 97) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 904, 904, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004BEA40) -------------------------------------------------------- void *__thiscall sub_4BEA40(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 149, 74) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 149, 149, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004BEB00) -------------------------------------------------------- void *__thiscall sub_4BEB00(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 44, 64) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 44, 44, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004BEBA0) -------------------------------------------------------- void *__thiscall sub_4BEBA0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C05D0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C05D0: using guessed type int (__thiscall *off_6C05D0)(void *, char); //----- (004BEBD0) -------------------------------------------------------- void *__thiscall sub_4BEBD0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C05D8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C05D8: using guessed type int (__thiscall *off_6C05D8)(void *, char); //----- (004BEC00) -------------------------------------------------------- void *__thiscall sub_4BEC00(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C05E0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C05E0: using guessed type int (__thiscall *off_6C05E0)(void *, char); //----- (004BEC30) -------------------------------------------------------- void *__thiscall sub_4BEC30(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C05E8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C05E8: using guessed type int (__thiscall *off_6C05E8)(void *, char); //----- (004BEC60) -------------------------------------------------------- void *__thiscall sub_4BEC60(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C05F0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C05F0: using guessed type int (__thiscall *off_6C05F0)(void *, char); //----- (004BEC90) -------------------------------------------------------- int __thiscall sub_4BEC90(int this) { int v1; // esi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_6C05D0; memset((void *)(v1 + 64), 0, 0x33u); sub_639920(v1 + 116); *(_DWORD *)(v1 + 116) = &off_6C05D8; memset((void *)(v1 + 180), 0, 0x61u); sub_639920(v1 + 280); *(_DWORD *)(v1 + 280) = &off_6C05E0; memset((void *)(v1 + 344), 0, 0x4Au); sub_639920(v1 + 420); *(_DWORD *)(v1 + 420) = &off_6C05E8; memset((void *)(v1 + 484), 0, 0x40u); sub_639920(v1 + 548); *(_DWORD *)(v1 + 548) = &off_6C05F0; memset((void *)(v1 + 612), 0, 0x40u); return v1; } // 6C05D0: using guessed type int (__thiscall *off_6C05D0)(void *, char); // 6C05D8: using guessed type int (__thiscall *off_6C05D8)(void *, char); // 6C05E0: using guessed type int (__thiscall *off_6C05E0)(void *, char); // 6C05E8: using guessed type int (__thiscall *off_6C05E8)(void *, char); // 6C05F0: using guessed type int (__thiscall *off_6C05F0)(void *, char); //----- (004BED90) -------------------------------------------------------- void __thiscall sub_4BED90(void *this) { int v1; // esi@1 int v2; // ecx@1 v1 = (int)this; v2 = (int)((char *)this + 548); *(_DWORD *)v2 = &off_6C05F0; sub_639940(v2); *(_DWORD *)(v1 + 420) = &off_6C05E8; sub_639940(v1 + 420); *(_DWORD *)(v1 + 280) = &off_6C05E0; sub_639940(v1 + 280); *(_DWORD *)(v1 + 116) = &off_6C05D8; sub_639940(v1 + 116); *(_DWORD *)v1 = &off_6C05D0; sub_639940(v1); } // 6C05D0: using guessed type int (__thiscall *off_6C05D0)(void *, char); // 6C05D8: using guessed type int (__thiscall *off_6C05D8)(void *, char); // 6C05E0: using guessed type int (__thiscall *off_6C05E0)(void *, char); // 6C05E8: using guessed type int (__thiscall *off_6C05E8)(void *, char); // 6C05F0: using guessed type int (__thiscall *off_6C05F0)(void *, char); //----- (004BEE40) -------------------------------------------------------- int __thiscall sub_4BEE40(int this) { int v1; // esi@1 v1 = this; sub_4BEC90(this); sub_639540(v1 + 684); sub_639540(v1 + 1712); *(_DWORD *)(v1 + 676) = 0; *(_DWORD *)(v1 + 680) = 0; return v1; } //----- (004BEEC0) -------------------------------------------------------- void __thiscall sub_4BEEC0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 16) ) operator delete(*(void **)(this + 16)); *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; } //----- (004BEEF0) -------------------------------------------------------- int __thiscall sub_4BEEF0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; return result; } //----- (004BEF10) -------------------------------------------------------- int __thiscall sub_4BEF10(void *this) { int v1; // esi@1 signed int v2; // ebx@1 unsigned int v3; // edi@1 int v4; // eax@3 int v5; // eax@7 int v6; // edi@11 int v7; // ecx@11 int v8; // eax@11 int v9; // ebx@12 int v10; // eax@12 bool v11; // sf@16 int v12; // ecx@17 int v13; // esi@17 int v14; // edx@17 int v15; // eax@18 void *v16; // ebx@18 int v17; // edi@18 const void *v18; // eax@18 int v19; // esi@21 int v20; // edi@23 int v21; // eax@27 int v22; // eax@29 int v23; // ebx@29 bool v24; // zf@29 int v25; // eax@32 int v26; // eax@35 int v27; // edi@38 int v28; // eax@40 int v29; // eax@45 signed int v30; // eax@48 int v31; // ebx@49 int v32; // eax@54 int v33; // edi@59 int v34; // esi@60 int v35; // eax@61 int v36; // eax@66 signed int v37; // eax@69 int v38; // eax@75 int v39; // eax@78 int v40; // eax@82 unsigned __int16 v41; // bx@84 int v42; // eax@86 int v43; // esi@93 int v44; // edi@94 int v45; // eax@95 int v46; // eax@100 signed int v47; // eax@103 int v48; // eax@109 int v49; // eax@113 int v50; // eax@117 int v51; // eax@120 int result; // eax@123 int v53; // ebx@123 int v54; // edi@124 int v55; // eax@125 int v56; // eax@130 signed int v57; // eax@133 signed int v58; // esi@134 int v59; // edi@137 int v60; // ecx@139 int v61; // esi@139 unsigned int v62; // eax@139 int v63; // esi@139 int v64; // edx@140 int v65; // ecx@141 signed int v66; // edi@141 int v67; // eax@142 int v68; // eax@143 int v69; // ecx@143 unsigned int v70; // ecx@145 int v71; // ecx@152 int v72; // eax@153 int v73; // eax@154 int v74; // ecx@154 unsigned int v75; // ecx@156 void *v76; // [sp+10h] [bp-20h]@22 unsigned __int16 v77; // [sp+10h] [bp-20h]@111 void *v78; // [sp+14h] [bp-1Ch]@19 int v79; // [sp+18h] [bp-18h]@21 int i; // [sp+1Ch] [bp-14h]@16 int v81; // [sp+20h] [bp-10h]@1 int v82; // [sp+2Ch] [bp-4h]@11 v1 = (int)this; v81 = (int)this; sub_4BE8C0(this, "../9Data/Shine/MoverMain.shn"); sub_4BE980((void *)(v1 + 116), "../9Data/Shine/MoverAbility.shn"); sub_4BEA40((void *)(v1 + 280), "../9Data/Shine/MoverHG.shn"); sub_4BEB00((void *)(v1 + 420), "../9Data/Shine/MoverItem.shn"); sub_4BEB00((void *)(v1 + 548), "../9Data/Shine/MoverUseSkill.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v3 = 0; if ( v2 > 0 ) { do { if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v4 = sub_626BC0(v1, v3); else v4 = v1 + 64; if ( *(_DWORD *)(v1 + 676) < *(_DWORD *)v4 ) { if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v5 = sub_626BC0(v1, v3); else v5 = v1 + 64; *(_DWORD *)(v1 + 676) = *(_DWORD *)v5; } ++v3; } while ( (signed int)v3 < v2 ); } v6 = *(_DWORD *)(v1 + 676) + 1; v7 = 32 * (*(_DWORD *)(v1 + 676) + 1) | -((unsigned __int64)(unsigned int)(*(_DWORD *)(v1 + 676) + 1) >> 27 != 0); v8 = unknown_libname_130((v7 + 4) | -__CFADD__(v7, 4)); v82 = 0; if ( v8 ) { v9 = v8 + 4; *(_DWORD *)v8 = v6; _eh_vector_constructor_iterator_( (void *)(v8 + 4), 0x20u, v6, (int)sub_4BEEF0, (void (__thiscall *)(void *))sub_4BEEC0); v10 = v9; } else { v10 = 0; } v82 = -1; *(_DWORD *)(v1 + 680) = v10; if ( !v10 ) { sub_639100(&unk_86DDD8, (int)"Memory leak for index in MoverMain", *(_DWORD *)(v1 + 676) + 1); loc_6391B0("MoverDataBox::mvdb_Load"); } v11 = *(_DWORD *)(v1 + 676) < 0; i = 0; if ( !v11 ) { v12 = v81; v13 = 0; v14 = 0; do { *(_DWORD *)(v13 + *(_DWORD *)(v12 + 680)) = v14; *(_DWORD *)(*(_DWORD *)(v12 + 680) + v13 + 4) = v14; *(_DWORD *)(*(_DWORD *)(v12 + 680) + v13 + 8) = v14; *(_DWORD *)(*(_DWORD *)(v12 + 680) + v13 + 12) = v14; v15 = *(_DWORD *)(v12 + 680); v16 = *(void **)(v15 + v13 + 16); v17 = v15 + v13 + 16; v18 = *(const void **)(v15 + v13 + 20); if ( v16 != v18 ) { v78 = 0; memmove_0(v16, v18, 0); *(_DWORD *)(v17 + 4) = v16; v12 = v81; v14 = 0; } v13 += 32; ++i; } while ( i <= *(_DWORD *)(v12 + 676) ); } v19 = 0; v79 = *(_DWORD *)(*(_DWORD *)(v81 + 52) + 40); if ( v79 > 0 ) { v78 = (void *)(v81 + 64); v76 = (void *)(v81 + 684); do { v20 = v81; if ( (unsigned int)v19 >= *(_DWORD *)(*(_DWORD *)(v81 + 52) + 40) || (void *)sub_626BC0(v81, v19) == v78 ) { sub_639100(&unk_86DDD8, (int)"MoverMain Data defblock", v19); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v19 < *(_DWORD *)(*(_DWORD *)(v81 + 52) + 40) ) v21 = sub_626BC0(v81, v19); else v21 = (int)v78; v22 = *(_DWORD *)v21; v23 = 32 * v22; v24 = *(_DWORD *)(32 * v22 + *(_DWORD *)(v81 + 680)) == 0; i = v22; if ( !v24 ) { sub_639100(&unk_86DDD8, (int)"Data duplicate in MoveMain.shn", v22); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v19 < *(_DWORD *)(*(_DWORD *)(v81 + 52) + 40) ) v25 = sub_626BC0(v81, v19); else v25 = (int)v78; *(_DWORD *)(v23 + *(_DWORD *)(v81 + 680)) = v25; if ( (unsigned int)v19 < *(_DWORD *)(*(_DWORD *)(v20 + 52) + 40) ) v26 = sub_626BC0(v20, v19); else v26 = (int)v78; sub_639590(v76, (unsigned __int8 *)(v26 + 4), i); ++v19; } while ( v19 < v79 ); } v27 = 0; v79 = *(_DWORD *)(*(_DWORD *)(v81 + 168) + 40); if ( v79 > 0 ) { do { if ( (unsigned int)v27 < *(_DWORD *)(*(_DWORD *)(v81 + 168) + 40) ) v28 = sub_626BC0(v81 + 116, v27); else v28 = v81 + 180; if ( v28 == v81 + 180 ) { sub_639100(&unk_86DDD8, (int)"MoverAbility Data defblock", v27); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v27 < *(_DWORD *)(*(_DWORD *)(v81 + 168) + 40) ) v29 = sub_626BC0(v81 + 116, v27); else v29 = v81 + 180; if ( v29 && (v30 = sub_639620((void *)(v81 + 684), (unsigned __int8 *)v29), v30 != -1) ) { v31 = v30; } else { v31 = -1; sub_639100(&unk_86DDD8, (int)"Data duplicate in MoverAbility.shn invalid mover", -1); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( *(_DWORD *)(*(_DWORD *)(v81 + 680) + 32 * v31 + 4) ) { sub_639100(&unk_86DDD8, (int)"Data duplicate in MoverAbility.shn not null", v31); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v27 < *(_DWORD *)(*(_DWORD *)(v81 + 168) + 40) ) v32 = sub_626BC0(v81 + 116, v27); else v32 = v81 + 180; ++v27; *(_DWORD *)(*(_DWORD *)(v81 + 680) + 32 * v31 + 4) = v32; } while ( v27 < v79 ); } v78 = sub_59A6B0((int)"UseSkill"); if ( !v78 ) { sub_639100(&unk_86DDD8, (int)"Food skill null", 0); loc_6391B0("MoverDataBox::mvdb_Load"); } v33 = 0; v79 = *(_DWORD *)(*(_DWORD *)(v81 + 332) + 40); if ( v79 > 0 ) { do { v34 = v81 + 280; if ( (unsigned int)v33 < *(_DWORD *)(*(_DWORD *)(v81 + 332) + 40) ) v35 = sub_626BC0(v81 + 280, v33); else v35 = v81 + 344; if ( v35 == v81 + 344 ) { sub_639100(&unk_86DDD8, (int)"MoverMain Data defblock", v33); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v33 < *(_DWORD *)(*(_DWORD *)(v81 + 332) + 40) ) v36 = sub_626BC0(v34, v33); else v36 = v81 + 344; if ( v36 && (v37 = sub_639620((void *)(v81 + 684), (unsigned __int8 *)v36), v37 != -1) ) { i = v37; } else { i = -1; sub_639100(&unk_86DDD8, (int)"Data duplicate in MoverHG.shn invalid mover", -1); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( *(_DWORD *)(*(_DWORD *)(v81 + 680) + 32 * i + 8) ) { sub_639100(&unk_86DDD8, (int)"Data duplicate in MoverHG.shn not null", i); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v33 < *(_DWORD *)(*(_DWORD *)(v81 + 332) + 40) ) v38 = sub_626BC0(v34, v33); else v38 = v81 + 344; *(_DWORD *)(*(_DWORD *)(v81 + 680) + 32 * i + 8) = v38; if ( (unsigned int)v33 < *(_DWORD *)(*(_DWORD *)(v34 + 52) + 40) ) v39 = sub_626BC0(v34, v33); else v39 = v34 + 64; if ( *(_BYTE *)(v39 + 32) != 45 ) { if ( (unsigned int)v33 < *(_DWORD *)(*(_DWORD *)(v34 + 52) + 40) ) v40 = sub_626BC0(v34, v33); else v40 = v34 + 64; v41 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v40 + 32)); if ( v41 == -1 ) { if ( (unsigned int)v33 < *(_DWORD *)(*(_DWORD *)(v34 + 52) + 40) ) v42 = sub_626BC0(v34, v33); else v42 = v34 + 64; sub_6390B0(&unk_86DDD8, (int)"Data duplicate in MoverHG.shn invalid food item", v42 + 32); loc_6391B0("MoverDataBox::mvdb_Load"); } sub_594070((int)&dword_13258868, v41, (int)off_86ACC8, (int)v78); } ++v33; } while ( v33 < v79 ); } v78 = sub_59A6B0((int)"UseRide"); if ( !v78 ) { sub_639100(&unk_86DDD8, (int)"Ride skill null", 0); loc_6391B0("MoverDataBox::mvdb_Load"); } v43 = 0; v79 = *(_DWORD *)(*(_DWORD *)(v81 + 472) + 40); if ( v79 > 0 ) { do { v44 = v81 + 420; if ( (unsigned int)v43 < *(_DWORD *)(*(_DWORD *)(v81 + 472) + 40) ) v45 = sub_626BC0(v81 + 420, v43); else v45 = v81 + 484; if ( v45 == v81 + 484 ) { sub_639100(&unk_86DDD8, (int)"MoverMain Data defblock", v43); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v43 < *(_DWORD *)(*(_DWORD *)(v81 + 472) + 40) ) v46 = sub_626BC0(v44, v43); else v46 = v81 + 484; if ( v46 && (v47 = sub_639620((void *)(v81 + 684), (unsigned __int8 *)v46), v47 != -1) ) { i = v47; } else { i = -1; sub_639100(&unk_86DDD8, (int)"Data duplicate in MoverItem.shn", -1); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( *(_DWORD *)(*(_DWORD *)(v81 + 680) + 32 * i + 12) ) { sub_639100(&unk_86DDD8, (int)"Data duplicate in MoverItem.shn", i); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v43 < *(_DWORD *)(*(_DWORD *)(v81 + 472) + 40) ) v48 = sub_626BC0(v44, v43); else v48 = v81 + 484; v77 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v48 + 32)); if ( v77 == -1 ) { if ( (unsigned int)v43 < *(_DWORD *)(*(_DWORD *)(v81 + 472) + 40) ) v49 = sub_626BC0(v44, v43); else v49 = v81 + 484; sub_6390B0(&unk_86DDD8, (int)"Data duplicate in MoverItem.shn invalid mover item", v49 + 32); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v43 < *(_DWORD *)(*(_DWORD *)(v81 + 472) + 40) ) v50 = sub_626BC0(v44, v43); else v50 = v81 + 484; *(_DWORD *)(*(_DWORD *)(v81 + 680) + 32 * i + 12) = v50; if ( (unsigned int)v43 < *(_DWORD *)(*(_DWORD *)(v44 + 52) + 40) ) v51 = sub_626BC0(v44, v43); else v51 = v44 + 64; sub_639590((void *)(v81 + 1712), (unsigned __int8 *)(v51 + 32), i); sub_594070((int)&dword_13258868, v77, (int)&off_86ACC0, (int)v78); ++v43; } while ( v43 < v79 ); } result = *(_DWORD *)(*(_DWORD *)(v81 + 600) + 40); v53 = 0; v79 = result; for ( i = 0; v53 < v79; i = v53 ) { v54 = v81 + 548; if ( (unsigned int)v53 < *(_DWORD *)(*(_DWORD *)(v81 + 600) + 40) ) v55 = sub_626BC0(v81 + 548, v53); else v55 = v81 + 612; if ( v55 == v81 + 612 ) { sub_639100(&unk_86DDD8, (int)"MoverMain Data defblock", v53); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v53 < *(_DWORD *)(*(_DWORD *)(v54 + 52) + 40) ) v56 = sub_626BC0(v54, v53); else v56 = v54 + 64; if ( v56 && (v57 = sub_639620((void *)(v81 + 684), (unsigned __int8 *)v56), v57 != -1) ) { v58 = v57; } else { v58 = -1; sub_639100(&unk_86DDD8, (int)"Data duplicate in MoveMain.shn", -1); loc_6391B0("MoverDataBox::mvdb_Load"); } if ( (unsigned int)v53 < *(_DWORD *)(*(_DWORD *)(v54 + 52) + 40) ) v59 = sub_626BC0(v54, v53); else v59 = v54 + 64; v60 = *(_DWORD *)(v81 + 680); v61 = 32 * v58; v62 = *(_DWORD *)(v61 + v60 + 20); v63 = v61 + v60 + 16; v78 = (void *)v59; if ( (unsigned int)&v78 >= v62 || (v64 = *(_DWORD *)v63, *(_DWORD *)v63 > (unsigned int)&v78) ) { v71 = *(_DWORD *)(v63 + 8); if ( v62 == v71 ) { v72 = (signed int)(v62 - *(_DWORD *)v63) >> 2; if ( (unsigned int)v72 > 0x3FFFFFFE ) LABEL_165: sub_65178B((int)"vector too long"); v73 = v72 + 1; v74 = (v71 - *(_DWORD *)v63) >> 2; if ( v73 > (unsigned int)v74 ) { if ( 1073741823 - ((unsigned int)v74 >> 1) >= v74 ) v75 = ((unsigned int)v74 >> 1) + v74; else v75 = 0; if ( v75 < v73 ) v75 = v73; sub_5839E0(v63, v75); v53 = i; } } result = *(_DWORD *)(v63 + 4); if ( result ) *(_DWORD *)result = v59; } else { v65 = *(_DWORD *)(v63 + 8); v66 = (signed int)((char *)&v78 - v64) >> 2; if ( v62 == v65 ) { v67 = (signed int)(v62 - v64) >> 2; if ( (unsigned int)v67 > 0x3FFFFFFE ) goto LABEL_165; v68 = v67 + 1; v69 = (v65 - v64) >> 2; if ( v68 > (unsigned int)v69 ) { if ( 1073741823 - ((unsigned int)v69 >> 1) >= v69 ) v70 = ((unsigned int)v69 >> 1) + v69; else v70 = 0; if ( v70 < v68 ) v70 = v68; sub_5839E0(v63, v70); v53 = i; } } result = *(_DWORD *)(v63 + 4); if ( result ) *(_DWORD *)result = *(_DWORD *)(*(_DWORD *)v63 + 4 * v66); } *(_DWORD *)(v63 + 4) += 4; ++v53; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86ACC0: using guessed type int (__thiscall **off_86ACC0)(void *, char); // 86ACC8: using guessed type int (__thiscall *off_86ACC8[6])(void *, char); // 13258868: using guessed type int dword_13258868; // 14D20890: using guessed type int dword_14D20890; //----- (004BF8C0) -------------------------------------------------------- void __thiscall sub_4BF8C0(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // edi@2 v1 = this; v2 = *(void **)(this + 680); if ( v2 ) { v3 = (char *)v2 - 4; _LN21(v2, 0x20u, *((_DWORD *)v2 - 1), (void (__thiscall *)(void *))sub_4BEEC0); sub_6530A4(v3); } sub_639560((void *)(v1 + 1712)); sub_639560((void *)(v1 + 684)); sub_4BED90((void *)v1); } //----- (004BF960) -------------------------------------------------------- int __thiscall sub_4BF960(int this, unsigned __int16 a2, unsigned __int8 a3) { int v3; // edi@1 int v4; // esi@1 int v5; // ebx@1 int v6; // eax@2 int v7; // eax@3 int result; // eax@4 unsigned int v9; // esi@6 unsigned int v10; // edx@6 v3 = this; v4 = sub_626BC0(this, a2); v5 = sub_626BC0(v3 + 128, a3); if ( v4 || (v6 = *(_DWORD *)(v3 + 52)) != 0 && (v7 = *(_DWORD *)(v6 + 40)) != 0 && (v4 = sub_626BC0(v3, v7 - 1)) != 0 ) { v9 = *(_WORD *)v4; v10 = (unsigned int)(signed __int64)(sub_6392B0() * 1.0e11) % 0x3E8 + 1; if ( v5 ) v9 += *(_WORD *)v5; result = v9 >= v10; } else { result = 0; } return result; } //----- (004BFA00) -------------------------------------------------------- char __thiscall sub_4BFA00(int this) { return *(_BYTE *)(this + 276); } //----- (004BFA10) -------------------------------------------------------- int __thiscall sub_4BFA10(int this, unsigned __int8 a2) { int result; // eax@2 if ( a2 <= *(_BYTE *)(this + 276) ) result = *(_DWORD *)(this + 280) + 16 * a2; else result = 0; return result; } //----- (004BFA40) -------------------------------------------------------- signed __int16 __thiscall sub_4BFA40(int this) { int v1; // esi@1 unsigned int v2; // edx@1 int v3; // eax@1 int v4; // esi@1 int v5; // edx@1 signed __int16 result; // ax@4 v1 = this; v2 = (unsigned int)(signed __int64)(sub_6392B0() * 1.0e11) % *(_DWORD *)(this + 272); v3 = *(_DWORD *)(v1 + 256); v4 = *(_DWORD *)(v1 + 260); v5 = v2 + 1; if ( v3 == v4 ) { LABEL_4: result = -1; } else { while ( (unsigned int)v5 > *(_DWORD *)(v3 + 4) ) { v3 += 8; if ( v3 == v4 ) goto LABEL_4; } result = *(_WORD *)v3; } return result; } //----- (004BFAB0) -------------------------------------------------------- char __thiscall sub_4BFAB0(int this, __int16 a2) { int v2; // eax@2 int v3; // ecx@2 char result; // al@5 if ( a2 == -1 || (v2 = *(_DWORD *)(this + 256), v3 = *(_DWORD *)(this + 260), v2 == v3) ) { LABEL_5: result = 0; } else { while ( a2 != *(_WORD *)v2 ) { v2 += 8; if ( v2 == v3 ) goto LABEL_5; } result = 1; } return result; } //----- (004BFAF0) -------------------------------------------------------- void __thiscall sub_4BFAF0(int this) { int v1; // edx@1 v1 = *(_DWORD *)this; if ( *(_DWORD *)this != *(_DWORD *)(this + 4) ) *(_DWORD *)(this + 4) = v1; } // 4BFAF0: could not find valid save-restore pair for edi //----- (004BFB20) -------------------------------------------------------- int __thiscall sub_4BFB20(int this) { int v1; // esi@1 v1 = this; sub_626B20(this); sub_626B20(v1 + 64); sub_626B20(v1 + 128); sub_626B20(v1 + 192); *(_DWORD *)(v1 + 256) = 0; *(_DWORD *)(v1 + 260) = 0; *(_DWORD *)(v1 + 264) = 0; return v1; } //----- (004BFBA0) -------------------------------------------------------- void __thiscall sub_4BFBA0(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 256); if ( v2 ) operator delete(v2); *(_DWORD *)(v1 + 256) = 0; *(_DWORD *)(v1 + 260) = 0; *(_DWORD *)(v1 + 264) = 0; sub_626C10(v1 + 192); sub_626C10(v1 + 128); sub_626C10(v1 + 64); sub_626C10(v1); } //----- (004BFC40) -------------------------------------------------------- signed int __thiscall sub_4BFC40(void *this) { void *v1; // esi@1 signed int result; // eax@2 int v3; // ebx@9 int v4; // eax@9 int v5; // eax@10 int v6; // ecx@12 int v7; // ecx@13 unsigned __int8 v8; // al@17 int v9; // eax@17 int v10; // edi@19 unsigned int v11; // ecx@21 int v12; // ebx@21 signed int v13; // eax@23 unsigned int v14; // ecx@25 int v15; // eax@26 unsigned int v16; // edi@26 int v17; // eax@32 int v18; // ebx@32 __int16 v19; // cx@33 int v20; // eax@34 __int16 v21; // [sp+4h] [bp-Ch]@34 int v22; // [sp+8h] [bp-8h]@34 unsigned int v23; // [sp+Ch] [bp-4h]@19 v1 = this; if ( sub_627480(this, "../9Data/Shine/RareMoverRate.shn", 1, 2) ) { if ( sub_627480((char *)v1 + 64, "../9Data/Shine/RareMoverEachRate.shn", 7, 34) ) { if ( sub_627480((char *)v1 + 128, "../9Data/Shine/RareMoverSubRate.shn", 1, 2) ) { if ( sub_627480((char *)v1 + 192, "../9Data/Shine/MoverUpgradeEffect.shn", 541, 75) ) { sub_4BFAF0((int)((char *)v1 + 256)); v3 = 0; *((_DWORD *)v1 + 68) = 0; *((_DWORD *)v1 + 70) = 0; *((_BYTE *)v1 + 276) = 0; v4 = *((_DWORD *)v1 + 45); if ( v4 && (v5 = *(_DWORD *)(v4 + 40)) != 0 ) { v6 = *((_DWORD *)v1 + 61); if ( v6 ) v7 = *(_DWORD *)(v6 + 40); else v7 = 0; if ( v5 == v7 ) { v8 = v5 - 1; *((_BYTE *)v1 + 276) = v8; v9 = sub_65642C(16 * (v8 + 1) | -((unsigned __int64)((unsigned int)v8 + 1) >> 28 != 0)); *((_DWORD *)v1 + 70) = v9; if ( v9 ) { v23 = 0; v10 = 0; while ( 1 ) { *(_DWORD *)(v10 + *((_DWORD *)v1 + 70)) = v3; *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 4) = 792; v11 = v23; *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 8) = v3; *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 12) = v3; v12 = sub_626BC0((int)((char *)v1 + 192), v11); if ( !v12 ) { sub_639100(&unk_86DDD8, (int)"MoverUpgradeEffect Data NULL", v23); return 0; } *(_DWORD *)(v10 + *((_DWORD *)v1 + 70)) = v12; if ( *(_BYTE *)(v12 + 42) != 45 ) { v13 = sub_639670(&byte_878354, v12 + 42); if ( v13 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"RareMoverSubRate.shn AbStateIDX Invalid Data ", v12 + 42); return 0; } *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 4) = v13; *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 8) = sub_401310( &unk_877138, *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 4)); *(_DWORD *)(v10 + *((_DWORD *)v1 + 70) + 12) = *(_BYTE *)(v12 + 74); } v14 = *((_BYTE *)v1 + 276); v10 += 16; ++v23; if ( v23 > v14 ) break; v3 = 0; } v15 = *((_DWORD *)v1 + 29); v16 = 0; if ( v15 ) v23 = *(_DWORD *)(v15 + 40); else v23 = 0; if ( v23 <= 0 ) { LABEL_35: result = 1; } else { while ( 1 ) { v17 = sub_626BC0((int)((char *)v1 + 64), v16); v18 = v17; if ( !v17 ) { sub_639100(&unk_86DDD8, (int)"RareMoverEachRate Data NULL", v16); return 0; } v19 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v17); if ( v19 == -1 ) break; *((_DWORD *)v1 + 68) += *(_WORD *)(v18 + 32); v20 = *((_DWORD *)v1 + 68); v21 = v19; v22 = v20; sub_5F1770((int)((char *)v1 + 256), (unsigned int)&v21); ++v16; if ( v16 >= v23 ) goto LABEL_35; } sub_639100(&unk_86DDD8, (int)"RareMoverEachRate Invalid Item Index", v16); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"Mover Upgrade Data Memory Alloc Fail", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"Grade is Not Match.(RareMoverSubRate.shn and MoverUpgradeEffect.shn)", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"RareMoverSubRate Need Default Grade", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"Fail to read MoverUpgradeEffect.shn", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"Fail to read RareMoverSubRate.shn", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"Fail to read RareMoverEachRate.shn", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"Fail to read RareMoverRate.shn", 0); result = 0; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (004BFF90) -------------------------------------------------------- void *__thiscall sub_4BFF90(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 172, 42) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 172, 172, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004C0040) -------------------------------------------------------- void *__thiscall sub_4C0040(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C0ADC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C0ADC: using guessed type int (__thiscall *off_6C0ADC)(void *, char); //----- (004C0070) -------------------------------------------------------- int __thiscall sub_4C0070(void *this, unsigned __int16 a2) { void *v2; // edi@1 int v3; // ebx@3 int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MultiHitData::MultiHitTable::operator [](WORD sub)"); dword_7508B8[dword_750CB8] = (int)"MultiHitData::MultiHitTable::operator [](WORD sub)"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < (unsigned int)((*((_DWORD *)v2 + 1) - *(_DWORD *)v2) / 168) ) { v3 = *(_DWORD *)v2; if ( *(_WORD *)(*(_DWORD *)v2 + 168 * a2) == a2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MultiHitData::MultiHitTable::operator [](WORD sub)"); result = v3 + 168 * a2; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MultiHitData::MultiHitTable::operator [](WORD sub)"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MultiHitData::MultiHitTable::operator [](WORD sub)"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C0180) -------------------------------------------------------- int __thiscall sub_4C0180(int this, int a2) { int v2; // eax@1 unsigned int v3; // ecx@1 int result; // eax@2 v2 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 168; v3 = (unsigned int)((*(_DWORD *)(this + 8) - *(_DWORD *)this) / 168) >> 1; if ( (unsigned int)((char *)&unk_1861861 - v3) >= v2 ) result = v3 + v2; else result = 0; if ( result < (unsigned int)a2 ) result = a2; return result; } //----- (004C01C0) -------------------------------------------------------- int __stdcall sub_4C01C0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_1861861 || (result = operator new(168 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (004C0220) -------------------------------------------------------- void *__cdecl sub_4C0220(void *a1, void *a2, const void *a3) { void *result; // eax@1 void *v4; // edi@2 result = a1; while ( result != a2 ) { v4 = result; result = (char *)result + 168; memcpy(v4, a3, 0xA8u); } return result; } //----- (004C0250) -------------------------------------------------------- void *__cdecl sub_4C0250(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a2; result = a3; while ( v3 != a1 ) { v3 = (char *)v3 - 168; result = (char *)result - 168; memcpy(result, v3, 0xA8u); } return result; } //----- (004C0290) -------------------------------------------------------- void *__usercall sub_4C0290(void *result, void *a2, int a3, const void *a4) { int v4; // edx@1 v4 = a3; if ( a3 ) { result = a2; do { if ( result ) memcpy(result, a4, 0xA8u); result = (char *)result + 168; --v4; } while ( v4 ); } return result; } //----- (004C02C0) -------------------------------------------------------- void *__cdecl sub_4C02C0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 168 ) { if ( result ) memcpy(result, v3, 0xA8u); v3 = (char *)v3 + 168; } return result; } //----- (004C0300) -------------------------------------------------------- void *__thiscall sub_4C0300(int this, const void *a2, char *a3, const void *a4) { void *result; // eax@1 int v5; // ebx@1 int v6; // esi@1 int v7; // eax@2 int v8; // eax@5 int v9; // eax@5 int v10; // edi@5 void *v11; // ecx@5 const void *v12; // edi@5 signed int v13; // edx@5 int v14; // esi@5 const void *i; // eax@6 int v16; // ST04_4@11 void *v17; // ST00_4@11 const void *v18; // edi@12 void *v19; // eax@12 void *v20; // ST14_4@12 int v21; // [sp+0h] [bp-CCh]@1 char v22; // [sp+10h] [bp-BCh]@10 const void *v23; // [sp+B8h] [bp-14h]@2 int *v24; // [sp+BCh] [bp-10h]@1 int v25; // [sp+C0h] [bp-Ch]@1 int v26; // [sp+C8h] [bp-4h]@5 void *v27; // [sp+D8h] [bp+Ch]@5 result = &v25; v24 = &v21; v5 = this; v6 = (int)a3; if ( a3 ) { v23 = *(const void **)(this + 4); v7 = (signed int)((char *)v23 - *(_DWORD *)this) / 168; if ( (unsigned int)((char *)&unk_1861861 - v7) < (unsigned int)a3 ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 168 >= (unsigned int)&a3[v7] ) { memcpy(&v22, a4, 0xA8u); if ( (signed int)(v23 - a2) / 168 >= (unsigned int)a3 ) { v18 = (char *)v23 - 168 * (_DWORD)a3; v19 = sub_4C02C0((char *)v23 - 168 * (_DWORD)a3, v23, (void *)v23); v20 = (void *)v23; *(_DWORD *)(v5 + 4) = v19; sub_4C0250(a2, v18, v20); result = sub_4C0220((void *)a2, (char *)a2 + 168 * (_DWORD)a3, &v22); } else { sub_4C02C0(a2, v23, (char *)a2 + 168 * (_DWORD)a3); v16 = (int)&a3[-((*(_DWORD *)(v5 + 4) - (signed int)a2) / 168)]; v17 = *(void **)(v5 + 4); v26 = 2; sub_4C0290(v17, v17, v16, &v22); *(_DWORD *)(v5 + 4) += 168 * (_DWORD)a3; result = sub_4C0220((void *)a2, (void *)(*(_DWORD *)(v5 + 4) - 168 * (_DWORD)a3), &v22); } } else { v8 = sub_4C0180(this, (int)&a3[v7]); v23 = (const void *)v8; v9 = sub_4C01C0(v8); v10 = (signed int)((char *)a2 - *(_DWORD *)v5) / 168; v27 = (void *)v9; v11 = (void *)(168 * (signed int)((char *)a2 - *(_DWORD *)v5) / 168 + v9); v26 = 0; sub_4C0290((void *)(v5 + 12), v11, v6, a4); sub_4C02C0(*(const void **)v5, a2, v27); sub_4C02C0(a2, *(const void **)(v5 + 4), (char *)v27 + 168 * (v6 + v10)); v12 = *(const void **)v5; v13 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5)) >> 32) >> 5; v14 = v13 + ((unsigned int)v13 >> 31) + v6; if ( *(_DWORD *)v5 ) { for ( i = *(const void **)(v5 + 4); v12 != i; v12 = (char *)v12 + 168 ) ; operator delete(*(void **)v5); } result = (char *)v27 + 168 * (_DWORD)v23; *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(v5 + 4) = (char *)v27 + 168 * v14; *(_DWORD *)v5 = v27; } } return result; } //----- (004C05D0) -------------------------------------------------------- void __thiscall sub_4C05D0(void *this) { int v1; // ebx@1 signed int v2; // edi@1 unsigned int v3; // esi@1 int v4; // eax@3 int v5; // eax@7 const void *v6; // esi@11 int v7; // edi@11 int v8; // ecx@11 int v9; // eax@11 int v10; // edx@15 unsigned int v14; // eax@19 char *v15; // esi@23 int v16; // eax@24 int v17; // eax@25 int v18; // edi@27 unsigned __int8 v19; // cl@27 int v20; // edi@27 int v21; // eax@27 signed int v22; // eax@29 int v23; // [sp+Ch] [bp-1DCh]@11 int v24; // [sp+B4h] [bp-134h]@29 int v25; // [sp+B8h] [bp-130h]@1 unsigned int v26; // [sp+BCh] [bp-12Ch]@11 int v27; // [sp+C0h] [bp-128h]@9 int (__thiscall **v28)(void *, char); // [sp+C4h] [bp-124h]@1 int v29; // [sp+F8h] [bp-F0h]@1 char v30; // [sp+104h] [bp-E4h]@1 __int16 v31; // [sp+130h] [bp-B8h]@11 __int16 v32; // [sp+134h] [bp-B4h]@11 int v33; // [sp+138h] [bp-B0h]@11 char v34; // [sp+13Ch] [bp-ACh]@11 int v35; // [sp+13Eh] [bp-AAh]@11 char v36; // [sp+142h] [bp-A6h]@11 __int16 v37; // [sp+144h] [bp-A4h]@11 int v38; // [sp+148h] [bp-A0h]@11 char v39; // [sp+14Ch] [bp-9Ch]@11 int v40; // [sp+14Eh] [bp-9Ah]@11 char v41; // [sp+152h] [bp-96h]@11 __int16 v42; // [sp+154h] [bp-94h]@11 int v43; // [sp+158h] [bp-90h]@11 char v44; // [sp+15Ch] [bp-8Ch]@11 int v45; // [sp+15Eh] [bp-8Ah]@11 char v46; // [sp+162h] [bp-86h]@11 __int16 v47; // [sp+164h] [bp-84h]@11 int v48; // [sp+168h] [bp-80h]@11 char v49; // [sp+16Ch] [bp-7Ch]@11 int v50; // [sp+16Eh] [bp-7Ah]@11 char v51; // [sp+172h] [bp-76h]@11 __int16 v52; // [sp+174h] [bp-74h]@11 int v53; // [sp+178h] [bp-70h]@11 char v54; // [sp+17Ch] [bp-6Ch]@11 int v55; // [sp+17Eh] [bp-6Ah]@11 char v56; // [sp+182h] [bp-66h]@11 __int16 v57; // [sp+184h] [bp-64h]@11 int v58; // [sp+188h] [bp-60h]@11 char v59; // [sp+18Ch] [bp-5Ch]@11 int v60; // [sp+18Eh] [bp-5Ah]@11 char v61; // [sp+192h] [bp-56h]@11 __int16 v62; // [sp+194h] [bp-54h]@11 int v63; // [sp+198h] [bp-50h]@11 char v64; // [sp+19Ch] [bp-4Ch]@11 int v65; // [sp+19Eh] [bp-4Ah]@11 char v66; // [sp+1A2h] [bp-46h]@11 __int16 v67; // [sp+1A4h] [bp-44h]@11 int v68; // [sp+1A8h] [bp-40h]@11 char v69; // [sp+1ACh] [bp-3Ch]@11 int v70; // [sp+1AEh] [bp-3Ah]@11 char v71; // [sp+1B2h] [bp-36h]@11 __int16 v72; // [sp+1B4h] [bp-34h]@11 int v73; // [sp+1B8h] [bp-30h]@11 char v74; // [sp+1BCh] [bp-2Ch]@11 int v75; // [sp+1BEh] [bp-2Ah]@11 char v76; // [sp+1C2h] [bp-26h]@11 __int16 v77; // [sp+1C4h] [bp-24h]@11 int v78; // [sp+1C8h] [bp-20h]@11 char v79; // [sp+1CCh] [bp-1Ch]@11 int v80; // [sp+1CEh] [bp-1Ah]@11 char v81; // [sp+1D2h] [bp-16h]@11 char v82; // [sp+1D4h] [bp-14h]@11 unsigned int v83; // [sp+1D8h] [bp-10h]@1 int v84; // [sp+1E4h] [bp-4h]@1 int v85; // [sp+1E8h] [bp+0h]@1 v83 = (unsigned int)&v85 ^ __security_cookie; v1 = (int)this; sub_639920((int)&v28); v2 = 0; v28 = &off_6C0ADC; memset(&v30, 0, 0x2Au); v84 = 0; sub_4BFF90(&v28, "../9Data/Shine/MultiHitType.shn"); v3 = 0; v25 = *(_DWORD *)(v29 + 40); if ( v25 > 0 ) { do { if ( v3 < *(_DWORD *)(v29 + 40) ) v4 = sub_626BC0((int)&v28, v3); else v4 = (int)&v30; if ( *(_WORD *)v4 > v2 ) { if ( v3 < *(_DWORD *)(v29 + 40) ) v5 = sub_626BC0((int)&v28, v3); else v5 = (int)&v30; v27 = *(_WORD *)v5; v2 = v27; } ++v3; } while ( (signed int)v3 < v25 ); } v31 = -1; v33 = 792; v38 = 792; v43 = 792; v48 = 792; v53 = 792; v58 = 792; v63 = 792; v68 = 792; v73 = 792; v78 = 792; v32 = 0; v34 = 0; v36 = 0; v40 = 0; v39 = 0; v41 = 0; v42 = 0; v44 = 0; v46 = 0; v50 = 0; v49 = 0; v51 = 0; v52 = 0; v54 = 0; v56 = 0; v60 = 0; v59 = 0; v61 = 0; v62 = 0; v64 = 0; v66 = 0; v70 = 0; v69 = 0; v71 = 0; v72 = 0; v74 = 0; v76 = 0; v27 = v2 + 1; v80 = 0; v79 = 0; v81 = 0; v35 = 0; v37 = 0; v45 = 0; v47 = 0; v55 = 0; v57 = 0; v65 = 0; v67 = 0; v75 = 0; v77 = 0; v82 = 0; memcpy(&v23, &v31, 0xA8u); v6 = *(const void **)(v1 + 4); v7 = *(_DWORD *)v1; v8 = v27; v9 = (*(_DWORD *)(v1 + 4) - *(_DWORD *)v1) / 168; v26 = *(_DWORD *)(v1 + 4); if ( v27 <= (unsigned int)v9 ) { if ( v27 < (unsigned int)v9 && (const void *)(v7 + 168 * v27) != v6 ) { v10 = v7 + 168 * v27; *(_DWORD *)(v1 + 4) = v10; } } else { sub_4C0300(v1, v6, (char *)(v27 - v9), &v23); v8 = v27; } v14 = 0; v26 = 0; if ( v25 > 0 ) { while ( 1 ) { if ( v14 < *(_DWORD *)(v29 + 40) ) { v16 = sub_626BC0((int)&v28, v14); v8 = v27; v15 = (char *)v16; } else { v15 = &v30; } v17 = *(_WORD *)v15; if ( v17 >= v8 ) { sub_639150(&unk_86DDD8, (int)"MultiHitData::MultiHitTable::mht_Load : Invalid ID", v17, v8); loc_6391B0("MultiHitData::MultiHitTable::mht_Load"); } v18 = 168 * *(_WORD *)v15; v19 = *(_BYTE *)(v18 + *(_DWORD *)v1 + 164); *(_WORD *)(v18 + *(_DWORD *)v1) = *(_WORD *)v15; v20 = 2 * v19; *(_WORD *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 16 * v19 + 4) = *((_WORD *)v15 + 1); v21 = *(_DWORD *)v1 + 168 * *(_WORD *)v15; if ( *(_WORD *)(v21 + 16 * v19 + 4) ) { *(_WORD *)(v21 + 16 * v19 + 14) = *((_WORD *)v15 + 19); if ( *(_WORD *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 16 * v19 + 14) ) { v22 = sub_639670(&byte_878354, (int)(v15 + 4)); v24 = v22; if ( v22 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MultiHitData::MultiHitTable::mht_Load : Abstate not found", (int)(v15 + 4)); loc_6391B0("MultiHitData::MultiHitTable::mht_Load"); v22 = v24; } *(_DWORD *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 8 * v20 + 8) = v22; *(_BYTE *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 8 * v20 + 12) = v15[37]; if ( !*(_BYTE *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 8 * v20 + 12) ) { sub_639100(&unk_86DDD8, (int)"MultiHitData::MultiHitTable::mht_Load : Strength Zero", *(_WORD *)v15); loc_6391B0("MultiHitData::MultiHitTable::mht_Load"); } } *(_WORD *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 8 * v20 + 16) = *((_WORD *)v15 + 20); *(_BYTE *)(*(_DWORD *)v1 + 168 * *(_WORD *)v15 + 8 * v20 + 18) = v15[36]; ++*(_BYTE *)(168 * *(_WORD *)v15 + *(_DWORD *)v1 + 164); } ++v26; if ( (signed int)v26 >= v25 ) break; v14 = v26; v8 = v27; } } sub_626B50((int)&v28); v84 = -1; v28 = &off_6C0ADC; sub_639940((int)&v28); } // 6C0ADC: using guessed type int (__thiscall *off_6C0ADC)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (004C0A40) -------------------------------------------------------- int __thiscall sub_4C0A40(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 3; *(_DWORD *)(this + 4) = -1; return result; } //----- (004C0A50) -------------------------------------------------------- bool __thiscall sub_4C0A50(int this) { return *(_DWORD *)(this + 4) == -1; } //----- (004C0A60) -------------------------------------------------------- void __thiscall sub_4C0A60(int this) { *(_DWORD *)(this + 4) = -1; *(_DWORD *)this = 3; } //----- (004C0A70) -------------------------------------------------------- bool __thiscall sub_4C0A70(void *this) { return *(_DWORD *)this == 0; } //----- (004C0A80) -------------------------------------------------------- void __thiscall sub_4C0A80(int this, int a2) { int v2; // esi@1 v2 = this; if ( a2 ) { *(_DWORD *)(this + 4) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); *(_DWORD *)v2 = 0; } } //----- (004C0AB0) -------------------------------------------------------- int __thiscall sub_4C0AB0(int this, unsigned __int16 a2, int a3) { int result; // eax@1 result = a3; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = 1; return result; } //----- (004C0AD0) -------------------------------------------------------- int __thiscall sub_4C0AD0(int this, unsigned __int16 a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = a3; *(_DWORD *)this = 2; return result; } //----- (004C0AF0) -------------------------------------------------------- signed int __thiscall sub_4C0AF0(int this) { signed int result; // eax@2 if ( *(_DWORD *)this == 2 || *(_DWORD *)this == 1 ) result = *(_DWORD *)(this + 8); else result = -1; return result; } //----- (004C0B10) -------------------------------------------------------- char __thiscall sub_4C0B10(void *this, __int16 a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // esi@1 v2 = this; v3 = sub_54DE90(&unk_13253630, a2); v4 = v3; if ( !v3 || *((_DWORD *)v2 + 1) == -1 && !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) && -1 == (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1360))(v4) ) return 0; if ( *(_DWORD *)v2 == 2 ) { if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2692))(v4) || *((_DWORD *)v2 + 1) != *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2692))(v4) + 4) ) return 0; } else { if ( *(_DWORD *)v2 == 1 && *((_DWORD *)v2 + 1) != (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1360))(v4) ) return 0; } return 1; } //----- (004C0BC0) -------------------------------------------------------- bool __thiscall sub_4C0BC0(int this, int a2, int *a3, int a4) { int v4; // ebx@1 bool result; // al@2 int v6; // eax@8 void *v7; // edi@8 int v8; // eax@11 int v9; // ST04_4@12 void *v10; // eax@12 int v11; // edx@14 unsigned __int16 v12; // ax@17 int v13; // edi@17 int v14; // eax@20 int v15; // edx@24 int v16; // [sp+8h] [bp-4h]@1 v4 = this; v16 = this; if ( !a2 || !a3 ) return 0; if ( *(_DWORD *)(this + 4) == -1 ) return 1; if ( !a4 ) return 0; if ( *(_DWORD *)this == 2 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2); v7 = (void *)v6; if ( v6 ) { if ( *(_WORD *)(v6 + 4) == *(_DWORD *)(v4 + 4) ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a4 + 3612))() == 1 ) { v8 = 0; } else { v9 = *a3; v10 = sub_639A60(v7); v8 = sub_6418B0(v10, v9); } switch ( v8 ) { case 2: (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); result = v11 == sub_4C0AF0(v4); break; case 0: case 1: case 3: goto LABEL_23; default: sub_639100(&unk_86DDD8, (int)"ShineMultiTypeHandle::IsCanItemPick Not Find Raid Loot Type", 0); result = 0; break; } return result; } return 0; } return *(_DWORD *)(v4 + 4) == (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); } if ( *(_DWORD *)this != 1 || (v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2), (v13 = sub_641CA0(&dword_DA230A4, v12)) == 0) ) return *(_DWORD *)(v4 + 4) == (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2) != *(_DWORD *)(v4 + 4) ) return 0; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a4 + 3612))() == 1 ) v14 = 0; else v14 = sub_6418B0((void *)(v13 + 184), *a3); switch ( v14 ) { case 0: case 1: case 3: LABEL_23: result = 1; break; case 2: (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); result = v15 == sub_4C0AF0(v16); break; default: sub_639100(&unk_86DDD8, (int)"ShineMultiTypeHandle::IsCanItemPick Not Find Party Loot Type", 0); return 0; } return result; } // DA230A4: using guessed type int dword_DA230A4; //----- (004C0DA0) -------------------------------------------------------- void *__thiscall sub_4C0DA0(void *this) { void *v1; // esi@1 v1 = this; sub_427BE0(this); *(_DWORD *)v1 = &off_6C0C84; *((_DWORD *)v1 + 401) = 0; return v1; } // 6C0C84: using guessed type int (__stdcall *off_6C0C84)(int, int, int); //----- (004C0DC0) -------------------------------------------------------- int __thiscall sub_4C0DC0(int this) { return *(_DWORD *)(this + 1604); } //----- (004C0DD0) -------------------------------------------------------- int __thiscall sub_4C0DD0(int this, int a2) { int result; // eax@2 if ( *(_DWORD *)(this + 1604) > a2 ) result = *(_DWORD *)(this + 8 * a2 + 4); else result = 0; return result; } //----- (004C0DF0) -------------------------------------------------------- int __cdecl sub_4C0DF0(int a1, int a2) { return *(_DWORD *)(a1 + 4) - *(_DWORD *)(a2 + 4); } //----- (004C0E10) -------------------------------------------------------- void *__thiscall sub_4C0E10(void *this, int a2, char a3, char a4) { void *v4; // esi@1 v4 = this; sub_427BE0(this); *((_DWORD *)v4 + 402) = a2; *((_DWORD *)v4 + 401) = 0; *(_DWORD *)v4 = &off_6C0C94; *((_BYTE *)v4 + 1612) = a3; *((_BYTE *)v4 + 1613) = a4; return v4; } // 6C0C94: using guessed type int (__stdcall *off_6C0C94)(int, int, int); //----- (004C0E50) -------------------------------------------------------- char __thiscall sub_4C0E50(void *this, int a2) { void *v2; // edi@1 int v4; // ebx@7 unsigned __int16 v5; // ax@9 v2 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 996))(a2, 291) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 996))(a2, 499) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 4 || !sub_499E90(a2, *((_DWORD *)v2 + 402)) || ((*(void (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1804))(a2), !*((_DWORD *)v2 + 402)) ) return 0; v4 = 2; if ( (unsigned __int16)(*(int (**)(void))(**((_DWORD **)v2 + 402) + 1800))() != -1 ) v4 = 1; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1800))(a2); if ( !sub_63EDC0((int)&unk_14D159B0, v5, v4) || *((_BYTE *)v2 + 1613) == 1 && a2 == *((_DWORD *)v2 + 402) ) return 0; if ( *((_BYTE *)v2 + 1612) == 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 5 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 10 ) return 1; return 0; } if ( !(unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v2 + 402) + 2432))( a2, "AxialListNearScanEnemyorAll::alns_ValidObject") ) return 0; return (*(int (__stdcall **)(_DWORD))(**((_DWORD **)v2 + 402) + 1836))(a2); } //----- (004C0FA0) -------------------------------------------------------- void *__thiscall sub_4C0FA0(void *this) { void *v1; // esi@1 v1 = this; sub_427BE0(this); *((_DWORD *)v1 + 401) = 0; *((_DWORD *)v1 + 408) = 0; *(_DWORD *)v1 = &off_6C0CD4; return v1; } // 6C0CD4: using guessed type int (__stdcall *off_6C0CD4)(int, int, int); //----- (004C0FC0) -------------------------------------------------------- void __thiscall sub_4C0FC0(int this) { *(_DWORD *)(this + 1632) = 0; } //----- (004C0FD0) -------------------------------------------------------- void __thiscall sub_4C0FD0(int this, int a2, int a3, int a4, int a5, int a6, unsigned __int8 a7) { int v7; // esi@1 int v8; // eax@2 int v9; // eax@3 int v10; // eax@5 int v11; // edi@5 long double v12; // st7@11 int v13; // [sp+18h] [bp+10h]@11 v7 = this; if ( a2 ) { *(_DWORD *)(this + 1632) = a2; v8 = *(_DWORD *)(a2 + 36); if ( !v8 || (v9 = v8 - 1) != 0 && v9 != 1 ) { v11 = a4; v10 = a3; } else { v10 = a5; v11 = a6; } *(_DWORD *)(this + 1624) = v10; *(_DWORD *)(this + 1628) = v11; if ( *(_BYTE *)(a2 + 40) ) { if ( a5 != a3 || a6 != a4 ) { v13 = a6 - a4; v12 = sqrt((double)((a5 - a3) * (a5 - a3) + v13 * v13)); *(long double *)(this + 1616) = (double)(a5 - a3) / v12; *(long double *)(this + 1608) = (double)v13 / v12; } else { *(double *)(this + 1616) = (double)sub_576E40(&unk_132546E8, a7) * 0.0009765625; *(double *)(v7 + 1608) = (double)sub_576E10(&unk_132546E8, a7) * 0.0009765625; } } } } //----- (004C10B0) -------------------------------------------------------- int __thiscall sub_4C10B0(int this, int a2) { int v2; // edx@1 int result; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 1624); result = a2; v4 = *(_DWORD *)(this + 1628); *(_DWORD *)a2 = v2; *(_DWORD *)(a2 + 4) = v4; return result; } //----- (004C10D0) -------------------------------------------------------- signed int __stdcall sub_4C10D0(int a1) { return 1000; } //----- (004C10E0) -------------------------------------------------------- int __thiscall sub_4C10E0(int this, unsigned int a2) { int result; // eax@3 if ( a2 <= 0xC7 && *(_DWORD *)(this + 1632) ) result = 10 * *(_BYTE *)(a2 + this + 1636); else result = 1000; return result; } //----- (004C1110) -------------------------------------------------------- void *__thiscall sub_4C1110(void *this, char a2, char a3) { void *v3; // esi@1 v3 = this; sub_427BE0(this); *((_BYTE *)v3 + 1608) = a2; *((_DWORD *)v3 + 401) = 0; *(_DWORD *)v3 = &off_6C0CEC; *((_BYTE *)v3 + 1609) = a3; return v3; } // 6C0CEC: using guessed type int (__stdcall *off_6C0CEC)(int, int, int); //----- (004C1150) -------------------------------------------------------- bool __thiscall sub_4C1150(int this, int a2) { int v2; // edi@1 v2 = this; return a2 && *(_BYTE *)(this + 1608) == (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) && (*(_BYTE *)(v2 + 1609) != 1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 40))(a2) != 1); } //----- (004C11A0) -------------------------------------------------------- void *__thiscall sub_4C11A0(void *this) { void *v1; // esi@1 v1 = this; sub_427BE0(this); *((_DWORD *)v1 + 401) = 0; *((_DWORD *)v1 + 402) = 0; *(_DWORD *)v1 = &off_6C0CFC; return v1; } // 6C0CFC: using guessed type int (__stdcall *off_6C0CFC)(int, int, int); //----- (004C11C0) -------------------------------------------------------- void __thiscall sub_4C11C0(void *this) { *(_DWORD *)this = &off_6C0C84; sub_427EB0(this); } // 6C0C84: using guessed type int (__stdcall *off_6C0C84)(int, int, int); //----- (004C11D0) -------------------------------------------------------- int __thiscall sub_4C11D0(int this, int a2, int a3, int a4) { int result; // eax@1 result = a2; if ( a2 ) { *(_DWORD *)(this + 1608) = a2; result = a3; *(_DWORD *)(this + 1612) = a3; *(_DWORD *)(this + 1616) = a4; } return result; } //----- (004C1200) -------------------------------------------------------- int __thiscall sub_4C1200(void *this, int a2, int a3, int a4, int a5) { int v5; // edi@1 void *v6; // esi@1 int result; // eax@1 int v8; // ebx@3 void **v9; // esi@3 void *v10; // [sp+8h] [bp-8h]@1 int v11; // [sp+Ch] [bp-4h]@1 int v12; // [sp+18h] [bp+8h]@2 v5 = a2; v6 = this; v10 = this; result = sub_401310(&unk_877138, a2); v11 = result; if ( result ) { v12 = 0; if ( *((_DWORD *)v6 + 401) > 0 ) { v8 = a3; v9 = (void **)((char *)v6 + 4); do { (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)*v9 + 1592))( a5, v5, v8, v11, dword_14D129E8, 0, 0, a4, 9, 0); v8 = dword_871500; sub_401900(*v9, v5); sub_4055D0(*v9, v5, a4, v8); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)*v9 + 1008))(v5, a4, 1); (*(void (**)(void))(*(_DWORD *)*v9 + 1320))(); result = v12 + 1; v9 += 2; v12 = result; } while ( result < *((_DWORD *)v10 + 401) ); } } return result; } // 871500: using guessed type int dword_871500; // 14D129E8: using guessed type int dword_14D129E8; //----- (004C12D0) -------------------------------------------------------- char __thiscall sub_4C12D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // al@6 int v7; // [sp-4h] [bp-24h]@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScan::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScan::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) == 3 || !(unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 4))(v4, a3) || *((_DWORD *)v4 + 401) >= 0xC8u || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 291) ) { v7 = (int)"AxialListNearScan::ali_Work"; goto LABEL_9; } v5 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 996))(a3, 499); v7 = (int)"AxialListNearScan::ali_Work"; if ( v5 ) { LABEL_9: --dword_750CB8; goto LABEL_10; } *((_DWORD *)v4 + 2 * *((_DWORD *)v4 + 401) + 1) = a3; *((_DWORD *)v4 + 2 * (*((_DWORD *)v4 + 401))++ + 2) = a4; --dword_750CB8; LABEL_10: sub_467660((int)&unk_D020420, v7); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C1400) -------------------------------------------------------- char __thiscall sub_4C1400(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v6; // al@10 char v7; // bl@10 int v8; // eax@11 int v9; // ecx@11 int v10; // eax@11 int v11; // edi@11 signed int v12; // edx@12 int v13; // eax@12 double v14; // st7@13 double v15; // st6@13 int v16; // ecx@14 int v17; // ecx@16 char v18; // al@18 int v19; // [sp+28h] [bp+8h]@14 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListLimitAreaScan::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); return 0; } if ( !a3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) != 3 && (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 4))(v4, a3) && *((_DWORD *)v4 + 401) < 0xC8u ) { if ( !*((_DWORD *)v4 + 408) ) { v6 = sub_4C12D0(v4, a2, a3, a4); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); return v7; } v8 = sub_552F20(a3); v9 = *(_DWORD *)v8 - *((_DWORD *)v4 + 406); v10 = *(_DWORD *)(v8 + 4) - *((_DWORD *)v4 + 407); v11 = *((_DWORD *)v4 + 408); if ( *(_BYTE *)(v11 + 40) ) { v14 = (double)v10; v15 = (double)v9; v13 = (signed int)(v14 * *((double *)v4 + 202) - v15 * *((double *)v4 + 201)); v12 = (signed int)(v14 * *((double *)v4 + 201) + *((double *)v4 + 202) * v15); } else { v12 = v10; v13 = -v9; } v16 = v12 + *(_DWORD *)(v11 + 44); v19 = v16; if ( v16 < *(_DWORD *)(v11 + 56) ) { if ( v16 >= 0 ) { v17 = *(_DWORD *)(v11 + 48); if ( v17 + v13 < *(_DWORD *)(v11 + 60) ) { if ( v17 + v13 >= 0 ) { v18 = *(_BYTE *)(v17 + *(_DWORD *)(*(_DWORD *)(v11 + 64) + 4 * v19) + v13); if ( v18 ) { *((_DWORD *)v4 + 2 * *((_DWORD *)v4 + 401) + 1) = a3; *((_DWORD *)v4 + 2 * *((_DWORD *)v4 + 401) + 2) = a4; *((_BYTE *)v4 + (*((_DWORD *)v4 + 401))++ + 1636) = v18; } } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C1660) -------------------------------------------------------- char __thiscall sub_4C1660(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // eax@6 int v7; // [sp-4h] [bp-24h]@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanObjectType::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanObjectType::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( !a3 ) { --dword_750CB8; LABEL_10: v7 = (int)"AxialListNearScanObjectType::ali_Work"; goto LABEL_11; } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1156))(a3) == 3 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 4))(v4, a3) ) { --dword_750CB8; goto LABEL_10; } v5 = *((_DWORD *)v4 + 401); v7 = (int)"AxialListNearScanObjectType::ali_Work"; if ( v5 < 0xC8 ) { *((_DWORD *)v4 + 2 * v5 + 1) = a3; *((_DWORD *)v4 + 2 * (*((_DWORD *)v4 + 401))++ + 2) = a4; --dword_750CB8; } else { --dword_750CB8; } LABEL_11: sub_467660((int)&unk_D020420, v7); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C1780) -------------------------------------------------------- char __thiscall sub_4C1780(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 int v6; // eax@9 int v7; // ecx@9 int v8; // edx@9 int v9; // eax@9 int v10; // ebx@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListLimitAreaScan::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( a3 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 3004))(a3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1156))(a3) != 3 ) { if ( *((_DWORD *)v4 + 401) < 0xC8u ) { v6 = sub_552F20(a3); v7 = *((_DWORD *)v4 + 403) - *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4) - *((_DWORD *)v4 + 404); v9 = *((_DWORD *)v4 + 402); if ( v8 + *(_DWORD *)v9 < *(_DWORD *)(v9 + 12) ) { if ( v8 + *(_DWORD *)v9 >= 0 ) { v10 = v7 + *(_DWORD *)(v9 + 4); if ( v10 < *(_DWORD *)(v9 + 16) ) { if ( v10 >= 0 ) { if ( *(_BYTE *)(*(_DWORD *)(v9 + 4) + *(_DWORD *)(*(_DWORD *)(v9 + 20) + 4 * (v8 + *(_DWORD *)v9)) + v7) ) { *((_DWORD *)v4 + 2 * *((_DWORD *)v4 + 401) + 1) = a3; *((_DWORD *)v4 + 2 * (*((_DWORD *)v4 + 401))++ + 2) = a4; } } } } } } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListLimitAreaScan::ali_Work"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C1940) -------------------------------------------------------- int __thiscall sub_4C1940(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ebx@1 int result; // eax@1 v3 = this; v4 = 0; for ( result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(0); result; result = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 8))(v3, v4) ) { if ( *(_DWORD *)result == *(_DWORD *)a3 && *(_DWORD *)(result + 4) == *(_DWORD *)(a3 + 4) && *(_DWORD *)(result + 8) == *(_DWORD *)(a3 + 8) && *(_DWORD *)(result + 12) == *(_DWORD *)(a3 + 12) && *(_DWORD *)(result + 16) == *(_DWORD *)(a3 + 16) ) *((_DWORD *)v3 + (*((_DWORD *)v3 + 33))++ + 34) = result; ++v4; } if ( *((_DWORD *)v3 + 33) > 0 ) result = (*(int (__stdcall **)(int))(*(_DWORD *)a2 + 1228))(*((_DWORD *)v3 + 34) + 53); return result; } //----- (004C19D0) -------------------------------------------------------- int __thiscall sub_4C19D0(int this, int a2) { int result; // eax@2 if ( *(_DWORD *)(this + 132) >= a2 ) result = *(_DWORD *)(this + 4 * a2 + 136); else result = 0; return result; } //----- (004C1A00) -------------------------------------------------------- bool __thiscall sub_4C1A00(int this) { return *(_DWORD *)(this + 84471) != 0; } //----- (004C1A10) -------------------------------------------------------- FILE *__stdcall sub_4C1A10(int a1, int a2, int a3) { return sub_639100(&unk_86DDD8, (int)"NPCRoleBase::nrb_Role", 0); } //----- (004C1A30) -------------------------------------------------------- int __thiscall sub_4C1A30(int this, unsigned int a2) { int result; // eax@2 if ( a2 < *(_DWORD *)(*(_DWORD *)(this + 52) + 40) ) result = sub_626BC0(this, a2); else result = this + 64; return result; } //----- (004C1A50) -------------------------------------------------------- int __thiscall sub_4C1A50(void *this, int a2, int a3, int a4) { int v4; // edi@1 signed int v5; // eax@1 int v6; // esi@5 void (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // edx@7 int v9; // [sp-4h] [bp-3Ch]@4 char v10; // [sp+10h] [bp-28h]@7 int v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@1 v4 = (int)this; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( !(dword_D9FB864 & 1) ) { dword_D9FB864 |= 1u; word_D9FB860 = 70; atexit(nullsub_64); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_D9FB860 ) { v6 = sub_54DE90(&unk_13253630, *(_WORD *)(v4 + 84500)); if ( v6 ) { sub_5D47A0((int)&v10, v6, v4, *(_BYTE *)(a2 + 2)); v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 2920); LOBYTE(v12) = 1; v7(v6, 60, &v10); LOBYTE(v12) = 0; sub_5D4580(&v10); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD : NPC not found", *(_WORD *)(v4 + 84500)); } --dword_750CB8; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD"; } else { dword_750CB8 -= v5; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD"; } v12 = -1; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FB860: using guessed type __int16 word_D9FB860; // D9FB864: using guessed type int dword_D9FB864; //----- (004C1BA0) -------------------------------------------------------- int __thiscall sub_4C1BA0(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_EndOfTrade"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_EndOfTrade"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 21126); *((_DWORD *)v2 + 21088) = 0; if ( v3 ) { if ( *(_DWORD *)(v3 + 4) ) (*(void (__thiscall **)(_DWORD, void *))(**(_DWORD **)(v3 + 4) + 4))(*(_DWORD *)(v3 + 4), v2); *((_DWORD *)v2 + 21126) = 0; *((_DWORD *)v2 + 21127) = 0; if ( a2 ) sub_50E3F0((char *)v2 + 84520); *((_BYTE *)v2 + 23824) &= 0xEFu; *((_WORD *)v2 + 42250) = -1; sub_473EB0(v2); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_EndOfTrade"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C1CA0) -------------------------------------------------------- int __thiscall sub_4C1CA0(void *this, int a2, int a3, __int16 a4, unsigned __int16 a5, int a6, __int16 a7, __int16 a8) { void *v8; // ebx@1 void *v9; // esi@1 int v10; // eax@1 int v11; // edi@2 int v12; // esi@2 int v13; // eax@3 unsigned int v14; // eax@4 signed __int16 i; // di@5 int v16; // eax@7 int v17; // edx@11 int v18; // ecx@13 int v19; // edi@15 int v20; // eax@16 signed int v21; // eax@22 char v22; // al@28 int v23; // eax@32 void *v25; // [sp+14h] [bp-10h]@1 unsigned int v26; // [sp+34h] [bp+10h]@4 unsigned int v27; // [sp+3Ch] [bp+18h]@4 v8 = this; v25 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrm_ShopMenuOpen"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrm_ShopMenuOpen"; dword_750AB8[dword_750CB8++] = -1; v9 = off_849C18; v10 = sub_4C4610(&unk_D9FB918, a6); if ( v10 ) { *(_DWORD *)((char *)v9 + 2) = *(_DWORD *)v10; memmove((char *)v9 + 6, (const void *)(v10 + 4), 3 * *(_WORD *)v10); *(_WORD *)v9 = a8 & 0x3FF | 0x3C00; v11 = 3 * *((_WORD *)v9 + 1) + 6; *((_WORD *)v9 + 2) = a4; v12 = a2; if ( !sub_4C81E0(&off_849C18, v11) ) goto LABEL_29; v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); goto LABEL_31; } *(_WORD *)v9 = a7 & 0x3FF | 0x3C00; *((_WORD *)v9 + 1) = 0; *((_WORD *)v9 + 2) = a4; v27 = ((unsigned int)dword_849C1C >> 1) - 1; v14 = 0; v26 = 0; if ( (unsigned int)dword_14D20890 > 0 ) goto LABEL_6; for ( i = -1; ; i = *(_WORD *)v16 ) { if ( (unsigned __int16)i < (unsigned int)dword_14D20894 ) { v17 = dword_14D21184 + 40 * (unsigned __int16)i; if ( v17 ) { if ( *(_DWORD *)v17 ) { v18 = **(_WORD **)v17; if ( (_WORD)v18 == i ) { v8 = v25; v19 = dword_14D21184 + 40 * (unsigned __int16)i; goto LABEL_16; } sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v18 + 10000 * (unsigned __int16)i); v8 = v25; } } } v19 = 0; LABEL_16: v20 = *(_DWORD *)(v19 + 4); if ( *(_DWORD *)(v20 + 36) == *((_DWORD *)v8 + 1) ) { if ( *(_DWORD *)(v20 + 40) == *((_DWORD *)v8 + 2) && *(_DWORD *)(v20 + 44) == *((_DWORD *)v8 + 3) && *(_DWORD *)(v20 + 48) == *((_DWORD *)v8 + 4) && *(_DWORD *)(v20 + 52) == *((_DWORD *)v8 + 5) && *(_BYTE *)(sub_4C6E10(&dword_D9FBEE0, a5) + *(_DWORD *)(v19 + 4) + 56) ) break; } LABEL_24: v14 = v26 + 1; v26 = v14; if ( v14 >= dword_14D20890 ) goto LABEL_28; LABEL_6: if ( v14 < *(_DWORD *)(dword_14D20CD0 + 40) ) v16 = sub_626BC0((int)&unk_14D20C9C, v14); else v16 = (int)&unk_14D20CDC; } v21 = *((_WORD *)v9 + 1); if ( v21 < (signed int)v27 ) { *((_WORD *)v9 + v21 + 3) = **(_WORD **)v19; ++*((_WORD *)v9 + 1); goto LABEL_24; } sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrm_skill : Too many item", *((_WORD *)v9 + 1)); LABEL_28: v11 = 2 * *((_WORD *)v9 + 1) + 6; v22 = sub_4C81E0(&off_849C18, 2 * *((_WORD *)v9 + 1) + 6); v12 = a2; if ( !v22 ) { LABEL_29: sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrm_weapon : Packet Too Long", v11); goto LABEL_32; } v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); LABEL_31: (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v12, &off_849C18); LABEL_32: v23 = *(_DWORD *)(v12 + 102); *(_DWORD *)(v12 + 84508) = v8; *(_DWORD *)(v12 + 84512) = *(_DWORD *)v23; *(_DWORD *)(v12 + 84516) = *(_DWORD *)(v23 + 4); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 56))(v8) == 1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v12 + 3680))(v12); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrm_ShopMenuOpen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 849C1C: using guessed type int dword_849C1C; // D9FBEE0: using guessed type int dword_D9FBEE0; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D20CD0: using guessed type int dword_14D20CD0; // 14D21184: using guessed type int dword_14D21184; //----- (004C1F80) -------------------------------------------------------- int __thiscall sub_4C1F80(void *this, int a2, int a3, __int16 a4, unsigned __int16 a5, int a6, __int16 a7, __int16 a8) { void *v8; // ebx@1 int v9; // edi@1 void *v10; // esi@2 int v11; // eax@4 void *v12; // esi@5 int v13; // eax@7 void *v14; // esi@8 int v15; // eax@8 int v16; // eax@9 int v17; // esi@9 int v18; // eax@11 int v19; // eax@12 unsigned int v20; // eax@13 signed int v21; // eax@15 int v22; // eax@17 int v23; // ebx@21 int v24; // ecx@23 int v25; // eax@23 int v26; // eax@26 signed int v27; // eax@32 int v28; // esi@37 int v29; // eax@39 int v30; // eax@40 void *v32; // [sp+14h] [bp-10h]@1 signed int v33; // [sp+2Ch] [bp+8h]@20 unsigned int v34; // [sp+34h] [bp+10h]@13 unsigned int v35; // [sp+3Ch] [bp+18h]@13 v8 = this; v32 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrm_GuildShopMenuOpen"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrm_GuildShopMenuOpen"; dword_750AB8[dword_750CB8++] = -1; v9 = a2; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2) ) { v10 = off_849C18; *(_WORD *)off_849C18 = 13425; *((_WORD *)v10 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_DWORD *)v10 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); if ( sub_4C81E0(&off_849C18, 12) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ : Packet Too Long", 12); } v12 = off_849C18; *(_WORD *)off_849C18 = 29854; *((_WORD *)v12 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( sub_4C81E0(&off_849C18, 8) ) { v13 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ : Packet Too Long", 8); } } v14 = off_849C18; v15 = sub_4C4610(&unk_D9FB918, a6); if ( v15 ) { *(_DWORD *)((char *)v14 + 2) = *(_DWORD *)v15; memmove((char *)v14 + 6, (const void *)(v15 + 4), 3 * *(_WORD *)v15); *(_WORD *)v14 = a8 & 0x3FF | 0x3C00; v16 = *((_WORD *)v14 + 1); *((_WORD *)v14 + 2) = a4; v17 = 3 * v16 + 6; if ( sub_4C81E0(&off_849C18, 3 * v16 + 6) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v18 + 12))(v18, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrm_weapon : Packet Too Long", v17); } v19 = *(_DWORD *)(a2 + 102); *(_DWORD *)(a2 + 84508) = v8; *(_DWORD *)(a2 + 84512) = *(_DWORD *)v19; *(_DWORD *)(a2 + 84516) = *(_DWORD *)(v19 + 4); goto LABEL_41; } *(_WORD *)v14 = a7 & 0x3FF | 0x3C00; *((_WORD *)v14 + 1) = 0; *((_WORD *)v14 + 2) = a4; v35 = ((unsigned int)dword_849C1C >> 1) - 1; v20 = 0; v34 = 0; while ( 1 ) { if ( v20 < dword_14D20890 ) { if ( v20 < *(_DWORD *)(dword_14D20CD0 + 40) ) v22 = sub_626BC0((int)&unk_14D20C9C, v20); else v22 = (int)&unk_14D20CDC; v21 = *(_WORD *)v22; } else { v21 = 65535; } v33 = v21; v21 = (unsigned __int16)v21; if ( (unsigned __int16)v21 >= (unsigned int)dword_14D20894 || (v23 = dword_14D21184 + 40 * v21) == 0 || !*(_DWORD *)v23 ) goto LABEL_25; v24 = **(_WORD **)v23; v25 = v24 + 10000 * v21; if ( (_WORD)v24 != (_WORD)v33 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v25); LABEL_25: v23 = 0; } v26 = *(_DWORD *)(v23 + 4); if ( *(_DWORD *)(v26 + 36) != *((_DWORD *)v32 + 1) || *(_DWORD *)(v26 + 40) != *((_DWORD *)v32 + 2) || *(_DWORD *)(v26 + 44) != *((_DWORD *)v32 + 3) || *(_DWORD *)(v26 + 48) != *((_DWORD *)v32 + 4) || *(_DWORD *)(v26 + 52) != *((_DWORD *)v32 + 5) || !*(_BYTE *)(sub_4C6E10(&dword_D9FBEE0, a5) + *(_DWORD *)(v23 + 4) + 56) ) goto LABEL_34; v27 = *((_WORD *)v14 + 1); if ( v27 >= (signed int)v35 ) break; *((_WORD *)v14 + v27 + 3) = **(_WORD **)v23; ++*((_WORD *)v14 + 1); LABEL_34: v20 = v34 + 1; v34 = v20; if ( v20 >= dword_14D20890 ) goto LABEL_37; } sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrm_skill : Too many item", *((_WORD *)v14 + 1)); LABEL_37: v28 = 2 * *((_WORD *)v14 + 1) + 6; if ( sub_4C81E0(&off_849C18, v28) ) { v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v29 + 12))(v29, v9, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrm_weapon : Packet Too Long", v28); } v30 = *(_DWORD *)(v9 + 102); *(_DWORD *)(v9 + 84508) = v32; *(_DWORD *)(v9 + 84512) = *(_DWORD *)v30; *(_DWORD *)(v9 + 84516) = *(_DWORD *)(v30 + 4); LABEL_41: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrm_GuildShopMenuOpen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 849C1C: using guessed type int dword_849C1C; // D9FBEE0: using guessed type int dword_D9FBEE0; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D20CD0: using guessed type int dword_14D20CD0; // 14D21184: using guessed type int dword_14D21184; //----- (004C2350) -------------------------------------------------------- int __thiscall sub_4C2350(void *this, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v6; // ebx@1 int v7; // eax@1 int v8; // ecx@2 int v9; // eax@6 int v10; // eax@7 void *v12; // [sp+14h] [bp-10h]@1 v12 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrm_PortionStone"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrm_PortionStone"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 15365; v6 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1180))(a2); if ( (unsigned __int16)v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); *(_DWORD *)((char *)v5 + 2) = *(_DWORD *)(v8 + 28); *(_DWORD *)((char *)v5 + 6) = (unsigned __int16)((unsigned int)(*(_DWORD *)(v8 + 32) * (unsigned int)*(_WORD *)(a2 + 160314) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_DWORD *)((char *)v5 + 10) = *(_DWORD *)(v8 + 36); *(_DWORD *)((char *)v5 + 14) = *(_DWORD *)(v8 + 40); *(_DWORD *)((char *)v5 + 18) = (unsigned __int16)((unsigned int)(*(_DWORD *)(v8 + 44) * (unsigned int)*(_WORD *)(a2 + 160316) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_DWORD *)((char *)v5 + 22) = *(_DWORD *)(v8 + 48); if ( sub_4C81E0(&off_849C18, 26) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrm_PortionStone : Packet Too Long", 26); } v10 = *(_DWORD *)(a2 + 102); *(_DWORD *)(a2 + 84508) = v12; *(_DWORD *)(a2 + 84512) = *(_DWORD *)v10; *(_DWORD *)(a2 + 84516) = *(_DWORD *)(v10 + 4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrm_PortionStone"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C24E0) -------------------------------------------------------- int __thiscall sub_4C24E0(void *this, int a2, int a3, __int16 a4) { int v4; // ebx@1 signed int v5; // esi@1 int v6; // eax@4 int v7; // esi@5 int (__thiscall *v8)(_DWORD); // eax@10 unsigned __int16 v9; // ax@10 int v10; // edx@10 unsigned __int16 v11; // ax@10 bool v12; // zf@10 bool v13; // sf@10 int v14; // eax@13 int v15; // esi@13 void *v16; // esi@19 int v17; // edi@19 int v18; // edi@19 int v19; // esi@20 int v20; // eax@21 int v21; // esi@27 int v22; // eax@29 int v23; // eax@37 int v24; // esi@38 unsigned __int16 v25; // ax@38 int v26; // eax@38 int v27; // eax@39 int v28; // ST28_4@41 int v29; // eax@41 __int16 v30; // dx@42 __int16 v31; // ax@42 int v32; // ST14_4@43 int v33; // ST08_4@43 void *v34; // eax@43 void *v35; // eax@43 void *v36; // eax@43 unsigned int v38; // [sp-4h] [bp-208h]@1 int v39; // [sp+14h] [bp-1F0h]@26 unsigned __int16 v40; // [sp+18h] [bp-1ECh]@10 unsigned __int16 v41; // [sp+1Ah] [bp-1EAh]@10 int v42; // [sp+1Ch] [bp-1E8h]@11 int v43; // [sp+20h] [bp-1E4h]@10 int v44; // [sp+24h] [bp-1E0h]@41 char v45; // [sp+84h] [bp-180h]@41 char v46; // [sp+85h] [bp-17Fh]@41 int v47; // [sp+86h] [bp-17Eh]@41 int v48; // [sp+8Ch] [bp-178h]@41 char v49; // [sp+ECh] [bp-118h]@41 char v50; // [sp+EDh] [bp-117h]@41 int v51; // [sp+EEh] [bp-116h]@41 char v52; // [sp+F4h] [bp-110h]@38 char v53; // [sp+F5h] [bp-10Fh]@38 unsigned int v54; // [sp+1F4h] [bp-10h]@1 int v55; // [sp+200h] [bp-4h]@1 int v56; // [sp+204h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v38 = (unsigned int)&v56 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Portal::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Portal::nrb_Role"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v55 = 0; if ( a2 && !*(_DWORD *)(a2 + 84471) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3188))(a2); if ( v6 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3240))(v6); if ( v7 != (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2) ) goto LABEL_44; v5 = -1; } if ( !sub_50D480(a2 + 84520) || *(_DWORD *)(v4 + 24) < 0 ) goto LABEL_8; v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 60); v43 = 1; v9 = v8(v4); v10 = *(_DWORD *)v4; v40 = v9; v11 = (*(int (__thiscall **)(int))(v10 + 64))(v4); v12 = *(_DWORD *)(v4 + 24) == 0; v13 = *(_DWORD *)(v4 + 24) < 0; v41 = v11; if ( !(v13 | v12) ) { v42 = v4 + 28; v43 = 0; goto LABEL_17; } if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 40))(v4) == 1 ) { v14 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 36))(v4, 0); v15 = v14; v42 = v14; if ( v14 && !sub_483670(v14, *(_DWORD *)a3 + 84) ) { v43 = sub_461940(v4, a2, v15); LABEL_16: v5 = -1; LABEL_17: if ( sub_461D00(a2, a2, v43, (int)&v40) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 40))(v4) <= 1 ) { v52 = 0; memset(&v53, 0, 0xFFu); v24 = v42; v25 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)(v42 + 53)); v26 = sub_4190D0((int)&unk_14D20370, v25); if ( v26 ) v27 = v26 + 14; else v27 = (int)byte_6A492E; v28 = v27; v29 = sub_48C200(&unk_15090128, "LinkTitle"); sprintf(&v52, (const char *)v29, v28, v38); memcpy(&v48, (const void *)v24, 0x60u); v49 = *(_BYTE *)(v24 + 96); memcpy(&v44, (const void *)v42, 0x60u); v45 = *(_BYTE *)(v42 + 96); v50 = 0; v51 = 0; v46 = 0; v47 = 0; if ( *(_DWORD *)(v4 + 24) > 0 ) { v30 = *(_WORD *)(v4 + 126); v31 = *(_WORD *)(v4 + 128); v50 = 1; LOWORD(v51) = v30; HIWORD(v51) = v31; } v32 = sub_48C200(&unk_150A0980, "No"); v33 = sub_48C200(&unk_150A0980, off_6B5A90); v34 = sub_54CA20((void *)a2, &v52); v35 = sub_54CB10(v34, (int)sub_50D560, (const char *)v33, &v48); v36 = sub_54CB10(v35, (int)sub_50D4B0, (const char *)v32, &v44); sub_54CC20(v36, 0, a4, 0, 1000); } else { v16 = off_849C18; *(_WORD *)off_849C18 = 6175; *((_WORD *)v16 + 1) = a4; v17 = *(_DWORD *)(a2 + 102); *((_DWORD *)v16 + 1) = *(_DWORD *)v17; *((_DWORD *)v16 + 2) = *(_DWORD *)(v17 + 4); *((_WORD *)v16 + 6) = 1000; *((_BYTE *)v16 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 40))(v4); v18 = 0; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 40))(v4) > 0 ) { v19 = (int)((char *)v16 + 15); do { v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 36))(v4, v18); *(_DWORD *)(v19 + 8) = 0; *(_DWORD *)(v19 + 4) = 0; *(_DWORD *)v19 = 0; strncpy((char *)v19, (const char *)(v20 + 53), 0xCu); ++v18; v19 += 12; } while ( v18 < (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 40))(v4) ); } if ( sub_4C81E0(&off_849C18, 75) ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v23 + 12))(v23, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Portal::nrb_Role : Packet Too Long", 75); } } goto LABEL_44; } LABEL_8: v55 = v5; LABEL_45: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Portal::nrb_Role"); } LABEL_44: v55 = -1; goto LABEL_45; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2) < v40 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2) > v41 ) { v43 = 2; goto LABEL_17; } v39 = 0; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 40))(v4) <= 0 ) goto LABEL_17; while ( 1 ) { v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 36))(v4, v39); v42 = v21; if ( !v21 || sub_483670(v21, *(_DWORD *)a3 + 84) ) goto LABEL_44; v22 = sub_461940(v4, a2, v21); if ( v22 ) { if ( v22 == 2 ) goto LABEL_33; if ( v22 != 3 ) goto LABEL_44; } v43 = v22; LABEL_33: if ( v43 ) { ++v39; if ( v39 < (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 40))(v4) ) continue; } goto LABEL_16; } } --dword_750CB8; v55 = -1; return sub_467660((int)&unk_D020420, (int)"NPCRole_Portal::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C29E0) -------------------------------------------------------- int __thiscall sub_4C29E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edi@1 int v6; // eax@5 int v7; // eax@8 int v8; // esi@10 int v9; // eax@11 int v10; // esi@14 int v12; // [sp+14h] [bp-18h]@11 int v13; // [sp+18h] [bp-14h]@11 __int16 v14; // [sp+1Ch] [bp-10h]@11 __int16 v15; // [sp+1Eh] [bp-Eh]@11 int v16; // [sp+28h] [bp-4h]@1 int v17; // [sp+34h] [bp+8h]@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Portal::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Portal::nrb_Role"; dword_750AB8[dword_750CB8++] = -1; v5 = a2; v16 = 0; if ( !a2 || *(_DWORD *)(a2 + 84471) ) { --dword_750CB8; } else { if ( sub_50D480(a2 + 84520) ) { v6 = *((_DWORD *)v4 + 6); if ( v6 >= 0 ) { if ( a3 ) { if ( v6 > 0 || (v7 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 36))(v4, 0)) != 0 && !sub_483670(v7, *(_DWORD *)a3 + 84) ) { v8 = *((_DWORD *)v4 + 39); if ( v8 ) { v13 = -1; v12 = -1; v17 = sub_461AF0((void *)a2, v8, (int)&v13, (int)&v12); v14 = 1; v15 = (unsigned __int8)byte_DA2294C; v9 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v8 + 22), *(_BYTE *)(v8 + 67)); if ( v9 ) { v14 = *(_WORD *)(v9 + 34); v15 = *(_WORD *)(v9 + 36); } if ( sub_461D00(v5, v5, v17, (int)&v14) ) { v10 = (int)off_849C18; *(_WORD *)off_849C18 = -23548; *(_DWORD *)(v10 + 5) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *(_WORD *)(v10 + 3) = *(_WORD *)(v5 + 4); *(_DWORD *)(v10 + 13) = v13; sub_4836B0(v10 + 17, *(_DWORD *)a3 + 84); *(_DWORD *)(v10 + 9) = v12; *(_WORD *)(v10 + 70) = 2; sub_5A4980((void *)v5, v10); } } } } } } --dword_750CB8; } v16 = -1; return sub_467660((int)&unk_D020420, (int)"NPCRole_Portal::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C2BC0) -------------------------------------------------------- int __thiscall sub_4C2BC0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edi@1 int v6; // eax@8 int (__thiscall *v7)(_DWORD); // edx@10 int v8; // esi@12 int v9; // ebx@13 signed int v10; // eax@14 void *v11; // esi@21 int v12; // eax@23 int v14; // [sp+14h] [bp-18h]@10 int v15; // [sp+18h] [bp-14h]@10 unsigned __int16 v16; // [sp+1Ch] [bp-10h]@10 unsigned __int16 v17; // [sp+1Eh] [bp-Eh]@10 int v18; // [sp+28h] [bp-4h]@1 signed int v19; // [sp+34h] [bp+8h]@12 int v20; // [sp+38h] [bp+Ch]@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Mode_ID_Portal::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Mode_ID_Portal::nrb_Role"; dword_750AB8[dword_750CB8++] = -1; v5 = a2; v18 = 0; if ( a2 ) { if ( sub_55EF90(a2) != 1 && !*(_DWORD *)(a2 + 84471) && sub_50D480(a2 + 84520) && a3 && (v6 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 36))(v4, 0)) != 0 && !sub_483670(v6, *(_DWORD *)a3 + 84) ) { v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 60); v15 = -1; v14 = -1; v20 = 1; v16 = v7(v4); v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 64))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2) < v16 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1240))(a2) > v17 ) { v9 = a4; v20 = 2; LABEL_20: if ( sub_461D00(v5, v5, v20, (int)&v16) ) { v11 = off_849C18; *(_WORD *)off_849C18 = -23544; *((_BYTE *)v11 + 2) = sub_5A7540(byte_14D16AE8)[16]; *((_BYTE *)v11 + 3) = *(_BYTE *)(v9 + 21); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_DWORD *)v11 + 2) = v15; *((_DWORD *)v11 + 3) = v14; *((_WORD *)v11 + 8) = a4; sub_4836B0((int)((char *)v11 + 18), v9); if ( sub_4C81E0(&off_849C18, 38) ) { v12 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v12); } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Mode_ID_Portal::nrb_Role : Packet Too Long", 38); } sub_55EFA0(v5, 1); } } else { v19 = 0; v8 = (int)((char *)v4 + 156); while ( 1 ) { v9 = *(_DWORD *)v8; if ( *(_DWORD *)v8 ) break; LABEL_17: v8 += 4; ++v19; if ( v19 >= 3 ) goto LABEL_20; } v10 = sub_461AF0((void *)v5, v9, (int)&v15, (int)&v14); switch ( v10 ) { case 0: case 4: case 5: case 6: v20 = v10; goto LABEL_16; case 2: LABEL_16: if ( v20 ) goto LABEL_17; goto LABEL_20; default: break; } } v18 = -1; } else { v18 = -1; } --dword_750CB8; } else { --dword_750CB8; v18 = -1; } return sub_467660((int)&unk_D020420, (int)"NPCRole_Mode_ID_Portal::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (004C2E40) -------------------------------------------------------- int __thiscall sub_4C2E40(void *this, void *a2, int a3, __int16 a4) { void *v4; // edi@1 signed int v5; // esi@1 bool v6; // zf@1 int v7; // eax@5 int v8; // edi@7 int v9; // esi@8 int v10; // eax@9 int v11; // eax@16 int v12; // ST10_4@19 int v13; // ST0C_4@19 int v14; // eax@19 int v15; // esi@22 int v16; // eax@23 signed int v17; // eax@25 int v18; // eax@28 int v19; // eax@29 int v20; // ST0C_4@31 int v21; // eax@31 __int16 v22; // cx@32 __int16 v23; // dx@32 int v24; // eax@33 int v25; // eax@33 unsigned int v27; // [sp-4h] [bp-23Ch]@1 void *v28; // [sp+10h] [bp-228h]@1 int v29; // [sp+14h] [bp-224h]@7 int v30; // [sp+14h] [bp-224h]@8 signed int v31; // [sp+14h] [bp-224h]@16 int v32; // [sp+18h] [bp-220h]@31 char v33; // [sp+78h] [bp-1C0h]@31 char v34; // [sp+79h] [bp-1BFh]@31 int v35; // [sp+7Ah] [bp-1BEh]@31 int v36; // [sp+80h] [bp-1B8h]@31 char v37; // [sp+E0h] [bp-158h]@31 char v38; // [sp+E1h] [bp-157h]@31 int v39; // [sp+E2h] [bp-156h]@31 char v40; // [sp+E8h] [bp-150h]@25 char v41; // [sp+E9h] [bp-14Fh]@25 char v42; // [sp+1E8h] [bp-50h]@19 unsigned int v43; // [sp+228h] [bp-10h]@1 int v44; // [sp+234h] [bp-4h]@1 int v45; // [sp+238h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v27 = (unsigned int)&v45 ^ __security_cookie; v4 = this; v28 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_RandomMulti_Portal::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_RandomMulti_Portal::nrb_Role"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v6 = *(_DWORD *)((char *)a2 + 84471) == 0; v44 = 0; if ( v6 ) { if ( !sub_50D480((int)((char *)a2 + 84520)) || (v7 = *((_DWORD *)v4 + 6), v7 < 0) ) goto LABEL_4; if ( v7 > 0 ) { v8 = (int)((char *)v4 + 28); v29 = v8; goto LABEL_24; } v30 = 0; v9 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 36))(v4, 0); if ( v9 ) { while ( 1 ) { v10 = *(_DWORD *)a3; if ( *(_DWORD *)v9 == *(_DWORD *)(*(_DWORD *)a3 + 84) ) { if ( *(_DWORD *)(v9 + 4) == *(_DWORD *)(v10 + 88) && *(_DWORD *)(v9 + 8) == *(_DWORD *)(v10 + 92) && *(_DWORD *)(v9 + 12) == *(_DWORD *)(v10 + 96) && *(_DWORD *)(v9 + 16) == *(_DWORD *)(v10 + 100) ) break; } ++v30; v9 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 36))(v4, v30); if ( !v9 ) goto LABEL_34; } v31 = (unsigned __int8)(*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)a2 + 1240))(a2, v27); v11 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v9 + 20), 0); if ( v11 && (v31 < *(_WORD *)(v11 + 34) || v31 > *(_WORD *)(v11 + 36)) ) { v12 = *(_WORD *)(v11 + 36); v13 = *(_WORD *)(v11 + 34); v14 = sub_48C200(&unk_150A0980, "LevelLimit"); sprintf(&v42, (const char *)v14, v13, v12); (*(void (__thiscall **)(void *))(*(_DWORD *)a2 + 1924))(a2); } else { if ( *(_BYTE *)(v9 + 96) || (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1360))(a2) == -1 ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 40))(v4); v27 = (unsigned __int16)sub_427920(&unk_14D42DC0, v16); v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 36))(v4); v8 = v29; v5 = -1; LABEL_24: if ( v8 ) { v40 = 0; memset(&v41, 0, 0xFFu); v17 = sub_639620(&unk_14D20404, (unsigned __int8 *)(v8 + 53)); if ( v17 == v5 ) LOWORD(v17) = -1; v17 = (unsigned __int16)v17; if ( (unsigned __int16)v17 < dword_14D20400 && (v18 = *(_DWORD *)(dword_14D203FC + 4 * v17)) != 0 ) v19 = v18 + 14; else v19 = (int)byte_6A492E; v20 = v19; v21 = sub_48C200(&unk_15090128, "LinkTitle"); sprintf(&v40, (const char *)v21, v20, v27); memcpy(&v36, (const void *)v8, 0x60u); v37 = *(_BYTE *)(v8 + 96); memcpy(&v32, (const void *)v29, 0x60u); v33 = *(_BYTE *)(v29 + 96); v39 = 0; v34 = 0; v38 = 0; v35 = 0; if ( *((_DWORD *)v28 + 6) > 0 ) { v22 = *((_WORD *)v28 + 63); v23 = *((_WORD *)v28 + 64); v38 = 1; LOWORD(v39) = v22; HIWORD(v39) = v23; } sub_54CA20(a2, &v40); v24 = sub_48C200(&unk_150A0980, off_6B5A90); sub_54CB10(a2, (int)sub_50D560, (const char *)v24, &v36); v25 = sub_48C200(&unk_150A0980, "No"); sub_54CB10(a2, (int)sub_50D4B0, (const char *)v25, &v32); sub_54CC20(a2, 0, a4, 0, 1000); goto LABEL_34; } LABEL_4: v44 = v5; LABEL_35: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_RandomMulti_Portal::nrb_Role"); } v15 = *(_DWORD *)a2; sub_48C200(&unk_150A0980, "PartyLimitedField"); (*(void (__thiscall **)(void *))(v15 + 1924))(a2); } } LABEL_34: v44 = -1; goto LABEL_35; } --dword_750CB8; v44 = -1; return sub_467660((int)&unk_D020420, (int)"NPCRole_RandomMulti_Portal::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D020440: using guessed type int dword_D020440; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (004C31F0) -------------------------------------------------------- int __thiscall sub_4C31F0(void *this, void *a2, int a3, int a4) { void *v4; // edi@1 int v5; // ebx@1 int v6; // eax@1 int v7; // eax@19 int v8; // ecx@19 int v9; // edx@19 int v10; // esi@19 __int16 v12; // [sp-8h] [bp-3Ch]@28 __int16 v13; // [sp-4h] [bp-38h]@28 int v14; // [sp+10h] [bp-24h]@19 int v15; // [sp+14h] [bp-20h]@19 int v16; // [sp+18h] [bp-1Ch]@19 int v17; // [sp+1Ch] [bp-18h]@19 int v18; // [sp+20h] [bp-14h]@19 int v19; // [sp+24h] [bp-10h]@1 int v20; // [sp+30h] [bp-4h]@1 int v21; // [sp+3Ch] [bp+8h]@1 v4 = this; v19 = (int)"NPCRole_Merchant::nrb_Role"; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_Role"; dword_750AB8[dword_750CB8++] = -1; v5 = (int)a2; v20 = 0; v6 = (unsigned __int16)sub_54BF00(a2); v21 = v6; if ( (_WORD)v6 == 255 || (_WORD)v6 == -1 ) { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_Role : Wrong mapindex", 0); goto LABEL_36; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 1708))(v5, 0) ) goto LABEL_36; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 1712))(v5, 0); if ( !(dword_D9FB8F4 & 1) ) { dword_D9FB8F4 |= 1u; dword_D9FB8F0 = 0; dword_D9FB8EC = 0; dword_D9FB8E8 = 0; dword_D9FB8E4 = 0; *(_DWORD *)dword_D9FB8E0 = 0; strncpy(dword_D9FB8E0, "SoulStone", 0x14u); atexit(nullsub_72); } if ( !(dword_D9FB8F4 & 2) ) { dword_D9FB8F4 |= 2u; dword_D9FB8DC = 0; dword_D9FB8D8 = 0; dword_D9FB8D4 = 0; dword_D9FB8D0 = 0; *(_DWORD *)dword_D9FB8CC = 0; strncpy(dword_D9FB8CC, "Weapon", 0x14u); atexit(nullsub_71); } if ( !(dword_D9FB8F4 & 4) ) { dword_D9FB8F4 |= 4u; dword_D9FB8C8 = 0; dword_D9FB8C4 = 0; dword_D9FB8C0 = 0; dword_D9FB8BC = 0; *(_DWORD *)dword_D9FB8B8 = 0; strncpy(dword_D9FB8B8, "Skill", 0x14u); atexit(nullsub_70); } if ( !(dword_D9FB8F4 & 8) ) { dword_D9FB8F4 |= 8u; dword_D9FB8B4 = 0; dword_D9FB8B0 = 0; dword_D9FB8AC = 0; dword_D9FB8A8 = 0; *(_DWORD *)dword_D9FB8A4 = 0; strncpy(dword_D9FB8A4, "Item", 0x14u); atexit(nullsub_69); } if ( !(dword_D9FB8F4 & 0x10) ) { dword_D9FB8F4 |= 0x10u; dword_D9FB8A0 = 0; dword_D9FB89C = 0; dword_D9FB898 = 0; dword_D9FB894 = 0; *(_DWORD *)dword_D9FB890 = 0; strncpy(dword_D9FB890, "WeaponTitle", 0x14u); atexit(nullsub_68); } if ( !(dword_D9FB8F4 & 0x20) ) { dword_D9FB8F4 |= 0x20u; dword_D9FB88C = 0; dword_D9FB888 = 0; dword_D9FB884 = 0; dword_D9FB880 = 0; *(_DWORD *)dword_D9FB87C = 0; strncpy(dword_D9FB87C, "Guild", 0x14u); atexit(nullsub_67); } if ( !(dword_D9FB8F4 & 0x40) ) { dword_D9FB8F4 |= 0x40u; dword_D9FB878 = 0; dword_D9FB874 = 0; dword_D9FB870 = 0; dword_D9FB86C = 0; *(_DWORD *)dword_D9FB868 = 0; strncpy(dword_D9FB868, "ClassChange", 0x14u); atexit(nullsub_66); } v7 = *((_DWORD *)v4 + 1); v8 = *((_DWORD *)v4 + 2); v9 = *((_DWORD *)v4 + 3); v17 = *((_DWORD *)v4 + 4); v10 = *((_DWORD *)v4 + 5); v14 = v7; v15 = v8; v16 = v9; v18 = v10; if ( v7 == *(_DWORD *)dword_D9FB8E0 && v8 == dword_D9FB8E4 && v9 == dword_D9FB8E8 && v17 == dword_D9FB8EC && v10 == dword_D9FB8F0 ) { sub_4C2350(v4, v5, a3, a4, v21); goto LABEL_36; } if ( sub_427B00((int)&v14, (int)dword_D9FB8CC) ) { sub_4C1CA0(v4, v5, a3, a4, v21, *(_DWORD *)a3, 3, 9); goto LABEL_36; } if ( sub_427B00((int)&v14, (int)dword_D9FB8B8) ) { v13 = 10; v12 = 4; LABEL_33: sub_4C1CA0(v4, v5, a3, a4, v21, *(_DWORD *)a3, v12, v13); goto LABEL_36; } if ( sub_427B00((int)&v14, (int)dword_D9FB8A4) ) { sub_4C1CA0(v4, v5, a3, a4, v21, *(_DWORD *)a3, 6, 11); goto LABEL_36; } if ( sub_427B00((int)&v14, (int)dword_D9FB890) ) { v13 = 11; v12 = 6; goto LABEL_33; } if ( sub_427B00((int)&v14, (int)dword_D9FB87C) ) sub_4C1F80(v4, v5, a3, a4, v21, *(_DWORD *)a3, 6, 11); LABEL_36: --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FB86C: using guessed type int dword_D9FB86C; // D9FB870: using guessed type int dword_D9FB870; // D9FB874: using guessed type int dword_D9FB874; // D9FB878: using guessed type int dword_D9FB878; // D9FB880: using guessed type int dword_D9FB880; // D9FB884: using guessed type int dword_D9FB884; // D9FB888: using guessed type int dword_D9FB888; // D9FB88C: using guessed type int dword_D9FB88C; // D9FB894: using guessed type int dword_D9FB894; // D9FB898: using guessed type int dword_D9FB898; // D9FB89C: using guessed type int dword_D9FB89C; // D9FB8A0: using guessed type int dword_D9FB8A0; // D9FB8A8: using guessed type int dword_D9FB8A8; // D9FB8AC: using guessed type int dword_D9FB8AC; // D9FB8B0: using guessed type int dword_D9FB8B0; // D9FB8B4: using guessed type int dword_D9FB8B4; // D9FB8BC: using guessed type int dword_D9FB8BC; // D9FB8C0: using guessed type int dword_D9FB8C0; // D9FB8C4: using guessed type int dword_D9FB8C4; // D9FB8C8: using guessed type int dword_D9FB8C8; // D9FB8D0: using guessed type int dword_D9FB8D0; // D9FB8D4: using guessed type int dword_D9FB8D4; // D9FB8D8: using guessed type int dword_D9FB8D8; // D9FB8DC: using guessed type int dword_D9FB8DC; // D9FB8E4: using guessed type int dword_D9FB8E4; // D9FB8E8: using guessed type int dword_D9FB8E8; // D9FB8EC: using guessed type int dword_D9FB8EC; // D9FB8F0: using guessed type int dword_D9FB8F0; // D9FB8F4: using guessed type int dword_D9FB8F4; //----- (004C3640) -------------------------------------------------------- int __stdcall sub_4C3640(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"NPCRole_StoreManager::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_StoreManager::nrb_Role"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1708))(a1, 1) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1712))(a1, 1); sub_534000((void *)a1, 0, 0); sub_534000((void *)a1, 1, 0); sub_534000((void *)a1, 2, 0); sub_534000((void *)a1, 3, 0); sub_641000((void *)(a1 + 85744)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_StoreManager::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C3730) -------------------------------------------------------- int __thiscall sub_4C3730(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__thiscall *v6)(_DWORD, _DWORD, _DWORD); // eax@1 int v7; // eax@13 int v8; // eax@15 int v9; // eax@16 void *v11; // [sp+10h] [bp-128h]@1 char v12[4]; // [sp+14h] [bp-124h]@2 int v13; // [sp+18h] [bp-120h]@2 int v14; // [sp+1Ch] [bp-11Ch]@2 int v15; // [sp+20h] [bp-118h]@2 int v16; // [sp+24h] [bp-114h]@2 char v17; // [sp+28h] [bp-110h]@16 unsigned int v18; // [sp+128h] [bp-10h]@1 int v19; // [sp+134h] [bp-4h]@1 int v20; // [sp+138h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = (unsigned int)&v20 ^ __security_cookie; v5 = this; v11 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_MenuOpen::nrb_Role"); dword_7508B8[dword_750CB8] = (int)"NPCRole_MenuOpen::nrb_Role"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 1708); v19 = 0; if ( (unsigned __int8)v6(a2, 0, v4) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1712))(a2, 0); v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, "Guild", 0x14u); if ( *((_DWORD *)v5 + 1) != *(_DWORD *)v12 || *((_DWORD *)v5 + 2) != v13 || *((_DWORD *)v5 + 3) != v14 || *((_DWORD *)v5 + 4) != v15 || *((_DWORD *)v5 + 5) != v16 ) { v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, "ExchangeCoin", 0x14u); if ( *((_DWORD *)v5 + 1) != *(_DWORD *)v12 || *((_DWORD *)v5 + 2) != v13 || *((_DWORD *)v5 + 3) != v14 || *((_DWORD *)v5 + 4) != v15 || *((_DWORD *)v5 + 5) != v16 ) { v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, "RandomOption", 0x14u); if ( sub_427B00((int)((char *)v5 + 4), (int)v12) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 772))(a2, 15, 14); v8 = *(_DWORD *)(a2 + 102); *(_DWORD *)(a2 + 84508) = v11; *(_DWORD *)(a2 + 84512) = *(_DWORD *)v8; *(_DWORD *)(a2 + 84516) = *(_DWORD *)(v8 + 4); } else { v9 = sub_649DA0((int)((char *)v5 + 4), (int)&v17); sub_6390B0(&unk_86DDD8, (int)"NPCRole_MenuOpen::nrb_Role : Invalid argument", v9); } } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 772))(a2, 47, 12); v7 = *(_DWORD *)(a2 + 102); *(_DWORD *)(a2 + 84508) = v11; *(_DWORD *)(a2 + 84512) = *(_DWORD *)v7; *(_DWORD *)(a2 + 84516) = *(_DWORD *)(v7 + 4); } } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 772))(a2, 15, 12); } } --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"NPCRole_MenuOpen::nrb_Role"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C39C0) -------------------------------------------------------- int __stdcall sub_4C39C0(int a1) { sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_EndOfTrade"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_EndOfTrade"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1716))(0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_EndOfTrade"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C3A70) -------------------------------------------------------- int __stdcall sub_4C3A70(int a1) { sub_4675D0((int)&unk_D020420, (int)"NPCRole_StoreManager::nrb_EndOfTrade"); dword_7508B8[dword_750CB8] = (int)"NPCRole_StoreManager::nrb_EndOfTrade"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1716))(a1, 1); *(_BYTE *)(a1 + 23824) &= 0xEFu; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_StoreManager::nrb_EndOfTrade"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C3B20) -------------------------------------------------------- int __stdcall sub_4C3B20(int a1) { sub_4675D0((int)&unk_D020420, (int)"NPCRole_MenuOpen::nrb_EndOfTrade"); dword_7508B8[dword_750CB8] = (int)"NPCRole_MenuOpen::nrb_EndOfTrade"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1716))(0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_MenuOpen::nrb_EndOfTrade"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C3BD0) -------------------------------------------------------- int __thiscall sub_4C3BD0(int this, int a2) { int result; // eax@1 int v3; // esi@3 int v4; // edx@3 int v5; // esi@3 result = *(_DWORD *)this; if ( *(_DWORD *)this ) { v3 = *(_DWORD *)(a2 + 102); v4 = *(_DWORD *)v3; v5 = *(_DWORD *)(v3 + 4) - *(_DWORD *)(this + 8); if ( (unsigned int)((v4 - *(_DWORD *)(this + 4)) * (v4 - *(_DWORD *)(this + 4)) + v5 * v5) > 0xF4240 ) { sub_4C1BA0((void *)a2, 1); result = 0; } } else { sub_4C1BA0((void *)a2, 1); result = 0; } return result; } //----- (004C3C20) -------------------------------------------------------- char __thiscall sub_4C3C20(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 int v5; // ebx@7 void *v6; // eax@7 __int16 v7; // ax@9 int v8; // eax@9 int v9; // eax@11 void *v10; // eax@14 int v11; // eax@16 int v12; // eax@17 int v13; // eax@19 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::InteractWithNPC"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::InteractWithNPC"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D9FB8FC & 1) ) { dword_D9FB8FC |= 1u; word_D9FB8F8 = 70; atexit(nullsub_62); v3 = 1; } if ( !((v3 << **((_BYTE **)v2 + 957)) & (unsigned __int16)word_D9FB8F8) ) { dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::InteractWithNPC"); return 0; } if ( sub_63DA90((int)&unk_14D159B0, *(_WORD *)(*(_DWORD *)((char *)v2 + 32650) + 82)) == 17 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::InteractWithNPC"); return 0; } v5 = *(_WORD *)(a2 + 4); v6 = sub_418BA0(dword_D9FBF28, *(_WORD *)(a2 + 4)); *((_DWORD *)v2 + 21126) = v6; if ( !v6 ) goto LABEL_8; *((_WORD *)v2 + 42250) = v5; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1800))(a2); *((_WORD *)v2 + 42251) = v7; v8 = sub_5B7C00((char *)v2 + 82048, v7) - 1; if ( v8 ) { if ( v8 != 1 ) { v9 = *((_DWORD *)v2 + 21126); if ( !*(_DWORD *)v9 || !*(_DWORD *)(v9 + 4) ) { LABEL_8: sub_4C1BA0(v2, 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::InteractWithNPC"); return 0; } if ( *(_BYTE *)(*(_DWORD *)v9 + 63) ) { v10 = off_849C18; *(_WORD *)off_849C18 = 8220; *((_WORD *)v10 + 1) = *((_WORD *)v2 + 42251); if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD : Packet Too Long", 4); } v12 = *(_DWORD *)((char *)v2 + 102); *((_DWORD *)v2 + 21127) = &off_849B3C; *((_DWORD *)v2 + 21128) = *(_DWORD *)v12; *((_DWORD *)v2 + 21129) = *(_DWORD *)(v12 + 4); } else { (*(void (__stdcall **)(void *, int, int))**(void (__stdcall ****)(_DWORD, _DWORD, _DWORD))(v9 + 4))(v2, v9, v5); } } } else { sub_5BDBE0((char *)v2 + 82048, *((_WORD *)v2 + 42251)); v13 = *(_DWORD *)((char *)v2 + 102); *((_DWORD *)v2 + 21127) = &off_849B3C; *((_DWORD *)v2 + 21128) = *(_DWORD *)v13; *((_DWORD *)v2 + 21129) = *(_DWORD *)(v13 + 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::InteractWithNPC"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 849B3C: using guessed type int (__stdcall **off_849B3C)(int, int, int); // D9FB8F8: using guessed type __int16 word_D9FB8F8; // D9FB8FC: using guessed type int dword_D9FB8FC; //----- (004C3ED0) -------------------------------------------------------- int __thiscall sub_4C3ED0(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // edx@1 int v6; // eax@5 int v8; // [sp-4h] [bp-28h]@4 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D9FB904 & 1) ) { dword_D9FB904 |= 1u; word_D9FB900 = 70; atexit(nullsub_63); v5 = 1; } if ( !((v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_D9FB900) ) goto LABEL_4; v6 = *(_DWORD *)(v4 + 84504); if ( !v6 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK : MenuAck not during npc process", 0); goto LABEL_7; } if ( *(_DWORD *)(v6 + 4) ) { if ( sub_4C3BD0(v4 + 84508, v4) ) { if ( *(_BYTE *)(a2 + 2) == 1 ) (***(void (__stdcall ****)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 84504) + 4))( v4, *(_DWORD *)(v4 + 84504), *(_WORD *)(v4 + 84500)); v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"; goto LABEL_13; } LABEL_7: v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"; LABEL_13: --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } LABEL_4: dword_750CB8 -= v5; v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FB900: using guessed type __int16 word_D9FB900; // D9FB904: using guessed type int dword_D9FB904; //----- (004C4020) -------------------------------------------------------- int __thiscall sub_4C4020(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_D9FB90C & 1) ) { dword_D9FB90C |= 1u; word_D9FB908 = 70; atexit(nullsub_65); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_D9FB908 ) { sub_4C1BA0(v4, v5); --dword_750CB8; } else { dword_750CB8 -= v5; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FB908: using guessed type __int16 word_D9FB908; // D9FB90C: using guessed type int dword_D9FB90C; //----- (004C4110) -------------------------------------------------------- __int16 __thiscall sub_4C4110(int this, __int16 a2, char a3) { __int16 result; // ax@1 result = *(_WORD *)(this + 84500); if ( result == a2 ) result = sub_4C1BA0((void *)this, a3); return result; } //----- (004C4130) -------------------------------------------------------- int __thiscall sub_4C4130(void *this, int a2, int a3, int a4) { int v4; // edi@1 signed int v5; // eax@1 int v6; // eax@5 int v7; // esi@7 void (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // edx@14 void *v9; // ecx@14 void (__thiscall *v10)(_DWORD, _DWORD, _DWORD); // edx@18 int v12; // [sp-8h] [bp-15Ch]@4 char v13; // [sp+Ch] [bp-148h]@18 char v14; // [sp+24h] [bp-130h]@14 int v15; // [sp+3Ch] [bp-118h]@1 char v16; // [sp+40h] [bp-114h]@6 __int16 v17; // [sp+60h] [bp-F4h]@6 unsigned int v18; // [sp+144h] [bp-10h]@1 int v19; // [sp+150h] [bp-4h]@1 int v20; // [sp+154h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = (int)this; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( !(dword_D9FB914 & 1) ) { dword_D9FB914 |= 1u; word_D9FB910 = 70; atexit(nullsub_61); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_D9FB910 ) { v6 = *(_DWORD *)(v4 + 122); if ( v6 ) { v17 = *(_WORD *)(a2 + 2); sub_5070A0(*(void **)(v6 + 68), (int)sub_50ABE0, (int)&v16); } v7 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); if ( v7 ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v7 + 2068))(v7, *(_WORD *)(v4 + 4)); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 5 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1232))(v7) == 7 ) { sub_5D4550((int)&v13, v7, v4, (int)byte_6A492E); v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 2920); LOBYTE(v19) = 1; v10(v7, 32, &v13); sub_4C1BA0((void *)v4, 1); v9 = &v13; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) != 4 || !*(_DWORD *)(v7 + 126) || !sub_4233C0(v7 + 158, (int)byte_6A492E) ) { if ( (unsigned int)sub_402710(v4, v7) <= 0xF4240 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 2592))(v4, v7); else sub_4C1BA0((void *)v4, 1); goto LABEL_20; } sub_5D4550((int)&v14, v7, v4, (int)byte_6A492E); v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 2920); LOBYTE(v19) = 2; v8(v7, 32, &v14); sub_4C1BA0((void *)v4, 1); v9 = &v14; } LOBYTE(v19) = 0; sub_5D4580(v9); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD : NPC not found", *(_WORD *)(a2 + 2)); sub_4C1BA0((void *)v4, 1); } LABEL_20: --dword_750CB8; v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; goto LABEL_21; } dword_750CB8 -= v5; v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; LABEL_21: v19 = -1; return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FB910: using guessed type __int16 word_D9FB910; // D9FB914: using guessed type int dword_D9FB914; //----- (004C43A0) -------------------------------------------------------- int __thiscall sub_4C43A0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // ebx@1 signed int v5; // ebx@3 int v6; // edi@4 signed int v7; // eax@7 signed __int16 v8; // bx@7 int v9; // eax@19 int v10; // edi@19 int v11; // esi@19 int v13; // [sp-24h] [bp-B0h]@4 int v14; // [sp-20h] [bp-ACh]@4 int v15; // [sp-1Ch] [bp-A8h]@4 int v16; // [sp-18h] [bp-A4h]@4 int v17; // [sp-14h] [bp-A0h]@2 int v18; // [sp-10h] [bp-9Ch]@2 int v19; // [sp-Ch] [bp-98h]@2 int v20; // [sp-8h] [bp-94h]@2 int v21; // [sp-4h] [bp-90h]@2 int v22; // [sp+Ch] [bp-80h]@4 int *v23; // [sp+10h] [bp-7Ch]@4 int v24; // [sp+14h] [bp-78h]@1 int v25; // [sp+18h] [bp-74h]@1 int *v26; // [sp+1Ch] [bp-70h]@2 int v27; // [sp+20h] [bp-6Ch]@3 int v28; // [sp+24h] [bp-68h]@2 int v29; // [sp+28h] [bp-64h]@1 int v30; // [sp+2Ch] [bp-60h]@2 char v31; // [sp+30h] [bp-5Ch]@5 char v32; // [sp+70h] [bp-1Ch]@4 char v33; // [sp+7Ch] [bp-10h]@2 unsigned int v34; // [sp+88h] [bp-4h]@1 int v35; // [sp+8Ch] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v2 = this; **(_WORD **)(this + 67668) = 0; v25 = a2; v3 = 0; v4 = 0; v24 = sub_644670(this); v29 = 0; if ( v24 > 0 ) { do { v21 = v4; sprintf(&v33, "Tab%02d", v4); v26 = &v17; v21 = v3; v20 = v3; v19 = v3; v18 = v3; v17 = v3; strncpy((char *)&v17, &v33, 0x14u); v26 = (int *)sub_644CC0((void *)v2, v17, v18, v19, v20, v21); v28 = -1; v30 = v3; if ( (signed int)v26 > v3 ) { do { v5 = 0; v27 = 0; do { ++v28; v21 = v5; sprintf(&v32, "Column%02d", v5); v21 = (int)&v22; v20 = v3; v19 = v30; v18 = (int)"Rec"; v23 = &v13; v17 = v3; v16 = v3; v15 = v3; v14 = v3; v13 = v3; strncpy((char *)&v13, &v33, 0x14u); v6 = sub_644C30((void *)v2, &v32, v13, v14, v15, v16, v17, (const char *)v18, v19, v20, v21); if ( v6 == 0 ) { sub_6390B0(&unk_86DDD8, (int)"NPCItemList::ItemListOption::ilo_PacketMake : No data", v25); v21 = v5; v20 = v30; v19 = v29; sprintf(&v31, "T[%d] R[%d] C[%d]", v29, v30, v5); sub_6390B0(&unk_86DDD8, (int)"NPCItemList::ItemListOption::ilo_PacketMake", (int)&v31); loc_6391B0("NPCItemList::ItemListOption::ilo_PacketMake"); } if ( *(_BYTE *)v6 != 45 ) { v7 = sub_639620(&unk_14D20898, (unsigned __int8 *)v6); v8 = -1; if ( v7 != -1 ) v8 = v7; if ( v8 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"NPCItemList::ItemListOption::ilo_PacketMake : Invalid item index", v6); } else { if ( **(_WORD **)(v2 + 67668) >= 0x3E8u ) { sub_6390B0(&unk_86DDD8, (int)"NPCItemList::ItemListOption::ilo_PacketMake : Too many items", v25); loc_6391B0("NPCItemList::ItemListOption::ilo_PacketMake"); } *(_BYTE *)(**(_WORD **)(v2 + 67668) + *(_DWORD *)(v2 + 67668) + 2 * **(_WORD **)(v2 + 67668) + 4) = v28; *(_WORD *)(**(_WORD **)(v2 + 67668) + *(_DWORD *)(v2 + 67668) + 2 * **(_WORD **)(v2 + 67668) + 5) = v8; ++**(_WORD **)(v2 + 67668); } v5 = v27; } ++v5; v3 = 0; v27 = v5; } while ( v5 < 6 ); ++v30; } while ( v30 < (signed int)v26 ); v4 = v29; } ++v4; v29 = v4; } while ( v4 < v24 ); } v21 = 3 * **(_WORD **)(v2 + 67668) + 4; v9 = unknown_libname_130(v21); v10 = v9; *(_DWORD *)v9 = **(_DWORD **)(v2 + 67668); v11 = *(_DWORD *)(v2 + 67668); v20 = 3 * *(_WORD *)v11; memmove((void *)(v9 + 4), (const void *)(v11 + 4), v20); return v10; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004C4610) -------------------------------------------------------- int __thiscall sub_4C4610(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 int result; // eax@2 int v5; // esi@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"NPCItemList::NPCItemListTable::nilt_MenuPacket"); dword_7508B8[dword_750CB8] = (int)"NPCItemList::NPCItemListTable::nilt_MenuPacket"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_639670((char *)v2 + 404, a2); if ( v3 == -1 || (unsigned int)v3 >= 0x64 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCItemList::NPCItemListTable::nilt_MenuPacket"); result = 0; } else { v5 = *((_DWORD *)v2 + v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCItemList::NPCItemListTable::nilt_MenuPacket"); result = v5; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C46F0) -------------------------------------------------------- void __thiscall sub_4C46F0(int this, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // eax@3 int v5; // esi@3 int v6; // eax@4 int v7; // edi@7 int v8; // eax@7 int v9; // [sp-8h] [bp-A8h]@8 void *v10; // [sp-8h] [bp-A8h]@10 unsigned int v11; // [sp-4h] [bp-A4h]@1 char v12; // [sp+10h] [bp-90h]@3 unsigned int v13; // [sp+90h] [bp-10h]@1 int v14; // [sp+9Ch] [bp-4h]@3 int v15; // [sp+A0h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v11 = (unsigned int)&v15 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)(this + 400); if ( v3 >= 100 ) { sub_639100(&unk_86DDD8, (int)"NPCItemList::NPCItemListTable::nilt_ReadTable : Too many merchants", v3); loc_6391B0("NPCItemList::NPCItemListTable::nilt_ReadTable"); } sprintf(&v12, "../9Data/Shine/NPCItemList/%s.txt", a2, v11); v4 = operator new(0x10858u); v5 = v4; v14 = 0; if ( v4 ) { sub_6432E0(v4); LOBYTE(v14) = 1; v6 = unknown_libname_130(3004); *(_DWORD *)(v5 + 67668) = v6; *(_WORD *)(v6 + 2) = -1; } else { v5 = 0; } v14 = -1; if ( sub_6434A0((void *)v5, &v12) ) { *(_DWORD *)(v2 + 4 * *(_DWORD *)(v2 + 400)) = sub_4C43A0(v5, a2); v9 = *(_DWORD *)(v2 + 400); if ( *(_DWORD *)(v2 + 4 * *(_DWORD *)(v2 + 400)) == 0 ) { sub_639100(&unk_86DDD8, (int)"NPCItemList::NPCItemListTable::nilt_ReadTable : Packet make err", v9); if ( !v5 ) return; v10 = *(void **)(v5 + 67668); goto LABEL_14; } sub_639660((void *)(v2 + 404), (unsigned __int8 *)a2, v9); ++*(_DWORD *)(v2 + 400); } else { sub_6390B0(&unk_86DDD8, (int)"NPCItemList::NPCItemListTable::nilt_ReadTable : Read error", (int)&v12); v7 = sub_642790(v5); v8 = sub_6427A0(v5); sub_639100(&unk_86DDD8, v8, v7); } if ( !v5 ) return; v10 = *(void **)(v5 + 67668); LABEL_14: operator delete(v10); sub_643080((void *)v5); operator delete((void *)v5); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 6427A0: using guessed type int __thiscall sub_6427A0(_DWORD); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004C48A0) -------------------------------------------------------- char *__thiscall sub_4C48A0(void *this) { return (char *)this + 12292; } //----- (004C48B0) -------------------------------------------------------- int __cdecl sub_4C48B0(int a1, int a2) { return *(_WORD *)(a1 + 8) - *(_WORD *)(a2 + 8); } //----- (004C48D0) -------------------------------------------------------- int __thiscall sub_4C48D0(int this, __int16 a2) { int result; // eax@1 int v3; // edx@2 result = *(_DWORD *)(this + 12288); if ( (unsigned int)result < 0x400 ) { v3 = this + 12 * result + 8; while ( *(_WORD *)v3 != a2 ) { ++result; v3 += 12; if ( (unsigned int)result >= 0x400 ) return result; } result = this + 12 * result; *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; *(_WORD *)(result + 8) = -1; } return result; } //----- (004C4930) -------------------------------------------------------- int __thiscall sub_4C4930(int this, int a2) { int v2; // esi@1 char *v3; // eax@2 char v5[4]; // [sp+8h] [bp-18h]@2 int v6; // [sp+Ch] [bp-14h]@2 int v7; // [sp+10h] [bp-10h]@2 int v8; // [sp+14h] [bp-Ch]@2 int v9; // [sp+18h] [bp-8h]@2 unsigned int v10; // [sp+1Ch] [bp-4h]@1 int v11; // [sp+20h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; *(_DWORD *)this = &off_6C15BC; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; if ( a2 ) { v3 = (char *)(a2 + 84); } else { v9 = 0; v8 = 0; v7 = 0; v6 = 0; *(_DWORD *)v5 = 0; strncpy(v5, byte_6A492E, 0x14u); v3 = v5; } *(_DWORD *)(v2 + 4) = *(_DWORD *)v3; *(_DWORD *)(v2 + 8) = *((_DWORD *)v3 + 1); *(_DWORD *)(v2 + 12) = *((_DWORD *)v3 + 2); *(_DWORD *)(v2 + 16) = *((_DWORD *)v3 + 3); *(_DWORD *)(v2 + 20) = *((_DWORD *)v3 + 4); return v2; } // 6C15BC: using guessed type int (__stdcall *off_6C15BC)(int, int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004C49C0) -------------------------------------------------------- int __stdcall sub_4C49C0(int a1) { sub_639100(&unk_86DDD8, (int)"NPCRoleBase::nrb_linkinform", 0); return 0; } //----- (004C49E0) -------------------------------------------------------- int __stdcall sub_4C49E0(int a1) { int v2; // [sp-18h] [bp-18h]@1 int v3; // [sp-14h] [bp-14h]@1 int v4; // [sp-10h] [bp-10h]@1 int v5; // [sp-Ch] [bp-Ch]@1 int v6; // [sp-8h] [bp-8h]@1 int v7; // [sp-4h] [bp-4h]@1 v7 = a1; v6 = 0; v5 = 0; v4 = 0; v3 = 0; v2 = 0; strncpy((char *)&v2, "LinkTable", 0x14u); return sub_6442C0(&unk_D9FEF2C, v2, v3, v4, v5, v6, v7); } //----- (004C4A20) -------------------------------------------------------- int __thiscall sub_4C4A20(int this, int a2) { int v2; // esi@1 v2 = this; sub_4C4930(this, a2); *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 132) = 0; *(_DWORD *)(v2 + 136) = 0; *(_DWORD *)(v2 + 140) = 0; *(_DWORD *)(v2 + 144) = 0; *(_DWORD *)(v2 + 148) = 0; *(_DWORD *)(v2 + 152) = 0; *(_DWORD *)(v2 + 156) = 0; *(_DWORD *)v2 = &off_6C16A4; return v2; } // 6C16A4: using guessed type int (__stdcall *off_6C16A4)(int, int, int); //----- (004C4A70) -------------------------------------------------------- int __thiscall sub_4C4A70(int this, int a2) { int v2; // esi@1 v2 = this; sub_4C4930(this, a2); *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 132) = 0; *(_DWORD *)(v2 + 136) = 0; *(_DWORD *)(v2 + 140) = 0; *(_DWORD *)(v2 + 144) = 0; *(_DWORD *)(v2 + 148) = 0; *(_DWORD *)(v2 + 152) = 0; *(_DWORD *)v2 = &off_6C16EC; *(_DWORD *)(v2 + 156) = 0; *(_DWORD *)(v2 + 160) = 0; *(_DWORD *)(v2 + 164) = 0; return v2; } // 6C16EC: using guessed type int (__stdcall *off_6C16EC)(int, int, int); //----- (004C4AD0) -------------------------------------------------------- int __thiscall sub_4C4AD0(int this, int a2) { int v2; // esi@1 v2 = this; sub_4C4930(this, a2); *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 132) = 0; *(_DWORD *)(v2 + 136) = 0; *(_DWORD *)(v2 + 140) = 0; *(_DWORD *)(v2 + 144) = 0; *(_DWORD *)(v2 + 148) = 0; *(_DWORD *)(v2 + 152) = 0; *(_DWORD *)v2 = &off_6C1734; return v2; } // 6C1734: using guessed type int (__stdcall *off_6C1734)(int, int, int); //----- (004C4B20) -------------------------------------------------------- signed int __stdcall sub_4C4B20(int a1, int a2, int a3, int a4) { signed int result; // eax@1 result = 65535; *(_WORD *)a3 = -1; *(_DWORD *)a4 = 0; return result; } //----- (004C4B40) -------------------------------------------------------- signed __int16 __thiscall sub_4C4B40(void *this) { signed __int16 v1; // bx@1 void *v2; // esi@1 int v3; // edi@1 int v4; // ebx@2 int v5; // eax@4 signed __int16 v6; // ax@5 signed __int16 result; // ax@9 signed __int16 v8; // [sp+Ch] [bp-4h]@1 v1 = (unsigned __int8)byte_DA2294C; v2 = this; v8 = (unsigned __int8)byte_DA2294C; v3 = 0; if ( (*(int (**)(void))(*(_DWORD *)this + 40))() <= 0 ) { result = v1; } else { v4 = (int)((char *)v2 + 136); do { if ( *(_DWORD *)v4 ) { v5 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(*(_DWORD *)v4 + 20), 0); if ( v5 ) { v6 = *(_WORD *)(v5 + 34); if ( v8 > (unsigned __int16)v6 ) v8 = v6; } else { v8 = 1; } } ++v3; v4 += 4; } while ( v3 < (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 40))(v2) ); result = v8; } return result; } // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C4BC0) -------------------------------------------------------- signed __int16 __thiscall sub_4C4BC0(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ebx@2 int v4; // eax@4 signed __int16 v5; // ax@5 signed __int16 result; // ax@9 signed __int16 v7; // [sp+Ch] [bp-4h]@1 v1 = this; v7 = 1; v2 = 0; if ( (*(int (**)(void))(*(_DWORD *)this + 40))() <= 0 ) { result = 1; } else { v3 = (int)((char *)v1 + 136); do { if ( *(_DWORD *)v3 ) { v4 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(*(_DWORD *)v3 + 20), 0); if ( v4 ) { v5 = *(_WORD *)(v4 + 36); if ( v7 < (unsigned __int16)v5 ) v7 = v5; } else { v7 = (unsigned __int8)byte_DA2294C; } } ++v2; v3 += 4; } while ( v2 < (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 40))(v1) ); result = v7; } return result; } // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C4C40) -------------------------------------------------------- int __thiscall sub_4C4C40(void *this, int a2, int a3) { void *v3; // esi@1 int result; // eax@1 v3 = this; sub_4C1940(this, a2, a3); result = sub_4837D0((int)&unk_CFCF380, a3, 1); *((_DWORD *)v3 + 39) = result; return result; } //----- (004C4C70) -------------------------------------------------------- signed __int16 __thiscall sub_4C4C70(int this) { signed __int16 result; // ax@2 int v2; // eax@3 if ( *(_DWORD *)(this + 156) ) { v2 = sub_469530( (int)&dword_D020440, (const unsigned __int8 *)(*(_DWORD *)(this + 156) + 22), *(_BYTE *)(*(_DWORD *)(this + 156) + 67)); if ( v2 ) result = *(_WORD *)(v2 + 34); else result = 1; } else { result = (unsigned __int8)byte_DA2294C; } return result; } // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C4CB0) -------------------------------------------------------- __int16 __thiscall sub_4C4CB0(int this) { __int16 result; // ax@2 int v2; // eax@3 if ( *(_DWORD *)(this + 156) ) { v2 = sub_469530( (int)&dword_D020440, (const unsigned __int8 *)(*(_DWORD *)(this + 156) + 22), *(_BYTE *)(*(_DWORD *)(this + 156) + 67)); if ( v2 ) result = *(_WORD *)(v2 + 36); else result = (unsigned __int8)byte_DA2294C; } else { result = 0; } return result; } // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C4CF0) -------------------------------------------------------- int __thiscall sub_4C4CF0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 int v5; // edi@1 int result; // eax@2 v3 = this; sub_4C1940(this, a2, a3); v4 = 0; v5 = (int)((char *)v3 + 156); do { result = sub_4837D0((int)&unk_CFCF380, a3, v4); *(_DWORD *)v5 = result; ++v4; v5 += 4; } while ( v4 < 3 ); return result; } //----- (004C4D30) -------------------------------------------------------- signed __int16 __thiscall sub_4C4D30(void *this) { signed __int16 v1; // di@1 char *v2; // esi@1 signed int v3; // ebx@1 int v4; // eax@3 signed __int16 v5; // ax@4 v1 = (unsigned __int8)byte_DA2294C; v2 = (char *)this + 156; v3 = 3; do { if ( *(_DWORD *)v2 ) { v4 = sub_469530( (int)&dword_D020440, (const unsigned __int8 *)(*(_DWORD *)v2 + 22), *(_BYTE *)(*(_DWORD *)v2 + 67)); if ( v4 ) { v5 = *(_WORD *)(v4 + 34); if ( v1 > (unsigned __int16)v5 ) v1 = v5; } else { v1 = 1; } } v2 += 4; --v3; } while ( v3 ); return v1; } // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C4D90) -------------------------------------------------------- unsigned __int16 __thiscall sub_4C4D90(void *this) { unsigned __int16 v1; // di@1 char *v2; // esi@1 signed int v3; // ebx@1 int v4; // eax@3 unsigned __int16 v5; // ax@4 v1 = 0; v2 = (char *)this + 156; v3 = 3; do { if ( *(_DWORD *)v2 ) { v4 = sub_469530( (int)&dword_D020440, (const unsigned __int8 *)(*(_DWORD *)v2 + 22), *(_BYTE *)(*(_DWORD *)v2 + 67)); if ( v4 ) { v5 = *(_WORD *)(v4 + 36); if ( v1 < v5 ) v1 = v5; } else { v1 = (unsigned __int8)byte_DA2294C; } } v2 += 4; --v3; } while ( v3 ); return v1; } // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (004C4DE0) -------------------------------------------------------- void *__thiscall sub_4C4DE0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 5, 5) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 5, 5, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (004C4E80) -------------------------------------------------------- void *__thiscall sub_4C4E80(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C18BC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C18BC: using guessed type int (__thiscall *off_6C18BC)(void *, char); //----- (004C4EB0) -------------------------------------------------------- int __thiscall sub_4C4EB0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@1 int v6; // eax@2 signed int v7; // edi@4 int v8; // eax@7 int v9; // edx@8 int v10; // edi@8 int v11; // ecx@8 int v12; // edx@8 int v13; // edi@13 int v14; // eax@14 char *v15; // eax@15 bool v16; // zf@17 int v17; // eax@21 int v18; // ecx@21 signed int v19; // eax@21 int v20; // edi@32 int v21; // eax@33 char *v22; // eax@34 int v23; // edi@44 int v24; // edi@51 int v25; // edi@58 int v26; // edi@65 int v27; // edi@73 int v28; // edi@77 int v29; // eax@81 int v30; // eax@84 int v31; // eax@87 signed int i; // esi@94 int v33; // eax@95 char v34; // cl@96 int v36; // [sp-1Ch] [bp-124h]@7 int v37; // [sp-18h] [bp-120h]@7 int v38; // [sp-14h] [bp-11Ch]@7 char *v39; // [sp-10h] [bp-118h]@7 int v40; // [sp-Ch] [bp-114h]@7 signed int v41; // [sp-8h] [bp-110h]@7 unsigned int v42; // [sp-4h] [bp-10Ch]@1 int v43; // [sp+Ch] [bp-FCh]@1 int *v44; // [sp+10h] [bp-F8h]@7 int v45; // [sp+14h] [bp-F4h]@8 int v46; // [sp+18h] [bp-F0h]@8 int v47; // [sp+1Ch] [bp-ECh]@8 int v48; // [sp+20h] [bp-E8h]@8 int v49; // [sp+24h] [bp-E4h]@8 char v50; // [sp+2Bh] [bp-DDh]@2 int v51; // [sp+2Ch] [bp-DCh]@1 char v52; // [sp+30h] [bp-D8h]@86 char v53[4]; // [sp+44h] [bp-C4h]@8 int v54; // [sp+48h] [bp-C0h]@8 int v55; // [sp+4Ch] [bp-BCh]@8 int v56; // [sp+50h] [bp-B8h]@8 int v57; // [sp+54h] [bp-B4h]@8 char v58; // [sp+58h] [bp-B0h]@1 int v59; // [sp+D8h] [bp-30h]@1 int v60; // [sp+DCh] [bp-2Ch]@1 int v61; // [sp+E0h] [bp-28h]@1 int v62; // [sp+E4h] [bp-24h]@1 char v63; // [sp+E8h] [bp-20h]@1 unsigned int v64; // [sp+F8h] [bp-10h]@1 int v65; // [sp+104h] [bp-4h]@1 int v66; // [sp+108h] [bp+0h]@1 v64 = (unsigned int)&v66 ^ __security_cookie; v42 = (unsigned int)&v66 ^ __security_cookie; v2 = this; v51 = 0; v43 = (int)"NPCManager::nm_Load"; sub_4675D0((int)&unk_D020420, (int)"NPCManager::nm_Load"); dword_7508B8[dword_750CB8] = (int)"NPCManager::nm_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 4); v59 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a2 + 12); v60 = v3; v61 = v4; v65 = 0; v62 = v5; v63 = 0; sprintf(&v58, "../9Data/Shine/World/%s/NPC.txt", &v59); if ( !sub_6434A0((char *)v2 + 12292, &v58) ) { v50 = sub_6434A0((char *)v2 + 12292, "../9Data/Shine/World/NPC.txt"); v6 = sub_642790((char *)v2 + 12292); if ( !v50 ) { sub_639100(&unk_86DDD8, (int)"NPCManager::nm_Load : Error in NPC inform", v6); loc_6391B0("NPCManager::nm_Load"); } } *((_DWORD *)v2 + 3072) = 0; v7 = 1; do { *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)) = 0; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = 0; *((_WORD *)v2 + 6 * (*((_DWORD *)v2 + 3072))++ + 4) = -1; } while ( *((_DWORD *)v2 + 3072) < 0x400u ); *((_DWORD *)v2 + 3072) = 0; while ( 1 ) { v41 = *((_DWORD *)v2 + 3072); v44 = &v36; v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; strncpy((char *)&v36, "ShineNPC", 0x14u); *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)) = sub_6442C0((char *)v2 + 12292, v36, v37, v38, (int)v39, v40, v41); v8 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); if ( !v8 ) break; v9 = *(_DWORD *)(v8 + 72); v10 = *(_DWORD *)(v8 + 64); v46 = *(_DWORD *)(v8 + 68); v11 = *(_DWORD *)(v8 + 76); v47 = v9; v12 = *(_DWORD *)(v8 + 80); v45 = v10; v48 = v11; v49 = v12; v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "Merchant", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "JobManager", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "Gate", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "QuestNpc", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "StoreManager", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "ClientMenu", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "Guard", 0x14u); if ( v10 != *(_DWORD *)v53 || v46 != v54 || v47 != v55 || v48 != v56 || v49 != v57 ) { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "NPCMenu", 0x14u); if ( sub_427B00((int)&v45, (int)v53) ) { v28 = operator new(0x18u); if ( v28 ) { v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); sub_4C4930(v28, v41); *(_DWORD *)v28 = &off_6C187C; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v28; v7 = 1; ++*((_DWORD *)v2 + 3072); } else { LABEL_79: *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = 0; v7 = 1; ++*((_DWORD *)v2 + 3072); } } else { v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, "IDGate", 0x14u); if ( sub_427B00((int)&v45, (int)v53) ) { v29 = operator new(0xA0u); if ( !v29 ) goto LABEL_89; v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); v7 = 1; *((_DWORD *)v2 + 3 * (*((_DWORD *)v2 + 3072))++ + 1) = sub_4C4A20(v29, v41); } else { sub_418AC0(v53, "ModeIDGate"); if ( sub_427B00((int)&v45, (int)v53) ) { v30 = operator new(0xA8u); if ( !v30 ) goto LABEL_89; v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); v7 = 1; *((_DWORD *)v2 + 3 * (*((_DWORD *)v2 + 3072))++ + 1) = sub_4C4A70(v30, v41); } else { sub_418AC0(&v52, "RandomGate"); if ( !sub_427B00((int)&v45, (int)&v52) ) { sub_639100(&unk_86DDD8, (int)"NPCManager::nm_Load : Invalid NPC Role", 0); loc_6391B0("NPCManager::nm_Load"); goto LABEL_91; } v31 = operator new(0x9Cu); if ( v31 ) { v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); v7 = 1; *((_DWORD *)v2 + 3 * (*((_DWORD *)v2 + 3072))++ + 1) = sub_4C4AD0(v31, v41); } else { LABEL_89: v7 = 1; *((_DWORD *)v2 + 3 * (*((_DWORD *)v2 + 3072))++ + 1) = 0; } } } } } else { v27 = operator new(0x18u); if ( v27 ) { v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); sub_4C4930(v27, v41); *(_DWORD *)v27 = &off_6C183C; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v27; v7 = 1; ++*((_DWORD *)v2 + 3072); } else { LABEL_75: *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = 0; v7 = 1; ++*((_DWORD *)v2 + 3072); } } } else { v26 = operator new(0x18u); if ( v26 ) { v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); sub_4C4930(v26, v41); *(_DWORD *)v26 = &off_6C17FC; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v26; v7 = 1; ++*((_DWORD *)v2 + 3072); } else { LABEL_67: *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = 0; v7 = 1; ++*((_DWORD *)v2 + 3072); } } } else { v25 = operator new(0x18u); if ( !v25 ) goto LABEL_79; v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); sub_4C4930(v25, v41); *(_DWORD *)v25 = &off_6C177C; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v25; v7 = 1; ++*((_DWORD *)v2 + 3072); } } else { v24 = operator new(0x18u); if ( !v24 ) goto LABEL_75; v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); sub_4C4930(v24, v41); *(_DWORD *)v24 = &off_6C161C; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v24; v7 = 1; ++*((_DWORD *)v2 + 3072); } } else { v23 = operator new(0x9Cu); if ( !v23 ) goto LABEL_67; v41 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); sub_4C4930(v23, v41); *(_DWORD *)v23 = &off_6C165C; *(_DWORD *)(v23 + 24) = 0; *(_DWORD *)(v23 + 132) = 0; *(_DWORD *)(v23 + 136) = 0; *(_DWORD *)(v23 + 140) = 0; *(_DWORD *)(v23 + 144) = 0; *(_DWORD *)(v23 + 148) = 0; *(_DWORD *)(v23 + 152) = 0; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v23; v7 = 1; ++*((_DWORD *)v2 + 3072); } } else { v20 = operator new(0x18u); if ( !v20 ) goto LABEL_79; v21 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); *(_DWORD *)v20 = &off_6C15BC; *(_DWORD *)(v20 + 20) = 0; *(_DWORD *)(v20 + 16) = 0; *(_DWORD *)(v20 + 12) = 0; *(_DWORD *)(v20 + 8) = 0; *(_DWORD *)(v20 + 4) = 0; if ( v21 ) { v22 = (char *)(v21 + 84); } else { v51 |= 2u; v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, byte_6A492E, 0x14u); v22 = v53; } v16 = (v51 & 2) == 0; *(_DWORD *)(v20 + 4) = *(_DWORD *)v22; *(_DWORD *)(v20 + 8) = *((_DWORD *)v22 + 1); *(_DWORD *)(v20 + 12) = *((_DWORD *)v22 + 2); *(_DWORD *)(v20 + 16) = *((_DWORD *)v22 + 3); *(_DWORD *)(v20 + 20) = *((_DWORD *)v22 + 4); if ( !v16 ) v51 &= 0xFFFFFFFDu; *(_DWORD *)v20 = &off_6C161C; *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072) + 1) = v20; v7 = 1; ++*((_DWORD *)v2 + 3072); } } else { v13 = operator new(0x18u); if ( v13 ) { v14 = *((_DWORD *)v2 + 3 * *((_DWORD *)v2 + 3072)); *(_DWORD *)v13 = &off_6C15BC; *(_DWORD *)(v13 + 20) = 0; *(_DWORD *)(v13 + 16) = 0; *(_DWORD *)(v13 + 12) = 0; *(_DWORD *)(v13 + 8) = 0; *(_DWORD *)(v13 + 4) = 0; if ( v14 ) { v15 = (char *)(v14 + 84); } else { v51 |= 1u; v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v53, byte_6A492E, 0x14u); v15 = v53; } v16 = (v51 & 1) == 0; *(_DWORD *)(v13 + 4) = *(_DWORD *)v15; *(_DWORD *)(v13 + 8) = *((_DWORD *)v15 + 1); *(_DWORD *)(v13 + 12) = *((_DWORD *)v15 + 2); *(_DWORD *)(v13 + 16) = *((_DWORD *)v15 + 3); *(_DWORD *)(v13 + 20) = *((_DWORD *)v15 + 4); if ( !v16 ) v51 &= 0xFFFFFFFEu; *(_DWORD *)v13 = &off_6C17BC; } else { v13 = 0; } v17 = *((_DWORD *)v2 + 3072); v41 = 20; v40 = (int)"SoulStone"; v39 = v53; *((_DWORD *)v2 + 3 * v17 + 1) = v13; v57 = 0; v56 = 0; v55 = 0; v54 = 0; *(_DWORD *)v53 = 0; strncpy(v39, (const char *)v40, v41); v18 = (int)((char *)v2 + 12 * *((_DWORD *)v2 + 3072)); v19 = *(_DWORD *)v18; if ( *(_DWORD *)(*(_DWORD *)v18 + 84) == *(_DWORD *)v53 && *(_DWORD *)(v19 + 88) == v54 && *(_DWORD *)(v19 + 92) == v55 && *(_DWORD *)(v19 + 96) == v56 && *(_DWORD *)(v19 + 100) == v57 ) { LABEL_91: v7 = 1; ++*((_DWORD *)v2 + 3072); } else { v41 = *(_DWORD *)v18; sub_4C46F0((int)&unk_D9FB918, v41); v7 = 1; ++*((_DWORD *)v2 + 3072); } } } if ( *((_DWORD *)v2 + 3072) <= 0 ) { sub_639100(&unk_86DDD8, (int)"NPCManager::nm_Load : Empty NPC inform", 0); loc_6391B0("NPCManager::nm_Load"); } for ( i = 0; ; i += v7 ) { v41 = i; v44 = &v36; v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; strncpy((char *)&v36, "LinkTable", 0x14u); v33 = sub_6442C0(&unk_D9FEF2C, v36, v37, v38, (int)v39, v40, v41); if ( !v33 ) break; v34 = *(_BYTE *)(v33 + 96); if ( v34 && v34 != 1 ) { sub_6390B0(&unk_86DDD8, (int)"Error at LinkTable in NPC.txt", v33 + 20); loc_6391B0("NPCManager::nm_Load"); } } dword_750CB8 -= v7; v65 = -1; return sub_467660((int)&unk_D020420, (int)"NPCManager::nm_Load"); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 6C15BC: using guessed type int (__stdcall *off_6C15BC)(int, int, int); // 6C161C: using guessed type int (__stdcall *off_6C161C)(int, int, int); // 6C165C: using guessed type int (__stdcall *off_6C165C)(int, int, int); // 6C177C: using guessed type int (__stdcall *off_6C177C)(int, int, int); // 6C17BC: using guessed type int (__stdcall *off_6C17BC)(int, int, int); // 6C17FC: using guessed type int (__stdcall *off_6C17FC)(int, int, int); // 6C183C: using guessed type int (__stdcall *off_6C183C)(int, int, int); // 6C187C: using guessed type int (__stdcall *off_6C187C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C5B50) -------------------------------------------------------- int __thiscall sub_4C5B50(int this) { int v1; // edi@1 int v2; // ebx@2 signed int v3; // eax@3 unsigned __int8 *v4; // eax@6 int v5; // edi@8 unsigned __int8 *v6; // eax@12 int v7; // ebx@16 const char *v8; // ST30_4@17 int v10; // [sp+10h] [bp-74h]@1 int v11; // [sp+14h] [bp-70h]@1 int v12; // [sp+18h] [bp-6Ch]@8 int v13; // [sp+1Ch] [bp-68h]@2 unsigned int v14; // [sp+20h] [bp-64h]@10 unsigned int v15; // [sp+24h] [bp-60h]@4 char v16[4]; // [sp+28h] [bp-5Ch]@8 int v17; // [sp+2Ch] [bp-58h]@8 int v18; // [sp+30h] [bp-54h]@8 char v19[4]; // [sp+34h] [bp-50h]@17 int v20; // [sp+38h] [bp-4Ch]@17 int v21; // [sp+3Ch] [bp-48h]@17 int v22; // [sp+40h] [bp-44h]@17 int v23; // [sp+44h] [bp-40h]@17 int v24; // [sp+48h] [bp-3Ch]@17 int v25; // [sp+4Ch] [bp-38h]@17 int v26; // [sp+50h] [bp-34h]@17 char v27[4]; // [sp+54h] [bp-30h]@17 int v28; // [sp+58h] [bp-2Ch]@17 int v29; // [sp+5Ch] [bp-28h]@17 int v30; // [sp+60h] [bp-24h]@17 int v31; // [sp+64h] [bp-20h]@17 int v32; // [sp+68h] [bp-1Ch]@17 int v33; // [sp+6Ch] [bp-18h]@17 int v34; // [sp+70h] [bp-14h]@17 unsigned int v35; // [sp+74h] [bp-10h]@1 int v36; // [sp+80h] [bp-4h]@1 int v37; // [sp+84h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v1 = this; v10 = this; sub_4675D0((int)&unk_D020420, (int)"NPCManager::nm_SetNPC"); dword_7508B8[dword_750CB8] = (int)"NPCManager::nm_SetNPC"; dword_750AB8[dword_750CB8++] = -1; v36 = 0; v11 = 0; if ( *(_DWORD *)(v1 + 12288) > 0 ) { v2 = v1; v13 = v1; do { v3 = sub_639620(&unk_14D16018, *(unsigned __int8 **)v2); if ( v3 == -1 ) v15 = 65535; else v15 = (unsigned __int16)v3; v4 = *(unsigned __int8 **)v2; if ( (_WORD)v15 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"NPCManager::nm_SetNPC : Invalid mob id", (int)v4); } else { v18 = 0; v17 = 0; *(_DWORD *)v16 = 0; strncpy(v16, (const char *)v4 + 33, 0xCu); v5 = sub_54DF90(&unk_13253630, (int)&v12, 4); if ( v5 != 0 ) { v14 = (*(int (__thiscall **)(int, char *, _DWORD, _DWORD, _DWORD, int, unsigned int, _DWORD, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)v5 + 1760))( v5, v16, *(_DWORD *)(*(_DWORD *)v2 + 53), *(_DWORD *)(*(_DWORD *)v2 + 57), *(_WORD *)(*(_DWORD *)v2 + 61), v12, v15, 0, -1, 0, 0, -1, 1, 0, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2688))(v5); if ( v14 ) { sub_555DF0(&unk_13253630, v12, 0, 34); } else { sub_548D20(v5, 1); v6 = *(unsigned __int8 **)v2; *(_WORD *)(v2 + 8) = v12; (*(void (__stdcall **)(int, unsigned __int8 *))(**(_DWORD **)(v2 + 4) + 44))(v5, v6 + 84); if ( dword_13359664 ) v14 = *(_DWORD *)(dword_13359664 + 40); else v14 = 0; v15 = 0; if ( v14 > 0 ) { while ( 1 ) { v7 = sub_626BC0((int)&unk_13359630, v15); if ( !v7 ) break; v8 = *(const char **)v13; v34 = 0; v33 = 0; v32 = 0; v31 = 0; v30 = 0; v29 = 0; v28 = 0; *(_DWORD *)v27 = 0; strncpy(v27, v8, 0x20u); v26 = 0; v25 = 0; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; *(_DWORD *)v19 = 0; strncpy(v19, (const char *)v7, 0x20u); if ( *(_DWORD *)v27 == *(_DWORD *)v19 && v28 == v20 && v29 == v21 && v30 == v22 && v31 == v23 && v32 == v24 && v33 == v25 && v34 == v26 ) (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v5 + 828))(v5, 0, 1, 3); ++v15; if ( v15 >= v14 ) goto LABEL_29; } sub_639100(&unk_86DDD8, (int)"nm_SetNPC : pNpcScheduleData NULL", 0); LABEL_29: v2 = v13; } } } else { sub_639100(&unk_86DDD8, (int)"NPCManager::nm_SetNPC : Too many npc", 0); sub_555DF0(&unk_13253630, v12, 0, 33); } } v1 = v10; v2 += 12; ++v11; v13 = v2; } while ( v11 < *(_DWORD *)(v10 + 12288) ); } qsort((void *)v1, *(_DWORD *)(v1 + 12288), 0xCu, (int (__cdecl *)(const void *, const void *))sub_4C48B0); --dword_750CB8; v36 = -1; return sub_467660((int)&unk_D020420, (int)"NPCManager::nm_SetNPC"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13359664: using guessed type int dword_13359664; //----- (004C5E60) -------------------------------------------------------- int __thiscall sub_4C5E60(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) { void *v9; // edi@1 const char *v10; // eax@2 signed int v11; // eax@10 int v12; // eax@13 void *v13; // esi@13 __int16 v14; // ax@14 const char *v15; // eax@15 const char *v16; // eax@15 void (__thiscall *v17)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@15 int v19; // [sp-8h] [bp-60h]@10 unsigned int v20; // [sp-4h] [bp-5Ch]@1 int v21; // [sp+Ch] [bp-4Ch]@1 int v22; // [sp+10h] [bp-48h]@10 void *v23; // [sp+14h] [bp-44h]@1 int v24; // [sp+18h] [bp-40h]@1 char v25[4]; // [sp+1Ch] [bp-3Ch]@2 int v26; // [sp+20h] [bp-38h]@2 int v27; // [sp+24h] [bp-34h]@2 int v28; // [sp+28h] [bp-30h]@2 int v29; // [sp+2Ch] [bp-2Ch]@2 int v30; // [sp+30h] [bp-28h]@2 int v31; // [sp+34h] [bp-24h]@2 int v32; // [sp+38h] [bp-20h]@2 char v33[4]; // [sp+3Ch] [bp-1Ch]@15 int v34; // [sp+40h] [bp-18h]@15 int v35; // [sp+44h] [bp-14h]@15 unsigned int v36; // [sp+48h] [bp-10h]@1 int v37; // [sp+54h] [bp-4h]@1 int v38; // [sp+58h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v20 = (unsigned int)&v38 ^ __security_cookie; v9 = this; v23 = this; v21 = (int)"NPCManager::nm_StandNPC"; sub_4675D0((int)&unk_D020420, (int)"NPCManager::nm_StandNPC"); dword_7508B8[dword_750CB8] = (int)"NPCManager::nm_StandNPC"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; v24 = 0; if ( *((_DWORD *)v9 + 3072) > 0 ) { do { v10 = *(const char **)v9; v32 = 0; v31 = 0; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, v10, 0x20u); if ( a2 == *(_DWORD *)v25 && a3 == v26 && a4 == v27 && a5 == v28 && a6 == v29 && a7 == v30 && a8 == v31 && a9 == v32 ) { v19 = *(_DWORD *)v9; v11 = sub_639620(&unk_14D16018, (unsigned __int8 *)v19); v22 = v11; if ( v11 != -1 && (_WORD)v11 != -1 ) { v19 = *((_WORD *)v9 + 4); v12 = sub_54DE90(&unk_13253630, v19); v13 = (void *)v12; if ( v12 ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1800))(v12); if ( (_WORD)v22 == v14 ) { v15 = (const char *)(*(_DWORD *)v9 + 33); v35 = 0; v34 = 0; *(_DWORD *)v33 = 0; strncpy(v33, v15, 0xCu); v16 = *(const char **)v9; v17 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v13 + 2892); v19 = *(_WORD *)(*(_DWORD *)v9 + 61); v17(v13, *(_DWORD *)v33, v34, v35, *(_DWORD *)(v16 + 53), *(_DWORD *)(v16 + 57), v19); if ( sub_465790(v13, 0) ) { sub_555DF0(&unk_13253630, *((_WORD *)v23 + 6 * v24 + 4), 0, 34); break; } sub_549A40(v13, (int)sub_5789F0, 0, 0, 0, 0); (*(void (__thiscall **)(void *))(*(_DWORD *)v13 + 2688))(v13); } } } else { v19 = *(_DWORD *)v9; sub_6390B0(&unk_86DDD8, (int)"NPCManager::nm_StandNPC : Invalid mob id", v19); } } v9 = (char *)v9 + 12; ++v24; } while ( v24 < *((_DWORD *)v23 + 3072) ); } --dword_750CB8; v37 = -1; return sub_467660((int)&unk_D020420, (int)"NPCManager::nm_StandNPC"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C60C0) -------------------------------------------------------- int __thiscall sub_4C60C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) { void *v9; // edi@1 int v10; // esi@1 unsigned __int8 *v11; // eax@3 signed int v12; // eax@11 __int16 v13; // bx@11 int v14; // eax@14 void *v15; // esi@14 void *v17; // [sp+10h] [bp-3Ch]@1 int v18; // [sp+14h] [bp-38h]@1 void *v19; // [sp+18h] [bp-34h]@2 char v20[4]; // [sp+1Ch] [bp-30h]@3 int v21; // [sp+20h] [bp-2Ch]@3 int v22; // [sp+24h] [bp-28h]@3 int v23; // [sp+28h] [bp-24h]@3 int v24; // [sp+2Ch] [bp-20h]@3 int v25; // [sp+30h] [bp-1Ch]@3 int v26; // [sp+34h] [bp-18h]@3 int v27; // [sp+38h] [bp-14h]@3 unsigned int v28; // [sp+3Ch] [bp-10h]@1 int v29; // [sp+48h] [bp-4h]@1 int v30; // [sp+4Ch] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v9 = this; v17 = this; sub_4675D0((int)&unk_D020420, (int)"NPCManager::nm_StandNPC"); dword_7508B8[dword_750CB8] = (int)"NPCManager::nm_StandNPC"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v29 = 0; v18 = 0; if ( *((_DWORD *)v9 + 3072) > 0 ) { v19 = v9; do { v11 = *(unsigned __int8 **)v9; v27 = v10; v26 = v10; v25 = v10; v24 = v10; v23 = v10; v22 = v10; v21 = v10; *(_DWORD *)v20 = v10; strncpy(v20, (const char *)v11, 0x20u); if ( a2 == *(_DWORD *)v20 && a3 == v21 && a4 == v22 && a5 == v23 && a6 == v24 && a7 == v25 && a8 == v26 && a9 == v27 ) { v12 = sub_639620(&unk_14D16018, *(unsigned __int8 **)v9); v13 = v12; if ( v12 != -1 && (_WORD)v12 != -1 ) { v14 = sub_54DE90(&unk_13253630, *((_WORD *)v9 + 4)); v15 = (void *)v14; if ( v14 && v13 == (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1800))(v14) ) { sub_549A40(v15, (int)sub_550F60, 0, 0, 0, 0); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v15 + 828))(v15, 0, 1, 3); v9 = v19; } v10 = 0; } else { sub_6390B0(&unk_86DDD8, (int)"NPCManager::nm_StandNPC : Invalid mob id", *(_DWORD *)v9); } } v9 = (char *)v9 + 12; ++v18; v19 = v9; } while ( v18 < *((_DWORD *)v17 + 3072) ); } --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"NPCManager::nm_StandNPC"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C62B0) -------------------------------------------------------- char __thiscall sub_4C62B0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14) { void *v14; // edi@1 signed int v16; // eax@6 int v17; // eax@9 int v18; // ecx@9 int v19; // edx@9 int v20; // eax@9 int v21; // ebx@9 int v22; // esi@15 int v23; // ebx@18 int v24; // edi@18 int v25; // edi@24 unsigned int v26; // eax@27 bool v27; // cf@27 bool v28; // zf@27 int v29; // ecx@28 int v30; // ecx@34 int v31; // eax@34 __int16 v32; // dx@34 int v33; // [sp-10h] [bp-7Ch]@25 int v34; // [sp-Ch] [bp-78h]@25 int v35; // [sp-8h] [bp-74h]@25 signed int v36; // [sp+14h] [bp-58h]@6 void *v37; // [sp+18h] [bp-54h]@1 int v38; // [sp+1Ch] [bp-50h]@15 int v39; // [sp+20h] [bp-4Ch]@9 int v40; // [sp+24h] [bp-48h]@9 int v41; // [sp+28h] [bp-44h]@9 int v42; // [sp+2Ch] [bp-40h]@9 int v43; // [sp+30h] [bp-3Ch]@9 char v44; // [sp+34h] [bp-38h]@9 int v45; // [sp+38h] [bp-34h]@6 int v46; // [sp+3Ch] [bp-30h]@6 int v47; // [sp+40h] [bp-2Ch]@6 int v48; // [sp+44h] [bp-28h]@6 int v49; // [sp+48h] [bp-24h]@6 int v50; // [sp+4Ch] [bp-20h]@6 int v51; // [sp+50h] [bp-1Ch]@6 int v52; // [sp+54h] [bp-18h]@6 char v53; // [sp+58h] [bp-14h]@6 unsigned int v54; // [sp+5Ch] [bp-10h]@1 int v55; // [sp+68h] [bp-4h]@1 int v56; // [sp+6Ch] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v14 = this; v37 = this; sub_4675D0((int)&unk_D020420, (int)"NPCManager::nm_DynamicRegenerateNPC"); dword_7508B8[dword_750CB8] = (int)"NPCManager::nm_DynamicRegenerateNPC"; dword_750AB8[dword_750CB8++] = -1; v55 = 0; if ( !a2 || !*(_DWORD *)(a2 + 12) ) { --dword_750CB8; LABEL_3: v55 = -1; LABEL_4: sub_467660((int)&unk_D020420, (int)"NPCManager::nm_DynamicRegenerateNPC"); return 0; } v46 = a4; v47 = a5; v45 = a3; v49 = a7; v50 = a8; v48 = a6; v52 = a10; v51 = a9; v53 = 0; v16 = sub_639620(&unk_14D16018, (unsigned __int8 *)&v45); v36 = v16; if ( v16 == -1 || (_WORD)v16 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"NPCManager::nm_DynamicRegenerateNPC : Invalid mob id", (int)&v45); --dword_750CB8; goto LABEL_3; } v17 = *(_DWORD *)(a2 + 12); v18 = *(_DWORD *)v17; v19 = *(_DWORD *)(v17 + 4); v43 = *(_DWORD *)(v17 + 8); v20 = *((_DWORD *)v14 + 3072); v21 = 0; v41 = v18; v42 = v19; v44 = 0; v39 = 0; v40 = v20; if ( v20 > 0 ) { do { if ( !strcmp(*(const char **)v14, (const char *)&v45) && !strcmp((const char *)(*(_DWORD *)v14 + 33), (const char *)&v41) ) break; ++v21; v14 = (char *)v14 + 12; } while ( v21 < v40 ); v39 = v21; } if ( v21 == v40 ) { LABEL_17: --dword_750CB8; v55 = -1; goto LABEL_4; } v22 = sub_54DF90(&unk_13253630, (int)&v38, 4); if ( !v22 ) { sub_6390B0(&unk_86DDD8, (int)"NPCManager::nm_DynamicRegenerateNPC : Too many npc", (int)&v45); goto LABEL_17; } v23 = a13; v24 = a14; v40 = a12; if ( a12 == -1 ) v40 = *(_DWORD *)(*((_DWORD *)v37 + 3 * v39) + 53); if ( a13 == -1 ) v23 = *(_DWORD *)(*((_DWORD *)v37 + 3 * v39) + 57); if ( a14 == -1 ) v24 = *(_WORD *)(*((_DWORD *)v37 + 3 * v39) + 61); sub_548D20(v22, 1); v25 = (*(int (__thiscall **)(int, int, int, int, int, int, signed int, _DWORD, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)v22 + 1760))( v22, a11, v40, v23, v24, v38, v36, 0, -1, 0, 0, -1, 1, 0, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v22 + 2688))(v22); if ( v25 ) { v35 = 44; v34 = 0; v33 = v38; LABEL_26: sub_555DF0(&unk_13253630, v33, v34, v35); --dword_750CB8; v55 = -1; goto LABEL_4; } v26 = *((_DWORD *)v37 + 3072); v27 = v26 < 0x400; v28 = v26 == 1024; if ( v26 < 0x400 ) { v29 = (int)((char *)v37 + 12 * v26 + 8); do { if ( *(_WORD *)v29 == -1 ) break; ++v26; v29 += 12; } while ( v26 < 0x400 ); v27 = v26 < 0x400; v28 = v26 == 1024; } if ( !(v27 | v28) ) { sub_639100(&unk_86DDD8, (int)"NPCManager::nm_DynamicRegenerateNPC : nm_BufferArray Full", 0); v35 = 45; v34 = 0; v33 = v38; goto LABEL_26; } v30 = (int)((char *)v37 + 12 * v39); v31 = (int)((char *)v37 + 12 * v26); *(_DWORD *)v31 = *(_DWORD *)v30; v32 = v38; *(_DWORD *)(v31 + 4) = *(_DWORD *)(v30 + 4); *(_WORD *)(v31 + 8) = v32; --dword_750CB8; v55 = -1; sub_467660((int)&unk_D020420, (int)"NPCManager::nm_DynamicRegenerateNPC"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C6600) -------------------------------------------------------- int __stdcall sub_4C6600(void *a1, unsigned __int16 a2) { signed __int16 v2; // ax@1 int v4; // eax@5 int v5; // esi@7 sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemSellPrice"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_ItemSellPrice"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54BF00(a1); if ( v2 == 255 || v2 == -1 ) { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemSellPrice : Wrong mapindex", 0); --dword_750CB8; LABEL_4: sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemSellPrice"); return 0; } v4 = sub_418CB0((int)&dword_14D20890, a2); if ( !v4 ) { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", a2); --dword_750CB8; goto LABEL_4; } v5 = *(_DWORD *)(*(_DWORD *)v4 + 215); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemSellPrice"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004C6740) -------------------------------------------------------- int __stdcall sub_4C6740(int a1, unsigned __int16 a2) { int v2; // eax@1 int result; // eax@2 int v4; // esi@3 sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyPrice"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_ItemBuyPrice"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_418CB0((int)&dword_14D20890, a2); if ( v2 ) { v4 = *(_DWORD *)(*(_DWORD *)v2 + 211); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyPrice"); result = v4; } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyPrice"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004C6840) -------------------------------------------------------- int __stdcall sub_4C6840(int a1, unsigned __int16 a2) { int v2; // eax@1 int result; // eax@2 int v4; // esi@3 sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyGuildToken"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_ItemBuyGuildToken"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_418CB0((int)&dword_14D20890, a2); if ( v2 ) { v4 = *(_DWORD *)(*(_DWORD *)v2 + 224); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyGuildToken"); result = v4; } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemBuyGuildToken : cannot found item inform", a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyGuildToken"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004C6940) -------------------------------------------------------- int __stdcall sub_4C6940(int a1, unsigned __int16 a2) { int v2; // eax@1 int result; // eax@2 int v4; // esi@3 sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyFame"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_ItemBuyFame"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_418CB0((int)&dword_14D20890, a2); if ( v2 ) { v4 = *(_DWORD *)(*(_DWORD *)v2 + 220); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyFame"); result = v4; } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyFame"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004C6A40) -------------------------------------------------------- int __stdcall sub_4C6A40(int a1, unsigned __int16 a2) { int v2; // eax@1 int result; // eax@2 int v4; // esi@3 sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyCoin"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_ItemBuyCoin"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_418CB0((int)&dword_14D20890, a2); if ( v2 ) { v4 = *(_DWORD *)(*(_DWORD *)v2 + 228); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyCoin"); result = v4; } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyCoin"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004C6B40) -------------------------------------------------------- int __stdcall sub_4C6B40(int a1, unsigned __int16 a2, int a3, int a4) { int v4; // eax@1 int v5; // esi@1 int v6; // eax@3 sub_4675D0((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyItemMoney"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Merchant::nrb_ItemBuyItemMoney"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)a3 = -1; *(_DWORD *)a4 = 0; v4 = sub_418CB0((int)&dword_14D20890, a2); v5 = v4; if ( v4 ) { v6 = *(_DWORD *)(v4 + 36); if ( v6 ) { *(_WORD *)a3 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v6 + 32)); *(_DWORD *)a4 = *(_WORD *)(*(_DWORD *)(v5 + 36) + 64); } } else { sub_639100(&unk_86DDD8, (int)"NPCRole_Merchant::nrb_ItemBuyItemMoney : cannot found item inform", a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Merchant::nrb_ItemBuyItemMoney"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (004C6C40) -------------------------------------------------------- bool __thiscall sub_4C6C40(void *this) { void *v1; // edi@1 int v2; // eax@5 v1 = this; if ( !(dword_D9FBED8 & 1) ) { dword_D9FBED8 |= 1u; dword_D9FBED4 = 0; dword_D9FBED0 = 0; dword_D9FBECC = 0; dword_D9FBEC8 = 0; *(_DWORD *)dword_D9FBEC4 = 0; strncpy(dword_D9FBEC4, "Weapon", 0x14u); atexit(nullsub_190); } if ( !(dword_D9FBED8 & 2) ) { dword_D9FBED8 |= 2u; dword_D9FBEC0 = 0; dword_D9FBEBC = 0; dword_D9FBEB8 = 0; dword_D9FBEB4 = 0; *(_DWORD *)dword_D9FBEB0 = 0; strncpy(dword_D9FBEB0, "Item", 0x14u); atexit(nullsub_189); } v2 = *((_DWORD *)v1 + 1); return *(_DWORD *)dword_D9FBEB0 == v2 && dword_D9FBEB4 == *((_DWORD *)v1 + 2) && dword_D9FBEB8 == *((_DWORD *)v1 + 3) && dword_D9FBEBC == *((_DWORD *)v1 + 4) && dword_D9FBEC0 == *((_DWORD *)v1 + 5) || *(_DWORD *)dword_D9FBEC4 == v2 && dword_D9FBEC8 == *((_DWORD *)v1 + 2) && dword_D9FBECC == *((_DWORD *)v1 + 3) && dword_D9FBED0 == *((_DWORD *)v1 + 4) && dword_D9FBED4 == *((_DWORD *)v1 + 5); } // D9FBEB4: using guessed type int dword_D9FBEB4; // D9FBEB8: using guessed type int dword_D9FBEB8; // D9FBEBC: using guessed type int dword_D9FBEBC; // D9FBEC0: using guessed type int dword_D9FBEC0; // D9FBEC8: using guessed type int dword_D9FBEC8; // D9FBECC: using guessed type int dword_D9FBECC; // D9FBED0: using guessed type int dword_D9FBED0; // D9FBED4: using guessed type int dword_D9FBED4; // D9FBED8: using guessed type int dword_D9FBED8; //----- (004C6D60) -------------------------------------------------------- int __thiscall sub_4C6D60(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"MerchantCityData::mcd_Load"); dword_7508B8[dword_750CB8] = (int)"MerchantCityData::mcd_Load"; dword_750AB8[dword_750CB8++] = -1; sub_4C4DE0(v1, "../9Data/Shine/ItemMerchantInfo.shn"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"MerchantCityData::mcd_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C6E10) -------------------------------------------------------- int __thiscall sub_4C6E10(void *this, unsigned __int16 a2) { int v2; // edi@1 int v3; // esi@2 unsigned int v4; // eax@4 unsigned int v5; // ecx@4 int v7; // edi@9 int v8; // ecx@11 _BYTE *v9; // ecx@11 int v10; // esi@14 void *v11; // [sp+10h] [bp-10h]@1 unsigned int v12; // [sp+28h] [bp+8h]@4 v2 = (int)this; v11 = this; sub_4675D0((int)&unk_D020420, (int)"MerchantCityData::mcd_city"); dword_7508B8[dword_750CB8] = (int)"MerchantCityData::mcd_city"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= dword_14D20400 || (v3 = *(_DWORD *)(dword_14D203FC + 4 * a2)) == 0 ) { --dword_750CB8; LABEL_6: sub_467660((int)&unk_D020420, (int)"MerchantCityData::mcd_city"); return 0; } v4 = *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40); v5 = 0; v12 = 0; if ( (signed int)v4 <= 0 ) { LABEL_5: --dword_750CB8; goto LABEL_6; } while ( 1 ) { v7 = v5 < v4 ? sub_626BC0(v2, v5) : v2 + 64; v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)(v3 + 2); *((_DWORD *)v9 + 1) = *(_DWORD *)(v3 + 6); *((_DWORD *)v9 + 2) = *(_DWORD *)(v3 + 10); v9[12] = 0; if ( !strcmp((const char *)v7, v9) ) break; v4 = *(_DWORD *)(*((_DWORD *)v11 + 13) + 40); ++v12; if ( (signed int)v12 >= (signed int)v4 ) goto LABEL_5; v2 = (int)v11; v5 = v12; } v10 = *(_BYTE *)(v7 + 4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MerchantCityData::mcd_city"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (004C6FB0) -------------------------------------------------------- int __stdcall sub_4C6FB0(int a1, int a2, int a3, int a4, int a5) { sub_4675D0((int)&unk_D020420, (int)"NPCRoleBase::nrb_LinkBrench"); dword_7508B8[dword_750CB8] = (int)"NPCRoleBase::nrb_LinkBrench"; dword_750AB8[dword_750CB8++] = -1; (*(void (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1924))("Not gate"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRoleBase::nrb_LinkBrench"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C7060) -------------------------------------------------------- int __thiscall sub_4C7060(void *this, int a2, int a3, const void *a4, __int16 a5, __int16 a6) { void *v6; // ebx@1 v6 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Portal::nrb_LinkBrench"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Portal::nrb_LinkBrench"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v6 + 6) = a3; memcpy((char *)v6 + 28, a4, 0x61u); *((_WORD *)v6 + 63) = a5; *((_WORD *)v6 + 64) = a6; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NPCRole_Portal::nrb_LinkBrench"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C70F0) -------------------------------------------------------- char __stdcall sub_4C70F0(int a1) { sub_4675D0((int)&unk_D020420, (int)"NPCRoleBase::nrb_LinkBrenchCheck"); dword_7508B8[dword_750CB8] = (int)"NPCRoleBase::nrb_LinkBrenchCheck"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"NPCRoleBase::nrb_LinkBrenchCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C7140) -------------------------------------------------------- char __thiscall sub_4C7140(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 char result; // al@2 int v5; // ecx@3 signed int v6; // eax@3 int v7; // edx@3 int v8; // ecx@7 int v9; // [sp-4h] [bp-24h]@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"NPCRole_Portal::nrb_LinkBrenchCheck"); dword_7508B8[dword_750CB8] = (int)"NPCRole_Portal::nrb_LinkBrenchCheck"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 6); if ( v3 >= 0 ) { v5 = a2; v6 = 97; v7 = (int)((char *)v2 + 28); do { if ( *(_DWORD *)v7 != *(_DWORD *)v5 ) goto LABEL_10; v6 -= 4; v5 += 4; v7 += 4; } while ( (unsigned int)v6 >= 4 ); if ( *(_BYTE *)v5 != *(_BYTE *)v7 ) { LABEL_10: v9 = (int)"NPCRole_Portal::nrb_LinkBrenchCheck"; v8 = (int)&unk_D020420; goto LABEL_11; } v9 = (int)"NPCRole_Portal::nrb_LinkBrenchCheck"; v8 = (int)&unk_D020420; if ( v3 <= 0 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Portal::nrb_LinkBrenchCheck"); return 0; } *((_DWORD *)v2 + 6) = v3 - 1; LABEL_11: --dword_750CB8; sub_467660(v8, v9); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NPCRole_Portal::nrb_LinkBrenchCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C72D0) -------------------------------------------------------- int __thiscall sub_4C72D0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004C72F0) -------------------------------------------------------- signed int __thiscall sub_4C72F0(int this) { char v2; // [sp+0h] [bp-44h]@1 int v3; // [sp+1h] [bp-43h]@1 unsigned int v4; // [sp+40h] [bp-4h]@1 int v5; // [sp+44h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; LOWORD(v3) = v3 & 0x3FF | 0x800; v2 = 2; LOWORD(v3) = v3 & 0xFC01 | 1; return sub_5A4320(this, (int)&v2, 3u); } // 86FEB8: using guessed type int __security_cookie; //----- (004C7360) -------------------------------------------------------- void *__thiscall sub_4C7360(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C1EB4; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C1EB4: using guessed type int (__thiscall *off_6C1EB4)(void *, char); //----- (004C73A0) -------------------------------------------------------- char __thiscall sub_4C73A0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // eax@4 int v6; // eax@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"OPToolObject::opto_Routine"); dword_7508B8[dword_750CB8] = (int)"OPToolObject::opto_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { (*(void (__stdcall **)(int))(*(_DWORD *)a2 + 12))(a3); goto LABEL_13; } if ( (unsigned int)(*(_DWORD *)(v4 + 4) - 1) > 1 ) goto LABEL_13; v5 = (*(int (**)(void))(*(_DWORD *)(v4 + 224) + 12))(); if ( v5 ) { v6 = v5 - 1; if ( !v6 ) { (*(void (__stdcall **)(_DWORD, int))(**(_DWORD **)v3 + 4))(0, a3); (*(void (__thiscall **)(int))(*(_DWORD *)(*(_DWORD *)v3 + 224) + 36))(*(_DWORD *)v3 + 224); *((_DWORD *)v3 + 1) = dword_14D129E8; ++dword_86B064; goto LABEL_13; } if ( v6 == 1 ) { *(_DWORD *)(*(_DWORD *)v3 + 4) = 3; LABEL_12: *(_DWORD *)v3 = 0; goto LABEL_13; } } else { if ( (*(int (__thiscall **)(int))(*(_DWORD *)(*(_DWORD *)v3 + 224) + 40))(*(_DWORD *)v3 + 224) ) sub_5A4330(*(void **)v3); if ( *((_DWORD *)v3 + 1) + 600 < (unsigned int)dword_14D129E8 ) goto LABEL_12; } LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"OPToolObject::opto_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B064: using guessed type int dword_86B064; // 14D129E8: using guessed type int dword_14D129E8; //----- (004C74F0) -------------------------------------------------------- int __stdcall sub_4C74F0(int a1) { sub_4675D0((int)&unk_D020420, (int)"OPToolSession::opts_DummyFunction"); dword_7508B8[dword_750CB8] = (int)"OPToolSession::opts_DummyFunction"; dword_750AB8[dword_750CB8++] = -1; sub_639150( &unk_86DDD8, (int)"ZoneListenSession::opts_DummyFunction", (unsigned int)*(_WORD *)a1 >> 10, *(_WORD *)a1 & 0x3FF); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"OPToolSession::opts_DummyFunction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C75B0) -------------------------------------------------------- int __thiscall sub_4C75B0(void *this, int a2) { int v2; // esi@1 void *v3; // eax@1 signed __int16 v4; // cx@2 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ"); dword_7508B8[dword_750CB8] = (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 2051; *((_BYTE *)v3 + 2) = *(_BYTE *)(a2 + 2); if ( *(_BYTE *)(a2 + 3) == 6 ) { if ( *(_BYTE *)(a2 + 4) != 8 ) { *(_WORD *)((char *)v3 + 3) = 1; goto LABEL_7; } v4 = 0; } else { v4 = 1; } *(_WORD *)((char *)v3 + 3) = v4; LABEL_7: if ( sub_4C81E0(&off_849C18, 5) ) sub_4C7EC0(&off_849C18, v2); else sub_639100(&unk_86DDD8, (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ : Packet Too Long", 5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C76C0) -------------------------------------------------------- int __stdcall sub_4C76C0(int a1) { sub_4675D0((int)&unk_D020420, (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK"); dword_7508B8[dword_750CB8] = (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C7710) -------------------------------------------------------- int __thiscall sub_4C7710(void *this, int a2) { int v2; // esi@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"OPToolSession::opts_NC_MISC_HEARTBEAT_REQ"); dword_7508B8[dword_750CB8] = (int)"OPToolSession::opts_NC_MISC_HEARTBEAT_REQ"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 2053; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v2); else sub_639100(&unk_86DDD8, (int)"OPToolSession::opts_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"OPToolSession::opts_NC_MISC_HEARTBEAT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C77F0) -------------------------------------------------------- int __thiscall sub_4C77F0(void *this, int a2) { int v2; // ebx@1 char *v3; // esi@1 void *v4; // ST00_4@1 signed int v5; // eax@1 signed int v6; // eax@6 signed int v7; // eax@9 signed int v8; // eax@14 signed int v9; // eax@17 signed int v10; // eax@22 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ"); dword_7508B8[dword_750CB8] = (int)"OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ"; dword_750AB8[dword_750CB8++] = -1; v3 = (char *)off_849C18 + 2; v4 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 10248; memset(v4, 0, 0xAAu); *v3 = *(_BYTE *)(a2 + 2); v3[1] = 6; v5 = (signed int)dword_14D16438; while ( *(_DWORD *)v5 != 1 && *(_DWORD *)v5 != 2 ) { v5 += 264; if ( v5 >= (signed int)&dword_14D16858 ) goto LABEL_9; } v6 = dword_14D1643C; if ( dword_14D1643C >= 21 ) v6 = 10; ++*(_WORD *)&v3[8 * v6 + 2]; LABEL_9: v7 = (signed int)dword_14D148D8; while ( *(_DWORD *)v7 != 1 && *(_DWORD *)v7 != 2 ) { v7 += 264; if ( v7 >= (signed int)&dword_14D14CF8 ) goto LABEL_17; } v8 = dword_14D148DC; if ( dword_14D148DC >= 21 ) v8 = 10; ++*(_WORD *)&v3[8 * v8 + 2]; LABEL_17: v9 = (signed int)dword_14D12A08; while ( *(_DWORD *)v9 != 1 && *(_DWORD *)v9 != 2 ) { v9 += 264; if ( v9 >= (signed int)&dword_14D12E28 ) goto LABEL_25; } v10 = dword_14D12A0C; if ( dword_14D12A0C >= 21 ) v10 = 10; ++*(_WORD *)&v3[8 * v10 + 2]; LABEL_25: *((_WORD *)v3 + 81) = *(_WORD *)(dword_13253824 + 20); *((_WORD *)v3 + 33) = word_DA0F794; if ( sub_4C81E0(&off_849C18, 172) ) sub_4C7EC0(&off_849C18, v2); else sub_639100(&unk_86DDD8, (int)"OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ : Packet Too Long", 172); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA0F794: using guessed type __int16 word_DA0F794; // 13253824: using guessed type int dword_13253824; // 14D12A08: using guessed type int dword_14D12A08[]; // 14D12A0C: using guessed type int dword_14D12A0C; // 14D12E28: using guessed type int dword_14D12E28; // 14D148D8: using guessed type int dword_14D148D8[]; // 14D148DC: using guessed type int dword_14D148DC; // 14D14CF8: using guessed type int dword_14D14CF8; // 14D16438: using guessed type int dword_14D16438[]; // 14D1643C: using guessed type int dword_14D1643C; // 14D16858: using guessed type int dword_14D16858; //----- (004C79C0) -------------------------------------------------------- void *__thiscall sub_4C79C0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6C1EFC; _LN21((char *)this + 24, 8u, 50, nullsub_2); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6C1EB4; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C1EB4: using guessed type int (__thiscall *off_6C1EB4)(void *, char); // 6C1EFC: using guessed type int (__thiscall *off_6C1EFC)(void *, char); //----- (004C7A50) -------------------------------------------------------- char __thiscall sub_4C7A50(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6C20E8; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C20E8: using guessed type int (__stdcall *off_6C20E8)(int, int); //----- (004C7BD0) -------------------------------------------------------- int __thiscall sub_4C7BD0(int this) { int v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@1 int v4; // edx@1 int v5; // ecx@3 bool v6; // zf@3 int v7; // ecx@3 int v8; // ecx@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@15 int v14; // ecx@15 signed int v16; // [sp+10h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6C1EB4; *(_DWORD *)(this + 16) = 0; sub_4C7A50(this, 0x32u); *(_DWORD *)v1 = &off_6C1EFC; _eh_vector_constructor_iterator_((void *)(v1 + 24), 8u, 50, (int)unknown_libname_1, nullsub_2); v2 = 2; v3 = 36; v4 = v1 + 32; v16 = 10; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v3 - 36) == 0; v7 = v5 + v3 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 8; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v3 - 24) == 0; v9 = v8 + v3 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v3 - 12) == 0; v11 = v10 + v3 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 8; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v3) ) *(_DWORD *)(v12 + v3) = v4 + 16; } if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v3 + 12) == 0; v14 = v13 + v3 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 24; } v4 += 40; v3 += 60; v2 += 5; --v16; } while ( v16 ); return v1; } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); // 6C1EB4: using guessed type int (__thiscall *off_6C1EB4)(void *, char); // 6C1EFC: using guessed type int (__thiscall *off_6C1EFC)(void *, char); //----- (004C7D00) -------------------------------------------------------- char __userpurge sub_4C7D00(int a1, int a2, int a3, int a4) { int v4; // esi@1 char v5; // bl@1 int v6; // eax@2 __int16 v7; // ax@4 int v8; // eax@5 int v9; // edx@5 int v11; // eax@7 int v12; // ecx@10 unsigned int v13; // [sp-10h] [bp-34h]@1 int v14; // [sp-Ch] [bp-30h]@3 int v15; // [sp-8h] [bp-2Ch]@3 int v16; // [sp-4h] [bp-28h]@1 int v17; // [sp+0h] [bp-24h]@3 int v18; // [sp+4h] [bp-20h]@1 signed int v19; // [sp+8h] [bp-1Ch]@3 char v20; // [sp+Bh] [bp-19h]@1 unsigned int *v21; // [sp+Ch] [bp-18h]@1 int v22; // [sp+10h] [bp-14h]@3 int v23; // [sp+14h] [bp-10h]@1 int (__cdecl *v24)(PEXCEPTION_RECORD, PVOID, int); // [sp+18h] [bp-Ch]@1 unsigned int v25; // [sp+1Ch] [bp-8h]@1 int v26; // [sp+20h] [bp-4h]@1 int v27; // [sp+24h] [bp+0h]@1 v24 = _except_handler4; v23 = a1; v16 = a3; v25 = __security_cookie ^ (unsigned int)&unk_73A210; v13 = (unsigned int)&v27 ^ __security_cookie; v21 = &v13; v4 = a2; v18 = a2; v5 = 1; v20 = 1; v26 = 0; if ( *(_DWORD *)(a2 + 8200) ) { LOBYTE(v6) = sub_401030(&unk_86DDD8, *(_DWORD *)(a2 + 8200) < 8192, (int)"Too long packet", *(_DWORD *)(a2 + 8200)); if ( v6 ) { (*(void (__thiscall **)(int, unsigned int, int, int, int, int, int, signed int, unsigned int *, int))(*(_DWORD *)v4 + 4))( v4, v13, v14, v15, v16, v17, v18, v19, v21, v22); if ( !a4 ) { LABEL_6: v26 = -2; return 0; } v7 = *(_WORD *)(a4 + 258); LABEL_5: v8 = sub_54DE90(&unk_13253630, v7); v9 = *(_DWORD *)v8; v22 = 0; v21 = 0; v19 = 1670; (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(v9 + 1528))(v8, 1670, 0, 0); goto LABEL_6; } LOBYTE(v11) = sub_401030(&unk_86DDD8, a4 == *(_DWORD *)(v4 + 4), (int)"Session wrong", *(_DWORD *)(v4 + 8200)); if ( v11 ) { (*(void (__thiscall **)(int, unsigned int, int, int, int, int, int, signed int, unsigned int *, int))(*(_DWORD *)v4 + 4))( v4, v13, v14, v15, v16, v17, v18, v19, v21, v22); if ( !a4 ) goto LABEL_6; v7 = *(_WORD *)(a4 + 258); v17 = *(_WORD *)(a4 + 258); goto LABEL_5; } v12 = *(_DWORD *)(v4 + 4); if ( v12 ) { v5 = sub_5A4320(v12, v4 + 8, *(_DWORD *)(v4 + 8200)); v20 = v5; (*(void (__cdecl **)(unsigned int))(*(_DWORD *)v4 + 4))(v13); } } return v5; } // 86FEB8: using guessed type int __security_cookie; //----- (004C7E4E) -------------------------------------------------------- bool __cdecl sub_4C7E4E() { ++dword_DA0FA28; return dword_DA0FA28 < 10; } // DA0FA28: using guessed type int dword_DA0FA28; //----- (004C7E63) -------------------------------------------------------- char __userpurge sub_4C7E63(int a1, int a2) { int v2; // ST04_4@1 __time32_t v3; // eax@1 __time32_t v4; // eax@1 v2 = dword_DA0FA28; v3 = sub_418EA0((__time32_t)byte_DA0FCB8, (int)"Exception - PacketContainer::pcb_Flush_Try_Catch Count :"); v4 = sub_43B910(v3, v2); sub_418F20(v4, (int)&unk_13359E04); *(_DWORD *)(a1 - 4) = -2; (*(void (**)(void))(**(_DWORD **)(a1 - 32) + 4))(); return *(_BYTE *)(a1 - 25); } // 4C7E63: could not find valid save-restore pair for ebx // 4C7E63: could not find valid save-restore pair for edi // 4C7E63: could not find valid save-restore pair for esi // DA0FA28: using guessed type int dword_DA0FA28; //----- (004C7EC0) -------------------------------------------------------- int __thiscall sub_4C7EC0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 signed int v4; // edi@4 int v6; // [sp-4h] [bp-20h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ProtocolPacket::pp_SendPacket"); dword_7508B8[dword_750CB8] = (int)"ProtocolPacket::pp_SendPacket"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 2); if ( v3 < 8189 ) { if ( v3 < 256 ) { byte_DA0FF40[0] = v3; v4 = 1; } else { byte_DA0FF40[0] = 0; word_DA0FF41 = *((_WORD *)v2 + 4); v4 = 3; } memmove(&byte_DA0FF40[v4], *(const void **)v2, *((_DWORD *)v2 + 2)); sub_5A4320(a2, (int)byte_DA0FF40, v4 + *((_DWORD *)v2 + 2)); v6 = (int)"ProtocolPacket::pp_SendPacket"; } else { sub_639100(&unk_86DDD8, (int)"ProtocolPacket::pp_SendPacket : Too long buffer", v3); v6 = (int)"ProtocolPacket::pp_SendPacket"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA0FF41: using guessed type __int16 word_DA0FF41; //----- (004C7FD0) -------------------------------------------------------- int __stdcall sub_4C7FD0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"PacketContainerBase::pcb_Append"); dword_7508B8[dword_750CB8] = (int)"PacketContainerBase::pcb_Append"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"PacketContainerBase::pcb_Append"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C8020) -------------------------------------------------------- int __thiscall sub_4C8020(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@5 signed int v5; // ebx@5 signed int v6; // eax@5 int v7; // eax@9 int v8; // eax@10 int v9; // ST04_4@11 __time32_t v10; // eax@11 __time32_t v11; // eax@11 __time32_t v12; // eax@11 __time32_t v13; // eax@11 int v15; // [sp-4h] [bp-24h]@2 int v16; // [sp+2Ch] [bp+Ch]@9 v3 = this; sub_4675D0((int)&unk_D020420, (int)"PacketContainer::pcb_Append"); dword_7508B8[dword_750CB8] = (int)"PacketContainer::pcb_Append"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( (*(int (**)(void))(*(_DWORD *)a2 + 1192))() ) { v4 = a3; v5 = *(_DWORD *)(a3 + 8); sub_62DEE0(*(_DWORD *)a3, *(_DWORD *)(a3 + 8)); v6 = *((_DWORD *)v3 + 2050); if ( v6 < 0 || v6 >= 8192 ) *((_DWORD *)v3 + 2050) = 0; if ( *((_DWORD *)v3 + 2050) + v5 + 3 >= 6144 ) { v16 = *(_DWORD *)v3; v7 = (*(int (**)(void))(*(_DWORD *)a2 + 2672))(); (*(void (__thiscall **)(void *, int))(v16 + 8))(v3, v7); } v8 = *((_DWORD *)v3 + 2050); if ( v8 + v5 + 3 <= 8192 ) { if ( v5 >= 256 ) { *((_BYTE *)v3 + v8 + 8) = 0; ++*((_DWORD *)v3 + 2050); *(_WORD *)((char *)v3 + *((_DWORD *)v3 + 2050) + 8) = v5; *((_DWORD *)v3 + 2050) += 2; } else { *((_BYTE *)v3 + v8 + 8) = v5; ++*((_DWORD *)v3 + 2050); } memmove((char *)v3 + *((_DWORD *)v3 + 2050) + 8, *(const void **)v4, v5); *((_DWORD *)v3 + 2050) += v5; } else { v9 = *((_DWORD *)v3 + 2050); v10 = sub_418EA0((__time32_t)byte_DA0FA30, (int)"Too long packet"); v11 = sub_43B910(v10, v9); v12 = sub_418EA0(v11, (int)" + "); v13 = sub_43B910(v12, v5); sub_418F20(v13, (int)&unk_13359E04); } v15 = (int)"PacketContainer::pcb_Append"; } else { v15 = (int)"PacketContainer::pcb_Append"; } --dword_750CB8; } else { --dword_750CB8; v15 = (int)"PacketContainer::pcb_Append"; } return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C81E0) -------------------------------------------------------- char __thiscall sub_4C81E0(void *this, int a2) { void *v2; // esi@1 char result; // al@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ProtocolPacket::pp_SetPacketLen"); dword_7508B8[dword_750CB8] = (int)"ProtocolPacket::pp_SetPacketLen"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < *((_DWORD *)v2 + 1) ) { *((_DWORD *)v2 + 2) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ProtocolPacket::pp_SetPacketLen"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ProtocolPacket::pp_SetPacketLen"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C82A0) -------------------------------------------------------- int __cdecl sub_4C82A0() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_GetClientSession"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_GetClientSession"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_GetClientSession"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C82F0) -------------------------------------------------------- int __thiscall sub_4C82F0(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GetClientSession"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GetClientSession"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 6042); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GetClientSession"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C8350) -------------------------------------------------------- int __thiscall sub_4C8350(int this, unsigned __int16 a2) { int result; // eax@2 if ( a2 <= *(_WORD *)(this + 132) ) result = *(_DWORD *)(*(_DWORD *)(this + 128) + 4 * a2); else result = 0; return result; } //----- (004C8380) -------------------------------------------------------- signed int __thiscall sub_4C8380(int this) { signed int result; // eax@2 if ( *(_BYTE *)(this + 3278) & 7 ) result = 1; else result = 0; return result; } //----- (004C83A0) -------------------------------------------------------- unsigned int __thiscall sub_4C83A0(int this) { return ((unsigned int)*(_BYTE *)(this + 3278) >> 2) & 1; } //----- (004C83B0) -------------------------------------------------------- int __thiscall sub_4C83B0(int this) { int result; // eax@1 result = *(_DWORD *)(this + 160868); if ( result ) result = *(_WORD *)(result + 8) != -1; return result; } //----- (004C83D0) -------------------------------------------------------- void __thiscall sub_4C83D0(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; *(_WORD *)this = -1; v2 = *(void **)(this + 24); *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_BYTE *)(this + 20) = 0; if ( v2 ) { sub_6530A4(v2); *(_DWORD *)(v1 + 24) = 0; } } //----- (004C8410) -------------------------------------------------------- signed int __thiscall sub_4C8410(int this, __int16 a2, int a3, signed int a4) { int v4; // esi@1 signed int result; // eax@1 int v6; // ecx@3 void *v7; // eax@6 int v8; // eax@8 v4 = this; result = 65535; *(_WORD *)this = -1; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; if ( a3 ) { result = a4; if ( (unsigned int)a4 > 0 ) { *(_WORD *)this = a2; *(_DWORD *)(this + 8) = a4; *(_DWORD *)(this + 4) = a3; v6 = 0; result = 1000; do { result -= a3; ++v6; } while ( result > 0 ); if ( v6 != *(_BYTE *)(v4 + 20) ) { v7 = *(void **)(v4 + 24); *(_BYTE *)(v4 + 20) = v6; if ( v7 ) { sub_6530A4(v7); *(_DWORD *)(v4 + 24) = 0; } v8 = unknown_libname_130(4 * *(_BYTE *)(v4 + 20) | -((unsigned __int64)*(_BYTE *)(v4 + 20) >> 30 != 0)); *(_DWORD *)(v4 + 24) = v8; if ( v8 ) { result = 0; if ( *(_BYTE *)(v4 + 20) > 0u ) { do *(_DWORD *)(*(_DWORD *)(v4 + 24) + 4 * result++) = 0; while ( result < *(_BYTE *)(v4 + 20) ); } } else { result = (signed int)sub_639100(&unk_86DDD8, (int)byte_6A492E, 0); } } } } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004C84E0) -------------------------------------------------------- int __thiscall sub_4C84E0(int this, unsigned int a2) { unsigned __int8 v2; // bl@1 unsigned int v3; // eax@2 int result; // eax@3 v2 = *(_BYTE *)(this + 20); if ( v2 && (v3 = a2 / *(_DWORD *)(this + 4), v3 < v2) ) result = *(_DWORD *)(*(_DWORD *)(this + 24) + 4 * v3); else result = 0; return result; } //----- (004C8510) -------------------------------------------------------- int __thiscall sub_4C8510(int this, signed int a2) { unsigned __int8 v2; // al@1 int result; // eax@3 v2 = *(_BYTE *)(this + 20); if ( v2 && a2 < v2 ) result = *(_DWORD *)(*(_DWORD *)(this + 24) + 4 * a2); else result = 0; return result; } //----- (004C8540) -------------------------------------------------------- int __thiscall sub_4C8540(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"Parameter::Cluster::operator +="); dword_7508B8[dword_750CB8] = (int)"Parameter::Cluster::operator +="; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v2 += *(_DWORD *)a2; *((_DWORD *)v2 + 1) += *(_DWORD *)(a2 + 4); *((_DWORD *)v2 + 2) += *(_DWORD *)(a2 + 8); *((_DWORD *)v2 + 3) += *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 4) += *(_DWORD *)(a2 + 16); *((_DWORD *)v2 + 5) += *(_DWORD *)(a2 + 20); *((_DWORD *)v2 + 6) += *(_DWORD *)(a2 + 24); *((_DWORD *)v2 + 7) += *(_DWORD *)(a2 + 28); *((_DWORD *)v2 + 8) += *(_DWORD *)(a2 + 32); *((_DWORD *)v2 + 9) += *(_DWORD *)(a2 + 36); *((_DWORD *)v2 + 10) += *(_DWORD *)(a2 + 40); *((_DWORD *)v2 + 11) += *(_DWORD *)(a2 + 44); *((_DWORD *)v2 + 12) += *(_DWORD *)(a2 + 48); *((_DWORD *)v2 + 13) += *(_DWORD *)(a2 + 52); *((_DWORD *)v2 + 14) += *(_DWORD *)(a2 + 56); *((_DWORD *)v2 + 15) += *(_DWORD *)(a2 + 60); *((_DWORD *)v2 + 16) += *(_DWORD *)(a2 + 64); *((_DWORD *)v2 + 17) += *(_DWORD *)(a2 + 68); *((_DWORD *)v2 + 18) += *(_DWORD *)(a2 + 72); *((_DWORD *)v2 + 19) += *(_DWORD *)(a2 + 76); *((_DWORD *)v2 + 20) += *(_DWORD *)(a2 + 80); *((_DWORD *)v2 + 21) += *(_DWORD *)(a2 + 84); *((_DWORD *)v2 + 22) += *(_DWORD *)(a2 + 88); *((_DWORD *)v2 + 23) += *(_DWORD *)(a2 + 92); *((_DWORD *)v2 + 24) += *(_DWORD *)(a2 + 96); *((_DWORD *)v2 + 25) += *(_DWORD *)(a2 + 100); *((_DWORD *)v2 + 26) += *(_DWORD *)(a2 + 104); *((_DWORD *)v2 + 27) += *(_DWORD *)(a2 + 108); *((_DWORD *)v2 + 28) += *(_DWORD *)(a2 + 112); *((_DWORD *)v2 + 29) += *(_DWORD *)(a2 + 116); *((_DWORD *)v2 + 30) += *(_DWORD *)(a2 + 120); *((_DWORD *)v2 + 31) += *(_DWORD *)(a2 + 124); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Parameter::Cluster::operator +="); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C8660) -------------------------------------------------------- int __thiscall sub_4C8660(void *this, int a2) { void *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; sub_4675D0((int)&unk_D020420, (int)"Parameter::Cluster::operator *="); dword_7508B8[dword_750CB8] = (int)"Parameter::Cluster::operator *="; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)a2 != 1000 ) *(_DWORD *)v2 = ((signed int)((unsigned __int64)(*(_DWORD *)a2 * *(_DWORD *)v2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)a2 * *(_DWORD *)v2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v3 = *(_DWORD *)(a2 + 4); if ( v3 != 1000 ) { v4 = (signed int)((unsigned __int64)(v3 * *((_DWORD *)v2 + 1) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 1) = v4 + ((unsigned int)v4 >> 31); } v5 = *(_DWORD *)(a2 + 8); if ( v5 != 1000 ) *((_DWORD *)v2 + 2) = ((signed int)((unsigned __int64)(v5 * *((_DWORD *)v2 + 2) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v5 * *((_DWORD *)v2 + 2) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v6 = *(_DWORD *)(a2 + 12); if ( v6 != 1000 ) { v7 = (signed int)((unsigned __int64)(v6 * *((_DWORD *)v2 + 3) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 3) = v7 + ((unsigned int)v7 >> 31); } v8 = *(_DWORD *)(a2 + 16); if ( v8 != 1000 ) *((_DWORD *)v2 + 4) = ((signed int)((unsigned __int64)(v8 * *((_DWORD *)v2 + 4) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v8 * *((_DWORD *)v2 + 4) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v9 = *(_DWORD *)(a2 + 20); if ( v9 != 1000 ) { v10 = (signed int)((unsigned __int64)(v9 * *((_DWORD *)v2 + 5) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 5) = v10 + ((unsigned int)v10 >> 31); } v11 = *(_DWORD *)(a2 + 24); if ( v11 != 1000 ) *((_DWORD *)v2 + 6) = ((signed int)((unsigned __int64)(v11 * *((_DWORD *)v2 + 6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v11 * *((_DWORD *)v2 + 6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v12 = *(_DWORD *)(a2 + 28); if ( v12 != 1000 ) { v13 = (signed int)((unsigned __int64)(v12 * *((_DWORD *)v2 + 7) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 7) = v13 + ((unsigned int)v13 >> 31); } v14 = *(_DWORD *)(a2 + 32); if ( v14 != 1000 ) *((_DWORD *)v2 + 8) = ((signed int)((unsigned __int64)(v14 * *((_DWORD *)v2 + 8) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v14 * *((_DWORD *)v2 + 8) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v15 = *(_DWORD *)(a2 + 36); if ( v15 != 1000 ) { v16 = (signed int)((unsigned __int64)(v15 * *((_DWORD *)v2 + 9) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 9) = v16 + ((unsigned int)v16 >> 31); } v17 = *(_DWORD *)(a2 + 40); if ( v17 != 1000 ) *((_DWORD *)v2 + 10) = ((signed int)((unsigned __int64)(v17 * *((_DWORD *)v2 + 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v17 * *((_DWORD *)v2 + 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v18 = *(_DWORD *)(a2 + 44); if ( v18 != 1000 ) { v19 = (signed int)((unsigned __int64)(v18 * *((_DWORD *)v2 + 11) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 11) = v19 + ((unsigned int)v19 >> 31); } v20 = *(_DWORD *)(a2 + 48); if ( v20 != 1000 ) *((_DWORD *)v2 + 12) = ((signed int)((unsigned __int64)(v20 * *((_DWORD *)v2 + 12) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v20 * *((_DWORD *)v2 + 12) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v21 = *(_DWORD *)(a2 + 52); if ( v21 != 1000 ) { v22 = (signed int)((unsigned __int64)(v21 * *((_DWORD *)v2 + 13) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 13) = v22 + ((unsigned int)v22 >> 31); } v23 = *(_DWORD *)(a2 + 56); if ( v23 != 1000 ) *((_DWORD *)v2 + 14) = ((signed int)((unsigned __int64)(v23 * *((_DWORD *)v2 + 14) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v23 * *((_DWORD *)v2 + 14) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v24 = *(_DWORD *)(a2 + 60); if ( v24 != 1000 ) { v25 = (signed int)((unsigned __int64)(v24 * *((_DWORD *)v2 + 15) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 15) = v25 + ((unsigned int)v25 >> 31); } v26 = *(_DWORD *)(a2 + 64); if ( v26 != 1000 ) *((_DWORD *)v2 + 16) = ((signed int)((unsigned __int64)(v26 * *((_DWORD *)v2 + 16) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v26 * *((_DWORD *)v2 + 16) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v27 = *(_DWORD *)(a2 + 68); if ( v27 != 1000 ) { v28 = (signed int)((unsigned __int64)(v27 * *((_DWORD *)v2 + 17) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 17) = v28 + ((unsigned int)v28 >> 31); } v29 = *(_DWORD *)(a2 + 72); if ( v29 != 1000 ) *((_DWORD *)v2 + 18) = ((signed int)((unsigned __int64)(v29 * *((_DWORD *)v2 + 18) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v29 * *((_DWORD *)v2 + 18) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v30 = *(_DWORD *)(a2 + 76); if ( v30 != 1000 ) { v31 = (signed int)((unsigned __int64)(v30 * *((_DWORD *)v2 + 19) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 19) = v31 + ((unsigned int)v31 >> 31); } v32 = *(_DWORD *)(a2 + 80); if ( v32 != 1000 ) *((_DWORD *)v2 + 20) = ((signed int)((unsigned __int64)(v32 * *((_DWORD *)v2 + 20) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v32 * *((_DWORD *)v2 + 20) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v33 = *(_DWORD *)(a2 + 84); if ( v33 != 1000 ) { v34 = (signed int)((unsigned __int64)(v33 * *((_DWORD *)v2 + 21) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 21) = v34 + ((unsigned int)v34 >> 31); } v35 = *(_DWORD *)(a2 + 88); if ( v35 != 1000 ) *((_DWORD *)v2 + 22) = ((signed int)((unsigned __int64)(v35 * *((_DWORD *)v2 + 22) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v35 * *((_DWORD *)v2 + 22) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v36 = *(_DWORD *)(a2 + 92); if ( v36 != 1000 ) { v37 = (signed int)((unsigned __int64)(v36 * *((_DWORD *)v2 + 23) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 23) = v37 + ((unsigned int)v37 >> 31); } v38 = *(_DWORD *)(a2 + 96); if ( v38 != 1000 ) *((_DWORD *)v2 + 24) = ((signed int)((unsigned __int64)(v38 * *((_DWORD *)v2 + 24) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v38 * *((_DWORD *)v2 + 24) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v39 = *(_DWORD *)(a2 + 100); if ( v39 != 1000 ) { v40 = (signed int)((unsigned __int64)(v39 * *((_DWORD *)v2 + 25) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 25) = v40 + ((unsigned int)v40 >> 31); } v41 = *(_DWORD *)(a2 + 104); if ( v41 != 1000 ) *((_DWORD *)v2 + 26) = ((signed int)((unsigned __int64)(v41 * *((_DWORD *)v2 + 26) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v41 * *((_DWORD *)v2 + 26) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v42 = *(_DWORD *)(a2 + 108); if ( v42 != 1000 ) { v43 = (signed int)((unsigned __int64)(v42 * *((_DWORD *)v2 + 27) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 27) = v43 + ((unsigned int)v43 >> 31); } v44 = *(_DWORD *)(a2 + 112); if ( v44 != 1000 ) *((_DWORD *)v2 + 28) = ((signed int)((unsigned __int64)(v44 * *((_DWORD *)v2 + 28) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v44 * *((_DWORD *)v2 + 28) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v45 = *(_DWORD *)(a2 + 116); if ( v45 != 1000 ) { v46 = (signed int)((unsigned __int64)(v45 * *((_DWORD *)v2 + 29) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 29) = v46 + ((unsigned int)v46 >> 31); } v47 = *(_DWORD *)(a2 + 120); if ( v47 != 1000 ) *((_DWORD *)v2 + 30) = ((signed int)((unsigned __int64)(v47 * *((_DWORD *)v2 + 30) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v47 * *((_DWORD *)v2 + 30) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v48 = *(_DWORD *)(a2 + 120); if ( v48 != 1000 ) { v49 = (signed int)((unsigned __int64)(v48 * *((_DWORD *)v2 + 30) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *((_DWORD *)v2 + 30) = v49 + ((unsigned int)v49 >> 31); } v50 = *(_DWORD *)(a2 + 124); if ( v50 != 1000 ) *((_DWORD *)v2 + 31) = ((signed int)((unsigned __int64)(v50 * *((_DWORD *)v2 + 31) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v50 * *((_DWORD *)v2 + 31) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Parameter::Cluster::operator *="); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C8B60) -------------------------------------------------------- int __stdcall sub_4C8B60(int a1, int a2, char a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"Parameter::Cluster::c_compareelement"); dword_7508B8[dword_750CB8] = (int)"Parameter::Cluster::c_compareelement"; dword_750AB8[dword_750CB8++] = -1; if ( a1 != a2 ) { *(_BYTE *)(*(_BYTE *)a4 + a4 + 4 * *(_BYTE *)a4 + 1) = a3; *(_DWORD *)(*(_BYTE *)a4 + a4 + 4 * *(_BYTE *)a4 + 2) = a1; ++*(_BYTE *)a4; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Parameter::Cluster::c_compareelement"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C8BF0) -------------------------------------------------------- int __thiscall sub_4C8BF0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Parameter::Cluster::c_compare"); dword_7508B8[dword_750CB8] = (int)"Parameter::Cluster::c_compare"; dword_750AB8[dword_750CB8++] = -1; sub_4C8B60(*(_DWORD *)v3, *(_DWORD *)a2, 0, a3); sub_4C8B60(*((_DWORD *)v3 + 1), *(_DWORD *)(a2 + 4), 1, a3); sub_4C8B60(*((_DWORD *)v3 + 2), *(_DWORD *)(a2 + 8), 2, a3); sub_4C8B60(*((_DWORD *)v3 + 3), *(_DWORD *)(a2 + 12), 3, a3); sub_4C8B60(*((_DWORD *)v3 + 4), *(_DWORD *)(a2 + 16), 5, a3); sub_4C8B60(*((_DWORD *)v3 + 5), *(_DWORD *)(a2 + 20), 6, a3); sub_4C8B60(*((_DWORD *)v3 + 6), *(_DWORD *)(a2 + 24), 7, a3); sub_4C8B60(*((_DWORD *)v3 + 7), *(_DWORD *)(a2 + 28), 8, a3); sub_4C8B60(*((_DWORD *)v3 + 8), *(_DWORD *)(a2 + 32), 9, a3); sub_4C8B60(*((_DWORD *)v3 + 9), *(_DWORD *)(a2 + 36), 10, a3); sub_4C8B60(*((_DWORD *)v3 + 10), *(_DWORD *)(a2 + 40), 11, a3); sub_4C8B60(*((_DWORD *)v3 + 11), *(_DWORD *)(a2 + 44), 12, a3); sub_4C8B60(*((_DWORD *)v3 + 12), *(_DWORD *)(a2 + 48), 13, a3); sub_4C8B60(*((_DWORD *)v3 + 13), *(_DWORD *)(a2 + 52), 14, a3); sub_4C8B60(*((_DWORD *)v3 + 14), *(_DWORD *)(a2 + 56), 15, a3); v4 = *(_BYTE *)a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Parameter::Cluster::c_compare"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004C8DA0) -------------------------------------------------------- int __thiscall sub_4C8DA0(int this) { int result; // eax@1 result = this; *(_WORD *)(this + 3296) = -1; *(_DWORD *)(this + 3300) = 0; *(_DWORD *)(this + 3304) = 0; *(_DWORD *)(this + 3308) = 0; *(_DWORD *)(this + 3312) = 0; *(_BYTE *)(this + 3316) = 0; *(_DWORD *)(this + 3320) = 0; *(_DWORD *)(this + 3328) = 0; *(_DWORD *)(this + 3332) = 0; *(_DWORD *)(this + 3336) = 0; *(_DWORD *)(this + 3340) = 0; *(_BYTE *)(this + 3344) = 0; *(_DWORD *)(this + 3348) = 0; *(_WORD *)(this + 3324) = -1; *(_WORD *)(this + 3352) = -1; *(_DWORD *)(this + 3356) = 0; *(_DWORD *)(this + 3360) = 0; *(_DWORD *)(this + 3364) = 0; *(_DWORD *)(this + 3368) = 0; *(_BYTE *)(this + 3372) = 0; *(_DWORD *)(this + 3376) = 0; *(_WORD *)(this + 3380) = -1; *(_DWORD *)(this + 3384) = 0; *(_DWORD *)(this + 3388) = 0; *(_DWORD *)(this + 3392) = 0; *(_DWORD *)(this + 3396) = 0; *(_BYTE *)(this + 3400) = 0; *(_DWORD *)(this + 3404) = 0; *(_WORD *)(this + 3408) = -1; *(_DWORD *)(this + 3412) = 0; *(_DWORD *)(this + 3416) = 0; *(_DWORD *)(this + 3420) = 0; *(_DWORD *)(this + 3424) = 0; *(_BYTE *)(this + 3428) = 0; *(_DWORD *)(this + 3432) = 0; *(_WORD *)(this + 3436) = -1; *(_DWORD *)(this + 3440) = 0; *(_DWORD *)(this + 3444) = 0; *(_DWORD *)(this + 3448) = 0; *(_DWORD *)(this + 3452) = 0; *(_BYTE *)(this + 3456) = 0; *(_DWORD *)(this + 3460) = 0; *(_WORD *)(this + 3464) = -1; *(_DWORD *)(this + 3468) = 0; *(_DWORD *)(this + 3472) = 0; *(_DWORD *)(this + 3476) = 0; *(_DWORD *)(this + 3480) = 0; *(_BYTE *)(this + 3484) = 0; *(_DWORD *)(this + 3488) = 0; return result; } //----- (004C8EE0) -------------------------------------------------------- void __thiscall sub_4C8EE0(int this) { int v1; // esi@1 v1 = this; sub_6530A4(*(void **)(this + 3488)); sub_6530A4(*(void **)(v1 + 3460)); sub_6530A4(*(void **)(v1 + 3432)); sub_6530A4(*(void **)(v1 + 3404)); sub_6530A4(*(void **)(v1 + 3376)); sub_6530A4(*(void **)(v1 + 3348)); sub_6530A4(*(void **)(v1 + 3320)); } //----- (004C8F40) -------------------------------------------------------- int __thiscall sub_4C8F40(void *this) { int v1; // ebx@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"Parameter::Container::c_MakeTotal"); dword_7508B8[dword_750CB8] = (int)"Parameter::Container::c_MakeTotal"; dword_750AB8[dword_750CB8++] = -1; memcpy((void *)(v1 + 3060), &dword_DA12010, 0xCCu); sub_4C8540((void *)(v1 + 3060), v1); sub_4C8540((void *)(v1 + 3060), v1 + 204); sub_4C8660((void *)(v1 + 3060), v1 + 816); sub_4C8660((void *)(v1 + 3060), v1 + 2448); sub_4C8660((void *)(v1 + 3060), v1 + 2040); sub_4C8540((void *)(v1 + 3060), v1 + 1020); sub_4C8540((void *)(v1 + 3060), v1 + 1836); sub_4C8540((void *)(v1 + 3060), v1 + 2244); sub_4C8540((void *)(v1 + 3060), v1 + 2652); sub_4C8660((void *)(v1 + 3060), v1 + 2856); if ( *(_DWORD *)(v1 + 3060) < 1 ) *(_DWORD *)(v1 + 3060) = 1; if ( *(_DWORD *)(v1 + 3064) < 1 ) *(_DWORD *)(v1 + 3064) = 1; if ( *(_DWORD *)(v1 + 3068) < 1 ) *(_DWORD *)(v1 + 3068) = 1; if ( *(_DWORD *)(v1 + 3072) < 1 ) *(_DWORD *)(v1 + 3072) = 1; if ( *(_DWORD *)(v1 + 3076) < 1 ) *(_DWORD *)(v1 + 3076) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Parameter::Container::c_MakeTotal"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA12010: using guessed type int dword_DA12010; //----- (004C90E0) -------------------------------------------------------- int __thiscall sub_4C90E0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@1 int v6; // eax@2 int v7; // eax@4 int v8; // eax@4 int v9; // eax@4 int v10; // eax@4 int v11; // eax@4 int v12; // eax@4 int v13; // eax@4 int v14; // eax@4 int v15; // eax@4 int v16; // eax@4 int v17; // edx@36 int v18; // ecx@36 int v19; // eax@36 int v20; // edx@36 int v21; // ecx@36 int v22; // eax@36 int v23; // edx@36 int v24; // ecx@36 double v25; // st7@36 int v26; // edi@36 int v27; // eax@36 int v28; // edx@36 int v29; // ecx@36 int v30; // eax@36 int v31; // edx@36 int v32; // ecx@36 int v33; // eax@37 int v34; // eax@41 __int64 v35; // qax@42 unsigned int v36; // edi@42 unsigned int v37; // ecx@42 unsigned __int64 v38; // qt0@42 unsigned __int64 v39; // qt0@42 int v40; // ecx@42 __int64 v41; // qax@42 unsigned __int8 v42; // cf@42 signed int v43; // eax@43 int v44; // eax@48 int v45; // edi@48 void *v46; // eax@48 void *v47; // eax@48 int v48; // eax@48 void *v49; // eax@48 void *v50; // eax@48 int v51; // edi@54 int v52; // eax@57 int v53; // edi@60 int v54; // eax@63 int v55; // edi@66 int v56; // eax@69 int v57; // edi@72 int v58; // eax@75 int v59; // edi@78 int v60; // eax@81 int v62; // [sp-28h] [bp-174h]@4 int v63; // [sp-24h] [bp-170h]@4 int v64; // [sp-20h] [bp-16Ch]@4 int v65; // [sp-1Ch] [bp-168h]@4 unsigned int v66; // [sp-18h] [bp-164h]@4 unsigned int v67; // [sp-14h] [bp-160h]@4 unsigned int v68; // [sp-10h] [bp-15Ch]@4 int v69; // [sp-Ch] [bp-158h]@4 int v70; // [sp-8h] [bp-154h]@4 unsigned int v71; // [sp-4h] [bp-150h]@1 int v72; // [sp+Ch] [bp-140h]@1 int v73; // [sp+10h] [bp-13Ch]@4 int v74; // [sp+14h] [bp-138h]@4 int v75; // [sp+18h] [bp-134h]@4 int v76; // [sp+1Ch] [bp-130h]@4 int v77; // [sp+20h] [bp-12Ch]@4 int v78; // [sp+24h] [bp-128h]@4 int v79; // [sp+28h] [bp-124h]@4 int v80; // [sp+2Ch] [bp-120h]@4 int v81; // [sp+30h] [bp-11Ch]@4 int v82; // [sp+34h] [bp-118h]@4 int v83; // [sp+38h] [bp-114h]@4 int v84; // [sp+3Ch] [bp-110h]@4 int v85; // [sp+40h] [bp-10Ch]@4 int v86; // [sp+44h] [bp-108h]@4 int v87; // [sp+48h] [bp-104h]@4 int v88; // [sp+4Ch] [bp-100h]@4 int v89; // [sp+50h] [bp-FCh]@4 int v90; // [sp+54h] [bp-F8h]@4 int v91; // [sp+58h] [bp-F4h]@4 int v92; // [sp+5Ch] [bp-F0h]@4 int v93; // [sp+60h] [bp-ECh]@4 int v94; // [sp+64h] [bp-E8h]@4 int v95; // [sp+68h] [bp-E4h]@4 int v96; // [sp+6Ch] [bp-E0h]@4 int v97; // [sp+70h] [bp-DCh]@4 int v98; // [sp+74h] [bp-D8h]@4 int v99; // [sp+78h] [bp-D4h]@4 int v100; // [sp+7Ch] [bp-D0h]@4 int v101; // [sp+80h] [bp-CCh]@4 int v102; // [sp+84h] [bp-C8h]@4 int v103; // [sp+88h] [bp-C4h]@36 char v104; // [sp+8Fh] [bp-BDh]@2 void *v105; // [sp+90h] [bp-BCh]@36 void *v106; // [sp+94h] [bp-B8h]@37 char *v107; // [sp+98h] [bp-B4h]@4 char v108; // [sp+9Ch] [bp-B0h]@1 int v109; // [sp+11Ch] [bp-30h]@1 int v110; // [sp+120h] [bp-2Ch]@1 int v111; // [sp+124h] [bp-28h]@1 int v112; // [sp+128h] [bp-24h]@1 char v113; // [sp+12Ch] [bp-20h]@1 unsigned int v114; // [sp+13Ch] [bp-10h]@1 int v115; // [sp+148h] [bp-4h]@1 int v116; // [sp+14Ch] [bp+0h]@1 v114 = (unsigned int)&v116 ^ __security_cookie; v71 = (unsigned int)&v116 ^ __security_cookie; v2 = this; v72 = (int)"ShineCommonParameter::scp_Load"; sub_4675D0((int)&unk_D020420, (int)"ShineCommonParameter::scp_Load"); dword_7508B8[dword_750CB8] = (int)"ShineCommonParameter::scp_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(a2 + 4); v109 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a2 + 12); v110 = v3; v111 = v4; v115 = 0; v112 = v5; v113 = 0; sprintf(&v108, "../9Data/Shine/World/%s/ChrCommon.txt", &v109); if ( !sub_6434A0(v2, &v108) ) { sprintf(&v108, "../9Data/Shine/World/ChrCommon.txt"); v104 = sub_6434A0(v2, &v108); v6 = sub_642790(v2); if ( !v104 ) { sub_639100(&unk_86DDD8, (int)"PrimaryParameterTable::ppt_Load : Error in read : ChrCommon.txt", v6); loc_6391B0("ShineCommonParameter::scp_Load"); } } v70 = (int)&v77; v69 = 0; v68 = (unsigned int)"RunSpeed"; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v7 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v79; v69 = 0; v68 = (unsigned int)"WalkSpeed"; v78 = v7; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v8 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v75; v69 = 0; v68 = (unsigned int)"ShoutLevel"; v80 = v8; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v76 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v97; v69 = 0; v68 = (unsigned int)"AttackSpeed"; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v9 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v93; v69 = 0; v68 = (unsigned int)"ShoutDelay"; v98 = v9; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v10 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v101; v69 = 0; v68 = (unsigned int)"LevelLimit"; v94 = v10; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v102 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v89; v69 = 0; v68 = (unsigned int)"MaxExpBonus"; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v11 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v81; v69 = 0; v68 = (unsigned int)"RestExpRate"; v67 = (unsigned int)"key"; v90 = v11; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v12 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v85; v69 = 0; v68 = (unsigned int)"MinNeedTime"; v82 = v12; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v86 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v99; v69 = 0; v68 = (unsigned int)"DefaultBonusTime"; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v13 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v95; v69 = 0; v68 = (unsigned int)"IntervalTime"; v100 = v13; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v96 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v91; v69 = 0; v68 = (unsigned int)"AddBuffTime"; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v92 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v87; v69 = 0; v68 = (unsigned int)"MaxBuffTime"; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v14 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v83; v69 = 0; v68 = (unsigned int)"LostExpLevel"; v88 = v14; v67 = (unsigned int)"key"; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v15 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v70 = (int)&v73; v69 = 0; v68 = (unsigned int)"MaxFreeStat"; v67 = (unsigned int)"key"; v84 = v15; v107 = (char *)&v62; v66 = 0; v65 = 0; v64 = 0; v63 = 0; v62 = 0; strncpy((char *)&v62, "Common", 0x14u); v16 = sub_644510(v2, "argument", v62, v63, v64, v65, v66, (const char *)v67, v68, v69, v70); v74 = v16; if ( !v78 || !v80 || !v102 || !v90 || !v98 || !v76 || !v94 || !v82 || !v86 || !v100 || !v96 || !v92 || !v88 || !v84 || !v16 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : NULL(MaxExpBonus)", 0); loc_6391B0("ShineCommonParameter::scp_Load"); } if ( v77 != 5 || v79 != 5 || v101 != 5 || v89 != 5 || v97 != 5 || v75 != 5 || v93 != 5 || v81 != 5 || v85 != 5 || v99 != 5 || v95 != 5 || v91 != 5 || v87 != 5 || v83 != 5 || v73 != 5 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : TYPE(MaxExpBonus)", 0); loc_6391B0("ShineCommonParameter::scp_Load"); } v17 = v80; *((_DWORD *)v2 + 16918) = *(_DWORD *)v78; v18 = v98; *((_DWORD *)v2 + 16919) = *(_DWORD *)v17; v19 = v76; *((_DWORD *)v2 + 16920) = *(_DWORD *)v18; v20 = v94; *((_DWORD *)v2 + 16921) = *(_DWORD *)v19; v21 = v102; *((_DWORD *)v2 + 16922) = *(_DWORD *)v20; v22 = v90; *((_BYTE *)v2 + 67692) = *(_BYTE *)v21; v107 = (char *)*(_WORD *)v22; v23 = v82; v24 = v86; v25 = (double)(signed int)v107; v26 = (int)((char *)v2 + 67744); v103 = 1; v107 = (char *)v2 + 67744; *((double *)v2 + 8462) = v25 / 1000.0; *((_DWORD *)v2 + 16926) = *(_DWORD *)v23; v27 = v100; *((_DWORD *)v2 + 16927) = *(_DWORD *)v24; v28 = v96; *((_DWORD *)v2 + 16928) = *(_DWORD *)v27; v29 = v92; *((_DWORD *)v2 + 16929) = *(_DWORD *)v28; v30 = v88; *((_DWORD *)v2 + 16930) = *(_DWORD *)v29; v31 = v84; *((_DWORD *)v2 + 16931) = *(_DWORD *)v30; v32 = v74; *((_BYTE *)v2 + 67728) = *(_BYTE *)v31; *((_BYTE *)v2 + 67729) = *(_BYTE *)v32; *((_DWORD *)v2 + 16934) = 0; *((_DWORD *)v2 + 16935) = 0; v105 = (char *)v2 + 68948; do { v70 = 0; v69 = v103; v68 = (unsigned int)"level"; v106 = &v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; strncpy((char *)&v63, "StatTable", 0x14u); v33 = sub_644B70(v2, v63, v64, v65, v66, v67, (const char *)v68, v69, v70); *(_DWORD *)v105 = v33; if ( v33 == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error in commonparam", v103); loc_6391B0("ShineCommonParameter::scp_Load"); } if ( **(_BYTE **)v105 != *(_BYTE *)(*(_DWORD *)v105 + 111) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error CheckSum in commonparam", v103); loc_6391B0("ShineCommonParameter::scp_Load"); } v34 = *(_DWORD *)v105 + 1; *(_DWORD *)v26 = 0; *(_DWORD *)(v26 + 4) = 0; v106 = (void *)v34; if ( *(_BYTE *)v34 ) { do { LODWORD(v35) = *(_DWORD *)v26; v36 = *(_DWORD *)(v26 + 4); v37 = v35; HIDWORD(v35) = v36; v38 = __PAIR__(v36, (unsigned int)v35); LODWORD(v35) = 4 * v35; v26 = (int)v107; v39 = v35 + __PAIR__(v38 >> 30, v37); *(_DWORD *)v107 = 2 * v39; v40 = (int)v106; *(_DWORD *)(v26 + 4) = v39 >> 31; v41 = (signed int)*(_BYTE *)v40 - 48; v42 = __CFADD__((_DWORD)v41, *(_DWORD *)v26); *(_DWORD *)v26 += v41; *(_DWORD *)(v26 + 4) += HIDWORD(v41) + v42; v106 = (void *)(v40 + 1); } while ( *(_BYTE *)(v40 + 1) ); } v43 = 0; v106 = 0; do { if ( *(_WORD *)(*(_DWORD *)v105 + 2 * v43 + 51) > (unsigned __int16)*((_BYTE *)v2 + 67729) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error Over the MaxFreeStat", (int)v106); loc_6391B0("ShineCommonParameter::scp_Load"); v43 = (signed int)v106; } ++v43; v106 = (void *)v43; } while ( v43 < 28 ); v105 = (char *)v105 + 4; v26 += 8; ++v103; v107 = (char *)v26; } while ( (unsigned int)v103 < 0x97 ); v44 = *((_DWORD *)v2 + 17237); v70 = 4 * *((_BYTE *)v2 + 67729) + 4; v45 = v70; *((_DWORD *)v2 + 17236) = v44; v46 = malloc(v70); v69 = v45; v107 = (char *)v46; *((_DWORD *)v2 + 17387) = v46; v47 = malloc(v69); v68 = v45; v106 = v47; *((_DWORD *)v2 + 17388) = v47; v48 = (int)malloc(v68); v67 = v45; v103 = v48; *((_DWORD *)v2 + 17389) = v48; v49 = malloc(v67); v66 = v45; v105 = v49; *((_DWORD *)v2 + 17390) = v49; v50 = malloc(v66); *((_DWORD *)v2 + 17391) = v50; if ( !v107 || !v106 || !v103 || !v105 || !v50 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error FreeStat Memory Allocation", 0); loc_6391B0("ShineCommonParameter::scp_Load"); } v51 = 0; do { v70 = 0; v69 = v51; v68 = (unsigned int)"Stat"; v107 = (char *)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; strncpy((char *)&v63, "FreeStatStrTable", 0x14u); *(_DWORD *)(*((_DWORD *)v2 + 17387) + 4 * v51) = sub_644B70( v2, v63, v64, v65, v66, v67, (const char *)v68, v69, v70); if ( *(_DWORD *)(*((_DWORD *)v2 + 17387) + 4 * v51) == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error NextExp in freestatStr", v51); loc_6391B0("ShineCommonParameter::scp_Load"); } v52 = *(_DWORD *)(*((_DWORD *)v2 + 17387) + 4 * v51); if ( *(_BYTE *)v52 != *(_BYTE *)(v52 + 3) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error CheckSum in freestatStr", v51); loc_6391B0("ShineCommonParameter::scp_Load"); } ++v51; } while ( v51 <= *((_BYTE *)v2 + 67729) ); v53 = 0; do { v70 = 0; v69 = v53; v68 = (unsigned int)"Stat"; v107 = (char *)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; strncpy((char *)&v63, "FreeStatIntTable", 0x14u); *(_DWORD *)(*((_DWORD *)v2 + 17388) + 4 * v53) = sub_644B70( v2, v63, v64, v65, v66, v67, (const char *)v68, v69, v70); if ( *(_DWORD *)(*((_DWORD *)v2 + 17388) + 4 * v53) == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error NextExp in freestatInt", v53); loc_6391B0("ShineCommonParameter::scp_Load"); } v54 = *(_DWORD *)(*((_DWORD *)v2 + 17388) + 4 * v53); if ( *(_BYTE *)v54 != *(_BYTE *)(v54 + 3) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error CheckSum in freestatInt", v53); loc_6391B0("ShineCommonParameter::scp_Load"); } ++v53; } while ( v53 <= *((_BYTE *)v2 + 67729) ); v55 = 0; do { v70 = 0; v69 = v55; v68 = (unsigned int)"Stat"; v107 = (char *)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; strncpy((char *)&v63, "FreeStatConTable", 0x14u); *(_DWORD *)(*((_DWORD *)v2 + 17390) + 4 * v55) = sub_644B70( v2, v63, v64, v65, v66, v67, (const char *)v68, v69, v70); if ( *(_DWORD *)(*((_DWORD *)v2 + 17390) + 4 * v55) == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error NextExp in freestatCon", v55); loc_6391B0("ShineCommonParameter::scp_Load"); } v56 = *(_DWORD *)(*((_DWORD *)v2 + 17390) + 4 * v55); if ( *(_BYTE *)v56 != *(_BYTE *)(v56 + 7) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error CheckSum in freestatCon", v55); loc_6391B0("ShineCommonParameter::scp_Load"); } ++v55; } while ( v55 <= *((_BYTE *)v2 + 67729) ); v57 = 0; do { v70 = 0; v69 = v57; v68 = (unsigned int)"Stat"; v107 = (char *)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; strncpy((char *)&v63, "FreeStatDexTable", 0x14u); *(_DWORD *)(*((_DWORD *)v2 + 17389) + 4 * v57) = sub_644B70( v2, v63, v64, v65, v66, v67, (const char *)v68, v69, v70); if ( *(_DWORD *)(*((_DWORD *)v2 + 17389) + 4 * v57) == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error NextExp in freestatDex", v57); loc_6391B0("ShineCommonParameter::scp_Load"); } v58 = *(_DWORD *)(*((_DWORD *)v2 + 17389) + 4 * v57); if ( *(_BYTE *)v58 != *(_BYTE *)(v58 + 5) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error CheckSum in freestatDex", v57); loc_6391B0("ShineCommonParameter::scp_Load"); } ++v57; } while ( v57 <= *((_BYTE *)v2 + 67729) ); v59 = 0; do { v70 = 0; v69 = v59; v68 = (unsigned int)"Stat"; v107 = (char *)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; v63 = 0; strncpy((char *)&v63, "FreeStatMenTable", 0x14u); *(_DWORD *)(*((_DWORD *)v2 + 17391) + 4 * v59) = sub_644B70( v2, v63, v64, v65, v66, v67, (const char *)v68, v69, v70); if ( *(_DWORD *)(*((_DWORD *)v2 + 17391) + 4 * v59) == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error NextExp in freestatMen", v59); loc_6391B0("ShineCommonParameter::scp_Load"); } v60 = *(_DWORD *)(*((_DWORD *)v2 + 17391) + 4 * v59); if ( *(_BYTE *)v60 != *(_BYTE *)(v60 + 7) ) { sub_639100(&unk_86DDD8, (int)"ShineCommonParameter::scp_Load : Error CheckSum in freestatMen", v59); loc_6391B0("ShineCommonParameter::scp_Load"); } ++v59; } while ( v59 <= *((_BYTE *)v2 + 67729) ); --dword_750CB8; v115 = -1; return sub_467660((int)&unk_D020420, (int)"ShineCommonParameter::scp_Load"); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004C9EE0) -------------------------------------------------------- int __usercall sub_4C9EE0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // eax@3 int v5; // ebx@3 char v6; // al@4 int v7; // esi@6 unsigned int v8; // esi@13 signed int v10; // [sp+14h] [bp-10h]@5 sub_4675D0((int)&unk_D020420, (int)"FillRandomOption"); dword_7508B8[dword_750CB8] = (int)"FillRandomOption"; dword_750AB8[dword_750CB8++] = -1; v3 = a3; if ( *(_DWORD *)(a3 + 8) ) { *(_DWORD *)a1 = *(_WORD *)(*(_DWORD *)(a3 + 8) + 32); *(_DWORD *)(a1 + 4) = *(_WORD *)(*(_DWORD *)(a3 + 8) + 34); *(_DWORD *)(a1 + 8) = *(_WORD *)(*(_DWORD *)(a3 + 8) + 36); *(_DWORD *)(a1 + 12) = *(_WORD *)(*(_DWORD *)(a3 + 8) + 38); *(_DWORD *)(a1 + 16) = *(_WORD *)(*(_DWORD *)(a3 + 8) + 40); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = *(_WORD *)(*(_DWORD *)(a3 + 8) + 58); *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = *(_WORD *)(*(_DWORD *)(a3 + 8) + 60); *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; } v4 = (*(int (__stdcall **)(int))(**(_DWORD **)(a2 + 112) + 112))(a2 + 8); v5 = v4; if ( v4 ) { v6 = *(_BYTE *)v4; if ( *(_BYTE *)v5 & 1 ) { v10 = 0; if ( v6 & 0xFE ) { v7 = v5 + 1; do { if ( *(_BYTE *)v7 < 0xFu ) *(_DWORD *)(a1 + 4 * *(_BYTE *)v7) += *(_WORD *)(v7 + 1); else sub_639100(&unk_86DDD8, (int)"FillRandomOption : Type err", *(_BYTE *)v7); v7 += 3; ++v10; } while ( v10 < (signed int)((unsigned int)*(_BYTE *)v5 >> 1) ); v3 = a3; } } } if ( *(_DWORD *)(*(_DWORD *)v3 + 102) == 4 ) { v8 = 0; do { *(_DWORD *)(a1 + 4 * v8) += (unsigned __int16)(*(int (__stdcall **)(int, unsigned int))(**(_DWORD **)(a2 + 112) + 124))( a2 + 8, v8); ++v8; } while ( v8 < 0xF ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"FillRandomOption"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CA070) -------------------------------------------------------- int __thiscall sub_4CA070(void *this) { unsigned int v1; // ST10_4@1 void *v2; // ebx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 int v6; // eax@2 int v7; // eax@3 int v8; // eax@4 int v9; // eax@11 int v10; // edi@11 int v11; // esi@12 int v12; // eax@13 int v13; // eax@16 int v14; // eax@19 void *v15; // eax@21 __int16 v16; // ST10_2@23 int v17; // eax@23 int v18; // eax@27 void *v19; // eax@29 __int16 v20; // ST10_2@31 int v21; // eax@31 int v22; // eax@34 int v23; // edx@34 int v24; // eax@34 int v25; // edx@34 int v26; // ecx@34 int v27; // edx@34 int v28; // eax@36 bool v29; // zf@38 int (__cdecl *v30)(_DWORD); // eax@38 unsigned __int8 v31; // al@39 int v32; // eax@42 int v33; // eax@46 int v34; // eax@47 int v35; // eax@50 unsigned __int8 v36; // al@51 int v37; // eax@54 int v38; // eax@68 int v39; // eax@71 int v41; // [sp+0h] [bp-7Ch]@0 char v42; // [sp+10h] [bp-6Ch]@68 int v43; // [sp+14h] [bp-68h]@11 int (**v44)(); // [sp+18h] [bp-64h]@7 char *v45; // [sp+1Ch] [bp-60h]@7 int v46; // [sp+20h] [bp-5Ch]@7 int v47; // [sp+24h] [bp-58h]@7 unsigned int v48; // [sp+28h] [bp-54h]@12 char v49; // [sp+2Eh] [bp-4Eh]@1 unsigned __int8 v50; // [sp+2Fh] [bp-4Dh]@39 int v51; // [sp+30h] [bp-4Ch]@34 int v52; // [sp+34h] [bp-48h]@34 int v53; // [sp+38h] [bp-44h]@34 int v54; // [sp+3Ch] [bp-40h]@34 int v55; // [sp+40h] [bp-3Ch]@34 int v56; // [sp+44h] [bp-38h]@34 int v57; // [sp+48h] [bp-34h]@34 int v58; // [sp+4Ch] [bp-30h]@34 int v59; // [sp+50h] [bp-2Ch]@34 int v60; // [sp+54h] [bp-28h]@34 int v61; // [sp+58h] [bp-24h]@34 int v62; // [sp+5Ch] [bp-20h]@34 int v63; // [sp+60h] [bp-1Ch]@34 int v64; // [sp+68h] [bp-14h]@34 unsigned int v65; // [sp+6Ch] [bp-10h]@1 int v66; // [sp+78h] [bp-4h]@1 int v67; // [sp+7Ch] [bp+0h]@1 v65 = (unsigned int)&v67 ^ __security_cookie; v1 = (unsigned int)&v67 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RecalcEquipParam"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_RecalcEquipParam"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_WORD *)v2 + 80170); memcpy((char *)v2 + 4324, &dword_DA12010, 0xCCu); memcpy((char *)v2 + 4528, &dword_DA11F40, 0xCCu); memcpy((char *)v2 + 4732, &dword_DA12010, 0xCCu); memcpy((char *)v2 + 4936, &dword_DA11F40, 0xCCu); v4 = *((_WORD *)v2 + 80171); *((_DWORD *)v2 + 1241) = v4; *((_DWORD *)v2 + 1246) = v4; *((_DWORD *)v2 + 1239) = v3; *((_DWORD *)v2 + 1240) = v3; *((_DWORD *)v2 + 1244) = v3; *((_DWORD *)v2 + 1245) = v3; memcpy((char *)v2 + 5140, &dword_DA12010, 0xCCu); memcpy((char *)v2 + 5344, &dword_DA11F40, 0xCCu); v66 = 0; *((_DWORD *)v2 + 1164) = 0; v49 = 0; v5 = (*(int (__thiscall **)(char *, signed int, unsigned int))*((int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, 12, v1); if ( v5 ) { v6 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v5 + 8)); if ( v6 ) { v7 = *(_DWORD *)(v6 + 4); if ( v7 ) { v8 = sub_4923A0(&unk_D61DC80, *(_DWORD *)(v7 + 182)); if ( v8 ) { if ( *(_BYTE *)(v8 + 9) == 2 ) v49 = 1; } } } } *((_BYTE *)v2 + 160884) = 0; *((_BYTE *)v2 + 160910) = 0; v44 = &off_6A86A4; v45 = (char *)v2 + 32816; v47 = (*(int (**)(void))(*((_DWORD *)v2 + 8204) + 8))(); v44 = (int (**)())&off_6A86AC; LOBYTE(v66) = 1; v46 = 0; if ( (unsigned __int8)off_6A86AC(&v44) || sub_63F7F0(&v44) ) { while ( 1 ) { if ( v49 && v46 == 10 || (v9 = (**(int (__stdcall ***)(_DWORD))v45)(v46), v10 = v9, (v43 = v9) == 0) || (v48 = *(_WORD *)(v9 + 8), (v11 = sub_418CB0((int)&dword_14D20890, v48)) == 0) ) goto LABEL_67; v12 = v46; if ( v46 != 11 ) break; v13 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, 10); if ( !v13 || *(_WORD *)(v13 + 8) == -1 ) goto LABEL_67; if ( v46 == 13 ) goto LABEL_19; LABEL_21: v15 = sub_63ACA0(dword_1508B168, v48); if ( !v15 || !(*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 156))(v15, v10) && ((v16 = v48, *((_DWORD *)v2 + 40228) = &dword_13244CD8, (v17 = sub_44F210((int)&dword_AA0A90, v16)) == 0) || *(_DWORD *)(*(_DWORD *)(v17 + 4) + 36) != 28) ) goto LABEL_67; v12 = v46; *((_DWORD *)v2 + 40228) = v10; LABEL_26: if ( v12 != 29 ) goto LABEL_34; v18 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, 10); if ( v18 && *(_WORD *)(v18 + 8) != -1 ) { v19 = sub_63ACA0(dword_1508B168, v48); if ( v19 ) { if ( (*(int (__thiscall **)(void *, int))(*(_DWORD *)v19 + 156))(v19, v10) || (v20 = v48, *((_DWORD *)v2 + 40229) = &dword_13245088, (v21 = sub_44F210((int)&dword_AA0A90, v20)) != 0) && *(_DWORD *)(*(_DWORD *)(v21 + 4) + 36) == 28 ) { *((_DWORD *)v2 + 40229) = v10; LABEL_34: *((_BYTE *)v2 + 160884) |= *(_BYTE *)(v11 + 12); *((_BYTE *)v2 + 160910) |= *(_BYTE *)(*(_DWORD *)(v11 + 4) + 221); *((_DWORD *)v2 + 1086) += *(_DWORD *)(*(_DWORD *)v11 + 135); *((_DWORD *)v2 + 1087) += *(_DWORD *)(*(_DWORD *)v11 + 139); *((_DWORD *)v2 + 1088) += *(_DWORD *)(*(_DWORD *)v11 + 143); *((_DWORD *)v2 + 1091) += *(_DWORD *)(*(_DWORD *)v11 + 147); *((_DWORD *)v2 + 1092) += *(_DWORD *)(*(_DWORD *)v11 + 151); *((_DWORD *)v2 + 1093) += *(_DWORD *)(*(_DWORD *)v11 + 155); *((_DWORD *)v2 + 1089) += *(_DWORD *)(*(_DWORD *)v11 + 159); *((_DWORD *)v2 + 1090) += *(_DWORD *)(*(_DWORD *)v11 + 163); *((_DWORD *)v2 + 1107) += *(_DWORD *)(*(_DWORD *)v11 + 250); *((_DWORD *)v2 + 1108) += *(_DWORD *)(*(_DWORD *)v11 + 254); *((_DWORD *)v2 + 1109) += *(_DWORD *)(*(_DWORD *)v11 + 258); *((_DWORD *)v2 + 1110) += *(_DWORD *)(*(_DWORD *)v11 + 262); *((_DWORD *)v2 + 1164) += *(_DWORD *)(*(_DWORD *)v11 + 183); *((_DWORD *)v2 + 1111) += *(_DWORD *)(*(_DWORD *)v11 + 266); *((_DWORD *)v2 + 1112) += *(_DWORD *)(*(_DWORD *)v11 + 270); *((_DWORD *)v2 + 1174) += *(_DWORD *)(*(_DWORD *)v11 + 203); *((_DWORD *)v2 + 1239) += *(_DWORD *)(*(_DWORD *)v11 + 167) - 1000; *((_DWORD *)v2 + 1240) += *(_DWORD *)(*(_DWORD *)v11 + 167) - 1000; *((_DWORD *)v2 + 1241) += *(_DWORD *)(*(_DWORD *)v11 + 175) - 1000; *((_DWORD *)v2 + 1244) += *(_DWORD *)(*(_DWORD *)v11 + 171) - 1000; *((_DWORD *)v2 + 1245) += *(_DWORD *)(*(_DWORD *)v11 + 171) - 1000; *((_DWORD *)v2 + 1246) += *(_DWORD *)(*(_DWORD *)v11 + 179) - 1000; memset(&v51, 0, 0x3Cu); sub_4C9EE0((int)&v51, v10, v11); *((_DWORD *)v2 + 1081) += v51; *((_DWORD *)v2 + 1084) += v54; *((_DWORD *)v2 + 1082) += v52; *((_DWORD *)v2 + 1083) += v53; *((_DWORD *)v2 + 1113) += v57; v22 = v58; v23 = v56; *((_DWORD *)v2 + 1085) += v55; *((_DWORD *)v2 + 1089) += v23; *((_DWORD *)v2 + 1086) += v22; *((_DWORD *)v2 + 1087) += v22; v24 = v60; v25 = v61; *((_DWORD *)v2 + 1088) += v59; *((_DWORD *)v2 + 1091) += v24; *((_DWORD *)v2 + 1092) += v24; *((_DWORD *)v2 + 1093) += v25; v26 = v63; v27 = v64; *((_DWORD *)v2 + 1090) += v62; *((_DWORD *)v2 + 1174) += v26; *((_DWORD *)v2 + 1117) += v27; if ( *(_DWORD *)(v11 + 8) ) { *((_DWORD *)v2 + 1176) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 42); *((_DWORD *)v2 + 1177) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 44); *((_DWORD *)v2 + 1178) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 46); *((_DWORD *)v2 + 1179) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 48); *((_DWORD *)v2 + 1242) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 50) - 1000; *((_DWORD *)v2 + 1243) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 52) - 1000; *((_DWORD *)v2 + 1116) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 54); *((_DWORD *)v2 + 1118) += *(_WORD *)(*(_DWORD *)(v11 + 8) + 56); } v28 = sub_648590((int)&unk_133597C0, v48); if ( v28 ) { *((_DWORD *)v2 + 1253) += *(_WORD *)(v28 + 32); *((_DWORD *)v2 + 1096) += *(_WORD *)(v28 + 34); } v29 = (*(int (__stdcall **)(int))(**(_DWORD **)(v43 + 112) + 40))(v41) == 38; v30 = *(int (__cdecl **)(_DWORD))(**(_DWORD **)(v43 + 112) + 48); if ( v29 ) { v31 = v30(v43); v50 = v31; if ( v31 <= 0x15u ) { v32 = sub_43B360((int)&unk_1325CD30, *(_WORD *)(*(_DWORD *)v11 + 241)); if ( v32 ) { switch ( *(_DWORD *)(v32 + 34) ) { case 0: *((_DWORD *)v2 + 1292) += *(_WORD *)(v32 + 2 * v50 + 38); goto LABEL_67; case 2: *((_DWORD *)v2 + 1311) += *(_WORD *)(v32 + 2 * v50 + 38); goto LABEL_67; case 1: v33 = v32 + 2 * v50 + 38; goto LABEL_59; case 3: v34 = v32 + 2 * v50 + 38; goto LABEL_61; case 4: *((_DWORD *)v2 + 1297) += *(_WORD *)(v32 + 2 * v50 + 38); goto LABEL_67; case 6: v34 = v32 + 2 * v50 + 38; goto LABEL_64; case 7: v35 = v32 + 2 * v50 + 38; goto LABEL_66; default: goto LABEL_67; } } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_RecalcEquipParam : Invalid bracelet upgrade", v31); } } else { v36 = v30(v43); v50 = v36; if ( v36 ) { if ( v36 <= 0xCu ) { v37 = sub_4C8350((int)&dword_132587D8, *(_WORD *)(*(_DWORD *)v11 + 241)); if ( v37 ) { switch ( *(_DWORD *)(v37 + 34) ) { case 0: *((_DWORD *)v2 + 1292) += *(_WORD *)(v37 + 2 * v50 + 36); break; case 2: *((_DWORD *)v2 + 1311) += *(_WORD *)(v37 + 2 * v50 + 36); break; case 1: v33 = v37 + 2 * v50 + 36; LABEL_59: *((_DWORD *)v2 + 1290) += *(_WORD *)v33; *((_DWORD *)v2 + 1291) += *(_WORD *)v33; break; case 3: v34 = v37 + 2 * v50 + 36; goto LABEL_61; case 4: *((_DWORD *)v2 + 1297) += *(_WORD *)(v37 + 2 * v50 + 36); break; case 6: v34 = v37 + 2 * v50 + 36; LABEL_64: *((_DWORD *)v2 + 1290) += *(_WORD *)v34; *((_DWORD *)v2 + 1291) += *(_WORD *)v34; LABEL_61: *((_DWORD *)v2 + 1295) += *(_WORD *)v34; *((_DWORD *)v2 + 1296) += *(_WORD *)v34; break; case 7: v35 = v37 + 2 * v50 + 36; LABEL_66: *((_DWORD *)v2 + 1292) += *(_WORD *)v35; *((_DWORD *)v2 + 1297) += *(_WORD *)v35; break; default: goto LABEL_67; } } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_RecalcEquipParam : Invalid upgrade", v36); } } } goto LABEL_67; } } } else { *((_DWORD *)v2 + 40229) = &dword_13245088; } LABEL_67: if ( !sub_63F7F0(&v44) ) goto LABEL_68; } if ( v46 != 13 ) goto LABEL_26; LABEL_19: v14 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, 12); if ( !v14 || *(_WORD *)(v14 + 8) == -1 ) goto LABEL_67; goto LABEL_21; } LABEL_68: *((_DWORD *)v2 + 40217) = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v2 + 1964))(v2, &v42); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1320))(v2); *((_DWORD *)v2 + 39088) = sub_568F80; sub_50F330(v2); v38 = *((_DWORD *)v2 + 40228); if ( v38 && *(_WORD *)(v38 + 8) == -1 ) *((_DWORD *)v2 + 40228) = &dword_13244CD8; v39 = *((_DWORD *)v2 + 40229); if ( v39 && *(_WORD *)(v39 + 8) == -1 ) *((_DWORD *)v2 + 40229) = &dword_13245088; --dword_750CB8; v44 = &off_6A86A4; v66 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RecalcEquipParam"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // DA11F40: using guessed type int dword_DA11F40; // DA12010: using guessed type int dword_DA12010; // 13244CD8: using guessed type int dword_13244CD8; // 13245088: using guessed type int dword_13245088; // 132587D8: using guessed type int dword_132587D8; // 14D20890: using guessed type int dword_14D20890; //----- (004CA980) -------------------------------------------------------- int __thiscall sub_4CA980(void *this) { void *v1; // ebx@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"; dword_750AB8[dword_750CB8++] = -1; memcpy((char *)v1 + 5956, &dword_DA12010, 0xCCu); memcpy((char *)v1 + 6160, &dword_DA11F40, 0xCCu); sub_4452D0((char *)v1 + 84424, (int)((char *)v1 + 4120), (int)((char *)v1 + 32816)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA11F40: using guessed type int dword_DA11F40; // DA12010: using guessed type int dword_DA12010; //----- (004CAA50) -------------------------------------------------------- int __thiscall sub_4CAA50(void *this) { void *v1; // ebx@1 unsigned __int16 *v2; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RecalcLastParam"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_RecalcLastParam"; dword_750AB8[dword_750CB8++] = -1; memcpy((char *)v1 + 6772, &dword_DA12010, 0xCCu); memcpy((char *)v1 + 6976, &dword_DA11F40, 0xCCu); v2 = (unsigned __int16 *)sub_59C700(&dword_13258088); if ( sub_419040((char *)v1 + 84424, *v2) ) { *((_DWORD *)v1 + 1744) += 50; *((_DWORD *)v1 + 1745) += 50; *((_DWORD *)v1 + 1746) += 50; *((_DWORD *)v1 + 1747) += 50; *((_DWORD *)v1 + 1748) += 50; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RecalcLastParam"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA11F40: using guessed type int dword_DA11F40; // DA12010: using guessed type int dword_DA12010; // 13258088: using guessed type int dword_13258088; //----- (004CAB50) -------------------------------------------------------- int __thiscall sub_4CAB50(void *this, int a2) { void *v2; // esi@1 char *v4; // [sp-30h] [bp-148h]@3 const char *v5; // [sp-2Ch] [bp-144h]@2 int v6; // [sp-28h] [bp-140h]@2 int v7; // [sp-24h] [bp-13Ch]@2 int v8; // [sp-20h] [bp-138h]@2 int v9; // [sp-1Ch] [bp-134h]@2 int v10; // [sp-18h] [bp-130h]@2 int v11; // [sp-14h] [bp-12Ch]@2 int v12; // [sp-10h] [bp-128h]@2 int v13; // [sp-Ch] [bp-124h]@2 int v14; // [sp-8h] [bp-120h]@2 char v15; // [sp+8h] [bp-110h]@1 unsigned int v16; // [sp+108h] [bp-10h]@1 int v17; // [sp+114h] [bp-4h]@1 int v18; // [sp+118h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ParameterView"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ParameterView"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v15 = 0; switch ( a2 ) { case 0: v14 = *((_DWORD *)v2 + 1540); v13 = *((_DWORD *)v2 + 1489); v12 = *((_DWORD *)v2 + 1438); v11 = *((_DWORD *)v2 + 1387); v10 = *((_DWORD *)v2 + 1336); v9 = *((_DWORD *)v2 + 1285); v8 = *((_DWORD *)v2 + 1132); v7 = *((_DWORD *)v2 + 1081); v6 = *((_DWORD *)v2 + 1030); v5 = "Str/%d/%d/%d/%d/%d/%d/%d/%d/%d"; goto LABEL_12; case 1: v14 = *((_DWORD *)v2 + 1541); v13 = *((_DWORD *)v2 + 1490); v12 = *((_DWORD *)v2 + 1439); v11 = *((_DWORD *)v2 + 1388); v10 = *((_DWORD *)v2 + 1337); v9 = *((_DWORD *)v2 + 1286); v8 = *((_DWORD *)v2 + 1133); v7 = *((_DWORD *)v2 + 1082); v6 = *((_DWORD *)v2 + 1031); v5 = "Con/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v4 = &v15; goto LABEL_13; case 2: v14 = *((_DWORD *)v2 + 1542); v13 = *((_DWORD *)v2 + 1491); v12 = *((_DWORD *)v2 + 1440); v11 = *((_DWORD *)v2 + 1389); v10 = *((_DWORD *)v2 + 1338); v9 = *((_DWORD *)v2 + 1287); v8 = *((_DWORD *)v2 + 1134); v7 = *((_DWORD *)v2 + 1083); v6 = *((_DWORD *)v2 + 1032); v5 = "Dex/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v4 = &v15; goto LABEL_13; case 3: v14 = *((_DWORD *)v2 + 1543); v13 = *((_DWORD *)v2 + 1492); v12 = *((_DWORD *)v2 + 1441); v11 = *((_DWORD *)v2 + 1390); v10 = *((_DWORD *)v2 + 1339); v9 = *((_DWORD *)v2 + 1288); v8 = *((_DWORD *)v2 + 1135); v7 = *((_DWORD *)v2 + 1084); v6 = *((_DWORD *)v2 + 1033); v5 = "Int/%d/%d/%d/%d/%d/%d/%d/%d/%d"; goto LABEL_12; case 4: v14 = *((_DWORD *)v2 + 1544); v13 = *((_DWORD *)v2 + 1493); v12 = *((_DWORD *)v2 + 1442); v11 = *((_DWORD *)v2 + 1391); v10 = *((_DWORD *)v2 + 1340); v9 = *((_DWORD *)v2 + 1289); v8 = *((_DWORD *)v2 + 1136); v7 = *((_DWORD *)v2 + 1085); v6 = *((_DWORD *)v2 + 1034); v5 = "Men/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v4 = &v15; goto LABEL_13; case 5: v14 = *((_DWORD *)v2 + 1545); v13 = *((_DWORD *)v2 + 1494); v12 = *((_DWORD *)v2 + 1443); v11 = *((_DWORD *)v2 + 1392); v10 = *((_DWORD *)v2 + 1341); v9 = *((_DWORD *)v2 + 1290); v8 = *((_DWORD *)v2 + 1137); v7 = *((_DWORD *)v2 + 1086); v6 = *((_DWORD *)v2 + 1035); v5 = "WCmin/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v4 = &v15; goto LABEL_13; case 6: v14 = *((_DWORD *)v2 + 1546); v13 = *((_DWORD *)v2 + 1495); v12 = *((_DWORD *)v2 + 1444); v11 = *((_DWORD *)v2 + 1393); v10 = *((_DWORD *)v2 + 1342); v9 = *((_DWORD *)v2 + 1291); v8 = *((_DWORD *)v2 + 1138); v7 = *((_DWORD *)v2 + 1087); v6 = *((_DWORD *)v2 + 1036); v5 = "WCmax/%d/%d/%d/%d/%d/%d/%d/%d/%d"; goto LABEL_12; case 7: v14 = *((_DWORD *)v2 + 1547); v13 = *((_DWORD *)v2 + 1496); v12 = *((_DWORD *)v2 + 1445); v11 = *((_DWORD *)v2 + 1394); v10 = *((_DWORD *)v2 + 1343); v9 = *((_DWORD *)v2 + 1292); v8 = *((_DWORD *)v2 + 1139); v7 = *((_DWORD *)v2 + 1088); v6 = *((_DWORD *)v2 + 1037); v5 = "AC/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v4 = &v15; goto LABEL_13; case 8: v14 = *((_DWORD *)v2 + 1548); v13 = *((_DWORD *)v2 + 1497); v12 = *((_DWORD *)v2 + 1446); v11 = *((_DWORD *)v2 + 1395); v10 = *((_DWORD *)v2 + 1344); v9 = *((_DWORD *)v2 + 1293); v8 = *((_DWORD *)v2 + 1140); v7 = *((_DWORD *)v2 + 1089); v6 = *((_DWORD *)v2 + 1038); v5 = "TH/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v4 = &v15; goto LABEL_13; case 9: v14 = *((_DWORD *)v2 + 1549); v13 = *((_DWORD *)v2 + 1498); v12 = *((_DWORD *)v2 + 1447); v11 = *((_DWORD *)v2 + 1396); v10 = *((_DWORD *)v2 + 1345); v9 = *((_DWORD *)v2 + 1294); v8 = *((_DWORD *)v2 + 1141); v7 = *((_DWORD *)v2 + 1090); v6 = *((_DWORD *)v2 + 1039); v5 = "TB/%d/%d/%d/%d/%d/%d/%d/%d/%d"; LABEL_12: v4 = &v15; LABEL_13: sprintf(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14); if ( v15 ) (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v2 + 1924))(v2, &v15); break; default: break; } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ParameterView"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004CAF70) -------------------------------------------------------- void __thiscall sub_4CAF70(int this, int a2, int a3, char a4, int a5) { signed int v5; // ebx@1 char v6; // al@3 int v7; // edi@4 signed int v8; // esi@6 int v9; // esi@8 void *v10; // eax@9 int v11; // edi@10 int v12; // eax@17 signed int v13; // [sp+8h] [bp-4h]@9 v5 = 0; if ( *(_DWORD *)(this + 4) || *(_DWORD *)(this + 8) ) { v6 = *(_BYTE *)(this + 20); if ( v6 ) { v7 = a2; if ( *(_DWORD *)(this + 12) != a2 || *(_DWORD *)(this + 16) != a3 ) { v8 = 0; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; if ( v6 ) { do { *(_DWORD *)(*(_DWORD *)(this + 24) + 4 * v8) = (unsigned int)((unsigned int)(*(_DWORD *)(this + 8) * v8 * *(_DWORD *)(this + 12)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; ++v8; } while ( v8 < *(_BYTE *)(this + 20) ); } v9 = a5; if ( a5 ) { v10 = off_849C18; *(_WORD *)off_849C18 = 4319; *((_WORD *)v10 + 1) = *(_WORD *)this; *((_WORD *)v10 + 3) = 0; *((_WORD *)v10 + 2) = *(_WORD *)(this + 4); v13 = 0; if ( *(_BYTE *)(this + 20) > 0u ) { while ( 1 ) { *((_BYTE *)v10 + 2 * (3 * *((_WORD *)v10 + 3) + 3) + 2) = a4; *((_BYTE *)v10 + 6 * *((_WORD *)v10 + 3) + 9) = v5; *(_DWORD *)((char *)v10 + 6 * *((_WORD *)v10 + 3) + 10) = v7 + *(_DWORD *)(*(_DWORD *)(this + 24) + 4 * v5); *(_DWORD *)((char *)v10 + 6 * *((_WORD *)v10 + 3) + 10) = (unsigned int)(a3 * *(_DWORD *)((char *)v10 + 6 * *((_WORD *)v10 + 3) + 10)) >> 10; ++*((_WORD *)v10 + 3); v13 += 6; if ( v13 >= 8000 ) break; ++v5; if ( v5 >= *(_BYTE *)(this + 20) ) { v9 = a5; goto LABEL_10; } v7 = a2; } sub_639100(&unk_86DDD8, (int)"ChangeByConditionParam::cbcp_FillSendBuffer: Buffer Over", 0); } else { LABEL_10: v11 = 6 * *((_WORD *)v10 + 3) + 8; if ( sub_4C81E0(&off_849C18, v11) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v9, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"Parameter::ChangeByConditionParam::cbcp_SendBuffer : Packet Too Long", v11); } } } } } } } //----- (004CB110) -------------------------------------------------------- void __thiscall sub_4CB110(int this, int a2, int a3, char a4, int a5) { char v5; // dl@3 int v6; // esi@4 signed int v7; // eax@6 int v8; // edi@8 signed int v9; // ebx@8 void *v10; // eax@9 int v11; // esi@13 int v12; // eax@16 signed int v13; // [sp+10h] [bp+Ch]@9 if ( *(_DWORD *)(this + 4) || *(_DWORD *)(this + 8) ) { v5 = *(_BYTE *)(this + 20); if ( v5 ) { v6 = a3; if ( *(_DWORD *)(this + 12) != a2 || *(_DWORD *)(this + 16) != a3 ) { *(_DWORD *)(this + 12) = a2; v7 = 0; *(_DWORD *)(this + 16) = a3; if ( v5 ) { do { *(_DWORD *)(*(_DWORD *)(this + 24) + 4 * v7) = (v7 + 1) * *(_DWORD *)(this + 8); ++v7; } while ( v7 < *(_BYTE *)(this + 20) ); } v8 = a5; v9 = 0; if ( a5 ) { v10 = off_849C18; *(_WORD *)off_849C18 = 4319; *((_WORD *)v10 + 1) = *(_WORD *)this; *((_WORD *)v10 + 3) = 0; *((_WORD *)v10 + 2) = *(_WORD *)(this + 4); v13 = 0; if ( *(_BYTE *)(this + 20) <= 0u ) { LABEL_13: v11 = 6 * *((_WORD *)v10 + 3) + 8; if ( sub_4C81E0(&off_849C18, v11) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"Parameter::ChangeByConditionParam::cbcp_SendBuffer : Packet Too Long", v11); } } else { while ( 1 ) { *((_BYTE *)v10 + 2 * (3 * *((_WORD *)v10 + 3) + 3) + 2) = a4; *((_BYTE *)v10 + 6 * *((_WORD *)v10 + 3) + 9) = v9; *(_DWORD *)((char *)v10 + 6 * *((_WORD *)v10 + 3) + 10) = a2 + *(_DWORD *)(*(_DWORD *)(this + 24) + 4 * v9); *(_DWORD *)((char *)v10 + 6 * *((_WORD *)v10 + 3) + 10) = (unsigned int)(v6 * *(_DWORD *)((char *)v10 + 6 * *((_WORD *)v10 + 3) + 10)) >> 10; ++*((_WORD *)v10 + 3); v13 += 6; if ( v13 >= 8000 ) break; ++v9; if ( v9 >= *(_BYTE *)(this + 20) ) { v8 = a5; goto LABEL_13; } } sub_639100(&unk_86DDD8, (int)"ChangeByConditionParam::cbcp_FillSendBuffer: Buffer Over", 0); } } } } } } //----- (004CB290) -------------------------------------------------------- int __thiscall sub_4CB290(void *this) { void *v1; // ebx@1 unsigned __int16 v2; // di@1 unsigned __int16 v3; // dx@2 int v4; // eax@3 int v5; // esi@3 unsigned __int16 v6; // cx@3 bool v7; // zf@4 int v8; // eax@4 int v9; // eax@5 int v10; // edx@9 unsigned __int16 v12; // [sp+10h] [bp-1Ch]@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"; dword_750AB8[dword_750CB8++] = -1; memcpy((char *)v1 + 6364, &dword_DA12010, 0xCCu); memcpy((char *)v1 + 6568, &dword_DA11F40, 0xCCu); *((_BYTE *)v1 + 7398) &= 0xF8u; *((_DWORD *)v1 + 1684) = 0; *((_DWORD *)v1 + 1674) = 0; *((_DWORD *)v1 + 1165) = 0; *((_DWORD *)v1 + 1904) = 0; *(_DWORD *)((char *)v1 + 7394) = 1000; *((_WORD *)v1 + 3692) = 0; *(_DWORD *)((char *)v1 + 7390) = 0; *(_DWORD *)((char *)v1 + 7386) = 0; *((_DWORD *)v1 + 1850) = 0; *((_DWORD *)v1 + 1851) = &unk_3E8FFFF; *((_DWORD *)v1 + 1903) = 0; v2 = *(_WORD *)(*((_DWORD *)v1 + 951) + 12 * *((_WORD *)v1 + 1905) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 1900); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 951); v5 = v2; v6 = v2; v2 = *(_WORD *)(v4 + 12 * v2 + 4); v12 = v6; if ( v6 >= v3 || (v7 = *(_BYTE *)(v4 + 12 * v5 + 8) == 0, v8 = v4 + 12 * v5, v7) ) v9 = 0; else v9 = *(_DWORD *)v8; if ( sub_4066E0(v9) ) { if ( v12 < *((_WORD *)v1 + 1900) && (v10 = *((_DWORD *)v1 + 951), *(_BYTE *)(v10 + 12 * v5 + 8)) ) sub_407920(*(void **)(v10 + 12 * v5), (int)((char *)v1 + 4120)); else sub_407920(0, (int)((char *)v1 + 4120)); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA11F40: using guessed type int dword_DA11F40; // DA12010: using guessed type int dword_DA12010; //----- (004CB450) -------------------------------------------------------- FILE *__stdcall sub_4CB450(int a1, int a2) { int v2; // eax@1 FILE *result; // eax@2 int v4; // ST04_4@3 int v5; // eax@3 v2 = *(_WORD *)(a1 + 2); if ( (unsigned __int16)v2 < 0xFA0u ) { v4 = *(_DWORD *)(a1 + 4); v5 = sub_641CA0(&dword_DA230A4, v2); result = (FILE *)sub_6419C0(v5 + 184, v4); } else { result = sub_639100(&unk_86DDD8, (int)"wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD : OverNo ", v2); } return result; } // DA230A4: using guessed type int dword_DA230A4; //----- (004CB4A0) -------------------------------------------------------- int __stdcall sub_4CB4A0(int a1, int a2) { int v2; // esi@1 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_DISMISS_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_DISMISS_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); if ( (unsigned __int16)v2 < 0xFA0u ) { sub_485A10((int)&unk_D714FF8, 0, v2, 0); v3 = sub_4CB960(v2); sub_641A70(v3, (int)&dword_DA230A4, v2); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_PARTY_DISMISS_CMD : delete party in empty slot", v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_DISMISS_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CB590) -------------------------------------------------------- int __stdcall sub_4CB590(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_642100(&dword_DA230A4, *(_WORD *)(a1 + 2), *(_DWORD *)(a1 + 4)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CB640) -------------------------------------------------------- int __stdcall sub_4CB640(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_LOGIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_LOGIN_CMD"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_LOGIN_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CB690) -------------------------------------------------------- int __stdcall sub_4CB690(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CB6E0) -------------------------------------------------------- int __stdcall sub_4CB6E0(int a1, int a2) { int v2; // esi@3 int v4; // [sp-4h] [bp-20h]@1 int v5; // [sp-4h] [bp-20h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)(a1 + 2); if ( (unsigned __int16)v4 < 0xFA0u ) { v2 = sub_641CA0(&dword_DA230A4, v4); sub_641940((void *)(v2 + 184), *(_BYTE *)(a1 + 4), *(_BYTE *)(a1 + 5)); sub_6419C0(v2 + 184, *(_DWORD *)(a1 + 6)); v5 = (int)"WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_PARTY_DISMISS_CMD : delete party in empty slot", v4); v5 = (int)"WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v5); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CB7D0) -------------------------------------------------------- int __stdcall sub_4CB7D0(unsigned __int16 a1, unsigned __int16 a2) { signed int v2; // esi@1 int v4; // ecx@4 int v5; // esi@7 unsigned __int8 v6; // dl@8 int v7; // [sp-8h] [bp-24h]@2 int v8; // [sp-4h] [bp-20h]@2 int v9; // [sp-4h] [bp-20h]@5 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_FindMember"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_FindMember"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( a1 >= 0xFA0u ) { v8 = a1; v7 = (int)"PartyManufacture::pm_FindMember : Too large party regnum"; LABEL_3: sub_639100(&unk_86DDD8, v7, v8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_FindMember"); return 0; } v4 = dword_DA230A4 + 208 * a1; if ( *(_BYTE *)(v4 + 205) ) { v9 = (int)"PartyManufacture::pm_FindMember"; if ( *(_BYTE *)v4 <= a2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_FindMember"); return 0; } v5 = *(_DWORD *)(v4 + 36 * (a2 + 1)); } else { v6 = *(_BYTE *)v4; if ( *(_BYTE *)v4 >= 2u ) { if ( v6 <= 5u ) v2 = 1; } if ( !v2 ) { v8 = v6; v7 = (int)"PartyManufacture::pm_FindMember : Invalid party member number"; goto LABEL_3; } if ( a2 >= v6 ) { v8 = a2; v7 = (int)"PartyManufacture::pm_FindMember : sub is too big"; goto LABEL_3; } v5 = *(_DWORD *)(v4 + 4 * (9 * a2 + 9)); v9 = (int)"PartyManufacture::pm_FindMember"; } --dword_750CB8; sub_467660((int)&unk_D020420, v9); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CB960) -------------------------------------------------------- int __stdcall sub_4CB960(unsigned __int16 a1) { int v1; // ebx@1 signed int v2; // edi@1 int v3; // eax@2 int v4; // eax@2 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_Break"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_Break"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v2 = 0; if ( *(_BYTE *)sub_641CA0(&dword_DA230A4, a1) > 0u ) { do { v3 = sub_641CA0(&dword_DA230A4, a1); v4 = sub_54DE90(&unk_13253630, *(_WORD *)(v3 + v1 + 8)); if ( v4 ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1396))(v4, 65535); ++v2; v1 += 36; } while ( v2 < *(_BYTE *)sub_641CA0(&dword_DA230A4, a1) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_Break"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CBA50) -------------------------------------------------------- int __stdcall sub_4CBA50(__int16 a1, int a2) { int v2; // eax@3 signed int *v3; // edi@3 int v4; // ecx@3 int v5; // esi@3 int v6; // eax@4 int v7; // eax@13 int v8; // ecx@13 signed int v9; // ebx@18 int v10; // esi@18 signed int v11; // ST04_4@21 __time32_t v12; // eax@21 int v14; // [sp-8h] [bp-28h]@12 int v15; // [sp-4h] [bp-24h]@2 int v16; // [sp-4h] [bp-24h]@12 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_HandleSet"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_HandleSet"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a2 + 31) == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v2 = sub_641CA0(&dword_DA230A4, a1); v3 = (signed int *)v2; v4 = *(_BYTE *)v2; v5 = 0; if ( v4 > 0 ) { v6 = v2 + 20; do { if ( *(_DWORD *)(v6 - 8) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(v6 - 4) == *(_DWORD *)(a2 + 12) && *(_DWORD *)v6 == *(_DWORD *)(a2 + 16) && *(_DWORD *)(v6 + 4) == *(_DWORD *)(a2 + 20) && *(_DWORD *)(v6 + 8) == *(_DWORD *)(a2 + 24) ) break; ++v5; v6 += 36; } while ( v5 < v4 ); } if ( v5 >= v4 ) { v16 = v5 < v4; v14 = (int)"PartyManufacture::pm_HandleSet : Member Name not found"; goto LABEL_25; } v7 = sub_54E5A0(&unk_13253630, a2 + 8); v8 = (int)&v3[9 * v5]; *(_DWORD *)(v8 + 36) = v7; if ( !v7 ) { *(_WORD *)(v8 + 8) = -1; goto LABEL_26; } *(_WORD *)(v8 + 8) = *(_WORD *)(v7 + 4); (*(void (__thiscall **)(int, signed int *))(*(_DWORD *)v7 + 1908))(v7, v3); if ( *(_BYTE *)v3 > 5u ) { v16 = *(_BYTE *)v3 <= 5u; v14 = (int)"PartyManufacture::pm_HandleSet : Exceeded the NumOfMember"; goto LABEL_25; } if ( *(_BYTE *)v3 == 5 ) { v9 = 0; v10 = (int)(v3 + 9); do { if ( *(_DWORD *)v10 ) { if ( !((*(int (**)(void))(**(_DWORD **)v10 + 1056))() != 0) ) { v16 = 0; v14 = (int)"PartyManufacture::pm_HandleSet : Member CCharacterTitleZone Null"; LABEL_25: sub_639100(&unk_86DDD8, v14, v16); break; } v11 = *(_BYTE *)v3; v12 = (*(int (**)(void))(**(_DWORD **)v10 + 1056))(); sub_5C92F0(v12, a1, v11); } ++v9; v10 += 36; } while ( v9 < *(_BYTE *)v3 ); } LABEL_26: v15 = (int)"PartyManufacture::pm_HandleSet"; } else { *(_WORD *)(a2 + 4) = -1; v15 = (int)"PartyManufacture::pm_HandleSet"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CBC20) -------------------------------------------------------- int __stdcall sub_4CBC20(unsigned __int16 a1, int a2) { signed int v2; // edi@1 int v3; // eax@3 int v4; // ebx@3 unsigned __int8 v5; // cl@3 int v6; // esi@6 int v7; // edx@11 int v8; // eax@11 int v9; // ecx@12 int v11; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_MemberLeave"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_MemberLeave"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( a1 < 0xFA0u ) { v3 = sub_641CA0(&dword_DA230A4, a1); v4 = v3; v5 = *(_BYTE *)v3; if ( *(_BYTE *)v3 > 2u || *(_BYTE *)(v3 + 205) == 1 ) { v7 = v5; v8 = 0; if ( (signed int)v5 > 0 ) { v9 = v4 + 36; while ( *(_DWORD *)(v9 - 32) != a2 || !*(_DWORD *)v9 ) { ++v8; v9 += 36; if ( v8 >= v7 ) goto LABEL_18; } (*(void (__stdcall **)(signed int))(**(_DWORD **)(v4 + 4 * (9 * v8 + 9)) + 1396))(65535); } } else { if ( v5 ) { v6 = v3 + 36; do { if ( *(_DWORD *)v6 ) (*(void (__stdcall **)(signed int))(**(_DWORD **)v6 + 1396))(65535); ++v2; v6 += 36; } while ( v2 < *(_BYTE *)v4 ); } } LABEL_18: v11 = (int)"PartyManufacture::pm_MemberLeave"; } else { sub_639100(&unk_86DDD8, (int)"PartyManufacture::pm_MemberLeave MAX OVER party RegNo :", a1); v11 = (int)"PartyManufacture::pm_MemberLeave"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CBD60) -------------------------------------------------------- int __stdcall sub_4CBD60(unsigned __int16 a1) { signed int v1; // edi@1 int v2; // eax@1 int v3; // esi@1 int v4; // ebx@2 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_NewMemberJoin"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_NewMemberJoin"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v2 = sub_641CA0(&dword_DA230A4, a1); v3 = v2; if ( *(_BYTE *)v2 ) { v4 = v2 + 36; do { if ( *(_DWORD *)v4 ) (*(void (**)(void))(**(_DWORD **)v4 + 1916))(); ++v1; v4 += 36; } while ( v1 < *(_BYTE *)v3 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_NewMemberJoin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CBE40) -------------------------------------------------------- int __stdcall sub_4CBE40(unsigned __int16 a1) { int v1; // eax@1 void *v2; // esi@1 char v3; // cl@1 signed int v4; // edx@1 int v5; // esi@2 int v6; // ebx@2 __int16 v7; // ax@4 __int16 v8; // dx@4 int v9; // edi@4 int v10; // eax@5 void *v12; // [sp+10h] [bp-2Ch]@1 int v13; // [sp+18h] [bp-24h]@1 signed int v14; // [sp+1Ch] [bp-20h]@1 __int16 v15[6]; // [sp+20h] [bp-1Ch]@4 unsigned int v16; // [sp+2Ch] [bp-10h]@1 int v17; // [sp+38h] [bp-4h]@1 int v18; // [sp+3Ch] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_Sendmemberinfo"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_Sendmemberinfo"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v1 = sub_641CA0(&dword_DA230A4, a1); v2 = off_849C18; *(_WORD *)off_849C18 = 14386; v3 = *(_BYTE *)v1; v4 = 0; v13 = v1; v12 = v2; *((_BYTE *)v2 + 2) = *(_BYTE *)v1; v14 = 0; if ( v3 ) { v5 = (int)((char *)v2 + 11); v6 = v1 + 20; while ( 1 ) { v7 = *(_WORD *)(v6 - 12); *(_DWORD *)(v5 - 8) = *(_DWORD *)(v6 - 8); v15[v4] = v7; v8 = v15[v4]; *(_DWORD *)(v5 - 4) = *(_DWORD *)(v6 - 4); *(_DWORD *)v5 = *(_DWORD *)v6; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(v6 + 8); v9 = sub_54DE90(&unk_13253630, v8); if ( !v9 || (v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1388))(v9), *(_DWORD *)v10 != *(_DWORD *)(v5 - 8)) || *(_DWORD *)(v10 + 4) != *(_DWORD *)(v5 - 4) || *(_DWORD *)(v10 + 8) != *(_DWORD *)v5 || *(_DWORD *)(v10 + 12) != *(_DWORD *)(v5 + 4) || *(_DWORD *)(v10 + 16) != *(_DWORD *)(v5 + 8) || (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9) != *(_DWORD *)(v6 - 16) ) v15[v14] = -1; if ( v15[v14] == -1 ) { *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 20) = 0; } else { *(_DWORD *)(v5 + 12) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1256))(v9); *(_DWORD *)(v5 + 16) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1260))(v9); *(_DWORD *)(v5 + 20) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 3464))(v9); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 1396))(v9, a1); (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 1908))(v9, v13); } v6 += 36; v5 += 32; ++v14; if ( v14 >= *((_BYTE *)v12 + 2) ) break; v4 = v14; } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_Sendmemberinfo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // DA230A4: using guessed type int dword_DA230A4; // 4CBE40: using guessed type __int16 var_1C[6]; //----- (004CC040) -------------------------------------------------------- int __stdcall sub_4CC040(int a1, int a2, int a3, int a4) { int v4; // edi@1 unsigned __int16 v5; // ax@3 int v6; // eax@6 signed int v7; // ebx@7 int v8; // esi@9 int v10; // [sp-4h] [bp-28h]@2 int v11; // [sp+14h] [bp-10h]@6 int *v12; // [sp+30h] [bp+Ch]@8 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_QuestCheck"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1360))(a2); if ( v5 == -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 2036))(a2, a1, a2, a3, a4); } else { v6 = sub_641CA0(&dword_DA230A4, v5); v11 = v6; if ( v6 ) { v7 = 0; if ( *(_BYTE *)v6 ) { v12 = (int *)(v6 + 36); do { v8 = *v12; if ( *v12 ) { if ( (unsigned int)sub_402710(v4, *v12) <= 0xF4240 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 2036))( v8, a1, v4, a3, a4); v6 = v11; } v12 += 9; ++v7; } while ( v7 < *(_BYTE *)v6 ); } v10 = (int)"PartyManufacture::pm_QuestCheck"; goto LABEL_15; } } v10 = (int)"PartyManufacture::pm_QuestCheck"; LABEL_15: --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } --dword_750CB8; v10 = (int)"PartyManufacture::pm_QuestCheck"; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CC180) -------------------------------------------------------- signed __int16 __stdcall sub_4CC180(int a1) { int v1; // esi@1 int v2; // eax@2 int v3; // edx@2 int v4; // ecx@2 int v5; // eax@3 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_FindParty"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_FindParty"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; while ( 1 ) { v2 = sub_641CA0(&dword_DA230A4, v1); v3 = *(_BYTE *)v2; v4 = 0; if ( v3 > 0 ) break; LABEL_6: ++v1; if ( (unsigned __int16)v1 >= 0xFA0u ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_FindParty"); return -1; } } v5 = v2 + 4; while ( a1 != *(_DWORD *)v5 ) { ++v4; v5 += 36; if ( v4 >= v3 ) goto LABEL_6; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_FindParty"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CC280) -------------------------------------------------------- int __stdcall sub_4CC280(int a1, int a2, void *a3, int a4) { signed int v4; // edi@1 int v5; // ebx@2 int v6; // esi@3 int v7; // eax@7 sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_Broadcast"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_Broadcast"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( *(_BYTE *)a2 ) { v5 = a2 + 36; do { v6 = *(_DWORD *)v5; if ( *(_DWORD *)v5 && *(_DWORD *)(a1 + 122) == *(_DWORD *)(v6 + 122) ) { if ( sub_4C81E0(a3, a4) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 12))(v7, v6, a3); } else { sub_639100(&unk_86DDD8, (int)"PartyManufacture::pm_Broadcast : Packet Too Long", a4); } } ++v4; v5 += 36; } while ( v4 < *(_BYTE *)a2 ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_Broadcast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CC380) -------------------------------------------------------- int __thiscall sub_4CC380(void *this, int a2) { unsigned int v2; // ST24_4@1 void *v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // ebx@1 int v6; // eax@1 int v7; // ecx@1 _BYTE *v8; // ecx@1 _BYTE *v9; // ST24_4@1 int v10; // ST20_4@1 int v11; // ST1C_4@1 int v12; // eax@1 int v13; // ebx@1 int v14; // esi@4 void **v15; // ecx@5 int v16; // eax@7 _BYTE *v17; // eax@7 signed int v19; // [sp+10h] [bp-94h]@3 char v20; // [sp+14h] [bp-90h]@1 unsigned int v21; // [sp+94h] [bp-10h]@1 int v22; // [sp+A0h] [bp-4h]@1 int v23; // [sp+A4h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v2 = (unsigned int)&v23 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1360); v22 = 0; v5 = (unsigned __int16)v4(v3, v2); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); *((_DWORD *)v8 + 4) = *(_DWORD *)(v6 + 16); v8[20] = 0; v9 = v8; v10 = *((_WORD *)v3 + 2); v11 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 832))(v3); v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); sprintf(&v20, "PartyRegNum[%d]CharRegNum[%d]HndW[%d]HndZ[%d]CharID[%s]", v5, v12, v11, v10, v9); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 1924))(a2, &v20); v13 = sub_641CA0(&dword_DA230A4, v5); if ( v13 ) { sprintf(&v20, "Party member : %d\n", *(_BYTE *)v13); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a2 + 1924))(a2, &v20); v19 = 0; if ( *(_BYTE *)v13 ) { v14 = v13 + 20; do { v15 = (void **)"NULL"; if ( *(_DWORD *)(v14 + 16) ) v15 = &off_6C317C; v16 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v16; v17 = &byte_85A2C0[256 * v16]; *(_DWORD *)v17 = *(_DWORD *)(v14 - 8); *((_DWORD *)v17 + 1) = *(_DWORD *)(v14 - 4); *((_DWORD *)v17 + 2) = *(_DWORD *)v14; *((_DWORD *)v17 + 3) = *(_DWORD *)(v14 + 4); *((_DWORD *)v17 + 4) = *(_DWORD *)(v14 + 8); v17[20] = 0; sprintf( &v20, "RegNum[%d]hndZ[%d]hndW[%d]CharID[%s]Level[%d]Flag[%d]Merchine[%d]Obj[%s]", *(_DWORD *)(v14 - 16), *(_WORD *)(v14 - 12), *(_WORD *)(v14 - 10), v17, *(_BYTE *)(v14 + 12), *(_BYTE *)(v14 + 13), *(_BYTE *)(v14 + 15), v15); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1924))(a2, &v20); v14 += 36; ++v19; } while ( v19 < *(_BYTE *)v13 ); } } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1924))(a2, "Null party"); } --dword_750CB8; v22 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"); } // 6C317C: using guessed type void *off_6C317C; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // DA230A4: using guessed type int dword_DA230A4; //----- (004CC5F0) -------------------------------------------------------- int __stdcall sub_4CC5F0(int a1, int a2) { int v2; // eax@2 int v3; // ecx@2 int v4; // ecx@2 int v5; // edi@2 int v6; // eax@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_PartyMemberRefresh"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_PartyMemberRefresh"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a1 = 0; if ( *(_BYTE *)(a2 + 2) ) { do { v2 = 31 * *(_BYTE *)a1 + a2 + 3; v3 = 9 * *(_BYTE *)a1; *(_DWORD *)(a1 + 36 * *(_BYTE *)a1 + 4) = *(_DWORD *)v2; v4 = a1 + 4 * v3 + 4; *(_WORD *)(v4 + 4) = *(_WORD *)(v2 + 4); *(_WORD *)(v4 + 6) = *(_WORD *)(v2 + 6); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v2 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v2 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v2 + 16); *(_DWORD *)(v4 + 20) = *(_DWORD *)(v2 + 20); *(_DWORD *)(v4 + 24) = *(_DWORD *)(v2 + 24); *(_BYTE *)(v4 + 28) = *(_BYTE *)(v2 + 28); *(_BYTE *)(v4 + 29) = *(_BYTE *)(v2 + 29); *(_BYTE *)(v4 + 30) = *(_BYTE *)(v2 + 30); v5 = sub_54E4D0(&unk_13253630, *(_DWORD *)(31 * *(_BYTE *)a1 + a2 + 3)); v6 = *(_BYTE *)a1; if ( v5 ) { *(_DWORD *)(a1 + 4 * (9 * v6 + 9)) = v5; (*(void (__stdcall **)(int))(**(_DWORD **)(a1 + 4 * (9 * *(_BYTE *)a1 + 9)) + 1908))(a1); *(_BYTE *)(a1 + 36 * *(_BYTE *)a1 + 35) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(a1 + 36 * *(_BYTE *)a1 + 8) = *(_WORD *)(v5 + 4); } else { *(_DWORD *)(a1 + 4 * (9 * v6 + 9)) = 0; *(_BYTE *)(a1 + 36 * *(_BYTE *)a1 + 35) = -1; *(_WORD *)(a1 + 36 * *(_BYTE *)a1 + 8) = -1; } ++*(_BYTE *)a1; } while ( *(_BYTE *)a1 < *(_BYTE *)(a2 + 2) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_PartyMemberRefresh"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CC790) -------------------------------------------------------- int __thiscall sub_4CC790(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@2 int v3; // edi@2 int v4; // ecx@2 int v5; // edi@4 signed int v7; // [sp+14h] [bp-10h]@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LogoutDuringParty"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_LogoutDuringParty"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1) != -1 ) { v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1); v3 = sub_641CA0(&dword_DA230A4, v2); v4 = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1); if ( v3 != 0 ) { v5 = v3 + 20; v7 = 5; do { if ( *(_DWORD *)(v5 - 16) == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1) ) { *(_DWORD *)(v5 + 16) = 0; *(_BYTE *)(v5 + 15) = -1; *(_WORD *)(v5 - 12) = -1; *(_DWORD *)(v5 - 8) = *(_DWORD *)((char *)v1 + 32665); *(_DWORD *)(v5 - 4) = *(_DWORD *)((char *)v1 + 32669); *(_DWORD *)v5 = *(_DWORD *)((char *)v1 + 32673); *(_DWORD *)(v5 + 4) = *(_DWORD *)((char *)v1 + 32677); *(_DWORD *)(v5 + 8) = *(_DWORD *)((char *)v1 + 32681); *(_BYTE *)(v5 + 12) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1240))(v1); *(_BYTE *)(v5 + 13) = 0; } v5 += 36; --v7; } while ( v7 ); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Party not found", v4); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LogoutDuringParty"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CC900) -------------------------------------------------------- int __stdcall sub_4CC900(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 unsigned __int8 v4; // cl@2 int v5; // edi@4 int v6; // ecx@6 int v7; // edx@6 int v9; // [sp+18h] [bp-10h]@4 int v10; // [sp+30h] [bp+8h]@5 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_641CA0(&dword_DA230A4, *(_WORD *)(a1 + 2)); if ( v3 ) { v4 = *(_BYTE *)v3; if ( *(_BYTE *)v3 == *(_BYTE *)(a1 + 4) ) { v5 = v4; v9 = 0; if ( (signed int)v4 > 0 ) { v10 = v3 + 4; do { v6 = 0; v7 = v2 + 3; while ( *(_DWORD *)v10 != *(_DWORD *)v7 ) { ++v6; v7 += 31; if ( v6 >= v5 ) { sub_4CC5F0(v3, v2); goto LABEL_11; } } v10 += 36; ++v9; } while ( v9 < v5 ); } } else { sub_4CC5F0(v3, v2); } } LABEL_11: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CCA10) -------------------------------------------------------- int __stdcall sub_4CCA10(int a1, int a2) { int v2; // edi@1 int v4; // [sp-4h] [bp-24h]@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); if ( (unsigned __int16)v2 >= 0xFA0u || *(_BYTE *)sub_641CA0(&dword_DA230A4, v2) ) { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD : New party in nonempty slot", v2); v4 = (int)"WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; } else { sub_641E90((int)&dword_DA230A4, a1 + 4, a1 + 36, *(_WORD *)(a1 + 2)); sub_4CBA50(*(_WORD *)(a1 + 2), a1 + 4); sub_4CBA50(*(_WORD *)(a1 + 2), a1 + 36); sub_4CBE40(v2); v4 = (int)"WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v4); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CCB20) -------------------------------------------------------- int __thiscall sub_4CCB20(int this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // esi@2 int v4; // edi@3 int v5; // eax@4 v1 = this; result = *(_DWORD *)(this + 155356); if ( result ) { v3 = 0; if ( *(_BYTE *)result ) { v4 = 0; do { v5 = *(_DWORD *)(v4 + result + 36); if ( v5 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2268))(v5); result = *(_DWORD *)(v1 + 155356); ++v3; v4 += 36; } while ( v3 < *(_BYTE *)result ); } } return result; } //----- (004CCB70) -------------------------------------------------------- int __thiscall sub_4CCB70(void *this) { return sub_56B680((int)((char *)this + 155356)); } //----- (004CCB80) -------------------------------------------------------- int __stdcall sub_4CCB80(int a1, int a2) { unsigned int v2; // esi@1 int v4; // [sp-4h] [bp-20h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_JOIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_JOIN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); if ( (unsigned __int16)v2 < 0xFA0u ) { sub_641D50(&dword_DA230A4, v2, a1 + 4); sub_4CBA50(v2, a1 + 4); sub_4CBE40(v2); sub_4CBD60(v2); v4 = (int)"WorldManagerSession::wms_NC_PARTY_JOIN_CMD"; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_PARTY_JOIN_CMD : join to empty party", v2); v4 = (int)"WorldManagerSession::wms_NC_PARTY_JOIN_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v4); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CCC70) -------------------------------------------------------- int __thiscall sub_4CCC70(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_DA230B4 & 1) ) { dword_DA230B4 |= 1u; word_DA230B0 = 126; atexit(nullsub_73); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_DA230B0 ) { sub_4CCB20(v4); --dword_750CB8; } else { dword_750CB8 -= v5; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230B0: using guessed type __int16 word_DA230B0; // DA230B4: using guessed type int dword_DA230B4; //----- (004CCD60) -------------------------------------------------------- void __thiscall sub_4CCD60(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@3 int v4; // eax@5 v2 = this; if ( a2 != -1 && (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1360))() == -1 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 14432; *(_DWORD *)((char *)v3 + 2) = a2; *(_DWORD *)((char *)v3 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 10) ) { v4 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_PartyZoneJoinCmd : Packet Too Long", 10); } } } // 14D12A00: using guessed type int dword_14D12A00; //----- (004CCDF0) -------------------------------------------------------- FILE *__thiscall sub_4CCDF0(void *this) { void *v1; // esi@1 FILE *result; // eax@2 int v3; // eax@3 v1 = off_849C18; *(_WORD *)off_849C18 = 14433; *(_DWORD *)((char *)v1 + 2) = (*(int (**)(void))(*(_DWORD *)this + 836))(); if ( sub_4C81E0(&off_849C18, 6) ) { v3 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v3); } else { result = sub_639100(&unk_86DDD8, (int)"cPartyJoin : Packet Too Long", 6); } return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (004CCE50) -------------------------------------------------------- int __thiscall sub_4CCE50(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@3 int v5; // ebx@3 int v7; // [sp-4h] [bp-30h]@2 char v8; // [sp+10h] [bp-1Ch]@4 int v9; // [sp+14h] [bp-18h]@1 void *v10; // [sp+18h] [bp-14h]@1 int v11; // [sp+1Ch] [bp-10h]@4 int v12; // [sp+28h] [bp-4h]@1 v10 = this; v9 = (int)"WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 2); v12 = 0; if ( (unsigned __int16)v3 < 0xFA0u ) { v4 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a2 + 4)); v5 = v4; if ( !v4 || (unsigned __int8)(*(int (__thiscall **)(int, int *, char *))(*(_DWORD *)v4 + 2700))(v4, &v11, &v8) ) { sub_4CBC20(v3, *(_DWORD *)(a2 + 4)); sub_641FA0(&dword_DA230A4, v3, *(_DWORD *)(a2 + 4)); if ( v5 ) sub_485F60(v5, v3, v11); } v7 = (int)"WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_PARTY_LEAVE_CMD : leave from empty party", v3); v7 = (int)"WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"; } --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CCF70) -------------------------------------------------------- int __thiscall sub_4CCF70(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@3 int v5; // ebx@3 int v7; // [sp-4h] [bp-30h]@2 char v8; // [sp+10h] [bp-1Ch]@4 int v9; // [sp+14h] [bp-18h]@1 void *v10; // [sp+18h] [bp-14h]@1 int v11; // [sp+1Ch] [bp-10h]@4 int v12; // [sp+28h] [bp-4h]@1 v10 = this; v9 = (int)"WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 2); v12 = 0; if ( (unsigned __int16)v3 < 0xFA0u ) { v4 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a2 + 4)); v5 = v4; if ( !v4 || (unsigned __int8)(*(int (__thiscall **)(int, int *, char *))(*(_DWORD *)v4 + 2700))(v4, &v11, &v8) ) { sub_4CBC20(v3, *(_DWORD *)(a2 + 4)); sub_641FA0(&dword_DA230A4, v3, *(_DWORD *)(a2 + 4)); if ( v5 ) sub_485F60(v5, v3, v11); } v7 = (int)"WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD : leave from empty party", v3); v7 = (int)"WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"; } --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; //----- (004CD090) -------------------------------------------------------- signed int __thiscall sub_4CD090(int this, int a2) { signed int result; // eax@2 if ( *(_DWORD *)this == a2 ) result = *(_WORD *)(this + 4); else result = 99999; return result; } //----- (004CD0B0) -------------------------------------------------------- int __thiscall sub_4CD0B0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@2 int result; // eax@5 v3 = this; if ( (unsigned int)(a2 + 1200) > 0x960 ) LOBYTE(v4) = 0; else LOBYTE(v4) = (unsigned int)(a3 + 1200) <= 0x960; v4 = (unsigned __int8)v4; if ( (_BYTE)v4 ) { result = (int)((char *)v3 + 16 * (2401 * a2 + a3 + 2882400)); } else { sub_639100(&unk_86DDD8, (int)"PathFindTable::operator () : Out of range", v4); result = (int)((char *)v3 + (_DWORD)&unk_57F6C10); } return result; } //----- (004CD120) -------------------------------------------------------- FILE *__thiscall sub_4CD120(int this, int a2, int *a3, int *a4) { FILE *result; // eax@4 *a3 = *(_DWORD *)(this + 4) + a2 * *(_DWORD *)(this + 20) / 1024; *a4 = *(_DWORD *)(this + 8) + a2 * *(_DWORD *)(this + 24) / 1024; if ( *a3 < -1200 || *a3 > 1200 ) sub_639100(&unk_86DDD8, (int)"LinearStep::ls_step : Out of range", *a3); result = (FILE *)*a4; if ( *a4 < -1200 || (signed int)result > 1200 ) result = sub_639100(&unk_86DDD8, (int)"LinearStep::ls_step : Out of range", *a4); return result; } //----- (004CD1B0) -------------------------------------------------------- void *__thiscall sub_4CD1B0(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 signed int v6; // ecx@9 signed int v7; // eax@9 int v8; // eax@11 int v9; // edx@14 v5 = this; if ( (unsigned int)(a2 + 1200) > 0x960 ) sub_639100(&unk_86DDD8, (int)"LinearStep::ls_step : Out of range", a2); if ( (unsigned int)(a3 + 1200) > 0x960 ) sub_639100(&unk_86DDD8, (int)"LinearStep::ls_step : Out of range", a3); if ( (unsigned int)(a4 + 1200) > 0x960 ) sub_639100(&unk_86DDD8, (int)"LinearStep::ls_step : Out of range", a4); if ( (unsigned int)(a5 + 1200) > 0x960 ) sub_639100(&unk_86DDD8, (int)"LinearStep::ls_step : Out of range", a5); *((_DWORD *)v5 + 2) = a3; *((_DWORD *)v5 + 4) = a3; *((_DWORD *)v5 + 1) = a2; *((_DWORD *)v5 + 3) = a2; v6 = abs(a4 - a2); v7 = abs(a5 - a3); if ( v6 <= v7 ) v6 = v7; v8 = 0; *((_DWORD *)v5 + 10) = v6; if ( v6 ) { *((_DWORD *)v5 + 5) = ((a4 - a2) << 10) / v6; *((_DWORD *)v5 + 6) = ((a5 - a3) << 10) / v6; v8 = 0; } else { *((_DWORD *)v5 + 6) = 0; *((_DWORD *)v5 + 5) = 0; } v9 = *((_DWORD *)v5 + 1); *((_DWORD *)v5 + 9) = v8; *((_DWORD *)v5 + 8) = *((_DWORD *)v5 + 2); *((_DWORD *)v5 + 7) = v9; return v5; } //----- (004CD2C0) -------------------------------------------------------- char __thiscall sub_4CD2C0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); result = 1; } else { result = 0; } return result; } //----- (004CD300) -------------------------------------------------------- char __thiscall sub_4CD300(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 int v5; // edx@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004CD350) -------------------------------------------------------- int __thiscall sub_4CD350(void *this, int a2) { int v2; // eax@1 int result; // eax@2 v2 = *((_WORD *)this + 6); if ( (_WORD)v2 == -1 ) { result = 0; } else { *(_WORD *)a2 = v2; result = (*(int (__stdcall **)(int))(*(_DWORD *)this + 8))(v2); } return result; } //----- (004CD380) -------------------------------------------------------- char __thiscall sub_4CD380(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(v2 + 20) = *(_DWORD *)(a2 + 20); result = 1; } else { result = 0; } return result; } //----- (004CD3D0) -------------------------------------------------------- char __thiscall sub_4CD3D0(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(a2 + 20) = *(_DWORD *)(v5 + 20); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004CD440) -------------------------------------------------------- int __thiscall sub_4CD440(int this, unsigned __int16 a2, _DWORD *a3) { int v3; // edx@1 int result; // eax@2 void *v5; // eax@3 int v6; // esi@5 unsigned __int16 v7; // dx@6 v3 = *(_WORD *)(this + 14); if ( (_WORD)v3 == *(_WORD *)(this + 4) ) { v5 = a3; if ( !a3 ) v5 = &a3; *(_WORD *)v5 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * v3 + 4); v6 = 0; if ( a2 <= 0u ) { LABEL_8: result = *(_DWORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)v5); } else { while ( 1 ) { v7 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)v5 + 4); *(_WORD *)v5 = v7; if ( v7 >= *(_WORD *)(this + 4) ) break; ++v6; if ( (unsigned __int16)v6 >= a2 ) goto LABEL_8; } result = 0; } } else { result = 0; } return result; } //----- (004CD4C0) -------------------------------------------------------- void *__thiscall sub_4CD4C0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C359C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C359C: using guessed type int (__thiscall *off_6C359C)(void *, char); //----- (004CD500) -------------------------------------------------------- void *__thiscall sub_4CD500(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C35C0; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C35C0: using guessed type int (__thiscall *off_6C35C0)(void *, char); //----- (004CD550) -------------------------------------------------------- void *__thiscall sub_4CD550(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C357C; if ( a2 & 1 ) operator delete(this); return v2; } // 6C357C: using guessed type int (__thiscall *off_6C357C)(void *, char); //----- (004CD580) -------------------------------------------------------- char __thiscall sub_4CD580(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"LinearStep::t_continue"); dword_7508B8[dword_750CB8] = (int)"LinearStep::t_continue"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 8) * *((_DWORD *)v4 + 8) + *((_DWORD *)v4 + 7) * *((_DWORD *)v4 + 7) >= a4 * a4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"LinearStep::t_continue"); result = 1; } else { *(_DWORD *)a3 = *((_DWORD *)v4 + 7); *(_DWORD *)(a3 + 4) = *((_DWORD *)v4 + 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"LinearStep::t_continue"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CD660) -------------------------------------------------------- int __thiscall sub_4CD660(void *this, int a2, int a3, int a4, int a5, int a6, unsigned __int16 a7) { void *v7; // edi@1 int v8; // ebx@1 int v9; // esi@2 int v10; // ST08_4@4 int v11; // eax@4 unsigned __int16 v12; // ax@4 int v13; // esi@5 int v14; // eax@8 unsigned __int16 v15; // dx@8 int v16; // ecx@8 v7 = this; sub_4675D0((int)&unk_D020420, (int)"CellStack::cs_push"); dword_7508B8[dword_750CB8] = (int)"CellStack::cs_push"; dword_750AB8[dword_750CB8++] = -1; v8 = a5; if ( (unsigned int)(a5 + 1200) > 0x960 || (v9 = a6, (unsigned int)(a6 + 1200) > 0x960) ) { --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CellStack::cs_push"); } if ( *(_DWORD *)sub_4CD0B0(&unk_DA230C0, a5, a6) != dword_DA230B8 || (v10 = dword_DA230B8, v11 = sub_4CD0B0(&unk_DA230C0, v8, v9), v12 = sub_4CD090(v11, v10), v12 >= a7) ) { v13 = sub_4CD350((char *)v7 + 4804, (int)&a5); if ( v13 == 0 ) { a5 = dword_DA230B8; v14 = sub_4CD0B0(&unk_DA230C0, v8, a6); v15 = a7; *(_DWORD *)v14 = a5; v16 = a6; *(_WORD *)(v14 + 4) = v15; *(_DWORD *)(v13 + 8) = a3; *(_DWORD *)v13 = v8; *(_DWORD *)(v13 + 12) = a4; *(_DWORD *)(v13 + 4) = v16; *(_DWORD *)(v13 + 16) = v15; *(_DWORD *)(v13 + 20) = v16 * v16 + v8 * v8 + ((unsigned int)v15 >> 6); *((_DWORD *)v7 + 1207) = *(_DWORD *)v13; *((_DWORD *)v7 + 1208) = *(_DWORD *)(v13 + 4); *((_DWORD *)v7 + 1209) = *(_DWORD *)(v13 + 8); *((_DWORD *)v7 + 1210) = *(_DWORD *)(v13 + 12); *((_DWORD *)v7 + 1211) = *(_DWORD *)(v13 + 16); *((_DWORD *)v7 + 1212) = *(_DWORD *)(v13 + 20); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CellStack::cs_push"); } sub_639100(&unk_86DDD8, (int)"CellStack::cs_push : Out of memory", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CellStack::cs_push"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230B8: using guessed type int dword_DA230B8; //----- (004CD830) -------------------------------------------------------- char __thiscall sub_4CD830(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"CellStack::t_continue"); dword_7508B8[dword_750CB8] = (int)"CellStack::t_continue"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 1208) * *((_DWORD *)v4 + 1208) + *((_DWORD *)v4 + 1207) * *((_DWORD *)v4 + 1207) >= a4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CellStack::t_continue"); result = 1; } else { *(_DWORD *)a3 = *((_DWORD *)v4 + 1207); *(_DWORD *)(a3 + 4) = *((_DWORD *)v4 + 1208); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CellStack::t_continue"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CD920) -------------------------------------------------------- char __thiscall sub_4CD920(void *this, int a2, __int16 a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MinWeightSearching::lid_Call"); dword_7508B8[dword_750CB8] = (int)"MinWeightSearching::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a2 + 20); if ( *((_DWORD *)v3 + 2) > v4 ) { *((_DWORD *)v3 + 2) = v4; *((_WORD *)v3 + 2) = a3; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MinWeightSearching::lid_Call"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CD990) -------------------------------------------------------- void *__thiscall sub_4CD990(void *this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@1 int v6; // eax@5 int v7; // ecx@5 int v8; // edi@6 int v9; // eax@6 signed __int16 v10; // ax@7 __int16 v11; // di@12 int v12; // ebx@12 int v13; // eax@12 int (__stdcall **v14)(int, __int16); // [sp+10h] [bp-1Ch]@1 int v15; // [sp+14h] [bp-18h]@1 int v16; // [sp+18h] [bp-14h]@1 void *v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 v17 = this; v14 = &off_6C367C; LOWORD(v15) = -1; v16 = 999999999; v2 = (int)((char *)this + 4804); v18 = 0; sub_43C470((int)((char *)this + 4804), (int)&v14); v3 = (unsigned __int16)v15; v4 = sub_4CD440(v2, v15, 0); if ( !v4 ) { sub_639100(&unk_86DDD8, (int)"no path", 0); return 0; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v3) ) sub_639100(&unk_86DDD8, (int)"CellStack::t_trace : Free fail", 0); v6 = sub_4CD0B0(&unk_DA230C0, *(_DWORD *)v4, *(_DWORD *)(v4 + 4)); v7 = dword_DA230B8; if ( *(_DWORD *)v6 == dword_DA230B8 ) { v8 = dword_DA230B8; v9 = sub_4CD0B0(&unk_DA230C0, *(_DWORD *)v4, *(_DWORD *)(v4 + 4)); if ( *(_DWORD *)v9 == v8 ) v10 = *(_WORD *)(v9 + 4); else v10 = -31073; if ( (signed int)(unsigned __int16)v10 <= *(_DWORD *)(v4 + 16) ) return v17; v7 = dword_DA230B8; } v11 = *(_WORD *)(v4 + 16); v12 = v7; v13 = sub_4CD0B0(&unk_DA230C0, *(_DWORD *)v4, *(_DWORD *)(v4 + 4)); *(_DWORD *)v13 = v12; *(_WORD *)(v13 + 4) = v11; *(_DWORD *)(v13 + 8) = *(_DWORD *)(v4 + 8); *(_DWORD *)(v13 + 12) = *(_DWORD *)(v4 + 12); return sub_4CD1B0(&off_84BE04, *(_DWORD *)v4, *(_DWORD *)(v4 + 4), 0, 0); } // 6C367C: using guessed type int (__stdcall *off_6C367C)(int, __int16); // 84BE04: using guessed type int (__thiscall **off_84BE04)(void *, char); // DA230B8: using guessed type int dword_DA230B8; //----- (004CDB00) -------------------------------------------------------- char __thiscall sub_4CDB00(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6C35F4; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C35F4: using guessed type int (__stdcall *off_6C35F4)(int, int); //----- (004CDC80) -------------------------------------------------------- void *__thiscall sub_4CDC80(void *this, int a2, int a3, int a4, int a5) { int v5; // esi@1 void *v6; // ebx@1 int v8; // [sp+18h] [bp+Ch]@5 int v9; // [sp+20h] [bp+14h]@5 v5 = a3; v6 = this; if ( (unsigned int)(a3 + 1200) > 0x960 ) sub_639100(&unk_86DDD8, (int)"CellStack::cs_Set : Out of range", a3); if ( (unsigned int)(a4 + 1200) > 0x960 ) sub_639100(&unk_86DDD8, (int)"CellStack::cs_Set : Out of range", a4); v8 = a5 + 1000; sub_4CD660(v6, a2, v5, a4, v5, a4 + 1, a5 + 1000); v9 = a5 + 1414; sub_4CD660(v6, a2, v5, a4, v5 + 1, a4 + 1, v9); sub_4CD660(v6, a2, v5, a4, v5 + 1, a4, v8); sub_4CD660(v6, a2, v5, a4, v5 + 1, a4 - 1, v9); sub_4CD660(v6, a2, v5, a4, v5, a4 - 1, v8); sub_4CD660(v6, a2, v5, a4, v5 - 1, a4 - 1, v9); sub_4CD660(v6, a2, v5, a4, v5 - 1, a4, v8); sub_4CD660(v6, a2, v5, a4, v5 - 1, a4 + 1, v9); return v6; } //----- (004CDDA0) -------------------------------------------------------- int __thiscall sub_4CDDA0(void *this, int a2) { int v2; // esi@1 int v3; // ST04_4@1 int v4; // eax@1 int v5; // ecx@1 int v6; // edx@2 char *v7; // eax@5 int v8; // edi@10 int v9; // ebx@10 int v10; // eax@15 __int16 v11; // dx@15 int v13; // [sp+14h] [bp-18h]@1 int v14; // [sp+18h] [bp-14h]@1 int v15; // [sp+1Ch] [bp-10h]@8 int v16; // [sp+28h] [bp-4h]@1 signed int v17; // [sp+34h] [bp+8h]@13 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"LinearStep::t_trace"); dword_7508B8[dword_750CB8] = (int)"LinearStep::t_trace"; dword_750AB8[dword_750CB8++] = -1; ++*(_DWORD *)(v2 + 36); v3 = *(_DWORD *)(v2 + 36); v16 = 0; sub_4CD120(v2, v3, &v13, &v14); v4 = *(_DWORD *)(v2 + 28); v5 = *(_DWORD *)(v2 + 32); if ( (unsigned int)(v4 + 1200) > 0x960 ) LOBYTE(v6) = 0; else LOBYTE(v6) = (unsigned int)(v5 + 1200) <= 0x960; v6 = (unsigned __int8)v6; if ( (_BYTE)v6 ) { v7 = (char *)&unk_1061E6C0 + 16 * (v5 + 2401 * v4); } else { sub_639100(&unk_86DDD8, (int)"PathFindTable::operator () : Out of range", v6); v7 = (char *)&dword_13219CD0; } if ( *(_DWORD *)v7 == dword_DA230B8 ) v15 = *((_WORD *)v7 + 2); else v15 = 34463; v8 = v14; v9 = v13; if ( *(_DWORD *)sub_4CD0B0(&unk_DA230C0, v13, v14) == dword_DA230B8 ) { v2 = (int)sub_4CDC80(&dword_1321A340, a2, *(_DWORD *)(v2 + 28), *(_DWORD *)(v2 + 32), v15); } else { if ( *(_DWORD *)(v2 + 28) == v9 || (v17 = 1414, *(_DWORD *)(v2 + 32) == v8) ) v17 = 1000; v13 = dword_DA230B8; v10 = sub_4CD0B0(&unk_DA230C0, v9, v8); v11 = v15 + v17; *(_DWORD *)v10 = v13; *(_WORD *)(v10 + 4) = v11; *(_DWORD *)(v10 + 8) = *(_DWORD *)(v2 + 28); *(_DWORD *)(v10 + 12) = *(_DWORD *)(v2 + 32); *(_DWORD *)(v2 + 28) = v9; *(_DWORD *)(v2 + 32) = v8; } --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"LinearStep::t_trace"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230B8: using guessed type int dword_DA230B8; // 13219CD0: using guessed type int dword_13219CD0; // 1321A340: using guessed type int dword_1321A340; //----- (004CDF50) -------------------------------------------------------- void *__thiscall sub_4CDF50(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6C361C; v3 = (void *)*((_DWORD *)this + 1203); *((_DWORD *)this + 1201) = &off_6C35C0; if ( v3 ) sub_6530A4(v3); *(_DWORD *)v2 = &off_6C357C; if ( a2 & 1 ) operator delete(v2); return v2; } // 6C357C: using guessed type int (__thiscall *off_6C357C)(void *, char); // 6C35C0: using guessed type int (__thiscall *off_6C35C0)(void *, char); // 6C361C: using guessed type int (__thiscall *off_6C361C)(void *, char); //----- (004CDFA0) -------------------------------------------------------- char __thiscall sub_4CDFA0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6C35FC; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C35FC: using guessed type int (__stdcall *off_6C35FC)(int, int); //----- (004CE120) -------------------------------------------------------- int __thiscall sub_4CE120(int this) { int v1; // edi@1 int v2; // esi@1 signed int v3; // edx@1 signed int v4; // eax@1 int v5; // edi@1 int v6; // ecx@3 bool v7; // zf@3 int v8; // ecx@3 int v9; // ecx@6 int v10; // ecx@6 int v11; // ecx@9 int v12; // ecx@9 int v13; // ecx@12 int v14; // ecx@15 int v15; // ecx@15 int v17; // [sp+10h] [bp-14h]@1 signed int v18; // [sp+14h] [bp-10h]@1 v1 = this; v17 = this; v2 = this + 4804; *(_DWORD *)this = &off_6C361C; *(_DWORD *)(this + 4804) = &off_6C35C0; *(_DWORD *)(this + 4820) = 0; sub_4CDB00(this + 4804, 0xC8u); v3 = 2; v4 = 36; v5 = v1 + 28; v18 = 40; do { if ( v3 - 2 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v6 + v4 - 36) == 0; v8 = v6 + v4 - 36; if ( v7 ) *(_DWORD *)v8 = v5 - 24; } if ( v3 - 1 < *(_WORD *)(v2 + 4) ) { v9 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v9 + v4 - 24) == 0; v10 = v9 + v4 - 24; if ( v7 ) *(_DWORD *)v10 = v5; } if ( v3 < *(_WORD *)(v2 + 4) ) { v11 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v11 + v4 - 12) == 0; v12 = v11 + v4 - 12; if ( v7 ) *(_DWORD *)v12 = v5 + 24; } if ( v3 + 1 < *(_WORD *)(v2 + 4) ) { v13 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v13 + v4) ) *(_DWORD *)(v13 + v4) = v5 + 48; } if ( v3 + 2 < *(_WORD *)(v2 + 4) ) { v14 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v14 + v4 + 12) == 0; v15 = v14 + v4 + 12; if ( v7 ) *(_DWORD *)v15 = v5 + 72; } v4 += 60; v3 += 5; v5 += 120; --v18; } while ( v18 ); return v17; } // 6C35C0: using guessed type int (__thiscall *off_6C35C0)(void *, char); // 6C361C: using guessed type int (__thiscall *off_6C361C)(void *, char); //----- (004CE240) -------------------------------------------------------- int __thiscall sub_4CE240(int this) { int v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@1 int v4; // edx@1 int v5; // ecx@3 bool v6; // zf@3 int v7; // ecx@3 int v8; // ecx@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@15 int v14; // ecx@15 signed int v16; // [sp+Ch] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6C359C; *(_DWORD *)(this + 16) = 0; sub_4CDFA0(this, 0xC8u); v2 = 2; *(_DWORD *)v1 = &off_6C3704; v3 = 36; v4 = v1 + 32; v16 = 40; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v3 - 36) == 0; v7 = v5 + v3 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 8; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v3 - 24) == 0; v9 = v8 + v3 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v3 - 12) == 0; v11 = v10 + v3 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 8; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v3) ) *(_DWORD *)(v12 + v3) = v4 + 16; } if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v3 + 12) == 0; v14 = v13 + v3 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 24; } v4 += 40; v3 += 60; v2 += 5; --v16; } while ( v16 ); return v1; } // 6C359C: using guessed type int (__thiscall *off_6C359C)(void *, char); // 6C3704: using guessed type int (__thiscall *off_6C3704)(void *, char); //----- (004CE330) -------------------------------------------------------- double __thiscall sub_4CE330(void *this) { void *v1; // esi@1 int v2; // edx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 double v6; // st7@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"PerformanceChecker::pc_loopPERsecond"); dword_7508B8[dword_750CB8] = (int)"PerformanceChecker::pc_loopPERsecond"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 1); v3 = v2 & (*(_DWORD *)v1 - 1); *(_DWORD *)v1 = v3; v4 = *((_DWORD *)v1 + v3 + 2); v5 = v2 & (v3 + 1); *(_DWORD *)v1 = v5; v6 = (double)(unsigned int)(v4 - *((_DWORD *)v1 + v5 + 2)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PerformanceChecker::pc_loopPERsecond"); return 32.0 / (v6 / 10.0); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004CE3C0) -------------------------------------------------------- int __thiscall sub_4CE3C0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; return result; } //----- (004CE460) -------------------------------------------------------- signed int __thiscall sub_4CE460(void *this, const char *a2) { unsigned int v2; // ebx@1 unsigned int v3; // esi@1 const char *v4; // edi@2 signed int result; // eax@5 int v6; // [sp+Ch] [bp-4h]@2 v2 = *((_DWORD *)this + 7); v3 = 0; if ( v2 ) { v6 = *(_DWORD *)this; v4 = (const char *)(*(_DWORD *)this + 4); while ( strcmp(v4, a2) ) { ++v3; v4 += 70; if ( v3 >= v2 ) goto LABEL_5; } result = *(_DWORD *)(70 * v3 + v6); } else { LABEL_5: result = -1; } return result; } //----- (004CE4D0) -------------------------------------------------------- int __thiscall sub_4CE4D0(int this, int a2) { unsigned int v2; // edx@1 unsigned int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 28); v3 = 0; if ( v2 ) { v4 = *(_DWORD *)this; v5 = *(_DWORD *)this; while ( *(_DWORD *)v5 != a2 ) { ++v3; v5 += 70; if ( v3 >= v2 ) goto LABEL_5; } result = 70 * v3 + v4 + 4; } else { LABEL_5: result = 0; } return result; } //----- (004CE510) -------------------------------------------------------- int __thiscall sub_4CE510(void *this, const char *a2) { int result; // eax@2 unsigned int v3; // ebx@3 unsigned int v4; // esi@3 const char *v5; // edi@4 int v6; // [sp+0h] [bp-4h]@4 if ( a2 ) { v3 = *((_DWORD *)this + 7); v4 = 0; if ( v3 ) { v6 = *(_DWORD *)this; v5 = (const char *)(*(_DWORD *)this + 36); while ( strcmp(v5, a2) ) { ++v4; v5 += 70; if ( v4 >= v3 ) goto LABEL_7; } result = 70 * v4 + v6 + 4; } else { LABEL_7: result = 0; } } else { result = 0; } return result; } //----- (004CE590) -------------------------------------------------------- signed int __thiscall sub_4CE590(void *this, const char *a2) { unsigned int v2; // ebx@1 unsigned int v3; // esi@1 const char *v4; // edi@2 signed int result; // eax@5 int v6; // [sp+Ch] [bp-4h]@2 v2 = *((_DWORD *)this + 7); v3 = 0; if ( v2 ) { v6 = *(_DWORD *)this; v4 = (const char *)(*(_DWORD *)this + 4); while ( strcmp(v4, a2) ) { ++v3; v4 += 70; if ( v3 >= v2 ) goto LABEL_5; } result = *(_WORD *)(70 * v3 + v6 + 68); } else { LABEL_5: result = -1; } return result; } //----- (004CE610) -------------------------------------------------------- int __thiscall sub_4CE610(int this, int a2, const char *a3) { unsigned int v3; // eax@1 unsigned int v4; // edi@1 const char *v5; // ecx@2 int result; // eax@5 int v7; // ecx@6 int v8; // edx@6 int v9; // [sp+4h] [bp-4h]@1 v3 = *(_DWORD *)(this + 32); v4 = 0; v9 = this; *(_WORD *)a2 = 0; if ( v3 ) { v5 = *(const char **)(this + 4); while ( strcmp(v5, a3) ) { ++v4; v5 += 36; if ( v4 >= v3 ) return a2; } v7 = *(_DWORD *)(v9 + 4) + 36 * v4; v8 = *(_BYTE *)(v7 + 32); result = a2; LOBYTE(v7) = *(_BYTE *)(v7 + 33); *(_BYTE *)a2 = v8; *(_BYTE *)(a2 + 1) = v7; } else { result = a2; } return result; } //----- (004CE6A0) -------------------------------------------------------- int __thiscall sub_4CE6A0(int this, int a2, const char *a3) { unsigned int v3; // eax@1 unsigned int v4; // edi@1 const char *v5; // ecx@2 int result; // eax@5 int v7; // ecx@6 int v8; // edx@6 int v9; // [sp+4h] [bp-4h]@1 v3 = *(_DWORD *)(this + 32); v4 = 0; v9 = this; *(_WORD *)a2 = 0; if ( v3 ) { v5 = *(const char **)(this + 4); while ( strcmp(v5, a3) ) { ++v4; v5 += 36; if ( v4 >= v3 ) return a2; } v7 = *(_DWORD *)(v9 + 4) + 36 * v4; v8 = *(_BYTE *)(v7 + 34); result = a2; LOBYTE(v7) = *(_BYTE *)(v7 + 35); *(_BYTE *)a2 = v8; *(_BYTE *)(a2 + 1) = v7; } else { result = a2; } return result; } //----- (004CE730) -------------------------------------------------------- signed int __thiscall sub_4CE730(int this, unsigned __int8 a2) { unsigned int v2; // esi@1 unsigned int v3; // eax@1 int v4; // edi@2 int v5; // ecx@2 signed int result; // eax@6 v2 = *(_DWORD *)(this + 36); v3 = 0; if ( v2 ) { v4 = *(_DWORD *)(this + 8); v5 = v4 + 5; while ( *(_BYTE *)(v5 - 1) > a2 || a2 > *(_BYTE *)v5 ) { ++v3; v5 += 6; if ( v3 >= v2 ) goto LABEL_6; } result = *(_DWORD *)(v4 + 6 * v3); } else { LABEL_6: result = 4; } return result; } //----- (004CE770) -------------------------------------------------------- signed int __thiscall sub_4CE770(int this, unsigned __int8 a2, unsigned __int8 a3) { int v3; // ebx@1 unsigned int v4; // esi@1 unsigned int v5; // eax@1 int v6; // edi@2 int v7; // ecx@2 signed int result; // eax@6 int v9; // eax@8 int v10; // ecx@8 int v11; // esi@10 int v12; // ecx@12 int v13; // ecx@16 int v14; // ecx@20 int v15; // ecx@24 unsigned int v16; // edx@28 int *v17; // esi@28 int v18; // ecx@29 unsigned int v19; // eax@29 int v20; // edx@32 unsigned int v21; // eax@32 unsigned int v22; // edx@37 unsigned int v23; // eax@37 int v24; // esi@38 int v25; // ecx@38 int v26; // [sp+Ch] [bp-48h]@36 int v27; // [sp+10h] [bp-44h]@7 int v28; // [sp+14h] [bp-40h]@28 int v29; // [sp+18h] [bp-3Ch]@28 int v30; // [sp+1Ch] [bp-38h]@28 int v31; // [sp+20h] [bp-34h]@28 int v32; // [sp+24h] [bp-30h]@28 int v33; // [sp+28h] [bp-2Ch]@28 int v34; // [sp+2Ch] [bp-28h]@28 int v35; // [sp+30h] [bp-24h]@28 int v36; // [sp+34h] [bp-20h]@28 int v37; // [sp+38h] [bp-1Ch]@28 int v38; // [sp+3Ch] [bp-18h]@8 int v39; // [sp+40h] [bp-14h]@12 int v40; // [sp+44h] [bp-10h]@16 int v41; // [sp+48h] [bp-Ch]@20 int v42; // [sp+4Ch] [bp-8h]@24 unsigned int v43; // [sp+50h] [bp-4h]@1 int v44; // [sp+54h] [bp+0h]@1 v43 = (unsigned int)&v44 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 36); v5 = 0; if ( !v4 ) goto LABEL_6; v6 = *(_DWORD *)(this + 8); v7 = v6 + 5; while ( *(_BYTE *)(v7 - 1) > a2 || a2 > *(_BYTE *)v7 ) { ++v5; v7 += 6; if ( v5 >= v4 ) goto LABEL_6; } v27 = *(_DWORD *)(v6 + 6 * v5); if ( v27 == 4 ) goto LABEL_6; v9 = *(_DWORD *)(v3 + 64); v10 = a3 - 2; v38 = v10; if ( v10 < v9 ) { v10 = v9; v38 = v9; } v11 = *(_DWORD *)(v3 + 68); if ( v10 > v11 ) v38 = *(_DWORD *)(v3 + 68); v12 = a3 - 1; v39 = a3 - 1; if ( a3 - 1 < v9 ) { v12 = v9; v39 = v9; } if ( v12 > v11 ) v39 = v11; v13 = a3; v40 = a3; if ( a3 < v9 ) { v13 = v9; v40 = v9; } if ( v13 > v11 ) v40 = v11; v14 = a3 + 1; v41 = a3 + 1; if ( a3 + 1 < v9 ) { v14 = v9; v41 = v9; } if ( v14 > v11 ) v41 = v11; v15 = a3 + 2; v42 = a3 + 2; if ( a3 + 2 < v9 ) { v15 = v9; v42 = v9; } if ( v15 > v11 ) v42 = v11; v16 = 0; v29 = 20; v31 = 20; v28 = 5; v30 = 50; v32 = 5; v33 = 0; v34 = 0; v35 = 0; v36 = 0; v37 = 0; v17 = &v33; do { v18 = *v17; v19 = 0; do v18 += *(&v28 + v19++); while ( v19 <= v16 ); *v17 = v18; ++v16; ++v17; } while ( v16 < 5 ); v20 = (unsigned __int16)sub_4011A0(&unk_14D42DC0) % 100; v21 = 0; while ( v20 >= *(&v33 + v21) ) { ++v21; if ( v21 >= 5 ) goto LABEL_6; } v26 = *(&v38 + v21); if ( v26 != -1 && (v22 = *(_DWORD *)(v3 + 44), v23 = 0, v22) ) { v24 = *(_DWORD *)(v3 + 16); v25 = v24 + 8; while ( *(_DWORD *)(v25 - 4) != v27 || *(_BYTE *)v25 != v26 ) { ++v23; v25 += 9; if ( v23 >= v22 ) goto LABEL_6; } result = *(_DWORD *)(v23 + v24 + 8 * v23); } else { LABEL_6: result = 41; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004CE920) -------------------------------------------------------- int __thiscall sub_4CE920(int this, int a2, int a3, int a4) { int result; // eax@1 signed int v5; // ebx@1 int v6; // edi@1 int v7; // esi@2 int v8; // edi@2 int v9; // edx@2 double v10; // st5@5 int v11; // esi@5 int v12; // ebx@5 bool v13; // zf@5 signed int v14; // esi@5 double v15; // st5@14 int v16; // esi@14 int v17; // ebx@14 int v18; // esi@14 double v19; // st5@23 int v20; // esi@23 int v21; // ebx@23 int v22; // esi@23 double v23; // st5@32 int v24; // esi@32 int v25; // ebx@32 int v26; // esi@32 int v27; // edx@42 int v28; // edi@42 int v29; // esi@45 double v30; // st5@45 int v31; // ebx@45 signed int v32; // esi@45 signed int v33; // [sp+10h] [bp-8h]@1 unsigned int v34; // [sp+14h] [bp-4h]@2 int v35; // [sp+20h] [bp+8h]@1 int v36; // [sp+20h] [bp+8h]@42 result = a2; *(double *)(a2 + 8) = 0.0; v5 = *(_DWORD *)(this + 52); v6 = 0; *(_DWORD *)a2 = 2; v35 = 0; v33 = v5; if ( v5 >= 4 ) { v7 = *(_DWORD *)(this + 24); v8 = -13 - v7; v9 = v7 + 13; v34 = ((unsigned int)(v5 - 4) >> 2) + 1; v35 = 4 * v34; do { if ( *(_DWORD *)(v9 - 13) == a3 && *(_DWORD *)(v9 - 9) == a4 ) { v10 = (double)*(signed int *)v9; v11 = v9 + *(_DWORD *)(this + 24); v12 = *(_DWORD *)(v11 + v8 + 8); v13 = *(_BYTE *)(v11 + v8 + 12) == 1; v14 = *(_DWORD *)v9; *(_DWORD *)result = v12; if ( v13 ) { if ( v14 < 0 ) v10 = v10 + 4294967296.0; v10 = v10 * -1.0; } else { if ( v14 < 0 ) v10 = v10 + 4294967296.0; } *(double *)(result + 8) = v10 / 1000.0; } if ( *(_DWORD *)(v9 + 4) == a3 && *(_DWORD *)(v9 + 8) == a4 ) { v15 = (double)*(signed int *)(v9 + 17); v16 = v9 + *(_DWORD *)(this + 24); v17 = *(_DWORD *)(v16 + v8 + 25); v13 = *(_BYTE *)(v16 + v8 + 29) == 1; v18 = *(_DWORD *)(v9 + 17); *(_DWORD *)result = v17; if ( v13 ) { if ( v18 < 0 ) v15 = v15 + 4294967296.0; v15 = v15 * -1.0; } else { if ( v18 < 0 ) v15 = v15 + 4294967296.0; } *(double *)(result + 8) = v15 / 1000.0; } if ( *(_DWORD *)(v9 + 21) == a3 && *(_DWORD *)(v9 + 25) == a4 ) { v19 = (double)*(signed int *)(v9 + 34); v20 = v9 + *(_DWORD *)(this + 24); v21 = *(_DWORD *)(v20 + v8 + 42); v13 = *(_BYTE *)(v20 + v8 + 46) == 1; v22 = *(_DWORD *)(v9 + 34); *(_DWORD *)result = v21; if ( v13 ) { if ( v22 < 0 ) v19 = v19 + 4294967296.0; v19 = v19 * -1.0; } else { if ( v22 < 0 ) v19 = v19 + 4294967296.0; } *(double *)(result + 8) = v19 / 1000.0; } if ( *(_DWORD *)(v9 + 38) == a3 && *(_DWORD *)(v9 + 42) == a4 ) { v23 = (double)*(signed int *)(v9 + 51); v24 = v9 + *(_DWORD *)(this + 24); v25 = *(_DWORD *)(v24 + v8 + 59); v13 = *(_BYTE *)(v24 + v8 + 63) == 1; v26 = *(_DWORD *)(v9 + 51); *(_DWORD *)result = v25; if ( v13 ) { if ( v26 < 0 ) v23 = v23 + 4294967296.0; v23 = v23 * -1.0; } else { if ( v26 < 0 ) v23 = v23 + 4294967296.0; } *(double *)(result + 8) = v23 / 1000.0; } v9 += 68; --v34; } while ( v34 ); v5 = v33; v6 = v35; } if ( v6 < (unsigned int)v5 ) { v27 = 17 * v6; v28 = 17 * v6 + *(_DWORD *)(this + 24) + 13; v36 = v5 - v35; do { if ( *(_DWORD *)(*(_DWORD *)(this + 24) + v27) == a3 && *(_DWORD *)(v28 - 9) == a4 ) { v29 = *(_DWORD *)(this + 24); v30 = (double)*(signed int *)v28; v31 = *(_DWORD *)(v29 + v27 + 8); v13 = *(_BYTE *)(v29 + v27 + 12) == 1; v32 = *(_DWORD *)v28; *(_DWORD *)result = v31; if ( v13 ) { if ( v32 < 0 ) v30 = v30 + 4294967296.0; v30 = v30 * -1.0; } else { if ( v32 < 0 ) v30 = v30 + 4294967296.0; } *(double *)(result + 8) = v30 / 1000.0; } v27 += 17; v28 += 17; --v36; } while ( v36 ); } return result; } //----- (004CEB10) -------------------------------------------------------- unsigned int __thiscall sub_4CEB10(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; if ( 1073741823 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 2; if ( result > v4 ) { if ( 1073741823 - ((unsigned int)v4 >> 1) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_5839E0(this, v5); } return result; } //----- (004CEB70) -------------------------------------------------------- int __thiscall sub_4CEB70(void *this, int a2, int a3, char *a4) { void *v4; // esi@1 char *v5; // eax@1 unsigned int v6; // edi@1 int v7; // eax@2 char v8; // cl@3 char v9; // cl@5 void *v10; // ebx@6 int v11; // esi@9 int v12; // eax@10 unsigned int v13; // eax@15 signed int v14; // esi@16 int v16; // esi@31 void *v17; // [sp+Ch] [bp-50h]@1 unsigned int v18; // [sp+10h] [bp-4Ch]@6 unsigned int v19; // [sp+14h] [bp-48h]@6 unsigned int v20; // [sp+18h] [bp-44h]@6 int v21; // [sp+1Ch] [bp-40h]@6 int v22; // [sp+24h] [bp-38h]@14 int v23; // [sp+28h] [bp-34h]@7 char v24[32]; // [sp+2Ch] [bp-30h]@3 unsigned int v25; // [sp+4Ch] [bp-10h]@1 int v26; // [sp+58h] [bp-4h]@6 int v27; // [sp+5Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v4 = this; v17 = this; v5 = a4; v6 = 0; if ( a4 ) { do { v9 = *v5; v5[v24 - a4] = *v5; ++v5; } while ( v9 ); } else { v7 = 0; do { v8 = asc_6A2D48[v7]; v24[v7++] = v8; } while ( v8 ); } v10 = 0; v19 = 0; v20 = 0; v21 = 0; v26 = 0; v18 = 0; if ( *((_DWORD *)v4 + 12) <= 0u ) return 0; v23 = 0; while ( 1 ) { v11 = *((_DWORD *)v4 + 5) + v23; if ( *(_DWORD *)v11 == a2 ) { v12 = *(_DWORD *)(v11 + 4); if ( v12 == a3 || v12 == 40 ) { if ( !strcmp((const char *)(v11 + 8), v24) || !strcmp((const char *)(v11 + 8), "-") ) { v22 = v11; if ( (unsigned int)&v22 >= v6 || (v13 = v19, v19 > (unsigned int)&v22) ) { if ( v6 == v21 ) { sub_4CEB10((int)&v19, 1); v6 = v20; } if ( v6 ) *(_DWORD *)v6 = v11; } else { v14 = (signed int)((char *)&v22 - v19) >> 2; if ( v6 == v21 ) { sub_4CEB10((int)&v19, 1); v6 = v20; v13 = v19; } if ( v6 ) *(_DWORD *)v6 = *(_DWORD *)(v13 + 4 * v14); } v6 += 4; v20 = v6; } v10 = (void *)v19; } } v23 += 112; ++v18; if ( v18 >= *((_DWORD *)v17 + 12) ) break; v4 = v17; } if ( v10 == (void *)v6 ) { if ( v10 ) operator delete(v10); return 0; } v16 = *((_DWORD *)v10 + sub_48D360(&unk_14D42DC0) % ((signed int)(v6 - (_DWORD)v10) >> 2)); if ( v10 ) operator delete(v10); return v16; } // 86FEB8: using guessed type int __security_cookie; // 4CEB70: using guessed type char var_30[32]; //----- (004CED50) -------------------------------------------------------- char __thiscall sub_4CED50(void *this) { void *v1; // esi@1 unsigned int v2; // ebx@1 unsigned int v4; // eax@18 int v5; // ecx@23 int v6; // ecx@28 int v7; // ecx@33 int v8; // ecx@38 int v9; // ecx@43 int v10; // ecx@48 int v11; // eax@52 __int16 v12; // ax@52 __int16 v13; // ax@52 __int16 v14; // ax@52 int v15; // edi@53 int v16; // eax@54 int v17; // ecx@56 char v18; // dl@57 int v19; // ecx@59 char v20; // dl@60 int v21; // ecx@62 int v22; // edx@62 char v23; // al@63 int v24; // ecx@64 int v25; // edx@64 char v26; // al@65 int v27; // ebx@67 int v28; // edi@68 int v29; // eax@69 int v30; // ecx@70 char v31; // dl@71 int v32; // ebx@77 int v33; // ecx@77 char v34; // dl@78 unsigned int v35; // ebx@79 unsigned int v36; // edi@80 int v37; // ebx@81 int v38; // eax@82 int v39; // ecx@83 unsigned int v40; // edi@88 int v41; // ebx@89 int v42; // eax@90 int v43; // ecx@91 unsigned int v44; // edi@95 int v45; // ebx@96 int v46; // eax@97 signed int v47; // ecx@98 unsigned int v48; // edx@100 unsigned int v49; // edi@107 int v50; // eax@107 int v51; // ebx@107 signed int v52; // ecx@108 signed int v53; // eax@110 int v54; // edi@137 int v55; // ecx@137 char v56; // al@138 signed int v57; // eax@141 int v58; // ecx@147 char v59; // al@148 const char *v60; // ebx@151 int v61; // eax@153 int v62; // edx@153 char v63; // cl@154 int v64; // ecx@155 int v65; // edx@155 int v66; // edi@155 char v67; // cl@156 const char *v68; // ecx@157 int v69; // edx@157 const char v70; // al@158 int v71; // ecx@159 unsigned int v72; // edi@160 int v73; // ebx@161 int v74; // eax@162 signed int v75; // ecx@165 signed int v76; // ecx@167 char v77; // dl@169 int v78; // ecx@172 bool v79; // cf@172 bool v80; // zf@172 int v81; // edx@183 void *v82; // [sp-20h] [bp-20Ch]@52 int v83; // [sp-1Ch] [bp-208h]@52 int v84; // [sp-18h] [bp-204h]@52 int v85; // [sp-14h] [bp-200h]@52 int v86; // [sp-10h] [bp-1FCh]@52 unsigned int v87; // [sp-Ch] [bp-1F8h]@2 int v88; // [sp-8h] [bp-1F4h]@2 unsigned int v89; // [sp-4h] [bp-1F0h]@1 int v90; // [sp+Ch] [bp-1E0h]@56 int v91; // [sp+10h] [bp-1DCh]@59 unsigned int v92; // [sp+14h] [bp-1D8h]@67 int v93; // [sp+18h] [bp-1D4h]@52 char v94; // [sp+1Ch] [bp-1D0h]@1 int v95; // [sp+50h] [bp-19Ch]@22 char v96; // [sp+5Ch] [bp-190h]@1 int v97; // [sp+90h] [bp-15Ch]@27 char v98; // [sp+9Ch] [bp-150h]@1 int v99; // [sp+D0h] [bp-11Ch]@47 char v100; // [sp+DCh] [bp-110h]@1 int v101; // [sp+110h] [bp-DCh]@32 char v102; // [sp+11Ch] [bp-D0h]@1 int v103; // [sp+150h] [bp-9Ch]@17 char v104; // [sp+15Ch] [bp-90h]@1 int v105; // [sp+190h] [bp-5Ch]@37 char v106; // [sp+19Ch] [bp-50h]@1 int v107; // [sp+1D0h] [bp-1Ch]@42 unsigned int v108; // [sp+1DCh] [bp-10h]@1 int v109; // [sp+1E8h] [bp-4h]@1 int v110; // [sp+1ECh] [bp+0h]@1 v108 = (unsigned int)&v110 ^ __security_cookie; v89 = (unsigned int)&v110 ^ __security_cookie; v1 = this; sub_626B20((int)&v102); v2 = 0; v109 = 0; sub_626B20((int)&v94); LOBYTE(v109) = 1; sub_626B20((int)&v96); LOBYTE(v109) = 2; sub_626B20((int)&v100); LOBYTE(v109) = 3; sub_626B20((int)&v104); LOBYTE(v109) = 4; sub_626B20((int)&v106); LOBYTE(v109) = 5; sub_626B20((int)&v98); LOBYTE(v109) = 6; if ( !sub_627480(&v102, "../9Data/Shine/PupMain.shn", 145, 70) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupMain.shn"; goto LABEL_3; } if ( !sub_627480(&v94, "../9Data/Shine/PupServer.shn", 35, 36) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupServer.shn"; goto LABEL_3; } if ( !sub_627480(&v96, "../9Data/Shine/PupMind.shn", 12, 6) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupMind.shn"; goto LABEL_3; } if ( !sub_627480(&v100, "../9Data/Shine/PupPriority.shn", 5, 5) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupPriority.shn"; goto LABEL_3; } if ( !sub_627480(&v104, "../9Data/Shine/PupCase.shn", 25, 9) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupCase.shn"; goto LABEL_3; } if ( !sub_627480(&v106, "../9Data/Shine/PupCaseDesc.shn", 615, 112) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupCaseDesc.shn"; goto LABEL_3; } if ( !sub_627480(&v98, "../9Data/Shine/PupFactorCondition.shn", 94, 17) ) { v88 = 0; v87 = (unsigned int)"Fail to read PupFactorCondition.shn"; goto LABEL_3; } if ( v103 ) v4 = *(_DWORD *)(v103 + 40); else v4 = 0; *((_DWORD *)v1 + 7) = v4; if ( !v4 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupMain.shn"; goto LABEL_3; } if ( v95 ) v5 = *(_DWORD *)(v95 + 40); else v5 = 0; *((_DWORD *)v1 + 8) = v5; if ( !v5 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupServer.shn"; goto LABEL_3; } if ( v97 ) v6 = *(_DWORD *)(v97 + 40); else v6 = 0; *((_DWORD *)v1 + 9) = v6; if ( !v6 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupMind.shn"; goto LABEL_3; } if ( v101 ) v7 = *(_DWORD *)(v101 + 40); else v7 = 0; *((_DWORD *)v1 + 10) = v7; if ( !v7 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupPriority.shn"; goto LABEL_3; } if ( v105 ) v8 = *(_DWORD *)(v105 + 40); else v8 = 0; *((_DWORD *)v1 + 11) = v8; if ( !v8 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupCase.shn"; goto LABEL_3; } if ( v107 ) v9 = *(_DWORD *)(v107 + 40); else v9 = 0; *((_DWORD *)v1 + 12) = v9; if ( !v9 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupCaseDesc.shn"; goto LABEL_3; } if ( v99 ) v10 = *(_DWORD *)(v99 + 40); else v10 = 0; *((_DWORD *)v1 + 13) = v10; if ( !v10 ) { v88 = 0; v87 = (unsigned int)"Data is Empty in PupFactorCondition.shn"; goto LABEL_3; } *(_DWORD *)v1 = unknown_libname_130(70 * v4 | -((unsigned __int8)(70 * (unsigned __int64)v4 >> 32) != 0)); *((_DWORD *)v1 + 1) = unknown_libname_130(36 * *((_DWORD *)v1 + 8) | -((unsigned __int8)(36 * (unsigned __int64)*((_DWORD *)v1 + 8) >> 32) != 0)); *((_DWORD *)v1 + 2) = unknown_libname_130(6 * *((_DWORD *)v1 + 9) | -((unsigned __int8)(6 * (unsigned __int64)*((_DWORD *)v1 + 9) >> 32) != 0)); *((_DWORD *)v1 + 3) = unknown_libname_130(5 * *((_DWORD *)v1 + 10) | -((unsigned __int8)(5 * (unsigned __int64)*((_DWORD *)v1 + 10) >> 32) != 0)); *((_DWORD *)v1 + 4) = unknown_libname_130(9 * *((_DWORD *)v1 + 11) | -((unsigned __int8)(9 * (unsigned __int64)*((_DWORD *)v1 + 11) >> 32) != 0)); *((_DWORD *)v1 + 5) = unknown_libname_130(112 * *((_DWORD *)v1 + 12) | -((unsigned __int8)(112 * (unsigned __int64)*((_DWORD *)v1 + 12) >> 32) != 0)); v11 = unknown_libname_130(17 * *((_DWORD *)v1 + 13) | -((unsigned __int8)(17 * (unsigned __int64)*((_DWORD *)v1 + 13) >> 32) != 0)); v93 = (int)&v82; *((_DWORD *)v1 + 6) = v11; sub_4244F0((int)&v82, "Pup_MinMind"); v12 = sub_62BD30((int)&unk_1325CFB8, v82, v83, v84, v85, v86, v87, v88); v93 = (int)&v82; *((_DWORD *)v1 + 14) = (unsigned __int16)v12; sub_4244F0((int)&v82, "Pup_MaxMind"); *((_DWORD *)v1 + 15) = (unsigned __int16)sub_62BD30((int)&unk_1325CFB8, v82, v83, v84, v85, v86, v87, v88); v93 = (int)&v82; sub_4244F0((int)&v82, "Pup_MinStress"); v13 = sub_62BD30((int)&unk_1325CFB8, v82, v83, v84, v85, v86, v87, v88); v93 = (int)&v82; *((_DWORD *)v1 + 16) = (unsigned __int16)v13; sub_4244F0((int)&v82, "Pup_MaxStress"); v14 = sub_62BD30((int)&unk_1325CFB8, v82, v83, v84, v85, v86, v87, v88); v93 = (int)&v82; *((_DWORD *)v1 + 17) = (unsigned __int16)v14; sub_4244F0((int)&v82, "PupCastingTime"); *((_DWORD *)v1 + 18) = (unsigned __int16)sub_62BD30((int)&unk_1325CFB8, v82, v83, v84, v85, v86, v87, v88); v93 = (int)&v82; sub_4244F0((int)&v82, "PupCoolTime"); *((_DWORD *)v1 + 19) = (unsigned __int16)sub_62BD30((int)&unk_1325CFB8, v82, v83, v84, v85, v86, v87, v88); if ( *((_DWORD *)v1 + 7) > 0u ) { v15 = 0; do { v16 = sub_626BC0((int)&v102, v2); if ( !v16 ) { v88 = v2; v87 = (unsigned int)"Null Record in PupMain.shn, Index"; goto LABEL_3; } if ( *(_DWORD *)v16 < 1u ) { v88 = *(_DWORD *)(70 * v2 + *(_DWORD *)v1); sub_639150(&unk_86DDD8, (int)"Invalid ID in PupMain.shn, Index/PupID", v2, v88); goto LABEL_4; } v17 = v16 + 4; v90 = v16 + 4; v93 = v16 + 5; do v18 = *(_BYTE *)v17++; while ( v18 ); if ( (unsigned int)(v17 - v93) < 3 ) { v88 = v2; v87 = (unsigned int)"Invalid PupIDX in PupMain.shn, Index"; goto LABEL_3; } v19 = v16 + 36; v91 = v16 + 36; v93 = v16 + 37; do v20 = *(_BYTE *)v19++; while ( v20 ); if ( (unsigned int)(v19 - v93) < 3 ) { v88 = v2; v87 = (unsigned int)"Invalid ItemIDX in PupMain.shn, Index"; goto LABEL_3; } *(_DWORD *)(v15 + *(_DWORD *)v1) = *(_DWORD *)v16; *(_WORD *)(*(_DWORD *)v1 + v15 + 68) = *(_WORD *)(v16 + 68); v21 = v90; v22 = *(_DWORD *)v1 + v15 + 4; do { v23 = *(_BYTE *)v21; *(_BYTE *)v22++ = *(_BYTE *)v21++; } while ( v23 ); *(_BYTE *)(*(_DWORD *)v1 + v15 + 35) = 0; v24 = v91; v25 = *(_DWORD *)v1 + v15 + 36; do { v26 = *(_BYTE *)v24; *(_BYTE *)v25++ = *(_BYTE *)v24++; } while ( v26 ); *(_BYTE *)(*(_DWORD *)v1 + v15 + 67) = 0; ++v2; v15 += 70; } while ( v2 < *((_DWORD *)v1 + 7) ); } v27 = 0; v92 = 0; if ( *((_DWORD *)v1 + 8) ) { v28 = 0; do { v29 = sub_626BC0((int)&v94, v27); if ( !v29 ) { v88 = v27; v87 = (unsigned int)"Null Record in PupServer.shn, Index"; goto LABEL_3; } v30 = v29; v93 = v29 + 1; do v31 = *(_BYTE *)v30++; while ( v31 ); if ( (unsigned int)(v30 - v93) < 3 ) { v88 = v27; v87 = (unsigned int)"Invalid PupIDX in PupServer.shn, Index"; goto LABEL_3; } if ( (unsigned int)*(_BYTE *)(v29 + 32) < *((_DWORD *)v1 + 14) ) { v88 = *(_BYTE *)(v29 + 32); sub_639150(&unk_86DDD8, (int)"Invalid MinMind in PupServer.shn, Index/MinMind", v27, v88); goto LABEL_4; } if ( (unsigned int)*(_BYTE *)(v29 + 33) > *((_DWORD *)v1 + 15) ) { v88 = *(_BYTE *)(v29 + 33); sub_639150(&unk_86DDD8, (int)"Invalid MaxMind in PupServer.shn, Index/MaxMind", v27, v88); goto LABEL_4; } if ( (unsigned int)*(_BYTE *)(v29 + 34) < *((_DWORD *)v1 + 16) ) { v88 = *(_BYTE *)(v29 + 34); sub_639150(&unk_86DDD8, (int)"Invalid MinStress in PupServer.shn, Index/MinStress", v27, v88); goto LABEL_4; } if ( (unsigned int)*(_BYTE *)(v29 + 35) > *((_DWORD *)v1 + 17) ) { v88 = *(_BYTE *)(v29 + 35); sub_639150(&unk_86DDD8, (int)"Invalid MaxStress in PupServer.shn, Index/MaxStress", v27, v88); goto LABEL_4; } v32 = v29; v33 = v28 + *((_DWORD *)v1 + 1); do { v34 = *(_BYTE *)v32; *(_BYTE *)v33++ = *(_BYTE *)v32++; } while ( v34 ); v35 = v92; *(_BYTE *)(v28 + *((_DWORD *)v1 + 1) + 31) = 0; *(_BYTE *)(v28 + *((_DWORD *)v1 + 1) + 32) = *(_BYTE *)(v29 + 32); *(_BYTE *)(v28 + *((_DWORD *)v1 + 1) + 33) = *(_BYTE *)(v29 + 33); *(_BYTE *)(v28 + *((_DWORD *)v1 + 1) + 34) = *(_BYTE *)(v29 + 34); *(_BYTE *)(v28 + *((_DWORD *)v1 + 1) + 35) = *(_BYTE *)(v29 + 35); v27 = v35 + 1; v28 += 36; v92 = v27; } while ( (unsigned int)v27 < *((_DWORD *)v1 + 8) ); } v36 = 0; if ( *((_DWORD *)v1 + 9) ) { v37 = 0; do { v38 = sub_626BC0((int)&v96, v36); if ( !v38 ) { v88 = v36; v87 = (unsigned int)"Null Record in PupMind.shn, Index"; goto LABEL_3; } v39 = *(_DWORD *)v38; if ( *(_DWORD *)v38 >= 4 || v39 < 0 ) { v88 = v36; v87 = (unsigned int)"Invalid PupMindType in PupMind.shn, Index"; goto LABEL_3; } if ( (unsigned int)*(_BYTE *)(v38 + 4) < *((_DWORD *)v1 + 14) ) { v88 = *(_BYTE *)(v38 + 4); sub_639150(&unk_86DDD8, (int)"Invalid MinMind in PupMind.shn, Index/MinMind", v36, v88); goto LABEL_4; } if ( (unsigned int)*(_BYTE *)(v38 + 5) > *((_DWORD *)v1 + 15) ) { v88 = *(_BYTE *)(v38 + 5); sub_639150(&unk_86DDD8, (int)"Invalid MaxMind in PupMind.shn, Index/MaxMind", v36, v88); goto LABEL_4; } *(_DWORD *)(v37 + *((_DWORD *)v1 + 2)) = v39; *(_BYTE *)(v37 + *((_DWORD *)v1 + 2) + 4) = *(_BYTE *)(v38 + 4); *(_BYTE *)(v37 + *((_DWORD *)v1 + 2) + 5) = *(_BYTE *)(v38 + 5); ++v36; v37 += 6; } while ( v36 < *((_DWORD *)v1 + 9) ); } v40 = 0; if ( *((_DWORD *)v1 + 10) ) { v41 = 0; do { v42 = sub_626BC0((int)&v100, v40); if ( !v42 ) { v88 = v40; v87 = (unsigned int)"Null Record in PupPriority.shn, Index"; goto LABEL_3; } v43 = *(_DWORD *)v42; if ( *(_DWORD *)v42 >= 5 || v43 < 0 ) { v88 = v40; v87 = (unsigned int)"Invalid PupPriorityType in PupPriority.shn, Index"; goto LABEL_3; } if ( (unsigned int)*(_BYTE *)(v42 + 4) > *((_DWORD *)v1 + 10) ) { v88 = v40; v87 = (unsigned int)"Invalid PriorityNum in PupPriority.shn, Index"; goto LABEL_3; } *(_DWORD *)(v41 + *((_DWORD *)v1 + 3)) = v43; *(_BYTE *)(v41 + *((_DWORD *)v1 + 3) + 4) = *(_BYTE *)(v42 + 4); ++v40; v41 += 5; } while ( v40 < *((_DWORD *)v1 + 10) ); } v44 = 0; if ( *((_DWORD *)v1 + 11) ) { v45 = 0; do { v46 = sub_626BC0((int)&v104, v44); if ( !v46 ) { v88 = v44; v87 = (unsigned int)"Null Record in PupCase.shn, Index"; goto LABEL_3; } v47 = *(_DWORD *)(v46 + 4); if ( v47 >= 4 || v47 < 0 ) { v88 = v44; v87 = (unsigned int)"Invalid PupMindType in PupCase.shn, Index"; goto LABEL_3; } v48 = *(_BYTE *)(v46 + 8); if ( v48 < *((_DWORD *)v1 + 16) || v48 > *((_DWORD *)v1 + 17) ) { v88 = *(_BYTE *)(v46 + 8); sub_639150(&unk_86DDD8, (int)"Invalid StressNum in PupCase.shn, Index/StressNum", v44, v88); goto LABEL_4; } if ( *(_DWORD *)v46 >= 41 || *(_DWORD *)v46 < 0 ) { v88 = v44; v87 = (unsigned int)"Invalid PupCaseType in PupCase.shn, Index"; goto LABEL_3; } *(_DWORD *)(v45 + *((_DWORD *)v1 + 4) + 4) = v47; *(_BYTE *)(v45 + *((_DWORD *)v1 + 4) + 8) = *(_BYTE *)(v46 + 8); *(_DWORD *)(v45 + *((_DWORD *)v1 + 4)) = *(_DWORD *)v46; ++v44; v45 += 9; } while ( v44 < *((_DWORD *)v1 + 11) ); } v92 = 0; if ( *((_DWORD *)v1 + 12) ) { v90 = 0; do { v49 = v92; v50 = sub_626BC0((int)&v106, v92); v51 = v50; v91 = v50; if ( !v50 ) { v88 = v49; v87 = (unsigned int)"Null Record in PupCaseDesc.shn, Index"; goto LABEL_3; } v52 = *(_DWORD *)v50; v93 = v52; if ( v52 >= 5 || v52 < 0 ) { v88 = v49; v87 = (unsigned int)"Invalid PupPriorityType in PupCaseDesc.shn, Index"; goto LABEL_3; } v53 = *(_DWORD *)(v50 + 4); if ( v53 >= 41 || v53 < 0 ) { v88 = v49; v87 = (unsigned int)"Invalid PupCaseType in PupCaseDesc.shn, Index"; goto LABEL_3; } if ( v52 == 4 ) { if ( v53 == 40 ) { v88 = v49; v87 = (unsigned int)"Invalid PupCaseType(PPT_Idle & ALL_PUP_CASE) in PupCaseDesc.shn, Index"; goto LABEL_3; } } else { if ( v53 != 40 ) { v88 = v49; v87 = (unsigned int)"Invalid PupCaseType(not PPT_Idle & not ALL_PUP_CASE) in PupCaseDesc.shn, Index"; goto LABEL_3; } } v54 = v51 + 8; v55 = v51 + 8; do v56 = *(_BYTE *)v55++; while ( v56 ); if ( (unsigned int)(v55 - (v51 + 9)) < 3 && strcmp("-", (const char *)(v51 + 8)) ) { v88 = v92; v87 = (unsigned int)"Invalid PupIDX in PupCaseDesc.shn, Index"; goto LABEL_3; } v57 = *(_DWORD *)(v51 + 40); if ( v57 >= 10 || v57 < 0 ) { v88 = v92; v87 = (unsigned int)"Invalid PupAIType in PupCaseDesc.shn, Index"; goto LABEL_3; } if ( v93 == 4 ) { if ( v57 == 9 ) { v88 = v92; v87 = (unsigned int)"Invalid PupAIType(PPT_Idle & PAI_SCRIPT) in PupCaseDesc.shn, Index"; goto LABEL_3; } } else { if ( v57 != 9 ) { v88 = v92; v87 = (unsigned int)"Invalid PupAIType(not PPT_Idle & not PAI_SCRIPT) in PupCaseDesc.shn, Index"; goto LABEL_3; } } v58 = v51 + 44; do v59 = *(_BYTE *)v58++; while ( v59 ); if ( (unsigned int)(v58 - (v51 + 45)) < 3 && strcmp("-", (const char *)(v51 + 44)) ) { v88 = v92; v87 = (unsigned int)"Invalid SM_Inx in PupCaseDesc.shn, Index"; goto LABEL_3; } v60 = (const char *)(v51 + 80); if ( strlen(v60) < 3 && strcmp("-", v60) ) { v88 = v92; v87 = (unsigned int)"Invalid SoundFile in PupCaseDesc.shn, Index"; goto LABEL_3; } v61 = v90; *(_DWORD *)(v90 + *((_DWORD *)v1 + 5)) = v93; *(_DWORD *)(v61 + *((_DWORD *)v1 + 5) + 4) = *(_DWORD *)(v91 + 4); v62 = v61 + *((_DWORD *)v1 + 5) + 8; do { v63 = *(_BYTE *)v54; *(_BYTE *)v62++ = *(_BYTE *)v54++; } while ( v63 ); *(_BYTE *)(v61 + *((_DWORD *)v1 + 5) + 39) = 0; v64 = v91; *(_DWORD *)(v61 + *((_DWORD *)v1 + 5) + 40) = *(_DWORD *)(v91 + 40); v65 = v64 + 44; v66 = v61 + *((_DWORD *)v1 + 5) + 44; do { v67 = *(_BYTE *)v65; *(_BYTE *)v66++ = *(_BYTE *)v65++; } while ( v67 ); *(_BYTE *)(v61 + *((_DWORD *)v1 + 5) + 75) = 0; *(_DWORD *)(v61 + *((_DWORD *)v1 + 5) + 76) = *(_DWORD *)(v91 + 76); v68 = v60; v69 = v61 + *((_DWORD *)v1 + 5) + 80; do { v70 = *v68; *(_BYTE *)v69++ = *v68++; } while ( v70 ); v71 = v90; *(_BYTE *)(v90 + *((_DWORD *)v1 + 5) + 111) = 0; ++v92; v90 = v71 + 112; } while ( v92 < *((_DWORD *)v1 + 12) ); } v72 = 0; if ( !*((_DWORD *)v1 + 13) ) { LABEL_186: LOBYTE(v109) = 5; sub_626C10((int)&v98); LOBYTE(v109) = 4; sub_626C10((int)&v106); LOBYTE(v109) = 3; sub_626C10((int)&v104); LOBYTE(v109) = 2; sub_626C10((int)&v100); LOBYTE(v109) = 1; sub_626C10((int)&v96); LOBYTE(v109) = 0; sub_626C10((int)&v94); v109 = -1; sub_626C10((int)&v102); return 1; } v73 = 0; while ( 1 ) { v74 = sub_626BC0((int)&v98, v72); if ( !v74 ) { v88 = v72; v87 = (unsigned int)"Null Record in PupFactorCondition.shn, Index"; goto LABEL_3; } if ( *(_DWORD *)v74 >= 4 || *(_DWORD *)v74 < 0 ) break; v75 = *(_DWORD *)(v74 + 4); if ( v75 >= 17 || v75 < 0 ) { v88 = v72; v87 = (unsigned int)"Invalid PupFactorConditionType in PupFactorCondition.shn, Index"; goto LABEL_3; } v76 = *(_DWORD *)(v74 + 8); if ( v76 >= 2 || v76 < 0 ) { v88 = v72; v87 = (unsigned int)"Invalid PupFactorType in PupFactorCondition.shn, Index"; goto LABEL_3; } v77 = *(_BYTE *)(v74 + 12); if ( v77 && v77 != 1 ) { v88 = v72; v87 = (unsigned int)"Invalid IsMinus in PupFactorCondition.shn, Index"; goto LABEL_3; } if ( v76 ) { if ( v76 != 1 ) goto LABEL_185; v81 = 1000 * (*((_DWORD *)v1 + 15) - *((_DWORD *)v1 + 14)); v79 = *(_DWORD *)(v74 + 13) < (unsigned int)v81; v80 = *(_DWORD *)(v74 + 13) == v81; } else { v78 = 1000 * (*((_DWORD *)v1 + 17) - *((_DWORD *)v1 + 16)); v79 = *(_DWORD *)(v74 + 13) < (unsigned int)v78; v80 = *(_DWORD *)(v74 + 13) == v78; } if ( !(v79 | v80) ) { v88 = v72; v87 = (unsigned int)"Invalid Value in PupFactorCondition.shn, Index"; goto LABEL_3; } LABEL_185: *(_DWORD *)(v73 + *((_DWORD *)v1 + 6)) = *(_DWORD *)v74; *(_DWORD *)(v73 + *((_DWORD *)v1 + 6) + 4) = *(_DWORD *)(v74 + 4); *(_DWORD *)(v73 + *((_DWORD *)v1 + 6) + 8) = *(_DWORD *)(v74 + 8); *(_BYTE *)(v73 + *((_DWORD *)v1 + 6) + 12) = *(_BYTE *)(v74 + 12); *(_DWORD *)(v73 + *((_DWORD *)v1 + 6) + 13) = *(_DWORD *)(v74 + 13); ++v72; v73 += 17; if ( v72 >= *((_DWORD *)v1 + 13) ) goto LABEL_186; } v88 = v72; v87 = (unsigned int)"Invalid PupMindType in PupFactorCondition.shn, Index"; LABEL_3: sub_639100(&unk_86DDD8, v87, v88); LABEL_4: LOBYTE(v109) = 5; sub_626C10((int)&v98); LOBYTE(v109) = 4; sub_626C10((int)&v106); LOBYTE(v109) = 3; sub_626C10((int)&v104); LOBYTE(v109) = 2; sub_626C10((int)&v100); LOBYTE(v109) = 1; sub_626C10((int)&v96); LOBYTE(v109) = 0; sub_626C10((int)&v94); v109 = -1; sub_626C10((int)&v102); return 0; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004CFAD0) -------------------------------------------------------- char *__stdcall sub_4CFAD0(int a1, const char *a2) { size_t v2; // eax@1 size_t v3; // esi@1 char *result; // eax@2 v2 = strlen(a2); v3 = v2; if ( v2 >= 0x11 ) { result = strncpy((char *)(a1 + 18), a2, 0x10u); *(_BYTE *)(a1 + 34) = 0; } else { result = strncpy((char *)(a1 + 18), a2, v2); *(_BYTE *)(v3 + a1 + 18) = 0; } return result; } //----- (004CFB30) -------------------------------------------------------- char *__stdcall sub_4CFB30(char *a1, int a2) { int v2; // edx@2 int v3; // eax@2 int v4; // ecx@2 char v6[4]; // [sp+4h] [bp-14h]@2 int v7; // [sp+8h] [bp-10h]@2 int v8; // [sp+Ch] [bp-Ch]@2 int v9; // [sp+10h] [bp-8h]@2 unsigned int v10; // [sp+14h] [bp-4h]@1 int v11; // [sp+18h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; if ( a2 ) { *((_DWORD *)a1 + 3) = 0; *((_DWORD *)a1 + 2) = 0; *((_DWORD *)a1 + 1) = 0; *(_DWORD *)a1 = 0; strncpy(a1, (const char *)(a2 + 18), 0x10u); } else { v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, byte_6A492E, 0x10u); v2 = v7; v3 = v8; *(_DWORD *)a1 = *(_DWORD *)v6; v4 = v9; *((_DWORD *)a1 + 1) = v2; *((_DWORD *)a1 + 2) = v3; *((_DWORD *)a1 + 3) = v4; } return a1; } // 86FEB8: using guessed type int __security_cookie; //----- (004CFBB0) -------------------------------------------------------- signed int __stdcall sub_4CFBB0(int a1) { signed int result; // eax@2 if ( a1 ) result = *(_DWORD *)(a1 + 10); else result = -1; return result; } //----- (004CFBD0) -------------------------------------------------------- char __stdcall sub_4CFBD0(int a1, int a2) { unsigned int v2; // eax@1 int v3; // eax@2 int v4; // esi@2 int v5; // esi@6 int v6; // eax@8 int v7; // edi@8 int v8; // edi@16 int v9; // edi@22 int v10; // eax@22 void *v11; // eax@23 int v12; // ebx@23 int v13; // eax@24 int v14; // eax@26 int v15; // eax@27 int v16; // ebx@27 int v17; // eax@28 int v18; // eax@32 int v19; // eax@33 int v20; // eax@34 bool v21; // zf@35 int v23; // [sp+4h] [bp-1Ch]@25 char v24; // [sp+Ch] [bp-14h]@33 unsigned int v25; // [sp+1Ch] [bp-4h]@1 int v26; // [sp+20h] [bp+0h]@1 v2 = (unsigned int)&v26 ^ __security_cookie; v25 = (unsigned int)&v26 ^ __security_cookie; if ( a1 ) { v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); v4 = v3; if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v5 = __RTDynamicCast(v4, 0, &off_84BF24, &off_84BF50, 0); if ( v5 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3644))(v5); v7 = v6; if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) == 12 ) { if ( __RTDynamicCast(v7, 0, &off_84BF24, &off_84BEFC, 0) ) { LOBYTE(v2) = 32; if ( *(_WORD *)(a1 + 2) == 13344 ) { v8 = v5 + 161784; if ( v5 != -161784 ) { if ( *(_DWORD *)(v5 + 161820) != -1 ) { v2 = *(_DWORD *)v8; if ( *(_DWORD *)v8 == 2 || v2 == 8 || v2 == 4 ) { if ( v5 == -36484 ) { v9 = vFFFF7180; v10 = (*(int (__thiscall **)(signed int))(vFFFF717C + 836))(-36484); LOBYTE(v2) = (unsigned int)sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Player Inventory is Null", v9, v10); } else { v11 = (void *)(**(int (__stdcall ***)(_DWORD))(v5 + 36484))(*(_WORD *)(v5 + 161804)); v12 = (int)v11; if ( v11 ) { v23 = (int)sub_5CF620(v11); if ( v23 ) { v15 = sub_43BBE0(v12); v16 = v15; if ( v15 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 40))(v15) == 36 ) { v2 = __RTDynamicCast(v16, 0, &off_84BEB8, &off_84BEDC, 0); if ( !v2 ) return v2; if ( *(_DWORD *)(a1 + 6) != *(_DWORD *)(v23 + 10) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); LOBYTE(v2) = (unsigned int)sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Not Item class invalid", *(_WORD *)(v5 + 161804), v18); return v2; } sub_4CFB30(&v24, v23); LOBYTE(v19) = sub_455EB0(a1 + 10, (int)&v24); if ( !v19 ) { *(_DWORD *)(v5 + 161840) = 1000 * *(_BYTE *)(a1 + 26); *(_DWORD *)(v5 + 161844) = 1000 * *(_BYTE *)(a1 + 27); LOBYTE(v2) = 0; v21 = *(_DWORD *)v8 == 4; *(_DWORD *)(v5 + 161848) = 0; *(_DWORD *)(v5 + 161852) = 0; *(_DWORD *)v8 = !v21 + 5; return v2; } } v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); LOBYTE(v2) = (unsigned int)sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Item class invalid", *(_WORD *)(v5 + 161804), v20); return v2; } v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); LOBYTE(v2) = (unsigned int)sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Item attribute data null", *(_WORD *)(v5 + 161804), v17); } else { v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); LOBYTE(v2) = (unsigned int)sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Item total info data null", *(_WORD *)(v5 + 161804), v14); } } else { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); LOBYTE(v2) = (unsigned int)sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Inven cell data null", *(_WORD *)(v5 + 161804), v13); } } } } } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : ERR_PET_LOAD_INFO_DB_ERR", 0); LOBYTE(v2) = sub_4D1E70(v5); } } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Pet Type Casting Error", *(_WORD *)(a1 + 4)); } } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Not Pet Handle", *(_WORD *)(a1 + 4)); } } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Error get pet", *(_WORD *)(a1 + 4)); } } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Player Type Casting Error", *(_WORD *)(a1 + 4)); } } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Not Player Handle", *(_WORD *)(a1 + 4)); } } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_LOAD_INFO_DB_ACK : Error during get player", *(_WORD *)(a1 + 4)); } } return v2; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (004CFFD0) -------------------------------------------------------- void __thiscall sub_4CFFD0(void *this, int a2, __int16 a3) { void *v3; // esi@1 void *v4; // eax@2 int v5; // eax@4 v3 = this; if ( a2 != -1 ) { v4 = off_849C18; *(_WORD *)off_849C18 = -11256; *((_DWORD *)v4 + 1) = a2; *((_WORD *)v4 + 1) = a3; if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_SET_NAME_ACK : Packet Too Long", 8); } } } //----- (004D0040) -------------------------------------------------------- void __thiscall sub_4D0040(void *this, int a2, __int16 a3) { void *v3; // esi@1 void *v4; // eax@2 int v5; // eax@4 v3 = this; if ( a2 != -1 ) { v4 = off_849C18; *(_WORD *)off_849C18 = -11254; *((_DWORD *)v4 + 1) = a2; *((_WORD *)v4 + 1) = a3; if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_SET_NAME_CANCEL_ACK : Packet Too Long", 8); } } } //----- (004D00B0) -------------------------------------------------------- int __thiscall sub_4D00B0(void *this, __int16 a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int result; // eax@1 void *v8; // eax@2 int v9; // ST04_4@2 int v10; // eax@2 char v11; // [sp+8h] [bp-18h]@2 int v12; // [sp+1Ch] [bp-4h]@2 v6 = this; result = 65535; if ( a2 != -1 ) { v8 = off_849C18; *(_WORD *)off_849C18 = -11245; *((_WORD *)v8 + 1) = a2; *((_DWORD *)v8 + 1) = a3; *((_DWORD *)v8 + 2) = a4; *((_DWORD *)v8 + 3) = a5; *((_DWORD *)v8 + 4) = a6; sub_4287B0(&v11, &off_849C18, 20); v9 = *(_DWORD *)((char *)v6 + 102); v12 = 0; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v6, v10, v9, 0, 0, (int)&v11, 1, 65535); v12 = -1; result = sub_428A70(&v11); } return result; } //----- (004D0170) -------------------------------------------------------- int __thiscall sub_4D0170(void *this, __int16 a2, int a3, char a4) { void *v4; // esi@1 int result; // eax@1 void *v6; // eax@2 int v7; // eax@4 v4 = this; result = 65535; if ( a2 != -1 ) { v6 = off_849C18; *(_WORD *)off_849C18 = -11259; *((_WORD *)v6 + 1) = a2; *((_DWORD *)v6 + 1) = a3; *((_BYTE *)v6 + 8) = a4; if ( sub_4C81E0(&off_849C18, 9) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); *((_DWORD *)v4 + 40447) = 2; } else { result = (int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_ASK_NEW_NAME_REQ : Packet Too Long", 9); *((_DWORD *)v4 + 40447) = 2; } } return result; } //----- (004D0200) -------------------------------------------------------- int __thiscall sub_4D0200(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // ecx@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_ASK_NEW_NAME_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_ASK_NEW_NAME_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( *(_WORD *)(a2 + 2) == 13504 ) { if ( *(_WORD *)(a2 + 4) == *((_WORD *)v4 + 80908) ) { if ( *((_DWORD *)v4 + 40447) == 2 ) { v5 = *((_DWORD *)v4 + 40446); if ( v5 == 5 || v5 == 6 ) { if ( *((_WORD *)v4 + 80902) != -1 && *((_DWORD *)v4 + 40453) != -1 && *((_DWORD *)v4 + 40455) != -1 ) *((_DWORD *)v4 + 40447) = 3; } } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_ASK_NEW_NAME_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004D02F0) -------------------------------------------------------- int __thiscall sub_4D02F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // ax@2 int v6; // eax@5 void *v7; // eax@10 int v8; // ebx@10 int v9; // eax@15 int v10; // ebx@15 int v11; // ST0C_4@21 int v13; // [sp-Ch] [bp-2Ch]@11 int v14; // [sp-8h] [bp-28h]@11 int v15; // [sp-4h] [bp-24h]@11 int v16; // [sp-4h] [bp-24h]@12 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || (v5 = *(_WORD *)(a2 + 2), v5 != *((_WORD *)v4 + 80908)) || v5 == -1 || *((_DWORD *)v4 + 40447) != 3 || (v6 = *((_DWORD *)v4 + 40446), v6 != 5) && v6 != 6 || *((_WORD *)v4 + 80902) == -1 || *((_DWORD *)v4 + 40453) == -1 || *((_DWORD *)v4 + 40455) == -1 ) { --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ"; return sub_467660((int)&unk_D020420, v16); } v7 = (void *)(*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *((_WORD *)v4 + 80902)); v8 = (int)v7; if ( v7 ) { if ( sub_5CF620(v7) ) { v9 = sub_43BBE0(v8); v10 = v9; if ( v9 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 40))(v9) == 36 ) { if ( __RTDynamicCast(v10, 0, &off_84BEB8, &off_84BEDC, 0) ) { v11 = *((_DWORD *)v4 + 40453); *((_DWORD *)v4 + 40447) = 4; sub_4D0040(v4, v11, 13520); --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ"; return sub_467660((int)&unk_D020420, v16); } v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v14 = *((_WORD *)v4 + 80902); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ : Item class type casting fail"; } else { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v14 = *((_WORD *)v4 + 80902); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ : Item class invalid"; } } else { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v14 = *((_WORD *)v4 + 80902); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ : Item attribute data null"; } } else { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v14 = *((_WORD *)v4 + 80902); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ : Item total info data null"; } } else { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v14 = *((_WORD *)v4 + 80902); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ : Inven cell data null"; } sub_639150(&unk_86DDD8, v13, v14, v15); --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_CANCEL_REQ"; return sub_467660((int)&unk_D020420, v16); } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); //----- (004D0520) -------------------------------------------------------- FILE *__thiscall sub_4D0520(int this, unsigned __int8 a2, unsigned __int8 a3) { __int16 v3; // di@1 FILE *result; // eax@1 unsigned __int8 v5; // bl@3 unsigned __int8 v6; // dl@7 void *v7; // eax@11 int v8; // eax@13 v3 = *(_WORD *)(this + 4); result = (FILE *)65535; if ( v3 != -1 && *(_DWORD *)(this + 161820) != -1 ) { v5 = a2; if ( a2 >= byte_1325CC98 ) { if ( a2 > byte_1325CC9C ) v5 = byte_1325CC9C; } else { v5 = byte_1325CC98; } v6 = a3; if ( a3 >= byte_1325CCA0 ) { if ( a3 > byte_1325CCA4 ) v6 = byte_1325CCA4; } else { v6 = byte_1325CCA0; } v7 = off_849C18; *(_WORD *)off_849C18 = -11263; *((_WORD *)v7 + 1) = v3; *((_DWORD *)v7 + 1) = *(_DWORD *)(this + 161820); *((_BYTE *)v7 + 8) = v5; *((_BYTE *)v7 + 9) = v6; if ( sub_4C81E0(&off_849C18, 10) ) { v8 = sub_428750((int)&dword_14D16430); result = (FILE *)sub_4C7EC0(&off_849C18, v8); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_SET_TENDENCY_DB_REQ : Packet Too Long", 10); } } return result; } // 1325CC98: using guessed type char byte_1325CC98; // 1325CC9C: using guessed type char byte_1325CC9C; // 1325CCA0: using guessed type char byte_1325CCA0; // 1325CCA4: using guessed type char byte_1325CCA4; // 14D16430: using guessed type int dword_14D16430; //----- (004D05F0) -------------------------------------------------------- int __thiscall sub_4D05F0(int this, char *a2) { __int16 v2; // di@1 int result; // eax@1 char *v4; // esi@3 char *v5; // eax@3 char v6; // dl@4 void *v7; // eax@6 int v8; // eax@8 char *v9; // [sp+Ch] [bp+8h]@3 v2 = *(_WORD *)(this + 4); result = 65535; if ( v2 != -1 ) { if ( *(_DWORD *)(this + 161820) != -1 ) { v4 = a2; v5 = a2; v9 = a2 + 1; do v6 = *v5++; while ( v6 ); result = v5 - v9; if ( (unsigned int)result >= 4 ) { v7 = off_849C18; *(_WORD *)off_849C18 = -11261; *((_WORD *)v7 + 1) = v2; *((_DWORD *)v7 + 1) = *(_DWORD *)(this + 161820); *((_DWORD *)v7 + 5) = 0; *((_DWORD *)v7 + 4) = 0; *((_DWORD *)v7 + 3) = 0; *((_DWORD *)v7 + 2) = 0; strncpy((char *)v7 + 8, v4, 0x10u); if ( sub_4C81E0(&off_849C18, 24) ) { v8 = sub_428750((int)&dword_14D16430); result = sub_4C7EC0(&off_849C18, v8); } else { result = (int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_SET_NAME_DB_REQ : Packet Too Long", 24); } } } } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (004D06C0) -------------------------------------------------------- FILE *__thiscall sub_4D06C0(int this) { __int16 v1; // dx@1 FILE *result; // eax@1 void *v3; // eax@3 int v4; // eax@5 v1 = *(_WORD *)(this + 4); result = (FILE *)65535; if ( v1 != -1 && *(_DWORD *)(this + 161820) != -1 ) { v3 = off_849C18; *(_WORD *)off_849C18 = -11253; *((_WORD *)v3 + 1) = v1; *((_DWORD *)v3 + 1) = *(_DWORD *)(this + 161820); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); result = (FILE *)sub_4C7EC0(&off_849C18, v4); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_LOAD_INFO_DB_REQ : Packet Too Long", 8); } } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (004D0730) -------------------------------------------------------- void __stdcall sub_4D0730(int a1, int a2) { int v2; // ebx@1 int v3; // eax@2 int v4; // esi@2 int v5; // esi@6 int v6; // eax@8 int v7; // edi@8 int v8; // edi@21 int v9; // eax@21 void *v10; // eax@22 int v11; // ebx@22 int v12; // eax@23 int v13; // eax@25 int v14; // eax@26 int v15; // eax@27 int v16; // eax@29 int v17; // ST0C_4@31 int v18; // [sp+Ch] [bp-4h]@26 v2 = a1; if ( a1 ) { v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); v4 = v3; if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v5 = __RTDynamicCast(v4, 0, &off_84BF24, &off_84BF50, 0); if ( v5 ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3644))(v5); v7 = v6; if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1232))(v6) == 12 ) { if ( __RTDynamicCast(v7, 0, &off_84BF24, &off_84BEFC, 0) ) { if ( *(_WORD *)(v2 + 2) == 13336 ) { if ( v5 != -161784 && *(_DWORD *)(v5 + 161820) != -1 && (*(_DWORD *)(v5 + 161784) == 5 || *(_DWORD *)(v5 + 161784) == 6) ) { if ( v5 == -36484 ) { v8 = vFFFF7180; v9 = (*(int (__thiscall **)(_DWORD))(vFFFF717C + 836))(-36484); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Player Inventory is Null", v8, v9); } else { v10 = (void *)(**(int (__stdcall ***)(_DWORD))(v5 + 36484))(*(_WORD *)(v5 + 161804)); v11 = (int)v10; if ( v10 ) { if ( sub_5CF620(v10) ) { v14 = sub_43BBE0(v11); v18 = v14; if ( v14 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v14 + 40))(v14) == 36 ) { if ( __RTDynamicCast(v18, 0, &off_84BEB8, &off_84BEDC, 0) ) { v17 = *(_DWORD *)(v5 + 161812); *(_DWORD *)(v5 + 161788) = 4; sub_4CFFD0((void *)v5, v17, 13520); sub_4D00B0( (void *)v5, *(_WORD *)(v5 + 161816), *(_DWORD *)(v5 + 161824), *(_DWORD *)(v5 + 161828), *(_DWORD *)(v5 + 161832), *(_DWORD *)(v5 + 161836)); LOWORD(a1) = ((a1 & 0x3FF | 0x2400) ^ *(_WORD *)(v5 + 161804)) & 0x3FF ^ (a1 & 0x3FF | 0x2400); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1540))( v5, &a1, v11, &a1); } } else { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Item class invalid", *(_WORD *)(v5 + 161804), v16); } } else { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Item attribute data null", *(_WORD *)(v5 + 161804), v15); } } else { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Item total info data null", *(_WORD *)(v5 + 161804), v13); } } else { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Inven cell data null", *(_WORD *)(v5 + 161804), v12); } } } } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : ERR_PET_SET_NAME_DB_ERR", 0); sub_4D1E70(v5); } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : Pet Type Casting Error", *(_WORD *)(v2 + 4)); } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : Not Pet Handle", *(_WORD *)(v2 + 4)); } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : Error get pet", *(_WORD *)(v2 + 4)); } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : Player Type Casting Error", *(_WORD *)(v2 + 4)); } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : Not Player Handle", *(_WORD *)(v2 + 4)); } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_SET_NAME_DB_ACK : Error during get player", *(_WORD *)(v2 + 4)); } } } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (004D0A80) -------------------------------------------------------- int __thiscall sub_4D0A80(void *this, __int16 a2, const char *a3) { void *v3; // eax@1 char *v4; // eax@1 char v5; // dl@2 int v6; // eax@3 size_t v7; // ecx@3 char *v8; // eax@5 char v9; // cl@6 int v10; // eax@7 size_t v11; // edx@7 int v12; // eax@11 void *v14; // [sp+10h] [bp-114h]@1 char v15; // [sp+14h] [bp-110h]@1 _BYTE v16[3]; // [sp+15h] [bp-10Fh]@3 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_USE_ITEM_FAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_USE_ITEM_FAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = -11247; v18 = 0; *((_WORD *)v3 + 1) = a2; memset(&v15, 0, 0x100u); v4 = &v15; memcpy(&v15, "ShineObjectClass::ShinePlayer::", 0x20u); do v5 = *v4++; while ( v5 ); v6 = v4 - v16; v7 = strlen(a3); if ( (signed int)v7 > 255 - v6 ) v7 = 255 - v6; strncat(&v15, a3, v7); v8 = &v15; do v9 = *v8++; while ( v9 ); v10 = v8 - v16; v11 = 18; if ( 255 - v10 < 18 ) v11 = 255 - v10; strncat(&v15, " : Packet Too Long", v11); if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v14 + 764))(v14); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v14, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)&v15, 4); } --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Send_NC_PET_USE_ITEM_FAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004D0C40) -------------------------------------------------------- int __thiscall sub_4D0C40(void *this) { void *v1; // esi@1 int v2; // eax@1 void *v3; // edi@5 int v4; // eax@7 int v6; // [sp-4h] [bp-20h]@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::sp_PetLinkResummonInfo_Save2World"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::sp_PetLinkResummonInfo_Save2World"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 40446); if ( v2 != 5 && v2 != 6 && v2 ) { --dword_750CB8; v6 = (int)"ShinePlayer::sp_PetLinkResummonInfo_Save2World"; } else { v3 = off_849C18; *(_WORD *)off_849C18 = 16435; *(_DWORD *)((char *)v3 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); *((_BYTE *)v3 + 6) = *((_BYTE *)v1 + 161856); *(_DWORD *)((char *)v3 + 7) = *((_DWORD *)v1 + 40466); *(_DWORD *)((char *)v3 + 11) = *((_DWORD *)v1 + 40467); *(_WORD *)((char *)v3 + 15) = *((_WORD *)v1 + 80936); *(_DWORD *)((char *)v3 + 17) = *((_DWORD *)v1 + 40469); *(_DWORD *)((char *)v3 + 21) = *((_DWORD *)v1 + 40470); if ( sub_4C81E0(&off_849C18, 25) ) { v4 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetLinkResummonInfo_Save2World : Packet Too Long", 25); } --dword_750CB8; v6 = (int)"ShinePlayer::sp_PetLinkResummonInfo_Save2World"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (004D0D90) -------------------------------------------------------- void __stdcall sub_4D0D90(int a1, int a2) { int v2; // ebx@1 int v3; // esi@4 int v4; // esi@7 int v5; // edi@8 int v6; // edi@11 int v7; // edi@16 int v8; // eax@16 void *v9; // eax@17 int v10; // ebx@17 int v11; // eax@18 int v12; // eax@20 int v13; // eax@21 int v14; // ebx@21 int v15; // eax@22 int v16; // eax@24 void *v17; // [sp+4h] [bp-4h]@19 int v18; // [sp+10h] [bp+8h]@10 v2 = a1; if ( a1 ) { if ( *(_WORD *)(a1 + 2) == 13320 ) { v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v4 = __RTDynamicCast(v3, 0, &off_84BF24, &off_84BF50, 0); if ( v4 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3644))(v4); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1232))(v5) == 12 ) { v18 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BEFC, 0); if ( v18 ) { v6 = v4 + 161784; if ( v4 != -161784 ) { if ( *(_DWORD *)(v4 + 161820) == -1 ) { if ( *(_WORD *)(v2 + 2) == 13320 ) { *(_DWORD *)(v4 + 161820) = *(_DWORD *)(v2 + 6); sub_4D06C0(v4); if ( *(_DWORD *)v6 == 3 ) { if ( v4 == -36484 ) { v7 = vFFFF7180; v8 = (*(int (__thiscall **)(_DWORD))(vFFFF717C + 836))(-36484); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Player Inventory is Null", v7, v8); } else { v9 = (void *)(**(int (__stdcall ***)(_DWORD))(v4 + 36484))(*(_WORD *)(v4 + 161804)); v10 = (int)v9; if ( v9 ) { v17 = sub_5CF620(v9); if ( v17 ) { v13 = sub_43BBE0(v10); v14 = v13; if ( v13 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v13 + 40))(v13) == 36 ) { if ( __RTDynamicCast(v14, 0, &off_84BEB8, &off_84BEDC, 0) ) { sub_44A180(v18, *(_DWORD *)(v4 + 161820)); *(_DWORD *)((char *)v17 + 10) = *(_DWORD *)(v4 + 161820); sub_4D2AC0((void *)v4); *(_DWORD *)v6 = 4; } } else { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Item class invalid", *(_WORD *)(v4 + 161804), v16); } } else { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Item attribute data null", *(_WORD *)(v4 + 161804), v15); } } else { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Item total info data null", *(_WORD *)(v4 + 161804), v12); } } else { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); sub_639150( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Inven cell data null", *(_WORD *)(v4 + 161804), v11); } } } } else { *(_DWORD *)(v4 + 161820) = -1; } } } } } } } } } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : Error during get player", *(_WORD *)(a1 + 4)); } } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_PET_CREATE_DB_ACK : ERR_PET_CREATE_DB_ERR", 0); } } } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (004D1020) -------------------------------------------------------- int __stdcall sub_4D1020(int a1, int a2) { int v2; // edi@1 int v3; // eax@5 int v4; // eax@7 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PET_LINK_RESUMMON_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_PET_LINK_RESUMMON_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = __RTDynamicCast(v2, 0, &off_84BF24, &off_84BF50, 0); if ( v3 ) { v4 = v3 + 161856; if ( v4 ) { *(_BYTE *)v4 = *(_BYTE *)(a1 + 6); *(_DWORD *)(v4 + 8) = *(_DWORD *)(a1 + 7); *(_DWORD *)(v4 + 12) = *(_DWORD *)(a1 + 11); *(_WORD *)(v4 + 16) = *(_WORD *)(a1 + 15); *(_DWORD *)(v4 + 20) = *(_DWORD *)(a1 + 17); *(_DWORD *)(v4 + 24) = *(_DWORD *)(a1 + 21); } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_PET_LINK_RESUMMON_CMD : Player Type Casting Error", *(_DWORD *)(a1 + 2)); } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_PET_LINK_RESUMMON_CMD : Not Player Handle", *(_DWORD *)(a1 + 2)); } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_PET_LINK_RESUMMON_CMD : Error during get player", *(_DWORD *)(a1 + 2)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_PET_LINK_RESUMMON_CMD"); } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (004D1160) -------------------------------------------------------- int __thiscall sub_4D1160(void *this, int a2, int a3, int a4) { int v4; // esi@1 __int16 v5; // ax@2 int v6; // eax@4 int v7; // edx@4 int v8; // ecx@4 unsigned __int8 *v9; // eax@4 char v10; // cl@5 int v11; // eax@6 int v12; // eax@9 void *v13; // eax@15 int v14; // eax@21 int v15; // edx@27 int v16; // eax@27 int v17; // ecx@27 int v19; // [sp-10h] [bp-B8h]@16 int v20; // [sp-Ch] [bp-B4h]@16 int v21; // [sp-8h] [bp-B0h]@16 int v22; // [sp+10h] [bp-98h]@19 int v23; // [sp+14h] [bp-94h]@15 int v24; // [sp+14h] [bp-94h]@21 char v25[4]; // [sp+18h] [bp-90h]@27 int v26; // [sp+1Ch] [bp-8Ch]@27 int v27; // [sp+20h] [bp-88h]@27 int v28; // [sp+24h] [bp-84h]@27 char v29; // [sp+28h] [bp-80h]@27 unsigned __int8 v30[4]; // [sp+58h] [bp-50h]@4 int v31; // [sp+5Ch] [bp-4Ch]@4 int v32; // [sp+60h] [bp-48h]@4 int v33; // [sp+64h] [bp-44h]@4 char v34; // [sp+68h] [bp-40h]@4 unsigned int v35; // [sp+98h] [bp-10h]@1 int v36; // [sp+A4h] [bp-4h]@1 int v37; // [sp+A8h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ"; dword_750AB8[dword_750CB8++] = -1; v36 = 0; if ( !a2 || (v5 = *(_WORD *)(a2 + 2), v5 != *(_WORD *)(v4 + 161816)) || v5 == -1 ) { --dword_750CB8; goto LABEL_29; } memset(v30, 0, 0x40u); v6 = *(_DWORD *)(a2 + 12); v7 = *(_DWORD *)(a2 + 8); *(_DWORD *)v30 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)(a2 + 16); v32 = v6; v9 = v30; v31 = v7; v33 = v8; v34 = 0; do v10 = *v9++; while ( v10 ); v11 = v9 - &v30[1]; if ( (unsigned int)v11 >= 4 ) { if ( (unsigned int)v11 <= 0x10 ) { if ( *(_DWORD *)(v4 + 161788) == 3 ) { v12 = *(_DWORD *)(v4 + 161784); if ( v12 == 5 || v12 == 6 ) { if ( *(_WORD *)(v4 + 161804) != -1 && *(_DWORD *)(v4 + 161812) != -1 && *(_DWORD *)(v4 + 161820) != -1 && sub_42A770(&unk_13359770, v30) != 1 ) { v13 = (void *)(**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, *(_WORD *)(v4 + 161804)); v23 = (int)v13; if ( v13 ) { v22 = (int)sub_5CF620(v13); if ( v22 ) { v14 = sub_43BBE0(v23); v24 = v14; if ( v14 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 40))(v14) == 36 ) { if ( __RTDynamicCast(v24, 0, &off_84BEB8, &off_84BEDC, 0) ) { v15 = *(_DWORD *)(a2 + 8); v16 = *(_DWORD *)(a2 + 12); *(_DWORD *)v25 = *(_DWORD *)(a2 + 4); v17 = *(_DWORD *)(a2 + 16); v26 = v15; v28 = v17; v27 = v16; v29 = 0; sub_4D05F0(v4, v25); sub_4CFAD0(v22, v25); *(_DWORD *)(v4 + 161824) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v4 + 161828) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v4 + 161832) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v4 + 161836) = *(_DWORD *)(a2 + 16); --dword_750CB8; goto LABEL_29; } v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v20 = *(_WORD *)(v4 + 161804); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ : Item class type casting fail"; } else { v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v20 = *(_WORD *)(v4 + 161804); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ : Item class invalid"; } } else { v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v20 = *(_WORD *)(v4 + 161804); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ : Item attribute data null"; } } else { v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v20 = *(_WORD *)(v4 + 161804); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ : Item total info data null"; } } else { v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v20 = *(_WORD *)(v4 + 161804); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ : Inven cell data null"; } sub_639150(&unk_86DDD8, v19, v20, v21); } } } } } --dword_750CB8; LABEL_29: v36 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_PET_SET_NAME_REQ"); } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (004D1470) -------------------------------------------------------- bool __thiscall sub_4D1470(int this, int a2) { return *(_DWORD *)this == *(_DWORD *)a2 && *(_DWORD *)(this + 4) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(this + 8) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(this + 12) == *(_DWORD *)(a2 + 12); } //----- (004D14B0) -------------------------------------------------------- int __thiscall sub_4D14B0(int this) { int result; // eax@1 result = 0; *(_DWORD *)(this + 9668) = 0; *(_DWORD *)(this + 9676) = 0; *(_DWORD *)(this + 9680) = 0; *(_DWORD *)(this + 9672) = -1; return result; } //----- (004D14D0) -------------------------------------------------------- char *__thiscall sub_4D14D0(int this) { int v1; // esi@1 char *result; // eax@1 v1 = this; *(_DWORD *)(this + 161812) = -1; *(_DWORD *)(this + 161820) = -1; *(_DWORD *)(this + 161888) = 0; *(_DWORD *)(this + 161784) = 0; *(_DWORD *)(this + 161788) = 0; *(_DWORD *)(this + 161792) = 0; *(_DWORD *)(this + 161796) = 0; *(_DWORD *)(this + 161800) = -1; *(_DWORD *)(this + 161804) = 65535; *(_WORD *)(this + 161808) = 0; *(_WORD *)(this + 161816) = -1; *(_DWORD *)(this + 161836) = 0; *(_DWORD *)(this + 161832) = 0; *(_DWORD *)(this + 161828) = 0; *(_DWORD *)(this + 161824) = 0; result = strncpy((char *)(this + 161824), byte_6A492E, 0x10u); *(_DWORD *)(v1 + 161840) = 0; *(_DWORD *)(v1 + 161844) = 0; *(_DWORD *)(v1 + 161848) = 0; *(_DWORD *)(v1 + 161852) = 0; return result; } //----- (004D1570) -------------------------------------------------------- signed int __thiscall sub_4D1570(int this) { signed int result; // eax@1 *(_BYTE *)(this + 161856) = 0; *(_DWORD *)(this + 161864) = 0; *(_DWORD *)(this + 161868) = 0; *(_WORD *)(this + 161872) = -1; result = -1; *(_DWORD *)(this + 161876) = -1; *(_DWORD *)(this + 161880) = -1; return result; } //----- (004D15A0) -------------------------------------------------------- char __thiscall sub_4D15A0(void *this, int a2) { void *v2; // esi@1 char result; // al@2 int v4; // eax@3 const char *v5; // edi@3 v2 = this; if ( a2 == -1 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystemFillInfo : Pet ID is Invalid", -1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); result = 0; } else { v4 = sub_4CE4D0((int)dword_1325CC60, a2); v5 = (const char *)v4; if ( v4 ) { *((_WORD *)v2 + 80903) = sub_4CE590(dword_1325CC60, (const char *)v4); *((_WORD *)v2 + 80904) = sub_4CE590(dword_1325CC60, v5); *((_DWORD *)v2 + 40462) = 0; *((_DWORD *)v2 + 40463) = 0; result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystemFillInfo : Pet index null", a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); result = 0; } } return result; } //----- (004D1660) -------------------------------------------------------- bool __userpurge sub_4D1660(int a1, int a2, int a3) { int v3; // esi@1 int v5; // eax@3 int v6; // eax@5 int v7; // edi@5 __int16 v8; // ax@7 int v9; // ebx@7 int v10; // edi@7 unsigned __int16 v11; // ax@15 int v12; // eax@16 int v13; // eax@17 int v14; // eax@18 signed int v15; // eax@19 char *v16; // eax@20 int v17; // [sp+Ch] [bp-18h]@7 char v18; // [sp+10h] [bp-14h]@20 unsigned int v19; // [sp+20h] [bp-4h]@1 int v20; // [sp+24h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v3 = a1; if ( *(_DWORD *)(a1 + 161784) || (v5 = *(_DWORD *)(a1 + 118)) == 0 || *(_BYTE *)(v5 + 4) == 3 ) return 0; v6 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))(a1 + 36484))(a1 + 36484, a3, a2); v7 = v6; if ( !v6 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_VirtualCast : Inven cell data null", a3); return 0; } v8 = sub_63FD50(v6); v17 = sub_645030((int)&dword_14D20890, v8); v9 = sub_43BBE0(v7); v10 = (int)sub_5CF620((void *)v7); if ( !v10 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_VirtualCast : Pet Item Info null", v17); return 0; } if ( !v9 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_VirtualCast : Pet Attribute Class null", v17); return 0; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 40))(v9) != 36 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_VirtualCast : Pet Attribute Item Class Invalid", v17); return 0; } if ( *(_DWORD *)(v3 + 161784) || (*(_WORD *)(v3 + 161802) = a3, *(_DWORD *)(v3 + 161784) = 8, v11 = *(_WORD *)(v10 + 8), v11 == -1) || (v12 = sub_418CB0((int)&dword_14D20890, v11)) == 0 || (v13 = *(_DWORD *)v12) == 0 || (v14 = sub_4CE510(dword_1325CC60, (const char *)(v13 + 2))) == 0 || (v15 = sub_4CE460(dword_1325CC60, (const char *)v14), v15 == -1) || (*(_DWORD *)(v3 + 161812) = v15, *(_DWORD *)(v3 + 161820) = sub_4CFBB0(v10), v16 = sub_4CFB30(&v18, v10), *(_DWORD *)(v3 + 161824) = *(_DWORD *)v16, *(_DWORD *)(v3 + 161828) = *((_DWORD *)v16 + 1), *(_DWORD *)(v3 + 161832) = *((_DWORD *)v16 + 2), *(_DWORD *)(v3 + 161836) = *((_DWORD *)v16 + 3), *(_DWORD *)(v3 + 161812) != *(_DWORD *)(v3 + 161876)) ) return 0; return *(_DWORD *)(v3 + 161820) == *(_DWORD *)(v3 + 161880); } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (004D1880) -------------------------------------------------------- char __thiscall sub_4D1880(int this) { int v1; // esi@1 void *v2; // eax@1 int v3; // edi@1 char result; // al@2 v1 = this; v2 = (void *)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 36484))(this + 36484, *(_WORD *)(this + 161802)); v3 = (int)v2; if ( v2 ) { if ( sub_5CF620(v2) ) { if ( sub_43BBE0(v3) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v1 + 58688) + 40))(v1 + 58688, *(_WORD *)(v1 + 161800)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 772))(v1, 8, 72); sub_4D14D0(v1); result = 1; } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_CancelCasting : Item attribute data null", *(_WORD *)(v1 + 161802)); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_CancelCasting : Item total info data null", *(_WORD *)(v1 + 161802)); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_CancelCasting : Inven cell data null", *(_WORD *)(v1 + 161802)); result = 0; } return result; } //----- (004D1950) -------------------------------------------------------- int __thiscall sub_4D1950(int this, int a2) { int v2; // esi@1 int result; // eax@1 int v4; // [sp+8h] [bp-14h]@4 double v5; // [sp+10h] [bp-Ch]@6 unsigned int v6; // [sp+18h] [bp-4h]@1 int v7; // [sp+1Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = this; result = *(_DWORD *)(this + 161784); if ( result == 5 || result == 6 ) { result = sub_4CE730( (int)dword_1325CC60, (unsigned int)(*(_DWORD *)(this + 161840) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); if ( result != 4 ) { sub_4CE920((int)dword_1325CC60, (int)&v4, result, a2); if ( v4 ) { result = v4 - 1; if ( v4 == 1 ) { result = (signed int)(v5 * 1000.0); *(_DWORD *)(v2 + 161848) += result; } } else { result = (signed int)(v5 * 1000.0); *(_DWORD *)(v2 + 161852) += result; } } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D1A00) -------------------------------------------------------- int __thiscall sub_4D1A00(int this) { int result; // eax@1 int v2; // edi@3 unsigned __int8 v3; // al@3 int v4; // edi@4 int v5; // esi@8 unsigned __int8 v6; // al@8 int v7; // esi@9 result = *(_DWORD *)(this + 161784); if ( result == 5 || result == 6 ) { v2 = *(_DWORD *)(this + 161848) + *(_DWORD *)(this + 161840); v3 = (unsigned int)((unsigned int)v2 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( v3 >= byte_1325CC98 ) { if ( v3 <= byte_1325CC9C ) goto LABEL_8; v4 = (unsigned __int8)byte_1325CC9C; } else { v4 = (unsigned __int8)byte_1325CC98; } v2 = 1000 * v4; LABEL_8: v5 = *(_DWORD *)(this + 161852) + *(_DWORD *)(this + 161844); v6 = (unsigned int)((unsigned int)v5 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( v6 >= byte_1325CCA0 ) { if ( v6 <= byte_1325CCA4 ) { LABEL_13: *(_DWORD *)(this + 161840) = v2; *(_DWORD *)(this + 161844) = v5; result = 0; *(_DWORD *)(this + 161852) = 0; *(_DWORD *)(this + 161848) = 0; return result; } v7 = (unsigned __int8)byte_1325CCA4; } else { v7 = (unsigned __int8)byte_1325CCA0; } v5 = 1000 * v7; goto LABEL_13; } return result; } // 1325CC98: using guessed type char byte_1325CC98; // 1325CC9C: using guessed type char byte_1325CC9C; // 1325CCA0: using guessed type char byte_1325CCA0; // 1325CCA4: using guessed type char byte_1325CCA4; //----- (004D1AB0) -------------------------------------------------------- FILE *__thiscall sub_4D1AB0(int this) { FILE *result; // eax@1 result = *(FILE **)(this + 161784); if ( result == (FILE *)5 || result == (FILE *)6 ) result = sub_4D0520( this, (unsigned int)(*(_DWORD *)(this + 161840) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6, (unsigned int)(*(_DWORD *)(this + 161844) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); return result; } //----- (004D1AF0) -------------------------------------------------------- int __thiscall sub_4D1AF0(int this, int a2, int a3) { int result; // eax@3 if ( a2 ) *(_DWORD *)(this + 9668) = a2; result = a3; if ( a3 != -1 ) *(_DWORD *)(this + 9672) = a3; return result; } //----- (004D1B20) -------------------------------------------------------- char __usercall sub_4D1B20(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v5; // edi@6 __int16 v6; // ax@9 int (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // edx@10 void *v8; // eax@10 int v9; // ebx@10 int v10; // ebx@14 int v11; // eax@16 int v12; // ebx@16 int v13; // ST28_4@16 int v14; // ST28_4@16 int v15; // ebx@17 __int64 v16; // ST14_8@19 int v17; // ST10_4@19 int v18; // eax@19 __int16 v19; // ax@20 int v20; // ebx@22 int v21; // eax@22 int v22; // edi@23 void (__thiscall *v23)(_DWORD, _DWORD); // edx@24 int v24; // eax@24 int v25; // [sp+8h] [bp-10h]@16 int v26; // [sp+Ch] [bp-Ch]@16 int v27; // [sp+10h] [bp-8h]@12 __int16 v28; // [sp+14h] [bp-4h]@6 v2 = a1; v3 = *(_DWORD *)(a1 + 118); if ( !v3 || *(_BYTE *)(v3 + 4) == 3 ) return 0; if ( (*(int (**)(void))(*(_DWORD *)a1 + 3644))() ) { sub_4D0A80((void *)v2, 13400, "so_PetSystem_Summon"); return 0; } v5 = sub_54DF90(&unk_13253630, (int)&v28, 12); if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_PetSystem_Summon : Too many pet", 0); return 0; } if ( v28 == -1 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_PetSystem_Summon : Invalid Handle", 0); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v5 + 828))(v5, 0, 1, 3); v6 = sub_4802C0(v5); sub_555DF0(&unk_13253630, (unsigned __int16)v6, 0, 120); return 0; } v7 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD))**(_DWORD **)(v2 + 36484); *(_WORD *)(v2 + 161816) = v28; v8 = (void *)v7(v2 + 36484, *(_WORD *)(v2 + 161802), a2); v9 = (int)v8; if ( !v8 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_PetSystem_Summon : Inven cell data null", *(_WORD *)(v2 + 161802)); return 0; } v27 = (int)sub_5CF620(v8); if ( !v27 ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_PetSystem_Summon : Item total info data null", *(_WORD *)(v2 + 161802)); return 0; } v10 = sub_43BBE0(v9); if ( !v10 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_PetSystem_Summon : Item attribute data null", *(_WORD *)(v2 + 161802)); return 0; } sub_4D14B0(v5); *(_DWORD *)(v5 + 9676) = v27; *(_DWORD *)(v5 + 9680) = v10; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); sub_4D1AF0(v5, v2, v11); v12 = 180 * (unsigned __int16)sub_427920(&unk_14D42DC0, 64) / 64; v13 = 50 * sub_576E10(&unk_132546E8, v12) / 1024; v25 = v13 + sub_401280(v2); v14 = 50 * sub_576E40(&unk_132546E8, v12) / 1024; v26 = v14 + sub_401290(v2); if ( v12 < 90 ) v15 = v12 + 90; else v15 = v12 - 90; v16 = sub_548D10(v2); v17 = *(_DWORD *)(v2 + 161812); v18 = sub_4012C0(v2); if ( !sub_55B4F0(v5, v15, v18, v25, v26, 2 * v15, v17, v16, SHIDWORD(v16)) ) { sub_4D0A80((void *)v2, 13406, "so_PetSystem_Summon"); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v5 + 828))(v5, 0, 1, 3); v19 = sub_4802C0(v5); sub_555DF0(&unk_13253630, (unsigned __int16)v19, 0, 120); return 0; } *(_DWORD *)(v2 + 161888) = v5; v20 = dword_1325CCAC; v21 = sub_428740((int)&off_86AD40); if ( !v21 || (v22 = *(_DWORD *)v21) == 0 ) return 0; (*(void (__thiscall **)(int, _DWORD, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 3748))( v2, *(_WORD *)v22, v20, 0, 0, 0); (*(void (__thiscall **)(int, _DWORD, unsigned int))(*(_DWORD *)v2 + 884))( v2, *(_WORD *)v22, (unsigned int)((unsigned int)v20 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v23 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v2 + 58688) + 40); *(_WORD *)(v2 + 161804) = *(_WORD *)(v2 + 161802); v24 = *(_WORD *)(v2 + 161800); *(_WORD *)(v2 + 161802) = -1; v23(v2 + 58688, v24); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 772))(v2, 8, 72); sub_5164E0(v27, 1); if ( *(_DWORD *)(v2 + 161820) != -1 ) { *(_DWORD *)(v2 + 161788) = 1; sub_4D06C0(v2); } return 1; } // 86AD40: using guessed type int (__thiscall **off_86AD40)(void *, char); // 1325CCAC: using guessed type int dword_1325CCAC; //----- (004D1E70) -------------------------------------------------------- char __thiscall sub_4D1E70(int this) { int v1; // esi@1 int v3; // ecx@7 __int16 v4; // ax@7 v1 = this; if ( (unsigned int)(*(_DWORD *)(this + 161784) - 5) > 1 ) return 0; if ( !*(_DWORD *)(this + 161888) ) { sub_4D0A80((void *)this, 13441, "so_PetSystem_Unsummon"); sub_4D14D0(v1); return 0; } if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 161888) + 1232))() != 12 ) { sub_4D0A80((void *)v1, 13442, "so_PetSystem_Unsummon"); sub_4D14D0(v1); } sub_4D1A00(v1); sub_4D1AB0(v3); (*(void (__stdcall **)(_DWORD, signed int, signed int))(**(_DWORD **)(v1 + 161888) + 828))(0, 1, 3); v4 = sub_4802C0(*(_DWORD *)(v1 + 161888)); sub_555DF0(&unk_13253630, (unsigned __int16)v4, 0, 120); sub_4D14D0(v1); return 1; } //----- (004D1F20) -------------------------------------------------------- char __usercall sub_4D1F20(int a1, int a2, int a3) { int v3; // esi@1 int v4; // eax@2 char result; // al@6 int v6; // edi@7 __int16 v7; // ax@10 int (__thiscall *v8)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@11 void *v9; // eax@11 int v10; // ebx@11 int v11; // ebx@15 int v12; // eax@17 int v13; // ebx@17 int v14; // ST28_4@17 int v15; // ST28_4@17 int v16; // ebx@18 __int64 v17; // ST14_8@20 int v18; // ST10_4@20 int v19; // eax@20 __int16 v20; // ax@21 __int16 v21; // dx@22 int v22; // [sp-4h] [bp-1Ch]@7 int v23; // [sp+8h] [bp-10h]@17 int v24; // [sp+Ch] [bp-Ch]@17 int v25; // [sp+10h] [bp-8h]@13 __int16 v26; // [sp+14h] [bp-4h]@7 v3 = a1; if ( *(_DWORD *)(a1 + 161784) != 2 || (v4 = *(_DWORD *)(a1 + 118)) == 0 || *(_BYTE *)(v4 + 4) == 3 ) return 0; if ( (*(int (**)(void))(*(_DWORD *)a1 + 3644))() ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_LinkResummon, ERR_PET_SUMMON_ALREADY", 13400); return 0; } v22 = a3; v6 = sub_54DF90(&unk_13253630, (int)&v26, 12); if ( v6 ) { if ( v26 == -1 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_LinkResummon : Invalid Handle", 0); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v6 + 828))(v6, 0, 1, 3); v7 = sub_4802C0(v6); sub_555DF0(&unk_13253630, (unsigned __int16)v7, 0, 120); result = 0; } else { v8 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD, _DWORD))**(_DWORD **)(v3 + 36484); *(_WORD *)(v3 + 161816) = v26; v9 = (void *)v8(v3 + 36484, *(_WORD *)(v3 + 161802), a2, v22); v10 = (int)v9; if ( v9 ) { v25 = (int)sub_5CF620(v9); if ( v25 ) { v11 = sub_43BBE0(v10); if ( v11 ) { sub_4D14B0(v6); *(_DWORD *)(v6 + 9676) = v25; *(_DWORD *)(v6 + 9680) = v11; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); sub_4D1AF0(v6, v3, v12); v13 = 180 * (unsigned __int16)sub_427920(&unk_14D42DC0, 64) / 64; v14 = 50 * sub_576E10(&unk_132546E8, v13) / 1024; v23 = v14 + sub_401280(v3); v15 = 50 * sub_576E40(&unk_132546E8, v13) / 1024; v24 = v15 + sub_401290(v3); if ( v13 < 90 ) v16 = v13 + 90; else v16 = v13 - 90; v17 = sub_548D10(v3); v18 = *(_DWORD *)(v3 + 161812); v19 = sub_4012C0(v3); if ( sub_55B4F0(v6, v16, v19, v23, v24, 2 * v16, v18, v17, SHIDWORD(v17)) ) { v21 = *(_WORD *)(v3 + 161802); *(_DWORD *)(v3 + 161888) = v6; *(_WORD *)(v3 + 161804) = v21; *(_WORD *)(v3 + 161802) = -1; sub_5164E0(v25, 1); if ( *(_DWORD *)(v3 + 161820) != -1 ) { *(_DWORD *)(v3 + 161788) = 4; sub_4D06C0(v3); } result = 1; } else { sub_4D0A80((void *)v3, 13406, "sp_PetSystem_LinkResummon"); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 828))(v6, 0); v20 = sub_4802C0(v6); sub_555DF0(&unk_13253630, (unsigned __int16)v20, 0, 120); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_LinkResummon : Item attribute data null", *(_WORD *)(v3 + 161802)); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_LinkResummon : Item total info data null", *(_WORD *)(v3 + 161802)); result = 0; } } else { sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_LinkResummon : Inven cell data null", *(_WORD *)(v3 + 161802)); result = 0; } } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_LinkResummon : Too many pet", 0); result = 0; } return result; } // 4D1F20: could not find valid save-restore pair for edi //----- (004D2200) -------------------------------------------------------- char __usercall sub_4D2200(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 void *v4; // eax@7 int v5; // edi@7 int v6; // eax@8 int v7; // ebx@9 int v8; // eax@10 int v9; // eax@11 int v10; // edi@11 int v11; // eax@12 int v12; // eax@14 int v13; // eax@17 __int16 v15; // [sp-10h] [bp-50h]@19 int v16; // [sp-Ch] [bp-4Ch]@19 char v17; // [sp-8h] [bp-48h]@19 char v18; // [sp+Ch] [bp-34h]@17 char v19; // [sp+1Ch] [bp-24h]@17 char v20; // [sp+2Ch] [bp-14h]@16 unsigned int v21; // [sp+3Ch] [bp-4h]@1 int v22; // [sp+40h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v2 = a1; v3 = *(_DWORD *)(a1 + 161784) - 1; switch ( *(_DWORD *)(a1 + 161784) ) { case 1: v3 = *(_DWORD *)(a1 + 161796); if ( v3 <= (unsigned int)dword_14D129E8 ) { *(_DWORD *)(a1 + 161784) = 2; LOBYTE(v3) = sub_4D1B20(a1, 0); if ( !(_BYTE)v3 ) { LOBYTE(v3) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2256))(v2); *(_DWORD *)(v2 + 161784) = 0; } } break; case 5: case 6: if ( *(_DWORD *)(a1 + 161788) == 1 && *(_DWORD *)(a1 + 161820) ) { v4 = (void *)(**(int (__thiscall ***)(_DWORD, _DWORD))(a1 + 36484))(a1 + 36484, *(_WORD *)(a1 + 161804)); v5 = (int)v4; if ( v4 ) { v7 = (int)sub_5CF620(v4); if ( v7 ) { v9 = sub_43BBE0(v5); v10 = v9; if ( v9 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 40))(v9) == 36 ) { v3 = __RTDynamicCast(v10, 0, &off_84BEB8, &off_84BEDC, 0); if ( v3 ) { sub_455E80(&v20, byte_6A492E); LOBYTE(v3) = sub_4D1470(v2 + 161824, (int)&v20); if ( v3 && (sub_455E80(&v19, byte_6A492E), v13 = (int)sub_4CFB30(&v18, v7), LOBYTE(v3) = sub_4D1470(v13, (int)&v19), v3) ) { if ( *(_DWORD *)(v2 + 161784) == 5 ) { v17 = 1; v16 = *(_DWORD *)(v2 + 161812); v15 = *(_WORD *)(v2 + 161816); } else { v17 = 0; v16 = *(_DWORD *)(v2 + 161812); v15 = *(_WORD *)(v2 + 161816); } LOBYTE(v3) = sub_4D0170((void *)v2, v15, v16, v17); } else { *(_DWORD *)(v2 + 161788) = 4; } } } else { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); LOBYTE(v3) = (unsigned int)sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_PetSystem_Unsummon : Item class invalid", *(_WORD *)(v2 + 161804), v12); } } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); LOBYTE(v3) = (unsigned int)sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_PetSystem_Unsummon : Item attribute data null", *(_WORD *)(v2 + 161804), v11); } } else { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); LOBYTE(v3) = (unsigned int)sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_PetSystem_Unsummon : Item total info data null", *(_WORD *)(v2 + 161804), v8); } } else { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); LOBYTE(v3) = (unsigned int)sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_PetSystem_Unsummon : Inven cell data null", *(_WORD *)(v2 + 161804), v6); } } break; default: return v3; case 8: *(_DWORD *)(a1 + 161784) = 2; LOBYTE(v3) = sub_4D1F20(a1, 0, a2); if ( !(_BYTE)v3 ) { LOBYTE(v3) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2256))(v2); *(_DWORD *)(v2 + 161784) = 0; } break; } return v3; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (004D24D0) -------------------------------------------------------- int __thiscall sub_4D24D0(void *this, int a2, __int16 a3, int a4) { int v4; // esi@1 int v5; // ebx@3 int v6; // ST28_4@3 void *v7; // ST08_4@3 __int16 v8; // ax@3 void *v9; // edi@3 void *v10; // eax@3 int v11; // esi@3 void *v12; // eax@3 int v13; // esi@3 int v14; // eax@5 int v16; // [sp-4h] [bp-2Ch]@2 __int16 v17; // [sp+18h] [bp-10h]@3 int v18; // [sp+24h] [bp-4h]@1 int v19; // [sp+30h] [bp+8h]@3 int v20; // [sp+38h] [bp+10h]@3 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_PetItemAttrSave"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_PetItemAttrSave"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( a4 >= 0 ) { v5 = a2; v17 = (a3 << 10) | a4 & 0x3FF; v6 = sub_43BBE0(a2); v20 = v4 + 58688; v19 = *(_DWORD *)(v4 + 58688); v7 = sub_5CF620((void *)v5); v8 = sub_4802C0(v4 + 58688); (*(void (__thiscall **)(int, _DWORD, int, void *, __int16 *, __int16 *))(v19 + 64))( v4 + 58688, (unsigned __int16)v8, v5, v7, &v17, &v17); v9 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v9 + 1) = sub_4802C0(v4); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v9 + 4) = sub_4802C0(v4 + 58688); v10 = sub_5CF620((void *)v5); *(_DWORD *)((char *)v9 + 10) = *(_DWORD *)v10; *(_DWORD *)((char *)v9 + 14) = *((_DWORD *)v10 + 1); *((_WORD *)v9 + 9) = *((_WORD *)sub_5CF620((void *)v5) + 4); memcpy((char *)v9 + 20, (char *)sub_5CF620((void *)v5) + 10, 0x65u); v11 = *(_DWORD *)v6; v12 = sub_5CF620((void *)v5); v13 = (*(int (__thiscall **)(int, char *))(v11 + 12))(v6, (char *)v12 + 10) + 20; if ( sub_4C81E0(&off_849C18, v13) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_PetItemAttrSave : Packet Too Long", v13); } sub_43BBF0(v20); --dword_750CB8; v18 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::sp_PetItemAttrSave"; } else { --dword_750CB8; v18 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::sp_PetItemAttrSave"; } return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (004D26A0) -------------------------------------------------------- char __userpurge sub_4D26A0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v6; // eax@7 int v7; // eax@9 int v8; // ebx@9 __int16 v9; // ax@11 int v10; // eax@11 int v11; // edi@11 int v12; // ebx@11 int v13; // eax@19 bool v14; // zf@22 void (__thiscall *v15)(int, signed int, void **); // eax@22 int v16; // ecx@22 int v17; // eax@28 int v18; // eax@29 int v19; // eax@30 signed int v20; // eax@31 char *v21; // eax@32 void *v22; // eax@32 int v23; // [sp-8h] [bp-34h]@14 signed int v24; // [sp-8h] [bp-34h]@24 int v25; // [sp-4h] [bp-30h]@14 void **v26; // [sp-4h] [bp-30h]@22 __int16 v27; // [sp+8h] [bp-24h]@11 int v28; // [sp+Ch] [bp-20h]@11 int v29; // [sp+10h] [bp-1Ch]@11 char v30; // [sp+18h] [bp-14h]@32 unsigned int v31; // [sp+28h] [bp-4h]@1 int v32; // [sp+2Ch] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; v3 = a1; (*(void (**)(void))(*(_DWORD *)a1 + 2256))(); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2636))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2632))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3792))(v3); v4 = *(_DWORD *)(v3 + 161784); if ( v4 != 5 && v4 != 6 ) { if ( v4 ) { LABEL_6: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1793, 9); return 0; } } else { if ( *(_WORD *)(v3 + 161804) != a3 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1794, 9); return 0; } } v6 = *(_DWORD *)(v3 + 118); if ( !v6 || *(_BYTE *)(v6 + 4) == 3 ) goto LABEL_6; v7 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))(v3 + 36484))(v3 + 36484, a3, a2); v8 = v7; if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_Cast : Inven cell data null", a3); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1795); return 0; } v9 = sub_63FD50(v7); v10 = sub_645030((int)&dword_14D20890, v9); v11 = dword_1325CCA8; v28 = v10; v27 = dword_1325CCA8; v29 = sub_43BBE0(v8); v12 = (int)sub_5CF620((void *)v8); if ( !v12 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_PetSystem_Cast : Pet Item Info null", v28); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1794); return 0; } if ( !v29 ) { v25 = v28; v23 = (int)"ShinePlayer::sp_PetSystem_Cast : Pet Attribute Class null"; LABEL_17: sub_6390B0(&unk_86DDD8, v23, v25); LABEL_18: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1794); return 0; } if ( (*(int (**)(void))(*(_DWORD *)v29 + 40))() != 36 ) { v25 = v28; v23 = (int)"ShinePlayer::sp_PetSystem_Cast : Pet Attribute Item Class Invalid"; goto LABEL_17; } v13 = *(_DWORD *)(v3 + 161784); if ( v13 ) { if ( (unsigned int)(v13 - 5) > 1 ) { (*(void (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v3 + 2332))(v3, 1793); return 0; } if ( *(_WORD *)(v3 + 161804) != a3 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2332))(v3, 1794); return 0; } v14 = sub_4D1E70(v3) == 0; v15 = *(void (__thiscall **)(int, signed int, void **))(*(_DWORD *)v3 + 2332); v26 = (void **)9; v16 = v3; if ( v14 ) { ((void (__thiscall *)(int, signed int))v15)(v3, 1793); return 0; } v24 = 1792; goto LABEL_35; } *(_DWORD *)(v3 + 161796) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * v11) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_WORD *)(v3 + 161800) = sub_4802C0(v3 + 58688); *(_WORD *)(v3 + 161802) = a3; *(_DWORD *)(v3 + 161784) = 1; if ( *(_WORD *)(v12 + 8) == -1 || (v17 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v12 + 8))) == 0 || (v18 = *(_DWORD *)v17) == 0 || (v19 = sub_4CE510(dword_1325CC60, (const char *)(v18 + 2))) == 0 || (v20 = sub_4CE460(dword_1325CC60, (const char *)v19), v20 == -1) ) goto LABEL_18; *(_DWORD *)(v3 + 161812) = v20; *(_DWORD *)(v3 + 161820) = sub_4CFBB0(v12); v21 = sub_4CFB30(&v30, v12); *(_DWORD *)(v3 + 161824) = *(_DWORD *)v21; *(_DWORD *)(v3 + 161828) = *((_DWORD *)v21 + 1); *(_DWORD *)(v3 + 161832) = *((_DWORD *)v21 + 2); *(_DWORD *)(v3 + 161836) = *((_DWORD *)v21 + 3); (*(void (__thiscall **)(int, _DWORD, signed int, int))(*(_DWORD *)(v3 + 58688) + 44))( v3 + 58688, *(_WORD *)(v3 + 161800), 9, a3); sub_43BBF0(v3 + 58688); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v3 + 2332))(v3, 1792, 9); v22 = off_849C18; *(_WORD *)off_849C18 = 8263; *((_WORD *)v22 + 1) = v27; if ( sub_4C81E0(&off_849C18, 4) ) { v26 = &off_849C18; v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); v15 = *(void (__thiscall **)(int, signed int, void **))(*(_DWORD *)v16 + 12); v24 = v3; LABEL_35: v15(v16, v24, v26); return 1; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MoverSystem_Cast : Packet Too Long", 4); return 1; } // 86FEB8: using guessed type int __security_cookie; // 1325CCA8: using guessed type int dword_1325CCA8; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; //----- (004D2AC0) -------------------------------------------------------- int __thiscall sub_4D2AC0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_PetItemSave"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_PetItemSave"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 80902); if ( v2 == -1 ) { --dword_750CB8; } else { v3 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 9121))((char *)v1 + 36484, v2); sub_4D24D0(v1, v3, 9, *((_WORD *)v1 + 80902)); --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_PetItemSave"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004D2BA0) -------------------------------------------------------- int __thiscall sub_4D2BA0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@2 int v6; // ecx@4 int result; // eax@4 v4 = this; if ( *((void **)this + a3 + 1) == (char *)this + 4100 ) { *((_DWORD *)this + a3 + 1) = unknown_libname_130(256); v5 = 0; do { *(_DWORD *)(v5 + *((_DWORD *)v4 + a3 + 1)) = *((_DWORD *)v4 + 1089); *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + v5 + 4) = *((_DWORD *)v4 + 1089); *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + v5 + 8) = *((_DWORD *)v4 + 1089); *(_DWORD *)(v5 + *((_DWORD *)v4 + a3 + 1) + 12) = *((_DWORD *)v4 + 1089); v5 += 16; } while ( v5 < 256 ); } v6 = *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + 4 * a2); result = v6 == *((_DWORD *)v4 + 1089); if ( v6 == *((_DWORD *)v4 + 1089) ) { *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + 4 * a2) = a4; } else { sub_639100( &unk_86DDD8, (int)"PROTOCOLFUNCTIONTEMPLETE::pft_Store : Duplicate protocol set", v6 == *((_DWORD *)v4 + 1089)); loc_6391B0("PROTOCOLFUNCTIONTEMPLETE::pft_Store"); result = a4; *(_DWORD *)(*((_DWORD *)v4 + a3 + 1) + 4 * a2) = a4; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004D2C70) -------------------------------------------------------- void *__thiscall sub_4D2C70(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_6C58F0; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_6530A4(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C58F0: using guessed type int (__thiscall *off_6C58F0)(void *, char); //----- (004D2CC0) -------------------------------------------------------- int __cdecl sub_4D2CC0(void *a1) { sub_4D2BA0(a1, 2, 1, (int)sub_467930); sub_4D2BA0(a1, 2, 3, (int)sub_467A40); sub_4D2BA0(a1, 2, 4, (int)sub_467A60); sub_4D2BA0(a1, 2, 5, (int)nullsub_5); sub_4D2BA0(a1, 2, 18, (int)sub_54F110); sub_4D2BA0(a1, 2, 19, (int)sub_54F280); sub_4D2BA0(a1, 2, 21, (int)sub_54F3A0); sub_4D2BA0(a1, 13, 69, (int)sub_467B40); sub_4D2BA0(a1, 13, 70, (int)sub_44BC70); sub_4D2BA0(a1, 13, 2, (int)sub_525E20); sub_4D2BA0(a1, 13, 3, (int)sub_525F30); sub_4D2BA0(a1, 13, 11, (int)sub_523940); sub_4D2BA0(a1, 13, 12, (int)sub_523BC0); sub_4D2BA0(a1, 13, 14, (int)sub_523A80); sub_4D2BA0(a1, 13, 15, (int)sub_523BC0); sub_4D2BA0(a1, 13, 35, (int)sub_537710); sub_4D2BA0(a1, 13, 36, (int)sub_537970); sub_4D2BA0(a1, 13, 38, (int)sub_537840); sub_4D2BA0(a1, 13, 39, (int)sub_537970); sub_4D2BA0(a1, 13, 17, (int)sub_52B370); sub_4D2BA0(a1, 13, 18, (int)sub_52B520); sub_4D2BA0(a1, 13, 20, (int)sub_5393D0); sub_4D2BA0(a1, 13, 21, (int)sub_5392C0); sub_4D2BA0(a1, 13, 23, (int)sub_529350); sub_4D2BA0(a1, 13, 26, (int)sub_529540); sub_4D2BA0(a1, 13, 24, (int)sub_529630); sub_4D2BA0(a1, 13, 27, (int)sub_529730); sub_4D2BA0(a1, 13, 29, (int)sub_52E430); sub_4D2BA0(a1, 13, 30, (int)sub_52E530); sub_4D2BA0(a1, 13, 32, (int)sub_52E630); sub_4D2BA0(a1, 13, 33, (int)sub_52E730); sub_4D2BA0(a1, 13, 57, (int)sub_52E830); sub_4D2BA0(a1, 13, 58, (int)sub_52E930); sub_4D2BA0(a1, 13, 123, (int)sub_52EA30); sub_4D2BA0(a1, 13, 124, (int)sub_52EB10); sub_4D2BA0(a1, 13, 41, (int)sub_531390); sub_4D2BA0(a1, 13, 42, (int)sub_531540); sub_4D2BA0(a1, 13, 44, (int)sub_531670); sub_4D2BA0(a1, 13, 45, (int)sub_531820); sub_4D2BA0(a1, 13, 47, (int)sub_531950); sub_4D2BA0(a1, 13, 48, (int)sub_531C30); sub_4D2BA0(a1, 13, 50, (int)sub_531D60); sub_4D2BA0(a1, 13, 51, (int)sub_531FC0); sub_4D2BA0(a1, 13, 53, (int)sub_537A70); sub_4D2BA0(a1, 13, 54, (int)sub_537C60); sub_4D2BA0(a1, 13, 100, (int)sub_491840); sub_4D2BA0(a1, 13, 102, (int)sub_491F70); sub_4D2BA0(a1, 13, 104, (int)sub_43E6F0); sub_4D2BA0(a1, 13, 105, (int)sub_43E7D0); sub_4D2BA0(a1, 13, 110, (int)sub_596EC0); sub_4D2BA0(a1, 13, 145, (int)sub_523CC0); sub_4D2BA0(a1, 13, 146, (int)sub_523BC0); sub_4D2BA0(a1, 13, 148, (int)sub_523E60); sub_4D2BA0(a1, 13, 149, (int)sub_523BC0); sub_4D2BA0(a1, 13, 64, (int)sub_53DDB0); sub_4D2BA0(a1, 13, 66, (int)sub_5864C0); sub_4D2BA0(a1, 13, 67, (int)sub_586600); sub_4D2BA0(a1, 13, 60, (int)sub_591A60); sub_4D2BA0(a1, 13, 61, (int)sub_591B60); sub_4D2BA0(a1, 13, 72, (int)sub_539C30); sub_4D2BA0(a1, 13, 74, (int)sub_595FA0); sub_4D2BA0(a1, 13, 76, (int)sub_494360); sub_4D2BA0(a1, 13, 78, (int)sub_52C670); sub_4D2BA0(a1, 13, 79, (int)sub_52C790); sub_4D2BA0(a1, 22, 22, (int)sub_52C880); sub_4D2BA0(a1, 22, 23, (int)sub_52C990); sub_4D2BA0(a1, 13, 81, (int)sub_594890); sub_4D2BA0(a1, 13, 82, (int)sub_5949C0); sub_4D2BA0(a1, 13, 86, (int)sub_58F130); sub_4D2BA0(a1, 13, 88, (int)sub_46B7D0); sub_4D2BA0(a1, 13, 90, (int)sub_526F70); sub_4D2BA0(a1, 13, 92, (int)sub_5267B0); sub_4D2BA0(a1, 13, 96, (int)sub_532330); sub_4D2BA0(a1, 13, 98, (int)sub_532820); sub_4D2BA0(a1, 13, 107, (int)sub_48CAC0); sub_4D2BA0(a1, 13, 108, (int)sub_48CBA0); sub_4D2BA0(a1, 13, 119, (int)sub_5280C0); sub_4D2BA0(a1, 13, 126, (int)sub_56D060); sub_4D2BA0(a1, 13, 128, (int)sub_4A44A0); sub_4D2BA0(a1, 13, 129, (int)sub_4A4610); sub_4D2BA0(a1, 13, 140, (int)sub_56EAC0); sub_4D2BA0(a1, 13, 142, (int)sub_518910); sub_4D2BA0(a1, 13, 199, (int)sub_518F20); sub_4D2BA0(a1, 13, 151, (int)sub_5217A0); sub_4D2BA0(a1, 13, 153, (int)sub_521BB0); sub_4D2BA0(a1, 13, 155, (int)sub_522000); sub_4D2BA0(a1, 13, 157, (int)sub_518790); sub_4D2BA0(a1, 13, 169, (int)sub_526CC0); sub_4D2BA0(a1, 13, 171, (int)sub_526BC0); sub_4D2BA0(a1, 13, 159, (int)sub_5187E0); sub_4D2BA0(a1, 13, 167, (int)sub_51A780); sub_4D2BA0(a1, 16, 2, (int)sub_454A00); sub_4D2BA0(a1, 16, 6, (int)sub_454B50); sub_4D2BA0(a1, 16, 8, (int)sub_454C30); sub_4D2BA0(a1, 16, 10, (int)sub_454D10); sub_4D2BA0(a1, 16, 27, (int)sub_454DF0); sub_4D2BA0(a1, 16, 29, (int)sub_454ED0); sub_4D2BA0(a1, 16, 40, (int)sub_54F4B0); sub_4D2BA0(a1, 18, 2, (int)sub_44E490); sub_4D2BA0(a1, 18, 3, (int)sub_44E680); sub_4D2BA0(a1, 18, 13, (int)sub_44E760); sub_4D2BA0(a1, 18, 12, (int)sub_44E890); sub_4D2BA0(a1, 18, 19, (int)sub_44EFE0); sub_4D2BA0(a1, 18, 38, (int)sub_579110); sub_4D2BA0(a1, 23, 8, (int)sub_59B430); sub_4D2BA0(a1, 23, 6, (int)sub_59B5C0); sub_4D2BA0(a1, 23, 10, (int)sub_59B770); sub_4D2BA0(a1, 23, 12, (int)sub_59B7C0); sub_4D2BA0(a1, 4, 87, (int)sub_451880); sub_4D2BA0(a1, 4, 94, (int)sub_588CC0); sub_4D2BA0(a1, 4, 96, (int)sub_588FF0); sub_4D2BA0(a1, 4, 100, (int)sub_589540); sub_4D2BA0(a1, 4, 102, (int)sub_589910); sub_4D2BA0(a1, 4, 210, (int)sub_589B40); sub_4D2BA0(a1, 4, 119, (int)sub_517610); sub_4D2BA0(a1, 4, 129, (int)sub_59EA30); sub_4D2BA0(a1, 4, 132, (int)sub_59EB20); sub_4D2BA0(a1, 4, 134, (int)sub_59ECC0); sub_4D2BA0(a1, 4, 138, (int)sub_59EDF0); sub_4D2BA0(a1, 4, 140, (int)sub_59EF50); sub_4D2BA0(a1, 4, 142, (int)sub_59F0B0); sub_4D2BA0(a1, 4, 144, (int)sub_59F1E0); sub_4D2BA0(a1, 4, 146, (int)sub_59F360); sub_4D2BA0(a1, 4, 136, (int)sub_59F570); sub_4D2BA0(a1, 4, 148, (int)sub_59F690); sub_4D2BA0(a1, 4, 154, (int)sub_4FB720); sub_4D2BA0(a1, 17, 4, (int)sub_576140); sub_4D2BA0(a1, 17, 6, (int)sub_576240); sub_4D2BA0(a1, 17, 10, (int)sub_576340); sub_4D2BA0(a1, 17, 25, (int)sub_576440); sub_4D2BA0(a1, 17, 27, (int)sub_576540); sub_4D2BA0(a1, 36, 7, (int)sub_516E40); sub_4D2BA0(a1, 36, 8, (int)sub_516F70); sub_4D2BA0(a1, 36, 9, (int)sub_5170A0); sub_4D2BA0(a1, 36, 10, (int)sub_5171A0); sub_4D2BA0(a1, 13, 114, (int)nullsub_5); sub_4D2BA0(a1, 13, 115, (int)sub_474E10); sub_4D2BA0(a1, 13, 117, (int)sub_532AC0); sub_4D2BA0(a1, 13, 131, (int)nullsub_5); sub_4D2BA0(a1, 13, 132, (int)sub_46D090); sub_4D2BA0(a1, 13, 134, (int)sub_46E300); sub_4D2BA0(a1, 13, 136, (int)sub_46E3E0); sub_4D2BA0(a1, 38, 108, (int)sub_46E4C0); sub_4D2BA0(a1, 29, 230, (int)sub_475D00); sub_4D2BA0(a1, 35, 90, (int)sub_56CA60); sub_4D2BA0(a1, 35, 94, (int)sub_56CBF0); sub_4D2BA0(a1, 35, 96, (int)sub_56CD80); sub_4D2BA0(a1, 35, 92, (int)sub_56CEF0); sub_4D2BA0(a1, 4, 180, (int)sub_54FBD0); sub_4D2BA0(a1, 37, 63, (int)sub_483040); sub_4D2BA0(a1, 37, 67, (int)sub_483370); sub_4D2BA0(a1, 43, 36, (int)sub_5159A0); sub_4D2BA0(a1, 43, 13, (int)sub_515B10); sub_4D2BA0(a1, 43, 17, (int)sub_515BF0); sub_4D2BA0(a1, 43, 24, (int)sub_515CD0); sub_4D2BA0(a1, 43, 45, (int)sub_515DD0); sub_4D2BA0(a1, 47, 121, (int)sub_61A450); sub_4D2BA0(a1, 47, 109, (int)sub_61A590); sub_4D2BA0(a1, 45, 18, (int)sub_519EC0); sub_4D2BA0(a1, 47, 11, (int)sub_614420); sub_4D2BA0(a1, 47, 18, (int)sub_614510); sub_4D2BA0(a1, 47, 22, (int)sub_614660); sub_4D2BA0(a1, 47, 26, (int)sub_6147B0); sub_4D2BA0(a1, 13, 161, (int)sub_524000); sub_4D2BA0(a1, 13, 163, (int)sub_598E70); sub_4D2BA0(a1, 13, 165, (int)sub_599300); sub_4D2BA0(a1, 47, 214, (int)sub_622820); sub_4D2BA0(a1, 47, 212, (int)sub_61CD50); sub_4D2BA0(a1, 49, 3, (int)sub_623EA0); sub_4D2BA0(a1, 49, 4, (int)sub_624010); sub_4D2BA0(a1, 49, 10, (int)sub_624620); sub_4D2BA0(a1, 49, 14, (int)sub_6243B0); sub_4D2BA0(a1, 49, 18, (int)sub_624500); sub_4D2BA0(a1, 4, 281, (int)sub_467C20); sub_4D2BA0(a1, 4, 283, (int)sub_467D30); sub_4D2BA0(a1, 13, 173, (int)sub_467E20); sub_4D2BA0(a1, 13, 175, (int)sub_467FF0); sub_4D2BA0(a1, 13, 178, (int)sub_4681C0); sub_4D2BA0(a1, 13, 180, (int)sub_468350); sub_4D2BA0(a1, 13, 194, (int)sub_4684E0); sub_4D2BA0(a1, 13, 206, (int)sub_4685C0); sub_4D2BA0(a1, 13, 190, (int)sub_468750); sub_4D2BA0(a1, 13, 182, (int)sub_4688D0); sub_4D2BA0(a1, 53, 14, (int)sub_4D0D90); sub_4D2BA0(a1, 53, 4, (int)sub_4D0730); sub_4D2BA0(a1, 53, 12, (int)sub_4CFBD0); sub_4D2BA0(a1, 13, 184, (int)sub_51DC20); sub_4D2BA0(a1, 13, 186, (int)sub_536610); sub_4D2BA0(a1, 13, 188, (int)sub_536760); sub_4D2BA0(a1, 13, 192, (int)sub_468EC0); sub_4D2BA0(a1, 13, 202, (int)sub_468A60); sub_4D2BA0(a1, 13, 204, (int)sub_468D30); sub_4D2BA0(a1, 13, 210, (int)sub_53A060); return sub_4D2BA0(a1, 13, 212, (int)sub_53A440); } // 547FC0: using guessed type int __stdcall nullsub_5(int, int); //----- (004D39A0) -------------------------------------------------------- void *__thiscall sub_4D39A0(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_6C5964; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_6530A4(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C5964: using guessed type int (__thiscall *off_6C5964)(void *, char); //----- (004D39F0) -------------------------------------------------------- int __cdecl sub_4D39F0(void *a1) { sub_4D2BA0(a1, 2, 6, (int)sub_4511E0); sub_4D2BA0(a1, 2, 4, (int)nullsub_4); sub_4D2BA0(a1, 2, 5, (int)nullsub_4); sub_4D2BA0(a1, 2, 18, (int)sub_54EB10); sub_4D2BA0(a1, 2, 19, (int)sub_54ED00); sub_4D2BA0(a1, 2, 23, (int)sub_43E140); sub_4D2BA0(a1, 2, 24, (int)sub_4412F0); sub_4D2BA0(a1, 2, 47, (int)sub_54F910); sub_4D2BA0(a1, 3, 24, (int)sub_556710); sub_4D2BA0(a1, 3, 35, (int)sub_56C5B0); sub_4D2BA0(a1, 3, 50, (int)sub_550220); sub_4D2BA0(a1, 4, 78, (int)sub_452130); sub_4D2BA0(a1, 4, 92, (int)sub_588A00); sub_4D2BA0(a1, 4, 98, (int)sub_5890E0); sub_4D2BA0(a1, 4, 113, (int)sub_5564D0); sub_4D2BA0(a1, 4, 114, (int)sub_54F5C0); sub_4D2BA0(a1, 4, 176, (int)sub_4A4D70); sub_4D2BA0(a1, 4, 185, (int)sub_5601D0); sub_4D2BA0(a1, 4, 188, (int)sub_563D70); sub_4D2BA0(a1, 16, 37, (int)sub_560E40); sub_4D2BA0(a1, 7, 1, (int)sub_43DD20); sub_4D2BA0(a1, 6, 1, (int)sub_451D40); sub_4D2BA0(a1, 6, 3, (int)sub_442D20); sub_4D2BA0(a1, 6, 20, (int)sub_587970); sub_4D2BA0(a1, 6, 22, (int)sub_587BF0); sub_4D2BA0(a1, 6, 26, (int)sub_49F0C0); sub_4D2BA0(a1, 6, 28, (int)sub_5503F0); sub_4D2BA0(a1, 6, 31, (int)sub_5594E0); sub_4D2BA0(a1, 8, 1, (int)sub_459C80); sub_4D2BA0(a1, 8, 30, (int)sub_4585F0); sub_4D2BA0(a1, 8, 3, (int)sub_456950); sub_4D2BA0(a1, 8, 5, (int)sub_456B30); sub_4D2BA0(a1, 8, 8, (int)sub_456D10); sub_4D2BA0(a1, 8, 10, (int)sub_4C4130); sub_4D2BA0(a1, 8, 11, (int)sub_4C4020); sub_4D2BA0(a1, 8, 18, (int)sub_4567A0); sub_4D2BA0(a1, 8, 23, (int)sub_457410); sub_4D2BA0(a1, 8, 25, (int)sub_457770); sub_4D2BA0(a1, 8, 29, (int)sub_4C3ED0); sub_4D2BA0(a1, 8, 32, (int)sub_457EE0); sub_4D2BA0(a1, 8, 34, (int)sub_458210); sub_4D2BA0(a1, 8, 36, (int)sub_459AD0); sub_4D2BA0(a1, 8, 39, (int)sub_456F10); sub_4D2BA0(a1, 8, 42, (int)sub_457240); sub_4D2BA0(a1, 8, 45, (int)sub_46BE80); sub_4D2BA0(a1, 8, 48, (int)sub_46A2E0); sub_4D2BA0(a1, 8, 50, (int)sub_46BDB0); sub_4D2BA0(a1, 8, 53, (int)sub_46C150); sub_4D2BA0(a1, 8, 57, (int)sub_46A7E0); sub_4D2BA0(a1, 8, 68, (int)sub_45F290); sub_4D2BA0(a1, 8, 75, (int)sub_53E850); sub_4D2BA0(a1, 8, 79, (int)sub_59D290); sub_4D2BA0(a1, 8, 81, (int)sub_59D430); sub_4D2BA0(a1, 8, 83, (int)sub_59FE60); sub_4D2BA0(a1, 8, 86, (int)sub_59D690); sub_4D2BA0(a1, 8, 88, (int)sub_59D7E0); sub_4D2BA0(a1, 8, 91, (int)sub_59DA10); sub_4D2BA0(a1, 8, 92, (int)sub_59DC50); sub_4D2BA0(a1, 8, 94, (int)sub_59DF70); sub_4D2BA0(a1, 4, 147, (int)sub_59E0A0); sub_4D2BA0(a1, 8, 103, (int)sub_457BE0); sub_4D2BA0(a1, 8, 112, (int)sub_560240); sub_4D2BA0(a1, 8, 115, (int)sub_4C1A50); sub_4D2BA0(a1, 15, 2, (int)sub_50E650); sub_4D2BA0(a1, 9, 1, (int)sub_42FEE0); sub_4D2BA0(a1, 9, 8, (int)sub_42B410); sub_4D2BA0(a1, 9, 43, (int)sub_430EA0); sub_4D2BA0(a1, 9, 50, (int)sub_42E600); sub_4D2BA0(a1, 9, 64, (int)sub_57D7A0); sub_4D2BA0(a1, 9, 65, (int)sub_57D150); sub_4D2BA0(a1, 9, 68, (int)sub_57A1A0); sub_4D2BA0(a1, 9, 62, (int)sub_42B510); sub_4D2BA0(a1, 9, 84, (int)sub_42B670); sub_4D2BA0(a1, 12, 3, (int)sub_523220); sub_4D2BA0(a1, 12, 6, (int)sub_537350); sub_4D2BA0(a1, 12, 11, (int)sub_535490); sub_4D2BA0(a1, 12, 13, (int)sub_537D70); sub_4D2BA0(a1, 12, 15, (int)sub_52A0A0); sub_4D2BA0(a1, 12, 16, (int)sub_52AD80); sub_4D2BA0(a1, 12, 80, (int)sub_52B7F0); sub_4D2BA0(a1, 12, 18, (int)sub_538CC0); sub_4D2BA0(a1, 12, 7, (int)sub_528720); sub_4D2BA0(a1, 12, 9, (int)sub_52ED70); sub_4D2BA0(a1, 12, 21, (int)sub_53F8C0); sub_4D2BA0(a1, 12, 23, (int)sub_53B580); sub_4D2BA0(a1, 12, 25, (int)sub_53DCD0); sub_4D2BA0(a1, 12, 28, (int)sub_5320E0); sub_4D2BA0(a1, 12, 30, (int)sub_5325D0); sub_4D2BA0(a1, 12, 34, (int)sub_491930); sub_4D2BA0(a1, 12, 32, (int)sub_491690); sub_4D2BA0(a1, 12, 38, (int)sub_535650); sub_4D2BA0(a1, 12, 40, (int)sub_534970); sub_4D2BA0(a1, 12, 42, (int)sub_527B90); sub_4D2BA0(a1, 12, 44, (int)sub_4FB560); sub_4D2BA0(a1, 12, 47, (int)sub_46F240); sub_4D2BA0(a1, 12, 49, (int)sub_46F5C0); sub_4D2BA0(a1, 12, 51, (int)sub_56F040); sub_4D2BA0(a1, 12, 53, (int)sub_517C60); sub_4D2BA0(a1, 12, 100, (int)sub_518200); sub_4D2BA0(a1, 12, 72, (int)sub_51A190); sub_4D2BA0(a1, 12, 60, (int)sub_516560); sub_4D2BA0(a1, 12, 64, (int)sub_520D40); sub_4D2BA0(a1, 12, 66, (int)sub_521170); sub_4D2BA0(a1, 12, 68, (int)sub_5214A0); sub_4D2BA0(a1, 12, 76, (int)sub_51A970); sub_4D2BA0(a1, 12, 77, (int)sub_51AA90); sub_4D2BA0(a1, 12, 74, (int)sub_51AB40); sub_4D2BA0(a1, 12, 81, (int)sub_51B030); sub_4D2BA0(a1, 12, 83, (int)sub_51F620); sub_4D2BA0(a1, 12, 97, (int)sub_51C260); sub_4D2BA0(a1, 12, 107, (int)sub_51C520); sub_4D2BA0(a1, 14, 72, (int)sub_4CCC70); sub_4D2BA0(a1, 20, 1, (int)sub_586CC0); sub_4D2BA0(a1, 20, 2, (int)sub_586E30); sub_4D2BA0(a1, 20, 7, (int)sub_586FE0); sub_4D2BA0(a1, 20, 9, (int)sub_5871B0); sub_4D2BA0(a1, 19, 1, (int)sub_590230); sub_4D2BA0(a1, 19, 7, (int)sub_5906C0); sub_4D2BA0(a1, 19, 3, (int)sub_590810); sub_4D2BA0(a1, 19, 6, (int)sub_590960); sub_4D2BA0(a1, 19, 10, (int)sub_590C40); sub_4D2BA0(a1, 19, 13, (int)sub_592F10); sub_4D2BA0(a1, 19, 17, (int)sub_592B60); sub_4D2BA0(a1, 19, 21, (int)sub_591340); sub_4D2BA0(a1, 19, 25, (int)sub_5915D0); sub_4D2BA0(a1, 19, 31, (int)sub_592500); sub_4D2BA0(a1, 18, 17, (int)sub_44E960); sub_4D2BA0(a1, 18, 34, (int)sub_46B9E0); sub_4D2BA0(a1, 18, 36, (int)sub_578AA0); sub_4D2BA0(a1, 23, 1, (int)sub_59BF20); sub_4D2BA0(a1, 24, 1, (int)sub_5C84D0); sub_4D2BA0(a1, 22, 26, (int)sub_495E20); sub_4D2BA0(a1, 26, 1, (int)sub_58C590); sub_4D2BA0(a1, 26, 4, (int)sub_58AFE0); sub_4D2BA0(a1, 26, 7, (int)sub_58B2C0); sub_4D2BA0(a1, 26, 13, (int)sub_58B6F0); sub_4D2BA0(a1, 26, 10, (int)sub_58B140); sub_4D2BA0(a1, 26, 16, (int)sub_58C310); sub_4D2BA0(a1, 17, 2, (int)sub_576070); sub_4D2BA0(a1, 17, 7, (int)sub_576640); sub_4D2BA0(a1, 17, 11, (int)sub_576720); sub_4D2BA0(a1, 17, 15, (int)sub_5767E0); sub_4D2BA0(a1, 17, 17, (int)sub_5768A0); sub_4D2BA0(a1, 17, 20, (int)sub_576BC0); sub_4D2BA0(a1, 17, 22, (int)sub_576CC0); sub_4D2BA0(a1, 27, 6, (int)sub_50B580); sub_4D2BA0(a1, 27, 8, (int)sub_50B6F0); sub_4D2BA0(a1, 35, 1, (int)sub_534630); sub_4D2BA0(a1, 35, 10, (int)sub_56FC30); sub_4D2BA0(a1, 35, 3, (int)sub_5746E0); sub_4D2BA0(a1, 35, 24, (int)sub_5705B0); sub_4D2BA0(a1, 35, 34, (int)sub_570900); sub_4D2BA0(a1, 35, 37, (int)sub_570BC0); sub_4D2BA0(a1, 35, 31, (int)sub_570A60); sub_4D2BA0(a1, 35, 29, (int)sub_570380); sub_4D2BA0(a1, 35, 14, (int)sub_56F6F0); sub_4D2BA0(a1, 35, 16, (int)sub_56F950); sub_4D2BA0(a1, 35, 43, (int)sub_570F10); sub_4D2BA0(a1, 35, 46, (int)sub_570D20); sub_4D2BA0(a1, 35, 50, (int)sub_5710D0); sub_4D2BA0(a1, 35, 18, (int)sub_573210); sub_4D2BA0(a1, 35, 61, (int)sub_572460); sub_4D2BA0(a1, 35, 64, (int)sub_572740); sub_4D2BA0(a1, 35, 67, (int)sub_5712A0); sub_4D2BA0(a1, 35, 72, (int)sub_571460); sub_4D2BA0(a1, 35, 80, (int)sub_571640); sub_4D2BA0(a1, 35, 83, (int)sub_571830); sub_4D2BA0(a1, 35, 86, (int)sub_571A00); sub_4D2BA0(a1, 35, 98, (int)sub_573560); sub_4D2BA0(a1, 35, 101, (int)sub_5737F0); sub_4D2BA0(a1, 43, 1, (int)sub_513710); sub_4D2BA0(a1, 43, 5, (int)sub_513980); sub_4D2BA0(a1, 43, 11, (int)sub_513BD0); sub_4D2BA0(a1, 43, 15, (int)sub_513DD0); sub_4D2BA0(a1, 43, 19, (int)sub_514060); sub_4D2BA0(a1, 43, 22, (int)sub_514270); sub_4D2BA0(a1, 43, 26, (int)sub_514410); sub_4D2BA0(a1, 43, 29, (int)sub_5146B0); sub_4D2BA0(a1, 43, 40, (int)sub_514950); sub_4D2BA0(a1, 47, 2, (int)sub_612B20); sub_4D2BA0(a1, 47, 15, (int)sub_612E50); sub_4D2BA0(a1, 47, 19, (int)sub_613290); sub_4D2BA0(a1, 47, 13, (int)sub_6135F0); sub_4D2BA0(a1, 47, 23, (int)sub_6138F0); sub_4D2BA0(a1, 47, 100, (int)sub_6197E0); sub_4D2BA0(a1, 47, 104, (int)sub_619A60); sub_4D2BA0(a1, 47, 107, (int)sub_619C90); sub_4D2BA0(a1, 47, 111, (int)sub_619E10); sub_4D2BA0(a1, 47, 113, (int)sub_619F90); sub_4D2BA0(a1, 47, 116, (int)sub_61A1F0); sub_4D2BA0(a1, 47, 200, (int)sub_61AE30); sub_4D2BA0(a1, 47, 202, (int)sub_61B090); sub_4D2BA0(a1, 47, 204, (int)sub_61B2A0); sub_4D2BA0(a1, 47, 206, (int)sub_61B3B0); sub_4D2BA0(a1, 47, 208, (int)sub_61B520); sub_4D2BA0(a1, 47, 217, (int)sub_61B690); sub_4D2BA0(a1, 47, 219, (int)sub_61B7C0); sub_4D2BA0(a1, 29, 145, (int)sub_4755C0); sub_4D2BA0(a1, 29, 156, (int)sub_4776B0); sub_4D2BA0(a1, 29, 160, (int)sub_475510); sub_4D2BA0(a1, 38, 109, (int)sub_46E690); sub_4D2BA0(a1, 38, 111, (int)sub_46E5A0); sub_4D2BA0(a1, 29, 172, (int)sub_472690); sub_4D2BA0(a1, 29, 180, (int)sub_4729A0); sub_4D2BA0(a1, 29, 202, (int)sub_474E70); sub_4D2BA0(a1, 29, 207, (int)sub_476E10); sub_4D2BA0(a1, 29, 211, (int)sub_476E90); sub_4D2BA0(a1, 29, 215, (int)sub_475F40); sub_4D2BA0(a1, 29, 219, (int)sub_475FB0); sub_4D2BA0(a1, 37, 60, (int)sub_482F40); sub_4D2BA0(a1, 37, 64, (int)sub_483200); sub_4D2BA0(a1, 18, 42, (int)sub_4185E0); sub_4D2BA0(a1, 12, 57, (int)sub_417130); sub_4D2BA0(a1, 45, 16, (int)sub_519880); sub_4D2BA0(a1, 49, 1, (int)sub_623D80); sub_4D2BA0(a1, 49, 8, (int)sub_625020); sub_4D2BA0(a1, 49, 12, (int)sub_625640); sub_4D2BA0(a1, 49, 16, (int)sub_6259D0); sub_4D2BA0(a1, 4, 258, (int)sub_417070); sub_4D2BA0(a1, 4, 259, (int)sub_418810); sub_4D2BA0(a1, 51, 1, (int)sub_561170); sub_4D2BA0(a1, 51, 5, (int)sub_561320); sub_4D2BA0(a1, 12, 78, (int)sub_53EF00); sub_4D2BA0(a1, 41, 13, (int)sub_484B80); sub_4D2BA0(a1, 26, 19, (int)sub_439750); sub_4D2BA0(a1, 26, 21, (int)sub_439C20); sub_4D2BA0(a1, 4, 279, (int)sub_574190); sub_4D2BA0(a1, 12, 85, (int)sub_51CD60); sub_4D2BA0(a1, 53, 6, (int)sub_4D0200); sub_4D2BA0(a1, 53, 7, (int)sub_4D1160); sub_4D2BA0(a1, 53, 9, (int)sub_4D02F0); sub_4D2BA0(a1, 12, 87, (int)sub_51D320); sub_4D2BA0(a1, 4, 292, (int)sub_5621E0); sub_4D2BA0(a1, 4, 294, (int)sub_562290); sub_4D2BA0(a1, 4, 296, (int)sub_562360); sub_4D2BA0(a1, 4, 298, (int)sub_562410); sub_4D2BA0(a1, 4, 302, (int)sub_5624E0); sub_4D2BA0(a1, 12, 89, (int)sub_5368B0); sub_4D2BA0(a1, 12, 94, (int)sub_51DDA0); sub_4D2BA0(a1, 21, 33, (int)sub_459FA0); sub_4D2BA0(a1, 12, 103, (int)sub_51E910); sub_4D2BA0(a1, 12, 105, (int)sub_51FD20); sub_4D2BA0(a1, 12, 109, (int)sub_53C6C0); return sub_4D2BA0(a1, 12, 111, (int)sub_53CFB0); } // 516520: using guessed type int __stdcall nullsub_4(int, int, int); // 53B580: using guessed type int __stdcall sub_53B580(int, int, __int16); // 53C6C0: using guessed type int __stdcall sub_53C6C0(int, int, __int16); // 53CFB0: using guessed type int __stdcall sub_53CFB0(int, int, __int16); //----- (004D49A0) -------------------------------------------------------- void *__thiscall sub_4D49A0(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_6C596C; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_6530A4(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C596C: using guessed type int (__thiscall *off_6C596C)(void *, char); //----- (004D49F0) -------------------------------------------------------- int __cdecl sub_4D49F0(void *a1) { sub_4D2BA0(a1, 2, 1, (int)sub_469240); sub_4D2BA0(a1, 2, 3, (int)sub_469350); sub_4D2BA0(a1, 2, 4, (int)sub_469360); return sub_4D2BA0(a1, 2, 5, (int)nullsub_5); } // 547FC0: using guessed type int __stdcall nullsub_5(int, int); //----- (004D4A40) -------------------------------------------------------- void *__thiscall sub_4D4A40(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_6C5974; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_6530A4(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C5974: using guessed type int (__thiscall *off_6C5974)(void *, char); //----- (004D4A90) -------------------------------------------------------- int __cdecl sub_4D4A90(void *a1) { sub_4D2BA0(a1, 2, 2, (int)sub_4C75B0); sub_4D2BA0(a1, 2, 3, (int)sub_4C76C0); sub_4D2BA0(a1, 2, 4, (int)sub_4C7710); sub_4D2BA0(a1, 2, 5, (int)nullsub_3); return sub_4D2BA0(a1, 10, 7, (int)sub_4C77F0); } // 4FF7B0: using guessed type _DWORD __stdcall nullsub_3(_DWORD); //----- (004D4AF0) -------------------------------------------------------- void *__thiscall sub_4D4AF0(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_6C597C; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_6530A4(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C597C: using guessed type int (__thiscall *off_6C597C)(void *, char); //----- (004D4B40) -------------------------------------------------------- int __cdecl sub_4D4B40(void *a1) { sub_4D2BA0(a1, 2, 1, (int)sub_5A0E90); sub_4D2BA0(a1, 2, 3, (int)sub_5A0FA0); sub_4D2BA0(a1, 2, 4, (int)sub_5A0FD0); sub_4D2BA0(a1, 2, 5, (int)nullsub_5); sub_4D2BA0(a1, 2, 21, (int)sub_54F000); sub_4D2BA0(a1, 2, 22, (int)sub_54EF00); sub_4D2BA0(a1, 2, 33, (int)sub_450990); sub_4D2BA0(a1, 2, 37, (int)sub_54F7C0); sub_4D2BA0(a1, 2, 43, (int)sub_43EBB0); sub_4D2BA0(a1, 3, 25, (int)sub_5A3CA0); sub_4D2BA0(a1, 3, 22, (int)sub_5A3BF0); sub_4D2BA0(a1, 4, 76, (int)sub_44A270); sub_4D2BA0(a1, 4, 30, (int)sub_5A10B0); sub_4D2BA0(a1, 4, 31, (int)sub_44A3A0); sub_4D2BA0(a1, 4, 32, (int)sub_44A580); sub_4D2BA0(a1, 4, 33, (int)sub_44A790); sub_4D2BA0(a1, 4, 34, (int)sub_44A8A0); sub_4D2BA0(a1, 4, 205, (int)sub_44A9B0); sub_4D2BA0(a1, 4, 214, (int)sub_44AAC0); sub_4D2BA0(a1, 4, 35, (int)sub_44B0C0); sub_4D2BA0(a1, 4, 36, (int)sub_44B620); sub_4D2BA0(a1, 4, 37, (int)sub_44B3F0); sub_4D2BA0(a1, 4, 41, (int)sub_44B1D0); sub_4D2BA0(a1, 4, 152, (int)sub_44B2E0); sub_4D2BA0(a1, 4, 208, (int)sub_44DF20); sub_4D2BA0(a1, 4, 211, (int)sub_5A3E60); sub_4D2BA0(a1, 4, 46, (int)sub_44BB60); sub_4D2BA0(a1, 4, 48, (int)sub_44B920); sub_4D2BA0(a1, 4, 47, (int)sub_44BF50); sub_4D2BA0(a1, 4, 49, (int)sub_5A1660); sub_4D2BA0(a1, 4, 29, (int)sub_5A1200); sub_4D2BA0(a1, 4, 50, (int)sub_44B500); sub_4D2BA0(a1, 4, 227, (int)sub_44C700); sub_4D2BA0(a1, 4, 230, (int)sub_44C8A0); sub_4D2BA0(a1, 4, 233, (int)sub_44CA40); sub_4D2BA0(a1, 14, 1, (int)sub_4CCA10); sub_4D2BA0(a1, 14, 8, (int)sub_4CCB80); sub_4D2BA0(a1, 14, 12, (int)sub_4CCE50); sub_4D2BA0(a1, 14, 22, (int)sub_4CCF70); sub_4D2BA0(a1, 14, 31, (int)sub_4CB4A0); sub_4D2BA0(a1, 14, 42, (int)sub_4CB590); sub_4D2BA0(a1, 14, 60, (int)sub_4CB640); sub_4D2BA0(a1, 14, 70, (int)sub_4CB690); sub_4D2BA0(a1, 14, 77, (int)sub_4CB6E0); sub_4D2BA0(a1, 14, 79, (int)sub_4CC900); sub_4D2BA0(a1, 14, 94, (int)sub_4CB450); sub_4D2BA0(a1, 6, 14, (int)sub_49A730); sub_4D2BA0(a1, 22, 13, (int)sub_496C40); sub_4D2BA0(a1, 22, 17, (int)sub_496770); sub_4D2BA0(a1, 22, 15, (int)sub_4984D0); sub_4D2BA0(a1, 24, 6, (int)sub_5A1950); sub_4D2BA0(a1, 24, 7, (int)sub_5A1A30); sub_4D2BA0(a1, 29, 67, (int)sub_5A1B10); sub_4D2BA0(a1, 29, 68, (int)sub_5A1BD0); sub_4D2BA0(a1, 29, 71, (int)sub_5A1C90); sub_4D2BA0(a1, 29, 72, (int)sub_5A1D40); sub_4D2BA0(a1, 29, 73, (int)sub_5A1DF0); sub_4D2BA0(a1, 29, 74, (int)sub_5A1EA0); sub_4D2BA0(a1, 29, 75, (int)sub_5A1FB0); sub_4D2BA0(a1, 29, 129, (int)sub_476D00); sub_4D2BA0(a1, 29, 121, (int)sub_42E420); sub_4D2BA0(a1, 29, 150, (int)sub_5A2340); sub_4D2BA0(a1, 29, 159, (int)sub_5A2560); sub_4D2BA0(a1, 29, 176, (int)sub_5A2740); sub_4D2BA0(a1, 29, 184, (int)sub_5A2860); sub_4D2BA0(a1, 38, 113, (int)sub_5A2650); sub_4D2BA0(a1, 38, 118, (int)sub_46DC50); sub_4D2BA0(a1, 38, 119, (int)sub_46DD60); sub_4D2BA0(a1, 38, 120, (int)sub_46DE60); sub_4D2BA0(a1, 38, 121, (int)sub_46DF60); sub_4D2BA0(a1, 38, 122, (int)sub_46E090); sub_4D2BA0(a1, 38, 123, (int)sub_46E150); sub_4D2BA0(a1, 31, 19, (int)sub_5A20E0); sub_4D2BA0(a1, 31, 18, (int)sub_5A3D50); sub_4D2BA0(a1, 2, 35, (int)sub_5A2420); sub_4D2BA0(a1, 37, 50, (int)sub_482910); sub_4D2BA0(a1, 37, 53, (int)sub_4829D0); sub_4D2BA0(a1, 41, 2, (int)sub_4838F0); sub_4D2BA0(a1, 4, 178, (int)sub_59E300); sub_4D2BA0(a1, 29, 199, (int)sub_475750); sub_4D2BA0(a1, 4, 184, (int)sub_4758F0); sub_4D2BA0(a1, 29, 218, (int)sub_477ED0); sub_4D2BA0(a1, 29, 193, (int)sub_476B00); sub_4D2BA0(a1, 29, 227, (int)sub_4759E0); sub_4D2BA0(a1, 29, 244, (int)sub_475EF0); sub_4D2BA0(a1, 44, 4, (int)sub_5A3F80); sub_4D2BA0(a1, 44, 7, (int)sub_5A2960); sub_4D2BA0(a1, 44, 11, (int)sub_5A2A30); sub_4D2BA0(a1, 44, 19, (int)sub_5A2B00); sub_4D2BA0(a1, 44, 23, (int)sub_5A2BE0); sub_4D2BA0(a1, 44, 28, (int)sub_5A2CB0); sub_4D2BA0(a1, 44, 42, (int)sub_5A2D80); sub_4D2BA0(a1, 44, 47, (int)sub_5A3040); sub_4D2BA0(a1, 44, 52, (int)sub_5A3110); sub_4D2BA0(a1, 44, 57, (int)sub_5A31E0); sub_4D2BA0(a1, 44, 62, (int)sub_5A32B0); sub_4D2BA0(a1, 44, 29, (int)nullsub_5); sub_4D2BA0(a1, 44, 31, (int)nullsub_5); sub_4D2BA0(a1, 4, 203, (int)sub_44C1C0); sub_4D2BA0(a1, 45, 15, (int)sub_44C2B0); sub_4D2BA0(a1, 38, 134, (int)sub_46E210); sub_4D2BA0(a1, 2, 101, (int)sub_5A3380); sub_4D2BA0(a1, 4, 221, (int)sub_614350); sub_4D2BA0(a1, 47, 1, (int)sub_614270); sub_4D2BA0(a1, 47, 9, (int)sub_614970); sub_4D2BA0(a1, 2, 106, (int)sub_5A3450); sub_4D2BA0(a1, 2, 107, (int)sub_5A35C0); sub_4D2BA0(a1, 51, 12, (int)sub_5A3730); sub_4D2BA0(a1, 17, 28, (int)sub_5A4180); sub_4D2BA0(a1, 17, 29, (int)sub_5A3800); sub_4D2BA0(a1, 22, 51, (int)sub_4965D0); sub_4D2BA0(a1, 41, 9, (int)sub_4848B0); sub_4D2BA0(a1, 41, 10, (int)sub_486350); sub_4D2BA0(a1, 41, 15, (int)sub_484F00); sub_4D2BA0(a1, 41, 16, (int)sub_486500); sub_4D2BA0(a1, 4, 277, (int)sub_44CBE0); sub_4D2BA0(a1, 52, 11, (int)sub_46CFB0); sub_4D2BA0(a1, 52, 12, (int)sub_46CCA0); sub_4D2BA0(a1, 22, 59, (int)sub_498390); sub_4D2BA0(a1, 4, 287, (int)sub_44CCB0); sub_4D2BA0(a1, 53, 18, (int)sub_4D1020); sub_4D2BA0(a1, 4, 288, (int)sub_5A38E0); sub_4D2BA0(a1, 4, 290, (int)sub_5A39F0); return sub_4D2BA0(a1, 4, 304, (int)sub_5A3AF0); } // 547FC0: using guessed type int __stdcall nullsub_5(int, int); //----- (004D5360) -------------------------------------------------------- void *__thiscall sub_4D5360(char *this, char a2) { void *v2; // edi@1 void **v3; // esi@1 signed int v4; // ebx@1 v2 = this; *(_DWORD *)this = &off_6C5984; v3 = (void **)(this + 4); v4 = 1024; do { if ( *v3 != (char *)v2 + 4100 ) sub_6530A4(*v3); ++v3; --v4; } while ( v4 ); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C5984: using guessed type int (__thiscall *off_6C5984)(void *, char); //----- (004D53B0) -------------------------------------------------------- int __cdecl sub_4D53B0(void *a1) { sub_4D2BA0(a1, 2, 4, (int)sub_45ACA0); sub_4D2BA0(a1, 2, 5, (int)nullsub_3); sub_4D2BA0(a1, 2, 17, (int)sub_45AD80); sub_4D2BA0(a1, 4, 104, (int)sub_45B130); sub_4D2BA0(a1, 4, 106, (int)sub_45AFC0); sub_4D2BA0(a1, 4, 105, (int)sub_45B320); sub_4D2BA0(a1, 4, 107, (int)sub_45B4F0); sub_4D2BA0(a1, 4, 108, (int)sub_45B6B0); sub_4D2BA0(a1, 6, 16, (int)sub_45B7F0); sub_4D2BA0(a1, 6, 17, (int)sub_45B8B0); sub_4D2BA0(a1, 29, 147, (int)sub_474200); sub_4D2BA0(a1, 8, 85, (int)sub_5A0690); sub_4D2BA0(a1, 4, 149, (int)sub_59E570); sub_4D2BA0(a1, 4, 170, (int)sub_59E7C0); sub_4D2BA0(a1, 4, 171, (int)sub_59E930); sub_4D2BA0(a1, 37, 54, (int)sub_482CD0); sub_4D2BA0(a1, 4, 173, (int)sub_45B970); sub_4D2BA0(a1, 4, 174, (int)sub_45BB80); sub_4D2BA0(a1, 38, 114, (int)sub_472190); sub_4D2BA0(a1, 38, 116, (int)sub_4722A0); sub_4D2BA0(a1, 38, 132, (int)sub_4723B0); sub_4D2BA0(a1, 38, 133, (int)sub_4724B0); sub_4D2BA0(a1, 4, 177, (int)sub_484490); sub_4D2BA0(a1, 41, 4, (int)sub_486870); return sub_4D2BA0(a1, 17, 31, (int)sub_5BD770); } // 4FF7B0: using guessed type _DWORD __stdcall nullsub_3(_DWORD); //----- (004D55B0) -------------------------------------------------------- int __fastcall sub_4D55B0(int a1) { int v1; // edi@1 unsigned int v2; // eax@1 int v3; // esi@4 char v5; // [sp+8h] [bp-4h]@4 v1 = a1; std::_Lockit::_Lockit(0); v2 = *(_DWORD *)(v1 + 4); if ( v2 && v2 < 0xFFFFFFFF ) *(_DWORD *)(v1 + 4) = v2 - 1; v3 = *(_DWORD *)(v1 + 4) == 0 ? v1 : 0; std::_Lockit::__Lockit(&v5); return v3; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004D5600) -------------------------------------------------------- void __thiscall sub_4D5600(void *this) { int v1; // edi@1 unsigned int v2; // eax@2 int v3; // esi@5 int v4; // esi@5 char v5; // [sp+4h] [bp-4h]@5 v1 = *(_DWORD *)this; if ( *(_DWORD *)this ) { std::_Lockit::_Lockit(0); v2 = *(_DWORD *)(v1 + 4); if ( v2 && v2 < 0xFFFFFFFF ) *(_DWORD *)(v1 + 4) = v2 - 1; v3 = -(*(_DWORD *)(v1 + 4) == 0); std::_Lockit::__Lockit(&v5); v4 = v1 & v3; if ( v4 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v4)(v4, 1); } } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004D5650) -------------------------------------------------------- void *__thiscall sub_4D5650(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C5998; if ( a2 & 1 ) operator delete(this); return v2; } // 6C5998: using guessed type int (__thiscall *off_6C5998)(void *, char); //----- (004D5680) -------------------------------------------------------- int __thiscall sub_4D5680(int this, int a2) { int v2; // esi@1 int v3; // edi@1 unsigned int v4; // eax@1 v2 = **(_DWORD **)(this + 48); v3 = a2; *(_DWORD *)a2 = v2; std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v2 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v2 + 4) = v4 + 1; std::_Lockit::__Lockit(&a2); return v3; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004D56C0) -------------------------------------------------------- void *__thiscall sub_4D56C0(void *this, int a2) { return this; } //----- (004D56D0) -------------------------------------------------------- bool __cdecl sub_4D56D0(__int16 a1, int a2, int a3) { if ( !a1 ) { if ( a3 ) { sub_6390B0(&unk_86DDD8, a2, a3); return a1 == 0; } sub_639100(&unk_86DDD8, a2, 1); } return a1 == 0; } //----- (004D5720) -------------------------------------------------------- void *__thiscall sub_4D5720(void *this) { void *result; // eax@1 result = this; *(_BYTE *)this = 0; return result; } //----- (004D5730) -------------------------------------------------------- int __fastcall sub_4D5730(unsigned int a1) { __int64 v1; // qax@1 unsigned __int8 v2; // cl@2 unsigned __int8 v3; // cl@6 unsigned __int8 v4; // cl@10 unsigned __int8 v5; // cl@14 v1 = a1; do { v2 = *(_BYTE *)(HIDWORD(v1) + v1); if ( !v2 ) break; if ( v2 >= 0x41u && v2 <= 0x5Au ) *(_BYTE *)(HIDWORD(v1) + v1) = v2 + 32; v3 = *(_BYTE *)(HIDWORD(v1) + v1 + 1); if ( !v3 ) break; if ( v3 >= 0x41u && v3 <= 0x5Au ) *(_BYTE *)(HIDWORD(v1) + v1 + 1) = v3 + 32; v4 = *(_BYTE *)(HIDWORD(v1) + v1 + 2); if ( !v4 ) break; if ( v4 >= 0x41u && v4 <= 0x5Au ) *(_BYTE *)(HIDWORD(v1) + v1 + 2) = v4 + 32; v5 = *(_BYTE *)(HIDWORD(v1) + v1 + 3); if ( !v5 ) break; if ( v5 >= 0x41u && v5 <= 0x5Au ) *(_BYTE *)(HIDWORD(v1) + v1 + 3) = v5 + 32; HIDWORD(v1) += 4; } while ( HIDWORD(v1) < 0x100 ); return v1; } //----- (004D57B0) -------------------------------------------------------- char *__thiscall sub_4D57B0(char *this, const char *a2) { return strcpy(this, a2); } //----- (004D57D0) -------------------------------------------------------- char *__thiscall sub_4D57D0(char *this, int a2) { char *v2; // esi@1 v2 = this; sprintf(this, "%d", a2); return v2; } //----- (004D57F0) -------------------------------------------------------- signed int __thiscall sub_4D57F0(void *this) { void *v1; // esi@1 signed int result; // eax@2 void *v3; // eax@3 char *v4; // edx@3 char v5; // cl@4 int v6; // edi@5 v1 = this; if ( *(_BYTE *)this == 34 ) { v3 = this; v4 = (char *)this + 1; do { v5 = *(_BYTE *)v3; v3 = (char *)v3 + 1; } while ( v5 ); v6 = v3 - v4; if ( *((_BYTE *)v1 + v3 - v4 - 1) == 34 ) { strncpy((char *)v1, (const char *)v1 + 1, v6 - 2); *((_BYTE *)v1 + v6 - 2) = 0; result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (004D5840) -------------------------------------------------------- int __thiscall sub_4D5840(const char *this, __int16 a2) { signed __int64 v2; // qax@1 unsigned int i; // esi@1 const char v4; // bl@2 v2 = 4294967296i64; for ( i = strlen(this) - 1; (i & 0x80000000u) == 0; --i ) { v4 = this[i]; if ( (unsigned __int8)v4 < 0x30u ) break; if ( (unsigned __int8)v4 > 0x39u ) break; LODWORD(v2) = HIDWORD(v2) * ((unsigned __int8)v4 - 48) + v2; HIDWORD(v2) *= 10; } if ( a2 ) this[i + 1] = 0; return v2; } //----- (004D58A0) -------------------------------------------------------- char __thiscall sub_4D58A0(void *this, int a2) { return *((_BYTE *)this + a2); } //----- (004D58B0) -------------------------------------------------------- int __thiscall sub_4D58B0(void *this, int a2, char a3) { int result; // eax@1 LOBYTE(result) = a3; *((_BYTE *)this + a2) = a3; return result; } //----- (004D58C0) -------------------------------------------------------- signed __int16 __thiscall sub_4D58C0(const char *this, const char *a2) { signed __int16 result; // ax@2 if ( strcmp(this, a2) ) result = 0; else result = 1; return result; } //----- (004D5910) -------------------------------------------------------- int __thiscall sub_4D5910(const char *this, const char *a2) { return strcmp(this, a2); } //----- (004D5950) -------------------------------------------------------- char *__thiscall sub_4D5950(char *this, const char *a2) { char *result; // eax@1 result = this; strcat(this, a2); return result; } //----- (004D59A0) -------------------------------------------------------- int __thiscall sub_4D59A0(void *this, unsigned int a2, int a3, int a4) { int result; // eax@1 result = a3; *(_BYTE *)a3 = 0; if ( a2 < 0xA ) { if ( *((_DWORD *)this + a2 + 1) ) result = (*(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)this + a2 + 1) + 8))(a3, a4); } return result; } //----- (004D59D0) -------------------------------------------------------- int __stdcall sub_4D59D0(int a1, int a2, int a3) { int result; // eax@1 result = a1; *(_BYTE *)a1 = 0; return result; } //----- (004D59E0) -------------------------------------------------------- int __thiscall sub_4D59E0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6C5AF0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; return result; } // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); //----- (004D5A10) -------------------------------------------------------- void __thiscall sub_4D5A10(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 4); *(_DWORD *)this = &off_6C5B2C; if ( v2 ) { *(_DWORD *)v2 = &off_6C59A8; operator delete(v2); } *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5B2C: using guessed type int (__stdcall *off_6C5B2C)(int); //----- (004D5A50) -------------------------------------------------------- int __cdecl sub_4D5A50() { int result; // eax@1 result = operator new(8u); if ( result ) { *(_DWORD *)result = &off_6C5B54; *(_DWORD *)(result + 4) = 0; } else { result = 0; } return result; } // 6C5B54: using guessed type int (__stdcall *off_6C5B54)(int); //----- (004D5A70) -------------------------------------------------------- bool __thiscall sub_4D5A70(int this, int a2) { int v2; // esi@1 v2 = this; return (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 4))(this + 4, a2) && (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 288))(v2 + 288, a2) && (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 552))(v2 + 552, a2); } //----- (004D5AD0) -------------------------------------------------------- signed int __thiscall sub_4D5AD0(int this, const char *a2) { signed int result; // eax@2 if ( a2 ) { if ( strcmp((const char *)(this + 12), a2) ) result = 0; else result = 1; } else { result = 1; } return result; } //----- (004D5B30) -------------------------------------------------------- void *__thiscall sub_4D5B30(int this, void *a2, int a3) { void *result; // eax@2 int v4; // eax@4 char v5; // [sp+4h] [bp-104h]@4 unsigned int v6; // [sp+104h] [bp-4h]@1 int v7; // [sp+108h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( *(_DWORD *)(this + 4) ) { result = (void *)(*(int (__thiscall **)(_DWORD, void *, int))(**(_DWORD **)(this + 4) + 8))( *(_DWORD *)(this + 4), a2, a3); } else { if ( *(_DWORD *)(this + 8) && (v4 = *(_DWORD *)(this + 8), v5 = 0, (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v4 + 8))(v4, &v5, a3)) ) { memcpy(a2, &v5, 0x100u); result = a2; } else { result = 0; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D5BD0) -------------------------------------------------------- int __thiscall sub_4D5BD0(int this, int a2, int a3) { return (***(int (__stdcall ****)(_DWORD, _DWORD, _DWORD))(this + 48))(a2, a3, this + 4); } //----- (004D5BF0) -------------------------------------------------------- void *__thiscall sub_4D5BF0(int this, void *a2, int a3) { void *result; // eax@1 result = a2; memcpy(a2, (const void *)(this + 4), 0x100u); return result; } //----- (004D5C10) -------------------------------------------------------- int __thiscall sub_4D5C10(void *this) { void *i; // esi@1 int result; // eax@2 int v3; // eax@4 LABEL_2: for ( i = this; ; ++**((_DWORD **)i + 1) ) { result = sub_656AE5(*(FILE **)i); if ( result == 10 ) break; if ( result != 59 ) return result; while ( 1 ) { v3 = sub_656AE5(*(FILE **)i); if ( v3 == 10 ) break; if ( v3 == -1 ) goto LABEL_2; } } ++**((_DWORD **)i + 1); return result; } //----- (004D5C50) -------------------------------------------------------- int __thiscall sub_4D5C50(void *this) { void *v1; // esi@1 int result; // eax@2 int v3; // eax@7 v1 = this; do { result = *((_DWORD *)v1 + 2); if ( result == -1 ) { result = sub_656AE5(*(FILE **)v1); if ( result == 10 ) { ++**((_DWORD **)v1 + 1); } else { if ( result == 59 ) { while ( 1 ) { v3 = sub_656AE5(*(FILE **)v1); if ( v3 == 10 ) break; if ( v3 == -1 ) goto LABEL_11; } ++**((_DWORD **)v1 + 1); LABEL_11: result = sub_4D5C10(v1); } } } else { *((_DWORD *)v1 + 2) = -1; } } while ( result <= 32 && result != -1 ); *((_DWORD *)v1 + 2) = result; return result; } //----- (004D5CD0) -------------------------------------------------------- void *__thiscall sub_4D5CD0(int this, void *a2) { int v2; // edi@1 int v3; // eax@2 int v4; // eax@7 void *result; // eax@16 const void *v6; // [sp+Ch] [bp-4h]@1 v2 = this; *(_DWORD *)(this + 524) = 0; *(_BYTE *)(this + 268) = 34; ++*(_DWORD *)(v2 + 524); v6 = (const void *)(this + 268); while ( 1 ) { v3 = *(_DWORD *)(v2 + 8); if ( v3 == -1 ) { v3 = sub_656AE5(*(FILE **)v2); if ( v3 == 10 ) { ++**(_DWORD **)(v2 + 4); } else { if ( v3 == 59 ) { while ( 1 ) { v4 = sub_656AE5(*(FILE **)v2); if ( v4 == 10 ) break; if ( v4 == -1 ) goto LABEL_11; } ++**(_DWORD **)(v2 + 4); LABEL_11: v3 = sub_4D5C10((void *)v2); } } } else { *(_DWORD *)(v2 + 8) = -1; } if ( v3 == 34 ) break; if ( v3 == 10 ) { *(_DWORD *)(v2 + 528) = "String over line"; return 0; } if ( v3 == -1 ) { *(_DWORD *)(v2 + 528) = "File end in string"; return 0; } *(_BYTE *)(v2 + (*(_DWORD *)(v2 + 524))++ + 268) = v3; } *(_BYTE *)(v2 + (*(_DWORD *)(v2 + 524))++ + 268) = 34; *(_BYTE *)(*(_DWORD *)(v2 + 524) + v2 + 268) = 0; result = a2; memcpy(a2, v6, 0x100u); return result; } //----- (004D5DE0) -------------------------------------------------------- bool __stdcall sub_4D5DE0(signed int a1) { return (unsigned int)(a1 - 48) <= 9 || a1 >= 65 && a1 <= 90 || a1 >= 97 && a1 <= 122 || a1 == 95; } //----- (004D5E20) -------------------------------------------------------- __int16 __stdcall sub_4D5E20(signed int a1) { return (unsigned int)(a1 - 48) > 9 && (a1 < 65 || a1 > 90) && (a1 < 97 || a1 > 122) && a1 != 95; } //----- (004D5E70) -------------------------------------------------------- signed int __thiscall sub_4D5E70(int this, int a2) { unsigned int v2; // eax@1 signed int result; // eax@2 v2 = *(_DWORD *)(this + 512); if ( v2 < 0x80 ) { *(_DWORD *)(this + 4 * v2) = a2; result = 1; ++*(_DWORD *)(this + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); result = 0; } return result; } //----- (004D5EC0) -------------------------------------------------------- int __thiscall sub_4D5EC0(int this) { int result; // eax@1 result = this; *(_BYTE *)this = 0; *(_BYTE *)(this + 256) = 0; return result; } //----- (004D5ED0) -------------------------------------------------------- int __thiscall sub_4D5ED0(int this, int a2) { int v2; // esi@1 const char *v3; // edi@2 int result; // eax@6 v2 = *(_DWORD *)(this + 65536) - 1; if ( v2 < 0 ) { LABEL_5: if ( a2 ) { sub_6390B0(&unk_86DDD8, (int)"PineScriptStack::VariableStack::vs_FindVariable : Variable not found", a2); result = 0; } else { sub_639100(&unk_86DDD8, (int)"PineScriptStack::VariableStack::vs_FindVariable : Variable not found", 1); result = 0; } } else { v3 = (const char *)(this + (v2 << 9)); while ( strcmp(v3, (const char *)a2) ) { v3 -= 512; --v2; if ( v2 < 0 ) goto LABEL_5; } result = (v2 << 9) + this + 256; } return result; } //----- (004D5F70) -------------------------------------------------------- int __thiscall sub_4D5F70(int this, int a2) { unsigned int v2; // edi@1 int result; // eax@3 v2 = *(_DWORD *)(this + 65536); if ( v2 < 0x7F ) { if ( a2 ) { memcpy((void *)(this + (v2 << 9)), (const void *)a2, 0x100u); result = ((*(_DWORD *)(this + 65536))++ << 9) + this + 256; } else { result = 0; } } else { if ( a2 ) { sub_6390B0(&unk_86DDD8, (int)"Variable stack overflow", a2); result = 0; } else { sub_639100(&unk_86DDD8, (int)"Variable stack overflow", 1); result = 0; } } return result; } //----- (004D6000) -------------------------------------------------------- int __thiscall sub_4D6000(int this) { return _LN21((void *)(this + 260), 0x200u, 128, nullsub_2); } //----- (004D6020) -------------------------------------------------------- int __thiscall sub_4D6020(int this, int a2) { int result; // eax@1 int v3; // esi@1 result = 0; *(_DWORD *)(this + 256) = 0; *(_DWORD *)(this + 4) = 0; v3 = *(_DWORD *)(this + 256); *(_DWORD *)(this + 65800) = a2; *(_DWORD *)(this + 8 * v3) = a2; *(_DWORD *)(this + 65832) = 0; *(_DWORD *)(this + 65828) = 0; *(_DWORD *)(this + 65840) = 0; *(_DWORD *)(this + 65836) = 0; *(_DWORD *)(this + 65796) = 0; return result; } //----- (004D6070) -------------------------------------------------------- int __thiscall sub_4D6070(int this, int a2) { int v2; // eax@1 int result; // eax@2 v2 = *(_DWORD *)(this + 256); if ( *(_DWORD *)(this + 8 * v2) ) result = (*(int (__thiscall **)(_DWORD, int, int, int))(**(_DWORD **)(this + 8 * v2) + 4))( *(_DWORD *)(this + 8 * v2), a2, this, this + 8 * v2 + 4); else result = 0; return result; } //----- (004D60B0) -------------------------------------------------------- int __thiscall sub_4D60B0(void *this, int a2) { return sub_4D5F70((int)((char *)this + 260), a2); } //----- (004D60C0) -------------------------------------------------------- signed int __thiscall sub_4D60C0(int this, int a2) { unsigned int v2; // eax@1 signed int result; // eax@2 int v4; // eax@3 v2 = *(_DWORD *)(this + 256); if ( v2 < 0x1F ) { v4 = v2 + 1; *(_DWORD *)(this + 256) = v4; *(_DWORD *)(this + 8 * v4 + 4) = 0; *(_DWORD *)(this + 8 * *(_DWORD *)(this + 256)) = a2; result = 1; } else { result = 0; } return result; } //----- (004D6100) -------------------------------------------------------- signed int __thiscall sub_4D6100(int this) { signed int result; // eax@1 result = *(_DWORD *)(this + 256); if ( result ) { *(_DWORD *)(this + 256) = result - 1; result = 1; } return result; } //----- (004D6120) -------------------------------------------------------- __int16 __thiscall sub_4D6120(void *this, const char *a2, int a3) { void *v3; // esi@1 __int16 result; // ax@2 __int16 v5; // si@3 FILE *v6; // [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 int v14; // [sp+22Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v3 = this; v8 = -1; v6 = fopen(a2, "r"); v7 = a3; *(_DWORD *)a3 = 1; v10 = 0; v9 = 0; v11 = a3; v13 = 0; if ( v6 ) { v5 = (**(int (__thiscall ***)(void *, FILE **))v3)(v3, &v6); if ( v6 ) fclose(v6); result = v5; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D61F0) -------------------------------------------------------- void *__thiscall sub_4D61F0(void *this, void *a2) { void *v2; // esi@1 void *result; // eax@2 v2 = this; if ( (unsigned int)dword_1321B950 < 0x80 ) { *(&dword_1321B750 + dword_1321B950++) = a2; result = this; } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); result = v2; } return result; } // 1321B950: using guessed type int dword_1321B950; //----- (004D6290) -------------------------------------------------------- void *__thiscall sub_4D6290(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C59A0; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); //----- (004D62C0) -------------------------------------------------------- __int64 __thiscall sub_4D62C0(int this) { __int64 result; // qax@2 if ( **(_DWORD **)(this + 36) ) result = **(_DWORD **)(this + 52); else result = 0i64; return result; } //----- (004D62E0) -------------------------------------------------------- int __thiscall sub_4D62E0(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; if ( *(_BYTE *)(this + 64) & 1 ) operator delete(**(void ***)(this + 16)); **(_DWORD **)(v1 + 16) = 0; **(_DWORD **)(v1 + 32) = 0; **(_DWORD **)(v1 + 48) = 0; **(_DWORD **)(v1 + 20) = 0; result = *(_DWORD *)(v1 + 36); *(_DWORD *)result = 0; **(_DWORD **)(v1 + 52) = 0; *(_DWORD *)(v1 + 64) &= 0xFFFFFFFEu; *(_DWORD *)(v1 + 60) = 0; return result; } //----- (004D6340) -------------------------------------------------------- int __thiscall sub_4D6340(int this) { int result; // eax@1 *(_DWORD *)(this + 32) = this + 24; *(_DWORD *)(this + 36) = this + 28; *(_DWORD *)(this + 16) = this + 8; *(_DWORD *)(this + 48) = this + 40; *(_DWORD *)(this + 20) = this + 12; *(_DWORD *)(this + 52) = this + 44; *(_DWORD *)(this + 12) = 0; **(_DWORD **)(this + 36) = 0; **(_DWORD **)(this + 52) = 0; **(_DWORD **)(this + 16) = 0; **(_DWORD **)(this + 32) = 0; result = *(_DWORD *)(this + 48); *(_DWORD *)result = 0; return result; } //----- (004D63A0) -------------------------------------------------------- int __thiscall sub_4D63A0(int this, unsigned __int8 a2) { return _Tolower(a2, (const _Ctypevec *)(this + 8)); } //----- (004D63C0) -------------------------------------------------------- int *__thiscall sub_4D63C0(void *this, int *a2, int *a3) { int *v3; // esi@1 const _Ctypevec *v4; // edi@2 v3 = a2; if ( a2 != a3 ) { v4 = (const _Ctypevec *)((char *)this + 8); do { *(_BYTE *)v3 = _Tolower(*(_BYTE *)v3, v4); v3 = (int *)((char *)v3 + 1); } while ( v3 != a3 ); } return v3; } //----- (004D63F0) -------------------------------------------------------- int __thiscall sub_4D63F0(int this, unsigned __int8 a2) { return _Toupper(a2, (const _Ctypevec *)(this + 8)); } //----- (004D6410) -------------------------------------------------------- int *__thiscall sub_4D6410(void *this, int *a2, int *a3) { int *v3; // esi@1 const _Ctypevec *v4; // edi@2 v3 = a2; if ( a2 != a3 ) { v4 = (const _Ctypevec *)((char *)this + 8); do { *(_BYTE *)v3 = _Toupper(*(_BYTE *)v3, v4); v3 = (int *)((char *)v3 + 1); } while ( v3 != a3 ); } return v3; } //----- (004D6440) -------------------------------------------------------- char __stdcall sub_4D6440(char a1) { return a1; } //----- (004D6450) -------------------------------------------------------- int __stdcall sub_4D6450(const void *a1, int a2, void *a3) { memmove(a3, a1, a2 - (_DWORD)a1); return a2; } //----- (004D6480) -------------------------------------------------------- char __stdcall sub_4D6480(char a1, int a2) { return a1; } //----- (004D6490) -------------------------------------------------------- int __stdcall sub_4D6490(const void *a1, int a2, int a3, void *a4) { memmove(a4, a1, a2 - (_DWORD)a1); return a2; } //----- (004D64C0) -------------------------------------------------------- void *__thiscall sub_4D64C0(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = *((_DWORD *)this + 5); *(_DWORD *)this = &off_6C5C3C; if ( v3 <= 0 ) { if ( v3 < 0 ) sub_6530A4(*((void **)this + 4)); } else { free(*((void **)this + 4)); } *(_DWORD *)v2 = &off_6C5998; if ( a2 & 1 ) operator delete(v2); return v2; } // 6C5998: using guessed type int (__thiscall *off_6C5998)(void *, char); // 6C5C3C: using guessed type int (__thiscall *off_6C5C3C)(void *, char); //----- (004D6510) -------------------------------------------------------- int __thiscall sub_4D6510(int this, char a2, int a3) { int result; // eax@1 int v4; // ecx@1 int (__thiscall **v5)(void *, char); // edi@5 int (__thiscall **v6)(void *, char); // edi@8 int (__thiscall **v7)(void *, char); // edi@10 int (__thiscall **v8)(void *, char); // [sp+0h] [bp-14h]@6 int v9; // [sp+Ch] [bp-8h]@6 int (__thiscall **v10)(void *, char); // [sp+10h] [bp-4h]@6 result = a2 & 0x17; *(_DWORD *)(this + 12) = result; v4 = result & *(_DWORD *)(this + 16); if ( v4 ) { if ( (_BYTE)a3 ) _CxxThrowException(0, 0); if ( v4 & 4 ) { v5 = sub_651E3B(); a3 = (int)"ios_base::badbit set"; std::exception::exception(&a3); v9 = 1; v10 = v5; v8 = &off_6C5C70; _CxxThrowException(&v8, &unk_73A448); } if ( v4 & 2 ) { v6 = sub_651E3B(); a3 = (int)"ios_base::failbit set"; std::exception::exception(&a3); v9 = 1; v10 = v6; v8 = &off_6C5C70; _CxxThrowException(&v8, &unk_73A448); } v7 = sub_651E3B(); a3 = (int)"ios_base::eofbit set"; std::exception::exception(&a3); v9 = 1; v10 = v7; v8 = &off_6C5C70; _CxxThrowException(&v8, &unk_73A448); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6C5C70: using guessed type int (__thiscall *off_6C5C70)(void *, char); //----- (004D65F0) -------------------------------------------------------- void *__thiscall sub_4D65F0(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_6C598C; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 6C598C: using guessed type int (__thiscall *off_6C598C)(void *, char); //----- (004D6610) -------------------------------------------------------- void *__thiscall sub_4D6610(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_6C5C64; *((_DWORD *)v2 + 3) = *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 4) = *(_DWORD *)(a2 + 16); return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 6C5C64: using guessed type int (__thiscall *off_6C5C64)(void *, char); //----- (004D6640) -------------------------------------------------------- int __thiscall sub_4D6640(int this) { int v1; // esi@1 int result; // eax@1 int v3; // ebx@1 unsigned int v4; // eax@2 char v5; // [sp+Ch] [bp-8h]@4 int v6; // [sp+10h] [bp-4h]@2 v1 = this; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 513; *(_DWORD *)(this + 24) = 6; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; sub_4D6510(this, 0, 0); result = operator new(4u); v3 = result; if ( result ) { *(_DWORD *)result = std::locale::_Init(); v6 = sub_651AEE(); std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v6 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v6 + 4) = v4 + 1; result = std::_Lockit::__Lockit(&v5); *(_DWORD *)(v1 + 48) = v3; } else { *(_DWORD *)(v1 + 48) = 0; } return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651D2F: using guessed type int std__locale___Init(void); //----- (004D66D0) -------------------------------------------------------- void *__thiscall sub_4D66D0(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_653970(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004D6700) -------------------------------------------------------- void *__thiscall sub_4D6700(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_6C5C64; *((_DWORD *)v2 + 3) = *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 4) = *(_DWORD *)(a2 + 16); *(_DWORD *)v2 = &off_6C5C70; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 6C5C64: using guessed type int (__thiscall *off_6C5C64)(void *, char); // 6C5C70: using guessed type int (__thiscall *off_6C5C70)(void *, char); //----- (004D6730) -------------------------------------------------------- void *__thiscall sub_4D6730(void *this, char *a2) { void *result; // eax@1 char *v3; // ecx@1 char v4; // dl@2 char v5[256]; // [sp+8h] [bp-104h]@2 unsigned int v6; // [sp+108h] [bp-4h]@1 int v7; // [sp+10Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; result = this; v3 = a2; do { v4 = *v3; v3[v5 - a2] = *v3; ++v3; } while ( v4 ); strcat((char *)result, v5); return result; } // 86FEB8: using guessed type int __security_cookie; // 4D6730: using guessed type char var_104[256]; //----- (004D67A0) -------------------------------------------------------- char *__thiscall sub_4D67A0(void *this, int a2) { void *v2; // ebx@1 char v4; // [sp+Ch] [bp-104h]@1 unsigned int v5; // [sp+10Ch] [bp-4h]@1 int v6; // [sp+110h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v2 = this; sprintf(&v4, "%d", a2); return strcat((char *)v2, &v4); } // 86FEB8: using guessed type int __security_cookie; //----- (004D6820) -------------------------------------------------------- char *__thiscall sub_4D6820(void *this, const char *a2) { void *v2; // ebx@1 int v3; // edi@1 void *v4; // eax@1 signed int v5; // ecx@1 int v6; // esi@1 char v7; // dl@2 int v8; // eax@3 unsigned __int8 v9; // dl@4 signed int v10; // eax@8 int v11; // esi@8 unsigned int i; // edx@8 const char v13; // cl@9 int v15; // [sp+10h] [bp-108h]@1 char v16; // [sp+14h] [bp-104h]@12 unsigned int v17; // [sp+114h] [bp-4h]@1 int v18; // [sp+118h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v2 = this; v3 = 0; v4 = this; v5 = 1; v15 = 0; v6 = (int)((char *)v4 + 1); do { v7 = *(_BYTE *)v4; v4 = (char *)v4 + 1; } while ( v7 ); v8 = (int)((char *)v4 + -v6 - 1); if ( v8 >= 0 ) { do { v9 = *((_BYTE *)v2 + v8); if ( v9 < 0x30u ) break; if ( v9 > 0x39u ) break; v3 += v5 * (v9 - 48); v5 *= 10; --v8; } while ( v8 >= 0 ); v15 = v3; } *((_BYTE *)v2 + v8 + 1) = 0; v10 = 1; v11 = 0; for ( i = strlen(a2) - 1; (i & 0x80000000u) == 0; --i ) { v13 = a2[i]; if ( (unsigned __int8)v13 < 0x30u ) break; if ( (unsigned __int8)v13 > 0x39u ) break; v11 += v10 * ((unsigned __int8)v13 - 48); v10 *= 10; } sprintf(&v16, "%d", v15 + v11); return strcat((char *)v2, &v16); } // 86FEB8: using guessed type int __security_cookie; //----- (004D6940) -------------------------------------------------------- char *__thiscall sub_4D6940(void *this, const char *a2) { void *v2; // ebx@1 int v3; // edi@1 void *v4; // eax@1 signed int v5; // ecx@1 int v6; // esi@1 char v7; // dl@2 int v8; // eax@3 unsigned __int8 v9; // dl@4 signed int v10; // eax@8 int v11; // esi@8 unsigned int i; // edx@8 const char v13; // cl@9 int v15; // [sp+10h] [bp-108h]@1 char v16; // [sp+14h] [bp-104h]@12 unsigned int v17; // [sp+114h] [bp-4h]@1 int v18; // [sp+118h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v2 = this; v3 = 0; v4 = this; v5 = 1; v15 = 0; v6 = (int)((char *)v4 + 1); do { v7 = *(_BYTE *)v4; v4 = (char *)v4 + 1; } while ( v7 ); v8 = (int)((char *)v4 + -v6 - 1); if ( v8 >= 0 ) { do { v9 = *((_BYTE *)v2 + v8); if ( v9 < 0x30u ) break; if ( v9 > 0x39u ) break; v3 += v5 * (v9 - 48); v5 *= 10; --v8; } while ( v8 >= 0 ); v15 = v3; } *((_BYTE *)v2 + v8 + 1) = 0; v10 = 1; v11 = 0; for ( i = strlen(a2) - 1; (i & 0x80000000u) == 0; --i ) { v13 = a2[i]; if ( (unsigned __int8)v13 < 0x30u ) break; if ( (unsigned __int8)v13 > 0x39u ) break; v11 += v10 * ((unsigned __int8)v13 - 48); v10 *= 10; } sprintf(&v16, "%d", v15 - v11); return strcat((char *)v2, &v16); } // 86FEB8: using guessed type int __security_cookie; //----- (004D6A60) -------------------------------------------------------- char *__thiscall sub_4D6A60(void *this, const char *a2) { void *v2; // ebx@1 int v3; // edi@1 void *v4; // eax@1 signed int v5; // ecx@1 int v6; // esi@1 char v7; // dl@2 int v8; // eax@3 unsigned __int8 v9; // dl@4 signed int v10; // eax@8 int v11; // esi@8 unsigned int i; // edx@8 const char v13; // cl@9 int v15; // [sp+10h] [bp-108h]@1 char v16; // [sp+14h] [bp-104h]@12 unsigned int v17; // [sp+114h] [bp-4h]@1 int v18; // [sp+118h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v2 = this; v3 = 0; v4 = this; v5 = 1; v15 = 0; v6 = (int)((char *)v4 + 1); do { v7 = *(_BYTE *)v4; v4 = (char *)v4 + 1; } while ( v7 ); v8 = (int)((char *)v4 + -v6 - 1); if ( v8 >= 0 ) { do { v9 = *((_BYTE *)v2 + v8); if ( v9 < 0x30u ) break; if ( v9 > 0x39u ) break; v3 += v5 * (v9 - 48); v5 *= 10; --v8; } while ( v8 >= 0 ); v15 = v3; } *((_BYTE *)v2 + v8 + 1) = 0; v10 = 1; v11 = 0; for ( i = strlen(a2) - 1; (i & 0x80000000u) == 0; --i ) { v13 = a2[i]; if ( (unsigned __int8)v13 < 0x30u ) break; if ( (unsigned __int8)v13 > 0x39u ) break; v11 += v10 * ((unsigned __int8)v13 - 48); v10 *= 10; } sprintf(&v16, "%d", v15 * v11); return strcat((char *)v2, &v16); } // 86FEB8: using guessed type int __security_cookie; //----- (004D6B80) -------------------------------------------------------- char *__thiscall sub_4D6B80(void *this, const char *a2) { signed int v2; // ecx@1 signed int v3; // esi@1 unsigned int v4; // edx@1 const char v5; // al@2 char *result; // eax@6 int v7; // eax@7 void *v8; // [sp+Ch] [bp-108h]@1 char v9; // [sp+10h] [bp-104h]@7 unsigned int v10; // [sp+110h] [bp-4h]@1 int v11; // [sp+114h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v8 = this; v2 = 1; v3 = 0; v4 = strlen(a2) - 1; if ( (v4 & 0x80000000u) != 0 ) goto LABEL_10; do { v5 = a2[v4]; if ( (unsigned __int8)v5 < 0x30u ) break; if ( (unsigned __int8)v5 > 0x39u ) break; v3 += v2 * ((unsigned __int8)v5 - 48); v2 *= 10; --v4; } while ( (v4 & 0x80000000u) == 0 ); if ( v3 ) { v7 = sub_4D5840((const char *)v8, 1); sprintf(&v9, "%d", v7 / v3); result = strcat((char *)v8, &v9); } else { LABEL_10: result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D6C60) -------------------------------------------------------- char *__stdcall sub_4D6C60(char *a1, int a2, int a3) { char *v3; // ebx@1 int v4; // edi@4 signed int v5; // edx@4 unsigned int v6; // ecx@4 char v7; // al@5 signed int v8; // ecx@11 int v9; // esi@11 unsigned int i; // edi@11 char v11; // dl@12 int v12; // eax@15 char *v14; // [sp+18h] [bp-10Ch]@2 int v15; // [sp+1Ch] [bp-108h]@4 char v16; // [sp+20h] [bp-104h]@15 unsigned int v17; // [sp+120h] [bp-4h]@1 int v18; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = a1; *a1 = 0; if ( *(_DWORD *)(a3 + 4) ) v14 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 4) + 8))(a1, a2); else v14 = a1; v4 = 0; v5 = 1; v15 = 0; v6 = strlen(v14) - 1; if ( (v6 & 0x80000000u) == 0 ) { do { v7 = v14[v6]; if ( (unsigned __int8)v7 < 0x30u ) break; if ( (unsigned __int8)v7 > 0x39u ) break; v4 += v5 * ((unsigned __int8)v7 - 48); v5 *= 10; --v6; } while ( (v6 & 0x80000000u) == 0 ); v15 = v4; } *a1 = 0; if ( *(_DWORD *)(a3 + 8) ) v3 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 8) + 8))(a1, a2); v8 = 1; v9 = 0; for ( i = strlen(v3) - 1; (i & 0x80000000u) == 0; --i ) { v11 = v3[i]; if ( (unsigned __int8)v11 < 0x30u ) break; if ( (unsigned __int8)v11 > 0x39u ) break; v9 += v8 * ((unsigned __int8)v11 - 48); v8 *= 10; } *a1 = 0; v12 = rand(); sprintf(&v16, "%d", v15 + v12 % (v9 - v15 + 1)); return strcat(a1, &v16); } // 86FEB8: using guessed type int __security_cookie; //----- (004D6DF0) -------------------------------------------------------- char *__stdcall sub_4D6DF0(char *a1, int a2, int a3) { char *v3; // edi@1 signed int v4; // ebx@3 signed int v5; // ecx@3 unsigned int v6; // esi@3 char v7; // dl@4 signed int v9; // [sp+10h] [bp-108h]@3 char v10; // [sp+14h] [bp-104h]@8 unsigned int v11; // [sp+114h] [bp-4h]@1 int v12; // [sp+118h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = a1; *a1 = 0; if ( *(_DWORD *)(a3 + 4) ) v3 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 4) + 8))(a1, a2); v4 = 0; v5 = 1; v9 = 0; v6 = strlen(v3) - 1; if ( (v6 & 0x80000000u) == 0 ) { do { v7 = v3[v6]; if ( (unsigned __int8)v7 < 0x30u ) break; if ( (unsigned __int8)v7 > 0x39u ) break; v4 += v5 * ((unsigned __int8)v7 - 48); v5 *= 10; --v6; } while ( (v6 & 0x80000000u) == 0 ); v9 = v4; } *a1 = 0; sprintf(&v10, "%d", (signed int)sqrt((double)v9)); return strcat(a1, &v10); } // 86FEB8: using guessed type int __security_cookie; //----- (004D6EF0) -------------------------------------------------------- char *__stdcall sub_4D6EF0(char *a1, int a2, int a3) { char *v3; // ebx@1 int v4; // edi@4 signed int v5; // edx@4 unsigned int v6; // ecx@4 char v7; // al@5 int v8; // edi@11 signed int v9; // ecx@11 unsigned int v10; // esi@11 char v11; // dl@12 char *v12; // ebx@16 int v13; // edi@18 signed int v14; // ecx@18 unsigned int v15; // esi@18 char v16; // dl@19 char *v17; // ebx@23 signed int v18; // ecx@25 int v19; // edi@25 unsigned int i; // esi@25 char v21; // dl@26 int v23; // [sp+14h] [bp-114h]@18 int v24; // [sp+18h] [bp-110h]@4 char *v25; // [sp+20h] [bp-108h]@2 int v26; // [sp+20h] [bp-108h]@11 char v27; // [sp+24h] [bp-104h]@29 unsigned int v28; // [sp+124h] [bp-4h]@1 int v29; // [sp+128h] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v3 = a1; *a1 = 0; if ( *(_DWORD *)(a3 + 4) ) v25 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 4) + 8))(a1, a2); else v25 = a1; v4 = 0; v5 = 1; v24 = 0; v6 = strlen(v25) - 1; if ( (v6 & 0x80000000u) == 0 ) { do { v7 = v25[v6]; if ( (unsigned __int8)v7 < 0x30u ) break; if ( (unsigned __int8)v7 > 0x39u ) break; v4 += v5 * ((unsigned __int8)v7 - 48); v5 *= 10; --v6; } while ( (v6 & 0x80000000u) == 0 ); v24 = v4; } *a1 = 0; if ( *(_DWORD *)(a3 + 8) ) v3 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 8) + 8))(a1, a2); v8 = 0; v9 = 1; v26 = 0; v10 = strlen(v3) - 1; if ( (v10 & 0x80000000u) == 0 ) { do { v11 = v3[v10]; if ( (unsigned __int8)v11 < 0x30u ) break; if ( (unsigned __int8)v11 > 0x39u ) break; v8 += v9 * ((unsigned __int8)v11 - 48); v9 *= 10; --v10; } while ( (v10 & 0x80000000u) == 0 ); v26 = v8; } v12 = a1; *a1 = 0; if ( *(_DWORD *)(a3 + 12) ) v12 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 12) + 8))(a1, a2); v13 = 0; v14 = 1; v23 = 0; v15 = strlen(v12) - 1; if ( (v15 & 0x80000000u) == 0 ) { do { v16 = v12[v15]; if ( (unsigned __int8)v16 < 0x30u ) break; if ( (unsigned __int8)v16 > 0x39u ) break; v13 += v14 * ((unsigned __int8)v16 - 48); v14 *= 10; --v15; } while ( (v15 & 0x80000000u) == 0 ); v23 = v13; } v17 = a1; *a1 = 0; if ( *(_DWORD *)(a3 + 16) ) v17 = (char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(a3 + 16) + 8))(a1, a2); v18 = 1; v19 = 0; for ( i = strlen(v17) - 1; (i & 0x80000000u) == 0; --i ) { v21 = v17[i]; if ( (unsigned __int8)v21 < 0x30u ) break; if ( (unsigned __int8)v21 > 0x39u ) break; v19 += v18 * ((unsigned __int8)v21 - 48); v18 *= 10; } *a1 = 0; sprintf(&v27, "%d", (signed int)sqrt((double)((v24 - v23) * (v24 - v23) + (v26 - v19) * (v26 - v19)))); return strcat(a1, &v27); } // 86FEB8: using guessed type int __security_cookie; //----- (004D7180) -------------------------------------------------------- int __thiscall sub_4D7180(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6C5CC4; *(_DWORD *)(this + 4) = &off_6C5B04; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 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) = off_853794; return result; } // 6C5B04: using guessed type int (__stdcall *off_6C5B04)(int); // 6C5CC4: using guessed type int (__stdcall *off_6C5CC4)(int); // 853794: using guessed type int (__stdcall *off_853794[26])(int, int, int); //----- (004D71C0) -------------------------------------------------------- void __thiscall sub_4D71C0(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // eax@3 void *v4; // ST00_4@4 v1 = this; *(_DWORD *)this = &off_6C5B18; v2 = *(_DWORD *)(this + 4); if ( v2 ) { sub_4D71C0(v2); operator delete((void *)v2); } v3 = *(_DWORD *)(v1 + 8); if ( v3 ) { v4 = *(void **)(v1 + 8); *(_DWORD *)v3 = &off_6C59A8; operator delete(v4); } *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); //----- (004D7240) -------------------------------------------------------- int __thiscall sub_4D7240(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6C5CD8; *(_DWORD *)(this + 4) = &off_6C5B18; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 16) = &off_6C59BC; *(_BYTE *)(this + 20) = 0; *(_DWORD *)(this + 276) = 0; *(_DWORD *)(this + 280) = 0; return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); //----- (004D7270) -------------------------------------------------------- void __thiscall sub_4D7270(int this) { int v1; // edi@1 int v2; // esi@1 int v3; // ebx@3 int v4; // eax@5 void *v5; // ST00_4@6 v1 = this; *(_DWORD *)this = &off_6C5CD8; v2 = *(_DWORD *)(this + 280); if ( v2 ) { sub_4D7270(v2); operator delete((void *)v2); } *(_DWORD *)(v1 + 16) = &off_6C59A8; *(_DWORD *)(v1 + 4) = &off_6C5B18; v3 = *(_DWORD *)(v1 + 8); if ( v3 ) { sub_4D71C0(v3); operator delete((void *)v3); } v4 = *(_DWORD *)(v1 + 12); if ( v4 ) { v5 = *(void **)(v1 + 12); *(_DWORD *)v4 = &off_6C59A8; operator delete(v5); } *(_DWORD *)(v1 + 4) = &off_6C59A8; *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); //----- (004D7330) -------------------------------------------------------- int __thiscall sub_4D7330(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6C5CEC; *(_DWORD *)(this + 4) = &off_6C5CD8; *(_DWORD *)(this + 8) = &off_6C5B18; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 20) = &off_6C59BC; *(_BYTE *)(this + 24) = 0; *(_DWORD *)(this + 280) = 0; *(_DWORD *)(this + 284) = 0; *(_DWORD *)(this + 288) = &off_6C59D0; *(_BYTE *)(this + 292) = 0; *(_DWORD *)(this + 548) = 0; *(_DWORD *)(this + 552) = &off_6C5CD8; *(_DWORD *)(this + 556) = &off_6C5B18; *(_DWORD *)(this + 564) = 0; *(_DWORD *)(this + 560) = 0; *(_DWORD *)(this + 568) = &off_6C59BC; *(_BYTE *)(this + 572) = 0; *(_DWORD *)(this + 828) = 0; *(_DWORD *)(this + 832) = 0; return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C59D0: using guessed type int (__stdcall *off_6C59D0)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 6C5CEC: using guessed type int (__stdcall *off_6C5CEC)(int); //----- (004D73C0) -------------------------------------------------------- void __thiscall sub_4D73C0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6C5CEC; sub_4D7270((int)((char *)this + 552)); *((_DWORD *)v1 + 72) = &off_6C59A8; sub_4D7270((int)((char *)v1 + 4)); *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5CEC: using guessed type int (__stdcall *off_6C5CEC)(int); //----- (004D7430) -------------------------------------------------------- void *__thiscall sub_4D7430(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6C5D00; sub_4D7330((int)((char *)this + 4)); *((_DWORD *)v1 + 211) = 0; *((_DWORD *)v1 + 210) = 0; return v1; } // 6C5D00: using guessed type int (__stdcall *off_6C5D00)(int); //----- (004D7460) -------------------------------------------------------- int __thiscall sub_4D7460(int this, const char *a2) { int v2; // esi@1 int v3; // ecx@1 unsigned __int16 v4; // ax@1 int v5; // edx@1 unsigned __int16 v6; // di@2 int v7; // ecx@3 int v8; // eax@3 bool v9; // zf@3 int v10; // eax@3 int result; // eax@4 v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 8); v4 = *(_WORD *)(v3 + 12 * *(_WORD *)(v2 + 14) + 4); v5 = 3 * *(_WORD *)(v3 + 12 * *(_WORD *)(v2 + 14) + 4); while ( 1 ) { v6 = *(_WORD *)(v3 + 4 * v5 + 4); if ( v4 >= *(_WORD *)(v2 + 4) ) break; v7 = *(_DWORD *)(v2 + 8); v8 = 3 * v4; v9 = *(_BYTE *)(v7 + 4 * v8 + 8) == 0; v10 = v7 + 4 * v8; if ( v9 ) break; result = *(_DWORD *)v10; if ( !result ) break; if ( a2 && !strcmp((const char *)(result + 12), a2) ) return result; if ( v6 >= *(_WORD *)(v2 + 4) ) break; v5 = 3 * v6; v3 = *(_DWORD *)(v2 + 8); v4 = v6; } return 0; } //----- (004D7500) -------------------------------------------------------- int __cdecl sub_4D7500() { int v0; // eax@1 int v1; // esi@1 int result; // eax@2 v0 = operator new(0x350u); v1 = v0; if ( v0 ) { *(_DWORD *)v0 = &off_6C5D00; sub_4D7330(v0 + 4); *(_DWORD *)(v1 + 844) = 0; *(_DWORD *)(v1 + 840) = 0; result = v1; } else { result = 0; } return result; } // 6C5D00: using guessed type int (__stdcall *off_6C5D00)(int); //----- (004D7540) -------------------------------------------------------- int __cdecl sub_4D7540() { int result; // eax@1 result = operator new(0x124u); if ( result ) { *(_DWORD *)result = &off_6C5D18; *(_DWORD *)(result + 4) = &off_6C5CD8; *(_DWORD *)(result + 8) = &off_6C5B18; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 20) = &off_6C59BC; *(_BYTE *)(result + 24) = 0; *(_DWORD *)(result + 280) = 0; *(_DWORD *)(result + 284) = 0; *(_DWORD *)(result + 288) = 0; } else { result = 0; } return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 6C5D18: using guessed type int (__stdcall *off_6C5D18)(int); //----- (004D7590) -------------------------------------------------------- signed int __thiscall sub_4D7590(int this, int a2, int a3, int a4) { int v4; // eax@2 char v5; // dl@3 int v6; // eax@4 unsigned int v8; // ecx@6 int v9; // ecx@7 int v10; // eax@8 char v11[256]; // [sp+8h] [bp-104h]@3 unsigned int v12; // [sp+108h] [bp-4h]@1 int v13; // [sp+10Ch] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; if ( *(_DWORD *)a4 ) { v10 = *(_DWORD *)(a3 + 256); if ( v10 ) { *(_DWORD *)(a3 + 256) = v10 - 1; return 1; } return 0; } v4 = 0; do { v5 = byte_6C5D2C[v4]; v11[v4++] = v5; } while ( v5 ); v6 = sub_4D7460(this, v11); if ( !v6 || (*(_DWORD *)a4 = 1, v8 = *(_DWORD *)(a3 + 256), v8 >= 0x1F) ) return 0; v9 = v8 + 1; *(_DWORD *)(a3 + 256) = v9; *(_DWORD *)(a3 + 8 * v9 + 4) = 0; *(_DWORD *)(a3 + 8 * *(_DWORD *)(a3 + 256)) = v6; return 1; } // 86FEB8: using guessed type int __security_cookie; // 4D7590: using guessed type char var_104[256]; //----- (004D7640) -------------------------------------------------------- signed int __thiscall sub_4D7640(int this, int a2, int a3, unsigned __int16 *a4) { unsigned __int16 *v4; // edi@1 int v5; // ebx@1 int v6; // eax@3 int v7; // ebx@4 int v8; // eax@5 unsigned int v10; // ecx@8 int v11; // ecx@9 v4 = a4; v5 = this; if ( !*(_DWORD *)a4 ) *(_DWORD *)(this + 268) = *(_DWORD *)(a3 + 65796); v6 = sub_4CD440(*(_DWORD *)(this + 272), *v4, &a4); if ( !v6 ) { v7 = *(_DWORD *)(v5 + 268); if ( v7 >= 0 ) { v8 = *(_DWORD *)(a3 + 256); *(_DWORD *)(a3 + 65796) = v7; if ( v8 ) { *(_DWORD *)(a3 + 256) = v8 - 1; return 1; } } return 0; } ++*(_DWORD *)v4; v10 = *(_DWORD *)(a3 + 256); if ( v10 >= 0x1F ) return 0; v11 = v10 + 1; *(_DWORD *)(a3 + 256) = v11; *(_DWORD *)(a3 + 8 * v11 + 4) = 0; *(_DWORD *)(a3 + 8 * *(_DWORD *)(a3 + 256)) = v6; return 1; } //----- (004D76E0) -------------------------------------------------------- signed int __thiscall sub_4D76E0(int this, int a2, int a3, int a4) { int v4; // edx@2 unsigned int v5; // ecx@2 signed int result; // eax@3 int v7; // ecx@4 int v8; // eax@5 if ( *(_DWORD *)a4 ) { v8 = *(_DWORD *)(a3 + 256); if ( !v8 ) return 0; *(_DWORD *)(a3 + 256) = v8 - 1; result = 1; } else { *(_DWORD *)a4 = 1; v4 = *(_DWORD *)(this + 4); v5 = *(_DWORD *)(a3 + 256); if ( v5 >= 0x1F ) return 0; v7 = v5 + 1; *(_DWORD *)(a3 + 256) = v7; *(_DWORD *)(a3 + 8 * v7 + 4) = 0; *(_DWORD *)(a3 + 8 * *(_DWORD *)(a3 + 256)) = v4; result = 1; } return result; } //----- (004D7750) -------------------------------------------------------- signed int __thiscall sub_4D7750(void *this, int a2, int a3, int a4) { unsigned int v4; // edx@1 signed int result; // eax@2 int v6; // edx@3 v4 = *(_DWORD *)(a3 + 256); if ( v4 < 0x1F ) { v6 = v4 + 1; *(_DWORD *)(a3 + 256) = v6; *(_DWORD *)(a3 + 8 * v6 + 4) = 0; *(_DWORD *)(a3 + 8 * *(_DWORD *)(a3 + 256)) = (char *)this + 4; result = 1; } else { result = 0; } return result; } //----- (004D7790) -------------------------------------------------------- signed int __thiscall sub_4D7790(int this, int a2, int a3, int a4) { int (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // eax@1 const char *v5; // eax@1 signed int v6; // edx@1 unsigned int v7; // edi@1 int v8; // ebx@2 const char v9; // cl@3 int v10; // eax@7 unsigned int v12; // eax@10 int v13; // eax@11 int v14; // [sp+10h] [bp-108h]@1 char v15; // [sp+14h] [bp-104h]@1 unsigned int v16; // [sp+114h] [bp-4h]@1 int v17; // [sp+118h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v4 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(this + 4) + 8); v14 = this; v15 = 0; v5 = (const char *)v4(this + 4, &v15, a3); v6 = 1; v7 = strlen(v5) - 1; if ( (v7 & 0x80000000u) != 0 ) goto LABEL_15; v8 = 0; do { v9 = v5[v7]; if ( (unsigned __int8)v9 < 0x30u ) break; if ( (unsigned __int8)v9 > 0x39u ) break; v8 += v6 * ((unsigned __int8)v9 - 48); v6 *= 10; --v7; } while ( (v7 & 0x80000000u) == 0 ); if ( v8 ) { v12 = *(_DWORD *)(a3 + 256); if ( v12 >= 0x1F ) return 0; v13 = v12 + 1; *(_DWORD *)(a3 + 256) = v13; *(_DWORD *)(a3 + 8 * v13 + 4) = 0; *(_DWORD *)(a3 + 8 * *(_DWORD *)(a3 + 256)) = v14 + 840; } else { LABEL_15: v10 = *(_DWORD *)(a3 + 256); if ( !v10 ) return 0; *(_DWORD *)(a3 + 256) = v10 - 1; } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (004D7890) -------------------------------------------------------- signed int __thiscall sub_4D7890(int this, int a2, int a3, int a4) { int v4; // edi@1 int (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // eax@2 const char *v6; // eax@2 int v7; // edi@3 signed int result; // eax@5 char v9; // [sp+8h] [bp-104h]@2 unsigned int v10; // [sp+108h] [bp-4h]@1 int v11; // [sp+10Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v4 = this; if ( *(_DWORD *)a4 || ((*(_DWORD *)a4 = 1, v5 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(this + 4) + 8), v9 = 0, v6 = (const char *)v5(this + 4, &v9, a3), !sub_4D5840(v6, 0)) ? (v7 = *(_DWORD *)(v4 + 844)) : (v7 = *(_DWORD *)(v4 + 840)), !v7) ) { result = *(_DWORD *)(a3 + 256); if ( result ) { *(_DWORD *)(a3 + 256) = result - 1; result = 1; } } else { result = sub_4D60C0(a3, v7); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D7950) -------------------------------------------------------- signed int __thiscall sub_4D7950(int this, int a2, int a3, int a4) { void (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // eax@1 signed int result; // eax@1 char v6; // [sp+4h] [bp-104h]@1 unsigned int v7; // [sp+104h] [bp-4h]@1 int v8; // [sp+108h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v4 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(this + 36) + 8); v6 = 0; v4(this + 36, &v6, a3); result = *(_DWORD *)(a3 + 256); if ( result ) { *(_DWORD *)(a3 + 256) = result - 1; result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D79C0) -------------------------------------------------------- int __thiscall sub_4D79C0(int this, int a2) { int v2; // esi@1 int result; // eax@2 int v4; // eax@5 v2 = this; if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 4))(this + 4, a2) ) { if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 16))(v2 + 16, a2) ) { v4 = operator new(0x11Cu); if ( v4 ) { *(_DWORD *)v4 = &off_6C5CD8; *(_DWORD *)(v4 + 4) = &off_6C5B18; *(_DWORD *)(v4 + 12) = 0; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 16) = &off_6C59BC; *(_BYTE *)(v4 + 20) = 0; *(_DWORD *)(v4 + 276) = 0; *(_DWORD *)(v4 + 280) = 0; } else { v4 = 0; } *(_DWORD *)(v2 + 280) = v4; result = (**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, a2); } else { result = 1; } } else { result = 0; } return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); //----- (004D7A60) -------------------------------------------------------- signed int __thiscall sub_4D7A60(void *this, int a2) { signed int result; // eax@1 void *v3; // esi@1 int v4; // eax@2 int v5; // eax@3 void *v6; // ST00_4@4 result = dword_1321B950; v3 = this; while ( 1 ) { dword_1321B954 = result - 1; v4 = (*(int (**)(void))(*(_DWORD *)*(&dword_1321B750 + result - 1) + 16))(); *((_DWORD *)v3 + 1) = v4; if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, a2) ) break; v5 = *((_DWORD *)v3 + 1); if ( v5 ) { v6 = (void *)*((_DWORD *)v3 + 1); *(_DWORD *)v5 = &off_6C59A8; operator delete(v6); } result = dword_1321B954; if ( !dword_1321B954 ) return result; } return 1; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 1321B950: using guessed type int dword_1321B950; // 1321B954: using guessed type int dword_1321B954; //----- (004D7AD0) -------------------------------------------------------- void *__thiscall sub_4D7AD0(int this, void *a2, int a3) { int v3; // esi@1 void *result; // eax@3 int v5; // ecx@4 char v6; // [sp+Ch] [bp-104h]@4 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v3 = this; if ( (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)(this + 4) + 8))(this + 4, a2, a3) ) { if ( *(_DWORD *)(v3 + 280) ) { v5 = *(_DWORD *)(v3 + 280); v6 = 0; (*(void (__stdcall **)(char *, int))(*(_DWORD *)v5 + 8))(&v6, a3); switch ( *(_DWORD *)(v3 + 276) ) { case 9: result = sub_4D6820(a2, &v6); break; case 0xA: result = sub_4D6940(a2, &v6); break; case 0xB: result = sub_4D6A60(a2, &v6); break; case 0xC: result = sub_4D6B80(a2, &v6); break; case 0xD: result = sub_4D5950((char *)a2, &v6); break; default: goto LABEL_10; } } else { result = a2; } } else { LABEL_10: result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D7C30) -------------------------------------------------------- char *__thiscall sub_4D7C30(int this, void *a2, int a3) { int v3; // esi@1 void (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // eax@1 int v5; // esi@2 int v6; // eax@2 char *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 signed __int16 v18; // ax@8 int v19; // kr00_4@9 char v20; // [sp+Ch] [bp-204h]@1 char v21; // [sp+10Ch] [bp-104h]@1 unsigned int v22; // [sp+20Ch] [bp-4h]@1 int v23; // [sp+210h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v3 = this; v4 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(this + 4) + 8); v20 = 0; v21 = 0; v4(this + 4, &v20, a3); (*(void (__thiscall **)(int, char *, int))(*(_DWORD *)(v3 + 552) + 8))(v3 + 552, &v21, a3); *(_BYTE *)a2 = 0; switch ( *(_DWORD *)(v3 + 548) ) { case 1: v5 = sub_4D5840(&v21, 0); v6 = sub_4D5840(&v20, 0); result = sub_4D67A0(a2, v6 == v5); break; case 2: v8 = sub_4D5840(&v21, 0); v9 = sub_4D5840(&v20, 0); result = sub_4D67A0(a2, v9 != v8); break; case 3: v10 = sub_4D5840(&v21, 0); v11 = sub_4D5840(&v20, 0); result = sub_4D67A0(a2, v11 < v10); break; case 4: v12 = sub_4D5840(&v21, 0); v13 = sub_4D5840(&v20, 0); result = sub_4D67A0(a2, v13 > v12); break; case 5: v14 = sub_4D5840(&v21, 0); v15 = sub_4D5840(&v20, 0); result = sub_4D67A0(a2, v15 <= v14); break; case 6: v16 = sub_4D5840(&v21, 0); v17 = sub_4D5840(&v20, 0); result = sub_4D67A0(a2, v17 >= v16); break; case 7: v18 = sub_4D58C0(&v20, &v21); result = sub_4D67A0(a2, (unsigned __int16)v18); break; case 8: v19 = strcmp(&v20, &v21); if ( v19 ) result = sub_4D67A0(a2, (unsigned __int16)(-(v19 < 0) - ((v19 < 0) - 1))); else result = sub_4D67A0(a2, 0); break; default: result = 0; break; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D7EF0) -------------------------------------------------------- void *__thiscall sub_4D7EF0(void *this, void *a2) { void *i; // esi@1 signed int v3; // ebx@2 int v4; // eax@4 int v5; // eax@7 void *result; // eax@19 for ( i = this; ; ++*((_DWORD *)i + 131) ) { v3 = *((_DWORD *)i + 2); if ( v3 == -1 ) { v4 = sub_656AE5(*(FILE **)i); if ( v4 == 10 ) { ++**((_DWORD **)i + 1); } else { if ( v4 == 59 ) { while ( 1 ) { v5 = sub_656AE5(*(FILE **)i); if ( v5 == 10 ) break; if ( v5 == -1 ) goto LABEL_11; } ++**((_DWORD **)i + 1); LABEL_11: v4 = sub_4D5C10(i); } } v3 = v4; } else { *((_DWORD *)i + 2) = -1; } if ( v3 == -1 || v3 <= 32 ) goto LABEL_19; if ( (unsigned int)(v3 - 48) > 9 ) break; *((_BYTE *)i + *((_DWORD *)i + 131) + 268) = v3; } if ( sub_4D5E20(v3) ) { *((_DWORD *)i + 2) = v3; LABEL_19: result = a2; *((_BYTE *)i + *((_DWORD *)i + 131) + 268) = 0; memcpy(a2, (char *)i + 268, 0x100u); return result; } *((_DWORD *)i + 132) = "Number read fail"; return 0; } //----- (004D7FC0) -------------------------------------------------------- void *__thiscall sub_4D7FC0(void *this, void *a2) { void *i; // esi@1 int v3; // eax@2 int v4; // eax@7 void *result; // eax@22 for ( i = this; ; ++*((_DWORD *)i + 131) ) { v3 = *((_DWORD *)i + 2); if ( v3 == -1 ) { v3 = sub_656AE5(*(FILE **)i); if ( v3 == 10 ) { ++**((_DWORD **)i + 1); } else { if ( v3 == 59 ) { while ( 1 ) { v4 = sub_656AE5(*(FILE **)i); if ( v4 == 10 ) break; if ( v4 == -1 ) goto LABEL_11; } ++**((_DWORD **)i + 1); LABEL_11: v3 = sub_4D5C10(i); } } } else { *((_DWORD *)i + 2) = -1; } if ( v3 == -1 || v3 < 32 ) break; if ( (unsigned int)(v3 - 48) > 9 && (v3 < 65 || v3 > 90) && (v3 < 97 || v3 > 122) && v3 != 95 ) { *((_DWORD *)i + 2) = v3; break; } *((_BYTE *)i + *((_DWORD *)i + 131) + 268) = v3; } result = a2; *((_BYTE *)i + *((_DWORD *)i + 131) + 268) = 0; memcpy(a2, (char *)i + 268, 0x100u); return result; } //----- (004D8090) -------------------------------------------------------- int __thiscall sub_4D8090(int this) { int v1; // esi@1 int v2; // ecx@1 v1 = this; _eh_vector_constructor_iterator_((void *)(this + 260), 0x200u, 128, (int)sub_4D5EC0, nullsub_2); *(_BYTE *)(v1 + 65844) = 0; *(_DWORD *)(v1 + 256) = 0; *(_DWORD *)(v1 + 4) = 0; v2 = *(_DWORD *)(v1 + 256); *(_DWORD *)(v1 + 65800) = 0; *(_DWORD *)(v1 + 8 * v2) = 0; *(_DWORD *)(v1 + 65832) = 0; *(_DWORD *)(v1 + 65828) = 0; *(_DWORD *)(v1 + 65840) = 0; *(_DWORD *)(v1 + 65836) = 0; *(_DWORD *)(v1 + 65796) = 0; return v1; } //----- (004D8100) -------------------------------------------------------- signed int __thiscall sub_4D8100(int this, int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@3 signed int result; // eax@4 v2 = this; if ( (unsigned __int16)(*(int (__stdcall **)(int))(**(_DWORD **)(this + 8 * *(_DWORD *)(this + 256)) + 12))(a2) ) { LABEL_4: *(_DWORD *)(v2 + 8 * *(_DWORD *)(v2 + 256) + 4) = 9999; result = 1; } else { while ( 1 ) { v3 = *(_DWORD *)(v2 + 256); if ( !v3 ) break; v4 = v3 - 1; *(_DWORD *)(v2 + 256) = v4; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v2 + 8 * v4) + 12))( *(_DWORD *)(v2 + 8 * v4), a2) ) goto LABEL_4; } result = 0; } return result; } //----- (004D8170) -------------------------------------------------------- int __thiscall sub_4D8170(void *this, int a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( !(dword_1321B738 & 1) ) { dword_1321B738 |= 1u; byte_1321B638 = 0; atexit(nullsub_74); } if ( a2 ) { result = sub_4D5ED0((int)((char *)v2 + 260), a2); if ( !result ) result = (int)&byte_1321B638; } else { sub_6390B0(&unk_86DDD8, (int)"Null variable", (int)byte_6A492E); result = (int)&byte_1321B638; } return result; } // 1321B638: using guessed type char byte_1321B638; // 1321B738: using guessed type int dword_1321B738; //----- (004D8210) -------------------------------------------------------- int __thiscall sub_4D8210(int this) { int v1; // esi@1 void *v2; // ebx@1 int v3; // edi@2 unsigned int v4; // eax@3 int v5; // esi@6 int v6; // esi@6 char v8; // [sp+8h] [bp-8h]@6 int v9; // [sp+Ch] [bp-4h]@1 v1 = this; v2 = *(void **)(this + 56); v9 = this; *(_DWORD *)this = &off_6C5D5C; if ( v2 ) { v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v3 + 4); if ( v4 && v4 < 0xFFFFFFFF ) *(_DWORD *)(v3 + 4) = v4 - 1; v5 = -(*(_DWORD *)(v3 + 4) == 0); std::_Lockit::__Lockit(&v8); v6 = v3 & v5; if ( v6 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v6)(v6, 1); v1 = v9; } operator delete(v2); } return std::_Mutex::__Mutex(v1 + 4); } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 65208B: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); // 6C5D5C: using guessed type int (__thiscall *off_6C5D5C)(void *, char); //----- (004D8290) -------------------------------------------------------- int __thiscall sub_4D8290(int this) { return unknown_libname_8(*(LPCRITICAL_SECTION *)(this + 4)); } //----- (004D82A0) -------------------------------------------------------- void __thiscall sub_4D82A0(int this) { sub_6527AC(*(LPCRITICAL_SECTION *)(this + 4)); } //----- (004D82B0) -------------------------------------------------------- __int64 __cdecl sub_4D82B0() { return 0i64; } //----- (004D82C0) -------------------------------------------------------- void *__thiscall sub_4D82C0(void *this, int a2, int a3, int a4) { return this; } //----- (004D82D0) -------------------------------------------------------- __int64 __thiscall sub_4D82D0(int this) { __int64 result; // qax@2 if ( **(_DWORD **)(this + 32) ) result = **(_DWORD **)(this + 48); else result = 0i64; return result; } //----- (004D82F0) -------------------------------------------------------- int __thiscall sub_4D82F0(void *this) { void *v1; // esi@1 int result; // eax@1 int v3; // eax@2 int *v4; // ecx@2 v1 = this; result = (*(int (**)(void))(*(_DWORD *)this + 24))(); if ( result != -1 ) { --**((_DWORD **)v1 + 12); v3 = *((_DWORD *)v1 + 8); v4 = (int *)(*(_DWORD *)v3)++; result = *(_BYTE *)v4; } return result; } //----- (004D8320) -------------------------------------------------------- __int64 __thiscall sub_4D8320(void *this, char *a2, __int64 a3) { int v3; // ebx@1 __int64 v4; // qax@2 unsigned int v5; // edi@2 size_t v6; // esi@2 int v7; // eax@8 unsigned int v8; // kr04_4@9 __int64 v10; // [sp+4h] [bp-8h]@1 v3 = (int)this; v10 = 0i64; if ( a3 > 0 ) { do { v4 = sub_4D82D0(v3); v5 = HIDWORD(v4); v6 = v4; if ( SHIDWORD(v4) >= 0 && (SHIDWORD(v4) > 0 || (_DWORD)v4) ) { if ( a3 < v4 ) { v5 = HIDWORD(a3); v6 = a3; } memmove(a2, **(const void ***)(v3 + 32), v6); a2 += v6; v10 += __PAIR__(v5, v6); a3 -= __PAIR__(v5, v6); **(_DWORD **)(v3 + 48) -= v6; **(_DWORD **)(v3 + 32) += v6; } else { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 28))(v3); if ( v7 == -1 ) return v10; v8 = v10; LODWORD(v10) = v10 + 1; *a2++ = v7; HIDWORD(v10) = (__PAIR__(HIDWORD(v10), v8) + 1) >> 32; --a3; } } while ( SHIDWORD(a3) > 0 || SHIDWORD(a3) >= 0 && (_DWORD)a3 ); } return v10; } //----- (004D83F0) -------------------------------------------------------- __int64 __thiscall sub_4D83F0(void *this, char *a2, __int64 a3) { int v3; // ebx@1 __int64 v4; // qax@2 unsigned int v5; // edi@2 size_t v6; // esi@2 __int64 v8; // [sp+4h] [bp-8h]@1 v3 = (int)this; v8 = 0i64; if ( a3 > 0 ) { do { v4 = sub_4D62C0(v3); v5 = HIDWORD(v4); v6 = v4; if ( SHIDWORD(v4) >= 0 && (SHIDWORD(v4) > 0 || (_DWORD)v4) ) { if ( a3 < v4 ) { v5 = HIDWORD(a3); v6 = a3; } memmove(**(void ***)(v3 + 36), a2, v6); a2 += v6; v8 += __PAIR__(v5, v6); a3 -= __PAIR__(v5, v6); **(_DWORD **)(v3 + 52) -= v6; **(_DWORD **)(v3 + 36) += v6; } else { if ( (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 12))(v3, (unsigned __int8)*a2) == -1 ) return v8; ++a2; ++v8; --a3; } } while ( SHIDWORD(a3) > 0 || SHIDWORD(a3) >= 0 && (_DWORD)a3 ); } return v8; } //----- (004D84C0) -------------------------------------------------------- int __stdcall sub_4D84C0(int a1, int a2, int a3, int a4, int a5) { int result; // eax@1 int v6; // edx@1 result = a1; v6 = dword_708FE4; *(_DWORD *)a1 = dword_708FE0; *(_DWORD *)(a1 + 4) = v6; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; return result; } // 708FE0: using guessed type int dword_708FE0; // 708FE4: using guessed type int dword_708FE4; //----- (004D84F0) -------------------------------------------------------- int __stdcall sub_4D84F0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int result; // eax@1 int v9; // edx@1 result = a1; v9 = dword_708FE4; *(_DWORD *)a1 = dword_708FE0; *(_DWORD *)(a1 + 4) = v9; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; return result; } // 708FE0: using guessed type int dword_708FE0; // 708FE4: using guessed type int dword_708FE4; //----- (004D8520) -------------------------------------------------------- signed int __thiscall sub_4D8520(int this, signed int a2) { unsigned int v2; // eax@1 signed int result; // eax@7 v2 = **(_DWORD **)(this + 32); if ( !v2 || v2 <= **(_DWORD **)(this + 16) || a2 != -1 && (_BYTE)a2 != *(_BYTE *)(v2 - 1) && *(_BYTE *)(this + 64) & 2 ) { result = -1; } else { ++**(_DWORD **)(this + 48); --**(_DWORD **)(this + 32); if ( a2 == -1 ) { result = 0; } else { ***(_BYTE ***)(this + 32) = a2; result = a2; } } return result; } //----- (004D8570) -------------------------------------------------------- signed int __thiscall sub_4D8570(int this) { unsigned int *v1; // edx@1 unsigned int v2; // esi@1 signed int result; // eax@2 int v4; // edi@3 unsigned int v5; // eax@6 v1 = *(unsigned int **)(this + 32); v2 = *v1; if ( *v1 ) { v4 = *(_DWORD *)(this + 48); if ( v2 >= v2 + *(_DWORD *)v4 ) { if ( *(_BYTE *)(this + 64) & 4 || (v5 = **(_DWORD **)(this + 36)) == 0 || v5 <= v2 && *(_DWORD *)(this + 60) <= v2 ) { result = -1; } else { if ( *(_DWORD *)(this + 60) < v5 ) *(_DWORD *)(this + 60) = v5; *(_DWORD *)v4 = *(_DWORD *)(this + 60) - *v1; result = ***(_BYTE ***)(this + 32); } } else { result = *(_BYTE *)v2; } } else { result = -1; } return result; } //----- (004D85E0) -------------------------------------------------------- int __thiscall sub_4D85E0(int this, int a2, __int64 a3, int a4, char a5) { unsigned int *v5; // edx@1 unsigned int v6; // eax@1 int v7; // eax@5 int v8; // ebx@7 int v9; // esi@7 int v10; // edi@15 int v11; // edi@16 int v12; // eax@17 int v13; // edx@18 int v14; // eax@18 int v15; // edi@29 int v16; // edi@30 int result; // eax@33 v5 = *(unsigned int **)(this + 36); v6 = *v5; if ( *v5 && *(_DWORD *)(this + 60) < v6 ) *(_DWORD *)(this + 60) = v6; if ( !(a5 & 1) || (v7 = **(_DWORD **)(this + 32)) == 0 ) { if ( a5 & 2 && *v5 ) { if ( a4 == 2 ) { v8 = (unsigned __int64)(*(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3) >> 32; v9 = *(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3; } else { if ( a4 == 1 ) { v8 = (unsigned __int64)((signed int)(*v5 - **(_DWORD **)(this + 16)) + a3) >> 32; v9 = *v5 - **(_DWORD **)(this + 16) + a3; } else { if ( a4 ) { v9 = dword_708FE0; v8 = dword_708FE4; } else { v8 = HIDWORD(a3); v9 = a3; } } } if ( v8 >= 0 ) { v15 = **(_DWORD **)(this + 16); if ( (signed __int64)__PAIR__(v8, v9) <= *(_DWORD *)(this + 60) - v15 ) { v16 = v9 + v15 - *v5; **(_DWORD **)(this + 52) -= v16; **(_DWORD **)(this + 36) += v16; goto LABEL_33; } } } else { v8 = HIDWORD(a3); v9 = a3; if ( !a3 ) goto LABEL_33; } LABEL_32: v9 = dword_708FE0; v8 = dword_708FE4; goto LABEL_33; } if ( a4 != 2 ) { if ( a4 == 1 ) { if ( !(a5 & 2) ) { v8 = (unsigned __int64)(v7 - **(_DWORD **)(this + 16) + a3) >> 32; v9 = v7 - **(_DWORD **)(this + 16) + a3; goto LABEL_14; } } else { if ( !a4 ) { v8 = HIDWORD(a3); v9 = a3; goto LABEL_14; } } v9 = dword_708FE0; v8 = dword_708FE4; goto LABEL_14; } v8 = (unsigned __int64)(*(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3) >> 32; v9 = *(_DWORD *)(this + 60) - **(_DWORD **)(this + 16) + a3; LABEL_14: if ( v8 < 0 || (v10 = **(_DWORD **)(this + 16), (signed __int64)__PAIR__(v8, v9) > *(_DWORD *)(this + 60) - v10) ) goto LABEL_32; v11 = v9 + v10 - v7; **(_DWORD **)(this + 48) -= v11; **(_DWORD **)(this + 32) += v11; if ( a5 & 2 ) { v12 = *(_DWORD *)(this + 36); if ( *(_DWORD *)v12 ) { v13 = **(_DWORD **)(this + 32); v14 = *(_DWORD *)v12 + **(_DWORD **)(this + 52); **(_DWORD **)(this + 36) = v13; **(_DWORD **)(this + 52) = v14 - v13; } } LABEL_33: result = a2; *(_DWORD *)a2 = v9; *(_DWORD *)(a2 + 4) = v8; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 16) = 0; return result; } // 708FE0: using guessed type int dword_708FE0; // 708FE4: using guessed type int dword_708FE4; //----- (004D87A0) -------------------------------------------------------- int __thiscall sub_4D87A0(int this, int a2, __int64 a3, int a4, int a5, int a6, int a7, char a8) { int v8; // ebx@1 int v9; // esi@1 unsigned int *v10; // edi@1 unsigned int v11; // eax@1 int v12; // edx@4 int v13; // edi@9 int v14; // edi@10 int v15; // eax@11 int v16; // edx@12 int v17; // eax@12 int v18; // edi@16 int v19; // edi@17 int result; // eax@20 int v21; // [sp+Ch] [bp-4h]@7 unsigned int v22; // [sp+34h] [bp+24h]@14 v10 = *(unsigned int **)(this + 36); v11 = *v10; v8 = (unsigned __int64)(a3 + a4) >> 32; v9 = a3 + a4; if ( *v10 && *(_DWORD *)(this + 60) < v11 ) *(_DWORD *)(this + 60) = v11; v12 = dword_708FE0; if ( v9 != dword_708FE0 || v8 != dword_708FE4 ) { if ( a8 & 1 && (v21 = **(_DWORD **)(this + 32)) != 0 ) { if ( v8 < 0 ) { LABEL_19: v8 = dword_708FE4; v9 = v12; goto LABEL_20; } v13 = **(_DWORD **)(this + 16); if ( (signed __int64)__PAIR__(v8, v9) <= *(_DWORD *)(this + 60) - v13 ) { v14 = v9 + v13 - v21; **(_DWORD **)(this + 48) -= v14; **(_DWORD **)(this + 32) += v14; if ( a8 & 2 ) { v15 = *(_DWORD *)(this + 36); if ( *(_DWORD *)v15 ) { v16 = **(_DWORD **)(this + 32); v17 = *(_DWORD *)v15 + **(_DWORD **)(this + 52); **(_DWORD **)(this + 36) = v16; **(_DWORD **)(this + 52) = v17 - v16; } } goto LABEL_20; } } else { if ( !(a8 & 2) || (v22 = *v10) == 0 || v8 < 0 ) goto LABEL_19; v18 = **(_DWORD **)(this + 16); if ( (signed __int64)__PAIR__(v8, v9) <= *(_DWORD *)(this + 60) - v18 ) { v19 = v9 + v18 - v22; **(_DWORD **)(this + 52) -= v19; **(_DWORD **)(this + 36) += v19; goto LABEL_20; } } v12 = dword_708FE0; goto LABEL_19; } LABEL_20: result = a2; *(_DWORD *)a2 = v9; *(_DWORD *)(a2 + 4) = v8; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 16) = 0; return result; } // 708FE0: using guessed type int dword_708FE0; // 708FE4: using guessed type int dword_708FE4; //----- (004D88C0) -------------------------------------------------------- void *__thiscall sub_4D88C0(void *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 8; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = &off_6C5C0C; *(_DWORD *)this = &off_6C59A0; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); //----- (004D8900) -------------------------------------------------------- void *__thiscall sub_4D8900(void *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 16; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 4) + 4) - 16) = &off_6C5C14; *(_DWORD *)this = &off_6C59A0; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); //----- (004D8940) -------------------------------------------------------- void *__thiscall sub_4D8940(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_4D8210((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004D8970) -------------------------------------------------------- void *__thiscall sub_4D8970(void *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 24; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 6) + 4) - 24) = &off_6C5C1C; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = &off_6C5C0C; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 6) + 4) - 24) = &off_6C5C14; *(_DWORD *)this = &off_6C59A0; std::ios_base::_Ios_base_dtor(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); //----- (004D89D0) -------------------------------------------------------- void *__thiscall sub_4D89D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C5D9C; sub_4D62E0((int)this); sub_4D8210((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C5D9C: using guessed type int (__thiscall *off_6C5D9C)(void *, char); //----- (004D8A00) -------------------------------------------------------- void *__thiscall sub_4D8A00(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ebx@2 unsigned int v4; // eax@2 char v6; // [sp+14h] [bp-10h]@4 int v7; // [sp+20h] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6C5D5C; std::_Mutex::_Mutex((char *)this + 4); v7 = 0; v2 = operator new(4u); if ( v2 ) { *(_DWORD *)v2 = std::locale::_Init(); v3 = sub_651AEE(); std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v3 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v3 + 4) = v4 + 1; std::_Lockit::__Lockit(&v6); } else { v2 = 0; } *((_DWORD *)v1 + 4) = (char *)v1 + 8; *((_DWORD *)v1 + 8) = (char *)v1 + 24; *((_DWORD *)v1 + 9) = (char *)v1 + 28; *((_DWORD *)v1 + 14) = v2; *((_DWORD *)v1 + 5) = (char *)v1 + 12; *((_DWORD *)v1 + 12) = (char *)v1 + 40; *((_DWORD *)v1 + 13) = (char *)v1 + 44; *((_DWORD *)v1 + 3) = 0; **((_DWORD **)v1 + 9) = 0; **((_DWORD **)v1 + 13) = 0; **((_DWORD **)v1 + 4) = 0; **((_DWORD **)v1 + 8) = 0; **((_DWORD **)v1 + 12) = 0; return v1; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651D2F: using guessed type int std__locale___Init(void); // 652071: using guessed type int __thiscall std___Mutex___Mutex(_DWORD); // 6C5D5C: using guessed type int (__thiscall *off_6C5D5C)(void *, char); //----- (004D8AF0) -------------------------------------------------------- int __thiscall sub_4D8AF0(int this, const void *a2, size_t a3, int a4) { int result; // eax@1 int v5; // esi@1 void *v6; // edi@3 bool v7; // zf@3 int v8; // ecx@5 int v9; // edx@8 result = a4; v5 = this; *(_DWORD *)(this + 60) = 0; *(_DWORD *)(this + 64) = a4; if ( a3 ) { result = a4 & 6; if ( (a4 & 6) != 6 ) { v6 = (void *)sub_4227A0(a3); memmove(v6, a2, a3); v7 = (*(_BYTE *)(v5 + 64) & 4) == 0; result = (int)((char *)v6 + a3); *(_DWORD *)(v5 + 60) = (char *)v6 + a3; if ( v7 ) { **(_DWORD **)(v5 + 16) = v6; **(_DWORD **)(v5 + 32) = v6; **(_DWORD **)(v5 + 48) = a3; } v8 = *(_DWORD *)(v5 + 64); if ( !(v8 & 2) ) { if ( !(v8 & 0x10) ) result = (int)v6; **(_DWORD **)(v5 + 20) = v6; **(_DWORD **)(v5 + 36) = result; v9 = (int)((char *)v6 - result); result = *(_DWORD *)(v5 + 52); *(_DWORD *)result = a3 + v9; if ( !**(_DWORD **)(v5 + 32) ) { **(_DWORD **)(v5 + 16) = v6; result = *(_DWORD *)(v5 + 32); *(_DWORD *)result = 0; **(_DWORD **)(v5 + 48) = v6; } } *(_DWORD *)(v5 + 64) |= 1u; } } return result; } //----- (004D8BA0) -------------------------------------------------------- char __thiscall sub_4D8BA0(int this, char *a2) { int v2; // esi@1 int v3; // eax@2 int v4; // ebx@2 int v5; // edi@3 signed __int64 v6; // qax@3 int v7; // eax@3 void *v8; // ebx@6 int v10; // eax@9 int v11; // ecx@10 int v12; // eax@10 void *v13; // eax@12 void *v14; // ecx@12 int v15; // edx@12 int v16; // ecx@14 int v17; // eax@15 int v18; // eax@17 int v19; // ecx@17 void *v20; // ST10_4@17 void **v21; // ecx@17 void *v22; // eax@17 void *v23; // ebx@18 int v24; // edx@19 int i; // [sp+14h] [bp-10h]@9 void *v26; // [sp+2Ch] [bp+8h]@5 v2 = this; if ( *(_WORD *)(this + 12) != -1 || (v3 = *(_DWORD *)(this + 16), v4 = 0, !v3) ) return 0; v5 = (int)&a2[*(_DWORD *)(v3 + 4)]; v6 = 8i64 * (unsigned int)&a2[*(_DWORD *)(v3 + 4)]; v7 = unknown_libname_130(((v6 | -(BYTE4(v6) != 0)) + 4) | -__CFADD__(v6 | -(BYTE4(v6) != 0), 4)); if ( v7 ) { v4 = v7 + 4; *(_DWORD *)v7 = v5; _eh_vector_constructor_iterator_( (void *)(v7 + 4), 8u, v5, (int)DNameNode::DNameNode, (void (__thiscall *)(void *))sub_4D5A10); } v26 = (void *)v4; if ( !v4 ) return 0; v8 = (void *)unknown_libname_130(12 * (v5 + 1) | -((unsigned __int8)(12 * (unsigned __int64)(unsigned int)(v5 + 1) >> 32) != 0)); if ( !v8 ) { _LN21(v26, 8u, *((_DWORD *)v26 - 1), (void (__thiscall *)(void *))sub_4D5A10); sub_6530A4((char *)v26 - 4); return 0; } v10 = 0; for ( i = 0; v10 < *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4); i = v10 ) { v11 = 8 * v10; v12 = **(_DWORD **)(v2 + 16); *(_DWORD *)((char *)v26 + v11 + 4) = *(_DWORD *)(v12 + v11 + 4); *(_DWORD *)(v12 + v11 + 4) = 0; v10 = i + 1; } memmove(v8, *(const void **)(v2 + 8), 12 * *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4)); *((_WORD *)v8 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 4) + 3) = v5; *((_WORD *)v8 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 6) + 2) = v5; if ( v5 > 0 ) { v13 = v26; v14 = v8; v15 = v5; do { *(_DWORD *)v14 = v13; v13 = (char *)v13 + 8; v14 = (char *)v14 + 12; --v15; } while ( v15 ); } v16 = *(_WORD *)(v2 + 4); if ( v16 < v5 ) { v17 = (int)((char *)v8 + 12 * v16 + 4); do { *(_WORD *)v17 = v16 + 1; *(_BYTE *)(v17 + 4) = 0; *(_WORD *)(v17 + 2) = v16++ - 1; v17 += 12; } while ( v16 < v5 ); } *((_WORD *)v8 + 6 * *(_WORD *)(v2 + 4) + 3) = v5 - 1; *((_WORD *)v8 + 6 * v5 - 4) = *(_WORD *)(v2 + 4); v18 = (int)((char *)v8 + 12 * v5); v19 = *(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4); *(_DWORD *)v18 = *(_DWORD *)v19; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v19 + 4); *(_DWORD *)(v18 + 8) = *(_DWORD *)(v19 + 8); v20 = *(void **)(v2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(v2 + 4); sub_6530A4(v20); v21 = *(void ***)(v2 + 16); *(_DWORD *)(v2 + 8) = v8; v22 = *v21; if ( *v21 ) { v23 = (char *)v22 - 4; _LN21(v22, 8u, *((_DWORD *)v22 - 1), (void (__thiscall *)(void *))sub_4D5A10); sub_6530A4(v23); } **(_DWORD **)(v2 + 16) = v26; v24 = *(_DWORD *)(v2 + 16); *(_WORD *)(v2 + 4) = v5; *(_DWORD *)(v24 + 4) = (unsigned __int16)v5; *(_WORD *)(v2 + 14) = v5; return 1; } // 4D5A00: using guessed type int DNameNode__DNameNode(); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004D8E20) -------------------------------------------------------- int __cdecl sub_4D8E20(int a1, int a2, int a3, __int16 a4) { int result; // eax@1 int v5; // ecx@1 int v6; // ecx@6 int v7; // esi@8 result = a2; *(_BYTE *)a2 = 37; v5 = a2 + 1; if ( a4 & 0x20 ) { *(_BYTE *)v5 = 43; v5 = a2 + 2; } if ( a4 & 8 ) *(_BYTE *)v5++ = 35; if ( *(_BYTE *)a3 == 76 ) { *(_WORD *)v5 = 13897; *(_BYTE *)(v5 + 2) = 52; v6 = v5 + 3; } else { *(_BYTE *)v5 = *(_BYTE *)a3; v6 = v5 + 1; } v7 = a4 & 0xE00; if ( v7 == 1024 ) { *(_BYTE *)v6 = 111; *(_BYTE *)(v6 + 1) = 0; } else { if ( v7 == 2048 ) { *(_BYTE *)v6 = ~(8 * a4) & 0x20 | 0x58; *(_BYTE *)(v6 + 1) = 0; } else { *(_BYTE *)v6 = *(_BYTE *)(a3 + 1); *(_BYTE *)(v6 + 1) = 0; } } return result; } //----- (004D8EB0) -------------------------------------------------------- void __thiscall sub_4D8EB0(int this) { int v1; // esi@1 v1 = this; sub_6530A4(*(void **)(this + 8)); sub_6530A4(*(void **)(v1 + 16)); sub_6530A4(*(void **)(v1 + 20)); } //----- (004D8EE0) -------------------------------------------------------- char __thiscall sub_4D8EE0(int this, int a2, size_t a3, char a4) { char result; // al@4 if ( a3 == 1 ) { if ( *(_DWORD *)(this + 20) >= 0x10u ) this = *(_DWORD *)this; result = a4; *(_BYTE *)(this + a2) = a4; } else { if ( *(_DWORD *)(this + 20) >= 0x10u ) this = *(_DWORD *)this; result = (unsigned int)memset((void *)(a2 + this), a4, a3); } return result; } //----- (004D8F20) -------------------------------------------------------- char __thiscall sub_4D8F20(void *this, int a2, char a3) { void *v3; // ebx@1 struct lconv *v4; // eax@1 const char *v5; // edi@1 unsigned int v6; // kr00_4@3 void *v7; // eax@3 void *v8; // eax@3 void *v9; // eax@3 int v10; // esi@3 int v11; // edx@3 char result; // al@3 int v13; // [sp+0h] [bp-28h]@1 void *v14; // [sp+10h] [bp-18h]@1 int v15; // [sp+14h] [bp-14h]@1 int *v16; // [sp+18h] [bp-10h]@1 int v17; // [sp+24h] [bp-4h]@1 v16 = &v13; v3 = this; v14 = this; v4 = localeconv(); v15 = (int)v4; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)v3 + 4) = 0; *((_DWORD *)v3 + 5) = 0; v17 = 0; v5 = byte_6A492E; if ( !a3 ) v5 = v4->grouping; _Getcvt(); v6 = strlen(v5); v7 = (void *)unknown_libname_130(v6 + 1); memcpy(v7, v5, v6 + 1); *((_DWORD *)v3 + 2) = v7; _Getcvt(); v8 = (void *)unknown_libname_130(6); memcpy(v8, "false", 6u); *((_DWORD *)v3 + 4) = v8; _Getcvt(); v9 = (void *)unknown_libname_130(5); memcpy(v9, "true", 5u); *((_DWORD *)v3 + 5) = v9; _Getcvt(); v10 = v15; *((_BYTE *)v3 + 12) = **(_BYTE **)v15; _Getcvt(); v11 = *(_DWORD *)(v10 + 4); result = *(_BYTE *)v11; *((_BYTE *)v3 + 13) = *(_BYTE *)v11; if ( a3 ) { _Getcvt(); *((_BYTE *)v3 + 12) = 46; result = (unsigned __int64)_Getcvt(); *((_BYTE *)v3 + 13) = 44; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004D9048) -------------------------------------------------------- void __usercall sub_4D9048(int a1) { sub_4D8EB0(*(_DWORD *)(a1 - 24)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004D9080) -------------------------------------------------------- void *__thiscall sub_4D9080(void *this, char *a2) { void *v2; // esi@1 int (__thiscall **v4)(void *, char); // [sp+Ch] [bp-1Ch]@3 void *v5; // [sp+18h] [bp-10h]@1 int v6; // [sp+24h] [bp-4h]@1 v2 = this; v5 = this; std::_Lockit::_Lockit(0); v6 = 0; *((_DWORD *)v2 + 1) = 0; *((_BYTE *)v2 + 8) = 0; *((_DWORD *)v2 + 3) = 0; *((_BYTE *)v2 + 16) = 0; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 24) = 0; *((_DWORD *)v2 + 7) = 0; *((_BYTE *)v2 + 32) = 0; LOBYTE(v6) = 4; if ( !a2 ) { a2 = "bad locale name"; std::exception::exception(&a2); v4 = &off_6C598C; _CxxThrowException(&v4, &unk_73A5F0); } std::_Locinfo::_Locinfo_ctor(v2, a2); return v2; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651C3F: using guessed type _DWORD __cdecl std___Locinfo___Locinfo_ctor(_DWORD, char *); // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6C598C: using guessed type int (__thiscall *off_6C598C)(void *, char); //----- (004D9130) -------------------------------------------------------- int __thiscall sub_4D9130(void *this) { void *v1; // esi@1 v1 = this; std::_Locinfo::_Locinfo_dtor(this); if ( *((_DWORD *)v1 + 7) ) free(*((void **)v1 + 7)); *((_DWORD *)v1 + 7) = 0; if ( *((_DWORD *)v1 + 5) ) free(*((void **)v1 + 5)); *((_DWORD *)v1 + 5) = 0; if ( *((_DWORD *)v1 + 3) ) free(*((void **)v1 + 3)); *((_DWORD *)v1 + 3) = 0; if ( *((_DWORD *)v1 + 1) ) free(*((void **)v1 + 1)); *((_DWORD *)v1 + 1) = 0; return std::_Lockit::__Lockit(v1); } // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651BCC: using guessed type _DWORD __cdecl std___Locinfo___Locinfo_dtor(_DWORD); //----- (004D91E0) -------------------------------------------------------- signed int __cdecl sub_4D91E0(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 _Ctypevec *v5; // eax@7 char v7; // [sp+Ch] [bp-44h]@7 char v8; // [sp+30h] [bp-20h]@7 int v9; // [sp+40h] [bp-10h]@1 int v10; // [sp+4Ch] [bp-4h]@3 v2 = 0; v9 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x18u); v9 = v3; v10 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); sub_4D9080(&v7, v4); v2 = 1; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)v3 = &off_6C5C3C; v5 = _Getctype((_Ctypevec *)&v8); *(_DWORD *)(v3 + 8) = v5->_Hand; *(_DWORD *)(v3 + 12) = v5->_Page; *(_DWORD *)(v3 + 16) = v5->_Table; *(_DWORD *)(v3 + 20) = v5->_Delfl; } else { v3 = 0; } v10 = -1; *(_DWORD *)a1 = v3; if ( v2 & 1 ) sub_4D9130(&v7); } return 2; } // 6C5C3C: using guessed type int (__thiscall *off_6C5C3C)(void *, char); //----- (004D92C0) -------------------------------------------------------- void *__thiscall sub_4D92C0(void *this, int a2) { void *result; // eax@1 int v3; // ecx@1 char v4; // dl@2 result = this; v3 = a2; *(_DWORD *)result = &off_6C5E34; *((_DWORD *)result + 9) = &off_6C5CD8; *((_DWORD *)result + 10) = &off_6C5B18; *((_DWORD *)result + 12) = 0; *((_DWORD *)result + 11) = 0; *((_DWORD *)result + 13) = &off_6C59BC; *((_BYTE *)result + 56) = 0; *((_DWORD *)result + 78) = 0; *((_DWORD *)result + 79) = 0; do { v4 = *(_BYTE *)v3; *((_BYTE *)result + v3 - a2 + 4) = *(_BYTE *)v3; ++v3; } while ( v4 ); return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 6C5E34: using guessed type int (__stdcall *off_6C5E34)(int); //----- (004D9320) -------------------------------------------------------- void *__thiscall sub_4D9320(int this, void *a2, void *a3) { int v3; // eax@1 int v4; // ecx@1 void *result; // eax@4 int v6; // eax@6 char v7; // [sp+Ch] [bp-104h]@6 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 4); if ( v4 ) { if ( a2 ) memcpy(a2, (const void *)(v4 + 4), 0x100u); result = a2; } else { if ( *(_DWORD *)(v3 + 8) && (v6 = *(_DWORD *)(v3 + 8), v7 = 0, (*(int (__thiscall **)(int, char *, void *))(*(_DWORD *)v6 + 8))(v6, &v7, a3)) ) { memcpy(a2, (const void *)sub_4D8170(a3, (int)&v7), 0x100u); result = a2; } else { result = 0; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D93E0) -------------------------------------------------------- int __thiscall sub_4D93E0(int this, void *a2) { int v2; // eax@1 int v3; // ecx@1 int result; // eax@2 int v5; // eax@4 char v6; // [sp+4h] [bp-104h]@2 unsigned int v7; // [sp+104h] [bp-4h]@1 int v8; // [sp+108h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)(this + 4); if ( v3 ) { memcpy(&v6, (const void *)(v3 + 4), 0x100u); result = sub_4D8170(a2, (int)&v6); } else { if ( *(_DWORD *)(v2 + 8) && (v5 = *(_DWORD *)(v2 + 8), v6 = 0, (*(int (__thiscall **)(int, char *, void *))(*(_DWORD *)v5 + 8))(v5, &v6, a2)) ) result = sub_4D8170(a2, (int)&v6); else result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004D9490) -------------------------------------------------------- void *__cdecl sub_4D9490() { void *v0; // eax@1 void *v1; // esi@1 void *result; // eax@2 v0 = (void *)operator new(0x140u); v1 = v0; if ( v0 ) { sub_4D92C0(v0, (int)"print"); *(_DWORD *)v1 = &off_6C5E4C; result = v1; } else { result = 0; } return result; } // 6C5E4C: using guessed type int (__stdcall *off_6C5E4C)(int); //----- (004D94C0) -------------------------------------------------------- signed int __thiscall sub_4D94C0(int this, int a2, int a3, int a4) { int v4; // ebx@1 bool v5; // zf@1 bool v6; // sf@1 int v7; // edi@2 int v8; // eax@3 int v9; // eax@3 int v10; // eax@6 int v12; // [sp+Ch] [bp-10Ch]@1 int v13; // [sp+10h] [bp-108h]@2 char v14; // [sp+14h] [bp-104h]@1 unsigned int v15; // [sp+114h] [bp-4h]@1 int v16; // [sp+118h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v4 = this; v5 = *(_DWORD *)(this + 18948) == 0; v6 = *(_DWORD *)(this + 18948) < 0; v14 = 0; v12 = 0; if ( v6 | v5 ) { LABEL_6: v10 = *(_DWORD *)(a3 + 256); if ( v10 ) { *(_DWORD *)(a3 + 256) = v10 - 1; return 1; } } else { v13 = this + 772; v7 = this + 4; while ( 1 ) { v8 = (int)sub_4D9320(v7, &v14, (void *)a3); v9 = sub_4D5F70(a3 + 260, v8); if ( !v9 ) break; if ( !(*(int (__stdcall **)(int, int))(*(_DWORD *)v13 + 8))(v9, a3) ) break; v13 += 284; v7 += 12; ++v12; if ( v12 >= *(_DWORD *)(v4 + 18948) ) goto LABEL_6; } } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (004D95A0) -------------------------------------------------------- signed int __thiscall sub_4D95A0(int this, int a2, int a3, int a4) { bool v4; // zf@1 int v6; // [sp-4h] [bp-10Ch]@2 char v7; // [sp+4h] [bp-104h]@1 unsigned int v8; // [sp+104h] [bp-4h]@1 int v9; // [sp+108h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v4 = *(_DWORD *)(this + 4) == 0; v7 = 0; if ( v4 ) v6 = 0; else v6 = (*(int (__thiscall **)(_DWORD, char *, int))(**(_DWORD **)(this + 4) + 8))(*(_DWORD *)(this + 4), &v7, a3); return sub_4D8100(a3, v6); } // 86FEB8: using guessed type int __security_cookie; //----- (004D9600) -------------------------------------------------------- signed int __thiscall sub_4D9600(int this, int a2, int a3, int a4) { int v4; // edi@1 int (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // eax@2 const char *v6; // eax@2 int v7; // eax@2 unsigned int v8; // ecx@3 int v9; // ecx@4 const char *v11; // eax@9 int v12; // eax@9 int v13; // eax@12 int v14; // [sp-4h] [bp-110h]@6 char v15; // [sp+8h] [bp-104h]@2 unsigned int v16; // [sp+108h] [bp-4h]@1 int v17; // [sp+10Ch] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v4 = this; if ( *(_DWORD *)a4 ) { v13 = *(_DWORD *)(a3 + 256); if ( v13 ) { *(_DWORD *)(a3 + 256) = v13 - 1; return 1; } return 0; } *(_DWORD *)a4 = 1; v5 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(this + 4) + 8); v15 = 0; v6 = (const char *)v5(this + 4, &v15, a3); v7 = sub_4D7460(*(_DWORD *)(a3 + 65800), v6); if ( !v7 ) { if ( *(_DWORD *)(v4 + 288) ) { v11 = (const char *)(*(int (__stdcall **)(char *, int))(**(_DWORD **)(v4 + 288) + 8))(&v15, a3); v12 = sub_4D7460(*(_DWORD *)(a3 + 65800), v11); if ( v12 ) return sub_4D60C0(a3, v12); v14 = (int)&v15; } else { v14 = (int)&v15; } sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::StateCall::sa_Step : not exist default routine", v14); return 0; } v8 = *(_DWORD *)(a3 + 256); if ( v8 >= 0x1F ) return 0; v9 = v8 + 1; *(_DWORD *)(a3 + 256) = v9; *(_DWORD *)(a3 + 8 * v9 + 4) = 0; *(_DWORD *)(a3 + 8 * *(_DWORD *)(a3 + 256)) = v7; return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (004D9730) -------------------------------------------------------- void *__thiscall sub_4D9730(void *this, void *a2, void *a3) { void *result; // eax@1 const void *v4; // esi@2 result = (void *)sub_4D8170(a3, (int)((char *)this + 4)); if ( result ) { v4 = result; result = a2; memcpy(a2, v4, 0x100u); } return result; } //----- (004D9760) -------------------------------------------------------- void *__thiscall sub_4D9760(int this, void *a2, void *a3) { void *result; // eax@2 int v4; // eax@4 if ( *(_DWORD *)(this + 8) ) { result = (void *)(*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(this + 8) + 8))(a2, a3); } else { if ( *(_DWORD *)(this + 4) ) { v4 = (*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(this + 4) + 8))(a2, a3); memcpy(a2, (const void *)sub_4D8170(a3, v4), 0x100u); result = a2; } else { result = 0; } } return result; } //----- (004D97C0) -------------------------------------------------------- void *__thiscall sub_4D97C0(int this, void *a2) { int v2; // edi@1 const void *v3; // edx@1 void *result; // eax@2 int v5; // eax@3 signed int v6; // eax@8 __int16 v7; // ax@12 int v8; // edx@12 bool v9; // zf@12 v2 = this; v3 = (const void *)(this + 12); if ( *(_BYTE *)(this + 12) ) { result = a2; memcpy(a2, v3, 0x100u); *(_BYTE *)v3 = 0; } else { sub_4D5C50((void *)this); v5 = *(_DWORD *)(v2 + 8); if ( v5 == -1 ) v5 = sub_4D5C10((void *)v2); else *(_DWORD *)(v2 + 8) = -1; if ( v5 == -1 ) { *(_DWORD *)(v2 + 528) = "Unexpected EOF"; result = 0; } else { *(_DWORD *)(v2 + 524) = 0; *(_BYTE *)(v2 + 268) = v5; ++*(_DWORD *)(v2 + 524); LOBYTE(v6) = *(_BYTE *)(v2 + 268); if ( (_BYTE)v6 == 34 ) { result = sub_4D5CD0(v2, a2); } else { v6 = (unsigned __int8)v6; if ( (unsigned int)(unsigned __int8)v6 - 48 > 9 ) { LOBYTE(v7) = sub_4D5DE0(v6); v9 = v7 == 0; result = a2; if ( v9 ) { *(_BYTE *)(v8 + v2 + 268) = 0; memcpy(a2, (const void *)(v2 + 268), 0x100u); } else { result = sub_4D7FC0((void *)v2, a2); } } else { result = sub_4D7EF0((void *)v2, a2); } } } } return result; } //----- (004D98A0) -------------------------------------------------------- int __thiscall sub_4D98A0(void *this) { int v1; // esi@1 int result; // eax@1 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 24) + 4) - 96) = &off_6C5EC0; v1 = (int)((char *)this - 72); *((_DWORD *)this - 18) = &off_6C5D9C; sub_4D62E0((int)((char *)this - 72)); sub_4D8210(v1); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 - 24) + 4) + v1 - 24) = &off_6C5C1C; result = *(_DWORD *)(*(_DWORD *)(v1 - 8) + 4); *(_DWORD *)(result + v1 - 8) = &off_6C5C0C; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 - 24) + 4) + v1 - 24) = &off_6C5C14; return result; } // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); // 6C5D9C: using guessed type int (__thiscall *off_6C5D9C)(void *, char); // 6C5EC0: using guessed type int (__stdcall *off_6C5EC0)(char); //----- (004D9930) -------------------------------------------------------- signed int __thiscall sub_4D9930(int this, signed int a2) { int v2; // esi@1 unsigned int *v3; // edi@2 unsigned int v4; // edx@2 unsigned int v5; // ecx@3 int v6; // eax@4 signed int result; // eax@5 unsigned int v8; // edi@7 int v9; // ecx@8 unsigned int v10; // ebx@12 unsigned int v11; // eax@14 void *v12; // edi@21 void **v13; // eax@21 void *v14; // edx@21 int v15; // ecx@23 int v16; // eax@25 int v17; // eax@25 int v18; // eax@25 int v19; // ecx@27 int v20; // eax@27 int v21; // eax@30 int v22; // esi@31 int v23; // ecx@31 void *v24; // [sp+8h] [bp-8h]@21 int v25; // [sp+Ch] [bp-4h]@21 v2 = this; if ( *(_BYTE *)(this + 64) & 8 ) { v3 = *(unsigned int **)(this + 36); v4 = *v3; if ( *v3 ) { v5 = *(_DWORD *)(this + 60); if ( v4 < v5 ) { v6 = v4 + **(_DWORD **)(v2 + 52); *v3 = v5; **(_DWORD **)(v2 + 52) = v6 - v5; } } } result = a2; if ( a2 == -1 ) return 0; v8 = **(_DWORD **)(v2 + 36); if ( !v8 || (v9 = *(_DWORD *)(v2 + 52), v8 >= v8 + *(_DWORD *)v9) ) { if ( !(*(_BYTE *)(v2 + 64) & 2) ) { if ( v8 ) v10 = v8 + **(_DWORD **)(v2 + 52) - **(_DWORD **)(v2 + 16); else v10 = 0; v11 = v10 >> 1; if ( v10 >> 1 < 0x20 ) { v11 = 32; do { LABEL_17: if ( 2147483647 - v11 >= v10 ) break; v11 >>= 1; } while ( v11 ); if ( !v11 ) return -1; v25 = v10 + v11; v12 = (void *)sub_4227A0(v10 + v11); v13 = *(void ***)(v2 + 16); v14 = *v13; v24 = *v13; if ( v10 && (memmove(v12, v14, v10), v14 = v24, v10) ) { v16 = *(_DWORD *)(v2 + 36); *(_DWORD *)(v2 + 60) += v12 - v24; v17 = *(_DWORD *)v16 - (_DWORD)v24; **(_DWORD **)(v2 + 20) += v12 - v24; v18 = (int)((char *)v12 + v17); **(_DWORD **)(v2 + 36) = v18; **(_DWORD **)(v2 + 52) = (char *)v12 + v25 - v18; if ( !(*(_BYTE *)(v2 + 64) & 4) ) { v19 = **(_DWORD **)(v2 + 36); v20 = (int)((char *)v12 + **(_DWORD **)(v2 + 32) - (_DWORD)v24); **(_DWORD **)(v2 + 16) = v12; **(_DWORD **)(v2 + 32) = v20; **(_DWORD **)(v2 + 48) = v19 - v20 + 1; goto LABEL_28; } } else { v15 = *(_DWORD *)(v2 + 20); *(_DWORD *)(v2 + 60) = v12; *(_DWORD *)v15 = v12; **(_DWORD **)(v2 + 36) = v12; **(_DWORD **)(v2 + 52) = v25; if ( !(*(_BYTE *)(v2 + 64) & 4) ) { **(_DWORD **)(v2 + 16) = v12; **(_DWORD **)(v2 + 32) = v12; **(_DWORD **)(v2 + 48) = 1; LABEL_28: if ( *(_BYTE *)(v2 + 64) & 1 ) operator delete(v14); v21 = *(_DWORD *)(v2 + 52); *(_DWORD *)(v2 + 64) |= 1u; --*(_DWORD *)v21; result = a2; goto LABEL_31; } } **(_DWORD **)(v2 + 16) = v12; **(_DWORD **)(v2 + 32) = 0; **(_DWORD **)(v2 + 48) = v12; goto LABEL_28; } if ( v11 ) goto LABEL_17; } return -1; } --*(_DWORD *)v9; LABEL_31: v22 = *(_DWORD *)(v2 + 36); v23 = (*(_DWORD *)v22)++; *(_BYTE *)v23 = result; return result; } //----- (004D9AE0) -------------------------------------------------------- int __cdecl sub_4D9AE0(int a1, int a2, int a3, int a4, unsigned __int8 *a5, int a6) { int v6; // ecx@1 int v7; // ebx@1 unsigned __int8 *v8; // edi@2 unsigned __int8 v9; // dl@4 int v10; // eax@5 int v11; // eax@6 int v12; // ecx@6 int v13; // eax@6 int result; // eax@11 v6 = a4; v7 = a6; if ( a6 ) { v8 = a5; do { if ( !v6 || ((v9 = *v8, !**(_DWORD **)(v6 + 36)) || (v10 = *(_DWORD *)(v6 + 52), *(_DWORD *)v10 <= 0) ? (v13 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 12))(v9)) : (--*(_DWORD *)v10, v11 = *(_DWORD *)(v6 + 36), v12 = *(_DWORD *)v11, ++*(_DWORD *)v11, *(_BYTE *)v12 = v9, v13 = v9), v6 = a4, v13 == -1) ) LOBYTE(a3) = 1; ++v8; --v7; } while ( v7 ); } result = a2; *(_DWORD *)a2 = a3; *(_DWORD *)(a2 + 4) = v6; return result; } //----- (004D9B50) -------------------------------------------------------- int __cdecl sub_4D9B50(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6) { int v6; // ecx@1 int i; // esi@1 int v8; // eax@4 int v9; // eax@5 int v10; // ecx@5 int v11; // eax@5 int result; // eax@10 v6 = a4; for ( i = a6; i; --i ) { if ( v6 ) { if ( **(_DWORD **)(v6 + 36) && (v8 = *(_DWORD *)(v6 + 52), *(_DWORD *)v8 > 0) ) { --*(_DWORD *)v8; v9 = *(_DWORD *)(v6 + 36); v10 = (*(_DWORD *)v9)++; *(_BYTE *)v10 = a5; v11 = a5; } else { v11 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 12))(a5); } v6 = a4; if ( v11 != -1 ) continue; } LOBYTE(a3) = 1; } result = a2; *(_DWORD *)a2 = a3; *(_DWORD *)(a2 + 4) = v6; return result; } //----- (004D9BC0) -------------------------------------------------------- int __cdecl sub_4D9BC0(int a1, int a2, int a3, int a4, const void *a5, size_t a6, unsigned __int8 a7) { int v7; // ebx@1 const void *v8; // edi@1 void *v9; // eax@2 int v10; // esi@3 int v11; // eax@5 int v12; // edi@5 int v13; // ebx@5 int v14; // eax@7 int v15; // edx@9 char v17; // [sp+Ch] [bp-10h]@7 char v18; // [sp+14h] [bp-8h]@5 v7 = a6; v8 = a5; while ( 1 ) { v9 = memchr(v8, 0, v7); v10 = v9 ? v9 - v8 : v7; v11 = sub_4D9AE0(a1, (int)&v18, a3, a4, (unsigned __int8 *)v8, v10); a3 = *(_DWORD *)v11; v12 = (int)((char *)v8 + v10); v13 = v7 - v10; a4 = *(_DWORD *)(v11 + 4); if ( !v13 ) break; if ( a7 ) { v14 = sub_4D9B50(a1, (int)&v17, *(_DWORD *)v11, *(_DWORD *)(v11 + 4), a7, 1); a3 = *(_DWORD *)v14; a4 = *(_DWORD *)(v14 + 4); } v8 = (const void *)(v12 + 1); v7 = v13 - 1; } v15 = *(_DWORD *)v11; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)a2 = v15; return a2; } //----- (004D9C60) -------------------------------------------------------- int __cdecl sub_4D9C60(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_1321B73C; v14 = 0; v13 = dword_1321B73C; if ( !dword_154DC984 ) { std::_Lockit::_Lockit(0); if ( !dword_154DC984 ) { ++dword_154DC980; dword_154DC984 = dword_154DC980; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_154DC984; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_154DC984 >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_154DC984); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_651AEE(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_4D91E0((int)&v13, v2) == -1 ) { sub_653952(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_73A6FC); } v7 = v13; dword_1321B73C = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651A77: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 1321B73C: using guessed type int dword_1321B73C; // 154DC980: using guessed type int dword_154DC980; // 154DC984: using guessed type int dword_154DC984; //----- (004D9DA0) -------------------------------------------------------- signed int __cdecl sub_4D9DA0(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 char v6; // [sp+Ch] [bp-34h]@7 int v7; // [sp+30h] [bp-10h]@1 int v8; // [sp+3Ch] [bp-4h]@3 v2 = 0; v7 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x10u); v7 = v3; v8 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); sub_4D9080(&v6, v4); v2 = 1; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)v3 = &off_6C5DDC; *(_QWORD *)(v3 + 8) = _Getcvt(); } else { v3 = 0; } v8 = -1; *(_DWORD *)a1 = v3; if ( v2 & 1 ) sub_4D9130(&v6); } return 4; } // 6C5DDC: using guessed type int (__thiscall *off_6C5DDC)(void *, char); //----- (004D9E60) -------------------------------------------------------- char __thiscall sub_4D9E60(int this) { return *(_BYTE *)(this + 12); } //----- (004D9E70) -------------------------------------------------------- char __thiscall sub_4D9E70(int this) { return *(_BYTE *)(this + 13); } //----- (004D9E80) -------------------------------------------------------- void *__thiscall sub_4D9E80(void *this, char a2) { void *v2; // esi@1 void *v3; // ST08_4@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C5ED4; sub_6530A4(v3); sub_6530A4(*((void **)v2 + 4)); sub_6530A4(*((void **)v2 + 5)); *(_DWORD *)v2 = &off_6C5998; if ( a2 & 1 ) operator delete(v2); return v2; } // 6C5998: using guessed type int (__thiscall *off_6C5998)(void *, char); // 6C5ED4: using guessed type int (__thiscall *off_6C5ED4)(void *, char); //----- (004D9ED0) -------------------------------------------------------- void *__thiscall sub_4D9ED0(void *this, int a2) { void *v2; // ebx@1 void *result; // eax@2 unsigned int v4; // eax@5 void *v5; // edi@5 char v6; // cl@6 unsigned int v7; // eax@9 void *v8; // edi@9 char v9; // cl@10 int v10; // [sp+Ch] [bp-108h]@3 unsigned __int8 v11; // [sp+10h] [bp-104h]@1 unsigned int v12; // [sp+110h] [bp-4h]@1 int v13; // [sp+114h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v2 = this; v11 = 0; if ( sub_4D97C0(a2, &v11) && ((v10 = v11, v11 == 61) || v11 == 33) ) { v4 = strlen((const char *)&v11) + 1; v5 = (char *)v2 + 3; do { v6 = *((_BYTE *)v5 + 1); v5 = (char *)v5 + 1; } while ( v6 ); memcpy(v5, &v11, v4); result = sub_4D97C0(a2, &v11); if ( result ) { if ( v11 == 61 ) { v7 = strlen((const char *)&v11) + 1; v8 = (char *)v2 + 3; do { v9 = *((_BYTE *)v8 + 1); v8 = (char *)v8 + 1; } while ( v9 ); memcpy(v8, &v11, v7); *((_DWORD *)v2 + 65) = (v10 != 61) + 7; result = (void *)1; } else { memcpy((void *)(a2 + 12), &v11, 0x100u); *((_DWORD *)v2 + 65) = 1; result = (void *)(v10 == 61); } } } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004DA030) -------------------------------------------------------- signed int __thiscall sub_4DA030(void *this, int a2) { void *v2; // ebx@1 signed int result; // eax@2 unsigned int v4; // eax@4 void *v5; // edi@4 char v6; // cl@5 char v7; // [sp+4h] [bp-104h]@1 unsigned int v8; // [sp+104h] [bp-4h]@1 int v9; // [sp+108h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; v7 = 0; if ( sub_4D97C0(a2, &v7) && v7 == 61 ) { v4 = strlen(&v7) + 1; v5 = (char *)v2 + 3; do { v6 = *((_BYTE *)v5 + 1); v5 = (char *)v5 + 1; } while ( v6 ); memcpy(v5, &v7, v4); *((_DWORD *)v2 + 65) = 2; result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004DA0D0) -------------------------------------------------------- void *__thiscall sub_4DA0D0(void *this, int a2) { void *v2; // esi@1 void *result; // eax@1 unsigned int v4; // eax@4 void *v5; // ecx@4 char v6; // dl@5 char v7; // [sp+8h] [bp-104h]@1 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; v7 = 0; result = sub_4D97C0(a2, &v7); if ( result ) { if ( v7 == 61 ) { *((_DWORD *)v2 + 65) = (*((_BYTE *)v2 + 4) == 62) + 5; v4 = strlen(&v7) + 1; v5 = (char *)v2 + 3; do { v6 = *((_BYTE *)v5 + 1); v5 = (char *)v5 + 1; } while ( v6 ); memcpy(v5, &v7, v4); } else { *((_DWORD *)v2 + 65) = (*((_BYTE *)v2 + 4) == 62) + 3; memcpy((void *)(a2 + 12), &v7, 0x100u); } result = (void *)1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004DA1A0) -------------------------------------------------------- void __thiscall sub_4DA1A0(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // edi@3 v1 = this; *(_DWORD *)this = &off_6C5AF0; v2 = *(void **)(this + 4); if ( v2 ) { *(_DWORD *)v2 = &off_6C59A8; operator delete(v2); } v3 = *(void **)(v1 + 8); if ( v3 ) { sub_4D7270(*(_DWORD *)(v1 + 8)); operator delete(v3); } *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); //----- (004DA220) -------------------------------------------------------- int (**__thiscall sub_4DA220(int this))() { int v1; // esi@1 int v2; // ecx@1 void *v3; // edi@3 void *v4; // eax@4 void *v5; // ebx@5 int (**result)(); // eax@7 v1 = this; *(_DWORD *)this = &off_6C5EF0; v2 = *(_DWORD *)(this + 272); if ( v2 ) (**(void (__stdcall ***)(_DWORD))v2)(1); v3 = *(void **)(v1 + 276); if ( v3 ) { v4 = *(void **)v3; if ( *(_DWORD *)v3 ) { v5 = (char *)v4 - 4; _LN21(v4, 8u, *((_DWORD *)v4 - 1), (void (__thiscall *)(void *))sub_4D5A10); sub_6530A4(v5); } operator delete(v3); } result = &off_6C59A8; *(_DWORD *)(v1 + 8) = &off_6C59A8; *(_DWORD *)(v1 + 4) = &off_6C59A8; *(_DWORD *)v1 = &off_6C59A8; return result; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5EF0: using guessed type int (__stdcall *off_6C5EF0)(int); //----- (004DA2C0) -------------------------------------------------------- int __thiscall sub_4DA2C0(int this, int a2, __int16 a3, int a4, int a5) { int result; // eax@1 int v6; // edx@1 char v7; // bl@2 result = this; *(_DWORD *)this = &off_6C5F80; *(_DWORD *)(this + 36) = &off_6C5AF0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 176) = a4; *(_DWORD *)(this + 180) = a5; v6 = a2; do { v7 = *(_BYTE *)v6; *(_BYTE *)(this - a2 + v6 + 4) = *(_BYTE *)v6; ++v6; } while ( v7 ); *(_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; *(_DWORD *)(this + 80) = 0; *(_DWORD *)(this + 84) = 0; *(_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; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; *(_DWORD *)(this + 136) = 0; *(_DWORD *)(this + 140) = 0; *(_DWORD *)(this + 144) = 0; *(_DWORD *)(this + 148) = 0; *(_DWORD *)(this + 152) = 0; *(_DWORD *)(this + 156) = 0; *(_DWORD *)(this + 160) = 0; *(_DWORD *)(this + 164) = 0; *(_DWORD *)(this + 168) = 0; *(_DWORD *)(this + 172) = 0; *(_WORD *)(this + 184) = a3; return result; } // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); // 6C5F80: using guessed type int (__stdcall *off_6C5F80)(int); //----- (004DA3A0) -------------------------------------------------------- void __thiscall sub_4DA3A0(void *this) { void *v1; // ebx@1 int *v2; // esi@1 int v3; // edi@2 void *v4; // eax@5 void *v5; // edi@7 signed int v6; // [sp+14h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6C5F80; v2 = (int *)((char *)this + 48); v6 = 32; do { v3 = *v2; if ( *v2 ) { sub_4D7270(*v2); operator delete((void *)v3); } ++v2; --v6; } while ( v6 ); *((_DWORD *)v1 + 9) = &off_6C5AF0; v4 = (void *)*((_DWORD *)v1 + 10); if ( v4 ) { *(_DWORD *)v4 = &off_6C59A8; operator delete(v4); } v5 = (void *)*((_DWORD *)v1 + 11); if ( v5 ) { sub_4D7270(*((_DWORD *)v1 + 11)); operator delete(v5); } *((_DWORD *)v1 + 9) = &off_6C59A8; *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); // 6C5F80: using guessed type int (__stdcall *off_6C5F80)(int); //----- (004DA460) -------------------------------------------------------- int __cdecl sub_4DA460() { int v0; // eax@1 int v1; // esi@1 int v2; // ST1C_4@1 int result; // eax@1 v0 = operator new(0x4A08u); v1 = v0; v2 = v0; result = 0; if ( v2 ) { *(_DWORD *)v1 = &off_6C5F08; _eh_vector_constructor_iterator_( (void *)(v1 + 4), 0xCu, 64, (int)sub_4D59E0, (void (__thiscall *)(void *))sub_4DA1A0); _eh_vector_constructor_iterator_( (void *)(v1 + 772), 0x11Cu, 64, (int)sub_4D7240, (void (__thiscall *)(void *))sub_4D7270); result = v1; } return result; } // 6C5F08: using guessed type int (__stdcall *off_6C5F08)(int); //----- (004DA500) -------------------------------------------------------- int __cdecl sub_4DA500() { int result; // eax@1 result = operator new(0x10u); if ( result ) { *(_DWORD *)result = &off_6C5F50; *(_DWORD *)(result + 4) = &off_6C5AF0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = 0; } else { result = 0; } return result; } // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); // 6C5F50: using guessed type int (__stdcall *off_6C5F50)(int); //----- (004DA530) -------------------------------------------------------- int __cdecl sub_4DA530() { int result; // eax@1 result = operator new(0x12Cu); if ( result ) { *(_DWORD *)result = &off_6C5F68; *(_DWORD *)(result + 4) = &off_6C5AF0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 16) = &off_6C5CD8; *(_DWORD *)(result + 20) = &off_6C5B18; *(_DWORD *)(result + 28) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 32) = &off_6C59BC; *(_BYTE *)(result + 36) = 0; *(_DWORD *)(result + 292) = 0; *(_DWORD *)(result + 296) = 0; } else { result = 0; } return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 6C5F68: using guessed type int (__stdcall *off_6C5F68)(int); //----- (004DA590) -------------------------------------------------------- signed int __thiscall sub_4DA590(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // eax@1 int v6; // eax@3 signed int result; // eax@4 char v8; // [sp+Ch] [bp-104h]@1 unsigned int v9; // [sp+10Ch] [bp-4h]@1 int v10; // [sp+110h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v4 = this; dword_1321B748 = a3; v8 = 0; sub_4D9320((int)((char *)this + 4), &v8, (void *)a3); v5 = sub_4D93E0((int)((char *)v4 + 4), (void *)a3); if ( v5 && (*(int (__thiscall **)(char *, int, int))(*((_DWORD *)v4 + 4) + 8))((char *)v4 + 16, v5, a3) && (v6 = *(_DWORD *)(a3 + 256)) != 0 ) { *(_DWORD *)(a3 + 256) = v6 - 1; result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004DA630) -------------------------------------------------------- void *__thiscall sub_4DA630(int this, int a2) { int v2; // esi@1 int v3; // edi@1 void *result; // eax@3 v2 = this; v3 = this + 4; if ( sub_4D97C0(a2, (void *)(this + 4)) ) { switch ( *(_BYTE *)v3 ) { case 0x3D: result = sub_4D9ED0((void *)v2, a2); break; case 0x21: result = (void *)sub_4DA030((void *)v2, a2); break; case 0x3C: case 0x3E: result = sub_4DA0D0((void *)v2, a2); break; default: goto LABEL_6; } } else { LABEL_6: result = 0; } return result; } //----- (004DA6D0) -------------------------------------------------------- signed int __thiscall sub_4DA6D0(int this, int a2) { int v2; // edi@1 const void *v3; // esi@1 signed int result; // eax@3 v2 = this; v3 = (const void *)(this + 4); if ( sub_4D97C0(a2, (void *)(this + 4)) ) { switch ( *(_BYTE *)v3 ) { case 0x2B: *(_DWORD *)(v2 + 260) = 9; result = 1; break; case 0x2D: *(_DWORD *)(v2 + 260) = 10; result = 1; break; case 0x2A: *(_DWORD *)(v2 + 260) = 11; result = 1; break; case 0x2F: *(_DWORD *)(v2 + 260) = 12; result = 1; break; case 0x25: *(_DWORD *)(v2 + 260) = 13; result = 1; break; default: memcpy((void *)(a2 + 12), v3, 0x100u); goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (004DA7B0) -------------------------------------------------------- signed int __thiscall sub_4DA7B0(int this, int a2) { void *v2; // esi@1 v2 = (void *)(this + 4); if ( sub_4D97C0(a2, (void *)(this + 4)) ) { if ( *(_BYTE *)v2 == 34 ) return sub_4D57F0(v2); memcpy((void *)(a2 + 12), v2, 0x100u); } return 0; } //----- (004DA7F0) -------------------------------------------------------- signed int __thiscall sub_4DA7F0(int this, int a2) { const void *v2; // esi@1 unsigned __int8 v3; // al@2 const void *v4; // ecx@3 v2 = (const void *)(this + 4); if ( sub_4D97C0(a2, (void *)(this + 4)) ) { v3 = *(_BYTE *)v2; if ( !*(_BYTE *)v2 ) return 1; v4 = v2; while ( (unsigned int)v3 - 48 <= 9 ) { v3 = *((_BYTE *)v4 + 1); v4 = (char *)v4 + 1; if ( !v3 ) return 1; } memcpy((void *)(a2 + 12), v2, 0x100u); } return 0; } //----- (004DA840) -------------------------------------------------------- signed int __thiscall sub_4DA840(int this, int a2) { const void *v2; // esi@1 signed int v3; // eax@2 v2 = (const void *)(this + 4); if ( sub_4D97C0(a2, (void *)(this + 4)) ) { v3 = *(_BYTE *)v2; if ( v3 >= 65 && v3 <= 90 || v3 >= 97 && v3 <= 122 || v3 == 95 ) return 1; memcpy((void *)(a2 + 12), v2, 0x100u); } return 0; } //----- (004DA890) -------------------------------------------------------- int __thiscall sub_4DA890(void *this, int a2) { void *v2; // edi@1 int result; // eax@1 int v4; // eax@3 int v5; // eax@6 void *v6; // [sp+Ch] [bp-10Ch]@1 char v7; // [sp+14h] [bp-104h]@1 unsigned int v8; // [sp+114h] [bp-4h]@1 int v9; // [sp+118h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; v6 = this; v7 = 0; result = (int)sub_4D97C0(a2, &v7); if ( result ) { if ( strcmp(&v7, (const char *)&unk_6C5F94) ) { memcpy((void *)(a2 + 12), &v7, 0x100u); v5 = operator new(0x104u); if ( v5 ) { *(_DWORD *)v5 = &off_6C5ADC; *(_BYTE *)(v5 + 4) = 0; } else { v5 = 0; } *((_DWORD *)v6 + 1) = v5; result = (**(int (__thiscall ***)(_DWORD, _DWORD))v5)(v5, a2); } else { v4 = operator new(0x11Cu); if ( v4 ) { *(_DWORD *)v4 = &off_6C5CD8; *(_DWORD *)(v4 + 4) = &off_6C5B18; *(_DWORD *)(v4 + 12) = 0; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 16) = &off_6C59BC; *(_BYTE *)(v4 + 20) = 0; *(_DWORD *)(v4 + 276) = 0; *(_DWORD *)(v4 + 280) = 0; *((_DWORD *)v2 + 2) = v4; result = (**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, a2); } else { *((_DWORD *)v2 + 2) = 0; result = (*(int (__thiscall **)(_DWORD, int))v0)(0, a2); } } } return result; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5ADC: using guessed type int (__stdcall *off_6C5ADC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 86FEB8: using guessed type int __security_cookie; //----- (004DA9F0) -------------------------------------------------------- signed __int16 __thiscall sub_4DA9F0(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 _UNKNOWN *v4; // ecx@2 char *v5; // eax@2 bool v6; // cf@3 char v7; // dl@5 __int16 v8; // ax@7 int v9; // eax@14 void *v10; // esi@15 int v11; // edi@20 signed __int16 result; // ax@21 int v13; // [sp+Ch] [bp-110h]@10 unsigned int v14; // [sp+10h] [bp-10Ch]@10 char v15; // [sp+18h] [bp-104h]@1 unsigned int v16; // [sp+118h] [bp-4h]@1 int v17; // [sp+11Ch] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v2 = a2; v3 = this; v15 = 0; if ( sub_4D97C0(a2, &v15) ) { v4 = &unk_6C5F9C; v5 = &v15; while ( 1 ) { v6 = (unsigned __int8)*v5 < *(_BYTE *)v4; if ( *v5 != *(_BYTE *)v4 ) break; if ( !*v5 ) goto LABEL_7; v7 = v5[1]; v6 = (unsigned __int8)v7 < *((_BYTE *)v4 + 1); if ( v7 != *((_BYTE *)v4 + 1) ) break; v5 += 2; v4 = (char *)v4 + 2; if ( !v7 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v6 - (v6 - 1); LABEL_9: if ( !v8 ) { v14 = 0; v13 = (int)((char *)v3 + 4); while ( sub_4D97C0(v2, &v15) ) { if ( !strcmp(&v15, (const char *)&unk_6C5F98) ) return 1; memcpy((void *)(v2 + 12), &v15, 0x100u); v9 = operator new(0x11Cu); if ( v9 ) { *(_DWORD *)v9 = &off_6C5CD8; *(_DWORD *)(v9 + 4) = &off_6C5B18; *(_DWORD *)(v9 + 12) = 0; *(_DWORD *)(v9 + 8) = 0; *(_DWORD *)(v9 + 16) = &off_6C59BC; *(_BYTE *)(v9 + 20) = 0; *(_DWORD *)(v9 + 276) = 0; *(_DWORD *)(v9 + 280) = 0; v10 = (void *)v9; } else { v10 = 0; } if ( !(unsigned __int16)(**(int (__thiscall ***)(void *, int))v10)(v10, a2) ) { *(_DWORD *)v10 = &off_6C59A8; operator delete(v10); return 0; } *(_DWORD *)v13 = v10; ++v14; v13 += 4; if ( v14 >= 0xA ) { if ( !sub_4D97C0(a2, &v15) ) { v11 = a2 + 12; goto LABEL_27; } if ( strcmp(&v15, (const char *)&unk_6C5F98) ) result = 0; else result = 1; return result; } v2 = a2; } } } v11 = v2 + 12; LABEL_27: memcpy((void *)v11, &v15, 0x100u); return 0; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 86FEB8: using guessed type int __security_cookie; //----- (004DAC40) -------------------------------------------------------- signed int __thiscall sub_4DAC40(void *this, int a2) { void *v2; // ebx@1 signed int result; // eax@1 int v4; // edx@2 char *v5; // ecx@2 bool v6; // cf@3 char v7; // al@5 __int16 v8; // ax@7 char v9; // [sp+8h] [bp-304h]@13 char v10; // [sp+108h] [bp-204h]@11 char v11; // [sp+208h] [bp-104h]@1 unsigned int v12; // [sp+308h] [bp-4h]@1 int v13; // [sp+30Ch] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v2 = this; v11 = 0; result = (signed int)sub_4D97C0(a2, &v11); if ( result ) { v4 = (int)"@"; v5 = &v11; while ( 1 ) { v6 = (unsigned __int8)*v5 < *(_BYTE *)v4; if ( *v5 != *(_BYTE *)v4 ) break; if ( !*v5 ) goto LABEL_7; v7 = v5[1]; v6 = (unsigned __int8)v7 < *(_BYTE *)(v4 + 1); if ( v7 != *(_BYTE *)(v4 + 1) ) break; v5 += 2; v4 += 2; if ( !v7 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v6 - (v6 - 1); LABEL_9: if ( v8 ) { memcpy((void *)(a2 + 12), &v11, 0x100u); } else { v10 = 0; if ( sub_4D97C0(a2, &v10) && (unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))( (char *)v2 + 4, a2) ) { memcpy(&v9, &v10, 0x100u); if ( sub_4D58C0(&v9, "SquarRoot") ) { *((_DWORD *)v2 + 12) = off_85379C; return 1; } if ( sub_4D58C0(&v9, "Distance") ) { *((_DWORD *)v2 + 12) = off_8537A0; return 1; } if ( sub_4D58C0(&v9, "Random") ) { *((_DWORD *)v2 + 12) = off_853798; return 1; } if ( sub_4D58C0(&v9, "mobregen") ) { *((_DWORD *)v2 + 12) = off_8537A4; return 1; } if ( sub_4D58C0(&v9, "doorbuild") ) { *((_DWORD *)v2 + 12) = off_8537A8; return 1; } if ( sub_4D58C0(&v9, "npcstand") ) { *((_DWORD *)v2 + 12) = off_8537AC; return 1; } if ( sub_4D58C0(&v9, "change2mob") ) { *((_DWORD *)v2 + 12) = off_8537B0; return 1; } if ( sub_4D58C0(&v9, "change2door") ) { *((_DWORD *)v2 + 12) = off_8537B4; return 1; } if ( sub_4D58C0(&v9, "change2npc") ) { *((_DWORD *)v2 + 12) = off_8537B8; return 1; } if ( sub_4D58C0(&v9, "Count") ) { *((_DWORD *)v2 + 12) = off_8537BC; return 1; } if ( sub_4D58C0(&v9, "RestSec") ) { *((_DWORD *)v2 + 12) = off_8537C0; return 1; } if ( sub_4D58C0(&v9, "CharClass") ) { *((_DWORD *)v2 + 12) = off_8537C4; return 1; } if ( sub_4D58C0(&v9, "CharName") ) { *((_DWORD *)v2 + 12) = off_8537C8; return 1; } if ( sub_4D58C0(&v9, "DeathNum") ) { *((_DWORD *)v2 + 12) = off_8537CC; return 1; } if ( sub_4D58C0(&v9, "CircularScatter") ) { *((_DWORD *)v2 + 12) = off_8537D0; return 1; } if ( sub_4D58C0(&v9, "RemoveFirst") ) { *((_DWORD *)v2 + 12) = off_8537D4; return 1; } if ( sub_4D58C0(&v9, "GetObjectList") ) { *((_DWORD *)v2 + 12) = off_8537D8; return 1; } if ( sub_4D58C0(&v9, "KQResultList") ) { *((_DWORD *)v2 + 12) = off_8537DC; return 1; } if ( sub_4D58C0(&v9, "KQTopList") ) { *((_DWORD *)v2 + 12) = off_8537E0; return 1; } if ( sub_4D58C0(&v9, "DistanceBetween") ) { *((_DWORD *)v2 + 12) = off_8537E4; return 1; } if ( sub_4D58C0(&v9, "PlayerInArea") ) { *((_DWORD *)v2 + 12) = off_8537E8; return 1; } if ( sub_4D58C0(&v9, "Range") ) { *((_DWORD *)v2 + 12) = off_8537EC; return 1; } if ( sub_4D58C0(&v9, "IsGateUse") ) { *((_DWORD *)v2 + 12) = off_8537F0; return 1; } if ( sub_4D58C0(&v9, "GetWinnerGuild") ) { *((_DWORD *)v2 + 12) = off_8537F4; return 1; } if ( sub_4D58C0(&v9, "GetLoseGuild") ) { *((_DWORD *)v2 + 12) = &off_8537F8; return 1; } sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::SystemFunction::sa_Load : undefined function", (int)&v10); } } result = 0; } return result; } // 853798: using guessed type int (__stdcall *off_853798[25])(int, int, int); // 85379C: using guessed type int (__stdcall *off_85379C[24])(int, int, int); // 8537A0: using guessed type int (__stdcall *off_8537A0[23])(int, int, int); // 8537A4: using guessed type int (__stdcall *off_8537A4[22])(int, int, int); // 8537A8: using guessed type int (__stdcall *off_8537A8[21])(int, int, int); // 8537AC: using guessed type int (__stdcall *off_8537AC[20])(int, int, int); // 8537B0: using guessed type int (__stdcall *off_8537B0[19])(int, int, int); // 8537B4: using guessed type int (__stdcall *off_8537B4[18])(int, int, int); // 8537B8: using guessed type int (__stdcall *off_8537B8[17])(int, int, int); // 8537BC: using guessed type int (__stdcall *off_8537BC[16])(int, int, int); // 8537C0: using guessed type int (__stdcall *off_8537C0[15])(int, int, int); // 8537C4: using guessed type int (__stdcall *off_8537C4[14])(int, int, int); // 8537C8: using guessed type int (__stdcall *off_8537C8[13])(int, int, int); // 8537CC: using guessed type int (__stdcall *off_8537CC[12])(int, int, int); // 8537D0: using guessed type int (__stdcall *off_8537D0[11])(int, int, int); // 8537D4: using guessed type int (__stdcall *off_8537D4[10])(int, int, int); // 8537D8: using guessed type int (__stdcall *off_8537D8[9])(int, int, int); // 8537DC: using guessed type int (__stdcall *off_8537DC[8])(int, int, int); // 8537E0: using guessed type int (__stdcall *off_8537E0[7])(int, int, int); // 8537E4: using guessed type int (__stdcall *off_8537E4[6])(int, int, int); // 8537E8: using guessed type int (__stdcall *off_8537E8[5])(int, int, int); // 8537EC: using guessed type int (__stdcall *off_8537EC[4])(int, int, int); // 8537F0: using guessed type int (__stdcall *off_8537F0[3])(int, int, int); // 8537F4: using guessed type int (__stdcall *off_8537F4[2])(int, int, int); // 8537F8: using guessed type int (__stdcall **off_8537F8)(int, int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004DB260) -------------------------------------------------------- int __thiscall sub_4DB260(void *this, int a2) { void *v2; // ebx@1 int result; // eax@1 int v4; // eax@3 int v5; // eax@6 int v6; // eax@10 void *v7; // ST04_4@11 int v8; // eax@12 int v9; // eax@16 void *v10; // ST04_4@17 int v11; // eax@18 int v12; // eax@22 void *v13; // ST04_4@23 int v14; // eax@24 int v15; // eax@25 int v16; // eax@28 void *v17; // ST04_4@29 int v18; // eax@32 int v19; // eax@33 int v20; // eax@39 void *v21; // ST04_4@40 int v22; // [sp-4h] [bp-114h]@1 char v23; // [sp+Ch] [bp-104h]@1 unsigned int v24; // [sp+10Ch] [bp-4h]@1 int v25; // [sp+110h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v2 = this; v23 = 0; result = (int)sub_4D97C0(a2, &v23); if ( result ) { if ( !strcmp(&v23, (const char *)&unk_6C5F94) ) { v4 = operator new(0xCu); if ( v4 ) { *(_DWORD *)v4 = &off_6C5B18; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 4) = 0; *((_DWORD *)v2 + 1) = v4; result = (**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, a2); } else { *((_DWORD *)v2 + 1) = 0; result = (*(int (__thiscall **)(_DWORD, int))v0)(0, a2); } return result; } memcpy((void *)(a2 + 12), &v23, 0x100u); v5 = operator new(0xCu); if ( v5 ) { *(_DWORD *)v5 = &off_6C5AF0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)(v5 + 8) = 0; } else { v5 = 0; } *((_DWORD *)v2 + 2) = v5; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v5)(v5, a2, v22) ) { v6 = *((_DWORD *)v2 + 2); if ( v6 ) { v7 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v6 = &off_6C59A8; operator delete(v7); } v8 = operator new(0x104u); if ( v8 ) { *(_DWORD *)v8 = &off_6C5AC8; *(_BYTE *)(v8 + 4) = 0; } else { v8 = 0; } *((_DWORD *)v2 + 2) = v8; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v8)(v8, a2) ) { v9 = *((_DWORD *)v2 + 2); if ( v9 ) { v10 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v9 = &off_6C59A8; operator delete(v10); } v11 = operator new(0x104u); if ( v11 ) { *(_DWORD *)v11 = &off_6C5AB4; *(_BYTE *)(v11 + 4) = 0; } else { v11 = 0; } *((_DWORD *)v2 + 2) = v11; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v11, a2) ) { v12 = *((_DWORD *)v2 + 2); if ( v12 ) { v13 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v12 = &off_6C59A8; operator delete(v13); } v14 = operator new(0x34u); v15 = v14 ? sub_4D7180(v14) : 0; *((_DWORD *)v2 + 2) = v15; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v15)(v15, a2) ) { v16 = *((_DWORD *)v2 + 2); if ( v16 ) { v17 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v16 = &off_6C59A8; operator delete(v17); } if ( sub_4D97C0(a2, &v23) && !(unsigned __int16)sub_4D5910(&v23, (const char *)&unk_6C5F9C) ) { v18 = operator new(0x11Cu); if ( v18 ) v19 = sub_4D7240(v18); else v19 = 0; *((_DWORD *)v2 + 2) = v19; if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v19)(v19, a2) && sub_4D97C0(a2, &v23) && !(unsigned __int16)sub_4D5910(&v23, (const char *)&unk_6C5F98) ) goto LABEL_38; v20 = *((_DWORD *)v2 + 2); if ( v20 ) { v21 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v20 = &off_6C59A8; operator delete(v21); } *((_DWORD *)v2 + 2) = 0; } return 0; } } } } LABEL_38: result = 1; } return result; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C5AB4: using guessed type int (__stdcall *off_6C5AB4)(int); // 6C5AC8: using guessed type int (__stdcall *off_6C5AC8)(int); // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 86FEB8: using guessed type int __security_cookie; //----- (004DB540) -------------------------------------------------------- signed int __thiscall sub_4DB540(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@2 char *v4; // eax@2 bool v5; // cf@3 char v6; // dl@5 __int16 v7; // ax@7 int v8; // ecx@12 char *v9; // eax@12 bool v10; // cf@13 char v11; // dl@15 __int16 v12; // ax@17 char v14; // [sp+8h] [bp-104h]@1 unsigned int v15; // [sp+108h] [bp-4h]@1 int v16; // [sp+10Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = this; v14 = 0; if ( !sub_4D97C0(a2, &v14) ) goto LABEL_26; v3 = (int)"["; v4 = &v14; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) { LABEL_26: memcpy((void *)(a2 + 12), &v14, 0x100u); } else { if ( !(unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))( (char *)v2 + 4, a2) ) return 0; if ( !sub_4D97C0(a2, &v14) ) goto LABEL_27; v8 = (int)"]"; v9 = &v14; while ( 1 ) { v10 = (unsigned __int8)*v9 < *(_BYTE *)v8; if ( *v9 != *(_BYTE *)v8 ) break; if ( !*v9 ) goto LABEL_17; v11 = v9[1]; v10 = (unsigned __int8)v11 < *(_BYTE *)(v8 + 1); if ( v11 != *(_BYTE *)(v8 + 1) ) break; v9 += 2; v8 += 2; if ( !v11 ) { LABEL_17: v12 = 0; goto LABEL_19; } } v12 = -v10 - (v10 - 1); LABEL_19: if ( v12 ) { LABEL_27: memcpy((void *)(a2 + 12), &v14, 0x100u); return 0; } } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (004DB660) -------------------------------------------------------- signed int __thiscall sub_4DB660(void *this, int a2) { int v2; // esi@1 void *v3; // ebx@1 int v4; // ecx@2 char *v5; // eax@2 bool v6; // cf@3 char v7; // dl@5 __int16 v8; // ax@7 int v9; // ecx@12 int v10; // eax@13 int v11; // ecx@14 char v13; // [sp+10h] [bp-204h]@1 char v14; // [sp+110h] [bp-104h]@10 unsigned int v15; // [sp+210h] [bp-4h]@1 int v16; // [sp+214h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = a2; v3 = this; v13 = 0; if ( !sub_4D97C0(a2, &v13) ) goto LABEL_24; v4 = (int)"open"; v5 = &v13; while ( 1 ) { v6 = (unsigned __int8)*v5 < *(_BYTE *)v4; if ( *v5 != *(_BYTE *)v4 ) break; if ( !*v5 ) goto LABEL_7; v7 = v5[1]; v6 = (unsigned __int8)v7 < *(_BYTE *)(v4 + 1); if ( v7 != *(_BYTE *)(v4 + 1) ) break; v5 += 2; v4 += 2; if ( !v7 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v6 - (v6 - 1); LABEL_9: if ( v8 ) { LABEL_24: memcpy((void *)(a2 + 12), &v13, 0x100u); return 0; } (*(void (__thiscall **)(char *, int))*((void (__thiscall ***)(_DWORD, _DWORD))v3 + 1))((char *)v3 + 4, a2); v14 = 0; if ( !sub_4D97C0(a2, &v14) ) return 0; while ( strcmp(&v14, "close") ) { memcpy((void *)(v2 + 12), &v14, 0x100u); v9 = *((_DWORD *)v3 + 68); if ( *(_WORD *)(v9 + 12) != -1 && (v10 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v9 + 8))(*(_WORD *)(v9 + 12))) != 0 || (sub_4D8BA0(*((_DWORD *)v3 + 68), (char *)8), v11 = *((_DWORD *)v3 + 68), *(_WORD *)(v11 + 12) != -1) && (v10 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v11 + 8))(*(_WORD *)(v11 + 12))) != 0 ) { v2 = a2; if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v10)(v10, a2) ) { v14 = 0; if ( sub_4D97C0(a2, &v14) ) continue; } } return 0; } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (004DB820) -------------------------------------------------------- signed int __thiscall sub_4DB820(void *this, int a2) { int v2; // esi@1 void *v3; // ebx@1 void **v4; // ecx@2 char *v5; // eax@2 bool v6; // cf@3 char v7; // dl@5 __int16 v8; // ax@7 int v9; // ecx@17 char *v10; // eax@17 bool v11; // cf@18 char v12; // dl@20 __int16 v13; // ax@22 char v15; // [sp+10h] [bp-104h]@1 unsigned int v16; // [sp+110h] [bp-4h]@1 int v17; // [sp+114h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v2 = a2; v3 = this; v15 = 0; if ( !sub_4D97C0(a2, &v15) ) goto LABEL_31; v4 = &off_6C613C; v5 = &v15; while ( 1 ) { v6 = (unsigned __int8)*v5 < *(_BYTE *)v4; if ( *v5 != *(_BYTE *)v4 ) break; if ( !*v5 ) goto LABEL_7; v7 = v5[1]; v6 = (unsigned __int8)v7 < *((_BYTE *)v4 + 1); if ( v7 != *((_BYTE *)v4 + 1) ) break; v5 += 2; v4 = (void **)((char *)v4 + 2); if ( !v7 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v6 - (v6 - 1); LABEL_9: if ( v8 ) { LABEL_31: memcpy((void *)(a2 + 12), &v15, 0x100u); } else { *((_DWORD *)v3 + 4737) = 0; while ( sub_4D97C0(v2, &v15) ) { if ( !strcmp(&v15, ".") ) return 1; memcpy((void *)(v2 + 12), &v15, 0x100u); v2 = a2; if ( !(unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 3 * *((_DWORD *)v3 + 4737) + 1))( (char *)v3 + 12 * *((_DWORD *)v3 + 4737) + 4, a2) ) return 0; if ( !(unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 71 * *((_DWORD *)v3 + 4737) + 193))( (char *)v3 + 284 * *((_DWORD *)v3 + 4737) + 772, a2) ) { sub_639100(&unk_86DDD8, (int)"Var : Not init", 1); return 0; } ++*((_DWORD *)v3 + 4737); if ( *((_DWORD *)v3 + 4737) >= 0x40u ) { if ( sub_4D97C0(a2, &v15) ) { v9 = (int)"."; v10 = &v15; while ( 1 ) { v11 = (unsigned __int8)*v10 < *(_BYTE *)v9; if ( *v10 != *(_BYTE *)v9 ) break; if ( !*v10 ) goto LABEL_22; v12 = v10[1]; v11 = (unsigned __int8)v12 < *(_BYTE *)(v9 + 1); if ( v12 != *(_BYTE *)(v9 + 1) ) break; v10 += 2; v9 += 2; if ( !v12 ) { LABEL_22: v13 = 0; goto LABEL_25; } } v13 = -v11 - (v11 - 1); LABEL_25: if ( !v13 ) return 1; } return 0; } } } return 0; } // 6C613C: using guessed type void *off_6C613C; // 86FEB8: using guessed type int __security_cookie; //----- (004DBA10) -------------------------------------------------------- int __thiscall sub_4DBA10(void *this, int a2) { void *v2; // edi@1 int v3; // edx@2 char *v4; // ecx@2 bool v5; // cf@3 char v6; // al@5 __int16 v7; // ax@7 int result; // eax@10 char v9; // [sp+8h] [bp-104h]@1 unsigned int v10; // [sp+108h] [bp-4h]@1 int v11; // [sp+10Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; v9 = 0; if ( !sub_4D97C0(a2, &v9) ) goto LABEL_14; v3 = (int)"infinite"; v4 = &v9; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) { LABEL_14: memcpy((void *)(a2 + 12), &v9, 0x100u); result = 0; } else { result = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))((char *)v2 + 4, a2); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004DBAC0) -------------------------------------------------------- signed int __thiscall sub_4DBAC0(void *this, int a2) { void *v2; // edi@1 int v3; // edx@2 char *v4; // ecx@2 bool v5; // cf@3 char v6; // al@5 __int16 v7; // ax@7 char v9; // [sp+8h] [bp-104h]@1 unsigned int v10; // [sp+108h] [bp-4h]@1 int v11; // [sp+10Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; v9 = 0; if ( !sub_4D97C0(a2, &v9) ) goto LABEL_17; v3 = (int)"while"; v4 = &v9; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) { LABEL_17: memcpy((void *)(a2 + 12), &v9, 0x100u); } else { if ( (unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))( (char *)v2 + 4, a2) && (unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 210))( (char *)v2 + 840, a2) ) return 1; } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (004DBB90) -------------------------------------------------------- signed int __thiscall sub_4DBB90(void *this, int a2) { int v2; // ecx@2 char *v3; // eax@2 bool v4; // cf@3 char v5; // dl@5 __int16 v6; // ax@7 int v7; // eax@12 int v8; // eax@13 void *v10; // [sp+Ch] [bp-108h]@1 char v11; // [sp+10h] [bp-104h]@1 unsigned int v12; // [sp+110h] [bp-4h]@1 int v13; // [sp+114h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v10 = this; v11 = 0; if ( !sub_4D97C0(a2, &v11) ) goto LABEL_23; v2 = (int)"break"; v3 = &v11; while ( 1 ) { v4 = (unsigned __int8)*v3 < *(_BYTE *)v2; if ( *v3 != *(_BYTE *)v2 ) break; if ( !*v3 ) goto LABEL_7; v5 = v3[1]; v4 = (unsigned __int8)v5 < *(_BYTE *)(v2 + 1); if ( v5 != *(_BYTE *)(v2 + 1) ) break; v3 += 2; v2 += 2; if ( !v5 ) { LABEL_7: v6 = 0; goto LABEL_9; } } v6 = -v4 - (v4 - 1); LABEL_9: if ( v6 ) { LABEL_23: memcpy((void *)(a2 + 12), &v11, 0x100u); } else { if ( sub_4D97C0(a2, &v11) ) { if ( !strcmp(&v11, ".") || ((memcpy((void *)(a2 + 12), &v11, 0x100u), (v7 = operator new(0x11Cu)) == 0) ? (v8 = 0) : (v8 = sub_4D7240(v7)), (*((_DWORD *)v10 + 1) = v8, (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v8)(v8, a2)) && sub_4D97C0(a2, &v11) && !(unsigned __int16)sub_4D5910(&v11, ".")) ) return 1; } } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (004DBD00) -------------------------------------------------------- signed int __thiscall sub_4DBD00(void *this, int a2) { void *v2; // esi@1 int v3; // edx@2 char *v4; // ecx@2 bool v5; // cf@3 char v6; // al@5 __int16 v7; // ax@7 int v8; // eax@13 int v9; // eax@14 void *v11; // [sp+Ch] [bp-10Ch]@1 char v12; // [sp+14h] [bp-104h]@1 unsigned int v13; // [sp+114h] [bp-4h]@1 int v14; // [sp+118h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v2 = this; v11 = this; v12 = 0; if ( !sub_4D97C0(a2, &v12) ) goto LABEL_20; v3 = (int)"call"; v4 = &v12; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) goto LABEL_20; if ( !(unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))( (char *)v2 + 4, a2) ) return 0; if ( !sub_4D97C0(a2, &v12) ) goto LABEL_20; if ( sub_4D58C0(&v12, ".") ) return 1; memcpy((void *)(a2 + 12), &v12, 0x100u); v8 = operator new(0x11Cu); if ( v8 ) v9 = sub_4D7240(v8); else v9 = 0; *((_DWORD *)v11 + 72) = v9; if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v9, a2) ) { if ( sub_4D97C0(a2, &v12) ) { if ( sub_4D58C0(&v12, ".") ) return 1; return 0; } LABEL_20: memcpy((void *)(a2 + 12), &v12, 0x100u); } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (004DBE70) -------------------------------------------------------- signed int __thiscall sub_4DBE70(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@2 char *v4; // eax@2 bool v5; // cf@3 char v6; // dl@5 __int16 v7; // ax@7 int v8; // ecx@12 char *v9; // eax@12 bool v10; // cf@13 char v11; // dl@15 __int16 v12; // ax@17 char v14; // [sp+8h] [bp-104h]@1 unsigned int v15; // [sp+108h] [bp-4h]@1 int v16; // [sp+10Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = this; v14 = 0; if ( !sub_4D97C0(a2, &v14) ) goto LABEL_21; v3 = (int)"permillage"; v4 = &v14; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) { LABEL_21: memcpy((void *)(a2 + 12), &v14, 0x100u); return 0; } if ( (unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))( (char *)v2 + 4, a2) ) { if ( sub_4D97C0(a2, &v14) ) { v8 = (int)"."; v9 = &v14; while ( 1 ) { v10 = (unsigned __int8)*v9 < *(_BYTE *)v8; if ( *v9 != *(_BYTE *)v8 ) break; if ( !*v9 ) goto LABEL_17; v11 = v9[1]; v10 = (unsigned __int8)v11 < *(_BYTE *)(v8 + 1); if ( v11 != *(_BYTE *)(v8 + 1) ) break; v9 += 2; v8 += 2; if ( !v11 ) { LABEL_17: v12 = 0; goto LABEL_19; } } v12 = -v10 - (v10 - 1); LABEL_19: if ( !v12 ) return 1; } goto LABEL_21; } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (004DBF80) -------------------------------------------------------- signed int __thiscall sub_4DBF80(void *this, int a2) { void *v2; // edi@1 int v3; // ecx@2 char *v4; // eax@2 bool v5; // cf@3 char v6; // dl@5 __int16 v7; // ax@7 int v8; // ecx@12 char *v9; // eax@12 bool v10; // cf@13 char v11; // dl@15 __int16 v12; // ax@17 char v14; // [sp+8h] [bp-104h]@1 unsigned int v15; // [sp+108h] [bp-4h]@1 int v16; // [sp+10Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = this; v14 = 0; if ( !sub_4D97C0(a2, &v14) ) goto LABEL_25; v3 = (int)((char *)v2 + 4); v4 = &v14; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) { LABEL_25: memcpy((void *)(a2 + 12), &v14, 0x100u); } else { if ( (unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9))( (char *)v2 + 36, a2) && sub_4D97C0(a2, &v14) ) { v8 = (int)"."; v9 = &v14; while ( 1 ) { v10 = (unsigned __int8)*v9 < *(_BYTE *)v8; if ( *v9 != *(_BYTE *)v8 ) break; if ( !*v9 ) goto LABEL_17; v11 = v9[1]; v10 = (unsigned __int8)v11 < *(_BYTE *)(v8 + 1); if ( v11 != *(_BYTE *)(v8 + 1) ) break; v9 += 2; v8 += 2; if ( !v11 ) { LABEL_17: v12 = 0; goto LABEL_19; } } v12 = -v10 - (v10 - 1); LABEL_19: if ( !v12 ) return 1; } } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (004DC080) -------------------------------------------------------- signed int __thiscall sub_4DC080(int this, int a2) { int v2; // edi@1 int v3; // edx@3 char *v4; // ecx@3 bool v5; // cf@4 char v6; // al@6 __int16 v7; // ax@8 signed int result; // eax@14 char v9; // [sp+8h] [bp-104h]@2 unsigned int v10; // [sp+108h] [bp-4h]@1 int v11; // [sp+10Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 4))(this + 4, a2) || (v9 = 0, !sub_4D97C0(a2, &v9)) ) goto LABEL_18; v3 = (int)"="; v4 = &v9; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_8; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_8: v7 = 0; goto LABEL_10; } } v7 = -v5 - (v5 - 1); LABEL_10: if ( !v7 && (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 16))(v2 + 16, a2) && sub_4D97C0(a2, &v9) && !(unsigned __int16)sub_4D5910(&v9, ".") ) result = 1; else LABEL_18: result = 0; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004DC170) -------------------------------------------------------- signed int __thiscall sub_4DC170(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 int v4; // ecx@2 char *v5; // eax@2 bool v6; // cf@3 char v7; // dl@5 __int16 v8; // ax@7 int v9; // eax@16 int v11; // eax@22 int v12; // eax@25 int v13; // eax@27 char v14; // cl@28 void *v15; // [sp+Ch] [bp-114h]@1 signed int v16; // [sp+14h] [bp-10Ch]@12 int v17; // [sp+18h] [bp-108h]@12 char v18[256]; // [sp+1Ch] [bp-104h]@1 unsigned int v19; // [sp+11Ch] [bp-4h]@1 int v20; // [sp+120h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v2 = a2; v3 = this; v15 = this; v18[0] = 0; if ( sub_4D97C0(a2, v18) ) { v4 = (int)((char *)v3 + 4); v5 = v18; while ( 1 ) { v6 = (unsigned __int8)*v5 < *(_BYTE *)v4; if ( *v5 != *(_BYTE *)v4 ) break; if ( !*v5 ) goto LABEL_7; v7 = v5[1]; v6 = (unsigned __int8)v7 < *(_BYTE *)(v4 + 1); if ( v7 != *(_BYTE *)(v4 + 1) ) break; v5 += 2; v4 += 2; if ( !v7 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v6 - (v6 - 1); LABEL_9: if ( !v8 ) { if ( *((_WORD *)v3 + 92) && !(unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 9))( (char *)v3 + 36, a2) ) return 0; v16 = 0; v17 = (int)((char *)v3 + 48); while ( !sub_4D97C0(v2, v18) || strcmp(v18, ".") ) { memcpy((void *)(v2 + 12), v18, 0x100u); v9 = operator new(0x11Cu); if ( v9 ) { *(_DWORD *)v9 = &off_6C5CD8; *(_DWORD *)(v9 + 4) = &off_6C5B18; *(_DWORD *)(v9 + 12) = 0; *(_DWORD *)(v9 + 8) = 0; *(_DWORD *)(v9 + 16) = &off_6C59BC; *(_BYTE *)(v9 + 20) = 0; *(_DWORD *)(v9 + 276) = 0; *(_DWORD *)(v9 + 280) = 0; } else { v9 = 0; } *(_DWORD *)v17 = v9; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v9, a2) ) return 0; v17 += 4; ++v16; if ( v16 >= 32 ) return 1; v2 = a2; v3 = v15; } v11 = *((_DWORD *)v3 + 45); if ( v11 <= 0 || !*((_DWORD *)v3 + v11 + 12) && ((v12 = *((_DWORD *)v3 + 44)) == 0 || *((_DWORD *)v3 + v12 + 11)) ) return 1; v13 = 0; do { v14 = *(&byte_6C6174 + v13); v18[v13++] = v14; } while ( v14 ); } } memcpy((void *)(v2 + 12), v18, 0x100u); return 0; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 86FEB8: using guessed type int __security_cookie; // 4DC170: using guessed type char var_104[256]; //----- (004DC3C0) -------------------------------------------------------- void *__thiscall sub_4DC3C0(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // edi@1 int v4; // ecx@4 int v5; // eax@5 v1 = this; v2 = *(_DWORD *)(*(_DWORD *)this + 4); v3 = 0; if ( !(*((_BYTE *)this + v2 + 12) & 6) && (*(int (__thiscall **)(_DWORD))(**(_DWORD **)((char *)this + v2 + 56) + 52))(*(_DWORD *)((char *)this + v2 + 56)) == -1 ) v3 = 4; v4 = (int)((char *)v1 + *(_DWORD *)(*(_DWORD *)v1 + 4)); if ( v3 ) { v5 = v3 | *(_DWORD *)(v4 + 12); if ( !*(_DWORD *)(v4 + 56) ) LOBYTE(v5) = v5 | 4; sub_4D6510(v4, v5, 0); } return v1; } //----- (004DC410) -------------------------------------------------------- void *__thiscall sub_4DC410(void *this, char a2) { void *v2; // edi@1 void *v3; // esi@1 v2 = (char *)this - 96; v3 = this; sub_4D98A0(this); *(_DWORD *)v3 = &off_6C59A0; std::ios_base::_Ios_base_dtor(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); //----- (004DC450) -------------------------------------------------------- void *__thiscall sub_4DC450(void *this) { void *result; // eax@1 bool v2; // zf@1 int v3; // [sp+0h] [bp-20h]@1 int *v4; // [sp+10h] [bp-10h]@1 int v5; // [sp+1Ch] [bp-4h]@1 v4 = &v3; result = *(void **)this; v2 = (*((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this + 4) + 20) & 2) == 0; v5 = 0; if ( !v2 ) result = sub_4DC3C0(this); return result; } //----- (004DC4A3) -------------------------------------------------------- int (*__cdecl sub_4DC4A3())() { return loc_4DC491; } // 4DC491: using guessed type int loc_4DC491(); //----- (004DC4B0) -------------------------------------------------------- int __thiscall sub_4DC4B0(void *this, int a2) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 16))(a2); return a2; } //----- (004DC4D0) -------------------------------------------------------- int __thiscall sub_4DC4D0(void *this, int a2) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 20))(a2); return a2; } //----- (004DC4F0) -------------------------------------------------------- int __thiscall sub_4DC4F0(void *this, int a2) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 12))(a2); return a2; } //----- (004DC510) -------------------------------------------------------- int __thiscall sub_4DC510(int this, int a2) { int v2; // eax@1 int v3; // eax@1 int v4; // edi@1 int v5; // ebx@1 unsigned int v6; // eax@2 int v7; // esi@5 int v8; // esi@5 char v10; // [sp+10h] [bp-14h]@5 int v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v2 = sub_4D5680(this, (int)&v11); v12 = 0; v3 = sub_4D9C60(v2); v4 = v11; v5 = v3; v12 = -1; if ( v11 ) { std::_Lockit::_Lockit(0); v6 = *(_DWORD *)(v4 + 4); if ( v6 && v6 < 0xFFFFFFFF ) *(_DWORD *)(v4 + 4) = v6 - 1; v7 = -(*(_DWORD *)(v4 + 4) == 0); std::_Lockit::__Lockit(&v10); v8 = v4 & v7; if ( v8 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v8)(v8, 1); } return (*(int (__cdecl **)(int))(*(_DWORD *)v5 + 24))(a2); } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004DC5C0) -------------------------------------------------------- int __cdecl sub_4DC5C0(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_1321B740; v14 = 0; v13 = dword_1321B740; if ( !dword_1321B958 ) { std::_Lockit::_Lockit(0); if ( !dword_1321B958 ) { ++dword_154DC980; dword_1321B958 = dword_154DC980; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_1321B958; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_1321B958 >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_1321B958); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_651AEE(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_4D9DA0((int)&v13, v2) == -1 ) { sub_653952(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_73A6FC); } v7 = v13; dword_1321B740 = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651A77: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 1321B740: using guessed type int dword_1321B740; // 1321B958: using guessed type int dword_1321B958; // 154DC980: using guessed type int dword_154DC980; //----- (004DC700) -------------------------------------------------------- signed int __cdecl sub_4DC700(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 int v5; // eax@7 char v7; // [sp+Ch] [bp-38h]@7 int v8; // [sp+30h] [bp-14h]@3 int v9; // [sp+34h] [bp-10h]@1 int v10; // [sp+40h] [bp-4h]@3 v2 = 0; v9 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x18u); v8 = v3; v10 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); v5 = (int)sub_4D9080(&v7, v4); v2 = 1; v9 = 1; *(_DWORD *)(v3 + 4) = 0; v10 = 2; *(_DWORD *)v3 = &off_6C5ED4; sub_4D8F20((void *)v3, v5, 1); } else { v3 = 0; } *(_DWORD *)a1 = v3; v10 = -1; if ( v2 & 1 ) sub_4D9130(&v7); } return 4; } // 6C5ED4: using guessed type int (__thiscall *off_6C5ED4)(void *, char); //----- (004DC7D0) -------------------------------------------------------- char __thiscall sub_4DC7D0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6C5E14; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C5E14: using guessed type int (__stdcall *off_6C5E14)(int, int); //----- (004DC950) -------------------------------------------------------- char __thiscall sub_4DC950(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6C5E1C; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C5E1C: using guessed type int (__stdcall *off_6C5E1C)(int, int); //----- (004DCAD0) -------------------------------------------------------- int __thiscall sub_4DCAD0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6C617C; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 32) = 15; *(_DWORD *)(this + 28) = 0; *(_BYTE *)(this + 12) = 0; *(_BYTE *)(this + 40) = 0; return result; } // 6C617C: using guessed type int (__thiscall *off_6C617C)(void *, char); //----- (004DCB00) -------------------------------------------------------- int __thiscall sub_4DCB00(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; *(_DWORD *)this = &off_6C617C; if ( *(_DWORD *)(this + 32) >= 0x10u ) operator delete(*(void **)(this + 12)); result = 0; *(_DWORD *)(v1 + 32) = 15; *(_DWORD *)(v1 + 28) = 0; *(_BYTE *)(v1 + 12) = 0; return result; } // 6C617C: using guessed type int (__thiscall *off_6C617C)(void *, char); //----- (004DCB30) -------------------------------------------------------- int __thiscall sub_4DCB30(int this, size_t a2, char a3) { int v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // edi@4 unsigned int v6; // ecx@6 bool v7; // cf@8 int result; // eax@9 v3 = this; v4 = *(_DWORD *)(this + 16); if ( -1 - v4 <= a2 ) sub_65178B((int)"string too long"); if ( !a2 ) return v3; v5 = v4 + a2; if ( v4 + a2 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v6 = *(_DWORD *)(this + 20); if ( v6 < v5 ) { sub_423480(v4, v3, v4 + a2, v4); if ( v5 ) { LABEL_8: sub_4D8EE0(v3, *(_DWORD *)(v3 + 16), a2, a3); v7 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = v5; if ( !v7 ) { *(_BYTE *)(*(_DWORD *)v3 + v5) = 0; return v3; } *(_BYTE *)(v3 + v5) = 0; } return v3; } if ( v5 ) goto LABEL_8; *(_DWORD *)(v3 + 16) = 0; if ( v6 < 0x10 ) { result = v3; *(_BYTE *)v3 = 0; } else { **(_BYTE **)v3 = 0; result = v3; } return result; } //----- (004DCBE0) -------------------------------------------------------- int __thiscall sub_4DCBE0(void *this) { void *v1; // esi@1 int result; // eax@3 int v3; // [sp+14h] [bp-4h]@1 v1 = this; v3 = 0; if ( !__uncaught_exception() ) sub_4DC450(*(void **)v1); result = *(_DWORD *)(*(_DWORD *)(**(_DWORD **)v1 + 4) + *(_DWORD *)v1 + 56); v3 = -1; if ( result ) result = (*(int (**)(void))(*(_DWORD *)result + 8))(); return result; } //----- (004DCC50) -------------------------------------------------------- int __thiscall sub_4DCC50(int this, int a2, size_t a3, char a4) { int v4; // esi@1 unsigned int v5; // eax@1 unsigned int v6; // edi@6 unsigned int v7; // ecx@8 unsigned int v8; // eax@10 int v9; // ecx@11 int result; // eax@14 int v11; // eax@18 bool v12; // cf@20 v4 = this; v5 = *(_DWORD *)(this + 16); if ( v5 < a2 ) sub_6517D8((int)"invalid string position"); if ( -1 - v5 <= a3 ) sub_65178B((int)"string too long"); if ( !a3 ) return v4; v6 = v5 + a3; if ( v5 + a3 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v7 = *(_DWORD *)(this + 20); if ( v7 < v6 ) { sub_423480(v5, v4, v6, v5); if ( v6 ) { LABEL_10: v8 = *(_DWORD *)(v4 + 20); if ( v8 < 0x10 ) v9 = v4; else v9 = *(_DWORD *)v4; if ( v8 < 0x10 ) v11 = v4; else v11 = *(_DWORD *)v4; memmove_0((void *)(a3 + a2 + v11), (const void *)(a2 + v9), *(_DWORD *)(v4 + 16) - a2); sub_4D8EE0(v4, a2, a3, a4); v12 = *(_DWORD *)(v4 + 20) < 0x10u; *(_DWORD *)(v4 + 16) = v6; if ( !v12 ) { *(_BYTE *)(*(_DWORD *)v4 + v6) = 0; return v4; } *(_BYTE *)(v4 + v6) = 0; } return v4; } if ( v6 ) goto LABEL_10; *(_DWORD *)(v4 + 16) = 0; if ( v7 < 0x10 ) { result = v4; *(_BYTE *)v4 = 0; } else { **(_BYTE **)v4 = 0; result = v4; } return result; } //----- (004DCD50) -------------------------------------------------------- int __thiscall sub_4DCD50(int this, int a2) { int v2; // esi@1 int result; // eax@2 signed int v4; // eax@4 int v5; // edx@5 int v6; // ecx@7 v2 = this; *(_DWORD *)this = &off_6C6184; *(_DWORD *)(this + 16) = a2; if ( *(_DWORD *)a2 ) { sub_4DC7D0(this, *(_WORD *)(a2 + 4)); if ( *(_DWORD *)(v2 + 8) ) { v4 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { v5 = 0; do { if ( v4 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v6 + v5) ) *(_DWORD *)(v6 + v5) = *(_DWORD *)a2 + 8 * v4; } ++v4; v5 += 12; } while ( v4 < *(_WORD *)(v2 + 4) ); } } result = v2; } else { *(_DWORD *)(this + 8) = 0; result = this; } return result; } // 6C6184: using guessed type int (__thiscall *off_6C6184)(void *, char); //----- (004DCDD0) -------------------------------------------------------- char __thiscall sub_4DCDD0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); result = 1; } else { result = 0; } return result; } //----- (004DCE10) -------------------------------------------------------- char __thiscall sub_4DCE10(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; *(_DWORD *)(a2 + 4) = *(_DWORD *)(*(_DWORD *)(v2 + 12 * v3) + 4); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004DCE60) -------------------------------------------------------- char __thiscall sub_4DCE60(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; *(_DWORD *)(a2 + 4) = *(_DWORD *)(*(_DWORD *)(v2 + 12 * v3) + 4); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (004DCEB0) -------------------------------------------------------- void *__thiscall sub_4DCEB0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C6184; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C6184: using guessed type int (__thiscall *off_6C6184)(void *, char); //----- (004DCEF0) -------------------------------------------------------- char __thiscall sub_4DCEF0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); result = 1; } else { result = 0; } return result; } //----- (004DCF30) -------------------------------------------------------- int __thiscall sub_4DCF30(int this, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 int result; // eax@2 signed int v6; // eax@4 int v7; // edx@5 int v8; // ecx@7 v2 = a2; v3 = this; v4 = 0; *(_DWORD *)this = &off_6C61A8; *(_DWORD *)(this + 16) = a2; if ( *(_DWORD *)a2 ) { sub_4DC950(this, *(_WORD *)(a2 + 4)); if ( *(_DWORD *)(v3 + 8) ) { v6 = 0; if ( *(_WORD *)(v3 + 4) > 0u ) { v7 = 0; do { if ( v6 < *(_WORD *)(v3 + 4) ) { v8 = *(_DWORD *)(v3 + 8); if ( !*(_DWORD *)(v8 + v7) ) { *(_DWORD *)(v8 + v7) = v4 + *(_DWORD *)v2; v2 = a2; } } ++v6; v4 += 280; v7 += 12; } while ( v6 < *(_WORD *)(v3 + 4) ); } } result = v3; } else { *(_DWORD *)(this + 8) = 0; result = this; } return result; } // 6C61A8: using guessed type int (__thiscall *off_6C61A8)(void *, char); //----- (004DCFB0) -------------------------------------------------------- void *__thiscall sub_4DCFB0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6C61A8; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C61A8: using guessed type int (__thiscall *off_6C61A8)(void *, char); //----- (004DCFF0) -------------------------------------------------------- char __thiscall sub_4DCFF0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy((void *)(v2 + 12), (const void *)(a2 + 12), 0x10Cu); result = 1; } else { result = 0; } return result; } //----- (004DD060) -------------------------------------------------------- char __thiscall sub_4DD060(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy((void *)(v2 + 12), (const void *)(a2 + 12), 0x10Cu); result = 1; } else { result = 0; } return result; } //----- (004DD0D0) -------------------------------------------------------- char __thiscall sub_4DD0D0(int this, int a2) { int v2; // edx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 int v6; // eax@2 bool v7; // zf@2 int v8; // eax@2 int v10; // [sp+0h] [bp-4h]@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); v10 = v5; if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { v6 = 3 * (unsigned __int16)v5; v7 = *(_BYTE *)(v4 + 4 * v6 + 8) == 0; v8 = v4 + 4 * v6; if ( v7 ) return 0; memcpy((void *)(a2 + 12), (const void *)(*(_DWORD *)v8 + 12), 0x10Cu); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v10); } return 1; } //----- (004DD160) -------------------------------------------------------- char __thiscall sub_4DD160(int this, int a2) { int v2; // edx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 int v6; // eax@2 bool v7; // zf@2 int v8; // eax@2 int v10; // [sp+0h] [bp-4h]@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); v10 = v5; if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { v6 = 3 * (unsigned __int16)v5; v7 = *(_BYTE *)(v4 + 4 * v6 + 8) == 0; v8 = v4 + 4 * v6; if ( v7 ) return 0; memcpy((void *)(a2 + 12), (const void *)(*(_DWORD *)v8 + 12), 0x10Cu); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v10); } return 1; } //----- (004DD1F0) -------------------------------------------------------- void *__cdecl sub_4DD1F0(void *a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // edx@1 void *v5; // ecx@1 int v6; // eax@7 int v7; // eax@9 void *v8; // eax@10 int v9; // eax@12 int v10; // ebx@13 int v11; // eax@14 char *v12; // ecx@16 int v13; // eax@16 int v14; // ecx@16 int v15; // edx@17 int v16; // ecx@18 int v17; // edx@18 int v18; // ecx@26 int v19; // eax@26 int v20; // ecx@26 int v21; // edx@27 int v22; // ecx@28 int v23; // edx@28 int v24; // eax@30 int v25; // eax@32 int v26; // edx@32 int v27; // eax@35 int v28; // ecx@36 int v29; // eax@37 bool v30; // al@40 void *v31; // edi@40 int v32; // ecx@42 int v34; // [sp+0h] [bp-34h]@1 void *v35; // [sp+10h] [bp-24h]@4 int v36; // [sp+14h] [bp-20h]@4 int v37; // [sp+18h] [bp-1Ch]@1 int v38; // [sp+1Ch] [bp-18h]@1 char *v39; // [sp+20h] [bp-14h]@5 int *v40; // [sp+24h] [bp-10h]@1 int v41; // [sp+30h] [bp-4h]@9 v40 = &v34; v2 = *(_DWORD *)(a2 + 16); v3 = *(_DWORD *)(*(_DWORD *)a1 + 4); v4 = *(_DWORD *)((char *)a1 + v3 + 36); v5 = *(void **)((char *)a1 + v3 + 32); v38 = 0; v37 = v2; if ( v4 >= 0 && (v4 > 0 || v5) && (v35 = v5, v36 = v4, (unsigned int)v5 > v2) ) { v36 = v4; v39 = (char *)v5 - v2; } else { v39 = 0; } v6 = *(_DWORD *)((char *)a1 + v3 + 56); v35 = a1; if ( v6 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 4))(v6); v7 = *(_DWORD *)(*(_DWORD *)a1 + 4); v41 = 0; if ( !*(_DWORD *)((char *)a1 + v7 + 12) ) { v8 = *(void **)((char *)a1 + v7 + 60); if ( v8 ) sub_4DC3C0(v8); } v9 = *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v36) = *(_DWORD *)((char *)a1 + v9 + 12) == 0; v41 = 1; if ( (_BYTE)v36 ) { v11 = *(_DWORD *)((char *)a1 + v9 + 20) & 0x1C0; LOBYTE(v41) = 2; if ( v11 == 64 ) { v10 = v38; } else { while ( (unsigned int)v39 > 0 ) { v12 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v13) = v12[64]; v14 = *((_DWORD *)v12 + 14); if ( **(_DWORD **)(v14 + 36) && (v15 = *(_DWORD *)(v14 + 52), *(_DWORD *)v15 > 0) ) { --*(_DWORD *)v15; v16 = *(_DWORD *)(v14 + 36); v17 = (*(_DWORD *)v16)++; *(_BYTE *)v17 = v13; v13 = (unsigned __int8)v13; } else { v13 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v14 + 12))((unsigned __int8)v13); } if ( v13 == -1 ) { v10 = v38 | 4; v38 |= 4u; goto LABEL_24; } --v39; } v10 = v38; LABEL_24: if ( v10 ) goto LABEL_25; } v24 = a2; if ( *(_DWORD *)(a2 + 20) >= 0x10u ) v24 = *(_DWORD *)a2; v25 = (*(int (__stdcall **)(int, int, _DWORD))(**(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4) + 56) + 36))( v24, v37, 0); if ( v25 != v37 || v26 ) { v10 = 4; } else { LABEL_25: while ( v39 ) { v18 = *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v19) = *((_BYTE *)a1 + v18 + 64); v20 = *(_DWORD *)((char *)a1 + v18 + 56); if ( **(_DWORD **)(v20 + 36) && (v21 = *(_DWORD *)(v20 + 52), *(_DWORD *)v21 > 0) ) { --*(_DWORD *)v21; v22 = *(_DWORD *)(v20 + 36); v23 = (*(_DWORD *)v22)++; *(_BYTE *)v23 = v19; v19 = (unsigned __int8)v19; } else { v19 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v20 + 12))((unsigned __int8)v19); } if ( v19 == -1 ) { v10 |= 4u; break; } --v39; } } v27 = *(_DWORD *)(*(_DWORD *)a1 + 4); *(_DWORD *)((char *)a1 + v27 + 32) = 0; *(_DWORD *)((char *)a1 + v27 + 36) = 0; v41 = 1; } else { v10 = 4; } v28 = (int)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4)); if ( v10 ) { v29 = v10 | *(_DWORD *)(v28 + 12); if ( !*(_DWORD *)(v28 + 56) ) LOBYTE(v29) = v29 | 4; sub_4D6510(v28, v29, 0); } v41 = 4; v30 = __uncaught_exception(); v31 = v35; if ( !v30 ) sub_4DC450(v35); v32 = *(_DWORD *)((char *)v31 + *(_DWORD *)(*(_DWORD *)v31 + 4) + 56); v41 = -1; if ( v32 ) (*(void (**)(void))(*(_DWORD *)v32 + 8))(); return a1; } //----- (004DD442) -------------------------------------------------------- int (*__usercall sub_4DD442(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 + 8) + *(_DWORD *)(**(_DWORD **)(a1 + 8) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_4DD473; } // 4DD473: using guessed type int loc_4DD473(); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004DD490) -------------------------------------------------------- void *__cdecl sub_4DD490(void *a1, const char *a2) { int v2; // edx@1 unsigned int v3; // ecx@1 unsigned int v4; // eax@1 int v5; // ebx@7 unsigned __int64 v6; // kr08_8@7 int v7; // edx@9 int v8; // eax@11 bool v9; // zf@11 void *v10; // eax@12 int v11; // eax@14 signed int v12; // edx@15 int v13; // eax@16 int v14; // ecx@20 int v15; // eax@20 int v16; // ecx@20 int v17; // edx@21 int v18; // ecx@22 int v19; // edx@22 int v20; // eax@27 int v21; // edx@27 int v22; // eax@30 int v23; // ecx@31 int v24; // eax@32 bool v25; // al@35 void *v26; // edi@35 int v27; // ecx@37 unsigned __int8 v29; // cf@40 int v30; // ecx@44 int v31; // eax@44 int v32; // ecx@44 int v33; // edx@45 int v34; // ecx@46 int v35; // edx@46 int v36; // [sp+0h] [bp-38h]@1 void *v37; // [sp+10h] [bp-28h]@9 bool v38; // [sp+14h] [bp-24h]@14 int v39; // [sp+1Ch] [bp-1Ch]@7 unsigned int v40; // [sp+20h] [bp-18h]@1 int v41; // [sp+24h] [bp-14h]@1 int *v42; // [sp+28h] [bp-10h]@1 int v43; // [sp+34h] [bp-4h]@11 v42 = &v36; v41 = 0; v40 = strlen(a2); v2 = *(_DWORD *)(*(_DWORD *)a1 + 4); v3 = *(_DWORD *)((char *)a1 + v2 + 36); v4 = *(_DWORD *)((char *)a1 + v2 + 32); if ( (v3 & 0x80000000u) == 0 && ((signed int)v3 > 0 || v4) && (v3 & 0x80000000u) == 0 && ((signed int)v3 > 0 || v4 > v40) ) { v6 = __PAIR__(v3, v4) - v40; v39 = v6 >> 32; v5 = v6; } else { v5 = 0; v39 = 0; } v7 = *(_DWORD *)((char *)a1 + v2 + 56); v37 = a1; if ( v7 ) (*(void (__thiscall **)(int))(*(_DWORD *)v7 + 4))(v7); v8 = *(_DWORD *)(*(_DWORD *)a1 + 4); v9 = *(_DWORD *)((char *)a1 + v8 + 12) == 0; v43 = 0; if ( v9 ) { v10 = *(void **)((char *)a1 + v8 + 60); if ( v10 ) sub_4DC3C0(v10); } v11 = *(_DWORD *)(*(_DWORD *)a1 + 4); v38 = *(_DWORD *)((char *)a1 + v11 + 12) == 0; v43 = 1; if ( v38 ) { v13 = *(_DWORD *)((char *)a1 + v11 + 20) & 0x1C0; LOBYTE(v43) = 2; if ( v13 == 64 ) goto LABEL_53; while ( v39 >= 0 && (v39 > 0 || v5) ) { v14 = *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v15) = *((_BYTE *)a1 + v14 + 64); v16 = *(_DWORD *)((char *)a1 + v14 + 56); if ( **(_DWORD **)(v16 + 36) && (v17 = *(_DWORD *)(v16 + 52), *(_DWORD *)v17 > 0) ) { --*(_DWORD *)v17; v18 = *(_DWORD *)(v16 + 36); v19 = (*(_DWORD *)v18)++; *(_BYTE *)v19 = v15; v15 = (unsigned __int8)v15; } else { v15 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v16 + 12))((unsigned __int8)v15); } if ( v15 == -1 ) { v41 |= 4u; break; } v29 = __CFADD__(v5--, -1); v39 = v29 + v39 - 1; } if ( !v41 ) { LABEL_53: v20 = (*(int (__stdcall **)(const char *, unsigned int, _DWORD))(**(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4) + 56) + 36))( a2, v40, 0); if ( v20 != v40 || v21 ) { v41 = 4; } else { while ( v39 >= 0 && (v39 > 0 || v5) ) { v30 = *(_DWORD *)(*(_DWORD *)a1 + 4); LOBYTE(v31) = *((_BYTE *)a1 + v30 + 64); v32 = *(_DWORD *)((char *)a1 + v30 + 56); if ( **(_DWORD **)(v32 + 36) && (v33 = *(_DWORD *)(v32 + 52), *(_DWORD *)v33 > 0) ) { --*(_DWORD *)v33; v34 = *(_DWORD *)(v32 + 36); v35 = (*(_DWORD *)v34)++; *(_BYTE *)v35 = v31; v31 = (unsigned __int8)v31; } else { v31 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v32 + 12))((unsigned __int8)v31); } if ( v31 == -1 ) { v41 |= 4u; break; } v29 = __CFADD__(v5--, -1); v39 = v29 + v39 - 1; } } } v22 = *(_DWORD *)(*(_DWORD *)a1 + 4); *(_DWORD *)((char *)a1 + v22 + 32) = 0; *(_DWORD *)((char *)a1 + v22 + 36) = 0; v43 = 1; v12 = v41; } else { v12 = 4; } v23 = (int)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 + 4)); if ( v12 ) { v24 = v12 | *(_DWORD *)(v23 + 12); if ( !*(_DWORD *)(v23 + 56) ) LOBYTE(v24) = v24 | 4; sub_4D6510(v23, v24, 0); } v43 = 4; v25 = __uncaught_exception(); v26 = v37; if ( !v25 ) sub_4DC450(v37); v27 = *(_DWORD *)((char *)v26 + *(_DWORD *)(*(_DWORD *)v26 + 4) + 56); v43 = -1; if ( v27 ) (*(void (**)(void))(*(_DWORD *)v27 + 8))(); return a1; } //----- (004DD706) -------------------------------------------------------- int (*__usercall sub_4DD706(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 + 8) + *(_DWORD *)(**(_DWORD **)(a1 + 8) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_4DD737; } // 4DD737: using guessed type int loc_4DD737(); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004DD750) -------------------------------------------------------- int __cdecl sub_4DD750(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_1321B744; v14 = 0; v13 = dword_1321B744; if ( !dword_1321B95C ) { std::_Lockit::_Lockit(0); if ( !dword_1321B95C ) { ++dword_154DC980; dword_1321B95C = dword_154DC980; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_1321B95C; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_1321B95C >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_1321B95C); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_651AEE(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_4DC700((int)&v13, v2) == -1 ) { sub_653952(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_73A6FC); } v7 = v13; dword_1321B744 = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651A77: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 1321B744: using guessed type int dword_1321B744; // 1321B95C: using guessed type int dword_1321B95C; // 154DC980: using guessed type int dword_154DC980; //----- (004DD890) -------------------------------------------------------- int __thiscall sub_4DD890(int this) { int v1; // esi@1 int v2; // ebx@1 int v3; // eax@1 int v4; // edi@1 int v5; // eax@2 int v6; // eax@6 int v7; // eax@7 v1 = this; *(_DWORD *)this = &off_6C5EF0; v2 = 0; *(_DWORD *)(this + 4) = &off_6C5B40; *(_DWORD *)(this + 8) = &off_6C5ADC; *(_BYTE *)(this + 12) = 0; v3 = operator new(8u); v4 = v3; if ( v3 ) { *(_DWORD *)(v3 + 4) = 16; v5 = unknown_libname_130(132); if ( v5 ) { v2 = v5 + 4; *(_DWORD *)v5 = 16; _eh_vector_constructor_iterator_( (void *)(v5 + 4), 8u, 16, (int)DNameNode::DNameNode, (void (__thiscall *)(void *))sub_4D5A10); } *(_DWORD *)v4 = v2; } else { v4 = 0; } *(_DWORD *)(v1 + 276) = v4; v6 = operator new(0x18u); if ( v6 ) v7 = sub_4DCD50(v6, *(_DWORD *)(v1 + 276)); else v7 = 0; *(_DWORD *)(v1 + 272) = v7; return v1; } // 4D5A00: using guessed type int DNameNode__DNameNode(); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C5ADC: using guessed type int (__stdcall *off_6C5ADC)(int); // 6C5B40: using guessed type int (__stdcall *off_6C5B40)(int); // 6C5EF0: using guessed type int (__stdcall *off_6C5EF0)(int); //----- (004DD9A0) -------------------------------------------------------- int __cdecl sub_4DD9A0() { int v0; // eax@1 int result; // eax@2 v0 = operator new(0x118u); if ( v0 ) result = sub_4DD890(v0); else result = 0; return result; } //----- (004DDA10) -------------------------------------------------------- int __cdecl sub_4DDA10() { int v0; // eax@1 int v1; // esi@1 int v2; // ST0C_4@1 int result; // eax@1 v0 = operator new(0x11Cu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { *(_DWORD *)v1 = &off_6C5F20; sub_4DD890(v1 + 4); result = v1; } return result; } // 6C5F20: using guessed type int (__stdcall *off_6C5F20)(int); //----- (004DDA80) -------------------------------------------------------- int __cdecl sub_4DDA80() { int v0; // eax@1 int v1; // esi@1 int v2; // ST0C_4@1 int result; // eax@1 v0 = operator new(0x460u); v1 = v0; v2 = v0; result = 0; if ( v2 ) { *(_DWORD *)v1 = &off_6C5F38; sub_4D7330(v1 + 4); sub_4DD890(v1 + 840); result = v1; } return result; } // 6C5F38: using guessed type int (__stdcall *off_6C5F38)(int); //----- (004DDAF0) -------------------------------------------------------- signed int __thiscall sub_4DDAF0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@2 char *v4; // eax@2 bool v5; // cf@3 char v6; // dl@5 __int16 v7; // ax@7 int v8; // ecx@12 char *v9; // eax@12 bool v10; // cf@13 char v11; // dl@15 __int16 v12; // ax@17 int v13; // eax@21 int v14; // eax@22 int v15; // ecx@24 int (__thiscall *v16)(_DWORD, _DWORD); // eax@24 void *v18; // eax@28 void *v19; // eax@29 int v20; // eax@32 void *v21; // ST00_4@33 int v22; // eax@34 int v23; // eax@35 int v24; // ecx@37 int (__thiscall *v25)(_DWORD, _DWORD); // eax@37 void *v26; // [sp+Ch] [bp-114h]@1 char v27; // [sp+10h] [bp-110h]@1 unsigned int v28; // [sp+110h] [bp-10h]@1 int v29; // [sp+11Ch] [bp-4h]@21 int v30; // [sp+120h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v2 = this; v26 = this; v27 = 0; if ( !sub_4D97C0(a2, &v27) ) goto LABEL_43; v3 = (int)"if"; v4 = &v27; while ( 1 ) { v5 = (unsigned __int8)*v4 < *(_BYTE *)v3; if ( *v4 != *(_BYTE *)v3 ) break; if ( !*v4 ) goto LABEL_7; v6 = v4[1]; v5 = (unsigned __int8)v6 < *(_BYTE *)(v3 + 1); if ( v6 != *(_BYTE *)(v3 + 1) ) break; v4 += 2; v3 += 2; if ( !v6 ) { LABEL_7: v7 = 0; goto LABEL_9; } } v7 = -v5 - (v5 - 1); LABEL_9: if ( v7 ) { LABEL_43: memcpy((void *)(a2 + 12), &v27, 0x100u); } else { if ( (unsigned __int16)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 1))( (char *)v2 + 4, a2) && sub_4D97C0(a2, &v27) ) { v8 = (int)"then"; v9 = &v27; while ( 1 ) { v10 = (unsigned __int8)*v9 < *(_BYTE *)v8; if ( *v9 != *(_BYTE *)v8 ) break; if ( !*v9 ) goto LABEL_17; v11 = v9[1]; v10 = (unsigned __int8)v11 < *(_BYTE *)(v8 + 1); if ( v11 != *(_BYTE *)(v8 + 1) ) break; v9 += 2; v8 += 2; if ( !v11 ) { LABEL_17: v12 = 0; goto LABEL_19; } } v12 = -v10 - (v10 - 1); LABEL_19: if ( v12 ) { memcpy((void *)(a2 + 12), &v27, 0x100u); v2 = v26; } else { v13 = operator new(0x118u); v29 = 0; if ( v13 ) v14 = sub_4DD890(v13); else v14 = 0; *((_DWORD *)v2 + 210) = v14; v15 = v14; v16 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)v14; v29 = -1; if ( !(unsigned __int16)v16(v15, a2) ) return 0; } if ( sub_4D97C0(a2, &v27) ) { if ( (unsigned __int16)sub_4D5910(&v27, "else") ) { memcpy((void *)(a2 + 12), &v27, 0x100u); return 1; } v18 = (void *)operator new(0x350u); v19 = v18 ? sub_4D7430(v18) : 0; *((_DWORD *)v2 + 211) = v19; if ( (unsigned __int16)(**(int (__thiscall ***)(void *, int))v19)(v19, a2) ) return 1; v20 = *((_DWORD *)v2 + 211); if ( v20 ) { v21 = (void *)*((_DWORD *)v2 + 211); *(_DWORD *)v20 = &off_6C59A8; operator delete(v21); } v22 = operator new(0x118u); v29 = 1; v23 = v22 ? sub_4DD890(v22) : 0; *((_DWORD *)v2 + 211) = v23; v24 = v23; v25 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)v23; v29 = -1; if ( (unsigned __int16)v25(v24, a2) ) return 1; } } } return 0; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 86FEB8: using guessed type int __security_cookie; //----- (004DDD50) -------------------------------------------------------- int __thiscall sub_4DDD50(int this) { int v1; // esi@1 int v2; // eax@1 unsigned int v3; // ecx@4 int v4; // eax@7 int v5; // eax@8 unsigned int v6; // ecx@10 int v7; // edi@13 unsigned int v8; // eax@16 int v9; // eax@19 int v10; // edi@19 unsigned int v11; // eax@22 int v12; // eax@25 int v13; // edi@25 unsigned int v14; // eax@28 int v15; // eax@31 int v16; // edi@31 unsigned int v17; // eax@34 int v18; // eax@37 unsigned int v19; // ecx@40 void *v20; // eax@43 void *v21; // edi@43 unsigned int v22; // eax@46 int v23; // eax@49 unsigned int v24; // ecx@52 int v25; // eax@55 unsigned int v26; // ecx@58 int v27; // eax@61 int v28; // eax@62 unsigned int v29; // ecx@64 int v30; // eax@67 int v31; // eax@68 unsigned int v32; // ecx@70 int v33; // eax@73 int v34; // eax@74 unsigned int v35; // ecx@76 int v36; // eax@79 int v37; // eax@80 unsigned int v38; // ecx@82 int v39; // eax@85 int v40; // eax@86 unsigned int v41; // ecx@88 int v42; // eax@91 int v43; // eax@92 unsigned int v44; // ecx@94 int v45; // eax@97 int v46; // eax@98 unsigned int v47; // ecx@100 int v48; // eax@103 int v49; // eax@104 unsigned int v50; // ecx@106 int v51; // eax@109 int v52; // eax@110 unsigned int v53; // ecx@112 int v54; // eax@115 int v55; // eax@116 unsigned int v56; // ecx@118 int v57; // eax@121 int v58; // eax@122 unsigned int v59; // ecx@124 int v60; // eax@127 int v61; // eax@128 unsigned int v62; // ecx@130 int v63; // eax@133 int v64; // eax@134 unsigned int v65; // ecx@136 int v66; // eax@139 int v67; // eax@140 unsigned int v68; // ecx@142 int v69; // eax@145 int v70; // eax@146 unsigned int v71; // ecx@148 int v72; // eax@151 int v73; // eax@152 unsigned int v74; // ecx@154 int v75; // eax@157 int v76; // eax@158 unsigned int v77; // ecx@160 int v78; // eax@163 int v79; // eax@164 unsigned int v80; // ecx@166 int v81; // eax@169 int v82; // eax@170 unsigned int v83; // ecx@172 int v84; // eax@175 int v85; // eax@176 unsigned int v86; // ecx@178 int v87; // eax@181 int v88; // eax@182 unsigned int v89; // ecx@184 int v90; // eax@187 int v91; // eax@188 unsigned int v92; // ecx@190 int v93; // eax@193 int v94; // eax@194 unsigned int v95; // ecx@196 int v96; // eax@199 int v97; // eax@200 unsigned int v98; // ecx@202 int v99; // eax@205 int v100; // eax@206 unsigned int v101; // ecx@208 int v102; // eax@211 int v103; // eax@212 unsigned int v104; // ecx@214 int v105; // eax@217 int v106; // eax@218 unsigned int v107; // ecx@220 int v108; // eax@223 int v109; // eax@224 unsigned int v110; // ecx@226 int v111; // eax@229 int v112; // eax@230 unsigned int v113; // ecx@232 int v114; // eax@235 int v115; // eax@236 unsigned int v116; // ecx@238 int v117; // eax@241 int v118; // eax@242 unsigned int v119; // ecx@244 int v120; // eax@247 int v121; // eax@248 unsigned int v122; // ecx@250 int v123; // eax@253 int v124; // eax@254 unsigned int v125; // ecx@256 int v126; // eax@259 int v127; // eax@260 unsigned int v128; // ecx@262 int v129; // eax@265 int v130; // eax@266 unsigned int v131; // ecx@268 int v132; // eax@271 int v133; // eax@272 unsigned int v134; // ecx@274 int v135; // eax@277 int v136; // eax@278 unsigned int v137; // ecx@280 int v138; // eax@283 int v139; // eax@284 unsigned int v140; // ecx@286 int v141; // eax@289 int v142; // eax@290 unsigned int v143; // ecx@292 int v144; // eax@295 int v145; // eax@296 unsigned int v146; // ecx@298 int v147; // eax@301 int v148; // eax@302 unsigned int v149; // ecx@304 int v150; // eax@307 int v151; // eax@308 unsigned int v152; // ecx@310 int v153; // eax@313 int v154; // eax@314 unsigned int v155; // ecx@316 int v156; // eax@319 int v157; // eax@320 unsigned int v158; // ecx@322 int v159; // eax@325 int v160; // eax@326 unsigned int v161; // ecx@328 int v162; // eax@331 int v163; // eax@332 unsigned int v164; // ecx@334 int v165; // eax@337 int v166; // eax@338 unsigned int v167; // ecx@340 int v168; // eax@343 int v169; // eax@344 unsigned int v170; // ecx@346 int v171; // eax@349 int v172; // eax@350 unsigned int v173; // ecx@352 int v174; // eax@355 int v175; // eax@356 unsigned int v176; // ecx@358 int v177; // eax@361 int v178; // eax@362 unsigned int v179; // ecx@364 int v180; // eax@367 int v181; // eax@368 unsigned int v182; // ecx@370 int v183; // eax@373 int v184; // eax@374 unsigned int v185; // ecx@376 int v186; // eax@379 int v187; // eax@380 unsigned int v188; // ecx@382 int v189; // eax@385 int v190; // eax@386 unsigned int v191; // ecx@388 int v192; // eax@391 int v193; // eax@392 unsigned int v194; // ecx@394 int v195; // eax@397 int v196; // eax@398 unsigned int v197; // ecx@400 int v198; // eax@403 int v199; // eax@404 unsigned int v200; // ecx@406 int v201; // eax@409 int v202; // eax@410 unsigned int v203; // ecx@412 int v204; // eax@415 int v205; // eax@416 unsigned int v206; // ecx@418 int v207; // eax@421 int v208; // eax@422 unsigned int v209; // ecx@424 int v210; // eax@427 int v211; // eax@428 unsigned int v212; // ecx@430 int v213; // eax@433 int v214; // eax@434 unsigned int v215; // ecx@436 int v216; // eax@439 int v217; // eax@440 unsigned int v218; // ecx@442 int v219; // eax@445 int v220; // eax@446 unsigned int v221; // ecx@448 int v222; // eax@451 int v223; // eax@452 unsigned int v224; // ecx@454 int v225; // eax@457 int v226; // eax@458 unsigned int v227; // ecx@460 int v228; // eax@463 int v229; // eax@464 unsigned int v230; // ecx@466 int v231; // eax@469 int v232; // eax@470 unsigned int v233; // ecx@472 int v234; // eax@475 int v235; // eax@476 unsigned int v236; // ecx@478 int v237; // eax@481 int v238; // eax@482 unsigned int v239; // ecx@484 int v240; // eax@487 int v241; // eax@488 int v242; // eax@490 int v243; // eax@491 int v244; // eax@493 int v245; // eax@494 int v246; // eax@496 int v247; // eax@497 int v248; // eax@499 int v249; // eax@500 int v250; // eax@502 int v251; // eax@503 int v252; // eax@505 int v253; // eax@506 int v254; // eax@508 int v255; // eax@509 int v256; // eax@511 int v257; // eax@512 int v258; // eax@514 int v259; // eax@515 int v260; // eax@517 int v261; // eax@518 int v262; // eax@520 int v263; // eax@521 int v264; // eax@523 int v265; // eax@524 v1 = this; *(_DWORD *)(this + 512) = 0; v2 = operator new(0x12Cu); if ( v2 ) { *(_DWORD *)v2 = &off_6C5F68; *(_DWORD *)(v2 + 4) = &off_6C5AF0; *(_DWORD *)(v2 + 8) = 0; *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 16) = &off_6C5CD8; *(_DWORD *)(v2 + 20) = &off_6C5B18; *(_DWORD *)(v2 + 28) = 0; *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 32) = &off_6C59BC; *(_BYTE *)(v2 + 36) = 0; *(_DWORD *)(v2 + 292) = 0; *(_DWORD *)(v2 + 296) = 0; } else { v2 = 0; } v3 = *(_DWORD *)(v1 + 512); if ( v3 < 0x80 ) { *(_DWORD *)(v1 + 4 * v3) = v2; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v4 = operator new(0x118u); if ( v4 ) v5 = sub_4DD890(v4); else v5 = 0; v6 = *(_DWORD *)(v1 + 512); if ( v6 < 0x80 ) { *(_DWORD *)(v1 + 4 * v6) = v5; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v7 = operator new(0x4A08u); if ( v7 ) { *(_DWORD *)v7 = &off_6C5F08; _eh_vector_constructor_iterator_( (void *)(v7 + 4), 0xCu, 64, (int)sub_4D59E0, (void (__thiscall *)(void *))sub_4DA1A0); _eh_vector_constructor_iterator_( (void *)(v7 + 772), 0x11Cu, 64, (int)sub_4D7240, (void (__thiscall *)(void *))sub_4D7270); } else { v7 = 0; } v8 = *(_DWORD *)(v1 + 512); if ( v8 < 0x80 ) { *(_DWORD *)(v1 + 4 * v8) = v7; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v9 = operator new(0x11Cu); v10 = v9; if ( v9 ) { *(_DWORD *)v9 = &off_6C5F20; sub_4DD890(v9 + 4); } else { v10 = 0; } v11 = *(_DWORD *)(v1 + 512); if ( v11 < 0x80 ) { *(_DWORD *)(v1 + 4 * v11) = v10; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v12 = operator new(0x460u); v13 = v12; if ( v12 ) { *(_DWORD *)v12 = &off_6C5F38; sub_4D7330(v12 + 4); sub_4DD890(v13 + 840); } else { v13 = 0; } v14 = *(_DWORD *)(v1 + 512); if ( v14 < 0x80 ) { *(_DWORD *)(v1 + 4 * v14) = v13; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v15 = operator new(0x350u); v16 = v15; if ( v15 ) { *(_DWORD *)v15 = &off_6C5D00; sub_4D7330(v15 + 4); *(_DWORD *)(v16 + 844) = 0; *(_DWORD *)(v16 + 840) = 0; } else { v16 = 0; } v17 = *(_DWORD *)(v1 + 512); if ( v17 < 0x80 ) { *(_DWORD *)(v1 + 4 * v17) = v16; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v18 = operator new(0x124u); if ( v18 ) { *(_DWORD *)v18 = &off_6C5D18; *(_DWORD *)(v18 + 4) = &off_6C5CD8; *(_DWORD *)(v18 + 8) = &off_6C5B18; *(_DWORD *)(v18 + 16) = 0; *(_DWORD *)(v18 + 12) = 0; *(_DWORD *)(v18 + 20) = &off_6C59BC; *(_BYTE *)(v18 + 24) = 0; *(_DWORD *)(v18 + 280) = 0; *(_DWORD *)(v18 + 284) = 0; *(_DWORD *)(v18 + 288) = 0; } else { v18 = 0; } v19 = *(_DWORD *)(v1 + 512); if ( v19 < 0x80 ) { *(_DWORD *)(v1 + 4 * v19) = v18; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v20 = (void *)operator new(0x140u); v21 = v20; if ( v20 ) { sub_4D92C0(v20, (int)"print"); *(_DWORD *)v21 = &off_6C5E4C; } else { v21 = 0; } v22 = *(_DWORD *)(v1 + 512); if ( v22 < 0x80 ) { *(_DWORD *)(v1 + 4 * v22) = v21; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v23 = operator new(0x10u); if ( v23 ) { *(_DWORD *)v23 = &off_6C5F50; *(_DWORD *)(v23 + 4) = &off_6C5AF0; *(_DWORD *)(v23 + 8) = 0; *(_DWORD *)(v23 + 12) = 0; } else { v23 = 0; } v24 = *(_DWORD *)(v1 + 512); if ( v24 < 0x80 ) { *(_DWORD *)(v1 + 4 * v24) = v23; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v25 = operator new(8u); if ( v25 ) { *(_DWORD *)v25 = &off_6C5B54; *(_DWORD *)(v25 + 4) = 0; } else { v25 = 0; } v26 = *(_DWORD *)(v1 + 512); if ( v26 < 0x80 ) { *(_DWORD *)(v1 + 4 * v26) = v25; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v27 = operator new(0xBCu); if ( v27 ) v28 = sub_4E7A90(v27); else v28 = 0; v29 = *(_DWORD *)(v1 + 512); if ( v29 < 0x80 ) { *(_DWORD *)(v1 + 4 * v29) = v28; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v30 = operator new(0xBCu); if ( v30 ) v31 = sub_4E7AB0(v30); else v31 = 0; v32 = *(_DWORD *)(v1 + 512); if ( v32 < 0x80 ) { *(_DWORD *)(v1 + 4 * v32) = v31; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v33 = operator new(0xBCu); if ( v33 ) v34 = sub_4E7AD0(v33); else v34 = 0; v35 = *(_DWORD *)(v1 + 512); if ( v35 < 0x80 ) { *(_DWORD *)(v1 + 4 * v35) = v34; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v36 = operator new(0xBCu); if ( v36 ) v37 = sub_4E7AF0(v36); else v37 = 0; v38 = *(_DWORD *)(v1 + 512); if ( v38 < 0x80 ) { *(_DWORD *)(v1 + 4 * v38) = v37; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v39 = operator new(0xBCu); if ( v39 ) v40 = sub_4E7B10(v39); else v40 = 0; v41 = *(_DWORD *)(v1 + 512); if ( v41 < 0x80 ) { *(_DWORD *)(v1 + 4 * v41) = v40; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v42 = operator new(0xBCu); if ( v42 ) v43 = sub_4E7B30(v42); else v43 = 0; v44 = *(_DWORD *)(v1 + 512); if ( v44 < 0x80 ) { *(_DWORD *)(v1 + 4 * v44) = v43; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v45 = operator new(0xBCu); if ( v45 ) v46 = sub_4E7B50(v45); else v46 = 0; v47 = *(_DWORD *)(v1 + 512); if ( v47 < 0x80 ) { *(_DWORD *)(v1 + 4 * v47) = v46; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v48 = operator new(0xBCu); if ( v48 ) v49 = sub_4E7B70(v48); else v49 = 0; v50 = *(_DWORD *)(v1 + 512); if ( v50 < 0x80 ) { *(_DWORD *)(v1 + 4 * v50) = v49; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v51 = operator new(0xBCu); if ( v51 ) v52 = sub_4E7B90(v51); else v52 = 0; v53 = *(_DWORD *)(v1 + 512); if ( v53 < 0x80 ) { *(_DWORD *)(v1 + 4 * v53) = v52; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v54 = operator new(0xBCu); if ( v54 ) v55 = sub_4E7BB0(v54); else v55 = 0; v56 = *(_DWORD *)(v1 + 512); if ( v56 < 0x80 ) { *(_DWORD *)(v1 + 4 * v56) = v55; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v57 = operator new(0xBCu); if ( v57 ) v58 = sub_4E7BD0(v57); else v58 = 0; v59 = *(_DWORD *)(v1 + 512); if ( v59 < 0x80 ) { *(_DWORD *)(v1 + 4 * v59) = v58; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v60 = operator new(0xBCu); if ( v60 ) v61 = sub_4E7BF0(v60); else v61 = 0; v62 = *(_DWORD *)(v1 + 512); if ( v62 < 0x80 ) { *(_DWORD *)(v1 + 4 * v62) = v61; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v63 = operator new(0xBCu); if ( v63 ) v64 = sub_4E7C10(v63); else v64 = 0; v65 = *(_DWORD *)(v1 + 512); if ( v65 < 0x80 ) { *(_DWORD *)(v1 + 4 * v65) = v64; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v66 = operator new(0xBCu); if ( v66 ) v67 = sub_4E7C30(v66); else v67 = 0; v68 = *(_DWORD *)(v1 + 512); if ( v68 < 0x80 ) { *(_DWORD *)(v1 + 4 * v68) = v67; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v69 = operator new(0xBCu); if ( v69 ) v70 = sub_4E7C50(v69); else v70 = 0; v71 = *(_DWORD *)(v1 + 512); if ( v71 < 0x80 ) { *(_DWORD *)(v1 + 4 * v71) = v70; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v72 = operator new(0xBCu); if ( v72 ) v73 = sub_4E7C70(v72); else v73 = 0; v74 = *(_DWORD *)(v1 + 512); if ( v74 < 0x80 ) { *(_DWORD *)(v1 + 4 * v74) = v73; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v75 = operator new(0xBCu); if ( v75 ) v76 = sub_4E7C90(v75); else v76 = 0; v77 = *(_DWORD *)(v1 + 512); if ( v77 < 0x80 ) { *(_DWORD *)(v1 + 4 * v77) = v76; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v78 = operator new(0xBCu); if ( v78 ) v79 = sub_4E7CB0(v78); else v79 = 0; v80 = *(_DWORD *)(v1 + 512); if ( v80 < 0x80 ) { *(_DWORD *)(v1 + 4 * v80) = v79; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v81 = operator new(0xBCu); if ( v81 ) v82 = sub_4E7CD0(v81); else v82 = 0; v83 = *(_DWORD *)(v1 + 512); if ( v83 < 0x80 ) { *(_DWORD *)(v1 + 4 * v83) = v82; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v84 = operator new(0xBCu); if ( v84 ) v85 = sub_4E7CF0(v84); else v85 = 0; v86 = *(_DWORD *)(v1 + 512); if ( v86 < 0x80 ) { *(_DWORD *)(v1 + 4 * v86) = v85; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v87 = operator new(0xBCu); if ( v87 ) v88 = sub_4E7D10(v87); else v88 = 0; v89 = *(_DWORD *)(v1 + 512); if ( v89 < 0x80 ) { *(_DWORD *)(v1 + 4 * v89) = v88; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v90 = operator new(0xBCu); if ( v90 ) v91 = sub_4E7D30(v90); else v91 = 0; v92 = *(_DWORD *)(v1 + 512); if ( v92 < 0x80 ) { *(_DWORD *)(v1 + 4 * v92) = v91; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v93 = operator new(0xBCu); if ( v93 ) v94 = sub_4E7D50(v93); else v94 = 0; v95 = *(_DWORD *)(v1 + 512); if ( v95 < 0x80 ) { *(_DWORD *)(v1 + 4 * v95) = v94; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v96 = operator new(0xBCu); if ( v96 ) v97 = sub_4E7D70(v96); else v97 = 0; v98 = *(_DWORD *)(v1 + 512); if ( v98 < 0x80 ) { *(_DWORD *)(v1 + 4 * v98) = v97; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v99 = operator new(0xBCu); if ( v99 ) v100 = sub_4E7DB0(v99); else v100 = 0; v101 = *(_DWORD *)(v1 + 512); if ( v101 < 0x80 ) { *(_DWORD *)(v1 + 4 * v101) = v100; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v102 = operator new(0xBCu); if ( v102 ) v103 = sub_4E7DD0(v102); else v103 = 0; v104 = *(_DWORD *)(v1 + 512); if ( v104 < 0x80 ) { *(_DWORD *)(v1 + 4 * v104) = v103; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v105 = operator new(0xBCu); if ( v105 ) v106 = sub_4E7DF0(v105); else v106 = 0; v107 = *(_DWORD *)(v1 + 512); if ( v107 < 0x80 ) { *(_DWORD *)(v1 + 4 * v107) = v106; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v108 = operator new(0xBCu); if ( v108 ) v109 = sub_4E7D90(v108); else v109 = 0; v110 = *(_DWORD *)(v1 + 512); if ( v110 < 0x80 ) { *(_DWORD *)(v1 + 4 * v110) = v109; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v111 = operator new(0xBCu); if ( v111 ) v112 = sub_4E7E10(v111); else v112 = 0; v113 = *(_DWORD *)(v1 + 512); if ( v113 < 0x80 ) { *(_DWORD *)(v1 + 4 * v113) = v112; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v114 = operator new(0xBCu); if ( v114 ) v115 = sub_4E7E30(v114); else v115 = 0; v116 = *(_DWORD *)(v1 + 512); if ( v116 < 0x80 ) { *(_DWORD *)(v1 + 4 * v116) = v115; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v117 = operator new(0xBCu); if ( v117 ) v118 = sub_4E7E50(v117); else v118 = 0; v119 = *(_DWORD *)(v1 + 512); if ( v119 < 0x80 ) { *(_DWORD *)(v1 + 4 * v119) = v118; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v120 = operator new(0xBCu); if ( v120 ) v121 = sub_4E7E70(v120); else v121 = 0; v122 = *(_DWORD *)(v1 + 512); if ( v122 < 0x80 ) { *(_DWORD *)(v1 + 4 * v122) = v121; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v123 = operator new(0xBCu); if ( v123 ) v124 = sub_4E7E90(v123); else v124 = 0; v125 = *(_DWORD *)(v1 + 512); if ( v125 < 0x80 ) { *(_DWORD *)(v1 + 4 * v125) = v124; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v126 = operator new(0xBCu); if ( v126 ) v127 = sub_4E7EB0(v126); else v127 = 0; v128 = *(_DWORD *)(v1 + 512); if ( v128 < 0x80 ) { *(_DWORD *)(v1 + 4 * v128) = v127; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v129 = operator new(0xBCu); if ( v129 ) v130 = sub_4E7ED0(v129); else v130 = 0; v131 = *(_DWORD *)(v1 + 512); if ( v131 < 0x80 ) { *(_DWORD *)(v1 + 4 * v131) = v130; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v132 = operator new(0xBCu); if ( v132 ) v133 = sub_4E7EF0(v132); else v133 = 0; v134 = *(_DWORD *)(v1 + 512); if ( v134 < 0x80 ) { *(_DWORD *)(v1 + 4 * v134) = v133; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v135 = operator new(0xBCu); if ( v135 ) v136 = sub_4E7F10(v135); else v136 = 0; v137 = *(_DWORD *)(v1 + 512); if ( v137 < 0x80 ) { *(_DWORD *)(v1 + 4 * v137) = v136; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v138 = operator new(0xBCu); if ( v138 ) v139 = sub_4E7F30(v138); else v139 = 0; v140 = *(_DWORD *)(v1 + 512); if ( v140 < 0x80 ) { *(_DWORD *)(v1 + 4 * v140) = v139; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v141 = operator new(0xBCu); if ( v141 ) v142 = sub_4E7F50(v141); else v142 = 0; v143 = *(_DWORD *)(v1 + 512); if ( v143 < 0x80 ) { *(_DWORD *)(v1 + 4 * v143) = v142; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v144 = operator new(0xBCu); if ( v144 ) v145 = sub_4E7F70(v144); else v145 = 0; v146 = *(_DWORD *)(v1 + 512); if ( v146 < 0x80 ) { *(_DWORD *)(v1 + 4 * v146) = v145; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v147 = operator new(0xBCu); if ( v147 ) v148 = sub_4E7F90(v147); else v148 = 0; v149 = *(_DWORD *)(v1 + 512); if ( v149 < 0x80 ) { *(_DWORD *)(v1 + 4 * v149) = v148; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v150 = operator new(0xBCu); if ( v150 ) v151 = sub_4E7FB0(v150); else v151 = 0; v152 = *(_DWORD *)(v1 + 512); if ( v152 < 0x80 ) { *(_DWORD *)(v1 + 4 * v152) = v151; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v153 = operator new(0xBCu); if ( v153 ) v154 = sub_4E7FD0(v153); else v154 = 0; v155 = *(_DWORD *)(v1 + 512); if ( v155 < 0x80 ) { *(_DWORD *)(v1 + 4 * v155) = v154; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v156 = operator new(0xBCu); if ( v156 ) v157 = sub_4E7FF0(v156); else v157 = 0; v158 = *(_DWORD *)(v1 + 512); if ( v158 < 0x80 ) { *(_DWORD *)(v1 + 4 * v158) = v157; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v159 = operator new(0xBCu); if ( v159 ) v160 = sub_4E8010(v159); else v160 = 0; v161 = *(_DWORD *)(v1 + 512); if ( v161 < 0x80 ) { *(_DWORD *)(v1 + 4 * v161) = v160; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v162 = operator new(0xBCu); if ( v162 ) v163 = sub_4E8030(v162); else v163 = 0; v164 = *(_DWORD *)(v1 + 512); if ( v164 < 0x80 ) { *(_DWORD *)(v1 + 4 * v164) = v163; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v165 = operator new(0xBCu); if ( v165 ) v166 = sub_4E8050(v165); else v166 = 0; v167 = *(_DWORD *)(v1 + 512); if ( v167 < 0x80 ) { *(_DWORD *)(v1 + 4 * v167) = v166; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v168 = operator new(0xBCu); if ( v168 ) v169 = sub_4E8070(v168); else v169 = 0; v170 = *(_DWORD *)(v1 + 512); if ( v170 < 0x80 ) { *(_DWORD *)(v1 + 4 * v170) = v169; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v171 = operator new(0xBCu); if ( v171 ) v172 = sub_4E8090(v171); else v172 = 0; v173 = *(_DWORD *)(v1 + 512); if ( v173 < 0x80 ) { *(_DWORD *)(v1 + 4 * v173) = v172; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v174 = operator new(0xBCu); if ( v174 ) v175 = sub_4E80B0(v174); else v175 = 0; v176 = *(_DWORD *)(v1 + 512); if ( v176 < 0x80 ) { *(_DWORD *)(v1 + 4 * v176) = v175; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v177 = operator new(0xBCu); if ( v177 ) v178 = sub_4E80D0(v177); else v178 = 0; v179 = *(_DWORD *)(v1 + 512); if ( v179 < 0x80 ) { *(_DWORD *)(v1 + 4 * v179) = v178; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v180 = operator new(0xBCu); if ( v180 ) v181 = sub_4E80F0(v180); else v181 = 0; v182 = *(_DWORD *)(v1 + 512); if ( v182 < 0x80 ) { *(_DWORD *)(v1 + 4 * v182) = v181; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v183 = operator new(0xBCu); if ( v183 ) v184 = sub_4E8110(v183); else v184 = 0; v185 = *(_DWORD *)(v1 + 512); if ( v185 < 0x80 ) { *(_DWORD *)(v1 + 4 * v185) = v184; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v186 = operator new(0xBCu); if ( v186 ) v187 = sub_4E8130(v186); else v187 = 0; v188 = *(_DWORD *)(v1 + 512); if ( v188 < 0x80 ) { *(_DWORD *)(v1 + 4 * v188) = v187; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v189 = operator new(0xBCu); if ( v189 ) v190 = sub_4E8150(v189); else v190 = 0; v191 = *(_DWORD *)(v1 + 512); if ( v191 < 0x80 ) { *(_DWORD *)(v1 + 4 * v191) = v190; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v192 = operator new(0xBCu); if ( v192 ) v193 = sub_4E8170(v192); else v193 = 0; v194 = *(_DWORD *)(v1 + 512); if ( v194 < 0x80 ) { *(_DWORD *)(v1 + 4 * v194) = v193; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v195 = operator new(0xBCu); if ( v195 ) v196 = sub_4E8190(v195); else v196 = 0; v197 = *(_DWORD *)(v1 + 512); if ( v197 < 0x80 ) { *(_DWORD *)(v1 + 4 * v197) = v196; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v198 = operator new(0xBCu); if ( v198 ) v199 = sub_4E81B0(v198); else v199 = 0; v200 = *(_DWORD *)(v1 + 512); if ( v200 < 0x80 ) { *(_DWORD *)(v1 + 4 * v200) = v199; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v201 = operator new(0xBCu); if ( v201 ) v202 = sub_4E81D0(v201); else v202 = 0; v203 = *(_DWORD *)(v1 + 512); if ( v203 < 0x80 ) { *(_DWORD *)(v1 + 4 * v203) = v202; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v204 = operator new(0xBCu); if ( v204 ) v205 = sub_4E81F0(v204); else v205 = 0; v206 = *(_DWORD *)(v1 + 512); if ( v206 < 0x80 ) { *(_DWORD *)(v1 + 4 * v206) = v205; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v207 = operator new(0xBCu); if ( v207 ) v208 = sub_4E8210(v207); else v208 = 0; v209 = *(_DWORD *)(v1 + 512); if ( v209 < 0x80 ) { *(_DWORD *)(v1 + 4 * v209) = v208; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v210 = operator new(0xBCu); if ( v210 ) v211 = sub_4E8230(v210); else v211 = 0; v212 = *(_DWORD *)(v1 + 512); if ( v212 < 0x80 ) { *(_DWORD *)(v1 + 4 * v212) = v211; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v213 = operator new(0xBCu); if ( v213 ) v214 = sub_4E8250(v213); else v214 = 0; v215 = *(_DWORD *)(v1 + 512); if ( v215 < 0x80 ) { *(_DWORD *)(v1 + 4 * v215) = v214; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v216 = operator new(0xBCu); if ( v216 ) v217 = sub_4E8270(v216); else v217 = 0; v218 = *(_DWORD *)(v1 + 512); if ( v218 < 0x80 ) { *(_DWORD *)(v1 + 4 * v218) = v217; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v219 = operator new(0xBCu); if ( v219 ) v220 = sub_4E8290(v219); else v220 = 0; v221 = *(_DWORD *)(v1 + 512); if ( v221 < 0x80 ) { *(_DWORD *)(v1 + 4 * v221) = v220; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v222 = operator new(0xBCu); if ( v222 ) v223 = sub_4E82B0(v222); else v223 = 0; v224 = *(_DWORD *)(v1 + 512); if ( v224 < 0x80 ) { *(_DWORD *)(v1 + 4 * v224) = v223; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v225 = operator new(0xBCu); if ( v225 ) v226 = sub_4E82D0(v225); else v226 = 0; v227 = *(_DWORD *)(v1 + 512); if ( v227 < 0x80 ) { *(_DWORD *)(v1 + 4 * v227) = v226; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v228 = operator new(0xBCu); if ( v228 ) v229 = sub_4E82F0(v228); else v229 = 0; v230 = *(_DWORD *)(v1 + 512); if ( v230 < 0x80 ) { *(_DWORD *)(v1 + 4 * v230) = v229; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v231 = operator new(0xBCu); if ( v231 ) v232 = sub_4E8310(v231); else v232 = 0; v233 = *(_DWORD *)(v1 + 512); if ( v233 < 0x80 ) { *(_DWORD *)(v1 + 4 * v233) = v232; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v234 = operator new(0xBCu); if ( v234 ) v235 = sub_4E8330(v234); else v235 = 0; v236 = *(_DWORD *)(v1 + 512); if ( v236 < 0x80 ) { *(_DWORD *)(v1 + 4 * v236) = v235; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v237 = operator new(0xBCu); if ( v237 ) v238 = sub_4E8350(v237); else v238 = 0; v239 = *(_DWORD *)(v1 + 512); if ( v239 < 0x80 ) { *(_DWORD *)(v1 + 4 * v239) = v238; ++*(_DWORD *)(v1 + 512); } else { sub_639100(&unk_86DDD8, (int)"Too many statement", 1); } v240 = operator new(0xBCu); if ( v240 ) v241 = sub_4E8370(v240); else v241 = 0; sub_4D5E70(v1, v241); v242 = operator new(0xBCu); if ( v242 ) v243 = sub_4E8390(v242); else v243 = 0; sub_4D5E70(v1, v243); v244 = operator new(0xBCu); if ( v244 ) v245 = sub_4E83B0(v244); else v245 = 0; sub_4D5E70(v1, v245); v246 = operator new(0xBCu); if ( v246 ) v247 = sub_4E83D0(v246); else v247 = 0; sub_4D5E70(v1, v247); v248 = operator new(0xBCu); if ( v248 ) v249 = sub_4E83F0(v248); else v249 = 0; sub_4D5E70(v1, v249); v250 = operator new(0xBCu); if ( v250 ) v251 = sub_4E8410(v250); else v251 = 0; sub_4D5E70(v1, v251); v252 = operator new(0xBCu); if ( v252 ) v253 = sub_4E8430(v252); else v253 = 0; sub_4D5E70(v1, v253); v254 = operator new(0xBCu); if ( v254 ) v255 = sub_4E8450(v254); else v255 = 0; sub_4D5E70(v1, v255); v256 = operator new(0xBCu); if ( v256 ) v257 = sub_4E8470(v256); else v257 = 0; sub_4D5E70(v1, v257); v258 = operator new(0xBCu); if ( v258 ) v259 = sub_4E8490(v258); else v259 = 0; sub_4D5E70(v1, v259); v260 = operator new(0xBCu); if ( v260 ) v261 = sub_4E84B0(v260); else v261 = 0; sub_4D5E70(v1, v261); v262 = operator new(0xBCu); if ( v262 ) v263 = sub_4E84D0(v262); else v263 = 0; sub_4D5E70(v1, v263); v264 = operator new(0xBCu); if ( v264 ) v265 = sub_4E84F0(v264); else v265 = 0; sub_4D5E70(v1, v265); return v1; } // 6C59BC: using guessed type int (__stdcall *off_6C59BC)(int); // 6C5AF0: using guessed type int (__stdcall *off_6C5AF0)(int); // 6C5B18: using guessed type int (__stdcall *off_6C5B18)(int); // 6C5B54: using guessed type int (__stdcall *off_6C5B54)(int); // 6C5CD8: using guessed type int (__stdcall *off_6C5CD8)(int); // 6C5D00: using guessed type int (__stdcall *off_6C5D00)(int); // 6C5D18: using guessed type int (__stdcall *off_6C5D18)(int); // 6C5E4C: using guessed type int (__stdcall *off_6C5E4C)(int); // 6C5F08: using guessed type int (__stdcall *off_6C5F08)(int); // 6C5F20: using guessed type int (__stdcall *off_6C5F20)(int); // 6C5F38: using guessed type int (__stdcall *off_6C5F38)(int); // 6C5F50: using guessed type int (__stdcall *off_6C5F50)(int); // 6C5F68: using guessed type int (__stdcall *off_6C5F68)(int); //----- (004DFDF0) -------------------------------------------------------- void *__thiscall sub_4DFDF0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C617C; if ( *((_DWORD *)this + 8) >= 0x10u ) operator delete(*((void **)this + 3)); *((_DWORD *)v2 + 8) = 15; *((_DWORD *)v2 + 7) = 0; *((_BYTE *)v2 + 12) = 0; if ( a2 & 1 ) operator delete(v2); return v2; } // 6C617C: using guessed type int (__thiscall *off_6C617C)(void *, char); //----- (004DFE40) -------------------------------------------------------- void *__thiscall sub_4DFE40(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@3 void *v5; // eax@4 int v6; // eax@6 int v7; // eax@7 int v8; // eax@7 int v9; // ebx@7 unsigned int v10; // eax@8 int v11; // edi@11 int v12; // edi@11 int v13; // eax@13 int v14; // ecx@13 char v15; // dl@13 int v16; // ecx@13 int v17; // edi@13 void (__thiscall *v18)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@13 int v19; // ecx@16 int v20; // eax@17 int v21; // ecx@22 int v23; // [sp+0h] [bp-44h]@1 int v24; // [sp+10h] [bp-34h]@13 void *v25; // [sp+18h] [bp-2Ch]@1 bool v26; // [sp+1Ch] [bp-28h]@6 int v27; // [sp+20h] [bp-24h]@7 int v28; // [sp+24h] [bp-20h]@11 int v29; // [sp+28h] [bp-1Ch]@7 int v30; // [sp+2Ch] [bp-18h]@1 void *v31; // [sp+30h] [bp-14h]@1 int *v32; // [sp+34h] [bp-10h]@1 int v33; // [sp+40h] [bp-4h]@3 v32 = &v23; v2 = this; v31 = this; v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this + 4) + 56); v30 = 0; v25 = v31; if ( v3 ) (*(void (**)(void))(*(_DWORD *)v3 + 4))(); v4 = *(_DWORD *)(*(_DWORD *)v2 + 4); v33 = 0; if ( !*(_DWORD *)((char *)v2 + v4 + 12) ) { v5 = *(void **)((char *)v2 + v4 + 60); if ( v5 ) sub_4DC3C0(v5); } v6 = *(_DWORD *)v2; v26 = *(_DWORD *)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4) + 12) == 0; v33 = 1; if ( v26 ) { v7 = sub_4D5680((int)((char *)v2 + *(_DWORD *)(v6 + 4)), (int)&v29); LOBYTE(v33) = 2; v8 = sub_4DC5C0(v7); v9 = v29; v27 = v8; LOBYTE(v33) = 1; if ( v29 ) { std::_Lockit::_Lockit(0); v10 = *(_DWORD *)(v9 + 4); if ( v10 > 0 && v10 < 0xFFFFFFFF ) *(_DWORD *)(v9 + 4) = v10 - 1; v11 = -(*(_DWORD *)(v9 + 4) == 0); std::_Lockit::__Lockit(&v28); v12 = v9 & v11; if ( v12 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v12)(v12, 1); } v13 = *(_DWORD *)(*(_DWORD *)v2 + 4); v14 = *(_DWORD *)(*(_DWORD *)v2 + 4); v15 = *((_BYTE *)v2 + v14 + 64); v16 = *(_DWORD *)((char *)v2 + v14 + 56); LOBYTE(v28) = v15; v17 = *(_DWORD *)v27; LOBYTE(v24) = 0; v18 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v17 + 28); LOBYTE(v33) = 3; v18(v27, &v24, v24, v16, (char *)v2 + v13, v28, a2); if ( (_BYTE)v24 ) v30 = 4; v33 = 1; } v19 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4)); if ( v30 ) { v20 = v30 | *(_DWORD *)(v19 + 12); if ( !*(_DWORD *)(v19 + 56) ) LOBYTE(v20) = v20 | 4; sub_4D6510(v19, v20, 0); } v33 = 5; if ( !__uncaught_exception() ) sub_4DC450(v2); v21 = *(_DWORD *)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4) + 56); v33 = -1; if ( v21 ) (*(void (**)(void))(*(_DWORD *)v21 + 8))(); return v2; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (004DFFE3) -------------------------------------------------------- int (*__usercall sub_4DFFE3(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 - 20) + *(_DWORD *)(**(_DWORD **)(a1 - 20) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_4E0014; } // 4E0014: using guessed type int loc_4E0014(); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (004E0030) -------------------------------------------------------- int __cdecl sub_4E0030(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8, size_t a9, size_t a10, int a11) { int v11; // ebx@1 unsigned __int8 *v12; // edi@1 int v13; // eax@1 int v14; // esi@1 int v15; // esi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // esi@5 int (__thiscall *v19)(_DWORD, _DWORD); // eax@8 char v20; // al@8 void *v21; // esi@11 void *v22; // eax@13 void *v23; // eax@16 size_t v24; // ebx@20 int v25; // ebx@26 void *v26; // ebx@27 const char *v27; // eax@29 int v28; // edi@31 int v29; // eax@31 int v30; // ecx@40 unsigned int v31; // eax@40 int v32; // eax@46 int v33; // eax@48 int v34; // eax@50 int v35; // eax@51 void *v36; // eax@53 size_t v37; // eax@54 int v38; // ebx@54 int v39; // eax@54 int v40; // eax@54 unsigned __int8 v41; // al@54 int v42; // eax@54 int v43; // eax@54 int v44; // ecx@54 void *v45; // eax@55 int v46; // ebx@56 int v47; // eax@56 int v48; // eax@56 bool v49; // zf@56 unsigned __int8 *v50; // ecx@56 int v51; // eax@58 int v52; // edx@58 int v53; // eax@59 int v54; // eax@59 int v55; // ecx@59 int v56; // edx@59 int v57; // eax@59 unsigned int v59; // [sp-4h] [bp-94h]@1 char v60; // [sp+10h] [bp-80h]@54 int v61; // [sp+14h] [bp-7Ch]@1 int v62; // [sp+18h] [bp-78h]@1 int v63; // [sp+1Ch] [bp-74h]@54 int v64; // [sp+20h] [bp-70h]@1 size_t v65; // [sp+24h] [bp-6Ch]@1 int v66; // [sp+28h] [bp-68h]@48 int v67; // [sp+2Ch] [bp-64h]@5 int v68; // [sp+30h] [bp-60h]@2 char v69; // [sp+34h] [bp-5Ch]@11 __int16 v70; // [sp+35h] [bp-5Bh]@11 size_t v71; // [sp+38h] [bp-58h]@1 size_t v72; // [sp+3Ch] [bp-54h]@1 unsigned int v73; // [sp+40h] [bp-50h]@11 int v74; // [sp+44h] [bp-4Ch]@1 void *v75; // [sp+48h] [bp-48h]@8 unsigned int v76; // [sp+5Ch] [bp-34h]@13 char *v77; // [sp+64h] [bp-2Ch]@8 int v78; // [sp+74h] [bp-1Ch]@8 unsigned int v79; // [sp+78h] [bp-18h]@8 unsigned int v80; // [sp+80h] [bp-10h]@1 int v81; // [sp+8Ch] [bp-4h]@1 int v82; // [sp+90h] [bp+0h]@1 int v83; // [sp+A0h] [bp+10h]@54 int v84; // [sp+A4h] [bp+14h]@54 v80 = (unsigned int)&v82 ^ __security_cookie; v59 = (unsigned int)&v82 ^ __security_cookie; v11 = a11; v12 = (unsigned __int8 *)a7; v65 = a9; v71 = a8; v62 = a5; v72 = a10; v74 = a11; v13 = sub_4D5680(a5, (int)&v64); v81 = 0; v14 = sub_4DD750(v13); v61 = v14; v81 = -1; if ( v64 ) { v15 = v64; v68 = v64; std::_Lockit::_Lockit(0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = -(*(_DWORD *)(v15 + 4) == 0); std::_Lockit::__Lockit(&v67); v18 = v68 & v17; if ( v18 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v18)(v18, 1); v14 = v61; } sub_4DC4F0((void *)v14, (int)&v75); v19 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v14 + 8); v81 = 1; LOBYTE(v68) = v19(v14, v59); v79 = 15; v78 = 0; LOBYTE(v77) = 0; v20 = *(_BYTE *)a7; LOBYTE(v81) = 2; if ( v20 == 43 || (v67 = 0, v20 == 45) ) v67 = 1; v69 = *localeconv()->decimal_point; v70 = 101; v21 = memchr(a7, 101, a11); v73 = (unsigned int)memchr(a7, v69, a11); if ( !v73 ) v72 = 0; v22 = v75; if ( v76 < 0x10 ) v22 = &v75; if ( *(_BYTE *)v22 != 127 ) { v23 = v75; if ( v76 < 0x10 ) v23 = &v75; if ( *(_BYTE *)v23 > 0 ) { sub_476F60((int)&v77, (char *)a7, a11); if ( v21 ) { v24 = v73; if ( !v73 ) { sub_4DCB30((int)&v77, v71, 48); v71 = v24; } sub_4DCC50((int)&v77, v21 - a7, v72, 48); } else { sub_4DCB30((int)&v77, v72, 48); v24 = v73; } if ( v24 ) { v25 = v24 - (_DWORD)a7; sub_4DCC50((int)&v77, v25 + 1, v65, 48); sub_4DCC50((int)&v77, v25, v71, 48); v65 = 0; } else { sub_4DCB30((int)&v77, v71, 48); } v26 = v75; v71 = 0; if ( v76 < 0x10 ) v26 = &v75; v27 = v77; if ( v79 < 0x10 ) v27 = (const char *)&v77; v28 = strcspn(v27, &v69); for ( LOBYTE(v29) = *(_BYTE *)v26; *(_BYTE *)v26 != 127; LOBYTE(v29) = *(_BYTE *)v26 ) { if ( (char)v29 <= 0 ) break; v29 = (char)v29; if ( (char)v29 >= (unsigned int)(v28 - v67) ) break; v28 -= v29; sub_4DCC50((int)&v77, v28, 1u, 0); if ( *((_BYTE *)v26 + 1) > 0 ) v26 = (char *)v26 + 1; } v12 = (unsigned __int8 *)v77; if ( v79 < 0x10 ) v12 = (unsigned __int8 *)&v77; v72 = 0; v74 = v78; v11 = v78; } } v30 = *(_DWORD *)(v62 + 32); v31 = v71 + v65 + v11 + v72; if ( *(_DWORD *)(v62 + 36) >= 0 && (*(_DWORD *)(v62 + 36) > 0 || v30) && v30 > v31 ) v73 = v30 - v31; else v73 = 0; v32 = *(_DWORD *)(v62 + 20) & 0x1C0; if ( v32 != 64 ) { if ( v32 == 256 ) { if ( v67 ) { v34 = sub_4D9AE0(a1, (int)&v66, a3, a4, v12, 1); a3 = *(_DWORD *)v34; ++v12; --v11; a4 = *(_DWORD *)(v34 + 4); v74 = v11; } v35 = sub_4D9B50(a1, (int)&v66, a3, a4, a6, v73); a3 = *(_DWORD *)v35; a4 = *(_DWORD *)(v35 + 4); } else { v33 = sub_4D9B50(a1, (int)&v66, a3, a4, a6, v73); a3 = *(_DWORD *)v33; a4 = *(_DWORD *)(v33 + 4); } v73 = 0; } v36 = memchr(v12, v69, v11); if ( v36 ) { v37 = v36 - v12; v38 = v37 + 1; v39 = sub_4D9BC0(a1, (int)&v66, a3, a4, v12, v37, v68); v40 = sub_4D9B50(a1, (int)&v66, *(_DWORD *)v39, *(_DWORD *)(v39 + 4), 0x30u, v71); v83 = *(_DWORD *)v40; v84 = *(_DWORD *)(v40 + 4); v41 = (*(int (**)(void))(*(_DWORD *)v61 + 4))(); LOBYTE(v64) = v41; v42 = sub_4D9B50(a1, (int)&v60, v83, v84, v41, 1); v43 = sub_4D9B50(a1, (int)&v63, *(_DWORD *)v42, *(_DWORD *)(v42 + 4), 0x30u, v65); v44 = *(_DWORD *)v43; v12 += v38; v74 -= v38; v11 = v74; a3 = v44; a4 = *(_DWORD *)(v43 + 4); } v45 = memchr(v12, 101, v11); if ( v45 ) { v46 = v45 - v12 + 1; v47 = sub_4D9BC0(a1, (int)&v63, a3, a4, v12, v45 - v12, v68); v48 = sub_4D9B50(a1, (int)&v63, *(_DWORD *)v47, *(_DWORD *)(v47 + 4), 0x30u, v72); v49 = (*(_BYTE *)(v62 + 20) & 4) == 0; v72 = 0; v50 = (unsigned __int8 *)"E"; if ( v49 ) v50 = (unsigned __int8 *)"e"; v51 = sub_4D9AE0(a1, (int)&v63, *(_DWORD *)v48, *(_DWORD *)(v48 + 4), v50, 1); v52 = *(_DWORD *)v51; v12 += v46; v74 -= v46; v11 = v74; a3 = v52; a4 = *(_DWORD *)(v51 + 4); } v53 = sub_4D9BC0(a1, (int)&v63, a3, a4, v12, v11, v68); v54 = sub_4D9B50(a1, (int)&v60, *(_DWORD *)v53, *(_DWORD *)(v53 + 4), 0x30u, v72); v56 = v62; v55 = *(_DWORD *)v54; v57 = *(_DWORD *)(v54 + 4); *(_DWORD *)(v62 + 32) = 0; *(_DWORD *)(v56 + 36) = 0; sub_4D9B50(a1, a2, v55, v57, a6, v73); if ( v79 >= 0x10 ) operator delete(v77); v79 = 15; v78 = 0; LOBYTE(v77) = 0; if ( v76 >= 0x10 ) operator delete(v75); return a2; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004E05A0) -------------------------------------------------------- int __cdecl sub_4E05A0(int a1, int a2, int a3, int a4, int a5, unsigned __int8 a6, const void *a7, size_t a8) { char *v8; // ebx@1 int v9; // eax@1 int v10; // eax@1 int v11; // esi@1 unsigned int v12; // eax@2 int v13; // edi@5 int v14; // edi@5 char v15; // al@7 char v16; // al@10 void *v17; // edx@15 void *v18; // eax@15 void *v19; // eax@18 size_t v20; // esi@23 int v21; // eax@23 int v22; // eax@26 int v23; // edi@29 int v24; // edi@33 int v25; // eax@35 int v26; // eax@37 int v27; // eax@38 int v28; // eax@38 unsigned __int8 v29; // al@40 int v30; // eax@40 int v31; // edx@40 int v32; // ST14_4@40 int v33; // edi@40 int v34; // eax@40 unsigned int v36; // [sp-4h] [bp-64h]@1 int v37; // [sp+Ch] [bp-54h]@40 void *v38; // [sp+10h] [bp-50h]@1 int v39; // [sp+14h] [bp-4Ch]@1 char v40; // [sp+18h] [bp-48h]@38 void *i; // [sp+1Ch] [bp-44h]@23 int v42; // [sp+20h] [bp-40h]@1 int v43; // [sp+24h] [bp-3Ch]@1 char v44; // [sp+28h] [bp-38h]@37 int v45; // [sp+2Ch] [bp-34h]@5 size_t v46; // [sp+30h] [bp-30h]@1 void *v47; // [sp+34h] [bp-2Ch]@7 unsigned int v48; // [sp+48h] [bp-18h]@15 unsigned int v49; // [sp+50h] [bp-10h]@1 int v50; // [sp+5Ch] [bp-4h]@1 int v51; // [sp+60h] [bp+0h]@1 int v52; // [sp+70h] [bp+10h]@40 v49 = (unsigned int)&v51 ^ __security_cookie; v36 = (unsigned int)&v51 ^ __security_cookie; v8 = (char *)a7; v39 = a2; v43 = a5; v46 = a8; v9 = sub_4D5680(a5, (int)&v42); v50 = 0; v10 = sub_4DD750(v9); v11 = v42; v38 = (void *)v10; v50 = -1; if ( v42 ) { std::_Lockit::_Lockit(0); v12 = *(_DWORD *)(v11 + 4); if ( v12 && v12 < 0xFFFFFFFF ) *(_DWORD *)(v11 + 4) = v12 - 1; v13 = -(*(_DWORD *)(v11 + 4) == 0); std::_Lockit::__Lockit(&v45); v14 = v11 & v13; if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } sub_4DC4F0(v38, (int)&v47); v15 = *(_BYTE *)a7; v50 = 1; if ( v15 == 43 || v15 == 45 ) { v45 = 1; } else { if ( v15 != 48 || (v16 = *((_BYTE *)a7 + 1), v16 != 120) && v16 != 88 ) v45 = 0; else v45 = 2; } v17 = v47; v18 = v47; if ( v48 < 0x10 ) v18 = &v47; if ( *(_BYTE *)v18 != 127 ) { v19 = v47; if ( v48 < 0x10 ) v19 = &v47; if ( *(_BYTE *)v19 > 0 ) { if ( v48 < 0x10 ) v17 = &v47; v20 = v46; LOBYTE(v21) = *(_BYTE *)v17; for ( i = v17; (_BYTE)v21 != 127; LOBYTE(v21) = *(_BYTE *)v21 ) { if ( (char)v21 <= 0 ) break; v21 = (char)v21; if ( (char)v21 >= v20 - v45 ) break; v20 -= v21; memmove_s((char *)a7 + v20 + 1, v46 - v20 + 1, (char *)a7 + v20, v46 - v20 + 1); v22 = (int)i; ++v46; *((_BYTE *)a7 + v20) = 0; if ( *(_BYTE *)(v22 + 1) > 0 ) { ++v22; i = (void *)v22; } } } } v23 = *(_DWORD *)(v43 + 32); if ( *(_DWORD *)(v43 + 36) >= 0 && (*(_DWORD *)(v43 + 36) > 0 || v23) && v23 > v46 ) v24 = v23 - v46; else v24 = 0; v25 = *(_DWORD *)(v43 + 20) & 0x1C0; if ( v25 != 64 ) { if ( v25 == 256 ) { v27 = sub_4D9AE0(a1, (int)&v40, a3, a4, (unsigned __int8 *)a7, v45); v46 -= v45; v8 = (char *)a7 + v45; v28 = sub_4D9B50(a1, (int)&v44, *(_DWORD *)v27, *(_DWORD *)(v27 + 4), a6, v24); a3 = *(_DWORD *)v28; a4 = *(_DWORD *)(v28 + 4); } else { v26 = sub_4D9B50(a1, (int)&v44, a3, a4, a6, v24); a3 = *(_DWORD *)v26; a4 = *(_DWORD *)(v26 + 4); } v24 = 0; } v29 = (*(int (__stdcall **)(unsigned int))(*(_DWORD *)v38 + 8))(v36); LOBYTE(v42) = v29; v30 = sub_4D9BC0(a1, (int)&v37, a3, a4, v8, v46, v29); v31 = v43; v32 = v24; v33 = v39; v52 = *(_DWORD *)v30; v34 = *(_DWORD *)(v30 + 4); *(_DWORD *)(v43 + 32) = 0; *(_DWORD *)(v31 + 36) = 0; sub_4D9B50(a1, v33, v52, v34, a6, v32); if ( v48 >= 0x10 ) operator delete(v47); return v33; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004E0830) -------------------------------------------------------- char __thiscall sub_4E0830(int this, char *a2) { int v2; // ebx@1 int v3; // eax@2 char *v4; // esi@3 signed __int64 v5; // qax@3 int v6; // eax@3 char *v7; // edi@3 int v8; // ST08_4@4 int v9; // esi@4 void *v10; // edi@7 int v12; // ecx@11 int v13; // edx@11 int v14; // eax@13 void *v15; // eax@15 void *v16; // ecx@15 char *v17; // edx@15 signed int v18; // ecx@17 int v19; // eax@18 int v20; // eax@20 int v21; // ecx@20 void *v22; // ST10_4@20 void **v23; // eax@20 void *v24; // eax@20 void *v25; // edi@21 int v26; // ecx@22 int v27; // [sp+18h] [bp-14h]@10 char *v28; // [sp+1Ch] [bp-10h]@3 void *v29; // [sp+34h] [bp+8h]@4 v2 = this; if ( *(_WORD *)(this + 12) != -1 || (v3 = *(_DWORD *)(this + 16)) == 0 || ((v4 = &a2[*(_DWORD *)(v3 + 4)], v5 = 280i64 * (unsigned int)&a2[*(_DWORD *)(v3 + 4)], v28 = v4, v6 = unknown_libname_130(((v5 | -(BYTE4(v5) != 0)) + 4) | -__CFADD__(v5 | -(BYTE4(v5) != 0), 4)), v7 = v4, !v6) ? (v29 = 0) : (v8 = (int)v4, v9 = v6 + 4, *(_DWORD *)v6 = v7, _eh_vector_constructor_iterator_( (void *)(v6 + 4), 0x118u, v8, (int)sub_4DD890, (void (__thiscall *)(void *))sub_4DA220), v29 = (void *)v9), !v29) ) return 0; v10 = (void *)unknown_libname_130(12 * (_DWORD)(v7 + 1) | -((unsigned __int8)(12 * (unsigned __int64)(unsigned int)(v7 + 1) >> 32) != 0)); if ( !v10 ) { _LN21(v29, 0x118u, *((_DWORD *)v29 - 1), (void (__thiscall *)(void *))sub_4DA220); sub_6530A4((char *)v29 - 4); return 0; } v27 = 0; if ( *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4) > 0 ) { v12 = -268 - (_DWORD)v29; v13 = (int)((char *)v29 + 268); while ( 1 ) { v14 = v13 + v12 + **(_DWORD **)(v2 + 16); memcpy((void *)(v13 - 256), (const void *)(v14 + 12), 0x100u); *(_DWORD *)v13 = *(_DWORD *)(v14 + 268); *(_DWORD *)(v13 + 4) = *(_DWORD *)(v14 + 272); *(_DWORD *)(v13 + 8) = *(_DWORD *)(v14 + 276); *(_DWORD *)(v14 + 272) = 0; *(_DWORD *)(v14 + 276) = 0; v13 += 280; ++v27; if ( v27 >= *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4) ) break; v12 = -268 - (_DWORD)v29; } } memmove(v10, *(const void **)(v2 + 8), 12 * *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4)); *((_WORD *)v10 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 4) + 3) = (_WORD)v28; *((_WORD *)v10 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 6) + 2) = (_WORD)v28; if ( (signed int)v28 > 0 ) { v15 = v29; v16 = v10; v17 = v28; do { *(_DWORD *)v16 = v15; v15 = (char *)v15 + 280; v16 = (char *)v16 + 12; --v17; } while ( v17 ); } v18 = *(_WORD *)(v2 + 4); if ( v18 < (signed int)v28 ) { v19 = (int)((char *)v10 + 12 * v18 + 4); do { *(_WORD *)v19 = v18 + 1; *(_BYTE *)(v19 + 4) = 0; *(_WORD *)(v19 + 2) = v18++ - 1; v19 += 12; } while ( v18 < (signed int)v28 ); } *((_WORD *)v10 + 6 * *(_WORD *)(v2 + 4) + 3) = (_WORD)v28 - 1; *((_WORD *)v10 + 6 * (_DWORD)v28 - 4) = *(_WORD *)(v2 + 4); v20 = (int)((char *)v10 + 12 * (_DWORD)v28); v21 = *(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4); *(_DWORD *)v20 = *(_DWORD *)v21; *(_DWORD *)(v20 + 4) = *(_DWORD *)(v21 + 4); *(_DWORD *)(v20 + 8) = *(_DWORD *)(v21 + 8); v22 = *(void **)(v2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(v2 + 4); sub_6530A4(v22); v23 = *(void ***)(v2 + 16); *(_DWORD *)(v2 + 8) = v10; v24 = *v23; if ( v24 ) { v25 = (char *)v24 - 4; _LN21(v24, 0x118u, *((_DWORD *)v24 - 1), (void (__thiscall *)(void *))sub_4DA220); sub_6530A4(v25); } **(_DWORD **)(v2 + 16) = v29; v26 = *(_DWORD *)(v2 + 16); *(_WORD *)(v2 + 4) = (_WORD)v28; *(_DWORD *)(v26 + 4) = (unsigned __int16)v28; *(_WORD *)(v2 + 14) = (_WORD)v28; return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004E0B10) -------------------------------------------------------- void *__thiscall sub_4E0B10(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // eax@2 int v5; // edi@3 int v6; // eax@6 int v7; // eax@7 v1 = this; *(_DWORD *)this = &off_6C61E8; v2 = operator new(8u); v3 = v2; if ( v2 ) { *(_DWORD *)(v2 + 4) = 4; v4 = unknown_libname_130(1124); if ( v4 ) { v5 = v4 + 4; *(_DWORD *)v4 = 4; _eh_vector_constructor_iterator_( (void *)(v4 + 4), 0x118u, 4, (int)sub_4DD890, (void (__thiscall *)(void *))sub_4DA220); *(_DWORD *)v3 = v5; } else { *(_DWORD *)v3 = 0; } } else { v3 = 0; } *((_DWORD *)v1 + 2) = v3; v6 = operator new(0x18u); if ( v6 ) v7 = sub_4DCF30(v6, *((_DWORD *)v1 + 2)); else v7 = 0; *((_DWORD *)v1 + 1) = v7; return v1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6C61E8: using guessed type int (__stdcall *off_6C61E8)(int); //----- (004E0C10) -------------------------------------------------------- void __thiscall sub_4E0C10(int this) { int v1; // esi@1 void *v2; // edi@1 void *v3; // eax@2 void *v4; // ebx@3 int v5; // ecx@5 int v6; // [sp+1Ch] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6C61E8; v2 = *(void **)(this + 8); v6 = 0; if ( v2 ) { v3 = *(void **)v2; if ( *(_DWORD *)v2 ) { v4 = (char *)v3 - 4; _LN21(v3, 0x118u, *((_DWORD *)v3 - 1), (void (__thiscall *)(void *))sub_4DA220); sub_6530A4(v4); } operator delete(v2); } v5 = *(_DWORD *)(v1 + 4); if ( v5 ) (**(void (__stdcall ***)(_DWORD))v5)(1); *(_DWORD *)v1 = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); // 6C61E8: using guessed type int (__stdcall *off_6C61E8)(int); //----- (004E0CB0) -------------------------------------------------------- signed int __thiscall sub_4E0CB0(void *this, int a2) { int v2; // esi@1 void *v3; // ebx@1 int v4; // ecx@3 int v5; // eax@4 int v6; // ecx@5 signed int result; // eax@9 char v8; // [sp+10h] [bp-104h]@1 unsigned int v9; // [sp+110h] [bp-4h]@1 int v10; // [sp+114h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v2 = a2; v3 = this; v8 = 0; if ( sub_4D97C0(a2, &v8) ) { while ( !strcmp(&v8, "open") ) { memcpy((void *)(v2 + 12), &v8, 0x100u); v4 = *((_DWORD *)v3 + 1); if ( *(_WORD *)(v4 + 12) == -1 || (v5 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v4 + 8))(*(_WORD *)(v4 + 12))) == 0 ) { sub_4E0830(*((_DWORD *)v3 + 1), (char *)4); v6 = *((_DWORD *)v3 + 1); if ( *(_WORD *)(v6 + 12) == -1 ) break; v5 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 8))(*(_WORD *)(v6 + 12)); if ( !v5 ) break; } v2 = a2; if ( !(unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v5)(v5, a2) ) break; v8 = 0; if ( !sub_4D97C0(a2, &v8) ) goto LABEL_9; } result = 0; } else { LABEL_9: result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (004E0DE0) -------------------------------------------------------- void *__thiscall sub_4E0DE0(void *this) { void *v1; // esi@1 v1 = this; sub_4E0B10(this); return v1; } //----- (004E0E00) -------------------------------------------------------- void **__thiscall sub_4E0E00(void **this, void **a2) { void **v2; // esi@1 v2 = this; if ( this != a2 ) { if ( (unsigned int)this[5] >= 0x10 ) operator delete(*this); v2[5] = (void *)15; v2[4] = 0; *(_BYTE *)v2 = 0; if ( (unsigned int)a2[5] >= 0x10 ) { *v2 = *a2; *a2 = 0; } else { memmove_0(v2, a2, (size_t)((char *)a2[4] + 1)); } v2[4] = a2[4]; v2[5] = a2[5]; a2[4] = 0; a2[5] = 0; } return v2; } //----- (004E0E80) -------------------------------------------------------- int __thiscall sub_4E0E80(void *this, int a2, int a3, int a4, int a5, char a6, unsigned __int8 a7) { bool v7; // zf@1 int v8; // ebx@1 int v10; // eax@3 int v11; // eax@3 int v12; // edi@3 unsigned int v13; // eax@4 int v14; // edi@7 int v15; // edi@7 int v16; // eax@10 int v17; // eax@12 unsigned int v18; // edi@15 int v19; // ecx@15 int v20; // edi@19 int v21; // eax@22 unsigned __int8 *v22; // eax@23 int v23; // eax@25 int v24; // ecx@25 int v25; // eax@25 int v26; // esi@25 void *v27; // [sp-8h] [bp-7Ch]@11 char v28; // [sp+Ch] [bp-68h]@22 char v29; // [sp+10h] [bp-64h]@7 char v30; // [sp+14h] [bp-60h]@25 void *v31; // [sp+18h] [bp-5Ch]@3 int v32; // [sp+1Ch] [bp-58h]@3 int v33; // [sp+20h] [bp-54h]@1 int v34; // [sp+24h] [bp-50h]@4 int v35; // [sp+28h] [bp-4Ch]@1 void *v36; // [sp+2Ch] [bp-48h]@10 unsigned int v37; // [sp+40h] [bp-34h]@10 void *v38; // [sp+48h] [bp-2Ch]@9 unsigned int v39; // [sp+58h] [bp-1Ch]@9 unsigned int v40; // [sp+5Ch] [bp-18h]@9 unsigned int v41; // [sp+64h] [bp-10h]@1 int v42; // [sp+70h] [bp-4h]@3 int v43; // [sp+74h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v7 = (*(_DWORD *)(a5 + 20) & 0x4000) == 0; v8 = (int)this; v33 = a2; LOBYTE(v35) = a6; if ( v7 ) { (*(void (__stdcall **)(int, int, int, int, int, _DWORD))(*(_DWORD *)this + 28))(a2, a3, a4, a5, v35, a7); return a2; } v10 = sub_4D5680(a5, (int)&v32); v42 = 0; v11 = sub_4DD750(v10); v12 = v32; v31 = (void *)v11; v42 = -1; if ( v32 ) { v34 = v32; std::_Lockit::_Lockit(0); v13 = *(_DWORD *)(v12 + 4); if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)(v12 + 4) = v13 - 1; v14 = -(*(_DWORD *)(v12 + 4) == 0); std::_Lockit::__Lockit(&v29); v15 = v34 & v14; if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } v40 = 15; v39 = 0; LOBYTE(v38) = 0; v42 = 1; if ( a7 ) { v16 = sub_4DC4D0(v31, (int)&v36); LOBYTE(v42) = 2; sub_4E0E00(&v38, (void **)v16); LOBYTE(v42) = 1; if ( v37 >= 0x10 ) { v27 = v36; LABEL_14: operator delete(v27); goto LABEL_15; } } else { v17 = sub_4DC4B0(v31, (int)&v36); LOBYTE(v42) = 3; sub_4E0E00(&v38, (void **)v17); LOBYTE(v42) = 1; if ( v37 >= 0x10 ) { v27 = v36; goto LABEL_14; } } LABEL_15: v18 = *(_DWORD *)(a5 + 32); v19 = v39; if ( *(_DWORD *)(a5 + 36) >= 0 && (*(_DWORD *)(a5 + 36) > 0 || v18) && v18 > v39 ) v20 = v18 - v39; else v20 = 0; if ( (*(_DWORD *)(a5 + 20) & 0x1C0) != 64 ) { v21 = sub_4D9B50(v8, (int)&v28, a3, a4, v35, v20); a3 = *(_DWORD *)v21; v19 = v39; a4 = *(_DWORD *)(v21 + 4); v20 = 0; } v22 = (unsigned __int8 *)v38; if ( v40 < 0x10 ) v22 = (unsigned __int8 *)&v38; v23 = sub_4D9AE0(v8, (int)&v30, a3, a4, v22, v19); v24 = *(_DWORD *)v23; v25 = *(_DWORD *)(v23 + 4); *(_DWORD *)(a5 + 32) = 0; *(_DWORD *)(a5 + 36) = 0; v26 = v33; sub_4D9B50(v8, v33, v24, v25, v35, v20); if ( v40 >= 0x10 ) operator delete(v38); return v26; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (004E10A0) -------------------------------------------------------- int __thiscall sub_4E10A0(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7) { int v7; // esi@1 int v8; // eax@1 int v9; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v12; // [sp+4Ch] [bp-Ch]@1 unsigned int v13; // [sp+54h] [bp-4h]@1 int v14; // [sp+58h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v7 = this; v8 = sub_4D8E20(this, (int)&v12, (int)&unk_6C61F8, *(_DWORD *)(a5 + 20)); v9 = sprintf_s(&DstBuf, 0x40u, (const char *)v8, a7); sub_4E05A0(v7, a2, a3, a4, a5, a6, &DstBuf, v9); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E1120) -------------------------------------------------------- int __thiscall sub_4E1120(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7) { int v7; // esi@1 int v8; // eax@1 int v9; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v12; // [sp+4Ch] [bp-Ch]@1 unsigned int v13; // [sp+54h] [bp-4h]@1 int v14; // [sp+58h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v7 = this; v8 = sub_4D8E20(this, (int)&v12, (int)&unk_6C61FC, *(_DWORD *)(a5 + 20)); v9 = sprintf_s(&DstBuf, 0x40u, (const char *)v8, a7); sub_4E05A0(v7, a2, a3, a4, a5, a6, &DstBuf, v9); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E11A0) -------------------------------------------------------- int __thiscall sub_4E11A0(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8) { int v8; // esi@1 int v9; // eax@1 int v10; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v13; // [sp+4Ch] [bp-Ch]@1 unsigned int v14; // [sp+54h] [bp-4h]@1 int v15; // [sp+58h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v8 = this; v9 = sub_4D8E20(this, (int)&v13, (int)&unk_6C6200, *(_DWORD *)(a5 + 20)); v10 = sprintf_s(&DstBuf, 0x40u, (const char *)v9, a7, a8); sub_4E05A0(v8, a2, a3, a4, a5, a6, &DstBuf, v10); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E1220) -------------------------------------------------------- int __thiscall sub_4E1220(int this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, int a8) { int v8; // esi@1 int v9; // eax@1 int v10; // eax@1 char DstBuf; // [sp+Ch] [bp-4Ch]@1 char v13; // [sp+4Ch] [bp-Ch]@1 unsigned int v14; // [sp+54h] [bp-4h]@1 int v15; // [sp+58h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v8 = this; v9 = sub_4D8E20(this, (int)&v13, (int)&unk_6C6204, *(_DWORD *)(a5 + 20)); v10 = sprintf_s(&DstBuf, 0x40u, (const char *)v9, a7, a8); sub_4E05A0(v8, a2, a3, a4, a5, a6, &DstBuf, v10); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E12A0) -------------------------------------------------------- int __thiscall sub_4E12A0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7) { signed int v7; // esi@1 unsigned int v8; // eax@1 size_t v9; // edi@1 unsigned __int64 v10; // st7@11 int v11; // ecx@11 size_t v12; // esi@11 int v13; // edx@11 unsigned __int64 v14; // st7@14 unsigned __int64 v15; // st6@14 double v16; // st5@16 double v17; // st4@16 double v18; // st5@17 double v19; // qt2@18 double v20; // qtt@20 double v21; // st4@20 double v22; // qt0@21 unsigned __int64 v23; // st5@21 double v24; // st7@21 double v25; // st5@25 double v26; // qt1@26 unsigned __int8 v27; // cf@29 double v28; // qt2@29 unsigned __int64 v29; // st5@29 double v30; // st6@29 double v31; // st5@29 char *v32; // eax@35 int v33; // edx@39 int v34; // ecx@40 int v35; // eax@45 int v37; // [sp+14h] [bp-8Ch]@1 signed int v38; // [sp+1Ch] [bp-84h]@9 size_t v39; // [sp+20h] [bp-80h]@11 char v40; // [sp+27h] [bp-79h]@14 char DstBuf; // [sp+28h] [bp-78h]@45 char Format; // [sp+94h] [bp-Ch]@35 char v43; // [sp+95h] [bp-Bh]@35 char v44; // [sp+96h] [bp-Ah]@36 unsigned int v45; // [sp+9Ch] [bp-4h]@1 int v46; // [sp+A0h] [bp+0h]@1 v45 = (unsigned int)&v46 ^ __security_cookie; v7 = *(_DWORD *)(a5 + 24); v8 = *(_DWORD *)(a5 + 28); v9 = 0; v37 = (int)this; if ( (signed int)v8 <= 0 && ((v8 & 0x80000000u) != 0 || (unsigned int)v7 <= 0) && !(*(_DWORD *)(a5 + 20) & 0x2000) ) { v7 = 6; v8 = 0; } if ( (v8 & 0x80000000u) != 0 || (signed int)v8 <= 0 && (unsigned int)v7 <= 0x24 ) v38 = v7; else v38 = 36; v10 = a7; v11 = (__PAIR__(v8, v7) - v38) >> 32; v12 = v7 - v38; v13 = *(_DWORD *)(a5 + 20); v39 = 0; if ( (*(_DWORD *)(a5 + 20) & 0x3000) == 8192 && *(double *)&a7 != 0.5 * *(double *)&a7 ) { if ( *(double *)&a7 >= 0.0 ) { v40 = 0; v15 = a7; *(double *)&v14 = 0.0; } else { *(double *)&v14 = 0.0; v40 = 1; *(double *)&v15 = -*(double *)&a7; } v16 = 1.0e35; v17 = 1.0e10; if ( *(double *)&v15 >= 1.0e35 ) { while ( v39 < 0x1388 ) { *(double *)&v15 = *(double *)&v15 / v17; v39 += 10; v20 = v17; v21 = v16; v18 = v20; if ( v21 > *(double *)&v15 ) goto LABEL_21; v19 = v21; v17 = v18; v16 = v19; } } v18 = v17; LABEL_21: v22 = v18; v23 = v14; v24 = v22; if ( *(double *)&v23 < *(double *)&v15 && v11 >= 0 && (v11 > 0 || v12 >= 0xA) ) { v25 = 1.0e-35; while ( v25 >= *(double *)&v15 && v9 < 0x1388 ) { v27 = __CFADD__(v12, -10); v12 -= 10; v28 = v25; v29 = v15; v30 = v28; v11 = v27 + v11 - 1; v31 = *(double *)&v29 * v24; v9 += 10; if ( v11 <= 0 && (v11 < 0 || v12 < 0xA) ) { *(double *)&v15 = v31; break; } v26 = v31; v25 = v30; *(double *)&v15 = v26; } } v10 = v15; if ( v40 ) *(double *)&v10 = -*(double *)&v15; } Format = 37; v32 = &v43; if ( v13 & 0x20 ) { v43 = 43; v32 = &v44; } if ( v13 & 0x10 ) *v32++ = 35; v33 = v13 & 0x3000; *(_WORD *)v32 = 10798; if ( v33 == 8192 ) { LOBYTE(v34) = 102; } else { if ( v33 == 12288 ) { LOBYTE(v34) = 97; } else { LOBYTE(v11) = v33 != 4096; v34 = 2 * v11 + 101; } } v32[2] = v34; v32[3] = 0; v35 = sprintf_s(&DstBuf, 0x6Cu, &Format, v38, v10, v10 >> 32); sub_4E0030(v37, a2, a3, a4, a5, a6, &DstBuf, v39, v9, v12, v35); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E14B0) -------------------------------------------------------- int __thiscall sub_4E14B0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, unsigned __int64 a7) { signed int v7; // esi@1 unsigned int v8; // eax@1 size_t v9; // edi@1 int v10; // ecx@11 size_t v11; // esi@11 int v12; // edx@11 unsigned __int64 v13; // st6@12 double v14; // st5@14 double v15; // st4@14 double v16; // st5@15 double v17; // qt0@17 double v18; // qt1@19 double v19; // st4@19 double v20; // st7@20 double v21; // st5@24 double v22; // qtt@25 unsigned __int8 v23; // cf@28 double v24; // qt0@28 unsigned __int64 v25; // st5@28 double v26; // st6@28 double v27; // st5@28 unsigned __int64 v28; // st7@32 char *v29; // eax@36 int v30; // edx@40 int v31; // ecx@41 int v32; // eax@45 int v34; // [sp+14h] [bp-8Ch]@1 signed int v35; // [sp+1Ch] [bp-84h]@9 size_t v36; // [sp+20h] [bp-80h]@11 char v37; // [sp+27h] [bp-79h]@13 char DstBuf; // [sp+28h] [bp-78h]@45 char Format; // [sp+94h] [bp-Ch]@36 char v40; // [sp+95h] [bp-Bh]@36 char v41; // [sp+96h] [bp-Ah]@37 unsigned int v42; // [sp+9Ch] [bp-4h]@1 int v43; // [sp+A0h] [bp+0h]@1 v42 = (unsigned int)&v43 ^ __security_cookie; v7 = *(_DWORD *)(a5 + 24); v8 = *(_DWORD *)(a5 + 28); v9 = 0; v34 = (int)this; if ( (signed int)v8 <= 0 && ((v8 & 0x80000000u) != 0 || (unsigned int)v7 <= 0) && !(*(_DWORD *)(a5 + 20) & 0x2000) ) { v7 = 6; v8 = 0; } if ( (v8 & 0x80000000u) != 0 || (signed int)v8 <= 0 && (unsigned int)v7 <= 0x24 ) v35 = v7; else v35 = 36; v10 = (__PAIR__(v8, v7) - v35) >> 32; v11 = v7 - v35; v12 = *(_DWORD *)(a5 + 20); v36 = 0; if ( (*(_DWORD *)(a5 + 20) & 0x3000) == 8192 ) { v13 = a7; if ( *(double *)&a7 >= 0.0 ) { v37 = 0; } else { v37 = 1; *(double *)&v13 = -*(double *)&a7; } v14 = 1.0e35; v15 = 1.0e10; if ( *(double *)&v13 >= 1.0e35 ) { while ( v36 < 0x1388 ) { *(double *)&v13 = *(double *)&v13 / v15; v36 += 10; v18 = v15; v19 = v14; v16 = v18; if ( v19 > *(double *)&v13 ) goto LABEL_20; v17 = v19; v15 = v16; v14 = v17; } } v16 = v15; LABEL_20: v20 = v16; if ( *(double *)&v13 > 0.0 && v10 >= 0 && (v10 > 0 || v11 >= 0xA) ) { v21 = 1.0e-35; while ( v21 >= *(double *)&v13 && v9 < 0x1388 ) { v23 = __CFADD__(v11, -10); v11 -= 10; v24 = v21; v25 = v13; v26 = v24; v10 = v23 + v10 - 1; v27 = *(double *)&v25 * v20; v9 += 10; if ( v10 <= 0 && (v10 < 0 || v11 < 0xA) ) { *(double *)&v13 = v27; break; } v22 = v27; v21 = v26; *(double *)&v13 = v22; } } v28 = v13; if ( v37 ) *(double *)&v28 = -*(double *)&v13; } else { v28 = a7; } Format = 37; v29 = &v40; if ( v12 & 0x20 ) { v40 = 43; v29 = &v41; } if ( v12 & 0x10 ) *v29++ = 35; v30 = v12 & 0x3000; *(_WORD *)v29 = 10798; v29[2] = 76; if ( v30 == 8192 ) { LOBYTE(v31) = 102; } else { if ( v30 == 12288 ) { LOBYTE(v31) = 97; } else { LOBYTE(v10) = v30 != 4096; v31 = 2 * v10 + 101; } } v29[3] = v31; v29[4] = 0; v32 = sprintf_s(&DstBuf, 0x6Cu, &Format, v35, v28, v28 >> 32); sub_4E0030(v34, a2, a3, a4, a5, a6, &DstBuf, v36, v9, v11, v32); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E16B0) -------------------------------------------------------- int __thiscall sub_4E16B0(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7) { int v7; // edi@1 int v8; // eax@1 char DstBuf; // [sp+Ch] [bp-44h]@1 unsigned int v11; // [sp+4Ch] [bp-4h]@1 int v12; // [sp+50h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v7 = (int)this; v8 = sprintf_s(&DstBuf, 0x40u, "%p", a7); sub_4E05A0(v7, a2, a3, a4, a5, a6, &DstBuf, v8); return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E1710) -------------------------------------------------------- int __thiscall sub_4E1710(int this, int a2) { char *v2; // ecx@1 v2 = *(char **)(this + 8); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; sub_4241C0(a2, v2, strlen(v2)); return a2; } //----- (004E1760) -------------------------------------------------------- int __thiscall sub_4E1760(int this, int a2) { char *v2; // ecx@1 v2 = *(char **)(this + 16); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; sub_4241C0(a2, v2, strlen(v2)); return a2; } //----- (004E17B0) -------------------------------------------------------- int __thiscall sub_4E17B0(int this, int a2) { char *v2; // ecx@1 v2 = *(char **)(this + 20); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; sub_4241C0(a2, v2, strlen(v2)); return a2; } //----- (004E1800) -------------------------------------------------------- int __thiscall sub_4E1800(void *this, char *a2) { return sub_4241C0((int)((char *)this + 12), a2, strlen(a2)); } //----- (004E1830) -------------------------------------------------------- void *__thiscall sub_4E1830(int this, void *a2) { int v2; // edx@1 unsigned int *v3; // eax@2 unsigned int v4; // eax@3 char *v5; // ecx@5 signed int v6; // edi@5 int v7; // edx@9 int v8; // eax@10 char *v9; // ecx@10 void *v11; // [sp-8h] [bp-60h]@7 void *v12; // [sp+10h] [bp-48h]@11 int v13; // [sp+20h] [bp-38h]@11 unsigned int v14; // [sp+24h] [bp-34h]@11 void *v15; // [sp+2Ch] [bp-2Ch]@5 int v16; // [sp+3Ch] [bp-1Ch]@5 unsigned int v17; // [sp+40h] [bp-18h]@5 unsigned int v18; // [sp+48h] [bp-10h]@1 int v19; // [sp+54h] [bp-4h]@5 int v20; // [sp+58h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v2 = *(_DWORD *)(this + 64); if ( !(v2 & 2) ) { v3 = *(unsigned int **)(this + 36); if ( *v3 ) { v4 = *v3; if ( *(_DWORD *)(this + 60) >= v4 ) v4 = *(_DWORD *)(this + 60); v5 = (char *)**(_DWORD **)(this + 20); v6 = 15; v17 = 15; v16 = 0; LOBYTE(v15) = 0; sub_4241C0((int)&v15, v5, v4 - (_DWORD)v5); v19 = 0; LABEL_6: *((_DWORD *)a2 + 5) = v6; *((_DWORD *)a2 + 4) = 0; *(_BYTE *)a2 = 0; sub_4E0E00((void **)a2, &v15); if ( v17 >= 0x10 ) { v11 = v15; LABEL_13: operator delete(v11); return a2; } return a2; } } if ( !(v2 & 4) ) { v7 = *(_DWORD *)(this + 32); if ( *(_DWORD *)v7 ) { v8 = *(_DWORD *)v7 + **(_DWORD **)(this + 48); v9 = (char *)**(_DWORD **)(this + 16); v6 = 15; v17 = 15; v16 = 0; LOBYTE(v15) = 0; sub_4241C0((int)&v15, v9, v8 - (_DWORD)v9); v19 = 1; goto LABEL_6; } } v14 = 15; v13 = 0; LOBYTE(v12) = 0; *((_DWORD *)a2 + 5) = 15; *((_DWORD *)a2 + 4) = 0; v19 = 2; *(_BYTE *)a2 = 0; sub_4E0E00((void **)a2, &v12); if ( v14 >= 0x10 ) { v11 = v12; goto LABEL_13; } return a2; } // 86FEB8: using guessed type int __security_cookie; //----- (004E1960) -------------------------------------------------------- void *__thiscall sub_4E1960(void *this, void *a2) { sub_4E1830((int)((char *)this + 24), a2); return a2; } //----- (004E1990) -------------------------------------------------------- char __thiscall sub_4E1990(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // eax@3 void *v5; // eax@3 void *v6; // eax@3 bool v7; // cf@3 const char *v8; // edi@6 int v9; // eax@6 int v10; // esi@6 int v11; // esi@8 __int16 v12; // ax@14 int v13; // eax@14 unsigned int v15; // [sp-4h] [bp-F0h]@1 int *v16; // [sp-4h] [bp-F0h]@13 int v17; // [sp+10h] [bp-DCh]@1 int v18; // [sp+18h] [bp-D4h]@1 int v19; // [sp+1Ch] [bp-D0h]@1 int v20; // [sp+20h] [bp-CCh]@1 int (__thiscall **v21)(void *, char); // [sp+28h] [bp-C4h]@1 int v22; // [sp+64h] [bp-88h]@3 int v23; // [sp+68h] [bp-84h]@3 int (__stdcall **v24)(char); // [sp+70h] [bp-7Ch]@1 int v25; // [sp+7Ch] [bp-70h]@2 int *v26; // [sp+A8h] [bp-44h]@1 int v27; // [sp+ACh] [bp-40h]@1 char v28; // [sp+B0h] [bp-3Ch]@1 int v29; // [sp+B8h] [bp-34h]@1 int v30; // [sp+BCh] [bp-30h]@1 void *v31; // [sp+C0h] [bp-2Ch]@3 int v32; // [sp+D0h] [bp-1Ch]@13 unsigned int v33; // [sp+D4h] [bp-18h]@8 unsigned int v34; // [sp+DCh] [bp-10h]@1 int v35; // [sp+E8h] [bp-4h]@1 int v36; // [sp+ECh] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v15 = (unsigned int)&v36 ^ __security_cookie; v3 = this; v29 = a3; v17 = (int)&unk_6C622C; v20 = (int)&unk_6C6224; v35 = 0; v30 = 1; v24 = &off_6C5C14; v18 = 0; v19 = 0; sub_4D6640((int)&v24); v26 = (int *)&v21; v27 = 0; v28 = sub_4DC510((int)&v24, 32); if ( !v26 ) sub_4D6510((int)&v24, v25 | 4, 0); *(int *)((char *)&v20 + *(_DWORD *)(v20 + 4)) = (int)&off_6C5C0C; *(int *)((char *)&v17 + *(_DWORD *)(v17 + 4)) = (int)&off_6C5C1C; *(int *)((char *)&v17 + *(_DWORD *)(v17 + 4)) = (int)&off_6C5EC0; v35 = 5; sub_4D8A00(&v21); v21 = &off_6C5D9C; v22 = 0; v23 = 0; v35 = 7; v4 = sub_4DD1F0(&v20, (int)((char *)v3 + 12)); v5 = sub_4DD490(v4, "Parameter Index : "); sub_4DFE40(v5, a2); v6 = sub_4E1960(&v17, &v31); v7 = *((_DWORD *)v6 + 5) < 0x10u; LOBYTE(v35) = 8; if ( v7 ) v30 = (int)v6; else v30 = *(_DWORD *)v6; v8 = (char *)v3 + 40; v9 = (*(int (__stdcall **)(char *, _DWORD, unsigned int))(**(_DWORD **)(*((_DWORD *)v3 + 1) + 4 * a2) + 8))( (char *)v3 + 40, *((_DWORD *)v3 + 2), v15); v10 = v9 != 0; if ( !v9 ) sub_639100(&unk_86DDD8, v30, 0); LOBYTE(v35) = 7; v11 = v10 == 0; if ( v33 >= 0x10 ) operator delete(v31); if ( v11 ) { sub_4E1960(&v17, &v31); if ( v33 >= 0x10 ) operator delete(v31); v33 = 15; v32 = 0; LOBYTE(v31) = 0; v35 = -1; sub_4D98A0(&v24); v16 = (int *)&v24; } else { v12 = sub_4D5840(v8, 0); v13 = sub_54DE90(&unk_13253630, v12); *(_DWORD *)v29 = v13; v35 = -1; if ( v13 ) { sub_4D98A0(&v24); v24 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v24); return 1; } sub_4D98A0(&v24); v16 = (int *)&v24; } v24 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(v16); return 0; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); // 6C5D9C: using guessed type int (__thiscall *off_6C5D9C)(void *, char); // 6C5EC0: using guessed type int (__stdcall *off_6C5EC0)(char); // 86FEB8: using guessed type int __security_cookie; //----- (004E1C00) -------------------------------------------------------- char __thiscall sub_4E1C00(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // eax@3 void *v5; // eax@3 void *v6; // eax@3 bool v7; // cf@3 const char *v8; // edi@6 int v9; // eax@6 int v10; // esi@6 int v11; // esi@8 char result; // al@13 unsigned int v13; // [sp-4h] [bp-F0h]@1 int v14; // [sp+10h] [bp-DCh]@1 int v15; // [sp+18h] [bp-D4h]@1 int v16; // [sp+1Ch] [bp-D0h]@1 int v17; // [sp+20h] [bp-CCh]@1 int (__thiscall **v18)(void *, char); // [sp+28h] [bp-C4h]@1 int v19; // [sp+64h] [bp-88h]@3 int v20; // [sp+68h] [bp-84h]@3 int (__stdcall **v21)(char); // [sp+70h] [bp-7Ch]@1 int v22; // [sp+7Ch] [bp-70h]@2 int *v23; // [sp+A8h] [bp-44h]@1 int v24; // [sp+ACh] [bp-40h]@1 char v25; // [sp+B0h] [bp-3Ch]@1 int v26; // [sp+B8h] [bp-34h]@1 int v27; // [sp+BCh] [bp-30h]@1 void *v28; // [sp+C0h] [bp-2Ch]@3 int v29; // [sp+D0h] [bp-1Ch]@13 unsigned int v30; // [sp+D4h] [bp-18h]@8 unsigned int v31; // [sp+DCh] [bp-10h]@1 int v32; // [sp+E8h] [bp-4h]@1 int v33; // [sp+ECh] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v13 = (unsigned int)&v33 ^ __security_cookie; v3 = this; v26 = a3; v14 = (int)&unk_6C622C; v17 = (int)&unk_6C6224; v32 = 0; v27 = 1; v21 = &off_6C5C14; v15 = 0; v16 = 0; sub_4D6640((int)&v21); v23 = (int *)&v18; v24 = 0; v25 = sub_4DC510((int)&v21, 32); if ( !v23 ) sub_4D6510((int)&v21, v22 | 4, 0); *(int *)((char *)&v17 + *(_DWORD *)(v17 + 4)) = (int)&off_6C5C0C; *(int *)((char *)&v14 + *(_DWORD *)(v14 + 4)) = (int)&off_6C5C1C; *(int *)((char *)&v14 + *(_DWORD *)(v14 + 4)) = (int)&off_6C5EC0; v32 = 5; sub_4D8A00(&v18); v18 = &off_6C5D9C; v19 = 0; v20 = 0; v32 = 7; v4 = sub_4DD1F0(&v17, (int)((char *)v3 + 12)); v5 = sub_4DD490(v4, "Parameter Index : "); sub_4DFE40(v5, a2); v6 = sub_4E1960(&v14, &v28); v7 = *((_DWORD *)v6 + 5) < 0x10u; LOBYTE(v32) = 8; if ( v7 ) v27 = (int)v6; else v27 = *(_DWORD *)v6; v8 = (char *)v3 + 40; v9 = (*(int (__stdcall **)(char *, _DWORD, unsigned int))(**(_DWORD **)(*((_DWORD *)v3 + 1) + 4 * a2) + 8))( (char *)v3 + 40, *((_DWORD *)v3 + 2), v13); v10 = v9 != 0; if ( !v9 ) sub_639100(&unk_86DDD8, v27, 0); LOBYTE(v32) = 7; v11 = v10 == 0; if ( v30 >= 0x10 ) operator delete(v28); if ( v11 ) { sub_4E1960(&v14, &v28); if ( v30 >= 0x10 ) operator delete(v28); v30 = 15; v29 = 0; LOBYTE(v28) = 0; v32 = -1; sub_4D98A0(&v21); v21 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v21); result = 0; } else { *(_DWORD *)v26 = sub_4D5840(v8, 0); v32 = -1; sub_4D98A0(&v21); v21 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v21); result = 1; } return result; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); // 6C5D9C: using guessed type int (__thiscall *off_6C5D9C)(void *, char); // 6C5EC0: using guessed type int (__stdcall *off_6C5EC0)(char); // 86FEB8: using guessed type int __security_cookie; //----- (004E1E50) -------------------------------------------------------- char __thiscall sub_4E1E50(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // eax@3 void *v5; // eax@3 void *v6; // eax@3 bool v7; // cf@3 char *v8; // edi@6 int v9; // eax@6 int v10; // esi@6 int v11; // esi@8 char result; // al@13 unsigned int v13; // [sp-4h] [bp-F0h]@1 int v14; // [sp+10h] [bp-DCh]@1 int v15; // [sp+18h] [bp-D4h]@1 int v16; // [sp+1Ch] [bp-D0h]@1 int v17; // [sp+20h] [bp-CCh]@1 int (__thiscall **v18)(void *, char); // [sp+28h] [bp-C4h]@1 int v19; // [sp+64h] [bp-88h]@3 int v20; // [sp+68h] [bp-84h]@3 int (__stdcall **v21)(char); // [sp+70h] [bp-7Ch]@1 int v22; // [sp+7Ch] [bp-70h]@2 int *v23; // [sp+A8h] [bp-44h]@1 int v24; // [sp+ACh] [bp-40h]@1 char v25; // [sp+B0h] [bp-3Ch]@1 int v26; // [sp+B8h] [bp-34h]@1 int v27; // [sp+BCh] [bp-30h]@1 void *v28; // [sp+C0h] [bp-2Ch]@3 int v29; // [sp+D0h] [bp-1Ch]@13 unsigned int v30; // [sp+D4h] [bp-18h]@8 unsigned int v31; // [sp+DCh] [bp-10h]@1 int v32; // [sp+E8h] [bp-4h]@1 int v33; // [sp+ECh] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v13 = (unsigned int)&v33 ^ __security_cookie; v3 = this; v26 = a3; v14 = (int)&unk_6C622C; v17 = (int)&unk_6C6224; v32 = 0; v27 = 1; v21 = &off_6C5C14; v15 = 0; v16 = 0; sub_4D6640((int)&v21); v23 = (int *)&v18; v24 = 0; v25 = sub_4DC510((int)&v21, 32); if ( !v23 ) sub_4D6510((int)&v21, v22 | 4, 0); *(int *)((char *)&v17 + *(_DWORD *)(v17 + 4)) = (int)&off_6C5C0C; *(int *)((char *)&v14 + *(_DWORD *)(v14 + 4)) = (int)&off_6C5C1C; *(int *)((char *)&v14 + *(_DWORD *)(v14 + 4)) = (int)&off_6C5EC0; v32 = 5; sub_4D8A00(&v18); v18 = &off_6C5D9C; v19 = 0; v20 = 0; v32 = 7; v4 = sub_4DD1F0(&v17, (int)((char *)v3 + 12)); v5 = sub_4DD490(v4, "Parameter Index : "); sub_4DFE40(v5, a2); v6 = sub_4E1960(&v14, &v28); v7 = *((_DWORD *)v6 + 5) < 0x10u; LOBYTE(v32) = 8; if ( v7 ) v27 = (int)v6; else v27 = *(_DWORD *)v6; v8 = (char *)v3 + 40; v9 = (*(int (__stdcall **)(char *, _DWORD, unsigned int))(**(_DWORD **)(*((_DWORD *)v3 + 1) + 4 * a2) + 8))( (char *)v3 + 40, *((_DWORD *)v3 + 2), v13); v10 = v9 != 0; if ( !v9 ) sub_639100(&unk_86DDD8, v27, 0); LOBYTE(v32) = 7; v11 = v10 == 0; if ( v30 >= 0x10 ) operator delete(v28); if ( v11 ) { sub_4E1960(&v14, &v28); if ( v30 >= 0x10 ) operator delete(v28); v30 = 15; v29 = 0; LOBYTE(v28) = 0; v32 = -1; sub_4D98A0(&v21); v21 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v21); result = 0; } else { sub_4241C0(v26, v8, strlen(v8)); v32 = -1; sub_4D98A0(&v21); v21 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v21); result = 1; } return result; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); // 6C5D9C: using guessed type int (__thiscall *off_6C5D9C)(void *, char); // 6C5EC0: using guessed type int (__stdcall *off_6C5EC0)(char); // 86FEB8: using guessed type int __security_cookie; //----- (004E20B0) -------------------------------------------------------- char __thiscall sub_4E20B0(int this, int a2) { void *v2; // ecx@1 char result; // al@2 v2 = *(void **)(this + 77292); if ( v2 ) { result = sub_549B60(v2, a2, 0); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); result = 0; } return result; } //----- (004E20F0) -------------------------------------------------------- void *__thiscall sub_4E20F0(void *this, __int16 a2, int a3, int a4, int a5) { void *v5; // esi@1 void *result; // eax@3 v5 = this; sub_427BE0(this); *((_DWORD *)v5 + 2) = a3; *(_DWORD *)v5 = &off_6C6274; *((_WORD *)v5 + 2) = a2; *((_DWORD *)v5 + 3) = 0; *((_DWORD *)v5 + 4) = a5; if ( a2 == -1 ) { if ( a4 ) { result = v5; if ( a4 == 2 ) *((_DWORD *)v5 + 5) = sub_427D90; else *((_DWORD *)v5 + 5) = sub_427C90; } else { *((_DWORD *)v5 + 5) = sub_427D10; result = v5; } } else { *((_DWORD *)v5 + 5) = sub_427C20; result = v5; } return result; } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); //----- (004E2170) -------------------------------------------------------- void __thiscall sub_4E2170(void *this) { *(_DWORD *)this = &off_6C6274; sub_427EB0(this); } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); //----- (004E2180) -------------------------------------------------------- void *__thiscall sub_4E2180(void *this, __int16 a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 void *result; // eax@3 v6 = this; sub_427BE0(this); *(_DWORD *)v6 = &off_6C627C; *((_DWORD *)v6 + 12) = 0; *((_DWORD *)v6 + 11) = 0; *((_DWORD *)v6 + 10) = 0; *((_DWORD *)v6 + 9) = 0; *((_DWORD *)v6 + 8) = 0; *((_DWORD *)v6 + 7) = 0; *((_DWORD *)v6 + 6) = 0; *((_DWORD *)v6 + 5) = 0; *((_DWORD *)v6 + 2) = a4; *((_DWORD *)v6 + 4) = a6; *((_WORD *)v6 + 2) = a2; *((_DWORD *)v6 + 3) = 0; *((_DWORD *)v6 + 5) = *(_DWORD *)a3; *((_DWORD *)v6 + 6) = *(_DWORD *)(a3 + 4); *((_DWORD *)v6 + 7) = *(_DWORD *)(a3 + 8); *((_DWORD *)v6 + 8) = *(_DWORD *)(a3 + 12); *((_DWORD *)v6 + 9) = *(_DWORD *)(a3 + 16); *((_DWORD *)v6 + 10) = *(_DWORD *)(a3 + 20); *((_DWORD *)v6 + 11) = *(_DWORD *)(a3 + 24); *((_DWORD *)v6 + 12) = *(_DWORD *)(a3 + 28); *((_DWORD *)v6 + 13) = 0; *((_DWORD *)v6 + 14) = 0; if ( a2 == -1 ) { if ( a5 ) { result = v6; if ( a5 == 2 ) *((_DWORD *)v6 + 15) = sub_429260; else *((_DWORD *)v6 + 15) = sub_429160; } else { *((_DWORD *)v6 + 15) = sub_4291E0; result = v6; } } else { *((_DWORD *)v6 + 15) = sub_4290E0; result = v6; } return result; } // 6C627C: using guessed type int (__stdcall *off_6C627C)(int, int, int); //----- (004E2270) -------------------------------------------------------- int __thiscall sub_4E2270(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@2 v2 = this; *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 42) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1064))(a2) + 4) + 500; *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 46) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1064))(a2) + 28); dword_14D9AE10 = dword_14D9AE14 & (dword_14D9AE10 + 1); *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 50) = *(_WORD *)&word_14D92E10[2 * dword_14D9AE10]; v3 = *((_DWORD *)v2 + 1667); if ( v3 + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 42) + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 50) - *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 46) >= 0 ) { result = v3 + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 42) + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 50) - *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 46); *((_DWORD *)v2 + 13 * *((_DWORD *)v2 + 1668) + 15) = result; } else { result = 0; *((_DWORD *)v2 + 13 * *((_DWORD *)v2 + 1668) + 15) = 0; } return result; } // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; //----- (004E2340) -------------------------------------------------------- int __thiscall sub_4E2340(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@2 v2 = this; *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 42) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1064))(a2) + 4); *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 46) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1064))(a2) + 28); *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 50) = 0; v3 = *((_DWORD *)v2 + 1667); if ( v3 + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 42) + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 50) - *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 46) >= 0 ) { result = v3 + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 42) + *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 50) - *(_DWORD *)((char *)v2 + 52 * *((_DWORD *)v2 + 1668) + 46); *((_DWORD *)v2 + 13 * *((_DWORD *)v2 + 1668) + 15) = result; } else { result = 0; *((_DWORD *)v2 + 13 * *((_DWORD *)v2 + 1668) + 15) = 0; } return result; } //----- (004E2400) -------------------------------------------------------- void __thiscall sub_4E2400(int this) { int v1; // ebx@1 int v2; // esi@2 int v3; // edi@3 int v4; // eax@3 int v5; // [sp+4h] [bp-4h]@1 v1 = 0; v5 = this; if ( *(_DWORD *)(this + 6672) > 0 ) { v2 = this + 40; do { v3 = *(_DWORD *)(v2 - 24); *(_BYTE *)v2 &= 0x80u; *(_BYTE *)v2 = ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2052))(v3) << 7) | *(_BYTE *)v2 & 0x7F; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1180))(v3); *(_BYTE *)(v2 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 56))(v4); ++v1; v2 += 52; } while ( v1 < *(_DWORD *)(v5 + 6672) ); } } //----- (004E2470) -------------------------------------------------------- int __cdecl sub_4E2470(int a1, int a2) { return *(_DWORD *)(a2 + 48) - *(_DWORD *)(a1 + 48); } //----- (004E2490) -------------------------------------------------------- char *__thiscall sub_4E2490(int this, char *a2) { int v2; // ecx@1 char *result; // eax@2 v2 = *(_DWORD *)(this + 77288); if ( v2 ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)v2; *((_DWORD *)a2 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)a2 + 2) = *(_DWORD *)(v2 + 8); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_MapNameServer : Null map", 0); *((_DWORD *)a2 + 2) = 0; *((_DWORD *)a2 + 1) = 0; *(_DWORD *)a2 = 0; strncpy(a2, byte_6A492E, 0xCu); result = a2; } return result; } //----- (004E2500) -------------------------------------------------------- int __stdcall sub_4E2500(int a1, __int16 a2) { int v2; // esi@1 int result; // eax@2 sub_4675D0((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ShineObject"); dword_7508B8[dword_750CB8] = (int)"ScriptMobBreeder::smb_ShineObject"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, a2); if ( v2 != 0 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ShineObject"); result = v2; } else { sub_639100(&unk_86DDD8, (int)"ScriptMobBreeder::smb_ShineObject : NO Object", 1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ShineObject"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E2600) -------------------------------------------------------- signed int __stdcall sub_4E2600(int a1, int a2, int a3, void *a4) { void *v4; // eax@3 signed int v5; // eax@3 int v6; // ecx@14 unsigned __int8 v7; // al@16 int v9; // [sp-Ch] [bp-34Ch]@13 int v10; // [sp-8h] [bp-348h]@13 int v11; // [sp+10h] [bp-330h]@12 signed int v12; // [sp+14h] [bp-32Ch]@4 int v13; // [sp+18h] [bp-328h]@10 int v14; // [sp+1Ch] [bp-324h]@8 char v15; // [sp+24h] [bp-31Ch]@12 char v16; // [sp+124h] [bp-21Ch]@1 char v17; // [sp+224h] [bp-11Ch]@6 char v18[4]; // [sp+324h] [bp-1Ch]@14 int v19; // [sp+328h] [bp-18h]@14 int v20; // [sp+32Ch] [bp-14h]@14 unsigned int v21; // [sp+330h] [bp-10h]@1 int v22; // [sp+33Ch] [bp-4h]@1 int v23; // [sp+340h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ObjectRegen"); dword_7508B8[dword_750CB8] = (int)"ScriptMobBreeder::smb_ObjectRegen"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; sub_4D5720(&v16); LOBYTE(v22) = 1; if ( sub_4D59A0(a4, 0, (int)&v16, a1) != 0 ) { v4 = sub_5CF620(&v16); v5 = sub_639620(&unk_14D16018, (unsigned __int8 *)v4); if ( v5 == -1 ) v12 = 65535; else v12 = (unsigned __int16)v5; sub_4D5720(&v17); LOBYTE(v22) = 2; if ( sub_4D59A0(a4, 1u, (int)&v17, a1) == 0 ) { sub_639100(&unk_86DDD8, (int)"ScriptMobBreeder::smb_ObjectRegen", 1); LABEL_26: LOBYTE(v22) = 1; nullsub_2(&v17); goto LABEL_27; } v14 = sub_4D5840(&v17, 0); if ( sub_4D59A0(a4, 2u, (int)&v17, a1) == 0 ) { sub_639100(&unk_86DDD8, (int)"ScriptMobBreeder::smb_ObjectRegen", 2); goto LABEL_26; } v13 = sub_4D5840(&v17, 0); if ( sub_4D59A0(a4, 3u, (int)&v17, a1) == 0 ) { sub_639100(&unk_86DDD8, (int)"ScriptMobBreeder::smb_ObjectRegen", 3); goto LABEL_26; } v11 = sub_4D5840(&v17, 0); sub_4D5720(&v15); LOBYTE(v22) = 3; if ( sub_4D59A0(a4, 4u, (int)&v15, a1) == 0 ) { v10 = 4; v9 = (int)"ScriptMobBreeder::smb_ObjectRegen"; LABEL_24: sub_639100(&unk_86DDD8, v9, v10); goto LABEL_25; } v6 = *(_DWORD *)(a1 + 65816); v20 = 0; v19 = 0; *(_DWORD *)v18 = 0; if ( sub_4E2490(v6, v18) == 0 ) { v10 = 0; v9 = (int)"ScriptMobBreeder::smb_ObjectRegen"; goto LABEL_24; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2); if ( v7 >= 4u ) { if ( v7 <= 5u ) { if ( !(*(int (__thiscall **)(int, char *, int, int, int, int, signed int, _DWORD, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)a2 + 1760))( a2, v18, v14, v13, v11, a3, v12, 0, -1, 0, 0, -1, 1, 0, 0) ) goto LABEL_20; sub_555DF0(&unk_13253630, a3, 0, 200); goto LABEL_25; } if ( v7 == 7 ) { if ( !(*(int (__thiscall **)(int, char *, int, int, int, int, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)a2 + 1756))( a2, v18, v14, v13, v11, a3, v12, 1000, 0, 0) ) { LABEL_20: LOBYTE(v22) = 2; nullsub_2(&v15); LOBYTE(v22) = 1; nullsub_2(&v17); LOBYTE(v22) = 0; nullsub_2(&v16); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ObjectRegen"); return 1; } LABEL_25: LOBYTE(v22) = 2; nullsub_2(&v15); goto LABEL_26; } } v10 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2); v9 = (int)"ScriptMobBreeder::smb_ObjectRegen : Invalid ObjType"; goto LABEL_24; } sub_639100(&unk_86DDD8, (int)"ScriptMobBreeder::smb_ObjectRegen", 0); LABEL_27: LOBYTE(v22) = 0; nullsub_2(&v16); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ObjectRegen"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E29C0) -------------------------------------------------------- signed int __stdcall sub_4E29C0(int a1, int a2, int a3, void *a4) { __int16 v4; // ax@3 int v5; // esi@3 void *v6; // eax@5 signed int v7; // eax@5 int v8; // eax@8 int v9; // edx@8 int v10; // edi@8 int v11; // eax@8 int v12; // edx@10 int v13; // eax@10 unsigned __int8 v14; // al@10 int v16; // [sp-Ch] [bp-244h]@4 int v17; // [sp-8h] [bp-240h]@4 signed int v18; // [sp+10h] [bp-228h]@6 int v19; // [sp+14h] [bp-224h]@8 int v20; // [sp+18h] [bp-220h]@8 char v21; // [sp+1Ch] [bp-21Ch]@3 char v22; // [sp+11Ch] [bp-11Ch]@1 int v23; // [sp+21Ch] [bp-1Ch]@10 int v24; // [sp+220h] [bp-18h]@10 int v25; // [sp+224h] [bp-14h]@10 unsigned int v26; // [sp+228h] [bp-10h]@1 int v27; // [sp+234h] [bp-4h]@1 int v28; // [sp+238h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ObjectChange"); dword_7508B8[dword_750CB8] = (int)"ScriptMobBreeder::smb_ObjectChange"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; sub_4D5720(&v22); LOBYTE(v27) = 1; if ( sub_4D59A0(a4, 0, (int)&v22, a1) != 0 ) { v4 = sub_4D5840(&v22, 0); v5 = sub_4E2500(a1, v4); sub_4D5720(&v21); LOBYTE(v27) = 2; if ( sub_4D59A0(a4, 1u, (int)&v21, a1) == 0 ) { v17 = 1; v16 = (int)"ScriptMobBreeder::smb_ObjectChange"; LABEL_18: sub_639100(&unk_86DDD8, v16, v17); goto LABEL_19; } v6 = sub_5CF620(&v21); v7 = sub_639620(&unk_14D16018, (unsigned __int8 *)v6); if ( v7 == -1 ) v18 = 65535; else v18 = (unsigned __int16)v7; v8 = *(_DWORD *)(v5 + 102); v9 = *(_DWORD *)(v8 + 4); v10 = *(_DWORD *)v8; v11 = *(_DWORD *)(v5 + 122); v19 = **(_BYTE **)(v5 + 106); v20 = v9; if ( !v11 ) { v17 = 2; v16 = (int)"ScriptMobBreeder::smb_ObjectChange : Null map"; goto LABEL_18; } v23 = *(_DWORD *)v11; v24 = *(_DWORD *)(v11 + 4); v12 = *(_DWORD *)(v11 + 8); v13 = *(_DWORD *)a2; v25 = v12; v14 = (*(int (__thiscall **)(int))(v13 + 1232))(a2); if ( v14 >= 4u ) { if ( v14 <= 5u ) { if ( !(*(int (__thiscall **)(int, int *, int, int, int, int, signed int, _DWORD, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)a2 + 1760))( a2, &v23, v10, v20, v19, a3, v18, 0, -1, 0, 0, -1, 1, 0, 0) ) goto LABEL_14; sub_555DF0(&unk_13253630, a3, 0, 200); goto LABEL_19; } if ( v14 == 7 ) { if ( !(*(int (__thiscall **)(int, int *, int, int, int, int, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)a2 + 1756))( a2, &v23, v10, v20, v19, a3, v18, 1000, 0, 0) ) { LABEL_14: LOBYTE(v27) = 1; nullsub_2(&v21); LOBYTE(v27) = 0; nullsub_2(&v22); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ObjectChange"); return 1; } LABEL_19: LOBYTE(v27) = 1; nullsub_2(&v21); goto LABEL_20; } } v17 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5); v16 = (int)"ScriptMobBreeder::smb_ObjectChange : Invalid ObjType"; goto LABEL_18; } sub_639100(&unk_86DDD8, (int)"ScriptMobBreeder::smb_ObjectChange", 0); LABEL_20: LOBYTE(v27) = 0; nullsub_2(&v22); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"ScriptMobBreeder::smb_ObjectChange"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E2CD0) -------------------------------------------------------- char *__stdcall sub_4E2CD0(void *a1, int a2, void *a3) { int v3; // eax@1 char *result; // eax@2 void *v5; // eax@6 char *v6; // eax@6 char *v7; // esi@6 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_54DF90(&unk_13253630, (int)&v9, 5); if ( v3 ) { if ( (unsigned __int16)sub_4E2600(a2, v3, v9, a3) ) { v8 = (unsigned __int16)v9; } else { sub_473C70((int)&unk_13253630, v9); v8 = 65535; } v5 = sub_4D5720(a1); v6 = sub_4D67A0(v5, v8); --dword_750CB8; v7 = v6; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate : Too many mob", 0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E2E10) -------------------------------------------------------- char *__stdcall sub_4E2E10(void *a1, int a2, void *a3) { int v3; // eax@1 char *result; // eax@2 void *v5; // eax@6 char *v6; // eax@6 char *v7; // esi@6 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_54DF90(&unk_13253630, (int)&v9, 7); if ( v3 ) { if ( (unsigned __int16)sub_4E2600(a2, v3, v9, a3) ) { v8 = (unsigned __int16)v9; } else { sub_473C70((int)&unk_13253630, v9); v8 = 65535; } v5 = sub_4D5720(a1); v6 = sub_4D67A0(v5, v8); --dword_750CB8; v7 = v6; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate : Too many mob", 0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E2F50) -------------------------------------------------------- char *__stdcall sub_4E2F50(void *a1, int a2, void *a3) { int v3; // eax@1 char *result; // eax@2 void *v5; // eax@6 char *v6; // eax@6 char *v7; // esi@6 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_54DF90(&unk_13253630, (int)&v9, 4); if ( v3 ) { if ( (unsigned __int16)sub_4E2600(a2, v3, v9, a3) ) { v8 = (unsigned __int16)v9; } else { sub_473C70((int)&unk_13253630, v9); v8 = 65535; } v5 = sub_4D5720(a1); v6 = sub_4D67A0(v5, v8); --dword_750CB8; v7 = v6; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate : Too many mob", 0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E3090) -------------------------------------------------------- char *__stdcall sub_4E3090(void *a1, int a2, void *a3) { int v3; // eax@1 char *result; // eax@2 void *v5; // eax@6 char *v6; // eax@6 char *v7; // esi@6 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_54DF90(&unk_13253630, (int)&v9, 5); if ( v3 ) { if ( (unsigned __int16)sub_4E29C0(a2, v3, v9, a3) ) { v8 = (unsigned __int16)v9; } else { sub_473C70((int)&unk_13253630, v9); v8 = 65535; } v5 = sub_4D5720(a1); v6 = sub_4D67A0(v5, v8); --dword_750CB8; v7 = v6; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate : Too many mob", 0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E31D0) -------------------------------------------------------- char *__stdcall sub_4E31D0(void *a1, int a2, void *a3) { int v3; // eax@1 char *result; // eax@2 void *v5; // eax@6 char *v6; // eax@6 char *v7; // esi@6 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_54DF90(&unk_13253630, (int)&v9, 7); if ( v3 ) { if ( (unsigned __int16)sub_4E29C0(a2, v3, v9, a3) ) { v8 = (unsigned __int16)v9; } else { sub_473C70((int)&unk_13253630, v9); v8 = 65535; } v5 = sub_4D5720(a1); v6 = sub_4D67A0(v5, v8); --dword_750CB8; v7 = v6; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate : Too many mob", 0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E3310) -------------------------------------------------------- char *__stdcall sub_4E3310(void *a1, int a2, void *a3) { int v3; // eax@1 char *result; // eax@2 void *v5; // eax@6 char *v6; // eax@6 char *v7; // esi@6 int v8; // [sp-4h] [bp-24h]@4 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = sub_54DF90(&unk_13253630, (int)&v9, 4); if ( v3 ) { if ( (unsigned __int16)sub_4E29C0(a2, v3, v9, a3) ) { v8 = (unsigned __int16)v9; } else { sub_473C70((int)&unk_13253630, v9); v8 = 65535; } v5 = sub_4D5720(a1); v6 = sub_4D67A0(v5, v8); --dword_750CB8; v7 = v6; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate : Too many mob", 0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E3450) -------------------------------------------------------- char *__stdcall sub_4E3450(void *a1, int a2, void *a3) { int (__stdcall **v3)(int, int, int); // edi@2 void *v4; // ecx@2 int v5; // ebx@6 int v6; // ecx@6 void *v7; // eax@7 signed int v8; // eax@7 signed __int16 v9; // si@7 int v10; // eax@9 __int16 v11; // ax@9 int v12; // esi@10 void *v13; // eax@16 char *v14; // esi@16 int v16; // [sp-8h] [bp-244h]@6 int (__stdcall **v17)(int, int, int); // [sp+14h] [bp-228h]@2 __int16 v18; // [sp+18h] [bp-224h]@2 int v19; // [sp+1Ch] [bp-220h]@2 int v20; // [sp+20h] [bp-21Ch]@2 int v21; // [sp+24h] [bp-218h]@2 void *v22; // [sp+28h] [bp-214h]@2 char v23; // [sp+2Ch] [bp-210h]@1 char v24; // [sp+12Ch] [bp-110h]@1 unsigned int v25; // [sp+22Ch] [bp-10h]@1 int v26; // [sp+238h] [bp-4h]@1 int v27; // [sp+23Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCount::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineCount::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; sub_4D5720(&v24); LOBYTE(v26) = 1; memcpy(&v23, (const void *)sub_4D59A0(a3, 0, (int)&v24, a2), 0x100u); LOBYTE(v26) = 2; if ( sub_4D58C0(&v23, "player") ) { sub_427BE0(&v17); v3 = &off_6C6274; v17 = &off_6C6274; v18 = -1; v19 = 0; v20 = 0; v21 = 99999; v22 = sub_427D10; v4 = *(void **)(*(_DWORD *)(a2 + 65816) + 77292); LOBYTE(v26) = 3; if ( v4 != 0 ) sub_549B60(v4, (int)&v17, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_15; } if ( sub_4D58C0(&v23, (const char *)&off_6C6768) ) { sub_427BE0(&v17); v18 = -1; v3 = &off_6C6274; v17 = &off_6C6274; v19 = 0; v20 = 0; v21 = 99999; v22 = sub_427C90; v5 = *(_DWORD *)(a2 + 65816); v16 = (int)&v17; LOBYTE(v26) = 4; v6 = v5; LABEL_14: sub_4E20B0(v6, v16); LABEL_15: v12 = v20; LOBYTE(v26) = 2; v17 = v3; sub_427EB0(&v17); goto LABEL_16; } v7 = sub_5CF620(&v24); v8 = sub_639620(&unk_14D16018, (unsigned __int8 *)v7); v9 = -1; if ( v8 != -1 ) v9 = v8; v10 = (int)sub_5CF620(&v24); LOBYTE(v11) = sub_4D56D0(v9 != -1, (int)"PineEventScriptNode::SysFuncShineCount::sfb_Calculate : MobName wrong", v10); if ( !v11 ) { sub_427BE0(&v17); v3 = &off_6C6274; v17 = &off_6C6274; v18 = v9; v19 = 0; v20 = 0; v21 = 99999; v22 = sub_427C90; if ( v9 != -1 ) v22 = sub_427C20; v6 = *(_DWORD *)(a2 + 65816); LOBYTE(v26) = 5; v16 = (int)&v17; goto LABEL_14; } v12 = 0; LABEL_16: LOBYTE(v26) = 1; nullsub_2(&v23); v13 = sub_4D5720(a1); v14 = sub_4D67A0(v13, v12); LOBYTE(v26) = 0; nullsub_2(&v24); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCount::sfb_Calculate"); return v14; } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); // 6C6768: using guessed type void *off_6C6768; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E3760) -------------------------------------------------------- char *__stdcall sub_4E3760(void *a1, int a2, int a3) { int v3; // ST00_4@1 void *v4; // eax@1 char *v5; // eax@1 char *v6; // esi@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_506600((void *)(*(_DWORD *)(a2 + 65816) + 66108)); v4 = sub_4D5720(a1); v5 = sub_4D67A0(v4, v3); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E3820) -------------------------------------------------------- void *__stdcall sub_4E3820(void *a1, int a2, void *a3) { void *v3; // esi@1 void *result; // eax@2 __int16 v5; // ax@3 int v6; // eax@4 char *v7; // [sp-8h] [bp-130h]@5 unsigned int v8; // [sp-4h] [bp-12Ch]@1 int v9; // [sp+14h] [bp-114h]@3 char v10; // [sp+18h] [bp-110h]@1 unsigned int v11; // [sp+118h] [bp-10h]@1 int v12; // [sp+124h] [bp-4h]@1 int v13; // [sp+128h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v8 = (unsigned int)&v13 ^ __security_cookie; v3 = a1; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharClass::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineCharClass::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; sub_4D5720(&v10); LOBYTE(v12) = 1; if ( sub_4D59A0(a3, 0, (int)&v10, a2) != 0 ) { v5 = sub_4D5840(&v10, 0); v9 = sub_54DE90(&unk_13253630, v5); sub_4D5720(a1); if ( v9 ) { v6 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v9 + 1180))(v8); switch ( (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 56))(v6) ) { case 1: v7 = "Fighter"; goto LABEL_11; case 6: v7 = "Cleric"; goto LABEL_11; case 11: v7 = "Archer"; goto LABEL_11; case 16: v7 = "Mage"; goto LABEL_11; case 21: v7 = "Joker"; goto LABEL_11; case 26: v7 = "Sentinel"; LABEL_11: v3 = sub_4D6730(a1, v7); break; default: break; } } LOBYTE(v12) = 0; nullsub_2(&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharClass::sfb_Calculate"); result = v3; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineCharClass::sfb_Calculate", 0); LOBYTE(v12) = 0; nullsub_2(&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharClass::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E3A20) -------------------------------------------------------- void *__stdcall sub_4E3A20(void *a1, int a2, void *a3) { void *result; // eax@2 __int16 v4; // ax@3 int v5; // esi@3 int v6; // eax@5 int v7; // ecx@5 _BYTE *v8; // ecx@5 void *v9; // esi@5 char v10; // [sp+14h] [bp-110h]@1 unsigned int v11; // [sp+114h] [bp-10h]@1 int v12; // [sp+120h] [bp-4h]@1 int v13; // [sp+124h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharName::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineCharName::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; sub_4D5720(&v10); LOBYTE(v12) = 1; if ( sub_4D59A0(a3, 0, (int)&v10, a2) != 0 ) { v4 = sub_4D5840(&v10, 0); v5 = sub_54DE90(&unk_13253630, v4); sub_4D5720(a1); if ( v5 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1388))(v5); v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); *((_DWORD *)v8 + 4) = *(_DWORD *)(v6 + 16); v8[20] = 0; v9 = sub_4D6730(a1, v8); LOBYTE(v12) = 0; nullsub_2(&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharName::sfb_Calculate"); result = v9; } else { LOBYTE(v12) = 0; nullsub_2(&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharName::sfb_Calculate"); result = a1; } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineCharName::sfb_Calculate", 0); LOBYTE(v12) = 0; nullsub_2(&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCharName::sfb_Calculate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (004E3C00) -------------------------------------------------------- char *__stdcall sub_4E3C00(void *a1, int a2, void *a3) { int v3; // eax@1 __int16 v4; // ax@1 void *v5; // ecx@1 void *v7; // eax@3 signed int v8; // eax@3 unsigned __int16 v9; // si@3 int v10; // eax@5 __int16 v11; // ax@5 int v12; // eax@7 int v13; // ST10_4@9 void *v14; // eax@9 char *v15; // esi@9 char v16; // [sp+10h] [bp-110h]@1 unsigned int v17; // [sp+110h] [bp-10h]@1 int v18; // [sp+11Ch] [bp-4h]@1 int v19; // [sp+120h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; sub_4D5720(&v16); LOBYTE(v18) = 1; v3 = sub_4D59A0(a3, 0, (int)&v16, a2); LOBYTE(v4) = sub_4D56D0(v3 != 0, (int)"PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate : Argument err", 0); v5 = &v16; if ( v4 ) goto LABEL_2; v7 = sub_5CF620(&v16); v8 = sub_639620(&unk_14D16018, (unsigned __int8 *)v7); v9 = -1; if ( v8 != -1 ) v9 = v8; v10 = (int)sub_5CF620(&v16); LOBYTE(v11) = sub_4D56D0(v9 != -1, (int)"PineEventScriptNode::SysFuncShineCount::sfb_Calculate : MobName wrong", v10); if ( v11 ) { v5 = &v16; LABEL_2: LOBYTE(v18) = 0; nullsub_2(v5); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); return 0; } v12 = *(_DWORD *)(*(_DWORD *)(a2 + 65816) + 77288); if ( v12 ) v12 = sub_4B00F0((void *)(v12 + 72), v9); v13 = v12; v14 = sub_4D5720(a1); v15 = sub_4D67A0(v14, v13); LOBYTE(v18) = 0; nullsub_2(&v16); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E3DC0) -------------------------------------------------------- char *__stdcall sub_4E3DC0(void *a1, int a2, void *a3) { int v3; // eax@1 __int16 v4; // ax@1 void *v5; // ecx@1 char *result; // eax@2 int v7; // eax@3 __int16 v8; // ax@3 int v9; // eax@4 __int16 v10; // ax@4 int v11; // eax@5 int v12; // ST10_4@5 int v13; // ST08_4@5 void *v14; // eax@5 void *v15; // eax@5 void *v16; // eax@5 char *v17; // esi@5 char v18; // [sp+Ch] [bp-134h]@5 int v19; // [sp+18h] [bp-128h]@1 int v20; // [sp+1Ch] [bp-124h]@5 int v21; // [sp+20h] [bp-120h]@5 int v22; // [sp+24h] [bp-11Ch]@3 int v23; // [sp+28h] [bp-118h]@4 void *v24; // [sp+2Ch] [bp-114h]@1 char v25; // [sp+30h] [bp-110h]@1 unsigned int v26; // [sp+130h] [bp-10h]@1 int v27; // [sp+13Ch] [bp-4h]@1 int v28; // [sp+140h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v24 = a1; v19 = (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; sub_4D5720(&v25); LOBYTE(v27) = 1; v3 = sub_4D59A0(a3, 0, (int)&v25, a2); LOBYTE(v4) = sub_4D56D0( v3 != 0, (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate : Argument err", 0); v5 = &v25; if ( v4 || (v22 = sub_4D5840(&v25, 0), v7 = sub_4D59A0(a3, 1u, (int)&v25, a2), LOBYTE(v8) = sub_4D56D0( v7 != 0, (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate : Argument err", 0), v5 = &v25, v8) || (v23 = sub_4D5840(&v25, 0), v9 = sub_4D59A0(a3, 2u, (int)&v25, a2), LOBYTE(v10) = sub_4D56D0( v9 != 0, (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate : Argument err", 0), v5 = &v25, v10) ) { LOBYTE(v27) = 0; nullsub_2(v5); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); result = 0; } else { v11 = sub_4D5840(&v25, 0); sub_4B0660((int)&v18, v22, v23, v11); LOBYTE(v27) = 2; sub_4B0680((int)&v18, (int)&v20); v12 = v21; v13 = v20; v14 = sub_4D5720(v24); v15 = sub_4D67A0(v14, v13); v16 = sub_4D6730(v15, word_6A2BF8); v17 = sub_4D67A0(v16, v12); LOBYTE(v27) = 1; nullsub_2(&v18); LOBYTE(v27) = 0; nullsub_2(&v25); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); result = v17; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E3FF0) -------------------------------------------------------- void *__stdcall sub_4E3FF0(void *a1, int a2, void *a3) { int v3; // eax@1 __int16 v4; // ax@1 void *result; // eax@2 int v6; // ebx@3 int v7; // eax@3 __int16 v8; // ax@3 int v9; // eax@5 void *v10; // edi@5 int v11; // esi@6 char v12; // al@8 int i; // ebx@13 char v14; // al@14 char v15; // [sp+14h] [bp-110h]@1 unsigned int v16; // [sp+114h] [bp-10h]@1 int v17; // [sp+120h] [bp-4h]@1 int v18; // [sp+124h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; sub_4D5720(&v15); LOBYTE(v17) = 1; v3 = sub_4D59A0(a3, 1u, (int)&v15, a2); LOBYTE(v4) = sub_4D56D0(v3 != 0, (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate : Argument err", 0); if ( v4 ) { LOBYTE(v17) = 0; nullsub_2(&v15); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); result = 0; } else { v6 = *(_BYTE *)sub_5CF620(&v15); v7 = sub_4D59A0(a3, 0, (int)&v15, a2); LOBYTE(v8) = sub_4D56D0( v7 != 0, (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate : Argument err", 0); if ( v8 || (v9 = sub_4D8170((void *)a2, (int)&v15), (v10 = (void *)v9) == 0) ) { LOBYTE(v17) = 0; nullsub_2(&v15); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); result = 0; } else { v11 = 0; if ( sub_4D58A0((void *)v9, 0) != v6 ) { do { if ( !sub_4D58A0(v10, v11) ) break; v12 = sub_4D58A0(v10, v11); sub_4D58B0(a1, v11++, v12); } while ( sub_4D58A0(v10, v11) != v6 ); } sub_4D58B0(a1, v11, 0); for ( ; sub_4D58A0(v10, v11) == v6; ++v11 ) ; if ( sub_4D58A0(v10, v11) ) { for ( i = 0; sub_4D58A0(v10, v11); ++i ) { v14 = sub_4D58A0(v10, v11); sub_4D58B0(v10, i, v14); ++v11; } sub_4D58B0(v10, i, 0); } else { sub_4D5720(v10); } LOBYTE(v17) = 0; nullsub_2(&v15); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); result = a1; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E4260) -------------------------------------------------------- bool __thiscall sub_4E4260(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // bl@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectList::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectList::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (1 << (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3)) & *((_DWORD *)v4 + 1) ) { *((_WORD *)v4 + 4 * *((_DWORD *)v4 + 130) + 4) = *(_WORD *)(a3 + 4); *((_DWORD *)v4 + 2 * (*((_DWORD *)v4 + 130))++ + 3) = sub_402710(a2, a3); } v5 = *((_DWORD *)v4 + 130) < 0x40u; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectList::ali_Work"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E4350) -------------------------------------------------------- void *__thiscall sub_4E4350(void *this, void *a2) { void *v2; // ebx@1 void *v3; // esi@1 int v4; // edi@1 void *v5; // eax@3 int v6; // edx@3 char v7; // cl@4 int *v9; // [sp+28h] [bp+8h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListObjectList::alol_MakeList"); dword_7508B8[dword_750CB8] = (int)"AxialListObjectList::alol_MakeList"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = 0; sub_4D5720(a2); if ( *((_DWORD *)v2 + 130) > 0 ) { v9 = (int *)((char *)v2 + 8); do { v5 = sub_5CF620(v3); v6 = (int)((char *)v5 + 1); do { v7 = *(_BYTE *)v5; v5 = (char *)v5 + 1; } while ( v7 ); if ( (unsigned int)((char *)v5 - v6) >= 0xF1 ) break; sub_4D67A0(v3, *(_WORD *)v9); sub_4D6730(v3, word_6A2BF8); v9 += 2; ++v4; } while ( v4 < *((_DWORD *)v2 + 130) ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListObjectList::alol_MakeList"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E4450) -------------------------------------------------------- void *__stdcall sub_4E4450(void *a1, int a2, void *a3) { int v3; // eax@1 __int16 v4; // ax@1 void *v5; // ecx@1 __int16 v7; // ax@4 int v8; // eax@4 __int16 v9; // ax@4 int v10; // ebx@6 void *v11; // esi@17 int v12; // eax@20 int v13; // [sp+1Ch] [bp-424h]@4 unsigned int v14; // [sp+20h] [bp-420h]@6 int (__stdcall **v15)(int, int, int); // [sp+24h] [bp-41Ch]@17 int v16; // [sp+28h] [bp-418h]@17 int v17; // [sp+22Ch] [bp-214h]@17 char v18; // [sp+230h] [bp-210h]@7 char v19; // [sp+330h] [bp-110h]@1 unsigned int v20; // [sp+430h] [bp-10h]@1 int v21; // [sp+43Ch] [bp-4h]@1 int v22; // [sp+440h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; sub_4D5720(&v19); LOBYTE(v21) = 1; v3 = sub_4D59A0(a3, 0, (int)&v19, a2); LOBYTE(v4) = sub_4D56D0( v3 != 0, (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate : Argument err", 0); v5 = &v19; if ( v4 ) goto LABEL_2; v7 = sub_4D5840(&v19, 0); v13 = sub_54DE90(&unk_13253630, v7); v8 = (int)sub_5CF620(&v19); LOBYTE(v9) = sub_4D56D0(v13 != 0, (int)"Invalid Object", v8); if ( v9 ) { v5 = &v19; LABEL_2: LOBYTE(v21) = 0; nullsub_2(v5); v21 = -1; goto LABEL_3; } v10 = 0; v14 = 1; if ( !sub_4D59A0(a3, 1u, (int)&v19, a2) ) { LABEL_17: sub_427BE0(&v15); v15 = &off_6C6284; v16 = v10; v17 = 0; LOBYTE(v21) = 3; sub_549B60((void *)v13, (int)&v15, 1); v11 = sub_4E4350(&v15, a1); LOBYTE(v21) = 1; v15 = &off_6C6284; sub_427EB0(&v15); LOBYTE(v21) = 0; nullsub_2(&v19); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); return v11; } while ( 1 ) { sub_4D5730((unsigned int)&v19); memcpy(&v18, &v19, 0x100u); LOBYTE(v21) = 2; if ( sub_4D58C0(&v18, byte_6A492E) ) { LOBYTE(v21) = 1; nullsub_2(&v18); goto LABEL_17; } if ( !sub_4D58C0(&v18, "npc") ) break; v10 |= 0x10u; LABEL_16: LOBYTE(v21) = 1; nullsub_2(&v18); ++v14; if ( !sub_4D59A0(a3, v14, (int)&v19, a2) ) goto LABEL_17; } if ( sub_4D58C0(&v18, "bandit") ) { v10 |= 0x100u; goto LABEL_16; } if ( sub_4D58C0(&v18, "mob") ) { v10 |= 0x20u; goto LABEL_16; } if ( sub_4D58C0(&v18, "player") ) { v10 |= 4u; goto LABEL_16; } v12 = (int)sub_5CF620(&v19); sub_4D56D0(0, (int)"Invalid flag", v12); LOBYTE(v21) = 1; nullsub_2(&v18); LOBYTE(v21) = 0; nullsub_2(&v19); v21 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); return 0; } // 6C6284: using guessed type int (__stdcall *off_6C6284)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E47A0) -------------------------------------------------------- int __thiscall sub_4E47A0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; return result; } //----- (004E47C0) -------------------------------------------------------- void __thiscall sub_4E47C0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6C6B44; _LN21((void *)(this + 12), 0x34u, 128, nullsub_2); sub_427EB0((void *)v1); } // 6C6B44: using guessed type int (__stdcall *off_6C6B44)(int, int, int); //----- (004E4830) -------------------------------------------------------- char __thiscall sub_4E4830(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 char v6; // al@3 char v7; // bl@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListKQResult::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListKQResult::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1236))(a3) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListKQResult::ali_Work"); result = 1; } else { v6 = (*((int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))v4 + 2))(v4, a2, a3, a4); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"AxialListKQResult::ali_Work"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E4920) -------------------------------------------------------- char __thiscall sub_4E4920(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // eax@3 int v7; // eax@5 int v8; // ecx@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListKQResult::defaultWorker"); dword_7508B8[dword_750CB8] = (int)"AxialListKQResult::defaultWorker"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { v5 = *((_DWORD *)v4 + 1668); if ( v5 >= 0x80 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListKQResult::defaultWorker"); return 0; } *((_WORD *)v4 + 26 * v5 + 6) = *(_WORD *)(a3 + 4); *((_DWORD *)v4 + 13 * *((_DWORD *)v4 + 1668) + 4) = a3; v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1388))(a3); v8 = (int)((char *)v4 + 52 * *((_DWORD *)v4 + 1668) + 20); *(_DWORD *)v8 = *(_DWORD *)v7; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v7 + 12); *(_DWORD *)(v8 + 16) = *(_DWORD *)(v7 + 16); (*((void (__thiscall **)(_DWORD, _DWORD))v4 + 1))(v4, a3); ++*((_DWORD *)v4 + 1668); --dword_750CB8; } else { --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"AxialListKQResult::defaultWorker"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E4A70) -------------------------------------------------------- char __thiscall sub_4E4A70(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v6; // ebx@5 int v7; // eax@5 int v8; // ecx@5 int v9; // ecx@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListKQResult::zerosumWorker"); dword_7508B8[dword_750CB8] = (int)"AxialListKQResult::zerosumWorker"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 2 ) { if ( *((_DWORD *)v4 + 1668) >= 0x80u ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListKQResult::zerosumWorker"); return 0; } v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1064))(a3); *((_WORD *)v4 + 26 * *((_DWORD *)v4 + 1668) + 6) = *(_WORD *)(a3 + 4); *((_DWORD *)v4 + 13 * *((_DWORD *)v4 + 1668) + 4) = a3; v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1388))(a3); v8 = 52 * *((_DWORD *)v4 + 1668); *(_DWORD *)((char *)v4 + v8 + 20) = *(_DWORD *)v7; *(_DWORD *)((char *)v4 + v8 + 24) = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v4 + v8 + 28) = *(_DWORD *)(v7 + 8); v9 = (int)((char *)v4 + v8 + 20); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v7 + 12); *(_DWORD *)(v9 + 16) = *(_DWORD *)(v7 + 16); *(_DWORD *)((char *)v4 + 52 * *((_DWORD *)v4 + 1668) + 42) = *(_DWORD *)(v6 + 36); *(_DWORD *)((char *)v4 + 52 * *((_DWORD *)v4 + 1668) + 46) = *(_DWORD *)(v6 + 32); *(_DWORD *)((char *)v4 + 52 * *((_DWORD *)v4 + 1668) + 50) = 0; *(_DWORD *)((char *)v4 + 52 * *((_DWORD *)v4 + 1668) + 54) = *(_DWORD *)(v6 + 40) + *((_DWORD *)v4 + 1667); *((_DWORD *)v4 + 13 * *((_DWORD *)v4 + 1668) + 15) = *(_DWORD *)((char *)v4 + 52 * *((_DWORD *)v4 + 1668) + 54); ++*((_DWORD *)v4 + 1668); --dword_750CB8; } else { --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"AxialListKQResult::zerosumWorker"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E4C40) -------------------------------------------------------- int __thiscall sub_4E4C40(void *this, void *a2, int a3) { void *v3; // ebx@1 size_t v4; // ST04_4@1 signed int v5; // esi@2 int v6; // esi@10 int v7; // esi@18 int v8; // esi@26 int v9; // esi@34 int v10; // esi@42 int v11; // eax@53 int v12; // eax@54 int v13; // edx@54 int v14; // eax@54 int v15; // ecx@54 void *v16; // eax@60 int v17; // edx@60 char v18; // cl@61 int v19; // eax@63 char v21; // [sp+14h] [bp-610h]@40 char v22; // [sp+114h] [bp-510h]@32 char v23; // [sp+214h] [bp-410h]@48 char v24; // [sp+314h] [bp-310h]@8 char v25; // [sp+414h] [bp-210h]@24 char v26; // [sp+514h] [bp-110h]@16 unsigned int v27; // [sp+614h] [bp-10h]@1 int v28; // [sp+620h] [bp-4h]@1 int v29; // [sp+624h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListKQResult::alkqr_MakeList"); dword_7508B8[dword_750CB8] = (int)"AxialListKQResult::alkqr_MakeList"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1668); v28 = 0; qsort((char *)v3 + 12, v4, 0x34u, (int (__cdecl *)(const void *, const void *))sub_4E2470); sub_4D5720(a2); *(_BYTE *)a3 = 0; *(_DWORD *)(a3 + 1) = *((_DWORD *)v3 + 1667); *(_BYTE *)a3 = 0; if ( *((_DWORD *)v3 + 1668) > 0 ) { do { v5 = *(_BYTE *)a3; if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fprintf(dword_1321BA60, "%d", v5); } if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sprintf(&v24, "%.255s", "/"); sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fputs(&v24, dword_1321BA60); } } } v6 = *((_WORD *)v3 + 26 * *(_BYTE *)a3 + 6); if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fprintf(dword_1321BA60, "%d", v6); } if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sprintf(&v26, "%.255s", "/"); sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fputs(&v26, dword_1321BA60); } } } v7 = *((_DWORD *)v3 + 13 * *(_BYTE *)a3 + 15); if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fprintf(dword_1321BA60, "%d", v7); } if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sprintf(&v25, "%.255s", "["); sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fputs(&v25, dword_1321BA60); } } } v8 = *(_DWORD *)((char *)v3 + 52 * *(_BYTE *)a3 + 42); if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fprintf(dword_1321BA60, "%d", v8); } if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sprintf(&v22, "%.255s", "/"); sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fputs(&v22, dword_1321BA60); } } } v9 = *(_DWORD *)((char *)v3 + 52 * *(_BYTE *)a3 + 46); if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fprintf(dword_1321BA60, "%d", v9); } if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sprintf(&v21, "%.255s", "/"); sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fputs(&v21, dword_1321BA60); } } } v10 = *(_DWORD *)((char *)v3 + 52 * *(_BYTE *)a3 + 50); if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fprintf(dword_1321BA60, "%d", v10); } if ( byte_7493ED ) { if ( byte_1321BBE4 ) { sprintf(&v23, "%.255s", "]"); sub_418E40((__time32_t)byte_1321B960); if ( dword_1321BA60 ) fputs(&v23, dword_1321BA60); } if ( byte_7493ED && byte_1321BBE4 && dword_1321BA60 ) { v11 = sub_418E40((__time32_t)byte_1321B960); sub_654AB0(10, (FILE *)v11); fflush(dword_1321BA60); fclose(dword_1321BA60); dword_1321BA60 = 0; } } } v12 = 52 * *(_BYTE *)a3; v13 = *(_DWORD *)((char *)v3 + v12 + 20); v14 = (int)((char *)v3 + v12 + 20); v15 = 38 * *(_BYTE *)a3 + a3 + 5; *(_DWORD *)v15 = v13; *(_DWORD *)(v15 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v15 + 8) = *(_DWORD *)(v14 + 8); *(_DWORD *)(v15 + 12) = *(_DWORD *)(v14 + 12); *(_DWORD *)(v15 + 16) = *(_DWORD *)(v14 + 16); *(_WORD *)(v15 + 20) = *(_WORD *)(v14 + 20); *(_DWORD *)(v15 + 22) = *(_DWORD *)(v14 + 22); *(_DWORD *)(v15 + 26) = *(_DWORD *)(v14 + 26); *(_DWORD *)(v15 + 30) = *(_DWORD *)(v14 + 30); *(_DWORD *)(v15 + 34) = *(_DWORD *)(v14 + 34); if ( *(_BYTE *)a3 ) { if ( *(_BYTE *)a3 == 1 ) { *(_BYTE *)(a3 + 63) = *(_BYTE *)(a3 + 63) & 0x82 | 2; } else { if ( *(_BYTE *)a3 == 2 ) *(_BYTE *)(a3 + 101) = *(_BYTE *)(a3 + 101) & 0x83 | 3; } } else { *(_BYTE *)(a3 + 25) = *(_BYTE *)(a3 + 25) & 0x81 | 1; } v16 = sub_5CF620(a2); v17 = (int)((char *)v16 + 1); do { v18 = *(_BYTE *)v16; v16 = (char *)v16 + 1; } while ( v18 ); if ( (unsigned int)((char *)v16 - v17) < 0xF1 ) { v19 = *((_DWORD *)v3 + 1669); if ( !v19 || *((_DWORD *)v3 + 13 * *(_BYTE *)a3 + 15) >= v19 ) { sub_4D67A0(a2, *((_WORD *)v3 + 26 * *(_BYTE *)a3 + 6)); sub_4D6730(a2, word_6A2BF8); } } ++*(_BYTE *)a3; } while ( (signed int)*(_BYTE *)a3 < *((_DWORD *)v3 + 1668) ); } --dword_750CB8; v28 = -1; return sub_467660((int)&unk_D020420, (int)"AxialListKQResult::alkqr_MakeList"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321BBE4: using guessed type char byte_1321BBE4; //----- (004E51D0) -------------------------------------------------------- int __thiscall sub_4E51D0(void *this, void *a2, int a3, signed int a4) { void *v4; // edi@1 signed int v5; // ebx@1 void *v6; // eax@4 int v7; // edx@4 char v8; // cl@5 int v9; // eax@8 int v10; // ecx@8 int v11; // ecx@8 int v12; // eax@10 int v13; // ecx@10 int v14; // ecx@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListKQResult::alkqr_MakeSimpleList"); dword_7508B8[dword_750CB8] = (int)"AxialListKQResult::alkqr_MakeSimpleList"; dword_750AB8[dword_750CB8++] = -1; qsort((char *)v4 + 12, *((_DWORD *)v4 + 1668), 0x34u, (int (__cdecl *)(const void *, const void *))sub_4E2470); sub_4D5720(a2); *(_DWORD *)(a3 + 1) = *((_DWORD *)v4 + 1667); v5 = a4; if ( a4 >= *((_DWORD *)v4 + 1668) ) v5 = *((_DWORD *)v4 + 1668); *(_BYTE *)a3 = 0; if ( v5 > 0 ) { do { v6 = sub_5CF620(a2); v7 = (int)((char *)v6 + 1); do { v8 = *(_BYTE *)v6; v6 = (char *)v6 + 1; } while ( v8 ); if ( (unsigned int)((char *)v6 - v7) < 0xF1 ) { sub_4D67A0(a2, *((_WORD *)v4 + 26 * *(_BYTE *)a3 + 6)); sub_4D6730(a2, word_6A2BF8); } v9 = (int)((char *)v4 + 52 * *(_BYTE *)a3 + 20); v10 = 32 * *(_BYTE *)a3; *(_DWORD *)(v10 + a3 + 18) = *(_DWORD *)v9; *(_DWORD *)(v10 + a3 + 22) = *(_DWORD *)(v9 + 4); v11 = v10 + a3 + 18; *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v9 + 12); *(_DWORD *)(v11 + 16) = *(_DWORD *)(v9 + 16); *(_DWORD *)(32 * *(_BYTE *)a3 + a3 + 46) = *((_DWORD *)v4 + 13 * *(_BYTE *)a3 + 15); *(_DWORD *)(32 * *(_BYTE *)a3 + a3 + 38) = *(_DWORD *)((char *)v4 + 52 * *(_BYTE *)a3 + 42); *(_DWORD *)(32 * *(_BYTE *)a3 + a3 + 42) = *(_DWORD *)((char *)v4 + 52 * *(_BYTE *)a3 + 46); ++*(_BYTE *)a3; } while ( *(_BYTE *)a3 < v5 ); } for ( ; (signed int)*(_BYTE *)a3 < *((_DWORD *)v4 + 1668); ++*(_BYTE *)a3 ) { v12 = (int)((char *)v4 + 52 * *(_BYTE *)a3 + 20); v13 = 32 * *(_BYTE *)a3; *(_DWORD *)(v13 + a3 + 18) = *(_DWORD *)v12; *(_DWORD *)(v13 + a3 + 22) = *(_DWORD *)(v12 + 4); *(_DWORD *)(v13 + a3 + 26) = *(_DWORD *)(v12 + 8); v14 = v13 + a3 + 18; *(_DWORD *)(v14 + 12) = *(_DWORD *)(v12 + 12); *(_DWORD *)(v14 + 16) = *(_DWORD *)(v12 + 16); *(_DWORD *)(32 * *(_BYTE *)a3 + a3 + 46) = *((_DWORD *)v4 + 13 * *(_BYTE *)a3 + 15); *(_DWORD *)(32 * *(_BYTE *)a3 + a3 + 38) = *(_DWORD *)((char *)v4 + 52 * *(_BYTE *)a3 + 42); *(_DWORD *)(32 * *(_BYTE *)a3 + a3 + 42) = *(_DWORD *)((char *)v4 + 52 * *(_BYTE *)a3 + 46); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AxialListKQResult::alkqr_MakeSimpleList"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E53F0) -------------------------------------------------------- void *__stdcall sub_4E53F0(void *a1, int a2, void *a3) { void *v3; // esi@1 int v4; // eax@1 __int16 v5; // ax@1 void *v6; // ecx@1 __int16 v7; // ax@2 int v8; // eax@2 __int16 v9; // ax@2 int v10; // eax@3 __int16 v11; // ax@3 __int16 v12; // ax@4 int v13; // edi@4 int v14; // eax@4 __int16 v15; // ax@4 int v16; // ST10_4@5 void *v17; // eax@5 int v19; // [sp+14h] [bp-114h]@2 char v20; // [sp+18h] [bp-110h]@1 unsigned int v21; // [sp+118h] [bp-10h]@1 int v22; // [sp+124h] [bp-4h]@1 int v23; // [sp+128h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v3 = a1; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineDistance"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineDistance"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; sub_4D6730(a1, "999999999"); sub_4D5720(&v20); LOBYTE(v22) = 1; v4 = sub_4D59A0(a3, 0, (int)&v20, a2); LOBYTE(v5) = sub_4D56D0(v4 != 0, (int)"PineEventScriptNode::SysFuncShineDistance::sfb_Calculate : Argument err", 0); v6 = &v20; if ( !v5 ) { v7 = sub_4D5840(&v20, 0); v19 = sub_54DE90(&unk_13253630, v7); v8 = (int)sub_5CF620(&v20); LOBYTE(v9) = sub_4D56D0( v19 != 0, (int)"PineEventScriptNode::SysFuncShineDistance::sfb_Calculate : Invalid Object", v8); if ( v9 ) { LABEL_6: v6 = &v20; goto LABEL_7; } v10 = sub_4D59A0(a3, 1u, (int)&v20, a2); LOBYTE(v11) = sub_4D56D0( v10 != 0, (int)"PineEventScriptNode::SysFuncShineDistance::sfb_Calculate : Argument err", 0); v6 = &v20; if ( !v11 ) { v12 = sub_4D5840(&v20, 0); v13 = sub_54DE90(&unk_13253630, v12); v14 = (int)sub_5CF620(&v20); LOBYTE(v15) = sub_4D56D0( v13 != 0, (int)"PineEventScriptNode::SysFuncShineDistance::sfb_Calculate : Invalid Object", v14); if ( !v15 ) { v16 = sub_4011C0( &unk_AF09DA8, **(_DWORD **)(v19 + 102) - **(_DWORD **)(v13 + 102), *(_DWORD *)(*(_DWORD *)(v19 + 102) + 4) - *(_DWORD *)(*(_DWORD *)(v13 + 102) + 4)); v17 = sub_4D5720(a1); v3 = sub_4D67A0(v17, v16); } goto LABEL_6; } } LABEL_7: LOBYTE(v22) = 0; nullsub_2(v6); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineDistance"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E5600) -------------------------------------------------------- char *__stdcall sub_4E5600(void *a1, int a2, void *a3) { void *v3; // eax@1 void *v4; // ecx@2 void *v5; // eax@7 signed int v6; // eax@7 __int16 v7; // si@7 int v8; // eax@9 __int16 v9; // ax@9 int v10; // esi@10 void *v11; // eax@14 char *v12; // esi@14 char v14; // [sp+18h] [bp-370h]@1 char v15; // [sp+118h] [bp-270h]@1 char v16; // [sp+218h] [bp-170h]@1 int (__stdcall **v17)(int, int, int); // [sp+318h] [bp-70h]@2 int v18; // [sp+324h] [bp-64h]@13 char v19[4]; // [sp+358h] [bp-30h]@1 int v20; // [sp+35Ch] [bp-2Ch]@1 int v21; // [sp+360h] [bp-28h]@1 int v22; // [sp+364h] [bp-24h]@1 int v23; // [sp+368h] [bp-20h]@1 int v24; // [sp+36Ch] [bp-1Ch]@1 int v25; // [sp+370h] [bp-18h]@1 int v26; // [sp+374h] [bp-14h]@1 unsigned int v27; // [sp+378h] [bp-10h]@1 int v28; // [sp+384h] [bp-4h]@1 int v29; // [sp+388h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"; dword_750AB8[dword_750CB8++] = -1; v28 = 0; sub_4D5720(&v16); LOBYTE(v28) = 1; sub_4D5720(&v15); LOBYTE(v28) = 2; sub_4D59A0(a3, 1u, (int)&v15, a2); v3 = sub_5CF620(&v15); v26 = 0; v25 = 0; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; *(_DWORD *)v19 = 0; strncpy(v19, (const char *)v3, 0x20u); memcpy(&v14, (const void *)sub_4D59A0(a3, 0, (int)&v16, a2), 0x100u); LOBYTE(v28) = 3; if ( sub_4D58C0(&v14, "player") ) { sub_4E2180(&v17, -1, (int)v19, 0, 0, 99999); v4 = *(void **)(*(_DWORD *)(a2 + 65816) + 77292); LOBYTE(v28) = 4; if ( v4 != 0 ) sub_549B60(v4, (int)&v17, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_13; } if ( sub_4D58C0(&v14, (const char *)&off_6C6768) ) { sub_4E2180(&v17, -1, (int)v19, 0, 1, 99999); LOBYTE(v28) = 5; LABEL_12: sub_4E20B0(*(_DWORD *)(a2 + 65816), (int)&v17); LABEL_13: v10 = v18; LOBYTE(v28) = 3; v17 = &off_6C627C; sub_427EB0(&v17); goto LABEL_14; } v5 = sub_5CF620(&v16); v6 = sub_639620(&unk_14D16018, (unsigned __int8 *)v5); v7 = -1; if ( v6 != -1 ) v7 = v6; v8 = (int)sub_5CF620(&v16); LOBYTE(v9) = sub_4D56D0(v7 != -1, (int)"PineEventScriptNode::SysFuncShineCount::sfb_Calculate : MobName wrong", v8); if ( !v9 ) { sub_4E2180(&v17, v7, (int)v19, 0, 1, 99999); LOBYTE(v28) = 6; goto LABEL_12; } v10 = 0; LABEL_14: LOBYTE(v28) = 2; nullsub_2(&v14); v11 = sub_4D5720(a1); v12 = sub_4D67A0(v11, v10); LOBYTE(v28) = 1; nullsub_2(&v15); LOBYTE(v28) = 0; nullsub_2(&v16); --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"); return v12; } // 6C627C: using guessed type int (__stdcall *off_6C627C)(int, int, int); // 6C6768: using guessed type void *off_6C6768; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E58D0) -------------------------------------------------------- void *__stdcall sub_4E58D0(void *a1, int a2, void *a3) { int (__thiscall *v3)(void *, int); // esi@6 char (__thiscall *v4)(void *, int, int, int); // edi@7 void *v5; // ecx@9 void *v6; // esi@12 char *v7; // edi@12 void *v8; // ecx@12 char v10; // [sp+0h] [bp-1C44h]@12 int v11; // [sp+Ch] [bp-1C38h]@1 int v12; // [sp+10h] [bp-1C34h]@1 int v13; // [sp+14h] [bp-1C30h]@3 void *v14; // [sp+18h] [bp-1C2Ch]@1 int (__stdcall **v15)(int, int, int); // [sp+1Ch] [bp-1C28h]@9 int (__thiscall *v16)(void *, int); // [sp+20h] [bp-1C24h]@9 char (__thiscall *v17)(void *, int, int, int); // [sp+24h] [bp-1C20h]@9 char v18; // [sp+28h] [bp-1C1Ch]@9 int v19; // [sp+1A28h] [bp-21Ch]@9 int v20; // [sp+1A2Ch] [bp-218h]@9 int v21; // [sp+1A30h] [bp-214h]@9 char v22; // [sp+1A34h] [bp-210h]@5 char v23; // [sp+1B34h] [bp-110h]@1 unsigned int v24; // [sp+1C34h] [bp-10h]@1 int v25; // [sp+1C40h] [bp-4h]@1 int v26; // [sp+1C44h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v14 = a1; v11 = (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; sub_4D5720(&v23); LOBYTE(v25) = 1; v12 = 0; sub_4D59A0(a3, 1u, (int)&v23, a2); if ( (unsigned __int16)sub_4D5910(&v23, byte_6A492E) ) v12 = sub_4D5840(&v23, 0); v13 = 0; sub_4D59A0(a3, 2u, (int)&v23, a2); if ( (unsigned __int16)sub_4D5910(&v23, byte_6A492E) ) v13 = sub_4D5840(&v23, 0); memcpy(&v22, (const void *)sub_4D59A0(a3, 0, (int)&v23, a2), 0x100u); LOBYTE(v25) = 2; if ( sub_4D58C0(&v22, "ConditionOfHero") ) { v3 = sub_4E2270; } else { v3 = sub_4E2340; v4 = sub_4E4A70; if ( sub_4D58C0(&v22, "NewConditionOfHero") ) goto LABEL_9; } v4 = sub_4E4920; LABEL_9: LOBYTE(v25) = 1; nullsub_2(&v22); sub_427BE0(&v15); LOBYTE(v25) = 3; v15 = &off_6C6B44; _eh_vector_constructor_iterator_(&v18, 0x34u, 128, (int)sub_4E47A0, nullsub_2); v19 = v12; v20 = 0; v16 = v3; v17 = v4; v21 = v13; v5 = *(void **)(*(_DWORD *)(a2 + 65816) + 77292); LOBYTE(v25) = 4; if ( v5 ) sub_549B60(v5, (int)&v15, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); sub_4E2400((int)&v15); v6 = off_849C18; v7 = (char *)off_849C18 + 2; sub_4E4C40(&v15, v14, (int)((char *)off_849C18 + 2)); *(_WORD *)v6 = 22548; sub_4287B0(&v10, &off_849C18, 38 * (unsigned __int8)*v7 + 7); v8 = *(void **)(*(_DWORD *)(a2 + 65816) + 77292); LOBYTE(v25) = 5; if ( v8 ) sub_549B60(v8, (int)&v10, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v25) = 4; sub_428A70(&v10); v15 = &off_6C6B44; LOBYTE(v25) = 6; _LN21(&v18, 0x34u, 128, nullsub_2); LOBYTE(v25) = 1; sub_427EB0(&v15); LOBYTE(v25) = 0; nullsub_2(&v23); --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); return v14; } // 6C6B44: using guessed type int (__stdcall *off_6C6B44)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E5C10) -------------------------------------------------------- void *__stdcall sub_4E5C10(void *a1, int a2, void *a3) { int (__thiscall *v3)(void *, int); // esi@4 char (__thiscall *v4)(void *, int, int, int); // edi@5 void *v5; // ecx@7 void *v6; // ebx@10 int v7; // esi@10 int v8; // edi@10 int v9; // ecx@10 char v10; // al@10 int v11; // edi@13 int v12; // ebx@14 int v13; // eax@18 int v14; // eax@20 int v16; // [sp+4h] [bp-1C3Ch]@18 int v17; // [sp+8h] [bp-1C38h]@10 int v18; // [sp+10h] [bp-1C30h]@12 int v19; // [sp+14h] [bp-1C2Ch]@1 char *v20; // [sp+14h] [bp-1C2Ch]@13 int (__stdcall **v21)(int, int, int); // [sp+18h] [bp-1C28h]@7 int (__thiscall *v22)(void *, int); // [sp+1Ch] [bp-1C24h]@7 char (__thiscall *v23)(void *, int, int, int); // [sp+20h] [bp-1C20h]@7 char v24; // [sp+24h] [bp-1C1Ch]@7 char v25; // [sp+28h] [bp-1C18h]@13 int v26; // [sp+1A24h] [bp-21Ch]@7 int v27; // [sp+1A28h] [bp-218h]@7 int v28; // [sp+1A2Ch] [bp-214h]@7 char v29; // [sp+1A30h] [bp-210h]@3 char v30; // [sp+1B30h] [bp-110h]@1 unsigned int v31; // [sp+1C30h] [bp-10h]@1 int v32; // [sp+1C3Ch] [bp-4h]@1 int v33; // [sp+1C40h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v32 = 0; v19 = 0; sub_4D5720(&v30); LOBYTE(v32) = 1; sub_4D59A0(a3, 2u, (int)&v30, a2); if ( (unsigned __int16)sub_4D5910(&v30, byte_6A492E) ) v19 = sub_4D5840(&v30, 0); memcpy(&v29, (const void *)sub_4D59A0(a3, 0, (int)&v30, a2), 0x100u); LOBYTE(v32) = 2; if ( sub_4D58C0(&v29, "ConditionOfHero") ) { v3 = sub_4E2270; } else { v3 = sub_4E2340; v4 = sub_4E4A70; if ( sub_4D58C0(&v29, "NewConditionOfHero") ) goto LABEL_7; } v4 = sub_4E4920; LABEL_7: LOBYTE(v32) = 1; nullsub_2(&v29); sub_4D59A0(a3, 1u, (int)&v30, a2); sub_427BE0(&v21); LOBYTE(v32) = 3; v21 = &off_6C6B44; _eh_vector_constructor_iterator_(&v24, 0x34u, 128, (int)sub_4E47A0, nullsub_2); v26 = v19; v27 = 0; v22 = v3; v23 = v4; v28 = 0; v5 = *(void **)(*(_DWORD *)(a2 + 65816) + 77292); LOBYTE(v32) = 4; if ( v5 != 0 ) sub_549B60(v5, (int)&v21, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); sub_4E2400((int)&v21); v6 = off_849C18; v7 = (int)((char *)off_849C18 + 2); v8 = sub_4D5840(&v30, 0); sub_4E51D0(&v21, a1, v7, v8); *(_WORD *)v6 = 22561; v9 = *(_BYTE *)v7; v17 = v9; v10 = v8; if ( v8 >= v9 ) v10 = v9; *(_BYTE *)v7 = v10; v18 = 0; if ( v9 > 0 ) { v20 = &v25; v11 = v7 + 38; do { v12 = *(_DWORD *)v20; if ( *(_DWORD *)v20 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 768))(*(_DWORD *)v20) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1156))(v12) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1948))(v12) ) { *(_BYTE *)(v7 + 5) = v18; *(_DWORD *)(v7 + 14) = *(_DWORD *)(v11 + 8); *(_DWORD *)(v7 + 6) = *(_DWORD *)v11; v13 = 32 * *(_BYTE *)v7 + 20; *(_DWORD *)(v7 + 10) = *(_DWORD *)(v11 + 4); v16 = v13; if ( sub_4C81E0(&off_849C18, v13) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 764))(v12); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, v12, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate : Packet Too Long", v16); } } v20 += 52; v11 += 32; ++v18; } while ( v18 < v17 ); } v21 = &off_6C6B44; LOBYTE(v32) = 5; _LN21(&v24, 0x34u, 128, nullsub_2); LOBYTE(v32) = 1; sub_427EB0(&v21); LOBYTE(v32) = 0; nullsub_2(&v30); --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"); return a1; } // 6C6B44: using guessed type int (__stdcall *off_6C6B44)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E5FD0) -------------------------------------------------------- int __cdecl sub_4E5FD0(int a1, int a2, int a3, int a4) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = a3; result != a2; i += a4 ) { *(_DWORD *)result = i; result += 4; } return result; } //----- (004E6000) -------------------------------------------------------- void __cdecl sub_4E6000(int a1, int a2) { int v2; // ebx@1 int v3; // edi@2 int j; // esi@2 int v5; // edx@5 int v6; // ecx@5 int v7; // eax@5 unsigned int i; // [sp+4h] [bp-4h]@1 v2 = a1 + 4; for ( i = 2; v2 != a2; *(_DWORD *)v7 = v6 ) { v3 = 32767; for ( j = rand() & 0x7FFF; v3 < i; j = rand() & 0x7FFF | (j << 15) ) { if ( v3 == -1 ) break; v3 = (v3 << 15) | 0x7FFF; } v5 = j % i; v6 = *(_DWORD *)v2; ++i; v2 += 4; v7 = a1 + 4 * v5; *(_DWORD *)(v2 - 4) = *(_DWORD *)v7; } } //----- (004E6080) -------------------------------------------------------- void *__stdcall sub_4E6080(void *a1, int a2, void *a3) { int v3; // eax@1 __int16 v4; // ax@1 void *v5; // ecx@1 __int16 v6; // ax@2 int v7; // eax@2 int v8; // eax@4 int v9; // eax@4 __int16 v10; // ax@4 __int16 v11; // ax@5 int v12; // eax@7 __int16 v13; // ax@7 __int16 v14; // ST10_2@8 __int16 v15; // ST0C_2@8 int v16; // ST08_4@8 int v17; // eax@8 void *v18; // eax@9 int (__stdcall **v20)(int, int); // [sp+10h] [bp-334h]@4 int v21; // [sp+14h] [bp-330h]@4 int (__thiscall *v22)(int, int, int, int); // [sp+18h] [bp-32Ch]@4 char *v23; // [sp+1Ch] [bp-328h]@4 void *v24; // [sp+20h] [bp-324h]@4 __int16 v25; // [sp+24h] [bp-320h]@4 int v26; // [sp+28h] [bp-31Ch]@2 int v27; // [sp+2Ch] [bp-318h]@5 void *v28; // [sp+30h] [bp-314h]@1 char v29; // [sp+34h] [bp-310h]@4 char v30; // [sp+234h] [bp-110h]@1 unsigned int v31; // [sp+334h] [bp-10h]@1 int v32; // [sp+340h] [bp-4h]@1 int v33; // [sp+344h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v28 = a3; sub_4675D0((int)&unk_D020420, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"SysFuncShineIsCaptureFlag::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v32 = 0; sub_4D5720(&v30); LOBYTE(v32) = 1; v3 = sub_4D59A0(v28, 0, (int)&v30, a2); LOBYTE(v4) = sub_4D56D0(v3 != 0, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate : Argument err", 0); v5 = &v30; if ( !v4 ) { v6 = sub_4D5840(&v30, 0); v26 = (unsigned __int16)v6; v7 = sub_54DE90(&unk_13253630, v6); if ( v7 != 0 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1212))(v7); sub_465590((int)&v29, v8); v20 = &off_6A4700; v21 = (int)&unk_CFCF380; v22 = sub_4521E0; v23 = &v29; v24 = 0; v25 = -1; LOBYTE(v32) = 3; sub_43C470((int)&unk_CFCF380, (int)&v20); LOBYTE(v32) = 2; v20 = &off_6A2544; v9 = sub_4D59A0(v28, 1u, (int)&v30, a2); LOBYTE(v10) = sub_4D56D0(v9 != 0, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate : Argument err", 0); if ( !v10 ) { v11 = sub_4D5840(&v30, 0); v27 = sub_54DE90(&unk_13253630, v11); if ( v27 != 0 ) { v12 = sub_4D59A0(v28, 2u, (int)&v30, a2); LOBYTE(v13) = sub_4D56D0(v12 != 0, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate : Argument err", 0); if ( !v13 ) { v14 = sub_4D5840(&v30, 0); v15 = v26; v16 = v27; v17 = sub_4627E0(v24); if ( sub_478890((void *)v17, v16, v15, v14) ) { v18 = sub_4D5720(a1); sub_4D67A0(v18, 1); } else { sub_4D5720(a1); } } } else { sub_639100(&unk_86DDD8, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate : NO Object", 1); } } LOBYTE(v32) = 1; sub_4646E0((int)&v29); } else { sub_639100(&unk_86DDD8, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate : NO Object", 1); } v5 = &v30; } LOBYTE(v32) = 0; nullsub_2(v5); --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"SysFuncShineIsCaptureFlag::sfb_Calculate"); return a1; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E6340) -------------------------------------------------------- void *__stdcall sub_4E6340(void *a1, int a2, int a3) { int v3; // ecx@1 void *result; // eax@2 void *v5; // edi@3 int v6; // eax@4 int v7; // eax@4 void *v8; // eax@5 int v9; // ST04_4@6 void *v10; // eax@6 int (__stdcall **v11)(int, int); // [sp+14h] [bp-334h]@3 int v12; // [sp+18h] [bp-330h]@3 int (__thiscall *v13)(int, int, int, int); // [sp+1Ch] [bp-32Ch]@3 char *v14; // [sp+20h] [bp-328h]@3 void *v15; // [sp+24h] [bp-324h]@3 __int16 v16; // [sp+28h] [bp-320h]@3 char v17; // [sp+2Ch] [bp-31Ch]@3 char v18; // [sp+22Ch] [bp-11Ch]@1 char v19[4]; // [sp+32Ch] [bp-1Ch]@1 int v20; // [sp+330h] [bp-18h]@1 int v21; // [sp+334h] [bp-14h]@1 unsigned int v22; // [sp+338h] [bp-10h]@1 int v23; // [sp+344h] [bp-4h]@1 int v24; // [sp+348h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"SysFuncShineGetWinnerGuild::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"SysFuncShineGetWinnerGuild::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; sub_4D5720(&v18); v3 = *(_DWORD *)(a2 + 65816); LOBYTE(v23) = 1; v21 = 0; v20 = 0; *(_DWORD *)v19 = 0; if ( sub_4E2490(v3, v19) != 0 ) { sub_465590((int)&v17, (int)v19); v11 = &off_6A4700; v12 = (int)&unk_CFCF380; v13 = sub_4521E0; v14 = &v17; v15 = 0; v16 = -1; LOBYTE(v23) = 3; sub_43C470((int)&unk_CFCF380, (int)&v11); LOBYTE(v23) = 2; v11 = &off_6A2544; v5 = v15; if ( sub_4627E0(v15) ) { v6 = sub_4627E0(v5); v7 = sub_478460(v6); if ( v7 ) { v9 = v7; v10 = sub_4D5720(a1); sub_4D67A0(v10, v9); } else { v8 = sub_4D5720(a1); sub_4D6730(v8, "none"); } } LOBYTE(v23) = 1; sub_4646E0((int)&v17); LOBYTE(v23) = 0; nullsub_2(&v18); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"SysFuncShineGetWinnerGuild::sfb_Calculate"); result = a1; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineGetWinnerGuild::os_ObjectRegen : Not map name", 0); LOBYTE(v23) = 0; nullsub_2(&v18); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"SysFuncShineGetWinnerGuild::sfb_Calculate"); result = 0; } return result; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E6530) -------------------------------------------------------- void *__stdcall sub_4E6530(void *a1, int a2, int a3) { int v3; // ecx@1 void *result; // eax@2 void *v5; // edi@3 int v6; // eax@4 int v7; // eax@4 void *v8; // eax@5 int v9; // ST04_4@6 void *v10; // eax@6 int (__stdcall **v11)(int, int); // [sp+14h] [bp-334h]@3 int v12; // [sp+18h] [bp-330h]@3 int (__thiscall *v13)(int, int, int, int); // [sp+1Ch] [bp-32Ch]@3 char *v14; // [sp+20h] [bp-328h]@3 void *v15; // [sp+24h] [bp-324h]@3 __int16 v16; // [sp+28h] [bp-320h]@3 char v17; // [sp+2Ch] [bp-31Ch]@3 char v18; // [sp+22Ch] [bp-11Ch]@1 char v19[4]; // [sp+32Ch] [bp-1Ch]@1 int v20; // [sp+330h] [bp-18h]@1 int v21; // [sp+334h] [bp-14h]@1 unsigned int v22; // [sp+338h] [bp-10h]@1 int v23; // [sp+344h] [bp-4h]@1 int v24; // [sp+348h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"SysFuncShineGetLoseGuild::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"SysFuncShineGetLoseGuild::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; sub_4D5720(&v18); v3 = *(_DWORD *)(a2 + 65816); LOBYTE(v23) = 1; v21 = 0; v20 = 0; *(_DWORD *)v19 = 0; if ( sub_4E2490(v3, v19) != 0 ) { sub_465590((int)&v17, (int)v19); v11 = &off_6A4700; v12 = (int)&unk_CFCF380; v13 = sub_4521E0; v14 = &v17; v15 = 0; v16 = -1; LOBYTE(v23) = 3; sub_43C470((int)&unk_CFCF380, (int)&v11); LOBYTE(v23) = 2; v11 = &off_6A2544; v5 = v15; if ( sub_4627E0(v15) ) { v6 = sub_4627E0(v5); v7 = sub_478480(v6); if ( v7 ) { v9 = v7; v10 = sub_4D5720(a1); sub_4D67A0(v10, v9); } else { v8 = sub_4D5720(a1); sub_4D6730(v8, "none"); } } LOBYTE(v23) = 1; sub_4646E0((int)&v17); LOBYTE(v23) = 0; nullsub_2(&v18); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"SysFuncShineGetLoseGuild::sfb_Calculate"); result = a1; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineGetLoseGuild::os_ObjectRegen : Not map name", 0); LOBYTE(v23) = 0; nullsub_2(&v18); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"SysFuncShineGetLoseGuild::sfb_Calculate"); result = 0; } return result; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E6720) -------------------------------------------------------- void __cdecl sub_4E6720(int a1, int a2) { if ( a1 != a2 ) sub_4E6000(a1, a2); } //----- (004E6740) -------------------------------------------------------- int __stdcall sub_4E6740(int a1, int a2, int a3) { int v3; // eax@1 int i; // ecx@1 v3 = a2; for ( i = a1; v3; --v3 ) { *(_DWORD *)i = *(_DWORD *)a3; i += 4; } return a1 + 4 * a2; } //----- (004E6770) -------------------------------------------------------- void __thiscall sub_4E6770(int this, unsigned int a2, int a3) { int v3; // esi@1 int v4; // eax@4 unsigned int v5; // ecx@4 int v6; // edx@4 v3 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x3FFFFFFF ) sub_65178B((int)"vector too long"); v4 = sub_5ADF10(a2); *(_DWORD *)(v3 + 8) = v4 + 4 * a2; *(_DWORD *)v3 = v4; *(_DWORD *)(v3 + 4) = v4; v5 = a2; v6 = v4; if ( a2 > 0 ) { do { *(_DWORD *)v6 = *(_DWORD *)a3; v6 += 4; --v5; } while ( v5 ); } *(_DWORD *)(v3 + 4) = v4 + 4 * a2; } } //----- (004E67E0) -------------------------------------------------------- void *__stdcall sub_4E67E0(void *a1, int a2, void *a3) { int v3; // eax@1 __int16 v4; // ax@1 void *v5; // esi@2 void *result; // eax@2 int v7; // eax@3 __int16 v8; // ax@3 int v9; // ebx@4 int v10; // eax@4 signed __int16 v11; // ax@4 int v12; // edi@4 void *v13; // ebx@5 int v14; // esi@9 int *i; // esi@12 void *v16; // eax@13 int v17; // [sp+10h] [bp-22Ch]@4 void *v18; // [sp+14h] [bp-228h]@4 int v19; // [sp+18h] [bp-224h]@4 int v20; // [sp+1Ch] [bp-220h]@4 void *v21; // [sp+24h] [bp-218h]@1 int v22; // [sp+28h] [bp-214h]@3 char v23; // [sp+2Ch] [bp-210h]@4 char v24; // [sp+12Ch] [bp-110h]@1 unsigned int v25; // [sp+22Ch] [bp-10h]@1 int v26; // [sp+238h] [bp-4h]@1 int v27; // [sp+23Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v21 = a1; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; sub_4D5720(&v24); LOBYTE(v26) = 1; v3 = sub_4D59A0(a3, 0, (int)&v24, a2); LOBYTE(v4) = sub_4D56D0(v3 != 0, (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Argument err", 0); if ( v4 || (v22 = sub_4D5840(&v24, 0), v7 = sub_4D59A0(a3, 1u, (int)&v24, a2), LOBYTE(v8) = sub_4D56D0(v7 != 0, (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Argument err", 0), v8) ) { v5 = sub_4D5720(a1); LOBYTE(v26) = 0; nullsub_2(&v24); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); result = v5; } else { v9 = sub_4D5840(&v24, 0); v18 = 0; v19 = 0; v20 = 0; v17 = 0; sub_4E6770((int)&v18, v9 - v22 + 1, (int)&v17); LOBYTE(v26) = 2; v10 = sub_4D59A0(a3, 2u, (int)&v24, a2); memcpy(&v23, (const void *)sub_4D5730(v10), 0x100u); LOBYTE(v26) = 3; v11 = sub_4D58C0(&v23, "asc"); v12 = v19; if ( v11 ) { v13 = v18; sub_4E5FD0((int)v18, v19, v22, 1); } else { if ( sub_4D58C0(&v23, "desc") ) { sub_4E5FD0((int)v18, v12, v9, -1); } else { if ( sub_4D58C0(&v23, "shuffle") ) { v14 = (int)v18; sub_4E5FD0((int)v18, v12, v22, 1); sub_4E6720(v14, v12); } else { sub_4D56D0(0, (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Invalid order", 0); } } v13 = v18; } LOBYTE(v26) = 2; nullsub_2(&v23); for ( i = (int *)v13; i != (int *)v12; ++i ) { v16 = sub_4D67A0(v21, *i); sub_4D6730(v16, word_6A2BF8); } if ( v13 ) operator delete(v13); LOBYTE(v26) = 0; nullsub_2(&v24); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); result = v21; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E6AE0) -------------------------------------------------------- int __thiscall sub_4E6AE0(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // edx@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; } //----- (004E6B40) -------------------------------------------------------- int __thiscall sub_4E6B40(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 57) = 0; *(_DWORD *)(this + 53) = 0; *(_DWORD *)(this + 49) = 0; *(_DWORD *)(this + 45) = 0; *(_DWORD *)(this + 41) = 0; return result; } //----- (004E6B70) -------------------------------------------------------- int __stdcall sub_4E6B70(int a1, int a2, int a3) { int v3; // eax@1 char i; // cl@1 int v5; // edx@3 char v6; // cl@3 int j; // eax@3 sub_4675D0((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_makeindex"); dword_7508B8[dword_750CB8] = (int)"PineScriptMobRegenerator::psmr_makeindex"; v3 = a1; dword_750AB8[dword_750CB8++] = -1; for ( i = *(_BYTE *)a2; i; ++v3 ) { *(_BYTE *)v3 = i; i = *(_BYTE *)(a2 - a1 + v3 + 1); } v5 = a3; *(_BYTE *)v3 = 58; v6 = *(_BYTE *)a3; for ( j = v3 + 1; *(_BYTE *)v5; ++j ) { ++v5; *(_BYTE *)j = v6; v6 = *(_BYTE *)v5; } *(_BYTE *)j = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_makeindex"); return a1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E6C10) -------------------------------------------------------- void *__thiscall sub_4E6C10(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@1 v1 = this; sub_639540((int)((char *)this + 8)); *((_WORD *)v1 + 2) = 1024; v2 = 0; v3 = unknown_libname_130(147460); if ( v3 ) { v2 = v3 + 4; *(_DWORD *)v3 = 1024; _eh_vector_constructor_iterator_((void *)(v3 + 4), 0x90u, 1024, (int)sub_4E6B40, nullsub_2); } *(_DWORD *)v1 = v2; *((_WORD *)v1 + 3) = 0; return v1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (004E6CC0) -------------------------------------------------------- int __thiscall sub_4E6CC0(void *this, int a2, int a3, unsigned __int8 *a4) { void *v4; // esi@1 signed int v5; // ebx@1 int v6; // eax@1 int v7; // edi@2 int v8; // ecx@2 int v9; // eax@2 int v10; // ebx@3 void *v11; // edi@3 int v12; // eax@5 void *v13; // eax@7 void *v14; // ebx@8 __int16 v15; // dx@9 int v16; // eax@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_Store"); dword_7508B8[dword_750CB8] = (int)"PineScriptMobRegenerator::psmr_Store"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v6 = *((_WORD *)v4 + 2); if ( (unsigned __int16)v6 > *((_WORD *)v4 + 3) ) { LABEL_10: sub_4E6AE0(*(_DWORD *)v4 + 144 * *((_WORD *)v4 + 3) + 41, a2); v16 = *(_DWORD *)v4 + 144 * *((_WORD *)v4 + 3); *(_DWORD *)v16 = *(_DWORD *)a3; *(_DWORD *)(v16 + 4) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v16 + 12) = *(_DWORD *)(a3 + 12); *(_DWORD *)(v16 + 16) = *(_DWORD *)(a3 + 16); *(_BYTE *)(v16 + 20) = *(_BYTE *)(a3 + 20); *(_DWORD *)(v16 + 21) = *(_DWORD *)(a3 + 21); *(_DWORD *)(v16 + 25) = *(_DWORD *)(a3 + 25); *(_DWORD *)(v16 + 29) = *(_DWORD *)(a3 + 29); *(_DWORD *)(v16 + 33) = *(_DWORD *)(a3 + 33); *(_DWORD *)(v16 + 37) = *(_DWORD *)(a3 + 37); sub_639590((char *)v4 + 8, a4, *((_WORD *)v4 + 3)); *((_WORD *)v4 + 3) += v5; goto LABEL_11; } v7 = 2 * v6; v8 = 288 * v6 | -((unsigned __int8)(144 * (unsigned __int64)(unsigned int)(2 * v6) >> 32) != 0); v9 = unknown_libname_130((v8 + 4) | -__CFADD__(v8, 4)); if ( v9 ) { v10 = v9 + 4; *(_DWORD *)v9 = v7; _eh_vector_constructor_iterator_((void *)(v9 + 4), 0x90u, v7, (int)sub_4E6B40, nullsub_2); v11 = (void *)v10; v5 = 1; } else { v11 = 0; } v12 = *((_WORD *)v4 + 2); if ( v11 ) { memmove(v11, *(const void **)v4, 144 * v12); v13 = *(void **)v4; if ( *(_DWORD *)v4 ) { v14 = (char *)v13 - 4; _LN21(v13, 0x90u, *((_DWORD *)v13 - 1), nullsub_2); sub_6530A4(v14); v5 = 1; } v15 = *((_WORD *)v4 + 2); *(_DWORD *)v4 = v11; *((_WORD *)v4 + 2) = 2 * v15; goto LABEL_10; } sub_639100(&unk_86DDD8, (int)"PineScriptMobRegenerator::psmr_Store : Memory overflow", v12); LABEL_11: dword_750CB8 -= v5; return sub_467660((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_Store"); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004E6EC0) -------------------------------------------------------- char __thiscall sub_4E6EC0(void *this, const char *a2) { void *v2; // eax@1 void *v3; // ebx@2 int v5; // edi@5 int v6; // eax@6 int v7; // eax@6 int v8; // eax@7 int v9; // [sp-24h] [bp-164h]@7 int v10; // [sp-20h] [bp-160h]@7 int v11; // [sp-1Ch] [bp-15Ch]@5 int v12; // [sp-18h] [bp-158h]@5 int v13; // [sp-14h] [bp-154h]@5 int v14; // [sp-10h] [bp-150h]@5 int v15; // [sp-Ch] [bp-14Ch]@5 int v16; // [sp-8h] [bp-148h]@5 unsigned int v17; // [sp-4h] [bp-144h]@1 int v18; // [sp+Ch] [bp-134h]@1 int *v19; // [sp+10h] [bp-130h]@5 int v20; // [sp+14h] [bp-12Ch]@1 int v21; // [sp+18h] [bp-128h]@4 void *v22; // [sp+1Ch] [bp-124h]@1 char v23[4]; // [sp+20h] [bp-120h]@1 int v24; // [sp+24h] [bp-11Ch]@1 int v25; // [sp+28h] [bp-118h]@1 char v26; // [sp+30h] [bp-110h]@6 int v27; // [sp+B0h] [bp-90h]@6 unsigned int v28; // [sp+130h] [bp-10h]@1 int v29; // [sp+13Ch] [bp-4h]@1 int v30; // [sp+140h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v17 = (unsigned int)&v30 ^ __security_cookie; v22 = this; v20 = (int)a2; v18 = (int)"PineScriptMobRegenerator::psmr_Load"; sub_4675D0((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_Load"); dword_7508B8[dword_750CB8] = (int)"PineScriptMobRegenerator::psmr_Load"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v25 = 0; v24 = 0; *(_DWORD *)v23 = 0; strncpy(v23, a2, 0xCu); v2 = bsearch(v23, &unk_D9FB4B8, dword_D9FB7D8, 0x10u, (int (__cdecl *)(const void *, const void *))sub_4B0A90); if ( !v2 || (v3 = (void *)*((_DWORD *)v2 + 3)) == 0 ) { --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_Load"); return 0; } v21 = 0; while ( 1 ) { v16 = v21; v19 = &v11; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; strncpy((char *)&v11, "MobRegen", 0x14u); v5 = sub_6442C0(v3, v11, v12, v13, v14, v15, v16); if ( !v5 ) break; v6 = sub_649DA0(v5, (int)&v27); v7 = sub_4E6B70((int)&v26, v20, v6); if ( sub_639620((char *)v22 + 8, (unsigned __int8 *)v7) != -1 ) goto LABEL_10; v16 = 0; v15 = (int)&v27; v14 = (int)"GroupIndex"; v19 = &v9; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; strncpy((char *)&v9, "MobRegenGroup", 0x14u); v8 = sub_644460(v3, v9, v10, v11, v12, v13, (const char *)v14, v15, v16); if ( v8 != 0 ) { sub_4E6CC0(v22, v5, v8, (unsigned __int8 *)&v26); LABEL_10: ++v21; } else { sub_6390B0(&unk_86DDD8, (int)"PineScriptMobRegenerator::psmr_Load : Group name not found", (int)&v27); ++v21; } } --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_Load"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E7100) -------------------------------------------------------- int __thiscall sub_4E7100(void *this, const char *a2, int a3) { void *v3; // esi@1 int v4; // eax@1 signed int v5; // eax@1 int v6; // eax@4 signed int v7; // eax@4 int v8; // edi@6 int result; // eax@6 char v10; // [sp+10h] [bp-90h]@1 unsigned int v11; // [sp+90h] [bp-10h]@1 int v12; // [sp+9Ch] [bp-4h]@1 int v13; // [sp+A0h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_find"); dword_7508B8[dword_750CB8] = (int)"PineScriptMobRegenerator::psmr_find"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v4 = sub_4E6B70((int)&v10, (int)a2, a3); v5 = sub_639620((char *)v3 + 8, (unsigned __int8 *)v4); if ( v5 == -1 || v5 >= (unsigned int)*((_WORD *)v3 + 3) ) sub_4E6EC0(v3, a2); v6 = sub_4E6B70((int)&v10, (int)a2, a3); v7 = sub_639620((char *)v3 + 8, (unsigned __int8 *)v6); if ( v7 == -1 || v7 >= (unsigned int)*((_WORD *)v3 + 3) ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_find"); result = 0; } else { v8 = *(_DWORD *)v3 + 144 * v7; --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineScriptMobRegenerator::psmr_find"); result = v8; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004E7280) -------------------------------------------------------- void *__thiscall sub_4E7280(void *this) { void *v1; // esi@1 v1 = this; sub_427BE0(this); *(_DWORD *)v1 = &off_6C71A8; *((_DWORD *)v1 + 1) = 0; return v1; } // 6C71A8: using guessed type int (__stdcall *off_6C71A8)(int, int, int); //----- (004E72B0) -------------------------------------------------------- void *__thiscall sub_4E72B0(void *this, signed int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_427BE0(this); *((_DWORD *)v4 + 3) = a2 / 2; *((_DWORD *)v4 + 1) = a3; *(_DWORD *)v4 = &off_6C71B0; *((_DWORD *)v4 + 4) = 0; *((_DWORD *)v4 + 2) = a4; return v4; } // 6C71B0: using guessed type int (__stdcall *off_6C71B0)(int, int, int); //----- (004E7300) -------------------------------------------------------- int __thiscall sub_4E7300(void *this, int a2, int a3, const void *a4, int a5, char a6) { int result; // eax@1 int v7; // esi@1 result = sub_508300(this, a2, (int)off_855A38, a4, a5); v7 = result; if ( result ) { result = a6 - 72; switch ( a6 ) { case 109: result = ((signed int)((unsigned __int64)(10 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * a3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); goto LABEL_7; case 83: result = a3; *(_DWORD *)(v7 + 284) = 10 * a3; break; case 77: *(_DWORD *)(v7 + 284) = 600 * a3; break; case 72: result = 36000 * a3; LABEL_7: *(_DWORD *)(v7 + 284) = result; break; default: break; } *(_DWORD *)(v7 + 288) = dword_14D129E8 + *(_DWORD *)(v7 + 284); } return result; } // 855A38: using guessed type int (__stdcall *off_855A38[10])(int, int, int, int, int, int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (004E73E0) -------------------------------------------------------- char *__thiscall sub_4E73E0(void *this, int a2, const char *a3, const void *a4, int a5) { char *result; // eax@1 char *v6; // edi@1 char v7[4]; // [sp+Ch] [bp-44h]@2 int v8; // [sp+10h] [bp-40h]@2 int v9; // [sp+14h] [bp-3Ch]@2 int v10; // [sp+18h] [bp-38h]@2 int v11; // [sp+1Ch] [bp-34h]@2 int v12; // [sp+20h] [bp-30h]@2 int v13; // [sp+24h] [bp-2Ch]@2 char *v14; // [sp+28h] [bp-28h]@2 char v15[4]; // [sp+2Ch] [bp-24h]@2 int v16; // [sp+30h] [bp-20h]@2 int v17; // [sp+34h] [bp-1Ch]@2 int v18; // [sp+38h] [bp-18h]@2 int v19; // [sp+3Ch] [bp-14h]@2 int v20; // [sp+40h] [bp-10h]@2 int v21; // [sp+44h] [bp-Ch]@2 char *v22; // [sp+48h] [bp-8h]@2 unsigned int v23; // [sp+4Ch] [bp-4h]@1 int v24; // [sp+50h] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; result = (char *)sub_508300(this, a2, (int)off_855A28, a4, a5); v6 = result; if ( result ) { v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)v7 = 0; strncpy(v7, a3, 0x20u); v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)v15 = 0; strncpy(v15, "_NONE_", 0x20u); if ( *(_DWORD *)v15 == *(_DWORD *)v7 && v16 == v8 && v17 == v9 && v18 == v10 && v19 == v11 && v20 == v12 && v21 == v13 && (result = v22, v22 == v14) ) { *((_WORD *)v6 + 158) = -1; } else { *((_DWORD *)v6 + 78) = 0; *((_DWORD *)v6 + 77) = 0; *((_DWORD *)v6 + 76) = 0; *((_DWORD *)v6 + 75) = 0; *((_DWORD *)v6 + 74) = 0; *((_DWORD *)v6 + 73) = 0; *((_DWORD *)v6 + 72) = 0; *((_DWORD *)v6 + 71) = 0; result = strncpy(v6 + 284, a3, 0x20u); *((_WORD *)v6 + 158) = 0; } } return result; } // 855A28: using guessed type int (__stdcall *off_855A28[14])(int, int, int, int, int, int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004E7510) -------------------------------------------------------- char *__thiscall sub_4E7510(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ebx@1 char *result; // eax@1 int v7; // eax@2 v4 = this; v5 = sub_5CF620((void *)a3); result = (char *)sub_508300((char *)v4 + 66124, a2, (int)off_855A10, (const void *)(a3 + 256), a4); if ( result ) { v7 = (int)(result + 284); *(_DWORD *)(v7 + 28) = 0; *(_DWORD *)(v7 + 24) = 0; *(_DWORD *)(v7 + 20) = 0; *(_DWORD *)(v7 + 16) = 0; *(_DWORD *)(v7 + 12) = 0; *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)v7 = 0; result = strncpy((char *)v7, (const char *)v5, 0x20u); } return result; } // 855A10: using guessed type int (__stdcall *off_855A10[20])(int, int, int, int, int, int, int); //----- (004E7580) -------------------------------------------------------- char *__thiscall sub_4E7580(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ebx@1 char *result; // eax@1 int v7; // eax@2 v4 = this; v5 = sub_5CF620((void *)a3); result = (char *)sub_508300((char *)v4 + 66124, a2, (int)off_855A14, (const void *)(a3 + 256), a4); if ( result ) { v7 = (int)(result + 284); *(_DWORD *)(v7 + 28) = 0; *(_DWORD *)(v7 + 24) = 0; *(_DWORD *)(v7 + 20) = 0; *(_DWORD *)(v7 + 16) = 0; *(_DWORD *)(v7 + 12) = 0; *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)v7 = 0; result = strncpy((char *)v7, (const char *)v5, 0x20u); } return result; } // 855A14: using guessed type int (__stdcall *off_855A14[19])(int, int, int, int, int, int, int); //----- (004E75F0) -------------------------------------------------------- int __thiscall sub_4E75F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // bx@1 int result; // eax@1 v4 = this; v5 = sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v4 + 66124, a2, (int)off_855A18, (const void *)(a3 + 256), a4); if ( result ) *(_WORD *)(result + 284) = v5; return result; } // 855A18: using guessed type int (__stdcall *off_855A18[18])(int, int, int, int, int, int, int); //----- (004E7640) -------------------------------------------------------- char *__thiscall sub_4E7640(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ebx@1 char *result; // eax@1 int v7; // eax@2 v4 = this; v5 = sub_5CF620((void *)a3); result = (char *)sub_508300((char *)v4 + 66124, a2, (int)off_855A1C, (const void *)(a3 + 256), a4); if ( result ) { v7 = (int)(result + 284); *(_DWORD *)(v7 + 28) = 0; *(_DWORD *)(v7 + 24) = 0; *(_DWORD *)(v7 + 20) = 0; *(_DWORD *)(v7 + 16) = 0; *(_DWORD *)(v7 + 12) = 0; *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)v7 = 0; result = strncpy((char *)v7, (const char *)v5, 0x20u); } return result; } // 855A1C: using guessed type int (__stdcall *off_855A1C[17])(int, int, int, int, int, int, int); //----- (004E76B0) -------------------------------------------------------- int __thiscall sub_4E76B0(void *this, int a2, int a3, int a4, char a5) { void *v5; // esi@1 int v6; // eax@1 v5 = this; v6 = sub_4D5840((const char *)a3, 0); return sub_4E7300((char *)v5 + 66124, a2, v6, (const void *)(a3 + 256), a4, a5); } //----- (004E76F0) -------------------------------------------------------- int __thiscall sub_4E76F0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int v6; // ebx@1 int result; // eax@1 int v8; // [sp+18h] [bp+Ch]@1 v4 = a3; v5 = this; v6 = sub_4D5840((const char *)(a3 + 256), 0); v8 = (unsigned __int16)sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v5 + 66124, a2, (int)off_855A3C, (const void *)(v4 + 512), a4); if ( result ) { *(_WORD *)(result + 284) = v8; *(_DWORD *)(result + 288) = v6; *(_DWORD *)(result + 292) = 0; } return result; } // 855A3C: using guessed type int (__stdcall *off_855A3C[9])(int, int, int, int, int, int, int); //----- (004E7760) -------------------------------------------------------- int __thiscall sub_4E7760(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 result = sub_508300((void *)(this + 66124), a2, (int)off_855A34, (const void *)(a3 + 256), a4); v5 = result; if ( result ) { *(_DWORD *)(result + 284) = sub_4D5840((const char *)a3, 0); result = sub_4D5840((const char *)(a3 + 512), 0); *(_DWORD *)(v5 + 288) = result; *(_DWORD *)(v5 + 292) = 0; } return result; } // 855A34: using guessed type int (__stdcall *off_855A34[11])(int, int, int, int, int, int, int); //----- (004E77C0) -------------------------------------------------------- int __thiscall sub_4E77C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // bx@1 int result; // eax@1 v4 = this; v5 = sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v4 + 66124, a2, (int)off_855A24, (const void *)(a3 + 256), a4); if ( result ) *(_WORD *)(result + 284) = v5; return result; } // 855A24: using guessed type int (__stdcall *off_855A24[15])(int, int, int, int, int, int, int); //----- (004E7810) -------------------------------------------------------- char *__thiscall sub_4E7810(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 v4 = this; v5 = sub_5CF620((void *)a3); return sub_4E73E0((char *)v4 + 66124, a2, (const char *)v5, (const void *)(a3 + 256), a4); } //----- (004E7840) -------------------------------------------------------- int __thiscall sub_4E7840(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // bx@1 int result; // eax@1 v4 = this; v5 = sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v4 + 66124, a2, (int)off_855A44, (const void *)(a3 + 256), a4); if ( result ) *(_WORD *)(result + 284) = v5; return result; } // 855A44: using guessed type int (__stdcall *off_855A44[7])(int, int, int, int, int, int, int); //----- (004E7890) -------------------------------------------------------- int __thiscall sub_4E7890(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // bx@1 int result; // eax@1 v4 = this; v5 = sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v4 + 66124, a2, (int)off_855A48, (const void *)(a3 + 256), a4); if ( result ) *(_WORD *)(result + 284) = v5; return result; } // 855A48: using guessed type int (__stdcall *off_855A48[6])(int, int, int, int, int, int, int); //----- (004E78E0) -------------------------------------------------------- int __thiscall sub_4E78E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 __int16 v5; // bx@1 int result; // eax@1 v4 = this; v5 = sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v4 + 66124, a2, (int)off_855A58, (const void *)(a3 + 256), a4); if ( result ) *(_WORD *)(result + 284) = v5; return result; } // 855A58: using guessed type int (__stdcall *off_855A58[2])(int, int, int, int, int, int, int); //----- (004E7930) -------------------------------------------------------- int __thiscall sub_4E7930(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 signed int v6; // eax@1 signed __int16 v7; // bx@1 int result; // eax@3 v4 = this; v5 = sub_5CF620((void *)a3); v6 = sub_639620(&unk_14D20898, (unsigned __int8 *)v5); v7 = -1; if ( v6 != -1 ) v7 = v6; result = sub_508300((char *)v4 + 66124, a2, (int)off_855A50, (const void *)(a3 + 256), a4); if ( result ) *(_WORD *)(result + 284) = v7; return result; } // 855A50: using guessed type int (__stdcall *off_855A50[4])(int, int, int, int, int, int, int); //----- (004E7990) -------------------------------------------------------- int __thiscall sub_4E7990(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int v6; // ebx@1 int result; // eax@1 int v8; // [sp+18h] [bp+Ch]@1 v4 = a3; v5 = this; v6 = sub_4D5840((const char *)(a3 + 256), 0); v8 = (unsigned __int16)sub_4D5840((const char *)a3, 0); result = sub_508300((char *)v5 + 66124, a2, (int)&off_855A5C, (const void *)(v4 + 512), a4); if ( result ) { *(_WORD *)(result + 284) = v8; *(_DWORD *)(result + 288) = v6; *(_DWORD *)(result + 292) = 0; } return result; } // 855A5C: using guessed type int (__stdcall **off_855A5C)(int, int, int, int, int, int, int); //----- (004E7A00) -------------------------------------------------------- void __thiscall sub_4E7A00(void *this, int a2) { void *v2; // esi@1 char v3; // [sp+8h] [bp-110h]@1 unsigned int v4; // [sp+108h] [bp-10h]@1 int v5; // [sp+114h] [bp-4h]@1 int v6; // [sp+118h] [bp+0h]@1 v4 = (unsigned int)&v6 ^ __security_cookie; v2 = this; sub_4D5720(&v3); v5 = 0; sub_508300((char *)v2 + 66124, a2, (int)off_855A54, &v3, (int)&unk_98967F); v5 = -1; nullsub_2(&v3); } // 855A54: using guessed type int (__stdcall *off_855A54[3])(int, int, int, int, int, int, int); // 86FEB8: using guessed type int __security_cookie; //----- (004E7A90) -------------------------------------------------------- int __thiscall sub_4E7A90(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"printf", 0, 1, 1); *(_DWORD *)v1 = &off_6C71EC; return v1; } // 6C71EC: using guessed type int (__stdcall *off_6C71EC)(int); //----- (004E7AB0) -------------------------------------------------------- int __thiscall sub_4E7AB0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"scriptfile", 0, 1, 1); *(_DWORD *)v1 = &off_6C720C; return v1; } // 6C720C: using guessed type int (__stdcall *off_6C720C)(int); //----- (004E7AD0) -------------------------------------------------------- int __thiscall sub_4E7AD0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"timelimit", 1, 1, 1); *(_DWORD *)v1 = &off_6C7230; return v1; } // 6C7230: using guessed type int (__stdcall *off_6C7230)(int); //----- (004E7AF0) -------------------------------------------------------- int __thiscall sub_4E7AF0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"interruptclear", 0, 0, 0); *(_DWORD *)v1 = &off_6C7254; return v1; } // 6C7254: using guessed type int (__stdcall *off_6C7254)(int); //----- (004E7B10) -------------------------------------------------------- int __thiscall sub_4E7B10(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"interruptset", 1, 3, 5); *(_DWORD *)v1 = &off_6C727C; return v1; } // 6C727C: using guessed type int (__stdcall *off_6C727C)(int); //----- (004E7B30) -------------------------------------------------------- int __thiscall sub_4E7B30(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"interrupterase", 0, 1, 1); *(_DWORD *)v1 = &off_6C72A4; return v1; } // 6C72A4: using guessed type int (__stdcall *off_6C72A4)(int); //----- (004E7B50) -------------------------------------------------------- int __thiscall sub_4E7B50(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"waitinterrupt", 1, 1, 1); *(_DWORD *)v1 = &off_6C72CC; return v1; } // 6C72CC: using guessed type int (__stdcall *off_6C72CC)(int); //----- (004E7B70) -------------------------------------------------------- int __thiscall sub_4E7B70(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"mobregen", 1, 6, 7); *(_DWORD *)v1 = &off_6C72F4; return v1; } // 6C72F4: using guessed type int (__stdcall *off_6C72F4)(int); //----- (004E7B90) -------------------------------------------------------- int __thiscall sub_4E7B90(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"doorbuild", 1, 6, 6); *(_DWORD *)v1 = &off_6C730C; return v1; } // 6C730C: using guessed type int (__stdcall *off_6C730C)(int); //----- (004E7BB0) -------------------------------------------------------- int __thiscall sub_4E7BB0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"npcstand", 1, 6, 6); *(_DWORD *)v1 = &off_6C7324; return v1; } // 6C7324: using guessed type int (__stdcall *off_6C7324)(int); //----- (004E7BD0) -------------------------------------------------------- int __thiscall sub_4E7BD0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"change2mob", 1, 1, 1); *(_DWORD *)v1 = &off_6C733C; return v1; } // 6C733C: using guessed type int (__stdcall *off_6C733C)(int); //----- (004E7BF0) -------------------------------------------------------- int __thiscall sub_4E7BF0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"change2door", 1, 1, 1); *(_DWORD *)v1 = &off_6C7354; return v1; } // 6C7354: using guessed type int (__stdcall *off_6C7354)(int); //----- (004E7C10) -------------------------------------------------------- int __thiscall sub_4E7C10(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"change2npc", 1, 1, 1); *(_DWORD *)v1 = &off_6C736C; return v1; } // 6C736C: using guessed type int (__stdcall *off_6C736C)(int); //----- (004E7C30) -------------------------------------------------------- int __thiscall sub_4E7C30(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"exchange2mob", 1, 1, 1); *(_DWORD *)v1 = &off_6C7384; return v1; } // 6C7384: using guessed type int (__stdcall *off_6C7384)(int); //----- (004E7C50) -------------------------------------------------------- int __thiscall sub_4E7C50(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"dooropen", 1, 1, 1); *(_DWORD *)v1 = &off_6C73AC; return v1; } // 6C73AC: using guessed type int (__stdcall *off_6C73AC)(int); //----- (004E7C70) -------------------------------------------------------- int __thiscall sub_4E7C70(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"doorclose", 1, 1, 1); *(_DWORD *)v1 = &off_6C73D0; return v1; } // 6C73D0: using guessed type int (__stdcall *off_6C73D0)(int); //----- (004E7C90) -------------------------------------------------------- int __thiscall sub_4E7C90(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"vanish", 1, 0, 0); *(_DWORD *)v1 = &off_6C73F4; return v1; } // 6C73F4: using guessed type int (__stdcall *off_6C73F4)(int); //----- (004E7CB0) -------------------------------------------------------- int __thiscall sub_4E7CB0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"regengroup", 0, 2, 4); *(_DWORD *)v1 = &off_6C7414; return v1; } // 6C7414: using guessed type int (__stdcall *off_6C7414)(int); //----- (004E7CD0) -------------------------------------------------------- int __thiscall sub_4E7CD0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"waitlogin", 1, 0, 0); *(_DWORD *)v1 = &off_6C7438; return v1; } // 6C7438: using guessed type int (__stdcall *off_6C7438)(int); //----- (004E7CF0) -------------------------------------------------------- int __thiscall sub_4E7CF0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"pause", 1, 1, 1); *(_DWORD *)v1 = &off_6C745C; return v1; } // 6C745C: using guessed type int (__stdcall *off_6C745C)(int); //----- (004E7D10) -------------------------------------------------------- int __thiscall sub_4E7D10(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"npcchat", 1, 1, 1); *(_DWORD *)v1 = &off_6C747C; return v1; } // 6C747C: using guessed type int (__stdcall *off_6C747C)(int); //----- (004E7D30) -------------------------------------------------------- int __thiscall sub_4E7D30(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"npcshout", 1, 1, 1); *(_DWORD *)v1 = &off_6C749C; return v1; } // 6C749C: using guessed type int (__stdcall *off_6C749C)(int); //----- (004E7D50) -------------------------------------------------------- int __thiscall sub_4E7D50(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"chatwin", 0, 2, 9); *(_DWORD *)v1 = &off_6C74C0; return v1; } // 6C74C0: using guessed type int (__stdcall *off_6C74C0)(int); //----- (004E7D70) -------------------------------------------------------- int __thiscall sub_4E7D70(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"chatwinrange", 0, 4, 9); *(_DWORD *)v1 = &off_6C74E0; return v1; } // 6C74E0: using guessed type int (__stdcall *off_6C74E0)(int); //----- (004E7D90) -------------------------------------------------------- int __thiscall sub_4E7D90(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"someoneshout", 0, 2, 2); *(_DWORD *)v1 = &off_6C7508; return v1; } // 6C7508: using guessed type int (__stdcall *off_6C7508)(int); //----- (004E7DB0) -------------------------------------------------------- int __thiscall sub_4E7DB0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"summonmob", 1, 2, 2); *(_DWORD *)v1 = &off_6C7530; return v1; } // 6C7530: using guessed type int (__stdcall *off_6C7530)(int); //----- (004E7DD0) -------------------------------------------------------- int __thiscall sub_4E7DD0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"questresult", 1, 0, 0); *(_DWORD *)v1 = &off_6C7554; return v1; } // 6C7554: using guessed type int (__stdcall *off_6C7554)(int); //----- (004E7DF0) -------------------------------------------------------- int __thiscall sub_4E7DF0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"reward", 1, 0, 0); *(_DWORD *)v1 = &off_6C7578; return v1; } // 6C7578: using guessed type int (__stdcall *off_6C7578)(int); //----- (004E7E10) -------------------------------------------------------- int __thiscall sub_4E7E10(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"broadcast", 1, 1, 2); *(_DWORD *)v1 = &off_6C7598; return v1; } // 6C7598: using guessed type int (__stdcall *off_6C7598)(int); //----- (004E7E30) -------------------------------------------------------- int __thiscall sub_4E7E30(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"linkto", 1, 4, 4); *(_DWORD *)v1 = &off_6C75BC; return v1; } // 6C75BC: using guessed type int (__stdcall *off_6C75BC)(int); //----- (004E7E50) -------------------------------------------------------- int __thiscall sub_4E7E50(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"whoclickme", 1, 1, 1); *(_DWORD *)v1 = &off_6C75DC; return v1; } // 6C75DC: using guessed type int (__stdcall *off_6C75DC)(int); //----- (004E7E70) -------------------------------------------------------- int __thiscall sub_4E7E70(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"whokillme", 1, 1, 1); *(_DWORD *)v1 = &off_6C7600; return v1; } // 6C7600: using guessed type int (__stdcall *off_6C7600)(int); //----- (004E7E90) -------------------------------------------------------- int __thiscall sub_4E7E90(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"itemdrop", 1, 2, 2); *(_DWORD *)v1 = &off_6C7624; return v1; } // 6C7624: using guessed type int (__stdcall *off_6C7624)(int); //----- (004E7EB0) -------------------------------------------------------- int __thiscall sub_4E7EB0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"invensearch", 1, 2, 2); *(_DWORD *)v1 = &off_6C7648; return v1; } // 6C7648: using guessed type int (__stdcall *off_6C7648)(int); //----- (004E7ED0) -------------------------------------------------------- int __thiscall sub_4E7ED0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"itemcreate", 1, 1, 1); *(_DWORD *)v1 = &off_6C766C; return v1; } // 6C766C: using guessed type int (__stdcall *off_6C766C)(int); //----- (004E7EF0) -------------------------------------------------------- int __thiscall sub_4E7EF0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"itemerase", 1, 1, 2); *(_DWORD *)v1 = &off_6C7690; return v1; } // 6C7690: using guessed type int (__stdcall *off_6C7690)(int); //----- (004E7F10) -------------------------------------------------------- int __thiscall sub_4E7F10(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"findhandle", 1, 2, 2); *(_DWORD *)v1 = &off_6C76B4; return v1; } // 6C76B4: using guessed type int (__stdcall *off_6C76B4)(int); //----- (004E7F30) -------------------------------------------------------- int __thiscall sub_4E7F30(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"abstateset", 1, 3, 4); *(_DWORD *)v1 = &off_6C76D8; return v1; } // 6C76D8: using guessed type int (__stdcall *off_6C76D8)(int); //----- (004E7F50) -------------------------------------------------------- int __thiscall sub_4E7F50(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"abstatereset", 1, 1, 1); *(_DWORD *)v1 = &off_6C76FC; return v1; } // 6C76FC: using guessed type int (__stdcall *off_6C76FC)(int); //----- (004E7F70) -------------------------------------------------------- int __thiscall sub_4E7F70(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"suicide", 1, 0, 0); *(_DWORD *)v1 = &off_6C7724; return v1; } // 6C7724: using guessed type int (__stdcall *off_6C7724)(int); //----- (004E7F90) -------------------------------------------------------- int __thiscall sub_4E7F90(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)&off_6C7758, 1, 2, 2); *(_DWORD *)v1 = &off_6C7744; return v1; } // 6C7744: using guessed type int (__stdcall *off_6C7744)(int); // 6C7758: using guessed type void *off_6C7758; //----- (004E7FB0) -------------------------------------------------------- int __thiscall sub_4E7FB0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"walk", 1, 2, 2); *(_DWORD *)v1 = &off_6C7760; return v1; } // 6C7760: using guessed type int (__stdcall *off_6C7760)(int); //----- (004E7FD0) -------------------------------------------------------- int __thiscall sub_4E7FD0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"maplight", 0, 3, 3); *(_DWORD *)v1 = &off_6C7780; return v1; } // 6C7780: using guessed type int (__stdcall *off_6C7780)(int); //----- (004E7FF0) -------------------------------------------------------- int __thiscall sub_4E7FF0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"mapfog", 0, 2, 2); *(_DWORD *)v1 = &off_6C77A4; return v1; } // 6C77A4: using guessed type int (__stdcall *off_6C77A4)(int); //----- (004E8010) -------------------------------------------------------- int __thiscall sub_4E8010(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"effectobj", 1, 4, 4); *(_DWORD *)v1 = &off_6C77C4; return v1; } // 6C77C4: using guessed type int (__stdcall *off_6C77C4)(int); //----- (004E8030) -------------------------------------------------------- int __thiscall sub_4E8030(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"effectloc", 1, 6, 6); *(_DWORD *)v1 = &off_6C77E8; return v1; } // 6C77E8: using guessed type int (__stdcall *off_6C77E8)(int); //----- (004E8050) -------------------------------------------------------- int __thiscall sub_4E8050(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"aggro", 1, 2, 2); *(_DWORD *)v1 = &off_6C780C; return v1; } // 6C780C: using guessed type int (__stdcall *off_6C780C)(int); //----- (004E8070) -------------------------------------------------------- int __thiscall sub_4E8070(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"mobweaponrate", 1, 1, 8); *(_DWORD *)v1 = &off_6C782C; return v1; } // 6C782C: using guessed type int (__stdcall *off_6C782C)(int); //----- (004E8090) -------------------------------------------------------- int __thiscall sub_4E8090(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"mobdetectrange", 1, 1, 1); *(_DWORD *)v1 = &off_6C7854; return v1; } // 6C7854: using guessed type int (__stdcall *off_6C7854)(int); //----- (004E80B0) -------------------------------------------------------- int __thiscall sub_4E80B0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"heal", 1, 1, 1); *(_DWORD *)v1 = &off_6C787C; return v1; } // 6C787C: using guessed type int (__stdcall *off_6C787C)(int); //----- (004E80D0) -------------------------------------------------------- int __thiscall sub_4E80D0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"animate", 1, 1, 1); *(_DWORD *)v1 = &off_6C789C; return v1; } // 6C789C: using guessed type int (__stdcall *off_6C789C)(int); //----- (004E80F0) -------------------------------------------------------- int __thiscall sub_4E80F0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"duplicate", 1, 1, 1); *(_DWORD *)v1 = &off_6C78BC; return v1; } // 6C78BC: using guessed type int (__stdcall *off_6C78BC)(int); //----- (004E8110) -------------------------------------------------------- int __thiscall sub_4E8110(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"waitidle", 0, 0, 0); *(_DWORD *)v1 = &off_6C78E0; return v1; } // 6C78E0: using guessed type int (__stdcall *off_6C78E0)(int); //----- (004E8130) -------------------------------------------------------- int __thiscall sub_4E8130(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"deathcountclear", 0, 0, 0); *(_DWORD *)v1 = &off_6C7904; return v1; } // 6C7904: using guessed type int (__stdcall *off_6C7904)(int); //----- (004E8150) -------------------------------------------------------- int __thiscall sub_4E8150(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"itemattrset", 1, 2, 2); *(_DWORD *)v1 = &off_6C792C; return v1; } // 6C792C: using guessed type int (__stdcall *off_6C792C)(int); //----- (004E8170) -------------------------------------------------------- int __thiscall sub_4E8170(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"scinariocode", 1, 1, 1); *(_DWORD *)v1 = &off_6C7950; return v1; } // 6C7950: using guessed type int (__stdcall *off_6C7950)(int); //----- (004E8190) -------------------------------------------------------- int __thiscall sub_4E8190(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"battlestart", 1, 0, 2); *(_DWORD *)v1 = &off_6C7978; return v1; } // 6C7978: using guessed type int (__stdcall *off_6C7978)(int); //----- (004E81B0) -------------------------------------------------------- int __thiscall sub_4E81B0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"battlestop", 1, 0, 0); *(_DWORD *)v1 = &off_6C799C; return v1; } // 6C799C: using guessed type int (__stdcall *off_6C799C)(int); //----- (004E81D0) -------------------------------------------------------- int __thiscall sub_4E81D0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"sendquestresult", 1, 1, 1); *(_DWORD *)v1 = &off_6C79C0; return v1; } // 6C79C0: using guessed type int (__stdcall *off_6C79C0)(int); //----- (004E81F0) -------------------------------------------------------- int __thiscall sub_4E81F0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"invidualreward", 0, 2, 2); *(_DWORD *)v1 = &off_6C79E8; return v1; } // 6C79E8: using guessed type int (__stdcall *off_6C79E8)(int); //----- (004E8210) -------------------------------------------------------- int __thiscall sub_4E8210(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"returnvalue", 0, 2, 2); *(_DWORD *)v1 = &off_6C7A10; return v1; } // 6C7A10: using guessed type int (__stdcall *off_6C7A10)(int); //----- (004E8230) -------------------------------------------------------- int __thiscall sub_4E8230(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"sublayershift", 1, 2, 2); *(_DWORD *)v1 = &off_6C7A34; return v1; } // 6C7A34: using guessed type int (__stdcall *off_6C7A34)(int); //----- (004E8250) -------------------------------------------------------- int __thiscall sub_4E8250(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"teleport", 1, 1, 3); *(_DWORD *)v1 = &off_6C7A5C; return v1; } // 6C7A5C: using guessed type int (__stdcall *off_6C7A5C)(int); //----- (004E8270) -------------------------------------------------------- int __thiscall sub_4E8270(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"itemowner", 1, 2, 2); *(_DWORD *)v1 = &off_6C7A80; return v1; } // 6C7A80: using guessed type int (__stdcall *off_6C7A80)(int); //----- (004E8290) -------------------------------------------------------- int __thiscall sub_4E8290(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"mobattr", 1, 2, 2); *(_DWORD *)v1 = &off_6C7AA4; return v1; } // 6C7AA4: using guessed type int (__stdcall *off_6C7AA4)(int); //----- (004E82B0) -------------------------------------------------------- int __thiscall sub_4E82B0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"collect", 1, 4, 4); *(_DWORD *)v1 = &off_6C7AC4; return v1; } // 6C7AC4: using guessed type int (__stdcall *off_6C7AC4)(int); //----- (004E82D0) -------------------------------------------------------- int __thiscall sub_4E82D0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"endofkq", 0, 0, 0); *(_DWORD *)v1 = &off_6C7AE4; return v1; } // 6C7AE4: using guessed type int (__stdcall *off_6C7AE4)(int); //----- (004E82F0) -------------------------------------------------------- int __thiscall sub_4E82F0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"endofgt", 0, 2, 2); *(_DWORD *)v1 = &off_6C7B04; return v1; } // 6C7B04: using guessed type int (__stdcall *off_6C7B04)(int); //----- (004E8310) -------------------------------------------------------- int __thiscall sub_4E8310(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"gtresult", 1, 1, 2); *(_DWORD *)v1 = &off_6C7B24; return v1; } // 6C7B24: using guessed type int (__stdcall *off_6C7B24)(int); //----- (004E8330) -------------------------------------------------------- int __thiscall sub_4E8330(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"costumecreate", 1, 3, 3); *(_DWORD *)v1 = &off_6C7B48; return v1; } // 6C7B48: using guessed type int (__stdcall *off_6C7B48)(int); //----- (004E8350) -------------------------------------------------------- int __thiscall sub_4E8350(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"costumetakeoff", 1, 2, 2); *(_DWORD *)v1 = &off_6C7B70; return v1; } // 6C7B70: using guessed type int (__stdcall *off_6C7B70)(int); //----- (004E8370) -------------------------------------------------------- int __thiscall sub_4E8370(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"weddingcomplete", 0, 2, 2); *(_DWORD *)v1 = &off_6C7B98; return v1; } // 6C7B98: using guessed type int (__stdcall *off_6C7B98)(int); //----- (004E8390) -------------------------------------------------------- int __thiscall sub_4E8390(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"playerwork", 1, 2, 2); *(_DWORD *)v1 = &off_6C7BC0; return v1; } // 6C7BC0: using guessed type int (__stdcall *off_6C7BC0)(int); //----- (004E83B0) -------------------------------------------------------- int __thiscall sub_4E83B0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"findplayer", 1, 1, 2); *(_DWORD *)v1 = &off_6C7BE4; return v1; } // 6C7BE4: using guessed type int (__stdcall *off_6C7BE4)(int); //----- (004E83D0) -------------------------------------------------------- int __thiscall sub_4E83D0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"teleportall", 1, 0, 4); *(_DWORD *)v1 = &off_6C7C08; return v1; } // 6C7C08: using guessed type int (__stdcall *off_6C7C08)(int); //----- (004E83F0) -------------------------------------------------------- int __thiscall sub_4E83F0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"briefeffect", 1, 1, 1); *(_DWORD *)v1 = &off_6C7C2C; return v1; } // 6C7C2C: using guessed type int (__stdcall *off_6C7C2C)(int); //----- (004E8410) -------------------------------------------------------- int __thiscall sub_4E8410(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"banfromarea", 0, 5, 5); *(_DWORD *)v1 = &off_6C7C50; return v1; } // 6C7C50: using guessed type int (__stdcall *off_6C7C50)(int); //----- (004E8430) -------------------------------------------------------- int __thiscall sub_4E8430(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"RegisteFlag", 0, 3, 3); *(_DWORD *)v1 = &off_6C7C74; return v1; } // 6C7C74: using guessed type int (__stdcall *off_6C7C74)(int); //----- (004E8450) -------------------------------------------------------- int __thiscall sub_4E8450(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"RegisteGate", 0, 4, 4); *(_DWORD *)v1 = &off_6C7C98; return v1; } // 6C7C98: using guessed type int (__stdcall *off_6C7C98)(int); //----- (004E8470) -------------------------------------------------------- int __thiscall sub_4E8470(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"DiceGameStart", 0, 1, 1); *(_DWORD *)v1 = &off_6C7CBC; return v1; } // 6C7CBC: using guessed type int (__stdcall *off_6C7CBC)(int); //----- (004E8490) -------------------------------------------------------- int __thiscall sub_4E8490(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"revival", 1, 0, 0); *(_DWORD *)v1 = &off_6C7CE4; return v1; } // 6C7CE4: using guessed type int (__stdcall *off_6C7CE4)(int); //----- (004E84B0) -------------------------------------------------------- int __thiscall sub_4E84B0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"spawn", 0, 1, 2); *(_DWORD *)v1 = &off_6C7D04; return v1; } // 6C7D04: using guessed type int (__stdcall *off_6C7D04)(int); //----- (004E84D0) -------------------------------------------------------- int __thiscall sub_4E84D0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"hpset", 1, 1, 1); *(_DWORD *)v1 = &off_6C7D24; return v1; } // 6C7D24: using guessed type int (__stdcall *off_6C7D24)(int); //----- (004E84F0) -------------------------------------------------------- int __thiscall sub_4E84F0(int this) { int v1; // esi@1 v1 = this; sub_4DA2C0(this, (int)"questmobkill", 0, 3, 3); *(_DWORD *)v1 = &off_6C7D44; return v1; } // 6C7D44: using guessed type int (__stdcall *off_6C7D44)(int); //----- (004E8510) -------------------------------------------------------- int __cdecl sub_4E8510() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"printf", 0, 1, 1); *(_DWORD *)v1 = &off_6C71EC; result = v1; } return result; } // 6C71EC: using guessed type int (__stdcall *off_6C71EC)(int); //----- (004E8580) -------------------------------------------------------- int __cdecl sub_4E8580() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"scriptfile", 0, 1, 1); *(_DWORD *)v1 = &off_6C720C; result = v1; } return result; } // 6C720C: using guessed type int (__stdcall *off_6C720C)(int); //----- (004E85F0) -------------------------------------------------------- int __cdecl sub_4E85F0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"timelimit", 1, 1, 1); *(_DWORD *)v1 = &off_6C7230; result = v1; } return result; } // 6C7230: using guessed type int (__stdcall *off_6C7230)(int); //----- (004E8660) -------------------------------------------------------- int __cdecl sub_4E8660() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"interruptclear", 0, 0, 0); *(_DWORD *)v1 = &off_6C7254; result = v1; } return result; } // 6C7254: using guessed type int (__stdcall *off_6C7254)(int); //----- (004E86D0) -------------------------------------------------------- int __cdecl sub_4E86D0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"interruptset", 1, 3, 5); *(_DWORD *)v1 = &off_6C727C; result = v1; } return result; } // 6C727C: using guessed type int (__stdcall *off_6C727C)(int); //----- (004E8740) -------------------------------------------------------- int __cdecl sub_4E8740() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"interrupterase", 0, 1, 1); *(_DWORD *)v1 = &off_6C72A4; result = v1; } return result; } // 6C72A4: using guessed type int (__stdcall *off_6C72A4)(int); //----- (004E87B0) -------------------------------------------------------- int __cdecl sub_4E87B0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"waitinterrupt", 1, 1, 1); *(_DWORD *)v1 = &off_6C72CC; result = v1; } return result; } // 6C72CC: using guessed type int (__stdcall *off_6C72CC)(int); //----- (004E8820) -------------------------------------------------------- int __cdecl sub_4E8820() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"mobregen", 1, 6, 7); *(_DWORD *)v1 = &off_6C72F4; result = v1; } return result; } // 6C72F4: using guessed type int (__stdcall *off_6C72F4)(int); //----- (004E8890) -------------------------------------------------------- int __cdecl sub_4E8890() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"doorbuild", 1, 6, 6); *(_DWORD *)v1 = &off_6C730C; result = v1; } return result; } // 6C730C: using guessed type int (__stdcall *off_6C730C)(int); //----- (004E8900) -------------------------------------------------------- int __cdecl sub_4E8900() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"npcstand", 1, 6, 6); *(_DWORD *)v1 = &off_6C7324; result = v1; } return result; } // 6C7324: using guessed type int (__stdcall *off_6C7324)(int); //----- (004E8970) -------------------------------------------------------- int __cdecl sub_4E8970() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"change2mob", 1, 1, 1); *(_DWORD *)v1 = &off_6C733C; result = v1; } return result; } // 6C733C: using guessed type int (__stdcall *off_6C733C)(int); //----- (004E89E0) -------------------------------------------------------- int __cdecl sub_4E89E0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"change2door", 1, 1, 1); *(_DWORD *)v1 = &off_6C7354; result = v1; } return result; } // 6C7354: using guessed type int (__stdcall *off_6C7354)(int); //----- (004E8A50) -------------------------------------------------------- int __cdecl sub_4E8A50() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"change2npc", 1, 1, 1); *(_DWORD *)v1 = &off_6C736C; result = v1; } return result; } // 6C736C: using guessed type int (__stdcall *off_6C736C)(int); //----- (004E8AC0) -------------------------------------------------------- int __cdecl sub_4E8AC0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"exchange2mob", 1, 1, 1); *(_DWORD *)v1 = &off_6C7384; result = v1; } return result; } // 6C7384: using guessed type int (__stdcall *off_6C7384)(int); //----- (004E8B30) -------------------------------------------------------- int __cdecl sub_4E8B30() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"dooropen", 1, 1, 1); *(_DWORD *)v1 = &off_6C73AC; result = v1; } return result; } // 6C73AC: using guessed type int (__stdcall *off_6C73AC)(int); //----- (004E8BA0) -------------------------------------------------------- int __cdecl sub_4E8BA0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"doorclose", 1, 1, 1); *(_DWORD *)v1 = &off_6C73D0; result = v1; } return result; } // 6C73D0: using guessed type int (__stdcall *off_6C73D0)(int); //----- (004E8C10) -------------------------------------------------------- int __cdecl sub_4E8C10() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"vanish", 1, 0, 0); *(_DWORD *)v1 = &off_6C73F4; result = v1; } return result; } // 6C73F4: using guessed type int (__stdcall *off_6C73F4)(int); //----- (004E8C80) -------------------------------------------------------- int __cdecl sub_4E8C80() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"regengroup", 0, 2, 4); *(_DWORD *)v1 = &off_6C7414; result = v1; } return result; } // 6C7414: using guessed type int (__stdcall *off_6C7414)(int); //----- (004E8CF0) -------------------------------------------------------- int __cdecl sub_4E8CF0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"waitlogin", 1, 0, 0); *(_DWORD *)v1 = &off_6C7438; result = v1; } return result; } // 6C7438: using guessed type int (__stdcall *off_6C7438)(int); //----- (004E8D60) -------------------------------------------------------- int __cdecl sub_4E8D60() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"pause", 1, 1, 1); *(_DWORD *)v1 = &off_6C745C; result = v1; } return result; } // 6C745C: using guessed type int (__stdcall *off_6C745C)(int); //----- (004E8DD0) -------------------------------------------------------- int __cdecl sub_4E8DD0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"npcchat", 1, 1, 1); *(_DWORD *)v1 = &off_6C747C; result = v1; } return result; } // 6C747C: using guessed type int (__stdcall *off_6C747C)(int); //----- (004E8E40) -------------------------------------------------------- int __cdecl sub_4E8E40() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"npcshout", 1, 1, 1); *(_DWORD *)v1 = &off_6C749C; result = v1; } return result; } // 6C749C: using guessed type int (__stdcall *off_6C749C)(int); //----- (004E8EB0) -------------------------------------------------------- int __cdecl sub_4E8EB0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"chatwin", 0, 2, 9); *(_DWORD *)v1 = &off_6C74C0; result = v1; } return result; } // 6C74C0: using guessed type int (__stdcall *off_6C74C0)(int); //----- (004E8F20) -------------------------------------------------------- int __cdecl sub_4E8F20() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"chatwinrange", 0, 4, 9); *(_DWORD *)v1 = &off_6C74E0; result = v1; } return result; } // 6C74E0: using guessed type int (__stdcall *off_6C74E0)(int); //----- (004E8F90) -------------------------------------------------------- int __cdecl sub_4E8F90() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"someoneshout", 0, 2, 2); *(_DWORD *)v1 = &off_6C7508; result = v1; } return result; } // 6C7508: using guessed type int (__stdcall *off_6C7508)(int); //----- (004E9000) -------------------------------------------------------- int __cdecl sub_4E9000() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"summonmob", 1, 2, 2); *(_DWORD *)v1 = &off_6C7530; result = v1; } return result; } // 6C7530: using guessed type int (__stdcall *off_6C7530)(int); //----- (004E9070) -------------------------------------------------------- int __cdecl sub_4E9070() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"questresult", 1, 0, 0); *(_DWORD *)v1 = &off_6C7554; result = v1; } return result; } // 6C7554: using guessed type int (__stdcall *off_6C7554)(int); //----- (004E90E0) -------------------------------------------------------- int __cdecl sub_4E90E0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"reward", 1, 0, 0); *(_DWORD *)v1 = &off_6C7578; result = v1; } return result; } // 6C7578: using guessed type int (__stdcall *off_6C7578)(int); //----- (004E9150) -------------------------------------------------------- int __cdecl sub_4E9150() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"broadcast", 1, 1, 2); *(_DWORD *)v1 = &off_6C7598; result = v1; } return result; } // 6C7598: using guessed type int (__stdcall *off_6C7598)(int); //----- (004E91C0) -------------------------------------------------------- int __cdecl sub_4E91C0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"linkto", 1, 4, 4); *(_DWORD *)v1 = &off_6C75BC; result = v1; } return result; } // 6C75BC: using guessed type int (__stdcall *off_6C75BC)(int); //----- (004E9230) -------------------------------------------------------- int __cdecl sub_4E9230() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"itemdrop", 1, 2, 2); *(_DWORD *)v1 = &off_6C7624; result = v1; } return result; } // 6C7624: using guessed type int (__stdcall *off_6C7624)(int); //----- (004E92A0) -------------------------------------------------------- int __cdecl sub_4E92A0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"whoclickme", 1, 1, 1); *(_DWORD *)v1 = &off_6C75DC; result = v1; } return result; } // 6C75DC: using guessed type int (__stdcall *off_6C75DC)(int); //----- (004E9310) -------------------------------------------------------- int __cdecl sub_4E9310() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"whokillme", 1, 1, 1); *(_DWORD *)v1 = &off_6C7600; result = v1; } return result; } // 6C7600: using guessed type int (__stdcall *off_6C7600)(int); //----- (004E9380) -------------------------------------------------------- int __cdecl sub_4E9380() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"invensearch", 1, 2, 2); *(_DWORD *)v1 = &off_6C7648; result = v1; } return result; } // 6C7648: using guessed type int (__stdcall *off_6C7648)(int); //----- (004E93F0) -------------------------------------------------------- int __cdecl sub_4E93F0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"itemcreate", 1, 1, 1); *(_DWORD *)v1 = &off_6C766C; result = v1; } return result; } // 6C766C: using guessed type int (__stdcall *off_6C766C)(int); //----- (004E9460) -------------------------------------------------------- int __cdecl sub_4E9460() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"itemerase", 1, 1, 2); *(_DWORD *)v1 = &off_6C7690; result = v1; } return result; } // 6C7690: using guessed type int (__stdcall *off_6C7690)(int); //----- (004E94D0) -------------------------------------------------------- int __cdecl sub_4E94D0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"findhandle", 1, 2, 2); *(_DWORD *)v1 = &off_6C76B4; result = v1; } return result; } // 6C76B4: using guessed type int (__stdcall *off_6C76B4)(int); //----- (004E9540) -------------------------------------------------------- int __cdecl sub_4E9540() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"abstateset", 1, 3, 4); *(_DWORD *)v1 = &off_6C76D8; result = v1; } return result; } // 6C76D8: using guessed type int (__stdcall *off_6C76D8)(int); //----- (004E95B0) -------------------------------------------------------- int __cdecl sub_4E95B0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"abstatereset", 1, 1, 1); *(_DWORD *)v1 = &off_6C76FC; result = v1; } return result; } // 6C76FC: using guessed type int (__stdcall *off_6C76FC)(int); //----- (004E9620) -------------------------------------------------------- int __cdecl sub_4E9620() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"suicide", 1, 0, 0); *(_DWORD *)v1 = &off_6C7724; result = v1; } return result; } // 6C7724: using guessed type int (__stdcall *off_6C7724)(int); //----- (004E9690) -------------------------------------------------------- int __cdecl sub_4E9690() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)&off_6C7758, 1, 2, 2); *(_DWORD *)v1 = &off_6C7744; result = v1; } return result; } // 6C7744: using guessed type int (__stdcall *off_6C7744)(int); // 6C7758: using guessed type void *off_6C7758; //----- (004E9700) -------------------------------------------------------- int __cdecl sub_4E9700() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"walk", 1, 2, 2); *(_DWORD *)v1 = &off_6C7760; result = v1; } return result; } // 6C7760: using guessed type int (__stdcall *off_6C7760)(int); //----- (004E9770) -------------------------------------------------------- int __cdecl sub_4E9770() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"maplight", 0, 3, 3); *(_DWORD *)v1 = &off_6C7780; result = v1; } return result; } // 6C7780: using guessed type int (__stdcall *off_6C7780)(int); //----- (004E97E0) -------------------------------------------------------- int __cdecl sub_4E97E0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"mapfog", 0, 2, 2); *(_DWORD *)v1 = &off_6C77A4; result = v1; } return result; } // 6C77A4: using guessed type int (__stdcall *off_6C77A4)(int); //----- (004E9850) -------------------------------------------------------- int __cdecl sub_4E9850() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"effectobj", 1, 4, 4); *(_DWORD *)v1 = &off_6C77C4; result = v1; } return result; } // 6C77C4: using guessed type int (__stdcall *off_6C77C4)(int); //----- (004E98C0) -------------------------------------------------------- int __cdecl sub_4E98C0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"effectloc", 1, 6, 6); *(_DWORD *)v1 = &off_6C77E8; result = v1; } return result; } // 6C77E8: using guessed type int (__stdcall *off_6C77E8)(int); //----- (004E9930) -------------------------------------------------------- int __cdecl sub_4E9930() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"aggro", 1, 2, 2); *(_DWORD *)v1 = &off_6C780C; result = v1; } return result; } // 6C780C: using guessed type int (__stdcall *off_6C780C)(int); //----- (004E99A0) -------------------------------------------------------- int __cdecl sub_4E99A0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"mobweaponrate", 1, 1, 8); *(_DWORD *)v1 = &off_6C782C; result = v1; } return result; } // 6C782C: using guessed type int (__stdcall *off_6C782C)(int); //----- (004E9A10) -------------------------------------------------------- int __cdecl sub_4E9A10() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"mobdetectrange", 1, 1, 1); *(_DWORD *)v1 = &off_6C7854; result = v1; } return result; } // 6C7854: using guessed type int (__stdcall *off_6C7854)(int); //----- (004E9A80) -------------------------------------------------------- int __cdecl sub_4E9A80() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"heal", 1, 1, 1); *(_DWORD *)v1 = &off_6C787C; result = v1; } return result; } // 6C787C: using guessed type int (__stdcall *off_6C787C)(int); //----- (004E9AF0) -------------------------------------------------------- int __cdecl sub_4E9AF0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"animate", 1, 1, 1); *(_DWORD *)v1 = &off_6C789C; result = v1; } return result; } // 6C789C: using guessed type int (__stdcall *off_6C789C)(int); //----- (004E9B60) -------------------------------------------------------- int __cdecl sub_4E9B60() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"duplicate", 1, 1, 1); *(_DWORD *)v1 = &off_6C78BC; result = v1; } return result; } // 6C78BC: using guessed type int (__stdcall *off_6C78BC)(int); //----- (004E9BD0) -------------------------------------------------------- int __cdecl sub_4E9BD0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"waitidle", 0, 0, 0); *(_DWORD *)v1 = &off_6C78E0; result = v1; } return result; } // 6C78E0: using guessed type int (__stdcall *off_6C78E0)(int); //----- (004E9C40) -------------------------------------------------------- int __cdecl sub_4E9C40() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"deathcountclear", 0, 0, 0); *(_DWORD *)v1 = &off_6C7904; result = v1; } return result; } // 6C7904: using guessed type int (__stdcall *off_6C7904)(int); //----- (004E9CB0) -------------------------------------------------------- int __cdecl sub_4E9CB0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"itemattrset", 1, 2, 2); *(_DWORD *)v1 = &off_6C792C; result = v1; } return result; } // 6C792C: using guessed type int (__stdcall *off_6C792C)(int); //----- (004E9D20) -------------------------------------------------------- int __cdecl sub_4E9D20() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"scinariocode", 1, 1, 1); *(_DWORD *)v1 = &off_6C7950; result = v1; } return result; } // 6C7950: using guessed type int (__stdcall *off_6C7950)(int); //----- (004E9D90) -------------------------------------------------------- int __cdecl sub_4E9D90() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"battlestart", 1, 0, 2); *(_DWORD *)v1 = &off_6C7978; result = v1; } return result; } // 6C7978: using guessed type int (__stdcall *off_6C7978)(int); //----- (004E9E00) -------------------------------------------------------- int __cdecl sub_4E9E00() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"battlestop", 1, 0, 0); *(_DWORD *)v1 = &off_6C799C; result = v1; } return result; } // 6C799C: using guessed type int (__stdcall *off_6C799C)(int); //----- (004E9E70) -------------------------------------------------------- int __cdecl sub_4E9E70() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"sendquestresult", 1, 1, 1); *(_DWORD *)v1 = &off_6C79C0; result = v1; } return result; } // 6C79C0: using guessed type int (__stdcall *off_6C79C0)(int); //----- (004E9EE0) -------------------------------------------------------- int __cdecl sub_4E9EE0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"invidualreward", 0, 2, 2); *(_DWORD *)v1 = &off_6C79E8; result = v1; } return result; } // 6C79E8: using guessed type int (__stdcall *off_6C79E8)(int); //----- (004E9F50) -------------------------------------------------------- int __cdecl sub_4E9F50() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"returnvalue", 0, 2, 2); *(_DWORD *)v1 = &off_6C7A10; result = v1; } return result; } // 6C7A10: using guessed type int (__stdcall *off_6C7A10)(int); //----- (004E9FC0) -------------------------------------------------------- int __cdecl sub_4E9FC0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"sublayershift", 1, 2, 2); *(_DWORD *)v1 = &off_6C7A34; result = v1; } return result; } // 6C7A34: using guessed type int (__stdcall *off_6C7A34)(int); //----- (004EA030) -------------------------------------------------------- int __cdecl sub_4EA030() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"teleport", 1, 1, 3); *(_DWORD *)v1 = &off_6C7A5C; result = v1; } return result; } // 6C7A5C: using guessed type int (__stdcall *off_6C7A5C)(int); //----- (004EA0A0) -------------------------------------------------------- int __cdecl sub_4EA0A0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"itemowner", 1, 2, 2); *(_DWORD *)v1 = &off_6C7A80; result = v1; } return result; } // 6C7A80: using guessed type int (__stdcall *off_6C7A80)(int); //----- (004EA110) -------------------------------------------------------- int __cdecl sub_4EA110() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"mobattr", 1, 2, 2); *(_DWORD *)v1 = &off_6C7AA4; result = v1; } return result; } // 6C7AA4: using guessed type int (__stdcall *off_6C7AA4)(int); //----- (004EA180) -------------------------------------------------------- int __cdecl sub_4EA180() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"collect", 1, 4, 4); *(_DWORD *)v1 = &off_6C7AC4; result = v1; } return result; } // 6C7AC4: using guessed type int (__stdcall *off_6C7AC4)(int); //----- (004EA1F0) -------------------------------------------------------- int __cdecl sub_4EA1F0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"endofkq", 0, 0, 0); *(_DWORD *)v1 = &off_6C7AE4; result = v1; } return result; } // 6C7AE4: using guessed type int (__stdcall *off_6C7AE4)(int); //----- (004EA260) -------------------------------------------------------- int __cdecl sub_4EA260() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"endofgt", 0, 2, 2); *(_DWORD *)v1 = &off_6C7B04; result = v1; } return result; } // 6C7B04: using guessed type int (__stdcall *off_6C7B04)(int); //----- (004EA2D0) -------------------------------------------------------- int __cdecl sub_4EA2D0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"gtresult", 1, 1, 2); *(_DWORD *)v1 = &off_6C7B24; result = v1; } return result; } // 6C7B24: using guessed type int (__stdcall *off_6C7B24)(int); //----- (004EA340) -------------------------------------------------------- int __cdecl sub_4EA340() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"costumecreate", 1, 3, 3); *(_DWORD *)v1 = &off_6C7B48; result = v1; } return result; } // 6C7B48: using guessed type int (__stdcall *off_6C7B48)(int); //----- (004EA3B0) -------------------------------------------------------- int __cdecl sub_4EA3B0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"costumetakeoff", 1, 2, 2); *(_DWORD *)v1 = &off_6C7B70; result = v1; } return result; } // 6C7B70: using guessed type int (__stdcall *off_6C7B70)(int); //----- (004EA420) -------------------------------------------------------- int __cdecl sub_4EA420() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"weddingcomplete", 0, 2, 2); *(_DWORD *)v1 = &off_6C7B98; result = v1; } return result; } // 6C7B98: using guessed type int (__stdcall *off_6C7B98)(int); //----- (004EA490) -------------------------------------------------------- int __cdecl sub_4EA490() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"playerwork", 1, 2, 2); *(_DWORD *)v1 = &off_6C7BC0; result = v1; } return result; } // 6C7BC0: using guessed type int (__stdcall *off_6C7BC0)(int); //----- (004EA500) -------------------------------------------------------- int __cdecl sub_4EA500() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"findplayer", 1, 1, 2); *(_DWORD *)v1 = &off_6C7BE4; result = v1; } return result; } // 6C7BE4: using guessed type int (__stdcall *off_6C7BE4)(int); //----- (004EA570) -------------------------------------------------------- int __cdecl sub_4EA570() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"teleportall", 1, 0, 4); *(_DWORD *)v1 = &off_6C7C08; result = v1; } return result; } // 6C7C08: using guessed type int (__stdcall *off_6C7C08)(int); //----- (004EA5E0) -------------------------------------------------------- int __cdecl sub_4EA5E0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"briefeffect", 1, 1, 1); *(_DWORD *)v1 = &off_6C7C2C; result = v1; } return result; } // 6C7C2C: using guessed type int (__stdcall *off_6C7C2C)(int); //----- (004EA650) -------------------------------------------------------- int __cdecl sub_4EA650() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"banfromarea", 0, 5, 5); *(_DWORD *)v1 = &off_6C7C50; result = v1; } return result; } // 6C7C50: using guessed type int (__stdcall *off_6C7C50)(int); //----- (004EA6C0) -------------------------------------------------------- int __cdecl sub_4EA6C0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"RegisteFlag", 0, 3, 3); *(_DWORD *)v1 = &off_6C7C74; result = v1; } return result; } // 6C7C74: using guessed type int (__stdcall *off_6C7C74)(int); //----- (004EA730) -------------------------------------------------------- int __cdecl sub_4EA730() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"RegisteGate", 0, 4, 4); *(_DWORD *)v1 = &off_6C7C98; result = v1; } return result; } // 6C7C98: using guessed type int (__stdcall *off_6C7C98)(int); //----- (004EA7A0) -------------------------------------------------------- int __cdecl sub_4EA7A0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"DiceGameStart", 0, 1, 1); *(_DWORD *)v1 = &off_6C7CBC; result = v1; } return result; } // 6C7CBC: using guessed type int (__stdcall *off_6C7CBC)(int); //----- (004EA810) -------------------------------------------------------- int __cdecl sub_4EA810() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"revival", 1, 0, 0); *(_DWORD *)v1 = &off_6C7CE4; result = v1; } return result; } // 6C7CE4: using guessed type int (__stdcall *off_6C7CE4)(int); //----- (004EA880) -------------------------------------------------------- int __cdecl sub_4EA880() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"spawn", 0, 1, 2); *(_DWORD *)v1 = &off_6C7D04; result = v1; } return result; } // 6C7D04: using guessed type int (__stdcall *off_6C7D04)(int); //----- (004EA8F0) -------------------------------------------------------- int __cdecl sub_4EA8F0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"hpset", 1, 1, 1); *(_DWORD *)v1 = &off_6C7D24; result = v1; } return result; } // 6C7D24: using guessed type int (__stdcall *off_6C7D24)(int); //----- (004EA960) -------------------------------------------------------- int __cdecl sub_4EA960() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"questmobkill", 0, 3, 3); *(_DWORD *)v1 = &off_6C7D44; result = v1; } return result; } // 6C7D44: using guessed type int (__stdcall *off_6C7D44)(int); //----- (004EA9D0) -------------------------------------------------------- char __stdcall sub_4EA9D0(int a1) { char v1; // bl@2 int v2; // eax@7 int v3; // eax@7 int v4; // eax@10 int v5; // eax@10 int v6; // eax@10 char result; // al@11 char v8; // dl@12 signed int v9; // [sp+Ch] [bp-8h]@8 char v10; // [sp+10h] [bp-4h]@2 dword_14D72DE8 = dword_14D72DEC & (dword_14D72DE8 + 1); switch ( word_14D6ADE8[dword_14D72DE8] ) { case 1: v1 = 6; v10 = 1; break; case 2: v1 = 11; v10 = 2; break; case 3: v1 = 16; v10 = 3; break; case 4: v1 = 21; v10 = 1; break; default: v1 = 1; v10 = 1; break; } v2 = dword_14D5ADD4 & (dword_14D5ADD0 + 1); dword_14D5ADD0 = v2; v3 = (unsigned __int16)word_14D52DD0[v2]; if ( !v3 || (v9 = 0, v3 != 1) ) v9 = 1; *(_WORD *)a1 = -1; *(_DWORD *)(a1 + 18) = 0; *(_DWORD *)(a1 + 14) = 0; *(_DWORD *)(a1 + 10) = 0; *(_DWORD *)(a1 + 6) = 0; *(_DWORD *)(a1 + 2) = 0; strncpy((char *)(a1 + 2), "???", 0x14u); *(_BYTE *)(a1 + 32) = v1; *(_BYTE *)(a1 + 31) = 1; *(_BYTE *)(a1 + 197) = 1; *(_BYTE *)(a1 + 33) = v10 & 3 | 4 * (v1 & 0x1F | (unsigned __int8)(32 * v9)); v4 = dword_14D62DDC & (dword_14D62DD8 + 1); dword_14D62DD8 = v4; *(_BYTE *)(a1 + 35) = word_14D5ADD8[2 * v4]; v5 = dword_14D62DDC & (dword_14D62DD8 + 1); dword_14D62DD8 = v5; *(_BYTE *)(a1 + 36) = word_14D5ADD8[2 * v5]; v6 = dword_14D6ADE4 & (dword_14D6ADE0 + 1); dword_14D6ADE0 = dword_14D6ADE4 & (dword_14D6ADE0 + 1); if ( v9 ) { v8 = byte_14D62DE0[2 * v6] + 4; result = -1; *(_BYTE *)(a1 + 34) = v8; *(_WORD *)(a1 + 82) = -1; } else { result = byte_14D62DE0[2 * v6]; *(_BYTE *)(a1 + 34) = result; *(_WORD *)(a1 + 82) = -1; } return result; } // 14D52DD0: using guessed type __int16 word_14D52DD0[]; // 14D5ADD0: using guessed type int dword_14D5ADD0; // 14D5ADD4: using guessed type int dword_14D5ADD4; // 14D62DD8: using guessed type int dword_14D62DD8; // 14D62DDC: using guessed type int dword_14D62DDC; // 14D6ADE0: using guessed type int dword_14D6ADE0; // 14D6ADE4: using guessed type int dword_14D6ADE4; // 14D6ADE8: using guessed type __int16 word_14D6ADE8[]; // 14D72DE8: using guessed type int dword_14D72DE8; // 14D72DEC: using guessed type int dword_14D72DEC; //----- (004EAB60) -------------------------------------------------------- int __stdcall sub_4EAB60(int a1) { sub_4EA9D0(a1); *(_DWORD *)(a1 + 37) = -1; *(_DWORD *)(a1 + 41) = -1; *(_DWORD *)(a1 + 45) = -1; *(_DWORD *)(a1 + 49) = -1; *(_DWORD *)(a1 + 53) = -1; *(_DWORD *)(a1 + 57) = -1; *(_DWORD *)(a1 + 61) = -1; *(_DWORD *)(a1 + 65) = -1; *(_DWORD *)(a1 + 69) = -1; *(_DWORD *)(a1 + 73) = -1; *(_BYTE *)(a1 + 84) = -1; *(_WORD *)(a1 + 85) = 0; *(_DWORD *)(a1 + 87) = 0; memset((void *)(a1 + 91), 0, 0x63u); *(_DWORD *)(a1 + 190) = 0; *(_WORD *)(a1 + 194) = 4; return a1; } //----- (004EABF0) -------------------------------------------------------- __int16 __thiscall sub_4EABF0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // esi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // eax@1 void *v7; // eax@7 int v8; // eax@14 __int16 v9; // si@16 char v11; // [sp+Ch] [bp-310h]@1 char v12; // [sp+10Ch] [bp-210h]@5 char v13; // [sp+20Ch] [bp-110h]@9 unsigned int v14; // [sp+30Ch] [bp-10h]@1 int v15; // [sp+318h] [bp-4h]@1 int v16; // [sp+31Ch] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v4 = (unsigned int)&v16 ^ __security_cookie; v5 = this; sub_4D5720(&v11); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); v15 = 0; if ( v6(&v11, a3, v4) != 0 ) { if ( byte_7493ED ) { if ( byte_1321DE8C ) { sprintf(&v12, "%.255s", "@@@printf : "); sub_418E40((__time32_t)byte_1321DC08); if ( dword_1321DD08 ) fputs(&v12, dword_1321DD08); } } v7 = sub_5CF620(&v11); if ( byte_7493ED ) { if ( byte_1321DE8C ) { sprintf(&v13, "%.255s", v7); sub_418E40((__time32_t)byte_1321DC08); if ( dword_1321DD08 ) fputs(&v13, dword_1321DD08); } if ( byte_7493ED && byte_1321DE8C && dword_1321DD08 ) { v8 = sub_418E40((__time32_t)byte_1321DC08); sub_654AB0(10, (FILE *)v8); fflush(dword_1321DD08); fclose(dword_1321DD08); dword_1321DD08 = 0; } } sub_5CF620(&v11); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShinePrintf::sa_Step: wrong argument", 0); } v9 = sub_4D6100(a3); v15 = -1; nullsub_2(&v11); return v9; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 1321DE8C: using guessed type char byte_1321DE8C; //----- (004EADB0) -------------------------------------------------------- void *__thiscall sub_4EADB0(void *this, __int16 a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 v6 = this; sub_427BE0(this); *((_WORD *)v6 + 2) = a2; *((_DWORD *)v6 + 2) = a3; *((_DWORD *)v6 + 4) = a5; *(_DWORD *)v6 = &off_6C7DB8; *((_DWORD *)v6 + 3) = a4; *((_DWORD *)v6 + 5) = a6; return v6; } // 6C7DB8: using guessed type int (__stdcall *off_6C7DB8)(int, int, int); //----- (004EADF0) -------------------------------------------------------- void __thiscall sub_4EADF0(void *this) { *(_DWORD *)this = &off_6C7DB8; sub_427EB0(this); } // 6C7DB8: using guessed type int (__stdcall *off_6C7DB8)(int, int, int); //----- (004EAE00) -------------------------------------------------------- int __thiscall sub_4EAE00(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ST24_4@2 void *v5; // eax@2 int result; // eax@2 v2 = this; v3 = *(_DWORD *)(this + 16); if ( v3 ) { result = (*(int (__thiscall **)(int, int, _DWORD, _DWORD, int, int, _DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)a2 + 1592))( a2, a2, *(_DWORD *)(this + 8), *(_DWORD *)(this + 12), v3, dword_14D129E8, 0, 0, *(_DWORD *)(this + 20), 9, 0); if ( (_BYTE)result ) { sub_401900((void *)a2, *(_DWORD *)(v2 + 8)); sub_4055D0((void *)a2, *(_DWORD *)(v2 + 8), *(_DWORD *)(v2 + 20), *(_DWORD *)(v2 + 12)); (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 1008))( a2, *(_DWORD *)(v2 + 8), *(_DWORD *)(v2 + 20), 1); result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1320))(a2); } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1616))(a2, *(_DWORD *)(this + 8)); v4 = *(_DWORD *)(v2 + 8); v5 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); sub_40A820(v5, a2, v4); result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1320))(a2); } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (004EAEC0) -------------------------------------------------------- void *__thiscall sub_4EAEC0(void *this, __int16 a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_427BE0(this); *((_WORD *)v4 + 2) = a2; *(_DWORD *)v4 = &off_6C7DC0; *((_DWORD *)v4 + 2) = a3; *((_DWORD *)v4 + 3) = a4; *((_DWORD *)v4 + 4) = 0; return v4; } // 6C7DC0: using guessed type int (__stdcall *off_6C7DC0)(int, int, int); //----- (004EAF10) -------------------------------------------------------- char __thiscall sub_4EAF10(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@1 int v6; // ebx@1 int v7; // eax@1 int v8; // edx@1 int v9; // eax@2 char result; // al@6 void *v11; // eax@8 int v12; // [sp-4h] [bp-34h]@8 int (**v13)(); // [sp+10h] [bp-20h]@1 int v14; // [sp+14h] [bp-1Ch]@1 int v15; // [sp+18h] [bp-18h]@4 int v16; // [sp+1Ch] [bp-14h]@4 __int16 v17; // [sp+20h] [bp-10h]@4 int v18; // [sp+2Ch] [bp-4h]@4 int v19; // [sp+3Ch] [bp+Ch]@1 v4 = this; v5 = a3; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1176))(a3); v19 = *((_WORD *)v4 + 2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1148))(v5); v13 = &off_6A86A4; v14 = v7 + 3668; v8 = *(_DWORD *)(v7 + 3668); if ( v6 ) v9 = (*(int (__stdcall **)(int))(v8 + 4))(v6); else v9 = (*(int (**)(void))(v8 + 8))(); v16 = v9; v13 = (int (**)())&off_6A86BC; v17 = v19; v18 = 0; v15 = 0; if ( (unsigned __int8)off_6A86BC(&v13) || sub_63F7F0(&v13) ) { if ( *((_DWORD *)v4 + 4) ) { v12 = *(_WORD *)(v5 + 4); v11 = sub_4D5950(*((char **)v4 + 3), *((const char **)v4 + 2)); } else { v12 = *(_WORD *)(v5 + 4); v11 = sub_4D5720(*((void **)v4 + 3)); } sub_4D67A0(v11, v12); result = 1; ++*((_DWORD *)v4 + 4); } else { result = 1; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); //----- (004EB020) -------------------------------------------------------- void *__thiscall sub_4EB020(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7DC8; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7DC8: using guessed type int (__stdcall *off_6C7DC8)(int); //----- (004EB050) -------------------------------------------------------- void *__thiscall sub_4EB050(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7DE4; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7DE4: using guessed type int (__stdcall *off_6C7DE4)(int); //----- (004EB080) -------------------------------------------------------- void *__thiscall sub_4EB080(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7E38; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7E38: using guessed type int (__stdcall *off_6C7E38)(int); //----- (004EB0B0) -------------------------------------------------------- void *__thiscall sub_4EB0B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7E54; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7E54: using guessed type int (__stdcall *off_6C7E54)(int); //----- (004EB0E0) -------------------------------------------------------- void *__thiscall sub_4EB0E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7E8C; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7E8C: using guessed type int (__stdcall *off_6C7E8C)(int); //----- (004EB110) -------------------------------------------------------- void *__thiscall sub_4EB110(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7EA8; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7EA8: using guessed type int (__stdcall *off_6C7EA8)(int); //----- (004EB140) -------------------------------------------------------- int __thiscall sub_4EB140(int this, int a2, int a3) { int result; // eax@1 result = *(_DWORD *)(this + 77288); if ( result ) { *(_DWORD *)(result + 156) = a2; *(_DWORD *)(result + 160) = a3; } return result; } //----- (004EB170) -------------------------------------------------------- int __thiscall sub_4EB170(void *this, void *a2) { void *v2; // esi@1 int v3; // eax@1 int result; // eax@2 __int16 v5; // ax@3 int v6; // eax@3 int v7; // esi@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ShineObject"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::OtherStatement::os_ShineObject"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_4D93E0((int)((char *)v2 + 36), a2); if ( v3 ) { v5 = sub_4D5840((const char *)v3, 0); v6 = sub_54DDA0(&unk_13253630, v5); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ShineObject"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::sa_Step", 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ShineObject"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004EB280) -------------------------------------------------------- __int16 __thiscall sub_4EB280(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // esi@1 int v9; // ST0C_4@2 void *v10; // eax@2 void *v11; // eax@2 __int16 v12; // ax@3 __int16 v13; // si@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::StatePermillage::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::StatePermillage::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"StatePermillage : "); v8 = sub_4D93E0((int)((char *)v4 + 4), (void *)a3); if ( v8 ) { v9 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v10 = sub_4D5720((void *)v8); sub_4D67A0(v10, v9); v11 = sub_4D56C0(&dword_1321B748, v8); sub_4D56C0(v11, (int)&unk_1321B74C); } v12 = sub_4D6100(a3); --dword_750CB8; v13 = v12; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::StatePermillage::sa_Step"); return v13; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004EB3A0) -------------------------------------------------------- __int16 __thiscall sub_4EB3A0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 result; // ax@2 void *v11; // eax@4 void *v12; // eax@5 int v13; // eax@5 __int16 v14; // si@6 char v15; // [sp+14h] [bp-110h]@1 unsigned int v16; // [sp+114h] [bp-10h]@1 int v17; // [sp+120h] [bp-4h]@1 int v18; // [sp+124h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = (unsigned int)&v18 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineScriptFile::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineScriptFile::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineScriptFile : "); sub_4D5720(&v15); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v17) = 1; if ( v9(&v15, a3, v4) != 0 ) { if ( sub_4D58C0(&v15, byte_6A492E) ) { v11 = sub_4D56C0(&dword_1321B748, (int)"Unset script file"); sub_4D56C0(v11, (int)&unk_1321B74C); *(_DWORD *)(a3 + 65840) = 0; } else { v12 = sub_4D56C0(&dword_1321B748, (int)&v15); sub_4D56C0(v12, (int)&unk_1321B74C); v13 = (int)sub_5CF620(&v15); *(_DWORD *)(a3 + 65840) = sub_649720(&unk_150B11D8, v13); } v14 = sub_4D6100(a3); LOBYTE(v17) = 0; nullsub_2(&v15); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineScriptFile::sa_Step"); result = v14; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineScriptFile::sa_Step: wrong argument", 0); LOBYTE(v17) = 0; nullsub_2(&v15); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineScriptFile::sa_Step"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EB580) -------------------------------------------------------- __int16 __thiscall sub_4EB580(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // eax@1 __int16 result; // ax@2 void *v11; // eax@3 void *v12; // eax@3 void *v13; // eax@3 int v14; // edi@3 int v15; // ebx@3 int v16; // eax@3 __int16 v17; // si@3 char v18; // [sp+14h] [bp-210h]@1 char v19; // [sp+114h] [bp-110h]@1 unsigned int v20; // [sp+214h] [bp-10h]@1 int v21; // [sp+220h] [bp-4h]@1 int v22; // [sp+224h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v4 = (unsigned int)&v22 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineTimeLimit::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineTimeLimit::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineTimeLimit : "); sub_4D5720(&v19); LOBYTE(v21) = 1; sub_4D9320((int)((char *)v5 + 36), &v19, (void *)a3); sub_4D5720(&v18); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v21) = 2; if ( v9(&v18, a3, v4) != 0 ) { v11 = sub_4D56C0(&dword_1321B748, (int)&v19); v12 = sub_4D56C0(v11, (int)"/"); v13 = sub_4D56C0(v12, (int)&v18); sub_4D56C0(v13, (int)&unk_1321B74C); v14 = *(_DWORD *)(a3 + 65816); v15 = sub_4D5840(&v18, 0); v16 = (int)sub_5CF620(&v19); sub_506670((void *)(v14 + 66108), v16, v15); sub_506760((void *)(v14 + 66108)); v17 = sub_4D6100(a3); LOBYTE(v21) = 1; nullsub_2(&v18); LOBYTE(v21) = 0; nullsub_2(&v19); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineTimeLimit::sa_Step"); result = v17; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineTimeLimit::sa_Step: wrong argument", 0); LOBYTE(v21) = 1; nullsub_2(&v18); LOBYTE(v21) = 0; nullsub_2(&v19); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineTimeLimit::sa_Step"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EB7A0) -------------------------------------------------------- __int16 __thiscall sub_4EB7A0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // esi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // eax@1 __int16 v11; // si@2 void *v12; // eax@3 void *v13; // edi@5 int v14; // esi@5 void *v15; // eax@10 void *v16; // eax@11 int v17; // esi@11 void *v18; // eax@11 void *v19; // ecx@11 void *v20; // eax@14 int v21; // esi@14 void *v22; // eax@14 void *v23; // eax@60 int v24; // eax@61 int v26; // [sp-4h] [bp-64Ch]@11 char v27; // [sp-4h] [bp-64Ch]@26 signed int v28; // [sp+10h] [bp-638h]@5 int v29; // [sp+14h] [bp-634h]@5 char v30; // [sp+18h] [bp-630h]@1 char v31; // [sp+118h] [bp-530h]@1 char v32; // [sp+218h] [bp-430h]@10 char v33; // [sp+318h] [bp-330h]@60 char v34; // [sp+31Ch] [bp-32Ch]@11 char v35[4]; // [sp+328h] [bp-320h]@3 int v36; // [sp+32Ch] [bp-31Ch]@3 int v37; // [sp+330h] [bp-318h]@3 int v38; // [sp+334h] [bp-314h]@3 char v39; // [sp+338h] [bp-310h]@5 unsigned int v40; // [sp+638h] [bp-10h]@1 int v41; // [sp+644h] [bp-4h]@1 int v42; // [sp+648h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v4 = (unsigned int)&v42 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineInterruptSet::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineInterruptSet::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v41 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"InterruptSet : "); sub_4D5720(&v31); LOBYTE(v41) = 1; v9 = sub_4D9320((int)((char *)v5 + 36), &v31, (void *)a3); sub_4D5730((unsigned int)v9); sub_4D5720(&v30); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v41) = 2; if ( v10(&v30, a3, v4) != 0 ) { v12 = sub_5CF620(&v30); v38 = 0; v37 = 0; v36 = 0; *(_DWORD *)v35 = 0; strncpy(v35, (const char *)v12, 0x10u); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v30, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInterruptSet::sa_Step : No num", 0); v11 = sub_4D6100(a3); goto LABEL_63; } v29 = sub_4D5840(&v30, 0); _eh_vector_constructor_iterator_(&v39, 0x100u, 3, (int)sub_4D5720, nullsub_2); LOBYTE(v41) = 3; v13 = &v39; v14 = (int)((char *)v5 + 56); v28 = 3; do { if ( *(_DWORD *)v14 ) (*(void (__stdcall **)(void *, int))(**(_DWORD **)v14 + 8))(v13, a3); else sub_4D5720(v13); v14 += 4; v13 = (char *)v13 + 256; --v28; } while ( v28 ); v15 = sub_4D56C0(&dword_1321B748, (int)&v31); sub_4D56C0(v15, (int)&unk_1321B74C); memcpy(&v32, &v31, 0x100u); LOBYTE(v41) = 4; if ( sub_4D58C0(&v32, (const char *)&unk_1321D108) ) { sub_4E7510(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); v16 = off_849C18; *(_WORD *)off_849C18 = 27653; v17 = (int)((char *)v16 + 2); v18 = sub_5CF620(&v39); *(_DWORD *)(v17 + 28) = 0; *(_DWORD *)(v17 + 24) = 0; *(_DWORD *)(v17 + 20) = 0; *(_DWORD *)(v17 + 16) = 0; *(_DWORD *)(v17 + 12) = 0; *(_DWORD *)(v17 + 8) = 0; *(_DWORD *)(v17 + 4) = 0; *(_DWORD *)v17 = 0; strncpy((char *)v17, (const char *)v18, 0x20u); sub_4287B0(&v34, &off_849C18, 34); v19 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v41) = 5; v26 = 0; if ( v19 == 0 ) { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v41) = 4; sub_428A70(&v34); goto LABEL_62; } } else { if ( !sub_4D58C0(&v32, (const char *)&unk_1321E290) ) { if ( sub_4D58C0(&v32, (const char *)&unk_1321ED90) ) { sub_4E75F0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321D808) ) { sub_4E7640(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321E190) ) { sub_508300((void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)v35, (int)off_855A20, &v39, v29); } else { if ( !sub_4D58C0(&v32, (const char *)&unk_1321CC08) ) { if ( sub_4D58C0(&v32, (const char *)&unk_1321DB08) ) { v27 = 83; } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321C800) ) { sub_4E76B0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29, 77); goto LABEL_62; } if ( !sub_4D58C0(&v32, (const char *)&unk_1321D908) ) { if ( sub_4D58C0(&v32, (const char *)&unk_1321C300) ) { sub_4E76F0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321C900) ) { sub_508300((void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)v35, (int)off_855A2C, &v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321C100) ) { sub_508300((void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)v35, (int)off_855A30, &v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321E890) ) { sub_4E7760(*(_DWORD *)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321C200) ) { sub_508300( (void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)v35, (int)off_855A40, &v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321C600) ) { sub_4E77C0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321EA90) ) { sub_4E7810(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321F120) ) { sub_4E7840(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321CE08) ) { sub_4E7890(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321D708) ) { sub_508300( (void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)v35, (int)off_855A4C, &v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321CB08) ) { sub_4E7A00(*(void **)(a3 + 65816), (int)v35); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321C700) ) { sub_4E7930(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321CA08) ) { sub_4E78E0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { if ( sub_4D58C0(&v32, (const char *)&unk_1321F220) ) { sub_4E7990(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); } else { v23 = sub_5CF620(&v31); sub_455E80(&v33, (const char *)v23); if ( !sub_50BBA0( (void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)&v33, &v39, v29) ) { v24 = (int)sub_5CF620(&v31); sub_6390B0( &unk_86DDD8, (int)"PineEventScriptNode::ShineInterruptSet::sa_Step : Invalid flag", v24); } } } } } } } } } } } } } } } goto LABEL_62; } v27 = 72; } sub_4E76B0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29, v27); goto LABEL_62; } sub_4E76B0(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29, 109); } } } LABEL_62: LOBYTE(v41) = 3; nullsub_2(&v32); v11 = sub_4D6100(a3); LOBYTE(v41) = 2; _LN21(&v39, 0x100u, 3, nullsub_2); goto LABEL_63; } sub_4E7580(*(void **)(a3 + 65816), (int)v35, (int)&v39, v29); v20 = off_849C18; *(_WORD *)off_849C18 = 27655; v21 = (int)((char *)v20 + 2); v22 = sub_5CF620(&v39); *(_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((char *)v21, (const char *)v22, 0x20u); sub_4287B0(&v34, &off_849C18, 34); v19 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v41) = 6; v26 = 0; if ( v19 == 0 ) { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v41) = 4; sub_428A70(&v34); goto LABEL_62; } } sub_549B60(v19, (int)&v34, v26); LOBYTE(v41) = 4; sub_428A70(&v34); goto LABEL_62; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInterruptSet::sa_Step : No Index", 0); v11 = sub_4D6100(a3); LABEL_63: LOBYTE(v41) = 1; nullsub_2(&v30); LOBYTE(v41) = 0; nullsub_2(&v31); --dword_750CB8; v41 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineInterruptSet::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 855A20: using guessed type int (__stdcall *off_855A20[16])(int, int, int, int, int, int, int); // 855A2C: using guessed type int (__stdcall *off_855A2C[13])(int, int, int, int, int, int, int); // 855A30: using guessed type int (__stdcall *off_855A30[12])(int, int, int, int, int, int, int); // 855A40: using guessed type int (__stdcall *off_855A40[8])(int, int, int, int, int, int, int); // 855A4C: using guessed type int (__stdcall *off_855A4C[5])(int, int, int, int, int, int, int); // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EC140) -------------------------------------------------------- __int16 __thiscall sub_4EC140(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // edx@1 void *v11; // eax@3 __int16 v12; // si@4 char v14; // [sp+14h] [bp-120h]@1 char v15[4]; // [sp+114h] [bp-20h]@3 int v16; // [sp+118h] [bp-1Ch]@3 int v17; // [sp+11Ch] [bp-18h]@3 int v18; // [sp+120h] [bp-14h]@3 unsigned int v19; // [sp+124h] [bp-10h]@1 int v20; // [sp+130h] [bp-4h]@1 int v21; // [sp+134h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v4 = (unsigned int)&v21 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineInterruptErase::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineInterruptErase::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"ShineInterruptErase"); sub_4D56C0(v9, (int)&unk_1321B74C); sub_4D5720(&v14); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v20) = 1; if ( v10(&v14, a3, v4) != 0 ) { v11 = sub_5CF620(&v14); v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)v15 = 0; strncpy(v15, (const char *)v11, 0x10u); sub_50AA50((void *)(*(_DWORD *)(a3 + 65816) + 66124), (int)v15); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInterruptErase::sa_Step", 0); } v12 = sub_4D6100(a3); LOBYTE(v20) = 0; nullsub_2(&v14); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineInterruptErase::sa_Step"); return v12; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EC2D0) -------------------------------------------------------- signed __int16 __thiscall sub_4EC2D0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 bool v5; // zf@1 void *v6; // eax@2 void *v7; // eax@2 void *v8; // eax@2 void *v9; // eax@2 int v10; // edi@2 int (__stdcall *v11)(_DWORD, _DWORD); // edx@2 int v12; // eax@2 int v13; // eax@2 signed __int16 v14; // si@4 char v16; // [sp+14h] [bp-110h]@2 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitInterrupt::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWaitInterrupt::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)a4 == 0; v18 = 0; if ( v5 ) { v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"ShineWaitInterrupt"); sub_4D56C0(v9, (int)&unk_1321B74C); ++*(_DWORD *)a4; v10 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); sub_4D5720(&v16); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; v12 = v11(&v16, a3); v13 = sub_4D8170((void *)a3, v12); *(_DWORD *)(a3 + 65828) = v10; *(_DWORD *)(a3 + 65832) = v13; LOBYTE(v18) = 0; nullsub_2(&v16); } if ( sub_50A8F0( (void *)(*(_DWORD *)(a3 + 65816) + 66124), *(_DWORD *)(a3 + 65828), *(_DWORD *)(a3 + 65832), *(_DWORD *)(a3 + 65816) + 66108, *(_DWORD *)(*(_DWORD *)(a3 + 65816) + 77292), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 65816) + 77288) + 60)) ) v14 = sub_4D6100(a3); else v14 = 1; --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitInterrupt::sa_Step"); return v14; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EC480) -------------------------------------------------------- signed int __thiscall sub_4EC480(void *this, int a2, void *a3, int a4, int a5, int a6) { void *v6; // ebx@1 int v7; // esi@1 int v8; // eax@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@5 void *v11; // eax@9 signed int v12; // eax@9 int v13; // eax@12 void *v14; // eax@14 int v15; // eax@14 int v16; // ebx@14 int v17; // edx@14 int v18; // esi@14 int v19; // edx@16 void *v20; // eax@18 int v21; // [sp-Ch] [bp-148h]@6 int v22; // [sp-8h] [bp-144h]@6 unsigned int v23; // [sp-4h] [bp-140h]@1 void *v24; // [sp+10h] [bp-12Ch]@2 int v25; // [sp+14h] [bp-128h]@14 int v26; // [sp+18h] [bp-124h]@14 signed int v27; // [sp+1Ch] [bp-120h]@10 char v28; // [sp+20h] [bp-11Ch]@5 int v29; // [sp+120h] [bp-1Ch]@16 int v30; // [sp+124h] [bp-18h]@16 int v31; // [sp+128h] [bp-14h]@16 unsigned int v32; // [sp+12Ch] [bp-10h]@1 int v33; // [sp+138h] [bp-4h]@1 int v34; // [sp+13Ch] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v23 = (unsigned int)&v34 ^ __security_cookie; v6 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ObjectChange"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::OtherStatement::os_ObjectChange"; dword_750AB8[dword_750CB8++] = -1; v33 = 0; v7 = sub_4EB170(v6, a3); if ( !v7 ) goto LABEL_4; v8 = sub_4D93E0((int)((char *)v6 + 36), a3); v24 = (void *)v8; if ( v8 == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectChange", v8 != 0); LABEL_4: --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ObjectChange"); return 0; } sub_4D5720(&v28); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v6 + 12) + 8); LOBYTE(v33) = 1; if ( v10(&v28, a3) == 0 ) { v22 = 0; v21 = (int)"PineEventScriptNode::OtherStatement::os_ObjectChange"; LABEL_7: sub_639100(&unk_86DDD8, v21, v22); LABEL_8: LOBYTE(v33) = 0; nullsub_2(&v28); goto LABEL_4; } v11 = sub_5CF620(&v28); v12 = sub_639620(&unk_14D16018, (unsigned __int8 *)v11); if ( v12 == -1 ) v27 = 65535; else v27 = (unsigned __int16)v12; v13 = (int)sub_5CF620(&v28); if ( (_WORD)v27 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Invalid mob", v13); LOBYTE(v33) = 0; nullsub_2(&v28); goto LABEL_4; } v14 = sub_4D56C0(&dword_1321B748, (int)&v28); sub_4D56C0(v14, (int)&unk_1321B74C); v15 = *(_DWORD *)(v7 + 102); v16 = *(_DWORD *)v15; v17 = *(_DWORD *)(v7 + 106); v18 = *(_DWORD *)(v7 + 122); v25 = *(_BYTE *)v17; v26 = *(_DWORD *)(v15 + 4); if ( !v18 ) { v22 = 0; v21 = (int)"PineEventScriptNode::OtherStatement::os_ObjectChange : Null map"; goto LABEL_7; } v29 = *(_DWORD *)v18; v30 = *(_DWORD *)(v18 + 4); v19 = *(_DWORD *)a5; v31 = *(_DWORD *)(v18 + 8); if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int))(v19 + 1232))(a5, v23) == 7 ) { if ( (*(int (__thiscall **)(int, int *, int, int, int, int, signed int))(*(_DWORD *)a5 + 1756))( a5, &v29, v16, v26, v25, a6, v27) ) goto LABEL_8; } else { if ( (*(int (__thiscall **)(int, int *, int, int, int, int, signed int, _DWORD, signed int, _DWORD, _DWORD, signed int))(*(_DWORD *)a5 + 1760))( a5, &v29, v16, v26, v25, a6, v27, 0, -1, 0, 0, -1) ) { sub_555DF0(&unk_13253630, a6, 0, 22); LOBYTE(v33) = 0; nullsub_2(&v28); goto LABEL_4; } } v20 = sub_4D5720(v24); sub_4D67A0(v20, (unsigned __int16)a6); LOBYTE(v33) = 0; nullsub_2(&v28); --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ObjectChange"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EC7A0) -------------------------------------------------------- __int16 __thiscall sub_4EC7A0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // edi@1 int v9; // eax@4 __int16 v10; // ax@8 __int16 v11; // si@8 int v13; // [sp+14h] [bp-10h]@4 int v14; // [sp+20h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2Mob::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineChange2Mob::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineChange2Mob : "); v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1232))(v8) == 8 ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2200))(v8, 5); } else { v9 = sub_54DF90(&unk_13253630, (int)&v13, 5); if ( v9 ) { if ( !(unsigned __int16)sub_4EC480(v4, a2, (void *)a3, a4, v9, v13) ) sub_555DF0(&unk_13253630, v13, 0, 25); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate : Too many mob", 0); } } } v10 = sub_4D6100(a3); --dword_750CB8; v11 = v10; v14 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2Mob::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004EC910) -------------------------------------------------------- __int16 __thiscall sub_4EC910(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 __int16 v9; // ax@2 __int16 v10; // di@2 __int16 result; // ax@2 __int16 v12; // ax@5 __int16 v13; // si@5 int v14; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2Door::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineChange2Door::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineChange2Door : "); v8 = sub_54DF90(&unk_13253630, (int)&v14, 7); if ( v8 ) { if ( !(unsigned __int16)sub_4EC480(v4, a2, (void *)a3, a4, v8, v14) ) sub_555DF0(&unk_13253630, v14, 0, 26); v12 = sub_4D6100(a3); --dword_750CB8; v13 = v12; v15 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2Door::sa_Step"); result = v13; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate : Too many mob", 0); v9 = sub_4D6100(a3); --dword_750CB8; v10 = v9; v15 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2Door::sa_Step"); result = v10; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004ECA80) -------------------------------------------------------- __int16 __thiscall sub_4ECA80(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // edi@1 int v9; // edi@4 __int16 v10; // ax@10 __int16 v11; // si@10 int v13; // [sp+14h] [bp-10h]@4 int v14; // [sp+20h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2NPC::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineChange2NPC::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineChange2NPC : "); v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1232))(v8) == 8 ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2200))(v8, 4); } else { v9 = sub_54DF90(&unk_13253630, (int)&v13, 4); if ( v9 != 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1232))(v9) == 8 ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 2200))(v9, 4); } else { if ( !(unsigned __int16)sub_4EC480(v4, a2, (void *)a3, a4, v9, v13) ) sub_555DF0(&unk_13253630, v13, 0, 27); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate : Too many mob", 0); } } } v10 = sub_4D6100(a3); --dword_750CB8; v11 = v10; v14 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineChange2NPC::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004ECC10) -------------------------------------------------------- __int16 __thiscall sub_4ECC10(void *this, int a2, int a3, int a4) { void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 int v7; // eax@1 int v8; // esi@1 int v9; // eax@2 int v10; // eax@2 int v11; // esi@2 __int16 v12; // si@4 int v13; // ecx@5 int (__stdcall *v14)(_DWORD, _DWORD); // edx@7 void *v15; // eax@9 signed int v16; // eax@9 int v17; // eax@14 int v18; // eax@16 int v19; // ST34_4@17 void *v20; // eax@17 int v22; // [sp+10h] [bp-138h]@2 int v23; // [sp+14h] [bp-134h]@2 signed int v24; // [sp+18h] [bp-130h]@10 int v25; // [sp+1Ch] [bp-12Ch]@2 void *v26; // [sp+20h] [bp-128h]@1 int v27; // [sp+24h] [bp-124h]@12 unsigned __int8 v28; // [sp+2Bh] [bp-11Dh]@2 char v29; // [sp+2Ch] [bp-11Ch]@7 char v30[4]; // [sp+12Ch] [bp-1Ch]@5 int v31; // [sp+130h] [bp-18h]@5 int v32; // [sp+134h] [bp-14h]@5 unsigned int v33; // [sp+138h] [bp-10h]@1 int v34; // [sp+144h] [bp-4h]@1 int v35; // [sp+148h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v26 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineExchange2Mob::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineExchange2Mob::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; v4 = sub_4D56C0(&dword_1321B748, (int)"["); v5 = sub_4D56C0(v4, a2); v6 = sub_4D56C0(v5, (int)"]"); sub_4D56C0(v6, (int)"ShineExchange2Mob : "); v7 = sub_4EB170(v26, (void *)a3); v8 = v7; if ( !v7 ) goto LABEL_4; v9 = *(_DWORD *)(v7 + 102); v22 = *(_DWORD *)v9; v23 = *(_DWORD *)(v9 + 4); v10 = *(_DWORD *)v8; v28 = **(_BYTE **)(v8 + 106); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(v10 + 828))(v8, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v8 + 4), 0, 28); v11 = sub_54DF90(&unk_13253630, (int)&v25, 5); if ( v11 == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineExchange2Mob::sa_Step : Too many mob", 0); LABEL_4: v12 = sub_4D6100(a3); goto LABEL_19; } v13 = *(_DWORD *)(a3 + 65816); v32 = 0; v31 = 0; *(_DWORD *)v30 = 0; if ( sub_4E2490(v13, v30) != 0 ) { sub_4D5720(&v29); v14 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v26 + 12) + 8); LOBYTE(v34) = 1; if ( v14(&v29, a3) != 0 ) { v15 = sub_5CF620(&v29); v16 = sub_639620(&unk_14D16018, (unsigned __int8 *)v15); if ( v16 == -1 ) v24 = 65535; else v24 = (unsigned __int16)v16; v27 = (int)sub_5CF620(&v29); if ( (_WORD)v24 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Invalid mob", v27); } else { v17 = (*(int (__thiscall **)(int, char *, int, int, _DWORD, int, signed int, _DWORD, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)v11 + 1760))( v11, v30, v22, v23, v28, v25, v24, 0, -1, 0, 0, -1, 1, 0, 0); if ( v17 == 0 ) { v18 = sub_4D93E0((int)((char *)v26 + 36), (void *)a3); if ( v18 ) { v19 = (unsigned __int16)v25; v20 = sub_4D5720((void *)v18); sub_4D67A0(v20, v19); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Marking fail", v17); sub_555DF0(&unk_13253630, v25, 0, 29); } } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineExchange2Mob::os_ObjectChange", 0); } v12 = sub_4D6100(a3); LOBYTE(v34) = 0; nullsub_2(&v29); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineExchange2Mob::os_ObjectRegen : Not map name", 0); v12 = sub_4D6100(a3); } LABEL_19: --dword_750CB8; v34 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineExchange2Mob::sa_Step"); return v12; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004ECF40) -------------------------------------------------------- __int16 __thiscall sub_4ECF40(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 int v9; // edi@1 __int16 v10; // si@3 int (__stdcall *v11)(_DWORD, _DWORD); // edx@4 void *v12; // eax@6 int v13; // ebx@6 void *v14; // eax@6 char v16; // [sp+14h] [bp-110h]@4 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorOpen::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineDoorOpen::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineDoorOpen : "); v8 = sub_4EB170(v4, (void *)a3); v9 = v8; if ( v8 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1232))(v8) == 7 ) { sub_4D5720(&v16); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; if ( v11(&v16, a3) != 0 ) { v12 = sub_4D56C0(&dword_1321B748, (int)&v16); sub_4D56C0(v12, (int)&unk_1321B74C); v13 = *(_DWORD *)v9; v14 = sub_5CF620(&v16); (*(void (__thiscall **)(int, void *, signed int))(v13 + 792))(v9, v14, 1); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDoorOpen::sa_Step", 1); } v10 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDoorOpen::sa_Step : Invalid object", 0); v10 = sub_4D6100(a3); } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorOpen::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004ED100) -------------------------------------------------------- __int16 __thiscall sub_4ED100(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 int v9; // edi@1 __int16 v10; // si@3 int (__stdcall *v11)(_DWORD, _DWORD); // edx@4 void *v12; // eax@6 int v13; // ebx@6 void *v14; // eax@6 char v16; // [sp+14h] [bp-110h]@4 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorClose::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineDoorClose::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineDoorClose : "); v8 = sub_4EB170(v4, (void *)a3); v9 = v8; if ( v8 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1232))(v8) == 7 ) { sub_4D5720(&v16); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; if ( v11(&v16, a3) != 0 ) { v12 = sub_4D56C0(&dword_1321B748, (int)&v16); sub_4D56C0(v12, (int)&unk_1321B74C); v13 = *(_DWORD *)v9; v14 = sub_5CF620(&v16); (*(void (__thiscall **)(int, void *, _DWORD))(v13 + 792))(v9, v14, 0); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDoorOpen::sa_Step", 1); } v10 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDoorOpen::sa_Step : Invalid object", 0); v10 = sub_4D6100(a3); } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorClose::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004ED2C0) -------------------------------------------------------- __int16 __thiscall sub_4ED2C0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@3 void *v10; // ecx@5 void *v11; // eax@9 signed int v12; // eax@9 signed __int16 v13; // si@9 void *v14; // eax@11 int v15; // ecx@13 __int16 v16; // ax@15 int v17; // esi@15 int v18; // eax@17 __int16 v19; // si@21 int v21; // [sp-Ch] [bp-438h]@12 int v22; // [sp-8h] [bp-434h]@12 int (__stdcall **v23)(int, int, int); // [sp+14h] [bp-418h]@5 __int16 v24; // [sp+18h] [bp-414h]@5 char v25; // [sp+1Ch] [bp-410h]@4 char v26; // [sp+11Ch] [bp-310h]@4 char v27; // [sp+21Ch] [bp-210h]@1 char v28; // [sp+31Ch] [bp-110h]@1 unsigned int v29; // [sp+41Ch] [bp-10h]@1 int v30; // [sp+428h] [bp-4h]@1 int v31; // [sp+42Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineObjectVanish::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineObjectVanish::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineVanish"); sub_4D5720(&v27); LOBYTE(v30) = 1; sub_4D5720(&v28); LOBYTE(v30) = 2; sub_4D9320((int)((char *)v4 + 36), &v27, (void *)a3); v8 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v8, (int)&v27); if ( *((_DWORD *)v4 + 12) && (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 12) + 8))(&v28, a3) ) { v9 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v9, (int)&v28); } sub_4D56C0(&dword_1321B748, (int)&unk_1321B74C); memcpy(&v26, &v27, 0x100u); LOBYTE(v30) = 3; sub_4D5730((unsigned int)&v26); memcpy(&v25, &v26, 0x100u); LOBYTE(v30) = 4; if ( !sub_4D58C0(&v25, (const char *)&unk_1321D008) ) { if ( sub_4D58C0(&v25, (const char *)&unk_1321D508) ) { v11 = sub_5CF620(&v28); v12 = sub_639620(&unk_14D16018, (unsigned __int8 *)v11); v13 = -1; if ( v12 != -1 ) v13 = v12; v14 = sub_5CF620(&v28); if ( v13 != -1 ) { sub_427BE0(&v23); v23 = &off_6C7188; v24 = v13; v15 = *(_DWORD *)(a3 + 65816); LOBYTE(v30) = 6; sub_4E20B0(v15, (int)&v23); LOBYTE(v30) = 4; v23 = &off_6C7188; sub_427EB0(&v23); goto LABEL_21; } } else { if ( !sub_4D58C0(&v25, (const char *)&unk_1321E590) ) { v18 = sub_4EB170(v4, (void *)a3); if ( v18 ) { sub_4280A0(v18); goto LABEL_21; } v22 = (int)sub_5CF620(&v26); v21 = (int)"PineEventScriptNode::ShineObjectVanish::sa_Step : Invalid mob Object Token"; LABEL_20: sub_6390B0(&unk_86DDD8, v21, v22); goto LABEL_21; } v16 = sub_4D5840(&v28, 0); v17 = sub_54DE90(&unk_13253630, v16); v14 = sub_5CF620(&v28); if ( v17 ) { sub_4280A0(v17); goto LABEL_21; } } v22 = (int)v14; v21 = (int)"PineEventScriptNode::ShineObjectVanish::sa_Step : Invalid mob id"; goto LABEL_20; } sub_427BE0(&v23); v23 = &off_6C7188; v24 = -1; v10 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v30) = 5; if ( v10 ) { sub_549B60(v10, (int)&v23, 0); LOBYTE(v30) = 4; v23 = &off_6C7188; sub_427EB0(&v23); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v30) = 4; v23 = &off_6C7188; sub_427EB0(&v23); } LABEL_21: LOBYTE(v30) = 3; nullsub_2(&v25); v19 = sub_4D6100(a3); LOBYTE(v30) = 2; nullsub_2(&v26); LOBYTE(v30) = 1; nullsub_2(&v28); LOBYTE(v30) = 0; nullsub_2(&v27); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineObjectVanish::sa_Step"); return v19; } // 6C7188: using guessed type int (__stdcall *off_6C7188)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004ED6C0) -------------------------------------------------------- __int16 __thiscall sub_4ED6C0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int (__stdcall *v8)(_DWORD, _DWORD, _DWORD); // edx@1 int v9; // ecx@5 void *v10; // eax@7 void *v11; // eax@7 void *v12; // eax@7 int v13; // ST10_4@7 void *v14; // eax@7 int v15; // edi@7 __int16 v16; // si@15 int v18; // [sp+10h] [bp-43Ch]@9 void *v19; // [sp+14h] [bp-438h]@1 int v20; // [sp+18h] [bp-434h]@9 char v21; // [sp+1Ch] [bp-430h]@1 char v22; // [sp+11Ch] [bp-330h]@1 char v23; // [sp+21Ch] [bp-230h]@1 char v24; // [sp+31Ch] [bp-130h]@1 char v25[4]; // [sp+41Ch] [bp-30h]@14 int v26; // [sp+420h] [bp-2Ch]@14 int v27; // [sp+424h] [bp-28h]@14 int v28; // [sp+428h] [bp-24h]@14 int v29; // [sp+42Ch] [bp-20h]@14 char v30[4]; // [sp+430h] [bp-1Ch]@5 int v31; // [sp+434h] [bp-18h]@5 int v32; // [sp+438h] [bp-14h]@5 unsigned int v33; // [sp+43Ch] [bp-10h]@1 int v34; // [sp+448h] [bp-4h]@1 int v35; // [sp+44Ch] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v4 = (unsigned int)&v35 ^ __security_cookie; v19 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineRegenGroup::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineRegenGroup::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineRegenGroup : "); sub_4D5720(&v24); LOBYTE(v34) = 1; sub_4D5720(&v23); LOBYTE(v34) = 2; sub_4D5720(&v22); LOBYTE(v34) = 3; sub_4D5720(&v21); v8 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v19 + 12) + 8); LOBYTE(v34) = 4; if ( v8(&v24, a3, v4) != 0 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v19 + 13) + 8))(&v23, a3) != 0 ) { v9 = *(_DWORD *)(a3 + 65816); v32 = 0; v31 = 0; *(_DWORD *)v30 = 0; if ( sub_4E2490(v9, v30) != 0 ) { v10 = sub_4D56C0(&dword_1321B748, (int)&v24); v11 = sub_4D56C0(v10, (int)"/"); v12 = sub_4D56C0(v11, (int)&v23); sub_4D56C0(v12, (int)&unk_1321B74C); v13 = (int)sub_5CF620(&v23); v14 = sub_5CF620(&v24); v15 = sub_4E7100(&unk_1321BBF0, (const char *)v14, v13); if ( v15 != 0 ) { v20 = *(_DWORD *)(v15 + 25); v18 = *(_DWORD *)(v15 + 21); if ( *((_DWORD *)v19 + 14) && (*(int (__stdcall **)(char *, int))(**((_DWORD **)v19 + 14) + 8))(&v22, a3) && *((_DWORD *)v19 + 15) && (*(int (__stdcall **)(char *, int))(**((_DWORD **)v19 + 15) + 8))(&v21, a3) ) { *(_DWORD *)(v15 + 21) = sub_4D5840(&v22, 0); *(_DWORD *)(v15 + 25) = sub_4D5840(&v21, 0); } v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, "Def", 0x14u); sub_4B3590((void *)dword_D9FAF98, (int)v30, v15 + 41, v15, (int)v25); *(_DWORD *)(v15 + 21) = v18; *(_DWORD *)(v15 + 25) = v20; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMobRegen::sa_Step : No regen index", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegenGroup::sa_Step : Not map name", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegenGroup::sa_Step : no index", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegenGroup::sa_Step : no map", 0); } v16 = sub_4D6100(a3); LOBYTE(v34) = 3; nullsub_2(&v21); LOBYTE(v34) = 2; nullsub_2(&v22); LOBYTE(v34) = 1; nullsub_2(&v23); LOBYTE(v34) = 0; nullsub_2(&v24); --dword_750CB8; v34 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineRegenGroup::sa_Step"); return v16; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; // 1321B748: using guessed type int dword_1321B748; //----- (004EDA00) -------------------------------------------------------- signed __int16 __thiscall sub_4EDA00(void *this, int a2, int a3, int a4) { void *v4; // eax@2 void *v5; // eax@2 void *v6; // eax@2 void *v7; // eax@2 int v8; // edi@3 __int16 v9; // si@4 void *v10; // ecx@5 void *v12; // eax@13 int v13; // [sp-4h] [bp-40h]@9 int (__stdcall **v14)(int, int, int); // [sp+10h] [bp-2Ch]@5 __int16 v15; // [sp+14h] [bp-28h]@5 int v16; // [sp+18h] [bp-24h]@5 int v17; // [sp+1Ch] [bp-20h]@5 int v18; // [sp+20h] [bp-1Ch]@5 bool (__thiscall *v19)(void *, int, int); // [sp+24h] [bp-18h]@5 int v20; // [sp+28h] [bp-14h]@1 void *v21; // [sp+2Ch] [bp-10h]@1 int v22; // [sp+38h] [bp-4h]@1 v21 = this; v20 = (int)"PineEventScriptNode::ShineWaitUserLogin::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitUserLogin::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWaitUserLogin::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; if ( !*(_DWORD *)a4 ) { v4 = sub_4D56C0(&dword_1321B748, (int)"["); v5 = sub_4D56C0(v4, a2); v6 = sub_4D56C0(v5, (int)"]"); v7 = sub_4D56C0(v6, (int)"ShineWaitUserLogin"); sub_4D56C0(v7, (int)&unk_1321B74C); ++*(_DWORD *)a4; *(_DWORD *)(a3 + 65804) = dword_14D129E8 + 2400; } v8 = sub_4D93E0((int)((char *)v21 + 36), (void *)a3); if ( v8 != 0 ) { sub_427BE0(&v14); v14 = &off_6C6274; v15 = -1; v16 = 0; v17 = 0; v18 = 1; v19 = sub_427D10; v10 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v22) = 1; if ( v10 != 0 ) sub_549B60(v10, (int)&v14, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); if ( v17 <= 0 ) { if ( *(_DWORD *)(a3 + 65804) >= (unsigned int)dword_14D129E8 ) { LOBYTE(v22) = 0; v14 = &off_6C6274; sub_427EB0(&v14); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitUserLogin::sa_Step"); return 1; } v13 = 0; } else { v13 = 1; } v12 = sub_4D5720((void *)v8); sub_4D67A0(v12, v13); v9 = sub_4D6100(a3); LOBYTE(v22) = 0; v14 = &off_6C6274; sub_427EB0(&v14); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWaitUserLogin::sa_Step", 0); v9 = sub_4D6100(a3); } --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitUserLogin::sa_Step"); return v9; } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; // 14D129E8: using guessed type int dword_14D129E8; //----- (004EDC20) -------------------------------------------------------- signed __int16 __thiscall sub_4EDC20(void *this, int a2, int a3, int a4) { bool v4; // zf@1 void *v5; // eax@2 void *v6; // eax@2 void *v7; // eax@2 void *v8; // eax@2 int (__stdcall *v9)(_DWORD, _DWORD); // edx@3 int v10; // eax@3 int v11; // esi@4 int v12; // eax@4 void *v13; // eax@6 void *v14; // eax@6 void *v15; // ecx@6 int (__stdcall *v16)(_DWORD, _DWORD); // edx@8 __int16 v17; // ax@10 void *v18; // ecx@10 __int16 v19; // si@11 int (__stdcall *v20)(_DWORD, _DWORD); // edx@15 int v21; // esi@17 int v22; // eax@17 int (__stdcall *v23)(_DWORD, _DWORD); // eax@19 int v24; // esi@21 int v25; // eax@21 void *v26; // eax@21 void *v27; // eax@21 int v29; // eax@25 void *v30; // eax@25 void *v31; // eax@25 int v32; // [sp-10h] [bp-434h]@5 int v33; // [sp-Ch] [bp-430h]@4 int v34; // [sp-8h] [bp-42Ch]@3 int v35; // [sp-8h] [bp-42Ch]@4 void *v36; // [sp+10h] [bp-414h]@1 char v37; // [sp+14h] [bp-410h]@19 char v38; // [sp+114h] [bp-310h]@2 char v39; // [sp+214h] [bp-210h]@2 char v40; // [sp+314h] [bp-110h]@3 unsigned int v41; // [sp+414h] [bp-10h]@1 int v42; // [sp+420h] [bp-4h]@1 int v43; // [sp+424h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v36 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShinePause::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShinePause::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)a4 == 0; v42 = 0; if ( !v4 ) goto LABEL_23; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShinePause : "); ++*(_DWORD *)a4; sub_4D5720(&v38); LOBYTE(v42) = 1; v8 = sub_4D9320((int)((char *)v36 + 36), &v38, (void *)a3); sub_4D5730((unsigned int)v8); memcpy(&v39, &v38, 0x100u); LOBYTE(v42) = 2; if ( !sub_4D58C0(&v39, (const char *)&unk_1321D908) ) { if ( sub_4D58C0(&v39, (const char *)&unk_1321C800) ) { sub_4D5720(&v40); v16 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v36 + 12) + 8); LOBYTE(v42) = 4; if ( v16(&v40, a3) != 0 ) { v11 = dword_14D129E8; v12 = 600 * sub_4D5840(&v40, 0); v35 = (int)&unk_1321B74C; v33 = (int)" Minute"; goto LABEL_5; } v34 = 1; } else { if ( !sub_4D58C0(&v39, (const char *)&unk_1321DB08) ) { if ( !sub_4D58C0(&v39, (const char *)&unk_1321CC08) ) { v29 = (int)sub_5CF620(&v38); sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineWait::sa_Step : Invalid flag", v29); v30 = sub_4D56C0(&dword_1321B748, (int)"Error : "); v31 = sub_4D56C0(v30, (int)&v38); sub_4D56C0(v31, (int)&unk_1321B74C); v19 = sub_4D6100(a3); goto LABEL_12; } sub_4D5720(&v37); v23 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v36 + 12) + 8); LOBYTE(v42) = 6; if ( v23(&v37, a3) != 0 ) { v24 = dword_14D129E8; v25 = sub_4D5840(&v37, 0); *(_DWORD *)(a3 + 65804) = v24 + ((signed int)((unsigned __int64)(10 * v25 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v25 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v26 = sub_4D56C0(&dword_1321B748, (int)&v37); v27 = sub_4D56C0(v26, (int)" MilliSeconds"); sub_4D56C0(v27, (int)&unk_1321B74C); v15 = &v37; goto LABEL_22; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWait::sa_Step : no time", 3); v17 = sub_4D6100(a3); v18 = &v37; LABEL_11: LOBYTE(v42) = 2; v19 = v17; nullsub_2(v18); LABEL_12: LOBYTE(v42) = 1; nullsub_2(&v39); LOBYTE(v42) = 0; nullsub_2(&v38); goto LABEL_27; } sub_4D5720(&v40); v20 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v36 + 12) + 8); LOBYTE(v42) = 5; if ( v20(&v40, a3) != 0 ) { v21 = dword_14D129E8; v22 = sub_4D5840(&v40, 0); v35 = (int)&unk_1321B74C; v33 = (int)" Seconds"; *(_DWORD *)(a3 + 65804) = v21 + 10 * v22; v32 = (int)&v40; goto LABEL_6; } v34 = 2; } LABEL_10: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWait::sa_Step : no time", v34); v17 = sub_4D6100(a3); v18 = &v40; goto LABEL_11; } sub_4D5720(&v40); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v36 + 12) + 8); LOBYTE(v42) = 3; v10 = v9(&v40, a3); v34 = 0; if ( !(v10 != 0) ) goto LABEL_10; v11 = dword_14D129E8; v12 = 36000 * sub_4D5840(&v40, 0); v35 = (int)&unk_1321B74C; v33 = (int)" Hours"; LABEL_5: *(_DWORD *)(a3 + 65804) = v11 + v12; v32 = (int)&v40; LABEL_6: v13 = sub_4D56C0(&dword_1321B748, v32); v14 = sub_4D56C0(v13, v33); sub_4D56C0(v14, v35); v15 = &v40; LABEL_22: LOBYTE(v42) = 2; nullsub_2(v15); LOBYTE(v42) = 1; nullsub_2(&v39); LOBYTE(v42) = 0; nullsub_2(&v38); LABEL_23: if ( *(_DWORD *)(a3 + 65804) >= (unsigned int)dword_14D129E8 ) { --dword_750CB8; v42 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShinePause::sa_Step"); return 1; } v19 = sub_4D6100(a3); LABEL_27: --dword_750CB8; v42 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShinePause::sa_Step"); return v19; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; // 14D129E8: using guessed type int dword_14D129E8; //----- (004EE0C0) -------------------------------------------------------- __int16 __thiscall sub_4EE0C0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // ebx@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 void *v11; // eax@5 void *v12; // edi@5 void *v13; // eax@6 int v14; // eax@6 char v16; // [sp+14h] [bp-110h]@3 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCChat::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineNPCChat::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineNPCChat : "); v8 = sub_4EB170(v4, (void *)a3); if ( v8 != 0 ) { sub_4D5720(&v16); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; if ( v10(&v16, a3) != 0 ) { v11 = sub_4D56C0(&dword_1321B748, (int)&v16); sub_4D56C0(v11, (int)&unk_1321B74C); v12 = *(void **)(a3 + 65840); if ( v12 ) { v13 = sub_5CF620(&v16); v14 = sub_48C200(v12, (const char *)v13); (*(void (__thiscall **)(int, signed int, int, unsigned int, signed int))(*(_DWORD *)v8 + 1328))( v8, 65535, v14, strlen((const char *)v14), 1); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCChat::sa_Step", 0); } v9 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCChat::sa_Step : Null obj", 0); v9 = sub_4D6100(a3); } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCChat::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EE2A0) -------------------------------------------------------- __int16 __thiscall sub_4EE2A0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // ebx@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 void *v11; // eax@5 void *v12; // edi@5 void *v13; // eax@6 int v14; // eax@6 char v16; // [sp+14h] [bp-110h]@3 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCShout::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineNPCShout::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineNPCShout : "); v8 = sub_4EB170(v4, (void *)a3); if ( v8 != 0 ) { sub_4D5720(&v16); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; if ( v10(&v16, a3) != 0 ) { v11 = sub_4D56C0(&dword_1321B748, (int)&v16); sub_4D56C0(v11, (int)&unk_1321B74C); v12 = *(void **)(a3 + 65840); if ( v12 ) { v13 = sub_5CF620(&v16); v14 = sub_48C200(v12, (const char *)v13); (*(void (__thiscall **)(int, signed int, _DWORD, int, unsigned int))(*(_DWORD *)v8 + 1332))( v8, 65535, byte_6A492E, v14, strlen((const char *)v14)); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCShout::sa_Step", 0); } v9 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCShout::sa_Step : Null obj", 0); v9 = sub_4D6100(a3); } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCShout::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EE480) -------------------------------------------------------- __int16 __thiscall sub_4EE480(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // esi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v11; // si@2 int (__stdcall *v12)(_DWORD, _DWORD); // eax@3 void *v13; // esi@5 void *v14; // eax@6 int v15; // eax@6 void *v16; // esi@6 int v17; // ebx@6 void *v18; // eax@6 int v19; // eax@6 void *v20; // esi@6 int v21; // ecx@6 char v22; // bl@7 unsigned __int8 v23; // cl@8 int v24; // ecx@8 void *v25; // eax@9 void *v26; // eax@9 void *v27; // eax@9 char v29; // [sp+10h] [bp-220h]@8 char v30; // [sp+20h] [bp-210h]@3 char v31; // [sp+120h] [bp-110h]@1 unsigned int v32; // [sp+220h] [bp-10h]@1 int v33; // [sp+22Ch] [bp-4h]@1 int v34; // [sp+230h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v4 = (unsigned int)&v34 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineSomeoneShout::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineSomeoneShout::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v33 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"ShineSomeoneShout"); sub_4D56C0(v9, (int)&unk_1321B74C); sub_4D5720(&v31); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v33) = 1; if ( v10(&v31, a3, v4) != 0 ) { sub_4D5720(&v30); v12 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v33) = 2; if ( v12(&v30, a3) != 0 ) { v13 = *(void **)(a3 + 65840); if ( v13 ) { v14 = sub_5CF620(&v31); v15 = sub_48C200(v13, (const char *)v14); v16 = *(void **)(a3 + 65840); v17 = v15; v18 = sub_5CF620(&v30); v19 = sub_48C200(v16, (const char *)v18); v20 = off_849C18; *(_WORD *)off_849C18 = 8223; *((_BYTE *)v20 + 22) &= 0xFCu; *(_DWORD *)((char *)v20 + 2) = *(_DWORD *)v17; *(_DWORD *)((char *)v20 + 6) = *(_DWORD *)(v17 + 4); *(_DWORD *)((char *)v20 + 10) = *(_DWORD *)(v17 + 8); *(_DWORD *)((char *)v20 + 14) = *(_DWORD *)(v17 + 12); v21 = v19; *(_DWORD *)((char *)v20 + 18) = *(_DWORD *)(v17 + 16); do v22 = *(_BYTE *)v21++; while ( v22 ); v23 = v21 - (v19 + 1); *((_BYTE *)v20 + 23) = v23; memmove((char *)v20 + 24, (const void *)v19, v23); sub_4287B0(&v29, &off_849C18, *((_BYTE *)v20 + 23) + 24); v24 = *(_DWORD *)(a3 + 65816); LOBYTE(v33) = 3; sub_4E20B0(v24, (int)&v29); LOBYTE(v33) = 2; sub_428A70(&v29); } v25 = sub_4D56C0(&dword_1321B748, (int)&v31); v26 = sub_4D56C0(v25, (int)" : "); v27 = sub_4D56C0(v26, (int)&v30); sub_4D56C0(v27, (int)&unk_1321B74C); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChat::sa_Step : Null chat", 0); } v11 = sub_4D6100(a3); LOBYTE(v33) = 1; nullsub_2(&v30); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChat::sa_Step : Null body", 0); v11 = sub_4D6100(a3); } LOBYTE(v33) = 0; nullsub_2(&v31); --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineSomeoneShout::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EE730) -------------------------------------------------------- __int16 __thiscall sub_4EE730(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 __int16 v8; // si@2 int (__stdcall *v9)(_DWORD, _DWORD); // edx@3 void *v10; // eax@5 signed int v11; // eax@5 int v12; // eax@8 void *v13; // eax@10 int (__stdcall *v14)(_DWORD, _DWORD); // edx@10 int v15; // eax@12 int v16; // edi@12 void *v17; // eax@12 int v18; // eax@12 int v20; // [sp+14h] [bp-234h]@12 int v21; // [sp+18h] [bp-230h]@12 int v22; // [sp+1Ch] [bp-22Ch]@1 int v23; // [sp+20h] [bp-228h]@1 char v24; // [sp+24h] [bp-224h]@10 char v25; // [sp+124h] [bp-124h]@3 char v26[4]; // [sp+224h] [bp-24h]@12 int v27; // [sp+228h] [bp-20h]@12 int v28; // [sp+22Ch] [bp-1Ch]@12 int v29; // [sp+230h] [bp-18h]@12 int v30; // [sp+234h] [bp-14h]@12 unsigned int v31; // [sp+238h] [bp-10h]@1 int v32; // [sp+244h] [bp-4h]@1 int v33; // [sp+248h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v4 = this; v23 = a2; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineSummonMob::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineSummonMob::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v32 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, v23); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineSummonMob : "); v22 = sub_4EB170(v4, (void *)a3); if ( v22 ) { sub_4D5720(&v25); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v32) = 1; if ( v9(&v25, a3) != 0 ) { v10 = sub_5CF620(&v25); v11 = sub_639620(&unk_14D16018, (unsigned __int8 *)v10); if ( v11 == -1 ) v23 = 65535; else v23 = (unsigned __int16)v11; v12 = (int)sub_5CF620(&v25); if ( (_WORD)v23 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineSummonMob::sa_Step : no mob", v12); v8 = sub_4D6100(a3); } else { v13 = sub_4D56C0(&dword_1321B748, (int)&v25); sub_4D56C0(v13, (int)word_6A2BF8); sub_4D5720(&v24); v14 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 13) + 8); LOBYTE(v32) = 2; if ( v14(&v24, a3) != 0 ) { v15 = sub_4D5840(&v24, 0); v16 = v15; v17 = sub_4D56C0(&dword_1321B748, v15); sub_4D56C0(v17, (int)&unk_1321B74C); v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; strncpy(v26, "Def", 0x14u); v18 = *(_DWORD *)(v22 + 102); v20 = *(_DWORD *)v18; v21 = *(_DWORD *)(v18 + 4); sub_4B5FD0( (void *)dword_D9FAF98, *(_DWORD *)(v22 + 122), (int)&v20, 0, v23, (int)"-", v16, 0, 0, 1, (int)v26, 0, (int)"-", 65535, -1, 0, 0); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSummonMob::sa_Step : no number", 0); } v8 = sub_4D6100(a3); LOBYTE(v32) = 1; nullsub_2(&v24); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSummonMob::sa_Step : no mob", 0); v8 = sub_4D6100(a3); } LOBYTE(v32) = 0; nullsub_2(&v25); } else { v8 = sub_4D6100(a3); } --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineSummonMob::sa_Step"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; // 1321B748: using guessed type int dword_1321B748; //----- (004EEA20) -------------------------------------------------------- __int16 __thiscall sub_4EEA20(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int v10; // eax@1 void *v11; // ecx@2 void *v12; // ecx@9 __int16 v13; // si@11 int v15; // [sp-Ch] [bp-138h]@4 int v16; // [sp-8h] [bp-134h]@2 char v17; // [sp+10h] [bp-11Ch]@2 char v18; // [sp+1Ch] [bp-110h]@1 unsigned int v19; // [sp+11Ch] [bp-10h]@1 int v20; // [sp+128h] [bp-4h]@1 int v21; // [sp+12Ch] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineQuestResult::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineQuestResult::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineQuestResult"); sub_4D56C0(v8, (int)&unk_1321B74C); sub_4D5720(&v18); LOBYTE(v20) = 1; v9 = sub_4D9320((int)((char *)v4 + 36), &v18, (void *)a3); v10 = sub_4D5730((unsigned int)v9); if ( sub_4D58C0((const char *)v10, (const char *)&unk_1321E690) ) { sub_4281E0((int)&v17, 22, 18); v11 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v20) = 2; v16 = 0; if ( !v11 ) { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_9; } v15 = (int)&v17; } else { sub_4281E0((int)&v17, 22, 19); v11 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v20) = 3; v16 = 0; if ( !v11 ) { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_9; } v15 = (int)&v17; } sub_549B60(v11, v15, v16); LABEL_9: LOBYTE(v20) = 1; sub_427EB0(&v17); v12 = *(void **)(*(_DWORD *)(a3 + 65816) + 77288); if ( v12 ) sub_494EA0(v12, 432); v13 = sub_4D6100(a3); LOBYTE(v20) = 0; nullsub_2(&v18); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineQuestResult::sa_Step"); return v13; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EEC20) -------------------------------------------------------- __int16 __thiscall sub_4EEC20(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int v10; // eax@1 int v11; // eax@2 int v12; // eax@3 void *v13; // ecx@7 __int16 v14; // si@11 char v16; // [sp+10h] [bp-11Ch]@7 char v17; // [sp+1Ch] [bp-110h]@1 unsigned int v18; // [sp+11Ch] [bp-10h]@1 int v19; // [sp+128h] [bp-4h]@1 int v20; // [sp+12Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineReward::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineReward::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineReward"); sub_4D56C0(v8, (int)&unk_1321B74C); sub_4D5720(&v17); LOBYTE(v19) = 1; v9 = sub_4D9320((int)((char *)v4 + 36), &v17, (void *)a3); v10 = sub_4D5730((unsigned int)v9); if ( sub_4D58C0((const char *)v10, (const char *)&unk_1321E090) ) { v11 = *(_DWORD *)(*(_DWORD *)(a3 + 65816) + 77288); if ( v11 ) v12 = *(_DWORD *)(v11 + 60); else v12 = -1; if ( v12 == -1 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEventReward::sa_Step : No KQ info", 0); } else { sub_428110(&v16, v12); v13 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v19) = 2; if ( v13 ) sub_549B60(v13, (int)&v16, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v19) = 1; sub_427EB0(&v16); } } v14 = sub_4D6100(a3); LOBYTE(v19) = 0; nullsub_2(&v17); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineReward::sa_Step"); return v14; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EEE00) -------------------------------------------------------- __int16 __thiscall sub_4EEE00(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v11; // si@2 const char *v12; // ebx@3 void *v13; // eax@4 void *v14; // eax@6 int v15; // eax@6 void *v16; // ecx@7 __int16 v17; // ax@13 int v18; // eax@13 char v20; // [sp+10h] [bp-218h]@7 void *v21; // [sp+14h] [bp-214h]@3 char v22; // [sp+18h] [bp-210h]@1 char v23; // [sp+118h] [bp-110h]@6 unsigned int v24; // [sp+218h] [bp-10h]@1 int v25; // [sp+224h] [bp-4h]@1 int v26; // [sp+228h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v4 = (unsigned int)&v26 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineBroadcast::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineBroadcast::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"ShineBroadcast"); sub_4D56C0(v9, (int)&unk_1321B74C); sub_4D5720(&v22); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v25) = 1; if ( v10(&v22, a3, v4) != 0 ) { v12 = (const char *)sub_5CF620(&v22); v21 = *(void **)(a3 + 65840); if ( v21 ) { v13 = sub_5CF620(&v22); v12 = (const char *)sub_48C200(v21, (const char *)v13); if ( !strncmp(v12, byte_6A492E, 1u) ) v12 = (const char *)sub_5CF620(&v22); } sub_4D5720(&v23); LOBYTE(v25) = 2; v14 = sub_4D9320((int)((char *)v5 + 36), &v23, (void *)a3); v15 = sub_4D5730((unsigned int)v14); if ( sub_4D58C0((const char *)v15, (const char *)&unk_1321D008) ) { sub_427E90((int)&v20, (int)v12); v16 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v25) = 3; if ( v16 ) { sub_549B60(v16, (int)&v20, 0); LOBYTE(v25) = 2; sub_427EB0(&v20); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v25) = 2; sub_427EB0(&v20); } } else { if ( sub_4D58C0(&v23, (const char *)&unk_1321E590) ) { if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v5 + 13) + 8))(*((_DWORD *)v5 + 13), &v23, a3) != 0 ) { v17 = sub_4D5840(&v23, 0); v18 = sub_54DE90(&unk_13253630, v17); if ( v18 ) (*(void (__thiscall **)(int, const char *))(*(_DWORD *)v18 + 1924))(v18, v12); else sub_4D5840(&v23, 0); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBroadcast::sa_Step : no Player with handle", 0); } } } v11 = sub_4D6100(a3); LOBYTE(v25) = 1; nullsub_2(&v23); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBroadcast::sa_Step : no message", 0); v11 = sub_4D6100(a3); } LOBYTE(v25) = 0; nullsub_2(&v22); --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineBroadcast::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EF0E0) -------------------------------------------------------- __int16 __thiscall sub_4EF0E0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v11; // si@2 int (__stdcall *v12)(_DWORD, _DWORD); // eax@3 int (__stdcall *v13)(_DWORD, _DWORD); // edx@5 int (__stdcall *v14)(_DWORD, _DWORD); // eax@7 void *v15; // eax@9 void *v16; // eax@9 void *v17; // eax@9 int v18; // eax@9 int v19; // ecx@10 void *v20; // eax@11 int v21; // eax@11 int v22; // ecx@12 int v23; // edi@13 int (__stdcall **v25)(int, int, int); // [sp+10h] [bp-580h]@10 char *v26; // [sp+14h] [bp-57Ch]@12 int v27; // [sp+18h] [bp-578h]@1 char v28; // [sp+1Ch] [bp-574h]@9 char v29; // [sp+11Ch] [bp-474h]@7 char v30; // [sp+21Ch] [bp-374h]@5 char v31; // [sp+31Ch] [bp-274h]@3 char v32; // [sp+41Ch] [bp-174h]@1 char v33; // [sp+51Ch] [bp-74h]@10 char v34; // [sp+530h] [bp-60h]@9 char v35; // [sp+53Ch] [bp-54h]@9 char v36; // [sp+551h] [bp-3Fh]@9 char v37; // [sp+55Dh] [bp-33h]@9 int v38; // [sp+572h] [bp-1Eh]@9 int v39; // [sp+576h] [bp-1Ah]@9 unsigned int v40; // [sp+580h] [bp-10h]@1 int v41; // [sp+58Ch] [bp-4h]@1 int v42; // [sp+590h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v4 = (unsigned int)&v42 ^ __security_cookie; v5 = this; v27 = a2; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineLinkTo::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineLinkTo::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v41 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, v27); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"ShineLinkTo"); sub_4D56C0(v9, (int)&unk_1321B74C); sub_4D5720(&v32); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v41) = 1; if ( v10(&v32, a3, v4) != 0 ) { sub_4D5720(&v31); v12 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v41) = 2; if ( v12(&v31, a3) != 0 ) { sub_4D5720(&v30); v13 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 14) + 8); LOBYTE(v41) = 3; if ( v13(&v30, a3) != 0 ) { sub_4D5720(&v29); v14 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 15) + 8); LOBYTE(v41) = 4; if ( v14(&v29, a3) != 0 ) { v15 = sub_5CF620(&v32); strncpy(&v34, (const char *)v15, 0xCu); v35 = 0; v16 = sub_5CF620(&v31); strncpy(&v36, (const char *)v16, 0xCu); v37 = 0; v38 = sub_4D5840(&v30, 0); v39 = sub_4D5840(&v29, 0); sub_4D5720(&v28); LOBYTE(v41) = 5; v17 = sub_4D9320((int)((char *)v5 + 36), &v28, (void *)a3); v18 = sub_4D5730((unsigned int)v17); if ( sub_4D58C0((const char *)v18, (const char *)&unk_1321D008) ) { sub_428200((int)&v25, (int)&v33); v19 = *(_DWORD *)(a3 + 65816); LOBYTE(v41) = 6; sub_4E20B0(v19, (int)&v25); LOBYTE(v41) = 5; sub_427EB0(&v25); } else { v20 = sub_4D9320((int)((char *)v5 + 36), &v28, (void *)a3); v21 = sub_4D5730((unsigned int)v20); if ( sub_4D58C0((const char *)v21, (const char *)&unk_1321D308) ) { sub_427BE0(&v25); v25 = &off_6C7190; v26 = &v33; v22 = *(_DWORD *)(a3 + 65816); LOBYTE(v41) = 7; sub_4E20B0(v22, (int)&v25); LOBYTE(v41) = 5; v25 = &off_6C7190; sub_427EB0(&v25); } else { v23 = sub_4EB170(v5, (void *)a3); if ( v23 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v23 + 1156))(v23) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v23 + 1160))(v23); (*(void (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)v23 + 1020))(v23, &v33, 0); } } } v11 = sub_4D6100(a3); LOBYTE(v41) = 4; nullsub_2(&v28); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineLinkTo::sa_Step : no ycoord", 0); v11 = sub_4D6100(a3); } LOBYTE(v41) = 3; nullsub_2(&v29); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineLinkTo::sa_Step : no xcoord", 0); v11 = sub_4D6100(a3); } LOBYTE(v41) = 2; nullsub_2(&v30); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineLinkTo::sa_Step : no ClientMap", 0); v11 = sub_4D6100(a3); } LOBYTE(v41) = 1; nullsub_2(&v31); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineLinkTo::sa_Step : no ServerMap", 0); v11 = sub_4D6100(a3); } LOBYTE(v41) = 0; nullsub_2(&v32); --dword_750CB8; v41 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineLinkTo::sa_Step"); return v11; } // 6C7190: using guessed type int (__stdcall *off_6C7190)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EF4D0) -------------------------------------------------------- signed __int16 __thiscall sub_4EF4D0(void *this, int a2, int a3, int a4) { void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 __int16 v9; // si@2 __int16 v10; // ax@3 int v11; // eax@3 int (__stdcall *v12)(_DWORD); // edx@6 void *v14; // eax@13 signed int v15; // eax@13 signed __int16 v16; // di@14 int v17; // eax@16 int v18; // eax@18 int v19; // ST18_4@22 char *v20; // eax@22 int v21; // edi@22 unsigned __int16 v22; // ax@22 int v23; // edx@22 unsigned __int16 v24; // ax@22 int v25; // eax@23 int v26; // eax@24 const char *v27; // eax@25 int *v28; // eax@26 int (__thiscall *v29)(_DWORD, _DWORD); // edx@26 int v30; // eax@26 int v31; // [sp-Ch] [bp-228h]@7 int v32; // [sp-8h] [bp-224h]@7 unsigned int v33; // [sp-4h] [bp-220h]@1 char v34; // [sp+10h] [bp-20Ch]@29 int v35; // [sp+1Ch] [bp-200h]@3 int v36; // [sp+20h] [bp-1FCh]@3 int v37; // [sp+24h] [bp-1F8h]@4 void *v38; // [sp+28h] [bp-1F4h]@1 int v39; // [sp+2Ch] [bp-1F0h]@14 int v40; // [sp+30h] [bp-1ECh]@22 void *v41; // [sp+34h] [bp-1E8h]@1 char v42; // [sp+38h] [bp-1E4h]@22 __int16 v43; // [sp+40h] [bp-1DCh]@22 char v44; // [sp+A8h] [bp-174h]@6 int v45; // [sp+1A8h] [bp-74h]@22 int v46; // [sp+1ACh] [bp-70h]@22 int v47; // [sp+1B0h] [bp-6Ch]@22 int v48; // [sp+1B4h] [bp-68h]@22 int v49; // [sp+1B8h] [bp-64h]@22 int v50; // [sp+1E4h] [bp-38h]@22 int v51; // [sp+1E8h] [bp-34h]@22 int v52; // [sp+1ECh] [bp-30h]@22 int v53; // [sp+1F0h] [bp-2Ch]@22 int v54; // [sp+1F4h] [bp-28h]@22 int v55; // [sp+1F8h] [bp-24h]@22 int v56; // [sp+1FCh] [bp-20h]@22 int v57; // [sp+200h] [bp-1Ch]@22 int v58; // [sp+204h] [bp-18h]@22 unsigned int v59; // [sp+20Ch] [bp-10h]@1 int v60; // [sp+218h] [bp-4h]@1 int v61; // [sp+21Ch] [bp+0h]@1 v59 = (unsigned int)&v61 ^ __security_cookie; v33 = (unsigned int)&v61 ^ __security_cookie; v41 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemDrop::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineItemDrop::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v60 = 0; v4 = sub_4D56C0(&dword_1321B748, (int)"["); v5 = sub_4D56C0(v4, a2); v6 = sub_4D56C0(v5, (int)"]"); v7 = sub_4D56C0(v6, (int)"ShineItemDrop"); sub_4D56C0(v7, (int)&unk_1321B74C); v8 = sub_4EB170(v41, (void *)a3); v38 = (void *)v8; if ( v8 == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemDrop::sa_Step : Null dropper", 0); v9 = sub_4D6100(a3); LABEL_10: --dword_750CB8; LABEL_11: v60 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemDrop::sa_Step"); return v9; } v10 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v8 + 2060))(v8, v33); v36 = (unsigned __int16)v10; v11 = sub_54DE90(&unk_13253630, v10); v35 = v11; if ( v11 ) { v37 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 836))(v11); } else { v37 = -1; v36 = 65535; } sub_4D5720(&v44); v12 = *(int (__stdcall **)(_DWORD))(**((_DWORD **)v41 + 12) + 8); LOBYTE(v60) = 1; if ( v12(&v44) == 0 ) { v32 = 0; v31 = (int)"PineEventScriptNode::ShineItemDrop::sa_Step : no item"; LABEL_8: sub_639100(&unk_86DDD8, v31, v32); LABEL_9: v9 = sub_4D6100(a3); LOBYTE(v60) = 0; nullsub_2(&v44); goto LABEL_10; } v14 = sub_5CF620(&v44); v15 = sub_639620(&unk_14D20898, (unsigned __int8 *)v14); if ( v15 == -1 ) { v16 = -1; v39 = 65535; } else { v39 = (unsigned __int16)v15; v16 = v15; } v17 = (int)sub_5CF620(&v44); if ( v16 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemDrop::sa_Step : Item Not Found", v17); goto LABEL_9; } v18 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v41 + 13) + 8))(&v44, a3); v32 = 0; if ( v18 == 0 ) { v31 = (int)"PineEventScriptNode::ShineItemDrop::sa_Step : no droprate"; goto LABEL_8; } v41 = (void *)sub_4D5840(&v44, 0); if ( sub_639500((int)&unk_1508B108, 0xF4240u) < (unsigned int)v41 ) { sub_46FE30((int)&v42); v19 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v20 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v42, v16, 3, *((_DWORD *)v20 + 4), v19); v43 = v16; v21 = (int)sub_63ACA0(dword_1508B168, v16); v49 = 0; v48 = 0; v47 = 0; v46 = 0; v45 = 0; v50 = 65537; v51 = 0; v52 = 0; v53 = 0; v54 = 0; v55 = 0; v56 = 0; v57 = 0; v58 = 0; v22 = sub_639500((int)&unk_1508B108, 0x3E8u); v23 = *(_DWORD *)v38; v41 = (void *)v22; v40 = *(_DWORD *)v21 + 44; v24 = (*(int (__cdecl **)(int))(v23 + 1800))(a3); if ( (unsigned __int8)(*(int (__thiscall **)(int, char *, int *, _DWORD, _DWORD))v40)( v21, &v42, &v45, (unsigned __int16)v41, v24) ) { v25 = sub_418CB0((int)&dword_14D20890, v39); if ( v25 ) { v26 = *(_DWORD *)(v25 + 4); if ( v26 ) { v27 = (const char *)(v26 + 137); if ( v27 ) { v28 = sub_4934A0(&dword_D61E064, v27); v29 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v21 + 112); v40 = (int)v28; v30 = v29(v21, &v43); if ( v40 && v30 ) sub_4928F0(v30, v40); sub_4C0A40((int)&v34); sub_4C0A80((int)&v34, v35); if ( !sub_4B0220(v38, (int)&v42, 1, (int)&v34, v36, v37, v21, 0) ) sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemDrop::sa_Step : Drop fail", 0); v9 = sub_4D6100(a3); LOBYTE(v60) = 0; nullsub_2(&v44); --dword_750CB8; goto LABEL_11; } } } goto LABEL_9; } } LOBYTE(v60) = 0; nullsub_2(&v44); --dword_750CB8; v60 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemDrop::sa_Step"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; // 14D20890: using guessed type int dword_14D20890; //----- (004EF970) -------------------------------------------------------- __int16 __thiscall sub_4EF970(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // edi@1 __int16 v10; // ax@5 int v11; // eax@5 int v12; // ST10_4@7 void *v13; // eax@7 __int16 v14; // si@8 char v16; // [sp+14h] [bp-110h]@1 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineWhoClickMe"); sub_4D56C0(v8, (int)&unk_1321B74C); sub_4D5720(&v16); LOBYTE(v18) = 1; v9 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v9 != 0 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 12) + 8))(&v16, a3) != 0 ) { v10 = sub_4D5840(&v16, 0); v11 = sub_54DE90(&unk_13253630, v10); if ( v11 ) { v12 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2064))(v11); v13 = sub_4D5720((void *)v9); sub_4D67A0(v13, v12); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step : No npc", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step : no Player", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step", 0); } v14 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step"); return v14; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EFB40) -------------------------------------------------------- __int16 __thiscall sub_4EFB40(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 void *v10; // eax@3 void *v11; // eax@3 signed int v12; // eax@3 void *v13; // eax@6 int v14; // eax@6 void *v15; // ecx@7 int v16; // eax@10 int v17; // ebx@10 int v18; // edi@13 int v19; // eax@13 void (__thiscall *v20)(_DWORD, _DWORD, _DWORD); // edx@13 __int16 v21; // si@16 int v23; // [sp-8h] [bp-134h]@13 signed int v24; // [sp-4h] [bp-130h]@13 char v25; // [sp+10h] [bp-11Ch]@7 int v26; // [sp+18h] [bp-114h]@4 char v27; // [sp+1Ch] [bp-110h]@1 unsigned int v28; // [sp+11Ch] [bp-10h]@1 int v29; // [sp+128h] [bp-4h]@1 int v30; // [sp+12Ch] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v4 = (unsigned int)&v30 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemErase::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineItemErase::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineItemErase : "); sub_4D5720(&v27); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v29) = 1; if ( v9(&v27, a3, v4) != 0 ) { v10 = sub_4D56C0(&dword_1321B748, (int)&v27); sub_4D56C0(v10, (int)&unk_1321B74C); v11 = sub_5CF620(&v27); v12 = sub_639620(&unk_14D20898, (unsigned __int8 *)v11); if ( v12 == -1 ) v26 = 65535; else v26 = (unsigned __int16)v12; v13 = sub_4D9320((int)((char *)v5 + 36), &v27, (void *)a3); v14 = sub_4D5730((unsigned int)v13); if ( !sub_4D58C0((const char *)v14, (const char *)&unk_1321D008) ) { v16 = sub_4EB170(v5, (void *)a3); v17 = v16; if ( *((_DWORD *)v5 + 13) ) { if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v5 + 13) + 8))(*((_DWORD *)v5 + 13), &v27, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemErase::sa_Step : no Num", 0); goto LABEL_16; } v18 = *(_DWORD *)v17; v19 = sub_4D5840(&v27, 0); v20 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(v18 + 2232); v24 = v19; v23 = v26; } else { v20 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v16 + 2232); v24 = -1; v23 = v26; } v20(v17, v23, v24); goto LABEL_16; } sub_428290((int)&v25, v26); v15 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v29) = 2; if ( v15 ) { sub_549B60(v15, (int)&v25, 0); LOBYTE(v29) = 1; sub_427EB0(&v25); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v29) = 1; sub_427EB0(&v25); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemErase::sa_Step : no Item", 0); } LABEL_16: v21 = sub_4D6100(a3); LOBYTE(v29) = 0; nullsub_2(&v27); --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemErase::sa_Step"); return v21; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EFDE0) -------------------------------------------------------- __int16 __thiscall sub_4EFDE0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // edi@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 void *v11; // eax@5 void *v12; // eax@5 signed int v13; // eax@5 char v15; // [sp+14h] [bp-110h]@3 unsigned int v16; // [sp+114h] [bp-10h]@1 int v17; // [sp+120h] [bp-4h]@1 int v18; // [sp+124h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemCreate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineItemCreate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineItemCreate : "); v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { sub_4D5720(&v15); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v17) = 1; if ( v10(&v15, a3) != 0 ) { v11 = sub_4D56C0(&dword_1321B748, (int)&v15); sub_4D56C0(v11, (int)&unk_1321B74C); v12 = sub_5CF620(&v15); v13 = sub_639620(&unk_14D20898, (unsigned __int8 *)v12); if ( v13 != -1 && (_WORD)v13 != -1 ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2228))(v8, v13); v9 = sub_4D6100(a3); LOBYTE(v17) = 0; nullsub_2(&v15); v17 = -1; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemCreate::sa_Step : no Item", 0); v9 = sub_4D6100(a3); LOBYTE(v17) = 0; nullsub_2(&v15); v17 = -1; } } else { v9 = sub_4D6100(a3); v17 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemCreate::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004EFFB0) -------------------------------------------------------- __int16 __thiscall sub_4EFFB0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // ebx@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 __int16 v11; // ax@5 int v12; // eax@5 void *v13; // eax@9 void *v14; // eax@9 signed int v15; // eax@9 __int16 v16; // di@9 int v17; // ST0C_4@13 int v18; // eax@13 unsigned int v20; // [sp-4h] [bp-140h]@1 int (**v21)(); // [sp+Ch] [bp-130h]@13 int v22; // [sp+14h] [bp-128h]@14 int v23; // [sp+20h] [bp-11Ch]@1 int v24; // [sp+28h] [bp-114h]@5 char v25; // [sp+2Ch] [bp-110h]@3 unsigned int v26; // [sp+12Ch] [bp-10h]@1 int v27; // [sp+138h] [bp-4h]@1 int v28; // [sp+13Ch] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v20 = (unsigned int)&v28 ^ __security_cookie; v4 = this; v23 = (int)"PineEventScriptNode::ShineInvenSearch::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineInvenSearch::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineInvenSearch : "); v8 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v8 != 0 ) { sub_4D5720((void *)v8); sub_4D5720(&v25); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v27) = 1; if ( v10(&v25, a3) != 0 ) { v11 = sub_4D5840(&v25, 0); v12 = sub_54DE90(&unk_13253630, v11); v24 = v12; if ( v12 != 0 ) { if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v4 + 13) + 8))(*((_DWORD *)v4 + 13), &v25, a3) != 0 ) { v13 = sub_4D56C0(&dword_1321B748, (int)&v25); sub_4D56C0(v13, (int)&unk_1321B74C); v14 = sub_5CF620(&v25); v15 = sub_639620(&unk_14D20898, (unsigned __int8 *)v14); v16 = -1; if ( v15 != -1 ) v16 = v15; if ( v16 == -1 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step : Item Invalid", 0); } else { v17 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v24 + 1176))(v20); v18 = (*(int (**)(void))(*(_DWORD *)v24 + 1148))(); sub_43BB70((int)&v21, v18 + 3668, v16, v17); LOBYTE(v27) = 2; if ( sub_43BBB0(&v21) ) sub_4D67A0((void *)v8, v22); LOBYTE(v27) = 1; v21 = &off_6A86A4; } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step : no Item", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step : No player", v12 != 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step : no Player", 0); } v9 = sub_4D6100(a3); LOBYTE(v27) = 0; nullsub_2(&v25); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step", 0); v9 = sub_4D6100(a3); } --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineInvenSearch::sa_Step"); return v9; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F0270) -------------------------------------------------------- __int16 __thiscall sub_4F0270(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // eax@1 __int16 v10; // si@2 int v11; // esi@3 int (__thiscall *v12)(_DWORD, _DWORD, _DWORD); // edx@3 signed __int16 v13; // di@6 void *v14; // eax@7 signed int v15; // eax@7 int (__stdcall *v16)(_DWORD, _DWORD); // edx@9 int v17; // esi@11 int v18; // ecx@11 int v19; // ST10_4@11 void *v20; // eax@11 void *v22; // [sp+10h] [bp-330h]@1 int (__stdcall **v23)(int, int, int); // [sp+14h] [bp-32Ch]@11 __int16 v24; // [sp+18h] [bp-328h]@11 unsigned __int16 v25; // [sp+1Ah] [bp-326h]@11 int v26; // [sp+1Ch] [bp-324h]@11 int v27; // [sp+20h] [bp-320h]@11 int v28; // [sp+24h] [bp-31Ch]@11 void *v29; // [sp+28h] [bp-318h]@1 int v30; // [sp+2Ch] [bp-314h]@6 char v31; // [sp+30h] [bp-310h]@9 char v32; // [sp+130h] [bp-210h]@5 char v33; // [sp+230h] [bp-110h]@3 unsigned int v34; // [sp+330h] [bp-10h]@1 int v35; // [sp+33Ch] [bp-4h]@1 int v36; // [sp+340h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v4 = this; v29 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineFindHandle::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineFindHandle::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v35 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineFindHandle"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); v22 = (void *)v9; if ( v9 != 0 ) { sub_4D5720(&v33); v11 = *((_DWORD *)v4 + 12); v12 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 8); LOBYTE(v35) = 1; if ( v12(v11, &v33, a3) != 0 ) { memcpy(&v32, &v33, 0x100u); LOBYTE(v35) = 2; sub_4D5730((unsigned int)&v32); if ( sub_4D58C0(&v32, (const char *)&unk_1321DE90) ) { v30 = 2; v13 = -1; } else { v30 = 5; v14 = sub_5CF620(&v33); v15 = sub_639620(&unk_14D16018, (unsigned __int8 *)v14); v13 = -1; if ( v15 != -1 ) v13 = v15; } sub_4D5720(&v31); v16 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v29 + 13) + 8); LOBYTE(v35) = 3; if ( v16(&v31, a3) != 0 ) { v17 = sub_4D5840(&v31, 0); sub_427BE0(&v23); v23 = &off_6AD44C; v24 = v13; v25 = -1; v27 = 0; v26 = v17; v28 = v30; v18 = *(_DWORD *)(a3 + 65816); LOBYTE(v35) = 4; sub_4E20B0(v18, (int)&v23); v19 = v25; v20 = sub_4D5720(v22); sub_4D67A0(v20, v19); v10 = sub_4D6100(a3); LOBYTE(v35) = 3; v23 = &off_6AD44C; sub_427EB0(&v23); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); v10 = sub_4D6100(a3); } LOBYTE(v35) = 2; nullsub_2(&v31); LOBYTE(v35) = 1; nullsub_2(&v32); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step : no mob", 0); v10 = sub_4D6100(a3); } LOBYTE(v35) = 0; nullsub_2(&v33); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step", v9 != 0); v10 = sub_4D6100(a3); } --dword_750CB8; v35 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineFindHandle::sa_Step"); return v10; } // 6AD44C: using guessed type int (__stdcall *off_6AD44C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F0590) -------------------------------------------------------- char __thiscall sub_4F0590(void *this, int a2, int a3, int a4) { int v4; // edi@1 v4 = (int)this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 5 && (*(_WORD *)(v4 + 4) == -1 || (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1800))(a3) == *(_WORD *)(v4 + 4)) ) sub_4EAE00(v4, a3); return 1; } //----- (004F05E0) -------------------------------------------------------- __int16 __thiscall sub_4F05E0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v10; // si@4 void *v11; // eax@5 void *v12; // eax@5 int v13; // ebx@5 int v14; // eax@6 void *v15; // eax@7 void *v16; // eax@9 void *v17; // eax@9 bool v18; // zf@10 __int16 v19; // ax@14 int v20; // eax@14 void *v21; // ecx@16 int v22; // eax@18 void *v23; // eax@18 __int16 v24; // ax@18 int v25; // edi@19 int v26; // ecx@21 int v28; // [sp-4h] [bp-260h]@2 int (__stdcall **v29)(int, int, int); // [sp+Ch] [bp-250h]@21 int v30; // [sp+24h] [bp-238h]@1 int (__stdcall **v31)(int, int, int); // [sp+28h] [bp-234h]@20 int (__stdcall **v32)(int, int, int); // [sp+2Ch] [bp-230h]@10 int v33; // [sp+40h] [bp-21Ch]@9 int v34; // [sp+44h] [bp-218h]@9 int v35; // [sp+48h] [bp-214h]@7 char v36; // [sp+4Ch] [bp-210h]@9 char v37; // [sp+14Ch] [bp-110h]@1 unsigned int v38; // [sp+24Ch] [bp-10h]@1 int v39; // [sp+258h] [bp-4h]@1 int v40; // [sp+25Ch] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v4 = (unsigned int)&v40 ^ __security_cookie; v5 = this; v30 = (int)"PineEventScriptNode::ShineAbstatSet::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineAbstatSet::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineAbstatSet::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v39 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineAbstatSet"); sub_4D5720(&v37); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v39) = 1; if ( v9(&v37, a3, v4) == 0 ) { v28 = 0; goto LABEL_3; } v11 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v11, (int)&v37); v12 = sub_5CF620(&v37); v13 = sub_639620(&byte_878354, (unsigned __int8 *)v12); if ( v13 == -1 ) goto LABEL_4; v14 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v37, a3); v28 = 0; if ( v14 != 0 ) { v35 = sub_4D5840(&v37, 0); v15 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v15, (int)&v37); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 14) + 8))(&v37, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step : no keep", 0); v10 = sub_4D6100(a3); goto LABEL_25; } v33 = sub_4D5840(&v37, 0); v16 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); v17 = sub_4D56C0(v16, (int)&v37); sub_4D56C0(v17, (int)&unk_1321B74C); v34 = sub_401310(&unk_877138, v13); sub_4D5720(&v36); LOBYTE(v39) = 2; sub_4D9320((int)((char *)v5 + 36), &v36, (void *)a3); sub_4D5730((unsigned int)&v36); if ( sub_4D58C0(&v36, (const char *)&unk_1321D008) ) { sub_4282B0((int)&v32, v13, v35, v34, v33); v18 = *((_DWORD *)v5 + 15) == 0; LOBYTE(v39) = 3; if ( v18 ) { sub_4E20B0(*(_DWORD *)(a3 + 65816), (int)&v32); v32 = &off_6A5508; v21 = &v32; } else { if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v5 + 15) + 8))(*((_DWORD *)v5 + 15), &v37, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineAbstatSet::sa_Step : no Player with handle", 0); LABEL_13: v10 = sub_4D6100(a3); LOBYTE(v39) = 2; v32 = &off_6A5508; sub_427EB0(&v32); LABEL_24: LOBYTE(v39) = 1; nullsub_2(&v36); goto LABEL_25; } v19 = sub_4D5840(&v37, 0); v20 = sub_54DE90(&unk_13253630, v19); if ( !v20 ) { sub_4D5840(&v37, 0); goto LABEL_13; } sub_549B60((void *)v20, (int)&v32, 0); v32 = &off_6A5508; v21 = &v32; } } else { v22 = sub_4D93E0((int)((char *)v5 + 36), (void *)a3); v23 = sub_5CF620((void *)v22); v24 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v23); if ( v24 == -1 ) { v25 = sub_4EB170(v5, (void *)a3); if ( !v25 ) { LABEL_23: v10 = sub_4D6100(a3); goto LABEL_24; } sub_4EADB0(&v31, -1, v13, v35, v34, v33); LOBYTE(v39) = 4; sub_4EAE00((int)&v31, v25); v31 = &off_6C7DB8; v21 = &v31; } else { sub_4EADB0(&v29, v24, v13, v35, v34, v33); v26 = *(_DWORD *)(a3 + 65816); LOBYTE(v39) = 5; sub_4E20B0(v26, (int)&v29); v29 = &off_6C7DB8; v21 = &v29; } } LOBYTE(v39) = 2; sub_427EB0(v21); goto LABEL_23; } LABEL_3: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step : no skip", v28); LABEL_4: v10 = sub_4D6100(a3); LABEL_25: LOBYTE(v39) = 0; nullsub_2(&v37); --dword_750CB8; v39 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineAbstatSet::sa_Step"); return v10; } // 6A5508: using guessed type int (__stdcall *off_6A5508)(int, int, int); // 6C7DB8: using guessed type int (__stdcall *off_6C7DB8)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F0A50) -------------------------------------------------------- __int16 __thiscall sub_4F0A50(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 void *v10; // eax@3 void *v11; // eax@3 void *v12; // eax@3 int v13; // eax@4 void *v14; // eax@4 signed int v15; // eax@4 int v16; // edi@6 int v17; // ecx@8 __int16 v18; // si@10 __int16 v20; // [sp+10h] [bp-130h]@4 int (__stdcall **v21)(int, int, int); // [sp+14h] [bp-12Ch]@7 __int16 v22; // [sp+18h] [bp-128h]@7 int v23; // [sp+1Ch] [bp-124h]@7 int v24; // [sp+20h] [bp-120h]@7 int v25; // [sp+24h] [bp-11Ch]@7 int v26; // [sp+28h] [bp-118h]@7 int v27; // [sp+2Ch] [bp-114h]@1 char v28; // [sp+30h] [bp-110h]@1 unsigned int v29; // [sp+130h] [bp-10h]@1 int v30; // [sp+13Ch] [bp-4h]@1 int v31; // [sp+140h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v4 = (unsigned int)&v31 ^ __security_cookie; v5 = this; v27 = a2; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineAbstatReset::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineAbstatReset::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, v27); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineAbstatReset"); sub_4D5720(&v28); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v30) = 1; if ( v9(&v28, a3, v4) != 0 ) { v10 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); v11 = sub_4D56C0(v10, (int)&v28); sub_4D56C0(v11, (int)&unk_1321B74C); v12 = sub_5CF620(&v28); v27 = sub_639620(&byte_878354, (unsigned __int8 *)v12); if ( v27 != -1 ) { v13 = sub_4D93E0((int)((char *)v5 + 36), (void *)a3); v14 = sub_5CF620((void *)v13); v15 = sub_639620(&unk_14D16018, (unsigned __int8 *)v14); v20 = v15; if ( v15 != -1 && (_WORD)v15 != -1 ) { sub_427BE0(&v21); v21 = &off_6C7DB8; v22 = v20; v23 = v27; v24 = 0; v25 = 0; v26 = 0; v17 = *(_DWORD *)(a3 + 65816); LOBYTE(v30) = 3; sub_4E20B0(v17, (int)&v21); v21 = &off_6C7DB8; } else { v16 = sub_4EB170(v5, (void *)a3); if ( !v16 ) goto LABEL_10; sub_427BE0(&v21); v21 = &off_6C7DB8; v22 = -1; v23 = v27; v24 = 0; v25 = 0; v26 = 0; LOBYTE(v30) = 2; sub_4EAE00((int)&v21, v16); v21 = &off_6C7DB8; } LOBYTE(v30) = 1; sub_427EB0(&v21); goto LABEL_10; } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step : no handle", 0); } LABEL_10: v18 = sub_4D6100(a3); LOBYTE(v30) = 0; nullsub_2(&v28); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineAbstatReset::sa_Step"); return v18; } // 6C7DB8: using guessed type int (__stdcall *off_6C7DB8)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F0CF0) -------------------------------------------------------- int __stdcall sub_4F0CF0(void *a1) { int (__thiscall *v1)(_DWORD); // eax@1 int v2; // eax@3 unsigned __int16 v3; // ax@3 void *v4; // edi@3 unsigned __int16 v5; // bx@3 unsigned __int16 v6; // ax@3 int v7; // edx@3 int v8; // ST04_4@5 int v9; // eax@5 int v11; // [sp-4h] [bp-30h]@2 char v12; // [sp+10h] [bp-1Ch]@5 int v13; // [sp+1Ch] [bp-10h]@1 int v14; // [sp+28h] [bp-4h]@1 v13 = (int)"AxialListMobSuicide::alms_SelfKill"; sub_4675D0((int)&unk_D020420, (int)"AxialListMobSuicide::alms_SelfKill"); dword_7508B8[dword_750CB8] = (int)"AxialListMobSuicide::alms_SelfKill"; dword_750AB8[dword_750CB8++] = -1; v1 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 40); v14 = 0; if ( (unsigned __int8)v1(a1) == 1 ) { v14 = -1; v11 = (int)"AxialListMobSuicide::alms_SelfKill"; } else { v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1256))(a1); (*(void (__thiscall **)(void *, void *, int, signed int, signed int))(*(_DWORD *)a1 + 1468))(a1, a1, v2, 1000, 1); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 1256))(a1); v4 = off_849C18; *(_WORD *)off_849C18 = 9276; *((_WORD *)v4 + 1) = *((_WORD *)a1 + 2); v5 = v3; *((_DWORD *)v4 + 1) = 0; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2024))(a1); v7 = *((_DWORD *)v4 + 1); *((_WORD *)v4 + 5) = 792; *((_WORD *)v4 + 6) = v6; *((_WORD *)v4 + 4) = v5; *((_BYTE *)v4 + 14) = 0; sub_549760((int)"alms_SelfKill", v6, v5, v7); if ( !*((_DWORD *)v4 + 1) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)a1 + 2260))(a1, 4); sub_4287B0(&v12, &off_849C18, 15); v8 = *(_DWORD *)((char *)a1 + 102); LOBYTE(v14) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00(a1, v9, v8, 0, 0, (int)&v12, 1, 65535); LOBYTE(v14) = 0; sub_428A70(&v12); v14 = -1; v11 = (int)"AxialListMobSuicide::alms_SelfKill"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004F0E80) -------------------------------------------------------- char __thiscall sub_4F0E80(void *this, int a2, void *a3, int a4) { void *v4; // edi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListMobSuicide::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListMobSuicide::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1232))(a3) == 5 && (*((_WORD *)v4 + 2) == -1 || (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1800))(a3) == *((_WORD *)v4 + 2)) ) sub_4F0CF0(a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMobSuicide::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004F0F50) -------------------------------------------------------- __int16 __thiscall sub_4F0F50(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int v10; // eax@1 void *v11; // ecx@2 int v12; // eax@5 __int16 v13; // si@5 void *v14; // eax@6 signed int v15; // eax@6 int v16; // esi@8 int v17; // eax@8 int (__stdcall **v18)(int, int, int); // edi@10 void *v19; // ecx@10 int v20; // esi@13 __int16 v21; // si@17 int (__stdcall **v23)(int, int, int); // [sp+10h] [bp-318h]@2 __int16 v24; // [sp+14h] [bp-314h]@2 char v25; // [sp+18h] [bp-310h]@1 char v26; // [sp+118h] [bp-210h]@5 char v27; // [sp+218h] [bp-110h]@1 unsigned int v28; // [sp+318h] [bp-10h]@1 int v29; // [sp+324h] [bp-4h]@1 int v30; // [sp+328h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineSuicide::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineSuicide::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineSuicide"); sub_4D5720(&v27); LOBYTE(v29) = 1; sub_4D9320((int)((char *)v4 + 36), &v27, (void *)a3); v8 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); v9 = sub_4D56C0(v8, (int)&v27); sub_4D56C0(v9, (int)&unk_1321B74C); memcpy(&v25, &v27, 0x100u); LOBYTE(v29) = 2; v10 = sub_4D5730((unsigned int)&v25); if ( !sub_4D58C0((const char *)v10, (const char *)&off_6C6768) ) { v12 = sub_4D5840(&v27, 0); v13 = v12; sub_4D57D0(&v26, v12); LOBYTE(v29) = 4; if ( (unsigned __int16)sub_4D5910(&v26, &v27) ) { v14 = sub_5CF620(&v27); v15 = sub_639620(&unk_14D16018, (unsigned __int8 *)v14); if ( v15 == -1 ) LOWORD(v15) = -1; v16 = (unsigned __int16)v15; v17 = (int)sub_5CF620(&v27); if ( v16 == 65535 ) sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineSuicide::sa_Step : Invalid mob id", v17); sub_427BE0(&v23); v18 = &off_6A23AC; v23 = &off_6A23AC; v24 = v16; v19 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v29) = 5; if ( v19 ) sub_549B60(v19, (int)&v23, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); } else { v20 = sub_54DE90(&unk_13253630, v13); if ( !v20 ) { LABEL_16: LOBYTE(v29) = 2; nullsub_2(&v26); goto LABEL_17; } sub_427BE0(&v23); v18 = &off_6A23AC; v23 = &off_6A23AC; v24 = -1; LOBYTE(v29) = 6; sub_4F0CF0((void *)v20); } LOBYTE(v29) = 4; v23 = v18; sub_427EB0(&v23); goto LABEL_16; } sub_427BE0(&v23); v23 = &off_6A23AC; v24 = -1; v11 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v29) = 3; if ( v11 ) { sub_549B60(v11, (int)&v23, 0); LOBYTE(v29) = 2; v23 = &off_6A23AC; sub_427EB0(&v23); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v29) = 2; v23 = &off_6A23AC; sub_427EB0(&v23); } LABEL_17: v21 = sub_4D6100(a3); LOBYTE(v29) = 1; nullsub_2(&v25); LOBYTE(v29) = 0; nullsub_2(&v27); --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineSuicide::sa_Step"); return v21; } // 6A23AC: using guessed type int (__stdcall *off_6A23AC)(int, int, int); // 6C6768: using guessed type void *off_6C6768; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F12C0) -------------------------------------------------------- __int16 __thiscall sub_4F12C0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // edi@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 int v11; // ebx@7 void *v12; // eax@7 void *v13; // eax@7 void *v14; // eax@7 int v16; // [sp+14h] [bp-114h]@5 char v17; // [sp+18h] [bp-110h]@3 unsigned int v18; // [sp+118h] [bp-10h]@1 int v19; // [sp+124h] [bp-4h]@1 int v20; // [sp+128h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineAct::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineAct::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineRun"); v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { sub_4D5720(&v17); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v19) = 1; if ( v10(&v17, a3) != 0 ) { v16 = sub_4D5840(&v17, 0); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v17, a3) != 0 ) { v11 = sub_4D5840(&v17, 0); v12 = sub_4D56C0(&dword_1321B748, v16); v13 = sub_4D56C0(v12, (int)"/"); v14 = sub_4D56C0(v13, v11); sub_4D56C0(v14, (int)&unk_1321B74C); (*(void (__thiscall **)(int, int, int, signed int))(*(_DWORD *)v8 + 2220))(v8, v16, v11, 2); *(_DWORD *)(a3 + 65836) = v8; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRun::sa_Step : no locy", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRun::sa_Step : no locx", 0); } v9 = sub_4D6100(a3); LOBYTE(v19) = 0; nullsub_2(&v17); } else { v9 = sub_4D6100(a3); } --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineAct::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F14C0) -------------------------------------------------------- __int16 __thiscall sub_4F14C0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // edi@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 int v11; // ebx@7 void *v12; // eax@7 void *v13; // eax@7 void *v14; // eax@7 int v16; // [sp+14h] [bp-114h]@5 char v17; // [sp+18h] [bp-110h]@3 unsigned int v18; // [sp+118h] [bp-10h]@1 int v19; // [sp+124h] [bp-4h]@1 int v20; // [sp+128h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWalk::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWalk::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineWalk"); v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { sub_4D5720(&v17); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v19) = 1; if ( v10(&v17, a3) != 0 ) { v16 = sub_4D5840(&v17, 0); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v17, a3) != 0 ) { v11 = sub_4D5840(&v17, 0); v12 = sub_4D56C0(&dword_1321B748, v16); v13 = sub_4D56C0(v12, (int)"/"); v14 = sub_4D56C0(v13, v11); sub_4D56C0(v14, (int)&unk_1321B74C); (*(void (__thiscall **)(int, int, int, signed int))(*(_DWORD *)v8 + 2220))(v8, v16, v11, 1); *(_DWORD *)(a3 + 65836) = v8; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRun::sa_Step : no locy", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRun::sa_Step : no locx", 0); } v9 = sub_4D6100(a3); LOBYTE(v19) = 0; nullsub_2(&v17); } else { v9 = sub_4D6100(a3); } --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWalk::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F16C0) -------------------------------------------------------- __int16 __thiscall sub_4F16C0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // ebx@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 int v10; // eax@1 __int16 v11; // si@2 int v12; // eax@3 int v13; // ecx@3 int v14; // eax@3 int v15; // eax@4 int v16; // ebx@4 int (__thiscall *v17)(_DWORD, _DWORD, _DWORD); // edx@4 int v18; // eax@4 int v19; // eax@5 char v20; // bl@5 int v21; // ST14_4@5 void *v22; // eax@5 void *v23; // eax@5 void *v24; // eax@5 void *v25; // eax@5 void *v26; // eax@5 void *v27; // eax@5 char v28; // cl@5 char v29; // dl@5 int v30; // ecx@5 int v32; // [sp-4h] [bp-13Ch]@1 char v33; // [sp+10h] [bp-128h]@5 int v34; // [sp+1Ch] [bp-11Ch]@1 int v35; // [sp+20h] [bp-118h]@3 int v36; // [sp+24h] [bp-114h]@4 char v37; // [sp+28h] [bp-110h]@1 unsigned int v38; // [sp+128h] [bp-10h]@1 int v39; // [sp+134h] [bp-4h]@1 int v40; // [sp+138h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v4 = (unsigned int)&v40 ^ __security_cookie; v5 = this; v34 = (int)"PineEventScriptNode::ShineMapLight::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapLight::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMapLight::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v39 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineMapLight"); sub_4D5720(&v37); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v39) = 1; v10 = v9(&v37, a3, v4); v32 = 0; if ( v10 == 0 || (v12 = sub_4D5840(&v37, 0), v13 = *((_DWORD *)v5 + 13), v35 = v12, v14 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v13 + 8))(&v37, a3), v32 = 0, v14 == 0) || (v15 = sub_4D5840(&v37, 0), v16 = *((_DWORD *)v5 + 14), v17 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v16 + 8), v36 = v15, v18 = v17(v16, &v37, a3), v32 = 0, v18 == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMapLight::sa_Step : no argument", v32); v11 = sub_4D6100(a3); } else { v19 = sub_4D5840(&v37, 0); v20 = v19; v21 = v19; v22 = sub_4D56C0(&dword_1321B748, (int)"/"); v23 = sub_4D56C0(v22, v35); v24 = sub_4D56C0(v23, (int)"/"); v25 = sub_4D56C0(v24, v36); v26 = sub_4D56C0(v25, (int)"/"); sub_4D56C0(v26, v21); v27 = off_849C18; v28 = v35; *(_WORD *)off_849C18 = 27658; v29 = v36; *((_BYTE *)v27 + 2) = v28; *((_BYTE *)v27 + 4) = v29; *((_BYTE *)v27 + 3) = v20; sub_4287B0(&v33, &off_849C18, 5); v30 = *(_DWORD *)(a3 + 65816); LOBYTE(v39) = 2; sub_4E20B0(v30, (int)&v33); v11 = sub_4D6100(a3); LOBYTE(v39) = 1; sub_428A70(&v33); } LOBYTE(v39) = 0; nullsub_2(&v37); --dword_750CB8; v39 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapLight::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F1920) -------------------------------------------------------- __int16 __thiscall sub_4F1920(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 int v10; // eax@1 __int16 v11; // si@2 int v12; // ebx@3 int v13; // eax@3 int v14; // eax@4 __int16 v15; // di@4 int v16; // ST10_4@4 void *v17; // eax@4 void *v18; // eax@4 void *v19; // eax@4 void *v20; // eax@4 void *v21; // ecx@4 int v23; // [sp-4h] [bp-134h]@1 char v24; // [sp+10h] [bp-120h]@4 char v25; // [sp+20h] [bp-110h]@1 unsigned int v26; // [sp+120h] [bp-10h]@1 int v27; // [sp+12Ch] [bp-4h]@1 int v28; // [sp+130h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v4 = (unsigned int)&v28 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapFog::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMapFog::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineMapFog"); sub_4D5720(&v25); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v27) = 1; v10 = v9(&v25, a3, v4); v23 = 0; if ( v10 == 0 || (v12 = sub_4D5840(&v25, 0), v13 = (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v5 + 13) + 8))(*((_DWORD *)v5 + 13), &v25, a3), v23 = 0, v13 == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMapFog::sa_Step : no argument", v23); v11 = sub_4D6100(a3); } else { v14 = sub_4D5840(&v25, 0); v15 = v14; v16 = v14; v17 = sub_4D56C0(&dword_1321B748, (int)"/"); v18 = sub_4D56C0(v17, v12); v19 = sub_4D56C0(v18, (int)"/"); sub_4D56C0(v19, v16); v20 = off_849C18; *(_WORD *)off_849C18 = 27662; *((_BYTE *)v20 + 2) = v12; *(_WORD *)((char *)v20 + 3) = v15; sub_4287B0(&v24, &off_849C18, 5); v21 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v27) = 2; if ( v21 ) sub_549B60(v21, (int)&v24, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); v11 = sub_4D6100(a3); LOBYTE(v27) = 1; sub_428A70(&v24); } LOBYTE(v27) = 0; nullsub_2(&v25); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapFog::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F1B40) -------------------------------------------------------- __int16 __thiscall sub_4F1B40(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 __int16 v8; // si@2 int (__stdcall *v9)(_DWORD, _DWORD); // edx@3 __int16 v10; // ax@5 void *v11; // eax@8 void *v12; // eax@8 void *v13; // eax@9 int v14; // eax@9 int (__stdcall *v15)(_DWORD, _DWORD); // edx@9 void *v16; // eax@10 void *v17; // eax@10 int v18; // edi@10 int v19; // eax@12 int v20; // ecx@13 int v21; // ST10_4@13 int v22; // ST08_4@13 char *v23; // eax@13 int v24; // eax@13 int v25; // ST18_4@13 int v26; // edi@13 void *v27; // eax@13 int v29; // [sp+10h] [bp-150h]@1 int v30; // [sp+14h] [bp-14Ch]@10 int v31; // [sp+18h] [bp-148h]@10 int v32; // [sp+1Ch] [bp-144h]@9 int v33; // [sp+20h] [bp-140h]@1 char v34; // [sp+24h] [bp-13Ch]@8 char v35; // [sp+44h] [bp-11Ch]@3 char v36[4]; // [sp+144h] [bp-1Ch]@13 int v37; // [sp+148h] [bp-18h]@13 int v38; // [sp+14Ch] [bp-14h]@13 unsigned int v39; // [sp+150h] [bp-10h]@1 int v40; // [sp+15Ch] [bp-4h]@1 int v41; // [sp+160h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v4 = this; v33 = a2; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineEffectObject::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineEffectObject::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v40 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, v33); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineEffectObject"); v29 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v29 != 0 ) { sub_4D5720(&v35); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v40) = 1; if ( v9(&v35, a3) != 0 ) { v10 = sub_4D5840(&v35, 0); v33 = sub_54DE90(&unk_13253630, v10); if ( v33 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v35, a3) == 0 || (v11 = sub_4D56C0(&dword_1321B748, (int)"/"), sub_4D56C0(v11, (int)&v35), v12 = sub_5CF620(&v35), sub_418A80(&v34, (const char *)v12), (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 14) + 8))(&v35, a3) == 0) || (v13 = sub_4D56C0(&dword_1321B748, (int)"/"), sub_4D56C0(v13, (int)&v35), v14 = sub_4D5840(&v35, 0), v15 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 15) + 8), v32 = v14, v15(&v35, a3) == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectObject::sa_Step : no effect", 0); } else { v16 = sub_4D56C0(&dword_1321B748, (int)"/"); v17 = sub_4D56C0(v16, (int)&v35); sub_4D56C0(v17, (int)&unk_1321B74C); v30 = sub_4D5840(&v35, 0); v18 = sub_54DF90(&unk_13253630, (int)&v31, 9); if ( v18 != 0 ) { v19 = v33; if ( *(_DWORD *)(v33 + 122) ) { v20 = *(_DWORD *)(a3 + 65816); v38 = 0; v37 = 0; *(_DWORD *)v36 = 0; v33 = *(_DWORD *)v18; v21 = v32; v22 = v19; v23 = sub_4E2490(v20, v36); v24 = (*(int (__thiscall **)(int, int, char *, int, char *, int, int, _DWORD))(v33 + 1764))( v18, v31, v23, v22, &v34, v21, v30, 0); v25 = (unsigned __int16)v31; v26 = v24; v27 = sub_4D5720((void *)v29); sub_4D67A0(v27, v25); if ( v26 ) sub_555DF0(&unk_13253630, v31, 0, 31); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectObject::sa_Step : Too many Effect", 0); } } } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectObject::sa_Step : no Object", 0); } v8 = sub_4D6100(a3); LOBYTE(v40) = 0; nullsub_2(&v35); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectObject::sa_Step", 0); v8 = sub_4D6100(a3); } --dword_750CB8; v40 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineEffectObject::sa_Step"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F1EB0) -------------------------------------------------------- __int16 __thiscall sub_4F1EB0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 __int16 v8; // si@2 int (__stdcall *v9)(_DWORD, _DWORD); // edx@3 void *v10; // eax@5 void *v11; // eax@5 void *v12; // eax@7 void *v13; // eax@8 void *v14; // eax@9 void *v15; // eax@10 void *v16; // eax@11 void *v17; // eax@11 int v18; // edi@11 int v19; // ecx@13 char *v20; // eax@13 int v21; // eax@13 int v22; // ST20_4@13 int v23; // edi@13 void *v24; // eax@13 int v26; // [sp+10h] [bp-15Ch]@9 int v27; // [sp+14h] [bp-158h]@10 int v28; // [sp+18h] [bp-154h]@1 int v29; // [sp+1Ch] [bp-150h]@8 int v30; // [sp+20h] [bp-14Ch]@7 int v31; // [sp+24h] [bp-148h]@11 int v32; // [sp+28h] [bp-144h]@11 int v33; // [sp+2Ch] [bp-140h]@13 char v34; // [sp+30h] [bp-13Ch]@3 char v35[4]; // [sp+130h] [bp-3Ch]@5 int v36; // [sp+134h] [bp-38h]@5 int v37; // [sp+138h] [bp-34h]@5 int v38; // [sp+13Ch] [bp-30h]@5 int v39; // [sp+140h] [bp-2Ch]@5 int v40; // [sp+144h] [bp-28h]@5 int v41; // [sp+148h] [bp-24h]@5 int v42; // [sp+14Ch] [bp-20h]@5 char v43[4]; // [sp+150h] [bp-1Ch]@13 int v44; // [sp+154h] [bp-18h]@13 int v45; // [sp+158h] [bp-14h]@13 unsigned int v46; // [sp+15Ch] [bp-10h]@1 int v47; // [sp+168h] [bp-4h]@1 int v48; // [sp+16Ch] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineEffectLocate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineEffectLocate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v47 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineEffectLocate"); v28 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v28 != 0 ) { sub_4D5720(&v34); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v47) = 1; if ( v9(&v34, a3) != 0 ) { v10 = sub_4D56C0(&dword_1321B748, (int)"/"); sub_4D56C0(v10, (int)&v34); v11 = sub_5CF620(&v34); v42 = 0; v41 = 0; v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; *(_DWORD *)v35 = 0; strncpy(v35, (const char *)v11, 0x20u); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v34, a3) == 0 || (v12 = sub_4D56C0(&dword_1321B748, (int)"/"), sub_4D56C0(v12, (int)&v34), v30 = sub_4D5840(&v34, 0), (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 14) + 8))(&v34, a3) == 0) || (v13 = sub_4D56C0(&dword_1321B748, (int)"/"), sub_4D56C0(v13, (int)&v34), v29 = sub_4D5840(&v34, 0), (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 15) + 8))(&v34, a3) == 0) || (v14 = sub_4D56C0(&dword_1321B748, (int)"/"), sub_4D56C0(v14, (int)&v34), v26 = sub_4D5840(&v34, 0), (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 16) + 8))(&v34, a3) == 0) || (v15 = sub_4D56C0(&dword_1321B748, (int)"/"), sub_4D56C0(v15, (int)&v34), v27 = sub_4D5840(&v34, 0), (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 17) + 8))(&v34, a3) == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectObject::sa_Step : no Coord", 0); } else { v16 = sub_4D56C0(&dword_1321B748, (int)"/"); v17 = sub_4D56C0(v16, (int)&v34); sub_4D56C0(v17, (int)&unk_1321B74C); v31 = sub_4D5840(&v34, 0); v18 = sub_54DF90(&unk_13253630, (int)&v32, 9); if ( v18 != 0 ) { v19 = *(_DWORD *)(a3 + 65816); v45 = 0; v44 = 0; *(_DWORD *)v43 = 0; v33 = *(_DWORD *)v18; v20 = sub_4E2490(v19, v43); v21 = (*(int (__thiscall **)(int, int, char *, int, int, int, char *, int, int, _DWORD))(v33 + 1768))( v18, v32, v20, v30, v29, v26, v35, v27, v31, 0); v22 = (unsigned __int16)v32; v23 = v21; v24 = sub_4D5720((void *)v28); sub_4D67A0(v24, v22); if ( v23 ) sub_555DF0(&unk_13253630, v32, 0, 32); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectLocate::sa_Step : Too many Effect", 0); } } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectObject::sa_Step : no effect", 0); } v8 = sub_4D6100(a3); LOBYTE(v47) = 0; nullsub_2(&v34); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEffectLocate::sa_Step", 0); v8 = sub_4D6100(a3); } --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineEffectLocate::sa_Step"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F22E0) -------------------------------------------------------- __int16 __thiscall sub_4F22E0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // ebx@1 int (__stdcall *v10)(_DWORD, _DWORD); // edx@2 __int16 v11; // si@3 __int16 v12; // ax@4 int v13; // eax@7 int v15; // [sp+14h] [bp-114h]@4 char v16; // [sp+18h] [bp-110h]@2 unsigned int v17; // [sp+118h] [bp-10h]@1 int v18; // [sp+124h] [bp-4h]@1 int v19; // [sp+128h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineAggro::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineAggro::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineAggro"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4EB170(v4, (void *)a3); if ( !v9 ) goto LABEL_9; sub_4D5720(&v16); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; if ( v10(&v16, a3) != 0 ) { v12 = sub_4D5840(&v16, 0); v15 = sub_54DE90(&unk_13253630, v12); if ( v15 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v16, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineAggro::sa_Step : no aggro", 0); v11 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); goto LABEL_10; } v13 = sub_4D5840(&v16, 0); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 1792))(v9, v15, v13); } LOBYTE(v18) = 0; nullsub_2(&v16); LABEL_9: v11 = sub_4D6100(a3); goto LABEL_10; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineAggro::sa_Step : no Player", 0); v11 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); LABEL_10: --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineAggro::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F24E0) -------------------------------------------------------- __int16 __thiscall sub_4F24E0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // ebx@1 int (__stdcall *v10)(_DWORD, _DWORD); // edx@2 int v11; // eax@3 __int16 v12; // ax@5 __int16 v13; // si@5 char v15; // [sp+10h] [bp-110h]@2 unsigned int v16; // [sp+110h] [bp-10h]@1 int v17; // [sp+11Ch] [bp-4h]@1 int v18; // [sp+120h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobDetectRange::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMobDetectRange::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineMobDetectRange"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4EB170(v4, (void *)a3); if ( v9 ) { sub_4D5720(&v15); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v17) = 1; if ( v10(&v15, a3) ) { v11 = sub_4D5840(&v15, 0); (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 2236))(v9, v11); } LOBYTE(v17) = 0; nullsub_2(&v15); } v12 = sub_4D6100(a3); --dword_750CB8; v13 = v12; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobDetectRange::sa_Step"); return v13; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F2640) -------------------------------------------------------- __int16 __thiscall sub_4F2640(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // esi@1 int (__stdcall *v10)(_DWORD, _DWORD); // edx@2 int v11; // ST28_4@3 int v12; // ST04_4@3 int v13; // eax@3 int v14; // ST24_4@3 void *v15; // eax@3 void *v16; // eax@3 __int16 v17; // ax@5 __int16 v18; // si@5 char v20; // [sp+10h] [bp-110h]@2 unsigned int v21; // [sp+110h] [bp-10h]@1 int v22; // [sp+11Ch] [bp-4h]@1 int v23; // [sp+120h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineHeal::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineHeal::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineHeal"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4EB170(v4, (void *)a3); if ( v9 ) { sub_4D5720(&v20); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v22) = 1; if ( v10(&v20, a3) ) { v11 = sub_4D5840(&v20, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 1252))(v9); v12 = *(_DWORD *)(v9 + 102); v13 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v9, v13, v12, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); v14 = (*(int (__thiscall **)(int, _UNKNOWN *))(*(_DWORD *)v9 + 1256))(v9, &unk_1321B74C); v15 = sub_4D56C0(&dword_1321B748, (int)" HP "); v16 = sub_4D56C0(v15, v14); sub_4D56C0(v16, v11); } LOBYTE(v22) = 0; nullsub_2(&v20); } v17 = sub_4D6100(a3); --dword_750CB8; v18 = v17; v22 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineHeal::sa_Step"); return v18; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F2810) -------------------------------------------------------- __int16 __thiscall sub_4F2810(void *this, int a2, int a3, int a4) { void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // esi@1 int (__stdcall *v9)(_DWORD, _DWORD); // eax@2 void *v10; // eax@3 __int16 v11; // dx@3 void *v12; // eax@3 int v13; // ecx@3 char *v14; // ST10_4@3 int v15; // ST04_4@3 int v16; // eax@3 __int16 v17; // ax@5 __int16 v18; // si@5 char v20; // [sp+Ch] [bp-124h]@3 int v21; // [sp+18h] [bp-118h]@1 void *v22; // [sp+1Ch] [bp-114h]@1 char v23; // [sp+20h] [bp-110h]@2 unsigned int v24; // [sp+120h] [bp-10h]@1 int v25; // [sp+12Ch] [bp-4h]@1 int v26; // [sp+130h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v22 = this; v21 = (int)"PineEventScriptNode::ShineAnimate::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineAnimate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineAnimate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; v4 = sub_4D56C0(&dword_1321B748, (int)"["); v5 = sub_4D56C0(v4, a2); v6 = sub_4D56C0(v5, (int)"]"); v7 = sub_4D56C0(v6, (int)"ShineAnimate"); sub_4D56C0(v7, (int)&unk_1321B74C); v8 = sub_4EB170(v22, (void *)a3); if ( v8 ) { sub_4D5720(&v23); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v22 + 12) + 8); LOBYTE(v25) = 1; if ( v9(&v23, a3) ) { v10 = off_849C18; *(_WORD *)off_849C18 = 27661; v11 = *(_WORD *)(v8 + 4); v22 = v10; *((_WORD *)v10 + 1) = v11; v12 = sub_5CF620(&v23); v13 = (int)((char *)v22 + 4); v14 = (char *)v22 + 4; *((_DWORD *)v22 + 8) = 0; *(_DWORD *)(v13 + 24) = 0; *(_DWORD *)(v13 + 20) = 0; *(_DWORD *)(v13 + 16) = 0; *(_DWORD *)(v13 + 12) = 0; *(_DWORD *)(v13 + 8) = 0; *(_DWORD *)(v13 + 4) = 0; *(_DWORD *)v13 = 0; strncpy(v14, (const char *)v12, 0x20u); sub_4287B0(&v20, &off_849C18, 36); v15 = *(_DWORD *)(v8 + 102); LOBYTE(v25) = 2; v16 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v8, v16, v15, 0, 0, (int)&v20, 0, 65535); LOBYTE(v25) = 1; sub_428A70(&v20); } LOBYTE(v25) = 0; nullsub_2(&v23); } v17 = sub_4D6100(a3); --dword_750CB8; v18 = v17; v25 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineAnimate::sa_Step"); return v18; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F2A00) -------------------------------------------------------- __int16 __thiscall sub_4F2A00(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // ebx@1 int (__stdcall *v10)(_DWORD, _DWORD); // edx@2 int v11; // eax@3 __int16 v12; // ax@5 __int16 v13; // si@5 char v15; // [sp+10h] [bp-110h]@2 unsigned int v16; // [sp+110h] [bp-10h]@1 int v17; // [sp+11Ch] [bp-4h]@1 int v18; // [sp+120h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineDuplicate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineDuplicate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineDuplicate"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4EB170(v4, (void *)a3); if ( v9 ) { sub_4D5720(&v15); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v17) = 1; if ( v10(&v15, a3) ) { v11 = sub_4D5840(&v15, 0); (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 2240))(v9, v11); } LOBYTE(v17) = 0; nullsub_2(&v15); } v12 = sub_4D6100(a3); --dword_750CB8; v13 = v12; v17 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDuplicate::sa_Step"); return v13; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F2B60) -------------------------------------------------------- signed __int16 __thiscall sub_4F2B60(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@2 void *v6; // eax@2 void *v7; // eax@2 void *v8; // eax@2 int v9; // eax@3 signed __int16 v10; // si@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitIdle::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWaitIdle::sa_Step"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_DWORD *)a4 ) { v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineWaitIdle"); sub_4D56C0(v8, (int)&unk_1321B74C); ++*(_DWORD *)a4; } v9 = sub_4EB170(v4, (void *)a3); if ( v9 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2244))(v9) ) v10 = 1; else v10 = sub_4D6100(a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWaitIdle::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004F2C70) -------------------------------------------------------- __int16 __stdcall sub_4F2C70(int a1, int a2, int a3) { void *v3; // eax@1 void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 __int16 v7; // ax@1 __int16 v8; // si@1 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineDeathCountClear::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineDeathCountClear::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_4D56C0(&dword_1321B748, (int)"["); v4 = sub_4D56C0(v3, a1); v5 = sub_4D56C0(v4, (int)"]"); v6 = sub_4D56C0(v5, (int)"ShineDeathCountClear"); sub_4D56C0(v6, (int)&unk_1321B74C); sub_4AFFB0((void *)(*(_DWORD *)(*(_DWORD *)(a2 + 65816) + 77288) + 72)); v7 = sub_4D6100(a2); --dword_750CB8; v8 = v7; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDeathCountClear::sa_Step"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004F2D70) -------------------------------------------------------- __int16 __thiscall sub_4F2D70(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // edi@1 __int16 v10; // si@2 int (__stdcall *v11)(_DWORD, _DWORD); // edx@3 void *v12; // eax@5 signed int v13; // eax@5 void *v14; // eax@11 int v15; // ebx@11 void *v16; // eax@11 signed int v18; // [sp+14h] [bp-114h]@6 char v19; // [sp+18h] [bp-110h]@3 unsigned int v20; // [sp+118h] [bp-10h]@1 int v21; // [sp+124h] [bp-4h]@1 int v22; // [sp+128h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemAttrSet::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineItemAttrSet::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineItemAttrSet"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4EB170(v4, (void *)a3); if ( v9 ) { sub_4D5720(&v19); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v21) = 1; if ( v11(&v19, a3) != 0 ) { sub_4D56C0(&dword_1321B748, (int)&v19); v12 = sub_5CF620(&v19); v13 = sub_639620(&unk_14D20898, (unsigned __int8 *)v12); if ( v13 == -1 ) v18 = 65535; else v18 = (unsigned __int16)v13; if ( (_WORD)v18 == -1 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemAttrSet::sa_Step : Item Invalid", 0); goto LABEL_12; } if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v19, a3) != 0 ) { v14 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v14, (int)&v19); v15 = *(_DWORD *)v9; v16 = sub_5CF620(&v19); (*(void (__thiscall **)(int, signed int, void *))(v15 + 2224))(v9, v18, v16); goto LABEL_12; } } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemAttrSet::sa_Step : no Item", 0); LABEL_12: v10 = sub_4D6100(a3); LOBYTE(v21) = 0; nullsub_2(&v19); goto LABEL_13; } v10 = sub_4D6100(a3); LABEL_13: --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemAttrSet::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F2FA0) -------------------------------------------------------- __int16 __thiscall sub_4F2FA0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // esi@5 int v9; // eax@13 __int16 v10; // si@14 int (__stdcall *v11)(_DWORD, _DWORD); // edx@15 int v12; // ebx@17 void *v13; // eax@17 void *v14; // eax@17 void *v15; // eax@17 void *v16; // eax@18 __time32_t v17; // eax@20 int v19; // [sp-Ch] [bp-230h]@16 int v20; // [sp-8h] [bp-22Ch]@16 char v21; // [sp+14h] [bp-210h]@15 char v22; // [sp+114h] [bp-110h]@3 unsigned int v23; // [sp+214h] [bp-10h]@1 int v24; // [sp+220h] [bp-4h]@1 int v25; // [sp+224h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineScinarioCode::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineScinarioCode::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineScinarioCode"); if ( byte_7493ED ) { if ( byte_1321F114 ) { sprintf(&v22, "%.255s", "ShineScinarioCode "); sub_418E40((__time32_t)byte_1321EE90); if ( dword_1321EF90 ) fputs(&v22, dword_1321EF90); } } v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { sub_4D5720(&v21); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v24) = 1; if ( v11(&v21, a3) != 0 ) { v12 = sub_4D5840(&v21, 0); v13 = sub_4D56C0(&dword_1321B748, (int)"["); v14 = sub_4D56C0(v13, v12); v15 = sub_4D56C0(v14, (int)"]"); sub_4D56C0(v15, (int)&unk_1321B74C); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2056))(v8) ) { v16 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2056))(v8); sub_5BB110(v16, v12); v20 = (int)&unk_13359E04; v19 = (int)"Suc"; } else { v20 = (int)&unk_13359E04; v19 = (int)"Fail 2"; } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineScinarioCode::sa_Step : no code", 0); v20 = (int)&unk_13359E04; v19 = (int)"Fail 1"; } v17 = sub_418EA0((__time32_t)byte_1321EE90, v19); sub_418F20(v17, v20); v10 = sub_4D6100(a3); LOBYTE(v24) = 0; nullsub_2(&v21); } else { if ( byte_7493ED ) { if ( byte_1321F114 ) { sprintf(&v22, "%.255s", "Fail 0"); sub_418E40((__time32_t)byte_1321EE90); if ( dword_1321EF90 ) fputs(&v22, dword_1321EF90); } if ( byte_7493ED && byte_1321F114 && dword_1321EF90 ) { v9 = sub_418E40((__time32_t)byte_1321EE90); sub_654AB0(10, (FILE *)v9); fflush(dword_1321EF90); fclose(dword_1321EF90); dword_1321EF90 = 0; } } v10 = sub_4D6100(a3); } --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineScinarioCode::sa_Step"); return v10; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; // 1321F114: using guessed type char byte_1321F114; //----- (004F3280) -------------------------------------------------------- __int16 __thiscall sub_4F3280(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int v10; // eax@1 int v11; // eax@2 int v12; // eax@4 void *v13; // ecx@7 int v14; // eax@14 int v15; // ebx@15 int v16; // edi@18 void *v17; // eax@18 int v18; // ecx@18 int v19; // eax@22 void *v20; // ecx@22 int v21; // ecx@22 int v22; // eax@23 __int16 v23; // si@24 int v25; // [sp-8h] [bp-144h]@14 char v26; // [sp+10h] [bp-12Ch]@22 char v27; // [sp+1Ch] [bp-120h]@7 char v28; // [sp+2Ch] [bp-110h]@1 unsigned int v29; // [sp+12Ch] [bp-10h]@1 int v30; // [sp+138h] [bp-4h]@1 int v31; // [sp+13Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineBattleStart::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineBattleStart::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineBattleStart"); sub_4D56C0(v8, (int)&unk_1321B74C); sub_4D5720(&v28); LOBYTE(v30) = 1; v9 = sub_4D9320((int)((char *)v4 + 36), &v28, (void *)a3); v10 = sub_4D5730((unsigned int)v9); if ( sub_4D58C0((const char *)v10, (const char *)&unk_1321D408) ) { v11 = *(_DWORD *)(*(_DWORD *)(a3 + 65816) + 77292); if ( v11 ) { v12 = *(_DWORD *)(v11 + 122); if ( v12 ) *(_BYTE *)(v12 + 84) = 1; else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_MapPKFlag Map", 0); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_MapPKFlag CenterFlag", 0); } sub_428000((int)&v27, 6, 18); v13 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v30) = 2; if ( v13 ) { sub_549B60(v13, (int)&v27, 0); LOBYTE(v30) = 1; sub_427EB0(&v27); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v30) = 1; sub_427EB0(&v27); } } else { if ( sub_4D58C0(&v28, (const char *)&unk_1321F520) ) { if ( *((_DWORD *)v4 + 12) && *((_DWORD *)v4 + 13) ) { v14 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 12) + 8))(&v28, a3); v25 = 0; if ( v14 != 0 ) { v15 = sub_4D5840(&v28, 0); if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v4 + 13) + 8))(*((_DWORD *)v4 + 13), &v28, a3) != 0 ) { v16 = sub_4D5840(&v28, 0); sub_4EB140(*(_DWORD *)(a3 + 65816), v15, v16); v17 = off_849C18; *(_WORD *)off_849C18 = 29827; *(_DWORD *)((char *)v17 + 2) = v15; *(_DWORD *)((char *)v17 + 6) = v16; sub_4287B0(&v27, &off_849C18, 16); v18 = *(_DWORD *)(a3 + 65816); LOBYTE(v30) = 3; sub_4E20B0(v18, (int)&v27); LOBYTE(v30) = 1; sub_428A70(&v27); goto LABEL_24; } v25 = 1; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBattleStart::sa_Step : no Player", v25); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBattleStart::sa_Step : Argument error", 0); } } else { if ( sub_4D58C0(&v28, (const char *)&unk_1321C000) ) { if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v4 + 12) + 8))(*((_DWORD *)v4 + 12), &v28, a3) != 0 ) { v19 = sub_4D5840(&v28, 0); v20 = off_849C18; *(_WORD *)off_849C18 = 29920; *(_DWORD *)((char *)v20 + 2) = v19; sub_4287B0(&v26, &off_849C18, 6); v21 = *(_DWORD *)(a3 + 65816); LOBYTE(v30) = 4; sub_4E20B0(v21, (int)&v26); LOBYTE(v30) = 1; sub_428A70(&v26); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBattleStart::sa_Step : no Time", 0); } } else { v22 = (int)sub_5CF620(&v28); sub_4D56D0(0, (int)"PineEventScriptNode::ShineBattleStart::sa_Step : invalid flag", v22); } } } LABEL_24: v23 = sub_4D6100(a3); LOBYTE(v30) = 0; nullsub_2(&v28); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineBattleStart::sa_Step"); return v23; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F3640) -------------------------------------------------------- __int16 __thiscall sub_4F3640(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int v10; // eax@1 int v11; // eax@2 int v12; // eax@4 void *v13; // ecx@7 int v14; // eax@10 int v15; // eax@16 __int16 v16; // si@17 int v18; // [sp-Ch] [bp-138h]@8 int v19; // [sp-8h] [bp-134h]@7 char v20; // [sp+10h] [bp-11Ch]@7 char v21; // [sp+1Ch] [bp-110h]@1 unsigned int v22; // [sp+11Ch] [bp-10h]@1 int v23; // [sp+128h] [bp-4h]@1 int v24; // [sp+12Ch] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineBattleStop::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineBattleStop::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineBattleStop"); sub_4D56C0(v8, (int)&unk_1321B74C); sub_4D5720(&v21); LOBYTE(v23) = 1; v9 = sub_4D9320((int)((char *)v4 + 36), &v21, (void *)a3); v10 = sub_4D5730((unsigned int)v9); if ( sub_4D58C0((const char *)v10, (const char *)&unk_1321D408) ) { v11 = *(_DWORD *)(*(_DWORD *)(a3 + 65816) + 77292); if ( v11 ) { v12 = *(_DWORD *)(v11 + 122); if ( v12 ) *(_BYTE *)(v12 + 84) = 0; else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_MapPKFlag Map", 0); } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_MapPKFlag CenterFlag", 0); } sub_428000((int)&v20, 6, 19); v13 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v23) = 2; v19 = 0; if ( v13 ) { v18 = (int)&v20; LABEL_15: sub_549B60(v13, v18, v19); LOBYTE(v23) = 1; sub_427EB0(&v20); goto LABEL_17; } } else { if ( !sub_4D58C0(&v21, (const char *)&unk_1321F520) ) { v15 = (int)sub_5CF620(&v21); sub_4D56D0(0, (int)"PineEventScriptNode::ShineBattleStop::sa_Step : invalid flag", v15); goto LABEL_17; } v14 = *(_DWORD *)(*(_DWORD *)(a3 + 65816) + 77288); if ( v14 ) { *(_DWORD *)(v14 + 156) = 0; *(_DWORD *)(v14 + 160) = 0; } sub_428000((int)&v20, 29, 132); v13 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v23) = 3; v19 = 0; if ( v13 != 0 ) { v18 = (int)&v20; goto LABEL_15; } } sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", v19); LOBYTE(v23) = 1; sub_427EB0(&v20); LABEL_17: v16 = sub_4D6100(a3); LOBYTE(v23) = 0; nullsub_2(&v21); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineBattleStop::sa_Step"); return v16; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F38D0) -------------------------------------------------------- __int16 __thiscall sub_4F38D0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // ax@3 void *v8; // eax@4 int v9; // eax@4 __int16 v10; // si@8 signed int v12; // [sp-4h] [bp-128h]@5 int v13; // [sp+10h] [bp-114h]@3 char v14; // [sp+14h] [bp-110h]@1 unsigned int v15; // [sp+114h] [bp-10h]@1 int v16; // [sp+120h] [bp-4h]@1 int v17; // [sp+124h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v4 = (unsigned int)&v17 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineSendKQResult::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_4D5720(&v14); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v16) = 1; if ( v6(&v14, a3, v4) != 0 ) { v7 = sub_4D5840(&v14, 0); v13 = sub_54DE90(&unk_13253630, v7); if ( v13 ) { v8 = sub_4D9320((int)((char *)v5 + 36), &v14, (void *)a3); v9 = sub_4D5730((unsigned int)v8); if ( sub_4D58C0((const char *)v9, (const char *)&unk_1321E690) ) v12 = 18; else v12 = 19; (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)v13 + 772))(22, v12); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step : no Player", 0); } v10 = sub_4D6100(a3); LOBYTE(v16) = 0; nullsub_2(&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F3A40) -------------------------------------------------------- __int16 __thiscall sub_4F3A40(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // ebx@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@2 __int16 v8; // ax@3 int v9; // edi@3 int v10; // ebx@6 void *v11; // eax@6 int v13; // [sp-4h] [bp-128h]@2 char v14; // [sp+14h] [bp-110h]@1 unsigned int v15; // [sp+114h] [bp-10h]@1 int v16; // [sp+120h] [bp-4h]@1 int v17; // [sp+124h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v4 = (unsigned int)&v17 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineInvidualReward::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineInvidualReward::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_4D5720(&v14); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v16) = 1; if ( v6(&v14, a3, v4) != 0 ) { v8 = sub_4D5840(&v14, 0); v9 = sub_54DE90(&unk_13253630, v8); if ( v9 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v14, a3) != 0 ) { v10 = *(_DWORD *)v9; v11 = sub_5CF620(&v14); (*(void (__thiscall **)(int, void *))(v10 + 1904))(v9, v11); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step : no Reward", 0); } } v7 = sub_4D6100(a3); LOBYTE(v16) = 0; nullsub_2(&v14); v13 = (int)"PineEventScriptNode::ShineInvidualReward::sa_Step"; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step : no Player", 0); v7 = sub_4D6100(a3); LOBYTE(v16) = 0; nullsub_2(&v14); v13 = (int)"PineEventScriptNode::ShineInvidualReward::sa_Step"; } --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, v13); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F3BC0) -------------------------------------------------------- __int16 __thiscall sub_4F3BC0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // ebx@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@2 __int16 v8; // ax@3 int v9; // edi@3 int v10; // eax@6 int v12; // [sp-4h] [bp-128h]@2 char v13; // [sp+14h] [bp-110h]@1 unsigned int v14; // [sp+114h] [bp-10h]@1 int v15; // [sp+120h] [bp-4h]@1 int v16; // [sp+124h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v4 = (unsigned int)&v16 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineReturnValue::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineReturnValue::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; sub_4D5720(&v13); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v15) = 1; if ( v6(&v13, a3, v4) != 0 ) { v8 = sub_4D5840(&v13, 0); v9 = sub_54DE90(&unk_13253630, v8); if ( v9 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v13, a3) != 0 ) { v10 = sub_4D5840(&v13, 0); (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 2300))(v9, v10); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step : no value", 0); } } v7 = sub_4D6100(a3); LOBYTE(v15) = 0; nullsub_2(&v13); v12 = (int)"PineEventScriptNode::ShineReturnValue::sa_Step"; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step : no Player", 0); v7 = sub_4D6100(a3); LOBYTE(v15) = 0; nullsub_2(&v13); v12 = (int)"PineEventScriptNode::ShineReturnValue::sa_Step"; } --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, v12); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F3D40) -------------------------------------------------------- __int16 __thiscall sub_4F3D40(void *this, int a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // edi@1 void *v6; // eax@1 int v7; // eax@1 __int16 v8; // ax@3 __int16 v9; // si@9 int v11; // [sp+10h] [bp-11Ch]@3 char v12; // [sp+14h] [bp-118h]@6 bool v13; // [sp+1Bh] [bp-111h]@1 char v14; // [sp+1Ch] [bp-110h]@1 unsigned int v15; // [sp+11Ch] [bp-10h]@1 int v16; // [sp+128h] [bp-4h]@1 int v17; // [sp+12Ch] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v4 = (unsigned int)&v17 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_4D5720(&v14); LOBYTE(v16) = 1; v6 = sub_4D9320((int)((char *)v5 + 36), &v14, (void *)a3); v7 = sub_4D5730((unsigned int)v6); v13 = sub_4D58C0((const char *)v7, (const char *)&unk_1321D608) != 0; if ( (*(int (__stdcall **)(char *, int, unsigned int))(**((_DWORD **)v5 + 12) + 8))(&v14, a3, v4) != 0 ) { v8 = sub_4D5840(&v14, 0); v11 = sub_54DE90(&unk_13253630, v8); if ( v11 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v14, a3) != 0 ) { v12 = sub_4D5840(&v14, 0); if ( v13 ) sub_549900((void *)v11); *(_BYTE *)(*(_DWORD *)(v11 + 118) + 4) = v12; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSendKQResult::sa_Step : no value", 0); } } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step : no Player", 0); } v9 = sub_4D6100(a3); LOBYTE(v16) = 0; nullsub_2(&v14); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F3F00) -------------------------------------------------------- __int16 __thiscall sub_4F3F00(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 int v6; // eax@1 void *v7; // eax@2 int v8; // eax@2 int v9; // eax@3 int v10; // eax@4 int v11; // ecx@4 int v12; // eax@4 int (__stdcall **v13)(int, int, int); // edi@5 int v14; // ecx@5 void *v15; // ecx@6 __int16 v16; // si@8 void *v18; // ecx@9 int v19; // eax@12 int v20; // eax@14 int v21; // ecx@14 int v22; // eax@14 int v23; // eax@16 int v24; // ecx@16 int v25; // eax@16 int v26; // eax@17 int v27; // ecx@17 int v28; // eax@17 int v29; // ecx@18 int v30; // ecx@18 int v31; // [sp-8h] [bp-168h]@3 int v32; // [sp-8h] [bp-168h]@4 int (__stdcall **v33)(int, int, int); // [sp+Ch] [bp-154h]@18 int v34; // [sp+20h] [bp-140h]@1 int v35; // [sp+24h] [bp-13Ch]@14 int v36; // [sp+28h] [bp-138h]@16 int v37; // [sp+2Ch] [bp-134h]@4 int v38; // [sp+30h] [bp-130h]@5 int v39; // [sp+34h] [bp-12Ch]@17 int v40; // [sp+38h] [bp-128h]@18 int (__stdcall **v41)(int, int, int); // [sp+3Ch] [bp-124h]@18 int v42; // [sp+40h] [bp-120h]@18 int (__stdcall **v43)(int, int, int); // [sp+44h] [bp-11Ch]@5 int *v44; // [sp+48h] [bp-118h]@5 char v45; // [sp+50h] [bp-110h]@1 unsigned int v46; // [sp+150h] [bp-10h]@1 int v47; // [sp+15Ch] [bp-4h]@1 int v48; // [sp+160h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v4 = this; v34 = (int)"PineEventScriptNode::ShineTeleportAll::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineTeleportAll::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineTeleportAll::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v47 = 0; sub_4D5720(&v45); LOBYTE(v47) = 1; v5 = sub_4D9320((int)((char *)v4 + 36), &v45, (void *)a3); v6 = sub_4D5730((unsigned int)v5); if ( sub_4D58C0((const char *)v6, (const char *)&unk_1321D208) ) { sub_427BE0(&v43); v13 = &off_6C71A0; v43 = &off_6C71A0; v18 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v47) = 2; if ( v18 != 0 ) sub_549B60(v18, (int)&v43, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_6; } v7 = sub_4D9320((int)((char *)v4 + 36), &v45, (void *)a3); v8 = sub_4D5730((unsigned int)v7); if ( sub_4D58C0((const char *)v8, (const char *)&unk_1321EC90) ) { v19 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 12) + 8))(&v45, a3); v31 = 0; if ( v19 != 0 ) { v20 = sub_4D5840(&v45, 0); v21 = *((_DWORD *)v4 + 13); v35 = v20; v22 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v21 + 8))(&v45, a3); v32 = 0; if ( v22 == 0 ) goto LABEL_15; v23 = sub_4D5840(&v45, 0); v24 = *((_DWORD *)v4 + 14); v36 = v23; v25 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v24 + 8))(&v45, a3); v31 = 0; if ( v25 != 0 ) { v26 = sub_4D5840(&v45, 0); v27 = *((_DWORD *)v4 + 15); v39 = v26; v28 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v27 + 8))(&v45, a3); v32 = 0; if ( v28 != 0 ) { v40 = sub_4D5840(&v45, 0); sub_4E7280(&v41); v29 = *(_DWORD *)(a3 + 65816); LOBYTE(v47) = 3; sub_4E20B0(v29, (int)&v41); sub_4E72B0(&v33, v42, (int)&v35, (int)&v39); v30 = *(_DWORD *)(a3 + 65816); LOBYTE(v47) = 4; sub_4E20B0(v30, (int)&v33); LOBYTE(v47) = 3; v33 = &off_6C71B0; sub_427EB0(&v33); v41 = &off_6C71A8; v15 = &v41; goto LABEL_7; } LABEL_15: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step : no Y", v32); goto LABEL_8; } } LABEL_13: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step : no X", v31); goto LABEL_8; } v9 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 12) + 8))(&v45, a3); v31 = 0; if ( !(v9 != 0) ) goto LABEL_13; v10 = sub_4D5840(&v45, 0); v11 = *((_DWORD *)v4 + 13); v37 = v10; v12 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v11 + 8))(&v45, a3); v32 = 0; if ( !(v12 != 0) ) goto LABEL_15; v38 = sub_4D5840(&v45, 0); sub_427BE0(&v43); v13 = &off_6C7198; v43 = &off_6C7198; v44 = &v37; v14 = *(_DWORD *)(a3 + 65816); LOBYTE(v47) = 5; sub_4E20B0(v14, (int)&v43); LABEL_6: v43 = v13; v15 = &v43; LABEL_7: LOBYTE(v47) = 1; sub_427EB0(v15); LABEL_8: v16 = sub_4D6100(a3); LOBYTE(v47) = 0; nullsub_2(&v45); --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineTeleportAll::sa_Step"); return v16; } // 6C7198: using guessed type int (__stdcall *off_6C7198)(int, int, int); // 6C71A0: using guessed type int (__stdcall *off_6C71A0)(int, int, int); // 6C71A8: using guessed type int (__stdcall *off_6C71A8)(int, int, int); // 6C71B0: using guessed type int (__stdcall *off_6C71B0)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F4290) -------------------------------------------------------- __int16 __thiscall sub_4F4290(void *this, int a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // edi@1 void *v6; // eax@1 int v7; // eax@1 bool v8; // zf@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // eax@1 __int16 v10; // ax@3 int v11; // eax@3 int v12; // eax@8 int v13; // ecx@8 int v14; // eax@10 void (__stdcall *v15)(_DWORD); // edx@10 __int16 v16; // si@11 int v18; // [sp+10h] [bp-124h]@8 int v19; // [sp+14h] [bp-120h]@10 int v20; // [sp+1Ch] [bp-118h]@3 bool v21; // [sp+23h] [bp-111h]@1 char v22; // [sp+24h] [bp-110h]@1 unsigned int v23; // [sp+124h] [bp-10h]@1 int v24; // [sp+130h] [bp-4h]@1 int v25; // [sp+134h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v4 = (unsigned int)&v25 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineTeleport::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineTeleport::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; sub_4D5720(&v22); LOBYTE(v24) = 1; v6 = sub_4D9320((int)((char *)v5 + 36), &v22, (void *)a3); v7 = sub_4D5730((unsigned int)v6); v8 = sub_4D58C0((const char *)v7, (const char *)&unk_1321D208) == 0; v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); v21 = !v8; if ( v9(&v22, a3, v4) != 0 ) { v10 = sub_4D5840(&v22, 0); v11 = sub_54DE90(&unk_13253630, v10); v20 = v11; if ( v11 ) { if ( v21 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v11 + 1752))(v11); } else { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v22, a3) != 0 ) { v12 = sub_4D5840(&v22, 0); v13 = *((_DWORD *)v5 + 14); v18 = v12; if ( (*(int (__stdcall **)(char *, int))(*(_DWORD *)v13 + 8))(&v22, a3) != 0 ) { v14 = sub_4D5840(&v22, 0); v15 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v20 + 1748); v19 = v14; v15(&v18); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step : no Y", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step : no X", 0); } } } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSubLayerShift::sa_Step : no Player", 0); } v16 = sub_4D6100(a3); LOBYTE(v24) = 0; nullsub_2(&v22); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineTeleport::sa_Step"); return v16; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F4490) -------------------------------------------------------- __int16 __thiscall sub_4F4490(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@2 void *v8; // eax@3 signed int v9; // eax@3 int (__stdcall *v10)(_DWORD, _DWORD); // eax@7 int v11; // eax@9 int v12; // ecx@11 int (__stdcall **v14)(int, int, int); // [sp+Ch] [bp-230h]@11 int v15; // [sp+20h] [bp-21Ch]@1 int v16; // [sp+28h] [bp-214h]@5 char v17; // [sp+2Ch] [bp-210h]@7 char v18; // [sp+12Ch] [bp-110h]@1 unsigned int v19; // [sp+22Ch] [bp-10h]@1 int v20; // [sp+238h] [bp-4h]@1 int v21; // [sp+23Ch] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v4 = (unsigned int)&v21 ^ __security_cookie; v5 = this; v15 = (int)"PineEventScriptNode::ShineItemOwner::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemOwner::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineItemOwner::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; sub_4D5720(&v18); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v20) = 1; if ( v6(&v18, a3, v4) != 0 ) { v8 = sub_5CF620(&v18); v9 = sub_639620(&unk_14D20898, (unsigned __int8 *)v8); if ( v9 == -1 ) LOWORD(v9) = -1; v16 = (unsigned __int16)v9; if ( (unsigned __int16)v9 == -1 ) { sub_5CF620(&v18); v7 = sub_4D6100(a3); } else { sub_4D5720(&v17); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v20) = 2; if ( v10(&v17, a3) != 0 ) { v11 = sub_4D93E0((int)((char *)v5 + 36), (void *)a3); if ( v11 ) { sub_4EAEC0(&v14, v16, (int)&v17, v11); v12 = *(_DWORD *)(a3 + 65816); LOBYTE(v20) = 3; sub_4E20B0(v12, (int)&v14); v7 = sub_4D6100(a3); LOBYTE(v20) = 2; v14 = &off_6C7DC0; sub_427EB0(&v14); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemOwner::sa_Step : No variable", 0); v7 = sub_4D6100(a3); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemOwner::sa_Step : no delimiter", 0); v7 = sub_4D6100(a3); } LOBYTE(v20) = 1; nullsub_2(&v17); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineItemOwner::sa_Step : no item", 0); v7 = sub_4D6100(a3); } LOBYTE(v20) = 0; nullsub_2(&v18); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineItemOwner::sa_Step"); return v7; } // 6C7DC0: using guessed type int (__stdcall *off_6C7DC0)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F46C0) -------------------------------------------------------- __int16 __thiscall sub_4F46C0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST20_4@1 void *v5; // ebx@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v10; // si@2 void *v11; // eax@3 signed int v12; // eax@3 int v13; // eax@6 void *v14; // eax@8 int (__stdcall *v15)(_DWORD, _DWORD); // edx@8 void *v16; // edi@10 void *v17; // eax@11 void *v18; // edi@11 int v19; // ebx@11 int v20; // ST20_4@14 void *v21; // eax@14 void *v22; // edi@17 __int16 v23; // dx@17 void *v24; // ST20_4@17 void *v25; // ST1C_4@17 void *v26; // ST18_4@17 void *v27; // ST14_4@17 void *v28; // ST10_4@17 void *v29; // ST0C_4@17 void *v30; // eax@17 int v31; // eax@17 char v32; // cl@18 int v33; // eax@19 void *v34; // ecx@21 char v36; // [sp+Ch] [bp-92Ch]@21 int v37; // [sp+18h] [bp-920h]@1 int v38; // [sp+1Ch] [bp-91Ch]@11 int v39; // [sp+20h] [bp-918h]@4 char *v40; // [sp+24h] [bp-914h]@11 char v41; // [sp+28h] [bp-910h]@8 char v42; // [sp+128h] [bp-810h]@1 char v43; // [sp+228h] [bp-710h]@11 char v44; // [sp+328h] [bp-610h]@17 char v45; // [sp+428h] [bp-510h]@17 char v46; // [sp+528h] [bp-410h]@17 char v47; // [sp+628h] [bp-310h]@17 char v48; // [sp+728h] [bp-210h]@17 char v49; // [sp+828h] [bp-110h]@17 unsigned int v50; // [sp+928h] [bp-10h]@1 int v51; // [sp+934h] [bp-4h]@1 int v52; // [sp+938h] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v4 = (unsigned int)&v52 ^ __security_cookie; v5 = this; v37 = (int)"PineEventScriptNode::ShineChatWindow::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineChatWindow::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineChatWindow::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v51 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineChatWindow : "); sub_4D5720(&v42); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v51) = 1; if ( v9(&v42, a3, v4) != 0 ) { v11 = sub_5CF620(&v42); v12 = sub_639620(&unk_14D16018, (unsigned __int8 *)v11); if ( v12 == -1 ) v39 = 65535; else v39 = (unsigned __int16)v12; v13 = (int)sub_5CF620(&v42); if ( (_WORD)v39 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindow::sa_Step : no mob", v13); v10 = sub_4D6100(a3); goto LABEL_27; } v14 = sub_4D56C0(&dword_1321B748, (int)&v42); sub_4D56C0(v14, (int)word_6A2BF8); sub_4D5720(&v41); v15 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v51) = 2; if ( v15(&v41, a3) != 0 ) { v16 = *(void **)(a3 + 65840); if ( v16 ) { v17 = sub_5CF620(&v41); v40 = (char *)sub_48C200(v16, (const char *)v17); sub_4D56C0(&dword_1321B748, (int)v40); _eh_vector_constructor_iterator_(&v43, 0x100u, 7, (int)sub_4D5720, nullsub_2); LOBYTE(v51) = 3; v18 = &v43; v19 = (int)((char *)v5 + 56); v38 = 7; do { if ( *(_DWORD *)v19 && (*(int (__stdcall **)(void *, int))(**(_DWORD **)v19 + 8))(v18, a3) ) { v20 = (int)sub_5CF620(v18); v21 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v21, v20); } else { sub_4D5720(v18); } v19 += 4; v18 = (char *)v18 + 256; --v38; } while ( v38 ); sub_4D56C0(&dword_1321B748, (int)&unk_1321B74C); v22 = off_849C18; v23 = v39; *(_WORD *)off_849C18 = 27660; *((_WORD *)v22 + 1) = v23; v24 = sub_5CF620(&v49); v25 = sub_5CF620(&v48); v26 = sub_5CF620(&v47); v27 = sub_5CF620(&v46); v28 = sub_5CF620(&v45); v29 = sub_5CF620(&v44); v30 = sub_5CF620(&v43); sprintf((char *)v22 + 5, v40, v30, v29, v28, v27, v26, v25, v24); v31 = (int)((char *)v22 + 5); do v32 = *(_BYTE *)v31++; while ( v32 ); v33 = v31 - (_DWORD)((char *)v22 + 6); if ( v33 >= 256 ) { v10 = sub_4D6100(a3); LOBYTE(v51) = 2; _LN21(&v43, 0x100u, 7, nullsub_2); LABEL_26: LOBYTE(v51) = 1; nullsub_2(&v41); goto LABEL_27; } *((_BYTE *)v22 + 4) = v33; sub_4287B0(&v36, &off_849C18, (unsigned __int8)v33 + 5); v34 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v51) = 4; if ( v34 ) sub_549B60(v34, (int)&v36, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v51) = 3; sub_428A70(&v36); LOBYTE(v51) = 2; _LN21(&v43, 0x100u, 7, nullsub_2); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindow::sa_Step", 0); } v10 = sub_4D6100(a3); goto LABEL_26; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindow::sa_Step", 0); v10 = sub_4D6100(a3); LABEL_27: LOBYTE(v51) = 0; nullsub_2(&v42); --dword_750CB8; v51 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineChatWindow::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F4AF0) -------------------------------------------------------- __int16 __thiscall sub_4F4AF0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST18_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 int v10; // eax@1 __int16 v11; // ax@2 __int16 v12; // si@6 int (__stdcall *v13)(_DWORD, _DWORD); // edx@7 void *v14; // eax@9 signed int v15; // eax@9 int v16; // eax@12 void *v17; // eax@14 int (__stdcall *v18)(_DWORD, _DWORD); // edx@14 void *v19; // ebx@16 void *v20; // eax@17 void *v21; // ebx@17 int v22; // edi@17 int v23; // ST18_4@20 void *v24; // eax@20 void *v25; // edi@23 __int16 v26; // dx@23 void *v27; // ST18_4@23 void *v28; // ST14_4@23 void *v29; // ST10_4@23 void *v30; // ST0C_4@23 void *v31; // eax@23 int v32; // eax@23 char v33; // cl@24 int v34; // eax@25 int v35; // ebx@27 int v36; // edi@27 int v37; // eax@27 void *v38; // ecx@27 int v40; // [sp-4h] [bp-844h]@1 char v41; // [sp+Ch] [bp-834h]@27 int v42; // [sp+18h] [bp-828h]@1 int v43; // [sp+1Ch] [bp-824h]@2 int v44; // [sp+20h] [bp-820h]@17 int v45; // [sp+24h] [bp-81Ch]@10 char *v46; // [sp+28h] [bp-818h]@17 int v47; // [sp+2Ch] [bp-814h]@7 char v48; // [sp+30h] [bp-810h]@14 char v49; // [sp+130h] [bp-710h]@7 char v50; // [sp+230h] [bp-610h]@1 char v51; // [sp+330h] [bp-510h]@17 char v52; // [sp+430h] [bp-410h]@23 char v53; // [sp+530h] [bp-310h]@23 char v54; // [sp+630h] [bp-210h]@23 char v55; // [sp+730h] [bp-110h]@23 unsigned int v56; // [sp+830h] [bp-10h]@1 int v57; // [sp+83Ch] [bp-4h]@1 int v58; // [sp+840h] [bp+0h]@1 v56 = (unsigned int)&v58 ^ __security_cookie; v4 = (unsigned int)&v58 ^ __security_cookie; v5 = this; v42 = (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v57 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineChatWindowRange : "); sub_4D5720(&v50); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v57) = 1; v10 = v9(&v50, a3, v4); v40 = 0; if ( !(v10 != 0) ) goto LABEL_5; v11 = sub_4D5840(&v50, 0); v43 = sub_54DE90(&unk_13253630, v11); if ( v43 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 14) + 8))(&v50, a3) == 0 ) { v40 = 1; LABEL_5: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", v40); goto LABEL_6; } v47 = sub_4D5840(&v50, 0); sub_4D5720(&v49); v13 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 14) + 8); LOBYTE(v57) = 2; if ( v13(&v49, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", 0); v12 = sub_4D6100(a3); LABEL_33: LOBYTE(v57) = 1; nullsub_2(&v49); goto LABEL_34; } v14 = sub_5CF620(&v49); v15 = sub_639620(&unk_14D16018, (unsigned __int8 *)v14); if ( v15 == -1 ) v45 = 65535; else v45 = (unsigned __int16)v15; v16 = (int)sub_5CF620(&v49); if ( (_WORD)v45 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindow::sa_Step : no mob", v16); v12 = sub_4D6100(a3); goto LABEL_33; } v17 = sub_4D56C0(&dword_1321B748, (int)&v49); sub_4D56C0(v17, (int)word_6A2BF8); sub_4D5720(&v48); v18 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 15) + 8); LOBYTE(v57) = 3; if ( v18(&v48, a3) != 0 ) { v19 = *(void **)(a3 + 65840); if ( v19 ) { v20 = sub_5CF620(&v48); v46 = (char *)sub_48C200(v19, (const char *)v20); sub_4D56C0(&dword_1321B748, (int)v46); _eh_vector_constructor_iterator_(&v51, 0x100u, 5, (int)sub_4D5720, nullsub_2); LOBYTE(v57) = 4; v21 = &v51; v22 = (int)((char *)v5 + 64); v44 = 5; do { if ( *(_DWORD *)v22 && (*(int (__stdcall **)(void *, int))(**(_DWORD **)v22 + 8))(v21, a3) ) { v23 = (int)sub_5CF620(v21); v24 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); sub_4D56C0(v24, v23); } else { sub_4D5720(v21); } v22 += 4; v21 = (char *)v21 + 256; --v44; } while ( v44 ); sub_4D56C0(&dword_1321B748, (int)&unk_1321B74C); v25 = off_849C18; v26 = v45; *(_WORD *)off_849C18 = 27660; *((_WORD *)v25 + 1) = v26; v27 = sub_5CF620(&v55); v28 = sub_5CF620(&v54); v29 = sub_5CF620(&v53); v30 = sub_5CF620(&v52); v31 = sub_5CF620(&v51); sprintf((char *)v25 + 5, v46, v31, v30, v29, v28, v27); v32 = (int)((char *)v25 + 5); do v33 = *(_BYTE *)v32++; while ( v33 ); v34 = v32 - (_DWORD)((char *)v25 + 6); if ( v34 >= 256 ) { v12 = sub_4D6100(a3); LOBYTE(v57) = 3; _LN21(&v51, 0x100u, 5, nullsub_2); LABEL_32: LOBYTE(v57) = 2; nullsub_2(&v48); goto LABEL_33; } *((_BYTE *)v25 + 4) = v34; sub_4287B0(&v41, &off_849C18, (unsigned __int8)v34 + 5); v35 = *(_DWORD *)(v43 + 102); v36 = *(_DWORD *)(a3 + 65816); LOBYTE(v57) = 5; v37 = sub_427BD0(&unk_13253E80); v38 = *(void **)(v36 + 77292); if ( v38 ) sub_549E00(v38, v37, v35, (_UNKNOWN *)v47, 0, (int)&v41, 1, 65535); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllOfRange : Null flag", 0); LOBYTE(v57) = 4; sub_428A70(&v41); LOBYTE(v57) = 3; _LN21(&v51, 0x100u, 5, nullsub_2); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", 0); } v12 = sub_4D6100(a3); goto LABEL_32; } LABEL_6: v12 = sub_4D6100(a3); LABEL_34: LOBYTE(v57) = 0; nullsub_2(&v50); --dword_750CB8; v57 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step"); return v12; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F4FD0) -------------------------------------------------------- __int16 __thiscall sub_4F4FD0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // esi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // eax@1 __int16 v11; // ax@3 int v12; // edi@7 int v13; // esi@7 void (__thiscall *v14)(_DWORD, _DWORD); // eax@7 int v15; // esi@9 int v16; // eax@9 int v17; // esi@11 __int16 v18; // si@14 int v20; // [sp-4h] [bp-32Ch]@7 int v21; // [sp+14h] [bp-314h]@3 char v22; // [sp+18h] [bp-310h]@6 char v23; // [sp+118h] [bp-210h]@1 char v24; // [sp+218h] [bp-110h]@1 unsigned int v25; // [sp+318h] [bp-10h]@1 int v26; // [sp+324h] [bp-4h]@1 int v27; // [sp+328h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v4 = (unsigned int)&v27 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobAttribute::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMobAttribute::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineMobAttribute : "); sub_4D5720(&v23); LOBYTE(v26) = 1; v9 = sub_4D9320((int)((char *)v5 + 36), &v23, (void *)a3); sub_4D5730((unsigned int)v9); sub_4D5720(&v24); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v26) = 2; if ( v10(&v24, a3, v4) != 0 ) { v11 = sub_4D5840(&v24, 0); v21 = sub_54DE90(&unk_13253630, v11); if ( !v21 ) goto LABEL_14; if ( (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v5 + 13) + 8))(*((_DWORD *)v5 + 13), &v24, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMobAttribute::sa_Step", 0); goto LABEL_14; } memcpy(&v22, &v23, 0x100u); LOBYTE(v26) = 3; if ( sub_4D58C0(&v22, (const char *)&unk_1321F520) ) { v12 = v21; v13 = *(_DWORD *)v21; v20 = sub_4D5840(&v24, 0); v14 = *(void (__thiscall **)(_DWORD, _DWORD))(v13 + 2304); LABEL_12: v14(v12, v20); goto LABEL_13; } if ( sub_4D58C0(&v22, (const char *)&unk_1321CF08) ) { v15 = *(_DWORD *)v21; v16 = sub_4D5840(&v24, 0); (*(void (__thiscall **)(int, int))(v15 + 1828))(v21, v16); } else { if ( sub_4D58C0(&v22, (const char *)&unk_1321F420) ) { v12 = v21; v17 = *(_DWORD *)v21; v20 = sub_4D5840(&v24, 0); v14 = *(void (__thiscall **)(_DWORD, _DWORD))(v17 + 1832); goto LABEL_12; } } LABEL_13: LOBYTE(v26) = 2; nullsub_2(&v22); goto LABEL_14; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", 0); LABEL_14: v18 = sub_4D6100(a3); LOBYTE(v26) = 1; nullsub_2(&v24); LOBYTE(v26) = 0; nullsub_2(&v23); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobAttribute::sa_Step"); return v18; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F5270) -------------------------------------------------------- __int16 __thiscall sub_4F5270(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 void *v6; // eax@1 int (__stdcall *v7)(_DWORD, _DWORD, _DWORD); // eax@1 __int16 v8; // si@2 int (__stdcall *v9)(_DWORD, _DWORD); // edx@3 int v10; // eax@3 int v11; // eax@5 int v12; // ecx@5 int v13; // eax@5 int v14; // eax@6 int (__stdcall *v15)(_DWORD, _DWORD); // edx@6 int v16; // eax@6 void *v17; // eax@7 int v18; // eax@7 int v19; // edi@7 int v20; // eax@8 unsigned __int16 v21; // ax@8 void *v22; // eax@9 int v23; // eax@9 int v24; // ecx@10 int v26; // [sp-4h] [bp-3A4h]@3 char v27; // [sp+Ch] [bp-394h]@10 int v28; // [sp+1Ch] [bp-384h]@1 int v29; // [sp+20h] [bp-380h]@6 int v30; // [sp+24h] [bp-37Ch]@5 int v31; // [sp+28h] [bp-378h]@7 char v32; // [sp+2Ch] [bp-374h]@1 char v33; // [sp+12Ch] [bp-274h]@1 char v34; // [sp+22Ch] [bp-174h]@3 char v35; // [sp+32Ch] [bp-74h]@10 char v36; // [sp+340h] [bp-60h]@9 char v37; // [sp+34Ch] [bp-54h]@9 char v38; // [sp+361h] [bp-3Fh]@9 char v39; // [sp+36Dh] [bp-33h]@9 int v40; // [sp+382h] [bp-1Eh]@9 int v41; // [sp+386h] [bp-1Ah]@9 unsigned int v42; // [sp+390h] [bp-10h]@1 int v43; // [sp+39Ch] [bp-4h]@1 int v44; // [sp+3A0h] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v4 = (unsigned int)&v44 ^ __security_cookie; v5 = this; v28 = (int)"PineEventScriptNode::ShineObjectCollect::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineObjectCollect::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineObjectCollect::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v43 = 0; sub_4D5720(&v32); LOBYTE(v43) = 1; v6 = sub_4D9320((int)((char *)v5 + 36), &v32, (void *)a3); sub_4D5730((unsigned int)v6); sub_4D5720(&v33); v7 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v43) = 2; if ( v7(&v33, a3, v4) != 0 ) { sub_4D5720(&v34); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v43) = 3; v10 = v9(&v34, a3); v26 = 0; if ( v10 == 0 || (v11 = sub_4D5840(&v34, 0), v12 = *((_DWORD *)v5 + 14), v30 = v11, v13 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v12 + 8))(&v34, a3), v26 = 0, v13 == 0) || (v14 = sub_4D5840(&v34, 0), v15 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 15) + 8), v29 = v14, v16 = v15(&v34, a3), v26 = 0, v16 == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", v26); } else { v31 = sub_4D5840(&v34, 0); v17 = sub_5CF620(&v33); v18 = sub_63AB60(&unk_CFCF398, (const char *)v17); v19 = v18; if ( v18 ) { v20 = sub_418B00((int)byte_85A2C0, v18); v21 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v20); if ( sub_4190D0((int)&unk_14D20370, v21) ) { v22 = sub_5CF620(&v33); strncpy(&v36, (const char *)v22, 0xCu); v23 = sub_418B00((int)byte_85A2C0, v19); strncpy(&v38, (const char *)v23, 0xCu); v39 = 0; v37 = 0; v40 = v30; v41 = v29; if ( sub_4D58C0(&v32, (const char *)&unk_1321F520) ) { sub_429C80((int)&v27, (int)&v35, v31); v24 = *(_DWORD *)(a3 + 65816); LOBYTE(v43) = 4; sub_4E20B0(v24, (int)&v27); LOBYTE(v43) = 3; sub_427EB0(&v27); } } } } v8 = sub_4D6100(a3); LOBYTE(v43) = 2; nullsub_2(&v34); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", 0); v8 = sub_4D6100(a3); } LOBYTE(v43) = 1; nullsub_2(&v33); LOBYTE(v43) = 0; nullsub_2(&v32); --dword_750CB8; v43 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineObjectCollect::sa_Step"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F5560) -------------------------------------------------------- __int16 __stdcall sub_4F5560(int a1, int a2, int a3) { void *v3; // eax@1 void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 int v7; // eax@1 int v8; // edi@2 void *v9; // ecx@6 __int16 v10; // ax@8 __int16 v11; // si@8 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_4D56C0(&dword_1321B748, (int)"["); v4 = sub_4D56C0(v3, a1); v5 = sub_4D56C0(v4, (int)"]"); v6 = sub_4D56C0(v5, (int)"ShineEndOfKingdomQuest"); sub_4D56C0(v6, (int)&unk_1321B74C); v7 = *(_DWORD *)(*(_DWORD *)(a2 + 65816) + 77288); if ( v7 ) v8 = *(_DWORD *)(v7 + 60); else v8 = -1; if ( v8 == -1 ) sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step : Invalid Shine Quest", 0); sub_5A2470(&unk_14D12A04, v8); v9 = *(void **)(*(_DWORD *)(a2 + 65816) + 77288); if ( v9 ) sub_494EA0(v9, 176); v10 = sub_4D6100(a2); --dword_750CB8; v11 = v10; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004F56A0) -------------------------------------------------------- __int16 __thiscall sub_4F56A0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 int v7; // eax@1 int v8; // eax@3 void *v9; // ecx@4 int v10; // edi@6 void *v11; // ecx@6 __int16 v12; // si@8 int v14; // [sp-4h] [bp-12Ch]@1 int v15; // [sp+10h] [bp-118h]@4 int v16; // [sp+14h] [bp-114h]@3 char v17; // [sp+18h] [bp-110h]@1 unsigned int v18; // [sp+118h] [bp-10h]@1 int v19; // [sp+124h] [bp-4h]@1 int v20; // [sp+128h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = (unsigned int)&v20 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; sub_4D5720(&v17); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v19) = 1; v7 = v6(&v17, a3, v4); v14 = 0; if ( v7 == 0 || (v16 = sub_4D5840(&v17, 0), v8 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v17, a3), v14 = 0, v8 == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineChatWindowRange::sa_Step", v14); } else { v15 = sub_4D5840(&v17, 0); v9 = *(void **)(*(_DWORD *)(a3 + 65816) + 77288); if ( v9 ) sub_494EA0(v9, 176); v10 = *(_DWORD *)(a3 + 65816); v11 = *(void **)(v10 + 77288); if ( v11 ) { sub_475290(v11, v16, v15); sub_474D20(*(_DWORD *)(v10 + 77288)); } } v12 = sub_4D6100(a3); LOBYTE(v19) = 0; nullsub_2(&v17); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"); return v12; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F5830) -------------------------------------------------------- __int16 __thiscall sub_4F5830(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 void *v10; // eax@4 void *v11; // eax@4 int v12; // ebx@4 void *v13; // eax@4 int v14; // eax@4 void *v15; // ecx@5 void *v16; // eax@8 int v17; // eax@8 int v18; // eax@9 int v19; // eax@10 void *v20; // edi@10 int v21; // eax@10 void *v22; // ebx@10 int v23; // eax@12 __int16 v24; // cx@12 int v25; // edx@12 __int16 v26; // ax@12 int v27; // ecx@13 int v28; // ecx@14 __int16 v29; // si@16 int v31; // [sp-4h] [bp-144h]@2 char v32; // [sp+10h] [bp-130h]@13 char v33; // [sp+20h] [bp-120h]@1 int v34; // [sp+120h] [bp-20h]@5 __int16 v35; // [sp+124h] [bp-1Ch]@12 int v36; // [sp+128h] [bp-18h]@12 __int16 v37; // [sp+12Ch] [bp-14h]@12 unsigned int v38; // [sp+130h] [bp-10h]@1 int v39; // [sp+13Ch] [bp-4h]@1 int v40; // [sp+140h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v4 = (unsigned int)&v40 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v39 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineGuildTorunamentResult"); sub_4D5720(&v33); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v39) = 1; if ( v9(&v33, a3, v4) == 0 ) { v31 = 0; LABEL_3: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step : no skip", v31); goto LABEL_16; } v10 = sub_4D56C0(&dword_1321B748, (int)word_6A2BF8); v11 = sub_4D56C0(v10, (int)&v33); sub_4D56C0(v11, (int)&unk_1321B74C); v12 = sub_4D5840(&v33, 0); v13 = sub_4D9320((int)((char *)v5 + 36), &v33, (void *)a3); v14 = sub_4D5730((unsigned int)v13); if ( sub_4D58C0((const char *)v14, (const char *)&unk_1321E690) ) { sub_428530((int)&v34, 22, 18, v12); v15 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v39) = 2; if ( v15 ) sub_549B60(v15, (int)&v34, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_15; } v16 = sub_4D9320((int)((char *)v5 + 36), &v33, (void *)a3); v17 = sub_4D5730((unsigned int)v16); if ( !sub_4D58C0((const char *)v17, (const char *)&unk_1321DA08) ) { sub_428530((int)&v34, 22, 19, v12); v28 = *(_DWORD *)(a3 + 65816); LOBYTE(v39) = 4; sub_4E20B0(v28, (int)&v34); LABEL_15: LOBYTE(v39) = 1; sub_427EB0(&v34); goto LABEL_16; } v18 = (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v5 + 13) + 8))(*((_DWORD *)v5 + 13), &v33, a3); v31 = 0; if ( !(v18 != 0) ) goto LABEL_3; v19 = sub_4D5840(&v33, 0); v20 = off_849C18; *(_WORD *)off_849C18 = 29922; *(_DWORD *)((char *)v20 + 2) = v12; *(_DWORD *)((char *)v20 + 6) = v19; v21 = sub_505CC0(*(_DWORD *)(a3 + 65816)); v22 = (void *)v21; if ( v21 && sub_4627E0((void *)v21) ) { v23 = sub_4627E0(v22); sub_47F480(v23, (int)&v34); v24 = v35; v25 = v36; *(_DWORD *)((char *)v20 + 10) = v34; v26 = v37; *((_WORD *)v20 + 7) = v24; *((_DWORD *)v20 + 4) = v25; *((_WORD *)v20 + 10) = v26; } sub_4287B0(&v32, &off_849C18, 22); v27 = *(_DWORD *)(a3 + 65816); LOBYTE(v39) = 3; sub_4E20B0(v27, (int)&v32); LOBYTE(v39) = 1; sub_428A70(&v32); LABEL_16: v29 = sub_4D6100(a3); LOBYTE(v39) = 0; nullsub_2(&v33); --dword_750CB8; v39 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"); return v29; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F5B40) -------------------------------------------------------- __int16 __thiscall sub_4F5B40(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 const char *v9; // esi@1 __int16 v10; // ax@2 __int16 v11; // si@4 int (__stdcall *v12)(_DWORD, _DWORD); // edx@5 void *v13; // eax@13 signed int v14; // eax@13 signed int v15; // edi@13 __int16 v16; // di@17 int v18; // esi@18 void *v19; // eax@18 int v20; // [sp+10h] [bp-21Ch]@2 signed int v21; // [sp+14h] [bp-218h]@8 void *v22; // [sp+18h] [bp-214h]@1 char v23; // [sp+1Ch] [bp-210h]@7 char v24; // [sp+11Ch] [bp-110h]@5 unsigned int v25; // [sp+21Ch] [bp-10h]@1 int v26; // [sp+228h] [bp-4h]@1 int v27; // [sp+22Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v4 = this; v22 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineCostumeCreate"); v8 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); v9 = (const char *)v8; if ( !v8 ) goto LABEL_4; v10 = sub_4D5840((const char *)v8, 0); v20 = sub_54DE90(&unk_13253630, v10); if ( v20 ) { sub_4D5720(&v24); v12 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v26) = 1; if ( v12(&v24, a3) != 0 ) { sub_4D5730((unsigned int)&v24); memcpy(&v23, &v24, 0x100u); LOBYTE(v26) = 2; if ( sub_4D58C0(&v23, (const char *)&unk_1321C500) ) { v21 = 27; } else { if ( !sub_4D58C0(&v23, (const char *)&unk_1321F320) ) { v11 = sub_4D6100(a3); LOBYTE(v26) = 1; nullsub_2(&v23); goto LABEL_20; } v21 = 8; } LOBYTE(v26) = 1; nullsub_2(&v23); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v22 + 13) + 8))(&v24, a3) != 0 ) { v13 = sub_5CF620(&v24); v14 = sub_639620(&unk_14D20898, (unsigned __int8 *)v13); v15 = v14; if ( v14 != -1 && (_WORD)v14 != -1 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v22 + 14) + 8))(&v24, a3) != 0 ) { v18 = *(_DWORD *)v20; v19 = sub_5CF620(&v24); (*(void (__thiscall **)(int, signed int, signed int, void *))(v18 + 2376))(v20, v21, v15, v19); v11 = sub_4D6100(a3); goto LABEL_20; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step : no item", 0); } v16 = sub_4D6100(a3); LOBYTE(v26) = 0; nullsub_2(&v24); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step"); return v16; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step : no item", 0); v11 = sub_4D6100(a3); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step : no part", 0); v11 = sub_4D6100(a3); } LABEL_20: LOBYTE(v26) = 0; nullsub_2(&v24); goto LABEL_21; } sub_4D5840(v9, 0); LABEL_4: v11 = sub_4D6100(a3); LABEL_21: --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineCostumeCreate::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F5E60) -------------------------------------------------------- __int16 __thiscall sub_4F5E60(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 const char *v9; // esi@1 __int16 v10; // ax@2 __int16 v11; // si@4 int (__stdcall *v12)(_DWORD, _DWORD); // edx@5 signed int v13; // esi@8 void *v14; // eax@13 signed int v15; // eax@13 int v17; // [sp+10h] [bp-21Ch]@2 void *v18; // [sp+18h] [bp-214h]@1 char v19; // [sp+1Ch] [bp-210h]@7 char v20; // [sp+11Ch] [bp-110h]@5 unsigned int v21; // [sp+21Ch] [bp-10h]@1 int v22; // [sp+228h] [bp-4h]@1 int v23; // [sp+22Ch] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v4 = this; v18 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineCostumeTakeOff::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineCostumeTakeOff::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineCostumeTakeOff"); v8 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); v9 = (const char *)v8; if ( !v8 ) goto LABEL_4; v10 = sub_4D5840((const char *)v8, 0); v17 = sub_54DE90(&unk_13253630, v10); if ( !v17 ) { sub_4D5840(v9, 0); LABEL_4: v11 = sub_4D6100(a3); LABEL_19: v22 = -1; goto LABEL_20; } sub_4D5720(&v20); v12 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v22) = 1; if ( v12(&v20, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineCostumeTakeOff::sa_Step : no part", 0); v11 = sub_4D6100(a3); LABEL_18: LOBYTE(v22) = 0; nullsub_2(&v20); goto LABEL_19; } sub_4D5730((unsigned int)&v20); memcpy(&v19, &v20, 0x100u); LOBYTE(v22) = 2; if ( sub_4D58C0(&v19, (const char *)&unk_1321C500) ) { v13 = 27; } else { if ( !sub_4D58C0(&v19, (const char *)&unk_1321F320) ) { v11 = sub_4D6100(a3); LOBYTE(v22) = 1; nullsub_2(&v19); goto LABEL_18; } v13 = 8; } LOBYTE(v22) = 1; nullsub_2(&v19); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v18 + 13) + 8))(&v20, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineCostumeTakeOff::sa_Step : no item", 0); v11 = sub_4D6100(a3); goto LABEL_18; } v14 = sub_5CF620(&v20); v15 = sub_639620(&unk_14D20898, (unsigned __int8 *)v14); if ( v15 != -1 && (_WORD)v15 != -1 ) (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)v17 + 2380))(v13, v15); v11 = sub_4D6100(a3); LOBYTE(v22) = 0; nullsub_2(&v20); v22 = -1; LABEL_20: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineCostumeTakeOff::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F6110) -------------------------------------------------------- __int16 __stdcall sub_4F6110(int a1, int a2, int a3) { void *v3; // eax@1 void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 int v7; // esi@1 int v8; // eax@1 int v9; // ebx@1 void *v10; // edi@5 __int16 v11; // ax@6 int v12; // eax@7 __int16 v13; // si@9 int v15; // [sp-4h] [bp-24h]@6 sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWeddingComplete::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWeddingComplete::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_4D56C0(&dword_1321B748, (int)"["); v4 = sub_4D56C0(v3, a1); v5 = sub_4D56C0(v4, (int)"]"); v6 = sub_4D56C0(v5, (int)"ShineWeddingComplete"); sub_4D56C0(v6, (int)&unk_1321B74C); v7 = sub_54E4D0(&unk_13253630, dword_86AD5C); v8 = sub_54E4D0(&unk_13253630, dword_86AD74); v9 = v8; if ( v7 && v8 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1232))(v9) == 2 ) { v10 = off_849C18; *(_WORD *)off_849C18 = 4241; *((_WORD *)v10 + 1) = *(_WORD *)(v7 + 4); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); *((_DWORD *)v10 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); if ( sub_4C81E0(&off_849C18, 12) ) { v12 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v12); v11 = sub_4D6100(a2); v15 = (int)"PineEventScriptNode::ShineWeddingComplete::sa_Step"; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWeddingComplete::sa_Step : Packet Too Long", 12); v11 = sub_4D6100(a2); v15 = (int)"PineEventScriptNode::ShineWeddingComplete::sa_Step"; } } else { v11 = sub_4D6100(a2); v15 = (int)"PineEventScriptNode::ShineWeddingComplete::sa_Step"; } --dword_750CB8; v13 = v11; sub_467660((int)&unk_D020420, v15); return v13; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD5C: using guessed type int dword_86AD5C; // 86AD74: using guessed type int dword_86AD74; // 1321B748: using guessed type int dword_1321B748; // 14D16430: using guessed type int dword_14D16430; //----- (004F62E0) -------------------------------------------------------- __int16 __thiscall sub_4F62E0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // edi@1 __int16 v6; // si@2 int (__stdcall *v7)(_DWORD, _DWORD); // edx@3 int v8; // eax@3 int v9; // eax@5 int v10; // ecx@5 int v11; // eax@5 int v13; // [sp-8h] [bp-134h]@3 int v14; // [sp+10h] [bp-11Ch]@5 int v15; // [sp+14h] [bp-118h]@6 char v16; // [sp+1Ch] [bp-110h]@3 unsigned int v17; // [sp+11Ch] [bp-10h]@1 int v18; // [sp+128h] [bp-4h]@1 int v19; // [sp+12Ch] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShinePlayerWalk::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShinePlayerWalk::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4EB170(v4, (void *)a3); if ( v5 ) { sub_4D5720(&v16); v7 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; v8 = v7(&v16, a3); v13 = 0; if ( v8 == 0 || (v9 = sub_4D5840(&v16, 0), v10 = *((_DWORD *)v4 + 13), v14 = v9, v11 = (*(int (__stdcall **)(char *, int))(*(_DWORD *)v10 + 8))(&v16, a3), v13 = 0, v11 == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineCostumeTakeOff::sa_Step : no part", v13); } else { v15 = sub_4D5840(&v16, 0); (*(void (__thiscall **)(int, int *, signed int, signed int, signed int, signed int))(*(_DWORD *)v5 + 1456))( v5, &v14, 24, 77, 1, 1); } v6 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); } else { v6 = sub_4D6100(a3); } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShinePlayerWalk::sa_Step"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F6460) -------------------------------------------------------- __int16 __thiscall sub_4F6460(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 void *v7; // eax@3 void *v8; // eax@3 int v9; // eax@3 void *v10; // ecx@4 __int16 v11; // si@8 char v13; // [sp+Ch] [bp-124h]@4 int v14; // [sp+18h] [bp-118h]@1 void *v15; // [sp+1Ch] [bp-114h]@3 char v16; // [sp+20h] [bp-110h]@1 unsigned int v17; // [sp+120h] [bp-10h]@1 int v18; // [sp+12Ch] [bp-4h]@1 int v19; // [sp+130h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = (unsigned int)&v19 ^ __security_cookie; v5 = this; v14 = (int)"PineEventScriptNode::ShineBriefEffect::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineBriefEffect::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineBriefEffect::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; sub_4D5720(&v16); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v18) = 1; if ( v6(&v16, a3, v4) != 0 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 27664; v15 = v7; *((_BYTE *)v7 + 2) = sub_4D5840(&v16, 0); v8 = sub_4D9320((int)((char *)v5 + 36), &v16, (void *)a3); v9 = sub_4D5730((unsigned int)v8); if ( sub_4D58C0((const char *)v9, (const char *)&unk_1321D008) ) { sub_4287B0(&v13, &off_849C18, 3); v10 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v18) = 2; if ( v10 != 0 ) sub_549B60(v10, (int)&v13, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v18) = 1; sub_428A70(&v13); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindPlayer::sa_Step : no part", 0); } v11 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineBriefEffect::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F6610) -------------------------------------------------------- __int16 __stdcall sub_4F6610(int a1, int a2, int a3) { void *v3; // ecx@1 __int16 v4; // si@4 char v6; // [sp+8h] [bp-24h]@1 int v7; // [sp+1Ch] [bp-10h]@1 int v8; // [sp+28h] [bp-4h]@1 v7 = (int)"PineEventScriptNode::ShineRevival::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineRevival::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineRevival::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sub_429DD0((int)&v6); v3 = *(void **)(*(_DWORD *)(a2 + 65816) + 77292); LOBYTE(v8) = 1; if ( v3 ) sub_549B60(v3, (int)&v6, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); sub_429CB0((int)&v6); v4 = sub_4D6100(a2); LOBYTE(v8) = 0; sub_429E10((int)&v6); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineRevival::sa_Step"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004F6710) -------------------------------------------------------- __int16 __thiscall sub_4F6710(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // edi@1 __int16 v10; // ax@5 int v11; // eax@5 int v12; // ST10_4@7 void *v13; // eax@7 __int16 v14; // si@8 char v16; // [sp+14h] [bp-110h]@1 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineWhoKillMe::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineWhoKillMe::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineWhoKillMe"); sub_4D56C0(v8, (int)&unk_1321B74C); sub_4D5720(&v16); LOBYTE(v18) = 1; v9 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v9 != 0 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 12) + 8))(&v16, a3) != 0 ) { v10 = sub_4D5840(&v16, 0); v11 = sub_54DE90(&unk_13253630, v10); if ( v11 ) { v12 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2060))(v11); v13 = sub_4D5720((void *)v9); sub_4D67A0(v13, v12); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoKillMe::sa_Step : No npc", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoKillMe::sa_Step : no Player", 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoKillMe::sa_Step", 0); } v14 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineWhoKillMe::sa_Step"); return v14; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F68E0) -------------------------------------------------------- __int16 __stdcall sub_4F68E0(int a1, int a2, int a3) { int v3; // eax@1 __int16 v4; // ax@1 __int16 v5; // si@1 char v7; // [sp+8h] [bp-74h]@1 unsigned int v8; // [sp+6Ch] [bp-10h]@1 int v9; // [sp+78h] [bp-4h]@1 int v10; // [sp+7Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ClearSaveLinkto::sa_Step"); dword_7508B8[dword_750CB8] = (int)"ClearSaveLinkto::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; memset(&v7, 0, 0x61u); v3 = sub_505CC0(*(_DWORD *)(a2 + 65816)); sub_4629F0((void *)v3, &v7); v4 = sub_4D6100(a2); --dword_750CB8; v5 = v4; v9 = -1; sub_467660((int)&unk_D020420, (int)"ClearSaveLinkto::sa_Step"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F69C0) -------------------------------------------------------- __int16 __thiscall sub_4F69C0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // ebx@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 void *v11; // eax@5 void *v12; // edi@5 void *v13; // eax@6 int v14; // eax@6 char v16; // [sp+14h] [bp-110h]@3 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 int v19; // [sp+124h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCChatNoFacecut::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineNPCChatNoFacecut::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineNPCChatNoFacecut : "); v8 = sub_4EB170(v4, (void *)a3); if ( v8 != 0 ) { sub_4D5720(&v16); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v18) = 1; if ( v10(&v16, a3) != 0 ) { v11 = sub_4D56C0(&dword_1321B748, (int)&v16); sub_4D56C0(v11, (int)&unk_1321B74C); v12 = *(void **)(a3 + 65840); if ( v12 ) { v13 = sub_5CF620(&v16); v14 = sub_48C200(v12, (const char *)v13); (*(void (__thiscall **)(int, signed int, int, unsigned int, _DWORD))(*(_DWORD *)v8 + 1328))( v8, 65535, v14, strlen((const char *)v14), 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCChatNoFacecut::sa_Step", 0); } v9 = sub_4D6100(a3); LOBYTE(v18) = 0; nullsub_2(&v16); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCChatNoFacecut::sa_Step : Null obj", 0); v9 = sub_4D6100(a3); } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCChatNoFacecut::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F6BA0) -------------------------------------------------------- __int16 __thiscall sub_4F6BA0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // ebx@5 int v9; // eax@13 __int16 v10; // si@14 int (__stdcall *v11)(_DWORD, _DWORD); // edx@15 __time32_t v12; // eax@16 int v13; // ecx@16 int v14; // eax@17 int v15; // edi@17 int v16; // ST04_4@17 void *v17; // eax@17 void *v18; // eax@17 void *v19; // eax@17 unsigned __int16 v20; // ax@17 void *v21; // eax@20 __time32_t v22; // eax@21 int v23; // eax@22 int v24; // esi@24 __time32_t v25; // eax@28 __time32_t v26; // eax@28 int v27; // eax@29 int v28; // edx@29 void *v29; // eax@31 __time32_t v30; // eax@31 int v31; // eax@39 int v33; // [sp-10h] [bp-240h]@27 int v34; // [sp-Ch] [bp-23Ch]@19 int v35; // [sp-Ch] [bp-23Ch]@27 int v36; // [sp-8h] [bp-238h]@19 int v37; // [sp-8h] [bp-238h]@27 signed int v38; // [sp+10h] [bp-220h]@22 int v39; // [sp+14h] [bp-21Ch]@22 int v40; // [sp+18h] [bp-218h]@23 char v41; // [sp+20h] [bp-210h]@15 char v42; // [sp+120h] [bp-110h]@3 unsigned int v43; // [sp+220h] [bp-10h]@1 int v44; // [sp+22Ch] [bp-4h]@1 int v45; // [sp+230h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ScinarioCodeParty::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ScinarioCodeParty::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v44 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ScinarioCodeParty"); if ( byte_7493ED ) { if ( byte_1321F114 ) { sprintf(&v42, "%.255s", "ScinarioCodeParty "); sub_418E40((__time32_t)byte_1321EE90); if ( dword_1321EF90 ) fputs(&v42, dword_1321EF90); } } v8 = sub_4EB170(v4, (void *)a3); if ( v8 ) { sub_4D5720(&v41); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v44) = 1; if ( v11(&v41, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ScinarioCodeParty::sa_Step : no code", 0); v12 = sub_418EA0((__time32_t)byte_1321EE90, (int)"Fail 1"); sub_418F20(v12, (int)&unk_13359E04); v13 = a3; LABEL_42: v10 = sub_4D6100(v13); LOBYTE(v44) = 0; nullsub_2(&v41); goto LABEL_43; } v14 = sub_4D5840(&v41, 0); v15 = v14; v16 = v14; v17 = sub_4D56C0(&dword_1321B748, (int)"["); v18 = sub_4D56C0(v17, v16); v19 = sub_4D56C0(v18, (int)"]"); sub_4D56C0(v19, (int)&unk_1321B74C); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1360))(v8); if ( v20 == -1 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2056))(v8) ) { v21 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2056))(v8); sub_5BB110(v21, v15); v36 = (int)&unk_13359E04; v34 = (int)"Suc-1"; } else { v36 = (int)&unk_13359E04; v34 = (int)"Fail 2-1"; } v22 = sub_418EA0((__time32_t)byte_1321EE90, v34); sub_418F20(v22, v36); goto LABEL_41; } v23 = sub_641CA0(&dword_DA230A4, v20); v39 = v23; v38 = 0; if ( !*(_BYTE *)v23 ) { LABEL_41: v13 = a3; goto LABEL_42; } v40 = v23 + 36; while ( 1 ) { v24 = *(_DWORD *)v40; if ( !*(_DWORD *)v40 || !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v24 + 2056))(*(_DWORD *)v40) ) { if ( byte_7493ED ) { if ( byte_1321F114 ) { sprintf(&v42, "%.255s", "Fail 2-2"); sub_418E40((__time32_t)byte_1321EE90); if ( dword_1321EF90 ) fputs(&v42, dword_1321EF90); } if ( byte_7493ED && byte_1321F114 && dword_1321EF90 ) { v31 = sub_418E40((__time32_t)byte_1321EE90); sub_654AB0(10, (FILE *)v31); fflush(dword_1321EF90); fclose(dword_1321EF90); dword_1321EF90 = 0; } } goto LABEL_40; } if ( *(_DWORD *)(v8 + 122) == *(_DWORD *)(v24 + 122) ) { v27 = sub_402710(v8, v24); v28 = *(_DWORD *)v24; if ( (unsigned int)v27 <= 0xF4240 ) { v29 = (void *)(*(int (__thiscall **)(int))(v28 + 2056))(v24); sub_5BB110(v29, v15); v30 = sub_418EA0((__time32_t)byte_1321EE90, (int)"Suc-2"); sub_418F20(v30, (int)&unk_13359E04); goto LABEL_40; } v37 = (int)&unk_13359E04; v35 = (*(int (__thiscall **)(int))(v28 + 836))(v24); v33 = (int)"Except/NotInRange "; } else { v37 = (int)&unk_13359E04; v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v24 + 836))(v24); v33 = (int)"Except/NotInMap "; } v25 = sub_418EA0((__time32_t)byte_1321EE90, v33); v26 = sub_43B910(v25, v35); sub_418F20(v26, v37); LABEL_40: v40 += 36; ++v38; if ( v38 >= *(_BYTE *)v39 ) goto LABEL_41; } } if ( byte_7493ED ) { if ( byte_1321F114 ) { sprintf(&v42, "%.255s", "Fail 0"); sub_418E40((__time32_t)byte_1321EE90); if ( dword_1321EF90 ) fputs(&v42, dword_1321EF90); } if ( byte_7493ED && byte_1321F114 && dword_1321EF90 ) { v9 = sub_418E40((__time32_t)byte_1321EE90); sub_654AB0(10, (FILE *)v9); fflush(dword_1321EF90); fclose(dword_1321EF90); dword_1321EF90 = 0; } } v10 = sub_4D6100(a3); LABEL_43: --dword_750CB8; v44 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ScinarioCodeParty::sa_Step"); return v10; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // DA230A4: using guessed type int dword_DA230A4; // 1321B748: using guessed type int dword_1321B748; // 1321F114: using guessed type char byte_1321F114; //----- (004F7080) -------------------------------------------------------- __int16 __thiscall sub_4F7080(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // esi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int (__stdcall *v10)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v11; // si@2 signed int v12; // esi@4 void *v13; // eax@11 void *v14; // eax@11 int v15; // eax@11 void *v16; // ecx@12 __int16 v17; // ax@13 void *v18; // ecx@13 __int16 v19; // ax@18 int v20; // esi@18 int v21; // eax@22 char v23; // [sp+10h] [bp-324h]@12 void *v24; // [sp+20h] [bp-314h]@1 char v25; // [sp+24h] [bp-310h]@3 char v26; // [sp+124h] [bp-210h]@1 char v27; // [sp+224h] [bp-110h]@11 unsigned int v28; // [sp+324h] [bp-10h]@1 int v29; // [sp+330h] [bp-4h]@1 int v30; // [sp+334h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v4 = (unsigned int)&v30 ^ __security_cookie; v5 = this; v24 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::BroadcastCode::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::BroadcastCode::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"BroadcastCode"); sub_4D56C0(v9, (int)&unk_1321B74C); sub_4D5720(&v26); v10 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v29) = 1; if ( v10(&v26, a3, v4) != 0 ) { memcpy(&v25, &v26, 0x100u); LOBYTE(v29) = 2; if ( sub_4D58C0(&v25, "ERR_NOERR_TIMEATK_START") ) { v12 = 8224; } else { if ( sub_4D58C0(&v25, "ERR_NOERR_TIMEATK_WARNING") ) { v12 = 8225; } else { if ( sub_4D58C0(&v25, "ERR_NOERR_TIMEATK_EXPLODE") ) { v12 = 8226; } else { if ( !sub_4D58C0(&v25, "ERR_NOERR_TIMEATK_WARNING_2") ) { v17 = sub_4D6100(a3); v18 = &v25; goto LABEL_25; } v12 = 8227; } } } LOBYTE(v29) = 1; nullsub_2(&v25); v13 = off_849C18; *(_WORD *)off_849C18 = 27652; *(_DWORD *)((char *)v13 + 2) = v12; sub_4D5720(&v27); LOBYTE(v29) = 3; v14 = sub_4D9320((int)((char *)v24 + 36), &v27, (void *)a3); v15 = sub_4D5730((unsigned int)v14); if ( sub_4D58C0((const char *)v15, (const char *)&unk_1321D008) ) { sub_4287B0(&v23, &off_849C18, 6); v16 = *(void **)(*(_DWORD *)(a3 + 65816) + 77292); LOBYTE(v29) = 4; if ( v16 ) { sub_549B60(v16, (int)&v23, 0); LOBYTE(v29) = 3; sub_428A70(&v23); v17 = sub_4D6100(a3); v18 = &v27; } else { sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v29) = 3; sub_428A70(&v23); v17 = sub_4D6100(a3); v18 = &v27; } goto LABEL_25; } if ( sub_4D58C0(&v27, (const char *)&unk_1321E590) ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v24 + 13) + 8))(&v27, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::BroadcastCode::sa_Step : no Player with handle", 0); v17 = sub_4D6100(a3); v18 = &v27; LABEL_25: v11 = v17; LOBYTE(v29) = 1; nullsub_2(v18); goto LABEL_26; } v19 = sub_4D5840(&v27, 0); v20 = sub_54DE90(&unk_13253630, v19); if ( !v20 ) { sub_4D5840(&v27, 0); v17 = sub_4D6100(a3); v18 = &v27; goto LABEL_25; } if ( !sub_4C81E0(&off_849C18, 6) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::BroadcastCode::sa_Step : Packet Too Long", 6); v17 = sub_4D6100(a3); v18 = &v27; goto LABEL_25; } v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 764))(v20); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v21 + 12))(v21, v20, &off_849C18); } v17 = sub_4D6100(a3); v18 = &v27; goto LABEL_25; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::BroadcastCode::sa_Step : no message", 0); v11 = sub_4D6100(a3); LABEL_26: LOBYTE(v29) = 0; nullsub_2(&v26); --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::BroadcastCode::sa_Step"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F7450) -------------------------------------------------------- __int16 __thiscall sub_4F7450(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // esi@1 signed int v6; // edi@1 int (__stdcall *v7)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v8; // si@2 int (__stdcall *v9)(_DWORD, _DWORD); // eax@3 int v10; // ecx@5 int v11; // esi@6 int v12; // eax@7 char v14; // [sp+14h] [bp-310h]@4 char v15; // [sp+114h] [bp-210h]@1 char v16; // [sp+214h] [bp-110h]@3 unsigned int v17; // [sp+314h] [bp-10h]@1 int v18; // [sp+320h] [bp-4h]@1 int v19; // [sp+324h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v4 = (unsigned int)&v19 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineSpawn::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineSpawn::sa_Step"; v6 = -1; dword_750AB8[dword_750CB8++] = -1; v18 = 0; sub_4D5720(&v15); v7 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v18) = 1; if ( v7(&v15, a3, v4) != 0 ) { sub_4D5720(&v16); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v18) = 2; if ( !v9(&v16, a3) ) { sub_4D57B0(&v14, byte_6A492E); memcpy(&v16, &v14, 0x100u); nullsub_2(&v14); v6 = -1; } v10 = *(_DWORD *)(a3 + 65816); if ( v10 ) { v11 = sub_505CC0(v10); if ( v11 ) { v12 = (int)sub_5CF620(&v15); sub_5071A0(*(void **)(v11 + 68), v12, &v16, v11); } } v8 = sub_4D6100(a3); LOBYTE(v18) = 1; nullsub_2(&v16); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSpawn::sa_Step : no script", 0); v8 = sub_4D6100(a3); } LOBYTE(v18) = 0; nullsub_2(&v15); --dword_750CB8; v18 = v6; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineSpawn::sa_Step"); return v8; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F7600) -------------------------------------------------------- __int16 __thiscall sub_4F7600(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // ebx@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@2 int v8; // eax@3 __int16 v9; // ax@5 int v10; // edi@5 int (__stdcall *v11)(_DWORD, _DWORD); // eax@7 int v12; // eax@9 char v14; // [sp+14h] [bp-210h]@7 char v15; // [sp+114h] [bp-110h]@1 unsigned int v16; // [sp+214h] [bp-10h]@1 int v17; // [sp+220h] [bp-4h]@1 int v18; // [sp+224h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = (unsigned int)&v18 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineHPSet::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineHPSet::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; sub_4D5720(&v15); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v17) = 1; if ( v6(&v15, a3, v4) != 0 ) { v8 = sub_4D93E0((int)((char *)v5 + 36), (void *)a3); if ( v8 ) { v9 = sub_4D5840((const char *)v8, 0); v10 = sub_54DDA0(&unk_13253630, v9); if ( v10 != 0 ) { sub_4D5720(&v14); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v17) = 2; if ( v11(&v14, a3) != 0 ) { v12 = sub_4D5840(&v14, 0); (*(void (__thiscall **)(int, int))(*(_DWORD *)v10 + 2732))(v10, v12); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineHPSet::sa_Step : no hp", 0); } v7 = sub_4D6100(a3); LOBYTE(v17) = 1; nullsub_2(&v14); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineHPSet::sa_Step : No Object", 0); v7 = sub_4D6100(a3); } LOBYTE(v17) = 0; nullsub_2(&v15); v17 = -1; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineHPSet::sa_Step", 0); v7 = sub_4D6100(a3); LOBYTE(v17) = 0; nullsub_2(&v15); v17 = -1; } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineSpawn::sa_Step : no script", 0); v7 = sub_4D6100(a3); LOBYTE(v17) = 0; nullsub_2(&v15); v17 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineHPSet::sa_Step"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F7810) -------------------------------------------------------- __int16 __thiscall sub_4F7810(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v10; // si@2 int (__stdcall *v11)(_DWORD, _DWORD); // edx@3 void *v12; // eax@5 signed int v13; // eax@5 int v14; // eax@7 int v15; // edi@9 int (__thiscall *v16)(_DWORD, _DWORD, _DWORD); // edx@9 int v17; // edi@11 int v18; // ecx@11 int v19; // eax@11 int v20; // ebx@11 int v21; // eax@14 int v22; // edi@14 int v23; // edi@16 int i; // ebx@17 int v25; // eax@19 __int16 v27; // [sp+10h] [bp-970h]@3 int v28; // [sp+14h] [bp-96Ch]@11 unsigned __int16 v29; // [sp+18h] [bp-968h]@5 int v30; // [sp+1Ch] [bp-964h]@13 int v31; // [sp+20h] [bp-960h]@11 char v32; // [sp+24h] [bp-95Ch]@11 char v33; // [sp+670h] [bp-310h]@9 char v34; // [sp+770h] [bp-210h]@1 char v35; // [sp+870h] [bp-110h]@3 unsigned int v36; // [sp+970h] [bp-10h]@1 int v37; // [sp+97Ch] [bp-4h]@1 int v38; // [sp+980h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v4 = (unsigned int)&v38 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineQuestMobkill::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineQuestMobkill::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineQuestMobkill : "); sub_4D5720(&v34); v9 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v37) = 1; if ( !v9(&v34, a3, v4) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineQuestMobkill::sa_Step : no quest", 0); v10 = sub_4D6100(a3); LABEL_27: LOBYTE(v37) = 0; nullsub_2(&v34); v37 = -1; goto LABEL_28; } v27 = sub_4D5840(&v34, 0); sub_4D5720(&v35); v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 13) + 8); LOBYTE(v37) = 2; if ( !v11(&v35, a3) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineQuestMobkill::sa_Step : no mob", 0); v10 = sub_4D6100(a3); LABEL_26: LOBYTE(v37) = 1; nullsub_2(&v35); goto LABEL_27; } v12 = sub_5CF620(&v35); v13 = sub_639620(&unk_14D16018, (unsigned __int8 *)v12); v29 = v13; if ( v13 != -1 && (_WORD)v13 != -1 ) { sub_4D5720(&v33); v15 = *((_DWORD *)v5 + 14); v16 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v15 + 8); LOBYTE(v37) = 3; if ( v16(v15, &v33, a3) ) { v17 = sub_4D5840(&v33, 0); sub_4C1110(&v32, 2, 0); v18 = *(_DWORD *)(a3 + 65816); LOBYTE(v37) = 4; sub_4E20B0(v18, (int)&v32); v19 = sub_4C0DC0((int)&v32); v20 = v19; v28 = v19; v31 = v19; if ( v19 > v17 ) v31 = v17; v30 = 0; if ( v19 > 0 ) { do { v21 = sub_4C0DD0((int)&v32, v30); v22 = v21; if ( v21 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v21 + 768))(v21) != 1 ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v22 + 2056))(v22); if ( v23 ) { for ( i = 0; i < v31; ++i ) { if ( v27 == -1 ) v25 = sub_5BE680(v23, v29); else v25 = sub_5BE4D0(v23, v27, v29); if ( !v25 ) break; } v20 = v28; } } } ++v30; } while ( v30 < v20 ); } v10 = sub_4D6100(a3); LOBYTE(v37) = 3; sub_4C11C0(&v32); LOBYTE(v37) = 2; nullsub_2(&v33); goto LABEL_26; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineQuestMobkill::sa_Step : no mob", 0); v10 = sub_4D6100(a3); LOBYTE(v37) = 2; nullsub_2(&v33); } else { v14 = (int)sub_5CF620(&v35); sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::ShineSummonMob::sa_Step : no mob", v14); v10 = sub_4D6100(a3); } LOBYTE(v37) = 1; nullsub_2(&v35); LOBYTE(v37) = 0; nullsub_2(&v34); v37 = -1; LABEL_28: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineQuestMobkill::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F7BB0) -------------------------------------------------------- int __cdecl sub_4F7BB0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"RegisterGTPortal", 0, 4, 4); *(_DWORD *)v1 = &off_6C7F14; result = v1; } return result; } // 6C7F14: using guessed type int (__stdcall *off_6C7F14)(int); //----- (004F7C20) -------------------------------------------------------- int __cdecl sub_4F7C20() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"SaveLinkto", 0, 4, 4); *(_DWORD *)v1 = &off_6C7F44; result = v1; } return result; } // 6C7F44: using guessed type int (__stdcall *off_6C7F44)(int); //----- (004F7C90) -------------------------------------------------------- int __cdecl sub_4F7C90() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"ClearSaveLinkto", 0, 0, 0); *(_DWORD *)v1 = &off_6C7F6C; result = v1; } return result; } // 6C7F6C: using guessed type int (__stdcall *off_6C7F6C)(int); //----- (004F7D00) -------------------------------------------------------- int __cdecl sub_4F7D00() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"NPCChatNoFacecut", 1, 1, 1); *(_DWORD *)v1 = &off_6C7F98; result = v1; } return result; } // 6C7F98: using guessed type int (__stdcall *off_6C7F98)(int); //----- (004F7D70) -------------------------------------------------------- int __cdecl sub_4F7D70() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"ScinarioCodeParty", 1, 1, 1); *(_DWORD *)v1 = &off_6C7FC8; result = v1; } return result; } // 6C7FC8: using guessed type int (__stdcall *off_6C7FC8)(int); //----- (004F7DE0) -------------------------------------------------------- int __cdecl sub_4F7DE0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"HasAbstate", 1, 3, 3); *(_DWORD *)v1 = &off_6C7FF8; result = v1; } return result; } // 6C7FF8: using guessed type int (__stdcall *off_6C7FF8)(int); //----- (004F7E50) -------------------------------------------------------- int __cdecl sub_4F7E50() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"BroadcastCode", 1, 1, 1); *(_DWORD *)v1 = &off_6C8020; result = v1; } return result; } // 6C8020: using guessed type int (__stdcall *off_6C8020)(int); //----- (004F7EC0) -------------------------------------------------------- int __cdecl sub_4F7EC0() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"GTRegisterNPC", 0, 2, 2); *(_DWORD *)v1 = &off_6C804C; result = v1; } return result; } // 6C804C: using guessed type int (__stdcall *off_6C804C)(int); //----- (004F7F30) -------------------------------------------------------- int __cdecl sub_4F7F30() { int v0; // eax@1 int v1; // esi@1 int v2; // ST18_4@1 int result; // eax@1 v0 = operator new(0xBCu); v1 = v0; v2 = v0; result = 0; if ( v2 ) { sub_4DA2C0(v1, (int)"GTMobRegenKey", 0, 3, 3); *(_DWORD *)v1 = &off_6C8078; result = v1; } return result; } // 6C8078: using guessed type int (__stdcall *off_6C8078)(int); //----- (004F7FB0) -------------------------------------------------------- void *__thiscall sub_4F7FB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7E00; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7E00: using guessed type int (__stdcall *off_6C7E00)(int); //----- (004F7FE0) -------------------------------------------------------- void *__thiscall sub_4F7FE0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7E1C; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7E1C: using guessed type int (__stdcall *off_6C7E1C)(int); //----- (004F8010) -------------------------------------------------------- void *__thiscall sub_4F8010(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6C7E70; sub_4DA3A0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6C7E70: using guessed type int (__stdcall *off_6C7E70)(int); //----- (004F8040) -------------------------------------------------------- __int16 __stdcall sub_4F8040(int a1, int a2, int a3) { void *v3; // eax@1 void *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 int v7; // ecx@1 __int16 v8; // ax@1 __int16 v9; // si@1 int (__stdcall **v11)(int, int); // [sp+8h] [bp-18h]@1 int v12; // [sp+Ch] [bp-14h]@1 int v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@1 v13 = (int)"PineEventScriptNode::ShineInterruptClear::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineInterruptClear::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineInterruptClear::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v3 = sub_4D56C0(&dword_1321B748, (int)"["); v4 = sub_4D56C0(v3, a1); v5 = sub_4D56C0(v4, (int)"]"); v6 = sub_4D56C0(v5, (int)"InterruptClear"); sub_4D56C0(v6, (int)&unk_1321B74C); v7 = *(_DWORD *)(a2 + 65816) + 66124; v11 = &off_6CADC0; v12 = v7; LOBYTE(v14) = 1; sub_43C470(v7, (int)&v11); LOBYTE(v14) = 0; v11 = &off_6C7EC4; v8 = sub_4D6100(a2); --dword_750CB8; v9 = v8; v14 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineInterruptClear::sa_Step"); return v9; } // 6C7EC4: using guessed type int (__stdcall *off_6C7EC4)(int, int); // 6CADC0: using guessed type int (__stdcall *off_6CADC0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004F8150) -------------------------------------------------------- signed int __thiscall sub_4F8150(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { void *v7; // edi@1 int (__stdcall *v9)(_DWORD, _DWORD); // edx@4 void *v10; // eax@6 signed int v11; // eax@6 void *v12; // eax@11 int (__stdcall *v13)(_DWORD, _DWORD); // edx@11 int v14; // eax@15 int v15; // ecx@15 int v16; // eax@17 int (__stdcall *v17)(_DWORD, _DWORD); // edx@17 int v18; // eax@19 int v19; // ecx@19 int (__stdcall *v20)(_DWORD, _DWORD); // edx@21 int v21; // ecx@24 int v22; // eax@28 int v23; // ecx@29 char v24; // al@31 int v25; // eax@34 void *v26; // eax@38 int v27; // [sp-Ch] [bp-560h]@22 int v28; // [sp-8h] [bp-55Ch]@12 int v29; // [sp-8h] [bp-55Ch]@22 unsigned int v30; // [sp-4h] [bp-558h]@1 int v31; // [sp+18h] [bp-53Ch]@1 int v32; // [sp+1Ch] [bp-538h]@31 int v33; // [sp+20h] [bp-534h]@32 void *v34; // [sp+24h] [bp-530h]@9 int v35; // [sp+28h] [bp-52Ch]@15 int v36; // [sp+2Ch] [bp-528h]@7 int v37; // [sp+30h] [bp-524h]@17 int v38; // [sp+34h] [bp-520h]@21 char v39; // [sp+38h] [bp-51Ch]@28 char v40; // [sp+238h] [bp-31Ch]@21 char v41; // [sp+338h] [bp-21Ch]@4 char v42; // [sp+438h] [bp-11Ch]@11 char v43[4]; // [sp+538h] [bp-1Ch]@24 int v44; // [sp+53Ch] [bp-18h]@24 int v45; // [sp+540h] [bp-14h]@24 unsigned int v46; // [sp+544h] [bp-10h]@1 int v47; // [sp+550h] [bp-4h]@1 int v48; // [sp+554h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v30 = (unsigned int)&v48 ^ __security_cookie; v7 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen"; dword_750AB8[dword_750CB8++] = -1; v47 = 0; v31 = sub_4D93E0((int)((char *)v7 + 36), (void *)a3); if ( v31 == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen", 0); LABEL_3: --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen"); return 0; } sub_4D5720(&v41); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v7 + 12) + 8); LOBYTE(v47) = 1; if ( v9(&v41, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen", 0); LOBYTE(v47) = 0; nullsub_2(&v41); goto LABEL_3; } v10 = sub_5CF620(&v41); v11 = sub_639620(&unk_14D16018, (unsigned __int8 *)v10); if ( v11 == -1 ) v36 = 65535; else v36 = (unsigned __int16)v11; v34 = sub_5CF620(&v41); if ( (_WORD)v36 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Invalid mob", (int)v34); LOBYTE(v47) = 0; nullsub_2(&v41); goto LABEL_3; } v12 = sub_4D56C0(&dword_1321B748, (int)&v41); sub_4D56C0(v12, (int)&unk_1321B74C); sub_4D5720(&v42); v13 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v7 + 13) + 8); LOBYTE(v47) = 2; if ( v13(&v42, a3) == 0 ) { v28 = 1; LABEL_13: sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen", v28); LABEL_14: LOBYTE(v47) = 1; nullsub_2(&v42); LOBYTE(v47) = 0; nullsub_2(&v41); goto LABEL_3; } v14 = sub_4D5840(&v42, 0); v15 = *((_DWORD *)v7 + 14); v35 = v14; if ( (*(int (__stdcall **)(char *, int))(*(_DWORD *)v15 + 8))(&v42, a3) == 0 ) { v28 = 2; goto LABEL_13; } v16 = sub_4D5840(&v42, 0); v17 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v7 + 15) + 8); v37 = v16; if ( v17(&v42, a3) == 0 ) { v28 = 3; goto LABEL_13; } v18 = sub_4D5840(&v42, 0); v19 = *((_DWORD *)v7 + 16); v34 = (void *)v18; if ( (*(int (__stdcall **)(char *, int))(*(_DWORD *)v19 + 8))(&v42, a3) == 0 ) { v28 = 4; goto LABEL_13; } v38 = sub_4D5840(&v42, 0); sub_4D5720(&v40); v20 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v7 + 17) + 8); LOBYTE(v47) = 3; if ( v20(&v40, a3) == 0 ) { v29 = 5; v27 = (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen"; LABEL_23: sub_639100(&unk_86DDD8, v27, v29); LOBYTE(v47) = 2; nullsub_2(&v40); goto LABEL_14; } v21 = *(_DWORD *)(a3 + 65816); v45 = 0; v44 = 0; *(_DWORD *)v43 = 0; if ( sub_4E2490(v21, v43) == 0 ) { v29 = 0; v27 = (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Not map name"; goto LABEL_23; } if ( !v35 || !v37 ) { sub_465590((int)&v39, (int)v43); LOBYTE(v47) = 4; v22 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v37, (int)&v39); if ( !v22 ) { LOBYTE(v47) = 3; v23 = (int)&v39; LABEL_30: sub_4646E0(v23); LOBYTE(v47) = 2; nullsub_2(&v40); goto LABEL_14; } v24 = sub_438450(*(_DWORD *)(*(_DWORD *)(v22 + 20) + 1068), (int)&v32); LOBYTE(v47) = 3; v23 = (int)&v39; if ( !v24 ) goto LABEL_30; v35 = v32; v37 = v33; sub_4646E0((int)&v39); } if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)a5 + 1232))(a5, v30) == 7 ) v25 = (*(int (__thiscall **)(int, char *, int, int, void *, int, int))(*(_DWORD *)a5 + 1756))( a5, v43, v35, v37, v34, a6, v36); else v25 = (*(int (__thiscall **)(int, char *, int, int, void *, int, int, int, signed int, _DWORD, _DWORD, signed int))(*(_DWORD *)a5 + 1760))( a5, v43, v35, v37, v34, a6, v36, a7, -1, 0, 0, -1); if ( v25 != 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Marking fail", v25); sub_555DF0(&unk_13253630, a6, 0, 22); LOBYTE(v47) = 2; nullsub_2(&v40); goto LABEL_14; } v26 = sub_4D5720((void *)v31); sub_4D67A0(v26, (unsigned __int16)a6); LOBYTE(v47) = 2; nullsub_2(&v40); LOBYTE(v47) = 1; nullsub_2(&v42); LOBYTE(v47) = 0; nullsub_2(&v41); --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F8680) -------------------------------------------------------- __int16 __thiscall sub_4F8680(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int (__stdcall *v9)(_DWORD, _DWORD); // edx@2 __int16 v10; // si@3 __int16 v11; // ax@5 int v12; // eax@5 int v13; // eax@6 int v14; // eax@9 void *v16; // [sp+10h] [bp-310h]@1 int v17; // [sp+14h] [bp-30Ch]@9 int v18; // [sp+18h] [bp-308h]@1 int v19; // [sp+1Ch] [bp-304h]@5 unsigned __int8 v20; // [sp+23h] [bp-2FDh]@1 char v21; // [sp+24h] [bp-2FCh]@4 char v22; // [sp+124h] [bp-1FCh]@2 char v23; // [sp+224h] [bp-FCh]@1 int v24; // [sp+226h] [bp-FAh]@1 int v25; // [sp+22Ah] [bp-F6h]@1 int v26; // [sp+22Eh] [bp-F2h]@1 int v27; // [sp+232h] [bp-EEh]@1 int v28; // [sp+236h] [bp-EAh]@1 __int16 v29; // [sp+30Ch] [bp-14h]@6 char v30; // [sp+30Eh] [bp-12h]@6 unsigned int v31; // [sp+310h] [bp-10h]@1 int v32; // [sp+31Ch] [bp-4h]@1 int v33; // [sp+320h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v4 = this; v16 = this; v18 = a2; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobRegen::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMobRegen::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v32 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, v18); v8 = sub_4D56C0(v7, (int)"]"); sub_4D56C0(v8, (int)"ShineMobRegen : "); v20 = 5; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; sub_4EAB60((int)&v23); if ( !*((_DWORD *)v4 + 18) ) goto LABEL_9; sub_4D5720(&v22); v9 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 18) + 8); LOBYTE(v32) = 1; if ( v9(&v22, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMobRegen::sa_Step", 4); v10 = sub_4D6100(a3); LOBYTE(v32) = 0; nullsub_2(&v22); goto LABEL_14; } sub_4D5730((unsigned int)&v22); memcpy(&v21, &v22, 0x100u); LOBYTE(v32) = 2; if ( sub_4D58C0(&v21, (const char *)&unk_1321E790) ) goto LABEL_7; v11 = sub_4D5840(&v22, 0); v12 = sub_54DE90(&unk_13253630, v11); v19 = v12; if ( v12 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1744))(v12); memcpy(&v23, (const void *)v13, 0xE8u); v29 = *(_WORD *)(v13 + 232); v30 = *(_BYTE *)(v13 + 234); (*(void (__stdcall **)(char *))(*(_DWORD *)v19 + 3332))(&v23); LABEL_7: v20 = 8; } LOBYTE(v32) = 1; nullsub_2(&v21); LOBYTE(v32) = 0; nullsub_2(&v22); v4 = v16; v5 = 0; LABEL_9: v14 = sub_54DF90(&unk_13253630, (int)&v17, v20); if ( (v14 != v5) == v5 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMobRegen::sa_Step : Too many mob", v5); } else { if ( (unsigned __int16)sub_4F8150(v4, v18, a3, a4, v14, v17, (int)&v23) == (_WORD)v5 ) sub_555DF0(&unk_13253630, v17, v5, 22); } v10 = sub_4D6100(a3); LABEL_14: --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobRegen::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F8950) -------------------------------------------------------- __int16 __thiscall sub_4F8950(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 __int16 v9; // ax@2 __int16 v10; // di@2 __int16 result; // ax@2 __int16 v12; // ax@5 __int16 v13; // si@5 int v14; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorBuild::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineDoorBuild::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineDoorBuild : "); v8 = sub_54DF90(&unk_13253630, (int)&v14, 7); if ( v8 ) { if ( !(unsigned __int16)sub_4F8150(v4, a2, a3, a4, v8, v14, 0) ) sub_555DF0(&unk_13253630, v14, 0, 23); v12 = sub_4D6100(a3); --dword_750CB8; v13 = v12; v15 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorBuild::sa_Step"); result = v13; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDoorBuild::sa_Step : Too many mob", 0); v9 = sub_4D6100(a3); --dword_750CB8; v10 = v9; v15 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDoorBuild::sa_Step"); result = v10; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004F8AC0) -------------------------------------------------------- __int16 __thiscall sub_4F8AC0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 __int16 v9; // ax@2 __int16 v10; // di@2 __int16 result; // ax@2 __int16 v12; // ax@5 __int16 v13; // si@5 int v14; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCStand::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineNPCStand::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); sub_4D56C0(v7, (int)"ShineNPCStand : "); v8 = sub_54DF90(&unk_13253630, (int)&v14, 4); if ( v8 ) { if ( !(unsigned __int16)sub_4F8150(v4, a2, a3, a4, v8, v14, 0) ) sub_555DF0(&unk_13253630, v14, 0, 24); v12 = sub_4D6100(a3); --dword_750CB8; v13 = v12; v15 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCStand::sa_Step"); result = v13; } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineNPCStand::sa_Step : Too many mob", 0); v9 = sub_4D6100(a3); --dword_750CB8; v10 = v9; v15 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineNPCStand::sa_Step"); result = v10; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1321B748: using guessed type int dword_1321B748; //----- (004F8C30) -------------------------------------------------------- __int16 __thiscall sub_4F8C30(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 __int16 v9; // si@2 int (__stdcall *v10)(_DWORD, _DWORD); // edx@3 void *v11; // eax@5 int v12; // eax@5 void *v13; // eax@8 int v14; // eax@8 int v15; // eax@14 int v16; // ST10_4@16 void *v17; // eax@16 int v19; // [sp+10h] [bp-33Ch]@1 char v20; // [sp+14h] [bp-338h]@8 int v21; // [sp+18h] [bp-334h]@1 char v22; // [sp+1Ch] [bp-330h]@8 char v23; // [sp+21Ch] [bp-130h]@3 char v24[4]; // [sp+31Ch] [bp-30h]@5 int v25; // [sp+320h] [bp-2Ch]@5 int v26; // [sp+324h] [bp-28h]@5 int v27; // [sp+328h] [bp-24h]@5 int v28; // [sp+32Ch] [bp-20h]@5 char v29[4]; // [sp+330h] [bp-1Ch]@8 int v30; // [sp+334h] [bp-18h]@8 int v31; // [sp+338h] [bp-14h]@8 unsigned int v32; // [sp+33Ch] [bp-10h]@1 int v33; // [sp+348h] [bp-4h]@1 int v34; // [sp+34Ch] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v4 = this; v21 = a2; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineFindPlayer::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineFindPlayer::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v33 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, v21); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"ShineFindHandle"); sub_4D56C0(v8, (int)&unk_1321B74C); v19 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v19 != 0 ) { sub_4D5720(&v23); v10 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v33) = 1; if ( v10(&v23, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindPlayer::sa_Step : no part", 0); LABEL_17: v9 = sub_4D6100(a3); LOBYTE(v33) = 0; nullsub_2(&v23); goto LABEL_18; } v11 = sub_5CF620(&v23); v28 = 0; v27 = 0; v26 = 0; v25 = 0; *(_DWORD *)v24 = 0; strncpy(v24, (const char *)v11, 0x14u); v12 = sub_54E5A0(&unk_13253630, (int)v24); v21 = v12; if ( *((_DWORD *)v4 + 13) ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v23, a3) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindPlayer::sa_Step : no area", 0); goto LABEL_17; } v13 = sub_5CF620(&v23); v31 = 0; v30 = 0; *(_DWORD *)v29 = 0; strncpy(v29, (const char *)v13, 0xCu); sub_465590((int)&v22, (int)v29); LOBYTE(v33) = 2; v14 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v20, (int)&v22); if ( !v14 || !v21 || v14 != *(_DWORD *)(v21 + 122) ) v21 = 0; LOBYTE(v33) = 1; sub_4646E0((int)&v22); v12 = v21; } if ( v12 ) v15 = *(_WORD *)(v12 + 4); else v15 = 0; v16 = v15; v17 = sub_4D5720((void *)v19); sub_4D67A0(v17, v16); goto LABEL_17; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineFindHandle::sa_Step", 0); v9 = sub_4D6100(a3); LABEL_18: --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineFindPlayer::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F8ED0) -------------------------------------------------------- __int16 __thiscall sub_4F8ED0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST10_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@2 void *v8; // eax@3 void *v9; // eax@4 void *v10; // eax@6 int v11; // eax@8 int v12; // ecx@8 int v13; // edi@10 int v14; // eax@10 int v15; // ecx@12 char v17; // [sp+10h] [bp-380h]@10 int v18; // [sp+14h] [bp-37Ch]@8 char v19; // [sp+18h] [bp-378h]@10 char v20; // [sp+218h] [bp-178h]@1 char v21; // [sp+318h] [bp-78h]@12 char v22[4]; // [sp+348h] [bp-48h]@4 int v23; // [sp+34Ch] [bp-44h]@4 int v24; // [sp+350h] [bp-40h]@4 int v25; // [sp+354h] [bp-3Ch]@4 int v26; // [sp+358h] [bp-38h]@4 int v27; // [sp+35Ch] [bp-34h]@4 int v28; // [sp+360h] [bp-30h]@4 int v29; // [sp+364h] [bp-2Ch]@4 char v30[4]; // [sp+368h] [bp-28h]@3 int v31; // [sp+36Ch] [bp-24h]@3 int v32; // [sp+370h] [bp-20h]@3 char v33[4]; // [sp+374h] [bp-1Ch]@6 int v34; // [sp+378h] [bp-18h]@6 int v35; // [sp+37Ch] [bp-14h]@6 unsigned int v36; // [sp+380h] [bp-10h]@1 int v37; // [sp+38Ch] [bp-4h]@1 int v38; // [sp+390h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v4 = (unsigned int)&v38 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineBanFromArea::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineBanFromArea::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; sub_4D5720(&v20); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v37) = 1; if ( v6(&v20, a3, v4) == 0 || (v8 = sub_5CF620(&v20), v32 = 0, v31 = 0, *(_DWORD *)v30 = 0, strncpy(v30, (const char *)v8, 0xCu), (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v20, a3) == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBanFromArea::sa_Step : no area", 0); v7 = sub_4D6100(a3); } else { v9 = sub_5CF620(&v20); v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; v23 = 0; *(_DWORD *)v22 = 0; strncpy(v22, (const char *)v9, 0x20u); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 14) + 8))(&v20, a3) != 0 ) { v10 = sub_5CF620(&v20); v35 = 0; v34 = 0; *(_DWORD *)v33 = 0; strncpy(v33, (const char *)v10, 0xCu); if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 15) + 8))(&v20, a3) != 0 ) { v11 = sub_4D5840(&v20, 0); v12 = *((_DWORD *)v5 + 16); v18 = v11; if ( (*(int (__stdcall **)(char *, int))(*(_DWORD *)v12 + 8))(&v20, a3) != 0 ) { v13 = sub_4D5840(&v20, 0); sub_465590((int)&v19, (int)v30); LOBYTE(v37) = 2; v14 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v17, (int)&v19); if ( v14 ) { sub_429E70((int)&v21, (int)v22, v14, (int)v33, v18, v13); v15 = *(_DWORD *)(a3 + 65816); LOBYTE(v37) = 3; sub_4E20B0(v15, (int)&v21); sub_429CE0((int)&v21); v7 = sub_4D6100(a3); LOBYTE(v37) = 2; sub_429EF0((int)&v21); } else { v7 = sub_4D6100(a3); } LOBYTE(v37) = 1; sub_4646E0((int)&v19); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBanFromArea::sa_Step : no Y", 3); v7 = sub_4D6100(a3); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBanFromArea::sa_Step : no X", 2); v7 = sub_4D6100(a3); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineBanFromArea::sa_Step : no map", 1); v7 = sub_4D6100(a3); } } LOBYTE(v37) = 0; nullsub_2(&v20); --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineBanFromArea::sa_Step"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F91D0) -------------------------------------------------------- __int16 __thiscall sub_4F91D0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@2 int v8; // eax@3 int v9; // ecx@3 int v10; // edi@3 int v12; // eax@9 int (__stdcall **v13)(int, int); // [sp+10h] [bp-338h]@6 int v14; // [sp+14h] [bp-334h]@6 int (__thiscall *v15)(int, int, int, int); // [sp+18h] [bp-330h]@6 char *v16; // [sp+1Ch] [bp-32Ch]@6 void *v17; // [sp+20h] [bp-328h]@6 __int16 v18; // [sp+24h] [bp-324h]@6 void *v19; // [sp+28h] [bp-320h]@6 char v20; // [sp+2Ch] [bp-31Ch]@6 char v21; // [sp+22Ch] [bp-11Ch]@1 char v22[4]; // [sp+32Ch] [bp-1Ch]@3 int v23; // [sp+330h] [bp-18h]@3 int v24; // [sp+334h] [bp-14h]@3 unsigned int v25; // [sp+338h] [bp-10h]@1 int v26; // [sp+344h] [bp-4h]@1 int v27; // [sp+348h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v4 = (unsigned int)&v27 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineDiceGameStart::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineDiceGameStart::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; sub_4D5720(&v21); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v26) = 1; if ( v6(&v21, a3, v4) != 0 ) { v8 = sub_4D5840(&v21, 0); v9 = *(_DWORD *)(a3 + 65816); v10 = v8; v24 = 0; v23 = 0; *(_DWORD *)v22 = 0; if ( sub_4E2490(v9, v22) != 0 ) { sub_465590((int)&v20, (int)v22); v13 = &off_6A4700; v14 = (int)&unk_CFCF380; v15 = sub_4521E0; v16 = &v20; v17 = 0; v18 = -1; LOBYTE(v26) = 3; sub_43C470((int)&unk_CFCF380, (int)&v13); LOBYTE(v26) = 2; v13 = &off_6A2544; v19 = v17; if ( v17 && sub_4627E0(v17) ) { v12 = sub_4627E0(v19); sub_479E30(v12, 10 * v10); v7 = sub_4D6100(a3); LOBYTE(v26) = 1; sub_4646E0((int)&v20); goto LABEL_10; } LOBYTE(v26) = 1; sub_4646E0((int)&v20); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDiceGameStart::sa_Step : Not map name", 0); } LOBYTE(v26) = 0; nullsub_2(&v21); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDiceGameStart::sa_Step"); return 0; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineDiceGameStart::sa_Step : no Object", 0); v7 = sub_4D6100(a3); LABEL_10: LOBYTE(v26) = 0; nullsub_2(&v21); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineDiceGameStart::sa_Step"); return v7; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F9410) -------------------------------------------------------- __int16 __thiscall sub_4F9410(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // ebx@1 __int16 v10; // si@2 void *v11; // eax@3 int (__stdcall *v12)(_DWORD, _DWORD); // edx@3 __int16 v13; // ax@5 int v14; // eax@5 void *v15; // eax@10 int v16; // eax@11 void *v17; // eax@12 int v18; // eax@12 void *v19; // eax@15 int v21; // [sp-8h] [bp-134h]@8 int v22; // [sp+10h] [bp-11Ch]@10 int v23; // [sp+14h] [bp-118h]@5 int v24; // [sp+18h] [bp-114h]@12 char v25; // [sp+1Ch] [bp-110h]@3 unsigned int v26; // [sp+11Ch] [bp-10h]@1 int v27; // [sp+128h] [bp-4h]@1 int v28; // [sp+12Ch] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::HasAbstate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::HasAbstate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; v5 = sub_4D56C0(&dword_1321B748, (int)"["); v6 = sub_4D56C0(v5, a2); v7 = sub_4D56C0(v6, (int)"]"); v8 = sub_4D56C0(v7, (int)"HasAbstate"); sub_4D56C0(v8, (int)&unk_1321B74C); v9 = sub_4D93E0((int)((char *)v4 + 36), (void *)a3); if ( v9 != 0 ) { v11 = sub_4D5720((void *)v9); sub_4D67A0(v11, 0); sub_4D5720(&v25); v12 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 12) + 8); LOBYTE(v27) = 1; if ( v12(&v25, a3) != 0 ) { v13 = sub_4D5840(&v25, 0); v14 = sub_54DE90(&unk_13253630, v13); v23 = v14; if ( v14 != 0 ) { if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v4 + 13) + 8))(&v25, a3) != 0 ) { v15 = sub_5CF620(&v25); v22 = sub_639620(&byte_878354, (unsigned __int8 *)v15); if ( v22 == -1 ) goto LABEL_16; v16 = (*(int (__thiscall **)(_DWORD, char *, int))(**((_DWORD **)v4 + 14) + 8))( *((_DWORD *)v4 + 14), &v25, a3); v21 = 0; if ( v16 != 0 ) { v24 = sub_4D5840(&v25, 0); v17 = (void *)(*(int (**)(void))(*(_DWORD *)v23 + 1324))(); v18 = sub_409A00(v17, v22); if ( v18 && *(_DWORD *)(v18 + 4) == v22 && *(_BYTE *)(v18 + 24) == v24 ) { v19 = sub_4D5720((void *)v9); sub_4D67A0(v19, 1); } goto LABEL_16; } } else { v21 = 0; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::HasAbstate::sa_Step : no skip", v21); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::HasAbstate::sa_Step : No obj", v14 != 0); } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineWhoClickMe::sa_Step : no Player", 0); } LABEL_16: v10 = sub_4D6100(a3); LOBYTE(v27) = 0; nullsub_2(&v25); goto LABEL_17; } sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::HasAbstate::sa_Step", 0); v10 = sub_4D6100(a3); LABEL_17: --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::HasAbstate::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004F96B0) -------------------------------------------------------- __int16 __thiscall sub_4F96B0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // ecx@4 int v7; // eax@6 int v8; // edi@6 __int16 v9; // si@8 char v10; // [sp+10h] [bp-350h]@6 int v11; // [sp+14h] [bp-34Ch]@2 int v12; // [sp+18h] [bp-348h]@1 char v13; // [sp+1Ch] [bp-344h]@6 char v14; // [sp+21Ch] [bp-144h]@1 char v15[4]; // [sp+344h] [bp-1Ch]@4 int v16; // [sp+348h] [bp-18h]@4 int v17; // [sp+34Ch] [bp-14h]@4 unsigned int v18; // [sp+350h] [bp-10h]@1 int v19; // [sp+35Ch] [bp-4h]@1 int v20; // [sp+360h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"GTRegisterNPC::sa_Step"); dword_7508B8[dword_750CB8] = (int)"GTRegisterNPC::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; sub_4DCAD0((int)&v14, (int)((char *)v4 + 48), a3); LOBYTE(v19) = 1; sub_4E1800(&v14, "GTMobRegenKey::sa_Step"); if ( sub_4E1990(&v14, 0, (int)&v12) && sub_4E1C00(&v14, 1, (int)&v11) && v12 ) { v5 = *(_DWORD *)(a3 + 65816); v17 = 0; v16 = 0; *(_DWORD *)v15 = 0; if ( sub_4E2490(v5, v15) == 0 ) { sub_639100(&unk_86DDD8, (int)"GTRegisterNPC : Not map name", 0); LOBYTE(v19) = 0; sub_4DCB00((int)&v14); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"GTRegisterNPC::sa_Step"); return 0; } sub_465590((int)&v13, (int)v15); LOBYTE(v19) = 2; v7 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v10, (int)&v13); v8 = sub_4627E0((void *)v7); if ( v8 ) { (*(void (__stdcall **)(int))(*(_DWORD *)v12 + 2304))(v11); sub_47B790((void *)v8, *(_WORD *)(v12 + 4)); } v9 = sub_4D6100(a3); LOBYTE(v19) = 1; sub_4646E0((int)&v13); LOBYTE(v19) = 0; sub_4DCB00((int)&v14); --dword_750CB8; } else { v9 = sub_4D6100(a3); LOBYTE(v19) = 0; sub_4DCB00((int)&v14); --dword_750CB8; } v19 = -1; sub_467660((int)&unk_D020420, (int)"GTRegisterNPC::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F98E0) -------------------------------------------------------- __int16 __thiscall sub_4F98E0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@5 int v6; // eax@5 int v7; // eax@5 char *v8; // edx@6 char *v9; // ecx@8 __int16 v10; // si@11 void *v12; // [sp-8h] [bp-394h]@15 unsigned int v13; // [sp-4h] [bp-390h]@1 int v14; // [sp+10h] [bp-37Ch]@2 char v15; // [sp+14h] [bp-378h]@5 int v16; // [sp+18h] [bp-374h]@1 char v17; // [sp+1Ch] [bp-370h]@5 char v18; // [sp+21Ch] [bp-170h]@1 void *v19; // [sp+344h] [bp-48h]@1 int v20; // [sp+354h] [bp-38h]@1 unsigned int v21; // [sp+358h] [bp-34h]@1 void *v22; // [sp+360h] [bp-2Ch]@1 int v23; // [sp+370h] [bp-1Ch]@1 unsigned int v24; // [sp+374h] [bp-18h]@1 unsigned int v25; // [sp+37Ch] [bp-10h]@1 int v26; // [sp+388h] [bp-4h]@1 int v27; // [sp+38Ch] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v13 = (unsigned int)&v27 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"RegisterGTPortal::sa_Step"); dword_7508B8[dword_750CB8] = (int)"RegisterGTPortal::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; sub_4DCAD0((int)&v18, (int)((char *)v4 + 48), a3); LOBYTE(v26) = 1; sub_4E1800(&v18, "RegisterGTPortal::sa_Step"); v21 = 15; v20 = 0; LOBYTE(v19) = 0; v24 = 15; v23 = 0; LOBYTE(v22) = 0; LOBYTE(v26) = 3; if ( !sub_4E1990(&v18, 0, (int)&v16) || !sub_4E1C00(&v18, 1, (int)&v14) ) { v10 = sub_4D6100(a3); if ( v24 >= 0x10 ) operator delete(v22); v24 = 15; v23 = 0; LOBYTE(v22) = 0; if ( v21 < 0x10 ) goto LABEL_21; v12 = v19; goto LABEL_20; } if ( !sub_4E1E50(&v18, 2, (int)&v19) || !sub_4E1E50(&v18, 3, (int)&v22) ) { v10 = sub_4D6100(a3); if ( v24 >= 0x10 ) operator delete(v22); v24 = 15; v23 = 0; LOBYTE(v22) = 0; if ( v21 < 0x10 ) goto LABEL_21; v12 = v19; LABEL_20: operator delete(v12); LABEL_21: LOBYTE(v19) = 0; v20 = 0; v21 = 15; goto LABEL_22; } v5 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v16 + 1212))(v13); sub_465590((int)&v17, v5); LOBYTE(v26) = 4; v6 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v15, (int)&v17); v7 = sub_4627E0((void *)v6); if ( v7 ) { v8 = (char *)v22; if ( v24 < 0x10 ) v8 = (char *)&v22; v9 = (char *)v19; if ( v21 < 0x10 ) v9 = (char *)&v19; sub_47BD80(v7, v16, v14, v9, v8); } v10 = sub_4D6100(a3); LOBYTE(v26) = 3; sub_4646E0((int)&v17); sub_610240((int)&v22); sub_610240((int)&v19); LABEL_22: LOBYTE(v26) = 0; sub_4DCB00((int)&v18); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"RegisterGTPortal::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F9B60) -------------------------------------------------------- __int16 __thiscall sub_4F9B60(void *this, int a2, int a3, int a4) { void *v4; // edi@1 const char *v5; // eax@5 const char *v6; // eax@7 int v7; // ecx@9 int v8; // eax@9 __int16 v9; // si@9 void *v11; // [sp-8h] [bp-1F4h]@13 int v12; // [sp+10h] [bp-1DCh]@4 int v13; // [sp+14h] [bp-1D8h]@3 char v14; // [sp+18h] [bp-1D4h]@1 char v15; // [sp+140h] [bp-ACh]@5 char v16; // [sp+154h] [bp-98h]@7 char v17; // [sp+175h] [bp-77h]@9 int v18; // [sp+196h] [bp-56h]@9 int v19; // [sp+19Ah] [bp-52h]@9 char *v20; // [sp+1A4h] [bp-48h]@1 int v21; // [sp+1B4h] [bp-38h]@1 unsigned int v22; // [sp+1B8h] [bp-34h]@1 char *v23; // [sp+1C0h] [bp-2Ch]@1 int v24; // [sp+1D0h] [bp-1Ch]@1 unsigned int v25; // [sp+1D4h] [bp-18h]@1 unsigned int v26; // [sp+1DCh] [bp-10h]@1 int v27; // [sp+1E8h] [bp-4h]@1 int v28; // [sp+1ECh] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"SaveLinkto::sa_Step"); dword_7508B8[dword_750CB8] = (int)"SaveLinkto::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; sub_4DCAD0((int)&v14, (int)((char *)v4 + 48), a3); LOBYTE(v27) = 1; sub_4E1800(&v14, "SaveLinkto::sa_Step"); v22 = 15; v21 = 0; LOBYTE(v20) = 0; v25 = 15; v24 = 0; LOBYTE(v23) = 0; LOBYTE(v27) = 3; if ( !sub_4E1E50(&v14, 0, (int)&v20) || !sub_4E1E50(&v14, 1, (int)&v23) ) { v9 = sub_4D6100(a3); if ( v25 >= 0x10 ) operator delete(v23); v25 = 15; v24 = 0; LOBYTE(v23) = 0; if ( v22 < 0x10 ) goto LABEL_19; v11 = v20; goto LABEL_18; } if ( !sub_4E1C00(&v14, 2, (int)&v13) || !sub_4E1C00(&v14, 3, (int)&v12) ) { v9 = sub_4D6100(a3); if ( v25 >= 0x10 ) operator delete(v23); v25 = 15; v24 = 0; LOBYTE(v23) = 0; if ( v22 < 0x10 ) goto LABEL_19; v11 = v20; LABEL_18: operator delete(v11); LABEL_19: LOBYTE(v20) = 0; v21 = 0; v22 = 15; goto LABEL_20; } memset(&v15, 0, 0x61u); v5 = v20; if ( v22 < 0x10 ) v5 = (const char *)&v20; strncpy(&v16, v5, 0xCu); v6 = v23; if ( v25 < 0x10 ) v6 = (const char *)&v23; strncpy(&v17, v6, 0xCu); v19 = v12; v7 = *(_DWORD *)(a3 + 65816); v18 = v13; v8 = sub_505CC0(v7); sub_4629F0((void *)v8, &v15); v9 = sub_4D6100(a3); sub_610240((int)&v23); sub_610240((int)&v20); LABEL_20: LOBYTE(v27) = 0; sub_4DCB00((int)&v14); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"SaveLinkto::sa_Step"); return v9; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004F9DD0) -------------------------------------------------------- __int16 __thiscall sub_4F9DD0(void *this, int a2, void *a3, int a4) { int v4; // ebx@1 void *v5; // edi@1 void *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@1 int v10; // eax@1 int v11; // esi@1 int v12; // eax@2 char v13; // al@5 signed int v14; // ebx@7 int v15; // edi@7 unsigned __int16 v16; // si@10 int v17; // eax@11 void *v18; // ecx@12 signed int v19; // esi@13 __int16 v20; // ax@27 __int16 v21; // si@27 void *v23; // [sp+10h] [bp-12Ch]@6 int v24; // [sp+18h] [bp-124h]@10 void *v25; // [sp+1Ch] [bp-120h]@7 int v26; // [sp+20h] [bp-11Ch]@7 int v27; // [sp+24h] [bp-118h]@7 char v28; // [sp+2Ch] [bp-110h]@7 unsigned int v29; // [sp+12Ch] [bp-10h]@1 int v30; // [sp+138h] [bp-4h]@1 int v31; // [sp+13Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v4 = (int)a3; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobWeaponRate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMobWeaponRate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; v6 = sub_4D56C0(&dword_1321B748, (int)"["); v7 = sub_4D56C0(v6, a2); v8 = sub_4D56C0(v7, (int)"]"); v9 = sub_4D56C0(v8, (int)"ShineMobWeaponRate"); sub_4D56C0(v9, (int)&unk_1321B74C); v10 = sub_4EB170(v5, a3); v11 = v10; if ( !v10 ) goto LABEL_27; v12 = (**(int (__thiscall ***)(_DWORD))v10)(v10); if ( v12 ) { while ( (_UNKNOWN *)v12 != &unk_132460EC ) { v12 = *(_DWORD *)(v12 + 4); if ( !v12 ) goto LABEL_5; } v13 = 1; } else { LABEL_5: v13 = 0; } v23 = (void *)(v13 != 0 ? v11 : 0); if ( !v23 ) goto LABEL_27; v25 = 0; v26 = 0; v27 = 0; LOBYTE(v30) = 1; sub_4D5720(&v28); v14 = 0; LOBYTE(v30) = 2; v15 = (int)((char *)v5 + 48); do { if ( *(_DWORD *)v15 && !(*(int (__stdcall **)(char *, void *))(**(_DWORD **)v15 + 8))(&v28, a3) ) break; v16 = sub_4D5840(&v28, 0); v24 = v16; if ( v16 <= 0u ) break; v17 = v26; if ( (unsigned int)&v24 >= v26 || (v18 = v25, v25 > &v24) ) { if ( v26 == v27 ) { sub_47A750((int)&v25, 1); v17 = v26; } if ( !v17 ) goto LABEL_23; *(_WORD *)v17 = v16; } else { v19 = (signed int)((char *)&v24 - v25) >> 1; if ( v26 == v27 ) { sub_47A750((int)&v25, 1); v17 = v26; v18 = v25; } if ( !v17 ) goto LABEL_23; *(_WORD *)v17 = *((_WORD *)v18 + v19); } v17 = v26; LABEL_23: ++v14; v15 += 4; v26 = v17 + 2; } while ( v14 < 8 ); sub_50C8B0(v23, (int)&v25); LOBYTE(v30) = 1; nullsub_2(&v28); LOBYTE(v30) = 0; if ( v25 ) operator delete(v25); v4 = (int)a3; v25 = 0; v26 = 0; v27 = 0; LABEL_27: v20 = sub_4D6100(v4); --dword_750CB8; v21 = v20; v30 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMobWeaponRate::sa_Step"); return v21; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1321B748: using guessed type int dword_1321B748; //----- (004FA080) -------------------------------------------------------- __int16 __thiscall sub_4FA080(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@3 __int16 v8; // ax@4 void *v9; // eax@7 void *v10; // ecx@7 char v11; // dl@8 int (__stdcall *v12)(_DWORD, _DWORD); // eax@9 void *v13; // eax@11 int (__thiscall *v14)(_DWORD); // eax@11 int v15; // eax@11 int v16; // eax@11 int v17; // eax@11 char *v18; // edx@12 char *v19; // ecx@14 int v21; // [sp+10h] [bp-350h]@4 char *v22; // [sp+14h] [bp-34Ch]@7 char v23; // [sp+18h] [bp-348h]@11 char v24; // [sp+218h] [bp-148h]@1 void *v25; // [sp+318h] [bp-48h]@11 unsigned int v26; // [sp+32Ch] [bp-34h]@12 void *v27; // [sp+334h] [bp-2Ch]@7 int v28; // [sp+344h] [bp-1Ch]@7 unsigned int v29; // [sp+348h] [bp-18h]@7 unsigned int v30; // [sp+350h] [bp-10h]@1 int v31; // [sp+35Ch] [bp-4h]@1 int v32; // [sp+360h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v4 = (unsigned int)&v32 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; sub_4D5720(&v24); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v31) = 1; if ( v6(&v24, a3, v4) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step : no Object", 0); LABEL_3: v7 = sub_4D6100(a3); goto LABEL_19; } v8 = sub_4D5840(&v24, 0); v21 = sub_54DE90(&unk_13253630, v8); if ( !v21 ) goto LABEL_3; if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v24, a3) != 0 ) { v9 = sub_5CF620(&v24); v10 = v9; v29 = 15; v28 = 0; LOBYTE(v27) = 0; v22 = (char *)v9 + 1; do { v11 = *(_BYTE *)v10; v10 = (char *)v10 + 1; } while ( v11 ); sub_4241C0((int)&v27, (char *)v9, v10 - v22); v12 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 14) + 8); LOBYTE(v31) = 2; if ( v12(&v24, a3) != 0 ) { v13 = sub_5CF620(&v24); sub_4244F0((int)&v25, (char *)v13); v14 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v21 + 1212); LOBYTE(v31) = 3; v15 = v14(v21); sub_465590((int)&v23, v15); LOBYTE(v31) = 4; v16 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v22, (int)&v23); v17 = sub_4627E0((void *)v16); if ( v17 ) { v18 = (char *)v25; if ( v26 < 0x10 ) v18 = (char *)&v25; v19 = (char *)v27; if ( v29 < 0x10 ) v19 = (char *)&v27; sub_47FA00((void *)v17, v21, v19, v18); } v7 = sub_4D6100(a3); LOBYTE(v31) = 3; sub_4646E0((int)&v23); sub_610240((int)&v25); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step : Guild Name B", 0); v7 = sub_4D6100(a3); } sub_610240((int)&v27); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step : no Guild Name A", 0); v7 = sub_4D6100(a3); } LABEL_19: LOBYTE(v31) = 0; nullsub_2(&v24); --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004FA310) -------------------------------------------------------- __int16 __thiscall sub_4FA310(void *this, int a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // edi@1 int (__stdcall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 __int16 v7; // si@3 __int16 v8; // ax@4 int v9; // eax@5 int v10; // eax@7 int (__stdcall *v11)(_DWORD, _DWORD); // edx@7 int v12; // eax@7 __int16 v13; // ax@8 void *v14; // eax@11 int v15; // edi@11 int (__thiscall *v16)(_DWORD); // eax@11 int v17; // eax@11 int v18; // eax@11 int v19; // eax@11 char *v20; // edx@12 int v22; // [sp-4h] [bp-350h]@5 int v23; // [sp+14h] [bp-338h]@4 int v24; // [sp+18h] [bp-334h]@8 int v25; // [sp+1Ch] [bp-330h]@7 char v26; // [sp+20h] [bp-32Ch]@11 char v27; // [sp+220h] [bp-12Ch]@1 void *v28; // [sp+320h] [bp-2Ch]@11 unsigned int v29; // [sp+334h] [bp-18h]@12 unsigned int v30; // [sp+33Ch] [bp-10h]@1 int v31; // [sp+348h] [bp-4h]@1 int v32; // [sp+34Ch] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v4 = (unsigned int)&v32 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineRegesteGate::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineRegesteGate::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; sub_4D5720(&v27); v6 = *(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v5 + 12) + 8); LOBYTE(v31) = 1; if ( v6(&v27, a3, v4) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegesteGate::sa_Step : no Object", 0); LABEL_3: v7 = sub_4D6100(a3); goto LABEL_17; } v8 = sub_4D5840(&v27, 0); v23 = sub_54DE90(&unk_13253630, v8); if ( !v23 ) goto LABEL_3; v9 = (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 13) + 8))(&v27, a3); v22 = 0; if ( v9 == 0 || (v10 = sub_4D5840(&v27, 0), v11 = *(int (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v5 + 14) + 8), v25 = v10, v12 = v11(&v27, a3), v22 = 0, v12 == 0) ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step : no Guild Name A", v22); v7 = sub_4D6100(a3); goto LABEL_17; } v13 = sub_4D5840(&v27, 0); v24 = sub_54DE90(&unk_13253630, v13); if ( !v24 ) goto LABEL_3; if ( (*(int (__stdcall **)(char *, int))(**((_DWORD **)v5 + 15) + 8))(&v27, a3) != 0 ) { v14 = sub_5CF620(&v27); sub_4244F0((int)&v28, (char *)v14); v15 = v23; v16 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v23 + 1212); LOBYTE(v31) = 2; v17 = v16(v23); sub_465590((int)&v26, v17); LOBYTE(v31) = 3; v18 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v23, (int)&v26); v19 = sub_4627E0((void *)v18); if ( v19 ) { v20 = (char *)v28; if ( v29 < 0x10 ) v20 = (char *)&v28; if ( !sub_47FB40(v19, v15, v25, *(_WORD *)(v24 + 4), v20) ) sub_639100(&unk_86DDD8, (int)"ShineRegesteGuildTorunamentGate Bad GateRegiste", 0); } v7 = sub_4D6100(a3); LOBYTE(v31) = 2; sub_4646E0((int)&v26); sub_610240((int)&v28); } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineRegesteGuildTorunamentFlag::sa_Step : no UseGateName", 0); v7 = sub_4D6100(a3); } LABEL_17: LOBYTE(v31) = 0; nullsub_2(&v27); --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineRegesteGate::sa_Step"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004FA5C0) -------------------------------------------------------- __int16 __thiscall sub_4FA5C0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // ecx@4 int v7; // eax@6 int v8; // edi@6 int v9; // eax@7 __int16 v10; // si@8 int v11; // [sp+10h] [bp-398h]@3 int v12; // [sp+14h] [bp-394h]@2 char v13; // [sp+18h] [bp-390h]@6 char v14; // [sp+1Ch] [bp-38Ch]@6 char v15; // [sp+21Ch] [bp-18Ch]@1 char v16[4]; // [sp+344h] [bp-64h]@7 int v17; // [sp+348h] [bp-60h]@7 int v18; // [sp+34Ch] [bp-5Ch]@7 char v19; // [sp+350h] [bp-58h]@7 int v20; // [sp+360h] [bp-48h]@7 int v21; // [sp+364h] [bp-44h]@7 int v22; // [sp+36Ch] [bp-3Ch]@7 void *v23; // [sp+370h] [bp-38h]@1 int v24; // [sp+380h] [bp-28h]@1 unsigned int v25; // [sp+384h] [bp-24h]@1 char v26[4]; // [sp+38Ch] [bp-1Ch]@4 int v27; // [sp+390h] [bp-18h]@4 int v28; // [sp+394h] [bp-14h]@4 unsigned int v29; // [sp+398h] [bp-10h]@1 int v30; // [sp+3A4h] [bp-4h]@1 int v31; // [sp+3A8h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"GTMobRegenKey::sa_Step"); dword_7508B8[dword_750CB8] = (int)"GTMobRegenKey::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v30 = 0; sub_4DCAD0((int)&v15, (int)((char *)v4 + 48), a3); LOBYTE(v30) = 1; sub_4E1800(&v15, "GTMobRegenKey::sa_Step"); v25 = 15; v24 = 0; LOBYTE(v23) = 0; LOBYTE(v30) = 2; if ( sub_4E1E50(&v15, 0, (int)&v23) && sub_4E1C00(&v15, 1, (int)&v12) && sub_4E1C00(&v15, 2, (int)&v11) ) { v5 = *(_DWORD *)(a3 + 65816); v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; if ( sub_4E2490(v5, v26) == 0 ) { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::OtherStatement::os_ObjectRegen : Not map name", 0); sub_610240((int)&v23); LOBYTE(v30) = 0; sub_4DCB00((int)&v15); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"GTMobRegenKey::sa_Step"); return 0; } sub_465590((int)&v14, (int)v26); LOBYTE(v30) = 3; v7 = sub_4235F0((int)&unk_CFCF380, (int)sub_4521E0, (int)&v13, (int)&v14); v8 = sub_4627E0((void *)v7); if ( v8 ) { v18 = 0; v17 = 0; *(_DWORD *)v16 = 0; v21 = 15; v20 = 0; v19 = 0; LOBYTE(v30) = 4; v22 = v12; v9 = sub_418B00((int)byte_85A2C0, (int)v26); sub_418A60(v16, (const char *)v9); sub_423FC0(&v19, (int)&v23, 0, 0xFFFFFFFFu); sub_47FFF0((void *)v8, (int)v16, v11); LOBYTE(v30) = 3; sub_479AF0((int)v16); } v10 = sub_4D6100(a3); LOBYTE(v30) = 2; sub_4646E0((int)&v14); sub_610240((int)&v23); } else { v10 = sub_4D6100(a3); if ( v25 >= 0x10 ) operator delete(v23); v25 = 15; v24 = 0; LOBYTE(v23) = 0; } LOBYTE(v30) = 0; sub_4DCB00((int)&v15); --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"GTMobRegenKey::sa_Step"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (004FA860) -------------------------------------------------------- bool __thiscall sub_4FA860(int this, unsigned int *a2) { bool result; // al@2 unsigned int v3; // eax@3 int v4; // edx@3 bool v5; // zf@3 int v6; // edx@3 if ( !a2 || (v3 = *(_WORD *)a2, v4 = v3 & 0x3FF, v5 = *(_DWORD *)(this + 4 * v4 + 4) == this + 4100, v6 = this + 4 * v4 + 4, v5) ) result = 0; else result = *(_DWORD *)(*(_DWORD *)v6 + 4 * (v3 >> 10)) != *(_DWORD *)(this + 4356); return result; } //----- (004FA8B0) -------------------------------------------------------- int __thiscall sub_4FA8B0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"OPToolSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"OPToolSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) sub_639100(&unk_86DDD8, (int)"ZoneConnectSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (*(int (__thiscall **)(_DWORD))(*((_DWORD *)v3 + 56) + 24))((char *)v3 + 224); (*(void (__thiscall **)(_DWORD))(*((_DWORD *)v3 + 56) + 20))((char *)v3 + 224); sub_466B50((int)&unk_750830, v4); (*(void (__thiscall **)(_DWORD, _DWORD))(dword_84F3F4[*(_WORD *)v4 & 0x3FF] + 4 * ((unsigned int)*(_WORD *)v4 >> 10)))( &dword_DA0F928, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"OPToolSession::zbs_Parsing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84F3F4: using guessed type int dword_84F3F4[]; // DA0F928: using guessed type int dword_DA0F928; //----- (004FA9B0) -------------------------------------------------------- int __thiscall sub_4FA9B0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) sub_639100(&unk_86DDD8, (int)"ZoneConnectSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (*(int (__thiscall **)(_DWORD))(*((_DWORD *)v3 + 56) + 24))((char *)v3 + 224); (*(void (__thiscall **)(_DWORD))(*((_DWORD *)v3 + 56) + 20))((char *)v3 + 224); sub_466B50((int)&unk_750830, v4); (*(void (__thiscall **)(_DWORD, _DWORD))(dword_8516B4[*(_WORD *)v4 & 0x3FF] + 4 * ((unsigned int)*(_WORD *)v4 >> 10)))( &dword_AF09800, v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zbs_Parsing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8516B4: using guessed type int dword_8516B4[]; // AF09800: using guessed type int dword_AF09800; //----- (004FAAB0) -------------------------------------------------------- int __thiscall sub_4FAAB0(void *this, int a2, int a3) { int v3; // edi@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingLinkageSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"ZoneRingLinkageSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) sub_639100(&unk_86DDD8, (int)"ZoneConnectSession::zbs_Parsing : sp entry!!!", a2 == 0); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)(v3 + 224) + 24))(v3 + 224); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)(v3 + 224) + 20))(v3 + 224); *(_WORD *)off_849C18 = 2053; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"ZoneConnectSession::zbs_Parsing : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingLinkageSession::zbs_Parsing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004FABD0) -------------------------------------------------------- int __thiscall sub_4FABD0(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // edi@3 int v5; // esi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) sub_639100(&unk_86DDD8, (int)"GameDBSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (*(int (__thiscall **)(char *))(*((_DWORD *)v3 + 56) + 24))((char *)v3 + 224); v5 = (unsigned __int16)(*(int (__thiscall **)(char *))(*((_DWORD *)v3 + 56) + 20))((char *)v3 + 224); sub_466B50((int)&unk_750830, v4); (*(void (__thiscall **)(void *, int, int))(dword_84BFD4[*(_WORD *)v4 & 0x3FF] + 4 * ((unsigned int)*(_WORD *)v4 >> 10)))( v3, v4, v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::zbs_Parsing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BFD4: using guessed type int dword_84BFD4[]; //----- (004FACE0) -------------------------------------------------------- int __thiscall sub_4FACE0(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // edi@3 int v5; // esi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"GameLogSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"GameLogSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) sub_639100(&unk_86DDD8, (int)"GameLogSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (*(int (__thiscall **)(char *))(*((_DWORD *)v3 + 56) + 24))((char *)v3 + 224); v5 = (unsigned __int16)(*(int (__thiscall **)(char *))(*((_DWORD *)v3 + 56) + 20))((char *)v3 + 224); sub_466B50((int)&unk_750830, v4); (*(void (__thiscall **)(void *, int, int))(dword_84E29C[*(_WORD *)v4 & 0x3FF] + 4 * ((unsigned int)*(_WORD *)v4 >> 10)))( v3, v4, v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameLogSession::zbs_Parsing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84E29C: using guessed type int dword_84E29C[]; //----- (004FADF0) -------------------------------------------------------- int __thiscall sub_4FADF0(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // edi@3 int v5; // esi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) sub_639100(&unk_86DDD8, (int)"WorldManagerSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (*(int (__thiscall **)(char *))(*((_DWORD *)v3 + 56) + 24))((char *)v3 + 224); v5 = (unsigned __int16)(*(int (__thiscall **)(char *))(*((_DWORD *)v3 + 56) + 20))((char *)v3 + 224); sub_466B50((int)&unk_750830, v4); (*(void (__thiscall **)(void *, int, int))(dword_850554[*(_WORD *)v4 & 0x3FF] + 4 * ((unsigned int)*(_WORD *)v4 >> 10)))( v3, v4, v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::zbs_Parsing"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 850554: using guessed type int dword_850554[]; //----- (004FAF00) -------------------------------------------------------- int __thiscall sub_4FAF00(void *this, void *a2, int a3) { int v3; // esi@1 int v4; // ebx@3 int v5; // eax@3 int v6; // ST40_4@4 void *v7; // eax@4 __int16 v8; // dx@4 int v9; // eax@4 int v10; // ecx@4 bool v12; // zf@17 char *v13; // eax@19 signed __int16 v14; // bx@21 int v15; // edi@21 int v16; // edi@22 int v17; // eax@29 char *v18; // eax@31 int v19; // edi@33 int v20; // edi@34 bool v21; // al@37 __time32_t v22; // ecx@37 __time32_t v23; // eax@40 __time32_t v24; // eax@40 __time32_t v25; // eax@40 __time32_t v26; // eax@40 __time32_t v27; // eax@40 __time32_t v28; // eax@40 __time32_t v29; // eax@40 __time32_t v30; // eax@40 __time32_t v31; // eax@40 __time32_t v32; // eax@40 __time32_t v33; // eax@40 __time32_t v34; // eax@40 __time32_t v35; // eax@40 __time32_t v36; // eax@40 __time32_t v37; // eax@40 __time32_t v38; // eax@40 int v39; // [sp-48h] [bp-90h]@38 int v40; // [sp-44h] [bp-8Ch]@37 int v41; // [sp-40h] [bp-88h]@37 int v42; // [sp-3Ch] [bp-84h]@37 int v43; // [sp-38h] [bp-80h]@37 int v44; // [sp-34h] [bp-7Ch]@37 int v45; // [sp-30h] [bp-78h]@37 int v46; // [sp-2Ch] [bp-74h]@37 int v47; // [sp-28h] [bp-70h]@37 int v48; // [sp-24h] [bp-6Ch]@37 int v49; // [sp-20h] [bp-68h]@37 int v50; // [sp-1Ch] [bp-64h]@37 int v51; // [sp-18h] [bp-60h]@37 int v52; // [sp-14h] [bp-5Ch]@37 int v53; // [sp-10h] [bp-58h]@37 int v54; // [sp-Ch] [bp-54h]@37 int v55; // [sp-8h] [bp-50h]@2 int v56; // [sp-8h] [bp-50h]@37 signed __int16 v57; // [sp+10h] [bp-38h]@33 unsigned __int16 v58; // [sp+14h] [bp-34h]@4 unsigned __int16 v59; // [sp+18h] [bp-30h]@4 int v60; // [sp+1Ch] [bp-2Ch]@3 int v61; // [sp+20h] [bp-28h]@21 int v62; // [sp+20h] [bp-28h]@33 int v63; // [sp+24h] [bp-24h]@19 int v64; // [sp+24h] [bp-24h]@31 char v65[4]; // [sp+28h] [bp-20h]@37 int v66; // [sp+2Ch] [bp-1Ch]@37 int v67; // [sp+30h] [bp-18h]@37 int v68; // [sp+34h] [bp-14h]@37 unsigned int v69; // [sp+38h] [bp-10h]@1 int v70; // [sp+44h] [bp-4h]@1 int v71; // [sp+48h] [bp+0h]@1 v69 = (unsigned int)&v71 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ClientSession::zbs_Parsing"); dword_7508B8[dword_750CB8] = (int)"ClientSession::zbs_Parsing"; dword_750AB8[dword_750CB8++] = -1; v70 = 0; if ( a2 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)(v3 + 224) + 24))(v3 + 224); v5 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)(v3 + 224) + 20))(v3 + 224); v60 = (unsigned __int16)v5; if ( *((_BYTE *)a2 + 161244) ) { LABEL_9: v55 = (int)"ClientSession::zbs_Parsing"; goto LABEL_10; } v6 = v5; v7 = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1192))(a2); sub_62DE90(v7, v4, v6); v8 = *(_WORD *)v4 & 0x3FF; v9 = *(_DWORD *)(v3 + 260); v10 = (unsigned __int16)(*(_WORD *)v4 >> 10); v58 = *(_WORD *)v4 >> 10; v59 = *(_WORD *)v4 & 0x3FF; if ( v9 ) { if ( v9 == 1 ) { if ( v10 != 4 ) { if ( v10 == 2 ) { if ( v8 == 5 ) goto LABEL_8; } else { if ( v10 == 8 ) { v12 = v8 == 11; } else { if ( v10 == 12 ) { v12 = v8 == 77; } else { if ( v10 != 14 ) { if ( v10 == 6 && v8 == 3 ) { *(_DWORD *)(v3 + 260) = 2; v17 = (int)sub_5A7C60(byte_14D16AE8); sub_45BE60(v17, v3); goto LABEL_8; } goto LABEL_31; } v12 = v8 == 72; } } if ( v12 ) { v63 = 0; v13 = sub_45AA30((void *)v3); if ( v13 ) { LOBYTE(v63) = *v13; BYTE1(v63) = v13[1]; BYTE2(v63) = v13[2]; BYTE3(v63) = v13[3]; } v61 = -1; v14 = -1; v15 = sub_54DE90(&unk_13253630, *(_WORD *)(v3 + 258)); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v15 + 1232))(v15) == 2 ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 832))(v15); v61 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 840))(v15); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 836))(v15); } else { v16 = -1; } if ( !*(_DWORD *)(v3 + 260) ) goto LABEL_9; *(_DWORD *)v65 = 0; v66 = 0; v67 = 0; v68 = 0; sprintf(v65, "%d.%d.%d.%d", (unsigned __int8)v63, BYTE1(v63), BYTE2(v63), BYTE3(v63)); v56 = (int)&unk_13359E04; v54 = (int)") "; v53 = (unsigned __int16)v14; v52 = (int)") nWMSHandle("; v51 = v16; v50 = (int)") nCharRegNo("; v49 = v61; v48 = (int)") nUserRegNo("; v47 = (int)v65; v46 = (int)") IP_Addr("; v45 = *(_DWORD *)(v3 + 260); v44 = (int)"SessionAuthMode("; v43 = (int)") "; v42 = v59; v41 = (int)"/"; v40 = v58; v39 = (int)"ClientSession::zbs_Parsing - Invalid sequence protocol(Skip Only) (Dept/Cmd="; v22 = (__time32_t)byte_14D13118; LABEL_40: v23 = sub_418EA0(v22, v39); v24 = sub_43B910(v23, v40); v25 = sub_418EA0(v24, v41); v26 = sub_43B910(v25, v42); v27 = sub_418EA0(v26, v43); v28 = sub_418EA0(v27, v44); v29 = sub_43B910(v28, v45); v30 = sub_418EA0(v29, v46); v31 = sub_418EA0(v30, v47); v32 = sub_418EA0(v31, v48); v33 = sub_43B910(v32, v49); v34 = sub_418EA0(v33, v50); v35 = sub_43B910(v34, v51); v36 = sub_418EA0(v35, v52); v37 = sub_43B910(v36, v53); v38 = sub_418EA0(v37, v54); sub_418F20(v38, v56); goto LABEL_9; } } } } else { if ( v9 != -1 ) goto LABEL_8; } } else { if ( v10 == 6 && v8 == 1 ) { *(_DWORD *)(v3 + 260) = 1; LABEL_8: sub_550A70(a2, v4); sub_466B50((int)&unk_750830, v4); (*(void (__thiscall **)(void *, int, int, int))(dword_84D13C[*(_WORD *)v4 & 0x3FF] + 4 * ((unsigned int)*(_WORD *)v4 >> 10)))( a2, v4, v60, a3); goto LABEL_9; } } LABEL_31: v64 = 0; v18 = sub_45AA30((void *)v3); if ( v18 ) { LOBYTE(v64) = *v18; BYTE1(v64) = v18[1]; BYTE2(v64) = v18[2]; BYTE3(v64) = v18[3]; } v62 = -1; v57 = -1; v19 = sub_54DE90(&unk_13253630, *(_WORD *)(v3 + 258)); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v19 + 1232))(v19) == 2 ) { v57 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 832))(v19); v62 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 840))(v19); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 836))(v19); } else { v20 = -1; } if ( !*(_DWORD *)(v3 + 260) ) goto LABEL_9; *(_DWORD *)v65 = 0; v66 = 0; v67 = 0; v68 = 0; sprintf(v65, "%d.%d.%d.%d", (unsigned __int8)v64, BYTE1(v64), BYTE2(v64), BYTE3(v64)); v21 = sub_4FA860((int)&off_84D138, (unsigned int *)v4); v56 = (int)&unk_13359E04; v54 = (int)") "; v53 = (unsigned __int16)v57; v52 = (int)") nWMSHandle("; v51 = v20; v50 = (int)") nCharRegNo("; v49 = v62; v48 = (int)") nUserRegNo("; v47 = (int)v65; v46 = (int)") IP_Addr("; v45 = *(_DWORD *)(v3 + 260); v44 = (int)"SessionAuthMode("; v43 = (int)") "; v42 = v59; v41 = (int)"/"; v22 = (__time32_t)byte_14D13118; v40 = v58; if ( v21 ) v39 = (int)"ClientSession::zbs_Parsing - Invalid sequence protocol (Dept/Cmd="; else v39 = (int)"ClientSession::zbs_Parsing - Not registered protocol (Dept/Cmd="; goto LABEL_40; } sub_639100(&unk_86DDD8, (int)"ClientSession::zbs_Parsing : sp not entry!!!", 0); v55 = (int)"ClientSession::zbs_Parsing"; LABEL_10: --dword_750CB8; v70 = -1; return sub_467660((int)&unk_D020420, v55); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84D138: using guessed type int (__thiscall **off_84D138)(void *, char); // 84D13C: using guessed type int dword_84D13C[]; // 86FEB8: using guessed type int __security_cookie; //----- (004FB410) -------------------------------------------------------- int __thiscall sub_4FB410(void *this, int a2) { int v2; // eax@1 void *v3; // edi@1 int v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@2 int result; // eax@5 int v9; // esi@5 signed int v10; // eax@6 int v11; // [sp-18h] [bp-B4h]@5 int v12; // [sp-14h] [bp-B0h]@5 int v13; // [sp-10h] [bp-ACh]@5 char *v14; // [sp-Ch] [bp-A8h]@1 int v15; // [sp-8h] [bp-A4h]@1 int v16; // [sp-4h] [bp-A0h]@1 int *v17; // [sp+Ch] [bp-90h]@5 int v18; // [sp+10h] [bp-8Ch]@4 char v19; // [sp+17h] [bp-85h]@2 char v20; // [sp+18h] [bp-84h]@1 unsigned int v21; // [sp+98h] [bp-4h]@1 int v22; // [sp+9Ch] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = this; v4 = (int)&byte_85A2C0[256 * v2]; *(_DWORD *)v4 = *(_DWORD *)a2; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); v5 = *(_DWORD *)(a2 + 8); v16 = v4; *(_DWORD *)(v4 + 8) = v5; v6 = *(_DWORD *)(a2 + 12); v15 = (int)"../9Data/Shine/World/%s/RecallCoord.txt"; v14 = &v20; *(_DWORD *)(v4 + 12) = v6; *(_BYTE *)(v4 + 16) = 0; sprintf(v14, (const char *)v15, v16); if ( !sub_6434A0(v3, &v20) ) { v19 = sub_6434A0(v3, "../9Data/Shine/World/RecallCoord.txt"); v7 = sub_642790(v3); if ( !v19 ) { sub_639100(&unk_86DDD8, (int)"Error in read RecallCoord option", v7); loc_6391B0("RecallPointTable::rpt_Load"); } } v18 = 0; while ( 1 ) { v16 = v18; v17 = &v11; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; strncpy((char *)&v11, "RecallPoint", 0x14u); result = sub_6442C0(v3, v11, v12, v13, (int)v14, v15, v16); v9 = result; if ( !result ) break; v10 = sub_639620(&unk_14D20898, (unsigned __int8 *)result); if ( v10 == -1 ) { ++v18; *(_DWORD *)(v9 + 32) = 65535; } else { ++v18; *(_DWORD *)(v9 + 32) = (unsigned __int16)v10; } } return result; } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (004FB560) -------------------------------------------------------- int __thiscall sub_4FB560(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@5 int v6; // eax@7 int v8; // [sp-4h] [bp-24h]@4 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1322FE78 & 1) ) { dword_1322FE78 |= 1u; word_1322FE74 = 86; atexit(nullsub_75); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_1322FE74 ) { sub_641000((void *)(v4 + 152568)); v5 = off_849C18; *(_WORD *)off_849C18 = 4249; *((_WORD *)v5 + 1) = sub_4802C0(v4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v5 + 8) = 2; *(_DWORD *)((char *)v5 + 9) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v5 + 13) = 1; *((_WORD *)v5 + 7) = 24 * *(_WORD *)(a2 + 2); *((_WORD *)v5 + 8) = 24 * *(_WORD *)(a2 + 2) + 23; if ( sub_4C81E0(&off_849C18, 18) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ : Packet Too Long", 18); } v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 46, 4611); v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1322FE74: using guessed type __int16 word_1322FE74; // 1322FE78: using guessed type int dword_1322FE78; // 14D16430: using guessed type int dword_14D16430; //----- (004FB720) -------------------------------------------------------- int __stdcall sub_4FB720(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { if ( *(_WORD *)(a1 + 13) == 4608 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2492))(v2, a1 + 2); else (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 46, *(_WORD *)(a1 + 13)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004FB810) -------------------------------------------------------- int __thiscall sub_4FB810(void *this, int a2) { void *v2; // edi@1 void *v3; // eax@1 int v4; // esi@1 int v5; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FillRewardInven"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_FillRewardInven"; dword_750AB8[dword_750CB8++] = -1; sub_641000((char *)v2 + 152568); sub_63FE20((char *)v2 + 152568, a2 + 15, a2 + 16, 2); v3 = off_849C18; *(_WORD *)off_849C18 = 12333; v4 = sub_6415D0((char *)v2 + 152568, (int)((char *)v3 + 2), (int)((char *)v3 + 3)) + 3; if ( sub_4C81E0(&off_849C18, v4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_FillRewardInven : Packet Too Long", v4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_FillRewardInven"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (004FB930) -------------------------------------------------------- int __thiscall sub_4FB930(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // esi@1 unsigned __int8 v6; // al@1 v4 = this; v5 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1240))(); v6 = (*(int (**)(void))(*(_DWORD *)a3 + 1240))(); return (v5 - v6) * (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 16))(v4, abs(v5 - v6)) + 500; } //----- (004FB990) -------------------------------------------------------- int __thiscall sub_4FB990(void *this, int a2, int a3, int a4, int a5) { int v5; // edi@1 void *v6; // esi@1 int result; // eax@2 signed int v8; // [sp+1Ch] [bp+10h]@1 v5 = a4; v6 = this; v8 = (**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))this)(a2, a3, a4); if ( v8 >= (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) ) { result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 8))(v6, a2, a3, v5); dword_14D9AE10 = dword_14D9AE14 & (dword_14D9AE10 + 1); if ( *(_WORD *)&word_14D92E10[2 * dword_14D9AE10] ) { *(_BYTE *)a5 = 0; } else { result *= 2; *(_BYTE *)a5 = 1; } } else { result = 0; } return result; } // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; //----- (004FBA20) -------------------------------------------------------- int __thiscall sub_4FBA20(void *this, int a2, int a3, int a4) { int v4; // eax@1 void *v5; // ebx@1 unsigned int v6; // ecx@2 int v7; // eax@2 signed int v9; // edi@5 unsigned int v10; // ecx@6 int v11; // ecx@8 char *v12; // eax@9 int v13; // ecx@9 unsigned __int16 v14; // ax@9 v4 = **(_DWORD **)a4; v5 = this; if ( *(_DWORD *)(v4 + 43) ) { v6 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v7 = *(_DWORD *)a4; if ( *(_DWORD *)(**(_DWORD **)a4 + 43) < v6 ) return 0; } else { if ( !*(_DWORD *)(v4 + 35) || (v9 = (**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))this)(a2, a3, a4), v9 < (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u)) ) return 0; v10 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v7 = *(_DWORD *)a4; if ( *(_DWORD *)(**(_DWORD **)a4 + 35) < v10 ) return 0; } v11 = *(_DWORD *)(v7 + 4); if ( (unsigned int)(*(_DWORD *)(v11 + 227) - *(_DWORD *)(v11 + 219)) > 0x63 ) { v14 = 0; } else { v12 = (char *)&unk_14D42DC0 + 32776 * (*(_DWORD *)(v11 + 227) - *(_DWORD *)(v11 + 219) + 1); v13 = *((_DWORD *)v12 + 8193) & (*((_DWORD *)v12 + 8192) + 1); *((_DWORD *)v12 + 8192) = v13; v14 = *(_WORD *)&v12[2 * v13]; } return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a4 + 4) + 219) + v14 + (*(int (__thiscall **)(void *, int, int, int))(*(_DWORD *)v5 + 8))(v5, a2, a3, a4); } //----- (004FBB20) -------------------------------------------------------- int __thiscall sub_4FBB20(void *this, int a2, int a3, int a4) { int v4; // eax@1 void *v5; // edi@1 unsigned int v6; // ecx@2 int v7; // eax@2 signed int v9; // ebx@5 unsigned int v10; // ecx@6 int v11; // ecx@8 char *v12; // eax@9 v4 = **(_DWORD **)a4; v5 = this; if ( *(_DWORD *)(v4 + 47) ) { v6 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v7 = *(_DWORD *)a4; if ( *(_DWORD *)(**(_DWORD **)a4 + 47) < v6 ) return 0; } else { if ( !*(_DWORD *)(v4 + 39) || (v9 = (**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))this)(a2, a3, a4), v9 < (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u)) ) return 0; v10 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v7 = *(_DWORD *)a4; if ( *(_DWORD *)(**(_DWORD **)a4 + 39) < v10 ) return 0; } v11 = *(_DWORD *)(v7 + 4); if ( (unsigned int)(*(_DWORD *)(v11 + 243) - *(_DWORD *)(v11 + 235)) <= 0x63 ) { v12 = (char *)&unk_14D4ADC0 + 32776 * (*(_DWORD *)(v11 + 243) - *(_DWORD *)(v11 + 235) + 1); *(_DWORD *)v12 = *((_DWORD *)v12 + 1) & (*(_DWORD *)v12 + 1); } return (*(int (__thiscall **)(void *, int, int, int))(*(_DWORD *)v5 + 12))(v5, a2, a3, a4); } //----- (004FBBF0) -------------------------------------------------------- double __stdcall sub_4FBBF0(int a1) { double v1; // ST0C_8@1 double v2; // ST0C_8@1 double v3; // ST0C_8@1 double v4; // ST0C_8@1 double v5; // ST0C_8@1 double v6; // ST0C_8@1 double v7; // ST0C_8@1 double v8; // ST0C_8@1 double v9; // ST0C_8@1 double v10; // ST0C_8@1 double v11; // ST04_8@3 double v12; // ST04_8@3 double v13; // ST04_8@3 double v14; // ST04_8@3 double v15; // ST04_8@3 double v16; // ST04_8@3 double v17; // ST04_8@3 double v18; // ST04_8@3 double v19; // ST04_8@3 double v20; // ST04_8@3 double result; // st7@3 double v22; // [sp+Ch] [bp-8h]@1 v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 212); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 8) + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2456) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2048) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 824) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2864) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1028) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1436) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1844) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2252) + v9; v22 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2660) + v10; if ( v22 < 1.0 ) v22 = 1.0; v11 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 236); v12 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 32) + v11; v13 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2480) * v12; v14 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2072) * v13; v15 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 848) * v14; v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2888) * v15 / 1.0e12; v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1052) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1460) + v17; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1868) + v18; v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2276) + v19; result = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2684) + v20 + v22; if ( result < 1.0 ) result = 1.0; return result; } //----- (004FBE40) -------------------------------------------------------- double __stdcall sub_4FBE40(int a1) { double v1; // ST0C_8@1 double v2; // ST0C_8@1 double v3; // ST0C_8@1 double v4; // ST0C_8@1 double v5; // ST0C_8@1 double v6; // ST0C_8@1 double v7; // ST0C_8@1 double v8; // ST0C_8@1 double v9; // ST0C_8@1 double v10; // ST0C_8@1 double v11; // ST04_8@3 double v12; // ST04_8@3 double v13; // ST04_8@3 double v14; // ST04_8@3 double v15; // ST04_8@3 double v16; // ST04_8@3 double v17; // ST04_8@3 double v18; // ST04_8@3 double v19; // ST04_8@3 double v20; // ST04_8@3 double v21; // st7@3 double v23; // [sp+Ch] [bp-8h]@1 signed int v24; // [sp+1Ch] [bp+8h]@3 v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 212); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 8) + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2456) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2048) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 824) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2864) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1028) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1436) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1844) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2252) + v9; v23 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2660) + v10; if ( v23 < 1.0 ) v23 = 1.0; v11 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 240); v12 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 36) + v11; v13 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2484) * v12; v14 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2076) * v13; v15 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 852) * v14; v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2892) * v15 / 1.0e12; v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1056) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1464) + v17; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1872) + v18; v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2280) + v19; v21 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2688) + v20 + v23; v24 = 1; if ( (signed int)v21 >= 1 ) v24 = (signed int)v21; return (double)v24; } //----- (004FC0B0) -------------------------------------------------------- void __stdcall sub_4FC0B0(int a1) { double v1; // ST2C_8@1 double v2; // ST2C_8@1 double v3; // ST2C_8@1 double v4; // ST2C_8@1 double v5; // ST2C_8@1 double v6; // ST2C_8@1 double v7; // ST2C_8@1 double v8; // ST2C_8@1 double v9; // ST2C_8@1 double v10; // ST2C_8@1 double v11; // ST2C_8@3 double v12; // ST2C_8@3 double v13; // ST2C_8@3 double v14; // ST2C_8@3 double v15; // ST2C_8@3 double v16; // ST2C_8@3 double v17; // ST2C_8@3 double v18; // ST2C_8@3 double v19; // ST2C_8@3 double v20; // ST2C_8@3 FILE *v21; // esi@5 int v22; // eax@11 int v23; // eax@23 int v24; // eax@35 int v25; // eax@47 int v26; // eax@60 double v27; // [sp+4h] [bp-124h]@3 double v28; // [sp+Ch] [bp-11Ch]@3 double v29; // [sp+14h] [bp-114h]@1 double v30; // [sp+1Ch] [bp-10Ch]@3 double v31; // [sp+1Ch] [bp-10Ch]@49 char v32; // [sp+24h] [bp-104h]@5 unsigned int v33; // [sp+124h] [bp-4h]@1 int v34; // [sp+128h] [bp+0h]@1 v33 = (unsigned int)&v34 ^ __security_cookie; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 208); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 4) + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2452) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2044) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 820) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2860) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1024) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1432) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1840) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2248) + v9; v29 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2656) + v10; if ( v29 < 1.0 ) v29 = 1.0; v11 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 232); v12 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 28) + v11; v13 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2476) * v12; v14 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2068) * v13; v15 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 844) * v14; v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2884) * v15 / 1.0e12; v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1048) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1456) + v17; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1864) + v18; v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2272) + v19; v28 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2680) + v20; v30 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2476); v27 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 844); if ( !byte_7493ED ) { v21 = dword_14D15828; goto LABEL_49; } if ( byte_14D159AC ) { sprintf(&v32, "%.255s", " RulesOfEngagement::roe_AC"); sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( !dword_14D15828 ) goto LABEL_8; fputs(&v32, dword_14D15828); } v21 = dword_14D15828; LABEL_8: if ( byte_7493ED ) { if ( byte_14D159AC && v21 ) { v22 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v22); fflush(dword_14D15828); fclose(dword_14D15828); v21 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v32, "%.255s", " TotalCon = "); sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v32, dword_14D15828); v21 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v29); v21 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v21 ) { v23 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v23); fflush(dword_14D15828); fclose(dword_14D15828); v21 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v32, "%.255s", " TotalAC = "); sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v32, dword_14D15828); v21 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v28); v21 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v21 ) { v24 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v24); fflush(dword_14D15828); fclose(dword_14D15828); v21 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v32, "%.255s", " abrate = "); sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v32, dword_14D15828); v21 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v30); v21 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v21 ) { v25 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v25); fflush(dword_14D15828); fclose(dword_14D15828); v21 = 0; dword_14D15828 = 0; } } } } } } } } } } LABEL_49: v31 = (double)(signed int)((v28 + v29) * v30 / 1000.0) * v27 / 1000.0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v32, "%.255s", " rtn = "); sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v32, dword_14D15828); v21 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v21 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v31); v21 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC ) { if ( v21 ) { v26 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v26); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } } } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FC8A0) -------------------------------------------------------- double __stdcall sub_4FC8A0(int a1) { double v1; // ST0C_8@1 double v2; // ST0C_8@1 double v3; // ST0C_8@1 double v4; // ST0C_8@1 double v5; // ST0C_8@1 double v6; // ST0C_8@1 double v7; // ST0C_8@1 double v8; // ST0C_8@1 double v9; // ST0C_8@1 double v10; // ST0C_8@1 double v11; // ST04_8@3 double v12; // ST04_8@3 double v13; // ST04_8@3 double v14; // ST04_8@3 double v15; // ST04_8@3 double v16; // ST04_8@3 double v17; // ST04_8@3 double v18; // ST04_8@3 double v19; // ST04_8@3 double v20; // ST04_8@3 double v21; // st7@3 double result; // st7@3 double v23; // [sp+Ch] [bp-8h]@1 v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 220); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 16) + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2464) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2056) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 832) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2872) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1036) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1444) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1852) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2260) + v9; v23 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2668) + v10; if ( v23 < 1.0 ) v23 = 1.0; v11 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 252); v12 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 48) + v11; v13 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2496) * v12; v14 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2088) * v13; v15 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 864) * v14; v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2904) * v15 / 1.0e12; v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1068) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1476) + v17; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1884) + v18; v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2292) + v19; v21 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2700) + v20 + v23; result = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 864) * (double)(signed int)v21 / 1000.0; if ( result < 1.0 ) result = 1.0; return result; } //----- (004FCB30) -------------------------------------------------------- double __stdcall sub_4FCB30(int a1) { double v1; // ST2C_8@1 double v2; // ST2C_8@1 double v3; // ST2C_8@1 double v4; // ST2C_8@1 double v5; // ST2C_8@1 double v6; // ST2C_8@1 double v7; // ST2C_8@1 double v8; // ST2C_8@1 double v9; // ST2C_8@1 double v10; // ST2C_8@1 double v11; // ST24_8@3 double v12; // ST24_8@3 double v13; // ST24_8@3 double v14; // ST24_8@3 double v15; // ST24_8@3 double v16; // ST24_8@3 double v17; // ST24_8@3 double v18; // ST24_8@3 double v19; // ST24_8@3 double v20; // ST24_8@3 double v21; // ST24_8@3 double result; // st7@3 double v23; // [sp+4h] [bp-30h]@1 double v24; // [sp+Ch] [bp-28h]@1 double v25; // [sp+14h] [bp-20h]@1 double v26; // [sp+1Ch] [bp-18h]@1 double v27; // [sp+2Ch] [bp-8h]@1 v24 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1936); v25 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2140); v26 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1676); v23 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 856); v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 216); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 12) + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2460) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2052) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 828) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2868) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1032) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1440) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1848) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2256) + v9; v27 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2664) + v10; if ( v27 < 1.0 ) v27 = 1.0; v11 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 244); v12 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 40) + v11; v13 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2488) * v12; v14 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2080) * v13; v15 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 856) * v14; v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2896) * v15 / 1.0e12; v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1060) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1468) + v17; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1876) + v18; v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2284) + v19; v21 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2692) + v20 + v27; result = ((double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 244) * v26 * v25 / 1000000.0 + v21 + v24) * v23 / 1000.0; if ( result < 1.0 ) result = 1.0; return result; } //----- (004FCE00) -------------------------------------------------------- double __stdcall sub_4FCE00(int a1) { double v1; // ST2C_8@1 double v2; // ST2C_8@1 double v3; // ST2C_8@1 double v4; // ST2C_8@1 double v5; // ST2C_8@1 double v6; // ST2C_8@1 double v7; // ST2C_8@1 double v8; // ST2C_8@1 double v9; // ST2C_8@1 double v10; // ST2C_8@1 double v11; // ST24_8@3 double v12; // ST24_8@3 double v13; // ST24_8@3 double v14; // ST24_8@3 double v15; // ST24_8@3 double v16; // ST24_8@3 double v17; // ST24_8@3 double v18; // ST24_8@3 double v19; // ST24_8@3 double v20; // ST24_8@3 double v21; // ST24_8@3 double result; // st7@3 double v23; // [sp+4h] [bp-30h]@1 double v24; // [sp+Ch] [bp-28h]@1 double v25; // [sp+14h] [bp-20h]@1 double v26; // [sp+1Ch] [bp-18h]@1 double v27; // [sp+2Ch] [bp-8h]@1 v24 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1936); v25 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2140); v26 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1676); v23 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 860); v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 216); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 12) + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2460) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2052) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 828) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2868) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1032) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1440) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1848) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2256) + v9; v27 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2664) + v10; if ( v27 < 1.0 ) v27 = 1.0; v11 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 248); v12 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 44) + v11; v13 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2492) * v12; v14 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2084) * v13; v15 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 860) * v14; v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2900) * v15 / 1.0e12; v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1064) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1472) + v17; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1880) + v18; v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2288) + v19; v21 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2696) + v20 + v27; result = ((double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 248) * v26 * v25 / 1000000.0 + v21 + v24) * v23 / 1000.0; if ( result < 1.0 ) result = 1.0; return result; } //----- (004FD0D0) -------------------------------------------------------- void __stdcall sub_4FD0D0(int a1) { double v1; // ST68_8@1 double v2; // ST68_8@1 double v3; // ST68_8@1 double v4; // ST68_8@1 double v5; // ST68_8@1 double v6; // ST68_8@1 double v7; // ST68_8@1 double v8; // ST68_8@1 double v9; // ST68_8@1 double v10; // ST68_8@1 FILE *v11; // esi@5 int v12; // eax@11 int v13; // eax@23 int v14; // eax@35 int v15; // eax@47 int v16; // eax@59 int v17; // eax@71 int v18; // eax@83 int v19; // eax@95 int v20; // eax@107 int v21; // eax@119 int v22; // eax@132 int v23; // eax@144 __int16 v24; // kr00_2@145 double v25; // [sp+8h] [bp-15Ch]@3 double v26; // [sp+10h] [bp-154h]@3 double v27; // [sp+18h] [bp-14Ch]@3 double v28; // [sp+20h] [bp-144h]@3 double v29; // [sp+28h] [bp-13Ch]@3 double v30; // [sp+30h] [bp-134h]@3 double v31; // [sp+38h] [bp-12Ch]@3 double v32; // [sp+40h] [bp-124h]@3 double v33; // [sp+48h] [bp-11Ch]@3 double v34; // [sp+48h] [bp-11Ch]@121 double v35; // [sp+50h] [bp-114h]@1 double v36; // [sp+50h] [bp-114h]@133 double v37; // [sp+58h] [bp-10Ch]@3 char v38; // [sp+60h] [bp-104h]@5 unsigned int v39; // [sp+160h] [bp-4h]@1 int v40; // [sp+164h] [bp+0h]@1 v39 = (unsigned int)&v40 ^ __security_cookie; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 204); v2 = (double)*(signed int *)(*(int (**)(void))(**(_DWORD **)a1 + 1072))() + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2448) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2040) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 816) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2856) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1020) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1428) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1836) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2244) + v9; v35 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2652) + v10; if ( v35 < 1.0 ) v35 = 1.0; v28 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1044); v32 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2268); v29 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 20); v30 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 224); v31 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1652); v37 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2472); v27 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1932); v33 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2136); v26 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 836); v25 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2060); if ( !byte_7493ED ) { v11 = dword_14D15828; goto LABEL_121; } if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " RulesOfEngagement::roe_MinWC"); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( !dword_14D15828 ) goto LABEL_8; fputs(&v38, dword_14D15828); } v11 = dword_14D15828; LABEL_8: if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v12 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v12); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " strtotal = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v35); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v13 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v13); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " upgrade = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v28); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v14 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v14); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " abstate = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v32); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v15 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v15); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " purechar = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v29); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v16 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v16); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " item = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v30); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v17 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v17); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " wpt = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v31); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v18 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v18); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " abrate = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v37); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v19 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v19); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " masteryplus = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v27); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v20 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v20); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " masteryrate = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v33); v11 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v11 ) { v21 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v21); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } } } } } } } } } } } } } } } } } } } } } } } } } } } } LABEL_121: v34 = v31 * v30 / 1000.0 * v33 / 1000.0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " itemattack = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v34); v11 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v11 ) { v22 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v22); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } } } v36 = (v28 + v35 + v32 + v29 + v34 + v27) * v37 / 1000.0 * v26 / 1000.0 * v25 / 1000.0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " rst = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v36); v11 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v11 ) { v23 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v23); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } v24 = (*(int (**)(void))(**(_DWORD **)a1 + 2360))(); } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FDF00) -------------------------------------------------------- void __stdcall sub_4FDF00(int a1) { double v1; // ST68_8@1 double v2; // ST68_8@1 double v3; // ST68_8@1 double v4; // ST68_8@1 double v5; // ST68_8@1 double v6; // ST68_8@1 double v7; // ST68_8@1 double v8; // ST68_8@1 double v9; // ST68_8@1 double v10; // ST68_8@1 FILE *v11; // esi@5 int v12; // eax@11 int v13; // eax@23 int v14; // eax@35 int v15; // eax@47 int v16; // eax@59 int v17; // eax@71 int v18; // eax@83 int v19; // eax@95 int v20; // eax@107 int v21; // eax@119 int v22; // eax@132 int v23; // eax@144 __int16 v24; // kr00_2@145 double v25; // [sp+8h] [bp-15Ch]@3 double v26; // [sp+10h] [bp-154h]@3 double v27; // [sp+18h] [bp-14Ch]@3 double v28; // [sp+20h] [bp-144h]@3 double v29; // [sp+28h] [bp-13Ch]@3 double v30; // [sp+30h] [bp-134h]@3 double v31; // [sp+38h] [bp-12Ch]@3 double v32; // [sp+40h] [bp-124h]@3 double v33; // [sp+48h] [bp-11Ch]@3 double v34; // [sp+48h] [bp-11Ch]@121 double v35; // [sp+50h] [bp-114h]@1 double v36; // [sp+50h] [bp-114h]@133 double v37; // [sp+58h] [bp-10Ch]@3 char v38; // [sp+60h] [bp-104h]@5 unsigned int v39; // [sp+160h] [bp-4h]@1 int v40; // [sp+164h] [bp+0h]@1 v39 = (unsigned int)&v40 ^ __security_cookie; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 204); v2 = (double)*(signed int *)(*(int (**)(void))(**(_DWORD **)a1 + 1072))() + v1; v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2448) * v2; v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2040) * v3; v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 816) * v4; v6 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2856) * v5 / 1.0e12; v7 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1020) + v6; v8 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1428) + v7; v9 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1836) + v8; v10 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2244) + v9; v35 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2652) + v10; if ( v35 < 1.0 ) v35 = 1.0; v28 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1044); v32 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2268); v29 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 24); v30 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 228); v31 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1656); v37 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2472); v27 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1932); v33 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2136); v26 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 840); v25 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2064); if ( !byte_7493ED ) { v11 = dword_14D15828; goto LABEL_121; } if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " RulesOfEngagement::roe_MaxWC"); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( !dword_14D15828 ) goto LABEL_8; fputs(&v38, dword_14D15828); } v11 = dword_14D15828; LABEL_8: if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v12 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v12); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " strtotal = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v35); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v13 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v13); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " upgrade = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v28); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v14 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v14); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " abstate = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v32); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v15 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v15); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " purechar = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v29); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v16 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v16); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " item = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v30); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v17 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v17); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " wpt = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v31); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v18 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v18); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " abrate = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v37); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v19 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v19); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " masteryplus = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v27); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v11 ) { v20 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v20); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " masteryrate = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v33); v11 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v11 ) { v21 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v21); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } } } } } } } } } } } } } } } } } } } } } } } } } } } } LABEL_121: v34 = v31 * v30 / 1000.0 * v33 / 1000.0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " itemattack = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v34); v11 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v11 ) { v22 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v22); fflush(dword_14D15828); fclose(dword_14D15828); v11 = 0; dword_14D15828 = 0; } } } v36 = (v28 + v35 + v32 + v29 + v34 + v27) * v37 / 1000.0 * v26 / 1000.0 * v25 / 1000.0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v38, "%.255s", " rst = "); sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v38, dword_14D15828); v11 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v11 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)v36); v11 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v11 ) { v23 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v23); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } v24 = (*(int (**)(void))(**(_DWORD **)a1 + 2360))(); } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FED30) -------------------------------------------------------- char __stdcall sub_4FED30(int a1) { int v1; // eax@1 char result; // al@2 v1 = *(_DWORD *)(a1 + 8); if ( v1 ) result = *(_BYTE *)(*(_DWORD *)v1 + 34); else result = 0; return result; } //----- (004FED50) -------------------------------------------------------- double __stdcall sub_4FED50(int a1) { return 0.0; } //----- (004FED80) -------------------------------------------------------- void __stdcall sub_4FED80(int a1) { double v1; // ST14_8@1 double v2; // ST1C_8@1 int v3; // eax@29 double v4; // [sp+4h] [bp-314h]@2 double v5; // [sp+Ch] [bp-30Ch]@1 double v6; // [sp+Ch] [bp-30Ch]@22 char v7; // [sp+14h] [bp-304h]@20 char v8; // [sp+114h] [bp-204h]@12 char v9; // [sp+214h] [bp-104h]@4 unsigned int v10; // [sp+314h] [bp-4h]@1 int v11; // [sp+318h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 308); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 1124); v5 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2552) * (v2 + v1) / 1000.0; if ( v5 > 0.0 ) { v4 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1140))() + 3); if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v9, "%.255s", " After FreeStatBonus = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v9, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v5); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v8, "%.255s", " + "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v8, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v4); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v7, "%.255s", &unk_6CBF00); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v7, dword_14D15828); } } } } } } v6 = v4 + v5; if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v6); } if ( byte_7493ED && byte_14D159AC ) { if ( dword_14D15828 ) { v3 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v3); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } } } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FF070) -------------------------------------------------------- void __userpurge sub_4FF070(int a1, double a2, int a3) { int v3; // eax@17 double v4; // st7@21 __time32_t v5; // eax@22 char v6; // [sp+10h] [bp-104h]@3 unsigned int v7; // [sp+110h] [bp-4h]@1 int v8; // [sp+114h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; (*(void (__stdcall **)(int))(*(_DWORD *)a1 + 20))(a3); if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v6, "%.255s", "RulesOfEngagement::roe_HitRate "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v6, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } } } if ( (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) >= a2 ) { if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) ) { if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) <= 0x3E8u ) v4 = (double)(1000 - *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280)); } else { v5 = sub_418EA0((__time32_t)byte_14D15728, (int)" Shield Fail"); sub_418F20(v5, (int)&unk_13359E04); } } else { *(_BYTE *)(a3 + 19) = 1; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v6, "%.255s", " Shield Success"); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v6, dword_14D15828); } if ( byte_7493ED && byte_14D159AC ) { if ( dword_14D15828 ) { v3 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v3); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } } } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FF2B0) -------------------------------------------------------- double __stdcall sub_4FF2B0(int a1) { return 1000.0; } //----- (004FF2C0) -------------------------------------------------------- int __stdcall sub_4FF2C0(int a1, int a2) { int result; // eax@21 int v3; // eax@28 double v4; // [sp+4h] [bp-30Ch]@1 char v5; // [sp+Ch] [bp-304h]@19 char v6; // [sp+10Ch] [bp-204h]@11 char v7; // [sp+20Ch] [bp-104h]@3 unsigned int v8; // [sp+30Ch] [bp-4h]@1 int v9; // [sp+310h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v4 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a1 + 1144))() + 3); if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v7, "%.255s", " After FreeStatBonus = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v7, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", a2); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v6, "%.255s", " + "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v6, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v4); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v5, "%.255s", &unk_6CBF00); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v5, dword_14D15828); } } } } } } result = (signed int)v4; if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); result = (int)dword_14D15828; if ( dword_14D15828 ) result = fprintf(dword_14D15828, "%d", (signed int)v4 + a2); } if ( byte_7493ED && byte_14D159AC ) { if ( dword_14D15828 ) { v3 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v3); fflush(dword_14D15828); result = fclose(dword_14D15828); dword_14D15828 = 0; } } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FF520) -------------------------------------------------------- double __stdcall sub_4FF520(int a1, signed int a2) { int v2; // eax@1 int v3; // eax@2 bool v4; // cf@2 bool v5; // zf@2 int v6; // ecx@3 v2 = *(_DWORD *)(a1 + 8); if ( v2 ) { v6 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v6 + 180) < 0x12Cu; v5 = *(_DWORD *)(v6 + 180) == 300; } else { v3 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)a1 + 1296))(*(_DWORD *)(a1 + 4)); v4 = (unsigned int)v3 < 0x12C; v5 = v3 == 300; } if ( !(v4 | v5) ) a2 -= (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 2664))(); return (double)a2; } //----- (004FF580) -------------------------------------------------------- void __thiscall sub_4FF580(void *this, int a2) { void *v2; // edi@1 double v3; // ST30_8@2 v2 = this; if ( *(_BYTE *)(a2 + 16) ) { v3 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); (**(void (__thiscall ***)(void *, int))v2)(v2, a2); } } //----- (004FF680) -------------------------------------------------------- double __stdcall sub_4FF680(int a1) { return 200.0; } //----- (004FF690) -------------------------------------------------------- int __stdcall sub_4FF690(int a1, int a2, int a3) { int v3; // ST04_4@5 unsigned __int8 v4; // al@5 signed int v5; // eax@5 int v7; // ST04_4@9 unsigned __int8 v8; // al@9 signed int v9; // ST04_4@12 unsigned __int8 v10; // al@12 if ( a1 && a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1232))(a1) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 5 ) { v3 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1240))(a1); v5 = sub_5C5820(v4, v3); return ((signed int)((unsigned __int64)(a3 * v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a3 * v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1232))(a1) == 5 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { v7 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2); v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1240))(a1); v5 = sub_5C5880(v8, v7); return ((signed int)((unsigned __int64)(a3 * v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a3 * v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1232))(a1) == 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { v9 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1240))(a2); v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1240))(a1); v5 = sub_5C57C0(v10, v9); return ((signed int)((unsigned __int64)(a3 * v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a3 * v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } } return a3; } //----- (004FF7C0) -------------------------------------------------------- unsigned int __stdcall sub_4FF7C0(int a1) { int v1; // ebx@1 unsigned int v2; // edi@3 int v3; // edi@5 int v4; // eax@6 int v5; // ecx@8 unsigned int result; // eax@8 v1 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1804))(); if ( v1 && *(_DWORD *)(*(_DWORD *)v1 + 99) == 16 ) { v2 = *(_WORD *)(*(_DWORD *)(v1 + 4) + 163) - *(_WORD *)(*(_DWORD *)(v1 + 4) + 161); if ( (signed int)v2 <= 1 ) v2 = 1; v3 = (unsigned __int16)(sub_639500((int)&unk_1508B108, 0xF4240u) % v2 + *(_WORD *)(*(_DWORD *)(v1 + 4) + 161)); if ( *(_DWORD *)a1 ) v4 = (*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)a1 + 3372))(*(_DWORD *)(a1 + 4), 0); else v4 = 0; sub_4FF690(*(_DWORD *)a1, *(_DWORD *)(a1 + 4), v4); v5 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 124) * v3; result = ((signed int)((unsigned __int64)(v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } else { result = 0; } return result; } //----- (004FF8A0) -------------------------------------------------------- double __stdcall sub_4FF8A0(int a1) { double result; // st7@2 if ( *(_DWORD *)a1 ) result = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a1 + 1128))() + 1); else result = 0.0; return result; } //----- (004FF8D0) -------------------------------------------------------- double __stdcall sub_4FF8D0(int a1) { double result; // st7@2 if ( *(_DWORD *)a1 ) result = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a1 + 1132))() + 1); else result = 0.0; return result; } //----- (004FF900) -------------------------------------------------------- double __stdcall sub_4FF900(int a1) { double result; // st7@2 if ( *(_DWORD *)a1 ) result = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a1 + 1140))() + 1); else result = 0.0; return result; } //----- (004FF930) -------------------------------------------------------- double __stdcall sub_4FF930(int a1) { double result; // st7@2 if ( *(_DWORD *)a1 ) result = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a1 + 1144))() + 1); else result = 0.0; return result; } //----- (004FF960) -------------------------------------------------------- unsigned int __thiscall sub_4FF960(void *this, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 unsigned int result; // eax@3 int v7; // esi@5 v5 = this; if ( !*(_DWORD *)a4 ) { sub_639100(&unk_86DDD8, (int)"EngSklAtt::ena_attack : Null skill info", *(_DWORD *)a4 != 0); return 0; } if ( !*(_BYTE *)(**(_DWORD **)a4 + 34) ) return 0; v7 = sub_4FBA20(this, a2, a3, a4); result = *(_WORD *)(**(_DWORD **)a4 + 56) + ((unsigned int)((unsigned int)((sub_4FBB20(v5, a2, a3, a4) + v7) * *(_DWORD *)(**(_DWORD **)a4 + 52)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); dword_14D9AE10 = dword_14D9AE14 & (dword_14D9AE10 + 1); if ( *(_WORD *)&word_14D92E10[2 * dword_14D9AE10] ) { *(_BYTE *)a5 = 0; } else { result *= 2; *(_BYTE *)a5 = 1; } return result; } // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; //----- (004FFA20) -------------------------------------------------------- int __stdcall sub_4FFA20(int a1, double a2, double a3) { FILE *v3; // esi@3 int v4; // eax@13 int v5; // eax@25 int v6; // eax@37 int v7; // eax@55 unsigned int v9; // [sp-4h] [bp-23Ch]@1 double v10; // [sp+18h] [bp-220h]@26 double v11; // [sp+20h] [bp-218h]@38 double v12; // [sp+20h] [bp-218h]@40 char v13; // [sp+28h] [bp-210h]@46 char v14; // [sp+128h] [bp-110h]@3 unsigned int v15; // [sp+228h] [bp-10h]@1 int v16; // [sp+234h] [bp-4h]@1 int v17; // [sp+238h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v9 = (unsigned int)&v17 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagement::roe_Damage"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagement::roe_Damage"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; if ( !byte_7493ED ) goto LABEL_26; if ( byte_14D159AC ) { sprintf(&v14, "%.255s", " AttackPower = "); sub_418E40((__time32_t)byte_14D15728); v3 = dword_14D15828; if ( !dword_14D15828 ) goto LABEL_6; fputs(&v14, dword_14D15828); } v3 = dword_14D15828; LABEL_6: if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v3 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)a2); v3 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC && v3 ) { v4 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v4); fflush(dword_14D15828); fclose(dword_14D15828); v3 = 0; dword_14D15828 = 0; } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v14, "%.255s", " DefendPower = "); sub_418E40((__time32_t)byte_14D15728); v3 = dword_14D15828; if ( dword_14D15828 ) { fputs(&v14, dword_14D15828); v3 = dword_14D15828; } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); v3 = dword_14D15828; if ( dword_14D15828 ) { fprintf(dword_14D15828, "%d", (signed int)a3); v3 = dword_14D15828; } } if ( byte_7493ED && byte_14D159AC && v3 ) { v5 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v5); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } } } LABEL_26: v10 = (double)(unsigned __int8)(*(int (__stdcall **)(unsigned int))(**(_DWORD **)a1 + 1240))(v9); if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v14, "%.255s", " Level(Att) = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v14, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v10); } if ( byte_7493ED && byte_14D159AC && dword_14D15828 ) { v6 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v6); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } v11 = (double)*(signed int *)(a1 + 40) * a2 / 1000.0; if ( v11 <= 0.0 ) v11 = 1.0; v12 = ((double)(unsigned __int8)(*(int (**)(void))(**(_DWORD **)a1 + 1240))() + 1.0) * v11 / a3; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v14, "%.255s", " Damage = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v14, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v13, "%.255s", "AttackPower * (Level(att) + 1) / DefendPower = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v13, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v12); } if ( byte_7493ED && byte_14D159AC && dword_14D15828 ) { v7 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v7); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } } } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_Damage"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (004FFF40) -------------------------------------------------------- int __stdcall sub_4FFF40(int a1, double a2, double a3) { unsigned int v3; // ST14_4@1 int v4; // eax@36 double v6; // [sp+20h] [bp-428h]@1 double v7; // [sp+30h] [bp-418h]@1 char v8; // [sp+38h] [bp-410h]@11 char v9; // [sp+138h] [bp-310h]@19 char v10; // [sp+238h] [bp-210h]@3 char v11; // [sp+338h] [bp-110h]@27 unsigned int v12; // [sp+438h] [bp-10h]@1 int v13; // [sp+444h] [bp-4h]@1 int v14; // [sp+448h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v3 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_Damage"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalPY::roe_Damage"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; sub_4FFA20(a1, a2, a3); v6 = (double)*(_WORD *)((*(int (__stdcall **)(unsigned int))(**(_DWORD **)a1 + 1128))(v3) + 1); v7 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1140))() + 1); if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v10, "%.255s", " After FreeStatBonus = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v10, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v8, "%.255s", " + "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v8, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v6); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v9, "%.255s", " - "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v9, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v7); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v11, "%.255s", &unk_6CBF00); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v11, dword_14D15828); } } } } } } } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)(v6 - v7 + a2)); } if ( byte_7493ED && byte_14D159AC && dword_14D15828 ) { v4 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v4); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_Damage"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (00500320) -------------------------------------------------------- int __stdcall sub_500320(int a1, double a2, double a3) { unsigned int v3; // ST14_4@1 int v4; // eax@36 double v6; // [sp+20h] [bp-428h]@1 double v7; // [sp+30h] [bp-418h]@1 char v8; // [sp+38h] [bp-410h]@11 char v9; // [sp+138h] [bp-310h]@19 char v10; // [sp+238h] [bp-210h]@3 char v11; // [sp+338h] [bp-110h]@27 unsigned int v12; // [sp+438h] [bp-10h]@1 int v13; // [sp+444h] [bp-4h]@1 int v14; // [sp+448h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v3 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_Damage"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalMA::roe_Damage"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; sub_4FFA20(a1, a2, a3); v6 = (double)*(_WORD *)((*(int (__stdcall **)(unsigned int))(**(_DWORD **)a1 + 1132))(v3) + 1); v7 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1144))() + 1); if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v10, "%.255s", " After FreeStatBonus = "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v10, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v8, "%.255s", " + "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v8, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v6); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v9, "%.255s", " - "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v9, dword_14D15828); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)v7); } if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v11, "%.255s", &unk_6CBF00); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v11, dword_14D15828); } } } } } } } } if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)(v6 - v7 + a2)); } if ( byte_7493ED && byte_14D159AC && dword_14D15828 ) { v4 = sub_418E40((__time32_t)byte_14D15728); sub_654AB0(10, (FILE *)v4); fflush(dword_14D15828); fclose(dword_14D15828); dword_14D15828 = 0; } } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_Damage"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (00500700) -------------------------------------------------------- int __userpurge sub_500700(int a1, double a2, int a3) { int v3; // edi@1 double v4; // ST28_8@9 double v8; // ST28_8@21 double v10; // st7@25 double v11; // ST28_8@26 double v12; // ST20_8@26 int v13; // eax@27 __time32_t v14; // eax@29 __time32_t v15; // ebx@29 __time32_t v16; // eax@33 __time32_t v17; // ebx@33 __time32_t v18; // eax@37 __time32_t v19; // ebx@37 unsigned int v20; // [sp-4h] [bp-13Ch]@1 double v21; // [sp+10h] [bp-128h]@26 double v22; // [sp+18h] [bp-120h]@26 double v23; // [sp+20h] [bp-118h]@29 char v24; // [sp+28h] [bp-110h]@3 unsigned int v25; // [sp+128h] [bp-10h]@1 int v26; // [sp+134h] [bp-4h]@1 int v27; // [sp+138h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v20 = (unsigned int)&v27 ^ __security_cookie; v3 = a1; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_HitRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalPY::roe_HitRate"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v24, "%.255s", "RulesOfEngagementNormalPY::roe_HitRate "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v24, dword_14D15828); } } (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v3 + 20))(v3, a3, v20); if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } } v4 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 20))(v3, a3); if ( (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1488))() ) { v8 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, a3); } if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) ) { if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) > 0x3E8u ) { --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_HitRate"); } v10 = (double)(1000 - *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280)); } else { v11 = sub_4FBBF0(a3); v22 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a3 + 1136))() + 1) + v11; v12 = sub_4FBE40(a3); v21 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1136))() + 3) + v12; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1552))() ) { v13 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))(); if ( v13 ) v21 = (double)sub_4C8510(v13 + 3464, 0) + v21; } v23 = v22 * 850.0 / v21; v14 = sub_418EA0((__time32_t)byte_14D15728, (int)word_6A2BF8); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); if ( *(_DWORD *)(v15 + 256) ) fprintf(*(FILE **)(v15 + 256), "%d", (signed int)v22); } } v16 = sub_418EA0(v15, (int)" * 850 / "); v17 = v16; if ( byte_7493ED ) { if ( *(_BYTE *)(v16 + 644) ) { sub_418E40(v16); if ( *(_DWORD *)(v17 + 256) ) fprintf(*(FILE **)(v17 + 256), "%d", (signed int)v21); } } v18 = sub_418EA0(v17, (int)&unk_6CBF00); v19 = v18; if ( byte_7493ED && *(_BYTE *)(v18 + 644) ) { sub_418E40(v18); if ( *(_DWORD *)(v19 + 256) ) fprintf(*(FILE **)(v19 + 256), "%d", (signed int)v23); } sub_418F20(v19, (int)&unk_13359E04); sub_4FF520(a3, (signed int)v23); } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_HitRate"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (00500C10) -------------------------------------------------------- double __stdcall sub_500C10(int a1) { double v1; // ST24_8@1 double v2; // ST2C_8@1 double v3; // ST1C_8@1 double v4; // ST14_8@1 double result; // st7@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_CriticalRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalPY::roe_CriticalRate"; dword_750AB8[dword_750CB8++] = -1; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 536); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1760); v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2576); v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2616); result = v2 + v1 + v3 - v4 - (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 576); sub_4FF2C0(a1, (signed int)result); if ( result < 1.0 ) result = 1.0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_CriticalRate"); return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00500D50) -------------------------------------------------------- double __userpurge sub_500D50(double st7_0, int a1) { unsigned int v2; // edi@2 unsigned int v3; // edi@3 int v4; // eax@3 double v6; // [sp+Ch] [bp-18h]@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_DefendPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalPY::roe_DefendPower"; dword_750AB8[dword_750CB8++] = -1; sub_4FC0B0(a1); v6 = st7_0; if ( *(_DWORD *)a1 ) { v2 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1264))(); if ( v2 ) { v3 = 1000 * (v2 - (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1256))()) / v2; v4 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))(); if ( v4 ) v6 = (double)sub_4C84E0(v4 + 3408, v3) + st7_0; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_DefendPower"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00500E60) -------------------------------------------------------- int __userpurge sub_500E60(int a1, double a2, int a3) { int v3; // edi@1 double v4; // ST28_8@9 double v8; // st7@22 double v9; // ST28_8@23 double v10; // ST20_8@23 int v11; // eax@24 __time32_t v12; // eax@26 __time32_t v13; // ebx@26 __time32_t v14; // eax@30 __time32_t v15; // ebx@30 __time32_t v16; // eax@34 __time32_t v17; // ebx@34 unsigned int v18; // [sp-4h] [bp-13Ch]@1 double v19; // [sp+10h] [bp-128h]@23 double v20; // [sp+18h] [bp-120h]@23 double v21; // [sp+20h] [bp-118h]@26 char v22; // [sp+28h] [bp-110h]@3 unsigned int v23; // [sp+128h] [bp-10h]@1 int v24; // [sp+134h] [bp-4h]@1 int v25; // [sp+138h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v18 = (unsigned int)&v25 ^ __security_cookie; v3 = a1; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_HitRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalMA::roe_HitRate"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v22, "%.255s", "RulesOfEngagementNormalMA::roe_HitRate "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v22, dword_14D15828); } } (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v3 + 20))(v3, a3, v18); if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } } v4 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 20))(v3, a3); if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) ) { if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) > 0x3E8u ) { --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_HitRate"); } v8 = (double)(1000 - *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280)); } else { v9 = sub_4FBBF0(a3); v20 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a3 + 1136))() + 1) + v9; v10 = sub_4FBE40(a3); v19 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1136))() + 3) + v10; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1552))() ) { v11 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))(); if ( v11 ) v19 = (double)sub_4C8510(v11 + 3464, 0) + v19; } v21 = v20 * 850.0 / v19; v12 = sub_418EA0((__time32_t)byte_14D15728, (int)word_6A2BF8); v13 = v12; if ( byte_7493ED ) { if ( *(_BYTE *)(v12 + 644) ) { sub_418E40(v12); if ( *(_DWORD *)(v13 + 256) ) fprintf(*(FILE **)(v13 + 256), "%d", (signed int)v20); } } v14 = sub_418EA0(v13, (int)" * 850 / "); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); if ( *(_DWORD *)(v15 + 256) ) fprintf(*(FILE **)(v15 + 256), "%d", (signed int)v19); } } v16 = sub_418EA0(v15, (int)&unk_6CBF00); v17 = v16; if ( byte_7493ED && *(_BYTE *)(v16 + 644) ) { sub_418E40(v16); if ( *(_DWORD *)(v17 + 256) ) fprintf(*(FILE **)(v17 + 256), "%d", (signed int)v21); } sub_418F20(v17, (int)&unk_13359E04); sub_4FF520(a3, (signed int)v21); } --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_HitRate"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (00501300) -------------------------------------------------------- double __stdcall sub_501300(int a1) { double v1; // ST24_8@1 double v2; // ST2C_8@1 double v3; // ST1C_8@1 double v4; // ST14_8@1 double result; // st7@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_CriticalRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalMA::roe_CriticalRate"; dword_750AB8[dword_750CB8++] = -1; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 536); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1760); v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2576); v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2616); result = v2 + v1 + v3 - v4 - (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 576); sub_4FF2C0(a1, (signed int)result); if ( result < 1.0 ) result = 1.0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_CriticalRate"); return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00501440) -------------------------------------------------------- double __stdcall sub_501440(int a1) { unsigned int v1; // edi@2 unsigned int v2; // edi@3 int v3; // eax@3 double v5; // [sp+Ch] [bp-18h]@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_DefendPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalMA::roe_DefendPower"; dword_750AB8[dword_750CB8++] = -1; v5 = sub_4FC8A0(a1); if ( *(_DWORD *)a1 ) { v1 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1264))(); if ( v1 ) { v2 = 1000 * (v1 - (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1256))()) / v1; v3 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))(); if ( v3 ) v5 = (double)sub_4C84E0(v3 + 3436, v2) + v5; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_DefendPower"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00501550) -------------------------------------------------------- int __userpurge sub_501550(int a1, double a2, int a3) { int v3; // edi@1 double v4; // ST44_8@9 double v8; // st7@22 int v9; // eax@23 double v10; // ST3C_8@24 double v11; // ST34_8@24 int v12; // eax@25 double v13; // st7@26 double v14; // st4@28 signed int v15; // ebx@28 double v16; // ST3C_8@29 double v17; // st6@29 int v18; // ST4C_4@29 __time32_t v19; // eax@30 __time32_t v20; // eax@30 __time32_t v21; // eax@30 __time32_t v22; // eax@30 __time32_t v23; // eax@30 __time32_t v24; // eax@30 __time32_t v25; // eax@30 __time32_t v26; // eax@30 int v27; // [sp-24h] [bp-160h]@28 int v28; // [sp-20h] [bp-15Ch]@28 char v29[4]; // [sp-1Ch] [bp-158h]@28 int v30; // [sp-18h] [bp-154h]@28 char v31[4]; // [sp-14h] [bp-150h]@28 int v32; // [sp-10h] [bp-14Ch]@28 int v33; // [sp-Ch] [bp-148h]@28 int v34; // [sp-8h] [bp-144h]@28 unsigned int v35; // [sp-4h] [bp-140h]@1 int v36; // [sp-4h] [bp-140h]@28 double v37; // [sp+10h] [bp-12Ch]@24 double v38; // [sp+18h] [bp-124h]@24 double v39; // [sp+20h] [bp-11Ch]@23 char v40; // [sp+2Ch] [bp-110h]@3 unsigned int v41; // [sp+12Ch] [bp-10h]@1 int v42; // [sp+138h] [bp-4h]@1 int v43; // [sp+13Ch] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v35 = (unsigned int)&v43 ^ __security_cookie; v3 = a1; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_HitRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementPhisycalSkill::roe_HitRate"; dword_750AB8[dword_750CB8++] = -1; v42 = 0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v40, "%.255s", "RulesOfEngagementPhisycalSkill::roe_HitRate "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v40, dword_14D15828); } } (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v3 + 20))(v3, a3, v35); if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } } v4 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 20))(v3, a3); if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) ) { if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) > 0x3E8u ) { --dword_750CB8; v42 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_HitRate"); } v8 = (double)(1000 - *(_WORD *)((*(int (__thiscall **)(_DWORD))(**(_DWORD **)(a3 + 4) + 1072))(*(_DWORD *)(a3 + 4)) + 3280)); } else { v9 = **(_DWORD **)(a3 + 8); v39 = (double)*(unsigned int *)(v9 + 35); if ( *(_DWORD *)(v9 + 58) ) { v16 = (double)(unsigned __int8)(*(int (**)(void))(**(_DWORD **)a3 + 1240))(); v17 = v16 / (double)(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1240))() * v39; v15 = (signed int)v17; v36 = (int)&unk_13359E04; v34 = (signed int)v17; v33 = (int)&unk_6CBF00; v18 = *(_DWORD *)a3; v32 = (signed int)v39; *(_DWORD *)v31 = " * "; v30 = (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1240))(); *(_DWORD *)v29 = " / "; v28 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v18 + 1240))(); v27 = (int)" As Skill "; } else { v10 = sub_4FBBF0(a3); v38 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a3 + 1136))() + 1) + v10; v11 = sub_4FBE40(a3); v37 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1136))() + 3) + v11; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1552))() && (v12 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))()) != 0 ) v13 = (double)sub_4C8510(v12 + 3464, 0) + v37; else v13 = v37; v14 = v38 * v39 / v13; v15 = (signed int)v14; v36 = (int)&unk_13359E04; v34 = (signed int)v14; v33 = (int)&unk_6CBF00; v32 = (signed int)v13; *(_DWORD *)v31 = " / "; v30 = (signed int)v39; *(_DWORD *)v29 = " * "; v28 = (signed int)v38; v27 = (int)" As Normal "; } v19 = sub_418EA0((__time32_t)byte_14D15728, v27); v20 = sub_43B910(v19, v28); v21 = sub_418EA0(v20, *(int *)v29); v22 = sub_43B910(v21, v30); v23 = sub_418EA0(v22, *(int *)v31); v24 = sub_43B910(v23, v32); v25 = sub_418EA0(v24, v33); v26 = sub_43B910(v25, v34); sub_418F20(v26, v36); sub_4FF520(a3, v15); } --dword_750CB8; v42 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_HitRate"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (00501A20) -------------------------------------------------------- double __stdcall sub_501A20(int a1) { double v1; // ST0C_8@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_CriticalRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementPhisycalSkill::roe_CriticalRate"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_500C10(a1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_CriticalRate"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00501AD0) -------------------------------------------------------- double __userpurge sub_501AD0(double result, int a1) { sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_DefendPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementPhisycalSkill::roe_DefendPower"; dword_750AB8[dword_750CB8++] = -1; sub_500D50(result, a1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_DefendPower"); return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00501B80) -------------------------------------------------------- int __userpurge sub_501B80(int a1, double a2, int a3) { int v3; // edi@1 double v4; // ST3C_8@9 double v8; // st7@22 int v9; // eax@23 double v10; // ST44_8@24 double v11; // ST34_8@24 int v12; // eax@25 double v13; // st7@26 double v14; // st4@28 signed int v15; // ebx@28 double v16; // ST44_8@29 double v17; // ST44_8@29 double v18; // ST44_8@29 double v19; // ST44_8@29 double v20; // ST44_8@29 double v21; // ST44_8@29 int v22; // eax@30 double v23; // st7@31 double v24; // st4@33 __time32_t v25; // eax@34 __time32_t v26; // eax@34 __time32_t v27; // eax@34 __time32_t v28; // eax@34 __time32_t v29; // eax@34 __time32_t v30; // eax@34 __time32_t v31; // eax@34 __time32_t v32; // eax@34 int v33; // [sp-24h] [bp-160h]@28 int v34; // [sp-20h] [bp-15Ch]@28 int v35; // [sp-1Ch] [bp-158h]@28 int v36; // [sp-18h] [bp-154h]@28 int v37; // [sp-14h] [bp-150h]@28 int v38; // [sp-10h] [bp-14Ch]@28 int v39; // [sp-Ch] [bp-148h]@28 int v40; // [sp-8h] [bp-144h]@28 unsigned int v41; // [sp-4h] [bp-140h]@1 int v42; // [sp-4h] [bp-140h]@28 double v43; // [sp+10h] [bp-12Ch]@24 double v44; // [sp+10h] [bp-12Ch]@29 double v45; // [sp+18h] [bp-124h]@23 double v46; // [sp+20h] [bp-11Ch]@24 double v47; // [sp+20h] [bp-11Ch]@29 char v48; // [sp+2Ch] [bp-110h]@3 unsigned int v49; // [sp+12Ch] [bp-10h]@1 int v50; // [sp+138h] [bp-4h]@1 int v51; // [sp+13Ch] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v41 = (unsigned int)&v51 ^ __security_cookie; v3 = a1; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_HitRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementMagicalSkill::roe_HitRate"; dword_750AB8[dword_750CB8++] = -1; v50 = 0; if ( byte_7493ED ) { if ( byte_14D159AC ) { sprintf(&v48, "%.255s", "RulesOfEngagementMagicalSkill::roe_HitRate "); sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fputs(&v48, dword_14D15828); } } (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v3 + 20))(v3, a3, v41); if ( byte_7493ED ) { if ( byte_14D159AC ) { sub_418E40((__time32_t)byte_14D15728); if ( dword_14D15828 ) fprintf(dword_14D15828, "%d", (signed int)a2); } } v4 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 20))(v3, a3); if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) ) { if ( *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280) > 0x3E8u ) { --dword_750CB8; v50 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_HitRate"); } v8 = (double)(1000 - *(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 3280)); } else { v9 = **(_DWORD **)(a3 + 8); v45 = (double)*(unsigned int *)(v9 + 39); if ( *(_DWORD *)(v9 + 58) == 1 ) { v10 = sub_4FBBF0(a3); v46 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a3 + 1136))() + 1) + v10; v11 = sub_4FBE40(a3); v43 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1136))() + 3) + v11; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1552))() && (v12 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))()) != 0 ) v13 = (double)sub_4C8510(v12 + 3464, 0) + v43; else v13 = v43; v14 = v46 * v45 / v13; v15 = (signed int)v14; v42 = (int)&unk_13359E04; v40 = (signed int)v14; v39 = (int)&unk_6CBF00; v38 = (signed int)v13; v37 = (int)" / "; v36 = (signed int)v45; v35 = (int)" * "; v34 = (signed int)v46; v33 = (int)" As Normal "; } else { v16 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a3 + 1072))() + 1460); v17 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a3 + 1072))() + 236) + v16; v18 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a3 + 1072))() + 1888) + v17; v44 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a3 + 1072))() + 2296) + v18; v19 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 1464); v20 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 240) + v19; v21 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 1892) + v20; v47 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))() + 2300) + v21; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1552))() && (v22 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1072))()) != 0 ) v23 = (double)sub_4C8510(v22 + 3464, 0) + v47; else v23 = v47; v24 = v44 * v45 / v23; v15 = (signed int)v24; v42 = (int)&unk_13359E04; v40 = (signed int)v24; v39 = (int)&unk_6CBF00; v38 = (signed int)v23; v37 = (int)" / "; v36 = (signed int)v45; v35 = (int)" * "; v34 = (signed int)v44; v33 = (int)" As Skill "; } v25 = sub_418EA0((__time32_t)byte_14D15728, v33); v26 = sub_43B910(v25, v34); v27 = sub_418EA0(v26, v35); v28 = sub_43B910(v27, v36); v29 = sub_418EA0(v28, v37); v30 = sub_43B910(v29, v38); v31 = sub_418EA0(v30, v39); v32 = sub_43B910(v31, v40); sub_418F20(v32, v42); sub_4FF520(a3, v15); } --dword_750CB8; v50 = -1; return sub_467660((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_HitRate"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D159AC: using guessed type char byte_14D159AC; //----- (00502130) -------------------------------------------------------- double __stdcall sub_502130(int a1) { double v1; // ST24_8@1 double v2; // ST2C_8@1 double v3; // ST1C_8@1 double v4; // ST14_8@1 double result; // st7@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_CriticalRate"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementMagicalSkill::roe_CriticalRate"; dword_750AB8[dword_750CB8++] = -1; v1 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 536); v2 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 1760); v3 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)a1 + 1072))() + 2576); v4 = (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 2616); result = v2 + v1 + v3 - v4 - (double)*(signed int *)((*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))() + 576); sub_4FF2C0(a1, (signed int)result); if ( result < 1.0 ) result = 1.0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_CriticalRate"); return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502270) -------------------------------------------------------- double __stdcall sub_502270(int a1) { unsigned int v1; // edi@2 unsigned int v2; // edi@3 int v3; // eax@3 double v5; // [sp+Ch] [bp-18h]@1 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_DefendPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementMagicalSkill::roe_DefendPower"; dword_750AB8[dword_750CB8++] = -1; v5 = sub_4FC8A0(a1); if ( *(_DWORD *)a1 ) { v1 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1264))(); if ( v1 ) { v2 = 1000 * (v1 - (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1256))()) / v1; v3 = (*(int (**)(void))(**(_DWORD **)(a1 + 4) + 1072))(); if ( v3 ) v5 = (double)sub_4C84E0(v3 + 3436, v2) + v5; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_DefendPower"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502380) -------------------------------------------------------- int __thiscall sub_502380(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"; dword_750AB8[dword_750CB8++] = -1; sub_4C8F40((char *)v2 + 4120); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502430) -------------------------------------------------------- int __userpurge sub_502430(void *this, double st7_0, char a2) { int v3; // ebx@1 int (__thiscall *v4)(_DWORD); // eax@1 int v5; // eax@1 int v6; // edx@1 int v7; // eax@1 int v8; // edx@1 int v9; // eax@1 int v10; // edx@1 int v11; // eax@1 int v12; // edx@1 int (__thiscall *v13)(_DWORD); // eax@1 int v14; // eax@6 int v15; // eax@6 int v16; // esi@11 int v17; // edx@11 int v18; // esi@11 int v19; // edx@11 int v20; // esi@11 signed int v21; // eax@11 int v22; // edx@11 int v23; // esi@11 double v24; // st7@11 int v25; // edx@11 int v26; // esi@11 int v27; // edx@11 int v28; // esi@11 signed int v29; // eax@11 int v30; // edx@11 int v31; // esi@11 signed int v32; // eax@11 int v33; // edx@11 int v34; // esi@11 int v35; // edi@13 int (__thiscall *v36)(_DWORD); // edx@13 int v37; // edx@13 int v38; // eax@13 int v39; // eax@13 int v40; // eax@13 int v41; // eax@13 int v42; // eax@13 int v43; // eax@13 int v44; // eax@13 int v45; // eax@13 int v46; // eax@13 int v47; // eax@13 int v48; // eax@13 int v49; // eax@13 int (__thiscall *v50)(_DWORD); // eax@13 int v51; // esi@13 int v52; // edi@13 int v53; // ecx@13 int v54; // eax@16 int v55; // edx@17 int v57; // [sp-8h] [bp-128h]@2 int v58; // [sp-4h] [bp-124h]@2 char v59; // [sp+10h] [bp-110h]@13 int v60; // [sp+24h] [bp-FCh]@17 int v61; // [sp+28h] [bp-F8h]@17 int v62; // [sp+2Ch] [bp-F4h]@17 int v63; // [sp+34h] [bp-ECh]@17 int v64; // [sp+38h] [bp-E8h]@17 int v65; // [sp+3Ch] [bp-E4h]@17 int v66; // [sp+40h] [bp-E0h]@17 int v67; // [sp+DCh] [bp-44h]@1 char v68; // [sp+E0h] [bp-40h]@1 int v69; // [sp+10Ch] [bp-14h]@13 int v70; // [sp+110h] [bp-10h]@13 int v71; // [sp+11Ch] [bp-4h]@1 int v72; // [sp+128h] [bp+8h]@13 int v73; // [sp+128h] [bp+8h]@13 int v74; // [sp+128h] [bp+8h]@14 v3 = (int)this; v67 = (int)"ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2272); v71 = 0; v5 = v4(v3); v6 = *(_DWORD *)v3; *(_DWORD *)(v3 + 81792) -= v5; v7 = (*(int (__thiscall **)(int))(v6 + 2272))(v3); v8 = *(_DWORD *)v3; *(_DWORD *)(v3 + 81796) -= v7; v9 = (*(int (__thiscall **)(int))(v8 + 2272))(v3); v10 = *(_DWORD *)v3; *(_DWORD *)(v3 + 81804) -= v9; v11 = (*(int (__thiscall **)(int))(v10 + 2272))(v3); v12 = *(_DWORD *)v3; *(_DWORD *)(v3 + 81800) -= v11; *(_DWORD *)(v3 + 81808) -= (*(int (__thiscall **)(int))(v12 + 2272))(v3); sub_4C8F40((void *)(v3 + 4120)); sub_42A950((int)&v68, v3, v3, 0, 0, 0); v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072); LOBYTE(v71) = 1; if ( !v13(v3) ) { v58 = 0; v57 = (int)"ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange so_parameter() NULL return"; LABEL_3: sub_639100(&unk_86DDD8, v57, v58); LABEL_4: LOBYTE(v71) = 0; nullsub_2(&v68); v71 = -1; goto LABEL_18; } if ( -1 == *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072))(v3) + 3284) ) { v16 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1128))(v3) + 1); sub_4FD0D0((int)&v68); v17 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7200) = v16 + (signed int)st7_0; v18 = *(_WORD *)((*(int (__thiscall **)(int))(v17 + 1128))(v3) + 1); sub_4FDF00((int)&v68); v19 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7204) = v18 + (signed int)st7_0; v20 = *(_WORD *)((*(int (__thiscall **)(int))(v19 + 1132))(v3) + 1) - *(_DWORD *)(v3 + 4364); v21 = (signed int)sub_4FCB30((int)&v68); v22 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7220) = v20 + v21; v23 = *(_WORD *)((*(int (__thiscall **)(int))(v22 + 1132))(v3) + 1) - *(_DWORD *)(v3 + 4368); v24 = sub_4FCE00((int)&v68); v25 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7224) = v23 + (signed int)v24; v26 = *(_WORD *)((*(int (__thiscall **)(int))(v25 + 1140))(v3) + 1); sub_4FC0B0((int)&v68); v27 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7208) = v26 + (signed int)v24; v28 = *(_WORD *)((*(int (__thiscall **)(int))(v27 + 1144))(v3) + 1); v29 = (signed int)sub_4FC8A0((int)&v68); v30 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7228) = v28 + v29; v31 = *(_WORD *)((*(int (__thiscall **)(int))(v30 + 1136))(v3) + 1); v32 = (signed int)sub_4FBBF0((int)&v68); v33 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7212) = v31 + v32; v34 = *(_WORD *)((*(int (__thiscall **)(int))(v33 + 1136))(v3) + 3); *(_DWORD *)(v3 + 7216) = v34 + (signed int)sub_4FBE40((int)&v68); } else { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1072))(v3); v15 = sub_418D40((int)&unk_14D159B0, *(_WORD *)(v14 + 3284)); if ( !v15 ) { v58 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1072))(v3) + 3284); v57 = (int)"ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange Not Find MobID :"; goto LABEL_3; } *(_DWORD *)(v3 + 7208) = *(_WORD *)(*(_DWORD *)(v15 + 4) + 37); *(_DWORD *)(v3 + 7228) = *(_WORD *)(*(_DWORD *)(v15 + 4) + 41); *(_DWORD *)(v3 + 7216) = *(_WORD *)(*(_DWORD *)(v15 + 4) + 39); if ( *(_DWORD *)(v15 + 12) ) { *(_DWORD *)(v3 + 7200) = 0; *(_DWORD *)(v3 + 7204) = 0; *(_DWORD *)(v3 + 7220) = 0; *(_DWORD *)(v3 + 7224) = 0; *(_DWORD *)(v3 + 7212) = 0; } else { *(_DWORD *)(v3 + 7200) = *(_DWORD *)(**(_DWORD **)(v15 + 8) + 83); *(_DWORD *)(v3 + 7204) = *(_DWORD *)(**(_DWORD **)(v15 + 8) + 87); *(_DWORD *)(v3 + 7220) = *(_DWORD *)(**(_DWORD **)(v15 + 8) + 93); *(_DWORD *)(v3 + 7224) = *(_DWORD *)(**(_DWORD **)(v15 + 8) + 97); *(_DWORD *)(v3 + 7212) = *(_WORD *)(**(_DWORD **)(v15 + 8) + 91); } } if ( !a2 ) goto LABEL_4; v35 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 4149; *(_BYTE *)v35 = 0; v36 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1264); v70 = v35; v72 = v36(v3); v69 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1268))(v3); sub_4C8B60(v72, *(_DWORD *)(v3 + 81784), 16, v35); sub_4C8B60(v69, *(_DWORD *)(v3 + 81788), 17, v35); v37 = v69; v38 = *(_DWORD *)v3; *(_DWORD *)(v3 + 81784) = v72; *(_DWORD *)(v3 + 81788) = v37; v73 = (*(int (__thiscall **)(int))(v38 + 3468))(v3); v39 = sub_55F330(v3); sub_4C8B60(v73, v39, 36, v35); sub_55F340(v3, v73); v40 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1128))(v3); sub_4C8B60(*(_WORD *)(v40 + 1), -1, 18, v35); v41 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1140))(v3); sub_4C8B60(*(_WORD *)(v41 + 1), -1, 19, v35); v42 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1132))(v3); sub_4C8B60(*(_WORD *)(v42 + 1), -1, 20, v35); v43 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1144))(v3); sub_4C8B60(*(_WORD *)(v43 + 1), -1, 21, v35); v44 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1136))(v3); sub_4C8B60(*(_WORD *)(v44 + 1), -1, 22, v35); v45 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1136))(v3); sub_4C8B60(*(_WORD *)(v45 + 3), -1, 23, v35); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1144))(v3); sub_4C8B60(*(_WORD *)(v46 + 3), -1, 24, v35); v47 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1140))(v3); sub_4C8B60(*(_WORD *)(v47 + 3), -1, 25, v35); v48 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1140))(v3); sub_4C8B60(*(_WORD *)(v48 + 5), -1, 26, v35); v49 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1144))(v3); sub_4C8B60(*(_WORD *)(v49 + 5), -1, 27, v35); v50 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1176); memcpy(&v59, (const void *)(v3 + 7180), 0xCCu); v51 = *(_WORD *)(v50(v3) + 18); v52 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1176))(v3) + 20); *(_DWORD *)(v3 + 7200) = v51 * *(_DWORD *)(v3 + 7200) / 1024; *(_DWORD *)(v3 + 7204) = v51 * *(_DWORD *)(v3 + 7204) / 1024; *(_DWORD *)(v3 + 7220) = v51 * *(_DWORD *)(v3 + 7220) / 1024; *(_DWORD *)(v3 + 7224) = v51 * *(_DWORD *)(v3 + 7224) / 1024; v53 = v70; *(_DWORD *)(v3 + 7208) = v52 * *(_DWORD *)(v3 + 7208) / 1024; *(_DWORD *)(v3 + 7228) = v52 * *(_DWORD *)(v3 + 7228) / 1024; if ( sub_4C8BF0((void *)(v3 + 7180), v3 + 81792, v53) > 0 ) { v74 = 5 * *(_BYTE *)v70 + 3; if ( sub_4C81E0(&off_849C18, 5 * *(_BYTE *)v70 + 3) ) { v54 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v54 + 12))(v54, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_NotifyParameterChange : Packet Too Long", v74); } } sub_4CAF70(v3 + 7416, v60, v51, 28, v3); sub_4CAF70(v3 + 7444, v61, v51, 29, v3); sub_4CAF70(v3 + 7472, v64, v51, 30, v3); sub_4CAF70(v3 + 7500, v65, v51, 31, v3); sub_4CAF70(v3 + 7528, v62, v52, 32, v3); sub_4CAF70(v3 + 7556, v66, v52, 33, v3); sub_4CB110(v3 + 7584, v63, 1024, 35, v3); v55 = *(_DWORD *)v3; memcpy((void *)(v3 + 7180), &v59, 0xCCu); (*(void (__thiscall **)(int, int))(v55 + 856))(v3, v3 + 81792); LOBYTE(v71) = 0; nullsub_2(&v68); v71 = -1; LABEL_18: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502BB0) -------------------------------------------------------- char __stdcall sub_502BB0(int a1) { sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagement::roe_IsDamageImmune"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagement::roe_IsDamageImmune"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_IsDamageImmune"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502C00) -------------------------------------------------------- char __stdcall sub_502C00(int a1) { char result; // al@2 int v2; // esi@3 bool v3; // bl@3 int v4; // [sp+0h] [bp-1Ch]@0 int v5; // [sp+4h] [bp-18h]@0 int v6; // [sp+8h] [bp-14h]@0 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_IsDamageImmune"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalPY::roe_IsDamageImmune"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a1 + 4) ) { v2 = (*(int (__stdcall **)(int, int, int, _DWORD))(**(_DWORD **)(a1 + 4) + 1072))( v4, v5, v6, "RulesOfEngagementNormalPY::roe_IsDamageImmune"); v3 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_WORD *)(v2 + 3492); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_IsDamageImmune"); result = v3; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_IsDamageImmune"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502D00) -------------------------------------------------------- char __stdcall sub_502D00(int a1) { char result; // al@2 int v2; // esi@3 bool v3; // bl@3 int v4; // [sp+0h] [bp-1Ch]@0 int v5; // [sp+4h] [bp-18h]@0 int v6; // [sp+8h] [bp-14h]@0 sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_IsDamageImmune"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalMA::roe_IsDamageImmune"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a1 + 4) ) { v2 = (*(int (__stdcall **)(int, int, int, _DWORD))(**(_DWORD **)(a1 + 4) + 1072))( v4, v5, v6, "RulesOfEngagementNormalMA::roe_IsDamageImmune"); v3 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_WORD *)(v2 + 3494); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_IsDamageImmune"); result = v3; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_IsDamageImmune"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00502E00) -------------------------------------------------------- int __userpurge sub_502E00(int a1, double a2, int a3) { int v3; // edi@1 bool v4; // zf@1 int result; // eax@2 double v6; // st7@3 int v7; // esi@3 int v8; // ecx@3 unsigned __int16 v9; // di@3 unsigned __int16 v10; // bx@4 int v11; // edx@5 int v12; // eax@5 unsigned __int16 v13; // si@5 int v14; // ecx@7 int v15; // ecx@9 int v16; // eax@10 int v17; // eax@10 int v18; // esi@13 int v19; // [sp+1Ch] [bp-10h]@3 int v20; // [sp+28h] [bp-4h]@1 int v21; // [sp+34h] [bp+8h]@3 v3 = a1; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagement::roe_GetAttackPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagement::roe_GetAttackPower"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)a3 == 0; v20 = 0; if ( v4 ) { sub_639100(&unk_86DDD8, (int)"RulesOfEngagement::roe_GetAttackPower : Null Obj", 0); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_GetAttackPower"); result = 0; } else { (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 8))(v3, a3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 48))(v3, a3); v6 = (double)*(_WORD *)((*(int (**)(void))(**(_DWORD **)a3 + 1176))() + 18) * (a2 + a2) * 0.0009765625 * (double)*(signed int *)(a3 + 28) / 1000.0; v7 = *(_DWORD *)a3; v19 = (signed int)v6; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1324))(v7); v9 = *(_WORD *)(*(_DWORD *)(v8 + 3372) + 12 * *(_WORD *)(v8 + 3378) + 4); v21 = v8; while ( 1 ) { v10 = *(_WORD *)(v8 + 3368); if ( v9 >= v10 ) break; v11 = *(_DWORD *)(v8 + 3372); v12 = v9; v13 = v9; v9 = *(_WORD *)(v11 + 12 * v9 + 4); if ( v13 < v10 && *(_BYTE *)(v11 + 12 * v12 + 8) ) v14 = *(_DWORD *)(v11 + 12 * v12); else v14 = 0; v15 = dword_871508[3 * *(_DWORD *)(v14 + 4)]; if ( v13 >= v10 || (v16 = 3 * v12, v4 = *(_BYTE *)(v11 + 4 * v16 + 8) == 0, v17 = v11 + 4 * v16, v4) ) { (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v15 + 44))(0, &v19); v8 = v21; } else { (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v15 + 44))(*(_DWORD *)v17, &v19); v8 = v21; } } v18 = v19; --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_GetAttackPower"); result = v18; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (00502FF0) -------------------------------------------------------- signed int __userpurge sub_502FF0(int a1, double a2, int a3, int a4, unsigned __int8 a5) { int v5; // edi@1 bool v6; // zf@1 signed int result; // eax@3 int v8; // ebx@7 double v9; // ST20_8@7 int v10; // eax@7 int v11; // edx@7 int v12; // eax@8 int v13; // edi@8 int v14; // ecx@8 int v15; // edi@8 int v16; // edi@10 char v17; // al@10 void *v18; // ecx@10 char v19; // al@13 int v20; // edx@13 unsigned __int8 v21; // al@14 double v22; // st7@14 unsigned __int8 v23; // al@16 int v24; // ecx@18 int v25; // ecx@18 unsigned __int16 v26; // di@18 unsigned __int16 v27; // bx@19 int v28; // edx@20 int v29; // ecx@21 int v30; // ecx@23 int v31; // eax@25 int v32; // esi@28 unsigned __int16 v33; // [sp+12h] [bp-26h]@20 double v34; // [sp+1Ch] [bp-1Ch]@7 double v35; // [sp+1Ch] [bp-1Ch]@13 int v36; // [sp+28h] [bp-10h]@18 int v37; // [sp+34h] [bp-4h]@1 signed int v38; // [sp+48h] [bp+10h]@7 int i; // [sp+48h] [bp+10h]@18 v5 = a1; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementroe_AttackPowerCalcDamage"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementroe_AttackPowerCalcDamage"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_DWORD *)(a3 + 4) == 0; v37 = 0; if ( v6 ) { sub_639100(&unk_86DDD8, (int)"RulesOfEngagementroe_AttackPowerCalcDamage : Null Obj", 0); LABEL_3: --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementroe_AttackPowerCalcDamage"); return 0; } if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a3 + 4) + 28))() ) goto LABEL_3; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(a3 + 4) + 996))(365) ) { --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementroe_AttackPowerCalcDamage"); result = 1; } else { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 12))(v5, a3); v8 = a5; v9 = (double)(a4 * (a5 + 1)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 52))(v5, a3); v10 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1176))(); v11 = *(_DWORD *)(a3 + 24); v38 = 1000; v34 = v9 / (v9 + a2) * 1024.0 / (double)*(_WORD *)(v10 + 20); if ( v11 ) { v12 = *(_DWORD *)(a3 + 4); v13 = *(_DWORD *)(v12 + 102); v14 = *(_DWORD *)v13; v15 = *(_DWORD *)(v13 + 4); if ( *(_DWORD *)v11 != v14 || *(_DWORD *)(v11 + 4) != v15 ) { v16 = **(_BYTE **)(v12 + 106) - (unsigned __int8)sub_401220( &unk_AF09DA8, **(_DWORD **)(a3 + 24) - v14, *(_DWORD *)(*(_DWORD *)(a3 + 24) + 4) - v15); v17 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1232))(); v18 = &unk_AF09900; if ( v17 != 2 ) v18 = &unk_AF099B8; v38 = (unsigned __int16)sub_45C1E0(v18, v16); } } v35 = (double)v38 * v34 / 1000.0; v19 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1232))(); v20 = **(_DWORD **)(a3 + 4); if ( v19 == 5 ) { v21 = (*(int (**)(void))(v20 + 1240))(); v22 = (double)sub_5C5820(v8, v21) * v35 / 1000.0; } else { if ( (unsigned __int8)(*(int (**)(void))(v20 + 1232))() == 2 ) { v23 = (*(int (**)(void))(**(_DWORD **)(a3 + 4) + 1240))(); v22 = (double)sub_5C57C0(v8, v23) * v35 / 1000.0; } else { v22 = v35; } } v24 = *(_DWORD *)(a3 + 4); v36 = (signed int)v22; v25 = (*(int (**)(void))(*(_DWORD *)v24 + 1324))(); v26 = *(_WORD *)(*(_DWORD *)(v25 + 3372) + 12 * *(_WORD *)(v25 + 3378) + 4); for ( i = v25; ; v25 = i ) { v27 = *(_WORD *)(v25 + 3368); if ( v26 >= v27 ) break; v28 = *(_DWORD *)(v25 + 3372); v33 = *(_WORD *)(v28 + 12 * v26 + 4); if ( *(_BYTE *)(v28 + 12 * v26 + 8) ) v29 = *(_DWORD *)(v28 + 12 * v26); else v29 = 0; v30 = dword_871508[3 * *(_DWORD *)(v29 + 4)]; if ( v26 < v27 && *(_BYTE *)(v28 + 12 * v26 + 8) ) v31 = *(_DWORD *)(v28 + 12 * v26); else v31 = 0; (*(void (__stdcall **)(_DWORD, int, int *))(*(_DWORD *)v30 + 16))(*(_DWORD *)(a3 + 4), v31, &v36); v26 = v33; } v32 = v36; --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementroe_AttackPowerCalcDamage"); result = v32; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (00503330) -------------------------------------------------------- double __stdcall sub_503330(int a1) { int v1; // ecx@1 int v2; // eax@1 int (*v3)(void); // eax@1 void *v4; // eax@1 int v5; // ecx@3 void *v6; // eax@3 int v8; // [sp+Ch] [bp-40h]@1 int v9; // [sp+10h] [bp-3Ch]@1 int v10; // [sp+14h] [bp-38h]@1 int v11; // [sp+18h] [bp-34h]@1 int v12; // [sp+1Ch] [bp-30h]@1 int v13; // [sp+20h] [bp-2Ch]@1 int v14; // [sp+24h] [bp-28h]@1 void *v15; // [sp+28h] [bp-24h]@1 int v16; // [sp+2Ch] [bp-20h]@1 int v17; // [sp+30h] [bp-1Ch]@1 double v18; // [sp+38h] [bp-14h]@1 int v19; // [sp+48h] [bp-4h]@1 int v20; // [sp+54h] [bp+8h]@4 v1 = *(_DWORD *)a1; v18 = 0.0; v2 = *(_DWORD *)(a1 + 4); v10 = 0; v11 = 4; v12 = v1; v13 = v1; v14 = v2; v15 = 0; v16 = 0; v17 = 0; v8 = 0; v9 = 0; v3 = *(int (**)(void))(*(_DWORD *)v1 + 1488); v19 = 0; v4 = (void *)v3(); if ( sub_5CF1E0(v4, (int)&v15, (int)&v8) ) v18 = (double)(unsigned int)sub_5CDF30((int)&v15) + 0.0; v5 = *(_DWORD *)a1; v9 = 3; v6 = (void *)(*(int (**)(void))(*(_DWORD *)v5 + 1488))(); if ( sub_5CF1E0(v6, (int)&v15, (int)&v8) ) { v20 = sub_5CDF30((int)&v15); v18 = (double)(unsigned int)v20 + v18; } if ( v15 ) operator delete(v15); return v18; } //----- (00503440) -------------------------------------------------------- double __stdcall sub_503440(int a1) { int v1; // ecx@1 int v2; // eax@1 int (*v3)(void); // eax@1 void *v4; // eax@1 int v5; // ecx@3 void *v6; // eax@3 int v8; // [sp+Ch] [bp-40h]@1 int v9; // [sp+10h] [bp-3Ch]@1 int v10; // [sp+14h] [bp-38h]@1 int v11; // [sp+18h] [bp-34h]@1 int v12; // [sp+1Ch] [bp-30h]@1 int v13; // [sp+20h] [bp-2Ch]@1 int v14; // [sp+24h] [bp-28h]@1 void *v15; // [sp+28h] [bp-24h]@1 int v16; // [sp+2Ch] [bp-20h]@1 int v17; // [sp+30h] [bp-1Ch]@1 double v18; // [sp+38h] [bp-14h]@1 int v19; // [sp+48h] [bp-4h]@1 int v20; // [sp+54h] [bp+8h]@4 v1 = *(_DWORD *)a1; v18 = 0.0; v2 = *(_DWORD *)(a1 + 4); v10 = 0; v11 = 4; v12 = v1; v13 = v1; v14 = v2; v15 = 0; v16 = 0; v17 = 0; v8 = 0; v9 = 0; v3 = *(int (**)(void))(*(_DWORD *)v1 + 1488); v19 = 0; v4 = (void *)v3(); if ( sub_5CF1E0(v4, (int)&v15, (int)&v8) ) v18 = (double)(unsigned int)sub_5CDF30((int)&v15) + 0.0; v5 = *(_DWORD *)a1; v9 = 2; v6 = (void *)(*(int (**)(void))(*(_DWORD *)v5 + 1488))(); if ( sub_5CF1E0(v6, (int)&v15, (int)&v8) ) { v20 = sub_5CDF30((int)&v15); v18 = (double)(unsigned int)v20 + v18; } if ( v15 ) operator delete(v15); return v18; } //----- (00503550) -------------------------------------------------------- double __stdcall sub_503550(int a1) { int v1; // ebx@1 int v2; // ecx@1 int v3; // eax@1 void *v4; // esi@1 int (*v5)(void); // eax@1 void *v6; // eax@1 int v7; // edi@3 int v8; // ecx@4 void *v9; // eax@4 int v10; // ecx@7 int v11; // eax@7 int v12; // eax@9 int v13; // ecx@9 void *v14; // eax@9 int v16; // [sp+10h] [bp-40h]@1 int v17; // [sp+14h] [bp-3Ch]@1 int v18; // [sp+18h] [bp-38h]@1 int v19; // [sp+1Ch] [bp-34h]@1 int v20; // [sp+20h] [bp-30h]@1 int v21; // [sp+24h] [bp-2Ch]@1 int v22; // [sp+28h] [bp-28h]@1 void *v23; // [sp+2Ch] [bp-24h]@1 int v24; // [sp+30h] [bp-20h]@1 int v25; // [sp+34h] [bp-1Ch]@1 double v26; // [sp+3Ch] [bp-14h]@1 int v27; // [sp+4Ch] [bp-4h]@1 int v28; // [sp+58h] [bp+8h]@5 int v29; // [sp+58h] [bp+8h]@10 v1 = a1; v2 = *(_DWORD *)a1; v26 = 0.0; v3 = *(_DWORD *)(a1 + 4); v4 = 0; v18 = 0; v19 = 4; v20 = v2; v21 = v2; v22 = v3; v23 = 0; v24 = 0; v25 = 0; v16 = 0; v17 = 3; v5 = *(int (**)(void))(*(_DWORD *)v2 + 1488); v27 = 0; v6 = (void *)v5(); if ( !sub_5CF1E0(v6, (int)&v23, (int)&v16) || (v26 = (double)(unsigned int)sub_5CDF30((int)&v23) + 0.0, v26 < 1000.0) ) { v7 = *(_DWORD *)(a1 + 8); if ( v7 ) { v8 = *(_DWORD *)a1; v17 = 1; v9 = (void *)(*(int (**)(void))(*(_DWORD *)v8 + 1488))(); if ( sub_5CF1E0(v9, (int)&v23, (int)&v16) ) { v28 = sub_5CDF30((int)&v23); v26 = (double)(unsigned int)v28 + v26; } if ( *(_DWORD *)(v7 + 8) != *(_DWORD *)(v7 + 12) ) { v16 = 7; v10 = *(_DWORD *)(v7 + 8); v11 = (*(_DWORD *)(v7 + 12) - v10) >> 2; if ( v11 ) { if ( (unsigned int)v11 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v12 = *(_DWORD *)(*(_DWORD *)(v10 + 4 * (_DWORD)v4) + 32); v13 = *(_DWORD *)v1; v17 = v12; v14 = (void *)(*(int (**)(void))(*(_DWORD *)v13 + 1488))(); if ( sub_5CF1E0(v14, (int)&v23, (int)&v16) ) { v29 = sub_5CDF30((int)&v23); v26 = (double)(unsigned int)v29 + v26; } v10 = *(_DWORD *)(v7 + 8); v4 = (char *)v4 + 1; } while ( (*(_DWORD *)(v7 + 12) - v10) >> 2 > (unsigned int)v4 ); } v4 = 0; } } } if ( v23 != v4 ) operator delete(v23); return v26; } //----- (00503700) -------------------------------------------------------- double __stdcall sub_503700(int a1) { int v1; // ebx@1 int v2; // ecx@1 int v3; // eax@1 void *v4; // esi@1 int (*v5)(void); // eax@1 void *v6; // eax@1 int v7; // edi@3 int v8; // ecx@4 void *v9; // eax@4 int v10; // ecx@7 int v11; // eax@7 int v12; // eax@9 int v13; // ecx@9 void *v14; // eax@9 int v16; // [sp+10h] [bp-40h]@1 int v17; // [sp+14h] [bp-3Ch]@1 int v18; // [sp+18h] [bp-38h]@1 int v19; // [sp+1Ch] [bp-34h]@1 int v20; // [sp+20h] [bp-30h]@1 int v21; // [sp+24h] [bp-2Ch]@1 int v22; // [sp+28h] [bp-28h]@1 void *v23; // [sp+2Ch] [bp-24h]@1 int v24; // [sp+30h] [bp-20h]@1 int v25; // [sp+34h] [bp-1Ch]@1 double v26; // [sp+3Ch] [bp-14h]@1 int v27; // [sp+4Ch] [bp-4h]@1 int v28; // [sp+58h] [bp+8h]@5 int v29; // [sp+58h] [bp+8h]@10 v1 = a1; v2 = *(_DWORD *)a1; v26 = 0.0; v3 = *(_DWORD *)(a1 + 4); v4 = 0; v18 = 0; v19 = 4; v20 = v2; v21 = v2; v22 = v3; v23 = 0; v24 = 0; v25 = 0; v16 = 0; v17 = 2; v5 = *(int (**)(void))(*(_DWORD *)v2 + 1488); v27 = 0; v6 = (void *)v5(); if ( !sub_5CF1E0(v6, (int)&v23, (int)&v16) || (v26 = (double)(unsigned int)sub_5CDF30((int)&v23) + 0.0, v26 < 1000.0) ) { v7 = *(_DWORD *)(a1 + 8); if ( v7 ) { v8 = *(_DWORD *)a1; v17 = 1; v9 = (void *)(*(int (**)(void))(*(_DWORD *)v8 + 1488))(); if ( sub_5CF1E0(v9, (int)&v23, (int)&v16) ) { v28 = sub_5CDF30((int)&v23); v26 = (double)(unsigned int)v28 + v26; } if ( *(_DWORD *)(v7 + 8) != *(_DWORD *)(v7 + 12) ) { v16 = 7; v10 = *(_DWORD *)(v7 + 8); v11 = (*(_DWORD *)(v7 + 12) - v10) >> 2; if ( v11 ) { if ( (unsigned int)v11 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v12 = *(_DWORD *)(*(_DWORD *)(v10 + 4 * (_DWORD)v4) + 32); v13 = *(_DWORD *)v1; v17 = v12; v14 = (void *)(*(int (**)(void))(*(_DWORD *)v13 + 1488))(); if ( sub_5CF1E0(v14, (int)&v23, (int)&v16) ) { v29 = sub_5CDF30((int)&v23); v26 = (double)(unsigned int)v29 + v26; } v10 = *(_DWORD *)(v7 + 8); v4 = (char *)v4 + 1; } while ( (*(_DWORD *)(v7 + 12) - v10) >> 2 > (unsigned int)v4 ); } v4 = 0; } } } if ( v23 != v4 ) operator delete(v23); return v26; } //----- (005038B0) -------------------------------------------------------- double __stdcall sub_5038B0(int a1) { int v1; // eax@1 int v2; // ecx@1 int (*v3)(void); // eax@1 void *v4; // eax@2 void *v5; // eax@5 int v7; // [sp+Ch] [bp-40h]@1 int v8; // [sp+10h] [bp-3Ch]@1 int v9; // [sp+14h] [bp-38h]@1 int v10; // [sp+18h] [bp-34h]@1 int v11; // [sp+1Ch] [bp-30h]@1 int v12; // [sp+20h] [bp-2Ch]@1 int v13; // [sp+24h] [bp-28h]@1 void *v14; // [sp+28h] [bp-24h]@1 int v15; // [sp+2Ch] [bp-20h]@1 int v16; // [sp+30h] [bp-1Ch]@1 double v17; // [sp+38h] [bp-14h]@1 int v18; // [sp+48h] [bp-4h]@1 int v19; // [sp+54h] [bp+8h]@6 v1 = *(_DWORD *)a1; v17 = 0.0; v2 = *(_DWORD *)(a1 + 4); v11 = 0; v9 = 0; v10 = 6; v12 = v1; v13 = v2; v14 = 0; v15 = 0; v16 = 0; v7 = 0; v8 = 0; v3 = *(int (**)(void))(*(_DWORD *)v2 + 1488); v18 = 0; if ( v3() ) { v11 = *(_DWORD *)(a1 + 4); v4 = (void *)(*(int (**)(void))(*(_DWORD *)v11 + 1488))(); if ( sub_5CF1E0(v4, (int)&v14, (int)&v7) ) v17 = (double)(unsigned int)sub_5CDF30((int)&v14) + 0.0; } if ( (*(int (**)(void))(**(_DWORD **)a1 + 1488))() ) { v11 = *(_DWORD *)a1; v5 = (void *)(*(int (**)(void))(*(_DWORD *)v11 + 1488))(); if ( sub_5CF1E0(v5, (int)&v14, (int)&v7) ) { v19 = sub_5CDF30((int)&v14); v17 = (double)(unsigned int)v19 + v17; } } if ( v14 ) operator delete(v14); return v17; } //----- (005039E0) -------------------------------------------------------- double __stdcall sub_5039E0(int a1) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 int (*v4)(void); // eax@1 void *v5; // eax@2 void *v6; // eax@5 int v7; // ecx@7 void *v8; // eax@8 void *v9; // eax@11 double v10; // st7@12 double result; // st7@16 int v12; // [sp+Ch] [bp-40h]@1 int v13; // [sp+10h] [bp-3Ch]@1 int v14; // [sp+14h] [bp-38h]@1 int v15; // [sp+18h] [bp-34h]@1 int v16; // [sp+1Ch] [bp-30h]@1 int v17; // [sp+20h] [bp-2Ch]@1 int v18; // [sp+24h] [bp-28h]@1 void *v19; // [sp+28h] [bp-24h]@1 int v20; // [sp+2Ch] [bp-20h]@1 int v21; // [sp+30h] [bp-1Ch]@1 double v22; // [sp+38h] [bp-14h]@1 int v23; // [sp+48h] [bp-4h]@1 int v24; // [sp+54h] [bp+8h]@6 int v25; // [sp+54h] [bp+8h]@9 int v26; // [sp+54h] [bp+8h]@12 v1 = a1; v2 = *(_DWORD *)a1; v22 = 0.0; v3 = *(_DWORD *)(a1 + 4); v16 = 0; v14 = 0; v15 = 5; v17 = v2; v18 = v3; v19 = 0; v20 = 0; v21 = 0; v12 = 0; v13 = 0; v4 = *(int (**)(void))(*(_DWORD *)v3 + 1488); v23 = 0; if ( v4() ) { v16 = *(_DWORD *)(a1 + 4); v5 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(); if ( sub_5CF1E0(v5, (int)&v19, (int)&v12) ) v22 = (double)(unsigned int)sub_5CDF30((int)&v19) + 0.0; } if ( (*(int (**)(void))(**(_DWORD **)a1 + 1488))() ) { v16 = *(_DWORD *)a1; v6 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(); if ( sub_5CF1E0(v6, (int)&v19, (int)&v12) ) { v24 = sub_5CDF30((int)&v19); v22 = (double)(unsigned int)v24 + v22; } } v7 = *(_DWORD *)(v1 + 4); v13 = 3; if ( (*(int (**)(void))(*(_DWORD *)v7 + 1488))() ) { v16 = *(_DWORD *)(v1 + 4); v8 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(); if ( sub_5CF1E0(v8, (int)&v19, (int)&v12) ) { v25 = sub_5CDF30((int)&v19); v22 = (double)(unsigned int)v25 + v22; } } if ( (*(int (**)(void))(**(_DWORD **)v1 + 1488))() && (v16 = *(_DWORD *)v1, v9 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(), sub_5CF1E0(v9, (int)&v19, (int)&v12)) ) { v26 = sub_5CDF30((int)&v19); v10 = (double)(unsigned int)v26 + v22; } else { v10 = v22; } if ( v10 >= 1000.0 ) v10 = 1000.0; result = 1000.0 - v10; v22 = result; if ( v19 ) { operator delete(v19); result = v22; } return result; } //----- (00503BD0) -------------------------------------------------------- double __stdcall sub_503BD0(int a1) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 int (*v4)(void); // eax@1 void *v5; // eax@2 void *v6; // eax@5 int v7; // ecx@7 void *v8; // eax@8 void *v9; // eax@11 double v10; // st7@12 double result; // st7@16 int v12; // [sp+Ch] [bp-40h]@1 int v13; // [sp+10h] [bp-3Ch]@1 int v14; // [sp+14h] [bp-38h]@1 int v15; // [sp+18h] [bp-34h]@1 int v16; // [sp+1Ch] [bp-30h]@1 int v17; // [sp+20h] [bp-2Ch]@1 int v18; // [sp+24h] [bp-28h]@1 void *v19; // [sp+28h] [bp-24h]@1 int v20; // [sp+2Ch] [bp-20h]@1 int v21; // [sp+30h] [bp-1Ch]@1 double v22; // [sp+38h] [bp-14h]@1 int v23; // [sp+48h] [bp-4h]@1 int v24; // [sp+54h] [bp+8h]@6 int v25; // [sp+54h] [bp+8h]@9 int v26; // [sp+54h] [bp+8h]@12 v1 = a1; v2 = *(_DWORD *)a1; v22 = 0.0; v3 = *(_DWORD *)(a1 + 4); v16 = 0; v14 = 0; v15 = 5; v17 = v2; v18 = v3; v19 = 0; v20 = 0; v21 = 0; v12 = 0; v13 = 0; v4 = *(int (**)(void))(*(_DWORD *)v3 + 1488); v23 = 0; if ( v4() ) { v16 = *(_DWORD *)(a1 + 4); v5 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(); if ( sub_5CF1E0(v5, (int)&v19, (int)&v12) ) v22 = (double)(unsigned int)sub_5CDF30((int)&v19) + 0.0; } if ( (*(int (**)(void))(**(_DWORD **)a1 + 1488))() ) { v16 = *(_DWORD *)a1; v6 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(); if ( sub_5CF1E0(v6, (int)&v19, (int)&v12) ) { v24 = sub_5CDF30((int)&v19); v22 = (double)(unsigned int)v24 + v22; } } v7 = *(_DWORD *)(v1 + 4); v13 = 2; if ( (*(int (**)(void))(*(_DWORD *)v7 + 1488))() ) { v16 = *(_DWORD *)(v1 + 4); v8 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(); if ( sub_5CF1E0(v8, (int)&v19, (int)&v12) ) { v25 = sub_5CDF30((int)&v19); v22 = (double)(unsigned int)v25 + v22; } } if ( (*(int (**)(void))(**(_DWORD **)v1 + 1488))() && (v16 = *(_DWORD *)v1, v9 = (void *)(*(int (**)(void))(*(_DWORD *)v16 + 1488))(), sub_5CF1E0(v9, (int)&v19, (int)&v12)) ) { v26 = sub_5CDF30((int)&v19); v10 = (double)(unsigned int)v26 + v22; } else { v10 = v22; } if ( v10 >= 1000.0 ) v10 = 1000.0; result = 1000.0 - v10; v22 = result; if ( v19 ) { operator delete(v19); result = v22; } return result; } //----- (00503DC0) -------------------------------------------------------- double __stdcall sub_503DC0(int a1) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 void *v4; // edi@1 int (*v5)(void); // eax@1 void *v6; // eax@2 void *v7; // eax@5 double v8; // st7@7 double result; // st7@10 int v10; // ebx@11 int v11; // ecx@12 void *v12; // eax@13 void *v13; // eax@16 int v14; // ecx@19 int v15; // eax@19 int v16; // eax@21 int v17; // ecx@21 void *v18; // eax@22 void *v19; // eax@25 double v20; // st6@30 int v21; // [sp+10h] [bp-40h]@1 int v22; // [sp+14h] [bp-3Ch]@1 int v23; // [sp+18h] [bp-38h]@1 int v24; // [sp+1Ch] [bp-34h]@1 int v25; // [sp+20h] [bp-30h]@1 int v26; // [sp+24h] [bp-2Ch]@1 int v27; // [sp+28h] [bp-28h]@1 void *v28; // [sp+2Ch] [bp-24h]@1 int v29; // [sp+30h] [bp-20h]@1 int v30; // [sp+34h] [bp-1Ch]@1 double v31; // [sp+3Ch] [bp-14h]@1 int v32; // [sp+4Ch] [bp-4h]@1 int v33; // [sp+58h] [bp+8h]@6 int v34; // [sp+58h] [bp+8h]@14 int v35; // [sp+58h] [bp+8h]@17 int v36; // [sp+58h] [bp+8h]@23 int v37; // [sp+58h] [bp+8h]@26 v1 = a1; v2 = *(_DWORD *)a1; v31 = 0.0; v3 = *(_DWORD *)(a1 + 4); v4 = 0; v25 = 0; v23 = 0; v24 = 5; v26 = v2; v27 = v3; v28 = 0; v29 = 0; v30 = 0; v21 = 0; v22 = 3; v5 = *(int (**)(void))(*(_DWORD *)v3 + 1488); v32 = 0; if ( v5() ) { v25 = *(_DWORD *)(a1 + 4); v6 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v6, (int)&v28, (int)&v21) ) v31 = (double)(unsigned int)sub_5CDF30((int)&v28) + 0.0; } if ( (*(int (**)(void))(**(_DWORD **)a1 + 1488))() ) { v25 = *(_DWORD *)a1; v7 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v7, (int)&v28, (int)&v21) ) { v33 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v33 + v31; } } v8 = 1000.0; if ( v31 < 1000.0 ) { v10 = *(_DWORD *)(v1 + 8); if ( v10 ) { v11 = *(_DWORD *)(v1 + 4); v22 = 1; if ( (*(int (**)(void))(*(_DWORD *)v11 + 1488))() ) { v25 = *(_DWORD *)(v1 + 4); v12 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v12, (int)&v28, (int)&v21) ) { v34 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v34 + v31; } } if ( (*(int (**)(void))(**(_DWORD **)v1 + 1488))() ) { v25 = *(_DWORD *)v1; v13 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v13, (int)&v28, (int)&v21) ) { v35 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v35 + v31; } } if ( *(_DWORD *)(v10 + 8) != *(_DWORD *)(v10 + 12) ) { v21 = 7; v14 = *(_DWORD *)(v10 + 8); v15 = (*(_DWORD *)(v10 + 12) - v14) >> 2; if ( v15 ) { if ( (unsigned int)v15 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v16 = *(_DWORD *)(*(_DWORD *)(v14 + 4 * (_DWORD)v4) + 32); v17 = *(_DWORD *)(v1 + 4); v22 = v16; if ( (*(int (**)(void))(*(_DWORD *)v17 + 1488))() ) { v25 = *(_DWORD *)(v1 + 4); v18 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v18, (int)&v28, (int)&v21) ) { v36 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v36 + v31; } } if ( (*(int (**)(void))(**(_DWORD **)v1 + 1488))() ) { v25 = *(_DWORD *)v1; v19 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v19, (int)&v28, (int)&v21) ) { v37 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v37 + v31; } } v14 = *(_DWORD *)(v10 + 8); v4 = (char *)v4 + 1; } while ( (*(_DWORD *)(v10 + 12) - v14) >> 2 > (unsigned int)v4 ); } v4 = 0; } v8 = 1000.0; } v20 = v31; if ( v31 >= v8 ) v20 = v8; v31 = v8 - v20; if ( v28 != v4 ) operator delete(v28); result = v31; } else { if ( v28 ) operator delete(v28); result = 0.0; } return result; } // 2E: found interdependent unknown calls //----- (005040F0) -------------------------------------------------------- double __stdcall sub_5040F0(int a1) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 void *v4; // edi@1 int (*v5)(void); // eax@1 void *v6; // eax@2 void *v7; // eax@5 double v8; // st7@7 double result; // st7@10 int v10; // ebx@11 int v11; // ecx@12 void *v12; // eax@13 void *v13; // eax@16 int v14; // ecx@19 int v15; // eax@19 int v16; // eax@21 int v17; // ecx@21 void *v18; // eax@22 void *v19; // eax@25 double v20; // st6@30 int v21; // [sp+10h] [bp-40h]@1 int v22; // [sp+14h] [bp-3Ch]@1 int v23; // [sp+18h] [bp-38h]@1 int v24; // [sp+1Ch] [bp-34h]@1 int v25; // [sp+20h] [bp-30h]@1 int v26; // [sp+24h] [bp-2Ch]@1 int v27; // [sp+28h] [bp-28h]@1 void *v28; // [sp+2Ch] [bp-24h]@1 int v29; // [sp+30h] [bp-20h]@1 int v30; // [sp+34h] [bp-1Ch]@1 double v31; // [sp+3Ch] [bp-14h]@1 int v32; // [sp+4Ch] [bp-4h]@1 int v33; // [sp+58h] [bp+8h]@6 int v34; // [sp+58h] [bp+8h]@14 int v35; // [sp+58h] [bp+8h]@17 int v36; // [sp+58h] [bp+8h]@23 int v37; // [sp+58h] [bp+8h]@26 v1 = a1; v2 = *(_DWORD *)a1; v31 = 0.0; v3 = *(_DWORD *)(a1 + 4); v4 = 0; v25 = 0; v23 = 0; v24 = 5; v26 = v2; v27 = v3; v28 = 0; v29 = 0; v30 = 0; v21 = 0; v22 = 2; v5 = *(int (**)(void))(*(_DWORD *)v3 + 1488); v32 = 0; if ( v5() ) { v25 = *(_DWORD *)(a1 + 4); v6 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v6, (int)&v28, (int)&v21) ) v31 = (double)(unsigned int)sub_5CDF30((int)&v28) + 0.0; } if ( (*(int (**)(void))(**(_DWORD **)a1 + 1488))() ) { v25 = *(_DWORD *)a1; v7 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v7, (int)&v28, (int)&v21) ) { v33 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v33 + v31; } } v8 = 1000.0; if ( v31 < 1000.0 ) { v10 = *(_DWORD *)(v1 + 8); if ( v10 ) { v11 = *(_DWORD *)(v1 + 4); v22 = 1; if ( (*(int (**)(void))(*(_DWORD *)v11 + 1488))() ) { v25 = *(_DWORD *)(v1 + 4); v12 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v12, (int)&v28, (int)&v21) ) { v34 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v34 + v31; } } if ( (*(int (**)(void))(**(_DWORD **)v1 + 1488))() ) { v25 = *(_DWORD *)v1; v13 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v13, (int)&v28, (int)&v21) ) { v35 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v35 + v31; } } if ( *(_DWORD *)(v10 + 8) != *(_DWORD *)(v10 + 12) ) { v21 = 7; v14 = *(_DWORD *)(v10 + 8); v15 = (*(_DWORD *)(v10 + 12) - v14) >> 2; if ( v15 ) { if ( (unsigned int)v15 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v16 = *(_DWORD *)(*(_DWORD *)(v14 + 4 * (_DWORD)v4) + 32); v17 = *(_DWORD *)(v1 + 4); v22 = v16; if ( (*(int (**)(void))(*(_DWORD *)v17 + 1488))() ) { v25 = *(_DWORD *)(v1 + 4); v18 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v18, (int)&v28, (int)&v21) ) { v36 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v36 + v31; } } if ( (*(int (**)(void))(**(_DWORD **)v1 + 1488))() ) { v25 = *(_DWORD *)v1; v19 = (void *)(*(int (**)(void))(*(_DWORD *)v25 + 1488))(); if ( sub_5CF1E0(v19, (int)&v28, (int)&v21) ) { v37 = sub_5CDF30((int)&v28); v31 = (double)(unsigned int)v37 + v31; } } v14 = *(_DWORD *)(v10 + 8); v4 = (char *)v4 + 1; } while ( (*(_DWORD *)(v10 + 12) - v14) >> 2 > (unsigned int)v4 ); } v4 = 0; } v8 = 1000.0; } v20 = v31; if ( v31 >= v8 ) v20 = v8; v31 = v8 - v20; if ( v28 != v4 ) operator delete(v28); result = v31; } else { if ( v28 ) operator delete(v28); result = 0.0; } return result; } // 2E: found interdependent unknown calls //----- (00504420) -------------------------------------------------------- signed int __userpurge sub_504420(int a1, double a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // ecx@2 int v7; // edi@11 int v8; // eax@11 int v9; // ST24_4@11 int v10; // eax@11 int v11; // eax@11 __time32_t v12; // eax@11 __time32_t v13; // eax@11 __time32_t v14; // eax@11 double v15; // st7@11 int v16; // eax@12 int v17; // ecx@21 int v18; // edx@21 int v19; // edi@21 int (*v20)(void); // edx@21 void *v21; // eax@21 int v22; // ecx@25 void *v23; // eax@25 int v24; // ecx@29 void *v25; // eax@29 int v26; // ecx@33 int v27; // edx@33 int (*v28)(void); // edx@33 void *v29; // eax@33 double v30; // ST20_8@34 double v31; // st7@34 double v32; // st7@35 int v33; // ecx@37 int v34; // edi@37 int v35; // eax@37 double v36; // st7@38 int v37; // eax@40 int (*v38)(void); // eax@45 int v39; // eax@45 int v40; // eax@46 int v41; // edi@47 int v42; // edx@47 int v43; // ecx@47 int v44; // edx@47 int v45; // ebx@49 char v46; // al@49 void *v47; // ecx@49 int v48; // ecx@52 int v49; // eax@52 int v50; // ecx@52 int v51; // eax@52 int v52; // ecx@52 int v53; // eax@54 int v54; // eax@55 bool v55; // cf@55 bool v56; // zf@55 int v57; // eax@56 int v58; // eax@58 unsigned __int16 v59; // bx@59 unsigned __int16 v60; // di@60 int v61; // edx@60 int v62; // eax@60 int v63; // ecx@62 int v64; // ecx@64 int v65; // eax@65 int v66; // edx@65 int v67; // eax@68 unsigned __int16 v68; // bx@69 unsigned __int16 v69; // di@70 int v70; // edx@70 int v71; // eax@70 int v72; // ecx@72 int v73; // ecx@74 int v74; // eax@75 int v75; // edx@75 int v76; // edx@76 int v77; // eax@79 unsigned __int16 v78; // bx@80 unsigned __int16 v79; // di@81 int v80; // edx@81 int v81; // eax@81 int v82; // ecx@83 int v83; // ecx@85 int v84; // eax@86 int v85; // edx@86 int v86; // eax@89 unsigned __int16 v87; // bx@90 unsigned __int16 v88; // di@91 int v89; // edx@91 int v90; // eax@91 int v91; // ecx@93 int v92; // ecx@95 int v93; // eax@96 int v94; // edx@96 int v95; // edx@97 int v96; // eax@100 unsigned __int16 v97; // bx@101 unsigned __int16 v98; // di@102 int v99; // edx@102 int v100; // eax@102 int v101; // ecx@104 int v102; // ecx@106 int v103; // eax@107 int v104; // edx@107 int v105; // edx@108 unsigned __int16 v106; // di@112 unsigned __int16 v107; // bx@112 int v108; // edx@113 int v109; // ecx@114 int v110; // ecx@116 int v111; // eax@118 int v112; // esi@121 int v113; // [sp+28h] [bp-88h]@0 int v114; // [sp+28h] [bp-88h]@11 int v115; // [sp+38h] [bp-78h]@33 int v116; // [sp+3Ch] [bp-74h]@33 int v117; // [sp+40h] [bp-70h]@33 int v118; // [sp+44h] [bp-6Ch]@33 int v119; // [sp+48h] [bp-68h]@33 int v120; // [sp+4Ch] [bp-64h]@33 int v121; // [sp+50h] [bp-60h]@33 int v122; // [sp+54h] [bp-5Ch]@21 int v123; // [sp+58h] [bp-58h]@21 int v124; // [sp+5Ch] [bp-54h]@21 int v125; // [sp+60h] [bp-50h]@21 int v126; // [sp+64h] [bp-4Ch]@21 int v127; // [sp+68h] [bp-48h]@21 int v128; // [sp+6Ch] [bp-44h]@21 int v129; // [sp+70h] [bp-40h]@33 int v130; // [sp+74h] [bp-3Ch]@33 int v131; // [sp+78h] [bp-38h]@33 int v132; // [sp+80h] [bp-30h]@21 int v133; // [sp+84h] [bp-2Ch]@21 int v134; // [sp+88h] [bp-28h]@21 int v135; // [sp+8Ch] [bp-24h]@47 double v136; // [sp+90h] [bp-20h]@11 int v137; // [sp+98h] [bp-18h]@1 int v138; // [sp+9Ch] [bp-14h]@1 int v139; // [sp+A0h] [bp-10h]@52 int v140; // [sp+ACh] [bp-4h]@1 signed int v141; // [sp+B8h] [bp+8h]@23 int v142; // [sp+B8h] [bp+8h]@40 signed int v143; // [sp+B8h] [bp+8h]@45 signed int v144; // [sp+B8h] [bp+8h]@46 int v145; // [sp+B8h] [bp+8h]@58 int v146; // [sp+B8h] [bp+8h]@68 int v147; // [sp+B8h] [bp+8h]@79 int v148; // [sp+B8h] [bp+8h]@89 int v149; // [sp+B8h] [bp+8h]@100 int v150; // [sp+B8h] [bp+8h]@111 v3 = a1; v138 = a1; v137 = (int)"RulesOfEngagement::roe_CalcDamage"; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagement::roe_CalcDamage"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagement::roe_CalcDamage"; dword_750AB8[dword_750CB8++] = -1; v4 = a3; v56 = *(_DWORD *)a3 == 0; v140 = 0; if ( v56 || (v5 = *(_DWORD *)(a3 + 4)) == 0 ) { sub_639100(&unk_86DDD8, (int)"RulesOfEngagement::roe_CalcDamage : Null Obj", 0); LABEL_4: v140 = -1; LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_CalcDamage"); return 0; } if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v5 + 28))() ) goto LABEL_4; if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(**(_DWORD **)(a3 + 4) + 996))(365) ) { --dword_750CB8; v140 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_CalcDamage"); return 1; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 56))(v3, a3) ) { *(_BYTE *)(a3 + 22) = 1; goto LABEL_4; } v7 = *(_DWORD *)a3; v8 = (*(int (__stdcall **)(_UNKNOWN *))(**(_DWORD **)(a3 + 4) + 1388))(&unk_13359E04); v9 = sub_418B40((int)byte_85A2C0, v8); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1388))(v7); v11 = sub_418B40((int)byte_85A2C0, v10); v12 = sub_418EA0((__time32_t)byte_14D15728, v11); v13 = sub_418EA0(v12, (int)"==>"); v14 = sub_418EA0(v13, v9); sub_418F20(v14, v113); v114 = a3; (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 4))(v3); v136 = a2 + (double)*(signed int *)(a3 + 32); v15 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v15 >= v136 ) { if ( (*(int (__cdecl **)(int))(**(_DWORD **)a3 + 1488))(a3) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 36))(v3, a3); v136 = v15; v15 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v15 < v136 ) { *(_BYTE *)(a3 + 16) = 1; LABEL_18: sub_4FF580((void *)v3, a3); goto LABEL_19; } } } else { v16 = *(_DWORD *)(a3 + 36); *(_BYTE *)(a3 + 16) = 1; if ( !v16 || *(_DWORD *)(v16 + 4) > 0 ) goto LABEL_18; } LABEL_19: if ( (*(int (__cdecl **)(int))(**(_DWORD **)(a3 + 4) + 1488))(v114) && *(_BYTE *)(a3 + 16) ) { sub_42A830((int)&v122); v17 = *(_DWORD *)(a3 + 4); v136 = 0.0; v18 = *(_DWORD *)a3; v19 = 0; v122 = 0; v123 = 4; v126 = v17; v127 = v18; v128 = v17; v124 = 0; v132 = 0; v133 = 0; v134 = 0; v125 = 6; v20 = *(int (**)(void))(*(_DWORD *)v17 + 1488); LOBYTE(v140) = 1; v21 = (void *)v20(); if ( sub_5CF1E0(v21, (int)&v132, (int)&v122) ) v136 = (double)(unsigned int)sub_5CDF30((int)&v132); v141 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( (double)v141 < v136 ) { *(_BYTE *)(v4 + 16) = 0; *(_BYTE *)(v4 + 19) = 1; sub_424190((void **)&v132); v140 = -1; goto LABEL_5; } v22 = *(_DWORD *)(v4 + 4); v125 = 5; v23 = (void *)(*(int (**)(void))(*(_DWORD *)v22 + 1488))(); if ( sub_5CF1E0(v23, (int)&v132, (int)&v122) ) v136 = (double)(unsigned int)sub_5CDF30((int)&v132); v15 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v15 < v136 ) { *(_WORD *)(v4 + 16) = 256; sub_424190((void **)&v132); v140 = -1; goto LABEL_5; } v24 = *(_DWORD *)(v4 + 4); v124 = 10; v125 = 0; v25 = (void *)(*(int (**)(void))(*(_DWORD *)v24 + 1488))(); sub_5CF1E0(v25, (int)&v132, (int)&v122); LOBYTE(v140) = 0; sub_424190((void **)&v132); } else { v19 = 0; } if ( (*(int (**)(void))(**(_DWORD **)v4 + 1488))() && *(_BYTE *)(v4 + 16) ) { sub_42A830((int)&v115); v26 = *(_DWORD *)v4; v27 = *(_DWORD *)(v4 + 4); v115 = v19; v116 = 4; v119 = v26; v120 = v26; v121 = v27; v117 = 10; v118 = v19; v129 = v19; v130 = v19; v131 = v19; v28 = *(int (**)(void))(*(_DWORD *)v26 + 1488); LOBYTE(v140) = 2; v29 = (void *)v28(); sub_5CF1E0(v29, (int)&v129, (int)&v115); LOBYTE(v140) = 0; sub_424190((void **)&v129); } (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 8))(v3, v4); v136 = v15; (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 12))(v3, v4); v30 = v15; v31 = v136; (*(void (__thiscall **)(int, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 16))( v3, v4, LODWORD(v136), HIDWORD(v136), LODWORD(v30), HIDWORD(v30)); v136 = v31; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)v4 + 1232))() == 2 ) v32 = v136 / dbl_86D0B0; else v32 = v136 * dbl_86D0B0; v33 = *(_DWORD *)v4; v136 = v32; v34 = *(_WORD *)((*(int (**)(void))(*(_DWORD *)v33 + 1176))() + 18); v35 = *(_WORD *)((*(int (**)(void))(**(_DWORD **)(v4 + 4) + 1176))() + 20); if ( v34 > v35 ) { v36 = (double)(v34 - v35 + 1024) * v136 * 0.0009765625; LABEL_43: v136 = v36; goto LABEL_44; } if ( v34 < v35 ) { v37 = v35 - v34; v142 = v37 + 1024; if ( v37 == -1024 ) v142 = 1; v36 = v136 * 1024.0 / (double)v142; goto LABEL_43; } LABEL_44: if ( *(_BYTE *)(v4 + 16) ) { v143 = *(_WORD *)((*(int (**)(void))(**(_DWORD **)v4 + 1072))() + 3292); v38 = *(int (**)(void))(**(_DWORD **)v4 + 1064); v136 = (double)v143 * v136 / 1000.0 + v136 + v136; v39 = v38(); ++*(_DWORD *)(v39 + 20); } v40 = *(_DWORD *)(v4 + 24); v144 = 1000; if ( v40 ) { v41 = *(_DWORD *)(v4 + 4); v42 = *(_DWORD *)(v41 + 102); v43 = *(_DWORD *)v42; v44 = *(_DWORD *)(v42 + 4); v135 = v44; if ( *(_DWORD *)v40 != v43 || *(_DWORD *)(v40 + 4) != v44 ) { v45 = **(_BYTE **)(v41 + 106) - (unsigned __int8)sub_401220(&unk_AF09DA8, *(_DWORD *)v40 - v43, *(_DWORD *)(v40 + 4) - v135); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v41 + 1232))(v41); v47 = &unk_AF09900; if ( v46 != 2 ) v47 = &unk_AF099B8; v144 = (unsigned __int16)sub_45C1E0(v47, v45); } } v48 = *(_DWORD *)(v4 + 4); v139 = (signed int)((double)v144 * v136 / 1000.0 * (double)*(signed int *)(v4 + 28) / 1000.0); v49 = (*(int (__stdcall **)(_DWORD, int))(*(_DWORD *)v48 + 3380))(*(_DWORD *)v4, v139); v50 = *(_DWORD *)v4; v139 = v49; v51 = (*(int (__stdcall **)(_DWORD, int))(*(_DWORD *)v50 + 3372))(*(_DWORD *)(v4 + 4), v49); v52 = *(_DWORD *)v4; v139 = v51; v139 = sub_4FF690(v52, *(_DWORD *)(v4 + 4), v51); if ( v139 <= 0 ) v139 = 1; v53 = *(_DWORD *)(v4 + 8); if ( v53 ) { v57 = *(_DWORD *)(v53 + 4); v55 = *(_DWORD *)(v57 + 180) < 0x12Cu; v56 = *(_DWORD *)(v57 + 180) == 300; } else { v54 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)v4 + 1296))(*(_DWORD *)(v4 + 4)); v55 = (unsigned int)v54 < 0x12C; v56 = v54 == 300; } if ( !(v55 | v56) ) { v58 = (*(int (**)(void))(**(_DWORD **)(v4 + 4) + 1324))(); v145 = v58; HIWORD(v133) = *(_WORD *)(*(_DWORD *)(v58 + 3372) + 12 * *(_WORD *)(v58 + 3378) + 4); while ( 1 ) { v59 = *(_WORD *)(v58 + 3368); if ( HIWORD(v133) >= v59 ) break; v60 = HIWORD(v133); v61 = *(_DWORD *)(v145 + 3372); v62 = HIWORD(v133); HIWORD(v133) = *(_WORD *)(v61 + 12 * HIWORD(v133) + 4); if ( (unsigned __int16)v62 < v59 && *(_BYTE *)(v61 + 12 * v62 + 8) ) v63 = *(_DWORD *)(v61 + 12 * v62); else v63 = 0; v64 = dword_871508[3 * *(_DWORD *)(v63 + 4)]; if ( v60 >= v59 || (v65 = 3 * v62, v56 = *(_BYTE *)(v61 + 4 * v65 + 8) == 0, v66 = v61 + 4 * v65, v56) ) { (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v64 + 40))(0, &v139); v58 = v145; } else { (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v64 + 40))(*(_DWORD *)v66, &v139); v58 = v145; } } } v67 = (*(int (**)(void))(**(_DWORD **)(v4 + 4) + 1324))(); v146 = v67; HIWORD(v133) = *(_WORD *)(*(_DWORD *)(v67 + 3372) + 12 * *(_WORD *)(v67 + 3378) + 4); while ( 1 ) { v68 = *(_WORD *)(v67 + 3368); if ( HIWORD(v133) >= v68 ) break; v69 = HIWORD(v133); v70 = *(_DWORD *)(v146 + 3372); v71 = HIWORD(v133); HIWORD(v133) = *(_WORD *)(v70 + 12 * HIWORD(v133) + 4); if ( (unsigned __int16)v71 < v68 && *(_BYTE *)(v70 + 12 * v71 + 8) ) v72 = *(_DWORD *)(v70 + 12 * v71); else v72 = 0; v73 = dword_871508[3 * *(_DWORD *)(v72 + 4)]; if ( v69 >= v68 || (v74 = 3 * v71, v56 = *(_BYTE *)(v70 + 4 * v74 + 8) == 0, v75 = v70 + 4 * v74, v56) ) v76 = 0; else v76 = *(_DWORD *)v75; (*(void (__stdcall **)(_DWORD, int, int *))(*(_DWORD *)v73 + 16))(*(_DWORD *)(v4 + 4), v76, &v139); v67 = v146; } v77 = (*(int (**)(void))(**(_DWORD **)v4 + 1324))(); v147 = v77; HIWORD(v133) = *(_WORD *)(*(_DWORD *)(v77 + 3372) + 12 * *(_WORD *)(v77 + 3378) + 4); while ( 1 ) { v78 = *(_WORD *)(v77 + 3368); if ( HIWORD(v133) >= v78 ) break; v79 = HIWORD(v133); v80 = *(_DWORD *)(v147 + 3372); v81 = HIWORD(v133); HIWORD(v133) = *(_WORD *)(v80 + 12 * HIWORD(v133) + 4); if ( (unsigned __int16)v81 < v78 && *(_BYTE *)(v80 + 12 * v81 + 8) ) v82 = *(_DWORD *)(v80 + 12 * v81); else v82 = 0; v83 = dword_871508[3 * *(_DWORD *)(v82 + 4)]; if ( v79 >= v78 || (v84 = 3 * v81, v56 = *(_BYTE *)(v80 + 4 * v84 + 8) == 0, v85 = v80 + 4 * v84, v56) ) { (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v83 + 44))(0, &v139); v77 = v147; } else { (*(void (__stdcall **)(_DWORD, int *))(*(_DWORD *)v83 + 44))(*(_DWORD *)v85, &v139); v77 = v147; } } v86 = (*(int (**)(void))(**(_DWORD **)(v4 + 4) + 1324))(); v148 = v86; HIWORD(v133) = *(_WORD *)(*(_DWORD *)(v86 + 3372) + 12 * *(_WORD *)(v86 + 3378) + 4); while ( 1 ) { v87 = *(_WORD *)(v86 + 3368); if ( HIWORD(v133) >= v87 ) break; v88 = HIWORD(v133); v89 = *(_DWORD *)(v148 + 3372); v90 = HIWORD(v133); HIWORD(v133) = *(_WORD *)(v89 + 12 * HIWORD(v133) + 4); if ( (unsigned __int16)v90 < v87 && *(_BYTE *)(v89 + 12 * v90 + 8) ) v91 = *(_DWORD *)(v89 + 12 * v90); else v91 = 0; v92 = dword_871508[3 * *(_DWORD *)(v91 + 4)]; if ( v88 >= v87 || (v93 = 3 * v90, v56 = *(_BYTE *)(v89 + 4 * v93 + 8) == 0, v94 = v89 + 4 * v93, v56) ) v95 = 0; else v95 = *(_DWORD *)v94; (*(void (__stdcall **)(_DWORD, int, int *))(*(_DWORD *)v92 + 48))(*(_DWORD *)(v4 + 4), v95, &v139); v86 = v148; } v96 = (*(int (**)(void))(**(_DWORD **)(v4 + 4) + 1324))(); v149 = v96; HIWORD(v133) = *(_WORD *)(*(_DWORD *)(v96 + 3372) + 12 * *(_WORD *)(v96 + 3378) + 4); while ( 1 ) { v97 = *(_WORD *)(v96 + 3368); if ( HIWORD(v133) >= v97 ) break; v98 = HIWORD(v133); v99 = *(_DWORD *)(v149 + 3372); v100 = HIWORD(v133); HIWORD(v133) = *(_WORD *)(v99 + 12 * HIWORD(v133) + 4); if ( (unsigned __int16)v100 < v97 && *(_BYTE *)(v99 + 12 * v100 + 8) ) v101 = *(_DWORD *)(v99 + 12 * v100); else v101 = 0; v102 = dword_871508[3 * *(_DWORD *)(v101 + 4)]; if ( v98 >= v97 || (v103 = 3 * v100, v56 = *(_BYTE *)(v99 + 4 * v103 + 8) == 0, v104 = v99 + 4 * v103, v56) ) v105 = 0; else v105 = *(_DWORD *)v104; (*(void (__stdcall **)(int, _DWORD, _DWORD, int *))(*(_DWORD *)v102 + 80))( v105, *(_DWORD *)(v4 + 4), *(_DWORD *)v4, &v139); v96 = v149; } v150 = (*(int (**)(void))(**(_DWORD **)v4 + 1324))(); HIWORD(v133) = *(_WORD *)(*(_DWORD *)(v150 + 3372) + 12 * *(_WORD *)(v150 + 3378) + 4); while ( 1 ) { v106 = *(_WORD *)(v150 + 3368); v107 = HIWORD(v133); if ( HIWORD(v133) >= v106 ) break; v108 = *(_DWORD *)(v150 + 3372); HIWORD(v133) = *(_WORD *)(v108 + 12 * HIWORD(v133) + 4); if ( *(_BYTE *)(v108 + 12 * v107 + 8) ) v109 = *(_DWORD *)(v108 + 12 * v107); else v109 = 0; v110 = dword_871508[3 * *(_DWORD *)(v109 + 4)]; if ( v107 < v106 && *(_BYTE *)(v108 + 12 * v107 + 8) ) v111 = *(_DWORD *)(v108 + 12 * v107); else v111 = 0; (*(void (__stdcall **)(int, _DWORD, _DWORD, int *))(*(_DWORD *)v110 + 104))( v111, *(_DWORD *)v4, *(_DWORD *)(v4 + 4), &v139); } v112 = v139; --dword_750CB8; v140 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagement::roe_CalcDamage"); return v112; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86D0B0: using guessed type double dbl_86D0B0; // 871508: using guessed type int dword_871508[]; //----- (00504E80) -------------------------------------------------------- double __userpurge sub_504E80(double st7_0, signed int a1) { signed int v2; // esi@1 unsigned int v3; // edi@2 int v4; // eax@3 int v5; // edi@3 int (*v6)(void); // edx@5 int v7; // eax@5 int v8; // eax@8 double v9; // st7@11 signed int v10; // eax@13 double v11; // st7@13 int (*v12)(void); // eax@13 void *v14; // [sp+10h] [bp-34h]@5 int v15; // [sp+14h] [bp-30h]@5 int v16; // [sp+18h] [bp-2Ch]@5 double v17; // [sp+20h] [bp-24h]@1 double v18; // [sp+28h] [bp-1Ch]@1 int v19; // [sp+30h] [bp-14h]@1 int v20; // [sp+34h] [bp-10h]@4 int v21; // [sp+40h] [bp-4h]@1 unsigned int v22; // [sp+4Ch] [bp+8h]@11 v19 = (int)"RulesOfEngagementNormalPY::roe_AttackPower"; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_AttackPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalPY::roe_AttackPower"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v21 = 0; sub_4FD0D0(a1); v18 = st7_0; sub_4FDF00(a1); v17 = st7_0; if ( *(_DWORD *)a1 ) { v3 = (*(int (**)(void))(**(_DWORD **)a1 + 1264))(); if ( v3 > 0 ) { a1 = 1000 * (v3 - (*(int (**)(void))(**(_DWORD **)a1 + 1256))()) / v3; v4 = (*(int (**)(void))(**(_DWORD **)v2 + 1072))(); v5 = v4; if ( v4 ) { v20 = sub_4C84E0(v4 + 3296, a1); v18 = (double)v20 + v18; a1 = sub_4C84E0(v5 + 3324, a1); v17 = (double)a1 + v17; } } } v14 = 0; v15 = 0; v16 = 0; v6 = *(int (**)(void))(**(_DWORD **)v2 + 1488); LOBYTE(v21) = 1; BYTE3(a1) = 0; v7 = v6(); if ( v7 && sub_5CF2C0(v7, *(_DWORD *)v2, *(_DWORD *)(v2 + 4), 0, (int)&v14) ) BYTE3(a1) = 1; v8 = (*(int (**)(void))(**(_DWORD **)(v2 + 4) + 1488))(); if ( v8 && sub_5CF2C0(v8, *(_DWORD *)v2, *(_DWORD *)(v2 + 4), 0, (int)&v14) || BYTE3(a1) ) { v20 = HIWORD(a1) | 0xC00; *(_QWORD *)&v18 = (signed __int64)v18; v22 = sub_5CDED0((int)&v14, LODWORD(v18)); v18 = (double)v22; v20 = HIWORD(v22) | 0xC00; *(_QWORD *)&v17 = (signed __int64)v17; v9 = (double)sub_5CDED0((int)&v14, LODWORD(v17)); } else { v9 = v17; } LOWORD(v10) = sub_6396B0(&unk_14D42DC0, (signed int)(v9 - v18)); v11 = (double)v10; v12 = *(int (**)(void))(**(_DWORD **)v2 + 1072); v17 = v11 + v18; v17 = (double)*(signed int *)(v12() + 2136) * v17 / 1000.0; if ( v14 ) operator delete(v14); --dword_750CB8; v14 = 0; v15 = 0; v16 = 0; v21 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalPY::roe_AttackPower"); return v17; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005050F0) -------------------------------------------------------- double __stdcall sub_5050F0(signed int a1) { signed int v1; // esi@1 unsigned int v2; // edi@2 int v3; // eax@3 int v4; // edi@3 int (*v5)(void); // edx@5 int v6; // eax@5 int v7; // eax@8 double v8; // st7@11 signed int v9; // eax@13 double v10; // st7@13 int (*v11)(void); // eax@13 void *v13; // [sp+10h] [bp-34h]@5 int v14; // [sp+14h] [bp-30h]@5 int v15; // [sp+18h] [bp-2Ch]@5 double v16; // [sp+20h] [bp-24h]@1 double v17; // [sp+28h] [bp-1Ch]@1 int v18; // [sp+30h] [bp-14h]@1 int v19; // [sp+34h] [bp-10h]@4 int v20; // [sp+40h] [bp-4h]@1 unsigned int v21; // [sp+4Ch] [bp+8h]@11 v18 = (int)"RulesOfEngagementNormalMA::roe_AttackPower"; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_AttackPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementNormalMA::roe_AttackPower"; dword_750AB8[dword_750CB8++] = -1; v1 = a1; v20 = 0; v17 = sub_4FCB30(a1); v16 = sub_4FCE00(a1); if ( *(_DWORD *)a1 ) { v2 = (*(int (**)(void))(**(_DWORD **)a1 + 1264))(); if ( v2 > 0 ) { a1 = 1000 * (v2 - (*(int (**)(void))(**(_DWORD **)a1 + 1256))()) / v2; v3 = (*(int (**)(void))(**(_DWORD **)v1 + 1072))(); v4 = v3; if ( v3 ) { v19 = sub_4C84E0(v3 + 3352, a1); v17 = (double)v19 + v17; a1 = sub_4C84E0(v4 + 3380, a1); v16 = (double)a1 + v16; } } } v13 = 0; v14 = 0; v15 = 0; v5 = *(int (**)(void))(**(_DWORD **)v1 + 1488); LOBYTE(v20) = 1; BYTE3(a1) = 0; v6 = v5(); if ( v6 && sub_5CF2C0(v6, *(_DWORD *)v1, *(_DWORD *)(v1 + 4), 0, (int)&v13) ) BYTE3(a1) = 1; v7 = (*(int (**)(void))(**(_DWORD **)(v1 + 4) + 1488))(); if ( v7 && sub_5CF2C0(v7, *(_DWORD *)v1, *(_DWORD *)(v1 + 4), 0, (int)&v13) || BYTE3(a1) ) { v19 = HIWORD(a1) | 0xC00; *(_QWORD *)&v17 = (signed __int64)v17; v21 = sub_5CDED0((int)&v13, LODWORD(v17)); v17 = (double)v21; v19 = HIWORD(v21) | 0xC00; *(_QWORD *)&v16 = (signed __int64)v16; v8 = (double)sub_5CDED0((int)&v13, LODWORD(v16)); } else { v8 = v16; } LOWORD(v9) = sub_6396B0(&unk_14D42DC0, (signed int)(v8 - v17)); v10 = (double)v9; v11 = *(int (**)(void))(**(_DWORD **)v1 + 1072); v16 = v10 + v17; v16 = (double)*(signed int *)(v11() + 2140) * v16 / 1000.0; if ( v13 ) operator delete(v13); --dword_750CB8; v13 = 0; v14 = 0; v15 = 0; v20 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementNormalMA::roe_AttackPower"); return v16; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00505360) -------------------------------------------------------- double __userpurge sub_505360(double st7_0, signed int a1) { signed int v2; // esi@1 unsigned int v3; // edi@2 int v4; // eax@3 int v5; // edi@3 int v6; // eax@6 double v7; // st6@6 double v8; // st7@6 double v9; // st5@6 __int16 v10; // ax@6 double v11; // st7@6 __int16 v12; // cx@6 double v13; // st4@7 double v14; // st5@9 double v15; // st6@9 int (*v16)(void); // eax@11 int v17; // edi@11 int v18; // eax@12 int v19; // eax@16 double v20; // st7@19 signed int v21; // eax@21 double v22; // st7@21 int (*v23)(void); // eax@21 void *v25; // [sp+10h] [bp-34h]@11 int v26; // [sp+14h] [bp-30h]@11 int v27; // [sp+18h] [bp-2Ch]@11 double v28; // [sp+20h] [bp-24h]@1 double v29; // [sp+28h] [bp-1Ch]@1 int v30; // [sp+30h] [bp-14h]@1 int v31; // [sp+34h] [bp-10h]@4 int v32; // [sp+40h] [bp-4h]@1 unsigned int v33; // [sp+4Ch] [bp+8h]@19 v30 = (int)"RulesOfEngagementPhisycalSkill::roe_AttackPower"; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_AttackPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementPhisycalSkill::roe_AttackPower"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v32 = 0; sub_4FD0D0(a1); v29 = st7_0; sub_4FDF00(a1); v28 = st7_0; if ( *(_DWORD *)a1 ) { v3 = (*(int (**)(void))(**(_DWORD **)a1 + 1264))(); if ( v3 > 0 && (a1 = 1000 * (v3 - (*(int (**)(void))(**(_DWORD **)a1 + 1256))()) / v3, v4 = (*(int (**)(void))(**(_DWORD **)v2 + 1072))(), (v5 = v4) != 0) ) { v31 = sub_4C84E0(v4 + 3296, a1); v29 = (double)v31 + v29; a1 = sub_4C84E0(v5 + 3324, a1); st7_0 = (double)a1 + v28; } else { st7_0 = v28; } } v6 = *(_DWORD *)(*(_DWORD *)(v2 + 8) + 4); v7 = v29 + (double)*(unsigned int *)(v6 + 223) * v29 / 1000.0 + (double)*(unsigned int *)(v6 + 219); v8 = st7_0 + (double)*(unsigned int *)(v6 + 231) * st7_0 / 1000.0; v9 = (double)*(unsigned int *)(v6 + 227); v10 = *(_WORD *)(v2 + 12); v11 = v8 + v9; v12 = *(_WORD *)(v2 + 12) & 0xF; if ( *(_WORD *)(v2 + 12) & 0xF ) { a1 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 4 * (v10 & 0xF) + 443); v13 = (double)(unsigned int)a1; } else { v13 = 0.0; } v14 = v7 + v13; v15 = 0.0; v29 = v14; if ( v12 ) { a1 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 4 * (v10 & 0xF) + 443); v15 = (double)(unsigned int)a1; } v25 = 0; v26 = 0; v27 = 0; v28 = v11 + v15; v16 = *(int (**)(void))(**(_DWORD **)v2 + 1488); LOBYTE(v32) = 1; BYTE3(a1) = 0; v17 = v16(); if ( v17 ) { BYTE3(a1) = sub_5CF2C0(v17, *(_DWORD *)v2, *(_DWORD *)(v2 + 4), 1, (int)&v25); v18 = *(_DWORD *)(v2 + 8); if ( v18 ) { if ( *(_DWORD *)(v18 + 8) != *(_DWORD *)(v18 + 12) && sub_5CF200((void *)v17, (int)&v25, v18, 0, *(_DWORD *)v2, *(_DWORD *)(v2 + 4)) ) BYTE3(a1) = 1; } } v19 = (*(int (**)(void))(**(_DWORD **)(v2 + 4) + 1488))(); if ( v19 && sub_5CF2C0(v19, *(_DWORD *)v2, *(_DWORD *)(v2 + 4), 1, (int)&v25) || BYTE3(a1) ) { v31 = HIWORD(a1) | 0xC00; *(_QWORD *)&v29 = (signed __int64)v29; v33 = sub_5CDED0((int)&v25, LODWORD(v29)); v29 = (double)v33; v31 = HIWORD(v33) | 0xC00; *(_QWORD *)&v28 = (signed __int64)v28; v20 = (double)sub_5CDED0((int)&v25, LODWORD(v28)); } else { v20 = v28; } LOWORD(v21) = sub_6396B0(&unk_14D42DC0, (signed int)(v20 - v29)); v22 = (double)v21; v23 = *(int (**)(void))(**(_DWORD **)v2 + 1072); v28 = v22 + v29; v28 = (double)*(signed int *)(v23() + 2136) * v28 / 1000.0; if ( v25 ) operator delete(v25); --dword_750CB8; v25 = 0; v26 = 0; v27 = 0; v32 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementPhisycalSkill::roe_AttackPower"); return v28; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005056E0) -------------------------------------------------------- double __stdcall sub_5056E0(signed int a1) { signed int v1; // esi@1 double v2; // st7@1 unsigned int v3; // edi@2 int v4; // eax@3 int v5; // edi@3 int v6; // eax@6 double v7; // st6@6 double v8; // st7@6 double v9; // st5@6 __int16 v10; // ax@6 double v11; // st7@6 double v12; // st5@7 int (*v13)(void); // eax@9 int v14; // edi@9 int v15; // eax@10 int v16; // eax@14 double v17; // st7@17 signed int v18; // eax@19 void *v20; // [sp+10h] [bp-34h]@9 int v21; // [sp+14h] [bp-30h]@9 int v22; // [sp+18h] [bp-2Ch]@9 double v23; // [sp+20h] [bp-24h]@1 double v24; // [sp+28h] [bp-1Ch]@1 int v25; // [sp+30h] [bp-14h]@1 int v26; // [sp+34h] [bp-10h]@4 int v27; // [sp+40h] [bp-4h]@1 unsigned int v28; // [sp+4Ch] [bp+8h]@17 v25 = (int)"RulesOfEngagementMagicalSkill::roe_AttackPower"; sub_4675D0((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_AttackPower"); dword_7508B8[dword_750CB8] = (int)"RulesOfEngagementMagicalSkill::roe_AttackPower"; dword_750AB8[dword_750CB8++] = -1; v1 = a1; v27 = 0; v24 = sub_4FCB30(a1); v2 = sub_4FCE00(a1); v23 = v2; if ( *(_DWORD *)a1 ) { v3 = (*(int (**)(void))(**(_DWORD **)a1 + 1264))(); if ( v3 > 0 && (a1 = 1000 * (v3 - (*(int (**)(void))(**(_DWORD **)a1 + 1256))()) / v3, v4 = (*(int (**)(void))(**(_DWORD **)v1 + 1072))(), (v5 = v4) != 0) ) { v26 = sub_4C84E0(v4 + 3352, a1); v24 = (double)v26 + v24; a1 = sub_4C84E0(v5 + 3380, a1); v2 = (double)a1 + v23; } else { v2 = v23; } } v6 = *(_DWORD *)(*(_DWORD *)(v1 + 8) + 4); v7 = v24 + (double)*(unsigned int *)(v6 + 239) * v24 / 1000.0 + (double)*(unsigned int *)(v6 + 235); v8 = v2 + (double)*(unsigned int *)(v6 + 247) * v2 / 1000.0; v9 = (double)*(unsigned int *)(v6 + 243); v10 = *(_WORD *)(v1 + 12); v11 = v8 + v9; if ( v10 & 0xF ) { a1 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 8) + 4) + 4 * (v10 & 0xF) + 443); v12 = (double)(unsigned int)a1; } else { v12 = 0.0; } v20 = 0; v21 = 0; v22 = 0; v24 = v7 + v12; v23 = v11 + v12; v13 = *(int (**)(void))(**(_DWORD **)v1 + 1488); LOBYTE(v27) = 1; BYTE3(a1) = 0; v14 = v13(); if ( v14 ) { BYTE3(a1) = sub_5CF2C0(v14, *(_DWORD *)v1, *(_DWORD *)(v1 + 4), 1, (int)&v20); v15 = *(_DWORD *)(v1 + 8); if ( v15 ) { if ( *(_DWORD *)(v15 + 8) != *(_DWORD *)(v15 + 12) && sub_5CF200((void *)v14, (int)&v20, v15, 0, *(_DWORD *)v1, *(_DWORD *)(v1 + 4)) ) BYTE3(a1) = 1; } } v16 = (*(int (**)(void))(**(_DWORD **)(v1 + 4) + 1488))(); if ( v16 && sub_5CF2C0(v16, *(_DWORD *)v1, *(_DWORD *)(v1 + 4), 1, (int)&v20) || BYTE3(a1) ) { v26 = HIWORD(a1) | 0xC00; *(_QWORD *)&v24 = (signed __int64)v24; v28 = sub_5CDED0((int)&v20, LODWORD(v24)); v24 = (double)v28; v26 = HIWORD(v28) | 0xC00; *(_QWORD *)&v23 = (signed __int64)v23; v17 = (double)sub_5CDED0((int)&v20, LODWORD(v23)); } else { v17 = v23; } LOWORD(v18) = sub_6396B0(&unk_14D42DC0, (signed int)(v17 - v24)); v23 = (double)v18 + v24; if ( v20 ) operator delete(v20); --dword_750CB8; v20 = 0; v21 = 0; v22 = 0; v27 = -1; sub_467660((int)&unk_D020420, (int)"RulesOfEngagementMagicalSkill::roe_AttackPower"); return v23; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00505A10) -------------------------------------------------------- char __thiscall LuaScriptScenario::lss_Routine(int this, const void *a2, int a3) { char result; // al@1 const void *v4; // eax@2 char v5; // cl@3 char *v6; // edi@4 char v7; // al@5 unsigned int v8; // eax@6 void *v9; // edi@6 char v10; // cl@7 char v11; // [sp+3h] [bp-205h]@4 char v12[512]; // [sp+4h] [bp-204h]@3 unsigned int v13; // [sp+204h] [bp-4h]@1 int v14; // [sp+208h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; result = sub_5D4FF0(this, a2, a3); if ( !result ) { v4 = a2; do { v5 = *(_BYTE *)v4; *((_BYTE *)v4 + v12 - a2) = *(_BYTE *)v4; v4 = (char *)v4 + 1; } while ( v5 ); v6 = &v11; do v7 = (v6++)[1]; while ( v7 ); *(_WORD *)v6 = word_6B0394; v8 = strlen((const char *)&unk_14D409E0) + 1; v9 = &v11; do { v10 = *((_BYTE *)v9 + 1); v9 = (char *)v9 + 1; } while ( v10 ); memcpy(v9, &unk_14D409E0, v8); sub_6390B0(&unk_86DDD8, (int)"LuaScriptScenario::lss_Routine : function call error", (int)v12); result = sub_5D34F0(&unk_87B218, (int)"function call error", (int)v12); } return result; } // 6B0394: using guessed type __int16 word_6B0394; // 86FEB8: using guessed type int __security_cookie; // 505A10: using guessed type char var_204[512]; //----- (00505AE0) -------------------------------------------------------- void *__thiscall sub_505AE0(void *this) { void *v1; // ebx@1 char v3; // [sp+10h] [bp-110h]@1 unsigned int v4; // [sp+110h] [bp-10h]@1 int v5; // [sp+11Ch] [bp-4h]@1 int v6; // [sp+120h] [bp+0h]@1 v4 = (unsigned int)&v6 ^ __security_cookie; v1 = this; sub_4D5720(this); v5 = 0; *((_DWORD *)v1 + 65) = 0; sub_4D57B0(&v3, byte_6A492E); memcpy(v1, &v3, 0x100u); nullsub_2(&v3); *((_DWORD *)v1 + 64) = -1; return v1; } // 86FEB8: using guessed type int __security_cookie; //----- (00505B80) -------------------------------------------------------- void __thiscall sub_505B80(void *this) { void *v1; // ebx@1 char v2; // [sp+10h] [bp-110h]@1 unsigned int v3; // [sp+110h] [bp-10h]@1 int v4; // [sp+11Ch] [bp-4h]@1 int v5; // [sp+120h] [bp+0h]@1 v3 = (unsigned int)&v5 ^ __security_cookie; v1 = this; v4 = 0; *((_DWORD *)this + 65) = 0; sub_4D57B0(&v2, byte_6A492E); memcpy(v1, &v2, 0x100u); nullsub_2(&v2); *((_DWORD *)v1 + 64) = -1; v4 = -1; nullsub_2(v1); } // 86FEB8: using guessed type int __security_cookie; //----- (00505C20) -------------------------------------------------------- __int16 __thiscall sub_505C20(const char *this, int a2, int a3, const char *a4) { return sub_4D5910(this, a4); } //----- (00505C50) -------------------------------------------------------- char *__stdcall sub_505C50(char *a1, int a2, const char *a3) { char *result; // eax@2 if ( strcmp(a3, "lua") ) { sprintf(a1, "../9Data/Shine/ScenarioBookShelf/%s.%s", a2, a3); result = a1; } else { sprintf(a1, "../9Data/Shine/LuaScript/%s.%s", a2, a3); result = a1; } return result; } //----- (00505CC0) -------------------------------------------------------- int __thiscall sub_505CC0(int this) { return *(_DWORD *)(this + 77288); } //----- (00505CF0) -------------------------------------------------------- char __thiscall sub_505CF0(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x108u); result = 1; } else { result = 0; } return result; } //----- (00505D30) -------------------------------------------------------- char __thiscall sub_505D30(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x108u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00505D80) -------------------------------------------------------- char __thiscall sub_505D80(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x108u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00505DD0) -------------------------------------------------------- void *__thiscall sub_505DD0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6CCA60; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6CCA60: using guessed type int (__thiscall *off_6CCA60)(void *, char); //----- (00505E20) -------------------------------------------------------- void *__thiscall sub_505E20(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6CC9CC; if ( a2 & 1 ) operator delete(this); return v2; } // 6CC9CC: using guessed type int (__thiscall *off_6CC9CC)(void *, char); //----- (00505E50) -------------------------------------------------------- void *__thiscall sub_505E50(void *this, char a2) { void *v2; // esi@1 int v3; // ecx@1 v2 = this; *(_DWORD *)this = &off_6CCA48; v3 = *((_DWORD *)this + 1); if ( v3 ) (**(void (__stdcall ***)(_DWORD))v3)(1); *(_DWORD *)v2 = &off_6CC9CC; if ( a2 & 1 ) operator delete(v2); return v2; } // 6CC9CC: using guessed type int (__thiscall *off_6CC9CC)(void *, char); // 6CCA48: using guessed type int (__thiscall *off_6CCA48)(void *, char); //----- (00505EC0) -------------------------------------------------------- char __thiscall sub_505EC0(void *this, int a2) { void *v2; // esi@1 void *v3; // edi@1 void *v4; // eax@3 void *v5; // eax@4 void *v6; // edi@6 char *v7; // eax@6 char result; // al@7 int v9; // [sp+14h] [bp-94h]@6 char v10; // [sp+18h] [bp-90h]@6 unsigned int v11; // [sp+98h] [bp-10h]@1 int v12; // [sp+A4h] [bp-4h]@1 int v13; // [sp+A8h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ScenarioBookShelf::ScenarioBookPS::sb_Load"); dword_7508B8[dword_750CB8] = (int)"ScenarioBookShelf::ScenarioBookPS::sb_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = (void *)*((_DWORD *)v2 + 1); v12 = 0; if ( v3 ) { sub_4E0DF0(v3); operator delete(v3); } v4 = (void *)operator new(0xCu); LOBYTE(v12) = 1; if ( v4 ) v5 = sub_4E0DE0(v4); else v5 = 0; *((_DWORD *)v2 + 1) = v5; v6 = v5; LOBYTE(v12) = 0; v7 = sub_505C50(&v10, a2, (const char *)&unk_6CCA90); if ( sub_4D6120(v6, v7, (int)&v9) ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::ScenarioBookPS::sb_Load"); result = 1; } else { sub_639100(&unk_86DDD8, a2, v9); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::ScenarioBookPS::sb_Load"); result = 0; } return result; } // 4E0DF0: using guessed type int __thiscall sub_4E0DF0(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00506010) -------------------------------------------------------- char __thiscall sub_506010(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@3 int v5; // eax@4 int v6; // ebx@6 char *v7; // eax@6 char result; // al@7 unsigned int v9; // [sp-4h] [bp-128h]@1 char v10; // [sp+14h] [bp-110h]@6 unsigned int v11; // [sp+114h] [bp-10h]@1 int v12; // [sp+120h] [bp-4h]@1 int v13; // [sp+124h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v9 = (unsigned int)&v13 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ScenarioBookShelf::ScenarioBookLua::sb_Load"); dword_7508B8[dword_750CB8] = (int)"ScenarioBookShelf::ScenarioBookLua::sb_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 1); v12 = 0; if ( v3 ) (**(void (__stdcall ***)(_DWORD))v3)(1); v4 = operator new(8u); LOBYTE(v12) = 1; if ( v4 ) v5 = sub_5D5450(v4); else v5 = 0; LOBYTE(v12) = 0; *((_DWORD *)v2 + 1) = v5; v6 = v5; v7 = sub_505C50(&v10, a2, "lua"); if ( sub_5D4280(v6, v7) ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::ScenarioBookLua::sb_Load"); result = 1; } else { sub_6390B0(&unk_86DDD8, (int)"ScenarioBookShelf::ScenarioBookLua::sb_Load : Lua load error", a2); loc_6391B0("ScenarioBookShelf::ScenarioBookLua::sb_Load", v9); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::ScenarioBookLua::sb_Load"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00506160) -------------------------------------------------------- void *__thiscall sub_506160(void *this) { void *v1; // edi@1 char *v2; // esi@1 v1 = this; v2 = (char *)this + 4; *(_DWORD *)this = &off_6CCB30; sub_4D8090((int)((char *)this + 12)); sub_50BA60((int)(v2 + 66124)); sub_4D5720(v2 + 77028); *((_DWORD *)v2 + 16456) = v2; *((_DWORD *)v2 + 16530) = v2; *(_DWORD *)v1 = &off_6CCB40; return v1; } // 6CCB30: using guessed type int (__thiscall *off_6CCB30)(void *, char); // 6CCB40: using guessed type int (__thiscall *off_6CCB40)(void *, char); //----- (005061F0) -------------------------------------------------------- int __thiscall sub_5061F0(int this) { int v1; // esi@1 v1 = this + 4; *(_DWORD *)this = &off_6CCB30; nullsub_2((void *)(this + 77032)); sub_508280(v1 + 66124); return sub_4D6000(v1 + 8); } // 6CCB30: using guessed type int (__thiscall *off_6CCB30)(void *, char); //----- (00506260) -------------------------------------------------------- void *__thiscall sub_506260(void *this) { void *v1; // edi@1 char *v2; // esi@1 v1 = this; v2 = (char *)this + 4; *(_DWORD *)this = &off_6CCB30; sub_4D8090((int)((char *)this + 12)); sub_50BA60((int)(v2 + 66124)); sub_4D5720(v2 + 77028); *((_DWORD *)v2 + 16456) = v2; *((_DWORD *)v2 + 16530) = v2; *(_DWORD *)v1 = &off_6CCB50; return v1; } // 6CCB30: using guessed type int (__thiscall *off_6CCB30)(void *, char); // 6CCB50: using guessed type int (__thiscall *off_6CCB50)(void *, char); //----- (005062F0) -------------------------------------------------------- int __thiscall sub_5062F0(void *this, void (__thiscall *a2)(_DWORD, _DWORD), int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::PSFilm::fb_ScriptInterrupt"); dword_7508B8[dword_750CB8] = (int)"Movie::PSFilm::fb_ScriptInterrupt"; dword_750AB8[dword_750CB8++] = -1; a2((char *)v3 + 66128, a3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Movie::PSFilm::fb_ScriptInterrupt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005063A0) -------------------------------------------------------- int __thiscall sub_5063A0(void *this, unsigned __int8 *a2, int a3) { void *v3; // esi@1 signed int v4; // eax@1 int v5; // esi@3 int result; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ScenarioBookShelf::sbs_GetScenarioBook"); dword_7508B8[dword_750CB8] = (int)"ScenarioBookShelf::sbs_GetScenarioBook"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_639620((char *)v3 + 16, a2); if ( v4 == -1 || v4 >= (unsigned int)((*((_DWORD *)v3 + 1) - *(_DWORD *)v3) >> 2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::sbs_GetScenarioBook"); result = 0; } else { *(_DWORD *)a3 = v4; v5 = *(_DWORD *)(*(_DWORD *)v3 + 4 * v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::sbs_GetScenarioBook"); result = v5; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005064A0) -------------------------------------------------------- int __thiscall sub_5064A0(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ScenarioBookShelf::sbsReLoad"); dword_7508B8[dword_750CB8] = (int)"ScenarioBookShelf::sbsReLoad"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_639670((char *)v2 + 16, a2); if ( v3 != -1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(*(_DWORD *)v2 + 4 * v3) + 4))( *(_DWORD *)(*(_DWORD *)v2 + 4 * v3), a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::sbsReLoad"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00506550) -------------------------------------------------------- void __thiscall sub_506550(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6CCBCC; _LN21((void *)(this + 620536), 0x12DF4u, 8, (void (__thiscall *)(void *))sub_5061F0); _LN21((void *)(v1 + 2136), 0x12DF4u, 8, (void (__thiscall *)(void *))sub_5061F0); _LN21((void *)(v1 + 24), 0x108u, 8, sub_505B80); *(_DWORD *)v1 = &off_6CCA60; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6CCA60: using guessed type int (__thiscall *off_6CCA60)(void *, char); // 6CCBCC: using guessed type int (__thiscall *off_6CCBCC)(void *, char); //----- (00506600) -------------------------------------------------------- unsigned int __thiscall sub_506600(void *this) { void *v1; // esi@1 unsigned int v2; // edx@1 unsigned int v3; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::TimeLimit::tl_GetTimeLimit"); dword_7508B8[dword_750CB8] = (int)"Movie::TimeLimit::tl_GetTimeLimit"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)v1 - dword_14D129E8; --dword_750CB8; v3 = v2 / 0xA; sub_467660((int)&unk_D020420, (int)"Movie::TimeLimit::tl_GetTimeLimit"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00506670) -------------------------------------------------------- int __thiscall sub_506670(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::TimeLimit::tl_SetTimeLimit"); dword_7508B8[dword_750CB8] = (int)"Movie::TimeLimit::tl_SetTimeLimit"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v3 + 8) = 1; switch ( *(_BYTE *)a2 ) { case 72: case 104: v4 = 3600 * a3; break; case 77: case 109: v4 = 60 * a3; break; default: v4 = a3; break; } *(_DWORD *)v3 = dword_14D129E8 + 10 * v4; *((_DWORD *)v3 + 1) = &unk_5F5E0FF; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Movie::TimeLimit::tl_SetTimeLimit"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00506760) -------------------------------------------------------- signed int __thiscall sub_506760(void *this) { void *v1; // esi@1 signed int v2; // edi@1 int v3; // ecx@1 int v4; // eax@1 void *v5; // eax@2 void *v6; // ecx@2 char v8; // [sp+Ch] [bp-1Ch]@2 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v1 = this; v9 = (int)"Movie::TimeLimit::tl_LeftTick"; sub_4675D0((int)&unk_D020420, (int)"Movie::TimeLimit::tl_LeftTick"); dword_7508B8[dword_750CB8] = (int)"Movie::TimeLimit::tl_LeftTick"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)v1 - dword_14D129E8; v3 = v2 / 10; v4 = v2 / 10 / 60; v10 = 0; if ( *((_DWORD *)v1 + 1) != v4 ) { *((_DWORD *)v1 + 1) = v4; v5 = off_849C18; *(_WORD *)off_849C18 = 2064; *(_WORD *)((char *)v5 + 3) = v3; *((_BYTE *)v5 + 2) = 1; sub_4287B0(&v8, &off_849C18, 5); v6 = *(void **)(*((_DWORD *)v1 + 3) + 77292); LOBYTE(v10) = 1; if ( v6 ) sub_549B60(v6, (int)&v8, 0); else sub_639100(&unk_86DDD8, (int)"Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v10) = 0; sub_428A70(&v8); } --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"Movie::TimeLimit::tl_LeftTick"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00506890) -------------------------------------------------------- char __thiscall sub_506890(void *this, unsigned __int16 a2) { void *v2; // esi@1 bool v3; // zf@1 int v4; // eax@1 char result; // al@6 int v6; // ecx@7 bool v7; // bl@8 int v8; // [sp-8h] [bp-38h]@3 int v9; // [sp-4h] [bp-34h]@3 char v10; // [sp+10h] [bp-20h]@7 int v11; // [sp+20h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-4h]@1 v2 = this; v11 = (int)"Movie::Theater::t_Routine"; sub_4675D0((int)&unk_D020420, (int)"Movie::Theater::t_Routine"); dword_7508B8[dword_750CB8] = (int)"Movie::Theater::t_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)v2 - 1; v3 = *(_DWORD *)v2 == 1; v12 = 0; if ( v3 ) { v7 = (unsigned __int16)sub_4D6070((int)((char *)v2 + 8), a2) != 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_Routine"); result = v7; } else { if ( v4 != 1 ) { v9 = 0; v8 = (int)"Movie::Theater::t_Routine : Invalid ScriptType"; LABEL_6: sub_639100(&unk_86DDD8, v8, v9); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_Routine"); return 0; } if ( *((_DWORD *)v2 + 1) == 0 ) { v9 = 0; v8 = (int)"Movie::Theater::t_Routine : Lua Null"; goto LABEL_6; } sub_5D43D0((int)&v10, *((_DWORD *)v2 + 19322)); v6 = *((_DWORD *)v2 + 1); LOBYTE(v12) = 1; LuaScriptScenario::lss_Routine(v6, "Main", (int)&v10); LOBYTE(v12) = 0; sub_5D4580(&v10); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_Routine"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005069F0) -------------------------------------------------------- signed int __thiscall sub_5069F0(void *this, int a2, const void *a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // edi@1 int v9; // eax@2 int v10; // eax@2 void *v12; // eax@8 int v13; // eax@10 int v14; // eax@10 int v15; // esi@13 char v16; // [sp+14h] [bp-210h]@10 char v17; // [sp+114h] [bp-110h]@1 unsigned int v18; // [sp+214h] [bp-10h]@1 int v19; // [sp+220h] [bp-4h]@1 int v20; // [sp+224h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::Theater::t_PlayFilm"); dword_7508B8[dword_750CB8] = (int)"Movie::Theater::t_PlayFilm"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; sub_4D57B0(&v17, (const char *)a2); LOBYTE(v19) = 1; *(_DWORD *)v4 = 0; *((_DWORD *)v4 + 1) = 0; v5 = sub_4D5720((char *)v4 + 77028); v6 = sub_4D5950((char *)v5, &v17); v7 = sub_5CF620(v6); v8 = sub_5063A0(&unk_13230E20, (unsigned __int8 *)v7, (int)((char *)v4 + 77284)); if ( !v8 ) goto LABEL_5; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 8))(v8); *(_DWORD *)v4 = v9; v10 = v9 - 1; if ( v10 ) { if ( v10 != 1 ) { *(_DWORD *)v4 = 0; sub_6390B0(&unk_86DDD8, (int)"Invalid Script Type", a2); LABEL_5: LOBYTE(v19) = 0; nullsub_2(&v17); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_PlayFilm"); return -1; } *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 16))(v8); } else { v12 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 12))(v8); if ( v12 ) { v13 = (int)sub_5CF620(v12); sub_4D6020((int)((char *)v4 + 8), v13); *((_BYTE *)v4 + 66116) = 0; sub_4D57B0(&v16, "InitFlag"); LOBYTE(v19) = 2; v14 = sub_4D60B0((char *)v4 + 8, (int)&v16); if ( v14 ) memcpy((void *)v14, a3, 0x100u); LOBYTE(v19) = 1; nullsub_2(&v16); } else { sub_6390B0(&unk_86DDD8, (int)"Movie::Theater::t_PlayFilm : Null PSScript", a2); } } v15 = *((_DWORD *)v4 + 19321); LOBYTE(v19) = 0; nullsub_2(&v17); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_PlayFilm"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00506BF0) -------------------------------------------------------- char __thiscall sub_506BF0(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x108u); result = 1; } else { result = 0; } return result; } //----- (00506C30) -------------------------------------------------------- void *__thiscall sub_506C30(void *this, char a2) { void *v2; // esi@1 void *v3; // edi@1 v2 = this; *(_DWORD *)this = &off_6CCA30; v3 = (void *)*((_DWORD *)this + 1); if ( v3 ) { sub_4E0DF0(v3); operator delete(v3); } *(_DWORD *)v2 = &off_6CC9CC; if ( a2 & 1 ) operator delete(v2); return v2; } // 4E0DF0: using guessed type int __thiscall sub_4E0DF0(_DWORD); // 6CC9CC: using guessed type int (__thiscall *off_6CC9CC)(void *, char); // 6CCA30: using guessed type int (__thiscall *off_6CCA30)(void *, char); //----- (00506CB0) -------------------------------------------------------- void *__thiscall sub_506CB0(void *this, char a2) { void *v2; // esi@1 char *v3; // edi@1 v2 = this; v3 = (char *)this + 4; *(_DWORD *)this = &off_6CCB30; nullsub_2((char *)this + 77032); sub_508280((int)(v3 + 66124)); sub_4D6000((int)(v3 + 8)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6CCB30: using guessed type int (__thiscall *off_6CCB30)(void *, char); //----- (00506D40) -------------------------------------------------------- signed int __thiscall sub_506D40(void *this, int a2, const void *a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 signed int v6; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::FilmBase::fb_PlayFilm"); dword_7508B8[dword_750CB8] = (int)"Movie::FilmBase::fb_PlayFilm"; dword_750AB8[dword_750CB8++] = -1; v5 = sub_5069F0((char *)v4 + 4, a2, a3, a4); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"Movie::FilmBase::fb_PlayFilm"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00506DF0) -------------------------------------------------------- char __thiscall sub_506DF0(void *this, unsigned __int16 a2) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::FilmBase::fb_Routine"); dword_7508B8[dword_750CB8] = (int)"Movie::FilmBase::fb_Routine"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_506890((char *)v2 + 4, a2); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"Movie::FilmBase::fb_Routine"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00506EA0) -------------------------------------------------------- void *__thiscall sub_506EA0(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_506550((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00506ED0) -------------------------------------------------------- void *__thiscall sub_506ED0(void *this, int a2, int a3) { char *v3; // esi@1 void *v5; // [sp+18h] [bp-14h]@1 signed int v6; // [sp+1Ch] [bp-10h]@1 v5 = this; v3 = (char *)this + 79432; v6 = 8; do { sub_4675D0((int)&unk_D020420, (int)"Movie::PSFilm::fb_SetArgument"); dword_7508B8[dword_750CB8] = (int)"Movie::PSFilm::fb_SetArgument"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"Movie::Theater::t_SetArgument"); dword_7508B8[dword_750CB8] = (int)"Movie::Theater::t_SetArgument"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 - 1) = a2; *(_DWORD *)v3 = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_SetArgument"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Movie::PSFilm::fb_SetArgument"); sub_4675D0((int)&unk_D020420, (int)"Movie::PSFilm::fb_SetArgument"); dword_7508B8[dword_750CB8] = (int)"Movie::PSFilm::fb_SetArgument"; dword_750AB8[dword_750CB8++] = -1; sub_4675D0((int)&unk_D020420, (int)"Movie::Theater::t_SetArgument"); dword_7508B8[dword_750CB8] = (int)"Movie::Theater::t_SetArgument"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 154599) = a2; *((_DWORD *)v3 + 154600) = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Movie::Theater::t_SetArgument"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Movie::PSFilm::fb_SetArgument"); v3 += 77300; --v6; } while ( v6 ); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005070A0) -------------------------------------------------------- int __thiscall sub_5070A0(void *this, int a2, int a3) { void *v3; // edi@1 unsigned __int16 v4; // si@1 unsigned __int16 v5; // dx@2 int v6; // ecx@3 int v7; // eax@3 unsigned __int16 v8; // ST18_2@3 bool v9; // zf@4 int v10; // ecx@4 int v11; // ecx@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_ScriptInterrupt"); dword_7508B8[dword_750CB8] = (int)"Movie::CinemaComplex::cc_ScriptInterrupt"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)(*((_DWORD *)v3 + 2) + 12 * *((_WORD *)v3 + 7) + 4); while ( 1 ) { v5 = *((_WORD *)v3 + 2); if ( v4 >= v5 ) break; v6 = *((_DWORD *)v3 + 2); v7 = v4; v8 = v4; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( v8 >= v5 || (v9 = *(_BYTE *)(v6 + 12 * v7 + 8) == 0, v10 = v6 + 12 * v7, v9) ) v11 = 0; else v11 = *(_DWORD *)v10; (*(void (__stdcall **)(int, int))(**(_DWORD **)(v11 + 260) + 4))(a2, a3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_ScriptInterrupt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005071A0) -------------------------------------------------------- signed int __thiscall sub_5071A0(void *this, int a2, const void *a3, int a4) { void *v4; // esi@1 int v5; // ebx@1 int v6; // eax@8 unsigned __int16 v7; // di@10 int (__thiscall *v8)(_DWORD, _DWORD); // eax@11 int v9; // ST0C_4@11 int v10; // eax@14 int v11; // eax@15 int v12; // eax@16 __time32_t v13; // eax@20 int v14; // ecx@20 int v15; // edi@20 signed int v16; // esi@20 __time32_t v17; // eax@21 __time32_t v18; // eax@22 unsigned int v20; // [sp-4h] [bp-134h]@1 void *v21; // [sp+10h] [bp-120h]@1 int v22; // [sp+14h] [bp-11Ch]@14 int v23; // [sp+18h] [bp-118h]@10 int v24; // [sp+1Ch] [bp-114h]@1 char v25; // [sp+20h] [bp-110h]@3 unsigned int v26; // [sp+120h] [bp-10h]@1 int v27; // [sp+12Ch] [bp-4h]@1 int v28; // [sp+130h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v20 = (unsigned int)&v28 ^ __security_cookie; v4 = this; v21 = this; v24 = a2; sub_4675D0((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_PlayFilm"); dword_7508B8[dword_750CB8] = (int)"Movie::CinemaComplex::cc_PlayFilm"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v27 = 0; if ( byte_7493ED ) { if ( byte_14D14F84 ) { sprintf(&v25, "%.255s", "Movie::CinemaComplex::cc_PlayFilm 1"); sub_418E40((__time32_t)byte_14D14D00); if ( dword_14D14E00 ) fputs(&v25, dword_14D14E00); } if ( byte_7493ED && byte_14D14F84 && dword_14D14E00 ) { v6 = sub_418E40((__time32_t)byte_14D14D00); sub_654AB0(10, (FILE *)v6); fflush(dword_14D14E00); fclose(dword_14D14E00); dword_14D14E00 = 0; } } if ( *((_WORD *)v4 + 6) == -1 ) { v7 = v23; } else { v7 = *((_WORD *)v4 + 6); v8 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 4); v9 = *((_WORD *)v4 + 6); v23 = *((_WORD *)v4 + 6); v5 = v8(v4, v9); } if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"Movie::CinemaComplex::cc_PlayFilm : Too many film", 0); LABEL_24: --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_PlayFilm"); return -1; } v10 = sub_5063A0(&unk_13230E20, (unsigned __int8 *)v24, (int)&v22); if ( !v10 ) goto LABEL_24; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 8))(v10); if ( !v11 ) { sub_6390B0(&unk_86DDD8, (int)"Movie::CinemaComplex::cc_PlayFilm : Wrong scenario type", v24); goto LABEL_24; } v12 = v11 - 1; if ( v12 ) { if ( v12 == 1 ) *(_DWORD *)(v5 + 260) = (char *)v4 + 77300 * v7 + 620536; } else { *(_DWORD *)(v5 + 260) = (char *)v4 + 77300 * v7 + 2136; } v13 = sub_418EA0((__time32_t)byte_14D14D00, (int)"Movie::CinemaComplex::cc_PlayFilm 2"); sub_418F20(v13, (int)&unk_13359E04); sub_4D57B0(&v25, (const char *)v24); memcpy((void *)v5, &v25, 0x100u); nullsub_2(&v25); v14 = *(_DWORD *)(v5 + 260); *(_DWORD *)(v5 + 256) = v22; (*(void (__cdecl **)(unsigned int))(*(_DWORD *)v14 + 8))(v20); v15 = v24; v16 = sub_506D40(*(void **)(v5 + 260), v24, a3, a4); if ( v16 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"Script Error", v15); v17 = sub_418EA0((__time32_t)byte_14D14D00, (int)"Movie::CinemaComplex::cc_PlayFilm Free"); sub_418F20(v17, (int)&unk_13359E04); (*(void (__stdcall **)(int))(*(_DWORD *)v21 + 12))(v23); } v18 = sub_418EA0((__time32_t)byte_14D14D00, (int)"Movie::CinemaComplex::cc_PlayFilm 3"); sub_418F20(v18, (int)&unk_13359E04); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_PlayFilm"); return v16; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D14F84: using guessed type char byte_14D14F84; //----- (005074C0) -------------------------------------------------------- char __thiscall sub_5074C0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6CCA8C; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6CCA8C: using guessed type int (__stdcall *off_6CCA8C)(int, int); //----- (00507640) -------------------------------------------------------- char __thiscall sub_507640(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // ecx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Movie::FilmCase::fc_Routine"); dword_7508B8[dword_750CB8] = (int)"Movie::FilmCase::fc_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = (void *)*((_DWORD *)v3 + 65); if ( v4 && !sub_506DF0(v4, a3) ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 12))(a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Movie::FilmCase::fc_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00507700) -------------------------------------------------------- int __thiscall sub_507700(void *this) { void *v1; // esi@1 int (__stdcall **v3)(int, int); // [sp+8h] [bp-18h]@1 char *v4; // [sp+Ch] [bp-14h]@1 int v5; // [sp+10h] [bp-10h]@1 int v6; // [sp+1Ch] [bp-4h]@1 v1 = this; v5 = (int)"Movie::PSFilm::fb_SetInterruptClear"; sub_4675D0((int)&unk_D020420, (int)"Movie::PSFilm::fb_SetInterruptClear"); dword_7508B8[dword_750CB8] = (int)"Movie::PSFilm::fb_SetInterruptClear"; dword_750AB8[dword_750CB8++] = -1; v6 = 0; v3 = &off_6CADC0; v4 = (char *)v1 + 66128; LOBYTE(v6) = 1; sub_43C470((int)((char *)v1 + 66128), (int)&v3); --dword_750CB8; v3 = &off_6C7EC4; v6 = -1; return sub_467660((int)&unk_D020420, (int)"Movie::PSFilm::fb_SetInterruptClear"); } // 6C7EC4: using guessed type int (__stdcall *off_6C7EC4)(int, int); // 6CADC0: using guessed type int (__stdcall *off_6CADC0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005077C0) -------------------------------------------------------- char __thiscall sub_5077C0(void *this, const char *a2) { int v2; // ebx@1 int (__stdcall **v4)(int, int); // [sp+10h] [bp-230h]@1 int v5; // [sp+14h] [bp-22Ch]@1 __int16 (__thiscall *v6)(const char *, int, int, const char *); // [sp+18h] [bp-228h]@1 char *v7; // [sp+1Ch] [bp-224h]@1 int v8; // [sp+20h] [bp-220h]@1 __int16 v9; // [sp+24h] [bp-21Ch]@1 char v10; // [sp+28h] [bp-218h]@1 char v11; // [sp+128h] [bp-118h]@1 int v12; // [sp+228h] [bp-18h]@1 int v13; // [sp+22Ch] [bp-14h]@1 unsigned int v14; // [sp+230h] [bp-10h]@1 int v15; // [sp+23Ch] [bp-4h]@1 int v16; // [sp+240h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_IsDuringPlay"); dword_7508B8[dword_750CB8] = (int)"Movie::CinemaComplex::cc_IsDuringPlay"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; sub_4D5720(&v11); LOBYTE(v15) = 1; v13 = 0; sub_4D57B0(&v10, a2); memcpy(&v11, &v10, 0x100u); nullsub_2(&v10); v12 = -1; v4 = &off_6CCD5C; v5 = v2; v6 = sub_505C20; v7 = &v11; v8 = 0; v9 = -1; LOBYTE(v15) = 3; sub_43C470(v2, (int)&v4); LOBYTE(v2) = v8 != 0; LOBYTE(v15) = 4; v13 = 0; sub_4D57B0(&v10, byte_6A492E); memcpy(&v11, &v10, 0x100u); nullsub_2(&v10); v12 = -1; LOBYTE(v15) = 0; nullsub_2(&v11); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"Movie::CinemaComplex::cc_IsDuringPlay"); return v2; } // 6CCD5C: using guessed type int (__stdcall *off_6CCD5C)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00507950) -------------------------------------------------------- char __thiscall sub_507950(void *this, const char *a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // edi@1 int v6; // eax@2 char result; // al@5 unsigned int v8; // [sp-4h] [bp-258h]@1 char v9; // [sp+Ch] [bp-248h]@4 int (__stdcall **v10)(int, int); // [sp+1Ch] [bp-238h]@1 int v11; // [sp+20h] [bp-234h]@1 __int16 (__thiscall *v12)(const char *, int, int, const char *); // [sp+24h] [bp-230h]@1 char *v13; // [sp+28h] [bp-22Ch]@1 int v14; // [sp+2Ch] [bp-228h]@1 unsigned __int16 v15; // [sp+30h] [bp-224h]@1 int v16; // [sp+34h] [bp-220h]@1 int v17; // [sp+38h] [bp-21Ch]@1 char v18; // [sp+3Ch] [bp-218h]@1 char v19; // [sp+13Ch] [bp-118h]@1 int v20; // [sp+23Ch] [bp-18h]@1 int v21; // [sp+240h] [bp-14h]@1 unsigned int v22; // [sp+244h] [bp-10h]@1 int v23; // [sp+250h] [bp-4h]@1 int v24; // [sp+254h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v8 = (unsigned int)&v24 ^ __security_cookie; v3 = (int)this; v17 = (int)a2; v16 = a3; sub_4D5720(&v19); v23 = 0; v21 = 0; sub_4D57B0(&v18, a2); memcpy(&v19, &v18, 0x100u); nullsub_2(&v18); v20 = -1; v23 = 1; v10 = &off_6CCD5C; v11 = v3; v12 = sub_505C20; v13 = &v19; v14 = 0; v15 = -1; LOBYTE(v23) = 2; sub_43C470(v3, (int)&v10); v4 = v14; v5 = v15; LOBYTE(v23) = 1; v10 = &off_6CCA84; if ( v14 ) { v6 = sub_5063A0(&unk_13230E20, (unsigned __int8 *)v17, (int)&v17); if ( v6 ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 16))(v6); if ( v17 ) { sub_5D43D0((int)&v9, v16); LOBYTE(v23) = 3; sub_4613B0(v17, "InstanceDungeonClear", (int)&v9); LOBYTE(v23) = 1; sub_5D4580(&v9); } } (*(void (__cdecl **)(unsigned int))(**(_DWORD **)(v4 + 260) + 8))(v8); *(_DWORD *)(v4 + 260) = 0; (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 12))(v3, v5); v23 = -1; sub_505B80(&v19); result = 1; } else { v23 = -1; sub_505B80(&v19); result = 0; } return result; } // 6CCA84: using guessed type int (__stdcall *off_6CCA84)(int, int); // 6CCD5C: using guessed type int (__stdcall *off_6CCD5C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00507B30) -------------------------------------------------------- int __thiscall sub_507B30(int this) { int v1; // esi@1 int v2; // eax@2 int v3; // eax@5 int v4; // eax@8 int v5; // eax@11 int v6; // eax@14 int v7; // eax@17 int v8; // eax@20 int v9; // eax@23 v1 = this; *(_DWORD *)this = &off_6CCA60; *(_DWORD *)(this + 16) = 0; sub_5074C0(this, 8u); *(_DWORD *)v1 = &off_6CCBCC; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x108u, 8, (int)sub_505AE0, sub_505B80); _eh_vector_constructor_iterator_( (void *)(v1 + 2136), 0x12DF4u, 8, (int)sub_506160, (void (__thiscall *)(void *))sub_5061F0); _eh_vector_constructor_iterator_( (void *)(v1 + 620536), 0x12DF4u, 8, (int)sub_506260, (void (__thiscall *)(void *))sub_5061F0); if ( *(_WORD *)(v1 + 4) > 0u ) { v2 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)v2 ) *(_DWORD *)v2 = v1 + 24; } if ( *(_WORD *)(v1 + 4) > 1u ) { v3 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v3 + 12) ) *(_DWORD *)(v3 + 12) = v1 + 288; } if ( *(_WORD *)(v1 + 4) > 2u ) { v4 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v4 + 24) ) *(_DWORD *)(v4 + 24) = v1 + 552; } if ( *(_WORD *)(v1 + 4) > 3u ) { v5 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v5 + 36) ) *(_DWORD *)(v5 + 36) = v1 + 816; } if ( *(_WORD *)(v1 + 4) > 4u ) { v6 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v6 + 48) ) *(_DWORD *)(v6 + 48) = v1 + 1080; } if ( *(_WORD *)(v1 + 4) > 5u ) { v7 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v7 + 60) ) *(_DWORD *)(v7 + 60) = v1 + 1344; } if ( *(_WORD *)(v1 + 4) > 6u ) { v8 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v8 + 72) ) *(_DWORD *)(v8 + 72) = v1 + 1608; } if ( *(_WORD *)(v1 + 4) > 7u ) { v9 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v9 + 84) ) *(_DWORD *)(v9 + 84) = v1 + 1872; } return v1; } // 6CCA60: using guessed type int (__thiscall *off_6CCA60)(void *, char); // 6CCBCC: using guessed type int (__thiscall *off_6CCBCC)(void *, char); //----- (00507CD0) -------------------------------------------------------- void __thiscall sub_507CD0(int this) { int v1; // esi@1 unsigned int v2; // edi@1 int v3; // ecx@2 v1 = this; v2 = 0; if ( (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2 ) { do { v3 = *(_DWORD *)(*(_DWORD *)v1 + 4 * v2); if ( v3 ) (**(void (__stdcall ***)(_DWORD))v3)(1); ++v2; } while ( v2 < (*(_DWORD *)(v1 + 4) - *(_DWORD *)v1) >> 2 ); } sub_639560((void *)(v1 + 16)); if ( *(_DWORD *)v1 ) operator delete(*(void **)v1); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (00507D70) -------------------------------------------------------- char __thiscall sub_507D70(void *this, int a2) { int v2; // edi@1 char *v3; // eax@1 FILE *v4; // eax@1 int v5; // eax@2 char *v6; // eax@4 FILE *v7; // eax@4 int v8; // ecx@8 void (__stdcall *v9)(_DWORD); // eax@8 int v11; // [sp+10h] [bp-94h]@8 char v12; // [sp+14h] [bp-90h]@1 unsigned int v13; // [sp+94h] [bp-10h]@1 int v14; // [sp+A0h] [bp-4h]@1 int v15; // [sp+A4h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ScenarioBookShelf::sbs_Read"); dword_7508B8[dword_750CB8] = (int)"ScenarioBookShelf::sbs_Read"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v3 = sub_505C50(&v12, a2, (const char *)&unk_6CCA90); v4 = fopen(v3, "r"); if ( v4 ) { fclose(v4); v5 = operator new(8u); if ( v5 ) { *(_DWORD *)v5 = &off_6CCA30; *(_DWORD *)(v5 + 4) = 0; LABEL_8: v8 = v5; v9 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v5 + 4); v11 = v8; v9(a2); sub_639590((void *)(v2 + 16), (unsigned __int8 *)a2, (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2); sub_4242C0(v2, (unsigned int)&v11); --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::sbs_Read"); return 1; } goto LABEL_7; } v6 = sub_505C50(&v12, a2, "lua"); v7 = fopen(v6, "r"); if ( v7 ) { fclose(v7); v5 = operator new(8u); if ( v5 ) { *(_DWORD *)v5 = &off_6CCA48; *(_DWORD *)(v5 + 4) = 0; goto LABEL_8; } LABEL_7: v5 = 0; goto LABEL_8; } sub_6390B0(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_Read : File not found", a2); --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"ScenarioBookShelf::sbs_Read"); return 0; } // 6CCA30: using guessed type int (__thiscall *off_6CCA30)(void *, char); // 6CCA48: using guessed type int (__thiscall *off_6CCA48)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00507F10) -------------------------------------------------------- char __thiscall sub_507F10(void *this, int a2) { int v2; // eax@1 v2 = (unsigned __int8)sub_507D70(this, a2); if ( !(_BYTE)v2 ) { sub_6390B0(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_ReadNAssert : Script Load Error", a2); LOBYTE(v2) = loc_6391B0("ScenarioBookShelf::sbs_ReadNAssert"); } return v2; } //----- (00507F50) -------------------------------------------------------- void __cdecl sub_507F50() { char v0; // bl@1 int v1; // eax@1 int i; // ebx@3 int v3; // esi@4 int v4; // [sp-34h] [bp-108A0h]@4 int v5; // [sp-30h] [bp-1089Ch]@4 int v6; // [sp-2Ch] [bp-10898h]@4 int v7; // [sp-28h] [bp-10894h]@4 int v8; // [sp-24h] [bp-10890h]@4 const char *v9; // [sp-20h] [bp-1088Ch]@4 int v10; // [sp-1Ch] [bp-10888h]@4 int v11; // [sp-18h] [bp-10884h]@4 int v12; // [sp-14h] [bp-10880h]@4 unsigned int v13; // [sp-10h] [bp-1087Ch]@1 int *v14; // [sp+0h] [bp-1086Ch]@4 int v15; // [sp+4h] [bp-10868h]@4 char v16; // [sp+8h] [bp-10864h]@1 unsigned int v17; // [sp+1085Ch] [bp-10h]@1 int v18; // [sp+10868h] [bp-4h]@1 int v19; // [sp+1086Ch] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v13 = (unsigned int)&v19 ^ __security_cookie; sub_6432E0((int)&v16); v18 = 0; v0 = sub_6434A0(&v16, "../9Data/Shine/World/PineScript.txt"); v1 = sub_642790(&v16); if ( !v0 ) { sub_639100(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_LoadScripts : Option read error", v1); loc_6391B0("ScenarioBookShelf::sbs_LoadScripts"); } for ( i = 0; ; ++i ) { v12 = (int)&v15; v11 = i; v10 = 0; v9 = byte_6A492E; v14 = &v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v4 = 0; strncpy((char *)&v4, "PineScript", 0x14u); v3 = sub_644C30(&v16, "ScriptName", v4, v5, v6, v7, v8, v9, v10, v11, v12); if ( !v3 ) break; if ( v15 != 2 ) { sub_639100(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_LoadScripts : Type error", v15); loc_6391B0("ScenarioBookShelf::sbs_LoadScripts"); } if ( !sub_507D70(&unk_13230E20, v3) ) { sub_6390B0(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_ReadNAssert : Script Load Error", v3); loc_6391B0("ScenarioBookShelf::sbs_ReadNAssert"); } } v18 = -1; sub_643080(&v16); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (005080C0) -------------------------------------------------------- int __thiscall sub_5080C0(int this) { int v1; // esi@1 v1 = this; sub_4D5720((void *)(this + 4)); *(_DWORD *)(v1 + 280) = 0; *(_DWORD *)(v1 + 276) = 0; *(_DWORD *)(v1 + 272) = 0; *(_DWORD *)(v1 + 268) = 0; return v1; } //----- (005080F0) -------------------------------------------------------- void __thiscall sub_5080F0(int this) { nullsub_2((void *)(this + 4)); } //----- (00508100) -------------------------------------------------------- void __thiscall sub_508100(void *this, int a2, int a3) { void *v3; // edi@1 v3 = this; if ( *(_BYTE *)(a2 + 260) != 1 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 4))(a3) == 1 ) { *(_BYTE *)(a2 + 260) = 1; *((_DWORD *)v3 + 1) = *(_DWORD *)(a3 + 4); } } } //----- (00508140) -------------------------------------------------------- bool __thiscall sub_508140(int this, int a2, unsigned int a3, unsigned int a4) { int v4; // eax@1 bool result; // al@2 float v6; // ST04_4@3 float v7; // ST00_4@3 v4 = sub_62A340(*(_DWORD *)(this + 20) + 36, a2); if ( v4 ) { v6 = (double)a4; v7 = (double)a3; result = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v4)(v4, LODWORD(v7), LODWORD(v6)) == 0; } else { result = 0; } return result; } //----- (005081C0) -------------------------------------------------------- void *__thiscall sub_5081C0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6CD434; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6CD434: using guessed type int (__thiscall *off_6CD434)(void *, char); //----- (00508200) -------------------------------------------------------- int __thiscall sub_508200(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; } //----- (00508280) -------------------------------------------------------- void __thiscall sub_508280(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6CD458; _LN21((void *)(this + 24), 0x220u, 20, (void (__thiscall *)(void *))sub_5080F0); *(_DWORD *)v1 = &off_6CD434; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6CD434: using guessed type int (__thiscall *off_6CD434)(void *, char); // 6CD458: using guessed type int (__thiscall *off_6CD458)(void *, char); //----- (00508300) -------------------------------------------------------- int __thiscall sub_508300(void *this, int a2, int a3, const void *a4, int a5) { void *v5; // esi@1 int v6; // eax@1 int v7; // ebx@2 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_Alloc"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_Alloc"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_WORD *)v5 + 6); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v5 + 8))(v5, v6); if ( v7 ) { *(_DWORD *)v7 = a3; memcpy((void *)(v7 + 4), a4, 0x100u); *(_BYTE *)(v7 + 260) = 0; *(_DWORD *)(v7 + 264) = a5; *(_DWORD *)(v7 + 268) = *(_DWORD *)a2; *(_DWORD *)(v7 + 272) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v7 + 276) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v7 + 280) = *(_DWORD *)(a2 + 12); } else { sub_639100(&unk_86DDD8, (int)"ScriptInterrupt::ScriptInterruptManager::sim_Alloc : Too many ScriptInterrupt", 0); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_Alloc"); return v7; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508420) -------------------------------------------------------- char __thiscall sub_508420(void *this, int a2, void *a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 char result; // al@4 void *v10; // [sp+14h] [bp-10h]@1 v8 = this; v10 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 44))(v8, a2); if ( *(_BYTE *)(a2 + 260) ) { *(_BYTE *)(a2 + 260) = 0; memcpy(a3, (const void *)(a2 + 4), 0x100u); (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v10 + 48))(a4); --*(_DWORD *)(a2 + 264); if ( *(_DWORD *)(a2 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a6 + 12))(a7); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508540) -------------------------------------------------------- char __stdcall sub_508540(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { *(_BYTE *)(a1 + 260) = 0; memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508640) -------------------------------------------------------- char __stdcall sub_508640(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 284); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508760) -------------------------------------------------------- char __stdcall sub_508760(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { int v7; // eax@3 __int16 v8; // ST08_2@4 int v9; // esi@4 int v10; // ecx@7 int v12; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_BYTE *)(a1 + 260) || (v7 = *(_DWORD *)(a1 + 320), v7 <= 0) ) { --dword_750CB8; v12 = (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"; LABEL_13: sub_467660((int)&unk_D020420, v12); return 0; } v8 = *(_WORD *)(a1 + 316); *(_DWORD *)(a1 + 320) = v7 - 1; v9 = sub_54DE90(&unk_13253630, v8); if ( !v9 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1156))(v9) == 3 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1156))(v9) || (v10 = *(_DWORD *)(v9 + 122)) == 0 || !sub_427B70(v10, a1 + 284, **(_DWORD **)(v9 + 102), *(_DWORD *)(*(_DWORD *)(v9 + 102) + 4)) ) { --dword_750CB8; v12 = (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"; goto LABEL_13; } memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005088E0) -------------------------------------------------------- char __stdcall sub_5088E0(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { int v7; // eax@3 __int16 v8; // ST08_2@4 int v9; // esi@4 int v10; // ecx@7 int v12; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_BYTE *)(a1 + 260) || (v7 = *(_DWORD *)(a1 + 320), v7 <= 0) ) { --dword_750CB8; v12 = (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_BlastCheck"; LABEL_13: sub_467660((int)&unk_D020420, v12); return 0; } v8 = *(_WORD *)(a1 + 316); *(_DWORD *)(a1 + 320) = v7 - 1; v9 = sub_54DE90(&unk_13253630, v8); if ( !v9 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1156))(v9) == 3 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1156))(v9) || (v10 = *(_DWORD *)(v9 + 122)) == 0 || !sub_508140(v10, a1 + 284, **(_DWORD **)(v9 + 102), *(_DWORD *)(*(_DWORD *)(v9 + 102) + 4)) ) { --dword_750CB8; v12 = (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_BlastCheck"; goto LABEL_13; } memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_BlastCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508A60) -------------------------------------------------------- char __stdcall sub_508A60(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 316); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508B80) -------------------------------------------------------- char __stdcall sub_508B80(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 284); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508CA0) -------------------------------------------------------- char __stdcall sub_508CA0(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 284); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508DC0) -------------------------------------------------------- char __stdcall sub_508DC0(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 316); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00508EE0) -------------------------------------------------------- char __stdcall sub_508EE0(int a1, void *a2, int a3, int a4, int a5, int a6, void *a7) { char result; // al@4 char v8; // bl@5 int (__stdcall **v9)(int, int, int); // [sp+10h] [bp-28h]@1 __int16 v10; // [sp+14h] [bp-24h]@1 int v11; // [sp+18h] [bp-20h]@1 int v12; // [sp+1Ch] [bp-1Ch]@1 int v13; // [sp+20h] [bp-18h]@1 bool (__thiscall *v14)(void *, int, int); // [sp+24h] [bp-14h]@1 int v15; // [sp+28h] [bp-10h]@1 int v16; // [sp+34h] [bp-4h]@1 v15 = (int)"ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_427BE0(&v9); v9 = &off_6C6274; v10 = -1; v11 = 0; v12 = 0; v13 = 1; v14 = sub_427C90; LOBYTE(v16) = 1; sub_549B60(a7, (int)&v9, 1); if ( v12 ) { v8 = *(_BYTE *)(a1 + 260); LOBYTE(v16) = 0; v9 = &off_6C6274; sub_427EB0(&v9); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); result = v8; } else { *(_BYTE *)(a1 + 260) = 1; memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; LOBYTE(v16) = 0; v9 = &off_6C6274; sub_427EB0(&v9); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); result = 1; } return result; } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509050) -------------------------------------------------------- char __stdcall sub_509050(int a1, void *a2, int a3, int a4, int a5, int a6, void *a7) { char result; // al@4 char v8; // bl@5 int (__stdcall **v9)(int, int, int); // [sp+10h] [bp-28h]@1 __int16 v10; // [sp+14h] [bp-24h]@1 int v11; // [sp+18h] [bp-20h]@1 int v12; // [sp+1Ch] [bp-1Ch]@1 int v13; // [sp+20h] [bp-18h]@1 bool (__thiscall *v14)(void *, int, int); // [sp+24h] [bp-14h]@1 int v15; // [sp+28h] [bp-10h]@1 int v16; // [sp+34h] [bp-4h]@1 v15 = (int)"ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; sub_427BE0(&v9); v9 = &off_6C6274; v10 = -1; v11 = 0; v12 = 0; v13 = 1; v14 = sub_427D10; LOBYTE(v16) = 1; sub_549B60(a7, (int)&v9, 1); if ( v12 ) { v8 = *(_BYTE *)(a1 + 260); LOBYTE(v16) = 0; v9 = &off_6C6274; sub_427EB0(&v9); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); result = v8; } else { *(_BYTE *)(a1 + 260) = 1; memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; LOBYTE(v16) = 0; v9 = &off_6C6274; sub_427EB0(&v9); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); result = 1; } return result; } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005091C0) -------------------------------------------------------- char __stdcall sub_5091C0(int a1, void *a2, int a3, int a4, int a5, int a6, void *a7) { int v7; // esi@1 char v9; // bl@9 int (__stdcall **v10)(int, int, int); // [sp+10h] [bp-28h]@1 __int16 v11; // [sp+14h] [bp-24h]@1 int v12; // [sp+18h] [bp-20h]@1 int v13; // [sp+1Ch] [bp-1Ch]@1 int v14; // [sp+20h] [bp-18h]@1 bool (__thiscall *v15)(void *, int, int); // [sp+24h] [bp-14h]@1 int v16; // [sp+28h] [bp-10h]@1 int v17; // [sp+34h] [bp-4h]@1 v16 = (int)"ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)(a1 + 284); v17 = 0; sub_427BE0(&v10); v12 = v7; v10 = &off_6C6274; v11 = -1; v13 = 0; v14 = 1; v15 = sub_427D90; LOBYTE(v17) = 1; sub_549B60(a7, (int)&v10, 1); if ( v13 ) { *(_DWORD *)(a1 + 292) = 0; LABEL_9: v9 = *(_BYTE *)(a1 + 260); LOBYTE(v17) = 0; v10 = &off_6C6274; sub_427EB0(&v10); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); return v9; } if ( !*(_DWORD *)(a1 + 292) ) *(_DWORD *)(a1 + 292) = dword_14D129E8; if ( *(_DWORD *)(a1 + 292) + *(_DWORD *)(a1 + 288) > (unsigned int)dword_14D129E8 ) goto LABEL_9; *(_DWORD *)(a1 + 292) = 0; *(_BYTE *)(a1 + 260) = 1; memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; LOBYTE(v17) = 0; v10 = &off_6C6274; sub_427EB0(&v10); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); return 1; } // 6C6274: using guessed type int (__stdcall *off_6C6274)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00509380) -------------------------------------------------------- char __stdcall sub_509380(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { unsigned int v7; // ecx@1 char result; // al@2 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)(a1 + 288); if ( v7 <= dword_14D129E8 ) { *(_DWORD *)(a1 + 288) = v7 + *(_DWORD *)(a1 + 284); memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00509490) -------------------------------------------------------- char __stdcall sub_509490(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { int v7; // edi@1 int v8; // eax@1 int v9; // esi@1 signed __int64 v11; // qax@4 int v12; // ecx@4 int v13; // eax@5 unsigned __int64 v14; // [sp-10h] [bp-38h]@6 unsigned __int64 v15; // [sp-8h] [bp-30h]@6 signed __int64 v16; // [sp+10h] [bp-18h]@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPLow::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptHPLow::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; v8 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 284)); v9 = v8; if ( !v8 ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPLow::sib_BlastCheck"); return 1; } v11 = 1000i64 * (unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1256))(v8); v12 = v11; v16 = v11; if ( *(_DWORD *)(a1 + 292) ) { v15 = *(_DWORD *)(a1 + 292); HIDWORD(v14) = HIDWORD(v11); } else { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1264))(v9); *(_DWORD *)(a1 + 292) = v13; if ( !v13 ) goto LABEL_9; v12 = v16; v15 = (unsigned int)v13; HIDWORD(v14) = HIDWORD(v16); } LODWORD(v14) = v12; v7 = v14 / v15; LABEL_9: if ( v7 <= *(_DWORD *)(a1 + 288) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); goto LABEL_3; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPLow::sib_BlastCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509630) -------------------------------------------------------- char __stdcall sub_509630(int a1, void *a2, int a3, void *a4, int a5, int a6, int a7) { char result; // al@2 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( sub_506760(a4) <= 0 ) { --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); memcpy(a2, (const void *)(a1 + 4), 0x100u); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509730) -------------------------------------------------------- char __stdcall sub_509730(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { signed int v7; // edx@1 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"; v7 = 1; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); v7 = 1; } *(_BYTE *)(a1 + 260) = 0; dword_750CB8 -= v7; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509840) -------------------------------------------------------- char __stdcall sub_509840(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 286); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509960) -------------------------------------------------------- char __stdcall sub_509960(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 284); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509A80) -------------------------------------------------------- char __stdcall sub_509A80(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { bool v7; // zf@1 int v8; // ST00_4@2 void *v9; // eax@2 char result; // al@2 char v11; // [sp+18h] [bp-110h]@2 unsigned int v12; // [sp+118h] [bp-10h]@1 int v13; // [sp+124h] [bp-4h]@1 int v14; // [sp+128h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_BYTE *)(a1 + 260) == 0; v13 = 0; if ( v7 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"); result = 0; } else { sub_4D57B0(&v11, (const char *)(a1 + 284)); memcpy(a2, &v11, 0x100u); nullsub_2(&v11); v8 = *(_WORD *)(a1 + 540); v9 = sub_4D5720(a3); sub_4D67A0(v9, v8); (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00509BD0) -------------------------------------------------------- char __stdcall sub_509BD0(int a1, void *a2, int a3, int a4, int a5, int a6, int a7) { int v7; // edi@1 int v8; // eax@1 int v9; // esi@1 signed __int64 v11; // qax@4 int v12; // ecx@4 int v13; // eax@5 unsigned __int64 v14; // [sp-10h] [bp-38h]@6 unsigned __int64 v15; // [sp-8h] [bp-30h]@6 signed __int64 v16; // [sp+10h] [bp-18h]@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPUpper::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptHPUpper::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; v8 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 284)); v9 = v8; if ( !v8 ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPUpper::sib_BlastCheck"); return 1; } v11 = 1000i64 * (unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1256))(v8); v12 = v11; v16 = v11; if ( *(_DWORD *)(a1 + 292) ) { v15 = *(_DWORD *)(a1 + 292); HIDWORD(v14) = HIDWORD(v11); } else { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1264))(v9); *(_DWORD *)(a1 + 292) = v13; if ( !v13 ) goto LABEL_9; v12 = v16; v15 = (unsigned int)v13; HIDWORD(v14) = HIDWORD(v16); } LODWORD(v14) = v12; v7 = v14 / v15; LABEL_9: if ( v7 >= *(_DWORD *)(a1 + 288) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(int))(*(_DWORD *)a5 + 12))(a6); goto LABEL_3; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPUpper::sib_BlastCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509D70) -------------------------------------------------------- int __stdcall sub_509D70(int a1, int a2) { __int16 v2; // ax@1 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a2 + 32); if ( *(_WORD *)(a1 + 284) == v2 ) { *(_WORD *)(a1 + 284) = v2; *(_BYTE *)(a1 + 260) = 1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509DF0) -------------------------------------------------------- int __stdcall sub_509DF0(int a1, const char *a2) { char v3[4]; // [sp+8h] [bp-24h]@1 int v4; // [sp+Ch] [bp-20h]@1 int v5; // [sp+10h] [bp-1Ch]@1 int v6; // [sp+14h] [bp-18h]@1 int v7; // [sp+18h] [bp-14h]@1 int v8; // [sp+1Ch] [bp-10h]@1 int v9; // [sp+20h] [bp-Ch]@1 int v10; // [sp+24h] [bp-8h]@1 unsigned int v11; // [sp+28h] [bp-4h]@1 int v12; // [sp+2Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v4 = 0; *(_DWORD *)v3 = 0; strncpy(v3, a2, 0x20u); if ( *(_DWORD *)(a1 + 284) == *(_DWORD *)v3 && *(_DWORD *)(a1 + 288) == v4 && *(_DWORD *)(a1 + 292) == v5 && *(_DWORD *)(a1 + 296) == v6 && *(_DWORD *)(a1 + 300) == v7 && *(_DWORD *)(a1 + 304) == v8 && *(_DWORD *)(a1 + 308) == v9 && *(_DWORD *)(a1 + 312) == v10 ) { *(_WORD *)(a1 + 316) = *((_WORD *)a2 + 16); *(_BYTE *)(a1 + 260) = 1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00509F00) -------------------------------------------------------- int __stdcall sub_509F00(int a1, int a2) { __int16 v2; // dx@1 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a2 + 32); *(_BYTE *)(a1 + 260) = 1; *(_WORD *)(a1 + 284) = v2; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00509F70) -------------------------------------------------------- int __stdcall sub_509F70(int a1, int a2) { char v3; // [sp+14h] [bp-110h]@1 unsigned int v4; // [sp+114h] [bp-10h]@1 int v5; // [sp+120h] [bp-4h]@1 int v6; // [sp+124h] [bp+0h]@1 v4 = (unsigned int)&v6 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; sub_4D57B0(&v3, (const char *)a2); memcpy((void *)(a1 + 284), &v3, 0x100u); nullsub_2(&v3); *(_WORD *)(a1 + 540) = *(_WORD *)(a2 + 256); *(_BYTE *)(a1 + 260) = 1; --dword_750CB8; v5 = -1; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0050A070) -------------------------------------------------------- int __stdcall sub_50A070(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 284) == *(_WORD *)a2 ) { *(_WORD *)(a1 + 286) = *(_WORD *)(a2 + 2); *(_BYTE *)(a1 + 260) = 1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A0F0) -------------------------------------------------------- int __stdcall sub_50A0F0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 284) == *(_WORD *)a2 ) *(_BYTE *)(a1 + 260) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A170) -------------------------------------------------------- int __stdcall sub_50A170(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 284) == *(_WORD *)a2 ) *(_BYTE *)(a1 + 260) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A1F0) -------------------------------------------------------- int __stdcall sub_50A1F0(int a1, int a2) { int v2; // eax@2 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 316) == -1 || (LOBYTE(v2) = sub_427A70(a1 + 284, a2 + 2), v2) ) { *(_WORD *)(a1 + 316) = *(_WORD *)a2; *(_BYTE *)(a1 + 260) = 1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A280) -------------------------------------------------------- int __stdcall sub_50A280(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 284) == *(_WORD *)(a2 + 34) ) *(_BYTE *)(a1 + 260) = 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A300) -------------------------------------------------------- int __stdcall sub_50A300(int a1, __int16 *a2) { __int16 v2; // dx@1 char v4; // [sp+Ch] [bp-14h]@1 __int16 v5; // [sp+10h] [bp-10h]@1 int v6; // [sp+1Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"; dword_750AB8[dword_750CB8++] = -1; v6 = 0; sub_5CF620(&v5); v2 = *a2; LOBYTE(v6) = 1; v5 = v2; if ( sub_6303C0(&v5, (int)&v4) == 2 ) { *(_WORD *)(a1 + 284) = *a2; *(_BYTE *)(a1 + 260) = 1; } LOBYTE(v6) = 0; nullsub_2(&v5); --dword_750CB8; v6 = -1; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A3E0) -------------------------------------------------------- int __stdcall sub_50A3E0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a1 + 284) == *(_DWORD *)a2 && *(_DWORD *)(a1 + 288) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(a1 + 292) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(a1 + 296) == *(_DWORD *)(a2 + 12) && *(_DWORD *)(a1 + 300) == *(_DWORD *)(a2 + 16) && *(_DWORD *)(a1 + 304) == *(_DWORD *)(a2 + 20) && *(_DWORD *)(a1 + 308) == *(_DWORD *)(a2 + 24) && *(_DWORD *)(a1 + 312) == *(_DWORD *)(a2 + 28) ) { *(_BYTE *)(a1 + 260) = 1; *(_WORD *)(a1 + 316) = *(_WORD *)(a2 + 32); *(_DWORD *)(a1 + 320) = 100; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A4C0) -------------------------------------------------------- int __stdcall sub_50A4C0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a1 + 284) == *(_DWORD *)a2 && *(_DWORD *)(a1 + 288) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(a1 + 292) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(a1 + 296) == *(_DWORD *)(a2 + 12) && *(_DWORD *)(a1 + 300) == *(_DWORD *)(a2 + 16) && *(_DWORD *)(a1 + 304) == *(_DWORD *)(a2 + 20) && *(_DWORD *)(a1 + 308) == *(_DWORD *)(a2 + 24) && *(_DWORD *)(a1 + 312) == *(_DWORD *)(a2 + 28) ) { *(_BYTE *)(a1 + 260) = 1; *(_WORD *)(a1 + 316) = *(_WORD *)(a2 + 32); *(_DWORD *)(a1 + 320) = 100; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A5A0) -------------------------------------------------------- char __stdcall sub_50A5A0(int a1, void *a2, void *a3, int a4, int a5, int a6, int a7) { int v7; // ST00_4@2 void *v8; // eax@2 char result; // al@4 sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 260) ) { memcpy(a2, (const void *)(a1 + 4), 0x100u); v7 = *(_WORD *)(a1 + 286); v8 = sub_4D5720(a3); sub_4D67A0(v8, v7); --*(_DWORD *)(a1 + 264); if ( *(_DWORD *)(a1 + 264) <= 0 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a5 + 12))(a6); *(_BYTE *)(a1 + 260) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A6C0) -------------------------------------------------------- int __stdcall sub_50A6C0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 284) == *(_WORD *)a2 ) { *(_BYTE *)(a1 + 260) = 1; *(_WORD *)(a1 + 286) = *(_WORD *)(a2 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050A740) -------------------------------------------------------- char __thiscall sub_50A740(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_508200(v2, a2); result = 1; } else { result = 0; } return result; } //----- (0050A780) -------------------------------------------------------- char __thiscall sub_50A780(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_508200(v2, a2); result = 1; } else { result = 0; } return result; } //----- (0050A7C0) -------------------------------------------------------- char __thiscall sub_50A7C0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_508200(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (0050A810) -------------------------------------------------------- char __thiscall sub_50A810(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_508200(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (0050A860) -------------------------------------------------------- void *__thiscall sub_50A860(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6CD458; _LN21((char *)this + 24, 0x220u, 20, (void (__thiscall *)(void *))sub_5080F0); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6CD434; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6CD434: using guessed type int (__thiscall *off_6CD434)(void *, char); // 6CD458: using guessed type int (__thiscall *off_6CD458)(void *, char); //----- (0050A8F0) -------------------------------------------------------- char __thiscall sub_50A8F0(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 unsigned __int16 v7; // bx@1 unsigned __int16 v8; // di@2 int v9; // edx@3 int v10; // eax@3 unsigned __int16 v11; // cx@3 int v12; // ecx@5 int v13; // ecx@7 int v14; // eax@8 bool v15; // zf@8 int v16; // edx@8 int v17; // eax@9 int v19; // [sp+10h] [bp-1Ch]@3 v6 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_WORD *)(*((_DWORD *)v6 + 2) + 12 * *((_WORD *)v6 + 7) + 4); while ( 1 ) { v8 = *((_WORD *)v6 + 2); if ( v7 >= v8 ) break; v9 = *((_DWORD *)v6 + 2); v10 = v7; v11 = v7; v7 = *(_WORD *)(v9 + 12 * v7 + 4); LOWORD(v19) = v11; HIWORD(v19) = v7; if ( v11 < v8 && *(_BYTE *)(v9 + 12 * v10 + 8) ) v12 = *(_DWORD *)(v9 + 12 * v10); else v12 = 0; v13 = *(_DWORD *)v12; if ( (unsigned __int16)v19 >= v8 || (v14 = 3 * v10, v15 = *(_BYTE *)(v9 + 4 * v14 + 8) == 0, v16 = v9 + 4 * v14, v15) ) v17 = 0; else v17 = *(_DWORD *)v16; if ( (unsigned __int8)(**(int (__stdcall ***)(int, int, int, int, void *, int, int))v13)( v17, a2, a3, a4, v6, v19, a5) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"); return 1; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050AA50) -------------------------------------------------------- int __thiscall sub_50AA50(void *this, int a2) { void *v2; // edi@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // dx@2 int v5; // ecx@3 int v6; // eax@3 bool v7; // zf@4 int v8; // ecx@4 int v9; // eax@5 int v11; // [sp+10h] [bp-1Ch]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; LOWORD(v11) = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); HIWORD(v11) = v3; if ( (unsigned __int16)v11 >= v4 || (v7 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v8 = v5 + 12 * v6, v7) ) v9 = 0; else v9 = *(_DWORD *)v8; if ( *(_DWORD *)(v9 + 268) == *(_DWORD *)a2 && *(_DWORD *)(v9 + 272) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(v9 + 276) == *(_DWORD *)(a2 + 8) ) { if ( *(_DWORD *)(v9 + 280) == *(_DWORD *)(a2 + 12) ) (*(void (__thiscall **)(void *, int))(*(_DWORD *)v2 + 12))(v2, v11); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050AB70) -------------------------------------------------------- int __thiscall sub_50AB70(void *this, const char *a2) { void *v2; // edi@1 int v3; // ecx@1 int v4; // eax@1 unsigned int v5; // esi@1 int v6; // ebx@3 const char *v7; // eax@3 int result; // eax@5 v2 = this; v3 = *(_DWORD *)this; v4 = (*((_DWORD *)v2 + 1) - v3) >> 2; v5 = 0; if ( v4 ) { if ( (unsigned int)v4 <= 0 ) sub_6517D8((int)"invalid vector subscript"); while ( 1 ) { v6 = *(_DWORD *)(v3 + 4 * v5); v7 = (const char *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 52))(*(_DWORD *)(v3 + 4 * v5)); if ( !_stricmp(v7, a2) ) break; v3 = *(_DWORD *)v2; ++v5; if ( (*((_DWORD *)v2 + 1) - *(_DWORD *)v2) >> 2 <= v5 ) goto LABEL_5; } result = v6; } else { LABEL_5: result = 0; } return result; } //----- (0050ABE0) -------------------------------------------------------- int __thiscall sub_50ABE0(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_NPCClick"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_NPCClick"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 12))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_NPCClick"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050ACF0) -------------------------------------------------------- int __thiscall sub_50ACF0(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 28))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050AE00) -------------------------------------------------------- int __thiscall sub_50AE00(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v9 + 36))(v9, v12, *(_DWORD *)a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050AF20) -------------------------------------------------------- int __thiscall sub_50AF20(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_TargetChange"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_TargetChange"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 20))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_TargetChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050B030) -------------------------------------------------------- int __thiscall sub_50B030(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 32))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050B140) -------------------------------------------------------- int __thiscall sub_50B140(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 16))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050B250) -------------------------------------------------------- int __thiscall sub_50B250(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 4))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050B360) -------------------------------------------------------- int __thiscall sub_50B360(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 8))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050B470) -------------------------------------------------------- int __thiscall sub_50B470(void *this, int a2) { void *v2; // ebx@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // cx@2 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 int v8; // ebx@5 int v9; // ebx@7 bool v10; // zf@8 int v11; // edx@8 int v12; // edx@9 void *v14; // [sp+14h] [bp-10h]@1 v2 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem"); dword_7508B8[dword_750CB8] = (int)"ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 2) + 12 * *((_WORD *)v2 + 7) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 2); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 2); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 < v4 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v8 = *(_DWORD *)(v5 + 12 * v6); else v8 = 0; v9 = *(_DWORD *)v8; if ( v7 >= v4 || (v10 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v11 = v5 + 12 * v6, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 24))(v9, v12, a2); v2 = v14; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050B580) -------------------------------------------------------- int __thiscall sub_50B580(void *this, int a2, int a3, int a4) { void *v4; // edi@1 signed int v5; // edx@1 int v6; // eax@5 int v7; // edx@6 int v8; // ecx@6 int v9; // edx@6 int v10; // ecx@6 int v11; // edx@6 int v12; // ecx@6 int v13; // edx@6 int v15; // [sp+14h] [bp-114h]@6 int v16; // [sp+18h] [bp-110h]@6 int v17; // [sp+1Ch] [bp-10Ch]@6 int v18; // [sp+20h] [bp-108h]@6 int v19; // [sp+24h] [bp-104h]@6 int v20; // [sp+28h] [bp-100h]@6 int v21; // [sp+2Ch] [bp-FCh]@6 int v22; // [sp+30h] [bp-F8h]@6 __int16 v23; // [sp+34h] [bp-F4h]@6 unsigned int v24; // [sp+118h] [bp-10h]@1 int v25; // [sp+124h] [bp-4h]@1 int v26; // [sp+128h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v25 = 0; if ( !(dword_13231238 & 1) ) { dword_13231238 |= 1u; word_13231234 = 70; atexit(nullsub_77); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13231234 && (v6 = *(_DWORD *)((char *)v4 + 122)) != 0 ) { v7 = *(_DWORD *)(a2 + 2); v16 = *(_DWORD *)(a2 + 6); v8 = *(_DWORD *)(a2 + 14); v15 = v7; v9 = *(_DWORD *)(a2 + 10); v18 = v8; v10 = *(_DWORD *)(a2 + 22); v17 = v9; v11 = *(_DWORD *)(a2 + 18); v20 = v10; v12 = *(_DWORD *)(a2 + 30); v19 = v11; v13 = *(_DWORD *)(a2 + 26); v22 = v12; v21 = v13; v23 = *((_WORD *)v4 + 2); sub_5070A0(*(void **)(v6 + 68), (int)sub_50B250, (int)&v15); --dword_750CB8; } else { dword_750CB8 -= v5; } v25 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13231234: using guessed type __int16 word_13231234; // 13231238: using guessed type int dword_13231238; //----- (0050B6F0) -------------------------------------------------------- int __thiscall sub_50B6F0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 signed int v5; // eax@1 int v6; // ebx@5 int v7; // ecx@6 int v8; // edx@6 int v9; // eax@6 int v10; // ecx@6 int v11; // edx@6 int v12; // ecx@6 int v14; // [sp-8h] [bp-12Ch]@4 int v15; // [sp+10h] [bp-114h]@6 int v16; // [sp+14h] [bp-110h]@6 int v17; // [sp+18h] [bp-10Ch]@6 int v18; // [sp+1Ch] [bp-108h]@6 int v19; // [sp+20h] [bp-104h]@6 int v20; // [sp+24h] [bp-100h]@6 int v21; // [sp+28h] [bp-FCh]@6 int v22; // [sp+2Ch] [bp-F8h]@6 __int16 v23; // [sp+30h] [bp-F4h]@6 unsigned int v24; // [sp+114h] [bp-10h]@1 int v25; // [sp+120h] [bp-4h]@1 int v26; // [sp+124h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v25 = 0; if ( !(dword_13231240 & 1) ) { dword_13231240 |= 1u; word_1323123C = 70; atexit(nullsub_78); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1323123C ) { v6 = *(_DWORD *)((char *)v4 + 122); if ( v6 ) { memset(&v15, 0, 0x104u); v7 = *(_DWORD *)(a2 + 6); v8 = *(_DWORD *)(a2 + 10); v15 = *(_DWORD *)(a2 + 2); v18 = *(_DWORD *)(a2 + 14); v9 = *(_DWORD *)(a2 + 26); v16 = v7; v10 = *(_DWORD *)(a2 + 18); v17 = v8; v11 = *(_DWORD *)(a2 + 22); v21 = v9; v19 = v10; v12 = *(_DWORD *)(a2 + 30); v20 = v11; LOWORD(v11) = *((_WORD *)v4 + 2); v22 = v12; v23 = v11; sub_5070A0(*(void **)(v6 + 68), (int)sub_50B360, (int)&v15); } --dword_750CB8; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } else { dword_750CB8 -= v5; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } v25 = -1; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1323123C: using guessed type __int16 word_1323123C; // 13231240: using guessed type int dword_13231240; //----- (0050B880) -------------------------------------------------------- int __cdecl sub_50B880() { return (int)"WinGuild"; } //----- (0050B890) -------------------------------------------------------- char *__thiscall sub_50B890(int this, void *a2) { int v2; // ST00_4@1 void *v3; // eax@1 v2 = *(_DWORD *)(this + 4); v3 = sub_4D5720(a2); return sub_4D67A0(v3, v2); } //----- (0050B8B0) -------------------------------------------------------- void *__thiscall sub_50B8B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6CD098; if ( a2 & 1 ) operator delete(this); return v2; } // 6CD098: using guessed type int (*off_6CD098)(); //----- (0050B8E0) -------------------------------------------------------- char __thiscall sub_50B8E0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6CADC0; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6CADC0: using guessed type int (__stdcall *off_6CADC0)(int, int); //----- (0050BA60) -------------------------------------------------------- int __thiscall sub_50BA60(int this) { int v1; // esi@1 signed int v2; // eax@1 signed int v3; // edx@1 int v4; // edi@1 int v5; // ecx@3 bool v6; // zf@3 int v7; // ecx@3 int v8; // ecx@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@15 int v14; // ecx@15 signed int v16; // [sp+10h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6CD434; *(_DWORD *)(this + 16) = 0; sub_50B8E0(this, 0x14u); *(_DWORD *)v1 = &off_6CD458; _eh_vector_constructor_iterator_( (void *)(v1 + 24), 0x220u, 20, (int)sub_5080C0, (void (__thiscall *)(void *))sub_5080F0); v2 = 36; v3 = 2; v4 = v1 + 568; v16 = 4; do { if ( v3 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v2 - 36) == 0; v7 = v5 + v2 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 544; } if ( v3 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v2 - 24) == 0; v9 = v8 + v2 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v3 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v2 - 12) == 0; v11 = v10 + v2 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 544; } if ( v3 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v2) ) *(_DWORD *)(v12 + v2) = v4 + 1088; } if ( v3 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v2 + 12) == 0; v14 = v13 + v2 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 1632; } v2 += 60; v3 += 5; v4 += 2720; --v16; } while ( v16 ); return v1; } // 6CD434: using guessed type int (__thiscall *off_6CD434)(void *, char); // 6CD458: using guessed type int (__thiscall *off_6CD458)(void *, char); //----- (0050BBA0) -------------------------------------------------------- char __thiscall sub_50BBA0(void *this, int a2, const void *a3, int a4) { bool v4; // zf@1 _BYTE *v5; // esi@1 void *v6; // ebx@1 int v7; // eax@3 char result; // al@4 dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v4 = (dword_13231260 & 1) == 0; v5 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v5 = *(_DWORD *)a2; v6 = this; *((_DWORD *)v5 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(a2 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(a2 + 12); v5[16] = 0; if ( v4 ) { dword_13231260 |= 1u; dword_13231250 = 0; dword_13231254 = 0; dword_13231258 = 0; atexit(sub_69AC70); } v7 = sub_50AB70(&dword_13231250, v5); if ( v7 ) { sub_508300(v6, a2, v7, a3, a4); result = 1; } else { result = 0; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13231254: using guessed type int dword_13231254; // 13231258: using guessed type int dword_13231258; // 13231260: using guessed type int dword_13231260; //----- (0050BC40) -------------------------------------------------------- int __thiscall sub_50BC40(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // eax@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v4 + 1970); if ( v5 < 0x10 ) { *((_DWORD *)v4 + 3 * v5 + 1922) = a2; *((_DWORD *)v4 + 3 * *((_DWORD *)v4 + 1970) + 1923) = a3; *((_DWORD *)v4 + 3 * (*((_DWORD *)v4 + 1970))++ + 1924) = a4; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050BD10) -------------------------------------------------------- int __thiscall sub_50BD10(void *this) { int v1; // esi@1 bool v2; // zf@1 int v3; // edx@3 int v4; // edi@4 int v5; // eax@4 int v6; // ecx@4 int v7; // edi@5 int v8; // eax@5 int v9; // ecx@5 int v10; // ST04_4@6 int v11; // eax@6 signed int v12; // ecx@6 int v13; // eax@7 int v15; // [sp-4h] [bp-34h]@9 char v16; // [sp+Ch] [bp-24h]@4 int v17; // [sp+18h] [bp-18h]@3 int v18; // [sp+1Ch] [bp-14h]@3 int v19; // [sp+20h] [bp-10h]@1 int v20; // [sp+2Ch] [bp-4h]@1 v1 = (int)this; v19 = (int)"ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_MoveByScenario"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 7880) == 0; v20 = 0; if ( v2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1552))(v1) ) { --dword_750CB8; v20 = -1; v15 = (int)"ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } else { v2 = *(_DWORD *)(v1 + 7696) == 1; v3 = *(_DWORD *)(v1 + 7692); v17 = *(_DWORD *)(v1 + 7688); v18 = v3; if ( v2 ) { v4 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); (*(void (__thiscall **)(int, int *, int, signed int, _DWORD))(*(_DWORD *)v1 + 1632))(v1, &v17, v4, 1, 0); v5 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8216; *(_WORD *)v5 = *(_WORD *)(v1 + 4); v6 = *(_DWORD *)(v1 + 102); *(_DWORD *)(v5 + 2) = *(_DWORD *)v6; *(_DWORD *)(v5 + 6) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v5 + 10) = v17; *(_DWORD *)(v5 + 14) = v18; *(_WORD *)(v5 + 20) &= 0xFFFEu; *(_WORD *)(v5 + 18) = v4; sub_434610(v1, 24, v5); sub_4287B0(&v16, &off_849C18, 24); LOBYTE(v20) = 1; } else { v7 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1304))(v1); (*(void (__thiscall **)(int, int *, int, signed int, _DWORD))(*(_DWORD *)v1 + 1632))(v1, &v17, v7, 2, 0); v8 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 8218; *(_WORD *)v8 = *(_WORD *)(v1 + 4); v9 = *(_DWORD *)(v1 + 102); *(_DWORD *)(v8 + 2) = *(_DWORD *)v9; *(_DWORD *)(v8 + 6) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 10) = v17; *(_DWORD *)(v8 + 14) = v18; *(_WORD *)(v8 + 20) &= 0xFFFEu; *(_WORD *)(v8 + 18) = v7; sub_434610(v1, 26, v8); sub_4287B0(&v16, &off_849C18, 24); LOBYTE(v20) = 2; } v10 = *(_DWORD *)(v1 + 102); v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v11, v10, 0, 0, (int)&v16, 0, 65535); LOBYTE(v20) = 0; sub_428A70(&v16); v12 = 1; if ( *(_DWORD *)(v1 + 7880) > 1 ) { v13 = v1 + 7688; do { *(_DWORD *)v13 = *(_DWORD *)(v13 + 12); *(_DWORD *)(v13 + 4) = *(_DWORD *)(v13 + 16); *(_DWORD *)(v13 + 8) = *(_DWORD *)(v13 + 20); ++v12; v13 += 12; } while ( v12 < *(_DWORD *)(v1 + 7880) ); } --*(_DWORD *)(v1 + 7880); --dword_750CB8; v20 = -1; v15 = (int)"ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050BF60) -------------------------------------------------------- int __thiscall sub_50BF60(void *this, unsigned __int16 a2) { void *v2; // ebx@1 int v3; // ST0C_4@1 char *v4; // eax@1 void *v5; // edi@5 char v7; // [sp+14h] [bp-80h]@1 unsigned __int16 v8; // [sp+1Ch] [bp-78h]@1 unsigned int v9; // [sp+84h] [bp-10h]@1 int v10; // [sp+90h] [bp-4h]@1 int v11; // [sp+94h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_scene_CreateItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_scene_CreateItem"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v3 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v4 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v7, a2, 2, *((_DWORD *)v4 + 4), v3); v8 = a2; if ( sub_418CB0((int)&dword_14D20890, a2) != 0 ) { if ( *(_DWORD *)sub_418CB0((int)&dword_14D20890, a2) ) { v5 = sub_63ACA0(dword_1508B168, a2); (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD))(*(_DWORD *)v5 + 20))(v5, a2, &v7, "-o"); (*(void (__thiscall **)(void *, unsigned __int16 *, signed int))(*(_DWORD *)v5 + 32))(v5, &v8, 1); sub_526E50(v2, *((_WORD *)v2 + 2), (int)&v7); v10 = -1; goto LABEL_6; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_scene_CreateItem : Invalid item", a2); } v10 = -1; LABEL_6: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_scene_CreateItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (0050C0B0) -------------------------------------------------------- int __thiscall sub_50C0B0(void *this, __int16 a2, int a3) { unsigned int v3; // ST10_4@1 void *v4; // ebx@1 int (__thiscall *v5)(_DWORD, _DWORD); // edx@1 int v6; // esi@1 int v7; // eax@1 int v8; // edx@1 int v9; // ecx@1 int v10; // eax@2 int (__thiscall *v11)(_DWORD); // eax@4 int v12; // eax@6 int v13; // eax@6 void *v14; // eax@6 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@6 int v16; // edx@6 int v17; // ST00_4@6 void (__stdcall *v18)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@6 void *v19; // esi@6 int v20; // esi@6 int v21; // edi@6 int v22; // eax@6 int v23; // eax@8 int v25; // [sp-4h] [bp-C8h]@5 int *v26; // [sp+10h] [bp-B4h]@4 int v27; // [sp+14h] [bp-B0h]@4 int v28; // [sp+18h] [bp-ACh]@4 int (**v29)(); // [sp+1Ch] [bp-A8h]@1 int v30; // [sp+20h] [bp-A4h]@1 int v31; // [sp+28h] [bp-9Ch]@4 __int16 v32; // [sp+2Ch] [bp-98h]@4 int v33; // [sp+30h] [bp-94h]@6 int v34; // [sp+34h] [bp-90h]@1 int v35; // [sp+38h] [bp-8Ch]@6 int v36; // [sp+3Ch] [bp-88h]@6 __int16 v37; // [sp+40h] [bp-84h]@6 int v38; // [sp+44h] [bp-80h]@6 int v39; // [sp+48h] [bp-7Ch]@6 int v40; // [sp+4Ch] [bp-78h]@6 __int16 v41; // [sp+B0h] [bp-14h]@6 char v42; // [sp+B2h] [bp-12h]@6 unsigned int v43; // [sp+B4h] [bp-10h]@1 int v44; // [sp+C0h] [bp-4h]@1 int v45; // [sp+C4h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; v3 = (unsigned int)&v45 ^ __security_cookie; v4 = this; v34 = a3; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1176); v44 = 0; v6 = v5(v4, v3); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1148))(v4); v29 = &off_6A86A4; v30 = v7 + 3668; v8 = *(_DWORD *)(v7 + 3668); v9 = v7 + 3668; if ( v6 ) v10 = (*(int (__thiscall **)(int, int))(v8 + 4))(v9, v6); else v10 = (*(int (__thiscall **)(int))(v8 + 8))(v9); v31 = v10; v29 = (int (**)())&off_6A86BC; v32 = a2; v11 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v44) = 1; v26 = (int *)&v29; v27 = v11(v4); v28 = 9; if ( sub_486D40(&v26) ) { v12 = *(_DWORD *)v26[1]; v36 = v26[2]; v13 = (*(int (__stdcall **)(int))v12)(v36); memcpy(&v38, (const void *)v13, 0x6Cu); v41 = *(_WORD *)(v13 + 108); v33 = v13; v42 = *(_BYTE *)(v13 + 110); v14 = sub_63ACA0(dword_1508B168, v40); v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v14 + 20); v35 = (int)v14; v15(v14, v40, &v38, v34); v16 = *((_DWORD *)v4 + 14672); v37 = v36 & 0x3FF | 0x2400; v17 = *((_WORD *)v4 + 29346); v18 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v16 + 64); v36 = (int)((char *)v4 + 58688); v18(v17, v33, &v38, &v37, &v37); v19 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v19 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v19 + 4) = *((_WORD *)v4 + 29346); *(_DWORD *)((char *)v19 + 10) = v38; *(_DWORD *)((char *)v19 + 14) = v39; *((_WORD *)v19 + 9) = v40; memcpy((char *)v19 + 20, (char *)&v40 + 2, 0x64u); *((_BYTE *)v19 + 120) = v42; v20 = v35; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v35 + 12))(v35, (char *)&v40 + 2); v21 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v20 + 12))(v20, (char *)&v40 + 2) + 20; v22 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v20 + 12))(v20, (char *)&v40 + 2); if ( sub_4C81E0(&off_849C18, v22 + 20) ) { v23 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v23); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_scene_KQStepSet : Packet Too Long", v21); } ++*(_WORD *)(v36 + 4); --dword_750CB8; v25 = (int)"ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } else { --dword_750CB8; v25 = (int)"ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } v44 = -1; v29 = &off_6A86A4; return sub_467660((int)&unk_D020420, v25); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0050C390) -------------------------------------------------------- int __thiscall sub_50C390(void *this, __int16 a2, int a3) { void *v3; // esi@1 __int16 v4; // bx@1 int v5; // eax@1 int v7; // [sp+Ch] [bp-14h]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_scene_EraseItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_scene_EraseItem"; dword_750AB8[dword_750CB8++] = -1; sub_526320(v3, *((_WORD *)v3 + 2), a2, a3, 0); v4 = *((_WORD *)v3 + 2); v5 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1148))(v3, 8); sub_526230(v3, v4, a2, v5, v7); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_scene_EraseItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050C460) -------------------------------------------------------- int __thiscall sub_50C460(void *this, __int16 a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_scene_EraseItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_scene_EraseItem"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1352))(v3) + 8) == a2 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1356))(v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_scene_EraseItem"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050C520) -------------------------------------------------------- int __thiscall sub_50C520(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_DetectRange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_scene_DetectRange"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)(*((_DWORD *)v2 + 2211) + 16) = a2; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_DetectRange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050C590) -------------------------------------------------------- int __thiscall sub_50C590(void *this, int a2) { void *v2; // esi@1 signed int v3; // edi@1 int (__thiscall *v4)(_DWORD); // eax@1 unsigned __int8 v5; // al@1 int v6; // ebx@1 int v7; // eax@6 int v8; // edi@6 int v9; // ST38_4@6 int v10; // ST34_4@6 int v11; // eax@6 unsigned __int16 v12; // ax@6 int v14; // [sp+14h] [bp-20h]@3 int v15; // [sp+20h] [bp-14h]@1 int v16; // [sp+24h] [bp-10h]@5 int v17; // [sp+30h] [bp-4h]@1 unsigned __int8 v18; // [sp+3Fh] [bp+Bh]@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_Duplicate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_scene_Duplicate"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232); v17 = 0; v5 = v4(v2); v6 = sub_54DF90(&unk_13253630, (int)&v15, v5); if ( v6 != 0 ) { v14 = *(_DWORD *)((char *)v2 + 122); if ( v14 && a2 ) { v16 = a2; do { v7 = *(_DWORD *)((char *)v2 + 102); v8 = *(_DWORD *)v6; v18 = **(_BYTE **)((char *)v2 + 106); v9 = *(_DWORD *)(v7 + 4); v10 = *(_DWORD *)v7; v11 = (*(int (__thiscall **)(void *, signed int, _DWORD, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1744))( v2, -1, 0, 0, -1, 1, 0, 0); v12 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 1800))(v2, v11); (*(void (__thiscall **)(int, int, int, int, _DWORD, int, _DWORD))(v8 + 1760))(v6, v14, v10, v9, v18, v15, v12); --v16; } while ( v16 ); v3 = -1; } } else { sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineMobRegen::sa_Step : Too many mob", 0); } --dword_750CB8; v17 = v3; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_Duplicate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050C6E0) -------------------------------------------------------- char __thiscall sub_50C6E0(void *this) { void *v1; // esi@1 char result; // al@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_IsIdle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_scene_IsIdle"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 1911) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_IsIdle"); result = 0; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_scene_IsIdle"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050C790) -------------------------------------------------------- int __thiscall sub_50C790(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // ecx@2 const void *v5; // eax@2 const void *v6; // ecx@3 void *v7; // edi@3 void *v9; // ebx@5 int v10; // edx@5 const void *v11; // ebx@8 size_t v12; // edi@8 const void *v13; // eax@12 size_t v14; // edi@12 int v15; // [sp+10h] [bp+8h]@2 v2 = a2; v3 = (int)this; if ( this != (void *)a2 ) { v4 = *(_DWORD *)(a2 + 4); v5 = *(const void **)a2; v15 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) >> 1; if ( v15 ) { v9 = *(void **)v3; v10 = (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 1; if ( v15 <= (unsigned int)v10 ) { memmove_0(v9, v5, 2 * ((v4 - (signed int)v5) >> 1)); *(_DWORD *)(v3 + 4) = *(_DWORD *)v3 + 2 * ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 1); return v3; } if ( v15 <= (unsigned int)((*(_DWORD *)(v3 + 8) - (signed int)v9) >> 1) ) { v11 = (char *)v5 + 2 * v10; memmove_0(*(void **)v3, v5, 2 * (2 * v10 >> 1)); v12 = 2 * ((*(_DWORD *)(v2 + 4) - (signed int)v11) >> 1); *(_DWORD *)(v3 + 4) = (char *)memmove_0(*(void **)(v3 + 4), v11, v12) + v12; return v3; } if ( v9 ) operator delete(v9); if ( sub_4A10E0(v3, (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 1) ) { v13 = *(const void **)v2; v14 = 2 * ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 1); *(_DWORD *)(v3 + 4) = (char *)memmove_0(*(void **)v3, v13, v14) + v14; } } else { v6 = *(const void **)(v3 + 4); v7 = *(void **)v3; if ( *(const void **)v3 != v6 ) { memmove_0(v7, v6, 0); *(_DWORD *)(v3 + 4) = v7; return v3; } } } return v3; } //----- (0050C8B0) -------------------------------------------------------- int __thiscall sub_50C8B0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"; dword_750AB8[dword_750CB8++] = -1; sub_50C790((char *)v2 + 9504, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050C960) -------------------------------------------------------- char __thiscall sub_50C960(void *this, int a2) { if ( (_WORD)a2 == -1 ) return 0; if ( !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 12))(a2) ) { sub_639100(&unk_86DDD8, (int)"CSellItemManager::simg_Insert : Free fail", (unsigned __int16)a2); return 0; } return 1; } //----- (0050C9A0) -------------------------------------------------------- char __thiscall sub_50C9A0(void *this, unsigned __int8 a2, int a3) { int v3; // esi@1 void *v4; // edi@1 char result; // al@2 int v6; // ebx@4 int v7; // eax@6 v3 = a3; v4 = this; if ( a2 <= 0x2Au ) { if ( (signed int)a2 > 0 ) { v6 = a2; do { if ( v3 ) { v7 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 8))(v4, *(_WORD *)(v3 + 1)); if ( v7 ) { *(_WORD *)v7 = *(_WORD *)(v3 + 1); sub_63D1E0(v7 + 10, (int)dword_1508B168, 65535, v3 + 11); v3 += *(_BYTE *)v3 + 1; } else { sub_639100(&unk_86DDD8, (int)"CSellItemManager::simg_Initialize : AllocZ fail", *(_WORD *)(v3 + 1)); } } --v6; } while ( v6 ); } result = 1; } else { sub_639100(&unk_86DDD8, (int)"CSellItemManager::simg_Initialize : Size over", a2); result = 0; } return result; } //----- (0050CA30) -------------------------------------------------------- char __thiscall sub_50CA30(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x7Au); result = 1; } else { result = 0; } return result; } //----- (0050CA70) -------------------------------------------------------- char __thiscall sub_50CA70(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x7Au); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (0050CAD0) -------------------------------------------------------- char __thiscall sub_50CAD0(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x7Au); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (0050CB30) -------------------------------------------------------- void *__thiscall sub_50CB30(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6CE34C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6CE34C: using guessed type int (__thiscall *off_6CE34C)(void *, char); //----- (0050CB70) -------------------------------------------------------- void __thiscall sub_50CB70(int this) { void *v1; // ecx@1 *(_DWORD *)this = &off_6CE34C; v1 = *(void **)(this + 8); if ( v1 ) sub_6530A4(v1); } // 6CE34C: using guessed type int (__thiscall *off_6CE34C)(void *, char); //----- (0050CB90) -------------------------------------------------------- signed __int16 __thiscall sub_50CB90(void *this, int a2, int a3, int a4, int a5) { void *v5; // edi@1 signed __int16 result; // ax@1 int v7; // eax@2 signed __int16 v8; // bx@3 int v9; // eax@3 int v10; // edi@7 __int16 v11; // [sp+8h] [bp-80h]@4 unsigned int v12; // [sp+84h] [bp-4h]@1 int v13; // [sp+88h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v5 = this; result = -1; if ( a4 ) { *(_WORD *)a5 = -1; v7 = *((_WORD *)this + 6); if ( (_WORD)v7 != -1 && (v8 = *((_WORD *)this + 6), (v9 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)this + 8))(this, v7)) != 0) || ((*(void (__thiscall **)(void *, __int16 *))(*(_DWORD *)v5 + 24))(v5, &v11), *(_WORD *)a5 = v11, *((_WORD *)v5 + 6) != -1) && (v8 = *((_WORD *)v5 + 6), (v9 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v5 + 8))(v5, *((_WORD *)v5 + 6))) != 0) ) { *(_WORD *)v9 = v8; *(_DWORD *)(v9 + 2) = a2; *(_DWORD *)(v9 + 6) = a3; memcpy((void *)(v9 + 10), (const void *)a4, 0x6Cu); v10 = v9 + 118; *(_WORD *)(v9 + 118) = *(_WORD *)(a4 + 108); result = v8; *(_BYTE *)(v10 + 2) = *(_BYTE *)(a4 + 110); } else { sub_639100(&unk_86DDD8, (int)"CSellItemManager::simg_Insert : Allocation fail", 0); result = -1; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0050CC70) -------------------------------------------------------- int __thiscall sub_50CC70(int this, unsigned __int16 a2) { int v2; // eax@3 char v3; // cl@3 int result; // eax@3 if ( a2 == -1 || a2 >= *(_WORD *)(this + 4) || (v2 = *(_DWORD *)(this + 8) + 12 * a2, v3 = *(_BYTE *)(v2 + 8), result = *(_DWORD *)v2, !v3) ) result = 0; return result; } //----- (0050CCB0) -------------------------------------------------------- char __thiscall sub_50CCB0(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x7Au); result = 1; } else { result = 0; } return result; } //----- (0050CD00) -------------------------------------------------------- int __thiscall sub_50CD00(int this, int a2, int a3) { int v4; // edi@3 int v5; // esi@5 int v6; // edx@5 unsigned __int16 v7; // ax@5 int v8; // ebx@5 unsigned __int16 v9; // cx@6 unsigned __int16 v10; // ST1A_2@8 int v11; // eax@8 bool v12; // sf@8 unsigned __int8 v13; // of@8 int v14; // esi@13 int v15; // ecx@13 int v16; // eax@15 int v17; // eax@22 int v18; // eax@25 int v19; // ebx@26 int v20; // ecx@27 unsigned __int16 v21; // cx@29 int v22; // eax@30 bool v23; // zf@30 int v24; // eax@30 int v25; // edx@31 __int16 v26; // dx@34 int v27; // eax@35 int v28; // eax@35 int v29; // ecx@36 unsigned __int8 v30; // al@38 unsigned __int16 v31; // [sp+0h] [bp-14h]@13 unsigned __int16 v32; // [sp+2h] [bp-12h]@13 unsigned __int16 v33; // [sp+Ch] [bp-8h]@12 int v34; // [sp+Ch] [bp-8h]@24 int v35; // [sp+10h] [bp-4h]@1 v35 = this; if ( !a2 ) return 0; v4 = a3; if ( !a3 ) return 0; v5 = *(_DWORD *)(this + 8); v6 = 0; v7 = *(_WORD *)(v5 + 12 * *(_WORD *)(this + 14) + 4); v8 = 0; if ( !*(_BYTE *)a2 ) goto LABEL_12; v9 = *(_WORD *)(this + 4); do { if ( v7 >= v9 ) return 0; v10 = *(_WORD *)(v5 + 12 * v7 + 4); v11 = *(_BYTE *)a2; ++v6; v13 = __OFSUB__(v6, v11); v12 = v6 - v11 < 0; v7 = v10; } while ( v12 ^ v13 ); LABEL_12: while ( 1 ) { v33 = *(_WORD *)(v35 + 4); if ( v7 >= v33 ) return v8; v14 = v7; v15 = *(_DWORD *)(v35 + 8); v31 = v7; v32 = *(_WORD *)(v15 + 12 * v7 + 4); if ( v7 < v33 && *(_BYTE *)(v15 + 12 * v7 + 8) ) v16 = *(_DWORD *)(v15 + 12 * v7); else v16 = 0; if ( *(_WORD *)v16 == -1 ) { sub_639100(&unk_86DDD8, (int)"CSellItemManager::simg_FillBuffer_Server : Invalid handle", 0); goto LABEL_11; } if ( v4 ) { v17 = v31 < v33 && *(_BYTE *)(v15 + 12 * v14 + 8) ? *(_DWORD *)(v15 + 12 * v14) : 0; v34 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(v17 + 18)); if ( v34 ) { v18 = v35; if ( v31 < *(_WORD *)(v35 + 4) && (v19 = *(_DWORD *)(v35 + 8), *(_BYTE *)(v19 + 12 * v14 + 8)) ) v20 = *(_DWORD *)(v19 + 12 * v14); else v20 = 0; *(_WORD *)(v4 + 1) = *(_WORD *)v20; v21 = *(_WORD *)(v35 + 4); if ( v31 < v21 ) { v22 = *(_DWORD *)(v35 + 8); v23 = *(_BYTE *)(v22 + 12 * v14 + 8) == 0; v24 = v22 + 12 * v14; if ( !v23 ) { v25 = *(_DWORD *)v24; v18 = v35; LABEL_34: v26 = *(_WORD *)(v25 + 18); if ( v31 >= v21 || (v27 = *(_DWORD *)(v18 + 8), v23 = *(_BYTE *)(v27 + 12 * v14 + 8) == 0, v28 = v27 + 12 * v14, v23) ) v29 = 0; else v29 = *(_DWORD *)v28; v30 = 10 - (v4 + 11) + sub_63D1A0(v29 + 10, v34, v26, v4 + 11); *(_BYTE *)v4 = v30; ++*(_BYTE *)a2; v4 += v30 + 1; v8 = v4 - a3; if ( v4 - a3 >= 8000 ) return v8; goto LABEL_11; } v18 = v35; } v25 = 0; goto LABEL_34; } } LABEL_11: v7 = v32; } } //----- (0050CEE0) -------------------------------------------------------- int __thiscall sub_50CEE0(int this, int a2, int a3) { int v4; // edi@3 int v5; // esi@5 int v6; // edx@5 unsigned __int16 v7; // ax@5 int v8; // ebx@5 unsigned __int16 v9; // cx@6 unsigned __int16 v10; // ST1A_2@8 int v11; // eax@8 bool v12; // sf@8 unsigned __int8 v13; // of@8 int v14; // esi@13 int v15; // ecx@13 int v16; // eax@15 int v17; // eax@22 int v18; // eax@25 int v19; // ebx@26 int v20; // ecx@27 unsigned __int16 v21; // cx@29 int v22; // eax@30 bool v23; // zf@30 int v24; // eax@30 int v25; // edx@31 __int16 v26; // dx@34 int v27; // eax@35 int v28; // eax@35 int v29; // ecx@36 unsigned __int8 v30; // al@38 unsigned __int16 v31; // [sp+0h] [bp-14h]@13 unsigned __int16 v32; // [sp+2h] [bp-12h]@13 unsigned __int16 v33; // [sp+Ch] [bp-8h]@12 int v34; // [sp+Ch] [bp-8h]@24 int v35; // [sp+10h] [bp-4h]@1 v35 = this; if ( !a2 ) return 0; v4 = a3; if ( !a3 ) return 0; v5 = *(_DWORD *)(this + 8); v6 = 0; v7 = *(_WORD *)(v5 + 12 * *(_WORD *)(this + 14) + 4); v8 = 0; if ( !*(_BYTE *)a2 ) goto LABEL_12; v9 = *(_WORD *)(this + 4); do { if ( v7 >= v9 ) return 0; v10 = *(_WORD *)(v5 + 12 * v7 + 4); v11 = *(_BYTE *)a2; ++v6; v13 = __OFSUB__(v6, v11); v12 = v6 - v11 < 0; v7 = v10; } while ( v12 ^ v13 ); LABEL_12: while ( 1 ) { v33 = *(_WORD *)(v35 + 4); if ( v7 >= v33 ) return v8; v14 = v7; v15 = *(_DWORD *)(v35 + 8); v31 = v7; v32 = *(_WORD *)(v15 + 12 * v7 + 4); if ( v7 < v33 && *(_BYTE *)(v15 + 12 * v7 + 8) ) v16 = *(_DWORD *)(v15 + 12 * v7); else v16 = 0; if ( *(_WORD *)v16 == -1 ) { sub_639100(&unk_86DDD8, (int)"CSellItemManager::simg_FillBuffer_Client : Invalid handle", 0); goto LABEL_11; } if ( v4 ) { v17 = v31 < v33 && *(_BYTE *)(v15 + 12 * v14 + 8) ? *(_DWORD *)(v15 + 12 * v14) : 0; v34 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(v17 + 18)); if ( v34 ) { v18 = v35; if ( v31 < *(_WORD *)(v35 + 4) && (v19 = *(_DWORD *)(v35 + 8), *(_BYTE *)(v19 + 12 * v14 + 8)) ) v20 = *(_DWORD *)(v19 + 12 * v14); else v20 = 0; *(_WORD *)(v4 + 1) = *(_WORD *)v20; v21 = *(_WORD *)(v35 + 4); if ( v31 < v21 ) { v22 = *(_DWORD *)(v35 + 8); v23 = *(_BYTE *)(v22 + 12 * v14 + 8) == 0; v24 = v22 + 12 * v14; if ( !v23 ) { v25 = *(_DWORD *)v24; v18 = v35; LABEL_34: v26 = *(_WORD *)(v25 + 18); if ( v31 >= v21 || (v27 = *(_DWORD *)(v18 + 8), v23 = *(_BYTE *)(v27 + 12 * v14 + 8) == 0, v28 = v27 + 12 * v14, v23) ) v29 = 0; else v29 = *(_DWORD *)v28; v30 = 2 - (v4 + 3) + sub_63D090((void *)(v29 + 10), v34, v26, v4 + 3); *(_BYTE *)v4 = v30; ++*(_BYTE *)a2; v4 += v30 + 1; v8 = v4 - a3; if ( v4 - a3 >= 8000 ) return v8; goto LABEL_11; } v18 = v35; } v25 = 0; goto LABEL_34; } } LABEL_11: v7 = v32; } } //----- (0050D0C0) -------------------------------------------------------- char __thiscall sub_50D0C0(int this) { int v1; // eax@1 signed int v2; // edx@1 int v3; // eax@3 int v4; // esi@3 int v5; // eax@3 int (__stdcall **v7)(int, int); // [sp+10h] [bp-14h]@3 int v8; // [sp+14h] [bp-10h]@3 int v9; // [sp+20h] [bp-4h]@3 v1 = 0; v2 = 0; if ( *(_WORD *)(this + 4) > 0u ) { do { *(_WORD *)(*(_DWORD *)(this + 8) + v1 + 6) = v2 - 1; *(_WORD *)(*(_DWORD *)(this + 8) + v1 + 4) = v2 + 1; *(_BYTE *)(*(_DWORD *)(this + 8) + v1 + 8) = 0; ++v2; v1 += 12; } while ( v2 < *(_WORD *)(this + 4) ); } *(_WORD *)(*(_DWORD *)(this + 8) + 6) = *(_WORD *)(this + 4) - 1; *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4) - 8) = 0; v3 = *(_WORD *)(this + 4); v4 = *(_DWORD *)(this + 8); *(_WORD *)(this + 12) = 0; *(_WORD *)(this + 14) = v3; *(_WORD *)(v4 + 12 * v3 + 6) = v3; v5 = *(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4); *(_WORD *)(v5 + 4) = *(_WORD *)(v5 + 6); *(_DWORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4)) = 0; *(_BYTE *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 4) + 8) = 1; *(_WORD *)(this + 20) = 0; v7 = &off_6CE3A8; v8 = this; v9 = 0; return sub_43C470(this, (int)&v7); } // 6CE3A8: using guessed type int (__stdcall *off_6CE3A8)(int, int); //----- (0050D1C0) -------------------------------------------------------- char __thiscall sub_50D1C0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6CE3A8; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6CE3A8: using guessed type int (__stdcall *off_6CE3A8)(int, int); //----- (0050D340) -------------------------------------------------------- char __thiscall sub_50D340(void *this) { int v1; // ebx@1 void *v2; // esi@1 signed int v3; // edi@1 v1 = (int)this; v2 = (char *)this + 42; v3 = 42; do { *((_WORD *)v2 - 9) = -1; *((_DWORD *)v2 - 2) = -1; *((_DWORD *)v2 - 1) = -1; memset(v2, 0, 0x67u); *(_WORD *)v2 = -1; v2 = (char *)v2 + 122; --v3; } while ( v3 ); return sub_50D0C0(v1); } //----- (0050D390) -------------------------------------------------------- int __thiscall sub_50D390(int this) { int v1; // edi@1 void *v2; // esi@1 int v3; // eax@3 signed int v5; // [sp+Ch] [bp-8h]@1 signed int v6; // [sp+10h] [bp-4h]@1 v1 = this; *(_DWORD *)this = &off_6CE34C; *(_DWORD *)(this + 16) = 0; sub_50D1C0(this, 0x2Au); v6 = 0; v5 = 0; *(_DWORD *)v1 = &off_6CE428; v2 = (void *)(v1 + 42); do { *((_WORD *)v2 - 9) = -1; *((_DWORD *)v2 - 2) = -1; *((_DWORD *)v2 - 1) = -1; memset(v2, 0, 0x67u); *(_WORD *)v2 = -1; if ( v6 < *(_WORD *)(v1 + 4) ) { v3 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v3 + v5) ) *(_DWORD *)(v3 + v5) = (char *)v2 - 18; } ++v6; v2 = (char *)v2 + 122; v5 += 12; } while ( v5 < 504 ); return v1; } // 6CE34C: using guessed type int (__thiscall *off_6CE34C)(void *, char); // 6CE428: using guessed type int (__thiscall *off_6CE428)(void *, char); //----- (0050D430) -------------------------------------------------------- char __thiscall sub_50D430(int this, int a2) { int v2; // eax@1 char result; // al@3 v2 = *(_DWORD *)(this + 84504); if ( v2 && *(_DWORD *)(v2 + 4) ) result = (*(int (__stdcall **)(int))(**(_DWORD **)(v2 + 4) + 52))(a2); else result = 0; return result; } //----- (0050D460) -------------------------------------------------------- int __thiscall sub_50D460(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 1096) = 0; *(_DWORD *)(this + 1088) = 0; *(_DWORD *)(this + 1204) = nullsub_5; return result; } // 547FC0: using guessed type int __stdcall nullsub_5(int, int); //----- (0050D480) -------------------------------------------------------- bool __thiscall sub_50D480(int this) { return *(_DWORD *)(this + 1088) == 0; } //----- (0050D490) -------------------------------------------------------- char __thiscall sub_50D490(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 1092) = a2; return result; } //----- (0050D4A0) -------------------------------------------------------- int __thiscall sub_50D4A0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 1096) = a2; return result; } //----- (0050D4B0) -------------------------------------------------------- int __stdcall sub_50D4B0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Cancel"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_Cancel"; dword_750AB8[dword_750CB8++] = -1; sub_4C1BA0((void *)a1, 1); *(_BYTE *)(a1 + 23825) &= 0xFBu; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Cancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050D560) -------------------------------------------------------- int __stdcall sub_50D560(int a1, int a2) { int v2; // ebx@1 int v3; // edi@4 signed int v4; // eax@5 int v5; // eax@7 __int16 v6; // cx@10 int v7; // eax@12 __int16 v8; // dx@13 unsigned __int8 v9; // cl@14 int v10; // eax@16 unsigned __int8 v11; // al@20 int v12; // edi@23 int v13; // ebx@24 int v15; // [sp-8h] [bp-88h]@2 int v16; // [sp+10h] [bp-70h]@20 int v17; // [sp+14h] [bp-6Ch]@4 __int16 v18; // [sp+1Ch] [bp-64h]@7 __int16 v19; // [sp+1Eh] [bp-62h]@7 int v20; // [sp+20h] [bp-60h]@7 int v21; // [sp+24h] [bp-5Ch]@19 int v22; // [sp+28h] [bp-58h]@19 int v23; // [sp+2Ch] [bp-54h]@19 int v24; // [sp+30h] [bp-50h]@19 int v25; // [sp+34h] [bp-4Ch]@19 int v26; // [sp+39h] [bp-47h]@19 int v27; // [sp+3Dh] [bp-43h]@19 int v28; // [sp+41h] [bp-3Fh]@19 int v29; // [sp+45h] [bp-3Bh]@19 int v30; // [sp+49h] [bp-37h]@19 int v31; // [sp+4Dh] [bp-33h]@19 int v32; // [sp+51h] [bp-2Fh]@19 int v33; // [sp+55h] [bp-2Bh]@19 int v34; // [sp+59h] [bp-27h]@19 int v35; // [sp+5Dh] [bp-23h]@19 char v36[4]; // [sp+64h] [bp-1Ch]@12 int v37; // [sp+68h] [bp-18h]@12 int v38; // [sp+6Ch] [bp-14h]@12 unsigned int v39; // [sp+70h] [bp-10h]@1 int v40; // [sp+7Ch] [bp-4h]@1 int v41; // [sp+80h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v2 = a2; sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Link"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_Link"; dword_750AB8[dword_750CB8++] = -1; v40 = 0; if ( a1 && a2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3188))(a1); v17 = v3; if ( *(_BYTE *)(a2 + 97) == 1 ) v4 = sub_4617E0(v3, a1, a2, *(_WORD *)(a2 + 98), *(_WORD *)(a2 + 100)); else v4 = sub_461940(a2, a1, a2); v20 = v4; v19 = (unsigned __int8)byte_DA2294C; v18 = 1; v5 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(a2 + 20), 0); if ( v5 ) { v18 = *(_WORD *)(v5 + 34); v19 = *(_WORD *)(v5 + 36); } if ( *(_BYTE *)(a2 + 97) == 1 ) { v6 = *(_WORD *)(a2 + 100); v18 = *(_WORD *)(a2 + 98); v19 = v6; } if ( sub_461D00(v3, a1, v20, (int)&v18) ) { v38 = 0; v37 = 0; *(_DWORD *)v36 = 0; strncpy(v36, (const char *)(a2 + 53), 0xCu); v7 = sub_483840((int)&unk_CFCF380, (int)v36, 1); if ( v7 && (v8 = *(_WORD *)(v7 + 109), v8 != -1) && (v9 = *(_BYTE *)(v7 + 105)) != 0 ) { sub_526320((void *)a1, *(_WORD *)(a1 + 4), v8, v9, a2); } else { v10 = *(_DWORD *)(a1 + 84504); if ( v10 && *(_DWORD *)(v10 + 4) && (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v10 + 4) + 52))(a2) ) { v21 = -1; v22 = -1; v23 = -1; v24 = 0; v25 = -1; v26 = -1; v27 = -1; v28 = -1; v29 = -1; v30 = -1; v31 = -1; v32 = -1; v33 = -1; v34 = -1; v35 = -1; if ( v3 ) { (*(void (__thiscall **)(int, int *))(*(_DWORD *)v3 + 3204))(v3, &v21); (*(void (__thiscall **)(int, int *))(*(_DWORD *)a1 + 3208))(a1, &v21); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3288))(v3); v20 = 0; v16 = v11; if ( (signed int)v11 > 0 ) { while ( 1 ) { v12 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 3292))(v3, v20); if ( v12 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 836))(v12); if ( v13 == (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1) ) { v2 = a2; } else { (*(void (__thiscall **)(int, int *))(*(_DWORD *)v12 + 3208))(v12, &v21); v2 = a2; (*(void (__thiscall **)(int, int, signed int, signed int, signed int))(*(_DWORD *)v12 + 1536))( v12, a2, 6, 9, 10); } } ++v20; if ( v20 >= v16 ) break; v3 = v17; } } } (*(void (__thiscall **)(int, int, signed int, signed int, signed int))(*(_DWORD *)a1 + 1536))( a1, v2, 6, 9, 10); } } } --dword_750CB8; v40 = -1; v15 = (int)"ServerMenuFuncter::smfm_Link"; } else { --dword_750CB8; v40 = -1; v15 = (int)"ServerMenuFuncter::smfm_Link"; } return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (0050D860) -------------------------------------------------------- int __stdcall sub_50D860(int a1, int a2) { unsigned int v2; // ST0C_4@1 int v3; // esi@1 int v4; // edx@1 int v5; // eax@1 int v6; // ecx@1 int v7; // edx@1 int v8; // eax@1 int v9; // eax@1 char v11[4]; // [sp+14h] [bp-24h]@1 int v12; // [sp+18h] [bp-20h]@1 int v13; // [sp+1Ch] [bp-1Ch]@1 int v14; // [sp+20h] [bp-18h]@1 int v15; // [sp+24h] [bp-14h]@1 unsigned int v16; // [sp+28h] [bp-10h]@1 int v17; // [sp+34h] [bp-4h]@1 int v18; // [sp+38h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v2 = (unsigned int)&v18 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_LinkToDungeon"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_LinkToDungeon"; dword_750AB8[dword_750CB8++] = -1; v3 = (int)off_849C18; v17 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; *(_WORD *)off_849C18 = -23548; strncpy(v11, (const char *)(a2 + 4), 0x14u); v4 = v12; v5 = v13; *(_DWORD *)(v3 + 17) = *(_DWORD *)v11; v6 = v14; *(_DWORD *)(v3 + 21) = v4; v7 = v15; *(_DWORD *)(v3 + 29) = v6; *(_DWORD *)(v3 + 25) = v5; *(_DWORD *)(v3 + 33) = v7; *(_BYTE *)(a2 + 24) = 0; *(_BYTE *)(v3 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_DWORD *)(v3 + 5) = (*(int (__stdcall **)(unsigned int))(*(_DWORD *)a1 + 836))(v2); *(_WORD *)(v3 + 3) = *(_WORD *)(a1 + 4); *(_DWORD *)(v3 + 13) = *(_DWORD *)a2; v8 = *(_DWORD *)(a2 + 28); *(_WORD *)(v3 + 70) = 2; *(_DWORD *)(v3 + 9) = v8; v9 = sub_4837D0((int)&unk_CFCF380, v3 + 17, 1); if ( v9 ) sub_5A6F00(a1, v3, v9); --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_LinkToDungeon"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0050D9C0) -------------------------------------------------------- int __stdcall sub_50D9C0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_LinkWithoutNPC"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_LinkWithoutNPC"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 23825) & 4 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1536))(a1, a2, 6, 9, 10); *(_BYTE *)(a1 + 23825) &= 0xFBu; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_LinkWithoutNPC"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050DA80) -------------------------------------------------------- int __stdcall sub_50DA80(int a1, __int16 *a2) { __int16 v2; // ST08_2@1 int v3; // esi@1 void (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // edx@2 char v6; // [sp+Ch] [bp-28h]@2 int v7; // [sp+24h] [bp-10h]@1 int v8; // [sp+30h] [bp-4h]@1 v7 = (int)"ServerMenuFuncter::smfm_LuaFuncExec"; sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_LuaFuncExec"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_LuaFuncExec"; dword_750AB8[dword_750CB8++] = -1; v2 = *a2; v8 = 0; v3 = sub_54DE90(&unk_13253630, v2); if ( v3 ) { sub_5D4550((int)&v6, v3, a1, (int)byte_6A492E); v4 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2916); LOBYTE(v8) = 1; v4(v3, a2 + 1, &v6); LOBYTE(v8) = 0; sub_5D4580(&v6); } --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_LuaFuncExec"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050DB60) -------------------------------------------------------- int __stdcall sub_50DB60(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_DeleteInstanceDungeon"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_DeleteInstanceDungeon"; dword_750AB8[dword_750CB8++] = -1; v2 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 9) = *(_DWORD *)a2; sub_5A6690(off_86B058, 0, v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_DeleteInstanceDungeon"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B058: using guessed type int (__stdcall *(*off_86B058[3])[3])(int, int); //----- (0050DC20) -------------------------------------------------------- int __stdcall sub_50DC20(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@1 int v4; // eax@1 void *v5; // edi@1 int v6; // eax@3 int v7; // eax@4 int v8; // eax@4 int v10; // [sp+0h] [bp-24h]@0 int v11; // [sp+4h] [bp-20h]@0 int v12; // [sp+8h] [bp-1Ch]@0 int v13; // [sp+Ch] [bp-18h]@0 __int16 v14; // [sp+14h] [bp-10h]@4 int v15; // [sp+20h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ImmediateDivorce"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ImmediateDivorce"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); v15 = 0; v4 = v3(a1); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 40))(v4, *(_WORD *)(a2 + 2)); v5 = off_849C18; *(_WORD *)off_849C18 = 4237; *((_WORD *)v5 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v5 + 2) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2392))(v2) + 37); *((_BYTE *)v5 + 12) = 2; if ( sub_4C81E0(&off_849C18, 13) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ServerMenuFuncter::smfm_ImmediateDivorce : Packet Too Long", 13); } v7 = *(_WORD *)a2 & 0x3FF; v14 = *(_WORD *)a2 & 0x3FF | 0x2400; v8 = (**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(a1 + 36484))( v7, v10, v11, v12, v13, "ServerMenuFuncter::smfm_ImmediateDivorce"); sub_526030((void *)a1, *(_WORD *)(a1 + 4), v8, (int)&v14); --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ImmediateDivorce"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0050DD90) -------------------------------------------------------- int __stdcall sub_50DD90(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ImmediateDivorceCancel"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_ImmediateDivorceCancel"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 40))(v2, *(_WORD *)(a2 + 2)); sub_50D4B0(a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_ImmediateDivorceCancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050DE50) -------------------------------------------------------- int __thiscall sub_50DE50(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ServerMenuActor::sma_Reset"); dword_7508B8[dword_750CB8] = (int)"ServerMenuActor::sma_Reset"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v1 + 28) = nullsub_5; *((_DWORD *)v1 + 55) = nullsub_5; *((_DWORD *)v1 + 82) = nullsub_5; *((_DWORD *)v1 + 109) = nullsub_5; *((_DWORD *)v1 + 136) = nullsub_5; *((_DWORD *)v1 + 163) = nullsub_5; *((_DWORD *)v1 + 190) = nullsub_5; *((_DWORD *)v1 + 217) = nullsub_5; *((_DWORD *)v1 + 244) = nullsub_5; *((_DWORD *)v1 + 271) = nullsub_5; *((_BYTE *)v1 + 1092) = 1; *((_DWORD *)v1 + 272) = 0; *((_DWORD *)v1 + 301) = nullsub_5; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuActor::sma_Reset"); } // 547FC0: using guessed type int __stdcall nullsub_5(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050DF00) -------------------------------------------------------- int __thiscall sub_50DF00(void *this, int a2, const void *a3) { void *v3; // ebx@1 int v4; // eax@1 int v6; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ServerMenuActor::sma_Regist"); dword_7508B8[dword_750CB8] = (int)"ServerMenuActor::sma_Regist"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 272); if ( v4 < 10 ) { memcpy((char *)v3 + 108 * v4 + 8, a3, 0x68u); *((_DWORD *)v3 + 27 * (*((_DWORD *)v3 + 272))++ + 28) = a2; --dword_750CB8; v6 = (int)"ServerMenuActor::sma_Regist"; } else { sub_639100(&unk_86DDD8, (int)"ServerMenuActor::sma_Regist : Too many regist", v4); --dword_750CB8; v6 = (int)"ServerMenuActor::sma_Regist"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050DFF0) -------------------------------------------------------- int __thiscall sub_50DFF0(void *this, int a2, const void *a3) { void *v3; // ebx@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ServerMenuActor::sma_SetResetFuction"); dword_7508B8[dword_750CB8] = (int)"ServerMenuActor::sma_SetResetFuction"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 ) { memcpy((char *)v3 + 1100, a3, 0x68u); *((_DWORD *)v3 + 301) = a2; --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ServerMenuActor::sma_SetResetFuction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050E0B0) -------------------------------------------------------- int __thiscall sub_50E0B0(void *this, int a2) { void *v2; // esi@1 signed int v3; // edi@1 int v4; // eax@1 int v5; // eax@3 int v6; // ecx@7 int (__thiscall *v7)(_DWORD); // edx@9 void *v8; // edi@10 int v9; // ebx@11 int v10; // eax@12 int v11; // eax@13 int v12; // eax@16 int v13; // eax@17 int v14; // edx@17 int v15; // eax@17 int v16; // eax@18 void (__thiscall *v17)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@18 int v18; // eax@19 char v19; // al@21 int v20; // edi@21 int v21; // eax@24 int v23; // [sp-4h] [bp-4Ch]@2 int (**v24)(); // [sp+10h] [bp-38h]@9 int v25; // [sp+14h] [bp-34h]@9 int v26; // [sp+1Ch] [bp-2Ch]@9 int *v27; // [sp+20h] [bp-28h]@9 int v28; // [sp+24h] [bp-24h]@9 int v29; // [sp+28h] [bp-20h]@9 int v30; // [sp+2Ch] [bp-1Ch]@1 int v31; // [sp+30h] [bp-18h]@3 int v32; // [sp+34h] [bp-14h]@17 int v33; // [sp+38h] [bp-10h]@10 int v34; // [sp+44h] [bp-4h]@1 v2 = this; v30 = (int)"ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RemoveKQItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v2 + 122); v34 = 0; if ( v4 ) { v5 = *(_DWORD *)(v4 + 12); v31 = v5; if ( v5 == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::sp_RemoveKQItem : NULLOp", v5 != 0); v23 = (int)"ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; goto LABEL_29; } if ( a2 == 8 ) { v6 = (int)((char *)v2 + 32816); } else { if ( a2 != 9 ) { LABEL_28: v23 = (int)"ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; goto LABEL_29; } v6 = (int)((char *)v2 + 36484); } v24 = &off_6A86A4; v25 = v6; v26 = (*(int (**)(void))(*(_DWORD *)v6 + 8))(); v24 = (int (**)())&off_6A86AC; v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); LOBYTE(v34) = 1; v27 = (int *)&v24; v28 = v7(v2); v29 = a2; if ( sub_486D40(&v27) ) { v8 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v8 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2) + 4); *((_BYTE *)v8 + 10) = 0; LOWORD(v33) = ((_WORD)a2 << 10) | v33 & 0x3FF; do { v9 = (**(int (__stdcall ***)(_DWORD))v27[1])(v27[2]); if ( v9 ) { v10 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)); if ( v10 ) { v11 = *(_DWORD *)(v10 + 4); if ( *(_BYTE *)(v11 + 218) ) { if ( !*(_BYTE *)(v31 + 54) || *(_BYTE *)(v11 + 220) ) { LOWORD(v33) = (v33 ^ *((_WORD *)v27 + 4)) & 0x3FF ^ v33; v12 = *((_BYTE *)v8 + 10) & 0x7F; *(_DWORD *)((char *)v8 + 8 * v12 + 25) = *(_DWORD *)v9; *(_DWORD *)((char *)v8 + 8 * v12 + 29) = *(_DWORD *)(v9 + 4); *((_BYTE *)v8 + 10) ^= (*((_BYTE *)v8 + 10) ^ (*((_BYTE *)v8 + 10) + 1)) & 0x7F; if ( a2 == 8 ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v14 = *(_DWORD *)v2; v32 = v13; v15 = (*(int (__thiscall **)(void *))(v14 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v32 + 84))( v32, *(_WORD *)(v15 + 4), v33 & 0x3FF, v9); } v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v17 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*((_DWORD *)v2 + 14672) + 48); v32 = *(_WORD *)(v16 + 4); v17((char *)v2 + 58688, v32, v9, &v33, &v33); if ( a2 == 8 ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(char *, _DWORD, int, int, signed int, _DWORD))(*((_DWORD *)v2 + 14672) + 80))( (char *)v2 + 58688, *(_WORD *)(v18 + 4), v33 & 0x3FF, v9, -1, 0); } } } } } } while ( sub_486DA0((void **)&v27) ); v19 = *((_BYTE *)v8 + 10); v20 = 8 * (*((_BYTE *)v8 + 10) & 0x7F) + 25; if ( v19 & 0x7F ) { if ( sub_4C81E0(&off_849C18, v20) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v20); } ++*((_WORD *)v2 + 29346); } v3 = -1; } v24 = &off_6A86A4; goto LABEL_28; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::sp_RemoveKQItem : NULLMAP", 0); v23 = (int)"ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; LABEL_29: --dword_750CB8; v34 = v3; return sub_467660((int)&unk_D020420, v23); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (0050E3F0) -------------------------------------------------------- int __thiscall sub_50E3F0(void *this) { void *v1; // ebx@1 int v2; // eax@1 void (__thiscall *v3)(_DWORD, _DWORD, _DWORD); // edx@3 int v4; // eax@5 unsigned int v6; // [sp-4h] [bp-8Ch]@1 char v7; // [sp+10h] [bp-78h]@3 unsigned int v8; // [sp+78h] [bp-10h]@1 int v9; // [sp+84h] [bp-4h]@1 int v10; // [sp+88h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v6 = (unsigned int)&v10 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ServerMenuActor::sma_Reset new"); dword_7508B8[dword_750CB8] = (int)"ServerMenuActor::sma_Reset new"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 274); v9 = 0; if ( v2 && *((_DWORD *)v1 + 272) ) { v3 = (void (__thiscall *)(_DWORD, _DWORD, _DWORD))*((_DWORD *)v1 + 301); memcpy(&v7, (char *)v1 + 1100, 0x68u); v3(&unk_13231270, v2, &v7); *(_WORD *)off_849C18 = 15375; if ( sub_4C81E0(&off_849C18, 2) ) { v4 = (*(int (__cdecl **)(unsigned int))(**((_DWORD **)v1 + 274) + 764))(v6); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v4 + 12))(v4, *((_DWORD *)v1 + 274), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ServerMenuActor::sma_Reset : Packet Too Long", 2); } } sub_50DE50(v1); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ServerMenuActor::sma_Reset new"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0050E530) -------------------------------------------------------- int __thiscall sub_50E530(void *this, int a2, unsigned __int8 a3) { void *v3; // ebx@1 int v4; // eax@3 void (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // ST20_4@3 int v7; // [sp-8h] [bp-9Ch]@2 char v8; // [sp+1Ch] [bp-78h]@3 unsigned int v9; // [sp+84h] [bp-10h]@1 int v10; // [sp+90h] [bp-4h]@1 int v11; // [sp+94h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ServerMenuActor::sma_Reply"); dword_7508B8[dword_750CB8] = (int)"ServerMenuActor::sma_Reply"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; if ( a3 < 0xAu ) { v4 = 108 * a3; v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))((char *)v3 + v4 + 112); memcpy(&v8, (char *)v3 + v4 + 8, 0x68u); sub_50DE50(v3); v5(&unk_13231270, a2, &v8); v7 = (int)"ServerMenuActor::sma_Reply"; } else { sub_639100(&unk_86DDD8, (int)"ServerMenuActor::sma_Reply : Too many regist", a3); *(_BYTE *)(a2 + 23825) &= 0xFBu; sub_50E3F0(v3); v7 = (int)"ServerMenuActor::sma_Reply"; } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0050E650) -------------------------------------------------------- int __thiscall sub_50E650(void *this, int a2, int a3, int a4) { int v4; // esi@1 bool v5; // cl@5 int v6; // ecx@6 int v7; // eax@6 int v8; // ecx@6 char v9; // al@7 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1323126C & 1) ) { dword_1323126C |= 1u; word_13231268 = 78; atexit(nullsub_79); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13231268 ) { v5 = 0; if ( *(_BYTE *)(v4 + 85612) == 1 ) { v6 = *(_DWORD *)(v4 + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(v4 + 84524); v5 = (unsigned int)((v7 - *(_DWORD *)(v4 + 84520)) * (v7 - *(_DWORD *)(v4 + 84520)) + v8 * v8) > 0xF4240; } v9 = *(_BYTE *)(v4 + 23825); if ( v9 & 4 || !v5 ) { sub_50E530((void *)(v4 + 84520), v4, *(_BYTE *)(a2 + 2)); } else { *(_BYTE *)(v4 + 23825) = v9 & 0xFB; sub_50E3F0((void *)(v4 + 84520)); } } else { *(_BYTE *)(v4 + 23825) &= 0xFBu; sub_50E3F0((void *)(v4 + 84520)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231268: using guessed type __int16 word_13231268; // 1323126C: using guessed type int dword_1323126C; //----- (0050E7B0) -------------------------------------------------------- bool __thiscall sub_50E7B0(int this, int a2) { ++*(_DWORD *)a2; return *(_DWORD *)a2 < *(_DWORD *)(this + 1232); } //----- (0050E7D0) -------------------------------------------------------- int __thiscall sub_50E7D0(int this, int a2) { return *(_DWORD *)(this + 1228) + 616 * *(_DWORD *)a2; } //----- (0050E7F0) -------------------------------------------------------- signed int __thiscall sub_50E7F0(void *this, signed int a2) { signed int result; // eax@2 if ( a2 >= 17 ) result = 1000; else result = *((_DWORD *)this + a2); return result; } //----- (0050E810) -------------------------------------------------------- void __thiscall sub_50E810(int this) { *(_DWORD *)this = &unk_3E80000; *(_DWORD *)(this + 4) = &unk_3E80000; *(_DWORD *)(this + 8) = &unk_3E80000; *(_DWORD *)(this + 12) = &unk_3E80000; } //----- (0050E830) -------------------------------------------------------- signed __int16 __thiscall sub_50E830(void *this, int a2) { unsigned int v2; // edx@1 signed int v3; // eax@2 v2 = 0; while ( 1 ) { v3 = *((_WORD *)this + 2 * v2); if ( (unsigned __int16)v3 >= 0x11u ) v3 = 17; if ( v3 == a2 ) break; ++v2; if ( v2 >= 4 ) return 1000; } return *((_WORD *)this + 2 * v2 + 1); } //----- (0050E870) -------------------------------------------------------- signed __int16 __thiscall sub_50E870(void *this, int a2) { unsigned int v2; // edx@1 unsigned __int16 v3; // ax@2 signed int v4; // eax@3 v2 = 0; while ( 1 ) { v3 = *((_WORD *)this + 2 * v2); if ( v3 >= 0x3E8u ) { v4 = (unsigned __int16)(v3 - 1000); if ( (unsigned __int16)v4 >= 0xFu ) v4 = 15; } else { v4 = 15; } if ( v4 == a2 ) break; ++v2; if ( v2 >= 4 ) return 1000; } return *((_WORD *)this + 2 * v2 + 1); } //----- (0050E8D0) -------------------------------------------------------- void __thiscall sub_50E8D0(void *this, signed int a2) { int v2; // ebx@2 int v3; // edx@3 unsigned __int16 v4; // ax@4 signed int v5; // esi@4 if ( a2 < 17 ) { v2 = dword_13231278[a2]; if ( v2 != 1000 ) { v3 = 0; do { v4 = *((_WORD *)this + 2 * v3); v5 = 17; if ( v4 < 0x11u ) v5 = *((_WORD *)this + 2 * v3); if ( v5 == a2 || v4 < 0x11u && !*((_WORD *)this + 2 * v3) ) break; ++v3; } while ( (unsigned int)v3 < 4 ); if ( (unsigned int)v3 < 4 ) { *((_WORD *)this + 2 * v3) = a2; *((_WORD *)this + 2 * v3 + 1) = v2; } else { sub_639100(&unk_86DDD8, (int)"SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore : Too many effect", v3); } } } } // 13231278: using guessed type int dword_13231278[]; //----- (0050E950) -------------------------------------------------------- int __thiscall sub_50E950(void *this, int a2, __int16 a3) { int result; // eax@1 unsigned __int16 v4; // dx@2 signed int v5; // edx@3 result = 0; do { v4 = *((_WORD *)this + 2 * result); if ( v4 >= 0x3E8u ) { v5 = (unsigned __int16)(v4 - 1000); if ( (unsigned __int16)v5 >= 0xFu ) v5 = 15; } else { v5 = 15; } if ( v5 == a2 ) break; if ( !*((_WORD *)this + 2 * result) ) break; ++result; } while ( (unsigned int)result < 4 ); if ( (unsigned int)result < 4 ) { *((_WORD *)this + 2 * result) = a2 + 1000; *((_WORD *)this + 2 * result + 1) = a3; } else { result = (int)sub_639100( &unk_86DDD8, (int)"SetItemData::SetItemAbstateEffect::siae_SetItemEffectAndValue : Too many effect", result); } return result; } //----- (0050E9E0) -------------------------------------------------------- int __thiscall sub_50E9E0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; return result; } //----- (0050EA10) -------------------------------------------------------- void __thiscall sub_50EA10(int this) { if ( *(_DWORD *)(this + 40) ) sub_6530A4(*(void **)(this + 40)); } //----- (0050EA20) -------------------------------------------------------- int __thiscall sub_50EA20(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 32) = -1; *(_DWORD *)(this + 36) = -1; *(_DWORD *)(this + 40) = -1; *(_DWORD *)(this + 44) = -1; *(_DWORD *)(this + 48) = -1; *(_DWORD *)(this + 52) = -1; *(_DWORD *)(this + 56) = -1; *(_DWORD *)(this + 60) = -1; *(_DWORD *)(this + 64) = -1; *(_DWORD *)(this + 68) = -1; *(_DWORD *)(this + 72) = -1; *(_DWORD *)(this + 76) = -1; return result; } //----- (0050EA70) -------------------------------------------------------- __int16 __thiscall sub_50EA70(int this) { return *(_WORD *)(this + 160886); } //----- (0050EA80) -------------------------------------------------------- signed int __thiscall sub_50EA80(int this) { signed int result; // eax@1 result = 65535; *(_WORD *)(this + 160886) = -1; return result; } //----- (0050EA90) -------------------------------------------------------- __int16 __thiscall sub_50EA90(int this, int a2) { __int16 result; // ax@1 *(_WORD *)this = *(_WORD *)(a2 + 20); *(_WORD *)(this + 2) = *(_WORD *)(a2 + 22); *(_WORD *)(this + 4) = *(_WORD *)(a2 + 24); *(_WORD *)(this + 6) = *(_WORD *)(a2 + 26); *(_WORD *)(this + 8) = *(_WORD *)(a2 + 28); *(_WORD *)(this + 10) = *(_WORD *)(a2 + 30); *(_WORD *)(this + 12) = *(_WORD *)(a2 + 32); result = *(_WORD *)(a2 + 34); *(_WORD *)(this + 14) = result; return result; } //----- (0050EAE0) -------------------------------------------------------- int __thiscall sub_50EAE0(int this, int a2) { int result; // eax@1 result = a2; *(_WORD *)(a2 + 20) = *(_WORD *)this; *(_WORD *)(a2 + 22) = *(_WORD *)(this + 2); *(_WORD *)(a2 + 24) = *(_WORD *)(this + 4); *(_WORD *)(a2 + 26) = *(_WORD *)(this + 6); *(_WORD *)(a2 + 28) = *(_WORD *)(this + 8); *(_WORD *)(a2 + 30) = *(_WORD *)(this + 10); *(_WORD *)(a2 + 32) = *(_WORD *)(this + 12); *(_WORD *)(a2 + 34) = *(_WORD *)(this + 14); return result; } //----- (0050EB30) -------------------------------------------------------- int __thiscall sub_50EB30(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &unk_3E80000; *(_DWORD *)(this + 4) = &unk_3E80000; *(_DWORD *)(this + 8) = &unk_3E80000; *(_DWORD *)(this + 12) = &unk_3E80000; return result; } //----- (0050EB50) -------------------------------------------------------- int __thiscall sub_50EB50(void *this, int a2) { void *v2; // edi@1 signed int v3; // edx@1 int v4; // esi@1 int v5; // ecx@2 signed int v6; // eax@4 int v7; // edi@4 void *v9; // [sp+18h] [bp-1Ch]@1 signed int v10; // [sp+1Ch] [bp-18h]@1 signed int v11; // [sp+20h] [bp-14h]@2 int v12; // [sp+24h] [bp-10h]@1 int v13; // [sp+3Ch] [bp+8h]@1 v2 = this; v9 = this; sub_4675D0((int)&unk_D020420, (int)"SetItemData::SetItemClassifier::sic_SetItemDefine"); dword_7508B8[dword_750CB8] = (int)"SetItemData::SetItemClassifier::sic_SetItemDefine"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; v4 = a2; *(_BYTE *)(a2 + 20) = 0; *(_DWORD *)a2 = -1; *(_DWORD *)(a2 + 4) = -1; *(_DWORD *)(a2 + 8) = -1; *(_DWORD *)(a2 + 12) = -1; *(_DWORD *)(a2 + 16) = -1; v13 = 0; v12 = (int)((char *)v2 + 20484); v10 = 256; do { v5 = v3; v11 = v3; do { if ( v5 <= *(_BYTE *)v12 ) { v6 = 0; v7 = (int)((char *)v9 + 8 * (v5 + v13) + 32); while ( *(_WORD *)v7 != -1 ) { if ( *(_BYTE *)(v4 + 20) >= 0xAu ) { sub_639100( &unk_86DDD8, (int)"SetItemData::SetItemClassifier::sic_SetItemDefine : Too many Effect", *(_BYTE *)(v4 + 20)); break; } *(_WORD *)(v4 + 2 * (*(_BYTE *)(v4 + 20))++) = *(_WORD *)v7; ++v6; v7 += 2; if ( v6 >= 4 ) break; } } v3 = 1; v5 = v11 + 1; v11 = v5; } while ( v5 < 6 ); v13 += 10; ++v12; --v10; } while ( v10 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SetItemData::SetItemClassifier::sic_SetItemDefine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050ECA0) -------------------------------------------------------- int __thiscall sub_50ECA0(void *this, int a2, unsigned __int16 a3) { void *v3; // esi@1 int v4; // edx@3 const void *v5; // eax@3 int v6; // esi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SetItemData::SetItemEffectList::siel_AppendEffect"); dword_7508B8[dword_750CB8] = (int)"SetItemData::SetItemEffectList::siel_AppendEffect"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int16)a2 < 0x400u ) { v4 = 48 * (unsigned __int16)a2; v5 = *(const void **)((char *)v3 + v4 + 40); v6 = (int)((char *)v3 + v4); a2 = a3; if ( !v5 || bsearch(&a2, v5, *(_DWORD *)(v6 + 44), 2u, (int (__cdecl *)(const void *, const void *))sub_4A2220) != 0 ) { dword_13231278[*(_DWORD *)(v6 + 32)] += *(_DWORD *)(v6 + 36); dword_13231278[*(_DWORD *)(v6 + 32)] -= 1000; } } else { sub_639100( &unk_86DDD8, (int)"SetItemData::SetItemEffectList::siel_AppendEffect : EffectHandle wrong", (unsigned __int16)a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SetItemData::SetItemEffectList::siel_AppendEffect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231278: using guessed type int dword_13231278[]; //----- (0050EDC0) -------------------------------------------------------- int __thiscall sub_50EDC0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"SetItemData::SkillEffect::se_Clear"); dword_7508B8[dword_750CB8] = (int)"SetItemData::SkillEffect::se_Clear"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v1 = 1000; *((_DWORD *)v1 + 1) = 1000; *((_DWORD *)v1 + 2) = 1000; *((_DWORD *)v1 + 3) = 1000; *((_DWORD *)v1 + 4) = 1000; *((_DWORD *)v1 + 5) = 1000; *((_DWORD *)v1 + 6) = 1000; *((_DWORD *)v1 + 7) = 1000; *((_DWORD *)v1 + 8) = 1000; *((_DWORD *)v1 + 9) = 1000; *((_DWORD *)v1 + 10) = 1000; *((_DWORD *)v1 + 11) = 1000; *((_DWORD *)v1 + 12) = 1000; *((_DWORD *)v1 + 13) = 1000; *((_DWORD *)v1 + 14) = 1000; *((_DWORD *)v1 + 15) = 1000; *((_DWORD *)v1 + 16) = 1000; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SetItemData::SkillEffect::se_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050EE50) -------------------------------------------------------- int __thiscall sub_50EE50(void *this) { void *v1; // edi@1 signed int v2; // ebx@1 signed int v4; // [sp-4h] [bp-28h]@3 int v5; // [sp+14h] [bp-10h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v1 + 24) = &unk_3E80000; *((_DWORD *)v1 + 25) = &unk_3E80000; *((_DWORD *)v1 + 26) = &unk_3E80000; *((_DWORD *)v1 + 27) = &unk_3E80000; v5 = dword_87150C[3 * *((_DWORD *)v1 + 1)]; v2 = 16; do { switch ( *(_DWORD *)(v2 + 36 * *((_BYTE *)v1 + 24) + v5) ) { case 3: case 4: case 0xD: case 0x2E: case 0x53: case 0x54: case 0x5E: case 0x5F: v4 = 2; goto LABEL_10; case 5: case 6: case 0x49: case 0x4A: v4 = 3; goto LABEL_10; case 7: case 0x51: v4 = 8; goto LABEL_10; case 0xA: case 0xB: case 0x5C: case 0x5D: v4 = 11; goto LABEL_10; case 0x14: case 0x58: v4 = 10; goto LABEL_10; case 0x1E: case 0x52: v4 = 1; goto LABEL_10; case 0x16: case 0x17: case 0x23: case 0x24: case 0x55: v4 = 14; LABEL_10: sub_50E8D0((char *)v1 + 96, v4); break; default: break; } v2 += 8; } while ( (unsigned int)v2 < 0x30 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87150C: using guessed type int dword_87150C[]; //----- (0050EFF0) -------------------------------------------------------- char __thiscall sub_50EFF0(void *this, int a2, __int16 a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect"); dword_7508B8[dword_750CB8] = (int)"AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect"; dword_750AB8[dword_750CB8++] = -1; sub_50E950((char *)v3 + 96, a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050F0A0) -------------------------------------------------------- int __thiscall sub_50F0A0(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 int v4; // edi@1 signed int v5; // ebx@1 signed int v6; // eax@2 int v7; // edx@10 signed int v8; // edx@10 signed int v9; // edi@12 unsigned __int16 v10; // ax@13 int v11; // eax@14 unsigned int v12; // eax@20 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); dword_7508B8[dword_750CB8] = (int)"SetItemData::SetItemAbstateEffect::siae_ParameterRefit"; dword_750AB8[dword_750CB8++] = -1; v3 = (int)((char *)v2 + 2); v4 = v3; v5 = 4; do { v6 = *(_WORD *)(v4 - 2); if ( (unsigned __int16)v6 >= 0x11u ) v6 = 17; switch ( v6 ) { case 2: *(_DWORD *)(a2 + 2472) += *(_WORD *)v4 - 1000; *(_DWORD *)(a2 + 2468) += *(_WORD *)v4 - 1000; break; case 3: *(_DWORD *)(a2 + 2476) += *(_WORD *)v4 - 1000; break; case 8: *(_DWORD *)(a2 + 2456) += *(_WORD *)v4 - 1000; break; case 10: *(_DWORD *)(a2 + 2524) += *(_WORD *)v4 - 1000; break; case 11: *(_DWORD *)(a2 + 2480) += *(_WORD *)v4 - 1000; break; case 14: v7 = *(_DWORD *)(a2 + 2384) * *(_WORD *)v4; *(_DWORD *)(a2 + 2384) = v7; *(_DWORD *)(a2 + 2392) *= *(_WORD *)v4; v8 = (signed int)((unsigned __int64)(v7 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; *(_DWORD *)(a2 + 2384) = v8 + ((unsigned int)v8 >> 31); *(_DWORD *)(a2 + 2392) = ((signed int)((unsigned __int64)(*(_DWORD *)(a2 + 2392) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(a2 + 2392) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); break; default: break; } v4 += 4; --v5; } while ( v5 ); v9 = 4; do { v10 = *(_WORD *)(v3 - 2); if ( v10 >= 0x3E8u ) { v11 = (unsigned __int16)(v10 - 1000); if ( (unsigned __int16)v11 < 0xFu ) { switch ( v11 ) { case 0: case 13: *(_DWORD *)(a2 + 2472) += *(_WORD *)v3 - 1000; *(_DWORD *)(a2 + 2468) += *(_WORD *)v3 - 1000; break; case 4: *(_DWORD *)(a2 + 2476) += *(_WORD *)v3 - 1000; break; case 6: *(_DWORD *)(a2 + 2456) += *(_WORD *)v3 - 1000; break; case 10: case 14: *(_DWORD *)(a2 + 2552) += *(_WORD *)v3 - 1000; break; case 8: v12 = ((signed int)((unsigned __int64)(*(_DWORD *)(a2 + 2384) * *(_WORD *)v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(a2 + 2384) * *(_WORD *)v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); *(_DWORD *)(a2 + 2384) = v12; *(_DWORD *)(a2 + 2392) = ((signed int)((unsigned __int64)((signed int)(v12 * *(_WORD *)v3) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v12 * *(_WORD *)v3) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); break; default: break; } } } v3 += 4; --v9; } while ( v9 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0050F330) -------------------------------------------------------- int __thiscall sub_50F330(void *this) { void *v1; // esi@1 int v2; // eax@2 __int16 v3; // ax@3 int v4; // eax@3 char v6; // [sp+8h] [bp-20h]@1 int v7; // [sp+18h] [bp-10h]@1 int v8; // [sp+24h] [bp-4h]@1 v1 = this; v7 = (int)"ShineObjectClass::ShinePlayer::sp_SetItemCheck"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SetItemCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SetItemCheck"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; memset(byte_132422CC, 0, 0x100u); sub_43BAC0((int)&v6, (int)((char *)v1 + 32816), 0); LOBYTE(v8) = 1; sub_43BBB0(&v6); do { v2 = sub_43BBD0((int)&v6); if ( !v2 ) break; v3 = sub_63FD50(v2); v4 = sub_418CB0((int)&dword_14D20890, v3); if ( !v4 ) break; if ( *(_WORD *)(v4 + 16) < dword_132423CC ) ++byte_132422CC[*(_WORD *)(v4 + 16)]; } while ( sub_63F7F0(&v6) ); sub_50EB50(&unk_1323D2C8, (int)((char *)v1 + 160888)); LOBYTE(v8) = 0; sub_43BB10(&v6); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SetItemCheck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132423CC: using guessed type int dword_132423CC; // 14D20890: using guessed type int dword_14D20890; //----- (0050F460) -------------------------------------------------------- int __stdcall sub_50F460(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect"; dword_750AB8[dword_750CB8++] = -1; sub_50EDC0(dword_13231278); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231278: using guessed type int dword_13231278[]; //----- (0050F500) -------------------------------------------------------- int __thiscall sub_50F500(void *this, int a2) { int v2; // ebx@1 signed int v3; // esi@1 int *v4; // edi@2 __int16 v5; // ax@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; sub_50F460(a2); if ( *(_BYTE *)(v2 + 160908) ) { v4 = (int *)(v2 + 160888); do { sub_50ECA0(&unk_132312C0, *(_WORD *)v4, a2); ++v3; v4 = (int *)((char *)v4 + 2); } while ( v3 < *(_BYTE *)(v2 + 160908) ); } if ( *(_WORD *)(v2 + 160886) == -1 ) { v5 = sub_4802C0(v2); dword_132447D0 = dword_132447D4 & (dword_132447D0 + 1); word_132423D0[36 * dword_132447D0] = v5; memcpy((char *)&unk_132423D4 + 72 * dword_132447D0, dword_13231278, 0x44u); *(_WORD *)(v2 + 160886) = dword_132447D0; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231278: using guessed type int dword_13231278[]; // 132423D0: using guessed type __int16 word_132423D0[]; // 132447D0: using guessed type int dword_132447D0; // 132447D4: using guessed type int dword_132447D4; //----- (0050F630) -------------------------------------------------------- bool __thiscall sub_50F630(int this, int a2) { bool result; // al@2 if ( *(_DWORD *)(this + 23896) == 1 ) result = a2 == 1; else result = 0; return result; } //----- (0050F650) -------------------------------------------------------- int __thiscall sub_50F650(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23896) == 1 ) result = this + 23928; else result = 0; return result; } //----- (0050F670) -------------------------------------------------------- char __thiscall sub_50F670(int this, int a2) { char result; // al@3 if ( a2 ) { if ( a2 == 1 ) { *(_DWORD *)(this + 23896) = 1; result = 1; } else { result = 0; *(_DWORD *)(this + 23896) = 0; } } else { result = 1; *(_DWORD *)(this + 23896) = 0; } return result; } //----- (0050F6B0) -------------------------------------------------------- char __thiscall sub_50F6B0(void *this) { void *v1; // esi@1 int v2; // eax@1 __int16 v3; // ax@4 int v4; // eax@4 unsigned int v5; // eax@6 v1 = this; v2 = *((_DWORD *)this + 5974); if ( v2 ) { if ( v2 == 1 ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 304))() ) { v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 312))(v1); v4 = sub_54DE90(&unk_13253630, v3); if ( v4 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 672))(v4) == 2 ) { v5 = *((_DWORD *)v1 + 5975); if ( !v5 ) { *((_DWORD *)v1 + 5975) = dword_14D129E8 + 50; return 0; } if ( v5 > dword_14D129E8 ) return 0; } } } } } return 1; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0050F730) -------------------------------------------------------- char __thiscall sub_50F730(int this, int a2) { char result; // al@3 if ( a2 && *(_DWORD *)(this + 23896) == 1 ) { *(_BYTE *)a2 = *(_BYTE *)(this + 23928); result = 1; } else { result = 0; } return result; } //----- (0050F760) -------------------------------------------------------- char __thiscall sub_50F760(int this, char a2) { char result; // al@4 if ( a2 && a2 != 1 || *(_DWORD *)(this + 23896) != 1 ) { result = 0; } else { *(_BYTE *)(this + 23928) = a2; result = 1; } return result; } //----- (0050F790) -------------------------------------------------------- char __thiscall sub_50F790(int this, int a2) { char result; // al@3 if ( a2 && *(_DWORD *)(this + 23896) == 1 ) { *(_BYTE *)a2 = *(_BYTE *)(this + 23929); result = 1; } else { result = 0; } return result; } //----- (0050F7C0) -------------------------------------------------------- char __thiscall sub_50F7C0(int this, char a2) { char result; // al@4 if ( a2 && a2 != 1 || *(_DWORD *)(this + 23896) != 1 ) { result = 0; } else { *(_BYTE *)(this + 23929) = a2; result = 1; } return result; } //----- (0050F7F0) -------------------------------------------------------- char __thiscall sub_50F7F0(int this, const char *a2, int a3) { int v3; // esi@1 char result; // al@3 v3 = this; if ( a2 && a3 ) { strncpy((char *)(this + 23904), a2, 0xCu); *(_DWORD *)(v3 + 23917) = *(_DWORD *)a3; *(_DWORD *)(v3 + 23921) = *(_DWORD *)(a3 + 4); result = 1; } else { result = 0; } return result; } //----- (0050F840) -------------------------------------------------------- char __thiscall sub_50F840(int this, char *a2, int a3) { int v3; // esi@1 char result; // al@3 v3 = this; if ( a2 && a3 ) { strncpy(a2, (const char *)(this + 23904), 0xCu); *(_DWORD *)a3 = *(_DWORD *)(v3 + 23917); *(_DWORD *)(a3 + 4) = *(_DWORD *)(v3 + 23921); result = 1; } else { result = 0; } return result; } //----- (0050F890) -------------------------------------------------------- int __thiscall sub_50F890(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23896) == 1 ) result = this + 23928; else result = 0; return result; } //----- (0050F8B0) -------------------------------------------------------- char __thiscall sub_50F8B0(int this) { char result; // al@2 if ( *(_DWORD *)(this + 23896) == 1 ) { *(_DWORD *)(this + 24140) = 0; memset((void *)(this + 23932), 0, 0xD0u); *(_DWORD *)(this + 24144) = 0; *(_DWORD *)(this + 24148) = 0; result = 1; } else { result = 0; } return result; } //----- (0050F8F0) -------------------------------------------------------- char __thiscall sub_50F8F0(int this, int a2, int a3) { char result; // al@2 unsigned int v4; // edx@4 if ( *(_DWORD *)(this + 23896) == 1 ) { if ( a3 && (v4 = *(_DWORD *)(a2 + 4)) != 0 ) { if ( *(_DWORD *)(this + 4 * *(_DWORD *)a2 + 23932) >= v4 ) { *(_DWORD *)(this + 24140) -= v4; *(_DWORD *)(this + 4 * *(_DWORD *)a2 + 23932) -= *(_DWORD *)(a2 + 4); *(_BYTE *)a3 = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)a2 + 23932) ) *(_BYTE *)a3 = 1; result = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (0050F970) -------------------------------------------------------- char __thiscall sub_50F970(void *this, int a2) { void *v2; // esi@1 char result; // al@2 void *v4; // eax@3 int v5; // eax@5 v2 = this; if ( a2 ) { v4 = off_849C18; *(_WORD *)off_849C18 = -21490; *((_WORD *)v4 + 1) = *(_WORD *)a2; *((_WORD *)v4 + 2) = *(_WORD *)(a2 + 8); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(a2 + 18); *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(a2 + 22); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(a2 + 26); if ( sub_4C81E0(&off_849C18, 18) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SendExpectIncomeMoney : Packet Too Long", 18); result = 1; } } else { result = 0; } return result; } //----- (0050FA00) -------------------------------------------------------- char __thiscall sub_50FA00(void *this, int a2) { void *v2; // esi@1 char result; // al@2 int v4; // eax@4 int v5; // ST04_4@5 __time32_t v6; // eax@5 __time32_t v7; // eax@5 __int64 v8; // qax@6 int v9; // eax@7 void *v10; // eax@8 int v11; // eax@10 v2 = this; if ( a2 ) { if ( *(_WORD *)a2 == 7424 ) { v4 = (*(int (**)(void))(*(_DWORD *)this + 2004))(); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a2 + 2), 0) ) { v5 = *(_WORD *)(a2 + 2); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_SendReceiptIncomeMoney : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } LODWORD(v8) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1088))( v2, v8 + *(_DWORD *)(a2 + 20), (unsigned __int64)(v8 + *(_QWORD *)(a2 + 20)) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1096))(v2); } else { v9 = (*(int (**)(void))(*(_DWORD *)this + 2004))(); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 40))(v9, *(_WORD *)(a2 + 2)); } v10 = off_849C18; *(_WORD *)off_849C18 = -21486; *((_WORD *)v10 + 1) = *(_WORD *)a2; *((_WORD *)v10 + 2) = *(_WORD *)(a2 + 10); *(_DWORD *)((char *)v10 + 6) = *(_DWORD *)(a2 + 20); *(_DWORD *)((char *)v10 + 10) = *(_DWORD *)(a2 + 24); if ( sub_4C81E0(&off_849C18, 14) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SendReceiptIncomeMoney : Packet Too Long", 14); result = 1; } } else { result = 0; } return result; } //----- (0050FB30) -------------------------------------------------------- char __thiscall sub_50FB30(int this, int a2, int a3) { char result; // al@2 if ( *(_DWORD *)(this + 23896) == 1 && a3 && *(_DWORD *)(a2 + 4) ) { *(_BYTE *)a3 = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)a2 + 23932) ) *(_BYTE *)a3 = 1; *(_DWORD *)(this + 24140) += *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 4 * *(_DWORD *)a2 + 23932) += *(_DWORD *)(a2 + 4); result = 1; } else { result = 0; } return result; } //----- (0050FB90) -------------------------------------------------------- char __thiscall sub_50FB90(void *this, unsigned __int16 a2) { char result; // al@2 if ( a2 ) { sub_5C9860((int)((char *)this + 156368), a2); result = 1; } else { result = 0; } return result; } //----- (0050FBC0) -------------------------------------------------------- char __thiscall sub_50FBC0(void *this) { sub_5C9890((int)((char *)this + 156368)); return 1; } //----- (0050FBD0) -------------------------------------------------------- char __thiscall sub_50FBD0(int this) { int v1; // esi@1 int v2; // ecx@1 int v3; // eax@1 signed int v4; // edx@1 unsigned int v5; // edi@3 int v6; // eax@4 int v8; // [sp+Ch] [bp-4h]@3 v1 = this; *(_BYTE *)(this + 50880) = 0; *(_DWORD *)(this + 50892) = 0; *(_DWORD *)(this + 50904) = 0; *(_DWORD *)(this + 50908) = 0; *(_WORD *)(this + 50882) = -1; *(_DWORD *)(this + 50884) = -1; *(_DWORD *)(this + 50888) = -1; *(_DWORD *)(this + 50896) = 0; *(_DWORD *)(this + 50912) = 0; *(_WORD *)(this + 50900) = 0; *(_DWORD *)(this + 50916) = 0; *(_DWORD *)(this + 50920) = 0; *(_DWORD *)(this + 50924) = 0; *(_DWORD *)(this + 50928) = 0; *(_DWORD *)(this + 50932) = 0; *(_DWORD *)(this + 50936) = 0; *(_BYTE *)(this + 50940) = 0; *(_BYTE *)(this + 50949) = 0; *(_WORD *)(this + 50958) = 0; *(_DWORD *)(this + 50964) = 0; *(_BYTE *)(this + 50968) = 0; *(_DWORD *)(this + 50972) = 0; *(_BYTE *)(this + 50997) = 0; *(_DWORD *)(this + 50976) = 0; *(_DWORD *)(this + 50980) = 0; *(_DWORD *)(this + 50984) = 0; *(_DWORD *)(this + 50988) = 0; *(_DWORD *)(this + 50992) = 0; *(_BYTE *)(this + 50996) = 0; *(_WORD *)(this + 50998) = 0; *(_WORD *)(this + 51000) = 0; v2 = this + 51796; v3 = v1 + 51008; 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 + 468))(v1); *(_DWORD *)(v1 + 53464) = 0; v5 = 0; v8 = v1 + 53032; while ( 1 ) { v6 = sub_626BC0((int)&unk_1325CE70, v5); if ( !v6 ) break; *(_WORD *)v8 = *(_WORD *)v6; *(_DWORD *)(v1 + 53464) += *(_DWORD *)v6; ++v5; v8 += 2; if ( (signed int)v5 >= 216 ) return 1; } return 0; } //----- (0050FD30) -------------------------------------------------------- char __thiscall sub_50FD30(void *this, int a2) { int v2; // edi@1 unsigned int v3; // ebx@1 void *v4; // esi@1 int v6; // ecx@7 int v7; // edx@12 int v8; // eax@12 signed int v9; // edi@12 int v10; // eax@14 int v11; // edx@14 signed int v12; // ecx@14 unsigned int v13; // edi@16 int v14; // ebx@16 int v15; // eax@17 __int16 v16; // [sp+Ch] [bp-4h]@3 int v17; // [sp+18h] [bp+8h]@4 v2 = a2; v3 = 0; v4 = this; if ( a2 ) { v16 = *(_WORD *)(a2 + 8); v17 = dword_1325CCE4 ? *(_DWORD *)(dword_1325CCE4 + 40) : 0; if ( v17 <= 0 ) { v6 = v17; } else { do { v6 = sub_626BC0((int)&unk_1325CCB0, v3); if ( *(_WORD *)v6 == v16 ) break; ++v3; } while ( (signed int)v3 < v17 ); } if ( v3 != v17 ) { *((_WORD *)v4 + 25441) = v16; *((_BYTE *)v4 + 50880) = v3; *((_DWORD *)v4 + 12721) = *(_DWORD *)v2; *((_DWORD *)v4 + 12722) = *(_DWORD *)(v2 + 4); *((_DWORD *)v4 + 12723) = v2; *((_WORD *)v4 + 25448) = *(_WORD *)(v6 + 2); *((_WORD *)v4 + 25449) = *(_WORD *)(v6 + 4); *((_WORD *)v4 + 25450) = *(_WORD *)(v6 + 6); *((_DWORD *)v4 + 12726) = *(_DWORD *)(v6 + 8); *((_DWORD *)v4 + 12727) = *(_DWORD *)(v6 + 12); *((_WORD *)v4 + 25456) = ((signed int)((unsigned __int64)(10 * *(_WORD *)(v6 + 16) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(v6 + 16) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); *((_WORD *)v4 + 25457) = ((signed int)((unsigned __int64)(10 * *(_WORD *)(v6 + 18) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(v6 + 18) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v7 = (int)((char *)v4 + 50916); v8 = v6 + 20; v9 = 3; do { *(_DWORD *)v7 = *(_DWORD *)v8; v8 += 4; v7 += 4; --v9; } while ( v9 ); v10 = v6 + 32; v11 = (int)((char *)v4 + 50928); v12 = 3; do { *(_DWORD *)v11 = *(_DWORD *)v10; v10 += 4; v11 += 4; --v12; } while ( v12 ); *((_BYTE *)v4 + 50940) = 0; *((_BYTE *)v4 + 50949) = 0; *((_WORD *)v4 + 25479) = 0; *((_BYTE *)v4 + 50968) = 0; *((_BYTE *)v4 + 50997) = 0; v13 = 0; *((_DWORD *)v4 + 12741) = 0; *((_DWORD *)v4 + 12743) = 0; *((_DWORD *)v4 + 12744) = 0; *((_DWORD *)v4 + 12745) = 0; *((_DWORD *)v4 + 12746) = 0; *((_DWORD *)v4 + 12747) = 0; *((_DWORD *)v4 + 12748) = 0; *((_BYTE *)v4 + 50996) = 0; *((_WORD *)v4 + 25499) = 0; *((_BYTE *)v4 + 51000) = 0; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 468))(v4); *((_DWORD *)v4 + 13366) = 0; v14 = (int)((char *)v4 + 53032); while ( 1 ) { v15 = sub_626BC0((int)&unk_1325CE70, v13); if ( !v15 ) break; *(_WORD *)v14 = *(_WORD *)v15; *((_DWORD *)v4 + 13366) += *(_DWORD *)v15; ++v13; v14 += 2; if ( (signed int)v13 >= 216 ) return 1; } } } return 0; } // 1325CCE4: using guessed type int dword_1325CCE4; //----- (0050FF30) -------------------------------------------------------- bool __thiscall sub_50FF30(void *this, int a2) { bool result; // al@2 if ( a2 && *((_DWORD *)this + 12723) == a2 ) result = (*(int (**)(void))(*(_DWORD *)this + 532))() != 0; else result = 0; return result; } //----- (0050FF60) -------------------------------------------------------- bool __thiscall sub_50FF60(void *this, int a2, int a3) { bool result; // al@2 if ( (a3 & a2) == -1 || *((_DWORD *)this + 12721) != a2 || *((_DWORD *)this + 12722) != a3 ) result = 0; else result = (*(int (**)(void))(*(_DWORD *)this + 532))() != 0; return result; } //----- (0050FFA0) -------------------------------------------------------- char __thiscall sub_50FFA0(void *this, int a2) { void *v2; // esi@1 char result; // al@2 int v4; // eax@4 v2 = this; if ( a2 && (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 532))() && ((v4 = *((_DWORD *)v2 + 12740)) == 0 || v4 == 1) ) { *((_BYTE *)v2 + 50997) = 1; *((_WORD *)v2 + 25499) = *(_WORD *)a2; *((_BYTE *)v2 + 51000) = *(_BYTE *)(a2 + 2); result = 1; } else { result = 0; } return result; } //----- (00510000) -------------------------------------------------------- char __thiscall sub_510000(void *this, signed int a2, unsigned __int16 a3) { signed int v3; // edi@1 void *v4; // esi@1 char *v5; // ebx@2 int v6; // eax@3 signed int v8; // eax@9 unsigned __int16 v9; // cx@9 v3 = a2; v4 = this; if ( !a2 ) { *((_DWORD *)this + 13366) = a2; v5 = (char *)this + 53032; while ( 1 ) { v6 = sub_626BC0((int)&unk_1325CE70, v3); if ( !v6 ) break; *(_WORD *)v5 = *(_WORD *)v6; *((_DWORD *)v4 + 13366) += *(_DWORD *)v6; ++v3; v5 += 2; if ( v3 >= 216 ) return 1; } return 0; } if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 532))() || (a2 = 0, !sub_6305A0(v3, (int)&a2)) ) return 0; v8 = a2; v9 = a3; *((_DWORD *)v4 + 13366) += a3 - *((_WORD *)v4 + a2 + 26516); *((_WORD *)v4 + v8 + 26516) = v9; return 1; } //----- (005100B0) -------------------------------------------------------- char __thiscall sub_5100B0(int this) { int v1; // eax@1 signed int v2; // esi@1 int v3; // eax@3 int v4; // esi@3 int v5; // edi@3 __int16 v6; // bx@3 int v7; // edx@3 *(_DWORD *)(this + 53024) = 0; *(_DWORD *)(this + 53028) = 0; v1 = this + 52200; v2 = 52; do { *(_DWORD *)(v1 - 8) = 0; *(_DWORD *)(v1 - 4) = 0; *(_WORD *)v1 = 0; v1 += 16; --v2; } while ( v2 ); v3 = *(_DWORD *)(this + 50976); v4 = *(_DWORD *)(this + 50984); v5 = *(_DWORD *)(this + 50988); v6 = *(_WORD *)(this + 50992); *(_DWORD *)(this + 50960) = 0; v7 = *(_DWORD *)(this + 50980); *(_DWORD *)(this + 50979) = v3; *(_DWORD *)(this + 50983) = v7; *(_DWORD *)(this + 50987) = v4; *(_DWORD *)(this + 50991) = v5; *(_WORD *)(this + 50995) = v6; return 1; } //----- (00510130) -------------------------------------------------------- signed int __thiscall sub_510130(int this) { char v1; // dl@1 v1 = *(_BYTE *)(this + 51000); *(_WORD *)(this + 50976) = *(_WORD *)(this + 50998); *(_BYTE *)(this + 50978) = v1; *(_WORD *)(this + 50998) = 0; *(_BYTE *)(this + 51000) = 0; return 1; } //----- (00510160) -------------------------------------------------------- char __thiscall sub_510160(int this) { int v1; // ebx@1 signed int v2; // esi@1 int v3; // edi@2 v1 = this; v2 = 0; if ( *(_BYTE *)(this + 51001) ) { v3 = this + 51004; do { if ( *(_DWORD *)v3 ) (*(void (**)(void))(**(_DWORD **)v3 + 416))(); ++v2; v3 += 8; } while ( v2 < *(_BYTE *)(v1 + 51001) ); } return 1; } //----- (005101A0) -------------------------------------------------------- signed __int16 __thiscall sub_5101A0(int this, int a2) { int v2; // esi@1 signed __int16 v3; // bx@1 void *v4; // edi@5 signed __int16 result; // ax@7 int v6; // eax@8 int v7; // eax@10 unsigned __int8 v8; // al@12 int v9; // ebx@14 int v10; // esi@21 int v11; // eax@23 signed int v12; // [sp+10h] [bp-10h]@12 int v13; // [sp+14h] [bp-Ch]@13 int v14; // [sp+18h] [bp-8h]@12 int v15; // [sp+1Ch] [bp-4h]@13 v2 = this; v3 = 7296; if ( a2 ) { if ( (unsigned __int16)(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1240))() < *(_WORD *)(this + 50896) ) v3 = 7308; } else { v3 = 7304; } v4 = off_849C18; *(_WORD *)off_849C18 = -21502; if ( v3 == 7296 ) { *((_WORD *)v4 + 1) = 7296; *((_WORD *)v4 + 2) = *(_WORD *)(v2 + 50976); *((_BYTE *)v4 + 6) = *(_BYTE *)(v2 + 50978); *(_WORD *)((char *)v4 + 7) = *(_WORD *)(v2 + 50979); *((_BYTE *)v4 + 9) = *(_BYTE *)(v2 + 50981); *((_WORD *)v4 + 5) = *(_WORD *)(v2 + 50982); *((_BYTE *)v4 + 12) = *(_BYTE *)(v2 + 50984); *(_WORD *)((char *)v4 + 13) = *(_WORD *)(v2 + 50985); *((_BYTE *)v4 + 15) = *(_BYTE *)(v2 + 50987); *((_WORD *)v4 + 8) = *(_WORD *)(v2 + 50988); *((_BYTE *)v4 + 18) = *(_BYTE *)(v2 + 50990); *(_WORD *)((char *)v4 + 19) = *(_WORD *)(v2 + 50991); *((_BYTE *)v4 + 21) = *(_BYTE *)(v2 + 50993); *((_WORD *)v4 + 11) = *(_WORD *)(v2 + 50994); *((_BYTE *)v4 + 24) = *(_BYTE *)(v2 + 50996); *(_DWORD *)((char *)v4 + 25) = *(_DWORD *)(v2 + 50960); *(_DWORD *)((char *)v4 + 29) = *(_DWORD *)(v2 + 50964); *(_WORD *)((char *)v4 + 33) = *(_WORD *)(v2 + 50912); if ( *(_DWORD *)(v2 + 50960) == 1 ) v7 = *(_DWORD *)(v2 + 50972) - dword_14D129E8; else v7 = 0; *(_DWORD *)((char *)v4 + 35) = v7; *(_WORD *)((char *)v4 + 39) = *(_WORD *)(v2 + 50898); v8 = 0; *(_DWORD *)((char *)v4 + 41) = *(_DWORD *)(v2 + 50908); *(_DWORD *)((char *)v4 + 45) = 0; *((_BYTE *)v4 + 51) = *(_BYTE *)(v2 + 51001); v14 = 0; v12 = 0; if ( *(_BYTE *)(v2 + 51001) ) { v13 = (int)((char *)v4 + 52); v15 = v2 + 51004; do { v9 = *(_DWORD *)v15; if ( *(_DWORD *)v15 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 312))(v9) == *(_WORD *)(v2 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 368))(v9, 1) && v9 != a2 ) { ++v14; *(_WORD *)v13 = *(_WORD *)(v9 + 4); v13 += 2; } v15 += 8; ++v12; } while ( v12 < *(_BYTE *)(v2 + 51001) ); v8 = v14; } v10 = 2 * v8 + 52; *((_BYTE *)v4 + 51) = v8; if ( sub_4C81E0(&off_849C18, 2 * v8 + 52) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, a2, &off_849C18); result = 7296; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiGameInfo : Packet Too Long", v10); result = 7296; } } else { *((_WORD *)v4 + 1) = v3; *(_WORD *)((char *)v4 + 49) = *(_WORD *)(v2 + 50896); if ( sub_4C81E0(&off_849C18, 52) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a2, &off_849C18); result = v3; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); result = v3; } } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00510440) -------------------------------------------------------- signed int __thiscall sub_510440(int this, int a2) { int v2; // esi@1 int v3; // eax@1 signed int result; // eax@2 void *v5; // ebx@5 signed int v6; // edi@5 int v7; // eax@10 signed int v8; // ecx@12 int v9; // edx@12 int v10; // eax@14 int v11; // edi@15 int v12; // eax@17 int v13; // edi@22 int v14; // eax@24 signed int v15; // [sp+4h] [bp-18h]@5 int v16; // [sp+8h] [bp-14h]@1 int v17; // [sp+Ch] [bp-10h]@12 signed int v18; // [sp+10h] [bp-Ch]@12 int v19; // [sp+14h] [bp-8h]@6 int v20; // [sp+18h] [bp-4h]@7 v2 = 0; v3 = this; v16 = this; if ( a2 ) { if ( *(_DWORD *)(this + 50960) == 1 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -21500; *((_BYTE *)v5 + 2) = 1; v6 = 3; v15 = 0; if ( *(_BYTE *)(this + 51001) ) { v19 = this + 51004; do { v20 = *(_DWORD *)v19; if ( *(_DWORD *)v19 ) { if ( (unsigned __int16)(*(int (**)(void))(**(_DWORD **)v19 + 312))() == *(_WORD *)(v3 + 4) ) { if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(*(_DWORD *)v20 + 368))(1) ) { v7 = (*(int (**)(void))(*(_DWORD *)v20 + 412))(); if ( v7 ) { if ( v20 != a2 ) { v8 = 0; v9 = v7 + 4; v18 = 0; v17 = v7 + 4; do { if ( *(_DWORD *)v9 ) { v10 = (int)((char *)v5 + 10 * v2 + 2); *(_DWORD *)((char *)v5 + 10 * v2 + 7) = v8; *(_DWORD *)((char *)v5 + 10 * v2 + 11) = *(_DWORD *)v9; v6 += 10; ++v2; *(_WORD *)(v10 + 3) = *(_WORD *)(v20 + 4); if ( v6 > 7500 ) { v11 = v6 + 2; *(_WORD *)((char *)v5 + 3) = v2; if ( sub_4C81E0(&off_849C18, v11) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, a2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiBettingInfo : Packet Too Long", v11); } v8 = v18; v6 = 3; v2 = 0; *((_BYTE *)v5 + 2) = 0; } } ++v8; v9 = v17 + 4; v18 = v8; v17 += 4; } while ( v8 < 52 ); } } } } v3 = v16; } v19 += 8; ++v15; } while ( v15 < *(_BYTE *)(v3 + 51001) ); } *((_BYTE *)v5 + 2) |= 2u; v13 = v6 + 2; *(_WORD *)((char *)v5 + 3) = v2; if ( sub_4C81E0(&off_849C18, v13) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, a2, &off_849C18); result = 7296; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiBettingInfo : Packet Too Long", v13); result = 7296; } } else { result = 7305; } } else { result = 7306; } return result; } //----- (00510640) -------------------------------------------------------- signed int __stdcall sub_510640(int a1) { return 7304; } //----- (00510650) -------------------------------------------------------- signed int __thiscall sub_510650(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 int v4; // edx@9 int v5; // eax@9 int v6; // ecx@10 v2 = this; if ( a2 ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 480))() < 0x63u ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 372))(a2) ) { result = 7302; } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 532))(v2) ) { v4 = *((_BYTE *)v2 + 51001); v5 = 0; if ( v4 <= 0 ) { LABEL_13: result = 7296; } else { v6 = (int)((char *)v2 + 51004); while ( *(_DWORD *)v6 != a2 ) { ++v5; v6 += 8; if ( v5 >= v4 ) goto LABEL_13; } result = 7303; } } else { result = 7307; } } } else { result = 7301; } } else { result = 7304; } return result; } //----- (00510700) -------------------------------------------------------- signed int __thiscall sub_510700(void *this, int a2) { void *v2; // esi@1 void (__thiscall *v4)(_DWORD); // edx@11 v2 = this; if ( !a2 ) return 7304; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 480))() >= 0x63u ) return 7301; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 372))(a2) ) return 7302; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 532))(v2) ) return 7307; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 376))(a2, 1); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 400))(a2, 0); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 392))(a2, 0); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 416))(a2) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 376))(a2, 0); return 7304; } *((_DWORD *)v2 + 2 * *((_BYTE *)v2 + 51001) + 12751) = a2; *((_DWORD *)v2 + 2 * *((_BYTE *)v2 + 51001) + 12752) = 0; *((_DWORD *)v2 + *((_BYTE *)v2 + 51001) + 12949) = 0; v4 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 484); ++*((_BYTE *)v2 + 51001); v4(v2); return 7296; } //----- (00510810) -------------------------------------------------------- signed int __thiscall sub_510810(void *this, int a2) { void *v2; // ebx@1 signed int result; // eax@2 void *v4; // eax@5 int v5; // esi@7 int v6; // eax@13 signed int v7; // [sp+8h] [bp-8h]@5 int v8; // [sp+Ch] [bp-4h]@6 v2 = this; if ( a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 368))(a2, 1) ) { v4 = off_849C18; *(_WORD *)off_849C18 = -21501; *((_WORD *)v4 + 1) = *(_WORD *)(a2 + 4); v7 = 0; if ( *((_BYTE *)v2 + 51001) ) { v8 = (int)((char *)v2 + 51004); do { v5 = *(_DWORD *)v8; if ( *(_DWORD *)v8 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 312))(*(_DWORD *)v8) == *((_WORD *)v2 + 2) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 368))(v5, 1) && v5 != a2 ) { if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 760))(v5); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v5, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEnter : Packet Too Long", 4); } } v8 += 8; ++v7; } while ( v7 < *((_BYTE *)v2 + 51001) ); } result = 7296; } else { result = 7302; } } else { result = 7304; } return result; } //----- (00510920) -------------------------------------------------------- signed int __stdcall sub_510920(int a1) { return 7317; } //----- (00510930) -------------------------------------------------------- signed int __userpurge sub_510930(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 signed int result; // eax@2 int v6; // eax@9 int v7; // eax@11 signed int v8; // ebx@12 int v9; // esi@12 unsigned int v10; // eax@14 bool v11; // cf@14 unsigned __int8 v12; // al@17 signed int v13; // ecx@17 signed int v14; // eax@19 int v15; // edx@20 int v16; // ecx@27 int v17; // eax@30 void *v18; // eax@41 int v19; // esi@43 int v20; // eax@48 int v21; // ecx@49 int v22; // [sp+8h] [bp-10h]@13 unsigned int v23; // [sp+Ch] [bp-Ch]@13 int v24; // [sp+10h] [bp-8h]@12 char v25; // [sp+17h] [bp-1h]@13 int v26; // [sp+20h] [bp+8h]@42 v3 = a3; v4 = a1; if ( a3 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 372))(a3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 368))(a3, 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 532))(v4) ) { v6 = *(_DWORD *)(v4 + 50960); if ( v6 == 3 || v6 == 2 ) { result = 7321; } else { v7 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 412))(a3, a2); if ( v7 ) { v8 = 0; v9 = v4 + 52200; v24 = v7 + 4; do { v22 = v8; v23 = *(_DWORD *)v24; if ( (unsigned __int8)(*(int (__stdcall **)(int *, char *))(*(_DWORD *)a3 + 424))(&v22, &v25) ) { v10 = v23; v11 = *(_DWORD *)(v9 - 8) < v23; *(_DWORD *)(v9 - 8) -= v23; *(_DWORD *)(v9 - 4) -= v11; *(_WORD *)v9 -= v25 == 1; v11 = *(_DWORD *)(v4 + 53024) < v10; *(_DWORD *)(v4 + 53024) -= v10; *(_DWORD *)(v4 + 53028) -= v11; } v24 += 4; ++v8; v9 += 16; } while ( v8 < 52 ); v3 = a3; } v12 = *(_BYTE *)(v4 + 51001); v13 = 99; if ( v12 <= 0x63u ) v13 = v12; v14 = 0; if ( v13 > 0 ) { v15 = v4 + 51004; do { if ( *(_DWORD *)v15 == v3 ) break; ++v14; v15 += 8; } while ( v14 < v13 ); } if ( v14 == v13 ) { result = 7320; } else { memmove((void *)(v4 + 8 * v14 + 51004), (const void *)(v4 + 8 * v14 + 51012), 8 * (v13 - v14) - 8); --*(_BYTE *)(v4 + 51001); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 376))(v3, 0); if ( !*(_BYTE *)(v4 + 51001) ) { *(_DWORD *)(v4 + 50972) = 0; *(_BYTE *)(v4 + 50968) = 0; } v16 = *(_DWORD *)(v4 + 53028) | *(_DWORD *)(v4 + 53024); if ( !*(_QWORD *)(v4 + 53024) ) { if ( *(_DWORD *)(v4 + 50960) == 1 && !*(_DWORD *)(v4 + 50964) ) { v17 = v4 + 52216; while ( *(_WORD *)(v17 - 16) <= 0u ) { if ( *(_WORD *)v17 > 0u ) { ++v16; break; } if ( *(_WORD *)(v17 + 16) > 0u ) { v16 += 2; break; } if ( *(_WORD *)(v17 + 32) > 0u ) { v16 += 3; break; } v16 += 4; v17 += 64; if ( v16 >= 52 ) break; } if ( v16 == 52 ) { v18 = off_849C18; *(_WORD *)off_849C18 = -21460; *((_BYTE *)v18 + 2) = 0; *(_WORD *)((char *)v18 + 3) = 0; *(_DWORD *)((char *)v18 + 5) = 0; v24 = 0; if ( *(_BYTE *)(v4 + 51001) ) { v26 = v4 + 51004; do { v19 = *(_DWORD *)v26; if ( *(_DWORD *)v26 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v19 + 312))(*(_DWORD *)v26) == *(_WORD *)(v4 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v19 + 368))(v19, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 760))(v19); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v20 + 12))(v20, v19, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Out : Packet Too Long", 9); } } v21 = *(_BYTE *)(v4 + 51001); v26 += 8; ++v24; } while ( v24 < v21 ); } } } *(_DWORD *)(v4 + 50960) = 0; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 484))(v4); result = 7312; } } } else { result = 7322; } } else { result = 7319; } } else { result = 7318; } } else { result = 7317; } return result; } //----- (00510C20) -------------------------------------------------------- signed int __stdcall sub_510C20(int a1, int a2) { return 7317; } //----- (00510C30) -------------------------------------------------------- signed int __thiscall sub_510C30(int this, int a2, char a3) { int v3; // ebx@1 signed int result; // eax@2 void *v5; // eax@3 int v6; // esi@5 int v7; // eax@11 signed int v8; // [sp+8h] [bp-4h]@3 int v9; // [sp+18h] [bp+Ch]@4 v3 = this; if ( a2 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -21497; *((_BYTE *)v5 + 2) = a3; *(_WORD *)((char *)v5 + 3) = *(_WORD *)(a2 + 4); v8 = 0; if ( *(_BYTE *)(this + 51001) ) { v9 = this + 51004; do { v6 = *(_DWORD *)v9; if ( *(_DWORD *)v9 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 312))(*(_DWORD *)v9) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 368))(v6, 1) && v6 != a2 ) { if ( sub_4C81E0(&off_849C18, 5) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 760))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v6, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadOut : Packet Too Long", 5); } } v9 += 8; ++v8; } while ( v8 < *(_BYTE *)(v3 + 51001) ); } result = 7312; } else { result = 7317; } return result; } //----- (00510D30) -------------------------------------------------------- signed int __thiscall sub_510D30(void *this, int a2) { void *v2; // edi@1 signed int result; // eax@2 int v4; // ebx@9 unsigned __int8 v5; // al@11 signed int v6; // edx@11 signed int v7; // eax@13 int v8; // ecx@14 v2 = this; if ( a2 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 372))(a2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 368))(a2, 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 532))(v2) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); if ( v4 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 128))(v2) ) { v5 = *((_BYTE *)v2 + 51001); v6 = 99; if ( v5 <= 0x63u ) v6 = v5; v7 = 0; if ( v6 > 0 ) { v8 = (int)((char *)v2 + 51004); do { if ( *(_DWORD *)v8 == a2 ) break; ++v7; v8 += 8; } while ( v7 < v6 ); } if ( v7 == v6 ) { result = 7337; } else { *((_DWORD *)v2 + 12741) = *((_DWORD *)v2 + 12741) == 0; result = 7328; } } else { result = 7336; } } else { result = 7335; } } else { result = 7334; } } else { result = 7333; } } else { result = 7332; } return result; } //----- (00510E20) -------------------------------------------------------- signed int __userpurge sub_510E20(int a1, int a2, int a3) { int v3; // edi@1 int v5; // ebx@9 unsigned __int8 v6; // al@11 signed int v7; // ecx@11 signed int v8; // eax@13 int v9; // edx@14 void *v10; // eax@19 int v11; // esi@21 int v12; // eax@26 int v13; // edx@30 char v14; // cl@30 void *v15; // eax@33 int v16; // esi@37 int v17; // eax@42 signed int v18; // [sp+8h] [bp-4h]@19 signed int v19; // [sp+8h] [bp-4h]@35 int v20; // [sp+14h] [bp+8h]@20 int v21; // [sp+14h] [bp+8h]@36 v3 = a1; if ( !a3 ) return 7332; if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 372))(a3) ) return 7333; if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a3 + 368))(a3, 1) ) return 7334; if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 532))(v3) ) return 7335; v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 836))(a3, a2); if ( v5 != (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 128))(v3) ) return 7336; v6 = *(_BYTE *)(v3 + 51001); v7 = 99; if ( v6 <= 0x63u ) v7 = v6; v8 = 0; if ( v7 > 0 ) { v9 = v3 + 51004; do { if ( *(_DWORD *)v9 == a3 ) break; ++v8; v9 += 8; } while ( v8 < v7 ); } if ( v8 == v7 ) return 7337; v10 = off_849C18; *(_WORD *)off_849C18 = -21483; *(_DWORD *)((char *)v10 + 2) = *(_DWORD *)(v3 + 50964); v18 = 0; if ( *(_BYTE *)(v3 + 51001) ) { v20 = v3 + 51004; do { v11 = *(_DWORD *)v20; if ( *(_DWORD *)v20 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 312))(*(_DWORD *)v20) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v11 + 368))(v11, 1) ) { if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 760))(v11); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v11, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChange : Packet Too Long", 6); } } v20 += 8; ++v18; } while ( v18 < *(_BYTE *)(v3 + 51001) ); } if ( *(_DWORD *)(v3 + 50964) ) { if ( *(_DWORD *)(v3 + 50960) == 1 ) { *(_BYTE *)(v3 + 50968) = 0; v14 = 0; goto LABEL_33; } } else { if ( *(_DWORD *)(v3 + 50960) == 1 ) { v13 = *(_WORD *)(v3 + 50912); *(_BYTE *)(v3 + 50968) = 1; v14 = 1; *(_DWORD *)(v3 + 50972) = dword_14D129E8 + v13; LABEL_33: v15 = off_849C18; *(_WORD *)off_849C18 = -21460; *((_BYTE *)v15 + 2) = v14; if ( v14 == 1 ) { *(_WORD *)((char *)v15 + 3) = *(_WORD *)(v3 + 50912); *(_DWORD *)((char *)v15 + 5) = *(_DWORD *)(v3 + 50972) - dword_14D129E8; } v19 = 0; if ( *(_BYTE *)(v3 + 51001) ) { v21 = v3 + 51004; do { v16 = *(_DWORD *)v21; if ( *(_DWORD *)v21 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 312))(*(_DWORD *)v21) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v16 + 368))(v16, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 760))(v16); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v17 + 12))(v17, v16, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChange : Packet Too Long", 9); } } v21 += 8; ++v19; } while ( v19 < *(_BYTE *)(v3 + 51001) ); } return 7328; } } return 7328; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005110F0) -------------------------------------------------------- signed int __thiscall sub_5110F0(void *this, int a2) { void *v2; // esi@1 int v4; // ebx@3 void (__thiscall *v5)(_DWORD, _DWORD); // edx@8 v2 = this; if ( !a2 ) return 7332; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( v4 != (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 128))(v2) ) return 7336; if ( *((_DWORD *)v2 + 12741) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 532))(v2) ) return 7335; v5 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 576); *((_DWORD *)v2 + 12741) = 0; v5(v2, a2); } return 7328; } //----- (00511180) -------------------------------------------------------- signed int __stdcall sub_511180(int a1) { return 7332; } //----- (00511190) -------------------------------------------------------- signed int __userpurge sub_511190(int a1, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // edi@3 void *v6; // eax@7 int v7; // edi@9 int v8; // eax@14 int v9; // edx@17 void *v10; // eax@17 int v11; // edi@19 int v12; // eax@24 signed int v13; // [sp+4h] [bp-4h]@7 signed int v14; // [sp+4h] [bp-4h]@17 int v15; // [sp+10h] [bp+8h]@8 int v16; // [sp+10h] [bp+8h]@18 v3 = a1; if ( a3 ) { v5 = (*(int (__stdcall **)(int))(*(_DWORD *)a3 + 836))(a2); if ( v5 == (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 128))(v3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 532))(v3) ) { v6 = off_849C18; *(_WORD *)off_849C18 = -21483; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)(v3 + 50964); v13 = 0; if ( *(_BYTE *)(v3 + 51001) ) { v15 = v3 + 51004; do { v7 = *(_DWORD *)v15; if ( *(_DWORD *)v15 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 312))(*(_DWORD *)v15) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 368))(v7, 1) ) { if ( sub_4C81E0(&off_849C18, 6) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 760))(v7); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v7, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChangeLeave : Packet Too Long", 6); } } v15 += 8; ++v13; } while ( v13 < *(_BYTE *)(v3 + 51001) ); } if ( *(_DWORD *)(v3 + 50960) == 1 ) { v9 = *(_WORD *)(v3 + 50912); *(_BYTE *)(v3 + 50968) = 1; *(_DWORD *)(v3 + 50972) = dword_14D129E8 + v9; v10 = off_849C18; *(_WORD *)off_849C18 = -21460; *((_BYTE *)v10 + 2) = 1; *(_WORD *)((char *)v10 + 3) = *(_WORD *)(v3 + 50912); v14 = 0; *(_DWORD *)((char *)v10 + 5) = *(_DWORD *)(v3 + 50972) - dword_14D129E8; if ( *(_BYTE *)(v3 + 51001) ) { v16 = v3 + 51004; do { v11 = *(_DWORD *)v16; if ( *(_DWORD *)v16 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 312))(*(_DWORD *)v16) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v11 + 368))(v11, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 760))(v11); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v11, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChangeLeave : Packet Too Long", 9); } } v16 += 8; ++v14; } while ( v14 < *(_BYTE *)(v3 + 51001) ); } } result = 7328; } else { result = 7335; } } else { result = 7336; } } else { result = 7332; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005113C0) -------------------------------------------------------- signed int __thiscall sub_5113C0(int this, int a2, signed int a3) { int v3; // edx@1 int v4; // edi@1 int v6; // ecx@6 int v7; // eax@6 void *v8; // eax@10 int v9; // ecx@10 int v10; // esi@12 int v11; // eax@17 signed int v12; // eax@22 int v13; // ecx@22 void *v14; // eax@26 int v15; // esi@28 int v16; // eax@33 signed int v17; // [sp+4h] [bp-4h]@6 int v18; // [sp+10h] [bp+8h]@6 int v19; // [sp+10h] [bp+8h]@11 int v20; // [sp+10h] [bp+8h]@27 int v21; // [sp+14h] [bp+Ch]@6 signed int v22; // [sp+14h] [bp+Ch]@10 signed int v23; // [sp+14h] [bp+Ch]@26 v3 = 0; v4 = this; if ( !a2 || a3 >= 2 ) return 7349; if ( a3 ) { if ( *(_DWORD *)(this + 50960) != 1 ) return 7349; v12 = 0; v13 = this + 52200; while ( *(_WORD *)v13 <= 0u ) { ++v12; v13 += 16; if ( v12 >= 52 ) { if ( !*(_DWORD *)(v4 + 50964) ) { v14 = off_849C18; *(_WORD *)off_849C18 = -21460; *((_BYTE *)v14 + 2) = 0; *(_WORD *)((char *)v14 + 3) = 0; *(_DWORD *)((char *)v14 + 5) = 0; v23 = 0; if ( *(_BYTE *)(v4 + 51001) ) { v20 = v4 + 51004; do { v15 = *(_DWORD *)v20; if ( *(_DWORD *)v20 != v3 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v15 + 312))(*(_DWORD *)v20) == *(_WORD *)(v4 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v15 + 368))(v15, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 760))(v15); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v15, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadSetTimer : Packet Too Long", 9); } } v20 += 8; v3 = 0; ++v23; } while ( v23 < *(_BYTE *)(v4 + 51001) ); } } *(_DWORD *)(v4 + 50960) = v3; return 7344; } } return 7344; } if ( *(_DWORD *)(this + 50960) ) return 7344; v6 = 0; v21 = 0; v18 = 0; v7 = v4 + 52216; v17 = 13; do { v6 += *(_WORD *)(v7 - 16); v3 += *(_WORD *)v7; v18 += *(_WORD *)(v7 + 16); v21 += *(_WORD *)(v7 + 32); v7 += 64; --v17; } while ( v17 ); if ( v21 + v18 + v3 + v6 != 1 ) return 7349; if ( !*(_DWORD *)(v4 + 50964) ) { v8 = off_849C18; *(_WORD *)off_849C18 = -21460; *((_BYTE *)v8 + 2) = 1; v9 = *(_WORD *)(v4 + 50912); *(_BYTE *)(v4 + 50968) = 1; v22 = 0; *(_DWORD *)(v4 + 50972) = dword_14D129E8 + v9; *(_WORD *)((char *)v8 + 3) = v9; *(_DWORD *)((char *)v8 + 5) = *(_DWORD *)(v4 + 50972) - dword_14D129E8; if ( *(_BYTE *)(v4 + 51001) ) { v19 = v4 + 51004; do { v10 = *(_DWORD *)v19; if ( *(_DWORD *)v19 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 312))(*(_DWORD *)v19) == *(_WORD *)(v4 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v10 + 368))(v10, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 760))(v10); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v10, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadSetTimer : Packet Too Long", 9); } } v19 += 8; ++v22; } while ( v22 < *(_BYTE *)(v4 + 51001) ); } } *(_DWORD *)(v4 + 50960) = 1; return 7344; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00511670) -------------------------------------------------------- signed int __thiscall sub_511670(void *this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@4 int v5; // eax@9 int v6; // eax@16 int v7; // ebx@16 int v8; // esi@18 unsigned __int64 v9; // qax@18 void *v10; // [sp+Ch] [bp-4h]@1 v3 = this; v10 = this; if ( a2 && a3 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 372))(a2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 368))(a2, 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 532))(v3) ) { v5 = *((_DWORD *)v3 + 12740); if ( v5 != 1 && v5 ) { result = 7355; } else { if ( *(_DWORD *)(a3 + 4) ) { if ( *(_DWORD *)a3 < 0 || *(_DWORD *)a3 >= 52 ) { result = 7358; } else { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 412))(a2); v7 = v6; if ( v6 ) { v8 = *(_DWORD *)(a3 + 4) + *(_DWORD *)(v6 + 212); LODWORD(v9) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1076))(a2); if ( (unsigned int)v8 <= v9 ) { if ( sub_630F40( &unk_13359670, *(_DWORD *)a3, *((_DWORD *)v10 + 12727), *(_DWORD *)(a3 + 4) + *(_DWORD *)(v7 + 4 * *(_DWORD *)a3 + 4)) ) result = 7344; else result = 7354; } else { result = 7353; } } else { result = 7352; } } } else { result = 7356; } } } else { result = 7357; } } else { result = 7350; } } else { result = 7351; } } else { result = 7349; } return result; } //----- (005117F0) -------------------------------------------------------- signed int __thiscall sub_5117F0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@2 signed int result; // eax@4 int v6; // eax@9 int v7; // eax@16 int v8; // ebx@18 unsigned __int64 v9; // qax@18 int v10; // ecx@23 int v11; // eax@23 unsigned __int8 v12; // cf@23 int v13; // eax@23 int v14; // [sp+Ch] [bp-4h]@16 v3 = this; if ( a2 ) { v4 = a3; if ( a3 ) { if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 372))(a2) ) return 7351; if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 368))(a2, 1) ) return 7350; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 532))(v3) ) return 7357; v6 = *((_DWORD *)v3 + 12740); if ( v6 != 1 && v6 ) return 7355; if ( !*(_DWORD *)(v4 + 4) ) return 7356; if ( *(_DWORD *)v4 < 0 || *(_DWORD *)v4 >= 52 ) return 7358; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 412))(a2); v14 = v7; if ( !v7 ) return 7352; v8 = *(_DWORD *)(v4 + 4) + *(_DWORD *)(v7 + 212); LODWORD(v9) = (*(int (**)(void))(*(_DWORD *)a2 + 1076))(); if ( (unsigned int)v8 > v9 ) return 7353; if ( !sub_630F40( &unk_13359670, *(_DWORD *)v4, *((_DWORD *)v3 + 12727), *(_DWORD *)(v4 + 4) + *(_DWORD *)(v14 + 4 * *(_DWORD *)v4 + 4)) ) return 7354; if ( (unsigned __int8)(*(int (__stdcall **)(int, char *))(*(_DWORD *)a2 + 420))(v4, (char *)&a3 + 3) ) { v10 = *(_DWORD *)(v4 + 4); v11 = (int)((char *)v3 + 16 * (*(_DWORD *)v4 + 3262)); v12 = __CFADD__(v10, *(_DWORD *)v11); *(_DWORD *)v11 += v10; *(_DWORD *)(v11 + 4) += v12; *((_WORD *)v3 + 8 * *(_DWORD *)v4 + 26100) += BYTE3(a3) == 1; v13 = *(_DWORD *)(v4 + 4); v12 = __CFADD__(v13, *((_DWORD *)v3 + 13256)); *((_DWORD *)v3 + 13256) += v13; result = 7344; *((_DWORD *)v3 + 13257) += v12; return result; } } } return 7349; } //----- (005119B0) -------------------------------------------------------- signed int __stdcall sub_5119B0(int a1, int a2) { return 7349; } //----- (005119C0) -------------------------------------------------------- signed int __thiscall sub_5119C0(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@2 void *v5; // eax@4 int v6; // esi@6 int v7; // eax@12 signed int v8; // [sp+4h] [bp-4h]@4 int v9; // [sp+14h] [bp+Ch]@5 v3 = this; if ( a2 && a3 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -21476; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = *(_DWORD *)a3; *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 4); v8 = 0; if ( *(_BYTE *)(this + 51001) ) { v9 = this + 51004; do { v6 = *(_DWORD *)v9; if ( *(_DWORD *)v9 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 312))(*(_DWORD *)v9) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 368))(v6, 1) && v6 != a2 ) { if ( sub_4C81E0(&off_849C18, 12) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 760))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v6, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBetting : Packet Too Long", 12); } } v9 += 8; ++v8; } while ( v8 < *(_BYTE *)(v3 + 51001) ); } result = 7344; } else { result = 7349; } return result; } //----- (00511AC0) -------------------------------------------------------- signed int __stdcall sub_511AC0(int a1, int a2) { return 7365; } //----- (00511AD0) -------------------------------------------------------- signed int __thiscall sub_511AD0(void *this, int a2, int a3) { void *v3; // edi@1 signed int result; // eax@4 int v5; // eax@9 int v6; // eax@16 v3 = this; if ( a2 && a3 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 372))(a2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 368))(a2, 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 532))(v3) ) { v5 = *((_DWORD *)v3 + 12740); if ( v5 != 1 && v5 ) { result = 7368; } else { if ( *(_DWORD *)(a3 + 4) ) { if ( *(_DWORD *)a3 < 0 || *(_DWORD *)a3 >= 52 ) { result = 7373; } else { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 412))(a2); if ( v6 ) { if ( *(_DWORD *)(v6 + 4 * *(_DWORD *)a3 + 4) >= *(_DWORD *)(a3 + 4) ) result = 7360; else result = 7371; } else { result = 7370; } } } else { result = 7369; } } } else { result = 7372; } } else { result = 7367; } } else { result = 7366; } } else { result = 7365; } return result; } //----- (00511BE0) -------------------------------------------------------- signed int __thiscall sub_511BE0(void *this, int a2, int a3) { int v3; // ebx@1 void *v4; // esi@1 int v5; // edi@2 signed int result; // eax@4 int v7; // eax@9 int v8; // eax@16 unsigned int v9; // ecx@21 int v10; // eax@21 bool v11; // cf@21 unsigned int v12; // eax@21 v3 = a2; v4 = this; if ( a2 ) { v5 = a3; if ( a3 ) { if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 372))(a2) ) return 7366; if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 368))(v3, 1) ) return 7367; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 532))(v4) ) return 7372; v7 = *((_DWORD *)v4 + 12740); if ( v7 != 1 && v7 ) return 7368; if ( !*(_DWORD *)(v5 + 4) ) return 7369; if ( *(_DWORD *)v5 < 0 || *(_DWORD *)v5 >= 52 ) return 7373; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 412))(v3); if ( !v8 ) return 7370; if ( *(_DWORD *)(v8 + 4 * *(_DWORD *)v5 + 4) < *(_DWORD *)(v5 + 4) ) return 7371; if ( (unsigned __int8)(*(int (__thiscall **)(int, int, char *))(*(_DWORD *)v3 + 424))(v3, v5, (char *)&a2 + 3) ) { v9 = *(_DWORD *)(v5 + 4); v10 = (int)((char *)v4 + 16 * (*(_DWORD *)v5 + 3262)); v11 = *(_DWORD *)v10 < v9; *(_DWORD *)v10 -= v9; *(_DWORD *)(v10 + 4) -= v11; *((_WORD *)v4 + 8 * *(_DWORD *)v5 + 26100) -= BYTE3(a2) == 1; v12 = *(_DWORD *)(v5 + 4); v11 = *((_DWORD *)v4 + 13256) < v12; *((_DWORD *)v4 + 13256) -= v12; result = 7360; *((_DWORD *)v4 + 13257) -= v11; return result; } } } return 7365; } //----- (00511D40) -------------------------------------------------------- signed int __thiscall sub_511D40(int this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@2 void *v5; // eax@4 int v6; // esi@6 int v7; // eax@12 signed int v8; // [sp+4h] [bp-4h]@4 int v9; // [sp+14h] [bp+Ch]@5 v3 = this; if ( a2 && a3 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -21473; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = *(_DWORD *)a3; *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 4); v8 = 0; if ( *(_BYTE *)(this + 51001) ) { v9 = this + 51004; do { v6 = *(_DWORD *)v9; if ( *(_DWORD *)v9 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 312))(*(_DWORD *)v9) == *(_WORD *)(v3 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 368))(v6, 1) && v6 != a2 ) { if ( sub_4C81E0(&off_849C18, 12) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 760))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v6, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBettingCancel : Packet Too Long", 12); } } v9 += 8; ++v8; } while ( v8 < *(_BYTE *)(v3 + 51001) ); } result = 7360; } else { result = 7365; } return result; } //----- (00511E40) -------------------------------------------------------- signed int __stdcall sub_511E40(int a1) { return 7380; } //----- (00511E50) -------------------------------------------------------- signed int __thiscall sub_511E50(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 int v4; // edi@9 v2 = this; if ( a2 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 372))(a2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 368))(a2, 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 532))(v2) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); if ( v4 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 128))(v2) ) { if ( *((_DWORD *)v2 + 12741) == 1 ) { if ( *((_DWORD *)v2 + 12740) == 1 ) { if ( *((_DWORD *)v2 + 13257) || *((_DWORD *)v2 + 13256) ) result = 7376; else result = 7384; } else { result = 7383; } } else { result = 7386; } } else { result = 7387; } } else { result = 7385; } } else { result = 7382; } } else { result = 7381; } } else { result = 7380; } return result; } //----- (00511F40) -------------------------------------------------------- signed int __thiscall sub_511F40(void *this) { void *v1; // esi@1 signed int result; // eax@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 532))() ) { if ( *((_DWORD *)v1 + 12741) ) { result = 7386; } else { if ( *((_DWORD *)v1 + 12740) == 1 ) { if ( *((_DWORD *)v1 + 13257) || *((_DWORD *)v1 + 13256) ) result = 7376; else result = 7384; } else { result = 7383; } } } else { result = 7385; } return result; } //----- (00511FA0) -------------------------------------------------------- signed int __cdecl sub_511FA0() { return 7380; } //----- (00511FB0) -------------------------------------------------------- signed int __thiscall sub_511FB0(void *this) { void *v1; // edi@1 int v3; // esi@11 int v4; // edx@11 int v5; // eax@11 int v6; // edx@11 signed 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 unsigned __int64 v19; // ST00_8@25 v1 = this; if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 532))() ) return 7385; if ( *((_DWORD *)v1 + 12740) != 1 ) return 7383; if ( !*((_DWORD *)v1 + 13257) && !*((_DWORD *)v1 + 13256) ) return 7384; if ( *((_BYTE *)v1 + 50997) == 1 ) { *((_BYTE *)v1 + 50997) = 0; LABEL_10: *((_DWORD *)v1 + 12740) = 2; return 7376; } v3 = rand() << 15; v4 = ((unsigned int)v3 | (unsigned __int64)(unsigned int)rand()) % *((_DWORD *)v1 + 13366); v5 = (int)((char *)v1 + 53034); 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 ); HIDWORD(v19) = (char *)v1 + 50998; LODWORD(v19) = v7; if ( sub_630610(v19) ) goto LABEL_10; return 7380; } //----- (005120C0) -------------------------------------------------------- signed int __fastcall sub_5120C0(int a1) { void *v1; // ebx@1 int v2; // esi@3 int v3; // edi@10 unsigned __int64 v4; // qax@12 int v5; // eax@14 int v6; // eax@20 int v8; // [sp-Ch] [bp-1Ch]@7 int v9; // [sp+4h] [bp-Ch]@1 signed int v10; // [sp+8h] [bp-8h]@1 int v11; // [sp+Ch] [bp-4h]@2 v1 = off_849C18; *(_WORD *)off_849C18 = -21470; v9 = a1; v10 = 0; if ( *(_BYTE *)(a1 + 51001) ) { v11 = a1 + 51004; while ( 1 ) { *((_WORD *)v1 + 1) = 7392; v2 = *(_DWORD *)v11; if ( !*(_DWORD *)v11 || (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 312))(v2) != *(_WORD *)(a1 + 4) ) goto LABEL_21; if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 368))(v2, 1) ) break; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 412))(v2); if ( !v3 ) { *((_WORD *)v1 + 1) = 7394; goto LABEL_7; } LODWORD(v4) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1076))(v2); if ( *(_DWORD *)(v3 + 212) > v4 ) { *((_WORD *)v1 + 1) = 7395; goto LABEL_7; } v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); if ( !v5 ) { *((_WORD *)v1 + 1) = 7396; goto LABEL_7; } v8 = 4; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 16))(v5) == 1 ) { *((_WORD *)v1 + 1) = 7396; goto LABEL_8; } if ( sub_4C81E0(&off_849C18, 4) ) { LABEL_20: v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); goto LABEL_21; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBettingCancel : Packet Too Long", 4); LABEL_21: a1 = v9; v11 += 8; ++v10; if ( v10 >= *(_BYTE *)(v9 + 51001) ) return 7376; } *((_WORD *)v1 + 1) = 7393; LABEL_7: v8 = 4; LABEL_8: if ( sub_4C81E0(&off_849C18, v8) ) goto LABEL_20; sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadDiceRoll : Packet Too Long", 4); goto LABEL_21; } return 7376; } //----- (00512260) -------------------------------------------------------- signed int __thiscall sub_512260(void *this, int a2) { void *v2; // ebx@1 signed int v3; // edi@4 int v4; // esi@6 int v5; // eax@13 int v6; // edi@18 int v7; // eax@25 int v8; // eax@26 int v9; // eax@27 int v10; // edx@28 int v11; // ecx@28 signed int v13; // [sp+8h] [bp-114h]@1 void *v14; // [sp+Ch] [bp-110h]@1 int v15; // [sp+10h] [bp-10Ch]@5 int v16; // [sp+14h] [bp-108h]@2 char v17; // [sp+18h] [bp-104h]@16 unsigned int v18; // [sp+118h] [bp-4h]@1 int v19; // [sp+11Ch] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v2 = this; v14 = this; v13 = 0; if ( *(_WORD *)(a2 + 20) > 0u ) { v16 = a2 + 24; while ( 1 ) { v3 = 0; if ( *((_BYTE *)v2 + 51001) ) { v15 = (int)((char *)v2 + 51004); while ( 1 ) { v4 = *(_DWORD *)v15; if ( *(_DWORD *)v15 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(*(_DWORD *)v15) == *(_DWORD *)(v16 + 2) && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 312))(v4) == *((_WORD *)v2 + 2) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 368))(v4, 1) ) break; } v2 = v14; v15 += 8; ++v3; if ( v3 >= *((_BYTE *)v14 + 51001) ) goto LABEL_33; } if ( *(_WORD *)(v16 - 2) == 7408 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int, _DWORD))(*(_DWORD *)v5 + 28))( v5, v4, *(_WORD *)v16, 0) ) { if ( byte_7493ED ) { if ( byte_14D15494 ) { sprintf(&v17, "%.255s", "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_MoneyResult_DiceRoll : "); sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fputs(&v17, dword_14D15310); } } v6 = *(_WORD *)v16; if ( byte_7493ED ) { if ( byte_14D15494 ) { sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fprintf(dword_14D15310, "%d", v6); } if ( byte_7493ED && byte_14D15494 && dword_14D15310 ) { v7 = sub_418E40((__time32_t)byte_14D15210); sub_654AB0(10, (FILE *)v7); fflush(dword_14D15310); fclose(dword_14D15310); dword_14D15310 = 0; } } } } else { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)v16); } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 412))(v4); if ( v9 ) { v10 = *(_DWORD *)(v16 + 6); v11 = *(_DWORD *)(v16 + 10); if ( v11 < 0 || v11 <= 0 && !v10 ) { v10 = 0; v11 = 0; } *(_DWORD *)(v9 + 216) = v10; *(_DWORD *)(v9 + 220) = v11; } } LABEL_33: v16 += 16; ++v13; if ( v13 >= *(_WORD *)(a2 + 20) ) break; v2 = v14; } } return 7376; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D15494: using guessed type char byte_14D15494; //----- (005124E0) -------------------------------------------------------- signed int __fastcall sub_5124E0(int a1) { void *v1; // ebx@1 int v2; // esi@3 int v3; // eax@9 int v5; // [sp+4h] [bp-Ch]@1 signed int v6; // [sp+8h] [bp-8h]@1 int v7; // [sp+Ch] [bp-4h]@2 v1 = off_849C18; *(_WORD *)off_849C18 = -21466; *((_WORD *)v1 + 2) = *(_WORD *)(a1 + 50998); *((_BYTE *)v1 + 6) = *(_BYTE *)(a1 + 51000); v5 = a1; v6 = 0; if ( *(_BYTE *)(a1 + 51001) ) { v7 = a1 + 51004; do { *((_WORD *)v1 + 1) = 7400; v2 = *(_DWORD *)v7; if ( *(_DWORD *)v7 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 312))(v2) == *(_WORD *)(a1 + 4) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 368))(v2, 1) ) *((_WORD *)v1 + 1) = 7401; if ( sub_4C81E0(&off_849C18, 7) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v3 + 12))(v3, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadResult_DiceRoll : Packet Too Long", 7); } } a1 = v5; v7 += 8; ++v6; } while ( v6 < *(_BYTE *)(v5 + 51001) ); } return 7376; } //----- (005125E0) -------------------------------------------------------- signed int __thiscall sub_5125E0(void *this, int a2) { void *v2; // ebx@1 int v3; // eax@1 void *v4; // esi@1 unsigned __int8 v5; // cl@1 bool v6; // zf@3 int v7; // esi@5 int v8; // eax@10 int v9; // ecx@14 int v10; // edx@16 int v11; // eax@18 __int16 v12; // cx@18 int v13; // eax@18 int v14; // edx@19 char v16; // [sp+10h] [bp-34h]@22 int v17; // [sp+1Ch] [bp-28h]@1 int v18; // [sp+20h] [bp-24h]@1 int v19; // [sp+24h] [bp-20h]@1 int v20; // [sp+28h] [bp-1Ch]@3 int *v21; // [sp+2Ch] [bp-18h]@4 int v22; // [sp+30h] [bp-14h]@2 unsigned __int8 v23; // [sp+37h] [bp-Dh]@1 int v24; // [sp+40h] [bp-4h]@22 v2 = this; v3 = (int)off_849C18; *(_WORD *)off_849C18 = -21465; v4 = 0; v5 = 0; *(_BYTE *)(v3 + 2) = 0; v18 = v3; v23 = 0; v17 = 0; v19 = 0; if ( *(_WORD *)(a2 + 20) > 0u ) { v22 = a2 + 30; do { v6 = *((_BYTE *)v2 + 51001) == 0; v20 = 0; if ( !v6 ) { v21 = (int *)((char *)v2 + 51004); while ( 1 ) { v7 = *v21; if ( *v21 && (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(*v21) == *(_DWORD *)(v22 - 4) && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 312))(v7) == *((_WORD *)v2 + 2) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 368))(v7, 1) && *(_WORD *)(v22 - 8) == 7408 ) { v8 = *(_DWORD *)(v22 + 4); if ( v8 > 0 ) goto LABEL_16; if ( v8 < 0 ) break; if ( *(_DWORD *)v22 ) { LABEL_16: v10 = *((_DWORD *)v2 + rand() % 3 + 12729); goto LABEL_18; } if ( v8 < 0 ) break; } v9 = *((_BYTE *)v2 + 51001); v21 += 2; ++v20; if ( v20 >= v9 ) goto LABEL_19; } v10 = *((_DWORD *)v2 + rand() % 3 + 12732); LABEL_18: v11 = v23; v12 = *(_WORD *)(v7 + 4); ++v23; v13 = v18 + 6 * v11 + 2; *(_WORD *)(v13 + 1) = v12; *(_DWORD *)(v13 + 3) = v10; v17 = v7; } LABEL_19: v14 = *(_WORD *)(a2 + 20); v22 += 16; ++v19; } while ( v19 < v14 ); v3 = v18; v5 = v23; v4 = (void *)v17; } *(_BYTE *)(v3 + 2) = v5; if ( v5 ) { sub_4287B0(&v16, &off_849C18, 6 * v5 + 3); v24 = 0; if ( v4 ) sub_549B60(v4, (int)&v16, 1); v24 = -1; sub_428A70(&v16); } return 7376; } //----- (005127C0) -------------------------------------------------------- signed int __thiscall sub_5127C0(void *this) { void *v1; // esi@1 signed int result; // eax@2 int v3; // eax@5 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 532))() ) { if ( *((_DWORD *)v1 + 12740) == 2 ) { v3 = *((_WORD *)v1 + 25457); *((_DWORD *)v1 + 12740) = 3; *((_BYTE *)v1 + 50968) = 1; *((_DWORD *)v1 + 12743) = dword_14D129E8 + v3; result = 7376; } else { result = 7380; } } else { result = 7385; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00512820) -------------------------------------------------------- signed int __stdcall sub_512820(int a1) { return 7428; } //----- (00512830) -------------------------------------------------------- signed int __stdcall sub_512830(int a1) { return 7452; } //----- (00512840) -------------------------------------------------------- signed int __thiscall sub_512840(int this, int a2) { int v2; // ebx@1 signed int result; // eax@2 signed int v4; // edi@3 int v5; // esi@5 int v6; // eax@6 int v7; // edi@12 void *v8; // esi@12 __int16 v9; // dx@12 signed int v10; // edx@13 int v11; // ecx@14 int v12; // eax@14 signed int v13; // eax@18 unsigned __int8 v14; // bl@18 int v15; // ecx@22 int v16; // eax@23 int v17; // edi@24 int v18; // eax@26 bool v19; // zf@27 int v20; // eax@31 int v21; // [sp+4h] [bp-Ch]@23 int v22; // [sp+8h] [bp-8h]@12 int v23; // [sp+Ch] [bp-4h]@1 signed int v24; // [sp+Ch] [bp-4h]@22 int v25; // [sp+18h] [bp+8h]@4 int v26; // [sp+18h] [bp+8h]@22 v2 = a2; v23 = this; if ( *(_DWORD *)(a2 + 8) == -1 ) { result = 7457; } else { v4 = 0; if ( *(_BYTE *)(this + 51001) ) { v25 = this + 51004; do { v5 = *(_DWORD *)v25; if ( *(_DWORD *)v25 ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(*(_DWORD *)v25); this = v23; if ( v6 == *(_DWORD *)(v2 + 8) ) break; } v25 += 8; ++v4; } while ( v4 < *(_BYTE *)(this + 51001) ); } else { v5 = a2; } if ( v4 == *(_BYTE *)(this + 51001) ) { result = 7457; } else { v7 = v5; v8 = off_849C18; *(_WORD *)off_849C18 = -21479; v9 = *(_WORD *)v2; v22 = v7; *((_WORD *)v8 + 1) = *(_WORD *)v2; *((_BYTE *)v8 + 4) = 0; *((_BYTE *)v8 + 485) = 0; if ( v9 == 7448 ) { v10 = 0; if ( *(_BYTE *)(v2 + 12) ) { v11 = (int)((char *)v8 + 13); v12 = v2 + 21; do { *(_DWORD *)(v11 - 8) = *(_DWORD *)(v12 - 8); *(_DWORD *)(v11 - 4) = *(_DWORD *)(v12 - 4); *(_DWORD *)v11 = *(_DWORD *)v12; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v12 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v12 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v12 + 12); ++v10; v12 += 24; v11 += 24; } while ( v10 < *(_BYTE *)(v2 + 12) ); this = v23; } *((_BYTE *)v8 + 4) = *(_BYTE *)(v2 + 12); } LOBYTE(v13) = *(_BYTE *)(this + 51001); v14 = 0; if ( (unsigned __int8)v13 <= 0x14u ) v13 = (unsigned __int8)v13; else v13 = 20; if ( v13 > 0 ) { v15 = this + 51796; v26 = v15; v24 = v13; do { v16 = *(_DWORD *)v15; v21 = *(_DWORD *)v15; if ( *(_DWORD *)v15 ) { v17 = *(_DWORD *)v16; if ( *(_DWORD *)v16 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 1744))(v17) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 1744))(v17); *(_DWORD *)((char *)v8 + 24 * v14 + 486) = *(_DWORD *)(v18 + 2); *(_DWORD *)((char *)v8 + 24 * v14 + 490) = *(_DWORD *)(v18 + 6); *(_DWORD *)((char *)v8 + 24 * v14 + 494) = *(_DWORD *)(v18 + 10); *(_DWORD *)((char *)v8 + 24 * v14 + 498) = *(_DWORD *)(v18 + 14); *(_DWORD *)((char *)v8 + 24 * v14 + 502) = *(_DWORD *)(v18 + 18); *(_DWORD *)((char *)v8 + 8 * (3 * v14++ + 63) + 2) = *(_DWORD *)(v21 + 4); } } } v15 = v26 + 4; v19 = v24-- == 1; v26 += 4; } while ( !v19 ); v7 = v22; } *((_BYTE *)v8 + 485) = v14; if ( sub_4C81E0(&off_849C18, 24 * v14 + 486) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 760))(v7); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v20 + 12))(v20, v7, &off_849C18); result = 7448; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_SendRank : Packet Too Long", 24 * v14 + 486); result = 7448; } } } return result; } //----- (00512A50) -------------------------------------------------------- char __thiscall sub_512A50(int this) { int v1; // edi@1 int v2; // ebx@1 void *v3; // esi@1 int v4; // eax@1 int v5; // ebx@2 int v6; // esi@3 int v7; // edx@4 int v8; // eax@6 __int16 v9; // dx@8 int v10; // ecx@9 char v12; // [sp+10h] [bp-30h]@12 int v13; // [sp+1Ch] [bp-24h]@1 int v14; // [sp+20h] [bp-20h]@4 int v15; // [sp+24h] [bp-1Ch]@1 int v16; // [sp+28h] [bp-18h]@1 int v17; // [sp+2Ch] [bp-14h]@1 int *v18; // [sp+30h] [bp-10h]@2 int v19; // [sp+3Ch] [bp-4h]@12 v1 = this; v2 = (int)off_849C18; *(_WORD *)off_849C18 = -21462; v3 = 0; v4 = 0; *(_BYTE *)(v2 + 2) = 0; v13 = v2; v17 = 0; v15 = 0; v16 = 0; if ( *(_BYTE *)(this + 51001) ) { v5 = v2 + 5; v18 = (int *)(this + 51004); do { v6 = *v18; if ( *v18 ) { v7 = *(_DWORD *)v6; v14 = *(_WORD *)(v1 + 4); if ( (unsigned __int16)(*(int (__thiscall **)(int))(v7 + 312))(v6) == (_WORD)v14 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 368))(v6, 1) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 412))(v6); if ( v8 ) { if ( *(_QWORD *)(v8 + 216) >= (unsigned __int64)*(_DWORD *)(v1 + 50908) ) { v9 = *(_WORD *)(v6 + 4); ++v17; *(_WORD *)(v5 - 2) = v9; *(_DWORD *)v5 = *(_DWORD *)(v8 + 216); v5 += 6; v15 = v6; } } } } } v10 = *(_BYTE *)(v1 + 51001); v18 += 2; ++v16; } while ( v16 < v10 ); v3 = (void *)v15; v4 = v17; v2 = v13; } *(_BYTE *)(v2 + 2) = v4; if ( v4 > 0 ) { sub_4287B0(&v12, &off_849C18, 6 * (unsigned __int8)v4 + 3); v19 = 0; if ( v3 ) sub_549B60(v3, (int)&v12, 1); v19 = -1; sub_428A70(&v12); } return 1; } //----- (00512BB0) -------------------------------------------------------- char __thiscall sub_512BB0(int this) { int v1; // ebx@1 int v2; // esi@3 int v3; // eax@8 signed int v5; // [sp+4h] [bp-8h]@1 int v6; // [sp+8h] [bp-4h]@2 v1 = this; *(_WORD *)off_849C18 = -21494; v5 = 0; if ( *(_BYTE *)(this + 51001) ) { v6 = this + 51004; do { v2 = *(_DWORD *)v6; if ( *(_DWORD *)v6 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 312))(*(_DWORD *)v6) == *(_WORD *)(v1 + 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 368))(v2, 1) ) { if ( sub_4C81E0(&off_849C18, 3) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v3 + 12))(v3, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadGameFold : Packet Too Long", 3); } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 376))(v2, 0); } v6 += 8; ++v5; } while ( v5 < *(_BYTE *)(v1 + 51001) ); } return 1; } //----- (00512C90) -------------------------------------------------------- char __thiscall sub_512C90(int this) { return *(_BYTE *)(this + 51001); } //----- (00512CA0) -------------------------------------------------------- bool __cdecl sub_512CA0(int a1, int a2) { return *(_DWORD *)(*(_DWORD *)a1 + 4) < *(_DWORD *)(*(_DWORD *)a2 + 4); } //----- (00512CC0) -------------------------------------------------------- char __thiscall sub_512CC0(int this, char a2, int a3, int a4) { if ( a2 == 1 ) { if ( (a4 & a3) == -1 ) return 0; } else { if ( !a2 && (a4 & a3) != -1 ) return 0; } *(_BYTE *)(this + 50940) = a2; *(_DWORD *)(this + 50941) = a3; *(_DWORD *)(this + 50945) = a4; return 1; } //----- (00512D10) -------------------------------------------------------- bool __thiscall sub_512D10(int this, int a2, int a3) { return *(_BYTE *)(this + 50940) && *(_DWORD *)(this + 50941) == a2 && *(_DWORD *)(this + 50945) == a3; } //----- (00512D40) -------------------------------------------------------- char __thiscall sub_512D40(int this, char a2, int a3, int a4) { if ( a2 == 1 ) { if ( (a4 & a3) == -1 ) return 0; } else { if ( !a2 && (a4 & a3) != -1 ) return 0; } *(_BYTE *)(this + 50949) = a2; *(_DWORD *)(this + 50950) = a3; *(_DWORD *)(this + 50954) = a4; return 1; } //----- (00512D90) -------------------------------------------------------- bool __thiscall sub_512D90(int this, int a2, int a3) { return *(_BYTE *)(this + 50949) && *(_DWORD *)(this + 50950) == a2 && *(_DWORD *)(this + 50954) == a3; } //----- (00512DC0) -------------------------------------------------------- char __thiscall sub_512DC0(int this, char a2) { *(_BYTE *)(this + 50958) = a2; return 1; } //----- (00512DE0) -------------------------------------------------------- char __thiscall sub_512DE0(int this) { return *(_BYTE *)(this + 50958); } //----- (00512DF0) -------------------------------------------------------- char __thiscall sub_512DF0(int this, char a2) { *(_BYTE *)(this + 50959) = a2; return 1; } //----- (00512E10) -------------------------------------------------------- char __thiscall sub_512E10(int this) { return *(_BYTE *)(this + 50959); } //----- (00512E20) -------------------------------------------------------- char __thiscall sub_512E20(int this) { int v1; // edi@1 bool v2; // zf@1 int v3; // esi@3 int v4; // eax@9 int v5; // eax@10 int v6; // ecx@11 __int16 v7; // ax@13 int v8; // eax@13 int v9; // esi@13 int v11; // eax@16 int v12; // ecx@17 _BYTE *v13; // ecx@17 int v14; // [sp+8h] [bp-7Ch]@8 int v15; // [sp+Ch] [bp-78h]@10 int v16; // [sp+10h] [bp-74h]@1 int *v17; // [sp+14h] [bp-70h]@2 char v18; // [sp+1Bh] [bp-69h]@6 char v19; // [sp+1Ch] [bp-68h]@10 char v20; // [sp+30h] [bp-54h]@8 char v21; // [sp+3Ch] [bp-48h]@9 char v22; // [sp+51h] [bp-33h]@10 char v23; // [sp+5Dh] [bp-27h]@10 int v24; // [sp+72h] [bp-12h]@10 int v25; // [sp+76h] [bp-Eh]@10 unsigned int v26; // [sp+80h] [bp-4h]@1 int v27; // [sp+84h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v1 = this; v2 = *(_BYTE *)(this + 51001) == 0; v16 = 0; if ( !v2 ) { v17 = (int *)(this + 51004); do { v3 = *v17; if ( *v17 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(*v17) == *(_WORD *)(v1 + 4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 368))(v3, 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 396))(v3, &v18) ) { if ( v18 == 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, char *, int *))(*(_DWORD *)v3 + 408))(v3, &v20, &v14) ) { v21 = 0; v4 = sub_63AB60(&unk_CFCF398, &v20); if ( v4 ) { v5 = sub_418B00((int)byte_85A2C0, v4); strncpy(&v22, (const char *)v5, 0x20u); v24 = v14; v25 = v15; v23 = 0; (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v3 + 1536))( v3, &v19, 6, 9, 10); } } } } } } } v6 = *(_BYTE *)(v1 + 51001); v17 += 2; ++v16; } while ( v16 < v6 ); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 516))(v1) == 1 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 132))(v1); v8 = sub_54DE90(&unk_13253630, v7); v9 = v8; if ( v8 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *, int *))(*(_DWORD *)v8 + 408))(v8, &v20, &v14) || (v21 = 0, (v11 = sub_63AB60(&unk_CFCF398, &v20)) == 0) ) return 0; v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); v13[12] = 0; strncpy(&v22, v13, 0x20u); v24 = v14; v25 = v15; v23 = 0; (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v9 + 1536))( v9, &v19, 6, 9, 10); } } return 1; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (00513020) -------------------------------------------------------- char __thiscall sub_513020(void *this) { void *v1; // ebx@1 char result; // al@2 int v3; // esi@5 void *v4; // edi@10 __int16 v5; // ax@10 int v6; // eax@16 signed int v7; // [sp+4h] [bp-14h]@3 int v8; // [sp+8h] [bp-10h]@0 __int16 v9; // [sp+Ch] [bp-Ch]@10 int v10; // [sp+10h] [bp-8h]@4 char v11; // [sp+17h] [bp-1h]@8 v1 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 336))() ) { v7 = 0; if ( *((_BYTE *)v1 + 51001) ) { v10 = (int)((char *)v1 + 51004); do { v3 = *(_DWORD *)v10; if ( *(_DWORD *)v10 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(*(_DWORD *)v10) == *((_WORD *)v1 + 2) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 368))(v3, 1) && (unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 388))(v3, &v11) && v11 == 1 ) { v4 = off_849C18; *(_DWORD *)off_849C18 = 479243270; v5 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v1 + 556))(v1, v3); v9 = v5; if ( v5 == 7312 ) { LOBYTE(v8) = 0; } else { if ( v5 == 7321 ) { LOBYTE(v8) = 1; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 392))(v3, 1); v5 = v9; } } *((_WORD *)v4 + 1) = v5; if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); } if ( v9 == 7312 ) { (*(void (__thiscall **)(void *, int))(*(_DWORD *)v1 + 572))(v1, v3); (*(void (__thiscall **)(void *, int, int))(*(_DWORD *)v1 + 560))(v1, v3, v8); } } v10 += 8; ++v7; } while ( v7 < *((_BYTE *)v1 + 51001) ); } result = 1; } else { result = 0; } return result; } //----- (005131A0) -------------------------------------------------------- char __thiscall sub_5131A0(int this) { int v1; // eax@1 int v2; // edx@1 char result; // al@2 int v4; // ecx@3 v1 = *(_DWORD *)(this + 50884); v2 = *(_DWORD *)(this + 50888); if ( (v2 & *(_DWORD *)(this + 50884)) != -1 && (v4 = *(_DWORD *)(this + 50892)) != 0 && *(_DWORD *)v4 == v1 && *(_DWORD *)(v4 + 4) == v2 ) result = *(_BYTE *)(v4 + 10) & 1; else result = 0; return result; } //----- (005131E0) -------------------------------------------------------- int __cdecl sub_5131E0() { return 0; } //----- (005131F0) -------------------------------------------------------- int __thiscall sub_5131F0(int this) { return *(_DWORD *)(this + 50960); } //----- (00513200) -------------------------------------------------------- int __thiscall sub_513200(int this) { return *(_DWORD *)(this + 50964); } //----- (00513210) -------------------------------------------------------- char __thiscall sub_513210(int this, int a2) { int v2; // edi@1 char result; // al@2 __int16 v4; // ax@3 int v5; // esi@4 __int16 v6; // ax@5 int v7; // eax@5 v2 = this; if ( a2 && (v4 = *(_WORD *)(a2 + 8), (v4 & 0xFC00) == 16384) ) { v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 35568))(this + 35568, v4 & 0x3FF); if ( v5 && (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 132))(v2), (v7 = sub_54DE90(&unk_13253630, v6)) != 0) ) { *(_DWORD *)(v5 + 38) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v5 + 42) = *(_DWORD *)(a2 + 28); (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v7 + 1540))(v7, a2 + 8, v5, a2 + 8); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (005132B0) -------------------------------------------------------- char __thiscall sub_5132B0(int this, int a2) { char result; // al@2 int v3; // eax@3 if ( *(_DWORD *)a2 < -1 || (v3 = *(_DWORD *)a2 + 1, *(_DWORD *)a2 = v3, v3 >= *(_DWORD *)(this + 216)) ) { *(_DWORD *)a2 = -10; result = 0; } else { result = 1; } return result; } //----- (005132E0) -------------------------------------------------------- int __thiscall sub_5132E0(int this, int a2) { int v2; // eax@1 int result; // eax@3 v2 = *(_DWORD *)a2; if ( *(_DWORD *)a2 < 0 || v2 >= *(_DWORD *)(this + 216) ) result = 0; else result = *(_DWORD *)(this + 212) + 8 * v2; return result; } //----- (00513310) -------------------------------------------------------- char __thiscall sub_513310(void *this, int a2, __int16 a3, __int16 a4, int a5) { void *v5; // ebx@1 int v7; // eax@3 int v8; // ecx@3 _BYTE *v9; // ecx@3 __int16 v10; // si@3 signed int v11; // eax@4 unsigned int v12; // esi@13 char *v13; // eax@15 int v14; // eax@16 bool v15; // zf@21 __int16 v16; // ax@27 int v17; // eax@27 int v18; // esi@27 void *v19; // esi@30 int v20; // eax@32 int v21; // edx@33 int (__thiscall *v22)(_DWORD); // eax@33 int v23; // esi@33 __int16 v24; // ST0C_2@33 int v25; // eax@33 unsigned int v26; // [sp-4h] [bp-ACh]@1 int v27; // [sp+14h] [bp-94h]@0 __int16 v28; // [sp+18h] [bp-90h]@3 signed int v29; // [sp+1Ch] [bp-8Ch]@19 __int16 v30; // [sp+20h] [bp-88h]@3 int v31; // [sp+24h] [bp-84h]@4 char v32; // [sp+28h] [bp-80h]@33 unsigned int v33; // [sp+30h] [bp-78h]@33 __int16 v34; // [sp+94h] [bp-14h]@33 char v35; // [sp+96h] [bp-12h]@33 unsigned int v36; // [sp+98h] [bp-10h]@1 int v37; // [sp+A4h] [bp-4h]@1 int v38; // [sp+A8h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v26 = (unsigned int)&v38 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; if ( !a2 ) { --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange"); return 0; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; v10 = *(_WORD *)(a2 + 8); v30 = (a3 << 10) | a4 & 0x3FF; v28 = v10; if ( v10 == -1 ) goto LABEL_12; sub_5CF620(&v31); LOBYTE(v37) = 1; v11 = -1; while ( v11 >= -1 ) { ++v11; v31 = v11; if ( v11 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v11) == v10 ) goto LABEL_10; } v31 = -10; LABEL_10: if ( sub_417060(&v31) == *(_DWORD *)(dword_AA07F4 + 40) || (v12 = 0, v31 >= 0) && v31 < dword_AA0898 && (v13 = (char *)dword_AA0894 + 8 * v31) != 0 && (v14 = *((_DWORD *)v13 + 1)) != 0 && *(_DWORD *)(v14 + 98) != 1 ) goto LABEL_36; if ( dword_1325CCE4 ) v29 = *(_DWORD *)(dword_1325CCE4 + 40); else v29 = 0; v15 = v29 == 0; if ( v29 > 0 ) { do { v27 = sub_626BC0((int)&unk_1325CCB0, v12); if ( *(_WORD *)v27 == v28 ) break; ++v12; } while ( (signed int)v12 < v29 ); v15 = v12 == v29; } if ( v15 || !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 304))(v5) || (v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 312))(v5), v17 = sub_54DE90(&unk_13253630, v16), (v18 = v17) == 0) || (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v17 + 456))(v17, a2) == 1 && !(unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v18 + 496))( v18, 1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4)) ) { LABEL_36: LOBYTE(v37) = 0; nullsub_2(&v31); LABEL_12: --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange"); return 0; } v19 = off_849C18; *(_WORD *)off_849C18 = -21460; *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v5 + 836))(v5, v26); *((_WORD *)v19 + 1) = *((_WORD *)v5 + 2); *((_WORD *)v19 + 4) = v30; *((_WORD *)v19 + 5) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5) + 4); *((_DWORD *)v19 + 3) = *(_DWORD *)a2; *((_DWORD *)v19 + 4) = *(_DWORD *)(a2 + 4); *((_WORD *)v19 + 10) = *(_WORD *)(a2 + 8); *((_WORD *)v19 + 11) = word_14D211CA; *((_DWORD *)v19 + 6) = *(_DWORD *)(v27 + 8); *((_DWORD *)v19 + 7) = 0; *((_WORD *)v19 + 16) = *(_WORD *)(v27 + 6); if ( sub_4C81E0(&off_849C18, 34) ) { v20 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v20); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange : Packet Too Long", 34); } v21 = *(_DWORD *)v5; memcpy(&v32, (const void *)a2, 0x6Cu); v34 = *(_WORD *)(a2 + 108); v35 = *(_BYTE *)(a2 + 110); BYTE2(v33) = (v33 >> 16) & 0xFE; v22 = *(int (__thiscall **)(_DWORD))(v21 + 2004); LOWORD(v33) = word_14D211CA; v23 = v22(v5); v24 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5) + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v23 + 104))(v23); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v25 + 4); LOBYTE(v37) = 0; nullsub_2(&v31); --dword_750CB8; v37 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // 1325CCE4: using guessed type int dword_1325CCE4; // 14D16430: using guessed type int dword_14D16430; // 14D211CA: using guessed type __int16 word_14D211CA; //----- (00513710) -------------------------------------------------------- int __thiscall sub_513710(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 __int16 v8; // ax@10 int v9; // eax@10 int v10; // ebx@10 int v11; // eax@13 __int16 v12; // ax@14 int v13; // eax@16 __int16 v14; // ax@18 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 478194690; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 7297; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { v6 = 7298; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v6 = 7299; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 52) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); } goto LABEL_22; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); v10 = v9; if ( !v9 ) { *((_WORD *)v5 + 1) = 7300; if ( sub_4C81E0(&off_849C18, 52) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); goto LABEL_22; } goto LABEL_12; } v12 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v9 + 544))(v9, v4); if ( v12 != 7296 ) { *((_WORD *)v5 + 1) = v12; if ( sub_4C81E0(&off_849C18, 52) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v13 + 12))(v13, v4, &off_849C18); goto LABEL_22; } LABEL_12: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); goto LABEL_22; } if ( (unsigned __int16)(*(int (__thiscall **)(int, void *))(*(_DWORD *)v10 + 536))(v10, v4) == 7296 ) { v14 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v10 + 540))(v10, v4); if ( v14 == 7296 || v14 == 7305 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int, void *))(*(_DWORD *)v10 + 548))(v10, v4) == 7296 ) (*(void (__thiscall **)(int, void *))(*(_DWORD *)v10 + 552))(v10, v4); } } LABEL_22: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00513980) -------------------------------------------------------- int __thiscall sub_513980(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 __int16 v8; // ax@11 int v9; // eax@11 __int16 v10; // bx@14 int v11; // eax@20 int v13; // [sp+14h] [bp-14h]@11 int v14; // [sp+18h] [bp-10h]@0 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 479243270; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 7313; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( !sub_4C81E0(&off_849C18, 4) ) { LABEL_4: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_24; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_6: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); goto LABEL_24; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { v6 = 7314; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v6 = 7315; goto LABEL_3; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); v13 = v9; if ( !v9 ) { *((_WORD *)v5 + 1) = 7316; if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_4; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_6; } v10 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v9 + 556))(v9, v4); if ( v10 == 7312 ) { LOBYTE(v14) = 0; } else { if ( v10 == 7321 ) { LOBYTE(v14) = 1; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 392))(v4, 1); } } *(_WORD *)v5 = -21498; *((_WORD *)v5 + 1) = v10; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); } if ( v10 == 7312 || v10 == 7321 ) { (*(void (__thiscall **)(int, void *))(*(_DWORD *)v13 + 572))(v13, v4); (*(void (__thiscall **)(int, void *, int))(*(_DWORD *)v13 + 560))(v13, v4, v14); } LABEL_24: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00513BD0) -------------------------------------------------------- int __thiscall sub_513BD0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 __int16 v8; // ax@8 int v9; // ebx@8 int v10; // eax@11 int v11; // ST20_4@12 signed __int16 v12; // ax@13 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 486583310; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 7425; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 304))(v4) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); if ( v9 ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); if ( v11 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 128))(v9) ) { v12 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v9 + 648))(*(_WORD *)(a2 + 2)); if ( v12 == 7424 ) goto LABEL_18; } else { v12 = 7429; } *((_WORD *)v5 + 1) = v12; if ( !sub_4C81E0(&off_849C18, 18) ) goto LABEL_10; v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); } else { *((_WORD *)v5 + 1) = 7427; if ( !sub_4C81E0(&off_849C18, 18) ) { LABEL_10: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ : Packet Too Long", 18); goto LABEL_18; } v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12))(v10, v4, &off_849C18); goto LABEL_18; } v6 = 7426; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 18) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ : Packet Too Long", 18); } LABEL_18: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00513DD0) -------------------------------------------------------- int __thiscall sub_513DD0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 __int16 v8; // ax@8 int v9; // ebx@8 int v10; // eax@11 int v11; // ST20_4@13 __int16 v12; // ax@19 int v13; // eax@21 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 486583314; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 7425; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); if ( !v9 ) { *((_WORD *)v5 + 1) = 7427; if ( !sub_4C81E0(&off_849C18, 14) ) { LABEL_10: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ : Packet Too Long", 14); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ"); } v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_12: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v10 + 12))(v10, v4, &off_849C18); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ"); } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( v11 != (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 128))(v9) ) { *((_WORD *)v5 + 1) = 7429; if ( !sub_4C81E0(&off_849C18, 14) ) goto LABEL_10; v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_12; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *((_WORD *)v5 + 1) = 7430; if ( !sub_4C81E0(&off_849C18, 14) ) goto LABEL_18; } else { v12 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v9 + 652))(*(_WORD *)(a2 + 2)); if ( v12 == 7424 ) goto LABEL_22; *((_WORD *)v5 + 1) = v12; if ( !sub_4C81E0(&off_849C18, 14) ) { LABEL_18: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ : Packet Too Long", 14); LABEL_22: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ"); } } v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v13 + 12))(v13, v4, &off_849C18); goto LABEL_22; } v6 = 7426; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 14) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); --dword_750CB8; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ : Packet Too Long", 14); --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00514060) -------------------------------------------------------- int __thiscall sub_514060(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 __int16 v8; // ax@8 int v9; // eax@8 int v10; // ebx@8 int v11; // eax@11 int v12; // eax@12 int v13; // eax@14 __int16 v15; // [sp+14h] [bp-10h]@12 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 480291860; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 7329; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v6 = 7330; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 8) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ : Packet Too Long", 8); } goto LABEL_17; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); v10 = v9; if ( v9 ) { v15 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v9 + 564))(v9, v4); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 676))(v10); *((_WORD *)v5 + 1) = v15; *((_DWORD *)v5 + 1) = v12; if ( sub_4C81E0(&off_849C18, 8) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v13 + 12))(v13, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ : Packet Too Long", 8); } if ( v15 == 7328 ) (*(void (__thiscall **)(int, void *))(*(_DWORD *)v10 + 568))(v10, v4); } else { *((_WORD *)v5 + 1) = 7331; if ( sub_4C81E0(&off_849C18, 8) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ : Packet Too Long", 8); } } LABEL_17: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00514270) -------------------------------------------------------- int __thiscall sub_514270(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 __int16 v7; // ax@7 int v8; // eax@7 int v9; // eax@9 __int16 v10; // ax@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RANK_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RANK_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 488156185; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 7449; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v6 = 7450; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( !sub_4C81E0(&off_849C18, 486) ) goto LABEL_4; goto LABEL_12; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); if ( !v8 ) { *((_WORD *)v5 + 1) = 7451; if ( !sub_4C81E0(&off_849C18, 486) ) goto LABEL_4; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_13: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); goto LABEL_14; } v10 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v8 + 656))(v8, v4); if ( v10 == 7448 ) goto LABEL_14; *((_WORD *)v5 + 1) = v10; if ( sub_4C81E0(&off_849C18, 486) ) { LABEL_12: v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_13; } LABEL_4: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RANK_REQ : Packet Too Long", 486); LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RANK_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00514410) -------------------------------------------------------- int __thiscall sub_514410(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@5 __int16 v7; // ax@10 int v8; // ebx@10 int v9; // ecx@13 void (__thiscall *v10)(_DWORD, _DWORD); // eax@13 __int16 v11; // ax@14 int v12; // eax@19 __int16 v14; // [sp+14h] [bp-10h]@17 int v15; // [sp+2Ch] [bp+8h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 481340443; *((_WORD *)v5 + 2) = *(_WORD *)(a2 + 10); v15 = a2 + 2; if ( !*(_DWORD *)((char *)v4 + 122) ) { *((_WORD *)v5 + 1) = 7345; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *((_WORD *)v5 + 1) = 7346; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { *((_WORD *)v5 + 1) = 7347; LABEL_3: if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); } goto LABEL_23; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); if ( !v8 ) { *((_WORD *)v5 + 1) = 7348; if ( !sub_4C81E0(&off_849C18, 6) ) { LABEL_12: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); goto LABEL_23; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 12); LABEL_22: v10(v9, v4); goto LABEL_23; } v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 584))(v8, v4, v15); if ( v11 != 7344 ) { *((_WORD *)v5 + 1) = v11; if ( !sub_4C81E0(&off_849C18, 6) ) goto LABEL_12; v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 12); goto LABEL_22; } v14 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 588))(v8, v4, v15); *((_WORD *)v5 + 1) = v14; if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); } if ( v14 == 7344 ) { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v8 + 580))(v8, v15, 0); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 592); v9 = v8; goto LABEL_22; } LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005146B0) -------------------------------------------------------- int __thiscall sub_5146B0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@5 __int16 v7; // ax@10 int v8; // ebx@10 int v9; // ecx@13 void (__thiscall *v10)(_DWORD, _DWORD); // eax@13 __int16 v11; // ax@14 int v12; // eax@19 __int16 v14; // [sp+14h] [bp-10h]@17 int v15; // [sp+2Ch] [bp+8h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 482389022; *((_WORD *)v5 + 2) = *(_WORD *)(a2 + 10); v15 = a2 + 2; if ( !*(_DWORD *)((char *)v4 + 122) ) { *((_WORD *)v5 + 1) = 7361; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *((_WORD *)v5 + 1) = 7362; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { *((_WORD *)v5 + 1) = 7363; LABEL_3: if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); } goto LABEL_23; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); if ( !v8 ) { *((_WORD *)v5 + 1) = 7364; if ( !sub_4C81E0(&off_849C18, 6) ) { LABEL_12: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); goto LABEL_23; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 12); LABEL_22: v10(v9, v4); goto LABEL_23; } v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 596))(v8, v4, v15); if ( v11 != 7360 ) { *((_WORD *)v5 + 1) = v11; if ( !sub_4C81E0(&off_849C18, 6) ) goto LABEL_12; v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 12); goto LABEL_22; } v14 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 600))(v8, v4, v15); *((_WORD *)v5 + 1) = v14; if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); } if ( v14 == 7360 ) { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v8 + 580))(v8, v15, 1); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 604); v9 = v8; goto LABEL_22; } LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00514950) -------------------------------------------------------- int __stdcall sub_514950(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005149A0) -------------------------------------------------------- signed int __thiscall sub_5149A0(void *this) { int v1; // esi@1 void *v2; // edi@1 int (*v3)(void); // eax@1 __int16 v4; // ax@1 int v5; // eax@1 int v6; // ebx@1 signed int result; // eax@2 int v8; // eax@3 int v9; // ebx@5 int v10; // eax@6 __int16 v11; // ax@6 unsigned __int64 v12; // qax@9 int v13; // eax@10 signed int v14; // esi@12 unsigned int v15; // edi@12 signed int v16; // esi@16 unsigned int v17; // edx@17 signed int v18; // eax@18 int v19; // eax@22 unsigned int v20; // esi@22 signed __int64 v21; // qax@22 bool v22; // cf@22 int v23; // esi@22 int v24; // edi@22 int v25; // esi@26 int v26; // eax@26 int v27; // esi@26 int v28; // eax@26 int v29; // eax@28 int v30; // edx@28 int v31; // eax@28 int v32; // ecx@28 int v33; // eax@30 int v34; // ecx@31 int v35; // esi@33 int v36; // eax@35 signed int v37; // [sp+0h] [bp-ACh]@0 unsigned int v38; // [sp+14h] [bp-98h]@3 int v39; // [sp+18h] [bp-94h]@1 int v40; // [sp+1Ch] [bp-90h]@3 char *v41; // [sp+20h] [bp-8Ch]@4 void *v42; // [sp+24h] [bp-88h]@1 int v43; // [sp+28h] [bp-84h]@3 unsigned __int64 v44; // [sp+2Ch] [bp-80h]@12 int v45; // [sp+34h] [bp-78h]@4 int v46; // [sp+38h] [bp-74h]@8 unsigned int *v47; // [sp+3Ch] [bp-70h]@12 int v48; // [sp+40h] [bp-6Ch]@6 unsigned __int8 v49; // [sp+44h] [bp-68h]@3 char v50[4]; // [sp+48h] [bp-64h]@22 int v51[23]; // [sp+4Ch] [bp-60h]@19 unsigned int v52; // [sp+A8h] [bp-4h]@1 int v53; // [sp+ACh] [bp+0h]@1 v52 = (unsigned int)&v53 ^ __security_cookie; v1 = (int)off_849C18; v2 = this; *(_WORD *)off_849C18 = -21469; v3 = *(int (**)(void))(*(_DWORD *)this + 132); v42 = this; v39 = v1; v4 = v3(); v5 = sub_54DE90(&unk_13253630, v4); v6 = v5; if ( v5 ) { *(_DWORD *)(v1 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *(_WORD *)(v1 + 2) = *(_WORD *)(v6 + 4); *(_DWORD *)(v1 + 8) = *((_DWORD *)v2 + 12721); *(_DWORD *)(v1 + 12) = *((_DWORD *)v2 + 12722); *(_WORD *)(v1 + 16) = *((_WORD *)v2 + 25499); *(_BYTE *)(v1 + 18) = *((_BYTE *)v2 + 51000); *(_WORD *)(v1 + 19) = 0; sub_6305A0((int)((char *)v2 + 50998), (int)&v38); sub_630690(&unk_13357DA8, v38, (int)&v49); v8 = 0; v43 = 0; v40 = 0; if ( *((_BYTE *)v2 + 51001) ) { v45 = v1 + 25; v41 = (char *)v2 + 51004; do { v9 = *(_DWORD *)v41; if ( *(_DWORD *)v41 ) { v10 = *(_DWORD *)v9; v48 = *((_WORD *)v2 + 2); v11 = (*(int (__thiscall **)(int))(v10 + 312))(v9); if ( v11 == (_WORD)v48 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 368))(v9, 1) ) { v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 412))(v9); if ( v46 ) { LODWORD(v12) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1076))(v9); if ( *(_DWORD *)(v46 + 212) <= v12 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); if ( v13 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 16))(v13) != 1 ) { v14 = 0; v15 = 0; v44 = 0i64; v46 += 4; v47 = (unsigned int *)v46; do { if ( *v47 ) sub_630F40(&unk_13359670, v14, *((_DWORD *)v42 + 12727), *v47); ++v47; ++v14; } while ( v14 < 52 ); v16 = 0; v48 = 0; v47 = (unsigned int *)v46; do { v17 = *v47; if ( *v47 ) { v18 = 0; if ( (signed int)v49 > 0 ) { while ( v51[2 * v18] != v16 ) { ++v18; if ( v18 >= v49 ) goto LABEL_23; } v46 = v18; v19 = sub_630FA0(&unk_13359670, v16, (unsigned __int8)v50[8 * v18], v17); v20 = v19; v21 = (signed __int64)(*((_WORD *)v42 + 25449) * (unsigned __int64)(unsigned int)v19) / 1000; v22 = v20 < (unsigned int)v21; v23 = v20 - v21; v18 = v46; v24 = -(v22 + HIDWORD(v21)); v22 = __CFADD__(v23, (_DWORD)v44); LODWORD(v44) = v23 + v44; v16 = v48; HIDWORD(v44) += v24 + v22; v15 = HIDWORD(v44); } LABEL_23: if ( v18 == v49 ) { v15 = (__PAIR__(v15, (unsigned int)v44) - *v47) >> 32; v44 = __PAIR__(v15, (unsigned int)v44 - *v47); } } ++v47; ++v16; v48 = v16; } while ( v16 < 52 ); v25 = v45; *(_WORD *)(v45 - 4) = 0; *(_DWORD *)v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); v26 = v45; v27 = v44; *(_DWORD *)(v45 + 4) = v44; *(_DWORD *)(v26 + 8) = v15; v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); *(_WORD *)(v45 - 2) = *(_WORD *)(v28 + 4); if ( (signed int)v15 > 0 || (v15 & 0x80000000u) == 0 ) { v48 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 2004))(v9, v37); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9); v32 = v48; v37 = 1; } else { v29 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 2004))(v9, v37); v30 = *(_DWORD *)v9; v48 = v29; v31 = (*(int (__thiscall **)(int))(v30 + 2004))(v9); v32 = v48; v27 = -v27; v37 = -1; v15 = (unsigned __int64)-(signed __int64)__PAIR__(v15, v27) >> 32; } (*(void (__stdcall **)(_DWORD, int, unsigned int))(*(_DWORD *)v32 + 72))( *(_WORD *)(v31 + 4), v27, v15); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9); v1 = v39; v2 = v42; ++*(_WORD *)(v33 + 4); ++v43; v45 += 16; } } } } } } } v34 = *((_BYTE *)v2 + 51001); v41 += 8; ++v40; } while ( v40 < v34 ); v8 = v43; } *(_WORD *)(v1 + 19) = v8; v35 = 16 * v8 + 21; if ( sub_4C81E0(&off_849C18, v35) ) { v36 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v36); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Result_DiceRoll : Packet Too Long", v35); } *((_BYTE *)v2 + 50968) = 0; result = 7376; } else { result = 7380; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 5149A0: using guessed type int var_60[23]; // 5149A0: using guessed type char var_64[4]; //----- (00514D90) -------------------------------------------------------- signed int __thiscall sub_514D90(void *this, int a2) { int v2; // edi@1 void *v3; // ebx@1 int (*v4)(void); // eax@1 int v5; // esi@1 __int16 v6; // ax@1 int v7; // eax@1 signed int result; // eax@2 int v9; // eax@3 int v10; // ecx@3 bool v11; // zf@3 int v12; // eax@5 int v13; // ecx@5 int v14; // eax@6 int v15; // edi@7 signed int v16; // ebx@7 int v17; // esi@9 int v18; // eax@9 void *v19; // edx@9 signed int v20; // eax@9 int *v21; // ST1C_4@13 int v22; // eax@13 unsigned int v23; // edi@13 int v24; // eax@13 __int16 v25; // ax@14 int v26; // eax@17 int v27; // edx@20 int v28; // esi@22 int v29; // eax@24 signed int v30; // esi@25 int v31; // edi@26 int v32; // [sp+Ch] [bp-158h]@5 unsigned int v33; // [sp+14h] [bp-150h]@3 int v34; // [sp+18h] [bp-14Ch]@7 int v35; // [sp+1Ch] [bp-148h]@1 void *v36; // [sp+20h] [bp-144h]@1 int v37; // [sp+24h] [bp-140h]@1 __int16 *v38; // [sp+28h] [bp-13Ch]@4 int v39; // [sp+2Ch] [bp-138h]@4 int v40; // [sp+30h] [bp-134h]@3 unsigned __int8 v41; // [sp+34h] [bp-130h]@3 char v42[4]; // [sp+38h] [bp-12Ch]@13 int v43[23]; // [sp+3Ch] [bp-128h]@10 __int16 v44[100]; // [sp+98h] [bp-CCh]@4 unsigned int v45; // [sp+160h] [bp-4h]@1 int v46; // [sp+164h] [bp+0h]@1 v45 = (unsigned int)&v46 ^ __security_cookie; v2 = (int)off_849C18; v3 = this; *(_WORD *)off_849C18 = -21467; v4 = *(int (**)(void))(*(_DWORD *)this + 132); v36 = this; v35 = v2; v5 = 20; v6 = v4(); v7 = sub_54DE90(&unk_13253630, v6); v37 = v7; if ( v7 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); v10 = v37; *(_DWORD *)(v2 + 4) = v9; *(_WORD *)(v2 + 2) = *(_WORD *)(v10 + 4); *(_DWORD *)(v2 + 8) = *((_DWORD *)v3 + 12721); *(_DWORD *)(v2 + 12) = *((_DWORD *)v3 + 12722); *(_DWORD *)(v2 + 16) = a2; *(_WORD *)(v2 + 20) = 0; v40 = 0; sub_6305A0((int)((char *)v3 + 50998), (int)&v33); sub_630690(&unk_13357DA8, v33, (int)&v41); v11 = *((_BYTE *)v3 + 51001) == 0; v37 = 0; if ( !v11 ) { v38 = v44; v39 = (int)((char *)v3 + 51008); do { v12 = v39; *v38 = 0; v13 = *(_DWORD *)(v12 - 4); v32 = v13; if ( v13 ) { v14 = (*(int (**)(void))(*(_DWORD *)v13 + 412))(); if ( v14 ) { v15 = v14 + 4; v16 = 0; v34 = v14 + 4; do { if ( *(_DWORD *)v15 ) { v17 = 21 * (unsigned __int16)v40 + v35 + 2; v18 = (*(int (**)(void))(*(_DWORD *)v32 + 836))(); v19 = v36; *(_DWORD *)(v17 + 20) = v18; *(_DWORD *)(v17 + 24) = v16; *(_DWORD *)(v17 + 28) = *(_DWORD *)v15; *(_WORD *)(v17 + 32) = 0; *(_BYTE *)(v17 + 34) = 0; *(_WORD *)(v17 + 35) = *((_WORD *)v19 + 25449); v20 = 0; *(_DWORD *)(v17 + 37) = 0; if ( (signed int)v41 > 0 ) { while ( v43[2 * v20] != v16 ) { ++v20; if ( v20 >= v41 ) goto LABEL_14; } v21 = (int *)&v42[8 * v20]; v22 = sub_630FA0(&unk_13359670, v16, (unsigned __int8)v42[8 * v20], *(_DWORD *)v15); v23 = v22 - ((unsigned int)(v22 * (unsigned int)*((_WORD *)v36 + 25449) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_WORD *)(v17 + 32) = sub_631040(&unk_13359670, v16, *(_BYTE *)v21); ++*v38; v24 = v39; *(_DWORD *)(v17 + 37) = v23; v15 = v34; *(_BYTE *)(v17 + 34) = 1; ++*(_DWORD *)v24; } LABEL_14: v25 = v40 + 1; v5 = 21 * (unsigned __int16)(v40++ + 1) + 20; if ( v5 > 7500 ) { *(_WORD *)(v35 + 20) = v25; v40 = 0; if ( sub_4C81E0(&off_849C18, v5 + 2) ) { v26 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v26); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ResultLog_DiceRoll : Packet Too Long", v5 + 2); } } } ++v16; v15 += 4; v34 = v15; } while ( v16 < 52 ); v3 = v36; v2 = v35; } } v27 = *((_BYTE *)v3 + 51001); ++v38; v39 += 8; ++v37; } while ( v37 < v27 ); if ( (_WORD)v40 ) { v28 = v5 + 2; *(_WORD *)(v2 + 20) = v40; if ( sub_4C81E0(&off_849C18, v28) ) { v29 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v29); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ResultLog_DiceRoll : Packet Too Long", v28); } } } v30 = 0; if ( *((_BYTE *)v3 + 51001) ) { v31 = (int)((char *)v3 + 51004); do { if ( v44[v30] ) { if ( *(_DWORD *)v31 ) (*(void (__stdcall **)(_DWORD))(**(_DWORD **)v31 + 436))((unsigned __int16)v44[v30]); } ++v30; v31 += 8; } while ( v30 < *((_BYTE *)v3 + 51001) ); } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 484))(v3); result = 7376; } else { result = 7380; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 514D90: using guessed type int var_128[23]; // 514D90: using guessed type __int16 var_CC[100]; // 514D90: using guessed type char var_12C[4]; //----- (00515150) -------------------------------------------------------- signed int __thiscall sub_515150(int this, int a2) { int v2; // esi@1 signed int result; // eax@2 int v4; // eax@5 __int16 v5; // di@7 signed int v6; // eax@7 int v7; // eax@14 int v8; // eax@15 __int16 v9; // ax@18 int v10; // ebx@18 unsigned int v11; // esi@23 int v12; // edi@24 void *v13; // esi@29 int v14; // eax@31 int v15; // [sp+10h] [bp-1Ch]@5 __int16 v16; // [sp+14h] [bp-18h]@7 signed int v17; // [sp+18h] [bp-14h]@21 int v18; // [sp+1Ch] [bp-10h]@7 int v19; // [sp+28h] [bp-4h]@7 v2 = this; if ( (a2 & 0xFC00) == 16384 ) { if ( (a2 & 0x3FFu) < 0x62 ) { v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 35568))(this + 35568, a2 & 0x3FF); v15 = v4; if ( v4 ) { v5 = *(_WORD *)(v4 + 8); v16 = *(_WORD *)(v4 + 8); sub_5CF620(&v18); v19 = 0; v6 = -1; while ( v6 >= -1 ) { ++v6; v18 = v6; if ( v6 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v6) == v5 ) goto LABEL_13; } v18 = -10; LABEL_13: if ( sub_417060(&v18) != *(_DWORD *)(dword_AA07F4 + 40) && (v7 = sub_5132E0((int)&dword_AA07C0, (int)&v18)) != 0 && (v8 = *(_DWORD *)(v7 + 4)) != 0 ) { if ( *(_DWORD *)(v8 + 98) == 1 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 132))(v2); v10 = sub_54DE90(&unk_13253630, v9); if ( !v10 ) goto LABEL_36; v17 = dword_1325CCE4 ? *(_DWORD *)(dword_1325CCE4 + 40) : 0; v11 = 0; if ( v17 <= 0 ) { v12 = a2; } else { do { v12 = sub_626BC0((int)&unk_1325CCB0, v11); if ( *(_WORD *)v12 == v16 ) break; ++v11; } while ( (signed int)v11 < v17 ); } if ( v11 != v17 ) { v13 = off_849C18; *(_WORD *)off_849C18 = -21492; *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 836))(v10); *((_WORD *)v13 + 1) = *(_WORD *)(v10 + 4); *((_WORD *)v13 + 4) = a2; *(_DWORD *)((char *)v13 + 10) = *(_DWORD *)v15; *(_DWORD *)((char *)v13 + 14) = *(_DWORD *)(v15 + 4); *(_DWORD *)((char *)v13 + 18) = *(_DWORD *)(v12 + 8); *(_DWORD *)((char *)v13 + 22) = 0; *((_WORD *)v13 + 13) = *(_WORD *)(v12 + 6); if ( sub_4C81E0(&off_849C18, 28) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetExpectIncomeMoney : Packet Too Long", 28); } v19 = -1; nullsub_2(&v18); result = 7424; } else { LABEL_36: v19 = -1; nullsub_2(&v18); result = 7428; } } else { v19 = -1; nullsub_2(&v18); result = 7434; } } else { v19 = -1; nullsub_2(&v18); result = 7435; } } else { result = 7432; } } else { result = 7431; } } else { result = 7430; } return result; } // AA07C0: using guessed type int dword_AA07C0; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // 1325CCE4: using guessed type int dword_1325CCE4; // 14D16430: using guessed type int dword_14D16430; //----- (00515420) -------------------------------------------------------- signed int __thiscall sub_515420(int this, __int16 a2) { int v2; // esi@1 signed int result; // eax@2 int v4; // eax@5 int v5; // ebx@5 __int16 v6; // ax@9 int v7; // esi@9 void *v8; // edi@11 int v9; // edi@11 int v10; // eax@11 int v11; // edi@11 int v12; // eax@11 int v13; // eax@11 int v14; // eax@13 v2 = this; if ( (a2 & 0xFC00) == 16384 ) { if ( (a2 & 0x3FFu) < 0x62 ) { v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 35568))(this + 35568, a2 & 0x3FF); v5 = v4; if ( v4 ) { if ( *(_WORD *)(v4 + 8) == word_14D211CA ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 132))(v2); v7 = sub_54DE90(&unk_13253630, v6); if ( v7 ) { v8 = off_849C18; *(_WORD *)off_849C18 = -21488; *((_WORD *)v8 + 1) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7) + 4); *(_DWORD *)((char *)v8 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 836))(v7); *((_WORD *)v8 + 2) = *(_WORD *)(v7 + 4); *((_WORD *)v8 + 5) = a2; *((_DWORD *)v8 + 3) = *(_DWORD *)v5; *((_DWORD *)v8 + 4) = *(_DWORD *)(v5 + 4); v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7); v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 72))( v9, *(_WORD *)(v10 + 4), 0, 0, 1); v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7); v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))( v11, *(_WORD *)(v12 + 4), v5, &a2, &a2); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7); ++*(_WORD *)(v13 + 4); if ( sub_4C81E0(&off_849C18, 20) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); result = 7424; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetExpectIncomeMoney : Packet Too Long", 20); result = 7424; } } else { result = 7428; } } else { result = 7435; } } else { result = 7433; } } else { result = 7432; } } else { result = 7431; } return result; } // 14D16430: using guessed type int dword_14D16430; // 14D211CA: using guessed type __int16 word_14D211CA; //----- (005155D0) -------------------------------------------------------- signed int __thiscall sub_5155D0(void *this, int a2) { void *v2; // ebx@1 signed int result; // eax@2 __int16 v4; // ax@3 int v5; // eax@3 int v6; // edi@3 void *v7; // esi@5 int v8; // eax@7 v2 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 532))() ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 132))(v2); v5 = sub_54DE90(&unk_13253630, v4); v6 = v5; if ( v5 ) { v7 = off_849C18; *(_WORD *)off_849C18 = -21481; *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v7 + 1) = *(_WORD *)(v6 + 4); *((_DWORD *)v7 + 2) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); *((_DWORD *)v7 + 3) = *((_DWORD *)v2 + 12721); *((_DWORD *)v7 + 4) = *((_DWORD *)v2 + 12722); if ( sub_4C81E0(&off_849C18, 20) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); result = 7448; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetRank : Packet Too Long", 20); result = 7448; } } else { result = 7452; } } else { result = 7453; } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (005156C0) -------------------------------------------------------- char __thiscall sub_5156C0(int this) { signed int v1; // eax@1 int v2; // edx@2 int v3; // esi@2 v1 = 0; if ( *(_BYTE *)(this + 51001) ) { v2 = this + 51796; v3 = this + 51004; do { *(_DWORD *)v2 = v3; ++v1; v2 += 4; v3 += 8; } while ( v1 < *(_BYTE *)(this + 51001) ); } qsort((void *)(this + 51796), *(_BYTE *)(this + 51001), 4u, (int (__cdecl *)(const void *, const void *))sub_512CA0); return 1; } //----- (00515720) -------------------------------------------------------- char __usercall sub_515720(int a1, int a2) { int v2; // edi@1 char result; // al@2 __int16 v4; // ax@4 int v5; // ebx@4 int v6; // esi@6 int v7; // eax@8 int v8; // esi@13 int v9; // esi@13 int v10; // eax@13 void *v11; // esi@13 int v12; // esi@13 int v13; // eax@13 int v14; // eax@15 int v15; // eax@16 int v16; // [sp-4h] [bp-8Ch]@4 int v17; // [sp+4h] [bp-84h]@1 int v18; // [sp+8h] [bp-80h]@6 int v19; // [sp+Ch] [bp-7Ch]@7 int v20; // [sp+Ch] [bp-7Ch]@13 int v21; // [sp+10h] [bp-78h]@7 char v22; // [sp+14h] [bp-74h]@13 unsigned int v23; // [sp+1Ch] [bp-6Ch]@13 __int16 v24; // [sp+80h] [bp-8h]@13 char v25; // [sp+82h] [bp-6h]@13 unsigned int v26; // [sp+84h] [bp-4h]@1 int v27; // [sp+88h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v2 = a1; v17 = a1; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a1 + 508))() ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 532))(v2); if ( result ) { v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 132))(v2, a2); v5 = sub_54DE90(&unk_13253630, v4); if ( v5 ) { v6 = *(_DWORD *)(v2 + 50892); v18 = v6; if ( !v6 ) goto LABEL_19; v19 = *(_DWORD *)(v6 + 112); LOWORD(v21) = 16384; do { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 35568))(v2 + 35568, v21 & 0x3FF); if ( v7 && v7 == v6 ) break; LOWORD(v21) = (v21 ^ (unsigned __int16)(v21 + 1)) & 0x3FF ^ v21; } while ( (v21 & 0x3FFu) < 0x62 ); if ( (v21 & 0x3FF) != 98 ) { memcpy(&v22, (const void *)v6, 0x6Cu); v8 = v6 + 108; v24 = *(_WORD *)v8; v25 = *(_BYTE *)(v8 + 2); BYTE2(v23) = (v23 >> 16) & 0xFE; v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 2004))(v5, v16); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v9 + 104))( v9, *(_WORD *)(v10 + 4), v18, &v22, &v21, &v21); v11 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v11 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v11 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5) + 4); *(_DWORD *)((char *)v11 + 10) = *(_DWORD *)v18; *(_DWORD *)((char *)v11 + 14) = *(_DWORD *)(v18 + 4); *((_WORD *)v11 + 9) = *(_WORD *)(v18 + 8); memcpy((char *)v11 + 20, (char *)&v23 + 2, 0x64u); *((_BYTE *)v11 + 120) = v25; v12 = v19; (*(void (__thiscall **)(int, int))(*(_DWORD *)v19 + 12))(v19, v18 + 10); v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v12 + 12))(v12, v18 + 10) + 20; v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v12 + 12))(v12, v18 + 10); if ( sub_4C81E0(&off_849C18, v13 + 20) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_mh_ReArrangeFurniture : Packet Too Long", v20); } v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v15 + 4); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v17 + 504))(v17, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v17 + 496))(v17); result = 1; } else { LABEL_19: result = 0; } } else { result = 0; } } } else { result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (005159A0) -------------------------------------------------------- int __stdcall sub_5159A0(int a1, int a2) { int v2; // edi@1 int v3; // ebx@1 __int16 v4; // ax@7 int v5; // eax@7 int v6; // esi@7 int v8; // [sp+28h] [bp+8h]@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( *(_WORD *)(a1 + 2) == 7408 ) { if ( v3 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 10) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 304))(v3) ) { if ( *(_DWORD *)(v3 + 122) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 312))(v3); v5 = sub_54DE90(&unk_13253630, v4); v6 = v5; if ( v5 ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 128))(v5); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == v8 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 624))(v6, v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 632))(v6, *(_DWORD *)(v2 + 2)); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 636))(v6); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 640))(v6, v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 644))(v6); } } } } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00515B10) -------------------------------------------------------- int __stdcall sub_515B10(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_EXPECT_INCOME_MONEY_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_EXPECT_INCOME_MONEY_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 6) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 304))(v2) && *(_DWORD *)(v2 + 122) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 428))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_EXPECT_INCOME_MONEY_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00515BF0) -------------------------------------------------------- int __stdcall sub_515BF0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 8) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 304))(v2) && *(_DWORD *)(v2 + 122) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 432))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00515CD0) -------------------------------------------------------- int __stdcall sub_515CD0(int a1, int a2) { int v2; // esi@1 __int16 v3; // ax@5 int v4; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_RANK_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_RANK_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); if ( v2 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 6) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 304))(v2) ) { if ( *(_DWORD *)(v2 + 122) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 312))(v2); v4 = sub_54DE90(&unk_13253630, v3); if ( v4 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 660))(v4, a1 + 2); } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_RANK_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00515DD0) -------------------------------------------------------- int __stdcall sub_515DD0(int a1, int a2) { int v2; // edi@1 int v3; // esi@1 __int16 v4; // ax@5 int (__thiscall *v5)(_DWORD); // eax@6 int v6; // eax@7 int v7; // ST04_4@8 __time32_t v8; // eax@8 __time32_t v9; // eax@8 int v10; // eax@10 int v12; // [sp+28h] [bp+8h]@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); if ( v3 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 6) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 304))(v3) ) { if ( *(_DWORD *)(v3 + 122) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(v3); v12 = sub_54DE90(&unk_13253630, v4); if ( v12 ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); if ( *(_WORD *)v2 == 7464 ) { v6 = v5(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v3, *(_WORD *)(v2 + 10), 0) ) { v7 = *(_WORD *)(v2 + 10); v8 = sub_418EA0( (__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } (*(void (__stdcall **)(int))(*(_DWORD *)v12 + 680))(v2); } else { v10 = v5(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(v2 + 10)); } } } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00515F50) -------------------------------------------------------- char __thiscall sub_515F50(void *this, int a2, int a3, char a4, int a5) { void *v5; // esi@1 signed int v6; // ebx@1 int (__thiscall *v8)(_DWORD); // eax@3 int v9; // eax@4 int v10; // ebx@4 int v11; // ecx@5 int v12; // eax@6 unsigned int v13; // esi@7 unsigned int v14; // edx@7 int v15; // ecx@10 unsigned int v16; // edx@10 int v17; // ecx@12 unsigned int v18; // edx@12 int v19; // ecx@14 unsigned int v20; // edx@14 int v21; // ecx@19 int (**v22)(); // [sp+10h] [bp-30h]@3 int v23; // [sp+14h] [bp-2Ch]@3 int v24; // [sp+1Ch] [bp-24h]@3 int *v25; // [sp+20h] [bp-20h]@3 int v26; // [sp+24h] [bp-1Ch]@3 int v27; // [sp+28h] [bp-18h]@3 int v28; // [sp+2Ch] [bp-14h]@1 void *v29; // [sp+30h] [bp-10h]@1 int v30; // [sp+3Ch] [bp-4h]@1 v5 = this; v29 = this; v28 = (int)"ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"; v6 = -1; dword_750AB8[dword_750CB8++] = -1; v30 = 0; if ( a3 != 16 ) { --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); return 0; } v22 = &off_6A86A4; v23 = a2; v24 = (*(int (**)(void))(*(_DWORD *)a2 + 8))(); v22 = (int (**)())&off_6A86AC; v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004); LOBYTE(v30) = 1; v25 = (int *)&v22; v26 = v8(v5); v27 = 16; if ( !sub_486D40(&v25) ) goto LABEL_25; do { v9 = (**(int (__stdcall ***)(_DWORD))v25[1])(v25[2]); v10 = v9; if ( v9 ) { v11 = *(_DWORD *)(v9 + 112); if ( v11 ) { v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v11 + 52))(v9 + 8); if ( v12 ) { v13 = *(_DWORD *)v12; v14 = (unsigned __int8)*(_DWORD *)v12; if ( (unsigned __int8)*(_DWORD *)v12 ) { if ( v14 <= (unsigned __int8)dword_AA0BC8 ) { if ( v14 < (unsigned __int8)dword_AA0BC8 || (v15 = (v13 >> 8) & 0x1F, v16 = ((unsigned int)dword_AA0BC8 >> 8) & 0x1F, v15 <= v16) && (v15 < v16 || (v17 = (v13 >> 13) & 0x3F, v18 = ((unsigned int)dword_AA0BC8 >> 13) & 0x3F, v17 <= v18) && (v17 < v18 || (v19 = (v13 >> 19) & 0x3F, v20 = ((unsigned int)dword_AA0BC8 >> 19) & 0x3F, v19 <= v20) && (v19 < v20 || (v13 & 0xFE000000) < (dword_AA0BC8 & 0xFE000000u)))) ) { if ( *(_BYTE *)(v10 + 10) & 1 ) { if ( a4 == 1 ) { v21 = v25[2]; LABEL_22: sub_513310(v29, v10, 16, v21, v12); continue; } if ( a5 ) continue; } v21 = v25[2]; goto LABEL_22; } } } } } } } while ( sub_486DA0((void **)&v25) ); v6 = -1; LABEL_25: --dword_750CB8; v22 = &off_6A86A4; v30 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); return 1; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; //----- (00516170) -------------------------------------------------------- bool __thiscall sub_516170(void *this, unsigned int *a2) { unsigned int v2; // edx@1 unsigned 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 = *a2; v3 = *(_DWORD *)this; v4 = (unsigned __int8)*a2; v5 = (unsigned __int8)*(_DWORD *)this; return v5 > v4 || v5 >= v4 && ((v7 = (v2 >> 8) & 0x1F, v8 = (v3 >> 8) & 0x1F, v8 > (unsigned int)v7) || v8 >= (unsigned int)v7 && ((v9 = (v2 >> 13) & 0x3F, v10 = (v3 >> 13) & 0x3F, v10 > (unsigned int)v9) || v10 >= (unsigned int)v9 && ((v11 = (v2 >> 19) & 0x3F, v12 = (v3 >> 19) & 0x3F, v12 > (unsigned int)v11) || v12 >= (unsigned int)v11 && v3 >> 25 > v2 >> 25))); } //----- (005161F0) -------------------------------------------------------- int __thiscall sub_5161F0(void *this) { unsigned int v1; // eax@1 int v2; // edx@1 int v3; // ecx@1 int v5; // [sp+0h] [bp-28h]@1 int v6; // [sp+4h] [bp-24h]@1 int v7; // [sp+8h] [bp-20h]@1 unsigned int v8; // [sp+Ch] [bp-1Ch]@1 unsigned int v9; // [sp+10h] [bp-18h]@1 int v10; // [sp+14h] [bp-14h]@1 int v11; // [sp+20h] [bp-8h]@1 unsigned int v12; // [sp+24h] [bp-4h]@1 int v13; // [sp+28h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v1 = *(_DWORD *)this; v2 = *(_DWORD *)this >> 19; v3 = *(_DWORD *)this >> 25; v7 = v2 & 0x3F; v6 = v3; v10 = (unsigned __int8)v1 + 100; v5 = 0; v8 = (v1 >> 13) & 0x3F; v9 = ((v1 >> 8) & 0x1F) - 1; v11 = -1; return _LN34_0(&v5); } // 657409: using guessed type _DWORD __cdecl $LN34_0(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00516260) -------------------------------------------------------- void *__thiscall sub_516260(void *this, __int64 a2) { void *v2; // esi@1 unsigned int v3; // ecx@1 unsigned int v4; // edx@1 unsigned int v5; // eax@1 unsigned int v6; // ecx@1 __int64 v7; // qax@1 struct tm *v8; // eax@1 int v9; // edx@1 int v10; // edx@1 unsigned int v11; // ecx@1 __time64_t Time; // [sp+4h] [bp-30h]@1 int v14; // [sp+Ch] [bp-28h]@1 unsigned int v15; // [sp+10h] [bp-24h]@1 unsigned int v16; // [sp+14h] [bp-20h]@1 unsigned int v17; // [sp+18h] [bp-1Ch]@1 unsigned int v18; // [sp+1Ch] [bp-18h]@1 int v19; // [sp+20h] [bp-14h]@1 int v20; // [sp+2Ch] [bp-8h]@1 unsigned int v21; // [sp+30h] [bp-4h]@1 int v22; // [sp+34h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)this; v4 = *(_DWORD *)v2; v15 = v3 >> 25; v5 = *(_DWORD *)v2; v16 = (v3 >> 19) & 0x3F; v6 = *(_DWORD *)v2; v17 = (v4 >> 13) & 0x3F; v14 = 0; v18 = ((v5 >> 8) & 0x1F) - 1; v19 = (unsigned __int8)v6 + 100; v20 = -1; LODWORD(v7) = _LN34_0(&v14); Time = a2 + v7; v8 = _localtime64(&Time); *(_BYTE *)v2 = LOBYTE(v8->tm_year) - 100; *(_DWORD *)v2 ^= (*(_DWORD *)v2 ^ ((v8->tm_mon + 1) << 8)) & 0x1F00; v9 = *(_DWORD *)v2 ^ (v8->tm_mday << 13); v10 = *(_DWORD *)v2 ^ v9 & 0x7E000; *(_DWORD *)v2 = v10; v11 = v10 ^ (unsigned int)&unk_1F80000 & (v10 ^ (v8->tm_hour << 19)); *(_DWORD *)v2 = v11; *(_DWORD *)v2 = (unsigned int)&unk_1FFFFFF & v11 | (v8->tm_min << 25); return v2; } // 657409: using guessed type _DWORD __cdecl $LN34_0(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00516340) -------------------------------------------------------- int __thiscall sub_516340(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // eax@1 int v5; // esi@4 int v6; // edi@4 int v7; // eax@4 int v8; // eax@4 int result; // eax@4 int v10; // [sp+Ch] [bp-4h]@2 v3 = this; v4 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 1240))(); if ( (unsigned __int8)v4 > 0x96u ) v10 = *(_DWORD *)(a2 + 67672); else v10 = *(_DWORD *)(a2 + 4 * v4 + 67672); memcpy(v3, &dword_DA12010, 0xCCu); v5 = a3; *(_DWORD *)v3 = *(_DWORD *)(v10 + 4) + (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2272))(a3); *((_DWORD *)v3 + 1) = *(_DWORD *)(v10 + 8) + (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2272))(v5); *((_DWORD *)v3 + 2) = *(_DWORD *)(v10 + 20) + (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2272))(v5); *((_DWORD *)v3 + 3) = *(_DWORD *)(v10 + 12) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2272))(v5); v6 = a2; *((_DWORD *)v3 + 4) = *(_DWORD *)(v10 + 24) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2272))(v5); v7 = (**(int (__thiscall ***)(int, int, void *))a2)(a2, a3, v3); *((_DWORD *)v3 + 5) = v7; *((_DWORD *)v3 + 6) = v7; *((_DWORD *)v3 + 7) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 4))(v6, a3, v3); *((_DWORD *)v3 + 8) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 16))(v6, a3, v3); *((_DWORD *)v3 + 9) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 20))(v6, a3, v3); v8 = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 8))(v6, a3, v3); *((_DWORD *)v3 + 10) = v8; *((_DWORD *)v3 + 11) = v8; *((_DWORD *)v3 + 12) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 12))(v6, a3, v3); *((_DWORD *)v3 + 13) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 24))(v6, a3, v3); *((_DWORD *)v3 + 14) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 28))(v6, a3, v3); *((_DWORD *)v3 + 19) = 1000; *((_DWORD *)v3 + 20) = 1000; *((_DWORD *)v3 + 21) = 1000; result = 0; *((_DWORD *)v3 + 22) = 0; *((_DWORD *)v3 + 23) = 0; *((_DWORD *)v3 + 24) = 0; *((_DWORD *)v3 + 25) = 0; *((_DWORD *)v3 + 26) = 0; *((_DWORD *)v3 + 27) = 0; *((_DWORD *)v3 + 28) = 0; *((_DWORD *)v3 + 29) = 0; *((_DWORD *)v3 + 30) = 0; *((_DWORD *)v3 + 31) = 0; return result; } // DA12010: using guessed type int dword_DA12010; //----- (005164A0) -------------------------------------------------------- int __thiscall sub_5164A0(int this) { int v1; // esi@1 int v2; // edi@1 v1 = this; v2 = 2 * (*(int (**)(void))(**(_DWORD **)(this + 4116) + 56))(); return *(_WORD *)(dword_DA22E30[(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1240))(v1)] + v2 + 51); } // DA22E30: using guessed type int dword_DA22E30[]; //----- (005164E0) -------------------------------------------------------- int __stdcall sub_5164E0(int a1, char a2) { int result; // eax@1 result = a1; if ( a1 ) *(_BYTE *)(a1 + 35) = a2; return result; } //----- (00516500) -------------------------------------------------------- FILE *__stdcall sub_516500(int a1, int a2, int a3) { return sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_NC_ITEMDB_fail", 0); } //----- (00516530) -------------------------------------------------------- __int16 __cdecl sub_516530(__int16 a1) { int v1; // eax@1 int v2; // eax@2 __int16 result; // ax@4 v1 = sub_44F210((int)&dword_AA0A90, a1); if ( v1 && (v2 = *(_DWORD *)(v1 + 4)) != 0 && *(_DWORD *)(v2 + 36) == 28 ) result = *(_WORD *)(v2 + 40); else result = 0; return result; } // AA0A90: using guessed type int dword_AA0A90; //----- (00516560) -------------------------------------------------------- FILE *__thiscall sub_516560(void *this, signed int a2, int a3, int a4) { signed int v4; // edi@1 void *v5; // esi@1 int v6; // eax@1 void *v7; // eax@4 FILE *result; // eax@5 int v9; // eax@6 v4 = a2; v5 = this; v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); if ( v6 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 2724))( v6, v5, *(_BYTE *)(v4 + 4) == 1, &a2); else a2 = 8196; v7 = off_849C18; *(_WORD *)off_849C18 = 12349; *((_WORD *)v7 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 760))(v5); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v5, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 4); } return result; } //----- (00516610) -------------------------------------------------------- bool __thiscall sub_516610(int this) { return *(_DWORD *)(this + 160912) != (_DWORD)&dword_13244CD8; } // 13244CD8: using guessed type int dword_13244CD8; //----- (00516620) -------------------------------------------------------- bool __thiscall sub_516620(int this) { return *(_DWORD *)(this + 160916) != (_DWORD)&dword_13245088; } // 13245088: using guessed type int dword_13245088; //----- (00516630) -------------------------------------------------------- FILE *__thiscall sub_516630(void *this, __int16 a2, char a3, char a4) { void *v4; // eax@1 void *v5; // esi@1 FILE *result; // eax@2 int v7; // eax@3 v4 = off_849C18; v5 = this; *(_WORD *)off_849C18 = 12392; *((_WORD *)v4 + 1) = a2; *((_BYTE *)v4 + 4) = a3; *((_BYTE *)v4 + 5) = a4; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 764))(v5); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v5, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendMapLinkTryResult : Packet Too Long", 6); } return result; } //----- (005166A0) -------------------------------------------------------- int __thiscall sub_5166A0(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00516760) -------------------------------------------------------- int __thiscall sub_516760(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCen"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 4147; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)((char *)v1 + 32719); *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)((char *)v1 + 32723); if ( sub_4C81E0(&off_849C18, 10) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCen : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00516860) -------------------------------------------------------- int __thiscall sub_516860(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeFame"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeFame"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 4207; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)((char *)v1 + 32715); if ( sub_4C81E0(&off_849C18, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeFame : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeFame"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00516950) -------------------------------------------------------- int __thiscall sub_516950(void *this) { void *v1; // esi@1 void *v2; // edi@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SaveFame"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SaveFame"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 4208; *(_DWORD *)((char *)v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)((char *)v1 + 32715); if ( sub_4C81E0(&off_849C18, 10) ) { v3 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SaveFame : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SaveFame"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00516A50) -------------------------------------------------------- int __thiscall sub_516A50(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // esi@1 __int16 v6; // ax@1 int v7; // ecx@2 int v8; // eax@2 int v9; // eax@3 int v10; // ebx@4 int v11; // esi@9 int v12; // eax@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChangeCell"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChangeCell"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = *(_WORD *)off_849C18 & 0x3FF | 0x3000; *(_WORD *)off_849C18 = v6; if ( (*(_WORD *)a2 & 0xFC00) == 8192 ) { *(_WORD *)v5 = v6 & 0xFC02 | 2; *((_BYTE *)v5 + 4) = *(_BYTE *)a2; v7 = a3; *((_WORD *)v5 + 1) = *(_WORD *)a4; v8 = *(_WORD *)(a3 + 8); *(_WORD *)((char *)v5 + 5) = v8; if ( (_WORD)v8 == -1 ) { v9 = (int)((char *)v5 + 7); goto LABEL_9; } v10 = (int)((char *)v5 + 7); } else { *(_WORD *)v5 = v6 & 0xFC01 | 1; *((_WORD *)v5 + 2) = *(_WORD *)a2; v7 = a3; *((_WORD *)v5 + 1) = *(_WORD *)a4; v8 = *(_WORD *)(a3 + 8); *((_WORD *)v5 + 3) = v8; if ( (_WORD)v8 == -1 ) { v9 = (int)((char *)v5 + 8); goto LABEL_9; } v10 = (int)((char *)v5 + 8); } v9 = sub_63D0C0((void *)v7, *(_DWORD *)(v7 + 112), v8, v10); LABEL_9: v11 = v9 - (_DWORD)v5; if ( sub_4C81E0(&off_849C18, v11) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ChangeCell : Packet Too Long", v11); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChangeCell"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00516BE0) -------------------------------------------------------- int __thiscall sub_516BE0(void *this, __int16 a2, int a3, int a4, int a5) { unsigned int v5; // ST10_4@1 void *v6; // edi@1 int (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // eax@1 int v8; // esi@1 int v9; // eax@1 void *v10; // ebx@1 int v11; // eax@2 int v12; // edi@2 int v13; // esi@2 int v14; // esi@3 int v15; // eax@3 int v16; // esi@4 int v17; // eax@6 int v19; // [sp+10h] [bp-98h]@1 void *v20; // [sp+14h] [bp-94h]@1 int v21; // [sp+18h] [bp-90h]@1 int v22; // [sp+1Ch] [bp-8Ch]@1 __int16 v23; // [sp+24h] [bp-84h]@1 char v24; // [sp+28h] [bp-80h]@3 char v25; // [sp+30h] [bp-78h]@3 __int16 v26; // [sp+94h] [bp-14h]@3 char v27; // [sp+96h] [bp-12h]@3 unsigned int v28; // [sp+98h] [bp-10h]@1 int v29; // [sp+A4h] [bp-4h]@1 int v30; // [sp+A8h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v5 = (unsigned int)&v30 ^ __security_cookie; v6 = this; v20 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"; dword_750AB8[dword_750CB8++] = -1; v7 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD))**((_DWORD **)v6 + 9121); v29 = 0; v8 = v7((char *)v6 + 36484, a4, v5); v19 = v8; v21 = *(_DWORD *)(v8 + 112); v9 = (*(int (__stdcall **)(int))(*(_DWORD *)v21 + 28))(v8 + 8); v10 = off_849C18; *(_WORD *)off_849C18 = a2 & 0x3FF | 0x9000; *((_WORD *)v10 + 1) = *((_WORD *)v6 + 2); v22 = v9; *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 836))(v6); *((_WORD *)v10 + 4) = *((_WORD *)v6 + 29346); *(_DWORD *)((char *)v10 + 10) = *(_DWORD *)v8; *(_DWORD *)((char *)v10 + 14) = *(_DWORD *)(v8 + 4); *((_WORD *)v10 + 9) = *(_WORD *)(v8 + 8); v23 = a4 & 0x3FF | 0x2400; if ( v22 == 1 ) { *(_WORD *)((char *)v10 + 21) = 0; v11 = *((_WORD *)v10 + 4); v12 = (int)((char *)v6 + 58688); *((_BYTE *)v10 + 20) = 1; (*(void (__thiscall **)(int, int, int, __int16 *, __int16 *))(*(_DWORD *)v12 + 48))(v12, v11, v8, &v23, &v23); v13 = 0; } else { memcpy(&v24, (const void *)v8, 0x6Cu); v14 = v8 + 108; v26 = *(_WORD *)v14; v27 = *(_BYTE *)(v14 + 2); (*(void (__thiscall **)(int, char *, int))(*(_DWORD *)v21 + 32))(v21, &v25, v22 - 1); v13 = (*(int (__thiscall **)(int, char *, char *))(*(_DWORD *)v21 + 4))(v21, &v25, (char *)v10 + 23) - (_DWORD)((char *)v10 + 23); *(_WORD *)((char *)v10 + 21) = 21; v15 = *((_WORD *)v10 + 4); v12 = (int)((char *)v20 + 58688); *((_BYTE *)v10 + 20) = 0; (*(void (__thiscall **)(char *, int, int, char *, __int16 *, __int16 *))(*((_DWORD *)v20 + 14672) + 64))( (char *)v20 + 58688, v15, v19, &v24, &v23, &v23); } v16 = v13 + 23; if ( sub_4C81E0(&off_849C18, v16) ) { v17 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v17); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize : Packet Too Long", v16); } ++*(_WORD *)(v12 + 4); --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00516E40) -------------------------------------------------------- int __stdcall sub_516E40(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_SUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_SUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_SUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 888))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_SUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00516F70) -------------------------------------------------------- int __stdcall sub_516F70(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_SUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_SUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0( (__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_SUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 892))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_SUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005170A0) -------------------------------------------------------- int __stdcall sub_5170A0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_FAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_FAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 36, 14, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_FAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005171A0) -------------------------------------------------------- int __stdcall sub_5171A0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_FAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_FAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 36, 15, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_FAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005172A0) -------------------------------------------------------- int __thiscall sub_5172A0(void *this) { int v1; // esi@1 int v2; // ST00_4@1 void *v3; // eax@1 void *v4; // ST1C_4@1 int v5; // edi@1 __int16 v6; // bx@1 int v7; // eax@3 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 4116); *(_DWORD *)(v1 + 32749) = 0; *(_BYTE *)(v1 + 32748) = 0; sub_516340((void *)(v1 + 4120), v2, v1); v3 = off_849C18; *(_WORD *)off_849C18 = -28660; v4 = v3; v5 = 2 * (*(int (**)(void))(**(_DWORD **)(v1 + 4116) + 56))(); v6 = *(_WORD *)(dword_DA22E30[(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1240))(v1)] + v5 + 51); *((_BYTE *)v4 + 2) = v6 - sub_44A190(v1); if ( sub_4C81E0(&off_849C18, 3) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_InitFreeStat : Packet Too Long", 3); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v1 + 52))(v1, 1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22E30: using guessed type int dword_DA22E30[]; //----- (005173F0) -------------------------------------------------------- int __thiscall sub_5173F0(void *this) { void *v1; // esi@1 void *v2; // edi@1 char v3; // ST1C_1@1 int v4; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow"; dword_750AB8[dword_750CB8++] = -1; sub_444B20((char *)v1 + 84388); v2 = off_849C18; *(_WORD *)off_849C18 = -28659; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1720))(v1); *((_BYTE *)v2 + 2) = v3 - sub_444A00((char *)v1 + 84388); if ( sub_4C81E0(&off_849C18, 3) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v4 + 12))(v4, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow : Packet Too Long", 3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00517510) -------------------------------------------------------- int __thiscall sub_517510(void *this, __int16 a2, __int16 a3) { void *v3; // esi@1 void *v4; // eax@1 int v5; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 18452; *((_WORD *)v4 + 1) = a3; *((_WORD *)v4 + 2) = a2; if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00517610) -------------------------------------------------------- int __stdcall sub_517610(int a1, int a2) { int v2; // eax@4 int v3; // ST04_4@5 __time32_t v4; // eax@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 signed int v8; // [sp-4h] [bp-20h]@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 13) == 4608 ) { switch ( *(_BYTE *)(a1 + 8) ) { case 3: v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 9)); if ( !v2 ) goto LABEL_5; v8 = 3; goto LABEL_13; case 0xD: v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 9)); if ( !v2 ) goto LABEL_5; v8 = 13; goto LABEL_13; case 0xE: v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 9)); if ( !v2 ) goto LABEL_5; v8 = 14; goto LABEL_13; case 0x10: v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 9)); if ( v2 ) { v8 = 16; LABEL_13: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 204))(v2, a1 + 15, v8); } else { LABEL_5: v3 = *(_DWORD *)(a1 + 9); v4 = sub_418EA0((__time32_t)byte_133598D8, (int)"player hnd["); v5 = sub_43B910(v4, v3); v6 = sub_418EA0(v5, (int)"]cannot find"); sub_418F20(v6, (int)&unk_13359E04); } break; default: break; } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005177A0) -------------------------------------------------------- char __thiscall sub_5177A0(void *this, unsigned __int16 a2, unsigned __int16 a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // edx@1 char result; // al@2 int v8; // edx@3 int v9; // eax@3 void *v10; // esi@4 int v11; // ST0C_4@4 char *v12; // eax@4 int v13; // eax@4 bool v14; // zf@8 int v15; // [sp+10h] [bp-94h]@4 void *v16; // [sp+18h] [bp-8Ch]@1 __int16 v17; // [sp+1Ch] [bp-88h]@3 int v18; // [sp+20h] [bp-84h]@1 char v19; // [sp+24h] [bp-80h]@4 unsigned __int16 v20; // [sp+2Ch] [bp-78h]@9 unsigned int v21; // [sp+94h] [bp-10h]@1 int v22; // [sp+A0h] [bp-4h]@1 int v23; // [sp+A4h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v4 = (unsigned int)&v23 ^ __security_cookie; v5 = this; v16 = this; v18 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v5 + 8204) + 8); v22 = 0; if ( a2 >= v6((char *)v5 + 32816, v4) || (v8 = *(_DWORD *)v16, v17 = v18 & 0x3FF | 0x2000, v9 = (*(int (**)(void))(v8 + 2004))(), (unsigned __int8)(*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v9 + 8))(v9, &v17)) ) { --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); result = 0; } else { v15 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v5 + 8204))( (char *)v5 + 32816, a2); v10 = sub_63ACA0(dword_1508B168, a3); v11 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v12 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v19, a3, 7, *((_DWORD *)v12 + 4), v11); (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD))(*(_DWORD *)v10 + 20))(v10, a3, &v19, "-o"); v13 = a4; if ( *(_BYTE *)a4 ) { v18 = a4; do { if ( *(_BYTE *)v13 == 45 ) { (*(void (__thiscall **)(void *, _DWORD, char *, int))(*(_DWORD *)v10 + 20))(v10, a3, &v19, v13); v13 = v18; } ++v13; v14 = *(_BYTE *)v13 == 0; v18 = v13; } while ( !v14 ); } v20 = a3; sub_525A30(v16, 8, a2, (int)&v19, v15); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005179A0) -------------------------------------------------------- char __thiscall sub_5179A0(void *this, unsigned __int16 a2, __int16 a3) { void *v3; // esi@1 int (__thiscall *v4)(_DWORD); // eax@1 int (__thiscall *v5)(_DWORD); // eax@2 int v6; // eax@2 int v7; // edi@3 int v8; // eax@3 char v9; // al@6 char v10; // bl@6 char result; // al@6 char v12; // al@7 char v13; // bl@7 __int16 v14; // [sp+14h] [bp-14h]@2 char v15; // [sp+18h] [bp-10h]@3 int v16; // [sp+24h] [bp-4h]@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD))(*((_DWORD *)v3 + 8204) + 8); v16 = 0; if ( a2 < v4((char *)v3 + 32816) && (v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004), v14 = a2 & 0x3FF | 0x2000, v6 = v5(v3), !(unsigned __int8)(*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v6 + 8))(v6, &v14)) && (v7 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8204))( (char *)v3 + 32816, a2), v8 = sub_587680(v3, a3, (int)&v15), v7) && v8 ) { if ( *(_WORD *)(v7 + 8) == -1 ) { v9 = sub_526030(v3, *((_WORD *)v3 + 2), v8, (int)&v15); --dword_750CB8; v10 = v9; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"); result = v10; } else { v12 = sub_533E10(v3, v7, (int)&v14, (void *)v8, (int)&v15); --dword_750CB8; v13 = v12; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"); result = v13; } } else { --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00517B60) -------------------------------------------------------- int __thiscall sub_517B60(void *this, __int16 a2, __int16 a3) { void *v3; // esi@1 void *v4; // eax@1 int v5; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NoticeItemBreak"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NoticeItemBreak"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 12344; *((_WORD *)v4 + 1) = (a2 << 10) ^ a3 & 0x3FF; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NoticeItemBreak : Packet Too Long", 4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NoticeItemBreak"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00517C60) -------------------------------------------------------- int __thiscall sub_517C60(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // ebx@1 signed __int16 v6; // cx@4 __int16 v7; // ax@12 int v8; // esi@15 int v9; // eax@18 int v10; // ecx@20 int v11; // eax@22 int v12; // esi@26 int v13; // eax@27 int v14; // eax@29 void *v15; // eax@31 int v16; // eax@32 int v17; // esi@34 int v18; // eax@35 int v19; // eax@38 int v20; // eax@39 int v21; // eax@40 int v22; // eax@42 int v23; // eax@43 unsigned int v25; // [sp-4h] [bp-BCh]@1 signed int v26; // [sp+10h] [bp-A8h]@23 int v27; // [sp+14h] [bp-A4h]@26 signed int v28; // [sp+18h] [bp-A0h]@32 void *v29; // [sp+1Ch] [bp-9Ch]@1 int v30; // [sp+20h] [bp-98h]@18 int v31; // [sp+24h] [bp-94h]@29 int v32; // [sp+28h] [bp-90h]@15 int v33; // [sp+30h] [bp-88h]@31 int v34; // [sp+30h] [bp-88h]@38 __int16 v35; // [sp+34h] [bp-84h]@37 char v36; // [sp+38h] [bp-80h]@34 int v37; // [sp+40h] [bp-78h]@34 __int16 v38; // [sp+A4h] [bp-14h]@34 char v39; // [sp+A6h] [bp-12h]@34 unsigned int v40; // [sp+A8h] [bp-10h]@1 int v41; // [sp+B4h] [bp-4h]@1 int v42; // [sp+B8h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v25 = (unsigned int)&v42 ^ __security_cookie; v4 = this; v29 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v41 = 0; *(_WORD *)off_849C18 = 12342; if ( !(dword_132447E0 & 1) ) { dword_132447E0 |= 1u; word_132447DC = 6; atexit(nullsub_80); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132447DC) ) { v6 = 6785; goto LABEL_47; } if ( *((_BYTE *)v4 + 7888) & 4 ) { v6 = 6786; goto LABEL_47; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) { v6 = 6794; goto LABEL_47; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v6 = 6787; goto LABEL_47; } if ( *((_WORD *)v4 + 42864) & 0xC ) { v6 = 6788; LABEL_47: *((_WORD *)v5 + 4) = v6; if ( sub_4C81E0(&off_849C18, 10) ) { v11 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v25); goto LABEL_49; } LABEL_25: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_50: --dword_750CB8; goto LABEL_51; } v7 = *(_WORD *)(a2 + 3); if ( (unsigned int)*(_WORD *)(a2 + 3) >> 10 == 8 ) { v32 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, v7 & 0x3FF); v8 = v32; } else { if ( (unsigned int)*(_WORD *)(a2 + 3) >> 10 != 9 ) { v6 = 6789; goto LABEL_47; } v8 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v7 & 0x3FF); v32 = v8; } if ( !v8 || (v9 = sub_44F210((int)&dword_AA0A90, *(_WORD *)(v8 + 8)), (v30 = v9) == 0) || *(_DWORD *)(*(_DWORD *)(v9 + 4) + 36) != 28 ) { v6 = 6790; goto LABEL_47; } v10 = *(_DWORD *)(v8 + 112); if ( !v10 ) { *((_WORD *)v5 + 4) = 6790; if ( !sub_4C81E0(&off_849C18, 10) ) goto LABEL_25; LABEL_22: v11 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v25); LABEL_49: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v11 + 12))(v11, v4); goto LABEL_50; } v26 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 156))(v8); if ( v26 >= *(_WORD *)(*(_DWORD *)(v30 + 4) + 40) ) { *((_WORD *)v5 + 4) = 6791; if ( !sub_4C81E0(&off_849C18, 10) ) goto LABEL_25; goto LABEL_22; } v12 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); v27 = v12; if ( !v12 || (v13 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v12 + 8))) == 0 || *(_DWORD *)(*(_DWORD *)v13 + 374) != 1 || (v14 = sub_44F210((int)&dword_AA0A90, *(_WORD *)(v12 + 8)), (v31 = v14) == 0) || *(_DWORD *)(*(_DWORD *)(v14 + 4) + 36) != 27 || (v15 = sub_63ACA0(dword_1508B168, *(_WORD *)(v12 + 8)), (v33 = (int)v15) == 0) || (v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 28))(v15, v12 + 8), v28 = v16, v16 <= 0) ) { v6 = 6792; goto LABEL_47; } if ( v16 > 1 ) { memcpy(&v36, (const void *)v12, 0x6Cu); v17 = v12 + 108; v38 = *(_WORD *)v17; v39 = *(_BYTE *)(v17 + 2); (*(void (__stdcall **)(int *, int))(*(_DWORD *)v33 + 32))(&v37, v16 - 1); v12 = v27; v4 = v29; } v18 = v26 + *(_WORD *)(*(_DWORD *)(v31 + 4) + 40); if ( v18 > *(_WORD *)(*(_DWORD *)(v30 + 4) + 40) ) v18 = *(_WORD *)(*(_DWORD *)(v30 + 4) + 40); v35 = *(unsigned __int8 *)(a2 + 2) | 0x2400; *(_WORD *)off_849C18 = 13453; *(_DWORD *)((char *)v5 + 2) = *(_DWORD *)v32; *(_DWORD *)((char *)v5 + 6) = *(_DWORD *)(v32 + 4); *((_WORD *)v5 + 5) = *(_WORD *)(a2 + 3); *((_DWORD *)v5 + 3) = v18; *((_WORD *)v5 + 8) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v5 + 18) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 836))(v4, v25); *(_DWORD *)((char *)v5 + 22) = *(_DWORD *)v12; *(_DWORD *)((char *)v5 + 26) = *(_DWORD *)(v12 + 4); *((_WORD *)v5 + 15) = *(_WORD *)v31; *((_WORD *)v5 + 17) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( v28 > 1 ) { *((_WORD *)v5 + 16) = 35; *((_BYTE *)v5 + 36) = 0; v34 = sub_63D0C0(&v36, v33, v37, (int)((char *)v5 + 37)) - (_DWORD)((char *)v5 + 37); v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v20 + 64))( v20, *((_WORD *)v5 + 17), v12, &v36, &v35, &v35); } else { *((_WORD *)v5 + 16) = 0; *((_BYTE *)v5 + 36) = 1; v34 = 0; v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v19 + 48))( v19, *((_WORD *)v5 + 17), v12, &v35, &v35); } v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v21 + 44))(v21); if ( sub_4C81E0(&off_849C18, v34 + 37) ) { v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", v34 + 37); } v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v23 + 4); --dword_750CB8; LABEL_51: v41 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // 132447DC: using guessed type __int16 word_132447DC; // 132447E0: using guessed type int dword_132447E0; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00518200) -------------------------------------------------------- int __thiscall sub_518200(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // ebx@1 signed __int16 v6; // cx@4 __int16 v7; // ax@12 int v8; // esi@15 int v9; // ecx@19 int v10; // eax@21 int v11; // esi@25 int v12; // eax@26 int v13; // eax@28 void *v14; // eax@30 int v15; // eax@31 int v16; // esi@33 int v17; // eax@34 int v18; // eax@37 int v19; // eax@38 int v20; // eax@39 int v21; // eax@41 int v22; // eax@42 unsigned int v24; // [sp-4h] [bp-BCh]@1 signed int v25; // [sp+10h] [bp-A8h]@22 int v26; // [sp+14h] [bp-A4h]@25 signed int v27; // [sp+18h] [bp-A0h]@31 void *v28; // [sp+1Ch] [bp-9Ch]@1 int v29; // [sp+20h] [bp-98h]@18 int v30; // [sp+24h] [bp-94h]@28 int v31; // [sp+28h] [bp-90h]@15 int v32; // [sp+30h] [bp-88h]@30 int v33; // [sp+30h] [bp-88h]@37 __int16 v34; // [sp+34h] [bp-84h]@36 char v35; // [sp+38h] [bp-80h]@33 int v36; // [sp+40h] [bp-78h]@33 __int16 v37; // [sp+A4h] [bp-14h]@33 char v38; // [sp+A6h] [bp-12h]@33 unsigned int v39; // [sp+A8h] [bp-10h]@1 int v40; // [sp+B4h] [bp-4h]@1 int v41; // [sp+B8h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v24 = (unsigned int)&v41 ^ __security_cookie; v4 = this; v28 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v40 = 0; *(_WORD *)off_849C18 = 12389; if ( !(dword_132447E8 & 1) ) { dword_132447E8 |= 1u; word_132447E4 = 6; atexit(nullsub_81); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132447E4) ) { v6 = 6785; goto LABEL_46; } if ( *((_BYTE *)v4 + 7888) & 4 ) { v6 = 6786; goto LABEL_46; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) { v6 = 6794; goto LABEL_46; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v6 = 6787; goto LABEL_46; } if ( *((_WORD *)v4 + 42864) & 0xC ) { v6 = 6788; LABEL_46: *((_WORD *)v5 + 4) = v6; if ( sub_4C81E0(&off_849C18, 10) ) { v10 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v24); goto LABEL_48; } LABEL_24: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_49: --dword_750CB8; goto LABEL_50; } v7 = *(_WORD *)(a2 + 3); if ( (unsigned int)*(_WORD *)(a2 + 3) >> 10 == 8 ) { v31 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, v7 & 0x3FF); v8 = v31; } else { if ( (unsigned int)*(_WORD *)(a2 + 3) >> 10 != 9 ) { v6 = 6789; goto LABEL_46; } v8 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v7 & 0x3FF); v31 = v8; } if ( !v8 || (v29 = sub_44F210((int)&dword_AA0A90, *(_WORD *)(v8 + 8)), *(_DWORD *)(*(_DWORD *)(v29 + 4) + 36) != 28) ) { v6 = 6790; goto LABEL_46; } v9 = *(_DWORD *)(v8 + 112); if ( !v9 ) { *((_WORD *)v5 + 4) = 6790; if ( !sub_4C81E0(&off_849C18, 10) ) goto LABEL_24; LABEL_21: v10 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v24); LABEL_48: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v10 + 12))(v10, v4); goto LABEL_49; } v25 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 156))(v8); if ( v25 >= *(_WORD *)(*(_DWORD *)(v29 + 4) + 40) ) { *((_WORD *)v5 + 4) = 6791; if ( !sub_4C81E0(&off_849C18, 10) ) goto LABEL_24; goto LABEL_21; } v11 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); v26 = v11; if ( !v11 || (v12 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v11 + 8))) == 0 || *(_DWORD *)(*(_DWORD *)v12 + 374) != 1 || (v13 = sub_44F210((int)&dword_AA0A90, *(_WORD *)(v11 + 8)), (v30 = v13) == 0) || *(_DWORD *)(*(_DWORD *)(v13 + 4) + 36) != 27 || (v14 = sub_63ACA0(dword_1508B168, *(_WORD *)(v11 + 8)), (v32 = (int)v14) == 0) || (v15 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v14 + 28))(v14, v11 + 8), v27 = v15, v15 <= 0) ) { v6 = 6792; goto LABEL_46; } if ( v15 > 1 ) { memcpy(&v35, (const void *)v11, 0x6Cu); v16 = v11 + 108; v37 = *(_WORD *)v16; v38 = *(_BYTE *)(v16 + 2); (*(void (__stdcall **)(int *, int))(*(_DWORD *)v32 + 32))(&v36, v15 - 1); v11 = v26; v4 = v28; } v17 = v25 + *(_WORD *)(*(_DWORD *)(v30 + 4) + 40); if ( v17 > *(_WORD *)(*(_DWORD *)(v29 + 4) + 40) ) v17 = *(_WORD *)(*(_DWORD *)(v29 + 4) + 40); v34 = *(unsigned __int8 *)(a2 + 2) | 0x2400; *(_WORD *)off_849C18 = 13510; *(_DWORD *)((char *)v5 + 2) = *(_DWORD *)v31; *(_DWORD *)((char *)v5 + 6) = *(_DWORD *)(v31 + 4); *((_WORD *)v5 + 5) = *(_WORD *)(a2 + 3); *((_DWORD *)v5 + 3) = v17; *((_WORD *)v5 + 8) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v5 + 18) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 836))(v4, v24); *(_DWORD *)((char *)v5 + 22) = *(_DWORD *)v11; *(_DWORD *)((char *)v5 + 26) = *(_DWORD *)(v11 + 4); *((_WORD *)v5 + 15) = *(_WORD *)v30; *((_WORD *)v5 + 17) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( v27 > 1 ) { *((_WORD *)v5 + 16) = 35; *((_BYTE *)v5 + 36) = 0; v33 = sub_63D0C0(&v35, v32, v36, (int)((char *)v5 + 37)) - (_DWORD)((char *)v5 + 37); v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v19 + 64))( v19, *((_WORD *)v5 + 17), v11, &v35, &v34, &v34); } else { *((_WORD *)v5 + 16) = 0; *((_BYTE *)v5 + 36) = 1; v33 = 0; v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v18 + 48))( v18, *((_WORD *)v5 + 17), v11, &v34, &v34); } v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v20 + 44))(v20); if ( sub_4C81E0(&off_849C18, v33 + 37) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ : Packet Too Long", v33 + 37); } v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v22 + 4); --dword_750CB8; LABEL_50: v40 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // 132447E4: using guessed type __int16 word_132447E4; // 132447E8: using guessed type int dword_132447E8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00518790) -------------------------------------------------------- int __stdcall sub_518790(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005187E0) -------------------------------------------------------- int __stdcall sub_5187E0(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 int v4; // eax@6 int v6; // [sp-8h] [bp-28h]@7 int v7; // [sp-4h] [bp-24h]@7 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( !v2 || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) != *(_DWORD *)(a1 + 4) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v7 = 0; v6 = (int)"gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK Null Char Handle"; goto LABEL_9; } if ( 8512 == *(_WORD *)(a1 + 10) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) goto LABEL_10; v7 = 0; v6 = (int)"gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK Not Free"; LABEL_9: sub_639100(&unk_86DDD8, v6, v7); goto LABEL_10; } v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); LABEL_10: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00518910) -------------------------------------------------------- int __stdcall sub_518910(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_WEAPONENDURE_CHARGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_WEAPONENDURE_CHARGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2548))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_WEAPONENDURE_CHARGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00518A00) -------------------------------------------------------- int __stdcall sub_518A00(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00518A50) -------------------------------------------------------- int __thiscall sub_518A50(void *this, int a2) { void *v2; // edi@1 void *v3; // ebx@1 int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@2 int v7; // eax@4 int v8; // eax@5 __time32_t v9; // eax@6 __time32_t v10; // ebx@6 FILE *v11; // eax@8 __int16 v12; // ax@11 signed int v13; // ebx@12 int v14; // eax@15 int v15; // ecx@20 void *v16; // eax@21 int v18; // [sp+28h] [bp+8h]@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v4 = a2; *(_WORD *)off_849C18 = 12342; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a2 + 22) != 6784 ) { v6 = v5(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 40))(v6, *(_WORD *)(a2 + 6)); *((_WORD *)v3 + 4) = *(_WORD *)(a2 + 22); if ( !sub_4C81E0(&off_849C18, 10) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"); } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); goto LABEL_24; } v8 = v5(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v8 + 28))( v8, v2, *(_WORD *)(a2 + 6), 0) ) { v18 = *(_WORD *)(a2 + 6); v9 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck : "); v10 = v9; if ( byte_7493ED ) { if ( *(_BYTE *)(v9 + 644) ) { sub_418E40(v9); v11 = *(FILE **)(v10 + 256); if ( v11 ) fprintf(v11, "%d", v18); } } sub_418F20(v10, (int)&unk_13359E04); } v12 = *(_WORD *)(v4 + 16); if ( (unsigned int)*(_WORD *)(v4 + 16) >> 10 == 8 ) { v14 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, v12 & 0x3FF); v13 = 1; } else { v13 = 1; if ( (unsigned int)*(_WORD *)(v4 + 16) >> 10 != 9 ) { sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck : Invalid location", (unsigned int)*(_WORD *)(v4 + 16) >> 10, *(_WORD *)(v4 + 16) & 0x3FF); goto LABEL_14; } v14 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9121))( (char *)v2 + 36484, v12 & 0x3FF); } if ( *(_DWORD *)v14 != *(_DWORD *)(v4 + 8) || *(_DWORD *)(v14 + 4) != *(_DWORD *)(v4 + 12) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck : weaponkey wrong", 0); dword_750CB8 -= v13; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"); } v15 = *(_DWORD *)(v14 + 112); if ( v15 ) { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v15 + 160))(v14, *(_DWORD *)(v4 + 18)); v16 = off_849C18; *(_WORD *)off_849C18 = 12342; *((_WORD *)v16 + 4) = 6784; *((_WORD *)v16 + 3) = *(_WORD *)(v4 + 16); *(_DWORD *)((char *)v16 + 2) = *(_DWORD *)(v4 + 18); if ( !sub_4C81E0(&off_849C18, 26) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 26); goto LABEL_25; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); LABEL_24: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); goto LABEL_25; } LABEL_14: dword_750CB8 -= v13; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00518CF0) -------------------------------------------------------- int __thiscall sub_518CF0(void *this) { void *v1; // esi@1 void *v2; // eax@3 int v3; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(*((_DWORD *)v1 + 40228) + 10) < (unsigned int)&unk_5F5E100 ) { v2 = off_849C18; *(_WORD *)off_849C18 = 12343; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)(*((_DWORD *)v1 + 40228) + 10); if ( sub_4C81E0(&off_849C18, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 6); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00518E00) -------------------------------------------------------- int __thiscall sub_518E00(void *this) { void *v1; // esi@1 void *v2; // eax@3 int v3; // ecx@3 int v4; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(*((_DWORD *)v1 + 40228) + 10) < (unsigned int)&unk_5F5E100 ) { v2 = off_849C18; *(_WORD *)off_849C18 = 13455; v3 = *((_DWORD *)v1 + 40228); *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)v3; *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(v3 + 4); *(_DWORD *)((char *)v2 + 10) = *(_DWORD *)(*((_DWORD *)v1 + 40228) + 10); if ( sub_4C81E0(&off_849C18, 14) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 14); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00518F20) -------------------------------------------------------- int __stdcall sub_518F20(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SHIELDENDURE_CHARGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SHIELDENDURE_CHARGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2552))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SHIELDENDURE_CHARGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00519010) -------------------------------------------------------- int __stdcall sub_519010(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_ShieldEndureChangeAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_ShieldEndureChangeAck"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_ShieldEndureChangeAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00519060) -------------------------------------------------------- int __thiscall sub_519060(void *this, int a2) { void *v2; // edi@1 void *v3; // ebx@1 int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@2 int v7; // eax@4 int v8; // eax@5 __time32_t v9; // eax@6 __time32_t v10; // ebx@6 FILE *v11; // eax@8 __int16 v12; // ax@11 signed int v13; // ebx@12 int v14; // eax@15 int v15; // ecx@20 void *v16; // eax@21 int v18; // [sp+28h] [bp+8h]@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v4 = a2; *(_WORD *)off_849C18 = 12389; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a2 + 22) != 6784 ) { v6 = v5(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 40))(v6, *(_WORD *)(a2 + 6)); *((_WORD *)v3 + 4) = *(_WORD *)(a2 + 22); if ( !sub_4C81E0(&off_849C18, 10) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck"); } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); goto LABEL_24; } v8 = v5(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v8 + 28))( v8, v2, *(_WORD *)(a2 + 6), 0) ) { v18 = *(_WORD *)(a2 + 6); v9 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck : "); v10 = v9; if ( byte_7493ED ) { if ( *(_BYTE *)(v9 + 644) ) { sub_418E40(v9); v11 = *(FILE **)(v10 + 256); if ( v11 ) fprintf(v11, "%d", v18); } } sub_418F20(v10, (int)&unk_13359E04); } v12 = *(_WORD *)(v4 + 16); if ( (unsigned int)*(_WORD *)(v4 + 16) >> 10 == 8 ) { v14 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))( (char *)v2 + 32816, v12 & 0x3FF); v13 = 1; } else { v13 = 1; if ( (unsigned int)*(_WORD *)(v4 + 16) >> 10 != 9 ) { sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck : Invalid location", (unsigned int)*(_WORD *)(v4 + 16) >> 10, *(_WORD *)(v4 + 16) & 0x3FF); goto LABEL_14; } v14 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9121))( (char *)v2 + 36484, v12 & 0x3FF); } if ( *(_DWORD *)v14 != *(_DWORD *)(v4 + 8) || *(_DWORD *)(v14 + 4) != *(_DWORD *)(v4 + 12) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck : shieldkey wrong", 0); dword_750CB8 -= v13; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck"); } v15 = *(_DWORD *)(v14 + 112); if ( v15 ) { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v15 + 160))(v14, *(_DWORD *)(v4 + 18)); v16 = off_849C18; *(_WORD *)off_849C18 = 12389; *((_WORD *)v16 + 4) = 6784; *((_WORD *)v16 + 3) = *(_WORD *)(v4 + 16); *(_DWORD *)((char *)v16 + 2) = *(_DWORD *)(v4 + 18); if ( !sub_4C81E0(&off_849C18, 26) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SHIELDENDURE_CHARGE_REQ : Packet Too Long", 26); goto LABEL_25; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); LABEL_24: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); goto LABEL_25; } LABEL_14: dword_750CB8 -= v13; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ShieldEndureChangeAck"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00519300) -------------------------------------------------------- int __thiscall sub_519300(void *this) { void *v1; // esi@1 void *v2; // eax@3 int v3; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease_ToClient"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease_ToClient"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(*((_DWORD *)v1 + 40229) + 10) < (unsigned int)&unk_5F5E100 ) { v2 = off_849C18; *(_WORD *)off_849C18 = 12390; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)(*((_DWORD *)v1 + 40229) + 10); if ( sub_4C81E0(&off_849C18, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease : Packet Too Long", 6); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease_ToClient"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00519410) -------------------------------------------------------- int __thiscall sub_519410(void *this) { void *v1; // esi@1 void *v2; // eax@3 int v3; // ecx@3 int v4; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease_ToDB"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease_ToDB"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(*((_DWORD *)v1 + 40229) + 10) < (unsigned int)&unk_5F5E100 ) { v2 = off_849C18; *(_WORD *)off_849C18 = 13512; v3 = *((_DWORD *)v1 + 40229); *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)v3; *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(v3 + 4); *(_DWORD *)((char *)v2 + 10) = *(_DWORD *)(*((_DWORD *)v1 + 40229) + 10); if ( sub_4C81E0(&off_849C18, 14) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease : Packet Too Long", 14); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CostumShieldChargeDecrease_ToDB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00519530) -------------------------------------------------------- int __stdcall sub_519530(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_InvenWrite"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_InvenWrite"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_InvenWrite"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00519580) -------------------------------------------------------- int __thiscall sub_519580(void *this, int a2) { unsigned int v2; // ST14_4@1 void *v3; // esi@1 int (__stdcall *v4)(_DWORD); // eax@1 int v5; // ebx@1 int v6; // eax@4 unsigned int v7; // ecx@5 int v8; // edx@6 int v9; // esi@7 int v10; // edx@8 int v11; // ecx@8 void *v12; // esi@9 int (*v13)(void); // edx@12 int v15; // esi@19 int v16; // eax@20 int v17; // eax@21 int v18; // [sp-4h] [bp-148h]@3 int (**v19)(); // [sp+10h] [bp-134h]@1 char *v20; // [sp+14h] [bp-130h]@1 int v21; // [sp+18h] [bp-12Ch]@1 int v22; // [sp+1Ch] [bp-128h]@1 int (**v23)(); // [sp+20h] [bp-124h]@12 char *v24; // [sp+24h] [bp-120h]@12 int v25; // [sp+28h] [bp-11Ch]@12 int v26; // [sp+2Ch] [bp-118h]@12 void *v27; // [sp+30h] [bp-114h]@1 char v28; // [sp+34h] [bp-110h]@22 char v29; // [sp+B4h] [bp-90h]@9 unsigned int v30; // [sp+134h] [bp-10h]@1 int v31; // [sp+140h] [bp-4h]@1 int v32; // [sp+144h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v2 = (unsigned int)&v32 ^ __security_cookie; v3 = this; v27 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InvenWrite"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; dword_750AB8[dword_750CB8++] = -1; v19 = &off_6A86A4; v20 = (char *)v3 + 36484; v4 = *(int (__stdcall **)(_DWORD))(*((_DWORD *)v3 + 9121) + 8); v5 = 0; v31 = 0; v22 = v4(v2); v19 = (int (**)())&off_6A86AC; LOBYTE(v31) = 1; v21 = 0; if ( (unsigned __int8)off_6A86AC(&v19) || sub_63F7F0(&v19) ) { do { v6 = (**(int (__stdcall ***)(_DWORD))v20)(v21); if ( v6 == v5 || (v7 = *(_WORD *)(v6 + 8), v7 >= dword_14D20894) || (v8 = dword_14D21184 + 40 * v7, v8 == v5) || (v9 = *(_DWORD *)v8, *(_DWORD *)v8 == v5) ) goto LABEL_16; v10 = *(_WORD *)v9; v11 = v10 + 10000 * v7; v5 = 0; if ( !((_WORD)v10 == *(_WORD *)(v6 + 8)) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v11); LABEL_16: v19 = &off_6A86A4; goto LABEL_17; } sprintf(&v29, " Inv %3d %I64u %.40s", v21, *(_DWORD *)v6, *(_DWORD *)(v6 + 4), v9 + 2); v12 = v27; if ( !a2 ) (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v27 + 1924))(v27, &v29); } while ( sub_63F7F0(&v19) ); v23 = &off_6A86A4; v24 = (char *)v12 + 32816; v13 = *(int (**)(void))(*((_DWORD *)v12 + 8204) + 8); LOBYTE(v31) = 0; v26 = v13(); v23 = (int (**)())&off_6A86AC; LOBYTE(v31) = 2; v25 = 0; if ( (unsigned __int8)off_6A86AC(&v23) || sub_63F7F0(&v23) ) { do { v15 = (**(int (__stdcall ***)(_DWORD))v24)(v25); if ( !v15 ) break; v16 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v15 + 8)); if ( !v16 ) break; v17 = *(_DWORD *)v16; if ( !v17 ) break; sprintf(&v28, " Equ %3d %I64u %.40s", v25, *(_DWORD *)v15, *(_DWORD *)(v15 + 4), v17 + 2); if ( !a2 ) (*(void (__stdcall **)(char *))(*(_DWORD *)v27 + 1924))(&v28); } while ( sub_63F7F0(&v23) ); v23 = &off_6A86A4; } else { v23 = &off_6A86A4; } LABEL_17: v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; } else { v19 = &off_6A86A4; v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; } --dword_750CB8; v31 = -1; return sub_467660((int)&unk_D020420, v18); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00519880) -------------------------------------------------------- int __thiscall sub_519880(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // ebx@1 signed __int16 v6; // cx@7 signed __int16 v7; // ax@14 int v8; // eax@17 int v9; // eax@21 int v10; // esi@21 int v11; // eax@22 int v12; // eax@25 int v13; // eax@27 signed __int16 v14; // dx@29 int v15; // eax@32 int v16; // eax@35 void *v17; // eax@37 int v18; // esi@40 __int16 v19; // ax@41 __int16 v20; // ax@41 bool v21; // zf@41 int v22; // edx@41 int v23; // eax@42 int v24; // eax@43 int v25; // eax@44 int v26; // eax@46 int v27; // eax@47 int v28; // eax@53 unsigned int v30; // [sp-4h] [bp-B4h]@1 int v31; // [sp+10h] [bp-A0h]@25 void *v32; // [sp+14h] [bp-9Ch]@1 int v33; // [sp+18h] [bp-98h]@37 int v34; // [sp+1Ch] [bp-94h]@21 int v35; // [sp+24h] [bp-8Ch]@12 int v36; // [sp+24h] [bp-8Ch]@22 int v37; // [sp+28h] [bp-88h]@12 signed int v38; // [sp+28h] [bp-88h]@35 int v39; // [sp+28h] [bp-88h]@42 __int16 v40; // [sp+2Ch] [bp-84h]@41 char v41; // [sp+30h] [bp-80h]@40 char v42; // [sp+38h] [bp-78h]@40 __int16 v43; // [sp+9Ch] [bp-14h]@40 char v44; // [sp+9Eh] [bp-12h]@40 unsigned int v45; // [sp+A0h] [bp-10h]@1 int v46; // [sp+ACh] [bp-4h]@1 int v47; // [sp+B0h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v30 = (unsigned int)&v47 ^ __security_cookie; v4 = this; v32 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v46 = 0; *(_WORD *)off_849C18 = -19437; if ( !(dword_132447F0 & 1) ) { dword_132447F0 |= 1u; word_132447EC = 70; atexit(nullsub_82); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132447EC) || *((_BYTE *)v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) goto LABEL_59; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 8370; LABEL_50: *((_WORD *)v5 + 1) = v6; goto LABEL_51; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v6 = 8372; goto LABEL_50; } if ( *((_WORD *)v4 + 42864) & 0xC ) { *((_WORD *)v5 + 1) = 8369; LABEL_51: if ( sub_4C81E0(&off_849C18, 6) ) { v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v28 + 12))(v28, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", 6); } v46 = -1; goto LABEL_55; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2532))(v4) ) { LABEL_59: v6 = 8369; goto LABEL_50; } v35 = *(_BYTE *)(a2 + 2); v37 = *(_BYTE *)(a2 + 2); if ( v37 >= (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 9121) + 8))((char *)v4 + 36484) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : wrong slot", v35); goto LABEL_14; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int, _DWORD))(*((_DWORD *)v4 + 14672) + 4))( (char *)v4 + 58688, 9, v37, *((_WORD *)v4 + 80389)) ) { v7 = 8372; goto LABEL_15; } v9 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); v10 = v9; v34 = v9; if ( !v9 ) { LABEL_14: v7 = 8371; LABEL_15: *((_WORD *)v5 + 1) = v7; goto LABEL_16; } v11 = *(_WORD *)(v9 + 8); v36 = v11; if ( (_WORD)v11 == -1 ) { *((_WORD *)v5 + 1) = 8371; if ( !sub_4C81E0(&off_849C18, 6) ) goto LABEL_31; LABEL_24: v8 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v30); goto LABEL_18; } v12 = sub_418CB0((int)&dword_14D20890, v11); v31 = v12; if ( !v12 ) { *((_WORD *)v5 + 1) = 8371; LABEL_16: if ( sub_4C81E0(&off_849C18, 6) ) { v8 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v30); LABEL_18: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 12))(v8, v4); v46 = -1; LABEL_55: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"); } LABEL_31: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", 6); v46 = -1; goto LABEL_55; } v13 = *(_DWORD *)(*(_DWORD *)v12 + 374); if ( v13 != 4 && v13 != 5 ) { v14 = 6776; goto LABEL_30; } v15 = sub_418CB0((int)&dword_14D20890, v36); if ( !v15 || !*(_DWORD *)v15 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Try to use empty char id change item cell", 0); v14 = 8374; goto LABEL_30; } v16 = (*(int (__stdcall **)(int))(**(_DWORD **)(v10 + 112) + 28))(v10 + 8); v38 = v16; if ( v16 <= 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Try to use lot 0 item", v16 > 0); v14 = 8373; goto LABEL_30; } v17 = sub_63ACA0(dword_1508B168, v36); v33 = (int)v17; if ( !v17 ) { v14 = 8371; LABEL_30: *((_WORD *)v5 + 1) = v14; if ( !sub_4C81E0(&off_849C18, 6) ) goto LABEL_31; goto LABEL_24; } if ( v38 > 1 ) { memcpy(&v41, (const void *)v10, 0x6Cu); v18 = v10 + 108; v43 = *(_WORD *)v18; v44 = *(_BYTE *)(v18 + 2); (*(void (__thiscall **)(void *, char *, int))(*(_DWORD *)v17 + 32))(v17, &v42, v38 - 1); v10 = v34; v4 = v32; } v40 = *(unsigned __int8 *)(a2 + 2) | 0x2400; *(_WORD *)off_849C18 = -19439; *(_DWORD *)((char *)v5 + 2) = *(_DWORD *)v10; v19 = *((_WORD *)v5 + 5); *(_DWORD *)((char *)v5 + 6) = *(_DWORD *)(v10 + 4); v20 = v19 & 0x3FF | 0x2400; *((_WORD *)v5 + 5) = v20; *((_WORD *)v5 + 5) = v20 ^ (v20 ^ *(_BYTE *)(a2 + 2)) & 0x3FF; v21 = *(_DWORD *)(*(_DWORD *)v31 + 374) == 4; *(_WORD *)((char *)v5 + 13) = v36; *((_BYTE *)v5 + 12) = !v21; *(_DWORD *)((char *)v5 + 15) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 840))(v4, v30); *(_WORD *)((char *)v5 + 19) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v5 + 21) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((char *)v5 + 25) = *(_DWORD *)v10; v22 = *(_DWORD *)(v10 + 4); *(_WORD *)((char *)v5 + 33) = v36; *(_DWORD *)((char *)v5 + 29) = v22; *(_WORD *)((char *)v5 + 37) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( v38 > 1 ) { *(_WORD *)((char *)v5 + 35) = 38; *((_BYTE *)v5 + 39) = 0; v39 = sub_63D0C0(&v41, v33, v36, (int)((char *)v5 + 40)) - (_DWORD)((char *)v5 + 40); v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v24 + 64))( v24, *(_WORD *)((char *)v5 + 37), v10, &v41, &v40, &v40); } else { *(_WORD *)((char *)v5 + 35) = 0; *((_BYTE *)v5 + 39) = 1; v39 = 0; v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v23 + 48))( v23, *(_WORD *)((char *)v5 + 37), v10, &v40, &v40); } v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v25 + 44))(v25); if ( sub_4C81E0(&off_849C18, v39 + 40) ) { v26 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v26); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", v39 + 40); } v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v27 + 4); --dword_750CB8; v46 = -1; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132447EC: using guessed type __int16 word_132447EC; // 132447F0: using guessed type int dword_132447F0; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00519EC0) -------------------------------------------------------- int __stdcall sub_519EC0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_USER_CONNECTION_DB_CHANGE_CHAR_ID_ITEM_USE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_USER_CONNECTION_DB_CHANGE_CHAR_ID_ITEM_USE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2556))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_USER_CONNECTION_DB_CHANGE_CHAR_ID_ITEM_USE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00519FB0) -------------------------------------------------------- int __stdcall sub_519FB0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051A000) -------------------------------------------------------- int __thiscall sub_51A000(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD); // edx@1 int v5; // eax@2 int v6; // eax@3 __time32_t v7; // eax@4 __time32_t v8; // ebx@4 FILE *v9; // eax@6 void *v10; // eax@9 int v11; // eax@11 int v13; // [sp+28h] [bp+8h]@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a2 + 6) == 8368 ) { v6 = v4(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v2, *(_WORD *)(a2 + 8), 0) ) { v13 = *(_WORD *)(a2 + 8); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck : "); v8 = v7; if ( byte_7493ED ) { if ( *(_BYTE *)(v7 + 644) ) { sub_418E40(v7); v9 = *(FILE **)(v8 + 256); if ( v9 ) fprintf(v9, "%d", v13); } } sub_418F20(v8, (int)&unk_13359E04); } } else { v5 = v4(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *(_WORD *)(a2 + 8)); } v10 = off_849C18; *(_WORD *)off_849C18 = -19437; *((_WORD *)v10 + 1) = *(_WORD *)(v3 + 6); *((_WORD *)v10 + 2) = *(_WORD *)(v3 + 10); if ( sub_4C81E0(&off_849C18, 6) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051A190) -------------------------------------------------------- int __thiscall sub_51A190(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 bool v5; // zf@1 void *v6; // edi@1 int v7; // eax@5 signed __int16 v8; // ax@16 unsigned __int16 v9; // ax@17 signed __int16 v10; // dx@22 unsigned __int16 v11; // ax@32 int v12; // ecx@38 void *v13; // esi@46 int v14; // esi@46 int (__thiscall *v15)(_DWORD, _DWORD); // edx@46 int v16; // eax@46 int v17; // edx@46 int v18; // eax@46 int v19; // edx@46 void (__stdcall *v20)(_DWORD, _DWORD); // edx@47 int v21; // eax@47 int v22; // eax@48 int v23; // eax@49 int v24; // eax@51 int v25; // eax@52 unsigned int v27; // [sp-4h] [bp-130h]@1 unsigned __int16 v28; // [sp+10h] [bp-11Ch]@17 unsigned __int16 v29; // [sp+14h] [bp-118h]@32 int v30; // [sp+18h] [bp-114h]@38 int v31; // [sp+1Ch] [bp-110h]@34 int v32; // [sp+20h] [bp-10Ch]@25 int v33; // [sp+24h] [bp-108h]@40 __int16 v34; // [sp+28h] [bp-104h]@46 int v35; // [sp+2Ch] [bp-100h]@19 int v36; // [sp+30h] [bp-FCh]@30 int v37; // [sp+34h] [bp-F8h]@15 __int16 v38; // [sp+38h] [bp-F4h]@46 char v39; // [sp+3Ch] [bp-F0h]@47 char v40; // [sp+44h] [bp-E8h]@47 __int16 v41; // [sp+A8h] [bp-84h]@47 char v42; // [sp+AAh] [bp-82h]@47 char v43; // [sp+ACh] [bp-80h]@49 __int16 v44; // [sp+118h] [bp-14h]@49 char v45; // [sp+11Ah] [bp-12h]@49 unsigned int v46; // [sp+11Ch] [bp-10h]@1 int v47; // [sp+128h] [bp-4h]@1 int v48; // [sp+12Ch] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v27 = (unsigned int)&v48 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (dword_132447F8 & 1) == 0; v6 = off_849C18; v47 = 0; *(_DWORD *)off_849C18 = 679489609; if ( v5 ) { dword_132447F8 |= 1u; word_132447F4 = 6; atexit(nullsub_83); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132447F4) ) { *((_WORD *)v6 + 1) = 10370; if ( sub_4C81E0(&off_849C18, 4) ) { LABEL_5: v7 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v27); LABEL_57: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v7 + 12))(v7, v4); goto LABEL_58; } LABEL_24: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long", 4); LABEL_58: --dword_750CB8; goto LABEL_59; } if ( *((_BYTE *)v4 + 7888) & 4 ) { *((_WORD *)v6 + 1) = 10373; goto LABEL_55; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) { *((_WORD *)v6 + 1) = 10374; goto LABEL_55; } if ( !*(_DWORD *)((char *)v4 + 122) ) { *((_WORD *)v6 + 1) = 10371; goto LABEL_55; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *((_WORD *)v6 + 1) = 10372; goto LABEL_55; } if ( *((_WORD *)v4 + 42864) & 0xC ) { v8 = 10375; goto LABEL_54; } v37 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 3)); if ( !v37 ) { v8 = 10376; LABEL_54: *((_WORD *)v6 + 1) = v8; LABEL_55: if ( sub_4C81E0(&off_849C18, 4) ) { v7 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v27); goto LABEL_57; } goto LABEL_24; } v9 = *(_WORD *)(v37 + 8); v28 = v9; if ( v9 == -1 ) { v8 = 10378; goto LABEL_54; } v35 = sub_418CB0((int)&dword_14D20890, v9); if ( !v35 ) { *((_WORD *)v6 + 1) = 10378; goto LABEL_55; } if ( !*(_DWORD *)v35 || (v32 = *(_DWORD *)(v37 + 112)) == 0 ) { v10 = 10378; goto LABEL_23; } if ( !sub_62EFA0(&dword_1508B5A8, *(_DWORD *)(*(_DWORD *)v35 + 274)) ) { v10 = 10380; goto LABEL_23; } if ( !(*(int (__stdcall **)(int))(*(_DWORD *)v32 + 164))(v37) ) { v8 = 10381; goto LABEL_54; } v36 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); if ( !v36 ) { v8 = 10377; goto LABEL_54; } v11 = *(_WORD *)(v36 + 8); v29 = v11; if ( v11 == -1 ) { v10 = 10379; goto LABEL_23; } v31 = sub_418CB0((int)&dword_14D20890, v11); if ( !v31 ) { *((_WORD *)v6 + 1) = 10379; goto LABEL_55; } if ( !*(_DWORD *)v31 ) { v10 = 10379; goto LABEL_23; } v12 = *(_DWORD *)(v36 + 112); v30 = v12; if ( !v12 ) { v10 = 10379; goto LABEL_23; } v33 = (*(int (__stdcall **)(int))(*(_DWORD *)v12 + 28))(v36 + 8); if ( v33 <= 0 ) { v8 = 10379; goto LABEL_54; } if ( *(_DWORD *)(*(_DWORD *)v31 + 374) != 6 ) { v10 = 10382; LABEL_23: *((_WORD *)v6 + 1) = v10; if ( sub_4C81E0(&off_849C18, 4) ) goto LABEL_5; goto LABEL_24; } if ( *(_DWORD *)(*(_DWORD *)v31 + 131) != *(_DWORD *)(*(_DWORD *)v35 + 131) ) { *((_WORD *)v6 + 1) = 10383; goto LABEL_55; } v34 = *(unsigned __int8 *)(a2 + 3) | 0x2400; v13 = off_849C18; v38 = *(unsigned __int8 *)(a2 + 2) | 0x2400; *(_WORD *)v6 = 13478; v14 = (int)((char *)v13 + 2); *(_WORD *)v14 = *((_WORD *)v4 + 2); v15 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 836); v35 = v14; *(_DWORD *)(v14 + 2) = v15(v4, v27); *(_WORD *)(v14 + 6) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); v16 = v37; *(_DWORD *)(v14 + 8) = *(_DWORD *)v37; v17 = *(_DWORD *)(v16 + 4); *(_WORD *)(v14 + 16) = v28; v18 = v36; *(_DWORD *)(v14 + 12) = v17; *(_DWORD *)(v14 + 18) = *(_DWORD *)v18; v19 = *(_DWORD *)(v18 + 4); *(_WORD *)(v14 + 26) = v29; *(_DWORD *)(v14 + 22) = v19; *(_DWORD *)(v14 + 28) = v33; if ( v33 <= 1 ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v22 + 48))( v22, *(_WORD *)(v14 + 6), v36, &v38, &v38); } else { memcpy(&v39, (const void *)v36, 0x6Cu); v20 = *(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v30 + 32); v41 = *(_WORD *)(v36 + 108); v42 = *(_BYTE *)(v36 + 110); v20(&v40, v33 - 1); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v21 + 64))( v21, *(_WORD *)(v35 + 6), v36, &v39, &v38, &v38); } memcpy(&v43, (const void *)v37, 0x6Cu); v44 = *(_WORD *)(v37 + 108); v45 = *(_BYTE *)(v37 + 110); (*(void (__stdcall **)(char *))(*(_DWORD *)v32 + 168))(&v43); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v23 + 64))( v23, *(_WORD *)(v35 + 6), v37, &v43, &v34, &v34); if ( sub_4C81E0(&off_849C18, 34) ) { v24 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v24); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long", 34); } v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v25 + 4); --dword_750CB8; LABEL_59: v47 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132447F4: using guessed type __int16 word_132447F4; // 132447F8: using guessed type int dword_132447F8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0051A780) -------------------------------------------------------- int __stdcall sub_51A780(int a1, int a2) { __int16 v2; // ST38_2@1 int v3; // edi@1 void *v4; // eax@2 int v5; // eax@4 int (__thiscall *v6)(_DWORD); // eax@5 int v7; // eax@6 char *v8; // eax@8 int v9; // ST38_4@10 int v10; // ecx@10 int v11; // ST34_4@10 int v12; // ST30_4@10 int v13; // ST2C_4@10 int v14; // ST28_4@10 int v15; // ST24_4@10 int v16; // ST20_4@10 int v17; // ST18_4@10 int v18; // ST14_4@10 int v19; // ST08_4@10 int v20; // ST0C_4@10 int v21; // ST10_4@10 int v22; // eax@10 int v23; // eax@11 char v25[4]; // [sp+1Ch] [bp-1Ch]@9 int v26; // [sp+20h] [bp-18h]@9 int v27; // [sp+24h] [bp-14h]@9 unsigned int v28; // [sp+28h] [bp-10h]@1 int v29; // [sp+34h] [bp-4h]@1 int v30; // [sp+38h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v29 = 0; v3 = sub_54DE90(&unk_13253630, v2); if ( v3 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 12361; *((_WORD *)v4 + 1) = *(_WORD *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_ACK : Packet Too Long", 4); } v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); if ( *(_WORD *)(a1 + 10) == 10368 ) { v7 = v6(v3); if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v7 + 28))( v7, v3, *(_WORD *)(a1 + 8), 0) ) { v8 = *(char **)(v3 + 122); if ( !v8 ) { v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, byte_6A492E, 0xCu); v8 = v25; } v9 = *(_DWORD *)(a1 + 26); v10 = *(_DWORD *)(v3 + 102); v11 = *(_DWORD *)(a1 + 22); v12 = *(_DWORD *)(a1 + 32); v13 = *(_WORD *)(a1 + 30); v14 = *(_DWORD *)(a1 + 16); v15 = *(_DWORD *)(a1 + 12); v16 = *(_WORD *)(a1 + 20); v17 = *(_DWORD *)(v10 + 4); v18 = *(_DWORD *)v10; v19 = *(_DWORD *)v8; v20 = *((_DWORD *)v8 + 1); v21 = *((_DWORD *)v8 + 2); v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); sub_611390(2000, v22, v19, v20, v21, v18, v17, 0, v16, v15, v14, v13, v12, v11, v9); } else { sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_ACK Not Free", 0); } } else { v23 = v6(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v23 + 40))(v23, *(_WORD *)(a1 + 8)); } } --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0051A970) -------------------------------------------------------- int __thiscall sub_51A970(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1176))(v4) + 36) >= 1u ) { if ( *((_BYTE *)v4 + 23824) & 0x20 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD : Already Open", 0); } else { sub_534000(v4, 0, 1); sub_534000(v4, 1, 1); sub_534000(v4, 2, 1); sub_534000(v4, 3, 1); sub_641000((char *)v4 + 85744); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3364))(v4); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD : No ChargedBuff", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051AA90) -------------------------------------------------------- int __thiscall sub_51AA90(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3368))(v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051AB40) -------------------------------------------------------- int __thiscall sub_51AB40(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 char v6; // cl@3 signed __int16 v7; // cx@4 int v8; // eax@8 int v9; // eax@23 int v11; // [sp-4h] [bp-24h]@5 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 816328779; if ( !(dword_13244800 & 1) ) { dword_13244800 |= 1u; word_132447FC = 70; atexit(nullsub_84); } v6 = **(_BYTE **)(v4 + 3828); if ( !((1 << v6) & (unsigned __int16)word_132447FC) ) goto LABEL_28; if ( v6 == 6 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 24))(v4 + 58688) == 1 ) { v7 = 12459; goto LABEL_5; } if ( *(_DWORD *)(v4 + 84471) || !sub_50D480(v4 + 84520) ) goto LABEL_28; if ( *(_BYTE *)(v4 + 85728) & 0x40 ) { v7 = 12460; goto LABEL_5; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3344))(v4) == 1 ) { v7 = 12457; goto LABEL_5; } if ( sub_55F500(v4) == 1 ) { LABEL_28: v7 = 12458; LABEL_5: v11 = 4; goto LABEL_6; } v11 = 4; if ( sub_55F660(v4) == 1 ) { v7 = 12458; LABEL_6: *((_WORD *)v5 + 1) = v7; if ( sub_4C81E0(&off_849C18, v11) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ : Packet Too Long", 4); } goto LABEL_25; } if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ : Packet Too Long", 4); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3352))(v4, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3356))(v4); LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132447FC: using guessed type __int16 word_132447FC; // 13244800: using guessed type int dword_13244800; //----- (0051AD70) -------------------------------------------------------- int __thiscall sub_51AD70(void *this, int a2) { void *v2; // ebx@1 int (*v3)(void); // eax@1 int (__thiscall *v4)(_DWORD); // eax@1 void *v5; // esi@2 int v6; // eax@3 int v7; // eax@4 int v8; // edi@5 int v9; // ecx@7 int v10; // edi@9 int (__thiscall *v11)(_DWORD, _DWORD, _DWORD); // edx@11 int v12; // ecx@12 int v13; // eax@12 char v14; // al@14 int v15; // esi@14 int v16; // eax@17 int (**v18)(); // [sp+10h] [bp-3Ch]@1 char *v19; // [sp+14h] [bp-38h]@1 int v20; // [sp+1Ch] [bp-30h]@1 int *v21; // [sp+20h] [bp-2Ch]@1 int v22; // [sp+24h] [bp-28h]@1 int v23; // [sp+28h] [bp-24h]@1 int v24; // [sp+2Ch] [bp-20h]@1 int v25; // [sp+30h] [bp-1Ch]@3 int v26; // [sp+34h] [bp-18h]@7 int v27; // [sp+38h] [bp-14h]@4 int v28; // [sp+3Ch] [bp-10h]@2 int v29; // [sp+48h] [bp-4h]@1 v2 = this; v24 = (int)"ShineObjectClass::ShinePlayer::sp_ItemInvenDelete"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ItemInvenDelete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ItemInvenDelete"; dword_750AB8[dword_750CB8++] = -1; v18 = &off_6A86A4; v19 = (char *)v2 + 36484; v3 = *(int (**)(void))(*((_DWORD *)v2 + 9121) + 8); v29 = 0; v20 = v3(); v18 = (int (**)())&off_6A86AC; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); LOBYTE(v29) = 1; v21 = (int *)&v18; v22 = v4(v2); v23 = 9; if ( sub_486D40(&v21) == 1 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v5 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v5 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2) + 4); *((_BYTE *)v5 + 10) = 0; LOWORD(v28) = v28 & 0x3FF | 0x2400; do { v6 = (**(int (__stdcall ***)(_DWORD))v21[1])(v21[2]); v25 = v6; if ( v6 ) { v7 = *(_WORD *)(v6 + 8); v27 = v7; if ( (unsigned __int16)v7 < (unsigned int)dword_14D20894 ) { v8 = dword_14D21184 + 40 * (unsigned __int16)v7; if ( v8 ) { if ( *(_DWORD *)v8 ) { v9 = **(_WORD **)v8; v26 = v9 + 10000 * (unsigned __int16)v7; if ( (_WORD)v9 == (_WORD)v27 ) { v10 = *(_DWORD *)(v8 + 32); if ( v10 ) { if ( v10 == a2 ) { v11 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v2 + 14672) + 12); LOWORD(v28) = (v28 ^ *((_WORD *)v21 + 4)) & 0x3FF ^ v28; if ( (unsigned __int8)v11( (char *)v2 + 58688, (unsigned int)(unsigned __int16)v28 >> 10, v28 & 0x3FF) != 1 ) { v12 = v25; v13 = *((_BYTE *)v5 + 10) & 0x7F; *(_DWORD *)((char *)v5 + 8 * v13 + 25) = *(_DWORD *)v25; *(_DWORD *)((char *)v5 + 8 * v13 + 29) = *(_DWORD *)(v12 + 4); *((_BYTE *)v5 + 10) ^= (*((_BYTE *)v5 + 10) ^ (*((_BYTE *)v5 + 10) + 1)) & 0x7F; (*(void (__thiscall **)(char *, _DWORD, int, int *, int *))(*((_DWORD *)v2 + 14672) + 48))( (char *)v2 + 58688, *((_WORD *)v5 + 4), v12, &v28, &v28); } } } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v26); } } } } } } while ( sub_486DA0((void **)&v21) == 1 ); v14 = *((_BYTE *)v5 + 10); v15 = 8 * (*((_BYTE *)v5 + 10) & 0x7F) + 25; if ( v14 & 0x7F ) { if ( sub_4C81E0(&off_849C18, v15) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v15); } ++*((_WORD *)v2 + 29346); } } --dword_750CB8; v18 = &off_6A86A4; v29 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ItemInvenDelete"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0051B030) -------------------------------------------------------- int __thiscall sub_51B030(void *this, int a2, int a3, int a4) { int v4; // ebx@1 char *v5; // esi@1 void *v6; // ST04_4@1 int v7; // eax@7 int v8; // eax@9 int v9; // edi@9 int (__thiscall **v10)(_DWORD, _DWORD); // eax@17 int v11; // eax@25 int v12; // eax@28 int v13; // eax@32 int v14; // edi@41 int v15; // eax@42 int v16; // edi@52 int v17; // eax@52 int v18; // eax@52 int v19; // esi@52 int v20; // eax@54 int v21; // esi@54 int v22; // eax@61 int v23; // edi@68 int v24; // eax@68 int v25; // eax@68 int v26; // eax@70 int v27; // esi@70 int v28; // eax@75 int (__thiscall *v29)(_DWORD, _DWORD, _DWORD); // edx@86 signed int v30; // esi@86 unsigned __int16 v31; // ax@86 int (__stdcall *v32)(_DWORD); // edx@86 char v33; // al@86 int v34; // ST10_4@90 char *v35; // eax@90 void *v36; // edi@90 void *v37; // esi@90 int (__thiscall *v38)(_DWORD); // eax@90 int v39; // eax@90 int v40; // eax@92 int v41; // esi@96 int v42; // eax@100 int v43; // edi@101 int v44; // eax@101 int v45; // eax@101 char v46; // al@104 void *v47; // esi@107 int (__thiscall *v48)(_DWORD); // eax@107 int v49; // eax@107 bool v50; // zf@107 int v51; // eax@107 int v52; // eax@109 int v53; // eax@110 int v55; // [sp-Ch] [bp-1C8h]@10 int v56; // [sp-8h] [bp-1C4h]@9 unsigned int v57; // [sp-4h] [bp-1C0h]@1 int v58; // [sp+10h] [bp-1ACh]@38 int *v59; // [sp+14h] [bp-1A8h]@23 int v60; // [sp+18h] [bp-1A4h]@23 int v61; // [sp+1Ch] [bp-1A0h]@23 int v62; // [sp+20h] [bp-19Ch]@89 int v63; // [sp+24h] [bp-198h]@46 int v64; // [sp+28h] [bp-194h]@32 int v65; // [sp+2Ch] [bp-190h]@28 int (**v66)(); // [sp+30h] [bp-18Ch]@23 int v67; // [sp+40h] [bp-17Ch]@1 __int16 v68; // [sp+44h] [bp-178h]@89 __int16 v69; // [sp+48h] [bp-174h]@89 int v70; // [sp+4Ch] [bp-170h]@9 char v71; // [sp+53h] [bp-169h]@86 char *v72; // [sp+54h] [bp-168h]@1 int v73; // [sp+58h] [bp-164h]@53 int v74; // [sp+5Ch] [bp-160h]@90 int v75; // [sp+60h] [bp-15Ch]@90 __int16 v76; // [sp+64h] [bp-158h]@90 char v77; // [sp+66h] [bp-156h]@90 char v78; // [sp+CAh] [bp-F2h]@90 int v79; // [sp+CCh] [bp-F0h]@48 int v80; // [sp+D0h] [bp-ECh]@90 __int16 v81; // [sp+D4h] [bp-E8h]@90 char v82; // [sp+D6h] [bp-E6h]@90 __int16 v83; // [sp+138h] [bp-84h]@48 char v84; // [sp+13Ah] [bp-82h]@48 int v85; // [sp+13Ch] [bp-80h]@48 int v86; // [sp+140h] [bp-7Ch]@90 __int16 v87; // [sp+144h] [bp-78h]@90 char v88; // [sp+146h] [bp-76h]@90 __int16 v89; // [sp+1A8h] [bp-14h]@48 char v90; // [sp+1AAh] [bp-12h]@48 unsigned int v91; // [sp+1ACh] [bp-10h]@1 int v92; // [sp+1B8h] [bp-4h]@1 int v93; // [sp+1BCh] [bp+0h]@1 v91 = (unsigned int)&v93 ^ __security_cookie; v57 = (unsigned int)&v93 ^ __security_cookie; v4 = (int)this; v67 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (char *)off_849C18 + 2; v6 = (char *)off_849C18 + 2; v92 = 0; *(_WORD *)off_849C18 = 12370; v72 = v5; memset(v6, 0, 0x6Cu); if ( !(dword_13244808 & 1) ) { dword_13244808 |= 1u; word_13244804 = 6; atexit(nullsub_85); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13244804) || sub_55F500(v4) == 1 ) goto LABEL_12; if ( *(_BYTE *)(a2 + 2) == *(_BYTE *)(a2 + 3) ) { *(_WORD *)v5 = 12845; if ( sub_4C81E0(&off_849C18, 110) ) { v7 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v4 + 764))(v4, v57); LABEL_118: (*(void (__thiscall **)(int, int))(*(_DWORD *)v7 + 12))(v7, v4); goto LABEL_119; } LABEL_14: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Packet Too Long", 110); goto LABEL_119; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 ) goto LABEL_12; v8 = *(_DWORD *)(v4 + 36484); v9 = v4 + 36484; v70 = *(_BYTE *)(v67 + 2); v56 = v70; if ( v70 >= (*(int (__thiscall **)(int))(v8 + 8))(v4 + 36484) ) { v55 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : wrong main slot"; LABEL_11: sub_639100(&unk_86DDD8, v55, v56); LABEL_12: *(_WORD *)v5 = 12841; goto LABEL_13; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v4 + 58688) + 12))(v4 + 58688, 9, v70) == 1 ) { *(_WORD *)v5 = 12841; goto LABEL_13; } v10 = *(int (__thiscall ***)(_DWORD, _DWORD))v9; v70 = *(_BYTE *)(v67 + 3); v56 = v70; if ( v70 >= ((int (__thiscall *)(int))v10[2])(v4 + 36484) ) { v55 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : wrong sub slot"; goto LABEL_11; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v4 + 58688) + 12))(v4 + 58688, 9, v70) == 1 ) { *(_WORD *)v5 = 12841; LABEL_13: if ( sub_4C81E0(&off_849C18, 110) ) { v7 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v4 + 764))(v4, v57); goto LABEL_118; } goto LABEL_14; } if ( *(_WORD *)(v4 + 85728) & 0xC || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2784))(v4) == 1 ) goto LABEL_12; sub_43BB20((int)&v66, v4 + 36484, v4 + 160312); LOBYTE(v92) = 1; v59 = (int *)&v66; v60 = v4 + 58688; v61 = 9; if ( !sub_486D40(&v59) || !(**(int (__stdcall ***)(_DWORD))v59[1])(v59[2]) ) { *(_WORD *)v5 = 12843; if ( !sub_4C81E0(&off_849C18, 110) ) goto LABEL_115; LABEL_25: v11 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 764))(v4, v57); LABEL_26: (*(void (__thiscall **)(int, int))(*(_DWORD *)v11 + 12))(v11, v4); v66 = &off_6A86A4; goto LABEL_119; } v12 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v4 + 36484, *(_BYTE *)(v67 + 2)); v65 = v12; if ( !v12 ) goto LABEL_113; if ( sub_4BFAB0((int)&unk_133593D0, *(_WORD *)(v12 + 8)) == 1 ) { *(_WORD *)v5 = 12846; if ( sub_4C81E0(&off_849C18, 110) ) { LABEL_31: v11 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 764))(v4, v57); goto LABEL_26; } LABEL_115: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Packet Too Long", 110); v66 = &off_6A86A4; goto LABEL_119; } v13 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v65 + 8)); v64 = v13; if ( !v13 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Try to use invalid item", 0); *(_WORD *)v5 = 12842; goto LABEL_34; } if ( !*(_DWORD *)v13 || !*(_DWORD *)(v13 + 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Try to use invalid item", 1); *(_WORD *)v5 = 12842; LABEL_114: if ( !sub_4C81E0(&off_849C18, 110) ) goto LABEL_115; goto LABEL_25; } v58 = *(_DWORD *)(v65 + 112); if ( !v58 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Try to use invalid item", 2); *(_WORD *)v5 = 12842; if ( sub_4C81E0(&off_849C18, 110) ) goto LABEL_31; goto LABEL_115; } v14 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v4 + 36484, *(_BYTE *)(v67 + 3)); v70 = v14; if ( !v14 ) { LABEL_113: *(_WORD *)v5 = 12842; goto LABEL_114; } v15 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v14 + 8)); if ( !v15 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Try to use invalid item", 3); *(_WORD *)v5 = 12842; goto LABEL_114; } if ( !*(_DWORD *)v15 || !*(_DWORD *)(v15 + 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Try to use invalid item", 4); goto LABEL_113; } v63 = *(_DWORD *)(v14 + 112); if ( !v63 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Try to use invalid item", 5); *(_WORD *)v5 = 12842; goto LABEL_114; } memcpy(&v85, (const void *)v65, 0x6Cu); v89 = *(_WORD *)(v65 + 108); v90 = *(_BYTE *)(v65 + 110); memcpy(&v79, (const void *)v70, 0x6Cu); v83 = *(_WORD *)(v70 + 108); v84 = *(_BYTE *)(v70 + 110); if ( *(_DWORD *)(*(_DWORD *)v64 + 102) != 23 ) { *(_WORD *)v72 = 12842; goto LABEL_114; } if ( *(_DWORD *)(*(_DWORD *)v15 + 102) != 23 ) { *(_WORD *)v72 = 12842; goto LABEL_114; } v16 = v65; v17 = sub_645030((int)&dword_14D20890, *(_WORD *)(v65 + 8)); v18 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v17); v19 = v18; v64 = v18; if ( !v18 ) { sub_5CF620(&v73); LOBYTE(v92) = 2; sub_56E9E0((int)&v73); if ( sub_44F1E0((int)&dword_AA08E8, (int)&v73) ) { while ( 1 ) { v20 = sub_45D960((int)&dword_AA08E8, (int)&v73); v21 = v20; if ( !v20 ) break; if ( !*(_DWORD *)(v20 + 4) ) { *(_WORD *)v72 = 12842; if ( !sub_4C81E0(&off_849C18, 110) ) goto LABEL_59; goto LABEL_64; } if ( *(_WORD *)v20 == *(_WORD *)(v16 + 8) ) { if ( (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(*(_DWORD *)(v20 + 4) + 132)) == word_14D211D0 && !*(_WORD *)(*(_DWORD *)(v21 + 4) + 130) ) { LOBYTE(v92) = 1; nullsub_2(&v73); v19 = v64; goto LABEL_68; } break; } if ( !sub_44F1E0((int)&dword_AA08E8, (int)&v73) ) goto LABEL_58; } LABEL_60: *(_WORD *)v72 = 12842; if ( sub_4C81E0(&off_849C18, 110) ) { v22 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 764))(v4, v57); LABEL_62: (*(void (__thiscall **)(int, int))(*(_DWORD *)v22 + 12))(v22, v4); LOBYTE(v92) = 1; nullsub_2(&v73); v66 = &off_6A86A4; goto LABEL_119; } goto LABEL_59; } goto LABEL_58; } v28 = *(_DWORD *)(v18 + 8); if ( !v28 ) { *(_WORD *)v72 = 12842; goto LABEL_34; } if ( (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v28 + 32)) != word_14D211D0 ) { *(_WORD *)v72 = 12842; goto LABEL_34; } if ( !*(_DWORD *)v19 ) { *(_WORD *)v72 = 12842; goto LABEL_34; } if ( *(_WORD *)(*(_DWORD *)v19 + 48) ) { *(_WORD *)v72 = 12842; goto LABEL_34; } LABEL_68: v23 = v70; v24 = sub_645030((int)&dword_14D20890, *(_WORD *)(v70 + 8)); v25 = sub_4BE860((int)&unk_13359F08, (unsigned __int8 *)v24); if ( !v25 ) { sub_5CF620(&v73); LOBYTE(v92) = 3; sub_56E9E0((int)&v73); while ( sub_44F1E0((int)&dword_AA08E8, (int)&v73) ) { v26 = sub_45D960((int)&dword_AA08E8, (int)&v73); v27 = v26; if ( !v26 ) goto LABEL_60; if ( !*(_DWORD *)(v26 + 4) ) break; if ( *(_WORD *)v26 == *(_WORD *)(v23 + 8) ) { if ( (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(*(_DWORD *)(v26 + 4) + 132)) == word_14D211D0 && !*(_WORD *)(*(_DWORD *)(v27 + 4) + 130) ) { LOBYTE(v92) = 1; nullsub_2(&v73); goto LABEL_86; } goto LABEL_60; } } LABEL_58: *(_WORD *)v72 = 12842; if ( sub_4C81E0(&off_849C18, 110) ) { LABEL_64: v22 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 764))(v4, v57); goto LABEL_62; } LABEL_59: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Packet Too Long", 110); LOBYTE(v92) = 1; nullsub_2(&v73); v66 = &off_6A86A4; goto LABEL_119; } v40 = *(_DWORD *)(v25 + 8); if ( !v40 ) { *(_WORD *)v72 = 12842; goto LABEL_34; } if ( (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v40 + 32)) != word_14D211D0 ) { *(_WORD *)v72 = 12842; goto LABEL_34; } v41 = *(_DWORD *)v19; if ( !v41 ) { *(_WORD *)v72 = 12842; goto LABEL_34; } if ( *(_WORD *)(v41 + 48) ) { *(_WORD *)v72 = 12842; LABEL_34: if ( sub_4C81E0(&off_849C18, 110) ) goto LABEL_31; goto LABEL_115; } LABEL_86: v29 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v58 + 192); v71 = 0; v30 = 65535; LOBYTE(v73) = v29(v58, &v85, v57); v31 = (*(int (__thiscall **)(int, int *))(*(_DWORD *)v58 + 200))(v58, &v85); v32 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)v63 + 192); v72 = (char *)v31; LOBYTE(v64) = v32(&v79); v33 = sub_4BFA00((int)&unk_133593D0); if ( (unsigned __int8)v73 >= v33 ) { v71 = 1; if ( sub_4BF960((int)&unk_133593D0, (unsigned __int16)v72, v64) == 1 ) v30 = (unsigned __int16)sub_4BFA40((int)&unk_133593D0); } v69 = *(unsigned __int8 *)(v67 + 2) | 0x2400; v68 = *(unsigned __int8 *)(v67 + 3) | 0x2400; LOWORD(v62) = v62 & 0x3FF | 0x2400; LOWORD(v62) = (v62 ^ *((_WORD *)v59 + 4)) & 0x3FF ^ v62; if ( (_WORD)v30 == -1 ) { if ( v71 == 1 ) { (*(void (__thiscall **)(int, int *, char *))(*(_DWORD *)v58 + 196))(v58, &v85, v72 + 1); } else { LOBYTE(v67) = v73 + (_BYTE)v64 + 1; v46 = sub_4BFA00((int)&unk_133593D0); if ( (unsigned __int8)v67 > v46 ) LOBYTE(v67) = sub_4BFA00((int)&unk_133593D0); (*(void (__thiscall **)(int, int *, int))(*(_DWORD *)v58 + 188))(v58, &v85, v67); } v47 = off_849C18; *(_WORD *)off_849C18 = 13484; v48 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v63 = (int)v47; *((_WORD *)v47 + 1) = *(_WORD *)(v48(v4) + 4); v49 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v50 = v71 == 1; *((_DWORD *)v47 + 1) = v49; *((_WORD *)v47 + 4) = *(_WORD *)(v4 + 4); *((_BYTE *)v47 + 10) = !v50; *(_DWORD *)((char *)v47 + 122) = v85; *(_DWORD *)((char *)v47 + 126) = v86; v51 = v63; *((_WORD *)v47 + 65) = v87; *((_WORD *)v47 + 66) = v69; memcpy((char *)v47 + 134, &v88, 0x64u); *((_BYTE *)v47 + 234) = v90; *(_DWORD *)(v51 + 11) = v79; *(_DWORD *)(v51 + 15) = v80; *(_WORD *)(v51 + 19) = v81; memcpy((void *)(v51 + 21), &v82, 0x64u); *(_BYTE *)(v51 + 121) = v84; if ( sub_4C81E0(&off_849C18, 235) ) { v52 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v52); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Packet Too Long", 235); } v53 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int *, __int16 *, __int16 *))(*(_DWORD *)(v4 + 58688) + 64))( v4 + 58688, *(_WORD *)(v53 + 4), v65, &v85, &v69, &v69); } else { sub_46FE30((int)&v74); v76 = v30; v34 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v35 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v74, v30, 8, *((_DWORD *)v35 + 4), v34); v36 = sub_63ACA0(dword_1508B168, v30); (*(void (__thiscall **)(void *, signed int, int *, _DWORD))(*(_DWORD *)v36 + 20))(v36, v30, &v74, "-o"); (*(void (__thiscall **)(void *, int *, int))(*(_DWORD *)v36 + 188))(v36, &v74, v73); v37 = off_849C18; *(_WORD *)off_849C18 = 13486; v38 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v63 = (int)v37; *((_WORD *)v37 + 1) = *(_WORD *)(v38(v4) + 4); *((_DWORD *)v37 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v37 + 4) = *(_WORD *)(v4 + 4); *(_DWORD *)((char *)v37 + 10) = v85; *(_DWORD *)((char *)v37 + 14) = v86; *((_WORD *)v37 + 9) = v87; v39 = v63; memcpy((char *)v37 + 20, &v88, 0x64u); *((_BYTE *)v37 + 120) = v90; *(_DWORD *)(v39 + 121) = v79; *(_DWORD *)(v39 + 125) = v80; *(_WORD *)(v39 + 129) = v81; memcpy((void *)(v39 + 131), &v82, 0x64u); *(_BYTE *)(v39 + 231) = v84; *(_DWORD *)(v39 + 232) = v74; *(_DWORD *)(v39 + 236) = v75; *(_WORD *)(v39 + 240) = v76; *(_WORD *)(v39 + 242) = v62; memcpy((void *)(v39 + 244), &v77, 0x64u); *(_BYTE *)(v39 + 344) = v78; if ( sub_4C81E0(&off_849C18, 345) ) { v42 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v42); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ : Packet Too Long", 345); } v43 = (**(int (__stdcall ***)(_DWORD))v59[1])(v59[2]); v44 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int *, int *, int *))(*(_DWORD *)(v4 + 58688) + 64))( v4 + 58688, *(_WORD *)(v44 + 4), v43, &v74, &v62, &v62); v45 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)(v4 + 58688) + 48))( v4 + 58688, *(_WORD *)(v45 + 4), v65, &v69, &v69); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 48))(v4 + 58688); ++*(_WORD *)(v4 + 58692); sub_55F510(v4, 1); v66 = &off_6A86A4; LABEL_119: --dword_750CB8; v92 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MOVER_UPGRADE_REQ"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA08E8: using guessed type int dword_AA08E8; // 13244804: using guessed type __int16 word_13244804; // 13244808: using guessed type int dword_13244808; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211D0: using guessed type __int16 word_14D211D0; //----- (0051BEE0) -------------------------------------------------------- int __thiscall sub_51BEE0(void *this, int a2) { void *v2; // ebx@1 int v3; // eax@2 void *v4; // eax@2 int v5; // eax@4 int v6; // eax@5 __time32_t v7; // eax@6 __time32_t v8; // esi@6 FILE *v9; // eax@8 void *v10; // eax@11 int v11; // esi@11 int v12; // eax@13 int v13; // eax@14 int v14; // ecx@17 int v15; // esi@24 int v16; // edi@24 int v17; // eax@28 const void *v18; // esi@28 int v20; // [sp-4h] [bp-2Ch]@3 int v21; // [sp-4h] [bp-2Ch]@15 int v22; // [sp-4h] [bp-2Ch]@25 void *v23; // [sp+14h] [bp-14h]@11 int v24; // [sp+18h] [bp-10h]@6 int v25; // [sp+18h] [bp-10h]@19 v2 = this; sub_4675D0( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket"; dword_750AB8[dword_750CB8++] = -1; if ( 12872 == *(_WORD *)(a2 + 8) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, int, _DWORD))(*(_DWORD *)v6 + 28))( v6, v2, *(_WORD *)a2, 0) ) { v24 = *(_WORD *)a2; v7 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : "); v8 = v7; if ( byte_7493ED ) { if ( *(_BYTE *)(v7 + 644) ) { sub_418E40(v7); v9 = *(FILE **)(v8 + 256); if ( v9 ) fprintf(v9, "%d", v24); } } sub_418F20(v8, (int)&unk_13359E04); } v10 = off_849C18; *(_DWORD *)off_849C18 = 843722836; v23 = v10; v11 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9121))( (char *)v2 + 36484, *(_BYTE *)(a2 + 20)); if ( !v11 ) { if ( sub_4C81E0(&off_849C18, 29) ) { LABEL_13: v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); LABEL_36: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v2, &off_849C18); goto LABEL_37; } goto LABEL_27; } v13 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v11 + 8)); if ( v13 ) { if ( *(_DWORD *)v13 && (v14 = *(_DWORD *)(v13 + 4)) != 0 && v14 != -137 ) { v25 = *(_DWORD *)(v11 + 112); if ( v25 ) { if ( *(_DWORD *)(a2 + 10) == *(_DWORD *)v11 && *(_DWORD *)(a2 + 14) == *(_DWORD *)(v11 + 4) && *(_WORD *)(a2 + 18) == *(_WORD *)(v11 + 8) ) { memcpy((char *)v2 + 161265, (const void *)v11, 0x6Cu); v15 = v11 + 108; *(_WORD *)((char *)v2 + 161373) = *(_WORD *)v15; *((_BYTE *)v2 + 161375) = *(_BYTE *)(v15 + 2); v16 = (int)sub_4934A0(&dword_D61E064, (const char *)(*(_DWORD *)(v13 + 4) + 137)); if ( v16 ) { v17 = (*(int (__stdcall **)(char *))(*(_DWORD *)v25 + 112))((char *)v2 + 161273); v18 = (const void *)v17; if ( v17 ) { sub_4928F0(v17, v16); *((_BYTE *)v2 + 161264) = *(_BYTE *)(a2 + 20); *((_WORD *)v23 + 1) = 12872; memcpy((char *)v23 + 4, v18, 0x19u); if ( !sub_4C81E0(&off_849C18, 29) ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : Packet Too Long", 29); goto LABEL_37; } LABEL_35: v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); goto LABEL_36; } v22 = 5; } else { v22 = 4; } sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : Try to use invalid item", v22); if ( sub_4C81E0(&off_849C18, 29) ) goto LABEL_13; LABEL_27: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : Packet Too Long", 29); LABEL_37: v20 = (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket"; goto LABEL_38; } v21 = 3; } else { v21 = 2; } } else { v21 = 1; } } else { v21 = 0; } sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : Try to use invalid item", v21); if ( sub_4C81E0(&off_849C18, 29) ) goto LABEL_35; goto LABEL_27; } v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)a2); v4 = off_849C18; *(_WORD *)off_849C18 = 12372; *((_WORD *)v4 + 1) = *(_WORD *)(a2 + 8); if ( sub_4C81E0(&off_849C18, 29) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); v20 = (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket : Packet Too Long", 29); v20 = (int)"ShineObjectClass::ShinePlayer::so_ply_RandOptChangeProcessConsumeAndCountingAckPacket"; } LABEL_38: --dword_750CB8; return sub_467660((int)&unk_D020420, v20); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0051C260) -------------------------------------------------------- int __thiscall sub_51C260(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int (__thiscall *v5)(_DWORD, _DWORD); // edx@1 int v6; // ST10_4@1 int v7; // esi@1 int v8; // eax@3 int v9; // eax@6 int v10; // ecx@8 int v11; // eax@13 int v12; // esi@13 int (__thiscall *v13)(_DWORD); // eax@13 int v14; // ST00_4@13 void (__stdcall *v15)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@13 void *v16; // edi@13 int (__thiscall *v17)(_DWORD); // eax@13 int v18; // esi@13 int v19; // edi@13 int v20; // eax@15 int v22; // [sp-8h] [bp-54h]@2 int v23; // [sp-4h] [bp-50h]@2 char v24; // [sp+10h] [bp-3Ch]@13 char v25; // [sp+28h] [bp-24h]@13 int v26; // [sp+2Ch] [bp-20h]@1 char *v27; // [sp+30h] [bp-1Ch]@13 void *v28; // [sp+34h] [bp-18h]@13 int v29; // [sp+38h] [bp-14h]@1 __int16 v30; // [sp+3Ch] [bp-10h]@13 int v31; // [sp+48h] [bp-4h]@1 v4 = this; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (int (__thiscall *)(_DWORD, _DWORD))**((_DWORD **)v4 + 9121); v6 = *((_BYTE *)v4 + 161264); v31 = 0; v7 = v5((char *)v4 + 36484, v6); v29 = v7; if ( !v7 ) { v23 = 0; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"; LABEL_20: sub_639100(&unk_86DDD8, v22, v23); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 98, 12874); --dword_750CB8; v31 = -1; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"); } v8 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); if ( !v8 ) { v23 = 1; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"; goto LABEL_20; } if ( !*(_DWORD *)v8 || (v9 = *(_DWORD *)(v8 + 4)) == 0 || v9 == -137 ) { v23 = 2; goto LABEL_19; } v10 = *(_DWORD *)(v7 + 112); if ( !v10 ) { v23 = 3; LABEL_19: v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ : Try to use invalid item"; goto LABEL_20; } if ( *(_DWORD *)v7 != *(_DWORD *)((char *)v4 + 161265) || *(_DWORD *)(v7 + 4) != *(_DWORD *)((char *)v4 + 161269) || *(_WORD *)(v7 + 8) != *(_WORD *)((char *)v4 + 161273) ) { v23 = 4; goto LABEL_19; } v11 = (*(int (__stdcall **)(char *))(*(_DWORD *)v10 + 112))((char *)v4 + 161273); memcpy(&v24, (const void *)v11, 0x18u); v25 = *(_BYTE *)(v11 + 24); v12 = v29; memcpy((char *)v4 + 161265, (const void *)v29, 0x6Cu); v12 += 108; *(_WORD *)((char *)v4 + 161373) = *(_WORD *)v12; *((_BYTE *)v4 + 161375) = *(_BYTE *)(v12 + 2); memcpy((void *)v11, &v24, 0x18u); *(_BYTE *)(v11 + 24) = v25; v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v30 = *((unsigned __int8 *)v4 + 161264) | 0x2400; v14 = *(_WORD *)(v13(v4) + 4); v15 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 14672) + 64); v27 = (char *)v4 + 58688; v15(v14, v29, (char *)v4 + 161265, &v30, &v30); v16 = off_849C18; *(_WORD *)off_849C18 = 13491; v17 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v28 = v16; *((_WORD *)v16 + 1) = *(_WORD *)(v17(v4) + 4); *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v16 + 4) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v16 + 10) = *(_DWORD *)((char *)v4 + 161265); *(_DWORD *)((char *)v16 + 14) = *(_DWORD *)((char *)v4 + 161269); *((_WORD *)v16 + 9) = *(_WORD *)((char *)v4 + 161273); memcpy((char *)v16 + 20, (char *)v4 + 161275, 0x65u); v18 = v29 + 10; v19 = (int)((char *)v28 + 121); memcpy((char *)v28 + 121, (const void *)(v29 + 10), 0x64u); *(_BYTE *)(v19 + 100) = *(_BYTE *)(v18 + 100); if ( sub_4C81E0(&off_849C18, 222) ) { v20 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v20); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ : Packet Too Long", 222); } ++*((_WORD *)v27 + 2); --dword_750CB8; v31 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_ACCEPT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (0051C520) -------------------------------------------------------- int __thiscall sub_51C520(void *this, unsigned int a2, int a3, int a4) { void *v4; // ebx@1 signed int v5; // edi@1 int v6; // eax@6 void *v7; // ecx@9 int v8; // esi@11 int v9; // eax@14 int v10; // ecx@17 int v11; // esi@21 unsigned __int8 v12; // al@28 unsigned __int8 v13; // cl@31 int v14; // esi@32 int v15; // eax@32 int v16; // eax@32 void *v17; // esi@36 int (__thiscall *v18)(_DWORD); // eax@36 int v19; // eax@36 int v20; // ecx@36 unsigned int v21; // esi@36 int (__thiscall *v22)(_DWORD); // eax@36 int v23; // eax@36 int v24; // eax@39 const void *v25; // esi@39 int v26; // ecx@40 int v27; // esi@42 int v28; // esi@42 unsigned int v29; // edi@42 __int16 v30; // ax@42 unsigned int v31; // eax@42 int v32; // esi@43 int v33; // eax@43 int v34; // eax@43 int v35; // edx@43 int v36; // eax@43 int v37; // ecx@50 int v38; // esi@50 int v39; // eax@50 int v40; // esi@51 int v41; // esi@54 int v42; // eax@54 int v43; // eax@55 int v44; // eax@56 int v46; // [sp-8h] [bp-144h]@12 unsigned int v47; // [sp-4h] [bp-140h]@1 int v48; // [sp-4h] [bp-140h]@4 int v49; // [sp-4h] [bp-140h]@12 signed int v50; // [sp-4h] [bp-140h]@13 signed int v51; // [sp-4h] [bp-140h]@22 int v52; // [sp-4h] [bp-140h]@25 signed int v53; // [sp-4h] [bp-140h]@26 int v54; // [sp-4h] [bp-140h]@46 int (**v55)(); // [sp+10h] [bp-12Ch]@36 int *v56; // [sp+24h] [bp-118h]@36 int v57; // [sp+28h] [bp-114h]@36 int v58; // [sp+2Ch] [bp-110h]@36 int v59; // [sp+30h] [bp-10Ch]@36 __int16 v60; // [sp+34h] [bp-108h]@32 int v61; // [sp+38h] [bp-104h]@42 int v62; // [sp+3Ch] [bp-100h]@11 unsigned __int8 v63; // [sp+43h] [bp-F9h]@28 int v64; // [sp+44h] [bp-F8h]@6 unsigned int v65; // [sp+48h] [bp-F4h]@1 int v66; // [sp+4Ch] [bp-F0h]@42 int v67; // [sp+50h] [bp-ECh]@43 char v68; // [sp+54h] [bp-E8h]@42 __int16 v69; // [sp+B8h] [bp-84h]@42 char v70; // [sp+BAh] [bp-82h]@42 int v71; // [sp+BCh] [bp-80h]@21 int v72; // [sp+C0h] [bp-7Ch]@36 __int16 v73; // [sp+C4h] [bp-78h]@24 char v74; // [sp+C6h] [bp-76h]@36 __int16 v75; // [sp+128h] [bp-14h]@21 char v76; // [sp+12Ah] [bp-12h]@21 unsigned int v77; // [sp+12Ch] [bp-10h]@1 int v78; // [sp+138h] [bp-4h]@1 int v79; // [sp+13Ch] [bp+0h]@1 v77 = (unsigned int)&v79 ^ __security_cookie; v47 = (unsigned int)&v79 ^ __security_cookie; v4 = this; v65 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v78 = 0; if ( !(dword_13244810 & 1) ) { dword_13244810 |= 1u; word_1324480C = 70; atexit(nullsub_87); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1324480C) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 12, 108, 12882, v47); v48 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; goto LABEL_63; } v6 = *((_DWORD *)v4 + 9121); v64 = *(_BYTE *)(v65 + 2); if ( v64 >= (*(int (__thiscall **)(char *, unsigned int))(v6 + 8))((char *)v4 + 36484, v47) || (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int))(*((_DWORD *)v4 + 14672) + 12))( (char *)v4 + 58688, 9, v64) == 1 ) goto LABEL_68; v7 = v4; if ( *((_WORD *)v4 + 42864) & 0xC ) { v50 = 12882; goto LABEL_61; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2784))(v4) == 1 ) { LABEL_68: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 108, 12882); LABEL_62: v48 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; LABEL_63: v78 = v5; LABEL_64: --dword_750CB8; return sub_467660((int)&unk_D020420, v48); } v8 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v65 + 2)); v62 = v8; if ( !v8 ) { v49 = 0; v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Invalid SlotNo"; LABEL_13: sub_639100(&unk_86DDD8, v46, v49); v50 = 12883; v7 = v4; LABEL_61: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v7, 12, 108, v50); goto LABEL_62; } v9 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v8 + 8)); if ( !v9 ) { v49 = 0; v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Invalid ItemData"; goto LABEL_13; } if ( !*(_DWORD *)v9 || (v10 = *(_DWORD *)(v9 + 4)) == 0 || v10 == -137 ) { v49 = 1; v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Invalid ItemData"; goto LABEL_13; } v64 = *(_DWORD *)(v8 + 112); if ( !v64 ) { v49 = 0; v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Get ItemAttr Fail"; goto LABEL_13; } memcpy(&v71, (const void *)v8, 0x6Cu); v11 = v8 + 108; v75 = *(_WORD *)v11; v76 = *(_BYTE *)(v11 + 2); if ( !sub_4934A0(&dword_D61E064, (const char *)(*(_DWORD *)(v9 + 4) + 137)) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Not RandomOption Item", 0); v51 = 12883; LABEL_23: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 108, v51); v78 = -1; v48 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; goto LABEL_64; } if ( !(*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v64 + 112))(v64, &v73) ) { v52 = 1; LABEL_26: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Not RandomOption Item", v52); v53 = 12883; LABEL_27: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 108, v53); v78 = -1; v48 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; goto LABEL_64; } v12 = (*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v64 + 116))(v64, &v73); v63 = v12; if ( v12 == -1 ) { v52 = 2; goto LABEL_26; } if ( !v12 || (v13 = *(_BYTE *)(v65 + 3), v12 < v13) ) { v51 = 12884; goto LABEL_23; } v60 = *(unsigned __int8 *)(v65 + 2) | 0x2400; (*(void (__thiscall **)(int, __int16 *, _DWORD))(*(_DWORD *)v64 + 120))(v64, &v73, (unsigned __int8)(v12 - v13)); v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int *, __int16 *, __int16 *))(*(_DWORD *)v14 + 64))( v14, *(_WORD *)(v15 + 4), v62, &v71, &v60, &v60); v64 = (unsigned __int16)word_14D211D8; v16 = sub_418CB0((int)&dword_14D20890, word_14D211D8); if ( !v16 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Invalid Stuff ItemData", 0); v53 = 12885; goto LABEL_27; } if ( !*(_DWORD *)v16 || !*(_DWORD *)(v16 + 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Invalid Stuff ItemData", 1); v51 = 12885; goto LABEL_23; } v17 = off_849C18; *(_WORD *)off_849C18 = 13517; v18 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v59 = (int)v17; *((_WORD *)v17 + 1) = *(_WORD *)(v18(v4) + 4); *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v17 + 4) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v17 + 10) = v71; *(_DWORD *)((char *)v17 + 14) = v72; *((_WORD *)v17 + 9) = v73; v19 = v59; memcpy((char *)v17 + 20, &v74, 0x64u); v20 = v63; *((_BYTE *)v17 + 120) = v76; v21 = v65; *(_DWORD *)(v19 + 121) = v20; *(_DWORD *)(v19 + 125) = v20 - *(_BYTE *)(v21 + 3); LOWORD(v20) = v64; *(_WORD *)(v19 + 129) = v64; v5 = -1; *(_DWORD *)(v19 + 135) = -1; *(_DWORD *)(v19 + 139) = -1; *(_DWORD *)(v19 + 143) = 0; *(_DWORD *)(v19 + 131) = *(_BYTE *)(v21 + 3); *(_BYTE *)(v19 + 147) = 0; sub_43BB70((int)&v55, (int)((char *)v4 + 36484), v20, (int)((char *)v4 + 160312)); v22 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v78) = 1; v23 = v22(v4); v56 = (int *)&v55; v57 = v23; v58 = 9; if ( !sub_486D40(&v56) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 108, 12886); v55 = &off_6A86A4; goto LABEL_62; } v65 = *(_BYTE *)(v21 + 3); while ( 1 ) { v24 = (**(int (__stdcall ***)(_DWORD))v56[1])(v56[2]); v25 = (const void *)v24; v64 = v24; if ( !v24 ) { v54 = 0; LABEL_47: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Invalid CurStuff Item", v54); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 108, 12885); v55 = &off_6A86A4; goto LABEL_62; } v26 = *(_DWORD *)(v24 + 112); v62 = v26; if ( !v26 ) { v54 = 1; goto LABEL_47; } if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)v26 + 24))() ) { v54 = 2; goto LABEL_47; } memcpy(&v66, v25, 0x6Cu); v27 = (int)((char *)v25 + 108); v69 = *(_WORD *)v27; v70 = *(_BYTE *)(v27 + 2); v28 = v62; v29 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v62 + 28))(v62, &v68); v30 = v61 & 0x3FF | 0x2400; LOWORD(v61) = v30; LOWORD(v61) = (v30 ^ *((_WORD *)v56 + 4)) & 0x3FF ^ v30; v31 = v65; if ( v65 < v29 ) { v37 = v59; *(_DWORD *)(v59 + 135) = v66; *(_DWORD *)(v37 + 139) = v67; *(_DWORD *)(v37 + 143) = v31; (*(void (__thiscall **)(int, char *, unsigned int))(*(_DWORD *)v28 + 32))(v28, &v68, v29 - v31); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int *, int *, int *))(*(_DWORD *)v38 + 64))( v38, *(_WORD *)(v39 + 4), v64, &v66, &v61, &v61); v32 = v59; goto LABEL_51; } v32 = v59; v33 = *(_BYTE *)(v59 + 147); *(_DWORD *)(v59 + 8 * v33 + 148) = v66; *(_DWORD *)(v32 + 8 * v33 + 152) = v67; ++*(_BYTE *)(v32 + 147); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v35 = *(_DWORD *)v4; v62 = v34; v36 = (*(int (__thiscall **)(void *))(v35 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int *, int *))(*(_DWORD *)v62 + 48))( v62, *(_WORD *)(v36 + 4), v64, &v61, &v61); v65 -= v29; if ( !v65 ) goto LABEL_51; if ( sub_486DA0((void **)&v56) != 1 ) break; v5 = -1; } if ( v65 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Lack of Stuff Item", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 108, 12886); v41 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v42 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v41 + 40))(v41, *(_WORD *)(v42 + 4)); v55 = &off_6A86A4; v78 = -1; v48 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; goto LABEL_64; } LABEL_51: v40 = 8 * *(_BYTE *)(v32 + 147) + 148; LOBYTE(v78) = 0; v55 = &off_6A86A4; if ( sub_4C81E0(&off_849C18, v40) ) { v43 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v43); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ : Packet Too Long", v40); } v44 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v44 + 4); --dword_750CB8; v78 = -1; v48 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_RECOVER_COUNT_LIMIT_REQ"; return sub_467660((int)&unk_D020420, v48); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1324480C: using guessed type __int16 word_1324480C; // 13244810: using guessed type int dword_13244810; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211D8: using guessed type __int16 word_14D211D8; //----- (0051CD60) -------------------------------------------------------- int __thiscall sub_51CD60(void *this, int a2, int a3, int a4) { void *v4; // edi@1 bool v5; // zf@1 void *v6; // esi@1 signed __int16 v7; // dx@4 int v8; // eax@6 int v9; // eax@8 int v10; // eax@19 int v11; // edx@19 int v12; // eax@22 signed __int16 v13; // ax@28 int v14; // eax@32 int v15; // ebx@32 int v16; // eax@51 int v17; // eax@57 int v18; // eax@60 unsigned int v19; // eax@60 int v20; // edi@61 int v21; // eax@65 int v23; // [sp+14h] [bp-1Ch]@34 int v24; // [sp+18h] [bp-18h]@44 int v25; // [sp+1Ch] [bp-14h]@19 int v26; // [sp+1Ch] [bp-14h]@24 __int16 v27; // [sp+20h] [bp-10h]@19 int v28; // [sp+2Ch] [bp-4h]@1 int v29; // [sp+38h] [bp+8h]@36 int v30; // [sp+38h] [bp+8h]@55 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (dword_13244818 & 1) == 0; v6 = off_849C18; *(_DWORD *)off_849C18 = 905982038; v28 = 0; *((_BYTE *)v6 + 4) = 0; if ( v5 ) { dword_13244818 |= 1u; word_13244814 = 70; atexit(nullsub_88); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244814) ) { v7 = 13826; goto LABEL_5; } v9 = *(_DWORD *)((char *)v4 + 122); if ( !v9 ) { *((_WORD *)v6 + 1) = 13828; if ( !sub_4C81E0(&off_849C18, 5) ) goto LABEL_15; LABEL_10: v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); goto LABEL_7; } if ( *(_BYTE *)(*(_DWORD *)(v9 + 12) + 158) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2852))(v4, 0) == 1 || *((_BYTE *)v4 + 85728) & 8 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2784))(v4) == 1 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2532))(v4) == 1 ) { *((_WORD *)v6 + 1) = 13826; if ( !sub_4C81E0(&off_849C18, 5) ) goto LABEL_15; goto LABEL_10; } v10 = *(_BYTE *)(a2 + 2); v11 = *((_DWORD *)v4 + 9121); v27 = *(unsigned __int8 *)(a2 + 2) | 0x2400; v25 = v10; if ( v10 >= (*(int (__thiscall **)(char *))(v11 + 8))((char *)v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ : wrong slot", v25); goto LABEL_21; } v26 = (int)((char *)v4 + 58688); if ( (unsigned __int8)(*(int (**)(void))(*((_DWORD *)v4 + 14672) + 16))() == 1 ) { *((_WORD *)v6 + 1) = 13826; if ( !sub_4C81E0(&off_849C18, 5) ) goto LABEL_31; LABEL_26: v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); goto LABEL_23; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int, _DWORD))(*(_DWORD *)v26 + 12))(9, *(_BYTE *)(a2 + 2)) == 1 ) { v13 = 13826; } else { v14 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); v15 = v14; if ( v14 ) { v23 = *(_DWORD *)(v14 + 112); if ( v23 ) { v29 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v14 + 8)); if ( v29 ) { if ( *(_DWORD *)v29 ) { if ( *(_DWORD *)(v29 + 4) ) { if ( *(_DWORD *)(*(_DWORD *)v29 + 127) <= (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) ) { v24 = (*(int (__stdcall **)(int))(**(_DWORD **)(v15 + 112) + 28))(v15 + 8); if ( v24 ) { if ( (unsigned int)v24 <= *(_DWORD *)(*(_DWORD *)v29 + 106) ) { if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 122) + 12) + 103) != 1 || *(_BYTE *)(*(_DWORD *)(v29 + 4) + 219) ) { v16 = sub_486C40((int)&dword_13258868, *(_WORD *)(v15 + 8)); if ( v16 ) { if ( *(_DWORD *)(v16 + 4) ) { v30 = sub_44F210((int)&dword_AA0A90, *(_WORD *)(v15 + 8)); if ( v30 ) { v17 = *(_DWORD *)(v30 + 4); if ( !v17 ) { LABEL_21: *((_WORD *)v6 + 1) = 13827; if ( sub_4C81E0(&off_849C18, 5) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); LABEL_23: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))( v12, v4, &off_849C18); --dword_750CB8; LABEL_67: v28 = -1; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ"); } LABEL_31: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ : Packet Too Long", 5); --dword_750CB8; goto LABEL_67; } if ( *(_DWORD *)(v17 + 36) == 36 ) { *(_WORD *)v6 = 13493; *((_WORD *)v6 + 1) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v6 + 2) = *(_DWORD *)v15; *((_DWORD *)v6 + 3) = *(_DWORD *)(v15 + 4); *((_WORD *)v6 + 8) = *(_WORD *)(v15 + 8); *(_DWORD *)((char *)v6 + 18) = v24 - 1; *(_DWORD *)((char *)v6 + 22) = *(_WORD *)(*(_DWORD *)(v30 + 4) + 40); v18 = sub_418AF0((int)&dword_AA08A0); LOWORD(v19) = sub_6396B0(&unk_14D42DC0, v18); *((_BYTE *)v6 + 26) = sub_44F170((int)&dword_AA08A0, v19); if ( *(_DWORD *)((char *)v6 + 18) ) { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v23 + 32))( v15 + 8, *(_DWORD *)((char *)v6 + 18)); (*(void (__stdcall **)(_DWORD, int, int, __int16 *, __int16 *))(*(_DWORD *)v26 + 64))( *((_WORD *)v6 + 1), v15, v15, &v27, &v27); v20 = (int)((char *)v4 + 58688); } else { v20 = (int)((char *)v4 + 58688); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v26 + 48))( v26, *((_WORD *)v6 + 1), v15, &v27, &v27); } if ( sub_4C81E0(&off_849C18, 27) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHAT_COLOR_CHANGE_REQ : Packet Too Long", 27); } ++*(_WORD *)(v20 + 4); --dword_750CB8; goto LABEL_67; } *((_WORD *)v6 + 1) = 13827; } else { *((_WORD *)v6 + 1) = 13827; } } else { *((_WORD *)v6 + 1) = 13827; } } else { *((_WORD *)v6 + 1) = 13827; } } else { *((_WORD *)v6 + 1) = 13828; } } else { *((_WORD *)v6 + 1) = 13827; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ : Try to use lot 0 item", 0); *((_WORD *)v6 + 1) = 13829; } } else { *((_WORD *)v6 + 1) = 13830; } } else { *((_WORD *)v6 + 1) = 13827; } } else { *((_WORD *)v6 + 1) = 13827; } } else { *((_WORD *)v6 + 1) = 13827; } } else { *((_WORD *)v6 + 1) = 13829; } goto LABEL_30; } v13 = 13829; } *((_WORD *)v6 + 1) = v13; LABEL_30: if ( !sub_4C81E0(&off_849C18, 5) ) goto LABEL_31; goto LABEL_26; } v7 = 13828; LABEL_5: *((_WORD *)v6 + 1) = v7; if ( !sub_4C81E0(&off_849C18, 5) ) { LABEL_15: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ : Packet Too Long", 5); --dword_750CB8; v28 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ"); } v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); LABEL_7: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); --dword_750CB8; v28 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHATC_OLOR_CHANGE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA08A0: using guessed type int dword_AA08A0; // AA0A90: using guessed type int dword_AA0A90; // 13244814: using guessed type __int16 word_13244814; // 13244818: using guessed type int dword_13244818; // 13258868: using guessed type int dword_13258868; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (0051D320) -------------------------------------------------------- int __thiscall sub_51D320(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 void *v6; // ebx@1 signed __int16 v7; // cx@4 int v8; // eax@7 int v9; // eax@9 int (__cdecl *v10)(_DWORD); // eax@18 int v11; // edi@19 int v12; // eax@19 signed __int16 v13; // ax@21 int v14; // eax@27 int v15; // edi@27 signed __int16 v16; // dx@30 int v17; // eax@39 int v18; // eax@45 int v19; // eax@47 int (__thiscall *v20)(_DWORD); // eax@55 signed int v21; // eax@55 int v22; // eax@58 int v23; // edi@61 signed __int16 v24; // cx@62 int v25; // eax@66 int v26; // eax@68 int v27; // eax@70 int v28; // eax@74 int v29; // eax@76 int v30; // eax@84 void *v31; // esi@88 int v32; // edx@88 __int16 v33; // ax@88 __int16 v34; // cx@88 int v35; // eax@88 int v36; // edx@88 int v37; // esi@88 __int64 v38; // qax@88 int v39; // esi@91 int v40; // eax@91 int v41; // esi@92 int v42; // eax@96 int v44; // [sp-8h] [bp-F0h]@55 unsigned int v45; // [sp-4h] [bp-ECh]@1 int v46; // [sp+10h] [bp-D8h]@33 int v47; // [sp+18h] [bp-D0h]@45 int v48; // [sp+1Ch] [bp-CCh]@27 unsigned int v49; // [sp+20h] [bp-C8h]@39 int v50; // [sp+24h] [bp-C4h]@29 __int16 v51; // [sp+28h] [bp-C0h]@55 int v52; // [sp+2Ch] [bp-BCh]@18 int v53; // [sp+30h] [bp-B8h]@35 unsigned int v54; // [sp+34h] [bp-B4h]@29 __int16 v55; // [sp+38h] [bp-B0h]@19 int v56; // [sp+3Ch] [bp-ACh]@1 void *v57; // [sp+40h] [bp-A8h]@1 int v58; // [sp+44h] [bp-A4h]@61 int v59; // [sp+48h] [bp-A0h]@88 char v60; // [sp+4Ch] [bp-9Ch]@84 char v61; // [sp+4Eh] [bp-9Ah]@91 __int16 v62; // [sp+B0h] [bp-38h]@61 char v63; // [sp+B2h] [bp-36h]@61 char v64; // [sp+B4h] [bp-34h]@88 int v65; // [sp+B8h] [bp-30h]@88 unsigned int v66; // [sp+BCh] [bp-2Ch]@88 int v67; // [sp+C0h] [bp-28h]@88 int v68; // [sp+C4h] [bp-24h]@88 int v69; // [sp+C8h] [bp-20h]@88 unsigned int v70; // [sp+D8h] [bp-10h]@1 int v71; // [sp+E4h] [bp-4h]@1 int v72; // [sp+E8h] [bp+0h]@1 v70 = (unsigned int)&v72 ^ __security_cookie; v45 = (unsigned int)&v72 ^ __security_cookie; v4 = this; v57 = this; v56 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (dword_13244820 & 1) == 0; v6 = off_849C18; v71 = 0; *(_DWORD *)off_849C18 = 907554904; if ( v5 ) { dword_13244820 |= 1u; word_1324481C = 70; atexit(nullsub_89); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1324481C) ) { LABEL_4: v7 = 13850; goto LABEL_5; } v9 = *(_DWORD *)((char *)v4 + 122); if ( v9 ) { if ( !*(_BYTE *)(*(_DWORD *)(v9 + 12) + 158) ) { *((_WORD *)v6 + 1) = 13852; if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_6; v8 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 764))(v4, v45); LABEL_8: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 12))(v8, v4); --dword_750CB8; v71 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ"); } if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2852))(v4, 0) == 1 || *((_BYTE *)v4 + 85728) & 8 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2784))(v4) == 1 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2532))(v4) == 1 || (v10 = *(int (__cdecl **)(_DWORD))(*((_DWORD *)v4 + 14672) + 16), v52 = (int)((char *)v4 + 58688), (unsigned __int8)v10(v45) == 1) ) goto LABEL_4; v11 = *(_BYTE *)(v56 + 2); v12 = *((_DWORD *)v4 + 9121); v55 = *(unsigned __int8 *)(v56 + 2) | 0x2400; if ( v11 >= (*(int (__thiscall **)(char *))(v12 + 8))((char *)v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ : wrong slot 1", v11); LABEL_21: v13 = 13850; LABEL_22: *((_WORD *)v6 + 1) = v13; goto LABEL_23; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int, int))(*(_DWORD *)v52 + 12))(9, v11) == 1 ) { *((_WORD *)v6 + 1) = 13850; goto LABEL_23; } v14 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v56 + 2)); v15 = v14; v48 = v14; if ( !v14 ) { v13 = 13853; goto LABEL_22; } v50 = v14 + 8; v54 = *(_WORD *)(v14 + 8); if ( (_WORD)v54 == -1 ) goto LABEL_30; v46 = *(_DWORD *)(v14 + 112); if ( !v46 ) { *((_WORD *)v6 + 1) = 13853; goto LABEL_23; } v53 = sub_418CB0((int)&dword_14D20890, v54); if ( !v53 ) { v16 = 13851; goto LABEL_31; } if ( !*(_DWORD *)v53 ) { v16 = 13851; goto LABEL_31; } v17 = (*(int (__stdcall **)(int))(**(_DWORD **)(v15 + 112) + 28))(v50); v49 = v17; if ( !v17 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ : Try to use lot 0 item", 0); v13 = 13851; goto LABEL_22; } if ( (unsigned int)v17 > *(_DWORD *)(*(_DWORD *)v53 + 106) ) { v16 = 13851; goto LABEL_31; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) == *(_DWORD *)(*(_DWORD *)v53 + 127) ) { v13 = 13854; goto LABEL_22; } v18 = sub_44F210((int)&dword_AA0A90, v54); v47 = v18; if ( !v18 ) { *((_WORD *)v6 + 1) = 13855; goto LABEL_23; } v19 = *(_DWORD *)(v18 + 4); if ( !v19 ) { *((_WORD *)v6 + 1) = 13855; goto LABEL_23; } if ( *(_DWORD *)(v19 + 36) != 37 ) { *((_WORD *)v6 + 1) = 13857; goto LABEL_23; } if ( !*(_WORD *)(v19 + 34) ) { *((_WORD *)v6 + 1) = 13857; goto LABEL_23; } if ( !sub_6484F0((int)&unk_133597D0, v54) ) { *((_WORD *)v6 + 1) = 13857; LABEL_23: if ( !sub_4C81E0(&off_849C18, 4) ) { LABEL_24: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ : Packet Too Long", 4); --dword_750CB8; LABEL_98: v71 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ"); } goto LABEL_66; } v20 = *(int (__thiscall **)(_DWORD))(*((_DWORD *)v4 + 9121) + 8); v51 = *(unsigned __int8 *)(v56 + 3) | 0x2400; v21 = v20((char *)v4 + 36484); v44 = *(_BYTE *)(v56 + 3); if ( *(_BYTE *)(v56 + 3) >= v21 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ : wrong slot 2", v44); v16 = 13850; LABEL_31: *((_WORD *)v6 + 1) = v16; if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_24; LABEL_83: v25 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 764))(v4, v45); goto LABEL_67; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int, int))(*(_DWORD *)v52 + 12))(9, v44) == 1 ) goto LABEL_21; v22 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v56 + 3)); v50 = v22; if ( !v22 ) { v13 = 13853; goto LABEL_22; } v53 = *(_WORD *)(v22 + 8); if ( (_WORD)v53 == -1 ) { LABEL_30: v16 = 13853; goto LABEL_31; } memcpy(&v58, (const void *)v50, 0x6Cu); v62 = *(_WORD *)(v50 + 108); v63 = *(_BYTE *)(v50 + 110); v23 = *(_DWORD *)(v50 + 112); if ( v23 ) { v26 = sub_418CB0((int)&dword_14D20890, v53); if ( v26 ) { v27 = *(_DWORD *)v26; if ( v27 ) { if ( *(_DWORD *)(v27 + 98) ) { v24 = 13856; } else { v28 = sub_44F210((int)&dword_AA0A90, v53); if ( v28 ) { v29 = *(_DWORD *)(v28 + 4); if ( v29 ) { if ( *(_WORD *)(v29 + 34) ) { if ( !sub_648520((int)&unk_133597D0, v54, v53) ) { *((_WORD *)v6 + 1) = 13856; if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_24; v4 = v57; goto LABEL_83; } v30 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v23 + 52))(v23, &v60); v56 = v30; if ( !v30 ) { *((_WORD *)v6 + 1) = 13856; goto LABEL_64; } if ( *(_BYTE *)v30 ) { v31 = v57; *(_WORD *)v6 = 13495; *((_WORD *)v6 + 1) = *(_WORD *)((*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v31 + 2004))( v31, v45) + 4); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v31 + 836))(v31); *((_WORD *)v6 + 4) = *((_WORD *)v31 + 2); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)v48; v32 = *(_DWORD *)(v48 + 4); v33 = v54; *((_DWORD *)v6 + 5) = v49 - 1; v34 = v53; *(_DWORD *)((char *)v6 + 14) = v32; *((_WORD *)v6 + 9) = v33; *((_DWORD *)v6 + 6) = v58; v35 = v59; v36 = v56; *((_WORD *)v6 + 16) = v34; *((_DWORD *)v6 + 7) = v35; *(_DWORD *)((char *)v6 + 135) = *(_DWORD *)v36; *(_DWORD *)((char *)v6 + 139) = 0; memcpy(&v64, &unk_AA0BCC, 0x24u); v66 = (((unsigned int)dword_AA0BC8 >> 19) & 0x3F) + 2160; _LN52(&v64); v37 = (unsigned __int8)(v69 - 100) | (((_WORD)v68 + 1) << 8) & 0x1F00 | ((v67 & 0x3F | ((v66 & 0x3F | (v65 << 6)) << 6)) << 13); v38 = 3600 * *(_WORD *)(*(_DWORD *)(v47 + 4) + 34); v54 = *(_DWORD *)v56; v49 = (unsigned __int8)(v69 - 100) | (((_WORD)v68 + 1) << 8) & 0x1F00 | ((v67 & 0x3F | ((v66 & 0x3F | (v65 << 6)) << 6)) << 13); sub_516260(&v54, v38); if ( sub_516170(&v54, &v49) ) *(_DWORD *)v56 = v37; else *(_DWORD *)v56 = v54; v39 = sub_5161F0((char *)v6 + 135); *(_DWORD *)((char *)v6 + 139) = sub_5161F0((void *)v56) - v39; v40 = *((_DWORD *)v6 + 5); memcpy((char *)v6 + 34, &v61, 0x64u); *((_BYTE *)v6 + 134) = v63; if ( v40 ) { (*(void (__stdcall **)(int, int))(*(_DWORD *)v46 + 32))(v48 + 8, v40); (*(void (__stdcall **)(_DWORD, int, int, __int16 *, __int16 *))(*(_DWORD *)v52 + 64))( *((_WORD *)v6 + 1), v48, v48, &v55, &v55); v41 = v52; } else { v41 = v52; (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v52 + 48))( v52, *((_WORD *)v6 + 1), v48, &v55, &v55); } (*(void (__thiscall **)(int, _DWORD, int, int *, __int16 *))(*(_DWORD *)v41 + 64))( v41, *((_WORD *)v6 + 1), v50, &v58, &v51); if ( sub_4C81E0(&off_849C18, 143) ) { v42 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v42); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ : Packet Too Long", 143); } ++*(_WORD *)(v41 + 4); --dword_750CB8; goto LABEL_98; } v24 = 13856; } else { v24 = 13856; } } else { v24 = 13855; } } else { v24 = 13855; } } } else { v24 = 13851; } } else { v24 = 13851; } } else { v24 = 13853; } *((_WORD *)v6 + 1) = v24; LABEL_64: if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_24; v4 = v57; LABEL_66: v25 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 764))(v4, v45); LABEL_67: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v25 + 12))(v25, v4); --dword_750CB8; goto LABEL_98; } v7 = 13852; LABEL_5: *((_WORD *)v6 + 1) = v7; if ( sub_4C81E0(&off_849C18, 4) ) { v8 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 764))(v4, v45); goto LABEL_8; } LABEL_6: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ : Packet Too Long", 4); --dword_750CB8; v71 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_TERMEXTEND_REQ"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // AA0BC8: using guessed type int dword_AA0BC8; // 1324481C: using guessed type __int16 word_1324481C; // 13244820: using guessed type int dword_13244820; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (0051DC20) -------------------------------------------------------- int __stdcall sub_51DC20(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@3 int v4; // eax@4 int v5; // ST04_4@5 __time32_t v6; // eax@5 __time32_t v7; // eax@5 int v8; // eax@6 void *v9; // eax@7 int v10; // eax@9 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_TERMEXTEND_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_TERMEXTEND_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( v2 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 10) == 13848 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 2), 0) ) { v5 = *(_WORD *)(a1 + 2); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_TERMEXTEND_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 2)); } v9 = off_849C18; *(_WORD *)off_849C18 = 12376; *((_WORD *)v9 + 1) = *(_WORD *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 4) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::gds_NC_ITEMDB_TERMEXTEND_ACK : Packet Too Long", 4); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_TERMEXTEND_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051DDA0) -------------------------------------------------------- int __thiscall sub_51DDA0(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // ebx@5 char v6; // al@7 int v7; // eax@7 signed __int64 v8; // qax@9 int v9; // ST2C_4@9 int v10; // esi@9 char v11; // al@9 signed __int64 v12; // qax@9 char v13; // al@9 int v14; // esi@10 int v15; // ecx@11 int v16; // eax@11 signed int v17; // eax@12 int v18; // eax@14 int v19; // eax@15 int v20; // edx@16 unsigned __int8 v21; // cf@16 signed int v22; // eax@18 int v23; // eax@20 int v24; // eax@21 int v25; // eax@22 int v26; // edi@26 signed int v27; // eax@27 int v28; // eax@29 int v29; // ecx@31 int v30; // ecx@33 int v31; // eax@43 void *v32; // ecx@43 int v34; // esi@52 int v35; // eax@53 int v36; // edx@56 void *v37; // ecx@56 int v38; // eax@60 int v39; // esi@62 int v40; // edi@64 int v41; // edi@66 int v42; // eax@68 int v43; // eax@69 int v44; // eax@69 unsigned int v45; // [sp-4h] [bp-B4h]@1 int v46; // [sp-4h] [bp-B4h]@4 int v47; // [sp-4h] [bp-B4h]@40 signed int v48; // [sp-4h] [bp-B4h]@42 int v49; // [sp-4h] [bp-B4h]@54 int v50; // [sp+14h] [bp-9Ch]@7 __int64 v51; // [sp+18h] [bp-98h]@9 int v52; // [sp+20h] [bp-90h]@9 void *v53; // [sp+28h] [bp-88h]@1 int v54; // [sp+2Ch] [bp-84h]@9 int v55; // [sp+30h] [bp-80h]@62 int v56; // [sp+34h] [bp-7Ch]@66 __int16 v57; // [sp+38h] [bp-78h]@62 __int16 v58; // [sp+9Ch] [bp-14h]@62 char v59; // [sp+9Eh] [bp-12h]@62 unsigned int v60; // [sp+A0h] [bp-10h]@1 int v61; // [sp+ACh] [bp-4h]@1 int v62; // [sp+B0h] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v45 = (unsigned int)&v62 ^ __security_cookie; v4 = (int)this; v53 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v61 = 0; if ( !(dword_13244828 & 1) ) { dword_13244828 |= 1u; word_13244824 = 70; atexit(nullsub_90); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13244824) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 12, 95, 13953, v45); v61 = -1; v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ"; LABEL_47: --dword_750CB8; return sub_467660((int)&unk_D020420, v46); } v5 = off_849C18; *(_DWORD *)((char *)off_849C18 + 29) = 0; *(_DWORD *)((char *)v5 + 33) = 0; *(_DWORD *)((char *)v5 + 39) = 0; if ( !(*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v4 + 1180))(v4, v45) || (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1244))(v4), v7 = sub_63D850((int)&unk_14D130B8, v6), (v50 = v7) == 0) || v7 == 34 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Try to use invalid class", 4); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 95, 13954); v61 = -1; LABEL_46: v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ"; goto LABEL_47; } v8 = sub_63D370((int)&unk_14D130B8, v7); v9 = HIDWORD(v8); v10 = v8; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1244))(v4); v12 = sub_63D220(v11); HIDWORD(v51) = v9 ^ HIDWORD(v12); LODWORD(v51) = v10 ^ v12; v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1244))(v4); v52 = sub_63D5F0((int)&unk_14D130B8, v13); v54 = 0; sub_56E9E0((int)&v54); while ( sub_50E7B0((int)&unk_132577A0, (int)&v54) ) { v14 = sub_50E7D0((int)&unk_132577A0, (int)&v54); if ( sub_445FC0((void *)(v4 + 84388), **(_WORD **)(v14 + 4)) == 1 ) { v15 = *(_DWORD *)(v14 + 4); v16 = *(_DWORD *)(v15 + 267); if ( v50 == v16 ) { *(_WORD *)((char *)v5 + 2 * (*(_DWORD *)((char *)v5 + 39))++ + 43) = *(_WORD *)v15; v17 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(v14 + 4) + 2)); if ( v17 == -1 ) LOWORD(v17) = -1; v18 = sub_418CB0((int)&dword_14D20890, v17); if ( !v18 || (v19 = *(_DWORD *)v18) == 0 ) continue; v20 = *(_DWORD *)(v19 + 211); v21 = __CFADD__(v20, *(_DWORD *)((char *)v5 + 29)); *(_DWORD *)((char *)v5 + 29) += v20; } else { if ( v52 != v16 ) continue; *(_WORD *)((char *)v5 + 2 * (*(_DWORD *)((char *)v5 + 39))++ + 43) = *(_WORD *)v15; v22 = sub_639620(&unk_14D20898, (unsigned __int8 *)(*(_DWORD *)(v14 + 4) + 2)); if ( v22 == -1 ) LOWORD(v22) = -1; v23 = sub_418CB0((int)&dword_14D20890, v22); if ( !v23 || (v24 = *(_DWORD *)v23) == 0 ) continue; v25 = *(_DWORD *)(v24 + 211); v21 = __CFADD__(v25, *(_DWORD *)((char *)v5 + 29)); *(_DWORD *)((char *)v5 + 29) += v25; } *(_DWORD *)((char *)v5 + 33) += v21; } } sub_56E9E0((int)&v54); if ( sub_582B30((int)&dword_13258088, (int)&v54) ) { do { v26 = sub_583910((int)&dword_13258088, (unsigned int *)&v54); if ( (unsigned __int8)(1 << *(_WORD *)v26 % 8) & *(_BYTE *)(*(_WORD *)v26 / 8 + *((_DWORD *)v53 + 21106)) ) { v27 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v26 + 2)); if ( v27 == -1 ) LOWORD(v27) = -1; v28 = sub_418CB0((int)&dword_14D20890, v27); if ( v28 ) { if ( *(_DWORD *)v28 ) { v29 = *(_DWORD *)(*(_DWORD *)v28 + 207); if ( v50 == v29 || v52 == v29 ) { *(_WORD *)((char *)v5 + 2 * (*(_DWORD *)((char *)v5 + 39))++ + 43) = *(_WORD *)v26 + 30000; v30 = *(_DWORD *)(*(_DWORD *)v28 + 211); v21 = __CFADD__(v30, *(_DWORD *)((char *)v5 + 29)); *(_DWORD *)((char *)v5 + 29) += v30; *(_DWORD *)((char *)v5 + 33) += v21; } } } } } while ( sub_582B30((int)&dword_13258088, (int)&v54) ); v4 = (int)v53; } *((_BYTE *)v5 + 22) = sub_5164A0(v4); *((_BYTE *)v5 + 23) = *(_BYTE *)(v4 + 32748); *((_BYTE *)v5 + 24) = *(_BYTE *)(v4 + 32749); *((_BYTE *)v5 + 25) = *(_BYTE *)(v4 + 32750); *((_BYTE *)v5 + 26) = *(_BYTE *)(v4 + 32751); *((_BYTE *)v5 + 27) = *(_BYTE *)(v4 + 32752); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 95, 13953); LABEL_45: v61 = -1; goto LABEL_46; } if ( sub_63F720((void *)(v4 + 32816)) > 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : wrong equip", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 95, 13957); goto LABEL_45; } v47 = *(_BYTE *)(a2 + 2); if ( v47 >= (*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 36484) + 8))(v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : wrong stuff slot", v47); LABEL_42: v48 = 13953; LABEL_43: v31 = *(_DWORD *)v4; v32 = (void *)v4; LABEL_44: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v31 + 776))(v32, 12, 95, v48); goto LABEL_45; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v4 + 58688) + 12))(v4 + 58688, 9, v47) == 1 || *(_WORD *)(v4 + 85728) & 0xC || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2784))(v4) == 1 ) goto LABEL_42; v34 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, *(_BYTE *)(a2 + 2)); if ( !v34 ) goto LABEL_56; v35 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v34 + 8)); if ( !v35 ) { v49 = 1; LABEL_55: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Try to use invalid stuff item", v49); LABEL_56: v36 = *(_DWORD *)v4; v37 = (void *)v4; LABEL_57: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v36 + 776))(v37, 12, 95, 13956); goto LABEL_45; } if ( !*(_DWORD *)v35 || !*(_DWORD *)(v35 + 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Try to use invalid stuff item", 2); v48 = 13956; goto LABEL_43; } v38 = *(_DWORD *)(v34 + 112); if ( !v38 ) { v49 = 3; goto LABEL_55; } memcpy(&v55, (const void *)v34, 0x6Cu); v39 = v34 + 108; v58 = *(_WORD *)v39; v59 = *(_BYTE *)(v39 + 2); if ( v57 != word_14D211D4 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Try to use invalid stuff item", 4); v37 = v53; v36 = *(_DWORD *)v53; goto LABEL_57; } v40 = (*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v38 + 28))(v38, &v57); if ( !v40 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Try to use invalid stuff item", 5); v32 = v53; v31 = *(_DWORD *)v53; v48 = 13956; goto LABEL_44; } *(_WORD *)v5 = 13501; *(_DWORD *)((char *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v53 + 836))(v53); *((_WORD *)v5 + 3) = *((_WORD *)v53 + 2); *((_DWORD *)v5 + 2) = v55; *((_DWORD *)v5 + 3) = v56; *((_WORD *)v5 + 8) = v57; *(_DWORD *)((char *)v5 + 18) = v40 - 1; *((_BYTE *)v5 + 28) = sub_63D560(v51); *(_WORD *)((char *)v5 + 37) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v53 + 2004))(v53) + 4); v41 = 2 * *(_DWORD *)((char *)v5 + 39) + 43; if ( sub_4C81E0(&off_849C18, v41) ) { v42 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v42); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Packet Too Long", v41); } v43 = (*(int (__thiscall **)(void *))(*(_DWORD *)v53 + 2004))(v53); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v43 + 72))( v43, *(_WORD *)((char *)v5 + 37), *(_DWORD *)((char *)v5 + 29), *(_DWORD *)((char *)v5 + 33), 1); v44 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v53 + 2004))(v53); ++*(_WORD *)(v44 + 4); --dword_750CB8; v61 = -1; v46 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ"; return sub_467660((int)&unk_D020420, v46); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244824: using guessed type __int16 word_13244824; // 13244828: using guessed type int dword_13244828; // 13258088: using guessed type int dword_13258088; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211D4: using guessed type __int16 word_14D211D4; //----- (0051E4F0) -------------------------------------------------------- int __thiscall sub_51E4F0(void *this) { void *v1; // esi@1 void *v2; // edi@5 char v3; // al@7 int v4; // eax@7 bool v5; // zf@8 signed __int64 v6; // qax@11 int v7; // ST24_4@11 int v8; // ebx@11 char v9; // al@11 signed __int64 v10; // qax@11 unsigned int v11; // ebx@11 int v12; // ST24_4@11 char v13; // al@11 int v14; // ebx@12 int v15; // eax@13 int v16; // ecx@13 signed int v17; // eax@14 int v18; // eax@16 int v19; // eax@17 int v20; // edx@18 unsigned __int8 v21; // cf@18 signed int v22; // eax@20 int v23; // eax@22 int v24; // eax@23 int v25; // eax@24 int v26; // ebx@28 signed int v27; // eax@29 int v28; // eax@31 int v29; // eax@32 int v30; // ecx@33 int v31; // ecx@34 unsigned __int8 v32; // cf@34 int v33; // eax@36 int v34; // eax@42 int v36; // [sp-4h] [bp-38h]@4 int v37; // [sp+1Ch] [bp-18h]@11 int v38; // [sp+20h] [bp-14h]@7 int v39; // [sp+24h] [bp-10h]@11 int v40; // [sp+30h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_OpenClassChangeMenu"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_OpenClassChangeMenu"; dword_750AB8[dword_750CB8++] = -1; v40 = 0; if ( !(dword_13244830 & 1) ) { dword_13244830 |= 1u; word_1324482C = 70; atexit(nullsub_91); } if ( (1 << **((_BYTE **)v1 + 957)) & (unsigned __int16)word_1324482C ) { v2 = off_849C18; *(_WORD *)off_849C18 = 12384; *(_WORD *)((char *)v2 + 11) = 13952; *((_BYTE *)v2 + 2) = 0; *(_DWORD *)((char *)v2 + 3) = 0; *(_DWORD *)((char *)v2 + 7) = 0; if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1180))(v1) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CLASS_CHANGE_REQ : Try to use invalid class", 4); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 12, 95, 13954); LABEL_43: v36 = (int)"ShineObjectClass::ShinePlayer::sp_OpenClassChangeMenu"; goto LABEL_44; } v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1); v4 = sub_63D850((int)&unk_14D130B8, v3); v38 = v4; if ( !v4 ) { *((_BYTE *)v2 + 2) = 0; v5 = sub_4C81E0(&off_849C18, 13) == 0; goto LABEL_40; } if ( v4 == 34 ) { *((_BYTE *)v2 + 2) = 0; v5 = sub_4C81E0(&off_849C18, 13) == 0; goto LABEL_40; } v6 = sub_63D370((int)&unk_14D130B8, v4); v7 = HIDWORD(v6); v8 = v6; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1); v10 = sub_63D220(v9); v11 = v10 ^ v8; v12 = v7 ^ HIDWORD(v10); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1); v37 = sub_63D5F0((int)&unk_14D130B8, v13); *((_BYTE *)v2 + 2) = sub_63D560(__PAIR__(v12, v11)); v39 = 0; sub_56E9E0((int)&v39); while ( sub_50E7B0((int)&unk_132577A0, (int)&v39) ) { v14 = sub_50E7D0((int)&unk_132577A0, (int)&v39); if ( sub_445FC0((char *)v1 + 84388, **(_WORD **)(v14 + 4)) == 1 ) { v15 = *(_DWORD *)(v14 + 4); v16 = *(_DWORD *)(v15 + 267); if ( v38 == v16 ) { v17 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v15 + 2)); if ( v17 == -1 ) LOWORD(v17) = -1; v18 = sub_418CB0((int)&dword_14D20890, v17); if ( !v18 || (v19 = *(_DWORD *)v18) == 0 ) continue; v20 = *(_DWORD *)(v19 + 211); v21 = __CFADD__(v20, *(_DWORD *)((char *)v2 + 3)); *(_DWORD *)((char *)v2 + 3) += v20; } else { if ( v37 != v16 ) continue; v22 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v15 + 2)); if ( v22 == -1 ) LOWORD(v22) = -1; v23 = sub_418CB0((int)&dword_14D20890, v22); if ( !v23 || (v24 = *(_DWORD *)v23) == 0 ) continue; v25 = *(_DWORD *)(v24 + 211); v21 = __CFADD__(v25, *(_DWORD *)((char *)v2 + 3)); *(_DWORD *)((char *)v2 + 3) += v25; } *(_DWORD *)((char *)v2 + 7) += v21; } } sub_56E9E0((int)&v39); if ( !sub_582B30((int)&dword_13258088, (int)&v39) ) { LABEL_39: v5 = sub_4C81E0(&off_849C18, 13) == 0; LABEL_40: if ( v5 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_OpenClassChangeMenu : Packet Too Long", 13); } else { v34 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v34 + 12))(v34, v1, &off_849C18); } goto LABEL_43; } while ( 1 ) { v26 = sub_583910((int)&dword_13258088, (unsigned int *)&v39); if ( !((unsigned __int8)(1 << *(_WORD *)v26 % 8) & *(_BYTE *)(*(_WORD *)v26 / 8 + *((_DWORD *)v1 + 21106))) ) goto LABEL_38; v27 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v26 + 2)); if ( v27 == -1 ) LOWORD(v27) = -1; v28 = sub_418CB0((int)&dword_14D20890, v27); if ( !v28 || (v29 = *(_DWORD *)v28) == 0 ) goto LABEL_38; v30 = *(_DWORD *)(v29 + 207); if ( v38 == v30 ) break; if ( v37 == v30 ) { v33 = *(_DWORD *)(v29 + 211); v32 = __CFADD__(v33, *(_DWORD *)((char *)v2 + 3)); *(_DWORD *)((char *)v2 + 3) += v33; goto LABEL_37; } LABEL_38: if ( !sub_582B30((int)&dword_13258088, (int)&v39) ) goto LABEL_39; } v31 = *(_DWORD *)(v29 + 211); v32 = __CFADD__(v31, *(_DWORD *)((char *)v2 + 3)); *(_DWORD *)((char *)v2 + 3) += v31; LABEL_37: *(_DWORD *)((char *)v2 + 7) += v32; goto LABEL_38; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 12, 96, 13953); v36 = (int)"ShineObjectClass::ShinePlayer::sp_OpenClassChangeMenu"; LABEL_44: --dword_750CB8; v40 = -1; return sub_467660((int)&unk_D020420, v36); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1324482C: using guessed type __int16 word_1324482C; // 13244830: using guessed type int dword_13244830; // 13258088: using guessed type int dword_13258088; // 14D20890: using guessed type int dword_14D20890; //----- (0051E910) -------------------------------------------------------- FILE *__userpurge sub_51E910(int a1, int a2, int a3, int a4, int a5) { int v5; // ebx@1 FILE *result; // eax@4 int v7; // eax@7 int v8; // ecx@9 int v9; // ecx@11 char v10; // dl@12 int v11; // edi@14 int v12; // eax@14 void *v13; // ecx@14 int v14; // eax@16 int v15; // eax@20 int v16; // eax@20 int v17; // esi@20 int v18; // eax@22 unsigned __int16 v19; // ax@22 int v20; // eax@23 int v21; // eax@24 int v22; // eax@24 int v23; // esi@28 int v24; // eax@29 int v25; // eax@38 int v26; // edi@38 int v27; // eax@40 void *v28; // eax@42 unsigned __int16 *v29; // eax@43 int v30; // ecx@48 int v31; // edi@49 void *v32; // esi@50 int v33; // edi@50 int v34; // eax@52 int v35; // eax@54 int v36; // eax@55 __int16 v37; // [sp-10h] [bp-10Ch]@15 char v38; // [sp-Ch] [bp-108h]@15 char v39; // [sp-8h] [bp-104h]@15 int v40; // [sp-4h] [bp-100h]@14 int v41; // [sp+8h] [bp-F4h]@48 int v42; // [sp+Ch] [bp-F0h]@14 int v43; // [sp+10h] [bp-ECh]@28 void *v44; // [sp+10h] [bp-ECh]@42 int v45; // [sp+14h] [bp-E8h]@29 int v46; // [sp+18h] [bp-E4h]@34 __int16 v47; // [sp+1Ch] [bp-E0h]@50 unsigned __int8 v48; // [sp+23h] [bp-D9h]@16 int v49; // [sp+24h] [bp-D8h]@32 int v50; // [sp+28h] [bp-D4h]@50 __int16 v51; // [sp+2Ch] [bp-D0h]@49 __int16 v52; // [sp+90h] [bp-6Ch]@32 char v53; // [sp+92h] [bp-6Ah]@32 int v54; // [sp+94h] [bp-68h]@24 int v55; // [sp+98h] [bp-64h]@24 int v56; // [sp+9Ch] [bp-60h]@24 int v57; // [sp+A0h] [bp-5Ch]@24 int v58; // [sp+A4h] [bp-58h]@24 char v59[4]; // [sp+A8h] [bp-54h]@24 int v60; // [sp+ACh] [bp-50h]@24 int v61; // [sp+B0h] [bp-4Ch]@24 int v62; // [sp+B4h] [bp-48h]@24 int v63; // [sp+B8h] [bp-44h]@24 int v64; // [sp+BCh] [bp-40h]@24 int v65; // [sp+C0h] [bp-3Ch]@24 int v66; // [sp+C4h] [bp-38h]@24 char v67; // [sp+C8h] [bp-34h]@24 int v68; // [sp+C9h] [bp-33h]@24 int v69; // [sp+CDh] [bp-2Fh]@24 int v70; // [sp+D1h] [bp-2Bh]@24 int v71; // [sp+D5h] [bp-27h]@24 int v72; // [sp+D9h] [bp-23h]@24 int v73; // [sp+DDh] [bp-1Fh]@24 int v74; // [sp+E1h] [bp-1Bh]@24 int v75; // [sp+E5h] [bp-17h]@24 char v76; // [sp+E9h] [bp-13h]@24 int v77; // [sp+EAh] [bp-12h]@24 int v78; // [sp+EEh] [bp-Eh]@24 __int16 v79; // [sp+F2h] [bp-Ah]@24 char v80; // [sp+F4h] [bp-8h]@24 unsigned int v81; // [sp+F8h] [bp-4h]@1 int v82; // [sp+FCh] [bp+0h]@1 v81 = (unsigned int)&v82 ^ __security_cookie; v5 = a1; if ( !(dword_1324483C & 1) ) { dword_1324483C |= 1u; word_13244838 = 70; atexit(nullsub_92); } if ( !((1 << **(_BYTE **)(v5 + 3828)) & (unsigned __int16)word_13244838) ) return sub_516630((void *)v5, 14161, 0, 0); if ( !*(_DWORD *)(a3 + 2) ) return sub_516630((void *)v5, 14158, 0, 0); v7 = sub_64B3F0(&unk_14D20370, *(_DWORD *)(a3 + 2)); if ( !v7 ) return sub_516630((void *)v5, 14156, 0, 0); v8 = *(_DWORD *)(v5 + 122); if ( !v8 || (v9 = *(_DWORD *)(v8 + 16)) == 0 || (v10 = *(_BYTE *)(v9 + 58)) != 0 && v10 != 6 ) return sub_516630((void *)v5, 14162, 0, 0); v40 = a2; v11 = v7 + 2; v42 = v7 + 2; v12 = _mbscmp((const unsigned __int8 *)(v9 + 2), (const unsigned __int8 *)(v7 + 2)); v13 = (void *)v5; if ( !v12 ) { v39 = 0; v38 = 0; v37 = 14159; return sub_516630(v13, v37, v38, v39); } v48 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1240))(v5); v14 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)v11, 0); if ( v14 && ((unsigned __int16)v48 < *(_WORD *)(v14 + 34) || (unsigned __int16)v48 > *(_WORD *)(v14 + 36)) ) { v39 = *(_BYTE *)(v14 + 36); v38 = *(_BYTE *)(v14 + 34); v37 = 14157; LABEL_58: v13 = (void *)v5; return sub_516630(v13, v37, v38, v39); } v15 = sub_418B00((int)byte_85A2C0, v11); v16 = sub_63AB60(&unk_CFCF398, (const char *)v15); v17 = v16; if ( !v16 || (v18 = sub_418B00((int)byte_85A2C0, v16), v19 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v18), v19 == -1) || (v20 = sub_4190D0((int)&unk_14D20370, v19)) == 0 ) { v39 = 0; v38 = 0; v37 = 14156; goto LABEL_58; } v54 = 0; v55 = 0; v56 = 0; v57 = 0; v58 = 0; *(_DWORD *)v59 = 0; v60 = 0; v61 = 0; v62 = 0; v63 = 0; v64 = 0; v65 = 0; v66 = 0; v67 = 0; v68 = 0; v69 = 0; v70 = 0; v71 = 0; v72 = 0; v73 = 0; v74 = 0; v75 = 0; v76 = 0; v77 = *(_DWORD *)(v20 + 50); v21 = *(_DWORD *)(v20 + 54); v79 = 0; v78 = v21; v80 = *(_BYTE *)(v17 + 166); v22 = sub_418B00((int)byte_85A2C0, v11); strncpy(v59, (const char *)v22, 0xCu); LOBYTE(v62) = 0; if ( sub_461940(v5, v5, (int)&v54) ) { v39 = 0; v38 = 0; v37 = 14158; goto LABEL_58; } if ( !(dword_1324483C & 2) ) { dword_1324483C |= 2u; word_13244834 = word_14D211D6; } v23 = 0; v43 = (*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 36484) + 8))(v5 + 36484); if ( v43 <= 0 ) goto LABEL_62; while ( 1 ) { v24 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 36484))(v5 + 36484, v23); v45 = v24; if ( word_13244834 == *(_WORD *)(v24 + 8) ) break; ++v23; if ( v23 >= v43 ) { v39 = 0; v38 = 0; v37 = 14153; goto LABEL_58; } } memcpy(&v49, (const void *)v24, 0x6Cu); v52 = *(_WORD *)(v24 + 108); v53 = *(_BYTE *)(v24 + 110); if ( v23 == -1 ) goto LABEL_62; v46 = v5 + 58688; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 58688) + 16))(v5 + 58688) == 1 || (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v5 + 58688) + 12))(v5 + 58688, 9, v23) == 1 ) goto LABEL_63; v13 = (void *)v5; if ( *(_WORD *)(v5 + 85728) & 0xC ) { v39 = 0; v38 = 0; v37 = 14161; return sub_516630(v13, v37, v38, v39); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2784))(v5) == 1 ) { LABEL_63: v39 = 0; v38 = 0; v37 = 14161; goto LABEL_58; } v25 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v45 + 8)); v26 = v25; if ( !v25 || (v27 = *(_DWORD *)v25, !*(_DWORD *)v26) || !*(_DWORD *)(v26 + 4) || (v28 = sub_583BA0(&unk_132577A0, v27 + 310), (v44 = v28) == 0) || (v29 = (unsigned __int16 *)*((_DWORD *)v28 + 1)) == 0 ) goto LABEL_64; if ( !sub_4695E0(v5 + 84388, v5, *v29) ) { v39 = 0; v38 = 0; v37 = 14155; goto LABEL_58; } if ( (unsigned int)v48 < *(_DWORD *)(*(_DWORD *)v26 + 127) ) { v39 = 0; v38 = 0; v37 = 14154; goto LABEL_58; } v30 = *(_DWORD *)(v45 + 112); v41 = v30; if ( !v30 ) { LABEL_64: v39 = 0; v38 = 0; v37 = 14160; goto LABEL_58; } v31 = (*(int (__stdcall **)(__int16 *))(*(_DWORD *)v30 + 28))(&v51); if ( !v31 ) { LABEL_62: v39 = 0; v38 = 0; v37 = 14153; goto LABEL_58; } v47 = v23 & 0x3FF | 0x2400; v32 = off_849C18; *(_WORD *)off_849C18 = 13513; v33 = v31 - 1; *((_WORD *)v32 + 1) = *(_WORD *)((*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 2004))(v5, v40) + 4); *((_DWORD *)v32 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v32 + 4) = *(_WORD *)(v5 + 4); *(_DWORD *)((char *)v32 + 10) = *(_DWORD *)v42; *(_DWORD *)((char *)v32 + 14) = *(_DWORD *)(v42 + 4); *(_DWORD *)((char *)v32 + 18) = *(_DWORD *)(v42 + 8); *((_WORD *)v32 + 11) = **((_WORD **)v44 + 1); *((_DWORD *)v32 + 6) = *(_DWORD *)(*((_DWORD *)v44 + 1) + 207); *((_DWORD *)v32 + 7) = v49; *((_DWORD *)v32 + 8) = v50; *((_WORD *)v32 + 18) = v51; *(_DWORD *)((char *)v32 + 38) = v33; if ( sub_4C81E0(&off_849C18, 42) ) { v34 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v34); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MAPLINK_SCROLL_REQ : Packet Too Long", 42); } if ( v33 ) { (*(void (__stdcall **)(__int16 *))(*(_DWORD *)v41 + 32))(&v51); v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); result = (FILE *)(*(int (__thiscall **)(int, _DWORD, int, int *, __int16 *, __int16 *))(*(_DWORD *)v46 + 64))( v46, *(_WORD *)(v35 + 4), v45, &v49, &v47, &v47); ++*(_WORD *)(v5 + 58692); } else { v36 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); result = (FILE *)(*(int (__cdecl **)(_DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v46 + 48))( *(_WORD *)(v36 + 4), v45, &v47, &v47); ++*(_WORD *)(v5 + 58692); } return result; } // 51E910: could not find valid save-restore pair for edi // 86FEB8: using guessed type int __security_cookie; // D020440: using guessed type int dword_D020440; // 13244834: using guessed type __int16 word_13244834; // 13244838: using guessed type __int16 word_13244838; // 1324483C: using guessed type int dword_1324483C; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211D6: using guessed type __int16 word_14D211D6; //----- (0051EF20) -------------------------------------------------------- void *__thiscall sub_51EF20(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // esi@1 __int16 v5; // ax@2 void *v6; // eax@2 void *v7; // edi@2 void *result; // eax@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ItemSmallBag::isb_Store"); dword_7508B8[dword_750CB8] = (int)"ItemSmallBag::isb_Store"; dword_750AB8[dword_750CB8++] = -1; v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, a2); if ( v4 ) { sub_63FD60(v4, a3); v5 = sub_63FD50(v4); v6 = sub_63ACA0(dword_1508B168, v5); v7 = v6; *(_DWORD *)(v4 + 16) = v6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemSmallBag::isb_Store"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemSmallBag::isb_Store"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051F020) -------------------------------------------------------- int __thiscall sub_51F020(void *this, char a2, int a3, char a4) { void *v4; // edi@1 signed int v5; // ebx@1 int (__stdcall *v6)(_DWORD); // edx@3 char v7; // al@3 int v8; // esi@10 int v9; // eax@10 unsigned int v10; // eax@11 signed int v11; // esi@17 int v12; // eax@17 int v13; // ebx@17 void *v14; // esi@22 int v15; // eax@22 int v16; // edi@22 int v17; // eax@24 int v19; // [sp-4h] [bp-50h]@8 char v20; // [sp+10h] [bp-3Ch]@3 int v21; // [sp+3Ch] [bp-10h]@1 int v22; // [sp+48h] [bp-4h]@1 v4 = this; v21 = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v22 = 0; if ( a4 ) { if ( !a3 ) { --dword_750CB8; LABEL_27: v19 = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; goto LABEL_28; } sub_42A950((int)&v20, 0, 0, a3, 0, 0); v6 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(a3 + 112) + 32); LOBYTE(v22) = 1; v7 = v6(&v20); LOBYTE(v22) = 0; if ( !v7 ) { nullsub_2(&v20); LABEL_26: --dword_750CB8; goto LABEL_27; } nullsub_2(&v20); LABEL_10: v8 = *((_DWORD *)v4 + 40228); v9 = *(_DWORD *)(v8 + 10); if ( v9 ) { v10 = v9 - 1; *(_DWORD *)(v8 + 10) = v10; if ( a2 || !(v10 % 0xA) ) sub_518CF0(v4); if ( !(*(_DWORD *)(v8 + 10) % 0xAu) ) sub_518E00(v4); if ( !*(_DWORD *)(v8 + 10) ) { v11 = 13; v12 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, 13); v13 = v12; if ( !v12 || *(_WORD *)(v12 + 8) == -1 ) { v11 = 11; v13 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, 11); } if ( v13 && *(_WORD *)(v13 + 8) != -1 ) { sub_517B60(v4, 8, v11); sub_450880(v4, v13, 8, v11, 0); v14 = off_849C18; *(_WORD *)off_849C18 = 1554; *(_DWORD *)((char *)v14 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((char *)v14 + 6) = *(_DWORD *)v13; *(_DWORD *)((char *)v14 + 10) = *(_DWORD *)(v13 + 4); v15 = *(_DWORD *)((char *)v4 + 122); *(_DWORD *)((char *)v14 + 14) = *(_DWORD *)v15; *(_DWORD *)((char *)v14 + 18) = *(_DWORD *)(v15 + 4); *(_DWORD *)((char *)v14 + 22) = *(_DWORD *)(v15 + 8); v16 = *(_DWORD *)((char *)v4 + 102); *(_DWORD *)((char *)v14 + 26) = *(_DWORD *)v16; *(_DWORD *)((char *)v14 + 30) = *(_DWORD *)(v16 + 4); if ( sub_4C81E0(&off_849C18, 34) ) { v17 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v17); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 34); } } v5 = -1; } } goto LABEL_26; } if ( byte_132447D8 ) { byte_132447D8 = 0; goto LABEL_10; } --dword_750CB8; v19 = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; LABEL_28: v22 = v5; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132447D8: using guessed type char byte_132447D8; // 14D148D0: using guessed type int dword_14D148D0; //----- (0051F280) -------------------------------------------------------- int __thiscall sub_51F280(void *this, char a2, int a3, char a4) { void *v4; // edi@1 signed int v5; // esi@1 int (__stdcall *v6)(_DWORD); // edx@3 char v7; // al@3 int v8; // ebx@10 int v9; // eax@10 unsigned int v10; // eax@11 int v11; // eax@17 int v12; // ebx@17 void *v13; // esi@19 int v14; // eax@19 int v15; // edi@19 int v16; // eax@21 int v18; // [sp-4h] [bp-50h]@8 char v19; // [sp+10h] [bp-3Ch]@3 int v20; // [sp+3Ch] [bp-10h]@1 int v21; // [sp+48h] [bp-4h]@1 v4 = this; v20 = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumShieldChargeDecrease"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumShieldChargeDecrease"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumShieldChargeDecrease"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v21 = 0; if ( a4 ) { if ( !a3 ) { --dword_750CB8; LABEL_24: v18 = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumShieldChargeDecrease"; goto LABEL_25; } sub_42A950((int)&v19, 0, 0, a3, 0, 0); v6 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(a3 + 112) + 32); LOBYTE(v21) = 1; v7 = v6(&v19); LOBYTE(v21) = 0; if ( !v7 ) { nullsub_2(&v19); LABEL_23: --dword_750CB8; goto LABEL_24; } nullsub_2(&v19); LABEL_10: v8 = *((_DWORD *)v4 + 40229); v9 = *(_DWORD *)(v8 + 10); if ( v9 ) { v10 = v9 - 1; *(_DWORD *)(v8 + 10) = v10; if ( a2 || !(v10 % 0xA) ) sub_519300(v4); if ( !(*(_DWORD *)(v8 + 10) % 0xAu) ) sub_519410(v4); if ( !*(_DWORD *)(v8 + 10) ) { v11 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, 29); v12 = v11; if ( v11 ) { if ( *(_WORD *)(v11 + 8) != -1 ) { sub_517B60(v4, 8, 29); sub_450880(v4, v12, 8, 29, 0); v13 = off_849C18; *(_WORD *)off_849C18 = 1554; *(_DWORD *)((char *)v13 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((char *)v13 + 6) = *(_DWORD *)v12; *(_DWORD *)((char *)v13 + 10) = *(_DWORD *)(v12 + 4); v14 = *(_DWORD *)((char *)v4 + 122); *(_DWORD *)((char *)v13 + 14) = *(_DWORD *)v14; *(_DWORD *)((char *)v13 + 18) = *(_DWORD *)(v14 + 4); *(_DWORD *)((char *)v13 + 22) = *(_DWORD *)(v14 + 8); v15 = *(_DWORD *)((char *)v4 + 102); *(_DWORD *)((char *)v13 + 26) = *(_DWORD *)v15; *(_DWORD *)((char *)v13 + 30) = *(_DWORD *)(v15 + 4); if ( sub_4C81E0(&off_849C18, 34) ) { v16 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v16); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumShieldChargeDecrease : Packet Too Long", 34); } v5 = -1; } } } } goto LABEL_23; } if ( byte_132447D9 ) { byte_132447D9 = 0; goto LABEL_10; } --dword_750CB8; v18 = (int)"ShineObjectClass::ShinePlayer::smo_ply_CostumShieldChargeDecrease"; LABEL_25: v21 = v5; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132447D9: using guessed type char byte_132447D9; // 14D148D0: using guessed type int dword_14D148D0; //----- (0051F4B0) -------------------------------------------------------- int __thiscall sub_51F4B0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@3 void *v6; // esi@4 int v7; // ecx@4 int v8; // eax@5 int v9; // esi@7 int v10; // eax@9 int v12; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_StoreItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_StoreItem"; dword_750AB8[dword_750CB8++] = -1; if ( (*(_WORD *)a2 & 0xFC00) == 15360 ) { v5 = (int)sub_51EF20((char *)v4 + 57840, *(_WORD *)a2 & 0x3FF, a3); if ( v5 ) { v6 = off_849C18; *(_WORD *)off_849C18 = 12289; *((_WORD *)v6 + 2) = *(_WORD *)a2; *((_WORD *)v6 + 1) = *(_WORD *)a4; v7 = *(_WORD *)(a3 + 8); *((_WORD *)v6 + 3) = v7; if ( (_WORD)v7 == -1 ) v8 = (int)((char *)v6 + 8); else v8 = sub_63D0C0((void *)a3, v5, v7, (int)((char *)v6 + 8)); v9 = v8 - (_DWORD)v6; if ( sub_4C81E0(&off_849C18, v9) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12))(v10, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_StoreItem : Packet Too Long", v9); } } --dword_750CB8; v12 = (int)"ShineObjectClass::ShinePlayer::so_ply_StoreItem"; } else { --dword_750CB8; v12 = (int)"ShineObjectClass::ShinePlayer::so_ply_StoreItem"; } return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0051F620) -------------------------------------------------------- int __thiscall sub_51F620(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 bool v5; // zf@1 void *v6; // esi@1 int v7; // eax@6 int (__cdecl *v8)(_DWORD); // eax@7 int v9; // eax@8 int v10; // eax@8 int v11; // eax@15 int v12; // eax@16 int v13; // eax@16 int v14; // eax@21 int v15; // esi@21 int v16; // eax@22 int v17; // ecx@25 int v18; // esi@33 int v19; // eax@34 __int16 v20; // ax@44 unsigned __int8 v21; // al@44 void (__stdcall *v22)(_DWORD, _DWORD, _DWORD); // edx@48 int v23; // edi@48 int v24; // eax@48 int v25; // edx@48 void *v26; // esi@48 int (__thiscall *v27)(_DWORD); // eax@48 int v28; // eax@48 int v29; // eax@48 int v30; // ecx@48 void (__stdcall *v31)(_DWORD); // edx@49 int v32; // eax@49 int v33; // esi@49 unsigned int v34; // eax@50 int v35; // edx@50 int v36; // eax@53 int v37; // edx@58 void *v39; // [sp-20h] [bp-14Ch]@45 int v40; // [sp-1Ch] [bp-148h]@45 int v41; // [sp-18h] [bp-144h]@45 int v42; // [sp-14h] [bp-140h]@45 int v43; // [sp-10h] [bp-13Ch]@45 unsigned int v44; // [sp-Ch] [bp-138h]@9 int v45; // [sp-8h] [bp-134h]@5 unsigned int v46; // [sp-4h] [bp-130h]@1 int v47; // [sp+0h] [bp-12Ch]@50 __int16 *v48; // [sp+4h] [bp-128h]@50 __int16 *v49; // [sp+8h] [bp-124h]@50 int v50; // [sp+Ch] [bp-120h]@1 void **v51; // [sp+10h] [bp-11Ch]@45 int v52; // [sp+14h] [bp-118h]@38 int v53; // [sp+18h] [bp-114h]@27 int v54; // [sp+1Ch] [bp-110h]@33 int v55; // [sp+20h] [bp-10Ch]@44 void *v56; // [sp+24h] [bp-108h]@21 __int16 v57; // [sp+28h] [bp-104h]@44 int v58; // [sp+2Ch] [bp-100h]@1 int v59; // [sp+30h] [bp-FCh]@7 __int16 v60; // [sp+34h] [bp-F8h]@44 int v61; // [sp+38h] [bp-F4h]@8 int v62; // [sp+3Ch] [bp-F0h]@40 int v63; // [sp+40h] [bp-ECh]@48 __int16 v64; // [sp+44h] [bp-E8h]@40 __int16 v65; // [sp+A8h] [bp-84h]@40 char v66; // [sp+AAh] [bp-82h]@40 int v67; // [sp+ACh] [bp-80h]@29 int v68; // [sp+B0h] [bp-7Ch]@48 __int16 v69; // [sp+B4h] [bp-78h]@31 char v70; // [sp+B6h] [bp-76h]@48 __int16 v71; // [sp+118h] [bp-14h]@29 char v72; // [sp+11Ah] [bp-12h]@29 unsigned int v73; // [sp+11Ch] [bp-10h]@1 int v74; // [sp+128h] [bp-4h]@1 int v75; // [sp+12Ch] [bp+0h]@1 v73 = (unsigned int)&v75 ^ __security_cookie; v46 = (unsigned int)&v75 ^ __security_cookie; v4 = this; v58 = a2; v50 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (dword_13244848 & 1) == 0; v6 = off_849C18; v74 = 0; *(_DWORD *)off_849C18 = 843657300; if ( v5 ) { dword_13244848 |= 1u; word_13244844 = 70; atexit(nullsub_86); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244844) || (v8 = *(int (__cdecl **)(_DWORD))(*((_DWORD *)v4 + 14672) + 16), v59 = (int)((char *)v4 + 58688), (unsigned __int8)v8(v46) == 1) ) { if ( sub_4C81E0(&off_849C18, 29) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); v45 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Packet Too Long", 29); v45 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"; } goto LABEL_60; } v9 = *((_DWORD *)v4 + 9121); v61 = *(_BYTE *)(v58 + 2); v10 = (*(int (__thiscall **)(char *))(v9 + 8))((char *)v4 + 36484); v45 = v61; if ( v61 >= v10 ) { v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : wrong item slot"; LABEL_10: sub_639100(&unk_86DDD8, v44, v45); LABEL_11: if ( !sub_4C81E0(&off_849C18, 29) ) { LABEL_12: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Packet Too Long", 29); LABEL_59: v45 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"; LABEL_60: --dword_750CB8; goto LABEL_61; } v11 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 764))(v4, v46); LABEL_58: v37 = *(_DWORD *)v11; v46 = (unsigned int)&off_849C18; (*(void (__thiscall **)(int, void *))(v37 + 12))(v11, v4); goto LABEL_59; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int, int))(*(_DWORD *)v59 + 12))(9, v45) == 1 ) goto LABEL_14; v12 = *((_DWORD *)v4 + 9121); v61 = *(_BYTE *)(v58 + 3); v13 = (*(int (__thiscall **)(char *))(v12 + 8))((char *)v4 + 36484); v45 = v61; if ( v61 >= v13 ) { v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : wrong stuff slot"; goto LABEL_10; } if ( (unsigned __int8)(*(int (__stdcall **)(signed int, int))(*(_DWORD *)v59 + 12))(9, v45) == 1 ) goto LABEL_14; if ( *((_WORD *)v4 + 42864) & 0xC || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2784))(v4) == 1 ) goto LABEL_11; v14 = v58; *((_WORD *)v6 + 1) = 12874; v15 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v14 + 2)); v56 = (void *)v15; if ( !v15 ) { LABEL_14: if ( !sub_4C81E0(&off_849C18, 29) ) goto LABEL_12; v11 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 764))(v4, v46); goto LABEL_58; } v16 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v15 + 8)); if ( !v16 ) { v45 = 0; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid item"; goto LABEL_10; } if ( !*(_DWORD *)v16 || (v17 = *(_DWORD *)(v16 + 4)) == 0 || v17 == -137 ) { v45 = 1; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid item"; goto LABEL_10; } v53 = *(_DWORD *)(v15 + 112); if ( !v53 ) { v45 = 2; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid item"; goto LABEL_10; } memcpy(&v67, v56, 0x6Cu); v71 = *((_WORD *)v56 + 54); v72 = *((_BYTE *)v56 + 110); if ( !sub_4934A0(&dword_D61E064, (const char *)(*(_DWORD *)(v16 + 4) + 137)) ) { v45 = 3; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid item"; goto LABEL_10; } if ( !(*(int (__stdcall **)(__int16 *))(*(_DWORD *)v53 + 112))(&v69) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid item", 4); goto LABEL_14; } v18 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v58 + 3)); v54 = v18; if ( !v18 ) goto LABEL_14; v19 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v18 + 8)); if ( !v19 ) { v45 = 0; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid stuff item"; goto LABEL_10; } if ( !*(_DWORD *)v19 || !*(_DWORD *)(v19 + 4) ) { v45 = 1; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid stuff item"; goto LABEL_10; } v52 = *(_DWORD *)(v18 + 112); if ( !v52 ) { v45 = 2; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid stuff item"; goto LABEL_10; } memcpy(&v62, (const void *)v54, 0x6Cu); v65 = *(_WORD *)(v54 + 108); v66 = *(_BYTE *)(v54 + 110); if ( v64 != word_14D211D2 ) { v45 = 3; v44 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid stuff item"; goto LABEL_10; } v61 = (*(int (__stdcall **)(__int16 *))(*(_DWORD *)v52 + 28))(&v64); if ( !v61 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Try to use invalid stuff item", 4); goto LABEL_14; } v20 = *(_BYTE *)(v58 + 3); v57 = *(unsigned __int8 *)(v58 + 2) | 0x2400; v60 = v20 & 0x3FF | 0x2400; v21 = (*(int (__stdcall **)(__int16 *))(*(_DWORD *)v53 + 116))(&v69); LOBYTE(v55) = v21; if ( !(dword_13244848 & 2) ) { dword_13244848 |= 2u; v51 = &v39; LOBYTE(v74) = 1; sub_4244F0((int)&v39, "LimitRandomOption"); word_13244840 = sub_62BD30((int)&unk_1325CFB8, v39, v40, v41, v42, v43, v44, v45); v21 = v55; LOBYTE(v74) = 0; } if ( v21 == -1 || word_13244840 <= (unsigned __int16)v21 ) goto LABEL_11; v22 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v53 + 120); LOBYTE(v55) = v21 + 1; --v61; v23 = v61; v22(&v69, v55, v46); v24 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); v25 = *(_DWORD *)v59; v46 = (unsigned int)&v57; v45 = (int)&v57; v44 = (unsigned int)&v67; v43 = (int)v56; v42 = v24; (*(void (__stdcall **)(int, void *, int *, __int16 *, __int16 *))(v25 + 64))(v24, v56, &v67, &v57, &v57); v26 = off_849C18; *(_WORD *)off_849C18 = 13505; v27 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v56 = v26; *((_WORD *)v26 + 1) = *(_WORD *)(v27(v4) + 4); v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5 = v61 == 0; *((_DWORD *)v26 + 1) = v28; *((_WORD *)v26 + 4) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v26 + 10) = v62; *(_DWORD *)((char *)v26 + 14) = v63; *((_WORD *)v26 + 9) = v64; *((_DWORD *)v26 + 5) = v23; *((_DWORD *)v26 + 6) = v67; *((_DWORD *)v26 + 7) = v68; *((_WORD *)v26 + 16) = v69; v29 = (int)v56; memcpy((char *)v26 + 34, &v70, 0x64u); v30 = v58; *((_BYTE *)v26 + 134) = v72; *(_BYTE *)(v29 + 135) = *(_BYTE *)(v30 + 2); if ( v5 ) { v34 = *(_WORD *)((*(int (__thiscall **)(void *, int, __int16 *, __int16 *))(*(_DWORD *)v4 + 2004))( v4, v47, v48, v49) + 4); v35 = *(_DWORD *)v59; v49 = &v60; v48 = &v60; v47 = v54; v46 = v34; (*(void (__cdecl **)(unsigned int, int, __int16 *, __int16 *, int, void **))(v35 + 48))( v34, v54, &v60, &v60, v50, v51); v33 = v59; } else { v31 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v52 + 32); v46 = v61; v31(&v64); v32 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v33 = v59; (*(void (__thiscall **)(int, _DWORD, int, int *, __int16 *, __int16 *))(*(_DWORD *)v59 + 64))( v59, *(_WORD *)(v32 + 4), v54, &v62, &v60, &v60); } if ( sub_4C81E0(&off_849C18, 136) ) { v36 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v36); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ : Packet Too Long", 136); } ++*(_WORD *)(v33 + 4); --dword_750CB8; v45 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RANDOMOPTION_CHANGE_REQ"; LABEL_61: v74 = -1; return sub_467660((int)&unk_D020420, v45); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244840: using guessed type __int16 word_13244840; // 13244844: using guessed type __int16 word_13244844; // 13244848: using guessed type int dword_13244848; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211D2: using guessed type __int16 word_14D211D2; //----- (0051FD20) -------------------------------------------------------- int __thiscall sub_51FD20(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // edi@1 unsigned __int8 v6; // cl@5 unsigned __int8 v7; // dl@5 int v8; // esi@5 int v9; // eax@6 int v10; // ecx@9 void (__thiscall *v11)(_DWORD, _DWORD, _DWORD); // eax@11 int v12; // eax@19 int v13; // esi@19 void (__thiscall *v14)(_DWORD, _DWORD, _DWORD); // eax@20 int v15; // eax@21 int v16; // ecx@24 int v17; // eax@31 int v18; // esi@31 void (__thiscall *v19)(_DWORD, _DWORD, _DWORD); // edx@32 int v20; // ecx@36 int v21; // esi@42 int v22; // esi@50 unsigned __int16 v23; // ax@52 int v24; // eax@52 int v25; // eax@54 int (__thiscall *v26)(_DWORD); // edx@54 int v27; // eax@54 void (__thiscall *v28)(_DWORD, _DWORD, _DWORD); // eax@55 int (__cdecl *v29)(_DWORD); // edx@57 void *v30; // eax@59 void *v31; // esi@59 int v32; // eax@60 const char *v33; // eax@61 int *v34; // eax@62 int (__thiscall *v35)(_DWORD, _DWORD); // edx@62 int v36; // eax@62 int v37; // eax@66 int v38; // ecx@67 int v39; // edi@68 int v40; // eax@75 int v41; // eax@76 int v42; // eax@77 __int16 v43; // ax@81 int v44; // eax@81 bool v45; // zf@81 int v46; // eax@81 void (__thiscall *v47)(_DWORD, _DWORD, _DWORD); // edx@82 int v48; // eax@83 void *v49; // esi@83 int v50; // edx@83 int (__thiscall *v51)(_DWORD); // eax@83 int v52; // eax@83 int v53; // edx@83 int v54; // eax@83 int v55; // eax@83 int v56; // edx@83 int v57; // eax@83 int v58; // eax@83 int v59; // ecx@83 int v60; // edx@83 int v61; // eax@83 int v62; // eax@85 int v63; // edi@87 int v64; // edx@87 void (__thiscall *v65)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@87 int v66; // esi@87 int v67; // edi@87 int v68; // eax@88 int v69; // edx@90 int v70; // eax@91 int v71; // edx@93 int v72; // eax@94 void (__stdcall *v73)(_DWORD); // eax@95 int v74; // eax@95 int v75; // eax@95 void (__thiscall *v76)(_DWORD, _DWORD, _DWORD); // edx@96 void (__thiscall *v77)(_DWORD, _DWORD, _DWORD); // edx@97 void *v79; // [sp-1Ch] [bp-18Ch]@16 int v80; // [sp-18h] [bp-188h]@16 int v81; // [sp-14h] [bp-184h]@16 int v82; // [sp-10h] [bp-180h]@16 int v83; // [sp-Ch] [bp-17Ch]@16 int v84; // [sp-8h] [bp-178h]@16 unsigned int v85; // [sp-4h] [bp-174h]@1 int v86; // [sp+Ch] [bp-164h]@1 int v87; // [sp+10h] [bp-160h]@36 void *v88; // [sp+14h] [bp-15Ch]@59 int v89; // [sp+18h] [bp-158h]@81 int v90; // [sp+1Ch] [bp-154h]@37 int *v91; // [sp+20h] [bp-150h]@54 int v92; // [sp+24h] [bp-14Ch]@54 int v93; // [sp+28h] [bp-148h]@54 int v94; // [sp+2Ch] [bp-144h]@24 int v95; // [sp+30h] [bp-140h]@9 int v96; // [sp+34h] [bp-13Ch]@33 int v97; // [sp+38h] [bp-138h]@25 int v98; // [sp+3Ch] [bp-134h]@10 int (**v99)(); // [sp+40h] [bp-130h]@54 int v100; // [sp+50h] [bp-120h]@5 int v101; // [sp+54h] [bp-11Ch]@16 int v102; // [sp+58h] [bp-118h]@21 int v103; // [sp+5Ch] [bp-114h]@6 int v104; // [sp+60h] [bp-110h]@31 int v105; // [sp+64h] [bp-10Ch]@19 int v106; // [sp+68h] [bp-108h]@81 unsigned __int8 v107; // [sp+6Fh] [bp-101h]@5 int v108; // [sp+70h] [bp-100h]@52 __int16 v109; // [sp+74h] [bp-FCh]@92 __int16 v110; // [sp+78h] [bp-F8h]@86 __int16 v111; // [sp+7Ch] [bp-F4h]@89 int *v112; // [sp+80h] [bp-F0h]@21 int v113; // [sp+84h] [bp-ECh]@33 unsigned __int8 v114; // [sp+8Ah] [bp-E6h]@5 unsigned __int8 v115; // [sp+8Bh] [bp-E5h]@5 char v116; // [sp+8Ch] [bp-E4h]@50 int v117; // [sp+A8h] [bp-C8h]@60 int v118; // [sp+B0h] [bp-C0h]@62 int v119; // [sp+B6h] [bp-BAh]@80 char v120; // [sp+CBh] [bp-A5h]@80 __int16 v121; // [sp+114h] [bp-5Ch]@83 char v122; // [sp+116h] [bp-5Ah]@83 char v123; // [sp+118h] [bp-58h]@39 char v124; // [sp+130h] [bp-40h]@27 char v125; // [sp+148h] [bp-28h]@12 unsigned int v126; // [sp+160h] [bp-10h]@1 int v127; // [sp+16Ch] [bp-4h]@1 int v128; // [sp+170h] [bp+0h]@1 v126 = (unsigned int)&v128 ^ __security_cookie; v85 = (unsigned int)&v128 ^ __security_cookie; v4 = this; v86 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MIX_ITEM_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MIX_ITEM_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MIX_ITEM_REQ"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v127 = 0; if ( !(dword_13244858 & 1) ) { dword_13244858 |= 1u; word_13244854 = 70; atexit(nullsub_93); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244854) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) goto LABEL_98; v6 = *(_BYTE *)(a2 + 3); v7 = *(_BYTE *)(a2 + 4); v107 = *(_BYTE *)(a2 + 2); v114 = v6; v115 = v7; v8 = (*(int (__thiscall **)(char *, _DWORD, unsigned int))*((int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v107, v85); v100 = v8; if ( !v8 || (v9 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v8 + 8)), (v103 = v9) == 0) || !*(_DWORD *)v9 || !*(_DWORD *)(v9 + 4) || (v10 = *(_DWORD *)(v8 + 112), (v95 = v10) == 0) ) { v77 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v85 = 14277; v77(v4, 12, 106); goto LABEL_98; } v98 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 28))(v8 + 8); if ( !v98 ) { v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v85 = 14277; v11(v4, 12, 106); LABEL_98: --dword_750CB8; v127 = v5; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MIX_ITEM_REQ"); } sub_63FF00((int)&v125, (int)((char *)v4 + 32816), *(_DWORD *)v8, *(_DWORD *)(v8 + 4), 0); LOBYTE(v127) = 1; if ( sub_43BBB0(&v125) == 1 ) { v85 = 14274; LABEL_14: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 106); LOBYTE(v127) = 0; sub_43BB10(&v125); goto LABEL_98; } if ( !(dword_13244858 & 2) ) { dword_13244858 |= 2u; v101 = (int)&v79; LOBYTE(v127) = 2; sub_4244F0((int)&v79, "AddMixItem"); word_13244850 = sub_62BD30((int)&unk_1325CFB8, v79, v80, v81, v82, v83, v84, v85); LOBYTE(v127) = 1; } if ( word_13244850 != **(_WORD **)v103 ) { v85 = 14277; goto LABEL_14; } v12 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v114); v13 = v12; v105 = v12; if ( !v12 || (v112 = (int *)(v12 + 8), v85 = *(_WORD *)(v12 + 8), v15 = sub_418CB0((int)&dword_14D20890, v85), (v102 = v15) == 0) ) goto LABEL_102; if ( !*(_DWORD *)v15 || !*(_DWORD *)(v15 + 4) ) goto LABEL_26; v16 = *(_DWORD *)(v13 + 112); v94 = v16; if ( !v16 ) { LABEL_102: v14 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v85 = 14278; v14(v4, 12, 106); LOBYTE(v127) = 0; sub_43BB10(&v125); goto LABEL_98; } v97 = (*(int (__stdcall **)(int *))(*(_DWORD *)v16 + 28))(v112); if ( !v97 ) { LABEL_26: v85 = 14278; goto LABEL_14; } sub_63FF00((int)&v124, (int)((char *)v4 + 32816), *(_DWORD *)v13, *(_DWORD *)(v13 + 4), 0); LOBYTE(v127) = 3; if ( sub_43BBB0(&v124) == 1 ) { v85 = 14274; LABEL_29: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 106); LABEL_30: LOBYTE(v127) = 1; sub_43BB10(&v124); LOBYTE(v127) = 0; sub_43BB10(&v125); goto LABEL_98; } v17 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v115); v18 = v17; v104 = v17; if ( !v17 || (v113 = v17 + 8, v85 = *(_WORD *)(v17 + 8), (v96 = sub_418CB0((int)&dword_14D20890, v85)) == 0) ) goto LABEL_103; if ( !*(_DWORD *)v102 || !*(_DWORD *)(v102 + 4) ) { v76 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v85 = 14278; v76(v4, 12, 106); goto LABEL_30; } v20 = *(_DWORD *)(v18 + 112); v87 = v20; if ( !v20 ) { LABEL_103: v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v85 = 14278; v19(v4, 12, 106); LOBYTE(v127) = 1; sub_43BB10(&v124); LOBYTE(v127) = 0; sub_43BB10(&v125); goto LABEL_98; } v90 = (*(int (__stdcall **)(int))(*(_DWORD *)v20 + 28))(v113); if ( !v90 ) { v85 = 14278; goto LABEL_29; } sub_63FF00((int)&v123, (int)((char *)v4 + 32816), *(_DWORD *)v18, *(_DWORD *)(v18 + 4), 0); LOBYTE(v127) = 4; if ( sub_43BBB0(&v123) == 1 ) { v85 = 14274; LABEL_41: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 106); LOBYTE(v127) = 3; sub_43BB10(&v123); goto LABEL_30; } v21 = v102; if ( **(_WORD **)v102 != **(_WORD **)v96 ) { v85 = 14276; LABEL_44: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 106); LOBYTE(v127) = 3; sub_43BB10(&v123); goto LABEL_30; } if ( !(dword_13244858 & 4) ) { dword_13244858 |= 4u; v101 = (int)&v79; LOBYTE(v127) = 5; sub_4244F0((int)&v79, "MixMinUpgrade"); byte_1324484C = sub_62BD30((int)&unk_1325CFB8, v79, v80, v81, v82, v83, v84, v85); LOBYTE(v127) = 4; } if ( sub_539890((unsigned int *)v112, 0) < (unsigned __int8)byte_1324484C || sub_539890((unsigned int *)v113, 0) < (unsigned __int8)byte_1324484C ) { v85 = 14273; goto LABEL_44; } v85 = *(_DWORD *)v21 + 2; sub_4244F0((int)&v116, (char *)v85); LOBYTE(v127) = 6; v22 = sub_6325F0((int)&unk_13359240, (int)&v116); LOBYTE(v127) = 4; sub_610240((int)&v116); if ( !v22 || (v23 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v22), v113 = v23, v24 = sub_418CB0((int)&dword_14D20890, v23), (v108 = v24) == 0) || !*(_DWORD *)v24 ) { v85 = 14278; goto LABEL_41; } v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1176))(v4); sub_43BB20((int)&v99, (int)((char *)v4 + 36484), v25); v26 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v127) = 7; v27 = v26(v4); v91 = (int *)&v99; v92 = v27; v93 = 9; if ( !sub_486D40(&v91) ) { v28 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v85 = 14279; v28(v4, 12, 106); LABEL_56: v99 = &off_6A86A4; LOBYTE(v127) = 3; sub_43BB10(&v123); goto LABEL_30; } v29 = (int (__cdecl *)(_DWORD))**(_DWORD **)v91[1]; v85 = v91[2]; v101 = v29(v85); if ( !v101 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 106, 14279); v99 = &off_6A86A4; LOBYTE(v127) = 3; sub_43BB10(&v123); goto LABEL_30; } v30 = sub_63ACA0(dword_1508B168, v113); v31 = v30; v88 = v30; if ( !v30 ) goto LABEL_56; (*(void (__thiscall **)(void *, int, int *, _DWORD))(*(_DWORD *)v30 + 20))(v30, v113, &v117, "-o"); v84 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v83 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); sub_63D0E0(&v117, v113, 1, v83, v84); v32 = *(_DWORD *)(v108 + 4); if ( v32 ) { v33 = (const char *)(v32 + 137); if ( v33 ) { v34 = sub_4934A0(&dword_D61E064, v33); v35 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v31 + 112); v112 = v34; v36 = v35(v31, &v118); if ( v112 ) { if ( v36 ) sub_4928F0(v36, (int)v112); } } } if ( *(_DWORD *)(*(_DWORD *)v108 + 102) == 4 ) { v37 = (*(int (__thiscall **)(void *, int *))(*(_DWORD *)v31 + 48))(v31, &v117); v108 = v37; if ( v37 > 0 ) { v38 = 0; if ( v37 > 0 ) { do { v39 = v38 + 1; LOBYTE(v113) = 0; *(_WORD *)((char *)&v113 + 1) = 0; if ( !sub_5C3690(&unk_1325CAB8, (int)&v118, (int)&v113, 1, v38 + 1) ) break; v38 = v39; } while ( v39 < v108 ); v5 = -1; } } } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v31 + 40))(v31) == 29 ) { sub_49BF00(v4, (int)&v117, 0, 0, 0, 0); v99 = &off_6A86A4; LOBYTE(v127) = 3; sub_43BB10(&v123); goto LABEL_30; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v31 + 40))(v31) == 36 ) { if ( (_WORD)v118 == -1 || (v40 = sub_418CB0((int)&dword_14D20890, v118)) == 0 || (v41 = *(_DWORD *)v40) == 0 || (v42 = sub_4CE510(dword_1325CC60, (const char *)(v41 + 2))) == 0 || (v108 = sub_4CE460(dword_1325CC60, (const char *)v42), v108 == v5) || !__RTDynamicCast(v31, 0, &off_84BEB8, &off_84BEDC, 0) ) goto LABEL_56; v119 = v108; *(int *)((char *)&v118 + 2) = v5; sub_4CFAD0((int)&v117, byte_6A492E); v120 = 0; } v43 = v106 & 0x3FF | 0x2400; LOWORD(v106) = v43; LOWORD(v106) = (v43 ^ *((_WORD *)v91 + 4)) & 0x3FF ^ v43; v44 = (*(int (__thiscall **)(void *, int *, unsigned int))(*(_DWORD *)v31 + 28))(v31, &v118, v85); v89 = v44; v45 = v44 == 0; v46 = *(_DWORD *)v4; if ( v45 ) { v47 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(v46 + 776); v85 = 14278; v47(v4, 12, 106); v99 = &off_6A86A4; LOBYTE(v127) = 3; sub_43BB10(&v123); goto LABEL_30; } v48 = *(_WORD *)((*(int (__thiscall **)(void *))(v46 + 2004))(v4) + 4); v49 = off_849C18; *(_WORD *)off_849C18 = 13515; v50 = *(_DWORD *)v4; v112 = (int *)v48; v51 = *(int (__thiscall **)(_DWORD))(v50 + 836); v108 = (int)v49; *(_DWORD *)((char *)v49 + 2) = v51(v4); *((_WORD *)v49 + 3) = *((_WORD *)v4 + 2); v52 = v100; *((_DWORD *)v49 + 2) = *(_DWORD *)v100; v53 = *(_DWORD *)(v52 + 4); v54 = v103; *((_DWORD *)v49 + 3) = v53; LOWORD(v53) = **(_WORD **)v54; *(_DWORD *)((char *)v49 + 18) = v98; v55 = v105; *((_WORD *)v49 + 8) = v53; *(_DWORD *)((char *)v49 + 22) = *(_DWORD *)v55; v56 = *(_DWORD *)(v55 + 4); v57 = v102; *(_DWORD *)((char *)v49 + 26) = v56; LOWORD(v56) = **(_WORD **)v57; v58 = v97; v59 = v104; *((_WORD *)v49 + 15) = v56; *((_DWORD *)v49 + 8) = v58; *((_DWORD *)v49 + 9) = *(_DWORD *)v59; v60 = v96; *((_DWORD *)v49 + 10) = *(_DWORD *)(v59 + 4); *((_WORD *)v49 + 22) = **(_WORD **)v60; LOWORD(v60) = (_WORD)v112; *(_DWORD *)((char *)v49 + 46) = v58; v61 = v108; memcpy((char *)v49 + 52, &v117, 0x6Cu); *((_WORD *)v49 + 80) = v121; *((_BYTE *)v49 + 162) = v122; *(_WORD *)(v61 + 50) = v106; v85 = 165; *(_WORD *)(v61 + 163) = v60; if ( sub_4C81E0(&off_849C18, v85) ) { v62 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v62); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_FRIEND_UES_FRIEND_POINT_REQ : Packet Too Long", 165); } v110 = v107 | 0x2400; if ( v98 == 1 ) { v68 = *((_DWORD *)v4 + 14672); v67 = (int)v112; v85 = (unsigned int)&v110; v84 = (int)&v110; v66 = (int)((char *)v4 + 58688); (*(void (__thiscall **)(char *, int *, int, __int16 *, __int16 *))(v68 + 48))( (char *)v4 + 58688, v112, v100, &v110, &v110); } else { v63 = v100; v64 = *(_DWORD *)v95; v85 = v98 - 1; v84 = v100 + 8; (*(void (__stdcall **)(int, int))(v64 + 32))(v100 + 8, v98 - 1); v65 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 14672) + 64); v83 = v63; v66 = (int)((char *)v4 + 58688); v82 = v63; v67 = (int)v112; v65((char *)v4 + 58688, v112, v82, v83, &v110, &v110); } v111 = v114 | 0x2400; if ( v97 == 1 ) { v70 = *(_DWORD *)v66; v85 = (unsigned int)&v111; v84 = (int)&v111; (*(void (__thiscall **)(int, int, int, __int16 *, __int16 *))(v70 + 48))(v66, v67, v105, &v111, &v111); } else { v69 = *(_DWORD *)v94; v85 = v97 - 1; v84 = v105 + 8; (*(void (__stdcall **)(int, int))(v69 + 32))(v105 + 8, v97 - 1); (*(void (__thiscall **)(int, int, int, int, __int16 *, __int16 *))(*(_DWORD *)v66 + 64))( v66, v67, v105, v105, &v111, &v111); } v109 = v115 | 0x2400; if ( v90 == 1 ) { v72 = *(_DWORD *)v66; v85 = (unsigned int)&v109; v84 = (int)&v109; (*(void (__thiscall **)(int, int, int, __int16 *, __int16 *))(v72 + 48))(v66, v67, v104, &v109, &v109); } else { v71 = *(_DWORD *)v87; v85 = v90 - 1; v84 = v104 + 8; (*(void (__stdcall **)(int, int))(v71 + 32))(v104 + 8, v90 - 1); (*(void (__thiscall **)(int, int, int, int, __int16 *, __int16 *))(*(_DWORD *)v66 + 64))( v66, v67, v104, v104, &v109, &v109); } v73 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v88 + 32); v85 = v89; v73(&v118); v74 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int *, int *, int *))(*(_DWORD *)v74 + 64))( v74, v67, v101, &v117, &v106, &v106); v75 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v75 + 4); v99 = &off_6A86A4; LOBYTE(v127) = 3; sub_43BB10(&v123); LOBYTE(v127) = 1; sub_43BB10(&v124); LOBYTE(v127) = 0; sub_43BB10(&v125); --dword_750CB8; v127 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MIX_ITEM_REQ"); } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 86FEB8: using guessed type int __security_cookie; // 1324484C: using guessed type char byte_1324484C; // 13244850: using guessed type __int16 word_13244850; // 13244854: using guessed type __int16 word_13244854; // 13244858: using guessed type int dword_13244858; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (005209B0) -------------------------------------------------------- char __cdecl sub_5209B0(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748020 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_748024 ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 9) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 9); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748020: using guessed type int dword_748020; // 748024: using guessed type int dword_748024; // 86FEB8: using guessed type int __security_cookie; //----- (00520AE0) -------------------------------------------------------- char __cdecl sub_520AE0(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748028 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_74802C ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 7) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 7); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748028: using guessed type int dword_748028; // 74802C: using guessed type int dword_74802C; // 86FEB8: using guessed type int __security_cookie; //----- (00520C10) -------------------------------------------------------- char __cdecl sub_520C10(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748030 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_748034 ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 7) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 7); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748030: using guessed type int dword_748030; // 748034: using guessed type int dword_748034; // 86FEB8: using guessed type int __security_cookie; //----- (00520D40) -------------------------------------------------------- char __thiscall sub_520D40(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // ecx@4 int v7; // eax@6 int v8; // edi@6 int v9; // eax@6 int v10; // esi@6 int v11; // eax@8 int v12; // eax@10 int v13; // eax@11 void *v14; // ecx@14 signed int v15; // eax@14 int v16; // edx@15 void *v17; // eax@20 int v18; // edx@21 char *v19; // edi@28 char *v20; // esi@28 int v21; // eax@28 char v22; // al@29 int v23; // eax@32 int v24; // eax@32 int v25; // eax@33 int v26; // eax@34 int v27; // eax@35 void *v28; // esi@35 void *v29; // ecx@35 int v30; // eax@35 char v31; // al@36 char result; // al@41 int v33; // eax@42 __int16 v34; // [sp-8h] [bp-A0h]@2 char *v35; // [sp-4h] [bp-9Ch]@2 int v36; // [sp+Ch] [bp-8Ch]@1 int v37; // [sp+10h] [bp-88h]@6 int v38; // [sp+14h] [bp-84h]@6 int v39; // [sp+18h] [bp-80h]@28 int v40; // [sp+1Ch] [bp-7Ch]@3 int v41; // [sp+20h] [bp-78h]@8 char v42; // [sp+20h] [bp-78h]@26 char v43; // [sp+24h] [bp-74h]@28 char v44[2]; // [sp+5Eh] [bp-3Ah]@28 char v45[52]; // [sp+60h] [bp-38h]@28 unsigned int v46; // [sp+94h] [bp-4h]@1 int v47; // [sp+98h] [bp+0h]@1 v46 = (unsigned int)&v47 ^ __security_cookie; v4 = a2 + 2; v5 = this; v36 = a2 + 2; if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int, int))(*(_DWORD *)(this + 58688) + 12))( this + 58688, (unsigned int)*(_WORD *)(a2 + 2) >> 10, *(_WORD *)(a2 + 2) & 0x3FF) || (v40 = a2 + 4, (unsigned __int8)(*(int (__thiscall **)(int, unsigned int, int))(*(_DWORD *)(v5 + 58688) + 12))( v5 + 58688, (unsigned int)*(_WORD *)(a2 + 4) >> 10, *(_WORD *)(a2 + 4) & 0x3FF)) ) { v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8321; return sub_5209B0(v5, v34, v35); } v6 = v5 + 36484; if ( (*(_WORD *)v4 & 0xFC00) == 8192 ) v6 = v5 + 32816; v7 = (**(int (__stdcall ***)(_DWORD))v6)(*(_WORD *)v4 & 0x3FF); v8 = v7; v37 = v7; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 36484))(v5 + 36484, *(_WORD *)v40 & 0x3FF); v10 = v9; v38 = v9; if ( !v8 || !v9 ) { v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8322; return sub_5209B0(v5, v34, v35); } v11 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v8 + 8)); v41 = v11; if ( !v11 || *(_DWORD *)(*(_DWORD *)v11 + 102) != 5 ) { v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8323; return sub_5209B0(v5, v34, v35); } v12 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)); if ( !v12 || (v13 = *(_DWORD *)v12, *(_DWORD *)(v13 + 102) != 34) ) { v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8324; return sub_5209B0(v5, v34, v35); } if ( *(_DWORD *)(v13 + 131) != *(_DWORD *)(*(_DWORD *)v41 + 131) ) { v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8327; return sub_5209B0(v5, v34, v35); } v14 = (void *)*(_BYTE *)(v8 + 67); v15 = 0; if ( (signed int)v14 > 0 ) { v16 = v8 + 58; while ( -1 == *(_WORD *)v16 || *(_WORD *)v16 != *(_WORD *)(v38 + 8) ) { ++v15; v16 += 3; if ( v15 >= (signed int)v14 ) { v8 = v37; goto LABEL_20; } } v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8328; return sub_5209B0(v5, v34, v35); } LABEL_20: v17 = 0; if ( (signed int)v14 <= 0 ) goto LABEL_49; v18 = v8 + 58; while ( -1 != *(_WORD *)v18 ) { v17 = (char *)v17 + 1; v18 += 3; if ( (signed int)v17 >= (signed int)v14 ) { v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8325; return sub_5209B0(v5, v34, v35); } } v42 = (char)v17; if ( v14 == v17 ) { LABEL_49: v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ"; v34 = 8325; return sub_5209B0(v5, v34, v35); } v39 = *(_WORD *)(v5 + 58692); memcpy(&v43, (const void *)v8, 0x6Cu); *(_WORD *)&v45[48] = *(_WORD *)(v8 + 108); v45[50] = *(_BYTE *)(v8 + 110); LOWORD(v14) = *(_WORD *)(v38 + 8); v19 = (char *)(v38 + 8); *(_WORD *)((char *)v17 + 2 * (_DWORD)v17 + (_DWORD)v44) = (_WORD)v14; v20 = (char *)v17 + 2 * (_DWORD)v17 + (_DWORD)v45; *v20 = 0; v21 = sub_5C56A0(v14, *(_WORD *)(v38 + 8)); if ( v21 ) { v22 = *(_BYTE *)(v21 + 4); if ( v22 ) *v20 = v22; else *v20 = -1; } v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, char *, int, int))(*(_DWORD *)v23 + 64))(v23, v39, v37, &v43, v36, v36); v24 = (*(int (__stdcall **)(char *))(**(_DWORD **)(v38 + 112) + 28))(v19); if ( v24 > 1 ) { (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v38 + 112) + 32))(v19, v24 - 1); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, int, int, int))(*(_DWORD *)v26 + 64))(v26, v39, v38, v38, v40, v40); } else { v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, int, int))(*(_DWORD *)v25 + 48))(v25, v39, v38, v40, v40); } v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v27 + 4); v28 = off_849C18; *(_WORD *)off_849C18 = 13462; *((_WORD *)v28 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v28 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v28 + 4) = v39; *((_WORD *)v28 + 9) = *(_WORD *)(v37 + 8); *(_DWORD *)((char *)v28 + 10) = *(_DWORD *)v37; *(_DWORD *)((char *)v28 + 14) = *(_DWORD *)(v37 + 4); *((_WORD *)v28 + 10) = *(_WORD *)v36; *((_WORD *)v28 + 15) = *(_WORD *)v19; *(_DWORD *)((char *)v28 + 22) = *(_DWORD *)v38; *(_DWORD *)((char *)v28 + 26) = *(_DWORD *)(v38 + 4); v29 = (void *)*(_WORD *)v40; *((_WORD *)v28 + 16) = (_WORD)v29; *((_BYTE *)v28 + 34) = v42; *((_BYTE *)v28 + 35) = 0; v30 = sub_5C56A0(v29, *(_WORD *)v19); if ( v30 ) { v31 = *(_BYTE *)(v30 + 4); if ( v31 ) *((_BYTE *)v28 + 35) = v31; else *((_BYTE *)v28 + 35) = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ Not Find ActionEffectItemTable", *(_WORD *)v19); } if ( sub_4C81E0(&off_849C18, 36) ) { v33 = sub_428750((int)&dword_14D16430); result = sub_4C7EC0(&off_849C18, v33); } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ : Packet Too Long", 36); } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 520D40: using guessed type char var_3A[2]; // 520D40: using guessed type char var_38[52]; //----- (00521170) -------------------------------------------------------- char __thiscall sub_521170(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // ecx@4 int v7; // eax@6 int v8; // esi@6 int v9; // eax@6 int v10; // edi@6 int v11; // eax@8 int v12; // eax@10 int v13; // eax@16 int v14; // esi@16 int v15; // eax@16 int v16; // eax@16 int v17; // eax@17 int v18; // eax@18 int v19; // eax@19 void *v20; // esi@19 char result; // al@20 int v22; // eax@21 __int16 v23; // [sp-8h] [bp-98h]@2 char *v24; // [sp-4h] [bp-94h]@2 int v25; // [sp+Ch] [bp-84h]@6 int v26; // [sp+10h] [bp-80h]@6 int v27; // [sp+14h] [bp-7Ch]@16 char v28; // [sp+1Ch] [bp-74h]@16 char v29[2]; // [sp+56h] [bp-3Ah]@16 char v30[52]; // [sp+58h] [bp-38h]@16 unsigned int v31; // [sp+8Ch] [bp-4h]@1 int v32; // [sp+90h] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; v4 = a2 + 2; v5 = this; if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int, int))(*(_DWORD *)(this + 58688) + 12))( this + 58688, (unsigned int)*(_WORD *)(a2 + 2) >> 10, *(_WORD *)(a2 + 2) & 0x3FF) || (unsigned __int8)(*(int (__thiscall **)(int, unsigned int, int))(*(_DWORD *)(v5 + 58688) + 12))( v5 + 58688, (unsigned int)*(_WORD *)(a2 + 4) >> 10, *(_WORD *)(a2 + 4) & 0x3FF) ) { v24 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ"; v23 = 8337; return sub_520AE0(v5, v23, v24); } v6 = v5 + 36484; if ( (*(_WORD *)v4 & 0xFC00) == 8192 ) v6 = v5 + 32816; v7 = (**(int (__stdcall ***)(_DWORD))v6)(*(_WORD *)v4 & 0x3FF); v8 = v7; v25 = v7; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 36484))(v5 + 36484, *(_WORD *)(a2 + 4) & 0x3FF); v10 = v9; v26 = v9; if ( !v8 || !v9 ) { v24 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ"; v23 = 8338; return sub_520AE0(v5, v23, v24); } v11 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v8 + 8)); if ( !v11 || (v12 = *(_DWORD *)v11) == 0 || *(_DWORD *)(v12 + 102) != 5 ) { v24 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ"; v23 = 8340; return sub_520AE0(v5, v23, v24); } if ( word_14D211CC != *(_WORD *)(v10 + 8) ) { v24 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ"; v23 = 8339; return sub_520AE0(v5, v23, v24); } if ( -1 == *(_WORD *)(*(_BYTE *)(a2 + 6) + v8 + 2 * *(_BYTE *)(a2 + 6) + 58) ) { v24 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ"; v23 = 8341; return sub_520AE0(v5, v23, v24); } v13 = *(_WORD *)(v5 + 58692); memcpy(&v28, (const void *)v8, 0x6Cu); v14 = v8 + 108; *(_WORD *)&v30[48] = *(_WORD *)v14; v30[50] = *(_BYTE *)(v14 + 2); v27 = v13; *(_WORD *)(&v29[2 * *(_BYTE *)(a2 + 6)] + *(_BYTE *)(a2 + 6)) = -1; *(&v30[2 * *(_BYTE *)(a2 + 6)] + *(_BYTE *)(a2 + 6)) = 0; v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, char *, int, int))(*(_DWORD *)v15 + 64))(v15, v27, v25, &v28, a2 + 2, a2 + 2); v16 = (*(int (__stdcall **)(int))(**(_DWORD **)(v26 + 112) + 28))(v26 + 8); if ( v16 > 1 ) { (*(void (__stdcall **)(int, int))(**(_DWORD **)(v26 + 112) + 32))(v26 + 8, v16 - 1); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, int, int, int))(*(_DWORD *)v18 + 64))(v18, v27, v26, v26, a2 + 4, a2 + 4); } else { v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, int, int))(*(_DWORD *)v17 + 48))(v17, v27, v26, a2 + 4, a2 + 4); } v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v19 + 4); v20 = off_849C18; *(_WORD *)off_849C18 = 13464; *((_WORD *)v20 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v20 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v20 + 4) = v27; *((_WORD *)v20 + 9) = *(_WORD *)(v25 + 8); *(_DWORD *)((char *)v20 + 10) = *(_DWORD *)v25; *(_DWORD *)((char *)v20 + 14) = *(_DWORD *)(v25 + 4); *((_WORD *)v20 + 10) = *(_WORD *)(a2 + 2); *((_WORD *)v20 + 15) = *(_WORD *)(v26 + 8); *(_DWORD *)((char *)v20 + 22) = *(_DWORD *)v26; *(_DWORD *)((char *)v20 + 26) = *(_DWORD *)(v26 + 4); *((_WORD *)v20 + 16) = *(_WORD *)(a2 + 4); *((_BYTE *)v20 + 37) = 1; *((_WORD *)v20 + 17) = 0; *((_BYTE *)v20 + 36) = 0; *((_BYTE *)v20 + *(_BYTE *)(a2 + 6) + 34) = 1; if ( sub_4C81E0(&off_849C18, 38) ) { v22 = sub_428750((int)&dword_14D16430); result = sub_4C7EC0(&off_849C18, v22); } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ : Packet Too Long", 38); } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211CC: using guessed type __int16 word_14D211CC; // 521170: using guessed type char var_3A[2]; // 521170: using guessed type char var_38[52]; //----- (005214A0) -------------------------------------------------------- char __thiscall sub_5214A0(int this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // ecx@4 int v7; // eax@6 int v8; // esi@6 int v9; // eax@6 int v10; // edi@6 int v11; // eax@8 int v12; // eax@10 int v13; // edx@16 int v14; // eax@16 int v15; // esi@16 int (__thiscall *v16)(_DWORD); // edx@16 int v17; // eax@16 int v18; // eax@16 int v19; // eax@17 int v20; // eax@18 int v21; // eax@19 void *v22; // esi@19 char result; // al@20 int v24; // eax@21 __int16 v25; // [sp-8h] [bp-9Ch]@2 char *v26; // [sp-4h] [bp-98h]@2 int v27; // [sp+Ch] [bp-88h]@6 int v28; // [sp+10h] [bp-84h]@6 int v29; // [sp+14h] [bp-80h]@1 int v30; // [sp+18h] [bp-7Ch]@16 int v31; // [sp+1Ch] [bp-78h]@3 char v32; // [sp+20h] [bp-74h]@16 char v33; // [sp+63h] [bp-31h]@16 char v34; // [sp+64h] [bp-30h]@16 __int16 v35; // [sp+8Ch] [bp-8h]@16 char v36; // [sp+8Eh] [bp-6h]@16 unsigned int v37; // [sp+90h] [bp-4h]@1 int v38; // [sp+94h] [bp+0h]@1 v37 = (unsigned int)&v38 ^ __security_cookie; v4 = a2 + 2; v5 = this; v29 = a2 + 2; if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int, int))(*(_DWORD *)(this + 58688) + 12))( this + 58688, (unsigned int)*(_WORD *)(a2 + 2) >> 10, *(_WORD *)(a2 + 2) & 0x3FF) || (v31 = a2 + 4, (unsigned __int8)(*(int (__thiscall **)(int, unsigned int, int))(*(_DWORD *)(v5 + 58688) + 12))( v5 + 58688, (unsigned int)*(_WORD *)(a2 + 4) >> 10, *(_WORD *)(a2 + 4) & 0x3FF)) ) { v26 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ"; v25 = 8353; return sub_520C10(v5, v25, v26); } v6 = v5 + 36484; if ( (*(_WORD *)v4 & 0xFC00) == 8192 ) v6 = v5 + 32816; v7 = (**(int (__stdcall ***)(_DWORD))v6)(*(_WORD *)v4 & 0x3FF); v8 = v7; v28 = v7; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 36484))(v5 + 36484, *(_WORD *)v31 & 0x3FF); v10 = v9; v27 = v9; if ( !v8 || !v9 ) { v26 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ"; v25 = 8354; return sub_520C10(v5, v25, v26); } v11 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v8 + 8)); if ( !v11 || (v12 = *(_DWORD *)v11) == 0 || *(_DWORD *)(v12 + 102) != 5 ) { v26 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ"; v25 = 8356; return sub_520C10(v5, v25, v26); } if ( word_14D211CE != *(_WORD *)(v10 + 8) ) { v26 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ"; v25 = 8355; return sub_520C10(v5, v25, v26); } if ( *(_BYTE *)(v8 + 68) >= 1u ) { v26 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ"; v25 = 8357; return sub_520C10(v5, v25, v26); } v13 = *(_WORD *)(v5 + 58692); v14 = *(_DWORD *)v5; memcpy(&v32, (const void *)v8, 0x6Cu); v15 = v8 + 108; v35 = *(_WORD *)v15; v30 = v13; v16 = *(int (__thiscall **)(_DWORD))(v14 + 2004); v36 = *(_BYTE *)(v15 + 2); ++v33; ++v34; v17 = v16(v5); (*(void (__thiscall **)(int, int, int, char *, int, int))(*(_DWORD *)v17 + 64))(v17, v30, v28, &v32, v29, v29); v18 = (*(int (__stdcall **)(int))(**(_DWORD **)(v27 + 112) + 28))(v27 + 8); if ( v18 > 1 ) { (*(void (__stdcall **)(int, int))(**(_DWORD **)(v27 + 112) + 32))(v27 + 8, v18 - 1); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, int, int, int))(*(_DWORD *)v20 + 64))(v20, v30, v27, v27, v31, v31); } else { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, int, int))(*(_DWORD *)v19 + 48))(v19, v30, v27, v31, v31); } v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v21 + 4); v22 = off_849C18; *(_WORD *)off_849C18 = 13466; *((_WORD *)v22 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v22 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v22 + 4) = v30; *((_WORD *)v22 + 9) = *(_WORD *)(v28 + 8); *(_DWORD *)((char *)v22 + 10) = *(_DWORD *)v28; *(_DWORD *)((char *)v22 + 14) = *(_DWORD *)(v28 + 4); *((_WORD *)v22 + 10) = *(_WORD *)v29; *((_WORD *)v22 + 15) = *(_WORD *)(v27 + 8); *(_DWORD *)((char *)v22 + 22) = *(_DWORD *)v27; *(_DWORD *)((char *)v22 + 26) = *(_DWORD *)(v27 + 4); *((_WORD *)v22 + 16) = *(_WORD *)v31; if ( sub_4C81E0(&off_849C18, 34) ) { v24 = sub_428750((int)&dword_14D16430); result = sub_4C7EC0(&off_849C18, v24); } else { result = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ : Packet Too Long", 34); } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211CE: using guessed type __int16 word_14D211CE; //----- (005217A0) -------------------------------------------------------- int __stdcall sub_5217A0(int a1, int a2) { __int16 v2; // ST3C_2@1 int v3; // ebx@1 int v4; // eax@5 int v5; // eax@6 int v6; // esi@6 int v7; // eax@9 int v8; // eax@13 int v9; // eax@15 int v10; // eax@19 int v11; // eax@21 unsigned __int8 v12; // al@25 void *v13; // eax@30 int v14; // eax@32 int v15; // ebx@33 char *v16; // eax@33 int v17; // ecx@35 int v18; // ST2C_4@35 int v19; // ST20_4@35 int v20; // ST18_4@35 int v21; // ST14_4@35 int v22; // ST08_4@35 int v23; // ST0C_4@35 int v24; // ST10_4@35 int v25; // eax@35 int v27; // [sp-Ch] [bp-5Ch]@16 int v28; // [sp-8h] [bp-58h]@16 unsigned int v29; // [sp-4h] [bp-54h]@1 signed __int16 v30; // [sp+10h] [bp-40h]@8 int v31; // [sp+14h] [bp-3Ch]@8 int v32; // [sp+18h] [bp-38h]@8 int v33; // [sp+1Ch] [bp-34h]@28 int v34; // [sp+20h] [bp-30h]@33 int v35; // [sp+24h] [bp-2Ch]@7 int v36; // [sp+24h] [bp-2Ch]@15 int v37; // [sp+24h] [bp-2Ch]@33 char v38; // [sp+28h] [bp-28h]@34 unsigned int v39; // [sp+40h] [bp-10h]@1 int v40; // [sp+4Ch] [bp-4h]@1 int v41; // [sp+50h] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v29 = (unsigned int)&v41 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v40 = 0; v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 || (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) != *(_DWORD *)(a1 + 4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK Null Char Handle", 0); goto LABEL_37; } if ( 8320 != *(_WORD *)(a1 + 8) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 40))(v4, *(_WORD *)(a1 + 10)); sub_5209B0(v3, *(_WORD *)(a1 + 8), "GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); LABEL_37: v40 = -1; goto LABEL_38; } v5 = sub_409730(v3); v6 = v5; if ( !v5 || (v35 = v5 + 36484, v5 == -36484) ) goto LABEL_18; v31 = -1; v32 = -1; v30 = -1; if ( (*(_WORD *)(a1 + 18) & 0xFC00) == 9216 ) { v7 = (**(int (__stdcall ***)(_DWORD))(v5 + 36484))(*(_WORD *)(a1 + 18) & 0x3FF); if ( v7 ) { v30 = *(_WORD *)(v7 + 8); v31 = *(_DWORD *)v7; v32 = *(_DWORD *)(v7 + 4); } } if ( (*(_WORD *)(a1 + 12) & 0xFC00) == 8192 ) v35 = v6 + 32816; v8 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v3 + 2004))(v3, v29); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v8 + 28))( v8, v3, *(_WORD *)(a1 + 10), 0) ) sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK Not Free", 0); v9 = (**(int (__cdecl ***)(_DWORD))v35)(*(_WORD *)(a1 + 12) & 0x3FF); v36 = v9; if ( !v9 ) { v28 = 0; v27 = (int)"InventoryLocking::InvenCellReleaser_Enchant_AddGem::icr_Apply pEquipInvenCell"; LABEL_17: sub_639100(&unk_86DDD8, v27, v28); LABEL_18: v40 = -1; goto LABEL_38; } v10 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)); if ( !v10 ) { sub_5209B0(v6, 8323, "GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); v28 = 0; v27 = (int)"InventoryLocking::InvenCellReleaser_Enchant_AddGem::icr_Apply ItemData NULL - 1"; goto LABEL_17; } v11 = *(_DWORD *)v10; if ( !v11 ) { sub_5209B0(v6, 8323, "GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); v28 = 0; v27 = (int)"InventoryLocking::InvenCellReleaser_Enchant_AddGem::icr_Apply ItemData NULL - 2"; goto LABEL_17; } if ( *(_DWORD *)(v11 + 102) != 5 ) { sub_5209B0(v6, 8323, "GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); v28 = 0; v27 = (int)"InventoryLocking::InvenCellReleaser_Enchant_AddGem::icr_Apply No Weapon Item"; goto LABEL_17; } v12 = *(_BYTE *)(a1 + 14); if ( *(_BYTE *)(v36 + 67) > v12 ) { if ( (*(_WORD *)(a1 + 12) & 0xFC00) == 8192 ) { v33 = *(_WORD *)(v12 + v36 + 2 * v12 + 42 + 16); if ( !sub_48BC60(v33, v6) ) sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK. ShineItemID=", (unsigned __int16)v33); } v13 = off_849C18; *(_DWORD *)off_849C18 = 545271873; *((_WORD *)v13 + 2) = *(_WORD *)(a1 + 12); *((_WORD *)v13 + 3) = *(_WORD *)(a1 + 15); *((_BYTE *)v13 + 8) = *(_BYTE *)(a1 + 14); if ( sub_4C81E0(&off_849C18, 9) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_Enchant_AddGem::icr_Apply : Packet Too Long", 9); } v15 = v36; v16 = *(char **)(v6 + 122); v34 = *(_DWORD *)v36; v37 = *(_DWORD *)(v36 + 4); if ( !v16 ) v16 = sub_418A30(&v38, byte_6A492E); v17 = *(_DWORD *)(v6 + 102); v18 = *(_BYTE *)(a1 + 14); v19 = *(_WORD *)(v15 + 8); v20 = *(_DWORD *)(v17 + 4); v21 = *(_DWORD *)v17; v22 = *(_DWORD *)v16; v23 = *((_DWORD *)v16 + 1); v24 = *((_DWORD *)v16 + 2); v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); sub_611240(2020, v25, v22, v23, v24, v21, v20, 0, v19, v34, v37, v18, 0, (unsigned __int16)v30, v31, v32); v40 = -1; } else { sub_639100(&unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_Enchant_AddGem::icr_Apply Over Count", 0); sub_5209B0(v6, 8325, "GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); v40 = -1; } LABEL_38: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (00521BB0) -------------------------------------------------------- int __stdcall sub_521BB0(int a1, int a2) { int v2; // esi@1 __int16 v3; // ST3C_2@1 int v4; // edi@1 int v5; // eax@5 int v6; // eax@6 int v7; // ebx@6 int v8; // ecx@7 int v9; // eax@10 int v10; // eax@15 int v11; // eax@15 int v12; // eax@19 bool v13; // zf@23 int v14; // eax@29 int v15; // eax@31 int v16; // eax@32 int v17; // eax@34 void *v18; // eax@37 __int16 v19; // dx@37 int v20; // eax@39 char *v21; // eax@40 int v22; // ecx@42 int v23; // ST20_4@42 int v24; // ST18_4@42 int v25; // ST14_4@42 int v26; // ST08_4@42 int v27; // ST0C_4@42 int v28; // ST10_4@42 int v29; // eax@42 int v30; // eax@42 int v32; // [sp-Ch] [bp-78h]@16 int v33; // [sp-8h] [bp-74h]@16 int v34; // [sp+10h] [bp-5Ch]@40 int v35; // [sp+14h] [bp-58h]@40 int v36; // [sp+18h] [bp-54h]@1 int v37; // [sp+1Ch] [bp-50h]@34 signed __int16 v38; // [sp+20h] [bp-4Ch]@8 int v39; // [sp+24h] [bp-48h]@8 int v40; // [sp+28h] [bp-44h]@8 int v41; // [sp+30h] [bp-3Ch]@15 int v42; // [sp+34h] [bp-38h]@1 int v43; // [sp+38h] [bp-34h]@7 int v44; // [sp+38h] [bp-34h]@31 char v45; // [sp+3Ch] [bp-30h]@41 int v46; // [sp+54h] [bp-18h]@23 __int16 v47; // [sp+58h] [bp-14h]@23 unsigned int v48; // [sp+5Ch] [bp-10h]@1 int v49; // [sp+68h] [bp-4h]@1 int v50; // [sp+6Ch] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v2 = a1; v42 = 0; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a1 + 2); v49 = 0; v4 = sub_54DE90(&unk_13253630, v3); v36 = v4; if ( !v4 || (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) != *(_DWORD *)(a1 + 4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 768))(v4) ) { sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK Null Char Handle", 0); goto LABEL_49; } if ( 8336 != *(_WORD *)(a1 + 8) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *(_WORD *)(a1 + 10)); sub_520AE0(v4, *(_WORD *)(a1 + 8), "GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"); LABEL_49: v49 = -1; goto LABEL_50; } v6 = sub_409730(v4); v7 = v6; if ( !v6 || (v8 = v6 + 36484, v43 = v6 + 36484, v6 == -36484) ) goto LABEL_18; v38 = -1; v39 = -1; v40 = -1; if ( *(_BYTE *)(a1 + 27) && (*(_WORD *)(a1 + 14) & 0xFC00) == 9216 ) { v9 = (**(int (__stdcall ***)(_DWORD))v8)(*(_WORD *)(a1 + 14) & 0x3FF); if ( v9 ) { v38 = *(_WORD *)(v9 + 8); v39 = *(_DWORD *)v9; v40 = *(_DWORD *)(v9 + 4); } v8 = v43; } if ( (*(_WORD *)(a1 + 12) & 0xFC00) == 8192 ) v8 = v7 + 32816; v10 = (**(int (__stdcall ***)(_DWORD))v8)(*(_WORD *)(a1 + 12) & 0x3FF); v41 = v10; v11 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)); if ( !v11 ) { sub_520AE0(v7, 8340, "GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"); v33 = 0; v32 = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK No ItemData NULL - 1"; LABEL_17: sub_639100(&unk_86DDD8, v32, v33); LABEL_18: v49 = -1; goto LABEL_50; } v12 = *(_DWORD *)v11; if ( !v12 ) { sub_520AE0(v7, 8340, "GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"); v33 = 0; v32 = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK No ItemData NULL - 2"; goto LABEL_17; } if ( *(_DWORD *)(v12 + 102) != 5 ) { sub_520AE0(v7, 8340, "GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"); v33 = 0; v32 = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK No Weapon Item"; goto LABEL_17; } v13 = *(_BYTE *)(a1 + 24) == 0; v47 = -1; v46 = -1; if ( !v13 ) LOWORD(v46) = *(_WORD *)(v41 + 58); if ( *(_BYTE *)(a1 + 25) ) HIWORD(v46) = *(_WORD *)(v41 + 61); if ( *(_BYTE *)(a1 + 26) ) v47 = *(_WORD *)(v41 + 64); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v14 + 28))( v14, v4, *(_WORD *)(a1 + 10), 0) ) sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK Not Free", 0); v15 = 0; v44 = 0; do { v16 = *((_WORD *)&v46 + v15); if ( (_WORD)v16 != -1 ) { if ( (*(_WORD *)(v2 + 12) & 0xFC00) == 8192 ) { v37 = v16; v17 = sub_409730(v4); if ( !v17 ) goto LABEL_18; if ( !sub_48BD10(v37, v17) ) sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK ItemAction Can`t Del ActionID. ShineItemID=", (unsigned __int16)v37); } v18 = off_849C18; *(_DWORD *)off_849C18 = 546320451; v19 = *(_WORD *)(v2 + 12); *((_BYTE *)v18 + 6) = v44; *((_WORD *)v18 + 2) = v19; if ( sub_4C81E0(&off_849C18, 7) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v20 + 12))(v20, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_Enchant_RemoveGem::icr_Apply : Packet Too Long", 7); } v21 = *(char **)(v7 + 122); v34 = *(_DWORD *)v41; v35 = *(_DWORD *)(v41 + 4); if ( !v21 ) { v42 |= 1u; v21 = sub_418A30(&v45, byte_6A492E); } v22 = *(_DWORD *)(v7 + 102); v23 = *(_WORD *)(v41 + 8); v24 = *(_DWORD *)(v22 + 4); v25 = *(_DWORD *)v22; v26 = *(_DWORD *)v21; v27 = *((_DWORD *)v21 + 1); v28 = *((_DWORD *)v21 + 2); v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); sub_611240(2021, v29, v26, v27, v28, v25, v24, 0, v23, v34, v35, v44, 0, (unsigned __int16)v38, v39, v40); v30 = v42; if ( v42 & 2 ) { v30 = v42 & 0xFFFFFFFD; v42 &= 0xFFFFFFFDu; } v4 = v36; v2 = a1; if ( v30 & 1 ) v42 = v30 & 0xFFFFFFFE; } v15 = v44 + 1; v44 = v15; } while ( (unsigned int)v15 < 3 ); v49 = -1; LABEL_50: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (00522000) -------------------------------------------------------- int __stdcall sub_522000(int a1, int a2) { __int16 v2; // ST3C_2@1 int v3; // esi@1 int v4; // eax@5 int v5; // eax@6 int v6; // ebx@6 int v7; // ecx@7 int v8; // eax@9 int v9; // eax@14 void *v10; // eax@16 int v11; // eax@18 char *v12; // eax@20 int v13; // ecx@22 int v14; // ST2C_4@22 int v15; // ST20_4@22 int v16; // ST18_4@22 int v17; // ST14_4@22 int v18; // ST08_4@22 int v19; // ST0C_4@22 int v20; // ST10_4@22 int v21; // eax@22 int v23; // [sp+10h] [bp-40h]@20 int v24; // [sp+14h] [bp-3Ch]@20 int v25; // [sp+18h] [bp-38h]@8 int v26; // [sp+1Ch] [bp-34h]@8 signed __int16 v27; // [sp+20h] [bp-30h]@8 int v28; // [sp+24h] [bp-2Ch]@7 int v29; // [sp+24h] [bp-2Ch]@14 char v30; // [sp+28h] [bp-28h]@21 unsigned int v31; // [sp+40h] [bp-10h]@1 int v32; // [sp+4Ch] [bp-4h]@1 int v33; // [sp+50h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v32 = 0; v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 || (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) != *(_DWORD *)(a1 + 4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK Null Char Handle", 0); goto LABEL_25; } if ( 8352 != *(_WORD *)(a1 + 8) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 40))(v4, *(_WORD *)(a1 + 10)); sub_520C10(v3, *(_WORD *)(a1 + 8), "GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK"); LABEL_25: v32 = -1; goto LABEL_26; } v5 = sub_409730(v3); v6 = v5; if ( v5 ) { v7 = v5 + 36484; v28 = v5 + 36484; if ( v5 != -36484 ) { v25 = -1; v26 = -1; v27 = -1; if ( (*(_WORD *)(a1 + 15) & 0xFC00) == 9216 ) { v8 = (**(int (__stdcall ***)(_DWORD))v7)(*(_WORD *)(a1 + 15) & 0x3FF); if ( v8 ) { v27 = *(_WORD *)(v8 + 8); v25 = *(_DWORD *)v8; v26 = *(_DWORD *)(v8 + 4); } v7 = v28; } if ( (*(_WORD *)(a1 + 12) & 0xFC00) == 8192 ) v7 = v6 + 32816; v29 = (**(int (__stdcall ***)(_DWORD))v7)(*(_WORD *)(a1 + 12) & 0x3FF); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a1 + 10), 0) ) sub_639100(&unk_86DDD8, (int)"gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK Not Free", 0); v10 = off_849C18; *(_DWORD *)off_849C18 = 547369029; *((_WORD *)v10 + 2) = *(_WORD *)(a1 + 12); *((_BYTE *)v10 + 6) = *(_BYTE *)(a1 + 14); if ( sub_4C81E0(&off_849C18, 7) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"InventoryLocking::InvenCellReleaser_Enchant_NewSocket::icr_Apply : Packet Too Long", 7); } if ( v29 ) { v12 = *(char **)(v6 + 122); v23 = *(_DWORD *)v29; v24 = *(_DWORD *)(v29 + 4); if ( !v12 ) v12 = sub_418A30(&v30, byte_6A492E); v13 = *(_DWORD *)(v6 + 102); v14 = *(_BYTE *)(a1 + 14); v15 = *(_WORD *)(v29 + 8); v16 = *(_DWORD *)(v13 + 4); v17 = *(_DWORD *)v13; v18 = *(_DWORD *)v12; v19 = *((_DWORD *)v12 + 1); v20 = *((_DWORD *)v12 + 2); v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); sub_611240(2022, v21, v18, v19, v20, v17, v16, 0, v15, v23, v24, v14, 0, (unsigned __int16)v27, v25, v26); } } } v32 = -1; LABEL_26: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005222F0) -------------------------------------------------------- char __thiscall sub_5222F0(int this, int a2) { int v2; // eax@1 int v3; // edi@1 const char *v4; // eax@4 unsigned int i; // ebx@7 int v6; // edi@8 void *v7; // eax@13 int v8; // eax@15 int v10; // [sp+8h] [bp-4Ch]@1 unsigned int v11; // [sp+Ch] [bp-48h]@5 char v12[4]; // [sp+10h] [bp-44h]@4 int v13; // [sp+14h] [bp-40h]@4 int v14; // [sp+18h] [bp-3Ch]@4 int v15; // [sp+1Ch] [bp-38h]@4 int v16; // [sp+20h] [bp-34h]@4 int v17; // [sp+24h] [bp-30h]@4 int v18; // [sp+28h] [bp-2Ch]@4 int v19; // [sp+2Ch] [bp-28h]@4 char v20[4]; // [sp+30h] [bp-24h]@10 int v21; // [sp+34h] [bp-20h]@10 int v22; // [sp+38h] [bp-1Ch]@10 int v23; // [sp+3Ch] [bp-18h]@10 int v24; // [sp+40h] [bp-14h]@10 int v25; // [sp+44h] [bp-10h]@10 int v26; // [sp+48h] [bp-Ch]@10 int v27; // [sp+4Ch] [bp-8h]@10 unsigned int v28; // [sp+50h] [bp-4h]@1 int v29; // [sp+54h] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v10 = this; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(this + 161560)); v3 = v2; if ( v2 ) { v2 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1804))(v2); if ( v2 ) { v2 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1804))(v3); if ( *(_DWORD *)v2 ) { v4 = (const char *)(*(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1804))(v3) + 2); v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, v4, 0x20u); LOBYTE(v2) = dword_1325CD24; v11 = dword_1325CD24 ? *(_DWORD *)(dword_1325CD24 + 40) : 0; for ( i = 0; i < v11; ++i ) { v2 = sub_626BC0((int)&unk_1325CCF0, i); v6 = v2; if ( !v2 ) break; LOBYTE(v2) = a2; if ( *(_DWORD *)v6 == a2 ) { v27 = 0; v26 = 0; v25 = 0; v24 = 0; v23 = 0; v22 = 0; v21 = 0; *(_DWORD *)v20 = 0; strncpy(v20, (const char *)(v6 + 4), 0x20u); LOBYTE(v2) = sub_427A70((int)v12, (int)v20); if ( v2 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 8306; *((_BYTE *)v7 + 2) = a2; *(_WORD *)((char *)v7 + 3) = *(_WORD *)(v10 + 161560); *(_DWORD *)((char *)v7 + 5) = *(_DWORD *)(v6 + 36); if ( sub_4C81E0(&off_849C18, 9) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 764))(v10); LOBYTE(v2) = (*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v10, &off_849C18); } else { LOBYTE(v2) = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_NpcReaction : Packet Too Long", 9); } *(_WORD *)(v10 + 161560) = -1; return v2; } } } } } } return v2; } // 86FEB8: using guessed type int __security_cookie; // 1325CD24: using guessed type int dword_1325CD24; //----- (005224A0) -------------------------------------------------------- int __thiscall sub_5224A0(void *this, int a2, __int16 a3, int a4, int a5, int a6, int a7, int a8) { unsigned int v8; // ST10_4@1 void *v9; // ebx@1 int (__thiscall *v10)(_DWORD, _DWORD); // eax@1 int v11; // eax@1 int v12; // edx@1 int v13; // eax@2 int (__thiscall *v14)(_DWORD); // eax@4 void *v15; // eax@6 int v16; // ST10_4@6 char *v17; // eax@6 signed int v18; // ebx@6 void *v19; // eax@6 void *v20; // eax@6 void *v21; // edi@11 int v22; // eax@11 int v23; // eax@11 int v24; // ST0C_4@11 int v25; // eax@11 int v26; // eax@13 int v27; // eax@14 void (__stdcall *v28)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@14 int v29; // eax@14 void (__stdcall *v30)(_DWORD, _DWORD, _DWORD); // edx@14 int v31; // eax@14 void (__stdcall *v32)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@14 int v33; // eax@14 int v34; // eax@14 int v35; // ST10_4@15 int v36; // ST0C_4@15 int v37; // ST08_4@15 int v38; // eax@15 int *v40; // [sp+10h] [bp-A4h]@4 int v41; // [sp+14h] [bp-A0h]@4 int v42; // [sp+18h] [bp-9Ch]@4 int (**v43)(); // [sp+1Ch] [bp-98h]@1 void *v44; // [sp+20h] [bp-94h]@1 int v45; // [sp+28h] [bp-8Ch]@4 int v46; // [sp+2Ch] [bp-88h]@14 int v47; // [sp+30h] [bp-84h]@1 int v48; // [sp+34h] [bp-80h]@6 int v49; // [sp+38h] [bp-7Ch]@11 int v50; // [sp+3Ch] [bp-78h]@6 unsigned int v51; // [sp+A4h] [bp-10h]@1 int v52; // [sp+B0h] [bp-4h]@1 int v53; // [sp+B4h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v8 = (unsigned int)&v53 ^ __security_cookie; v9 = this; v47 = a4; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_BuyAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_BuyAll"; dword_750AB8[dword_750CB8++] = -1; v10 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1176); v52 = 0; v11 = v10(a2, v8); v43 = &off_6A86A4; v44 = v9; v12 = *(_DWORD *)v9; if ( v11 ) v13 = (*(int (__thiscall **)(void *, int))(v12 + 4))(v9, v11); else v13 = (*(int (__thiscall **)(void *))(v12 + 8))(v9); v45 = v13; v43 = (int (**)())&off_6A86B4; v14 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v52) = 1; v40 = (int *)&v43; v41 = v14(a2); v42 = 9; if ( sub_486D40(&v40) ) { v15 = sub_63ACA0(dword_1508B168, *(_WORD *)a4); (*(void (__thiscall **)(void *, _DWORD, int *, _DWORD))(*(_DWORD *)v15 + 20))(v15, *(_WORD *)a4, &v48, "-o"); v16 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v17 = sub_5A7540(byte_14D16AE8); v18 = 1; sub_63D0E0(&v48, *(_WORD *)a4, 1, *((_DWORD *)v17 + 4), v16); LOWORD(v50) = *(_WORD *)a4; v19 = sub_63ACA0(dword_1508B168, v50); (*(void (__thiscall **)(void *, int *, _DWORD))(*(_DWORD *)v19 + 32))(v19, &v50, *(_DWORD *)(a4 + 2)); v20 = sub_63ACA0(dword_1508B168, *(_WORD *)a4); if ( v20 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 40))(v20) == 29 ) { sub_49BF00((void *)a2, (int)&v48, a5, a6, a7, a8); } else { if ( !sub_49B270((void *)a2, (int)&v48, a5, a6) ) { v21 = off_849C18; *((_WORD *)off_849C18 + 1) = a3; *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)v21 = 13322; *((_WORD *)v21 + 23) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *((_DWORD *)v21 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v22 = *(_DWORD *)(a2 + 122); *((_DWORD *)v21 + 3) = *(_DWORD *)v22; *((_DWORD *)v21 + 4) = *(_DWORD *)(v22 + 4); *((_DWORD *)v21 + 5) = *(_DWORD *)(v22 + 8); v23 = *(_DWORD *)(a2 + 102); *((_DWORD *)v21 + 6) = *(_DWORD *)v23; *((_DWORD *)v21 + 7) = *(_DWORD *)(v23 + 4); *((_WORD *)v21 + 16) = *((_WORD *)v40 + 4) & 0x3FF | 0x2400; *((_WORD *)v21 + 21) = *(_WORD *)v47; *(_DWORD *)((char *)v21 + 34) = v48; *(_DWORD *)((char *)v21 + 38) = v49; *((_DWORD *)v21 + 12) = a5; *((_DWORD *)v21 + 14) = a7; *((_DWORD *)v21 + 15) = a8; *((_DWORD *)v21 + 13) = a6; *((_DWORD *)v21 + 16) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 840))(a2); *((_WORD *)v21 + 34) = *(_WORD *)(a2 + 84502); *((_WORD *)v21 + 22) = 68; v24 = v50; v25 = (int)sub_63ACA0(dword_1508B168, v50); v47 = sub_63D0C0(&v48, v25, v24, (int)((char *)v21 + 70)) - (_DWORD)((char *)v21 + 70) + 70; if ( sub_4C81E0(&off_849C18, v47) ) { v26 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v26); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_BuyAll : Packet Too Long", v47); } v47 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v28 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v47 + 72); v46 = *(_WORD *)(v27 + 4); v28(v46, *((_DWORD *)v21 + 12), *((_DWORD *)v21 + 13), -1); v46 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v30 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v46 + 76); v47 = *(_WORD *)(v29 + 4); v30(v47, *((_DWORD *)v21 + 14), -1); v46 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v32 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v46 + 112); v47 = *(_WORD *)(v31 + 4); v32(v47, *((_DWORD *)v21 + 15), 0, -1, 0); v46 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v47 = (**(int (__stdcall ***)(_DWORD))v40[1])(v40[2]); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__stdcall **)(_DWORD, int, int *, char *, char *))(*(_DWORD *)v46 + 64))( *(_WORD *)(v33 + 4), v47, &v48, (char *)v21 + 32, (char *)v21 + 32); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v34 + 4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 2500))(a2, *((_DWORD *)v21 + 12)); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 2880))(a2); v18 = 1; } } v35 = *(_WORD *)(a2 + 84502); v36 = v49; v37 = v48; v38 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1056))(a2); sub_5C93F0(v38, v37, v36, v35); } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 12, 4, 515); } dword_750CB8 -= v18; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 12, 4, 522); --dword_750CB8; } v52 = -1; v43 = &off_6A86A4; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_BuyAll"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (005229B0) -------------------------------------------------------- int __stdcall sub_5229B0(int a1, __int16 a2, int a3, int a4, __int16 a5, int a6, int a7, int a8, int a9) { void *v9; // eax@1 void *v10; // edi@1 int v11; // esi@1 __int16 v12; // ax@1 int v13; // ST28_4@1 int v14; // eax@1 int v15; // eax@3 int v16; // eax@4 int v17; // ST18_4@4 int v18; // ST14_4@4 int v19; // eax@4 int v20; // eax@4 int v21; // eax@4 int v22; // eax@4 int v24; // [sp+2Ch] [bp+Ch]@1 int v25; // [sp+2Ch] [bp+Ch]@4 int v26; // [sp+2Ch] [bp+Ch]@4 int v27; // [sp+2Ch] [bp+Ch]@4 int v28; // [sp+2Ch] [bp+Ch]@4 sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_BuyLot"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_BuyLot"; dword_750AB8[dword_750CB8++] = -1; v9 = sub_63ACA0(dword_1508B168, *(_WORD *)(a3 + 8)); (*(void (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 32))(v9, a3 + 8, a4); v10 = off_849C18; v11 = a1; *((_WORD *)off_849C18 + 1) = a2; *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_WORD *)v10 = 13325; *((_WORD *)v10 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2004))(v11) + 4); *(_DWORD *)((char *)v10 + 10) = *(_DWORD *)a3; *(_DWORD *)((char *)v10 + 14) = *(_DWORD *)(a3 + 4); *((_WORD *)v10 + 11) = *(_WORD *)(a3 + 8); *((_DWORD *)v10 + 6) = a6; *((_DWORD *)v10 + 8) = a8; *((_DWORD *)v10 + 9) = a9; *((_DWORD *)v10 + 7) = a7; *((_DWORD *)v10 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 840))(v11); v12 = *(_WORD *)(a1 + 84502); *((_WORD *)v10 + 10) = a5 & 0x3FF | 0x2400; *((_WORD *)v10 + 9) = 44; *((_WORD *)v10 + 22) = v12; v13 = *(_WORD *)(a3 + 8); v14 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(a3 + 8)); v24 = sub_63D0C0((void *)a3, v14, v13, (int)((char *)v10 + 46)) - (_DWORD)((char *)v10 + 46) + 46; if ( sub_4C81E0(&off_849C18, v24) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_BuyLot : Packet Too Long", v24); } v25 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)v25 + 72))(v25); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v17 = *((_DWORD *)v10 + 8); v18 = *(_WORD *)(v16 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v26 + 76))(v26); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v27 + 112))( v27, *(_WORD *)(v19 + 4), *((_DWORD *)v10 + 9), 0, -1, 0); v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, int, int, char *, char *))(*(_DWORD *)v28 + 64))( v28, *(_WORD *)(v20 + 4), a3, a3, (char *)v10 + 20, (char *)v10 + 20); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v21 + 4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a1 + 2500))(a1, *((_DWORD *)v10 + 6)); v22 = (*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1056))( a1, *(_DWORD *)a3, *(_DWORD *)(a3 + 4), *(_WORD *)(a1 + 84502)); sub_5C93F0(v22, v18, v17, -1); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 2880))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_BuyLot"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00522CA0) -------------------------------------------------------- int __thiscall sub_522CA0(void *this, int a2, __int16 a3, int a4, int a5) { unsigned int v5; // ST14_4@1 void *v6; // edi@1 int (__thiscall *v7)(_DWORD, _DWORD); // eax@1 int v8; // eax@1 int v9; // edx@1 int v10; // eax@2 int (__thiscall *v11)(_DWORD); // eax@4 void *v12; // eax@6 int v13; // ST14_4@6 char *v14; // eax@6 void *v15; // eax@6 void *v16; // edi@6 int v17; // eax@6 int v18; // eax@6 int v19; // ST10_4@6 int v20; // eax@6 int v21; // edi@6 int v22; // eax@8 int v23; // edi@9 int v24; // ebx@9 int v25; // ST0C_4@9 int v26; // eax@9 int v27; // eax@9 int (**v29)(); // [sp+14h] [bp-9Ch]@1 void *v30; // [sp+18h] [bp-98h]@1 int v31; // [sp+20h] [bp-90h]@4 int *v32; // [sp+24h] [bp-8Ch]@4 int v33; // [sp+28h] [bp-88h]@4 int v34; // [sp+2Ch] [bp-84h]@4 int v35; // [sp+30h] [bp-80h]@6 int v36; // [sp+34h] [bp-7Ch]@6 int v37; // [sp+38h] [bp-78h]@6 unsigned int v38; // [sp+A0h] [bp-10h]@1 int v39; // [sp+ACh] [bp-4h]@1 int v40; // [sp+B0h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v5 = (unsigned int)&v40 ^ __security_cookie; v6 = this; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::igs_BuyAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::igs_BuyAll"; dword_750AB8[dword_750CB8++] = -1; v7 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1176); v39 = 0; v8 = v7(a2, v5); v29 = &off_6A86A4; v30 = v6; v9 = *(_DWORD *)v6; if ( v8 ) v10 = (*(int (__thiscall **)(void *, int))(v9 + 4))(v6, v8); else v10 = (*(int (__thiscall **)(void *))(v9 + 8))(v6); v31 = v10; v29 = (int (**)())&off_6A86B4; v11 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v39) = 1; v32 = (int *)&v29; v33 = v11(a2); v34 = 4; if ( sub_486D40(&v32) ) { v12 = sub_63ACA0(dword_1508B168, *(_WORD *)a4); (*(void (__thiscall **)(void *, _DWORD, int *, _DWORD))(*(_DWORD *)v12 + 20))(v12, *(_WORD *)a4, &v35, "-o"); v13 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v14 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v35, *(_WORD *)a4, 1, *((_DWORD *)v14 + 4), v13); LOWORD(v37) = *(_WORD *)a4; v15 = sub_63ACA0(dword_1508B168, v37); (*(void (__thiscall **)(void *, int *, _DWORD))(*(_DWORD *)v15 + 32))(v15, &v37, *(_DWORD *)(a4 + 2)); v16 = off_849C18; *(_WORD *)off_849C18 = 13456; *((_WORD *)v16 + 1) = a3; *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_DWORD *)v16 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2072))(a2); *((_WORD *)v16 + 25) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *((_DWORD *)v16 + 13) = a5; *((_DWORD *)v16 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v17 = *(_DWORD *)(a2 + 122); *((_DWORD *)v16 + 4) = *(_DWORD *)v17; *((_DWORD *)v16 + 5) = *(_DWORD *)(v17 + 4); *((_DWORD *)v16 + 6) = *(_DWORD *)(v17 + 8); v18 = *(_DWORD *)(a2 + 102); *((_DWORD *)v16 + 7) = *(_DWORD *)v18; *((_DWORD *)v16 + 8) = *(_DWORD *)(v18 + 4); *((_WORD *)v16 + 18) = *((_WORD *)v32 + 4) & 0x3FF | 0x1000; *((_WORD *)v16 + 23) = *(_WORD *)a4; *(_DWORD *)((char *)v16 + 38) = v35; *(_DWORD *)((char *)v16 + 42) = v36; *((_WORD *)v16 + 24) = 54; v19 = v37; v20 = (int)sub_63ACA0(dword_1508B168, v37); v21 = sub_63D0C0(&v35, v20, v19, (int)((char *)v16 + 56)) - (_DWORD)((char *)v16 + 56) + 56; if ( sub_4C81E0(&off_849C18, v21) ) { v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_BuyAll : Packet Too Long", v21); } v23 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v24 = (**(int (__stdcall ***)(_DWORD))v32[1])(v32[2]); v25 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2) + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v23 + 64))(v23); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v26 + 4); v27 = (*(int (__thiscall **)(int, int, int, _DWORD))(*(_DWORD *)a2 + 1056))(a2, v35, v36, *(_WORD *)(a2 + 84502)); sub_5C93F0(v27, v25, v24, (int)&v35); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 2880))(a2); --dword_750CB8; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 12, 4, 522); --dword_750CB8; } v39 = -1; v29 = &off_6A86A4; return sub_467660((int)&unk_D020420, (int)"ItemInventory::igs_BuyAll"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00523020) -------------------------------------------------------- int __stdcall sub_523020(int a1, __int16 a2, int a3, int a4, __int16 a5, int a6) { void *v6; // eax@1 void *v7; // esi@1 int v8; // edi@1 int v9; // ST0C_4@1 int v10; // eax@1 int v11; // esi@1 int v12; // eax@3 int v13; // esi@4 __int16 v14; // ST04_2@4 int v15; // eax@4 sub_4675D0((int)&unk_D020420, (int)"ItemInventory::igs_BuyLot"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::igs_BuyLot"; dword_750AB8[dword_750CB8++] = -1; v6 = sub_63ACA0(dword_1508B168, *(_WORD *)(a3 + 8)); (*(void (__thiscall **)(void *, int, int))(*(_DWORD *)v6 + 32))(v6, a3 + 8, a4); v7 = off_849C18; v8 = a1; *((_WORD *)off_849C18 + 1) = a2; *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_WORD *)v7 = 13459; *((_WORD *)v7 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8) + 4); *(_DWORD *)((char *)v7 + 14) = *(_DWORD *)a3; *(_DWORD *)((char *)v7 + 18) = *(_DWORD *)(a3 + 4); *((_WORD *)v7 + 13) = *(_WORD *)(a3 + 8); *((_DWORD *)v7 + 7) = a6; *(_DWORD *)((char *)v7 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2072))(v8); *((_WORD *)v7 + 12) = a5 & 0x3FF | 0x1000; *((_WORD *)v7 + 11) = 30; v9 = *(_WORD *)(a3 + 8); v10 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(a3 + 8)); v11 = sub_63D0C0((void *)a3, v10, v9, (int)((char *)v7 + 32)) - (_DWORD)((char *)v7 + 32) + 32; if ( sub_4C81E0(&off_849C18, v11) ) { v12 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v12); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_BuyLot : Packet Too Long", v11); } v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v14 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1) + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v13 + 64))(v13); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v15 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 2880))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ItemInventory::igs_BuyLot"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00523220) -------------------------------------------------------- int __thiscall sub_523220(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 int v5; // ebx@6 int v6; // edi@8 int v7; // eax@9 int v8; // eax@12 int v9; // eax@18 int v10; // edx@20 int v11; // ecx@20 int v12; // eax@21 int v13; // eax@27 int v14; // edx@27 int v15; // eax@29 int v16; // eax@29 int v17; // ecx@29 int v18; // eax@29 int v19; // ecx@29 int v20; // eax@29 __int64 v21; // qax@33 int v22; // eax@35 __int64 v23; // qax@37 void *v24; // ebx@39 int v25; // eax@41 int v26; // ecx@42 unsigned int v27; // eax@49 __int16 v28; // ST1C_2@51 int (__thiscall *v29)(_DWORD); // edx@51 int v30; // eax@51 unsigned __int64 v31; // qax@52 int v32; // ebx@53 int v33; // eax@55 int v34; // eax@57 int v35; // edx@57 unsigned __int64 v36; // qax@59 unsigned int v37; // edi@60 int v39; // [sp-8h] [bp-94h]@7 signed int v40; // [sp-8h] [bp-94h]@15 unsigned int v41; // [sp-4h] [bp-90h]@1 int *v42; // [sp-4h] [bp-90h]@29 int (**v43)(); // [sp+10h] [bp-7Ch]@51 int (**v44)(); // [sp+24h] [bp-68h]@40 int v45; // [sp+28h] [bp-64h]@41 int v46; // [sp+2Ch] [bp-60h]@41 int v47; // [sp+34h] [bp-58h]@25 int v48; // [sp+38h] [bp-54h]@33 int v49; // [sp+3Ch] [bp-50h]@57 int v50; // [sp+40h] [bp-4Ch]@25 int *v51; // [sp+44h] [bp-48h]@51 int v52; // [sp+48h] [bp-44h]@51 int v53; // [sp+4Ch] [bp-40h]@51 int v54; // [sp+50h] [bp-3Ch]@1 int v55; // [sp+54h] [bp-38h]@9 int v56; // [sp+58h] [bp-34h]@29 unsigned int v57; // [sp+5Ch] [bp-30h]@29 int v58; // [sp+60h] [bp-2Ch]@20 int v59; // [sp+64h] [bp-28h]@29 int v60; // [sp+68h] [bp-24h]@35 int v61; // [sp+78h] [bp-14h]@37 unsigned int v62; // [sp+7Ch] [bp-10h]@1 int v63; // [sp+88h] [bp-4h]@1 int v64; // [sp+8Ch] [bp+0h]@1 v62 = (unsigned int)&v64 ^ __security_cookie; v41 = (unsigned int)&v64 ^ __security_cookie; v4 = (int)this; v54 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; dword_750AB8[dword_750CB8++] = -1; v63 = 0; if ( !(dword_13244860 & 1) ) { dword_13244860 |= 1u; word_1324485C = 70; atexit(nullsub_94); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_1324485C) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) || *(_WORD *)(v4 + 85728) & 0xC ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 516); v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_63; } v5 = sub_4C3BD0(v4 + 84508, v4); if ( !v5 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 516); v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; LABEL_63: v63 = -1; goto LABEL_64; } v6 = v54 + 2; if ( !sub_418CB0((int)&dword_14D20890, *(_WORD *)(v54 + 2)) ) goto LABEL_17; v7 = sub_418CB0((int)&dword_14D20890, *(_WORD *)v6); v55 = v7; if ( !v7 || !*(_DWORD *)v7 || !*(_DWORD *)(v7 + 4) || (v8 = *(_DWORD *)(v4 + 84504)) == 0 || !*(_DWORD *)v8 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 515); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4) < *(_BYTE *)(*(_DWORD *)v55 + 219) ) { v40 = 529; LABEL_16: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, v40); LABEL_17: v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } v9 = sub_4C4610(&unk_D9FB918, **(_DWORD **)(v4 + 84504)); if ( !v9 ) goto LABEL_67; v10 = *(_WORD *)v9; v11 = 0; v58 = v10; if ( v10 > 0 ) { v12 = v9 + 5; do { v10 = v58; if ( *(_WORD *)v12 == *(_WORD *)v6 ) break; ++v11; v12 += 3; } while ( v11 < v58 ); } if ( v11 >= v10 ) { LABEL_67: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 515); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } (*(void (__thiscall **)(int, int, _DWORD, int *, int *, unsigned int))(*(_DWORD *)v5 + 32))( v5, v4, *(_WORD *)v6, &v47, &v50, v41); if ( (_WORD)v47 != -1 ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 3600))(v4, v6, v47); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } v13 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v5 + 28))(v5, v4, *(_WORD *)v6); v14 = *(_DWORD *)v4; if ( v13 ) { (*(void (__thiscall **)(int, int))(v14 + 2104))(v4, v13); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } v15 = (*(int (__thiscall **)(int))(v14 + 2004))(v4); v42 = &v59; (*(void (__thiscall **)(int))(*(_DWORD *)v15 + 100))(v15); v16 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v5 + 16))(v5, v4, *(_WORD *)v6); v17 = *(_WORD *)v6; v57 = v16; v18 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 20))(v5, v4, v17); v19 = *(_WORD *)v6; v56 = v18; v20 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 24))(v5, v4, v19); v58 = v20; if ( !v57 && !v56 && !v20 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : try to buy the item which cannot be solt", 0); v40 = 515; goto LABEL_16; } LODWORD(v21) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1076))(v4); v48 = v59 + v21; if ( *(_DWORD *)(v6 + 2) * (unsigned __int64)v57 > v59 + v21 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Try to Too expencive item", 0); v40 = 523; goto LABEL_16; } v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1084))(v4); if ( v60 + v22 >= (unsigned int)(v56 * *(_DWORD *)(v6 + 2)) ) { LODWORD(v23) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2820))(v4); if ( (unsigned int)(v58 * *(_DWORD *)(v6 + 2)) <= (unsigned __int64)(v61 + v23) ) { v24 = sub_63ACA0(dword_1508B168, *(_WORD *)v6); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v24 + 40))(v24) == 13 ) { sub_43BAC0((int)&v44, v4 + 36484, v4 + 160312); LOBYTE(v63) = 1; if ( sub_43BBB0(&v44) ) { do { v25 = (**(int (__stdcall ***)(_DWORD))v45)(v46); if ( !v25 ) break; v26 = *(_DWORD *)(v25 + 112); if ( !v26 || (*(int (__cdecl **)(int *))(*(_DWORD *)v26 + 40))(v42) == 13 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 525); v44 = &off_6A86A4; v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } } while ( sub_63F7F0(&v44) ); } LOBYTE(v63) = 0; v44 = &off_6A86A4; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v24 + 24))(v24) ) { v27 = *(_DWORD *)(*(_DWORD *)v55 + 106); if ( *(_DWORD *)(v6 + 2) > v27 ) *(_DWORD *)(v6 + 2) = v27; v28 = *(_WORD *)v6; v54 = v4 + 36484; sub_43BB70((int)&v43, v4 + 36484, v28, v4 + 160312); v29 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v63) = 2; v30 = v29(v4); v51 = (int *)&v43; v52 = v30; v53 = 9; if ( sub_486D40(&v51) ) { while ( 1 ) { v32 = (**(int (__stdcall ***)(_DWORD))v51[1])(v51[2]); if ( v32 != 0 ) { v33 = (unsigned __int8)(*(int (__cdecl **)(int *))(**(_DWORD **)(v32 + 112) + 24))(v42); if ( (_BYTE)v33 ) { v34 = (*(int (__stdcall **)(int))(**(_DWORD **)(v32 + 112) + 28))(v32 + 8); v35 = *(_DWORD *)v55; v49 = *(_DWORD *)(v6 + 2) + v34; if ( (unsigned int)v49 <= *(_DWORD *)(v35 + 106) ) { v37 = *(_DWORD *)(v6 + 2); v55 = v51[2]; sub_5229B0(v4, a4, v32, v49, v55, v37 * v57, v37 * (unsigned __int64)v57 >> 32, v56 * v37, v58 * v37); v43 = &off_6A86A4; v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Invalid unlot item", v33); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Invalid cell", 0); } if ( !sub_486DA0((void **)&v51) ) { v36 = *(_DWORD *)(v6 + 2) * (unsigned __int64)v57; sub_5224A0( (void *)v54, v4, a4, v6, v36, SHIDWORD(v36), v56 * *(_DWORD *)(v6 + 2), v58 * *(_DWORD *)(v6 + 2)); v43 = &off_6A86A4; v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; goto LABEL_64; } } } v31 = *(_DWORD *)(v6 + 2) * (unsigned __int64)v57; sub_5224A0( (void *)(v4 + 36484), v4, a4, v6, v31, SHIDWORD(v31), v56 * *(_DWORD *)(v6 + 2), v58 * *(_DWORD *)(v6 + 2)); v43 = &off_6A86A4; v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; } else { sub_5224A0((void *)(v4 + 36484), v4, a4, v6, v57, 0, v56, v58); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Try to Too expencive item", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 526); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Try to Too expencive item", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 524); v63 = -1; v39 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ"; } LABEL_64: --dword_750CB8; return sub_467660((int)&unk_D020420, v39); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1324485C: using guessed type __int16 word_1324485C; // 13244860: using guessed type int dword_13244860; // 14D20890: using guessed type int dword_14D20890; //----- (00523940) -------------------------------------------------------- int __stdcall sub_523940(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 4, 513); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2884))(v2, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00523A80) -------------------------------------------------------- int __stdcall sub_523A80(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 4, 513); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2884))(v2, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00523BC0) -------------------------------------------------------- int __stdcall sub_523BC0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 4, *(_WORD *)(a1 + 8)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00523CC0) -------------------------------------------------------- int __stdcall sub_523CC0(int a1, int a2) { void *v2; // eax@1 int v3; // eax@3 int v4; // eax@4 int v5; // esi@4 int v6; // eax@7 int v7; // ST04_4@8 __time32_t v8; // eax@8 __time32_t v9; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 29888; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)(a1 + 10); *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(a1 + 14); *(_DWORD *)((char *)v2 + 10) = 0; if ( sub_4C81E0(&off_849C18, 14) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYALLSUC_ACK : Packet Too Long", 14); } v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v5 = v4; if ( v4 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 768))(v4) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5) == *(_DWORD *)(a1 + 4) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v5, *(_WORD *)(a1 + 8), 0) ) { v7 = *(_WORD *)(a1 + 8); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYALLSUC_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 4, 513); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 2884))(v5, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00523E60) -------------------------------------------------------- int __stdcall sub_523E60(int a1, int a2) { void *v2; // eax@1 int v3; // eax@3 int v4; // eax@4 int v5; // esi@4 int v6; // eax@7 int v7; // ST04_4@8 __time32_t v8; // eax@8 __time32_t v9; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 29888; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)(a1 + 10); *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(a1 + 14); *(_DWORD *)((char *)v2 + 10) = 0; if ( sub_4C81E0(&off_849C18, 14) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYLOTSUC_ACK : Packet Too Long", 14); } v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v5 = v4; if ( v4 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 768))(v4) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5) == *(_DWORD *)(a1 + 4) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v5, *(_WORD *)(a1 + 8), 0) ) { v7 = *(_WORD *)(a1 + 8); v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYLOTSUC_ACK : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 4, 513); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 2884))(v5, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00524000) -------------------------------------------------------- int __stdcall sub_524000(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 int v8; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYCAPSULE_REQ"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BUYCAPSULE_REQ"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 12) == 513 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 10), 0) ) { v5 = *(_WORD *)(a1 + 10); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2884))(v2, 1); } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 10)); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 4, *(_WORD *)(a1 + 12)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BUYCAPSULE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00524160) -------------------------------------------------------- int __thiscall sub_524160(void *this, int a2, __int16 a3, int a4, int a5) { void *v5; // edi@1 int (__thiscall *v6)(_DWORD, _DWORD); // edx@1 int v7; // eax@1 int v8; // edx@1 int v9; // eax@2 int (__thiscall *v10)(_DWORD); // eax@4 void *v11; // edi@7 int v12; // eax@9 int v13; // eax@11 void *v14; // ebx@13 int v15; // eax@13 int *v16; // eax@13 int (__thiscall *v17)(_DWORD, _DWORD); // edx@13 int v18; // eax@13 char *v19; // eax@16 int v20; // eax@16 int v21; // eax@17 int v22; // eax@18 int v23; // eax@19 unsigned int v24; // eax@20 void *v25; // edi@21 char *v26; // eax@22 int v27; // eax@22 int v28; // eax@23 const char *v29; // eax@24 int v30; // esi@25 int v31; // eax@25 int v32; // eax@28 int v33; // eax@28 int v34; // edi@28 void *v35; // eax@31 int v36; // eax@31 int i; // edi@37 int v38; // ecx@38 void *v39; // eax@38 int v40; // eax@38 int v41; // esi@38 unsigned int v42; // eax@39 void *v43; // edi@41 int *v44; // eax@41 int v45; // esi@41 int v46; // ecx@41 int v47; // eax@41 int v48; // eax@41 int v49; // eax@41 int v50; // edx@41 int v51; // esi@43 __int16 v52; // ax@44 __int16 v53; // si@44 int v54; // eax@44 int v55; // edi@44 int v56; // edx@44 int v57; // eax@44 int (__thiscall *v58)(_DWORD); // edx@44 int v59; // eax@44 int (__stdcall *v60)(_DWORD); // edx@45 int v61; // eax@45 int v62; // edx@46 int v63; // eax@47 unsigned int v64; // esi@47 __int16 v65; // ax@47 int *v66; // eax@47 int v67; // ecx@48 int v68; // edi@48 int v69; // eax@48 int v70; // eax@48 int v71; // edx@48 bool v72; // zf@48 int v73; // edx@52 int v74; // ecx@52 int v75; // esi@52 int v76; // edi@52 int v77; // eax@52 int v78; // eax@53 int v79; // esi@53 int v80; // eax@55 int v81; // ebx@56 int (__stdcall *v82)(_DWORD); // edx@56 int v83; // esi@56 int v84; // eax@56 void (__thiscall *v85)(_DWORD); // edx@56 int v86; // eax@56 int v87; // edx@56 int v88; // eax@56 int v90; // [sp-20h] [bp-1F8h]@31 int v91; // [sp-1Ch] [bp-1F4h]@31 int v92; // [sp-18h] [bp-1F0h]@31 int v93; // [sp-14h] [bp-1ECh]@31 int v94; // [sp-10h] [bp-1E8h]@31 int v95; // [sp-Ch] [bp-1E4h]@31 int v96; // [sp-8h] [bp-1E0h]@31 unsigned int v97; // [sp-4h] [bp-1DCh]@1 int v98; // [sp+0h] [bp-1D8h]@56 int v99; // [sp+4h] [bp-1D4h]@56 int v100; // [sp+Ch] [bp-1CCh]@1 int *v101; // [sp+10h] [bp-1C8h]@4 int v102; // [sp+14h] [bp-1C4h]@4 int v103; // [sp+18h] [bp-1C0h]@4 int *v104; // [sp+1Ch] [bp-1BCh]@44 int v105; // [sp+20h] [bp-1B8h]@44 int v106; // [sp+24h] [bp-1B4h]@44 int v107; // [sp+28h] [bp-1B0h]@34 int v108; // [sp+2Ch] [bp-1ACh]@31 int (**v109)(); // [sp+30h] [bp-1A8h]@1 void *v110; // [sp+34h] [bp-1A4h]@1 int v111; // [sp+3Ch] [bp-19Ch]@4 int v112; // [sp+40h] [bp-198h]@1 int v113; // [sp+44h] [bp-194h]@1 int *v114; // [sp+48h] [bp-190h]@35 int v115; // [sp+4Ch] [bp-18Ch]@34 int *v116; // [sp+50h] [bp-188h]@9 unsigned int v117; // [sp+54h] [bp-184h]@20 int v118; // [sp+58h] [bp-180h]@47 int v119; // [sp+5Ch] [bp-17Ch]@48 __int16 v120; // [sp+60h] [bp-178h]@47 __int16 v121; // [sp+C4h] [bp-114h]@47 char v122; // [sp+C6h] [bp-112h]@47 int v123; // [sp+C8h] [bp-110h]@13 int v124; // [sp+CCh] [bp-10Ch]@44 int v125; // [sp+D0h] [bp-108h]@13 int v126; // [sp+D6h] [bp-102h]@28 char v127; // [sp+136h] [bp-A2h]@44 int v128; // [sp+138h] [bp-A0h]@22 int v129; // [sp+13Ch] [bp-9Ch]@28 int v130; // [sp+140h] [bp-98h]@22 char v131; // [sp+1A6h] [bp-32h]@28 char v132; // [sp+1A8h] [bp-30h]@41 int (**v133)(); // [sp+1B4h] [bp-24h]@44 unsigned int v134; // [sp+1C8h] [bp-10h]@1 int v135; // [sp+1D4h] [bp-4h]@1 int v136; // [sp+1D8h] [bp+0h]@1 v134 = (unsigned int)&v136 ^ __security_cookie; v97 = (unsigned int)&v136 ^ __security_cookie; v5 = this; v112 = a2; v113 = a5; v100 = (int)"ItemInventory::ii_ItemMoneyBuyAll"; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_ItemMoneyBuyAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_ItemMoneyBuyAll"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1176); v135 = 0; v7 = v6(a2, v97); v109 = &off_6A86A4; v110 = v5; v8 = *(_DWORD *)v5; if ( v7 ) v9 = (*(int (__thiscall **)(void *, int))(v8 + 4))(v5, v7); else v9 = (*(int (__thiscall **)(void *))(v8 + 8))(v5); v111 = v9; v109 = (int (**)())&off_6A86B4; v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v135) = 1; v101 = (int *)&v109; v102 = v10(a2); v103 = 9; if ( !sub_486D40(&v101) ) { v97 = 522; LABEL_6: (*(void (__thiscall **)(int, signed int, signed int, unsigned int))(*(_DWORD *)a2 + 776))(a2, 12, 4, v97); --dword_750CB8; v135 = -1; goto LABEL_58; } v11 = sub_63ACA0(dword_1508B168, *(_WORD *)v113); if ( !v11 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 12, 4, 515); --dword_750CB8; v135 = -1; goto LABEL_58; } v12 = sub_418CB0((int)&dword_14D20890, *(_WORD *)v113); v116 = (int *)v12; if ( !v12 || (v13 = *(_DWORD *)(v12 + 4)) == 0 || v13 == -137 ) { v97 = 515; goto LABEL_6; } v14 = off_849C18; *(_WORD *)off_849C18 = 13488; *((_WORD *)v14 + 1) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v14 + 4) = *(_WORD *)(a2 + 4); *((_WORD *)v14 + 5) = *(_WORD *)(a2 + 84502); *((_DWORD *)v14 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 840))(a2); *((_DWORD *)v14 + 4) = -1; *((_DWORD *)v14 + 5) = -1; v15 = v113; *((_WORD *)v14 + 12) = -1; *(_DWORD *)((char *)v14 + 26) = 0; *(_DWORD *)((char *)v14 + 30) = a4 * *(_DWORD *)(v15 + 2); *((_WORD *)v14 + 17) = 0; (*(void (__thiscall **)(void *, _DWORD, int *, _DWORD))(*(_DWORD *)v11 + 20))(v11, *(_WORD *)v15, &v123, "-o"); v16 = sub_4934A0(&dword_D61E064, (const char *)(v116[1] + 137)); v17 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 112); v116 = v16; v18 = v17(v11, &v125); if ( v116 && v18 ) sub_4928F0(v18, (int)v116); v97 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v19 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v123, *(_WORD *)v113, 1, *((_DWORD *)v19 + 4), v97); v20 = *(_DWORD *)(v113 + 2); LOWORD(v125) = *(_WORD *)v113; (*(void (__thiscall **)(void *, int *, int))(*(_DWORD *)v11 + 32))(v11, &v125, v20); ++*((_BYTE *)v14 + 35); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v11 + 40))(v11) == 29 ) { v21 = sub_44F210((int)&dword_AA0A90, v125); if ( v21 ) { v22 = *(_DWORD *)(v21 + 4); if ( v22 ) { (*(void (__thiscall **)(void *, int *, _DWORD, _UNKNOWN *, unsigned int))(*(_DWORD *)v11 + 176))( v11, &v125, *(_WORD *)(v22 + 34), &unk_AA0BCC, ((unsigned int)dword_AA0BC8 >> 19) & 0x3F); v23 = sub_49BDE0((int)&unk_D65CF10, v125); v116 = (int *)v23; if ( v23 ) { v24 = (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v23 + 1)); v117 = v24; if ( (_WORD)v24 != -1 ) { v25 = sub_63ACA0(dword_1508B168, v24); if ( v25 ) { v97 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v26 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v128, v117, 1, *((_DWORD *)v26 + 4), v97); LOWORD(v130) = v117; (*(void (__thiscall **)(void *, unsigned int, int *, _DWORD))(*(_DWORD *)v25 + 20))( v25, v117, &v128, "-o"); v27 = sub_418CB0((int)&dword_14D20890, v117); if ( !v27 || (v28 = *(_DWORD *)(v27 + 4)) == 0 || (v29 = (const char *)(v28 + 137)) == 0 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 12, 4, 515); --dword_750CB8; goto LABEL_57; } v30 = (int)sub_4934A0(&dword_D61E064, v29); v31 = (*(int (__thiscall **)(void *, int *))(*(_DWORD *)v25 + 112))(v25, &v130); if ( v30 && v31 ) sub_4928F0(v31, v30); (*(void (__thiscall **)(void *, int *, _DWORD))(*(_DWORD *)v25 + 32))(v25, &v130, *((_BYTE *)v116 + 33)); *(int *)((char *)&v125 + 2) = v128; v126 = v129; v32 = 113 * *((_BYTE *)v14 + 35); *(_DWORD *)((char *)v14 + v32 + 36) = v128; *(_DWORD *)((char *)v14 + v32 + 40) = v129; *(_WORD *)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 44) = v130; *(_WORD *)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 46) = *(_WORD *)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 46) & 0x3FF | 0x2800; v33 = (int)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 46); *(_WORD *)v33 &= 0xFC00u; v34 = (int)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 48); memcpy((void *)v34, (char *)&v130 + 2, 0x64u); *(_BYTE *)(v34 + 100) = v131; ++*((_BYTE *)v14 + 35); goto LABEL_44; } } } } } LABEL_33: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 776))(a2, 12, 4, 515); --dword_750CB8; goto LABEL_57; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v11 + 40))(v11) == 15 ) { v97 = 0; v96 = (unsigned __int16)v125; v95 = (int)"ItemID"; v108 = (int)&v90; sub_418AC0((char *)&v90, "Container"); LOBYTE(v135) = 2; v35 = sub_5CF620(&unk_D64C6B8); LOBYTE(v135) = 1; v36 = sub_644B70(v35, v90, v91, v92, v93, v94, (const char *)v95, v96, v97); v116 = (int *)v36; if ( v36 ) { BYTE2(v125) = 0; v97 = *(_WORD *)(v36 + 41) - *(_WORD *)(v36 + 39) + 1; v107 = *(_WORD *)(v36 + 39) + (unsigned __int16)sub_427920(&unk_14D42DC0, v97); v115 = 0; if ( v107 > 0 ) { v114 = (int *)((char *)&v125 + 3); while ( 2 ) { if ( v115 > 8 ) { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_ItemMoneyBuyAll : Too many content", 0); } else { v117 = sub_639500((int)&unk_1508B108, 0xF4240u); for ( i = 0; ; ++i ) { v38 = *((_WORD *)v116 + 2); v97 = i; v96 = v38; v95 = (int)"Index"; v108 = (int)&v90; sub_418AC0((char *)&v90, "Content"); LOBYTE(v135) = 3; v39 = sub_5CF620(&unk_D64C6B8); LOBYTE(v135) = 1; v40 = sub_644B70(v39, v90, v91, v92, v93, v94, (const char *)v95, v96, v97); v41 = v40; if ( !v40 ) { v51 = (int)v116; sub_639150( &unk_86DDD8, (int)"ItemInventory::ii_ItemMoneyBuyAll : Content Null", *((_WORD *)v116 + 2), i); sub_639150( &unk_86DDD8, (int)"ItemInventory::ii_ItemMoneyBuyAll : Content Null2", *(_WORD *)(v51 + 4), i); goto LABEL_44; } v42 = *(_DWORD *)(v40 + 43); if ( v117 <= v42 ) break; v117 -= v42; } v97 = *(_WORD *)v41; v43 = sub_63ACA0(dword_1508B168, v97); LOWORD(v130) = *(_WORD *)v41; (*(void (__thiscall **)(void *, int, int *, _DWORD))(*(_DWORD *)v43 + 20))(v43, v130, &v128, "-o"); v97 = *(_WORD *)(v41 + 39); sprintf(&v132, "-L%d", v97); (*(void (__thiscall **)(void *, int, int *, char *))(*(_DWORD *)v43 + 20))(v43, v130, &v128, &v132); v97 = *(_BYTE *)(v41 + 42) - *(_BYTE *)(v41 + 41) + 1; v97 = *(_BYTE *)(v41 + 41) + (unsigned __int16)sub_427920(&unk_14D42DC0, v97); sprintf(&v132, "-U%d", v97); (*(void (__thiscall **)(void *, int, int *, char *))(*(_DWORD *)v43 + 20))(v43, v130, &v128, &v132); v97 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v96 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); sub_63D0E0(&v128, v130, 6, v96, v97); sub_4942D0((int)&v128); v44 = v114; v45 = v128; v46 = v129; *v114 = v128; v44[1] = v46; v114 += 2; BYTE2(v125) ^= (BYTE2(v125) ^ (BYTE2(v125) + 1)) & 0xF; v47 = 113 * *((_BYTE *)v14 + 35); *(_DWORD *)((char *)v14 + v47 + 36) = v45; *(_DWORD *)((char *)v14 + v47 + 40) = v129; *(_WORD *)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 44) = v130; *(_WORD *)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 46) = *(_WORD *)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 46) & 0x3FF | 0x2800; v48 = (int)((char *)v14 + 113 * *((_BYTE *)v14 + 35) + 46); *(_WORD *)v48 &= 0xFC00u; v49 = v115; v50 = 113 * *((_BYTE *)v14 + 35); memcpy((char *)v14 + v50 + 48, (char *)&v130 + 2, 0x64u); *((_BYTE *)v14 + v50 + 148) = v131; ++*((_BYTE *)v14 + 35); v115 = v49 + 1; if ( v49 + 1 < v107 ) continue; } break; } } goto LABEL_44; } sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_ItemMoneyBuyAll : Null Container", (unsigned __int16)v125); goto LABEL_33; } LABEL_44: *((_DWORD *)v14 + 9) = v123; *((_DWORD *)v14 + 10) = v124; *((_WORD *)v14 + 22) = v125; v52 = *((_WORD *)v14 + 23) & 0x3FF | 0x2400; *((_WORD *)v14 + 23) = v52; v53 = v52 ^ (v52 ^ *((_WORD *)v101 + 4)) & 0x3FF; v54 = *((_BYTE *)v14 + 35); *((_WORD *)v14 + 23) = v53; v108 = (int)((char *)v14 + 46); memcpy((char *)v14 + 48, (char *)&v125 + 2, 0x64u); *((_BYTE *)v14 + 148) = v127; v55 = v112; v56 = *(_DWORD *)v112; v107 = (int)((char *)v14 + 113 * v54 + 36); v57 = (*(int (__thiscall **)(int))(v56 + 1176))(v112); sub_43BB70((int)&v133, v55 + 36484, a3, v57); v58 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v55 + 2004); LOBYTE(v135) = 4; v105 = v58(v55); v59 = a4 * *(_DWORD *)(v113 + 2); v104 = (int *)&v133; v106 = 9; v114 = (int *)v59; if ( sub_486D40(&v104) != 1 ) goto LABEL_53; while ( 1 ) { v60 = (int (__stdcall *)(_DWORD))**(_DWORD **)v104[1]; v97 = v104[2]; v61 = v60(v97); v116 = (int *)v61; if ( v61 ) { v62 = *(_DWORD *)(v61 + 112); v115 = v62; if ( v62 ) break; } LABEL_49: if ( sub_486DA0((void **)&v104) != 1 ) goto LABEL_53; } memcpy(&v118, (const void *)v61, 0x6Cu); v121 = *(_WORD *)(v61 + 108); v122 = *(_BYTE *)(v61 + 110); v63 = *(_DWORD *)v62; v97 = (unsigned int)&v120; v64 = (*(int (__thiscall **)(int, __int16 *))(v63 + 28))(v62, &v120); v65 = v117 & 0x3FF | 0x2400; LOWORD(v117) = v65; LOWORD(v117) = (v65 ^ *((_WORD *)v104 + 4)) & 0x3FF ^ v65; v66 = v114; if ( (unsigned int)v114 >= v64 ) { v67 = v107; v68 = v112; v69 = 5 * *((_BYTE *)v14 + 34); *(_DWORD *)(v107 + 10 * *((_BYTE *)v14 + 34)) = v118; *(_DWORD *)(v67 + 2 * v69 + 4) = v119; *(_WORD *)(v67 + 10 * (*((_BYTE *)v14 + 34))++ + 8) = v120; v115 = (*(int (__thiscall **)(int))(*(_DWORD *)v68 + 2004))(v68); v70 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v68 + 2004))(v68) + 4); v71 = *(_DWORD *)v115; v97 = (unsigned int)&v117; v96 = (int)&v117; v95 = (int)v116; v94 = v70; (*(void (__stdcall **)(int, int *, unsigned int *, unsigned int *))(v71 + 48))(v70, v116, &v117, &v117); v72 = v114 == (int *)v64; v114 = (int *)((char *)v114 - v64); v55 = v112; if ( v72 ) goto LABEL_53; goto LABEL_49; } v73 = v119; *((_DWORD *)v14 + 4) = v118; *((_WORD *)v14 + 12) = a3; v74 = v115; *((_DWORD *)v14 + 5) = v73; *(_DWORD *)((char *)v14 + 26) = v66; (*(void (__stdcall **)(__int16 *, unsigned int))(*(_DWORD *)v74 + 32))(&v120, v64 - (_DWORD)v66); v75 = v112; v76 = (*(int (__thiscall **)(int))(*(_DWORD *)v112 + 2004))(v112); v77 = (*(int (__thiscall **)(int))(*(_DWORD *)v75 + 2004))(v75); (*(void (__thiscall **)(int, _DWORD, int *, int *, unsigned int *, unsigned int *))(*(_DWORD *)v76 + 64))( v76, *(_WORD *)(v77 + 4), v116, &v118, &v117, &v117); v55 = v75; LABEL_53: v78 = *((_BYTE *)v14 + 34); v79 = 113 * *((_BYTE *)v14 + 35) + 10 * v78 + 36; v97 = 113 * *((_BYTE *)v14 + 35) + 10 * v78 + 36; LOBYTE(v135) = 1; v133 = &off_6A86A4; if ( sub_4C81E0(&off_849C18, v97) ) { v80 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v80); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_ItemMoneyBuyAll : Packet Too Long", v79); } v81 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v55 + 2004))(v55, v98, v99); v82 = (int (__stdcall *)(_DWORD))**(_DWORD **)v101[1]; v99 = v101[2]; v83 = v82(v99); v84 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v55 + 2004))(v55) + 4); v85 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v81 + 64); v99 = v108; v98 = v108; v97 = (unsigned int)&v123; v96 = v83; v95 = v84; v85(v81); v86 = (*(int (__thiscall **)(int))(*(_DWORD *)v55 + 2004))(v55); ++*(_WORD *)(v86 + 4); v87 = *(_DWORD *)v55; v94 = *(_WORD *)(v55 + 84502); v93 = v124; v88 = (*(int (__thiscall **)(int, int, int, int))(v87 + 1056))(v55, v123, v124, v94); sub_5C93F0(v88, v95, v96, v97); (*(void (__thiscall **)(int))(*(_DWORD *)v55 + 2880))(v55); sub_55F670(v55, 1); --dword_750CB8; LABEL_57: v135 = -1; LABEL_58: v109 = &off_6A86A4; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_ItemMoneyBuyAll"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00524DC0) -------------------------------------------------------- #error "525232: call analysis failed (funcsize=333)" //----- (00525280) -------------------------------------------------------- int __thiscall sub_525280(int this, int a2, __int16 a3, int a4) { int v4; // esi@1 int v6; // ebx@5 void *v7; // edi@8 void *v8; // eax@10 int v9; // edx@10 int v10; // eax@12 int v11; // ecx@13 int v12; // eax@17 unsigned int v13; // eax@21 int (__thiscall *v14)(_DWORD); // edx@23 int v15; // eax@23 unsigned int v16; // edi@26 int v17; // eax@27 int v18; // ecx@29 int (*v19)(void); // eax@34 int (__thiscall *v20)(_DWORD); // edx@35 int v21; // eax@35 int v22; // eax@36 int v23; // edi@36 char v24; // [sp+10h] [bp-58h]@23 int (**v25)(); // [sp+24h] [bp-44h]@35 char v26; // [sp+38h] [bp-30h]@11 char *v27; // [sp+3Ch] [bp-2Ch]@12 int v28; // [sp+40h] [bp-28h]@12 int v29; // [sp+44h] [bp-24h]@23 int *v30; // [sp+48h] [bp-20h]@35 int v31; // [sp+4Ch] [bp-1Ch]@35 int v32; // [sp+50h] [bp-18h]@35 void *v33; // [sp+54h] [bp-14h]@10 int v34; // [sp+58h] [bp-10h]@23 int v35; // [sp+64h] [bp-4h]@11 int v36; // [sp+70h] [bp+8h]@17 v4 = this; if ( sub_55F660(this) != 1 ) { if ( a3 == -1 || !a4 || (v6 = a2) == 0 || *(_WORD *)a2 == -1 || !*(_DWORD *)(a2 + 2) || (v7 = sub_63ACA0(dword_1508B168, a3), (*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 40))(v7) == 29) || (*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 40))(v7) == 15 ) return (*(int (__cdecl **)(signed int))(*(_DWORD *)v4 + 776))(12); v8 = sub_63ACA0(dword_1508B168, *(_WORD *)a2); v9 = *(_DWORD *)v8; v33 = v8; if ( (*(int (__thiscall **)(void *))(v9 + 40))(v8) == 13 ) { sub_43BAC0((int)&v26, v4 + 36484, v4 + 160312); v35 = 0; if ( sub_43BBB0(&v26) ) { do { v10 = (**(int (__stdcall ***)(_DWORD))v27)(v28); if ( !v10 ) break; v11 = *(_DWORD *)(v10 + 112); if ( !v11 || (*(int (**)(void))(*(_DWORD *)v11 + 40))() == 13 ) return (*(int (__cdecl **)(signed int))(*(_DWORD *)v4 + 776))(12); } while ( sub_63F7F0(&v26) ); } v35 = -1; } v12 = sub_418CB0((int)&dword_14D20890, *(_WORD *)a2); v36 = v12; if ( !v12 ) return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v4 + 776))(12); if ( *(_DWORD *)v12 && *(_DWORD *)(v12 + 4) && *(_DWORD *)(v12 + 36) ) { v13 = *(_DWORD *)(*(_DWORD *)v12 + 106); if ( *(_DWORD *)(v6 + 2) > v13 ) *(_DWORD *)(v6 + 2) = v13; v34 = v4 + 36484; sub_43BB70((int)&v24, v4 + 36484, a3, v4 + 160312); v14 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v35 = 1; v15 = v14(v4); v27 = &v24; v28 = v15; v29 = 9; if ( sub_486D40(&v27) ) { v16 = 0; do { v17 = (***((int (__stdcall ****)(_DWORD))v27 + 1))(*((_DWORD *)v27 + 2)); if ( v17 ) { v18 = *(_DWORD *)(v17 + 112); if ( v18 ) { v16 += (*(int (__stdcall **)(int))(*(_DWORD *)v18 + 28))(v17 + 8); if ( v16 >= *(_DWORD *)(v6 + 2) * (unsigned int)*(_WORD *)(*(_DWORD *)(v36 + 36) + 64) ) break; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 516); sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBuyItemMoney : Invalid attrcls", 0); } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 516); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBuyItemMoney : Invalid cell", 0); } } while ( sub_486DA0((void **)&v27) == 1 ); if ( v16 >= *(_DWORD *)(v6 + 2) * (unsigned int)*(_WORD *)(*(_DWORD *)(v36 + 36) + 64) ) { v19 = *(int (**)(void))(*(_DWORD *)v33 + 24); v35 = -1; if ( (unsigned __int8)v19() == 1 ) { sub_43BB70((int)&v25, v34, *(_WORD *)v6, v4 + 160312); v20 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); v35 = 2; v21 = v20(v4); v30 = (int *)&v25; v31 = v21; v32 = 9; if ( sub_486D40(&v30) == 1 ) { do { v22 = (**(int (__stdcall ***)(_DWORD))v30[1])(v30[2]); v23 = v22; if ( v22 ) { if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v22 + 112) + 24))() ) { if ( (unsigned int)(*(_DWORD *)(v6 + 2) + (*(int (__stdcall **)(int))(**(_DWORD **)(v23 + 112) + 28))(v23 + 8)) <= *(_DWORD *)(*(_DWORD *)v36 + 106) ) return sub_524DC0(v4, a3, a4, v6, v23, v30[2]); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBuyItemMoney : Invalid unlot item", 0); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBuyItemMoney : Invalid cell", 0); } } while ( sub_486DA0((void **)&v30) ); } v35 = -1; v25 = &off_6A86A4; } return sub_524160((void *)v34, v4, a3, a4, v6); } } return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v4 + 776))(12); } } return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v4 + 776))(12); } // 524DC0: using guessed type _DWORD __stdcall sub_524DC0(_DWORD, __int16, _DWORD, _DWORD, _DWORD, _DWORD); // 6A86A4: using guessed type int (*off_6A86A4)(); // 14D20890: using guessed type int dword_14D20890; //----- (005256B0) -------------------------------------------------------- int __thiscall sub_5256B0(int this, int a2, int a3) { int v3; // esi@1 int v4; // edx@1 int v5; // ST14_4@2 int v6; // eax@2 int v7; // edi@2 int result; // eax@4 int v9; // eax@5 __int64 v10; // qax@5 int v11; // eax@8 int v12; // edi@8 void *v13; // eax@11 int v14; // edx@11 int v15; // eax@13 int v16; // ecx@14 unsigned int v17; // eax@21 void *v18; // edi@23 int (__thiscall *v19)(_DWORD); // edx@23 int v20; // eax@23 int v21; // edi@25 int v22; // eax@27 int v23; // eax@29 signed int v24; // [sp-Ch] [bp-7Ch]@20 signed int v25; // [sp-8h] [bp-78h]@20 char v26; // [sp+Ch] [bp-64h]@23 int (**v27)(); // [sp+20h] [bp-50h]@12 int v28; // [sp+24h] [bp-4Ch]@13 int v29; // [sp+28h] [bp-48h]@13 void *v30; // [sp+30h] [bp-40h]@11 int v31; // [sp+34h] [bp-3Ch]@8 char *v32; // [sp+38h] [bp-38h]@23 int v33; // [sp+3Ch] [bp-34h]@23 int v34; // [sp+40h] [bp-30h]@23 int v35; // [sp+44h] [bp-2Ch]@2 char v36; // [sp+48h] [bp-28h]@5 int v37; // [sp+58h] [bp-18h]@5 unsigned int v38; // [sp+60h] [bp-10h]@1 int v39; // [sp+6Ch] [bp-4h]@12 int v40; // [sp+70h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)this; if ( *(_WORD *)(this + 84376) == -1 ) goto LABEL_35; v5 = (*(int (__cdecl **)(unsigned int))(v4 + 2096))((unsigned int)&v40 ^ __security_cookie); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2072))(v3); v7 = sub_4744E0(&dword_D41F888, v6, v5); v35 = v7; if ( !v7 || *(_DWORD *)(v7 + 4200) != (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2072))(v3) ) { v4 = *(_DWORD *)v3; this = v3; LABEL_35: v25 = 582; v24 = 12; goto LABEL_36; } result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1520))(v3); if ( !(_BYTE)result ) return result; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)v9 + 100))(v9, &v36); v10 = sub_473B20(v7); if ( (unsigned int)(a2 * *(_DWORD *)(a3 + 2)) > (unsigned __int64)(v37 + v10) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemBuyGuildToken : Try to Too expencive item", 0); return (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 4, 523); } result = sub_418CB0((int)&dword_14D20890, *(_WORD *)a3); if ( result ) { v11 = sub_418CB0((int)&dword_14D20890, *(_WORD *)a3); v12 = v11; v31 = v11; if ( v11 && *(_DWORD *)v11 && *(_DWORD *)(v11 + 4) ) { v13 = sub_63ACA0(dword_1508B168, *(_WORD *)a3); v14 = *(_DWORD *)v13; v30 = v13; if ( (*(int (__thiscall **)(void *))(v14 + 40))(v13) == 13 ) { sub_43BAC0((int)&v27, v35, v3 + 160312); v39 = 0; if ( sub_43BBB0(&v27) ) { while ( 1 ) { v15 = (**(int (__stdcall ***)(_DWORD))v28)(v29); if ( !v15 ) goto LABEL_17; v16 = *(_DWORD *)(v15 + 112); if ( !v16 ) break; if ( (*(int (**)(void))(*(_DWORD *)v16 + 40))() == 13 ) break; if ( !sub_63F7F0(&v27) ) goto LABEL_17; } v4 = *(_DWORD *)v3; v25 = 525; v24 = 4; this = v3; goto LABEL_36; } LABEL_17: v39 = -1; v27 = &off_6A86A4; } if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)v30 + 24))() ) return sub_522CA0((void *)v35, v3, *(_WORD *)(v3 + 4), a3, a2); v17 = *(_DWORD *)(*(_DWORD *)v12 + 106); if ( *(_DWORD *)(a3 + 2) > v17 ) *(_DWORD *)(a3 + 2) = v17; v18 = (void *)v35; sub_43BB70((int)&v26, v35, *(_WORD *)a3, v3 + 160312); v19 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); v39 = 1; v20 = v19(v3); v32 = &v26; v33 = v20; v34 = 9; if ( !sub_486D40(&v32) ) return sub_522CA0(v18, v3, *(_WORD *)(v3 + 4), a3, a2); while ( 1 ) { v21 = (***((int (__stdcall ****)(_DWORD))v32 + 1))(*((_DWORD *)v32 + 2)); if ( v21 != 0 ) { v22 = (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v21 + 112) + 24))(); if ( (_BYTE)v22 ) { v23 = *(_DWORD *)(a3 + 2) + (*(int (__stdcall **)(int))(**(_DWORD **)(v21 + 112) + 28))(v21 + 8); if ( (unsigned int)v23 <= *(_DWORD *)(*(_DWORD *)v31 + 106) ) return sub_523020(v3, *(_WORD *)(v3 + 4), v21, v23, *((_DWORD *)v32 + 2), a2); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Invalid unlot item", v22); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ : Invalid cell", 0); } if ( !sub_486DA0((void **)&v32) ) return sub_522CA0((void *)v35, v3, *(_WORD *)(v3 + 4), a3, a2); } } v4 = *(_DWORD *)v3; v25 = 515; v24 = 4; this = v3; LABEL_36: result = (*(int (__thiscall **)(int, signed int, signed int, signed int))(v4 + 776))(this, 12, v24, v25); } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 86FEB8: using guessed type int __security_cookie; // D41F888: using guessed type int dword_D41F888; // 14D20890: using guessed type int dword_14D20890; //----- (00525A10) -------------------------------------------------------- FILE *__stdcall sub_525A10(int a1) { return sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK", 0); } //----- (00525A30) -------------------------------------------------------- int __thiscall sub_525A30(void *this, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v6; // ebx@1 void *v7; // eax@1 int v8; // eax@8 int v9; // eax@9 int v10; // eax@10 void *v11; // esi@17 char *v12; // edx@17 int v13; // eax@17 int v14; // eax@17 int v15; // ST0C_4@17 int v16; // eax@17 int v17; // esi@17 int v18; // eax@19 int v19; // eax@20 int v20; // eax@21 signed int v22; // [sp+14h] [bp-10h]@11 int v23; // [sp+14h] [bp-10h]@17 void *v24; // [sp+34h] [bp+10h]@1 char *v25; // [sp+34h] [bp+10h]@17 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; dword_750AB8[dword_750CB8++] = -1; v6 = a4; v7 = sub_63ACA0(dword_1508B168, *(_WORD *)(a4 + 8)); v24 = v7; if ( !v7 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); goto LABEL_3; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 40))(v7) == 29 ) { sub_49BF00(v5, v6, 0, 0, 0, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"); } if ( (*(int (**)(void))(*(_DWORD *)v24 + 40))() == 36 ) { if ( *(_WORD *)(v6 + 8) == -1 || (v8 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v6 + 8))) == 0 || (v9 = *(_DWORD *)v8) == 0 || (v10 = sub_4CE510(dword_1325CC60, (const char *)(v9 + 2))) == 0 || (v22 = sub_4CE460(dword_1325CC60, (const char *)v10), v22 == -1) || !__RTDynamicCast(v24, 0, &off_84BEB8, &off_84BEDC, 0) ) goto LABEL_3; *(_DWORD *)(v6 + 14) = v22; *(_DWORD *)(v6 + 10) = -1; sub_4CFAD0(v6, byte_6A492E); *(_BYTE *)(v6 + 35) = 0; } if ( sub_49B270(v5, v6, 0, 0) ) { LABEL_3: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"); } if ( *(_DWORD *)((char *)v5 + 122) ) { v11 = off_849C18; v12 = (char *)off_849C18 + 48; *((_WORD *)off_849C18 + 1) = *((_WORD *)v5 + 2); v25 = v12; *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *(_WORD *)v11 = 13313; *((_WORD *)v11 + 4) = *((_WORD *)v5 + 29346); *(_DWORD *)((char *)v11 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); v13 = *(_DWORD *)((char *)v5 + 122); *(_DWORD *)((char *)v11 + 14) = *(_DWORD *)v13; *(_DWORD *)((char *)v11 + 18) = *(_DWORD *)(v13 + 4); *(_DWORD *)((char *)v11 + 22) = *(_DWORD *)(v13 + 8); v14 = *(_DWORD *)((char *)v5 + 102); *(_DWORD *)((char *)v11 + 26) = *(_DWORD *)v14; *(_DWORD *)((char *)v11 + 30) = *(_DWORD *)(v14 + 4); *((_WORD *)v11 + 17) = ((_WORD)a2 << 10) | a3 & 0x3FF; v23 = (int)((char *)v11 + 34); *((_WORD *)v11 + 22) = *(_WORD *)(v6 + 8); *((_DWORD *)v11 + 9) = *(_DWORD *)v6; *((_DWORD *)v11 + 10) = *(_DWORD *)(v6 + 4); *((_WORD *)v11 + 23) = (_WORD)v25 - (_WORD)v11 - 2; v15 = *(_WORD *)(v6 + 8); v16 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(v6 + 8)); v17 = sub_63D0C0((void *)v6, v16, v15, (int)v25) - (_DWORD)v25 + 48; if ( sub_4C81E0(&off_849C18, v17) ) { v18 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin : Packet Too Long", v17); } v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(char *, _DWORD, int, int, int, int))(*((_DWORD *)v5 + 14672) + 64))( (char *)v5 + 58688, *(_WORD *)(v19 + 4), a5, v6, v23, v23); if ( a2 == 8 ) { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(char *, _DWORD, int, int, signed int, _DWORD))(*((_DWORD *)v5 + 14672) + 80))( (char *)v5 + 58688, *(_WORD *)(v20 + 4), a3, a5, -1, 0); } ++*((_WORD *)v5 + 29346); --dword_750CB8; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::ShineInvenSearch::sp_CreateItemByAdmin : Invalid so_Field", *(_DWORD *)((char *)v5 + 122) != 0); --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"); } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BEB8: using guessed type int (__thiscall **off_84BEB8)(void *, char); // 84BEDC: using guessed type int (__thiscall **off_84BEDC)(void *, char); // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00525D70) -------------------------------------------------------- int __thiscall sub_525D70(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00525E20) -------------------------------------------------------- int __stdcall sub_525E20(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATESUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATESUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATESUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATESUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00525F30) -------------------------------------------------------- int __stdcall sub_525F30(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 844))(v2, a1 + 2); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ADMINCREATEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00526030) -------------------------------------------------------- char __thiscall sub_526030(void *this, __int16 a2, int a3, int a4) { void *v4; // edi@1 void *v5; // esi@1 char v6; // al@1 int v7; // eax@3 int v8; // eax@4 int v9; // eax@5 int v10; // eax@7 int v12; // [sp+28h] [bp+8h]@1 int v13; // [sp+28h] [bp+8h]@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemA"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemA"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v5 + 1) = a2; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v5 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *((_BYTE *)v5 + 10) = 0; *(_DWORD *)((char *)v5 + 25) = *(_DWORD *)a3; *(_DWORD *)((char *)v5 + 29) = *(_DWORD *)(a3 + 4); v6 = *((_BYTE *)v5 + 10) ^ (*((_BYTE *)v5 + 10) ^ (*((_BYTE *)v5 + 10) + 1)) & 0x7F; *((_BYTE *)v5 + 10) = v6; v12 = 8 * (v6 & 0x7F) + 25; if ( sub_4C81E0(&off_849C18, v12) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v12); } v8 = a4; if ( (*(_WORD *)a4 & 0xFC00) == 8192 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v9 + 84))( v9, *((_WORD *)v5 + 4), *(_WORD *)a4 & 0x3FF, a3); v8 = a4; } v13 = (int)((char *)v4 + 58688); (*(void (__stdcall **)(_DWORD, int, int, int))(*((_DWORD *)v4 + 14672) + 48))(*((_WORD *)v5 + 4), a3, v8, v8); if ( (*(_WORD *)a4 & 0xFC00) == 8192 ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, signed int, _DWORD))(*(_DWORD *)v10 + 80))( v10, *((_WORD *)v5 + 4), *(_WORD *)a4 & 0x3FF, a3, -1, 0); } ++*(_WORD *)(v13 + 4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemA"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00526230) -------------------------------------------------------- char __thiscall sub_526230(void *this, __int16 a2, __int16 a3, int a4, int a5) { void *v5; // edi@1 int (__thiscall *v6)(_DWORD); // eax@1 int v7; // eax@1 __int16 v8; // si@1 int v9; // eax@2 char result; // al@2 int v11; // [sp+0h] [bp-38h]@0 int v12; // [sp+4h] [bp-34h]@0 int v13; // [sp+8h] [bp-30h]@0 int (**v14)(); // [sp+Ch] [bp-2Ch]@1 int v15; // [sp+10h] [bp-28h]@1 int v16; // [sp+14h] [bp-24h]@2 int v17; // [sp+18h] [bp-20h]@1 __int16 v18; // [sp+1Ch] [bp-1Ch]@1 int *v19; // [sp+20h] [bp-18h]@1 int v20; // [sp+24h] [bp-14h]@1 int v21; // [sp+28h] [bp-10h]@1 int v22; // [sp+34h] [bp-4h]@1 v5 = this; v14 = &off_6A86A4; v15 = a4; v17 = (*(int (**)(void))(*(_DWORD *)a4 + 8))(); v14 = (int (**)())&off_6A86BC; v18 = a3; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004); v22 = 0; v7 = v6(v5); v8 = a5; v19 = (int *)&v14; v20 = v7; v21 = a5; if ( sub_486D40(&v19) ) { v9 = (**(int (__stdcall ***)(int, int, int, int, int (**)(), int, int, int, _DWORD, int *, int, int))v19[1])( v19[2], v11, v12, v13, v14, v15, v16, v17, *(_DWORD *)&v18, v19, v20, v21); a3 = (((v8 << 10) | a3 & 0x3FF) ^ *((_WORD *)v19 + 4)) & 0x3FF ^ ((v8 << 10) | a3 & 0x3FF); result = sub_526030(v5, a2, v9, (int)&a3); } else { result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); //----- (00526320) -------------------------------------------------------- char __thiscall sub_526320(void *this, __int16 a2, __int16 a3, int a4, int a5) { unsigned int v5; // ST10_4@1 void *v6; // edi@1 int (__stdcall *v7)(_DWORD); // edx@1 int (__thiscall *v8)(_DWORD); // eax@1 int v10; // ebx@3 int v11; // eax@4 void *v12; // ebx@11 int v13; // eax@13 int v14; // esi@13 int v15; // eax@14 int v16; // eax@15 void (__thiscall *v17)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@15 int v18; // eax@15 bool v19; // zf@15 int v20; // esi@17 int v21; // eax@19 void (__thiscall *v22)(_DWORD, _DWORD, _DWORD); // edx@19 int v23; // esi@21 int v24; // esi@22 int v25; // esi@22 void *v26; // edi@22 int v27; // eax@22 char v28; // al@22 int v29; // edx@22 int v30; // ecx@22 __int16 v31; // ax@22 int v32; // eax@22 int v33; // eax@26 int (**v34)(); // [sp+10h] [bp-B8h]@1 char *v35; // [sp+14h] [bp-B4h]@1 int v36; // [sp+1Ch] [bp-ACh]@1 __int16 v37; // [sp+20h] [bp-A8h]@1 void *v38; // [sp+24h] [bp-A4h]@1 int v39; // [sp+28h] [bp-A0h]@1 int *v40; // [sp+2Ch] [bp-9Ch]@1 int v41; // [sp+30h] [bp-98h]@1 int v42; // [sp+34h] [bp-94h]@1 int v43; // [sp+38h] [bp-90h]@12 int v44; // [sp+3Ch] [bp-8Ch]@14 int v45; // [sp+40h] [bp-88h]@13 int v46; // [sp+44h] [bp-84h]@12 int v47; // [sp+48h] [bp-80h]@22 int v48; // [sp+4Ch] [bp-7Ch]@22 __int16 v49; // [sp+50h] [bp-78h]@22 __int16 v50; // [sp+B4h] [bp-14h]@22 char v51; // [sp+B6h] [bp-12h]@22 unsigned int v52; // [sp+B8h] [bp-10h]@1 int v53; // [sp+C4h] [bp-4h]@1 int v54; // [sp+C8h] [bp+0h]@1 v52 = (unsigned int)&v54 ^ __security_cookie; v5 = (unsigned int)&v54 ^ __security_cookie; v6 = this; v38 = this; v39 = a5; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemB"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemB"; dword_750AB8[dword_750CB8++] = -1; v34 = &off_6A86A4; v35 = (char *)v6 + 36484; v7 = *(int (__stdcall **)(_DWORD))(*((_DWORD *)v6 + 9121) + 8); v53 = 0; v36 = v7(v5); v34 = (int (**)())&off_6A86BC; v37 = a3; v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004); LOBYTE(v53) = 1; v40 = (int *)&v34; v41 = v8(v6); v42 = 9; if ( !sub_486D40(&v40) ) { --dword_750CB8; v34 = &off_6A86A4; v53 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemB"); return 0; } v10 = 0; do { v11 = (**(int (__stdcall ***)(_DWORD))v40[1])(v40[2]); if ( !v11 ) break; v10 += (*(int (__stdcall **)(int))(**(_DWORD **)(v11 + 112) + 28))(v11 + 8); } while ( sub_486DA0((void **)&v40) ); if ( a4 <= 0 ) { a4 = v10; } else { if ( a4 > v10 ) { sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItem : Try to delete too many lot", a4, v10); LABEL_9: --dword_750CB8; v34 = &off_6A86A4; v53 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemB"); return 0; } } v12 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v12 + 1) = a2; *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 836))(v6); *((_WORD *)v12 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2004))(v6) + 4); *((_BYTE *)v12 + 10) = 0; if ( !sub_486D40(&v40) ) goto LABEL_9; LOWORD(v46) = v46 & 0x3FF | 0x2400; v43 = 0; while ( 1 ) { v13 = (**(int (__stdcall ***)(_DWORD))v40[1])(v40[2]); v14 = v13; v45 = v13; if ( !v13 ) { LABEL_17: v20 = v43; goto LABEL_18; } v15 = (*(int (__stdcall **)(int))(**(_DWORD **)(v13 + 112) + 28))(v13 + 8); LOWORD(v46) = (v46 ^ *((_WORD *)v40 + 4)) & 0x3FF ^ v46; v44 = v15; if ( v15 > a4 ) break; v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2004))(v6); v17 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*((_DWORD *)v6 + 14672) + 48); v45 = *(_WORD *)(v16 + 4); v17((char *)v6 + 58688, v45, v14, &v46, &v46); v18 = *((_BYTE *)v12 + 10) & 0x7F; *(_DWORD *)((char *)v12 + 8 * v18 + 25) = *(_DWORD *)v14; *(_DWORD *)((char *)v12 + 8 * v18 + 29) = *(_DWORD *)(v14 + 4); v19 = a4 == v44; a4 -= v44; *((_BYTE *)v12 + 10) ^= (*((_BYTE *)v12 + 10) ^ (*((_BYTE *)v12 + 10) + 1)) & 0x7F; if ( v19 || !sub_486DA0((void **)&v40) ) goto LABEL_17; } memcpy(&v47, (const void *)v14, 0x6Cu); v24 = v14 + 108; v50 = *(_WORD *)v24; v51 = *(_BYTE *)(v24 + 2); v25 = v45; (*(void (__stdcall **)(__int16 *, int))(**(_DWORD **)(v45 + 112) + 32))(&v49, v15 - a4); v26 = v38; v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v38 + 2004))(v38); (*(void (__thiscall **)(char *, _DWORD, int, int *, int *, int *))(*((_DWORD *)v26 + 14672) + 64))( (char *)v26 + 58688, *(_WORD *)(v27 + 4), v25, &v47, &v46, &v46); v28 = *((_BYTE *)v12 + 10); *((_BYTE *)v12 + 10) = v28 | 0x80; *(_DWORD *)((char *)v12 + 13) = v47; v29 = (int)((char *)v12 + 8 * (v28 & 0x7F) + 25); v30 = v48; *(_WORD *)((char *)v12 + 21) = (_WORD)v12 + 8 * (v28 & 0x7F) + 25 - (_WORD)v12 - 2; v31 = v49; *(_DWORD *)((char *)v12 + 17) = v30; LOWORD(v30) = v46; *(_WORD *)((char *)v12 + 11) = v31; *(_WORD *)((char *)v12 + 23) = v30; v32 = (*(int (__stdcall **)(__int16 *, int))(**(_DWORD **)(v25 + 112) + 4))(&v49, v29); v6 = v38; v20 = v32; LABEL_18: if ( v39 ) { v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v22 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v6 + 14672) + 108); v44 = *(_WORD *)(v21 + 4); v22((char *)v6 + 58688, v44, v39); } if ( v20 ) v23 = v20 - (_DWORD)v12; else v23 = 8 * (*((_BYTE *)v12 + 10) & 0x7F) + 25; if ( sub_4C81E0(&off_849C18, v23) ) { v33 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v33); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v23); } ++*((_WORD *)v6 + 29346); --dword_750CB8; v34 = &off_6A86A4; v53 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemB"); return 1; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (005267B0) -------------------------------------------------------- int __stdcall sub_5267B0(int a1, int a2) { int v2; // esi@1 void *v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5BD190(v3, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00526890) -------------------------------------------------------- int __thiscall sub_526890(void *this, __int16 a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // edx@1 int v5; // eax@2 int result; // eax@6 int v7; // eax@7 int (**v8)(); // [sp+Ch] [bp-24h]@1 char *v9; // [sp+10h] [bp-20h]@1 int v10; // [sp+14h] [bp-1Ch]@4 int v11; // [sp+18h] [bp-18h]@4 __int16 v12; // [sp+1Ch] [bp-14h]@4 int v13; // [sp+20h] [bp-10h]@1 int v14; // [sp+2Ch] [bp-4h]@1 v2 = this; v13 = (int)"ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v8 = &off_6A86A4; v9 = (char *)v2 + 36484; v4 = *((_DWORD *)v2 + 9121); v14 = 0; if ( v2 == (void *)-160312 ) v5 = (*(int (**)(void))(v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(v4 + 4))((char *)v2 + 160312); v11 = v5; v8 = (int (**)())&off_6A86BC; v12 = a2; LOBYTE(v14) = 1; v10 = 0; if ( (unsigned __int8)off_6A86BC(&v8) || sub_63F7F0(&v8) ) { do { v7 = (**(int (__stdcall ***)(_DWORD))v9)(v10); if ( !v7 ) break; v3 += (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 28))(v7 + 8); } while ( sub_63F7F0(&v8) ); --dword_750CB8; v8 = &off_6A86A4; v14 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); result = v3; } else { --dword_750CB8; v8 = &off_6A86A4; v14 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00526A00) -------------------------------------------------------- int __thiscall sub_526A00(void *this, unsigned __int16 a2, int a3) { unsigned int v3; // ST14_4@1 int v4; // ebx@1 void *v5; // edi@1 int v6; // ST10_4@1 char *v7; // eax@1 int v8; // esi@1 __int16 v9; // ax@3 char v11; // [sp+Ch] [bp-98h]@3 int v12; // [sp+18h] [bp-8Ch]@1 int v13; // [sp+1Ch] [bp-88h]@1 int v14; // [sp+20h] [bp-84h]@1 char v15; // [sp+24h] [bp-80h]@1 unsigned __int16 v16; // [sp+2Ch] [bp-78h]@1 unsigned int v17; // [sp+94h] [bp-10h]@1 int v18; // [sp+A0h] [bp-4h]@1 int v19; // [sp+A4h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v3 = (unsigned int)&v19 ^ __security_cookie; v4 = (int)this; v13 = a3; v12 = (int)"ShineObjectClass::ShinePlayer::sp_QuestItemGet"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_QuestItemGet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_QuestItemGet"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v5 = sub_63ACA0(dword_1508B168, a2); v6 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v7 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v15, a2, 2, *((_DWORD *)v7 + 4), v6); v16 = a2; (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD, unsigned int))(*(_DWORD *)v5 + 20))(v5, a2, &v15, "-o", v3); (*(void (__thiscall **)(void *, unsigned __int16 *, signed int))(*(_DWORD *)v5 + 32))(v5, &v16, 1); v8 = sub_54DF90(&unk_13253630, (int)&v14, 1); if ( v8 != 0 ) { sub_4C0A40((int)&v11); sub_4C0A80((int)&v11, v4); v9 = (*(int (__thiscall **)(int, int, int, char *, signed int, char *, signed int))(*(_DWORD *)v8 + 1348))( v8, v14, v13, &v15, 1, &v11, 1); if ( v9 != 769 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_QuestItemGet : Drop mark fail", v9 == 769); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"DropItemGroupScope::ElementItemIdent::eii_dropitem : itembuf full", 0); --dword_750CB8; } v18 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_QuestItemGet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00526BC0) -------------------------------------------------------- int __stdcall sub_526BC0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMREBUILD_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMREBUILD_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { if ( *(_WORD *)(a1 + 10) == 11072 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))(v3, v2, *(_WORD *)(a1 + 8), 0); } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 40))(v4, *(_WORD *)(a1 + 8)); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMREBUILD_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00526CC0) -------------------------------------------------------- int __stdcall sub_526CC0(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 __int16 v4; // ax@3 void *v5; // eax@6 int v6; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMINFO_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMINFO_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)v2 ) { v4 = *(_WORD *)(a1 + 10); if ( *(_WORD *)(a1 + 8) == 11008 ) { if ( (v4 & 0xFC00) == 50176 && (v4 & 0x3FF) == 7 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 3080))(v3, v2); } else { if ( (v4 & 0xFC00) != 50176 || (v4 & 0x3FF) != 7 ) { (*(void (__thiscall **)(int, unsigned int, int, _DWORD))(*(_DWORD *)v3 + 776))( v3, (unsigned int)*(_WORD *)(a1 + 10) >> 10, *(_WORD *)(a1 + 10) & 0x3FF, *(_WORD *)(a1 + 8)); } else { v5 = off_849C18; *(_WORD *)off_849C18 = -15353; *((_WORD *)v5 + 1) = *(_WORD *)(a1 + 8); if ( sub_4C81E0(&off_849C18, 108) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemCardOpen::uib_DirectUse : Packet Too Long", 108); } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMINFO_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00526E50) -------------------------------------------------------- int __thiscall sub_526E50(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edx@1 int v5; // eax@2 int (__thiscall *v6)(_DWORD); // eax@4 int v7; // eax@5 int (**v9)(); // [sp+Ch] [bp-2Ch]@1 char *v10; // [sp+10h] [bp-28h]@1 int v11; // [sp+18h] [bp-20h]@4 int *v12; // [sp+1Ch] [bp-1Ch]@4 int v13; // [sp+20h] [bp-18h]@4 int v14; // [sp+24h] [bp-14h]@4 int v15; // [sp+28h] [bp-10h]@1 int v16; // [sp+34h] [bp-4h]@1 v3 = this; v15 = (int)"ShineObjectClass::ShinePlayer::sp_MakeItem"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MakeItem"; dword_750AB8[dword_750CB8++] = -1; v9 = &off_6A86A4; v10 = (char *)v3 + 36484; v4 = *((_DWORD *)v3 + 9121); v16 = 0; if ( v3 == (void *)-160312 ) v5 = (*(int (**)(void))(v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(v4 + 4))((char *)v3 + 160312); v11 = v5; v9 = (int (**)())&off_6A86B4; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); LOBYTE(v16) = 1; v12 = (int *)&v9; v13 = v6(v3); v14 = 9; if ( sub_486D40(&v12) ) { v7 = (**(int (__stdcall ***)(_DWORD))v12[1])(v12[2]); sub_525A30(v3, 9, v12[2], a3, v7); } --dword_750CB8; v16 = -1; v9 = &off_6A86A4; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00526F70) -------------------------------------------------------- int __stdcall sub_526F70(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 int v8; // eax@7 int v9; // eax@8 int v10; // esi@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 10) == 2945 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); } v9 = sub_409730(v2); v10 = v9; if ( v9 && !sub_55E380(v9, 25) && !sub_55E380(v10, 28) && sub_55E370(v10) == 1 ) sub_5631C0(v10, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DESTROY_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005270F0) -------------------------------------------------------- char __thiscall sub_5270F0(void *this, int a2, char a3, __int16 a4, int a5) { void *v5; // ebx@1 int v6; // ST0C_4@1 char *v7; // eax@1 char result; // al@2 void *v9; // edi@4 char v10; // [sp+10h] [bp-80h]@1 __int16 v11; // [sp+18h] [bp-78h]@1 unsigned int v12; // [sp+80h] [bp-10h]@1 int v13; // [sp+8Ch] [bp-4h]@1 int v14; // [sp+90h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem 2"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MakeItem 2"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; v6 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v7 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v10, a4, a3, *((_DWORD *)v7 + 4), v6); v11 = a4; if ( sub_418CB0((int)&dword_14D20890, a4) && *(_DWORD *)sub_418CB0((int)&dword_14D20890, a4) ) { v9 = sub_63ACA0(dword_1508B168, a4); (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD))(*(_DWORD *)v9 + 20))(v9, (unsigned __int16)a4, &v10, "-o"); (*(void (__thiscall **)(void *, __int16 *, int))(*(_DWORD *)v9 + 32))(v9, &v11, a5); sub_526E50(v5, a2, (int)&v10); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem 2"); result = 1; } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem 2"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (00527250) -------------------------------------------------------- void *__thiscall sub_527250(void *this, int a2, __int16 a3, int a4, int a5, unsigned __int8 a6) { void *v6; // ebx@1 const void *v7; // eax@1 v6 = this; sub_4675D0((int)&unk_D020420, (int)"ItemDismantleProducer::ItemDismantleProducer"); dword_7508B8[dword_750CB8] = (int)"ItemDismantleProducer::ItemDismantleProducer"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); *((_DWORD *)v6 + 2148) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1176))(a2); *((_DWORD *)v6 + 3) = a4; *((_DWORD *)v6 + 1) = a5; *((_WORD *)v6 + 4) = a3; *((_DWORD *)v6 + 4) = 0; v7 = (const void *)(**(int (__stdcall ***)(_DWORD))a5)(a6); *((_DWORD *)v6 + 2118) = 0; *((_DWORD *)v6 + 2117) = v7; memcpy((char *)v6 + 8476, v7, 0x6Fu); *((_DWORD *)v6 + 2147) = a6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemDismantleProducer::ItemDismantleProducer"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00527360) -------------------------------------------------------- int __cdecl sub_527360() { sub_4675D0((int)&unk_D020420, (int)"ItemDismantleProducer::~ItemDismantleProducer"); dword_7508B8[dword_750CB8] = (int)"ItemDismantleProducer::~ItemDismantleProducer"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ItemDismantleProducer::~ItemDismantleProducer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005273A0) -------------------------------------------------------- signed int __thiscall sub_5273A0(void *this) { void *v1; // esi@1 __int16 v2; // cx@1 unsigned int v3; // eax@1 int v4; // ebx@2 int v5; // edx@4 int v6; // ecx@8 unsigned int v8; // eax@10 signed int v9; // ecx@10 int v10; // edi@10 int v11; // ebx@11 unsigned int v12; // edx@14 int v13; // eax@16 int v14; // ecx@16 int v15; // edx@16 int v16; // eax@17 int v17; // eax@19 int v18; // esi@20 int v19; // eax@22 int v20; // edx@23 int i; // ecx@23 int v22; // eax@29 int v23; // esi@29 int v24; // ecx@29 int v25; // ecx@32 int v26; // eax@32 int v27; // edx@32 int v28; // eax@33 int v29; // eax@35 int *v30; // edx@36 int v31; // ecx@36 int j; // eax@36 char v33; // al@41 bool v34; // zf@44 bool v35; // sf@44 int v36; // ST0C_4@47 char *v37; // eax@47 void *v38; // eax@47 void (__thiscall *v39)(_DWORD, _DWORD, _DWORD); // edx@47 int *v40; // ecx@47 int v41; // [sp-8h] [bp-184h]@8 unsigned int v42; // [sp-4h] [bp-180h]@1 int (**v43)(); // [sp+10h] [bp-16Ch]@16 int v44; // [sp+14h] [bp-168h]@16 int v45; // [sp+1Ch] [bp-160h]@19 __int16 v46; // [sp+20h] [bp-15Ch]@19 int (**v47)(); // [sp+24h] [bp-158h]@32 int v48; // [sp+28h] [bp-154h]@32 int v49; // [sp+30h] [bp-14Ch]@35 int *v50; // [sp+34h] [bp-148h]@35 int v51; // [sp+38h] [bp-144h]@35 int v52; // [sp+3Ch] [bp-140h]@35 int *v53; // [sp+40h] [bp-13Ch]@19 int v54; // [sp+44h] [bp-138h]@19 int v55; // [sp+48h] [bp-134h]@19 void *v56; // [sp+4Ch] [bp-130h]@1 unsigned int v57; // [sp+50h] [bp-12Ch]@10 int v58; // [sp+54h] [bp-128h]@29 unsigned int v59; // [sp+58h] [bp-124h]@10 int v60; // [sp+5Ch] [bp-120h]@16 int v61; // [sp+60h] [bp-11Ch]@10 unsigned int v62; // [sp+64h] [bp-118h]@16 char v63; // [sp+6Bh] [bp-111h]@14 int v64; // [sp+6Ch] [bp-110h]@10 char v65; // [sp+70h] [bp-10Ch]@10 unsigned int v66; // [sp+16Ch] [bp-10h]@1 int v67; // [sp+178h] [bp-4h]@1 int v68; // [sp+17Ch] [bp+0h]@1 v66 = (unsigned int)&v68 ^ __security_cookie; v42 = (unsigned int)&v68 ^ __security_cookie; v1 = this; v56 = this; sub_4675D0((int)&unk_D020420, (int)"ItemDismantleProducer::idp_WhereProductStore"); dword_7508B8[dword_750CB8] = (int)"ItemDismantleProducer::idp_WhereProductStore"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 4); v3 = *((_WORD *)v1 + 4); v67 = 0; if ( v3 >= dword_14D20894 || (v4 = dword_14D21184 + 40 * v3) == 0 || !*(_DWORD *)v4 ) goto LABEL_6; v5 = **(_WORD **)v4; if ( (_WORD)v5 != v2 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v3 + v5); LABEL_6: v4 = 0; } if ( !v4 ) { sub_639100(&unk_86DDD8, (int)"ItemDismantleProducer::idp_WhereProductStore : Invalid Item", *((_WORD *)v1 + 4)); --dword_750CB8; v67 = -1; v41 = (int)"ItemDismantleProducer::idp_WhereProductStore"; v6 = (int)&unk_D020420; goto LABEL_9; } v64 = -1; memset(&v65, 0, 0xFCu); v8 = *((_DWORD *)v1 + 3); v59 = *(_DWORD *)(*(_DWORD *)v4 + 106); v9 = 0; v10 = 0; v57 = v8; v61 = 0; if ( (signed int)v8 <= 0 ) goto LABEL_44; v11 = (int)((char *)v1 + 24); while ( 2 ) { if ( v9 >= 64 ) goto LABEL_44; v12 = v8 % v59; v63 = 0; if ( v8 / v59 ) v12 = v59; *(_WORD *)(v11 - 4) = v12; v13 = *((_DWORD *)v1 + 2148); v60 = *((_WORD *)v1 + 4); v14 = *((_DWORD *)v1 + 1); v62 = v12; v43 = &off_6A86A4; v44 = v14; v15 = *(_DWORD *)v14; if ( v13 ) v16 = (*(int (__stdcall **)(int))(v15 + 4))(v13); else v16 = (*(int (__cdecl **)(unsigned int))(v15 + 8))(v42); v45 = v16; v43 = (int (**)())&off_6A86BC; v46 = v60; v17 = *(_DWORD *)v1; LOBYTE(v67) = 1; v53 = (int *)&v43; v54 = v17; v55 = 9; if ( !sub_486D40(&v53) ) goto LABEL_31; while ( 1 ) { v18 = (**(int (__stdcall ***)(_DWORD))v53[1])(v53[2]); v60 = v18; if ( v18 != 0 ) break; sub_639100(&unk_86DDD8, (int)"ItemDismantleProducer::idp_WhereProductStore : Invalid cell", 0); LABEL_27: if ( !sub_486DA0((void **)&v53) ) goto LABEL_30; } v19 = (*(int (__stdcall **)(int))(**(_DWORD **)(v18 + 112) + 28))(v18 + 8); if ( v19 + v62 > v59 ) goto LABEL_27; v20 = v53[2]; for ( i = 0; i < v10; ++i ) { if ( *(&v64 + i) == v20 ) break; } if ( i != v10 ) goto LABEL_27; *(&v64 + v10) = v20; v22 = v62 + v19; *(_DWORD *)v11 = v18; v58 = v10 + 1; memcpy((void *)(v11 + 8), (const void *)v18, 0x6Cu); v23 = v18 + 108; v24 = v60; *(_WORD *)(v11 + 116) = *(_WORD *)v23; *(_BYTE *)(v11 + 118) = *(_BYTE *)(v23 + 2); *(_DWORD *)(v11 + 4) = *(_DWORD *)(v24 + 112); (*(void (__stdcall **)(int, int))(**(_DWORD **)(v24 + 112) + 32))(v11 + 16, v22); v10 = v58; *(_DWORD *)(v11 + 120) = v53[2]; *(_BYTE *)(v11 + 124) = 0; v63 = 1; LABEL_30: v1 = v56; LABEL_31: LOBYTE(v67) = 0; if ( v63 ) goto LABEL_51; v25 = *((_DWORD *)v1 + 1); v26 = *((_DWORD *)v1 + 2148); v47 = &off_6A86A4; v48 = v25; v27 = *(_DWORD *)v25; v28 = v26 ? (*(int (__stdcall **)(int))(v27 + 4))(v26) : (*(int (__cdecl **)(unsigned int))(v27 + 8))(v42); v49 = v28; v47 = (int (**)())&off_6A86B4; v29 = *(_DWORD *)v1; v50 = (int *)&v47; LOBYTE(v67) = 2; v51 = v29; v52 = 9; if ( sub_486D40(&v50) ) { while ( 1 ) { v30 = v50; v31 = v50[2]; for ( j = 0; j < v10; ++j ) { if ( *(&v64 + j) == v31 ) break; } if ( j == v10 ) break; if ( !sub_486DA0((void **)&v50) ) goto LABEL_41; } *(&v64 + v10++) = v31; *(_DWORD *)v11 = (**(int (__stdcall ***)(_DWORD))v30[1])(v30[2]); v36 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v37 = sub_5A7540(byte_14D16AE8); sub_63D0E0((void *)(v11 + 8), *((_WORD *)v1 + 4), 8, *((_DWORD *)v37 + 4), v36); *(_WORD *)(v11 + 16) = *((_WORD *)v1 + 4); v38 = sub_63ACA0(dword_1508B168, *((_WORD *)v1 + 4)); v39 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v38 + 32); v58 = (int)v38; v39(v38, v11 + 16, v62); v40 = v50; *(_DWORD *)(v11 + 4) = v58; *(_DWORD *)(v11 + 120) = v40[2]; *(_BYTE *)(v11 + 124) = 1; v33 = 1; } else { LABEL_41: v33 = v63; } LOBYTE(v67) = 0; v47 = &off_6A86A4; if ( v33 ) { LABEL_51: ++v61; v9 = v61; v11 += 132; v57 -= v62; if ( (signed int)v57 > 0 ) { v8 = v57; continue; } LABEL_44: *((_DWORD *)v1 + 4) = v9; --dword_750CB8; v34 = v9 == 0; v35 = v9 < 0; v67 = -1; v41 = (int)"ItemDismantleProducer::idp_WhereProductStore"; v6 = (int)&unk_D020420; if ( !(v35 | v34) ) { sub_467660((int)&unk_D020420, (int)"ItemDismantleProducer::idp_WhereProductStore"); return 5760; } LABEL_9: sub_467660(v6, v41); return 5771; } break; } --dword_750CB8; v67 = -1; sub_467660((int)&unk_D020420, (int)"ItemDismantleProducer::idp_WhereProductStore"); return 5772; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (005278B0) -------------------------------------------------------- __int16 __thiscall sub_5278B0(void *this) { return sub_5273A0(this); } //----- (005278D0) -------------------------------------------------------- __int16 __thiscall sub_5278D0(void *this, int a2, __int16 a3, int a4) { void *v4; // edi@1 int v5; // esi@1 int v6; // ebx@1 int v7; // edi@2 int v8; // esi@2 char v9; // al@3 int v10; // eax@4 int v11; // eax@4 int v12; // edx@4 int v13; // eax@4 int v14; // ecx@4 int v15; // eax@4 __int16 v16; // ax@5 __int16 v17; // ax@5 __int16 v18; // ax@9 __int16 v19; // ax@9 int v21; // [sp+14h] [bp-14h]@1 void *v22; // [sp+18h] [bp-10h]@1 v4 = this; v22 = this; sub_4675D0((int)&unk_D020420, (int)"ItemDismantleProducer::id_ProductExecute"); dword_7508B8[dword_750CB8] = (int)"ItemDismantleProducer::id_ProductExecute"; dword_750AB8[dword_750CB8++] = -1; v5 = a4; v6 = 43 * *((_DWORD *)v4 + 4) + a4 + 26; v21 = 0; if ( *((_DWORD *)v4 + 4) > 0 ) { v7 = (int)((char *)v4 + 40); v8 = a4 + 43; do { v9 = *(_BYTE *)(v7 + 108); *(_BYTE *)(v8 - 17) = v9; *(_WORD *)(v8 - 16) = *(_WORD *)v7; *(_WORD *)(v8 - 14) = *(_WORD *)(v7 - 20); if ( v9 ) { *(_DWORD *)(v8 - 12) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); v10 = *(_DWORD *)(a2 + 122); *(_DWORD *)(v8 - 8) = *(_DWORD *)v10; *(_DWORD *)(v8 - 4) = *(_DWORD *)(v10 + 4); *(_DWORD *)v8 = *(_DWORD *)(v10 + 8); v11 = *(_DWORD *)(a2 + 102); *(_DWORD *)(v8 + 4) = *(_DWORD *)v11; v12 = *(_DWORD *)(v11 + 4); LOWORD(v11) = *(_WORD *)(v8 + 12); *(_DWORD *)(v8 + 8) = v12; LOWORD(v11) = v11 & 0x3FF | 0x2400; *(_WORD *)(v8 + 12) = v11; *(_WORD *)(v8 + 12) = v11 ^ (v11 ^ *(_WORD *)(v7 + 104)) & 0x3FF; *(_DWORD *)(v8 + 14) = *(_DWORD *)(v7 - 8); *(_DWORD *)(v8 + 18) = *(_DWORD *)(v7 - 4); LOWORD(v12) = *(_WORD *)v7; *(_WORD *)(v8 + 24) = v6 - a3 - 2; *(_WORD *)(v8 + 22) = v12; v13 = (*(int (__stdcall **)(int, int))(**(_DWORD **)(v7 - 12) + 4))(v7, v6); v14 = *(_DWORD *)v22; v6 = v13; v15 = v8 + 12; } else { *(_DWORD *)(v8 - 12) = *(_DWORD *)(v7 - 8); v16 = *(_WORD *)(v8 - 2); *(_DWORD *)(v8 - 8) = *(_DWORD *)(v7 - 4); v17 = v16 & 0x3FF | 0x2400; *(_WORD *)(v8 - 2) = v17; *(_WORD *)(v8 - 2) = v17 ^ (v17 ^ *(_WORD *)(v7 + 104)) & 0x3FF; *(_WORD *)(v8 - 4) = v6 - a3 - 2; v6 = (*(int (__stdcall **)(int, int))(**(_DWORD **)(v7 - 12) + 4))(v7, v6); v14 = *(_DWORD *)v22; v15 = v8 - 2; } (*(void (__stdcall **)(_DWORD, _DWORD, int, int, int))(*(_DWORD *)v14 + 64))( *(_WORD *)(v14 + 4), *(_DWORD *)(v7 - 16), v7 - 8, v15, v15); v8 += 43; v7 += 132; ++v21; } while ( v21 < *((_DWORD *)v22 + 4) ); v5 = a4; v4 = v22; } if ( !*((_DWORD *)v4 + 2118) ) { *(_WORD *)(v5 + 11) = 1; *(_BYTE *)(v5 + 8) = 1; *(_WORD *)(v5 + 9) = *((_WORD *)v4 + 4242); *(_DWORD *)(v5 + 13) = *((_DWORD *)v4 + 2119); v18 = *(_WORD *)(v5 + 21); *(_DWORD *)(v5 + 17) = *((_DWORD *)v4 + 2120); v19 = v18 & 0x3FF | 0x2400; *(_WORD *)(v5 + 21) = v19; *(_WORD *)(v5 + 21) = v19 ^ (v19 ^ *((_WORD *)v4 + 4294)) & 0x3FF; (*(void (__stdcall **)(_DWORD, _DWORD, int, int))(**(_DWORD **)v4 + 48))( *(_WORD *)(*(_DWORD *)v4 + 4), *((_DWORD *)v4 + 2117), v5 + 21, v5 + 21); v5 = a4; } *(_BYTE *)(v5 + 25) = *((_BYTE *)v4 + 16); *(_WORD *)(v5 + 6) = (*(_WORD *)(*(_DWORD *)v4 + 4))++; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemDismantleProducer::id_ProductExecute"); return v6 - a3 - 2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00527B90) -------------------------------------------------------- int __userpurge sub_527B90(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { int v7; // esi@1 int v8; // eax@7 signed int v9; // eax@11 int v10; // eax@17 int v11; // edi@17 int v12; // ecx@18 unsigned __int8 v13; // al@22 unsigned __int16 *v14; // edi@26 int v15; // edi@30 int v16; // eax@31 unsigned __int8 v17; // al@36 int v18; // eax@38 unsigned int v19; // edi@39 int v20; // eax@41 unsigned int v21; // edi@42 unsigned int v22; // edi@45 unsigned int v23; // edi@48 unsigned int v24; // edi@51 int v25; // eax@56 void *v26; // edi@58 int v27; // esi@58 int v28; // eax@60 signed int v30; // [sp-14h] [bp-21CCh]@4 unsigned int v31; // [sp-10h] [bp-21C8h]@1 int v32; // [sp-8h] [bp-21C0h]@1 int v33; // [sp-4h] [bp-21BCh]@11 int v34; // [sp-4h] [bp-21BCh]@13 signed int v35; // [sp-4h] [bp-21BCh]@15 int v36; // [sp+4h] [bp-21B4h]@19 int v37; // [sp+8h] [bp-21B0h]@18 unsigned __int8 v38; // [sp+13h] [bp-21A5h]@20 char v39; // [sp+14h] [bp-21A4h]@56 unsigned int v40; // [sp+21A8h] [bp-10h]@1 int v41; // [sp+21B4h] [bp-4h]@1 int v42; // [sp+21B8h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v32 = a4; v31 = (unsigned int)&v42 ^ __security_cookie; v7 = a1; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"; dword_750AB8[dword_750CB8++] = -1; v41 = 0; if ( !(dword_13244868 & 1) ) { dword_13244868 |= 1u; word_13244864 = 70; atexit(nullsub_95); } if ( !((1 << **(_BYTE **)(v7 + 3828)) & (unsigned __int16)word_13244864) ) { v30 = 5761; LABEL_65: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int, int, int, int))(*(_DWORD *)v7 + 776))( v7, 12, 43, v30, v31, a3, v32, a2); v34 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"; goto LABEL_66; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v7 + 58688) + 16))(v7 + 58688) ) { v30 = 5768; goto LABEL_65; } v8 = *(_DWORD *)(v7 + 122); if ( !v8 || !*(_BYTE *)(*(_DWORD *)(v8 + 12) + 158) ) { v30 = 5764; goto LABEL_65; } if ( !sub_4C3BD0(v7 + 84508, v7) ) { v30 = 5762; goto LABEL_65; } v9 = (*(int (__thiscall **)(int, int, unsigned int, int, int, int))(*(_DWORD *)(v7 + 36484) + 4))( v7 + 36484, v7 + 160312, v31, a3, v32, a2); v33 = *(_BYTE *)(a5 + 2); if ( *(_BYTE *)(a5 + 2) >= v9 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ : wrong dismantle slot", v33); LABEL_13: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v7 + 776))(v7, 12, 43, 5766); v34 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"; LABEL_66: v41 = -1; goto LABEL_67; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v7 + 58688) + 12))(v7 + 58688, 9, v33) ) { v35 = 5768; LABEL_16: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v7 + 776))(v7, 12, 43, v35); v34 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"; goto LABEL_66; } v10 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v7 + 36484))(v7 + 36484, *(_BYTE *)(a5 + 2)); v11 = v10; if ( !v10 || (v12 = *(_DWORD *)(v10 + 112), (v37 = v12) == 0) ) goto LABEL_13; v36 = (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v12 + 40))("ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ") - 4; switch ( v36 ) { case 1: case 4: v38 = *(_BYTE *)(v11 + 10); break; case 2: v38 = *(_BYTE *)(v11 + 10); break; case 3: v13 = *(_BYTE *)(v11 + 10); goto LABEL_25; case 0: v38 = *(_BYTE *)(v11 + 18); break; case 34: v13 = *(_BYTE *)(v11 + 18); LABEL_25: v38 = v13; break; default: LABEL_62: v35 = 5769; goto LABEL_16; } v14 = (unsigned __int16 *)(v11 + 8); if ( (*(int (__stdcall **)(unsigned __int16 *))(*(_DWORD *)v37 + 28))(v14) != 1 ) { v35 = 5763; goto LABEL_16; } if ( !sub_418CB0((int)&dword_14D20890, *v14) || (v15 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *v14)) == 0 || (v16 = *(_DWORD *)(v15 + 102), v16 != 5) && v16 != 6 && v16 != 7 && v16 != 8 && v16 != 4 || (v17 = *(_BYTE *)(v15 + 240), v17 > 0xCu) ) { LABEL_29: v35 = 5766; goto LABEL_16; } if ( v17 < v38 ) { v35 = 5767; goto LABEL_16; } v18 = sub_626BC0((int)&unk_132668E0, v38); switch ( v36 ) { case 1: v19 = *(_DWORD *)(v15 + 131); if ( v19 < 1 || v19 > 5 ) goto LABEL_29; v20 = *(_DWORD *)(v18 + 4 * v19 + 58); break; case 2: v21 = *(_DWORD *)(v15 + 131); if ( v21 < 1 || v21 > 5 ) goto LABEL_29; v20 = *(_DWORD *)(v18 + 4 * v21 - 2); break; case 3: v22 = *(_DWORD *)(v15 + 131); if ( v22 < 1 || v22 > 5 ) goto LABEL_29; v20 = *(_DWORD *)(v18 + 4 * v22 + 38); break; case 4: v23 = *(_DWORD *)(v15 + 131); if ( v23 < 1 || v23 > 5 ) goto LABEL_29; v20 = *(_DWORD *)(v18 + 4 * v23 + 18); break; case 0: v24 = *(_DWORD *)(v15 + 131); if ( v24 < 1 || v24 > 5 ) goto LABEL_29; v20 = *(_DWORD *)(v18 + 4 * v24 + 78); break; default: goto LABEL_62; } if ( !v20 ) { v35 = 5770; goto LABEL_16; } sub_527250(&v39, v7, word_14D211C2, v20, v7 + 36484, *(_BYTE *)(a5 + 2)); LOBYTE(v41) = 1; v25 = (unsigned __int16)sub_5278B0(&v39); if ( (_WORD)v25 != 5760 ) { (*(void (__thiscall **)(int, signed int, signed int, int))(*(_DWORD *)v7 + 776))(v7, 12, 43, v25); LOBYTE(v41) = 0; sub_527360(); v34 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"; goto LABEL_66; } v26 = off_849C18; *(_WORD *)off_849C18 = 13430; *((_WORD *)v26 + 1) = *(_WORD *)(v7 + 4); *((_DWORD *)v26 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); v27 = (unsigned __int16)sub_5278D0(&v39, v7, (__int16)v26, (int)((char *)v26 + 2)) + 2; if ( sub_4C81E0(&off_849C18, v27) ) { v28 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v28); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", v27); } LOBYTE(v41) = 0; sub_527360(); v41 = -1; v34 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ"; LABEL_67: --dword_750CB8; return sub_467660((int)&unk_D020420, v34); } // 527B90: could not find valid save-restore pair for ebx // 527B90: could not find valid save-restore pair for edi // 527B90: could not find valid save-restore pair for esi // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244864: using guessed type __int16 word_13244864; // 13244868: using guessed type int dword_13244868; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D211C2: using guessed type __int16 word_14D211C2; //----- (005280C0) -------------------------------------------------------- int __stdcall sub_5280C0(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 int v4; // eax@6 int v5; // ST04_4@7 __time32_t v6; // eax@7 __time32_t v7; // eax@7 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DISMANTLE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DISMANTLE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { if ( *(_WORD *)(a1 + 10) == 5760 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_DISMANTLE_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 43, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DISMANTLE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00528220) -------------------------------------------------------- char __stdcall sub_528220(int a1) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_drpitm_CanLooting", 0); return 0; } //----- (00528240) -------------------------------------------------------- int __stdcall sub_528240(int a1, __int16 a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@3 int v6; // eax@6 sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_DropAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_DropAll"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *((_WORD *)off_849C18 + 1) = a2; *((_DWORD *)v4 + 1) = (*(int (**)(void))(*(_DWORD *)a1 + 836))(); *(_WORD *)v4 = 13334; *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)a4; *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(a4 + 4); *((_WORD *)v4 + 9) = *(_WORD *)a3; *((_WORD *)v4 + 4) = *(_WORD *)(a4 + 8); memcpy((char *)v4 + 20, (const void *)a4, 0x6Fu); if ( sub_4C81E0(&off_849C18, 131) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_DropAll : Packet Too Long", 131); } if ( (*(_WORD *)a3 & 0xFC00) == 8192 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1504))(a1, a4); *(_DWORD *)a4 = -1; *(_DWORD *)(a4 + 4) = -1; memset((void *)(a4 + 8), 0, 0x67u); *(_WORD *)(a4 + 8) = -1; *(_DWORD *)(a4 + 112) = dword_1508B168; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1540))(a1); v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 20))(v6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_DropAll"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005283F0) -------------------------------------------------------- int __stdcall sub_5283F0(int a1, __int16 a2, int a3, int a4) { int v4; // ST10_4@3 char *v5; // eax@3 int v6; // ecx@3 int v7; // esi@3 int v8; // eax@3 int v9; // edi@5 unsigned __int16 v10; // ax@5 int v11; // eax@7 void *v12; // esi@7 int (__thiscall *v13)(_DWORD); // edx@7 int v14; // eax@7 int v15; // ecx@7 int v16; // edx@7 int v17; // ST14_4@7 int v18; // ST10_4@7 int v19; // eax@7 int v20; // eax@7 int v21; // esi@7 int v22; // eax@9 int v23; // eax@10 unsigned int v25; // [sp-4h] [bp-B4h]@1 char v26; // [sp+Ch] [bp-A4h]@5 int v27; // [sp+18h] [bp-98h]@1 int v28; // [sp+1Ch] [bp-94h]@1 int v29; // [sp+20h] [bp-90h]@3 int v30; // [sp+24h] [bp-8Ch]@1 int v31; // [sp+28h] [bp-88h]@3 int v32; // [sp+2Ch] [bp-84h]@1 int v33; // [sp+30h] [bp-80h]@3 int v34; // [sp+34h] [bp-7Ch]@7 unsigned int v35; // [sp+38h] [bp-78h]@3 __int16 v36; // [sp+9Ch] [bp-14h]@3 char v37; // [sp+9Eh] [bp-12h]@3 unsigned int v38; // [sp+A0h] [bp-10h]@1 int v39; // [sp+ACh] [bp-4h]@1 int v40; // [sp+B0h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v25 = (unsigned int)&v40 ^ __security_cookie; v28 = a3; v32 = a1; v27 = (int)"ItemInventory::ii_DropLot"; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_DropLot"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_DropLot"; dword_750AB8[dword_750CB8++] = -1; v39 = 0; v30 = 0; if ( a4 ) v30 = (*(int (__stdcall **)(int))(**(_DWORD **)(a4 + 112) + 28))(a4 + 8); v4 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v5 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v33, v35, 4, *((_DWORD *)v5 + 4), v4); memcpy(&v33, (const void *)a4, 0x6Cu); v6 = *(_DWORD *)(a4 + 112); v36 = *(_WORD *)(a4 + 108); v37 = *(_BYTE *)(a4 + 110); v7 = v28; (*(void (__stdcall **)(unsigned int *, _DWORD, unsigned int))(*(_DWORD *)v6 + 32))(&v35, *(_DWORD *)(v28 + 2), v25); v8 = sub_54DF90(&unk_13253630, (int)&v29, 1); v31 = v8; if ( v8 != 0 ) { sub_4C0A40((int)&v26); v9 = v32; sub_4C0A80((int)&v26, v32); v10 = (*(int (__stdcall **)(int, int, int *, signed int, char *, _DWORD))(*(_DWORD *)v31 + 1348))( v29, v9, &v33, 1, &v26, 0); v31 = v10; if ( v10 == 769 ) { v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(a4 + 112) + 28))(a4 + 8); (*(void (__stdcall **)(int, int))(**(_DWORD **)(a4 + 112) + 32))(a4 + 8, v11 - *(_DWORD *)(v7 + 2)); (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v9 + 1540))(v9, v7, a4, v7); v12 = off_849C18; *((_WORD *)off_849C18 + 1) = a2; v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 836); v32 = (int)((char *)v12 + 38); *((_DWORD *)v12 + 1) = v13(v9); *(_WORD *)v12 = 13337; *((_WORD *)v12 + 4) = v35; *(_DWORD *)((char *)v12 + 10) = *(_DWORD *)a4; *(_DWORD *)((char *)v12 + 14) = *(_DWORD *)(a4 + 4); v14 = v32; *((_WORD *)v12 + 9) = v32 - (_WORD)v12 - 2; *(_DWORD *)((char *)v12 + 22) = v33; *(_DWORD *)((char *)v12 + 26) = v34; v15 = v28; *(_DWORD *)((char *)v12 + 30) = *(_DWORD *)(v28 + 2); v16 = v30; v17 = v14; *((_WORD *)v12 + 10) = *(_WORD *)v15; *(_DWORD *)((char *)v12 + 34) = v16; v18 = v35; v19 = (int)sub_63ACA0(dword_1508B168, v35); v20 = sub_63D0C0((void *)a4, v19, v18, v17); v21 = v20 - v32 + 38; if ( sub_4C81E0(&off_849C18, v21) ) { v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_DropLot : Packet Too Long", v21); } v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v23 + 20))(v23, 1); } else { sub_555DF0(&unk_13253630, v29, 0, 20); (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v9 + 776))( v9, 12, 8, (unsigned __int16)v31); } } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_DropAll : itemlist buffer full", v8 != 0); (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)v32 + 776))(12, 8, 772); } --dword_750CB8; v39 = -1; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_DropLot"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00528720) -------------------------------------------------------- int __thiscall sub_528720(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@5 int v6; // edx@10 int v7; // ecx@11 int (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // edx@13 int v9; // ebx@16 int v10; // eax@16 int v11; // ecx@19 int v12; // eax@25 int v13; // eax@32 __int16 v14; // ax@42 unsigned int v15; // ebx@42 int v16; // eax@45 int v17; // ebx@45 int v18; // eax@48 bool v19; // zf@49 void (__thiscall *v20)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@49 __int16 v21; // ax@52 unsigned __int16 v22; // ST0C_2@58 char v23; // al@58 signed int v25; // [sp-8h] [bp-34h]@31 signed int v26; // [sp-8h] [bp-34h]@62 signed int v27; // [sp-4h] [bp-30h]@9 int v28; // [sp-4h] [bp-30h]@12 signed int v29; // [sp-4h] [bp-30h]@14 int *v30; // [sp-4h] [bp-30h]@31 signed int v31; // [sp-4h] [bp-30h]@62 int v32; // [sp+14h] [bp-18h]@42 int v33; // [sp+18h] [bp-14h]@49 int v34; // [sp+1Ch] [bp-10h]@19 int v35; // [sp+28h] [bp-4h]@1 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; dword_750AB8[dword_750CB8++] = -1; v35 = 0; if ( !(dword_13244870 & 1) ) { dword_13244870 |= 1u; word_1324486C = 70; atexit(nullsub_96); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_1324486C) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 770); LABEL_65: v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; goto LABEL_66; } v5 = *(_DWORD *)(v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { v31 = 782; v26 = 8; goto LABEL_64; } if ( *(_WORD *)(v4 + 85728) & 0xC ) { v31 = 578; v26 = 12; LABEL_64: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, v26, v31); goto LABEL_65; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) { v8 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 12); a2 += 2; if ( (unsigned __int8)v8(v4 + 58688, (unsigned int)*(_WORD *)a2 >> 10, *(_WORD *)a2 & 0x3FF) == 1 ) { v29 = 770; LABEL_15: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, v29); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; goto LABEL_66; } v9 = a2; v10 = (unsigned int)*(_WORD *)a2 >> 10; switch ( v10 ) { case 8: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 54) == 2 ) { v29 = 782; goto LABEL_15; } v11 = v4 + 32816; v34 = v4 + 32816; goto LABEL_41; case 9: v6 = *(_DWORD *)v4; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 54) == 2 ) { v27 = 782; goto LABEL_11; } v7 = v4; if ( (unsigned int)dword_14D129E8 < *(_DWORD *)(v4 + 7644) ) { v27 = 770; goto LABEL_12; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v6 + 1156))(v4) == 6 ) { v12 = *(_WORD *)v9 & 0x3FF; if ( *(_WORD *)(v4 + 160760) == v12 || *(_WORD *)(v4 + 160762) == v12 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 783); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; goto LABEL_66; } } v11 = v4 + 36484; v34 = v4 + 36484; goto LABEL_41; case 3: v6 = *(_DWORD *)v4; v7 = v4; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 54) != 2 ) goto LABEL_30; v30 = &v34; v25 = 3; goto LABEL_32; case 13: v6 = *(_DWORD *)v4; v7 = v4; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 54) != 2 ) goto LABEL_30; v30 = &v34; v25 = 13; goto LABEL_32; case 14: v6 = *(_DWORD *)v4; v7 = v4; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 54) != 2 ) goto LABEL_30; v30 = &v34; v25 = 14; goto LABEL_32; case 16: v6 = *(_DWORD *)v4; v7 = v4; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 122) + 12) + 54) != 2 ) { LABEL_30: v27 = 782; goto LABEL_12; } v30 = &v34; v25 = 16; LABEL_32: v13 = (*(int (__thiscall **)(int, signed int, int *))(v6 + 80))(v7, v25, v30); if ( v13 != 4481 ) { v27 = v13; goto LABEL_10; } v11 = v34; LABEL_41: if ( !v11 ) goto LABEL_44; v14 = *(_WORD *)v9; v15 = *(_WORD *)v9; v32 = v14 & 0x3FF; if ( (signed int)(v15 >> 10) < (*(int (**)(void))(*(_DWORD *)v11 + 8))() ) { v16 = (**(int (__stdcall ***)(_DWORD))v34)(v15 & 0x3FF); v17 = v16; if ( v16 && *(_WORD *)(v16 + 8) != -1 ) { if ( !sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62ED80, v16) ) { v21 = *(_WORD *)a2 >> 10; if ( v21 != 9 && v21 != 3 && v21 != 13 && v21 != 14 && v21 != 16 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 781); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; goto LABEL_66; } v22 = *(_WORD *)a2; a2 = 781; v23 = sub_48D1D0(v4, v17, v22, (int)&a2); v6 = *(_DWORD *)v4; if ( !v23 ) { (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(v6 + 776))( v4, 12, 8, (unsigned __int16)a2); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; goto LABEL_66; } v27 = 769; goto LABEL_11; } v18 = (*(int (__stdcall **)(int))(**(_DWORD **)(v17 + 112) + 28))(v17 + 8); if ( (unsigned int)v18 <= *(_DWORD *)(a2 + 2) ) { v33 = 781; v19 = sub_48D040(v4, v17, a2, a2, (int)&v33) == 0; v20 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); if ( v19 ) { v20(v4, 12, 8, (unsigned __int16)v33); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; } else { v20(v4, 12, 8, 769); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; } goto LABEL_66; } } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ : wrong slot", v32); } LABEL_44: v27 = 771; goto LABEL_10; default: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ : Invalid inventory type", v10); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 771); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; goto LABEL_66; } } v27 = 770; LABEL_10: v6 = *(_DWORD *)v4; LABEL_11: v7 = v4; LABEL_12: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v6 + 776))(v7, 12, 8, v27); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; LABEL_66: --dword_750CB8; v35 = -1; return sub_467660((int)&unk_D020420, v28); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1324486C: using guessed type __int16 word_1324486C; // 13244870: using guessed type int dword_13244870; // 14D129E8: using guessed type int dword_14D129E8; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (00528BF0) -------------------------------------------------------- int __thiscall sub_528BF0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)(*(_DWORD *)((char *)v2 + 365) + 14) ^= (*(_BYTE *)(*(_DWORD *)((char *)v2 + 365) + 14) ^ 8 * (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1340))(v2, a2)) & 8; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00528CB0) -------------------------------------------------------- char __thiscall sub_528CB0(void *this, int a2) { int v2; // esi@1 unsigned int v3; // eax@1 int *v4; // edi@2 int v5; // edx@4 int v6; // eax@4 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(v2 + 377); if ( v3 >= dword_14D20894 || (v4 = (int *)(dword_14D21184 + 40 * v3)) == 0 || !*v4 ) goto LABEL_6; v5 = *(_WORD *)*v4; v6 = v5 + 10000 * v3; if ( (_WORD)v5 != *(_WORD *)(v2 + 377) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v6); LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"); return 0; } if ( !sub_4C0BC0(v2 + 492, a2, v4, v2) || *(_BYTE *)(v2 + 622) == 1 && !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 3616))(a2, *(_WORD *)*v4) ) goto LABEL_6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00528E00) -------------------------------------------------------- char __thiscall sub_528E00(void *this) { void *v1; // esi@1 bool v2; // al@1 char result; // al@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_4C0A70((char *)v1 + 492); --dword_750CB8; if ( v2 ) { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"); result = 1; } else { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00528EC0) -------------------------------------------------------- signed int __stdcall sub_528EC0(int a1, int a2, int a3, int a4, int a5, int a6) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ItemDrop"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ItemDrop"; dword_750AB8[dword_750CB8++] = -1; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_ItemDrop", 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ItemDrop"); return 771; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00528F70) -------------------------------------------------------- signed int __thiscall sub_528F70(void *this, __int16 a2, int a3, int a4, int a5, int a6, int a7) { int v7; // ebx@1 int v9; // eax@6 int v10; // edx@6 int v11; // eax@6 int v12; // ecx@6 int v13; // eax@6 int v14; // ecx@6 int v15; // edi@7 __int64 v16; // qax@7 int v17; // eax@7 int v18; // ecx@7 int v19; // eax@7 int v20; // eax@7 int v21; // ST04_4@7 int v22; // eax@7 int v23; // esi@7 void *v24; // esi@9 void *v25; // eax@9 int v26; // eax@9 int v27; // ebx@9 int v28; // eax@11 int v29; // [sp+14h] [bp-10h]@3 unsigned __int16 *v30; // [sp+30h] [bp+Ch]@7 int v31; // [sp+3Ch] [bp+18h]@7 v7 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_ItemDrop"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_ItemDrop"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a3 + 122) == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDropItem::so_ItemDrop : Dropper have no map", 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_ItemDrop"); return 773; } v29 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(a4 + 8)); if ( v29 == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDropItem::so_ItemDrop : No Item Data", 0); LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_ItemDrop"); return 773; } sub_52D340((void *)v7, 0); *(_DWORD *)(v7 + 492) = *(_DWORD *)a6; *(_DWORD *)(v7 + 496) = *(_DWORD *)(a6 + 4); *(_DWORD *)(v7 + 500) = *(_DWORD *)(a6 + 8); v9 = *(_DWORD *)(a3 + 122); *(_DWORD *)(v7 + 601) = *(_DWORD *)v9; *(_DWORD *)(v7 + 605) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v7 + 609) = *(_DWORD *)(v9 + 8); v10 = *(_DWORD *)(v7 + 102); *(_BYTE *)(v7 + 621) = 0; v11 = **(_DWORD **)(a3 + 102); *(_DWORD *)v10 = v11; v12 = *(_DWORD *)(v7 + 102); *(_DWORD *)(v7 + 613) = v11; v13 = *(_DWORD *)(*(_DWORD *)(a3 + 102) + 4); *(_DWORD *)(v12 + 4) = v13; *(_DWORD *)(v7 + 617) = v13; memcpy((void *)(v7 + 369), (const void *)a4, 0x6Fu); v14 = dword_14D129E8; *(_DWORD *)(v7 + 488) = a5; *(_DWORD *)(v7 + 480) = v14 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(v29 + 4) + 174)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_DWORD *)(v7 + 484) = v14 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(v29 + 4) + 170)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); if ( sub_465790((void *)v7, 0) ) goto LABEL_5; v15 = a3; v16 = sub_548D10(a3); sub_548CF0(v7, v16, SHIDWORD(v16)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v7 + 3608))(v7, a7); v17 = *(_DWORD *)(a3 + 118); v18 = *(_DWORD *)(v7 + 118); *(_DWORD *)v18 = *(_DWORD *)v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v19 = *(_DWORD *)(v7 + 102); *(_DWORD *)(v7 + 613) = *(_DWORD *)v19; *(_DWORD *)(v7 + 617) = *(_DWORD *)(v19 + 4); LOWORD(v18) = *(_WORD *)(a3 + 4); v30 = (unsigned __int16 *)(a4 + 8); v31 = *(_WORD *)(a4 + 8); **(_WORD **)(v7 + 365) = a2; *(_WORD *)(*(_DWORD *)(v7 + 365) + 2) = v31; v20 = *(_DWORD *)(v7 + 365); *(_DWORD *)(v20 + 4) = *(_DWORD *)(v7 + 613); *(_DWORD *)(v20 + 8) = *(_DWORD *)(v7 + 617); *(_WORD *)(*(_DWORD *)(v7 + 365) + 12) = v18; *(_BYTE *)(*(_DWORD *)(v7 + 365) + 14) &= 0xF8u; *(_BYTE *)(*(_DWORD *)(v7 + 365) + 14) &= 0xF7u; v21 = *(_DWORD *)(v7 + 102); v22 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v7, v22, v21, 0, 0, (int)sub_565CD0, 0, 0, 0, 0, 65535); v23 = *(_DWORD *)(v29 + 24); if ( v23 && *(_DWORD *)v23 == *v30 ) { v24 = off_849C18; *(_WORD *)off_849C18 = 1944; v25 = sub_63ACA0(dword_1508B168, *v30); *((_WORD *)v24 + 1) = *v30; *((_WORD *)v24 + 2) = (*(int (__thiscall **)(void *, unsigned __int16 *))(*(_DWORD *)v25 + 28))(v25, v30); *(_DWORD *)((char *)v24 + 6) = *(_DWORD *)a4; *(_DWORD *)((char *)v24 + 10) = *(_DWORD *)(a4 + 4); *((_WORD *)v24 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 836))(v15); v26 = *(_DWORD *)(v7 + 122); *((_DWORD *)v24 + 4) = *(_DWORD *)v26; *((_DWORD *)v24 + 5) = *(_DWORD *)(v26 + 4); *((_DWORD *)v24 + 6) = *(_DWORD *)(v26 + 8); v27 = *(_DWORD *)(v7 + 102); *((_DWORD *)v24 + 7) = *(_DWORD *)v27; *((_DWORD *)v24 + 8) = *(_DWORD *)(v27 + 4); if ( sub_4C81E0(&off_849C18, 36) ) { v28 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v28); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 36); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_ItemDrop"); return 769; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D148D0: using guessed type int dword_14D148D0; // 14D20890: using guessed type int dword_14D20890; //----- (00529350) -------------------------------------------------------- int __stdcall sub_529350(int a1, int a2) { int v2; // edi@1 __int16 v3; // ST14_2@1 int v4; // esi@1 int v5; // edi@4 unsigned __int16 v6; // ax@6 int v7; // edi@6 int v8; // eax@8 char v10; // [sp+10h] [bp-20h]@6 int v11; // [sp+1Ch] [bp-14h]@1 int v12; // [sp+20h] [bp-10h]@4 int v13; // [sp+2Ch] [bp-4h]@1 int v14; // [sp+38h] [bp+8h]@3 v11 = (int)"GameDBSession::gds_NC_ITEMDB_DROPALLSUC_ACK"; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPALLSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DROPALLSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = *(_WORD *)(a1 + 2); v13 = 0; v4 = sub_54DE90(&unk_13253630, v3); if ( v4 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 768))(v4) ) { v14 = a1 + 8; if ( sub_418CB0((int)&dword_14D20890, *(_WORD *)(v2 + 16)) ) { v5 = sub_54DF90(&unk_13253630, (int)&v12, 1); if ( v5 != 0 ) { sub_4C0A40((int)&v10); sub_4C0A80((int)&v10, v4); v6 = (*(int (__thiscall **)(int, int, int, int, _DWORD, char *, _DWORD))(*(_DWORD *)v5 + 1348))( v5, v12, v4, v14, 0, &v10, 0); v7 = v6; if ( v6 == 769 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 769); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 20))(v8, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 868))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 860))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 872))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1928))(v4); } else { sub_555DF0(&unk_13253630, v12, 0, 21); (*(void (__thiscall **)(int, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 12, 8, v7); } } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_DropAll : itemlist buffer full", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 772); } } } } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPALLSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00529540) -------------------------------------------------------- int __stdcall sub_529540(int a1, int a2) { int v2; // eax@1 int v3; // esi@1 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPALLLOT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DROPALLLOT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = v2; if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 776))(v3, 12, 8, 769); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 20))(v4, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPALLLOT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00529630) -------------------------------------------------------- int __stdcall sub_529630(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPALLFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DROPALLFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 8, *(_WORD *)(a1 + 2)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1668, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPALLFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00529730) -------------------------------------------------------- int __stdcall sub_529730(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPLOTFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DROPLOTFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 8, *(_WORD *)(a1 + 2)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1668, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DROPLOTFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00529830) -------------------------------------------------------- int __thiscall sub_529830(int this, int a2) { int v2; // esi@1 int result; // eax@2 v2 = this; sub_48C440(this, a2); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(*(_DWORD *)(a2 + 4) + 112) + 24))() && (unsigned int)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(*(_DWORD *)(a2 + 4) + 112) + 28))(*(_DWORD *)(a2 + 4) + 8) > *(_DWORD *)(a2 + 10) ) result = sub_5283F0(v2, *(_WORD *)(v2 + 4), a2 + 8, *(_DWORD *)(a2 + 4)); else result = sub_528240(v2, *(_WORD *)(v2 + 4), a2 + 8, *(_DWORD *)(a2 + 4)); return result; } //----- (005298B0) -------------------------------------------------------- int __thiscall sub_5298B0(void *this) { *((_BYTE *)this + 82020) = 0; return sub_532F80(this); } //----- (005298C0) -------------------------------------------------------- void __thiscall sub_5298C0(int this, void *a2) { memcpy(a2, (const void *)(this + 7180), 0xCCu); } //----- (005298E0) -------------------------------------------------------- char __thiscall sub_5298E0(void *this, unsigned __int16 a2) { int v2; // eax@1 void *v3; // ebx@1 int v4; // edi@2 int v5; // edi@6 int v6; // eax@11 int v8; // [sp+8h] [bp-1F8h]@2 int v9; // [sp+Ch] [bp-1F4h]@13 int v10; // [sp+10h] [bp-1F0h]@7 int v11; // [sp+14h] [bp-1ECh]@11 int i; // [sp+18h] [bp-1E8h]@7 int v13[30]; // [sp+1Ch] [bp-1E4h]@13 int v14[60]; // [sp+94h] [bp-16Ch]@7 int v15[30]; // [sp+184h] [bp-7Ch]@11 unsigned int v16; // [sp+1FCh] [bp-4h]@1 int v17; // [sp+200h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; LOBYTE(v2) = a2; v3 = this; if ( a2 != -1 ) { v2 = sub_418CB0((int)&dword_14D20890, a2); v4 = v2; v8 = v2; if ( v2 ) { v2 = *(_DWORD *)v2; if ( *(_DWORD *)v4 ) { if ( *(_DWORD *)(v4 + 4) ) { LOBYTE(v2) = sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v2 + 207), (*((_BYTE *)v3 + 32766) >> 2) & 0x1F); if ( (_BYTE)v2 ) { v2 = sub_460910(&dword_CFCDCD8, *(_DWORD *)(v4 + 4), (int)((char *)v3 + 32816)); v5 = v2; if ( v2 ) { v10 = 0; sub_460AE0( &dword_CFCDCD8, *(_DWORD *)(v8 + 4), (int)v14, (int)&v10, (int)((char *)v3 + 32816), (int)((char *)v3 + 58688)); sub_460C80(&dword_CFCDCD8, (int)v14, (int)&v10, (int)((char *)v3 + 32816), v5, (int)((char *)v3 + 58688)); for ( i = 0; i < v10; ++i ) { if ( sub_6400A0((char *)v3 + 32816, v14[2 * i]) != 1 ) (*(void (__thiscall **)(void *, signed int, int, _DWORD, signed int))(*(_DWORD *)v3 + 3424))( v3, 65535, v14[2 * i], 0, 1); } v11 = 0; sub_460FE0(&dword_CFCDCD8, (char *)v3 + 32816, (signed int)v15, (int)&v11, *(_DWORD *)(v8 + 4)); sub_461160(&dword_CFCDCD8, (char *)v3 + 32816, (int)v15, (int)&v11, v5); v6 = v11; v15[v11] = v5; v11 = v6 + 1; for ( i = 0; i < v11; ++i ) (*(void (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3432))(v3, v15[i]); v9 = 0; sub_460EB0(&dword_CFCDCD8, (int)v13, (signed int)&v9, *(_DWORD *)(v8 + 4)); (*(void (__thiscall **)(void *, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v3 + 3424))(v3, a2, v5, 0, 1); sub_63FF80((char *)v3 + 32816, v5, v5, a2); for ( i = 0; i < v9; ++i ) sub_63FF80((char *)v3 + 32816, v13[i], v5, -1); LOBYTE(v2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1480))(v3); } } } } } } return v2; } // 86FEB8: using guessed type int __security_cookie; // CFCDCD8: using guessed type int dword_CFCDCD8; // 14D20890: using guessed type int dword_14D20890; // 5298E0: using guessed type int var_7C[30]; // 5298E0: using guessed type int var_16C[60]; // 5298E0: using guessed type int var_1E4[30]; //----- (00529B90) -------------------------------------------------------- __int16 __thiscall sub_529B90(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 int i; // ebx@5 int v6; // eax@6 int v7; // ecx@7 int v9; // [sp+Ch] [bp-FCh]@2 int v10; // [sp+10h] [bp-F8h]@4 int v11[60]; // [sp+14h] [bp-F4h]@4 unsigned int v12; // [sp+104h] [bp-4h]@1 int v13; // [sp+108h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v2 = this; v3 = this + 32816; LOWORD(v4) = sub_640100((void *)(this + 32816), a2); if ( (_WORD)v4 != -1 ) { v4 = sub_418CB0((int)&dword_14D20890, v4); v9 = v4; if ( v4 ) { if ( *(_DWORD *)(v4 + 4) ) { (*(void (__thiscall **)(int, signed int, int, _DWORD, signed int))(*(_DWORD *)v2 + 3424))(v2, 65535, a2, 0, 1); sub_63FFB0((void *)v3, a2); v10 = 0; sub_460AE0(&dword_CFCDCD8, *(_DWORD *)(v9 + 4), (int)v11, (int)&v10, v3, v2 + 58688); sub_460C80(&dword_CFCDCD8, (int)v11, (int)&v10, v3, a2, v2 + 58688); LOWORD(v4) = v10; if ( v10 > 0 ) { for ( i = 0; i < v10; ++i ) { v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, v11[2 * i]); if ( v6 ) { v7 = *(_WORD *)(v6 + 8); if ( (_WORD)v7 != -1 ) (*(void (__thiscall **)(int, int, int, int, signed int))(*(_DWORD *)v2 + 3424))( v2, v7, v11[2 * i], v6, 1); } } LOWORD(v4) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1480))(v2); } } } } return v4; } // 86FEB8: using guessed type int __security_cookie; // CFCDCD8: using guessed type int dword_CFCDCD8; // 14D20890: using guessed type int dword_14D20890; // 529B90: using guessed type int var_F4[60]; //----- (00529CE0) -------------------------------------------------------- int __thiscall sub_529CE0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 signed int v4; // edi@7 int v5; // eax@8 int v6; // ecx@9 v2 = this; v3 = 1; if ( sub_6400D0((void *)(this + 32816)) == 1 ) { do { if ( sub_640100((void *)(v2 + 32816), v3) != -1 ) { (*(void (__thiscall **)(int, signed int, int, _DWORD, int))(*(_DWORD *)v2 + 3424))(v2, 65535, v3, 0, a2); sub_63FFB0((void *)(v2 + 32816), v3); } ++v3; } while ( v3 < 30 ); } else { do (*(void (__thiscall **)(int, signed int, int, _DWORD, int))(*(_DWORD *)v2 + 3424))(v2, 65535, v3++, 0, a2); while ( v3 < 30 ); } v4 = 1; do { v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 32816))(v2 + 32816, v4); if ( v5 ) { v6 = *(_WORD *)(v5 + 8); if ( (_WORD)v6 != -1 ) (*(void (__thiscall **)(int, int, signed int, int, int))(*(_DWORD *)v2 + 3424))(v2, v6, v4, v5, a2); } ++v4; } while ( v4 < 30 ); return (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1480))(v2); } //----- (00529DB0) -------------------------------------------------------- char __thiscall sub_529DB0(int this) { int v1; // edi@1 char result; // al@1 signed int v3; // ebx@2 int v4; // esi@2 int v5; // esi@6 void *v6; // [sp+4h] [bp-4h]@1 v1 = this; v6 = (void *)(this + 32816); result = sub_6400D0((void *)(this + 32816)); if ( result ) { v3 = 65535; v4 = 0; do { if ( sub_640150(v6, v4) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3424))(v1, 65535, v4, 0, 1); ++v4; } while ( v4 < 30 ); v5 = 0; do { if ( sub_640150(v6, v5) ) { if ( sub_6400A0(v6, v5) == 1 ) v3 = (unsigned __int16)sub_640100(v6, v5); if ( (_WORD)v3 != -1 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3424))(v1, v3, v5, 0, 1); } ++v5; } while ( v5 < 30 ); result = (unsigned int)sub_640170(v6); } return result; } //----- (00529E60) -------------------------------------------------------- char __thiscall sub_529E60(int this) { void *v1; // esi@1 char result; // al@1 v1 = (void *)(this + 32816); result = sub_6400D0((void *)(this + 32816)); if ( result ) result = (unsigned int)sub_640170(v1); return result; } //----- (00529E80) -------------------------------------------------------- unsigned __int8 __thiscall sub_529E80(int this) { int v1; // ebx@1 int v2; // esi@1 unsigned __int8 result; // al@1 signed __int16 v4; // ax@4 int v5; // edi@5 int v6; // ecx@7 signed int v7; // eax@9 int v8; // ebx@10 int i; // edi@10 int v10; // edi@12 int v11; // [sp+8h] [bp-184h]@1 int v12; // [sp+Ch] [bp-180h]@10 unsigned __int8 v13; // [sp+10h] [bp-17Ch]@3 int v14; // [sp+14h] [bp-178h]@10 int v15; // [sp+18h] [bp-174h]@10 unsigned __int8 v16; // [sp+1Fh] [bp-16Dh]@2 int v17[60]; // [sp+20h] [bp-16Ch]@10 int v18[30]; // [sp+110h] [bp-7Ch]@10 unsigned int v19; // [sp+188h] [bp-4h]@1 int v20; // [sp+18Ch] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v1 = this; v2 = this + 32816; v11 = this; result = sub_6400D0((void *)(this + 32816)); if ( result ) { result = sub_6402C0(v2); v16 = result; if ( result ) { v13 = 0; do { v4 = sub_6402D0(v2, v13); if ( (unsigned __int16)v4 < (unsigned int)dword_14D20894 ) { v5 = dword_14D21184 + 40 * (unsigned __int16)v4; if ( v5 ) { if ( *(_DWORD *)v5 ) { v6 = **(_WORD **)v5; if ( (_WORD)v6 == v4 ) { v7 = *(_DWORD *)(v5 + 4); if ( v7 ) { v8 = v1 + 58688; v12 = sub_460910(&dword_CFCDCD8, v7, v2); v14 = 0; sub_460AE0(&dword_CFCDCD8, *(_DWORD *)(v5 + 4), (int)v17, (int)&v14, v2, v8); sub_460C80(&dword_CFCDCD8, (int)v17, (int)&v14, v2, v12, v8); v15 = 0; sub_460FE0(&dword_CFCDCD8, (void *)v2, (signed int)v18, (int)&v15, *(_DWORD *)(v5 + 4)); sub_461160(&dword_CFCDCD8, (void *)v2, (int)v18, (int)&v15, v12); for ( i = 0; i < v14; ++i ) sub_640130((void *)v2, v17[2 * i], 1); v10 = 0; if ( v15 > 0 ) { do sub_640130((void *)v2, v18[v10++], 1); while ( v10 < v15 ); if ( v15 > 0 ) goto LABEL_22; } if ( sub_6400A0((void *)v2, v12) == 1 ) LABEL_22: sub_640130((void *)v2, v12, 1); (*(void (**)(void))(*(_DWORD *)v11 + 3440))(); v1 = v11; } } else { sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v6 + 10000 * (unsigned __int16)v4); } } } } ++v13; } while ( v13 < v16 ); result = sub_640210(v2); } } return result; } // 86FEB8: using guessed type int __security_cookie; // CFCDCD8: using guessed type int dword_CFCDCD8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; // 529E80: using guessed type int var_16C[60]; // 529E80: using guessed type int var_7C[30]; //----- (0052A0A0) -------------------------------------------------------- int __thiscall sub_52A0A0(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 int v5; // edx@6 int v6; // eax@6 char v7; // al@8 int v8; // edx@8 int v9; // edx@10 int v10; // ebx@10 unsigned __int16 *v11; // edi@10 unsigned __int16 v12; // ST10_2@10 int v13; // ecx@12 unsigned __int16 v14; // ax@12 void *v15; // ecx@16 int v16; // edi@17 int v17; // edi@19 int v18; // eax@20 int v19; // ecx@21 int v20; // eax@30 unsigned __int16 v21; // ax@31 int v22; // eax@32 int v23; // eax@35 unsigned __int16 v24; // ax@36 int v25; // eax@37 bool v26; // zf@38 int v27; // eax@44 int v28; // eax@49 int v29; // eax@51 signed int v30; // ebx@54 int v31; // eax@62 unsigned __int16 v32; // ax@63 int v33; // eax@64 int v34; // eax@66 int v35; // eax@67 int v36; // ecx@68 int v37; // eax@79 int v38; // eax@82 int v39; // ebx@85 int v40; // eax@85 void *v41; // ebx@85 char v42; // al@85 int v43; // edi@85 int v44; // eax@90 int v45; // edx@90 int v46; // eax@90 int v47; // eax@91 int (__thiscall *v48)(_DWORD, _DWORD, _DWORD); // edx@91 int v49; // eax@92 int v50; // eax@92 int v51; // eax@92 int v52; // eax@92 int v53; // eax@92 int v54; // ecx@92 char v55; // dl@92 int v56; // ecx@96 int v57; // edx@96 __int16 v58; // ax@96 int v59; // eax@96 int v60; // eax@97 signed int v61; // eax@97 int v62; // ecx@103 int v63; // eax@107 int v64; // eax@108 int v65; // eax@108 int v66; // eax@108 int v67; // edi@108 int v68; // eax@110 int v69; // ebx@112 int v70; // ebx@114 int v71; // ebx@119 int v72; // edi@120 int v73; // eax@120 unsigned int v75; // [sp-4h] [bp-1E4h]@1 signed int v76; // [sp-4h] [bp-1E4h]@40 int (**v77)(); // [sp+Ch] [bp-1D4h]@86 int v78; // [sp+1Ch] [bp-1C4h]@10 int v79; // [sp+20h] [bp-1C0h]@1 int v80; // [sp+24h] [bp-1BCh]@92 int v81; // [sp+28h] [bp-1B8h]@90 int *v82; // [sp+2Ch] [bp-1B4h]@86 int v83; // [sp+30h] [bp-1B0h]@86 int v84; // [sp+34h] [bp-1ACh]@86 int v85; // [sp+38h] [bp-1A8h]@90 int v86; // [sp+3Ch] [bp-1A4h]@91 int v87; // [sp+40h] [bp-1A0h]@20 int v88; // [sp+44h] [bp-19Ch]@6 __int16 v89; // [sp+48h] [bp-198h]@91 int v90; // [sp+4Ch] [bp-194h]@59 int v91; // [sp+50h] [bp-190h]@6 int v92; // [sp+54h] [bp-18Ch]@85 int v93; // [sp+58h] [bp-188h]@19 int v94; // [sp+5Ch] [bp-184h]@10 int v95; // [sp+60h] [bp-180h]@54 int v96; // [sp+64h] [bp-17Ch]@12 int v97[30]; // [sp+68h] [bp-178h]@112 int v98; // [sp+E0h] [bp-100h]@85 int v99[59]; // [sp+E4h] [bp-FCh]@92 unsigned int v100; // [sp+1D0h] [bp-10h]@1 int v101; // [sp+1DCh] [bp-4h]@1 int v102; // [sp+1E0h] [bp+0h]@1 v100 = (unsigned int)&v102 ^ __security_cookie; v75 = (unsigned int)&v102 ^ __security_cookie; v4 = (int)this; v79 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"; dword_750AB8[dword_750CB8++] = -1; v101 = 0; if ( !(dword_13244878 & 1) ) { dword_13244878 |= 1u; word_13244874 = 70; atexit(nullsub_97); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13244874 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) { v5 = *(_BYTE *)(a2 + 2); v6 = *(_DWORD *)(v4 + 36484); v88 = *(_BYTE *)(a2 + 2); v91 = v5; if ( v5 >= (*(int (__thiscall **)(int, unsigned int))(v6 + 8))(v4 + 36484, v75) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : wrong slot", v88); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 643); LABEL_125: v101 = -1; goto LABEL_126; } v7 = (*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v4 + 58688) + 12))(v4 + 58688, 9, v91); v8 = *(_DWORD *)v4; if ( v7 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v8 + 776))(v4, 12, 17, 642); goto LABEL_125; } (*(void (__thiscall **)(int))(v8 + 3788))(v4); v9 = *(_DWORD *)(v4 + 36484); v78 = *(_BYTE *)(a2 + 2); v10 = (*(int (__thiscall **)(int, int))v9)(v4 + 36484, v78); v11 = (unsigned __int16 *)(v10 + 8); v12 = *(_WORD *)(v10 + 8); v94 = v10; v88 = v10 + 8; if ( !sub_418CB0((int)&dword_14D20890, v12) ) goto LABEL_129; v13 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *v11); v14 = *v11; v96 = v13; v91 = *(_DWORD *)(sub_418CB0((int)&dword_14D20890, v14) + 4); if ( !v96 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 644); goto LABEL_125; } if ( !sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v96 + 207), (*(_BYTE *)(v4 + 32766) >> 2) & 0x1F) ) goto LABEL_130; v15 = *(void **)(v10 + 112); if ( !v15 ) goto LABEL_125; v16 = sub_63C9B0(v15, v10 + 8, 13); if ( (unsigned int)v16 < *(_DWORD *)(v96 + 127) ) { if ( *(_DWORD *)(v96 + 127) - v16 > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1240))(v4) ) { LABEL_130: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 645); goto LABEL_125; } } v17 = v4 + 32816; v93 = sub_460910(&dword_CFCDCD8, v91, v4 + 32816); if ( !v93 ) { LABEL_129: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 643); goto LABEL_125; } v87 = 0; v18 = sub_645090(v10); if ( sub_62EFA0(&dword_1508B5A8, v18) ) { v19 = *(_DWORD *)(v10 + 112); if ( !v19 ) goto LABEL_125; if ( (*(int (__stdcall **)(int))(*(_DWORD *)v19 + 164))(v10) != 1 ) v87 = 1; } if ( *(_BYTE *)(v4 + 82020) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 658); goto LABEL_125; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 8, v93) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 642); goto LABEL_125; } if ( v93 != 10 && v93 != 29 ) goto LABEL_131; v20 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, 13); if ( !v20 || (v21 = *(_WORD *)(v20 + 8), v21 != -1) && ((v22 = sub_418CB0((int)&dword_14D20890, v21)) == 0 || *(_BYTE *)(*(_DWORD *)v22 + 122)) ) goto LABEL_40; if ( v93 != 29 ) { LABEL_131: if ( v93 == 13 ) { if ( *(_BYTE *)(v96 + 122) ) { v27 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, 10); if ( !v27 || *(_WORD *)(v27 + 8) != -1 ) goto LABEL_40; } } else { if ( v93 != 12 ) goto LABEL_51; } if ( !*(_BYTE *)(v96 + 122) ) goto LABEL_51; v28 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, 29); if ( !v28 ) goto LABEL_40; v26 = *(_WORD *)(v28 + 8) == -1; } else { v23 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, 12); if ( !v23 ) goto LABEL_40; v24 = *(_WORD *)(v23 + 8); if ( v24 == -1 ) goto LABEL_51; v25 = sub_418CB0((int)&dword_14D20890, v24); if ( !v25 ) { LABEL_40: v76 = 659; LABEL_41: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, v76); goto LABEL_125; } v26 = *(_BYTE *)(*(_DWORD *)v25 + 122) == 0; } if ( !v26 ) goto LABEL_40; LABEL_51: v29 = *(_DWORD *)(v96 + 232); if ( v29 != 16 && v29 ) { switch ( v93 ) { case 10: v30 = 11; v95 = 13; break; case 11: v30 = 10; v95 = 12; break; case 12: v30 = 13; v95 = 11; break; case 13: v30 = 12; v95 = 10; break; default: v30 = 0; v95 = 0; break; } v90 = 0; do { if ( !v30 || !v95 ) break; v31 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, v30); if ( !v31 || (v32 = *(_WORD *)(v31 + 8), v32 == -1) ) { v33 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, v95); if ( !v33 ) break; v32 = *(_WORD *)(v33 + 8); if ( v32 == -1 ) break; } v34 = sub_418CB0((int)&dword_14D20890, v32); if ( !v34 ) break; v35 = *(_DWORD *)v34; if ( !v35 ) break; v36 = *(_DWORD *)(v35 + 232); if ( v36 != 16 && v36 && (*(_DWORD *)(v96 + 232) != v36 || *(_BYTE *)(v96 + 122) != *(_BYTE *)(v35 + 122)) ) goto LABEL_40; ++v90; } while ( v90 < 1 ); if ( v93 == 11 || v93 == 13 || v93 == 29 ) { if ( v93 == 11 ) v37 = 10; else v37 = v93 != 13 && v93 != 29 ? v79 : 12; v38 = (**(int (__thiscall ***)(_DWORD, _DWORD))v17)(v4 + 32816, v37); if ( !v38 || *(_WORD *)(v38 + 8) == -1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); } } v92 = 0; sub_460AE0(&dword_CFCDCD8, v91, (int)&v98, (int)&v92, v4 + 32816, v4 + 58688); v39 = v93; sub_460C80(&dword_CFCDCD8, (int)&v98, (int)&v92, v4 + 32816, v93, v4 + 58688); v40 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 32816))(v4 + 32816, v39); v41 = off_849C18; v95 = v40; *((_WORD *)off_849C18 + 1) = a4; *((_DWORD *)v41 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)v41 = 13328; v42 = v92; v43 = *(_WORD *)(v4 + 58692); if ( v92 > 0 ) { sub_43BB20((int)&v77, v4 + 36484, v4 + 160312); LOBYTE(v101) = 1; v82 = (int *)&v77; v83 = v4 + 58688; v84 = 9; if ( !sub_486D40(&v82) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 654); v77 = &off_6A86A4; goto LABEL_125; } v42 = v92; v96 = 0; if ( v92 > 0 ) { v90 = (int)((char *)v41 + 45); while ( 1 ) { v44 = (**(int (__stdcall ***)(_DWORD))v82[1])(v82[2]); v45 = *(_DWORD *)(v4 + 36484); v81 = v44; v85 = v82[2]; v46 = (*(int (__thiscall **)(int, int))(v45 + 4))(v4 + 36484, v4 + 160312); if ( v85 >= v46 ) { LABEL_98: (*(void (__thiscall **)(int, int))(*(_DWORD *)(v4 + 58688) + 40))(v4 + 58688, v43); goto LABEL_99; } v89 = v85 & 0x3FF | 0x2400; v47 = *(&v98 + 2 * v96); v48 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 12); LOWORD(v86) = *((_WORD *)&v98 + 4 * v96) & 0x3FF | 0x2000; if ( (unsigned __int8)v48(v4 + 58688, 8, v47) ) break; v49 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, _DWORD, int))(*(_DWORD *)v49 + 84))( v49, v43, *(&v98 + 2 * v96), v99[2 * v96]); v50 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v80 = v99[2 * v96]; (*(void (__thiscall **)(int, int, int, int, __int16 *, int *))(*(_DWORD *)v50 + 64))( v50, v43, v81, v80, &v89, &v86); v51 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int *, __int16 *))(*(_DWORD *)v51 + 48))( v51, v43, v99[2 * v96], &v86, &v89); v52 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int, signed int, _DWORD))(*(_DWORD *)v52 + 80))( v52, v43, v86 & 0x3FF, v99[2 * v96], -1, 0); v53 = v99[2 * v96]; v54 = v90; *(_DWORD *)(v90 - 8) = *(_DWORD *)v53; v55 = v85; *(_DWORD *)(v54 - 4) = *(_DWORD *)(v53 + 4); *(_BYTE *)v54 = v55; v26 = sub_486DA0((void **)&v82) == 0; v42 = v92; if ( v26 && v96 + 1 < v92 ) goto LABEL_98; v90 += 9; ++v96; if ( v96 >= v92 ) goto LABEL_95; } (*(void (__thiscall **)(int, int))(*(_DWORD *)(v4 + 58688) + 40))(v4 + 58688, v43); LABEL_99: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17); v77 = &off_6A86A4; goto LABEL_125; } LABEL_95: LOBYTE(v101) = 0; } *((_WORD *)v41 + 8) = v93 & 0x3FF | 0x2000; v56 = v94; *((_BYTE *)v41 + 36) = v42; *((_DWORD *)v41 + 2) = *(_DWORD *)v56; v57 = v88; *((_DWORD *)v41 + 3) = *(_DWORD *)(v56 + 4); v58 = *(_WORD *)v57; LOWORD(v57) = v78; *((_WORD *)v41 + 9) = v58; *((_DWORD *)v41 + 5) = v87; v59 = v95; *((_WORD *)v41 + 16) = v57 & 0x3FF | 0x2400; if ( *(_WORD *)(v59 + 8) == -1 ) { v61 = -1; *((_DWORD *)v41 + 6) = -1; } else { v60 = v95; *((_DWORD *)v41 + 6) = *(_DWORD *)v95; v61 = *(_DWORD *)(v60 + 4); } v26 = v87 == 1; *((_DWORD *)v41 + 7) = v61; if ( v26 ) { v62 = *(_DWORD *)(v56 + 112); if ( !v62 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 40))(v4 + 58688, v43); v76 = 654; goto LABEL_41; } (*(void (__stdcall **)(int, signed int))(*(_DWORD *)v62 + 168))(v94, 1); } if ( *(_WORD *)(v95 + 8) != -1 ) { v63 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v63 + 84))(v63, v43, v93, v95); } v64 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int, char *, char *))(*(_DWORD *)v64 + 64))( v64, v43, v95, v94, (char *)v41 + 16, (char *)v41 + 32); v65 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int, char *, char *))(*(_DWORD *)v65 + 64))( v65, v43, v94, v95, (char *)v41 + 32, (char *)v41 + 16); v66 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, int, int, int, signed int, _DWORD))(*(_DWORD *)v66 + 80))(v66, v43, v93, v95, -1, 0); *((_WORD *)v41 + 17) = v43; ++*(_WORD *)(v4 + 58692); v67 = 9 * *((_BYTE *)v41 + 36) + 37; if ( sub_4C81E0(&off_849C18, v67) ) { v68 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v68); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", v67); } *(_BYTE *)(v4 + 82020) = 1; if ( sub_6400D0((void *)(v4 + 32816)) == 1 ) { v69 = 0; v94 = 0; sub_460FE0(&dword_CFCDCD8, (void *)(v4 + 32816), (signed int)v97, (int)&v94, v91); sub_461160(&dword_CFCDCD8, (void *)(v4 + 32816), (int)v97, (int)&v94, v93); if ( v92 > 0 ) { do sub_640130((void *)(v4 + 32816), *(&v98 + 2 * v69++), 1); while ( v69 < v92 ); } v70 = 0; if ( v94 > 0 ) { do sub_640130((void *)(v4 + 32816), v97[v70++], 1); while ( v70 < v94 ); if ( v94 > 0 ) goto LABEL_132; } if ( sub_6400A0((void *)(v4 + 32816), v93) == 1 ) LABEL_132: sub_640130((void *)(v4 + 32816), v93, 1); } v71 = v95; if ( *(_WORD *)(v95 + 8) != -1 ) { v72 = sub_4A18B0((int)&unk_133597B0, *(_WORD *)v88); v73 = sub_4A18B0((int)&unk_133597B0, *(_WORD *)(v71 + 8)); if ( v73 == 1 ) { if ( v72 != 1 ) sub_5631C0(v4, 0); } else { if ( v73 == 2 ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3664))(v4); } } goto LABEL_125; } (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 12, 17, 642, v75); v101 = -1; LABEL_126: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // CFCDCD8: using guessed type int dword_CFCDCD8; // 13244874: using guessed type __int16 word_13244874; // 13244878: using guessed type int dword_13244878; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; // 52A0A0: using guessed type int var_FC[59]; // 52A0A0: using guessed type int var_178[30]; //----- (0052AD80) -------------------------------------------------------- int __thiscall sub_52AD80(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 int v5; // eax@9 void *v6; // ecx@9 int v7; // eax@12 int v8; // ecx@14 bool v9; // zf@20 int v10; // ebx@22 int v11; // edi@23 char v12; // al@25 int v13; // edx@25 int v14; // eax@29 int v15; // ecx@30 signed int v16; // eax@33 int v17; // ST10_4@39 int v18; // ecx@43 void *v19; // edi@47 __int16 v20; // ax@47 int v21; // eax@52 int v22; // eax@54 int v23; // eax@55 int v24; // eax@55 int v25; // ebx@55 int v26; // eax@55 int v27; // eax@55 int v29; // [sp-8h] [bp-38h]@7 int v30; // [sp-8h] [bp-38h]@36 int v31; // [sp-4h] [bp-34h]@4 int v32; // [sp-4h] [bp-34h]@7 signed int v33; // [sp-4h] [bp-34h]@8 int v34; // [sp-4h] [bp-34h]@36 __int16 v35; // [sp+14h] [bp-1Ch]@22 int v36; // [sp+18h] [bp-18h]@6 signed int v37; // [sp+18h] [bp-18h]@23 int v38; // [sp+18h] [bp-18h]@47 int v39; // [sp+1Ch] [bp-14h]@6 int v40; // [sp+1Ch] [bp-14h]@41 signed int v41; // [sp+20h] [bp-10h]@29 int v42; // [sp+20h] [bp-10h]@47 int v43; // [sp+38h] [bp+8h]@39 int v44; // [sp+40h] [bp+10h]@54 int v45; // [sp+40h] [bp+10h]@55 int v46; // [sp+40h] [bp+10h]@55 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13244880 & 1) ) { dword_13244880 |= 1u; word_1324487C = 70; atexit(nullsub_98); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1324487C && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v39 = *(_BYTE *)(a2 + 2); v36 = *(_BYTE *)(a2 + 2); if ( v36 < (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 9121) + 8))((char *)v4 + 36484) ) { LOBYTE(v7) = *(_BYTE *)(a2 + 3); v8 = (_BYTE)v7 == 15 || (_BYTE)v7 == 16; v7 = (unsigned __int8)v7; if ( v8 ) { if ( !*((_BYTE *)v4 + 82020) ) { v9 = (*(int (__thiscall **)(char *, signed int, int))(*((_DWORD *)v4 + 14672) + 12))( (char *)v4 + 58688, 9, v36) == 0; v5 = *(_DWORD *)v4; v6 = v4; if ( v9 ) { (*(void (__thiscall **)(void *))(v5 + 3788))(v4); v35 = *(_BYTE *)(a2 + 2); v10 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); if ( sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)) ) { v11 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)); v37 = *(_DWORD *)(sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)) + 4); if ( !v11 ) { sub_639100( &unk_86DDD8, (int)"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, 12, 17, 644); --dword_750CB8; goto LABEL_56; } v12 = sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v11 + 207), (*((_BYTE *)v4 + 32766) >> 2) & 0x1F); v13 = *(_DWORD *)v4; if ( !v12 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v13 + 776))(v4, 12, 17, 645); --dword_750CB8; goto LABEL_56; } if ( *(_DWORD *)(v11 + 127) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(v13 + 1240))(v4) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 17, 645); --dword_750CB8; goto LABEL_56; } v41 = 0; v14 = sub_645090(v10); if ( sub_62EFA0(&dword_1508B5A8, v14) ) { v15 = *(_DWORD *)(v10 + 112); if ( !v15 ) goto LABEL_11; if ( (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 164))(v10) != 1 ) v41 = 1; } v16 = sub_460910(&dword_CFCDCD8, v37, (int)((char *)v4 + 32816)); if ( v16 ) { if ( v16 == 15 || v16 == 16 ) { v17 = *(_BYTE *)(a2 + 3); v43 = *(_BYTE *)(a2 + 3); if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int))(*((_DWORD *)v4 + 14672) + 12))( (char *)v4 + 58688, 8, v17) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 642); --dword_750CB8; goto LABEL_56; } v40 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, v43); v18 = !*(_DWORD *)(v11 + 98) && v43 < (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 8204) + 8))((char *)v4 + 32816); if ( v18 ) { v19 = off_849C18; *((_WORD *)off_849C18 + 1) = a4; *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)v19 = 13328; *((_WORD *)v19 + 8) = v43 & 0x3FF | 0x2000; v38 = (int)((char *)v19 + 16); *((_DWORD *)v19 + 2) = *(_DWORD *)v10; *((_DWORD *)v19 + 3) = *(_DWORD *)(v10 + 4); v20 = *(_WORD *)(v10 + 8); *((_DWORD *)v19 + 5) = v41; *((_WORD *)v19 + 9) = v20; *((_WORD *)v19 + 17) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *((_WORD *)v19 + 16) = v35 & 0x3FF | 0x2400; v42 = (int)((char *)v19 + 32); if ( *(_WORD *)(v40 + 8) == -1 ) { *((_DWORD *)v19 + 7) = -1; *((_DWORD *)v19 + 6) = -1; } else { *((_DWORD *)v19 + 6) = *(_DWORD *)v40; *((_DWORD *)v19 + 7) = *(_DWORD *)(v40 + 4); } *((_BYTE *)v19 + 36) = 0; if ( sub_4C81E0(&off_849C18, 37) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", 37); } if ( *(_WORD *)(v40 + 8) != -1 ) { v44 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v44 + 84))( v44, *(_WORD *)(v22 + 4), v43, v40); } v45 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, int, int))(*(_DWORD *)v45 + 64))( v45, *(_WORD *)(v23 + 4), v40, v10, v38, v42); v46 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, int, int))(*(_DWORD *)v46 + 64))( v46, *(_WORD *)(v24 + 4), v10, v40, v42, v38); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, signed int, _DWORD))(*(_DWORD *)v25 + 80))( v25, *(_WORD *)(v26 + 4), v43, v40, -1, 0); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v27 + 4); *((_BYTE *)v4 + 82020) = 1; --dword_750CB8; goto LABEL_56; } v34 = *(_WORD *)(v10 + 8); v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip invalid item"; } else { v34 = 0; v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip Not Ring"; } sub_639100(&unk_86DDD8, v30, v34); } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 643); --dword_750CB8; goto LABEL_56; } v33 = 642; LABEL_10: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v5 + 776))(v6, 12, 17, v33); LABEL_11: --dword_750CB8; LABEL_56: v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"; return sub_467660((int)&unk_D020420, v31); } v33 = 658; LABEL_9: v5 = *(_DWORD *)v4; v6 = v4; goto LABEL_10; } v32 = v7; v29 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong equip"; } else { v32 = v39; v29 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong slot"; } sub_639100(&unk_86DDD8, v29, v32); v33 = 643; goto LABEL_9; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 642); --dword_750CB8; v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"; return sub_467660((int)&unk_D020420, v31); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // CFCDCD8: using guessed type int dword_CFCDCD8; // 1324487C: using guessed type __int16 word_1324487C; // 13244880: using guessed type int dword_13244880; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0052B370) -------------------------------------------------------- int __stdcall sub_52B370(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EQUIPSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_EQUIPSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_EQUIPSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 17, 641); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1480))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 860))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 872))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1928))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1932))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1880))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2460))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3440))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EQUIPSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052B520) -------------------------------------------------------- int __stdcall sub_52B520(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EQUIPFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_EQUIPFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 17, *(_WORD *)(a1 + 2)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1880))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3444))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EQUIPFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052B630) -------------------------------------------------------- void *__thiscall sub_52B630(void *this, unsigned __int16 a2, int a3, int a4, char a5) { void *v5; // esi@1 void *v6; // edi@1 void *result; // eax@1 int v8; // ecx@3 int v9; // edi@5 int v10; // eax@6 int v11; // ST04_4@9 int v12; // eax@9 int v13; // eax@12 int v14; // [sp-10h] [bp-B8h]@3 int *v15; // [sp-Ch] [bp-B4h]@3 int *v16; // [sp-8h] [bp-B0h]@3 char v17; // [sp+Ch] [bp-9Ch]@9 int v18; // [sp+18h] [bp-90h]@1 void *v19; // [sp+1Ch] [bp-8Ch]@1 int v20; // [sp+20h] [bp-88h]@3 int v21; // [sp+24h] [bp-84h]@3 int v22; // [sp+28h] [bp-80h]@1 int v23; // [sp+2Ch] [bp-7Ch]@1 unsigned __int16 v24; // [sp+30h] [bp-78h]@1 unsigned int v25; // [sp+98h] [bp-10h]@1 int v26; // [sp+A4h] [bp-4h]@9 int v27; // [sp+A8h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v5 = this; v19 = off_849C18; v18 = a4; v6 = sub_63ACA0(dword_1508B168, a2); v22 = -1; v23 = -1; result = memset(&v24, 0, 0x67u); v24 = a2; if ( v6 ) { if ( v18 ) { v16 = &v21; v15 = &v20; v14 = a3; v8 = v18 + 8; } else { v16 = &v21; v15 = &v20; v14 = a3; v8 = (int)&v24; } result = (void *)(*(int (__thiscall **)(void *, _DWORD, void *, int, int, int *, int *))(*(_DWORD *)v6 + 36))( v6, *((_WORD *)v5 + 2), v19, v8, v14, v15, v16); v9 = (int)result; if ( (signed int)result > 0 ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1056))(v5); if ( *(_BYTE *)(v10 + 1160) == 10 ) sub_62AD70((void *)v10, 0xAu, v21, v20, 0); if ( a5 == 1 ) { sub_4287B0(&v17, &off_849C18, v9); v11 = *(_DWORD *)((char *)v5 + 102); v26 = 0; v12 = sub_427BD0(&unk_13253E80); sub_549E00(v5, v12, v11, 0, 0, (int)&v17, 1, 65535); v26 = -1; result = (void *)sub_428A70(&v17); } else { if ( sub_4C81E0(&off_849C18, v9) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); result = (void *)(*(int (__thiscall **)(int, void *, void **))(*(_DWORD *)v13 + 12))(v13, v5, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_EquipmentChange : Packet Too Long", v9); } } } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0052B7F0) -------------------------------------------------------- int __thiscall sub_52B7F0(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 unsigned __int8 v5; // al@8 bool v6; // zf@14 int v7; // eax@14 int v8; // edi@16 int v9; // ebx@16 int v10; // eax@17 char v11; // al@21 int v12; // edx@21 int v13; // eax@25 int v14; // ecx@26 signed int v15; // eax@31 int v16; // eax@40 void *v17; // edi@40 __int16 v18; // ax@40 int v19; // eax@45 int v20; // eax@47 int v21; // eax@48 int v22; // eax@48 int v23; // ebx@48 int v24; // eax@48 int v25; // eax@48 int v27; // [sp-8h] [bp-38h]@33 int v28; // [sp-4h] [bp-34h]@4 signed int v29; // [sp-4h] [bp-34h]@10 signed int v30; // [sp-4h] [bp-34h]@20 int v31; // [sp-4h] [bp-34h]@33 __int16 v32; // [sp+14h] [bp-1Ch]@16 int v33; // [sp+18h] [bp-18h]@6 int v34; // [sp+18h] [bp-18h]@40 int v35; // [sp+1Ch] [bp-14h]@17 int v36; // [sp+1Ch] [bp-14h]@40 int v37; // [sp+20h] [bp-10h]@17 signed int v38; // [sp+20h] [bp-10h]@25 int v39; // [sp+20h] [bp-10h]@40 int v40; // [sp+38h] [bp+8h]@36 int v41; // [sp+40h] [bp+10h]@47 int v42; // [sp+40h] [bp+10h]@48 int v43; // [sp+40h] [bp+10h]@48 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13244888 & 1) ) { dword_13244888 |= 1u; word_13244884 = 70; atexit(nullsub_99); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244884) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 642); v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ"; LABEL_52: --dword_750CB8; return sub_467660((int)&unk_D020420, v28); } v33 = *(_BYTE *)(a2 + 2); if ( v33 >= (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 9121) + 8))((char *)v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : wrong slot", v33); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 643); LABEL_51: v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ"; goto LABEL_52; } v5 = *(_BYTE *)(a2 + 3); if ( v5 != 25 && v5 != 28 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : wrong equip", v5); v29 = 643; LABEL_11: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, v29); goto LABEL_51; } if ( *((_BYTE *)v4 + 82020) ) { v29 = 658; goto LABEL_11; } v6 = (*(int (__thiscall **)(char *, signed int, int))(*((_DWORD *)v4 + 14672) + 12))((char *)v4 + 58688, 9, v33) == 1; v7 = *(_DWORD *)v4; if ( v6 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v7 + 776))(v4, 12, 17, 642); goto LABEL_51; } (*(void (__thiscall **)(void *))(v7 + 3788))(v4); v32 = *(_BYTE *)(a2 + 2); v8 = (int)((char *)v4 + 32816); v9 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); if ( !sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)) ) { LABEL_35: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, 643); goto LABEL_51; } v37 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)); v10 = *(_DWORD *)(sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)) + 4); v35 = v10; if ( !v37 || !v10 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : Try to equip empty cell", 0); v30 = 644; goto LABEL_50; } if ( *(_DWORD *)(v37 + 98) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : Try to equip invalid item", *(_WORD *)(v9 + 8)); v30 = 643; LABEL_50: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 17, v30); goto LABEL_51; } v11 = sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v37 + 207), (*((_BYTE *)v4 + 32766) >> 2) & 0x1F); v12 = *(_DWORD *)v4; if ( !v11 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v12 + 776))(v4, 12, 17, 645); goto LABEL_51; } if ( *(_DWORD *)(v37 + 127) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(v12 + 1240))(v4) ) { v30 = 645; goto LABEL_50; } v38 = 0; v13 = sub_645090(v9); if ( sub_62EFA0(&dword_1508B5A8, v13) ) { v14 = *(_DWORD *)(v9 + 112); if ( !v14 ) goto LABEL_51; if ( (*(int (__stdcall **)(int))(*(_DWORD *)v14 + 164))(v9) != 1 ) v38 = 1; } if ( !sub_461350(&dword_CFCDCD8, v35, *(_BYTE *)(a2 + 3)) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : Try to equip Not Minimon Slot", 0); v30 = 643; goto LABEL_50; } v15 = sub_460910(&dword_CFCDCD8, v35, (int)((char *)v4 + 32816)); if ( v15 != 25 && v15 != 28 ) { v31 = 0; v27 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : Try to equip Not Minimon"; LABEL_34: sub_639100(&unk_86DDD8, v27, v31); goto LABEL_35; } v40 = *(_BYTE *)(a2 + 3); if ( v40 >= (*(int (__thiscall **)(char *))(*(_DWORD *)v8 + 8))((char *)v4 + 32816) ) { v31 = *(_WORD *)(v9 + 8); v27 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ : Try to equip invalid item"; goto LABEL_34; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int))(*((_DWORD *)v4 + 14672) + 12))( (char *)v4 + 58688, 8, v40) == 1 ) { v30 = 642; goto LABEL_50; } v16 = (**(int (__thiscall ***)(char *, int))v8)((char *)v4 + 32816, v40); v17 = off_849C18; v36 = v16; *((_WORD *)off_849C18 + 1) = a4; *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)v17 = 13328; *((_WORD *)v17 + 8) = v40 & 0x3FF | 0x2000; v34 = (int)((char *)v17 + 16); *((_DWORD *)v17 + 2) = *(_DWORD *)v9; *((_DWORD *)v17 + 3) = *(_DWORD *)(v9 + 4); v18 = *(_WORD *)(v9 + 8); *((_DWORD *)v17 + 5) = v38; *((_WORD *)v17 + 9) = v18; *((_WORD *)v17 + 17) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *((_WORD *)v17 + 16) = v32 & 0x3FF | 0x2400; v39 = (int)((char *)v17 + 32); if ( *(_WORD *)(v36 + 8) == -1 ) { *((_DWORD *)v17 + 6) = -1; *((_DWORD *)v17 + 7) = -1; } else { *((_DWORD *)v17 + 6) = *(_DWORD *)v36; *((_DWORD *)v17 + 7) = *(_DWORD *)(v36 + 4); } *((_BYTE *)v17 + 36) = 0; if ( sub_4C81E0(&off_849C18, 37) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", 37); } if ( *(_WORD *)(v36 + 8) != -1 ) { v41 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v41 + 84))(v41, *(_WORD *)(v20 + 4), v40, v36); } v42 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, int, int))(*(_DWORD *)v42 + 64))( v42, *(_WORD *)(v21 + 4), v36, v9, v34, v39); v43 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, int, int))(*(_DWORD *)v43 + 64))( v43, *(_WORD *)(v22 + 4), v9, v36, v39, v34); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, signed int, _DWORD))(*(_DWORD *)v23 + 80))( v23, *(_WORD *)(v24 + 4), v40, v36, -1, 0); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v25 + 4); *((_BYTE *)v4 + 82020) = 1; --dword_750CB8; v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MINIMON_EQUIP_REQ"; return sub_467660((int)&unk_D020420, v28); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // CFCDCD8: using guessed type int dword_CFCDCD8; // 13244884: using guessed type __int16 word_13244884; // 13244888: using guessed type int dword_13244888; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0052BE10) -------------------------------------------------------- int __thiscall sub_52BE10(int this) { int v1; // esi@1 v1 = this; sub_4383E0(this, 8); return v1; } //----- (0052BE50) -------------------------------------------------------- char __thiscall sub_52BE50(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x78u); result = 1; } else { result = 0; } return result; } //----- (0052BE90) -------------------------------------------------------- char __thiscall sub_52BE90(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x78u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (0052BEE0) -------------------------------------------------------- char __thiscall sub_52BEE0(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x78u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (0052BF30) -------------------------------------------------------- void *__thiscall sub_52BF30(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6D40A4; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6D40A4: using guessed type int (__thiscall *off_6D40A4)(void *, char); //----- (0052BF80) -------------------------------------------------------- void __thiscall sub_52BF80(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6D40D8; _LN21((void *)(this + 24), 0x78u, 40, nullsub_2); *(_DWORD *)v1 = &off_6D40A4; v2 = *(void **)(v1 + 8); if ( v2 ) sub_6530A4(v2); } // 6D40A4: using guessed type int (__thiscall *off_6D40A4)(void *, char); // 6D40D8: using guessed type int (__thiscall *off_6D40D8)(void *, char); //----- (0052BFF0) -------------------------------------------------------- int __thiscall sub_52BFF0(void *this, int a2) { void *v2; // esi@1 signed int v3; // ebx@1 void *v4; // eax@1 int v5; // edx@2 __int16 v6; // cx@4 int v7; // eax@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)off_849C18 & 0x3FF | 0x5000; if ( !*(_DWORD *)(a2 + 16) ) { v5 = *(_DWORD *)(a2 + 20) + *(_WORD *)((char *)v2 + 32699); *(_WORD *)((char *)v2 + 32699) = v5; *((_WORD *)v4 + 1) = v5; *(_WORD *)v4 = *(_WORD *)v4 & 0xFC03 | 3; v3 = 1; } if ( *(_DWORD *)(a2 + 16) == v3 ) { v6 = *(_WORD *)((char *)v2 + 32701) + *(_DWORD *)(a2 + 20); *(_WORD *)((char *)v2 + 32701) = v6; *((_WORD *)v4 + 1) = v6; *(_WORD *)v4 = *(_WORD *)v4 & 0xFC04 | 4; } if ( sub_4C81E0(&off_849C18, 4) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_soulstonebox : Packet Too Long", 4); } dword_750CB8 -= v3; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052C150) -------------------------------------------------------- int __thiscall sub_52C150(void *this, int a2) { void *v2; // esi@1 char v3; // ST04_1@2 char v4; // ST00_1@2 void *v5; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"; dword_750AB8[dword_750CB8++] = -1; sub_42D730(v2, *(_DWORD *)(a2 + 16), -1, 65535); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 32))(v2, *(_DWORD *)(a2 + 20)); if ( *(_BYTE *)(a2 + 24) ) { v3 = *(_BYTE *)(a2 + 25); v4 = *(_BYTE *)(a2 + 24); v5 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1056))(v2); sub_5C8340(v5, v4, v3, 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052C240) -------------------------------------------------------- int __thiscall sub_52C240(void *this, int a2) { unsigned int v2; // ST10_4@1 void *v3; // esi@1 int v4; // eax@1 _BYTE *v5; // eax@1 signed int v6; // eax@3 int v8; // ebx@11 int v9; // eax@13 int v10; // edi@13 int v11; // eax@15 void *v12; // edi@20 int v13; // ecx@22 int v14; // eax@22 _BYTE *v15; // eax@22 int v16; // eax@24 int v17; // edi@25 int v18; // eax@25 int v19; // edi@25 int v20; // eax@25 int v21; // eax@25 int v22; // [sp+10h] [bp-40Ch]@3 int v23; // [sp+14h] [bp-408h]@3 int v24; // [sp+18h] [bp-404h]@3 unsigned __int16 v25; // [sp+1Ch] [bp-400h]@4 signed int v26; // [sp+1Ch] [bp-400h]@11 int v27; // [sp+1Ch] [bp-400h]@20 char v28; // [sp+20h] [bp-3FCh]@6 unsigned int v29; // [sp+40Ch] [bp-10h]@1 int v30; // [sp+418h] [bp-4h]@1 int v31; // [sp+41Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v2 = (unsigned int)&v31 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQReward"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_KQReward"; dword_750AB8[dword_750CB8++] = -1; v4 = dword_8622C4 & (dword_8622C0 + 1); v30 = 0; dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)((char *)v3 + 32665); *((_DWORD *)v5 + 1) = *(_DWORD *)((char *)v3 + 32669); *((_DWORD *)v5 + 2) = *(_DWORD *)((char *)v3 + 32673); *((_DWORD *)v5 + 3) = *(_DWORD *)((char *)v3 + 32677); *((_DWORD *)v5 + 4) = *(_DWORD *)((char *)v3 + 32681); v5[20] = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v3 + 1156))(v3, v2) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1156))(v3) == 3 ) goto LABEL_8; v22 = 0; v23 = 0; v24 = 0; v6 = sub_639620(&unk_14D20898, (unsigned __int8 *)(a2 + 36)); if ( v6 == -1 || (v25 = v6, (_WORD)v6 == -1) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v25 = word_14D2118E; } sub_5936D0(&v28, v25, 7, 0); LOBYTE(v30) = 1; if ( !sub_593340((int)&v28) ) { LOBYTE(v30) = 0; sub_5937F0(); LABEL_8: v30 = -1; LABEL_9: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQReward"); } v8 = a2 + 68; v26 = 15; do { if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_WORD *)(v8 + 30) ) { v9 = sub_649140((int)&dword_1508B988, *(_WORD *)v8); v10 = v9; if ( v9 ) { switch ( *(_BYTE *)(v9 + 2) ) { case 1: v11 = sub_560FF0(v3); sub_593990(&v28, 7, v10, v11); break; case 2: v22 += *(_DWORD *)(v9 + 36); break; case 3: v23 += *(_DWORD *)(v9 + 36); break; case 4: v24 += *(_DWORD *)(v9 + 36); break; default: break; } } } v8 += 2; --v26; } while ( v26 ); v12 = off_849C18; v27 = sub_593BE0(&v28, 0, (int)((char *)off_849C18 + 36), 0, (int)((char *)v3 + 155582), 2); if ( !v27 ) { LOBYTE(v30) = 0; sub_5937F0(); v30 = -1; goto LABEL_9; } *(_WORD *)v12 = 22549; *((_DWORD *)v12 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v12 + 7) = *((_WORD *)v3 + 2); *((_WORD *)v12 + 12) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3) + 4); *(_DWORD *)((char *)v12 + 6) = v23; *(_DWORD *)((char *)v12 + 2) = v24; *(_DWORD *)((char *)v12 + 10) = 0; v13 = *(_DWORD *)((char *)v3 + 122); v14 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v14; v15 = &byte_85A2C0[256 * v14]; *(_DWORD *)v15 = *(_DWORD *)v13; *((_DWORD *)v15 + 1) = *(_DWORD *)(v13 + 4); *((_DWORD *)v15 + 2) = *(_DWORD *)(v13 + 8); v15[12] = 0; *((_WORD *)v12 + 13) = sub_639620(&unk_14D20404, v15); *((_DWORD *)v12 + 7) = 0; *((_DWORD *)v12 + 8) = 0; *((_DWORD *)v12 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); if ( sub_4C81E0(&off_849C18, v27 + 37) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v27 + 37); } v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v17 + 72))( v17, *(_WORD *)(v18 + 4), v23, 0, 1); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v19 + 76))(v19, *(_WORD *)(v20 + 4), v24, 1); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); ++*(_WORD *)(v21 + 4); sub_42D730(v3, v22, -1, 65535); LOBYTE(v30) = 0; sub_5937F0(); --dword_750CB8; v30 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KQReward"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D2118E: using guessed type __int16 word_14D2118E; // 1508B988: using guessed type int dword_1508B988; //----- (0052C670) -------------------------------------------------------- int __stdcall sub_52C670(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2884))(v2, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052C790) -------------------------------------------------------- int __stdcall sub_52C790(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052C880) -------------------------------------------------------- int __stdcall sub_52C880(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_KQ_REWARDSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_KQ_REWARDSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_KQ_REWARDSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_KQ_REWARDSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052C990) -------------------------------------------------------- int __stdcall sub_52C990(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_KQ_REWARDFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_KQ_REWARDFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_KQ_REWARDFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052CA80) -------------------------------------------------------- char __thiscall sub_52CA80(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x78u); result = 1; } else { result = 0; } return result; } //----- (0052CAC0) -------------------------------------------------------- char __thiscall sub_52CAC0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6D40D0; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6D40D0: using guessed type int (__stdcall *off_6D40D0)(int, int); //----- (0052CC40) -------------------------------------------------------- void *__thiscall sub_52CC40(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6D40D8; _LN21((char *)this + 24, 0x78u, 40, nullsub_2); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6D40A4; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6D40A4: using guessed type int (__thiscall *off_6D40A4)(void *, char); // 6D40D8: using guessed type int (__thiscall *off_6D40D8)(void *, char); //----- (0052CCD0) -------------------------------------------------------- int __thiscall sub_52CCD0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_499B70((int)&dword_D64C520, *(_WORD *)(a2 + 151)); if ( v3 ) sub_52C240(v2, v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D64C520: using guessed type int dword_D64C520; //----- (0052CD90) -------------------------------------------------------- int __thiscall sub_52CD90(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_499BC0((int)&dword_D64C520, a2); if ( v3 ) sub_52C240(v2, v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D64C520: using guessed type int dword_D64C520; //----- (0052CE50) -------------------------------------------------------- int __thiscall sub_52CE50(int this) { int v1; // esi@1 signed int v2; // eax@1 signed int v3; // edx@1 int v4; // edi@1 int v5; // ecx@3 bool v6; // zf@3 int v7; // ecx@3 int v8; // ecx@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@15 int v14; // ecx@15 signed int v16; // [sp+10h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6D40A4; *(_DWORD *)(this + 16) = 0; sub_52CAC0(this, 0x28u); *(_DWORD *)v1 = &off_6D40D8; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x78u, 40, (int)sub_5CF620, nullsub_2); v2 = 36; v3 = 2; v4 = v1 + 144; v16 = 8; do { if ( v3 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v2 - 36) == 0; v7 = v5 + v2 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 120; } if ( v3 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v2 - 24) == 0; v9 = v8 + v2 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v3 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v2 - 12) == 0; v11 = v10 + v2 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 120; } if ( v3 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v2) ) *(_DWORD *)(v12 + v2) = v4 + 240; } if ( v3 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v2 + 12) == 0; v14 = v13 + v2 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 360; } v2 += 60; v3 += 5; v4 += 600; --v16; } while ( v16 ); return v1; } // 6D40A4: using guessed type int (__thiscall *off_6D40A4)(void *, char); // 6D40D8: using guessed type int (__thiscall *off_6D40D8)(void *, char); //----- (0052CF80) -------------------------------------------------------- char __thiscall sub_52CF80(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v4; // eax@1 bool v6; // zf@3 int v7; // eax@3 int v8; // eax@4 unsigned __int16 v9; // ax@7 v2 = this; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1352))(a2); v4 = *(_DWORD *)v2; if ( !v3 ) { (*(void (__thiscall **)(void *, signed int, signed int))(v4 + 1728))(v2, 835, 65535); return 1; } v6 = (*(int (__thiscall **)(void *))(v4 + 2692))(v2) == 0; v7 = *(_DWORD *)v2; if ( v6 ) { if ( -1 == (unsigned __int16)(*(int (__thiscall **)(void *))(v7 + 1360))(v2) ) return 0; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1360))(v2); if ( sub_641C30(&dword_DA230A4, v9) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 1728))(v2, 845, 65535); return 1; } } else { v8 = (*(int (__thiscall **)(void *))(v7 + 2692))(v2); if ( sub_639E90(v8) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 1728))(v2, 845, 65535); return 1; } } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1344))(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 + 2720))(a2, v2) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 1728))(v2, 846, 65535); return 1; } return 0; } // DA230A4: using guessed type int dword_DA230A4; //----- (0052D0C0) -------------------------------------------------------- char __thiscall sub_52D0C0(void *this) { return sub_58FC80((int)((char *)this + 504)); } //----- (0052D0D0) -------------------------------------------------------- char __stdcall sub_52D0D0(int a1, int a2, int a3) { return 0; } //----- (0052D0E0) -------------------------------------------------------- int __thiscall sub_52D0E0(void *this) { signed int v1; // edi@1 char *v2; // ebx@1 signed __int16 v3; // ax@2 unsigned int v4; // esi@2 char *v5; // ecx@2 int result; // eax@2 unsigned int v7; // edx@9 char *v8; // ecx@9 v1 = 0; v2 = (char *)this + 521; do { v3 = sub_639500((int)&unk_1508B108, 0x3E8u); v4 = 0; v5 = v2; result = (unsigned __int16)v3 % 100 + 1; while ( result != *((_WORD *)v5 + 1) ) { if ( -1 != *(_WORD *)v5 ) { ++v4; v5 += 4; if ( v4 < 0x14 ) continue; } return result; } ++v1; } while ( v1 < 30 ); result = 1; do { v7 = 0; v8 = v2; while ( result != *((_WORD *)v8 + 1) ) { if ( -1 != *(_WORD *)v8 ) { ++v7; v8 += 4; if ( v7 < 0x14 ) continue; } return result; } ++result; } while ( result < 100 ); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDropItem::sd_GetPlayerDiceGameResult", 0); return 0; } //----- (0052D180) -------------------------------------------------------- char __thiscall sub_52D180(int this, __int16 a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // eax@1 unsigned int v9; // ebx@1 __int16 *v10; // edi@1 int v11; // eax@3 int v12; // esi@5 int v13; // eax@8 int v15; // [sp+Ch] [bp-4h]@1 v8 = off_849C18; *(_WORD *)off_849C18 = 12351; *((_WORD *)v8 + 1) = a2; *((_DWORD *)v8 + 6) = a8; *((_DWORD *)v8 + 1) = a3; *((_DWORD *)v8 + 2) = a4; *((_DWORD *)v8 + 3) = a5; *((_DWORD *)v8 + 4) = a6; *((_DWORD *)v8 + 5) = a7; v15 = this; *((_WORD *)v8 + 14) = *(_WORD *)(this + 377); v9 = 0; v10 = (__int16 *)(this + 521); while ( 1 ) { LOWORD(v11) = *v10; if ( -1 == *v10 ) break; LOBYTE(v11) = sub_4C0B10((void *)(this + 492), v11); if ( (_BYTE)v11 ) { v11 = sub_54DE90(&unk_13253630, *v10); v12 = v11; if ( v11 ) { if ( sub_4C81E0(&off_849C18, 30) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 764))(v12); LOBYTE(v11) = (*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v12, &off_849C18); } else { LOBYTE(v11) = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineDropItem::sd_DiceGameSendMsgResult : Packet Too Long", 30); } } } ++v9; v10 += 2; if ( v9 >= 0x14 ) break; this = v15; } return v11; } //----- (0052D270) -------------------------------------------------------- int __thiscall sub_52D270(int this) { int v1; // ebx@1 unsigned int v2; // eax@1 int v3; // edi@2 int v4; // edx@4 int v5; // ecx@6 unsigned __int64 v6; // qax@8 int v7; // esi@10 v1 = this; v2 = *(_WORD *)(this + 377); if ( v2 >= dword_14D20894 || (v3 = dword_14D21184 + 40 * v2) == 0 || !*(_DWORD *)v3 ) goto LABEL_6; v4 = **(_WORD **)v3; if ( (_WORD)v4 != *(_WORD *)(this + 377) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v4 + 10000 * v2); LABEL_6: v5 = 0; goto LABEL_7; } v5 = dword_14D21184 + 40 * v2; LABEL_7: if ( v5 ) { v7 = dword_14D129E8; *(_DWORD *)(v1 + 480) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(v5 + 4) + 174)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v6 = (unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(v5 + 4) + 170)) * (unsigned __int64)(unsigned int)&unk_10624DD3; *(_DWORD *)(v1 + 484) = v7 + (HIDWORD(v6) >> 6); } else { LODWORD(v6) = sub_639100(&unk_86DDD8, (int)"ShineDropItem::sd_DropTimeReStart : No Item Data", 0); } return v6; } // 14D129E8: using guessed type int dword_14D129E8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0052D340) -------------------------------------------------------- char __thiscall sub_52D340(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 char v4; // bl@1 __int16 *v5; // edi@1 int v6; // esi@4 int v7; // eax@5 int v8; // edx@5 int v9; // eax@6 unsigned __int16 v10; // ax@8 signed int v12; // [sp+Ch] [bp-4h]@1 v2 = this; LOBYTE(v3) = sub_58FC60((int)((char *)this + 504), 0); v4 = a2; v5 = (__int16 *)((char *)v2 + 521); v12 = 20; do { if ( v4 ) { LOWORD(v3) = *v5; if ( -1 != *v5 ) { v3 = sub_54DE90(&unk_13253630, *v5); v6 = v3; if ( v3 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2692))(v3); v8 = *(_DWORD *)v6; if ( v7 ) { v9 = (*(int (__thiscall **)(int))(v8 + 2692))(v6); LOBYTE(v3) = sub_639E60(v9, 0); } else { LOWORD(v3) = (*(int (__thiscall **)(int))(v8 + 1360))(v6); if ( -1 == (_WORD)v3 ) goto LABEL_10; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1360))(v6); LOBYTE(v3) = sub_641C60(&dword_DA230A4, v10, 0); } v4 = 0; } } } LABEL_10: *(_DWORD *)v5 = 65535; v5 += 2; --v12; } while ( v12 ); return v3; } // DA230A4: using guessed type int dword_DA230A4; //----- (0052D400) -------------------------------------------------------- int __thiscall sub_52D400(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@1 int v4; // eax@1 int v5; // edx@1 int v6; // eax@1 int v7; // ST04_4@1 int v8; // eax@1 int v10; // [sp+0h] [bp-24h]@0 int v11; // [sp+4h] [bp-20h]@0 int v12; // [sp+8h] [bp-1Ch]@0 int v13; // [sp+Ch] [bp-18h]@1 void *v14; // [sp+10h] [bp-14h]@1 int v15; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [bp-4h]@1 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 12308; v4 = (*(int (__stdcall **)(int, int, int, int, void *, int))(*(_DWORD *)this + 1388))(v10, v11, v12, v13, v14, v15); *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)v4; *(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(v4 + 4); *(_DWORD *)((char *)v3 + 10) = *(_DWORD *)(v4 + 8); *(_DWORD *)((char *)v3 + 14) = *(_DWORD *)(v4 + 12); *(_DWORD *)((char *)v3 + 18) = *(_DWORD *)(v4 + 16); *((_WORD *)v3 + 11) = *((_WORD *)v2 + 77704); v5 = *((_DWORD *)v2 + 38853); v15 = 28; v14 = &off_849C18; *((_DWORD *)v3 + 6) = v5; sub_428B40(&v13, v14, v15); v6 = *(_DWORD *)((char *)v2 + 102); v15 = 65535; v14 = 0; v13 = (int)&v13; v7 = v6; v16 = 0; v8 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v8, v7, 0, 0, v13, (int)v14, v15); v16 = -1; return sub_428C20(&v13); } //----- (0052D4D0) -------------------------------------------------------- char __thiscall sub_52D4D0(void *this, int a2, int a3, __int16 a4, int a5, __int16 a6) { void *v6; // esi@1 int (__thiscall *v7)(_DWORD); // eax@1 int v8; // eax@1 int v9; // edx@1 int v10; // eax@2 char result; // al@6 void *v12; // esi@7 int v13; // eax@7 int v14; // eax@7 int v15; // ebx@7 int v16; // eax@9 int v17; // eax@10 int (**v18)(); // [sp+10h] [bp-24h]@1 void *v19; // [sp+14h] [bp-20h]@1 int v20; // [sp+18h] [bp-1Ch]@4 int v21; // [sp+1Ch] [bp-18h]@4 int v22; // [sp+20h] [bp-14h]@1 int v23; // [sp+24h] [bp-10h]@7 int v24; // [sp+30h] [bp-4h]@1 v6 = this; v22 = (int)"ItemInventory::ii_PickAll"; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_PickAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_PickAll"; dword_750AB8[dword_750CB8++] = -1; v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1176); v24 = 0; v8 = v7(a2); v18 = &off_6A86A4; v19 = v6; v9 = *(_DWORD *)v6; if ( v8 ) v10 = (*(int (__thiscall **)(void *, int))(v9 + 4))(v6, v8); else v10 = (*(int (__thiscall **)(void *))(v9 + 8))(v6); v21 = v10; v18 = (int (**)())&off_6A86B4; LOBYTE(v24) = 1; v20 = 0; if ( (unsigned __int8)off_6A86B4(&v18) || sub_63F7F0(&v18) ) { v23 = (**(int (__stdcall ***)(_DWORD))v19)(v20); sub_63F850(v23, (const void *)a5); v12 = off_849C18; *((_WORD *)off_849C18 + 1) = a4; *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)v12 = 13340; *((_DWORD *)v12 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v12 + 16) = (a6 << 10) | v20 & 0x3FF; v13 = *(_DWORD *)(a2 + 122); *((_DWORD *)v12 + 3) = *(_DWORD *)v13; *((_DWORD *)v12 + 4) = *(_DWORD *)(v13 + 4); *((_DWORD *)v12 + 5) = *(_DWORD *)(v13 + 8); v14 = *(_DWORD *)(a2 + 102); *((_DWORD *)v12 + 6) = *(_DWORD *)v14; *((_DWORD *)v12 + 7) = *(_DWORD *)(v14 + 4); *(_DWORD *)((char *)v12 + 34) = *(_DWORD *)a5; *(_DWORD *)((char *)v12 + 38) = *(_DWORD *)(a5 + 4); *((_WORD *)v12 + 21) = *(_WORD *)(a5 + 8); *((_WORD *)v12 + 22) = 44; v15 = sub_63D0C0((void *)a5, *(_DWORD *)(v23 + 112), *(_WORD *)(a5 + 8), (int)((char *)v12 + 46)) - (_DWORD)((char *)v12 + 46) + 46; if ( sub_4C81E0(&off_849C18, v15) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_PickAll : Packet Too Long", v15); } (*(void (**)(void))(*(_DWORD *)a3 + 1356))(); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1540))(a2); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int))(*(_DWORD *)v17 + 20))(v17); --dword_750CB8; v18 = &off_6A86A4; v24 = -1; sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_PickAll"); result = 1; } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 1728))(a2, 838, 65535); --dword_750CB8; v18 = &off_6A86A4; v24 = -1; sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_PickAll"); result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0052D760) -------------------------------------------------------- char __stdcall sub_52D760(int a1, int a2, __int16 a3, int a4, int a5, __int16 a6, __int16 a7) { void *v7; // esi@3 int v8; // eax@3 int v9; // ecx@3 int v10; // ST0C_4@3 int v11; // eax@3 int v12; // esi@3 int v13; // eax@5 void (__thiscall *v14)(_DWORD); // edx@6 int v15; // eax@6 int v17; // [sp+14h] [bp-14h]@1 __int16 v18; // [sp+18h] [bp-10h]@6 int v19; // [sp+24h] [bp-4h]@1 int v20; // [sp+38h] [bp+10h]@3 sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_PickMerge"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_PickMerge"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v17 = 0; if ( a4 ) v17 = (*(int (__stdcall **)(int))(**(_DWORD **)(a4 + 112) + 28))(a4 + 8); (*(void (__stdcall **)(int, int))(**(_DWORD **)(a4 + 112) + 32))(a4 + 8, a5); v7 = off_849C18; *((_WORD *)off_849C18 + 1) = a3; *((_DWORD *)v7 + 1) = (*(int (**)(void))(*(_DWORD *)a1 + 836))(); *(_WORD *)v7 = 13343; v8 = (*(int (**)(void))(*(_DWORD *)a2 + 1352))(); *(_DWORD *)((char *)v7 + 10) = *(_DWORD *)v8; *(_DWORD *)((char *)v7 + 14) = *(_DWORD *)(v8 + 4); *(_DWORD *)((char *)v7 + 22) = *(_DWORD *)a4; v9 = *(_DWORD *)(a4 + 4); *((_WORD *)v7 + 15) = 32; v20 = a6 & 0x3FF; *(_DWORD *)((char *)v7 + 26) = v9; *((_WORD *)v7 + 16) = (a7 << 10) | a6 & 0x3FF; *((_WORD *)v7 + 4) = *(_WORD *)(a4 + 8); *(_DWORD *)((char *)v7 + 18) = v17; v10 = *(_WORD *)(a4 + 8); v11 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(a4 + 8)); v12 = sub_63D0C0((void *)a4, v11, v10, (int)((char *)v7 + 34)) - (_DWORD)((char *)v7 + 34) + 34; if ( sub_4C81E0(&off_849C18, v12) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_PickMerge : Packet Too Long", v12); } (*(void (**)(void))(*(_DWORD *)a2 + 1356))(); v14 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1540); v18 = v20 | (a7 << 10); v14(a1); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)v15 + 20))(v15); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_PickMerge"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0052D950) -------------------------------------------------------- int __thiscall sub_52D950(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 unsigned __int16 v6; // ax@1 unsigned __int16 v7; // bx@1 int v8; // eax@3 int v9; // edi@6 int v10; // eax@7 int v11; // esi@7 int (__thiscall *v12)(_DWORD); // eax@9 unsigned int v13; // eax@9 int (__thiscall *v14)(_DWORD); // eax@10 unsigned int v15; // edi@14 signed int v16; // esi@16 int v17; // edi@19 void *v18; // eax@22 int v19; // eax@24 int v21[5]; // [sp+10h] [bp-38h]@7 int v22; // [sp+24h] [bp-24h]@1 int v23; // [sp+28h] [bp-20h]@3 int v24; // [sp+2Ch] [bp-1Ch]@1 void *v25; // [sp+30h] [bp-18h]@1 unsigned int v26; // [sp+34h] [bp-14h]@1 unsigned int v27; // [sp+38h] [bp-10h]@1 int v28; // [sp+44h] [bp-4h]@1 v4 = this; v25 = this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute"; dword_750AB8[dword_750CB8++] = -1; v28 = 0; v24 = 0; v5 = *(_DWORD *)v4; v26 = dword_14D129E8; v6 = (*(int (__thiscall **)(void *))(v5 + 1360))(v4); v7 = v6; v27 = 0; if ( v6 < 0xFA0u ) { v8 = *(_BYTE *)(208 * v6 + dword_DA230A4); v23 = v8; if ( v8 < 2 || v8 > 5 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_partyitemdistribute : Invalid party member number", v8); v28 = -1; } else { v9 = 0; if ( v8 > 0 ) { do { v21[v9] = 0; v10 = sub_4CB7D0(v7, v9); v11 = v10; if ( v10 ) { if ( (unsigned int)sub_402710((int)v25, v10) <= 0xF4240 ) { v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1052); ++v27; v21[v9] = v11; v13 = v12(v11); if ( v26 > v13 ) { v14 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1052); v24 = v11; v26 = v14(v11); } } } ++v9; } while ( v9 < v23 ); v4 = v25; } if ( *(_WORD *)(a3 + 8) == word_14D21188 ) { v15 = *(_DWORD *)(a3 + 10) / v27; if ( !v15 ) v15 = 1; v16 = 0; do (*(void (__stdcall **)(unsigned int))(*(_DWORD *)v21[v16++] + 1936))(v15); while ( v16 < 5 ); (*(void (**)(void))(*(_DWORD *)a2 + 1356))(); } else { v17 = v24; if ( v24 ) { if ( *(_WORD *)(v24 + 4) != *((_WORD *)v4 + 2) ) { v18 = off_849C18; *(_WORD *)off_849C18 = 12315; *((_WORD *)v18 + 1) = *(_WORD *)(a3 + 8); *((_WORD *)v18 + 2) = *(_WORD *)(v17 + 4); if ( sub_4C81E0(&off_849C18, 6) ) { v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v19 + 12))(v19, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute : Packet Too Long", 6); } } (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v17 + 1944))(v17, a2, a3, a4); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute : Null picker", 0); } } v28 = -1; } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_partyitemdistribute : Too large party handle", v6); v28 = -1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; // 14D129E8: using guessed type int dword_14D129E8; // 14D21188: using guessed type __int16 word_14D21188; // 52D950: using guessed type int var_38[5]; //----- (0052DBC0) -------------------------------------------------------- int __thiscall sub_52DBC0(void *this, int a2) { int v2; // esi@1 int v3; // ebx@3 int v4; // eax@6 unsigned int v5; // edi@7 int v6; // esi@8 unsigned int v7; // ett@9 unsigned int v8; // ebx@9 int v9; // ecx@10 int v10; // eax@11 unsigned int v11; // ebx@16 int v12; // ecx@17 void *v13; // edi@24 void *v14; // eax@25 int v15; // edx@25 int v16; // eax@27 int v18; // [sp-4h] [bp-84h]@2 unsigned int v19; // [sp+10h] [bp-70h]@6 int v20[20]; // [sp+14h] [bp-6Ch]@10 int v21; // [sp+64h] [bp-1Ch]@1 void *v22; // [sp+68h] [bp-18h]@1 int v23; // [sp+6Ch] [bp-14h]@3 unsigned int v24; // [sp+70h] [bp-10h]@9 int v25; // [sp+7Ch] [bp-4h]@1 v2 = (int)this; v22 = this; v21 = (int)"ShineObjectClass::ShinePlayer::sp_RaidItemsidtribute"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RaidItemsidtribute"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RaidItemsidtribute"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; if ( a2 ) { v3 = (*(int (**)(void))(*(_DWORD *)a2 + 1352))(); v23 = v3; if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2692))(v2) && (v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2692))(v2), sub_5CBAA0((int)&v19, *(_WORD *)(v4 + 4), v2)) ) { v5 = v19; if ( v19 ) { v6 = 0; if ( *(_WORD *)(v3 + 8) == word_14D21188 ) { v7 = *(_DWORD *)(v3 + 10); v24 = v7 / v19; v8 = v7 % v19; if ( v19 ) { do { v9 = v20[v6]; if ( v9 ) { v10 = v24; if ( v8 ) { v10 = v24 + 1; --v8; } (*(void (__stdcall **)(int))(*(_DWORD *)v9 + 1936))(v10); v5 = v19; } ++v6; } while ( v6 < v5 ); } (*(void (**)(void))(*(_DWORD *)a2 + 1356))(); } else { v11 = 0; v24 = dword_14D129E8; if ( v19 ) { do { v12 = v20[v11]; if ( v12 ) { if ( (*(int (**)(void))(*(_DWORD *)v12 + 1052))() < v24 ) { v6 = v20[v11]; v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1052))(v20[v11]); } v5 = v19; } ++v11; } while ( v11 < v5 ); } if ( v6 ) { v13 = v22; if ( *(_WORD *)(v6 + 4) != *((_WORD *)v22 + 2) ) { v14 = off_849C18; v15 = v23; *(_WORD *)off_849C18 = 12315; *((_WORD *)v14 + 1) = *(_WORD *)(v15 + 8); *((_WORD *)v14 + 2) = *(_WORD *)(v6 + 4); if ( sub_4C81E0(&off_849C18, 6) ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 764))(v13); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v16 + 12))(v16, v13, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute : Packet Too Long", 6); } } (*(void (__thiscall **)(int, int, int, _DWORD))(*(_DWORD *)v6 + 1944))(v6, a2, v23, *(_WORD *)(a2 + 4)); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_partyitemdistribute : Null picker", 0); } } } v25 = -1; } else { v25 = -1; } --dword_750CB8; v18 = (int)"ShineObjectClass::ShinePlayer::sp_RaidItemsidtribute"; } else { --dword_750CB8; v25 = -1; v18 = (int)"ShineObjectClass::ShinePlayer::sp_RaidItemsidtribute"; } return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D21188: using guessed type __int16 word_14D21188; // 52DBC0: using guessed type int var_6C[20]; //----- (0052DE10) -------------------------------------------------------- char __thiscall sub_52DE10(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@1 int v6; // ST18_4@1 unsigned __int16 v7; // ST18_2@3 int v8; // eax@3 void *v10; // eax@9 void *v11; // ebx@9 int v12; // eax@9 __int16 v13; // ST18_2@9 int v14; // eax@9 int (__thiscall *v15)(_DWORD); // edx@16 int v16; // eax@16 char v17; // al@17 int v18; // edi@21 int v19; // eax@23 int v20; // eax@25 char v21; // al@27 signed int v22; // [sp-8h] [bp-50h]@4 signed int v23; // [sp-4h] [bp-4Ch]@4 int v24; // [sp-4h] [bp-4Ch]@15 int (**v25)(); // [sp+10h] [bp-38h]@16 int *v26; // [sp+24h] [bp-24h]@16 int v27; // [sp+28h] [bp-20h]@16 int v28; // [sp+2Ch] [bp-1Ch]@16 int v29; // [sp+30h] [bp-18h]@1 int v30; // [sp+34h] [bp-14h]@7 int v31; // [sp+38h] [bp-10h]@3 int v32; // [sp+44h] [bp-4h]@1 v4 = (int)this; v29 = (int)"ShineObjectClass::ShinePlayer::so_ply_PickupItem"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_PickupItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_PickupItem"; dword_750AB8[dword_750CB8++] = -1; v5 = a3 + 8; v6 = *(_WORD *)(a3 + 8); v32 = 0; sub_5B6900(v4 + 32665, v6); if ( *(_WORD *)(a3 + 8) == word_14D21188 ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1936))(v4, *(_DWORD *)(a3 + 10)); (*(void (**)(void))(*(_DWORD *)a2 + 1356))(); LABEL_29: v24 = a4; goto LABEL_30; } v7 = *(_WORD *)v5; *(_WORD *)(v4 + 155408) = *(_WORD *)(a3 + 8); v8 = sub_418CB0((int)&dword_14D20890, v7); v31 = v8; if ( !v8 ) { v23 = 65535; v22 = 835; LABEL_5: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 1728))(v4, v22, v23); goto LABEL_6; } v30 = *(_DWORD *)v8; if ( !v30 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 1728))(v4, 835, 65535); (*(void (**)(void))(*(_DWORD *)a2 + 1356))(); goto LABEL_6; } v10 = sub_63ACA0(dword_1508B168, *(_WORD *)(v4 + 155408)); v11 = v10; v12 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v10 + 28))(v10, v5); v13 = *(_WORD *)(v4 + 155408); *(_DWORD *)(v4 + 155412) = v12; v14 = sub_526890((void *)v4, v13); if ( !sub_6485C0((int)&unk_133597C0, *(_WORD *)(v4 + 155408), (unsigned int)(*(_DWORD *)(v4 + 155412) + v14)) ) { v23 = 65535; v22 = 842; goto LABEL_5; } if ( *(_DWORD *)(*(_DWORD *)v31 + 98) != 3 ) *(_DWORD *)(v4 + 155596) = dword_14D129E8; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v11 + 24))(v11) ) { if ( sub_52D4D0((void *)(v4 + 36484), v4, a2, *(_WORD *)(v4 + 4), a3, 9) == 1 ) { v24 = a4; LABEL_30: sub_52D400((void *)v4, v24); goto LABEL_31; } LABEL_6: --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_PickupItem"); return 0; } sub_43BB70((int)&v25, v4 + 36484, *(_WORD *)(v4 + 155408), v4 + 160312); v15 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v32) = 1; v16 = v15(v4); v26 = (int *)&v25; v27 = v16; v28 = 9; if ( sub_486D40(&v26) ) { do { v18 = (**(int (__stdcall ***)(_DWORD))v26[1])(v26[2]); if ( v18 != 0 ) { v19 = (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v18 + 112) + 24))(); if ( (_BYTE)v19 ) { v20 = *(_DWORD *)(v4 + 155412) + (*(int (__stdcall **)(int))(**(_DWORD **)(v18 + 112) + 28))(v18 + 8); if ( (unsigned int)v20 <= *(_DWORD *)(v30 + 106) ) { v17 = sub_52D760(v4, a2, *(_WORD *)(v4 + 4), v18, v20, v26[2], 9); goto LABEL_18; } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : Invalid unlot item", v19); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : Invalid cell", 0); } } while ( sub_486DA0((void **)&v26) ); v21 = sub_52D4D0((void *)(v4 + 36484), v4, a2, *(_WORD *)(v4 + 4), a3, 9); v25 = &off_6A86A4; if ( !v21 ) goto LABEL_6; LOBYTE(v32) = 0; goto LABEL_29; } v17 = sub_52D4D0((void *)(v4 + 36484), v4, a2, *(_WORD *)(v4 + 4), a3, 9); LABEL_18: if ( v17 != 1 ) { v25 = &off_6A86A4; goto LABEL_6; } sub_52D400((void *)v4, a4); v25 = &off_6A86A4; LABEL_31: --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_PickupItem"); return 1; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; // 14D21188: using guessed type __int16 word_14D21188; //----- (0052E1A0) -------------------------------------------------------- int __thiscall sub_52E1A0(void *this, int a2) { void *v2; // esi@1 __int16 v3; // dx@1 unsigned __int8 v4; // cf@1 void *v5; // edi@1 int v6; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_PickupMoney"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_PickupMoney"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_WORD *)v2 + 2); v4 = __CFADD__(a2, *(_DWORD *)((char *)v2 + 32719)); *(_DWORD *)((char *)v2 + 32719) += a2; *(_DWORD *)((char *)v2 + 32723) += v4; v5 = off_849C18; *((_WORD *)off_849C18 + 1) = v3; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_WORD *)v5 = 13368; *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v5 + 3) = -1; *((_DWORD *)v5 + 4) = -1; *((_DWORD *)v5 + 5) = a2; if ( sub_4C81E0(&off_849C18, 24) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_PickupMoney : Packet Too Long", 24); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1096))(v2); (*(void (__thiscall **)(char *, signed int))(*((_DWORD *)v2 + 14672) + 20))((char *)v2 + 58688, 1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_PickupMoney"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0052E2E0) -------------------------------------------------------- int __thiscall sub_52E2E0(void *this, unsigned int a2, char a3) { void *v3; // esi@1 bool v4; // cf@2 void *v5; // edi@4 int v6; // eax@4 int v7; // eax@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"; dword_750AB8[dword_750CB8++] = -1; if ( a3 ) { v4 = __CFADD__(a2, *(_DWORD *)((char *)v3 + 32719)); *(_DWORD *)((char *)v3 + 32719) += a2; *(_DWORD *)((char *)v3 + 32723) += v4; } else { v4 = *(_DWORD *)((char *)v3 + 32719) < a2; *(_DWORD *)((char *)v3 + 32719) -= a2; *(_DWORD *)((char *)v3 + 32723) -= v4; } v5 = off_849C18; *((_WORD *)off_849C18 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v5 = 13434; v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_BYTE *)v5 + 16) = a3; *((_DWORD *)v5 + 2) = v6; *((_DWORD *)v5 + 3) = a2; if ( sub_4C81E0(&off_849C18, 17) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_IncDecMoney : Packet Too Long", 17); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1096))(v3); (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v3 + 14672) + 20))((char *)v3 + 58688, 1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0052E430) -------------------------------------------------------- int __stdcall sub_52E430(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKALLSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PICKALLSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1728))(v2, 833, 65535); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 20))(v3, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKALLSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052E530) -------------------------------------------------------- int __stdcall sub_52E530(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKALLFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PICKALLFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1728))(v2, *(_WORD *)(a1 + 2), 65535); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1668, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKALLFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052E630) -------------------------------------------------------- int __stdcall sub_52E630(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMERGESUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PICKMERGESUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1728))(v2, 833, 65535); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 20))(v3, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMERGESUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052E730) -------------------------------------------------------- int __stdcall sub_52E730(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMERGEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PICKMERGEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1728))(v2, *(_WORD *)(a1 + 2), 65535); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1668, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMERGEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052E830) -------------------------------------------------------- int __stdcall sub_52E830(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMONEYSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PICKMONEYSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1728))(v2, 833, 65535); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 20))(v3, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMONEYSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052E930) -------------------------------------------------------- int __stdcall sub_52E930(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMONEYFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_PICKMONEYFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1728))(v2, *(_WORD *)(a1 + 2), 65535); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1668, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_PICKMONEYFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052EA30) -------------------------------------------------------- int __stdcall sub_52EA30(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 20))(v3, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052EB10) -------------------------------------------------------- int __stdcall sub_52EB10(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1668, 0, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0052EBF0) -------------------------------------------------------- int __thiscall sub_52EBF0(void *this, __int16 a2, __int16 a3) { void *v3; // esi@1 void *v4; // eax@1 int v5; // eax@2 __int16 v6; // cx@3 int v7; // eax@7 __int16 v9; // [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 int v13; // [sp+11Ch] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_itempickresult"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_itempickresult"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 12298; *((_WORD *)v4 + 5) = a3; v12 = 0; if ( a2 == 833 ) { *((_WORD *)v4 + 1) = *((_WORD *)v3 + 77704); *((_DWORD *)v4 + 1) = *((_DWORD *)v3 + 38853); *((_WORD *)v4 + 4) = 833; v5 = *(_DWORD *)((char *)v3 + 122); if ( v5 ) { v6 = *((_WORD *)v3 + 77704); v10 = *((_WORD *)v3 + 2); v9 = v6; sub_5070A0(*(void **)(v5 + 68), (int)sub_50B470, (int)&v9); } } else { *((_WORD *)v4 + 1) = -1; *((_DWORD *)v4 + 1) = 0; *((_WORD *)v4 + 4) = a2; } if ( sub_4C81E0(&off_849C18, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_itempickresult : Packet Too Long", 12); } --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_itempickresult"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0052ED70) -------------------------------------------------------- int __thiscall sub_52ED70(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@7 int v6; // edi@7 int v7; // eax@9 int v8; // eax@10 int v9; // ebx@19 bool v10; // zf@22 int v11; // eax@22 int v12; // eax@28 int v13; // ST08_4@29 void *v14; // eax@29 void *v15; // eax@29 void *v16; // ecx@34 int v17; // eax@41 int v18; // eax@46 int v19; // ST08_4@47 unsigned __int16 v20; // ax@47 int v21; // eax@47 int v23; // [sp-4h] [bp-28h]@8 int v24; // [sp-4h] [bp-28h]@34 int v25; // [sp+14h] [bp-10h]@13 int v26; // [sp+14h] [bp-10h]@25 int v27; // [sp+14h] [bp-10h]@44 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13244894 & 1) ) { dword_13244894 |= 1u; word_13244890 = 70; atexit(nullsub_100); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244890) ) goto LABEL_62; if ( *((_WORD *)v4 + 42864) & 0xC ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 1728))(v4, 834, 65535); goto LABEL_58; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { LABEL_62: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 1728))(v4, 834, 65535); LABEL_58: v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } v5 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v6 = v5; if ( !v5 ) { (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 843, *(_WORD *)(a2 + 2)); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } LOBYTE(v7) = sub_548D30((int)v4, v5); if ( !v7 ) { LABEL_12: (*(void (__thiscall **)(_DWORD, signed int, signed int))(*(_DWORD *)v4 + 1728))(v4, 835, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } v8 = sub_427B40(*(_DWORD *)((char *)v4 + 118), *(_DWORD *)(v6 + 118)); if ( !(_BYTE)v8 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : Try to pick item in another dimension", v8); goto LABEL_12; } v25 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 1 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : try to pick nonitem object", v25); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 835, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } if ( (unsigned int)sub_402710((int)v4, v6) >= 0x3D09 ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 836, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *))(*(_DWORD *)v6 + 1340))(v6, v4) ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 837, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1352))(v6); if ( !v9 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 835, 65535); LABEL_21: v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2728))(v6) == 0; v11 = *(_DWORD *)v4; if ( !v10 ) { (*(void (__thiscall **)(void *, signed int, signed int))(v11 + 1728))(v4, 844, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } if ( (*(int (__thiscall **)(void *))(v11 + 2692))(v4) ) { v26 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)); if ( v26 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3612))(v6) == 1 ) { v12 = 0; } else { v13 = *(_DWORD *)v26; v14 = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2692))(v4); v15 = sub_639A60(v14); v12 = sub_6418B0(v15, v13); } switch ( v12 ) { case 0: if ( *(_WORD *)(v9 + 8) == word_14D21188 ) goto LABEL_34; (*(void (__thiscall **)(void *, int, int, _DWORD))(*(_DWORD *)v4 + 1944))(v4, v6, v9, *(_WORD *)(a2 + 2)); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; case 1: *((_DWORD *)v4 + 38900) = dword_14D129E8; LABEL_34: v24 = v6; v16 = v4; goto LABEL_35; case 2: if ( *(_WORD *)(v9 + 8) != word_14D21188 ) goto LABEL_49; sub_52DBC0(v4, v6); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; case 3: v24 = v6; v16 = v4; if ( *(_WORD *)(v9 + 8) == word_14D21188 ) { LABEL_35: sub_52DBC0(v16, v24); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } if ( sub_52CF80(v4, v6) == 1 ) goto LABEL_21; (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 8195, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; break; default: v17 = *(_DWORD *)(*(_DWORD *)v26 + 118); goto LABEL_42; } goto LABEL_59; } LABEL_26: (*(void (__thiscall **)(void *, int, int, _DWORD))(*(_DWORD *)v4 + 1944))(v4, v6, v9, *(_WORD *)(a2 + 2)); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1360))(v4) == -1 ) { LABEL_49: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1944))(v4, v6, v9, *(_WORD *)(a2 + 2)); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; goto LABEL_59; } v27 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v9 + 8)); if ( !v27 ) goto LABEL_26; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3612))(v6) == 1 ) { v18 = 0; } else { v19 = *(_DWORD *)v27; v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1360))(v4); v21 = sub_641CA0(&dword_DA230A4, v20); v18 = sub_6418B0((void *)(v21 + 184), v19); } switch ( v18 ) { case 0: goto LABEL_49; case 2: if ( *(_WORD *)(v9 + 8) != word_14D21188 ) goto LABEL_49; sub_52D950(v4, v6, v9, *(_WORD *)(a2 + 2)); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; break; case 3: if ( *(_WORD *)(v9 + 8) == word_14D21188 ) goto LABEL_53; if ( sub_52CF80(v4, v6) == 1 ) goto LABEL_21; (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1728))(v4, 8195, 65535); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; break; case 1: LABEL_53: sub_52D950(v4, v6, v9, *(_WORD *)(a2 + 2)); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; break; default: v17 = *(_DWORD *)(*(_DWORD *)v27 + 118); LABEL_42: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : Undef item type ", v17); v23 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ"; break; } LABEL_59: --dword_750CB8; return sub_467660((int)&unk_D020420, v23); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; // 13244890: using guessed type __int16 word_13244890; // 13244894: using guessed type int dword_13244894; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; // 14D21188: using guessed type __int16 word_14D21188; //----- (0052F340) -------------------------------------------------------- char __thiscall sub_52F340(void *this, int a2) { void *v2; // ebx@1 int v3; // esi@1 int v4; // eax@1 int v5; // edx@1 int v6; // eax@2 int v8; // eax@6 unsigned __int16 v9; // di@8 signed int v10; // eax@12 int v11; // ebx@15 int v12; // eax@16 int v13; // eax@17 int v14; // edi@17 int v15; // eax@24 signed int v16; // esi@24 int v17; // eax@27 signed int v18; // ecx@27 void *v19; // eax@29 unsigned int v20; // edi@29 int v21; // ebx@30 int v22; // esi@31 int v23; // eax@33 int v24; // [sp-8h] [bp-84h]@9 int v25; // [sp-4h] [bp-80h]@9 unsigned int v26; // [sp+10h] [bp-6Ch]@1 int v27[20]; // [sp+14h] [bp-68h]@31 int v28; // [sp+64h] [bp-18h]@1 void *v29; // [sp+68h] [bp-14h]@1 int v30; // [sp+6Ch] [bp-10h]@12 int v31; // [sp+78h] [bp-4h]@1 int v32; // [sp+84h] [bp+8h]@8 v2 = this; v29 = this; v28 = (int)"ShineObjectClass::ShineDropItem::so_DiceItemPickInit"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_DiceItemPickInit"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_DiceItemPickInit"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; sub_5CA900((int)&v26); v3 = a2; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2); v5 = *(_DWORD *)a2; if ( v4 ) { v6 = (*(int (__thiscall **)(int))(v5 + 2692))(a2); if ( sub_5CBAA0((int)&v26, *(_WORD *)(v6 + 4), a2) && v26 >= 2 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2692))(a2); sub_639E60(v8, 1); goto LABEL_24; } v31 = -1; LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_DiceItemPickInit"); return 0; } if ( -1 != (unsigned __int16)(*(int (__thiscall **)(int))(v5 + 1360))(a2) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2); v32 = v9; if ( v9 >= 0xFA0u ) { v25 = v9; v24 = (int)"ShineDropItem::so_DiceItemPickInit : Too large party handle"; LABEL_10: sub_639100(&unk_86DDD8, v24, v25); LABEL_11: v31 = -1; goto LABEL_4; } v10 = *(_BYTE *)(208 * v9 + dword_DA230A4); v30 = v10; if ( v10 < 2 || v10 > 5 ) { v25 = v10; v24 = (int)"ShineDropItem::so_DiceItemPickInit : Invalid party member number"; goto LABEL_10; } v11 = 0; if ( v10 > 0 ) { do { v12 = sub_4CB7D0(v9, v11); if ( v12 ) { v13 = sub_409730(v12); v14 = v13; if ( v13 && (unsigned int)sub_402710(v3, v13) <= 0xF4240 ) sub_5CA950(&v26, v14); v9 = v32; } ++v11; } while ( v11 < v30 ); } if ( v26 < 2 ) goto LABEL_11; sub_641C60(&dword_DA230A4, v9, 1); v2 = v29; } LABEL_24: sub_58FC60((int)((char *)v2 + 504), 1); v15 = *(_DWORD *)(dword_1324488C + 56); v16 = 15; if ( v15 && *(_DWORD *)(v15 + 40) ) v16 = *(_BYTE *)sub_626BC0(dword_1324488C + 4, 0); sub_650330((int)((char *)v2 + 504), 10 * v16); v17 = (int)((char *)v2 + 523); v18 = 20; do { *(_WORD *)(v17 - 2) = -1; *(_WORD *)v17 = 0; v17 += 4; --v18; } while ( v18 ); v19 = off_849C18; *(_WORD *)off_849C18 = 12347; v20 = 0; *((_WORD *)v19 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v19 + 1) = v16; if ( v26 ) { v21 = (int)((char *)v2 + 521); do { v22 = v27[v20]; if ( sub_4C81E0(&off_849C18, 8) ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v22 + 764))(v22); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v23 + 12))(v23, v22, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDropItem::so_DiceItemPickInit : Packet Too Long", 8); } *(_WORD *)v21 = *(_WORD *)(v22 + 4); ++v20; v21 += 4; } while ( v20 < v26 ); } --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_DiceItemPickInit"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA230A4: using guessed type int dword_DA230A4; // 1324488C: using guessed type int dword_1324488C; // 52F340: using guessed type int var_68[20]; //----- (0052F630) -------------------------------------------------------- char __thiscall sub_52F630(void *this, __int16 a2, int a3) { void *v3; // eax@1 void *v4; // edi@1 int v5; // eax@1 int v6; // esi@1 int v7; // eax@2 char v8; // al@5 unsigned int v9; // ebx@8 __int16 *v10; // edi@8 int v11; // eax@10 int v12; // esi@10 int v13; // ecx@12 int v14; // eax@19 void *v16; // [sp+8h] [bp-4h]@1 int v17; // [sp+14h] [bp+8h]@6 v3 = off_849C18; v4 = this; *(_WORD *)off_849C18 = 12350; *((_WORD *)v3 + 1) = a2; v16 = this; *((_DWORD *)v3 + 1) = a3; v5 = sub_54DE90(&unk_13253630, a2); v6 = v5; if ( v5 ) { v7 = (**(int (__thiscall ***)(_DWORD))v5)(v5); if ( v7 ) { while ( (_UNKNOWN *)v7 != &unk_132541F4 ) { v7 = *(_DWORD *)(v7 + 4); if ( !v7 ) goto LABEL_5; } v8 = 1; } else { LABEL_5: v8 = 0; } v5 = v8 != 0 ? v6 : 0; v17 = v5; if ( v5 && *(_DWORD *)(v5 + 122) ) { v9 = 0; v10 = (__int16 *)((char *)v4 + 521); do { LOWORD(v5) = *v10; if ( -1 == *v10 ) break; v11 = sub_54DE90(&unk_13253630, *v10); v5 = sub_409730(v11); v12 = v5; if ( v5 ) { v5 = *(_DWORD *)(v5 + 122); if ( v5 ) { v13 = *(_DWORD *)(v17 + 122); if ( *(_DWORD *)v13 == *(_DWORD *)v5 ) { if ( *(_DWORD *)(v13 + 4) == *(_DWORD *)(v5 + 4) ) { if ( *(_DWORD *)(v13 + 8) == *(_DWORD *)(v5 + 8) ) { LOBYTE(v5) = sub_4C0B10((char *)v16 + 492, *v10); if ( (_BYTE)v5 ) { if ( sub_4C81E0(&off_849C18, 8) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 764))(v12); LOBYTE(v5) = (*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))( v14, v12, &off_849C18); } else { LOBYTE(v5) = (unsigned int)sub_639100( &unk_86DDD8, (int)"ShineDropItem::sd_DiceMyGameResultBroadCast : Packet Too Long", 8); } } } } } } } ++v9; v10 += 2; } while ( v9 < 0x14 ); } } return v5; } //----- (0052F790) -------------------------------------------------------- char __thiscall sub_52F790(void *this, char a2) { int v2; // esi@1 unsigned int v3; // ebx@2 int v4; // edi@2 __int16 v5; // dx@8 char result; // al@10 int v7; // eax@11 int v8; // eax@16 int v9; // edi@16 int v10; // ecx@17 int v11; // eax@18 int v12; // ST04_4@26 int v13; // eax@26 int v14; // eax@26 int v15; // edx@28 int v16; // eax@28 __int16 v17; // [sp-1Ch] [bp-34h]@23 int v18; // [sp-18h] [bp-30h]@23 int v19; // [sp-14h] [bp-2Ch]@23 int v20; // [sp-10h] [bp-28h]@23 int v21; // [sp-Ch] [bp-24h]@23 int v22; // [sp-8h] [bp-20h]@23 int v23; // [sp-4h] [bp-1Ch]@8 unsigned int v24; // [sp+Ch] [bp-Ch]@1 int v25; // [sp+10h] [bp-8h]@2 unsigned int v26; // [sp+14h] [bp-4h]@2 v2 = (int)this; v24 = 0; while ( 1 ) { v3 = 0; v26 = -1; v25 = 0; v4 = v2 + 523; do { if ( -1 == *(_WORD *)(v4 - 2) ) break; if ( !sub_4C0B10((void *)(v2 + 492), *(_WORD *)(v4 - 2)) ) *(_WORD *)v4 = -2; if ( a2 == 1 ) { if ( !*(_WORD *)v4 ) { v5 = *(_WORD *)(v4 - 2); v23 = 65534; *(_WORD *)v4 = -2; sub_52F630((void *)v2, v5, v23); } } else { if ( !a2 ) { result = 0; if ( !*(_WORD *)v4 ) return result; } } v7 = *(_WORD *)v4; if ( -2 != (_WORD)v7 && v25 < v7 ) { v25 = *(_WORD *)v4; v26 = v3; } ++v3; v4 += 4; } while ( v3 < 0x14 ); if ( v26 == -1 ) { v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; strncpy((char *)&v18, byte_6A492E, 0x14u); v17 = 8201; goto LABEL_24; } v8 = sub_54DE90(&unk_13253630, *(_WORD *)(v2 + 4 * v26 + 521)); v9 = v8; if ( v8 ) { v10 = *(_DWORD *)(v2 + 122); if ( v10 ) { v11 = *(_DWORD *)(v8 + 122); if ( v11 ) { if ( **(_WORD **)(v10 + 16) == **(_WORD **)(v11 + 16) ) break; } } } *(_WORD *)(v2 + 4 * v26 + 523) = -2; ++v24; if ( v24 >= 0x14 ) return (unsigned int)sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDropItem::sd_DiceGameResult", 0); } if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int, _DWORD))(*(_DWORD *)v9 + 1944))( v9, v2, v2 + 369, *(_WORD *)(v2 + 4)) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1388))(v9); } else { sub_4C0A80(v2 + 492, v9); sub_52D270(v2); v23 = 65535; v22 = 0; v18 = (int)sub_565CD0; v19 = 0; v20 = 0; v21 = 0; v12 = *(_DWORD *)(v2 + 102); v13 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v2, v13, v12, 0, 0, (int)sub_565CD0, 0, 0, 0, 0, 65535); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1388))(v9); } v23 = *(_WORD *)(v2 + 4 * v26 + 523); v18 = *(_DWORD *)v14; v19 = *(_DWORD *)(v14 + 4); v20 = *(_DWORD *)(v14 + 8); v15 = *(_DWORD *)(v14 + 12); v16 = *(_DWORD *)(v14 + 16); v21 = v15; v22 = v16; v17 = 8200; LABEL_24: sub_52D180(v2, v17, v18, v19, v20, v21, v22, v23); return sub_52D340((void *)v2, 1); } //----- (0052F9B0) -------------------------------------------------------- char __thiscall sub_52F9B0(void *this, int a2, char a3, int a4) { void *v4; // edi@1 int v5; // edx@2 int v6; // eax@3 char v7; // al@6 char result; // al@13 unsigned int v9; // esi@15 int v10; // eax@15 v4 = this; if ( a2 ) { v6 = (**(int (__thiscall ***)(_DWORD))a2)(a2); if ( v6 ) { while ( (_UNKNOWN *)v6 != &unk_132541F4 ) { v6 = *(_DWORD *)(v6 + 4); if ( !v6 ) goto LABEL_6; } v7 = 1; } else { LABEL_6: v7 = 0; } v5 = v7 != 0 ? a2 : 0; } else { v5 = 0; } if ( a4 ) *(_WORD *)a4 = 8192; if ( v5 ) { v9 = 0; v10 = (int)((char *)v4 + 521); while ( 1 ) { if ( -1 == *(_WORD *)v10 ) { LABEL_19: if ( a4 ) *(_WORD *)a4 = 8195; return 0; } if ( *(_WORD *)(v5 + 4) == *(_WORD *)v10 ) break; ++v9; v10 += 4; if ( v9 >= 0x14 ) goto LABEL_19; } if ( *(_WORD *)((char *)v4 + 4 * v9 + 523) ) { if ( a4 ) { *(_WORD *)a4 = 8197; return 0; } return 0; } if ( a3 == 1 ) *(_WORD *)((char *)v4 + 4 * v9 + 523) = sub_52D0E0(v4); else *(_WORD *)((char *)v4 + 4 * v9 + 523) = -2; sub_52F630(v4, *(_WORD *)((char *)v4 + 4 * v9 + 521), *(_WORD *)((char *)v4 + 4 * v9 + 523)); sub_52F790(v4, 0); result = 1; } else { if ( a4 ) *(_WORD *)a4 = 8194; result = 0; } return result; } //----- (0052FAD0) -------------------------------------------------------- int __thiscall sub_52FAD0(int this, int a2, int a3) { int result; // eax@1 result = 248 * *(_DWORD *)(this + 15876) + this + 4; *(_BYTE *)(result + 8 * a2 + 220) = 1; *(_WORD *)(result + 8 * a2 + 221) = *(_WORD *)a3; return result; } //----- (0052FB00) -------------------------------------------------------- int __thiscall sub_52FB00(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = 248 * *(_DWORD *)(this + 15876) + this + 4; result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 2416))( *(_WORD *)(248 * *(_DWORD *)(this + 15876) + this + 8), 248 * *(_DWORD *)(this + 15876) + this + 248, 1); *(_DWORD *)(v2 + 240) = result; return result; } //----- (0052FB40) -------------------------------------------------------- int __thiscall sub_52FB40(int this, __int16 a2) { int v2; // edx@1 int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 180); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = *(_DWORD *)(this + 176); v5 = *(_DWORD *)(this + 176); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = v4 + 8 * v3; } return result; } //----- (0052FB80) -------------------------------------------------------- int __stdcall sub_52FB80(__int16 a1, int a2, int a3, int a4) { __int16 v4; // ax@1 int v5; // ebx@1 int v6; // ebx@5 __int16 v7; // di@5 int v8; // eax@5 int v9; // ecx@5 int v10; // eax@5 int v11; // esi@5 int v12; // eax@5 int v13; // eax@5 int v14; // edi@5 int v15; // eax@5 int v16; // eax@5 int v17; // eax@5 int v18; // ecx@5 void *v19; // esi@5 int v20; // eax@5 int v21; // eax@5 int v22; // eax@7 int v23; // esi@9 int v24; // eax@9 int v25; // esi@10 int v26; // eax@11 int v27; // eax@12 int v28; // eax@12 int v29; // eax@13 int v30; // eax@15 __int16 v31; // cx@16 int v32; // eax@18 __int16 v33; // dx@18 int v34; // ecx@18 int v35; // eax@18 int v36; // edx@18 __int16 v37; // cx@18 int v38; // ecx@18 int v39; // eax@18 int v40; // edx@18 int v41; // eax@18 int v42; // edi@18 int v43; // esi@18 int v44; // edx@18 int v45; // eax@18 int v46; // eax@19 int v47; // ecx@20 int v48; // eax@27 int v50; // [sp-70h] [bp-B4h]@18 int v51; // [sp-6Ch] [bp-B0h]@18 int v52; // [sp-68h] [bp-ACh]@18 int v53; // [sp-64h] [bp-A8h]@18 int v54; // [sp-60h] [bp-A4h]@18 int v55; // [sp-5Ch] [bp-A0h]@18 int v56; // [sp-58h] [bp-9Ch]@18 int v57; // [sp-54h] [bp-98h]@18 int v58; // [sp-50h] [bp-94h]@18 int v59; // [sp-4Ch] [bp-90h]@18 int v60; // [sp-48h] [bp-8Ch]@18 int v61; // [sp-44h] [bp-88h]@18 int v62; // [sp-40h] [bp-84h]@18 int v63; // [sp-3Ch] [bp-80h]@18 int v64; // [sp-38h] [bp-7Ch]@18 int v65; // [sp-34h] [bp-78h]@18 int v66; // [sp-30h] [bp-74h]@18 int v67; // [sp-2Ch] [bp-70h]@18 int v68; // [sp-28h] [bp-6Ch]@18 int v69; // [sp-24h] [bp-68h]@18 int v70; // [sp-20h] [bp-64h]@18 int v71; // [sp-1Ch] [bp-60h]@18 int v72; // [sp-18h] [bp-5Ch]@18 int v73; // [sp-14h] [bp-58h]@18 int v74; // [sp-10h] [bp-54h]@18 int v75; // [sp-Ch] [bp-50h]@18 int v76; // [sp-8h] [bp-4Ch]@18 int v77; // [sp-4h] [bp-48h]@5 int v78; // [sp+0h] [bp-44h]@2 int v79; // [sp+10h] [bp-34h]@18 int v80; // [sp+14h] [bp-30h]@18 int v81; // [sp+18h] [bp-2Ch]@18 int v82; // [sp+1Ch] [bp-28h]@18 int v83; // [sp+20h] [bp-24h]@18 int v84; // [sp+24h] [bp-20h]@18 int v85; // [sp+28h] [bp-1Ch]@18 int v86; // [sp+2Ch] [bp-18h]@18 int v87; // [sp+30h] [bp-14h]@1 void *v88; // [sp+34h] [bp-10h]@3 int v89; // [sp+40h] [bp-4h]@1 int v90; // [sp+4Ch] [bp+8h]@11 int v91; // [sp+4Ch] [bp+8h]@12 int v92; // [sp+4Ch] [bp+8h]@12 int v93; // [sp+4Ch] [bp+8h]@13 int v94; // [sp+4Ch] [bp+8h]@15 int v95; // [sp+4Ch] [bp+8h]@18 int v96; // [sp+50h] [bp+Ch]@12 v87 = (int)"ItemRelocationManager::irm_Move"; sub_4675D0((int)&unk_D020420, (int)"ItemRelocationManager::irm_Move"); dword_7508B8[dword_750CB8] = (int)"ItemRelocationManager::irm_Move"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)(*(_DWORD *)(a4 + 4) + 8); v5 = *(_WORD *)(*(_DWORD *)(a4 + 4) + 8) == -1; v89 = 0; if ( v5 ) { v88 = off_849C18; if ( v4 == -1 ) { v6 = a2; v7 = *(_WORD *)(*(_DWORD *)(a3 + 4) + 8); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); v9 = 248 * *(_DWORD *)(v8 + 15876) + v8 + 4; *(_DWORD *)v8 = 4; *(_DWORD *)v9 = 4; *(_WORD *)(v9 + 4) = v7; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2412))(v6); *(_DWORD *)(248 * *(_DWORD *)(v10 + 15876) + v10 + 240) = 0; v11 = *(_DWORD *)(a3 + 4); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2412))(v6); v13 = 248 * *(_DWORD *)(v12 + 15876) + v12 + 4; *(_BYTE *)(v13 + 6) = 1; v11 += 8; memcpy((void *)(v13 + 9), (const void *)v11, 0x64u); v11 += 100; *(_WORD *)(v13 + 109) = *(_WORD *)v11; *(_BYTE *)(v13 + 111) = *(_BYTE *)(v11 + 2); v14 = a3; *(_WORD *)(v13 + 7) = *(_WORD *)a3; v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2412))(v6); v16 = 248 * *(_DWORD *)(v15 + 15876) + v15 + 4; *(_BYTE *)(v16 + 220) = 1; *(_WORD *)(v16 + 221) = *(_WORD *)a4; v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2412))(v6); *(_DWORD *)(v18 + v17 + 244) = (*(int (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v6 + 2416))( v6, *(_WORD *)(248 * *(_DWORD *)(v17 + 15876) + v17 + 8), 248 * *(_DWORD *)(v17 + 15876) + v17 + 248, 1); v19 = v88; *((_WORD *)v88 + 1) = a1; *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); *(_WORD *)v19 = 13352; *((_DWORD *)v19 + 2) = *(_DWORD *)(a3 + 8); *((_DWORD *)v19 + 3) = *(_DWORD *)(a4 + 8); *((_WORD *)v19 + 8) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6) + 4); *((_WORD *)v19 + 13) = *(_WORD *)a4; v20 = *(_DWORD *)(a3 + 4); *(_DWORD *)((char *)v19 + 18) = *(_DWORD *)v20; *(_DWORD *)((char *)v19 + 22) = *(_DWORD *)(v20 + 4); *((_WORD *)v19 + 14) = *(_WORD *)a3; *((_WORD *)v19 + 15) = *(_WORD *)(*(_DWORD *)(a3 + 4) + 8); v21 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v14 + 4) + 112) + 28))(*(_DWORD *)(v14 + 4) + 8); v77 = 36; *((_DWORD *)v19 + 8) = v21; if ( sub_4C81E0(&off_849C18, v77) ) { v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Move : Packet Too Long", 36); } if ( (*(_WORD *)a3 & 0xFC00) == 8192 ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v24 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, _DWORD))(*(_DWORD *)v23 + 84))( v23, *(_WORD *)(v24 + 4), *(_WORD *)a3 & 0x3FF, *(_DWORD *)(a3 + 4)); } v25 = a4; if ( (*(_WORD *)a4 & 0xFC00) == 8192 ) { v90 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, _DWORD))(*(_DWORD *)v90 + 84))( v90, *(_WORD *)(v26 + 4), *(_WORD *)a4 & 0x3FF, *(_DWORD *)(a4 + 4)); } v91 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, int, int))(*(_DWORD *)v91 + 48))( v91, *(_WORD *)(v27 + 4), *(_DWORD *)(a3 + 4), a3, a4); v92 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v96 = *(_DWORD *)(a3 + 4); v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, _DWORD, int, int, int))(*(_DWORD *)v92 + 64))( v92, *(_WORD *)(v28 + 4), *(_DWORD *)(a4 + 4), v96, a4, a3); if ( (*(_WORD *)a3 & 0xFC00) == 8192 ) { v93 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int, _DWORD))(*(_DWORD *)v93 + 80))( v93, *(_WORD *)(v29 + 4), *(_WORD *)a3 & 0x3FF, *(_DWORD *)(a3 + 4), -1, 0); } if ( (*(_WORD *)a4 & 0xFC00) == 8192 ) { v94 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int, _DWORD))(*(_DWORD *)v94 + 80))( v94, *(_WORD *)(v30 + 4), *(_WORD *)a4 & 0x3FF, *(_DWORD *)(a4 + 4), -1, 0); } v31 = *(_WORD *)a3; if ( !(*(_WORD *)a3 & 0xFC00) || !(*(_WORD *)a4 & 0xFC00) ) { v32 = *(_DWORD *)(a3 + 4); v79 = *(_DWORD *)v32; v80 = *(_DWORD *)(v32 + 4); v33 = *(_WORD *)(v32 + 8); HIWORD(v81) = v31; v34 = *(_DWORD *)(v32 + 112); LOWORD(v81) = v33; v82 = (*(int (__stdcall **)(int))(*(_DWORD *)v34 + 28))(v32 + 8); v35 = *(_DWORD *)(a4 + 4); v36 = *(_DWORD *)(v35 + 4); v83 = *(_DWORD *)v35; v37 = *(_WORD *)(v35 + 8); v84 = v36; LOWORD(v36) = *(_WORD *)a4; LOWORD(v85) = v37; v38 = *(_DWORD *)(v35 + 112); HIWORD(v85) = v36; v39 = (*(int (__stdcall **)(int))(*(_DWORD *)v38 + 28))(v35 + 8); v40 = *(_DWORD *)v6; v86 = v39; v41 = (*(int (__thiscall **)(int))(v40 + 2004))(v6); v42 = *(_DWORD *)(a3 + 4); v43 = v41; v95 = v41; v44 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6) + 4); v45 = *(_DWORD *)v43; memcpy(&v50, (const void *)v42, 0x6Cu); LOWORD(v77) = *(_WORD *)(v42 + 108); BYTE2(v77) = *(_BYTE *)(v42 + 110); (*(void (__thiscall **)(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, int, int, int, int, int, int, int, int, int, int, int, int, int))(v45 + 124))( v95, v44, v79, v80, v81, v82, v83, v84, v85, v86, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77); v14 = a3; v25 = a4; } v46 = __RTDynamicCast(v6, 0, &off_84BF24, &off_84BF50, 0); if ( v46 ) { v47 = v46 + 161784; if ( v46 != -161784 ) { if ( *(_DWORD *)v47 == 5 || *(_DWORD *)v47 == 6 ) { if ( (*(_WORD *)v14 & 0xFC00) == 9216 && (*(_WORD *)v25 & 0xFC00) == 9216 && *(_WORD *)(v46 + 161804) == (*(_WORD *)v14 & 0x3FF) ) *(_WORD *)(v46 + 161804) = *(_WORD *)v25 & 0x3FF; } } } v48 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 2004))(v6, v78); ++*(_WORD *)(v48 + 4); --dword_750CB8; v89 = -1; v78 = (int)"ItemRelocationManager::irm_Move"; } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Move : Dest is not empty", v4 == -1); (*(void (__stdcall **)(signed int, signed int, signed int, int))(*(_DWORD *)a2 + 776))(12, 12, 580, v78); --dword_750CB8; v89 = -1; v78 = (int)"ItemRelocationManager::irm_Move"; } } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Move : Dest is not empty", 0); (*(void (__stdcall **)(signed int, signed int, signed int, int))(*(_DWORD *)a2 + 776))(12, 12, 580, v78); --dword_750CB8; v89 = -1; v78 = (int)"ItemRelocationManager::irm_Move"; } return sub_467660((int)&unk_D020420, v78); } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 14D16430: using guessed type int dword_14D16430; //----- (005301B0) -------------------------------------------------------- int __stdcall sub_5301B0(__int16 a1, int a2, int a3, int a4) { int v4; // ecx@1 void *v5; // esi@1 int v6; // ebx@1 int v7; // edi@5 int v8; // eax@5 int v9; // ebx@5 __int16 v10; // si@6 int v11; // eax@6 int v12; // ecx@6 int v13; // eax@6 int v14; // esi@6 int v15; // eax@6 int v16; // eax@6 int v17; // esi@6 int v18; // eax@6 int v19; // eax@6 int v20; // eax@6 int v21; // eax@6 int v22; // eax@6 int v23; // eax@6 int v24; // eax@6 int v25; // eax@7 int v26; // eax@7 int v27; // eax@7 int v28; // eax@9 int v29; // esi@10 int v30; // eax@10 int v31; // eax@10 __int16 v32; // cx@10 int v33; // eax@12 __int16 v34; // dx@12 int v35; // ecx@12 int v36; // eax@12 int v37; // edx@12 __int16 v38; // cx@12 int v39; // ecx@12 int v40; // eax@14 int v41; // esi@14 int v42; // edi@14 int v43; // edx@14 int v44; // eax@14 int v45; // ecx@14 int v46; // eax@15 int v47; // edi@15 int v48; // esi@15 __int16 v49; // si@21 __int16 v50; // cx@22 __int16 v51; // ax@22 __int16 v52; // si@22 int v53; // eax@26 int v55; // [sp-48h] [bp-8Ch]@14 int v56; // [sp-44h] [bp-88h]@14 int v57; // [sp-40h] [bp-84h]@14 int v58; // [sp-3Ch] [bp-80h]@14 int v59; // [sp-38h] [bp-7Ch]@14 int v60; // [sp-34h] [bp-78h]@14 int v61; // [sp-30h] [bp-74h]@14 int v62; // [sp-2Ch] [bp-70h]@14 int v63; // [sp-28h] [bp-6Ch]@14 int v64; // [sp-24h] [bp-68h]@16 int v65; // [sp-20h] [bp-64h]@16 int v66; // [sp-1Ch] [bp-60h]@16 int v67; // [sp-18h] [bp-5Ch]@16 int v68; // [sp-14h] [bp-58h]@16 int v69; // [sp-10h] [bp-54h]@16 int v70; // [sp-Ch] [bp-50h]@16 int v71; // [sp-8h] [bp-4Ch]@16 int v72; // [sp-4h] [bp-48h]@7 int v73; // [sp+0h] [bp-44h]@14 int v74; // [sp+4h] [bp-40h]@14 int v75; // [sp+8h] [bp-3Ch]@14 int v76; // [sp+Ch] [bp-38h]@14 int v77; // [sp+10h] [bp-34h]@12 int v78; // [sp+14h] [bp-30h]@12 int v79; // [sp+18h] [bp-2Ch]@12 int v80; // [sp+1Ch] [bp-28h]@12 int v81; // [sp+20h] [bp-24h]@12 int v82; // [sp+24h] [bp-20h]@12 int v83; // [sp+28h] [bp-1Ch]@12 int v84; // [sp+2Ch] [bp-18h]@12 int v85; // [sp+30h] [bp-14h]@1 void *v86; // [sp+34h] [bp-10h]@1 int v87; // [sp+38h] [bp-Ch]@14 int v88; // [sp+3Ch] [bp-8h]@14 int v89; // [sp+40h] [bp-4h]@1 int v90; // [sp+44h] [bp+0h]@14 int v91; // [sp+4Ch] [bp+8h]@10 int v92; // [sp+4Ch] [bp+8h]@10 int v93; // [sp+4Ch] [bp+8h]@14 int v94; // [sp+4Ch] [bp+8h]@15 int v95; // [sp+50h] [bp+Ch]@10 int v96; // [sp+50h] [bp+Ch]@10 v85 = (int)"ItemRelocationManager::irm_Exchange"; sub_4675D0((int)&unk_D020420, (int)"ItemRelocationManager::irm_Exchange"); dword_7508B8[dword_750CB8] = (int)"ItemRelocationManager::irm_Exchange"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(a4 + 4); v5 = off_849C18; v6 = *(_WORD *)(v4 + 8) != -1; v89 = 0; v86 = off_849C18; if ( v6 ) { if ( (*(_WORD *)a4 & 0xFC00) == 4096 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(12, 12, 588); --dword_750CB8; v89 = -1; } else { v7 = a3; v8 = *(_DWORD *)(a3 + 4); v9 = a2; if ( *(_WORD *)(v8 + 8) == *(_WORD *)(v4 + 8) ) { v10 = *(_WORD *)(v8 + 8); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); v12 = 248 * *(_DWORD *)(v11 + 15876) + v11 + 4; *(_DWORD *)v11 = 5; *(_DWORD *)v12 = 5; *(_WORD *)(v12 + 4) = v10; v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); *(_DWORD *)(248 * *(_DWORD *)(v13 + 15876) + v13 + 240) = 0; v14 = *(_DWORD *)(a3 + 4); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v16 = 248 * *(_DWORD *)(v15 + 15876) + v15 + 4; *(_BYTE *)(v16 + 6) = 1; v14 += 8; memcpy((void *)(v16 + 9), (const void *)v14, 0x64u); v14 += 100; *(_WORD *)(v16 + 109) = *(_WORD *)v14; *(_BYTE *)(v16 + 111) = *(_BYTE *)(v14 + 2); *(_WORD *)(v16 + 7) = *(_WORD *)a3; v17 = *(_DWORD *)(a4 + 4); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v19 = 248 * *(_DWORD *)(v18 + 15876) + v18 + 4; *(_BYTE *)(v19 + 112) = 1; v17 += 8; memcpy((void *)(v19 + 115), (const void *)v17, 0x64u); v17 += 100; *(_WORD *)(v19 + 215) = *(_WORD *)v17; *(_BYTE *)(v19 + 217) = *(_BYTE *)(v17 + 2); *(_WORD *)(v19 + 113) = *(_WORD *)a4; v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v21 = 248 * *(_DWORD *)(v20 + 15876) + v20 + 4; *(_BYTE *)(v21 + 220) = 1; *(_WORD *)(v21 + 221) = *(_WORD *)a3; v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v23 = 248 * *(_DWORD *)(v22 + 15876) + v22 + 4; *(_BYTE *)(v23 + 228) = 1; *(_WORD *)(v23 + 229) = *(_WORD *)a4; v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v7 = a3; *(_DWORD *)(248 * *(_DWORD *)(v24 + 15876) + v24 + 244) = (*(int (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)a2 + 2416))( a2, *(_WORD *)(248 * *(_DWORD *)(v24 + 15876) + v24 + 8), 248 * *(_DWORD *)(v24 + 15876) + v24 + 248, 1); v5 = v86; } *((_WORD *)v5 + 1) = a1; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)v5 = 13355; *((_DWORD *)v5 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(a4 + 8); *((_WORD *)v5 + 8) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *((_WORD *)v5 + 13) = *(_WORD *)a4; v25 = *(_DWORD *)(v7 + 4); *(_DWORD *)((char *)v5 + 18) = *(_DWORD *)v25; *(_DWORD *)((char *)v5 + 22) = *(_DWORD *)(v25 + 4); *((_WORD *)v5 + 18) = *(_WORD *)v7; v26 = *(_DWORD *)(a4 + 4); *((_DWORD *)v5 + 7) = *(_DWORD *)v26; *((_DWORD *)v5 + 8) = *(_DWORD *)(v26 + 4); *((_WORD *)v5 + 19) = *(_WORD *)(*(_DWORD *)(v7 + 4) + 8); *((_WORD *)v5 + 20) = *(_WORD *)(*(_DWORD *)(a4 + 4) + 8); *(_DWORD *)((char *)v5 + 42) = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v7 + 4) + 112) + 28))(*(_DWORD *)(v7 + 4) + 8); v27 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(a4 + 4) + 112) + 28))(*(_DWORD *)(a4 + 4) + 8); v72 = 50; *(_DWORD *)((char *)v5 + 46) = v27; if ( sub_4C81E0(&off_849C18, v72) ) { v28 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v28); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Exchange : Packet Too Long", 50); } v29 = a4; v91 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v95 = *(_DWORD *)(a4 + 4); v30 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); (*(void (__thiscall **)(int, _DWORD, _DWORD, int, int, int))(*(_DWORD *)v91 + 64))( v91, *(_WORD *)(v30 + 4), *(_DWORD *)(v7 + 4), v95, v7, a4); v92 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); v96 = *(_DWORD *)(v7 + 4); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9); (*(void (__thiscall **)(int, _DWORD, _DWORD, int, int, int))(*(_DWORD *)v92 + 64))( v92, *(_WORD *)(v31 + 4), *(_DWORD *)(v29 + 4), v96, v29, v7); v32 = *(_WORD *)v7; if ( !(*(_WORD *)v7 & 0xFC00) || !(*(_WORD *)a4 & 0xFC00) ) { v33 = *(_DWORD *)(v7 + 4); v77 = *(_DWORD *)v33; v78 = *(_DWORD *)(v33 + 4); v34 = *(_WORD *)(v33 + 8); HIWORD(v79) = v32; v35 = *(_DWORD *)(v33 + 112); LOWORD(v79) = v34; v80 = (*(int (__stdcall **)(int))(*(_DWORD *)v35 + 28))(v33 + 8); v36 = *(_DWORD *)(a4 + 4); v37 = *(_DWORD *)(v36 + 4); v81 = *(_DWORD *)v36; v38 = *(_WORD *)(v36 + 8); v82 = v37; LOWORD(v37) = *(_WORD *)a4; LOWORD(v83) = v38; v39 = *(_DWORD *)(v36 + 112); HIWORD(v83) = v37; v84 = (*(int (__stdcall **)(int))(*(_DWORD *)v39 + 28))(v36 + 8); if ( *(_WORD *)v7 & 0xFC00 || (*(_WORD *)a4 & 0xFC00) != 9216 ) { v46 = (*(int (__thiscall **)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, void *, int, int, int, int))(*(_DWORD *)v9 + 2004))( v9, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90); v47 = *(_DWORD *)(v7 + 4); v48 = v46; v94 = v46; v43 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9) + 4); v44 = *(_DWORD *)v48; memcpy(&v63, (const void *)v47, 0x6Cu); LOWORD(v90) = *(_WORD *)(v47 + 108); BYTE2(v90) = *(_BYTE *)(v47 + 110); v59 = v81; v60 = v82; v61 = v83; v62 = v84; v55 = v77; v56 = v78; v57 = v79; v58 = v80; v45 = v94; } else { v40 = (*(int (__thiscall **)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, void *, int, int, int, int))(*(_DWORD *)v9 + 2004))( v9, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90); v41 = *(_DWORD *)(a4 + 4); v42 = v40; v93 = v40; v43 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9) + 4); v44 = *(_DWORD *)v42; memcpy(&v63, (const void *)v41, 0x6Cu); v41 += 108; LOWORD(v90) = *(_WORD *)v41; BYTE2(v90) = *(_BYTE *)(v41 + 2); v59 = v81; v60 = v82; v61 = v83; v62 = v84; v55 = v77; v56 = v78; v57 = v79; v58 = v80; v45 = v93; } (*(void (__thiscall **)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int))(v44 + 124))( v45, v43, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72); v29 = a4; v7 = a3; } if ( v9 != -161784 && (*(_DWORD *)(v9 + 161784) == 5 || *(_DWORD *)(v9 + 161784) == 6) ) { if ( (*(_WORD *)v7 & 0xFC00) == 9216 ) { v49 = *(_WORD *)v29; if ( (v49 & 0xFC00) == 9216 ) { v50 = *(_WORD *)(v9 + 161804); v51 = *(_WORD *)v7 & 0x3FF; v52 = v49 & 0x3FF; if ( v50 == v51 ) { *(_WORD *)(v9 + 161804) = v52; } else { if ( v50 == v52 ) *(_WORD *)(v9 + 161804) = v51; } } } } v53 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9); ++*(_WORD *)(v53 + 4); --dword_750CB8; v89 = -1; } } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Exchange : Dest is not empty", 0); (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(12, 12, 580); --dword_750CB8; v89 = -1; } return sub_467660((int)&unk_D020420, (int)"ItemRelocationManager::irm_Exchange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005307D0) -------------------------------------------------------- int __stdcall sub_5307D0(__int16 a1, int a2, int a3, int a4, int a5) { int v5; // ecx@1 __int16 v6; // ax@1 bool v7; // zf@1 __int16 v8; // si@3 int v9; // eax@3 int v10; // ecx@3 int v11; // eax@3 int v12; // esi@3 int v13; // eax@3 int v14; // eax@3 int v15; // ecx@3 int v16; // esi@3 int v17; // eax@3 int v18; // eax@3 int v19; // edi@3 int v20; // eax@3 int v21; // eax@3 int v22; // eax@3 int v23; // eax@3 int v24; // esi@3 int v25; // edi@3 int v26; // eax@3 int (__thiscall *v27)(_DWORD, _DWORD); // edx@3 int v28; // eax@3 int v29; // esi@3 int v30; // edi@3 int v31; // eax@3 int v32; // ecx@3 int v33; // eax@3 int v34; // eax@3 int v35; // eax@3 int v36; // eax@5 int v37; // esi@6 int (__thiscall *v38)(_DWORD); // eax@6 int v39; // eax@6 int v40; // eax@6 void (__stdcall *v41)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@6 __int16 v42; // ax@6 int v43; // edi@8 int v44; // ecx@8 __int16 v45; // dx@8 int v46; // ecx@8 int v47; // eax@8 int v48; // eax@8 int v49; // edx@8 __int16 v50; // cx@8 int v51; // ecx@8 int v52; // eax@8 int v53; // edx@8 int v54; // esi@8 int (__thiscall *v55)(_DWORD); // eax@8 int v56; // edx@8 int v57; // eax@8 int v58; // eax@9 char v60; // [sp-70h] [bp-134h]@8 int v61; // [sp-6Ch] [bp-130h]@8 int v62; // [sp-68h] [bp-12Ch]@8 int v63; // [sp-64h] [bp-128h]@8 int v64; // [sp-60h] [bp-124h]@8 int v65; // [sp-5Ch] [bp-120h]@8 int v66; // [sp-58h] [bp-11Ch]@8 int v67; // [sp-54h] [bp-118h]@8 int v68; // [sp-50h] [bp-114h]@8 int v69; // [sp-4Ch] [bp-110h]@8 int v70; // [sp-48h] [bp-10Ch]@8 int v71; // [sp-44h] [bp-108h]@8 int v72; // [sp-40h] [bp-104h]@8 int v73; // [sp-3Ch] [bp-100h]@8 int v74; // [sp-38h] [bp-FCh]@8 int v75; // [sp-34h] [bp-F8h]@8 int v76; // [sp-30h] [bp-F4h]@8 int v77; // [sp-2Ch] [bp-F0h]@8 int v78; // [sp-28h] [bp-ECh]@8 int v79; // [sp-24h] [bp-E8h]@8 int v80; // [sp-20h] [bp-E4h]@8 int v81; // [sp-1Ch] [bp-E0h]@8 int v82; // [sp-18h] [bp-DCh]@8 int v83; // [sp-14h] [bp-D8h]@8 int v84; // [sp-10h] [bp-D4h]@8 int v85; // [sp-Ch] [bp-D0h]@8 int v86; // [sp-8h] [bp-CCh]@8 int v87; // [sp-4h] [bp-C8h]@1 int v88; // [sp+Ch] [bp-B8h]@1 int v89; // [sp+10h] [bp-B4h]@8 int v90; // [sp+14h] [bp-B0h]@8 int v91; // [sp+18h] [bp-ACh]@8 int v92; // [sp+1Ch] [bp-A8h]@8 int v93; // [sp+20h] [bp-A4h]@8 int v94; // [sp+24h] [bp-A0h]@8 int v95; // [sp+28h] [bp-9Ch]@8 int v96; // [sp+2Ch] [bp-98h]@8 int v97; // [sp+30h] [bp-94h]@1 int v98; // [sp+34h] [bp-90h]@3 int v99; // [sp+38h] [bp-8Ch]@6 int v100; // [sp+3Ch] [bp-88h]@1 int v101; // [sp+40h] [bp-84h]@1 char v102; // [sp+44h] [bp-80h]@3 char v103; // [sp+4Ch] [bp-78h]@3 __int16 v104; // [sp+B0h] [bp-14h]@3 char v105; // [sp+B2h] [bp-12h]@3 unsigned int v106; // [sp+B4h] [bp-10h]@1 int v107; // [sp+C0h] [bp-4h]@1 int v108; // [sp+C4h] [bp+0h]@1 v106 = (unsigned int)&v108 ^ __security_cookie; v87 = (unsigned int)&v108 ^ __security_cookie; v97 = a3; v100 = a4; v88 = (int)"ItemRelocationManager::irm_Merge"; sub_4675D0((int)&unk_D020420, (int)"ItemRelocationManager::irm_Merge"); dword_7508B8[dword_750CB8] = (int)"ItemRelocationManager::irm_Merge"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(a3 + 4); v101 = (int)off_849C18; v6 = *(_WORD *)(v5 + 8); v7 = v6 == *(_WORD *)(*(_DWORD *)(v100 + 4) + 8); v107 = 0; if ( v7 ) { v8 = v6; v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 2412))(a2, v87); v10 = 248 * *(_DWORD *)(v9 + 15876) + v9 + 4; *(_DWORD *)v9 = 2; *(_DWORD *)v10 = 2; *(_WORD *)(v10 + 4) = v8; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); *(_DWORD *)(248 * *(_DWORD *)(v11 + 15876) + v11 + 240) = a5; v12 = *(_DWORD *)(a3 + 4); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); v14 = 248 * *(_DWORD *)(v13 + 15876) + v13 + 4; *(_BYTE *)(v14 + 6) = 1; v12 += 8; memcpy((void *)(v14 + 9), (const void *)v12, 0x64u); v12 += 100; v15 = v97; *(_WORD *)(v14 + 109) = *(_WORD *)v12; *(_BYTE *)(v14 + 111) = *(_BYTE *)(v12 + 2); *(_WORD *)(v14 + 7) = *(_WORD *)v15; v16 = *(_DWORD *)(v100 + 4); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v18 = 248 * *(_DWORD *)(v17 + 15876) + v17 + 4; *(_BYTE *)(v18 + 112) = 1; v16 += 8; memcpy((void *)(v18 + 115), (const void *)v16, 0x64u); v16 += 100; *(_WORD *)(v18 + 215) = *(_WORD *)v16; *(_BYTE *)(v18 + 217) = *(_BYTE *)(v16 + 2); v19 = v100; *(_WORD *)(v18 + 113) = *(_WORD *)v100; v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v21 = 248 * *(_DWORD *)(v20 + 15876) + v20 + 4; *(_BYTE *)(v21 + 220) = 1; *(_WORD *)(v21 + 221) = *(_WORD *)v19; v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); *(_DWORD *)(248 * *(_DWORD *)(v22 + 15876) + v22 + 244) = (*(int (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)a2 + 2416))( a2, *(_WORD *)(248 * *(_DWORD *)(v22 + 15876) + v22 + 8), 248 * *(_DWORD *)(v22 + 15876) + v22 + 248, 1); v23 = *(_DWORD *)(v97 + 4); v98 = *(_DWORD *)(v19 + 4); memcpy(&v102, (const void *)v98, 0x6Cu); v104 = *(_WORD *)(v98 + 108); v105 = *(_BYTE *)(v98 + 110); v24 = *(_DWORD *)(v23 + 112); v25 = *(_DWORD *)v24; v26 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v24 + 28))(v24, v23 + 8); v27 = *(int (__thiscall **)(_DWORD, _DWORD))(v25 + 28); v87 = v98 + 8; v98 = v26; v28 = v27(v24, v87); (*(void (__thiscall **)(int, char *, int))(v25 + 32))(v24, &v103, v28 + v98); v29 = v101; *(_WORD *)(v101 + 2) = a1; v30 = v97; *(_DWORD *)(v29 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v31 = v100; *(_WORD *)v29 = 13358; *(_DWORD *)(v29 + 8) = *(_DWORD *)(v30 + 8); *(_DWORD *)(v29 + 12) = *(_DWORD *)(v31 + 8); *(_WORD *)(v29 + 16) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); v32 = v100; *(_WORD *)(v29 + 18) = *(_WORD *)(*(_DWORD *)(v30 + 4) + 8); v33 = *(_DWORD *)(v32 + 4); *(_DWORD *)(v29 + 20) = *(_DWORD *)v33; *(_DWORD *)(v29 + 24) = *(_DWORD *)(v33 + 4); v34 = *(_DWORD *)(v30 + 4); *(_DWORD *)(v29 + 28) = *(_DWORD *)v34; *(_DWORD *)(v29 + 32) = *(_DWORD *)(v34 + 4); *(_DWORD *)(v29 + 36) = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v32 + 4) + 112) + 28))(*(_DWORD *)(v32 + 4) + 8); v35 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v30 + 4) + 112) + 28))(*(_DWORD *)(v30 + 4) + 8); v87 = 44; *(_DWORD *)(v29 + 40) = v35; if ( sub_4C81E0(&off_849C18, v87) ) { v36 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v36); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Merge : Packet Too Long", 44); } v37 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v38 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); v101 = v37; v39 = v38(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, int, int))(*(_DWORD *)v37 + 48))( v37, *(_WORD *)(v39 + 4), *(_DWORD *)(v30 + 4), v30, v100); v101 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v41 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v101 + 64); v99 = *(_WORD *)(v40 + 4); v41(v99, *(_DWORD *)(v100 + 4), &v102, v100, v30); v42 = *(_WORD *)v30; if ( !(*(_WORD *)v30 & 0xFC00) || !(*(_WORD *)v100 & 0xFC00) ) { v43 = *(_DWORD *)(v30 + 4); v44 = *(_DWORD *)(v43 + 4); v89 = *(_DWORD *)v43; v45 = *(_WORD *)(v43 + 8); v90 = v44; v46 = *(_DWORD *)(v43 + 112); HIWORD(v91) = v42; v47 = *(_DWORD *)v46; LOWORD(v91) = v45; v92 = (*(int (__stdcall **)(int))(v47 + 28))(v43 + 8); v48 = *(_DWORD *)(v100 + 4); v49 = *(_DWORD *)(v48 + 4); v93 = *(_DWORD *)v48; v50 = *(_WORD *)(v48 + 8); v94 = v49; LOWORD(v49) = *(_WORD *)v100; LOWORD(v95) = v50; v51 = *(_DWORD *)(v48 + 112); HIWORD(v95) = v49; v52 = (*(int (__stdcall **)(int))(*(_DWORD *)v51 + 28))(v48 + 8); v53 = *(_DWORD *)a2; v96 = v52; v54 = (*(int (__thiscall **)(int))(v53 + 2004))(a2); v55 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); v101 = v54; v56 = *(_WORD *)(v55(a2) + 4); v57 = *(_DWORD *)v54; memcpy(&v60, &v102, 0x6Cu); LOWORD(v87) = v104; BYTE2(v87) = v105; v99 = v57; (*(void (__thiscall **)(int, int, int, int, int, int, int, int, int, 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, int, int))(v57 + 124))( v54, v56, v89, v90, v91, v92, v93, v94, v95, v96, *(_DWORD *)&v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87); } v58 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v58 + 4); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Exchange : Dest is not empty", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int, int))(*(_DWORD *)a2 + 776))(a2, 12, 12, 580, v87); --dword_750CB8; } v107 = -1; return sub_467660((int)&unk_D020420, (int)"ItemRelocationManager::irm_Merge"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00530D40) -------------------------------------------------------- int __stdcall sub_530D40(__int16 a1, int a2, int a3, int a4, int a5) { int v5; // ecx@1 unsigned __int16 v6; // ax@1 bool v7; // zf@1 int v8; // eax@3 int v9; // edi@3 int v10; // edx@3 int (__thiscall *v11)(_DWORD, _DWORD, _DWORD); // eax@3 int v12; // eax@3 int v13; // edx@3 int v14; // eax@3 unsigned int v15; // ecx@3 __int16 v16; // di@5 int v17; // eax@5 int v18; // ecx@5 int v19; // eax@5 int v20; // esi@5 int v21; // eax@5 int v22; // eax@5 int v23; // ecx@5 int v24; // esi@5 int v25; // eax@5 int v26; // eax@5 int v27; // esi@5 int v28; // eax@5 int v29; // edi@5 int v30; // eax@5 int v31; // eax@5 int v32; // eax@5 int v33; // eax@5 int v34; // esi@5 int v35; // esi@5 int v36; // esi@5 int v37; // edi@5 int v38; // ecx@5 int v39; // eax@5 int v40; // eax@5 int v41; // eax@5 int v42; // ecx@5 int v43; // eax@5 int v44; // eax@7 int v45; // esi@8 int (__thiscall *v46)(_DWORD); // eax@8 int v47; // eax@8 int v48; // eax@8 void (__stdcall *v49)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@8 __int16 v50; // ax@8 int v51; // edi@10 int v52; // ecx@10 __int16 v53; // dx@10 int v54; // ecx@10 int v55; // eax@10 int v56; // eax@10 int v57; // edx@10 __int16 v58; // cx@10 int v59; // ecx@10 int v60; // eax@10 int v61; // edx@10 int v62; // esi@10 int (__thiscall *v63)(_DWORD); // eax@10 int v64; // edx@10 int v65; // eax@10 int v66; // eax@11 char v68; // [sp-70h] [bp-1B0h]@10 int v69; // [sp-6Ch] [bp-1ACh]@10 int v70; // [sp-68h] [bp-1A8h]@10 int v71; // [sp-64h] [bp-1A4h]@10 int v72; // [sp-60h] [bp-1A0h]@10 int v73; // [sp-5Ch] [bp-19Ch]@10 int v74; // [sp-58h] [bp-198h]@10 int v75; // [sp-54h] [bp-194h]@10 int v76; // [sp-50h] [bp-190h]@10 int v77; // [sp-4Ch] [bp-18Ch]@10 int v78; // [sp-48h] [bp-188h]@10 int v79; // [sp-44h] [bp-184h]@10 int v80; // [sp-40h] [bp-180h]@10 int v81; // [sp-3Ch] [bp-17Ch]@10 int v82; // [sp-38h] [bp-178h]@10 int v83; // [sp-34h] [bp-174h]@10 int v84; // [sp-30h] [bp-170h]@10 int v85; // [sp-2Ch] [bp-16Ch]@10 int v86; // [sp-28h] [bp-168h]@10 int v87; // [sp-24h] [bp-164h]@10 int v88; // [sp-20h] [bp-160h]@10 int v89; // [sp-1Ch] [bp-15Ch]@10 int v90; // [sp-18h] [bp-158h]@10 int v91; // [sp-14h] [bp-154h]@10 int v92; // [sp-10h] [bp-150h]@10 int v93; // [sp-Ch] [bp-14Ch]@10 int v94; // [sp-8h] [bp-148h]@3 int v95; // [sp-4h] [bp-144h]@1 int v96; // [sp+Ch] [bp-134h]@1 int v97; // [sp+14h] [bp-12Ch]@3 int v98; // [sp+18h] [bp-128h]@10 int v99; // [sp+1Ch] [bp-124h]@10 int v100; // [sp+20h] [bp-120h]@10 int v101; // [sp+24h] [bp-11Ch]@10 int v102; // [sp+28h] [bp-118h]@10 int v103; // [sp+2Ch] [bp-114h]@10 int v104; // [sp+30h] [bp-110h]@10 int v105; // [sp+34h] [bp-10Ch]@10 int v106; // [sp+38h] [bp-108h]@3 int v107; // [sp+3Ch] [bp-104h]@1 unsigned int v108; // [sp+40h] [bp-100h]@3 int v109; // [sp+44h] [bp-FCh]@3 int v110; // [sp+48h] [bp-F8h]@1 int v111; // [sp+4Ch] [bp-F4h]@1 char v112; // [sp+50h] [bp-F0h]@5 char v113; // [sp+58h] [bp-E8h]@5 __int16 v114; // [sp+BCh] [bp-84h]@5 char v115; // [sp+BEh] [bp-82h]@5 char v116; // [sp+C0h] [bp-80h]@5 char v117; // [sp+C8h] [bp-78h]@5 __int16 v118; // [sp+12Ch] [bp-14h]@5 char v119; // [sp+12Eh] [bp-12h]@5 unsigned int v120; // [sp+130h] [bp-10h]@1 int v121; // [sp+13Ch] [bp-4h]@1 int v122; // [sp+140h] [bp+0h]@1 v120 = (unsigned int)&v122 ^ __security_cookie; v95 = (unsigned int)&v122 ^ __security_cookie; v107 = a3; v111 = a4; v96 = (int)"ItemRelocationManager::irm_Split_N_Merge"; sub_4675D0((int)&unk_D020420, (int)"ItemRelocationManager::irm_Split_N_Merge"); dword_7508B8[dword_750CB8] = (int)"ItemRelocationManager::irm_Split_N_Merge"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(a3 + 4); v110 = (int)off_849C18; v6 = *(_WORD *)(v5 + 8); v7 = v6 == *(_WORD *)(*(_DWORD *)(v111 + 4) + 8); v121 = 0; if ( v7 ) { v108 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v6); v8 = *(_DWORD *)(a3 + 4); v9 = *(_DWORD *)(v8 + 112); v10 = *(_DWORD *)v9; v94 = v8 + 8; v11 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(v10 + 28); v109 = v9; v12 = v11(v9, v94, v95); v13 = *(_DWORD *)v9; v106 = v12; v14 = (*(int (__thiscall **)(int, int))(v13 + 28))(v9, *(_DWORD *)(v111 + 4) + 8); v15 = *(_DWORD *)(v108 + 106); v97 = v14; v108 = v15; if ( v15 < v106 + v14 ) { v16 = *(_WORD *)(*(_DWORD *)(a3 + 4) + 8); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); v18 = 248 * *(_DWORD *)(v17 + 15876) + v17 + 4; *(_DWORD *)v17 = 3; *(_DWORD *)v18 = 3; *(_WORD *)(v18 + 4) = v16; v19 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2412))(a2); *(_DWORD *)(248 * *(_DWORD *)(v19 + 15876) + v19 + 240) = a5; v20 = *(_DWORD *)(a3 + 4); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v22 = 248 * *(_DWORD *)(v21 + 15876) + v21 + 4; *(_BYTE *)(v22 + 6) = 1; v20 += 8; memcpy((void *)(v22 + 9), (const void *)v20, 0x64u); v20 += 100; v23 = v107; *(_WORD *)(v22 + 109) = *(_WORD *)v20; *(_BYTE *)(v22 + 111) = *(_BYTE *)(v20 + 2); *(_WORD *)(v22 + 7) = *(_WORD *)v23; v24 = *(_DWORD *)(v111 + 4); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v26 = 248 * *(_DWORD *)(v25 + 15876) + v25 + 4; *(_BYTE *)(v26 + 112) = 1; v24 += 8; memcpy((void *)(v26 + 115), (const void *)v24, 0x64u); v24 += 100; *(_WORD *)(v26 + 215) = *(_WORD *)v24; *(_BYTE *)(v26 + 217) = *(_BYTE *)(v24 + 2); v27 = v111; *(_WORD *)(v26 + 113) = *(_WORD *)v111; v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v29 = v107; v30 = 248 * *(_DWORD *)(v28 + 15876) + v28 + 4; *(_BYTE *)(v30 + 220) = 1; *(_WORD *)(v30 + 221) = *(_WORD *)v29; v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); v32 = 248 * *(_DWORD *)(v31 + 15876) + v31 + 4; *(_BYTE *)(v32 + 228) = 1; *(_WORD *)(v32 + 229) = *(_WORD *)v27; v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2412))(a2); *(_DWORD *)(248 * *(_DWORD *)(v33 + 15876) + v33 + 244) = (*(int (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)a2 + 2416))( a2, *(_WORD *)(248 * *(_DWORD *)(v33 + 15876) + v33 + 8), 248 * *(_DWORD *)(v33 + 15876) + v33 + 248, 1); v34 = *(_DWORD *)(v29 + 4); memcpy(&v112, (const void *)v34, 0x6Cu); v34 += 108; v114 = *(_WORD *)v34; v115 = *(_BYTE *)(v34 + 2); v35 = *(_DWORD *)(v111 + 4); memcpy(&v116, (const void *)v35, 0x6Cu); v35 += 108; v118 = *(_WORD *)v35; v119 = *(_BYTE *)(v35 + 2); (*(void (__thiscall **)(int, char *, unsigned int))(*(_DWORD *)v109 + 32))(v109, &v113, v106 + v97 - v108); (*(void (__thiscall **)(int, char *, unsigned int))(*(_DWORD *)v109 + 32))(v109, &v117, v108); v36 = v110; *(_WORD *)(v110 + 2) = a1; *(_DWORD *)(v36 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)v36 = 13361; v37 = v107; *(_WORD *)(v36 + 8) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); v38 = v111; *(_DWORD *)(v36 + 14) = *(_DWORD *)(v37 + 8); *(_DWORD *)(v36 + 26) = *(_DWORD *)(v38 + 8); *(_WORD *)(v36 + 12) = a5; *(_WORD *)(v36 + 10) = *(_WORD *)(*(_DWORD *)(v37 + 4) + 8); v39 = *(_DWORD *)(v37 + 4); *(_DWORD *)(v36 + 18) = *(_DWORD *)v39; *(_DWORD *)(v36 + 22) = *(_DWORD *)(v39 + 4); v40 = *(_DWORD *)(v38 + 4); *(_DWORD *)(v36 + 30) = *(_DWORD *)v40; *(_DWORD *)(v36 + 34) = *(_DWORD *)(v40 + 4); v41 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v37 + 4) + 112) + 28))(*(_DWORD *)(v37 + 4) + 8); v42 = v111; *(_DWORD *)(v36 + 38) = v41; v43 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v42 + 4) + 112) + 28))(*(_DWORD *)(v42 + 4) + 8); v95 = 46; *(_DWORD *)(v36 + 42) = v43; if ( sub_4C81E0(&off_849C18, v95) ) { v44 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v44); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Split_N_Merge : Packet Too Long", 46); } v45 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v46 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); v110 = v45; v47 = v46(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, char *, int, int))(*(_DWORD *)v45 + 64))( v45, *(_WORD *)(v47 + 4), *(_DWORD *)(v37 + 4), &v112, v37, v111); v110 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v48 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v49 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v110 + 64); v109 = *(_WORD *)(v48 + 4); v49(v109, *(_DWORD *)(v111 + 4), &v116, v111, v37); v50 = *(_WORD *)v37; if ( !(*(_WORD *)v37 & 0xFC00) || !(*(_WORD *)v111 & 0xFC00) ) { v51 = *(_DWORD *)(v37 + 4); v52 = *(_DWORD *)(v51 + 4); v98 = *(_DWORD *)v51; v53 = *(_WORD *)(v51 + 8); v99 = v52; v54 = *(_DWORD *)(v51 + 112); HIWORD(v100) = v50; v55 = *(_DWORD *)v54; LOWORD(v100) = v53; v101 = (*(int (__stdcall **)(int))(v55 + 28))(v51 + 8); v56 = *(_DWORD *)(v111 + 4); v57 = *(_DWORD *)(v56 + 4); v102 = *(_DWORD *)v56; v58 = *(_WORD *)(v56 + 8); v103 = v57; LOWORD(v57) = *(_WORD *)v111; LOWORD(v104) = v58; v59 = *(_DWORD *)(v56 + 112); HIWORD(v104) = v57; v60 = (*(int (__stdcall **)(int))(*(_DWORD *)v59 + 28))(v56 + 8); v61 = *(_DWORD *)a2; v105 = v60; v62 = (*(int (__thiscall **)(int))(v61 + 2004))(a2); v63 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); v110 = v62; v64 = *(_WORD *)(v63(a2) + 4); v65 = *(_DWORD *)v62; memcpy(&v68, &v116, 0x6Cu); LOWORD(v95) = v118; BYTE2(v95) = v119; v109 = v65; (*(void (__thiscall **)(int, int, int, int, int, int, int, int, int, 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, int, int))(v65 + 124))( v62, v64, v98, v99, v100, v101, v102, v103, v104, v105, *(_DWORD *)&v68, v69, v70, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, v95); } v66 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v66 + 4); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Split_N_Merge : Item Lot fail", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 12, 12, 580); --dword_750CB8; } } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Exchange : Dest is not empty", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int, int))(*(_DWORD *)a2 + 776))(a2, 12, 12, 580, v95); --dword_750CB8; } v121 = -1; return sub_467660((int)&unk_D020420, (int)"ItemRelocationManager::irm_Split_N_Merge"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00531390) -------------------------------------------------------- int __stdcall sub_531390(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 int v4; // ebx@6 __time32_t v5; // eax@6 __time32_t v6; // edi@6 FILE *v7; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK : "); v6 = v5; if ( byte_7493ED ) { if ( *(_BYTE *)(v5 + 644) ) { sub_418E40(v5); v7 = *(FILE **)(v6 + 256); if ( v7 ) fprintf(v7, "%d", v4); } } sub_418F20(v6, (int)&unk_13359E04); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 12, 12, 577); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3356))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2408))(v2, 1) ) (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1676, 0, 0); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK : Invalid player", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00531540) -------------------------------------------------------- int __stdcall sub_531540(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RELOCFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_RELOCFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 12, *(_WORD *)(a1 + 8)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 0); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_RELOCFAIL_ACK : Invalid player", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_RELOCFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00531670) -------------------------------------------------------- int __stdcall sub_531670(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 int v4; // ebx@6 __time32_t v5; // eax@6 __time32_t v6; // edi@6 FILE *v7; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK : "); v6 = v5; if ( byte_7493ED ) { if ( *(_BYTE *)(v5 + 644) ) { sub_418E40(v5); v7 = *(FILE **)(v6 + 256); if ( v7 ) fprintf(v7, "%d", v4); } } sub_418F20(v6, (int)&unk_13359E04); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 12, 12, 577); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3356))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2408))(v2, 1) ) (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1676, 0, 0); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK : Invalid player", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00531820) -------------------------------------------------------- int __stdcall sub_531820(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 12, *(_WORD *)(a1 + 8)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 0); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGEFAIL_ACK : Invalid player", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_EXCHANGEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00531950) -------------------------------------------------------- int __stdcall sub_531950(int a1, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // eax@5 __time32_t v5; // eax@6 __time32_t v6; // edi@6 FILE *v7; // eax@8 __time32_t v8; // eax@16 __time32_t v9; // edi@16 FILE *v10; // eax@18 int v11; // ebx@20 __time32_t v12; // eax@20 __time32_t v13; // edi@20 FILE *v14; // eax@22 int v16; // [sp-4h] [bp-24h]@4 int v17; // [sp+28h] [bp+8h]@6 int v18; // [sp+28h] [bp+8h]@12 int v19; // [sp+28h] [bp+8h]@16 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v3, *(_WORD *)(a1 + 8), 0) ) { v17 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK : "); v6 = v5; if ( byte_7493ED ) { if ( *(_BYTE *)(v5 + 644) ) { sub_418E40(v5); v7 = *(FILE **)(v6 + 256); if ( v7 ) fprintf(v7, "%d", v17); } } sub_418F20(v6, (int)&unk_13359E04); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3352))(v3, 0); } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 577); if ( (unsigned __int16)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 2420))(v3, v2 + 10) != *(_WORD *)(v2 + 18) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); if ( byte_7493ED ) { if ( byte_13244B6C ) { sub_418E40((__time32_t)byte_132448E8); if ( dword_132449E8 ) fprintf(dword_132449E8, "%d", v18); } } v19 = (unsigned __int16)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 2420))(v3, v2 + 10); v8 = sub_418EA0((__time32_t)byte_132448E8, (int)" Merge Error "); v9 = v8; if ( byte_7493ED ) { if ( *(_BYTE *)(v8 + 644) ) { sub_418E40(v8); v10 = *(FILE **)(v9 + 256); if ( v10 ) fprintf(v10, "%d", v19); } } v11 = *(_WORD *)(v2 + 18); v12 = sub_418EA0(v9, (int)"/"); v13 = v12; if ( byte_7493ED ) { if ( *(_BYTE *)(v12 + 644) ) { sub_418E40(v12); v14 = *(FILE **)(v13 + 256); if ( v14 ) fprintf(v14, "%d", v11); } } sub_418F20(v13, (int)&unk_13359E04); (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1528))(v3, 1676, 0, 0); } (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3356))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 2408))(v3, 1) ) (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1528))(v3, 1676, 0, 0); v16 = (int)"GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK"; } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK : Invalid player", 0); v16 = (int)"GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v16); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244B6C: using guessed type char byte_13244B6C; //----- (00531C30) -------------------------------------------------------- int __stdcall sub_531C30(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MERGEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_MERGEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 12, *(_WORD *)(a1 + 8)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 0); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MERGEFAIL_ACK : Invalid player", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_MERGEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00531D60) -------------------------------------------------------- int __stdcall sub_531D60(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST14_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 int v7; // ST18_4@8 int v8; // ST10_4@8 unsigned __int16 v9; // ax@8 int v10; // eax@8 __time32_t v11; // eax@8 __time32_t v12; // eax@8 __time32_t v13; // eax@8 __time32_t v14; // eax@8 __time32_t v15; // eax@8 __time32_t v16; // eax@8 __time32_t v17; // eax@8 __time32_t v18; // eax@8 int v20; // [sp+0h] [bp-20h]@0 int v21; // [sp+4h] [bp-1Ch]@0 int v22; // [sp+8h] [bp-18h]@0 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGESUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGESUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGESUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 12, 577); if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2420))(v2, a1 + 10) != *(_WORD *)(a1 + 28) || (unsigned __int16)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2420))(v2, a1 + 18) != *(_WORD *)(a1 + 30) ) { v7 = (unsigned __int16)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2420))( v2, a1 + 18, *(_WORD *)(a1 + 30), &unk_13359E04); v8 = *(_WORD *)(a1 + 28); v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2420))(v2); v10 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 836))(v2, " SplitMerge Error", v9); v11 = sub_43B910((__time32_t)byte_132448E8, v10); v12 = sub_418EA0(v11, a1 + 10); v13 = sub_43B910(v12, (int)"/"); v14 = sub_418EA0(v13, v8); v15 = sub_43B910(v14, (int)"//"); v16 = sub_418EA0(v15, v7); v17 = sub_43B910(v16, v20); v18 = sub_43B910(v17, v21); sub_418F20(v18, v22); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1528))(v2); } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 1) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1676, 0, 0); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3356))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGESUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00531FC0) -------------------------------------------------------- int __stdcall sub_531FC0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 12, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3352))(v2, 0); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005320E0) -------------------------------------------------------- int __thiscall sub_5320E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edx@4 void *v6; // ecx@4 unsigned __int64 v7; // qax@9 int v8; // edx@10 int v9; // edx@11 int v10; // edi@13 int v11; // eax@13 void *v12; // edi@13 int v13; // eax@15 int v14; // eax@16 signed int v16; // [sp-4h] [bp-24h]@4 int v17; // [sp-4h] [bp-24h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1324489C & 1) ) { dword_1324489C |= 1u; word_13244898 = 70; atexit(nullsub_102); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244898) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v5 = *(_DWORD *)v4; v16 = 3969; v6 = v4; LABEL_5: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v5 + 776))(v6, 12, 29, v16); --dword_750CB8; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; return sub_467660((int)&unk_D020420, v17); } v5 = *(_DWORD *)v4; v6 = v4; if ( !(*((_BYTE *)v4 + 23824) & 0x30) ) { v16 = 3970; goto LABEL_5; } LODWORD(v7) = (*(int (__thiscall **)(void *))(v5 + 1076))(v4); if ( *(_QWORD *)(a2 + 2) > v7 ) { *(_DWORD *)(a2 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1076))(v4); *(_DWORD *)(a2 + 6) = v8; } v9 = *(_DWORD *)v4; if ( *(_QWORD *)(a2 + 2) ) { v10 = (*(int (__thiscall **)(void *))(v9 + 2004))(v4); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v10 + 72))( v10, *(_WORD *)(v11 + 4), *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6), -1); v12 = off_849C18; *(_WORD *)off_849C18 = 13407; *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v12 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v12 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *(_DWORD *)((char *)v12 + 14) = *(_DWORD *)(a2 + 2); *(_DWORD *)((char *)v12 + 18) = *(_DWORD *)(a2 + 6); *((_WORD *)v12 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( sub_4C81E0(&off_849C18, 22) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ : Packet Too Long", 22); } v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v14 + 4); --dword_750CB8; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v9 + 776))(v4, 12, 29, 3971); --dword_750CB8; } v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244898: using guessed type __int16 word_13244898; // 1324489C: using guessed type int dword_1324489C; // 14D16430: using guessed type int dword_14D16430; //----- (00532330) -------------------------------------------------------- int __stdcall sub_532330(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1108))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00532410) -------------------------------------------------------- int __thiscall sub_532410(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@2 __time32_t v5; // eax@3 __time32_t v6; // ebx@3 FILE *v7; // eax@5 int v8; // eax@9 void *v9; // eax@10 int v10; // eax@12 int v12; // [sp+28h] [bp+8h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_DepositAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_DepositAck"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( *(_WORD *)(a2 + 16) == 3968 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a2 + 6), 0) ) { v12 = *(_WORD *)(a2 + 6); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_DepositAck : "); v6 = v5; if ( byte_7493ED ) { if ( *(_BYTE *)(v5 + 644) ) { sub_418E40(v5); v7 = *(FILE **)(v6 + 256); if ( v7 ) fprintf(v7, "%d", v12); } } sub_418F20(v6, (int)&unk_13359E04); } *((_DWORD *)v2 + 21434) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 21435) = *(_DWORD *)(v3 + 12); } else { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a2 + 6)); } v9 = off_849C18; *(_WORD *)off_849C18 = 12317; *(_DWORD *)((char *)v9 + 2) = *((_DWORD *)v2 + 21434); *(_DWORD *)((char *)v9 + 6) = *((_DWORD *)v2 + 21435); *((_WORD *)v9 + 5) = *(_WORD *)(v3 + 16); if ( sub_4C81E0(&off_849C18, 12) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_DepositAck : Packet Too Long", 12); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_DepositAck"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005325D0) -------------------------------------------------------- int __thiscall sub_5325D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 unsigned int v5; // eax@9 unsigned int v6; // ecx@9 int v7; // edx@11 int v8; // edi@13 int v9; // eax@13 void *v10; // edi@13 int v11; // eax@15 int v12; // eax@16 signed int v14; // [sp-4h] [bp-24h]@4 int v15; // [sp-4h] [bp-24h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132448A4 & 1) ) { dword_132448A4 |= 1u; word_132448A0 = 70; atexit(nullsub_103); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132448A0) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v14 = 3969; LABEL_5: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 31, v14); --dword_750CB8; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"; return sub_467660((int)&unk_D020420, v15); } if ( !(*((_BYTE *)v4 + 23824) & 0x30) ) { v14 = 3970; goto LABEL_5; } v5 = *((_DWORD *)v4 + 21435); v6 = *((_DWORD *)v4 + 21434); if ( *(_QWORD *)(a2 + 2) > __PAIR__(v5, v6) ) { *(_DWORD *)(a2 + 2) = v6; *(_DWORD *)(a2 + 6) = v5; } v7 = *(_DWORD *)v4; if ( *(_QWORD *)(a2 + 2) ) { v8 = (*(int (__thiscall **)(void *))(v7 + 2004))(v4); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v8 + 72))( v8, *(_WORD *)(v9 + 4), *(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6), 1); v10 = off_849C18; *(_WORD *)off_849C18 = 13409; *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v10 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *(_DWORD *)((char *)v10 + 14) = *(_DWORD *)(a2 + 2); *(_DWORD *)((char *)v10 + 18) = *(_DWORD *)(a2 + 6); *((_WORD *)v10 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( sub_4C81E0(&off_849C18, 22) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ : Packet Too Long", 22); } v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v12 + 4); --dword_750CB8; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v7 + 776))(v4, 12, 31, 3971); --dword_750CB8; } v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132448A0: using guessed type __int16 word_132448A0; // 132448A4: using guessed type int dword_132448A4; // 14D16430: using guessed type int dword_14D16430; //----- (00532820) -------------------------------------------------------- int __stdcall sub_532820(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1112))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00532900) -------------------------------------------------------- int __thiscall sub_532900(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@2 __time32_t v5; // eax@3 __time32_t v6; // ebx@3 FILE *v7; // eax@5 int v8; // eax@9 void *v9; // eax@10 int v10; // eax@12 int v12; // [sp+28h] [bp+8h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WithdrawAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WithdrawAck"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( *(_WORD *)(a2 + 16) == 3968 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a2 + 6), 0) ) { v12 = *(_WORD *)(a2 + 6); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_WithdrawAck : "); v6 = v5; if ( byte_7493ED ) { if ( *(_BYTE *)(v5 + 644) ) { sub_418E40(v5); v7 = *(FILE **)(v6 + 256); if ( v7 ) fprintf(v7, "%d", v12); } } sub_418F20(v6, (int)&unk_13359E04); } *((_DWORD *)v2 + 21434) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 21435) = *(_DWORD *)(v3 + 12); } else { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a2 + 6)); } v9 = off_849C18; *(_WORD *)off_849C18 = 12319; *(_DWORD *)((char *)v9 + 2) = *((_DWORD *)v2 + 21434); *(_DWORD *)((char *)v9 + 6) = *((_DWORD *)v2 + 21435); *((_WORD *)v9 + 5) = *(_WORD *)(v3 + 16); if ( sub_4C81E0(&off_849C18, 12) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_DepositAck : Packet Too Long", 12); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WithdrawAck"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00532AC0) -------------------------------------------------------- int __stdcall sub_532AC0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1116))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00532BA0) -------------------------------------------------------- int __thiscall sub_532BA0(void *this, int a2, __int16 a3) { int v3; // esi@1 int v4; // edx@1 int v5; // eax@2 int v6; // eax@6 signed int v7; // ebx@6 int v8; // edi@9 int v9; // eax@11 int (__thiscall *v10)(_DWORD); // edx@11 __int16 v12; // [sp+10h] [bp-40h]@11 int v13; // [sp+14h] [bp-3Ch]@11 int v14; // [sp+18h] [bp-38h]@11 int v15; // [sp+1Ch] [bp-34h]@11 __int16 v16; // [sp+20h] [bp-30h]@11 int v17; // [sp+24h] [bp-2Ch]@11 int v18; // [sp+28h] [bp-28h]@11 int v19; // [sp+2Ch] [bp-24h]@11 int (**v20)(); // [sp+30h] [bp-20h]@1 int v21; // [sp+34h] [bp-1Ch]@1 int v22; // [sp+38h] [bp-18h]@4 int v23; // [sp+3Ch] [bp-14h]@4 int v24; // [sp+40h] [bp-10h]@1 int v25; // [sp+4Ch] [bp-4h]@1 v3 = (int)this; v24 = (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"; dword_750AB8[dword_750CB8++] = -1; v20 = &off_6A86A4; v21 = v3 + 53776; v4 = *(_DWORD *)(v3 + 53776); v25 = 0; if ( v3 == -160312 ) v5 = (*(int (**)(void))(v4 + 8))(); else v5 = (*(int (__stdcall **)(int))(v4 + 4))(v3 + 160312); v23 = v5; v20 = (int (**)())&off_6A86B4; LOBYTE(v25) = 1; v22 = 0; if ( (unsigned __int8)off_6A86B4(&v20) || sub_63F7F0(&v20) ) { while ( 1 ) { v6 = v22; v7 = v22; if ( v22 >= 11 ) break; if ( !sub_63F7F0(&v20) ) { v6 = v22; break; } } v8 = (**(int (__stdcall ***)(_DWORD))v21)(v6); if ( v8 && v7 >= 11 ) { v9 = *(_DWORD *)v3; v12 = a3 & 0x3FF | 0x2400; v13 = a2; v14 = (*(int (__thiscall **)(int))(v9 + 836))(v3); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836); v16 = v7 & 0x3FF | 0x3000; v17 = v8; v18 = v10(v3); v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); sub_52FB80(*(_WORD *)(v3 + 4), v3, (int)&v12, (int)&v16); } } --dword_750CB8; v20 = &off_6A86A4; v25 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00532D50) -------------------------------------------------------- signed int __thiscall sub_532D50(void *this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@2 __int16 v5; // di@3 signed int v6; // eax@3 char *v7; // ecx@13 int v8; // [sp+14h] [bp-10h]@3 int v9; // [sp+20h] [bp-4h]@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a3 ) { v5 = *(_WORD *)(a3 + 8); sub_5CF620(&v8); LOBYTE(v9) = 1; v6 = -1; while ( v6 >= -1 ) { ++v6; v8 = v6; if ( v6 >= dword_AA0BBC ) break; if ( *((_WORD *)dword_AA0BB8 + 4 * v6) == v5 ) goto LABEL_9; } v8 = -10; LABEL_9: if ( sub_417060(&v8) == *(_DWORD *)(dword_AA0B3C + 40) ) { *((_DWORD *)v3 + 11) = 0; LOBYTE(v9) = 0; nullsub_2(&v8); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); result = 4102; } else { if ( v8 < 0 || v8 >= dword_AA0BBC ) v7 = 0; else v7 = (char *)dword_AA0BB8 + 8 * v8; *((_DWORD *)v3 + 11) = v7; if ( v7 && *((_DWORD *)v7 + 1) ) { *((_WORD *)v3 + 44) = ((signed int)((unsigned __int64)(10 * *(_WORD *)(*((_DWORD *)v7 + 1) + 100) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*((_DWORD *)v7 + 1) + 100) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); *((_WORD *)v3 + 45) = ((signed int)((unsigned __int64)(10 * *(_WORD *)(*((_DWORD *)v7 + 1) + 102) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*((_DWORD *)v7 + 1) + 102) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); *((_DWORD *)v3 + 23) = *(_WORD *)(*((_DWORD *)v7 + 1) + 104); *((_DWORD *)v3 + 24) = *(_WORD *)(*((_DWORD *)v7 + 1) + 106); *((_DWORD *)v3 + 25) = *(_BYTE *)(*((_DWORD *)v7 + 1) + 110); } else { *((_DWORD *)v3 + 22) = -362747296; *((_DWORD *)v3 + 23) = 0; *((_DWORD *)v3 + 24) = 0; *((_DWORD *)v3 + 25) = 0; } *((_DWORD *)v3 + 12) = 0; *((_DWORD *)v3 + 13) = 0; *((_DWORD *)v3 + 14) = 0; *((_DWORD *)v3 + 15) = 0; *((_DWORD *)v3 + 16) = 0; *((_DWORD *)v3 + 17) = 0; *((_DWORD *)v3 + 18) = 0; *((_DWORD *)v3 + 19) = 0; *((_DWORD *)v3 + 20) = 0; *((_DWORD *)v3 + 21) = 0; LOBYTE(v9) = 0; nullsub_2(&v8); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); result = 4097; } } else { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); result = 4102; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0B3C: using guessed type int dword_AA0B3C; // AA0BBC: using guessed type int dword_AA0BBC; //----- (00532F80) -------------------------------------------------------- int __thiscall sub_532F80(void *this) { unsigned int v1; // ST10_4@1 void *v2; // ebx@1 int (__stdcall *v3)(_DWORD); // eax@1 int (__thiscall *v4)(_DWORD); // eax@1 int v5; // eax@2 int v6; // edi@2 int v7; // ecx@2 int (__stdcall *v8)(_DWORD); // edx@2 int v9; // esi@2 int v10; // eax@2 int v11; // ecx@4 char *v12; // ecx@8 int v13; // edx@9 int v14; // eax@12 int v15; // edx@12 int v16; // eax@13 int v17; // ecx@13 _BYTE *v18; // ecx@13 int v19; // edx@13 void *v20; // esi@13 int v21; // eax@13 __int16 *v22; // edx@13 int v23; // esi@13 int v24; // edx@13 int v25; // edi@13 int v26; // eax@13 int v27; // eax@15 int (**v29)(); // [sp+10h] [bp-64h]@1 char *v30; // [sp+14h] [bp-60h]@1 int v31; // [sp+1Ch] [bp-58h]@1 int v32; // [sp+20h] [bp-54h]@2 int v33; // [sp+24h] [bp-50h]@2 int *v34; // [sp+28h] [bp-4Ch]@1 int v35; // [sp+2Ch] [bp-48h]@1 int v36; // [sp+30h] [bp-44h]@1 __int16 *v37; // [sp+34h] [bp-40h]@2 int v38; // [sp+38h] [bp-3Ch]@13 int v39; // [sp+3Ch] [bp-38h]@2 char v40; // [sp+40h] [bp-34h]@12 int v41; // [sp+44h] [bp-30h]@12 unsigned int v42; // [sp+48h] [bp-2Ch]@12 int v43; // [sp+4Ch] [bp-28h]@12 int v44; // [sp+50h] [bp-24h]@12 char v45; // [sp+54h] [bp-20h]@12 unsigned int v46; // [sp+64h] [bp-10h]@1 int v47; // [sp+70h] [bp-4h]@1 int v48; // [sp+74h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v1 = (unsigned int)&v48 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"; dword_750AB8[dword_750CB8++] = -1; v29 = &off_6A86A4; v30 = (char *)v2 + 32816; v3 = *(int (__stdcall **)(_DWORD))(*((_DWORD *)v2 + 8204) + 8); v47 = 0; v31 = v3(v1); v29 = (int (**)())&off_6A86AC; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); LOBYTE(v47) = 1; v34 = (int *)&v29; v35 = v4(v2); v36 = 8; if ( sub_486D40(&v34) ) { do { v5 = (**(int (__stdcall ***)(_DWORD))v34[1])(v34[2]); v6 = v5; v7 = *(_DWORD *)(v5 + 112); v8 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)v7 + 52); v9 = v5 + 8; v32 = v5; v33 = v7; v37 = (__int16 *)(v5 + 8); v10 = v8(v5 + 8); v39 = v10; if ( v10 ) { if ( !*(_BYTE *)v10 ) { v11 = 0; if ( dword_AA0B00 > 0 ) { while ( *((_WORD *)dword_AA0AFC + 4 * v11) != *(_WORD *)v9 ) { ++v11; if ( v11 >= dword_AA0B00 ) goto LABEL_17; } v12 = (char *)dword_AA0AFC + 8 * v11; if ( v12 ) { v13 = *((_DWORD *)v12 + 1); if ( v13 ) { if ( *(_WORD *)(v13 + 34) ) { memcpy(&v40, &unk_AA0BCC, 0x24u); v42 = *(_WORD *)(v13 + 34) + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); _LN52(&v40); v14 = v39; v15 = v41; *(_BYTE *)v39 = v45 - 100; v6 = v32; *(_DWORD *)v14 = *(_BYTE *)v14 | (((_WORD)v44 + 1) << 8) & 0x1F00 | ((v43 & 0x3F | ((v42 & 0x3F | (v15 << 6)) << 6)) << 13); } else { *(_DWORD *)v39 = 1992027391; } v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1388))(v2); v17 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v17; v18 = &byte_85A2C0[256 * v17]; *(_DWORD *)v18 = *(_DWORD *)v16; *((_DWORD *)v18 + 1) = *(_DWORD *)(v16 + 4); *((_DWORD *)v18 + 2) = *(_DWORD *)(v16 + 8); *((_DWORD *)v18 + 3) = *(_DWORD *)(v16 + 12); *((_DWORD *)v18 + 4) = *(_DWORD *)(v16 + 16); LOWORD(v16) = v38; v18[20] = 0; LOWORD(v38) = v16 & 0x3FF | 0x2000; v19 = *((_DWORD *)v2 + 14672); LOWORD(v38) = (v38 ^ *((_WORD *)v34 + 4)) & 0x3FF ^ v38; (*(void (__thiscall **)(char *, _DWORD, int, int, int *, int *))(v19 + 64))( (char *)v2 + 58688, *((_WORD *)v2 + 29346), v6, v6, &v38, &v38); v20 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v20 + 1) = *((_WORD *)v2 + 2); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v22 = v37; *((_DWORD *)v20 + 1) = v21; *((_WORD *)v20 + 4) = *((_WORD *)v2 + 29346); *(_DWORD *)((char *)v20 + 10) = *(_DWORD *)v6; *(_DWORD *)((char *)v20 + 14) = *(_DWORD *)(v6 + 4); *((_WORD *)v20 + 9) = *v22; memcpy((char *)v20 + 20, (const void *)(v6 + 10), 0x65u); v23 = v33; ++*((_WORD *)v2 + 29346); v24 = *(_DWORD *)v23; v39 = v6 + 10; (*(void (__thiscall **)(int, int))(v24 + 12))(v23, v6 + 10); v25 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v23 + 12))(v23, v39) + 20; v26 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v23 + 12))(v23, v39); if ( sub_4C81E0(&off_849C18, v26 + 20) ) { v27 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v27); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v25); } sub_640290((int)((char *)v2 + 32816), *v37); } } } } } LABEL_17: ; } while ( sub_486DA0((void **)&v34) ); } --dword_750CB8; v29 = &off_6A86A4; v47 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // AA0B00: using guessed type int dword_AA0B00; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (00533300) -------------------------------------------------------- int __thiscall sub_533300(void *this) { void *v1; // esi@1 bool v2; // zf@1 __int16 v3; // ax@4 int v4; // eax@8 int v5; // ebx@8 int v6; // eax@8 int v7; // esi@8 int v8; // eax@12 int v9; // eax@13 int v10; // eax@14 int v11; // ecx@16 void *v12; // esi@17 int v13; // esi@17 int v14; // eax@17 int v15; // eax@19 int v17; // [sp-8h] [bp-D0h]@2 int v18; // [sp+10h] [bp-B8h]@8 int v19; // [sp+14h] [bp-B4h]@8 void *v20; // [sp+18h] [bp-B0h]@1 int v21; // [sp+1Ch] [bp-ACh]@3 char v22; // [sp+23h] [bp-A5h]@3 int v23; // [sp+24h] [bp-A4h]@8 int v24; // [sp+28h] [bp-A0h]@17 int v25; // [sp+2Ch] [bp-9Ch]@8 __int16 v26; // [sp+90h] [bp-38h]@8 char v27; // [sp+92h] [bp-36h]@8 char v28; // [sp+94h] [bp-34h]@16 int v29; // [sp+98h] [bp-30h]@16 unsigned int v30; // [sp+9Ch] [bp-2Ch]@16 int v31; // [sp+A0h] [bp-28h]@16 int v32; // [sp+A4h] [bp-24h]@16 char v33; // [sp+A8h] [bp-20h]@16 unsigned int v34; // [sp+B8h] [bp-10h]@1 int v35; // [sp+C4h] [bp-4h]@1 int v36; // [sp+C8h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v1 = this; v20 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 38876) == 0; v35 = 0; if ( v2 ) { --dword_750CB8; v35 = -1; v17 = (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; } else { v22 = 1; LOWORD(v21) = 12288; do { v2 = (*(int (__thiscall **)(char *, int *))(*((_DWORD *)v1 + 14672) + 8))((char *)v1 + 58688, &v21) == 0; v3 = v21; if ( v2 ) { if ( !(v21 & 0x3FF) || *((_DWORD *)v1 + (v21 & 0x3FF) + 38876) ) { v4 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 13444))( (char *)v1 + 53776, v21 & 0x3FF); memcpy(&v23, (const void *)v4, 0x6Cu); v26 = *(_WORD *)(v4 + 108); v27 = *(_BYTE *)(v4 + 110); v5 = *(_DWORD *)(v4 + 112); v18 = v4; v6 = (*(int (__thiscall **)(_DWORD, int *))(*(_DWORD *)v5 + 52))(*(_DWORD *)(v4 + 112), &v25); v7 = v6; v19 = v6; if ( v6 && !*(_BYTE *)v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(char *, int *))(*((_DWORD *)v20 + 14672) + 8))( (char *)v20 + 58688, &v21) ) { v22 = 0; } else { v8 = sub_52FB40((int)&dword_AA0B08, v25); if ( v8 ) { v9 = *(_DWORD *)(v8 + 4); if ( v9 ) { v10 = *(_WORD *)(v9 + 98); if ( (_WORD)v10 ) { memcpy(&v28, &unk_AA0BCC, 0x24u); v30 = v10 + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); _LN52(&v28); v11 = v29; *(_BYTE *)v19 = v33 - 100; *(_DWORD *)v19 = *(_BYTE *)v19 | (((_WORD)v32 + 1) << 8) & 0x1F00 | ((v31 & 0x3F | ((v30 & 0x3F | (v11 << 6)) << 6)) << 13); } else { *(_DWORD *)v7 = 1992027391; } (*(void (__thiscall **)(char *, _DWORD, int, int *, int *, int *))(*((_DWORD *)v20 + 14672) + 64))( (char *)v20 + 58688, *((_WORD *)v20 + 29346), v18, &v23, &v21, &v21); v12 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v12 + 1) = *((_WORD *)v20 + 2); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 836))(v20); *((_WORD *)v12 + 4) = *((_WORD *)v20 + 29346); *(_DWORD *)((char *)v12 + 10) = v23; *(_DWORD *)((char *)v12 + 14) = v24; *((_WORD *)v12 + 9) = v25; memcpy((char *)v12 + 20, (char *)&v25 + 2, 0x64u); *((_BYTE *)v12 + 120) = v27; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v5 + 12))(v5, (char *)&v25 + 2); v13 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v5 + 12))(v5, (char *)&v25 + 2) + 20; v14 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v5 + 12))(v5, (char *)&v25 + 2); if ( sub_4C81E0(&off_849C18, v14 + 20) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v13); } ++*((_WORD *)v20 + 29346); } } } } v3 = v21; v1 = v20; } } else { v22 = 0; } LOWORD(v21) = (v3 ^ (v3 + 1)) & 0x3FF ^ v21; } while ( (v21 & 0x3FFu) < 0x23 ); v35 = -1; *((_BYTE *)v1 + 155564) = v22 == 0; --dword_750CB8; v17 = (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; } return sub_467660((int)&unk_D020420, v17); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0B08: using guessed type int dword_AA0B08; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (005336B0) -------------------------------------------------------- int __thiscall sub_5336B0(void *this) { void *v1; // esi@1 int v2; // eax@1 void *v3; // eax@2 int v4; // eax@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SendBoothSize"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SendBoothSize"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1172))(v1); if ( *((_BYTE *)v1 + 160756) != v2 ) { *((_BYTE *)v1 + 160756) = v2; v3 = off_849C18; *(_WORD *)off_849C18 = -28656; *((_BYTE *)v3 + 2) = *((_BYTE *)v1 + 160756); if ( sub_4C81E0(&off_849C18, 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SendBoothSize : Packet Too Long", 3); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SendBoothSize"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005337C0) -------------------------------------------------------- int __thiscall sub_5337C0(void *this, int a2, int a3, __int16 a4, __int16 a5) { void *v5; // edi@1 int v6; // eax@9 signed int v7; // eax@10 char *v8; // esi@19 int v9; // eax@20 signed __int16 v10; // si@22 int v11; // edi@22 int v12; // eax@24 __time32_t v13; // ecx@24 int v14; // eax@31 int v15; // edx@32 int v16; // ecx@34 void *v17; // esi@37 int (__thiscall *v18)(_DWORD); // edx@37 int v19; // eax@37 int v20; // edx@37 int v21; // esi@37 int v22; // edi@37 int v23; // edx@37 int v24; // esi@37 int v25; // eax@37 int v26; // eax@37 int v27; // eax@39 int v28; // eax@41 __time32_t v29; // eax@42 __time32_t v30; // eax@42 __time32_t v31; // eax@42 int v32; // eax@43 int (__thiscall *v33)(_DWORD); // eax@43 int v34; // eax@43 int v35; // edi@44 int v36; // eax@45 int v37; // eax@45 int v38; // edx@45 int (__thiscall *v39)(_DWORD); // eax@45 int v40; // eax@45 int v41; // edx@45 int v43; // [sp-14h] [bp-1ACh]@24 int v44; // [sp-10h] [bp-1A8h]@24 int v45; // [sp-Ch] [bp-1A4h]@24 int v46; // [sp-8h] [bp-1A0h]@24 int (**v47)(); // [sp+Ch] [bp-18Ch]@43 int v48; // [sp+1Ch] [bp-17Ch]@1 __int16 v49; // [sp+20h] [bp-178h]@45 int v50; // [sp+24h] [bp-174h]@45 int v51; // [sp+28h] [bp-170h]@45 int v52; // [sp+2Ch] [bp-16Ch]@45 __int16 v53; // [sp+30h] [bp-168h]@45 int v54; // [sp+34h] [bp-164h]@45 int v55; // [sp+38h] [bp-160h]@45 int v56; // [sp+3Ch] [bp-15Ch]@45 int *v57; // [sp+40h] [bp-158h]@43 int v58; // [sp+44h] [bp-154h]@43 int v59; // [sp+48h] [bp-150h]@43 int v60; // [sp+4Ch] [bp-14Ch]@19 int v61; // [sp+50h] [bp-148h]@1 int v62; // [sp+54h] [bp-144h]@10 int v63; // [sp+58h] [bp-140h]@37 __int16 v64; // [sp+5Ch] [bp-13Ch]@37 int v65; // [sp+60h] [bp-138h]@10 char v66; // [sp+64h] [bp-134h]@37 unsigned int v67; // [sp+6Ch] [bp-12Ch]@37 char v68; // [sp+88h] [bp-110h]@4 unsigned int v69; // [sp+188h] [bp-10h]@1 int v70; // [sp+194h] [bp-4h]@1 int v71; // [sp+198h] [bp+0h]@1 v69 = (unsigned int)&v71 ^ __security_cookie; v5 = this; v61 = a3; v48 = (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"; dword_750AB8[dword_750CB8++] = -1; v70 = 0; if ( !a2 ) { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v68, "%.255s", "Invalid ShinePlayer(null)"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v68, dword_133599D8); } if ( byte_7493ED && byte_13359B5C && dword_133599D8 ) { v6 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v6); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } goto LABEL_48; } v62 = *(_WORD *)(a3 + 8); sub_5CF620(&v65); LOBYTE(v70) = 1; v7 = -1; while ( v7 >= -1 ) { ++v7; v65 = v7; if ( v7 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v7) == (_WORD)v62 ) goto LABEL_16; } v65 = -10; LABEL_16: if ( sub_417060(&v65) == *(_DWORD *)(dword_AA07F4 + 40) ) goto LABEL_47; if ( v65 < 0 || v65 >= dword_AA0898 || (v8 = (char *)dword_AA0894 + 8 * v65, (v60 = (int)v8) == 0) || (v9 = *((_DWORD *)v8 + 1)) == 0 ) { LABEL_24: v46 = (int)&unk_13359E04; v45 = (int)"] Invalid Furniture Type "; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1744))(a2); v44 = sub_418B40((int)byte_85A2C0, v12 + 2); v43 = (int)"player ["; v13 = (__time32_t)byte_133598D8; LABEL_42: v29 = sub_418EA0(v13, v43); v30 = sub_418EA0(v29, v44); v31 = sub_418EA0(v30, v45); sub_418F20(v31, v46); goto LABEL_47; } if ( !strncmp((const char *)(v9 + 66), "FURNITURE", 0x20u) ) { v10 = 3; v11 = (int)((char *)v5 + 1452); goto LABEL_23; } if ( !strncmp((const char *)(*((_DWORD *)v8 + 1) + 66), "ACCESSORY", 0x20u) ) { v10 = 13; v11 = (int)((char *)v5 + 12824); goto LABEL_23; } if ( !strncmp((const char *)(*((_DWORD *)v8 + 1) + 66), "TILEALL", 0x20u) ) { v10 = 14; v11 = (int)((char *)v5 + 24196); goto LABEL_23; } if ( !strncmp((const char *)(*((_DWORD *)v8 + 1) + 66), "MINIGAME", 0x20u) ) { v10 = 16; v11 = (int)((char *)v5 + 35568); LABEL_23: if ( v11 ) { v32 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1176))(a2); sub_43BB20((int)&v47, v11, v32); v33 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v70) = 2; v34 = v33(a2); v57 = (int *)&v47; v58 = v34; v59 = (unsigned __int16)v10; if ( sub_486D40(&v57) ) { v35 = v57[2]; v63 = (**(int (__stdcall ***)(_DWORD))v57[1])(v57[2]); if ( v63 ) { v53 = (a5 << 10) | a4 & 0x3FF; v36 = *(_DWORD *)a2; v54 = v61; v55 = (*(int (__thiscall **)(int))(v36 + 836))(a2); v37 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v38 = *(_DWORD *)a2; v56 = v37; v50 = v63; v39 = *(int (__thiscall **)(_DWORD))(v38 + 836); v49 = (v10 << 10) | v35 & 0x3FF; v40 = v39(a2); v41 = *(_DWORD *)a2; v51 = v40; v52 = (*(int (__thiscall **)(int))(v41 + 836))(a2); sub_52FB80(*(_WORD *)(a2 + 4), a2, (int)&v53, (int)&v49); } } v47 = &off_6A86A4; goto LABEL_47; } goto LABEL_24; } v14 = strncmp((const char *)(*((_DWORD *)v8 + 1) + 66), "PORTAL", 0x20u); if ( v14 ) { v46 = (int)&unk_13359E04; v45 = *((_DWORD *)v8 + 1) + 66; v44 = (int)"] Invalid Furniture Type : "; v28 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1744))(a2); v43 = sub_418B40((int)byte_85A2C0, v28 + 2); v13 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); goto LABEL_42; } v15 = *((_WORD *)v5 + 24694); if ( v15 + 1 > 50 ) { LABEL_47: LOBYTE(v70) = 0; nullsub_2(&v65); LABEL_48: --dword_750CB8; goto LABEL_49; } if ( v15 > 0 ) { v16 = (int)((char *)v5 + 49390); while ( *(_WORD *)v16 != (_WORD)v62 ) { ++v14; v16 += 6; if ( v14 >= v15 ) goto LABEL_37; } goto LABEL_47; } LABEL_37: v17 = off_849C18; *(_WORD *)off_849C18 = -29603; v18 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836); v63 = (int)v17; *((_DWORD *)v17 + 1) = v18(a2); *((_WORD *)v17 + 1) = *(_WORD *)(a2 + 4); v19 = v60; v20 = *(_DWORD *)(v60 + 4); memcpy(&v66, &unk_AA0BCC, 0x24u); v21 = v63; v67 = *(_WORD *)(v20 + 141) + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); *(_WORD *)(v63 + 8) = v62; *(_BYTE *)(v21 + 10) = *(_WORD *)(*(_DWORD *)(v19 + 4) + 141) != 0; *(_DWORD *)(v21 + 11) = _LN52(&v66); v22 = v61; *(_WORD *)(v21 + 15) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *(_DWORD *)(v21 + 17) = *(_DWORD *)v22; *(_DWORD *)(v21 + 21) = *(_DWORD *)(v22 + 4); v23 = *(_DWORD *)a2; v64 = (a5 << 10) | a4 & 0x3FF; v24 = (*(int (__thiscall **)(int))(v23 + 2004))(a2); v25 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v24 + 48))( v24, *(_WORD *)(v25 + 4), v22, &v64, &v64); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v26 + 4); if ( sub_4C81E0(&off_849C18, 27) ) { v27 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v27); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture : Packet Too Long", 27); } LOBYTE(v70) = 0; nullsub_2(&v65); --dword_750CB8; LABEL_49: v70 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 6A86A4: using guessed type int (*off_6A86A4)(); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // AA0BC8: using guessed type int dword_AA0BC8; // 13359B5C: using guessed type char byte_13359B5C; // 14D16430: using guessed type int dword_14D16430; //----- (00533E10) -------------------------------------------------------- char __thiscall sub_533E10(void *this, int a2, int a3, void *a4, int a5) { int v5; // esi@1 void *v6; // edi@1 int (__thiscall *v7)(_DWORD); // eax@1 char v8; // al@1 int v9; // edi@1 int v10; // eax@3 int v11; // eax@4 int v12; // eax@4 int v13; // edx@4 int (__thiscall *v14)(_DWORD); // eax@4 int v15; // eax@4 int v16; // edx@4 __int16 v18; // [sp+10h] [bp-30h]@4 int v19; // [sp+18h] [bp-28h]@4 int v20; // [sp+1Ch] [bp-24h]@4 __int16 v21; // [sp+20h] [bp-20h]@4 char *v22; // [sp+24h] [bp-1Ch]@4 int v23; // [sp+28h] [bp-18h]@4 int v24; // [sp+2Ch] [bp-14h]@4 int v25; // [sp+30h] [bp-10h]@1 int v26; // [sp+3Ch] [bp-4h]@1 v5 = (int)this; v25 = (int)"ShineObjectClass::ShinePlayer::sp_DestroyNReloc"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyNReloc"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DestroyNReloc"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v6 + 1) = *(_WORD *)(v5 + 4); v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836); v26 = 0; *((_DWORD *)v6 + 1) = v7(v5); *((_WORD *)v6 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5) + 4); *((_BYTE *)v6 + 10) = 0; *(_DWORD *)((char *)v6 + 25) = *(_DWORD *)a4; *(_DWORD *)((char *)v6 + 29) = *((_DWORD *)a4 + 1); v8 = *((_BYTE *)v6 + 10) ^ (*((_BYTE *)v6 + 10) ^ (*((_BYTE *)v6 + 10) + 1)) & 0x7F; *((_BYTE *)v6 + 10) = v8; v9 = 8 * (v8 & 0x7F) + 25; if ( sub_4C81E0(&off_849C18, 8 * (v8 & 0x7F) + 25) ) { v10 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v10); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v9); } ++*(_WORD *)(v5 + 58692); v11 = *(_DWORD *)v5; v18 = *(_WORD *)a3; v19 = (*(int (__thiscall **)(int))(v11 + 836))(v5); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v13 = *(_DWORD *)v5; v20 = v12; v14 = *(int (__thiscall **)(_DWORD))(v13 + 836); v21 = *(_WORD *)a5; v22 = (char *)a4; v15 = v14(v5); v16 = *(_DWORD *)v5; v23 = v15; v24 = (*(int (__thiscall **)(int))(v16 + 836))(v5); v23 = 0; *(_DWORD *)a4 = -1; v22 = (char *)a4 + 8; *((_DWORD *)a4 + 1) = -1; memset(v22, v23, v24); *((_WORD *)a4 + 4) = -1; v24 = (int)&v21; v23 = (int)&v18; *((_DWORD *)a4 + 28) = dword_1508B168; sub_52FB80(*(_WORD *)(v5 + 4), v5, v23, v24); --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyNReloc"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00534000) -------------------------------------------------------- int __thiscall sub_534000(void *this, signed int a2, char a3) { void *v3; // esi@1 void *v4; // edi@3 int v5; // eax@3 int v6; // eax@5 int v8; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < 16 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 13380; *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v4 + 1) = *((_WORD *)v3 + 2); *((_BYTE *)v4 + 8) = a2; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 840))(v3); *((_BYTE *)v4 + 13) = a3; *(_DWORD *)((char *)v4 + 9) = v5; if ( sub_4C81E0(&off_849C18, 14) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"NPCRole_StoreManager::nrb_Role : Packet Too Long", 14); } v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 776))(v3, 15, 7, 2052); v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00534130) -------------------------------------------------------- int __thiscall sub_534130(void *this, int a2, int a3) { void *v3; // esi@1 __int16 v4; // dx@1 int v5; // edi@6 void *v6; // edi@9 int v7; // eax@10 void *v8; // eax@10 int v9; // eax@10 int v10; // eax@15 int v11; // eax@16 int v12; // edi@16 int v13; // ST24_4@16 int v14; // eax@16 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@16 int v16; // edi@16 int v17; // ST24_4@16 int v18; // eax@16 int v19; // ecx@16 char *v20; // ebx@16 int v21; // eax@17 void *v22; // eax@17 void *v23; // eax@17 int v24; // eax@17 int v25; // ecx@19 __int16 v26; // dx@22 int v27; // eax@24 int v28; // eax@25 int v29; // edi@25 int v30; // ST24_4@25 int v31; // eax@25 void (__thiscall *v32)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@25 int v33; // ST24_4@25 int v34; // eax@26 signed int v36; // [sp-8h] [bp-1F0h]@2 unsigned int v37; // [sp-4h] [bp-1ECh]@1 int v38; // [sp+10h] [bp-1D8h]@6 int v39; // [sp+14h] [bp-1D4h]@6 int v40; // [sp+14h] [bp-1D4h]@19 char v41; // [sp+18h] [bp-1D0h]@10 char v42; // [sp+88h] [bp-160h]@17 __int16 v43; // [sp+90h] [bp-158h]@22 char v44; // [sp+F8h] [bp-F0h]@17 __int16 v45; // [sp+100h] [bp-E8h]@22 char v46; // [sp+168h] [bp-80h]@10 __int16 v47; // [sp+170h] [bp-78h]@13 unsigned int v48; // [sp+1D8h] [bp-10h]@1 int v49; // [sp+1E4h] [bp-4h]@1 int v50; // [sp+1E8h] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v37 = (unsigned int)&v50 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SmallItemReloc"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SmallItemReloc"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)a3 ^ *(_WORD *)(a3 + 2); v49 = 0; if ( v4 & 0xFC00 ) { v36 = 578; LABEL_28: (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v3 + 776))( v3, 12, 12, v36, v37); --dword_750CB8; goto LABEL_29; } if ( (*(_WORD *)a3 & 0x3FF) >= (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 8))(a2) || (*(_WORD *)(a3 + 2) & 0x3FF) >= (*(int (__thiscall **)(int, char *))(*(_DWORD *)a2 + 4))(a2, (char *)v3 + 160312) ) { v36 = 580; goto LABEL_28; } v38 = (**(int (__thiscall ***)(_DWORD, _DWORD))a2)(a2, *(_WORD *)a3 & 0x3FF); v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))a2)(a2, *(_WORD *)(a3 + 2) & 0x3FF); v39 = v5; if ( !v38 || sub_63FD50(v38) == -1 || !v5 ) { v36 = 581; goto LABEL_28; } v6 = off_849C18; if ( sub_63FD50(v39) == -1 ) { *((_WORD *)v6 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v6 = 13352; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v6 + 3) = v7; *((_DWORD *)v6 + 2) = v7; *((_WORD *)v6 + 8) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3) + 4); v8 = sub_5CF620((void *)v38); *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)v8; *(_DWORD *)((char *)v6 + 22) = *((_DWORD *)v8 + 1); *((_WORD *)v6 + 13) = *(_WORD *)(a3 + 2); *((_WORD *)v6 + 14) = *(_WORD *)a3; sub_63FD90(v38, (int)&v46); sub_46FE30((int)&v41); v9 = *(_DWORD *)(v38 + 16); if ( !v9 ) { v9 = (int)dword_1508B168; if ( !dword_1508B168 ) { LABEL_12: v36 = 583; goto LABEL_28; } } *((_WORD *)v6 + 15) = v47; *((_DWORD *)v6 + 8) = (*(int (__thiscall **)(int, __int16 *, unsigned int))(*(_DWORD *)v9 + 28))(v9, &v47, v37); if ( sub_4C81E0(&off_849C18, 36) ) { v10 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v10); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Move : Packet Too Long", 36); } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); v12 = v11; v13 = v11; v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 68); v16 = a3 + 2; v15(v13, *(_WORD *)(v14 + 4), a3, &v41, a3, a3 + 2); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v19 = v17; v20 = &v46; } else { *((_WORD *)v6 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v6 = 13355; v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v6 + 3) = v21; *((_DWORD *)v6 + 2) = v21; *((_WORD *)v6 + 8) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3) + 4); *((_WORD *)v6 + 13) = *(_WORD *)(a3 + 2); v22 = sub_5CF620((void *)v38); *(_DWORD *)((char *)v6 + 18) = *(_DWORD *)v22; *(_DWORD *)((char *)v6 + 22) = *((_DWORD *)v22 + 1); *((_WORD *)v6 + 18) = *(_WORD *)a3; v23 = sub_5CF620((void *)v39); *((_DWORD *)v6 + 7) = *(_DWORD *)v23; *((_DWORD *)v6 + 8) = *((_DWORD *)v23 + 1); sub_63FD90(v38, (int)&v42); sub_63FD90(v39, (int)&v44); v24 = *(_DWORD *)(v38 + 16); if ( !v24 ) { v24 = (int)dword_1508B168; if ( !dword_1508B168 ) goto LABEL_12; } v25 = *(_DWORD *)(v39 + 16); v40 = (int)dword_1508B168; if ( v25 ) v40 = v25; if ( !v40 ) goto LABEL_12; v26 = v45; *((_WORD *)v6 + 19) = v43; *((_WORD *)v6 + 20) = v26; *(_DWORD *)((char *)v6 + 42) = (*(int (__thiscall **)(int, __int16 *, unsigned int))(*(_DWORD *)v24 + 28))( v24, &v43, v37); *(_DWORD *)((char *)v6 + 46) = (*(int (__stdcall **)(__int16 *))(*(_DWORD *)v40 + 28))(&v45); if ( sub_4C81E0(&off_849C18, 50) ) { v27 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v27); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Exchange : Packet Too Long", 50); } v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v29 = v28; v30 = v28; v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v32 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v29 + 68); v16 = a3 + 2; v32(v30, *(_WORD *)(v31 + 4), a3, &v44, a3, a3 + 2); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v19 = v33; v20 = &v42; } (*(void (__stdcall **)(_DWORD, int, char *, int))(*(_DWORD *)v19 + 68))(*(_WORD *)(v18 + 4), v16, v20, v16); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); ++*(_WORD *)(v34 + 4); --dword_750CB8; LABEL_29: v49 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SmallItemReloc"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00534630) -------------------------------------------------------- int __thiscall sub_534630(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 unsigned __int8 v5; // bl@8 int (__thiscall *v6)(_DWORD, _DWORD); // edx@10 int v7; // eax@12 int v8; // eax@12 int v9; // eax@12 signed int v10; // eax@14 void (__thiscall *v11)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@15 signed int v12; // edi@18 int v13; // eax@18 int v14; // eax@20 signed int v16; // [sp-4h] [bp-44h]@4 int v17; // [sp-4h] [bp-44h]@5 signed int v18; // [sp-4h] [bp-44h]@15 int v19; // [sp+10h] [bp-30h]@10 int v20; // [sp+14h] [bp-2Ch]@12 int v21; // [sp+18h] [bp-28h]@12 int v22; // [sp+1Ch] [bp-24h]@12 int v23; // [sp+20h] [bp-20h]@10 int v24; // [sp+24h] [bp-1Ch]@12 int v25; // [sp+28h] [bp-18h]@12 int v26; // [sp+2Ch] [bp-14h]@12 int v27; // [sp+30h] [bp-10h]@1 int v28; // [sp+3Ch] [bp-4h]@1 v4 = (int)this; v27 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ"; dword_750AB8[dword_750CB8++] = -1; v28 = 0; if ( !(dword_132448AC & 1) ) { dword_132448AC |= 1u; word_132448A8 = 6; atexit(nullsub_105); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132448A8) ) { v16 = 4098; LABEL_5: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 2, v16); v28 = -1; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ"; LABEL_34: --dword_750CB8; return sub_467660((int)&unk_D020420, v17); } if ( *(_BYTE *)(a2 + 2) < 0xBu ) { v16 = 4100; goto LABEL_5; } v5 = *(_BYTE *)(a2 + 2); if ( v5 >= (*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 53776) + 8))(v4 + 53776) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 2, 4101); LABEL_33: v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ"; v28 = -1; goto LABEL_34; } v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v4 + 58688) + 8); LOWORD(v23) = v5 | 0x3000; LOWORD(v19) = 12288; if ( (unsigned __int8)v6(v4 + 58688, &v23) || (unsigned __int8)(*(int (__thiscall **)(int, int *))(*(_DWORD *)(v4 + 58688) + 8))(v4 + 58688, &v19) ) { v18 = 4099; goto LABEL_31; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v21 = v7; v25 = v7; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v22 = v8; v26 = v8; v24 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 53776))(v4 + 53776, v23 & 0x3FF); v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 53776))(v4 + 53776, v19 & 0x3FF); v20 = v9; if ( !v24 || !v9 ) { v18 = 4102; LABEL_31: v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); goto LABEL_32; } v10 = (unsigned __int16)sub_532D50((void *)(v4 + 155460), v4, v24); if ( (_WORD)v10 != 4097 ) { v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v18 = v10; LABEL_32: v11(v4, 35, 2, v18); goto LABEL_33; } if ( v24 && v20 ) { v12 = 1; v13 = 1; } else { v13 = 0; v12 = 1; } LOBYTE(v14) = sub_401060( &unk_86DDD8, v13, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ : Null Cell", v23 & 0x3FF, v19 & 0x3FF); if ( v14 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 2, 4101); } else { if ( *(_WORD *)(v24 + 8) == -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 35, 2, 4101); } else { if ( *(_WORD *)(v20 + 8) == -1 ) sub_52FB80(a4, v4, (int)&v23, (int)&v19); else sub_5301B0(a4, v4, (int)&v23, (int)&v19); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 2, 4097); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 992))(v4); *(_BYTE *)(v4 + 155564) = 1; } } dword_750CB8 -= v12; v28 = -1; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ"; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132448A8: using guessed type __int16 word_132448A8; // 132448AC: using guessed type int dword_132448AC; //----- (00534970) -------------------------------------------------------- int __thiscall sub_534970(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132448B4 & 1) ) { dword_132448B4 |= 1u; word_132448B0 = 70; atexit(nullsub_106); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132448B0 ) { if ( *((_BYTE *)v4 + 23824) & 0x30 ) sub_534000(v4, *(_BYTE *)(a2 + 2), 0); else (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 7, 2051); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 7, 2050); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132448B0: using guessed type __int16 word_132448B0; // 132448B4: using guessed type int dword_132448B4; //----- (00534AA0) -------------------------------------------------------- int __thiscall sub_534AA0(void *this, __int16 a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // edx@2 int v6; // ST10_4@6 int v7; // eax@6 int v8; // eax@6 void *v9; // ebx@6 int v10; // eax@8 char v11; // al@9 int (__thiscall *v12)(_DWORD); // eax@10 int (*v13)(void); // eax@12 int (*v14)(void); // eax@14 int v15; // eax@15 int v16; // eax@17 int v17; // eax@19 int v18; // eax@21 int v19; // ebx@26 int v20; // eax@28 int v21; // eax@28 bool v22; // al@30 int v23; // ecx@34 int v24; // eax@37 int (__thiscall *v25)(_DWORD); // eax@38 int v26; // eax@42 int v27; // ecx@42 bool v28; // sf@42 unsigned __int8 v29; // of@42 int v30; // ebx@49 int v31; // eax@50 int v32; // eax@50 int v33; // ebx@59 int (__stdcall *v34)(_DWORD); // eax@59 int v35; // ST10_4@59 unsigned __int16 *v36; // ebx@59 __int16 v37; // ax@61 int v38; // ecx@64 __int16 v39; // ax@69 int v41; // eax@78 int v42; // eax@80 __int16 v43; // dx@87 int v44; // ebx@92 int v45; // eax@92 unsigned int v46; // ecx@92 int (__thiscall *v47)(_DWORD); // eax@99 int v48; // eax@99 __int16 v49; // ax@100 int v50; // [sp-8h] [bp-78h]@39 signed int v51; // [sp-8h] [bp-78h]@40 int v52; // [sp-4h] [bp-74h]@13 int *v53; // [sp-4h] [bp-74h]@40 int v54; // [sp+0h] [bp-70h]@0 int v55; // [sp+4h] [bp-6Ch]@0 int v56; // [sp+8h] [bp-68h]@0 int v57; // [sp+Ch] [bp-64h]@0 char v58; // [sp+10h] [bp-60h]@99 int v59; // [sp+14h] [bp-5Ch]@100 int v60; // [sp+18h] [bp-58h]@100 int v61; // [sp+1Ch] [bp-54h]@100 __int16 v62; // [sp+20h] [bp-50h]@87 int v63; // [sp+24h] [bp-4Ch]@87 int v64; // [sp+28h] [bp-48h]@3 int v65; // [sp+2Ch] [bp-44h]@33 __int16 v66; // [sp+30h] [bp-40h]@87 int v67; // [sp+34h] [bp-3Ch]@87 int v68; // [sp+38h] [bp-38h]@35 int v69; // [sp+3Ch] [bp-34h]@53 char *v70; // [sp+40h] [bp-30h]@99 int v71; // [sp+44h] [bp-2Ch]@99 int v72; // [sp+48h] [bp-28h]@99 int v73; // [sp+4Ch] [bp-24h]@69 int v74; // [sp+50h] [bp-20h]@61 int v75; // [sp+54h] [bp-1Ch]@59 int v76; // [sp+58h] [bp-18h]@61 void *v77; // [sp+5Ch] [bp-14h]@1 int v78; // [sp+60h] [bp-10h]@1 int v79; // [sp+6Ch] [bp-4h]@99 void *v80; // [sp+7Ch] [bp+Ch]@28 void *v81; // [sp+7Ch] [bp+Ch]@50 int v82; // [sp+7Ch] [bp+Ch]@59 v3 = (int)this; v4 = a3; v77 = 0; v78 = 0; switch ( (unsigned int)*(_WORD *)a3 >> 10 ) { case 9u: v5 = *(_DWORD *)this; v77 = (char *)this + 36484; goto LABEL_3; case 4u: v5 = *(_DWORD *)this; if ( *((_WORD *)this + 42188) == -1 || (v6 = (*(int (**)(void))(v5 + 2096))(), v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2072))(v3), v8 = sub_4744E0(&dword_D41F888, v7, v6), v5 = *(_DWORD *)v3, (v9 = (void *)v8) == 0) || (v10 = (*(int (__thiscall **)(int))(v5 + 2072))(v3), v5 = *(_DWORD *)v3, *((_DWORD *)v9 + 1050) != v10) || (v11 = (*(int (__thiscall **)(int))(v5 + 1520))(v3), v5 = *(_DWORD *)v3, !v11) ) return (*(int (__cdecl **)(signed int))(v5 + 776))(12); v12 = *(int (__thiscall **)(_DWORD))(v5 + 2072); v77 = v9; v64 = v12(v3); break; case 6u: v5 = *(_DWORD *)this; if ( !(*((_BYTE *)this + 23824) & 0x30) ) return (*(int (__cdecl **)(signed int))(v5 + 776))(12); v13 = *(int (**)(void))(v5 + 840); v77 = (char *)this + 85744; v64 = v13(); break; case 0xCu: v52 = 12; goto LABEL_105; case 2u: v14 = *(int (**)(void))(*(_DWORD *)this + 836); v77 = (char *)this + 152568; v64 = v14(); break; case 3u: v15 = (*(int (__stdcall **)(signed int, void **))(*(_DWORD *)this + 80))(3, &v77); v5 = *(_DWORD *)v3; if ( v15 != 4481 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); goto LABEL_3; case 0xDu: v16 = (*(int (__stdcall **)(signed int, void **))(*(_DWORD *)this + 80))(13, &v77); v5 = *(_DWORD *)v3; if ( v16 != 4481 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); goto LABEL_3; case 0xEu: v17 = (*(int (__stdcall **)(signed int, _DWORD))(*(_DWORD *)this + 80))(14, &v77); v5 = *(_DWORD *)v3; if ( v17 != 4481 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); goto LABEL_3; case 0x10u: v18 = (*(int (__stdcall **)(signed int, _DWORD))(*(_DWORD *)this + 80))(16, &v77); v5 = *(_DWORD *)v3; if ( v18 != 4481 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); LABEL_3: v64 = (*(int (**)(void))(v5 + 836))(); break; case 0u: v5 = *(_DWORD *)this; if ( *((_WORD *)this + 42189) == -1 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); if ( (unsigned __int8)(*(int (**)(void))(v5 + 2136))() || (v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2072))(v3)) == 0 || (v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2096))(v3), v21 = sub_46E840(&dword_D0207E8, v19, v20), (v80 = (void *)v21) == 0) ) goto LABEL_107; v22 = sub_46F930(v21, v19); v5 = *(_DWORD *)v3; if ( !v22 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(v5 + 2164))(v3) ) goto LABEL_107; v77 = sub_5CF620(v80); v64 = v19; break; case 0xFu: return sub_534130(this, (int)((char *)this + 57840), a3); case 5u: v52 = 5; goto LABEL_105; default: v52 = (unsigned int)*(_WORD *)a3 >> 10; LABEL_105: v50 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ : Invalid Item from box"; LABEL_106: sub_639100(&unk_86DDD8, v50, v52); goto LABEL_107; } v65 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); switch ( (unsigned int)*(_WORD *)(v4 + 2) >> 10 ) { case 9u: v5 = *(_DWORD *)v3; v78 = v3 + 36484; v23 = v3; goto LABEL_35; case 4u: case 2u: goto LABEL_107; case 6u: v5 = *(_DWORD *)v3; if ( !(*(_BYTE *)(v3 + 23824) & 0x30) || (v24 = (*(int (__thiscall **)(int))(v5 + 1168))(v3), v5 = *(_DWORD *)v3, (*(_WORD *)(v4 + 2) & 0x3FF) >= v24) ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); v25 = *(int (__thiscall **)(_DWORD))(v5 + 840); v78 = v3 + 85744; v68 = v25(v3); goto LABEL_53; default: goto LABEL_39; case 3u: v53 = &v78; v51 = 3; goto LABEL_41; case 0xDu: v53 = &v78; v51 = 13; goto LABEL_41; case 0xEu: v53 = &v78; v51 = 14; goto LABEL_41; case 0x10u: v53 = &v78; v51 = 16; LABEL_41: if ( (*(int (__thiscall **)(int, signed int, int *))(*(_DWORD *)v3 + 80))(v3, v51, v53) != 4481 ) goto LABEL_107; v26 = (*(int (__stdcall **)(int))(*(_DWORD *)v78 + 4))(v3 + 160312); v5 = *(_DWORD *)v3; v27 = *(_WORD *)(v4 + 2) & 0x3FF; v29 = __OFSUB__(v27, v26); v28 = v27 - v26 < 0; v23 = v3; if ( !(v28 ^ v29) ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); LABEL_35: v68 = (*(int (__thiscall **)(int))(v5 + 836))(v23); goto LABEL_53; case 0u: v5 = *(_DWORD *)v3; if ( *(_WORD *)(v3 + 84378) == -1 ) return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); if ( (unsigned __int8)(*(int (__thiscall **)(int))(v5 + 2136))(v3) || (v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2072))(v3)) == 0 || (v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2096))(v3), v32 = sub_46E840(&dword_D0207E8, v30, v31), (v81 = (void *)v32) == 0) || !sub_46F930(v32, v30) ) goto LABEL_107; v78 = (int)sub_5CF620(v81); v68 = v30; LABEL_53: v69 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); if ( !v77 ) { v52 = (unsigned int)*(_WORD *)v4 >> 10; goto LABEL_105; } if ( !v78 ) { LABEL_39: v52 = (unsigned int)*(_WORD *)v4 >> 10; v50 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ : Invalid Item to box"; goto LABEL_106; } if ( (*(_WORD *)v4 & 0x3FF) >= (*(int (**)(void))(*(_DWORD *)v77 + 8))() || (*(_WORD *)(v4 + 2) & 0x3FF) >= (*(int (__stdcall **)(int))(*(_DWORD *)v78 + 4))(v3 + 160312) || (v33 = (**(int (__stdcall ***)(_DWORD))v77)(*(_WORD *)v4 & 0x3FF), v34 = (int (__stdcall *)(_DWORD))**(_DWORD **)v78, v35 = *(_WORD *)(v4 + 2) & 0x3FF, v75 = v33, v36 = (unsigned __int16 *)(v33 + 8), v82 = v34(v35), *v36 != -1) && !sub_645170(&dword_1508B5A8, v75, *(_WORD *)v4 >> 10, *(_WORD *)(v4 + 2) >> 10) ) goto LABEL_107; v76 = v82 + 8; v37 = *(_WORD *)(v82 + 8); v74 = 0; if ( v37 == -1 || (v74 = sub_645170(&dword_1508B5A8, v82, *(_WORD *)(v4 + 2) >> 10, *(_WORD *)v4 >> 10)) != 0 ) { v38 = v76; } else { if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v82 + 112) + 24))() || (v38 = v76, *(_WORD *)v76 != *v36) ) goto LABEL_107; } if ( (*(_WORD *)v4 & 0xFC00) == 9216 ) { if ( !(*(_WORD *)(v4 + 2) & 0xFC00) ) { v39 = *(_WORD *)v38; v73 = *(_WORD *)v38; if ( v39 != -1 ) { if ( v39 != *v36 || (v73 = sub_418CB0((int)&dword_14D20890, *v36)) == 0 || *(_DWORD *)(*(_DWORD *)v73 + 106) <= (unsigned int)(*(int (__stdcall **)(int))(**(_DWORD **)(v82 + 112) + 28))(v76) ) return (*(int (__cdecl **)(signed int))(*(_DWORD *)v3 + 776))(12); v38 = v76; } } } if ( *(_WORD *)v38 != -1 && *v36 != *(_WORD *)v38 && (*(_WORD *)v4 & 0x3FF) >= (*(int (__stdcall **)(int))(*(_DWORD *)v77 + 4))(v3 + 160312) ) goto LABEL_107; v41 = sub_418CB0((int)&dword_14D20890, *v36); v73 = v41; if ( v41 == 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ : try to move empty cell", v41 != 0); goto LABEL_107; } v42 = 0; if ( (*(_WORD *)(v4 + 2) & 0xFC00) == 6144 ) v42 = v75; if ( (*(_WORD *)v4 & 0xFC00) == 6144 ) v42 = v82; if ( v42 && sub_48F9E0(*(_DWORD *)(v42 + 112), v42) ) return (*(int (__cdecl **)(signed int))(*(_DWORD *)v3 + 776))(12); v43 = *(_WORD *)(v4 + 2); v62 = *(_WORD *)v4; v63 = v75; v66 = v43; v67 = v82; if ( *(_WORD *)v76 == -1 ) return sub_52FB80(a2, v3, (int)&v62, (int)&v66); if ( *v36 != *(_WORD *)v76 ) return sub_5301B0(a2, v3, (int)&v62, (int)&v66); if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v75 + 112) + 24))() ) return sub_5301B0(a2, v3, (int)&v62, (int)&v66); v44 = (*(int (__stdcall **)(unsigned __int16 *))(**(_DWORD **)(v75 + 112) + 28))(v36); v45 = (*(int (__stdcall **)(int))(**(_DWORD **)(v82 + 112) + 28))(v76); v46 = *(_DWORD *)(*(_DWORD *)v73 + 106); if ( v45 + v44 <= v46 ) return sub_5307D0(a2, v3, (int)&v62, (int)&v66, v44); if ( v45 >= v46 ) { if ( !v74 ) return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v3 + 776))(12); return sub_5301B0(a2, v3, (int)&v62, (int)&v66); } if ( v74 ) return sub_530D40(a2, v3, (int)&v62, (int)&v66, v46 - v45); sub_43BB20((int)&v58, v78, v3 + 160312); v47 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004); v79 = 0; v48 = v47(v3); v70 = &v58; v71 = v48; v72 = 9; if ( sub_486D40(&v70) ) { v49 = *(_WORD *)(v4 + 2) ^ (v66 ^ *(_WORD *)(v4 + 2)) & 0x3FF; v66 = v49; v66 = (v49 ^ *((_WORD *)v70 + 4)) & 0x3FF ^ v49; v67 = (*(int (__stdcall **)(_DWORD, int, int, int, int, _DWORD, int, int, int, _DWORD, int, int, int, _DWORD, int, int, int, char *, int, int, int, int, int, int, void *))**((int (__stdcall ****)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))v70 + 1))( *((_DWORD *)v70 + 2), v54, v55, v56, v57, *(_DWORD *)&v58, v59, v60, v61, *(_DWORD *)&v62, v63, v64, v65, *(_DWORD *)&v66, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77); return sub_52FB80(a2, v3, (int)&v62, (int)&v66); } LABEL_107: v5 = *(_DWORD *)v3; return (*(int (__cdecl **)(_DWORD))(v5 + 776))(12); } } // D0207E8: using guessed type int dword_D0207E8; // D41F888: using guessed type int dword_D41F888; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (00535490) -------------------------------------------------------- int __thiscall sub_535490(void *this, int a2, int a3, __int16 a4) { void *v4; // esi@1 int v5; // edi@8 unsigned __int16 v6; // cx@10 int v8; // [sp-4h] [bp-24h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132448BC & 1) ) { dword_132448BC |= 1u; word_132448B8 = 86; atexit(nullsub_101); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132448B8 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) || *((_DWORD *)v4 + 1984) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); } else { v5 = a2 + 2; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v4 + 14672) + 8))( (char *)v4 + 58688, a2 + 2) || (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v4 + 14672) + 8))( (char *)v4 + 58688, a2 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); } else { v6 = *(_WORD *)(a2 + 4); if ( (v6 ^ *(_WORD *)v5) & 0xFC00 || (v6 ^ *(_WORD *)v5) & 0x3FF ) sub_534AA0(v4, a4, v5); else (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 12, 577); } } v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132448B8: using guessed type __int16 word_132448B8; // 132448BC: using guessed type int dword_132448BC; //----- (00535650) -------------------------------------------------------- int __thiscall sub_535650(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@6 int v7; // ebx@8 int v8; // ST0C_4@8 int v9; // eax@8 signed __int16 v10; // cx@9 int v11; // eax@12 int v12; // edi@19 int v13; // eax@19 void *v14; // edi@19 int v15; // eax@21 int v16; // eax@22 int v18; // [sp+28h] [bp+8h]@8 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 12327; if ( !(dword_132448C4 & 1) ) { dword_132448C4 |= 1u; word_132448C0 = 70; atexit(nullsub_104); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132448C0) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { *((_WORD *)v5 + 5) = 5249; if ( sub_4C81E0(&off_849C18, 12) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); --dword_750CB8; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"); } v7 = a2; v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2096))(v4); v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2072))(v4); v18 = sub_4744E0(&dword_D41F888, v9, v8); if ( !v18 ) { v10 = 5250; goto LABEL_10; } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1520))(v4) ) { v10 = 5252; goto LABEL_10; } if ( *(_QWORD *)(v7 + 2) > (unsigned __int64)sub_473AF0(v18) ) *(_QWORD *)(v7 + 2) = sub_473AF0(v18); if ( !*(_QWORD *)(v7 + 2) ) { v10 = 5251; LABEL_10: *((_WORD *)v5 + 5) = v10; if ( sub_4C81E0(&off_849C18, 12) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); --dword_750CB8; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"); } v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 72))( v12, *(_WORD *)(v13 + 4), *(_DWORD *)(v7 + 2), *(_DWORD *)(v7 + 6), 1); v14 = off_849C18; *(_WORD *)off_849C18 = 13428; *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v14 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v14 + 10) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2072))(v4); *(_DWORD *)((char *)v14 + 14) = *(_DWORD *)(v7 + 2); *(_DWORD *)((char *)v14 + 18) = *(_DWORD *)(v7 + 6); *((_WORD *)v14 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( sub_4C81E0(&off_849C18, 22) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 22); } v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v16 + 4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D41F888: using guessed type int dword_D41F888; // 132448C0: using guessed type __int16 word_132448C0; // 132448C4: using guessed type int dword_132448C4; // 14D16430: using guessed type int dword_14D16430; //----- (00535960) -------------------------------------------------------- int __thiscall sub_535960(void *this, int a2) { int v2; // ST08_4@1 void *v3; // edi@1 int (__thiscall *v4)(_DWORD); // eax@1 int v5; // eax@1 int v6; // eax@1 int v7; // eax@1 int v8; // ebx@1 int v9; // eax@3 int v10; // ST04_4@4 __time32_t v11; // eax@4 __time32_t v12; // eax@4 __int64 v13; // ST20_8@5 __int64 v14; // kr00_8@5 void *v15; // eax@5 int v16; // eax@7 void *v17; // eax@8 int v18; // esi@8 int v19; // eax@8 int v20; // eax@9 int v21; // eax@11 int v23; // [sp+10h] [bp-48h]@1 char v24; // [sp+1Ch] [bp-3Ch]@8 unsigned int v25; // [sp+48h] [bp-10h]@1 int v26; // [sp+54h] [bp-4h]@1 int v27; // [sp+58h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v2 = (unsigned int)&v27 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2096); v26 = 0; v5 = v4(v3); v6 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 2072))(v3, v5); v7 = sub_4744E0(&dword_D41F888, v6, v2); v8 = v7; v23 = v7; if ( *(_WORD *)(a2 + 16) == 5248 && v7 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a2 + 6), 0) ) { v10 = *(_WORD *)(a2 + 6); v11 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } v13 = *(_QWORD *)(a2 + 8); v14 = sub_473AF0(v8) - v13; sub_473B00(v23, v13, SHIDWORD(v13)); v15 = off_849C18; *(_WORD *)off_849C18 = 12327; *(_DWORD *)((char *)v15 + 2) = *(_DWORD *)(a2 + 8); *(_DWORD *)((char *)v15 + 6) = *(_DWORD *)(a2 + 12); *((_WORD *)v15 + 5) = *(_WORD *)(a2 + 16); if ( sub_4C81E0(&off_849C18, 12) ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v16 + 12))(v16, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : Packet Too Long", 12); } v17 = off_849C18; *(_WORD *)off_849C18 = 29843; v18 = (int)((char *)v17 + 2); *((_BYTE *)v17 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v18 + 1) = *((_WORD *)v3 + 2); *(_DWORD *)(v18 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)(v18 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2072))(v3); *(_DWORD *)(v18 + 40) = HIDWORD(v14); *(_BYTE *)(v18 + 11) = 2; *(_DWORD *)(v18 + 36) = v14; v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); *(_DWORD *)(v18 + 14) = *(_DWORD *)v19; *(_DWORD *)(v18 + 18) = *(_DWORD *)(v19 + 4); *(_DWORD *)(v18 + 22) = *(_DWORD *)(v19 + 8); *(_DWORD *)(v18 + 26) = *(_DWORD *)(v19 + 12); *(_DWORD *)(v18 + 30) = *(_DWORD *)(v19 + 16); *(_WORD *)(v18 + 34) = -1; *(_BYTE *)(v18 + 12) = 0; sub_5A4B40(&off_849C18, 46); memcpy(&v24, (const void *)v18, 0x2Cu); sub_4740B0((int)&v24); } else { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v20 + 40))(v20, *(_WORD *)(a2 + 6)); *(_WORD *)off_849C18 = 12327; *(_WORD *)(a2 + 16) = 5253; if ( sub_4C81E0(&off_849C18, 12) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v21 + 12))(v21, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : Packet Too Long", 12); } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D41F888: using guessed type int dword_D41F888; //----- (00535C50) -------------------------------------------------------- char __thiscall sub_535C50(int this, unsigned __int8 *a2) { char result; // al@1 result = (char)a2; if ( a2 ) { result = sub_50C9A0((void *)(this + 162000), *a2, (int)(a2 + 1)); if ( !result ) result = (unsigned int)sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_SetSellItemInfo : Initialize fail", 0); } return result; } //----- (00535C90) -------------------------------------------------------- FILE *__thiscall sub_535C90(void *this) { void *v1; // esi@1 int v2; // eax@1 FILE *result; // eax@1 int v4; // edi@2 int v5; // eax@4 v1 = this; v2 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 12379; *(_BYTE *)v2 = 0; result = (FILE *)sub_50CEE0((int)((char *)this + 162000), v2, v2 + 1); if ( (signed int)result > 0 ) { v4 = (int)((char *)&result->_ptr + 3); if ( sub_4C81E0(&off_849C18, (int)((char *)&result->_ptr + 3)) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v1, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_SendSellItemInfo_Client : Packet Too Long", v4); } } return result; } //----- (00535D10) -------------------------------------------------------- bool __thiscall sub_535D10(int this) { int v1; // eax@1 bool result; // al@2 v1 = *(_DWORD *)(this + 84504); if ( v1 && *(_DWORD *)(v1 + 4) ) result = (*(int (**)(void))(**(_DWORD **)(v1 + 4) + 56))() != 0; else result = 0; return result; } //----- (00535D40) -------------------------------------------------------- void __thiscall sub_535D40(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int v6; // eax@2 int v7; // eax@3 int v8; // eax@4 int v9; // ebx@7 void *v10; // eax@10 int v11; // eax@12 void *v12; // eax@13 int v13; // eax@15 signed __int16 v14; // [sp+8h] [bp-4h]@6 v4 = a4; v5 = this; if ( a4 ) { v6 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(a4 + 8)); if ( v6 ) { v7 = *(_DWORD *)v6; if ( v7 ) { v8 = *(_DWORD *)(v7 + 102); if ( v8 != 15 ) { if ( v8 != 29 ) { v14 = sub_50CB90((char *)v5 + 162000, a2, a3, v4, (int)&a4); if ( v14 != -1 ) { v9 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(v4 + 8)); if ( v9 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 3684))(v5) ) { if ( (_WORD)a4 != -1 ) { v10 = off_849C18; *(_WORD *)off_849C18 = 12381; *((_WORD *)v10 + 1) = a4; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_SellItemList_Insert : Packet Too Long", 4); } } v12 = off_849C18; *(_WORD *)off_849C18 = 12380; *((_WORD *)v12 + 1) = v14; sub_63D090((void *)v4, v9, *(_WORD *)(v4 + 8), (int)((char *)v12 + 4)); if ( sub_4C81E0(&off_849C18, 107) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v13 + 12))(v13, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_SellItemList_Insert : Packet Too Long", 107); } } } } } } } } } } // 14D20890: using guessed type int dword_14D20890; //----- (00535EC0) -------------------------------------------------------- int __thiscall sub_535EC0(int this, int a2) { int v2; // esi@1 int result; // eax@1 void *v4; // eax@2 int v5; // eax@4 v2 = this; sub_50C960((void *)(this + 162000), a2); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3684))(v2); if ( (_BYTE)result ) { v4 = off_849C18; *(_WORD *)off_849C18 = 12381; *((_WORD *)v4 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { result = (int)sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_SellItemList_Insert : Packet Too Long", 4); } } return result; } //----- (00535F50) -------------------------------------------------------- FILE *__thiscall sub_535F50(void *this) { void *v1; // eax@1 FILE *result; // eax@1 int v3; // esi@2 int v4; // eax@4 v1 = off_849C18; *(_WORD *)off_849C18 = 16439; *((_BYTE *)v1 + 8) = 0; result = (FILE *)sub_50CD00((int)((char *)this + 162000), (int)((char *)v1 + 8), (int)((char *)v1 + 9)); if ( (signed int)result > 0 ) { v3 = (int)((char *)&result->_base + 1); if ( sub_4C81E0(&off_849C18, (int)((char *)&result->_base + 1)) ) { v4 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v4); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_SendSellItemInfo_World : Packet Too Long", v3); } } return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (00535FD0) -------------------------------------------------------- int __thiscall sub_535FD0(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { void *v7; // esi@1 int v8; // edi@1 int v9; // edx@1 int v10; // ebx@3 int v11; // eax@5 int v12; // edx@5 int v13; // eax@6 int (__thiscall *v14)(_DWORD); // eax@8 char v15; // al@8 int v16; // edx@8 int v17; // eax@10 __int16 v18; // si@13 int v19; // ST10_4@13 char *v20; // eax@13 void *v21; // esi@13 int v22; // eax@13 int v23; // ST0C_4@13 int v24; // eax@13 int v25; // eax@13 int v26; // eax@15 int v27; // esi@16 int v28; // eax@16 int v30; // [sp-4h] [bp-48h]@2 int (**v31)(); // [sp+10h] [bp-34h]@5 void *v32; // [sp+14h] [bp-30h]@5 int v33; // [sp+1Ch] [bp-28h]@8 int *v34; // [sp+20h] [bp-24h]@8 int v35; // [sp+24h] [bp-20h]@8 int v36; // [sp+28h] [bp-1Ch]@8 int v37; // [sp+2Ch] [bp-18h]@1 int v38; // [sp+30h] [bp-14h]@13 int v39; // [sp+34h] [bp-10h]@10 int v40; // [sp+40h] [bp-4h]@1 int v41; // [sp+4Ch] [bp+8h]@12 int v42; // [sp+5Ch] [bp+18h]@12 int v43; // [sp+5Ch] [bp+18h]@13 v7 = this; v37 = (int)"ItemInventory::ii_RepurchaseAll"; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_RepurchaseAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_RepurchaseAll"; dword_750AB8[dword_750CB8++] = -1; v8 = a2; v9 = *(_DWORD *)a2; v40 = 0; if ( a2 ) { v10 = a6; if ( a6 ) { v11 = (*(int (__thiscall **)(int))(v9 + 1176))(a2); v31 = &off_6A86A4; v32 = v7; v12 = *(_DWORD *)v7; if ( v11 ) v13 = (*(int (__thiscall **)(void *, int))(v12 + 4))(v7, v11); else v13 = (*(int (__thiscall **)(void *))(v12 + 8))(v7); v33 = v13; v31 = (int (**)())&off_6A86B4; v14 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v40) = 1; v34 = (int *)&v31; v35 = v14(a2); v36 = 9; v15 = sub_486D40(&v34); v16 = *(_DWORD *)a2; if ( v15 ) { v17 = (*(int (__thiscall **)(int))(v16 + 2004))(a2); v39 = v17; if ( v17 && (v41 = *(_WORD *)(v17 + 4), (v42 = *(_DWORD *)(v8 + 122)) != 0) ) { v18 = *(_WORD *)(v10 + 8); v19 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v20 = sub_5A7540(byte_14D16AE8); sub_63D0E0((void *)v10, v18, 1, *((_DWORD *)v20 + 4), v19); v21 = off_849C18; *(_WORD *)off_849C18 = 13497; *((_WORD *)v21 + 1) = *(_WORD *)(v8 + 4); *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); *((_WORD *)v21 + 4) = v41; *(_DWORD *)((char *)v21 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); *(_DWORD *)((char *)v21 + 14) = *(_DWORD *)v42; *(_DWORD *)((char *)v21 + 18) = *(_DWORD *)(v42 + 4); *(_DWORD *)((char *)v21 + 22) = *(_DWORD *)(v42 + 8); *((_BYTE *)v21 + 26) = 0; v22 = *(_DWORD *)(v8 + 102); *(_DWORD *)((char *)v21 + 26) = *(_DWORD *)v22; *(_DWORD *)((char *)v21 + 30) = *(_DWORD *)(v22 + 4); *((_WORD *)v21 + 17) = *((_WORD *)v34 + 4) & 0x3FF | 0x2400; v38 = (int)((char *)v21 + 34); *((_WORD *)v21 + 22) = *(_WORD *)(v10 + 8); *((_DWORD *)v21 + 9) = *(_DWORD *)v10; *((_DWORD *)v21 + 10) = *(_DWORD *)(v10 + 4); *((_WORD *)v21 + 23) = 64; *((_DWORD *)v21 + 12) = a7; v23 = *(_WORD *)(v10 + 8); v24 = (int)sub_63ACA0(dword_1508B168, *(_WORD *)(v10 + 8)); v25 = sub_63D0C0((void *)v10, v24, v23, (int)((char *)v21 + 66)); *((_DWORD *)v21 + 13) = a4; v43 = v25 - (_DWORD)((char *)v21 + 66); *((_DWORD *)v21 + 14) = a5; *((_DWORD *)v21 + 15) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 840))(v8); *((_WORD *)v21 + 32) = *(_WORD *)(v8 + 84502); if ( sub_4C81E0(&off_849C18, v43 + 66) ) { v26 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v26); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_RepurchaseAll : Packet Too Long", v43 + 66); } v27 = v39; (*(void (__thiscall **)(int, int, int, _DWORD, signed int))(*(_DWORD *)v39 + 72))(v39, v41, a7, 0, -1); v28 = (**(int (__stdcall ***)(_DWORD))v34[1])(v34[2]); (*(void (__thiscall **)(int, int, int, int, int, int))(*(_DWORD *)v27 + 64))(v27, v41, v28, v10, v38, v38); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v27 + 120))(v27, v41, a3); ++*(_WORD *)(v27 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 2880))(v8); --dword_750CB8; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v8 + 776))(v8, 12, 90, 13929); --dword_750CB8; } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v16 + 776))(a2, 12, 90, 13933); --dword_750CB8; } v31 = &off_6A86A4; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v9 + 776))(a2, 12, 90, 13930); --dword_750CB8; } v30 = (int)"ItemInventory::ii_RepurchaseAll"; } else { (*(void (__thiscall **)(_DWORD, signed int, signed int, signed int))(v9 + 776))(0, 12, 90, 13929); --dword_750CB8; v30 = (int)"ItemInventory::ii_RepurchaseAll"; } v40 = -1; return sub_467660((int)&unk_D020420, v30); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00536340) -------------------------------------------------------- int __stdcall sub_536340(int a1, int a2, int a3, int a4, int a5, int a6, __int16 a7, int a8) { int v8; // ecx@3 int v9; // eax@5 int v10; // edi@5 int v11; // eax@7 void *v12; // esi@7 int v13; // eax@9 unsigned int v15; // [sp-4h] [bp-A4h]@1 int v16; // [sp-4h] [bp-A4h]@2 int v17; // [sp+14h] [bp-8Ch]@7 int v18; // [sp+18h] [bp-88h]@3 int v19; // [sp+18h] [bp-88h]@7 int v20; // [sp+20h] [bp-80h]@3 int v21; // [sp+24h] [bp-7Ch]@7 char v22; // [sp+28h] [bp-78h]@5 __int16 v23; // [sp+8Ch] [bp-14h]@3 char v24; // [sp+8Eh] [bp-12h]@3 unsigned int v25; // [sp+90h] [bp-10h]@1 int v26; // [sp+9Ch] [bp-4h]@1 int v27; // [sp+A0h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v15 = (unsigned int)&v27 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_RepurchaseLot"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_RepurchaseLot"; dword_750AB8[dword_750CB8++] = -1; v26 = 0; if ( a5 ) { memcpy(&v20, (const void *)a5, 0x6Cu); v8 = *(_DWORD *)(a5 + 112); v23 = *(_WORD *)(a5 + 108); v24 = *(_BYTE *)(a5 + 110); v18 = v8; if ( v8 ) { (*(void (__stdcall **)(char *, int, unsigned int))(*(_DWORD *)v8 + 32))(&v22, a6, v15); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v10 = v9; if ( v9 ) { v11 = *(_WORD *)(v9 + 4); v12 = off_849C18; *(_WORD *)off_849C18 = 13499; *((_WORD *)v12 + 1) = *(_WORD *)(a1 + 4); v17 = v11; *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_WORD *)v12 + 4) = v17; *((_WORD *)v12 + 5) = *(_WORD *)(a5 + 8); *((_DWORD *)v12 + 3) = v20; *((_DWORD *)v12 + 4) = v21; *((_WORD *)v12 + 10) = 40; *((_WORD *)v12 + 11) = a7 & 0x3FF | 0x2400; v19 = sub_63D0C0(&v20, v18, *(_WORD *)(a5 + 8), (int)((char *)v12 + 42)) - (_DWORD)((char *)v12 + 42); *((_DWORD *)v12 + 6) = a8; *((_DWORD *)v12 + 7) = a3; *((_DWORD *)v12 + 8) = a4; *((_DWORD *)v12 + 9) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 840))(a1); *((_WORD *)v12 + 20) = *(_WORD *)(a1 + 84502); if ( sub_4C81E0(&off_849C18, v19 + 42) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_RepurchaseLot : Packet Too Long", v19 + 42); } (*(void (__thiscall **)(int, int, int, _DWORD, signed int))(*(_DWORD *)v10 + 72))(v10, v17, a8, 0, -1); (*(void (__thiscall **)(int, int, int, int *, char *, char *))(*(_DWORD *)v10 + 64))( v10, v17, a5, &v20, (char *)v12 + 22, (char *)v12 + 22); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v10 + 120))(v10, v17, a2); ++*(_WORD *)(v10 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 2880))(a1); --dword_750CB8; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a1 + 776))(a1, 12, 90, 13929); --dword_750CB8; } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)a1 + 776))( a1, 12, 90, 13930, v15); --dword_750CB8; } v16 = (int)"ItemInventory::ii_RepurchaseLot"; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)a1 + 776))( a1, 12, 90, 13930, v15); --dword_750CB8; v16 = (int)"ItemInventory::ii_RepurchaseLot"; } v26 = -1; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00536610) -------------------------------------------------------- int __stdcall sub_536610(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@3 int v4; // eax@4 int v5; // ST04_4@5 __time32_t v6; // eax@5 __time32_t v7; // eax@5 int v8; // eax@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_ALL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_ALL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 8) == 13928 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 10), 0) ) { v5 = *(_WORD *)(a1 + 10); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_ALL_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 10)); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 90, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2884))(v2, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_ALL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00536760) -------------------------------------------------------- int __stdcall sub_536760(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@3 int v4; // eax@4 int v5; // ST04_4@5 __time32_t v6; // eax@5 __time32_t v7; // eax@5 int v8; // eax@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_LOT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_LOT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 8) == 13928 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 10), 0) ) { v5 = *(_WORD *)(a1 + 10); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_LOT_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 10)); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 90, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2884))(v2, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_REPURCHASE_LOT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005368B0) -------------------------------------------------------- int __thiscall sub_5368B0(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@9 int v6; // eax@11 int v7; // edi@11 int v8; // eax@14 void *v9; // eax@16 int v10; // edx@16 int v11; // eax@20 int v12; // ebx@24 int (__thiscall *v13)(_DWORD); // eax@24 unsigned __int64 v14; // qax@24 __int16 v15; // ST18_2@27 int (__thiscall *v16)(_DWORD); // edx@27 int v17; // eax@27 int v18; // eax@28 int v19; // ebx@28 int v20; // ecx@30 int v21; // eax@34 signed int v23; // [sp-8h] [bp-60h]@12 signed int v24; // [sp-4h] [bp-5Ch]@7 signed int v25; // [sp-4h] [bp-5Ch]@12 int v26; // [sp-4h] [bp-5Ch]@13 int (**v27)(); // [sp+10h] [bp-48h]@27 int *v28; // [sp+24h] [bp-34h]@27 int v29; // [sp+28h] [bp-30h]@27 int v30; // [sp+2Ch] [bp-2Ch]@27 int v31; // [sp+30h] [bp-28h]@1 int v32; // [sp+34h] [bp-24h]@27 int v33; // [sp+38h] [bp-20h]@30 int v34; // [sp+3Ch] [bp-1Ch]@24 void *v35; // [sp+40h] [bp-18h]@16 int v36; // [sp+44h] [bp-14h]@14 int v37; // [sp+48h] [bp-10h]@14 int v38; // [sp+54h] [bp-4h]@1 int v39; // [sp+60h] [bp+8h]@20 v4 = (int)this; v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; dword_750AB8[dword_750CB8++] = -1; v38 = 0; if ( !(dword_132448D0 & 1) ) { dword_132448D0 |= 1u; word_132448CC = 70; atexit(nullsub_107); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132448CC) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 || *(_WORD *)(v4 + 85728) & 0xC ) goto LABEL_46; if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3684))(v4) ) { v24 = 13937; LABEL_41: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 90, v24); v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; goto LABEL_42; } if ( !sub_4C3BD0(v4 + 84508, v4) || (v5 = *(_DWORD *)(v4 + 84504)) == 0 || !*(_DWORD *)v5 ) { LABEL_46: v24 = 13929; goto LABEL_41; } v6 = sub_50CC70(v4 + 162000, *(_WORD *)(a2 + 2)); v7 = v6; if ( !v6 || (v37 = v6 + 18, v8 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v6 + 18)), (v36 = v8) == 0) || !*(_DWORD *)v8 ) { v25 = 13930; v23 = 90; LABEL_13: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, v23, v25); v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; LABEL_42: v38 = -1; goto LABEL_43; } v9 = sub_63ACA0(dword_1508B168, *(_WORD *)v37); v10 = *(_DWORD *)v4; v35 = v9; if ( !v9 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v10 + 776))(v4, 12, 90, 13930); v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; goto LABEL_42; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v10 + 1240))(v4) < *(_BYTE *)(*(_DWORD *)v36 + 219) ) { v25 = 13931; v23 = 4; goto LABEL_13; } v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v35 + 28))(v37); v39 = v11; if ( !v11 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 90, 13930); v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; goto LABEL_42; } if ( (unsigned int)v11 > *(_DWORD *)(*(_DWORD *)v36 + 106) ) { v39 = *(_DWORD *)(*(_DWORD *)v36 + 106); v11 = *(_DWORD *)(*(_DWORD *)v36 + 106); } v12 = v11 * *(_DWORD *)(*(_DWORD *)v36 + 215); v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1076); v34 = v12; LODWORD(v14) = v13(v4); if ( (unsigned int)v12 <= v14 ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v35 + 24))() == 1 ) { v15 = *(_WORD *)v37; v32 = v4 + 36484; sub_43BB70((int)&v27, v4 + 36484, v15, v4 + 160312); v16 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOBYTE(v38) = 1; v17 = v16(v4); v28 = (int *)&v27; v29 = v17; v30 = 9; if ( sub_486D40(&v28) == 1 ) { while ( 1 ) { v18 = (**(int (__stdcall ***)(_DWORD))v28[1])(v28[2]); v19 = v18; if ( v18 ) { v20 = *(_DWORD *)(v18 + 112); v33 = v20; if ( v20 ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v20 + 24))() ) { v21 = v39 + (*(int (__stdcall **)(int))(*(_DWORD *)v33 + 28))(v19 + 8); if ( (unsigned int)v21 <= *(_DWORD *)(*(_DWORD *)v36 + 106) ) { sub_536340(v4, *(_WORD *)v7, *(_DWORD *)(v7 + 2), *(_DWORD *)(v7 + 6), v19, v21, v28[2], v34); v27 = &off_6A86A4; v38 = -1; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; goto LABEL_43; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ : Invalid unlot item", 0); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ : Invalid cell itemattr", 0); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ : Invalid cell", 0); } if ( !sub_486DA0((void **)&v28) ) { v12 = v34; break; } } } LOBYTE(v38) = 0; v27 = &off_6A86A4; } (*(void (__stdcall **)(int, int))(*(_DWORD *)v35 + 32))(v37, v39); sub_535FD0((void *)(v4 + 36484), v4, *(_WORD *)v7, *(_DWORD *)(v7 + 2), *(_DWORD *)(v7 + 6), v7 + 10, v12); v38 = -1; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 90, 13932); v38 = -1; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_REPURCHASE_REQ"; } LABEL_43: --dword_750CB8; return sub_467660((int)&unk_D020420, v26); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132448CC: using guessed type __int16 word_132448CC; // 132448D0: using guessed type int dword_132448D0; // 14D20890: using guessed type int dword_14D20890; //----- (00536CC0) -------------------------------------------------------- int __stdcall sub_536CC0(int a1, __int16 a2, int a3, int a4, int a5) { void *v5; // edi@1 int v6; // esi@1 int v7; // ebx@1 __int16 v8; // ax@1 int v9; // eax@1 int v10; // eax@3 int v11; // ecx@5 int v12; // eax@6 int v13; // edx@8 int v14; // ecx@8 int v15; // eax@13 int v16; // eax@16 int v17; // eax@17 int v18; // ST14_4@17 int v19; // ST10_4@17 int v20; // edi@17 int v21; // eax@17 int v22; // edi@17 int v23; // eax@17 int v24; // eax@17 int v25; // eax@17 int v27; // [sp+2Ch] [bp+Ch]@7 int v28; // [sp+2Ch] [bp+Ch]@14 int v29; // [sp+2Ch] [bp+Ch]@17 int v30; // [sp+30h] [bp+10h]@1 int v31; // [sp+38h] [bp+18h]@3 sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_SellAll"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_SellAll"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = a1; *((_WORD *)off_849C18 + 1) = a2; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_WORD *)v5 = 13346; v7 = a3; *((_WORD *)v5 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6) + 4); *(_DWORD *)((char *)v5 + 10) = *(_DWORD *)a3; *(_DWORD *)((char *)v5 + 14) = *(_DWORD *)(a3 + 4); v30 = (int)((char *)v5 + 18); v8 = *((_WORD *)v5 + 9) & 0x3FF | 0x2400; *((_WORD *)v5 + 9) = v8; *((_WORD *)v5 + 9) = v8 ^ (v8 ^ *(_BYTE *)a4) & 0x3FF; *((_DWORD *)v5 + 5) = a5; *((_WORD *)v5 + 12) = *(_WORD *)(v7 + 8); *(_DWORD *)((char *)v5 + 26) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 840))(v6); *((_WORD *)v5 + 15) = *(_WORD *)(a1 + 84502); *((_DWORD *)v5 + 8) = (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 28))(v7 + 8); *((_DWORD *)v5 + 9) = 0; *((_BYTE *)v5 + 40) = 0; v9 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); if ( !v9 || (v10 = *(_DWORD *)v9, (v31 = v10) == 0) ) goto LABEL_2; if ( *(_DWORD *)(v10 + 102) == 15 ) { v11 = *(_DWORD *)(v7 + 112); if ( v11 ) { v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v11 + 68))(v7); if ( (*(_BYTE *)v12 & 0xFu) <= 8 ) { v27 = 0; if ( *(_BYTE *)v12 & 0xF ) { v13 = (int)((char *)v5 + 41); v14 = v12 + 1; while ( 1 ) { *(_DWORD *)v13 = *(_DWORD *)v14; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v14 + 4); v14 += 8; ++v27; if ( v27 >= (*(_BYTE *)v12 & 0xF) ) break; v13 += 10; } } *((_BYTE *)v5 + 40) = *(_BYTE *)v12 & 0xF; v10 = v31; goto LABEL_12; } } LABEL_2: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_SellAll"); } LABEL_12: if ( *(_DWORD *)(v10 + 102) == 29 ) { v15 = 5 * *((_BYTE *)v5 + 40); *(_DWORD *)((char *)v5 + 10 * *((_BYTE *)v5 + 40) + 41) = *(_DWORD *)(v7 + 10); *(_DWORD *)((char *)v5 + 2 * v15 + 45) = *(_DWORD *)(v7 + 14); ++*((_BYTE *)v5 + 40); } v28 = 10 * *((_BYTE *)v5 + 40) + 41; if ( sub_4C81E0(&off_849C18, 10 * *((_BYTE *)v5 + 40) + 41) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_SellAll : Packet Too Long", v28); } v29 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v18 = *((_DWORD *)v5 + 5); v19 = *(_WORD *)(v17 + 4); (*(void (**)(void))(*(_DWORD *)v29 + 72))(); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, int, int, int))(*(_DWORD *)v20 + 48))(v20, *(_WORD *)(v21 + 4), v7, v30, v30); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, int))(*(_DWORD *)v22 + 116))( v22, *(_WORD *)(v23 + 4), *(_DWORD *)v7, *(_DWORD *)(v7 + 4), v7); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v24 + 4); v25 = (*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1056))( a1, *(_DWORD *)v7, *(_DWORD *)(v7 + 4), *(_WORD *)(a1 + 84502)); sub_5C93C0(v25, v19, v18, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_SellAll"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00536FE0) -------------------------------------------------------- int __stdcall sub_536FE0(int a1, __int16 a2, int a3, int a4, int a5) { unsigned int v5; // ST1C_4@1 int v6; // esi@1 int (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // eax@1 int v8; // ecx@1 int v9; // eax@1 unsigned int v10; // ecx@1 void *v11; // esi@3 int v12; // edi@3 __int16 v13; // ax@3 int v14; // eax@5 int v15; // ST3C_4@6 int v16; // eax@6 int v17; // ST18_4@6 int v18; // ST14_4@6 int v19; // esi@6 int v20; // eax@6 int v21; // edx@6 int v22; // edi@6 int v23; // eax@6 int v24; // eax@6 int v25; // eax@6 int v27; // [sp+10h] [bp-100h]@1 int v28; // [sp+1Ch] [bp-F4h]@3 int v29; // [sp+20h] [bp-F0h]@6 int v30; // [sp+24h] [bp-ECh]@6 char v31; // [sp+28h] [bp-E8h]@6 __int16 v32; // [sp+8Ch] [bp-84h]@6 char v33; // [sp+8Eh] [bp-82h]@6 char v34; // [sp+90h] [bp-80h]@1 int v35; // [sp+98h] [bp-78h]@3 __int16 v36; // [sp+FCh] [bp-14h]@1 char v37; // [sp+FEh] [bp-12h]@1 unsigned int v38; // [sp+100h] [bp-10h]@1 int v39; // [sp+10Ch] [bp-4h]@1 int v40; // [sp+110h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v5 = (unsigned int)&v40 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ItemInventory::ii_SellLot"); dword_7508B8[dword_750CB8] = (int)"ItemInventory::ii_SellLot"; dword_750AB8[dword_750CB8++] = -1; memcpy(&v34, (const void *)a3, 0x6Cu); v36 = *(_WORD *)(a3 + 108); v37 = *(_BYTE *)(a3 + 110); v6 = *(_DWORD *)(a3 + 112); v7 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 28); v8 = *(_DWORD *)(a3 + 112); v39 = 0; v27 = v6; v9 = v7(v8, a3 + 8, v5); v10 = *(_DWORD *)(a4 + 1); if ( v10 < v9 ) { (*(void (__thiscall **)(int, int *, unsigned int))(*(_DWORD *)v6 + 32))(v6, &v35, v9 - v10); v11 = off_849C18; *((_WORD *)off_849C18 + 1) = a2; *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_WORD *)v11 = 13349; *((_WORD *)v11 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1) + 4); *((_WORD *)v11 + 11) = *(_WORD *)(a3 + 8); *(_DWORD *)((char *)v11 + 10) = *(_DWORD *)a3; *(_DWORD *)((char *)v11 + 14) = *(_DWORD *)(a3 + 4); v12 = (int)((char *)v11 + 20); v13 = *((_WORD *)v11 + 10) & 0x3FF | 0x2400; *((_WORD *)v11 + 10) = v13; *((_WORD *)v11 + 10) = v13 ^ (v13 ^ *(_BYTE *)a4) & 0x3FF; *((_DWORD *)v11 + 6) = a5; *((_WORD *)v11 + 9) = 32; *((_DWORD *)v11 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 840))(a1); *((_WORD *)v11 + 16) = *(_WORD *)(a1 + 84502); v28 = sub_63D0C0(&v34, v27, v35, (int)((char *)v11 + 34)) - (_DWORD)((char *)v11 + 34) + 34; if ( sub_4C81E0(&off_849C18, v28) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_SellLot : Packet Too Long", v28); } v15 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v17 = *((_DWORD *)v11 + 6); v18 = *(_WORD *)(v16 + 4); (*(void (**)(void))(*(_DWORD *)v15 + 72))(); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, int, char *, int, int))(*(_DWORD *)v19 + 64))( v19, *(_WORD *)(v20 + 4), a3, &v34, v12, v12); v21 = *(_DWORD *)(a4 + 1); memcpy(&v29, &v34, 0x6Cu); v32 = v36; v33 = v37; v29 = -1; v30 = -1; (*(void (__stdcall **)(char *, int))(*(_DWORD *)v27 + 32))(&v31, v21); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, int *))(*(_DWORD *)v22 + 116))( v22, *(_WORD *)(v23 + 4), *(_DWORD *)a3, *(_DWORD *)(a3 + 4), &v29); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v24 + 4); v25 = (*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 1056))( a1, *(_DWORD *)a3, *(_DWORD *)(a3 + 4), *(_WORD *)(a1 + 84502)); sub_5C93C0(v25, v18, v17, 0); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"ItemInventory::ii_SellLot : Invalid lot", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a1 + 776))(a1, 12, 5, 901); --dword_750CB8; } v39 = -1; return sub_467660((int)&unk_D020420, (int)"ItemInventory::ii_SellLot"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00537350) -------------------------------------------------------- int __thiscall sub_537350(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 int v5; // eax@6 int v6; // edi@8 int v7; // eax@17 int v8; // eax@22 int v9; // eax@28 unsigned int v10; // ecx@28 signed int v12; // [sp-8h] [bp-30h]@31 int v13; // [sp-4h] [bp-2Ch]@9 signed int v14; // [sp-4h] [bp-2Ch]@11 signed int v15; // [sp-4h] [bp-2Ch]@31 int v16; // [sp+14h] [bp-14h]@26 int v17; // [sp+18h] [bp-10h]@10 int v18; // [sp+18h] [bp-10h]@15 int v19; // [sp+18h] [bp-10h]@24 int v20; // [sp+30h] [bp+8h]@10 int v21; // [sp+30h] [bp+8h]@14 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132448D8 & 1) ) { dword_132448D8 |= 1u; word_132448D4 = 70; atexit(nullsub_108); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132448D4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) || *(_WORD *)(v4 + 85728) & 0xC ) { v15 = 898; v12 = 5; goto LABEL_33; } v5 = *(_DWORD *)(v4 + 84504); if ( !v5 || !*(_DWORD *)v5 ) { v15 = 515; v12 = 4; LABEL_33: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, v12, v15); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; goto LABEL_34; } v6 = a2 + 2; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 9, *(_BYTE *)(a2 + 2)) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 898); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; goto LABEL_34; } v17 = *(_BYTE *)v6; v20 = *(_BYTE *)v6; if ( v20 >= (*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 36484) + 8))(v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ : Wrong slot", v17); v14 = 900; LABEL_12: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, v14); LABEL_13: v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; goto LABEL_34; } v21 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, v20); if ( !sub_418CB0((int)&dword_14D20890, *(_WORD *)(v21 + 8)) ) goto LABEL_13; v18 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(v21 + 8)); if ( !v18 ) { v14 = 899; goto LABEL_12; } v7 = sub_645090(v21); if ( !sub_62EE50(&dword_1508B5A8, v7) ) goto LABEL_37; if ( (unsigned int)(*(int (__stdcall **)(int))(**(_DWORD **)(v21 + 112) + 28))(v21 + 8) > *(_DWORD *)(v18 + 106) ) { v14 = 901; goto LABEL_12; } if ( sub_48F9E0(*(_DWORD *)(v21 + 112), v21) ) { LABEL_37: v14 = 911; goto LABEL_12; } v8 = sub_4C3BD0(v4 + 84508, v4); if ( !v8 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ : Item sell in unactiv menu", 0); v14 = 898; goto LABEL_12; } v19 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v8 + 12))(v8, v4, *(_WORD *)(v21 + 8)); if ( (unsigned int)v19 > 0 ) { v16 = *(_DWORD *)(v21 + 112); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v21 + 112) + 24))() ) { v9 = (*(int (__stdcall **)(int))(*(_DWORD *)v16 + 28))(v21 + 8); v10 = *(_DWORD *)(v6 + 1); if ( v10 < v9 ) { sub_536FE0(v4, a4, v21, v6, v19 * v10); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; } else { *(_DWORD *)(v6 + 1) = v9; sub_536CC0(v4, a4, v21, v6, v19 * v9); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; } } else { sub_536CC0(v4, a4, v21, v6, v19); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ : try to sell the item which cannot be solt", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 899); v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; } LABEL_34: --dword_750CB8; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132448D4: using guessed type __int16 word_132448D4; // 132448D8: using guessed type int dword_132448D8; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (00537710) -------------------------------------------------------- int __stdcall sub_537710(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SELLALLSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SELLALLSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_SELLALLSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 5, 897); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SELLALLSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00537840) -------------------------------------------------------- int __stdcall sub_537840(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SELLLOTSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SELLLOTSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_SELLLOTSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 5, 897); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SELLLOTSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00537970) -------------------------------------------------------- int __stdcall sub_537970(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SELLFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SELLFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 5, *(_WORD *)(a1 + 2)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SELLFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00537A70) -------------------------------------------------------- int __stdcall sub_537A70(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST08_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 int v7; // edi@6 unsigned __int16 v8; // ax@7 int v9; // eax@7 __time32_t v10; // eax@7 __time32_t v11; // eax@7 __time32_t v12; // eax@7 __time32_t v13; // eax@7 __time32_t v14; // eax@7 int v16; // [sp+0h] [bp-20h]@0 int v17; // [sp+4h] [bp-1Ch]@0 int v18; // [sp+8h] [bp-18h]@0 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLITSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SPLITSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_SPLITSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 14, 1089); v7 = *(_WORD *)(a1 + 18); if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2420))(v2, a1 + 10) != (_WORD)v7 ) { v8 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2420))(v2, a1 + 10, "/"); v9 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 836))(v2, " Split Error ", v8); v10 = sub_43B910((__time32_t)byte_132448E8, v9); v11 = sub_418EA0(v10, v7); v12 = sub_43B910(v11, (int)&unk_13359E04); v13 = sub_418EA0(v12, v16); v14 = sub_43B910(v13, v17); sub_418F20(v14, v18); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1528))(v2); } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 1) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1676, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLITSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00537C60) -------------------------------------------------------- int __stdcall sub_537C60(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLITFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SPLITFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 14, *(_WORD *)(a1 + 8)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2408))(v2, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SPLITFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00537D70) -------------------------------------------------------- int __thiscall sub_537D70(void *this, int a2, int a3, int a4) { int v4; // ebx@1 int (__cdecl *v5)(_DWORD); // eax@5 int (__stdcall *v6)(_DWORD, _DWORD); // eax@7 int v7; // esi@7 unsigned int v8; // eax@9 int v9; // ecx@9 int v10; // eax@12 int v11; // edx@13 int v12; // edx@14 int (__thiscall *v13)(_DWORD); // eax@16 int v14; // edx@17 int v15; // eax@19 int v16; // edx@19 int v17; // eax@19 int v18; // eax@19 int v19; // edx@19 int v20; // ecx@19 int v21; // eax@21 char v22; // al@22 int v23; // edx@22 int (__thiscall *v24)(_DWORD); // eax@23 int v25; // edx@24 int v26; // ecx@24 int v27; // esi@27 int v28; // eax@29 int v29; // eax@29 bool v30; // al@31 int v31; // eax@36 int (__thiscall *v32)(_DWORD); // eax@37 int (__thiscall *v33)(_DWORD); // eax@39 int v34; // esi@43 int v35; // eax@44 int v36; // eax@44 unsigned int v37; // eax@47 unsigned int v38; // esi@47 int (__stdcall **v39)(_DWORD); // edx@47 int v40; // edi@47 int v41; // edi@51 int v42; // esi@51 int v43; // eax@51 int v44; // edi@53 int v45; // eax@53 int (__thiscall *v46)(_DWORD, _DWORD); // edx@53 const void *v47; // esi@53 int v48; // eax@53 int (__stdcall *v49)(_DWORD); // eax@60 int v50; // eax@60 unsigned int v51; // ecx@60 __int16 v52; // cx@62 int v53; // eax@62 int v54; // eax@62 int v55; // esi@62 int v56; // edi@62 __int16 v57; // cx@62 int v58; // edi@62 char *v59; // eax@62 void *v60; // esi@62 int v61; // eax@62 int v62; // ecx@62 int v63; // edx@62 int v64; // eax@62 int v65; // eax@62 int v66; // eax@62 int v67; // eax@64 int v68; // eax@65 int v69; // eax@65 void (__thiscall *v70)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@65 __int16 v71; // ax@65 int v72; // edx@67 int v73; // esi@67 int v74; // eax@67 int v75; // edx@67 __int16 v76; // cx@67 int v77; // edx@67 int v78; // ebx@67 int v80; // [sp-90h] [bp-1D0h]@67 int v81; // [sp-8Ch] [bp-1CCh]@67 int v82; // [sp-88h] [bp-1C8h]@67 int v83; // [sp-84h] [bp-1C4h]@67 int v84; // [sp-7Ch] [bp-1BCh]@67 int v85; // [sp-78h] [bp-1B8h]@67 int v86; // [sp-74h] [bp-1B4h]@67 int v87; // [sp-70h] [bp-1B0h]@67 int v88; // [sp-6Ch] [bp-1ACh]@67 int v89; // [sp-68h] [bp-1A8h]@67 int v90; // [sp-64h] [bp-1A4h]@67 int v91; // [sp-60h] [bp-1A0h]@67 int v92; // [sp-5Ch] [bp-19Ch]@67 int v93; // [sp-58h] [bp-198h]@67 int v94; // [sp-54h] [bp-194h]@67 int v95; // [sp-50h] [bp-190h]@67 int v96; // [sp-4Ch] [bp-18Ch]@67 int v97; // [sp-48h] [bp-188h]@67 int v98; // [sp-44h] [bp-184h]@67 int v99; // [sp-40h] [bp-180h]@67 int v100; // [sp-3Ch] [bp-17Ch]@67 int v101; // [sp-38h] [bp-178h]@67 int v102; // [sp-34h] [bp-174h]@67 int v103; // [sp-30h] [bp-170h]@67 int v104; // [sp-2Ch] [bp-16Ch]@67 int v105; // [sp-28h] [bp-168h]@67 int v106; // [sp-24h] [bp-164h]@67 int v107; // [sp-20h] [bp-160h]@67 int v108; // [sp-1Ch] [bp-15Ch]@67 int v109; // [sp-18h] [bp-158h]@67 int v110; // [sp-14h] [bp-154h]@67 int v111; // [sp-10h] [bp-150h]@67 int v112; // [sp-Ch] [bp-14Ch]@67 int v113; // [sp-8h] [bp-148h]@48 unsigned int v114; // [sp-4h] [bp-144h]@1 int v115; // [sp+Ch] [bp-134h]@1 int v116; // [sp+10h] [bp-130h]@60 int v117; // [sp+14h] [bp-12Ch]@67 int v118; // [sp+18h] [bp-128h]@67 int v119; // [sp+1Ch] [bp-124h]@67 int v120; // [sp+20h] [bp-120h]@67 int v121; // [sp+24h] [bp-11Ch]@67 int v122; // [sp+28h] [bp-118h]@67 int v123; // [sp+2Ch] [bp-114h]@67 int v124; // [sp+30h] [bp-110h]@67 int v125; // [sp+34h] [bp-10Ch]@37 int v126; // [sp+38h] [bp-108h]@13 int v127; // [sp+3Ch] [bp-104h]@7 int v128; // [sp+40h] [bp-100h]@5 int v129; // [sp+44h] [bp-FCh]@13 int v130; // [sp+48h] [bp-F8h]@37 int v131; // [sp+4Ch] [bp-F4h]@19 char v132; // [sp+50h] [bp-F0h]@62 int v133; // [sp+58h] [bp-E8h]@62 __int16 v134; // [sp+BCh] [bp-84h]@62 char v135; // [sp+BEh] [bp-82h]@62 int v136; // [sp+C0h] [bp-80h]@62 int v137; // [sp+C4h] [bp-7Ch]@62 __int16 v138; // [sp+C8h] [bp-78h]@62 __int16 v139; // [sp+12Ch] [bp-14h]@67 char v140; // [sp+12Eh] [bp-12h]@67 unsigned int v141; // [sp+130h] [bp-10h]@1 int v142; // [sp+13Ch] [bp-4h]@1 int v143; // [sp+140h] [bp+0h]@1 v141 = (unsigned int)&v143 ^ __security_cookie; v114 = (unsigned int)&v143 ^ __security_cookie; v4 = (int)this; v115 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; dword_750AB8[dword_750CB8++] = -1; v142 = 0; if ( !(dword_132448E0 & 1) ) { dword_132448E0 |= 1u; word_132448DC = 86; atexit(nullsub_109); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132448DC) || (v5 = *(int (__cdecl **)(_DWORD))(*(_DWORD *)(v4 + 58688) + 16), v128 = v4 + 58688, (unsigned __int8)v5(v114)) || *(_DWORD *)(v4 + 7936) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1090, v114); LABEL_76: v142 = -1; goto LABEL_77; } v6 = *(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v128 + 8); v7 = a2 + 2; v127 = a2 + 2; if ( (unsigned __int8)v6(a2 + 2, v114) || (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v128 + 8))(a2 + 4) ) { v114 = 1090; goto LABEL_75; } v8 = *(_WORD *)v7; v9 = *(_WORD *)(a2 + 4); if ( !(((unsigned __int16)v9 ^ *(_WORD *)v7) & 0xFC00) && !((v9 ^ v8) & 0x3FF) ) { v114 = 1093; LABEL_75: (*(void (__thiscall **)(int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))(v4, 12, 14, v114); goto LABEL_76; } v10 = v8 >> 10; switch ( v10 ) { case 9: v11 = *(_DWORD *)v4; v129 = v4 + 36484; v126 = (*(int (__thiscall **)(int))(v11 + 836))(v4); break; case 6: v12 = *(_DWORD *)v4; if ( !(*(_BYTE *)(v4 + 23824) & 0x30) ) { LABEL_15: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v12 + 776))(v4, 12, 14, 1091); goto LABEL_76; } v13 = *(int (__thiscall **)(_DWORD))(v12 + 840); v129 = v4 + 85744; v126 = v13(v4); break; case 4: v14 = *(_DWORD *)v4; if ( *(_WORD *)(v4 + 84376) == -1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v14 + 776))(v4, 12, 14, 1100); goto LABEL_76; } v15 = (*(int (__thiscall **)(int))(v14 + 2096))(v4); v16 = *(_DWORD *)v4; v114 = v15; v17 = (*(int (__thiscall **)(int))(v16 + 2072))(v4); v18 = sub_4744E0(&dword_D41F888, v17, v114); v19 = *(_DWORD *)v4; v131 = v18; v20 = v4; if ( !v18 || (v21 = (*(int (__thiscall **)(int))(v19 + 2072))(v4), v19 = *(_DWORD *)v4, v20 = v4, *(_DWORD *)(v131 + 4200) != v21) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v19 + 776))(v20, 12, 14, 582); goto LABEL_76; } v22 = (*(int (__thiscall **)(int))(v19 + 1520))(v4); v23 = *(_DWORD *)v4; if ( !v22 ) goto LABEL_34; v24 = *(int (__thiscall **)(_DWORD))(v23 + 2072); v129 = v131; v126 = v24(v4); break; case 0: v25 = *(_DWORD *)v4; v26 = v4; if ( *(_WORD *)(v4 + 84378) == -1 ) goto LABEL_25; if ( (unsigned __int8)(*(int (__thiscall **)(int))(v25 + 2136))(v4) || (v27 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4)) == 0 ) { LABEL_28: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 590); goto LABEL_76; } v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2096))(v4); v29 = sub_46E840(&dword_D0207E8, v27, v28); v131 = v29; if ( !v29 ) { LABEL_30: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 589); goto LABEL_76; } v30 = sub_46F930(v29, v27); v25 = *(_DWORD *)v4; v26 = v4; if ( !v30 ) { LABEL_25: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v25 + 776))(v26, 12, 14, 589); goto LABEL_76; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(v25 + 2164))(v4) ) { v23 = *(_DWORD *)v4; LABEL_34: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v23 + 776))(v4, 12, 14, 591); goto LABEL_76; } v126 = v27; v7 = v127; v129 = (int)sub_5CF620((void *)v131); break; case 5: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item from box", 5); v114 = 1092; goto LABEL_75; default: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item from box", v10); v114 = 1092; goto LABEL_75; } v31 = (unsigned int)*(_WORD *)(v7 + 2) >> 10; switch ( v31 ) { case 9: v32 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836); v130 = v4 + 36484; v125 = v32(v4); goto LABEL_47; case 6: v12 = *(_DWORD *)v4; if ( !(*(_BYTE *)(v4 + 23824) & 0x30) ) goto LABEL_15; v33 = *(int (__thiscall **)(_DWORD))(v12 + 840); v130 = v4 + 85744; v125 = v33(v4); goto LABEL_47; case 4: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1100); goto LABEL_76; case 0: v25 = *(_DWORD *)v4; v26 = v4; if ( *(_WORD *)(v4 + 84378) == -1 ) goto LABEL_25; if ( (unsigned __int8)(*(int (__thiscall **)(int))(v25 + 2136))(v4) || (v34 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4)) == 0 ) goto LABEL_28; v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2096))(v4); v36 = sub_46E840(&dword_D0207E8, v34, v35); v131 = v36; if ( !v36 || !sub_46F930(v36, v34) ) goto LABEL_30; v125 = v34; v7 = v127; v130 = (int)sub_5CF620((void *)v131); LABEL_47: v37 = *(_WORD *)v7; v38 = *(_WORD *)v7; v39 = *(int (__stdcall ***)(_DWORD))v129; v40 = (v37 & 0x3FF) + 10000 * (v37 >> 10); v131 = v38 & 0x3FF; if ( v131 >= ((int (*)(void))v39[2])() ) { v114 = v40; v113 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'from' cell"; LABEL_49: sub_639100(&unk_86DDD8, v113, v114); v114 = 1093; LABEL_50: (*(void (__thiscall **)(int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))(v4, 12, 14, v114); v142 = -1; goto LABEL_77; } v41 = v131 + 10000 * (v38 >> 10); v42 = v130; v43 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v130 + 4))(v130, v4 + 160312); v130 = v127 + 2; if ( (*(_WORD *)(v127 + 2) & 0x3FF) >= v43 ) { v114 = v41; v113 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'to' cell"; goto LABEL_49; } v44 = v127; v45 = (**(int (__stdcall ***)(_DWORD))v129)(*(_WORD *)v127 & 0x3FF); v46 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)v42; v129 = v45; v131 = v46(v42, *(_WORD *)v130 & 0x3FF); v47 = (const void *)(v129 + 8); v48 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v129 + 8)); if ( v48 == 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : try to move empty cell", v48 != 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1096); v142 = -1; LABEL_77: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"); } if ( *(_WORD *)(v131 + 8) != -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1094); v142 = -1; goto LABEL_77; } if ( *(_WORD *)v47 != -1 && !sub_645170(&dword_1508B5A8, v129, *(_WORD *)v127 >> 10, *(_WORD *)v130 >> 10) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 12, 586); v142 = -1; goto LABEL_77; } v49 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(v129 + 112) + 28); v116 = *(_DWORD *)(v129 + 112); v50 = v49(v47); v51 = *(_DWORD *)(v127 + 4); v130 = v50; if ( !v51 || v51 >= v50 ) { v114 = 1097; goto LABEL_50; } v52 = *(_WORD *)v47; v53 = 248 * *(_DWORD *)(v4 + 23812); *(_DWORD *)(v4 + 7936) = 1; *(_WORD *)(v53 + v4 + 7944) = v52; *(_DWORD *)(v53 + v4 + 7940) = 1; *(_DWORD *)(248 * *(_DWORD *)(v4 + 23812) + v4 + 8176) = *(_DWORD *)(v44 + 4); v54 = 248 * *(_DWORD *)(v4 + 23812) + v4 + 7940; *(_BYTE *)(248 * *(_DWORD *)(v4 + 23812) + v4 + 7946) = 1; memcpy((void *)(v54 + 9), v47, 0x64u); v55 = (int)((char *)v47 + 100); *(_WORD *)(v54 + 109) = *(_WORD *)v55; *(_BYTE *)(v54 + 111) = *(_BYTE *)(v55 + 2); v56 = v127; v57 = *(_WORD *)v127; v114 = v127; *(_WORD *)(v54 + 7) = v57; sub_52FAD0(v4 + 7936, 0, v114); sub_52FAD0(v4 + 7936, 1, v56 + 2); sub_52FB00(v4 + 7936, v4); memcpy(&v132, (const void *)v129, 0x6Cu); v134 = *(_WORD *)(v129 + 108); v135 = *(_BYTE *)(v129 + 110); v58 = v127; (*(void (__thiscall **)(int, int *, int))(*(_DWORD *)v116 + 32))(v116, &v133, v130 - *(_DWORD *)(v127 + 4)); v114 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v59 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v136, v133, 4, *((_DWORD *)v59 + 4), v114); v138 = v133; (*(void (__thiscall **)(int, __int16 *, _DWORD))(*(_DWORD *)v116 + 32))(v116, &v138, *(_DWORD *)(v127 + 4)); v60 = off_849C18; *(_WORD *)off_849C18 = 13364; *((_WORD *)v60 + 1) = *(_WORD *)(v4 + 4); v61 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v62 = v126; v63 = v125; *((_DWORD *)v60 + 1) = v61; *((_DWORD *)v60 + 2) = v62; *((_DWORD *)v60 + 3) = v63; *((_WORD *)v60 + 8) = *(_WORD *)(v4 + 58692); *((_WORD *)v60 + 33) = *(_WORD *)(v58 + 4); v64 = v129; *((_WORD *)v60 + 9) = v138; LOWORD(v62) = v130; *((_DWORD *)v60 + 5) = *(_DWORD *)v64; *((_DWORD *)v60 + 6) = *(_DWORD *)(v64 + 4); *((_WORD *)v60 + 34) = v62; *((_DWORD *)v60 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v65 = *(_DWORD *)(v4 + 122); *((_DWORD *)v60 + 8) = *(_DWORD *)v65; *((_DWORD *)v60 + 9) = *(_DWORD *)(v65 + 4); *((_DWORD *)v60 + 10) = *(_DWORD *)(v65 + 8); v66 = *(_DWORD *)(v4 + 102); *((_DWORD *)v60 + 11) = *(_DWORD *)v66; *((_DWORD *)v60 + 12) = *(_DWORD *)(v66 + 4); *((_WORD *)v60 + 26) = *(_WORD *)(v58 + 2); *(_DWORD *)((char *)v60 + 54) = v136; *(_DWORD *)((char *)v60 + 58) = v137; v114 = 70; *((_WORD *)v60 + 31) = v138; if ( sub_4C81E0(&off_849C18, v114) ) { v67 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v67); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Packet Too Long", 70); } v68 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__stdcall **)(_DWORD, int, char *, int, int))(*(_DWORD *)v128 + 64))( *(_WORD *)(v68 + 4), v129, &v132, v58, v58); v69 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4) + 4); v70 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v128 + 64); v130 = v58 + 2; v70(v128, v69, v131, &v136, v58 + 2, v58); v71 = *(_WORD *)v58; if ( !(*(_WORD *)v58 & 0xFC00) || !(*(_WORD *)v130 & 0xFC00) ) { v72 = *(_DWORD *)(v129 + 4); v117 = *(_DWORD *)v129; v73 = *(_DWORD *)(v129 + 112); v118 = v72; LOWORD(v72) = *(_WORD *)(v129 + 8); HIWORD(v119) = v71; v74 = *(_DWORD *)v73; LOWORD(v119) = v72; v120 = (*(int (__thiscall **)(int, int))(v74 + 28))(v73, v129 + 8); v75 = *(_DWORD *)(v131 + 4); v121 = *(_DWORD *)v131; v76 = *(_WORD *)(v131 + 8); v122 = v75; LOWORD(v123) = v76; HIWORD(v123) = *(_WORD *)v130; v124 = (*(int (__stdcall **)(int))(**(_DWORD **)(v131 + 112) + 28))(v131 + 8); v77 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4) + 4); v78 = *(_DWORD *)v128; memcpy(&v87, &v136, 0x6Cu); LOWORD(v114) = v139; BYTE2(v114) = v140; v84 = v122; v85 = v123; v86 = v124; v80 = v117; v81 = v118; v82 = v119; v83 = v120; (*(void (__thiscall **)(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, int, int, int, int, int, int, int, int, int, int, int, int, unsigned int))(v78 + 124))( v128, v77, v117, v118, v119, v120, v121, v122, v123, v124, v87, v88, v89, v90, v91, v92, v93, v94, v95, v96, v97, v98, v99, v100, v101, v102, v103, v104, v105, v106, v107, v108, v109, v110, v111, v112, v113, v114); } ++*(_WORD *)(v128 + 4); --dword_750CB8; v142 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"); case 5: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item to box", 5); v114 = 1092; goto LABEL_75; default: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item to box", v31); v114 = 1092; goto LABEL_75; } } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D0207E8: using guessed type int dword_D0207E8; // D41F888: using guessed type int dword_D41F888; // 132448DC: using guessed type __int16 word_132448DC; // 132448E0: using guessed type int dword_132448E0; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (005388F0) -------------------------------------------------------- __int16 __thiscall sub_5388F0(void *this, int a2) { void *v2; // esi@1 int (*v3)(void); // eax@1 int v4; // edi@3 int (*v5)(void); // eax@4 int v6; // eax@6 int (__thiscall *v7)(_DWORD); // eax@11 int v8; // ST04_4@11 int v9; // eax@11 int v10; // edi@11 char v11; // al@21 int v12; // edx@21 int v13; // edi@22 __int16 v14; // ax@29 __int16 v15; // si@30 int v17; // eax@34 int v18; // eax@34 void *v19; // esi@34 int v20; // eax@38 int (**v21)(); // [sp+10h] [bp-30h]@1 char *v22; // [sp+14h] [bp-2Ch]@1 int v23; // [sp+18h] [bp-28h]@1 int v24; // [sp+1Ch] [bp-24h]@1 int (**v25)(); // [sp+20h] [bp-20h]@36 void *v26; // [sp+24h] [bp-1Ch]@36 int v27; // [sp+28h] [bp-18h]@36 int v28; // [sp+2Ch] [bp-14h]@36 int v29; // [sp+30h] [bp-10h]@1 int v30; // [sp+3Ch] [bp-4h]@1 v2 = this; v29 = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"; dword_750AB8[dword_750CB8++] = -1; v21 = &off_6A86A4; v22 = (char *)v2 + 36484; v3 = *(int (**)(void))(*((_DWORD *)v2 + 9121) + 8); v30 = 0; v24 = v3(); v21 = (int (**)())&off_6A86AC; LOBYTE(v30) = 1; v23 = 0; if ( (unsigned __int8)off_6A86AC(&v21) || sub_63F7F0(&v21) ) { while ( 1 ) { v6 = (**(int (__stdcall ***)(_DWORD))v22)(v23); if ( !v6 ) goto LABEL_45; if ( !*(_DWORD *)(v6 + 112) ) goto LABEL_45; v4 = a2; if ( *(_DWORD *)v6 == *(_DWORD *)a2 && *(_DWORD *)(v6 + 4) == *(_DWORD *)(a2 + 4) ) { LABEL_29: v14 = (*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 28))(v6 + 8); v21 = &off_6A86A4; LABEL_30: --dword_750CB8; v15 = v14; v30 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); return v15; } if ( !sub_63F7F0(&v21) ) goto LABEL_4; } } v4 = a2; LABEL_4: v21 = &off_6A86A4; v22 = (char *)v2 + 85744; v5 = *(int (**)(void))(*((_DWORD *)v2 + 21436) + 8); LOBYTE(v30) = 0; v24 = v5(); v21 = (int (**)())&off_6A86AC; LOBYTE(v30) = 2; v23 = 0; if ( (unsigned __int8)off_6A86AC(&v21) || sub_63F7F0(&v21) ) { do { v6 = (**(int (__stdcall ***)(_DWORD))v22)(v23); if ( !v6 ) goto LABEL_45; if ( !*(_DWORD *)(v6 + 112) ) goto LABEL_45; if ( *(_DWORD *)v6 == *(_DWORD *)v4 && *(_DWORD *)(v6 + 4) == *(_DWORD *)(v4 + 4) ) goto LABEL_29; } while ( sub_63F7F0(&v21) ); } v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2096); LOBYTE(v30) = 0; v8 = v7(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); v10 = sub_4744E0(&dword_D41F888, v9, v8); if ( !v10 || *(_DWORD *)(v10 + 4200) != (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2) ) { LABEL_21: v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2); v12 = *(_DWORD *)v2; if ( v11 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v12 + 2136))(v2) == 1 ) v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2); else v13 = a2; } else { v13 = (*(int (__thiscall **)(void *))(v12 + 2072))(v2); } v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2108))(v2); v18 = sub_46E840(&dword_D0207E8, v13, v17); v19 = (void *)v18; if ( v18 && sub_46F930(v18, v13) ) { v26 = sub_5CF620(v19); v25 = &off_6A86A4; v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v26 + 8))(v26); v25 = (int (**)())&off_6A86AC; LOBYTE(v30) = 4; v27 = 0; if ( (unsigned __int8)off_6A86AC(&v25) || sub_63F7F0(&v25) ) { do { v20 = (**(int (__stdcall ***)(_DWORD))v26)(v27); if ( !v20 ) break; if ( !*(_DWORD *)(v20 + 112) ) break; if ( *(_DWORD *)v20 == *(_DWORD *)a2 && *(_DWORD *)(v20 + 4) == *(_DWORD *)(a2 + 4) ) { v14 = (*(int (__stdcall **)(int))(**(_DWORD **)(v20 + 112) + 28))(v20 + 8); v25 = &off_6A86A4; goto LABEL_30; } } while ( sub_63F7F0(&v25) ); } v25 = &off_6A86A4; } goto LABEL_46; } v21 = &off_6A86A4; v22 = (char *)v10; v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 8))(v10); v21 = (int (**)())&off_6A86AC; LOBYTE(v30) = 3; v23 = 0; if ( !(unsigned __int8)off_6A86AC(&v21) && !sub_63F7F0(&v21) ) { LABEL_20: LOBYTE(v30) = 0; goto LABEL_21; } while ( 1 ) { v6 = (**(int (__stdcall ***)(_DWORD))v22)(v23); if ( !v6 ) break; if ( !*(_DWORD *)(v6 + 112) ) break; if ( *(_DWORD *)v6 == *(_DWORD *)a2 && *(_DWORD *)(v6 + 4) == *(_DWORD *)(a2 + 4) ) goto LABEL_29; if ( !sub_63F7F0(&v21) ) goto LABEL_20; } LABEL_45: v21 = &off_6A86A4; LABEL_46: --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); return 0; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0207E8: using guessed type int dword_D0207E8; // D41F888: using guessed type int dword_D41F888; //----- (00538CC0) -------------------------------------------------------- int __thiscall sub_538CC0(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 int v5; // ebx@6 int (__stdcall *v6)(_DWORD, _DWORD); // eax@6 int v7; // edx@8 int v9; // eax@16 int v10; // edi@16 int v11; // eax@16 signed int v12; // eax@25 int v13; // eax@28 int v14; // eax@32 void *v15; // ebx@35 int v16; // eax@35 __int16 v17; // cx@35 int v18; // ebx@35 int v19; // eax@37 int v20; // eax@38 int v21; // edx@38 int v22; // eax@38 int v23; // eax@38 int v24; // eax@38 int v25; // ebx@38 int v26; // eax@38 int v27; // eax@38 void *v28; // esi@38 signed int v29; // ebx@38 int v30; // eax@39 int v31; // edi@39 int v32; // [sp-8h] [bp-B4h]@17 unsigned int v33; // [sp-4h] [bp-B0h]@1 int v34; // [sp-4h] [bp-B0h]@17 int v35; // [sp+10h] [bp-9Ch]@16 signed int v36; // [sp+14h] [bp-98h]@0 int v37; // [sp+14h] [bp-98h]@35 int v38; // [sp+18h] [bp-94h]@16 int v39; // [sp+1Ch] [bp-90h]@6 int v40; // [sp+20h] [bp-8Ch]@8 int v41[30]; // [sp+24h] [bp-88h]@41 unsigned int v42; // [sp+9Ch] [bp-10h]@1 int v43; // [sp+A8h] [bp-4h]@1 int v44; // [sp+ACh] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v33 = (unsigned int)&v44 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ"; dword_750AB8[dword_750CB8++] = -1; v43 = 0; if ( !(dword_13244B74 & 1) ) { dword_13244B74 |= 1u; word_13244B70 = 70; atexit(nullsub_110); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13244B70) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 12, 19, 706, v33); v43 = -1; LABEL_12: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ"); } v5 = *(_BYTE *)(a2 + 2); v6 = *(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)(v4 + 32816) + 4); v39 = v4 + 32816; if ( *(_BYTE *)(a2 + 2) >= v6(v4 + 160312, v33) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ : wrong slot", v5); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 19, 706); LABEL_11: v43 = -1; goto LABEL_12; } v7 = *(_DWORD *)(v4 + 36484); v40 = *(_BYTE *)(a2 + 3); if ( *(_BYTE *)(a2 + 3) >= (*(int (__thiscall **)(int, int))(v7 + 4))(v4 + 36484, v4 + 160312) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ : wrong slot", v40); LABEL_10: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 19, 706); goto LABEL_11; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 8, *(_BYTE *)(a2 + 2)) || (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 8, *(_BYTE *)(a2 + 3)) ) goto LABEL_10; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3788))(v4); v9 = *(_BYTE *)(a2 + 2); v40 = *(_BYTE *)(a2 + 3); v38 = v9; v10 = (**(int (__stdcall ***)(_DWORD))v39)(v9); v11 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, v40); v35 = v11; if ( *(_WORD *)(v10 + 8) == -1 ) { v34 = 0; v32 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ : Try to unequip null item"; LABEL_18: sub_639100(&unk_86DDD8, v32, v34); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 19, 708); goto LABEL_11; } if ( *(_WORD *)(v11 + 8) != -1 ) { v34 = 0; v32 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ : Try to unequip to unempty cell"; goto LABEL_18; } if ( v38 == 10 || v38 == 12 ) { sub_59C3C0((void *)v10, v4); if ( v38 == 10 ) { v12 = 11; v36 = 0; } else { if ( v38 == 12 ) { v12 = 13; v36 = 29; } else { v12 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ"; } } v13 = (**(int (__thiscall ***)(_DWORD, _DWORD))v39)(v39, v12); if ( !v13 || *(_WORD *)(v13 + 8) != -1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); if ( v36 ) { v14 = (**(int (__thiscall ***)(_DWORD, _DWORD))v39)(v39, v36); if ( !v14 || *(_WORD *)(v14 + 8) != -1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); } } v15 = off_849C18; *((_WORD *)off_849C18 + 1) = a4; *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)v15 = 13331; v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v17 = v40 & 0x3FF; *((_WORD *)v15 + 9) = *(_WORD *)(v16 + 4); *((_WORD *)v15 + 8) = v17 | 0x2400; *((_DWORD *)v15 + 2) = *(_DWORD *)v10; v37 = (int)((char *)v15 + 16); *((_DWORD *)v15 + 3) = *(_DWORD *)(v10 + 4); v18 = (int)((char *)v15 + 20); *(_WORD *)v18 = v38 & 0x3FF | 0x2000; if ( sub_4C81E0(&off_849C18, 22) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ : Packet Too Long", 22); } v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v21 = *(_DWORD *)v4; v40 = v20; v22 = (*(int (__thiscall **)(int))(v21 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v40 + 84))(v40, *(_WORD *)(v22 + 4), v38, v10); v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, int))(*(_DWORD *)v40 + 48))(v40, *(_WORD *)(v23 + 4), v10, v18, v37); v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__stdcall **)(_DWORD, int, int, int, int))(*(_DWORD *)v40 + 64))(*(_WORD *)(v24 + 4), v35, v10, v37, v18); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, signed int, _DWORD))(*(_DWORD *)v25 + 80))( v25, *(_WORD *)(v26 + 4), v38, v10, -1, 0); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v28 = (void *)v39; v29 = 1; ++*(_WORD *)(v27 + 4); if ( sub_6400D0(v28) == 1 ) { v30 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8)); v31 = 0; if ( v30 ) { if ( *(_DWORD *)(v30 + 4) ) { v39 = 0; sub_460FE0(&dword_CFCDCD8, v28, (signed int)v41, (int)&v39, *(_DWORD *)(v30 + 4)); sub_461160(&dword_CFCDCD8, v28, (int)v41, (int)&v39, v38); if ( v39 > 0 ) { do sub_640130(v28, v41[v31++], 1); while ( v31 < v39 ); } if ( sub_640100(v28, v38) != -1 ) sub_640130(v28, v38, 1); v29 = 1; } } } dword_750CB8 -= v29; v43 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // CFCDCD8: using guessed type int dword_CFCDCD8; // 13244B70: using guessed type __int16 word_13244B70; // 13244B74: using guessed type int dword_13244B74; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 538CC0: using guessed type int var_88[30]; //----- (005392C0) -------------------------------------------------------- int __stdcall sub_5392C0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 19, *(_WORD *)(a1 + 2)); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3444))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005393D0) -------------------------------------------------------- int __stdcall sub_5393D0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 int v7; // eax@6 int v8; // edi@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 17, 641); v7 = sub_409730(v2); v8 = v7; if ( v7 && !sub_55E380(v7, 25) && !sub_55E380(v8, 28) && sub_55E370(v8) == 1 ) sub_5631C0(v8, 0); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1480))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 860))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 872))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1928))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1932))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2460))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3440))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UNEQUIPSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005395B0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5395B0() { return &unk_13244E68; } //----- (005395C0) -------------------------------------------------------- char *__thiscall sub_5395C0(void *this) { return (char *)this + 155429; } //----- (005395D0) -------------------------------------------------------- char __cdecl sub_5395D0(unsigned __int16 a1) { int v1; // ecx@2 int v2; // ecx@3 int v3; // ecx@4 char result; // al@6 int v5; // eax@7 char v6; // bl@9 sub_4675D0((int)&unk_D020420, (int)"Item_GetUpgradeLimit"); dword_7508B8[dword_750CB8] = (int)"Item_GetUpgradeLimit"; dword_750AB8[dword_750CB8++] = -1; if ( a1 >= (unsigned int)dword_14D20894 || (v1 = dword_14D21184 + 40 * a1) == 0 || (v2 = *(_DWORD *)v1) == 0 ) goto LABEL_6; v3 = *(_WORD *)v2; if ( (_WORD)v3 != a1 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * a1 + v3); LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_GetUpgradeLimit"); return 0; } v5 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, a1); if ( v5 ) { v6 = *(_BYTE *)(v5 + 240); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_GetUpgradeLimit"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_GetUpgradeLimit"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00539710) -------------------------------------------------------- char __cdecl sub_539710(unsigned __int16 a1, unsigned __int16 a2, unsigned __int8 a3) { int v3; // ecx@2 int v4; // ecx@3 int v5; // ecx@4 int v7; // esi@7 int v8; // eax@8 int v9; // eax@12 sub_4675D0((int)&unk_D020420, (int)"Item_IsUpSource"); dword_7508B8[dword_750CB8] = (int)"Item_IsUpSource"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= (unsigned int)dword_14D20894 || (v3 = dword_14D21184 + 40 * a2) == 0 || (v4 = *(_DWORD *)v3) == 0 ) goto LABEL_6; v5 = *(_WORD *)v4; if ( (_WORD)v5 != a2 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * a2 + v5); LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_IsUpSource"); return 0; } v7 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, a2); if ( !v7 || (v8 = *(_DWORD *)(v7 + 102), v8 != 19) && v8 != 25 && v8 != 20 || !sub_418CB0((int)&dword_14D20890, a1) || (v9 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, a1)) == 0 || *(_DWORD *)(v9 + 131) != *(_DWORD *)(v7 + 131) || a3 < *(_BYTE *)(v7 + 240) || a3 > *(_BYTE *)(v7 + 247) ) goto LABEL_6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_IsUpSource"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00539890) -------------------------------------------------------- char __cdecl sub_539890(unsigned int *a1, char a2) { signed int v2; // edx@1 unsigned int *v3; // esi@1 __int16 v4; // cx@1 unsigned int v5; // eax@1 int v6; // edx@2 int v7; // edx@3 int v8; // edx@4 int v9; // eax@4 int v10; // eax@7 char v11; // bl@11 char result; // al@12 int v13; // [sp+28h] [bp+8h]@2 sub_4675D0((int)&unk_D020420, (int)"Item_AdjUpgradeLevel"); dword_7508B8[dword_750CB8] = (int)"Item_AdjUpgradeLevel"; v2 = 1; dword_750AB8[dword_750CB8++] = -1; v3 = a1; v4 = *(_WORD *)a1; v5 = *(_WORD *)a1; if ( v5 >= dword_14D20894 ) goto LABEL_7; v6 = dword_14D21184 + 40 * v5; v13 = v6; if ( !v6 || (v7 = *(_DWORD *)v6) == 0 ) { LABEL_6: v2 = 1; LABEL_7: v10 = 0; goto LABEL_8; } v8 = *(_WORD *)v7; v9 = v8 + 10000 * v5; if ( (_WORD)v8 != v4 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v9); goto LABEL_6; } v10 = v13; v2 = 1; LABEL_8: switch ( *(_DWORD *)(*(_DWORD *)v10 + 102) ) { case 5: case 7: *((_BYTE *)v3 + 2) += a2; goto LABEL_11; case 6: case 8: *((_BYTE *)v3 + 2) += a2; LABEL_11: v11 = *((_BYTE *)v3 + 2); goto LABEL_12; case 4: *((_BYTE *)v3 + 10) += a2; v11 = *((_BYTE *)v3 + 10); goto LABEL_12; case 0x26: *((_BYTE *)v3 + 10) += a2; v11 = *((_BYTE *)v3 + 10); LABEL_12: dword_750CB8 -= v2; sub_467660((int)&unk_D020420, (int)"Item_AdjUpgradeLevel"); result = v11; break; default: dword_750CB8 -= v2; sub_467660((int)&unk_D020420, (int)"Item_AdjUpgradeLevel"); result = 0; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00539A30) -------------------------------------------------------- char __cdecl sub_539A30(int a1, char a2, char a3) { unsigned int v3; // eax@1 int v4; // ebx@2 int v5; // edx@4 int v6; // eax@6 char v7; // bl@12 char result; // al@13 sub_4675D0((int)&unk_D020420, (int)"Item_AdjFailCount"); dword_7508B8[dword_750CB8] = (int)"Item_AdjFailCount"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)a1; if ( v3 >= dword_14D20894 || (v4 = dword_14D21184 + 40 * v3) == 0 || !*(_DWORD *)v4 ) goto LABEL_6; v5 = **(_WORD **)v4; if ( (_WORD)v5 != *(_WORD *)a1 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v3 + v5); LABEL_6: v6 = 0; goto LABEL_7; } v6 = dword_14D21184 + 40 * v3; LABEL_7: switch ( *(_DWORD *)(*(_DWORD *)v6 + 102) ) { case 5: case 8: if ( a3 ) *(_BYTE *)(a1 + 4) = a2; else *(_BYTE *)(a1 + 4) += a2; goto LABEL_12; case 6: if ( a3 ) *(_BYTE *)(a1 + 4) = a2; else *(_BYTE *)(a1 + 4) += a2; goto LABEL_12; case 7: if ( a3 ) *(_BYTE *)(a1 + 4) = a2; else *(_BYTE *)(a1 + 4) += a2; LABEL_12: v7 = *(_BYTE *)(a1 + 4); goto LABEL_13; case 4: if ( a3 ) { *(_BYTE *)(a1 + 12) = a2; v7 = a2; } else { *(_BYTE *)(a1 + 12) += a2; v7 = *(_BYTE *)(a1 + 12); } goto LABEL_13; case 0x26: if ( a3 ) { *(_BYTE *)(a1 + 12) = a2; v7 = a2; } else { *(_BYTE *)(a1 + 12) += a2; v7 = *(_BYTE *)(a1 + 12); } LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_AdjFailCount"); result = v7; break; default: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Item_AdjFailCount"); result = 0; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00539C30) -------------------------------------------------------- int __stdcall sub_539C30(int a1, int a2) { int v2; // ebx@1 int v3; // esi@1 void *v4; // edi@6 int v5; // eax@6 int v6; // eax@6 int v7; // eax@6 int v8; // eax@8 int v9; // eax@9 int v10; // ST04_4@10 __time32_t v11; // eax@10 __time32_t v12; // eax@10 int v13; // eax@11 int v14; // eax@12 int v15; // edi@12 int v16; // eax@13 int v17; // eax@13 int v18; // eax@14 void *v19; // eax@14 int v20; // eax@15 void *v21; // eax@18 int v22; // eax@20 int v24; // [sp+14h] [bp-1Ch]@12 unsigned __int16 v25; // [sp+1Ch] [bp-14h]@12 int v26; // [sp+20h] [bp-10h]@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v3 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3004))(v3); if ( v26 ) { switch ( *(_WORD *)(a1 + 10) ) { case 0x8C3: case 0x8C4: case 0x8C5: case 0x8C6: case 0x8C7: v4 = off_849C18; *(_DWORD *)((char *)off_849C18 + 2) = *(_DWORD *)(a1 + 4); v5 = *(_DWORD *)(v3 + 122); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)v5; *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(v5 + 4); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(v5 + 8); *(_DWORD *)((char *)v4 + 18) = **(_DWORD **)(v3 + 102); *(_DWORD *)((char *)v4 + 22) = *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 788))(v3); *(_DWORD *)((char *)v4 + 26) = *(_DWORD *)v6; *(_DWORD *)((char *)v4 + 30) = *(_DWORD *)(v6 + 4); *((_WORD *)v4 + 17) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 788))(v3) + 8); *((_BYTE *)v4 + 36) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 10); *((_BYTE *)v4 + 37) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 11); *((_WORD *)v4 + 19) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 12); *((_WORD *)v4 + 20) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 14); *((_WORD *)v4 + 21) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 16); v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3); *((_WORD *)v4 + 22) = *(_WORD *)(v7 + 18); *((_BYTE *)v4 + 46) = *(_BYTE *)(v7 + 20); *(_WORD *)v4 = 1106; if ( sub_4C81E0(&off_849C18, 47) ) { v8 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK : Packet Too Long", 47); } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a1 + 8), 0) ) { v10 = *(_WORD *)(a1 + 8); v11 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } break; case 0x8C2: case 0x8C8: case 0x8C9: case 0x8CA: case 0x8CB: case 0x8CC: v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v13 + 40))(v13, *(_WORD *)(a1 + 8)); break; default: break; } v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3); v15 = *(_DWORD *)v14; v24 = *(_DWORD *)(v14 + 4); LOBYTE(a1) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 11); v25 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 8); switch ( *(_WORD *)(v2 + 10) ) { case 0x8C3: case 0x8C4: sub_4D1950(v26, 2); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); sub_5C9420(v16, v15, v24, a1); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); sub_5B6800((int)&unk_133595F0, v17, v25, a1); goto LABEL_16; case 0x8C5: case 0x8C6: sub_4D1950(v26, 3); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); sub_5C9500(v18, v15, v24, a1); v19 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2056))(v3); goto LABEL_17; case 0x8C7: sub_4D1950(v26, 4); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1056))(v3); sub_5C9590(v20, v15, v24, a1); LABEL_16: v19 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2056))(v3); LABEL_17: sub_5BB110(v19, 5); break; default: break; } v21 = off_849C18; *((_WORD *)off_849C18 + 1) = *(_WORD *)(v2 + 10); *(_WORD *)v21 = 12312; if ( sub_4C81E0(&off_849C18, 4) ) { v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v22 + 12))(v22, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK : Packet Too Long", 4); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1716))(v3, 6); } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D148D0: using guessed type int dword_14D148D0; //----- (0053A060) -------------------------------------------------------- int __stdcall sub_53A060(int a1, int a2) { int v2; // ebx@1 int v3; // esi@1 void *v4; // edi@6 int v5; // eax@6 int v6; // eax@6 int v7; // eax@6 int v8; // eax@8 int v9; // eax@9 int v10; // ST04_4@10 __time32_t v11; // eax@10 __time32_t v12; // eax@10 int v13; // eax@11 int v14; // eax@12 int v15; // edi@12 unsigned __int16 v16; // cx@12 int v17; // eax@12 int v18; // eax@14 int v19; // eax@15 int v20; // eax@15 void *v21; // eax@16 void *v22; // eax@17 int v23; // eax@19 int v25; // [sp+14h] [bp-1Ch]@12 unsigned __int16 v26; // [sp+1Ch] [bp-14h]@12 int v27; // [sp+20h] [bp-10h]@4 unsigned __int8 v28; // [sp+38h] [bp+8h]@12 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_NEW_UPGRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_NEW_UPGRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) || (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) != *(_DWORD *)(a1 + 4) || (v27 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3004))(v3)) == 0 ) goto LABEL_21; switch ( *(_WORD *)(a1 + 10) ) { case 0x3803: case 0x3804: case 0x3805: v4 = off_849C18; *(_DWORD *)((char *)off_849C18 + 2) = *(_DWORD *)(a1 + 4); v5 = *(_DWORD *)(v3 + 122); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)v5; *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(v5 + 4); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(v5 + 8); *(_DWORD *)((char *)v4 + 18) = **(_DWORD **)(v3 + 102); *(_DWORD *)((char *)v4 + 22) = *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 788))(v3); *(_DWORD *)((char *)v4 + 26) = *(_DWORD *)v6; *(_DWORD *)((char *)v4 + 30) = *(_DWORD *)(v6 + 4); *((_WORD *)v4 + 17) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 788))(v3) + 8); *((_BYTE *)v4 + 36) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 10); *((_BYTE *)v4 + 37) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 11); *((_WORD *)v4 + 19) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 12); *((_WORD *)v4 + 20) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 14); *((_WORD *)v4 + 21) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 16); v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3); *((_WORD *)v4 + 22) = *(_WORD *)(v7 + 18); *((_BYTE *)v4 + 46) = *(_BYTE *)(v7 + 20); *(_WORD *)v4 = 1106; if ( sub_4C81E0(&off_849C18, 47) ) { v8 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_NEW_UPGRADE_ACK : Packet Too Long", 47); } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a1 + 8), 0) ) { v10 = *(_WORD *)(a1 + 8); v11 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_NEW_UPGRADE_ACK : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } break; case 0x3802: case 0x3806: case 0x3807: case 0x3808: case 0x3809: v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v13 + 40))(v13, *(_WORD *)(a1 + 8)); break; default: break; } v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3); v15 = *(_DWORD *)v14; v25 = *(_DWORD *)(v14 + 4); v28 = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 11); v16 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 8); v17 = *(_WORD *)(v2 + 10); v26 = v16; if ( v17 == 14339 ) { sub_4D1950(v27, 2); v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); sub_5C9420(v19, v15, v25, v28); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); sub_5B6800((int)&unk_133595F0, v20, v26, v28); goto LABEL_16; } if ( (unsigned int)(v17 - 14340) <= 1 ) { sub_4D1950(v27, 3); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); sub_5C9500(v18, v15, v25, v28); LABEL_16: v21 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2056))(v3); sub_5BB110(v21, 5); } v22 = off_849C18; *((_WORD *)off_849C18 + 1) = *(_WORD *)(v2 + 10); *(_WORD *)v22 = 12398; if ( sub_4C81E0(&off_849C18, 4) ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v23 + 12))(v23, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_NEW_UPGRADE_ACK : Packet Too Long", 4); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1716))(v3, 6); LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_NEW_UPGRADE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D148D0: using guessed type int dword_14D148D0; //----- (0053A440) -------------------------------------------------------- int __stdcall sub_53A440(int a1, int a2) { int v2; // ebx@1 int v3; // esi@1 void *v4; // edi@6 int v5; // eax@6 int v6; // eax@6 int v7; // eax@6 int v8; // eax@8 int v9; // eax@9 int v10; // ST04_4@10 __time32_t v11; // eax@10 __time32_t v12; // eax@10 int v13; // eax@11 int v14; // eax@12 int v15; // edi@12 int v16; // eax@13 int v17; // eax@13 int v18; // eax@14 void *v19; // eax@14 int v20; // eax@15 void *v21; // eax@18 int v22; // eax@20 int v24; // [sp+14h] [bp-1Ch]@12 unsigned __int16 v25; // [sp+1Ch] [bp-14h]@12 int v26; // [sp+20h] [bp-10h]@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BRACELET_UPGRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BRACELET_UPGRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v3 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3004))(v3); if ( v26 ) { switch ( *(_WORD *)(a1 + 10) ) { case 0x3C07: case 0x3C08: case 0x3C09: case 0x3C0A: case 0x3C0B: v4 = off_849C18; *(_DWORD *)((char *)off_849C18 + 2) = *(_DWORD *)(a1 + 4); v5 = *(_DWORD *)(v3 + 122); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)v5; *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(v5 + 4); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(v5 + 8); *(_DWORD *)((char *)v4 + 18) = **(_DWORD **)(v3 + 102); *(_DWORD *)((char *)v4 + 22) = *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 788))(v3); *(_DWORD *)((char *)v4 + 26) = *(_DWORD *)v6; *(_DWORD *)((char *)v4 + 30) = *(_DWORD *)(v6 + 4); *((_WORD *)v4 + 17) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 788))(v3) + 8); *((_BYTE *)v4 + 36) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 10); *((_BYTE *)v4 + 37) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 11); *((_WORD *)v4 + 19) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 12); *((_WORD *)v4 + 20) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 14); *((_WORD *)v4 + 21) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 16); v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3); *((_WORD *)v4 + 22) = *(_WORD *)(v7 + 18); *((_BYTE *)v4 + 46) = *(_BYTE *)(v7 + 20); *(_WORD *)v4 = 1106; if ( sub_4C81E0(&off_849C18, 47) ) { v8 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_BRACELET_UPGRADE_ACK : Packet Too Long", 47); } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a1 + 8), 0) ) { v10 = *(_WORD *)(a1 + 8); v11 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_BRACELET_UPGRADE_ACK : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } break; case 0x3C01: case 0x3C02: case 0x3C04: case 0x3C05: case 0x3C06: v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v13 + 40))(v13, *(_WORD *)(a1 + 8)); break; default: break; } v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3); v15 = *(_DWORD *)v14; v24 = *(_DWORD *)(v14 + 4); LOBYTE(a1) = *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 11); v25 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 788))(v3) + 8); switch ( *(_WORD *)(v2 + 10) ) { case 0x3C07: case 0x3C08: sub_4D1950(v26, 2); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); sub_5C9420(v16, v15, v24, a1); v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); sub_5B6800((int)&unk_133595F0, v17, v25, a1); goto LABEL_16; case 0x3C09: case 0x3C0A: sub_4D1950(v26, 3); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); sub_5C9500(v18, v15, v24, a1); v19 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2056))(v3); goto LABEL_17; case 0x3C0B: sub_4D1950(v26, 4); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1056))(v3); sub_5C9590(v20, v15, v24, a1); LABEL_16: v19 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2056))(v3); LABEL_17: sub_5BB110(v19, 5); break; default: break; } v21 = off_849C18; *((_WORD *)off_849C18 + 1) = *(_WORD *)(v2 + 10); *(_WORD *)v21 = 12400; if ( sub_4C81E0(&off_849C18, 4) ) { v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v22 + 12))(v22, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_BRACELET_UPGRADE_ACK : Packet Too Long", 4); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1716))(v3, 6); } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BRACELET_UPGRADE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D148D0: using guessed type int dword_14D148D0; //----- (0053A870) -------------------------------------------------------- char __cdecl sub_53A870(int a1, int a2, unsigned __int8 a3, int a4) { int v4; // ebx@1 int v5; // esi@4 unsigned __int8 v6; // bl@7 char v7; // bl@12 char v8; // al@14 char v9; // cl@15 char v10; // al@16 int v12; // [sp-4h] [bp-2Ch]@5 unsigned __int16 v13; // [sp+14h] [bp-14h]@4 unsigned __int8 v14; // [sp+14h] [bp-14h]@10 __int16 v15; // [sp+18h] [bp-10h]@10 char v16; // [sp+1Ah] [bp-Eh]@15 int v17; // [sp+24h] [bp-4h]@1 unsigned __int8 v18; // [sp+33h] [bp+Bh]@4 char v19; // [sp+33h] [bp+Bh]@14 sub_4675D0((int)&unk_D020420, (int)"Item_ForcedUpgrade"); dword_7508B8[dword_750CB8] = (int)"Item_ForcedUpgrade"; dword_750AB8[dword_750CB8++] = -1; v4 = a1; v17 = 0; if ( !a1 || !a2 || !a4 ) { --dword_750CB8; v17 = -1; v12 = (int)"Item_ForcedUpgrade"; goto LABEL_19; } v5 = a1 + 8; v13 = *(_WORD *)(a1 + 8); v18 = sub_5395D0(*(_WORD *)(a1 + 8)); if ( !v18 ) goto LABEL_5; sub_418CB0((int)&dword_14D20890, v13); switch ( (*(int (**)(void))(*(_DWORD *)a2 + 40))() ) { default: goto LABEL_5; case 5: case 6: case 7: case 8: v6 = *(_BYTE *)(v4 + 10); break; case 4: case 38: v6 = *(_BYTE *)(v4 + 18); break; } if ( v18 <= v6 ) goto LABEL_5; LOBYTE(v15) = 0; *(__int16 *)((char *)&v15 + 1) = 0; v14 = a3; if ( v18 < a3 ) v14 = v18; v7 = sub_539890((unsigned int *)v5, v14); if ( v7 != a3 ) { v14 = v7 - a3; v7 = sub_539890((unsigned int *)v5, v7 - a3); if ( v7 != a3 ) { LABEL_5: --dword_750CB8; v17 = -1; v12 = (int)"Item_ForcedUpgrade"; LABEL_19: sub_467660((int)&unk_D020420, v12); return 0; } } v19 = sub_539A30(v5, 0, 1); v8 = sub_5C3690(&unk_1325CAB8, v5, (int)&v15, 1, (unsigned __int8)v7); *(_BYTE *)a4 = v14; *(_BYTE *)(a4 + 2) = v7; *(_BYTE *)(a4 + 3) = v19; if ( v8 == 1 ) { v9 = v16; *(_BYTE *)(a4 + 4) = 1; *(_WORD *)(a4 + 5) = v15; *(_BYTE *)(a4 + 7) = v9; } else { v10 = v16; *(_WORD *)(a4 + 5) = v15; *(_BYTE *)(a4 + 4) = 0; *(_BYTE *)(a4 + 7) = v10; } --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"Item_ForcedUpgrade"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0053AAA0) -------------------------------------------------------- int __cdecl sub_53AAA0(unsigned int a1) { return sub_626BC0(dword_13244B78 + 4, a1); } // 13244B78: using guessed type int dword_13244B78; //----- (0053AAC0) -------------------------------------------------------- char __cdecl sub_53AAC0(unsigned __int16 a1, unsigned __int16 a2, unsigned __int8 a3) { int v3; // ecx@2 int v4; // ecx@3 int v5; // ecx@4 int v7; // edi@8 int v8; // eax@11 signed int v9; // esi@13 __int16 v10; // ax@21 int v11; // ecx@28 void *v12; // [sp-1Ch] [bp-3Ch]@14 int v13; // [sp-18h] [bp-38h]@14 int v14; // [sp-14h] [bp-34h]@14 int v15; // [sp-10h] [bp-30h]@14 int v16; // [sp-Ch] [bp-2Ch]@14 unsigned int v17; // [sp-8h] [bp-28h]@14 int v18; // [sp-4h] [bp-24h]@14 int v19; // [sp+10h] [bp-10h]@1 int v20; // [sp+1Ch] [bp-4h]@1 v19 = (int)"Item_IsUpSource"; sub_4675D0((int)&unk_D020420, (int)"Item_IsUpSource"); dword_7508B8[dword_750CB8] = (int)"Item_IsUpSource"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( a2 >= (unsigned int)dword_14D20894 || (v3 = dword_14D21184 + 40 * a2) == 0 || (v4 = *(_DWORD *)v3) == 0 ) goto LABEL_6; v5 = *(_WORD *)v4; if ( (_WORD)v5 != a2 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * a2 + v5); LABEL_6: --dword_750CB8; LABEL_7: v20 = -1; sub_467660((int)&unk_D020420, (int)"Item_IsUpSource"); return 0; } v7 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, a2); if ( !v7 || *(_DWORD *)(v7 + 102) != 14 || !sub_418CB0((int)&dword_14D20890, a1) || (v8 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, a1)) == 0 ) goto LABEL_6; if ( *(_DWORD *)(v8 + 102) == 38 ) { v9 = 1; if ( !(dword_13244B8C & 1) ) { dword_13244B8C |= 1u; LOBYTE(v20) = 1; sub_4244F0((int)&v12, "BR_UPSORCE01"); word_13244B88 = sub_62BD30((int)&unk_1325CFB8, v12, v13, v14, v15, v16, v17, v18); } if ( !(dword_13244B8C & 2) ) { dword_13244B8C |= 2u; LOBYTE(v20) = 2; sub_4244F0((int)&v12, "BR_UPSORCE02"); word_13244B84 = sub_62BD30((int)&unk_1325CFB8, v12, v13, v14, v15, v16, v17, v18); } if ( !(dword_13244B8C & 4) ) { dword_13244B8C |= 4u; LOBYTE(v20) = 3; sub_4244F0((int)&v12, "BR_UPSORCE03"); word_13244B80 = sub_62BD30((int)&unk_1325CFB8, v12, v13, v14, v15, v16, v17, v18); } if ( !(dword_13244B8C & 8) ) { dword_13244B8C |= 8u; LOBYTE(v20) = 4; sub_4244F0((int)&v12, "BR_UPSORCE04"); word_13244B7C = sub_62BD30((int)&unk_1325CFB8, v12, v13, v14, v15, v16, v17, v18); } v10 = *(_WORD *)v7; if ( *(_WORD *)v7 != word_13244B88 && v10 != word_13244B84 && v10 != word_13244B80 && v10 != word_13244B7C || a3 < *(_BYTE *)(v7 + 240) || a3 > *(_BYTE *)(v7 + 247) ) { --dword_750CB8; goto LABEL_7; } } else { v11 = *(_DWORD *)(v7 + 131); if ( *(_DWORD *)(v8 + 131) != v11 && v11 || a3 < *(_BYTE *)(v7 + 240) || a3 > *(_BYTE *)(v7 + 247) ) goto LABEL_6; v9 = 1; } dword_750CB8 -= v9; v20 = -1; sub_467660((int)&unk_D020420, (int)"Item_IsUpSource"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244B7C: using guessed type __int16 word_13244B7C; // 13244B80: using guessed type __int16 word_13244B80; // 13244B84: using guessed type __int16 word_13244B84; // 13244B88: using guessed type __int16 word_13244B88; // 13244B8C: using guessed type int dword_13244B8C; // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0053AD70) -------------------------------------------------------- char __cdecl sub_53AD70(int a1, int a2, unsigned __int8 a3, unsigned __int8 a4, unsigned __int8 a5, unsigned __int8 a6, unsigned __int8 a7) { int v7; // edi@1 int (__thiscall *v8)(_DWORD, _DWORD); // edx@1 int v9; // esi@1 int v10; // eax@3 int v11; // edx@3 signed int v12; // ebx@3 unsigned __int8 v13; // al@4 unsigned __int8 v14; // cl@5 int v16; // esi@11 unsigned __int16 v17; // bx@14 int v18; // eax@16 unsigned __int16 v19; // si@18 unsigned __int16 v20; // di@24 int v21; // esi@27 int v22; // eax@27 int v23; // edx@27 int v24; // ecx@27 int v25; // edx@27 int v26; // eax@28 int v27; // edx@29 int v28; // ecx@29 int v29; // edx@29 int v30; // eax@31 int v31; // eax@36 int v32; // edx@37 int v33; // ecx@37 int v34; // edx@37 signed int v35; // edi@40 int v36; // esi@40 __int16 v37; // bx@41 int v38; // eax@41 int v39; // edx@41 int v40; // eax@42 bool v41; // zf@58 int v42; // ebx@60 signed int v43; // esi@60 int v44; // edi@60 int v45; // eax@60 signed int v46; // edi@67 unsigned __int16 v47; // cx@68 char v48; // al@68 char v49; // bl@76 unsigned __int16 v50; // ax@77 unsigned __int16 v51; // ax@81 signed int v52; // esi@85 void *v53; // [sp-1Ch] [bp-7Ch]@45 int v54; // [sp-18h] [bp-78h]@45 int v55; // [sp-14h] [bp-74h]@45 int v56; // [sp-10h] [bp-70h]@45 int v57; // [sp-Ch] [bp-6Ch]@45 unsigned int v58; // [sp-8h] [bp-68h]@45 int v59; // [sp-4h] [bp-64h]@2 int v60; // [sp+10h] [bp-50h]@1 int v61; // [sp+14h] [bp-4Ch]@27 void **v62; // [sp+18h] [bp-48h]@11 int v63; // [sp+1Ch] [bp-44h]@26 int v64; // [sp+20h] [bp-40h]@20 int v65; // [sp+24h] [bp-3Ch]@16 int v66; // [sp+28h] [bp-38h]@13 int v67; // [sp+2Ch] [bp-34h]@3 int v68; // [sp+30h] [bp-30h]@3 int v69; // [sp+34h] [bp-2Ch]@27 int v70; // [sp+38h] [bp-28h]@38 int v71; // [sp+3Ch] [bp-24h]@27 int v72; // [sp+40h] [bp-20h]@3 int v73; // [sp+44h] [bp-1Ch]@1 int v74; // [sp+48h] [bp-18h]@27 int v75; // [sp+4Ch] [bp-14h]@27 int v76; // [sp+50h] [bp-10h]@9 int v77; // [sp+5Ch] [bp-4h]@1 char v78; // [sp+6Fh] [bp+Fh]@1 unsigned int v79; // [sp+70h] [bp+10h]@63 unsigned __int8 v80; // [sp+73h] [bp+13h]@4 v60 = (int)"Item_Upgrade Table mode"; sub_4675D0((int)&unk_D020420, (int)"Item_Upgrade Table mode"); dword_7508B8[dword_750CB8] = (int)"Item_Upgrade Table mode"; dword_750AB8[dword_750CB8++] = -1; v7 = a2; v8 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)a2; v77 = 0; v9 = v8(a2, a3); v73 = *(_WORD *)(v9 + 8); v78 = sub_5395D0(v73); if ( v78 ) { v10 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v73); v67 = *(_DWORD *)(v10 + 131); v11 = **(_DWORD **)(v9 + 112); v68 = v10; v12 = 0; v72 = (*(int (**)(void))(v11 + 40))(); switch ( v72 ) { case 5: case 7: v13 = *(_BYTE *)(v9 + 10); v80 = *(_BYTE *)(v9 + 12); goto LABEL_9; case 6: case 8: v13 = *(_BYTE *)(v9 + 10); v14 = *(_BYTE *)(v9 + 12); goto LABEL_8; case 4: v13 = *(_BYTE *)(v9 + 18); v80 = *(_BYTE *)(v9 + 20); goto LABEL_9; case 38: v13 = *(_BYTE *)(v9 + 18); v14 = *(_BYTE *)(v9 + 20); LABEL_8: v80 = v14; LABEL_9: LOBYTE(v76) = v13; if ( v78 <= v13 ) { --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, (int)"Item_Upgrade Table mode"); return 1; } v16 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))v7)(v7, a4) + 8); v62 = (void **)v16; if ( !sub_53AAC0(v73, v16, v76) ) { --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, (int)"Item_Upgrade Table mode"); return 2; } v66 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v16); if ( a5 == -1 ) goto LABEL_17; v17 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))v7)(v7, a5) + 8); if ( !sub_539710(v73, v17, v76) ) { --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, (int)"Item_Upgrade Table mode"); return 8; } v18 = sub_418CB0((int)&dword_14D20890, v17); v12 = 13 * v80; v65 = *(_DWORD *)v18; LABEL_17: if ( a6 == -1 ) goto LABEL_21; v19 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))v7)(v7, a6) + 8); if ( !sub_539710(v73, v19, v76) ) { --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, (int)"Item_Upgrade Table mode"); return 9; } v64 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v19); v12 += 12 * v80; LABEL_21: if ( v12 / 10 ) v80 = v12 / 10; if ( a7 == -1 ) goto LABEL_27; v20 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))v7)(v7, a7) + 8); if ( !sub_539710(v73, v20, v76) ) { --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, (int)"Item_Upgrade Table mode"); return 10; } v63 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v20); LABEL_27: v21 = (unsigned __int8)v76 + 12 * v67 - 12; v61 = (unsigned __int8)v76; v22 = sub_626BC0((int)&unk_1325CA78, (unsigned __int8)v76 + 12 * v67 - 12); v23 = *(_WORD *)(v22 + 6); v75 = *(_WORD *)(v22 + 4); v24 = *(_WORD *)(v22 + 8); v74 = v23; v25 = *(_WORD *)(v22 + 10); v69 = v24; v71 = v25; if ( v72 == 4 ) { v26 = sub_53AAA0(v21); if ( v26 ) { v27 = *(_WORD *)(v26 + 6); v75 = *(_WORD *)(v26 + 4); v28 = *(_WORD *)(v26 + 8); v74 = v27; v29 = *(_WORD *)(v26 + 10); v69 = v28; v71 = v29; } else { sub_639100(&unk_86DDD8, (int)"Item_Upgrade Not Found AccUpgrade Index :", v21); } v30 = sub_418CB0((int)&dword_14D20890, v73); if ( !v30 || !sub_4934A0(&dword_D61E064, (const char *)(*(_DWORD *)(v30 + 4) + 137)) ) goto LABEL_33; } else { if ( v72 == 38 ) { v31 = sub_43B330((int)&unk_1325CD30, v67, *(_DWORD *)(v68 + 127), (unsigned __int8)v76); if ( !v31 ) { LABEL_33: v59 = (int)"Item_Upgrade Table mode"; goto LABEL_34; } v32 = *(_WORD *)(v31 + 6); v75 = *(_WORD *)(v31 + 4); v33 = *(_WORD *)(v31 + 8); v74 = v32; v34 = *(_WORD *)(v31 + 10); v69 = v33; v71 = v34; } } v70 = *(_WORD *)(v66 + 243); if ( a7 != -1 ) v70 += *(_WORD *)(v63 + 243); v35 = 120; v68 = *(_DWORD *)(v68 + 127); v36 = sub_418CB0((int)&dword_14D20890, v73); v67 = v36; if ( !v36 || (v37 = (signed __int16)v62, v38 = sub_418CB0((int)&dword_14D20890, (unsigned __int16)v62), v39 = 0, (v73 = v38) == 0) || (v40 = *(_DWORD *)v38) == 0 ) goto LABEL_33; if ( v72 == 38 ) { if ( !(dword_13244B9C & 1) ) { dword_13244B9C |= 1u; v62 = &v53; LOBYTE(v77) = 1; sub_4244F0((int)&v53, "BR_UPSORCE02"); word_13244B98 = sub_62BD30((int)&unk_1325CFB8, v53, v54, v55, v56, v57, v58, v59); LOBYTE(v77) = 0; v39 = 0; } if ( !(dword_13244B9C & 2) ) { dword_13244B9C |= 2u; v62 = &v53; LOBYTE(v77) = 2; sub_4244F0((int)&v53, "BR_UPSORCE03"); word_13244B94 = sub_62BD30((int)&unk_1325CFB8, v53, v54, v55, v56, v57, v58, v59); LOBYTE(v77) = 0; v39 = 0; } if ( !(dword_13244B9C & 4) ) { dword_13244B9C |= 4u; v62 = &v53; LOBYTE(v77) = 3; sub_4244F0((int)&v53, "BR_UPSORCE04"); word_13244B90 = sub_62BD30((int)&unk_1325CFB8, v53, v54, v55, v56, v57, v58, v59); LOBYTE(v77) = 0; v39 = 0; } if ( word_13244B98 == v37 ) { v75 = v39; goto LABEL_60; } if ( word_13244B94 == v37 ) { v75 = v39; } else { if ( word_13244B90 != v37 ) goto LABEL_60; v75 = v39; } } else { if ( *(_DWORD *)(*(_DWORD *)v36 + 131) < 6u || *(_DWORD *)(v40 + 131) < 6u || (v35 = 0, v41 = *(_DWORD *)(v40 + 118) == 4, v75 = 0, v71 = 0, v80 = 0, v68 = 0, !v41) ) goto LABEL_60; } v74 = v39; LABEL_60: v42 = (unsigned __int16)v69; v69 = (unsigned __int16)v74; v62 = (void **)(unsigned __int16)v75; v43 = v42 + (unsigned __int16)v74 + (unsigned __int16)v75; v44 = v42 + (unsigned __int16)v74 + (unsigned __int16)v75 - (v70 + v35 + v80 * (unsigned __int16)v71 - v68); v45 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v72 == 38 ) { v44 = v42 - v70; if ( v42 - v70 < 0 ) v44 = 0; } v79 = *(_DWORD *)(*(_DWORD *)v67 + 131); if ( v79 >= 6 && *(_DWORD *)(*(_DWORD *)v73 + 131) >= 6u ) v44 = v42; if ( v45 > v44 ) { v52 = *(_WORD *)(v66 + 245); v49 = 0; if ( a5 != -1 ) v52 += *(_WORD *)(v65 + 245); if ( a6 != -1 ) v52 += *(_WORD *)(v64 + 245); if ( a7 != -1 ) v52 += *(_WORD *)(v63 + 245); if ( v72 == 38 || v79 < 6 || *(_DWORD *)(*(_DWORD *)v73 + 131) < 6u ) { if ( v52 > 0 ) { if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < v52 ) { v49 = 1; if ( v61 + 2 > (unsigned __int8)v78 ) v49 = 0; } } } } else { v46 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); if ( v43 <= 0 ) { v47 = v75; } else { v47 = 1000 * (signed int)v62 / v43; v48 = 1; if ( v72 == 38 ) v48 = 0; if ( (*(_DWORD *)(*(_DWORD *)v67 + 131) < 6u || *(_DWORD *)(*(_DWORD *)v73 + 131) < 6u) && v48 == 1 ) v74 = 1000 * v69 / v43; } if ( v46 >= v47 ) { if ( v46 >= (unsigned __int16)(v47 + v74) ) goto LABEL_101; v49 = 3; if ( a6 != -1 ) { v51 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( v51 < (signed int)*(_WORD *)(v64 + 243) ) v49 = 2; } if ( !(_BYTE)v76 ) LABEL_101: v49 = 2; } else { v49 = 4; if ( a5 != -1 ) { v50 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( v50 < (signed int)*(_WORD *)(v65 + 243) ) v49 = 2; } } } --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, (int)"Item_Upgrade Table mode"); return v49 + 3; default: goto LABEL_33; } } v59 = (int)"Item_Upgrade Table mode"; LABEL_34: --dword_750CB8; v77 = -1; sub_467660((int)&unk_D020420, v59); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244B90: using guessed type __int16 word_13244B90; // 13244B94: using guessed type __int16 word_13244B94; // 13244B98: using guessed type __int16 word_13244B98; // 13244B9C: using guessed type int dword_13244B9C; // 14D20890: using guessed type int dword_14D20890; //----- (0053B580) -------------------------------------------------------- #error "FFFFFFFF: local variable allocation failed (funcsize=1233)" //----- (0053C6C0) -------------------------------------------------------- #error "FFFFFFFF: local variable allocation failed (funcsize=612)" //----- (0053CFB0) -------------------------------------------------------- #error "FFFFFFFF: local variable allocation failed (funcsize=659)" //----- (0053D950) -------------------------------------------------------- int __userpurge sub_53D950(int a1, int a2, int a3, char a4, int a5, int a6) { int v6; // eax@1 int v7; // esi@1 int result; // eax@2 int v9; // eax@5 char *v10; // edi@6 int v11; // eax@11 bool v12; // zf@17 int v13; // eax@17 int v14; // [sp-8h] [bp-Ch]@5 v6 = *(_DWORD *)a6; v7 = a1; if ( *(_DWORD *)(*(_DWORD *)a6 + 98) == 1 ) { if ( sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v6 + 207), (*(_BYTE *)(a1 + 32766) >> 2) & 0x1F) ) { v9 = *(_WORD *)(a5 + 8); v14 = a3; if ( (unsigned __int16)v9 < word_1325895C ) v10 = (char *)dword_13258958 + 16 * v9; else v10 = (char *)dword_13258958; if ( (unsigned __int16)(*(int (__stdcall **)(int, int, int, int))(**((_DWORD **)v10 + 1) + 4))(v7, a5, v14, a2) == 1792 ) { result = (*(int (__stdcall **)(int))(**((_DWORD **)v10 + 1) + 8))(v7); if ( !(_BYTE)result ) { v11 = *((_DWORD *)v10 + 2); if ( v11 ) { if ( *(_BYTE *)(v7 + 7888) & 4 && **(_WORD **)v11 != 29203 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3864))(v7) ) { result = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v7 + 2332))(v7, 1793, 9); } else { v12 = sub_4695E0(v7 + 84388, v7, ***((_WORD ***)v10 + 2)) == 0; v13 = *(_DWORD *)v7; if ( v12 ) { result = (*(int (__thiscall **)(int, signed int, signed int))(v13 + 2332))(v7, 1805, 9); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v13 + 3736))(v7) ) { result = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v7 + 2332))(v7, 1806, 9); } else { sub_566EF0((void *)(v7 + 7644)); *(_DWORD *)(v7 + 7644) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v10 + 2) + 4) + 203)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_WORD *)(v7 + 7648) = **(_WORD **)(*((_DWORD *)v10 + 2) + 4); *(_DWORD *)(v7 + 7676) = a6; *(_BYTE *)(v7 + 7680) = a4; result = *(_DWORD *)(*((_DWORD *)v10 + 2) + 4); *(_DWORD *)(v7 + 7672) = *(_DWORD *)(result + 207); *(_BYTE *)(v7 + 7681) = 0; *(_DWORD *)(v7 + 7664) = *((_DWORD *)v10 + 2); } } } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ItemUseReq_Inven : Null Skill", *(_WORD *)(a5 + 8)); result = (*(int (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v7 + 2332))(v7, 1805, 9); } } } else { result = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2332))(v7); } } else { result = (*(int (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v7 + 2332))(v7, 1801, 9); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ItemUseReq_Inven : Try to use not exhause item", *(_WORD *)v6); result = (*(int (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v7 + 2332))(v7, 1796, 9); } return result; } // 53D950: could not find valid save-restore pair for ebx // 53D950: could not find valid save-restore pair for edi // 1325895C: using guessed type __int16 word_1325895C; // 14D129E8: using guessed type int dword_14D129E8; //----- (0053DB90) -------------------------------------------------------- FILE *__stdcall sub_53DB90(int a1) { return sub_639100(&unk_86DDD8, (int)"ShineObject::so_NC_ITEMDB_USE_ACK", 0); } //----- (0053DBB0) -------------------------------------------------------- int __thiscall sub_53DBB0(int this, int a2, __int16 a3) { int v3; // esi@1 int result; // eax@1 void *v5; // eax@2 int v6; // ecx@2 int v7; // ST04_4@2 int v8; // eax@2 char v9; // [sp+8h] [bp-18h]@2 int v10; // [sp+1Ch] [bp-4h]@2 v3 = this; result = a2; if ( *(_BYTE *)(a2 + 12) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 12329; *((_WORD *)v5 + 1) = *(_WORD *)(this + 4); v6 = *(_DWORD *)(this + 102); *((_DWORD *)v5 + 1) = *(_DWORD *)v6; *((_DWORD *)v5 + 2) = *(_DWORD *)(v6 + 4); *((_WORD *)v5 + 6) = a3; sub_4287B0(&v9, &off_849C18, 14); v7 = *(_DWORD *)(v3 + 102); v10 = 0; v8 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v8, v7, 0, 0, (int)&v9, 1, 65535); v10 = -1; result = sub_428A70(&v9); } return result; } //----- (0053DC70) -------------------------------------------------------- __int16 __thiscall sub_53DC70(int this, __int16 a2, const void *a3) { int v3; // eax@1 int v4; // edx@1 int v5; // ecx@1 v3 = this; v4 = (*(_DWORD *)(this + 16896) + 1) & *(_DWORD *)(this + 16900); v5 = 132 * ((*(_DWORD *)(this + 16896) + 1) & *(_DWORD *)(this + 16900)); *(_DWORD *)(v3 + 16896) = v4; *(_WORD *)(v5 + v3) = a2; memcpy((void *)(132 * *(_DWORD *)(v3 + 16896) + v3 + 2), a3, 0x81u); return *(_WORD *)(v3 + 16896); } //----- (0053DCD0) -------------------------------------------------------- int __thiscall sub_53DCD0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13244BBC & 1) ) { dword_13244BBC |= 1u; word_13244BB8 = 70; atexit(nullsub_114); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244BB8 ) *((_DWORD *)v4 + 1911) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244BB8: using guessed type __int16 word_13244BB8; // 13244BBC: using guessed type int dword_13244BBC; //----- (0053DDB0) -------------------------------------------------------- int __stdcall sub_53DDB0(int a1, int a2) { int v2; // esi@1 int v3; // eax@5 void (__thiscall *v4)(_DWORD, _DWORD); // edx@5 int v5; // ecx@5 int v7; // [sp-4h] [bp-24h]@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_USE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_USE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { if ( *(_WORD *)(a1 + 10) == 1792 ) { v4 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 852); v7 = *(_WORD *)(a1 + 8); v5 = v2; } else { (*(void (__thiscall **)(int, _DWORD, signed int))(*(_DWORD *)v2 + 2332))(v2, *(_WORD *)(a1 + 8), 9); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); v4 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40); v7 = *(_WORD *)(a1 + 8); v5 = v3; } v4(v5, v7); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_USE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0053DED0) -------------------------------------------------------- int __thiscall sub_53DED0(void *this, unsigned __int16 a2) { unsigned int v2; // ST0C_4@1 void *v3; // esi@1 void (__thiscall *v4)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@1 int v5; // eax@1 int v6; // eax@13 char v8; // [sp+Ch] [bp-110h]@4 unsigned int v9; // [sp+10Ch] [bp-10h]@1 int v10; // [sp+118h] [bp-4h]@1 int v11; // [sp+11Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v2 = (unsigned int)&v11 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK"; dword_750AB8[dword_750CB8++] = -1; v4 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2332); v10 = 0; v4(v3, 1792, 9, v2); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 32))(v5, v3, a2, 0) && byte_7493ED ) { if ( byte_14D15494 ) { sprintf(&v8, "%.255s", "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK : "); sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fputs(&v8, dword_14D15310); } if ( byte_7493ED ) { if ( byte_14D15494 ) { sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fprintf(dword_14D15310, "%d", a2); } if ( byte_7493ED && byte_14D15494 && dword_14D15310 ) { v6 = sub_418E40((__time32_t)byte_14D15210); sub_654AB0(10, (FILE *)v6); fflush(dword_14D15310); fclose(dword_14D15310); dword_14D15310 = 0; } } } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D15494: using guessed type char byte_14D15494; //----- (0053E090) -------------------------------------------------------- int __thiscall sub_53E090(void *this, int a2, int a3, char a4) { int v4; // esi@1 int (__thiscall *v5)(_DWORD, _DWORD); // edx@1 int v6; // eax@1 int v7; // edi@1 __int16 v8; // cx@1 unsigned int v9; // eax@1 int v10; // edx@2 int v11; // edx@3 int v12; // edx@4 int v13; // eax@4 int (__stdcall *v14)(_DWORD); // edx@6 int v15; // eax@6 int v16; // eax@8 char *v17; // ebx@9 int v18; // eax@11 int v19; // edi@16 int v20; // eax@16 int v21; // eax@17 int v22; // ecx@19 char v24; // [sp+10h] [bp-2Ch]@19 int v25; // [sp+28h] [bp-14h]@1 __int16 *v26; // [sp+2Ch] [bp-10h]@6 int v27; // [sp+38h] [bp-4h]@1 v4 = (int)this; v25 = (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemUse"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemUse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemUse"; dword_750AB8[dword_750CB8++] = -1; v5 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)(v4 + 36484); v27 = 0; v6 = v5(v4 + 36484, (unsigned __int8)a3); v7 = v6; v8 = *(_WORD *)(v6 + 8); v9 = *(_WORD *)(v6 + 8); if ( v9 < dword_14D20894 ) { v10 = dword_14D21184 + 40 * v9; if ( v10 ) { v11 = *(_DWORD *)v10; if ( v11 ) { v12 = *(_WORD *)v11; v13 = v12 + 10000 * v9; if ( (_WORD)v12 == v8 ) { v14 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(v7 + 112) + 28); v26 = (__int16 *)(v7 + 8); v15 = v14(v7 + 8); if ( v15 > 0 ) { v16 = *(_WORD *)(v7 + 8); if ( (unsigned __int16)v16 < word_1325895C ) v17 = (char *)dword_13258958 + 16 * v16; else v17 = (char *)dword_13258958; v18 = (unsigned __int16)(*(int (__stdcall **)(int, int))(**((_DWORD **)v17 + 1) + 4))(v4, v7); if ( (_WORD)v18 == 1792 ) { if ( !a4 ) (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 12, 26); sub_53DBB0(v4, (int)v17, *v26); if ( *(_WORD *)(v4 + 7648) == 29200 ) { v19 = *(_DWORD *)v4; v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 984))(v4); (*(void (__thiscall **)(int, _DWORD, unsigned int))(v19 + 884))( v4, *(_WORD *)(v4 + 7648), ((signed int)((unsigned __int64)(v20 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v20 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); } (*(void (__thiscall **)(_DWORD, int, int, int, int))(**((_DWORD **)v17 + 1) + 12))( *((_DWORD *)v17 + 1), v4, v4 + 36484, a2, a3); v21 = *(_DWORD *)(v4 + 122); if ( v21 && *(_DWORD *)(v21 + 296) ) { sub_5D4900((int)&v24, v21, v4, *v26); v22 = *(_DWORD *)(v4 + 122); LOBYTE(v27) = 1; sub_463090(v22, 32, (int)&v24); LOBYTE(v27) = 0; sub_5D4580(&v24); } } else { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v4 + 2332))(v4, v18, 9); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use lot 0 item", v15 > 0); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1795, 9); } } else { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v13); } } } } --dword_750CB8; v27 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_ItemUse"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325895C: using guessed type __int16 word_1325895C; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0053E2F0) -------------------------------------------------------- int __stdcall sub_53E2F0(void *a1, int a2, int **a3, unsigned __int8 a4) { int (__stdcall *v4)(_DWORD); // edx@1 int v5; // esi@1 __int16 v7; // [sp+14h] [bp-10h]@3 int v8; // [sp+20h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemSilverWing::uib_AfterCast"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemSilverWing::uib_AfterCast"; dword_750AB8[dword_750CB8++] = -1; v4 = (int (__stdcall *)(_DWORD))**(_DWORD **)a2; v8 = 0; v5 = *(_WORD *)(v4(a4) + 8); if ( (_WORD)v5 == *(_WORD *)*a3 ) { v7 = a4 | 0x2400; sub_595DD0(a1, (int)&v7); } else { sub_639150(&unk_86DDD8, (int)"UseEffect::UseItemSilverWing::uib_AfterCast : Item Changed", v5, *(_WORD *)*a3); (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)a1 + 2332))(1794, 9); } --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSilverWing::uib_AfterCast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0053E400) -------------------------------------------------------- int __thiscall sub_53E400(void *this, int a2, int a3, int **a4, unsigned __int8 a5) { unsigned int v5; // ST10_4@1 int (__thiscall *v6)(_DWORD, _DWORD, _DWORD); // edx@1 int v7; // esi@1 int v8; // ecx@1 int v9; // eax@3 void *v10; // ebx@5 int v11; // eax@8 int v12; // eax@9 int v13; // esi@9 int v14; // ST28_4@9 int v15; // eax@9 int v16; // ecx@9 int v17; // esi@9 int v18; // eax@11 int v19; // esi@13 int v20; // esi@14 int v21; // edi@14 int v22; // eax@14 int v23; // edi@15 int v24; // eax@15 int v25; // edi@16 int v26; // eax@16 int v27; // eax@16 void *v29; // [sp+10h] [bp-10Ch]@1 signed int v30; // [sp+1Ch] [bp-100h]@3 int v31; // [sp+20h] [bp-FCh]@1 __int16 v32; // [sp+28h] [bp-F4h]@13 char v33; // [sp+2Ch] [bp-F0h]@13 char v34; // [sp+34h] [bp-E8h]@15 __int16 v35; // [sp+98h] [bp-84h]@13 char v36; // [sp+9Ah] [bp-82h]@13 char v37; // [sp+9Ch] [bp-80h]@9 int v38; // [sp+A4h] [bp-78h]@9 __int16 v39; // [sp+108h] [bp-14h]@9 char v40; // [sp+10Ah] [bp-12h]@9 unsigned int v41; // [sp+10Ch] [bp-10h]@1 int v42; // [sp+118h] [bp-4h]@1 int v43; // [sp+11Ch] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v5 = (unsigned int)&v43 ^ __security_cookie; v29 = this; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemNormal::uib_AfterCast"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemNormal::uib_AfterCast"; dword_750AB8[dword_750CB8++] = -1; v6 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD))**(_DWORD **)a3; v42 = 0; v7 = v6(a3, a5, v5); v8 = *(_WORD *)(v7 + 8); v31 = v7; if ( (_WORD)v8 == *(_WORD *)*a4 ) { v9 = (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 28))(v7 + 8); v30 = v9; if ( v9 > 0 ) { v10 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)off_849C18 & 0x3FF | 0x3400; *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v10 + 1) = *(_WORD *)(a2 + 4); if ( v30 == 1 ) { *(_WORD *)v10 = *(_WORD *)v10 & 0xFC3F | 0x3F; *((_DWORD *)v10 + 2) = *(_DWORD *)v7; *((_DWORD *)v10 + 3) = *(_DWORD *)(v7 + 4); *((_WORD *)v10 + 8) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *((_WORD *)v10 + 9) = *(_WORD *)(v7 + 8); if ( sub_4C81E0(&off_849C18, 20) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Packet Too Long", 20); } } else { v12 = *(_DWORD *)(v7 + 112); memcpy(&v37, (const void *)v7, 0x6Cu); v13 = v7 + 108; v39 = *(_WORD *)v13; v40 = *(_BYTE *)(v13 + 2); v14 = v12; v15 = (*(int (__thiscall **)(int, int *))(*(_DWORD *)v12 + 28))(v12, &v38); (*(void (__thiscall **)(int, int *, int))(*(_DWORD *)v14 + 32))(v14, &v38, v15 - 1); *(_WORD *)v10 = *(_WORD *)v10 & 0xFC3E | 0x3E; *((_WORD *)v10 + 10) = *(_WORD *)((*(int (**)(void))(*(_DWORD *)a2 + 2004))() + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)v31; v16 = v38; *((_DWORD *)v10 + 3) = *(_DWORD *)(v31 + 4); *((_WORD *)v10 + 8) = *(_WORD *)(v31 + 8); *((_WORD *)v10 + 9) = 20; v17 = sub_63D0C0(&v37, v14, v16, (int)((char *)v10 + 22)) - (_DWORD)((char *)v10 + 22) + 22; if ( sub_4C81E0(&off_849C18, v17) ) { v18 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Packet Too Long", v17); } v7 = v31; } v32 = a5 | 0x2400; memcpy(&v33, (const void *)v7, 0x6Cu); v19 = v7 + 108; v35 = *(_WORD *)v19; v36 = *(_BYTE *)(v19 + 2); if ( v30 > 1 ) { (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v31 + 112) + 32))(&v34, v30 - 1); v20 = a2; v23 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 2004))(v20); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v23 + 64))( v23, *(_WORD *)(v24 + 4), v31, &v33, &v32, &v32); } else { v20 = a2; v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 2004))(v20); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v21 + 48))( v21, *(_WORD *)(v22 + 4), v31, &v32, &v32); } v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 2004))(v20); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 2004))(v20); (*(void (__thiscall **)(int, _DWORD, char *, __int16 *, void *))(*(_DWORD *)v25 + 88))( v25, *(_WORD *)(v26 + 4), &v33, &v32, v29); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 2004))(v20); ++*(_WORD *)(v27 + 4); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemNormal::uib_AfterCast : Zero lot", v9); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 2332))(a2, 1794, 9); --dword_750CB8; } } else { sub_639150(&unk_86DDD8, (int)"UseEffect::UseItemNormal::uib_AfterCast : Item Changed", v8, *(_WORD *)*a4); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 2332))(a2, 1794, 9); --dword_750CB8; } v42 = -1; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemNormal::uib_AfterCast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0053E850) -------------------------------------------------------- int __thiscall sub_53E850(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@5 int v6; // eax@14 int v7; // eax@15 int v8; // eax@17 void *v9; // ecx@20 int v10; // eax@22 signed int v12; // [sp-10h] [bp-BCh]@26 signed int v13; // [sp-Ch] [bp-B8h]@26 signed int v14; // [sp-8h] [bp-B4h]@4 unsigned int v15; // [sp-4h] [bp-B0h]@1 signed int v16; // [sp-4h] [bp-B0h]@12 int v17; // [sp+10h] [bp-9Ch]@8 int v18; // [sp+14h] [bp-98h]@8 unsigned __int16 *v19; // [sp+14h] [bp-98h]@14 int v20; // [sp+14h] [bp-98h]@17 char v21; // [sp+18h] [bp-94h]@25 unsigned __int8 v22; // [sp+98h] [bp-14h]@25 unsigned int v23; // [sp+9Ch] [bp-10h]@1 int v24; // [sp+A8h] [bp-4h]@1 int v25; // [sp+ACh] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v15 = (unsigned int)&v25 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; if ( !(dword_13244BC4 & 1) ) { dword_13244BC4 |= 1u; word_13244BC0 = 86; atexit(nullsub_116); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13244BC0) ) { v14 = 1793; LABEL_28: v13 = 76; v12 = 8; goto LABEL_29; } v5 = *(_DWORD *)(v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { v14 = 1808; goto LABEL_28; } if ( *(_WORD *)(v4 + 85728) & 0xC ) { v14 = 578; v13 = 12; v12 = 12; LABEL_29: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, v12, v13, v14, v15); v24 = -1; goto LABEL_30; } v18 = *(_BYTE *)(a2 + 2); v17 = *(_BYTE *)(a2 + 2); if ( v17 < (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)(v4 + 36484) + 8))(v4 + 36484, v15) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int, _DWORD))(*(_DWORD *)(v4 + 58688) + 4))( v4 + 58688, 9, v17, *(_WORD *)(v4 + 160778)) ) { v16 = 1802; } else { v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, *(_BYTE *)(a2 + 2)); v19 = (unsigned __int16 *)(v6 + 8); if ( word_14D211AC != *(_WORD *)(v6 + 8) ) goto LABEL_10; v7 = (*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 28))(v6 + 8); if ( v7 > 0 ) { v8 = sub_418CB0((int)&dword_14D20890, *v19); v20 = v8; if ( v8 && *(_DWORD *)v8 ) { v9 = *(void **)(v4 + 122); if ( v9 ) { if ( sub_4627E0(v9) ) { v10 = sub_4627E0(*(void **)(v4 + 122)); if ( sub_479420((void *)v10, v4) ) { v16 = 1824; goto LABEL_13; } } v8 = v20; } sub_53E400(off_86ACF4, v4, v4 + 36484, (int **)v8, *(_BYTE *)(a2 + 2)); v22 = *(_BYTE *)(a2 + 3); memmove(&v21, (const void *)(a2 + 4), v22); *(_WORD *)(v4 + 160820) = sub_53DC70((int)&unk_855BD0, *(_WORD *)(v4 + 4), &v21); v24 = -1; goto LABEL_30; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0); v16 = 1795; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ : Try to use lot 0 item", v7 > 0); v16 = 1795; } } LABEL_13: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, v16); v24 = -1; goto LABEL_30; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ : wrong slot", v18); LABEL_10: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1794); v24 = -1; LABEL_30: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86ACF4: using guessed type int (__thiscall *off_86ACF4[12])(void *, char); // 86FEB8: using guessed type int __security_cookie; // 13244BC0: using guessed type __int16 word_13244BC0; // 13244BC4: using guessed type int dword_13244BC4; // 14D20890: using guessed type int dword_14D20890; // 14D211AC: using guessed type __int16 word_14D211AC; //----- (0053EB70) -------------------------------------------------------- int __thiscall sub_53EB70(void *this) { void *v1; // esi@1 int v2; // eax@1 char *v3; // edi@2 int v4; // eax@3 _BYTE *v5; // edi@3 int v6; // esi@7 int v7; // eax@22 int v8; // eax@24 int v9; // ecx@24 int v10; // ecx@24 int v11; // ST08_4@24 __time32_t v12; // eax@24 __time32_t v13; // eax@24 int v14; // eax@27 unsigned int v16; // [sp-4h] [bp-338h]@1 int v17; // [sp+10h] [bp-324h]@27 int v18; // [sp+14h] [bp-320h]@27 int v19; // [sp+18h] [bp-31Ch]@27 int v20; // [sp+1Ch] [bp-318h]@27 int v21; // [sp+20h] [bp-314h]@27 char v22; // [sp+24h] [bp-310h]@17 char v23; // [sp+124h] [bp-210h]@13 char v24; // [sp+224h] [bp-110h]@5 unsigned int v25; // [sp+324h] [bp-10h]@1 int v26; // [sp+330h] [bp-4h]@1 int v27; // [sp+334h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v16 = (unsigned int)&v27 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 80410); v26 = 0; if ( (unsigned __int16)v2 < 0x80u && (v3 = (char *)&unk_855BD0 + 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; v14 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v16); v17 = *(_DWORD *)v14; v18 = *(_DWORD *)(v14 + 4); v19 = *(_DWORD *)(v14 + 8); v20 = *(_DWORD *)(v14 + 12); v21 = *(_DWORD *)(v14 + 16); sub_5B6BA0((int)&unk_133595F0, (int)&v17, (int)(v3 + 2)); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 8, 76, 1792); } else { v8 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v16); v9 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v9; v10 = (int)&byte_85A2C0[256 * v9]; *(_DWORD *)v10 = *(_DWORD *)v8; *(_DWORD *)(v10 + 4) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(v8 + 8); *(_DWORD *)(v10 + 12) = *(_DWORD *)(v8 + 12); v11 = v10; *(_DWORD *)(v10 + 16) = *(_DWORD *)(v8 + 16); *(_BYTE *)(v10 + 20) = 0; v12 = sub_418EA0((__time32_t)byte_14D211E0, (int)"Roar Null "); v13 = sub_418EA0(v12, v11); sub_418F20(v13, (int)&unk_13359E04); } } else { v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 1388))(v1, v16); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v5 = *(_DWORD *)v4; *((_DWORD *)v5 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v5 + 4) = *(_DWORD *)(v4 + 16); v5[20] = 0; if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v24, "%.255s", "Roar Null return "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v24, dword_14D212E0); } } v6 = *((_WORD *)v1 + 80410); if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v6); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v23, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v23, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v22, "%.255s", v5); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v22, dword_14D212E0); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v7 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v7); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D21464: using guessed type char byte_14D21464; //----- (0053EF00) -------------------------------------------------------- int __thiscall sub_53EF00(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@5 int v6; // edx@5 int v7; // eax@14 int v8; // ecx@14 bool v9; // zf@15 char v10; // al@21 int v11; // ebx@25 int v12; // eax@28 int v13; // eax@29 int v14; // edx@33 int v15; // eax@35 int v16; // ebx@37 int v17; // eax@39 int v18; // eax@43 int v19; // eax@45 int v20; // ecx@47 __int16 v21; // ax@58 int v22; // ebx@58 int v23; // eax@59 int v24; // eax@61 unsigned __int16 v25; // ax@61 int v26; // eax@73 int v27; // ecx@73 int v28; // eax@78 int v29; // eax@79 int v30; // edx@87 int v31; // edx@90 int v32; // eax@93 int v33; // eax@93 unsigned int v34; // eax@94 int v35; // ecx@96 int v36; // eax@102 int v38; // [sp-10h] [bp-4Ch]@103 int v39; // [sp-Ch] [bp-48h]@103 signed int v40; // [sp-8h] [bp-44h]@26 int v41; // [sp-8h] [bp-44h]@103 int v42; // [sp-4h] [bp-40h]@4 signed int v43; // [sp-4h] [bp-40h]@11 int v44; // [sp-4h] [bp-40h]@30 int v45; // [sp+10h] [bp-2Ch]@87 int v46; // [sp+14h] [bp-28h]@87 int v47; // [sp+18h] [bp-24h]@1 int v48; // [sp+1Ch] [bp-20h]@43 int v49; // [sp+20h] [bp-1Ch]@29 int v50; // [sp+24h] [bp-18h]@66 int v51; // [sp+28h] [bp-14h]@29 int v52; // [sp+2Ch] [bp-10h]@28 int v53; // [sp+38h] [bp-4h]@1 v4 = (int)this; v47 = (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"; dword_750AB8[dword_750CB8++] = -1; v53 = 0; if ( !(dword_13244BCC & 1) ) { dword_13244BCC |= 1u; word_13244BC8 = 6; atexit(nullsub_117); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13244BC8 ) { v5 = *(_DWORD *)(v4 + 122); v6 = *(_DWORD *)v4; if ( !v5 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v6 + 776))(v4, 12, 79, 12587); v42 = (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"; goto LABEL_113; } if ( !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v6 + 776))(v4, 12, 79, 12587); v42 = (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"; goto LABEL_113; } if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(v6 + 2852))(v4, 0) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 ) { LABEL_11: v43 = 12585; LABEL_110: v40 = 79; goto LABEL_111; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 9, *(_BYTE *)(a2 + 2)) == 1 ) goto LABEL_13; v7 = *(_DWORD *)v4; v8 = v4; if ( *(_BYTE *)(v4 + 85728) & 8 || (v9 = (*(int (__thiscall **)(int))(v7 + 2784))(v4) == 1, v7 = *(_DWORD *)v4, v8 = v4, v9) || (v9 = (*(int (__thiscall **)(int))(v7 + 2532))(v4) == 1, v7 = *(_DWORD *)v4, v8 = v4, v9) || (v9 = (*(int (__thiscall **)(int, signed int))(v7 + 996))(v4, 291) == 0, v7 = *(_DWORD *)v4, v8 = v4, !v9) || (v9 = (*(int (__thiscall **)(int, signed int))(v7 + 996))(v4, 499) == 0, v7 = *(_DWORD *)v4, v8 = v4, !v9) || (v9 = (*(int (__thiscall **)(int))(v7 + 3736))(v4) == 1, v7 = *(_DWORD *)v4, v8 = v4, v9) || (v9 = (*(int (__thiscall **)(int))(v7 + 2536))(v4) == 1, v7 = *(_DWORD *)v4, v8 = v4, v9) ) { LABEL_23: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v7 + 776))(v8, 12, 79, 12585); goto LABEL_112; } v10 = (*(int (__thiscall **)(int))(v7 + 3864))(v4); v8 = v4; if ( v10 == 1 ) { v7 = *(_DWORD *)v4; goto LABEL_23; } if ( sub_57A470((void *)v4) == 2 ) goto LABEL_13; v11 = *(_BYTE *)(a2 + 2); if ( v11 >= (*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 36484) + 8))(v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : wrong slot", v11); v43 = 12586; v40 = 78; LABEL_111: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, v40, v43); goto LABEL_112; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int, _DWORD))(*(_DWORD *)(v4 + 58688) + 4))( v4 + 58688, 9, v11, *(_WORD *)(v4 + 160778)) == 1 ) { LABEL_13: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12585); goto LABEL_112; } v12 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, *(_BYTE *)(a2 + 2)); v52 = v12; if ( !v12 ) { LABEL_109: v43 = 12586; goto LABEL_110; } v51 = v12 + 8; v13 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v12 + 8)); v49 = v13; if ( !v13 ) { v44 = 0; LABEL_108: sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : Try to use empty cell", v44); goto LABEL_109; } if ( !*(_DWORD *)v13 || !*(_DWORD *)(v13 + 4) ) { v44 = 1; goto LABEL_108; } v14 = *(_DWORD *)v4; *(_WORD *)(v4 + 160862) = *(_WORD *)v51; if ( *(_DWORD *)(*(_DWORD *)v13 + 127) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(v14 + 1240))(v4) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12588); goto LABEL_112; } v15 = (*(int (__stdcall **)(int))(**(_DWORD **)(v52 + 112) + 28))(v51); if ( v15 <= 0 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : Try to use lot 0 item", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12589); goto LABEL_112; } v16 = *(_DWORD *)v49; if ( v15 > *(_DWORD *)(*(_DWORD *)v49 + 106) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12586); goto LABEL_112; } v17 = *(_DWORD *)(*(_DWORD *)(v4 + 122) + 12); if ( !v17 || *(_BYTE *)(v17 + 103) == 1 && *(_BYTE *)(*(_DWORD *)(v49 + 4) + 219) == 1 ) { v43 = 12587; goto LABEL_110; } v18 = sub_486C40((int)&dword_13258868, *(_WORD *)v51); v48 = v18; if ( !v18 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : Useeffect null", 0); v43 = 12590; goto LABEL_110; } v19 = *(_DWORD *)(v18 + 8); v52 = v19; if ( !v19 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : Skill null", v16 + 310); v43 = 12590; goto LABEL_110; } v20 = *(_DWORD *)(v19 + 4); if ( !v20 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : Skill data null", v16 + 310); v43 = 12590; goto LABEL_110; } if ( !*(_DWORD *)v19 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ : Skill server data null", v16 + 310); v43 = 12590; goto LABEL_110; } if ( *(_DWORD *)(v19 + 24) != *(_DWORD *)(v19 + 28) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12590); goto LABEL_112; } if ( *(_DWORD *)(v4 + 368) == 3 && (*(_DWORD *)(v20 + 203) || *(_BYTE *)(v19 + 376) == 1 || *(_BYTE *)(v19 + 400) == 1) ) goto LABEL_13; if ( !sub_4695E0(v4 + 84388, v4, *(_WORD *)v20) ) goto LABEL_11; v21 = *(_WORD *)(a2 + 3); v22 = 0; if ( v21 != -1 ) { v23 = sub_54DE90(&unk_13253630, v21); v22 = v23; if ( !v23 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12591); goto LABEL_112; } v24 = *(_DWORD *)(v23 + 102); *(_DWORD *)(a2 + 5) = *(_DWORD *)v24; *(_DWORD *)(a2 + 9) = *(_DWORD *)(v24 + 4); v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v22 + 1800))(v22); if ( !sub_63EDC0((int)&unk_14D159B0, v25, 2) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); goto LABEL_63; } if ( !sub_499ED0((void *)v4, v22) || (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v22 + 996))(v22, 499) ) goto LABEL_63; v50 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v22 + 1004))(v22, 291); if ( v50 > 0 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v22 + 2204))(v22) ) { v43 = 12591; v40 = 78; goto LABEL_111; } if ( v50 > 3600 ) { LABEL_63: v43 = 12591; goto LABEL_110; } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v22 + 1616))(v22, 291); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v22 + 3140))(v22) == 1 && *(_BYTE *)(v52 + 256) == 1 || !sub_408B10(v52, v22) ) goto LABEL_63; v26 = *(_DWORD *)(v52 + 4); v27 = *(_DWORD *)(v26 + 184); if ( v27 && v27 != 7 ) { if ( *(_DWORD *)(v26 + 527) == 5 ) { if ( !*(_DWORD *)(v26 + 259) ) { if ( v27 != 8 || (v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v22 + 1804))(v22)) == 0 || (v29 = *(_DWORD *)v28) == 0 || *(_DWORD *)(v29 + 99) != 16 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 3724))(v4, v22) ) { v43 = 12591; goto LABEL_110; } } } } } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, v22, "NC_ITEM_USE_ACTIVESKILL_REQ") ) goto LABEL_63; } if ( **(_WORD **)(v52 + 4) == *((_WORD *)sub_4695D0(&unk_132577A0) + 5) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2680))(v4) ) goto LABEL_63; } v30 = *(_DWORD *)(a2 + 9); v45 = *(_DWORD *)(a2 + 5); v51 = a2 + 5; v46 = v30; sub_4BE0E0((void *)v4, a2 + 5, 10000, (int)&v45, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( *(_DWORD *)v51 != v45 || *(_DWORD *)(a2 + 9) != v46 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); v43 = 12593; goto LABEL_110; } if ( *(_BYTE *)(v52 + 376) != 1 || (v31 = *(_DWORD *)(v51 + 4), v45 = *(_DWORD *)v51, v46 = v31, sub_4BE0E0( (void *)v4, v51, 10000, (int)&v45, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0), *(_DWORD *)v51 == v45) && *(_DWORD *)(a2 + 9) == v46 ) { v32 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1740))(v4); v33 = *(_DWORD *)(v52 + 116) + v32; if ( ((unsigned int)(10 * v33) >> 3) - v33 <= 0x3C ) v34 = (unsigned int)(10 * v33) >> 3; else v34 = v33 + 60; v50 = **(_DWORD **)(v4 + 102) - *(_DWORD *)v51; v35 = *(_DWORD *)(*(_DWORD *)(v4 + 102) + 4) - *(_DWORD *)(v51 + 4); if ( v50 * v50 + v35 * v35 <= v34 * v34 ) { if ( sub_42A910(v4 + 160796) == 1 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792))(v4); if ( !*(_BYTE *)(*(_DWORD *)v52 + 72) ) *(_BYTE *)(v4 + 155428) |= 1u; } else { *(_BYTE *)(v4 + 155428) ^= (*(_BYTE *)(v4 + 155428) ^ *(_BYTE *)(*(_DWORD *)v52 + 71)) & 1; } (*(void (__stdcall **)(int, int, int, _DWORD))(**(_DWORD **)(v48 + 4) + 12))( v4, v4 + 36484, v49, *(_BYTE *)(a2 + 2)); v36 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v36 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3824))(v4, **(_WORD **)(v52 + 4)); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); if ( v22 ) { v41 = 0; v39 = v22; v38 = v52; } else { v41 = v51; v39 = 0; v38 = v52; } sub_579C10((void *)v4, v38, v39, v41, -1); *(_BYTE *)(v4 + 155428) &= 0xFDu; *(_WORD *)(v4 + 32655) = 0; v43 = 12584; goto LABEL_110; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12594); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12593); } LABEL_112: v42 = (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"; goto LABEL_113; } } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 79, 12585); v42 = (int)"ShinePlayer::sp_NC_ITEM_USE_ACTIVESKILL_REQ"; LABEL_113: --dword_750CB8; v53 = -1; return sub_467660((int)&unk_D020420, v42); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244BC8: using guessed type __int16 word_13244BC8; // 13244BCC: using guessed type int dword_13244BCC; // 13258868: using guessed type int dword_13258868; // 14D20890: using guessed type int dword_14D20890; //----- (0053F7E0) -------------------------------------------------------- void __thiscall sub_53F7E0(void *this, int a2, int a3, int **a4) { int v4; // esi@1 int v5; // ST08_4@3 int (__thiscall *v6)(_DWORD, _DWORD); // eax@3 void *v7; // eax@3 signed int v8; // [sp-4h] [bp-4Ch]@4 __int16 v9; // [sp+0h] [bp-48h]@0 int v10; // [sp+10h] [bp-38h]@3 int v11; // [sp+14h] [bp-34h]@3 int v12; // [sp+18h] [bp-30h]@3 int v13; // [sp+1Ch] [bp-2Ch]@3 int v14; // [sp+20h] [bp-28h]@3 int v15; // [sp+24h] [bp-24h]@3 int v16; // [sp+28h] [bp-20h]@3 void *v17; // [sp+2Ch] [bp-1Ch]@3 int v18; // [sp+30h] [bp-18h]@3 int v19; // [sp+34h] [bp-14h]@3 int v20; // [sp+44h] [bp-4h]@3 v4 = (int)this; if ( a4 && (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { v10 = 8; v11 = 1; v12 = 10; v13 = 0; v14 = v4; v15 = v4; v16 = v4; v17 = 0; v18 = 0; v19 = 0; v5 = *(_WORD *)*a4; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1488); v20 = 0; v7 = (void *)v6(v4, &v17); if ( sub_5CF1D0(v7, (int)&v10, v5, v9) == 1 ) v8 = 1792; else v8 = 1826; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2332))(v4, v8); if ( v17 ) operator delete(v17); } } //----- (0053F8C0) -------------------------------------------------------- int __thiscall sub_53F8C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // cl@1 int v6; // eax@5 int v7; // eax@10 bool v8; // zf@11 void (__thiscall *v9)(_DWORD, _DWORD, _DWORD); // edx@14 int v10; // edi@18 int v11; // edx@20 int (__thiscall **v12)(_DWORD, _DWORD); // eax@20 int v13; // eax@24 int v14; // ebx@24 int v15; // eax@24 int v16; // edi@24 int v17; // eax@31 void **i; // ebx@38 signed int v20; // [sp-8h] [bp-48h]@4 int v21; // [sp-8h] [bp-48h]@26 signed int v22; // [sp-8h] [bp-48h]@27 int v23; // [sp-4h] [bp-44h]@4 int v24; // [sp-4h] [bp-44h]@21 int v25; // [sp-4h] [bp-44h]@26 int v26; // [sp-4h] [bp-44h]@27 void **v27; // [sp+10h] [bp-30h]@38 void **v28; // [sp+14h] [bp-2Ch]@38 int v29; // [sp+18h] [bp-28h]@38 int v30; // [sp+20h] [bp-20h]@1 int v31; // [sp+24h] [bp-1Ch]@20 int v32; // [sp+28h] [bp-18h]@15 int v33; // [sp+2Ch] [bp-14h]@20 int v34; // [sp+30h] [bp-10h]@1 int v35; // [sp+3Ch] [bp-4h]@1 v4 = this; v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_BYTE *)(a2 + 3); v35 = 0; LOBYTE(v34) = v5; if ( !(dword_13244BD4 & 1) ) { dword_13244BD4 |= 1u; word_13244BD0 = 70; atexit(nullsub_115); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13244BD0) ) goto LABEL_57; v6 = *(_DWORD *)((char *)v4 + 122); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 158) ) { v23 = v34; v20 = 1808; goto LABEL_49; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2852))(v4, 0) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1793, 9); LABEL_51: v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; goto LABEL_52; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { LABEL_57: v23 = v34; v20 = 1793; LABEL_49: v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2332); goto LABEL_50; } v7 = *(_DWORD *)v4; if ( *((_BYTE *)v4 + 85728) & 8 || (v8 = (*(int (__thiscall **)(void *))(v7 + 2784))(v4) == 1, v7 = *(_DWORD *)v4, v8) ) goto LABEL_14; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v7 + 2532))(v4) ) { v7 = *(_DWORD *)v4; LABEL_14: v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(v7 + 2332); v23 = v34; v20 = 1793; LABEL_50: v9(v4, v20, v23); goto LABEL_51; } v32 = (unsigned __int8)v34; if ( (unsigned __int8)v34 == 8 ) { v10 = (int)((char *)v4 + 32816); } else { if ( (unsigned __int8)v34 != 9 ) { v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2332); v23 = v34; v20 = 1794; goto LABEL_50; } v10 = (int)((char *)v4 + 36484); } v11 = *(_BYTE *)(a2 + 2); v12 = *(int (__thiscall ***)(_DWORD, _DWORD))v10; v31 = *(_BYTE *)(a2 + 2); v33 = v11; if ( v11 >= ((int (__thiscall *)(int))v12[2])(v10) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : wrong slot", v31); sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Inventory type", v32); (*(void (__thiscall **)(void *, signed int, int))(*(_DWORD *)v4 + 2332))(v4, 1794, v34); v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; LABEL_52: v35 = -1; goto LABEL_53; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, int, int, _DWORD))(*((_DWORD *)v4 + 14672) + 4))( (char *)v4 + 58688, v32, v33, *((_WORD *)v4 + 80389)) ) { (*(void (__thiscall **)(void *, signed int, int))(*(_DWORD *)v4 + 2332))(v4, 1802, v34); v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; goto LABEL_52; } v13 = (**(int (__thiscall ***)(_DWORD, _DWORD))v10)(v10, *(_BYTE *)(a2 + 2)); v14 = v13 + 8; v33 = v13; v15 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v13 + 8)); v16 = v15; if ( !v15 || !*(_DWORD *)v15 ) { v25 = 0; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use empty cell"; LABEL_27: sub_639100(&unk_86DDD8, v21, v25); v26 = v34; v22 = 1795; LABEL_28: (*(void (__thiscall **)(_DWORD, signed int, int))(*(_DWORD *)v4 + 2332))(v4, v22, v26); v35 = -1; v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; LABEL_53: --dword_750CB8; return sub_467660((int)&unk_D020420, v24); } *((_WORD *)v4 + 80431) = *(_WORD *)v14; if ( *(_DWORD *)(*(_DWORD *)v15 + 127) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) ) { v26 = v34; v22 = 1800; goto LABEL_28; } v17 = (*(int (__stdcall **)(int))(**(_DWORD **)(v33 + 112) + 28))(v14); if ( v17 <= 0 ) { v25 = 0; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use lot 0 item"; goto LABEL_27; } if ( v17 > *(_DWORD *)(*(_DWORD *)v16 + 106) ) { v26 = v34; v22 = 1794; goto LABEL_28; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 122) + 12) + 103) && !*(_BYTE *)(*(_DWORD *)(v16 + 4) + 219) ) { v26 = v34; v22 = 1808; goto LABEL_28; } v27 = 0; v28 = 0; v29 = 0; LOBYTE(v35) = 1; loc_459970(&dword_D56DC38, v4, &v27); for ( i = v27; i != v28; ++i ) { if ( *i ) sub_48FCC0(*i, (int)v4, **(_WORD **)v16); } if ( *(_BYTE *)(a2 + 3) == 8 ) { sub_53F7E0(v4, *(_BYTE *)(a2 + 2), v33, (int **)v16); sub_424190((void **)&v27); v35 = -1; v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; goto LABEL_53; } if ( *(_BYTE *)(a2 + 3) == 9 ) sub_53D950((int)v4, 1, v16, *(_BYTE *)(a2 + 2), v33, v16); else (*(void (__thiscall **)(void *, signed int, int))(*(_DWORD *)v4 + 2332))(v4, 1794, v34); sub_424190((void **)&v27); --dword_750CB8; v35 = -1; v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; return sub_467660((int)&unk_D020420, v24); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244BD0: using guessed type __int16 word_13244BD0; // 13244BD4: using guessed type int dword_13244BD4; // 14D20890: using guessed type int dword_14D20890; //----- (0053FD00) -------------------------------------------------------- char __userpurge sub_53FD00(int a1, int a2, int a3, int a4) { int v4; // esi@1 unsigned __int8 v6; // al@3 int v7; // ebx@3 int v8; // eax@4 int v9; // edi@4 int v10; // ST18_4@6 int v11; // esi@14 int v12; // esi@22 int v13; // eax@33 int v14; // esi@39 int v15; // [sp+Ch] [bp-308h]@3 char v16; // [sp+10h] [bp-304h]@12 char v17; // [sp+110h] [bp-204h]@20 char v18; // [sp+210h] [bp-104h]@28 unsigned int v19; // [sp+310h] [bp-4h]@1 int v20; // [sp+314h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v4 = a1; if ( !a4 ) return 0; v6 = (*(int (__stdcall **)(int, int))(*(_DWORD *)a1 + 112))(a3, a2); v7 = 5 - v6; v15 = 5 - v6; if ( v7 >= (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 108))(v4) ) return 1; while ( 1 ) { v8 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 104))(v4, v7); v9 = v8; if ( !v8 ) goto LABEL_8; if ( v8 == a4 ) break; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); if ( v10 == (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 836))(a4) ) { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v18, "%.255s", "ShineObjectClass::ShineMiniHouse::so_mh_isAlreadyEnterPlayer"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v18, dword_133599D8); } } v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); if ( byte_7493ED && byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v14); } sub_418F20((__time32_t)byte_133598D8, (int)&unk_13359E04); return 0; } v7 = v15; LABEL_8: ++v7; v15 = v7; if ( v7 >= (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 108))(v4) ) return 1; } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v16, "%.255s", "ShineObjectClass::ShineMiniHouse::so_mh_isAlreadyEnterPlayer A("); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v16, dword_133599D8); } } v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v11); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v17, "%.255s", ") B("); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v17, dword_133599D8); } } } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 836))(a4); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v12); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v18, "%.255s", &unk_6C5F98); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v18, dword_133599D8); } if ( byte_7493ED && byte_13359B5C && dword_133599D8 ) { v13 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v13); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } return 0; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (00540070) -------------------------------------------------------- bool __thiscall sub_540070(int this) { return *(_BYTE *)(this + 364) >= 5u; } //----- (00540080) -------------------------------------------------------- char __thiscall sub_540080(int this) { return *(_BYTE *)(this + 365); } //----- (005400A0) -------------------------------------------------------- bool __thiscall sub_5400A0(int this, const char *a2) { bool result; // al@2 if ( *(_BYTE *)(this + 365) ) { result = 1; } else { if ( a2 ) result = strncmp((const char *)(this + 353), a2, 8u) == 0; else result = 0; } return result; } //----- (005400E0) -------------------------------------------------------- int __thiscall sub_5400E0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int result; // eax@1 int v5; // eax@2 v2 = this; v3 = 5 - (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 112))(); for ( result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 108))(v2); v3 < (unsigned __int8)result; result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 108))(v2) ) { v5 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 104))(v2, v3); if ( v5 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 1924))(v5, a2); ++v3; } return result; } //----- (00540150) -------------------------------------------------------- _UNKNOWN *__thiscall sub_540150(int this) { int v1; // eax@1 int v2; // esi@1 _BYTE *v3; // eax@1 int v4; // eax@1 int v5; // ecx@2 _BYTE *v6; // ecx@2 v1 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v1; v2 = this; v3 = &byte_85A2C0[256 * v1]; *(_DWORD *)v3 = *(_DWORD *)(this + 1309); *((_DWORD *)v3 + 1) = *(_DWORD *)(this + 1313); *((_DWORD *)v3 + 2) = *(_DWORD *)(this + 1317); v3[12] = 0; strncpy(byte_13244D5C, v3, 0xCu); byte_13244D68 = 0; v4 = sub_63AB60(&unk_CFCF398, byte_13244D5C); if ( v4 ) { v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); v6[12] = 0; strncpy(byte_13244D7D, v6, 0x20u); byte_13244D89 = 0; dword_13244D9E = *(_DWORD *)(v2 + 1300); dword_13244DA2 = *(_DWORD *)(v2 + 1304); } return &unk_13244D48; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13244D68: using guessed type char byte_13244D68; // 13244D89: using guessed type char byte_13244D89; // 13244D9E: using guessed type int dword_13244D9E; // 13244DA2: using guessed type int dword_13244DA2; //----- (00540220) -------------------------------------------------------- _UNKNOWN *__thiscall sub_540220(int this) { int v1; // eax@1 int v2; // esi@1 _BYTE *v3; // eax@1 int v4; // eax@1 _BYTE *v5; // eax@1 int v6; // esi@1 _UNKNOWN *result; // eax@2 int v8; // eax@3 _BYTE *v9; // eax@3 signed int v10; // eax@3 int v11; // edi@6 int v12; // eax@7 _BYTE *v13; // eax@7 v1 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v1; v2 = this; v3 = &byte_85A2C0[256 * v1]; *(_DWORD *)v3 = *(_DWORD *)(this + 1329); *((_DWORD *)v3 + 1) = *(_DWORD *)(this + 1333); *((_DWORD *)v3 + 2) = *(_DWORD *)(this + 1337); v3[12] = 0; strncpy(byte_13244EDC, v3, 0xCu); v4 = dword_8622C4 & (dword_8622C0 + 1); byte_13244EE8 = 0; dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)(v2 + 1329); *((_DWORD *)v5 + 1) = *(_DWORD *)(v2 + 1333); *((_DWORD *)v5 + 2) = *(_DWORD *)(v2 + 1337); v5[12] = 0; v6 = sub_63AB60(&unk_CFCF398, v5); if ( v6 ) { v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v6; *((_DWORD *)v9 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v6 + 8); v9[12] = 0; v10 = sub_639620(&unk_14D20404, v9); if ( v10 == -1 ) LOWORD(v10) = -1; v10 = (unsigned __int16)v10; if ( (unsigned __int16)v10 < dword_14D20400 ) { v11 = *(_DWORD *)(dword_14D203FC + 4 * v10); if ( v11 ) { v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v6; *((_DWORD *)v13 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v6 + 8); v13[12] = 0; strncpy(byte_13244EFD, v13, 0xCu); byte_13244F09 = 0; dword_13244F1E = *(_DWORD *)(v11 + 50); dword_13244F22 = *(_DWORD *)(v11 + 54); } } result = &unk_13244EC8; } else { result = 0; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13244EE8: using guessed type char byte_13244EE8; // 13244F09: using guessed type char byte_13244F09; // 13244F1E: using guessed type int dword_13244F1E; // 13244F22: using guessed type int dword_13244F22; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00540380) -------------------------------------------------------- signed __int16 __thiscall sub_540380(int this) { int v1; // eax@1 signed __int16 result; // ax@2 v1 = *(_DWORD *)(this + 396); if ( v1 ) result = *(_WORD *)(v1 + 4); else result = -1; return result; } //----- (005403A0) -------------------------------------------------------- int __thiscall sub_5403A0(int this) { return *(_DWORD *)(this + 812); } //----- (005403B0) -------------------------------------------------------- signed int __stdcall sub_5403B0(int a1) { return 65535; } //----- (005403C0) -------------------------------------------------------- signed __int16 __thiscall sub_5403C0(void *this, int a2) { int v2; // eax@1 signed __int16 result; // ax@2 v2 = *((_DWORD *)this + a2 + 94); if ( v2 ) result = *(_WORD *)(v2 + 4); else result = -1; return result; } //----- (005403F0) -------------------------------------------------------- int __thiscall sub_5403F0(void *this, int a2) { return *((_DWORD *)this + a2 + 198); } //----- (00540410) -------------------------------------------------------- int __thiscall sub_540410(void *this, int a2) { return *((_DWORD *)this + a2 + 94); } //----- (00540430) -------------------------------------------------------- char __thiscall sub_540430(int this) { return *(_BYTE *)(this + 372); } //----- (00540440) -------------------------------------------------------- char __thiscall sub_540440(int this) { return *(_BYTE *)(this + 373); } //----- (00540450) -------------------------------------------------------- int __thiscall sub_540450(int this) { return *(_BYTE *)(this + 362); } //----- (00540460) -------------------------------------------------------- char *__thiscall sub_540460(void *this) { return (char *)this + 49292; } //----- (00540470) -------------------------------------------------------- signed int __stdcall sub_540470(int a1) { return 4545; } //----- (00540480) -------------------------------------------------------- char __stdcall sub_540480(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { return 1; } //----- (00540490) -------------------------------------------------------- char __thiscall sub_540490(int this, int a2) { *(_BYTE *)(a2 + 4) = *(_BYTE *)(this + 365); *(_BYTE *)(a2 + 6) = *(_BYTE *)(this + 362) - 5; *(_BYTE *)(a2 + 5) = *(_BYTE *)(this + 372) - 5; return 1; } //----- (005404C0) -------------------------------------------------------- char __thiscall sub_5404C0(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@2 int v5; // eax@3 __int16 v6; // ax@6 int v7; // eax@6 char result; // al@7 unsigned int v9; // edi@8 int v10; // eax@8 int v11; // [sp+Ch] [bp-8h]@1 signed int v12; // [sp+10h] [bp-4h]@1 v3 = this; v11 = 0; v12 = 5; if ( *(_BYTE *)(this + 372) > 5u ) { v4 = a2 + 140; do { v5 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 104))(v3, v12); if ( v5 ) { *(_WORD *)(v4 + 1) = *(_WORD *)(v5 + 4); ++v11; *(_BYTE *)v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1240))(v5); v4 += 3; } ++v12; } while ( v12 < *(_BYTE *)(v3 + 372) ); } *(_BYTE *)(a2 + 139) = v11; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 132))(v3); v7 = sub_54DE90(&unk_13253630, v6); if ( v7 ) { v9 = (unsigned int)&unk_7FFFFFF & dword_14D129E8; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); sprintf( (char *)(a2 + 107), "%010u%010u%010u", v9, (unsigned int)((char *)&off_5C5988[4] + 2) ^ a3 ^ v9, (unsigned int)&unk_82783A ^ v9 ^ v10); *(_BYTE *)(a2 + 5) = *(_BYTE *)(v3 + 1341); strncpy((char *)(a2 + 6), (const char *)(v3 + 1342), 0x64u); *(_BYTE *)(a2 + 4) = *(_BYTE *)(v3 + 362) - 5; result = 1; } else { result = 0; } return result; } // 5C5988: using guessed type int (__cdecl *off_5C5988[7])(int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (005405E0) -------------------------------------------------------- _BYTE *__thiscall sub_5405E0(int this) { _BYTE *result; // eax@2 int v2; // eax@3 int v3; // ecx@3 _BYTE *v4; // ecx@3 if ( *(_DWORD *)(this + 396) ) { v2 = (*(int (**)(void))(**(_DWORD **)(this + 396) + 1744))(); v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)(v2 + 2); *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 6); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 10); *((_DWORD *)v4 + 3) = *(_DWORD *)(v2 + 14); *((_DWORD *)v4 + 4) = *(_DWORD *)(v2 + 18); v4[20] = 0; result = v4; } else { result = 0; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00540640) -------------------------------------------------------- char *__thiscall sub_540640(void *this) { return (char *)this + 332; } //----- (00540650) -------------------------------------------------------- char *__thiscall sub_540650(void *this, int a2) { char *result; // eax@2 switch ( a2 ) { case 3: result = (char *)this + 1452; break; case 13: result = (char *)this + 12824; break; case 14: result = (char *)this + 24196; break; case 16: result = (char *)this + 35568; break; default: result = 0; break; } return result; } //----- (005406C0) -------------------------------------------------------- char __thiscall sub_5406C0(void *this, __int16 a2) { signed int v2; // eax@1 char *v3; // esi@1 int v4; // edx@6 v2 = 0; v3 = (char *)this + 46940; while ( *(_WORD *)v3 != -1 ) { if ( a2 == *(_WORD *)v3 ) { v4 = dword_14D129E8; if ( *((_DWORD *)this + 2 * v2 + 11736) + 20 >= (unsigned int)dword_14D129E8 ) return 0; LABEL_7: *((_DWORD *)this + 2 * v2 + 11736) = v4; return 1; } ++v2; v3 += 8; if ( v2 >= 294 ) break; } if ( v2 != 294 ) { *((_WORD *)this + 4 * v2 + 23470) = a2; v4 = dword_14D129E8; goto LABEL_7; } return 0; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00540740) -------------------------------------------------------- signed int __thiscall sub_540740(void *this, unsigned __int16 a2, int a3) { void *v3; // edi@1 unsigned int v4; // ecx@2 int v5; // eax@5 int v6; // ecx@6 int v7; // ecx@7 int v9; // eax@10 int v10; // esi@11 int v11; // eax@13 const char *v12; // esi@14 __int16 v13; // ax@16 int v14; // ebx@16 unsigned __int8 v15; // al@18 int v16; // edx@18 unsigned __int8 v17; // al@18 int v18; // eax@19 void *v19; // esi@19 unsigned __int8 v20; // al@21 unsigned __int8 v21; // al@22 int v22; // eax@27 int (__thiscall *v23)(_DWORD); // edx@27 int v24; // eax@27 __int16 v25; // ax@31 int (__thiscall *v26)(_DWORD); // edx@31 __int16 v27; // ax@31 int v28; // eax@34 int v29; // eax@34 int v30; // eax@35 int v31; // eax@38 int v32; // eax@39 int v33; // ecx@39 void (__thiscall *v34)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@39 void (__thiscall *v35)(_DWORD, _DWORD, _DWORD); // eax@43 unsigned __int8 v36; // al@44 int (__thiscall *v37)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@44 int v38; // eax@45 __time32_t v39; // eax@45 __time32_t v40; // eax@45 __time32_t v41; // eax@45 void (__thiscall *v42)(_DWORD, _DWORD); // edx@45 char v43; // al@46 int (__thiscall *v44)(_DWORD); // eax@50 unsigned __int8 v45; // al@52 unsigned __int8 v46; // al@53 int v47; // eax@54 int v48; // eax@54 int v49; // eax@55 int v50; // eax@58 int v51; // eax@59 int v52; // ecx@59 void (__thiscall *v53)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@59 int v54; // eax@63 __time32_t v55; // eax@63 __time32_t v56; // eax@63 __time32_t v57; // eax@63 void (__thiscall *v58)(_DWORD, _DWORD); // edx@63 void (__thiscall *v59)(_DWORD, _DWORD, _DWORD); // edx@64 int v60; // [sp-20h] [bp-B8h]@13 int v61; // [sp-1Ch] [bp-B4h]@13 int v62; // [sp-18h] [bp-B0h]@13 int v63; // [sp-14h] [bp-ACh]@13 int v64; // [sp-10h] [bp-A8h]@13 const char *v65; // [sp-Ch] [bp-A4h]@13 int v66; // [sp-8h] [bp-A0h]@13 signed int v67; // [sp-4h] [bp-9Ch]@13 int v68; // [sp+0h] [bp-98h]@45 int v69; // [sp+4h] [bp-94h]@45 int v70; // [sp+Ch] [bp-8Ch]@1 int v71; // [sp+10h] [bp-88h]@43 int v72; // [sp+14h] [bp-84h]@43 int *v73; // [sp+18h] [bp-80h]@10 int v74; // [sp+1Ch] [bp-7Ch]@27 int v75; // [sp+20h] [bp-78h]@16 int v76; // [sp+24h] [bp-74h]@11 int v77; // [sp+28h] [bp-70h]@18 int v78; // [sp+2Ch] [bp-6Ch]@5 char v79; // [sp+30h] [bp-68h]@44 char v80; // [sp+44h] [bp-54h]@14 char v81; // [sp+65h] [bp-33h]@14 int v82; // [sp+86h] [bp-12h]@14 int v83; // [sp+8Ah] [bp-Eh]@14 unsigned int v84; // [sp+94h] [bp-4h]@1 int v85; // [sp+98h] [bp+0h]@1 v84 = (unsigned int)&v85 ^ __security_cookie; v70 = a3; v3 = this; if ( dword_132669D4 ) v4 = *(_DWORD *)(dword_132669D4 + 40); else v4 = 0; if ( a2 >= v4 || (v5 = sub_626BC0((int)&unk_132669A0, a2), (v78 = v5) == 0) ) return 1; v6 = *(_DWORD *)(v5 + 34); if ( v6 ) { v7 = v6 - 1; if ( v7 ) { if ( v7 != 1 ) return 2; goto LABEL_15; } v9 = sub_639670(&byte_878354, v5 + 38); v73 = (int *)v9; if ( v9 != -1 ) { v10 = sub_401310(&unk_877138, v9); v76 = v10; if ( v10 ) goto LABEL_16; } return 2; } v67 = 0; v66 = (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v5 + 38)); v65 = "ItemIdent"; v73 = &v60; sub_418AC0((char *)&v60, "RecallPoint"); v11 = sub_644B70(&unk_1321F620, v60, v61, v62, v63, v64, v65, v66, v67); if ( !v11 ) return 2; v82 = *(_WORD *)(v11 + 68); v12 = (const char *)(v11 + 36); v83 = *(_WORD *)(v11 + 70); strncpy(&v80, (const char *)(v11 + 36), 0x21u); strncpy(&v81, v12, 0x21u); LABEL_15: v10 = v76; LABEL_16: v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 132))(v3); v14 = sub_54DE90(&unk_13253630, v13); v75 = v14; if ( !v14 ) return 3; v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 112))(v3); v16 = *(_DWORD *)v3; v77 = 5 - v15; v17 = (*(int (__thiscall **)(void *))(v16 + 108))(v3); if ( v77 < v17 ) { while ( 1 ) { v18 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 104))(v3, v77); v19 = (void *)v18; if ( v18 ) { if ( v18 != v14 ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 1240))(v18); if ( (unsigned int)v20 >= *(_DWORD *)(v78 + 82) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 1240))(v19); if ( (unsigned int)v21 <= *(_DWORD *)(v78 + 86) ) { if ( *(_DWORD *)(v78 + 70) == 1 ) goto LABEL_34; if ( *(_DWORD *)(v78 + 74) || *(_DWORD *)(v78 + 78) ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 2088))(v19) ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 2088))(v19); v23 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v14 + 2088); v74 = v22; v24 = v23(v14); if ( v74 == v24 && *(_DWORD *)(v78 + 78) == 1 ) { LABEL_33: v14 = v75; LABEL_34: v28 = v70; *(_WORD *)(v70 + 2 * *(_WORD *)(v70 + 2) + 4) = *((_WORD *)v19 + 2); ++*(_WORD *)(v28 + 2); v29 = *(_DWORD *)(v78 + 34); if ( v29 ) { v30 = v29 - 1; if ( v30 ) { if ( v30 != 1 ) return 2; } else { (*(void (__thiscall **)(void *, void *, int *, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v19 + 1592))( v19, v19, v73, 1, v76, dword_14D129E8, 0, -1, 0, 0, 0); v67 = *(_DWORD *)(*(_DWORD *)v76 + 34); sub_401900(v19, v67); v31 = *(_DWORD *)(v76 + 48); if ( v31 ) { v32 = *(_DWORD *)(v31 + 43); v33 = *(_DWORD *)v76; v34 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v19 + 1008); v67 = 1; v66 = v32; v65 = *(const char **)(v33 + 34); v34(v19, v65, v32, 1); sub_4055D0(v19, *(_DWORD *)(*(_DWORD *)v76 + 34), *(_DWORD *)(*(_DWORD *)(v76 + 48) + 43), 1); } } } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v19 + 368))(v19, 1) != 1 || (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 672))(v3) != 2 && (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 672))(v3) != 3 ) { v36 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 108))(v3); v37 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v19 + 1536); v74 = v36; if ( (unsigned __int8)v37(v19, &v79, 6, 9, 10) ) { v43 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 108))(v3); if ( v74 != v43 && v77 >= 5 ) --v77; } else { v38 = (*(int (__thiscall **)(void *, _DWORD, _UNKNOWN *))(*(_DWORD *)v19 + 1744))( v19, "] cannot out minihouse", &unk_13359E04); v67 = sub_418B40((int)byte_85A2C0, v38 + 2); v39 = sub_418EA0( (__time32_t)byte_133598D8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EffectApply : player ["); v40 = sub_418EA0(v39, v67); v41 = sub_418EA0(v40, v68); sub_418F20(v41, v69); v42 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v19 + 1528); v69 = 0; v68 = 0; v42(v19, 1669); } } else { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v19 + 400))(v19, 1); v35 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v19 + 404); v71 = v82; v72 = v83; v35(v19, &v80, &v71); } } goto LABEL_50; } v14 = v75; } if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 1360))(v19) != -1 ) { v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 1360))(v19); v26 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v14 + 1360); HIWORD(v74) = v25; v27 = v26(v14); if ( HIWORD(v74) == v27 && *(_DWORD *)(v78 + 74) == 1 ) goto LABEL_33; v14 = v75; } } } } } } LABEL_50: v44 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 108); ++v77; if ( v77 >= (unsigned __int8)v44(v3) ) { v10 = v76; break; } } } v45 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1240))(v14); if ( (unsigned int)v45 >= *(_DWORD *)(v78 + 82) ) { v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1240))(v14); if ( (unsigned int)v46 <= *(_DWORD *)(v78 + 86) ) { v47 = v70; *(_WORD *)(v70 + 2 * *(_WORD *)(v70 + 2) + 4) = *(_WORD *)(v14 + 4); ++*(_WORD *)(v47 + 2); v48 = *(_DWORD *)(v78 + 34); if ( v48 ) { v49 = v48 - 1; if ( v49 ) { if ( v49 != 1 ) return 2; } else { (*(void (__thiscall **)(int, int, int *, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v14 + 1592))( v14, v14, v73, 1, v10, dword_14D129E8, 0, -1, 0, 0, 0); v67 = *(_DWORD *)(*(_DWORD *)v10 + 34); sub_401900((void *)v14, v67); v50 = *(_DWORD *)(v10 + 48); if ( v50 ) { v51 = *(_DWORD *)(v50 + 43); v52 = *(_DWORD *)v10; v53 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v14 + 1008); v67 = 1; v66 = v51; v65 = *(const char **)(v52 + 34); v53(v14, v65, v51, 1); sub_4055D0((void *)v14, *(_DWORD *)(*(_DWORD *)v10 + 34), *(_DWORD *)(*(_DWORD *)(v10 + 48) + 43), 1); return 0; } } } else { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 672))(v3) == 2 || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 672))(v3) == 3 ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 512))(v3, 1); v59 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v14 + 404); v71 = v82; v72 = v83; v59(v14, &v80, &v71); } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v14 + 1536))( v14, &v79, 6, 9, 10) ) { v54 = (*(int (__thiscall **)(int, _DWORD, _UNKNOWN *))(*(_DWORD *)v14 + 1744))( v14, "] cannot out minihouse", &unk_13359E04); v67 = sub_418B40((int)byte_85A2C0, v54 + 2); v55 = sub_418EA0( (__time32_t)byte_133598D8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EffectApply : player ["); v56 = sub_418EA0(v55, v67); v57 = sub_418EA0(v56, v68); sub_418F20(v57, v69); v58 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v14 + 1528); v69 = 0; v68 = 0; v58(v14, 1669); return 0; } } } } } return 0; } // 86FEB8: using guessed type int __security_cookie; // 132669D4: using guessed type int dword_132669D4; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; //----- (00540DE0) -------------------------------------------------------- signed int __thiscall sub_540DE0(int this) { *(_BYTE *)(this + 49380) = 0; *(_DWORD *)(this + 49384) = 0; return 1; } //----- (00540E00) -------------------------------------------------------- int __usercall sub_540E00(int a1, __int16 a2) { int result; // eax@2 unsigned int v3; // ebx@4 unsigned int v4; // edi@6 int v5; // eax@7 int v6; // esi@7 signed int v7; // eax@8 __int16 v8; // [sp+0h] [bp-4h]@3 if ( (unsigned __int16)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 288))(a1) == -1 ) { result = 0; } else { v8 = a2; if ( dword_132669D4 ) v3 = *(_DWORD *)(dword_132669D4 + 40); else v3 = 0; v4 = 0; if ( v3 ) { while ( 1 ) { v5 = sub_626BC0((int)&unk_132669A0, v4); v6 = v5; if ( v5 ) { v7 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v5 + 2)); if ( v7 != -1 ) { if ( -1 != (_WORD)v7 && (_WORD)v7 == v8 ) break; } } ++v4; if ( v4 >= v3 ) goto LABEL_12; } result = v6; } else { LABEL_12: result = 0; } } return result; } // 540E00: could not find valid save-restore pair for ebx // 132669D4: using guessed type int dword_132669D4; //----- (00540E90) -------------------------------------------------------- signed int __thiscall sub_540E90(void *this, int a2, int a3) { void *v3; // edi@1 signed int v5; // eax@5 int v6; // eax@7 const char *v7; // esi@8 __int16 v8; // ax@8 int v9; // esi@8 int v10; // ecx@10 int (__thiscall *v11)(_DWORD); // eax@10 int v12; // ebx@10 int v13; // eax@11 int v14; // esi@11 unsigned __int8 v15; // al@13 unsigned __int8 v16; // al@14 int v17; // ebx@19 __int16 v18; // bx@23 int v19; // eax@26 int v20; // ecx@26 int (__thiscall *v21)(_DWORD, _DWORD); // eax@26 void (__thiscall *v22)(_DWORD, _DWORD, _DWORD); // eax@29 int v23; // eax@31 __time32_t v24; // eax@31 __time32_t v25; // eax@31 __time32_t v26; // eax@31 void (__thiscall *v27)(_DWORD, _DWORD); // edx@31 char v28; // al@32 int (__thiscall *v29)(_DWORD); // eax@36 unsigned __int8 v30; // al@38 int v31; // eax@40 int v32; // eax@43 __time32_t v33; // eax@43 __time32_t v34; // eax@43 __time32_t v35; // eax@43 void (__thiscall *v36)(_DWORD, _DWORD); // edx@43 void (__thiscall *v37)(_DWORD, _DWORD, _DWORD); // edx@44 int v38; // [sp-20h] [bp-ACh]@7 int v39; // [sp-1Ch] [bp-A8h]@7 int v40; // [sp-18h] [bp-A4h]@7 int v41; // [sp-14h] [bp-A0h]@7 int v42; // [sp-10h] [bp-9Ch]@7 const char *v43; // [sp-Ch] [bp-98h]@7 int v44; // [sp-8h] [bp-94h]@7 int v45; // [sp-4h] [bp-90h]@5 int v46; // [sp+0h] [bp-8Ch]@19 int v47; // [sp+4h] [bp-88h]@19 int v48; // [sp+Ch] [bp-80h]@1 int v49; // [sp+10h] [bp-7Ch]@29 int v50; // [sp+14h] [bp-78h]@29 int *v51; // [sp+18h] [bp-74h]@7 int v52; // [sp+1Ch] [bp-70h]@1 int v53; // [sp+20h] [bp-6Ch]@10 char v54; // [sp+24h] [bp-68h]@30 char v55; // [sp+38h] [bp-54h]@8 char v56; // [sp+59h] [bp-33h]@8 int v57; // [sp+7Ah] [bp-12h]@8 int v58; // [sp+7Eh] [bp-Eh]@8 unsigned int v59; // [sp+88h] [bp-4h]@1 int v60; // [sp+8Ch] [bp+0h]@1 v59 = (unsigned int)&v60 ^ __security_cookie; v3 = this; v52 = a2; v48 = a3; if ( !a2 ) return 1; if ( *(_DWORD *)(a2 + 34) != 3 ) return 2; v45 = 0; v5 = sub_639620(&unk_14D20898, (unsigned __int8 *)(a2 + 38)); if ( v5 == -1 ) LOWORD(v5) = -1; v44 = (unsigned __int16)v5; v43 = "ItemIdent"; v51 = &v38; v42 = 0; v41 = 0; v40 = 0; v39 = 0; v38 = 0; strncpy((char *)&v38, "RecallPoint", 0x14u); v6 = sub_644B70(&unk_1321F620, v38, v39, v40, v41, v42, v43, v44, v45); if ( !v6 ) return 2; v7 = (const char *)(v6 + 36); v57 = *(_WORD *)(v6 + 68); v58 = *(_WORD *)(v6 + 70); strncpy(&v55, (const char *)(v6 + 36), 0x21u); strncpy(&v56, v7, 0x21u); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 132))(v3); v9 = sub_54DE90(&unk_13253630, v8); v51 = (int *)v9; if ( !v9 ) return 3; v10 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 112))(v3); v11 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 108); v12 = 5 - v10; v53 = 5 - v10; if ( 5 - v10 < (unsigned __int8)v11(v3) ) { while ( 1 ) { v13 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 104))(v3, v12); v14 = v13; if ( v13 ) { if ( (int *)v13 != v51 ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1240))(v13); if ( (unsigned int)v15 >= *(_DWORD *)(v52 + 82) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1240))(v14); if ( (unsigned int)v16 <= *(_DWORD *)(v52 + 86) ) { if ( *(_DWORD *)(v52 + 70) == 1 ) goto LABEL_26; if ( *(_DWORD *)(v52 + 74) || *(_DWORD *)(v52 + 78) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 2088))(v14) ) { v17 = (*(int (__cdecl **)(int, int))(*v51 + 2088))(v46, v47); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 2088))(v14) == v17 && *(_DWORD *)(v52 + 78) == 1 ) { LABEL_25: v12 = v53; LABEL_26: v19 = v48; *(_WORD *)(v48 + 2 * *(_WORD *)(v48 + 2) + 4) = *(_WORD *)(v14 + 4); ++*(_WORD *)(v19 + 2); v20 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 108))(v3); v21 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v14 + 368); v53 = v20; if ( (unsigned __int8)v21(v14, 1) != 1 || (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 672))(v3) != 2 && (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 672))(v3) != 3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v14 + 1536))( v14, &v54, 6, 9, 10) ) { v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 108))(v3); if ( v53 == v28 ) goto LABEL_37; if ( v12 >= 5 ) --v12; } else { v23 = (*(int (__thiscall **)(int, _DWORD, _UNKNOWN *))(*(_DWORD *)v14 + 1744))( v14, "] cannot out minihouse", &unk_13359E04); v45 = sub_418B40((int)byte_85A2C0, v23 + 2); v24 = sub_418EA0( (__time32_t)byte_133598D8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalEffectApply : player ["); v25 = sub_418EA0(v24, v45); v26 = sub_418EA0(v25, v46); sub_418F20(v26, v47); v27 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v14 + 1528); v47 = 0; v46 = 0; v27(v14, 1669); } } else { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v14 + 400))(v14, 1); v22 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v14 + 404); v49 = v57; v50 = v58; v22(v14, &v55, &v49); } goto LABEL_36; } v12 = v53; } if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1360))(v14) != -1 ) { v18 = (*(int (__cdecl **)(int, int))(*v51 + 1360))(v46, v47); if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1360))(v14) == v18 && *(_DWORD *)(v52 + 74) == 1 ) goto LABEL_25; v12 = v53; } } } } } } LABEL_36: v29 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 108); ++v12; v53 = v12; if ( v12 >= (unsigned __int8)v29(v3) ) { LABEL_37: v9 = (int)v51; break; } } } v30 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1240))(v9); if ( (unsigned int)v30 >= *(_DWORD *)(v52 + 82) && (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1240))(v9) <= *(_DWORD *)(v52 + 86) ) { v31 = v48; *(_WORD *)(v48 + 2 * *(_WORD *)(v48 + 2) + 4) = *(_WORD *)(v9 + 4); ++*(_WORD *)(v31 + 2); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 672))(v3) == 2 || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 672))(v3) == 3 ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 512))(v3, 1); v37 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 404); v49 = v57; v50 = v58; v37(v9, &v55, &v49); } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v9 + 1536))( v9, &v54, 6, 9, 10) ) { v32 = (*(int (__thiscall **)(int, _DWORD, _UNKNOWN *))(*(_DWORD *)v9 + 1744))( v9, "] cannot out minihouse", &unk_13359E04); v45 = sub_418B40((int)byte_85A2C0, v32 + 2); v33 = sub_418EA0( (__time32_t)byte_133598D8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalEffectApply : player ["); v34 = sub_418EA0(v33, v45); v35 = sub_418EA0(v34, v46); sub_418F20(v35, v47); v36 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 1528); v47 = 0; v46 = 0; v36(v9, 1669); } } } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (00541350) -------------------------------------------------------- signed int __stdcall sub_541350(int a1, int a2) { return 5897; } //----- (00541360) -------------------------------------------------------- char __thiscall sub_541360(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 int v5; // esi@1 int v6; // eax@2 char result; // al@5 v3 = this; v4 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 108))(); v5 = 5 - (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 112))(v3); if ( v5 >= v4 ) { LABEL_5: result = 1; } else { while ( 1 ) { v6 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 104))(v3, v5); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 696))(v6, a2, a3) == 1 ) break; } ++v5; if ( v5 >= v4 ) goto LABEL_5; } result = 0; } return result; } //----- (005413D0) -------------------------------------------------------- char __stdcall sub_5413D0(int a1, int a2) { return 0; } //----- (005413E0) -------------------------------------------------------- char __thiscall sub_5413E0(void *this, int a2, void *a3) { void *v3; // ebx@1 void *v4; // esi@1 int (*v5)(void); // eax@1 int v6; // ecx@1 int (__thiscall *v7)(_DWORD); // eax@1 int v8; // edi@1 int v9; // esi@3 unsigned __int16 v10; // ax@7 char v12; // [sp+10h] [bp-28h]@8 void *v13; // [sp+1Ch] [bp-1Ch]@1 int v14; // [sp+20h] [bp-18h]@1 int v15; // [sp+24h] [bp-14h]@1 char *v16; // [sp+28h] [bp-10h]@2 int v17; // [sp+34h] [bp-4h]@8 v3 = this; v4 = off_849C18; *(_WORD *)off_849C18 = -29593; v5 = *(int (**)(void))(*(_DWORD *)this + 108); v13 = v4; v15 = 0; v6 = (unsigned __int8)v5(); v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 112); v14 = v6; v8 = 5 - (unsigned __int8)v7(v3); if ( v8 < v14 ) { v16 = (char *)v4 + 4; do { v9 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 104))(v3, v8); if ( v9 && (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 692))(v9, a2) == 1 ) { *(_WORD *)v16 = *(_WORD *)(v9 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 688))(v9); ++v15; v16 += 2; } ++v8; } while ( v8 < v14 ); v10 = v15; if ( v15 > 0 ) { *((_WORD *)v13 + 1) = v15; sub_4287B0(&v12, &off_849C18, 2 * v10 + 4); v17 = 0; sub_549B60(a3, (int)&v12, 1); v17 = -1; sub_428A70(&v12); } } return 1; } //----- (00541500) -------------------------------------------------------- char __thiscall sub_541500(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@1 int v4; // ebx@1 int v5; // edi@2 int v6; // eax@4 int v7; // esi@4 int v8; // esi@9 int v10; // eax@11 void *v11; // [sp+Ch] [bp-10h]@1 void *v12; // [sp+10h] [bp-Ch]@1 int v13; // [sp+14h] [bp-8h]@1 int v14; // [sp+18h] [bp-4h]@1 v2 = off_849C18; v3 = this; *(_WORD *)off_849C18 = -29596; v12 = this; v11 = v2; v14 = 0; v13 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 108))(); v4 = 5 - (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 112))(v3); if ( v4 < v13 ) { v5 = (int)((char *)v2 + 6); while ( 1 ) { v6 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 104))(v3, v4); v7 = v6; if ( v6 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 704))(v6) != -1 ) { *(_WORD *)(v5 - 2) = *(_WORD *)(v7 + 4); *(_WORD *)v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 704))(v7); *(_BYTE *)(v5 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 708))(v7); ++v14; *(_BYTE *)(v5 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 712))(v7); v5 += 6; } } ++v4; if ( v4 >= v13 ) break; v3 = v12; } if ( v14 > 0 ) { *((_WORD *)v11 + 1) = v14; v8 = 6 * (unsigned __int16)v14 + 4; if ( !sub_4C81E0(&off_849C18, v8) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendInnerPlayerFurnitureEmotion : Packet Too Long", v8); return 1; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, a2, &off_849C18); } } return 1; } //----- (00541630) -------------------------------------------------------- int __thiscall sub_541630(int this, __int16 a2) { int v2; // edx@1 int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 216); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = *(_DWORD *)(this + 212); v5 = *(_DWORD *)(this + 212); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = v4 + 8 * v3; } return result; } //----- (00541670) -------------------------------------------------------- int __thiscall sub_541670(int this, unsigned __int16 a2) { int v2; // edx@2 int v3; // ecx@2 int result; // eax@3 if ( (unsigned int)a2 >= *(_DWORD *)(this + 80) ) { result = *(_DWORD *)this; } else { v2 = *(_DWORD *)(this + 56); v3 = this + 4; if ( (unsigned int)a2 < *(_DWORD *)(v2 + 40) ) result = sub_626BC0(v3, a2); else result = v3 + 64; } return result; } //----- (005416A0) -------------------------------------------------------- int __thiscall sub_5416A0(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@1 int v5; // edx@1 __int16 v6; // ax@3 int v7; // ebx@3 int v8; // edi@5 signed int v10; // [sp-8h] [bp-28h]@6 int v11; // [sp-4h] [bp-24h]@2 signed int v12; // [sp-4h] [bp-24h]@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 304))(v3); v5 = *(_DWORD *)v3; if ( v4 ) { v6 = (*(int (__thiscall **)(void *))(v5 + 312))(v3); v7 = sub_54DE90(&unk_13253630, v6); if ( v7 ) { v8 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 9121))( (char *)v3 + 36484, a2); if ( v8 ) { if ( *(_DWORD *)v8 == *(_DWORD *)a3 && *(_DWORD *)(v8 + 4) == *(_DWORD *)(a3 + 4) ) { *(_WORD *)(v8 + 11) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 200))(v3); (*(void (__thiscall **)(int, void *, int, int, signed int))(*(_DWORD *)v7 + 68))(v7, v3, v8, a2, 9); } v12 = 9; v10 = 1792; } else { v12 = 9; v10 = 1795; } (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, v10, v12); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 35, 35, 4487); } v11 = (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v5 + 776))(v3, 35, 35, 4484); v11 = (int)"ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00541800) -------------------------------------------------------- char __thiscall sub_541800(void *this, signed int a2, int a3) { void *v3; // esi@1 int v4; // edi@2 signed int v5; // ebx@6 __int16 v6; // ax@9 int v7; // eax@9 int v8; // ebx@9 int v9; // ST04_4@10 __time32_t v10; // eax@10 __time32_t v11; // eax@10 int v12; // eax@12 int (*v13)(); // eax@12 int v14; // eax@14 int v15; // ebx@14 int v16; // edi@15 __int16 v17; // bx@16 signed int v18; // eax@16 int v19; // eax@23 int v20; // ebx@23 unsigned int *v21; // eax@25 int v22; // ebx@29 int v23; // edi@31 void (__thiscall *v24)(_DWORD, _DWORD); // eax@37 int v26; // [sp-4h] [bp-40h]@11 int (**v27)(); // [sp+10h] [bp-2Ch]@12 int v28; // [sp+14h] [bp-28h]@14 int v29; // [sp+18h] [bp-24h]@12 int v30; // [sp+20h] [bp-1Ch]@1 int v31; // [sp+24h] [bp-18h]@9 int v32; // [sp+28h] [bp-14h]@25 int v33; // [sp+2Ch] [bp-10h]@14 int v34; // [sp+38h] [bp-4h]@1 v3 = this; v30 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; switch ( a3 ) { case 3: v4 = (int)((char *)v3 + 1452); goto LABEL_6; case 13: v4 = (int)((char *)v3 + 12824); goto LABEL_6; case 14: v4 = (int)((char *)v3 + 24196); goto LABEL_6; case 16: v4 = (int)((char *)v3 + 35568); LABEL_6: v5 = a2; if ( *(_BYTE *)(a2 + 1) & 1 ) sub_641000((void *)v4); sub_640350((void *)v4, v5 + 2, v5 + 3, a3); if ( !(*(_BYTE *)(v5 + 1) & 2) ) goto LABEL_38; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 132))(v3); v7 = sub_54DE90(&unk_13253630, v6); v8 = v7; v31 = v7; if ( !v7 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 128))(v3); v10 = sub_418EA0((__time32_t)byte_133598D8, (int)"cannot find player regnum["); v11 = sub_43B910(v10, v9); sub_418F20(v11, (int)&unk_13359E04); goto LABEL_11; } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1176))(v7); sub_43BAC0((int)&v27, v4, v12); v13 = *v27; LOBYTE(v34) = 1; v29 = 0; if ( !(unsigned __int8)((int (__thiscall *)(int (***)()))v13)(&v27) && !sub_63F7F0(&v27) ) goto LABEL_37; break; default: --dword_750CB8; v34 = -1; v26 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; goto LABEL_41; } while ( 1 ) { v14 = (**(int (__stdcall ***)(_DWORD))v28)(v29); v15 = v14; v33 = v14; if ( !v14 || (v16 = *(_DWORD *)(v14 + 112)) == 0 ) goto LABEL_35; (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v16 + 136))(v16, v14, (*((_WORD *)v3 + 724))++); v17 = *(_WORD *)(v15 + 8); sub_5CF620(&a2); LOBYTE(v34) = 2; v18 = -1; while ( v18 >= -1 ) { ++v18; a2 = v18; if ( v18 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v18) == v17 ) goto LABEL_22; } a2 = -10; LABEL_22: if ( sub_417060(&a2) != *(_DWORD *)(dword_AA07F4 + 40) ) { v19 = sub_5132E0((int)&dword_AA07C0, (int)&a2); v20 = v19; if ( v19 ) { if ( *(_DWORD *)(v19 + 4) ) { v21 = (unsigned int *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v16 + 140))(v16, v33 + 8); if ( sub_4A0510((int)&dword_D73D100, *(_WORD *)(*(_DWORD *)(v20 + 4) + 143), v21, (int)&v32) ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v16 + 152))(v16, v33, v32); } } if ( a3 == 16 ) { if ( v20 ) { v22 = *(_DWORD *)(v20 + 4); if ( v22 ) { if ( *(_DWORD *)(v22 + 98) == 1 ) { v23 = v33; if ( *(_BYTE *)(v33 + 10) & 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 532))(v3) == 1 || !(unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 448))(v3, v23) ) break; } } } } } } LOBYTE(v34) = 1; nullsub_2(&a2); LABEL_35: if ( !sub_63F7F0(&v27) ) { v8 = v31; LABEL_37: v24 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 216); ++*((_BYTE *)v3 + 364); v24(v3, v8); v27 = &off_6A86A4; LABEL_38: --dword_750CB8; v34 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"); return 1; } } LOBYTE(v34) = 1; nullsub_2(&a2); v27 = &off_6A86A4; LABEL_11: --dword_750CB8; v34 = -1; v26 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; LABEL_41: sub_467660((int)&unk_D020420, v26); return 0; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA07C0: using guessed type int dword_AA07C0; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // D73D100: using guessed type int dword_D73D100; //----- (00541B90) -------------------------------------------------------- char __thiscall sub_541B90(void *this) { void *v1; // esi@1 int v2; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 828))(v1, 0, 1, 3); v2 = (unsigned __int8)sub_555DF0(&unk_13253630, *((_WORD *)v1 + 2), 0, 19); if ( !(_BYTE)v2 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH : Fail to object free", v2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00541C70) -------------------------------------------------------- signed int __thiscall sub_541C70(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 signed int v4; // edx@1 int v5; // eax@1 signed int result; // eax@2 signed int v7; // eax@5 int v8; // edx@6 unsigned int v9; // esi@17 unsigned int v10; // edi@17 int v11; // eax@17 float v12; // ST18_4@18 float v13; // ST14_4@18 unsigned int v14; // [sp+8h] [bp-7Ch]@1 void *v15; // [sp+1Ch] [bp-68h]@1 signed int v16; // [sp+2Ch] [bp-58h]@5 signed int v17; // [sp+2Ch] [bp-58h]@15 char v18[4]; // [sp+30h] [bp-54h]@17 int v19; // [sp+34h] [bp-50h]@17 int v20; // [sp+38h] [bp-4Ch]@17 int v21; // [sp+3Ch] [bp-48h]@17 int v22; // [sp+40h] [bp-44h]@17 int v23; // [sp+44h] [bp-40h]@17 int v24; // [sp+48h] [bp-3Ch]@17 int v25; // [sp+4Ch] [bp-38h]@17 char v26; // [sp+50h] [bp-34h]@17 unsigned int v27; // [sp+74h] [bp-10h]@1 int v28; // [sp+80h] [bp-4h]@1 int v29; // [sp+84h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v14 = (unsigned int)&v29 ^ __security_cookie; v2 = a2; v3 = this; v15 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v3 + 99); v28 = 0; if ( v5 ) { if ( *(_WORD *)(v5 + 4) == *(_WORD *)a2 ) { --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"); result = 4564; } else { v7 = 6; v16 = *((_BYTE *)v3 + 372); if ( v16 > 6 ) { v8 = (int)((char *)v3 + 400); do { if ( *(_DWORD *)v8 && *(_WORD *)(*(_DWORD *)v8 + 4) == *(_WORD *)a2 ) break; ++v7; v8 += 4; } while ( v7 < v16 ); v4 = -1; } if ( v7 == v16 ) { --dword_750CB8; v28 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"); result = 4562; } else { if ( *((_DWORD *)v3 + v7 + 94) ) { v17 = 1; while ( 1 ) { sprintf(&v26, "FURNITURE_ARE%d%c", v17, 0, v14); v25 = 0; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)v18 = 0; strncpy(v18, &v26, 0x20u); v9 = *(_DWORD *)(v2 + 6); v10 = *(_DWORD *)(v2 + 2); v11 = sub_62A340(*(_DWORD *)(*((_DWORD *)v15 + 92) + 20) + 36, (int)v18); if ( v11 ) { v12 = (double)v9; v13 = (double)v10; if ( (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v11)( v11, LODWORD(v13), LODWORD(v12)) ) break; } ++v17; if ( v17 >= 10 ) break; v2 = a2; } --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"); result = 4561; if ( v17 != 10 ) result = 4560; } else { --dword_750CB8; v28 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"); result = 4563; } } } } else { --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo"); result = 4563; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00541EE0) -------------------------------------------------------- signed int __thiscall sub_541EE0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int8 v5; // al@8 signed int v6; // ebx@11 unsigned __int8 v7; // al@15 int v8; // [sp+28h] [bp+8h]@12 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( !a2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); return 4513; } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 148))(v2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); return 4511; } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 144))(v2, a2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); return 4516; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 996))(a2, 288) ) { v5 = *((_BYTE *)v2 + 373); if ( v5 >= 5u ) { LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); return 4509; } *((_DWORD *)v2 + 98 - v5) = a2; *((_DWORD *)v2 + 202 - (*((_BYTE *)v2 + 373))++) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); goto LABEL_19; } v6 = 0; if ( !*((_BYTE *)v2 + 374) ) { LABEL_15: v7 = *((_BYTE *)v2 + 372); if ( *((_BYTE *)v2 + 362) <= v7 ) goto LABEL_9; *((_DWORD *)v2 + v7 + 94) = v3; *((_DWORD *)v2 + (*((_BYTE *)v2 + 372))++ + 198) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); LABEL_19: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); return 4481; } v8 = (int)((char *)v2 + 1208); while ( *(_DWORD *)v8 != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) ) { v8 += 4; ++v6; if ( v6 >= *((_BYTE *)v2 + 374) ) goto LABEL_15; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Enter"); return 4508; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542170) -------------------------------------------------------- char __thiscall sub_542170(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 unsigned __int8 v4; // al@2 signed int v5; // ecx@2 signed int v6; // eax@4 int v7; // edx@5 void *v8; // eax@12 signed int v9; // eax@14 int v10; // ecx@14 int v12; // ecx@19 int v13; // eax@19 int v14; // ebx@23 int i; // eax@24 int v16; // edx@26 int v17; // edi@30 int v18; // edx@31 int v19; // [sp+28h] [bp+8h]@27 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Out"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_Out"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 368))(a2, 1) == 1 ) { v4 = *((_BYTE *)v2 + 51001); v5 = 99; if ( v4 <= 0x63u ) v5 = v4; v6 = 0; if ( v5 > 0 ) { v7 = (int)((char *)v2 + 51004); while ( *(_DWORD *)v7 != a2 ) { ++v6; v7 += 8; if ( v6 >= v5 ) goto LABEL_11; } if ( v6 < v5 ) { memmove((char *)v2 + 8 * v6 + 51004, (char *)v2 + 8 * v6 + 51012, 8 * (v5 - v6) - 8); --*((_BYTE *)v2 + 51001); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 376))(a2, 0); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 484))(v2); (*(void (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v2 + 560))(v2, a2, 0); } } } LABEL_11: if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 996))(a2, 290) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 1616))(a2, 290); v8 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); sub_40A820(v8, a2, 290); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1320))(a2); } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 996))(a2, 288) ) { v9 = 4; v10 = (int)((char *)v2 + 392); while ( *(_DWORD *)v10 != a2 ) { v10 -= 4; --v9; if ( v9 < 0 ) goto LABEL_17; } if ( 5 - v9 < *((_BYTE *)v2 + 373) ) { v12 = 5 - v9; v13 = (int)((char *)v2 + 4 * v9 + 376); do { *(_DWORD *)v13 = *(_DWORD *)(v13 - 4); *(_DWORD *)(v13 + 416) = *(_DWORD *)(v13 + 412); ++v12; v13 -= 4; } while ( v12 < *((_BYTE *)v2 + 373) ); } *((_DWORD *)v2 + 99 - *((_BYTE *)v2 + 373)) = 0; *((_DWORD *)v2 + 203 - (*((_BYTE *)v2 + 373))--) = -1; --dword_750CB8; } else { v14 = 5; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 108))(v2) <= 5u ) { LABEL_17: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Out"); return 0; } for ( i = (int)((char *)v2 + 396); ; i = v19 ) { v16 = *(_DWORD *)v2; if ( *(_DWORD *)i == v3 ) break; v19 = i + 4; ++v14; if ( v14 >= (unsigned __int8)(*(int (__thiscall **)(void *))(v16 + 108))(v2) ) goto LABEL_17; } if ( v14 < (unsigned __int8)(*(int (__thiscall **)(void *))(v16 + 108))(v2) - 1 ) { v17 = (int)((char *)v2 + 4 * v14 + 376); do { v18 = *(_DWORD *)(v17 + 4); *(_DWORD *)(v17 + 416) = *(_DWORD *)(v17 + 420); *(_DWORD *)v17 = v18; ++v14; v17 += 4; } while ( v14 < (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 108))(v2) - 1 ); } *((_DWORD *)v2 + v14 + 94) = 0; *((_DWORD *)v2 + v14 + 198) = -1; --*((_BYTE *)v2 + 372); --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_Out"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542470) -------------------------------------------------------- signed int __thiscall sub_542470(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 signed int result; // eax@2 signed int v5; // eax@3 int v6; // ecx@4 signed int v7; // eax@8 int v8; // ecx@9 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOut"; dword_750AB8[dword_750CB8++] = -1; LOBYTE(v3) = *((_BYTE *)v2 + 374); if ( (unsigned __int8)v3 < 0x14u ) { v5 = 5; if ( *((_BYTE *)v2 + 372) <= 5u ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4498; } else { v6 = (int)((char *)v2 + 812); while ( *(_DWORD *)v6 != a2 ) { ++v5; v6 += 4; if ( v5 >= *((_BYTE *)v2 + 372) ) goto LABEL_7; } v3 = (unsigned __int8)v3; v7 = 0; if ( (signed int)(unsigned __int8)v3 <= 0 ) { LABEL_12: *((_DWORD *)v2 + v3 + 302) = a2; ++*((_BYTE *)v2 + 374); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4481; } else { v8 = (int)((char *)v2 + 1208); while ( *(_DWORD *)v8 != a2 ) { ++v7; v8 += 4; if ( v7 >= *((_BYTE *)v2 + 374) ) goto LABEL_12; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4496; } } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4495; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542610) -------------------------------------------------------- signed int __thiscall sub_542610(void *this, int a2) { void *v2; // esi@1 char v3; // cl@1 signed int v4; // eax@1 int v5; // edx@2 signed int result; // eax@5 unsigned __int8 v7; // cl@6 int v8; // ecx@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_BYTE *)v2 + 374); v4 = 0; if ( v3 ) { v5 = (int)((char *)v2 + 1208); while ( a2 != *(_DWORD *)v5 ) { ++v4; v5 += 4; if ( v4 >= *((_BYTE *)v2 + 374) ) goto LABEL_5; } v7 = v3 - 1; *((_BYTE *)v2 + 374) = v7; if ( v4 < v7 ) { v8 = (int)((char *)v2 + 4 * v4 + 1208); do { *(_DWORD *)v8 = *(_DWORD *)(v8 + 4); ++v4; v8 += 4; } while ( v4 < *((_BYTE *)v2 + 374) ); } *((_DWORD *)v2 + v4 + 302) = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"); result = 4481; } else { LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"); result = 4494; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542730) -------------------------------------------------------- signed int __thiscall sub_542730(void *this, unsigned __int8 a2) { void *v2; // esi@1 signed int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < 1u || a2 > 0x63u ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); result = 4491; } else { if ( *((_BYTE *)v2 + 372) <= a2 + 5 ) { *((_BYTE *)v2 + 362) = a2 + 5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); result = 4481; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); result = 4492; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542840) -------------------------------------------------------- int __thiscall sub_542840(void *this, const char *a2) { void *v2; // esi@1 signed int v3; // edi@1 int result; // eax@5 char v5; // ST23_1@9 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; do { if ( !a2[v3] ) break; ++v3; } while ( v3 < 9 ); if ( strncmp((const char *)v2 + 353, a2, 8u) ) { if ( v3 ) { if ( v3 >= 8 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 4490; } else { v5 = *((_BYTE *)v2 + 365); *((_BYTE *)v2 + 365) = 0; strncpy((char *)v2 + 353, a2, 8u); *((_BYTE *)v2 + 361) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 2 * (v5 != 0) + 4565; } } else { *((_BYTE *)v2 + 365) = 1; *((_BYTE *)v2 + 353) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 4566; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 4565; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005429E0) -------------------------------------------------------- int __thiscall sub_5429E0(void *this) { void *v1; // esi@1 char *v2; // ST10_4@1 void *v3; // edi@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+10h] [bp-1Ch]@1 int v8; // [sp+1Ch] [bp-10h]@1 int v9; // [sp+28h] [bp-4h]@1 v1 = this; v8 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"; dword_750AB8[dword_750CB8++] = -1; v2 = (char *)(*(_DWORD *)((char *)v1 + 49375) + 43); v9 = 0; strncpy(v2, (const char *)v1 + 332, 0x14u); *(_BYTE *)(*(_DWORD *)((char *)v1 + 49375) + 63) = 0; v3 = off_849C18; *(_WORD *)off_849C18 = -29647; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); strncpy((char *)v3 + 4, (const char *)v1 + 332, 0x14u); *((_BYTE *)v3 + 24) = 0; sub_4287B0(&v7, &off_849C18, 25); v4 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v9) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v5, v4, 0, 0, (int)&v7, 0, 65535); LOBYTE(v9) = 0; sub_428A70(&v7); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542B10) -------------------------------------------------------- signed int __thiscall sub_542B10(void *this, int a2) { void *v2; // esi@1 signed int v3; // edx@1 signed int v4; // eax@1 int v5; // eax@12 char v6; // cl@13 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; v4 = 0; while ( *(_BYTE *)(v4 + a2) ) { if ( !*(_BYTE *)(v4 + a2 + 1) ) { ++v4; break; } if ( !*(_BYTE *)(v4 + a2 + 2) ) { v4 += 2; break; } v4 += 3; if ( v4 >= 21 ) break; } if ( !v4 ) { *((_BYTE *)v2 + 332) = 0; LABEL_15: dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"); return 4481; } if ( v4 <= 20 ) { v5 = a2; do { v6 = *(_BYTE *)v5; *((_BYTE *)v2 + v5 - a2 + 332) = *(_BYTE *)v5; ++v5; } while ( v6 ); *((_BYTE *)v2 + 352) = 0; v3 = 1; goto LABEL_15; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"); return 4489; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542C40) -------------------------------------------------------- signed int __thiscall sub_542C40(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen"; dword_750AB8[dword_750CB8++] = -1; *((_BYTE *)v2 + 1341) = *(_BYTE *)a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen"); return 4481; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542CB0) -------------------------------------------------------- signed int __thiscall sub_542CB0(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)a2 <= 0x64u ) { strncpy((char *)v2 + 1342, (const char *)(a2 + 1), *(_BYTE *)a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"); result = 4481; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"); result = 6600; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542D90) -------------------------------------------------------- signed int __thiscall sub_542D90(void *this, char a2) { void *v2; // esi@1 signed int v3; // edx@1 signed int result; // eax@2 bool v5; // cf@3 bool v6; // zf@3 signed int v7; // edi@3 int v8; // ebx@4 int v9; // esi@9 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetArrangeMode"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetArrangeMode"; dword_750AB8[dword_750CB8] = -1; v3 = 1; ++dword_750CB8; if ( *((_BYTE *)v2 + 363) == a2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetArrangeMode"); result = 4549; } else { v5 = *((_BYTE *)v2 + 372) < 6u; v6 = *((_BYTE *)v2 + 372) == 6; *((_BYTE *)v2 + 363) = a2 != 0; v7 = 6; if ( !(v5 | v6) ) { v8 = (int)((char *)v2 + 400); do { if ( *(_DWORD *)v8 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 172))(v2, *(_DWORD *)v8); ++v7; v8 += 4; } while ( v7 < *((_BYTE *)v2 + 372) ); v3 = 1; } v6 = *((_BYTE *)v2 + 363) == 0; dword_750CB8 -= v3; v9 = v6 + 4546; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetArrangeMode"); result = v9; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00542EC0) -------------------------------------------------------- int __thiscall sub_542EC0(void *this, void *a2) { void *v2; // esi@1 int v3; // edx@1 int v4; // edi@2 int v5; // eax@3 void *v6; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendArrangeMode"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendArrangeMode"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)a2; if ( *((_BYTE *)v2 + 363) ) { v4 = dword_877778; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, signed int, signed int, int, int, signed int, signed int, _DWORD, signed int, _DWORD))(v3 + 1592))( a2, a2, 290, 1, dword_877778, dword_14D129E8, -94967296, -1, 0, 9, 0) ) { sub_401900(a2, *(_DWORD *)(*(_DWORD *)v4 + 34)); v5 = *(_DWORD *)(v4 + 48); if ( v5 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 1008))( a2, *(_DWORD *)(*(_DWORD *)v4 + 34), *(_DWORD *)(v5 + 43), 1); sub_4055D0(a2, *(_DWORD *)(*(_DWORD *)v4 + 34), *(_DWORD *)(*(_DWORD *)(v4 + 48) + 43), 1); } } } else { (*(void (__thiscall **)(void *, signed int))(v3 + 1616))(a2, 290); v6 = (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)a2 + 1324))(a2); sub_40A820(v6, (int)a2, 290); (*(void (__thiscall **)(void *))(*(_DWORD *)a2 + 1320))(a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SendArrangeMode"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 877778: using guessed type int dword_877778; // 14D129E8: using guessed type int dword_14D129E8; //----- (00543010) -------------------------------------------------------- int __thiscall sub_543010(void *this, void *a2) { void *v2; // esi@1 int v3; // edi@3 int v4; // eax@4 int v6; // [sp-4h] [bp-20h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 176))(v2) ) { v6 = (int)"ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"; } else { v3 = dword_877778; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, signed int, signed int, int, int, signed int, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)a2 + 1592))( a2, a2, 290, 1, dword_877778, dword_14D129E8, 420000000, -1, 0, 9, 0) ) { sub_401900(a2, *(_DWORD *)(*(_DWORD *)v3 + 34)); v4 = *(_DWORD *)(v3 + 48); if ( v4 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 1008))( a2, *(_DWORD *)(*(_DWORD *)v3 + 34), *(_DWORD *)(v4 + 43), 1); sub_4055D0(a2, *(_DWORD *)(*(_DWORD *)v3 + 34), *(_DWORD *)(*(_DWORD *)(v3 + 48) + 43), 1); } } v6 = (int)"ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 877778: using guessed type int dword_877778; // 14D129E8: using guessed type int dword_14D129E8; //----- (00543130) -------------------------------------------------------- signed int __thiscall sub_543130(void *this, int a2, int a3) { unsigned int v3; // ST18_4@1 int v4; // ebx@1 void *v5; // esi@1 signed int v6; // edi@1 int (__thiscall *v7)(_DWORD, _DWORD); // edx@1 signed int v9; // eax@3 int v10; // ecx@5 signed int v11; // esi@7 unsigned int v12; // ebx@8 double v13; // st7@8 int v14; // ecx@8 int v15; // eax@8 int v16; // edx@9 float v17; // ST18_4@9 float v18; // ST14_4@9 int v19; // esi@14 int v20; // edi@14 int v21; // ebx@14 int v22; // eax@16 int v23; // ecx@16 int v24; // edx@16 int v25; // eax@17 int v26; // eax@21 __int16 v27; // si@28 signed int v28; // eax@28 int v29; // eax@35 int v30; // eax@36 int v31; // edx@43 int (__thiscall *v32)(_DWORD); // eax@43 int v33; // eax@43 int v34; // ecx@46 int v35; // edi@58 int v36; // ebx@60 int v37; // eax@60 char *v38; // esi@61 __int16 v39; // ax@61 double v40; // st7@66 __int16 v41; // dx@66 double v42; // st7@66 __int16 v43; // si@66 signed int v44; // eax@66 char *v45; // eax@75 int v46; // eax@76 unsigned int v47; // eax@77 int v48; // eax@79 int v49; // esi@83 int v50; // edi@83 unsigned int *v51; // eax@85 int v52; // edi@90 int v53; // esi@90 int v54; // eax@90 void *v55; // esi@90 int v56; // esi@90 int v57; // ebx@90 int v58; // edi@90 int v59; // eax@90 int v60; // eax@92 int v61; // eax@93 int v62[392]; // [sp+18h] [bp-D64h]@21 int v63; // [sp+638h] [bp-744h]@1 char *v64; // [sp+63Ch] [bp-740h]@5 char *v65; // [sp+640h] [bp-73Ch]@5 char *v66; // [sp+644h] [bp-738h]@5 char *v67; // [sp+648h] [bp-734h]@5 void *v68; // [sp+64Ch] [bp-730h]@1 int (**v69)(); // [sp+650h] [bp-72Ch]@16 int v70; // [sp+654h] [bp-728h]@16 int v71; // [sp+658h] [bp-724h]@19 int v72; // [sp+65Ch] [bp-720h]@19 int v73; // [sp+660h] [bp-71Ch]@1 int v74; // [sp+664h] [bp-718h]@5 int v75; // [sp+668h] [bp-714h]@43 int v76; // [sp+66Ch] [bp-710h]@1 __int64 v77; // [sp+670h] [bp-70Ch]@8 int v78; // [sp+678h] [bp-704h]@5 int v79; // [sp+67Ch] [bp-700h]@6 int v80; // [sp+680h] [bp-6FCh]@28 int v81; // [sp+684h] [bp-6F8h]@8 char v82; // [sp+688h] [bp-6F4h]@66 char v83; // [sp+690h] [bp-6ECh]@83 char v84; // [sp+692h] [bp-6EAh]@66 __int16 v85; // [sp+693h] [bp-6E9h]@66 float v86; // [sp+699h] [bp-6E3h]@66 float v87; // [sp+69Dh] [bp-6DFh]@66 float v88; // [sp+6A1h] [bp-6DBh]@66 float v89; // [sp+6A5h] [bp-6D7h]@66 __int16 v90; // [sp+6F4h] [bp-688h]@66 char v91; // [sp+6F6h] [bp-686h]@66 char v92[4]; // [sp+6F8h] [bp-684h]@8 int v93; // [sp+6FCh] [bp-680h]@8 int v94; // [sp+700h] [bp-67Ch]@8 int v95; // [sp+704h] [bp-678h]@8 int v96; // [sp+708h] [bp-674h]@8 int v97; // [sp+70Ch] [bp-670h]@8 int v98; // [sp+710h] [bp-66Ch]@8 int v99; // [sp+714h] [bp-668h]@8 int v100[392]; // [sp+718h] [bp-664h]@43 int v101; // [sp+D38h] [bp-44h]@5 int v102; // [sp+D3Ch] [bp-40h]@5 int v103; // [sp+D40h] [bp-3Ch]@5 int v104; // [sp+D44h] [bp-38h]@5 char v105; // [sp+D48h] [bp-34h]@8 unsigned int v106; // [sp+D6Ch] [bp-10h]@1 int v107; // [sp+D78h] [bp-4h]@1 int v108; // [sp+D7Ch] [bp+0h]@1 v106 = (unsigned int)&v108 ^ __security_cookie; v3 = (unsigned int)&v108 ^ __security_cookie; v4 = a3; v5 = this; v68 = this; v73 = a2; v76 = a3; v63 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"; v6 = -1; dword_750AB8[dword_750CB8++] = -1; v7 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 176); v107 = 0; if ( !(unsigned __int8)v7(v5, v3) ) { --dword_750CB8; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4550; } v9 = *(_BYTE *)a3; if ( v9 > 392 ) { --dword_750CB8; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4576; } v64 = (char *)v5 + 1452; v10 = 0; v65 = (char *)v5 + 12824; v74 = 0; v66 = (char *)v5 + 24196; v67 = (char *)v5 + 35568; v101 = 3; v102 = 13; v103 = 14; v104 = 16; v78 = 0; if ( v9 > 0 ) { v79 = a3 + 11; do { v11 = 1; do { sprintf(&v105, "FURNITURE_ARE%d%c", v11, 0); v99 = 0; v98 = 0; v97 = 0; v96 = 0; v95 = 0; v94 = 0; v93 = 0; *(_DWORD *)v92 = 0; strncpy(v92, &v105, 0x20u); HIDWORD(v77) = HIWORD(v81) | 0xC00; v77 = (signed __int64)*(float *)(v79 - 4); v12 = v77; v13 = *(float *)(v79 - 8); HIDWORD(v77) = HIWORD(v81) | 0xC00; v14 = *(_DWORD *)(*((_DWORD *)v68 + 92) + 20) + 36; v77 = (signed __int64)v13; v15 = sub_62A340(v14, (int)v92); if ( v15 ) { v16 = *(_DWORD *)v15; v17 = (double)v12; HIDWORD(v77) = (signed __int64)v13; v18 = (double)(unsigned int)(signed __int64)v13; if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))v16)(v15, LODWORD(v18), LODWORD(v17)) ) break; } ++v11; } while ( v11 < 10 ); if ( v11 == 10 || *(float *)v79 < 700.0 || *(float *)v79 > 900.0 ) { --dword_750CB8; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4557; } v19 = v73; v20 = v78; BYTE3(v81) = 0; v21 = 0; do { if ( BYTE3(v81) ) break; v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 1176))(v19); v23 = (int)(&v64)[4 * v21]; v69 = &off_6A86A4; v70 = v23; v24 = *(_DWORD *)v23; if ( v22 ) v25 = (*(int (__stdcall **)(int))(v24 + 4))(v22); else v25 = (*(int (**)(void))(v24 + 8))(); v72 = v25; v69 = (int (**)())&off_6A86AC; LOBYTE(v107) = 1; v71 = 0; if ( (unsigned __int8)off_6A86AC(&v69) || sub_63F7F0(&v69) ) { while ( 1 ) { v26 = (**(int (__stdcall ***)(_DWORD))v70)(v71); v62[v20] = v26; if ( v26 ) { if ( *(_WORD *)(v26 + 11) == *(_WORD *)(v79 - 10) ) break; } if ( !sub_63F7F0(&v69) ) goto LABEL_45; } if ( *(_BYTE *)(v26 + 10) & 1 ) { --dword_750CB8; v69 = &off_6A86A4; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4577; } if ( *(_BYTE *)(v26 + 37) >= 4u ) { --dword_750CB8; v69 = &off_6A86A4; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4578; } if ( v21 == 3 ) { v27 = *(_WORD *)(v26 + 8); sub_5CF620(&v80); LOBYTE(v107) = 2; v28 = -1; while ( v28 >= -1 ) { ++v28; v80 = v28; if ( v28 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v28) == v27 ) goto LABEL_34; } v80 = -10; LABEL_34: if ( sub_417060(&v80) == *(_DWORD *)(dword_AA07F4 + 40) ) { LOBYTE(v107) = 1; nullsub_2(&v80); v69 = &off_6A86A4; goto LABEL_54; } v29 = sub_5132E0((int)&dword_AA07C0, (int)&v80); if ( v29 ) { v30 = *(_DWORD *)(v29 + 4); if ( v30 ) { if ( ((*((_DWORD *)v68 + 12722) & *((_DWORD *)v68 + 12721)) != -1 && *((_DWORD *)v68 + 12723) || *((_BYTE *)v68 + 50940) == 1) && *(_DWORD *)(v30 + 98) == 1 ) { LOBYTE(v107) = 1; nullsub_2(&v80); --dword_750CB8; v69 = &off_6A86A4; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 7616; } if ( !*(_BYTE *)(v30 + 102) ) { LOBYTE(v107) = 1; nullsub_2(&v80); --dword_750CB8; v69 = &off_6A86A4; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 7617; } } } LOBYTE(v107) = 1; nullsub_2(&v80); v19 = v73; v20 = v78; } v31 = *(_DWORD *)v19; LOWORD(v75) = v71 & 0x3FF | (*((_WORD *)&v101 + 2 * v21) << 10); v32 = *(int (__thiscall **)(_DWORD))(v31 + 2004); v100[v20] = v21; v33 = v32(v19); if ( (unsigned __int8)(*(int (__thiscall **)(int, int *))(*(_DWORD *)v33 + 8))(v33, &v75) ) { --dword_750CB8; v69 = &off_6A86A4; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4551; } ++v74; BYTE3(v81) = 1; } LABEL_45: ++v21; LOBYTE(v107) = 0; v69 = &off_6A86A4; } while ( v21 < 4 ); v34 = *(_BYTE *)v76; v79 += 18; v78 = v20 + 1; } while ( v20 + 1 < v34 ); v10 = v74; v4 = v76; v6 = -1; } if ( v10 != *(_BYTE *)v4 ) { --dword_750CB8; v107 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4555; } v35 = 0; v75 = 0; if ( v10 <= 0 ) { LABEL_95: --dword_750CB8; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4545; } v80 = v4 + 7; while ( 1 ) { v36 = v62[v35]; v76 = *(_DWORD *)(v36 + 112); v37 = 4 * v100[v35]; LOWORD(v81) = *((_WORD *)&v101 + 2 * v100[v35]) << 10; if ( (v81 & 0x3FFu) < 0x62 ) break; LABEL_94: v80 += 18; ++v35; v75 = v35; if ( v35 >= v74 ) goto LABEL_95; } v38 = (&v64)[v37]; v39 = v81; while ( !(**(int (__thiscall ***)(char *, int))v38)(v38, v39 & 0x3FF) || *(_WORD *)(v36 + 11) != *(_WORD *)((**(int (__thiscall ***)(char *, int))v38)(v38, v81 & 0x3FF) + 11) ) { LOWORD(v81) = (v81 ^ (unsigned __int16)(v81 + 1)) & 0x3FF ^ v81; v39 = v81; if ( (v81 & 0x3FFu) >= 0x62 ) goto LABEL_94; } v40 = *(float *)(v80 - 4); v41 = *(_WORD *)(v80 - 6); memcpy(&v82, (const void *)v36, 0x6Cu); v90 = *(_WORD *)(v36 + 108); v91 = *(_BYTE *)(v36 + 110); v86 = v40; v42 = *(float *)v80; v84 |= 1u; v87 = v42; v43 = *(_WORD *)(v36 + 8); v88 = *(float *)(v80 + 4); v89 = *(float *)(v80 + 8); v85 = v41; sub_5CF620(&v79); LOBYTE(v107) = 3; v44 = -1; while ( v44 >= -1 ) { ++v44; v79 = v44; if ( v44 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v44) == v43 ) goto LABEL_72; } v79 = -10; LABEL_72: if ( sub_417060(&v79) != *(_DWORD *)(dword_AA07F4 + 40) ) { if ( v79 < 0 || v79 >= dword_AA0898 ) { v78 = 0; } else { v45 = (char *)dword_AA0894 + 8 * v79; v78 = (int)v45; if ( v45 ) { v46 = *((_DWORD *)v45 + 1); if ( v46 ) { v47 = *(_WORD *)(v46 + 143); if ( v47 >= dword_D73D150 ) v48 = dword_D73D100; else v48 = v47 < *(_DWORD *)(dword_D73D138 + 40) ? sub_626BC0((int)&dword_D73D104, v47) : &dword_D73D144; v49 = v76; v50 = *(_WORD *)(v48 + 2); if ( !*(_BYTE *)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v76 + 140))(v76, &v83) ) { if ( (*(int (__thiscall **)(int, char *, int, int, _UNKNOWN *))(*(_DWORD *)v49 + 144))( v49, &v82, v50, v50, &unk_AA0BCC) ) { v51 = (unsigned int *)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v49 + 140))(v49, &v83); if ( sub_4A0510((int)&dword_D73D100, *(_WORD *)(*(_DWORD *)(v78 + 4) + 143), v51, (int)((char *)&v77 + 4)) ) (*(void (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)v49 + 152))(v49, &v82, HIDWORD(v77)); } } } } } if ( (v81 & 0xFC00) == 16384 && *(_DWORD *)(*(_DWORD *)(v78 + 4) + 98) == 1 ) (*(void (__stdcall **)(signed int, _DWORD, _DWORD))(*(_DWORD *)v68 + 488))( 1, *(_DWORD *)v36, *(_DWORD *)(v36 + 4)); v52 = v73; v53 = (*(int (__thiscall **)(int))(*(_DWORD *)v73 + 2004))(v73); v54 = (*(int (__thiscall **)(int))(*(_DWORD *)v52 + 2004))(v52); (*(void (__thiscall **)(int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v53 + 104))( v53, *(_WORD *)(v54 + 4), v36, &v82, &v81, &v81); v55 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v55 + 1) = *(_WORD *)(v52 + 4); *((_DWORD *)v55 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v52 + 836))(v52); *((_WORD *)v55 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v52 + 2004))(v52) + 4); *(_DWORD *)((char *)v55 + 10) = *(_DWORD *)v36; *(_DWORD *)((char *)v55 + 14) = *(_DWORD *)(v36 + 4); *((_WORD *)v55 + 9) = *(_WORD *)(v36 + 8); memcpy((char *)v55 + 20, &v84, 0x64u); *((_BYTE *)v55 + 120) = v91; v56 = v76; v57 = v36 + 10; (*(void (__thiscall **)(int, int))(*(_DWORD *)v76 + 12))(v76, v57); v58 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v56 + 12))(v56, v57) + 20; v59 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v56 + 12))(v56, v57); if ( sub_4C81E0(&off_849C18, v59 + 20) ) { v60 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v60); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_mh_ReArrangeFurniture : Packet Too Long", v58); } v61 = (*(int (**)(void))(*(_DWORD *)v73 + 2004))(); ++*(_WORD *)(v61 + 4); LOBYTE(v107) = 0; nullsub_2(&v79); v35 = v75; goto LABEL_94; } LOBYTE(v107) = 0; nullsub_2(&v79); LABEL_54: --dword_750CB8; v107 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture"); return 4554; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA07C0: using guessed type int dword_AA07C0; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // D73D100: using guessed type int dword_D73D100; // D73D104: using guessed type int dword_D73D104; // D73D138: using guessed type int dword_D73D138; // D73D144: using guessed type int dword_D73D144; // D73D150: using guessed type int dword_D73D150; // 14D16430: using guessed type int dword_14D16430; // 543130: using guessed type int var_D64[392]; // 543130: using guessed type int var_664[392]; //----- (00543C70) -------------------------------------------------------- signed int __thiscall sub_543C70(void *this, int a2, signed int *a3) { unsigned int v3; // ST10_4@1 int v4; // ebx@1 void *v5; // esi@1 signed int v6; // edi@1 int (__thiscall *v7)(_DWORD, _DWORD); // eax@1 signed int result; // eax@2 signed int v9; // eax@3 int v10; // ecx@5 int v11; // edi@7 int v12; // eax@9 int v13; // ecx@9 int v14; // edx@9 int v15; // eax@10 int v16; // eax@14 int v17; // edx@20 int v18; // ebx@21 int v19; // ecx@25 __int16 v20; // cx@30 int (__thiscall *v21)(_DWORD); // edx@30 int v22; // eax@30 int v23; // edx@33 int v24; // edi@40 int v25; // esi@41 int v26; // eax@41 char *v27; // ebx@42 __int16 v28; // ax@42 int v29; // esi@47 __int16 v30; // ax@47 int v31; // ebx@47 int v32; // edx@47 int v33; // esi@47 int v34; // eax@47 int v35; // edi@47 void *v36; // esi@47 int v37; // esi@47 int v38; // edi@47 int v39; // eax@47 int v40; // eax@49 int v41; // eax@50 int v42[392]; // [sp+Ch] [bp-D10h]@14 int v43; // [sp+62Ch] [bp-6F0h]@1 char *v44; // [sp+630h] [bp-6ECh]@5 char *v45; // [sp+634h] [bp-6E8h]@5 char *v46; // [sp+638h] [bp-6E4h]@5 char *v47; // [sp+63Ch] [bp-6E0h]@5 int (**v48)(); // [sp+640h] [bp-6DCh]@9 int v49; // [sp+644h] [bp-6D8h]@9 int v50; // [sp+648h] [bp-6D4h]@12 int v51; // [sp+64Ch] [bp-6D0h]@12 int v52; // [sp+650h] [bp-6CCh]@30 int v53; // [sp+654h] [bp-6C8h]@5 int v54; // [sp+658h] [bp-6C4h]@1 int v55; // [sp+65Ch] [bp-6C0h]@7 int v56; // [sp+660h] [bp-6BCh]@6 char v57; // [sp+667h] [bp-6B5h]@7 int v58; // [sp+668h] [bp-6B4h]@5 char v59; // [sp+66Ch] [bp-6B0h]@47 char v60; // [sp+676h] [bp-6A6h]@47 __int16 v61; // [sp+677h] [bp-6A5h]@47 float v62; // [sp+67Dh] [bp-69Fh]@47 float v63; // [sp+681h] [bp-69Bh]@47 float v64; // [sp+685h] [bp-697h]@47 float v65; // [sp+689h] [bp-693h]@47 __int16 v66; // [sp+6D8h] [bp-644h]@47 char v67; // [sp+6DAh] [bp-642h]@47 int v68[392]; // [sp+6DCh] [bp-640h]@30 int v69; // [sp+CFCh] [bp-20h]@5 int v70; // [sp+D00h] [bp-1Ch]@5 int v71; // [sp+D04h] [bp-18h]@5 int v72; // [sp+D08h] [bp-14h]@5 unsigned int v73; // [sp+D0Ch] [bp-10h]@1 int v74; // [sp+D18h] [bp-4h]@1 int v75; // [sp+D1Ch] [bp+0h]@1 v73 = (unsigned int)&v75 ^ __security_cookie; v3 = (unsigned int)&v75 ^ __security_cookie; v4 = a2; v5 = this; v54 = a2; v43 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"; v6 = -1; dword_750AB8[dword_750CB8++] = -1; v7 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 176); v74 = 0; if ( (unsigned __int8)v7(v5, v3) ) { v9 = *(_BYTE *)a3; if ( v9 <= 392 ) { v44 = (char *)v5 + 1452; v45 = (char *)v5 + 12824; v10 = 0; v46 = (char *)v5 + 24196; v53 = 0; v47 = (char *)v5 + 35568; v69 = 3; v70 = 13; v71 = 14; v72 = 16; v58 = 0; if ( v9 > 0 ) { v56 = (int)((char *)a3 + 1); while ( 2 ) { v11 = 0; v57 = 0; v55 = 0; do { if ( v57 ) break; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1176))(v4); v13 = (int)(&v44)[4 * v11]; v48 = &off_6A86A4; v49 = v13; v14 = *(_DWORD *)v13; if ( v12 ) v15 = (*(int (__stdcall **)(int))(v14 + 4))(v12); else v15 = (*(int (**)(void))(v14 + 8))(); v51 = v15; v48 = (int (**)())&off_6A86AC; LOBYTE(v74) = 1; v50 = 0; if ( (unsigned __int8)off_6A86AC(&v48) || sub_63F7F0(&v48) ) { while ( 1 ) { v16 = (**(int (__stdcall ***)(_DWORD))v49)(v50); v42[v58] = v16; if ( v16 ) { if ( *(_WORD *)(v16 + 11) == *(_WORD *)v56 ) break; } if ( !sub_63F7F0(&v48) ) goto LABEL_32; } if ( !(*(_BYTE *)(v16 + 10) & 1) ) { --dword_750CB8; v48 = &off_6A86A4; v74 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); return 4577; } if ( v11 == 3 ) { v17 = *((_DWORD *)v5 + 12722); if ( (v17 & *((_DWORD *)v5 + 12721)) != -1 ) { v18 = *((_DWORD *)v5 + 12723); if ( v18 ) { if ( *(_DWORD *)v16 == *((_DWORD *)v5 + 12721) && *(_DWORD *)(v16 + 4) == v17 || v16 == v18 ) { v19 = *((_DWORD *)v5 + 12740); if ( v19 == 2 || v19 == 3 ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 504))(v5, 1); --dword_750CB8; v48 = &off_6A86A4; v74 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); return 7618; } (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v5 + 496))( v5, 1, *(_DWORD *)v16, *(_DWORD *)(v16 + 4)); } v11 = v55; } } v4 = v54; } v20 = v50 & 0x3FF | (*((_WORD *)&v69 + 2 * v11) << 10); v68[v58] = v11; v21 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); LOWORD(v52) = v20; v22 = v21(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int, int *))(*(_DWORD *)v22 + 8))(v22, &v52) ) { --dword_750CB8; v48 = &off_6A86A4; v74 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); return 4551; } ++v53; v57 = 1; } LABEL_32: ++v11; LOBYTE(v74) = 0; v48 = &off_6A86A4; v55 = v11; } while ( v11 < 4 ); v23 = *(_BYTE *)a3; v56 += 2; ++v58; if ( v58 < v23 ) continue; break; } v10 = v53; v6 = -1; } if ( v10 == *(_BYTE *)a3 ) { v24 = 0; v55 = 0; if ( v10 > 0 ) { do { v25 = v42[v24]; v52 = *(_DWORD *)(v25 + 112); v26 = 4 * v68[v24]; LOWORD(v58) = *((_WORD *)&v69 + 2 * v68[v24]) << 10; v56 = v25; if ( (v58 & 0x3FFu) < 0x62 ) { v27 = (&v44)[v26]; v28 = v58; while ( !(**(int (__thiscall ***)(char *, int))v27)(v27, v28 & 0x3FF) || *(_WORD *)(v25 + 11) != *(_WORD *)((**(int (__thiscall ***)(char *, int))v27)(v27, v58 & 0x3FF) + 11) ) { LOWORD(v58) = (v58 ^ (unsigned __int16)(v58 + 1)) & 0x3FF ^ v58; v28 = v58; if ( (v58 & 0x3FFu) >= 0x62 ) goto LABEL_51; } memcpy(&v59, (const void *)v25, 0x6Cu); v29 = v25 + 108; v66 = *(_WORD *)v29; v67 = *(_BYTE *)(v29 + 2); v62 = *(float *)((**(int (__thiscall ***)(_DWORD, _DWORD))v27)(v27, v58 & 0x3FF) + 17); v63 = *(float *)((**(int (__thiscall ***)(_DWORD, _DWORD))v27)(v27, v58 & 0x3FF) + 21); v64 = *(float *)((**(int (__thiscall ***)(_DWORD, _DWORD))v27)(v27, v58 & 0x3FF) + 25); v65 = *(float *)((**(int (__thiscall ***)(_DWORD, _DWORD))v27)(v27, v58 & 0x3FF) + 29); v30 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))v27)(v27, v58 & 0x3FF) + 11); v31 = v54; v32 = *(_DWORD *)v54; v60 &= 0xFEu; v61 = v30; v33 = (*(int (__thiscall **)(int))(v32 + 2004))(v54); v34 = (*(int (__thiscall **)(int))(*(_DWORD *)v31 + 2004))(v31); v35 = v56; (*(void (__thiscall **)(int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v33 + 104))( v33, *(_WORD *)(v34 + 4), v56, &v59, &v58, &v58); v36 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v36 + 1) = *(_WORD *)(v31 + 4); *((_DWORD *)v36 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v31 + 836))(v31); *((_WORD *)v36 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v31 + 2004))(v31) + 4); *(_DWORD *)((char *)v36 + 10) = *(_DWORD *)v35; *(_DWORD *)((char *)v36 + 14) = *(_DWORD *)(v35 + 4); *((_WORD *)v36 + 9) = *(_WORD *)(v35 + 8); memcpy((char *)v36 + 20, &v60, 0x64u); *((_BYTE *)v36 + 120) = v67; v37 = v52; v38 = v56 + 10; (*(void (__thiscall **)(int, int))(*(_DWORD *)v52 + 12))(v52, v56 + 10); v56 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v37 + 12))(v37, v38) + 20; v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v37 + 12))(v37, v38); if ( sub_4C81E0(&off_849C18, v39 + 20) ) { v40 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v40); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_mh_ReArrangeFurniture : Packet Too Long", v56); } v41 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v31 + 2004))(v31); ++*(_WORD *)(v41 + 4); v24 = v55; } LABEL_51: ++v24; v55 = v24; } while ( v24 < v53 ); } --dword_750CB8; v74 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); result = 4545; } else { --dword_750CB8; v74 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); result = 4555; } } else { --dword_750CB8; v74 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); result = 4576; } } else { --dword_750CB8; v74 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture"); result = 4550; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 543C70: using guessed type int var_D10[392]; // 543C70: using guessed type int var_640[392]; //----- (00544380) -------------------------------------------------------- signed int __thiscall sub_544380(void *this, int a2, int a3) { unsigned int v3; // ST18_4@1 void *v4; // edi@1 int (__thiscall *v5)(_DWORD, _DWORD); // edx@1 signed int result; // eax@2 int v7; // edx@3 signed int v8; // eax@3 signed int v9; // edi@7 int v10; // eax@8 float v11; // ST18_4@9 float v12; // ST14_4@9 int v13; // edi@14 int v14; // eax@16 int v15; // ecx@16 int v16; // edx@16 int v17; // eax@17 int v18; // eax@21 __int16 v19; // ax@27 int v20; // edx@27 int v21; // eax@27 int v22; // edx@30 int v23; // ecx@38 int v24; // esi@40 int v25; // eax@40 int v26; // eax@40 char *v27; // edi@41 __int16 v28; // ax@41 double v29; // st7@46 __int16 v30; // dx@46 int v31; // esi@46 int (__thiscall *v32)(_DWORD); // edx@46 int v33; // esi@46 int v34; // eax@46 int v35; // edi@46 void *v36; // esi@46 int v37; // esi@46 int v38; // edi@46 int v39; // eax@46 int v40; // eax@48 int v41; // eax@49 int v42[392]; // [sp+18h] [bp-D64h]@21 int v43; // [sp+638h] [bp-744h]@1 char *v44; // [sp+63Ch] [bp-740h]@5 char *v45; // [sp+640h] [bp-73Ch]@5 char *v46; // [sp+644h] [bp-738h]@5 char *v47; // [sp+648h] [bp-734h]@5 void *v48; // [sp+64Ch] [bp-730h]@1 int (**v49)(); // [sp+650h] [bp-72Ch]@16 int v50; // [sp+654h] [bp-728h]@16 int v51; // [sp+658h] [bp-724h]@19 int v52; // [sp+65Ch] [bp-720h]@19 __int16 v53; // [sp+660h] [bp-71Ch]@27 __int64 v54; // [sp+664h] [bp-718h]@8 int v55; // [sp+66Ch] [bp-710h]@5 __int64 v56; // [sp+670h] [bp-70Ch]@8 int v57; // [sp+678h] [bp-704h]@1 int v58; // [sp+67Ch] [bp-700h]@5 int v59; // [sp+680h] [bp-6FCh]@6 int v60; // [sp+684h] [bp-6F8h]@8 char v61; // [sp+688h] [bp-6F4h]@46 char v62; // [sp+692h] [bp-6EAh]@46 __int16 v63; // [sp+693h] [bp-6E9h]@46 float v64; // [sp+699h] [bp-6E3h]@46 float v65; // [sp+69Dh] [bp-6DFh]@46 float v66; // [sp+6A1h] [bp-6DBh]@46 float v67; // [sp+6A5h] [bp-6D7h]@46 __int16 v68; // [sp+6F4h] [bp-688h]@46 char v69; // [sp+6F6h] [bp-686h]@46 char v70[4]; // [sp+6F8h] [bp-684h]@8 int v71; // [sp+6FCh] [bp-680h]@8 int v72; // [sp+700h] [bp-67Ch]@8 int v73; // [sp+704h] [bp-678h]@8 int v74; // [sp+708h] [bp-674h]@8 int v75; // [sp+70Ch] [bp-670h]@8 int v76; // [sp+710h] [bp-66Ch]@8 int v77; // [sp+714h] [bp-668h]@8 int v78[392]; // [sp+718h] [bp-664h]@27 int v79; // [sp+D38h] [bp-44h]@5 int v80; // [sp+D3Ch] [bp-40h]@5 int v81; // [sp+D40h] [bp-3Ch]@5 int v82; // [sp+D44h] [bp-38h]@5 char v83; // [sp+D48h] [bp-34h]@8 unsigned int v84; // [sp+D6Ch] [bp-10h]@1 int v85; // [sp+D78h] [bp-4h]@1 int v86; // [sp+D7Ch] [bp+0h]@1 v84 = (unsigned int)&v86 ^ __security_cookie; v3 = (unsigned int)&v86 ^ __security_cookie; v4 = this; v48 = this; v57 = a3; v43 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 176); v85 = 0; if ( !(unsigned __int8)v5(v4, v3) ) { --dword_750CB8; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); return 4550; } v7 = v57; v8 = *(_BYTE *)v57; if ( v8 > 392 ) { --dword_750CB8; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); return 4576; } v44 = (char *)v4 + 1452; v45 = (char *)v4 + 12824; v46 = (char *)v4 + 24196; v47 = (char *)v4 + 35568; v79 = 3; v80 = 13; v81 = 14; v82 = 16; v55 = 0; v58 = 0; if ( v8 > 0 ) { v59 = v57 + 11; while ( 2 ) { v9 = 1; do { sprintf(&v83, "FURNITURE_ARE%d%c", v9, 0); v77 = 0; v76 = 0; v75 = 0; v74 = 0; v73 = 0; v72 = 0; v71 = 0; *(_DWORD *)v70 = 0; strncpy(v70, &v83, 0x20u); HIDWORD(v54) = HIWORD(v60) | 0xC00; v56 = (signed __int64)*(float *)(v59 - 4); HIDWORD(v56) = v56; v54 = (signed __int64)*(float *)(v59 - 8); HIDWORD(v54) = v54; v10 = sub_62A340(*(_DWORD *)(*((_DWORD *)v48 + 92) + 20) + 36, (int)v70); if ( v10 ) { v11 = (double)HIDWORD(v56); v12 = (double)HIDWORD(v54); if ( (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v10)(v10, LODWORD(v12), LODWORD(v11)) ) break; } ++v9; } while ( v9 < 10 ); if ( v9 == 10 || *(float *)v59 < 700.0 || *(float *)v59 > 900.0 ) { --dword_750CB8; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); return 4557; } BYTE3(v60) = 0; v13 = 0; do { if ( BYTE3(v60) ) break; v14 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1176))(a2); v15 = (int)(&v44)[4 * v13]; v49 = &off_6A86A4; v50 = v15; v16 = *(_DWORD *)v15; if ( v14 ) v17 = (*(int (__stdcall **)(int))(v16 + 4))(v14); else v17 = (*(int (**)(void))(v16 + 8))(); v52 = v17; v49 = (int (**)())&off_6A86AC; LOBYTE(v85) = 1; v51 = 0; if ( (unsigned __int8)off_6A86AC(&v49) || sub_63F7F0(&v49) ) { while ( 1 ) { v18 = (**(int (__stdcall ***)(_DWORD))v50)(v51); v42[v58] = v18; if ( v18 ) { if ( *(_WORD *)(v18 + 11) == *(_WORD *)(v59 - 10) ) break; } if ( !sub_63F7F0(&v49) ) goto LABEL_29; } if ( !(*(_BYTE *)(v18 + 10) & 1) ) { --dword_750CB8; v49 = &off_6A86A4; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); return 4577; } if ( *(_BYTE *)(v18 + 37) >= 4u ) { --dword_750CB8; v49 = &off_6A86A4; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); return 4578; } v19 = v51 & 0x3FF | (*((_WORD *)&v79 + 2 * v13) << 10); v78[v58] = v13; v20 = *(_DWORD *)a2; v53 = v19; v21 = (*(int (__thiscall **)(int))(v20 + 2004))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v21 + 8))(v21, &v53) ) { --dword_750CB8; v49 = &off_6A86A4; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); return 4551; } ++v55; BYTE3(v60) = 1; } LABEL_29: ++v13; LOBYTE(v85) = 0; v49 = &off_6A86A4; } while ( v13 < 4 ); v22 = *(_BYTE *)v57; v59 += 18; ++v58; if ( v58 < v22 ) continue; break; } v7 = v57; } if ( v55 == *(_BYTE *)v7 ) { v23 = 0; v57 = 0; if ( v55 > 0 ) { v58 = v7 + 7; do { v24 = v42[v23]; v25 = 2 * v78[v23]; HIDWORD(v56) = *(_DWORD *)(v24 + 112); v26 = 2 * v25; LOWORD(v60) = *(_WORD *)((char *)&v79 + v26) << 10; v59 = v24; if ( (v60 & 0x3FFu) < 0x62 ) { v27 = (&v44)[v26]; v28 = v60; while ( !(**(int (__thiscall ***)(char *, int))v27)(v27, v28 & 0x3FF) || *(_WORD *)(v24 + 11) != *(_WORD *)((**(int (__thiscall ***)(char *, int))v27)(v27, v60 & 0x3FF) + 11) ) { LOWORD(v60) = (v60 ^ (unsigned __int16)(v60 + 1)) & 0x3FF ^ v60; v28 = v60; if ( (v60 & 0x3FFu) >= 0x62 ) goto LABEL_50; } v29 = *(float *)(v58 - 4); v30 = *(_WORD *)(v58 - 6); memcpy(&v61, (const void *)v24, 0x6Cu); v31 = v24 + 108; v68 = *(_WORD *)v31; v69 = *(_BYTE *)(v31 + 2); v64 = v29; v65 = *(float *)v58; v63 = v30; v66 = *(float *)(v58 + 4); v32 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); v67 = *(float *)(v58 + 8); v33 = v32(a2); v34 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v35 = v59; (*(void (__thiscall **)(int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v33 + 104))( v33, *(_WORD *)(v34 + 4), v59, &v61, &v60, &v60); v36 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v36 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v36 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v36 + 4) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); *(_DWORD *)((char *)v36 + 10) = *(_DWORD *)v35; *(_DWORD *)((char *)v36 + 14) = *(_DWORD *)(v35 + 4); *((_WORD *)v36 + 9) = *(_WORD *)(v35 + 8); memcpy((char *)v36 + 20, &v62, 0x64u); *((_BYTE *)v36 + 120) = v69; v37 = HIDWORD(v56); v38 = v59 + 10; (*(void (__thiscall **)(_DWORD, int))(*HIDWORD(v56) + 12))(HIDWORD(v56), v59 + 10); HIDWORD(v56) = (*(int (__thiscall **)(int, int))(*(_DWORD *)v37 + 12))(v37, v38) + 20; v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v37 + 12))(v37, v38); if ( sub_4C81E0(&off_849C18, v39 + 20) ) { v40 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v40); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_mh_ReArrangeFurniture : Packet Too Long", SHIDWORD(v56)); } v41 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v41 + 4); LABEL_50: v23 = v57; } v58 += 18; ++v23; v57 = v23; } while ( v23 < v55 ); } --dword_750CB8; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); result = 4545; } else { --dword_750CB8; v85 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture"); result = 4555; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 544380: using guessed type int var_D64[392]; // 544380: using guessed type int var_664[392]; //----- (00544B60) -------------------------------------------------------- char __thiscall sub_544B60(void *this, int a2) { unsigned int v2; // ST24_4@1 void *v3; // ebx@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // edi@1 int v7; // eax@3 int (__thiscall *v8)(_DWORD); // edx@3 int v9; // eax@3 int (__thiscall *v10)(_DWORD); // edx@3 void *v11; // eax@4 int v12; // esi@4 int (__thiscall *v13)(_DWORD); // eax@4 __int16 v14; // ax@4 signed int v15; // ebx@5 unsigned __int8 v16; // al@7 char *v17; // ecx@7 int v18; // edx@7 int v19; // esi@7 int v20; // esi@9 int v21; // eax@9 void *v22; // esi@11 int v23; // eax@12 int v24; // ecx@12 int v25; // edx@12 int v26; // eax@13 int v27; // eax@17 int v28; // esi@17 __int16 v29; // bx@18 signed int v30; // eax@18 char *v31; // ebx@27 int v32; // eax@28 signed int v33; // ebx@39 unsigned int v34; // esi@41 double v35; // st7@41 int v36; // eax@41 int v37; // eax@41 int v38; // edx@42 float v39; // ST24_4@42 float v40; // ST20_4@42 int v41; // ebx@47 int v42; // edi@47 __int16 v43; // ax@47 int v44; // esi@47 int v45; // edx@47 int v46; // eax@47 int v47; // edx@47 int v48; // eax@47 int v49; // esi@49 int v50; // edi@49 int v51; // eax@49 int v52; // eax@51 int v53; // eax@52 __int16 v54; // ax@58 int v55; // eax@58 int v56; // ebx@59 signed int v57; // esi@59 int v58; // eax@61 int v59; // ecx@61 int v60; // edx@61 int v61; // eax@62 int v62; // ebx@66 int v63; // eax@67 __int16 v64; // cx@69 void *v65; // eax@73 int v66; // esi@75 int v67; // eax@75 char *v68; // [sp+38h] [bp-11Ch]@3 char *v69; // [sp+3Ch] [bp-118h]@3 char *v70; // [sp+40h] [bp-114h]@3 char *v71; // [sp+44h] [bp-110h]@3 void *v72; // [sp+48h] [bp-10Ch]@1 int v73; // [sp+4Ch] [bp-108h]@30 int v74; // [sp+50h] [bp-104h]@1 int (**v75)(); // [sp+54h] [bp-100h]@12 int v76; // [sp+58h] [bp-FCh]@12 int v77; // [sp+5Ch] [bp-F8h]@15 int v78; // [sp+60h] [bp-F4h]@15 int v79; // [sp+64h] [bp-F0h]@17 int v80; // [sp+68h] [bp-ECh]@4 int v81; // [sp+6Ch] [bp-E8h]@18 unsigned int v82; // [sp+70h] [bp-E4h]@41 void *v83; // [sp+74h] [bp-E0h]@3 __int64 v84; // [sp+78h] [bp-DCh]@3 char v85; // [sp+80h] [bp-D4h]@47 char v86; // [sp+8Ah] [bp-CAh]@47 __int16 v87; // [sp+8Bh] [bp-C9h]@47 float v88; // [sp+91h] [bp-C3h]@47 float v89; // [sp+95h] [bp-BFh]@47 float v90; // [sp+99h] [bp-BBh]@47 float v91; // [sp+9Dh] [bp-B7h]@47 __int16 v92; // [sp+ECh] [bp-68h]@47 char v93; // [sp+EEh] [bp-66h]@47 char v94[4]; // [sp+F0h] [bp-64h]@41 int v95; // [sp+F4h] [bp-60h]@41 int v96; // [sp+F8h] [bp-5Ch]@41 int v97; // [sp+FCh] [bp-58h]@41 int v98; // [sp+100h] [bp-54h]@41 int v99; // [sp+104h] [bp-50h]@41 int v100; // [sp+108h] [bp-4Ch]@41 int v101; // [sp+10Ch] [bp-48h]@41 int v102; // [sp+110h] [bp-44h]@3 int v103; // [sp+114h] [bp-40h]@3 int v104; // [sp+118h] [bp-3Ch]@3 int v105; // [sp+11Ch] [bp-38h]@3 char v106; // [sp+120h] [bp-34h]@41 unsigned int v107; // [sp+144h] [bp-10h]@1 int v108; // [sp+150h] [bp-4h]@1 int v109; // [sp+154h] [bp+0h]@1 v107 = (unsigned int)&v109 ^ __security_cookie; v2 = (unsigned int)&v109 ^ __security_cookie; v3 = this; v72 = this; v74 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 148); v5 = 0; v108 = 0; if ( !(unsigned __int8)v4(v3, v2) ) goto LABEL_2; v83 = off_849C18; v68 = (char *)v3 + 1452; v69 = (char *)v3 + 12824; v7 = *(_DWORD *)v3; v70 = (char *)v3 + 24196; v71 = (char *)v3 + 35568; v8 = *(int (__thiscall **)(_DWORD))(v7 + 128); v102 = 3; v103 = 13; v104 = 14; v105 = 16; v9 = v8(v3); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836); HIDWORD(v84) = v9; if ( v10(a2) == v9 ) { v11 = v83; *(_WORD *)v83 = -29688; v12 = (int)((char *)v11 + 2); v13 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 132); HIDWORD(v84) = v12; v14 = v13(v3); v80 = sub_54DE90(&unk_13253630, v14); if ( v80 ) { v15 = 0; while ( 1 ) { v16 = *((_BYTE *)&v102 + v15 * 4); v17 = (&v68)[v15 * 4]; v18 = v74; *(_BYTE *)(v12 + 1) = v16; v19 = (*(int (__thiscall **)(int, int, int, _DWORD, char *))(*(_DWORD *)v18 + 1316))( v74, v12, v12 + 3, v16, v17) + 5; if ( sub_4C81E0(&off_849C18, v19) ) { v20 = v74; v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v74 + 760))(v74); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v21 + 12))(v21, v20, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo : Packet Too Long", v19); } ++v15; if ( v15 >= 4 ) break; v12 = HIDWORD(v84); } v22 = 0; v83 = 0; do { v23 = (*(int (**)(void))(*(_DWORD *)v80 + 1176))(); v24 = *(_DWORD *)((char *)v22 + (_DWORD)&v68); v75 = &off_6A86A4; v76 = v24; v25 = *(_DWORD *)v24; if ( v23 == v5 ) v26 = (*(int (**)(void))(v25 + 8))(); else v26 = (*(int (__stdcall **)(int))(v25 + 4))(v23); v78 = v26; v75 = (int (**)())&off_6A86AC; LOBYTE(v108) = 1; v77 = v5; if ( (unsigned __int8)off_6A86AC(&v75) || sub_63F7F0(&v75) ) { do { v27 = (**(int (__stdcall ***)(_DWORD))v76)(v77); v28 = v27; v79 = v27; if ( v27 != v5 ) { v29 = *(_WORD *)(v27 + 8); sub_5CF620(&v81); LOBYTE(v108) = 2; v30 = -1; while ( v30 >= -1 ) { ++v30; v81 = v30; if ( v30 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v30) == v29 ) goto LABEL_24; } v81 = -10; LABEL_24: if ( sub_417060(&v81) != *(_DWORD *)(dword_AA07F4 + 40) ) { if ( v81 < v5 || v81 >= dword_AA0898 || (v31 = (char *)dword_AA0894 + 8 * v81, v31 == (char *)v5) || (v32 = *((_DWORD *)v31 + 1), v32 == v5) ) goto LABEL_79; if ( strncmp((const char *)(v32 + 66), "FURNITURE", 0x20u) ) { if ( strncmp((const char *)(*((_DWORD *)v31 + 1) + 66), "ACCESSORY", 0x20u) ) { if ( strncmp((const char *)(*((_DWORD *)v31 + 1) + 66), "TILEALL", 0x20u) ) { if ( !strncmp((const char *)(*((_DWORD *)v31 + 1) + 66), "MINIGAME", 0x20u) ) v73 = 16; } else { v73 = 14; } } else { v73 = 13; } } else { v73 = 3; } if ( *(_DWORD *)((char *)v83 + (_DWORD)&v102) == (unsigned __int16)v73 ) { LABEL_79: v33 = 1; while ( 1 ) { sprintf(&v106, "FURNITURE_ARE%d%c", v33, v5); v101 = v5; v100 = v5; v99 = v5; v98 = v5; v97 = v5; v96 = v5; v95 = v5; *(_DWORD *)v94 = v5; strncpy(v94, &v106, 0x20u); v84 = (signed __int64)*(float *)(v28 + 21); v34 = v84; v35 = *(float *)(v79 + 17); HIDWORD(v84) = HIWORD(v82) | 0xC00; v36 = *(_DWORD *)(*((_DWORD *)v72 + 92) + 20); v84 = (signed __int64)v35; HIDWORD(v84) = (signed __int64)v35; v37 = sub_62A340(v36 + 36, (int)v94); if ( v37 != v5 ) { v38 = *(_DWORD *)v37; v82 = v34; v39 = (double)v34; v40 = (double)HIDWORD(v84); if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))v38)( v37, LODWORD(v40), LODWORD(v39)) ) break; } ++v33; if ( v33 >= 10 ) break; v28 = v79; } if ( v33 == 10 || *(float *)(v79 + 25) < 700.0 || *(float *)(v79 + 25) > 900.0 ) { v41 = *(_DWORD *)(v79 + 112); LOWORD(v82) = v77 & 0x3FF | (*(_WORD *)((char *)v83 + (_DWORD)&v102) << 10); memcpy(&v85, (const void *)v79, 0x6Cu); v92 = *(_WORD *)(v79 + 108); v93 = *(_BYTE *)(v79 + 110); v88 = 276.0; v42 = v79; v89 = 389.0; v43 = *(_WORD *)(v79 + 11); v44 = v80; v90 = 6.0; v45 = *(_DWORD *)v80; v86 &= 0xFEu; v91 = 0.0; v87 = v43; v46 = (*(int (__thiscall **)(int))(v45 + 2004))(v80); v47 = *(_DWORD *)v44; HIDWORD(v84) = v46; v48 = (*(int (__thiscall **)(int))(v47 + 2004))(v44); (*(void (__thiscall **)(_DWORD, _DWORD, int, char *, unsigned int *, unsigned int *))(*HIDWORD(v84) + 104))( HIDWORD(v84), *(_WORD *)(v48 + 4), v42, &v85, &v82, &v82); if ( !(dword_13244C68 & 1) ) { dword_13244C68 |= 1u; dword_13244C5C = 0; dword_13244C64 = 0; atexit(nullsub_118); } LOWORD(dword_13244BD8) = dword_13244BD8 & 0x3FF | 0x3400; LOWORD(dword_13244BD8) = dword_13244BD8 & 0xFC49 | 0x49; dword_13244C5C = (int)&dword_13244BD8; dword_13244C60 = 129; HIWORD(dword_13244BD8) = *(_WORD *)(v44 + 4); dword_13244BDC = (*(int (__thiscall **)(int))(*(_DWORD *)v44 + 836))(v44); word_13244BE0 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v44 + 2004))(v44) + 4); dword_13244BE2 = *(_DWORD *)v42; dword_13244BE6 = *(_DWORD *)(v42 + 4); word_13244BEA = *(_WORD *)(v42 + 8); memcpy(byte_13244BEC, &v86, 0x64u); byte_13244BEC[100] = v93; v49 = v79 + 10; (*(void (__thiscall **)(int, int))(*(_DWORD *)v41 + 12))(v41, v79 + 10); v50 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v41 + 12))(v41, v49) + 20; v51 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v41 + 12))(v41, v49); if ( sub_4C81E0(&dword_13244C5C, v51 + 20) ) { v52 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&dword_13244C5C, v52); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_mh_ReArrangeFurniture : Packet Too Long", v50); } v53 = (*(int (**)(void))(*(_DWORD *)v80 + 2004))(); ++*(_WORD *)(v53 + 4); v5 = 0; } } else { (*(void (__stdcall **)(int, int, int, _DWORD))(*(_DWORD *)v72 + 68))( v74, v28, v77, *(_DWORD *)((char *)v83 + (_DWORD)&v102)); } } LOBYTE(v108) = 1; nullsub_2(&v81); } } while ( sub_63F7F0(&v75) ); v22 = v83; } v22 = (char *)v22 + 4; LOBYTE(v108) = 0; v75 = &off_6A86A4; v83 = v22; } while ( (signed int)v22 < 16 ); goto LABEL_76; } LABEL_2: --dword_750CB8; v108 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo"); return 0; } *(_WORD *)v83 = -29687; v54 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 132))(v3); v55 = sub_54DE90(&unk_13253630, v54); HIDWORD(v84) = v55; if ( !v55 ) goto LABEL_2; v56 = 0; v80 = 0; v57 = 0; while ( 1 ) { v58 = (*(int (__thiscall **)(int))(*(_DWORD *)v55 + 1176))(v55); v59 = (int)(&v68)[4 * v57]; v75 = &off_6A86A4; v76 = v59; v60 = *(_DWORD *)v59; if ( v58 ) v61 = (*(int (__stdcall **)(int))(v60 + 4))(v58); else v61 = (*(int (**)(void))(v60 + 8))(); v78 = v61; v75 = (int (**)())&off_6A86AC; LOBYTE(v108) = 3; v77 = 0; if ( (unsigned __int8)off_6A86AC(&v75) || sub_63F7F0(&v75) ) { v62 = (int)((char *)v83 + 21 * v56 + 4); do { v63 = (**(int (__stdcall ***)(_DWORD))v76)(v77); if ( v63 && *(_BYTE *)(v63 + 10) & 1 ) { v64 = *(_WORD *)(v63 + 8); ++v80; *(_WORD *)(v62 + 2) = v64; *(_WORD *)v62 = *(_WORD *)(v63 + 11); *(float *)(v62 + 4) = *(float *)(v63 + 17); v62 += 21; *(float *)(v62 - 13) = *(float *)(v63 + 21); *(float *)(v62 - 9) = *(float *)(v63 + 25); *(float *)(v62 - 5) = *(float *)(v63 + 29); *(_BYTE *)(v62 - 1) = *(_BYTE *)(v63 + 37); } } while ( sub_63F7F0(&v75) ); v56 = v80; } ++v57; LOBYTE(v108) = 0; v75 = &off_6A86A4; if ( v57 >= 4 ) break; v55 = HIDWORD(v84); } v65 = v83; *((_BYTE *)v83 + 2) = v56; *((_BYTE *)v65 + 3) = -1; if ( sub_4C81E0(&off_849C18, 21 * (unsigned __int8)v56 + 4) ) { v66 = v74; v67 = (*(int (__thiscall **)(int))(*(_DWORD *)v74 + 760))(v74); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v67 + 12))(v67, v66, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo : Packet Too Long", 21 * (unsigned __int8)v56 + 4); } LABEL_76: --dword_750CB8; v108 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo"); return 1; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // 13244BD8: using guessed type int dword_13244BD8; // 13244BDC: using guessed type int dword_13244BDC; // 13244BE0: using guessed type __int16 word_13244BE0; // 13244BE2: using guessed type int dword_13244BE2; // 13244BE6: using guessed type int dword_13244BE6; // 13244BEA: using guessed type __int16 word_13244BEA; // 13244C5C: using guessed type int dword_13244C5C; // 13244C60: using guessed type int dword_13244C60; // 13244C64: using guessed type int dword_13244C64; // 13244C68: using guessed type int dword_13244C68; // 14D16430: using guessed type int dword_14D16430; //----- (00545510) -------------------------------------------------------- char __thiscall sub_545510(void *this, int a2, int a3) { int (__stdcall *v3)(_DWORD); // edx@1 __int16 v4; // ax@1 int v5; // eax@1 int v6; // ebx@1 int (__thiscall *v7)(_DWORD); // eax@2 int v8; // eax@3 int v9; // eax@4 int v10; // eax@6 int v11; // esi@6 int v12; // eax@8 int v13; // eax@9 int v14; // eax@12 int v15; // edx@12 int v16; // eax@13 int v17; // esi@13 int v18; // eax@13 void *v19; // esi@13 int v20; // esi@13 int v21; // edi@13 int v22; // eax@13 int v23; // eax@15 int v24; // eax@16 int (**v26)(); // [sp+Ch] [bp-D8h]@2 int v27; // [sp+10h] [bp-D4h]@2 int v28; // [sp+18h] [bp-CCh]@2 int v29; // [sp+1Ch] [bp-C8h]@3 int v30; // [sp+20h] [bp-C4h]@6 int v31; // [sp+24h] [bp-C0h]@8 int v32; // [sp+28h] [bp-BCh]@1 int v33; // [sp+2Ch] [bp-B8h]@4 int *v34; // [sp+30h] [bp-B4h]@2 int v35; // [sp+34h] [bp-B0h]@2 int v36; // [sp+38h] [bp-ACh]@2 int v37; // [sp+3Ch] [bp-A8h]@13 int v38; // [sp+40h] [bp-A4h]@4 int v39; // [sp+44h] [bp-A0h]@13 unsigned int v40; // [sp+48h] [bp-9Ch]@5 __int16 v41; // [sp+ACh] [bp-38h]@4 char v42; // [sp+AEh] [bp-36h]@4 char v43; // [sp+B0h] [bp-34h]@12 int v44; // [sp+B4h] [bp-30h]@12 unsigned int v45; // [sp+B8h] [bp-2Ch]@12 int v46; // [sp+BCh] [bp-28h]@12 int v47; // [sp+C0h] [bp-24h]@12 char v48; // [sp+C4h] [bp-20h]@12 unsigned int v49; // [sp+D4h] [bp-10h]@1 int v50; // [sp+E0h] [bp-4h]@2 int v51; // [sp+E4h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v3 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 132); v32 = a3; v4 = v3((unsigned int)&v51 ^ __security_cookie); v5 = sub_54DE90(&unk_13253630, v4); v6 = v5; if ( v5 ) { v26 = &off_6A86A4; v27 = a2; v28 = (*(int (**)(void))(*(_DWORD *)a2 + 8))(); v26 = (int (**)())&off_6A86AC; v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004); v50 = 0; v34 = (int *)&v26; v35 = v7(v6); v36 = a3; for ( LOBYTE(v5) = sub_486D40(&v34); (_BYTE)v5; LOBYTE(v5) = sub_486DA0((void **)&v34) ) { v8 = (**(int (__stdcall ***)(_DWORD))v34[1])(v34[2]); v29 = v8; if ( v8 ) { memcpy(&v38, (const void *)v8, 0x6Cu); v41 = *(_WORD *)(v8 + 108); v42 = *(_BYTE *)(v8 + 110); v9 = *(_DWORD *)(v8 + 112); v33 = v9; if ( v9 ) { if ( (v40 >> 16) & 1 ) { v10 = (*(int (__thiscall **)(int, unsigned int *))(*(_DWORD *)v9 + 52))(v9, &v40); v11 = v10; v30 = v10; if ( v10 ) { if ( !*(_BYTE *)v10 ) { v12 = sub_541630((int)&dword_AA07C0, v40); v31 = v12; if ( v12 ) { v13 = *(_DWORD *)(v12 + 4); if ( v13 ) { if ( *(_WORD *)(v13 + 141) ) { memcpy(&v43, &unk_AA0BCC, 0x24u); v45 = *(_WORD *)(v13 + 141) + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); _LN52(&v43); v14 = v30; v15 = v44; *(_BYTE *)v30 = v48 - 100; *(_DWORD *)v14 = *(_BYTE *)v14 | (((_WORD)v47 + 1) << 8) & 0x1F00 | ((v46 & 0x3F | ((v45 & 0x3F | (v15 << 6)) << 6)) << 13); } else { *(_DWORD *)v11 = 1992027391; } v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1388))(v6); sub_418B40((int)byte_85A2C0, v16); LOWORD(v37) = v37 & 0x3FF | ((_WORD)v32 << 10); LOWORD(v37) = (v37 ^ *((_WORD *)v34 + 4)) & 0x3FF ^ v37; v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, int *, int *, int *))(*(_DWORD *)v17 + 64))( v17, *(_WORD *)(v18 + 4), v29, &v38, &v37, &v37); v19 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v19 + 1) = *(_WORD *)(v6 + 4); *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); *((_WORD *)v19 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6) + 4); *(_DWORD *)((char *)v19 + 10) = v38; *(_DWORD *)((char *)v19 + 14) = v39; *((_WORD *)v19 + 9) = v40; memcpy((char *)v19 + 20, (char *)&v40 + 2, 0x64u); *((_BYTE *)v19 + 120) = v42; v20 = v33; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v33 + 12))(v33, (char *)&v40 + 2); v21 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v20 + 12))(v20, (char *)&v40 + 2) + 20; v22 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v20 + 12))(v20, (char *)&v40 + 2); if ( sub_4C81E0(&off_849C18, v22 + 20) ) { v23 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v23); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v21); } v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); ++*(_WORD *)(v24 + 4); if ( (v37 & 0xFC00) == 16384 && *(_DWORD *)(*(_DWORD *)(v31 + 4) + 98) == 1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 440))(v6); } } } } } } } } } return v5; } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 86FEB8: using guessed type int __security_cookie; // AA07C0: using guessed type int dword_AA07C0; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (005458E0) -------------------------------------------------------- int __stdcall sub_5458E0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545930) -------------------------------------------------------- int __thiscall sub_545930(void *this, __int16 a2) { void *v2; // esi@1 int v3; // eax@1 int (__thiscall *v4)(_DWORD); // edx@1 __int16 v5; // ax@1 int v6; // ebx@1 signed int v7; // edi@3 int v8; // eax@4 int v9; // ecx@4 int v10; // edx@4 int v11; // eax@5 int v12; // esi@9 int result; // eax@14 int v14; // [sp-4h] [bp-44h]@2 char *v15; // [sp+10h] [bp-30h]@1 char *v16; // [sp+14h] [bp-2Ch]@1 char *v17; // [sp+18h] [bp-28h]@1 char *v18; // [sp+1Ch] [bp-24h]@1 int (**v19)(); // [sp+20h] [bp-20h]@4 int v20; // [sp+24h] [bp-1Ch]@4 int v21; // [sp+28h] [bp-18h]@7 int v22; // [sp+2Ch] [bp-14h]@7 int v23; // [sp+30h] [bp-10h]@1 int v24; // [sp+3Ch] [bp-4h]@1 v2 = this; v23 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle"; dword_750AB8[dword_750CB8++] = -1; v15 = (char *)v2 + 1452; v16 = (char *)v2 + 12824; v3 = *(_DWORD *)v2; v17 = (char *)v2 + 24196; v18 = (char *)v2 + 35568; v4 = *(int (__thiscall **)(_DWORD))(v3 + 132); v24 = 0; v5 = v4(v2); v6 = sub_54DE90(&unk_13253630, v5); if ( v6 ) { v7 = 0; while ( 1 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1176))(v6); v9 = (int)(&v15)[4 * v7]; v19 = &off_6A86A4; v20 = v9; v10 = *(_DWORD *)v9; v11 = v8 ? (*(int (__stdcall **)(int))(v10 + 4))(v8) : (*(int (**)(void))(v10 + 8))(); v22 = v11; v19 = (int (**)())&off_6A86AC; LOBYTE(v24) = 1; v21 = 0; if ( (unsigned __int8)off_6A86AC(&v19) ) break; if ( sub_63F7F0(&v19) ) break; LABEL_12: ++v7; LOBYTE(v24) = 0; v19 = &off_6A86A4; if ( v7 >= 4 ) { v14 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle"; goto LABEL_14; } } while ( 1 ) { v12 = (**(int (__stdcall ***)(_DWORD))v20)(v21); if ( v12 ) { if ( *(_WORD *)(v12 + 11) == a2 ) break; } if ( !sub_63F7F0(&v19) ) goto LABEL_12; } --dword_750CB8; v19 = &off_6A86A4; v24 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle"); result = v12; } else { v14 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle"; LABEL_14: --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, v14); result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545AF0) -------------------------------------------------------- int __thiscall sub_545AF0(void *this, int a2) { void *v2; // esi@1 unsigned __int16 v3; // ax@1 signed int v4; // edx@1 int v5; // ecx@2 int v6; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 8); v4 = 0; *((_WORD *)v2 + 24694) = v3; if ( v3 > 0u ) { v5 = (int)((char *)v2 + 49392); v6 = a2 + 12; do { *(_WORD *)(v5 - 2) = *(_WORD *)(v6 - 2); *(_DWORD *)v5 = *(_DWORD *)v6; ++v4; v6 += 6; v5 += 6; } while ( v4 < *((_WORD *)v2 + 24694) ); } ++*((_BYTE *)v2 + 364); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545B90) -------------------------------------------------------- int __thiscall sub_545B90(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_WORD *)v2 + 24694); if ( v3 + 1 <= 50 ) { *((_WORD *)v2 + 3 * v3 + 24695) = *(_WORD *)(a2 + 6); *(_DWORD *)((char *)v2 + 2 * (3 * (*((_WORD *)v2 + 24694))++ + 24696)) = *(_DWORD *)(a2 + 9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545C60) -------------------------------------------------------- signed int __thiscall sub_545C60(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 char v4; // al@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 276))(v2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); result = 6648; } else { v4 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 280))(v2, *(_WORD *)a2); --dword_750CB8; if ( v4 ) { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); result = 4481; } else { sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); result = 6649; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545D70) -------------------------------------------------------- signed int __thiscall sub_545D70(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 276))(v2) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 284))(v2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"); result = 4481; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"); result = 6656; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545E60) -------------------------------------------------------- signed __int16 __thiscall sub_545E60(void *this) { void *v1; // esi@1 unsigned int v2; // eax@2 signed __int16 v3; // si@4 signed __int16 result; // ax@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 276))(v1) && (v2 = *((_WORD *)v1 + 24691), v2 < 0x32) && (unsigned __int16)v2 < *((_WORD *)v1 + 24694) ) { v3 = *((_WORD *)v1 + 3 * v2 + 24695); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"); result = v3; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545F60) -------------------------------------------------------- char __thiscall sub_545F60(void *this) { void *v1; // esi@1 char v2; // bl@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_BYTE *)v1 + 49380); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00545FE0) -------------------------------------------------------- char __thiscall sub_545FE0(void *this, __int16 a2) { void *v2; // esi@1 signed int v3; // ebx@1 signed int v4; // eax@2 int v5; // ecx@3 int v6; // ebx@6 bool v7; // sf@6 unsigned __int8 v8; // of@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; if ( a2 != -1 ) { v4 = 0; if ( *((_WORD *)v2 + 24694) > 0u ) { v5 = (int)((char *)v2 + 49390); while ( v4 < 50 ) { if ( *(_WORD *)v5 == a2 ) { *((_WORD *)v2 + 24691) = v4; *((_BYTE *)v2 + 49380) = v3; *((_DWORD *)v2 + 12346) = dword_14D129E8 + 600; dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); return v3; } v4 += v3; v6 = *((_WORD *)v2 + 24694); v5 += 6; v8 = __OFSUB__(v4, v6); v7 = v4 - v6 < 0; v3 = 1; if ( !(v7 ^ v8) ) break; } } } dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00546100) -------------------------------------------------------- char __cdecl sub_546100() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mh_isEndureGradeDown"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mh_isEndureGradeDown"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mh_isEndureGradeDown"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00546150) -------------------------------------------------------- char __thiscall sub_546150(void *this) { void *v1; // esi@1 char v2; // bl@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_BYTE *)v1 + 49692); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005461B0) -------------------------------------------------------- int __thiscall sub_5461B0(void *this) { void *v1; // esi@1 signed int v2; // ebx@1 int (__thiscall *v3)(_DWORD); // eax@1 int v4; // edx@3 int (__thiscall *v5)(_DWORD); // eax@3 __int16 v6; // ax@3 int v7; // edi@3 signed int v8; // esi@4 int v9; // eax@5 int v10; // ecx@5 int v11; // edx@5 int v12; // eax@6 int v13; // eax@10 __int16 v14; // si@12 int v15; // ebx@12 signed int v16; // eax@13 char *v17; // esi@22 unsigned int *v18; // eax@24 int v19; // eax@26 unsigned __int16 v20; // di@26 int v21; // eax@26 unsigned __int16 v22; // ax@26 int v23; // eax@27 void *v24; // ecx@27 int v26; // [sp-4h] [bp-5Ch]@2 char *v27; // [sp+10h] [bp-48h]@3 char *v28; // [sp+14h] [bp-44h]@3 char *v29; // [sp+18h] [bp-40h]@3 char *v30; // [sp+1Ch] [bp-3Ch]@3 int (**v31)(); // [sp+20h] [bp-38h]@5 int v32; // [sp+24h] [bp-34h]@5 int v33; // [sp+28h] [bp-30h]@8 int v34; // [sp+2Ch] [bp-2Ch]@8 int v35; // [sp+30h] [bp-28h]@1 int v36; // [sp+34h] [bp-24h]@3 void *v37; // [sp+38h] [bp-20h]@1 int v38; // [sp+3Ch] [bp-1Ch]@11 int v39; // [sp+40h] [bp-18h]@4 int v40; // [sp+44h] [bp-14h]@24 int v41; // [sp+48h] [bp-10h]@13 int v42; // [sp+54h] [bp-4h]@1 v1 = this; v37 = this; v35 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; v2 = 1; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 148); v42 = 0; if ( (unsigned __int8)v3(v1) ) { v27 = (char *)v1 + 1452; v28 = (char *)v1 + 12824; v4 = *(_DWORD *)v1; v29 = (char *)v1 + 24196; v5 = *(int (__thiscall **)(_DWORD))(v4 + 132); v30 = (char *)v1 + 35568; v6 = v5(v1); v7 = sub_54DE90(&unk_13253630, v6); v36 = v7; if ( v7 ) { *((_BYTE *)v1 + 49692) = 0; *((_BYTE *)v1 + 49700) = 0; v8 = 0; v39 = 0; do { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1176))(v7); v10 = (int)(&v27)[4 * v8]; v31 = &off_6A86A4; v32 = v10; v11 = *(_DWORD *)v10; if ( v9 ) v12 = (*(int (__stdcall **)(int))(v11 + 4))(v9); else v12 = (*(int (**)(void))(v11 + 8))(); v34 = v12; v31 = (int (**)())&off_6A86AC; LOBYTE(v42) = 1; v33 = 0; if ( (unsigned __int8)off_6A86AC(&v31) || sub_63F7F0(&v31) ) { do { v13 = (**(int (__stdcall ***)(_DWORD))v32)(v33); if ( v13 ) { v38 = *(_DWORD *)(v13 + 112); if ( v38 ) { v14 = *(_WORD *)(v13 + 8); v15 = v13 + 8; if ( v14 != -1 ) { sub_5CF620(&v41); LOBYTE(v42) = 2; v16 = -1; while ( v16 >= -1 ) { ++v16; v41 = v16; if ( v16 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v16) == v14 ) goto LABEL_19; } v41 = -10; LABEL_19: if ( sub_417060(&v41) != *(_DWORD *)(dword_AA07F4 + 40) ) { if ( v41 >= 0 ) { if ( v41 < dword_AA0898 ) { v17 = (char *)dword_AA0894 + 8 * v41; if ( v17 ) { if ( *((_DWORD *)v17 + 1) ) { v18 = (unsigned int *)(*(int (__stdcall **)(int))(*(_DWORD *)v38 + 140))(v15); if ( sub_4A0510((int)&dword_D73D100, *(_WORD *)(*((_DWORD *)v17 + 1) + 143), v18, (int)&v40) ) { if ( (unsigned int)(v40 - 1) <= 2 ) { v19 = sub_541670((int)&dword_D73D100, *(_WORD *)(*((_DWORD *)v17 + 1) + 143)); v20 = *(_WORD *)(v19 + 2 * v40); v21 = sub_541670((int)&dword_D73D100, *(_WORD *)(*((_DWORD *)v17 + 1) + 143)); v22 = *(_WORD *)(v21 + 2 * v40 + 2); if ( v20 ) { v23 = 36000 * (v20 - v22) + dword_14D129E8 + 10; v24 = v37; if ( *((_DWORD *)v37 + 12424) > (unsigned int)v23 ) { *((_DWORD *)v37 + 12424) = v23; *((_BYTE *)v24 + 49692) = 1; } } } } } } } } } LOBYTE(v42) = 1; nullsub_2(&v41); } } } } while ( sub_63F7F0(&v31) ); v8 = v39; v7 = v36; v2 = 1; } v8 += v2; LOBYTE(v42) = 0; v31 = &off_6A86A4; v39 = v8; } while ( v8 < 4 ); } v26 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; } else { v26 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; } dword_750CB8 -= v2; v42 = -1; return sub_467660((int)&unk_D020420, v26); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // D73D100: using guessed type int dword_D73D100; // 14D129E8: using guessed type int dword_14D129E8; //----- (005464C0) -------------------------------------------------------- char __thiscall sub_5464C0(void *this, int a2) { void *v2; // edi@1 int (__thiscall *v3)(_DWORD); // eax@1 char result; // al@2 int v5; // edx@3 int (__thiscall *v6)(_DWORD); // eax@3 __int16 v7; // ax@3 int v8; // ebx@3 signed int v9; // esi@5 int v10; // eax@6 int v11; // ecx@6 int v12; // edx@6 int v13; // eax@7 int v14; // eax@11 int v15; // ebx@11 __int16 v16; // si@13 signed int v17; // eax@14 char *v18; // esi@23 int v19; // edx@25 unsigned int *v20; // eax@25 char *v21; // [sp+10h] [bp-48h]@3 char *v22; // [sp+14h] [bp-44h]@3 char *v23; // [sp+18h] [bp-40h]@3 char *v24; // [sp+1Ch] [bp-3Ch]@3 int (**v25)(); // [sp+20h] [bp-38h]@6 int v26; // [sp+24h] [bp-34h]@6 int v27; // [sp+28h] [bp-30h]@9 int v28; // [sp+2Ch] [bp-2Ch]@9 int v29; // [sp+30h] [bp-28h]@1 int v30; // [sp+34h] [bp-24h]@3 int v31; // [sp+38h] [bp-20h]@25 int v32; // [sp+3Ch] [bp-1Ch]@5 int v33; // [sp+40h] [bp-18h]@25 int v34; // [sp+44h] [bp-14h]@12 int v35; // [sp+48h] [bp-10h]@14 int v36; // [sp+54h] [bp-4h]@1 v2 = this; v29 = (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 148); v36 = 0; if ( (unsigned __int8)v3(v2) ) { v21 = (char *)v2 + 1452; v22 = (char *)v2 + 12824; v5 = *(_DWORD *)v2; v23 = (char *)v2 + 24196; v6 = *(int (__thiscall **)(_DWORD))(v5 + 132); v24 = (char *)v2 + 35568; v7 = v6(v2); v8 = sub_54DE90(&unk_13253630, v7); v30 = v8; if ( v8 ) { v9 = 0; *((_BYTE *)v2 + 49692) = 0; *((_BYTE *)v2 + 49700) = 0; v32 = 0; do { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1176))(v8); v11 = (int)(&v21)[4 * v9]; v25 = &off_6A86A4; v26 = v11; v12 = *(_DWORD *)v11; if ( v10 ) v13 = (*(int (__stdcall **)(int))(v12 + 4))(v10); else v13 = (*(int (**)(void))(v12 + 8))(); v28 = v13; v25 = (int (**)())&off_6A86AC; LOBYTE(v36) = 1; v27 = 0; if ( (unsigned __int8)off_6A86AC(&v25) || sub_63F7F0(&v25) ) { do { v14 = (**(int (__stdcall ***)(_DWORD))v26)(v27); v15 = v14; if ( v14 ) { v34 = *(_DWORD *)(v14 + 112); if ( v34 ) { v16 = *(_WORD *)(v14 + 8); if ( v16 != -1 ) { sub_5CF620(&v35); LOBYTE(v36) = 2; v17 = -1; while ( v17 >= -1 ) { ++v17; v35 = v17; if ( v17 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v17) == v16 ) goto LABEL_20; } v35 = -10; LABEL_20: if ( sub_417060(&v35) != *(_DWORD *)(dword_AA07F4 + 40) ) { if ( v35 >= 0 ) { if ( v35 < dword_AA0898 ) { v18 = (char *)dword_AA0894 + 8 * v35; if ( v18 ) { if ( *((_DWORD *)v18 + 1) ) { v19 = *(_DWORD *)v34; v31 = *(_BYTE *)(v15 + 37); v20 = (unsigned int *)(*(int (__stdcall **)(int))(v19 + 140))(v15 + 8); if ( sub_4A0510((int)&dword_D73D100, *(_WORD *)(*((_DWORD *)v18 + 1) + 143), v20, (int)&v33) ) { if ( v31 != v33 ) { (*(void (__stdcall **)(int, int))(*(_DWORD *)v34 + 152))(v15, v33); if ( *(_BYTE *)(v15 + 10) & 1 ) { *((_BYTE *)v2 + 4 * *((_BYTE *)v2 + 49700) + 49704) = 0; *((_BYTE *)v2 + 4 * *((_BYTE *)v2 + 49700) + 49703) = v33; *(_WORD *)((char *)v2 + 4 * (*((_BYTE *)v2 + 49700))++ + 49701) = *(_WORD *)(v15 + 11); *(_BYTE *)a2 = 1; } } } } } } } } LOBYTE(v36) = 1; nullsub_2(&v35); } } } } while ( sub_63F7F0(&v25) ); v8 = v30; v9 = v32; } ++v9; LOBYTE(v36) = 0; v25 = &off_6A86A4; v32 = v9; } while ( v9 < 4 ); --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 1; } else { --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 0; } } else { --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // D73D100: using guessed type int dword_D73D100; //----- (00546810) -------------------------------------------------------- signed int __thiscall sub_546810(void *this, int a2, signed int a3) { void *v3; // esi@1 signed int v4; // ebx@2 signed int result; // eax@5 int v6; // eax@6 int v7; // esi@6 __int16 v8; // si@12 signed int v9; // eax@13 int v10; // eax@20 int v11; // eax@21 v3 = this; if ( !a2 || (v4 = a3) == 0 ) return 5897; if ( !(unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 732))( *(_WORD *)a3, *(_BYTE *)(a3 + 2)) && !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a2 + 696))( a2, *(_WORD *)v4, *(_BYTE *)(v4 + 2)) ) return 5902; v6 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v3 + 84))(v3, *(_WORD *)v4); v7 = v6; if ( !v6 ) return 5904; if ( *(_BYTE *)(v6 + 37) >= 2u ) return 5903; if ( sub_4011C0( &unk_AF09DA8, (unsigned __int64)(signed __int64)*(float *)(v6 + 17) - **(_DWORD **)(a2 + 102), (unsigned __int64)(signed __int64)*(float *)(v6 + 21) - *(_DWORD *)(*(_DWORD *)(a2 + 102) + 4)) > 200 ) return 5901; v8 = *(_WORD *)(v7 + 8); if ( -1 == v8 ) return 5897; sub_5CF620(&a3); v9 = -1; while ( v9 >= -1 ) { ++v9; a3 = v9; if ( v9 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v9) == v8 ) goto LABEL_19; } a3 = -10; LABEL_19: if ( sub_417060(&a3) == *(_DWORD *)(dword_AA07F4 + 40) || (v10 = sub_5132E0((int)&dword_AA07C0, (int)&a3)) == 0 || (v11 = *(_DWORD *)(v10 + 4)) == 0 ) { nullsub_2(&a3); return 5897; } if ( *(_BYTE *)(v4 + 2) < *(_BYTE *)(v11 + 146) ) { nullsub_2(&a3); result = 5896; } else { nullsub_2(&a3); result = 5905; } return result; } // AA07C0: using guessed type int dword_AA07C0; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; //----- (00546A60) -------------------------------------------------------- char __thiscall sub_546A60(void *this, int a2, char *a3, char *a4, char *a5, signed int a6, char a7, char *a8) { void *v8; // edi@1 char *v9; // edx@1 int v10; // eax@1 signed int v11; // ecx@1 char *v12; // ecx@3 char v13; // al@5 int v14; // eax@11 signed int v15; // ecx@11 void *v16; // esi@13 void (__thiscall *v17)(_DWORD); // eax@13 int v18; // eax@13 int v19; // ecx@14 int v20; // eax@14 int v21; // ecx@14 int v22; // eax@14 int v23; // eax@15 char *v24; // ecx@15 int v25; // eax@15 int v27; // ecx@18 int v28; // eax@18 _BYTE *v29; // eax@18 int v30; // eax@19 int v31; // ecx@20 _BYTE *v32; // ecx@20 signed int v33; // eax@20 char *v34; // ST20_4@24 int v35; // eax@24 int v36; // ecx@24 int (__thiscall *v37)(_DWORD); // eax@24 const char *v38; // eax@24 int (__thiscall *v39)(_DWORD); // eax@24 int v40; // eax@24 int v41; // eax@24 int v42; // edx@24 int v43; // eax@24 unsigned int v44; // [sp-4h] [bp-29Ch]@1 int (__stdcall **v45)(int, int); // [sp+10h] [bp-288h]@15 int v46; // [sp+14h] [bp-284h]@15 int (__thiscall *v47)(int, int, int, int); // [sp+18h] [bp-280h]@15 char *v48; // [sp+1Ch] [bp-27Ch]@15 int v49; // [sp+20h] [bp-278h]@15 __int16 v50; // [sp+24h] [bp-274h]@15 char *v51; // [sp+28h] [bp-270h]@1 char *v52; // [sp+2Ch] [bp-26Ch]@1 char *v53; // [sp+30h] [bp-268h]@1 int v54; // [sp+34h] [bp-264h]@1 char *v55; // [sp+38h] [bp-260h]@1 char v56; // [sp+3Ch] [bp-25Ch]@15 __int16 v57; // [sp+23Ch] [bp-5Ch]@24 char v58; // [sp+23Eh] [bp-5Ah]@24 int v59; // [sp+24Ah] [bp-4Eh]@24 int v60; // [sp+24Eh] [bp-4Ah]@24 int v61; // [sp+252h] [bp-46h]@24 int v62; // [sp+256h] [bp-42h]@24 int v63; // [sp+25Ah] [bp-3Eh]@24 int v64; // [sp+25Eh] [bp-3Ah]@24 int v65; // [sp+262h] [bp-36h]@24 char v66; // [sp+266h] [bp-32h]@24 char v67; // [sp+267h] [bp-31h]@24 char v68; // [sp+27Bh] [bp-1Dh]@24 char v69[4]; // [sp+27Ch] [bp-1Ch]@15 int v70; // [sp+280h] [bp-18h]@15 int v71; // [sp+284h] [bp-14h]@15 unsigned int v72; // [sp+288h] [bp-10h]@1 int v73; // [sp+294h] [bp-4h]@1 int v74; // [sp+298h] [bp+0h]@1 v72 = (unsigned int)&v74 ^ __security_cookie; v44 = (unsigned int)&v74 ^ __security_cookie; v8 = this; v55 = a3; v54 = a2; v51 = a8; v53 = a4; v52 = a5; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse"; dword_750AB8[dword_750CB8++] = -1; v9 = v52; *((_DWORD *)v8 + 361) = 0; *((_WORD *)v8 + 724) = 1; *((_BYTE *)v8 + 372) = 5; *(_WORD *)((char *)v8 + 373) = 0; *((_BYTE *)v8 + 364) = 0; *(_DWORD *)((char *)v8 + 353) = 0; *(_DWORD *)((char *)v8 + 357) = 0; v73 = 0; *((_BYTE *)v8 + 361) = 0; strncpy((char *)v8 + 353, v9, 8u); *((_BYTE *)v8 + 361) = 0; *((_BYTE *)v8 + 365) = strncmp((const char *)v8 + 353, byte_6A492E, 8u) == 0; *((_BYTE *)v8 + 363) = 0; v10 = (int)((char *)v8 + 46944); v11 = 294; do { *(_WORD *)(v10 - 4) = -1; *(_DWORD *)v10 = 0; v10 += 8; --v11; } while ( v11 ); v12 = v53; *((_BYTE *)v8 + 49380) = 0; *((_WORD *)v8 + 24694) = 0; *((_DWORD *)v8 + 83) = 0; *((_DWORD *)v8 + 84) = 0; *((_DWORD *)v8 + 85) = 0; *((_DWORD *)v8 + 86) = 0; *((_DWORD *)v8 + 87) = 0; *((_BYTE *)v8 + 352) = 0; strncpy((char *)v8 + 332, v12, 0x14u); *((_BYTE *)v8 + 352) = 0; if ( !strncmp((const char *)v8 + 332, byte_6A492E, 0x14u) ) *((_BYTE *)v8 + 332) = 0; v13 = a6; if ( a6 <= 99 ) { if ( a6 < 1 ) v13 = 1; } else { v13 = 99; } *((_BYTE *)v8 + 362) = v13 + 5; *((_BYTE *)v8 + 1341) = a7; memset((char *)v8 + 1342, 0, 0x65u); strncpy((char *)v8 + 1342, v51, 0x64u); *((_BYTE *)v8 + 1442) = 0; if ( !strncmp((const char *)v8 + 1342, byte_6A492E, 0x64u) ) *((_BYTE *)v8 + 1342) = 0; *((_BYTE *)v8 + 49692) = 0; *((_DWORD *)v8 + 12424) = 100 * dword_14D129E8 / 0x64u + 610; v14 = (int)((char *)v8 + 792); v15 = 104; do { *(_DWORD *)(v14 - 416) = 0; *(_DWORD *)v14 = 65535; v14 += 4; --v15; } while ( v15 ); v16 = (void *)v54; *((_DWORD *)v8 + *((_BYTE *)v8 + 372) + 94) = v54; *((_DWORD *)v8 + *((_BYTE *)v8 + 372) + 198) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v16 + 836))( v16, v44); v17 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 444); ++*((_BYTE *)v8 + 372); v17(v8); v18 = *(_DWORD *)((char *)v16 + 122); if ( !v18 || (*((_DWORD *)v8 + 322) = *(_DWORD *)v18, *((_DWORD *)v8 + 323) = *(_DWORD *)(v18 + 4), *((_DWORD *)v8 + 324) = *(_DWORD *)(v18 + 8), v19 = *(_DWORD *)((char *)v8 + 102), *((_BYTE *)v8 + 1308) = **(_BYTE **)((char *)v16 + 106), v20 = **(_DWORD **)((char *)v16 + 102), *(_DWORD *)v19 = v20, v21 = *(_DWORD *)((char *)v8 + 102), *((_DWORD *)v8 + 325) = v20, v22 = *(_DWORD *)(*(_DWORD *)((char *)v16 + 102) + 4), *(_DWORD *)(v21 + 4) = v22, *((_DWORD *)v8 + 326) = v22, sub_465790(v8, 0)) ) goto LABEL_17; v23 = *(_DWORD *)((char *)v8 + 102); v24 = v55; *((_DWORD *)v8 + 325) = *(_DWORD *)v23; *((_DWORD *)v8 + 326) = *(_DWORD *)(v23 + 4); v71 = 0; v70 = 0; *(_DWORD *)v69 = 0; strncpy(v69, v24, 0xCu); sub_465590((int)&v56, (int)v69); v45 = &off_6A4700; v46 = (int)&unk_CFCF380; v47 = sub_4521E0; v48 = &v56; v49 = 0; v50 = -1; LOBYTE(v73) = 2; sub_43C470((int)&unk_CFCF380, (int)&v45); v25 = v49; LOBYTE(v73) = 1; v45 = &off_6A2544; *((_DWORD *)v8 + 92) = v49; if ( !v25 || (*(_DWORD *)((char *)v8 + 1309) = *((_DWORD *)v8 + 322), *(_DWORD *)((char *)v8 + 1313) = *((_DWORD *)v8 + 323), *(_DWORD *)((char *)v8 + 1317) = *((_DWORD *)v8 + 324), v27 = *((_DWORD *)v8 + 326), *(_DWORD *)((char *)v8 + 1321) = *((_DWORD *)v8 + 325), *(_DWORD *)((char *)v8 + 1325) = v27, v28 = dword_8622C4 & (dword_8622C0 + 1), dword_8622C0 = v28, v29 = &byte_85A2C0[256 * v28], *(_DWORD *)v29 = *((_DWORD *)v8 + 322), *((_DWORD *)v29 + 1) = *((_DWORD *)v8 + 323), *((_DWORD *)v29 + 2) = *((_DWORD *)v8 + 324), v29[12] = 0, !sub_63AB60(&unk_CFCF398, v29)) || (v30 = sub_63AB60(&unk_CFCF398, v55)) == 0 ) goto LABEL_27; v31 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v31; v32 = &byte_85A2C0[256 * v31]; *(_DWORD *)v32 = *(_DWORD *)v30; *((_DWORD *)v32 + 1) = *(_DWORD *)(v30 + 4); *((_DWORD *)v32 + 2) = *(_DWORD *)(v30 + 8); v32[12] = 0; v33 = sub_639620(&unk_14D20404, v32); if ( v33 == -1 ) LOWORD(v33) = -1; v33 = (unsigned __int16)v33; if ( (unsigned __int16)v33 >= dword_14D20400 || !*(_DWORD *)(dword_14D203FC + 4 * v33) ) { LABEL_27: LOBYTE(v73) = 0; sub_4646E0((int)&v56); LABEL_17: --dword_750CB8; v73 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse"); return 0; } v34 = v55; *(_DWORD *)((char *)v8 + 1337) = 0; *(_DWORD *)((char *)v8 + 1333) = 0; *(_DWORD *)((char *)v8 + 1329) = 0; strncpy((char *)v8 + 1329, v34, 0xCu); v35 = *(_DWORD *)((char *)v16 + 118); v36 = *(_DWORD *)((char *)v8 + 118); *(_DWORD *)v36 = *(_DWORD *)v35; *(_DWORD *)(v36 + 4) = *(_DWORD *)(v35 + 4); v37 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 64); v63 = 0; v62 = 0; v61 = 0; v60 = 0; v59 = 0; v38 = (const char *)v37(v8); strncpy(&v67, v38, 0x14u); v39 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 1744); v68 = 0; v40 = v39(v16); v59 = *(_DWORD *)(v40 + 2); v60 = *(_DWORD *)(v40 + 6); v61 = *(_DWORD *)(v40 + 10); v62 = *(_DWORD *)(v40 + 14); v63 = *(_DWORD *)(v40 + 18); v41 = *(_DWORD *)((char *)v16 + 102); v64 = *(_DWORD *)v41; v42 = *(_DWORD *)(v41 + 4); v43 = *(_DWORD *)((char *)v16 + 106); v65 = v42; LOWORD(v42) = *((_WORD *)v8 + 2); v66 = *(_BYTE *)v43; v57 = v42; sub_56C420(v16, (int)&v58); memcpy(*(void **)((char *)v8 + 49375), &v57, 0x40u); LOBYTE(v73) = 0; sub_4646E0((int)&v56); --dword_750CB8; v73 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse"); return 1; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00547020) -------------------------------------------------------- void *__thiscall sub_547020(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6D7F34; sub_4BC920((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6D7F34: using guessed type int (__stdcall *off_6D7F34)(int, int, int); //----- (00547050) -------------------------------------------------------- unsigned __int16 __thiscall sub_547050(void *this, unsigned __int16 a2) { unsigned __int16 result; // ax@1 result = a2; if ( a2 < 0x1F40u ) *(_WORD *)this = a2; else result = -1; return result; } //----- (00547080) -------------------------------------------------------- int __thiscall sub_547080(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x5DCu ) { result = a2 + 8000; *(_WORD *)this = a2 + 8000; } else { result = 65535; } return result; } //----- (005470B0) -------------------------------------------------------- int __thiscall sub_5470B0(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x3E8u ) { result = a2 + 9500; *(_WORD *)this = a2 + 9500; } else { result = 65535; } return result; } //----- (005470E0) -------------------------------------------------------- int __thiscall sub_5470E0(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0xBB8u ) { result = a2 + 10500; *(_WORD *)this = a2 + 10500; } else { result = 65535; } return result; } //----- (00547110) -------------------------------------------------------- int __thiscall sub_547110(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0xE00u ) { result = a2 + 13500; *(_WORD *)this = a2 + 13500; } else { result = 65535; } return result; } //----- (00547140) -------------------------------------------------------- int __thiscall sub_547140(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x800u ) { result = a2 + 17340; *(_WORD *)this = a2 + 17340; } else { result = 65535; } return result; } //----- (00547170) -------------------------------------------------------- int __thiscall sub_547170(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x100u ) { result = a2 + 17084; *(_WORD *)this = a2 + 17084; } else { result = 65535; } return result; } //----- (005471A0) -------------------------------------------------------- int __thiscall sub_5471A0(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x3E8u ) { result = a2 + 19388; *(_WORD *)this = a2 + 19388; } else { result = 65535; } return result; } //----- (005471D0) -------------------------------------------------------- int __thiscall sub_5471D0(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0xFAu ) { result = a2 + 20388; *(_WORD *)this = a2 + 20388; } else { result = 65535; } return result; } //----- (00547200) -------------------------------------------------------- int __thiscall sub_547200(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x3E8u ) { result = a2 + 20638; *(_WORD *)this = a2 + 20638; } else { result = 65535; } return result; } //----- (00547230) -------------------------------------------------------- int __thiscall sub_547230(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x1F4u ) { result = a2 + 21638; *(_WORD *)this = a2 + 21638; } else { result = 65535; } return result; } //----- (00547260) -------------------------------------------------------- int __thiscall sub_547260(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x3E8u ) { result = a2 + 22138; *(_WORD *)this = a2 + 22138; } else { result = 65535; } return result; } //----- (00547290) -------------------------------------------------------- int __thiscall sub_547290(void *this, int a2) { int result; // eax@2 if ( (unsigned __int16)a2 < 0x5DCu ) { result = a2 + 23638; *(_WORD *)this = a2 + 23638; } else { result = 65535; } return result; } //----- (005472C0) -------------------------------------------------------- void __thiscall sub_5472C0(int this) { *(_DWORD *)(this + 8200) = 0; } //----- (005472D0) -------------------------------------------------------- int __thiscall sub_5472D0(int this) { int v1; // esi@1 int v2; // eax@1 int result; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 238; sub_4C81E0((void *)this, 237); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 250) = *(_DWORD *)v1; *(_DWORD *)(v1 + 254) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 250) = **(_WORD **)(v1 + 250) & 0xFC06 | 6; *(_BYTE *)(*(_DWORD *)(v1 + 254) + 194) = 2; *(_DWORD *)(*(_DWORD *)(v1 + 254) + 190) = 0; result = v1; *(_BYTE *)(*(_DWORD *)(v1 + 254) + 195) = 0; return result; } //----- (00547360) -------------------------------------------------------- int __thiscall sub_547360(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 152; sub_4C81E0((void *)this, 151); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 164) = *(_DWORD *)v1; *(_DWORD *)(v1 + 168) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 164) = **(_WORD **)(v1 + 164) & 0xFC08 | 8; return v1; } //----- (005473D0) -------------------------------------------------------- int __thiscall sub_5473D0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 67; sub_4C81E0((void *)this, 66); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 79) = *(_DWORD *)v1; *(_DWORD *)(v1 + 83) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 79) = **(_WORD **)(v1 + 79) & 0xFC13 | 0x13; return v1; } //----- (00547430) -------------------------------------------------------- int __thiscall sub_547430(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 51; sub_4C81E0((void *)this, 50); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 63) = *(_DWORD *)v1; *(_DWORD *)(v1 + 67) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 63) = **(_WORD **)(v1 + 63) & 0xFC11 | 0x11; *(_WORD *)(*(_DWORD *)(v1 + 67) + 45) = 1000; return v1; } //----- (005474A0) -------------------------------------------------------- int __thiscall sub_5474A0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 51; sub_4C81E0((void *)this, 50); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 63) = *(_DWORD *)v1; *(_DWORD *)(v1 + 67) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 63) = **(_WORD **)(v1 + 63) & 0xFC0F | 0xF; *(_WORD *)(*(_DWORD *)(v1 + 67) + 46) = 1000; return v1; } //----- (00547510) -------------------------------------------------------- int __thiscall sub_547510(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 18; sub_4C81E0((void *)this, 17); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 30) = *(_DWORD *)v1; *(_DWORD *)(v1 + 34) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 30) = **(_WORD **)(v1 + 30) & 0xFC0A | 0xA; return v1; } //----- (00547570) -------------------------------------------------------- int __thiscall sub_547570(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 19; sub_4C81E0((void *)this, 18); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 31) = *(_DWORD *)v1; *(_DWORD *)(v1 + 35) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 31) = **(_WORD **)(v1 + 31) & 0xFC0C | 0xC; return v1; } //----- (005475D0) -------------------------------------------------------- int __thiscall sub_5475D0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 66; sub_4C81E0((void *)this, 65); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 78) = *(_DWORD *)v1; *(_DWORD *)(v1 + 82) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 78) = **(_WORD **)(v1 + 78) & 0xFC1C | 0x1C; return v1; } //----- (00547630) -------------------------------------------------------- int __thiscall sub_547630(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 155356) = a2; return result; } //----- (00547640) -------------------------------------------------------- void __thiscall sub_547640(int this) { *(_BYTE *)(this + 23825) &= 0xEFu; } //----- (00547650) -------------------------------------------------------- void __thiscall sub_547650(int this) { *(_BYTE *)(this + 23825) &= 0xDFu; } //----- (00547660) -------------------------------------------------------- char __thiscall sub_547660(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 160920) = a2; return result; } //----- (00547670) -------------------------------------------------------- int __thiscall sub_547670(int this, int a2) { int result; // eax@1 int v3; // edx@1 result = a2; v3 = *(_DWORD *)(this + 32650); if ( a2 ) { *(_WORD *)(v3 + 230) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 161708) = a2; } else { *(_WORD *)(v3 + 230) = -1; *(_DWORD *)(this + 161708) = a2; } return result; } //----- (005476B0) -------------------------------------------------------- int __thiscall sub_5476B0(int this, char a2) { int result; // eax@1 LOBYTE(result) = a2; *(_BYTE *)(*(_DWORD *)(this + 32650) + 232) = a2; *(_BYTE *)(this + 161705) = a2; return result; } //----- (005476D0) -------------------------------------------------------- int __thiscall sub_5476D0(void *this) { int v1; // esi@1 v1 = (int)this; sub_641510((int)((char *)this + 25024)); sub_63FAE0(v1 + 20960); sub_63F9A0(v1 + 20376); sub_63F880(v1 + 3668); return sub_63F930(v1); } //----- (00547760) -------------------------------------------------------- int __cdecl sub_547760() { int result; // eax@1 LOBYTE(word_13244DBC) = -1; *(__int16 *)((char *)&word_13244DBC + 1) = -1; memset(&unk_13244C70, 0, 0x63u); sub_640310(); byte_13244DC0 = 60; dword_13244DC2 = (int)&unk_3E803E8; byte_13244DC6 = 0; dword_13244DCA = 0; dword_13244DCE = (int)&unk_3E803E8; dword_13244DD2 = (int)&unk_4000400; dword_13244DD6 = 1000; dword_13244DDA = (int)&unk_3E803E8; dword_13244DDE = (int)&unk_3E803E8; word_13244DE2 = 1000; word_1324B27C = -1; dword_1324B27E = -1; byte_1324B284 = 0; dword_1324B285 = dword_1324B289; dword_1324B29D = 0; dword_1324B299 = 0; dword_1324B295 = 0; dword_1324B291 = 0; *(_DWORD *)dword_1324B28D = 0; strncpy(dword_1324B28D, byte_6A492E, 0x14u); dword_1324B2A1 = -1; word_1324B2A5 = 0; result = sub_4A21A0((int)&unk_13244FA0, -1); dword_13244CD8 = -1; dword_13244CDC = -1; dword_13245088 = -1; dword_1324508C = -1; byte_13244DE4 = 0; word_13244DEA = 0; byte_13244DEC = 0; dword_13244DE6 = 1000; return result; } // 13244CD8: using guessed type int dword_13244CD8; // 13244CDC: using guessed type int dword_13244CDC; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DC0: using guessed type char byte_13244DC0; // 13244DC2: using guessed type int dword_13244DC2; // 13244DC6: using guessed type char byte_13244DC6; // 13244DCA: using guessed type int dword_13244DCA; // 13244DCE: using guessed type int dword_13244DCE; // 13244DD2: using guessed type int dword_13244DD2; // 13244DD6: using guessed type int dword_13244DD6; // 13244DDA: using guessed type int dword_13244DDA; // 13244DDE: using guessed type int dword_13244DDE; // 13244DE2: using guessed type __int16 word_13244DE2; // 13244DE4: using guessed type char byte_13244DE4; // 13244DE6: using guessed type int dword_13244DE6; // 13244DEA: using guessed type __int16 word_13244DEA; // 13244DEC: using guessed type char byte_13244DEC; // 13245088: using guessed type int dword_13245088; // 1324508C: using guessed type int dword_1324508C; // 1324B27C: using guessed type __int16 word_1324B27C; // 1324B27E: using guessed type int dword_1324B27E; // 1324B284: using guessed type char byte_1324B284; // 1324B285: using guessed type int dword_1324B285; // 1324B289: using guessed type int dword_1324B289; // 1324B291: using guessed type int dword_1324B291; // 1324B295: using guessed type int dword_1324B295; // 1324B299: using guessed type int dword_1324B299; // 1324B29D: using guessed type int dword_1324B29D; // 1324B2A1: using guessed type int dword_1324B2A1; // 1324B2A5: using guessed type __int16 word_1324B2A5; //----- (00547890) -------------------------------------------------------- void __thiscall sub_547890(int this) { int v1; // esi@1 v1 = this; nullsub_2((void *)(this + 28)); nullsub_2((void *)(v1 + 16)); sub_5859F0((void *)(v1 + 8)); sub_5859F0((void *)v1); } //----- (00547900) -------------------------------------------------------- void *__thiscall sub_547900(void *this) { void *v1; // esi@1 void *result; // eax@2 int v3; // eax@10 char v4; // [sp+4h] [bp-104h]@5 unsigned int v5; // [sp+104h] [bp-4h]@1 int v6; // [sp+108h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = this; if ( dword_74971C >= 3 ) { if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v4, "%.255s", "Too many Broadcast Nest"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v4, dword_13253960); } if ( byte_7493ED && byte_13253AE4 ) { if ( dword_13253960 ) { v3 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v3); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } } *(_BYTE *)v1 = 0; result = v1; } else { ++dword_74971C; *(_BYTE *)this = 1; result = this; } return result; } // 7493ED: using guessed type char byte_7493ED; // 74971C: using guessed type int dword_74971C; // 86FEB8: using guessed type int __security_cookie; // 13253AE4: using guessed type char byte_13253AE4; //----- (00547A10) -------------------------------------------------------- int __thiscall sub_547A10(int this, char a2) { int result; // eax@1 result = *(_DWORD *)(this + 3828); *(_BYTE *)result = a2; return result; } //----- (00547A30) -------------------------------------------------------- char __thiscall sub_547A30(int this) { return **(_BYTE **)(this + 3828); } //----- (00547A50) -------------------------------------------------------- int __thiscall sub_547A50(int this) { int v1; // esi@1 v1 = this; sub_6411A0(this); sub_641130(v1 + 3668); sub_641200(v1 + 20376); sub_6412D0(v1 + 20960); sub_641450(v1 + 25024); sub_48BAE0(v1 + 25872); return v1; } //----- (00547AF0) -------------------------------------------------------- int __thiscall sub_547AF0(void *this) { int v1; // esi@1 v1 = (int)this; sub_487A90((int)((char *)this + 25872)); sub_641510(v1 + 25024); sub_63FAE0(v1 + 20960); sub_63F9A0(v1 + 20376); sub_63F880(v1 + 3668); return sub_63F930(v1); } //----- (00547B90) -------------------------------------------------------- void __thiscall sub_547B90(int this) { int v1; // esi@1 v1 = this; nullsub_2((void *)(this + 1228)); nullsub_2((void *)(v1 + 20)); nullsub_2((void *)(v1 + 8)); } //----- (00547C10) -------------------------------------------------------- void __thiscall sub_547C10(int this) { int v1; // esi@1 v1 = this; sub_58D040((void *)(this + 376)); sub_58E230((void *)(v1 + 8)); } //----- (00547CA0) -------------------------------------------------------- int __thiscall sub_547CA0(void *this, const char *a2) { int result; // eax@2 int v3; // edi@4 unsigned int v4; // esi@4 char *v5; // ebx@4 int v6; // eax@5 int v7; // eax@6 if ( a2 ) { result = strcmp("-", a2); if ( result ) { v3 = 0; v4 = 0; v5 = (char *)this + 32816; do { v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))v5)(v5, v4); if ( v6 ) { v7 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v6 + 8)); if ( v7 ) { if ( !strcmp((const char *)(*(_DWORD *)v7 + 342), a2) ) ++v3; } } ++v4; } while ( v4 < 0x1E ); result = v3; } } else { result = 0; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (00547D60) -------------------------------------------------------- int __thiscall sub_547D60(int this, int a2, const void *a3) { return sub_50DFF0((void *)(this + 84520), a2, a3); } //----- (00547D70) -------------------------------------------------------- int __thiscall sub_547D70(void *this) { void *v1; // esi@1 v1 = this; sub_63FCA0((int)((char *)this + 34120)); sub_63FCA0((int)((char *)v1 + 22748)); sub_63FCA0((int)((char *)v1 + 11376)); return sub_63FCA0((int)((char *)v1 + 4)); } //----- (00547DF0) -------------------------------------------------------- void *__thiscall sub_547DF0(void *this) { void *v1; // esi@1 v1 = this; sub_4B8090(this); sub_4B80B0((char *)v1 + 8); sub_4B80A0((char *)v1 + 16); sub_4B80C0((char *)v1 + 40); sub_4B8AC0((int)((char *)v1 + 68)); sub_4B81B0((char *)v1 + 92); sub_4B81C0((char *)v1 + 100); sub_4B81D0((char *)v1 + 112); sub_4B81E0((char *)v1 + 120); sub_4B8200((char *)v1 + 136); sub_4B81A0((char *)v1 + 152); return v1; } //----- (00547EC0) -------------------------------------------------------- void __thiscall sub_547EC0(int this) { int v1; // esi@1 v1 = this; sub_4B8080((void *)(this + 152)); sub_4B8080((void *)(v1 + 136)); sub_4B8080((void *)(v1 + 120)); sub_4B8080((void *)(v1 + 112)); sub_4B8080((void *)(v1 + 100)); sub_4B8080((void *)(v1 + 92)); sub_4B8080((void *)(v1 + 68)); sub_4B8130(v1 + 40); sub_4B8080((void *)(v1 + 16)); sub_4B8080((void *)(v1 + 8)); sub_4B8080((void *)v1); } //----- (00547F90) -------------------------------------------------------- void *__thiscall sub_547F90(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_4BC920((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00547FD0) -------------------------------------------------------- FILE *__cdecl sub_547FD0() { return sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineAxialFlag::so_BroadcastLogout", 0); } //----- (00548000) -------------------------------------------------------- FILE *__thiscall sub_548000(void *this, int a2, int a3, int a4) { unsigned __int8 v4; // al@1 v4 = (*(int (**)(void))(*(_DWORD *)this + 1232))(); return sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_Disconnect", v4); } //----- (00548020) -------------------------------------------------------- int __thiscall sub_548020(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x2084u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_55C9D0); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { sub_55C9D0((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } //----- (00548080) -------------------------------------------------------- char __thiscall sub_548080(int this, int a2, int a3) { int v3; // edi@1 char result; // al@2 v3 = this; if ( a2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 3240))(a2) == *(_DWORD *)(this + 4) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 3300))(a2) == *(_DWORD *)(v3 + 8) ) { *(_DWORD *)(v3 + 12) = a2; result = 0; } else { result = 1; } return result; } //----- (005480D0) -------------------------------------------------------- int __thiscall sub_5480D0(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); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_WORD *)(this + 34) = *(_WORD *)(a2 + 34); *(_DWORD *)(this + 36) = *(_DWORD *)(a2 + 36); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); *(_DWORD *)(this + 48) = *(_DWORD *)(a2 + 48); *(_WORD *)(this + 52) = *(_WORD *)(a2 + 52); *(_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); *(_DWORD *)(this + 86) = *(_DWORD *)(a2 + 86); *(_WORD *)(this + 90) = *(_WORD *)(a2 + 90); memcpy((void *)(this + 92), (const void *)(a2 + 92), 0x26u); return result; } //----- (00548190) -------------------------------------------------------- int __stdcall sub_548190(int a1) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 1924))("Error in KeepFromChat"); } //----- (005481B0) -------------------------------------------------------- int __stdcall sub_5481B0(int a1) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 1924))("Success to silence"); } //----- (005481D0) -------------------------------------------------------- void __thiscall sub_5481D0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@3 int v4; // eax@4 int v5; // eax@7 int v6; // edi@7 int v7; // ST38_4@7 int v8; // ST30_4@7 int v9; // ST28_4@7 int v10; // ST20_4@7 int v11; // ST18_4@7 int v12; // eax@7 int v13; // ST08_4@7 __time32_t v14; // eax@7 __time32_t v15; // eax@7 __time32_t v16; // eax@7 __time32_t v17; // eax@7 __time32_t v18; // eax@7 __time32_t v19; // eax@7 __time32_t v20; // eax@7 __time32_t v21; // eax@7 __time32_t v22; // eax@7 __time32_t v23; // eax@7 __time32_t v24; // eax@7 __time32_t v25; // eax@7 __time32_t v26; // eax@7 __time32_t v27; // eax@7 __time32_t v28; // eax@7 v2 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1156))() ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2) != 3 ) { v3 = *(_DWORD *)((char *)v2 + 122); if ( v3 ) { v4 = *(_DWORD *)(v3 + 12); if ( v4 ) { if ( *(_BYTE *)(v4 + 54) ) { v5 = *(_DWORD *)((char *)v2 + 102); v6 = *((_WORD *)v2 + 2); v7 = *(_DWORD *)(v5 + 4); v8 = *(_DWORD *)v5; v9 = sub_418B00((int)byte_85A2C0, v3); v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 840))(v2); v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1388))(v2); v13 = sub_418B40((int)byte_85A2C0, v12); v14 = sub_418EA0((__time32_t)byte_14D133A0, a2); v15 = sub_418EA0(v14, (int)" : "); v16 = sub_418EA0(v15, v13); v17 = sub_418EA0(v16, (int)"["); v18 = sub_43B910(v17, v6); v19 = sub_418EA0(v18, (int)"/"); v20 = sub_43B910(v19, v11); v21 = sub_418EA0(v20, (int)"/"); v22 = sub_43B910(v21, v10); v23 = sub_418EA0(v22, (int)"]"); v24 = sub_418EA0(v23, v9); v25 = sub_418EA0(v24, (int)"/"); v26 = sub_43B910(v25, v8); v27 = sub_418EA0(v26, (int)"/"); v28 = sub_43B910(v27, v7); sub_418F20(v28, (int)&unk_13359E04); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_LogoutLog : NULLOp", 0); } } } } } //----- (00548330) -------------------------------------------------------- _UNKNOWN *__cdecl sub_548330() { return &unk_13244E80; } //----- (00548340) -------------------------------------------------------- char *__thiscall sub_548340(void *this) { return (char *)this + 339; } //----- (00548350) -------------------------------------------------------- int __thiscall sub_548350(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 7884) = a2; return result; } //----- (00548360) -------------------------------------------------------- FILE *__thiscall sub_548360(int this) { int v1; // edi@1 unsigned __int8 v2; // bl@1 FILE *result; // eax@1 unsigned __int8 v4; // bl@3 int v5; // ebx@7 int v6; // esi@7 int v7; // ebx@7 int v8; // esi@15 int v9; // esi@23 unsigned int v10; // esi@31 int v11; // esi@39 int v12; // eax@46 unsigned __int8 v13; // [sp+Bh] [bp-505h]@1 char v14; // [sp+Ch] [bp-504h]@37 char v15; // [sp+10Ch] [bp-404h]@29 char v16; // [sp+20Ch] [bp-304h]@5 char v17; // [sp+30Ch] [bp-204h]@21 char v18; // [sp+40Ch] [bp-104h]@13 unsigned int v19; // [sp+50Ch] [bp-4h]@1 int v20; // [sp+510h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v1 = this; v2 = *(_BYTE *)(this + 256); result = (FILE *)v2; v13 = *(_BYTE *)(this + 256); if ( v2 < (unsigned int)v2 + 16 ) { result = dword_13245218; do { v4 = v2 & 0xF; if ( byte_7493ED ) { if ( byte_1324539C ) { sprintf(&v16, "%.255s", "\t"); sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fputs(&v16, dword_13245218); result = dword_13245218; } } } v5 = 16 * v4; v6 = *(_DWORD *)(v5 + v1); v7 = v1 + v5; if ( byte_7493ED ) { if ( byte_1324539C ) { sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fprintf(dword_13245218, "%d", v6); result = dword_13245218; } } if ( byte_7493ED ) { if ( byte_1324539C ) { sprintf(&v18, "%.255s", &word_6B0394); sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fputs(&v18, dword_13245218); result = dword_13245218; } } } } v8 = *(_DWORD *)(v7 + 4); if ( byte_7493ED ) { if ( byte_1324539C ) { sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fprintf(dword_13245218, "%d", v8); result = dword_13245218; } } if ( byte_7493ED ) { if ( byte_1324539C ) { sprintf(&v17, "%.255s", "/"); sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fputs(&v17, dword_13245218); result = dword_13245218; } } } } v9 = *(_DWORD *)(v7 + 8); if ( byte_7493ED ) { if ( byte_1324539C ) { sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fprintf(dword_13245218, "%d", v9); result = dword_13245218; } } if ( byte_7493ED ) { if ( byte_1324539C ) { sprintf(&v15, "%.255s", &word_6B0394); sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fputs(&v15, dword_13245218); result = dword_13245218; } } } } v10 = (unsigned int)*(_WORD *)(v7 + 12) >> 10; if ( byte_7493ED ) { if ( byte_1324539C ) { sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fprintf(dword_13245218, "%d", v10); result = dword_13245218; } } if ( byte_7493ED ) { if ( byte_1324539C ) { sprintf(&v14, "%.255s", "/"); sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fputs(&v14, dword_13245218); result = dword_13245218; } } } } v11 = *(_WORD *)(v7 + 12) & 0x3FF; if ( byte_7493ED ) { if ( byte_1324539C ) { sub_418E40((__time32_t)byte_13245118); result = dword_13245218; if ( dword_13245218 ) { fprintf(dword_13245218, "%d", v11); result = dword_13245218; } } if ( byte_7493ED && byte_1324539C ) { if ( result ) { v12 = sub_418E40((__time32_t)byte_13245118); sub_654AB0(10, (FILE *)v12); fflush(dword_13245218); fclose(dword_13245218); result = 0; dword_13245218 = 0; } } } v2 = v13++ + 1; } while ( v13 < (unsigned int)*(_BYTE *)(v1 + 256) + 16 ); } return result; } // 6B0394: using guessed type __int16 word_6B0394; // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 1324539C: using guessed type char byte_1324539C; //----- (00548710) -------------------------------------------------------- __int16 __thiscall sub_548710(int this) { return *(_WORD *)(this + 8204); } //----- (00548720) -------------------------------------------------------- __int16 __thiscall sub_548720(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 8204) = a2; return result; } //----- (00548740) -------------------------------------------------------- char __thiscall sub_548740(void *this) { int v1; // edx@1 int v2; // eax@9 char result; // al@10 char v4; // [sp+0h] [bp-104h]@4 unsigned int v5; // [sp+100h] [bp-4h]@1 int v6; // [sp+104h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = dword_13244DAC[dword_74971C]; if ( *(_DWORD *)((char *)this + 4 * dword_74971C + 62) == v1 ) { if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v4, "%.255s", "List Wrong"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v4, dword_13253960); } if ( byte_7493ED && byte_13253AE4 ) { if ( dword_13253960 ) { v2 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v2); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } } result = 0; } else { *(_DWORD *)((char *)this + 4 * dword_74971C + 62) = v1; result = 1; } return result; } // 7493ED: using guessed type char byte_7493ED; // 74971C: using guessed type int dword_74971C; // 86FEB8: using guessed type int __security_cookie; // 13244DAC: using guessed type int dword_13244DAC[]; // 13253AE4: using guessed type char byte_13253AE4; //----- (00548840) -------------------------------------------------------- void __thiscall sub_548840(int this) { *(_BYTE *)(this + 9476) |= 8u; } //----- (00548850) -------------------------------------------------------- int __thiscall sub_548850(int this, int a2) { int result; // eax@1 int v3; // ecx@1 int v4; // edx@3 result = this; v3 = *(_DWORD *)(this + 8288); if ( v3 ) { *(_DWORD *)v3 = a2; if ( *(_DWORD *)(*(_DWORD *)(result + 8092) + 4) ) { v4 = *(_DWORD *)(result + 8096); if ( v4 ) { if ( *(_DWORD *)(result + 8100) ) result = (*(int (__stdcall **)(int, _DWORD))(**(_DWORD **)(result + 8100) + 180))( v4, **(_DWORD **)(result + 8288)); } } } return result; } //----- (005488B0) -------------------------------------------------------- int __thiscall sub_5488B0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // edi@1 int v5; // edi@1 int v6; // eax@1 int v7; // edx@1 int v8; // edi@1 int v9; // eax@1 int v10; // edx@1 int v11; // eax@2 int v12; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); v3 = (*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v2 + 32))(v2, v1, (char *)v1 + 7180); v4 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1140))(v1) + 5) + v3; v5 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1) + 348) + v4; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1); v7 = *(_DWORD *)v1; *((_DWORD *)v1 + 960) = ((signed int)((unsigned __int64)(v5 * (*(_DWORD *)(v6 + 2588) + *((_WORD *)v1 + 80163) - 1000) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v5 * (*(_DWORD *)(v6 + 2588) + *((_WORD *)v1 + 80163) - 1000) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v8 = (*(int (__thiscall **)(void *))(v7 + 1072))(v1) + 2384; v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1072))(v1); v10 = *(_DWORD *)v1; *((_DWORD *)v1 + 960) += *(_DWORD *)v8 + *(_DWORD *)(v9 + 344); if ( -1 != *(_WORD *)((*(int (__thiscall **)(void *))(v10 + 1072))(v1) + 3284) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1072))(v1); v12 = sub_418D40((int)&unk_14D159B0, *(_WORD *)(v11 + 3284)); if ( v12 ) *((_DWORD *)v1 + 960) = *(_DWORD *)(*(_DWORD *)v12 + 70); } return *((_DWORD *)v1 + 960); } //----- (005489B0) -------------------------------------------------------- unsigned int __thiscall sub_5489B0(void *this, unsigned __int16 a2, int a3, int a4, int a5, int a6) { return sub_448A40((int)((char *)this + 8108), a2, a3, a4, a5); } //----- (005489E0) -------------------------------------------------------- char __thiscall sub_5489E0(int this) { return *(_BYTE *)(this + 161512); } //----- (005489F0) -------------------------------------------------------- char __thiscall sub_5489F0(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 161512) = a2; return result; } //----- (00548A00) -------------------------------------------------------- int __thiscall sub_548A00(int this, int a2, signed int a3, signed int a4, int a5, int a6) { int v6; // esi@1 int result; // eax@1 v6 = this; *(_DWORD *)(this + 9692) = a2; *(_BYTE *)(this + 9696) = sub_576E80(a3); *(_BYTE *)(v6 + 9697) = sub_576E80(a4); *(_DWORD *)(v6 + 9700) = a5; *(_DWORD *)(v6 + 9704) = a6; *(_BYTE *)(v6 + 9698) = sub_576E80(a3 - a4); result = sub_576E80(a4 + a3); *(_BYTE *)(v6 + 9699) = result; return result; } //----- (00548A80) -------------------------------------------------------- char __thiscall sub_548A80(int this, int a2, signed int *a3) { int v3; // esi@1 int v4; // eax@3 int v5; // eax@4 int v6; // eax@6 int v7; // ebx@6 int v8; // edi@6 int v9; // eax@6 int v10; // edi@6 int v11; // eax@6 int v12; // ebx@6 int v13; // ST20_4@9 int v14; // ST1C_4@9 signed __int64 v15; // qax@9 int v16; // edi@9 int v17; // ebx@9 signed int v18; // eax@9 signed int v20; // [sp-Ch] [bp-18h]@7 v3 = this; if ( a2 ) { if ( a3 ) { v4 = *(_DWORD *)(this + 9692); if ( v4 ) { v5 = v4 - 1; if ( !v5 ) { *(_DWORD *)a2 = *(_BYTE *)(this + 9696); return 1; } if ( v5 == 1 ) { v6 = *(_DWORD *)(this + 102); v7 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(this + 9704); v8 = *(_DWORD *)v6 - *(_DWORD *)(this + 9700); LOWORD(v9) = sub_6396B0(&unk_14D42DC0, *a3); v10 = (signed int)sqrt((double)(v8 * v8 + v7 * v7)) + v9; LOWORD(v11) = sub_6396B0(&unk_14D42DC0, *(_BYTE *)(v3 + 9697)); v12 = v11; if ( (unsigned __int16)sub_427920(&unk_14D42DC0, 2) ) v20 = v12 + *(_BYTE *)(v3 + 9696); else v20 = *(_BYTE *)(v3 + 9696) - v12; v13 = sub_576E80(v20); v14 = sub_576E10(&unk_132546E8, v13) * (signed __int64)v10 / 1024; v15 = sub_576E40(&unk_132546E8, v13) * (signed __int64)v10; v16 = v14 + *(_DWORD *)(v3 + 9700); v17 = (unsigned __int64)(v15 / 1024) + *(_DWORD *)(v3 + 9704); *(_DWORD *)a2 = (unsigned __int8)sub_401220( &unk_AF09DA8, v14 + *(_DWORD *)(v3 + 9700) - **(_DWORD **)(v3 + 102), v17 - *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4)); v18 = (signed int)sqrt((double)((**(_DWORD **)(v3 + 102) - v16) * (**(_DWORD **)(v3 + 102) - v16) + (*(_DWORD *)(*(_DWORD *)(v3 + 102) + 4) - v17) * (*(_DWORD *)(*(_DWORD *)(v3 + 102) + 4) - v17))); if ( *a3 > v18 ) { *a3 = v18; return 1; } return 1; } } } } return 0; } //----- (00548C30) -------------------------------------------------------- int __thiscall sub_548C30(int this) { return *(_DWORD *)(this + 9692); } //----- (00548C40) -------------------------------------------------------- void __thiscall sub_548C40(int this) { *(_BYTE *)(this + 23824) |= 0x20u; } //----- (00548C50) -------------------------------------------------------- void __thiscall sub_548C50(int this) { *(_BYTE *)(this + 23824) &= 0xDFu; } //----- (00548C60) -------------------------------------------------------- FILE *__thiscall sub_548C60(int this) { int v1; // esi@1 FILE *result; // eax@1 int v3; // ecx@2 void *v4; // eax@3 int v5; // eax@5 v1 = this; result = *(FILE **)(this + 122); if ( result ) { v3 = result->_flag; if ( v3 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 6183; *(_DWORD *)((char *)v4 + 2) = *(_BYTE *)(v3 + 54); if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v1, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SendFieldAttribute : Packet Too Long", 6); } } } return result; } //----- (00548CD0) -------------------------------------------------------- char __thiscall sub_548CD0(int this) { return *(_BYTE *)(*(_DWORD *)(this + 8140) + 146); } //----- (00548CF0) -------------------------------------------------------- int __thiscall sub_548CF0(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 78) = a2; *(_DWORD *)(this + 82) = a3; return result; } //----- (00548D10) -------------------------------------------------------- __int64 __thiscall sub_548D10(int this) { return *(_QWORD *)(this + 78); } //----- (00548D20) -------------------------------------------------------- char __thiscall sub_548D20(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 86) = a2; return result; } //----- (00548D30) -------------------------------------------------------- bool __thiscall sub_548D30(int this, int a2) { return a2 && (*(_DWORD *)(this + 78) == *(_DWORD *)(a2 + 78) && *(_DWORD *)(this + 82) == *(_DWORD *)(a2 + 82) || *(_BYTE *)(this + 86) || *(_BYTE *)(a2 + 86)); } //----- (00548D70) -------------------------------------------------------- __int64 __stdcall sub_548D70(int a1, int a2) { return 0i64; } //----- (00548D80) -------------------------------------------------------- int __thiscall sub_548D80(int this, int a2, int a3) { int result; // eax@2 int v4; // [sp+0h] [bp-18h]@0 if ( a2 == 2 || a3 == 2 ) { result = 0; } else { if ( a3 == 1 ) result = *(_DWORD *)(this + 32661); else result = v4; } return result; } //----- (00548DD0) -------------------------------------------------------- int __userpurge sub_548DD0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 int result; // eax@1 signed int v7; // edi@3 signed int v8; // ebx@3 int v9; // eax@4 int v10; // eax@7 int v11; // edx@7 v5 = a1; result = *(_DWORD *)(a1 + 82) | *(_DWORD *)(a1 + 78); if ( !*(_QWORD *)(a1 + 78) ) { result = (*(int (**)(void))(*(_DWORD *)a1 + 304))(); if ( (_BYTE)result != 1 ) { sub_590E60((void *)v5); sub_590F40((void *)v5); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 2256))(v5, a3, a2); v7 = 3; v8 = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5) == 6 ) { v9 = sub_45CDE0(v5); v8 = *(_WORD *)(v5 + 160762); v7 = v9; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3188))(v5) ) sub_45D1C0(v5, v5, 2); else sub_45F070((void *)v5); } (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 3516))(v5); *(_DWORD *)(v5 + 78) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3504))(v5); v10 = *(_DWORD *)v5; *(_DWORD *)(v5 + 82) = v11; result = (*(int (__thiscall **)(int))(v10 + 3536))(v5); if ( v7 != 3 ) result = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 3532))(v5, v7, v8); } } return result; } // 548DD0: could not find valid save-restore pair for ebx // 548DD0: could not find valid save-restore pair for edi //----- (00548EB0) -------------------------------------------------------- int __thiscall sub_548EB0(void *this, int a2, int a3) { int v3; // esi@1 int result; // eax@1 signed int v5; // edi@2 signed int v6; // ebx@2 int v7; // eax@3 int v8; // edx@6 int (__thiscall *v9)(_DWORD); // eax@6 v3 = (int)this; result = (*(int (**)(void))(*(_DWORD *)this + 304))(); if ( (_BYTE)result != 1 ) { sub_590E60((void *)v3); sub_590F40((void *)v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2256))(v3); v5 = 3; v6 = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 6 ) { v7 = sub_45CDE0(v3); v6 = *(_WORD *)(v3 + 160762); v5 = v7; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3188))(v3) ) sub_45D1C0(v3, v3, 2); else sub_45F070((void *)v3); } (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3516))(v3); v8 = *(_DWORD *)v3; *(_DWORD *)(v3 + 78) = a2; v9 = *(int (__thiscall **)(_DWORD))(v8 + 3536); *(_DWORD *)(v3 + 82) = a3; result = v9(v3); if ( v5 != 3 ) result = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 3532))(v3, v5, v6); } return result; } //----- (00548F70) -------------------------------------------------------- int __userpurge sub_548F70(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 int result; // eax@1 signed int v7; // edi@3 signed int v8; // ebx@3 int v9; // eax@4 int v10; // eax@7 int v11; // edx@7 v5 = a1; result = *(_DWORD *)(a1 + 82) | *(_DWORD *)(a1 + 78); if ( !*(_QWORD *)(a1 + 78) ) { result = (*(int (**)(void))(*(_DWORD *)a1 + 304))(); if ( (_BYTE)result != 1 ) { sub_590E60((void *)v5); sub_590F40((void *)v5); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 2256))(v5, a3, a2); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2636))(v5); v7 = 3; v8 = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5) == 6 ) { v9 = sub_45CDE0(v5); v8 = *(_WORD *)(v5 + 160762); v7 = v9; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3188))(v5) ) sub_45D1C0(v5, v5, 2); else sub_45F070((void *)v5); } (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 3528))(v5); *(_DWORD *)(v5 + 78) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3504))(v5); v10 = *(_DWORD *)v5; *(_DWORD *)(v5 + 82) = v11; result = (*(int (__thiscall **)(int))(v10 + 3536))(v5); if ( v7 != 3 ) result = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 3532))(v5, v7, v8); } } return result; } // 548F70: could not find valid save-restore pair for ebx // 548F70: could not find valid save-restore pair for edi //----- (00549050) -------------------------------------------------------- int __thiscall sub_549050(void *this, int a2, int a3) { int v3; // esi@1 int result; // eax@1 signed int v5; // edi@4 signed int v6; // ebx@4 int v7; // eax@5 int v8; // eax@8 v3 = (int)this; result = *(_DWORD *)((char *)this + 78); if ( result != a2 || *(_DWORD *)((char *)this + 82) != a3 ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 304))(this); if ( (_BYTE)result != 1 ) { sub_590E60((void *)v3); sub_590F40((void *)v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2256))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2636))(v3); v5 = 3; v6 = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 6 ) { v7 = sub_45CDE0(v3); v6 = *(_WORD *)(v3 + 160762); v5 = v7; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3188))(v3) ) sub_45D1C0(v3, v3, 2); else sub_45F070((void *)v3); } (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3528))(v3); v8 = *(_DWORD *)v3; *(_DWORD *)(v3 + 78) = a2; *(_DWORD *)(v3 + 82) = a3; result = (*(int (__thiscall **)(int))(v8 + 3536))(v3); if ( v5 != 3 ) result = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 3532))(v3, v5, v6); } } return result; } //----- (00549130) -------------------------------------------------------- char __userpurge sub_549130(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 v4 = a1; v5 = *(_DWORD *)(a1 + 122); if ( *(_BYTE *)(*(_DWORD *)(v5 + 12) + 164) ) { LOBYTE(v5) = a3; if ( a3 != 3 ) { if ( a4 != -1 ) { *(_WORD *)(a1 + 160762) = a4; if ( a3 == 2 ) { LOBYTE(v5) = sub_45E4C0(a1, a2, a1, 1); if ( !(_BYTE)v5 ) { LOBYTE(v5) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); *(_DWORD *)(v4 + 160788) = 3; } } else { LOBYTE(v5) = sub_45EB20((void *)a1, 1u); } } } } return v5; } //----- (005491A0) -------------------------------------------------------- void __thiscall sub_5491A0(int this) { *(_BYTE *)(this + 9708) &= 0xFEu; } //----- (005491B0) -------------------------------------------------------- char __thiscall sub_5491B0(int this, char a2) { char result; // al@1 result = (a2 ^ *(_BYTE *)(this + 9708)) & 1; *(_BYTE *)(this + 9708) ^= result; return result; } //----- (005491D0) -------------------------------------------------------- int __thiscall sub_5491D0(int this) { return *(_BYTE *)(this + 9708) & 1; } //----- (005491E0) -------------------------------------------------------- int __thiscall sub_5491E0(void *this, const char *a2, unsigned __int8 a3) { int result; // eax@1 result = (int)a2; if ( a2 ) { result = strcmp(a2, "MobCanDamageTo"); if ( !result ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 3552))(a3); } return result; } //----- (00549230) -------------------------------------------------------- int __thiscall sub_549230(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 327) = a2; return result; } //----- (00549240) -------------------------------------------------------- int __thiscall sub_549240(int this) { return *(_DWORD *)(this + 327); } //----- (00549250) -------------------------------------------------------- bool __thiscall sub_549250(void *this, int a2) { void *v2; // esi@1 bool result; // al@2 int v4; // edi@3 v2 = this; if ( a2 ) { v4 = (*(int (**)(void))(*(_DWORD *)a2 + 2252))(); result = v4 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2252))(v2); } else { result = 0; } return result; } //----- (00549290) -------------------------------------------------------- bool __thiscall sub_549290(void *this, int a2) { void *v2; // edi@1 bool result; // al@2 int v4; // ebx@3 int v5; // esi@5 char v6; // bl@6 int v7; // edi@6 int v8; // eax@6 char v9; // [sp+13h] [bp+Bh]@6 v2 = this; if ( a2 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2252))(a2); result = v4 == (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2252))(v2) && ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 5 || (v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3112))(a2)) == 0 || (v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 3936))(v2), v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3936))(v5), v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1812))(v2), v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1812))(v5), v6 == v9) && (v6 != 3 || v7 == v8)); } else { result = 0; } return result; } //----- (00549340) -------------------------------------------------------- bool __thiscall sub_549340(int this, int a2) { bool result; // al@2 if ( *(_DWORD *)(this + 9668) ) result = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(this + 9668) + 3672))(a2); else result = sub_549290((void *)this, a2); return result; } //----- (00549370) -------------------------------------------------------- char __thiscall sub_549370(void *this, int a2) { int v2; // eax@1 char result; // al@2 v2 = (*(int (**)(void))(*(_DWORD *)this + 3248))(); if ( v2 ) result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 3672))(v2, a2); else result = 0; return result; } //----- (005493A0) -------------------------------------------------------- char __thiscall sub_5493A0(int this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5) { int v5; // esi@1 int v6; // ecx@1 int v7; // eax@2 bool v8; // zf@2 int v9; // eax@2 int v10; // edi@3 char result; // al@5 v5 = this; v6 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4); if ( (unsigned __int16)v6 >= *(_WORD *)(v5 + 4) ) { LABEL_5: result = 1; } else { while ( 1 ) { v7 = *(_DWORD *)(v5 + 8); v8 = *(_BYTE *)(v7 + 12 * (unsigned __int16)v6 + 8) == 0; v9 = v7 + 12 * (unsigned __int16)v6; if ( v8 ) break; v10 = *(_WORD *)(v9 + 4); if ( !(unsigned __int8)a2(a3 + *(_DWORD *)v9, v5, v6) ) break; v6 = v10; if ( (unsigned __int16)v10 >= *(_WORD *)(v5 + 4) ) goto LABEL_5; } result = 0; } return result; } //----- (00549420) -------------------------------------------------------- void *__thiscall sub_549420(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6D8130; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6D8130: using guessed type int (__thiscall *off_6D8130)(void *, char); //----- (00549460) -------------------------------------------------------- void *__thiscall sub_549460(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6D8154; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6D8154: using guessed type int (__thiscall *off_6D8154)(void *, char); //----- (005494A0) -------------------------------------------------------- int __thiscall sub_5494A0(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1196))(); } //----- (005494B0) -------------------------------------------------------- char __stdcall sub_5494B0(int a1) { sub_4675D0((int)&unk_D020420, (int)"PacketContainerBase::pcb_Flush"); dword_7508B8[dword_750CB8] = (int)"PacketContainerBase::pcb_Flush"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"PacketContainerBase::pcb_Flush"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549500) -------------------------------------------------------- char __thiscall sub_549500(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 char v5; // al@1 char v6; // bl@1 v2 = this; v3 = *(_DWORD *)(this + 8200); sub_4675D0((int)&unk_D020420, (int)"PacketContainer::pcb_Flush"); v4 = dword_750CB8; dword_7508B8[dword_750CB8] = (int)"PacketContainer::pcb_Flush"; dword_750AB8[dword_750CB8++] = v3; v5 = sub_4C7D00(v4, v2, (int)"PacketContainer::pcb_Flush", a2); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"PacketContainer::pcb_Flush"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005495B0) -------------------------------------------------------- int __thiscall sub_5495B0(int this, int a2, int a3) { int v3; // esi@1 signed int v4; // ST04_4@1 signed int v5; // ST00_4@1 int v6; // eax@1 signed int v7; // ecx@3 int v8; // edi@3 int v9; // eax@3 v3 = this; *(_DWORD *)(this + 4) = *(_DWORD *)a2 - *(_DWORD *)a3; *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 4) - *(_DWORD *)(a3 + 4); v4 = *(_DWORD *)(this + 8); v5 = *(_DWORD *)(this + 4); *(_DWORD *)this = &off_6B039C; v6 = sub_4011C0(&unk_AF09DA8, v5, v4); *(_DWORD *)(v3 + 12) = v6; *(_DWORD *)v3 = &off_6D81D8; if ( !v6 ) { *(_DWORD *)(v3 + 4) = 1; *(_DWORD *)(v3 + 8) = 0; *(_DWORD *)(v3 + 12) = 1; } v7 = *(_DWORD *)(v3 + 12); v8 = 32 * *(_DWORD *)(v3 + 4) / v7; v9 = 32 * *(_DWORD *)(v3 + 8) / v7; *(_DWORD *)(v3 + 4) = v8; *(_DWORD *)(v3 + 8) = v9; *(_DWORD *)(v3 + 12) = sub_4011C0(&unk_AF09DA8, v8, v9); return v3; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 6D81D8: using guessed type int (__stdcall *off_6D81D8)(int); //----- (00549640) -------------------------------------------------------- char __thiscall sub_549640(void *this) { void *v1; // esi@1 int v2; // eax@4 char result; // al@5 int v4; // eax@8 int v5; // ecx@12 int v6; // eax@13 void *v7; // eax@16 int v8; // edi@17 int v9; // ebx@17 void *v10; // eax@18 int v11; // edi@19 int v12; // esi@19 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(*(_DWORD *)this + 4) + 1232))() ) { v5 = *((_DWORD *)v1 + 1); if ( (void *)v5 == v1 || (v6 = *((_DWORD *)v1 + 2), (void *)v6 == v1) ) goto LABEL_5; if ( *(void **)(v5 + 8) != v1 || *(void **)(v6 + 4) != v1 ) { LABEL_11: sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_IsValid : Link error", 0); return 0; } } else { if ( !(*(int (**)(void))(**(_DWORD **)v1 + 4))() ) { if ( *((void **)v1 + 1) != v1 || (v2 = *((_DWORD *)v1 + 2), (void *)v2 == v1) ) goto LABEL_5; if ( *(_DWORD *)(v2 + 4) != (_DWORD)v1 ) goto LABEL_11; } if ( (_UNKNOWN *)(*(int (**)(void))(**(_DWORD **)v1 + 4))() == &unk_FFFFFF ) { v4 = *((_DWORD *)v1 + 1); if ( (void *)v4 == v1 || *((void **)v1 + 2) != v1 ) { LABEL_5: sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_IsValid : Not inlist", 0); return 0; } if ( *(_DWORD *)(v4 + 8) != (_DWORD)v1 ) goto LABEL_11; } } v7 = (void *)*((_DWORD *)v1 + 1); if ( (v7 == v1 || (v8 = *(_DWORD *)v1, v9 = (*(int (**)(void))(**(_DWORD **)v7 + 4))(), v9 - (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 4))(v8) <= 0)) && ((v10 = (void *)*((_DWORD *)v1 + 2), v1 == v10) || (v11 = *(_DWORD *)v10, v12 = (*(int (**)(void))(**(_DWORD **)v1 + 4))(), v12 - (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 4))(v11) <= 0)) ) { result = 1; } else { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_IsValid : Order error", 0); result = 0; } return result; } //----- (00549760) -------------------------------------------------------- int __stdcall sub_549760(int a1, int a2, int a3, int a4) { int result; // eax@1 FILE *v5; // esi@2 result = 1; if ( !(dword_13253E84 & 1) ) { dword_13253E84 |= 1u; v5 = fopen("Dbg.txt", "a"); fprintf(v5, "%s\n", "DamageLog"); fclose(v5); sub_5A7CA0("DamageLog"); result = atexit(nullsub_119); } return result; } // 13253E84: using guessed type int dword_13253E84; //----- (005497F0) -------------------------------------------------------- int __thiscall sub_5497F0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)((char *)v1 + 122) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549850) -------------------------------------------------------- int __thiscall sub_549850(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"; dword_750AB8[dword_750CB8++] = -1; sub_5497F0(v1); **((_BYTE **)v1 + 957) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549900) -------------------------------------------------------- int __thiscall sub_549900(void *this) { unsigned int v1; // ST04_4@1 void *v2; // esi@1 int (__stdcall *v3)(_DWORD); // eax@1 int v4; // eax@3 int v5; // edi@4 int v7; // [sp-4h] [bp-120h]@8 char v8; // [sp+Ch] [bp-110h]@7 unsigned int v9; // [sp+10Ch] [bp-10h]@1 int v10; // [sp+118h] [bp-4h]@1 int v11; // [sp+11Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v1 = (unsigned int)&v11 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Logout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_Logout"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(**(_DWORD **)((char *)v2 + 26) + 4) + 1644); v10 = 0; if ( (void *)v3(v1) == v2 || (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v2 + 30) + 4) + 1644))() == v2 ) { v7 = (int)"ShineObjectClass::ShineObject::so_Logout"; } else { v4 = *(_DWORD *)((char *)v2 + 122); if ( v4 ) { v5 = v4 + 468; if ( v4 != -468 ) { if ( sub_439730((void *)v5, *((_WORD *)v2 + 2)) == 1 && !sub_43AEF0(v5, *((_WORD *)v2 + 2)) ) { sprintf(&v8, "ShineObjectClass::ShineObject::so_Logout() - ¸Ê ·Î±× ¾Æ¿"); sub_6390B0(&unk_86DDD8, (int)&v8, (int)byte_6A492E); } } } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 20))(v2); v7 = (int)"ShineObjectClass::ShineObject::so_Logout"; } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00549A40) -------------------------------------------------------- char __thiscall sub_549A40(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int v7; // eax@1 int (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // ecx@2 int v9; // ebx@3 int (__thiscall *v10)(_DWORD, _DWORD, _DWORD); // edx@3 int v11; // ecx@3 char v12; // al@3 char result; // al@3 int v14; // [sp-Ch] [bp-38h]@3 int v15; // [sp-8h] [bp-34h]@3 int v16; // [sp-4h] [bp-30h]@3 int v17; // [sp+10h] [bp-1Ch]@2 int v18; // [sp+14h] [bp-18h]@2 int v19; // [sp+18h] [bp-14h]@2 int v20; // [sp+1Ch] [bp-10h]@1 int v21; // [sp+28h] [bp-4h]@1 v6 = this; v20 = (int)"ShineObjectClass::ShineObject::so_AllInMap0"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMap0"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllInMap0"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)((char *)v6 + 122); v21 = 0; if ( v7 && (v8 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(v7 + 88), v17 = *(_DWORD *)(v7 + 92), v18 = *(_DWORD *)(v7 + 96), v19 = *(_DWORD *)(v7 + 100), v8) ) { v9 = *(_DWORD *)(v7 + 96); v10 = v8; v11 = *(_DWORD *)(v7 + 92); v19 = *(_DWORD *)(v7 + 100); v16 = a6; v18 = v9; v14 = a4; v15 = a5; v12 = v10((char *)v6 + v11, a2, a3); --dword_750CB8; LOBYTE(v9) = v12; v21 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMap0"); result = v9; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMap0"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549B60) -------------------------------------------------------- char __thiscall sub_549B60(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // ecx@2 char v6; // al@3 char v7; // bl@3 char result; // al@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMap1"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllInMap1"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 122); if ( v4 && (v5 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(v4 + 104)) != 0 ) { v6 = v5((char *)v3 + *(_DWORD *)(v4 + 108), a2, a3); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMap1"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMap1"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549C70) -------------------------------------------------------- char __thiscall sub_549C70(void *this, int a2, int a3, _UNKNOWN *a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11) { void *v11; // esi@1 signed int v12; // edx@1 _UNKNOWN *v13; // ebx@1 int v14; // eax@2 int v15; // ecx@3 int v16; // eax@10 int (__thiscall *v17)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ecx@11 char v18; // al@12 char v19; // bl@12 v11 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class0"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class0"; v12 = 1; dword_750AB8[dword_750CB8++] = -1; v13 = a4; if ( !a4 ) { v14 = *(_DWORD *)((char *)v11 + 122); if ( v14 && (v15 = *(_DWORD *)(v14 + 16)) != 0 ) { if ( *(_DWORD *)((char *)v11 + 327) == 1 ) { v13 = &unk_5F5E0FF; } else { if ( *(_DWORD *)(v14 + 292) == 1 ) v13 = &unk_5F5E0FF; else v13 = *(_UNKNOWN **)(v15 + 72); } } else { v13 = 0; } } v16 = *(_DWORD *)((char *)v11 + 122); if ( v16 ) { v17 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v16 + 120); if ( v17 ) { v18 = v17((char *)v11 + *(_DWORD *)(v16 + 124), a2, a3, v13, a5, a6, a7); --dword_750CB8; v19 = v18; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class0"); return v19; } v12 = 1; } dword_750CB8 -= v12; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class0"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549E00) -------------------------------------------------------- char __thiscall sub_549E00(void *this, int a2, int a3, _UNKNOWN *a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 signed int v9; // edx@1 _UNKNOWN *v10; // ebx@1 int v11; // eax@2 int v12; // ecx@3 int v13; // eax@10 int (__thiscall *v14)(_DWORD, _DWORD, _DWORD, _DWORD); // ecx@11 char v15; // al@12 char v16; // bl@12 v8 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class1"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class1"; v9 = 1; dword_750AB8[dword_750CB8++] = -1; v10 = a4; if ( !a4 ) { v11 = *(_DWORD *)((char *)v8 + 122); if ( v11 && (v12 = *(_DWORD *)(v11 + 16)) != 0 ) { if ( *(_DWORD *)((char *)v8 + 327) == 1 ) { v10 = &unk_5F5E0FF; } else { if ( *(_DWORD *)(v11 + 292) == 1 ) v10 = &unk_5F5E0FF; else v10 = *(_UNKNOWN **)(v12 + 72); } } else { v10 = 0; } } v13 = *(_DWORD *)((char *)v8 + 122); if ( v13 ) { v14 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(v13 + 136); if ( v14 ) { v15 = v14((char *)v8 + *(_DWORD *)(v13 + 140), a2, a3, v10); --dword_750CB8; v16 = v15; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class1"); return v16; } v9 = 1; } dword_750CB8 -= v9; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRange_Class1"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00549F80) -------------------------------------------------------- char __thiscall sub_549F80(void *this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5, char a6) { int v6; // edi@1 signed int v7; // ebx@1 int (*v9)(void); // eax@12 int v10; // eax@12 int v11; // esi@13 int v12; // eax@21 signed int v13; // edi@23 int v14; // eax@34 int (*v15)(void); // edx@44 int v16; // eax@52 int v17; // eax@63 char v18; // bl@65 const char *v19; // [sp-8h] [bp-12Ch]@23 unsigned int v20; // [sp-4h] [bp-128h]@1 char v21; // [sp+13h] [bp-111h]@1 char v22; // [sp+14h] [bp-110h]@29 unsigned int v23; // [sp+114h] [bp-10h]@1 int v24; // [sp+120h] [bp-4h]@1 int v25; // [sp+124h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v20 = (unsigned int)&v25 ^ __security_cookie; v6 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"; v7 = -1; dword_750AB8[dword_750CB8++] = -1; v24 = 0; sub_547900(&v21); LOBYTE(v24) = 1; if ( v21 ) { if ( (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(**(_DWORD **)(v6 + 26) + 4) + 1644))(v20) == v6 && (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 30) + 4) + 1644))() == v6 ) { sub_4623E0(&unk_CFCE178, "Unlinked object"); if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"); return 0; } ++dword_13244DAC[dword_74971C]; v9 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 38) + 4) + 1644); dword_132450F8 = 0; v10 = v9(); while ( 1 ) { v11 = v10; if ( !v10 ) break; ++dword_132450F8; if ( dword_132450F8 > 10000 ) { if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v22, "%.255s", "Too many loop"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v22, dword_13253960); } if ( byte_7493ED && byte_13253AE4 && dword_13253960 ) { v14 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v14); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } if ( dword_74971C > v7 ) --dword_74971C; --dword_750CB8; v24 = v7; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"); return 0; } if ( !sub_548740((void *)v10) ) { if ( dword_74971C > v7 ) --dword_74971C; --dword_750CB8; v24 = v7; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"); return 0; } if ( !(v11 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v11 + 26) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRange", 0); v13 = 1; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v11 + 2208))(v11, 1); v19 = "AllInMap0"; LABEL_24: sub_4623E0(&unk_CFCE178, v19); sub_462120(*(void **)(v11 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRange 0"); if ( dword_74971C > v7 ) dword_74971C -= v13; dword_750CB8 -= v13; v24 = v7; goto LABEL_6; } if ( *(_DWORD *)(v6 + 78) == *(_DWORD *)(v11 + 78) && *(_DWORD *)(v6 + 82) == *(_DWORD *)(v11 + 82) || *(_BYTE *)(v6 + 86) || *(_BYTE *)(v11 + 86) ) { v12 = sub_402710(v6, v11); if ( !(unsigned __int8)a2(a3 + v11, v6, v12) ) { LABEL_41: if ( dword_74971C > -1 ) --dword_74971C; v24 = -1; goto LABEL_5; } } v10 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v11 + 38) + 4) + 1644))(); v7 = -1; } v15 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 42) + 4) + 1644); dword_132450F8 = 0; v11 = v15(); if ( !v11 ) { LABEL_64: if ( a6 ) v18 = a2(v6 + a3, v6, 0); else v18 = 1; if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"); return v18; } while ( 1 ) { ++dword_132450F8; if ( dword_132450F8 > 10000 ) break; if ( !sub_548740((void *)v11) ) goto LABEL_2; if ( !(v11 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v11 + 26) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRange", 0); v13 = 1; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v11 + 2208))(v11, 1); v19 = "AllInMap1"; goto LABEL_24; } if ( *(_DWORD *)(v6 + 78) == *(_DWORD *)(v11 + 78) && *(_DWORD *)(v6 + 82) == *(_DWORD *)(v11 + 82) || *(_BYTE *)(v6 + 86) || *(_BYTE *)(v11 + 86) ) { v16 = sub_402710(v6, v11); if ( !(unsigned __int8)a2(a3 + v11, v6, v16) ) goto LABEL_41; } v11 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v11 + 42) + 4) + 1644))(); if ( !v11 ) goto LABEL_64; v7 = -1; } if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v22, "%.255s", "Too many loop"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v22, dword_13253960); } if ( byte_7493ED && byte_13253AE4 && dword_13253960 ) { v17 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v17); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } } LABEL_2: if ( dword_74971C > v7 ) --dword_74971C; v24 = v7; LABEL_5: --dword_750CB8; LABEL_6: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal2"); return 0; } // 7493ED: using guessed type char byte_7493ED; // 74971C: using guessed type int dword_74971C; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244DAC: using guessed type int dword_13244DAC[]; // 132450F8: using guessed type int dword_132450F8; // 13253AE4: using guessed type char byte_13253AE4; //----- (0054A4F0) -------------------------------------------------------- char __thiscall sub_54A4F0(void *this, int a2, char a3) { int v3; // edi@1 signed int v4; // ebx@1 int (*v6)(void); // eax@12 int v7; // eax@12 int v8; // esi@13 int v9; // ebx@21 int v10; // eax@21 signed int v11; // edi@23 int v12; // eax@34 int (*v13)(void); // edx@44 int v14; // ebx@52 int v15; // eax@52 int v16; // eax@63 char v17; // bl@65 const char *v18; // [sp-8h] [bp-130h]@23 unsigned int v19; // [sp-4h] [bp-12Ch]@1 char v20; // [sp+17h] [bp-111h]@1 char v21; // [sp+18h] [bp-110h]@29 unsigned int v22; // [sp+118h] [bp-10h]@1 int v23; // [sp+124h] [bp-4h]@1 int v24; // [sp+128h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v19 = (unsigned int)&v24 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v23 = 0; sub_547900(&v20); LOBYTE(v23) = 1; if ( v20 ) { if ( (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(**(_DWORD **)(v3 + 26) + 4) + 1644))(v19) == v3 && (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 30) + 4) + 1644))() == v3 ) { sub_4623E0(&unk_CFCE178, "Unlinked object"); if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"); return 0; } ++dword_13244DAC[dword_74971C]; v6 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 38) + 4) + 1644); dword_132450F8 = 0; v7 = v6(); while ( 1 ) { v8 = v7; if ( !v7 ) break; ++dword_132450F8; if ( dword_132450F8 > 10000 ) { if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v21, "%.255s", "Too many loop"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v21, dword_13253960); } if ( byte_7493ED && byte_13253AE4 && dword_13253960 ) { v12 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v12); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } if ( dword_74971C > v4 ) --dword_74971C; --dword_750CB8; v23 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"); return 0; } if ( !sub_548740((void *)v7) ) { if ( dword_74971C > v4 ) --dword_74971C; --dword_750CB8; v23 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"); return 0; } if ( !(v8 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 26) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRange", 0); v11 = 1; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2208))(v8, 1); v18 = "AllInMap2"; LABEL_24: sub_4623E0(&unk_CFCE178, v18); sub_462120(*(void **)(v8 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRange 0"); if ( dword_74971C > v4 ) dword_74971C -= v11; dword_750CB8 -= v11; v23 = v4; goto LABEL_6; } if ( *(_DWORD *)(v3 + 78) == *(_DWORD *)(v8 + 78) && *(_DWORD *)(v3 + 82) == *(_DWORD *)(v8 + 82) || *(_BYTE *)(v3 + 86) || *(_BYTE *)(v8 + 86) ) { v9 = *(_DWORD *)a2; v10 = sub_402710(v3, v8); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int, int))v9)(a2, v3, v8, v10) ) { LABEL_41: if ( dword_74971C > -1 ) --dword_74971C; v23 = -1; goto LABEL_5; } } v7 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 38) + 4) + 1644))(); v4 = -1; } v13 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 42) + 4) + 1644); dword_132450F8 = 0; v8 = v13(); if ( !v8 ) { LABEL_64: if ( a3 ) v17 = (**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))a2)(v3, v3, 0); else v17 = 1; if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"); return v17; } while ( 1 ) { ++dword_132450F8; if ( dword_132450F8 > 10000 ) break; if ( !sub_548740((void *)v8) ) goto LABEL_2; if ( !(v8 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 26) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRange", 0); v11 = 1; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2208))(v8, 1); v18 = "AllInMap3"; goto LABEL_24; } if ( *(_DWORD *)(v3 + 78) == *(_DWORD *)(v8 + 78) && *(_DWORD *)(v3 + 82) == *(_DWORD *)(v8 + 82) || *(_BYTE *)(v3 + 86) || *(_BYTE *)(v8 + 86) ) { v14 = *(_DWORD *)a2; v15 = sub_402710(v3, v8); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int, int))v14)(a2, v3, v8, v15) ) goto LABEL_41; } v8 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 42) + 4) + 1644))(); if ( !v8 ) goto LABEL_64; v4 = -1; } if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v21, "%.255s", "Too many loop"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v21, dword_13253960); } if ( byte_7493ED && byte_13253AE4 && dword_13253960 ) { v16 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v16); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } } LABEL_2: if ( dword_74971C > v4 ) --dword_74971C; v23 = v4; LABEL_5: --dword_750CB8; LABEL_6: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapNomal3"); return 0; } // 7493ED: using guessed type char byte_7493ED; // 74971C: using guessed type int dword_74971C; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244DAC: using guessed type int dword_13244DAC[]; // 132450F8: using guessed type int dword_132450F8; // 13253AE4: using guessed type char byte_13253AE4; //----- (0054AA80) -------------------------------------------------------- char __thiscall sub_54AA80(void *this, int a2, int a3, int a4, int a5, int a6, char a7, __int16 a8) { void *v8; // ebx@1 int v10; // edi@14 int v11; // ecx@14 int (*v12)(void); // edx@14 int v13; // esi@14 int (*v14)(void); // edx@20 int v15; // esi@20 int (*v16)(void); // edx@26 int v17; // esi@26 int v18; // ebx@31 int v19; // edi@31 int v20; // eax@35 int v21; // eax@38 int v22; // eax@49 int v23; // ecx@58 FILE *v24; // eax@69 int (*v25)(void); // eax@83 int i; // eax@83 int v27; // esi@84 int v28; // ebx@89 int v29; // edi@89 int v30; // eax@93 int v31; // eax@96 int v32; // ecx@98 FILE *v33; // eax@108 char v34; // bl@123 unsigned int v35; // [sp-4h] [bp-150h]@1 int (__stdcall **v36)(int); // [sp+10h] [bp-13Ch]@37 int v37; // [sp+14h] [bp-138h]@58 int v38; // [sp+18h] [bp-134h]@58 int v39; // [sp+20h] [bp-12Ch]@14 int v40; // [sp+24h] [bp-128h]@13 int v41; // [sp+28h] [bp-124h]@1 int v42; // [sp+2Ch] [bp-120h]@1 int v43; // [sp+30h] [bp-11Ch]@1 char v44; // [sp+37h] [bp-115h]@1 int v45; // [sp+38h] [bp-114h]@1 char v46; // [sp+3Ch] [bp-110h]@44 unsigned int v47; // [sp+13Ch] [bp-10h]@1 int v48; // [sp+148h] [bp-4h]@1 int v49; // [sp+14Ch] [bp+0h]@1 v47 = (unsigned int)&v49 ^ __security_cookie; v35 = (unsigned int)&v49 ^ __security_cookie; v8 = this; v41 = a6; v43 = (int)this; v45 = a3; v42 = a5; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"; dword_750AB8[dword_750CB8++] = -1; v48 = 0; sub_547900(&v44); LOBYTE(v48) = 1; if ( !v44 ) { if ( dword_74971C > -1 ) --dword_74971C; v48 = -1; LABEL_5: --dword_750CB8; LABEL_6: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); return 0; } if ( (void *)(*(int (__cdecl **)(unsigned int))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 26) + 4) + 1644))(v35) == v8 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 30) + 4) + 1644))() == v8 ) { sub_4623E0(&unk_CFCE178, "Unlinked object"); if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v48 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); return 0; } ++dword_13244DAC[dword_74971C]; if ( a5 ) v40 = sub_576E40(&unk_132546E8, *(_DWORD *)a5 / 2); v10 = a4; v11 = *(_DWORD *)(**(_DWORD **)((char *)v8 + 26) + 4); v39 = a4 * a4; v12 = *(int (**)(void))(*(_DWORD *)v11 + 1644); dword_132450F8 = 0; v13 = v12(); if ( v13 ) { while ( 1 ) { if ( (unsigned int)(a4 + **(_DWORD **)(v13 + 102)) <= *(_DWORD *)v45 ) goto LABEL_20; ++dword_132450F8; if ( dword_132450F8 > 10000 ) { LABEL_42: if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v46, "%.255s", "Too many loop"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v46, dword_13253960); } if ( byte_7493ED && byte_13253AE4 && dword_13253960 ) { v22 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v22); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } if ( dword_74971C > -1 ) --dword_74971C; v48 = -1; goto LABEL_5; } if ( !sub_548740((void *)v13) ) goto LABEL_54; if ( v13 == (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v13 + 26) + 4) + 1644))() ) break; *(_DWORD *)(v13 + 4 * dword_74971C + 46) = a2; v13 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v13 + 26) + 4) + 1644))(); if ( !v13 ) goto LABEL_20; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v13 + 2208))(v13, 1); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal0"); sub_462120(*(void **)(v13 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 0"); if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v48 = -1; goto LABEL_6; } LABEL_20: v14 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 30) + 4) + 1644); dword_132450F8 = 0; v15 = v14(); if ( v15 ) { while ( 1 ) { if ( **(_DWORD **)(v15 + 102) >= (unsigned int)(a4 + *(_DWORD *)v45) ) goto LABEL_26; ++dword_132450F8; if ( dword_132450F8 > 10000 ) goto LABEL_42; if ( !sub_548740((void *)v15) ) goto LABEL_54; if ( v15 == (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 30) + 4) + 1644))() ) break; *(_DWORD *)(v15 + 4 * dword_74971C + 46) = a2; v15 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 30) + 4) + 1644))(); if ( !v15 ) goto LABEL_26; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v15 + 2208))(v15, 2); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal1"); sub_462120(*(void **)(v15 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 1"); LABEL_54: if ( dword_74971C > -1 ) --dword_74971C; v48 = -1; goto LABEL_5; } LABEL_26: ++dword_13244DAC[dword_74971C]; v16 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 38) + 4) + 1644); dword_132450F8 = 0; v17 = v16(); if ( v17 ) { while ( 1 ) { if ( (unsigned int)(v10 + *(_DWORD *)(*(_DWORD *)(v17 + 102) + 4)) <= *(_DWORD *)(v45 + 4) ) goto LABEL_83; ++dword_132450F8; if ( dword_132450F8 > 10000 ) break; if ( !sub_548740((void *)v17) ) goto LABEL_80; if ( !(v17 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v17 + 38) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v17 + 2208))(v17, 3); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal2"); sub_462120(*(void **)(v17 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 2"); LABEL_80: if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v48 = -1; goto LABEL_6; } v18 = *(_DWORD *)(v45 + 4); v19 = (**(_DWORD **)(v17 + 102) - *(_DWORD *)v45) * (**(_DWORD **)(v17 + 102) - *(_DWORD *)v45) + (*(_DWORD *)(*(_DWORD *)(v17 + 102) + 4) - v18) * (*(_DWORD *)(*(_DWORD *)(v17 + 102) + 4) - v18); if ( *(_DWORD *)(v17 + 4 * dword_74971C + 46) == a2 && *(_WORD *)(v17 + 4) != a8 && v19 < (unsigned int)v39 ) { if ( !v42 || (v20 = *(_DWORD *)(v17 + 102), *(_DWORD *)v45 == *(_DWORD *)v20) && v18 == *(_DWORD *)(v20 + 4) || ((sub_5495B0((int)&v36, v20, v45), v42 == -4) ? (v21 = 0) : (v21 = v42 + 8), v23 = v37 * *(_DWORD *)v21 + v38 * *(_DWORD *)(v21 + 4), v36 = &off_6B039C, v23 >= v40) ) { if ( (*(_DWORD *)(v43 + 78) == *(_DWORD *)(v17 + 78) && *(_DWORD *)(v43 + 82) == *(_DWORD *)(v17 + 82) || *(_BYTE *)(v43 + 86) || *(_BYTE *)(v17 + 86)) && !(unsigned __int8)(**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))v41)(v43, v17, v19) ) goto LABEL_54; } } v17 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v17 + 38) + 4) + 1644))(); if ( !v17 ) goto LABEL_83; v10 = a4; } if ( !byte_7493ED ) goto LABEL_80; if ( byte_13253AE4 ) { sprintf(&v46, "%.255s", "Too many loop"); v24 = dword_13253960; if ( !dword_13253960 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_13253860) ) { v24 = 0; dword_13253960 = 0; goto LABEL_76; } v24 = fopen(byte_132539E4, "a+"); dword_13253960 = v24; if ( !v24 || (fprintf(v24, "%s : ", &unk_132539A4), (v24 = dword_13253960) == 0) ) { LABEL_76: if ( byte_7493ED && byte_13253AE4 && v24 ) { sub_654AB0(10, v24); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } goto LABEL_80; } } fputs(&v46, v24); } v24 = dword_13253960; goto LABEL_76; } LABEL_83: v25 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v43 + 42) + 4) + 1644); dword_132450F8 = 0; for ( i = v25(); ; i = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v27 + 42) + 4) + 1644))() ) { v27 = i; if ( !i ) break; if ( *(_DWORD *)(*(_DWORD *)(i + 102) + 4) >= (unsigned int)(a4 + *(_DWORD *)(v45 + 4)) ) break; ++dword_132450F8; if ( dword_132450F8 > 10000 ) { if ( !byte_7493ED ) goto LABEL_119; if ( byte_13253AE4 ) { sprintf(&v46, "%.255s", "Too many loop"); v33 = dword_13253960; if ( !dword_13253960 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_13253860) ) { v33 = 0; dword_13253960 = 0; goto LABEL_115; } v33 = fopen(byte_132539E4, "a+"); dword_13253960 = v33; if ( !v33 || (fprintf(v33, "%s : ", &unk_132539A4), (v33 = dword_13253960) == 0) ) { LABEL_115: if ( byte_7493ED && byte_13253AE4 && v33 ) { sub_654AB0(10, v33); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } goto LABEL_119; } } fputs(&v46, v33); } v33 = dword_13253960; goto LABEL_115; } if ( !sub_548740((void *)i) ) goto LABEL_119; if ( !(v27 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v27 + 42) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v27 + 2208))(v27, 4); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal3"); sub_462120(*(void **)(v27 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 3"); LABEL_119: if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v48 = -1; goto LABEL_6; } v28 = *(_DWORD *)(v45 + 4); v29 = (**(_DWORD **)(v27 + 102) - *(_DWORD *)v45) * (**(_DWORD **)(v27 + 102) - *(_DWORD *)v45) + (*(_DWORD *)(*(_DWORD *)(v27 + 102) + 4) - v28) * (*(_DWORD *)(*(_DWORD *)(v27 + 102) + 4) - v28); if ( *(_DWORD *)(v27 + 4 * dword_74971C + 46) == a2 && *(_WORD *)(v27 + 4) != a8 && v29 < (unsigned int)v39 ) { if ( !v42 || (v30 = *(_DWORD *)(v27 + 102), *(_DWORD *)v45 == *(_DWORD *)v30) && v28 == *(_DWORD *)(v30 + 4) || ((sub_5495B0((int)&v36, v30, v45), v42 == -4) ? (v31 = 0) : (v31 = v42 + 8), v32 = v37 * *(_DWORD *)v31 + v38 * *(_DWORD *)(v31 + 4), v36 = &off_6B039C, v32 >= v40) ) { if ( (*(_DWORD *)(v43 + 78) == *(_DWORD *)(v27 + 78) && *(_DWORD *)(v43 + 82) == *(_DWORD *)(v27 + 82) || *(_BYTE *)(v43 + 86) || *(_BYTE *)(v27 + 86)) && !(unsigned __int8)(**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))v41)(v43, v27, v29) ) goto LABEL_54; } } } if ( a7 ) v34 = (**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))v41)(v43, v43, 0); else v34 = 1; if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v48 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); return v34; } // 31: found interdependent unknown calls // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 7493ED: using guessed type char byte_7493ED; // 74971C: using guessed type int dword_74971C; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244DAC: using guessed type int dword_13244DAC[]; // 132450F8: using guessed type int dword_132450F8; // 13253AE4: using guessed type char byte_13253AE4; //----- (0054B4E0) -------------------------------------------------------- char __thiscall sub_54B4E0(void *this, int a2, int a3, int a4, int a5, int (__thiscall *a6)(_DWORD, _DWORD, _DWORD), int a7, int a8, int a9, char a10, __int16 a11) { void *v11; // ebx@1 int v13; // edi@14 int (*v14)(void); // eax@14 int v15; // esi@14 int (*v16)(void); // edx@20 int (*v17)(void); // edx@26 int v18; // esi@26 int v19; // ebx@31 int v20; // edi@31 int v21; // eax@35 int v22; // eax@38 int v23; // eax@51 int v24; // ecx@57 FILE *v25; // eax@68 int v26; // edx@82 int v27; // eax@83 int v28; // esi@83 int v29; // ebx@88 int v30; // edi@88 int v31; // eax@92 int v32; // eax@95 int v33; // ecx@97 FILE *v34; // eax@107 char v35; // bl@122 int v36; // [sp-8h] [bp-150h]@39 unsigned int v37; // [sp-4h] [bp-14Ch]@1 int (__stdcall **v38)(int); // [sp+10h] [bp-138h]@37 int v39; // [sp+14h] [bp-134h]@57 int v40; // [sp+18h] [bp-130h]@57 int v41; // [sp+20h] [bp-128h]@13 int v42; // [sp+24h] [bp-124h]@14 int v43; // [sp+28h] [bp-120h]@1 void *v44; // [sp+2Ch] [bp-11Ch]@1 char v45; // [sp+33h] [bp-115h]@1 int v46; // [sp+34h] [bp-114h]@1 char v47; // [sp+38h] [bp-110h]@46 unsigned int v48; // [sp+138h] [bp-10h]@1 int v49; // [sp+144h] [bp-4h]@1 int v50; // [sp+148h] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v37 = (unsigned int)&v50 ^ __security_cookie; v11 = this; v44 = this; v46 = a3; v43 = a5; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"; dword_750AB8[dword_750CB8++] = -1; v49 = 0; sub_547900(&v45); LOBYTE(v49) = 1; if ( v45 ) { if ( (void *)(*(int (__cdecl **)(unsigned int))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 26) + 4) + 1644))(v37) == v11 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 30) + 4) + 1644))() == v11 ) { sub_4623E0(&unk_CFCE178, "Unlinked object"); if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v49 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); return 0; } ++dword_13244DAC[dword_74971C]; if ( a5 ) v41 = sub_576E40(&unk_132546E8, *(_DWORD *)a5 / 2); v13 = a4; v42 = a4 * a4; v14 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 26) + 4) + 1644); dword_132450F8 = 0; v15 = v14(); if ( v15 ) { do { if ( (unsigned int)(a4 + **(_DWORD **)(v15 + 102)) <= *(_DWORD *)v46 ) goto LABEL_20; ++dword_132450F8; if ( dword_132450F8 > 10000 ) break; if ( !sub_548740((void *)v15) ) goto LABEL_41; if ( !(v15 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 26) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v15 + 2208))(v15, 5); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal4"); v36 = (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 0"; goto LABEL_40; } *(_DWORD *)(v15 + 4 * dword_74971C + 46) = a2; v15 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 26) + 4) + 1644))(); } while ( v15 ); LABEL_44: if ( byte_7493ED ) { if ( byte_13253AE4 ) { sprintf(&v47, "%.255s", "Too many loop"); sub_418E40((__time32_t)byte_13253860); if ( dword_13253960 ) fputs(&v47, dword_13253960); } if ( byte_7493ED && byte_13253AE4 && dword_13253960 ) { v23 = sub_418E40((__time32_t)byte_13253860); sub_654AB0(10, (FILE *)v23); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } } if ( dword_74971C > -1 ) --dword_74971C; v49 = -1; goto LABEL_5; } LABEL_20: v16 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 30) + 4) + 1644); dword_132450F8 = 0; v15 = v16(); if ( v15 ) { while ( 1 ) { if ( **(_DWORD **)(v15 + 102) >= (unsigned int)(a4 + *(_DWORD *)v46) ) goto LABEL_26; ++dword_132450F8; if ( dword_132450F8 > 10000 ) goto LABEL_44; if ( !sub_548740((void *)v15) ) goto LABEL_41; if ( v15 == (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 30) + 4) + 1644))() ) break; *(_DWORD *)(v15 + 4 * dword_74971C + 46) = a2; v15 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 30) + 4) + 1644))(); if ( !v15 ) goto LABEL_26; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v15 + 2208))(v15, 6); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal5"); v36 = (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 1"; LABEL_40: sub_462120(*(void **)(v15 + 122), v36); LABEL_41: if ( dword_74971C > -1 ) --dword_74971C; v49 = -1; goto LABEL_5; } LABEL_26: ++dword_13244DAC[dword_74971C]; v17 = *(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 38) + 4) + 1644); dword_132450F8 = 0; v18 = v17(); if ( !v18 ) { LABEL_82: v26 = *(_DWORD *)((char *)v44 + 42); dword_132450F8 = 0; while ( 1 ) { v27 = (*(int (**)(void))(**(_DWORD **)(*(_DWORD *)v26 + 4) + 1644))(); v28 = v27; if ( !v27 ) break; if ( *(_DWORD *)(*(_DWORD *)(v27 + 102) + 4) >= (unsigned int)(a4 + *(_DWORD *)(v46 + 4)) ) break; ++dword_132450F8; if ( dword_132450F8 > 10000 ) { if ( !byte_7493ED ) goto LABEL_118; if ( byte_13253AE4 ) { sprintf(&v47, "%.255s", "Too many loop"); v34 = dword_13253960; if ( !dword_13253960 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_13253860) ) { v34 = 0; dword_13253960 = 0; goto LABEL_114; } v34 = fopen(byte_132539E4, "a+"); dword_13253960 = v34; if ( !v34 || (fprintf(v34, "%s : ", &unk_132539A4), (v34 = dword_13253960) == 0) ) { LABEL_114: if ( byte_7493ED && byte_13253AE4 && v34 ) { sub_654AB0(10, v34); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } goto LABEL_118; } } fputs(&v47, v34); } v34 = dword_13253960; goto LABEL_114; } if ( !sub_548740((void *)v27) ) goto LABEL_118; if ( !(v28 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v28 + 42) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v28 + 2208))(v28, 8); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal7"); sub_462120(*(void **)(v28 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 3"); LABEL_118: if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v49 = -1; goto LABEL_6; } v29 = *(_DWORD *)(v46 + 4); v30 = (**(_DWORD **)(v28 + 102) - *(_DWORD *)v46) * (**(_DWORD **)(v28 + 102) - *(_DWORD *)v46) + (*(_DWORD *)(*(_DWORD *)(v28 + 102) + 4) - v29) * (*(_DWORD *)(*(_DWORD *)(v28 + 102) + 4) - v29); if ( *(_DWORD *)(v28 + 4 * dword_74971C + 46) == a2 && *(_WORD *)(v28 + 4) != a11 && v30 < (unsigned int)v42 ) { if ( !v43 || (v31 = *(_DWORD *)(v28 + 102), *(_DWORD *)v46 == *(_DWORD *)v31) && v29 == *(_DWORD *)(v31 + 4) || ((sub_5495B0((int)&v38, v31, v46), v43 == -4) ? (v32 = 0) : (v32 = v43 + 8), v33 = v39 * *(_DWORD *)v32 + v40 * *(_DWORD *)(v32 + 4), v38 = &off_6B039C, v33 >= v41) ) { if ( (*(_DWORD *)((char *)v44 + 78) == *(_DWORD *)(v28 + 78) && *(_DWORD *)((char *)v44 + 82) == *(_DWORD *)(v28 + 82) || *((_BYTE *)v44 + 86) || *(_BYTE *)(v28 + 86)) && !(unsigned __int8)a6(v28 + a7, v44, v30) ) goto LABEL_41; } } v26 = *(_DWORD *)(v28 + 42); } if ( a10 ) v35 = a6((char *)v44 + a7, v44, 0); else v35 = 1; if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v49 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); return v35; } while ( 1 ) { if ( (unsigned int)(v13 + *(_DWORD *)(*(_DWORD *)(v18 + 102) + 4)) <= *(_DWORD *)(v46 + 4) ) goto LABEL_82; ++dword_132450F8; if ( dword_132450F8 > 10000 ) break; if ( !sub_548740((void *)v18) ) goto LABEL_79; if ( !(v18 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v18 + 38) + 4) + 1644))()) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v18 + 2208))(v18, 7); sub_4623E0(&unk_CFCE178, "so_AllOfRangeNomal6"); sub_462120(*(void **)(v18 + 122), (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal 2"); LABEL_79: if ( dword_74971C > -1 ) --dword_74971C; --dword_750CB8; v49 = -1; goto LABEL_6; } v19 = *(_DWORD *)(v46 + 4); v20 = (**(_DWORD **)(v18 + 102) - *(_DWORD *)v46) * (**(_DWORD **)(v18 + 102) - *(_DWORD *)v46) + (*(_DWORD *)(*(_DWORD *)(v18 + 102) + 4) - v19) * (*(_DWORD *)(*(_DWORD *)(v18 + 102) + 4) - v19); if ( *(_DWORD *)(v18 + 4 * dword_74971C + 46) == a2 && *(_WORD *)(v18 + 4) != a11 && v20 < (unsigned int)v42 ) { if ( !v43 || (v21 = *(_DWORD *)(v18 + 102), *(_DWORD *)v46 == *(_DWORD *)v21) && v19 == *(_DWORD *)(v21 + 4) || ((sub_5495B0((int)&v38, v21, v46), v43 == -4) ? (v22 = 0) : (v22 = v43 + 8), v24 = v39 * *(_DWORD *)v22 + v40 * *(_DWORD *)(v22 + 4), v38 = &off_6B039C, v24 >= v41) ) { if ( (*(_DWORD *)((char *)v44 + 78) == *(_DWORD *)(v18 + 78) && *(_DWORD *)((char *)v44 + 82) == *(_DWORD *)(v18 + 82) || *((_BYTE *)v44 + 86) || *(_BYTE *)(v18 + 86)) && !(unsigned __int8)a6(v18 + a7, v44, v20) ) goto LABEL_41; } } v18 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v18 + 38) + 4) + 1644))(); if ( !v18 ) goto LABEL_82; v13 = a4; } if ( !byte_7493ED ) goto LABEL_79; if ( byte_13253AE4 ) { sprintf(&v47, "%.255s", "Too many loop"); v25 = dword_13253960; if ( !dword_13253960 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_13253860) ) { v25 = 0; dword_13253960 = 0; goto LABEL_75; } v25 = fopen(byte_132539E4, "a+"); dword_13253960 = v25; if ( !v25 || (fprintf(v25, "%s : ", &unk_132539A4), (v25 = dword_13253960) == 0) ) { LABEL_75: if ( byte_7493ED && byte_13253AE4 && v25 ) { sub_654AB0(10, v25); fflush(dword_13253960); fclose(dword_13253960); dword_13253960 = 0; } goto LABEL_79; } } fputs(&v47, v25); } v25 = dword_13253960; goto LABEL_75; } if ( dword_74971C > -1 ) --dword_74971C; v49 = -1; LABEL_5: --dword_750CB8; LABEL_6: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); return 0; } // 30: found interdependent unknown calls // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 7493ED: using guessed type char byte_7493ED; // 74971C: using guessed type int dword_74971C; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13244DAC: using guessed type int dword_13244DAC[]; // 132450F8: using guessed type int dword_132450F8; // 13253AE4: using guessed type char byte_13253AE4; //----- (0054BF00) -------------------------------------------------------- signed __int16 __thiscall sub_54BF00(void *this) { void *v1; // esi@1 int v2; // eax@1 signed __int16 result; // ax@2 int v4; // ecx@3 int v5; // eax@3 _BYTE *v6; // eax@3 signed int v7; // eax@3 signed __int16 v8; // si@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mapindex"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mapindex"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 122); if ( v2 ) { v4 = *(_DWORD *)(v2 + 12); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); v6[12] = 0; v7 = sub_639620(&unk_14D20404, v6); v8 = -1; if ( v7 != -1 ) v8 = v7; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mapindex"); result = v8; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mapindex"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0054C020) -------------------------------------------------------- void __thiscall sub_54C020(int this) { int v1; // esi@1 v1 = this; sub_588340((void *)(this + 76)); sub_4BC920(v1); } //----- (0054C080) -------------------------------------------------------- void *__thiscall sub_54C080(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_588340((char *)this + 76); sub_4BC920((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0054C0F0) -------------------------------------------------------- int __thiscall sub_54C0F0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_briefequipset"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_briefequipset"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 37) = sub_640190((char *)v1 + 32816, 1); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 39) = sub_640190((char *)v1 + 32816, 24); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 41) = sub_640190((char *)v1 + 32816, 12); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 43) = sub_640190((char *)v1 + 32816, 7); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 45) = sub_640190((char *)v1 + 32816, 10); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 47) = sub_640190((char *)v1 + 32816, 19); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 49) = sub_640190((char *)v1 + 32816, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 51) = sub_640190((char *)v1 + 32816, 22); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 53) = sub_640190((char *)v1 + 32816, 20); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 55) = sub_640190((char *)v1 + 32816, 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 57) = sub_640190((char *)v1 + 32816, 27); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 59) = sub_640190((char *)v1 + 32816, 28); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 61) = sub_640190((char *)v1 + 32816, 26); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 63) = sub_640190((char *)v1 + 32816, 11); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 65) = sub_640190((char *)v1 + 32816, 13); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 67) = sub_640190((char *)v1 + 32816, 9); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 69) = sub_640190((char *)v1 + 32816, 17); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 71) = sub_640190((char *)v1 + 32816, 18); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 73) = sub_640190((char *)v1 + 32816, 25); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 75) = sub_640190((char *)v1 + 32816, 29); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77) ^= (sub_6401D0((char *)v1 + 32816, 10) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77) = 16 * sub_6401D0((char *)v1 + 32816, 12) | *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78) ^= (sub_6401D0((char *)v1 + 32816, 7) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78) = *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78) & 0xF | 16 * sub_6401D0((char *)v1 + 32816, 19); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 79) ^= (sub_6401D0((char *)v1 + 32816, 21) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 79)) & 0xF; *((_DWORD *)v1 + 38851) = 7; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_briefequipset"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054C400) -------------------------------------------------------- int __thiscall sub_54C400(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 37) = sub_640190((char *)v1 + 32816, 1); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 39) = sub_640190((char *)v1 + 32816, 24); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 41) = sub_640190((char *)v1 + 32816, 12); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 43) = sub_640190((char *)v1 + 32816, 7); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 45) = sub_640190((char *)v1 + 32816, 10); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 47) = sub_640190((char *)v1 + 32816, 19); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 49) = sub_640190((char *)v1 + 32816, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 51) = sub_640190((char *)v1 + 32816, 22); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 53) = sub_640190((char *)v1 + 32816, 20); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 55) = sub_640190((char *)v1 + 32816, 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 57) = sub_640190((char *)v1 + 32816, 27); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 59) = sub_640190((char *)v1 + 32816, 28); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 61) = sub_640190((char *)v1 + 32816, 26); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 63) = sub_640190((char *)v1 + 32816, 11); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 65) = sub_640190((char *)v1 + 32816, 13); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 67) = sub_640190((char *)v1 + 32816, 9); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 69) = sub_640190((char *)v1 + 32816, 17); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 71) = sub_640190((char *)v1 + 32816, 18); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 73) = sub_640190((char *)v1 + 32816, 25); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 75) = sub_640190((char *)v1 + 32816, 29); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77) ^= (sub_6401D0((char *)v1 + 32816, 10) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77) = 16 * sub_6401D0((char *)v1 + 32816, 12) | *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 77) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78) ^= (sub_6401D0((char *)v1 + 32816, 7) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78) = *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 78) & 0xF | 16 * sub_6401D0((char *)v1 + 32816, 19); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 79) ^= (sub_6401D0((char *)v1 + 32816, 21) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 79)) & 0xF; *((_DWORD *)v1 + 38851) = 7; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054C710) -------------------------------------------------------- int __thiscall sub_54C710(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 37) = sub_640190((char *)v1 + 32816, 1); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 39) = sub_640190((char *)v1 + 32816, 24); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 41) = sub_640190((char *)v1 + 32816, 12); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 43) = sub_640190((char *)v1 + 32816, 7); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 45) = sub_640190((char *)v1 + 32816, 10); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 47) = sub_640190((char *)v1 + 32816, 19); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 49) = sub_640190((char *)v1 + 32816, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 51) = sub_640190((char *)v1 + 32816, 22); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 53) = sub_640190((char *)v1 + 32816, 20); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 55) = sub_640190((char *)v1 + 32816, 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 57) = sub_640190((char *)v1 + 32816, 27); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 59) = sub_640190((char *)v1 + 32816, 28); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 61) = sub_640190((char *)v1 + 32816, 26); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 63) = sub_640190((char *)v1 + 32816, 11); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 65) = sub_640190((char *)v1 + 32816, 13); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 67) = sub_640190((char *)v1 + 32816, 9); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 69) = sub_640190((char *)v1 + 32816, 17); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 71) = sub_640190((char *)v1 + 32816, 18); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 73) = sub_640190((char *)v1 + 32816, 25); *(_WORD *)(*(_DWORD *)((char *)v1 + 32650) + 75) = sub_640190((char *)v1 + 32816, 29); *((_BYTE *)v1 + 155500) ^= (sub_6401D0((char *)v1 + 32816, 10) ^ *((_BYTE *)v1 + 155500)) & 0xF; *((_BYTE *)v1 + 155500) = 16 * sub_6401D0((char *)v1 + 32816, 12) | *((_BYTE *)v1 + 155500) & 0xF; *((_BYTE *)v1 + 155501) ^= (sub_6401D0((char *)v1 + 32816, 7) ^ *((_BYTE *)v1 + 155501)) & 0xF; *((_BYTE *)v1 + 155501) = 16 * sub_6401D0((char *)v1 + 32816, 19) | *((_BYTE *)v1 + 155501) & 0xF; *((_BYTE *)v1 + 155502) ^= (sub_6401D0((char *)v1 + 32816, 21) ^ *((_BYTE *)v1 + 155502)) & 0xF; *((_DWORD *)v1 + 38851) = 7; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054CA20) -------------------------------------------------------- void *__thiscall sub_54CA20(void *this, const char *a2) { void *v2; // esi@1 void *v3; // ebx@1 char *v4; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v4 = (char *)off_849C18 + 2; strncpy((char *)off_849C18 + 2, a2, 0x80u); *(_WORD *)v3 = 15361; strncpy(v4, a2, 0x80u); v4[141] = 0; sub_50DE50((char *)v2 + 84520); *((_BYTE *)v2 + 23825) &= 0xFBu; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054CB10) -------------------------------------------------------- void *__thiscall sub_54CB10(void *this, int a2, const char *a3, const void *a4) { void *v4; // edi@1 char v5; // al@1 char *v6; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuItem"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_BYTE *)off_849C18 + 143); v6 = (char *)off_849C18 + 2; if ( (unsigned __int8)v5 < 0xAu ) { *(&v6[32 * (unsigned __int8)v5 + 142] + (unsigned __int8)v5) = v5; strncpy(&v6[32 * (unsigned __int8)v6[141] + 143] + (unsigned __int8)v6[141], a3, 0x20u); sub_50DF00((char *)v4 + 84520, a2, a4); ++v6[141]; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuItem : Too many items", (unsigned __int8)v5); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuItem"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054CC20) -------------------------------------------------------- void *__thiscall sub_54CC20(void *this, char a2, __int16 a3, int a4, __int16 a5) { void *v5; // esi@1 void *v6; // eax@1 int v7; // ecx@1 int v8; // edi@3 int v9; // eax@5 int v10; // eax@6 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)((char *)off_849C18 + 131) = a3; v7 = a4; *((_BYTE *)v6 + 130) = a2; if ( !a4 ) v7 = *(_DWORD *)((char *)v5 + 102); *(_DWORD *)((char *)v6 + 133) = *(_DWORD *)v7; *(_DWORD *)((char *)v6 + 137) = *(_DWORD *)(v7 + 4); *(_WORD *)((char *)v6 + 141) = a5; v8 = 33 * *((_BYTE *)v6 + 143) + 144; if ( sub_4C81E0(&off_849C18, v8) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuOpen : Packet Too Long", v8); } v10 = *(_DWORD *)((char *)v5 + 102); *((_DWORD *)v5 + 21130) = *(_DWORD *)v10; *((_DWORD *)v5 + 21131) = *(_DWORD *)(v10 + 4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054CD70) -------------------------------------------------------- int __thiscall sub_54CD70(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // ST0C_4@1 unsigned int v6; // ST08_4@1 unsigned int v7; // esi@1 int v8; // esi@9 int v9; // eax@16 char v11; // [sp+10h] [bp-150h]@7 char v12; // [sp+110h] [bp-50h]@1 unsigned int v13; // [sp+150h] [bp-10h]@1 int v14; // [sp+15Ch] [bp-4h]@1 int v15; // [sp+160h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DummyFunction"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DummyFunction"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_WORD *)a2 & 0x3FF; v6 = (unsigned int)*(_WORD *)a2 >> 10; v14 = 0; sprintf(&v12, "%d/%d", v6, v5); sub_6390B0(&unk_86DDD8, (int)"Invalid protocol", (int)&v12); v7 = (unsigned int)*(_WORD *)a2 >> 10; if ( byte_7493ED ) { if ( byte_132535F4 ) { sub_418E40((__time32_t)byte_13253370); if ( dword_13253470 ) fprintf(dword_13253470, "%d", v7); } if ( byte_7493ED ) { if ( byte_132535F4 ) { sprintf(&v11, "%.255s", "/"); sub_418E40((__time32_t)byte_13253370); if ( dword_13253470 ) fputs(&v11, dword_13253470); } } } v8 = *(_WORD *)a2 & 0x3FF; if ( byte_7493ED ) { if ( byte_132535F4 ) { sub_418E40((__time32_t)byte_13253370); if ( dword_13253470 ) fprintf(dword_13253470, "%d", v8); } if ( byte_7493ED && byte_132535F4 && dword_13253470 ) { v9 = sub_418E40((__time32_t)byte_13253370); sub_654AB0(10, (FILE *)v9); fflush(dword_13253470); fclose(dword_13253470); dword_13253470 = 0; } } (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1528))(v4, 1670, 0, 0); --dword_750CB8; v14 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DummyFunction"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132535F4: using guessed type char byte_132535F4; //----- (0054CF80) -------------------------------------------------------- int __thiscall sub_54CF80(int this) { int v1; // esi@1 v1 = this; sub_4BCFE0(this); sub_4BC840((void *)(v1 + 344)); sub_4BC860((void *)(v1 + 368)); sub_4BC990((void *)(v1 + 424)); sub_4BC8C0((void *)(v1 + 448)); sub_4BC860((void *)(v1 + 504)); *(_DWORD *)(v1 + 504) = &off_6D7F34; sub_4BC860((void *)(v1 + 560)); *(_DWORD *)(v1 + 560) = &off_6D7FAC; return v1; } // 6D7F34: using guessed type int (__stdcall *off_6D7F34)(int, int, int); // 6D7FAC: using guessed type int (__stdcall *off_6D7FAC)(int, int, int); //----- (0054D040) -------------------------------------------------------- void __thiscall sub_54D040(void *this) { int v1; // esi@1 v1 = (int)this; sub_4BC920((int)((char *)this + 560)); *(_DWORD *)(v1 + 504) = &off_6D7F34; sub_4BC920(v1 + 504); sub_4BC920(v1 + 448); sub_4BC9B0((void *)(v1 + 424)); sub_4BC920(v1 + 368); sub_4BC9B0((void *)(v1 + 344)); sub_4BCA80(v1); } // 6D7F34: using guessed type int (__stdcall *off_6D7F34)(int, int, int); //----- (0054D0F0) -------------------------------------------------------- int __thiscall sub_54D0F0(void *this, __int16 a2, __int16 a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SendProtocol"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SendProtocol"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = (a2 << 10) ^ a3 & 0x3FF; sub_4C81E0(&off_849C18, 2); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 12))(v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SendProtocol"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054D1D0) -------------------------------------------------------- int __thiscall sub_54D1D0(void *this, __int16 a2, __int16 a3, __int16 a4) { void *v4; // esi@1 int v5; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SendErrorCode"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SendErrorCode"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13253ED4 & 1) ) { dword_13253ED4 |= 1u; dword_13253EC8 = 0; dword_13253ED0 = 0; atexit(nullsub_120); } dword_13253EC8 = (int)&dword_13253E88; dword_13253ECC = 64; LOWORD(dword_13253E88) = (a3 ^ ((a2 << 10) | dword_13253E88 & 0x3FF)) & 0x3FF ^ ((a2 << 10) | dword_13253E88 & 0x3FF); HIWORD(dword_13253E88) = a4; sub_4C81E0(&dword_13253EC8, 4); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 12))(v5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SendErrorCode"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253E88: using guessed type int dword_13253E88; // 13253EC8: using guessed type int dword_13253EC8; // 13253ECC: using guessed type int dword_13253ECC; // 13253ED0: using guessed type int dword_13253ED0; // 13253ED4: using guessed type int dword_13253ED4; //----- (0054D310) -------------------------------------------------------- int __thiscall sub_54D310(void *this) { int v1; // esi@1 unsigned __int8 v2; // al@1 int v3; // eax@2 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_allparametercalculate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_allparametercalculate"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(_BYTE *)(v1 + 32766) >> 2) & 0x1F; if ( v2 >= 0x40u ) v3 = (int)&unk_8BB3B0; else v3 = dword_A9F908[v2]; *(_DWORD *)(v1 + 4116) = v3; sub_516340((void *)(v1 + 4120), 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); sub_4C8F40((void *)(v1 + 4120)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_allparametercalculate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // A9F908: using guessed type int dword_A9F908[]; //----- (0054D410) -------------------------------------------------------- int __thiscall sub_54D410(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_BroadcastLogout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_BroadcastLogout"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)((char *)v1 + 122) ) { sub_549900(v1); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_BroadcastLogout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054D4C0) -------------------------------------------------------- int __thiscall sub_54D4C0(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // esi@4 int v6; // eax@6 bool v7; // zf@7 _BYTE *v8; // esi@7 int v9; // eax@26 char v11; // [sp+10h] [bp-310h]@17 char v12; // [sp+110h] [bp-210h]@13 char v13; // [sp+210h] [bp-110h]@9 unsigned int v14; // [sp+310h] [bp-10h]@1 int v15; // [sp+31Ch] [bp-4h]@1 int v16; // [sp+320h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Disconnect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Disconnect"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( a2 != 1665 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Disconnect", a2); if ( !a4 ) { v5 = off_849C18; *(_DWORD *)off_849C18 = -62438; *((_DWORD *)v5 + 1) = -1; *((_WORD *)v5 + 7) = a2; *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *((_WORD *)v5 + 6) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); if ( sub_4C81E0(&off_849C18, 16) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Disconnect : Packet Too Long", 16); } } dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v7 = byte_7493ED == 0; v8 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v8 = *(_DWORD *)((char *)v4 + 32665); *((_DWORD *)v8 + 1) = *(_DWORD *)((char *)v4 + 32669); *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 32673); *((_DWORD *)v8 + 3) = *(_DWORD *)((char *)v4 + 32677); *((_DWORD *)v8 + 4) = *(_DWORD *)((char *)v4 + 32681); v8[20] = 0; if ( !v7 ) { if ( byte_13359DE4 ) { sprintf(&v13, "%.255s", "Char so_Disconnect "); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v13, dword_13359C60); } if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf(&v12, "%.255s", v8); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v12, dword_13359C60); } if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf(&v11, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v11, dword_13359C60); } if ( byte_7493ED ) { if ( byte_13359DE4 ) { sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fprintf(dword_13359C60, "%d", a2); } if ( byte_7493ED && byte_13359DE4 && dword_13359C60 ) { v9 = sub_418E40((__time32_t)byte_13359B60); sub_654AB0(10, (FILE *)v9); fflush(dword_13359C60); fclose(dword_13359C60); dword_13359C60 = 0; } } } } } (*(void (__thiscall **)(void *, int))(*(_DWORD *)v4 + 1532))(v4, a3); --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Disconnect"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359DE4: using guessed type char byte_13359DE4; // 14D12A00: using guessed type int dword_14D12A00; //----- (0054D7E0) -------------------------------------------------------- int __thiscall sub_54D7E0(void *this) { void *v1; // esi@1 signed int v2; // edi@1 int v3; // ecx@1 int v4; // edx@3 int v5; // esi@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_EncSeedSet"); v2 = dword_703A38; dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_EncSeedSet"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_13253ED8 + 1; dword_13253ED8 = v3; if ( v3 >= v2 ) { v3 = 0; dword_13253ED8 = 0; } v4 = (unsigned __int16)v3 % v2; *((_WORD *)v1 + 16196) = v4; *((_WORD *)v1 + 16197) = v4; --dword_750CB8; v5 = v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_EncSeedSet"); return v5; } // 703A38: using guessed type int dword_703A38; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253ED8: using guessed type int dword_13253ED8; //----- (0054D890) -------------------------------------------------------- char __thiscall sub_54D890(void *this, int a2, unsigned __int16 a3) { int v3; // esi@1 char v4; // bl@1 __time32_t v5; // eax@5 __time32_t v6; // edi@5 FILE *v7; // eax@7 __time32_t v8; // eax@9 __time32_t v9; // edi@9 FILE *v10; // eax@11 __time32_t v11; // eax@13 int v13; // [sp+2Ch] [bp+Ch]@9 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectEachList::soel_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectEachList::soel_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_5493A0(v3, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_5494A0, 0, 0, 0); if ( !v4 ) ++*(_DWORD *)(v3 + 28); if ( *(_DWORD *)(v3 + 24) < (unsigned int)dword_14D129E8 ) { if ( *(_DWORD *)(v3 + 28) > 0u ) { v5 = sub_418EA0((__time32_t)byte_14D15498, (int)"ShineObjectEachList::soel_Routine - ObjectType["); v6 = v5; if ( byte_7493ED ) { if ( *(_BYTE *)(v5 + 644) ) { sub_418E40(v5); v7 = *(FILE **)(v6 + 256); if ( v7 ) fprintf(v7, "%d", a3); } } v13 = *(_DWORD *)(v3 + 28); v8 = sub_418EA0(v6, (int)"] LISTNO Count["); v9 = v8; if ( byte_7493ED ) { if ( *(_BYTE *)(v8 + 644) ) { sub_418E40(v8); v10 = *(FILE **)(v9 + 256); if ( v10 ) fprintf(v10, "%d", v13); } } v11 = sub_418EA0(v9, (int)"]"); sub_418F20(v11, (int)&unk_13359E04); *(_DWORD *)(v3 + 28) = 0; } *(_DWORD *)(v3 + 24) = dword_14D129E8 + 600; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectEachList::soel_Routine"); return v4; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0054DA30) -------------------------------------------------------- void __thiscall sub_54DA30(int this) { int v1; // esi@1 int v2; // ecx@1 int v3; // ecx@5 int v4; // ecx@9 int v5; // ecx@13 int v6; // ecx@17 int v7; // ecx@21 int v8; // ecx@25 int v9; // ecx@29 int v10; // ecx@33 int v11; // ecx@37 int v12; // ecx@41 int v13; // ecx@45 int v14; // ecx@49 void *v15; // eax@53 void *v16; // eax@55 void *v17; // eax@57 void *v18; // eax@59 void *v19; // eax@61 void *v20; // eax@63 void *v21; // eax@65 void *v22; // eax@67 void *v23; // eax@69 void *v24; // eax@71 void *v25; // eax@73 void *v26; // eax@75 void *v27; // eax@77 void *v28; // esi@79 v1 = this; *(_DWORD *)this = &off_6D8BEC; v2 = *(_DWORD *)(this + 24); if ( v2 ) { if ( *(_DWORD *)(v2 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v2 + 4))(3); else sub_6530A4((void *)(v2 - 4)); } v3 = *(_DWORD *)(v1 + 28); if ( v3 ) { if ( *(_DWORD *)(v3 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v3 + 4))(3); else sub_6530A4((void *)(v3 - 4)); } v4 = *(_DWORD *)(v1 + 36); if ( v4 ) { if ( *(_DWORD *)(v4 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v4 + 4))(3); else sub_6530A4((void *)(v4 - 4)); } v5 = *(_DWORD *)(v1 + 40); if ( v5 ) { if ( *(_DWORD *)(v5 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v5 + 4))(3); else sub_6530A4((void *)(v5 - 4)); } v6 = *(_DWORD *)(v1 + 44); if ( v6 ) { if ( *(_DWORD *)(v6 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v6 + 4))(3); else sub_6530A4((void *)(v6 - 4)); } v7 = *(_DWORD *)(v1 + 48); if ( v7 ) { if ( *(_DWORD *)(v7 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v7 + 4))(3); else sub_6530A4((void *)(v7 - 4)); } v8 = *(_DWORD *)(v1 + 52); if ( v8 ) { if ( *(_DWORD *)(v8 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v8 + 4))(3); else sub_6530A4((void *)(v8 - 4)); } v9 = *(_DWORD *)(v1 + 32); if ( v9 ) { if ( *(_DWORD *)(v9 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v9 + 4))(3); else sub_6530A4((void *)(v9 - 4)); } v10 = *(_DWORD *)(v1 + 56); if ( v10 ) { if ( *(_DWORD *)(v10 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v10 + 4))(3); else sub_6530A4((void *)(v10 - 4)); } v11 = *(_DWORD *)(v1 + 60); if ( v11 ) { if ( *(_DWORD *)(v11 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v11 + 4))(3); else sub_6530A4((void *)(v11 - 4)); } v12 = *(_DWORD *)(v1 + 64); if ( v12 ) { if ( *(_DWORD *)(v12 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v12 + 4))(3); else sub_6530A4((void *)(v12 - 4)); } v13 = *(_DWORD *)(v1 + 68); if ( v13 ) { if ( *(_DWORD *)(v13 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v13 + 4))(3); else sub_6530A4((void *)(v13 - 4)); } v14 = *(_DWORD *)(v1 + 72); if ( v14 ) { if ( *(_DWORD *)(v14 - 4) ) (*(void (__stdcall **)(signed int))(*(_DWORD *)v14 + 4))(3); else sub_6530A4((void *)(v14 - 4)); } v15 = *(void **)(v1 + 468); *(_DWORD *)(v1 + 460) = &off_6D8130; if ( v15 ) sub_6530A4(v15); v16 = *(void **)(v1 + 436); *(_DWORD *)(v1 + 428) = &off_6D8130; if ( v16 ) sub_6530A4(v16); v17 = *(void **)(v1 + 404); *(_DWORD *)(v1 + 396) = &off_6D8130; if ( v17 ) sub_6530A4(v17); v18 = *(void **)(v1 + 372); *(_DWORD *)(v1 + 364) = &off_6D8130; if ( v18 ) sub_6530A4(v18); v19 = *(void **)(v1 + 340); *(_DWORD *)(v1 + 332) = &off_6D8130; if ( v19 ) sub_6530A4(v19); v20 = *(void **)(v1 + 308); *(_DWORD *)(v1 + 300) = &off_6D8130; if ( v20 ) sub_6530A4(v20); v21 = *(void **)(v1 + 276); *(_DWORD *)(v1 + 268) = &off_6D8130; if ( v21 ) sub_6530A4(v21); v22 = *(void **)(v1 + 244); *(_DWORD *)(v1 + 236) = &off_6D8130; if ( v22 ) sub_6530A4(v22); v23 = *(void **)(v1 + 212); *(_DWORD *)(v1 + 204) = &off_6D8130; if ( v23 ) sub_6530A4(v23); v24 = *(void **)(v1 + 180); *(_DWORD *)(v1 + 172) = &off_6D8130; if ( v24 ) sub_6530A4(v24); v25 = *(void **)(v1 + 148); *(_DWORD *)(v1 + 140) = &off_6D8130; if ( v25 ) sub_6530A4(v25); v26 = *(void **)(v1 + 116); *(_DWORD *)(v1 + 108) = &off_6D8130; if ( v26 ) sub_6530A4(v26); v27 = *(void **)(v1 + 84); *(_DWORD *)(v1 + 76) = &off_6D8130; if ( v27 ) sub_6530A4(v27); *(_DWORD *)v1 = &off_6D8154; v28 = *(void **)(v1 + 8); if ( v28 ) sub_6530A4(v28); } // 6D8130: using guessed type int (__thiscall *off_6D8130)(void *, char); // 6D8154: using guessed type int (__thiscall *off_6D8154)(void *, char); // 6D8BEC: using guessed type int (__thiscall *off_6D8BEC)(void *, char); //----- (0054DDA0) -------------------------------------------------------- int __thiscall sub_54DDA0(void *this, __int16 a2) { void *v2; // edi@1 int v3; // esi@1 char v4; // al@1 int v5; // edi@2 unsigned __int16 v7; // [sp+10h] [bp-14h]@1 __int16 v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_GetObjectAbsolute"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_GetObjectAbsolute"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; sub_5CF620(&v8); LOBYTE(v9) = 1; v8 = a2; v3 = 0; v4 = sub_6303C0(&v8, (int)&v7); if ( (unsigned __int8)v4 < 0xDu ) { v5 = *((_DWORD *)v2 + (unsigned __int8)v4 + 123); if ( v7 < *(_WORD *)(v5 + 4) ) v3 = *(_DWORD *)(*(_DWORD *)(v5 + 8) + 12 * v7); } LOBYTE(v9) = 0; nullsub_2(&v8); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_GetObjectAbsolute"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054DE90) -------------------------------------------------------- int __thiscall sub_54DE90(void *this, __int16 a2) { void *v2; // esi@1 int v3; // edi@1 char v4; // bl@1 char v5; // al@1 int v6; // ecx@2 int v7; // eax@3 unsigned __int16 v9; // [sp+14h] [bp-14h]@1 __int16 v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_GetObject"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_GetObject"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v11 = 0; sub_5CF620(&v10); LOBYTE(v11) = 1; v10 = a2; v4 = 0; v5 = sub_6303C0(&v10, (int)&v9); if ( (unsigned __int8)v5 < 0xDu ) { v6 = *((_DWORD *)v2 + (unsigned __int8)v5 + 123); if ( v9 < *(_WORD *)(v6 + 4) ) { v7 = *(_DWORD *)(v6 + 8); v4 = *(_BYTE *)(v7 + 12 * v9 + 8); v3 = *(_DWORD *)(v7 + 12 * v9); } } LOBYTE(v11) = 0; nullsub_2(&v10); --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_GetObject"); return v4 != 0 ? v3 : 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054DF90) -------------------------------------------------------- int __thiscall sub_54DF90(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@2 void *v5; // edi@2 int v6; // esi@15 int result; // eax@17 __int16 v8; // [sp+10h] [bp-10h]@15 int v9; // [sp+1Ch] [bp-4h]@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_AllocObject"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_AllocObject"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; switch ( (unsigned __int16)a3 ) { case 0u: v4 = sub_4CD350((char *)v3 + 76, (int)&a3); v5 = sub_547110; goto LABEL_15; case 1u: v4 = sub_4CD350((char *)v3 + 108, (int)&a3); v5 = sub_5470E0; goto LABEL_15; case 2u: v4 = sub_4CD350((char *)v3 + 172, (int)&a3); v5 = sub_547080; goto LABEL_15; case 4u: v4 = sub_4CD350((char *)v3 + 204, (int)&a3); v5 = sub_547170; goto LABEL_15; case 7u: v4 = sub_4CD350((char *)v3 + 236, (int)&a3); v5 = sub_547200; goto LABEL_15; case 5u: v4 = sub_4CD350((char *)v3 + 268, (int)&a3); v5 = sub_547050; goto LABEL_15; case 8u: v4 = sub_4CD350((char *)v3 + 300, (int)&a3); v5 = sub_547140; goto LABEL_15; case 9u: v4 = sub_4CD350((char *)v3 + 140, (int)&a3); v5 = sub_5471A0; goto LABEL_15; case 6u: v4 = sub_4CD350((char *)v3 + 332, (int)&a3); v5 = sub_5471D0; goto LABEL_15; case 3u: v4 = sub_4CD350((char *)v3 + 364, (int)&a3); v5 = sub_5470B0; goto LABEL_15; case 0xAu: v4 = sub_4CD350((char *)v3 + 396, (int)&a3); v5 = sub_547230; goto LABEL_15; case 0xBu: v4 = sub_4CD350((char *)v3 + 428, (int)&a3); v5 = sub_547260; goto LABEL_15; case 0xCu: v4 = sub_4CD350((char *)v3 + 460, (int)&a3); v5 = sub_547290; LABEL_15: v6 = v4; sub_5CF620(&v8); LOBYTE(v9) = 1; ((void (__thiscall *)(void *, int))v5)(&v8, a3); *(_WORD *)a2 = v8; if ( v6 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 3696))(v6); LOBYTE(v9) = 0; nullsub_2(&v8); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_AllocObject"); result = v6; break; default: sub_639100(&unk_86DDD8, (int)"ShineObjectList::pl_allocobject", (unsigned __int16)a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_AllocObject"); result = 0; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E220) -------------------------------------------------------- char __thiscall sub_54E220(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineCharRegnumFinder::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineCharRegnumFinder::lid_Call"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2) == *((_DWORD *)v3 + 1) ) { *((_DWORD *)v3 + 2) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineCharRegnumFinder::lid_Call"); result = 0; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineCharRegnumFinder::lid_Call"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E2F0) -------------------------------------------------------- char __thiscall sub_54E2F0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // esi@1 int v5; // eax@1 char result; // al@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineCharIDFinder::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineCharIDFinder::lid_Call"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); if ( *(_DWORD *)v5 != *(_DWORD *)v4 || *(_DWORD *)(v5 + 4) != *(_DWORD *)(v4 + 4) || *(_DWORD *)(v5 + 8) != *(_DWORD *)(v4 + 8) || *(_DWORD *)(v5 + 12) != *(_DWORD *)(v4 + 12) || *(_DWORD *)(v5 + 16) != *(_DWORD *)(v4 + 16) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineCharIDFinder::lid_Call"); result = 1; } else { *((_DWORD *)v3 + 2) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineCharIDFinder::lid_Call"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E400) -------------------------------------------------------- char __thiscall sub_54E400(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineMobIDFinder::lid_Call"); dword_7508B8[dword_750CB8] = (int)"ShineMobIDFinder::lid_Call"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1800))(a2) == *((_WORD *)v3 + 2) ) { *((_DWORD *)v3 + 2) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineMobIDFinder::lid_Call"); result = 0; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineMobIDFinder::lid_Call"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E4D0) -------------------------------------------------------- int __thiscall sub_54E4D0(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-1Ch]@1 int v6; // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"ShineObjectManager::som_FindPlayer"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_FindPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_FindPlayer"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v5 = &off_6D8CA4; v6 = a2; v7 = 0; LOBYTE(v9) = 1; sub_43C470((int)((char *)v2 + 172), (int)&v5); v3 = v7; --dword_750CB8; v5 = &off_6B22DC; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FindPlayer"); return v3; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6D8CA4: using guessed type int (__stdcall *off_6D8CA4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E5A0) -------------------------------------------------------- int __thiscall sub_54E5A0(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-1Ch]@1 int v6; // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"ShineObjectManager::som_FindPlayer"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_FindPlayer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_FindPlayer"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v5 = &off_6D8CCC; v6 = a2; v7 = 0; LOBYTE(v9) = 1; sub_43C470((int)((char *)v2 + 172), (int)&v5); v3 = v7; --dword_750CB8; v5 = &off_6B22DC; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FindPlayer"); return v3; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6D8CCC: using guessed type int (__stdcall *off_6D8CCC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E670) -------------------------------------------------------- int __thiscall sub_54E670(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-1Ch]@1 int v6; // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"ShineObjectManager::som_FindNPC"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_FindNPC"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_FindNPC"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v5 = &off_6D8CCC; v6 = a2; v7 = 0; LOBYTE(v9) = 1; sub_43C470((int)((char *)v2 + 204), (int)&v5); v3 = v7; --dword_750CB8; v5 = &off_6B22DC; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FindNPC"); return v3; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6D8CCC: using guessed type int (__stdcall *off_6D8CCC)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E740) -------------------------------------------------------- int __thiscall sub_54E740(void *this, __int16 a2) { void *v2; // esi@1 int v3; // esi@1 int (__stdcall **v5)(int, int); // [sp+8h] [bp-1Ch]@1 __int16 v6; // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v2 = this; v8 = (int)"ShineObjectManager::som_FindNPC"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_FindNPC"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_FindNPC"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v5 = &off_6D8CF0; v6 = a2; v7 = 0; LOBYTE(v9) = 1; sub_43C470((int)((char *)v2 + 204), (int)&v5); v3 = v7; --dword_750CB8; v5 = &off_6B22DC; v9 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FindNPC"); return v3; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); // 6D8CF0: using guessed type int (__stdcall *off_6D8CF0)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E810) -------------------------------------------------------- int __thiscall sub_54E810(void *this, int a2, int a3) { int (__stdcall **v4)(int, int); // [sp+4h] [bp-1Ch]@1 int v5; // [sp+8h] [bp-18h]@1 int v6; // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v5 = a2; v4 = &off_6D8D14; v6 = a3; v7 = 0; v8 = 0; sub_43C470((int)((char *)this + 428), (int)&v4); return v7; } // 6D8D14: using guessed type int (__stdcall *off_6D8D14)(int, int); //----- (0054E880) -------------------------------------------------------- int __thiscall sub_54E880(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_Reset"); dword_7508B8[dword_750CB8] = (int)"SlantedCoordList::CoordedNode::cn_Reset"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v1 + 2) = v1; *((_DWORD *)v1 + 1) = v1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_Reset"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054E8E0) -------------------------------------------------------- char __thiscall sub_54E8E0(void *this, const char *a2, int a3) { void *v3; // esi@1 int v4; // ST00_4@1 void *v5; // eax@1 __int16 v6; // dx@1 char v8; // [sp+Ch] [bp-1Ch]@1 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v3 = this; v9 = (int)"ShineObjectClass::ShineDoor::so_door_DoorAction"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_DoorAction"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDoor::so_door_DoorAction"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)(*(_DWORD *)((char *)v3 + 8003) + 13) = a3; v4 = *(_DWORD *)((char *)v3 + 8003) + 14; v10 = 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, a2, 0x20u); sub_49DEA0(*(void **)(*(_DWORD *)((char *)v3 + 122) + 20), *(_DWORD *)((char *)v3 + 8003) + 14, a3); v5 = off_849C18; *(_WORD *)off_849C18 = 27657; v6 = *((_WORD *)v3 + 2); *((_BYTE *)v5 + 4) = a3; *((_WORD *)v5 + 1) = v6; sub_4287B0(&v8, &off_849C18, 5); LOBYTE(v10) = 1; sub_549B60(v3, (int)&v8, 0); LOBYTE(v10) = 0; sub_428A70(&v8); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_door_DoorAction"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054EA20) -------------------------------------------------------- int __thiscall sub_54EA20(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 __int16 v4; // dx@1 char v6; // [sp+8h] [bp-1Ch]@1 int v7; // [sp+14h] [bp-10h]@1 int v8; // [sp+20h] [bp-4h]@1 v2 = this; v7 = (int)"ShineObjectClass::ShineBandit::so_bandit_ChangeType"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineBandit::so_bandit_ChangeType"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineBandit::so_bandit_ChangeType"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)(*(_DWORD *)((char *)v2 + 9918) + 194) = a2; v3 = off_849C18; *(_WORD *)off_849C18 = 27659; v4 = *((_WORD *)v2 + 2); *((_BYTE *)v3 + 4) = a2; v8 = 0; *((_WORD *)v3 + 1) = v4; sub_4287B0(&v6, &off_849C18, 5); LOBYTE(v8) = 1; sub_549B60(v2, (int)&v6, 0); LOBYTE(v8) = 0; sub_428A70(&v6); --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineBandit::so_bandit_ChangeType"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054EB10) -------------------------------------------------------- int __thiscall sub_54EB10(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // ST20_4@1 __int16 v6; // ax@1 char *v7; // ebx@1 void *v8; // edi@1 __int16 v9; // ax@1 int v10; // esi@1 int v11; // ecx@2 int v12; // esi@2 int v13; // eax@2 int v14; // esi@2 int v15; // eax@4 __int16 v17; // [sp+10h] [bp-88h]@1 int v18; // [sp+14h] [bp-84h]@1 char v19; // [sp+18h] [bp-80h]@2 char v20; // [sp+20h] [bp-78h]@2 __int16 v21; // [sp+84h] [bp-14h]@2 char v22; // [sp+86h] [bp-12h]@2 unsigned int v23; // [sp+88h] [bp-10h]@1 int v24; // [sp+94h] [bp-4h]@1 int v25; // [sp+98h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v4 = (unsigned int)&v25 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"; dword_750AB8[dword_750CB8++] = -1; v6 = (signed __int16)off_849C18; v7 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 2066; memcpy(v7, (const void *)(a2 + 2), 0x5Au); v8 = v5; v17 = v6; v9 = *((_WORD *)v5 + 2); v24 = 0; *((_WORD *)v7 + 6) = v9; *(_DWORD *)(v7 + 26) = timeGetTime(); v10 = (**((int (__stdcall ***)(_DWORD, _DWORD))v5 + 9121))(0, v4); v18 = v10; if ( *(_WORD *)(v10 + 8) == 2505 ) { *((_WORD *)v7 + 26) = 0; *(_DWORD *)(v7 + 54) = *(_DWORD *)v10; v11 = *(_DWORD *)(v10 + 4); *((_DWORD *)v7 + 17) = 0; *((_DWORD *)v7 + 18) = 0; *((_DWORD *)v7 + 19) = 0; *((_DWORD *)v7 + 20) = 0; *(_DWORD *)(v7 + 58) = v11; *((_WORD *)v7 + 31) = (_WORD)v7 + 90 - v17 - 2; *((_DWORD *)v7 + 16) = &unk_9C92400; *((_WORD *)v7 + 23) = *((_WORD *)v8 + 2); *((_DWORD *)v7 + 12) = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 836))(v8); memcpy(&v19, (const void *)v10, 0x6Cu); v12 = v10 + 108; v21 = *(_WORD *)v12; v22 = *(_BYTE *)(v12 + 2); v13 = (*(int (__stdcall **)(int))(**(_DWORD **)(v18 + 112) + 28))(v18 + 8); (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v18 + 112) + 32))(&v20, v13 + 1); v14 = sub_63D0C0(&v19, *(_DWORD *)(v18 + 112), 2505, (int)(v7 + 90)) - (_DWORD)(v7 + 90) + 92; *(_DWORD *)(v7 + 14) = timeGetTime(); if ( sub_4C81E0(&off_849C18, v14) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", v14); } } --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0054ED00) -------------------------------------------------------- int __thiscall sub_54ED00(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // edi@1 __int16 v6; // ax@1 int v7; // ebx@1 int v8; // esi@1 int v9; // ecx@2 int v10; // esi@2 int v11; // eax@2 int v12; // eax@4 __int16 v14; // [sp+10h] [bp-8Ch]@1 int v15; // [sp+14h] [bp-88h]@1 char v16; // [sp+1Ch] [bp-80h]@2 char v17; // [sp+24h] [bp-78h]@2 __int16 v18; // [sp+88h] [bp-14h]@2 char v19; // [sp+8Ah] [bp-12h]@2 unsigned int v20; // [sp+8Ch] [bp-10h]@1 int v21; // [sp+98h] [bp-4h]@1 int v22; // [sp+9Ch] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v4 = (unsigned int)&v22 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"; dword_750AB8[dword_750CB8++] = -1; v6 = (signed __int16)off_849C18; v7 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 2067; v21 = 0; v14 = v6; sub_5480D0(v7, a2 + 2); *(_WORD *)(v7 + 52) = *((_WORD *)v5 + 2); *(_DWORD *)(v7 + 66) = timeGetTime(); v8 = (*(int (__thiscall **)(char *, _DWORD, unsigned int))*((int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v5 + 9121))( (char *)v5 + 36484, 0, v4); v15 = v8; if ( *(_WORD *)(v8 + 8) == 2505 ) { *(_WORD *)(v7 + 92) = 0; *(_DWORD *)(v7 + 94) = *(_DWORD *)v8; v9 = *(_DWORD *)(v8 + 4); *(_DWORD *)(v7 + 108) = 0; *(_DWORD *)(v7 + 112) = 0; *(_DWORD *)(v7 + 116) = 0; *(_DWORD *)(v7 + 120) = 0; *(_DWORD *)(v7 + 98) = v9; *(_WORD *)(v7 + 102) = v7 + 130 - v14 - 2; *(_DWORD *)(v7 + 104) = &unk_9C92400; *(_WORD *)(v7 + 86) = *((_WORD *)v5 + 2); *(_DWORD *)(v7 + 88) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); memcpy(&v16, (const void *)v8, 0x6Cu); v10 = v8 + 108; v18 = *(_WORD *)v10; v19 = *(_BYTE *)(v10 + 2); v11 = (*(int (__stdcall **)(char *))(**(_DWORD **)(v15 + 112) + 28))(&v17); (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v15 + 112) + 32))(&v17, v11 + 1); sub_63D0C0(&v16, *(_DWORD *)(v15 + 112), 2505, v7 + 130); *(_DWORD *)(v7 + 54) = timeGetTime(); if ( sub_4C81E0(&off_849C18, a3 + 132) ) { v12 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v12); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", a3 + 132); } } --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0054EF00) -------------------------------------------------------- int __stdcall sub_54EF00(int a1, int a2) { char *v2; // ebx@1 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE"; dword_750AB8[dword_750CB8++] = -1; v2 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 2070; memcpy(v2, (const void *)(a1 + 2), 0x22u); *(_DWORD *)(v2 + 26) = timeGetTime(); *(_DWORD *)(v2 + 30) = timeGetTime(); if ( sub_4C81E0(&off_849C18, 36) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE : Packet Too Long", 36); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (0054F000) -------------------------------------------------------- int __stdcall sub_54F000(int a1, int a2) { char *v2; // ebx@1 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"; dword_750AB8[dword_750CB8++] = -1; v2 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 2069; memcpy(v2, (const void *)(a1 + 2), 0x3Au); *(_DWORD *)(v2 + 38) = timeGetTime(); *(_DWORD *)(v2 + 26) = timeGetTime(); if ( sub_4C81E0(&off_849C18, a2 + 60) ) { v3 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB : Packet Too Long", a2 + 60); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0054F110) -------------------------------------------------------- int __stdcall sub_54F110(int a1, int a2) { char *v2; // ebx@1 int v3; // eax@1 int v4; // esi@1 int v5; // eax@2 int v6; // eax@2 int v7; // edi@2 __int16 v8; // cx@2 int v9; // eax@2 int v10; // eax@3 int v11; // eax@5 int v13; // [sp+28h] [bp+8h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB"; dword_750AB8[dword_750CB8++] = -1; v2 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 2066; memcpy(v2, (const void *)(a1 + 2), 0x5Au); *(_DWORD *)(v2 + 18) = timeGetTime(); v3 = sub_54DE90(&unk_13253630, *((_WORD *)v2 + 6)); v4 = v3; if ( v3 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1148))(v3); v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 3668))(v5 + 3668, 0); v7 = v6; v8 = *(_WORD *)(v6 + 8); v9 = v6 + 8; v13 = v9; if ( v8 == 2505 ) { v10 = (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 28))(v9); (*(void (__stdcall **)(int, int))(**(_DWORD **)(v7 + 112) + 32))(v13, v10 + 1); *(_DWORD *)(v2 + 22) = timeGetTime(); if ( sub_4C81E0(&off_849C18, 92) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", 92); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054F280) -------------------------------------------------------- int __stdcall sub_54F280(int a1, int a2) { int v2; // esi@1 DWORD v3; // eax@1 __int16 v4; // ST04_2@1 int v5; // edi@1 int v6; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"; dword_750AB8[dword_750CB8++] = -1; v2 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 2067; sub_5480D0(v2, a1 + 2); v3 = timeGetTime(); v4 = *(_WORD *)(v2 + 52); *(_DWORD *)(v2 + 58) = v3; v5 = sub_54DE90(&unk_13253630, v4); if ( v5 ) { *(_DWORD *)(v2 + 62) = timeGetTime(); if ( sub_4C81E0(&off_849C18, 132) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", 132); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054F3A0) -------------------------------------------------------- int __stdcall sub_54F3A0(int a1, int a2) { char *v2; // ebx@1 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"; dword_750AB8[dword_750CB8++] = -1; v2 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 2069; memcpy(v2, (const void *)(a1 + 2), 0x3Au); *(_DWORD *)(v2 + 30) = timeGetTime(); *(_DWORD *)(v2 + 34) = timeGetTime(); if ( sub_4C81E0(&off_849C18, a2 + 60) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB : Packet Too Long", a2 + 60); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (0054F4B0) -------------------------------------------------------- int __stdcall sub_54F4B0(int a1, int a2) { int v2; // esi@1 void *v3; // eax@2 int v4; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_DB_UI_STATE_SAVE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHARSAVE_DB_UI_STATE_SAVE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 16422; *((_WORD *)v3 + 1) = *(_WORD *)(a1 + 8); if ( sub_4C81E0(&off_849C18, 4) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHARSAVE_DB_UI_STATE_SAVE_ACK : Packet Too Long", 4); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHARSAVE_DB_UI_STATE_SAVE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054F5C0) -------------------------------------------------------- int __thiscall sub_54F5C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // edi@9 int v7; // eax@16 int v9; // [sp-8h] [bp-128h]@4 char v10; // [sp+10h] [bp-110h]@7 unsigned int v11; // [sp+110h] [bp-10h]@1 int v12; // [sp+11Ch] [bp-4h]@1 int v13; // [sp+120h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( !(dword_13253EE0 & 1) ) { dword_13253EE0 |= 1u; word_13253EDC = 126; atexit(nullsub_122); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13253EDC ) { if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sprintf(&v10, "%.255s", "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD nCharNo - "); sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fputs(&v10, dword_14D16960); } } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fprintf(dword_14D16960, "%d", v6); } if ( byte_7493ED && byte_14D16AE4 && dword_14D16960 ) { v7 = sub_418E40((__time32_t)byte_14D16860); sub_654AB0(10, (FILE *)v7); fflush(dword_14D16960); fclose(dword_14D16960); dword_14D16960 = 0; } } *((_DWORD *)v4 + 40199) = 0; *((_DWORD *)v4 + 40200) = sub_5131E0; *((_DWORD *)v4 + 40203) = sub_452C70; *((_DWORD *)v4 + 40202) = 0; *((_DWORD *)v4 + 40204) = -1; --dword_750CB8; v12 = -1; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } else { dword_750CB8 -= v5; v12 = -1; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } return sub_467660((int)&unk_D020420, v9); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253EDC: using guessed type __int16 word_13253EDC; // 13253EE0: using guessed type int dword_13253EE0; // 14D16AE4: using guessed type char byte_14D16AE4; //----- (0054F7C0) -------------------------------------------------------- int __stdcall sub_54F7C0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_WHSHANDLEREPAIR_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_WHSHANDLEREPAIR_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 16))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_WHSHANDLEREPAIR_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054F8A0) -------------------------------------------------------- int __thiscall sub_54F8A0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"; dword_750AB8[dword_750CB8++] = -1; *((_WORD *)v2 + 77786) = *(_WORD *)(a2 + 8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054F910) -------------------------------------------------------- int __thiscall sub_54F910(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 2096; *((_BYTE *)v5 + 2) = dword_DA22944; *(_WORD *)((char *)v5 + 3) = dword_DA22948; if ( sub_4C81E0(&off_849C18, 5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ServerMenuOpen : Packet Too Long", 5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22944: using guessed type int dword_DA22944; // DA22948: using guessed type int dword_DA22948; //----- (0054FA10) -------------------------------------------------------- __int16 __thiscall sub_54FA10(int this, const void *a2) { __int16 v2; // cx@1 v2 = *(_WORD *)(this + 4); dword_8654D0 = dword_8654D4 & (dword_8654D0 + 1); word_8622D0[50 * dword_8654D0] = v2; memcpy((char *)&unk_8622D2 + 100 * dword_8654D0, a2, 0x61u); return dword_8654D0; } // 8622D0: using guessed type __int16 word_8622D0[]; // 8654D0: using guessed type int dword_8654D0; // 8654D4: using guessed type int dword_8654D4; //----- (0054FA60) -------------------------------------------------------- int __thiscall sub_54FA60(int this, unsigned __int16 a2) { __int16 *v2; // eax@2 int result; // eax@3 if ( a2 < 0x80u && (v2 = &word_8622D0[50 * a2]) != 0 && *v2 == *(_WORD *)(this + 4) ) result = (int)(v2 + 1); else result = 0; return result; } // 8622D0: using guessed type __int16 word_8622D0[]; //----- (0054FAA0) -------------------------------------------------------- int __thiscall sub_54FAA0(void *this) { void *v1; // edi@1 void *v2; // esi@1 int v3; // eax@1 int v4; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RegistNumberVarification"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RegistNumberVarification"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 4275; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1388))(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) = *(_DWORD *)(v3 + 16); *((_DWORD *)v2 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); if ( sub_4C81E0(&off_849C18, 28) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_RegistNumberVarification : Packet Too Long", 28); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RegistNumberVarification"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0054FBD0) -------------------------------------------------------- int __stdcall sub_54FBD0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_REGNUM_VARIFICATION_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_REGNUM_VARIFICATION_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2544))(v2, a1 + 2) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1528))(v2, 1673, 0, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_REGNUM_VARIFICATION_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054FCB0) -------------------------------------------------------- char __stdcall sub_54FCB0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_RegistNumberVarifyCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_RegistNumberVarifyCheck"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_RegistNumberVarifyCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0054FD00) -------------------------------------------------------- char __thiscall sub_54FD00(void *this, int a2) { void *v2; // edi@1 signed int v3; // eax@1 int v4; // eax@2 char v5; // cl@3 bool v6; // zf@6 _BYTE *v7; // esi@6 int v8; // ebx@10 int v9; // ebx@18 int v10; // eax@37 int v12; // eax@41 int v13; // esi@41 __time32_t v14; // eax@41 __time32_t v15; // ebx@41 FILE *v16; // eax@43 __time32_t v17; // eax@45 __time32_t v18; // ebx@45 FILE *v19; // eax@47 __time32_t v20; // eax@49 __time32_t v21; // eax@49 __time32_t v22; // eax@49 int v23; // [sp+14h] [bp-514h]@41 int v24; // [sp+14h] [bp-514h]@45 char v25; // [sp+18h] [bp-510h]@28 char v26; // [sp+118h] [bp-410h]@32 char v27; // [sp+218h] [bp-310h]@24 char v28; // [sp+318h] [bp-210h]@16 char v29; // [sp+418h] [bp-110h]@8 unsigned int v30; // [sp+518h] [bp-10h]@1 int v31; // [sp+524h] [bp-4h]@1 int v32; // [sp+528h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"; v3 = 1; dword_750AB8[dword_750CB8++] = -1; v31 = 0; if ( !(dword_13254170 & 1) ) { dword_13254170 |= 1u; LOBYTE(v31) = 1; v4 = 0; do { v5 = byte_6D93CC[v4]; byte_13253EE8[v4++] = v5; } while ( v5 ); dword_13253FE8 = 0; sub_5A7CA0(byte_6D93CC); byte_1325416C = 1; atexit(nullsub_124); LOBYTE(v31) = 0; v3 = 1; } if ( *(_DWORD *)((char *)v2 + 32661) != *(_DWORD *)(a2 + 2) ) { dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v6 = byte_7493ED == 0; v7 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v7 = *(_DWORD *)((char *)v2 + 32665); *((_DWORD *)v7 + 1) = *(_DWORD *)((char *)v2 + 32669); *((_DWORD *)v7 + 2) = *(_DWORD *)((char *)v2 + 32673); *((_DWORD *)v7 + 3) = *(_DWORD *)((char *)v2 + 32677); *((_DWORD *)v7 + 4) = *(_DWORD *)((char *)v2 + 32681); v7[20] = 0; if ( !v6 ) { if ( byte_1325416C ) { sprintf(&v29, "%.255s", "Regist number invalid "); sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fputs(&v29, dword_13253FE8); } } v8 = *(_DWORD *)((char *)v2 + 32661); if ( byte_7493ED ) { if ( byte_1325416C ) { sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fprintf(dword_13253FE8, "%d", v8); } if ( byte_7493ED ) { if ( byte_1325416C ) { sprintf(&v28, "%.255s", "/"); sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fputs(&v28, dword_13253FE8); } } } v9 = *(_DWORD *)(a2 + 2); if ( byte_7493ED ) { if ( byte_1325416C ) { sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fprintf(dword_13253FE8, "%d", v9); } if ( byte_7493ED ) { if ( byte_1325416C ) { sprintf(&v27, "%.255s", " / "); sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fputs(&v27, dword_13253FE8); } if ( byte_7493ED ) { if ( byte_1325416C ) { sprintf(&v25, "%.255s", v7); sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fputs(&v25, dword_13253FE8); } if ( byte_7493ED ) { if ( byte_1325416C ) { sprintf(&v26, "%.255s", "/"); sub_418E40((__time32_t)byte_13253EE8); if ( dword_13253FE8 ) fputs(&v26, dword_13253FE8); } if ( byte_7493ED && byte_1325416C ) { if ( dword_13253FE8 ) { v10 = sub_418E40((__time32_t)byte_13253EE8); sub_654AB0(10, (FILE *)v10); fflush(dword_13253FE8); fclose(dword_13253FE8); dword_13253FE8 = 0; } } } } } } **((_BYTE **)v2 + 957) = 0; LABEL_39: --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); return 0; } if ( !*(_BYTE *)(a2 + 6) ) { v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v12 <<= 8; v13 = (int)&byte_85A2C0[v12]; *(_DWORD *)&byte_85A2C0[v12] = *(_DWORD *)((char *)v2 + 32665); *(_DWORD *)&byte_85A2C0[v12 + 4] = *(_DWORD *)((char *)v2 + 32669); *(_DWORD *)&byte_85A2C0[v12 + 8] = *(_DWORD *)((char *)v2 + 32673); *(_DWORD *)&byte_85A2C0[v12 + 12] = *(_DWORD *)((char *)v2 + 32677); *(_DWORD *)&byte_85A2C0[v12 + 16] = *(_DWORD *)((char *)v2 + 32681); byte_85A2C0[v12 + 20] = 0; v23 = *(_DWORD *)((char *)v2 + 32661); v14 = sub_418EA0((__time32_t)byte_13253EE8, (int)"Incorrect bit "); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); v16 = *(FILE **)(v15 + 256); if ( v16 ) fprintf(v16, "%d", v23); } } v24 = *(_DWORD *)(a2 + 2); v17 = sub_418EA0(v15, (int)"/"); v18 = v17; if ( byte_7493ED ) { if ( *(_BYTE *)(v17 + 644) ) { sub_418E40(v17); v19 = *(FILE **)(v18 + 256); if ( v19 ) fprintf(v19, "%d", v24); } } v20 = sub_418EA0(v18, (int)" / "); v21 = sub_418EA0(v20, v13); v22 = sub_418EA0(v21, (int)"/"); sub_418F20(v22, (int)&unk_13359E04); **((_BYTE **)v2 + 957) = 0; goto LABEL_39; } dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); return 1; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 1325416C: using guessed type char byte_1325416C; // 13254170: using guessed type int dword_13254170; //----- (00550220) -------------------------------------------------------- int __thiscall sub_550220(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 3122; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 816))(v4, 1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005502E0) -------------------------------------------------------- int __thiscall sub_5502E0(void *this) { void *v1; // esi@1 void *v2; // edi@2 int v3; // eax@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RefreshWMSSocket"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RefreshWMSSocket"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 820))(v1) == 1 ) { v2 = off_849C18; *(_DWORD *)off_849C18 = -62415; *((_DWORD *)v2 + 1) = -1; *(_DWORD *)((char *)v2 + 10) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v2 + 4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); if ( sub_4C81E0(&off_849C18, 14) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_RefreshWMSSocket : Packet Too Long", 14); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RefreshWMSSocket"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (005503F0) -------------------------------------------------------- int __thiscall sub_5503F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2596))(v4, 1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005504A0) -------------------------------------------------------- int __thiscall sub_5504A0(void *this, int a2) { void *v2; // ebx@1 int v3; // edi@1 int v4; // eax@3 _BYTE *v5; // eax@3 int v6; // eax@4 int v7; // ecx@4 int v8; // edx@4 int v9; // eax@4 int v10; // eax@4 __time32_t v11; // eax@4 __time32_t v12; // eax@4 __time32_t v13; // esi@4 FILE *v14; // eax@6 __time32_t v15; // eax@8 __time32_t v16; // esi@8 FILE *v17; // eax@10 __time32_t v18; // eax@12 __time32_t v19; // esi@12 FILE *v20; // eax@14 int v21; // ecx@16 int v22; // edx@16 void *v23; // esi@16 int v24; // eax@19 _BYTE *v25; // eax@19 signed int v26; // eax@19 int v27; // eax@22 int v28; // eax@24 signed int v29; // eax@24 int v30; // eax@27 int v31; // eax@32 void *v32; // eax@33 int v33; // ecx@33 int v34; // eax@35 int v36; // [sp+66h] [bp-2Ah]@16 int v37; // [sp+6Ah] [bp-26h]@16 int v38; // [sp+78h] [bp-18h]@4 int v39; // [sp+7Ch] [bp-14h]@4 int v40; // [sp+80h] [bp-10h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)((char *)v2 + 122); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v40 = sub_63AB60(&unk_CFCF398, v5); if ( v40 ) { v6 = *(_DWORD *)((char *)v2 + 102); v7 = *(_DWORD *)(v6 + 4); v8 = *(_DWORD *)v6; v9 = dword_8622C4 & (dword_8622C0 + 1); v38 = v7; dword_8622C0 = v9; v10 = (int)&byte_85A2C0[256 * v9]; *(_DWORD *)v10 = *(_DWORD *)v3; v39 = v8; *(_DWORD *)(v10 + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(v3 + 8); *(_BYTE *)(v10 + 12) = 0; v11 = sub_418EA0((__time32_t)byte_13253BF0, v10); v12 = sub_418EA0(v11, (int)"/"); v13 = v12; if ( byte_7493ED ) { if ( *(_BYTE *)(v12 + 644) ) { sub_418E40(v12); v14 = *(FILE **)(v13 + 256); if ( v14 ) fprintf(v14, "%d", v39); } } v15 = sub_418EA0(v13, (int)"/"); v16 = v15; if ( byte_7493ED ) { if ( *(_BYTE *)(v15 + 644) ) { sub_418E40(v15); v17 = *(FILE **)(v16 + 256); if ( v17 ) fprintf(v17, "%d", v38); } } v18 = sub_418EA0(v16, (int)"/"); v19 = v18; if ( byte_7493ED ) { if ( *(_BYTE *)(v18 + 644) ) { sub_418E40(v18); v20 = *(FILE **)(v19 + 256); if ( v20 ) fprintf(v20, "%d", a2); } } sub_418F20(v19, (int)&unk_13359E04); v21 = *(_DWORD *)(v40 + 122); v22 = *(_DWORD *)(v40 + 126); v23 = off_849C18; *(_WORD *)off_849C18 = 16387; v36 = v21; *((_WORD *)v23 + 1) = *((_WORD *)v2 + 2); v37 = v22; *((_DWORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v23 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( *(_BYTE *)(v40 + 54) ) { *((_DWORD *)v23 + 3) = *(_DWORD *)(v40 + 110); *((_DWORD *)v23 + 4) = *(_DWORD *)(v40 + 114); *((_DWORD *)v23 + 5) = *(_DWORD *)(v40 + 118); *((_DWORD *)v23 + 6) = *(_DWORD *)(v40 + 122); *((_DWORD *)v23 + 7) = *(_DWORD *)(v40 + 126); } else { *((_DWORD *)v23 + 3) = *(_DWORD *)v3; *((_DWORD *)v23 + 4) = *(_DWORD *)(v3 + 4); *((_DWORD *)v23 + 5) = *(_DWORD *)(v3 + 8); *((_DWORD *)v23 + 6) = v36; *((_DWORD *)v23 + 7) = v37; } v24 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v24; v25 = &byte_85A2C0[256 * v24]; *(_DWORD *)v25 = *(_DWORD *)v3; *((_DWORD *)v25 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v25 + 2) = *(_DWORD *)(v3 + 8); v25[12] = 0; v26 = sub_639620(&unk_14D20404, v25); if ( v26 == -1 ) LOWORD(v26) = -1; v26 = (unsigned __int16)v26; if ( (unsigned __int16)v26 < dword_14D20400 ) { v27 = *(_DWORD *)(dword_14D203FC + 4 * v26); if ( v27 ) { if ( *(_BYTE *)(v27 + 58) == 7 ) { v28 = sub_418B00((int)byte_85A2C0, (int)((char *)v2 + 161520)); v29 = sub_639620(&unk_14D20404, (unsigned __int8 *)v28); if ( v29 == -1 ) LOWORD(v29) = -1; v29 = (unsigned __int16)v29; if ( (unsigned __int16)v29 < dword_14D20400 && (v30 = *(_DWORD *)(dword_14D203FC + 4 * v29)) != 0 ) { *((_DWORD *)v23 + 3) = *((_DWORD *)v2 + 40380); *((_DWORD *)v23 + 4) = *((_DWORD *)v2 + 40381); *((_DWORD *)v23 + 5) = *((_DWORD *)v2 + 40382); *((_DWORD *)v23 + 6) = *(_DWORD *)(v30 + 50); *((_DWORD *)v23 + 7) = *(_DWORD *)(v30 + 54); } else { sub_418A60((char *)v23 + 12, "RouN"); *((_DWORD *)v23 + 6) = 6445; *((_DWORD *)v23 + 7) = 8630; } } } } *((_DWORD *)v23 + 8) = -1; *((_DWORD *)v23 + 11) = 0; *((_DWORD *)v23 + 10) = 0; *((_DWORD *)v23 + 9) = 0; strncpy((char *)v23 + 36, byte_6A492E, 0xCu); *((_DWORD *)v23 + 12) = 0; *((_DWORD *)v23 + 13) = 0; if ( sub_4C81E0(&off_849C18, 56) ) { v31 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v31); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc : Packet Too Long", 56); } v32 = off_849C18; *(_WORD *)off_849C18 = 1514; *(_DWORD *)((char *)v32 + 2) = *((_DWORD *)v23 + 2); *(_DWORD *)((char *)v32 + 6) = *((_DWORD *)v23 + 3); *(_DWORD *)((char *)v32 + 10) = *((_DWORD *)v23 + 4); *(_DWORD *)((char *)v32 + 14) = *((_DWORD *)v23 + 5); *(_DWORD *)((char *)v32 + 18) = *((_DWORD *)v23 + 6); *(_DWORD *)((char *)v32 + 22) = *((_DWORD *)v23 + 7); *(_DWORD *)((char *)v32 + 26) = -1; v33 = *(_DWORD *)((char *)v2 + 102); *(_DWORD *)((char *)v32 + 30) = *(_DWORD *)v33; *(_DWORD *)((char *)v32 + 34) = *(_DWORD *)(v33 + 4); *((_WORD *)v32 + 19) = 9999; if ( sub_4C81E0(&off_849C18, 40) ) { v34 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v34); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc : Packet Too Long", 40); } **((_BYTE **)v2 + 957) = 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 + 1528))(v2, 1669, 0, 0); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 14D148D0: using guessed type int dword_14D148D0; // 14D16430: using guessed type int dword_14D16430; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (00550940) -------------------------------------------------------- int __thiscall sub_550940(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ProtocolLogger::pl_Store"); dword_7508B8[dword_750CB8] = (int)"ProtocolLogger::pl_Store"; dword_750AB8[dword_750CB8++] = -1; *((_WORD *)v3 + 8 * *((_BYTE *)v3 + 256) + 6) = *(_WORD *)a2; *((_DWORD *)v3 + 4 * *((_BYTE *)v3 + 256)) = dword_14D129E8; v4 = 2 * *((_BYTE *)v3 + 256); *((_DWORD *)v3 + 4 * *((_BYTE *)v3 + 256) + 1) = *(_DWORD *)a3; *((_DWORD *)v3 + 2 * v4 + 2) = *(_DWORD *)(a3 + 4); *((_BYTE *)v3 + 256) = (*((_BYTE *)v3 + 256) + 1) & 0xF; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ProtocolLogger::pl_Store"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005509F0) -------------------------------------------------------- int __thiscall sub_5509F0(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ProtocolLogger::pl_Clear"); dword_7508B8[dword_750CB8] = (int)"ProtocolLogger::pl_Clear"; dword_750AB8[dword_750CB8++] = -1; v2 = (int)((char *)v1 + 12); v3 = 16; do { *(_WORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); *((_BYTE *)v1 + 256) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ProtocolLogger::pl_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00550A70) -------------------------------------------------------- int __thiscall sub_550A70(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LastProtocol"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_LastProtocol"; dword_750AB8[dword_750CB8++] = -1; sub_550940((char *)v2 + 160924, a2, *(_DWORD *)((char *)v2 + 102)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_LastProtocol"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00550B20) -------------------------------------------------------- int __thiscall sub_550B20(void *this) { void *v1; // edi@1 int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int v5; // ebx@3 int v6; // eax@8 unsigned int v7; // eax@10 int v8; // eax@12 int v9; // esi@12 int v10; // ebx@16 __time32_t v11; // eax@16 __time32_t v12; // esi@16 FILE *v13; // eax@18 __time32_t v14; // eax@20 __time32_t v15; // esi@20 FILE *v16; // eax@22 __time32_t v17; // eax@24 __time32_t v18; // esi@24 FILE *v19; // eax@26 int v21; // [sp-4h] [bp-38h]@2 int v22; // [sp+18h] [bp-1Ch]@3 int v23; // [sp+20h] [bp-14h]@12 int v24; // [sp+24h] [bp-10h]@12 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 122); if ( v2 ) { v3 = *(_DWORD *)(v2 + 12); v4 = *(_DWORD *)v3; v5 = *(_DWORD *)(v3 + 4); v22 = *(_DWORD *)(v3 + 8); if ( !(dword_13254180 & 1) ) { dword_13254180 |= 1u; dword_1325417C = 0; dword_13254178 = 0; *(_DWORD *)dword_13254174 = 0; strncpy(dword_13254174, "Eld", 0xCu); atexit(nullsub_126); } if ( v4 == *(_DWORD *)dword_13254174 ) { if ( v5 == dword_13254178 ) { if ( v22 == dword_1325417C ) { v6 = *(_DWORD *)((char *)v1 + 102); if ( *(_DWORD *)v6 < 0x1770u || *(_DWORD *)v6 > 0x4E20u || (v7 = *(_DWORD *)(v6 + 4), v7 < 0x1770) || v7 > 0x4E20 ) { v8 = *(_DWORD *)((char *)v1 + 102); v9 = dword_14D129E8; v23 = *(_DWORD *)(v8 + 4); v24 = *(_DWORD *)v8; if ( byte_7493ED ) { if ( byte_1324539C ) { sub_418E40((__time32_t)byte_13245118); if ( dword_13245218 ) fprintf(dword_13245218, "%d", v9); } } v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v11 = sub_418EA0((__time32_t)byte_13245118, (int)&word_6B0394); v12 = v11; if ( byte_7493ED ) { if ( *(_BYTE *)(v11 + 644) ) { sub_418E40(v11); v13 = *(FILE **)(v12 + 256); if ( v13 ) fprintf(v13, "%d", v10); } } v14 = sub_418EA0(v12, (int)" "); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); v16 = *(FILE **)(v15 + 256); if ( v16 ) fprintf(v16, "%d", v24); } } v17 = sub_418EA0(v15, (int)"/"); v18 = v17; if ( byte_7493ED ) { if ( *(_BYTE *)(v17 + 644) ) { sub_418E40(v17); v19 = *(FILE **)(v18 + 256); if ( v19 ) fprintf(v19, "%d", v23); } } sub_418F20(v18, (int)&unk_13359E04); sub_548360((int)((char *)v1 + 160924)); sub_418F20((__time32_t)byte_13245118, (int)&unk_13359E04); } } } } --dword_750CB8; v21 = (int)"ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"; } else { --dword_750CB8; v21 = (int)"ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"; } return sub_467660((int)&unk_D020420, v21); } // 6B0394: using guessed type __int16 word_6B0394; // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1324539C: using guessed type char byte_1324539C; // 13254178: using guessed type int dword_13254178; // 1325417C: using guessed type int dword_1325417C; // 13254180: using guessed type int dword_13254180; // 14D129E8: using guessed type int dword_14D129E8; //----- (00550DC0) -------------------------------------------------------- int __thiscall sub_550DC0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ListCheckStruct::lcs_Init"); dword_7508B8[dword_750CB8] = (int)"ListCheckStruct::lcs_Init"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v2 = *(_DWORD *)a2 - 1; *((_DWORD *)v2 + 1) = *(_DWORD *)(a2 + 4) - 1; *((_DWORD *)v2 + 2) = *(_DWORD *)(a2 + 8) - 1; *((_DWORD *)v2 + 3) = *(_DWORD *)(a2 + 12) - 1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ListCheckStruct::lcs_Init"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00550E40) -------------------------------------------------------- int __stdcall sub_550E40(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_SetHP"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_SetHP"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_SetHP"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00550E90) -------------------------------------------------------- int __thiscall sub_550E90(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_SetHP"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_SetHP"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; *((_DWORD *)v2 + 1991) = a2; if ( *((_DWORD *)v2 + 1991) > (unsigned int)(*(int (__thiscall **)(void *))(v3 + 1264))(v2) ) *((_DWORD *)v2 + 1991) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_SetHP"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00550F60) -------------------------------------------------------- char __thiscall sub_550F60(void *this, int a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_BroadcastEndOfTrade"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_BroadcastEndOfTrade"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2876))(v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_BroadcastEndOfTrade"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551010) -------------------------------------------------------- int __cdecl sub_551010() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551050) -------------------------------------------------------- int __thiscall sub_551050(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v1 + 96) = dword_14D129E8 + *((_DWORD *)v1 + 97); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005510C0) -------------------------------------------------------- int __thiscall sub_5510C0(void *this) { void *v1; // esi@1 int v2; // eax@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_serv_LastExplosionReady"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_serv_LastExplosionReady"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 2416) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 40))(v1) != 1 ) { v2 = *((_DWORD *)v1 + 2416); *((_DWORD *)v1 + 2421) = dword_14D129E8; *((_WORD *)v1 + 4844) = 1; if ( *(_DWORD *)(v2 + 92) ) *((_DWORD *)v1 + 2419) = off_848CDC; } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_serv_LastExplosionReady"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CDC: using guessed type int (__stdcall *off_848CDC[2])(int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (005511B0) -------------------------------------------------------- int __thiscall sub_5511B0(int this, const char *a2) { int v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+Ch] [bp-18h]@1 int v8; // [sp+20h] [bp-4h]@1 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 8308; *((_WORD *)v3 + 1) = *(_WORD *)(this + 4); strncpy((char *)v3 + 4, a2, 0x20u); sub_4287B0(&v7, &off_849C18, 36); v4 = *(_DWORD *)(v2 + 102); v8 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, 0, 0, (int)&v7, 0, 65535); if ( a2 ) strncpy((char *)(*(_DWORD *)(v2 + 32650) + 198), a2, 0x20u); v8 = -1; return sub_428A70(&v7); } //----- (00551280) -------------------------------------------------------- int __thiscall sub_551280(int this, const char *a2) { int v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+Ch] [bp-18h]@1 int v8; // [sp+20h] [bp-4h]@1 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 8308; *((_WORD *)v3 + 1) = *(_WORD *)(this + 4); strncpy((char *)v3 + 4, a2, 0x20u); sub_4287B0(&v7, &off_849C18, 36); v4 = *(_DWORD *)(v2 + 102); v8 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, 0, 0, (int)&v7, 0, 65535); (*(void (__thiscall **)(int, const char *))(*(_DWORD *)v2 + 3648))(v2, a2); v8 = -1; return sub_428A70(&v7); } //----- (00551340) -------------------------------------------------------- int __thiscall sub_551340(int this) { int v1; // esi@1 void *v2; // eax@1 int v3; // ST04_4@1 int v4; // eax@1 char v6; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v1 = this; v2 = off_849C18; *(_WORD *)off_849C18 = 8309; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); strncpy((char *)v2 + 4, (const char *)(*(_DWORD *)(this + 32650) + 198), 0x20u); sub_4287B0(&v6, &off_849C18, 36); v3 = *(_DWORD *)(v1 + 102); v7 = 0; v4 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v4, v3, 0, 0, (int)&v6, 0, 65535); strncpy((char *)(*(_DWORD *)(v1 + 32650) + 198), byte_6A492E, 0x20u); v7 = -1; return sub_428A70(&v6); } //----- (00551410) -------------------------------------------------------- int __thiscall sub_551410(int this) { int v1; // esi@1 void *v2; // eax@1 int v3; // ST04_4@1 int v4; // eax@1 char v6; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v1 = this; v2 = off_849C18; *(_WORD *)off_849C18 = 8309; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); strncpy((char *)v2 + 4, (const char *)(*(_DWORD *)(this + 8140) + 114), 0x20u); sub_4287B0(&v6, &off_849C18, 36); v3 = *(_DWORD *)(v1 + 102); v7 = 0; v4 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v4, v3, 0, 0, (int)&v6, 0, 65535); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v1 + 3648))(v1, byte_6A492E); v7 = -1; return sub_428A70(&v6); } //----- (005514D0) -------------------------------------------------------- int __thiscall sub_5514D0(int this, const char *a2) { int result; // eax@1 int v3; // edi@1 char *v4; // eax@2 int v5; // ST04_4@2 int v6; // eax@2 char v7; // [sp+Ch] [bp-18h]@2 int v8; // [sp+18h] [bp-Ch]@1 int v9; // [sp+20h] [bp-4h]@2 result = (int)&v8; v3 = this; if ( a2 ) { v4 = (char *)off_849C18 + 4; *(_WORD *)off_849C18 = 27661; *((_WORD *)v4 - 1) = *(_WORD *)(this + 4); *((_DWORD *)v4 + 7) = 0; *((_DWORD *)v4 + 6) = 0; *((_DWORD *)v4 + 5) = 0; *((_DWORD *)v4 + 4) = 0; *((_DWORD *)v4 + 3) = 0; *((_DWORD *)v4 + 2) = 0; *((_DWORD *)v4 + 1) = 0; *(_DWORD *)v4 = 0; strncpy(v4, a2, 0x20u); sub_4287B0(&v7, &off_849C18, 36); v5 = *(_DWORD *)(v3 + 102); v9 = 0; v6 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v6, v5, 0, 0, (int)&v7, 0, 65535); v9 = -1; result = sub_428A70(&v7); } return result; } //----- (005515A0) -------------------------------------------------------- int __thiscall sub_5515A0(int this, char a2) { int v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+Ch] [bp-18h]@1 int v8; // [sp+20h] [bp-4h]@1 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 8310; *((_WORD *)v3 + 1) = *(_WORD *)(this + 4); *((_BYTE *)v3 + 4) = a2; sub_4287B0(&v7, &off_849C18, 5); v4 = *(_DWORD *)(v2 + 102); v8 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, 0, 0, (int)&v7, 0, 65535); *(_BYTE *)(*(_DWORD *)(v2 + 8140) + 146) = a2; v8 = -1; return sub_428A70(&v7); } //----- (00551650) -------------------------------------------------------- int __thiscall sub_551650(int this, int a2) { int v2; // esi@1 void *v3; // eax@1 int v4; // ST04_4@1 int v5; // eax@1 char v7; // [sp+8h] [bp-18h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = -17380; *((_WORD *)v3 + 1) = *(_WORD *)(this + 4); *((_BYTE *)v3 + 4) = **(_BYTE **)(this + 106); sub_4287B0(&v7, &off_849C18, 5); v4 = *(_DWORD *)(v2 + 102); v8 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, 0, 0, (int)&v7, a2, 65535); v8 = -1; return sub_428A70(&v7); } //----- (00551700) -------------------------------------------------------- char __stdcall sub_551700(int a1, int a2, int a3) { int v3; // eax@3 int v4; // eax@6 if ( sub_499E90(a1, a2) == 1 && *(_BYTE *)(a1 + 86) != 1 ) { *(_WORD *)dword_74A028 = *(_WORD *)(a1 + 4); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, &off_749F98); } if ( sub_499E90(a2, a1) == 1 && *(_BYTE *)(a2 + 86) != 1 ) { *(_WORD *)dword_74A028 = *(_WORD *)(a2 + 4); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, &off_749F98); } return 1; } // 749F98: using guessed type void *off_749F98; // 74A028: using guessed type int dword_74A028; //----- (00551790) -------------------------------------------------------- void __thiscall sub_551790(void *this) { void *v1; // esi@1 int v2; // ST04_4@1 int v3; // eax@1 int (__stdcall **v4)(int, int, int); // [sp+8h] [bp-10h]@1 int v5; // [sp+14h] [bp-4h]@1 v1 = this; sub_427BE0(&v4); v4 = &off_6D8118; v2 = *(_DWORD *)((char *)v1 + 102); v5 = 0; v3 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v3, v2, 0, 0, (int)&v4, 0, 65535); v5 = -1; v4 = &off_6D8118; sub_427EB0(&v4); } // 6D8118: using guessed type int (__stdcall *off_6D8118)(int, int, int); //----- (00551820) -------------------------------------------------------- int __thiscall sub_551820(int this) { int result; // eax@1 result = 0; *(_DWORD *)(this + 78) = 0; *(_DWORD *)(this + 82) = 0; return result; } //----- (00551830) -------------------------------------------------------- void __thiscall sub_551830(void *this) { void *v1; // esi@1 int (__stdcall **v2)(int, int, int); // [sp+8h] [bp-10h]@1 int v3; // [sp+14h] [bp-4h]@1 v1 = this; sub_427BE0(&v2); v2 = &off_6D8118; v3 = 0; sub_549B60(v1, (int)&v2, 0); v3 = -1; v2 = &off_6D8118; sub_427EB0(&v2); } // 6D8118: using guessed type int (__stdcall *off_6D8118)(int, int, int); //----- (005518A0) -------------------------------------------------------- int __thiscall sub_5518A0(int this) { int v1; // esi@1 void *v2; // eax@1 int v3; // ST04_4@1 int v4; // eax@1 char v6; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v1 = this; v2 = off_849C18; *(_WORD *)off_849C18 = 9290; *((_WORD *)v2 + 2) = *(_WORD *)(this + 8210); *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); sub_4287B0(&v6, &off_849C18, 6); v3 = *(_DWORD *)(v1 + 102); v7 = 0; v4 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v4, v3, 0, 0, (int)&v6, 1, 65535); *(_BYTE *)(v1 + 8208) = 1; v7 = -1; return sub_428A70(&v6); } //----- (00551960) -------------------------------------------------------- char __thiscall sub_551960(int this) { int v1; // esi@1 int v2; // eax@7 char result; // al@9 int v4; // [sp-4h] [bp-8h]@3 v1 = this; if ( *(_DWORD *)(this + 4) ) { if ( !*(_DWORD *)(this + 8) ) { v4 = 1; goto LABEL_6; } } else { if ( *(_DWORD *)(this + 8) ) { v4 = 0; LABEL_6: sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_RemoveList : asymmetry linkage", v4); goto LABEL_7; } } LABEL_7: v2 = *(_DWORD *)(v1 + 4); if ( v2 != v1 || *(_DWORD *)(v1 + 8) != v1 ) { *(_DWORD *)(v2 + 8) = *(_DWORD *)(v1 + 8); *(_DWORD *)(*(_DWORD *)(v1 + 8) + 4) = *(_DWORD *)(v1 + 4); sub_549640(*(void **)(v1 + 4)); sub_549640(*(void **)(v1 + 8)); *(_DWORD *)(v1 + 4) = v1; *(_DWORD *)(v1 + 8) = v1; result = 1; } else { result = 0; } return result; } //----- (005519D0) -------------------------------------------------------- int __thiscall sub_5519D0(void *this, int a2, char a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Unmark"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_Unmark"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 784))(v4); if ( a3 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1308))(v4); sub_551960((int)((char *)v4 + 22)); sub_551960((int)((char *)v4 + 34)); *((_BYTE *)v4 + 326) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Unmark"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551AA0) -------------------------------------------------------- int __thiscall sub_551AA0(void *this) { void *v1; // esi@1 void *v2; // eax@1 bool v3; // zf@1 char v5; // [sp+Ch] [bp-1Ch]@1 int v6; // [sp+18h] [bp-10h]@1 int v7; // [sp+24h] [bp-4h]@1 v1 = this; v6 = (int)"ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 6149; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v7 = 0; sub_4287B0(&v5, &off_849C18, 4); v3 = *(_DWORD *)(*(_DWORD *)((char *)v1 + 122) + 12) == 0; LOBYTE(v7) = 1; if ( !v3 && !sub_549B60(v1, (int)&v5, 0) ) sub_549B60(v1, (int)&v5, 0); LOBYTE(v7) = 0; sub_428A70(&v5); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551B90) -------------------------------------------------------- int __thiscall sub_551B90(void *this) { void *v1; // esi@1 void *v2; // eax@1 bool v3; // zf@1 char v5; // [sp+Ch] [bp-1Ch]@1 int v6; // [sp+18h] [bp-10h]@1 int v7; // [sp+24h] [bp-4h]@1 v1 = this; v6 = (int)"ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 6149; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v7 = 0; sub_428B40(&v5, &off_849C18, 4); v3 = *(_DWORD *)(*(_DWORD *)((char *)v1 + 122) + 12) == 0; LOBYTE(v7) = 1; if ( !v3 && !sub_549B60(v1, (int)&v5, 0) ) sub_549B60(v1, (int)&v5, 0); LOBYTE(v7) = 0; sub_428C20(&v5); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551C80) -------------------------------------------------------- char __thiscall sub_551C80(int this, int a2, _UNKNOWN *a3) { int v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 v3 = this; v4 = *(_DWORD *)(this + 102); v5 = sub_427BD0(&unk_13253E80); return sub_549E00((void *)v3, v5, v4, a3, 0, a2, 1, 65535); } //----- (00551CC0) -------------------------------------------------------- char __thiscall sub_551CC0(void *this, int (__thiscall *a2)(char *, void *, _DWORD), int a3, int a4, int a5, char a6) { void *v6; // esi@1 __int16 v7; // ax@2 int v8; // eax@2 int v9; // edi@2 int i; // ebx@4 int v12; // eax@5 char v13; // bl@10 v6 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse4"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse4"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 304))(v6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 312))(v6); v8 = sub_54DE90(&unk_13253630, v7); v9 = v8; if ( !v8 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse4"); return 0; } for ( i = 5 - (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 112))(v8); i < (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 108))(v9); ++i ) { v12 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 104))(v9, i); if ( v12 && (void *)v12 != v6 ) a2((char *)(v12 + a3), v6, 0); } } if ( a6 ) v13 = a2((char *)v6 + a3, v6, 0); else v13 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse4"); return v13; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551E30) -------------------------------------------------------- char __thiscall sub_551E30(void *this, int a2, char a3) { int v3; // esi@1 int v4; // ebx@1 __int16 v5; // ax@2 int v6; // eax@2 int v7; // edi@2 int v9; // eax@5 int (__thiscall **v10)(_DWORD, _DWORD, _DWORD, _DWORD); // ST20_4@7 int v11; // eax@7 char v12; // bl@10 int v13; // [sp+18h] [bp-14h]@5 int i; // [sp+1Ch] [bp-10h]@4 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse5"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse5"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 304))(v3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(v3); v6 = sub_54DE90(&unk_13253630, v5); v7 = v6; if ( !v6 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse5"); return 0; } for ( i = 5 - (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 112))(v6); i < (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 108))(v7); ++i ) { v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 104))(v7, i); v13 = v9; if ( v9 && v9 != v3 ) { v10 = *(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))v4; v11 = sub_402710(v3, v9); v4 = a2; (*v10)(a2, v3, v13, v11); } } } if ( a3 ) v12 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))v4)(v4, v3, v3, 0); else v12 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllInMapMiniHouse5"); return v12; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00551FD0) -------------------------------------------------------- char __thiscall sub_551FD0(void *this, int a2, int a3, int a4, int a5, int a6, char a7, int a8) { void *v8; // edi@1 int v9; // ebx@1 __int16 v10; // ax@2 int v11; // eax@2 int v12; // esi@2 int v14; // eax@5 int v15; // edx@7 int v16; // ecx@7 int v17; // edx@7 int v18; // ecx@7 char v19; // bl@11 int v20; // [sp+14h] [bp-10h]@4 int i; // [sp+34h] [bp+10h]@4 v8 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Class4"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Class4"; dword_750AB8[dword_750CB8++] = -1; v9 = a6; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 304))(v8) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 312))(v8); v11 = sub_54DE90(&unk_13253630, v10); v12 = v11; if ( !v11 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Class4"); return 0; } v20 = a4 * a4; for ( i = 5 - (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 112))(v11); i < (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 108))(v12); ++i ) { v14 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v12 + 104))(v12, i); if ( v14 ) { if ( (void *)v14 != v8 ) { v15 = *(_DWORD *)(v14 + 102); v16 = *(_DWORD *)v15 - *(_DWORD *)a3; v17 = *(_DWORD *)(v15 + 4) - *(_DWORD *)(a3 + 4); v9 = a6; v18 = v17 * v17 + v16 * v16; if ( v18 <= (unsigned int)v20 ) (**(void (__thiscall ***)(int, void *, int, int))a6)(a6, v8, v14, v18); } } } } if ( a7 ) v19 = (**(int (__thiscall ***)(int, void *, void *, _DWORD))v9)(v9, v8, v8, 0); else v19 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Class4"); return v19; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00552170) -------------------------------------------------------- char __stdcall sub_552170(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Func5"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Func5"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Func5"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00552200) -------------------------------------------------------- void __thiscall sub_552200(void *this) { void *v1; // esi@1 v1 = this; sub_547EC0((int)((char *)this + 628)); sub_54D040((char *)v1 + 8); } //----- (00552260) -------------------------------------------------------- void *__thiscall sub_552260(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_54DA30((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00552290) -------------------------------------------------------- FILE *__thiscall sub_552290(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 signed int v4; // edi@1 signed int v5; // ebx@1 FILE *result; // eax@5 v1 = this; v2 = *(_DWORD *)(this + 26); v3 = this + 22; v4 = 0; v5 = 0; if ( v2 != *(_DWORD *)(v3 + 8) ) { sub_551960(v3); v5 = 1; } if ( *(_DWORD *)(v1 + 38) != *(_DWORD *)(v1 + 42) ) { sub_551960(v1 + 34); v4 = 1; } result = (FILE *)(v5 ^ v4); if ( (_WORD)v5 != (_WORD)v4 ) result = sub_639150( &unk_86DDD8, (int)"ShineObjectList::som_FreeObject : one of SlantedList is removed", (unsigned __int16)v5, (unsigned __int16)v4); return result; } //----- (005522F0) -------------------------------------------------------- char __thiscall sub_5522F0(int this) { int v1; // esi@1 int v2; // eax@1 signed __int16 v3; // di@3 signed __int16 v4; // bx@3 int v5; // eax@5 v1 = this; v2 = *(_DWORD *)(this + 9481); if ( v2 != this ) { *(_DWORD *)(v2 + 9485) = *(_DWORD *)(this + 9485); *(_DWORD *)(*(_DWORD *)(this + 9485) + 9481) = *(_DWORD *)(this + 9481); *(_DWORD *)(this + 9481) = this; *(_DWORD *)(this + 9485) = this; } v3 = 0; v4 = 0; if ( *(_DWORD *)(this + 26) != *(_DWORD *)(this + 30) ) { sub_551960(this + 22); v4 = 1; } v5 = *(_DWORD *)(v1 + 38); if ( v5 != *(_DWORD *)(v1 + 42) ) { LOBYTE(v5) = sub_551960(v1 + 34); v3 = 1; } if ( v4 != v3 ) LOBYTE(v5) = (unsigned int)sub_639150( &unk_86DDD8, (int)"ShineObjectList::som_FreeObject : one of SlantedList is removed", (unsigned __int16)v4, (unsigned __int16)v3); return v5; } //----- (00552380) -------------------------------------------------------- FILE *__thiscall sub_552380(void *this) { void *v1; // esi@1 signed int v2; // edi@1 signed int v3; // ebx@1 FILE *result; // eax@5 v1 = this; sub_4CC790(this); v2 = 0; v3 = 0; if ( *(_DWORD *)((char *)v1 + 26) != *(_DWORD *)((char *)v1 + 30) ) { sub_551960((int)((char *)v1 + 22)); v3 = 1; } if ( *(_DWORD *)((char *)v1 + 38) != *(_DWORD *)((char *)v1 + 42) ) { sub_551960((int)((char *)v1 + 34)); v2 = 1; } result = (FILE *)(v3 ^ v2); if ( (_WORD)v3 != (_WORD)v2 ) result = sub_639150( &unk_86DDD8, (int)"ShineObjectList::som_FreeObject : one of SlantedList is removed", (unsigned __int16)v3, (unsigned __int16)v2); return result; } //----- (005523E0) -------------------------------------------------------- int __thiscall sub_5523E0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Reset_SlantedList"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_Reset_SlantedList"; dword_750AB8[dword_750CB8++] = -1; sub_54E880((char *)v1 + 22); sub_54E880((char *)v1 + 34); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_Reset_SlantedList"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00552490) -------------------------------------------------------- void __thiscall sub_552490(void *this) { void *v1; // esi@1 unsigned __int8 v2; // bl@2 int v3; // eax@2 int v4; // ecx@6 v1 = this; if ( *((_DWORD *)this + 2413) ) { v2 = (*(int (**)(void))(*(_DWORD *)this + 3396))(); v3 = *((_DWORD *)v1 + 2413); if ( v3 ) { if ( (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 2 > (unsigned int)v2 ) { if ( (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 2 <= (unsigned int)v2 ) sub_6517D8((int)"invalid vector subscript"); v4 = *(_DWORD *)(*(_DWORD *)v3 + 4 * v2); if ( v4 ) { if ( (unsigned __int8)(*(int (__stdcall **)(void *))(*(_DWORD *)v4 + 4))(v1) ) (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 3392))(v1, (unsigned __int8)(v2 + 1)); } } } } } //----- (00552510) -------------------------------------------------------- char __thiscall sub_552510(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_WORD *)(v2 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_WORD *)(v2 + 20) = *(_WORD *)(a2 + 20); *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v2 + 28) = *(_DWORD *)(a2 + 28); result = 1; } else { result = 0; } return result; } //----- (00552570) -------------------------------------------------------- char __thiscall sub_552570(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_WORD *)(v2 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v2 + 16) = *(_DWORD *)(a2 + 16); *(_WORD *)(v2 + 20) = *(_WORD *)(a2 + 20); *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(v2 + 28) = *(_DWORD *)(a2 + 28); result = 1; } else { result = 0; } return result; } //----- (005525D0) -------------------------------------------------------- char __thiscall sub_5525D0(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_WORD *)(a2 + 4) = *(_WORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_WORD *)(a2 + 20) = *(_WORD *)(v5 + 20); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v5 + 24); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v5 + 28); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (00552650) -------------------------------------------------------- char __thiscall sub_552650(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_WORD *)(a2 + 4) = *(_WORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(v5 + 16); *(_WORD *)(a2 + 20) = *(_WORD *)(v5 + 20); *(_DWORD *)(a2 + 24) = *(_DWORD *)(v5 + 24); *(_DWORD *)(a2 + 28) = *(_DWORD *)(v5 + 28); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (005526D0) -------------------------------------------------------- int __thiscall sub_5526D0(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); *(_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); return result; } //----- (00552760) -------------------------------------------------------- char __thiscall sub_552760(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6D8178; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6D8178: using guessed type int (__stdcall *off_6D8178)(int, int); //----- (005528E0) -------------------------------------------------------- int __thiscall sub_5528E0(void *this) { void *v1; // ebx@1 int v2; // esi@1 void (__thiscall *v3)(_DWORD); // edx@1 void (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int (__stdcall **v6)(int, int); // [sp+10h] [bp-18h]@1 char *v7; // [sp+14h] [bp-14h]@1 int v8; // [sp+18h] [bp-10h]@1 int v9; // [sp+24h] [bp-4h]@1 v1 = this; v8 = (int)"ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; sub_549850(v1); *((_BYTE *)v1 + 23825) &= 0xFCu; *((_BYTE *)v1 + 23824) &= 0xBBu; *((_BYTE *)v1 + 161244) = 0; *((_DWORD *)v1 + 38892) = sub_55C1D0; *(_WORD *)((char *)v1 + 32785) = -1; *(_DWORD *)((char *)v1 + 155574) = 0; *((_BYTE *)v1 + 155578) = 0; sub_550DC0((char *)v1 + 62, (int)dword_13244DAC); *((_DWORD *)v1 + 21112) = dword_14D129E8; *((_DWORD *)v1 + 8097) = (char *)v1 + 24180; *((_DWORD *)v1 + 959) = -1; *((_DWORD *)v1 + 958) = -1; *((_DWORD *)v1 + 39089) = -1; v2 = *(_DWORD *)v1; *((_DWORD *)v1 + 1911) = 0; *((_DWORD *)v1 + 39088) = nullsub_2; *((_DWORD *)v1 + 20504) = nullsub_2; *((_DWORD *)v1 + 20501) = nullsub_2; *((_DWORD *)v1 + 39091) = nullsub_2; *((_DWORD *)v1 + 8096) = &off_8622C8; sub_641C90(); (*(void (__thiscall **)(void *))(v2 + 1908))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2696))(v1); memcpy((void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1184))(v1), &unk_13244DF0, 0x63u); sub_43BE30((int)((char *)v1 + 4120)); sub_438420((int)((char *)v1 + 155582)); sub_5B76F0((char *)v1 + 82048); v3 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2076); memcpy((char *)v1 + 160312, &byte_13244DC0, 0x2Eu); v3(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2080))(v1); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2144))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2148))(v1, 0); *((_DWORD *)v1 + 40199) = 0; *((_DWORD *)v1 + 40200) = sub_5131E0; *((_DWORD *)v1 + 40203) = sub_452C70; *((_DWORD *)v1 + 40202) = 0; *((_BYTE *)v1 + 7888) &= 0xFEu; *(_WORD *)((char *)v1 + 24165) = -157; v6 = &off_6A8FA4; v7 = (char *)v1 + 160832; LOBYTE(v9) = 1; sub_43C470((int)((char *)v1 + 160832), (int)&v6); LOBYTE(v9) = 0; v6 = &off_6A8710; *((_DWORD *)v1 + 40228) = &dword_13244CD8; *((_DWORD *)v1 + 40229) = &dword_13245088; sub_5509F0((char *)v1 + 160924); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 376))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2856))(v1, 0); v4 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 3172); *((_DWORD *)v1 + 40297) = 0; *((_BYTE *)v1 + 161192) = 0; *((_DWORD *)v1 + 40299) = 0; v4(v1, 0); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"); } // 6A8710: using guessed type int (__stdcall *off_6A8710)(int, int); // 6A8FA4: using guessed type int (__stdcall *off_6A8FA4)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C8: using guessed type int (__stdcall **off_8622C8)(int); // 13244CD8: using guessed type int dword_13244CD8; // 13244DAC: using guessed type int dword_13244DAC[]; // 13244DC0: using guessed type char byte_13244DC0; // 13245088: using guessed type int dword_13245088; // 14D129E8: using guessed type int dword_14D129E8; //----- (00552B80) -------------------------------------------------------- char __thiscall sub_552B80(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6D9788; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6D9788: using guessed type int (__stdcall *off_6D9788)(int, int); //----- (00552D00) -------------------------------------------------------- int __thiscall sub_552D00(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 15; *(_BYTE *)(this + 4) = 0; *(_DWORD *)(this + 52) = 15; *(_DWORD *)(this + 48) = 0; *(_BYTE *)(this + 32) = 0; *(_DWORD *)(this + 80) = 15; *(_DWORD *)(this + 76) = 0; *(_BYTE *)(this + 60) = 0; *(_DWORD *)(this + 108) = 15; *(_DWORD *)(this + 104) = 0; *(_BYTE *)(this + 88) = 0; *(_DWORD *)(this + 136) = 15; *(_DWORD *)(this + 132) = 0; *(_BYTE *)(this + 116) = 0; *(_DWORD *)(this + 164) = 15; *(_DWORD *)(this + 160) = 0; *(_BYTE *)(this + 144) = 0; *(_DWORD *)(this + 192) = 15; *(_DWORD *)(this + 188) = 0; *(_BYTE *)(this + 172) = 0; return result; } //----- (00552D70) -------------------------------------------------------- void __thiscall sub_552D70(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 192) >= 0x10u ) operator delete(*(void **)(this + 172)); *(_DWORD *)(v1 + 192) = 15; *(_DWORD *)(v1 + 188) = 0; *(_BYTE *)(v1 + 172) = 0; if ( *(_DWORD *)(v1 + 164) >= 0x10u ) operator delete(*(void **)(v1 + 144)); *(_DWORD *)(v1 + 164) = 15; *(_DWORD *)(v1 + 160) = 0; *(_BYTE *)(v1 + 144) = 0; if ( *(_DWORD *)(v1 + 136) >= 0x10u ) operator delete(*(void **)(v1 + 116)); *(_DWORD *)(v1 + 136) = 15; *(_DWORD *)(v1 + 132) = 0; *(_BYTE *)(v1 + 116) = 0; if ( *(_DWORD *)(v1 + 108) >= 0x10u ) operator delete(*(void **)(v1 + 88)); *(_DWORD *)(v1 + 108) = 15; *(_DWORD *)(v1 + 104) = 0; *(_BYTE *)(v1 + 88) = 0; if ( *(_DWORD *)(v1 + 80) >= 0x10u ) operator delete(*(void **)(v1 + 60)); *(_DWORD *)(v1 + 80) = 15; *(_DWORD *)(v1 + 76) = 0; *(_BYTE *)(v1 + 60) = 0; if ( *(_DWORD *)(v1 + 52) >= 0x10u ) operator delete(*(void **)(v1 + 32)); *(_DWORD *)(v1 + 52) = 15; *(_DWORD *)(v1 + 48) = 0; *(_BYTE *)(v1 + 32) = 0; if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; } //----- (00552E70) -------------------------------------------------------- void __thiscall sub_552E70(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6D9A1C; sub_552D70((int)((char *)this + 126)); nullsub_2((char *)v1 + 34); nullsub_2((char *)v1 + 22); sub_5859F0((char *)v1 + 14); sub_5859F0((char *)v1 + 6); nullsub_2((char *)v1 + 4); } // 6D9A1C: using guessed type int (*off_6D9A1C[4])(); //----- (00552F10) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F10() { return &unk_132453A8; } //----- (00552F20) -------------------------------------------------------- int __thiscall sub_552F20(int this) { return *(_DWORD *)(this + 102); } //----- (00552F30) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F30() { return &unk_1324C058; } //----- (00552F40) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F40() { return &unk_13244E54; } //----- (00552F50) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F50() { return &unk_132450FC; } //----- (00552F60) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F60() { return &unk_8BB3B0; } //----- (00552F70) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F70() { return &unk_13253AE8; } //----- (00552F80) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552F80() { return &unk_132453B0; } //----- (00552F90) -------------------------------------------------------- signed int __cdecl sub_552F90() { return 3600000; } //----- (00552FA0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552FA0() { return &unk_132460F4; } //----- (00552FB0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552FB0() { return &unk_13244EB8; } //----- (00552FC0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_552FC0() { return &unk_13252564; } //----- (00552FD0) -------------------------------------------------------- int (__stdcall ***__cdecl sub_552FD0())(int) { return &off_8622C8; } // 8622C8: using guessed type int (__stdcall **off_8622C8)(int); //----- (00552FE0) -------------------------------------------------------- char __cdecl sub_552FE0() { return -1; } //----- (00552FF0) -------------------------------------------------------- int __thiscall sub_552FF0(void *this, int a2) { return (*(int (**)(void))(*(_DWORD *)this + 1804))(); } //----- (00553000) -------------------------------------------------------- int __cdecl sub_553000() { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_LoginLocation", 0); return 0; } //----- (00553020) -------------------------------------------------------- signed int __stdcall sub_553020(unsigned __int16 a1) { char v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 sub_5CF620(&v2); v3 = 0; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_RemakeHandle", a1); v3 = -1; nullsub_2(&v2); return 65535; } //----- (00553090) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553090() { return &unk_13245020; } //----- (005530A0) -------------------------------------------------------- int __cdecl sub_5530A0() { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_itemview", 0); return 0; } //----- (005530C0) -------------------------------------------------------- FILE *__cdecl sub_5530C0() { return sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_itempicked", 0); } //----- (005530E0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5530E0() { return &unk_1324B2A8; } //----- (005530F0) -------------------------------------------------------- int __cdecl sub_5530F0() { return dword_14D129E8; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00553100) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553100() { return &unk_13252690; } //----- (00553110) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553110() { return &unk_13244F2C; } //----- (00553120) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553120() { return &unk_13253628; } //----- (00553130) -------------------------------------------------------- int __cdecl sub_553130() { return (int)byte_6A492E; } //----- (00553140) -------------------------------------------------------- char *__cdecl sub_553140() { return &byte_13244DC0; } // 13244DC0: using guessed type char byte_13244DC0; //----- (00553150) -------------------------------------------------------- int __cdecl sub_553150() { return *(_DWORD *)dword_DA2308C; } // DA2308C: using guessed type int dword_DA2308C; //----- (00553160) -------------------------------------------------------- int __cdecl sub_553160() { return *(_DWORD *)dword_DA23090; } // DA23090: using guessed type int dword_DA23090; //----- (00553170) -------------------------------------------------------- int __cdecl sub_553170() { return *(_DWORD *)dword_DA23094; } // DA23094: using guessed type int dword_DA23094; //----- (00553180) -------------------------------------------------------- int __cdecl sub_553180() { return *(_DWORD *)dword_DA23098; } // DA23098: using guessed type int dword_DA23098; //----- (00553190) -------------------------------------------------------- int __cdecl sub_553190() { return *(_DWORD *)dword_DA2309C; } // DA2309C: using guessed type int dword_DA2309C; //----- (005531A0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5531A0() { return &unk_13244FA0; } //----- (005531B0) -------------------------------------------------------- signed int __cdecl sub_5531B0() { return 1000; } //----- (005531D0) -------------------------------------------------------- signed int __cdecl sub_5531D0() { return -1; } //----- (005531E0) -------------------------------------------------------- char __cdecl sub_5531E0() { return 10; } //----- (005531F0) -------------------------------------------------------- int __thiscall sub_5531F0(void *this) { void *v1; // esi@1 v1 = this; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 3700))(0, 0); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3704))(v1, 0, 0); } //----- (00553220) -------------------------------------------------------- char __cdecl sub_553220() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_PacketBufferFlush"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_PacketBufferFlush"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_PacketBufferFlush"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00553270) -------------------------------------------------------- void __thiscall sub_553270(void *this) { *(_DWORD *)this = &off_6DA99C; sub_552E70(this); } // 6DA99C: using guessed type int (*off_6DA99C)(); //----- (00553280) -------------------------------------------------------- char __thiscall sub_553280(int this, int a2) { int v2; // eax@1 char result; // al@1 v2 = *(_DWORD *)(this + 365); *(_DWORD *)a2 = *(_DWORD *)v2; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v2 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v2 + 8); *(_WORD *)(a2 + 12) = *(_WORD *)(v2 + 12); result = *(_BYTE *)(v2 + 14); *(_BYTE *)(a2 + 14) = result; return result; } //----- (005532B0) -------------------------------------------------------- char *__thiscall sub_5532B0(void *this) { return (char *)this + 601; } //----- (005532C0) -------------------------------------------------------- signed __int16 __stdcall sub_5532C0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0xBB8u ) { v2 = a1 + 10500; nullsub_2(&v2); result = a1 + 10500; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00553310) -------------------------------------------------------- char *__thiscall sub_553310(void *this) { return (char *)this + 369; } //----- (00553320) -------------------------------------------------------- char __thiscall sub_553320(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 622) = a2; return result; } //----- (00553330) -------------------------------------------------------- char __thiscall sub_553330(int this) { return *(_BYTE *)(this + 622); } //----- (00553340) -------------------------------------------------------- signed int __thiscall sub_553340(int this) { int v1; // esi@1 signed int result; // eax@1 v1 = this + 377; *(_DWORD *)(this + 369) = -1; *(_DWORD *)(this + 373) = -1; memset((void *)(this + 377), 0, 0x67u); result = 65535; *(_WORD *)v1 = -1; return result; } //----- (00553370) -------------------------------------------------------- void __thiscall sub_553370(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6DB82C; nullsub_2((void *)(this + 431)); sub_552E70((void *)v1); } // 6DB82C: using guessed type int (*off_6DB82C)(); //----- (005533D0) -------------------------------------------------------- int __thiscall sub_5533D0(int this, int a2) { int result; // eax@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_DWORD *)(this + 34) = *(_DWORD *)(a2 + 34); *(_DWORD *)(this + 38) = *(_DWORD *)(a2 + 38); *(_BYTE *)(this + 42) = *(_BYTE *)(a2 + 42); *(_WORD *)(this + 43) = *(_WORD *)(a2 + 43); *(_WORD *)(this + 45) = *(_WORD *)(a2 + 45); *(_BYTE *)(this + 47) = *(_BYTE *)(a2 + 47); return result; } //----- (00553440) -------------------------------------------------------- char __cdecl sub_553440() { return 9; } //----- (00553450) -------------------------------------------------------- char *__thiscall sub_553450(void *this) { return (char *)this + 406; } //----- (00553460) -------------------------------------------------------- signed __int16 __stdcall sub_553460(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x3E8u ) { v2 = a1 + 19388; nullsub_2(&v2); result = a1 + 19388; } else { nullsub_2(&v2); result = -1; } return result; } //----- (005534B0) -------------------------------------------------------- int __thiscall sub_5534B0(int this, int a2) { return sub_5533D0(a2, *(_DWORD *)(this + 398)); } //----- (005534D0) -------------------------------------------------------- void __thiscall sub_5534D0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6DC6BC; sub_4C8EE0((int)((char *)this + 4120)); nullsub_2((char *)v1 + 3848); sub_406560((char *)v1 + 432); nullsub_2((char *)v1 + 368); sub_552E70(v1); } // 6DC6BC: using guessed type int (*off_6DC6BC)(); //----- (00553560) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553560() { return &unk_132541BC; } //----- (00553570) -------------------------------------------------------- int __thiscall sub_553570(int this) { int result; // eax@1 result = dword_14D129E8; *(_DWORD *)(this + 4112) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00553580) -------------------------------------------------------- bool __thiscall sub_553580(int this) { return dword_14D129E8 <= (unsigned int)(*(_DWORD *)(this + 4112) + 100); } // 14D129E8: using guessed type int dword_14D129E8; //----- (005535A0) -------------------------------------------------------- int __thiscall sub_5535A0(int this) { return *(_DWORD *)(this + 4116); } //----- (005535B0) -------------------------------------------------------- char *__thiscall sub_5535B0(void *this) { return (char *)this + 3848; } //----- (005535C0) -------------------------------------------------------- char *__thiscall sub_5535C0(void *this) { return (char *)this + 432; } //----- (005535D0) -------------------------------------------------------- bool __thiscall sub_5535D0(int this) { return *(_DWORD *)(this + 400) != 0; } //----- (005535E0) -------------------------------------------------------- char *__thiscall sub_5535E0(void *this) { return (char *)this + 388; } //----- (005535F0) -------------------------------------------------------- bool __thiscall sub_5535F0(void *this) { return (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1156))() != 3; } //----- (00553610) -------------------------------------------------------- void __thiscall sub_553610(int this, int a2) { int v2; // edi@1 void *v3; // esi@2 __int16 v4; // ax@2 int v5; // edi@2 int v6; // eax@2 v2 = this; if ( *(_WORD *)(this + 332) ) { v3 = off_849C18; v4 = *(_WORD *)off_849C18 & 0x3FF | 0x2000; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (v4 ^ *(_WORD *)(this + 332)) & 0x3FF; sub_4C81E0(&off_849C18, 24); *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)(v2 + 334); *(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(v2 + 338); *(_DWORD *)((char *)v3 + 10) = *(_DWORD *)(v2 + 342); *(_DWORD *)((char *)v3 + 14) = *(_DWORD *)(v2 + 346); *(_DWORD *)((char *)v3 + 18) = *(_DWORD *)(v2 + 350); *((_WORD *)v3 + 11) = *(_WORD *)(v2 + 354); v5 = *(_DWORD *)(v2 + 102); *((_DWORD *)v3 + 1) = *(_DWORD *)v5; *((_DWORD *)v3 + 2) = *(_DWORD *)(v5 + 4); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a2, &off_849C18); } } //----- (005536D0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5536D0() { return &unk_13244F38; } //----- (005536E0) -------------------------------------------------------- void __thiscall sub_5536E0(int this) { *(_BYTE *)(this + 3820) = 1; } //----- (005536F0) -------------------------------------------------------- FILE *__thiscall sub_5536F0(int this, FILE *a2) { FILE *result; // eax@1 bool v3; // sf@1 result = a2; v3 = *(_DWORD *)(this + 7640) - (signed int)a2 < 0; *(_DWORD *)(this + 7640) -= a2; if ( v3 ) result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_batobj_DamageApply", 0); return result; } //----- (00553720) -------------------------------------------------------- int __thiscall sub_553720(int this) { return *(_DWORD *)(this + 7640); } //----- (00553730) -------------------------------------------------------- char __thiscall sub_553730(int this, int a2) { return sub_40A820((void *)(this + 432), this, a2); } //----- (00553750) -------------------------------------------------------- char *__thiscall sub_553750(void *this) { return (char *)this + 4120; } //----- (00553760) -------------------------------------------------------- bool __thiscall sub_553760(int this) { return *(_DWORD *)(this + 7644) != 0; } //----- (00553770) -------------------------------------------------------- __int16 __thiscall sub_553770(int this) { return *(_WORD *)(this + 360); } //----- (00553780) -------------------------------------------------------- __int16 __thiscall sub_553780(int this) { return *(_WORD *)(this + 362); } //----- (00553790) -------------------------------------------------------- __int16 __thiscall sub_553790(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 362) = a2; return result; } //----- (005537B0) -------------------------------------------------------- void __thiscall sub_5537B0(int this) { *(_BYTE *)(this + 7636) = 1; } //----- (005537C0) -------------------------------------------------------- void __thiscall sub_5537C0(int this) { *(_BYTE *)(this + 7636) = 0; } //----- (005537D0) -------------------------------------------------------- bool __thiscall sub_5537D0(void *this) { return *((_BYTE *)this + 7636) || !(*(int (**)(void))(*(_DWORD *)this + 1256))(); } //----- (005537F0) -------------------------------------------------------- int __thiscall sub_5537F0(int this) { return *(_DWORD *)(this + 376); } //----- (00553800) -------------------------------------------------------- int __thiscall sub_553800(int this) { return *(_DWORD *)(this + 368); } //----- (00553810) -------------------------------------------------------- unsigned int __thiscall sub_553810(void *this, int a2) { return sub_4BD170((int)((char *)this + 368), a2); } //----- (00553820) -------------------------------------------------------- char __thiscall sub_553820(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 unsigned int v6; // edi@3 v4 = this; if ( *((_BYTE *)this + 7888) & 0x10 ) { result = 1; } else { v6 = *(_DWORD *)(*(_DWORD *)(a3 + 4) + 160); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this + 1260))(this) < v6 ) { result = 0; } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1272))(v4, v6); result = 1; } } return result; } //----- (00553870) -------------------------------------------------------- bool __thiscall sub_553870(void *this, int a2) { bool result; // al@2 if ( a2 ) { if ( a2 == 1 ) { result = (*(int (**)(void))(*(_DWORD *)this + 40))(); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::so_mobile_TargetModeCheck : Invalid target mode", a2); result = 0; } } else { result = (*(int (**)(void))(*(_DWORD *)this + 40))() == 0; } return result; } //----- (005538B0) -------------------------------------------------------- char __thiscall sub_5538B0(int this) { return (*(_BYTE *)(this + 7888) >> 1) & 1; } //----- (005538C0) -------------------------------------------------------- __int16 __thiscall sub_5538C0(int this) { __int16 result; // ax@1 result = *(_WORD *)(this + 7632) + 1; *(_WORD *)(this + 7632) = result; return result; } //----- (005538E0) -------------------------------------------------------- int __thiscall sub_5538E0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 356) = a2; return result; } //----- (005538F0) -------------------------------------------------------- char __thiscall sub_5538F0(int this) { return *(_BYTE *)(this + 7888) >> 7; } //----- (00553900) -------------------------------------------------------- char __thiscall sub_553900(int this, char a2) { char result; // al@1 result = (a2 << 7) | *(_BYTE *)(this + 7888) & 0x7F; *(_BYTE *)(this + 7888) = result; return result; } //----- (00553920) -------------------------------------------------------- char __thiscall sub_553920(int this, char a2, __int16 a3) { char result; // al@1 result = a2; *(_BYTE *)(this + 7928) = a2; *(_WORD *)(this + 7930) = a3; return result; } //----- (00553940) -------------------------------------------------------- char __thiscall sub_553940(int this, char a2, __int16 a3) { char result; // al@1 result = a2; *(_BYTE *)(this + 7932) = a2; *(_WORD *)(this + 7934) = a3; return result; } //----- (00553960) -------------------------------------------------------- char __thiscall sub_553960(int this) { return *(_BYTE *)(this + 7928); } //----- (00553970) -------------------------------------------------------- char __thiscall sub_553970(int this) { return *(_BYTE *)(this + 7932); } //----- (00553980) -------------------------------------------------------- __int16 __thiscall sub_553980(int this) { return *(_WORD *)(this + 7930); } //----- (00553990) -------------------------------------------------------- __int16 __thiscall sub_553990(int this) { return *(_WORD *)(this + 7934); } //----- (005539A0) -------------------------------------------------------- int __thiscall sub_5539A0(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // eax@1 signed int v8; // [sp-8h] [bp-10h]@2 signed int v9; // [sp-4h] [bp-Ch]@2 v5 = this; v6 = *(_DWORD *)(this + 102); if ( a5 ) { v9 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)v6 - *(_DWORD *)a2; } else { v9 = *(_DWORD *)(a2 + 4) - *(_DWORD *)(v6 + 4); v8 = *(_DWORD *)a2 - *(_DWORD *)v6; } **(_BYTE **)(this + 106) = sub_401220(&unk_AF09DA8, v8, v9); return sub_4BD250((void *)(v5 + 368), a2, a3, a4); } //----- (00553A00) -------------------------------------------------------- int __thiscall sub_553A00(int this) { int v1; // eax@2 int result; // eax@2 if ( *(_DWORD *)(this + 368) != 3 ) { *(_DWORD *)(this + 368) = 0; *(_DWORD *)(this + 396) = 0; *(_DWORD *)(this + 400) = 0; *(_DWORD *)(this + 404) = 0; *(_DWORD *)(this + 408) = 0; *(_DWORD *)(this + 412) = 0; *(_DWORD *)(this + 376) = 0; v1 = *(_DWORD *)(*(_DWORD *)(this + 372) + 102); *(_DWORD *)(this + 388) = *(_DWORD *)v1; result = *(_DWORD *)(v1 + 4); *(_DWORD *)(this + 392) = result; } return result; } //----- (00553A50) -------------------------------------------------------- bool __thiscall sub_553A50(int this, int a2) { int v2; // eax@1 bool result; // al@2 v2 = sub_409A00((void *)(this + 432), a2); if ( v2 ) result = (*(_DWORD *)(v2 + 32) - dword_14D129E8) / 0xAu != 0; else result = 0; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00553A90) -------------------------------------------------------- char __thiscall sub_553A90(int this, int a2) { int v2; // eax@1 char result; // al@2 v2 = sub_409A00((void *)(this + 432), a2); if ( v2 ) result = *(_BYTE *)(v2 + 24); else result = 0; return result; } //----- (00553AC0) -------------------------------------------------------- unsigned int __thiscall sub_553AC0(int this, int a2) { unsigned int result; // eax@1 result = sub_409A00((void *)(this + 432), a2); if ( result ) result = (*(_DWORD *)(result + 32) - dword_14D129E8) / 0xAu; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00553B00) -------------------------------------------------------- void __thiscall sub_553B00(void *this) { *(_DWORD *)this = &off_6DD6B4; sub_5534D0(this); } // 6DD6B4: using guessed type int (*off_6DD6B4)(); //----- (00553B10) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553B10() { return &unk_13252688; } //----- (00553B20) -------------------------------------------------------- int __thiscall sub_553B20(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; } //----- (00553B90) -------------------------------------------------------- int __thiscall sub_553B90(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 v2 = this; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, (char *)v2 + 7936); } //----- (00553BC0) -------------------------------------------------------- char *__thiscall sub_553BC0(void *this) { return (char *)this + 8007; } //----- (00553BD0) -------------------------------------------------------- signed __int16 __stdcall sub_553BD0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x3E8u ) { v2 = a1 + 20638; nullsub_2(&v2); result = a1 + 20638; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00553C20) -------------------------------------------------------- int __thiscall sub_553C20(int this) { return **(_DWORD **)(this + 8028) + 2; } //----- (00553C30) -------------------------------------------------------- int __thiscall sub_553C30(int this, int a2) { return sub_553B20(a2, *(_DWORD *)(this + 8003)); } //----- (00553C50) -------------------------------------------------------- void __thiscall sub_553C50(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6DE61C; nullsub_2((void *)(this + 384)); sub_552E70((void *)v1); } // 6DE61C: using guessed type int (*off_6DE61C)(); //----- (00553CB0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553CB0() { return &unk_13253360; } //----- (00553CC0) -------------------------------------------------------- int __thiscall sub_553CC0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 v2 = this; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, (char *)v2 + 331); } //----- (00553CF0) -------------------------------------------------------- signed __int16 __stdcall sub_553CF0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0xFAu ) { v2 = a1 + 20388; nullsub_2(&v2); result = a1 + 20388; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00553D40) -------------------------------------------------------- void __thiscall sub_553D40(void *this) { void *v1; // edi@1 int v2; // esi@1 v1 = this; *(_DWORD *)this = &off_6DF4AC; v2 = (int)((char *)this + 1448); sub_63FCA0((int)((char *)this + 35568)); sub_63FCA0(v2 + 22748); sub_63FCA0(v2 + 11376); sub_63FCA0(v2 + 4); sub_552E70(v1); } // 6DF4AC: using guessed type int (*off_6DF4AC)(); //----- (00553DE0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_553DE0() { return &unk_132453A0; } //----- (00553DF0) -------------------------------------------------------- int __thiscall sub_553DF0(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // edi@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_DWORD *)(this + 34) = *(_DWORD *)(a2 + 34); *(_DWORD *)(this + 38) = *(_DWORD *)(a2 + 38); *(_BYTE *)(this + 42) = *(_BYTE *)(a2 + 42); v3 = this + 43; v4 = 21; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); return result; } //----- (00553E60) -------------------------------------------------------- int __thiscall sub_553E60(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 v2 = this; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, (char *)v2 + 49292); } //----- (00553E90) -------------------------------------------------------- char *__thiscall sub_553E90(void *this) { return (char *)this + 1288; } //----- (00553EA0) -------------------------------------------------------- signed __int16 __stdcall sub_553EA0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x3E8u ) { v2 = a1 + 9500; nullsub_2(&v2); result = a1 + 9500; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00553EF0) -------------------------------------------------------- int __thiscall sub_553EF0(int this, int a2) { return sub_553DF0(a2, *(_DWORD *)(this + 49375)); } //----- (00553F10) -------------------------------------------------------- int __thiscall sub_553F10(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x26Fu, *((_DWORD *)this - 1), sub_553270); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6DA99C; sub_552E70(this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6DA99C: using guessed type int (*off_6DA99C)(); //----- (00553F70) -------------------------------------------------------- int __thiscall sub_553F70(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x1B7u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_553370); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6DB82C; nullsub_2((char *)this + 431); sub_552E70(v2); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6DB82C: using guessed type int (*off_6DB82C)(); //----- (00554030) -------------------------------------------------------- int __thiscall sub_554030(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x1F6Cu, *((_DWORD *)this - 1), sub_553B00); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6DD6B4; sub_5534D0(this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6DD6B4: using guessed type int (*off_6DD6B4)(); //----- (00554090) -------------------------------------------------------- int __thiscall sub_554090(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x1ACu, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_553C50); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6DE61C; nullsub_2((char *)this + 384); sub_552E70(v2); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6DE61C: using guessed type int (*off_6DE61C)(); //----- (00554150) -------------------------------------------------------- int __thiscall sub_554150(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0xD0E0u, *((_DWORD *)this - 1), sub_553D40); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { sub_553D40(this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } //----- (005541B0) -------------------------------------------------------- int __thiscall sub_5541B0(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 17) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_DWORD *)a3 < *(_DWORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (00554220) -------------------------------------------------------- int __thiscall sub_554220(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned int v10; // edi@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 17) ) { v10 = *((_DWORD *)a3 + 3); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v7 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 17) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5AF530(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5AF400(&a4); v11 = a4; v4 = a3; } if ( *(_DWORD *)(v11 + 12) >= *((_DWORD *)v4 + 3) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5AF530(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (00554300) -------------------------------------------------------- void __thiscall sub_554300(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6E0364; if ( *(_DWORD *)(this + 348) ) operator delete(*(void **)(this + 348)); *(_DWORD *)(v1 + 348) = 0; *(_DWORD *)(v1 + 352) = 0; *(_DWORD *)(v1 + 356) = 0; sub_552E70((void *)v1); } // 6E0364: using guessed type int (*off_6E0364)(); //----- (00554350) -------------------------------------------------------- int __thiscall sub_554350(int this, int a2, int a3, int a4, int a5) { int result; // eax@1 **(_DWORD **)(this + 102) = a2; *(_DWORD *)(*(_DWORD *)(this + 102) + 4) = a3; **(_BYTE **)(this + 106) = 0; result = a4; *(_DWORD *)(this + 331) = a5; *(_DWORD *)(this + 122) = a4; return result; } //----- (00554380) -------------------------------------------------------- int __thiscall sub_554380(int this) { return *(_DWORD *)(this + 331); } //----- (00554390) -------------------------------------------------------- int __thiscall sub_554390(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 335) = a2; return result; } //----- (005543A0) -------------------------------------------------------- signed __int16 __stdcall sub_5543A0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0xE00u ) { v2 = a1 + 13500; nullsub_2(&v2); result = a1 + 13500; } else { nullsub_2(&v2); result = -1; } return result; } //----- (005543F0) -------------------------------------------------------- void *__thiscall sub_5543F0(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_5534D0(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00554420) -------------------------------------------------------- void __thiscall sub_554420(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; *(_DWORD *)this = &off_6E11F4; v2 = *(void **)(this + 9504); if ( v2 ) operator delete(v2); *(_DWORD *)(v1 + 9504) = 0; *(_DWORD *)(v1 + 9508) = 0; *(_DWORD *)(v1 + 9512) = 0; sub_481D60(v1 + 9032); sub_547EC0(v1 + 8848); sub_54D040((void *)(v1 + 8228)); if ( *(_DWORD *)(v1 + 8176) ) operator delete(*(void **)(v1 + 8176)); *(_DWORD *)(v1 + 8176) = 0; *(_DWORD *)(v1 + 8180) = 0; *(_DWORD *)(v1 + 8184) = 0; nullsub_2((void *)(v1 + 7956)); sub_58F9F0((void *)(v1 + 7944)); nullsub_2((void *)(v1 + 7936)); sub_5534D0((void *)v1); } // 6E11F4: using guessed type int (*off_6E11F4)(); //----- (00554530) -------------------------------------------------------- _UNKNOWN *__cdecl sub_554530() { return &unk_132460EC; } //----- (00554540) -------------------------------------------------------- signed int __thiscall sub_554540(int this) { int v1; // edx@1 signed int result; // eax@1 v1 = *(_DWORD *)(this + 9632); result = 0; if ( v1 >= 0 ) { switch ( v1 ) { case 0: case 3: LABEL_4: result = 1; break; case 1: case 2: LABEL_5: result = 2; break; default: return result; } } else { switch ( *(_BYTE *)(**(_DWORD **)(this + 8168) + 103) ) { case 0: case 3: goto LABEL_4; case 1: case 2: goto LABEL_5; default: return result; } } return result; } //----- (005545A0) -------------------------------------------------------- char *__thiscall sub_5545A0(void *this) { return (char *)this + 9460; } //----- (005545B0) -------------------------------------------------------- char *__thiscall sub_5545B0(void *this) { return (char *)this + 9468; } //----- (005545C0) -------------------------------------------------------- int __thiscall sub_5545C0(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 4) + 68) * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 4) + 68); } //----- (005545D0) -------------------------------------------------------- unsigned int __thiscall sub_5545D0(int this) { int v1; // eax@1 unsigned int result; // eax@2 int v3; // ecx@3 v1 = *(_DWORD *)(this + 8192); if ( v1 >= 0 ) { v3 = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 8) + 12 * v1) + 75); result = ((signed int)((unsigned __int64)(v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } else { result = 0; } return result; } //----- (00554610) -------------------------------------------------------- int __thiscall sub_554610(int this) { return **(_DWORD **)(this + 8168) + 34; } //----- (00554620) -------------------------------------------------------- signed int __thiscall sub_554620(void *this) { int v1; // eax@1 signed int result; // eax@3 v1 = *(_DWORD *)(**((_DWORD **)this + 2042) + 95); if ( v1 == 1 || v1 == 2 ) result = 3; else result = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1156))() != 3; return result; } //----- (00554650) -------------------------------------------------------- void __thiscall sub_554650(int this, void *a2) { memcpy(a2, *(const void **)(this + 8140), 0x95u); } //----- (00554670) -------------------------------------------------------- void __thiscall sub_554670(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 int v4; // eax@4 int v5; // eax@6 v2 = (int)this; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1948))(a2) != 1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 4 || (v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1804))(v2)) != 0 && (v4 = *(_DWORD *)v3) != 0 && *(_BYTE *)(v4 + 82) == 1 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 12))(v5, a2, v2 + 7972); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 2576))(v2, a2); sub_474D70(v2, a2); } } //----- (005546F0) -------------------------------------------------------- bool __thiscall sub_5546F0(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1156))() == 3; } //----- (00554700) -------------------------------------------------------- char __cdecl sub_554700() { return 5; } //----- (00554710) -------------------------------------------------------- char __thiscall sub_554710(int this) { return *(_BYTE *)(this + 8172); } //----- (00554720) -------------------------------------------------------- unsigned int __thiscall sub_554720(void *this) { int v1; // esi@1 int v2; // edi@1 int v3; // ecx@1 unsigned int result; // eax@1 v1 = *((_DWORD *)this + 2048); v2 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 2042) + 8) + 12 * v1); v3 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1072))() + 2584) * *(_WORD *)(v2 + 69); result = ((signed int)((unsigned __int64)(v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( (result & 0x80000000u) != 0 ) result = 0; if ( v1 < 0 || !v2 ) result = 99999; return result; } //----- (00554780) -------------------------------------------------------- unsigned int __thiscall sub_554780(int this) { return (unsigned int)((unsigned int)(50 * *(_DWORD *)(**(_DWORD **)(this + 8168) + 104)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } //----- (005547A0) -------------------------------------------------------- int __thiscall sub_5547A0(int this, int a2) { int v2; // eax@1 int result; // eax@3 v2 = *(_DWORD *)(this + 8192); if ( v2 >= 0 && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 8) + 12 * v2) ) result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 8) + 12 * *(_DWORD *)(this + 8192)) + 103) + (*(int (**)(void))(*(_DWORD *)a2 + 1740))(); else result = 99999; return result; } //----- (00554800) -------------------------------------------------------- int __thiscall sub_554800(int this) { return *(_DWORD *)(this + 8168); } //----- (00554810) -------------------------------------------------------- int __thiscall sub_554810(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 4) + 90); } //----- (00554820) -------------------------------------------------------- int __thiscall sub_554820(void *this) { void *v1; // esi@1 int result; // eax@2 int v3; // eax@3 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 3708))() == 1 ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 3716))(v1); } else { v3 = *((_DWORD *)v1 + 2409); if ( v3 >= 0 ) result = (unsigned __int16)(((signed int)((unsigned __int64)(v3 * *((_DWORD *)v1 + 1814) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * *((_DWORD *)v1 + 1814) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); else result = (unsigned __int16)((unsigned int)((unsigned int)(*((_DWORD *)v1 + 1814) * *(_DWORD *)(**((_DWORD **)v1 + 2042) + 74)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); if ( (signed __int16)result < 0 ) result = 0; } return result; } //----- (00554890) -------------------------------------------------------- int __thiscall sub_554890(void *this) { void *v1; // esi@1 int result; // eax@2 int v3; // eax@3 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 3712))() == 1 ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 3720))(v1); } else { v3 = *((_DWORD *)v1 + 2410); if ( v3 >= 0 ) result = (unsigned __int16)(((signed int)((unsigned __int64)(v3 * *((_DWORD *)v1 + 1814) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * *((_DWORD *)v1 + 1814) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); else result = (unsigned __int16)((unsigned int)((unsigned int)(*((_DWORD *)v1 + 1814) * *(_DWORD *)(**((_DWORD **)v1 + 2042) + 78)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); if ( (signed __int16)result < 0 ) result = 0; } return result; } //----- (00554900) -------------------------------------------------------- int __thiscall sub_554900(int this) { return *(_DWORD *)(this + 7960); } //----- (00554910) -------------------------------------------------------- char *__thiscall sub_554910(void *this) { return (char *)this + 8144; } //----- (00554920) -------------------------------------------------------- int __thiscall sub_554920(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int result; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1072))(); *((_DWORD *)v2 + 1991) += ((signed int)((unsigned __int64)(a2 * *(_WORD *)(v3 + 3286) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a2 * *(_WORD *)(v3 + 3286) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1264))(v2); if ( *((_DWORD *)v2 + 1991) > (unsigned int)result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1264))(v2); *((_DWORD *)v2 + 1991) = result; } return result; } //----- (00554980) -------------------------------------------------------- int __thiscall sub_554980(int this) { return *(_DWORD *)(this + 7964); } //----- (00554990) -------------------------------------------------------- int __thiscall sub_554990(void *this) { void *v1; // esi@1 int v2; // edi@1 unsigned __int64 v3; // qax@3 v1 = this; v2 = *(_DWORD *)(**((_DWORD **)this + 2042) + 70); if ( *((_DWORD *)this + 2391) ) v2 = *((_DWORD *)this + 2391); v3 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)this + 1072))(this) + 2588) * (signed __int64)v2 / 0x3E8ui64; *((_DWORD *)v1 + 960) = v3; if ( (signed int)v3 < 1 ) { *((_DWORD *)v1 + 960) = 1; LODWORD(v3) = *((_DWORD *)v1 + 960); } return v3; } //----- (00554A00) -------------------------------------------------------- int __thiscall sub_554A00(int this) { int result; // eax@1 result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 4) + 153); *(_DWORD *)(this + 3844) = result; return result; } //----- (00554A20) -------------------------------------------------------- int __thiscall sub_554A20(int this) { return *(_DWORD *)(this + 7968); } //----- (00554A30) -------------------------------------------------------- int __thiscall sub_554A30(int this, unsigned int a2) { int result; // eax@1 result = *(_DWORD *)(this + 7968); if ( result < a2 ) { *(_DWORD *)(this + 7968) = 0; } else { result -= a2; *(_DWORD *)(this + 7968) = result; } return result; } //----- (00554A60) -------------------------------------------------------- int __thiscall sub_554A60(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)this; *((_DWORD *)v2 + 1992) += a2; result = (*(int (**)(void))(v3 + 1268))(); if ( *((_DWORD *)v2 + 1992) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1268))(v2); *((_DWORD *)v2 + 1992) = result; } return result; } //----- (00554AA0) -------------------------------------------------------- void __thiscall sub_554AA0(int this) { *(_DWORD *)(this + 7964) = 0; } //----- (00554AB0) -------------------------------------------------------- int __thiscall sub_554AB0(int this, unsigned int a2) { int result; // eax@1 result = *(_DWORD *)(this + 7964); if ( result < a2 ) { *(_DWORD *)(this + 7964) = 1; } else { result -= a2; *(_DWORD *)(this + 7964) = result; } return result; } //----- (00554AE0) -------------------------------------------------------- int __thiscall sub_554AE0(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)this; *((_DWORD *)v2 + 1991) += a2; result = (*(int (**)(void))(v3 + 1256))(); if ( *((_DWORD *)v2 + 1991) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); *((_DWORD *)v2 + 1991) = result; } return result; } //----- (00554B20) -------------------------------------------------------- unsigned __int16 __stdcall sub_554B20(unsigned __int16 a1) { unsigned __int16 result; // ax@2 unsigned __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x1F40u ) { v2 = a1; nullsub_2(&v2); result = a1; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00554B70) -------------------------------------------------------- int __thiscall sub_554B70(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 8140); if ( *(_BYTE *)(v1 + 14) ) result = (int)&unk_13244C70; else result = v1 + 15; return result; } //----- (00554B90) -------------------------------------------------------- __int16 __thiscall sub_554B90(int this) { return ***(_WORD ***)(this + 8168); } //----- (00554BA0) -------------------------------------------------------- char *__thiscall sub_554BA0(void *this) { return (char *)this + 9481; } //----- (00554BB0) -------------------------------------------------------- int __thiscall sub_554BB0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // esi@1 int v4; // ecx@1 int v5; // edx@1 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1556))(); v3 = *(_DWORD *)((char *)v1 + 102); v4 = *(_DWORD *)(v3 + 4) - *(_DWORD *)(v2 + 4); v5 = (*(_DWORD *)v3 - *(_DWORD *)v2) * (*(_DWORD *)v3 - *(_DWORD *)v2); return (unsigned int)&unk_895440 < v5 + v4 * v4 ? v5 + v4 * v4 : 0; } //----- (00554BE0) -------------------------------------------------------- int __thiscall sub_554BE0(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 9020) + 8))(); } //----- (00554BF0) -------------------------------------------------------- int __thiscall sub_554BF0(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 9020) + 12))(); } //----- (00554C00) -------------------------------------------------------- bool __thiscall sub_554C00(int this) { return *(_DWORD *)(**(_DWORD **)(this + 8168) + 95) != 5; } //----- (00554C10) -------------------------------------------------------- int __thiscall sub_554C10(int this, int a2, char a3) { int result; // eax@1 char v4; // dl@1 result = a2; v4 = *(_BYTE *)(this + 9492) ^ 2 * a3; *(_DWORD *)(this + 9496) = a2; *(_BYTE *)(this + 9492) ^= v4 & 2; return result; } //----- (00554C40) -------------------------------------------------------- int __thiscall sub_554C40(int this) { return **(_DWORD **)(this + 8168) + 2; } //----- (00554C50) -------------------------------------------------------- int __thiscall sub_554C50(int this) { return *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 8168) + 4) + 144); } //----- (00554C70) -------------------------------------------------------- char __thiscall sub_554C70(int this, char a2) { char result; // al@1 result = (*(_BYTE *)(this + 9476) ^ 2 * a2) & 2; *(_BYTE *)(this + 9476) ^= result; return result; } //----- (00554C90) -------------------------------------------------------- char __thiscall sub_554C90(int this, char a2) { char result; // al@1 result = (a2 ^ *(_BYTE *)(this + 9476)) & 1; *(_BYTE *)(this + 9476) ^= result; return result; } //----- (00554CB0) -------------------------------------------------------- char __thiscall sub_554CB0(int this) { return *(_BYTE *)(this + 9476) & 1; } //----- (00554CC0) -------------------------------------------------------- char __thiscall sub_554CC0(int this) { char result; // al@2 if ( *(_DWORD *)(this + 9632) >= 0 ) result = *(_BYTE *)(this + 9632); else result = *(_BYTE *)(**(_DWORD **)(this + 8168) + 103); return result; } //----- (00554CE0) -------------------------------------------------------- __int16 __thiscall sub_554CE0(void *this) { return *(_WORD *)(*(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1804))() + 4) + 59); } //----- (00554D00) -------------------------------------------------------- char __thiscall sub_554D00(int this) { return *(_BYTE *)(this + 8206); } //----- (00554D10) -------------------------------------------------------- char __thiscall sub_554D10(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 8206) = a2; return result; } //----- (00554D20) -------------------------------------------------------- int __thiscall sub_554D20(int this) { return *(_DWORD *)(this + 9560); } //----- (00554D30) -------------------------------------------------------- int __thiscall sub_554D30(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 9560) = a2; return result; } //----- (00554D40) -------------------------------------------------------- int __thiscall sub_554D40(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 8216) = a2; return result; } //----- (00554D50) -------------------------------------------------------- bool __thiscall sub_554D50(void *this) { int v1; // eax@1 bool result; // al@2 int v3; // eax@3 v1 = (*(int (**)(void))(*(_DWORD *)this + 1804))(); if ( v1 && (v3 = *(_DWORD *)v1) != 0 ) { if ( *(_BYTE *)(v3 + 82) == 1 ) result = 1; else result = *(_DWORD *)(v3 + 99) == 6; } else { result = 0; } return result; } //----- (00554D80) -------------------------------------------------------- int __thiscall sub_554D80(int this, char a2) { int result; // eax@1 result = *(_DWORD *)(this + 8140); *(_BYTE *)(result + 147) = a2; return result; } //----- (00554DA0) -------------------------------------------------------- char __thiscall sub_554DA0(int this) { return *(_BYTE *)(*(_DWORD *)(this + 8140) + 147); } //----- (00554DB0) -------------------------------------------------------- void *__thiscall sub_554DB0(int this, const char *a2) { void *result; // eax@1 result = (void *)a2; if ( a2 ) result = strncpy((char *)(*(_DWORD *)(this + 8140) + 114), a2, 0x20u); return result; } //----- (00554DE0) -------------------------------------------------------- int __thiscall sub_554DE0(void *this) { void *v1; // esi@1 int result; // eax@2 unsigned int v3; // edx@3 v1 = this; if ( *((_DWORD *)this + 2048) >= 0 ) { v3 = (unsigned __int64)(1000 * ((*(int (**)(void))(*(_DWORD *)this + 1288))() + 99) / 100 * (signed __int64)(signed int)&unk_10624DD3) >> 32; *(_DWORD *)(*((_DWORD *)v1 + 2044) + 4 * *((_DWORD *)v1 + 2048)) = dword_14D129E8 + ((signed int)v3 >> 6) + (v3 >> 31); result = *(_DWORD *)(*((_DWORD *)v1 + 2044) + 4 * *((_DWORD *)v1 + 2048)); } else { result = 0; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00554E50) -------------------------------------------------------- void __thiscall sub_554E50(int this) { int v1; // esi@1 bool v2; // zf@1 int v3; // eax@2 int v4; // ecx@2 char v5; // [sp+8h] [bp-1Ch]@4 int v6; // [sp+20h] [bp-4h]@4 v1 = this; v2 = *(_BYTE *)(this + 9480) == 0; *(_DWORD *)(this + 4112) = dword_14D129E8; if ( v2 ) { v3 = *(_DWORD *)(this + 8168); v4 = *(_DWORD *)(v3 + 32); if ( v4 ) { if ( **(_WORD **)v3 == *(_DWORD *)v4 ) { sub_428050((int)&v5, 1, 910, **(_WORD **)v3); v6 = 0; sub_549B60((void *)v1, (int)&v5, 0); v6 = -1; sub_427EB0(&v5); } } } *(_BYTE *)(v1 + 9480) = 1; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00554F00) -------------------------------------------------------- void __thiscall sub_554F00(int this) { *(_DWORD *)this = &off_6E2174; sub_554420(this); } // 6E2174: using guessed type int (*off_6E2174)(); //----- (00554F10) -------------------------------------------------------- _UNKNOWN *__cdecl sub_554F10() { return &unk_13253850; } //----- (00554F20) -------------------------------------------------------- signed int __cdecl sub_554F20() { return 3; } //----- (00554F30) -------------------------------------------------------- int __thiscall sub_554F30(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, (char *)v2 + 9664); return (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2576))(v2, a2); } //----- (00554F70) -------------------------------------------------------- bool __thiscall sub_554F70(int this) { return *(_BYTE *)(*(_DWORD *)(this + 9918) + 194) == 5; } //----- (00554F90) -------------------------------------------------------- char __cdecl sub_554F90() { return 8; } //----- (00554FA0) -------------------------------------------------------- int __thiscall sub_554FA0(int this) { return *(_DWORD *)(this + 9918); } //----- (00554FB0) -------------------------------------------------------- signed __int16 __stdcall sub_554FB0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x800u ) { v2 = a1 + 17340; nullsub_2(&v2); result = a1 + 17340; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00555000) -------------------------------------------------------- int __thiscall sub_555000(int this) { return *(_DWORD *)(this + 9918) + 91; } //----- (00555010) -------------------------------------------------------- int __thiscall sub_555010(int this, int a2) { return sub_4B03F0(a2, *(_DWORD *)(this + 9918)); } //----- (00555030) -------------------------------------------------------- void __thiscall sub_555030(int this) { *(_DWORD *)this = &off_6E30F4; sub_554420(this); } // 6E30F4: using guessed type int (*off_6E30F4)(); //----- (00555040) -------------------------------------------------------- _UNKNOWN *__cdecl sub_555040() { return &unk_13253858; } //----- (00555050) -------------------------------------------------------- int __thiscall sub_555050(int this) { int result; // eax@2 int v2; // edx@3 if ( *(_DWORD *)(this + 9668) ) { result = (*(int (**)(void))(**(_DWORD **)(this + 9668) + 2252))(); } else { v2 = *(_DWORD *)(this + 9632); result = 0; if ( v2 >= 0 ) { switch ( v2 ) { case 0: case 3: LABEL_6: result = 1; break; case 1: case 2: LABEL_7: result = 2; break; default: return result; } } else { switch ( *(_BYTE *)(**(_DWORD **)(this + 8168) + 103) ) { case 0: case 3: goto LABEL_6; case 1: case 2: goto LABEL_7; default: return result; } } } return result; } //----- (005550D0) -------------------------------------------------------- char __thiscall sub_5550D0(int this) { char result; // al@2 if ( *(_DWORD *)(this + 9668) ) result = (*(int (**)(void))(**(_DWORD **)(this + 9668) + 1240))(); else result = *(_BYTE *)(this + 8172); return result; } //----- (005550F0) -------------------------------------------------------- int __thiscall sub_5550F0(int this, int a2) { int result; // eax@2 if ( *(_DWORD *)(this + 9680) == 1 ) result = 0; else result = sub_5547A0(this, a2); return result; } //----- (00555110) -------------------------------------------------------- signed __int16 __stdcall sub_555110(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x1F4u ) { v2 = a1 + 21638; nullsub_2(&v2); result = a1 + 21638; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00555160) -------------------------------------------------------- int __thiscall sub_555160(int this) { int v1; // esi@1 int result; // eax@2 v1 = this; if ( !*(_DWORD *)(this + 9668) || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 9668) + 768))() || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 9668) + 1156))() != 1 && (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 9668) + 1156))() != 2 && (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 9668) + 1156))() != 4 ) result = 0; else result = *(_DWORD *)(*(_DWORD *)(v1 + 9668) + 122) == *(_DWORD *)(v1 + 122) ? *(_DWORD *)(v1 + 9668) : 0; return result; } //----- (005551E0) -------------------------------------------------------- int __thiscall sub_5551E0(int this) { return *(_DWORD *)(this + 9672); } //----- (005551F0) -------------------------------------------------------- int __thiscall sub_5551F0(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; *(_DWORD *)(this + 9672) = a2; *(_DWORD *)(this + 7652) = a2; result = sub_4B7F90(this + 8940, a2); *(_DWORD *)(v2 + 9020) = result; return result; } //----- (00555220) -------------------------------------------------------- bool __thiscall sub_555220(int this) { bool result; // al@3 if ( *(_DWORD *)(this + 9668) ) { result = (*(int (**)(void))(**(_DWORD **)(this + 9668) + 1232))() == 2; } else { if ( *(_DWORD *)(this + 9632) >= 0 ) result = *(_BYTE *)(this + 9632); else result = *(_BYTE *)(**(_DWORD **)(this + 8168) + 103); } return result; } //----- (00555260) -------------------------------------------------------- char __thiscall sub_555260(int this) { char result; // al@2 if ( *(_DWORD *)(this + 9668) ) result = (*(int (**)(void))(**(_DWORD **)(this + 9668) + 3584))(); else result = *(_BYTE *)(*(_DWORD *)(this + 8140) + 147); return result; } //----- (00555290) -------------------------------------------------------- void __thiscall sub_555290(int this) { *(_DWORD *)this = &off_6E4074; sub_554420(this); } // 6E4074: using guessed type int (*off_6E4074)(); //----- (005552A0) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5552A0() { return &unk_13253368; } //----- (005552B0) -------------------------------------------------------- int __thiscall sub_5552B0(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // edi@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_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); v3 = this + 31; v4 = 32; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); return result; } //----- (00555310) -------------------------------------------------------- int __thiscall sub_555310(void *this, int a2) { void *v2; // edi@1 int result; // eax@2 int v4; // eax@4 v2 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1948))(a2) != 1 || (result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232))(v2), (_BYTE)result != 12) || *((_DWORD *)v2 + 2418) != -1 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a2, (char *)v2 + 9684); result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2576))(v2, a2); } return result; } //----- (00555380) -------------------------------------------------------- int __thiscall sub_555380(int this) { return *(_DWORD *)(this + 9664); } //----- (00555390) -------------------------------------------------------- signed int __thiscall sub_555390(int this) { signed int result; // eax@1 result = 1; *(_DWORD *)(this + 3840) = 1; return result; } //----- (005553A0) -------------------------------------------------------- signed int __thiscall sub_5553A0(int this) { signed int result; // eax@1 result = 1; *(_DWORD *)(this + 3844) = 1; return result; } //----- (005553B0) -------------------------------------------------------- signed __int16 __stdcall sub_5553B0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x5DCu ) { v2 = a1 + 23638; nullsub_2(&v2); result = a1 + 23638; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00555400) -------------------------------------------------------- _UNKNOWN *__cdecl sub_555400() { return &unk_13244DF0; } //----- (00555410) -------------------------------------------------------- char __cdecl sub_555410() { return 2; } //----- (00555420) -------------------------------------------------------- void *__thiscall sub_555420(int this, const char *a2) { void *result; // eax@1 result = (void *)a2; if ( a2 ) result = strncpy((char *)(*(_DWORD *)(this + 9766) + 31), a2, 0x20u); return result; } //----- (00555450) -------------------------------------------------------- int *__thiscall sub_555450(int this) { int v1; // esi@1 int *result; // eax@2 int v3; // eax@6 int v4; // edx@6 v1 = this; if ( __RTDynamicCast(*(_DWORD *)(this + 9668), 0, &off_85A104, &off_84BF50, 0) && __RTDynamicCast(*(_DWORD *)(v1 + 9668), 0, &off_85A104, &off_84BF50, 0) != -161784 ) { if ( !(dword_13254198 & 1) ) { dword_13254198 |= 1u; dword_13254194 = 0; dword_13254190 = 0; dword_1325418C = 0; dword_13254188 = 0; dword_13254184 = 0; atexit(nullsub_191); } v3 = __RTDynamicCast(*(_DWORD *)(v1 + 9668), 0, &off_85A104, &off_84BF50, 0); dword_13254184 = *(_DWORD *)(v3 + 161824); dword_13254188 = *(_DWORD *)(v3 + 161828); dword_1325418C = *(_DWORD *)(v3 + 161832); v4 = *(_DWORD *)(v3 + 161836); LOBYTE(dword_13254194) = 0; dword_13254190 = v4; result = &dword_13254184; } else { result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); // 13254184: using guessed type int dword_13254184; // 13254188: using guessed type int dword_13254188; // 1325418C: using guessed type int dword_1325418C; // 13254190: using guessed type int dword_13254190; // 13254194: using guessed type int dword_13254194; // 13254198: using guessed type int dword_13254198; //----- (00555540) -------------------------------------------------------- int __thiscall sub_555540(int this, int a2) { return sub_5552B0(a2, *(_DWORD *)(this + 9766)); } //----- (00555560) -------------------------------------------------------- signed __int16 __thiscall sub_555560(int this) { int v1; // esi@1 signed __int16 result; // ax@2 int v3; // eax@4 int v4; // eax@5 v1 = sub_419730(this); if ( v1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1232))(v1) == 2 && (v3 = __RTDynamicCast(v1, 0, &off_85A104, &off_84BF50, 0)) != 0 && (v4 = v3 + 161784) != 0 ) result = *(_WORD *)(v4 + 22); else result = 1000; return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); //----- (005555B0) -------------------------------------------------------- signed __int16 __thiscall sub_5555B0(int this) { int v1; // esi@1 signed __int16 result; // ax@2 int v3; // eax@4 int v4; // eax@5 v1 = sub_419730(this); if ( v1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1232))(v1) == 2 && (v3 = __RTDynamicCast(v1, 0, &off_85A104, &off_84BF50, 0)) != 0 && (v4 = v3 + 161784) != 0 ) result = *(_WORD *)(v4 + 24); else result = 1000; return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); //----- (00555600) -------------------------------------------------------- int __thiscall sub_555600(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6D8154; *(_DWORD *)(this + 16) = 0; sub_552B80(this, 0xDu); *(_DWORD *)v1 = &off_6D8BEC; *(_DWORD *)(v1 + 76) = &off_6D8130; *(_DWORD *)(v1 + 92) = 0; sub_552760(v1 + 76, 0xE00u); *(_DWORD *)(v1 + 76) = &off_6E033C; *(_DWORD *)(v1 + 100) = 0; *(_DWORD *)(v1 + 104) = 0; *(_DWORD *)(v1 + 108) = &off_6D8130; *(_DWORD *)(v1 + 124) = 0; sub_552760(v1 + 108, 0xBB8u); *(_DWORD *)(v1 + 108) = &off_6E033C; *(_DWORD *)(v1 + 132) = 0; *(_DWORD *)(v1 + 136) = 0; *(_DWORD *)(v1 + 140) = &off_6D8130; *(_DWORD *)(v1 + 156) = 0; sub_552760(v1 + 140, 0x3E8u); *(_DWORD *)(v1 + 140) = &off_6E033C; *(_DWORD *)(v1 + 164) = 0; *(_DWORD *)(v1 + 168) = 0; *(_DWORD *)(v1 + 172) = &off_6D8130; *(_DWORD *)(v1 + 188) = 0; sub_552760(v1 + 172, 0x5DCu); *(_DWORD *)(v1 + 172) = &off_6E033C; *(_DWORD *)(v1 + 196) = 0; *(_DWORD *)(v1 + 200) = 0; *(_DWORD *)(v1 + 204) = &off_6D8130; *(_DWORD *)(v1 + 220) = 0; sub_552760(v1 + 204, 0x100u); *(_DWORD *)(v1 + 204) = &off_6E033C; *(_DWORD *)(v1 + 228) = 0; *(_DWORD *)(v1 + 232) = 0; *(_DWORD *)(v1 + 236) = &off_6D8130; *(_DWORD *)(v1 + 252) = 0; sub_552760(v1 + 236, 0x3E8u); *(_DWORD *)(v1 + 236) = &off_6E033C; *(_DWORD *)(v1 + 260) = 0; *(_DWORD *)(v1 + 264) = 0; *(_DWORD *)(v1 + 268) = &off_6D8130; *(_DWORD *)(v1 + 284) = 0; sub_552760(v1 + 268, 0x1F40u); *(_DWORD *)(v1 + 268) = &off_6E033C; *(_DWORD *)(v1 + 292) = 0; *(_DWORD *)(v1 + 296) = 0; *(_DWORD *)(v1 + 300) = &off_6D8130; *(_DWORD *)(v1 + 316) = 0; sub_552760(v1 + 300, 0x800u); *(_DWORD *)(v1 + 300) = &off_6E033C; *(_DWORD *)(v1 + 324) = 0; *(_DWORD *)(v1 + 328) = 0; *(_DWORD *)(v1 + 332) = &off_6D8130; *(_DWORD *)(v1 + 348) = 0; sub_552760(v1 + 332, 0xFAu); *(_DWORD *)(v1 + 332) = &off_6E033C; *(_DWORD *)(v1 + 356) = 0; *(_DWORD *)(v1 + 360) = 0; *(_DWORD *)(v1 + 364) = &off_6D8130; *(_DWORD *)(v1 + 380) = 0; sub_552760(v1 + 364, 0x3E8u); *(_DWORD *)(v1 + 364) = &off_6E033C; *(_DWORD *)(v1 + 388) = 0; *(_DWORD *)(v1 + 392) = 0; *(_DWORD *)(v1 + 396) = &off_6D8130; *(_DWORD *)(v1 + 412) = 0; sub_552760(v1 + 396, 0x1F4u); *(_DWORD *)(v1 + 396) = &off_6E033C; *(_DWORD *)(v1 + 420) = 0; *(_DWORD *)(v1 + 424) = 0; *(_DWORD *)(v1 + 428) = &off_6D8130; *(_DWORD *)(v1 + 444) = 0; sub_552760(v1 + 428, 0x3E8u); *(_DWORD *)(v1 + 428) = &off_6E033C; *(_DWORD *)(v1 + 452) = 0; *(_DWORD *)(v1 + 456) = 0; *(_DWORD *)(v1 + 460) = &off_6D8130; *(_DWORD *)(v1 + 476) = 0; sub_552760(v1 + 460, 0x5DCu); *(_DWORD *)(v1 + 460) = &off_6E033C; *(_DWORD *)(v1 + 484) = 0; *(_DWORD *)(v1 + 488) = 0; *(_DWORD *)(v1 + 24) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 36) = 0; *(_DWORD *)(v1 + 40) = 0; *(_DWORD *)(v1 + 44) = 0; *(_DWORD *)(v1 + 48) = 0; *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 56) = 0; *(_DWORD *)(v1 + 60) = 0; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 0; *(_DWORD *)(v1 + 72) = 0; return v1; } // 6D8130: using guessed type int (__thiscall *off_6D8130)(void *, char); // 6D8154: using guessed type int (__thiscall *off_6D8154)(void *, char); // 6D8BEC: using guessed type int (__thiscall *off_6D8BEC)(void *, char); // 6E033C: using guessed type int (__thiscall *off_6E033C)(void *, char); //----- (00555960) -------------------------------------------------------- int __thiscall sub_555960(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x16Cu, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_554300); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6E0364; if ( *((_DWORD *)this + 87) ) operator delete(*((void **)this + 87)); *((_DWORD *)v2 + 87) = 0; *((_DWORD *)v2 + 88) = 0; *((_DWORD *)v2 + 89) = 0; sub_552E70(v2); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6E0364: using guessed type int (*off_6E0364)(); //----- (005559F0) -------------------------------------------------------- int __thiscall sub_5559F0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x26C4u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_554F00); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6E2174; sub_554420((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6E2174: using guessed type int (*off_6E2174)(); //----- (00555A50) -------------------------------------------------------- int __thiscall sub_555A50(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x25C0u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_554420); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { sub_554420((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } //----- (00555AB0) -------------------------------------------------------- int __thiscall sub_555AB0(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x25F0u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_555030); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6E30F4; sub_554420((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6E30F4: using guessed type int (*off_6E30F4)(); //----- (00555B10) -------------------------------------------------------- int __thiscall sub_555B10(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x262Cu, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_555290); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6E4074; sub_554420((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6E4074: using guessed type int (*off_6E4074)(); //----- (00555B70) -------------------------------------------------------- int __thiscall sub_555B70(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; sub_423FC0((void *)(this + 4), a2 + 4, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 32), a2 + 32, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 60), a2 + 60, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 88), a2 + 88, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 116), a2 + 116, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 144), a2 + 144, 0, 0xFFFFFFFFu); sub_423FC0((void *)(v2 + 172), a2 + 172, 0, 0xFFFFFFFFu); return v2; } //----- (00555C10) -------------------------------------------------------- void __thiscall sub_555C10(int this) { *(_DWORD *)this = &off_6E4FF4; sub_554420(this); } // 6E4FF4: using guessed type int (*off_6E4FF4)(); //----- (00555C20) -------------------------------------------------------- _UNKNOWN *__cdecl sub_555C20() { return &unk_13253E78; } //----- (00555C30) -------------------------------------------------------- int __thiscall sub_555C30(int this) { return (*(_BYTE *)(**(_DWORD **)(this + 8168) + 103) == 0) + 2; } //----- (00555C50) -------------------------------------------------------- char *__thiscall sub_555C50(int this, const char *a2) { int v2; // eax@1 *(_BYTE *)(*(_DWORD *)(this + 8140) + 14) = 1; v2 = *(_DWORD *)(this + 8140) + 15; *(_DWORD *)(*(_DWORD *)(this + 8140) + 23) = 0; *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; return strncpy((char *)v2, a2, 0xCu); } //----- (00555C90) -------------------------------------------------------- unsigned __int64 __thiscall sub_555C90(void *this) { void *v1; // esi@1 int v2; // edi@1 unsigned __int64 result; // qax@3 v1 = this; v2 = *(_DWORD *)(**((_DWORD **)this + 2042) + 70); if ( *((_DWORD *)this + 2391) ) v2 = *((_DWORD *)this + 2391); result = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)this + 1072))(this) + 2588) * (signed __int64)v2 / 0x3E8ui64; *((_DWORD *)v1 + 960) = result; return result; } //----- (00555CF0) -------------------------------------------------------- signed __int16 __stdcall sub_555CF0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x100u ) { v2 = a1 + 17084; nullsub_2(&v2); result = a1 + 17084; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00555D40) -------------------------------------------------------- int __thiscall sub_555D40(int this, int a2, int a3, int a4, int a5, int a6, signed int a7) { int result; // eax@1 *(_DWORD *)(this + 8144) = a2; *(_DWORD *)(this + 8152) = a4; *(_DWORD *)(this + 8148) = a3; **(_DWORD **)(this + 102) = a5; *(_DWORD *)(*(_DWORD *)(this + 102) + 4) = a6; result = a7 / 2; if ( a7 / 2 < 0 ) { result += 180; **(_BYTE **)(this + 106) = result; } else { **(_BYTE **)(this + 106) = result; } return result; } //----- (00555D90) -------------------------------------------------------- int __thiscall sub_555D90(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x25C4u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_555C10); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { *(_DWORD *)this = &off_6E4FF4; sub_554420((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } // 6E4FF4: using guessed type int (*off_6E4FF4)(); //----- (00555DF0) -------------------------------------------------------- char __thiscall sub_555DF0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@2 int v6; // esi@3 int v7; // eax@4 char result; // al@5 void (__stdcall *v9)(_DWORD); // eax@6 int v10; // ecx@7 char v11; // al@8 int v12; // [sp+10h] [bp-20h]@4 int v13; // [sp+18h] [bp-18h]@1 int v14; // [sp+1Ch] [bp-14h]@6 __int16 v15; // [sp+20h] [bp-10h]@6 int v16; // [sp+2Ch] [bp-4h]@1 v4 = this; v13 = (int)"ShineObjectManager::som_FreeObject"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_FreeObject"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_FreeObject"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; if ( a3 == 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FreeObject"); result = 1; } else { v5 = sub_54DE90(&unk_13253630, a2); a3 = v5; if ( v5 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 44))(v5); sub_5CF620(&v15); v15 = a2; v9 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)a3 + 752); LOBYTE(v16) = 1; v9(&unk_13252578); switch ( sub_6303C0(&v15, (int)&v14) ) { case 0: v10 = (int)((char *)v4 + 76); goto LABEL_8; case 1: v11 = (*(int (__thiscall **)(char *, int))(*((_DWORD *)v4 + 27) + 12))((char *)v4 + 108, v14); break; case 2: v10 = (int)((char *)v4 + 172); goto LABEL_8; case 4: v11 = (*(int (__thiscall **)(char *, int))(*((_DWORD *)v4 + 51) + 12))((char *)v4 + 204, v14); break; case 7: v10 = (int)((char *)v4 + 236); goto LABEL_8; case 5: v11 = (*(int (__thiscall **)(char *, int))(*((_DWORD *)v4 + 67) + 12))((char *)v4 + 268, v14); break; case 8: v10 = (int)((char *)v4 + 300); goto LABEL_8; case 9: v11 = (*(int (__thiscall **)(char *, int))(*((_DWORD *)v4 + 35) + 12))((char *)v4 + 140, v14); break; case 6: v10 = (int)((char *)v4 + 332); goto LABEL_8; case 3: v11 = (*(int (__thiscall **)(char *, int))(*((_DWORD *)v4 + 91) + 12))((char *)v4 + 364, v14); break; case 0xA: v10 = (int)((char *)v4 + 396); goto LABEL_8; case 0xB: v11 = (*(int (__thiscall **)(char *, int))(*((_DWORD *)v4 + 107) + 12))((char *)v4 + 428, v14); break; case 0xC: v10 = (int)((char *)v4 + 460); LABEL_8: v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 12))(v14); break; default: sub_639150(&unk_86DDD8, (int)"ShineObjectList::pl_freeobject", 0, a4); LOBYTE(v16) = 0; nullsub_2(&v15); goto LABEL_5; } BYTE3(a2) = v11; LOBYTE(v16) = 0; nullsub_2(&v15); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FreeObject"); result = BYTE3(a2); } else { v6 = (unsigned __int16)a2; a2 = (unsigned __int16)a2 | (a4 << 16); if ( *(void **)sub_5541B0((int)&unk_132669E0, (int)&a3, (int)&a2) == dword_132669E4 ) { sub_639150(&unk_86DDD8, (int)"ShineObjectList::som_FreeObject : Try to free unalloced object", v6, a4); v7 = sub_4632A0(&unk_132669E0, (int)&a2); sub_554220((int)&unk_132669E0, (int)&v12, (void *)v7, 0); } LABEL_5: --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_FreeObject"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00556100) -------------------------------------------------------- signed int __thiscall sub_556100(void *this) { void *v1; // esi@1 int v2; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Kickout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Kickout"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 828))(v1, 0, 1, 3); v2 = (unsigned __int8)sub_555DF0(&unk_13253630, *((_WORD *)v1 + 2), 0, 17); if ( !(_BYTE)v2 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Kickout"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005561E0) -------------------------------------------------------- signed int __thiscall sub_5561E0(void *this) { int v1; // esi@1 int v2; // edi@5 int v3; // eax@12 void *v4; // edi@21 int v5; // eax@23 int v6; // eax@24 unsigned int v8; // [sp-4h] [bp-120h]@1 char v9; // [sp+Ch] [bp-110h]@3 unsigned int v10; // [sp+10Ch] [bp-10h]@1 int v11; // [sp+118h] [bp-4h]@1 int v12; // [sp+11Ch] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v8 = (unsigned int)&v12 ^ __security_cookie; v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Logout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Logout"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sprintf(&v9, "%.255s", "ShineObjectClass::ShinePlayer::sp_Schedule_Logout nCharNo - "); sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fputs(&v9, dword_14D16960); } } v2 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v1 + 836))(v1, v8); if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fprintf(dword_14D16960, "%d", v2); } if ( byte_7493ED && byte_14D16AE4 && dword_14D16960 ) { v3 = sub_418E40((__time32_t)byte_14D16860); sub_654AB0(10, (FILE *)v3); fflush(dword_14D16960); fclose(dword_14D16960); dword_14D16960 = 0; } } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 380))(v1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2860))(v1) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3188))(v1) ) sub_45D1C0(v1, v1, 0); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v1 + 828))(v1, 0, 1, 9); v4 = off_849C18; *(_DWORD *)off_849C18 = -62415; *((_DWORD *)v4 + 1) = -1; *(_DWORD *)((char *)v4 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v4 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 832))(v1); if ( sub_4C81E0(&off_849C18, 14) ) { v5 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Logout : Packet Too Long", 14); } v6 = (unsigned __int8)sub_555DF0(&unk_13253630, *(_WORD *)(v1 + 4), 0, 18); if ( !(_BYTE)v6 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v6); *(_DWORD *)(*(_DWORD *)(v1 + 24168) + 4) = 3; } else { sub_42A8B0(v1 + 160796, (int)sub_5561E0, 0, 4, 0); } } else { *(_DWORD *)(v1 + 160796) = dword_14D129E8; if ( *(_DWORD *)(v1 + 160808) == 4 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::TimeScheduler::ts_Set - ", 4); } else { *(_DWORD *)(v1 + 160812) = sub_5673F0; *(_DWORD *)(v1 + 160800) = sub_5561E0; *(_DWORD *)(v1 + 160804) = 0; *(_DWORD *)(v1 + 160808) = 4; } } --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Logout"); return 1; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16AE4: using guessed type char byte_14D16AE4; //----- (005564D0) -------------------------------------------------------- int __thiscall sub_5564D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // edi@9 int v7; // eax@16 int v9; // [sp-8h] [bp-124h]@4 char v10; // [sp+Ch] [bp-110h]@7 unsigned int v11; // [sp+10Ch] [bp-10h]@1 int v12; // [sp+118h] [bp-4h]@1 int v13; // [sp+11Ch] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( !(dword_132541A0 & 1) ) { dword_132541A0 |= 1u; word_1325419C = 126; atexit(nullsub_121); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1325419C ) { if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sprintf(&v10, "%.255s", "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTREADY_CMD nCharNo - "); sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fputs(&v10, dword_14D16960); } } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fprintf(dword_14D16960, "%d", v6); } if ( byte_7493ED && byte_14D16AE4 && dword_14D16960 ) { v7 = sub_418E40((__time32_t)byte_14D16860); sub_654AB0(10, (FILE *)v7); fflush(dword_14D16960); fclose(dword_14D16960); dword_14D16960 = 0; } } *((_DWORD *)v4 + 40199) = dword_14D129E8 + 130; if ( *((_DWORD *)v4 + 40202) == 4 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::TimeScheduler::ts_Set - ", 4); } else { *((_DWORD *)v4 + 40203) = sub_5673F0; *((_DWORD *)v4 + 40200) = sub_5561E0; *((_DWORD *)v4 + 40201) = 0; *((_DWORD *)v4 + 40202) = 4; } *((_DWORD *)v4 + 40204) = dword_14D129E8 + 80; --dword_750CB8; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } else { dword_750CB8 -= v5; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } v12 = -1; return sub_467660((int)&unk_D020420, v9); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1325419C: using guessed type __int16 word_1325419C; // 132541A0: using guessed type int dword_132541A0; // 14D129E8: using guessed type int dword_14D129E8; // 14D16AE4: using guessed type char byte_14D16AE4; //----- (00556710) -------------------------------------------------------- int __thiscall sub_556710(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // edi@9 int v7; // eax@16 int v9; // [sp-8h] [bp-124h]@4 char v10; // [sp+Ch] [bp-110h]@7 unsigned int v11; // [sp+10Ch] [bp-10h]@1 int v12; // [sp+118h] [bp-4h]@1 int v13; // [sp+11Ch] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( !(dword_132541A8 & 1) ) { dword_132541A8 |= 1u; word_132541A4 = 126; atexit(nullsub_123); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132541A4 ) { if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sprintf(&v10, "%.255s", "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD nCharNo - "); sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fputs(&v10, dword_14D16960); } } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( byte_7493ED ) { if ( byte_14D16AE4 ) { sub_418E40((__time32_t)byte_14D16860); if ( dword_14D16960 ) fprintf(dword_14D16960, "%d", v6); } if ( byte_7493ED && byte_14D16AE4 && dword_14D16960 ) { v7 = sub_418E40((__time32_t)byte_14D16860); sub_654AB0(10, (FILE *)v7); fflush(dword_14D16960); fclose(dword_14D16960); dword_14D16960 = 0; } } if ( (unsigned int)dword_14D129E8 > *((_DWORD *)v4 + 40204) ) sub_5561E0(v4); --dword_750CB8; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"; } else { dword_750CB8 -= v5; v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"; } v12 = -1; return sub_467660((int)&unk_D020420, v9); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132541A4: using guessed type __int16 word_132541A4; // 132541A8: using guessed type int dword_132541A8; // 14D129E8: using guessed type int dword_14D129E8; // 14D16AE4: using guessed type char byte_14D16AE4; //----- (00556910) -------------------------------------------------------- int __thiscall sub_556910(int this) { int v1; // ebx@1 int v2; // esi@1 int i; // edi@2 int result; // eax@5 v1 = this; v2 = *(_DWORD *)this; if ( *(_DWORD *)this ) { for ( i = *(_DWORD *)(this + 4); v2 != i; v2 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v2)(v2, 0); operator delete(*(void **)v1); } result = 0; *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (00556950) -------------------------------------------------------- int __thiscall sub_556950(int this, int a2) { int v2; // esi@1 v2 = this; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); sub_5526D0(this + 6, a2 + 6); *(_DWORD *)(v2 + 102) = *(_DWORD *)(a2 + 102); *(_DWORD *)(v2 + 106) = *(_DWORD *)(a2 + 106); *(_DWORD *)(v2 + 110) = *(_DWORD *)(a2 + 110); *(_DWORD *)(v2 + 114) = *(_DWORD *)(a2 + 114); *(_DWORD *)(v2 + 118) = *(_DWORD *)(a2 + 118); *(_DWORD *)(v2 + 122) = *(_DWORD *)(a2 + 122); sub_555B70(v2 + 126, a2 + 126); *(_BYTE *)(v2 + 326) = *(_BYTE *)(a2 + 326); *(_DWORD *)(v2 + 327) = *(_DWORD *)(a2 + 327); return v2; } //----- (005569C0) -------------------------------------------------------- int __thiscall sub_5569C0(void *this, int a2, char a3, int a4) { int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 void *v6; // ecx@4 int v7; // eax@6 int v8; // eax@12 int v9; // ecx@14 int v10; // ST0C_4@18 int v11; // eax@18 int v12; // eax@18 char v14; // [sp+Ch] [bp-24h]@14 int v15; // [sp+20h] [bp-10h]@1 int v16; // [sp+2Ch] [bp-4h]@1 v4 = (int)this; v15 = (int)"ShineObjectClass::ShinePlayer::so_Unmark"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Unmark"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Unmark"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1156); v16 = 0; if ( (unsigned __int8)v5(v4) ) sub_4B6300((void *)(v4 + 160832), v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 784))(v4); sub_518E00((void *)v4); sub_519410((void *)v4); switch ( a2 ) { case 0: v6 = *(void **)(v4 + 122); if ( v6 && sub_4627E0(v6) ) { v7 = sub_4627E0(*(void **)(v4 + 122)); sub_47EDE0((void *)v7, v4); } goto LABEL_7; case 3: LABEL_7: sub_4963B0((void *)v4); sub_4551B0(&unk_AA0EC0, v4, 0, a4); goto LABEL_8; case 2: LABEL_8: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1156))(v4) == 6 ) sub_45E0C0((void *)v4); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3188))(v4) ) sub_45D1C0(v4, v4, 2); v8 = *(_DWORD *)(v4 + 122); if ( v8 && *(_DWORD *)(v8 + 296) ) { sub_5D4BF0((int)&v14, v8, v4); v9 = *(_DWORD *)(v4 + 122); LOBYTE(v16) = 1; sub_463090(v9, 88, (int)&v14); LOBYTE(v16) = 0; sub_5D4580(&v14); } sub_5519D0((void *)v4, a2, a3, 3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 304))(v4) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 140))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int, int *))(*(_DWORD *)v4 + 2852))(v4, &a4) == 1 ) { v10 = a4; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v12 = sub_611FC0((int)&dword_14D41B48, v11, v10); if ( v12 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v12 + 216))(v12, v4); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2092))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2116))(v4); break; case 1: if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3188))(v4) ) sub_45D1C0(v4, v4, 2); sub_4551B0(&unk_AA0EC0, v4, 0, a4); if ( *(_DWORD *)(v4 + 160808) != 4 ) sub_42A8B0(v4 + 160796, (int)sub_556100, (FILE *)1, 4, 10000); break; default: break; } sub_473EB0((void *)v4); --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Unmark"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00556C30) -------------------------------------------------------- int __thiscall sub_556C30(void *this, int a2) { void *v2; // esi@1 void (__thiscall *v3)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@3 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_banning"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_banning"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2) ) (*(void (__thiscall **)(void *, void **))(*(_DWORD *)v2 + 2320))(v2, &off_6E6220); *(_DWORD *)(*((_DWORD *)v2 + 6042) + 4) = 3; v3 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 828); *((_BYTE *)v2 + 161244) = 1; v3(v2, a2, 1, 4); v4 = (unsigned __int8)sub_555DF0(&unk_13253630, *((_WORD *)v2 + 2), a2, 16); if ( !(_BYTE)v4 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v4); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_banning"); } // 6E6220: using guessed type void *off_6E6220; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00556D40) -------------------------------------------------------- int __thiscall sub_556D40(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 126) = 0; sub_4241C0(this + 130, byte_6A492E, 0); sub_4241C0(v1 + 158, byte_6A492E, 0); sub_4241C0(v1 + 186, byte_6A492E, 0); sub_4241C0(v1 + 214, byte_6A492E, 0); sub_4241C0(v1 + 242, byte_6A492E, 0); sub_4241C0(v1 + 270, byte_6A492E, 0); return sub_4241C0(v1 + 298, byte_6A492E, 0); } //----- (00556DD0) -------------------------------------------------------- char __thiscall sub_556DD0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_556950(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00556E10) -------------------------------------------------------- char __thiscall sub_556E10(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_556950(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00556E50) -------------------------------------------------------- char __thiscall sub_556E50(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_556950(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00556EA0) -------------------------------------------------------- char __thiscall sub_556EA0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_556950(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00556EF0) -------------------------------------------------------- char __cdecl sub_556EF0(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748018 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_74801C ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 4); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748018: using guessed type int dword_748018; // 74801C: using guessed type int dword_74801C; // 86FEB8: using guessed type int __security_cookie; //----- (00557020) -------------------------------------------------------- int __thiscall sub_557020(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_6D9A1C; sub_5CF620((void *)(this + 4)); sub_585990(v1 + 6); sub_5859C0(v1 + 14); sub_585A00((void *)(v1 + 22)); sub_585A00((void *)(v1 + 34)); sub_552D00(v1 + 126); *(_DWORD *)(v1 + 10) = v1; *(_DWORD *)(v1 + 22) = v1 + 6; *(_DWORD *)(v1 + 18) = v1; *(_DWORD *)(v1 + 34) = v1 + 14; *(_DWORD *)(v1 + 122) = 0; sub_556D40(v1); *(_DWORD *)(v1 + 118) = v1 + 110; *(_DWORD *)(v1 + 102) = &unk_13244E80; *(_DWORD *)(v1 + 106) = &unk_13244E88; *(_DWORD *)(v1 + 110) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 118) + 4) = 0; *(_BYTE *)(v1 + 326) = 0; *(_DWORD *)(v1 + 78) = 0; *(_DWORD *)(v1 + 82) = 0; *(_BYTE *)(v1 + 86) = 0; return v1; } // 6D9A1C: using guessed type int (*off_6D9A1C[4])(); //----- (00557100) -------------------------------------------------------- int __thiscall sub_557100(int this) { int v1; // esi@1 v1 = this; sub_557020(this); *(_DWORD *)v1 = &off_6E0364; *(_DWORD *)(v1 + 348) = 0; *(_DWORD *)(v1 + 352) = 0; *(_DWORD *)(v1 + 356) = 0; *(_DWORD *)(v1 + 335) = 0; *(_DWORD *)(v1 + 102) = v1 + 339; *(_DWORD *)(v1 + 106) = v1 + 347; return v1; } // 6E0364: using guessed type int (*off_6E0364)(); //----- (00557140) -------------------------------------------------------- int __thiscall sub_557140(int this) { int v1; // esi@1 v1 = this; sub_557020(this); *(_DWORD *)v1 = &off_6DA99C; sub_547510(v1 + 331); sub_4C0A40(v1 + 492); sub_58FC10(v1 + 504); *(_DWORD *)(v1 + 609) = 0; *(_DWORD *)(v1 + 605) = 0; *(_DWORD *)(v1 + 601) = 0; *(_DWORD *)(v1 + 102) = *(_DWORD *)(v1 + 365) + 4; *(_DWORD *)(v1 + 106) = &unk_13244E88; sub_52D340((void *)v1, 0); return v1; } // 6DA99C: using guessed type int (*off_6DA99C)(); //----- (005571E0) -------------------------------------------------------- int __thiscall sub_5571E0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; sub_557020(this); *(_DWORD *)v1 = &off_6DB82C; sub_547430(v1 + 331); *(_DWORD *)(v1 + 414) = 0; *(_DWORD *)(v1 + 410) = 0; *(_DWORD *)(v1 + 406) = 0; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 431); v2 = *(_DWORD *)(v1 + 398); *(_DWORD *)(v1 + 106) = v2 + 42; *(_DWORD *)(v1 + 102) = v2 + 34; return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6DB82C: using guessed type int (*off_6DB82C)(); //----- (00557270) -------------------------------------------------------- int __thiscall sub_557270(int this) { int v1; // esi@1 v1 = this; sub_557020(this); *(_DWORD *)v1 = &off_6DC6BC; *(_DWORD *)(v1 + 356) = 0; sub_5CF620((void *)(v1 + 368)); sub_40CDD0((void *)(v1 + 432)); sub_5882E0(v1 + 3848); *(_DWORD *)(v1 + 4112) = 0; sub_4C8DA0(v1 + 4120); sub_650330((int)&unk_132535F8, v1); *(_DWORD *)(v1 + 364) = &unk_132535F8; *(_DWORD *)(v1 + 372) = v1; *(_DWORD *)(v1 + 3828) = v1 + 3824; *(_DWORD *)(v1 + 4116) = &unk_8BB3B0; *(_DWORD *)(v1 + 7892) = -1; *(_DWORD *)(v1 + 7880) = 0; *(_DWORD *)(v1 + 7884) = off_8551E4; *(_DWORD *)(v1 + 7900) = 0; *(_BYTE *)(v1 + 7888) = 0; sub_43BE30(v1 + 4120); return v1; } // 6DC6BC: using guessed type int (*off_6DC6BC)(); // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); //----- (005573B0) -------------------------------------------------------- void __thiscall sub_5573B0(int this) { int v1; // esi@1 void *v2; // eax@1 int v3; // edi@3 int i; // [sp+14h] [bp-10h]@4 v1 = this; *(_DWORD *)this = &off_6E6254; v2 = *(void **)(this + 161476); if ( v2 ) free(v2); sub_50CB70(v1 + 162000); nullsub_2((void *)(v1 + 161908)); nullsub_2((void *)(v1 + 161900)); nullsub_2((void *)(v1 + 161892)); nullsub_2((void *)(v1 + 161732)); sub_424190((void **)(v1 + 161612)); sub_424190((void **)(v1 + 161596)); sub_424190((void **)(v1 + 161580)); sub_588340((void *)(v1 + 161460)); sub_4BC920(v1 + 161384); v3 = *(_DWORD *)(v1 + 161248); if ( v3 ) { for ( i = *(_DWORD *)(v1 + 161252); v3 != i; v3 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v3)(v3, 0); operator delete(*(void **)(v1 + 161248)); } *(_DWORD *)(v1 + 161248) = 0; *(_DWORD *)(v1 + 161252) = 0; *(_DWORD *)(v1 + 161256) = 0; if ( *(_DWORD *)(v1 + 161224) ) operator delete(*(void **)(v1 + 161224)); *(_DWORD *)(v1 + 161224) = 0; *(_DWORD *)(v1 + 161228) = 0; *(_DWORD *)(v1 + 161232) = 0; if ( *(_DWORD *)(v1 + 161208) ) operator delete(*(void **)(v1 + 161208)); *(_DWORD *)(v1 + 161208) = 0; *(_DWORD *)(v1 + 161212) = 0; *(_DWORD *)(v1 + 161216) = 0; sub_4B6110(v1 + 160832); nullsub_2((void *)(v1 + 160796)); sub_62F120(v1 + 160364); sub_450590(v1 + 159688); nullsub_2((void *)(v1 + 159660)); nullsub_2((void *)(v1 + 159652)); j_nullsub_2(v1 + 156368); sub_58D040((void *)(v1 + 155984)); sub_58E230((void *)(v1 + 155616)); sub_52BE20(v1 + 155582); nullsub_2((void *)(v1 + 155460)); sub_63FDC0(v1 + 152568); sub_63FA20(v1 + 85744); nullsub_2((void *)(v1 + 85728)); nullsub_2((void *)(v1 + 84520)); nullsub_2((void *)(v1 + 84508)); nullsub_2((void *)(v1 + 84471)); sub_446C50(v1 + 84424); sub_4477A0(v1 + 84388); sub_575D90(v1 + 82048); sub_575B40(v1 + 82024); sub_547AF0((void *)(v1 + 32816)); nullsub_2((void *)(v1 + 32655)); nullsub_2((void *)(v1 + 32654)); nullsub_2((void *)(v1 + 32392)); *(_DWORD *)(v1 + 24180) = &off_6D7F7C; sub_58F9F0((void *)(v1 + 24172)); nullsub_2((void *)(v1 + 7936)); sub_5534D0((void *)v1); } // 52BE20: using guessed type int __thiscall sub_52BE20(_DWORD); // 575D90: using guessed type int __thiscall sub_575D90(_DWORD); // 5C79E0: using guessed type int __thiscall j_nullsub_2(_DWORD); // 6D7F7C: using guessed type int (__stdcall *off_6D7F7C)(int); // 6E6254: using guessed type int (*off_6E6254)(); //----- (00557700) -------------------------------------------------------- _UNKNOWN *__cdecl sub_557700() { return &unk_132541F4; } //----- (00557710) -------------------------------------------------------- char *__thiscall sub_557710(void *this) { return (char *)this + 32816; } //----- (00557720) -------------------------------------------------------- char *__thiscall sub_557720(void *this) { return (char *)this + 84452; } //----- (00557730) -------------------------------------------------------- char *__thiscall sub_557730(void *this) { return (char *)this + 84471; } //----- (00557740) -------------------------------------------------------- char __thiscall sub_557740(int this) { return *(_BYTE *)(this + 84470); } //----- (00557750) -------------------------------------------------------- char __thiscall sub_557750(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 84470) = a2; return result; } //----- (00557760) -------------------------------------------------------- int __thiscall sub_557760(int this) { return 60000 * *(_BYTE *)(this + 160312); } //----- (00557770) -------------------------------------------------------- int __thiscall sub_557770(void *this) { void *v1; // esi@1 int v2; // eax@1 int result; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 3188))(); if ( v2 ) result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1548))(v2); else result = (int)((char *)v1 + 388); return result; } //----- (005577A0) -------------------------------------------------------- char __thiscall sub_5577A0(int this, unsigned __int16 a2, unsigned int a3) { return sub_446250((void *)(this + 84388), a2, a3); } //----- (005577B0) -------------------------------------------------------- char *__thiscall sub_5577B0(void *this) { return (char *)this + 32392; } //----- (005577C0) -------------------------------------------------------- __int64 __thiscall sub_5577C0(int this) { return *(_QWORD *)(this + 32719); } //----- (005577D0) -------------------------------------------------------- __int64 __thiscall sub_5577D0(int this) { return *(_QWORD *)(this + 32687); } //----- (005577E0) -------------------------------------------------------- int __thiscall sub_5577E0(int this) { return *(_DWORD *)(this + 32715); } //----- (005577F0) -------------------------------------------------------- char __thiscall sub_5577F0(int this) { return *(_BYTE *)(this + 32761); } //----- (00557800) -------------------------------------------------------- char *__thiscall sub_557800(void *this) { return (char *)this + 155572; } //----- (00557810) -------------------------------------------------------- __int16 __thiscall sub_557810(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 32785) = a2; return result; } //----- (00557830) -------------------------------------------------------- char *__thiscall sub_557830(void *this) { return (char *)this + 32665; } //----- (00557840) -------------------------------------------------------- char __thiscall sub_557840(int this) { int v1; // eax@1 int v2; // edx@1 char result; // al@1 v1 = *(_DWORD *)(this + 102); *(_DWORD *)(this + 32739) = *(_DWORD *)v1; v2 = *(_DWORD *)(this + 106); *(_DWORD *)(this + 32743) = *(_DWORD *)(v1 + 4); result = *(_BYTE *)v2; *(_BYTE *)(this + 32747) = *(_BYTE *)v2; return result; } //----- (00557860) -------------------------------------------------------- char __thiscall sub_557860(int this) { return (*(_BYTE *)(this + 23824) >> 3) & 1; } //----- (00557870) -------------------------------------------------------- int __thiscall sub_557870(void *this, int a2) { void *v2; // edi@1 int v3; // eax@7 int result; // eax@8 v2 = this; if ( this == (void *)a2 ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SendMyBriefInfo", 0); if ( *(_WORD *)(a2 + 4) == **(_WORD **)((char *)v2 + 32650) ) sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_SendMyBriefInfo", 0); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1156))(v2) && !(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, (char *)v2 + 32396); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1948))(a2); if ( !(_BYTE)result ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2576))(v2, a2); return result; } //----- (00557910) -------------------------------------------------------- int __thiscall sub_557910(int this) { return *(_DWORD *)(this + 32388); } //----- (00557920) -------------------------------------------------------- int __thiscall sub_557920(int this) { return *(_DWORD *)(this + 32384); } //----- (00557930) -------------------------------------------------------- bool __thiscall sub_557930(int this) { return *(_BYTE *)(this + 161244) || !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 24168) + 12))(); } //----- (00557950) -------------------------------------------------------- char __thiscall sub_557950(int this) { char result; // al@1 result = *(_BYTE *)(this + 32686); if ( (unsigned __int8)result <= 0x96u ) { if ( !result ) result = 1; } else { result = -106; } return result; } //----- (00557970) -------------------------------------------------------- char __thiscall sub_557970(int this) { return (*(_BYTE *)(this + 32766) >> 2) & 0x1F; } //----- (00557980) -------------------------------------------------------- unsigned int __thiscall sub_557980(void *this) { int v1; // ecx@1 unsigned int result; // eax@1 v1 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1072))() + 2584) * *((_WORD *)this + 77712); result = ((signed int)((unsigned __int64)(v1 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v1 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( (result & 0x80000000u) != 0 ) result = 0; return result; } //----- (005579C0) -------------------------------------------------------- signed int __cdecl sub_5579C0() { return 50; } //----- (005579D0) -------------------------------------------------------- int __thiscall sub_5579D0(int this) { return *(_DWORD *)(this + 32650); } //----- (005579E0) -------------------------------------------------------- signed int __thiscall sub_5579E0(void *this, int a2) { int v2; // eax@1 v2 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); return (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 72))(v2) != 11 ? 100 : 450; } //----- (00557A10) -------------------------------------------------------- int __thiscall sub_557A10(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int result; // eax@2 int v5; // ecx@4 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 3708))() == 1; v3 = *(_DWORD *)v1; if ( v2 ) { result = (*(int (__thiscall **)(void *))(v3 + 3716))(v1); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 1156))(v1) == 6 ) v5 = *((_WORD *)v1 + 80387); else v5 = *((_DWORD *)v1 + 1814); result = (unsigned __int8)((unsigned int)((unsigned int)(dword_DA2293C * v5) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); if ( (signed __int16)result < 0 ) result = 0; } return result; } // DA2293C: using guessed type int dword_DA2293C; //----- (00557A70) -------------------------------------------------------- int __thiscall sub_557A70(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int result; // eax@2 unsigned __int64 v5; // qax@4 int v6; // edx@6 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 3712))() == 1; v3 = *(_DWORD *)v1; if ( v2 ) { result = (*(int (__thiscall **)(void *))(v3 + 3720))(v1); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 1156))(v1) == 6 ) v5 = (unsigned int)(dword_DA22938 * *((_WORD *)v1 + 80388)) * (unsigned __int64)(unsigned int)&unk_10624DD3; else v5 = (unsigned int)(dword_DA22938 * *((_DWORD *)v1 + 1814)) * (unsigned __int64)(unsigned int)&unk_10624DD3; v6 = HIDWORD(v5) >> 6; result = (unsigned __int16)v6; if ( (signed __int16)v6 < 0 ) result = 0; } return result; } // DA22938: using guessed type int dword_DA22938; //----- (00557AD0) -------------------------------------------------------- __int16 __thiscall sub_557AD0(int this) { return *(_WORD *)(this + 155572); } //----- (00557AE0) -------------------------------------------------------- int __thiscall sub_557AE0(int this) { return *(_DWORD *)(this + 32661); } //----- (00557AF0) -------------------------------------------------------- int __thiscall sub_557AF0(int this) { return *(_DWORD *)(this + 32657); } //----- (00557B00) -------------------------------------------------------- char *__thiscall sub_557B00(void *this) { return (char *)this + 32727; } //----- (00557B10) -------------------------------------------------------- int __thiscall sub_557B10(int this, int a2, int a3) { return sub_640920((void *)(this + 32816), a2, a3); } //----- (00557B20) -------------------------------------------------------- int __thiscall sub_557B20(void *this, int a2, int a3, unsigned __int16 a4, int a5) { int v6; // [sp+0h] [bp-4h]@1 v6 = 0; return sub_640690((int)((char *)this + 32816), a2, a3, a4, (int)&v6, 8000, a5); } //----- (00557B60) -------------------------------------------------------- int __thiscall sub_557B60(void *this, int a2) { void *v2; // esi@1 signed int v3; // edx@1 int v4; // edi@1 int v5; // eax@1 int v6; // ecx@1 _BYTE *v7; // ecx@1 int (__thiscall *v8)(_DWORD); // eax@1 int result; // eax@1 v2 = this; v3 = (signed int)((unsigned __int64)(a2 * *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1072))() + 3286) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v4 = v3 + ((unsigned int)v3 >> 31); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1388))(v2); v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); *((_DWORD *)v7 + 4) = *(_DWORD *)(v5 + 16); v7[20] = 0; sub_55C1B0(v2, v4, 1, (int)"ShineObjectClass::ShinePlayer::so_Heal"); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1264); *(_DWORD *)((char *)v2 + 32703) += v4; result = v8(v2); if ( *(_DWORD *)((char *)v2 + 32703) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); *(_DWORD *)((char *)v2 + 32703) = result; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00557C20) -------------------------------------------------------- int __thiscall sub_557C20(int this) { return *(_DWORD *)(this + 32703); } //----- (00557C30) -------------------------------------------------------- int __thiscall sub_557C30(int this) { return *(_DWORD *)(this + 32707); } //----- (00557C40) -------------------------------------------------------- int __thiscall sub_557C40(int this, unsigned int a2) { int result; // eax@1 result = *(_DWORD *)(this + 32707); if ( result < a2 ) { *(_DWORD *)(this + 32707) = 0; } else { result -= a2; *(_DWORD *)(this + 32707) = result; } return result; } //----- (00557C70) -------------------------------------------------------- int __thiscall sub_557C70(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)this; *(_DWORD *)((char *)v2 + 32707) += a2; result = (*(int (**)(void))(v3 + 1268))(); if ( *(_DWORD *)((char *)v2 + 32707) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1268))(v2); *(_DWORD *)((char *)v2 + 32707) = result; } return result; } //----- (00557CB0) -------------------------------------------------------- void __thiscall sub_557CB0(int this) { *(_DWORD *)(this + 32703) = 0; } //----- (00557CC0) -------------------------------------------------------- unsigned int __thiscall sub_557CC0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 _BYTE *v5; // ecx@1 unsigned int result; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1388))(); v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); *((_DWORD *)v5 + 4) = *(_DWORD *)(v3 + 16); v5[20] = 0; sub_55C1B0(v2, a2, -1, (int)"ShineObjectClass::ShinePlayer::so_LostHP"); result = *(_DWORD *)((char *)v2 + 32703); if ( result < a2 ) { *(_DWORD *)((char *)v2 + 32703) = 1; } else { result -= a2; *(_DWORD *)((char *)v2 + 32703) = result; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00557D50) -------------------------------------------------------- int __thiscall sub_557D50(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 _BYTE *v5; // ecx@1 int (__thiscall *v6)(_DWORD); // eax@1 int result; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1388))(); v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); *((_DWORD *)v5 + 4) = *(_DWORD *)(v3 + 16); v5[20] = 0; sub_55C1B0(v2, a2, 1, (int)"ShineObjectClass::ShinePlayer::so_GainHP"); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1256); *(_DWORD *)((char *)v2 + 32703) += a2; result = v6(v2); if ( *(_DWORD *)((char *)v2 + 32703) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); *(_DWORD *)((char *)v2 + 32703) = result; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00557DF0) -------------------------------------------------------- signed __int16 __stdcall sub_557DF0(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x5DCu ) { v2 = a1 + 8000; nullsub_2(&v2); result = a1 + 8000; } else { nullsub_2(&v2); result = -1; } return result; } //----- (00557E40) -------------------------------------------------------- int __thiscall sub_557E40(int this, int a2) { int v2; // edx@1 v2 = *(_DWORD *)(this + 24180); *(_DWORD *)(this + 24168) = a2; return (*(int (__thiscall **)(int, int))v2)(this + 24180, a2); } //----- (00557E70) -------------------------------------------------------- int __thiscall sub_557E70(int this) { return *(_DWORD *)(this + 32650) + 91; } //----- (00557E80) -------------------------------------------------------- __int16 __thiscall sub_557E80(int this) { return *(_WORD *)(this + 32785); } //----- (00557E90) -------------------------------------------------------- __int16 __thiscall sub_557E90(int this) { return *(_WORD *)(this + 32787); } //----- (00557EA0) -------------------------------------------------------- __int16 __thiscall sub_557EA0(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 32787) = a2; return result; } //----- (00557EC0) -------------------------------------------------------- signed int __thiscall sub_557EC0(void *this) { void *v1; // esi@1 signed int result; // eax@2 v1 = this; if ( -1 == (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1364))() ) result = -1 != (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1); else result = 2; return result; } //----- (00557F00) -------------------------------------------------------- int __thiscall sub_557F00(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1388))(); return sub_4470D0((char *)v2 + 84424, a2, v3); } //----- (00557F30) -------------------------------------------------------- int __thiscall sub_557F30(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this + 84471; sub_591290((void *)(this + 84471)); result = a2; *(_DWORD *)v2 = a2; *(_WORD *)(v2 + 4) = 0; return result; } //----- (00557F60) -------------------------------------------------------- int __thiscall sub_557F60(int this) { int v1; // eax@1 *(_WORD *)(this + 84458) = -1; *(_WORD *)(this + 84452) = -1; *(_DWORD *)(this + 84460) = -1; *(_DWORD *)(this + 84454) = -1; v1 = *(_DWORD *)this; *(_DWORD *)(this + 84471) = 0; *(_DWORD *)(this + 84464) = 0; return (*(int (__stdcall **)(_DWORD))(v1 + 808))(0); } //----- (00557FA0) -------------------------------------------------------- int __thiscall sub_557FA0(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; sub_40A820((void *)(this + 432), this, a2); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3188))(v2); if ( result ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)result + 3320))(result, a2); return result; } //----- (00557FE0) -------------------------------------------------------- int __thiscall sub_557FE0(int this, int a2, const char *a3, int a4, int a5) { int v5; // esi@1 v5 = this; *(_DWORD *)(this + 122) = a2; *(_DWORD *)(this + 32735) = 0; *(_DWORD *)(this + 32731) = 0; *(_DWORD *)(this + 32727) = 0; strncpy((char *)(this + 32727), a3, 0xCu); **(_DWORD **)(v5 + 102) = a4; *(_DWORD *)(*(_DWORD *)(v5 + 102) + 4) = a5; return (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1216))(v5); } //----- (00558030) -------------------------------------------------------- void *__thiscall sub_558030(void *this, char a2) { void *result; // eax@1 result = this; *((_WORD *)result + 42864) &= ~(1 << a2); return result; } //----- (00558050) -------------------------------------------------------- char __thiscall sub_558050(int this, unsigned __int16 a2) { return sub_460690((void *)(this + 85728), a2); } //----- (00558060) -------------------------------------------------------- void *__thiscall sub_558060(void *this, char a2) { void *result; // eax@1 result = this; *((_WORD *)result + 42864) |= 1 << a2; return result; } //----- (00558080) -------------------------------------------------------- int __thiscall sub_558080(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 + 1240))(); v3 = *((_DWORD *)v1 + 1029); if ( v2 > 0x96u ) result = *(_DWORD *)(*(_DWORD *)(v3 + 67672) + 124); else result = *(_DWORD *)(*(_DWORD *)(v3 + 4 * v2 + 67672) + 124); return result; } //----- (005580C0) -------------------------------------------------------- int __thiscall sub_5580C0(int this) { return sub_444B20((void *)(this + 84388)); } //----- (005580D0) -------------------------------------------------------- int __thiscall sub_5580D0(int this) { int v1; // edi@1 int v2; // ST04_4@1 void *v3; // eax@1 void *v4; // eax@1 v1 = this; v2 = this; v3 = (void *)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 32816))(this + 32816, 10); sub_59C3C0(v3, v2); v4 = (void *)(**(int (__thiscall ***)(_DWORD, _DWORD))(v1 + 32816))(v1 + 32816, 12); return sub_59C3C0(v4, v1); } //----- (00558110) -------------------------------------------------------- int __thiscall sub_558110(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 32719) = a2; *(_DWORD *)(this + 32723) = a3; return result; } //----- (00558130) -------------------------------------------------------- int __thiscall sub_558130(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 32715) = a2; return result; } //----- (00558140) -------------------------------------------------------- int __thiscall sub_558140(int this) { return *(_DWORD *)(this + 155596); } //----- (00558150) -------------------------------------------------------- int __thiscall sub_558150(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 _BYTE *v5; // ecx@1 int v6; // eax@1 int result; // eax@3 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1388))(); v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); *((_DWORD *)v5 + 4) = *(_DWORD *)(v3 + 16); v5[20] = 0; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); sub_55C1B0( v2, (unsigned int)((unsigned int)(a2 * v6) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6, 1, (int)"ShineObjectClass::ShinePlayer::so_ply_PartyRecharge"); *(_DWORD *)((char *)v2 + 32703) += (unsigned int)((unsigned int)(a2 * (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)((char *)v2 + 32707) += (unsigned int)((unsigned int)(a2 * (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1268))(v2)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( *(_DWORD *)((char *)v2 + 32703) > (unsigned int)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2) ) *(_DWORD *)((char *)v2 + 32703) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); if ( *(_DWORD *)((char *)v2 + 32707) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); *(_DWORD *)((char *)v2 + 32707) = result; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00558260) -------------------------------------------------------- char *__thiscall sub_558260(void *this) { return (char *)this + 156368; } //----- (00558270) -------------------------------------------------------- char *__thiscall sub_558270(void *this) { return (char *)this + 32748; } //----- (00558280) -------------------------------------------------------- char *__thiscall sub_558280(void *this) { return (char *)this + 58688; } //----- (00558290) -------------------------------------------------------- char __thiscall sub_558290(int this) { return *(_BYTE *)(this + 32766) >> 7; } //----- (005582A0) -------------------------------------------------------- int __thiscall sub_5582A0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 159668) = a2; return result; } //----- (005582B0) -------------------------------------------------------- int __thiscall sub_5582B0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 159672) = a2; return result; } //----- (005582C0) -------------------------------------------------------- char *__thiscall sub_5582C0(void *this) { return (char *)this + 84376; } //----- (005582D0) -------------------------------------------------------- __int16 __thiscall sub_5582D0(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 84376) = a2; return result; } //----- (005582F0) -------------------------------------------------------- char *__thiscall sub_5582F0(void *this) { return (char *)this + 84378; } //----- (00558300) -------------------------------------------------------- __int16 __thiscall sub_558300(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 84378) = a2; return result; } //----- (00558320) -------------------------------------------------------- char *__thiscall sub_558320(void *this) { return (char *)this + 155582; } //----- (00558330) -------------------------------------------------------- int __thiscall sub_558330(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 160322); if ( v1 <= 4u ) result = 8 * (3 * v1 + 6); else result = 144; return result; } //----- (00558350) -------------------------------------------------------- int __thiscall sub_558350(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 160323); if ( v1 <= 2u ) result = 4 * (9 * v1 + 18); else result = 144; return result; } //----- (00558370) -------------------------------------------------------- int __thiscall sub_558370(int this) { int result; // eax@1 result = *(_DWORD *)(this + 155560) + *(_BYTE *)(this + 160324); if ( result > 20 ) result = 20; return result; } //----- (00558390) -------------------------------------------------------- char *__thiscall sub_558390(void *this) { return (char *)this + 160312; } //----- (005583A0) -------------------------------------------------------- signed int __cdecl sub_5583A0() { return 150; } //----- (005583B0) -------------------------------------------------------- int __thiscall sub_5583B0(int this) { int v1; // esi@1 v1 = this; if ( *(_WORD *)(this + 160760) >= 0 ) sub_45CC80(this); if ( *(_BYTE *)(v1 + 23888) ) sub_45CCC0((void *)v1); sub_475FE0((void *)v1); return sub_56E8C0((void *)v1); } //----- (005583F0) -------------------------------------------------------- int __thiscall sub_5583F0(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; if ( *(_BYTE *)(*(int (**)(void))(*(_DWORD *)this + 1060))() <= BYTE1(dword_DA22970[0]) ) result = *(_DWORD *)(dword_DA2308C + 4 * *(_BYTE *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1060))(v1)); else result = *(_DWORD *)dword_DA2308C; return result; } // DA22970: using guessed type int dword_DA22970[]; // DA2308C: using guessed type int dword_DA2308C; //----- (00558430) -------------------------------------------------------- int __thiscall sub_558430(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1060))() + 3) <= BYTE1(dword_DA22970[0]) ) result = *(_DWORD *)(dword_DA23090 + 4 * *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1060))(v1) + 3)); else result = *(_DWORD *)dword_DA23090; return result; } // DA22970: using guessed type int dword_DA22970[]; // DA23090: using guessed type int dword_DA23090; //----- (00558470) -------------------------------------------------------- int __thiscall sub_558470(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1060))() + 2) <= BYTE1(dword_DA22970[0]) ) result = *(_DWORD *)(dword_DA23094 + 4 * *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1060))(v1) + 2)); else result = *(_DWORD *)dword_DA23094; return result; } // DA22970: using guessed type int dword_DA22970[]; // DA23094: using guessed type int dword_DA23094; //----- (005584B0) -------------------------------------------------------- int __thiscall sub_5584B0(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1060))() + 1) <= BYTE1(dword_DA22970[0]) ) result = *(_DWORD *)(dword_DA23098 + 4 * *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1060))(v1) + 1)); else result = *(_DWORD *)dword_DA23098; return result; } // DA22970: using guessed type int dword_DA22970[]; // DA23098: using guessed type int dword_DA23098; //----- (005584F0) -------------------------------------------------------- int __thiscall sub_5584F0(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1060))() + 4) <= BYTE1(dword_DA22970[0]) ) result = *(_DWORD *)(dword_DA2309C + 4 * *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1060))(v1) + 4)); else result = *(_DWORD *)dword_DA2309C; return result; } // DA22970: using guessed type int dword_DA22970[]; // DA2309C: using guessed type int dword_DA2309C; //----- (00558530) -------------------------------------------------------- int __thiscall sub_558530(int this) { return *(_BYTE *)(this + 160337); } //----- (00558540) -------------------------------------------------------- unsigned int __thiscall sub_558540(void *this) { void *v1; // esi@1 char v2; // al@3 unsigned int result; // eax@4 v1 = this; if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1156))() || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1156))(v1) == 3 || (v2 = *((_BYTE *)v1 + 23824), v2 & 1) ) result = 0; else result = ((unsigned int)(unsigned __int8)~v2 >> 1) & 1; return result; } //----- (00558580) -------------------------------------------------------- int __thiscall sub_558580(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32755) + 1; *(_DWORD *)(this + 32755) = result; return result; } //----- (00558590) -------------------------------------------------------- signed int __thiscall sub_558590(void *this) { return sub_43BC40((int)((char *)this + 32396)); } //----- (005585A0) -------------------------------------------------------- int __thiscall sub_5585A0(int this) { return *(_BYTE *)(this + 32784); } //----- (005585B0) -------------------------------------------------------- int __thiscall sub_5585B0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 159684) = a2; return result; } //----- (005585C0) -------------------------------------------------------- int __thiscall sub_5585C0(int this) { return *(_DWORD *)(this + 159680); } //----- (005585D0) -------------------------------------------------------- int __thiscall sub_5585D0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 159680) = a2; return result; } //----- (005585E0) -------------------------------------------------------- bool __thiscall sub_5585E0(int this) { return *(_DWORD *)(this + 159680) != 0; } //----- (005585F0) -------------------------------------------------------- bool __thiscall sub_5585F0(void *this) { void *v1; // esi@1 v1 = this; return !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 2136))() && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2072))(v1); } //----- (00558620) -------------------------------------------------------- bool __thiscall sub_558620(int this) { return (*(_BYTE *)(this + 23825) & 0x10) == 16; } //----- (00558630) -------------------------------------------------------- void __thiscall sub_558630(int this) { *(_BYTE *)(this + 23825) |= 0x10u; } //----- (00558640) -------------------------------------------------------- bool __thiscall sub_558640(int this) { return (*(_BYTE *)(this + 23825) & 0x20) == 32; } //----- (00558650) -------------------------------------------------------- void __thiscall sub_558650(int this) { *(_BYTE *)(this + 23825) |= 0x20u; } //----- (00558660) -------------------------------------------------------- char __thiscall sub_558660(int this) { return *(_BYTE *)(this + 160920); } //----- (00558670) -------------------------------------------------------- char __thiscall sub_558670(int this, unsigned int a2, unsigned __int8 a3) { unsigned __int8 v3; // dl@1 unsigned __int8 v4; // dl@3 unsigned int v5; // eax@3 unsigned __int8 v6; // dl@5 unsigned int v7; // eax@5 char result; // al@6 unsigned __int8 v9; // dl@8 unsigned int v10; // ebx@8 unsigned __int8 v11; // cl@10 char v12; // [sp+7h] [bp-1h]@1 v3 = *(_BYTE *)(this + 32748); v12 = 0; if ( (unsigned __int8)a2 < v3 ) v12 = v3 - a2; v4 = *(_BYTE *)(this + 32749); v5 = a2 >> 8; if ( BYTE1(a2) < v4 ) v12 += v4 - v5; v6 = *(_BYTE *)(this + 32750); v7 = a2 >> 16; if ( (unsigned __int8)(a2 >> 16) >= v6 ) result = v12; else result = v6 - v7 + v12; v9 = *(_BYTE *)(this + 32751); v10 = a2 >> 24; if ( BYTE3(a2) < v9 ) result += v9 - v10; v11 = *(_BYTE *)(this + 32752); if ( a3 < v11 ) result += v11 - a3; return result; } //----- (005586F0) -------------------------------------------------------- char __thiscall sub_5586F0(int this) { return *(_BYTE *)(this + 24164); } //----- (00558700) -------------------------------------------------------- void __thiscall sub_558700(int this) { *(_BYTE *)(this + 24164) = 1; } //----- (00558710) -------------------------------------------------------- void __thiscall sub_558710(int this) { *(_BYTE *)(this + 24164) = 0; } //----- (00558720) -------------------------------------------------------- int __thiscall sub_558720(int this, int a2, int a3, int a4) { int result; // eax@1 *(_DWORD *)(this + 161520) = a2; result = a4; *(_DWORD *)(this + 161524) = a3; *(_DWORD *)(this + 161528) = a4; return result; } //----- (00558750) -------------------------------------------------------- __int64 __thiscall sub_558750(int this) { return *(_QWORD *)(this + 161544); } //----- (00558760) -------------------------------------------------------- int __thiscall sub_558760(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161544) = a2; *(_DWORD *)(this + 161548) = a3; return result; } //----- (00558780) -------------------------------------------------------- __int64 __thiscall sub_558780(int this) { return *(_QWORD *)(this + 161536); } //----- (00558790) -------------------------------------------------------- int __thiscall sub_558790(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161536) = a2; *(_DWORD *)(this + 161540) = a3; return result; } //----- (005587B0) -------------------------------------------------------- __int16 __thiscall sub_5587B0(int this) { __int16 result; // ax@1 result = *(_WORD *)(this + 84500); *(_WORD *)(this + 161560) = result; return result; } //----- (005587C0) -------------------------------------------------------- int __thiscall sub_5587C0(int this) { return *(_DWORD *)(this + 161572); } //----- (005587D0) -------------------------------------------------------- int __thiscall sub_5587D0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161572) = a2; return result; } //----- (005587E0) -------------------------------------------------------- int __thiscall sub_5587E0(int this) { return *(_DWORD *)(this + 161576); } //----- (005587F0) -------------------------------------------------------- int __thiscall sub_5587F0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161576) = a2; return result; } //----- (00558800) -------------------------------------------------------- char __thiscall sub_558800(int this) { return *(_BYTE *)(this + 161628); } //----- (00558810) -------------------------------------------------------- int __thiscall sub_558810(int this) { return *(_DWORD *)(this + 161632); } //----- (00558820) -------------------------------------------------------- char __thiscall sub_558820(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 161628) = a2; return result; } //----- (00558830) -------------------------------------------------------- int __thiscall sub_558830(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161632) = a2; return result; } //----- (00558840) -------------------------------------------------------- int __thiscall sub_558840(int this) { int v1; // esi@1 int result; // eax@2 v1 = this; if ( sub_45CDE0(this) == 2 ) result = *(_DWORD *)(v1 + 161708); else result = 0; return result; } //----- (00558860) -------------------------------------------------------- char __thiscall sub_558860(int this) { return *(_BYTE *)(this + 161705); } //----- (00558870) -------------------------------------------------------- bool __thiscall sub_558870(void *this) { int v1; // eax@1 bool result; // al@2 v1 = (*(int (**)(void))(*(_DWORD *)this + 3188))(); if ( v1 ) result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3184))(v1) != 1; else result = 0; return result; } //----- (005588A0) -------------------------------------------------------- char __thiscall sub_5588A0(int this) { return *(_BYTE *)(this + 160336); } //----- (005588B0) -------------------------------------------------------- char *__thiscall sub_5588B0(void *this) { return (char *)this + 82048; } //----- (005588C0) -------------------------------------------------------- int __thiscall sub_5588C0(int this, char a2) { int result; // eax@1 result = *(_DWORD *)(this + 32650); *(_BYTE *)(result + 233) = a2; return result; } //----- (005588E0) -------------------------------------------------------- char __thiscall sub_5588E0(int this) { return *(_BYTE *)(*(_DWORD *)(this + 32650) + 233); } //----- (005588F0) -------------------------------------------------------- char __thiscall sub_5588F0(int this) { char result; // al@2 if ( *(_BYTE *)(this + 160353) == 1 || *(_BYTE *)(this + 160355) == 1 ) result = *(_BYTE *)(this + 161781); else result = 0; return result; } //----- (00558910) -------------------------------------------------------- char __thiscall sub_558910(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 161781) = a2; return result; } //----- (00558920) -------------------------------------------------------- char __thiscall sub_558920(int this) { char result; // al@2 if ( *(_BYTE *)(this + 160354) == 1 || *(_BYTE *)(this + 160355) == 1 ) result = *(_BYTE *)(this + 161782); else result = 0; return result; } //----- (00558940) -------------------------------------------------------- char __thiscall sub_558940(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 161782) = a2; return result; } //----- (00558950) -------------------------------------------------------- int __thiscall sub_558950(int this) { return *(_DWORD *)(this + 161888); } //----- (00558960) -------------------------------------------------------- int __thiscall sub_558960(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // edi@1 int v5; // eax@1 int v6; // edx@1 int v7; // edi@1 int v8; // edi@1 int v9; // eax@1 int v10; // edx@1 int v11; // eax@2 int v12; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); v3 = (*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v2 + 36))(v2, v1, (char *)v1 + 7180); v4 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1144))(v1) + 5) + v3; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1); v6 = *(_DWORD *)v1; *((_DWORD *)v1 + 961) = ((signed int)((unsigned __int64)(v4 * (*(_DWORD *)(v5 + 2596) + *((_WORD *)v1 + 80164) - 1000) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * (*(_DWORD *)(v5 + 2596) + *((_WORD *)v1 + 80164) - 1000) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v7 = (*(int (__thiscall **)(void *))(v6 + 1072))(v1) + 2392; v8 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1) + 1984) + *(_DWORD *)v7; v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1072))(v1); v10 = *(_DWORD *)v1; *((_DWORD *)v1 + 961) += v8 + *(_DWORD *)(v9 + 352); if ( -1 != *(_WORD *)((*(int (__thiscall **)(void *))(v10 + 1072))(v1) + 3284) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1072))(v1); v12 = sub_418D40((int)&unk_14D159B0, *(_WORD *)(v11 + 3284)); if ( v12 ) *((_DWORD *)v1 + 960) = *(_DWORD *)(*(_DWORD *)v12 + 70); } return *((_DWORD *)v1 + 961); } //----- (00558A60) -------------------------------------------------------- int __thiscall sub_558A60(int this, __int16 a2, int a3, int a4, int a5, int a6) { int result; // eax@1 int v7; // esi@4 int v8; // edx@4 result = a3; if ( a3 == 2 || a3 == 1 || !a3 ) { v7 = *(_DWORD *)(this + 254); *(_DWORD *)(v7 + 22) = *(_DWORD *)(a4 + 82); *(_DWORD *)(v7 + 26) = *(_DWORD *)(a4 + 86); *(_BYTE *)(v7 + 30) = *(_BYTE *)(a4 + 90); v8 = *(_DWORD *)(this + 254); *(_DWORD *)(v8 + 2) = *(_DWORD *)(a4 + 8); *(_DWORD *)(v8 + 6) = *(_DWORD *)(a4 + 12); *(_DWORD *)(v8 + 10) = *(_DWORD *)(a4 + 16); *(_DWORD *)(v8 + 14) = *(_DWORD *)(a4 + 20); *(_DWORD *)(v8 + 18) = *(_DWORD *)(a4 + 24); *(_DWORD *)(*(_DWORD *)(this + 254) + 33) = *(_DWORD *)(a4 + 109); *(_BYTE *)(*(_DWORD *)(this + 254) + 84) = -1; *(_WORD *)(*(_DWORD *)(this + 254) + 85) = 0; *(_BYTE *)(*(_DWORD *)(this + 254) + 32) = (*(_BYTE *)(a4 + 109) >> 2) & 0x1F; *(_DWORD *)(*(_DWORD *)(this + 254) + 87) = *(_DWORD *)a5; *(_WORD *)(*(_DWORD *)(this + 254) + 82) = -1; result = *(_DWORD *)(this + 254); *(_WORD *)result = a2; } return result; } //----- (00558B20) -------------------------------------------------------- bool __thiscall sub_558B20(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; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_PacketBufferFlush"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_PacketBufferFlush"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 760))(v1); v3 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 8))(v2, *((_DWORD *)v1 + 6042)); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); v5 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 8))(v4, *((_DWORD *)v1 + 6042)); v6 = v3 && v5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_PacketBufferFlush"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00558C10) -------------------------------------------------------- int __thiscall sub_558C10(void *this, __int16 a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int result; // eax@2 int v6; // eax@4 char v7; // cl@4 char v8; // dl@4 unsigned __int8 v9; // al@4 char v10; // [sp+4h] [bp-4h]@4 char v11; // [sp+5h] [bp-3h]@4 __int16 v12; // [sp+6h] [bp-2h]@4 v3 = this; v4 = *(_DWORD *)((char *)this + 122); if ( !v4 || (result = *(_DWORD *)(v4 + 12)) == 0 || !*(_BYTE *)(result + 106) ) { v6 = (*(int (**)(void))(*(_DWORD *)this + 1056))(); v7 = *(_BYTE *)(v6 + 1160); v8 = *(_BYTE *)(v6 + 1161); LOWORD(v6) = *(_WORD *)(v6 + 1162); v10 = v7; v11 = v8; v12 = v6; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1156))(v3); sub_558A60((int)((char *)v3 + 32396), a2, v9, (int)((char *)v3 + 32657), (int)&v10, a3); result = sub_573D20(v3); *((_BYTE *)v3 + 23824) |= 4u; } return result; } //----- (00558CA0) -------------------------------------------------------- int __thiscall sub_558CA0(int this, int a2) { return sub_4B03F0(a2, *(_DWORD *)(this + 32650)); } //----- (00558CC0) -------------------------------------------------------- unsigned int __thiscall sub_558CC0(void *this) { void *v1; // esi@1 unsigned int result; // eax@3 v1 = this; sub_5488B0(this); if ( *((_DWORD *)v1 + 960) < 1 ) *((_DWORD *)v1 + 960) = 1; result = *((_DWORD *)v1 + 960); if ( *(_DWORD *)((char *)v1 + 32703) > result ) *(_DWORD *)((char *)v1 + 32703) = result; return result; } //----- (00558D00) -------------------------------------------------------- unsigned int __thiscall sub_558D00(void *this) { void *v1; // esi@1 unsigned int result; // eax@3 v1 = this; sub_558960(this); if ( *((_DWORD *)v1 + 961) < 1 ) *((_DWORD *)v1 + 961) = 1; result = *((_DWORD *)v1 + 961); if ( *(_DWORD *)((char *)v1 + 32707) > result ) *(_DWORD *)((char *)v1 + 32707) = result; return result; } //----- (00558D40) -------------------------------------------------------- int __thiscall sub_558D40(int this) { int v1; // esi@1 signed __int64 v2; // qax@1 int v3; // edi@3 unsigned int v4; // edx@3 bool v5; // zf@5 v1 = this; *(_BYTE *)(v1 + 155428) |= 4u; LODWORD(v2) = *(_DWORD *)(this + 160808); if ( (_DWORD)v2 != 2 && (_DWORD)v2 != 3 ) { v3 = (*(int (__stdcall **)(int, _DWORD))(**(_DWORD **)(this + 7624) + 8))(this + 7624, *(_WORD *)(this + 155424)); v4 = (unsigned int)((unsigned int)(*(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1072))(v1) + 2584) * v3) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( (v4 & 0x80000000u) != 0 ) v4 = 0; v2 = (signed int)(10 * v4) * (signed __int64)(signed int)&unk_10624DD3; v5 = *(_DWORD *)(v1 + 160808) == 4; *(_DWORD *)(v1 + 160796) = dword_14D129E8 + (SHIDWORD(v2) >> 6) + (HIDWORD(v2) >> 31); if ( v5 ) { LODWORD(v2) = sub_639100(&unk_86DDD8, (int)"ShinePlayer::TimeScheduler::ts_Set - ", 2); } else { *(_DWORD *)(v1 + 160812) = sub_5673F0; *(_DWORD *)(v1 + 160800) = sub_430AC0; *(_DWORD *)(v1 + 160804) = 0; *(_DWORD *)(v1 + 160808) = 2; } } return v2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00558E10) -------------------------------------------------------- FILE *__thiscall sub_558E10(int this, int a2) { FILE *result; // eax@1 int v3; // edx@1 int v4; // ecx@1 result = (FILE *)this; LOBYTE(result[4857]._cnt) |= 4u; v3 = *(_DWORD *)(this + 160808); v4 = this + 160796; if ( v3 != 2 && v3 != 3 && result[4857]._cnt & 1 ) { result[744]._bufsiz = 0; result[744]._tmpfname = 0; if ( !result[12]._file ) result = sub_42A8B0(v4, (int)sub_430AC0, 0, 2, a2); } return result; } //----- (00558E70) -------------------------------------------------------- signed int __thiscall sub_558E70(int this) { int v1; // eax@1 int v2; // edx@2 signed int result; // eax@5 v1 = *(_DWORD *)(this + 32800); if ( v1 ) v2 = *(_DWORD *)(this + 32800); else v2 = *(_DWORD *)(this + 32804); if ( v2 ) { if ( !v1 ) v1 = *(_DWORD *)(this + 32804); result = *(_WORD *)(v1 + 4); } else { result = 65535; } return result; } //----- (00558EA0) -------------------------------------------------------- int __thiscall sub_558EA0(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32800); if ( !result ) result = *(_DWORD *)(this + 32804); return result; } //----- (00558EC0) -------------------------------------------------------- signed int __thiscall sub_558EC0(int this) { signed int result; // eax@1 int v2; // ecx@4 unsigned __int8 v3; // cf@4 result = *(_DWORD *)(this + 122); if ( result ) { result = *(_DWORD *)(result + 12); if ( result ) { if ( *(_BYTE *)(result + 54) == 1 ) { v2 = this + 156368; v3 = __CFADD__((*(_DWORD *)(v2 + 1512))++, 1); *(_DWORD *)(v2 + 1520) = 1; *(_DWORD *)(v2 + 1516) += v3; result = sub_5C89C0((int *)v2, 0x15u); } } } return result; } //----- (00558EE0) -------------------------------------------------------- signed int __thiscall sub_558EE0(int this) { signed int result; // eax@1 int v2; // ecx@4 unsigned __int8 v3; // cf@4 result = *(_DWORD *)(this + 122); if ( result ) { result = *(_DWORD *)(result + 12); if ( result ) { if ( *(_BYTE *)(result + 54) == 1 ) { v2 = this + 156368; v3 = __CFADD__((*(_DWORD *)(v2 + 1528))++, 1); *(_DWORD *)(v2 + 1536) = 1; *(_DWORD *)(v2 + 1532) += v3; result = sub_5C89C0((int *)v2, 0x16u); } } } return result; } //----- (00558F00) -------------------------------------------------------- int __thiscall sub_558F00(void *this) { void *v1; // ebx@1 int result; // eax@1 void *v3; // edi@2 int v4; // edi@3 void *v5; // eax@4 int v6; // ST04_4@4 int v7; // eax@4 char v8; // [sp+10h] [bp-18h]@4 int v9; // [sp+24h] [bp-4h]@4 v1 = this; result = *((_DWORD *)this + 957); if ( *(_BYTE *)result == 4 ) { (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)this + 772))(8, 61); **((_BYTE **)v1 + 957) = 1; v3 = (void *)(*(_DWORD *)((char *)v1 + 32650) + 37); if ( *((_BYTE *)v1 + 155503) ) { memcpy(v3, (char *)v1 + 155460, 0x28u); v4 = (int)((char *)v3 + 40); *(_WORD *)v4 = *((_WORD *)v1 + 77750); *(_BYTE *)(v4 + 2) = *((_BYTE *)v1 + 155502); *((_BYTE *)v1 + 155503) = 0; } *((_DWORD *)v1 + 39088) = nullsub_2; v5 = off_849C18; *(_WORD *)off_849C18 = 8236; *((_WORD *)v5 + 1) = *((_WORD *)v1 + 2); sub_4287B0(&v8, &off_849C18, 47); v6 = *(_DWORD *)((char *)v1 + 102); v9 = 0; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v7, v6, 0, 0, (int)&v8, 0, 65535); v9 = -1; result = sub_428A70(&v8); } return result; } //----- (00559000) -------------------------------------------------------- int __thiscall sub_559000(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; sub_557270(this); *(_DWORD *)v1 = &off_6DD6B4; sub_5474A0(v1 + 7936); *(_DWORD *)(v1 + 8015) = 0; *(_DWORD *)(v1 + 8011) = 0; *(_DWORD *)(v1 + 8007) = 0; v2 = *(_DWORD *)(v1 + 8003); *(_DWORD *)(v1 + 106) = v2 + 12; *(_DWORD *)(v1 + 102) = v2 + 4; return v1; } // 6DD6B4: using guessed type int (*off_6DD6B4)(); //----- (00559080) -------------------------------------------------------- int __thiscall sub_559080(int this) { int v1; // esi@1 v1 = this; sub_557020(this); *(_DWORD *)v1 = &off_6DE61C; sub_547570(v1 + 331); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 384); *(_DWORD *)(v1 + 102) = *(_DWORD *)(v1 + 366) + 6; *(_DWORD *)(v1 + 106) = &unk_13244E88; return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6DE61C: using guessed type int (*off_6DE61C)(); //----- (00559100) -------------------------------------------------------- int __thiscall sub_559100(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; sub_557020(this); *(_DWORD *)v1 = &off_6DF4AC; *(_DWORD *)(v1 + 1296) = 0; *(_DWORD *)(v1 + 1292) = 0; *(_DWORD *)(v1 + 1288) = 0; *(_DWORD *)(v1 + 1317) = 0; *(_DWORD *)(v1 + 1313) = 0; *(_DWORD *)(v1 + 1309) = 0; *(_DWORD *)(v1 + 1337) = 0; *(_DWORD *)(v1 + 1333) = 0; *(_DWORD *)(v1 + 1329) = 0; sub_6413F0(v1 + 1452); sub_6413F0(v1 + 12824); sub_6413F0(v1 + 24196); sub_6413F0(v1 + 35568); sub_5473D0(v1 + 49292); v2 = *(_DWORD *)(v1 + 49375); *(_DWORD *)(v1 + 106) = v2 + 42; *(_DWORD *)(v1 + 102) = v2 + 34; return v1; } // 6DF4AC: using guessed type int (*off_6DF4AC)(); //----- (005591F0) -------------------------------------------------------- int __thiscall sub_5591F0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; sub_557270(this); *(_DWORD *)v1 = &off_6E11F4; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 7936); sub_58FA00((void *)(v1 + 7944)); sub_5CF620((void *)(v1 + 7956)); sub_547360(v1 + 7972); *(_DWORD *)(v1 + 8152) = 0; *(_DWORD *)(v1 + 8148) = 0; *(_DWORD *)(v1 + 8144) = 0; *(_DWORD *)(v1 + 8168) = 0; *(_DWORD *)(v1 + 8176) = 0; *(_DWORD *)(v1 + 8180) = 0; *(_DWORD *)(v1 + 8184) = 0; sub_54CF80(v1 + 8228); sub_547DF0((void *)(v1 + 8848)); sub_481F60(v1 + 9032); *(_DWORD *)(v1 + 9496) = 0; *(_DWORD *)(v1 + 9504) = 0; *(_DWORD *)(v1 + 9508) = 0; *(_DWORD *)(v1 + 9512) = 0; sub_58FC10(v1 + 9540); *(_DWORD *)(v1 + 9652) = 0; sub_650330(v1 + 7944, v1); *(_DWORD *)(v1 + 364) = v1 + 7944; v2 = *(_DWORD *)(v1 + 8140); *(_DWORD *)(v1 + 102) = v2 + 5; *(_DWORD *)(v1 + 106) = v2 + 13; *(_DWORD *)(v1 + 4116) = dword_A9F978; *(_DWORD *)(v1 + 3828) = v2 + 2; *(_DWORD *)(v1 + 9485) = v1; *(_DWORD *)(v1 + 9481) = v1; *(_DWORD *)(v1 + 9536) = 0; sub_5839E0(v1 + 8176, 8u); *(_DWORD *)(v1 + 9560) = 0; *(_DWORD *)(v1 + 9528) = 0; return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6E11F4: using guessed type int (*off_6E11F4)(); // A9F978: using guessed type int dword_A9F978; //----- (00559370) -------------------------------------------------------- int __thiscall sub_559370(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; sub_5591F0(this); *(_DWORD *)v1 = &off_6E2174; sub_5472D0(v1 + 9664); v2 = *(_DWORD *)(v1 + 9918); *(_DWORD *)(v1 + 3828) = v2 + 31; *(_DWORD *)(v1 + 102) = v2 + 22; *(_DWORD *)(v1 + 106) = v2 + 30; return v1; } // 6E2174: using guessed type int (*off_6E2174)(); //----- (005593F0) -------------------------------------------------------- int __thiscall sub_5593F0(int this) { int v1; // esi@1 v1 = this; sub_5591F0(this); *(_DWORD *)v1 = &off_6E30F4; *(_DWORD *)(v1 + 9664) = &unk_13244FA0; return v1; } // 6E30F4: using guessed type int (*off_6E30F4)(); //----- (00559410) -------------------------------------------------------- int __thiscall sub_559410(int this) { int v1; // esi@1 v1 = this; sub_5591F0(this); *(_DWORD *)v1 = &off_6E4074; sub_5475D0(v1 + 9684); *(_DWORD *)(v1 + 9668) = 0; return v1; } // 6E4074: using guessed type int (*off_6E4074)(); //----- (00559480) -------------------------------------------------------- int __thiscall sub_559480(void *this, char a2) { void *v2; // esi@1 int result; // eax@4 v2 = this; if ( a2 & 2 ) { _LN21(this, 0x28CF0u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))sub_5573B0); if ( a2 & 1 ) sub_6530A4((char *)v2 - 4); result = (int)((char *)v2 - 4); } else { sub_5573B0((int)this); if ( a2 & 1 ) operator delete(v2); result = (int)v2; } return result; } //----- (005594E0) -------------------------------------------------------- int __thiscall sub_5594E0(void *this, int a2, int a3, int a4) { int v4; // ebx@1 signed int v5; // esi@1 int v6; // eax@5 int (__cdecl *v7)(_DWORD); // eax@10 int v8; // edi@10 int v9; // esi@11 int v11; // [sp-8h] [bp-A4h]@4 unsigned int v12; // [sp-4h] [bp-A0h]@1 int v13; // [sp+10h] [bp-8Ch]@10 char v14; // [sp+17h] [bp-85h]@10 char v15; // [sp+18h] [bp-84h]@18 char v16; // [sp+78h] [bp-24h]@18 char v17[4]; // [sp+80h] [bp-1Ch]@12 int v18; // [sp+84h] [bp-18h]@12 int v19; // [sp+88h] [bp-14h]@12 unsigned int v20; // [sp+8Ch] [bp-10h]@1 int v21; // [sp+98h] [bp-4h]@1 int v22; // [sp+9Ch] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v12 = (unsigned int)&v22 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v21 = 0; if ( !(dword_132541B0 & 1) ) { dword_132541B0 |= 1u; word_132541AC = 70; atexit(nullsub_125); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132541AC && (v6 = sub_54DE90(&unk_13253630, *(_WORD *)(v4 + 84500))) != 0 ) { if ( (unsigned int)sub_402710(v4, v6) <= 0xF4240 ) { if ( sub_63DA90((int)&unk_14D159B0, *(_WORD *)(*(_DWORD *)(v4 + 32650) + 82)) == 17 ) { sub_556EF0(v4, 8236, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); v21 = -1; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } else { sub_5CF620(&v14); v7 = *(int (__cdecl **)(_DWORD))(**(_DWORD **)(*(_DWORD *)(v4 + 84504) + 4) + 40); LOBYTE(v21) = 1; v8 = 0; v13 = v7(v12); if ( v13 <= 0 ) { LABEL_17: sub_556EF0(v4, 8237, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); LOBYTE(v21) = 0; nullsub_2(&v14); v21 = v5; } else { while ( 1 ) { v9 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v4 + 84504) + 4) + 36))(v8); if ( v9 ) { v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; strncpy(v17, (const char *)(v9 + 53), 0xCu); if ( *(_DWORD *)(a2 + 2) == *(_DWORD *)v17 ) { if ( *(_DWORD *)(a2 + 6) == v18 && *(_DWORD *)(a2 + 10) == v19 ) break; } } ++v8; if ( v8 >= v13 ) { v5 = -1; goto LABEL_17; } } memcpy(&v15, (const void *)v9, 0x60u); v16 = *(_BYTE *)(v9 + 96); sub_50D560(v4, (int)&v15); sub_556EF0(v4, 8232, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); LOBYTE(v21) = 0; nullsub_2(&v14); v21 = -1; } v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } } else { sub_556EF0(v4, 8235, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); v21 = -1; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } } else { sub_556EF0(v4, 8233, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); v21 = -1; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132541AC: using guessed type __int16 word_132541AC; // 132541B0: using guessed type int dword_132541B0; //----- (00559750) -------------------------------------------------------- int __thiscall sub_559750(int this, unsigned int a2, unsigned int a3, int a4, unsigned int a5, int a6) { int v6; // ebx@1 unsigned int v7; // esi@3 unsigned int v8; // edi@3 void *v9; // eax@6 int v10; // edx@8 int v11; // ST04_4@8 void *v12; // eax@8 int result; // eax@11 unsigned int v14; // [sp-8h] [bp-38h]@2 unsigned int v15; // [sp-4h] [bp-34h]@2 int v16; // [sp+10h] [bp-20h]@8 int v17; // [sp+14h] [bp-1Ch]@8 int v18; // [sp+18h] [bp-18h]@8 char v19; // [sp+23h] [bp-Dh]@3 int v20; // [sp+2Ch] [bp-4h]@8 v6 = this; if ( sub_55E210(this) ) { v15 = 0; v14 = a2; return (*(int (__thiscall **)(int, unsigned int, unsigned int))(*(_DWORD *)v6 + 884))(v6, v14, v15); } v7 = a3; v8 = a5; v19 = 0; if ( sub_50E7F0(dword_13231278, 7) != 1000 ) { v7 = (unsigned int)(a3 * sub_50E7F0(dword_13231278, 7) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v8 = (unsigned int)(a5 * sub_50E7F0(dword_13231278, 7) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v19 = 1; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1488))(v6) ) { v9 = sub_447910((int)&unk_132577A0, a2); if ( v9 ) { if ( *((_DWORD *)v9 + 2) != *((_DWORD *)v9 + 3) ) { v16 = 0; v17 = 0; v18 = 0; v10 = *(_DWORD *)v6; v11 = (int)v9; v20 = 0; v12 = (void *)(*(int (__thiscall **)(int))(v10 + 1488))(v6); if ( sub_5CF200(v12, (int)&v16, v11, 1, v6, 0) == 1 ) { v7 = sub_5CDED0((int)&v16, v7); v8 = sub_5CDED0((int)&v16, v8); v19 = 1; } v20 = -1; sub_424190((void **)&v16); } } } result = sub_448280((void *)(v6 + 84388), a2, v7, a4, v8, a6); if ( v19 ) { v15 = ((signed int)((unsigned __int64)((signed int)(v7 - a6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v7 - a6) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v14 = a2; return (*(int (__thiscall **)(int, unsigned int, unsigned int))(*(_DWORD *)v6 + 884))(v6, v14, v15); } return result; } // 13231278: using guessed type int dword_13231278[]; //----- (005598C0) -------------------------------------------------------- void *__thiscall sub_5598C0(void *this, __int16 a2) { int v2; // ebx@1 int v3; // esi@1 void *v4; // eax@1 void *result; // eax@2 unsigned __int8 *v6; // eax@3 int v7; // eax@5 int v8; // ebx@6 int v9; // [sp+Ch] [bp-1Ch]@1 __int16 v10; // [sp+10h] [bp-18h]@6 int v11; // [sp+14h] [bp-14h]@6 __int16 v12; // [sp+18h] [bp-10h]@6 int v13; // [sp+1Ch] [bp-Ch]@6 int v14; // [sp+20h] [bp-8h]@6 unsigned int v15; // [sp+24h] [bp-4h]@1 int v16; // [sp+28h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = dword_14D129E8; v3 = (int)this; v9 = 0; v4 = sub_447910((int)&unk_132577A0, a2); if ( v4 ) { v6 = (unsigned __int8 *)(*((_DWORD *)v4 + 1) + 114); if ( *v6 != 45 ) { dword_13257798 = sub_639620(&unk_13257C80, v6); if ( sub_445FC0((void *)v3, dword_13257798) ) { v7 = sub_445F40(v3, dword_13257798); v2 = *(_DWORD *)(v7 + 4); v9 = *(_DWORD *)(v7 + 16); } } v14 = v9; v10 = a2; v11 = v2; v12 = 0; v13 = 0; sub_447580(v3, (unsigned int)&v10); v8 = *(_DWORD *)(v3 + 4); ++*(_DWORD *)(v3 + 16); sub_446F90(*(_DWORD *)v3, v8, (v8 - *(_DWORD *)v3) / 20, (int (__cdecl *)(_DWORD, _DWORD))sub_444540); result = sub_448430((void *)v3, (unsigned __int16)a2); } else { result = sub_639100( &unk_86DDD8, (int)"void CharaterSkillList::csl_Learn(ShineSkillID skill) NotFind Skill ID ", (unsigned __int16)a2); } return result; } // 86FEB8: using guessed type int __security_cookie; // 13257798: using guessed type int dword_13257798; // 14D129E8: using guessed type int dword_14D129E8; //----- (005599D0) -------------------------------------------------------- char __thiscall sub_5599D0(void *this, int a2, __int16 a3, int a4, int a5, char a6) { int v6; // edi@1 char result; // al@2 int v8; // eax@4 int v9; // ebx@4 unsigned int v10; // ebx@5 __int16 v11; // ax@5 __int16 v12; // ax@5 unsigned int v13; // ebx@7 unsigned int v14; // ebx@7 void *v15; // eax@9 int v16; // eax@12 int v17; // ecx@12 __int16 v18; // di@12 unsigned __int16 v19; // bx@13 int v20; // edx@14 int v21; // ecx@15 int v22; // ecx@17 int v23; // eax@19 int v24; // eax@21 unsigned int v25; // eax@24 unsigned int v26; // edi@24 int v27; // [sp+10h] [bp-30h]@9 int v28; // [sp+14h] [bp-2Ch]@9 int v29; // [sp+18h] [bp-28h]@9 __int16 v30; // [sp+22h] [bp-1Eh]@14 int v31; // [sp+24h] [bp-1Ch]@12 unsigned int v32; // [sp+2Ch] [bp-14h]@4 void *v33; // [sp+30h] [bp-10h]@1 int v34; // [sp+3Ch] [bp-4h]@9 int v35; // [sp+50h] [bp+10h]@4 unsigned int v36; // [sp+50h] [bp+10h]@5 unsigned int v37; // [sp+54h] [bp+14h]@7 v33 = this; v6 = a4; if ( !a4 || !*(_DWORD *)(a4 + 4) || (v8 = *(_DWORD *)(a4 + 4), v9 = *(_DWORD *)(v8 + 160), v35 = *(_DWORD *)(v8 + 168), v32 = *(_DWORD *)(v8 + 176), !a2) ) goto LABEL_30; v36 = ((unsigned int)((unsigned int)(*(_DWORD *)(*(_DWORD *)(v6 + 4) + 172) * (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1264))(a2)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) + v35; v10 = ((unsigned int)((unsigned int)(*(_DWORD *)(*(_DWORD *)(v6 + 4) + 164) * (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1268))(a2)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) + v9; v11 = sub_447A10(a3); sub_447A90(v33, v11, a5); v12 = *(_WORD *)a5; if ( v12 & 0xF0 ) v10 -= *(_DWORD *)(*(_DWORD *)(v6 + 4) + 4 * ((unsigned __int8)v12 >> 4) + 463); v13 = (unsigned int)(v10 * sub_50E7F0(dword_13231278, 5) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v14 = (unsigned int)(v13 * (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2656))(a2) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v37 = v14; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1488))(a2) && *(_DWORD *)(v6 + 8) != *(_DWORD *)(v6 + 12) ) { v27 = 0; v28 = 0; v29 = 0; v34 = 0; v15 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1488))(a2); if ( sub_5CF200(v15, (int)&v27, v6, 3, a2, 0) ) v37 = sub_5CDED0((int)&v27, v14); v34 = -1; sub_424190((void **)&v27); } v16 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1324))(a2); v17 = v16 + 3364; v18 = *(_WORD *)(*(_DWORD *)(v16 + 3372) + 12 * *(_WORD *)(v16 + 3378) + 4); v31 = v16 + 3364; while ( 1 ) { v19 = *(_WORD *)(v17 + 4); if ( v18 >= v19 ) break; v20 = *(_DWORD *)(v17 + 8); v30 = *(_WORD *)(v20 + 12 * (unsigned __int16)v18 + 4); if ( *(_BYTE *)(v20 + 12 * (unsigned __int16)v18 + 8) ) v21 = *(_DWORD *)(v20 + 12 * (unsigned __int16)v18); else v21 = 0; v22 = dword_871508[3 * *(_DWORD *)(v21 + 4)]; if ( v18 < v19 && *(_BYTE *)(v20 + 12 * (unsigned __int16)v18 + 8) ) v23 = *(_DWORD *)(v20 + 12 * (unsigned __int16)v18); else v23 = 0; v24 = (*(int (__stdcall **)(int, unsigned int))(*(_DWORD *)v22 + 56))(v23, v37); v17 = v31; v18 = v30; v37 = v24; } (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1260))(a2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1256))(a2); if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1260))(a2) >= v37 && (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1256))(a2) > v36 && (v25 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3464))(a2), v26 = v32, v25 >= v32) ) { if ( a6 ) { (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 1272))(a2, v37); (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 1280))(a2, v36); (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)a2 + 3476))(a2, v26); } result = 1; } else { LABEL_30: result = 0; } return result; } // 871508: using guessed type int dword_871508[]; // 13231278: using guessed type int dword_13231278[]; //----- (00559CA0) -------------------------------------------------------- void *__thiscall sub_559CA0(int this, __int16 a2) { int v2; // esi@1 void *result; // eax@1 v2 = this; result = sub_5598C0((void *)(this + 84388), a2); *(_DWORD *)(v2 + 32762) |= 1u; return result; } //----- (00559CD0) -------------------------------------------------------- char __thiscall sub_559CD0(int this, __int16 a2, int a3, int a4) { char result; // al@2 if ( *(_BYTE *)(this + 7888) & 0x10 ) result = 1; else result = sub_5599D0((void *)(this + 84388), this, a2, a3, a4, 0); return result; } //----- (00559D00) -------------------------------------------------------- char __thiscall sub_559D00(int this, __int16 a2, int a3, int a4) { return sub_5599D0((void *)(this + 84388), this, a2, a3, a4, 1); } //----- (00559D30) -------------------------------------------------------- int __thiscall sub_559D30(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // edx@1 int v4; // eax@1 v1 = this; sub_557270(this); *(_DWORD *)v1 = &off_6E6254; sub_48FEC0(v1 + 7936); *(_DWORD *)(v1 + 23873) = 0; *(_DWORD *)(v1 + 23869) = 0; *(_DWORD *)(v1 + 23865) = 0; *(_DWORD *)(v1 + 23861) = 0; *(_DWORD *)(v1 + 23857) = 0; sub_58FA00((void *)(v1 + 24172)); *(_DWORD *)(v1 + 24180) = &off_6D8188; *(_DWORD *)(v1 + 24184) = 0; *(_DWORD *)(v1 + 32380) = 0; sub_5CF620((void *)(v1 + 32392)); sub_5472D0(v1 + 32396); sub_4D5720((void *)(v1 + 32654)); sub_5CF620((void *)(v1 + 32655)); *(_DWORD *)(v1 + 32681) = 0; *(_DWORD *)(v1 + 32677) = 0; *(_DWORD *)(v1 + 32673) = 0; *(_DWORD *)(v1 + 32669) = 0; *(_DWORD *)(v1 + 32665) = 0; *(_DWORD *)(v1 + 32735) = 0; *(_DWORD *)(v1 + 32731) = 0; *(_DWORD *)(v1 + 32727) = 0; *(_DWORD *)(v1 + 32804) = 0; *(_DWORD *)(v1 + 32800) = 0; *(_BYTE *)(v1 + 32792) = 0; sub_547A50(v1 + 32816); loc_5759E0(v1 + 82024); sub_575D70(v1 + 82048); sub_447710(v1 + 84388); loc_446B90(v1 + 84424); unknown_libname_1(v1 + 84471); sub_5CF620((void *)(v1 + 84508)); sub_50D460(v1 + 84520); sub_5CF620((void *)(v1 + 85728)); sub_641260(v1 + 85744); sub_641570(v1 + 152568); sub_43C390(v1 + 155460); sub_52BE10(v1 + 155582); sub_58E210(v1 + 155616); sub_58D020(v1 + 155984); sub_5C79A0(v1 + 156368, (int)&unk_1325CFD8); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 159652); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 159660); sub_451040(v1 + 159688); sub_62F110(v1 + 160364); sub_5674C0(v1 + 160796); sub_4B6770(v1 + 160832); sub_5CEBC0(v1 + 161208); *(_DWORD *)(v1 + 161248) = 0; *(_DWORD *)(v1 + 161252) = 0; *(_DWORD *)(v1 + 161256) = 0; sub_4BC860((void *)(v1 + 161384)); *(_DWORD *)(v1 + 161384) = &off_6D87AC; sub_588320(v1 + 161460); *(_DWORD *)(v1 + 161528) = 0; *(_DWORD *)(v1 + 161524) = 0; *(_DWORD *)(v1 + 161520) = 0; unknown_libname_3(v1 + 161580); unknown_libname_3(v1 + 161596); unknown_libname_3(v1 + 161612); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 161732); *(_DWORD *)(v1 + 161777) = 0; *(_DWORD *)(v1 + 161773) = 0; *(_DWORD *)(v1 + 161769) = 0; *(_DWORD *)(v1 + 161765) = 0; *(_DWORD *)(v1 + 161761) = 0; *(_DWORD *)(v1 + 161836) = 0; *(_DWORD *)(v1 + 161832) = 0; *(_DWORD *)(v1 + 161828) = 0; *(_DWORD *)(v1 + 161824) = 0; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 161892); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 161900); Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(v1 + 161908); sub_50D390(v1 + 162000); sub_5CDC40(v1 + 161208, v1); *(_DWORD *)(v1 + 82016) = sub_586AB0; *(_DWORD *)(v1 + 82004) = sub_586AB0; *(_DWORD *)(v1 + 32804) = v1; sub_5B7490(v1 + 82048, v1); sub_5C79F0(v1 + 156368, v1); *(_DWORD *)(v1 + 155612) = &unk_13253600; sub_611F30(v1 + 58688, v1); sub_650330(v1 + 24172, v1); *(_DWORD *)(v1 + 364) = v1 + 24172; v2 = *(_DWORD *)(v1 + 32650); *(_DWORD *)(v1 + 3828) = v2 + 31; *(_DWORD *)(v1 + 118) = v1 + 155574; *(_DWORD *)(v1 + 102) = v2 + 22; *(_DWORD *)(v1 + 106) = v2 + 30; *(_DWORD *)(v1 + 155574) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 118) + 4) = 0; *(_DWORD *)(v1 + 24168) = &unk_13252578; *(_DWORD *)(v1 + 32388) = &off_8622C8; *(_DWORD *)(v1 + 32384) = &off_8622C8; *(_WORD *)(v1 + 156344) = 8254; *(_DWORD *)(v1 + 156346) = 0; sub_56E710(v1, -1); *(_WORD *)(v1 + 24158) = -1; *(_DWORD *)(v1 + 24160) = 0; *(_DWORD *)(v1 + 160868) = 0; *(_DWORD *)(v1 + 155356) = sub_641C90(); sub_55E4A0(v1, 0); v3 = *(_DWORD *)(v1 + 32650); *(_BYTE *)(v1 + 23825) &= 0xF7u; *(_DWORD *)(v1 + 160912) = &dword_13244CD8; *(_DWORD *)(v1 + 160916) = &dword_13245088; *(_DWORD *)(v1 + 161380) = 0; *(_WORD *)(v1 + 160920) = 0; *(_BYTE *)(v3 + 196) = 0; *(_BYTE *)(v1 + 161628) = 0; *(_DWORD *)(v1 + 161632) = 0; *(_DWORD *)(v1 + 23896) = 0; *(_DWORD *)(v1 + 23900) = 0; sub_56DB60(v1); sub_441B10(v1 + 161248, 0xAu); *(_BYTE *)(v1 + 23825) &= 0xCFu; *(_DWORD *)(v1 + 161476) = 0; *(_DWORD *)(v1 + 161480) = 0; sub_55EA20(v1, 0); *(_DWORD *)(v1 + 161528) = 0; *(_DWORD *)(v1 + 161524) = 0; *(_DWORD *)(v1 + 161520) = 0; strncpy((char *)(v1 + 161520), byte_6A492E, 0xCu); *(_DWORD *)(v1 + 161536) = 0; *(_DWORD *)(v1 + 161540) = 0; *(_DWORD *)(v1 + 161544) = 0; *(_DWORD *)(v1 + 161548) = 0; *(_DWORD *)(v1 + 161552) = 0; *(_DWORD *)(v1 + 161556) = 0; *(_WORD *)(v1 + 161636) = -1; sub_55EAE0(v1, 0); *(_WORD *)(*(_DWORD *)(v1 + 32650) + 230) = -1; v4 = *(_DWORD *)(v1 + 32650); *(_DWORD *)(v1 + 161708) = 0; *(_BYTE *)(v4 + 232) = 10; *(_BYTE *)(v1 + 161705) = 10; sub_45D8F0(v1); sub_55EFA0(v1, 0); *(_DWORD *)(v1 + 161756) = 4; *(_BYTE *)(v1 + 161760) = 0; sub_55F510(v1, 0); sub_55F670(v1, 0); sub_50D4A0(v1 + 84520, v1); return v1; } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); // 586AB0: using guessed type int sub_586AB0(); // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 625C30: using guessed type int __thiscall unknown_libname_3(_DWORD); // 6D8188: using guessed type int (__stdcall *off_6D8188)(int); // 6D87AC: using guessed type int (__stdcall *off_6D87AC)(int, int, int); // 6E6254: using guessed type int (*off_6E6254)(); // 8622C8: using guessed type int (__stdcall **off_8622C8)(int); // 13244CD8: using guessed type int dword_13244CD8; // 13245088: using guessed type int dword_13245088; //----- (0055A2E0) -------------------------------------------------------- int __thiscall sub_55A2E0(int this) { int v1; // esi@1 v1 = this; sub_5591F0(this); *(_DWORD *)v1 = &off_6E4FF4; *(_DWORD *)(v1 + 8224) = v1; *(_DWORD *)(v1 + 9020) = off_8492D8; return v1; } // 6E4FF4: using guessed type int (*off_6E4FF4)(); // 8492D8: using guessed type int (__stdcall *(*off_8492D8[2])[2])(int); //----- (0055A310) -------------------------------------------------------- int __thiscall sub_55A310(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@2 int v4; // eax@2 int v5; // edi@6 signed int v6; // ebx@6 char v7; // al@8 int v8; // edx@9 int v9; // eax@15 int v10; // edi@16 int v11; // eax@16 int v12; // edi@20 signed int v13; // ebx@20 char v14; // al@22 int v15; // ecx@23 int v16; // eax@29 int v17; // edi@30 int v18; // eax@30 int v19; // edi@34 signed int v20; // ebx@34 char v21; // al@36 int v22; // ecx@37 int v23; // eax@43 int v24; // edi@44 int v25; // eax@44 int v26; // edi@48 signed int v27; // ebx@48 char v28; // al@50 int v29; // ecx@51 int v30; // eax@57 int v31; // edi@58 int v32; // eax@58 int v33; // edi@62 signed int v34; // ebx@62 char v35; // al@64 int v36; // ecx@65 int v37; // eax@71 int v38; // edi@72 int v39; // eax@72 int v40; // edi@76 signed int v41; // ebx@76 char v42; // al@78 int v43; // ecx@79 int v44; // eax@85 int v45; // edi@86 int v46; // eax@86 int v47; // edi@90 signed int v48; // ebx@90 char v49; // al@92 int v50; // ecx@93 int v51; // eax@99 int v52; // edi@100 int v53; // eax@100 int v54; // edi@104 signed int v55; // ebx@104 char v56; // al@106 int v57; // ecx@107 int v58; // eax@113 int v59; // edi@114 int v60; // eax@114 int v61; // edi@118 signed int v62; // ebx@118 char v63; // al@120 int v64; // ecx@121 int v65; // eax@127 int v66; // edi@128 int v67; // eax@128 int v68; // edi@132 signed int v69; // ebx@132 char v70; // al@134 int v71; // ecx@135 int v72; // eax@141 int v73; // edi@142 int v74; // eax@142 int v75; // edi@146 signed int v76; // ebx@146 char v77; // al@148 int v78; // ecx@149 int v79; // eax@155 int v80; // edi@156 int v81; // eax@156 int v82; // edi@160 signed int v83; // ebx@160 char v84; // al@162 int v85; // ecx@163 int v86; // eax@169 int v87; // edi@170 int v88; // eax@170 int v89; // edi@174 signed int v90; // ebx@174 char v91; // al@176 int v92; // ecx@177 int v93; // eax@184 int v94; // eax@186 int v95; // eax@188 int v96; // eax@190 int v97; // eax@192 int v98; // eax@194 int v99; // eax@196 int v100; // eax@198 int v101; // eax@200 int v102; // eax@202 int v103; // eax@204 int v104; // eax@206 int v105; // eax@208 signed int v107; // [sp+14h] [bp-10h]@6 signed int v108; // [sp+14h] [bp-10h]@20 signed int v109; // [sp+14h] [bp-10h]@34 signed int v110; // [sp+14h] [bp-10h]@48 signed int v111; // [sp+14h] [bp-10h]@62 signed int v112; // [sp+14h] [bp-10h]@76 signed int v113; // [sp+14h] [bp-10h]@90 signed int v114; // [sp+14h] [bp-10h]@104 signed int v115; // [sp+14h] [bp-10h]@118 signed int v116; // [sp+14h] [bp-10h]@132 signed int v117; // [sp+14h] [bp-10h]@146 signed int v118; // [sp+14h] [bp-10h]@160 signed int v119; // [sp+14h] [bp-10h]@174 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectManager::som_Initialize"); dword_7508B8[dword_750CB8] = (int)"ShineObjectManager::som_Initialize"; dword_750AB8[dword_750CB8++] = -1; v2 = unknown_libname_130(1304580); if ( v2 ) { v3 = v2 + 4; *(_DWORD *)v2 = 3584; _eh_vector_constructor_iterator_( (void *)(v2 + 4), 0x16Cu, 3584, (int)sub_557100, (void (__thiscall *)(void *))sub_554300); v4 = v3; } else { v4 = 0; } *((_DWORD *)v1 + 6) = v4; if ( v4 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", v4 != 0); loc_6391B0("ShineObjectManager::som_Initialize"); } v5 = 0; v6 = 0; v107 = 0; do { if ( v6 < *((_WORD *)v1 + 40) ) { v8 = *((_DWORD *)v1 + 21); if ( *(_DWORD *)(v107 + v8) ) { v7 = 0; } else { *(_DWORD *)(v107 + v8) = v5 + *((_DWORD *)v1 + 6); v7 = 1; } } else { v7 = 0; } if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 1); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 6) + v5 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 6) + v5) + 1188))( v5 + *((_DWORD *)v1 + 6), v6++); v5 += 364; v107 += 12; } while ( v107 < 43008 ); v9 = unknown_libname_130(1869004); if ( v9 ) { v10 = v9 + 4; *(_DWORD *)v9 = 3000; _eh_vector_constructor_iterator_((void *)(v9 + 4), 0x26Fu, 3000, (int)sub_557140, sub_553270); v11 = v10; } else { v11 = 0; } *((_DWORD *)v1 + 7) = v11; if ( v11 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 2); loc_6391B0("ShineObjectManager::som_Initialize"); } v12 = 0; v13 = 0; v108 = 0; do { if ( v13 < *((_WORD *)v1 + 56) ) { v15 = *((_DWORD *)v1 + 29); if ( *(_DWORD *)(v15 + v108) ) { v14 = 0; } else { *(_DWORD *)(v15 + v108) = v12 + *((_DWORD *)v1 + 7); v14 = 1; } } else { v14 = 0; } if ( !v14 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 3); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 7) + v12 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 7) + v12) + 1188))( v12 + *((_DWORD *)v1 + 7), v13++); v12 += 623; v108 += 12; } while ( v108 < 36000 ); v16 = unknown_libname_130(439004); if ( v16 ) { v17 = v16 + 4; *(_DWORD *)v16 = 1000; _eh_vector_constructor_iterator_( (void *)(v16 + 4), 0x1B7u, 1000, (int)sub_5571E0, (void (__thiscall *)(void *))sub_553370); v18 = v17; } else { v18 = 0; } *((_DWORD *)v1 + 8) = v18; if ( v18 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 4); loc_6391B0("ShineObjectManager::som_Initialize"); } v19 = 0; v20 = 0; v109 = 0; do { if ( v20 < *((_WORD *)v1 + 72) ) { v22 = *((_DWORD *)v1 + 37); if ( *(_DWORD *)(v22 + v109) ) { v21 = 0; } else { *(_DWORD *)(v22 + v109) = v19 + *((_DWORD *)v1 + 8); v21 = 1; } } else { v21 = 0; } if ( !v21 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 5); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 8) + v19 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 8) + v19) + 1188))( v19 + *((_DWORD *)v1 + 8), v20++); v19 += 439; v109 += 12; } while ( v109 < 12000 ); v23 = unknown_libname_130(&unk_EF1CE44); if ( v23 ) { v24 = v23 + 4; *(_DWORD *)v23 = 1500; _eh_vector_constructor_iterator_( (void *)(v23 + 4), 0x28CF0u, 1500, (int)sub_559D30, (void (__thiscall *)(void *))sub_5573B0); v25 = v24; } else { v25 = 0; } *((_DWORD *)v1 + 9) = v25; if ( v25 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 6); loc_6391B0("ShineObjectManager::som_Initialize"); } v26 = 0; v27 = 0; v110 = 0; do { if ( v27 < *((_WORD *)v1 + 88) ) { v29 = *((_DWORD *)v1 + 45); if ( *(_DWORD *)(v29 + v110) ) { v28 = 0; } else { *(_DWORD *)(v29 + v110) = v26 + *((_DWORD *)v1 + 9); v28 = 1; } } else { v28 = 0; } if ( !v28 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 7); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 9) + v26 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 9) + v26) + 1188))( v26 + *((_DWORD *)v1 + 9), v27++); v26 += 167152; v110 += 12; } while ( v110 < 18000 ); v30 = unknown_libname_130(2475012); if ( v30 ) { v31 = v30 + 4; *(_DWORD *)v30 = 256; _eh_vector_constructor_iterator_( (void *)(v30 + 4), 0x25C4u, 256, (int)sub_55A2E0, (void (__thiscall *)(void *))sub_555C10); v32 = v31; } else { v32 = 0; } *((_DWORD *)v1 + 10) = v32; if ( v32 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 8); loc_6391B0("ShineObjectManager::som_Initialize"); } v33 = 0; v34 = 0; v111 = 0; do { if ( v34 < *((_WORD *)v1 + 104) ) { v36 = *((_DWORD *)v1 + 53); if ( *(_DWORD *)(v36 + v111) ) { v35 = 0; } else { *(_DWORD *)(v36 + v111) = v33 + *((_DWORD *)v1 + 10); v35 = 1; } } else { v35 = 0; } if ( !v35 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 9); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 10) + v33 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 10) + v33) + 1188))( v33 + *((_DWORD *)v1 + 10), v34++); v33 += 9668; v111 += 12; } while ( v111 < 3072 ); v37 = unknown_libname_130(&unk_1362004); if ( v37 ) { v38 = v37 + 4; *(_DWORD *)v37 = 2048; _eh_vector_constructor_iterator_( (void *)(v37 + 4), 0x26C4u, 2048, (int)sub_559370, (void (__thiscall *)(void *))sub_554F00); v39 = v38; } else { v39 = 0; } *((_DWORD *)v1 + 13) = v39; if ( v39 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 10); loc_6391B0("ShineObjectManager::som_Initialize"); } v40 = 0; v41 = 0; v112 = 0; do { if ( v41 < *((_WORD *)v1 + 152) ) { v43 = *((_DWORD *)v1 + 77); if ( *(_DWORD *)(v43 + v112) ) { v42 = 0; } else { *(_DWORD *)(v43 + v112) = v40 + *((_DWORD *)v1 + 13); v42 = 1; } } else { v42 = 0; } if ( !v42 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 11); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 13) + v40 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(v40 + *((_DWORD *)v1 + 13)) + 1188))( v40 + *((_DWORD *)v1 + 13), v41++); v40 += 9924; v112 += 12; } while ( v112 < 24576 ); v44 = unknown_libname_130(&unk_7ABDE4); if ( v44 ) { v45 = v44 + 4; *(_DWORD *)v44 = 1000; _eh_vector_constructor_iterator_((void *)(v44 + 4), 0x1F6Cu, 1000, (int)sub_559000, sub_553B00); v46 = v45; } else { v46 = 0; } *((_DWORD *)v1 + 11) = v46; if ( v46 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 12); loc_6391B0("ShineObjectManager::som_Initialize"); } v47 = 0; v48 = 0; v113 = 0; do { if ( v48 < *((_WORD *)v1 + 120) ) { v50 = *((_DWORD *)v1 + 61); if ( *(_DWORD *)(v50 + v113) ) { v49 = 0; } else { *(_DWORD *)(v50 + v113) = v47 + *((_DWORD *)v1 + 11); v49 = 1; } } else { v49 = 0; } if ( !v49 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 13); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 11) + v47 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 11) + v47) + 1188))( v47 + *((_DWORD *)v1 + 11), v48++); v47 += 8044; v113 += 12; } while ( v113 < 12000 ); v51 = unknown_libname_130(&unk_49BB004); if ( v51 ) { v52 = v51 + 4; *(_DWORD *)v51 = 8000; _eh_vector_constructor_iterator_( (void *)(v51 + 4), 0x25C0u, 8000, (int)sub_5591F0, (void (__thiscall *)(void *))sub_554420); v53 = v52; } else { v53 = 0; } *((_DWORD *)v1 + 12) = v53; if ( v53 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 14); loc_6391B0("ShineObjectManager::som_Initialize"); } v54 = 0; v55 = 0; v114 = 0; do { if ( v55 < *((_WORD *)v1 + 136) ) { v57 = *((_DWORD *)v1 + 69); if ( *(_DWORD *)(v57 + v114) ) { v56 = 0; } else { *(_DWORD *)(v57 + v114) = v54 + *((_DWORD *)v1 + 12); v56 = 1; } } else { v56 = 0; } if ( !v56 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 15); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 12) + v54 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 12) + v54) + 1188))( v54 + *((_DWORD *)v1 + 12), v55++); v54 += 9664; v114 += 12; } while ( v114 < 96000 ); v58 = unknown_libname_130(107004); if ( v58 ) { v59 = v58 + 4; *(_DWORD *)v58 = 250; _eh_vector_constructor_iterator_( (void *)(v58 + 4), 0x1ACu, 250, (int)sub_559080, (void (__thiscall *)(void *))sub_553C50); v60 = v59; } else { v60 = 0; } *((_DWORD *)v1 + 14) = v60; if ( v60 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 16); loc_6391B0("ShineObjectManager::som_Initialize"); } v61 = 0; v62 = 0; v115 = 0; do { if ( v62 < *((_WORD *)v1 + 168) ) { v64 = *((_DWORD *)v1 + 85); if ( *(_DWORD *)(v64 + v115) ) { v63 = 0; } else { *(_DWORD *)(v64 + v115) = v61 + *((_DWORD *)v1 + 14); v63 = 1; } } else { v63 = 0; } if ( !v63 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 17); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 14) + v61 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(v61 + *((_DWORD *)v1 + 14)) + 1188))( v61 + *((_DWORD *)v1 + 14), v62++); v61 += 428; v115 += 12; } while ( v115 < 3000 ); v65 = unknown_libname_130(&unk_32FEB04); if ( v65 ) { v66 = v65 + 4; *(_DWORD *)v65 = 1000; _eh_vector_constructor_iterator_((void *)(v65 + 4), 0xD0E0u, 1000, (int)sub_559100, sub_553D40); v67 = v66; } else { v67 = 0; } *((_DWORD *)v1 + 15) = v67; if ( v67 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 18); loc_6391B0("ShineObjectManager::som_Initialize"); } v68 = 0; v69 = 0; v116 = 0; do { if ( v69 < *((_WORD *)v1 + 184) ) { v71 = *((_DWORD *)v1 + 93); if ( *(_DWORD *)(v71 + v116) ) { v70 = 0; } else { *(_DWORD *)(v71 + v116) = v68 + *((_DWORD *)v1 + 15); v70 = 1; } } else { v70 = 0; } if ( !v70 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 19); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 15) + v68 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 15) + v68) + 1188))( v68 + *((_DWORD *)v1 + 15), v69++); v68 += 53472; v116 += 12; } while ( v116 < 12000 ); v72 = unknown_libname_130(loc_4A18C4); if ( v72 ) { v73 = v72 + 4; *(_DWORD *)v72 = 500; _eh_vector_constructor_iterator_( (void *)(v72 + 4), 0x25F0u, 500, (int)sub_5593F0, (void (__thiscall *)(void *))sub_555030); v74 = v73; } else { v74 = 0; } *((_DWORD *)v1 + 16) = v74; if ( v74 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 20); loc_6391B0("ShineObjectManager::som_Initialize"); } v75 = 0; v76 = 0; v117 = 0; do { if ( v76 < *((_WORD *)v1 + 200) ) { v78 = *((_DWORD *)v1 + 101); if ( *(_DWORD *)(v78 + v117) ) { v77 = 0; } else { *(_DWORD *)(v78 + v117) = v75 + *((_DWORD *)v1 + 16); v77 = 1; } } else { v77 = 0; } if ( !v77 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 21); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 16) + v75 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(*((_DWORD *)v1 + 16) + v75) + 1188))( v75 + *((_DWORD *)v1 + 16), v76++); v75 += 9712; v117 += 12; } while ( v117 < 6000 ); v79 = unknown_libname_130(&unk_7F03A4); if ( v79 ) { v80 = v79 + 4; *(_DWORD *)v79 = 1000; _eh_vector_constructor_iterator_( (void *)(v79 + 4), 0x2084u, 1000, (int)sub_55DBF0, (void (__thiscall *)(void *))sub_55C9D0); v81 = v80; } else { v81 = 0; } *((_DWORD *)v1 + 17) = v81; if ( v81 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 20); loc_6391B0("ShineObjectManager::som_Initialize"); } v82 = 0; v83 = 0; v118 = 0; do { if ( v83 < *((_WORD *)v1 + 216) ) { v85 = *((_DWORD *)v1 + 109); if ( *(_DWORD *)(v85 + v118) ) { v84 = 0; } else { *(_DWORD *)(v85 + v118) = v82 + *((_DWORD *)v1 + 17); v84 = 1; } } else { v84 = 0; } if ( !v84 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 21); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 17) + v82 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(v82 + *((_DWORD *)v1 + 17)) + 1188))( v82 + *((_DWORD *)v1 + 17), v83++); v82 += 8324; v118 += 12; } while ( v118 < 12000 ); v86 = unknown_libname_130(&unk_DFA9D4); if ( v86 ) { v87 = v86 + 4; *(_DWORD *)v86 = 1500; _eh_vector_constructor_iterator_( (void *)(v86 + 4), 0x262Cu, 1500, (int)sub_559410, (void (__thiscall *)(void *))sub_555290); v88 = v87; } else { v88 = 0; } *((_DWORD *)v1 + 18) = v88; if ( v88 == 0 ) { sub_639100(&unk_86DDD8, (int)"__LARGEOBJECTBUFFER Needed", 20); loc_6391B0("ShineObjectManager::som_Initialize"); } v89 = 0; v90 = 0; v119 = 0; do { if ( v90 < *((_WORD *)v1 + 232) ) { v92 = *((_DWORD *)v1 + 117); if ( *(_DWORD *)(v92 + v119) ) { v91 = 0; } else { *(_DWORD *)(v92 + v119) = v89 + *((_DWORD *)v1 + 18); v91 = 1; } } else { v91 = 0; } if ( !v91 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList", 21); loc_6391B0("ShineObjectManager::som_Initialize"); } *(_WORD *)(*((_DWORD *)v1 + 18) + v89 + 4) = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)(v89 + *((_DWORD *)v1 + 18)) + 1188))( v89 + *((_DWORD *)v1 + 18), v90++); v89 += 9772; v119 += 12; } while ( v119 < 18000 ); if ( *((_WORD *)v1 + 2) <= 0u || (v93 = *((_DWORD *)v1 + 2), *(_DWORD *)v93) || (*(_DWORD *)v93 = (char *)v1 + 76, *((_WORD *)v1 + 2) <= 1u) || (v94 = *((_DWORD *)v1 + 2), *(_DWORD *)(v94 + 12)) || (*(_DWORD *)(v94 + 12) = (char *)v1 + 108, *((_WORD *)v1 + 2) <= 2u) || (v95 = *((_DWORD *)v1 + 2), *(_DWORD *)(v95 + 24)) || (*(_DWORD *)(v95 + 24) = (char *)v1 + 172, *((_WORD *)v1 + 2) <= 4u) || (v96 = *((_DWORD *)v1 + 2), *(_DWORD *)(v96 + 48)) || (*(_DWORD *)(v96 + 48) = (char *)v1 + 204, *((_WORD *)v1 + 2) <= 7u) || (v97 = *((_DWORD *)v1 + 2), *(_DWORD *)(v97 + 84)) || (*(_DWORD *)(v97 + 84) = (char *)v1 + 236, *((_WORD *)v1 + 2) <= 5u) || (v98 = *((_DWORD *)v1 + 2), *(_DWORD *)(v98 + 60)) || (*(_DWORD *)(v98 + 60) = (char *)v1 + 268, *((_WORD *)v1 + 2) <= 8u) || (v99 = *((_DWORD *)v1 + 2), *(_DWORD *)(v99 + 96)) || (*(_DWORD *)(v99 + 96) = (char *)v1 + 300, *((_WORD *)v1 + 2) <= 9u) || (v100 = *((_DWORD *)v1 + 2), *(_DWORD *)(v100 + 108)) || (*(_DWORD *)(v100 + 108) = (char *)v1 + 140, *((_WORD *)v1 + 2) <= 0xAu) || (v101 = *((_DWORD *)v1 + 2), *(_DWORD *)(v101 + 120)) || (*(_DWORD *)(v101 + 120) = (char *)v1 + 396, *((_WORD *)v1 + 2) <= 0xBu) || (v102 = *((_DWORD *)v1 + 2), *(_DWORD *)(v102 + 132)) || (*(_DWORD *)(v102 + 132) = (char *)v1 + 428, *((_WORD *)v1 + 2) <= 0xCu) || (v103 = *((_DWORD *)v1 + 2), *(_DWORD *)(v103 + 144)) || (*(_DWORD *)(v103 + 144) = (char *)v1 + 460, *((_WORD *)v1 + 2) <= 6u) || (v104 = *((_DWORD *)v1 + 2), *(_DWORD *)(v104 + 72)) || (*(_DWORD *)(v104 + 72) = (char *)v1 + 332, *((_WORD *)v1 + 2) <= 3u) || (v105 = *((_DWORD *)v1 + 2), *(_DWORD *)(v105 + 36)) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectList::ShineObjectList : Fail in list making", 0); loc_6391B0("ShineObjectManager::som_Initialize"); } else { *(_DWORD *)(v105 + 36) = (char *)v1 + 364; } while ( *((_WORD *)v1 + 6) != -1 && (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 8))(v1, *((_WORD *)v1 + 6)) ) ; *((_DWORD *)v1 + 123) = (char *)v1 + 76; *((_DWORD *)v1 + 124) = (char *)v1 + 108; *((_DWORD *)v1 + 125) = (char *)v1 + 172; *((_DWORD *)v1 + 127) = (char *)v1 + 204; *((_DWORD *)v1 + 130) = (char *)v1 + 236; *((_DWORD *)v1 + 128) = (char *)v1 + 268; *((_DWORD *)v1 + 131) = (char *)v1 + 300; *((_DWORD *)v1 + 132) = (char *)v1 + 140; *((_DWORD *)v1 + 129) = (char *)v1 + 332; *((_DWORD *)v1 + 126) = (char *)v1 + 364; *((_DWORD *)v1 + 133) = (char *)v1 + 396; *((_DWORD *)v1 + 134) = (char *)v1 + 428; *((_DWORD *)v1 + 135) = (char *)v1 + 460; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectManager::som_Initialize"); } // 4A18C4: using guessed type int __stdcall loc_4A18C4(__int16); // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055B340) -------------------------------------------------------- char __userpurge sub_55B340(int a1, int a2, int a3, int a4, int a5) { int v5; // eax@1 const char *v6; // edi@1 char result; // al@2 int v8; // ST10_4@3 int v9; // ST0C_4@3 int v10; // esi@3 signed __int16 v11; // ax@3 int v12; // ebx@3 int v13; // esi@3 signed __int16 v14; // ax@3 int v15; // eax@4 void *v16; // esi@4 char *v17; // edi@7 void *v18; // esi@7 int v19; // eax@9 int v20; // [sp+4h] [bp-10h]@4 int v21; // [sp+8h] [bp-Ch]@3 int v22; // [sp+Ch] [bp-8h]@1 unsigned __int8 v23; // [sp+10h] [bp-4h]@3 unsigned __int8 v24; // [sp+11h] [bp-3h]@3 v22 = a1; v5 = sub_4CE4D0((int)dword_1325CC60, a5); v6 = (const char *)v5; if ( v5 ) { v8 = a2; v9 = a3; sub_4CE610((int)dword_1325CC60, (int)&a5, (const char *)v5); v10 = (unsigned __int8)a5; v11 = sub_4011A0(&unk_14D42DC0); v12 = v10 + (unsigned __int16)v11 % (BYTE1(a5) - v10 + 1); sub_4CE6A0((int)dword_1325CC60, (int)&v23, v6); v13 = v23; v14 = sub_4011A0(&unk_14D42DC0); v21 = v13 + (unsigned __int16)v14 % (v24 - v13 + 1); if ( (unsigned __int8)(*(int (__stdcall **)(int, int))(**(_DWORD **)(v22 + 9668) + 1232))(v9, v8) == 2 && (v15 = __RTDynamicCast(*(_DWORD *)(v22 + 9668), 0, &off_85A104, &off_84BF50, 0), v16 = (void *)v15, (v20 = v15) != 0) && *(_DWORD *)(v22 + 9672) == (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 836))(v15) ) { v17 = sub_4190C0(v16); *((_DWORD *)v17 + 14) = 1000 * v12; *((_DWORD *)v17 + 15) = 1000 * v21; v18 = off_849C18; *(_WORD *)off_849C18 = -11251; *((_WORD *)v18 + 1) = sub_4802C0(v20); *((_DWORD *)v18 + 1) = *(_DWORD *)(v22 + 9672); *((_DWORD *)v18 + 5) = 0; *((_DWORD *)v18 + 4) = 0; *((_DWORD *)v18 + 3) = 0; *((_DWORD *)v18 + 2) = 0; strncpy((char *)v18 + 8, byte_6A492E, 0x10u); *((_BYTE *)v18 + 24) = v12; *((_BYTE *)v18 + 25) = v21; if ( sub_4C81E0(&off_849C18, 26) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); *(_DWORD *)v17 = 3; result = 1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePet::spt_SummonPet : Packet Too Long", 26); *(_DWORD *)v17 = 3; result = 1; } } else { result = 0; } } else { result = 0; } return result; } // 55B340: could not find valid save-restore pair for ebx // 55B340: could not find valid save-restore pair for esi // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); // 14D16430: using guessed type int dword_14D16430; //----- (0055B4F0) -------------------------------------------------------- bool __userpurge sub_55B4F0(int a1, int a2, int a3, int a4, int a5, signed int a6, int a7, int a8, int a9) { int v9; // edi@1 bool result; // al@2 char *v11; // eax@4 int v12; // esi@4 int v13; // eax@5 int v14; // esi@11 int v15; // eax@11 v9 = a1; if ( !*(_DWORD *)(a1 + 9668) || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a1 + 9668) + 1232))() != 2 ) return 0; v11 = sub_4190C0(*(void **)(v9 + 9668)); v12 = (int)v11; if ( !v11 || (v13 = *(_DWORD *)v11, !*(_DWORD *)v12) || v13 == 1 || *(_DWORD *)(v12 + 28) == -1 ) return 0; if ( *(_DWORD *)(v12 + 36) == -1 ) { if ( v13 != 2 ) return 0; if ( !sub_55B340(v9, a2, v12, *(_DWORD *)(v9 + 9668), *(_DWORD *)(v12 + 28)) ) { v14 = *(_DWORD *)(v12 + 28); v15 = (*(int (**)(void))(**(_DWORD **)(v9 + 9668) + 836))(); sub_639150(&unk_86DDD8, (int)"ShinePet::spt_SummonPet : Create Pet Error", v15, v14); return 0; } *(_DWORD *)v12 = 3; *(_DWORD *)(v12 + 4) = 1; } if ( sub_4D15A0(*(void **)(v9 + 9668), *(_DWORD *)(v12 + 28)) ) { result = sub_4B3F50( (void *)v9, a3, a4, a5, a6, *(_WORD *)(v12 + 32), *(_WORD *)(v12 + 28), *(_DWORD *)(v12 + 36), v12 + 40, 0, a8, a9) == 0; } else { sub_639100(&unk_86DDD8, (int)"ShinePet::spt_SummonPet : Filling Pet Common Info is Failed", *(_DWORD *)(v12 + 28)); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v9 + 2332))(v9, 1794, 9); result = 0; } return result; } //----- (0055B620) -------------------------------------------------------- char __thiscall sub_55B620(void *this, char a2) { void *v2; // esi@1 char result; // al@1 v2 = this; (*(void (**)(void))(*(_DWORD *)this + 2632))(); result = (*((_BYTE *)v2 + 7888) ^ 32 * a2) & 0x20; *((_BYTE *)v2 + 7888) ^= result; return result; } //----- (0055B650) -------------------------------------------------------- char __thiscall sub_55B650(int this) { return (*(_BYTE *)(this + 7888) >> 5) & 1; } //----- (0055B660) -------------------------------------------------------- int __thiscall sub_55B660(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 3876))((char *)this + 9460); } //----- (0055B680) -------------------------------------------------------- int __thiscall sub_55B680(int this, __int16 a2, int a3) { return sub_434610(this, a2, a3); } //----- (0055B690) -------------------------------------------------------- int __thiscall sub_55B690(int this) { int result; // eax@1 *(_DWORD *)(this + 7908) = 0; *(_DWORD *)(this + 7912) = 0; *(_DWORD *)(this + 7916) = 0; result = dword_14D129E8; *(_DWORD *)(this + 7920) = dword_14D129E8; *(_DWORD *)(this + 7924) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055B6C0) -------------------------------------------------------- int __thiscall sub_55B6C0(int this) { int result; // eax@1 int v2; // esi@1 int v3; // eax@2 int v4; // ecx@2 result = dword_14D129E8; v2 = this; if ( *(_DWORD *)(this + 7924) <= (unsigned int)dword_14D129E8 ) { *(_DWORD *)(this + 7924) = dword_14D129E8 + 2; v3 = sub_552F20(this); v4 = *(_DWORD *)v3; result = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)(v2 + 7912) != v4 || *(_DWORD *)(v2 + 7916) != result ) { if ( !*(_DWORD *)(v2 + 7908) ) { *(_DWORD *)(v2 + 7908) = 1; goto LABEL_8; } } else { if ( *(_DWORD *)(v2 + 7908) == 1 ) { *(_DWORD *)(v2 + 7908) = 0; LABEL_8: *(_DWORD *)(v2 + 7920) = dword_14D129E8; goto LABEL_9; } } LABEL_9: *(_DWORD *)(v2 + 7912) = v4; *(_DWORD *)(v2 + 7916) = result; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055B740) -------------------------------------------------------- int __thiscall sub_55B740(int this) { return *(_DWORD *)(this + 7908); } //----- (0055B750) -------------------------------------------------------- int __thiscall sub_55B750(int this) { return *(_DWORD *)(this + 7920); } //----- (0055B760) -------------------------------------------------------- int __thiscall sub_55B760(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 7892) = a2; return result; } //----- (0055B770) -------------------------------------------------------- bool __thiscall sub_55B770(int this) { int v1; // eax@1 bool result; // al@2 int v3; // eax@3 int v4; // eax@3 int v5; // [sp+0h] [bp-4h]@1 v5 = this; v1 = sub_4012C0(this); if ( v1 && (v3 = sub_419000(v1), (v4 = sub_494970(&dword_D61E090, v3, (int)&v5)) != 0) ) result = *(_BYTE *)(v4 + 364) != 0; else result = 0; return result; } // D61E090: using guessed type int dword_D61E090; //----- (0055B7B0) -------------------------------------------------------- bool __thiscall sub_55B7B0(int this, int a2) { int v2; // edi@1 int v3; // esi@1 bool result; // al@2 int v5; // eax@3 int v6; // eax@4 int v7; // eax@4 char v8; // bl@6 char v9; // al@6 v2 = a2; v3 = this; if ( a2 && (v5 = sub_4012C0(this)) != 0 && (v6 = sub_419000(v5), (v7 = sub_494970(&dword_D61E090, v6, (int)&a2)) != 0) && *(_BYTE *)(v7 + 364) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3584))(v3); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3584))(v2); if ( v8 != 2 && v9 != 2 ) result = v8 != v9; else result = 0; } else { result = 0; } return result; } // D61E090: using guessed type int dword_D61E090; //----- (0055B830) -------------------------------------------------------- char __thiscall sub_55B830(void *this) { int v1; // esi@1 char v2; // al@3 char result; // al@4 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineMobileObject::smo_IsActiveMode"); dword_7508B8[dword_750CB8] = (int)"ShineMobileObject::smo_IsActiveMode"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132541B8 & 1) ) { dword_132541B8 |= 1u; word_132541B4 = 86; atexit(nullsub_127); } v2 = sub_547A30(v1); --dword_750CB8; if ( (1 << v2) & (unsigned __int16)word_132541B4 ) { sub_467660((int)&unk_D020420, (int)"ShineMobileObject::smo_IsActiveMode"); result = 1; } else { sub_467660((int)&unk_D020420, (int)"ShineMobileObject::smo_IsActiveMode"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132541B4: using guessed type __int16 word_132541B4; // 132541B8: using guessed type int dword_132541B8; //----- (0055B930) -------------------------------------------------------- int __thiscall sub_55B930(void *this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // ebx@1 int v5; // eax@1 int v6; // ST04_4@3 int v7; // eax@3 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObject::ShineMobileObject::smo_LoginAfterLogout"); dword_7508B8[dword_750CB8] = (int)"ShineObject::ShineMobileObject::smo_LoginAfterLogout"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2632))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 20))(v2); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 828))(v2, 2, 0, 3); v3 = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 4); v5 = sub_552F20(v2); *(_DWORD *)v5 = v3; *(_DWORD *)(v5 + 4) = v4; if ( sub_452770(*(void **)(v2 + 122), v2, 0, 0, 1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1012))(v2); } else { v6 = sub_552F20(v2); v7 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v2, v7, v6, 0, 0, (int)sub_5789F0, 0, 0, 0, 0, 65535); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObject::ShineMobileObject::smo_LoginAfterLogout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055BA60) -------------------------------------------------------- int __thiscall sub_55BA60(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObject::ShineMob::smo_LoginAfterLogout"); dword_7508B8[dword_750CB8] = (int)"ShineObject::ShineMob::smo_LoginAfterLogout"; dword_750AB8[dword_750CB8++] = -1; sub_55B930(v2, a2); sub_4B6790((char *)v2 + 7956); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObject::ShineMob::smo_LoginAfterLogout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055BB10) -------------------------------------------------------- char __thiscall sub_55BB10(void *this, unsigned __int8 *a2, int a3, int a4) { void *v4; // edi@1 __int16 v6; // ax@8 __int16 v7; // bx@8 int v8; // [sp+28h] [bp+8h]@9 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetItemLot"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_GetItemLot"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || !a3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetItemLot"); return 0; } if ( !a4 ) goto LABEL_7; *(_DWORD *)a3 = 0; *(_DWORD *)(a3 + 4) = 0; *(_BYTE *)a4 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *(_BYTE *)a4 = 1; LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetItemLot"); return 0; } v6 = sub_418C80((int)&dword_14D20890, a2); v7 = v6; if ( v6 == -1 ) goto LABEL_7; v8 = sub_63F770((char *)v4 + 36484, v6); *(_QWORD *)a3 = v8 + sub_63F770((char *)v4 + 32816, v7); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetItemLot"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (0055BC70) -------------------------------------------------------- int __thiscall sub_55BC70(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@3 int (__thiscall *v5)(_DWORD); // eax@3 __int16 v6; // ax@3 __int16 v7; // si@3 int v8; // eax@3 int v9; // esi@6 int v10; // eax@7 int v11; // edi@7 void *v12; // esi@8 void *v13; // eax@8 char *v14; // eax@8 char *v15; // edi@8 __int16 v16; // bx@9 int v17; // eax@11 __int16 v18; // cx@11 unsigned __int16 v19; // dx@11 int v20; // edx@12 int v21; // eax@12 bool v22; // zf@12 int v23; // eax@12 int v24; // eax@13 int v25; // eax@15 int v26; // eax@16 int v27; // edi@20 int v28; // eax@20 char v30; // [sp+10h] [bp-60h]@3 char v31; // [sp+21h] [bp-4Fh]@3 char v32; // [sp+3Ch] [bp-34h]@20 __int16 v33; // [sp+48h] [bp-28h]@9 __int16 v34; // [sp+4Ah] [bp-26h]@16 char *v35; // [sp+4Ch] [bp-24h]@9 int v36; // [sp+50h] [bp-20h]@9 int v37; // [sp+54h] [bp-1Ch]@1 int v38; // [sp+58h] [bp-18h]@1 int v39; // [sp+5Ch] [bp-14h]@3 int v40; // [sp+60h] [bp-10h]@6 int v41; // [sp+6Ch] [bp-4h]@1 v3 = (int)this; v38 = (int)this; v37 = (int)"ShineMobileObject::smo_ReflectionDamage"; sub_4675D0((int)&unk_D020420, (int)"ShineMobileObject::smo_ReflectionDamage"); dword_7508B8[dword_750CB8] = (int)"ShineMobileObject::smo_ReflectionDamage"; dword_750AB8[dword_750CB8++] = -1; v41 = 0; if ( a3 ) { v4 = sub_552F20(v3); sub_42A950((int)&v30, v3, a3, 0, 0, v4); v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1384); LOBYTE(v41) = 1; v31 = 0; v6 = v5(v3); v7 = v6; v39 = (unsigned __int16)v6; v8 = sub_54DE90(&unk_13253630, v6); if ( v8 ) { v9 = sub_4096E0(v8); v40 = v9; if ( v9 ) { v10 = sub_4096E0(a3); v11 = v10; if ( v10 ) { (*(void (__thiscall **)(int, int, int, char *))(*(_DWORD *)v10 + 3816))(v10, v9, a2, &v30); v12 = off_849C18; *(_WORD *)off_849C18 = 9307; v13 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1324))(v11); v14 = sub_401150(v13); v15 = v14; if ( v14 ) { v16 = *(_WORD *)(*((_DWORD *)v14 + 2) + 12 * *((_WORD *)v14 + 7) + 4); v33 = *((_WORD *)v14 + 2); v35 = v14; v36 = 0; *((_WORD *)v12 + 1) = 792; while ( (unsigned __int16)v16 < *((_WORD *)v15 + 2) ) { v17 = (unsigned __int16)v16; v18 = v16; v16 = *(_WORD *)(*((_DWORD *)v15 + 2) + 12 * (unsigned __int16)v16 + 4); v19 = *((_WORD *)v15 + 2); v33 = v18; if ( v18 >= v19 || (v20 = 3 * v17, v21 = *((_DWORD *)v15 + 2), v22 = *(_BYTE *)(v21 + 4 * v20 + 8) == 0, v23 = v21 + 4 * v20, v22) ) v24 = 0; else v24 = *(_DWORD *)v23; v25 = sub_401110(v24); if ( sub_415C90((void *)v25, 61) ) { v34 = v16; v26 = sub_4A2CF0((int)&v33); *((_WORD *)v12 + 1) = sub_428740(v26); goto LABEL_18; } } v34 = v16; LABEL_18: if ( 792 == *((_WORD *)v12 + 1) ) { sub_639100(&unk_86DDD8, (int)"ShineMobileObject::smo_ReflectionDamage Not Find Aicton", 0); } else { v27 = v40; *((_WORD *)v12 + 6) = a2; *((_WORD *)v12 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 2024))(v27); *((_WORD *)v12 + 2) = sub_4802C0(a3); v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v27 + 1256))(v27); *((_WORD *)v12 + 3) = v39; *((_DWORD *)v12 + 2) = v28; sub_4287B0(&v32, &off_849C18, 16); LOBYTE(v41) = 2; sub_551C80(v38, (int)&v32, 0); LOBYTE(v41) = 1; sub_428A70(&v32); } LOBYTE(v41) = 0; nullsub_2(&v30); v41 = -1; goto LABEL_22; } } } } else { sub_639100(&unk_86DDD8, (int)"ShineMobileObject::smo_ReflectionDamage Not Find Handle", (unsigned __int16)v7); } LOBYTE(v41) = 0; nullsub_2(&v30); v41 = -1; LABEL_22: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineMobileObject::smo_ReflectionDamage"); } --dword_750CB8; v41 = -1; return sub_467660((int)&unk_D020420, (int)"ShineMobileObject::smo_ReflectionDamage"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055BF20) -------------------------------------------------------- void __thiscall sub_55BF20(void *this, void *a2, int a3, int a4) { int v4; // esi@1 int v5; // edx@5 void *v6; // eax@5 __int16 v7; // ax@6 void *v8; // eax@7 __int16 v9; // ax@8 void *v10; // eax@9 __int16 v11; // ax@10 void *v12; // eax@11 __int16 v13; // ax@12 void *v14; // eax@13 __int16 v15; // ax@14 void *v16; // eax@15 __int16 v17; // ax@16 void *v18; // eax@17 __int16 v19; // ax@18 void *v20; // eax@19 __int16 v21; // ax@20 int v22; // [sp+10h] [bp-1Ch]@5 int v23; // [sp+14h] [bp-18h]@5 int v24; // [sp+18h] [bp-14h]@5 int v25; // [sp+28h] [bp-4h]@5 v4 = (int)this; if ( a2 && a3 && a4 && (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { v22 = 0; v23 = 0; v24 = 0; v5 = *(_DWORD *)v4; v25 = 0; v6 = (void *)(*(int (__thiscall **)(int))(v5 + 1488))(v4); if ( sub_5CF200(v6, (int)&v22, a3, 4, v4, a4) == 1 ) { v7 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 4, v7); } sub_4BFAF0((int)&v22); v8 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v8, (int)&v22, a3, 6, v4, a4) == 1 ) { v9 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 6, v9); } sub_4BFAF0((int)&v22); v10 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v10, (int)&v22, a3, 8, v4, a4) == 1 ) { v11 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 8, v11); } sub_4BFAF0((int)&v22); v12 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v12, (int)&v22, a3, 9, v4, a4) == 1 ) { v13 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 9, v13); } sub_4BFAF0((int)&v22); v14 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v14, (int)&v22, a3, 10, v4, a4) == 1 ) { v15 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 10, v15); } sub_4BFAF0((int)&v22); v16 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v16, (int)&v22, a3, 12, v4, a4) == 1 ) { v17 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 12, v17); } sub_4BFAF0((int)&v22); v18 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v18, (int)&v22, a3, 13, v4, a4) == 1 ) { v19 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 13, v19); } sub_4BFAF0((int)&v22); v20 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1488))(v4); if ( sub_5CF200(v20, (int)&v22, a3, 14, v4, a4) == 1 ) { v21 = sub_5CDED0((int)&v22, 0x3E8u); sub_50EFF0(a2, 14, v21); } sub_424190((void **)&v22); } } //----- (0055C1B0) -------------------------------------------------------- int __thiscall sub_55C1B0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; (*(void (**)(void))(*(_DWORD *)this + 1256))(); return (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1156))(v4); } //----- (0055C1D0) -------------------------------------------------------- int __cdecl sub_55C1D0() { sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::sp_NoAdmin"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::sp_NoAdmin"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShinePlayer::sp_NoAdmin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055C210) -------------------------------------------------------- char __stdcall sub_55C210(int a1, int a2, int a3) { int v3; // eax@1 int v4; // ecx@1 int v5; // ebx@8 int v6; // eax@8 sub_4675D0((int)&unk_D020420, (int)"AxialListDeathAura::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListDeathAura::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v3 = **(_DWORD **)(a1 + 118); v4 = **(_DWORD **)(a2 + 118); if ( v3 == v4 || v3 == -1 || v4 == -1 ) { if ( sub_499ED0((void *)a1, a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2204))(a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) != 3 ) { v5 = *(_DWORD *)a2; v6 = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 1256))(a2, 1000, 1); (*(void (__thiscall **)(int, int, int))(v5 + 1468))(a2, a1, v6); } --dword_750CB8; } else { --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"AxialListDeathAura::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055C320) -------------------------------------------------------- int __thiscall sub_55C320(void *this) { void *v1; // esi@1 _UNKNOWN *v2; // ST08_4@1 int v3; // ST04_4@1 int v4; // eax@1 int (__stdcall **v6)(int, int, int); // [sp+Ch] [bp-10h]@1 int v7; // [sp+18h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DeathAura"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DeathAura"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; sub_427BE0(&v6); v6 = &off_6E776C; v2 = (_UNKNOWN *)*((_DWORD *)v1 + 1973); v3 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v7) = 1; v4 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v4, v3, v2, 0, (int)&v6, 0, 65535); LOBYTE(v7) = 0; v6 = &off_6E776C; sub_427EB0(&v6); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DeathAura"); } // 6E776C: using guessed type int (__stdcall *off_6E776C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055C410) -------------------------------------------------------- int __thiscall sub_55C410(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@1 int v4; // eax@1 int v5; // edi@1 int (__thiscall *v6)(_DWORD); // edx@1 int v7; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Immortal"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Immortal"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1264))(v1); v3 = *(_DWORD *)v1; *(_DWORD *)((char *)v1 + 32703) = v2; v4 = (*(int (__thiscall **)(void *))(v3 + 1268))(v1); v5 = *(_DWORD *)v1; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3468); *(_DWORD *)((char *)v1 + 32707) = v4; v7 = v6(v1); (*(void (__thiscall **)(void *, int))(v5 + 3472))(v1, v7); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Immortal"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055C4E0) -------------------------------------------------------- int __thiscall sub_55C4E0(void *this) { void *v1; // esi@1 int (__stdcall **v3)(int, int, int); // [sp+Ch] [bp-10h]@1 int v4; // [sp+18h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KillAllMob"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_KillAllMob"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; sub_427BE0(&v3); v3 = &off_6E776C; LOBYTE(v4) = 1; sub_549B60(v1, (int)&v3, 0); LOBYTE(v4) = 0; v3 = &off_6E776C; sub_427EB0(&v3); --dword_750CB8; v4 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_KillAllMob"); } // 6E776C: using guessed type int (__stdcall *off_6E776C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0055C5B0) -------------------------------------------------------- char __thiscall sub_55C5B0(void *this, __int16 a2) { void *v2; // esi@1 char result; // al@2 int v4; // edi@3 int v5; // ebx@4 v2 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 1804))() ) { v4 = 0; if ( *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1804))(v2) + 12) <= 0 ) { LABEL_7: result = 0; } else { v5 = 0; while ( a2 != *(_WORD *)(*(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1804))(v2) + 8) + v5 + 4) ) { ++v4; v5 += 12; if ( v4 >= *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1804))(v2) + 12) ) goto LABEL_7; } result = 1; } } else { result = 0; } return result; } //----- (0055C630) -------------------------------------------------------- char __thiscall sub_55C630(void *this, int a2) { char result; // al@2 int v3; // esi@3 if ( a2 ) { v3 = (int)((char *)this + 9540); sub_58FC60((int)((char *)this + 9540), 1); result = sub_650330(v3, 10 * a2); } else { result = sub_58FC60((int)((char *)this + 9540), 0); } return result; } //----- (0055C670) -------------------------------------------------------- int __cdecl sub_55C670(int a1, int a2, int a3, const char *a4) { char v4; // al@1 char v5; // bl@1 bool v6; // zf@7 double v7; // st7@7 double v9; // [sp+10h] [bp-50h]@7 char v10; // [sp+1Bh] [bp-45h]@2 char v11; // [sp+1Ch] [bp-44h]@11 unsigned int v12; // [sp+5Ch] [bp-4h]@1 int v13; // [sp+60h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v4 = *(_BYTE *)a2; v5 = 1; if ( *(_BYTE *)a2 == 89 || (v10 = 0, v4 == 121) ) v10 = 1; if ( *(_BYTE *)a3 == 78 || *(_BYTE *)a3 == 110 ) v5 = 0; v6 = *a4 == 0; v7 = 0.0; v9 = 0.0; if ( !v6 ) { sscanf(a4, "%lg", &v9); v7 = v9; } byte_86D0B8 = v10; byte_86D0B9 = v5; if ( v7 > 0.0 ) dbl_86D0B0 = v7; sprintf(&v11, "%g", *(_QWORD *)&dbl_86D0B0); return (*(int (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v11); } // 86D0B0: using guessed type double dbl_86D0B0; // 86D0B8: using guessed type char byte_86D0B8; // 86D0B9: using guessed type char byte_86D0B9; // 86FEB8: using guessed type int __security_cookie; //----- (0055C730) -------------------------------------------------------- char __thiscall sub_55C730(int this) { char result; // al@2 if ( *(_DWORD *)(this + 9560) <= (unsigned int)dword_14D129E8 ) { *(_DWORD *)(this + 9560) = 0; result = 0; } else { result = 1; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055C750) -------------------------------------------------------- char __thiscall sub_55C750(void *this, unsigned __int8 a2) { int v2; // esi@1 int v3; // eax@1 char result; // al@2 int v5; // eax@5 v2 = (int)this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1804))(); if ( v3 && *(_DWORD *)(v3 + 8) && *(_DWORD *)(v3 + 12) > (signed int)a2 ) { v5 = *(_DWORD *)(*(_DWORD *)(v3 + 8) + 12 * a2); sub_4A9130( v2, *(_DWORD *)(v5 + 87), *(_DWORD *)(v5 + 83), *(_WORD *)(v5 + 91), *(_DWORD *)(v5 + 97), *(_DWORD *)(v5 + 93), *(_WORD *)(v5 + 101)); result = 1; } else { result = 0; } return result; } //----- (0055C7B0) -------------------------------------------------------- int __thiscall sub_55C7B0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 9656) = a2; return result; } //----- (0055C7C0) -------------------------------------------------------- char __thiscall sub_55C7C0(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 9660) = a2; return result; } //----- (0055C7D0) -------------------------------------------------------- char __thiscall sub_55C7D0(int this) { return *(_BYTE *)(this + 9660); } //----- (0055C7E0) -------------------------------------------------------- void __thiscall sub_55C7E0(void *this) { void *v1; // esi@1 int v2; // eax@2 int v3; // eax@3 v1 = this; if ( *((_BYTE *)this + 9660) != 1 ) { v2 = (*(int (**)(void))(*(_DWORD *)this + 1804))(); if ( v2 ) { v3 = *(_DWORD *)(v2 + 44); if ( !v3 || (unsigned int)(signed __int64)((double)*(_WORD *)(v3 + 32) / 1000.0 * 10.0 + (double)*((unsigned int *)v1 + 2414)) < dword_14D129E8 ) *((_BYTE *)v1 + 9660) = 1; } } } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055C870) -------------------------------------------------------- int __stdcall sub_55C870(int a1) { sub_4C0A40(a1); return a1; } //----- (0055C890) -------------------------------------------------------- int __thiscall sub_55C890(int this, int a2) { sub_481400((void *)(this + 9032), a2); return a2; } //----- (0055C8B0) -------------------------------------------------------- int __thiscall sub_55C8B0(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = this + 12; *(_DWORD *)(this + 4) = 142; sub_4C81E0((void *)this, 141); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 154) = *(_DWORD *)v1; *(_DWORD *)(v1 + 158) = v2 + 2; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; **(_WORD **)(v1 + 154) = **(_WORD **)(v1 + 154) & 0xFC1A | 0x1A; return v1; } //----- (0055C920) -------------------------------------------------------- int __thiscall sub_55C920(int this, unsigned __int8 a2, __int16 a3) { int result; // eax@1 result = *(_DWORD *)(this + 158); if ( result ) { if ( a2 < 0xAu ) *(_WORD *)(result + 2 * a2 + 119) = a3; } return result; } //----- (0055C950) -------------------------------------------------------- int __thiscall sub_55C950(int this, int a2) { int result; // eax@1 result = this; memcpy((void *)this, &dword_DA12010, 0xCCu); *(_DWORD *)(this + 76) = 1000; *(_DWORD *)(this + 80) = 1000; *(_DWORD *)(this + 84) = 1000; if ( a2 ) { *(_DWORD *)(this + 228) = *(_DWORD *)(a2 + 41); *(_DWORD *)(this + 224) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 232) = *(_WORD *)(a2 + 53); *(_DWORD *)(this + 236) = *(_WORD *)(a2 + 57); *(_DWORD *)(this + 240) = *(_WORD *)(a2 + 59); *(_DWORD *)(this + 248) = *(_DWORD *)(a2 + 49); *(_DWORD *)(this + 244) = *(_DWORD *)(a2 + 45); *(_DWORD *)(this + 252) = *(_WORD *)(a2 + 55); } return result; } // DA12010: using guessed type int dword_DA12010; //----- (0055C9D0) -------------------------------------------------------- void __thiscall sub_55C9D0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6E783C; sub_424190((void **)(this + 8108)); sub_5534D0((void *)v1); } // 6E783C: using guessed type int (*off_6E783C)(); //----- (0055CA30) -------------------------------------------------------- _UNKNOWN *__cdecl sub_55CA30() { return &unk_132541C4; } //----- (0055CA40) -------------------------------------------------------- int __thiscall sub_55CA40(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 3248))() != 0 ? 2 : 0; } //----- (0055CA60) -------------------------------------------------------- char __thiscall sub_55CA60(void *this, unsigned __int16 a2, unsigned int a3) { return sub_445D00((int)((char *)this + 8108), a2, a3); } //----- (0055CA70) -------------------------------------------------------- void __thiscall sub_55CA70(int this, int a2) { int v2; // esi@1 v2 = *(_DWORD *)(this + 8283); memcpy((void *)a2, (const void *)v2, 0x88u); v2 += 136; *(_WORD *)(a2 + 136) = *(_WORD *)v2; *(_BYTE *)(a2 + 138) = *(_BYTE *)(v2 + 2); } //----- (0055CA90) -------------------------------------------------------- int __thiscall sub_55CA90(void *this, int a2) { void *v2; // esi@1 int result; // eax@3 int v4; // ebx@4 int v5; // eax@5 v2 = this; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1948))(a2) != 1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232))(v2) != 11 || (result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3240))(v2), result != -1) && (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2), result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3240))(v2), result == v4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, a2, (char *)v2 + 8125); result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2576))(v2, a2); } return result; } //----- (0055CB20) -------------------------------------------------------- bool __thiscall sub_55CB20(void *this) { void *v1; // esi@1 bool result; // al@2 v1 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 3248))() ) result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1156))(v1) == 3; else result = 1; return result; } //----- (0055CB50) -------------------------------------------------------- char __cdecl sub_55CB50() { return 11; } //----- (0055CB60) -------------------------------------------------------- char __thiscall sub_55CB60(int this) { int v1; // eax@1 char result; // al@2 int v3; // eax@3 v1 = *(_DWORD *)(this + 8092); if ( v1 && (v3 = *(_DWORD *)(v1 + 4)) != 0 ) result = *(_BYTE *)(v3 + 32); else result = 0; return result; } //----- (0055CB80) -------------------------------------------------------- signed int __thiscall sub_55CB80(int this) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 v1 = *(_DWORD *)(this + 8092); if ( v1 && (v3 = *(_DWORD *)(v1 + 4)) != 0 ) result = *(_DWORD *)(v3 + 93); else result = 50; return result; } //----- (0055CBA0) -------------------------------------------------------- int __thiscall sub_55CBA0(int this) { int v1; // esi@1 int v2; // eax@1 int result; // eax@2 __int16 v4; // bx@4 __int16 v5; // di@7 unsigned __int8 v6; // al@9 int v7; // eax@9 int v8; // eax@10 v1 = this; v2 = *(_DWORD *)(this + 8092); if ( v2 && *(_DWORD *)v2 ) { v4 = 0; if ( *(_DWORD *)(this + 7940) && (v4 = *(_WORD *)((*(int (**)(void))(**(_DWORD **)(this + 7940) + 1072))() + 3136) - 1000, (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 7940) + 3708))() == 1) ) { result = (*(int (**)(void))(**(_DWORD **)(v1 + 7940) + 3716))(); } else { v5 = 0; if ( *(_DWORD *)(v1 + 8100) ) { if ( *(_DWORD *)(v1 + 8096) ) { v6 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v1 + 8100) + 192))(*(_DWORD *)(v1 + 8096)); v7 = sub_4BFA10((int)&unk_133593D0, v6); if ( v7 ) { v8 = *(_DWORD *)v7; if ( v8 ) v5 = *(_WORD *)v8; } } } result = (unsigned __int16)(((signed int)((unsigned __int64)(*(_DWORD *)(v1 + 7256) * (signed int)(signed __int16)(((signed int)((unsigned __int64)((signed __int16)dword_DA2293C * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 46)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed __int16)dword_DA2293C * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 46)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v1 + 7256) * (signed int)(signed __int16)(((signed int)((unsigned __int64)((signed __int16)dword_DA2293C * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 46)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed __int16)dword_DA2293C * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 46)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); if ( (signed __int16)result < 0 ) result = 0; } } else { result = 0; } return result; } // DA2293C: using guessed type int dword_DA2293C; //----- (0055CCC0) -------------------------------------------------------- int __thiscall sub_55CCC0(int this) { int v1; // esi@1 int v2; // eax@1 int result; // eax@2 __int16 v4; // bx@4 __int16 v5; // di@7 unsigned __int8 v6; // al@9 int v7; // eax@9 int v8; // eax@10 v1 = this; v2 = *(_DWORD *)(this + 8092); if ( v2 && *(_DWORD *)v2 ) { v4 = 0; if ( *(_DWORD *)(this + 7940) && (v4 = *(_WORD *)((*(int (**)(void))(**(_DWORD **)(this + 7940) + 1072))() + 3136) - 1000, (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v1 + 7940) + 3712))() == 1) ) { result = (*(int (**)(void))(**(_DWORD **)(v1 + 7940) + 3720))(); } else { v5 = 0; if ( *(_DWORD *)(v1 + 8100) ) { if ( *(_DWORD *)(v1 + 8096) ) { v6 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v1 + 8100) + 192))(*(_DWORD *)(v1 + 8096)); v7 = sub_4BFA10((int)&unk_133593D0, v6); if ( v7 ) { v8 = *(_DWORD *)v7; if ( v8 ) v5 = *(_WORD *)v8; } } } result = (unsigned __int16)(((signed int)((unsigned __int64)(*(_DWORD *)(v1 + 7256) * (signed int)(signed __int16)(((signed int)((unsigned __int64)((signed __int16)dword_DA22938 * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 44)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed __int16)dword_DA22938 * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 44)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v1 + 7256) * (signed int)(signed __int16)(((signed int)((unsigned __int64)((signed __int16)dword_DA22938 * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 44)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed __int16)dword_DA22938 * (v4 + v5 + *(_WORD *)(**(_DWORD **)(v1 + 8092) + 44)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); if ( (signed __int16)result < 0 ) result = 0; } } else { result = 0; } return result; } // DA22938: using guessed type int dword_DA22938; //----- (0055CDE0) -------------------------------------------------------- char *__thiscall sub_55CDE0(void *this) { return (char *)this + 8292; } //----- (0055CDF0) -------------------------------------------------------- int __thiscall sub_55CDF0(int this) { int result; // eax@1 result = *(_DWORD *)(this + 8288); if ( result ) result = *(_DWORD *)result; return result; } //----- (0055CE00) -------------------------------------------------------- int __thiscall sub_55CE00(void *this) { void *v1; // esi@1 int v2; // eax@1 unsigned __int64 v3; // qax@2 v1 = this; v2 = *((_DWORD *)this + 2023); if ( v2 && *(_DWORD *)(v2 + 4) ) { v3 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1072))() + 2588) * (unsigned __int64)*(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 2023) + 4) + 33) / 0x3E8; *((_DWORD *)v1 + 960) = v3; } else { LODWORD(v3) = 0; } return v3; } //----- (0055CE60) -------------------------------------------------------- int __thiscall sub_55CE60(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2732))(0); } //----- (0055CE70) -------------------------------------------------------- signed __int16 __stdcall sub_55CE70(unsigned __int16 a1) { signed __int16 result; // ax@2 __int16 v2; // [sp+4h] [bp-4h]@1 sub_5CF620(&v2); if ( a1 < 0x3E8u ) { v2 = a1 + 22138; nullsub_2(&v2); result = a1 + 22138; } else { nullsub_2(&v2); result = -1; } return result; } //----- (0055CEC0) -------------------------------------------------------- int __thiscall sub_55CEC0(int this) { int result; // eax@1 result = *(_DWORD *)(this + 8283); if ( result ) result += 19; return result; } //----- (0055CED0) -------------------------------------------------------- int __thiscall sub_55CED0(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 7940) ) result = (*(int (**)(void))(**(_DWORD **)(this + 7940) + 1360))(); else result = 65535; return result; } //----- (0055CEF0) -------------------------------------------------------- bool __thiscall sub_55CEF0(void *this) { void *v1; // esi@1 bool result; // al@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 3184))() == 1 ) { result = 0; } else { if ( *((_BYTE *)v1 + 7636) == 1 ) result = 1; else result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1) == 0; } return result; } //----- (0055CF30) -------------------------------------------------------- int __thiscall sub_55CF30(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 7940) ) result = (*(int (**)(void))(**(_DWORD **)(this + 7940) + 2072))(); else result = 0; return result; } //----- (0055CF50) -------------------------------------------------------- int __thiscall sub_55CF50(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 7940) ) result = (*(int (**)(void))(**(_DWORD **)(this + 7940) + 2140))(); else result = 0; return result; } //----- (0055CF70) -------------------------------------------------------- int __thiscall sub_55CF70(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 7936) = a2; return result; } //----- (0055CF80) -------------------------------------------------------- int __thiscall sub_55CF80(int this) { return *(_DWORD *)(this + 7936); } //----- (0055CF90) -------------------------------------------------------- int __thiscall sub_55CF90(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 7940) = a2; return result; } //----- (0055CFA0) -------------------------------------------------------- int __thiscall sub_55CFA0(int this) { return *(_DWORD *)(this + 7940); } //----- (0055CFB0) -------------------------------------------------------- int __thiscall sub_55CFB0(int this, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(this + 8100) = a2; *(_DWORD *)(this + 8096) = a3; return result; } //----- (0055CFD0) -------------------------------------------------------- char __thiscall sub_55CFD0(int this) { return *(_BYTE *)(this + 8124); } //----- (0055CFE0) -------------------------------------------------------- int __thiscall sub_55CFE0(int this, unsigned __int8 a2) { int result; // eax@2 if ( *(_BYTE *)(this + 8124) > a2 ) result = *(_DWORD *)(this + 4 * a2 + 7948); else result = 0; return result; } //----- (0055D010) -------------------------------------------------------- int __thiscall sub_55D010(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 8092); if ( v1 && *(_DWORD *)v1 ) result = **(_DWORD **)v1; else result = 0; return result; } //----- (0055D030) -------------------------------------------------------- bool __thiscall sub_55D030(int this) { int v1; // eax@1 bool result; // al@2 v1 = *(_DWORD *)(this + 8092); if ( v1 ) result = *(_DWORD *)(v1 + 4) == 0; else result = 0; return result; } //----- (0055D050) -------------------------------------------------------- void __thiscall sub_55D050(int this) { int v1; // edi@1 int v2; // ebx@4 int v3; // esi@6 int v4; // eax@8 int v5; // ecx@8 int v6; // eax@8 int v7; // [sp+4h] [bp-8h]@2 signed int v8; // [sp+8h] [bp-4h]@3 v1 = this; if ( *(_DWORD *)(this + 7944) > 0 ) { v7 = *(_DWORD *)(this + 102); if ( v7 ) { v8 = 0; if ( *(_BYTE *)(this + 8124) ) { v2 = this + 7948; do { if ( *(_DWORD *)v2 ) { v3 = (*(int (**)(void))(**(_DWORD **)v2 + 2956))(); if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) != 1 ) { v4 = *(_DWORD *)(v3 + 102); v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 4); if ( v5 != *(_DWORD *)v7 || v6 != *(_DWORD *)(v7 + 4) ) (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3224))( v3, **(_DWORD **)(v1 + 102), *(_DWORD *)(*(_DWORD *)(v1 + 102) + 4), **(_BYTE **)(v1 + 106)); } } } v2 += 4; ++v8; } while ( v8 < *(_BYTE *)(v1 + 8124) ); } } } } //----- (0055D110) -------------------------------------------------------- void __stdcall sub_55D110(int a1, __int16 a2) { void *v2; // eax@2 int v3; // eax@4 if ( a1 ) { v2 = off_849C18; *(_WORD *)off_849C18 = -13302; *((_WORD *)v2 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendHorseHungry : Packet Too Long", 4); } } } //----- (0055D180) -------------------------------------------------------- void __thiscall sub_55D180(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@2 int v4; // ecx@6 int v5; // ecx@8 __int16 v6; // ax@8 v1 = this; v2 = *(_DWORD *)(this + 8092); if ( v2 ) { v3 = *(_DWORD *)(v2 + 8); if ( v3 ) { if ( *(_WORD *)(v3 + 72) ) { if ( *(_DWORD *)(this + 8100) ) { if ( *(_DWORD *)(this + 8096) ) { v4 = *(_DWORD *)(this + 7940); if ( v4 ) { if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)v4 + 3220))() ) { (*(void (__stdcall **)(_DWORD, int, _DWORD))(**(_DWORD **)(v1 + 8100) + 60))( *(_DWORD *)(v1 + 8096), -*(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 8092) + 8) + 72), *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 8092) + 8) + 66)); v5 = *(_DWORD *)(v1 + 8100); *(_DWORD *)(v1 + 8088) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 8092) + 8) + 70) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 8092) + 8) + 70) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v6 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v5 + 64))(*(_DWORD *)(v1 + 8096)); sub_55D110(*(_DWORD *)(v1 + 7948), v6); } } } } } } } } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055D260) -------------------------------------------------------- int __thiscall sub_55D260(int this) { int result; // eax@1 int v2; // edx@1 result = 0; *(_DWORD *)(this + 7940) = 0; *(_DWORD *)(this + 7944) = 0; *(_DWORD *)(this + 7988) = 0; *(_DWORD *)(this + 7936) = -1; *(_DWORD *)(this + 7948) = 0; *(_DWORD *)(this + 7992) = -1; *(_DWORD *)(this + 7996) = 0; *(_DWORD *)(this + 7952) = 0; *(_DWORD *)(this + 8000) = -1; *(_DWORD *)(this + 8004) = 0; *(_DWORD *)(this + 7956) = 0; *(_DWORD *)(this + 8008) = -1; *(_DWORD *)(this + 8012) = 0; *(_DWORD *)(this + 7960) = 0; *(_DWORD *)(this + 8016) = -1; *(_DWORD *)(this + 8020) = 0; *(_DWORD *)(this + 7964) = 0; *(_DWORD *)(this + 8024) = -1; *(_DWORD *)(this + 8028) = 0; *(_DWORD *)(this + 7968) = 0; *(_DWORD *)(this + 8032) = -1; *(_DWORD *)(this + 8036) = 0; *(_DWORD *)(this + 7972) = 0; *(_DWORD *)(this + 8040) = -1; *(_DWORD *)(this + 8044) = 0; *(_DWORD *)(this + 7976) = 0; *(_DWORD *)(this + 8048) = -1; *(_DWORD *)(this + 8052) = 0; *(_DWORD *)(this + 7980) = 0; *(_DWORD *)(this + 8056) = -1; *(_DWORD *)(this + 8060) = 0; *(_DWORD *)(this + 7984) = 0; *(_DWORD *)(this + 8064) = -1; *(_DWORD *)(this + 8068) = 0; v2 = *(_DWORD *)(this + 8288); *(_BYTE *)(this + 8124) = 0; *(_DWORD *)(this + 8088) = 0; *(_DWORD *)(this + 8092) = 0; *(_DWORD *)(this + 8096) = 0; *(_DWORD *)(this + 8100) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(this + 8104) = 0; return result; } //----- (0055D360) -------------------------------------------------------- void __thiscall sub_55D360(int this) { int v1; // esi@1 signed int v2; // ebx@2 int v3; // edi@3 int v4; // eax@6 v1 = this; if ( *(_DWORD *)(this + 7944) > 0 ) { v2 = 0; if ( *(_BYTE *)(this + 8124) ) { v3 = this + 7948; do { if ( *(_DWORD *)v3 && (unsigned __int8)(*(int (**)(void))(**(_DWORD **)v3 + 768))() == 1 ) { *(_DWORD *)v3 = 0; v4 = *(_DWORD *)(v1 + 8283); if ( v4 ) { if ( (unsigned __int8)v2 < 0xAu ) *(_WORD *)(v4 + 2 * (unsigned __int8)v2 + 119) = -1; } --*(_DWORD *)(v1 + 7944); } ++v2; v3 += 4; } while ( v2 < *(_BYTE *)(v1 + 8124) ); } } } //----- (0055D3E0) -------------------------------------------------------- char __stdcall sub_55D3E0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { return 0; } //----- (0055D3F0) -------------------------------------------------------- char __thiscall sub_55D3F0(int this, int a2, signed int a3) { int v3; // esi@1 int v4; // edi@1 void *v6; // ebx@12 int v7; // eax@14 int v8; // ST04_4@15 int v9; // eax@15 int v10; // ecx@16 __int16 v11; // ax@18 char v12; // [sp+10h] [bp-18h]@15 int v13; // [sp+24h] [bp-4h]@15 v3 = this; v4 = a2; if ( !a2 ) { sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_GetOn : Passenger null", a2); return 0; } if ( !*(_DWORD *)(this + 8092) ) { (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 776))(a2); return 0; } if ( *(_BYTE *)(this + 8124) <= a3 || *(_DWORD *)(this + 4 * a3 + 7948) ) goto LABEL_6; if ( *(_DWORD *)(this + 8 * a3 + 7992) != -1 ) { if ( *(_DWORD *)(this + 8 * a3 + 7992) != (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2) ) { LABEL_6: (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 776))(a2); return 0; } *(_DWORD *)(v3 + 8 * a3 + 7992) = -1; *(_DWORD *)(v3 + 8 * a3 + 7996) = 0; --*(_DWORD *)(v3 + 7988); } *(_DWORD *)(v3 + 4 * a3 + 7948) = a2; sub_55C920(v3 + 8125, a3, *(_WORD *)(a2 + 4)); ++*(_DWORD *)(v3 + 7944); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 2632))(a2); LOBYTE(a2) = **(_BYTE **)(v3 + 106); (*(void (__thiscall **)(int, _DWORD, _DWORD, int))(*(_DWORD *)v4 + 3224))( v4, **(_DWORD **)(v3 + 102), *(_DWORD *)(*(_DWORD *)(v3 + 102) + 4), a2); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 3192))(v4, v3); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3200))(v4, a3); v6 = off_849C18; *(_WORD *)off_849C18 = -13310; *((_WORD *)v6 + 1) = *(_WORD *)(v3 + 4); *((_BYTE *)v6 + 4) = a3; *((_BYTE *)v6 + 5) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3324))(v3); if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_GetOn : Packet Too Long", 6); } *(_WORD *)v6 = -13308; *((_WORD *)v6 + 1) = *(_WORD *)(v4 + 4); *((_WORD *)v6 + 2) = *(_WORD *)(v3 + 4); *((_BYTE *)v6 + 6) = a3; *((_BYTE *)v6 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3324))(v3); sub_4287B0(&v12, &off_849C18, 8); v8 = *(_DWORD *)(v3 + 102); v13 = 0; v9 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v9, v8, 0, 0, (int)&v12, 0, 65535); if ( *(_DWORD *)(*(_DWORD *)(v3 + 8092) + 8) ) { v10 = *(_DWORD *)(v3 + 8100); if ( v10 ) { if ( *(_DWORD *)(v3 + 8096) ) { v11 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v10 + 64))(*(_DWORD *)(v3 + 8096)); sub_55D110(v4, v11); } } } v13 = -1; sub_428A70(&v12); return 1; } //----- (0055D690) -------------------------------------------------------- char __thiscall sub_55D690(int this, int a2, signed int a3) { int v3; // edi@1 char result; // al@4 int v5; // ecx@7 void *v6; // eax@9 int v7; // ST04_4@9 int v8; // eax@9 char v9; // [sp+Ch] [bp-18h]@9 int v10; // [sp+20h] [bp-4h]@9 v3 = this; if ( !a2 ) return 0; if ( !*(_DWORD *)(this + 8092) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a2 + 776))(a2, 51, 7, 12419); return 0; } if ( *(_BYTE *)(this + 8124) > a3 && (v5 = *(_DWORD *)(this + 4 * a3 + 7948)) != 0 && *(_WORD *)(v5 + 4) == *(_WORD *)(a2 + 4) ) { *(_DWORD *)(v3 + 4 * a3 + 7948) = 0; sub_55C920(v3 + 8125, a3, -1); --*(_DWORD *)(v3 + 7944); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 2632))(a2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 3192))(a2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 3200))(a2); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 3404))(a2); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)a2 + 772))(a2, 51, 6); v6 = off_849C18; *(_WORD *)off_849C18 = -13304; *((_WORD *)v6 + 1) = *(_WORD *)(a2 + 4); sub_4287B0(&v9, &off_849C18, 4); v7 = *(_DWORD *)(v3 + 102); v10 = 0; v8 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v8, v7, 0, 0, (int)&v9, 0, 65535); v10 = -1; sub_428A70(&v9); result = 1; } else { (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 776))(a2); result = 0; } return result; } //----- (0055D830) -------------------------------------------------------- FILE *__thiscall sub_55D830(int this, int a2) { int v2; // ebx@1 FILE *result; // eax@1 signed int v4; // edi@3 int v5; // esi@4 v2 = this; result = *(FILE **)(this + 7944); if ( (signed int)result > 0 ) { v4 = 0; if ( *(_BYTE *)(this + 8124) ) { v5 = this + 7948; do { if ( *(_DWORD *)v5 ) result = (FILE *)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)v5 + 3180))(a2); ++v4; v5 += 4; } while ( v4 < *(_BYTE *)(v2 + 8124) ); } } else { result = sub_639100( &unk_86DDD8, (int)"ShineMover::so_smv_GetOffAll : Passenger count error", *(_DWORD *)(this + 7944)); } return result; } //----- (0055D8A0) -------------------------------------------------------- signed int __stdcall sub_55D8A0(int a1) { return 1793; } //----- (0055D8B0) -------------------------------------------------------- signed int __thiscall sub_55D8B0(int this, __int16 a2) { int v2; // esi@1 signed int result; // eax@2 int v4; // eax@3 int v5; // eax@4 int v6; // eax@9 int v7; // ecx@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 v2 = this; if ( a2 != -1 && (v4 = *(_DWORD *)(this + 8092)) != 0 && (v5 = *(_DWORD *)(v4 + 8)) != 0 && (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v5 + 32)) == a2 ) { if ( *(_DWORD *)(v2 + 8100) && *(_DWORD *)(v2 + 8096) ) { v6 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 8100) + 64))(*(_DWORD *)(v2 + 8096)); v7 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8092) + 8) + 66); v9 = __OFSUB__(v6, v7); v8 = v6 - v7 < 0; result = 4297; if ( v8 ^ v9 ) result = 1792; } else { result = 4297; } } else { result = 4295; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (0055D950) -------------------------------------------------------- char __thiscall sub_55D950(void *this) { void *v1; // esi@1 int v2; // edi@1 int v4; // eax@3 __int16 v5; // ax@10 signed int v6; // [sp-4h] [bp-Ch]@4 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 3248))(); if ( !v2 ) { sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_Feeding : Master null", 0); return 0; } v4 = *((_DWORD *)v1 + 2023); if ( !v4 || !*(_DWORD *)(v4 + 8) ) { v6 = 12435; LABEL_5: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 51, 9, v6); return 0; } if ( !*((_DWORD *)v1 + 2025) || !*((_DWORD *)v1 + 2024) ) { v6 = 12438; goto LABEL_5; } (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)v1 + 2025) + 60))( *((_DWORD *)v1 + 2024), *(_WORD *)(*(_DWORD *)(v4 + 8) + 64), *(_WORD *)(*(_DWORD *)(v4 + 8) + 66)); v5 = (*(int (__stdcall **)(_DWORD))(**((_DWORD **)v1 + 2025) + 64))(*((_DWORD *)v1 + 2024)); sub_55D110(v2, v5); return 1; } //----- (0055DA10) -------------------------------------------------------- FILE *__thiscall sub_55DA10(int this, int a2) { int v2; // ebx@1 FILE *result; // eax@2 signed int v4; // edi@3 int v5; // esi@4 v2 = this; if ( a2 ) { v4 = 0; if ( *(_BYTE *)(this + 8124) ) { v5 = this + 7948; do { if ( *(_DWORD *)v5 ) result = (FILE *)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)v5 + 1924))(a2); ++v4; v5 += 4; } while ( v4 < *(_BYTE *)(v2 + 8124) ); } } else { result = sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_PassengerNotice : Message data null", 0); } return result; } //----- (0055DA70) -------------------------------------------------------- char __stdcall sub_55DA70(int a1) { return 10; } //----- (0055DA80) -------------------------------------------------------- char __thiscall sub_55DA80(int this, int a2) { int v2; // eax@2 int v3; // edx@3 int v4; // ecx@4 if ( *(_DWORD *)(this + 7988) > 0 ) { v3 = *(_BYTE *)(this + 8124); v2 = 0; if ( v3 <= 0 ) { LABEL_7: LOBYTE(v2) = 10; } else { v4 = this + 7992; while ( *(_DWORD *)v4 != a2 ) { ++v2; v4 += 8; if ( v2 >= v3 ) goto LABEL_7; } } } else { LOBYTE(v2) = 10; } return v2; } //----- (0055DAD0) -------------------------------------------------------- char __stdcall sub_55DAD0(int a1) { int v1; // eax@1 int v2; // eax@2 v1 = sub_401310(&unk_877138, a1); if ( v1 ) { v2 = *(_DWORD *)v1; if ( v2 ) { if ( (unsigned int)(*(_DWORD *)(v2 + 244) - 6) <= 1 ) return 1; switch ( *(_DWORD *)(v2 + 248) ) { case 1: case 3: case 8: case 0xB: return 1; default: return 0; } } } return 0; } //----- (0055DB40) -------------------------------------------------------- char __thiscall sub_55DB40(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = (int)this; v3 = sub_401310(&unk_877138, a2); if ( v3 ) { v3 = *(_DWORD *)v3; if ( v3 ) { if ( (unsigned int)(*(_DWORD *)(v3 + 244) - 6) <= 1 ) { LABEL_5: LOBYTE(v3) = sub_40A820((void *)(v2 + 432), v2, a2); } else { v3 = *(_DWORD *)(v3 + 248) - 1; switch ( v3 ) { case 0: case 2: case 7: case 10: goto LABEL_5; default: return v3; } } } } return v3; } //----- (0055DBB0) -------------------------------------------------------- char __thiscall sub_55DBB0(int this) { int v1; // eax@1 char result; // al@2 v1 = *(_DWORD *)(this + 8283); if ( v1 ) result = *(_BYTE *)(v1 + 118); else result = 0; return result; } //----- (0055DBD0) -------------------------------------------------------- int __thiscall sub_55DBD0(int this, char a2) { int result; // eax@1 result = *(_DWORD *)(this + 8283); if ( result ) *(_BYTE *)(result + 118) = a2; return result; } //----- (0055DBF0) -------------------------------------------------------- int __thiscall sub_55DBF0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@2 int v4; // eax@4 int v5; // eax@5 int v6; // edi@7 int v7; // eax@8 v1 = this; sub_557270(this); *(_DWORD *)v1 = &off_6E783C; unknown_libname_3(v1 + 8108); sub_55C8B0(v1 + 8125); *(_DWORD *)(v1 + 8300) = 0; *(_DWORD *)(v1 + 8296) = 0; *(_DWORD *)(v1 + 8292) = 0; v2 = *(_DWORD *)(v1 + 8283); if ( v2 ) v3 = v2 + 10; else v3 = 0; *(_DWORD *)(v1 + 102) = v3; v4 = *(_DWORD *)(v1 + 8283); if ( v4 ) v5 = v4 + 18; else v5 = 0; *(_DWORD *)(v1 + 106) = v5; v6 = *(_DWORD *)(v1 + 8283); if ( v6 ) v7 = v6 + 6; else v7 = 0; *(_DWORD *)(v1 + 8288) = v7; return v1; } // 625C30: using guessed type int __thiscall unknown_libname_3(_DWORD); // 6E783C: using guessed type int (*off_6E783C)(); //----- (0055DCB0) -------------------------------------------------------- char __thiscall sub_55DCB0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11) { int v11; // ebx@1 void *v12; // esi@1 char result; // al@3 bool v14; // zf@4 int v15; // [sp+18h] [bp+10h]@4 v11 = a4; v12 = this; if ( (unsigned int)(a4 - 1) > 0x26 ) { sub_639100(&unk_86DDD8, (int)"so_smv_IsMoverSetAbstate : Invalid strength num", 0); result = 0; } else { if ( a5 ) { v14 = *(_DWORD *)(a5 + 36 * a4 + 12) == 0; v15 = a5 + 36 * a4 + 12; if ( v14 ) { sub_639100(&unk_86DDD8, (int)"so_smv_IsMoverSetAbstate : Subabstate null", 0); result = 0; } else { if ( sub_55DAD0(a3) && (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 1592))( v12, a2, a3, v11, a5, a6, a7, a8, a9, a10, a11) == 1 && (sub_401900(v12, a3), *(_DWORD *)v15) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 1008))( v12, a3, *(_DWORD *)(*(_DWORD *)v15 + 43), 1); sub_4055D0(v12, a3, *(_DWORD *)(*(_DWORD *)v15 + 43), v11); result = 1; } else { result = 0; } } } else { sub_639100(&unk_86DDD8, (int)"so_smv_IsMoverSetAbstate : Abstate null", 0); result = 0; } } return result; } //----- (0055DDC0) -------------------------------------------------------- void __cdecl sub_55DDC0(int a1, int a2) { int v2; // ecx@1 int v3; // eax@2 v2 = a2; if ( a2 ) { v3 = a1; do { if ( v3 ) { *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; } v3 += 8; --v2; } while ( v2 ); } } //----- (0055DDF0) -------------------------------------------------------- char __thiscall sub_55DDF0(void *this, int a2, int a3, int a4, signed int a5, unsigned int a6, int a7, int a8, int a9) { void *v9; // ebx@1 unsigned int v10; // eax@1 char result; // al@2 signed __int16 v12; // ax@5 int v13; // eax@6 int v14; // eax@7 int v15; // ecx@9 int v16; // eax@9 int v17; // eax@11 void (__thiscall *v18)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@12 int v19; // ecx@12 void (__thiscall *v20)(_DWORD, _DWORD); // edx@12 void *v21; // [sp-10h] [bp-34h]@9 void *v22; // [sp-Ch] [bp-30h]@9 int v23; // [sp-8h] [bp-2Ch]@9 int v24; // [sp-4h] [bp-28h]@9 int v25; // [sp+0h] [bp-24h]@12 int v26; // [sp+4h] [bp-20h]@12 int v27; // [sp+8h] [bp-1Ch]@12 int v28; // [sp+Ch] [bp-18h]@12 int (__stdcall **v29)(int, int); // [sp+10h] [bp-14h]@11 int v30; // [sp+14h] [bp-10h]@11 int v31; // [sp+20h] [bp-4h]@11 v9 = this; v10 = sub_4BE830((int)&unk_13359F08, a6); *((_DWORD *)v9 + 2023) = v10; if ( !v10 || !*(_DWORD *)v10 ) goto LABEL_15; *((_BYTE *)v9 + 8124) = *(_BYTE *)(*(_DWORD *)v10 + 50); if ( *(_DWORD *)(v10 + 4) ) { **((_DWORD **)v9 + 2072) = a7; v12 = sub_641810((int)&dword_1508B308, *(_DWORD *)(*((_DWORD *)v9 + 2023) + 4) + 61); *((_DWORD *)v9 + 2026) = sub_6417E0((int)&dword_1508B308, v12); } sub_43BE30((int)((char *)v9 + 4120)); sub_55C950((int)((char *)v9 + 4120), *(_DWORD *)(*((_DWORD *)v9 + 2023) + 4)); sub_4C8F40((char *)v9 + 4120); v13 = *(_DWORD *)(*((_DWORD *)v9 + 2023) + 8); if ( v13 ) { v14 = *(_WORD *)(v13 + 70); if ( (_WORD)v14 ) *((_DWORD *)v9 + 2022) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * v14 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v14 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } sub_45FAE0((int)((char *)v9 + 8108), 0); sub_5C0AA0((int)&v21, *((_DWORD *)v9 + 2023) + 16); sub_448960((char *)v9 + 8108, v21, v22, v23, v24); **((_BYTE **)v9 + 957) = 1; *(_DWORD *)((char *)v9 + 8082) = 0; v15 = *(_DWORD *)((char *)v9 + 102); *((_DWORD *)v9 + 2018) = *(_DWORD *)v15; *((_DWORD *)v9 + 2019) = *(_DWORD *)(v15 + 4); v16 = a5 / 2; if ( a5 / 2 < 0 ) LOBYTE(v16) = v16 - 76; *(_DWORD *)v15 = a3; *(_DWORD *)(*(_DWORD *)((char *)v9 + 102) + 4) = a4; **(_BYTE **)((char *)v9 + 106) = v16; *((_DWORD *)v9 + 2073) = *(_DWORD *)a2; *((_DWORD *)v9 + 2074) = *(_DWORD *)(a2 + 4); *((_DWORD *)v9 + 2075) = *(_DWORD *)(a2 + 8); memcpy((void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1184))(v9), &unk_13244DF0, 0x63u); v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v9 + 1324))(v9); v29 = &off_6A0504; v30 = v17 + 3364; v31 = 0; sub_43C470(v17 + 3364, (int)&v29); v31 = -1; v29 = &off_6A04FC; if ( !sub_465790(v9, 0) ) { **(_DWORD **)((char *)v9 + 118) = 0; *(_BYTE *)(*(_DWORD *)((char *)v9 + 118) + 4) = 0; *((_WORD *)v9 + 3952) = 2; *((_DWORD *)v9 + 1028) = 0; sub_43C0D0((int)((char *)v9 + 3848)); *((_DWORD *)v9 + 92) = 0; sub_43F0A0((int)((char *)v9 + 368)); *((_BYTE *)v9 + 7888) &= 0xFEu; *((_WORD *)v9 + 166) = 0; *((_DWORD *)v9 + 1911) = 0; *((_DWORD *)v9 + 958) = dword_14D129E8; *((_DWORD *)v9 + 959) = dword_14D129E8; v18 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 864); *((_BYTE *)v9 + 7636) = 0; *((_DWORD *)v9 + 90) = -1; *((_DWORD *)v9 + 1910) = 0; v18(v9, v25, v26, v27, v28, v29); v19 = *((_DWORD *)v9 + 1029); *((_DWORD *)v9 + 1164) = 0; *((_DWORD *)v9 + 1906) = (*(int (__cdecl **)(int))(*(_DWORD *)v19 + 60))(v30); *((_WORD *)v9 + 3814) = 0; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v9 + 3776))(v9, 65535); v20 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 3056); *((_BYTE *)v9 + 7888) &= 0xE5u; v29 = 0; *((_DWORD *)v9 + 89) = 0; v20(v9, v29); sub_548CF0((int)v9, a8, a9); sub_441980((int)v9); result = 1; } else { LABEL_15: result = 0; } return result; } // 6A04FC: using guessed type int (__stdcall *off_6A04FC)(int, int); // 6A0504: using guessed type int (__stdcall *off_6A0504)(int, int); // 14D129E8: using guessed type int dword_14D129E8; // 1508B308: using guessed type int dword_1508B308; //----- (0055E0F0) -------------------------------------------------------- void *__thiscall sub_55E0F0(void *this, __int16 a2) { size_t v2; // ST08_4@1 void *result; // eax@1 char v4; // [sp+0h] [bp-Ch]@1 __int16 v5; // [sp+8h] [bp-4h]@1 v2 = *((_DWORD *)this + 3072); v5 = a2; result = bsearch(&v4, this, v2, 0xCu, (int (__cdecl *)(const void *, const void *))sub_4C48B0); if ( result ) result = *(void **)result; return result; } //----- (0055E130) -------------------------------------------------------- unsigned int __thiscall sub_55E130(int this, unsigned int a2) { unsigned int result; // eax@1 result = a2; if ( a2 <= 0x3E8 ) result = 1000; *(_WORD *)(this + 160776) = result; return result; } //----- (0055E150) -------------------------------------------------------- int __thiscall sub_55E150(int this, int a2) { *(_DWORD *)(this + 4196) = a2; return sub_4C8F40((void *)(this + 4120)); } //----- (0055E170) -------------------------------------------------------- int __thiscall sub_55E170(int this) { int result; // eax@1 int v2; // ebx@1 void *v3; // ecx@1 int v4; // esi@3 int (__thiscall *v5)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@3 char v6; // [sp+4h] [bp-68h]@3 char v7; // [sp+64h] [bp-8h]@3 unsigned int v8; // [sp+68h] [bp-4h]@1 int v9; // [sp+6Ch] [bp+0h]@1 result = (unsigned int)&v9 ^ __security_cookie; v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; v3 = *(void **)(this + 122); if ( v3 ) { result = sub_462930(v3); if ( result ) { v4 = sub_462930(*(void **)(v2 + 122)); v5 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1536); memcpy(&v6, (const void *)v4, 0x60u); v7 = *(_BYTE *)(v4 + 96); result = v5(v2, &v6, 6, 9, 10); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0055E1E0) -------------------------------------------------------- void __thiscall sub_55E1E0(int this) { if ( *(_DWORD *)(this + 161380) ) *(_DWORD *)(*(_DWORD *)(this + 161380) + 800) = (***(int (__stdcall ****)(_DWORD))(*(_DWORD *)(this + 161380) + 800))(*(_DWORD *)(this + 161380)); } //----- (0055E210) -------------------------------------------------------- char __thiscall sub_55E210(int this) { return *(_BYTE *)(this + 160921); } //----- (0055E220) -------------------------------------------------------- char __thiscall sub_55E220(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 160921) = a2; return result; } //----- (0055E230) -------------------------------------------------------- bool __thiscall sub_55E230(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 160808); return v1 == 2 || v1 == 3; } //----- (0055E250) -------------------------------------------------------- int __thiscall sub_55E250(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 void *v5; // eax@4 int v6; // ST04_4@4 int v7; // eax@4 char v9; // [sp+Ch] [bp-18h]@4 int v10; // [sp+20h] [bp-4h]@4 v2 = this; v3 = off_849C18; *(_DWORD *)off_849C18 = 503320765; *((_BYTE *)v3 + 4) = a2; if ( sub_4C81E0(&off_849C18, 5) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SetAutoPick : Packet Too Long", 5); } v5 = off_849C18; *(_WORD *)off_849C18 = 4286; *((_WORD *)v5 + 1) = *((_WORD *)v2 + 2); *((_BYTE *)v5 + 4) = a2; sub_4287B0(&v9, &off_849C18, 5); v6 = *(_DWORD *)((char *)v2 + 102); v10 = 0; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v2, v7, v6, 0, 0, (int)&v9, 0, 65535); v10 = -1; return sub_428A70(&v9); } //----- (0055E340) -------------------------------------------------------- char __thiscall sub_55E340(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 23825) ^= (*(_BYTE *)(this + 23825) ^ 8 * a2) & 8; *(_BYTE *)(*(_DWORD *)(this + 32650) + 196) = a2; return result; } //----- (0055E370) -------------------------------------------------------- char __thiscall sub_55E370(int this) { return (*(_BYTE *)(this + 23825) >> 3) & 1; } //----- (0055E380) -------------------------------------------------------- bool __thiscall sub_55E380(int this, int a2) { int v2; // eax@1 __int16 v3; // ax@1 bool result; // al@2 v2 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 32816))(this + 32816, a2); v3 = sub_63FD50(v2); if ( -1 == v3 ) result = 0; else result = sub_4A18B0((int)&unk_133597B0, v3) == 1; return result; } //----- (0055E3D0) -------------------------------------------------------- char __thiscall sub_55E3D0(void *this) { int v1; // eax@1 int v2; // eax@2 char result; // al@4 v1 = *(_DWORD *)((char *)this + 122); if ( !v1 ) return 0; v2 = *(_DWORD *)(v1 + 12); if ( !*(_BYTE *)(v2 + 108) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7746); return 0; } if ( *(_BYTE *)(v2 + 109) == 1 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7745); result = 0; } else { result = 1; } return result; } //----- (0055E420) -------------------------------------------------------- char __thiscall sub_55E420(void *this) { int v1; // eax@1 int v2; // eax@2 char result; // al@4 v1 = *(_DWORD *)((char *)this + 122); if ( !v1 ) return 0; v2 = *(_DWORD *)(v1 + 12); if ( !*(_BYTE *)(v2 + 107) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7747); return 0; } if ( *(_BYTE *)(v2 + 109) == 1 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7745); result = 0; } else { result = 1; } return result; } //----- (0055E470) -------------------------------------------------------- int __thiscall sub_55E470(int this) { return *(_DWORD *)(this + 155396); } //----- (0055E480) -------------------------------------------------------- int __thiscall sub_55E480(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 7940) ) result = (*(int (**)(void))(**(_DWORD **)(this + 7940) + 2692))(); else result = 0; return result; } //----- (0055E4A0) -------------------------------------------------------- char __thiscall sub_55E4A0(int this, int a2) { unsigned int v2; // eax@1 int v3; // esi@1 int v4; // eax@2 int v5; // ecx@5 int v6; // eax@9 int v7; // eax@9 int v8; // edi@10 signed __int16 v9; // ax@10 int v10; // edi@10 int v11; // eax@10 char v13; // [sp+8h] [bp-80h]@9 char v14; // [sp+14h] [bp-74h]@9 char v15; // [sp+20h] [bp-68h]@7 unsigned int v16; // [sp+84h] [bp-4h]@1 int v17; // [sp+88h] [bp+0h]@1 v2 = (unsigned int)&v17 ^ __security_cookie; v16 = (unsigned int)&v17 ^ __security_cookie; v3 = this; if ( *(_DWORD *)(this + 155396) != a2 ) { v4 = *(_DWORD *)this; *(_DWORD *)(this + 155396) = a2; if ( a2 ) { (*(void (__stdcall **)(_DWORD))(v4 + 1368))(*(_WORD *)(a2 + 4)); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); sub_63A470((void *)a2, (int)&v14, v6); v7 = sub_639C10((void *)a2, (int)&v13); LOBYTE(v2) = sub_639F40((int)&v14, v7); if ( (_BYTE)v2 ) { v8 = *(_DWORD *)v3; v9 = sub_639AC0((int)&v14); (*(void (__thiscall **)(int, _DWORD))(v8 + 1396))(v3, (unsigned __int16)v9); v10 = *(_DWORD *)v3; v11 = sub_639F80((int)&v14); LOBYTE(v2) = (*(int (__thiscall **)(int, int))(v10 + 1908))(v3, v11); } } else { LOWORD(v2) = (*(int (**)(void))(v4 + 1360))(); if ( -1 != (_WORD)v2 ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1396))(v3, 65535); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1368))(v3, 65535); LOBYTE(v2) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3); if ( (_BYTE)v2 ) { v5 = *(_DWORD *)(v3 + 122); if ( v5 ) { if ( *(_BYTE *)(*(_DWORD *)(v5 + 12) + 54) == 3 ) { LOBYTE(v2) = sub_462AC0((void *)v5, (int)&v15); if ( (_BYTE)v2 ) LOBYTE(v2) = (*(int (__thiscall **)(int, char *, _DWORD))(*(_DWORD *)v3 + 1020))(v3, &v15, 0); } } } } } } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0055E5F0) -------------------------------------------------------- char __thiscall sub_55E5F0(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@2 v3 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 2692))() ) { *(_DWORD *)a2 = 3; *(_DWORD *)a3 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2692))(v3) + 4); result = 1; } else { if ( -1 == (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1360))(v3) ) { result = 0; } else { *(_DWORD *)a2 = 0; *(_DWORD *)a3 = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1360))(v3); result = 1; } } return result; } //----- (0055E670) -------------------------------------------------------- FILE *__thiscall sub_55E670(void *this, __int16 a2) { void *v2; // eax@1 void *v3; // esi@1 FILE *result; // eax@2 int v5; // eax@3 v2 = off_849C18; v3 = this; *(_WORD *)off_849C18 = 29937; *((_WORD *)v2 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { result = sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_PK_MODE_TOGGLE_REQ : Packet Too Long", 4); } return result; } //----- (0055E6E0) -------------------------------------------------------- char __thiscall sub_55E6E0(void *this) { void *v1; // esi@1 char result; // al@3 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1156))() == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1156))(v1); if ( result == 6 ) { if ( sub_45CDE0((int)v1) == 2 ) result = sub_45D1C0((int)v1, (int)v1, 0); else result = sub_45F070(v1); } return result; } //----- (0055E730) -------------------------------------------------------- char __thiscall sub_55E730(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 = sub_587540((int)&dword_13258298); if ( *((_DWORD *)v1 + 40369) || (v3 = malloc(4 * (unsigned __int8)v2), (*((_DWORD *)v1 + 40369) = v3) != 0) ) { for ( i = 0; i < (unsigned __int8)v2; ++i ) *(_DWORD *)(*((_DWORD *)v1 + 40369) + 4 * i) = 0; *((_DWORD *)v1 + 40370) = 0; *((_DWORD *)v1 + 40371) = 0; *((_DWORD *)v1 + 40372) = 0; *((_DWORD *)v1 + 40373) = 0; result = 1; } else { result = 0; } return result; } // 13258298: using guessed type int dword_13258298; //----- (0055E7A0) -------------------------------------------------------- FILE *__thiscall sub_55E7A0(int this) { int v1; // eax@1 int v2; // esi@1 void *v3; // edi@1 unsigned int v4; // ecx@1 unsigned int v5; // ecx@2 unsigned int v6; // edx@3 FILE *result; // eax@7 int v8; // eax@8 v1 = dword_14D129E8; v2 = this; v3 = off_849C18; *(_WORD *)off_849C18 = 2120; v4 = *(_DWORD *)(this + 161484); if ( v4 <= v1 ) { v6 = 0; } else { v5 = v4 - v1; if ( v5 >= 0xA ) v6 = v5 / 0xA; else v6 = 1; } *(_DWORD *)((char *)v3 + 2) = v6; if ( sub_4C81E0(&off_849C18, 6) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SpamSendBlockTimeToClient : Packet Too Long", 6); } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055E830) -------------------------------------------------------- char *__thiscall sub_55E830(void *this) { return (char *)this + 161208; } //----- (0055E840) -------------------------------------------------------- char __thiscall sub_55E840(void *this, __int16 a2, unsigned __int16 a3) { int v3; // esi@1 void *v4; // eax@2 int v5; // eax@2 v3 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { v4 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3); v5 = (unsigned __int8)sub_5CEAA0(v4, v3, a2, a3); } else { LOBYTE(v5) = 0; } return v5; } //----- (0055E880) -------------------------------------------------------- char __thiscall sub_55E880(void *this, __int16 a2, __int16 a3) { int v3; // esi@1 int v4; // eax@2 int v5; // eax@2 v3 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3); v5 = (unsigned __int8)sub_5CE890(v4, v3, a2, a3); } else { LOBYTE(v5) = 0; } return v5; } //----- (0055E8C0) -------------------------------------------------------- int __thiscall sub_55E8C0(int this, int a2, int a3) { int result; // eax@1 result = a2 + 10 * a3; *(_DWORD *)(this + 161496) = result; return result; } //----- (0055E8E0) -------------------------------------------------------- bool __thiscall sub_55E8E0(int this) { return *(_DWORD *)(this + 161504) < (unsigned int)dword_14D129E8; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055E900) -------------------------------------------------------- int __thiscall sub_55E900(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161504) = a2; return result; } //----- (0055E910) -------------------------------------------------------- signed int __thiscall sub_55E910(void *this) { void *v1; // esi@1 signed int result; // eax@2 signed int v3; // ebx@3 int v4; // edi@3 int i; // esi@3 char v6; // [sp+10h] [bp-28h]@1 char v7; // [sp+20h] [bp-18h]@1 int v8; // [sp+34h] [bp-4h]@1 v1 = this; sub_43BB20((int)&v6, (int)((char *)this + 36484), (int)((char *)this + 160312)); v8 = 0; sub_43BC00((int)&v7, 9, (int)&v6, (int)((char *)v1 + 58688)); LOBYTE(v8) = 1; if ( sub_486D40(&v7) ) { v3 = 1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1164))(v1); for ( i = 0; i < v4; ++v3 ) { if ( !sub_486DA0((void **)&v7) ) break; ++i; } LOBYTE(v8) = 0; nullsub_2(&v7); v8 = -1; sub_43BB10(&v6); result = v3; } else { LOBYTE(v8) = 0; nullsub_2(&v7); v8 = -1; sub_43BB10(&v6); result = 0; } return result; } //----- (0055EA10) -------------------------------------------------------- char __thiscall sub_55EA10(int this, char a2) { char result; // al@1 result = a2; *(_BYTE *)(this + 161500) = a2; return result; } //----- (0055EA20) -------------------------------------------------------- int __thiscall sub_55EA20(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161516) = a2; return result; } //----- (0055EA30) -------------------------------------------------------- bool __thiscall sub_55EA30(int this) { return *(_DWORD *)(this + 161516) != 0; } //----- (0055EA40) -------------------------------------------------------- void __thiscall sub_55EA40(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@2 int v4; // eax@4 v2 = this; if ( a2 ) { sub_4C1BA0(this, 1); *((_WORD *)v2 + 42250) = *(_WORD *)(a2 + 4); *((_WORD *)v2 + 42251) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1800))(a2); v3 = off_849C18; *(_WORD *)off_849C18 = 8220; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 42251); if ( sub_4C81E0(&off_849C18, 4) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SendMenuOpenReq : Packet Too Long", 4); } } } //----- (0055EAE0) -------------------------------------------------------- int __thiscall sub_55EAE0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161640) = a2; return result; } //----- (0055EAF0) -------------------------------------------------------- int __thiscall sub_55EAF0(int this) { return *(_DWORD *)(this + 161640); } //----- (0055EB00) -------------------------------------------------------- void __thiscall sub_55EB00(void *this, int a2) { int v2; // esi@2 unsigned int i; // ebx@2 unsigned __int16 v4; // ax@8 int v5; // eax@9 unsigned __int16 v6; // ax@11 unsigned __int16 v7; // ax@14 unsigned __int16 v8; // bx@14 int v9; // eax@14 bool v10; // zf@15 int v11; // eax@18 void *v12; // [sp+4h] [bp-4h]@1 v12 = this; if ( !a2 ) return; v2 = a2; for ( i = 0; ; ++i ) { if ( dword_133590AC ) { if ( i < *(_DWORD *)(dword_133590AC + 40) ) { v2 = sub_626BC0((int)&unk_13359078, i); if ( (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v12 + 3336))(*(_DWORD *)v2) != 1 ) continue; } } break; } if ( *(_WORD *)(a2 + 41) == -1 ) { v4 = *(_WORD *)(a2 + 45); if ( v4 != -1 ) { v5 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v4); if ( !v5 ) return; if ( *(_DWORD *)(v5 + 102) == 7 ) { v6 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 4)); if ( *(_BYTE *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, v6) + 122) ) *(_WORD *)(a2 + 41) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 196)); else *(_WORD *)(a2 + 41) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 4)); } goto LABEL_21; } v7 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 4)); v8 = v7; v9 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, v7); if ( !v9 ) return; v10 = *(_BYTE *)(v9 + 122) == 1; *(_WORD *)(a2 + 41) = v8; if ( v10 ) goto LABEL_21; } else { if ( *(_WORD *)(a2 + 45) != -1 ) goto LABEL_21; v11 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(a2 + 41)); if ( !v11 ) return; if ( *(_BYTE *)(v11 + 122) ) goto LABEL_21; } *(_WORD *)(a2 + 45) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 36)); LABEL_21: if ( *(_WORD *)(a2 + 37) == -1 ) *(_WORD *)(a2 + 37) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 100)); if ( *(_WORD *)(a2 + 43) == -1 ) *(_WORD *)(a2 + 43) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 164)); if ( *(_WORD *)(a2 + 47) == -1 ) *(_WORD *)(a2 + 47) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 132)); if ( *(_WORD *)(a2 + 49) == -1 ) *(_WORD *)(a2 + 49) = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v2 + 68)); } // 133590AC: using guessed type int dword_133590AC; // 14D20890: using guessed type int dword_14D20890; //----- (0055ECC0) -------------------------------------------------------- signed int __thiscall sub_55ECC0(void *this, int a2) { int v2; // eax@1 int v3; // eax@1 signed int result; // eax@2 v2 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 72))(v2); switch ( a2 ) { case 0: result = v3 == 1; break; case 1: result = v3 == 11; break; case 2: result = v3 == 6; break; case 3: result = v3 == 16; break; case 4: result = v3 == 21; break; case 5: result = v3 == 26; break; case 6: result = 1; break; default: result = 0; break; } return result; } //----- (0055ED70) -------------------------------------------------------- int __thiscall sub_55ED70(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 3352))(0); result = dword_14D129E8; *((_DWORD *)v1 + 40429) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055ED90) -------------------------------------------------------- char __thiscall sub_55ED90(int this) { char result; // al@2 if ( *(_DWORD *)(this + 161716) + 50 >= (unsigned int)dword_14D129E8 ) { result = 1; } else { *(_DWORD *)(this + 161716) = dword_14D129E8; result = 0; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055EDB0) -------------------------------------------------------- bool __thiscall sub_55EDB0(int this) { return *(_WORD *)(this + 161712) > 0u; } //----- (0055EDC0) -------------------------------------------------------- signed int __thiscall sub_55EDC0(int this, int a2) { signed int result; // eax@2 if ( a2 == 1 ) { result = 144; *(_WORD *)(this + 161712) = 144; } else { *(_WORD *)(this + 161712) = 0; } return result; } //----- (0055EDF0) -------------------------------------------------------- char __stdcall sub_55EDF0(int a1) { char result; // al@6 if ( a1 && *(_DWORD *)a1 && *(_DWORD *)(a1 + 4) && *(_DWORD *)(a1 + 8) ) { switch ( *(_DWORD *)(**(_DWORD **)(a1 + 12) + 118) ) { case 4: result = 0; break; case 7: result = 1; break; case 6: result = 2; break; case 3: result = 3; break; case 5: result = 4; break; case 2: result = 5; break; case 1: result = 6; break; case 0: result = 7; break; default: goto LABEL_14; } } else { LABEL_14: result = -1; } return result; } //----- (0055EE80) -------------------------------------------------------- int __thiscall sub_55EE80(void *this, int a2, int a3) { void *v3; // esi@1 unsigned __int64 v4; // qax@1 unsigned __int8 v5; // al@4 int v6; // esi@4 int v7; // edx@5 v3 = this; LODWORD(v4) = a3; if ( a2 ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1232))() == 5 && ((v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1240))(v3), v6 = *((_DWORD *)v3 + 1029), v5 > 0x96u) ? (v7 = *(_DWORD *)(v6 + 67672)) : (v7 = *(_DWORD *)(v6 + 4 * v5 + 67672)), v7) ) { dword_14D5ADD0 = dword_14D5ADD4 & (dword_14D5ADD0 + 1); v4 = ((unsigned __int16)word_14D52DD0[dword_14D5ADD0] + *(_WORD *)(v7 + 128)) * (signed __int64)a3 / 0x3E8ui64; } else { LODWORD(v4) = a3; } } return v4; } // 14D52DD0: using guessed type __int16 word_14D52DD0[]; // 14D5ADD0: using guessed type int dword_14D5ADD0; // 14D5ADD4: using guessed type int dword_14D5ADD4; //----- (0055EF30) -------------------------------------------------------- int __thiscall sub_55EF30(int this, int a2, int a3) { int result; // eax@1 int v4; // eax@3 int v5; // eax@4 result = a2; if ( a2 ) { if ( a3 != 65535 && (v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 32816))(this + 32816, a2)) != 0 && (v5 = (unsigned __int16)sub_63FD50(v4), (unsigned __int16)v5 != 65535) ) result = v5 == a3; else result = 0; } return result; } //----- (0055EF90) -------------------------------------------------------- char __thiscall sub_55EF90(int this) { return *(_BYTE *)(this + 23825) >> 7; } //----- (0055EFA0) -------------------------------------------------------- char __thiscall sub_55EFA0(int this, char a2) { char result; // al@1 result = (a2 << 7) | *(_BYTE *)(this + 23825) & 0x7F; *(_BYTE *)(this + 23825) = result; return result; } //----- (0055EFC0) -------------------------------------------------------- void __thiscall sub_55EFC0(void *this, unsigned int a2) { void *v2; // esi@1 void *v3; // eax@2 int v4; // eax@4 v2 = this; if ( a2 < 0xF ) { v3 = off_849C18; *(_WORD *)off_849C18 = 8311; *(_DWORD *)((char *)v3 + 2) = a2; if ( sub_4C81E0(&off_849C18, 6) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_EffectMsg : Packet Too Long", 6); } } } //----- (0055F030) -------------------------------------------------------- void __thiscall sub_55F030(void *this, const char *a2) { void *v2; // ebx@1 void *v3; // esi@2 unsigned __int16 v4; // ax@2 int v5; // esi@3 int v6; // eax@5 v2 = this; if ( a2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 8312; v4 = strlen(a2); *((_WORD *)v3 + 1) = v4; if ( v4 <= 0x100u ) { memmove((char *)v3 + 4, a2, v4); v5 = *((_WORD *)v3 + 1) + 4; if ( sub_4C81E0(&off_849C18, v5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_PlaySound : Packet Too Long", v5); } } } } //----- (0055F0D0) -------------------------------------------------------- int __thiscall sub_55F0D0(int this) { return *(_DWORD *)(this + 161720); } //----- (0055F0E0) -------------------------------------------------------- int __thiscall sub_55F0E0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // edi@1 int v5; // edi@1 int result; // eax@1 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 40))(v2); v4 = (signed __int64)((double)((unsigned int)(signed __int64)((double)(unsigned int)(v3 * *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1) + 2644)) / 1000.0) * *((_WORD *)v1 + 80175)) / 1000.0); v5 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1) + 2440) + v4; result = v5 + *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1072))(v1) + 2032); *((_DWORD *)v1 + 40431) = result; return result; } //----- (0055F1C0) -------------------------------------------------------- unsigned int __thiscall sub_55F1C0(int this, int a2) { unsigned int result; // eax@1 *(_DWORD *)(this + 161720) += a2; result = *(_DWORD *)(this + 161724); if ( *(_DWORD *)(this + 161720) > result ) *(_DWORD *)(this + 161720) = result; return result; } //----- (0055F1F0) -------------------------------------------------------- int __thiscall sub_55F1F0(int this, unsigned int a2) { int result; // eax@1 result = *(_DWORD *)(this + 161720); if ( result <= a2 ) { *(_DWORD *)(this + 161720) = 0; } else { result -= a2; *(_DWORD *)(this + 161720) = result; } return result; } //----- (0055F220) -------------------------------------------------------- int __thiscall sub_55F220(int this) { return *(_DWORD *)(this + 161728); } //----- (0055F230) -------------------------------------------------------- int __thiscall sub_55F230(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // edi@1 int result; // eax@1 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 44))(v2); v4 = (signed __int64)((double)(unsigned int)(v3 * *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1) + 2648)) / 1000.0); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1072))(v1); *((_DWORD *)v1 + 40432) = v4 + *(_DWORD *)(result + 2444); return result; } //----- (0055F2C0) -------------------------------------------------------- int __thiscall sub_55F2C0(void *this) { int v1; // eax@1 v1 = (*(int (**)(void))(*(_DWORD *)this + 1180))(); return (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 48))(v1); } //----- (0055F2E0) -------------------------------------------------------- char __thiscall sub_55F2E0(int this) { unsigned int v1; // eax@1 char result; // al@2 v1 = *(_DWORD *)(this + 161732); if ( dword_14D129E8 <= v1 ) { result = 0; } else { *(_DWORD *)(this + 161732) = v1 + *(_DWORD *)(this + 161736); result = 1; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055F310) -------------------------------------------------------- int __thiscall sub_55F310(int this) { return *(_DWORD *)(this + 161740); } //----- (0055F320) -------------------------------------------------------- int __thiscall sub_55F320(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161740) = a2; return result; } //----- (0055F330) -------------------------------------------------------- int __thiscall sub_55F330(int this) { return *(_DWORD *)(this + 161744); } //----- (0055F340) -------------------------------------------------------- int __thiscall sub_55F340(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 161744) = a2; return result; } //----- (0055F350) -------------------------------------------------------- signed int __thiscall sub_55F350(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int result; // eax@2 int v4; // ecx@3 char v5[4]; // [sp+4h] [bp-10h]@1 int v6; // [sp+8h] [bp-Ch]@1 int v7; // [sp+Ch] [bp-8h]@1 unsigned int v8; // [sp+10h] [bp-4h]@1 int v9; // [sp+14h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = this; v7 = 0; v6 = 0; *(_DWORD *)v5 = 0; strncpy(v5, "RouT", 0xCu); v2 = sub_49FD90(&unk_D714FF8, v5); if ( v2 && (v4 = *(_DWORD *)(v2 + 12)) != 0 && *(_BYTE *)(v4 + 54) == 4 ) { *(_DWORD *)((char *)v1 + 32727) = *(_DWORD *)v2; *(_DWORD *)((char *)v1 + 32731) = *(_DWORD *)(v2 + 4); *(_DWORD *)((char *)v1 + 32735) = *(_DWORD *)(v2 + 8); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1216))(v1); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0055F400) -------------------------------------------------------- char __thiscall sub_55F400(int this, int a2) { char result; // al@1 result = a2; if ( a2 ) { *(_DWORD *)(this + 161756) = *(_DWORD *)a2; result = *(_BYTE *)(a2 + 4); *(_BYTE *)(this + 161760) = result; } return result; } //----- (0055F420) -------------------------------------------------------- char *__thiscall sub_55F420(void *this) { return (char *)this + 161756; } //----- (0055F430) -------------------------------------------------------- int __thiscall sub_55F430(int this) { return sub_42D730((void *)this, dword_DA22978[2 * *(_BYTE *)(this + 32686)] - *(_DWORD *)(this + 32687), -1, 65535); } // DA22978: using guessed type int dword_DA22978[]; //----- (0055F460) -------------------------------------------------------- FILE *__thiscall sub_55F460(void *this) { void *v1; // edi@1 void *v2; // esi@1 FILE *result; // eax@2 int v4; // eax@3 v1 = off_849C18; v2 = this; *(_WORD *)off_849C18 = 22586; *((_BYTE *)v1 + 2) = (*(int (**)(void))(*(_DWORD *)this + 3584))(); if ( sub_4C81E0(&off_849C18, 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendKQTeamType : Packet Too Long", 3); } return result; } //----- (0055F4D0) -------------------------------------------------------- char __thiscall sub_55F4D0(void *this) { void *v1; // esi@1 int v2; // edi@1 char result; // al@2 int v4; // eax@3 v1 = this; v2 = sub_496100(this); if ( v2 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); result = sub_498120(v2 + 1040, v4); } else { result = 0; } return result; } //----- (0055F500) -------------------------------------------------------- char __thiscall sub_55F500(int this) { return *(_BYTE *)(this + 23826) & 1; } //----- (0055F510) -------------------------------------------------------- char __thiscall sub_55F510(int this, char a2) { char result; // al@1 result = (a2 ^ *(_BYTE *)(this + 23826)) & 1; *(_BYTE *)(this + 23826) ^= result; return result; } //----- (0055F530) -------------------------------------------------------- int __thiscall sub_55F530(void *this, unsigned __int8 a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edi@1 v2 = this; result = sub_4BFA10((int)&unk_133593D0, a2); v4 = result; if ( result ) { result = *(_DWORD *)(result + 4); if ( result < 792 ) { result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, result, *(_DWORD *)(v4 + 12), *(_DWORD *)(v4 + 8), dword_14D129E8, 0, 0, 0, 0, 0); if ( (_BYTE)result == 1 ) { sub_401900(v2, *(_DWORD *)(v4 + 4)); sub_4055D0( v2, *(_DWORD *)(v4 + 4), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 36 * dword_871500 + 12) + 43), dword_871500); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1008))( v2, *(_DWORD *)(v4 + 4), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 36 * dword_871500 + 12) + 43), 1); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); } } } return result; } // 871500: using guessed type int dword_871500; // 14D129E8: using guessed type int dword_14D129E8; //----- (0055F5F0) -------------------------------------------------------- void __thiscall sub_55F5F0(int this) { int v1; // esi@1 int v2; // ecx@1 void *v3; // eax@2 int v4; // eax@4 v1 = this; v2 = *(_DWORD *)(this + 122); if ( v2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 6187; *((_BYTE *)v3 + 2) = (*(_BYTE *)(v2 + 496) & 1) == 1; if ( sub_4C81E0(&off_849C18, 3) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v4 + 12))(v4, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SendCanUseReviveItem : Packet Too Long", 3); } } } //----- (0055F660) -------------------------------------------------------- char __thiscall sub_55F660(int this) { return (*(_BYTE *)(this + 23826) >> 1) & 1; } //----- (0055F670) -------------------------------------------------------- char __thiscall sub_55F670(int this, char a2) { char result; // al@1 result = (*(_BYTE *)(this + 23826) ^ 2 * a2) & 2; *(_BYTE *)(this + 23826) ^= result; return result; } //----- (0055F690) -------------------------------------------------------- bool __thiscall sub_55F690(int this, __int16 a2) { void *v2; // eax@1 v2 = sub_5CF620((void *)(this + 82048)); return sub_5BA2C0(v2, a2) != 0; } //----- (0055F6C0) -------------------------------------------------------- void __thiscall sub_55F6C0(int this, const void *a2) { int v2; // ebx@1 signed int v3; // edi@2 __int16 *v4; // esi@2 signed int v5; // edi@10 __int16 *v6; // esi@10 int (__thiscall *v7)(_DWORD, _DWORD); // eax@18 int v8; // eax@18 __int16 v9; // ax@18 int v10; // eax@20 __int16 v11; // ax@20 char v12; // [sp+Bh] [bp-1h]@2 char v13; // [sp+17h] [bp+Bh]@2 v2 = this; if ( a2 ) { memcpy((void *)(this + 161924), a2, 0x32u); v13 = 1; v12 = 1; v3 = 0; v4 = (__int16 *)(this + 161926); do { if ( *v4 != -1 ) { *(_BYTE *)(v3 + v2 + 161974) = 1; if ( sub_4A18F0((int)&unk_1325CBB8, 2u, *v4) ) { if ( sub_63F770((void *)(v2 + 36484), *v4) > 0 ) v13 = 0; else *v4 = -1; } else { *v4 = -1; } } ++v3; ++v4; } while ( v3 < 12 ); v5 = 0; v6 = (__int16 *)(v2 + 161950); do { if ( *v6 != -1 ) { *(_BYTE *)(v5 + v2 + 161986) = 1; if ( sub_4A18F0((int)&unk_1325CBB8, 1u, *v6) ) { if ( sub_63F770((void *)(v2 + 36484), *v6) > 0 ) v12 = 0; else *v6 = -1; } else { *v6 = -1; } } ++v5; ++v6; } while ( v5 < 12 ); v7 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)(v2 + 32816); *(_DWORD *)(v2 + 161920) = dword_14D129E8; v8 = v7(v2 + 32816, 25); v9 = sub_63FD50(v8); if ( v9 == -1 || sub_4A18B0((int)&unk_133597B0, v9) != 2 ) { v10 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 32816))(v2 + 32816, 28); v11 = sub_63FD50(v10); if ( v11 == -1 || sub_4A18B0((int)&unk_133597B0, v11) != 2 ) *(_WORD *)(v2 + 161924) = 0; } if ( v13 == 1 ) *(_BYTE *)(v2 + 161924) = 0; if ( v12 == 1 ) *(_BYTE *)(v2 + 161925) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 32650) + 234) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3660))(v2) == 1; } } // 14D129E8: using guessed type int dword_14D129E8; //----- (0055F890) -------------------------------------------------------- int __thiscall sub_55F890(int this) { int v1; // ebx@1 void *v2; // eax@1 int v3; // eax@3 int v4; // ecx@4 int v5; // ST04_4@4 int v6; // eax@4 char v8; // [sp+10h] [bp-20h]@4 int v9; // [sp+1Ch] [bp-14h]@1 void *v10; // [sp+20h] [bp-10h]@1 int v11; // [sp+2Ch] [bp-4h]@4 v1 = this; v2 = off_849C18; *(_WORD *)off_849C18 = 4387; v9 = (int)((char *)v2 + 2); memcpy((char *)v2 + 2, (const void *)(this + 161924), 0x30u); v10 = v2; *((_WORD *)v2 + 25) = *(_WORD *)(this + 161972); if ( sub_4C81E0(&off_849C18, 52) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SendUseItemMinimonInfo_Client : Packet Too Long", 52); } *(_WORD *)v10 = 4396; v4 = v9; *(_WORD *)v9 = *(_WORD *)(v1 + 4); *(_BYTE *)(v4 + 2) = *(_BYTE *)(*(_DWORD *)(v1 + 32650) + 234); sub_4287B0(&v8, &off_849C18, 5); v5 = *(_DWORD *)(v1 + 102); v11 = 0; v6 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v6, v5, 0, 0, (int)&v8, 0, 65535); v11 = -1; return sub_428A70(&v8); } //----- (0055F9A0) -------------------------------------------------------- int __thiscall sub_55F9A0(int this, char a2) { int v2; // esi@1 int result; // eax@1 void *v4; // eax@2 __int16 v5; // dx@2 int v6; // ST04_4@2 int v7; // eax@2 char v8; // [sp+8h] [bp-18h]@2 int v9; // [sp+1Ch] [bp-4h]@2 v2 = this; result = *(_DWORD *)(this + 32650); if ( *(_BYTE *)(result + 234) != a2 ) { *(_BYTE *)(result + 234) = a2; v4 = off_849C18; *(_WORD *)off_849C18 = 4396; v5 = *(_WORD *)(this + 4); *((_BYTE *)v4 + 4) = a2; *((_WORD *)v4 + 1) = v5; sub_4287B0(&v8, &off_849C18, 5); v6 = *(_DWORD *)(v2 + 102); v9 = 0; v7 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v7, v6, 0, 0, (int)&v8, 0, 65535); v9 = -1; result = sub_428A70(&v8); } return result; } //----- (0055FA60) -------------------------------------------------------- bool __thiscall sub_55FA60(int this) { bool result; // al@1 result = 1; if ( *(_BYTE *)(this + 161924) != 1 ) result = *(_BYTE *)(this + 161925) == 1; return result; } //----- (0055FA80) -------------------------------------------------------- char __thiscall sub_55FA80(int this, unsigned __int8 a2, int a3) { int v3; // esi@1 char result; // al@2 __int16 v5; // ax@4 int v6; // eax@4 int v7; // edi@4 int v8; // eax@8 int v9; // ecx@9 __int16 v10; // ax@14 int v11; // eax@14 int v12; // edi@14 int v13; // ebx@16 void *v14; // eax@16 int v15; // ebx@17 void *v16; // eax@17 unsigned __int16 **v17; // eax@18 __int16 v18; // cx@23 int v19; // [sp+8h] [bp-4h]@4 v3 = this; if ( a3 && (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(this + 58688) + 12))( this + 58688, 9, a2) != 1 ) { v5 = sub_63FD50(a3); v6 = sub_418CB0((int)&dword_14D20890, v5); v7 = v6; v19 = v6; if ( v6 && *(_DWORD *)v6 && *(_DWORD *)(v6 + 4) && *(_DWORD *)(*(_DWORD *)v6 + 127) <= (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1240))(v3) && (v8 = sub_46F910(a3)) != 0 && (v9 = *(_DWORD *)v7, (unsigned int)v8 <= *(_DWORD *)(*(_DWORD *)v7 + 106)) && (!*(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v3 + 122) + 12) + 103) || *(_BYTE *)(*(_DWORD *)(v7 + 4) + 219)) && *(_DWORD *)(v9 + 98) == 1 && sub_63D810((int)&unk_14D130B8, *(_DWORD *)(v9 + 207), (*(_BYTE *)(v3 + 32766) >> 2) & 0x1F) && (v10 = sub_63FD50(a3), v11 = sub_486C40((int)&dword_13258868, v10), (v12 = v11) != 0) && *(_DWORD *)(v11 + 4) && (v13 = **(_DWORD **)(v11 + 4), v14 = sub_5CF620((void *)a3), (unsigned __int16)(*(int (__thiscall **)(_DWORD, int, void *))(v13 + 4))(*(_DWORD *)(v12 + 4), v3, v14) == 1792) && (v15 = **(_DWORD **)(v12 + 4), v16 = sub_5CF620((void *)a3), (unsigned __int8)(*(int (__thiscall **)(_DWORD, int, _DWORD, void *))(v15 + 8))( *(_DWORD *)(v12 + 4), v3, a2, v16) != 1) && (v17 = *(unsigned __int16 ***)(v12 + 8)) != 0 && (!(*(_BYTE *)(v3 + 7888) & 4) || **v17 == 29203) && sub_4695E0(v3 + 84388, v3, **v17) ) { sub_566EF0((void *)(v3 + 7644)); *(_DWORD *)(v3 + 7644) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v12 + 8) + 4) + 203)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v18 = **(_WORD **)(*(_DWORD *)(v12 + 8) + 4); *(_BYTE *)(v3 + 7680) = a2; *(_WORD *)(v3 + 7648) = v18; *(_DWORD *)(v3 + 7676) = v19; *(_DWORD *)(v3 + 7672) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v12 + 8) + 4) + 207); *(_BYTE *)(v3 + 7681) = 1; *(_DWORD *)(v3 + 7664) = *(_DWORD *)(v12 + 8); result = 1; } else { result = 0; } } else { result = 0; } return result; } // 13258868: using guessed type int dword_13258868; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; //----- (0055FC90) -------------------------------------------------------- void __userpurge sub_55FC90(int a1, int a2, int a3, int a4) { int v4; // ST08_4@2 int v5; // esi@2 int v6; // eax@2 __int16 v7; // ax@2 int v8; // edi@3 int v9; // eax@5 __int16 v10; // ax@5 int v11; // eax@6 int v12; // edx@10 char v13; // dl@11 signed int v14; // esi@11 __int16 v15; // cx@12 signed int v16; // eax@13 signed int v17; // eax@20 int v18; // ecx@20 bool v19; // zf@25 int v20; // [sp+4h] [bp-4h]@1 v20 = a1; if ( a4 ) { v4 = a3; v5 = a1 + 32816; v6 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))(a1 + 32816))(a1 + 32816, 25, a2, v4); v7 = sub_63FD50(v6); if ( v7 == -1 ) v8 = 0; else v8 = sub_4A18B0((int)&unk_133597B0, v7); v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))v5)(v5, 28); v10 = sub_63FD50(v9); if ( v10 == -1 ) v11 = 0; else v11 = sub_4A18B0((int)&unk_133597B0, v10); if ( v8 == 2 || v11 == 2 ) { v13 = 1; v14 = 0; while ( 1 ) { v15 = *(_WORD *)(a4 + 2 * v14); if ( v15 != -1 ) break; LABEL_19: ++v14; if ( v14 >= 12 ) { v17 = 0; v18 = v20 + 161926; do { *(_WORD *)v18 = *(_WORD *)(a4 + 2 * v17++); v18 += 2; } while ( v17 < 12 ); if ( !v13 ) { *(_BYTE *)(v20 + 161924) = 1; sub_55F9A0(v20, 1); } v12 = *(_DWORD *)v20; goto LABEL_27; } } v16 = 0; do { if ( v14 != v16 && *(_WORD *)(a4 + 2 * v16) == v15 ) { (*(void (__stdcall **)(signed int))(*(_DWORD *)v20 + 776))(4); return; } ++v16; } while ( v16 < 12 ); if ( sub_4A18F0((int)&unk_1325CBB8, 2u, *(_WORD *)(a4 + 2 * v14)) ) { v13 = 0; goto LABEL_19; } v19 = sub_4A18F0((int)&unk_1325CBB8, 1u, *(_WORD *)(a4 + 2 * v14)) == 0; (*(void (__stdcall **)(signed int))(*(_DWORD *)v20 + 776))(4); } else { v12 = *(_DWORD *)v20; LABEL_27: (*(void (__stdcall **)(signed int))(v12 + 776))(4); } } } // 55FC90: could not find valid save-restore pair for esi //----- (0055FE40) -------------------------------------------------------- void __userpurge sub_55FE40(int a1, int a2, int a3, int a4) { int v4; // ST08_4@2 int v5; // esi@2 int v6; // eax@2 __int16 v7; // ax@2 int v8; // edi@3 int v9; // eax@5 __int16 v10; // ax@5 int v11; // eax@6 int v12; // edx@10 char v13; // dl@11 signed int v14; // esi@11 __int16 v15; // cx@12 signed int v16; // eax@13 signed int v17; // eax@20 int v18; // ecx@20 bool v19; // zf@25 int v20; // [sp+4h] [bp-4h]@1 v20 = a1; if ( a4 ) { v4 = a3; v5 = a1 + 32816; v6 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))(a1 + 32816))(a1 + 32816, 25, a2, v4); v7 = sub_63FD50(v6); if ( v7 == -1 ) v8 = 0; else v8 = sub_4A18B0((int)&unk_133597B0, v7); v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))v5)(v5, 28); v10 = sub_63FD50(v9); if ( v10 == -1 ) v11 = 0; else v11 = sub_4A18B0((int)&unk_133597B0, v10); if ( v8 == 2 || v11 == 2 ) { v13 = 1; v14 = 0; while ( 1 ) { v15 = *(_WORD *)(a4 + 2 * v14); if ( v15 != -1 ) break; LABEL_19: ++v14; if ( v14 >= 12 ) { v17 = 0; v18 = v20 + 161950; do { *(_WORD *)v18 = *(_WORD *)(a4 + 2 * v17++); v18 += 2; } while ( v17 < 12 ); if ( !v13 ) { *(_BYTE *)(v20 + 161925) = 1; sub_55F9A0(v20, 1); } v12 = *(_DWORD *)v20; goto LABEL_27; } } v16 = 0; do { if ( v14 != v16 && *(_WORD *)(a4 + 2 * v16) == v15 ) { (*(void (__stdcall **)(signed int))(*(_DWORD *)v20 + 776))(4); return; } ++v16; } while ( v16 < 12 ); if ( sub_4A18F0((int)&unk_1325CBB8, 1u, *(_WORD *)(a4 + 2 * v14)) ) { v13 = 0; goto LABEL_19; } v19 = sub_4A18F0((int)&unk_1325CBB8, 2u, *(_WORD *)(a4 + 2 * v14)) == 0; (*(void (__stdcall **)(signed int))(*(_DWORD *)v20 + 776))(4); } else { v12 = *(_DWORD *)v20; LABEL_27: (*(void (__stdcall **)(signed int))(v12 + 776))(4); } } } // 55FE40: could not find valid save-restore pair for esi //----- (0055FFF0) -------------------------------------------------------- int __thiscall sub_55FFF0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 160816) = a2; return result; } //----- (00560000) -------------------------------------------------------- FILE *__thiscall sub_560000(int this) { FILE *result; // eax@1 *(_DWORD *)(this + 160796) = dword_14D129E8 + 30; result = (FILE *)4; if ( *(_DWORD *)(this + 160808) == 4 ) { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::TimeScheduler::ts_Set - ", 4); } else { *(_DWORD *)(this + 160812) = sub_5673F0; *(_DWORD *)(this + 160800) = sub_5561E0; *(_DWORD *)(this + 160804) = 0; *(_DWORD *)(this + 160808) = 4; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00560060) -------------------------------------------------------- char __thiscall sub_560060(void *this) { char *v1; // esi@1 void *v2; // eax@3 void *v3; // edi@3 void *v4; // eax@7 void *v5; // edi@7 void *v6; // eax@11 void *v7; // edi@11 char result; // al@15 char v9; // [sp+Ch] [bp-1Ch]@1 int v10; // [sp+24h] [bp-4h]@1 v1 = (char *)this + 32816; sub_43BAC0((int)&v9, (int)((char *)this + 32816), 0); v10 = 0; if ( sub_43BBB0(&v9) ) { while ( 1 ) { if ( sub_650560((int)&v9) == 11 ) { v2 = (void *)(**(int (__thiscall ***)(char *, signed int))v1)(v1, 10); v3 = v2; if ( !v2 ) break; if ( !sub_5CF620(v2) || *((_WORD *)sub_5CF620(v3) + 4) == -1 ) break; } if ( sub_650560((int)&v9) == 13 ) { v4 = (void *)(**(int (__thiscall ***)(char *, signed int))v1)(v1, 12); v5 = v4; if ( !v4 ) break; if ( !sub_5CF620(v4) || *((_WORD *)sub_5CF620(v5) + 4) == -1 ) break; } if ( sub_650560((int)&v9) == 29 ) { v6 = (void *)(**(int (__thiscall ***)(char *, signed int))v1)(v1, 12); v7 = v6; if ( !v6 ) break; if ( !sub_5CF620(v6) || *((_WORD *)sub_5CF620(v7) + 4) == -1 ) break; } if ( !sub_63F7F0(&v9) ) goto LABEL_15; } v10 = -1; sub_43BB10(&v9); result = 0; } else { LABEL_15: v10 = -1; sub_43BB10(&v9); result = 1; } return result; } //----- (005601D0) -------------------------------------------------------- int __thiscall sub_5601D0(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // ebx@1 void *v6; // ecx@1 int v7; // esi@3 int (__thiscall *v8)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@3 char v9; // [sp+4h] [bp-68h]@3 char v10; // [sp+64h] [bp-8h]@3 unsigned int v11; // [sp+68h] [bp-4h]@1 int v12; // [sp+6Ch] [bp+0h]@1 result = (unsigned int)&v12 ^ __security_cookie; v11 = (unsigned int)&v12 ^ __security_cookie; v5 = this; v6 = *(void **)(this + 122); if ( v6 ) { result = sub_462930(v6); if ( result ) { v7 = sub_462930(*(void **)(v5 + 122)); v8 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1536); memcpy(&v9, (const void *)v7, 0x60u); v10 = *(_BYTE *)(v7 + 96); result = v8(v5, &v9, 6, 9, 10); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00560240) -------------------------------------------------------- int __thiscall sub_560240(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // edi@1 int v6; // esi@1 signed __int16 v7; // cx@4 int v8; // eax@7 int v9; // ST04_4@10 int v10; // eax@10 bool v11; // zf@11 int v12; // eax@14 __int16 v13; // ax@15 void *v14; // eax@15 int v15; // eax@18 __int16 v16; // ax@19 int v17; // eax@20 int v18; // eax@27 int v19; // esi@28 int v20; // esi@29 int v21; // edx@29 int (__thiscall *v22)(_DWORD, _DWORD); // eax@29 int v23; // edi@31 int (__thiscall *v24)(_DWORD, _DWORD); // eax@34 unsigned __int8 v25; // al@34 int v26; // eax@39 int (__thiscall *v27)(_DWORD); // edx@40 int v28; // eax@41 int v29; // edi@42 int v30; // edi@43 int (__thiscall *v31)(_DWORD); // edx@44 unsigned __int8 v32; // al@44 void (__thiscall *v33)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@45 int v34; // esi@46 int v35; // eax@52 char *v37; // [sp-14h] [bp-158h]@45 signed int v38; // [sp-10h] [bp-154h]@45 signed int v39; // [sp-Ch] [bp-150h]@45 signed int v40; // [sp-8h] [bp-14Ch]@45 unsigned int v41; // [sp-4h] [bp-148h]@1 int v42; // [sp-4h] [bp-148h]@30 void *v43; // [sp+10h] [bp-134h]@1 char v44; // [sp+14h] [bp-130h]@10 int v45; // [sp+20h] [bp-124h]@20 void *v46; // [sp+24h] [bp-120h]@15 int v47; // [sp+28h] [bp-11Ch]@19 char v48; // [sp+2Ch] [bp-118h]@50 char v49; // [sp+8Ch] [bp-B8h]@50 char v50; // [sp+90h] [bp-B4h]@29 char v51; // [sp+F0h] [bp-54h]@29 int v52; // [sp+F4h] [bp-50h]@29 int v53; // [sp+F8h] [bp-4Ch]@29 int v54; // [sp+FCh] [bp-48h]@29 int v55; // [sp+100h] [bp-44h]@29 int v56; // [sp+104h] [bp-40h]@29 int v57; // [sp+109h] [bp-3Bh]@29 int v58; // [sp+10Dh] [bp-37h]@29 int v59; // [sp+111h] [bp-33h]@29 int v60; // [sp+115h] [bp-2Fh]@29 int v61; // [sp+119h] [bp-2Bh]@29 int v62; // [sp+11Dh] [bp-27h]@29 int v63; // [sp+121h] [bp-23h]@29 int v64; // [sp+125h] [bp-1Fh]@29 int v65; // [sp+129h] [bp-1Bh]@29 int v66; // [sp+12Dh] [bp-17h]@29 unsigned int v67; // [sp+134h] [bp-10h]@1 int v68; // [sp+140h] [bp-4h]@1 int v69; // [sp+144h] [bp+0h]@1 v67 = (unsigned int)&v69 ^ __security_cookie; v41 = (unsigned int)&v69 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = 0; v68 = 0; v43 = off_849C18; *(_DWORD *)off_849C18 = 603988081; if ( !(dword_132541D0 & 1) ) { dword_132541D0 |= 1u; word_132541CC = 70; atexit(nullsub_129); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132541CC) ) { v7 = 9217; goto LABEL_5; } if ( *(_DWORD *)((char *)v4 + 122) ) { sub_428080((int)&v44); v9 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v68) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v10, v9, 0, 0, (int)&v44, 0, 65535); if ( !sub_650560((int)&v44) || (v13 = sub_4802C0((int)&v44), v14 = sub_418BA0(dword_D9FBF28, v13), (v46 = v14) == 0) ) goto LABEL_59; if ( !*((_DWORD *)v14 + 1) ) { *((_WORD *)v5 + 1) = 9219; if ( sub_4C81E0(&off_849C18, 4) ) { LABEL_18: v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v15 + 12))(v15, v4, &off_849C18); goto LABEL_55; } goto LABEL_13; } v16 = sub_4802C0((int)&v44); v47 = (int)sub_55E0F0(dword_D9FBF28, v16); if ( !v47 ) { LABEL_59: *((_WORD *)v5 + 1) = 9219; v11 = sub_4C81E0(&off_849C18, 4) == 0; goto LABEL_12; } v17 = (*(int (__stdcall **)(_DWORD))(**((_DWORD **)v46 + 1) + 8))(0); v45 = v17; if ( !v17 ) { LABEL_25: *((_WORD *)v5 + 1) = 9219; if ( sub_4C81E0(&off_849C18, 4) ) goto LABEL_18; goto LABEL_13; } v47 += 84; while ( !sub_427B00(v47, v17) ) { ++v6; v45 = (*(int (__stdcall **)(int))(**((_DWORD **)v46 + 1) + 8))(v6); if ( !v45 ) goto LABEL_25; v17 = v45; } v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3188))(v4); v46 = (void *)v18; if ( v18 ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 3240))(v18); if ( v19 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) ) goto LABEL_55; memcpy(&v50, (const void *)v45, 0x60u); v51 = *(_BYTE *)(v45 + 96); v20 = (int)v46; v21 = *(_DWORD *)v46; v52 = -1; v53 = -1; v54 = -1; v56 = -1; v57 = -1; v58 = -1; v59 = -1; v60 = -1; v61 = -1; v62 = -1; v63 = -1; v64 = -1; v65 = -1; v66 = -1; v22 = *(int (__thiscall **)(_DWORD, _DWORD))(v21 + 3288); v55 = 0; LOBYTE(v47) = 0; if ( (unsigned __int8)v22(v46, v41) ) { while ( 1 ) { v42 = v47; v46 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v20 + 3292))(v20); if ( v46 ) { v23 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v45 + 20), 0); if ( v23 ) { if ( (unsigned __int16)(unsigned __int8)(*(int (__cdecl **)(int))(*(_DWORD *)v46 + 1240))(v42) < *(_WORD *)(v23 + 34) || (unsigned __int16)(unsigned __int8)(*(int (**)(void))(*(_DWORD *)v46 + 1240))() > *(_WORD *)(v23 + 36) ) break; } } v24 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v20 + 3288); LOBYTE(v47) = v47 + 1; v25 = v24(v20, v42); if ( (unsigned __int8)v47 >= v25 ) goto LABEL_35; } *((_WORD *)v43 + 1) = 9220; goto LABEL_38; } LABEL_35: if ( sub_4C81E0(&off_849C18, 4) ) { v26 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v26 + 12))(v26, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); } (*(void (__thiscall **)(int))(*(_DWORD *)v20 + 3204))(v20); (*(void (__thiscall **)(void *, int *))(*(_DWORD *)v4 + 3208))(v4, &v52); v27 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 3288); LOBYTE(v47) = 0; if ( (unsigned __int8)v27(v20) ) { do { v28 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 3292))(v20, v47); v46 = (void *)v28; if ( v28 ) { v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v28 + 836))(v28); if ( v29 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) ) { v30 = (int)v46; (*(void (__thiscall **)(void *, int *))(*(_DWORD *)v46 + 3208))(v46, &v52); (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v30 + 1536))( v30, &v50, 6, 9, 10); } } v31 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 3288); LOBYTE(v47) = v47 + 1; v32 = v31(v20); } while ( (unsigned __int8)v47 < v32 ); } v33 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1536); v40 = 10; v39 = 9; v38 = 6; v37 = &v50; } else { v34 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v45 + 20), 0); if ( v34 && (*(_WORD *)(v34 + 34) > (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) || *(_WORD *)(v34 + 36) < (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4)) ) { *((_WORD *)v5 + 1) = 9220; LABEL_38: v11 = sub_4C81E0(&off_849C18, 4) == 0; LABEL_12: if ( !v11 ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); goto LABEL_55; } LABEL_13: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); LABEL_55: LOBYTE(v68) = 0; sub_427EB0(&v44); goto LABEL_56; } memcpy(&v48, (const void *)v45, 0x60u); v49 = *(_BYTE *)(v45 + 96); if ( sub_4C81E0(&off_849C18, 4) ) { v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v35 + 12))(v35, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); } v33 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1536); v40 = 10; v39 = 9; v38 = 6; v37 = &v48; } v33(v4, v37, v38, v39, v40); goto LABEL_55; } v7 = 9218; LABEL_5: *((_WORD *)v5 + 1) = v7; if ( sub_4C81E0(&off_849C18, 4) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); } LABEL_56: --dword_750CB8; v68 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D020440: using guessed type int dword_D020440; // 132541CC: using guessed type __int16 word_132541CC; // 132541D0: using guessed type int dword_132541D0; //----- (00560890) -------------------------------------------------------- int __thiscall sub_560890(void *this) { void *v1; // ebx@1 int v2; // edi@1 void *v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // edx@3 int result; // eax@8 unsigned int v7; // ecx@8 unsigned int v8; // ecx@9 unsigned int v9; // edx@9 int v10; // eax@17 int v11; // [sp+Ch] [bp-4h]@8 v1 = off_849C18; v2 = dword_14D129E8; v3 = this; *(_WORD *)off_849C18 = 16418; *(_DWORD *)((char *)v1 + 2) = (*(int (**)(void))(*(_DWORD *)this + 836))(); v4 = *((_DWORD *)v3 + 40371); if ( v4 <= v2 ) { v5 = 0; } else { if ( v4 - v2 >= 0xA ) v5 = (v4 - v2) / 0xA; else v5 = 1; } *(_DWORD *)((char *)v1 + 6) = v5; if ( v5 ) { *(_DWORD *)((char *)v1 + 10) = (*((_DWORD *)v3 + 40372) - *((_DWORD *)v3 + 40371)) / 0xAu; *((_DWORD *)v3 + 40373) = 1; } else { result = _time32(0); v7 = *((_DWORD *)v3 + 40372); v11 = result; if ( v7 <= v2 ) { v9 = 0; } else { v8 = v7 - v2; result = -858993459 * v8; v9 = v11 + v8 / 0xA; } *(_DWORD *)((char *)v1 + 10) = v9; if ( v9 ) { *((_DWORD *)v3 + 40373) = 1; } else { if ( !*((_DWORD *)v3 + 40373) ) return result; *((_DWORD *)v3 + 40373) = 0; } } if ( sub_4C81E0(&off_849C18, 14) ) { v10 = sub_428750((int)&dword_14D16430); result = sub_4C7EC0(&off_849C18, v10); } else { result = (int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendSpamerDataToCharDB : Packet Too Long", 14); } return result; } // 14D129E8: using guessed type int dword_14D129E8; // 14D16430: using guessed type int dword_14D16430; //----- (005609B0) -------------------------------------------------------- char __thiscall sub_5609B0(void *this, unsigned int a2) { int v2; // esi@1 int v3; // edi@1 unsigned __int8 v4; // bl@2 char result; // al@3 unsigned int v6; // ecx@11 int v7; // eax@11 int v8; // ecx@11 int i; // eax@11 char v10; // [sp+Ch] [bp-10h]@1 unsigned __int16 v11; // [sp+10h] [bp-Ch]@9 unsigned __int16 v12; // [sp+14h] [bp-8h]@3 char v13; // [sp+1Bh] [bp-1h]@1 v2 = (int)this; v3 = 0; v10 = 1; v13 = sub_587540((int)&dword_13258298); if ( *(_DWORD *)(v2 + 161488) <= a2 || (v4 = 1, v10 = 1, (unsigned __int8)byte_13258324 <= 1u) ) { LABEL_9: result = sub_587560((int)&dword_13258298, v10, (int)&v11); if ( result ) { result = sub_5875F0((int)&dword_13258298, v10, (int)&v12); if ( result ) { v6 = a2 + 10 * v11; v7 = v6 + 10 * (v3 + v12); *(_DWORD *)(v2 + 161484) = v6; v8 = (unsigned __int8)v13; *(_DWORD *)(v2 + 161488) = v7; for ( i = 0; i < v8; ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 161476) + 4 * i) = 0; result = (unsigned int)sub_55E7A0(v2); } } } else { while ( 1 ) { result = sub_5875F0((int)&dword_13258298, v10, (int)&v12); if ( !result ) break; v3 += v12; if ( 10 * v3 >= (unsigned int)(*(_DWORD *)(v2 + 161488) - *(_DWORD *)(v2 + 161484)) ) { if ( v4 < byte_13258324 ) v10 = v4 + 1; goto LABEL_9; } ++v4; v10 = v4; if ( v4 >= byte_13258324 ) goto LABEL_9; } } return result; } // 13258298: using guessed type int dword_13258298; // 13258324: using guessed type char byte_13258324; //----- (00560AC0) -------------------------------------------------------- FILE *__thiscall sub_560AC0(void *this) { int v1; // ebx@1 void *v2; // edi@1 void *v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // edx@3 unsigned int v6; // edx@7 __time32_t v7; // eax@8 unsigned int v8; // esi@8 FILE *result; // eax@12 int v10; // eax@13 v1 = dword_14D129E8; v2 = off_849C18; v3 = this; *(_WORD *)off_849C18 = 16417; *((_WORD *)v2 + 1) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); v4 = *((_DWORD *)v3 + 40371); 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 + 40372) - *((_DWORD *)v3 + 40371)) / 0xAu; } else { v7 = _time32(0); v8 = *((_DWORD *)v3 + 40372); if ( v8 <= v1 ) v6 = 0; else v6 = v7 + (v8 - v1) / 0xA; } *((_DWORD *)v2 + 3) = v6; if ( sub_4C81E0(&off_849C18, 16) ) { v10 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v10); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SendSpamerToWM : Packet Too Long", 16); } return result; } // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00560BB0) -------------------------------------------------------- void __thiscall sub_560BB0(void *this, __int16 a2) { void *v2; // ebx@1 void *v3; // esi@1 void *v4; // eax@3 void *v5; // ST28_4@3 void *v6; // eax@3 int v7; // edx@3 int v8; // esi@3 char *v9; // edi@4 char v10; // al@5 void *v11; // eax@9 int v12; // eax@11 int v13; // edi@16 int v14; // eax@16 void *v15; // esi@16 int v16; // eax@16 void *v17; // eax@16 char v18; // cl@16 char v19; // dl@16 int v20; // eax@18 int v21; // eax@19 int v22; // [sp+8h] [bp-90h]@1 char *v23; // [sp+Ch] [bp-8Ch]@3 char *v24; // [sp+10h] [bp-88h]@3 int v25; // [sp+14h] [bp-84h]@3 char v26; // [sp+18h] [bp-80h]@3 __int16 v27; // [sp+19h] [bp-7Fh]@3 __int16 v28; // [sp+1Ch] [bp-7Ch]@1 char v29; // [sp+23h] [bp-75h]@3 char v30[58]; // [sp+24h] [bp-74h]@3 char v31; // [sp+5Eh] [bp-3Ah]@3 __int16 v32; // [sp+90h] [bp-8h]@3 char v33; // [sp+92h] [bp-6h]@3 unsigned int v34; // [sp+94h] [bp-4h]@1 int v35; // [sp+98h] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v2 = this; v3 = (void *)(*(int (__stdcall **)(__int16 *))(*(_DWORD *)this + 1964))(&v28); v22 = (int)v3; if ( v3 && -1 != a2 ) { v4 = sub_5CF620(v3); v27 = 0; v29 = 0; v5 = v4; v26 = 0; v6 = sub_5CF620(v3); memcpy(v30, v6, 0x6Cu); v32 = *((_WORD *)v6 + 54); v23 = &v31; v7 = 0; v33 = *((_BYTE *)v6 + 110); v25 = 0; v8 = (int)((char *)v5 + 60); v24 = (char *)(v30 - v5); do { v9 = &v26 + v7; *(&v26 + v7) = 0; if ( a2 == *(_WORD *)(v8 - 2) ) { v10 = *(_BYTE *)v8; if ( *(_BYTE *)v8 != -1 ) { if ( v10 ) *(_BYTE *)v8 = v10 - 1; else sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_EnchantActionUse RestCount Empty", 0); v11 = off_849C18; *(_WORD *)off_849C18 = 12358; *((_WORD *)v11 + 1) = v28; *((_BYTE *)v11 + 4) = v25; *((_BYTE *)v11 + 5) = *(_BYTE *)v8; if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_EnchantActionUse : Packet Too Long", 6); } if ( !*(_BYTE *)v8 ) { *(_WORD *)v23 = -1; v24[v8] = -1; *v9 = 1; v29 = 1; } } } v23 += 3; v7 = v25 + 1; v8 += 3; v25 = v7; } while ( (unsigned int)v7 < 3 ); if ( v29 == 1 ) { v13 = (unsigned __int16)sub_4802C0((int)((char *)v2 + 58688)); v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, int, int, char *, __int16 *, __int16 *))(*(_DWORD *)v14 + 64))( v14, v13, v22, v30, &v28, &v28); v15 = off_849C18; *(_WORD *)off_849C18 = 13464; *((_WORD *)v15 + 1) = *((_WORD *)v2 + 2); v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v15 + 4) = v13; *((_DWORD *)v15 + 1) = v16; *((_WORD *)v15 + 9) = sub_63FD50(v22); v17 = sub_5CF620((void *)v22); *(_DWORD *)((char *)v15 + 10) = *(_DWORD *)v17; v18 = v26; *(_DWORD *)((char *)v15 + 14) = *((_DWORD *)v17 + 1); v19 = v27; *((_WORD *)v15 + 10) = v28; LOBYTE(v17) = HIBYTE(v27); *((_BYTE *)v15 + 37) = 0; *((_BYTE *)v15 + 34) = v18; *((_BYTE *)v15 + 35) = v19; *((_BYTE *)v15 + 36) = (_BYTE)v17; if ( sub_4C81E0(&off_849C18, 38) ) { v20 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v20); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ : Packet Too Long", 38); } v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); sub_43BBF0(v21); } } } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 560BB0: using guessed type char var_74[58]; //----- (00560E40) -------------------------------------------------------- int __thiscall sub_560E40(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_DB_UI_STATE_SAVE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_DB_UI_STATE_SAVE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 16423; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v5 + 8) = *(_BYTE *)(a2 + 2); *((_BYTE *)v4 + 161500) = *(_BYTE *)(a2 + 2); if ( sub_4C81E0(&off_849C18, 9) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_CHARSAVE_UI_STATE_SAVE_REQ : Packet Too Long", 9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MISC_DB_UI_STATE_SAVE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00560F50) -------------------------------------------------------- FILE *__thiscall sub_560F50(void *this) { void *v1; // esi@1 void *v2; // edi@1 FILE *result; // eax@2 int v4; // eax@3 v1 = off_849C18; v2 = this; *(_WORD *)off_849C18 = 16426; *((_WORD *)v1 + 1) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *((_DWORD *)v1 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); *((_BYTE *)v1 + 12) = *(_BYTE *)(*(_DWORD *)((char *)v2 + 32650) + 196); *((_BYTE *)v1 + 13) = *((_BYTE *)v2 + 161500); *((_DWORD *)v1 + 2) = 0; *(_DWORD *)((char *)v1 + 14) = *((_DWORD *)v2 + 40379); *((_BYTE *)v1 + 18) = 0; if ( sub_4C81E0(&off_849C18, 19) ) { v4 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v4); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SingleOptionSave2World : Packet Too Long", 19); } return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (00560FF0) -------------------------------------------------------- signed int __thiscall sub_560FF0(void *this) { void *v1; // esi@1 signed int v2; // edi@1 int v3; // ecx@3 int i; // eax@4 signed int v5; // edx@11 signed int result; // eax@12 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( *((_DWORD *)v1 + 1029) ) { (*(void (**)(void))(**((_DWORD **)v1 + 1029) + 72))(); v3 = (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v1 + 1029) + 72))(); switch ( v3 ) { 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; case 26: LOBYTE(i) = 27; break; default: --dword_750CB8; goto LABEL_14; } for ( i = (unsigned __int8)i; v3 <= i; v2 += v5 ) v5 = 1 << v3++; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"); result = v2; } else { --dword_750CB8; LABEL_14: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00561170) -------------------------------------------------------- int __thiscall sub_561170(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@5 int v6; // ebx@7 int v7; // eax@7 int v8; // eax@9 int v9; // ecx@9 int v10; // eax@11 int v12; // [sp-4h] [bp-24h]@4 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjecrClass::ShinePlayer::sp_"); dword_7508B8[dword_750CB8] = (int)"ShineObjecrClass::ShinePlayer::sp_"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132541D8 & 1) ) { dword_132541D8 |= 1u; word_132541D4 = 6; atexit(nullsub_130); } if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1156))(v4)) & (unsigned __int16)word_132541D4 && (v5 = *(_DWORD *)(v4 + 118)) != 0 && *(_BYTE *)(v5 + 4) != 3 ) { v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v7 = *(_DWORD *)v4; if ( v6 ) { v8 = (*(int (__thiscall **)(int))(v7 + 3188))(v4); v9 = v4; if ( v8 || (LOBYTE(v10) = sub_548D30(v4, v6), v9 = v4, !v10) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v9, 51, 3, 12394); } else { if ( (unsigned int)sub_402710(v4, v6) <= 0x15F90 ) { sub_448770(v4 + 84388, (void *)v4); sub_45D050((void *)v4, v6, *(_BYTE *)(a2 + 4)); } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 51, 3, 12400); } } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v7 + 776))(v4, 51, 3, 12395); } v12 = (int)"ShineObjecrClass::ShinePlayer::sp_"; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 51, 3, 12394); v12 = (int)"ShineObjecrClass::ShinePlayer::sp_"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132541D4: using guessed type __int16 word_132541D4; // 132541D8: using guessed type int dword_132541D8; //----- (00561320) -------------------------------------------------------- int __thiscall sub_561320(void *this, int a2, int a3, int a4) { int v4; // esi@1 char v5; // al@1 int v6; // ecx@1 int v7; // eax@3 signed int v9; // [sp-4h] [bp-20h]@2 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MOVER_RIDE_OFF_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MOVER_RIDE_OFF_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1156))(v4); v6 = v4; if ( v5 != 6 || (v7 = sub_45CDE0(v4), v6 = v4, v7 != 2) ) { v9 = 12417; LABEL_6: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v6, 51, 7, v9); goto LABEL_7; } if ( sub_45D1C0(v4, v4, 0) == 1 ) { v9 = 12416; v6 = v4; goto LABEL_6; } LABEL_7: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MOVER_RIDE_OFF_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00561400) -------------------------------------------------------- int __thiscall sub_561400(void *this) { void *v1; // edi@1 int result; // eax@1 int (__thiscall *v3)(_DWORD, _DWORD); // edx@2 int v4; // edx@2 int *v5; // esi@3 int v6; // edi@4 int v7; // eax@5 void *v8; // eax@6 unsigned __int16 v9; // ax@7 int v10; // eax@7 char v11; // al@9 int v12; // edx@17 signed __int16 v13; // ax@18 int v14; // eax@29 int v15; // ecx@30 char *v16; // ebx@33 char *v17; // esi@33 unsigned int v18; // ecx@34 unsigned int v19; // eax@34 bool v20; // zf@36 int v21; // edi@41 int (__thiscall *v22)(_DWORD, _DWORD); // edx@50 int v23; // eax@55 int v24; // [sp+8h] [bp-DA4h]@42 int v25; // [sp+Ch] [bp-DA0h]@32 unsigned int v26; // [sp+10h] [bp-D9Ch]@32 unsigned int v27; // [sp+14h] [bp-D98h]@32 void *v28; // [sp+18h] [bp-D94h]@1 char *v29; // [sp+1Ch] [bp-D90h]@30 unsigned int v30; // [sp+20h] [bp-D8Ch]@2 int v31; // [sp+20h] [bp-D8Ch]@29 unsigned int v32; // [sp+24h] [bp-D88h]@2 int v33; // [sp+2Ch] [bp-D80h]@3 char v34; // [sp+30h] [bp-D7Ch]@30 int v35; // [sp+38h] [bp-D74h]@34 int v36; // [sp+3Ch] [bp-D70h]@34 unsigned int v37; // [sp+DA8h] [bp-4h]@1 int v38; // [sp+DACh] [bp+0h]@1 v37 = (unsigned int)&v38 ^ __security_cookie; v1 = this; v28 = this; result = (*(int (**)(void))(*(_DWORD *)this + 3348))(); if ( !result ) return result; v3 = *(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v1 + 9121) + 4); --*((_WORD *)v1 + 80856); v4 = v3((char *)v1 + 36484, (char *)v1 + 160312); v32 = v4; v30 = 0; if ( v4 > 0 ) { v5 = &v33; do { v6 = (*(int (__thiscall **)(char *, unsigned int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 9121))( (char *)v1 + 36484, v30); *(v5 - 1) = v6; *v5 = 0; v5[1] = 0; v5[2] = 0; v5[3] = -1; v5[4] = -1; if ( v6 ) { v7 = sub_43BBE0(v6); *v5 = v7; if ( v7 ) { v8 = sub_5CF620((void *)v6); v5[1] = (int)v8; if ( v8 ) { v9 = *((_WORD *)v8 + 4); *((_WORD *)v5 + 6) = v9; v10 = sub_418CB0((int)&dword_14D20890, v9); v5[2] = v10; if ( v10 ) { if ( v5 == (int *)4 ) { v11 = -1; } else { if ( v6 ) { if ( *v5 ) { if ( v5[1] ) v11 = *(_BYTE *)(v10 + 28); else v11 = -1; } else { v11 = -1; } } else { v11 = -1; } } *((_BYTE *)v5 + 19) = v11; *((_BYTE *)v5 + 18) = sub_55EDF0((int)(v5 - 1)); if ( v12 ) { if ( v6 ) { if ( *v5 ) { if ( v5[1] ) v13 = ~*(_WORD *)(*(_DWORD *)v5[2] + 127); else v13 = -1; } else { v13 = -1; } } else { v13 = -1; } } else { v13 = -1; } *((_WORD *)v5 + 8) = v13; *((_WORD *)v5 + 7) = -1; } } } } v1 = v28; v5 += 6; ++v30; } while ( (signed int)v30 < (signed int)v32 ); v4 = v32; } v14 = 0; v31 = 0; if ( v4 - 1 <= 0 ) goto LABEL_56; v15 = 24 - (_DWORD)&v34; v29 = 0; while ( 2 ) { v26 = v14++; v25 = v14; v27 = v14; if ( v14 >= v4 ) goto LABEL_48; v16 = v29; v17 = &v29[v15 + 4] + (_DWORD)&v33; do { v18 = *(_DWORD *)&v17[(_DWORD)&v36]; v19 = *(_DWORD *)&v17[(_DWORD)&v35]; if ( *(_DWORD *)&v16[(_DWORD)&v36] < v18 ) goto LABEL_38; if ( *(_DWORD *)&v16[(_DWORD)&v36] > v18 || (v20 = *(_DWORD *)&v16[(_DWORD)&v35] == v19, *(_DWORD *)&v16[(_DWORD)&v35] > v19) ) { v26 = v27; v16 = v17; LABEL_38: v20 = *(_DWORD *)&v16[(_DWORD)&v35] == v19; } if ( v20 ) { if ( *(_DWORD *)&v16[(_DWORD)&v36] == v18 ) { v21 = *(_DWORD *)&v29[(_DWORD)&v33]; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v21 + 24))(*(_DWORD *)&v29[(_DWORD)&v33]) == 1 ) { v24 = *(_DWORD *)&v29[(_DWORD)&v33 + 8]; if ( v24 ) { if ( (unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v21 + 28))( v21, *(_DWORD *)&v29[(_DWORD)&v33 + 4] + 8) < *(_DWORD *)(*(_DWORD *)v24 + 106) ) { v26 = v27; v16 = v17; } } } } } v17 += 24; ++v27; } while ( (signed int)v27 < (signed int)v32 ); v1 = v28; if ( v26 == v31 ) { v4 = v32; v14 = v25; LABEL_48: v29 += 24; v31 = v14; if ( v14 < v4 - 1 ) { v15 = 24 - (_DWORD)&v34; continue; } LABEL_56: result = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 3352))(v1, 0); } else { v22 = *(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v28 + 14672) + 8); v32 = __PAIR__(v31 & 0x3FF, v26 & 0x3FF | 0x2400) | 0x24000000; if ( (unsigned __int8)v22((char *)v28 + 58688, &v32) || (unsigned __int8)(*(int (__thiscall **)(char *, char *))(*((_DWORD *)v28 + 14672) + 8))( (char *)v28 + 58688, (char *)&v32 + 2) ) { *(_DWORD *)off_849C18 = 816525387; if ( sub_4C81E0(&off_849C18, 4) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v28 + 760))(v28); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v23 + 12))(v23, v28, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ArrangeInven : Packet Too Long", 4); } goto LABEL_56; } result = sub_534AA0(v28, *((_WORD *)v28 + 2), (int)&v32); } return result; } } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (00561820) -------------------------------------------------------- int __thiscall sub_561820(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@1 int v4; // edi@1 unsigned __int64 v5; // qax@1 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 3468))(); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v1 + 3472))(v1, v2); v3 = *(_DWORD *)v1; *((_DWORD *)v1 + 40435) = -1; *((_DWORD *)v1 + 40436) = -1; v4 = dword_14D129E8; v5 = (unsigned int)(10 * (*(int (__thiscall **)(void *))(v3 + 3488))(v1)) * (unsigned __int64)(unsigned int)&unk_10624DD3; HIDWORD(v5) >>= 6; *((_DWORD *)v1 + 40434) = HIDWORD(v5); *((_DWORD *)v1 + 40433) = v4 + HIDWORD(v5); *((_DWORD *)v1 + 40433) = dword_14D129E8 + *((_DWORD *)v1 + 40434); return v5; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00561890) -------------------------------------------------------- int __thiscall sub_561890(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@3 int v4; // ebx@5 int v5; // eax@6 int v6; // ebx@8 int v7; // eax@8 int v8; // eax@9 int v9; // eax@9 int v11; // [sp-4h] [bp-28h]@2 char v12; // [sp+14h] [bp-10h]@6 int v13; // [sp+20h] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_GetJoinKQTeamType"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_GetJoinKQTeamType"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)((char *)v1 + 122); v13 = 0; if ( v2 && (v3 = *(_DWORD *)(v2 + 12)) != 0 && *(_BYTE *)(v3 + 54) == 1 ) { v4 = *(_DWORD *)(v2 + 60); if ( v4 != 65535 ) { v5 = sub_494970(&dword_D61E090, v4, (int)&v12); if ( v5 ) { v6 = v5 + 1040; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); if ( sub_498120(v6, v7) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v9 = sub_497ED0((void *)v6, (int (__stdcall *)(_DWORD))sub_494710, v8); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v1 + 3580))(v1, v9); } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_GetoJinKQTeamType : Cannot found KQ Element", v4); } } --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::sp_GetJoinKQTeamType"; } else { --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::sp_GetJoinKQTeamType"; } v13 = -1; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D61E090: using guessed type int dword_D61E090; //----- (005619C0) -------------------------------------------------------- int __thiscall sub_5619C0(void *this, int a2) { int v2; // esi@1 __int16 v3; // ax@3 int v4; // eax@4 int v5; // eax@6 __int16 v6; // ax@8 int v7; // ecx@8 void (__thiscall *v8)(_DWORD, _DWORD); // edx@8 void (__thiscall *v9)(_DWORD, _DWORD); // edx@13 char v11; // [sp+Ch] [bp-98h]@8 int v12; // [sp+20h] [bp-84h]@1 int v13; // [sp+24h] [bp-80h]@8 int v14; // [sp+28h] [bp-7Ch]@8 __int16 v15; // [sp+2Ch] [bp-78h]@8 unsigned int v16; // [sp+94h] [bp-10h]@1 int v17; // [sp+A0h] [bp-4h]@1 int v18; // [sp+A4h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v2 = (int)this; v12 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoApply"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoApply"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoApply"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; if ( a2 ) { v3 = *(_WORD *)(a2 + 16); if ( v3 != -1 ) { v4 = sub_44F210((int)&dword_AA0A90, v3); if ( !v4 || (v5 = *(_DWORD *)(v4 + 4)) == 0 || *(_DWORD *)(v5 + 36) != 36 ) { v17 = -1; LABEL_17: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoApply"); } sub_4507A0((int)&v11, v2 + 159688, v2, v5, 0); LOBYTE(v17) = 1; sub_43C470(v2 + 159688, (int)&v11); sub_46FE30((int)&v13); v6 = *(_WORD *)(a2 + 16); v7 = *(_DWORD *)(a2 + 8); v14 = *(_DWORD *)(a2 + 12); v8 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 880); v15 = v6; v13 = v7; v8(v2, &v13); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 992))(v2); if ( *(_DWORD *)(a2 + 18) == 1 ) { v9 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3624); } else { if ( *(_DWORD *)(a2 + 18) != 2 ) { if ( *(_DWORD *)(a2 + 18) != 3 ) { sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_ply_ChatColorInfoApply : invalid chatcoloritemtype", *(_DWORD *)(a2 + 18)); LABEL_16: LOBYTE(v17) = 0; sub_4174B0(&v11); v17 = -1; goto LABEL_17; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 3624))(v2, *(_BYTE *)(a2 + 22)); } v9 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3632); } v9(v2, *(_BYTE *)(a2 + 22)); goto LABEL_16; } } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoApply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; //----- (00561B70) -------------------------------------------------------- int __thiscall sub_561B70(void *this) { void *v1; // esi@1 void *v2; // edi@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::sp_ChatColor_Save2World"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::sp_ChatColor_Save2World"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 16434; *(_DWORD *)((char *)v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_BYTE *)v2 + 6) = *((_BYTE *)v1 + 161781); *((_BYTE *)v2 + 7) = *((_BYTE *)v1 + 161782); if ( sub_4C81E0(&off_849C18, 8) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_ChatColor_Save2World : Packet Too Long", 8); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShinePlayer::sp_ChatColor_Save2World"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00561C80) -------------------------------------------------------- FILE *__thiscall sub_561C80(void *this) { void *v1; // edi@1 void *v2; // ebx@1 int v3; // eax@1 int v4; // ecx@1 signed int v5; // edx@1 int v6; // edx@6 int v7; // eax@6 int v8; // ebx@6 signed int v9; // ecx@6 FILE *result; // eax@12 int v11; // eax@13 v1 = off_849C18; v2 = this; *(_WORD *)off_849C18 = 16437; *(_DWORD *)((char *)v1 + 2) = (*(int (**)(void))(*(_DWORD *)this + 836))(); memcpy((char *)v1 + 6, (char *)v2 + 161924, 0x32u); v3 = (int)((char *)v1 + 56); v4 = (int)((char *)v2 + 161926); v5 = 12; do { *(_BYTE *)v3 = 0; if ( v2 != (void *)-161974 && *(_WORD *)v4 == -1 ) *(_BYTE *)v3 = 1; v4 += 2; ++v3; --v5; } while ( v5 ); v6 = (int)((char *)v2 + 161986); v7 = (int)((char *)v1 + 68); v8 = (int)((char *)v2 + 161950); v9 = 12; do { *(_BYTE *)v7 = 0; if ( v6 && *(_WORD *)v8 == -1 ) *(_BYTE *)v7 = 1; v8 += 2; ++v7; --v9; } while ( v9 ); if ( sub_4C81E0(&off_849C18, 80) ) { v11 = sub_428750((int)&dword_14D16430); result = (FILE *)sub_4C7EC0(&off_849C18, v11); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SaveUseItemMinimonInfo_DB : Packet Too Long", 80); } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (00561D70) -------------------------------------------------------- FILE *__thiscall sub_561D70(void *this) { void *v1; // edi@1 void *v2; // esi@1 FILE *result; // eax@2 int v4; // eax@3 v1 = off_849C18; v2 = this; *(_WORD *)off_849C18 = 16438; *((_WORD *)v1 + 1) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *((_DWORD *)v1 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); memcpy((char *)v1 + 8, (char *)v2 + 161924, 0x32u); if ( sub_4C81E0(&off_849C18, 58) ) { v4 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v4); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SaveUseItemMinimonInfo_World : Packet Too Long", 58); } return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (00561DF0) -------------------------------------------------------- int __thiscall sub_561DF0(void *this) { int v1; // esi@1 int (__stdcall *v2)(_DWORD, _DWORD); // edx@2 int result; // eax@2 int (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // edx@5 v1 = (int)this; if ( *((_BYTE *)this + 161924) ) { v2 = *(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772); *((_BYTE *)this + 161924) = 0; result = v2(4, 295); if ( *(_BYTE *)(v1 + 161925) != 1 ) result = sub_55F9A0(v1, 0); } if ( *(_BYTE *)(v1 + 161925) ) { v4 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 772); *(_BYTE *)(v1 + 161925) = 0; result = v4(v1, 4, 299); if ( *(_BYTE *)(v1 + 161924) != 1 ) result = sub_55F9A0(v1, 0); } return result; } //----- (00561E60) -------------------------------------------------------- void __thiscall sub_561E60(void *this, unsigned __int8 a2) { int v2; // esi@1 void *v3; // eax@2 char *v4; // edi@2 int v5; // eax@4 signed int v6; // eax@5 int v7; // ecx@5 void (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // edx@9 v2 = (int)this; if ( a2 < 0xCu ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4397; v4 = (char *)this + 2 * a2 + 161926; *((_WORD *)v3 + 1) = 13896; *((_WORD *)v3 + 2) = *(_WORD *)v4; if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_UseItemMinimon_Routine : Packet Too Long", 6); } *(_WORD *)v4 = -1; v6 = 0; v7 = v2 + 161926; while ( *(_WORD *)v7 == -1 ) { ++v6; v7 += 2; if ( v6 >= 12 ) { if ( *(_BYTE *)(v2 + 161924) ) { v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 772); *(_BYTE *)(v2 + 161924) = 0; v8(v2, 4, 295); if ( *(_BYTE *)(v2 + 161925) != 1 ) sub_55F9A0(v2, 0); } return; } } } } //----- (00561F40) -------------------------------------------------------- void __thiscall sub_561F40(int this) { int v1; // esi@1 __int16 v2; // di@6 int v3; // ebx@7 int v4; // eax@10 int v5; // eax@11 int v6; // [sp+4h] [bp-Ch]@7 int v7; // [sp+8h] [bp-8h]@2 int v8; // [sp+Ch] [bp-4h]@2 v1 = this; if ( *(_BYTE *)(this + 161924) ) { v8 = 0; v7 = this + 161926; do { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3736))(v1) == 1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2532))(v1) == 1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3864))(v1) ) break; v2 = *(_WORD *)v7; if ( *(_WORD *)v7 != -1 ) { v3 = sub_587680((void *)v1, v2, (int)&v6); if ( v3 ) { v4 = sub_486C40((int)&dword_13258868, v2); if ( v4 ) { v5 = *(_DWORD *)v4; if ( v5 ) { if ( *(_DWORD *)(v5 + 32) != 4 || sub_40C070((void *)(v1 + 432), *(_DWORD *)(v5 + 82), *(_WORD *)(v5 + 36)) != 1 ) sub_55FA80(v1, v6, v3); } } } else { if ( sub_63F770((void *)(v1 + 36484), v2) <= 0 ) sub_561E60((void *)v1, v8); } } v7 += 2; ++v8; } while ( v8 < 12 ); } } // 13258868: using guessed type int dword_13258868; //----- (00562050) -------------------------------------------------------- void __thiscall sub_562050(void *this, unsigned __int8 a2) { int v2; // esi@1 void *v3; // eax@2 char *v4; // edi@2 int v5; // eax@4 signed int v6; // eax@5 int v7; // ecx@5 void (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // edx@9 v2 = (int)this; if ( a2 < 0xCu ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4397; v4 = (char *)this + 2 * a2 + 161950; *((_WORD *)v3 + 1) = 13896; *((_WORD *)v3 + 2) = *(_WORD *)v4; if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_UseItemMinimon_Routine : Packet Too Long", 6); } *(_WORD *)v4 = -1; v6 = 0; v7 = v2 + 161950; while ( *(_WORD *)v7 == -1 ) { ++v6; v7 += 2; if ( v6 >= 12 ) { if ( *(_BYTE *)(v2 + 161925) ) { v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 772); *(_BYTE *)(v2 + 161925) = 0; v8(v2, 4, 299); if ( *(_BYTE *)(v2 + 161924) != 1 ) sub_55F9A0(v2, 0); } return; } } } } //----- (00562130) -------------------------------------------------------- void __thiscall sub_562130(int this) { int v1; // esi@1 signed int v2; // ebx@2 __int16 v3; // di@6 int v4; // eax@7 int v5; // [sp+4h] [bp-8h]@7 __int16 *v6; // [sp+8h] [bp-4h]@2 v1 = this; if ( *(_BYTE *)(this + 161925) ) { v2 = 0; v6 = (__int16 *)(this + 161950); do { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3736))(v1) == 1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2532))(v1) == 1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3864))(v1) ) break; v3 = *v6; if ( *v6 != -1 ) { v4 = sub_587680((void *)v1, v3, (int)&v5); if ( v4 ) { sub_55FA80(v1, v5, v4); } else { if ( sub_63F770((void *)(v1 + 36484), v3) <= 0 ) sub_562050((void *)v1, v2); } } ++v6; ++v2; } while ( v2 < 12 ); } } //----- (005621E0) -------------------------------------------------------- int __userpurge sub_5621E0(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 v5 = a1; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_NORMAL_ITEM_ON_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_NORMAL_ITEM_ON_REQ"; dword_750AB8[dword_750CB8++] = -1; sub_55FC90(v5, a2, v5, a3 + 2); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_NORMAL_ITEM_ON_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00562290) -------------------------------------------------------- int __thiscall sub_562290(void *this, int a2, int a3, int a4) { int v4; // esi@1 void (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // eax@2 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_NORMAL_ITEM_OFF_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_NORMAL_ITEM_OFF_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(v4 + 161924) ) { v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772); *(_BYTE *)(v4 + 161924) = 0; v5(v4, 4, 295); if ( *(_BYTE *)(v4 + 161925) != 1 ) sub_55F9A0(v4, 0); } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_NORMAL_ITEM_OFF_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00562360) -------------------------------------------------------- int __userpurge sub_562360(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 v5 = a1; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_CHARGED_ITEM_ON_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_CHARGED_ITEM_ON_REQ"; dword_750AB8[dword_750CB8++] = -1; sub_55FE40(v5, a2, v5, a3 + 2); --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_CHARGED_ITEM_ON_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00562410) -------------------------------------------------------- int __thiscall sub_562410(void *this, int a2, int a3, int a4) { int v4; // esi@1 void (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // eax@2 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_CHARGED_ITEM_OFF_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_CHARGED_ITEM_OFF_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(v4 + 161925) ) { v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772); *(_BYTE *)(v4 + 161925) = 0; v5(v4, 4, 299); if ( *(_BYTE *)(v4 + 161924) != 1 ) sub_55F9A0(v4, 0); } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_USEITEM_MINIMON_CHARGED_ITEM_OFF_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005624E0) -------------------------------------------------------- int __thiscall sub_5624E0(void *this, int a2, int a3, int a4) { int v4; // ebx@1 signed int v5; // edi@1 int v6; // eax@5 int v7; // edx@6 int v8; // eax@6 void *v9; // edi@6 int v10; // eax@9 __int16 v11; // ax@12 bool v12; // zf@16 void (__thiscall *v13)(_DWORD); // eax@17 int v15; // [sp-4h] [bp-34h]@4 signed int v16; // [sp-4h] [bp-34h]@10 char v17; // [sp+10h] [bp-20h]@16 int v18; // [sp+20h] [bp-10h]@1 int v19; // [sp+2Ch] [bp-4h]@1 v4 = (int)this; v18 = (int)"ShineObjectClass::ShinePlayer::SP_NC_CHAR_CHARGEDBUFF_ERASE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::SP_NC_CHAR_CHARGEDBUFF_ERASE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::SP_NC_CHAR_CHARGEDBUFF_ERASE_REQ"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( !(dword_132541E0 & 1) ) { dword_132541E0 |= 1u; word_132541DC = 126; atexit(nullsub_131); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132541DC ) { v6 = *(_WORD *)(a2 + 2); if ( (unsigned __int16)v6 >= *(_WORD *)(v4 + 159692) ) { LABEL_8: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 303, 13915); v19 = v5; LABEL_20: v15 = (int)"ShineObjectClass::ShinePlayer::SP_NC_CHAR_CHARGEDBUFF_ERASE_REQ"; goto LABEL_21; } v7 = 3 * v6; v8 = *(_DWORD *)(v4 + 159696); v9 = *(void **)(v8 + 4 * v7); if ( !v9 ) { v5 = -1; goto LABEL_8; } v10 = sub_417060(*(void **)(v8 + 4 * v7)); if ( v10 ) { v11 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v10 + 2)); if ( v11 == -1 ) { v16 = 13914; } else { if ( sub_44F1A0((int)&unk_AA0BC0, v11) ) { sub_450240(v9, v4 + 159688, *(_WORD *)(a2 + 2), v4); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 303, 13912); *(_BYTE *)(v4 + 160358) = 0; sub_450600((int)&v17, v4 + 159688, v4); memcpy((void *)(v4 + 160312), &byte_13244DC0, 0x2Cu); LOBYTE(v19) = 1; *(_WORD *)(v4 + 160356) = *((_WORD *)&byte_13244DC0 + 22); sub_43C470(v4 + 159688, (int)&v17); v12 = *(_BYTE *)(v4 + 160358) == 1; *(_BYTE *)(v4 + 3820) = 1; if ( v12 ) { v13 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 860); *(_BYTE *)(v4 + 160358) = 0; v13(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 872))(v4); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 52))(v4, 1); LOBYTE(v19) = 0; sub_450670((int)&v17); goto LABEL_19; } v16 = 13916; } } else { v16 = 13915; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 303, v16); LABEL_19: v19 = -1; goto LABEL_20; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 303, 13913); v19 = -1; v15 = (int)"ShineObjectClass::ShinePlayer::SP_NC_CHAR_CHARGEDBUFF_ERASE_REQ"; LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13244DC0: using guessed type char byte_13244DC0; // 132541DC: using guessed type __int16 word_132541DC; // 132541E0: using guessed type int dword_132541E0; // 14D20890: using guessed type int dword_14D20890; //----- (00562730) -------------------------------------------------------- unsigned int __thiscall sub_562730(int this, unsigned int a2) { if ( (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 3 <= a2 ) sub_6517D8((int)"invalid vector subscript"); return *(_DWORD *)this + 8 * a2; } //----- (00562760) -------------------------------------------------------- char __thiscall sub_562760(void *this) { int v1; // esi@1 unsigned int v2; // edi@1 char v3; // bl@1 char result; // al@2 int v5; // ecx@3 int v6; // edx@3 int v7; // eax@3 unsigned int v8; // ecx@3 unsigned __int16 v9; // [sp+Ch] [bp-4h]@1 v1 = (int)this; v2 = dword_14D129E8; v3 = sub_587540((int)&dword_13258298); v9 = sub_587510((int)&dword_13258298); if ( *(_DWORD *)(v1 + 161484) <= v2 ) { v5 = 4 * *(_DWORD *)(v1 + 161480); *(_DWORD *)(v5 + *(_DWORD *)(v1 + 161476)) = v2; v6 = (*(_DWORD *)(v1 + 161480) + 1) % (unsigned __int8)v3; v7 = *(_DWORD *)(v1 + 161476); *(_DWORD *)(v1 + 161480) = v6; v8 = *(_DWORD *)(v7 + v5); if ( v8 && v8 <= *(_DWORD *)(v7 + 4 * v6) + (unsigned int)v9 ) { sub_5609B0((void *)v1, v2); result = 1; } else { result = 0; } } else { sub_55E7A0(v1); result = 1; } return result; } // 13258298: using guessed type int dword_13258298; // 14D129E8: using guessed type int dword_14D129E8; //----- (00562800) -------------------------------------------------------- int __thiscall sub_562800(void *this, int a2) { void *v2; // esi@1 void *v3; // edi@4 unsigned __int16 v4; // bx@11 unsigned __int16 v5; // dx@12 int v6; // ecx@13 int v7; // eax@13 unsigned __int16 v8; // ST18_2@13 bool v9; // zf@14 int v10; // ecx@14 void *v11; // ecx@15 int v12; // eax@16 int v13; // eax@18 int v14; // eax@27 int v16; // [sp-4h] [bp-30h]@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoClear"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoClear"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && *(_DWORD *)(a2 + 36) == 36 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 16433; *(_DWORD *)((char *)v3 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_BYTE *)v3 + 6) = *((_BYTE *)v2 + 161781); *((_BYTE *)v3 + 7) = *((_BYTE *)v2 + 161782); if ( *(_WORD *)(a2 + 40) == 1 ) { *((_BYTE *)v3 + 6) = 0; } else { if ( *(_WORD *)(a2 + 40) == 2 ) { *((_BYTE *)v3 + 7) = 0; } else { if ( *(_WORD *)(a2 + 40) != 3 ) { sub_639100(&unk_86DDD8, (int)"so_ply_ChatColorInfoClear : Invalid EffectCalue", *(_WORD *)(a2 + 40)); LABEL_29: --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoClear"; return sub_467660((int)&unk_D020420, v16); } *((_WORD *)v3 + 3) = 0; } } v4 = *(_WORD *)(*((_DWORD *)v2 + 39924) + 12 * *((_WORD *)v2 + 79851) + 4); while ( 1 ) { v5 = *((_WORD *)v2 + 79846); if ( v4 >= v5 ) break; v6 = *((_DWORD *)v2 + 39924); v7 = v4; v8 = v4; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( v8 >= v5 ) break; v9 = *(_BYTE *)(v6 + 12 * v7 + 8) == 0; v10 = v6 + 12 * v7; if ( v9 ) break; v11 = *(void **)v10; if ( !v11 ) break; v12 = sub_417060(v11); if ( v12 ) { if ( *(_DWORD *)(v12 + 36) == 36 ) { v13 = *(_WORD *)(v12 + 40); if ( (_WORD)v13 != *(_WORD *)(a2 + 40) ) { switch ( v13 ) { case 1: *((_BYTE *)v3 + 6) = *((_BYTE *)v2 + 161781); break; case 2: *((_BYTE *)v3 + 7) = *((_BYTE *)v2 + 161782); break; case 3: *((_BYTE *)v3 + 6) = *((_BYTE *)v2 + 161781); *((_BYTE *)v3 + 7) = *((_BYTE *)v2 + 161782); break; } } } } } if ( sub_4C81E0(&off_849C18, 8) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHAT_COLOR_CHANGE_REQ : Packet Too Long", 8); } *((_BYTE *)v2 + 161781) = *((_BYTE *)v3 + 6); *((_BYTE *)v2 + 161782) = *((_BYTE *)v3 + 7); goto LABEL_29; } --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChatColorInfoClear"; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00562A20) -------------------------------------------------------- void __thiscall sub_562A20(int this, __int16 a2) { int v2; // edi@1 signed int v3; // esi@3 int v4; // eax@3 signed int v5; // esi@7 int v6; // eax@7 v2 = this; if ( a2 != -1 ) { if ( *(_BYTE *)(this + 161924) == 1 ) { v3 = 0; v4 = this + 161926; while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 2; if ( v3 >= 12 ) goto LABEL_6; } if ( sub_63F770((void *)(this + 36484), a2) <= 0 ) sub_561E60((void *)v2, v3); } else { LABEL_6: if ( *(_BYTE *)(this + 161925) == 1 ) { v5 = 0; v6 = this + 161950; while ( *(_WORD *)v6 != a2 ) { ++v5; v6 += 2; if ( v5 >= 12 ) return; } if ( sub_63F770((void *)(this + 36484), a2) <= 0 ) sub_562050((void *)v2, v5); } } } } //----- (00562AD0) -------------------------------------------------------- void __thiscall sub_562AD0(void *this) { int v1; // esi@1 int v2; // eax@1 v1 = (int)this; v2 = *(_DWORD *)((char *)this + 122); if ( v2 && *(_BYTE *)(*(_DWORD *)(v2 + 12) + 158) && (unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2852))(0) != 1 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v1 + 58688) + 16))(v1 + 58688) && !(*(_BYTE *)(v1 + 85728) & 8) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2784))(v1) != 1 ) { sub_561F40(v1); sub_562130(v1); } } } //----- (00562B40) -------------------------------------------------------- void __thiscall sub_562B40(void *this, char a2) { void *v2; // esi@1 int v3; // eax@3 int v4; // edi@3 int v5; // eax@4 int v6; // edi@7 v2 = this; sub_55B620(this, a2); if ( a2 ) { if ( !*((_DWORD *)v2 + 40345) ) { v3 = operator new(0x324u); v4 = v3; if ( v3 ) { sub_54CF80(v3 + 8); sub_547DF0((void *)(v4 + 628)); v5 = v4; } else { v5 = 0; } *((_DWORD *)v2 + 40345) = v5; *(_DWORD *)(v5 + 800) = off_8492CC; *(_DWORD *)(*((_DWORD *)v2 + 40345) + 4) = v2; *(_DWORD *)(*((_DWORD *)v2 + 40345) + 624) = (*(int (__thiscall **)(char *, void *, int))(*((_DWORD *)v2 + 40346) + 16))( (char *)v2 + 161384, v2, *((_DWORD *)v2 + 40345) + 8); sub_4B8270((void *)(*((_DWORD *)v2 + 40345) + 628), (int)((char *)v2 + 161472)); } } else { v6 = *((_DWORD *)v2 + 40345); if ( v6 ) { sub_547EC0(v6 + 628); sub_54D040((void *)(v6 + 8)); operator delete((void *)v6); *((_DWORD *)v2 + 40345) = 0; } } } // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (00562C90) -------------------------------------------------------- int __cdecl sub_562C90(int a1, int a2, int a3) { int v3; // edi@1 int v4; // edx@2 unsigned int v5; // ebx@2 unsigned int v6; // esi@6 unsigned int v7; // ecx@6 int v8; // eax@9 int v9; // eax@11 int result; // eax@15 unsigned int v11; // [sp+Ch] [bp+8h]@2 v3 = a1; if ( a1 == a2 ) { result = a1; } else { v4 = a3; v5 = *(_DWORD *)(a3 + 16); v11 = *(_DWORD *)(a3 + 20); while ( 1 ) { if ( v11 >= 0x10 ) v4 = *(_DWORD *)v4; v6 = *(_DWORD *)(v3 + 16); v7 = *(_DWORD *)(v3 + 16); if ( v6 >= v5 ) v7 = v5; v8 = *(_DWORD *)(v3 + 20) < 0x10u ? v3 : *(_DWORD *)v3; v9 = sub_4189B0(v8, v4, v7); if ( !v9 ) { if ( v6 >= v5 ) { LOBYTE(v9) = v6 != v5; if ( !v9 ) break; } } v3 += 28; if ( v3 == a2 ) break; v4 = a3; } result = v3; } return result; } //----- (00562D10) -------------------------------------------------------- int __thiscall sub_562D10(void *this, int a2) { int v2; // esi@1 __int16 v3; // ax@5 int v4; // edi@5 int v5; // eax@6 int v6; // ebx@6 int *v7; // ebx@11 int v8; // edi@12 int v9; // eax@16 int v11; // [sp+14h] [bp-14h]@6 int v12; // [sp+18h] [bp-10h]@16 int v13; // [sp+24h] [bp-4h]@1 signed int v14; // [sp+30h] [bp+8h]@11 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::so_ply_ItemAction_UnEquip"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::so_ply_ItemAction_UnEquip"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( a2 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1488))(v2) && (v3 = sub_63FD50(a2), v4 = (unsigned __int16)v3, v3 != -1) ) { v5 = sub_418CB0((int)&dword_14D20890, v3); v6 = v5; v11 = v5; if ( v5 && *(_DWORD *)v5 ) { if ( !sub_48BD10(v4, v2) ) sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_ItemAction_UnEquip. ShineItemID=", v4); if ( *(_DWORD *)(*(_DWORD *)v6 + 102) == 5 ) { v7 = (int *)((char *)sub_5CF620((void *)a2) + 58); v14 = 3; do { v8 = *(_WORD *)v7; if ( !sub_48BD10(*(_WORD *)v7, v2) ) sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_ItemAction_UnEquip. ShineItemID=", v8); v7 = (int *)((char *)v7 + 3); --v14; } while ( v14 ); v6 = v11; } v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1484))(v2, *(_DWORD *)v6 + 342); if ( sub_5C5440((const char *)(*(_DWORD *)v6 + 342), v9, (int)&v12) == 1 && !(*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 1500))(v2, v12, 65535) ) sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_ply_ItemAction_UnEquip. SetItem Can`t Del ActionID", (unsigned __int16)v12); } v13 = -1; } else { v13 = -1; } --dword_750CB8; } else { --dword_750CB8; v13 = -1; } return sub_467660((int)&unk_D020420, (int)"ShinePlayer::so_ply_ItemAction_UnEquip"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00562ED0) -------------------------------------------------------- int __thiscall sub_562ED0(void *this, int a2, int a3) { void *v3; // ebx@1 int result; // eax@1 int v5; // edi@1 int v6; // esi@4 __int16 v7; // ax@7 int v8; // edi@7 int v9; // edx@9 int v10; // esi@9 int v11; // eax@11 int v12; // ecx@13 int v13; // eax@20 void *v14; // [sp-1Ch] [bp-48h]@7 int v15; // [sp-18h] [bp-44h]@7 int v16; // [sp-14h] [bp-40h]@7 int v17; // [sp-10h] [bp-3Ch]@7 int v18; // [sp-Ch] [bp-38h]@7 unsigned int v19; // [sp-8h] [bp-34h]@7 int v20; // [sp-4h] [bp-30h]@7 void **v21; // [sp+10h] [bp-1Ch]@7 int v22; // [sp+14h] [bp-18h]@1 void *v23; // [sp+18h] [bp-14h]@1 int v24; // [sp+1Ch] [bp-10h]@4 int v25; // [sp+28h] [bp-4h]@7 v3 = this; v23 = this; result = a3; v5 = a3; v22 = a3; if ( a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 5 ) { if ( *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1072))(v3) + 3500) > 0u ) { v6 = *(_DWORD *)(a2 + 102); v24 = *(_DWORD *)((char *)v3 + 102); if ( v24 ) { if ( v6 ) { if ( dword_132541E8 & 1 ) { v8 = dword_132541E4; } else { dword_132541E8 |= 1u; v25 = 0; v21 = &v14; sub_4244F0((int)&v14, "DMG_MinusArea"); v7 = sub_62BD30((int)&unk_1325CFB8, v14, v15, v16, v17, v18, v19, v20); v8 = (unsigned __int16)v7; dword_132541E4 = (unsigned __int16)v7; v25 = -1; } v9 = *(_DWORD *)v6; v10 = *(_DWORD *)(v6 + 4); if ( v8 * v8 < (unsigned int)((**(_DWORD **)((char *)v3 + 102) - v9) * (**(_DWORD **)((char *)v3 + 102) - v9) + (*(_DWORD *)(*(_DWORD *)((char *)v3 + 102) + 4) - v10) * (*(_DWORD *)(*(_DWORD *)((char *)v3 + 102) + 4) - v10)) ) return a3; v11 = *(_DWORD *)v24; if ( *(_DWORD *)v24 == v9 && *(_DWORD *)(v24 + 4) == v10 ) goto LABEL_25; v20 = *(_DWORD *)(v24 + 4) - v10; v12 = **(_BYTE **)(a2 + 106) - (unsigned __int8)sub_401220(&unk_AF09DA8, v11 - v9, v20); if ( v12 < 0 ) v12 = -v12; if ( v12 > 90 ) v12 += -180 - 180 * (v12 - 91) / 0xB4u; if ( v12 < 0 ) v12 = -v12; if ( v12 <= 45 ) { LABEL_25: v5 = v22; } else { v13 = (*(int (**)(void))(*(_DWORD *)v23 + 1072))(); v5 = a3 - (((signed int)((unsigned __int64)(a3 * *(_WORD *)(v13 + 3500) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a3 * *(_WORD *)(v13 + 3500) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); } } } } } result = v5; } return result; } // 132541E4: using guessed type int dword_132541E4; // 132541E8: using guessed type int dword_132541E8; //----- (00563090) -------------------------------------------------------- char __cdecl sub_563090(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748010 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_748014 ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 5) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 5); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748010: using guessed type int dword_748010; // 748014: using guessed type int dword_748014; // 86FEB8: using guessed type int __security_cookie; //----- (005631C0) -------------------------------------------------------- char __thiscall sub_5631C0(int this, char a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@4 __int16 v5; // ax@4 int v6; // eax@8 void *v7; // edi@8 int v8; // eax@10 v2 = this; if ( a2 == ((*(_BYTE *)(this + 23825) >> 3) & 1) ) { result = sub_55E250((void *)this, a2); } else { if ( a2 != 1 || (v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 32816))(this + 32816, 25), v5 = sub_63FD50(v4), -1 != v5) && sub_4A18B0((int)&unk_133597B0, v5) == 1 || sub_55E380(v2, 28) ) { v6 = *(_DWORD *)(v2 + 32650); *(_BYTE *)(v2 + 23825) ^= (*(_BYTE *)(v2 + 23825) ^ 8 * a2) & 8; *(_BYTE *)(v6 + 196) = a2; sub_55E250((void *)v2, a2); v7 = off_849C18; *(_WORD *)off_849C18 = 16412; *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v7 + 1) = (*(_BYTE *)(v2 + 23825) >> 3) & 1; if ( sub_4C81E0(&off_849C18, 8) ) { v8 = sub_428750((int)&dword_14D16430); result = sub_4C7EC0(&off_849C18, v8); } else { result = (unsigned int)sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_SetAutoPick : Packet Too Long", 8); } } else { result = sub_563090(v2, 7681, "ShineObjectClass::ShinePlayer::sp_SetAutoPick"); } } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (005632F0) -------------------------------------------------------- void __thiscall sub_5632F0(void *this) { int v1; // esi@1 unsigned int v2; // edi@2 unsigned int v3; // eax@2 int (__thiscall *v4)(_DWORD); // eax@3 void *v5; // eax@3 int v6; // [sp+Ch] [bp-38h]@2 int v7; // [sp+10h] [bp-34h]@2 int v8; // [sp+14h] [bp-30h]@2 int v9; // [sp+18h] [bp-2Ch]@2 int v10; // [sp+1Ch] [bp-28h]@2 int v11; // [sp+20h] [bp-24h]@2 int v12; // [sp+24h] [bp-20h]@2 void *v13; // [sp+28h] [bp-1Ch]@3 int v14; // [sp+2Ch] [bp-18h]@3 int v15; // [sp+30h] [bp-14h]@3 int v16; // [sp+40h] [bp-4h]@3 v1 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { v2 = 100 * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1256))(v1); v3 = v2 / (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1264))(v1); v7 = 0; v8 = 10; v9 = 0; v6 = 6; v10 = v1; v12 = v1; v11 = v1; if ( (signed int)v3 < 20 ) { v13 = 0; v14 = 0; v15 = 0; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1488); v16 = 0; v7 = 0; v5 = (void *)v4(v1); sub_5CF1E0(v5, (int)&v13, (int)&v6); if ( v13 ) operator delete(v13); } } } //----- (005633C0) -------------------------------------------------------- void __thiscall sub_5633C0(void *this) { int v1; // esi@1 int (__thiscall *v2)(_DWORD); // eax@2 void *v3; // eax@2 int v4; // [sp+Ch] [bp-38h]@2 int v5; // [sp+10h] [bp-34h]@2 int v6; // [sp+14h] [bp-30h]@2 int v7; // [sp+18h] [bp-2Ch]@2 int v8; // [sp+1Ch] [bp-28h]@2 int v9; // [sp+20h] [bp-24h]@2 int v10; // [sp+24h] [bp-20h]@2 void *v11; // [sp+28h] [bp-1Ch]@2 int v12; // [sp+2Ch] [bp-18h]@2 int v13; // [sp+30h] [bp-14h]@2 int v14; // [sp+40h] [bp-4h]@2 v1 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1260))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1); v6 = 10; v7 = 0; v4 = 6; v8 = v1; v10 = v1; v9 = v1; v11 = 0; v12 = 0; v13 = 0; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1488); v14 = 0; v5 = 2; v3 = (void *)v2(v1); sub_5CF1E0(v3, (int)&v11, (int)&v4); if ( v11 ) operator delete(v11); } } //----- (00563480) -------------------------------------------------------- void __thiscall sub_563480(void *this) { int v1; // esi@1 signed int v2; // edi@2 int (__thiscall *v3)(_DWORD); // eax@3 void *v4; // eax@3 int (__thiscall *v5)(_DWORD); // eax@7 int v6; // eax@7 int (__thiscall *v7)(_DWORD); // eax@11 int v8; // [sp-8h] [bp-50h]@7 int v9; // [sp-4h] [bp-4Ch]@7 int v10; // [sp+10h] [bp-38h]@2 int v11; // [sp+14h] [bp-34h]@2 int v12; // [sp+18h] [bp-30h]@2 int v13; // [sp+1Ch] [bp-2Ch]@2 int v14; // [sp+20h] [bp-28h]@2 int v15; // [sp+24h] [bp-24h]@2 int v16; // [sp+28h] [bp-20h]@2 void *v17; // [sp+2Ch] [bp-1Ch]@2 int v18; // [sp+30h] [bp-18h]@2 int v19; // [sp+34h] [bp-14h]@2 int v20; // [sp+44h] [bp-4h]@2 v1 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1488))() ) { v2 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1240))(v1); v11 = 0; v12 = 10; v13 = 0; v10 = 6; v14 = v1; v16 = v1; v15 = v1; v17 = 0; v18 = 0; v19 = 0; v20 = 0; if ( v2 <= 40 ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1488); v11 = 1; v4 = (void *)v3(v1); sub_5CF1E0(v4, (int)&v17, (int)&v10); } if ( v2 < 20 ) { v11 = 3; LABEL_14: v9 = (int)&v10; v8 = (int)&v17; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1488))(v1); goto LABEL_15; } if ( v2 >= 50 ) { if ( v2 < 80 ) { v11 = 5; goto LABEL_14; } if ( v2 >= 100 ) { if ( v2 > 150 ) goto LABEL_16; v11 = 7; goto LABEL_14; } v9 = (int)&v10; v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1488); v8 = (int)&v17; v11 = 6; v6 = v7(v1); } else { v9 = (int)&v10; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1488); v8 = (int)&v17; v11 = 4; v6 = v5(v1); } LABEL_15: sub_5CF1E0((void *)v6, v8, v9); LABEL_16: if ( v17 ) operator delete(v17); } } //----- (005635D0) -------------------------------------------------------- char __thiscall sub_5635D0(void *this, int a2, int a3) { int v3; // edi@1 char result; // al@4 int v5; // esi@5 int v6; // eax@7 char v7; // bl@7 int v8; // esi@8 char v9; // al@10 int v10; // edx@13 int v11; // eax@13 unsigned __int16 v12; // di@13 __int16 v13; // di@15 unsigned __int8 v14; // al@19 __int16 v15; // ax@20 void *v16; // esi@26 void *v17; // ebx@31 int v18; // esi@33 int v19; // eax@33 int (__thiscall *v20)(_DWORD); // edx@33 int v21; // eax@33 int v22; // edi@36 void *v23; // ebx@36 int (__thiscall *v24)(_DWORD); // eax@36 int v25; // eax@36 int v26; // ebx@36 int v27; // eax@36 int v28; // esi@39 unsigned int v29; // edi@42 int v30; // ST0C_4@42 char *v31; // eax@42 void *v32; // ebx@42 int v33; // eax@42 int v34; // eax@43 const char *v35; // eax@44 int v36; // edi@45 int v37; // eax@45 int v38; // edi@48 void *v39; // edi@48 int v40; // eax@48 int v41; // eax@48 int v42; // edx@48 __int16 v43; // dx@48 int v44; // eax@48 __int16 v45; // cx@48 int v46; // ebx@48 int v47; // eax@48 __int16 v48; // ax@48 int v49; // ebx@49 int v50; // eax@56 unsigned int v51; // [sp-4h] [bp-108h]@1 char v52; // [sp+Ch] [bp-F8h]@33 int v53; // [sp+1Ch] [bp-E8h]@42 __int16 v54; // [sp+20h] [bp-E4h]@22 int v55; // [sp+24h] [bp-E0h]@22 char v56; // [sp+28h] [bp-DCh]@33 void *v57; // [sp+34h] [bp-D0h]@7 void *v58; // [sp+38h] [bp-CCh]@7 int v59; // [sp+3Ch] [bp-C8h]@7 int v60; // [sp+44h] [bp-C0h]@5 int v61; // [sp+48h] [bp-BCh]@31 int v62; // [sp+4Ch] [bp-B8h]@5 unsigned int v63; // [sp+50h] [bp-B4h]@38 int v64; // [sp+54h] [bp-B0h]@1 void *v65; // [sp+58h] [bp-ACh]@1 int v66; // [sp+5Ch] [bp-A8h]@1 int v67; // [sp+60h] [bp-A4h]@7 char v68; // [sp+67h] [bp-9Dh]@7 int v69; // [sp+68h] [bp-9Ch]@7 int v70; // [sp+6Ch] [bp-98h]@42 int v71; // [sp+70h] [bp-94h]@48 __int16 v72; // [sp+74h] [bp-90h]@42 char v73; // [sp+DCh] [bp-28h]@36 unsigned int v74; // [sp+F4h] [bp-10h]@1 int v75; // [sp+100h] [bp-4h]@7 int v76; // [sp+104h] [bp+0h]@1 v74 = (unsigned int)&v76 ^ __security_cookie; v51 = (unsigned int)&v76 ^ __security_cookie; v3 = a3; v65 = this; v64 = a2; v66 = a3; if ( !a3 ) return 0; *(_WORD *)a3 = 1792; if ( !a2 ) { *(_WORD *)a3 = 1794; return 0; } v5 = *(_WORD *)(a2 + 8); sub_5C5A30((int)&v62, *(_WORD *)(a2 + 8)); sub_5C5A70((int)&v60, v5); if ( v62 == v60 ) { sub_639100(&unk_86DDD8, (int)"MysteryBoltTable::ItemBoxOpen Not Register ItemId :", v5); *(_WORD *)a3 = 1828; return 0; } v57 = 0; v58 = 0; v59 = 0; v75 = 0; sub_492BD0((int)&v57, 0xAu); v6 = v62; v69 = 0; v67 = 0; v7 = 0; v68 = 0; if ( v62 == v60 ) goto LABEL_26; do { v8 = *(_DWORD *)(v6 + 16); if ( !v8 ) { sub_639100(&unk_86DDD8, (int)"MysteryBoltTable::ItemBoxOpen NULL", 0); goto LABEL_24; } v9 = *(_BYTE *)(v8 + 71); if ( v9 != v68 ) { v68 = *(_BYTE *)(v8 + 71); v69 = 0; v7 = 0; } if ( v9 ) { if ( v7 == 1 ) goto LABEL_24; v13 = v69; if ( !(_WORD)v69 ) v67 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v12 = *(_WORD *)(v8 + 69) + v13; LOWORD(v69) = v12; } else { v10 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v11 = *(_WORD *)(v8 + 69); v67 = v10; v69 = v11; v12 = v11; } if ( v12 >= (unsigned __int16)v67 ) { v14 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v65 + 1244))(v51); if ( sub_5C58E0(*(_DWORD *)(v8 + 32), v14) ) { v15 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v8 + 36)); if ( v15 == -1 ) { sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::ItemBoxOpen :", v8 + 36); } else { v55 = *(_BYTE *)(v8 + 68); v54 = v15; sub_5F1770((int)&v57, (unsigned int)&v54); } } v7 = 1; } LABEL_24: sub_5CC3C0(&v62); v6 = v62; } while ( v62 != v60 ); v3 = v66; LABEL_26: v16 = v57; if ( v57 == v58 ) { *(_WORD *)v3 = 1828; LABEL_28: if ( v16 ) operator delete(v16); return 0; } v17 = v65; v61 = (signed int)(v58 - v57) >> 3; if ( sub_55E910(v65) < (signed int)(v58 - v57) >> 3 ) { *(_WORD *)v66 = 1827; goto LABEL_28; } v18 = (int)((char *)v17 + 36484); v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v17 + 1176))(v17); sub_43BB20((int)&v52, (int)((char *)v17 + 36484), v19); v20 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v17 + 2004); LOBYTE(v75) = 1; v21 = v20(v17); sub_43BC00((int)&v56, 9, (int)&v52, v21); LOBYTE(v75) = 2; if ( !sub_486D40(&v56) ) { *(_WORD *)v66 = 1827; LABEL_35: LOBYTE(v75) = 1; nullsub_2(&v56); LOBYTE(v75) = 0; sub_43BB10(&v52); sub_424190(&v57); return 0; } v22 = (int)off_849C18; v23 = v65; *(_WORD *)off_849C18 = 13470; *(_WORD *)(v22 + 2) = *((_WORD *)v23 + 2); v24 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v23 + 836); v67 = v22; v25 = v24(v23); v26 = (int)((char *)v23 + 58688); *(_DWORD *)(v22 + 4) = v25; v69 = v26; *(_WORD *)(v22 + 8) = sub_4802C0(v26); v27 = v64; *(_DWORD *)(v22 + 10) = *(_DWORD *)v64; *(_DWORD *)(v22 + 14) = *(_DWORD *)(v27 + 4); *(_WORD *)(v22 + 18) = *(_WORD *)(v27 + 8); *(_BYTE *)(v22 + 20) = v61; sub_63FF00((int)&v73, v18, *(_DWORD *)v27, *(_DWORD *)(v27 + 4), 0); LOBYTE(v75) = 3; if ( !sub_43BBB0(&v73) ) { *(_WORD *)v66 = 1829; LOBYTE(v75) = 2; sub_43BB10(&v73); goto LABEL_35; } (*(void (__thiscall **)(int, char *))(*(_DWORD *)v26 + 52))(v26, &v73); v64 = 38 * v61 + v22 + 21; v63 = 0; if ( v61 ) { v28 = v22 + 33; while ( 1 ) { v55 = sub_43BC20(&v56); if ( !v55 ) { *(_WORD *)v66 = 1827; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v26 + 40))(v26, *(_WORD *)(v22 + 8)); goto LABEL_52; } if ( v61 <= v63 ) sub_6517D8((int)"invalid vector subscript"); v29 = *((_WORD *)v57 + 4 * v63); v53 = *((_WORD *)v57 + 4 * v63); v30 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v31 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v70, v29, 2, *((_DWORD *)v31 + 4), v30); v72 = v29; v32 = sub_63ACA0(dword_1508B168, v29); (*(void (__thiscall **)(void *, unsigned int, int *, _DWORD, unsigned int))(*(_DWORD *)v32 + 20))( v32, v29, &v70, "-o", v51); v33 = sub_418CB0((int)&dword_14D20890, v29); if ( !v33 ) break; v34 = *(_DWORD *)(v33 + 4); if ( !v34 ) break; v35 = (const char *)(v34 + 137); if ( !v35 ) break; v36 = (int)sub_4934A0(&dword_D61E064, v35); v37 = (*(int (__thiscall **)(void *, __int16 *))(*(_DWORD *)v32 + 112))(v32, &v72); if ( v36 && v37 ) sub_4928F0(v37, v36); v38 = *(_DWORD *)v32; v51 = *(_DWORD *)(sub_562730((int)&v57, v63) + 4); (*(void (__thiscall **)(void *, __int16 *))(v38 + 32))(v32, &v72); v39 = v65; *(_DWORD *)(v28 - 12) = (*(int (__thiscall **)(void *))(*(_DWORD *)v65 + 836))(v65); v40 = *(_DWORD *)((char *)v39 + 122); *(_DWORD *)(v28 - 8) = *(_DWORD *)v40; *(_DWORD *)(v28 - 4) = *(_DWORD *)(v40 + 4); *(_DWORD *)v28 = *(_DWORD *)(v40 + 8); v41 = *(_DWORD *)((char *)v39 + 102); *(_DWORD *)(v28 + 4) = *(_DWORD *)v41; v42 = *(_DWORD *)(v41 + 4); LOWORD(v41) = *(_WORD *)(v28 + 12); *(_DWORD *)(v28 + 8) = v42; *(_WORD *)(v28 + 12) = v41 & 0x3FF | 0x2400; *(_WORD *)(v28 + 12) ^= (sub_43BC30(&v56) ^ *(_WORD *)(v28 + 12)) & 0x3FF; v43 = v53; *(_DWORD *)(v28 + 14) = v70; v44 = v64; *(_DWORD *)(v28 + 18) = v71; v45 = v44 - v67; *(_WORD *)(v28 + 22) = v43; *(_WORD *)(v28 + 24) = v45 - 2; v64 = (*(int (__thiscall **)(void *, __int16 *, int))(*(_DWORD *)v32 + 4))(v32, &v72, v44); v46 = *(_DWORD *)v69; v47 = (*(int (__stdcall **)(int, int *, int, int))(*(_DWORD *)v65 + 2004))(v55, &v70, v28 + 12, v28 + 12); v48 = sub_4802C0(v47); (*(void (__thiscall **)(int, _DWORD))(v46 + 64))(v69, (unsigned __int16)v48); sub_486DA0((void **)&v56); v26 = v69; v22 = v67; v28 += 38; ++v63; if ( v63 >= v61 ) goto LABEL_49; } (*(void (__cdecl **)(_DWORD))(*(_DWORD *)v69 + 40))(*(_WORD *)(v67 + 8)); *(_WORD *)v66 = 1793; sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_MysteryVaultMakeItem Not Make ItemID : ", (unsigned __int16)v29); LABEL_52: LOBYTE(v75) = 2; sub_43BB10(&v73); LOBYTE(v75) = 1; nullsub_2(&v56); LOBYTE(v75) = 0; sub_43BB10(&v52); if ( !v57 ) return 0; operator delete(v57); result = 0; } else { LABEL_49: sub_43BBF0(v26); v49 = v64 - v22; if ( sub_4C81E0(&off_849C18, v64 - v22) ) { v50 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v50); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_MysteryVaultMakeItem : Packet Too Long", v49); } LOBYTE(v75) = 2; sub_43BB10(&v73); LOBYTE(v75) = 1; nullsub_2(&v56); LOBYTE(v75) = 0; sub_43BB10(&v52); if ( v57 ) operator delete(v57); result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00563D70) -------------------------------------------------------- char __thiscall sub_563D70(void *this, int a2, int a3, int a4) { int v4; // esi@1 char result; // al@2 v4 = (int)this; if ( !(dword_132541F0 & 1) ) { dword_132541F0 |= 1u; word_132541EC = 70; result = atexit(nullsub_128); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132541EC ) result = sub_5631C0(v4, *(_BYTE *)(a2 + 2)); return result; } // 132541EC: using guessed type __int16 word_132541EC; // 132541F0: using guessed type int dword_132541F0; //----- (00563DD0) -------------------------------------------------------- void *__cdecl sub_563DD0(int a1, int a2, void *a3) { void *v3; // esi@1 int i; // edi@1 v3 = a3; for ( i = a1 + 20; i - 20 != a2; i += 28 ) { if ( v3 ) { *((_DWORD *)v3 + 5) = 15; *((_DWORD *)v3 + 4) = 0; *(_BYTE *)v3 = 0; if ( v3 != (void *)(i - 20) ) { if ( *((_DWORD *)v3 + 5) >= 0x10u ) operator delete(*(void **)v3); *((_DWORD *)v3 + 5) = 15; *((_DWORD *)v3 + 4) = 0; *(_BYTE *)v3 = 0; if ( *(_DWORD *)i >= 0x10u ) { *(_DWORD *)v3 = *(_DWORD *)(i - 20); *(_DWORD *)(i - 20) = 0; } else { memmove_0(v3, (const void *)(i - 20), *(_DWORD *)(i - 4) + 1); } *((_DWORD *)v3 + 4) = *(_DWORD *)(i - 4); *((_DWORD *)v3 + 5) = *(_DWORD *)i; *(_DWORD *)(i - 4) = 0; *(_DWORD *)i = 0; } } v3 = (char *)v3 + 28; } return v3; } //----- (00563E90) -------------------------------------------------------- int __thiscall sub_563E90(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_9249249 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 28; if ( result < a2 ) { v4 = sub_5CDCE0(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_563DD0(v6, v5, (void *)v4); v7 = (signed int)(*(_DWORD *)(v2 + 4) - *(_DWORD *)v2 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32)) >> 4; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_424F20(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 28 * a2; *(_DWORD *)(v2 + 4) = result + 28 * v8; *(_DWORD *)v2 = result; } return result; } //----- (00563F93) -------------------------------------------------------- void __usercall sub_563F93(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00563FB0) -------------------------------------------------------- int __thiscall sub_563FB0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 28; if ( (unsigned int)((char *)&unk_9249249 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 28; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_9249249 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_563E90(this, v5); } return result; } //----- (00564030) -------------------------------------------------------- int __thiscall sub_564030(int this, int a2) { int result; // eax@1 int v3; // edi@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 int v7; // ecx@5 int v8; // edx@5 int v9; // [sp-Ch] [bp-28h]@6 unsigned int v10; // [sp-8h] [bp-24h]@6 unsigned int v11; // [sp-4h] [bp-20h]@6 int v12; // [sp+10h] [bp-Ch]@1 int v13; // [sp+18h] [bp-4h]@5 result = (int)&v12; v3 = this; v4 = *(_DWORD *)(this + 4); if ( a2 >= v4 || (result = *(_DWORD *)v3, *(_DWORD *)v3 > (unsigned int)a2) ) { if ( v4 == *(_DWORD *)(v3 + 8) ) result = sub_563FB0(v3, 1); v7 = *(_DWORD *)(v3 + 4); v8 = 0; v13 = 1; if ( v7 ) { v11 = -1; v10 = 0; v9 = a2; goto LABEL_11; } } else { v5 = (signed int)(a2 - result + ((unsigned __int64)(-1840700269i64 * (a2 - result)) >> 32)) >> 4; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_563FB0(v3, 1); result = *(_DWORD *)v3 + 28 * v6; v7 = *(_DWORD *)(v3 + 4); v8 = 0; v13 = 0; if ( v7 ) { v11 = -1; v10 = 0; v9 = result; LABEL_11: *(_DWORD *)(v7 + 20) = 15; *(_DWORD *)(v7 + 16) = v8; *(_BYTE *)v7 = v8; result = sub_423FC0((void *)v7, v9, v10, v11); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v3 + 4) += 28; return result; } //----- (00564100) -------------------------------------------------------- void __thiscall sub_564100(void *this) { int v1; // ebx@1 int v2; // edi@2 int v3; // eax@2 int v4; // eax@4 int v5; // esi@4 __int16 v6; // ax@5 int v7; // edi@5 __int16 v8; // ax@6 __int16 v9; // ax@7 __int16 v10; // ax@8 int v11; // eax@9 int *v12; // edi@11 signed int v13; // ebx@11 int v14; // esi@12 char *v15; // esi@16 int v16; // eax@16 int v17; // ecx@16 char v18; // dl@17 int v19; // edi@18 int v20; // ebx@23 int i; // edi@23 int v22; // eax@30 int v23; // ebx@31 unsigned __int16 v24; // si@32 int v25; // ecx@34 int v26; // eax@34 bool v27; // zf@34 int v28; // eax@34 int v29; // eax@35 void *v30; // esi@36 int v31; // eax@43 void *v32; // ebx@43 int v33; // edi@44 void *j; // esi@44 int v35; // [sp+Ch] [bp-4Ch]@24 int v36; // [sp+10h] [bp-48h]@5 void *v37; // [sp+14h] [bp-44h]@2 int v38; // [sp+18h] [bp-40h]@2 int v39; // [sp+1Ch] [bp-3Ch]@2 int v40; // [sp+24h] [bp-34h]@2 int v41; // [sp+28h] [bp-30h]@1 void *v42; // [sp+2Ch] [bp-2Ch]@16 int v43; // [sp+3Ch] [bp-1Ch]@16 unsigned int v44; // [sp+40h] [bp-18h]@16 unsigned int v45; // [sp+48h] [bp-10h]@1 int v46; // [sp+54h] [bp-4h]@2 int v47; // [sp+58h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v1 = (int)this; v41 = (int)this; loc_5CE990((char *)this + 161208, (unsigned int)&v47 ^ __security_cookie); if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1488))(v1) ) return; v2 = 0; v37 = 0; v38 = 0; v39 = 0; v3 = 0; v46 = 0; v40 = 0; while ( 1 ) { v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v1 + 32816))(v1 + 32816, v3); v5 = v4; if ( v4 == v2 || (v6 = sub_63FD50(v4), v7 = sub_418CB0((int)&dword_14D20890, v6), (v36 = v7) == 0) ) goto LABEL_29; v8 = sub_63FD50(v5); if ( !sub_48BC60((unsigned __int16)v8, v1) ) { v9 = sub_63FD50(v5); sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_GetItemActionObserves itemAction Can`t Add ActionID. ShineItemID=", (unsigned __int16)v9); } v10 = sub_63FD50(v5); if ( v10 == -1 ) break; v11 = sub_418CB0((int)&dword_14D20890, v10); if ( v11 && *(_DWORD *)(*(_DWORD *)v11 + 102) == 5 ) { v12 = (int *)((char *)sub_5CF620((void *)v5) + 58); v13 = 3; do { v14 = *(_WORD *)v12; if ( !sub_48BC60(*(_WORD *)v12, v41) ) sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_GetItemActionObserves itemAction Can`t Add ActionID. ShineItemID=", v14); v12 = (int *)((char *)v12 + 3); --v13; } while ( v13 ); v7 = v36; } v15 = (char *)(*(_DWORD *)v7 + 342); v16 = *(_DWORD *)v7 + 342; v44 = 15; v43 = 0; LOBYTE(v42) = 0; v17 = v16 + 1; do v18 = *(_BYTE *)v16++; while ( v18 ); sub_4241C0((int)&v42, v15, v16 - v17); LOBYTE(v46) = 1; v19 = sub_562C90((int)v37, v38, (int)&v42); LOBYTE(v46) = 0; if ( v44 >= 0x10 ) operator delete(v42); if ( v19 == v38 ) { v44 = 15; v43 = 0; LOBYTE(v42) = 0; sub_4241C0((int)&v42, v15, strlen(v15)); LOBYTE(v46) = 2; sub_564030((int)&v37, (int)&v42); LOBYTE(v46) = 0; if ( v44 >= 0x10 ) operator delete(v42); v20 = (*(int (__stdcall **)(char *))(*(_DWORD *)v41 + 1484))(v15); for ( i = 1; i <= v20; ++i ) { if ( sub_5C5440(v15, i, (int)&v35) && !(*(int (__stdcall **)(int, signed int))(*(_DWORD *)v41 + 1496))(v35, 65535) ) sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_GetItemActionObserves Setitem Can`t Add ActionID", (unsigned __int16)v35); } } v1 = v41; LABEL_29: v3 = v40 + 1; v40 = v3; if ( (unsigned int)v3 >= 0x1E ) { v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1324))(v1); if ( v22 ) { v23 = v22 + 3364; if ( v22 != -3364 ) { v24 = *(_WORD *)(*(_DWORD *)(v22 + 3372) + 12 * *(_WORD *)(v22 + 3378) + 4); while ( v24 < *(_WORD *)(v23 + 4) ) { v25 = *(_DWORD *)(v23 + 8); v26 = v24; v24 = *(_WORD *)(v25 + 12 * v24 + 4); v26 *= 3; v27 = *(_BYTE *)(v25 + 4 * v26 + 8) == 0; v28 = v25 + 4 * v26; if ( v27 ) v29 = 0; else v29 = *(_DWORD *)v28; if ( sub_5C54D0((const char *)(*(_DWORD *)dword_87150C[3 * *(_DWORD *)(v29 + 4)] + 2), (int)&v40) == 1 ) { if ( !(*(int (__stdcall **)(int, signed int))(*(_DWORD *)v41 + 1496))(v40, 65535) ) sub_639100( &unk_86DDD8, (int)"ShinePlayer::so_GetItemActionObserves Abstate Can`t Add ActionID", (unsigned __int16)v40); } } } v1 = v41; } v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1488))(v1); sub_5CDFE0(v31); v32 = v37; if ( v37 ) { v33 = v38; for ( j = v37; j != (void *)v33; j = (char *)j + 28 ) { if ( *((_DWORD *)j + 5) >= 0x10u ) operator delete(*(void **)j); *((_DWORD *)j + 5) = 15; *((_DWORD *)j + 4) = 0; *(_BYTE *)j = 0; } operator delete(v32); } return; } v2 = 0; } v30 = v37; if ( v37 ) { sub_424F20((int)v37, v38); operator delete(v30); } } // 86FEB8: using guessed type int __security_cookie; // 87150C: using guessed type int dword_87150C[]; // 14D20890: using guessed type int dword_14D20890; //----- (005644E0) -------------------------------------------------------- void __thiscall sub_5644E0(void *this) { *(_BYTE *)this = 0; } //----- (005644F0) -------------------------------------------------------- void __thiscall sub_5644F0(void *this) { *(_BYTE *)this = 1; } //----- (00564500) -------------------------------------------------------- int __thiscall sub_564500(void *this, int a2) { int result; // eax@1 void *v3; // edi@1 void *v4; // eax@2 int v5; // ST04_4@2 int v6; // eax@2 char v7; // [sp+Ch] [bp-18h]@2 int v8; // [sp+18h] [bp-Ch]@1 int v9; // [sp+20h] [bp-4h]@2 result = (int)&v8; v3 = this; if ( *(_BYTE *)this ) { v4 = off_849C18; *(_WORD *)off_849C18 = 9277; *((_WORD *)v4 + 1) = *(_WORD *)(a2 + 4); sub_4287B0(&v7, &off_849C18, 4); v5 = *(_DWORD *)(a2 + 102); v9 = 0; v6 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v6, v5, 0, 0, (int)&v7, 1, 65535); *(_BYTE *)v3 = 0; v9 = -1; result = sub_428A70(&v7); } return result; } //----- (005645E0) -------------------------------------------------------- int __thiscall sub_5645E0(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; result = (*(int (**)(void))(**(_DWORD **)(this + 9020) + 12))(); if ( result == a2 ) result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2560))(v2, a2, 1); return result; } //----- (00564610) -------------------------------------------------------- char __thiscall sub_564610(int this, int a2, int a3) { bool v3; // zf@1 _BYTE *v4; // esi@1 int v5; // edi@1 int v6; // eax@12 char v8; // [sp+8h] [bp-204h]@7 char v9; // [sp+108h] [bp-104h]@3 unsigned int v10; // [sp+208h] [bp-4h]@1 int v11; // [sp+20Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v3 = byte_7493ED == 0; v4 = &byte_85A2C0[256 * dword_8622C0]; v5 = this; *(_DWORD *)v4 = *(_DWORD *)(this + 32665); *((_DWORD *)v4 + 1) = *(_DWORD *)(this + 32669); *((_DWORD *)v4 + 2) = *(_DWORD *)(this + 32673); *((_DWORD *)v4 + 3) = *(_DWORD *)(this + 32677); *((_DWORD *)v4 + 4) = *(_DWORD *)(this + 32681); v4[20] = 0; if ( !v3 ) { if ( byte_13359DE4 ) { sprintf(&v9, "%.255s", "Char so_ply_BanByServerDisconnect "); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v9, dword_13359C60); } if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf(&v8, "%.255s", v4); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v8, dword_13359C60); } if ( byte_7493ED && byte_13359DE4 && dword_13359C60 ) { v6 = sub_418E40((__time32_t)byte_13359B60); sub_654AB0(10, (FILE *)v6); fflush(dword_13359C60); fclose(dword_13359C60); dword_13359C60 = 0; } } } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 1532))(v5, 0); return 1; } // 7493ED: using guessed type char byte_7493ED; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359DE4: using guessed type char byte_13359DE4; //----- (00564790) -------------------------------------------------------- FILE *__thiscall sub_564790(int this, int a2, __int16 a3, int a4) { void *v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // ecx@1 int v9; // ebx@2 int v10; // esi@14 int v11; // esi@22 int v12; // esi@30 int v13; // esi@38 int v14; // eax@45 FILE *result; // eax@47 int v16; // eax@48 int v17; // [sp+8h] [bp-508h]@1 char v18; // [sp+Ch] [bp-504h]@36 char v19; // [sp+10Ch] [bp-404h]@28 char v20; // [sp+20Ch] [bp-304h]@4 char v21; // [sp+30Ch] [bp-204h]@20 char v22; // [sp+40Ch] [bp-104h]@12 unsigned int v23; // [sp+50Ch] [bp-4h]@1 int v24; // [sp+510h] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v4 = off_849C18; v5 = this; *(_WORD *)off_849C18 = a3 & 0x3FF | 0x2000; *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)a2; *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(this + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(a2 + 4); v17 = v5; if ( (v7 - *(_DWORD *)a2) * (v7 - *(_DWORD *)a2) + v8 * v8 > 1000000 ) { v9 = *(_DWORD *)(v5 + 102); if ( byte_7493ED ) { if ( byte_13254484 ) { sprintf(&v20, "%.255s", "["); sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fputs(&v20, dword_13254300); } if ( byte_7493ED ) { if ( byte_13254484 ) { sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fprintf(dword_13254300, "%d", a4); } if ( byte_7493ED ) { if ( byte_13254484 ) { sprintf(&v22, "%.255s", "]"); sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fputs(&v22, dword_13254300); } } } } v10 = *(_DWORD *)v9; if ( byte_7493ED ) { if ( byte_13254484 ) { sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fprintf(dword_13254300, "%d", v10); } if ( byte_7493ED ) { if ( byte_13254484 ) { sprintf(&v21, "%.255s", "/"); sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fputs(&v21, dword_13254300); } } } v11 = *(_DWORD *)(v9 + 4); if ( byte_7493ED ) { if ( byte_13254484 ) { sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fprintf(dword_13254300, "%d", v11); } if ( byte_7493ED ) { if ( byte_13254484 ) { sprintf(&v19, "%.255s", " => "); sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fputs(&v19, dword_13254300); } } } v12 = *(_DWORD *)a2; if ( byte_7493ED ) { if ( byte_13254484 ) { sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fprintf(dword_13254300, "%d", v12); } if ( byte_7493ED ) { if ( byte_13254484 ) { sprintf(&v18, "%.255s", "/"); sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fputs(&v18, dword_13254300); } } } v13 = *(_DWORD *)(a2 + 4); if ( byte_7493ED ) { if ( byte_13254484 ) { sub_418E40((__time32_t)byte_13254200); if ( dword_13254300 ) fprintf(dword_13254300, "%d", v13); } if ( byte_7493ED && byte_13254484 && dword_13254300 ) { v14 = sub_418E40((__time32_t)byte_13254200); sub_654AB0(10, (FILE *)v14); fflush(dword_13254300); fclose(dword_13254300); dword_13254300 = 0; } } } if ( sub_4C81E0(&off_849C18, 10) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 764))(v17); result = (FILE *)(*(int (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v17, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_ply_ReinforceRun : Packet Too Long", 10); } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13254484: using guessed type char byte_13254484; //----- (00564B50) -------------------------------------------------------- char __thiscall sub_564B50(int this) { return (*(_BYTE *)(this + 7888) >> 2) & 1; } //----- (00564B60) -------------------------------------------------------- int __thiscall sub_564B60(int this, int a2) { int result; // eax@1 int v3; // ecx@1 result = this; v3 = *(_DWORD *)(this + 122); if ( v3 ) result = sub_461680(v3, *(_DWORD *)(result + 102)); return result; } //----- (00564B80) -------------------------------------------------------- int __thiscall sub_564B80(int this, int a2) { int v2; // esi@1 int result; // eax@1 int v4; // ecx@1 char v5; // [sp+4h] [bp-44h]@1 unsigned int v6; // [sp+44h] [bp-4h]@1 int v7; // [sp+48h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = this; result = sprintf(&v5, "%p/%p", *(_DWORD *)(this + 102), *(_DWORD *)(this + 8140) + 5); v4 = *(_DWORD *)(v2 + 122); if ( v4 ) result = sub_461680(v4, *(_DWORD *)(v2 + 102)); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00564BE0) -------------------------------------------------------- char __thiscall sub_564BE0(void *this, __int16 a2, int a3, int a4) { unsigned int v4; // ST0C_4@1 void *v5; // edi@1 void *v6; // esi@1 int (__thiscall *v7)(_DWORD, _DWORD); // eax@1 int v8; // eax@1 char v9; // al@1 int v10; // esi@1 int v11; // eax@3 int v12; // ecx@4 int v13; // ST20_4@4 int v14; // eax@4 __int16 v15; // ax@4 int v17; // [sp+14h] [bp-80h]@4 int v18; // [sp+18h] [bp-7Ch]@4 __int16 v19; // [sp+1Ch] [bp-78h]@4 unsigned int v20; // [sp+84h] [bp-10h]@1 int v21; // [sp+90h] [bp-4h]@1 int v22; // [sp+94h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v4 = (unsigned int)&v22 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemA"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemA"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 13401; *((_WORD *)v6 + 1) = a2; v7 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 836); v21 = 0; *((_DWORD *)v6 + 1) = v7(v5, v4); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); *((_WORD *)v6 + 4) = sub_4802C0(v8); *((_BYTE *)v6 + 10) = 0; *(_DWORD *)((char *)v6 + 25) = *(_DWORD *)a3; *(_DWORD *)((char *)v6 + 29) = *(_DWORD *)(a3 + 4); v9 = *((_BYTE *)v6 + 10) ^ (*((_BYTE *)v6 + 10) ^ (*((_BYTE *)v6 + 10) + 1)) & 0x7F; *((_BYTE *)v6 + 10) = v9; v10 = 8 * (v9 & 0x7F) + 25; if ( sub_4C81E0(&off_849C18, 8 * (v9 & 0x7F) + 25) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MakeItem : Packet Too Long", v10); } v17 = -1; v18 = -1; memset(&v19, 0, 0x67u); v12 = *((_DWORD *)v5 + 14672); v19 = -1; v13 = v12; v14 = (*(int (__thiscall **)(void *, int, int *, int))(*(_DWORD *)v5 + 2004))(v5, a4, &v17, a4); v15 = sub_4802C0(v14); (*(void (__thiscall **)(char *, _DWORD))(v13 + 68))((char *)v5 + 58688, (unsigned __int16)v15); sub_43BBF0((int)((char *)v5 + 58688)); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_DestroyItemA"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00564DA0) -------------------------------------------------------- void __thiscall sub_564DA0(void *this) { void *v1; // esi@1 int v2; // ecx@1 void *v3; // ecx@7 v1 = this; v2 = *(_DWORD *)this + 22; if ( (*(_DWORD *)(v2 + 8) != v2 || *(_DWORD *)(v2 + 4) != v2) && !sub_549640((void *)v2) || (*(_DWORD *)(*(_DWORD *)v1 + 42) != *(_DWORD *)v1 + 34 || *(_DWORD *)(*(_DWORD *)v1 + 38) != *(_DWORD *)v1 + 34) && !sub_549640((void *)(*(_DWORD *)v1 + 34)) ) { v3 = *(void **)(*(_DWORD *)v1 + 122); if ( v3 ) sub_462120(v3, (int)"SlantedListNormalizer::~SlantedListNormalizer"); } } //----- (00564DF0) -------------------------------------------------------- int __thiscall sub_564DF0(void *this, int a2) { void *v2; // ebx@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"; dword_750AB8[dword_750CB8++] = -1; memcpy((char *)v2 + 5548, &dword_DA12010, 0xCCu); memcpy((char *)v2 + 5752, &dword_DA11F40, 0xCCu); *((_DWORD *)v2 + 1470) = 0; *((_DWORD *)v2 + 1471) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA11F40: using guessed type int dword_DA11F40; // DA12010: using guessed type int dword_DA12010; //----- (00564E80) -------------------------------------------------------- int __thiscall sub_564E80(void *this, unsigned __int8 a2, unsigned __int16 a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_WeaponTitleOption"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_WeaponTitleOption"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( a2 == 1 ) { if ( a3 == 1 ) *((_DWORD *)v4 + 1470) += a4; else sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_WeaponTitleOption : Invalid type in WEAPON_TITLE_DATA::ABSTATE", a3); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_WeaponTitleOption : Invalid reference", a2); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_WeaponTitleOption"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00564F60) -------------------------------------------------------- char __thiscall sub_564F60(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@2 __int16 v6; // ax@5 __int16 v7; // di@5 void *v8; // ecx@15 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDoor::so_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 122); if ( v4 ) { v5 = *(_DWORD *)((char *)v3 + 102); if ( *(_DWORD *)v5 >= *(_DWORD *)(v4 + 24) || *(_DWORD *)(v5 + 4) >= *(_DWORD *)(v4 + 28) ) { sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : Door", 0); *((_BYTE *)v3 + 7888) |= 1u; } } v6 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 1188))(v3, a3); v7 = v6; if ( v6 != *((_WORD *)v3 + 2) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineDoor::so_Routine : so_handle is invalid!!!", v6 == *((_WORD *)v3 + 2)); *((_WORD *)v3 + 2) = v7; } if ( *((_BYTE *)v3 + 8036) ) { (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 6); } if ( (*(void **)((char *)v3 + 30) != (char *)v3 + 22 || *(void **)((char *)v3 + 26) != (char *)v3 + 22) && !sub_549640((char *)v3 + 22) || (*(void **)((char *)v3 + 42) != (char *)v3 + 34 || *(void **)((char *)v3 + 38) != (char *)v3 + 34) && !sub_549640((char *)v3 + 34) ) { v8 = *(void **)((char *)v3 + 122); if ( v8 ) sub_462120(v8, (int)"SlantedListNormalizer::~SlantedListNormalizer"); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDoor::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005650E0) -------------------------------------------------------- char __thiscall sub_5650E0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@2 void *v6; // eax@7 int (__thiscall *v7)(_DWORD); // eax@7 __int16 v8; // ax@7 int v9; // eax@7 int (__thiscall *v10)(_DWORD, _DWORD); // edx@11 void *v11; // edi@13 __int16 v12; // ax@13 int v13; // ebx@13 bool v14; // zf@13 int v15; // edi@14 int v16; // eax@14 int v17; // eax@16 int v18; // edi@16 int v19; // edi@16 __time32_t v20; // eax@20 __time32_t v21; // edi@20 int v22; // ebx@24 FILE *v23; // eax@26 int v24; // ebx@32 FILE *v25; // eax@34 int v26; // ebx@40 FILE *v27; // eax@42 int v28; // edx@49 signed int v29; // edi@52 int v30; // ebx@53 int v31; // edx@57 __int16 v32; // ax@57 int v33; // edi@57 __int16 v34; // ax@60 int v35; // ebx@60 int v36; // edi@61 unsigned int v37; // eax@63 void *v38; // eax@67 int v39; // eax@69 int v40; // ecx@70 int v41; // eax@71 int v42; // ecx@76 int (__thiscall *v43)(_DWORD); // eax@76 int v44; // ebx@76 int v45; // eax@77 int v46; // edi@77 int (__thiscall *v47)(_DWORD); // eax@79 int v48; // eax@79 int v49; // ebx@79 _BYTE *v50; // ebx@79 int v51; // edx@79 int v52; // eax@79 int v53; // ST24_4@79 int v54; // eax@79 int v55; // ebx@79 int v56; // eax@79 int v57; // ebx@81 int v58; // eax@81 int (__thiscall *v59)(_DWORD); // eax@82 int v60; // eax@82 int v61; // ebx@82 _BYTE *v62; // ebx@82 int v63; // edx@82 int v64; // eax@82 int v65; // ST24_4@82 int v66; // eax@82 int (__thiscall *v67)(_DWORD); // edx@84 int v68; // eax@87 __int16 v69; // ax@93 int v70; // eax@93 void *v71; // eax@95 int v72; // edi@97 int v73; // eax@102 unsigned int v74; // ecx@103 unsigned int v76; // [sp-4h] [bp-544h]@1 char v77; // [sp+10h] [bp-530h]@7 int v78; // [sp+1Ch] [bp-524h]@13 int v79; // [sp+20h] [bp-520h]@14 unsigned int v80; // [sp+24h] [bp-51Ch]@13 char v81; // [sp+2Bh] [bp-515h]@11 int v82; // [sp+2Ch] [bp-514h]@14 char v83; // [sp+30h] [bp-510h]@30 char v84; // [sp+130h] [bp-410h]@22 char v85; // [sp+230h] [bp-310h]@18 char v86; // [sp+330h] [bp-210h]@38 char v87; // [sp+430h] [bp-110h]@46 unsigned int v88; // [sp+530h] [bp-10h]@1 int v89; // [sp+53Ch] [bp-4h]@1 int v90; // [sp+540h] [bp+0h]@1 v88 = (unsigned int)&v90 ^ __security_cookie; v76 = (unsigned int)&v90 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMiniHouse::so_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 122); v89 = 0; if ( v4 ) { v5 = *(_DWORD *)((char *)v3 + 102); if ( *(_DWORD *)v5 >= *(_DWORD *)(v4 + 24) || *(_DWORD *)(v5 + 4) >= *(_DWORD *)(v4 + 28) ) sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : MiniHouse", 0); } if ( (unsigned __int8)(*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v3 + 276))(v3, v76) && (unsigned int)dword_14D129E8 >= *((_DWORD *)v3 + 12346) ) { v6 = off_849C18; *(_WORD *)off_849C18 = -29657; *(_WORD *)((char *)v6 + 3) = -5536; *((_BYTE *)v6 + 2) = 1; sub_4287B0(&v77, &off_849C18, 5); v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 132); LOBYTE(v89) = 1; v8 = v7(v3); v9 = sub_54DE90(&unk_13253630, v8); if ( v9 ) { sub_549B60((void *)v9, (int)&v77, 1); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 284))(v3); } LOBYTE(v89) = 0; sub_428A70(&v77); } if ( (unsigned int)dword_14D129E8 >= *((_DWORD *)v3 + 12424) ) { *((_DWORD *)v3 + 12424) = dword_14D129E8 + 600; v10 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 364); v81 = 0; if ( (unsigned __int8)v10(v3, &v81) == 1 ) { if ( v81 == 1 ) { v11 = off_849C18; *(_WORD *)off_849C18 = -29599; v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 132))(v3); v13 = sub_54DE90(&unk_13253630, v12); *((_BYTE *)v11 + 2) = *((_BYTE *)v3 + 49700); v14 = *((_BYTE *)v3 + 49700) == 0; v80 = v13; v78 = 0; if ( !v14 ) { v15 = (int)((char *)v11 + 5); v16 = (int)((char *)v3 + 49703); v82 = v15; v79 = (int)((char *)v3 + 49703); do { *(_WORD *)(v15 - 2) = *(_WORD *)(v16 - 2); *(_BYTE *)v15 = *(_BYTE *)v16; *(_BYTE *)(v15 + 1) = *(_BYTE *)(v16 + 1); if ( v13 ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1744))(v13); v18 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v18; v19 = (int)&byte_85A2C0[256 * v18]; v14 = byte_7493ED == 0; *(_DWORD *)v19 = *(_DWORD *)(v17 + 2); *(_DWORD *)(v19 + 4) = *(_DWORD *)(v17 + 6); *(_DWORD *)(v19 + 8) = *(_DWORD *)(v17 + 10); *(_DWORD *)(v19 + 12) = *(_DWORD *)(v17 + 14); *(_DWORD *)(v19 + 16) = *(_DWORD *)(v17 + 18); *(_BYTE *)(v19 + 20) = 0; if ( !v14 ) { if ( byte_13359B5C ) { sprintf(&v85, "%.255s", "Furniture Endure - ["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v85, dword_133599D8); } } v20 = sub_418EA0((__time32_t)byte_133598D8, v19); v21 = v20; if ( byte_7493ED ) { if ( *(_BYTE *)(v20 + 644) ) { sprintf(&v84, "%.255s", "] FurnitureHnd("); sub_418E40(v21); if ( *(_DWORD *)(v21 + 256) ) fputs(&v84, *(FILE **)(v21 + 256)); } } v22 = *(_WORD *)(v82 - 2); if ( byte_7493ED ) { if ( *(_BYTE *)(v21 + 644) ) { sub_418E40(v21); v23 = *(FILE **)(v21 + 256); if ( v23 ) fprintf(v23, "%d", v22); } if ( byte_7493ED ) { if ( *(_BYTE *)(v21 + 644) ) { sprintf(&v83, "%.255s", ") EndureGrade("); sub_418E40(v21); if ( *(_DWORD *)(v21 + 256) ) fputs(&v83, *(FILE **)(v21 + 256)); } } } v24 = *(_BYTE *)v82; if ( byte_7493ED ) { if ( *(_BYTE *)(v21 + 644) ) { sub_418E40(v21); v25 = *(FILE **)(v21 + 256); if ( v25 ) fprintf(v25, "%d", v24); } if ( byte_7493ED ) { if ( *(_BYTE *)(v21 + 644) ) { sprintf(&v86, "%.255s", ") isRePair("); sub_418E40(v21); if ( *(_DWORD *)(v21 + 256) ) fputs(&v86, *(FILE **)(v21 + 256)); } } } v26 = *(_BYTE *)(v82 + 1); if ( byte_7493ED ) { if ( *(_BYTE *)(v21 + 644) ) { sub_418E40(v21); v27 = *(FILE **)(v21 + 256); if ( v27 ) fprintf(v27, "%d", v26); } if ( byte_7493ED ) { if ( *(_BYTE *)(v21 + 644) ) { sprintf(&v87, "%.255s", &unk_6C5F98); sub_418E40(v21); if ( *(_DWORD *)(v21 + 256) ) fputs(&v87, *(FILE **)(v21 + 256)); } } } sub_418F20(v21, (int)&unk_13359E04); v13 = v80; v16 = v79; v15 = v82; } v28 = *((_BYTE *)v3 + 49700); v16 += 4; v15 += 4; ++v78; v79 = v16; v82 = v15; } while ( v78 < v28 ); } sub_4287B0(&v77, &off_849C18, 4 * *((_BYTE *)v3 + 49700) + 3); LOBYTE(v89) = 2; if ( v13 ) sub_549B60((void *)v13, (int)&v77, 1); v29 = 0; if ( *((_BYTE *)v3 + 49700) ) { v30 = (int)((char *)v3 + 49701); do { (*(void (__thiscall **)(void *, _DWORD, unsigned int))(*(_DWORD *)v3 + 736))(v3, *(_WORD *)v30, v80); ++v29; v30 += 4; } while ( v29 < *((_BYTE *)v3 + 49700) ); } LOBYTE(v89) = 0; sub_428A70(&v77); } } } if ( (unsigned int)dword_14D129E8 >= *((_DWORD *)v3 + 361) ) { v31 = *(_DWORD *)v3; *((_DWORD *)v3 + 361) = dword_14D129E8 + 300; v32 = (*(int (__thiscall **)(void *))(v31 + 132))(v3); v33 = sub_54DE90(&unk_13253630, v32); if ( v33 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 148))(v3) ) { sub_545510(v3, (int)((char *)v3 + 1452), 3); (*(void (__thiscall **)(int, char *, signed int))(*(_DWORD *)v33 + 56))(v33, (char *)v3 + 1452, 3); sub_545510(v3, (int)((char *)v3 + 12824), 13); (*(void (__thiscall **)(int, char *, signed int))(*(_DWORD *)v33 + 56))(v33, (char *)v3 + 12824, 13); sub_545510(v3, (int)((char *)v3 + 24196), 14); (*(void (__thiscall **)(_DWORD, char *, signed int))(*(_DWORD *)v33 + 56))(v33, (char *)v3 + 24196, 14); sub_545510(v3, (int)((char *)v3 + 35568), 16); (*(void (__thiscall **)(int, char *, signed int, _DWORD, _DWORD))(*(_DWORD *)v33 + 384))( v33, (char *)v3 + 35568, 16, 0, *((_DWORD *)v3 + 12740)); } v34 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 132))(v3); v82 = sub_54DE90(&unk_13253630, v34); v35 = 0; v80 = dword_14D129E8 / 0xAu; if ( *((_WORD *)v3 + 24694) > 0u ) { v36 = (int)((char *)v3 + 49390); do { if ( v35 >= 50 ) break; v37 = *(_DWORD *)(v36 + 2); if ( (signed int)v37 > 0 && (signed int)v80 > (signed int)v37 && (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 288))(v3) != *(_WORD *)v36 ) { if ( v82 ) { v38 = off_849C18; *(_WORD *)off_849C18 = -29617; *((_WORD *)v38 + 1) = *(_WORD *)v36; if ( sub_4C81E0(&off_849C18, 4) ) { v39 = (*(int (**)(void))(*(_DWORD *)v82 + 760))(); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v39 + 12))(v39, v82, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_Routine : Packet Too Long", 4); } } v40 = v35; if ( v35 < *((_WORD *)v3 + 24694) - 1 ) { v41 = v36; do { if ( v40 >= 50 ) break; *(_WORD *)v41 = *(_WORD *)(v41 + 6); *(_DWORD *)(v41 + 2) = *(_DWORD *)(v41 + 8); ++v40; v41 += 6; } while ( v40 < *((_WORD *)v3 + 24694) - 1 ); } --*((_WORD *)v3 + 24694); } ++v35; v36 += 6; } while ( v35 < *((_WORD *)v3 + 24694) ); } v42 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 112))(v3); v43 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 108); v44 = 5 - v42; v82 = 5 - v42; if ( 5 - v42 < (unsigned __int8)v43(v3) ) { do { v45 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 104))(v3, v44); v46 = v45; if ( v45 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v45 + 304))(v45) ) { v47 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v46 + 1744); v80 = *(_WORD *)(v46 + 4); v48 = v47(v46); v49 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v49; v50 = &byte_85A2C0[256 * v49]; *(_DWORD *)v50 = *(_DWORD *)(v48 + 2); *((_DWORD *)v50 + 1) = *(_DWORD *)(v48 + 6); *((_DWORD *)v50 + 2) = *(_DWORD *)(v48 + 10); *((_DWORD *)v50 + 3) = *(_DWORD *)(v48 + 14); v51 = (unsigned __int16)v80; *((_DWORD *)v50 + 4) = *(_DWORD *)(v48 + 18); v50[20] = 0; v52 = *(_DWORD *)v46; v79 = *((_WORD *)v3 + 2); v53 = v51; v54 = (*(int (__thiscall **)(int))(v52 + 836))(v46); sprintf( &v87, "minihouse error(invalid MH handle) : mhnd(%d) - (%s : %d, %d), ", (unsigned __int16)v79, v50, v54, v53); sub_64BC90(1, "Msg", "%s", &v87); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v46 + 308))(v46, *((_WORD *)v3 + 2)); v55 = *(_DWORD *)v46; v56 = (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 336))( v3, 6, 9, 10); (*(void (__thiscall **)(int, int))(v55 + 1536))(v46, v56); v44 = v82; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v46 + 768))(v46) ) { v57 = *(_DWORD *)v46; v58 = (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 336))( v3, 6, 9, 10); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(v57 + 1536))(v46, v58) ) { v59 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v46 + 1744); v80 = *(_WORD *)(v46 + 4); v60 = v59(v46); v61 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v61; v62 = &byte_85A2C0[256 * v61]; *(_DWORD *)v62 = *(_DWORD *)(v60 + 2); *((_DWORD *)v62 + 1) = *(_DWORD *)(v60 + 6); *((_DWORD *)v62 + 2) = *(_DWORD *)(v60 + 10); *((_DWORD *)v62 + 3) = *(_DWORD *)(v60 + 14); v63 = (unsigned __int16)v80; *((_DWORD *)v62 + 4) = *(_DWORD *)(v60 + 18); v62[20] = 0; v64 = *(_DWORD *)v46; v79 = *((_WORD *)v3 + 2); v65 = v63; v66 = (*(int (__thiscall **)(int))(v64 + 836))(v46); sprintf( &v86, "minihouse error(Logout Fail) : mhnd(%d) - (%s : %d, %d), ", (unsigned __int16)v79, v62, v66, v65); sub_64BC90(1, "Msg", "%s", &v86); } v44 = v82; } } v67 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 108); ++v44; v82 = v44; } while ( v44 < (unsigned __int8)v67(v3) ); } } if ( *((_BYTE *)v3 + 50968) == 1 && (unsigned int)dword_14D129E8 >= *((_DWORD *)v3 + 12743) ) { v68 = *((_DWORD *)v3 + 12740); if ( v68 == 1 ) { if ( !*((_DWORD *)v3 + 12741) && (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 612))(v3) == 7376 && (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 616))(v3) == 7376 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 620))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 628))(v3); } } else { if ( v68 == 3 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 664))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 468))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 476))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 520))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 528))(v3); v69 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 132))(v3); v70 = sub_54DE90(&unk_13253630, v69); if ( v70 ) (*(void (__thiscall **)(int, char *, signed int, signed int, _DWORD))(*(_DWORD *)v70 + 384))( v70, (char *)v3 + 35568, 16, 1, *((_DWORD *)v3 + 12740)); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 524))(v3); v71 = off_849C18; *(_WORD *)off_849C18 = -21461; *(_DWORD *)((char *)v71 + 2) = *((_DWORD *)v3 + 12741); *((_WORD *)v71 + 3) = *((_WORD *)v3 + 25499); *((_BYTE *)v71 + 8) = *((_BYTE *)v3 + 51000); v14 = *((_BYTE *)v3 + 51001) == 0; v80 = 0; if ( !v14 ) { v82 = (int)((char *)v3 + 51004); do { v72 = *(_DWORD *)v82; if ( *(_DWORD *)v82 && (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v72 + 312))(*(_DWORD *)v82) == *((_WORD *)v3 + 2) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v72 + 368))(v72, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v73 = (*(int (__thiscall **)(int))(*(_DWORD *)v72 + 760))(v72); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v73 + 12))(v73, v72, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEnter : Packet Too Long", 9); } } v74 = *((_BYTE *)v3 + 51001); v82 += 8; ++v80; } while ( (signed int)v80 < (signed int)v74 ); } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 472))(v3); *((_DWORD *)v3 + 12740) = 0; } } *((_BYTE *)v3 + 50968) = 0; } --dword_750CB8; v89 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMiniHouse::so_Routine"); return 1; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; // 14D129E8: using guessed type int dword_14D129E8; //----- (00565CD0) -------------------------------------------------------- char __thiscall sub_565CD0(void *this, int a2, int a3) { void *v3; // esi@1 int v5; // [sp-4h] [bp-20h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_drpitm_BriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_drpitm_BriefInfo"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1336))(a2, v3); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1224))(a2, v3); v5 = (int)"ShineObjectClass::ShineObject::so_drpitm_BriefInfo"; } else { v5 = (int)"ShineObjectClass::ShineObject::so_drpitm_BriefInfo"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00565DA0) -------------------------------------------------------- char __thiscall sub_565DA0(void *this, int a2) { void *v2; // esi@1 int *v3; // ecx@3 int v4; // esi@3 int v5; // ST04_4@5 unsigned __int16 v6; // ax@5 char result; // al@9 int v8; // esi@14 bool v9; // [sp+2Bh] [bp+Bh]@8 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListMagicFieldDamage::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1256))(a2) || !*(_DWORD *)(a2 + 122) || (v3 = (int *)*((_DWORD *)v2 + 460), (v4 = *v3) == 0) || v4 == a2 || (v5 = ((unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1800))(*v3) == -1) + 1, v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1800))(a2), !sub_63EDC0((int)&unk_14D159B0, v6, v5)) ) goto LABEL_18; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) == 2 ) { v9 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, a2, "AxialListMagicFieldDamage::alns_ValidObject"); LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); return v9; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, a2, "AxialListMagicFieldDamage::alns_ValidObject2") && (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 3672))(v4, a2) != 1 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4); v9 = v8 != (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2); goto LABEL_9; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); result = 1; } else { LABEL_18: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00565FC0) -------------------------------------------------------- int __thiscall sub_565FC0(void *this, int a2, __int16 *a3, int a4) { void *v4; // edi@1 int v5; // ecx@1 int v6; // ebx@1 int v7; // eax@1 int v8; // edx@1 __int16 v9; // si@2 int v10; // esi@8 unsigned __int16 v11; // ax@11 int v12; // eax@12 int v13; // eax@12 int v14; // eax@15 int v15; // ecx@15 int v16; // eax@15 int v17; // eax@16 int v18; // eax@17 int v19; // ebx@20 int v20; // esi@21 int v21; // edi@23 int v22; // eax@25 void *v23; // ecx@25 int v24; // eax@26 int v26; // [sp+10h] [bp-60h]@1 void *v27; // [sp+14h] [bp-5Ch]@1 int v28; // [sp+18h] [bp-58h]@1 __int16 v29; // [sp+1Ch] [bp-54h]@4 char v30; // [sp+20h] [bp-50h]@1 int v31; // [sp+21h] [bp-4Fh]@1 char v32; // [sp+25h] [bp-4Bh]@4 char v33; // [sp+26h] [bp-4Ah]@1 int v34; // [sp+28h] [bp-48h]@4 int v35; // [sp+2Ch] [bp-44h]@4 int v36; // [sp+30h] [bp-40h]@4 int v37; // [sp+34h] [bp-3Ch]@4 int v38; // [sp+38h] [bp-38h]@4 int v39; // [sp+3Ch] [bp-34h]@25 int v40; // [sp+40h] [bp-30h]@25 int v41; // [sp+44h] [bp-2Ch]@12 int v42; // [sp+48h] [bp-28h]@12 int v43; // [sp+4Ch] [bp-24h]@12 int v44; // [sp+50h] [bp-20h]@12 int v45; // [sp+54h] [bp-1Ch]@1 int v46; // [sp+58h] [bp-18h]@20 int v47; // [sp+5Ch] [bp-14h]@4 void *v48; // [sp+60h] [bp-10h]@1 int v49; // [sp+6Ch] [bp-4h]@1 void **v50; // [sp+7Ch] [bp+Ch]@5 v4 = this; v48 = this; v45 = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; sub_4675D0((int)&unk_D020420, (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"); dword_7508B8[dword_750CB8] = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; dword_750AB8[dword_750CB8++] = -1; v5 = **((_DWORD **)v4 + 460); v6 = a2; v7 = *((_DWORD *)v4 + 462); v8 = 0; v49 = 0; v26 = v5; v27 = 0; v28 = a2; v30 = 0; v31 = 0; v33 = 0; if ( a3 ) v9 = *a3; else v9 = 0; v34 = v7; v29 = v9; v35 = 1000; v36 = 0; v32 = 0; v37 = 0; v38 = 1000; v47 = 0; if ( *((_DWORD *)v4 + 401) > 0 ) { v50 = (void **)((char *)v4 + 4); while ( 1 ) { v27 = *v50; if ( v5 == v8 ) break; v10 = 2; if ( (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v5 + 1800))() != -1 ) v10 = 1; if ( !v27 ) break; v11 = (*(int (**)(void))(*(_DWORD *)v27 + 1800))(); if ( !sub_63EDC0((int)&unk_14D159B0, v11, v10) ) break; v12 = *(_DWORD *)((char *)v27 + 102); v41 = *(_DWORD *)v12; v42 = *(_DWORD *)(v12 + 4); v13 = *(_DWORD *)((char *)v27 + 102); v43 = *(_DWORD *)v13; v44 = *(_DWORD *)(v13 + 4); sub_4BE0E0( (void *)a4, (int)&v43, 10000, (int)&v41, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v43 != v41 ) break; if ( v44 != v42 ) break; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v26 + 2960))(**(_WORD **)(v6 + 4)); if ( (unsigned __int8)(*(int (__stdcall **)(int *))(**(_DWORD **)(v6 + 112) + 32))(&v26) == 1 ) { v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 8))(v4, v47); v15 = *(_DWORD *)(v6 + 112); v38 = v14; v16 = (*(int (__stdcall **)(int *))(*(_DWORD *)v15 + 28))(&v26); (*(void (__stdcall **)(_DWORD, int, signed int, signed int, _DWORD))(*(_DWORD *)*v50 + 1840))( **((_DWORD **)v4 + 460), v16, 792, 1, 0); } v17 = *(_DWORD *)(v6 + 4); if ( !v17 ) break; v18 = *(_DWORD *)(v17 + 188); if ( !v18 || v18 == 5 || v18 == 7 ) { v19 = v6 + 68; v46 = 4; do { v20 = *(_DWORD *)(v19 - 4); if ( v20 != 792 && (signed int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_DWORD *)(v19 + 4) ) { v21 = sub_401310(&unk_877138, v20); if ( v21 ) { if ( !(unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)*v50 + 1588))(v21) ) { v22 = *(_DWORD *)(a4 + 102); v23 = *v50; v39 = *(_DWORD *)v22; v40 = *(_DWORD *)(v22 + 4); if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD, int, _DWORD, int, int, _DWORD, _DWORD, _DWORD, signed int, int *))(*(_DWORD *)v23 + 1592))( **((_DWORD **)v48 + 460), v20, *(_DWORD *)v19, v21, dword_14D129E8, 0, 0, 0, 5, &v39) ) { sub_401900(*v50, v20); v24 = *(_DWORD *)(v21 + 36 * *(_DWORD *)v19 + 12); if ( v24 ) { (*(void (__stdcall **)(int, _DWORD, signed int))(*(_DWORD *)*v50 + 1008))( v20, *(_DWORD *)(v24 + 43), 1); sub_4055D0(*v50, v20, *(_DWORD *)(*(_DWORD *)(v21 + 36 * *(_DWORD *)v19 + 12) + 43), *(_DWORD *)v19); } } } } v4 = v48; } v19 += 12; --v46; } while ( v46 ); v6 = a2; } v50 += 2; ++v47; if ( v47 >= *((_DWORD *)v4 + 401) ) break; v5 = v26; v8 = 0; } } --dword_750CB8; v49 = -1; return sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00566320) -------------------------------------------------------- char __thiscall sub_566320(void *this, int a2) { void *v2; // edi@1 int *v3; // ecx@5 int v4; // edi@5 int v5; // ebx@6 __int16 v7; // di@11 int (__thiscall *v8)(_DWORD); // eax@11 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListMagicFieldDamage::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1256))(a2) || !*(_DWORD *)(a2 + 122) || (v3 = (int *)*((_DWORD *)v2 + 402), (v4 = *v3) == 0) ) { --dword_750CB8; goto LABEL_17; } v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(*v3); if ( v5 == (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); return 1; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 1836))(v4, a2) == 1 ) goto LABEL_9; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1364))(a2) == -1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1376))(a2) == -1 ) { LABEL_9: --dword_750CB8; goto LABEL_17; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1376))(v4); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1376); } else { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1364))(v4); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1364); } if ( (unsigned __int16)v8(a2) == v7 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); return 1; } goto LABEL_9; } --dword_750CB8; LABEL_17: sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldDamage::alns_ValidObject"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00566510) -------------------------------------------------------- void __thiscall sub_566510(int this) { int v1; // esi@1 int v2; // ecx@1 int v3; // edi@1 int v4; // eax@6 char v5; // bl@6 int v6; // eax@8 int v7; // edx@8 char v8; // al@12 int v9; // ecx@12 int v10; // edi@12 int v11; // ebx@12 unsigned __int8 v12; // ST2C_1@12 int v13; // edi@12 int v14; // eax@12 int v15; // eax@13 int v16; // eax@14 int v17; // ST04_4@16 int v18; // eax@16 int v19; // ecx@16 int v20; // esi@17 int v21; // eax@17 _UNKNOWN *v22; // [sp-18h] [bp-788h]@14 int v23; // [sp-14h] [bp-784h]@14 int v24; // [sp-10h] [bp-780h]@14 int v25; // [sp-Ch] [bp-77Ch]@14 int v26; // [sp-8h] [bp-778h]@14 unsigned int v27; // [sp-4h] [bp-774h]@1 char v28; // [sp+10h] [bp-760h]@14 int v29; // [sp+14h] [bp-75Ch]@1 int v30; // [sp+18h] [bp-758h]@8 char v31; // [sp+1Fh] [bp-751h]@6 int (__stdcall **v32)(int, int, int); // [sp+20h] [bp-750h]@8 int v33; // [sp+750h] [bp-20h]@8 char v34; // [sp+754h] [bp-1Ch]@8 char v35; // [sp+755h] [bp-1Bh]@8 int v36; // [sp+758h] [bp-18h]@8 unsigned int v37; // [sp+760h] [bp-10h]@1 int v38; // [sp+76Ch] [bp-4h]@8 int v39; // [sp+770h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v27 = (unsigned int)&v39 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 396); v3 = v1 + 396; v29 = v1 + 396; if ( v2 && ((unsigned __int8)(*(int (__cdecl **)(unsigned int))(*(_DWORD *)v2 + 768))(v27) || (*(int (**)(void))(**(_DWORD **)v3 + 836))() != *(_DWORD *)(v1 + 400)) ) *(_DWORD *)v3 = 0; if ( *(_DWORD *)v3 ) { v4 = *(_DWORD *)(v1 + 122); v5 = 0; v31 = 0; if ( v4 ) { v5 = *(_BYTE *)(v4 + 84); v31 = *(_BYTE *)(*(_DWORD *)(v4 + 12) + 99); } v30 = *(_DWORD *)(v1 + 102); sub_4C0FA0(&v32); v32 = &off_6E9574; v33 = v1 + 396; v34 = v5; v35 = v31; v36 = v30; v6 = *(_DWORD *)(v1 + 416); v7 = *(_DWORD *)(v6 + 40); v38 = 0; if ( v7 == *(_DWORD *)(v6 + 44) ) { sub_4C0FC0((int)&v32); v26 = 65535; v25 = 1; v24 = (int)&v32; v23 = 0; v22 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 416) + 4) + 259) >> 1); v16 = v1 + 376; } else { if ( *(_BYTE *)(v6 + 568) == 1 ) { if ( *(_DWORD *)(v1 + 424) > (unsigned int)dword_14D129E8 ) { v32 = &off_6E9574; LABEL_19: v38 = -1; sub_4C11C0(&v32); return; } v8 = sub_577770(v1); v9 = *(_DWORD *)(v1 + 102); v10 = *(_DWORD *)v9; v11 = *(_DWORD *)(v9 + 4); v12 = v8; v30 = (unsigned __int8)v8; v13 = 50 * sub_576E10(&unk_132546E8, (unsigned __int8)v8) / 1024 + v10; v14 = sub_576E40(&unk_132546E8, v30); sub_4C0FD0( (int)&v32, *(_DWORD *)(*(_DWORD *)(v1 + 416) + 40), **(_DWORD **)(v1 + 102), *(_DWORD *)(*(_DWORD *)(v1 + 102) + 4), v13, 50 * v14 / 1024 + v11, v12); v3 = v29; } else { v15 = *(_DWORD *)(v6 + 40); LOBYTE(v29) = **(_BYTE **)(v1 + 106); sub_4C0FD0( (int)&v32, v15, *(_DWORD *)(v1 + 405), *(_DWORD *)(v1 + 409), *(_DWORD *)(v1 + 376), *(_DWORD *)(v1 + 380), v29); } v26 = 65535; v25 = 1; v24 = (int)&v32; v23 = 0; v22 = *(_UNKNOWN **)(*(_DWORD *)(*(_DWORD *)(v1 + 416) + 40) + 52); v16 = sub_4C10B0((int)&v32, (int)&v28); } v17 = v16; v18 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v18, v17, v22, v23, v24, v25, v26); sub_565FC0(&v32, *(_DWORD *)(v1 + 416), (__int16 *)(v1 + 392), v1); v19 = *(_DWORD *)v3; if ( *(_DWORD *)v3 ) { v20 = *(_DWORD *)v19; v21 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v19 + 1856))(v27); (*(void (__thiscall **)(_DWORD, int))(v20 + 3136))(*(_DWORD *)v3, v21); } v32 = &off_6E9574; goto LABEL_19; } } // 6E9574: using guessed type int (__stdcall *off_6E9574)(int, int, int); // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (005667D0) -------------------------------------------------------- char __thiscall sub_5667D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 int v6; // eax@3 __int16 v7; // ax@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListRescueRequest::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListRescueRequest::ali_Work"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 4) > 0 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1804))(a3); if ( v6 ) { if ( *(_DWORD *)(*(_DWORD *)(v6 + 4) + 90) == *((_DWORD *)v4 + 3) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1876))(a3); if ( v7 == -1 || v7 == *((_WORD *)v4 + 4) ) { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)a3 + 1892))(a3, a2, *((_BYTE *)v4 + 20)); --*((_DWORD *)v4 + 4); } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListRescueRequest::ali_Work"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListRescueRequest::ali_Work"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005668F0) -------------------------------------------------------- int __thiscall sub_5668F0(void *this, int a2, signed int a3, int a4, char a5) { void *v5; // esi@1 int v6; // edx@1 bool v7; // zf@1 int v8; // ebx@5 __int16 v9; // cx@5 int v10; // ST04_4@5 int v11; // eax@5 int (__stdcall **v13)(int, int, int); // [sp+10h] [bp-28h]@5 int v14; // [sp+14h] [bp-24h]@5 __int16 v15; // [sp+18h] [bp-20h]@5 int v16; // [sp+1Ch] [bp-1Ch]@5 int v17; // [sp+20h] [bp-18h]@5 char v18; // [sp+24h] [bp-14h]@5 int v19; // [sp+28h] [bp-10h]@1 int v20; // [sp+34h] [bp-4h]@1 v5 = this; v19 = (int)"ShineObjectClass::ShineMob::sm_Scream4Rescue"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_Scream4Rescue"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_Scream4Rescue"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_DWORD *)(*((_DWORD *)v5 + 2042) + 4); v7 = *(_DWORD *)(v6 + 90) == 0; v20 = 0; if ( !v7 && a3 > 0 ) { if ( a2 ) { v8 = *(_DWORD *)(v6 + 90); sub_427BE0(&v13); v9 = *(_WORD *)(a2 + 4); v13 = &off_6E9594; v14 = a2; v15 = v9; v16 = v8; v17 = a4; v18 = a5; v10 = *(_DWORD *)((char *)v5 + 102); LOBYTE(v20) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00(v5, v11, v10, (_UNKNOWN *)a3, 0, (int)&v13, 0, 65535); LOBYTE(v20) = 0; v13 = &off_6E9594; sub_427EB0(&v13); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::sm_Scream4Rescue : Target not found", 0); } } --dword_750CB8; v20 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_Scream4Rescue"); } // 6E9594: using guessed type int (__stdcall *off_6E9594)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00566A30) -------------------------------------------------------- int __thiscall sub_566A30(void *this) { int v1; // esi@1 int v2; // ecx@3 char v3; // cl@7 __int16 v4; // ax@9 int v5; // edi@9 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_DuringBattle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_DuringBattle"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55C7D0(v1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1420))(v1) ) { if ( *(_DWORD *)(v1 + 7964) < (unsigned int)(410 * *(_DWORD *)(**(_DWORD **)(v1 + 8168) + 70)) >> 10 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1876))(v1); v5 = sub_54DE90(&unk_13253630, v4); if ( v5 ) { if ( !(*(_BYTE *)(v1 + 9492) & 4) ) { sub_4ADC40(&dword_848F94, v1); *(_BYTE *)(v1 + 9492) |= 4u; } sub_5668F0( (void *)v1, v5, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 8168) + 4) + 99), *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v1 + 8168) + 4) + 103), 1); } *(_BYTE *)(v1 + 9492) &= 0xFEu; } } else { v2 = *(_DWORD *)(v1 + 122); if ( v2 && (sub_49D140(*(void **)(v2 + 20), **(_DWORD **)(v1 + 102), *(_DWORD *)(*(_DWORD *)(v1 + 102) + 4)) || sub_49D1B0( *(void **)(*(_DWORD *)(v1 + 122) + 20), **(_DWORD **)(v1 + 102), *(_DWORD *)(*(_DWORD *)(v1 + 102) + 4))) ) (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 3872))(v1); v3 = *(_BYTE *)(v1 + 9476); *(_BYTE *)(v1 + 9492) &= 0xFBu; *(_BYTE *)(v1 + 9480) = v3 & 2; *(_DWORD *)(v1 + 8200) = 0; sub_482110(v1 + 9032); (*(void (**)(void))(**(_DWORD **)(v1 + 8844) + 20))(); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_DuringBattle"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; //----- (00566BE0) -------------------------------------------------------- char __thiscall sub_566BE0(void *this, int a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1068))(v3, a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00566C90) -------------------------------------------------------- int __thiscall sub_566C90(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetTargetInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_GetTargetInfo"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 32800); if ( !v3 ) v3 = *(_DWORD *)(v2 + 32804); if ( v3 == a2 ) sub_42B160((void *)(v2 + 32792), v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_GetTargetInfo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00566D50) -------------------------------------------------------- int __thiscall sub_566D50(void *this) { int v1; // esi@1 int v2; // ecx@1 __int16 v3; // ax@3 int v4; // edi@3 int v5; // ebx@5 char v6; // al@8 int v8; // [sp-4h] [bp-24h]@4 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_RescueRoutine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_RescueRoutine"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 9496); if ( !v2 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v2 + 1156))() != 2 ) { v8 = (int)"ShineObjectClass::ShineMob::so_RescueRoutine"; goto LABEL_14; } v3 = (*(int (**)(void))(**(_DWORD **)(v1 + 9496) + 1876))(); v4 = (unsigned __int16)v3; if ( v3 == -1 ) { v8 = (int)"ShineObjectClass::ShineMob::so_RescueRoutine"; LABEL_14: *(_DWORD *)(v1 + 9496) = 0; goto LABEL_15; } v5 = sub_54DE90(&unk_13253630, v3); if ( v5 == 0 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMob::so_RescueRoutine : Null target", v4); *(_DWORD *)(v1 + 9496) = 0; v8 = (int)"ShineObjectClass::ShineMob::so_RescueRoutine"; LABEL_15: *(_DWORD *)(v1 + 9500) = 60000; goto LABEL_16; } if ( *(_DWORD *)(v1 + 9500) <= (unsigned int)(*(int (**)(void))(**(_DWORD **)(v1 + 9496) + 1256))() || ((*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v1 + 1792))(v1, v5, 1), *(_DWORD *)(v1 + 9500) = (*(int (**)(void))(**(_DWORD **)(v1 + 9496) + 1256))(), v6 = *(_BYTE *)(v1 + 9492), v6 & 4) ) goto LABEL_12; if ( !(v6 & 2) ) { sub_4ADDE0(&dword_848F94, v1); *(_BYTE *)(v1 + 9492) |= 4u; LABEL_12: v8 = (int)"ShineObjectClass::ShineMob::so_RescueRoutine"; goto LABEL_16; } sub_4ADD10(&dword_848F94, v1); *(_BYTE *)(v1 + 9492) |= 4u; v8 = (int)"ShineObjectClass::ShineMob::so_RescueRoutine"; LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848F94: using guessed type int dword_848F94; //----- (00566EF0) -------------------------------------------------------- int __thiscall sub_566EF0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::SkillCastStruct::scs_Clear"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::SkillCastStruct::scs_Clear"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)v1 = 0; *((_DWORD *)v1 + 2) = 0; *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *((_DWORD *)v1 + 5) = 0; *((_DWORD *)v1 + 6) = 0; *((_DWORD *)v1 + 8) = 0; *((_BYTE *)v1 + 37) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::SkillCastStruct::scs_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00566F60) -------------------------------------------------------- int __thiscall sub_566F60(void *this, __int16 a2, int a3) { void *v3; // esi@1 void *v4; // eax@1 int v5; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 18465; *((_WORD *)v4 + 1) = a2; *((_DWORD *)v4 + 1) = a3; if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime : Packet Too Long", 8); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00567060) -------------------------------------------------------- int __thiscall sub_567060(void *this) { void *v1; // ebx@1 int (__thiscall *v2)(_DWORD); // eax@1 int v3; // eax@7 __int64 v4; // qax@7 int v5; // esi@7 signed int v6; // edx@7 int v7; // edi@7 int v8; // eax@7 int v9; // ecx@7 int v11; // [sp-4h] [bp-34h]@6 char v12; // [sp+10h] [bp-20h]@7 int v13; // [sp+18h] [bp-18h]@7 int v14; // [sp+1Ch] [bp-14h]@7 int v15; // [sp+20h] [bp-10h]@1 int v16; // [sp+2Ch] [bp-4h]@1 v1 = this; v15 = (int)"ShineObjectClass::ShineMobileObject::smo_RunInFear"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_RunInFear"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_RunInFear"; dword_750AB8[dword_750CB8++] = -1; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3188); v16 = 0; if ( v2(v1) ) goto LABEL_6; if ( *((_WORD *)v1 + 3824) != 29203 ) *((_DWORD *)v1 + 1911) = 0; if ( *((_DWORD *)v1 + 100) ) { sub_4BDD80((char *)v1 + 368, 0); LABEL_6: v16 = -1; v11 = (int)"ShineObjectClass::ShineMobileObject::smo_RunInFear"; goto LABEL_10; } v3 = dword_14F4AFC4 & (dword_14F4AFC0 + 1); dword_14F4AFC0 = v3; v4 = 180 * (unsigned __int16)word_14F42FC0[v3]; v5 = ((BYTE4(v4) & 0x3F) + (signed int)v4) >> 6; v6 = (signed int)((unsigned __int64)(1717986919i64 * 3200 * sub_576E10(&unk_132546E8, v5) / 1024) >> 32) >> 2; v7 = v6 + ((unsigned int)v6 >> 31); v8 = sub_576E40(&unk_132546E8, v5); v9 = *(_DWORD *)((char *)v1 + 102); v13 = v7 + *(_DWORD *)v9; v14 = 3200 * v8 / 1024 / 10 + *(_DWORD *)(v9 + 4); if ( sub_4BE0E0(v1, (int)&v13, 450, (int)&v12, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int, signed int))(*(_DWORD *)v1 + 1456))( v1, &v12, 26, 73, 2, 2); v11 = (int)"ShineObjectClass::ShineMobileObject::smo_RunInFear"; v16 = -1; LABEL_10: --dword_750CB8; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14F42FC0: using guessed type __int16 word_14F42FC0[]; // 14F4AFC0: using guessed type int dword_14F4AFC0; // 14F4AFC4: using guessed type int dword_14F4AFC4; //----- (00567210) -------------------------------------------------------- int __thiscall sub_567210(void *this, int a2, __int16 a3, int a4, int a5, int a6) { void *v6; // esi@1 void (__thiscall *v7)(_DWORD, _DWORD); // eax@1 int v8; // edx@1 int (__thiscall *v9)(_DWORD); // eax@2 unsigned __int16 v10; // ax@4 void *v11; // edi@4 int v12; // eax@4 int v13; // edx@4 int v14; // edx@4 int (__thiscall *v15)(_DWORD); // eax@5 __int16 v16; // cx@7 int v17; // eax@7 int v18; // ST14_4@7 int v19; // eax@7 int v21[3]; // [sp+10h] [bp-1Ch]@7 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 v6 = this; v22 = (int)"ShineObjectClass::ShineMobileObject::so_MoveByServer"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_MoveByServer"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_MoveByServer"; dword_750AB8[dword_750CB8++] = -1; v7 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 3404); v23 = 0; v7(v6, 1); v8 = *(_DWORD *)v6; if ( a5 == 2 ) v9 = *(int (__thiscall **)(_DWORD))(v8 + 1304); else v9 = *(int (__thiscall **)(_DWORD))(v8 + 1300); v10 = v9(v6); (*(void (__thiscall **)(void *, int, _DWORD, int, _DWORD))(*(_DWORD *)v6 + 1632))(v6, a2, v10, a5, 0); v11 = off_849C18; *(_WORD *)off_849C18 = a3 & 0x3FF | 0x2000; *((_WORD *)v11 + 1) = *((_WORD *)v6 + 2); v12 = *(_DWORD *)((char *)v6 + 102); *((_DWORD *)v11 + 1) = *(_DWORD *)v12; *((_DWORD *)v11 + 2) = *(_DWORD *)(v12 + 4); *((_DWORD *)v11 + 3) = *(_DWORD *)a2; v13 = *(_DWORD *)(a2 + 4); *((_WORD *)v11 + 11) &= 0xFFFEu; *((_DWORD *)v11 + 4) = v13; v14 = *(_DWORD *)v6; if ( a5 == 2 ) v15 = *(int (__thiscall **)(_DWORD))(v14 + 1304); else v15 = *(int (__thiscall **)(_DWORD))(v14 + 1300); *((_WORD *)v11 + 10) = v15(v6); *((_WORD *)v6 + 166) = a4; *(_DWORD *)((char *)v6 + 334) = *(_DWORD *)((char *)v11 + 2); *(_DWORD *)((char *)v6 + 338) = *(_DWORD *)((char *)v11 + 6); *(_DWORD *)((char *)v6 + 342) = *(_DWORD *)((char *)v11 + 10); *(_DWORD *)((char *)v6 + 346) = *(_DWORD *)((char *)v11 + 14); *(_DWORD *)((char *)v6 + 350) = *(_DWORD *)((char *)v11 + 18); v16 = *((_WORD *)v11 + 11); v21[2] = 24; *((_WORD *)v6 + 177) = v16; sub_4287B0(v21, &off_849C18, v21[2]); v17 = *(_DWORD *)((char *)v6 + 102); v21[2] = 65535; v21[1] = 0; v21[0] = (int)v21; v18 = v17; LOBYTE(v23) = 1; v19 = sub_427BD0(&unk_13253E80); sub_549E00(v6, v19, v18, 0, 0, v21[0], v21[1], v21[2]); LOBYTE(v23) = 0; sub_428A70(v21); (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)v6 + 3728))(v6, a2, a4, a6); --dword_750CB8; v23 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_MoveByServer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005673F0) -------------------------------------------------------- int __thiscall sub_5673F0(void *this, int a2) { void *v2; // esi@1 int v3; // esi@2 int (__thiscall *v4)(_DWORD); // eax@3 int v5; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned int)dword_14D129E8 >= *(_DWORD *)v2 ) { v4 = (int (__thiscall *)(_DWORD))*((_DWORD *)v2 + 1); *(_DWORD *)v2 = 0; *((_DWORD *)v2 + 3) = 0; *((_DWORD *)v2 + 1) = sub_5131E0; *((_DWORD *)v2 + 4) = sub_452C70; v5 = v4(a2); --dword_750CB8; v3 = v5; } else { v3 = *((_DWORD *)v2 + 2); --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005674C0) -------------------------------------------------------- int __thiscall sub_5674C0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = sub_5131E0; *(_DWORD *)(this + 16) = sub_452C70; *(_DWORD *)(this + 12) = 0; return result; } //----- (005674E0) -------------------------------------------------------- int __thiscall sub_5674E0(void *this, int a2, __int16 a3) { unsigned int v3; // ST10_4@1 int v4; // edi@1 int v5; // eax@1 int (__thiscall *v6)(_DWORD, _DWORD); // edx@1 int v7; // eax@3 int v8; // esi@3 int v9; // ebx@4 char *v10; // eax@7 __int16 v11; // ax@9 int v12; // eax@9 int v13; // eax@10 int v14; // eax@11 int v15; // edx@13 int v16; // esi@14 __int16 v17; // ax@14 void *v18; // esi@14 int v19; // esi@14 int v20; // eax@14 int v21; // eax@16 int (__thiscall *v22)(_DWORD); // eax@18 int v23; // eax@18 int v25; // [sp+14h] [bp-B4h]@3 char *v26; // [sp+18h] [bp-B0h]@7 void *v27; // [sp+1Ch] [bp-ACh]@1 int v28; // [sp+20h] [bp-A8h]@1 int v29; // [sp+24h] [bp-A4h]@14 int v30; // [sp+28h] [bp-A0h]@14 __int16 v31; // [sp+2Ch] [bp-9Ch]@14 char v32; // [sp+2Eh] [bp-9Ah]@14 char v33; // [sp+92h] [bp-36h]@14 char v34; // [sp+94h] [bp-34h]@13 int v35; // [sp+98h] [bp-30h]@13 unsigned int v36; // [sp+9Ch] [bp-2Ch]@13 int v37; // [sp+A0h] [bp-28h]@13 int v38; // [sp+A4h] [bp-24h]@13 char v39; // [sp+A8h] [bp-20h]@13 unsigned int v40; // [sp+B8h] [bp-10h]@1 int v41; // [sp+C4h] [bp-4h]@1 int v42; // [sp+C8h] [bp+0h]@1 v40 = (unsigned int)&v42 ^ __security_cookie; v3 = (unsigned int)&v42 ^ __security_cookie; v4 = a2; v27 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)a2; LOWORD(v28) = a3 << 10; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(v5 + 8); v41 = 0; if ( v6(a2, v3) > 0 ) { do { if ( !(unsigned __int8)(*(int (__thiscall **)(char *, int *))(*((_DWORD *)v27 + 14672) + 8))( (char *)v27 + 58688, &v28) ) { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, v28 & 0x3FF); v8 = v7; v25 = v7; if ( v7 ) { v9 = *(_DWORD *)(v7 + 16); if ( !v9 ) v9 = (int)dword_1508B168; if ( sub_63FD50(v7) != -1 ) { v10 = sub_63FD40((void *)v8); v26 = v10; if ( v10 ) { if ( !*v10 ) { v11 = sub_63FD50(v8); v12 = sub_44F210((int)&dword_AA0A90, v11); if ( v12 ) { v13 = *(_DWORD *)(v12 + 4); if ( v13 ) { v14 = *(_WORD *)(v13 + 34); if ( (_WORD)v14 ) { memcpy(&v34, &unk_AA0BCC, 0x24u); v36 = v14 + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); _LN52(&v34); v15 = v35; *v26 = v39 - 100; v8 = v25; *(_DWORD *)v26 = (unsigned __int8)*v26 | (((_WORD)v38 + 1) << 8) & 0x1F00 | ((v37 & 0x3F | ((v36 & 0x3F | (v15 << 6)) << 6)) << 13); } else { *(_DWORD *)v26 = 1992027391; } sub_5CF620((void *)v8); sub_5CF620((void *)v8); sub_63FD50(v8); sub_63FD90(v8, (int)&v29); v16 = *((_DWORD *)v27 + 14672); v17 = sub_4802C0((int)((char *)v27 + 58688)); (*(void (__thiscall **)(char *, _DWORD, int *, int *, int *, int *))(v16 + 68))( (char *)v27 + 58688, (unsigned __int16)v17, &v28, &v29, &v28, &v28); v18 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v18 + 1) = *((_WORD *)v27 + 2); *((_DWORD *)v18 + 1) = (*(int (**)(void))(*(_DWORD *)v27 + 836))(); *((_WORD *)v18 + 4) = sub_4802C0((int)((char *)v27 + 58688)); *(_DWORD *)((char *)v18 + 10) = v29; *(_DWORD *)((char *)v18 + 14) = v30; *((_WORD *)v18 + 9) = v31; memcpy((char *)v18 + 20, &v32, 0x64u); *((_BYTE *)v18 + 120) = v33; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v9 + 12))(v9, &v32); v19 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v9 + 12))(v9, &v32) + 20; v20 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v9 + 12))(v9, &v32); if ( sub_4C81E0(&off_849C18, v20 + 20) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v19); } sub_43BBF0((int)((char *)v27 + 58688)); v4 = a2; } } } } } } } v22 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 8); LOWORD(v28) = (v28 ^ (unsigned __int16)(v28 + 1)) & 0x3FF ^ v28; v23 = v22(v4); } while ( (v28 & 0x3FF) < v23 ); } --dword_750CB8; v41 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0A90: using guessed type int dword_AA0A90; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (00567880) -------------------------------------------------------- int __thiscall sub_567880(void *this, int a2, __int16 a3, __int16 a4, int a5) { void *v5; // esi@1 int v6; // eax@3 int v7; // ecx@3 _BYTE *v8; // ecx@3 int v9; // eax@3 __int16 v11; // [sp+10h] [bp-84h]@3 char v12; // [sp+14h] [bp-80h]@3 unsigned int v13; // [sp+84h] [bp-10h]@1 int v14; // [sp+90h] [bp-4h]@1 int v15; // [sp+94h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SmallItemDelete"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SmallItemDelete"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; if ( a2 ) { sub_63FD90(a2, (int)&v12); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[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 = *(_DWORD *)(v6 + 16); v8[20] = 0; *((_DWORD *)v8 + 4) = v9; LOWORD(v9) = *((_WORD *)v5 + 2); v11 = (a3 << 10) | a4 & 0x3FF; sub_564BE0(v5, v9, (int)&v12, (int)&v11); --dword_750CB8; v14 = -1; } else { --dword_750CB8; v14 = -1; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SmallItemDelete"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005679D0) -------------------------------------------------------- int __thiscall sub_5679D0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 int v5; // edi@2 char v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sub_564DF0(v2, a2); v3 = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v2 + 1964))(v2, &v7); if ( v3 ) { v4 = sub_59B1B0(dword_1325CEF0, a2, v3); v5 = v4; if ( v4 ) { *((_DWORD *)v2 + 1443) = *(_WORD *)(v4 + 39); *((_DWORD *)v2 + 1444) = *(_WORD *)(v4 + 41); *((_DWORD *)v2 + 1448) = *(_WORD *)(v4 + 39); *((_DWORD *)v2 + 1449) = *(_WORD *)(v4 + 41); sub_564E80(v2, *(_BYTE *)(v4 + 43), *(_WORD *)(v4 + 44), *(_DWORD *)(v4 + 46)); sub_564E80(v2, *(_BYTE *)(v5 + 50), *(_WORD *)(v5 + 51), *(_DWORD *)(v5 + 53)); sub_564E80(v2, *(_BYTE *)(v5 + 57), *(_WORD *)(v5 + 58), *(_DWORD *)(v5 + 60)); } } --dword_750CB8; v8 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00567B00) -------------------------------------------------------- char __thiscall sub_567B00(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 unsigned int v5; // edi@1 int v6; // ecx@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineAxialFlag::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineAxialFlag::so_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)((char *)v3 + 335); v5 = 0; if ( v4 ) sub_5A7F60(v4, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_507640); v6 = *((_DWORD *)v3 + 87); if ( (unsigned int)((*((_DWORD *)v3 + 88) - v6) >> 2) > 0 ) { do { (*(void (**)(void))(**(_DWORD **)(v6 + 4 * v5) + 4))(); v6 = *((_DWORD *)v3 + 87); ++v5; } while ( (*((_DWORD *)v3 + 88) - v6) >> 2 > v5 ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineAxialFlag::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00567BF0) -------------------------------------------------------- char __thiscall sub_567BF0(void *this, int a2, int a3) { 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 void *v9; // eax@12 char v11; // [sp+Ch] [bp-24h]@12 int v12; // [sp+20h] [bp-10h]@1 int v13; // [sp+2Ch] [bp-4h]@1 v3 = (int)this; v12 = (int)"ShineObjectClass::ShineEffectObject::so_Routine"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineEffectObject::so_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(v3 + 122); v13 = 0; if ( v4 ) { v5 = *(_DWORD *)(v3 + 102); if ( *(_DWORD *)v5 >= *(_DWORD *)(v4 + 24) || *(_DWORD *)(v5 + 4) >= *(_DWORD *)(v4 + 28) ) { sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : Effect", 0); *(_DWORD *)(v3 + 402) = 0; } } v6 = *(_DWORD *)(v3 + 431); if ( dword_14D129E8 > v6 ) { *(_DWORD *)(v3 + 431) = v6 + *(_DWORD *)(v3 + 435); v7 = *(_DWORD *)(v3 + 427); if ( v7 ) { if ( (unsigned int)sub_402710(v3, *(_DWORD *)(v3 + 427)) > 0x64 ) sub_452220(v3, **(_DWORD **)(v7 + 102), *(_DWORD *)(*(_DWORD *)(v7 + 102) + 4), 5); } } if ( (unsigned int)dword_14D129E8 >= *(_DWORD *)(v3 + 402) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 5); } if ( *(_DWORD *)(v3 + 126) ) { sub_5D44A0((int)&v11, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); v8 = *(_DWORD *)(v3 + 150) < 0x10u; v9 = (const void *)(v3 + 130); LOBYTE(v13) = 1; if ( !v8 ) v9 = *(const void **)v9; LuaScriptScenario::lss_Routine(*(_DWORD *)(v3 + 126), v9, (int)&v11); LOBYTE(v13) = 0; sub_5D4580(&v11); } --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineEffectObject::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00567D80) -------------------------------------------------------- char __thiscall sub_567D80(void *this, int a2, int a3) { int v3; // esi@1 int v4; // ebx@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // ecx@3 char v7; // al@3 int (__thiscall *v8)(_DWORD); // eax@7 int v9; // eax@7 unsigned int v11; // ecx@26 int v12; // eax@27 int v13; // edx@29 int v14; // eax@30 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@34 int v16; // ST20_4@34 int v17; // eax@35 int v18; // edi@37 void (__thiscall *v19)(_DWORD); // edx@39 int v20; // ecx@40 bool v21; // zf@43 int v22; // eax@43 int v23; // eax@45 int v24; // ST04_4@47 int v25; // eax@47 int v26; // eax@47 int v27; // ecx@47 signed int v28; // eax@48 int v29; // eax@50 int v30; // eax@52 int v31; // ecx@52 int v32; // edi@61 int v33; // eax@61 int v34; // eax@61 void *v35; // eax@62 int v36; // ST10_4@62 int v37; // eax@62 __int16 v38; // ax@62 int v39; // eax@63 int v40; // eax@64 char v41; // al@67 int v42; // edi@69 unsigned __int16 v43; // ax@69 int v44; // eax@70 int v45; // ecx@73 int v46; // eax@78 int v47; // edi@78 void (__thiscall *v48)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@87 int v49; // ST20_4@87 __int16 v50; // ax@88 int v51; // ecx@90 int v52; // [sp-4h] [bp-30h]@73 char v53; // [sp+10h] [bp-1Ch]@62 int v54; // [sp+1Ch] [bp-10h]@1 int v55; // [sp+28h] [bp-4h]@1 v3 = (int)this; v54 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; v55 = 0; sub_50EDC0(dword_13231278); v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156); *(_BYTE *)(v3 + 7888) &= 0xFBu; if ( (unsigned __int8)v5(v3) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { v6 = *(_DWORD *)(v3 + 118); v7 = *(_BYTE *)(v6 + 4); if ( v7 != 3 && v7 != 2 ) *(_BYTE *)(v6 + 4) = 0; sub_406770((void *)(v3 + 432), v3); if ( *(_BYTE *)(v3 + 3820) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 864))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 872))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3484))(v3); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 52))(v3, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1980))(v3); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072); *(_BYTE *)(v3 + 3820) = 0; v9 = v8(v3); if ( (unsigned __int8)sub_4C8380(v9) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2256))(v3); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 4 ) { if ( *(_BYTE *)(v3 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3864))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1160))(v3); goto LABEL_13; } if ( *(_BYTE *)(v3 + 7888) & 4 && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 1) && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 2) ) sub_567060((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3864))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3868))(v3); if ( *(_DWORD *)(v3 + 400) <= 0u || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) ) *(_DWORD *)(v3 + 368) = 0; else sub_4BDD80((void *)(v3 + 368), 0); sub_55B6C0(v3); v11 = *(_DWORD *)(v3 + 7644); if ( !v11 ) { LABEL_97: v55 = -1; goto LABEL_14; } v12 = *(_DWORD *)(v3 + 7664); if ( !v12 ) { LABEL_28: *(_DWORD *)(v3 + 7644) = v4; v55 = -1; goto LABEL_14; } v13 = *(_DWORD *)v3; if ( dword_14D129E8 < v11 ) { v14 = (*(int (__thiscall **)(int))(v13 + 1072))(v3); if ( (unsigned __int8)sub_4C83A0(v14) || sub_57A470((void *)v3) == 2 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3788))(v3); v55 = -1; goto LABEL_14; } goto LABEL_97; } (*(void (__thiscall **)(int, _DWORD))(v13 + 3824))(v3, **(_WORD **)(v12 + 4)); if ( *(_DWORD *)(v3 + 7668) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3780))(v3, *(_WORD *)(v3 + 7648)); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3748))( v3, *(_WORD *)(v3 + 7648), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 207), 0, 0, 0); v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2616); v16 = *(_WORD *)(v3 + 7648); *(_DWORD *)(v3 + 7644) = 0; v15(v3, 2, v16, 0); v55 = -1; goto LABEL_14; } v17 = *(_DWORD *)(v3 + 7676); if ( v17 ) { if ( **(_WORD **)v17 == word_14D2118C ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 984))(v3); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3748))( v3, *(_WORD *)(v3 + 7648), v18, 0, 0, 0); (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v3 + 884))(v3, *(_WORD *)(v3 + 7648), v18); } else { (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3748))( v3, *(_WORD *)(v3 + 7648), *(_DWORD *)(v3 + 7672), 0, 0, 0); } (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3784))( v3, *(_DWORD *)(v3 + 7676), *(_BYTE *)(v3 + 7680), *(_BYTE *)(v3 + 7681)); v19 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3832); *(_DWORD *)(v3 + 7644) = 0; v19(v3); v55 = -1; goto LABEL_14; } v20 = *(_DWORD *)(v3 + 7652); if ( v20 && !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)v20 + 2020))(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 199)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3788))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3768))(v3); v55 = -1; goto LABEL_14; } v21 = (*(int (__thiscall **)(int, _DWORD, _DWORD, int))(*(_DWORD *)v3 + 3796))( v3, *(_WORD *)(v3 + 7648), *(_DWORD *)(v3 + 7664), v3 + 7684) == 0; v22 = *(_DWORD *)v3; if ( v21 ) { (*(void (__thiscall **)(int))(v22 + 3788))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3768))(v3); v55 = -1; goto LABEL_14; } v23 = (*(int (__thiscall **)(int))(v22 + 1072))(v3); if ( (unsigned __int8)sub_4C83A0(v23) || sub_57A470((void *)v3) == 2 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3788))(v3); goto LABEL_97; } v4 = 0; v24 = *(_DWORD *)(v3 + 102); v25 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v3, v25, v24, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); sub_418B40((int)byte_85A2C0, v26); v27 = *(_DWORD *)(v3 + 7652); if ( v27 ) v28 = (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v27 + 1800))(); else v28 = 65535; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 3776))(v3, v28); v29 = *(_DWORD *)(v3 + 7664); if ( *(_BYTE *)(v29 + 200) ) { (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v3 + 3800))(v3, *(_WORD *)(v3 + 7648), v29, v3 + 7684); (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 3764))( v3, *(_DWORD *)(*(_DWORD *)(v3 + 7664) + 204), *(_DWORD *)(*(_DWORD *)(v3 + 7664) + 212)); } v30 = *(_DWORD *)(v3 + 7664); v31 = *(_DWORD *)(*(_DWORD *)(v30 + 4) + 527); if ( v31 == 6 ) { (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v3 + 3800))(v3, *(_WORD *)(v3 + 7648), v30, v3 + 7684); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1752))(v3); } else { if ( v31 == 12 ) { (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v3 + 3800))( v3, *(_WORD *)(v3 + 7648), v30, v3 + 7684); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2452))(v3); } else { if ( *(_BYTE *)(v30 + 272) == 1 || *(_BYTE *)(v30 + 440) == 1 ) { sub_57A5A0((void *)v3, *(_DWORD *)(v3 + 7664)); } else { if ( *(_WORD *)(v3 + 7648) == *((_WORD *)sub_4695D0(&unk_132577A0) + 5) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 304))(v3) && *(_DWORD *)(v3 + 122) ) { v32 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 9) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2392))(v3) + 37); v33 = *(_DWORD *)(v3 + 122); *(_DWORD *)(v32 + 13) = *(_DWORD *)v33; *(_DWORD *)(v32 + 17) = *(_DWORD *)(v33 + 4); *(_DWORD *)(v32 + 21) = *(_DWORD *)(v33 + 8); v34 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v32 + 25) = *(_DWORD *)v34; *(_DWORD *)(v32 + 29) = *(_DWORD *)(v34 + 4); sub_5A5FD0(off_86B050, v3, v32); } sub_578350((void *)v3, *(_DWORD *)(v3 + 7664), *(_DWORD *)(v3 + 102)); *(_BYTE *)(v3 + 7888) &= 0xEFu; v35 = off_849C18; *(_WORD *)off_849C18 = 9303; *((_WORD *)v35 + 2) = *(_WORD *)(v3 + 4); *((_WORD *)v35 + 1) = *(_WORD *)(v3 + 7906); *((_WORD *)v35 + 3) = *(_WORD *)(v3 + 7648); sub_4287B0(&v53, &off_849C18, 8); v36 = *(_DWORD *)(v3 + 102); LOBYTE(v55) = 1; v37 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v37, v36, 0, 0, (int)&v53, 1, 65535); LOBYTE(v55) = 0; sub_428A70(&v53); v38 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3828))(v3); sub_437E60(&dword_87B264, *(_WORD *)(v3 + 7906), *(_DWORD *)(v3 + 7664), v3, v3, 0, -1, v38, 0, 1u); } else { v39 = *(_DWORD *)(v3 + 7664); if ( *(_BYTE *)(v39 + 464) == 1 ) { v40 = *(_DWORD *)(v39 + 4); if ( *(_DWORD *)(v40 + 263) == 1 ) { if ( *(_BYTE *)(v40 + 192) ) *(_BYTE *)(v3 + 7888) |= 0x10u; v41 = *(_BYTE *)(v3 + 7888); if ( !(v41 & 0x10) ) { *(_DWORD *)(v3 + 7644) += 3; *(_BYTE *)(v3 + 7888) = v41 | 0x10; --dword_750CB8; v55 = -1; goto LABEL_15; } v42 = *(_DWORD *)v3; *(_BYTE *)(v3 + 7888) = v41 & 0xEF; v43 = (*(int (__thiscall **)(int, signed int))(v42 + 3828))(v3, 1); (*(void (__thiscall **)(int, _DWORD, _DWORD, int, _DWORD, _DWORD))(v42 + 3060))( v3, *(_DWORD *)(v3 + 7664), *(_WORD *)(v3 + 7906), v3, *(_DWORD *)(v3 + 7652), v43); } else { v44 = *(_DWORD *)(v3 + 7652); if ( v44 ) sub_57A830((void *)v3, *(_DWORD *)(v44 + 102), v3 + 7684); else sub_57A830((void *)v3, v3 + 7656, v3 + 7684); } } else { v45 = *(_DWORD *)(v3 + 7652); v52 = v3 + 7684; if ( v45 ) sub_57AA60((void *)v3, v45, v52); else sub_57A830((void *)v3, v3 + 7656, v52); } } } } } if ( !*(_DWORD *)(v3 + 7664) ) goto LABEL_28; v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1064))(v3); ++*(_DWORD *)(v46 + 16); v47 = 0; if ( *(_WORD *)(v3 + 7684) & 0xF000 ) v47 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 4 * ((unsigned int)*(_WORD *)(v3 + 7684) >> 12) + 503); if ( *(_DWORD *)(*(_DWORD *)(v3 + 7664) + 24) == *(_DWORD *)(*(_DWORD *)(v3 + 7664) + 28) ) { if ( !sub_57A2D0((void *)v3) ) goto LABEL_86; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3012))(v3, *(_WORD *)(v3 + 7648)) == 1 ) goto LABEL_86; } if ( *(_BYTE *)(v3 + 7888) & 0x10 ) goto LABEL_88; (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, int))(*(_DWORD *)v3 + 3748))( v3, *(_WORD *)(v3 + 7648), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 207), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 211), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 215), v47); LABEL_86: if ( !(*(_BYTE *)(v3 + 7888) & 0x10) ) { v48 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2616); v49 = *(_WORD *)(v3 + 7648); *(_DWORD *)(v3 + 7644) = 0; v48(v3, 2, v49, 0); } LABEL_88: (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3772))(v3, *(_WORD *)(**(_DWORD **)(v3 + 7664) + 73)); v50 = word_8655A0; if ( word_8655A0 == -1 ) { v50 = sub_639620(&unk_13257C80, (unsigned __int8 *)"UseRide"); word_8655A0 = v50; } v51 = *(_DWORD *)(v3 + 7664); if ( !v51 ) *(_DWORD *)(v3 + 7644) = 0; if ( !*(_DWORD *)v51 ) *(_DWORD *)(v3 + 7644) = 0; if ( **(_WORD **)v51 == v50 ) { *(_DWORD *)(v3 + 7644) = 0; v55 = -1; goto LABEL_14; } goto LABEL_97; } LABEL_13: v55 = -1; LABEL_14: --dword_750CB8; LABEL_15: sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8655A0: using guessed type __int16 word_8655A0; // 86B050: using guessed type int (__stdcall *(*off_86B050[5])[3])(int, int); // 13231278: using guessed type int dword_13231278[]; // 14D129E8: using guessed type int dword_14D129E8; // 14D2118C: using guessed type __int16 word_14D2118C; //----- (005686E0) -------------------------------------------------------- char __thiscall sub_5686E0(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // edi@1 __time32_t v5; // eax@3 int v6; // eax@4 int v7; // ecx@5 void *v8; // eax@10 int v9; // ST04_4@10 int v10; // eax@10 void *v11; // ecx@19 int (__thiscall *v12)(_DWORD); // eax@22 int v13; // edi@22 _UNKNOWN *v14; // ST08_4@22 int v15; // eax@22 bool v16; // cf@25 const void *v17; // eax@25 char v19; // [sp+10h] [bp-28h]@25 char v20; // [sp+18h] [bp-20h]@10 char v21; // [sp+1Ch] [bp-1Ch]@22 int v22; // [sp+24h] [bp-14h]@1 void *v23; // [sp+28h] [bp-10h]@1 int v24; // [sp+34h] [bp-4h]@1 v3 = this; v22 = (int)"ShineObjectClass::ShineNPC::so_Routine"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineNPC::so_Routine"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v23 = v3; LOBYTE(v24) = 1; if ( *((_BYTE *)v3 + 9664) && **((_BYTE **)v3 + 957) != 2 ) { v5 = sub_418EA0((__time32_t)byte_D9FB230, (int)"ShineObjectClass::ShineNPC::so_Routine : NPC from table is killed"); sub_418F20(v5, (int)&unk_13359E04); **((_BYTE **)v3 + 957) = 2; } v6 = *(_DWORD *)((char *)v3 + 122); if ( v6 ) { v7 = *(_DWORD *)((char *)v3 + 102); if ( *(_DWORD *)v7 >= *(_DWORD *)(v6 + 24) || *(_DWORD *)(v7 + 4) >= *(_DWORD *)(v6 + 28) ) { sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : NPC", 0); *((_BYTE *)v3 + 7888) |= 1u; } } sub_50BD10(v3); sub_567D80(v3, a2, a3); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1156))(v3) == 3 ) { if ( !*((_BYTE *)v3 + 8208) ) { v8 = off_849C18; *(_WORD *)off_849C18 = 9290; *((_WORD *)v8 + 2) = *((_WORD *)v3 + 4105); *((_WORD *)v8 + 1) = *((_WORD *)v3 + 2); sub_4287B0(&v20, &off_849C18, 6); v9 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v24) = 2; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v10, v9, 0, 0, (int)&v20, 1, 65535); *((_BYTE *)v3 + 8208) = 1; LOBYTE(v24) = 1; sub_428A70(&v20); } if ( (unsigned int)(dword_14D129E8 - *((_DWORD *)v3 + 2053)) >= 0x32 ) { sub_4C48D0((int)dword_D9FBF28, *((_WORD *)v3 + 2)); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 11); } LOBYTE(v24) = 0; if ( (*(void **)((char *)v3 + 30) != (char *)v3 + 22 || *(void **)((char *)v3 + 26) != (char *)v3 + 22) && !sub_549640((char *)v3 + 22) || (*(void **)((char *)v3 + 42) != (char *)v3 + 34 || *(void **)((char *)v3 + 38) != (char *)v3 + 34) && !sub_549640((char *)v3 + 34) ) { v11 = *(void **)((char *)v3 + 122); if ( v11 ) sub_462120(v11, (int)"SlantedListNormalizer::~SlantedListNormalizer"); } } else { if ( *((_DWORD *)v3 + 2384) ) { sub_5C0860(&v21, *((_DWORD *)v3 + 2384)); v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1804); v13 = *(_DWORD *)((char *)v3 + 102); LOBYTE(v24) = 3; v14 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v12(v3) + 4) + 59); v15 = sub_427BD0(&unk_13253E80); sub_549E00(v3, v15, v13, v14, 0, (int)&v21, 0, 65535); LOBYTE(v24) = 1; sub_5C0880(&v21); v4 = -1; } if ( *(_DWORD *)((char *)v3 + 126) && byte_14D129F4 == 1 ) { sub_5D44A0((int)&v19, *((_WORD *)v3 + 2), *(_DWORD *)((char *)v3 + 122)); v16 = *(_DWORD *)((char *)v3 + 150) < 0x10u; v17 = (char *)v3 + 130; LOBYTE(v24) = 4; if ( !v16 ) v17 = *(const void **)v17; LuaScriptScenario::lss_Routine(*(_DWORD *)((char *)v3 + 126), v17, (int)&v19); LOBYTE(v24) = 1; sub_5D4580(&v19); } if ( *((_BYTE *)v3 + 7888) & 1 ) { sub_4C48D0((int)dword_D9FBF28, *((_WORD *)v3 + 2)); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 12); } LOBYTE(v24) = 0; sub_564DA0(&v23); } --dword_750CB8; v24 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineNPC::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D129F4: using guessed type char byte_14D129F4; //----- (00568A00) -------------------------------------------------------- char __thiscall sub_568A00(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ebx@1 int (__thiscall *v5)(_DWORD, _DWORD); // edx@1 __int16 v6; // di@1 void *v7; // esi@10 int v8; // ST04_4@16 int v9; // eax@16 void *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineDropItem::so_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; v12 = 0; v11 = v3; v5 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1188); LOBYTE(v12) = 1; v6 = v5(v3, a3); if ( v6 != *((_WORD *)v3 + 2) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineDropItem::so_Routine : so_handle is invalid!!!", 0); *((_WORD *)v3 + 2) = v6; } if ( *(_WORD *)((char *)v3 + 377) == -1 ) { sub_52D340(v3, 1); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 13); LOBYTE(v12) = 0; if ( (*(void **)((char *)v3 + 30) != (char *)v3 + 22 || *(void **)((char *)v3 + 26) != (char *)v3 + 22) && !sub_549640((char *)v3 + 22) || (*(void **)((char *)v3 + 42) != (char *)v3 + 34 || *(void **)((char *)v3 + 38) != (char *)v3 + 34) && !sub_549640((char *)v3 + 34) ) { v7 = *(void **)((char *)v3 + 122); if ( v7 ) sub_462120(v7, (int)"SlantedListNormalizer::~SlantedListNormalizer"); } } else { if ( sub_58FCB0((int)((char *)v3 + 504), dword_14D129EC) ) sub_52F790(v3, 1); if ( !sub_4C0A50((int)((char *)v3 + 492)) && (unsigned int)dword_14D129E8 >= *((_DWORD *)v3 + 120) ) { sub_4C0A60((int)((char *)v3 + 492)); v4 = 0; v8 = *(_DWORD *)((char *)v3 + 102); v9 = sub_427BD0(&unk_13253E80); sub_549C70(v3, v9, v8, 0, 0, (int)sub_565CD0, 0, 0, 0, 0, 65535); } if ( (unsigned int)dword_14D129E8 > *((_DWORD *)v3 + 121) ) { sub_52D340(v3, 1); *(_DWORD *)((char *)v3 + 369) = -1; *(_DWORD *)((char *)v3 + 373) = -1; memset((char *)v3 + 377, v4, 0x67u); *(_WORD *)((char *)v3 + 377) = -1; (*(void (__thiscall **)(void *, int, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, v4, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), v4, 14); } LOBYTE(v12) = v4; sub_564DA0(&v11); } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineDropItem::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D129EC: using guessed type int dword_14D129EC; //----- (00568C60) -------------------------------------------------------- char __thiscall sub_568C60(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 signed int v5; // ebx@1 void *v6; // esi@8 bool v7; // zf@8 int v8; // edi@15 int v9; // ecx@22 int v10; // ebx@26 int v11; // eax@27 int v12; // eax@29 unsigned int v13; // eax@30 int v15; // [sp-8h] [bp-2Ch]@12 int v16; // [sp-4h] [bp-28h]@12 int v17; // [sp+14h] [bp-10h]@1 int v18; // [sp+20h] [bp-4h]@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMover::so_Routine"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v18 = 0; v17 = v3; LOBYTE(v18) = 1; if ( !*(_DWORD *)(v3 + 8092) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3264))(v3, 0); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 126); LOBYTE(v18) = 0; if ( (*(_DWORD *)(v3 + 30) == v3 + 22 && *(_DWORD *)(v3 + 26) == v3 + 22 || sub_549640((void *)(v3 + 22))) && (*(_DWORD *)(v3 + 42) == v3 + 34 && *(_DWORD *)(v3 + 38) == v3 + 34 || sub_549640((void *)(v3 + 34))) ) goto LABEL_42; v6 = *(void **)(v3 + 122); v7 = v6 == 0; goto LABEL_40; } sub_55D360(v3); if ( *(_DWORD *)(v3 + 7988) <= 0 ) { if ( *(_DWORD *)(v3 + 7944) <= 0 || !*(_DWORD *)(v3 + 7940) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3264))(v3, 0); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); v16 = 126; v15 = 0; goto LABEL_13; } LABEL_22: v9 = *(_DWORD *)(v3 + 7940); if ( !v9 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v9 + 768))() != 1 && (v10 = (*(int (**)(void))(**(_DWORD **)(v3 + 7940) + 836))(), v10 == (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3240))(v3)) ) { sub_567D80((void *)v3, a2, a3); v11 = *(_DWORD *)(v3 + 102); if ( *(_DWORD *)(v3 + 8072) != *(_DWORD *)v11 || *(_DWORD *)(v3 + 8076) != *(_DWORD *)(v11 + 4) ) { sub_55D050(v3); v12 = *(_DWORD *)(v3 + 102); *(_DWORD *)(v3 + 8072) = *(_DWORD *)v12; *(_DWORD *)(v3 + 8076) = *(_DWORD *)(v12 + 4); } v13 = *(_DWORD *)(v3 + 8088); if ( v13 <= dword_14D129E8 && v13 ) sub_55D180(v3); LOBYTE(v18) = 0; if ( (*(_DWORD *)(v3 + 30) == v3 + 22 && *(_DWORD *)(v3 + 26) == v3 + 22 || sub_549640((void *)(v3 + 22))) && (*(_DWORD *)(v3 + 42) == v3 + 34 && *(_DWORD *)(v3 + 38) == v3 + 34 || sub_549640((void *)(v3 + 34))) ) goto LABEL_42; v6 = *(void **)(v3 + 122); v7 = v6 == 0; LABEL_40: if ( !v7 ) sub_462120(v6, (int)"SlantedListNormalizer::~SlantedListNormalizer"); goto LABEL_42; } (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 3264))(v3, 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); v16 = 126; v15 = 0; LABEL_13: sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), v15, v16); LOBYTE(v18) = 0; sub_564DA0(&v17); LABEL_42: v18 = v4; goto LABEL_43; } if ( !*(_BYTE *)(v3 + 8124) ) goto LABEL_22; v8 = v3 + 7996; while ( 1 ) { if ( !*(_DWORD *)v8 || *(_DWORD *)v8 + 600 >= (unsigned int)dword_14D129E8 ) goto LABEL_20; if ( *(_DWORD *)(v8 - 4) == (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3240))(v3) ) break; *(_DWORD *)(v8 - 4) = -1; *(_DWORD *)v8 = 0; LABEL_20: ++v5; v8 += 8; if ( v5 >= *(_BYTE *)(v3 + 8124) ) { v4 = -1; goto LABEL_22; } } (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 3264))(v3, 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 126); LOBYTE(v18) = 0; sub_564DA0(&v17); v18 = -1; LABEL_43: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMover::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00568F80) -------------------------------------------------------- int __thiscall sub_568F80(void *this) { void *v1; // esi@1 int v2; // ST04_4@5 int v3; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"; dword_750AB8[dword_750CB8++] = -1; sub_4C8F40((char *)v1 + 4120); if ( *(_DWORD *)((char *)v1 + 32703) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1264))(v1) ) *(_DWORD *)((char *)v1 + 32703) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1264))(v1); if ( *(_DWORD *)((char *)v1 + 32707) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1268))(v1) ) *(_DWORD *)((char *)v1 + 32707) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1268))(v1); v2 = *(_DWORD *)((char *)v1 + 102); v3 = sub_427BD0(&unk_13253E80); sub_549C70(v1, v3, v2, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); *((_DWORD *)v1 + 39088) = nullsub_2; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005690B0) -------------------------------------------------------- int __thiscall sub_5690B0(void *this) { int v1; // esi@1 unsigned int v2; // ecx@3 unsigned int v3; // ebx@2 unsigned int v4; // edi@3 int v5; // ST40_4@3 int (__thiscall *v6)(_DWORD); // eax@3 unsigned int v7; // edi@6 int v8; // ST3C_4@6 int (__thiscall *v9)(_DWORD); // eax@6 int v10; // ST04_4@8 int v11; // eax@8 int v12; // eax@9 unsigned int v13; // eax@11 int v15; // [sp+14h] [bp-18h]@2 char v16; // [sp+1Fh] [bp-Dh]@2 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1156))(v1) == 4 ) { v16 = 0; (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1240))(v1); v15 = *(_WORD *)(v1 + 155550); v3 = (unsigned int)((unsigned int)(*(_DWORD *)(v1 + 3844) * *(_DWORD *)(v1 + 155556)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( dword_14D129E8 > (unsigned int)*(_WORD *)(v1 + 155548) + *(_DWORD *)(v1 + 3832) ) { v2 = (unsigned int)((unsigned int)(*(_DWORD *)(v1 + 3840) * *(_DWORD *)(v1 + 155552)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v4 = ((signed int)((unsigned __int64)((signed int)(v2 * *(_DWORD *)(v1 + 6648)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v2 * *(_DWORD *)(v1 + 6648)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1256))(v1); (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)v1 + 1460))(v1, v4); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256); *(_DWORD *)(v1 + 3832) = dword_14D129E8; if ( v5 != v6(v1) ) v16 = 1; } if ( dword_14D129E8 > (unsigned int)(v15 + *(_DWORD *)(v1 + 3836)) && (v7 = ((signed int)((unsigned __int64)(v15 * *(_DWORD *)(v1 + 6040) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v15 * *(_DWORD *)(v1 + 6040) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31), v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1260))(v1), (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)v1 + 1464))(v1, v3 + v7), v9 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260), *(_DWORD *)(v1 + 3836) = dword_14D129E8, v8 != v9(v1)) || v16 ) { v10 = *(_DWORD *)(v1 + 102); v11 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v1, v11, v10, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); } v12 = *(_DWORD *)(v1 + 161784); if ( v12 == 5 || v12 == 6 ) { v13 = *(_DWORD *)(v1 + 161892); if ( dword_14D129E8 > v13 ) { *(_DWORD *)(v1 + 161892) = v13 + *(_DWORD *)(v1 + 161896); sub_4D1950(v1, 10); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005692F0) -------------------------------------------------------- char __thiscall sub_5692F0(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@3 int v4; // ebx@3 int v5; // eax@3 int v6; // ecx@3 unsigned int v7; // edi@3 int v8; // ST04_4@5 int v9; // eax@5 int v11; // [sp+Ch] [bp-8h]@3 v1 = this; LOBYTE(v2) = (*(int (**)(void))(*(_DWORD *)this + 1156))(); if ( (_BYTE)v2 == 6 ) { LOBYTE(v2) = dword_14D129E8; if ( dword_14D129E8 > *((_DWORD *)v1 + 39089) + (unsigned int)(unsigned __int16)(((signed int)((unsigned __int64)(10 * *((_WORD *)v1 + 78180) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *((_WORD *)v1 + 78180) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) ) { v3 = *(_DWORD *)v1; *((_DWORD *)v1 + 39089) = dword_14D129E8; v4 = (*(int (__thiscall **)(void *))(v3 + 1256))(v1); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1260))(v1); v6 = *((_WORD *)v1 + 78181); v11 = v5; v7 = (unsigned int)((unsigned int)(v6 * *((_DWORD *)v1 + 961)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1460))( v1, (unsigned int)((unsigned int)(v6 * *((_DWORD *)v1 + 960)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1464))(v1, v7); if ( v4 != (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1256))(v1) || (v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1260))(v1), v11 != v2) ) { v8 = *(_DWORD *)((char *)v1 + 102); v9 = sub_427BD0(&unk_13253E80); LOBYTE(v2) = sub_549C70(v1, v9, v8, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); } } } return v2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00569410) -------------------------------------------------------- int __thiscall sub_569410(void *this) { int v1; // esi@1 signed int v2; // edi@1 int v3; // edi@7 unsigned int v4; // eax@7 int v5; // edi@8 unsigned int v6; // ST28_4@8 unsigned int v7; // ecx@8 int v8; // eax@10 int v9; // ST04_4@13 int v10; // eax@13 unsigned int v12; // [sp-4h] [bp-128h]@1 __int16 v13; // [sp+10h] [bp-114h]@11 unsigned int v14; // [sp+114h] [bp-10h]@1 int v15; // [sp+120h] [bp-4h]@1 int v16; // [sp+124h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v12 = (unsigned int)&v16 ^ __security_cookie; v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_DuringRecover"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_DuringRecover"; v2 = -1; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( sub_55C7D0(v1) && dword_14D129E8 > (unsigned int)(*(_DWORD *)(v1 + 3832) + 30) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1156))(v1) == 3 ) { *(_BYTE *)(v1 + 9480) = 0; } else { if ( *(_DWORD *)(v1 + 9644) < 0 ) { v3 = *(_DWORD *)v1; v4 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v1 + 1264))(v1, v12); (*(void (__thiscall **)(int, unsigned int))(v3 + 1460))(v1, v4 / 0xA); *(_DWORD *)(v1 + 3832) = dword_14D129E8; } else { (*(void (__thiscall **)(int, _DWORD, unsigned int))(*(_DWORD *)v1 + 1460))(v1, *(_DWORD *)(v1 + 9644), v12); *(_DWORD *)(v1 + 3832) = dword_14D129E8; } v5 = *(_DWORD *)v1; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1) / 0xAu; (*(void (__thiscall **)(int))(v5 + 1464))(v1); v7 = *(_DWORD *)(v1 + 7964); *(_DWORD *)(v1 + 3836) = dword_14D129E8; if ( v7 >= *(_DWORD *)(v1 + 3840) && *(_DWORD *)(v1 + 7968) >= *(_DWORD *)(v1 + 3844) ) { v8 = *(_DWORD *)(v1 + 122); *(_BYTE *)(v1 + 9480) = 0; if ( v8 ) { v13 = *(_WORD *)(v1 + 4); sub_5070A0(*(void **)(v8 + 68), (int)sub_50B030, (int)&v13); } *(_BYTE *)(v1 + 9492) |= 1u; } v9 = *(_DWORD *)(v1 + 102); v10 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v1, v10, v9, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); v2 = -1; } } --dword_750CB8; v15 = v2; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_DuringRecover"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (00569600) -------------------------------------------------------- int __thiscall sub_569600(void *this, int a2, __int16 a3) { int v3; // esi@1 int v4; // ebx@1 void *v5; // eax@2 char *v6; // eax@3 unsigned int v7; // esi@4 unsigned int v8; // edx@4 unsigned int v9; // ecx@8 int v10; // edx@8 unsigned int v11; // ecx@10 int v12; // edx@10 unsigned int v13; // ecx@13 int v14; // edx@13 int v16; // [sp-10h] [bp-38h]@7 __int16 v17; // [sp-Ch] [bp-34h]@7 __int16 v18; // [sp-8h] [bp-30h]@7 int v19; // [sp-4h] [bp-2Ch]@7 void *v20; // [sp+14h] [bp-14h]@1 int v21; // [sp+18h] [bp-10h]@2 v20 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = 0; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 8))(a2) > 0 ) { while ( 1 ) { v5 = (void *)(**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, v4); v21 = (int)v5; if ( !v5 || (v6 = sub_63FD40(v5)) == 0 || (v7 = *(_DWORD *)v6, (v8 = (unsigned __int8)*(_DWORD *)v6) == 0) || v8 > (unsigned __int8)dword_AA0BC8 ) goto LABEL_19; if ( v8 < (unsigned __int8)dword_AA0BC8 ) break; v9 = ((unsigned int)dword_AA0BC8 >> 8) & 0x1F; v10 = (v7 >> 8) & 0x1F; if ( v10 <= v9 ) { if ( v10 < v9 ) goto LABEL_17; v11 = ((unsigned int)dword_AA0BC8 >> 13) & 0x3F; v12 = (v7 >> 13) & 0x3F; if ( v12 <= v11 ) { if ( v12 < v11 ) { v19 = (int)v6; v18 = v4; v17 = a3; v16 = v21; goto LABEL_18; } v13 = ((unsigned int)dword_AA0BC8 >> 19) & 0x3F; v14 = (v7 >> 19) & 0x3F; if ( v14 <= v13 ) { if ( v14 < v13 ) { v19 = (int)v6; v18 = v4; v17 = a3; v16 = v21; goto LABEL_18; } if ( (v7 & 0xFE000000) < (dword_AA0BC8 & 0xFE000000u) ) { LABEL_17: v19 = (int)v6; v18 = v4; v17 = a3; v16 = v21; goto LABEL_18; } } } } LABEL_19: v3 = a2; ++v4; if ( v4 >= (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 8))(a2) ) goto LABEL_20; } v19 = (int)v6; v18 = v4; v17 = a3; v16 = v21; LABEL_18: sub_567880(v20, v16, v17, v18, v19); goto LABEL_19; } LABEL_20: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; //----- (005697A0) -------------------------------------------------------- char __thiscall sub_5697A0(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@3 int v7; // ecx@4 int v8; // eax@7 int v9; // edi@11 int (__thiscall *v10)(_DWORD); // eax@11 _UNKNOWN *v11; // ST08_4@11 int v12; // eax@11 const void *v13; // eax@16 bool v14; // cf@33 void *v15; // eax@40 int v16; // ST04_4@40 int v17; // eax@40 int v18; // ecx@41 int v19; // eax@47 int v21; // edi@51 const void *v22; // eax@53 int v23; // eax@62 int v24; // ecx@62 int v25; // ecx@63 int v26; // eax@68 int v27; // edx@68 int v28; // edi@70 int v29; // eax@70 int v30; // [sp-4h] [bp-3Ch]@2 int v31; // [sp-4h] [bp-3Ch]@18 char v32; // [sp+10h] [bp-28h]@15 char v33; // [sp+18h] [bp-20h]@40 char v34; // [sp+1Ch] [bp-1Ch]@11 int v35; // [sp+24h] [bp-14h]@1 int v36; // [sp+28h] [bp-10h]@7 int v37; // [sp+34h] [bp-4h]@1 v3 = (int)this; v35 = (int)"ShineObjectClass::ShineMob::so_Routine"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_Routine"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156); v37 = 0; if ( (unsigned __int8)v5(v3) ) { v6 = *(_DWORD *)(v3 + 122); if ( v6 ) { v7 = *(_DWORD *)(v3 + 102); if ( *(_DWORD *)v7 >= *(_DWORD *)(v6 + 24) || *(_DWORD *)(v7 + 4) >= *(_DWORD *)(v6 + 28) ) { sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : Mob", 0); *(_BYTE *)(v3 + 7888) |= 1u; } } sub_552490((void *)v3); v36 = v3; LOBYTE(v37) = 1; sub_567D80((void *)v3, a2, a3); v8 = *(_DWORD *)v3; if ( *(_BYTE *)(v3 + 7888) & 1 ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(v8 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 7); LOBYTE(v37) = 0; sub_564DA0(&v36); v37 = -1; LABEL_72: v30 = (int)"ShineObjectClass::ShineMob::so_Routine"; goto LABEL_73; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v8 + 1156))(v3) != 3 && *(_DWORD *)(v3 + 9536) ) { sub_5C0860(&v34, *(_DWORD *)(v3 + 9536)); v9 = *(_DWORD *)(v3 + 102); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1804); LOBYTE(v37) = 2; v11 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v10(v3) + 4) + 59); v12 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v12, v9, v11, 0, (int)&v34, 0, 65535); LOBYTE(v37) = 1; sub_5C0880(&v34); v4 = -1; } sub_55C7E0((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 996))(v3, 291) ) { if ( !*(_DWORD *)(v3 + 126) || byte_14D129F4 != 1 ) goto LABEL_20; sub_5D44A0((int)&v32, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); LOBYTE(v37) = 3; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 996))(v3, 499) ) { if ( !*(_DWORD *)(v3 + 126) || byte_14D129F4 != 1 ) goto LABEL_20; sub_5D44A0((int)&v32, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); LOBYTE(v37) = 4; } else { if ( *(_BYTE *)(v3 + 9480) ) { if ( *(_BYTE *)(v3 + 9480) == 1 ) { sub_566A30((void *)v3); } else { if ( *(_BYTE *)(v3 + 9480) == 2 ) sub_569410((void *)v3); } } if ( *(_BYTE *)(v3 + 7888) & 4 ) { if ( !*(_DWORD *)(v3 + 126) || byte_14D129F4 != 1 ) goto LABEL_20; sub_5D44A0((int)&v32, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); v14 = *(_DWORD *)(v3 + 150) < 0x10u; v13 = (const void *)(v3 + 130); LOBYTE(v37) = 5; if ( !v14 ) v13 = *(const void **)v13; v31 = (int)&v32; goto LABEL_19; } if ( *(_DWORD *)(v3 + 9496) ) sub_566D50((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { v19 = *(_DWORD *)(v3 + 8168); if ( !v19 ) { LOBYTE(v37) = 0; sub_564DA0(&v36); --dword_750CB8; v37 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_Routine"); return 0; } if ( *(_BYTE *)(v19 + 40) & 1 ) sub_5D1F80((void *)v3); v21 = 2; if ( *(_DWORD *)(v3 + 126) && byte_14D129F4 == 1 ) { sub_5D44A0((int)&v32, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); v14 = *(_DWORD *)(v3 + 150) < 0x10u; v22 = (const void *)(v3 + 130); LOBYTE(v37) = 8; if ( !v14 ) v22 = *(const void **)v22; LuaScriptScenario::lss_Routine(*(_DWORD *)(v3 + 126), v22, (int)&v32); v21 = sub_650560((int)&v32); LOBYTE(v37) = 1; sub_5D4580(&v32); } if ( sub_55C7D0(v3) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3) && (!*(_DWORD *)(v3 + 400) || *(_DWORD *)(v3 + 368) != 3) ) { *(_DWORD *)(v3 + 8224) = v3; *(_WORD *)(v3 + 8220) = a3; if ( v21 == 2 ) { v23 = (***(int (__stdcall ****)(_DWORD))(v3 + 9020))(v3 + 8220); v24 = *(_DWORD *)(v3 + 8844); *(_DWORD *)(v3 + 9020) = v23; (*(void (**)(void))(*(_DWORD *)v24 + 8))(); } v25 = *(_DWORD *)(v3 + 9528); if ( v25 && !(*(int (**)(void))(*(_DWORD *)v25 + 1256))() ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 2568))(v3, 0); if ( *(_DWORD *)(v3 + 9528) != *(_DWORD *)(v3 + 9524) || *(_BYTE *)(v3 + 9532) == 1 ) { v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2564))(v3); v27 = *(_DWORD *)v3; *(_DWORD *)(v3 + 9524) = v26; (*(void (__thiscall **)(int, int, signed int))(v27 + 2560))(v3, v26, 1); *(_BYTE *)(v3 + 9532) = 0; } } if ( sub_58FCB0(v3 + 9540, dword_14D129EC) ) { sub_58FC60(v3 + 9540, 0); v28 = *(_DWORD *)v3; v29 = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 1264))(v3, 1000, 1); (*(void (__thiscall **)(int, int, int))(v28 + 1468))(v3, v3, v29); } LOBYTE(v37) = 0; sub_564DA0(&v36); v37 = -1; goto LABEL_72; } if ( !*(_BYTE *)(v3 + 8208) ) { v15 = off_849C18; *(_WORD *)off_849C18 = 9290; *((_WORD *)v15 + 2) = *(_WORD *)(v3 + 8210); *((_WORD *)v15 + 1) = *(_WORD *)(v3 + 4); sub_4287B0(&v33, &off_849C18, 6); v16 = *(_DWORD *)(v3 + 102); LOBYTE(v37) = 6; v17 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v17, v16, 0, 0, (int)&v33, 1, 65535); *(_BYTE *)(v3 + 8208) = 1; LOBYTE(v37) = 1; sub_428A70(&v33); } v18 = *(_DWORD *)(v3 + 8212); if ( v18 && dword_14D129E8 - v18 >= (unsigned int)(2 * (5 * *(_DWORD *)(v3 + 8216) + 50)) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 8); } if ( !*(_DWORD *)(v3 + 126) || byte_14D129F4 != 1 ) goto LABEL_20; sub_5D44A0((int)&v32, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); LOBYTE(v37) = 7; } } v13 = (const void *)(v3 + 130); if ( *(_DWORD *)(v3 + 150) >= 0x10u ) v13 = *(const void **)v13; v31 = (int)&v32; LABEL_19: LuaScriptScenario::lss_Routine(*(_DWORD *)(v3 + 126), v13, v31); LOBYTE(v37) = 1; sub_5D4580(&v32); LABEL_20: LOBYTE(v37) = 0; sub_564DA0(&v36); v37 = v4; goto LABEL_72; } v37 = -1; v30 = (int)"ShineObjectClass::ShineMob::so_Routine"; LABEL_73: --dword_750CB8; sub_467660((int)&unk_D020420, v30); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D129EC: using guessed type int dword_14D129EC; // 14D129F4: using guessed type char byte_14D129F4; //----- (00569D70) -------------------------------------------------------- char __thiscall sub_569D70(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // eax@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::so_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2480))(v3) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 9); goto LABEL_10; } v4 = *((_DWORD *)v3 + 2053); if ( v4 && dword_14D129E8 > v4 ) { **((_BYTE **)v3 + 957) = 3; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 10); goto LABEL_10; } } sub_5697A0(v3, a2, a3); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) ) *((_DWORD *)v3 + 2419) = (***((int (__stdcall ****)(_DWORD, _DWORD))v3 + 2419))(v3, *((_DWORD *)v3 + 2416)); LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00569EE0) -------------------------------------------------------- char __thiscall sub_569EE0(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@5 int v7; // ecx@6 int v8; // edx@9 int (__thiscall *v9)(_DWORD); // eax@13 int v10; // edi@13 _UNKNOWN *v11; // ST08_4@13 int v12; // eax@13 void *v13; // eax@23 int v14; // ST04_4@23 int v15; // eax@23 unsigned int v16; // ecx@24 bool v17; // cf@28 const void *v18; // eax@28 int v19; // eax@31 int v20; // edi@31 int v21; // eax@35 int v22; // eax@36 int v23; // eax@37 const void *v24; // eax@41 char v26; // [sp+10h] [bp-28h]@28 char v27; // [sp+18h] [bp-20h]@23 char v28; // [sp+1Ch] [bp-1Ch]@13 int v29; // [sp+24h] [bp-14h]@1 int v30; // [sp+28h] [bp-10h]@9 int v31; // [sp+34h] [bp-4h]@1 v3 = (int)this; v29 = (int)"ShineObjectClass::ShinePet::so_Routine"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePet::so_Routine"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156); v31 = 0; if ( (unsigned __int8)v5(v3) != 3 && !sub_419730(v3) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 9); LABEL_50: v31 = v4; goto LABEL_51; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) ) goto LABEL_50; v6 = *(_DWORD *)(v3 + 122); if ( v6 ) { v7 = *(_DWORD *)(v3 + 102); if ( *(_DWORD *)v7 >= *(_DWORD *)(v6 + 24) || *(_DWORD *)(v7 + 4) >= *(_DWORD *)(v6 + 28) ) { sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : Mob", 0); *(_BYTE *)(v3 + 7888) |= 1u; } } v30 = v3; LOBYTE(v31) = 1; sub_567D80((void *)v3, a2, a3); v8 = *(_DWORD *)v3; if ( *(_BYTE *)(v3 + 7888) & 1 ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(v8 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 7); LABEL_49: LOBYTE(v31) = 0; sub_564DA0(&v30); goto LABEL_50; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v8 + 1156))(v3) != 3 && *(_DWORD *)(v3 + 9536) ) { sub_5C0860(&v28, *(_DWORD *)(v3 + 9536)); v9 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1804); v10 = *(_DWORD *)(v3 + 102); LOBYTE(v31) = 2; v11 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v9(v3) + 4) + 59); v12 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v12, v10, v11, 0, (int)&v28, 0, 65535); LOBYTE(v31) = 1; sub_5C0880(&v28); v4 = -1; } sub_55C7E0((void *)v3); if ( *(_BYTE *)(v3 + 9480) ) { if ( *(_BYTE *)(v3 + 9480) == 1 ) { sub_566A30((void *)v3); } else { if ( *(_BYTE *)(v3 + 9480) == 2 ) sub_569410((void *)v3); } } if ( *(_DWORD *)(v3 + 9496) ) sub_566D50((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 3 ) { if ( !*(_BYTE *)(v3 + 8208) ) { v13 = off_849C18; *(_WORD *)off_849C18 = 9290; *((_WORD *)v13 + 2) = *(_WORD *)(v3 + 8210); *((_WORD *)v13 + 1) = *(_WORD *)(v3 + 4); sub_4287B0(&v27, &off_849C18, 6); v14 = *(_DWORD *)(v3 + 102); LOBYTE(v31) = 3; v15 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v15, v14, 0, 0, (int)&v27, 1, 65535); *(_BYTE *)(v3 + 8208) = 1; LOBYTE(v31) = 1; sub_428A70(&v27); } v16 = *(_DWORD *)(v3 + 8212); if ( v16 > 0 && dword_14D129E8 - v16 >= 2 * (5 * *(_DWORD *)(v3 + 8216) + 50) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 8); } if ( *(_DWORD *)(v3 + 126) ) { sub_5D44A0((int)&v26, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); v17 = *(_DWORD *)(v3 + 150) < 0x10u; v18 = (const void *)(v3 + 130); LOBYTE(v31) = 4; if ( !v17 ) v18 = *(const void **)v18; LuaScriptScenario::lss_Routine(*(_DWORD *)(v3 + 126), v18, (int)&v26); LOBYTE(v31) = 1; sub_5D4580(&v26); } goto LABEL_49; } v19 = sub_419730(v3); v20 = v19; if ( v19 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v19 + 1232))(v19) == 2 && (v21 = __RTDynamicCast(v20, 0, &off_85A104, &off_84BF50, 0)) != 0 && (v22 = v21 + 161784) != 0 ) { v23 = *(_DWORD *)v22; if ( v23 == 5 || v23 == 6 ) { v4 = -1; if ( *(_DWORD *)(v3 + 9664) != -1 ) { if ( *(_DWORD *)(v3 + 126) ) { sub_5D44A0((int)&v26, *(_WORD *)(v3 + 4), *(_DWORD *)(v3 + 122)); v17 = *(_DWORD *)(v3 + 150) < 0x10u; v24 = (const void *)(v3 + 130); LOBYTE(v31) = 5; if ( !v17 ) v24 = *(const void **)v24; LuaScriptScenario::lss_Routine(*(_DWORD *)(v3 + 126), v24, (int)&v26); sub_650560((int)&v26); LOBYTE(v31) = 1; sub_5D4580(&v26); } sub_55C7D0(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3) && (*(_DWORD *)(v3 + 400) <= 0u || *(_DWORD *)(v3 + 368) != 3) ) { *(_DWORD *)(v3 + 8224) = v3; *(_WORD *)(v3 + 8220) = a3; } } goto LABEL_49; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 9); } LOBYTE(v31) = 0; sub_564DA0(&v30); v31 = -1; LABEL_51: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePet::so_Routine"); return 1; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); // 14D129E8: using guessed type int dword_14D129E8; //----- (0056A330) -------------------------------------------------------- char __thiscall sub_56A330(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@3 char v5; // bl@4 int v7; // eax@7 int v8; // ecx@8 int v9; // [sp-8h] [bp-28h]@2 int v10; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineBandit::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineBandit::so_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(*(_DWORD *)((char *)v3 + 9918) + 194) == 5 ) { v10 = a3; v9 = a2; LABEL_3: v4 = sub_5697A0(v3, v9, v10); LABEL_4: --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineBandit::so_Routine"); return v5; } if ( *((_BYTE *)v3 + 7888) & 1 ) { v10 = a3; v9 = a2; goto LABEL_3; } v7 = *(_DWORD *)((char *)v3 + 122); if ( v7 ) { v8 = *(_DWORD *)((char *)v3 + 102); if ( *(_DWORD *)v8 < *(_DWORD *)(v7 + 24) ) { if ( *(_DWORD *)(v8 + 4) < *(_DWORD *)(v7 + 28) ) { sub_50BD10(v3); v4 = sub_567D80(v3, a2, a3); goto LABEL_4; } } } sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : Bandit", 0); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *((_WORD *)v3 + 2), 0, 6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineBandit::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056A490) -------------------------------------------------------- char __thiscall sub_56A490(void *this, int a2, int a3) { int v3; // ebx@1 int (__thiscall *v4)(_DWORD); // eax@1 int v5; // edi@1 int v6; // eax@4 int v7; // ecx@5 unsigned int v8; // eax@9 int v9; // esi@12 int v10; // ecx@13 void *v11; // eax@17 int v12; // eax@19 int v14; // eax@28 int v15; // eax@38 int v16; // ecx@39 __int16 v17; // ax@40 int v18; // esi@43 int v19; // eax@43 int v20; // ecx@43 int v21; // eax@45 int v22; // eax@52 int v23; // eax@56 void (__thiscall *v24)(_DWORD); // eax@60 int v25; // esi@72 int (__thiscall *v26)(_DWORD); // eax@72 void *v27; // eax@72 char v28; // al@74 int v29; // eax@75 char v30; // al@80 void (__thiscall *v31)(_DWORD, _DWORD); // edx@81 int v32; // eax@90 char v33; // al@95 int v34; // edi@99 int v35; // ecx@100 unsigned int v36; // eax@102 double v37; // st7@102 double v38; // st6@102 int v39; // ecx@107 int v40; // eax@107 int v41; // eax@108 int v42; // edx@111 int v43; // ecx@119 int v44; // edx@119 int v45; // eax@119 signed int v46; // edi@123 int v47; // eax@125 int v48; // eax@126 int v49; // eax@127 __time32_t v50; // eax@129 int v51; // ecx@131 __time32_t v52; // eax@137 void *v53; // ebx@146 int v54; // [sp+10h] [bp-40h]@72 int v55; // [sp+14h] [bp-3Ch]@72 int v56; // [sp+18h] [bp-38h]@72 int v57; // [sp+20h] [bp-30h]@72 int v58; // [sp+24h] [bp-2Ch]@72 int v59; // [sp+28h] [bp-28h]@72 int v60; // [sp+2Ch] [bp-24h]@59 int v61; // [sp+30h] [bp-20h]@72 int v62; // [sp+34h] [bp-1Ch]@72 int v63; // [sp+3Ch] [bp-14h]@1 int v64; // [sp+40h] [bp-10h]@12 int v65; // [sp+4Ch] [bp-4h]@1 signed int v66; // [sp+58h] [bp+8h]@102 char v67; // [sp+5Bh] [bp+Bh]@122 int v68; // [sp+5Ch] [bp+Ch]@20 v3 = (int)this; v63 = (int)"ShineObjectClass::ShinePlayer::so_Routine"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Routine"; dword_750AB8[dword_750CB8++] = -1; byte_132447D8 = 1; byte_132447D9 = 1; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156); v5 = 0; v65 = 0; if ( !(unsigned __int8)v4(v3) || *(_DWORD *)(v3 + 122) ) { v6 = *(_DWORD *)(v3 + 122); if ( v6 ) { v7 = *(_DWORD *)(v3 + 102); if ( *(_DWORD *)v7 >= *(_DWORD *)(v6 + 24) || *(_DWORD *)(v7 + 4) >= *(_DWORD *)(v6 + 28) ) { sub_639100(&unk_86DDD8, (int)"fm_IsInFieldSize : Player", 0); *(_BYTE *)(v3 + 7888) |= 1u; } } sub_550B20((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 3 ) { v8 = *(_DWORD *)(v3 + 161508); if ( dword_14D129E8 >= v8 ) { if ( v8 ) { sub_451380(v3, 0, -1); v65 = -1; goto LABEL_24; } } } v64 = v3; v9 = a3; LOBYTE(v65) = 1; sub_567D80((void *)v3, a2, a3); if ( *(_BYTE *)(v3 + 161192) ) { if ( (v10 = *(_DWORD *)(v3 + 161188)) != 0 && ((unsigned __int8)(*(int (**)(void))(*(_DWORD *)v10 + 768))() || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v3 + 161188) + 40))()) || *(_DWORD *)(v3 + 161196) < (unsigned int)dword_14D129E8 ) { *(_DWORD *)(v3 + 161188) = 0; *(_BYTE *)(v3 + 161192) = 0; *(_DWORD *)(v3 + 161196) = 0; v11 = off_849C18; *(_DWORD *)off_849C18 = -56237; *((_BYTE *)v11 + 4) = 0; if ( sub_4C81E0(&off_849C18, 5) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::smo_SoulManage : Packet Too Long", 5); } } } (*(void (__thiscall **)(int))(*(_DWORD *)(v3 + 82048) + 36))(v3 + 82048); v68 = (unsigned __int16)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 1188))(v3, a3); if ( *(_BYTE *)(v3 + 7888) & 1 ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1528))(v3, 1664, 0, 0); LABEL_22: LOBYTE(v65) = 0; sub_564DA0(&v64); LABEL_23: v65 = -1; goto LABEL_24; } if ( (*(int (__thiscall **)(int, int))(v3 + 160812))(v3 + 160796, v3) == 1 ) goto LABEL_22; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) ) { sub_575270((void *)(v3 + 82024), v3); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1488))(v3); sub_5CEBE0(v14); } sub_5C98B0(v3 + 156368); if ( *(_WORD *)(v3 + 160760) >= 0 && *(_DWORD *)(v3 + 160768) <= (unsigned int)dword_14D129E8 ) { if ( sub_45CDE0(v3) == 2 ) { if ( !sub_45E4C0(v3, v3, v9, 1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2256))(v3); *(_DWORD *)(v3 + 160788) = 3; } } else { sub_45EB20((void *)v3, 1u); } } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1156))(v3) == 6 && !sub_45CDE0(v3) && (unsigned int)dword_14D129E8 >= *(_DWORD *)(v3 + 160780) ) { v15 = *(_DWORD *)(v3 + 160764); if ( v15 && (v16 = *(_DWORD *)(v15 + 4)) != 0 && (v17 = *(_WORD *)(v3 + 160762), v17 >= 0) ) { if ( !*(_BYTE *)(v3 + 160336) && *(_WORD *)(v16 + 204) > 0u ) { v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v3 + 36484))(v3 + 36484, v17); v18 = *(_DWORD *)(v5 + 112); (*(void (__thiscall **)(_DWORD, int, int, _DWORD))(*(_DWORD *)v18 + 60))( *(_DWORD *)(v5 + 112), v5, -*(_WORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 160764) + 4) + 204), *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 160764) + 4) + 198)); v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 64))(v18, v5); sub_45DDC0((void *)v3, v19); v20 = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 160764) + 4) + 202); *(_DWORD *)(v3 + 160780) = dword_14D129E8 + ((signed int)((unsigned __int64)(v20 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v20 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); } } else { sub_45F070((void *)v3); } } sub_4D2200(v3, v5); v21 = *(_DWORD *)(v3 + 161784); if ( v21 == 5 || v21 == 6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) == 5 && sub_4010C0(v3 + 161900) == 1 ) sub_4D1950(v3, 10); if ( *(_BYTE *)(*(_DWORD *)(v3 + 32650) + 84) != -1 ) { if ( sub_4010C0(v3 + 161908) == 1 ) { v22 = sub_626BC0((int)&unk_13359038, *(_DWORD *)(v3 + 161916)); if ( v22 ) { if ( *(_BYTE *)v22 == *(_BYTE *)(*(_DWORD *)(v3 + 32650) + 84) && *(_BYTE *)(v22 + 113) == 1 ) sub_4D1950(v3, 1); } } } } (*(void (__thiscall **)(int))(v3 + 156352))(v3); (*(void (__thiscall **)(int))(v3 + 82004))(v3); (*(void (__thiscall **)(int))(v3 + 82016))(v3); (*(void (__thiscall **)(int))(v3 + 156364))(v3); v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1180))(v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v23 + 52))(v23, v3); if ( (_BYTE)word_AA0BF0 ) { ++*(_DWORD *)(v3 + 160864); if ( HIBYTE(word_AA0BF0) ) *(_DWORD *)(v3 + 160864) = 0; sub_533300((void *)v3); sub_532F80((void *)v3); sub_5674E0((void *)v3, v3 + 57840, 15); *(_BYTE *)(v3 + 160358) = 0; sub_450600((int)&v60, v3 + 159688, v3); memcpy((void *)(v3 + 160312), &byte_13244DC0, 0x2Cu); LOBYTE(v65) = 2; *(_WORD *)(v3 + 160356) = *((_WORD *)&byte_13244DC0 + 22); sub_43C470(v3 + 159688, (int)&v60); *(_BYTE *)(v3 + 3820) = 1; LOBYTE(v65) = 1; sub_450670((int)&v60); if ( *(_BYTE *)(v3 + 160358) == 1 ) { v24 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 860); *(_BYTE *)(v3 + 160358) = 0; v24(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 872))(v3); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 52))(v3, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 992))(v3); (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v3 + 56))(v3, v3 + 36484, 9); (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v3 + 56))(v3, v3 + 32816, 8); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 4 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 5 ) (*(void (__thiscall **)(_DWORD, int, signed int))(*(_DWORD *)v3 + 56))(v3, v3 + 53776, 12); sub_569600((void *)v3, v3 + 57840, 15); switch ( *(_BYTE *)(v3 + 23848) & 0xF ) { case 1: sub_59CCE0(v3); break; case 2: sub_59F7C0(v3); break; case 3: sub_59CE00(v3); break; } } sub_56B6A0((void *)v3); sub_56B7F0((void *)v3); sub_56B920((void *)v3); sub_56C040((void *)v3); sub_56BC80((void *)v3); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1488))(v3) && sub_4010C0(v3 + 159660) ) { sub_42A830((int)&v54); v25 = 0; v54 = 8; v55 = 0; v56 = 2; v57 = v3; v58 = v3; v59 = v3; v60 = 0; v61 = 0; v62 = 0; v26 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1488); LOBYTE(v65) = 3; v27 = (void *)v26(v3); sub_5CF1E0(v27, (int)&v60, (int)&v54); sub_563480((void *)v3); sub_5632F0((void *)v3); sub_5633C0((void *)v3); LOBYTE(v65) = 1; sub_424190((void **)&v60); } else { v25 = 0; } (*(void (__thiscall **)(int))(v3 + 155568))(v3); v28 = *(_BYTE *)(v3 + 23824); if ( v28 & 0x40 ) { *(_BYTE *)(v3 + 23824) = v28 & 0xBF; v29 = sub_54FA60(v3, *(_WORD *)(v3 + 155450)); if ( v29 != v25 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, signed int, signed int, signed int))(*(_DWORD *)v3 + 1536))( v3, v29, 6, 9, 10) ) { *(_BYTE *)(v3 + 23825) &= 0xFEu; } else { if ( *(_BYTE *)(v3 + 23825) & 1 ) *(_BYTE *)(v3 + 23824) |= 0x40u; } } } v30 = *(_BYTE *)(v3 + 23825); if ( v30 & 2 ) { v31 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1748); *(_BYTE *)(v3 + 23825) = v30 & 0xFD; v31(v3, v3 + 155452); } sub_564500((void *)(v3 + 32654), v3); if ( *(_WORD *)(v3 + 32655) ) { (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v3 + 776))( v3, 9, 52, *(_WORD *)(v3 + 32655)); *(_WORD *)(v3 + 32655) = 0; } if ( *(_DWORD *)(v3 + 161496) <= (unsigned int)dword_14D129E8 ) sub_4551B0(&unk_AA0EC0, v3, 1, 10); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3660))(v3) == 1 && *(_DWORD *)(v3 + 161920) <= (unsigned int)dword_14D129E8 ) { *(_DWORD *)(v3 + 161920) = dword_14D129E8 + 10; sub_562AD0((void *)v3); } } if ( *(_BYTE *)(v3 + 7888) & 4 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2256))(v3); v32 = *(_DWORD *)(v3 + 160808); if ( v32 == 2 || v32 == 3 ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3792))(v3); if ( *(_DWORD *)(v3 + 7644) && *(_WORD *)(v3 + 7648) != 29203 ) { v33 = *(_BYTE *)(v3 + 155428); if ( !(v33 & 2) ) { *(_WORD *)(v3 + 32655) = 4044; *(_BYTE *)(v3 + 155428) = v33 | 2; } (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3788))(v3); } } (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2616))(v3, 0, 0, 0); while ( 1 ) { v34 = *(_DWORD *)(v3 + 161248); if ( v34 == *(_DWORD *)(v3 + 161252) ) break; while ( 1 ) { v35 = *(_DWORD *)(v34 + 4); if ( !v35 ) break; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v35 + 768))() ) break; v66 = (unsigned __int16)(*(int (**)(void))(**(_DWORD **)(v34 + 4) + 2644))(); v36 = 2; v37 = (double)v66; v38 = 1.0; while ( 1 ) { if ( v36 & 1 ) v38 = v38 * v37; v36 >>= 1; if ( !v36 ) break; v37 = v37 * v37; } v39 = *(_DWORD *)(v3 + 122); v40 = *(_DWORD *)(v34 + 4); if ( v39 ) { if ( v40 ) { v42 = *(_DWORD *)(v40 + 122); if ( v42 ) { if ( *(_DWORD *)v39 == *(_DWORD *)v42 && *(_DWORD *)(v39 + 4) == *(_DWORD *)(v42 + 4) && *(_DWORD *)(v39 + 8) == *(_DWORD *)(v42 + 8) ) { if ( **(_DWORD **)(v3 + 118) == **(_DWORD **)(v40 + 118) ) { v43 = *(_DWORD *)(v40 + 102); v44 = *(_DWORD *)(v3 + 102); v45 = *(_DWORD *)(v44 + 4) - *(_DWORD *)(v43 + 4); v41 = (*(_DWORD *)v44 - *(_DWORD *)v43) * (*(_DWORD *)v44 - *(_DWORD *)v43) + v45 * v45; } else { v41 = 999999999; } } else { v41 = 999999999; } } else { v41 = 999999999; } } else { v41 = 999999999; } } else { v41 = 999999999; } if ( (double)(unsigned int)v41 > v38 ) break; v34 += 24; if ( v34 == *(_DWORD *)(v3 + 161252) ) goto LABEL_122; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 2612))(v3, *(_DWORD *)(v34 + 4)); } LABEL_122: sub_4485F0((void *)(v3 + 84388), v3); (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 2616))(v3, 6, 0, 0); v67 = 1; if ( (unsigned int)(*(_DWORD *)(*(_DWORD *)(v3 + 24168) + 4) - 1) > 1 ) { LABEL_140: LOBYTE(v65) = 0; if ( (*(_DWORD *)(v3 + 30) != v3 + 22 || *(_DWORD *)(v3 + 26) != v3 + 22) && !sub_549640((void *)(v3 + 22)) || (*(_DWORD *)(v3 + 42) != v3 + 34 || *(_DWORD *)(v3 + 38) != v3 + 34) && !sub_549640((void *)(v3 + 34)) ) { v53 = *(void **)(v3 + 122); if ( v53 ) sub_462120(v53, (int)"SlantedListNormalizer::~SlantedListNormalizer"); } goto LABEL_23; } v46 = 0; while ( 1 ) { if ( v46 >= 1000 ) goto LABEL_140; v47 = *(_DWORD *)(v3 + 24168); if ( !v47 ) goto LABEL_22; v48 = (*(int (__thiscall **)(int))(*(_DWORD *)(v47 + 224) + 12))(v47 + 224); if ( !v48 ) break; v49 = v48 - 1; if ( !v49 ) { v51 = *(_DWORD *)(v3 + 24168); *(_DWORD *)(v3 + 84448) = dword_14D129E8; (*(void (__stdcall **)(int, int))(*(_DWORD *)v51 + 4))(v3, v68); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v3 + 24168) + 12))() == 1 ) (*(void (__thiscall **)(int))(*(_DWORD *)(*(_DWORD *)(v3 + 24168) + 224) + 36))(*(_DWORD *)(v3 + 24168) + 224); ++dword_86B064; goto LABEL_139; } if ( v49 == 1 ) { *(_DWORD *)(*(_DWORD *)(v3 + 24168) + 4) = 3; v50 = sub_418EA0((__time32_t)byte_13359B60, (int)"Char as abnormal packet "); sub_418F20(v50, (int)&unk_13359E04); LABEL_138: v67 = 0; } LABEL_139: ++v46; if ( !v67 ) goto LABEL_140; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)(*(_DWORD *)(v3 + 24168) + 224) + 40))(*(_DWORD *)(v3 + 24168) + 224) ) sub_5A4330(*(void **)(v3 + 24168)); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 744))(v3) ) { v52 = sub_418EA0((__time32_t)byte_13359B60, (int)"Char as write fail "); sub_418F20(v52, (int)&unk_13359E04); *(_DWORD *)(*(_DWORD *)(v3 + 24168) + 4) = 3; } goto LABEL_138; } (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1528))(v3, 1669, 0, 0); v65 = -1; LABEL_24: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86B064: using guessed type int dword_86B064; // AA0BF0: using guessed type __int16 word_AA0BF0; // 132447D8: using guessed type char byte_132447D8; // 132447D9: using guessed type char byte_132447D9; // 13244DC0: using guessed type char byte_13244DC0; // 14D129E8: using guessed type int dword_14D129E8; //----- (0056AFC0) -------------------------------------------------------- int __thiscall sub_56AFC0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 signed int v5; // esi@1 int v6; // edx@1 int v7; // edi@3 int v9; // esi@12 int v10; // esi@15 int v11; // edx@15 int v12; // ST24_4@16 int v13; // ST18_4@16 int (__thiscall *v14)(_DWORD); // eax@16 void *v15; // eax@16 signed int v16; // eax@19 __int16 v17; // ax@20 unsigned int v18; // esi@19 int v19; // eax@21 int v20; // eax@21 int v21; // eax@24 int v22; // eax@25 int v23; // eax@27 int v24; // edi@32 int v25; // esi@33 int v26; // ebx@35 int v27; // eax@37 int v28; // edx@37 void *v29; // ecx@37 int v30; // ST08_4@37 int v31; // eax@37 int v32; // ebx@37 int v33; // eax@38 void **v34; // ebx@38 int v35; // edx@38 int v36; // [sp-8h] [bp-90h]@4 int v37; // [sp-4h] [bp-8Ch]@2 int v38; // [sp-4h] [bp-8Ch]@4 int v39; // [sp+10h] [bp-78h]@15 int v40; // [sp+14h] [bp-74h]@16 int v41; // [sp+18h] [bp-70h]@16 int v42; // [sp+3Ch] [bp-4Ch]@16 int v43; // [sp+40h] [bp-48h]@16 int v44; // [sp+44h] [bp-44h]@16 int v45; // [sp+4Ch] [bp-3Ch]@37 int v46; // [sp+50h] [bp-38h]@37 int v47; // [sp+54h] [bp-34h]@21 int v48; // [sp+58h] [bp-30h]@21 int v49; // [sp+5Ch] [bp-2Ch]@21 int v50; // [sp+60h] [bp-28h]@21 int v51; // [sp+64h] [bp-24h]@1 int v52; // [sp+68h] [bp-20h]@38 int v53; // [sp+6Ch] [bp-1Ch]@11 void *v54; // [sp+70h] [bp-18h]@1 int v55; // [sp+74h] [bp-14h]@15 void **v56; // [sp+78h] [bp-10h]@12 int v57; // [sp+84h] [bp-4h]@1 v4 = this; v54 = this; v51 = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; sub_4675D0((int)&unk_D020420, (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"); dword_7508B8[dword_750CB8] = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v6 = *((_DWORD *)v4 + 402); v57 = 0; if ( *(_DWORD *)v6 ) { v7 = a2; if ( !a2 ) { v38 = 0; v36 = (int)"AxialListMagicFieldHeal::almfd_ApplyDamage - Skill Index NULL"; LABEL_5: sub_639100(&unk_86DDD8, v36, v38); LABEL_6: v37 = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; goto LABEL_7; } if ( !*(_DWORD *)(a2 + 4) ) { v38 = 0; v36 = (int)"AxialListMagicFieldHeal::almfd_ApplyDamage - Skill Index Acive Data NULL"; goto LABEL_5; } v53 = 0; if ( *((_DWORD *)v4 + 401) <= 0 ) goto LABEL_6; v9 = (int)((char *)v4 + 4); v56 = (void **)((char *)v4 + 4); while ( 1 ) { if ( *(_DWORD *)v9 && (unsigned __int8)(*(int (__stdcall **)(_DWORD))(***((_DWORD ***)v4 + 402) + 3724))(*(_DWORD *)v9) ) { sub_42A950((int)&v39, **((_DWORD **)v4 + 402), *(_DWORD *)v9, v7, a3, *((_DWORD *)v4 + 403)); v10 = v39; v11 = *(_DWORD *)v39; v55 = *(_DWORD *)(v7 + 124); if ( (*(int (__thiscall **)(int))(v11 + 1488))(v39) ) { v42 = 0; v43 = 0; v44 = 0; v12 = v40; v13 = v41; v14 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1488); LOBYTE(v57) = 1; v15 = (void *)v14(v10); if ( sub_5CF200(v15, (int)&v42, v13, 11, v10, v12) == 1 ) v55 = sub_5CDED0((int)&v42, v55); LOBYTE(v57) = 0; sub_424190((void **)&v42); } v16 = sub_50E7F0(dword_13231278, 1); v18 = (unsigned int)((unsigned int)(v55 * v16) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( *(_WORD *)a3 & 0xF ) { v17 = *(_WORD *)a3; v18 += *(_DWORD *)(*(_DWORD *)(v7 + 4) + 4 * (v17 & 0xF) + 443); } v19 = *(_DWORD *)(v40 + 102); v47 = *(_DWORD *)v19; v48 = *(_DWORD *)(v19 + 4); v20 = *(_DWORD *)(v40 + 102); v49 = *(_DWORD *)v20; v50 = *(_DWORD *)(v20 + 4); sub_4BE0E0( (void *)a4, (int)&v49, 10000, (int)&v47, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v49 != v47 || v50 != v48 ) { v57 = -1; v37 = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; goto LABEL_8; } (*(void (__stdcall **)(_DWORD, unsigned int, signed int))(*(_DWORD *)*v56 + 1844))( **((_DWORD **)v4 + 402), v18, 792); if ( *(_BYTE *)(v7 + 456) != 1 ) goto LABEL_27; v21 = sub_4012D0((int)&unk_877138, *(_WORD *)(v7 + 460)); if ( v21 ) { v22 = *(_DWORD *)v21; if ( v22 ) break; } } LABEL_42: v9 = (int)(v56 + 2); ++v53; v56 += 2; if ( v53 >= *((_DWORD *)v4 + 401) ) { v5 = -1; goto LABEL_6; } } (*(void (__stdcall **)(_DWORD, _DWORD, signed int, signed int))(*(_DWORD *)*v56 + 1604))( **((_DWORD **)v4 + 402), *(_DWORD *)(v22 + 34), 1, 1); LABEL_27: v23 = *(_DWORD *)(*(_DWORD *)(v7 + 4) + 188); if ( v23 == 1 || v23 == 2 || v23 == 3 || v23 == 5 || v23 == 6 ) { v24 = v7 + 68; v55 = 4; do { v25 = *(_DWORD *)(v24 - 4); if ( v25 != 792 && (signed int)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) < *(_DWORD *)(v24 + 4) ) { v26 = sub_401310(&unk_877138, v25); if ( v26 ) { if ( !(unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)*v56 + 1588))(v26) ) { v27 = *(_DWORD *)(a4 + 102); v45 = *(_DWORD *)v27; v28 = *(_DWORD *)(v27 + 4); v29 = *v56; v30 = *(_DWORD *)v24; v31 = *((_DWORD *)v54 + 402); v46 = v28; (*(void (__stdcall **)(_DWORD, int, int, int, int, _DWORD, _DWORD, _DWORD, signed int, int *))(*(_DWORD *)v29 + 1592))( *(_DWORD *)v31, v25, v30, v26, dword_14D129E8, 0, 0, 0, 5, &v45); sub_401900(*v56, v25); v32 = *(_DWORD *)(v26 + 36 * *(_DWORD *)v24 + 12); if ( v32 ) { v33 = *(_DWORD *)(v32 + 43); v34 = v56; v35 = *(_DWORD *)*v56; v52 = v33; (*(void (__stdcall **)(int, int, signed int))(v35 + 1008))(v25, v33, 1); sub_4055D0(*v34, v25, v52, *(_DWORD *)v24); } } } v4 = v54; } v24 += 12; --v55; } while ( v55 ); v7 = a2; } goto LABEL_42; } sub_639100(&unk_86DDD8, (int)"AxialListMagicFieldHeal::almfd_ApplyDamage - MagicField Owner NULL", 0); v37 = (int)"AxialListMagicFieldDamage::almfd_ApplyDamage"; LABEL_7: v57 = v5; LABEL_8: --dword_750CB8; return sub_467660((int)&unk_D020420, v37); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13231278: using guessed type int dword_13231278[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0056B3B0) -------------------------------------------------------- void __thiscall sub_56B3B0(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // ebx@4 _UNKNOWN *v4; // ST08_4@4 int v5; // eax@4 int (__stdcall **v6)(int, int, int); // [sp+Ch] [bp-660h]@4 int v7; // [sp+654h] [bp-18h]@4 int v8; // [sp+658h] [bp-14h]@4 unsigned int v9; // [sp+65Ch] [bp-10h]@1 int v10; // [sp+668h] [bp-4h]@4 int v11; // [sp+66Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v1 = this; v2 = this + 396; if ( *(_DWORD *)(this + 396) && !(unsigned __int8)(*(int (__cdecl **)(unsigned int))(**(_DWORD **)v2 + 768))((unsigned int)&v11 ^ __security_cookie) ) { if ( (*(int (**)(void))(**(_DWORD **)v2 + 836))() == *(_DWORD *)(v1 + 400) ) { v3 = *(_DWORD *)(v1 + 102); sub_4C0DA0(&v6); v6 = &off_6E9584; v7 = v2; v8 = v3; v4 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 416) + 4) + 259) >> 1); v10 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v5, v1 + 376, v4, 0, (int)&v6, 1, 65535); sub_56AFC0(&v6, *(_DWORD *)(v1 + 416), v1 + 392, v1); v10 = -1; v6 = &off_6E9584; sub_4C11C0(&v6); } } } // 6E9584: using guessed type int (__stdcall *off_6E9584)(int, int, int); // 86FEB8: using guessed type int __security_cookie; //----- (0056B4E0) -------------------------------------------------------- char __thiscall sub_56B4E0(void *this, int a2, int a3) { int v3; // esi@1 unsigned int v4; // ecx@3 int v5; // eax@4 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_Routine"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMagicField::so_Routine"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 1188))(v3, a3); if ( (unsigned int)dword_14D129E8 < *(_DWORD *)(v3 + 372) ) { v4 = *(_DWORD *)(v3 + 384); if ( dword_14D129E8 > v4 ) { *(_DWORD *)(v3 + 384) = v4 + *(_DWORD *)(v3 + 388); v5 = *(_DWORD *)(v3 + 416); if ( !v5 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_Routine"); return 0; } if ( *(_BYTE *)(v5 + 264) && *(_DWORD *)(v3 + 396) ) { if ( *(_BYTE *)(v3 + 420) == 1 ) { sub_566510(v3); } else { if ( *(_BYTE *)(v3 + 420) == 2 ) sub_56B3B0(v3); } } } } else { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); sub_555DF0(&unk_13253630, *(_WORD *)(v3 + 4), 0, 15); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0056B640) -------------------------------------------------------- int __thiscall sub_56B640(int this) { return *(_DWORD *)(this + 9028); } //----- (0056B650) -------------------------------------------------------- int __thiscall sub_56B650(int this) { return *(_DWORD *)(this + 159668); } //----- (0056B660) -------------------------------------------------------- int __thiscall sub_56B660(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 7940) ) result = (*(int (**)(void))(**(_DWORD **)(this + 7940) + 2088))(); else result = 0; return result; } //----- (0056B680) -------------------------------------------------------- int __thiscall sub_56B680(int this) { int result; // eax@1 *(_DWORD *)(this + 8) = -1; *(_DWORD *)(this + 4) = -1; result = 0; *(_WORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 32) = 0; return result; } //----- (0056B6A0) -------------------------------------------------------- int __thiscall sub_56B6A0(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@1 void *v4; // edi@4 int v5; // eax@6 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendHPinform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SendHPinform"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1628))(v1); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1) - v2; if ( v3 < 0 ) v3 = 0; if ( *((_DWORD *)v1 + 20444) != v3 ) { *((_DWORD *)v1 + 20444) = v3; v4 = off_849C18; *(_WORD *)off_849C18 = 9230; *(_DWORD *)((char *)v4 + 2) = v3; *((_WORD *)v4 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2024))(v1); if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendHPinform : Packet Too Long", 8); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1628))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2692))(v1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendHPinform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056B7F0) -------------------------------------------------------- int __thiscall sub_56B7F0(void *this) { void *v1; // esi@1 void *v2; // edi@2 int v3; // eax@4 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendSPinform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SendSPinform"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 20445) != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260))(v1) ) { *((_DWORD *)v1 + 20445) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260))(v1); v2 = off_849C18; *(_WORD *)off_849C18 = 9231; *(_DWORD *)((char *)v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260))(v1); if ( sub_4C81E0(&off_849C18, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendSPinform : Packet Too Long", 6); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2692))(v1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendSPinform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056B920) -------------------------------------------------------- int __thiscall sub_56B920(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@2 void *v4; // edi@2 int v5; // eax@4 int v6; // ST04_4@5 int v7; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendLPinform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SendLPinform"; dword_750AB8[dword_750CB8++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3464))(v1); if ( sub_55F310((int)v1) != v2 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3464))(v1); sub_55F320((int)v1, v3); v4 = off_849C18; *(_WORD *)off_849C18 = 9311; *(_DWORD *)((char *)v4 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3464))(v1); if ( sub_4C81E0(&off_849C18, 6) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_SendLPinform : Packet Too Long", 6); } v6 = *(_DWORD *)((char *)v1 + 102); v7 = sub_427BD0(&unk_13253E80); sub_549C70(v1, v7, v6, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendLPinform"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056BA80) -------------------------------------------------------- int __thiscall sub_56BA80(void *this) { int v1; // esi@1 int v2; // ebx@1 int v3; // eax@1 void *v4; // edi@1 int v5; // eax@2 int v6; // eax@3 int v7; // edi@4 int v8; // edi@5 int v9; // eax@10 signed int v11; // [sp+14h] [bp-10h]@3 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_partylogout"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_partylogout"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2692))(v1); v4 = off_849C18; if ( v3 ) { *(_WORD *)off_849C18 = -20447; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1388))(v1); *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)v5; *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(v5 + 4); *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(v5 + 8); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(v5 + 12); *(_DWORD *)((char *)v4 + 18) = *(_DWORD *)(v5 + 16); sub_5CAAF0(v1, &off_849C18, 22); } else { *(_WORD *)off_849C18 = 14410; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1388))(v1); *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)v6; *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(v6 + 4); *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(v6 + 8); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(v6 + 12); *(_DWORD *)((char *)v4 + 18) = *(_DWORD *)(v6 + 16); v11 = 0; if ( **(_BYTE **)(v1 + 155356) > 0u ) { do { v7 = *(_DWORD *)(v1 + 155356); if ( *(_DWORD *)(v7 + v2 + 4) != (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 836))(v1) ) { v8 = *(_DWORD *)(v7 + v2 + 36); if ( v8 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 768))(v8) || (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8) != *(_DWORD *)(*(_DWORD *)(v1 + 155356) + v2 + 4) ) { *(_DWORD *)(*(_DWORD *)(v1 + 155356) + v2 + 36) = 0; } else { if ( sub_4C81E0(&off_849C18, 22) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_partylogout : Packet Too Long", 22); } } } } v2 += 36; ++v11; } while ( v11 < **(_BYTE **)(v1 + 155356) ); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_partylogout"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056BC80) -------------------------------------------------------- int __thiscall sub_56BC80(void *this) { int v1; // esi@1 void *v2; // edi@8 int v3; // eax@8 int v4; // eax@8 int v5; // edx@8 int v6; // eax@8 int v7; // edx@8 int v8; // eax@8 int v9; // ST04_4@8 int v10; // eax@9 void *v11; // edi@14 int v12; // eax@14 int v13; // eax@14 char v14; // al@14 int v15; // edx@14 char v16; // al@14 int v17; // edx@14 int v18; // eax@14 int v19; // edx@14 int v20; // eax@14 int v21; // edx@14 int v22; // eax@14 int v23; // ecx@15 int v24; // eax@15 int v25; // ecx@15 int v26; // eax@17 void *v27; // edi@18 int v28; // eax@18 int v29; // eax@18 int v30; // ST04_4@18 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"; dword_750AB8[dword_750CB8++] = -1; if ( ((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2692))(v1) || -1 != (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1360))(v1)) && *(_DWORD *)(v1 + 155356) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1256))(v1) != *(_DWORD *)(v1 + 155360) || (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1260))(v1) != *(_DWORD *)(v1 + 155364) || (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3464))(v1) != *(_DWORD *)(v1 + 155368) ) { v2 = off_849C18; *(_WORD *)off_849C18 = 14386; *((_BYTE *)v2 + 2) = 1; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1388))(v1); *(_DWORD *)((char *)v2 + 3) = *(_DWORD *)v3; *(_DWORD *)((char *)v2 + 7) = *(_DWORD *)(v3 + 4); *(_DWORD *)((char *)v2 + 11) = *(_DWORD *)(v3 + 8); *(_DWORD *)((char *)v2 + 15) = *(_DWORD *)(v3 + 12); *(_DWORD *)((char *)v2 + 19) = *(_DWORD *)(v3 + 16); v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1256))(v1); *(_DWORD *)((char *)v2 + 23) = v4; v5 = *(_DWORD *)v1; *(_DWORD *)(v1 + 155360) = v4; v6 = (*(int (__thiscall **)(int))(v5 + 1260))(v1); *(_DWORD *)((char *)v2 + 27) = v6; v7 = *(_DWORD *)v1; *(_DWORD *)(v1 + 155364) = v6; v8 = (*(int (__thiscall **)(int))(v7 + 3464))(v1); *(_DWORD *)((char *)v2 + 31) = v8; v9 = *(_DWORD *)(v1 + 155356); *(_DWORD *)(v1 + 155368) = v8; sub_4CC280(v1, v9, &off_849C18, 35); sub_5CACC0(v1); } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1180))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 56))(v10) != *(_BYTE *)(v1 + 155372) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1240))(v1) != *(_BYTE *)(v1 + 155373) || *(_DWORD *)(v1 + 155384) != (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3468))(v1) || (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1264))(v1) != *(_DWORD *)(v1 + 155376) || (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1) != *(_DWORD *)(v1 + 155380) ) { v11 = off_849C18; *(_WORD *)off_849C18 = 14387; *((_BYTE *)v11 + 2) = 1; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1388))(v1); *(_DWORD *)((char *)v11 + 3) = *(_DWORD *)v12; *(_DWORD *)((char *)v11 + 7) = *(_DWORD *)(v12 + 4); *(_DWORD *)((char *)v11 + 11) = *(_DWORD *)(v12 + 8); *(_DWORD *)((char *)v11 + 15) = *(_DWORD *)(v12 + 12); *(_DWORD *)((char *)v11 + 19) = *(_DWORD *)(v12 + 16); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1180))(v1); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 56))(v13); *((_BYTE *)v11 + 23) = v14; v15 = *(_DWORD *)v1; *(_BYTE *)(v1 + 155372) = v14; v16 = (*(int (__thiscall **)(int))(v15 + 1240))(v1); *((_BYTE *)v11 + 24) = v16; v17 = *(_DWORD *)v1; *(_BYTE *)(v1 + 155373) = v16; v18 = (*(int (__thiscall **)(int))(v17 + 1264))(v1); *(_DWORD *)((char *)v11 + 25) = v18; v19 = *(_DWORD *)v1; *(_DWORD *)(v1 + 155376) = v18; v20 = (*(int (__thiscall **)(int))(v19 + 1268))(v1); *(_DWORD *)((char *)v11 + 29) = v20; v21 = *(_DWORD *)v1; *(_DWORD *)(v1 + 155380) = v20; v22 = (*(int (__thiscall **)(int))(v21 + 3468))(v1); *(_DWORD *)((char *)v11 + 33) = v22; *(_DWORD *)(v1 + 155384) = v22; *((_BYTE *)v11 + 37) = 1; sub_4CC280(v1, *(_DWORD *)(v1 + 155356), &off_849C18, 38); sub_5CAD90(v1); } v23 = *(_DWORD *)(v1 + 102); v24 = *(_DWORD *)v23; v25 = *(_DWORD *)(v23 + 4) - *(_DWORD *)(v1 + 155392); if ( (v24 - *(_DWORD *)(v1 + 155388)) * (v24 - *(_DWORD *)(v1 + 155388)) + v25 * v25 >= 40000 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2692))(v1) ) { sub_5CAF20(v1); v26 = *(_DWORD *)(v1 + 102); *(_DWORD *)(v1 + 155388) = *(_DWORD *)v26; *(_DWORD *)(v1 + 155392) = *(_DWORD *)(v26 + 4); } else { v27 = off_849C18; *(_WORD *)off_849C18 = 14409; *((_BYTE *)v27 + 2) = 1; v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1388))(v1); *(_DWORD *)((char *)v27 + 3) = *(_DWORD *)v28; *(_DWORD *)((char *)v27 + 7) = *(_DWORD *)(v28 + 4); *(_DWORD *)((char *)v27 + 11) = *(_DWORD *)(v28 + 8); *(_DWORD *)((char *)v27 + 15) = *(_DWORD *)(v28 + 12); *(_DWORD *)((char *)v27 + 19) = *(_DWORD *)(v28 + 16); v29 = *(_DWORD *)(v1 + 102); *(_DWORD *)((char *)v27 + 23) = *(_DWORD *)v29; *(_DWORD *)((char *)v27 + 27) = *(_DWORD *)(v29 + 4); *(_DWORD *)(v1 + 155388) = *(_DWORD *)v29; v30 = *(_DWORD *)(v1 + 155356); *(_DWORD *)(v1 + 155392) = *(_DWORD *)(v29 + 4); sub_4CC280(v1, v30, &off_849C18, 31); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C040) -------------------------------------------------------- int __thiscall sub_56C040(void *this) { void *v1; // esi@1 unsigned __int8 v2; // al@3 signed int v3; // edi@6 int v4; // ebx@8 int v5; // eax@10 int v6; // edi@12 void *v7; // ebx@12 int v9; // [sp-4h] [bp-28h]@5 int v10; // [sp+14h] [bp-10h]@7 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; dword_750AB8[dword_750CB8++] = -1; if ( -1 == (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1360))(v1) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2692))(v1) ) goto LABEL_5; v2 = **((_BYTE **)v1 + 38839); if ( v2 <= 1u ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1360))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1396))(v1, 65535); LABEL_5: v9 = (int)"ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; goto LABEL_20; } v3 = 0; if ( v2 ) { v10 = 0; do { v4 = *((_DWORD *)v1 + 38839); if ( *(_DWORD *)(v10 + v4 + 4) == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) break; v10 += 36; ++v3; } while ( v3 < *(_BYTE *)v4 ); } v5 = *((_DWORD *)v1 + 38839); if ( v3 == *(_BYTE *)v5 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1360))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); } else { v6 = 36 * v3; v7 = *(void **)(v6 + v5 + 36); if ( !v7 || v1 != v7 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); v7 = v1; *(_DWORD *)(v6 + *((_DWORD *)v1 + 38839) + 36) = v1; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 768))(v7) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v6 + *((_DWORD *)v1 + 38839) + 36) = 0; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 836))(v7) != *(_DWORD *)(v6 + *((_DWORD *)v1 + 38839) + 4) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1360))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v6 + *((_DWORD *)v1 + 38839) + 36) = 0; } } v9 = (int)"ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; LABEL_20: --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C250) -------------------------------------------------------- int __thiscall sub_56C250(void *this, int a2) { int v2; // esi@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_partymemberlogin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_partymemberlogin"; dword_750AB8[dword_750CB8++] = -1; sub_4CCB20(v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_partymemberlogin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C2F0) -------------------------------------------------------- int __thiscall sub_56C2F0(void *this) { void *v1; // esi@1 int (__thiscall *v2)(_DWORD); // eax@1 void *v3; // edi@1 int v4; // eax@1 int v5; // eax@1 int v6; // ST08_4@1 int v7; // eax@1 int v9[3]; // [sp+Ch] [bp-1Ch]@1 int v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v1 = this; v10 = (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"; dword_750AB8[dword_750CB8++] = -1; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2072); v11 = 0; *(_DWORD *)(*(_DWORD *)((char *)v1 + 32650) + 190) = v2(v1); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 195) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2136))(v1); v3 = off_849C18; *(_WORD *)off_849C18 = 4206; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(v1); v10 = 8; v9[2] = (int)&off_849C18; *((_DWORD *)v3 + 1) = v4; sub_4287B0(v9, (void *)v9[2], v10); v5 = *(_DWORD *)((char *)v1 + 102); v10 = 65535; v9[2] = 1; v9[1] = (int)v9; v9[0] = 0; v6 = v5; LOBYTE(v11) = 1; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v7, v6, 0, v9[0], v9[1], v9[2], v10); LOBYTE(v11) = 0; sub_428A70(v9); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C420) -------------------------------------------------------- char __thiscall sub_56C420(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 char result; // al@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 38876); if ( v3 && (v4 = *(_DWORD *)(v3 + 4)) != 0 ) { *(_WORD *)a2 = *(_WORD *)v4; *(_DWORD *)(a2 + 2) = -1; *(_DWORD *)(a2 + 6) = -1; *(_WORD *)(a2 + 10) = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C500) -------------------------------------------------------- char __thiscall sub_56C500(void *this, int a2) { void *v2; // ebx@1 int v3; // esi@1 int v4; // ebx@1 char v6; // [sp+Ch] [bp-2Ch]@1 __int16 v7; // [sp+34h] [bp-4h]@1 char v8; // [sp+36h] [bp-2h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)((char *)v2 + 32650); v4 = *((_DWORD *)v2 + 40191); v3 += 37; memcpy(&v6, (const void *)v3, 0x28u); v3 += 40; v7 = *(_WORD *)v3; v8 = *(_BYTE *)(v3 + 2); if ( v4 ) *(_WORD *)(a2 + 43) = **(_WORD **)(v4 + 4); else *(_WORD *)(a2 + 43) = -1; memcpy((void *)a2, &v6, 0x28u); *(_WORD *)(a2 + 40) = v7; *(_BYTE *)(a2 + 42) = v8; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C5B0) -------------------------------------------------------- int __thiscall sub_56C5B0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 3108; *(_DWORD *)((char *)v5 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 840))(v4); if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C6B0) -------------------------------------------------------- int __thiscall sub_56C6B0(void *this) { void *v1; // esi@1 int (__thiscall *v2)(_DWORD); // eax@1 void *v3; // edi@1 int v4; // eax@1 int v5; // eax@1 int v6; // ST08_4@1 int v7; // eax@1 int v9[3]; // [sp+Ch] [bp-1Ch]@1 int v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v1 = this; v10 = (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"; dword_750AB8[dword_750CB8++] = -1; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2140); v11 = 0; *(_DWORD *)(*(_DWORD *)((char *)v1 + 32650) + 190) = v2(v1); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32650) + 195) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2136))(v1); v3 = off_849C18; *(_WORD *)off_849C18 = 4246; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2140))(v1); v10 = 8; v9[2] = (int)&off_849C18; *((_DWORD *)v3 + 1) = v4; sub_4287B0(v9, (void *)v9[2], v10); v5 = *(_DWORD *)((char *)v1 + 102); v10 = 65535; v9[2] = 1; v9[1] = (int)v9; v9[0] = 0; v6 = v5; LOBYTE(v11) = 1; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v7, v6, 0, v9[0], v9[1], v9[2], v10); LOBYTE(v11) = 0; sub_428A70(v9); --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056C7E0) -------------------------------------------------------- signed int __thiscall sub_56C7E0(void *this, int a2, unsigned __int16 a3, int a4) { void *v4; // edi@1 signed int v5; // ebx@1 int v7; // eax@7 char v8; // al@9 int v9; // ecx@9 unsigned int v10; // ebx@11 unsigned int v11; // ebx@13 int v12; // [sp-4h] [bp-24h]@9 unsigned int v13; // [sp+30h] [bp+10h]@3 unsigned int v14; // [sp+30h] [bp+10h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( a4 ) { switch ( a2 ) { case 0: v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1264))(v4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1256))(v4) >= v13 ) break; goto LABEL_4; case 2: case 3: case 5: LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); return 1; case 1: v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1268))(v4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1260))(v4) >= v14 ) break; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); return 1; case 4: v7 = sub_639620(&byte_878354, (unsigned __int8 *)(a4 + 50)); if ( v7 == -1 || (unsigned __int16)(a3 - 1) > 0x26u ) break; v8 = sub_40BE40((char *)v4 + 432, v7, a3); --dword_750CB8; v12 = (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"; v9 = (int)&unk_D020420; if ( !v8 ) goto LABEL_16; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); return 1; case 7: v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1264))(v4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1256))(v4) < v10 || (v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1268))(v4), (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1260))(v4) < v11) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); return 1; } v5 = 1; break; default: break; } } dword_750CB8 -= v5; v9 = (int)&unk_D020420; v12 = (int)"ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"; LABEL_16: sub_467660(v9, v12); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056CA40) -------------------------------------------------------- signed int __stdcall sub_56CA40(int a1) { return 6768; } //----- (0056CA50) -------------------------------------------------------- signed int __stdcall sub_56CA50(int a1) { return 4484; } //----- (0056CA60) -------------------------------------------------------- int __stdcall sub_56CA60(int a1, int a2) { int result; // eax@1 int v3; // esi@6 int v4; // eax@17 char v5; // [sp+4h] [bp-204h]@12 char v6; // [sp+104h] [bp-104h]@4 unsigned int v7; // [sp+204h] [bp-4h]@1 int v8; // [sp+208h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( result ) { result = (*(int (__thiscall **)(int, int))(*(_DWORD *)result + 252))(result, a1 + 2); } else { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v6, "%.255s", "cannot find player ["); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v6, dword_133599D8); } } v3 = *(_DWORD *)(a1 + 4); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fprintf(dword_133599D8, "%d", v3); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v5, "%.255s", "]. ignore 'minihouse portal list' command"); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v5, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v4 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v4); fflush(dword_133599D8); result = fclose(dword_133599D8); dword_133599D8 = 0; } } } } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056CBF0) -------------------------------------------------------- int __stdcall sub_56CBF0(int a1, int a2) { int result; // eax@1 int v3; // esi@6 int v4; // eax@17 char v5; // [sp+4h] [bp-204h]@12 char v6; // [sp+104h] [bp-104h]@4 unsigned int v7; // [sp+204h] [bp-4h]@1 int v8; // [sp+208h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( result ) { result = (*(int (__thiscall **)(int, int))(*(_DWORD *)result + 256))(result, a1 + 2); } else { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v6, "%.255s", "cannot find player ["); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v6, dword_133599D8); } } v3 = *(_DWORD *)(a1 + 4); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fprintf(dword_133599D8, "%d", v3); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v5, "%.255s", "]. ignore 'minihouse portal add' command"); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v5, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v4 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v4); fflush(dword_133599D8); result = fclose(dword_133599D8); dword_133599D8 = 0; } } } } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056CD80) -------------------------------------------------------- int __stdcall sub_56CD80(int a1, int a2) { int result; // eax@1 int v3; // esi@6 int v4; // eax@17 char v5; // [sp+4h] [bp-204h]@12 char v6; // [sp+104h] [bp-104h]@4 unsigned int v7; // [sp+204h] [bp-4h]@1 int v8; // [sp+208h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( !result ) { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v6, "%.255s", "cannot find player ["); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v6, dword_133599D8); } } v3 = *(_DWORD *)(a1 + 4); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fprintf(dword_133599D8, "%d", v3); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v5, "%.255s", "]. ignore 'minihouse portal del' command"); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v5, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v4 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v4); fflush(dword_133599D8); result = fclose(dword_133599D8); dword_133599D8 = 0; } } } } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056CEF0) -------------------------------------------------------- int __stdcall sub_56CEF0(int a1, int a2) { int result; // eax@1 int v3; // esi@6 int v4; // eax@17 char v5; // [sp+4h] [bp-204h]@12 char v6; // [sp+104h] [bp-104h]@4 unsigned int v7; // [sp+204h] [bp-4h]@1 int v8; // [sp+208h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( !result ) { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v6, "%.255s", "cannot find player ["); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v6, dword_133599D8); } } v3 = *(_DWORD *)(a1 + 4); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fprintf(dword_133599D8, "%d", v3); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v5, "%.255s", "]. ignore 'minihouse visitor count' command"); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v5, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v4 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v4); fflush(dword_133599D8); result = fclose(dword_133599D8); dword_133599D8 = 0; } } } } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056D060) -------------------------------------------------------- int __stdcall sub_56D060(int a1, int a2) { int result; // eax@1 int v3; // esi@1 void *v4; // eax@4 int v5; // ecx@4 signed __int16 v6; // cx@6 int v7; // eax@14 int v8; // eax@15 int v9; // eax@16 int v10; // ST08_4@17 __time32_t v11; // eax@17 __time32_t v12; // eax@17 int v13; // esi@23 int v14; // eax@34 char v15; // [sp+8h] [bp-204h]@29 char v16; // [sp+108h] [bp-104h]@21 unsigned int v17; // [sp+208h] [bp-4h]@1 int v18; // [sp+20Ch] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; result = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = result; if ( !result || (result = (*(int (__thiscall **)(int))(*(_DWORD *)result + 836))(result), result != *(_DWORD *)(a1 + 4)) || (result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3), (_BYTE)result) ) { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v16, "%.255s", "cannot find player ["); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v16, dword_133599D8); } } v13 = *(_WORD *)(a1 + 2); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fprintf(dword_133599D8, "%d", v13); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v15, "%.255s", "]. ignore 'minihouse effect' command"); sub_418E40((__time32_t)byte_133598D8); result = (int)dword_133599D8; if ( dword_133599D8 ) result = fputs(&v15, dword_133599D8); } if ( byte_7493ED && byte_13359B5C && dword_133599D8 ) { v14 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v14); fflush(dword_133599D8); result = fclose(dword_133599D8); dword_133599D8 = 0; } } } } else { v4 = off_849C18; *(_WORD *)off_849C18 = -29631; *((_WORD *)v4 + 2) = 5824; *((_WORD *)v4 + 1) = *(_WORD *)(a1 + 10); v5 = *(_WORD *)(a1 + 12); if ( (_WORD)v5 == 5888 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a1 + 8), 0) ) { v10 = *(_WORD *)(a1 + 8); v11 = sub_418EA0( (__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_MINIHOUSE_EFFECT_DEMANDGOOD_ACK : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } result = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 348))(v3, *(_WORD *)(a1 + 10)); } else { switch ( v5 ) { case 5890: v6 = 5841; break; case 5891: v6 = 5842; break; case 5892: v6 = 5843; break; case 5893: v6 = 5844; break; case 5894: v6 = 5845; break; default: v6 = 5840; break; } *((_WORD *)v4 + 2) = v6; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v3, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"GameDBSession::gds_NC_ITEMDB_MINIHOUSE_EFFECT_DEMANDGOOD_ACK : Packet Too Long", 6); } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); result = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056D360) -------------------------------------------------------- void __userpurge sub_56D360(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // esi@6 int v5; // eax@17 __int16 v6; // ax@18 int v7; // edi@18 int v8; // esi@19 __time32_t v9; // eax@19 __time32_t v10; // edi@19 FILE *v11; // eax@21 __time32_t v12; // ecx@23 int v13; // ST24_4@24 __time32_t v14; // ecx@25 void *v15; // edi@29 signed int v16; // edx@29 int v17; // ecx@30 int v18; // eax@30 int v19; // esi@33 int v20; // eax@35 __time32_t v21; // eax@37 __time32_t v22; // eax@38 __time32_t v23; // eax@39 int v24; // [sp-18h] [bp-230h]@27 int v25; // [sp-14h] [bp-22Ch]@25 int v26; // [sp-10h] [bp-228h]@25 int v27; // [sp-Ch] [bp-224h]@23 int v28; // [sp-8h] [bp-220h]@23 int v29; // [sp-4h] [bp-21Ch]@18 int v30; // [sp+Ch] [bp-20Ch]@1 int v31; // [sp+10h] [bp-208h]@18 char v32; // [sp+14h] [bp-204h]@12 char v33; // [sp+114h] [bp-104h]@4 unsigned int v34; // [sp+214h] [bp-4h]@1 int v35; // [sp+218h] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v3 = a1; v30 = a1; if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a1 + 304))() ) { if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v33, "%.255s", "player regnum["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v33, dword_133599D8); } } v4 = *(_DWORD *)(a3 + 2); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v4); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v32, "%.255s", "] : not active mh"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v32, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v5 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v5); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } } return; } v29 = a2; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(v3); v7 = sub_54DE90(&unk_13253630, v6); v31 = v7; if ( !v7 ) { v8 = *(_DWORD *)(a3 + 2); v9 = sub_418EA0((__time32_t)byte_133598D8, (int)"player regnum["); v10 = v9; if ( byte_7493ED ) { if ( *(_BYTE *)(v9 + 644) ) { sub_418E40(v9); v11 = *(FILE **)(v10 + 256); if ( v11 ) fprintf(v11, "%d", v8); } } v28 = (int)&unk_13359E04; v27 = (int)"] : not found mh"; v12 = v10; goto LABEL_39; } v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); if ( v13 != (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 128))(v7) ) { v28 = (int)&unk_13359E04; v27 = (int)"] : not owner"; v26 = *(_DWORD *)(a3 + 2); v25 = (int)"player regnum["; v14 = (__time32_t)byte_133598D8; LABEL_38: v22 = sub_418EA0(v14, v25); v12 = sub_43B910(v22, v26); LABEL_39: v23 = sub_418EA0(v12, v27); sub_418F20(v23, v28); return; } if ( *(_WORD *)(a3 + 6) != 6664 ) { v28 = (int)&unk_13359E04; v27 = (int)"]"; v26 = *(_WORD *)(a3 + 6); v25 = (int)"] : DB error["; v24 = *(_DWORD *)(a3 + 2); LABEL_37: v21 = sub_418EA0((__time32_t)byte_133598D8, (int)"player regnum["); v14 = sub_43B910(v21, v24); goto LABEL_38; } if ( (unsigned int)*(_WORD *)(a3 + 8) > 0x32 ) { v28 = (int)&unk_13359E04; v27 = (int)"]"; v26 = *(_WORD *)(a3 + 8); v25 = (int)"] : portal count error["; v24 = *(_DWORD *)(a3 + 2); goto LABEL_37; } (*(void (__stdcall **)(int, int))(*(_DWORD *)v7 + 260))(a3, v29); v15 = off_849C18; *(_WORD *)off_849C18 = -29621; *((_WORD *)v15 + 1) = *(_WORD *)(a3 + 8); v16 = 0; if ( *(_WORD *)(a3 + 8) > 0u ) { v17 = (int)((char *)v15 + 6); v18 = a3 + 12; do { *(_WORD *)(v17 - 2) = *(_WORD *)(v18 - 2); *(_DWORD *)v17 = *(_DWORD *)v18; ++v16; v18 += 6; v17 += 6; } while ( v16 < *(_WORD *)(a3 + 8) ); v3 = v30; } v19 = 6 * *((_WORD *)v15 + 1) + 4; if ( sub_4C81E0(&off_849C18, 6 * *((_WORD *)v15 + 1) + 4) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v20 + 12))(v20); (*(void (__stdcall **)(int))(*(_DWORD *)v31 + 216))(v3); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_SetMHPortalList : Packet Too Long", v19); (*(void (__cdecl **)(int))(*(_DWORD *)v31 + 216))(v3); } } // 56D360: could not find valid save-restore pair for edi // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056D710) -------------------------------------------------------- void __userpurge sub_56D710(int a1, int a2, int a3) { int v3; // esi@1 int (*v4)(void); // eax@1 int v5; // eax@2 int v6; // esi@6 int v7; // esi@14 int v8; // eax@25 int v9; // eax@26 __time32_t v10; // eax@27 __time32_t v11; // ebx@27 FILE *v12; // eax@29 int v13; // edi@33 __time32_t v14; // eax@33 __time32_t v15; // esi@33 FILE *v16; // eax@35 __time32_t v17; // eax@37 __int16 v18; // ax@38 int v19; // eax@38 int v20; // ebx@40 __time32_t v21; // eax@42 __time32_t v22; // eax@42 __time32_t v23; // eax@42 void *v24; // eax@43 int v25; // eax@45 int v26; // [sp-Ch] [bp-31Ch]@39 int v27; // [sp-8h] [bp-318h]@39 int v28; // [sp-4h] [bp-314h]@39 int v29; // [sp+8h] [bp-308h]@27 int v30; // [sp+8h] [bp-308h]@38 char v31; // [sp+Ch] [bp-304h]@20 char v32; // [sp+10Ch] [bp-204h]@12 char v33; // [sp+20Ch] [bp-104h]@4 unsigned int v34; // [sp+30Ch] [bp-4h]@1 int v35; // [sp+310h] [bp+0h]@1 v34 = (unsigned int)&v35 ^ __security_cookie; v3 = a1; v4 = *(int (**)(void))(*(_DWORD *)a1 + 2004); if ( *(_WORD *)(a3 + 15) == 6672 ) { v9 = ((int (__stdcall *)(int))v4)(a2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v3, *(_WORD *)(a3 + 13), 0) ) { v29 = *(_WORD *)(a3 + 13); v10 = sub_418EA0((__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_AddMHPortal : "); v11 = v10; if ( byte_7493ED ) { if ( *(_BYTE *)(v10 + 644) ) { sub_418E40(v10); v12 = *(FILE **)(v11 + 256); if ( v12 ) fprintf(v12, "%d", v29); } } sub_418F20(v11, (int)&unk_13359E04); } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 304))(v3) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(v3); v19 = sub_54DE90(&unk_13253630, v18); v30 = v19; if ( v19 ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 128))(v19); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == v20 ) { (*(void (__stdcall **)(int))(*(_DWORD *)v30 + 264))(a3); v24 = off_849C18; *(_WORD *)off_849C18 = -29620; *((_WORD *)v24 + 1) = *(_WORD *)(a3 + 6); *((_DWORD *)v24 + 1) = *(_DWORD *)(a3 + 9); if ( sub_4C81E0(&off_849C18, 14) ) { v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v25 + 12))(v25); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_AddMHPortal : Packet Too Long", 14); } return; } v28 = (int)&unk_13359E04; v27 = (int)"] : not owner"; v26 = *(_DWORD *)(a3 + 2); } else { v28 = (int)&unk_13359E04; v27 = (int)"] : not found mh"; v26 = *(_DWORD *)(a3 + 2); } v21 = sub_418EA0((__time32_t)byte_133598D8, (int)"player regnum["); v22 = sub_43B910(v21, v26); v23 = sub_418EA0(v22, v27); sub_418F20(v23, v28); return; } v13 = *(_DWORD *)(a3 + 2); v14 = sub_418EA0((__time32_t)byte_133598D8, (int)"player regnum["); v15 = v14; if ( byte_7493ED ) { if ( *(_BYTE *)(v14 + 644) ) { sub_418E40(v14); v16 = *(FILE **)(v15 + 256); if ( v16 ) fprintf(v16, "%d", v13); } } v17 = sub_418EA0(v15, (int)"] : not active mh"); sub_418F20(v17, (int)&unk_13359E04); } else { v5 = v4(); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *(_WORD *)(a3 + 13)); if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v33, "%.255s", "player regnum["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v33, dword_133599D8); } } v6 = *(_DWORD *)(a3 + 2); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v6); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v32, "%.255s", "] : DB error["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v32, dword_133599D8); } } } v7 = *(_WORD *)(a3 + 15); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v7); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v31, "%.255s", "]"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v31, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v8 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v8); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } } } } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056DB50) -------------------------------------------------------- char *__thiscall sub_56DB50(void *this) { return (char *)this + 24152; } //----- (0056DB60) -------------------------------------------------------- char __thiscall sub_56DB60(int this) { *(_DWORD *)(this + 24152) = -1; *(_WORD *)(this + 24156) = -1; return 1; } //----- (0056DB80) -------------------------------------------------------- bool __thiscall sub_56DB80(int this, __int16 a2) { bool result; // al@2 if ( a2 == -1 ) result = 0; else result = *(_WORD *)(this + 24154) == a2; return result; } //----- (0056DBB0) -------------------------------------------------------- bool __thiscall sub_56DBB0(int this, __int16 a2, char a3) { return a2 != -1 && *(_WORD *)(this + 24154) == a2 && *(_BYTE *)(this + 24156) == a3; } //----- (0056DBF0) -------------------------------------------------------- bool __thiscall sub_56DBF0(int this, char a2) { return *(_BYTE *)(this + 24157) == a2; } //----- (0056DC10) -------------------------------------------------------- __int16 __thiscall sub_56DC10(int this) { return *(_WORD *)(this + 24154); } //----- (0056DC20) -------------------------------------------------------- char __thiscall sub_56DC20(int this) { return *(_BYTE *)(this + 24156); } //----- (0056DC30) -------------------------------------------------------- char __thiscall sub_56DC30(int this) { return *(_BYTE *)(this + 24157); } //----- (0056DC40) -------------------------------------------------------- char __thiscall sub_56DC40(int this, __int16 a2) { *(_WORD *)(this + 24154) = a2; return 1; } //----- (0056DC60) -------------------------------------------------------- char __thiscall sub_56DC60(int this, char a2) { *(_BYTE *)(this + 24156) = a2; return 1; } //----- (0056DC80) -------------------------------------------------------- char __thiscall sub_56DC80(int this, char a2) { *(_BYTE *)(this + 24157) = a2; return 1; } //----- (0056DCA0) -------------------------------------------------------- signed int __cdecl sub_56DCA0() { return 65535; } //----- (0056DCB0) -------------------------------------------------------- int __thiscall sub_56DCB0(int this) { int result; // eax@1 result = *(_WORD *)(this + 1448); *(_WORD *)(this + 1448) = result + 1; return result; } //----- (0056DCD0) -------------------------------------------------------- int __thiscall sub_56DCD0(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int v4; // eax@2 _BYTE *v5; // esi@2 int v6; // eax@17 int result; // eax@18 __int16 v8; // ax@19 int v9; // eax@19 int v10; // eax@20 int v11; // ecx@20 int v12; // ecx@20 int v13; // ST04_4@20 __time32_t v14; // eax@20 __time32_t v15; // eax@20 __time32_t v16; // eax@20 char v17; // [sp+4h] [bp-304h]@12 char v18; // [sp+104h] [bp-204h]@4 char v19; // [sp+204h] [bp-104h]@8 unsigned int v20; // [sp+304h] [bp-4h]@1 int v21; // [sp+308h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 304))() == 0; v3 = *(_DWORD *)v1; if ( v2 ) { v4 = (*(int (__thiscall **)(void *))(v3 + 1744))(v1); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v2 = byte_7493ED == 0; v5 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v5 = *(_DWORD *)(v4 + 2); *((_DWORD *)v5 + 1) = *(_DWORD *)(v4 + 6); *((_DWORD *)v5 + 2) = *(_DWORD *)(v4 + 10); *((_DWORD *)v5 + 3) = *(_DWORD *)(v4 + 14); *((_DWORD *)v5 + 4) = *(_DWORD *)(v4 + 18); v5[20] = 0; if ( !v2 ) { if ( byte_13359B5C ) { sprintf(&v18, "%.255s", "player ["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v18, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v19, "%.255s", v5); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v19, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v17, "%.255s", "] does not in the minihouse"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v17, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v6 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v6); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } } } result = 65535; } else { v8 = (*(int (__thiscall **)(void *))(v3 + 312))(v1); v9 = sub_54DE90(&unk_13253630, v8); if ( v9 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 196))(v9); } else { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1744))(v1); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = (int)&byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)(v10 + 2); *(_DWORD *)(v12 + 4) = *(_DWORD *)(v10 + 6); *(_DWORD *)(v12 + 8) = *(_DWORD *)(v10 + 10); *(_DWORD *)(v12 + 12) = *(_DWORD *)(v10 + 14); v13 = v12; *(_DWORD *)(v12 + 16) = *(_DWORD *)(v10 + 18); *(_BYTE *)(v12 + 20) = 0; v14 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v15 = sub_418EA0(v14, v13); v16 = sub_418EA0(v15, (int)"] does not get the minihouse"); sub_418F20(v16, (int)&unk_13359E04); result = 65535; } } return result; } // 7493ED: using guessed type char byte_7493ED; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056DF60) -------------------------------------------------------- char __thiscall sub_56DF60(void *this, int a2, int a3) { void *v3; // esi@1 bool v4; // zf@1 int v5; // eax@1 int v6; // eax@2 _BYTE *v7; // esi@2 int v8; // eax@17 char result; // al@18 __int16 v10; // ax@19 int v11; // eax@19 int v12; // eax@20 int v13; // ecx@20 int v14; // ecx@20 int v15; // ST04_4@20 __time32_t v16; // eax@20 __time32_t v17; // eax@20 __time32_t v18; // eax@20 char v19; // [sp+8h] [bp-304h]@12 char v20; // [sp+108h] [bp-204h]@4 char v21; // [sp+208h] [bp-104h]@8 unsigned int v22; // [sp+308h] [bp-4h]@1 int v23; // [sp+30Ch] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v3 = this; v4 = (*(int (**)(void))(*(_DWORD *)this + 304))() == 0; v5 = *(_DWORD *)v3; if ( v4 ) { v6 = (*(int (__thiscall **)(void *))(v5 + 1744))(v3); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v4 = byte_7493ED == 0; v7 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v7 = *(_DWORD *)(v6 + 2); *((_DWORD *)v7 + 1) = *(_DWORD *)(v6 + 6); *((_DWORD *)v7 + 2) = *(_DWORD *)(v6 + 10); *((_DWORD *)v7 + 3) = *(_DWORD *)(v6 + 14); *((_DWORD *)v7 + 4) = *(_DWORD *)(v6 + 18); v7[20] = 0; if ( !v4 ) { if ( byte_13359B5C ) { sprintf(&v20, "%.255s", "player ["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v20, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v21, "%.255s", v7); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v21, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v19, "%.255s", "] does not active the minihouse"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v19, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v8 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v8); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } } } result = 0; } else { v10 = (*(int (__thiscall **)(void *))(v5 + 312))(v3); v11 = sub_54DE90(&unk_13253630, v10); if ( v11 ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v11 + 208))(v11, a2, a3); result = 1; } else { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1744))(v3); v13 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v13; v14 = (int)&byte_85A2C0[256 * v13]; *(_DWORD *)v14 = *(_DWORD *)(v12 + 2); *(_DWORD *)(v14 + 4) = *(_DWORD *)(v12 + 6); *(_DWORD *)(v14 + 8) = *(_DWORD *)(v12 + 10); *(_DWORD *)(v14 + 12) = *(_DWORD *)(v12 + 14); v15 = v14; *(_DWORD *)(v14 + 16) = *(_DWORD *)(v12 + 18); *(_BYTE *)(v14 + 20) = 0; v16 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v17 = sub_418EA0(v16, v15); v18 = sub_418EA0(v17, (int)"] does not get the minihouse"); sub_418F20(v18, (int)&unk_13359E04); result = 0; } } return result; } // 7493ED: using guessed type char byte_7493ED; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056E200) -------------------------------------------------------- char __thiscall sub_56E200(void *this) { void *v1; // edi@1 int (__stdcall *v2)(_DWORD); // edx@1 __int16 v3; // ax@1 int v4; // eax@1 int v5; // esi@1 int v6; // ebx@2 int v7; // eax@3 int v8; // edx@3 int v9; // ebx@3 int v10; // eax@4 int v11; // edi@4 int v12; // eax@6 int v13; // esi@6 int v14; // esi@6 bool v15; // zf@6 __time32_t v16; // eax@10 __time32_t v17; // esi@10 int v18; // ebx@17 int v19; // eax@18 int v20; // edi@18 int v21; // eax@20 _BYTE *v22; // esi@20 int v23; // eax@35 void *v25; // eax@40 char v26; // [sp+Ch] [bp-328h]@40 int v27; // [sp+18h] [bp-31Ch]@3 int v28; // [sp+1Ch] [bp-318h]@1 void *v29; // [sp+20h] [bp-314h]@1 char v30; // [sp+24h] [bp-310h]@30 char v31; // [sp+124h] [bp-210h]@12 char v32; // [sp+224h] [bp-110h]@8 unsigned int v33; // [sp+324h] [bp-10h]@1 int v34; // [sp+330h] [bp-4h]@40 int v35; // [sp+334h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v1 = this; v2 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 312); v29 = this; v3 = v2((unsigned int)&v35 ^ __security_cookie); v4 = sub_54DE90(&unk_13253630, v3); v5 = v4; v28 = v4; if ( !v4 ) return 0; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 128))(v4); if ( v6 != (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) { (*(void (__thiscall **)(int, void *))(*(_DWORD *)v5 + 136))(v5, v1); v25 = off_849C18; *(_WORD *)off_849C18 = -29683; *((_WORD *)v25 + 1) = *((_WORD *)v1 + 2); sub_4287B0(&v26, &off_849C18, 4); v34 = 0; sub_549B60(v1, (int)&v26, 0); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 308))(v1, 65535); v34 = -1; sub_428A70(&v26); return 0; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 336))(v5); v8 = *(_DWORD *)v5; v27 = v7; v9 = (unsigned __int8)(*(int (__thiscall **)(int))(v8 + 108))(v5) - 1; if ( v9 > 5 ) { do { v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 104))(v5, v9); v11 = v10; if ( v10 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v10 + 776))(v10, 35, 25, 4481); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, signed int, signed int, signed int))(*(_DWORD *)v11 + 1536))( v11, v27, 6, 9, 10) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1744))(v11); v13 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v13; v14 = (int)&byte_85A2C0[256 * v13]; v15 = byte_7493ED == 0; *(_DWORD *)v14 = *(_DWORD *)(v12 + 2); *(_DWORD *)(v14 + 4) = *(_DWORD *)(v12 + 6); *(_DWORD *)(v14 + 8) = *(_DWORD *)(v12 + 10); *(_DWORD *)(v14 + 12) = *(_DWORD *)(v12 + 14); *(_DWORD *)(v14 + 16) = *(_DWORD *)(v12 + 18); *(_BYTE *)(v14 + 20) = 0; if ( !v15 ) { if ( byte_13359B5C ) { sprintf(&v32, "%.255s", "player ["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v32, dword_133599D8); } } v16 = sub_418EA0((__time32_t)byte_133598D8, v14); v17 = v16; if ( byte_7493ED ) { if ( *(_BYTE *)(v16 + 644) ) { sprintf(&v31, "%.255s", "cannot out minihouse"); sub_418E40(v17); if ( *(_DWORD *)(v17 + 256) ) fputs(&v31, *(FILE **)(v17 + 256)); } } sub_418F20(v17, (int)&unk_13359E04); (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v11 + 1528))(v11, 1669, 0, 0); v5 = v28; } } --v9; } while ( v9 > 5 ); v1 = v29; } v18 = 5 - (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 112))(v5); if ( v18 < 5 ) { do { v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 104))(v5, v18); v20 = v19; if ( v19 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v19 + 776))(v19, 35, 25, 4481); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, signed int, signed int, signed int))(*(_DWORD *)v20 + 1536))( v20, v27, 6, 9, 10) ) { v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 1744))(v20); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v15 = byte_7493ED == 0; v22 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v22 = *(_DWORD *)(v21 + 2); *((_DWORD *)v22 + 1) = *(_DWORD *)(v21 + 6); *((_DWORD *)v22 + 2) = *(_DWORD *)(v21 + 10); *((_DWORD *)v22 + 3) = *(_DWORD *)(v21 + 14); *((_DWORD *)v22 + 4) = *(_DWORD *)(v21 + 18); v22[20] = 0; if ( !v15 ) { if ( byte_13359B5C ) { sprintf(&v31, "%.255s", "player ["); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v31, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v32, "%.255s", v22); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v32, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v30, "%.255s", "cannot out minihouse"); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v30, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v23 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v23); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } } } (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v20 + 1528))(v20, 1669, 0, 0); v5 = v28; } } ++v18; } while ( v18 < 5 ); v1 = v29; } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 308))(v1, 65535); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 92))(v5); return 1; } // 7493ED: using guessed type char byte_7493ED; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (0056E6F0) -------------------------------------------------------- bool __thiscall sub_56E6F0(int this) { return *(_WORD *)(this + 23886) != -1; } //----- (0056E710) -------------------------------------------------------- __int16 __thiscall sub_56E710(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 23886) = a2; return result; } //----- (0056E730) -------------------------------------------------------- __int16 __thiscall sub_56E730(int this) { return *(_WORD *)(this + 23886); } //----- (0056E740) -------------------------------------------------------- signed int __thiscall sub_56E740(void *this, int a2, int a3) { int v3; // ebx@1 void *v4; // edi@1 signed int result; // eax@4 __int16 v6; // ax@7 int v7; // eax@7 int v8; // esi@7 int v9; // eax@11 int v10; // [sp+14h] [bp+Ch]@9 v3 = a3; v4 = this; if ( *(_DWORD *)a3 ) *(_DWORD *)a3 = 0; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 304))() ) { if ( *(_DWORD *)((char *)v4 + 122) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 312))(v4); v7 = sub_54DE90(&unk_13253630, v6); v8 = v7; if ( v7 ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 128))(v7); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4) == v10 ) { v9 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 76))(v8, a2); *(_DWORD *)v3 = v9; result = v9 != 0 ? 4481 : 4513; } else { result = 4488; } } else { result = 4487; } } else { result = 4499; } } else { result = 4484; } return result; } //----- (0056E800) -------------------------------------------------------- int __thiscall sub_56E800(void *this) { __int16 v1; // ax@1 v1 = (*(int (**)(void))(*(_DWORD *)this + 312))(); return sub_54DE90(&unk_13253630, v1); } //----- (0056E820) -------------------------------------------------------- int __thiscall sub_56E820(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@2 v2 = this; v3 = *(_DWORD *)(this + 24160); if ( v3 ) { (**(void (__stdcall ***)(_DWORD))v3)(1); result = a2; *(_DWORD *)(v2 + 24160) = 0; *(_DWORD *)(v2 + 24160) = a2; } else { *(_DWORD *)(v2 + 24160) = a2; } return result; } //----- (0056E860) -------------------------------------------------------- int __thiscall sub_56E860(int this) { return *(_DWORD *)(this + 24160); } //----- (0056E870) -------------------------------------------------------- char __thiscall sub_56E870(void *this) { void *v1; // edi@1 int v2; // esi@1 int (*v3)(void); // edx@2 char result; // al@6 v1 = this; v2 = *((_DWORD *)this + 6040); if ( v2 ) { v3 = *(int (**)(void))(*(_DWORD *)this + 1156); *((_DWORD *)this + 6040) = 0; if ( (unsigned __int8)v3() ) (*(void (__thiscall **)(int, void *))(*(_DWORD *)v2 + 4))(v2, v1); if ( v2 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v2)(v2, 1); result = 1; } else { result = 0; } return result; } //----- (0056E8C0) -------------------------------------------------------- int __thiscall sub_56E8C0(void *this) { void *v1; // esi@1 int result; // eax@1 void *v3; // eax@2 int v4; // ST04_4@2 int v5; // eax@2 char v6; // [sp+8h] [bp-18h]@2 int v7; // [sp+1Ch] [bp-4h]@2 v1 = this; result = 65535; if ( *((_WORD *)this + 80818) != -1 ) { *((_WORD *)this + 80818) = -1; *((_DWORD *)this + 40199) = 0; *((_DWORD *)this + 40200) = sub_5131E0; *((_DWORD *)this + 40203) = sub_452C70; *((_DWORD *)this + 40202) = 0; (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)this + 772))(8, 72); strncpy((char *)(*(_DWORD *)((char *)v1 + 32650) + 198), byte_6A492E, 0x20u); v3 = off_849C18; *(_WORD *)off_849C18 = 8309; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); strncpy((char *)v3 + 4, (const char *)(*(_DWORD *)((char *)v1 + 32650) + 198), 0x20u); sub_4287B0(&v6, &off_849C18, 36); v4 = *(_DWORD *)((char *)v1 + 102); v7 = 0; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v5, v4, 0, 0, (int)&v6, 1, 65535); v7 = -1; result = sub_428A70(&v6); } return result; } //----- (0056E9E0) -------------------------------------------------------- int __stdcall sub_56E9E0(int a1) { int result; // eax@1 result = a1; *(_DWORD *)a1 = -1; return result; } //----- (0056E9F0) -------------------------------------------------------- char __thiscall sub_56E9F0(int this, int a2) { char result; // al@2 int v3; // eax@3 if ( *(_DWORD *)a2 < -1 || (v3 = *(_DWORD *)a2 + 1, *(_DWORD *)a2 = v3, v3 >= *(_DWORD *)(this + 112)) ) { *(_DWORD *)a2 = -10; result = 0; } else { result = 1; } return result; } //----- (0056EA20) -------------------------------------------------------- int __thiscall sub_56EA20(int this, int a2) { return *(_DWORD *)(*(_DWORD *)(this + 108) + 8 * *(_DWORD *)a2 + 4); } //----- (0056EA40) -------------------------------------------------------- __int16 __thiscall sub_56EA40(int this, int a2) { return *(_WORD *)(*(_DWORD *)(this + 108) + 8 * *(_DWORD *)a2); } //----- (0056EA60) -------------------------------------------------------- __int16 __thiscall sub_56EA60(int this, __int16 a2, const void *a3) { int v3; // eax@1 int v4; // edx@1 int v5; // ecx@1 v3 = this; v4 = (*(_DWORD *)(this + 17408) + 1) & *(_DWORD *)(this + 17412); v5 = 136 * ((*(_DWORD *)(this + 17408) + 1) & *(_DWORD *)(this + 17412)); *(_DWORD *)(v3 + 17408) = v4; *(_WORD *)(v5 + v3) = a2; memcpy((void *)(136 * *(_DWORD *)(v3 + 17408) + v3 + 2), a3, 0x85u); return *(_WORD *)(v3 + 17408); } //----- (0056EAC0) -------------------------------------------------------- int __stdcall sub_56EAC0(int a1, int a2) { int v2; // esi@1 int v3; // edi@4 void *v4; // eax@5 int v5; // eax@7 int v6; // eax@8 int v7; // eax@9 int v8; // ST04_4@10 __time32_t v9; // eax@10 __time32_t v10; // eax@10 __int16 v11; // cx@11 void *v12; // eax@12 int v13; // eax@14 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_FURNITURE_ENDURE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_FURNITURE_ENDURE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = a1 + 8; if ( *(_WORD *)(a1 + 24) == 1792 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v7 + 28))( v7, v2, *(_WORD *)v3, 0) ) { v8 = *(_WORD *)v3; v9 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_FURNITURE_ENDURE_ACK : "); v10 = sub_43B910(v9, v8); sub_418F20(v10, (int)&unk_13359E04); } v11 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 320))(v2, v3); if ( v11 != 6768 ) { v12 = off_849C18; *(_WORD *)off_849C18 = 12340; *((_WORD *)v12 + 3) = v11; if ( sub_4C81E0(&off_849C18, 8) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8); } } } else { v4 = off_849C18; *(_WORD *)off_849C18 = 12340; *((_WORD *)v4 + 3) = *(_WORD *)(a1 + 24); if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8); } v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 40))(v6, *(_WORD *)v3); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_FURNITURE_ENDURE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0056ECE0) -------------------------------------------------------- signed int __thiscall sub_56ECE0(void *this, int a2) { void *v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@1 __int16 v5; // ax@3 int v6; // eax@3 int v7; // eax@4 int v8; // edi@4 int v9; // esi@6 __int16 v10; // bx@9 signed int v11; // eax@9 int v12; // eax@16 int v13; // ebx@16 int v14; // eax@17 unsigned int *v15; // eax@18 void *v16; // eax@19 void *v17; // esi@20 int v18; // eax@21 void *v19; // eax@23 char v20; // [sp+10h] [bp-28h]@23 int v21; // [sp+1Ch] [bp-1Ch]@1 int v22; // [sp+20h] [bp-18h]@18 void *v23; // [sp+24h] [bp-14h]@1 int v24; // [sp+28h] [bp-10h]@9 int v25; // [sp+34h] [bp-4h]@1 v2 = this; v23 = this; v21 = (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 304); v25 = 0; if ( !(unsigned __int8)v3(v2) || (v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 312))(v2), (v6 = sub_54DE90(&unk_13253630, v5)) == 0) ) { --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"); return 6774; } v7 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 84))(v6, *(_WORD *)(a2 + 2)); v8 = v7; if ( !v7 ) { --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"); return 6773; } v9 = *(_DWORD *)(v7 + 112); if ( !v9 || !(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 148))(v9, v7, a2 + 12) ) { v25 = -1; LABEL_26: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"); return 6771; } v10 = *(_WORD *)(v8 + 8); sub_5CF620(&v24); LOBYTE(v25) = 1; v11 = -1; while ( v11 >= -1 ) { ++v11; v24 = v11; if ( v11 >= dword_AA0898 ) break; if ( *((_WORD *)dword_AA0894 + 4 * v11) == v10 ) goto LABEL_15; } v24 = -10; LABEL_15: if ( sub_417060(&v24) == *(_DWORD *)(dword_AA07F4 + 40) || (v12 = sub_5132E0((int)&dword_AA07C0, (int)&v24), (v13 = v12) == 0) || (v14 = *(_DWORD *)(v12 + 4)) == 0 || (sub_541670((int)&dword_D73D100, *(_WORD *)(v14 + 143)), (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 140))(v9), v15 = (unsigned int *)(*(int (__thiscall **)(int, int, int *))(*(_DWORD *)v9 + 140))(v9, v8 + 8, &v22), !sub_4A0510((int)&dword_D73D100, *(_WORD *)(*(_DWORD *)(v13 + 4) + 143), v15, v8 + 8)) ) { LOBYTE(v25) = 0; nullsub_2(&v24); v25 = -1; goto LABEL_26; } (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v9 + 152))(v9, v8, v22); v16 = off_849C18; *(_WORD *)off_849C18 = 12340; *((_WORD *)v16 + 3) = 6768; *(_DWORD *)((char *)v16 + 2) = *(_DWORD *)(a2 + 12); if ( sub_4C81E0(&off_849C18, 8) ) { v17 = v23; v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v23 + 760))(v23); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v18 + 12))(v18, v17, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate : Packet Too Long", 8); v17 = v23; } if ( *(_BYTE *)(v8 + 10) & 1 ) { v19 = off_849C18; *(_WORD *)off_849C18 = -29599; *((_BYTE *)v19 + 2) = 1; *((_BYTE *)v19 + 6) = 1; *((_BYTE *)v19 + 5) = v22; *(_WORD *)((char *)v19 + 3) = *(_WORD *)(a2 + 2); sub_4287B0(&v20, &off_849C18, 7); LOBYTE(v25) = 2; sub_549B60(v17, (int)&v20, 1); LOBYTE(v25) = 1; sub_428A70(&v20); } LOBYTE(v25) = 0; nullsub_2(&v24); --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate"); return 6768; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA07C0: using guessed type int dword_AA07C0; // AA07F4: using guessed type int dword_AA07F4; // AA0898: using guessed type int dword_AA0898; // D73D100: using guessed type int dword_D73D100; //----- (0056F040) -------------------------------------------------------- int __thiscall sub_56F040(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@5 __int16 v7; // cx@14 void *v8; // eax@15 int v9; // eax@16 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 12340; if ( !(dword_1325448C & 1) ) { dword_1325448C |= 1u; word_13254488 = 6; atexit(nullsub_132); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13254488) ) goto LABEL_25; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v6 = 6774; LABEL_18: *((_WORD *)v5 + 3) = v6; if ( !sub_4C81E0(&off_849C18, 8) ) goto LABEL_19; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_21; } if ( *((_BYTE *)v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) goto LABEL_25; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 6770; goto LABEL_18; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v6 = 6772; goto LABEL_18; } if ( *((_WORD *)v4 + 42864) & 0xC || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2532))(v4) ) { LABEL_25: v6 = 6769; goto LABEL_18; } v7 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 316))(v4, a2 + 2); if ( v7 != 6768 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 12340; *((_WORD *)v8 + 3) = v7; if ( !sub_4C81E0(&off_849C18, 8) ) { LABEL_19: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8); goto LABEL_22; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_21: (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); } LABEL_22: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254488: using guessed type __int16 word_13254488; // 1325448C: using guessed type int dword_1325448C; //----- (0056F250) -------------------------------------------------------- signed int __thiscall sub_56F250(void *this, unsigned __int8 *a2) { void *v2; // edi@1 __int16 v3; // ax@1 int v4; // eax@1 signed int result; // eax@2 int v6; // esi@3 int v7; // eax@10 int v8; // ebx@10 unsigned __int16 *v9; // esi@10 int v10; // eax@10 int v11; // eax@13 int v12; // eax@16 __int16 v13; // bx@19 void *v14; // edi@19 int v15; // eax@23 int v16; // eax@26 int v17; // ebx@26 int v18; // esi@28 int v19; // edi@28 __int16 v20; // di@30 int v21; // eax@34 int v22; // eax@35 int v23; // eax@36 int v24; // eax@38 int v25; // [sp+Ch] [bp-9Ch]@1 int v26; // [sp+10h] [bp-98h]@1 int v27; // [sp+18h] [bp-90h]@5 int v28; // [sp+18h] [bp-90h]@26 int v29; // [sp+1Ch] [bp-8Ch]@5 unsigned __int16 **v30; // [sp+1Ch] [bp-8Ch]@10 int v31; // [sp+20h] [bp-88h]@30 int v32; // [sp+24h] [bp-84h]@18 char v33; // [sp+28h] [bp-80h]@28 char v34; // [sp+30h] [bp-78h]@38 __int16 v35; // [sp+94h] [bp-14h]@28 char v36; // [sp+96h] [bp-12h]@28 unsigned int v37; // [sp+98h] [bp-10h]@1 int v38; // [sp+A4h] [bp-4h]@18 int v39; // [sp+A8h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v2 = this; v26 = (int)this; v3 = (*(int (__stdcall **)(unsigned int))(*(_DWORD *)this + 312))((unsigned int)&v39 ^ __security_cookie); v4 = sub_54DE90(&unk_13253630, v3); v25 = v4; if ( !v4 ) return 6774; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 128))(v4); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2) != v6 ) return 6781; v27 = *a2; v29 = *a2; if ( v29 >= (*(int (__thiscall **)(char *))(*((_DWORD *)v2 + 9121) + 8))((char *)v2 + 36484) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : wrong slot", v27); return 6771; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int, _DWORD))(*((_DWORD *)v2 + 14672) + 4))( (char *)v2 + 58688, 9, v29, *((_WORD *)v2 + 80389)) ) return 6772; v7 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9121))( (char *)v2 + 36484, *a2); v8 = v7; v9 = (unsigned __int16 *)(v7 + 8); v10 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v7 + 8)); v30 = (unsigned __int16 **)v10; if ( !v10 ) return 6771; if ( *(_DWORD *)(*(_DWORD *)v10 + 374) != 2 ) return 6776; *((_WORD *)v2 + 80431) = *v9; v11 = sub_418CB0((int)&dword_14D20890, *v9); if ( !v11 || !*(_DWORD *)v11 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Try to use empty endure kit cell", 0); return 6773; } v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(v8 + 112) + 28))(v8 + 8); if ( v12 <= 0 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Try to use lot 0 item", v12 > 0); return 6773; } sub_5CF620(&v32); v38 = 0; v32 = -1; if ( !sub_56E9F0((int)&dword_AA0A90, (int)&v32) ) goto LABEL_24; v13 = *((_WORD *)v2 + 80431); v14 = dword_AA0AFC; while ( *((_WORD *)v14 + 4 * v32) != v13 ) { if ( !sub_56E9F0((int)&dword_AA0A90, (int)&v32) ) goto LABEL_24; } v15 = *((_DWORD *)v14 + 2 * v32 + 1); if ( !v15 || *(_DWORD *)(v15 + 36) != 27 ) { LABEL_24: v38 = -1; nullsub_2(&v32); return 6771; } v28 = *(_WORD *)(v15 + 40); v16 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v25 + 84))(*(_WORD *)(a2 + 1)); v17 = v16; if ( !v16 ) { v38 = -1; LABEL_40: nullsub_2(&v32); return 6777; } memcpy(&v33, (const void *)v16, 0x6Cu); v35 = *(_WORD *)(v16 + 108); v36 = *(_BYTE *)(v16 + 110); v18 = *(_DWORD *)(v16 + 112); v19 = v16 + 8; if ( !*(_BYTE *)(*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v18 + 140))(*(_DWORD *)(v16 + 112), v16 + 8) ) { v38 = -1; nullsub_2(&v32); return 6779; } v20 = *(_WORD *)v19; sub_5CF620(&v31); LOBYTE(v38) = 1; v31 = -1; if ( sub_5132B0((int)&dword_AA07C0, (int)&v31) ) { while ( *((_WORD *)dword_AA0894 + 4 * v31) != v20 && sub_5132B0((int)&dword_AA07C0, (int)&v31) ) ; } if ( sub_417060(&v31) == *(_DWORD *)(dword_AA07F4 + 40) || (v21 = sub_5132E0((int)&dword_AA07C0, (int)&v31)) == 0 || (v22 = *(_DWORD *)(v21 + 4)) == 0 ) { LOBYTE(v38) = 0; nullsub_2(&v31); v38 = -1; goto LABEL_40; } v23 = *(_WORD *)(sub_541670((int)&dword_D73D100, *(_WORD *)(v22 + 143)) + 2); if ( (_WORD)v23 ) { (*(void (__thiscall **)(int, char *, int, int, _UNKNOWN *))(*(_DWORD *)v18 + 144))(v18, &v33, v28, v23, &unk_AA0BCC); sub_594630((int)&off_86AD20, (int)(a2 + 1)); sub_594650((int)&off_86AD20, v17); v24 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v18 + 140))(v18, &v34); sub_594670((int)&off_86AD20, v24); sub_598710(&off_86AD20, v26, v26 + 36484, v30, *a2); LOBYTE(v38) = 0; nullsub_2(&v31); v38 = -1; nullsub_2(&v32); result = 6768; } else { LOBYTE(v38) = 0; nullsub_2(&v31); v38 = -1; nullsub_2(&v32); result = 6778; } return result; } // 86AD20: using guessed type int (__thiscall **off_86AD20)(void *, char); // 86FEB8: using guessed type int __security_cookie; // AA07C0: using guessed type int dword_AA07C0; // AA07F4: using guessed type int dword_AA07F4; // AA0A90: using guessed type int dword_AA0A90; // D73D100: using guessed type int dword_D73D100; // 14D20890: using guessed type int dword_14D20890; //----- (0056F6F0) -------------------------------------------------------- int __thiscall sub_56F6F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char *v5; // edi@1 int v6; // eax@10 int v7; // ebx@10 int v8; // eax@12 int v9; // eax@22 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = -29681; if ( !(dword_13254494 & 1) ) { dword_13254494 |= 1u; word_13254490 = 6; atexit(nullsub_134); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13254490 && !(*((_BYTE *)v4 + 7888) & 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3864))(v4) ) { if ( !*(_DWORD *)((char *)v4 + 122) ) { *(_DWORD *)v5 = 4499; goto LABEL_20; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 304))(v4) ) { *(_DWORD *)v5 = 4485; goto LABEL_20; } v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v7 = v6; if ( !v6 ) { *(_DWORD *)v5 = 4487; if ( sub_4C81E0(&off_849C18, 9) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_13: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); goto LABEL_23; } LABEL_18: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ : Packet Too Long", 9); goto LABEL_23; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 144))(v6, v4) ) { *(_DWORD *)v5 = 4481; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 156))(v7, v5); if ( !sub_4C81E0(&off_849C18, 9) ) goto LABEL_18; } else { *(_DWORD *)v5 = 4485; if ( !sub_4C81E0(&off_849C18, 9) ) goto LABEL_18; } v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_13; } *(_DWORD *)v5 = 4482; LABEL_20: if ( sub_4C81E0(&off_849C18, 9) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ : Packet Too Long", 9); } LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254490: using guessed type __int16 word_13254490; // 13254494: using guessed type int dword_13254494; //----- (0056F950) -------------------------------------------------------- int __thiscall sub_56F950(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edx@6 int v6; // ecx@6 char v7; // al@8 int v8; // eax@10 int v9; // edi@10 int v10; // ecx@10 int v11; // eax@12 int v12; // eax@15 bool v13; // cf@15 bool v14; // zf@15 int v15; // eax@24 int v16; // eax@26 int v17; // ST04_4@26 __time32_t v18; // eax@26 __time32_t v19; // eax@26 __time32_t v20; // eax@26 signed int v22; // [sp-4h] [bp-24h]@7 signed int v23; // [sp-4h] [bp-24h]@11 int v24; // [sp-4h] [bp-24h]@14 int v25; // [sp+0h] [bp-20h]@0 int v26; // [sp+28h] [bp+8h]@22 int v27; // [sp+28h] [bp+8h]@24 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1325449C & 1) ) { dword_1325449C |= 1u; word_13254498 = 6; atexit(nullsub_135); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13254498) || *(_BYTE *)(v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) ) { v5 = *(_DWORD *)v4; v22 = 4482; v6 = v4; goto LABEL_28; } v5 = *(_DWORD *)v4; v6 = v4; if ( !*(_DWORD *)(v4 + 122) ) { v22 = 4499; LABEL_28: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(v6, 35, 17, v22); v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; goto LABEL_29; } v7 = (*(int (__thiscall **)(int))(v5 + 304))(v4); v5 = *(_DWORD *)v4; v6 = v4; if ( v7 ) { v22 = 4485; goto LABEL_28; } (*(void (__thiscall **)(int))(v5 + 2256))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2632))(v4); v8 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v9 = v8; v10 = v4; if ( !v8 ) { v23 = 4487; LABEL_12: v11 = *(_DWORD *)v4; LABEL_13: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v11 + 776))(v10, 35, 17, v23); LABEL_14: v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; goto LABEL_29; } v12 = sub_402710(v4, v8); v13 = (unsigned int)v12 < 0x2710; v14 = v12 == 10000; v11 = *(_DWORD *)v4; v10 = v4; if ( !(v13 | v14) ) { v23 = 4512; goto LABEL_13; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(v11 + 996))(v4, 288) && !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 152))(v9, a2 + 4) ) { v23 = 4507; v10 = v4; goto LABEL_12; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 144))(v9, v4) ) { v23 = 4485; v10 = v4; goto LABEL_12; } v26 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 124))(v9, v4); (*(void (__thiscall **)(int, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 17, v26); if ( v26 != 4481 ) goto LABEL_14; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 340))(v9) && (v27 = *(_DWORD *)v4, v15 = (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v9 + 340))(v9, 6, 9, 10), (unsigned __int8)(*(int (__thiscall **)(int, int))(v27 + 1536))(v4, v15)) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 308))(v4, *(_WORD *)(v9 + 4)); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 688))(v4); v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; } else { v16 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1744))(v4, "cannot enter minihouse"); v17 = sub_418B40((int)byte_85A2C0, v16 + 2); v18 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v19 = sub_418EA0(v18, v17); v20 = sub_418EA0(v19, (int)&unk_13359E04); sub_418F20(v20, v25); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 136))(v9); v24 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; } LABEL_29: --dword_750CB8; return sub_467660((int)&unk_D020420, v24); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254498: using guessed type __int16 word_13254498; // 1325449C: using guessed type int dword_1325449C; //----- (0056FC30) -------------------------------------------------------- int __thiscall sub_56FC30(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 char *v6; // edi@1 __int16 v7; // ax@12 int v8; // ebx@12 int v9; // eax@15 int (__thiscall *v10)(_DWORD); // eax@16 int v11; // eax@16 int v12; // eax@18 __int16 v13; // ax@20 int v14; // eax@22 int v15; // edi@23 bool v16; // zf@23 void *v17; // edi@23 int v18; // eax@26 int v19; // eax@29 int v20; // eax@32 int v21; // eax@35 int v22; // eax@40 int v23; // edi@41 void *v24; // edi@41 int v25; // eax@42 int v26; // eax@46 int v27; // eax@50 int v28; // eax@54 char v30; // [sp+10h] [bp-24h]@19 int v31; // [sp+1Ch] [bp-18h]@1 int v32; // [sp+20h] [bp-14h]@16 void *v33; // [sp+24h] [bp-10h]@1 int v34; // [sp+30h] [bp-4h]@1 v4 = this; v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = -29685; v34 = 0; v33 = v5; v6[139] = 0; if ( !(dword_132544A4 & 1) ) { dword_132544A4 |= 1u; word_132544A0 = 7; atexit(nullsub_136); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132544A0) || *((_BYTE *)v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) { *(_DWORD *)v6 = 4482; if ( !sub_4C81E0(&off_849C18, 142) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 142); goto LABEL_55; } goto LABEL_54; } if ( !*(_DWORD *)((char *)v4 + 122) ) { *(_DWORD *)v6 = 4499; if ( !sub_4C81E0(&off_849C18, 142) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 142); LABEL_55: v34 = -1; goto LABEL_56; } goto LABEL_54; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { *(_DWORD *)v6 = 4484; if ( !sub_4C81E0(&off_849C18, 142) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 142); goto LABEL_55; } LABEL_54: v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v28 + 12))(v28, v4, &off_849C18); goto LABEL_55; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); if ( v8 ) { *(_DWORD *)v6 = 4481; v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836); v32 = *(_DWORD *)v8; v11 = v10(v4); (*(void (__thiscall **)(int, char *, int))(v32 + 160))(v8, v6, v11); v32 = 3 * (unsigned __int8)v6[139] + 142; if ( sub_4C81E0(&off_849C18, v32) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", v32); } *(_WORD *)v33 = -29684; *(_WORD *)(v6 + 1) = *((_WORD *)v4 + 2); *v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4); sub_4287B0(&v30, &off_849C18, 5); LOBYTE(v34) = 1; sub_549B60(v4, (int)&v30, 0); (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 216))(v8, v4); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 276))(v8) ) { *(_WORD *)v33 = -29660; *(_WORD *)(v6 + 1) = -5536; *v6 = 1; v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 288))(v8); *(float *)(v6 + 5) = 5810.0; *(float *)(v6 + 9) = 4135.0; *(_WORD *)(v6 + 3) = v13; *(float *)(v6 + 13) = 758.0; *(float *)(v6 + 17) = 160.0; if ( sub_4C81E0(&off_849C18, 24) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v14 + 12))(v14, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 24); } } v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v16 = v15 == (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 128))(v8); v17 = off_849C18; if ( v16 ) { *(_WORD *)off_849C18 = 4214; *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v17 + 1) = *(_WORD *)(v8 + 4); *(_DWORD *)((char *)v17 + 9) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v17 + 8) = 3; if ( sub_4C81E0(&off_849C18, 13) ) { v18 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 13); } *((_BYTE *)v17 + 8) = 13; if ( sub_4C81E0(&off_849C18, 13) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 13); } *((_BYTE *)v17 + 8) = 14; if ( sub_4C81E0(&off_849C18, 13) ) { v20 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v20); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 13); } *((_BYTE *)v17 + 8) = 16; if ( sub_4C81E0(&off_849C18, 13) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 13); } *(_WORD *)v17 = -29607; *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v17 + 1) = *((_WORD *)v4 + 2); if ( !sub_4C81E0(&off_849C18, 8) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 8); goto LABEL_41; } } else { *(_WORD *)off_849C18 = -29605; *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v17 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v17 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 128))(v8); if ( !sub_4C81E0(&off_849C18, 12) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 12); goto LABEL_41; } } v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); LABEL_41: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 376))(v4, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 392))(v4, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 400))(v4, 0); (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 740))(v8, v4); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v16 = v23 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 128))(v8); v24 = off_849C18; if ( v16 ) { *(_WORD *)off_849C18 = 1225; *(_DWORD *)((char *)v24 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 336))(v8); if ( v25 ) { *(_DWORD *)((char *)v24 + 6) = *(_DWORD *)(v25 + 20); *(_DWORD *)((char *)v24 + 10) = *(_DWORD *)(v25 + 24); *(_DWORD *)((char *)v24 + 14) = *(_DWORD *)(v25 + 28); *(_DWORD *)((char *)v24 + 18) = *(_DWORD *)(v25 + 86); *(_DWORD *)((char *)v24 + 22) = *(_DWORD *)(v25 + 90); } if ( !sub_4C81E0(&off_849C18, 26) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 26); LABEL_51: LOBYTE(v34) = 0; sub_428A70(&v30); v34 = -1; goto LABEL_56; } } else { *(_WORD *)off_849C18 = 1226; *(_DWORD *)((char *)v24 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 128))(v8); *(_DWORD *)((char *)v24 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 336))(v8); if ( v26 ) { *(_DWORD *)((char *)v24 + 10) = *(_DWORD *)(v26 + 20); *(_DWORD *)((char *)v24 + 14) = *(_DWORD *)(v26 + 24); *(_DWORD *)((char *)v24 + 18) = *(_DWORD *)(v26 + 28); *(_DWORD *)((char *)v24 + 22) = *(_DWORD *)(v26 + 86); *(_DWORD *)((char *)v24 + 26) = *(_DWORD *)(v26 + 90); } if ( !sub_4C81E0(&off_849C18, 30) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 30); goto LABEL_51; } } v27 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v27); goto LABEL_51; } *(_DWORD *)v6 = 4487; if ( sub_4C81E0(&off_849C18, 142) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); v34 = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ : Packet Too Long", 142); v34 = -1; } LABEL_56: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132544A0: using guessed type __int16 word_132544A0; // 132544A4: using guessed type int dword_132544A4; // 14D148D0: using guessed type int dword_14D148D0; // 14D16430: using guessed type int dword_14D16430; //----- (00570380) -------------------------------------------------------- int __thiscall sub_570380(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edx@1 char v6; // al@3 int v7; // edx@3 __int16 v8; // ax@5 int v9; // edi@5 void (__thiscall *v10)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@5 void *v11; // eax@9 int v12; // eax@12 int v13; // eax@13 int v14; // ST04_4@13 __time32_t v15; // eax@13 __time32_t v16; // eax@13 __time32_t v17; // eax@13 signed int v19; // [sp-Ch] [bp-2Ch]@6 signed int v20; // [sp-8h] [bp-28h]@6 int v21; // [sp-4h] [bp-24h]@2 signed int v22; // [sp-4h] [bp-24h]@6 int v23; // [sp+28h] [bp+8h]@12 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)v4; if ( *(_DWORD *)(v4 + 122) ) { v6 = (*(int (__thiscall **)(int))(v5 + 304))(v4); v7 = *(_DWORD *)v4; if ( !v6 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v7 + 776))(v4, 35, 30, 4484); v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ"; goto LABEL_16; } v8 = (*(int (__thiscall **)(int))(v7 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); if ( v9 ) { if ( *(_BYTE *)(a2 + 2) ) { v10(v4, 35, 30, 4545); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 176))(v9) ) { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1616))(v4, 290); v11 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_40A820(v11, v4, 290); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); } goto LABEL_15; } v10(v4, 35, 30, 4559); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 336))(v9) ) { v23 = *(_DWORD *)v4; v12 = (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v9 + 336))(v9, 6, 9, 10); if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(v23 + 1536))(v4, v12) ) { LABEL_15: v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ"; goto LABEL_16; } v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1744))(v4); v14 = sub_418B40((int)byte_85A2C0, v13 + 2); v15 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v16 = sub_418EA0(v15, v14); v17 = sub_418EA0(v16, (int)"cannot out minihouse"); sub_418F20(v17, (int)&unk_13359E04); v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1528); v22 = 0; v20 = 0; v19 = 1669; } else { v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776); v22 = 4500; v20 = 30; v19 = 35; } } else { v22 = 4487; v20 = 30; v19 = 35; } v10(v4, v19, v20, v22); goto LABEL_15; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(v4, 35, 30, 4499); v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ"; LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, v21); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005705B0) -------------------------------------------------------- int __thiscall sub_5705B0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edx@6 void *v6; // ecx@6 char v7; // al@8 __int16 v8; // ax@10 int v9; // eax@10 int v10; // ebx@10 int v11; // edi@12 int v12; // ebx@17 int v13; // edx@18 int v14; // eax@18 void (__thiscall *v15)(_DWORD, _DWORD); // edx@18 int v16; // ecx@21 int v17; // edi@23 int v18; // eax@23 int v19; // eax@24 int v20; // ST08_4@24 __time32_t v21; // eax@24 __time32_t v22; // eax@24 __time32_t v23; // eax@24 signed int v25; // [sp-4h] [bp-34h]@7 int v26; // [sp-4h] [bp-34h]@11 int v27; // [sp+0h] [bp-30h]@0 int v28; // [sp+4h] [bp-2Ch]@0 int v29; // [sp+10h] [bp-20h]@21 int v30; // [sp+14h] [bp-1Ch]@21 int v31; // [sp+18h] [bp-18h]@1 int v32; // [sp+1Ch] [bp-14h]@18 int v33; // [sp+20h] [bp-10h]@10 int v34; // [sp+2Ch] [bp-4h]@1 v4 = this; v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; if ( !(dword_132544AC & 1) ) { dword_132544AC |= 1u; word_132544A8 = 6; atexit(nullsub_137); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132544A8) || *((_BYTE *)v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3864))(v4) ) { v5 = *(_DWORD *)v4; v25 = 4482; v6 = v4; goto LABEL_26; } v5 = *(_DWORD *)v4; v6 = v4; if ( !*(_DWORD *)((char *)v4 + 122) ) { v25 = 4499; LABEL_26: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v5 + 776))(v6, 35, 25, v25); v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; goto LABEL_27; } v7 = (*(int (__thiscall **)(void *))(v5 + 304))(v4); v5 = *(_DWORD *)v4; v6 = v4; if ( !v7 ) { v25 = 4484; goto LABEL_26; } (*(void (__thiscall **)(void *))(v5 + 2256))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2632))(v4); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v9 = sub_54DE90(&unk_13253630, v8); v10 = v9; v33 = v9; if ( !v9 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 25, 4487); v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; LABEL_27: v34 = -1; goto LABEL_28; } v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 336))(v9); if ( v11 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 672))(v10) == 2 || (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 672))(v10) == 3 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); v27 = 1; if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { (*(void (__stdcall **)(signed int))(*(_DWORD *)v33 + 512))(1); v13 = *(_DWORD *)(v11 + 90); v14 = *(_DWORD *)v4; v32 = *(_DWORD *)(v11 + 86); v33 = v13; v15 = *(void (__thiscall **)(_DWORD, _DWORD))(v14 + 404); LABEL_19: v15(v4, v11 + 20); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 25, 7619); v34 = -1; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; goto LABEL_28; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 368))(v4) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 400))(v4, 1, 1); v16 = *(_DWORD *)(v11 + 90); v15 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 404); v29 = *(_DWORD *)(v11 + 86); v30 = v16; goto LABEL_19; } v10 = v33; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 25, 4481); v17 = *(_DWORD *)v4; v18 = (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v10 + 336))(v10, 6, 9, 10); if ( !(unsigned __int8)(*(int (__thiscall **)(void *, int))(v17 + 1536))(v4, v18) ) { v19 = (*(int (__thiscall **)(void *, _DWORD, _UNKNOWN *))(*(_DWORD *)v4 + 1744))( v4, "cannot out minihouse", &unk_13359E04); v20 = sub_418B40((int)byte_85A2C0, v19 + 2); v21 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v22 = sub_418EA0(v21, v20); v23 = sub_418EA0(v22, v27); sub_418F20(v23, v28); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1528))(v4, 1669); v34 = -1; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; goto LABEL_28; } goto LABEL_14; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 25, 4500); LABEL_14: v34 = -1; v26 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ"; LABEL_28: --dword_750CB8; return sub_467660((int)&unk_D020420, v26); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132544A8: using guessed type __int16 word_132544A8; // 132544AC: using guessed type int dword_132544AC; //----- (00570900) -------------------------------------------------------- int __thiscall sub_570900(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // al@1 int v6; // edx@1 __int16 v7; // ax@6 int v8; // eax@6 int v9; // edi@6 int v10; // ebx@8 int v11; // eax@10 signed int v13; // [sp-4h] [bp-24h]@2 int v14; // [sp-4h] [bp-24h]@3 signed int v15; // [sp-4h] [bp-24h]@9 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4); v6 = *(_DWORD *)v4; if ( v5 ) { if ( !*(_DWORD *)((char *)v4 + 122) ) { v13 = 4499; goto LABEL_3; } v7 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); v9 = v8; if ( !v8 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 35, 4487); LABEL_13: v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ"; goto LABEL_14; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 128))(v8); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v10 ) { v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v9 + 188))(v9, v4, a2 + 2); if ( v11 == 4545 ) goto LABEL_13; v15 = v11; } else { v15 = 4488; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 35, v15); goto LABEL_13; } v13 = 4484; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v4, 35, 35, v13); v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ"; LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00570A60) -------------------------------------------------------- int __thiscall sub_570A60(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // eax@1 __int16 v7; // ax@6 int v8; // eax@6 int v9; // edi@6 int v10; // ebx@8 int v11; // eax@10 signed int v13; // [sp-4h] [bp-24h]@2 int v14; // [sp-4h] [bp-24h]@3 signed int v15; // [sp-4h] [bp-24h]@9 int v16; // [sp+28h] [bp+8h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ"; dword_750AB8[dword_750CB8++] = -1; v16 = a2 + 2; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) == 0; v6 = *(_DWORD *)v4; if ( !v5 ) { if ( !*(_DWORD *)((char *)v4 + 122) ) { v13 = 4499; goto LABEL_3; } v7 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); v9 = v8; if ( !v8 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 32, 4487); LABEL_13: v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ"; goto LABEL_14; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 128))(v8); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v10 ) { v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v9 + 184))(v9, v4, v16); if ( v11 == 4545 ) goto LABEL_13; v15 = v11; } else { v15 = 4488; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 32, v15); goto LABEL_13; } v13 = 4484; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v4, 35, 32, v13); v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ"; LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00570BC0) -------------------------------------------------------- int __thiscall sub_570BC0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // al@1 int v6; // edx@1 __int16 v7; // ax@6 int v8; // eax@6 int v9; // edi@6 int v10; // ebx@8 int v11; // eax@10 signed int v13; // [sp-4h] [bp-24h]@2 int v14; // [sp-4h] [bp-24h]@3 signed int v15; // [sp-4h] [bp-24h]@9 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4); v6 = *(_DWORD *)v4; if ( v5 ) { if ( !*(_DWORD *)((char *)v4 + 122) ) { v13 = 4499; goto LABEL_3; } v7 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v8 = sub_54DE90(&unk_13253630, v7); v9 = v8; if ( !v8 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 38, 4487); LABEL_13: v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ"; goto LABEL_14; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 128))(v8); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v10 ) { v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v9 + 192))(v9, v4, a2 + 2); if ( v11 == 4545 ) goto LABEL_13; v15 = v11; } else { v15 = 4488; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 38, v15); goto LABEL_13; } v13 = 4484; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v4, 35, 38, v13); v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ"; LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00570D20) -------------------------------------------------------- int __thiscall sub_570D20(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@6 int v12; // ebx@8 int v13; // ebx@11 void *v14; // eax@12 int v15; // ebx@12 const char *v16; // eax@12 signed int v18; // [sp-4h] [bp-30h]@2 int v19; // [sp-4h] [bp-30h]@3 char v20; // [sp+10h] [bp-1Ch]@12 int v21; // [sp+1Ch] [bp-10h]@1 int v22; // [sp+28h] [bp-4h]@1 v4 = this; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v22 = 0; v7 = v4; if ( !v5 ) { v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v18 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( !v10 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 47, 4487); --dword_750CB8; v22 = -1; LABEL_14: v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ"; return sub_467660((int)&unk_D020420, v19); } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v11 + 236))(v11, a2 + 2); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 47, v13); if ( v13 == 4481 ) { v14 = off_849C18; *(_WORD *)off_849C18 = -29648; v15 = (int)((char *)v14 + 2); v16 = (const char *)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 64))(v11); strncpy((char *)v15, v16, 0x14u); *(_BYTE *)(v15 + 20) = 0; sub_4287B0(&v20, &off_849C18, 23); LOBYTE(v22) = 1; sub_549B60(v4, (int)&v20, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v11 + 240))(v11); LOBYTE(v22) = 0; sub_428A70(&v20); --dword_750CB8; goto LABEL_13; } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 47, 4488); } --dword_750CB8; LABEL_13: v22 = -1; goto LABEL_14; } v18 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 47, v18); --dword_750CB8; v22 = -1; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ"; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00570F10) -------------------------------------------------------- int __thiscall sub_570F10(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@6 int v12; // ebx@8 int v13; // edi@10 void *v14; // ebx@10 int v15; // edi@10 int v17; // [sp-8h] [bp-34h]@12 signed int v18; // [sp-4h] [bp-30h]@2 int v19; // [sp-4h] [bp-30h]@3 int v20; // [sp-4h] [bp-30h]@12 char v21; // [sp+10h] [bp-1Ch]@10 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 v4 = this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v23 = 0; v7 = v4; if ( !v5 ) { v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v18 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( !v10 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 44, 4487); v23 = -1; LABEL_17: v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ"; goto LABEL_18; } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) != v12 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 44, 4488); LABEL_16: v23 = -1; goto LABEL_17; } v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v11 + 232))(v11, a2 + 2); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 44, v13); v14 = off_849C18; *(_WORD *)off_849C18 = -29651; sub_4287B0(&v21, &off_849C18, 3); v15 = v13 - 4566; LOBYTE(v23) = 1; if ( v15 ) { if ( v15 != 1 ) { LABEL_15: LOBYTE(v23) = 0; sub_428A70(&v21); goto LABEL_16; } v20 = 1; *((_BYTE *)v14 + 2) = 0; v17 = (int)&v21; } else { v20 = 1; *((_BYTE *)v14 + 2) = 1; v17 = (int)&v21; } sub_549B60(v4, v17, v20); goto LABEL_15; } v18 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 44, v18); v23 = -1; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ"; LABEL_18: --dword_750CB8; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005710D0) -------------------------------------------------------- int __thiscall sub_5710D0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@6 int v12; // ebx@8 int v13; // edi@11 void *v14; // eax@12 signed int v16; // [sp-4h] [bp-30h]@2 int v17; // [sp-4h] [bp-30h]@3 char v18; // [sp+10h] [bp-1Ch]@12 int v19; // [sp+1Ch] [bp-10h]@1 int v20; // [sp+28h] [bp-4h]@1 v4 = this; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_INNERMH_RESET_MAX_PLAYER"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_INNERMH_RESET_MAX_PLAYER"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_INNERMH_RESET_MAX_PLAYER"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v20 = 0; v7 = v4; if ( !v5 ) { v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v16 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( !v10 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 51, 4487); --dword_750CB8; v20 = -1; LABEL_14: v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_INNERMH_RESET_MAX_PLAYER"; return sub_467660((int)&unk_D020420, v17); } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { v13 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 228))(v11, *(_BYTE *)(a2 + 2)); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 51, v13); if ( v13 == 4481 ) { v14 = off_849C18; *(_WORD *)off_849C18 = -29644; *((_BYTE *)v14 + 2) = *(_BYTE *)(a2 + 2); sub_4287B0(&v18, &off_849C18, 3); LOBYTE(v20) = 1; sub_549B60(v4, (int)&v18, 1); LOBYTE(v20) = 0; sub_428A70(&v18); --dword_750CB8; goto LABEL_13; } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 51, 4488); } --dword_750CB8; LABEL_13: v20 = -1; goto LABEL_14; } v16 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 51, v16); --dword_750CB8; v20 = -1; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_INNERMH_RESET_MAX_PLAYER"; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005712A0) -------------------------------------------------------- int __thiscall sub_5712A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@6 int v12; // ebx@8 int v13; // edi@11 void *v14; // eax@12 signed int v16; // [sp-4h] [bp-30h]@2 int v17; // [sp-4h] [bp-30h]@3 char v18; // [sp+10h] [bp-1Ch]@12 int v19; // [sp+1Ch] [bp-10h]@1 int v20; // [sp+28h] [bp-4h]@1 v4 = this; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v20 = 0; v7 = v4; if ( !v5 ) { v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v16 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( !v10 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 68, 4487); --dword_750CB8; v20 = -1; LABEL_14: v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ"; return sub_467660((int)&unk_D020420, v17); } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v11 + 244))(v11, a2 + 2); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 68, v13); if ( v13 == 4481 ) { v14 = off_849C18; *(_WORD *)off_849C18 = -29627; *((_BYTE *)v14 + 2) = *(_BYTE *)(a2 + 2); sub_4287B0(&v18, &off_849C18, 3); LOBYTE(v20) = 1; sub_549B60(v4, (int)&v18, 1); LOBYTE(v20) = 0; sub_428A70(&v18); --dword_750CB8; goto LABEL_13; } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 68, 4488); } --dword_750CB8; LABEL_13: v20 = -1; goto LABEL_14; } v16 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 68, v16); --dword_750CB8; v20 = -1; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ"; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00571460) -------------------------------------------------------- int __thiscall sub_571460(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@6 int v12; // ebx@8 int v13; // ebx@10 int v14; // edi@10 void *v15; // edi@11 signed int v17; // [sp-4h] [bp-30h]@2 int v18; // [sp-4h] [bp-30h]@3 char v19; // [sp+10h] [bp-1Ch]@11 int v20; // [sp+1Ch] [bp-10h]@1 int v21; // [sp+28h] [bp-4h]@1 v4 = this; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v21 = 0; v7 = v4; if ( v5 ) { v17 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 73, v17); v21 = -1; v18 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ"; goto LABEL_14; } v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v17 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( v10 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { v13 = a2 + 2; v14 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v11 + 248))(v11, a2 + 2); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 73, v14); if ( v14 == 4481 ) { v15 = off_849C18; *(_WORD *)off_849C18 = -29622; *((_BYTE *)v15 + 2) = *(_BYTE *)v13; strncpy((char *)v15 + 3, (const char *)(a2 + 3), *(_BYTE *)(a2 + 2)); *((_BYTE *)v15 + *(_BYTE *)v13 + 3) = 0; sub_4287B0(&v19, &off_849C18, *((_BYTE *)v15 + 2) + 4); LOBYTE(v21) = 1; sub_549B60(v4, (int)&v19, 1); LOBYTE(v21) = 0; sub_428A70(&v19); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 73, 4488); } v21 = -1; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 73, 4487); v21 = -1; } v18 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ"; LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00571640) -------------------------------------------------------- int __thiscall sub_571640(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // ebx@6 int v12; // edi@8 int v13; // edi@10 void *v14; // edi@11 __int16 v15; // ax@11 signed int v17; // [sp-4h] [bp-30h]@2 int v18; // [sp-4h] [bp-30h]@3 char v19; // [sp+10h] [bp-1Ch]@11 int v20; // [sp+1Ch] [bp-10h]@1 int v21; // [sp+28h] [bp-4h]@1 v4 = this; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v21 = 0; v7 = v4; if ( v5 ) { v17 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 81, v17); v21 = -1; v18 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ"; goto LABEL_14; } v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v17 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( v10 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v11 + 268))(v11, a2 + 2); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 81, v13); if ( v13 == 4481 ) { v14 = off_849C18; *(_WORD *)off_849C18 = -29660; *(_WORD *)((char *)v14 + 3) = -5536; *((_BYTE *)v14 + 2) = 1; v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 288))(v11); *(float *)((char *)v14 + 7) = 5568.0; *(float *)((char *)v14 + 11) = 4440.0; *(_WORD *)((char *)v14 + 5) = v15; *(float *)((char *)v14 + 15) = 755.0; *((_BYTE *)v14 + 23) = 1; *(float *)((char *)v14 + 19) = 0.0; sub_4287B0(&v19, &off_849C18, 24); LOBYTE(v21) = 1; sub_549B60(v4, (int)&v19, 1); LOBYTE(v21) = 0; sub_428A70(&v19); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 81, 4488); } v21 = -1; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 81, 4487); v21 = -1; } v18 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ"; LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00571830) -------------------------------------------------------- int __thiscall sub_571830(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@6 int v12; // ebx@8 int v13; // edi@11 void *v14; // eax@12 signed int v16; // [sp-4h] [bp-30h]@2 int v17; // [sp-4h] [bp-30h]@3 char v18; // [sp+10h] [bp-1Ch]@12 int v19; // [sp+1Ch] [bp-10h]@1 int v20; // [sp+28h] [bp-4h]@1 v4 = this; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v20 = 0; v7 = v4; if ( !v5 ) { v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v16 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v11 = v10; if ( !v10 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 84, 4487); --dword_750CB8; v20 = -1; LABEL_14: v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ"; return sub_467660((int)&unk_D020420, v17); } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v12 ) { v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v11 + 272))(v11, a2 + 2); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 84, v13); if ( v13 == 4481 ) { v14 = off_849C18; *(_WORD *)off_849C18 = -29657; *((_BYTE *)v14 + 2) = 1; *(_WORD *)((char *)v14 + 3) = -5536; sub_4287B0(&v18, &off_849C18, 5); LOBYTE(v20) = 1; sub_549B60(v4, (int)&v18, 1); LOBYTE(v20) = 0; sub_428A70(&v18); --dword_750CB8; goto LABEL_13; } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 84, 4488); } --dword_750CB8; LABEL_13: v20 = -1; goto LABEL_14; } v16 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 84, v16); --dword_750CB8; v20 = -1; v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ"; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00571A00) -------------------------------------------------------- int __thiscall sub_571A00(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // esi@1 bool v6; // zf@1 signed __int16 v7; // cx@2 int v8; // eax@5 __int16 v9; // ax@9 int v10; // eax@9 int v11; // edi@12 signed __int16 v12; // cx@13 __int16 v13; // ax@17 int v14; // eax@17 int v15; // eax@19 int v16; // edi@20 int v17; // edi@25 __int16 v18; // di@28 unsigned __int64 v19; // qax@38 int v20; // eax@45 int v21; // eax@47 int v22; // esi@53 int v23; // eax@53 int (*v24)(void); // edx@54 int v25; // eax@54 int v26; // eax@55 int v27; // eax@59 int v28; // esi@63 int v29; // eax@63 int v30; // esi@65 int v31; // eax@65 void *v32; // esi@66 int v33; // edi@68 int v34; // eax@70 int v35; // eax@75 unsigned int v37; // [sp-4h] [bp-B4h]@1 int v38; // [sp-4h] [bp-B4h]@12 int v39; // [sp+10h] [bp-A0h]@0 int v40; // [sp+18h] [bp-98h]@43 __int16 v41; // [sp+1Ch] [bp-94h]@34 int v42; // [sp+20h] [bp-90h]@41 int v43; // [sp+24h] [bp-8Ch]@12 int v44; // [sp+28h] [bp-88h]@9 char v45; // [sp+2Ch] [bp-84h]@41 char v46; // [sp+30h] [bp-80h]@54 int v47; // [sp+3Ah] [bp-76h]@60 __int16 v48; // [sp+9Ch] [bp-14h]@54 char v49; // [sp+9Eh] [bp-12h]@54 unsigned int v50; // [sp+A0h] [bp-10h]@1 int v51; // [sp+ACh] [bp-4h]@1 int v52; // [sp+B0h] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v37 = (unsigned int)&v52 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 433097815; v6 = *(_DWORD *)((char *)v4 + 122) == 0; v51 = 0; if ( v6 ) { v7 = 6610; LABEL_3: *((_WORD *)v5 + 1) = v7; if ( !sub_4C81E0(&off_849C18, 4) ) { LABEL_4: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ : Packet Too Long", 4); v51 = -1; LABEL_83: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ"); } v8 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v37); LABEL_6: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 12))(v8, v4); v51 = -1; goto LABEL_83; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v7 = 6612; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v44 = v10; if ( !v10 ) { *((_WORD *)v5 + 1) = 6611; if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_4; v8 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v37); goto LABEL_6; } v11 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v10 + 292))(v37); v43 = v11; if ( !v11 ) { v12 = 6618; LABEL_77: *((_WORD *)v5 + 1) = v12; goto LABEL_78; } if ( (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) < *(_DWORD *)(v11 + 102) || (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) > *(_DWORD *)(v11 + 106) ) { v12 = 6623; goto LABEL_77; } if ( *(_DWORD *)(v11 + 90) != 1 ) { v13 = (*(int (**)(void))(*(_DWORD *)v44 + 132))(); v14 = sub_54DE90(&unk_13253630, v13); v44 = v14; if ( !v14 ) { *((_WORD *)v5 + 1) = 6609; if ( !sub_4C81E0(&off_849C18, 4) ) { LABEL_79: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ : Packet Too Long", 4); goto LABEL_82; } v15 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 760))(v4, v38); LABEL_81: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v15 + 12))(v15, v4); goto LABEL_82; } v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 836))(v14); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v16; v11 = v43; if ( !v6 ) { if ( !*(_DWORD *)(v43 + 94) && !*(_DWORD *)(v43 + 98) ) { v12 = 6622; goto LABEL_77; } if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2088))(v4) || (v17 = (*(int (**)(void))(*(_DWORD *)v44 + 2088))(), v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2088))(v4) == v17, v11 = v43, !v6) || *(_DWORD *)(v43 + 98) != 1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1360))(v4) == -1 || (v18 = (*(int (**)(void))(*(_DWORD *)v44 + 1360))(), v6 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1360))(v4) == v18, v11 = v43, !v6) || *(_DWORD *)(v43 + 94) != 1 ) { if ( *(_DWORD *)(v11 + 98) == 1 ) { v12 = 6621; goto LABEL_77; } if ( *(_DWORD *)(v11 + 94) == 1 ) { v12 = 6620; goto LABEL_77; } } } } } v41 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v11 + 110)); if ( v41 == -1 ) { if ( !*(_DWORD *)(v11 + 142) ) { (*(void (__thiscall **)(void *, int))(*(_DWORD *)v4 + 296))(v4, v11); LABEL_82: v51 = -1; goto LABEL_83; } } else { if ( !*(_DWORD *)(v11 + 142) ) goto LABEL_40; } LODWORD(v19) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1076))(v4); if ( *(_DWORD *)(v11 + 142) > v19 ) { *((_WORD *)v5 + 1) = 6615; LABEL_78: if ( !sub_4C81E0(&off_849C18, 4) ) goto LABEL_79; v15 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v4 + 760))(v4, v38); goto LABEL_81; } LABEL_40: if ( v41 != -1 ) { v42 = sub_587680(v4, v41, (int)&v45); if ( !v42 ) { v12 = 6616; goto LABEL_77; } v39 = v42; v40 = *(_DWORD *)(v42 + 112); if ( !v40 ) { v12 = 6617; goto LABEL_77; } v44 = (*(int (__stdcall **)(int))(*(_DWORD *)v40 + 28))(v42 + 8); v20 = sub_418CB0((int)&dword_14D20890, v41); if ( !v20 ) { v12 = 6614; goto LABEL_77; } v21 = *(_DWORD *)v20; if ( !v21 ) { v12 = 6614; goto LABEL_77; } if ( (unsigned int)v44 < 1 || (unsigned int)v44 > *(_DWORD *)(v21 + 106) ) { *((_WORD *)v5 + 1) = 6617; goto LABEL_78; } if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)v40 + 24))() ) { v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 2004))(v4, v38); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); goto LABEL_73; } if ( v44 == 1 ) { v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 2004))(v4, v38); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); LABEL_73: (*(void (__thiscall **)(int, _DWORD, int, char *))(*(_DWORD *)v22 + 48))(v22, *(_WORD *)(v23 + 4), v42, &v45); goto LABEL_64; } memcpy(&v46, (const void *)v42, 0x6Cu); v24 = *(int (**)(void))(*(_DWORD *)v40 + 40); v48 = *(_WORD *)(v42 + 108); v49 = *(_BYTE *)(v42 + 110); v25 = v24(); if ( v25 ) { v26 = v25 - 1; if ( v26 ) { if ( v26 != 1 ) { *((_WORD *)v5 + 1) = 6614; if ( sub_4C81E0(&off_849C18, 4) ) { v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v27 + 12))(v27, v4, &off_849C18); --dword_750CB8; v51 = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ : Packet Too Long", 4); --dword_750CB8; v51 = -1; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ"); } --v47; } else { LOWORD(v47) = v47 - 1; } } else { LOBYTE(v47) = v47 - 1; } v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, char *, char *))(*(_DWORD *)v28 + 64))( v28, *(_WORD *)(v29 + 4), v42, &v46, &v45, &v45); v11 = v43; } LABEL_64: if ( *(_DWORD *)(v11 + 142) ) { v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v30 + 72))( v30, *(_WORD *)(v31 + 4), *(_DWORD *)(v11 + 142), 0, -1); } v32 = off_849C18; *(_WORD *)off_849C18 = 13449; *((_WORD *)v32 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v32 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v32 + 6) = 0; *((_DWORD *)v32 + 7) = 0; *((_WORD *)v32 + 9) = -1; *((_WORD *)v32 + 16) = *(_WORD *)v11; if ( v41 != -1 ) { *((_WORD *)v32 + 9) = *(_WORD *)(v39 + 8); *(_DWORD *)((char *)v32 + 10) = *(_DWORD *)v39; *(_DWORD *)((char *)v32 + 14) = *(_DWORD *)(v39 + 4); *((_DWORD *)v32 + 5) = v44; } v33 = *(_DWORD *)(v11 + 142); if ( v33 ) { *((_DWORD *)v32 + 6) = v33; *((_DWORD *)v32 + 7) = 0; } *((_WORD *)v32 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4) + 4); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v34 + 4); if ( sub_4C81E0(&off_849C18, 34) ) { v35 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v35); --dword_750CB8; v51 = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ : Packet Too Long", 34); --dword_750CB8; v51 = -1; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00572160) -------------------------------------------------------- int __thiscall sub_572160(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@1 bool v4; // zf@1 signed __int16 v5; // cx@2 int v6; // eax@5 __int16 v7; // ax@8 int v8; // ebx@8 int v9; // eax@11 signed int v10; // ebx@15 int v11; // eax@21 char v13; // [sp+10h] [bp-1Ch]@24 int v14; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+28h] [bp-4h]@1 v2 = this; v14 = (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_DWORD *)off_849C18 = 433097815; v4 = *(_DWORD *)((char *)v2 + 122) == 0; v15 = 0; if ( v4 ) { v5 = 6610; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 304))(v2) ) { v5 = 6612; LABEL_3: *((_WORD *)v3 + 1) = v5; if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); v15 = -1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply : Packet Too Long", 4); v15 = -1; } goto LABEL_26; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 312))(v2); v8 = sub_54DE90(&unk_13253630, v7); if ( v8 ) { if ( !(dword_132545BC & 1) ) { dword_132545BC |= 1u; dword_132545B0 = 0; dword_132545B8 = 0; atexit(nullsub_138); } LOWORD(dword_132544B0) = dword_132544B0 & 0x3FF | 0x8C00; word_132544B4 = 0; dword_132545B0 = (int)&dword_132544B0; dword_132545B4 = 256; LOWORD(dword_132544B0) = dword_132544B0 & 0xFC58 | 0x58; HIWORD(dword_132544B0) = *(_WORD *)a2; switch ( (*(int (__thiscall **)(int, int, char *))(*(_DWORD *)v8 + 300))(v8, a2, (char *)&dword_132544B0 + 2) ) { case 0: v10 = 6608; break; case 1: v10 = 6618; break; case 2: v10 = 6614; break; default: v10 = 6609; break; } *(_WORD *)v3 = -29609; *((_WORD *)v3 + 1) = v10; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply : Packet Too Long", 4); } if ( v10 == 6608 && (unsigned __int16)word_132544B4 >= 1u ) { sub_4C81E0(&dword_132545B0, 2 * (unsigned __int16)word_132544B4 + 6); sub_4287B0(&v13, &dword_132545B0, 2 * (unsigned __int16)word_132544B4 + 6); LOBYTE(v15) = 1; sub_549B60(v2, (int)&v13, 1); LOBYTE(v15) = 0; sub_428A70(&v13); } } else { *((_WORD *)v3 + 1) = 6611; if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply : Packet Too Long", 4); } } v15 = -1; LABEL_26: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132544B0: using guessed type int dword_132544B0; // 132544B4: using guessed type __int16 word_132544B4; // 132545B0: using guessed type int dword_132545B0; // 132545B4: using guessed type int dword_132545B4; // 132545B8: using guessed type int dword_132545B8; // 132545BC: using guessed type int dword_132545BC; //----- (00572460) -------------------------------------------------------- int __thiscall sub_572460(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 bool v6; // zf@1 signed __int16 v7; // cx@2 int v8; // eax@5 __int16 v9; // ax@8 int v10; // ebx@8 int v11; // eax@11 int v12; // eax@12 signed __int16 v13; // ax@13 void *v14; // ecx@15 int v15; // eax@17 int v16; // ebx@22 int v17; // eax@26 void *v18; // eax@27 int v20; // [sp-4h] [bp-30h]@15 char v21; // [sp+10h] [bp-1Ch]@27 int v22; // [sp+1Ch] [bp-10h]@1 int v23; // [sp+28h] [bp-4h]@1 v4 = this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = &unk_14C08C3E; v6 = *(_DWORD *)((char *)v4 + 122) == 0; v23 = 0; if ( v6 ) { v7 = 4499; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); if ( !v10 ) { *((_WORD *)v5 + 1) = 4487; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); goto LABEL_28; } LABEL_10: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ : Packet Too Long", 4); LABEL_28: v23 = -1; goto LABEL_29; } v12 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 84))(v10, *(_WORD *)(a2 + 4)); if ( v12 ) { if ( *(_BYTE *)(v12 + 37) >= 3u ) { *((_WORD *)v5 + 1) = 4578; goto LABEL_15; } if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 344))(v10, *(_WORD *)(a2 + 4)) ) { v16 = sub_4A0730((int)&unk_D73D158, *(_WORD *)(a2 + 2)); v20 = 4; v14 = &off_849C18; if ( v16 ) { if ( sub_4C81E0(&off_849C18, 4) ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v17 + 12))(v17, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ : Packet Too Long", 4); } v18 = off_849C18; *(_WORD *)off_849C18 = -29633; *((_WORD *)v18 + 1) = *(_WORD *)v16; *((_WORD *)v18 + 2) = *(_WORD *)(v16 + 2); *((_WORD *)v18 + 3) = *(_WORD *)(a2 + 4); *((_WORD *)v18 + 4) = *((_WORD *)v4 + 2); *((_BYTE *)v18 + 10) = *(_BYTE *)(v16 + 4); *((_BYTE *)v18 + 11) = *(_BYTE *)(v16 + 6); sub_4287B0(&v21, &off_849C18, 12); LOBYTE(v23) = 1; sub_549B60(v4, (int)&v21, 1); LOBYTE(v23) = 0; sub_428A70(&v21); goto LABEL_28; } *((_WORD *)v5 + 1) = 5315; LABEL_16: if ( sub_4C81E0(v14, v20) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v15 + 12))(v15, v4, &off_849C18); goto LABEL_28; } goto LABEL_10; } v13 = 5313; } else { v13 = 5829; } *((_WORD *)v5 + 1) = v13; LABEL_15: v20 = 4; v14 = &off_849C18; goto LABEL_16; } v7 = 4484; LABEL_3: *((_WORD *)v5 + 1) = v7; if ( sub_4C81E0(&off_849C18, 4) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); v23 = -1; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ : Packet Too Long", 4); v23 = -1; } LABEL_29: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00572740) -------------------------------------------------------- int __thiscall sub_572740(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // esi@1 bool v6; // zf@1 int v7; // eax@3 signed __int16 v8; // cx@5 __int16 v9; // ax@6 int v10; // eax@6 signed __int16 v11; // dx@7 unsigned int v12; // ecx@11 int v13; // eax@14 int v14; // eax@20 int v15; // edi@20 __int16 v16; // ax@22 __int16 v17; // ax@28 int v18; // edi@28 int v19; // ST3C_4@30 int v20; // eax@30 int v21; // edi@35 __int16 v22; // di@38 unsigned __int64 v23; // qax@48 int v24; // eax@55 int v25; // eax@57 int v26; // esi@63 int v27; // eax@63 int (*v28)(void); // edx@64 int v29; // eax@64 int v30; // eax@65 int v31; // eax@69 int v32; // esi@73 int v33; // eax@73 int v34; // esi@75 int v35; // eax@75 void *v36; // esi@76 int v37; // edi@78 int v38; // eax@80 int v39; // eax@85 unsigned int v41; // [sp-4h] [bp-B4h]@1 int v42; // [sp-4h] [bp-B4h]@61 int v43; // [sp+10h] [bp-A0h]@0 __int16 v44; // [sp+18h] [bp-98h]@44 int v45; // [sp+1Ch] [bp-94h]@51 int v46; // [sp+20h] [bp-90h]@20 int v47; // [sp+24h] [bp-8Ch]@6 int v48; // [sp+24h] [bp-8Ch]@53 int v49; // [sp+28h] [bp-88h]@18 char v50; // [sp+2Ch] [bp-84h]@51 char v51; // [sp+30h] [bp-80h]@64 int v52; // [sp+3Ah] [bp-76h]@70 __int16 v53; // [sp+9Ch] [bp-14h]@64 char v54; // [sp+9Eh] [bp-12h]@64 unsigned int v55; // [sp+A0h] [bp-10h]@1 int v56; // [sp+ACh] [bp-4h]@1 int v57; // [sp+B0h] [bp+0h]@1 v55 = (unsigned int)&v57 ^ __security_cookie; v41 = (unsigned int)&v57 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -29631; *((_WORD *)v5 + 2) = 5824; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); v6 = *(_DWORD *)((char *)v4 + 122) == 0; v56 = 0; if ( v6 ) { *((_WORD *)v5 + 2) = 5826; if ( sub_4C81E0(&off_849C18, 6) ) { LABEL_3: v7 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v41); LABEL_91: (*(void (__thiscall **)(int, void *))(*(_DWORD *)v7 + 12))(v7, v4); goto LABEL_92; } goto LABEL_9; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v8 = 5828; LABEL_88: *((_WORD *)v5 + 2) = v8; LABEL_89: if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 760))(v4, v41); goto LABEL_91; } LABEL_9: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ : Packet Too Long", 6); LABEL_92: --dword_750CB8; goto LABEL_93; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v47 = v10; if ( !v10 ) { v11 = 5827; goto LABEL_8; } if ( dword_132669D4 ) v12 = *(_DWORD *)(dword_132669D4 + 40); else v12 = 0; if ( *(_WORD *)(a2 + 4) >= v12 ) goto LABEL_96; v13 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 84))(v10, *(_WORD *)(a2 + 2)); if ( !v13 ) { *((_WORD *)v5 + 2) = 5829; goto LABEL_89; } if ( *(_BYTE *)(v13 + 37) >= 3u ) { v8 = 4578; goto LABEL_88; } v49 = *(_WORD *)(v13 + 8); if ( -1 == (_WORD)v49 ) { v11 = 5829; goto LABEL_8; } v14 = sub_626BC0((int)&unk_132669A0, *(_WORD *)(a2 + 4)); v15 = v14; v46 = v14; if ( !v14 ) { v11 = 5834; goto LABEL_8; } v16 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v14 + 2)); if ( -1 == v16 ) { *((_WORD *)v5 + 2) = 5830; goto LABEL_89; } if ( v16 != (_WORD)v49 ) { LABEL_96: v8 = 5834; goto LABEL_88; } if ( (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) < *(_DWORD *)(v15 + 102) || (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4) > *(_DWORD *)(v15 + 106) ) { v8 = 5839; goto LABEL_88; } if ( *(_DWORD *)(v15 + 90) != 1 ) { v17 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v47 + 132))(v41); v18 = sub_54DE90(&unk_13253630, v17); v49 = v18; if ( !v18 ) { v11 = 5825; LABEL_8: *((_WORD *)v5 + 2) = v11; if ( sub_4C81E0(&off_849C18, 6) ) goto LABEL_3; goto LABEL_9; } v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 836))(v18); v15 = v46; if ( v19 != v20 ) { if ( !*(_DWORD *)(v46 + 94) && !*(_DWORD *)(v46 + 98) ) { *((_WORD *)v5 + 2) = 5838; goto LABEL_89; } if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2088))(v4) || (v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2088))(v4), v6 = v21 == (*(int (**)(void))(*(_DWORD *)v49 + 2088))(), v15 = v46, !v6) || *(_DWORD *)(v46 + 98) != 1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1360))(v4) == -1 || (v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1360))(v4), v6 = v22 == (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v49 + 1360))(), v15 = v46, !v6) || *(_DWORD *)(v46 + 94) != 1 ) { if ( *(_DWORD *)(v15 + 98) == 1 ) { v8 = 5837; goto LABEL_88; } if ( *(_DWORD *)(v15 + 94) == 1 ) { v8 = 5836; goto LABEL_88; } } } } } v44 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v15 + 110)); if ( v44 == -1 ) { if ( !*(_DWORD *)(v15 + 142) ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 348))(v4, *(_WORD *)v15); goto LABEL_92; } } else { if ( !*(_DWORD *)(v15 + 142) ) goto LABEL_50; } LODWORD(v23) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1076))(v4); if ( *(_DWORD *)(v15 + 142) > v23 ) { *((_WORD *)v5 + 2) = 5831; goto LABEL_89; } LABEL_50: if ( v44 != -1 ) { v45 = sub_587680(v4, v44, (int)&v50); if ( !v45 ) { v8 = 5832; goto LABEL_88; } v43 = v45; v48 = *(_DWORD *)(v45 + 112); if ( !v48 ) { v8 = 5833; goto LABEL_88; } v49 = (*(int (__stdcall **)(int))(*(_DWORD *)v48 + 28))(v45 + 8); v24 = sub_418CB0((int)&dword_14D20890, v44); if ( !v24 ) { v8 = 5830; goto LABEL_88; } v25 = *(_DWORD *)v24; if ( !v25 ) { v8 = 5830; goto LABEL_88; } if ( (unsigned int)v49 < 1 || (unsigned int)v49 > *(_DWORD *)(v25 + 106) ) { *((_WORD *)v5 + 2) = 5833; goto LABEL_89; } if ( !(unsigned __int8)(*(int (__cdecl **)(unsigned int))(*(_DWORD *)v48 + 24))(v41) ) { v26 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 2004))(v4, v42); v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); goto LABEL_83; } if ( v49 == 1 ) { v26 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 2004))(v4, v42); v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); LABEL_83: (*(void (__thiscall **)(int, _DWORD, int, char *))(*(_DWORD *)v26 + 48))(v26, *(_WORD *)(v27 + 4), v45, &v50); goto LABEL_74; } memcpy(&v51, (const void *)v45, 0x6Cu); v28 = *(int (**)(void))(*(_DWORD *)v48 + 40); v53 = *(_WORD *)(v45 + 108); v54 = *(_BYTE *)(v45 + 110); v29 = v28(); if ( v29 ) { v30 = v29 - 1; if ( v30 ) { if ( v30 != 1 ) { *((_WORD *)v5 + 2) = 5830; if ( sub_4C81E0(&off_849C18, 6) ) { v31 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v31 + 12))(v31, v4, &off_849C18); --dword_750CB8; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ : Packet Too Long", 6); --dword_750CB8; } goto LABEL_93; } --v52; } else { LOWORD(v52) = v52 - 1; } } else { LOBYTE(v52) = v52 - 1; } v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, char *, char *))(*(_DWORD *)v32 + 64))( v32, *(_WORD *)(v33 + 4), v45, &v51, &v50, &v50); v15 = v46; } LABEL_74: if ( *(_DWORD *)(v15 + 142) ) { v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v34 + 72))( v34, *(_WORD *)(v35 + 4), *(_DWORD *)(v15 + 142), 0, -1); } v36 = off_849C18; *(_WORD *)off_849C18 = 13437; *((_WORD *)v36 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v36 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v36 + 6) = 0; *((_DWORD *)v36 + 7) = 0; *((_WORD *)v36 + 9) = -1; *((_WORD *)v36 + 16) = *(_WORD *)v15; if ( v44 != -1 ) { *((_WORD *)v36 + 9) = *(_WORD *)(v43 + 8); *(_DWORD *)((char *)v36 + 10) = *(_DWORD *)v43; *(_DWORD *)((char *)v36 + 14) = *(_DWORD *)(v43 + 4); *((_DWORD *)v36 + 5) = v49; } v37 = *(_DWORD *)(v15 + 142); if ( v37 ) { *((_DWORD *)v36 + 6) = v37; *((_DWORD *)v36 + 7) = 0; } *((_WORD *)v36 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4) + 4); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v38 + 4); if ( sub_4C81E0(&off_849C18, 34) ) { v39 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v39); --dword_750CB8; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ : Packet Too Long", 34); --dword_750CB8; } LABEL_93: v56 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132669D4: using guessed type int dword_132669D4; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (00572F00) -------------------------------------------------------- int __thiscall sub_572F00(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@1 int v4; // ebx@1 bool v5; // zf@1 signed __int16 v6; // cx@2 int v7; // eax@5 __int16 v8; // ax@8 int v9; // eax@8 int v10; // eax@10 int v11; // eax@20 char v13; // [sp+10h] [bp-1Ch]@23 int v14; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+28h] [bp-4h]@1 int v16; // [sp+34h] [bp+8h]@8 signed int v17; // [sp+34h] [bp+8h]@14 v2 = this; v14 = (int)"ShineObjectClass::ShinePlayer::so_MH_EffectApply"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_MH_EffectApply"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_MH_EffectApply"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v4 = a2; *(_WORD *)off_849C18 = -29631; *((_WORD *)v3 + 2) = 5824; *((_WORD *)v3 + 1) = a2; v5 = *(_DWORD *)((char *)v2 + 122) == 0; v15 = 0; if ( v5 ) { v6 = 5826; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 304))(v2) ) { v6 = 5828; LABEL_3: *((_WORD *)v3 + 2) = v6; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); goto LABEL_24; } goto LABEL_4; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 312))(v2); v9 = sub_54DE90(&unk_13253630, v8); v16 = v9; if ( !v9 ) { *((_WORD *)v3 + 2) = 5827; if ( sub_4C81E0(&off_849C18, 6) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); goto LABEL_24; } LABEL_4: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_MH_EffectApply : Packet Too Long", 6); goto LABEL_24; } if ( !(dword_132546CC & 1) ) { dword_132546CC |= 1u; dword_132546C0 = 0; dword_132546C8 = 0; atexit(nullsub_139); v9 = v16; } LOWORD(dword_132545C0) = dword_132545C0 & 0x3FF | 0x8C00; word_132545C4 = 0; dword_132546C0 = (int)&dword_132545C0; dword_132546C4 = 256; LOWORD(dword_132545C0) = dword_132545C0 & 0xFC42 | 0x42; HIWORD(dword_132545C0) = v4; switch ( (*(int (__thiscall **)(int, int, char *))(*(_DWORD *)v9 + 352))(v9, v4, (char *)&dword_132545C0 + 2) ) { case 0: v17 = 5824; break; case 1: v17 = 5834; break; case 2: v17 = 5830; break; default: v17 = 5825; break; } *(_WORD *)v3 = -29631; *((_WORD *)v3 + 2) = v17; *((_WORD *)v3 + 1) = v4; if ( sub_4C81E0(&off_849C18, 6) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_MH_EffectApply : Packet Too Long", 6); } if ( v17 == 5824 && (unsigned __int16)word_132545C4 >= 1u ) { sub_4C81E0(&dword_132546C0, 2 * (unsigned __int16)word_132545C4 + 6); sub_4287B0(&v13, &dword_132546C0, 2 * (unsigned __int16)word_132545C4 + 6); LOBYTE(v15) = 1; sub_549B60(v2, (int)&v13, 1); LOBYTE(v15) = 0; sub_428A70(&v13); } LABEL_24: --dword_750CB8; v15 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_MH_EffectApply"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132545C0: using guessed type int dword_132545C0; // 132545C4: using guessed type __int16 word_132545C4; // 132546C0: using guessed type int dword_132546C0; // 132546C4: using guessed type int dword_132546C4; // 132546C8: using guessed type int dword_132546C8; // 132546CC: using guessed type int dword_132546CC; //----- (00573210) -------------------------------------------------------- int __thiscall sub_573210(void *this, int a2, int a3, int a4) { void *v4; // esi@1 bool v5; // zf@1 int v6; // edx@1 void *v7; // ecx@1 char v8; // al@4 __int16 v9; // ax@6 int v10; // eax@6 int v11; // edi@8 int v12; // edi@10 int v13; // eax@10 int v14; // ebx@12 int v15; // ebx@14 int v16; // eax@14 int v17; // ebx@14 int v18; // ebx@15 int v19; // eax@15 int v20; // ecx@20 void (__thiscall *v21)(_DWORD, _DWORD, _DWORD); // edx@20 void *v22; // eax@21 int v23; // eax@23 int v24; // eax@25 int v25; // ST0C_4@25 __time32_t v26; // eax@25 __time32_t v27; // eax@25 __time32_t v28; // eax@25 signed int v30; // [sp-4h] [bp-2Ch]@2 int v31; // [sp-4h] [bp-2Ch]@3 int v32; // [sp+0h] [bp-28h]@0 int v33; // [sp+4h] [bp-24h]@0 int v34; // [sp+14h] [bp-14h]@20 int v35; // [sp+18h] [bp-10h]@6 int v36; // [sp+24h] [bp-4h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)((char *)v4 + 122) == 0; v6 = *(_DWORD *)v4; v36 = 0; v7 = v4; if ( v5 ) { v30 = 4499; LABEL_3: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v7, 35, 19, v30); v36 = -1; v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT"; goto LABEL_28; } v8 = (*(int (__thiscall **)(void *))(v6 + 304))(v4); v6 = *(_DWORD *)v4; v7 = v4; if ( !v8 ) { v30 = 4484; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(v6 + 312))(v4); v10 = sub_54DE90(&unk_13253630, v9); v35 = v10; if ( !v10 ) { v6 = *(_DWORD *)v4; v30 = 4487; v7 = v4; goto LABEL_3; } v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 128))(v10); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == v11 ) { v12 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v13 = *(_DWORD *)v4; if ( v12 ) { v14 = (*(int (__thiscall **)(void *))(v13 + 836))(v4); if ( v14 == (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 836))(v12) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 19, 4493); } else { v15 = *(_DWORD *)v35; v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 836))(v12); v17 = (*(int (__thiscall **)(int, int))(v15 + 220))(v35, v16); (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 19, v17); if ( v17 == 4481 ) { v18 = (*(int (**)(void))(*(_DWORD *)v35 + 336))(); v19 = *(_DWORD *)v4; if ( v18 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(v19 + 368))(v4, 1) != 1 || (*(int (**)(void))(*(_DWORD *)v35 + 672))() != 2 && (*(int (**)(void))(*(_DWORD *)v35 + 672))() != 3 ) { v22 = off_849C18; *(_WORD *)off_849C18 = -29676; *((_BYTE *)v22 + 2) = 1; if ( sub_4C81E0(&off_849C18, 3) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v23 + 12))(v23, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT_REQ : Packet Too Long", 3); } if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, signed int, signed int, signed int))(*(_DWORD *)v12 + 1536))( v12, v18, 6, 9, 10) ) { v24 = (*(int (__thiscall **)(int, _DWORD, _UNKNOWN *))(*(_DWORD *)v12 + 1744))( v12, "cannot out minihouse", &unk_13359E04); v25 = sub_418B40((int)byte_85A2C0, v24 + 2); v26 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v27 = sub_418EA0(v26, v25); v28 = sub_418EA0(v27, v32); sub_418F20(v28, v33); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v12 + 1528))(v12, 1669); } } else { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 400))(v4, 1); v20 = *(_DWORD *)(v18 + 90); v21 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 404); v34 = *(_DWORD *)(v18 + 86); v35 = v20; v21(v4, v18 + 20, &v34); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))( v4, 35, 19, 7620); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v19 + 776))(v4, 35, 19, 4500); } } } v36 = -1; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v13 + 776))(v4, 35, 19, 4497); v36 = -1; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 19, 4488); v36 = -1; } v31 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT"; LABEL_28: --dword_750CB8; return sub_467660((int)&unk_D020420, v31); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00573560) -------------------------------------------------------- int __thiscall sub_573560(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // esi@1 int v6; // ebx@1 bool v7; // zf@1 signed __int16 v8; // cx@2 int v9; // eax@5 __int16 v10; // ax@8 int v11; // eax@8 int v12; // eax@10 int v13; // eax@13 char v15; // [sp+10h] [bp-1Ch]@18 int v16; // [sp+1Ch] [bp-10h]@1 int v17; // [sp+28h] [bp-4h]@1 int v18; // [sp+34h] [bp+8h]@11 v4 = this; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = a2 + 2; *(_WORD *)off_849C18 = -29597; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 2); *((_BYTE *)v5 + 4) = *(_BYTE *)(a2 + 4); *((_BYTE *)v5 + 5) = *(_BYTE *)(a2 + 5); *((_WORD *)v5 + 3) = 5896; v7 = *(_DWORD *)((char *)v4 + 122) == 0; v17 = 0; if ( v7 ) { v8 = 5898; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v8 = 5899; LABEL_3: *((_WORD *)v5 + 3) = v8; if ( sub_4C81E0(&off_849C18, 8) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); goto LABEL_19; } goto LABEL_4; } v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); v11 = sub_54DE90(&unk_13253630, v10); if ( !v11 ) { *((_WORD *)v5 + 3) = 5899; if ( sub_4C81E0(&off_849C18, 8) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); goto LABEL_19; } LABEL_4: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ : Packet Too Long", 8); goto LABEL_19; } v18 = (unsigned __int16)(*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v11 + 728))(v11, v4, v6); *((_WORD *)v5 + 3) = v18; if ( sub_4C81E0(&off_849C18, 8) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v13 + 12))(v13, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ : Packet Too Long", 8); } if ( (_WORD)v18 == 5896 && (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 716))(v4, *(_WORD *)v6) && (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 720))(v4, *(_BYTE *)(v6 + 2)) && (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 724))(v4, *(_BYTE *)(v6 + 3)) ) { *(_DWORD *)v5 = 101476; *((_WORD *)v5 + 2) = *((_WORD *)v4 + 2); *((_WORD *)v5 + 3) = *(_WORD *)v6; *((_BYTE *)v5 + 8) = *(_BYTE *)(v6 + 2); *((_BYTE *)v5 + 9) = *(_BYTE *)(v6 + 3); sub_4287B0(&v15, &off_849C18, 10); LOBYTE(v17) = 1; sub_549B60(v4, (int)&v15, 1); LOBYTE(v17) = 0; sub_428A70(&v15); } LABEL_19: --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005737F0) -------------------------------------------------------- int __thiscall sub_5737F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 bool v6; // zf@1 signed __int16 v7; // cx@2 int v8; // eax@6 __int16 v9; // ax@9 signed __int16 v10; // dx@10 int v11; // eax@12 int v12; // eax@19 int v14; // [sp-4h] [bp-2Ch]@3 char v15; // [sp+Ch] [bp-1Ch]@20 int v16; // [sp+18h] [bp-10h]@1 int v17; // [sp+24h] [bp-4h]@1 v4 = this; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 387484774; v6 = *(_DWORD *)((char *)v4 + 122) == 0; v17 = 0; if ( v6 ) { v7 = 5914; LABEL_3: v14 = 4; goto LABEL_4; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { v7 = 5915; goto LABEL_3; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); if ( !sub_54DE90(&unk_13253630, v9) ) { v10 = 5915; goto LABEL_11; } if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 704))(v4) == -1 ) { v10 = 5916; LABEL_11: *((_WORD *)v5 + 1) = v10; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); goto LABEL_21; } LABEL_5: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ : Packet Too Long", 4); goto LABEL_21; } v14 = 4; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 688))(v4) ) { v7 = 5913; LABEL_4: *((_WORD *)v5 + 1) = v7; if ( sub_4C81E0(&off_849C18, v14) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); goto LABEL_21; } goto LABEL_5; } *((_WORD *)v5 + 1) = 5912; if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ : Packet Too Long", 4); } *(_DWORD *)v5 = 101479; *((_WORD *)v5 + 2) = *((_WORD *)v4 + 2); sub_4287B0(&v15, &off_849C18, 6); LOBYTE(v17) = 1; sub_549B60(v4, (int)&v15, 1); LOBYTE(v17) = 0; sub_428A70(&v15); LABEL_21: --dword_750CB8; v17 = -1; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00573A20) -------------------------------------------------------- char *__thiscall sub_573A20(void *this) { void *v1; // edi@1 int v2; // eax@1 char *result; // eax@2 int v4; // eax@3 bool v5; // zf@3 _BYTE *v6; // esi@3 int v7; // edi@7 int v8; // eax@22 int v9; // eax@25 int v10; // ecx@25 int v11; // ecx@25 int v12; // ST0C_4@25 __time32_t v13; // eax@25 __time32_t v14; // eax@25 char v15; // [sp+4h] [bp-304h]@17 char v16; // [sp+104h] [bp-204h]@5 char v17; // [sp+204h] [bp-104h]@13 unsigned int v18; // [sp+304h] [bp-4h]@1 int v19; // [sp+308h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v1 = this; v2 = *((_WORD *)this + 11942); if ( (unsigned __int16)v2 < 0x80u && (result = (char *)&unk_8655A8 + 136 * v2) != 0 ) { if ( *((_WORD *)this + 2) != *(_WORD *)result ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 1388))(this); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = (int)&byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v9 + 12); v12 = v11; *(_DWORD *)(v11 + 16) = *(_DWORD *)(v9 + 16); *(_BYTE *)(v11 + 20) = 0; v13 = sub_418EA0((__time32_t)byte_133598D8, (int)"MH_InnerInfo Null "); v14 = sub_418EA0(v13, v12); sub_418F20(v14, (int)&unk_13359E04); result = 0; } } else { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 1388))(this); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = byte_7493ED == 0; v6 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v6[20] = 0; if ( !v5 ) { if ( byte_13359B5C ) { sprintf(&v16, "%.255s", "sp_MH_InnerInfo.MHFlag Null return "); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v16, dword_133599D8); } } v7 = *((_WORD *)v1 + 11942); if ( byte_7493ED ) { if ( byte_13359B5C ) { sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fprintf(dword_133599D8, "%d", v7); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v17, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v17, dword_133599D8); } if ( byte_7493ED ) { if ( byte_13359B5C ) { sprintf(&v15, "%.255s", v6); sub_418E40((__time32_t)byte_133598D8); if ( dword_133599D8 ) fputs(&v15, dword_133599D8); } if ( byte_7493ED && byte_13359B5C ) { if ( dword_133599D8 ) { v8 = sub_418E40((__time32_t)byte_133598D8); sub_654AB0(10, (FILE *)v8); fflush(dword_133599D8); fclose(dword_133599D8); dword_133599D8 = 0; } } } } } result = 0; } return result; } // 7493ED: using guessed type char byte_7493ED; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13359B5C: using guessed type char byte_13359B5C; //----- (00573CC0) -------------------------------------------------------- int __stdcall sub_573CC0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::registerObsersver"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::registerObsersver"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::registerObsersver"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00573D20) -------------------------------------------------------- int __thiscall sub_573D20(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting"; dword_750AB8[dword_750CB8++] = -1; switch ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1156))(v1) ) { case 0u: case 1u: case 2u: case 3u: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1480))(v1); break; case 6u: sub_54C400(v1); break; case 4u: case 5u: sub_54C710(v1); break; default: break; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00573E10) -------------------------------------------------------- int __thiscall sub_573E10(int this) { int v1; // esi@1 __int16 v2; // ax@1 int v3; // eax@2 int v4; // edi@2 void (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // edx@7 void *v6; // eax@7 int v7; // ST04_4@7 int v8; // eax@7 char *v9; // ST10_4@7 char v11; // [sp+Ch] [bp-30h]@7 char v12; // [sp+24h] [bp-18h]@7 int v13; // [sp+38h] [bp-4h]@7 v1 = this; v2 = *(_WORD *)(this + 161636); if ( v2 != -1 ) { v3 = sub_54DE90(&unk_13253630, v2); v4 = v3; if ( v3 ) { if ( (unsigned int)sub_402710(v3, v1) <= 0x4E20 ) { if ( !(dword_132546D4 & 1) ) { dword_132546D4 |= 1u; word_132546D0 = 120; atexit(nullsub_140); } if ( !((1 << (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1156))(v1)) & (unsigned __int16)word_132546D0) ) { sub_5D47A0((int)&v11, v4, v1, 0); v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2920); v13 = 0; v5(v4, 60, &v11); v6 = off_849C18; *(_WORD *)off_849C18 = 8309; *((_WORD *)v6 + 1) = *(_WORD *)(v1 + 4); strncpy((char *)v6 + 4, (const char *)(*(_DWORD *)(v1 + 32650) + 198), 0x20u); sub_4287B0(&v12, &off_849C18, 36); v7 = *(_DWORD *)(v1 + 102); LOBYTE(v13) = 1; v8 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v8, v7, 0, 0, (int)&v12, 1, 65535); v9 = (char *)(*(_DWORD *)(v1 + 32650) + 198); *(_WORD *)(v1 + 161636) = -1; strncpy(v9, byte_6A492E, 0x20u); LOBYTE(v13) = 0; sub_428A70(&v12); v13 = -1; sub_5D4580(&v11); } } } } return 0; } // 132546D0: using guessed type __int16 word_132546D0; // 132546D4: using guessed type int dword_132546D4; //----- (00573FB0) -------------------------------------------------------- int __thiscall sub_573FB0(void *this, __int16 a2, unsigned __int16 a3, const char *a4) { void *v4; // ebx@1 int result; // eax@1 char v6; // cl@6 char *v7; // ST10_4@7 void *v8; // eax@7 int v9; // ST04_4@7 int v10; // eax@7 void *v11; // eax@7 int v12; // eax@9 char v13; // [sp+10h] [bp-18h]@7 int v14; // [sp+24h] [bp-4h]@7 v4 = this; result = sub_54DE90(&unk_13253630, a2); if ( result ) { if ( a4 ) { result = sub_402710(result, (int)v4); if ( (unsigned int)result <= 0x4E20 ) { if ( !(dword_132546DC & 1) ) { dword_132546DC |= 1u; word_132546D8 = 120; atexit(nullsub_141); } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1156))(v4); result = (unsigned __int16)word_132546D8; if ( !((1 << v6) & (unsigned __int16)word_132546D8) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2632))(v4); v7 = (char *)(*(_DWORD *)((char *)v4 + 32650) + 198); *((_WORD *)v4 + 80818) = a2; strncpy(v7, a4, 0x20u); sub_42A8B0((int)((char *)v4 + 160796), (int)sub_573E10, 0, 1, a3); v8 = off_849C18; *(_WORD *)off_849C18 = 8308; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); memcpy((char *)v8 + 4, a4, 0x20u); sub_4287B0(&v13, &off_849C18, 36); v9 = *(_DWORD *)((char *)v4 + 102); v14 = 0; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v10, v9, 0, 0, (int)&v13, 1, 65535); v14 = -1; sub_428A70(&v13); v11 = off_849C18; *(_WORD *)off_849C18 = 8263; *((_WORD *)v11 + 1) = a3; if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); result = (*(int (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { result = (int)sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CreateCastingBar : Packet Too Long", 4); } } } } } return result; } // 132546D8: using guessed type __int16 word_132546D8; // 132546DC: using guessed type int dword_132546DC; //----- (00574190) -------------------------------------------------------- int __thiscall sub_574190(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // ecx@1 bool v6; // zf@1 int v7; // eax@2 int v8; // ecx@4 char v10; // [sp+Ch] [bp-28h]@4 int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 v4 = (int)this; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_TUTORIAL_STEP_ACK"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_TUTORIAL_STEP_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_TUTORIAL_STEP_ACK"; dword_750AB8[dword_750CB8] = -1; v5 = 1; ++dword_750CB8; v6 = *(_DWORD *)(v4 + 161756) == 0; v12 = 0; if ( v6 ) { v7 = *(_DWORD *)(v4 + 122); if ( v7 ) { if ( *(_DWORD *)(v7 + 296) ) { sub_5D4B00((int)&v10, v7, v4, 0, *(_BYTE *)(a2 + 2)); v8 = *(_DWORD *)(v4 + 122); LOBYTE(v12) = 1; sub_463090(v8, 60, (int)&v10); LOBYTE(v12) = 0; sub_5D4580(&v10); v5 = 1; } } } dword_750CB8 -= v5; v12 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_TUTORIAL_STEP_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00574280) -------------------------------------------------------- int __thiscall sub_574280(void *this) { int v1; // edi@1 void (*v2)(void); // edx@1 int v3; // eax@1 int v4; // ebx@1 char *v6; // eax@3 int v7; // ecx@4 _BYTE *v8; // ecx@4 void *v9; // esi@6 int v10; // eax@6 int v11; // eax@6 const char *v12; // eax@6 int v13; // esi@6 int v14; // eax@6 char v15; // al@6 int v16; // edx@6 int v17; // eax@7 int v18; // ST10_4@7 __time32_t v19; // eax@7 __time32_t v20; // eax@7 __time32_t v21; // eax@7 char v22; // [sp+10h] [bp-1Ch]@6 __int16 v23; // [sp+1Ch] [bp-10h]@1 int v24; // [sp+28h] [bp-4h]@6 v1 = (int)this; v2 = *(void (**)(void))(*(_DWORD *)this + 688); *((_BYTE *)this + 23888) = 0; v2(); v3 = sub_54DF90(&unk_13253630, (int)&v23, 3); v4 = v3; if ( !v3 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 776))(v1); return 0; } *(_WORD *)(v3 + 4) = v23; v6 = sub_573A20((void *)v1); if ( v6 ) { v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = dword_CFCDD5C; *((_DWORD *)v8 + 1) = dword_CFCDD60; *((_DWORD *)v8 + 2) = dword_CFCDD64; v8[12] = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _BYTE *, char *, char *, _DWORD, _DWORD, char *))(*(_DWORD *)v4 + 120))( v4, v1, v8, v6 + 2, v6 + 23, (unsigned __int8)v6[32], (unsigned __int8)v6[33], v6 + 34) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 92))(v4); return 0; } v9 = off_849C18; *(_WORD *)off_849C18 = -29691; *((_WORD *)v9 + 1) = *(_WORD *)(v1 + 4); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1744))(v1); *(_DWORD *)((char *)v9 + 18) = *(_DWORD *)(v10 + 2); *(_DWORD *)((char *)v9 + 22) = *(_DWORD *)(v10 + 6); *(_DWORD *)((char *)v9 + 26) = *(_DWORD *)(v10 + 10); *(_DWORD *)((char *)v9 + 30) = *(_DWORD *)(v10 + 14); *(_DWORD *)((char *)v9 + 34) = *(_DWORD *)(v10 + 18); v11 = *(_DWORD *)(v1 + 102); *(_DWORD *)((char *)v9 + 38) = *(_DWORD *)v11; *(_DWORD *)((char *)v9 + 42) = *(_DWORD *)(v11 + 4); *((_BYTE *)v9 + 46) = **(_BYTE **)(v1 + 106); *((_WORD *)v9 + 2) = *(_WORD *)(v4 + 4); v12 = (const char *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 64))(v4); strncpy((char *)v9 + 47, v12, 0x14u); *((_BYTE *)v9 + 67) = 0; sub_56C420((void *)v1, (int)((char *)v9 + 6)); sub_4287B0(&v22, &off_849C18, 68); v24 = 0; sub_549B60((void *)v1, (int)&v22, 0); sub_4D1E70(v1); v13 = *(_DWORD *)v1; v14 = (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 340))(v4, 6, 9, 10); v15 = (*(int (__thiscall **)(int, int))(v13 + 1536))(v1, v14); v16 = *(_DWORD *)v1; if ( v15 ) { (*(void (__thiscall **)(int, _DWORD))(v16 + 308))(v1, *(_WORD *)(v4 + 4)); } else { v17 = (*(int (__thiscall **)(int))(v16 + 1744))(v1); v18 = sub_418B40((int)byte_85A2C0, v17 + 2); v19 = sub_418EA0((__time32_t)byte_133598D8, (int)"player ["); v20 = sub_418EA0(v19, v18); v21 = sub_418EA0(v20, (int)"cannot enter minihouse"); sub_418F20(v21, (int)&unk_13359E04); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 92))(v4); } v24 = -1; sub_428A70(&v22); } return 0; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // CFCDD5C: using guessed type int dword_CFCDD5C; // CFCDD60: using guessed type int dword_CFCDD60; // CFCDD64: using guessed type int dword_CFCDD64; //----- (005744F0) -------------------------------------------------------- int __cdecl sub_5744F0(int a1, int a2, int a3) { int v3; // edi@1 int i; // esi@1 int v5; // eax@3 v3 = a1; for ( i = a1 + 24; i != a2; i += 24 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)i + 16))(i, a3) ) { v5 = v3; *(_DWORD *)(v3 + 4) = *(_DWORD *)(i + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(i + 8); *(_DWORD *)(v3 + 12) = *(_DWORD *)(i + 12); *(_DWORD *)(v3 + 16) = *(_DWORD *)(i + 16); v3 += 24; *(_DWORD *)(v5 + 20) = *(_DWORD *)(i + 20); } } return v3; } //----- (00574550) -------------------------------------------------------- int __cdecl sub_574550(int a1, int a2, int a3) { int result; // eax@1 int i; // ecx@1 int v5; // esi@2 int v6; // edx@3 result = a1; for ( i = a1 + 24; i != a2; i += 24 ) { v5 = *(_DWORD *)(i + 4); if ( a3 != v5 ) { v6 = result; *(_DWORD *)(result + 4) = v5; *(_DWORD *)(result + 8) = *(_DWORD *)(i + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(i + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(i + 16); result += 24; *(_DWORD *)(v6 + 20) = *(_DWORD *)(i + 20); } } return result; } //----- (005745A0) -------------------------------------------------------- int __cdecl sub_5745A0(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { int v10; // eax@1 int v11; // ecx@2 int v12; // eax@2 unsigned int v13; // edx@4 int v14; // ecx@6 int v15; // edx@6 int v16; // eax@6 unsigned int v17; // esi@8 int v18; // eax@10 int result; // eax@11 int v20; // [sp+20h] [bp+20h]@2 v10 = a7; if ( a4 != a7 ) { do { v11 = a5; v12 = v10 - 1; v20 = v12; if ( a5 ) v11 = *(_DWORD *)a5; v13 = *(_DWORD *)(v11 + 8); if ( v13 <= v12 ) v12 -= v13; v14 = *(_DWORD *)(*(_DWORD *)(v11 + 4) + 4 * v12); v15 = a8; v16 = a10-- - 1; if ( a8 ) v15 = *(_DWORD *)a8; v17 = *(_DWORD *)(v15 + 8); if ( v17 <= v16 ) v16 -= v17; v18 = *(_DWORD *)(*(_DWORD *)(v15 + 4) + 4 * v16); *(_DWORD *)v18 = *(_DWORD *)v14; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v18 + 8) = *(_DWORD *)(v14 + 8); *(_DWORD *)(v18 + 12) = *(_DWORD *)(v14 + 12); v10 = v20; } while ( a4 != v20 ); } result = a1; *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; if ( !a8 ) goto LABEL_14; if ( *(_DWORD *)a8 ) { *(_DWORD *)a1 = **(_DWORD **)a8; LABEL_14: *(_DWORD *)(a1 + 8) = a10; return result; } *(_DWORD *)(a1 + 8) = a10; return result; } //----- (00574640) -------------------------------------------------------- int __cdecl sub_574640(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { int v10; // eax@1 int i; // ecx@1 int v12; // edi@3 unsigned int v13; // edx@5 int v14; // edx@7 unsigned int v15; // esi@9 int v16; // ecx@11 int v17; // eax@11 int result; // eax@12 v10 = a4; for ( i = a10; v10 != a7; a4 = v10 ) { if ( a2 ) v12 = *(_DWORD *)a2; else v12 = 0; v13 = *(_DWORD *)(v12 + 8); if ( v13 <= v10 ) v10 -= v13; v14 = a8; if ( a8 ) v14 = *(_DWORD *)a8; v15 = *(_DWORD *)(v14 + 8); if ( v15 <= i ) i -= v15; v16 = *(_DWORD *)(*(_DWORD *)(v14 + 4) + 4 * i); v17 = *(_DWORD *)(*(_DWORD *)(v12 + 4) + 4 * v10); *(_DWORD *)v16 = *(_DWORD *)v17; *(_DWORD *)(v16 + 4) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(v17 + 8); *(_DWORD *)(v16 + 12) = *(_DWORD *)(v17 + 12); v10 = a4 + 1; i = a10++ + 1; } result = a1; *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = i; if ( a8 ) { if ( *(_DWORD *)a8 ) *(_DWORD *)a1 = **(_DWORD **)a8; } return result; } //----- (005746E0) -------------------------------------------------------- int __thiscall sub_5746E0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // eax@8 bool v6; // al@10 int v7; // ecx@10 int v8; // ST04_4@13 int v9; // eax@13 signed int v10; // edi@15 int v11; // edx@18 int v12; // ecx@18 char v13; // al@21 char v14; // al@23 int v15; // eax@25 signed int v17; // [sp-8h] [bp-F4h]@7 signed int v18; // [sp-8h] [bp-F4h]@19 unsigned int v19; // [sp-4h] [bp-F0h]@1 char v20; // [sp+10h] [bp-DCh]@16 char v21; // [sp+30h] [bp-BCh]@23 char v22; // [sp+44h] [bp-A8h]@23 char v23; // [sp+45h] [bp-A7h]@23 char v24; // [sp+4Dh] [bp-9Fh]@23 char v25; // [sp+4Eh] [bp-9Eh]@23 char v26; // [sp+4Fh] [bp-9Dh]@23 char v27; // [sp+50h] [bp-9Ch]@23 char v28; // [sp+B4h] [bp-38h]@23 char v29; // [sp+B8h] [bp-34h]@16 unsigned int v30; // [sp+DCh] [bp-10h]@1 int v31; // [sp+E8h] [bp-4h]@1 int v32; // [sp+ECh] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v19 = (unsigned int)&v32 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; if ( !(dword_132546E4 & 1) ) { dword_132546E4 |= 1u; word_132546E0 = 6; atexit(nullsub_133); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132546E0) || *(_BYTE *)(v4 + 7888) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) ) goto LABEL_33; if ( !*(_DWORD *)(v4 + 122) ) { v17 = 4499; LABEL_28: v7 = v4; goto LABEL_29; } v5 = sub_59A6B0((int)"MiniRoomSkill"); if ( !v5 ) { v17 = 4506; goto LABEL_28; } v6 = sub_445FC0((void *)(v4 + 84388), **((_WORD **)v5 + 1)); v7 = v4; if ( !v6 ) { v17 = 4506; LABEL_29: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v7, 35, 4, v17, v19); v31 = -1; goto LABEL_30; } if ( sub_548D10(v4) ) { LABEL_33: v17 = 4482; goto LABEL_28; } v8 = *(_DWORD *)(v4 + 102); v9 = sub_427BD0(&unk_13253E80); if ( !sub_549C70((void *)v4, v9, v8, (_UNKNOWN *)0x190, 0, (int)sub_58AF00, 0, 0, 0, 0, 65535) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 35, 4, 4505, v19); v31 = -1; goto LABEL_30; } v10 = 1; do { sprintf(&v29, "MH_Zone%d%c", v10, 0); sub_418A80(&v20, &v29); if ( sub_427B70(*(_DWORD *)(v4 + 122), (int)&v20, **(_DWORD **)(v4 + 102), *(_DWORD *)(*(_DWORD *)(v4 + 102) + 4)) ) break; ++v10; } while ( v10 < 10 ); v11 = *(_DWORD *)v4; v12 = v4; if ( v10 == 10 ) { v18 = 4501; LABEL_20: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(v11 + 776))(v12, 35, 4, v18, v19); v31 = -1; goto LABEL_30; } v13 = (*(int (__thiscall **)(int))(v11 + 304))(v4); v11 = *(_DWORD *)v4; v12 = v4; if ( v13 ) { v18 = 4485; goto LABEL_20; } (*(void (__thiscall **)(int, unsigned int))(v11 + 2256))(v4, v19); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2632))(v4); v25 = *(_BYTE *)(a2 + 2); strncpy(&v23, (const char *)(a2 + 3), 8u); v24 = 0; strncpy(&v21, (const char *)(a2 + 12), 0x14u); v14 = *(_BYTE *)(a2 + 33); v22 = 0; v26 = v14; strncpy(&v27, (const char *)(a2 + 34), 0x64u); v28 = 0; *(_DWORD *)off_849C18 = &unk_13882047; if ( sub_4C81E0(&off_849C18, 4) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v15 + 12))(v15, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ : Packet Too Long", 4); } *(_BYTE *)(v4 + 23888) = 1; sub_42A8B0(v4 + 160796, (int)sub_574280, 0, 1, 5000); *(_WORD *)(v4 + 23884) = sub_56EA60((int)&unk_8655A8, *(_WORD *)(v4 + 4), &v21); v31 = -1; LABEL_30: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 132546E0: using guessed type __int16 word_132546E0; // 132546E4: using guessed type int dword_132546E4; //----- (00574A60) -------------------------------------------------------- bool __thiscall sub_574A60(void *this, int a2) { void *v2; // esi@1 void *v3; // ebx@1 int v4; // edi@1 int v5; // esi@1 bool v6; // zf@1 bool v7; // bl@5 char v9; // [sp+10h] [bp-24h]@1 char v10; // [sp+20h] [bp-14h]@5 int v11; // [sp+30h] [bp-4h]@1 v2 = this; v3 = sub_5C99A0(&v9, a2, 0); v4 = *((_DWORD *)v2 + 40313); v5 = *((_DWORD *)v2 + 40312); v11 = 0; v6 = v5 == v4; if ( v5 != v4 ) { do { if ( (unsigned __int8)(*(int (__thiscall **)(int, void *))(*(_DWORD *)v5 + 16))(v5, v3) ) break; v5 += 24; } while ( v5 != v4 ); v6 = v5 == v4; } v7 = !v6; v11 = 1; nullsub_2(&v10); v11 = -1; sub_5C9980(&v9); return v7; } //----- (00574B00) -------------------------------------------------------- int __thiscall sub_574B00(int this, int a2) { int v2; // edx@1 int result; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 12); result = a2; v4 = *(_DWORD *)this; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)a2 = v4; *(_DWORD *)(a2 + 8) = v2; return result; } //----- (00574B20) -------------------------------------------------------- int __thiscall sub_574B20(int this, int a2) { int v2; // edx@1 int result; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 12) + *(_DWORD *)(this + 16); result = a2; v4 = *(_DWORD *)this; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)a2 = v4; *(_DWORD *)(a2 + 8) = v2; return result; } //----- (00574B40) -------------------------------------------------------- void __thiscall sub_574B40(int this, unsigned int a2) { int v2; // ebx@1 unsigned int v3; // ecx@1 unsigned int v4; // edi@1 unsigned int v5; // eax@3 int v6; // esi@8 int v7; // eax@8 int v8; // ecx@11 signed int v9; // esi@11 void *v10; // eax@11 const void *v11; // ecx@11 void *v12; // edx@12 unsigned int v13; // ecx@14 void *v14; // edi@15 int v15; // eax@16 size_t v16; // esi@16 void *v17; // eax@16 int (__thiscall **v18)(void *, char); // [sp+8h] [bp-18h]@23 size_t v19; // [sp+14h] [bp-Ch]@11 unsigned int v20; // [sp+18h] [bp-8h]@8 void *v21; // [sp+1Ch] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)(this + 8); v4 = a2; if ( (unsigned int)((char *)&unk_FFFFFFF - v3) < a2 ) sub_65178B((int)"deque too long"); v5 = v3 >> 1; if ( v3 >> 1 < 8 ) v5 = 8; if ( a2 < v5 && v3 <= (unsigned int)((char *)&unk_FFFFFFF - v5) ) { a2 = v5; v4 = v5; } v6 = *(_DWORD *)(v2 + 12); v7 = v3 + v4; v20 = *(_DWORD *)(v2 + 12); v21 = 0; if ( v3 + v4 ) { if ( (unsigned int)v7 > 0x3FFFFFFF || (v21 = (void *)operator new(4 * v7)) == 0 ) { a2 = 0; std::exception::exception(&a2); v18 = &off_6A1FD4; _CxxThrowException(&v18, &unk_733E50); } } v8 = *(_DWORD *)(v2 + 4); v9 = 4 * v6; v19 = 4 * ((v8 + 4 * *(_DWORD *)(v2 + 8) - (v9 + v8)) >> 2); v10 = (char *)memmove_0((char *)v21 + v9, (const void *)(v9 + v8), v19) + v19; v11 = *(const void **)(v2 + 4); if ( v20 > v4 ) { memmove_0(v10, v11, 4 * ((signed int)(4 * v4) >> 2)); v15 = *(_DWORD *)(v2 + 4); v16 = 4 * ((signed int)(v15 + v9 - (v15 + 4 * v4)) >> 2); v17 = memmove_0(v21, (const void *)(v15 + 4 * v4), v16); if ( !v4 ) goto LABEL_19; v13 = v4; v14 = (char *)v17 + v16; goto LABEL_18; } v19 = 4 * (v9 >> 2); v12 = (char *)memmove_0(v10, v11, v19) + v19; if ( v4 != v20 ) { memset(v12, 0, 4 * (v4 - v20)); v4 = a2; } v13 = v20; if ( v20 ) { v14 = v21; LABEL_18: memset(v14, 0, 4 * v13); v4 = a2; } LABEL_19: if ( *(_DWORD *)(v2 + 4) ) operator delete(*(void **)(v2 + 4)); *(_DWORD *)(v2 + 8) += v4; *(_DWORD *)(v2 + 4) = v21; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00574CD0) -------------------------------------------------------- int __thiscall sub_574CD0(void *this, int a2, int a3) { int v3; // edx@1 int v4; // eax@2 int v5; // ecx@4 int result; // eax@4 int v7; // edx@5 v3 = 0; if ( *(_DWORD *)this ) { v4 = **(_DWORD **)this; if ( v4 ) v3 = *(_DWORD *)v4; } v5 = a3 + *((_DWORD *)this + 2); result = a2; *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = v5; if ( v3 ) { v7 = *(_DWORD *)v3; if ( v7 ) *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (00574D10) -------------------------------------------------------- int __thiscall sub_574D10(void *this, int a2, int a3, int a4, int a5) { int result; // eax@1 result = a2; *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; if ( this ) { *(_DWORD *)a2 = *(_DWORD *)this; *(_DWORD *)(a2 + 8) = a5; } else { *(_DWORD *)(a2 + 8) = a5; } return result; } //----- (00574D40) -------------------------------------------------------- int __cdecl sub_574D40(int a1, int a2, int a3, int a4) { int v4; // eax@1 int v5; // esi@1 int result; // eax@6 v4 = a3; v5 = a2; if ( a2 != a3 ) { do { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 16))(v5, a4) ) break; v5 += 24; } while ( v5 != a3 ); v4 = a3; } if ( v5 == v4 ) { result = a1; *(_DWORD *)a1 = v5; } else { *(_DWORD *)a1 = sub_5744F0(v5, v4, a4); result = a1; } return result; } //----- (00574DA0) -------------------------------------------------------- int __cdecl sub_574DA0(int a1, int **a2, int a3, int a4, int **a5, int a6, int a7, int **a8, int a9, int a10) { int v11; // [sp-28h] [bp-30h]@7 int v12; // [sp-24h] [bp-2Ch]@7 int v13; // [sp-1Ch] [bp-24h]@4 int v14; // [sp-18h] [bp-20h]@4 int v15; // [sp-14h] [bp-1Ch]@7 int v16; // [sp-10h] [bp-18h]@1 int v17; // [sp-Ch] [bp-14h]@1 int v18; // [sp-8h] [bp-10h]@4 int v19; // [sp-4h] [bp-Ch]@1 int *v20; // [sp+4h] [bp-4h]@1 v19 = a1; v16 = 0; v17 = 0; v20 = &v16; if ( a8 && *a8 ) v16 = **a8; v18 = a10; v13 = 0; v14 = 0; v20 = &v13; if ( a5 && *a5 ) v13 = **a5; v15 = a7; v11 = 0; v12 = 0; v20 = &v11; if ( a2 && *a2 ) v11 = **a2; sub_5745A0(a1, v11, v12, a4, v13, v14, v15, v16, v17, v18); return a1; } //----- (00574E30) -------------------------------------------------------- int __cdecl sub_574E30(int a1, int **a2, int a3, int a4, int **a5, int a6, int a7, int **a8, int a9, int a10) { int v11; // [sp-28h] [bp-30h]@7 int v12; // [sp-24h] [bp-2Ch]@7 int v13; // [sp-1Ch] [bp-24h]@4 int v14; // [sp-18h] [bp-20h]@4 int v15; // [sp-14h] [bp-1Ch]@7 int v16; // [sp-10h] [bp-18h]@1 int v17; // [sp-Ch] [bp-14h]@1 int v18; // [sp-8h] [bp-10h]@4 int v19; // [sp-4h] [bp-Ch]@1 int *v20; // [sp+4h] [bp-4h]@1 v19 = a1; v16 = 0; v17 = 0; v20 = &v16; if ( a8 && *a8 ) v16 = **a8; v18 = a10; v13 = 0; v14 = 0; v20 = &v13; if ( a5 && *a5 ) v13 = **a5; v15 = a7; v11 = 0; v12 = 0; v20 = &v11; if ( a2 && *a2 ) v11 = **a2; sub_574640(a1, v11, v12, a4, v13, v14, v15, v16, v17, v18); return a1; } //----- (00574EC0) -------------------------------------------------------- void __cdecl sub_574EC0(int a1, int a2) { int v2; // edi@1 int v3; // eax@2 int v4; // [sp+Ch] [bp-8h]@0 v2 = a2; if ( a2 > 0 ) { v3 = a1; do { LOBYTE(v4) = 0; if ( v3 ) { *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = v4; *(_DWORD *)(v3 + 12) = 0; } --v2; v3 += 16; } while ( v2 > 0 ); } } //----- (00574FA0) -------------------------------------------------------- int __thiscall sub_574FA0(int this, int a2) { int v2; // eax@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@3 unsigned int v6; // edx@3 int result; // eax@4 char v8; // [sp+0h] [bp-18h]@1 char v9; // [sp+Ch] [bp-Ch]@1 v2 = sub_574B00(this, (int)&v8); v3 = sub_574CD0((void *)v2, (int)&v9, a2); v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 ) v4 = *(_DWORD *)v4; v5 = *(_DWORD *)(v3 + 8); v6 = *(_DWORD *)(v4 + 8); if ( v6 > v5 ) result = *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4 * v5); else result = *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4 * (v5 - v6)); return result; } //----- (00574FF0) -------------------------------------------------------- int __thiscall sub_574FF0(void *this, int a2, int a3, int a4, char a5) { void *v5; // edi@1 int v7; // [sp+Ch] [bp-20h]@1 char v8; // [sp+14h] [bp-18h]@1 int v9; // [sp+1Ch] [bp-10h]@1 int v10; // [sp+28h] [bp-4h]@1 v5 = this; v9 = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack"; sub_4675D0((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack"); dword_7508B8[dword_750CB8] = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v8 = a5; loc_574F00(v5, &v7); --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005750E0) -------------------------------------------------------- int __thiscall sub_5750E0(void *this) { int v1; // esi@1 int v2; // edi@1 int v3; // eax@2 int v4; // ecx@2 int v5; // ebx@2 int v6; // edx@2 int v7; // eax@2 int v8; // eax@5 int v9; // edi@10 unsigned int v10; // eax@10 int v11; // eax@13 int v12; // eax@15 int v14; // [sp+14h] [bp-34h]@2 int v15; // [sp+18h] [bp-30h]@2 int v16; // [sp+1Ch] [bp-2Ch]@2 int (__thiscall **v17)(void *, char); // [sp+20h] [bp-28h]@21 int v18; // [sp+2Ch] [bp-1Ch]@1 int v19; // [sp+30h] [bp-18h]@20 int v20; // [sp+34h] [bp-14h]@1 int i; // [sp+38h] [bp-10h]@1 int v22; // [sp+44h] [bp-4h]@1 v1 = (int)this; v18 = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear_PassHitTime"; sub_4675D0((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear_PassHitTime"); dword_7508B8[dword_750CB8] = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear_PassHitTime"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 16); v22 = 0; v20 = v2; for ( i = 0; i < v2; ++i ) { v3 = sub_574FA0(v1, 0); v4 = *(_DWORD *)(v3 + 8); v5 = *(_DWORD *)v3; v14 = *(_DWORD *)(v3 + 4); v6 = *(_DWORD *)(v3 + 12); v7 = *(_DWORD *)(v1 + 16); v15 = v4; v16 = v6; if ( v7 ) { ++*(_DWORD *)(v1 + 12); if ( *(_DWORD *)(v1 + 8) <= *(_DWORD *)(v1 + 12) ) *(_DWORD *)(v1 + 12) = 0; v8 = v7 - 1; *(_DWORD *)(v1 + 16) = v8; if ( !v8 ) *(_DWORD *)(v1 + 12) = 0; } if ( v5 - v6 < (unsigned int)dword_14D129E8 ) { if ( *(_DWORD *)(v1 + 8) <= (unsigned int)(*(_DWORD *)(v1 + 16) + 1) ) sub_574B40(v1, 1u); v9 = *(_DWORD *)(v1 + 16) + *(_DWORD *)(v1 + 12); v10 = *(_DWORD *)(v1 + 8); if ( v10 <= v9 ) v9 -= v10; if ( !*(_DWORD *)(*(_DWORD *)(v1 + 4) + 4 * v9) ) { v11 = operator new(0x10u); if ( !v11 ) { v19 = 0; std::exception::exception(&v19); v17 = &off_6A1FD4; _CxxThrowException(&v17, &unk_733E50); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4 * v9) = v11; } v12 = *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4 * v9); if ( v12 ) { *(_DWORD *)v12 = v5; *(_DWORD *)(v12 + 4) = v14; *(_DWORD *)(v12 + 8) = v15; *(_DWORD *)(v12 + 12) = v16; } ++*(_DWORD *)(v1 + 16); v2 = v20; } } --dword_750CB8; v22 = -1; return sub_467660((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear_PassHitTime"); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00575270) -------------------------------------------------------- int __thiscall sub_575270(void *this, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // eax@4 int v5; // ecx@4 unsigned int v6; // eax@6 unsigned int v7; // edx@6 int v8; // eax@8 int v9; // ebx@8 int v10; // eax@11 int v11; // esi@16 signed int v12; // edx@16 int v14; // [sp-4h] [bp-4Ch]@2 int v15; // [sp+18h] [bp-30h]@8 char v16; // [sp+20h] [bp-28h]@4 char v17; // [sp+2Ch] [bp-1Ch]@4 int v18; // [sp+38h] [bp-10h]@1 int v19; // [sp+44h] [bp-4h]@1 v2 = (int)this; v18 = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine"; sub_4675D0((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine"); dword_7508B8[dword_750CB8] = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( a2 && *(_DWORD *)(v2 + 16) ) { v3 = sub_574B00(v2, (int)&v16); v4 = sub_574CD0((void *)v3, (int)&v17, 0); v5 = *(_DWORD *)v4; if ( *(_DWORD *)v4 ) v5 = *(_DWORD *)v5; v6 = *(_DWORD *)(v4 + 8); v7 = *(_DWORD *)(v5 + 8); if ( v7 <= v6 ) v6 -= v7; v8 = *(_DWORD *)(*(_DWORD *)(v5 + 4) + 4 * v6); v9 = *(_DWORD *)(v8 + 4); v15 = *(_DWORD *)(v8 + 8); if ( *(_DWORD *)v8 <= (unsigned int)dword_14D129E8 ) { ++*(_DWORD *)(v2 + 12); if ( *(_DWORD *)(v2 + 8) <= *(_DWORD *)(v2 + 12) ) *(_DWORD *)(v2 + 12) = 0; v10 = *(_DWORD *)(v2 + 16) - 1; *(_DWORD *)(v2 + 16) = v10; if ( !v10 ) *(_DWORD *)(v2 + 12) = 0; if ( v9 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 768))(v9) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 40))(v9) ) { v11 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 1296))(a2, v9); v12 = (signed int)((unsigned __int64)(1200 * ((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1740))(v9) + v11) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; if ( sub_402710(a2, v9) <= (signed int)((v12 + ((unsigned int)v12 >> 31)) * (v12 + ((unsigned int)v12 >> 31))) ) { *(_BYTE *)(a2 + 7897) = v15; sub_42F450((void *)a2); } else { (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 3792))(a2); } } } --dword_750CB8; v14 = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine"; v19 = -1; } else { --dword_750CB8; v19 = -1; v14 = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine"; } return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00575420) -------------------------------------------------------- int __thiscall sub_575420(int this, int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@2 int v5; // edx@3 unsigned int v6; // eax@5 unsigned int v7; // ecx@5 int v8; // eax@8 int v9; // eax@8 int v10; // ecx@8 unsigned int v11; // eax@10 unsigned int v12; // edx@10 int v13; // eax@12 int result; // eax@13 char v15; // [sp+4h] [bp-18h]@2 char v16; // [sp+10h] [bp-Ch]@2 v2 = this; if ( !*(_DWORD *)(this + 16) ) goto LABEL_17; v3 = sub_574B00(this, (int)&v15); v4 = sub_574CD0((void *)v3, (int)&v16, 0); if ( *(_DWORD *)v4 ) v5 = **(_DWORD **)v4; else v5 = 0; v6 = *(_DWORD *)(v4 + 8); v7 = *(_DWORD *)(v5 + 8); if ( v7 <= v6 ) v6 -= v7; if ( !*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v5 + 4) + 4 * v6) + 4) ) goto LABEL_17; v8 = sub_574B00(v2, (int)&v16); v9 = sub_574CD0((void *)v8, (int)&v15, 0); v10 = *(_DWORD *)v9; if ( *(_DWORD *)v9 ) v10 = *(_DWORD *)v10; v11 = *(_DWORD *)(v9 + 8); v12 = *(_DWORD *)(v10 + 8); if ( v12 <= v11 ) v11 -= v12; v13 = (*(int (**)(void))(**(_DWORD **)(*(_DWORD *)(*(_DWORD *)(v10 + 4) + 4 * v11) + 4) + 836))(); if ( v13 == a2 ) result = v13 != -1; else LABEL_17: result = 0; return result; } //----- (005754D0) -------------------------------------------------------- int __thiscall sub_5754D0(int this) { int result; // eax@1 result = *(_DWORD *)(this + 16); if ( result ) { ++*(_DWORD *)(this + 12); if ( *(_DWORD *)(this + 8) <= *(_DWORD *)(this + 12) ) *(_DWORD *)(this + 12) = 0; --result; *(_DWORD *)(this + 16) = result; if ( !result ) *(_DWORD *)(this + 12) = 0; } return result; } //----- (00575500) -------------------------------------------------------- int __thiscall sub_575500(void *this, int a2, int **a3, int a4, int a5, int **a6, int a7, int a8) { int v8; // esi@1 int v9; // eax@7 int v10; // edi@7 int v11; // ebx@7 int v12; // eax@7 bool v13; // zf@7 int v14; // ecx@15 int v15; // eax@30 int v16; // eax@36 int **v18; // [sp-24h] [bp-5Ch]@14 int v19; // [sp-20h] [bp-58h]@14 int v20; // [sp-1Ch] [bp-54h]@14 int **v21; // [sp-18h] [bp-50h]@11 int v22; // [sp-14h] [bp-4Ch]@11 int v23; // [sp-10h] [bp-48h]@14 int v24; // [sp-Ch] [bp-44h]@1 int v25; // [sp-8h] [bp-40h]@1 int v26; // [sp-4h] [bp-3Ch]@11 char v27; // [sp+Ch] [bp-2Ch]@7 int ****v28; // [sp+18h] [bp-20h]@7 int v29; // [sp+20h] [bp-18h]@7 int **v30; // [sp+24h] [bp-14h]@4 int v31; // [sp+2Ch] [bp-Ch]@7 void *v32; // [sp+30h] [bp-8h]@7 int v33; // [sp+34h] [bp-4h]@1 v8 = (int)this; v24 = 0; v25 = 0; v33 = (int)&v24; if ( a3 && *a3 ) v24 = **a3; sub_574D10(this, (int)&v30, v24, v25, a5); v24 = 0; v25 = 0; v33 = (int)&v24; if ( a6 && *a6 ) v24 = **a6; sub_574D10((void *)v8, (int)&v28, v24, v25, a8); v9 = sub_574B00(v8, (int)&v27); v10 = v29; v33 = v31 - *(_DWORD *)(v9 + 8); v11 = v29 - v31; v12 = sub_574B20(v8, (int)&v27); v13 = v33 >= (unsigned int)(*(_DWORD *)(v12 + 8) - v10); v32 = &v24; v24 = 0; v25 = 0; if ( v13 ) { if ( v30 && *v30 ) v24 = **v30; v26 = v31; v32 = &v21; sub_574B20(v8, (int)&v21); v18 = 0; v19 = 0; v32 = &v18; if ( v28 && *v28 ) v18 = **v28; sub_574E30((int)&v27, v18, v19, v29, v21, v22, v23, (int **)v24, v25, v26); if ( (unsigned int)v11 > 0 ) { v15 = *(_DWORD *)(v8 + 16); do { if ( v15 ) { --v15; if ( !v15 ) *(_DWORD *)(v8 + 12) = 0; } --v11; } while ( v11 ); *(_DWORD *)(v8 + 16) = v15; } } else { if ( v28 && *v28 ) v24 = (int)**v28; v26 = v29; v21 = 0; v22 = 0; v32 = &v21; if ( v30 && *v30 ) v21 = (int **)**v30; v23 = v31; v32 = &v18; sub_574B00(v8, (int)&v18); sub_574DA0((int)&v27, v18, v19, v20, v21, v22, v23, (int **)v24, v25, v26); if ( (unsigned int)v11 > 0 ) { v14 = *(_DWORD *)(v8 + 16); do { if ( v14 ) { ++*(_DWORD *)(v8 + 12); if ( *(_DWORD *)(v8 + 8) <= *(_DWORD *)(v8 + 12) ) *(_DWORD *)(v8 + 12) = 0; --v14; if ( !v14 ) *(_DWORD *)(v8 + 12) = 0; } --v11; } while ( v11 ); *(_DWORD *)(v8 + 16) = v14; } } v26 = v33; v25 = a2; v16 = sub_574B00(v8, (int)&v27); sub_574CD0((void *)v16, v25, v26); return a2; } //----- (00575810) -------------------------------------------------------- int __thiscall sub_575810(int this, int a2) { int v2; // edi@1 int v3; // esi@1 int result; // eax@1 int v5; // ebx@2 int v6; // esi@2 char v7; // [sp+8h] [bp-4h]@1 int v8; // [sp+14h] [bp+8h]@2 v2 = this; v3 = *(_DWORD *)(this + 161252); result = *(_DWORD *)sub_574D40((int)&v7, *(_DWORD *)(this + 161248), *(_DWORD *)(this + 161252), a2); if ( result != v3 ) { result = sub_4405F0(v3, *(_DWORD *)(v2 + 161252), result); v5 = *(_DWORD *)(v2 + 161252); v8 = result; v6 = result; if ( result != v5 ) { do { (**(void (__thiscall ***)(_DWORD, _DWORD))v6)(v6, 0); v6 += 24; } while ( v6 != v5 ); result = v8; } *(_DWORD *)(v2 + 161252) = result; } return result; } //----- (00575890) -------------------------------------------------------- int __thiscall sub_575890(int this, int a2) { int v2; // edi@1 int v3; // esi@1 int result; // eax@1 int v5; // eax@8 int v6; // edi@8 int v7; // ebx@8 int i; // esi@8 int v9; // [sp+8h] [bp-4h]@1 v2 = this; v3 = *(_DWORD *)(this + 161252); result = *(_DWORD *)(this + 161248); v9 = this; if ( result != v3 ) { while ( a2 != *(_DWORD *)(result + 4) ) { result += 24; if ( result == v3 ) goto LABEL_7; } if ( result == v3 ) return result; result = sub_574550(result, v3, a2); LABEL_7: if ( result != v3 ) { v5 = sub_4405F0(v3, *(_DWORD *)(v2 + 161252), result); v6 = *(_DWORD *)(v2 + 161252); v7 = v5; for ( i = v5; i != v6; i += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); result = v9; *(_DWORD *)(v9 + 161252) = v7; } } return result; } //----- (00575920) -------------------------------------------------------- void __thiscall sub_575920(int this, int a2, int a3, int a4) { int v4; // esi@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 int v11; // [sp+8h] [bp-4h]@1 v4 = this; v5 = *(_DWORD *)(this + 161248); v11 = this; if ( v5 != *(_DWORD *)(this + 161252) ) { do { if ( (*(int (__thiscall **)(int, _DWORD, int, int, int, int, _DWORD, _DWORD))(*(_DWORD *)v5 + 4))( v5, 0, v4, a2, a3, a4, 0, 0) & 2 ) { v6 = *(_DWORD *)(v4 + 161252); 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 + 161252); for ( i = v9 - 24; i != v9; i += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); *(_DWORD *)(v11 + 161252) -= 24; v4 = v11; } else { v5 += 24; } } while ( v5 != *(_DWORD *)(v4 + 161252) ); } } //----- (00575B40) -------------------------------------------------------- void __thiscall sub_575B40(int this) { int v1; // esi@1 v1 = this; sub_57BD80(this); operator delete(*(void **)v1); *(_DWORD *)v1 = 0; } //----- (00575B60) -------------------------------------------------------- int __thiscall sub_575B60(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"); dword_7508B8[dword_750CB8] = (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"; dword_750AB8[dword_750CB8++] = -1; loc_5756E0(v1, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00575C00) -------------------------------------------------------- int __thiscall sub_575C00(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4427C0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6A8FAC; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(a2 + 20); } } else { v4 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 2; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4427C0(v2, 1); v6 = *(_DWORD *)v2 + 24 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6A8FAC; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v6 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v6 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(v6 + 20); *(_DWORD *)(v2 + 4) += 24; return result; } } *(_DWORD *)(v2 + 4) += 24; return result; } // 6A8FAC: using guessed type int (__thiscall *off_6A8FAC)(void *, char); //----- (00575CC0) -------------------------------------------------------- int __thiscall sub_575CC0(void *this, unsigned int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::registerObsersver"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::registerObsersver"; dword_750AB8[dword_750CB8++] = -1; sub_5C9AC0(a2); sub_575C00((int)((char *)v2 + 161248), a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::registerObsersver"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00575D70) -------------------------------------------------------- int __thiscall sub_575D70(int this) { int v1; // esi@1 v1 = this; sub_5B73B0(this, (int)&unk_1325D028); return v1; } //----- (00575DA0) -------------------------------------------------------- int __stdcall sub_575DA0(int a1, int a2, int a3, int a4) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_QuestCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_QuestCheck"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_QuestCheck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00575DF0) -------------------------------------------------------- int __thiscall sub_575DF0(void *this, void (__thiscall *a2)(_DWORD, _DWORD), int a3, int a4, int a5) { void *v5; // esi@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_QuestCheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_QuestCheck"; dword_750AB8[dword_750CB8++] = -1; a2((char *)v5 + 82048, a3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_QuestCheck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00575EA0) -------------------------------------------------------- int __thiscall sub_575EA0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineQuestDiary::sqd_MobDead"); dword_7508B8[dword_750CB8] = (int)"ShineQuestDiary::sqd_MobDead"; dword_750AB8[dword_750CB8++] = -1; sub_5BE260(v4, a3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineQuestDiary::sqd_MobDead"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00575F50) -------------------------------------------------------- int __stdcall sub_575F50(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_ItemLotChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_ply_ItemLotChange"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_ply_ItemLotChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00575FA0) -------------------------------------------------------- int __thiscall sub_575FA0(void *this, int a2, int a3) { void *v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD); // eax@1 int v5; // esi@1 int v6; // eax@1 void (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // eax@2 int v9; // [sp-4h] [bp-20h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotChange"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotChange"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v3 + 20512) + 104); v5 = (int)((char *)v3 + 82048); v6 = (unsigned __int16)v4(v5, a2); if ( a3 > 0 ) { v9 = v6; v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12); LABEL_5: v7(v5, a2, v9); goto LABEL_6; } if ( a3 < 0 ) { v9 = v6; v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 16); goto LABEL_5; } LABEL_6: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemLotChange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576070) -------------------------------------------------------- int __thiscall sub_576070(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55B830(v4) ) { *((_DWORD *)v4 + 5955) = dword_14D129E8; sub_5BCA70((char *)v4 + 82048, a2 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00576140) -------------------------------------------------------- int __stdcall sub_576140(int a1, int a2) { int v2; // esi@1 void *v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_SET_INFO_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_QUEST_DB_SET_INFO_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2) ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5BCC20(v3, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_SET_INFO_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576240) -------------------------------------------------------- int __stdcall sub_576240(int a1, int a2) { int v2; // esi@1 void *v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_CLEAR_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_QUEST_DB_CLEAR_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2) ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5BCFE0(v3, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_CLEAR_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576340) -------------------------------------------------------- int __stdcall sub_576340(int a1, int a2) { int v2; // esi@1 void *v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2) ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5B8980(v3, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576440) -------------------------------------------------------- int __stdcall sub_576440(int a1, int a2) { int v2; // esi@1 void *v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2) ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5BE050(v3, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576540) -------------------------------------------------------- int __stdcall sub_576540(int a1, int a2) { int v2; // esi@1 void *v3; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2) ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5BD4D0(v3, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576640) -------------------------------------------------------- int __thiscall sub_576640(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ecx@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55B830(v4) ) { v5 = (char *)v4 + 82048; if ( dword_14D129E8 >= (unsigned int)(*((_DWORD *)v4 + 5955) + 100) ) sub_5BB320(v5, (__int16 *)(a2 + 2)); else sub_5B86E0(v5, *(_WORD *)(a2 + 2), 2889); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00576720) -------------------------------------------------------- int __thiscall sub_576720(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55B830(v4) ) sub_5BB490((int)((char *)v4 + 82048), (int *)(a2 + 2)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005767E0) -------------------------------------------------------- int __thiscall sub_5767E0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55B830(v4) ) sub_5BDEE0((char *)v4 + 82048, a2 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005768A0) -------------------------------------------------------- int __thiscall sub_5768A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55B830(v4) ) sub_5B8E50((char *)v4 + 82048, a2 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576960) -------------------------------------------------------- char __cdecl sub_576960(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748038 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_74803C ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 4); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748038: using guessed type int dword_748038; // 74803C: using guessed type int dword_74803C; // 86FEB8: using guessed type int __security_cookie; //----- (00576A90) -------------------------------------------------------- char __cdecl sub_576A90(int a1, __int16 a2, char *a3) { void *v3; // ecx@1 __int16 v4; // ax@1 void *v5; // esi@1 int v6; // eax@5 void *v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+18h] [bp-1Ch]@1 unsigned int v10; // [sp+1Ch] [bp-18h]@1 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v3 = off_849C18; v4 = ((_WORD)dword_748040 << 10) | *(_WORD *)off_849C18 & 0x3FF; *(_WORD *)off_849C18 = v4; *(_WORD *)v3 = v4 ^ (dword_748044 ^ v4) & 0x3FF; *((_WORD *)v3 + 1) = a2; v10 = 15; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, a3, strlen(a3)); v12 = 0; sub_476F60((int)&v8, " : Packet Too Long", 18); v5 = v8; if ( v10 < 0x10 ) v5 = &v8; if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)v5, 6); } if ( v10 >= 0x10 ) operator delete(v8); return 1; } // 748040: using guessed type int dword_748040; // 748044: using guessed type int dword_748044; // 86FEB8: using guessed type int __security_cookie; //----- (00576BC0) -------------------------------------------------------- int __thiscall sub_576BC0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // ecx@3 int v6; // eax@5 __int16 v8; // [sp-8h] [bp-24h]@2 int v9; // [sp-4h] [bp-20h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_55B830(v4) ) { v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ"; v8 = 2899; LABEL_7: sub_576960((int)v4, v8, (char *)v9); v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ"; goto LABEL_8; } v5 = (int)((char *)v4 + 82048); if ( v4 == (void *)-82048 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ NULL == sp_QuestDiary.sqd_GetZoneQuest()", v5); v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ"; v8 = 2897; goto LABEL_7; } v6 = sub_5BDD50((void *)v5, *(_WORD *)(a2 + 2)); v9 = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ"; if ( v6 ) { v8 = 2896; goto LABEL_7; } LABEL_8: --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576CC0) -------------------------------------------------------- int __thiscall sub_576CC0(void *this, int a2, int a3, int a4) { int v4; // esi@1 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( sub_55B830((void *)v4) ) { if ( v4 != -82048 && !sub_5B9070((void *)(v4 + 82048), *(_WORD *)(a2 + 2)) ) sub_576A90(v4, 2905, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); } else { sub_576960(v4, 2906, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576DA0) -------------------------------------------------------- void *__thiscall sub_576DA0(void *this) { signed int v1; // esi@1 double v2; // ST08_8@2 signed int v4; // [sp+Ch] [bp-4h]@1 v1 = 0; v4 = 0; do { v2 = (double)v4 * 3.1415927 / 90.0; *((_DWORD *)this + v1) = (signed int)(sin(v2) * 1024.0); *((_DWORD *)this + v1++ + 180) = (signed int)(cos(v2) * 1024.0); v4 = v1; } while ( v1 < 180 ); return this; } //----- (00576E10) -------------------------------------------------------- int __thiscall sub_576E10(void *this, signed int a2) { return *((_DWORD *)this + a2 % 180); } //----- (00576E40) -------------------------------------------------------- int __thiscall sub_576E40(void *this, signed int a2) { return *((_DWORD *)this + a2 + 180 * (1 - a2 / 180)); } //----- (00576E80) -------------------------------------------------------- signed int __stdcall sub_576E80(signed int a1) { signed int result; // eax@1 result = a1; if ( a1 >= 0 ) { if ( a1 > 180 ) result = a1 - 180; } else { result = a1 + 180; } return result; } //----- (00576EB0) -------------------------------------------------------- int __stdcall sub_576EB0(signed int a1) { signed int v1; // ecx@1 signed int v2; // edx@3 signed int v3; // esi@3 sub_4675D0((int)&unk_D020420, (int)"ShineRadian::sr_degree2sr"); dword_7508B8[dword_750CB8] = (int)"ShineRadian::sr_degree2sr"; dword_750AB8[dword_750CB8] = -1; v1 = a1; ++dword_750CB8; if ( a1 < 0 ) v1 = a1 + 360 * (-1 - a1) / 0x168u + 360; --dword_750CB8; v2 = (signed int)(180 * v1 % 360 + ((unsigned __int64)(-223338299220i64 * v1 % 360) >> 32)) >> 8; v3 = v2 + ((unsigned int)v2 >> 31); sub_467660((int)&unk_D020420, (int)"ShineRadian::sr_degree2sr"); return v3 % 180; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00576F80) -------------------------------------------------------- int __thiscall sub_576F80(int this, signed int a2) { int v2; // esi@1 int v3; // ST14_4@1 int v4; // ST10_4@1 int v5; // ebx@1 int v6; // ebx@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 8); v4 = *(_DWORD *)(this + 4); v5 = v3 * sub_576E10(&unk_132546E8, a2); *(_DWORD *)(v2 + 4) = (v4 * sub_576E40(&unk_132546E8, a2) - v5) / 1024; v6 = v3 * sub_576E40(&unk_132546E8, a2); result = (v6 + v4 * sub_576E10(&unk_132546E8, a2)) / 1024; *(_DWORD *)(v2 + 8) = result; return result; } //----- (00577020) -------------------------------------------------------- int __thiscall sub_577020(int this) { int v1; // esi@1 int v2; // edx@1 int result; // eax@1 v1 = this; v2 = *(_DWORD *)this; *(_WORD *)(this + 32655) = 0; result = (*(int (__stdcall **)(signed int, signed int))(v2 + 772))(9, 53); *(_BYTE *)(v1 + 155428) &= 0xFDu; return result; } //----- (00577050) -------------------------------------------------------- bool __thiscall sub_577050(void *this, int a2) { void *v2; // edi@1 bool result; // al@2 int v4; // eax@5 v2 = this; if ( a2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1452))(a2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3400))(a2) != 1 && ((v4 = *((_DWORD *)v2 + 460)) == 0 || *(_WORD *)(v4 + 4) != *(_WORD *)(a2 + 4)) && ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1232))(a2) != 11 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3184))(a2) != 1) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) != 3 ) result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 40))(a2) != 1; else result = 0; return result; } //----- (005770E0) -------------------------------------------------------- int __thiscall sub_5770E0(int this, int a2) { int v2; // eax@1 int result; // eax@1 *(_DWORD *)(this + 1840) = a2; v2 = *(_DWORD *)(a2 + 102); *(_DWORD *)(this + 1844) = *(_DWORD *)v2; result = *(_DWORD *)(v2 + 4); *(_DWORD *)(this + 1848) = result; return result; } //----- (00577110) -------------------------------------------------------- char __thiscall sub_577110(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 v2 = (int)this; (*(void (**)(void))(*(_DWORD *)this + 2632))(); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v2 + 828))(v2, 0, 1, 3); v3 = *(_DWORD *)(v2 + 102); *(_DWORD *)v3 = *(_DWORD *)a2; *(_DWORD *)(v3 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 9460) = *(_DWORD *)a2; *(_DWORD *)(v2 + 9464) = *(_DWORD *)(a2 + 4); sub_4B1BA0((void *)v2); if ( sub_452770(*(void **)(v2 + 122), v2, 0, 0, 0) != 0 ) { sub_639100(&unk_86DDD8, (int)"ShineMob::smo_Teleport : Fail", 0); **(_BYTE **)(v2 + 3828) = 3; *(_DWORD *)(v2 + 7964) = 0; } return sub_441910(v2); } //----- (005771B0) -------------------------------------------------------- __int16 __thiscall sub_5771B0(int this, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(this + 32655) = a2; return result; } //----- (005771D0) -------------------------------------------------------- bool __thiscall sub_5771D0(int this, int a2) { return *(_DWORD *)(this + 16) == *(_DWORD *)(a2 + 16); } //----- (005771F0) -------------------------------------------------------- int __thiscall sub_5771F0(int this) { return sub_564500((void *)(this + 32654), this); } //----- (00577200) -------------------------------------------------------- int __thiscall sub_577200(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; *((_BYTE *)v1 + 7888) |= 0x40u; result = sub_4369C0(this); *((_BYTE *)v1 + 7888) &= 0xBFu; return result; } //----- (00577220) -------------------------------------------------------- char __thiscall sub_577220(void *this, __int16 a2) { return sub_445050((int)((char *)this + 84388), a2); } //----- (00577230) -------------------------------------------------------- int __thiscall sub_577230(void *this, int a2, int a3) { void *v3; // esi@1 int result; // eax@2 void *v5; // eax@5 int v6; // eax@7 v3 = this; if ( a2 ) { result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 996))(291); if ( !(_BYTE)result ) { result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 996))(v3, 499); if ( !(_BYTE)result ) { sub_4484B0((int)((char *)v3 + 84388), **(_WORD **)(a2 + 4), 1); v5 = off_849C18; *(_WORD *)off_849C18 = 9308; *((_WORD *)v5 + 1) = **(_WORD **)(a2 + 4); if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { result = (int)sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_ToggleSkill_On : Packet Too Long", 4); } } } } else { result = (int)sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_ToggleSkill_On : INVALID Skill", 0); } return result; } //----- (00577300) -------------------------------------------------------- FILE *__thiscall sub_577300(void *this, int a2) { void *v2; // esi@1 FILE *result; // eax@2 void *v4; // eax@3 int v5; // eax@5 v2 = this; if ( a2 ) { sub_4484B0((int)((char *)this + 84388), **(_WORD **)(a2 + 4), 0); v4 = off_849C18; *(_WORD *)off_849C18 = 9309; *((_WORD *)v4 + 1) = **(_WORD **)(a2 + 4); if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_ToggleSkill_Off : Packet Too Long", 4); } } else { result = sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_ToggleSkill_OFF : invalid spell", 0); } return result; } //----- (005773A0) -------------------------------------------------------- void __thiscall sub_5773A0(int this) { sub_448700(this + 84388, this); } //----- (005773B0) -------------------------------------------------------- int __thiscall sub_5773B0(int this) { return sub_448850((void *)(this + 84388)); } //----- (005773C0) -------------------------------------------------------- int __thiscall sub_5773C0(void *this, int a2, __int16 a3, int a4, int a5, __int16 a6, int a7) { int result; // eax@1 int v8; // esi@1 int v9; // ecx@4 int v10; // edi@6 void *v11; // eax@9 int v12; // ST0C_4@9 int v13; // eax@9 void *v14; // eax@10 int v15; // ST0C_4@10 int v16; // eax@10 char v17; // [sp+10h] [bp-24h]@9 char v18; // [sp+1Ch] [bp-18h]@10 int v19; // [sp+28h] [bp-Ch]@1 int v20; // [sp+30h] [bp-4h]@9 result = (int)&v19; v8 = (int)this; if ( a2 ) { if ( *(_BYTE *)(a2 + 464) == 1 ) { result = *(_DWORD *)(a2 + 468); if ( result >= a7 ) { v9 = a4; if ( a4 ) { if ( *(_DWORD *)(a2 + 4) ) { v10 = a5; dword_13254C88 = 0; if ( !a5 ) { result = (*(int (__stdcall **)(int, _DWORD, int))(*(_DWORD *)a4 + 3100))(a2, *(_DWORD *)(a2 + 476), v8); v10 = result; if ( !result ) return result; v9 = a4; } sub_437E60(&dword_87B264, a3, a2, v8, v10, *(_DWORD *)(v10 + 102), -1, a6, *(_DWORD *)(v9 + 102), a7); v11 = off_849C18; *(_WORD *)off_849C18 = 9310; *((_WORD *)v11 + 1) = a3; *((_WORD *)v11 + 2) = **(_WORD **)(a2 + 4); *((_WORD *)v11 + 3) = *(_WORD *)(a4 + 4); *((_WORD *)v11 + 4) = *(_WORD *)(v10 + 4); sub_4287B0(&v17, &off_849C18, 10); v12 = *(_DWORD *)(v8 + 102); v20 = 0; v13 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v8, v13, v12, 0, 0, (int)&v17, 1, 65535); if ( a7 == 1 ) { v14 = off_849C18; *(_WORD *)off_849C18 = 9303; *((_WORD *)v14 + 2) = *(_WORD *)(v8 + 4); *((_WORD *)v14 + 1) = a3; *((_WORD *)v14 + 3) = **(_WORD **)(a2 + 4); sub_4287B0(&v18, &off_849C18, 8); v15 = *(_DWORD *)(v8 + 102); LOBYTE(v20) = 1; v16 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v8, v16, v15, 0, 0, (int)&v18, 1, 65535); LOBYTE(v20) = 0; sub_428A70(&v18); } v20 = -1; result = sub_428A70(&v17); } } } } } return result; } // 13254C88: using guessed type int dword_13254C88; //----- (00577580) -------------------------------------------------------- int __thiscall sub_577580(void *this, int a2) { void *v2; // esi@1 void (__thiscall *v3)(_DWORD, _DWORD); // edx@1 int result; // eax@2 v2 = this; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 3056))(0); v3 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3036); if ( a2 > 0 ) { v3(v2, a2); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3044))(v2, a2); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 2616))(v2, 5, 0, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 3036))(v2, 0); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 3040))(v2); } else { v3(v2, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 3044))(v2, 0); result = a2; } return result; } //----- (00577600) -------------------------------------------------------- int __thiscall sub_577600(int this, signed int a2, int a3, char a4, int a5) { return sub_4463A0((void *)(this + 84424), a2, this, a3, a4, a5); } //----- (00577630) -------------------------------------------------------- char __thiscall sub_577630(void *this, int a2, int a3) { void *v3; // edi@1 char result; // al@2 int v5; // eax@4 signed int v6; // eax@5 signed int v7; // ebx@5 int v8; // eax@5 __int64 v9; // qax@5 int v10; // esi@5 double v11; // ST1C_8@5 int v12; // eax@5 signed int v13; // eax@5 double v14; // st7@5 int v15; // ecx@5 int v16; // ecx@8 int v17; // [sp+Ch] [bp-18h]@5 int v18; // [sp+10h] [bp-14h]@6 int v19; // [sp+14h] [bp-10h]@5 int v20; // [sp+18h] [bp-Ch]@5 double v21; // [sp+1Ch] [bp-8h]@5 int v22; // [sp+2Ch] [bp+8h]@5 v3 = this; if ( a3 && a2 && (v5 = *(_DWORD *)(a2 + 4)) != 0 ) { LOWORD(v6) = sub_6396B0(&unk_14D42DC0, *(_DWORD *)(v5 + 180)); v7 = v6; v8 = dword_14F4AFC4 & (dword_14F4AFC0 + 1); dword_14F4AFC0 = v8; v9 = 180 * (unsigned __int16)word_14F42FC0[v8]; v10 = ((BYTE4(v9) & 0x3F) + (signed int)v9) >> 6; v11 = (double)sub_576E10(&unk_132546E8, v10) * 0.0009765625; v21 = (double)v7; v12 = sub_576E40(&unk_132546E8, v10); v22 = v12; v13 = (signed int)((double)v12 * 0.0009765625 * v21); v14 = v21 * v11; v15 = *(_DWORD *)((char *)v3 + 102); HIDWORD(v21) = HIWORD(v22) | 0xC00; v19 = *(_DWORD *)v15 + (unsigned __int64)(signed __int64)v14; v20 = v13 + *(_DWORD *)(v15 + 4); if ( sub_4BE0E0(v3, (int)&v19, 2 * v7, (int)&v17, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140) && (v19 = v17, v20 = v18, sub_4BE0E0(v3, (int)&v19, 2 * v7, (int)&v17, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0)) ) { v16 = v18; *(_DWORD *)a3 = v17; *(_DWORD *)(a3 + 4) = v16; result = 1; } else { result = 0; } } else { result = 0; } return result; } // 14F42FC0: using guessed type __int16 word_14F42FC0[]; // 14F4AFC0: using guessed type int dword_14F4AFC0; // 14F4AFC4: using guessed type int dword_14F4AFC4; //----- (00577770) -------------------------------------------------------- char __thiscall sub_577770(int this) { signed int v1; // eax@1 v1 = 0; if ( dword_14D129E8 != *(_DWORD *)(this + 424) ) v1 = (dword_14D129E8 - *(_DWORD *)(this + 424)) * *(_DWORD *)(*(_DWORD *)(this + 416) + 572) / 0xAu; return *(_BYTE *)(this + 421) + v1 / 2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005777B0) -------------------------------------------------------- __int16 __thiscall sub_5777B0(int this, __int16 a2, int a3) { int v3; // edx@1 v3 = (*(_DWORD *)(this + 512) + 1) & *(_DWORD *)(this + 516); *(_DWORD *)(this + 512) = v3; *(_WORD *)(this + 4 * v3) = a2; *(_WORD *)(this + 4 * *(_DWORD *)(this + 512) + 2) = *(_WORD *)a3; return *(_WORD *)(this + 512); } //----- (005777F0) -------------------------------------------------------- int __thiscall sub_5777F0(int this, int a2, int a3) { int v3; // esi@1 signed int v4; // ST04_4@1 signed int v5; // ST00_4@1 int v6; // eax@1 signed int v7; // ecx@3 int v8; // edi@3 int v9; // eax@3 v3 = this; *(_DWORD *)(this + 8) = a3; *(_DWORD *)(this + 4) = a2; v4 = *(_DWORD *)(this + 8); v5 = *(_DWORD *)(this + 4); *(_DWORD *)this = &off_6B039C; v6 = sub_4011C0(&unk_AF09DA8, v5, v4); *(_DWORD *)(v3 + 12) = v6; *(_DWORD *)v3 = &off_6D81D8; if ( !v6 ) { *(_DWORD *)(v3 + 4) = 1; *(_DWORD *)(v3 + 8) = 0; *(_DWORD *)(v3 + 12) = 1; } v7 = *(_DWORD *)(v3 + 12); v8 = 32 * *(_DWORD *)(v3 + 4) / v7; v9 = 32 * *(_DWORD *)(v3 + 8) / v7; *(_DWORD *)(v3 + 4) = v8; *(_DWORD *)(v3 + 8) = v9; *(_DWORD *)(v3 + 12) = sub_4011C0(&unk_AF09DA8, v8, v9); return v3; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 6D81D8: using guessed type int (__stdcall *off_6D81D8)(int); //----- (00577870) -------------------------------------------------------- int __thiscall sub_577870(void *this, int a2, int a3, int a4, int a5) { unsigned int v5; // ST14_4@1 void *v6; // esi@1 int v7; // ecx@1 int (__stdcall *v8)(_DWORD, _DWORD); // eax@1 char v9; // dl@2 void (__thiscall *v10)(_DWORD, _DWORD, _DWORD); // edx@2 __int16 v11; // ax@3 int v12; // edi@3 int (__thiscall *v13)(_DWORD, _DWORD); // eax@3 char v14; // al@3 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@3 int v17; // [sp+10h] [bp-F0h]@1 int v18; // [sp+14h] [bp-ECh]@1 int v19; // [sp+18h] [bp-E8h]@1 __int16 v20; // [sp+1Ch] [bp-E4h]@1 char v21; // [sp+20h] [bp-E0h]@1 int v22; // [sp+21h] [bp-DFh]@1 __int16 v23; // [sp+25h] [bp-DBh]@1 int v24; // [sp+28h] [bp-D8h]@1 int v25; // [sp+2Ch] [bp-D4h]@1 int v26; // [sp+30h] [bp-D0h]@1 int v27; // [sp+34h] [bp-CCh]@1 int v28; // [sp+38h] [bp-C8h]@1 int v29; // [sp+3Ch] [bp-C4h]@1 __int16 *v30; // [sp+40h] [bp-C0h]@1 char v31; // [sp+47h] [bp-B9h]@3 char v32; // [sp+48h] [bp-B8h]@2 char v33; // [sp+49h] [bp-B7h]@2 int v34; // [sp+4Ch] [bp-B4h]@2 __int16 v35; // [sp+50h] [bp-B0h]@2 int v36; // [sp+54h] [bp-ACh]@1 char v37; // [sp+58h] [bp-A8h]@3 unsigned int v38; // [sp+F0h] [bp-10h]@1 int v39; // [sp+FCh] [bp-4h]@1 int v40; // [sp+100h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; v5 = (unsigned int)&v40 ^ __security_cookie; v6 = this; v29 = a4; v36 = a3; v30 = (__int16 *)a5; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_old_skill_blast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_old_skill_blast"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)(a2 + 112); v20 = 0; v25 = 1000; v28 = 1000; v17 = 0; v18 = 0; v19 = a2; v21 = 0; v22 = 0; v24 = 0; v26 = 0; v23 = 0; v27 = 0; v8 = *(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 32); v39 = 0; if ( (unsigned __int8)v8(&v17, v5) ) { v9 = *(_BYTE *)(v29 + 4); v35 = *v30; v33 = v9; v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 1436); v32 = 0; v34 = a2; v10(v6, v36, &v32); } v11 = *v30; v33 = *(_BYTE *)(v29 + 4); v32 = 0; v34 = a2; v35 = v11; sub_4346A0((int)&v37); v12 = v36; v13 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 2432); LOBYTE(v39) = 1; v14 = v13(v6, v36); v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 1440); LOBYTE(v36) = v14; v15(v6, v12, &v32, &v37, &v31, v36); LOBYTE(v39) = 0; nullsub_2(&v37); --dword_750CB8; v39 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_old_skill_blast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00577A70) -------------------------------------------------------- int __thiscall sub_577A70(void *this) { void *v1; // esi@1 bool v2; // zf@1 void *v3; // eax@4 int v4; // ST04_4@4 int v5; // eax@4 int v7; // [sp-4h] [bp-2Ch]@2 char v8; // [sp+Ch] [bp-1Ch]@4 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v1 = this; v9 = (int)"ShineObjectClass::ShineMobileObject::sp_castabort"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::sp_castabort"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::sp_castabort"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 1917) == 0; v10 = 0; if ( v2 ) { if ( *((_DWORD *)v1 + 1911) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 9272; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); sub_4287B0(&v8, &off_849C18, 4); v4 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v10) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v5, v4, 0, 0, (int)&v8, 1, 65535); sub_566EF0((char *)v1 + 7644); LOBYTE(v10) = 0; sub_428A70(&v8); } --dword_750CB8; v10 = -1; v7 = (int)"ShineObjectClass::ShineMobileObject::sp_castabort"; } else { --dword_750CB8; v10 = -1; v7 = (int)"ShineObjectClass::ShineMobileObject::sp_castabort"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00577B90) -------------------------------------------------------- int __thiscall sub_577B90(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_castabort"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_castabort"; dword_750AB8[dword_750CB8++] = -1; sub_577A70(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_castabort"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00577C30) -------------------------------------------------------- int __thiscall sub_577C30(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@1 int v7; // ecx@1 _BYTE *v8; // ecx@1 bool v9; // zf@1 void *v10; // eax@1 int v11; // eax@4 int v12; // ecx@4 _BYTE *v13; // ecx@4 int v14; // eax@6 int v15; // ST04_4@8 int v16; // eax@8 void (__thiscall *v17)(_DWORD); // eax@8 char v19; // [sp+10h] [bp-1Ch]@8 int v20; // [sp+1Ch] [bp-10h]@1 int v21; // [sp+28h] [bp-4h]@1 v4 = this; v20 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388); v21 = 0; v6 = v5(v4); v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; v9 = (dword_13257764 & 1) == 0; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); *((_DWORD *)v8 + 4) = *(_DWORD *)(v6 + 16); v10 = off_849C18; v8[20] = 0; *(_WORD *)v10 = 9272; *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); if ( v9 ) { dword_13257764 |= 1u; word_13257760 = 4; atexit(nullsub_145); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13257760 && *((_DWORD *)v4 + 1911) ) { sub_4287B0(&v19, &off_849C18, 4); v15 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v21) = 1; v16 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v16, v15, 0, 0, (int)&v19, 1, 65535); v17 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792); *((_DWORD *)v4 + 1911) = 0; v17(v4); LOBYTE(v21) = 0; sub_428A70(&v19); } else { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1388))(v4); v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); *((_DWORD *)v13 + 4) = *(_DWORD *)(v11 + 16); v13[20] = 0; if ( sub_4C81E0(&off_849C18, 4) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v14 + 12))(v14, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD : Packet Too Long", 4); } } --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13257760: using guessed type __int16 word_13257760; // 13257764: using guessed type int dword_13257764; //----- (00577E50) -------------------------------------------------------- char __thiscall sub_577E50(void *this, int a2) { void *v2; // ebx@1 char result; // al@2 char v4; // al@5 char v5; // bl@5 int v6; // [sp+4h] [bp-1Ch]@0 int v7; // [sp+8h] [bp-18h]@0 int v8; // [sp+Ch] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanSkillEnemyUser::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanSkillEnemyUser::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3004))(a2) ) { v4 = (*(int (__stdcall **)(int, _DWORD, int, int, int))(**((_DWORD **)v2 + 460) + 2432))( a2, "AxialListNearScanSkillEnemyUser::alns_ValidObject", v6, v7, v8); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemyUser::alns_ValidObject"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemyUser::alns_ValidObject"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemyUser::alns_ValidObject"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00577F70) -------------------------------------------------------- char __thiscall sub_577F70(void *this, int a2) { void *v2; // esi@1 int v3; // ST04_4@1 unsigned __int16 v4; // ax@1 char result; // al@2 char v6; // al@5 char v7; // bl@5 int v8; // [sp+0h] [bp-20h]@0 int v9; // [sp+4h] [bp-1Ch]@0 int v10; // [sp+8h] [bp-18h]@0 int v11; // [sp+Ch] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanSkillEnemy::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanSkillEnemy::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; v3 = ((unsigned __int16)(*(int (**)(void))(**((_DWORD **)v2 + 460) + 1800))() == -1) + 1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1800))(a2); if ( sub_63EDC0((int)&unk_14D159B0, v4, v3) ) { if ( (unsigned __int8)(*(int (__stdcall **)(int, int))(**((_DWORD **)v2 + 460) + 1836))(a2, v8) ) { v6 = (*(int (__stdcall **)(int, _DWORD, int, int, int))(**((_DWORD **)v2 + 460) + 2432))( a2, "AxialListNearScanSkillEnemy::alns_ValidObject", v9, v10, v11); --dword_750CB8; v7 = v6; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemy::alns_ValidObject"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemy::alns_ValidObject"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemy::alns_ValidObject"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005780D0) -------------------------------------------------------- bool __thiscall sub_5780D0(void *this, int a2) { void *v2; // esi@1 bool v3; // zf@2 __int16 v4; // si@3 bool v5; // bl@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanSkillParty::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanSkillParty::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int16)(*(int (**)(void))(**((_DWORD **)v2 + 460) + 1360))() == -1 ) { v3 = a2 == *((_DWORD *)v2 + 460); } else { v4 = (*(int (**)(void))(**((_DWORD **)v2 + 460) + 1360))(); v3 = (unsigned __int16)(*(int (**)(void))(*(_DWORD *)a2 + 1360))() == v4; } v5 = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillParty::alns_ValidObject"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005781B0) -------------------------------------------------------- bool __thiscall sub_5781B0(void *this, int a2) { void *v2; // esi@1 bool v3; // bl@1 int v5; // [sp+0h] [bp-1Ch]@0 int v6; // [sp+4h] [bp-18h]@0 int v7; // [sp+8h] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListNearScanSkillEnemy::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListNearScanSkillEnemy::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__stdcall **)(int, int, int, int, _DWORD))(**((_DWORD **)v2 + 460) + 1836))( a2, v5, v6, v7, "AxialListNearScanSkillEnemy::alns_ValidObject") == 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListNearScanSkillEnemy::alns_ValidObject"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00578270) -------------------------------------------------------- int __stdcall sub_578270(int a1) { int v1; // eax@1 int v3; // [sp+0h] [bp-18h]@0 int v4; // [sp+4h] [bp-14h]@0 int v5; // [sp+Ch] [bp-Ch]@0 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ClearSkillResultBuffer_Miss"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_ClearSkillResultBuffer_Miss"; dword_750AB8[dword_750CB8++] = -1; dword_13254C88 = 1; dword_13254C98[0] = 1; dword_13254C9C[0] = 1; dword_13254C90[0] = a1; LOBYTE(dword_13254CA0[0]) = 0; dword_13254CA4[0] = 0; v1 = (*(int (__stdcall **)(int, int, _DWORD, int))(*(_DWORD *)a1 + 1256))( v3, v4, "ShineObjectClass::ShineMobileObject::smo_ClearSkillResultBuffer_Miss", v5); --dword_750CB8; dword_13254C94[0] = v1; BYTE1(dword_13254CA0[0]) = 0; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_ClearSkillResultBuffer_Miss"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254C88: using guessed type int dword_13254C88; // 13254C90: using guessed type int dword_13254C90[]; // 13254C94: using guessed type int dword_13254C94[]; // 13254C98: using guessed type int dword_13254C98[]; // 13254C9C: using guessed type int dword_13254C9C[]; // 13254CA0: using guessed type int dword_13254CA0[]; // 13254CA4: using guessed type int dword_13254CA4[]; //----- (00578350) -------------------------------------------------------- int __thiscall sub_578350(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 _BYTE *v6; // ecx@1 void *v7; // eax@1 int v8; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1388))(v3); v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v7 = off_849C18; v6[20] = 0; *(_WORD *)v7 = *(_WORD *)v7 & 0x3FF | 0x2400; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1180))(v3); (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 64))(v8, v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (00578470) -------------------------------------------------------- int __cdecl sub_578470() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mobile_Teleport"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mobile_Teleport"; dword_750AB8[dword_750CB8++] = -1; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_mobile_Teleport", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mobile_Teleport"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00578520) -------------------------------------------------------- int __stdcall sub_578520(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mobile_Teleport"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mobile_Teleport"; dword_750AB8[dword_750CB8++] = -1; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineObject::so_mobile_Teleport", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mobile_Teleport"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005785D0) -------------------------------------------------------- int __thiscall sub_5785D0(void *this) { void *v1; // esi@1 int v2; // ecx@1 char v4; // [sp+8h] [bp-18h]@1 int v5; // [sp+10h] [bp-10h]@1 int v6; // [sp+1Ch] [bp-4h]@1 v1 = this; v5 = (int)"ShineObjectClass::ShineMob::smo_Teleport"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_Teleport"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::smo_Teleport"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)v1 + 122) + 20) + 1068); v6 = 0; if ( sub_438450(v2, (int)&v4) ) (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v1 + 1748))(v1, &v4); --dword_750CB8; v6 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_Teleport"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005786A0) -------------------------------------------------------- char __thiscall sub_5786A0(void *this, int a2) { void *v2; // edi@1 int (__thiscall *v3)(_DWORD); // eax@1 int v4; // esi@4 int v6; // [sp-4h] [bp-34h]@2 int v7; // [sp+10h] [bp-20h]@4 int v8; // [sp+14h] [bp-1Ch]@4 int v9; // [sp+18h] [bp-18h]@4 int v10; // [sp+1Ch] [bp-14h]@4 int v11; // [sp+20h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-4h]@1 v2 = this; v11 = (int)"AxialListMagicFieldAggro::alns_ValidObject"; sub_4675D0((int)&unk_D020420, (int)"AxialListMagicFieldAggro::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListMagicFieldAggro::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1256); v12 = 0; if ( !v3(a2) ) { LABEL_7: v6 = (int)"AxialListMagicFieldAggro::alns_ValidObject"; goto LABEL_8; } v6 = (int)"AxialListMagicFieldAggro::alns_ValidObject"; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2204))(a2) ) { if ( (unsigned __int8)(*(int (__stdcall **)(int, _DWORD))(***((_DWORD ***)v2 + 403) + 2432))( a2, "AxialListMagicFieldAggro::alns_ValidObject") ) { v4 = *(_DWORD *)(a2 + 102); v7 = *(_DWORD *)v4; v8 = *(_DWORD *)(v4 + 4); v9 = *(_DWORD *)v4; v10 = *(_DWORD *)(v4 + 4); sub_4BE0E0( *((void **)v2 + 402), (int)&v9, 10000, (int)&v7, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v9 == v7 ) { if ( v10 == v8 ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldAggro::alns_ValidObject"); return 1; } } } goto LABEL_7; } LABEL_8: --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005787F0) -------------------------------------------------------- int __thiscall sub_5787F0(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ebx@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListMagicFieldAggro::almfa_AppendAggro"); dword_7508B8[dword_750CB8] = (int)"AxialListMagicFieldAggro::almfa_AppendAggro"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( *((_DWORD *)v1 + 401) > 0 ) { v3 = (int)((char *)v1 + 4); do { (*(void (__stdcall **)(_DWORD, signed int))(**(_DWORD **)v3 + 1792))(**((_DWORD **)v1 + 403), 1); ++v2; v3 += 8; } while ( v2 < *((_DWORD *)v1 + 401) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"AxialListMagicFieldAggro::almfa_AppendAggro"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005788B0) -------------------------------------------------------- int __thiscall sub_5788B0(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_ply_Revival"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMagicField::so_ply_Revival"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 772))(v1, 18, 41); *((_BYTE *)v1 + 23825) |= 0x40u; v2 = 3 * dword_13254C88; dword_13254C90[6 * dword_13254C88] = (int)v1; v2 *= 8; *(int *)((char *)dword_13254C94 + v2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1); *((_BYTE *)dword_13254C98 + v2) = 0; *((_BYTE *)&dword_13254C98[0] + v2 + 1) = 0; *((_BYTE *)&dword_13254C98[0] + v2 + 2) = 0; *((_BYTE *)&dword_13254C98[0] + v2 + 3) = 0; *((_BYTE *)dword_13254C9C + v2) = 0; *((_BYTE *)&dword_13254C9C[0] + v2 + 1) = 0; *((_BYTE *)&dword_13254C9C[0] + v2 + 2) = 1; *((_BYTE *)&dword_13254C9C[0] + v2 + 3) = 0; v3 = 6 * dword_13254C88; dword_13254CA4[6 * dword_13254C88++] = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1); --dword_750CB8; BYTE1(dword_13254CA0[v3]) = 0; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_ply_Revival"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254C88: using guessed type int dword_13254C88; // 13254C90: using guessed type int dword_13254C90[]; // 13254C94: using guessed type int dword_13254C94[]; // 13254C98: using guessed type int dword_13254C98[]; // 13254C9C: using guessed type int dword_13254C9C[]; // 13254CA0: using guessed type int dword_13254CA0[]; // 13254CA4: using guessed type int dword_13254CA4[]; //----- (005789F0) -------------------------------------------------------- char __thiscall sub_5789F0(void *this, int a2, int a3) { void *v3; // esi@1 int v5; // [sp+0h] [bp-18h]@0 int v6; // [sp+4h] [bp-14h]@0 int v7; // [sp+Ch] [bp-Ch]@0 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_BroadcastBriefInfo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_BroadcastBriefInfo"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(void *, int, int, _DWORD, int))(*(_DWORD *)a2 + 1224))( v3, v5, v6, "ShineObjectClass::ShineObject::so_BroadcastBriefInfo", v7); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_BroadcastBriefInfo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00578AA0) -------------------------------------------------------- int __thiscall sub_578AA0(void *this, unsigned __int16 *a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 unsigned __int16 *v6; // ebx@1 int v7; // eax@7 signed __int16 v8; // dx@9 int v9; // eax@11 int v10; // eax@12 signed int v11; // eax@12 int v12; // eax@17 __int16 v13; // cx@17 int v14; // eax@18 int v15; // eax@20 __int16 v16; // ST08_2@23 int v18; // [sp+14h] [bp-10h]@12 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = a2; *(_WORD *)off_849C18 = 18471; *((_WORD *)v5 + 1) = *(unsigned __int16 *)((char *)v6 + 3); if ( !(dword_1325776C & 1) ) { dword_1325776C |= 1u; word_13257768 = 70; atexit(nullsub_146); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13257768) ) { *((_WORD *)v5 + 2) = 5378; goto LABEL_5; } if ( !sub_445FC0((void *)(v4 + 84388), *(unsigned __int16 *)((char *)v6 + 3)) ) { v8 = 5379; goto LABEL_10; } v10 = *(_DWORD *)(v4 + 36484); v18 = *((_BYTE *)v6 + 2); a2 = (unsigned __int16 *)*((_BYTE *)v6 + 2); v11 = (*(int (__thiscall **)(int))(v10 + 8))(v4 + 36484); if ( (signed int)a2 >= v11 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : wrong slot", v18); LABEL_14: *((_WORD *)v5 + 2) = 1794; goto LABEL_5; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int, unsigned __int16 *))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 9, a2) ) { v12 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, *((_BYTE *)v6 + 2)); v13 = *(_WORD *)(v12 + 8); a2 = (unsigned __int16 *)(v12 + 8); if ( word_14D211AE == v13 ) { v14 = (*(int (__stdcall **)(int))(**(_DWORD **)(v12 + 112) + 28))(v12 + 8); if ( v14 > 0 ) { v15 = sub_418CB0((int)&dword_14D20890, *a2); if ( v15 && *(_DWORD *)v15 ) { sub_53E400(off_86ACF8, v4, v4 + 36484, (int **)v15, *((_BYTE *)v6 + 2)); v16 = *(_WORD *)(v4 + 4); LOWORD(a2) = *(unsigned __int16 *)((char *)v6 + 3); *(_WORD *)(v4 + 160826) = sub_5777B0((int)&unk_869AB8, v16, (int)&a2); goto LABEL_24; } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0); v8 = 1795; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Try to use lot 0 item", v14 > 0); v8 = 1795; } LABEL_10: *((_WORD *)v5 + 2) = v8; if ( sub_4C81E0(&off_849C18, 6) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); goto LABEL_24; } goto LABEL_6; } goto LABEL_14; } *((_WORD *)v5 + 2) = 1802; LABEL_5: if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); goto LABEL_24; } LABEL_6: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6); LABEL_24: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86ACF8: using guessed type int (__thiscall *off_86ACF8[11])(void *, char); // 13257768: using guessed type __int16 word_13257768; // 1325776C: using guessed type int dword_1325776C; // 14D20890: using guessed type int dword_14D20890; // 14D211AE: using guessed type __int16 word_14D211AE; //----- (00578D80) -------------------------------------------------------- int __thiscall sub_578D80(void *this) { void *v1; // esi@1 int v2; // eax@1 char *v3; // ebx@2 int v4; // eax@3 bool v5; // zf@3 _BYTE *v6; // edi@3 int v7; // esi@7 int v8; // eax@22 int v9; // eax@24 int v10; // ecx@24 int v11; // ecx@24 int v12; // ST08_4@24 __time32_t v13; // eax@24 __time32_t v14; // eax@24 void *v15; // edi@25 int v16; // eax@27 unsigned int v18; // [sp-4h] [bp-324h]@1 char v19; // [sp+10h] [bp-310h]@17 char v20; // [sp+110h] [bp-210h]@13 char v21; // [sp+210h] [bp-110h]@5 unsigned int v22; // [sp+310h] [bp-10h]@1 int v23; // [sp+31Ch] [bp-4h]@1 int v24; // [sp+320h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v18 = (unsigned int)&v24 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 80413); v23 = 0; if ( (unsigned __int16)v2 >= 0x80u || (v3 = (char *)&unk_869AB8 + 4 * v2) == 0 ) { v4 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v18); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = byte_7493ED == 0; v6 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v6[20] = 0; if ( !v5 ) { if ( byte_14D21464 ) { sprintf(&v21, "%.255s", "skillerase Null return "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v21, dword_14D212E0); } } v7 = *((_WORD *)v1 + 80410); if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v7); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v20, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v20, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v19, "%.255s", v6); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v19, dword_14D212E0); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v8 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v8); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } } goto LABEL_28; } if ( *((_WORD *)v1 + 2) == *(_WORD *)v3 ) { v15 = off_849C18; *(_WORD *)off_849C18 = 18469; *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 836))(v1, v18); *((_WORD *)v15 + 1) = *((_WORD *)v1 + 2); *((_WORD *)v15 + 4) = *((_WORD *)v3 + 1); if ( sub_4C81E0(&off_849C18, 10) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 10); } LABEL_28: v23 = -1; goto LABEL_29; } v9 = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1388))(v1, v18); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = (int)&byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v9 + 12); v12 = v11; *(_DWORD *)(v11 + 16) = *(_DWORD *)(v9 + 16); *(_BYTE *)(v11 + 20) = 0; v13 = sub_418EA0((__time32_t)byte_14D211E0, (int)"skillerase Null "); v14 = sub_418EA0(v13, v12); sub_418F20(v14, (int)&unk_13359E04); v23 = -1; LABEL_29: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D21464: using guessed type char byte_14D21464; //----- (00579110) -------------------------------------------------------- int __stdcall sub_579110(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_ERASE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_SKILL_ERASE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2428))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_SKILL_ERASE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005791F0) -------------------------------------------------------- int __thiscall sub_5791F0(void *this, unsigned __int16 a2) { void *v2; // ebx@1 char v3; // cl@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_UnLearn"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_UnLearn"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= 0x3E8u ) sub_639100(&unk_86DDD8, (int)"CharacterPassiveList::cpl_Store : Invalid passive", a2); v3 = a2 % 8; if ( (unsigned __int8)(1 << v3) & *(_BYTE *)(a2 / 8 + *(_DWORD *)v2) && (unsigned int)a2 < *((_DWORD *)v2 + 1) ) *(_BYTE *)(((unsigned int)a2 >> 3) + *(_DWORD *)v2) &= ~(1 << v3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_UnLearn"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005792F0) -------------------------------------------------------- int __thiscall sub_5792F0(void *this) { void *v1; // esi@1 int v2; // ecx@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::ss_ExplosionReady"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineServant::ss_ExplosionReady"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 2416); *((_DWORD *)v1 + 2421) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(v2 + 112)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *((_WORD *)v1 + 4844) = *(_WORD *)(v2 + 108); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineServant::ss_ExplosionReady"); return (int)off_848CDC; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CDC: using guessed type int (__stdcall *off_848CDC[2])(int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (00579380) -------------------------------------------------------- int __stdcall sub_579380(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Routine"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionBase::meb_Routine"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionBase::meb_Routine"); return (int)off_848CD0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); //----- (005793D0) -------------------------------------------------------- void *__thiscall sub_5793D0(void *this, int a2, int a3) { void *v3; // edi@1 void *result; // eax@2 int v5; // eax@3 _UNKNOWN *v6; // ST08_4@3 int v7; // ST04_4@3 int v8; // eax@3 int v9; // eax@4 int v10; // esi@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionEnemy::meb_Routine"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionEnemy::meb_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2) ) { dword_13257738 = a2; v5 = *(_DWORD *)(a2 + 102); dword_1325773C = *(_DWORD *)v5; dword_13257740 = *(_DWORD *)(v5 + 4); dword_1325764C = 0; v6 = *(_UNKNOWN **)(a3 + 96); v7 = *(_DWORD *)(a2 + 102); v8 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v8, v7, v6, 0, (int)&dword_13257008, 0, 65535); if ( sub_4C0DC0((int)&dword_13257008) <= 0 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = v3; } else { v9 = sub_5792F0((void *)a2); --dword_750CB8; v10 = v9; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = (void *)v10; } } else { sub_4A34A0(a2, 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = off_848CD0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); // 13257008: using guessed type int dword_13257008; // 1325764C: using guessed type int dword_1325764C; // 13257738: using guessed type int dword_13257738; // 1325773C: using guessed type int dword_1325773C; // 13257740: using guessed type int dword_13257740; //----- (00579550) -------------------------------------------------------- void *__thiscall sub_579550(void *this, int a2, int a3) { void *v3; // edi@1 int v5; // eax@3 int v6; // ebx@3 int v7; // eax@9 int v8; // esi@9 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTarget::meb_Routine"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionTarget::meb_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2480))(a2) ) { sub_4A34A0(a2, 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTarget::meb_Routine"); return off_848CD0; } v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 3952))(a2); v6 = v5; if ( !v5 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 768))(v5) || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1156))(v6) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1156))(v6) == 3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 40))(v6) ) { sub_4A34A0(a2, 0); } else { if ( sub_402710(a2, v6) <= (unsigned int)(*(_DWORD *)(a3 + 96) * *(_DWORD *)(a3 + 96)) ) { v7 = sub_5792F0((void *)a2); --dword_750CB8; v8 = v7; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTarget::meb_Routine"); return (void *)v8; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTarget::meb_Routine"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); //----- (005796F0) -------------------------------------------------------- int __userpurge sub_5796F0(int a1, double a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@1 int v7; // [sp-4h] [bp-24h]@2 v4 = a1; sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionAlways::meb_Routine"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionAlways::meb_Routine"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2480))(a3); if ( !v5 ) { v7 = 0; LABEL_3: sub_4A34A0(a3, v7); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionAlways::meb_Routine"); return (int)off_848CD0; } if ( *(_WORD *)(a3 + 9688) <= 0 ) { v7 = 3; goto LABEL_3; } if ( *(_DWORD *)(a3 + 9684) <= (unsigned int)dword_14D129E8 ) { if ( sub_4A6D00(a2, a3, a4, v5) ) --*(_WORD *)(a3 + 9688); if ( *(_WORD *)(a3 + 9688) <= 0 ) { v7 = 1; goto LABEL_3; } *(_DWORD *)(a3 + 9684) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(a3 + 9664) + 112)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionAlways::meb_Routine"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); // 14D129E8: using guessed type int dword_14D129E8; //----- (00579840) -------------------------------------------------------- void *__thiscall sub_579840(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 void *result; // eax@2 int v6; // eax@3 _UNKNOWN *v7; // ST08_4@3 int v8; // ST04_4@3 int v9; // eax@3 int v10; // eax@3 int v11; // eax@5 int v12; // eax@7 int v13; // esi@7 v3 = this; sub_4675D0((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTargetAll::meb_Routine"); dword_7508B8[dword_750CB8] = (int)"MobExplosionElement::MobExplosionTargetAll::meb_Routine"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2480))(a2); if ( v4 ) { dword_132559C0 = a2; v6 = *(_DWORD *)(a2 + 102); dword_132559C4 = *(_DWORD *)v6; dword_132559C8 = *(_DWORD *)(v6 + 4); dword_132558D4 = 0; v7 = *(_UNKNOWN **)(a3 + 96); v8 = *(_DWORD *)(a2 + 102); v9 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a2, v9, v8, v7, 0, (int)&dword_13255290, 0, 65535); v10 = sub_4C0DC0((int)&dword_13255290); if ( v10 > 0 && (v10 != 1 || (v11 = sub_4C0DD0((int)&dword_13255290, 0)) != 0 && *(_WORD *)(v11 + 4) != *(_WORD *)(v4 + 4)) ) { v12 = sub_5792F0((void *)a2); --dword_750CB8; v13 = v12; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTargetAll::meb_Routine"); result = (void *)v13; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTargetAll::meb_Routine"); result = v3; } } else { sub_4A34A0(a2, 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobExplosionElement::MobExplosionTargetAll::meb_Routine"); result = off_848CD0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); // 13255290: using guessed type int dword_13255290; // 132558D4: using guessed type int dword_132558D4; // 132559C0: using guessed type int dword_132559C0; // 132559C4: using guessed type int dword_132559C4; // 132559C8: using guessed type int dword_132559C8; //----- (005799F0) -------------------------------------------------------- int __thiscall sub_5799F0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"; dword_750AB8[dword_750CB8++] = -1; if ( *((_BYTE *)v1 + 7888) & 0x10 ) { puts("ShineObjectClass::ShinePlayer::sp_SkillShiftCancel : Cancel"); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3788))(v1); *((_BYTE *)v1 + 7888) &= 0xEFu; *((_DWORD *)v1 + 1911) = 0; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00579AC0) -------------------------------------------------------- void *__thiscall sub_579AC0(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // eax@2 int v5; // ecx@3 int v6; // edx@3 char v8; // [sp+10h] [bp-20h]@3 int v9; // [sp+14h] [bp-1Ch]@3 int v10; // [sp+18h] [bp-18h]@3 int v11; // [sp+1Ch] [bp-14h]@3 void *v12; // [sp+20h] [bp-10h]@1 int v13; // [sp+2Ch] [bp-4h]@1 v3 = this; v12 = this; sub_5495B0((int)((char *)this + 4), *(_DWORD *)(a3 + 102), *(_DWORD *)(a2 + 102)); v13 = 0; if ( a3 == a2 ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2564))(a2); if ( v4 ) { sub_5495B0((int)&v8, *(_DWORD *)(v4 + 102), *(_DWORD *)(a2 + 102)); v5 = v10; v6 = v11; *((_DWORD *)v3 + 2) = v9; *((_DWORD *)v3 + 3) = v5; *((_DWORD *)v3 + 4) = v6; } } return v3; } //----- (00579B60) -------------------------------------------------------- int __thiscall sub_579B60(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_old_skill_blast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::smo_old_skill_blast"; dword_750AB8[dword_750CB8++] = -1; sub_577870(v5, a2, a3, a4, a5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::smo_old_skill_blast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00579C10) -------------------------------------------------------- int __thiscall sub_579C10(void *this, int a2, int a3, int a4, int a5) { void *v5; // esi@1 void (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // eax@1 int v8; // ecx@1 _BYTE *v9; // ecx@1 int v10; // ebx@1 int v11; // eax@2 int v12; // ecx@2 _BYTE *v13; // ecx@2 int v14; // eax@2 __int16 v15; // bx@2 int v16; // eax@2 __int16 v17; // dx@2 int v18; // edx@2 void *v19; // eax@2 int v20; // edi@2 int v21; // eax@4 void *v22; // eax@5 __int16 v23; // dx@5 int v24; // ST04_4@5 int v25; // eax@5 int v26; // eax@6 int v27; // ecx@6 _BYTE *v28; // ecx@6 __int16 v29; // ax@7 int v30; // ecx@7 unsigned int v31; // edx@7 int v32; // edi@7 void *v33; // eax@7 int v34; // ecx@7 int v35; // edx@7 int v36; // eax@9 void *v37; // eax@10 __int16 v38; // dx@10 int v39; // ecx@10 int v40; // edx@10 int v41; // ST04_4@10 int v42; // eax@10 bool v43; // zf@11 bool v44; // sf@11 char v45; // of@11 int v46; // ecx@14 __int16 v47; // di@14 unsigned __int16 v48; // bx@15 int v49; // edx@16 int v50; // ecx@17 int v51; // ecx@19 int v52; // edx@20 int v53; // edx@21 int v54; // eax@23 int v55; // edx@24 unsigned __int16 v56; // di@24 int v57; // edx@26 int v58; // eax@26 unsigned __int16 v59; // bx@26 int v60; // ecx@29 int v61; // eax@32 int v62; // eax@32 int v63; // eax@33 void (__thiscall *v64)(_DWORD); // eax@36 char v66; // [sp+10h] [bp-28h]@10 __int16 v67; // [sp+12h] [bp-26h]@16 __int64 v68; // [sp+1Ch] [bp-1Ch]@2 int v69; // [sp+24h] [bp-14h]@7 __int16 v70; // [sp+26h] [bp-12h]@7 int v71; // [sp+28h] [bp-10h]@1 int v72; // [sp+34h] [bp-4h]@1 int i; // [sp+40h] [bp+8h]@14 int v74; // [sp+40h] [bp+8h]@25 int j; // [sp+48h] [bp+10h]@24 v5 = this; v71 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"; dword_750AB8[dword_750CB8++] = -1; v6 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 3804); v72 = 0; v6(v5, 4045); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; sub_566EF0((char *)v5 + 7644); v10 = a2; *((_DWORD *)v5 + 1916) = a2; *((_WORD *)v5 + 3824) = **(_WORD **)(a2 + 4); if ( a3 ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1388))(v5); v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); *((_DWORD *)v13 + 4) = *(_DWORD *)(v11 + 16); v13[20] = 0; *((_DWORD *)v5 + 1913) = a3; v14 = *(_DWORD *)(a3 + 102); *((_DWORD *)v5 + 1914) = *(_DWORD *)v14; *((_DWORD *)v5 + 1915) = *(_DWORD *)(v14 + 4); v15 = sub_434770((int)&dword_87B264); v16 = *((_DWORD *)v5 + 1916); *((_WORD *)v5 + 3953) = v15; v17 = **(_WORD **)(v16 + 4); LOWORD(v16) = *(_WORD *)(a3 + 4); WORD2(v68) = v17; v18 = *(_DWORD *)v5; WORD3(v68) = v16; (*(void (__thiscall **)(void *))(v18 + 3904))(v5); v19 = off_849C18; v20 = HIDWORD(v68); *(_WORD *)off_849C18 = 9294; *(_DWORD *)((char *)v19 + 2) = v20; *((_WORD *)v19 + 3) = v15; if ( sub_4C81E0(&off_849C18, 8) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v21 + 12))(v21, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 8); } v22 = off_849C18; *(_WORD *)off_849C18 = 9295; v23 = *((_WORD *)v5 + 2); *((_DWORD *)v22 + 1) = v20; *((_WORD *)v22 + 1) = v23; *((_WORD *)v22 + 4) = v15; sub_4287B0(&v68, &off_849C18, 10); v24 = *(_DWORD *)((char *)v5 + 102); LOBYTE(v72) = 1; v25 = sub_427BD0(&unk_13253E80); sub_549E00(v5, v25, v24, 0, 0, (int)&v68, 0, 65535); LOBYTE(v72) = 0; sub_428A70(&v68); v10 = a2; } else { v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1388))(v5); v27 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v27; v28 = &byte_85A2C0[256 * v27]; *(_DWORD *)v28 = *(_DWORD *)v26; *((_DWORD *)v28 + 1) = *(_DWORD *)(v26 + 4); *((_DWORD *)v28 + 2) = *(_DWORD *)(v26 + 8); *((_DWORD *)v28 + 3) = *(_DWORD *)(v26 + 12); *((_DWORD *)v28 + 4) = *(_DWORD *)(v26 + 16); v28[20] = 0; if ( !a4 ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 3804))(v5, 4043); goto LABEL_38; } *((_DWORD *)v5 + 1914) = *(_DWORD *)a4; *((_DWORD *)v5 + 1915) = *(_DWORD *)(a4 + 4); v29 = sub_434770((int)&dword_87B264); v30 = *((_DWORD *)v5 + 1916); *((_WORD *)v5 + 3953) = v29; v31 = *(_DWORD *)a4; LOWORD(v68) = **(_WORD **)(v30 + 4); *(__int64 *)((char *)&v68 + 2) = __PAIR__(*(_DWORD *)(a4 + 4), v31); v32 = v68; v70 = v29; v33 = off_849C18; v34 = HIDWORD(v68); *(_WORD *)off_849C18 = 9296; v35 = v69; *(_DWORD *)((char *)v33 + 2) = v32; *(_DWORD *)((char *)v33 + 6) = v34; *(_DWORD *)((char *)v33 + 10) = v35; if ( sub_4C81E0(&off_849C18, 14) ) { v36 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v36 + 12))(v36, v5, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v37 = off_849C18; *(_WORD *)off_849C18 = 9297; v38 = *((_WORD *)v5 + 2); v39 = HIDWORD(v68); *((_DWORD *)v37 + 1) = v32; *((_WORD *)v37 + 1) = v38; v40 = v69; *((_DWORD *)v37 + 2) = v39; *((_DWORD *)v37 + 3) = v40; sub_4287B0(&v66, &off_849C18, 16); v41 = *(_DWORD *)((char *)v5 + 102); LOBYTE(v72) = 2; v42 = sub_427BD0(&unk_13253E80); sub_549E00(v5, v42, v41, 0, 0, (int)&v66, 0, 65535); LOBYTE(v72) = 0; sub_428A70(&v66); } *((_DWORD *)v5 + 1916) = v10; *((_WORD *)v5 + 3824) = **(_WORD **)(v10 + 4); v45 = 0; v43 = a5 == 0; v44 = a5 < 0; if ( a5 < 0 ) { a5 = *(_DWORD *)(*(_DWORD *)(v10 + 4) + 203); v45 = 0; v43 = a5 == 0; v44 = a5 < 0; } if ( !((unsigned __int8)(v44 ^ v45) | v43) ) { v46 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1324))(v5); v47 = *(_WORD *)(*(_DWORD *)(v46 + 3372) + 12 * *(_WORD *)(v46 + 3378) + 4); for ( i = v46; ; v46 = i ) { v48 = *(_WORD *)(v46 + 3368); if ( v47 >= v48 ) break; v49 = *(_DWORD *)(v46 + 3372); v67 = *(_WORD *)(v49 + 12 * (unsigned __int16)v47 + 4); if ( *(_BYTE *)(v49 + 12 * (unsigned __int16)v47 + 8) ) v50 = *(_DWORD *)(v49 + 12 * (unsigned __int16)v47); else v50 = 0; v51 = dword_871508[3 * *(_DWORD *)(v50 + 4)]; if ( v47 >= v48 || (v43 = *(_BYTE *)(v49 + 12 * (unsigned __int16)v47 + 8) == 0, v52 = v49 + 12 * (unsigned __int16)v47, v43) ) v53 = 0; else v53 = *(_DWORD *)v52; v54 = (*(int (__stdcall **)(int))(*(_DWORD *)v51 + 24))(v53); a5 += v54; v47 = v67; } } v55 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1324))(v5); v56 = *(_WORD *)(*(_DWORD *)(v55 + 3372) + 12 * *(_WORD *)(v55 + 3378) + 4); for ( j = v55; ; v55 = j ) { v74 = *(_WORD *)(v55 + 3368); if ( v56 >= (unsigned __int16)v74 ) break; v57 = *(_DWORD *)(v55 + 3372); v58 = v56; v59 = v56; v56 = *(_WORD *)(v57 + 12 * v56 + 4); if ( a5 <= 0 ) break; if ( v59 < (unsigned __int16)v74 && *(_BYTE *)(v57 + 12 * v58 + 8) ) v60 = *(_DWORD *)(v57 + 12 * v58); else v60 = 0; if ( v59 >= (unsigned __int16)v74 || (v61 = 3 * v58, v43 = *(_BYTE *)(v57 + 4 * v61 + 8) == 0, v62 = v57 + 4 * v61, v43) ) v63 = 0; else v63 = *(_DWORD *)v62; (*(void (__stdcall **)(int, int *))(*(_DWORD *)dword_871508[3 * *(_DWORD *)(v60 + 4)] + 96))(v63, &a5); } v64 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3732); *((_DWORD *)v5 + 1911) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * a5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * a5 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v64(v5); LABEL_38: --dword_750CB8; v72 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 871508: using guessed type int dword_871508[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (0057A1A0) -------------------------------------------------------- int __thiscall sub_57A1A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v6; // [sp-4h] [bp-20h]@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( **((_BYTE **)v4 + 957) == 6 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 9, 69, 8425); } else { if ( !(dword_13257774 & 1) ) { dword_13257774 |= 1u; word_13257770 = 4; atexit(nullsub_144); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13257770 ) { sub_577C30(v4, a2, a3, a4); v6 = 8424; } else { v6 = 8426; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 9, 69, v6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257770: using guessed type __int16 word_13257770; // 13257774: using guessed type int dword_13257774; //----- (0057A2D0) -------------------------------------------------------- char __thiscall sub_57A2D0(void *this) { void *v1; // esi@1 char v2; // al@1 char result; // al@2 unsigned __int16 i; // di@3 unsigned __int16 v5; // bx@5 int v6; // edx@6 int v7; // ecx@7 int v8; // ecx@9 int v9; // eax@11 void (__thiscall *v10)(_DWORD); // eax@14 unsigned __int16 v11; // [sp+12h] [bp-1Ah]@6 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_BYTE *)v1 + 7888); if ( v2 & 0x10 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); result = 0; } else { *((_BYTE *)v1 + 7888) = v2 & 0xBF; for ( i = *(_WORD *)(*((_DWORD *)v1 + 951) + 12 * *((_WORD *)v1 + 1905) + 4); ; i = v11 ) { v5 = *((_WORD *)v1 + 1900); if ( i >= v5 ) break; v6 = *((_DWORD *)v1 + 951); v11 = *(_WORD *)(v6 + 12 * i + 4); if ( *(_BYTE *)(v6 + 12 * i + 8) ) v7 = *(_DWORD *)(v6 + 12 * i); else v7 = 0; v8 = dword_871508[3 * *(_DWORD *)(v7 + 4)]; if ( i < v5 && *(_BYTE *)(v6 + 12 * i + 8) ) v9 = *(_DWORD *)(v6 + 12 * i); else v9 = 0; if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v8 + 32))(v9) ) { v10 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3928); *((_BYTE *)v1 + 7888) |= 0x40u; v10(v1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); return 0; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (0057A470) -------------------------------------------------------- int __thiscall sub_57A470(void *this) { void *v1; // esi@1 unsigned __int16 v2; // bx@1 unsigned __int16 v3; // di@2 int v4; // eax@3 int v5; // edx@3 unsigned __int16 v6; // si@3 int v7; // ecx@5 int v8; // ecx@7 int v9; // eax@8 bool v10; // zf@8 int v11; // eax@8 int v12; // eax@9 int v13; // eax@11 void *v15; // [sp+14h] [bp-14h]@1 int v16; // [sp+18h] [bp-10h]@1 v1 = this; v15 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlastOption"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlastOption"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; v2 = *(_WORD *)(*((_DWORD *)v1 + 951) + 12 * *((_WORD *)v1 + 1905) + 4); while ( 1 ) { v3 = *((_WORD *)v15 + 1900); if ( v2 >= v3 ) break; v4 = v2; v5 = *((_DWORD *)v15 + 951); v6 = v2; v2 = *(_WORD *)(v5 + 12 * v2 + 4); if ( v6 < v3 && *(_BYTE *)(v5 + 12 * v4 + 8) ) v7 = *(_DWORD *)(v5 + 12 * v4); else v7 = 0; v8 = dword_871508[3 * *(_DWORD *)(v7 + 4)]; if ( v6 >= v3 || (v9 = 3 * v4, v10 = *(_BYTE *)(v5 + 4 * v9 + 8) == 0, v11 = v5 + 4 * v9, v10) ) v12 = 0; else v12 = *(_DWORD *)v11; v13 = (*(int (__stdcall **)(int))(*(_DWORD *)v8 + 28))(v12); if ( v16 < v13 ) v16 = v13; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlastOption"); return v16; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871508: using guessed type int dword_871508[]; //----- (0057A5A0) -------------------------------------------------------- int __thiscall sub_57A5A0(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 bool v4; // zf@1 int v5; // eax@3 int v6; // edi@5 int v7; // eax@8 int v8; // eax@12 void *v9; // eax@15 int v10; // ST0C_4@15 int v11; // eax@15 __int16 v12; // ax@15 char v14; // [sp+Ch] [bp-1Ch]@15 int v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@1 v2 = (int)this; v15 = (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 7664); v4 = *(_BYTE *)(v3 + 520) == 0; v16 = 0; if ( !v4 ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v2 + 1608))(v2, v3 + 520, v3 + 536); v5 = *(_DWORD *)(v2 + 7664); if ( *(_BYTE *)(v5 + 528) ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v2 + 1608))(v2, v5 + 528, v5 + 536); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1612))(v2); } v6 = a2; if ( a2 ) { if ( *(_BYTE *)(a2 + 272) == 1 ) { v7 = sub_54DF90(&unk_13253630, (int)&a2, 6); if ( v7 ) (*(void (__thiscall **)(int, int, int, _DWORD, int, int))(*(_DWORD *)v7 + 2008))( v7, a2, v2, *(_DWORD *)(v2 + 7664), v2 + 7656, v2 + 7684); else sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread : Too many FieldObject", 0); } if ( *(_BYTE *)(v6 + 440) == 1 ) { v8 = sub_54DF90(&unk_13253630, (int)&a2, 6); if ( v8 ) (*(void (__thiscall **)(int, int, int, _DWORD, int, int))(*(_DWORD *)v8 + 2012))( v8, a2, v2, *(_DWORD *)(v2 + 7664), v2 + 7656, v2 + 7684); else sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread : Too many FieldObject", 0); } dword_13254C88 = 0; sub_578350((void *)v2, *(_DWORD *)(v2 + 7664), v2 + 7656); *(_BYTE *)(v2 + 7888) &= 0xEFu; v9 = off_849C18; *(_WORD *)off_849C18 = 9303; *((_WORD *)v9 + 2) = *(_WORD *)(v2 + 4); *((_WORD *)v9 + 1) = *(_WORD *)(v2 + 7906); *((_WORD *)v9 + 3) = *(_WORD *)(v2 + 7648); sub_4287B0(&v14, &off_849C18, 8); v10 = *(_DWORD *)(v2 + 102); LOBYTE(v16) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v11, v10, 0, 0, (int)&v14, 1, 65535); LOBYTE(v16) = 0; sub_428A70(&v14); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3828))(v2); sub_437E60(&dword_87B264, *(_WORD *)(v2 + 7906), *(_DWORD *)(v2 + 7664), v2, 0, v2 + 7656, -1, v12, 0, 1u); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread : SkillDataIndex NULL", a2); } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254C88: using guessed type int dword_13254C88; //----- (0057A830) -------------------------------------------------------- int __thiscall sub_57A830(void *this, int a2, int a3) { int v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 char v6; // al@3 int v7; // eax@9 int v8; // ecx@9 _BYTE *v9; // ecx@9 void *v10; // eax@11 int v11; // ST0C_4@11 int v12; // eax@11 __int16 v13; // ax@11 int v15; // [sp-4h] [bp-30h]@4 char v16; // [sp+10h] [bp-1Ch]@11 int v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 v3 = (int)this; v17 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(v3 + 7664); v5 = *(_DWORD *)(v4 + 4); v18 = 0; if ( *(_BYTE *)(v5 + 192) ) *(_BYTE *)(v3 + 7888) |= 0x10u; v6 = *(_BYTE *)(v3 + 7888); if ( v6 & 0x10 ) { *(_BYTE *)(v3 + 7888) = v6 & 0xEF; if ( *(_BYTE *)(v4 + 376) ) { if ( *(_BYTE *)(v3 + 7398) & 2 || *(_DWORD *)(v3 + 368) == 3 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3788))(v3); LABEL_12: v15 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; v18 = -1; goto LABEL_13; } sub_459090((void *)v3, a2); } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); *((_DWORD *)v9 + 4) = *(_DWORD *)(v7 + 16); v9[20] = 0; dword_13254C88 = 0; if ( *(_BYTE *)(*(_DWORD *)(v3 + 7664) + 216) ) { sub_4A7180((void *)v3, a2, *(_DWORD *)(v3 + 7664)); sub_578350((void *)v3, *(_DWORD *)(v3 + 7664), a2); } v10 = off_849C18; *(_WORD *)off_849C18 = 9303; *((_WORD *)v10 + 2) = *(_WORD *)(v3 + 4); *((_WORD *)v10 + 1) = *(_WORD *)(v3 + 7906); *((_WORD *)v10 + 3) = *(_WORD *)(v3 + 7648); sub_4287B0(&v16, &off_849C18, 8); v11 = *(_DWORD *)(v3 + 102); LOBYTE(v18) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v12, v11, 0, 0, (int)&v16, 1, 65535); LOBYTE(v18) = 0; sub_428A70(&v16); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3828))(v3); sub_437E60(&dword_87B264, *(_WORD *)(v3 + 7906), *(_DWORD *)(v3 + 7664), v3, 0, a2, -1, v13, 0, 1u); goto LABEL_12; } *(_DWORD *)(v3 + 7644) += 3; *(_BYTE *)(v3 + 7888) = v6 | 0x10; v18 = -1; v15 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; LABEL_13: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13254C88: using guessed type int dword_13254C88; //----- (0057AA60) -------------------------------------------------------- int __thiscall sub_57AA60(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // ecx@1 int v5; // eax@1 int v6; // eax@4 void *v7; // eax@5 int v8; // eax@7 char v9; // al@12 int v10; // eax@14 int v11; // ecx@14 _BYTE *v12; // ecx@14 int v13; // eax@14 int v14; // eax@16 int v15; // ecx@24 int v16; // edx@24 signed int v17; // eax@24 int (__thiscall *v18)(_DWORD); // eax@24 int v19; // ebx@24 int v20; // eax@24 int v21; // eax@24 int v22; // ST20_4@24 bool v23; // zf@26 int v24; // eax@26 int v25; // ebx@30 void *v26; // eax@32 int v27; // ST0C_4@32 int v28; // eax@32 __int16 v29; // ax@32 int (__stdcall **v31)(int); // [sp+10h] [bp-30h]@24 int v32; // [sp+14h] [bp-2Ch]@24 int v33; // [sp+18h] [bp-28h]@24 int v34; // [sp+1Ch] [bp-24h]@24 char v35; // [sp+20h] [bp-20h]@32 int v36; // [sp+24h] [bp-1Ch]@24 int v37; // [sp+28h] [bp-18h]@24 int v38; // [sp+2Ch] [bp-14h]@1 int v39; // [sp+30h] [bp-10h]@1 int v40; // [sp+3Ch] [bp-4h]@1 v3 = (int)this; v38 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)(v3 + 7664); v40 = 0; v39 = -1; if ( *(_BYTE *)(v5 + 232) ) { if ( !a2 || !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v3 + 2432))( v3, a2, "smo_SkillBash_Blast") || (v6 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 2476))(a2, v3), v6 == -1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3904))(v3); v7 = off_849C18; *(_WORD *)off_849C18 = 9303; *((_WORD *)v7 + 2) = *(_WORD *)(v3 + 4); *((_WORD *)v7 + 1) = *(_WORD *)(v3 + 7906); *((_WORD *)v7 + 3) = **(_WORD **)(*(_DWORD *)(v3 + 7664) + 4); if ( sub_4C81E0(&off_849C18, 8) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Packet Too Long", 8); } sub_578270(a2); sub_578350((void *)v3, *(_DWORD *)(v3 + 7664), *(_DWORD *)(a2 + 102)); LABEL_33: v40 = -1; goto LABEL_34; } *(_BYTE *)(v3 + 7888) |= 0x10u; v39 = 2 * v6; v4 = -1; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 192) ) *(_BYTE *)(v3 + 7888) |= 0x10u; v9 = *(_BYTE *)(v3 + 7888); if ( v9 & 0x10 ) { *(_BYTE *)(v3 + 7888) = v9 & 0xEF; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); *((_DWORD *)v12 + 4) = *(_DWORD *)(v10 + 16); v12[20] = 0; dword_13254C88 = 0; v13 = *(_DWORD *)(v3 + 7664); if ( *(_BYTE *)(v13 + 520) ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 1608))(v3, v13 + 520, v13 + 536); v14 = *(_DWORD *)(v3 + 7664); if ( *(_BYTE *)(v14 + 528) ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 1608))(v3, v14 + 528, v14 + 536); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1612))(v3); } if ( *(_BYTE *)(*(_DWORD *)(v3 + 7664) + 216) ) { sub_4A7780((void *)v3, *(_DWORD *)(v3 + 7664)); sub_578350((void *)v3, *(_DWORD *)(v3 + 7664), *(_DWORD *)(a2 + 102)); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3928))(v3); } if ( *(_BYTE *)(*(_DWORD *)(v3 + 7664) + 368) && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 2) ) sub_45A580((void *)v3, a2); if ( *(_BYTE *)(*(_DWORD *)(v3 + 7664) + 360) ) { v15 = *(_DWORD *)(a2 + 102); v16 = *(_DWORD *)(v3 + 102); v17 = *(_DWORD *)v15 - *(_DWORD *)v16; v33 = *(_DWORD *)(v15 + 4) - *(_DWORD *)(v16 + 4); v32 = v17; v31 = &off_6B039C; v34 = sub_4011C0(&unk_AF09DA8, v17, v33); v18 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1740); LOBYTE(v40) = 1; v19 = v18(a2); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1740))(v3); sub_4614A0((int)&v31, v20 + v19); v21 = *(_DWORD *)(a2 + 102); v36 = *(_DWORD *)v21 - v32; v22 = *(_DWORD *)(v3 + 7664); v37 = *(_DWORD *)(v21 + 4) - v33; sub_4A7180((void *)v3, (int)&v36, v22); sub_578350((void *)v3, *(_DWORD *)(v3 + 7664), *(_DWORD *)(a2 + 102)); LOBYTE(v40) = 0; } if ( *(_DWORD *)(*(_DWORD *)(v3 + 7664) + 24) != *(_DWORD *)(*(_DWORD *)(v3 + 7664) + 28) ) { v23 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 3012))(v3, *(_WORD *)(v3 + 7648)) == 1; v24 = *(_DWORD *)v3; if ( v23 ) (*(void (__thiscall **)(int, _DWORD))(v24 + 3020))(v3, *(_DWORD *)(v3 + 7664)); else (*(void (__thiscall **)(int, _DWORD, int))(v24 + 3016))(v3, *(_DWORD *)(v3 + 7664), a3); sub_578350((void *)v3, *(_DWORD *)(v3 + 7664), *(_DWORD *)(a2 + 102)); } v25 = *(_DWORD *)(a2 + 102); if ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7664) + 4) + 184) == 1 ) v25 = *(_DWORD *)(v3 + 102); v26 = off_849C18; *(_WORD *)off_849C18 = 9303; *((_WORD *)v26 + 2) = *(_WORD *)(v3 + 4); *((_WORD *)v26 + 1) = *(_WORD *)(v3 + 7906); *((_WORD *)v26 + 3) = *(_WORD *)(v3 + 7648); sub_4287B0(&v35, &off_849C18, 8); v27 = *(_DWORD *)(v3 + 102); LOBYTE(v40) = 2; v28 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v28, v27, 0, 0, (int)&v35, 1, 65535); LOBYTE(v40) = 0; sub_428A70(&v35); v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3828))(v3); sub_437E60(&dword_87B264, *(_WORD *)(v3 + 7906), *(_DWORD *)(v3 + 7664), v3, a2, v25, v39, v29, 0, 1u); goto LABEL_33; } *(_DWORD *)(v3 + 7644) += 3; *(_BYTE *)(v3 + 7888) = v9 | 0x10; v40 = v4; LABEL_34: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"); } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13254C88: using guessed type int dword_13254C88; //----- (0057AEF0) -------------------------------------------------------- int __thiscall sub_57AEF0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edx@1 int v5; // eax@1 void (*v6)(void); // edx@1 int v7; // ecx@2 int v8; // eax@2 int v10; // [sp+8h] [bp-8h]@1 int v11; // [sp+Ch] [bp-4h]@1 v2 = this; v3 = *(_DWORD *)(this + 102); v10 = *(_DWORD *)v3; v4 = *(_DWORD *)(v3 + 4); v5 = *(_DWORD *)this; v11 = v4; v6 = *(void (**)(void))(v5 + 2632); *(_DWORD *)(this + 368) = 0; v6(); sub_452220(v2, *(_DWORD *)a2, *(_DWORD *)(a2 + 4), 6); sub_4414C0((void *)v2); sub_4BD660((void *)v2, (int)&v10); if ( *(_DWORD *)(v2 + 368) != 3 ) { v7 = *(_DWORD *)(v2 + 372); *(_DWORD *)(v2 + 368) = 0; *(_DWORD *)(v2 + 396) = 0; *(_DWORD *)(v2 + 400) = 0; *(_DWORD *)(v2 + 404) = 0; *(_DWORD *)(v2 + 408) = 0; *(_DWORD *)(v2 + 412) = 0; *(_DWORD *)(v2 + 376) = 0; v8 = *(_DWORD *)(v7 + 102); *(_DWORD *)(v2 + 388) = *(_DWORD *)v8; *(_DWORD *)(v2 + 392) = *(_DWORD *)(v8 + 4); } return (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2636))(v2); } //----- (0057AFB0) -------------------------------------------------------- int __thiscall sub_57AFB0(void *this, unsigned __int16 a2) { int v2; // ebx@1 void *v3; // edi@1 bool v4; // zf@1 int v5; // edi@2 int v6; // esi@3 int v7; // eax@3 void *v8; // esi@3 int v9; // edi@3 int v10; // eax@5 int v11; // ST10_4@6 int v12; // eax@6 signed int v13; // esi@6 int v14; // eax@6 int v15; // eax@6 int v16; // eax@6 int v17; // edx@6 __int16 v18; // ax@6 int v19; // edx@6 int v20; // eax@8 int v21; // esi@10 int v22; // eax@10 int v23; // eax@13 char *v24; // eax@15 int v25; // eax@17 int v26; // esi@18 unsigned __int8 v27; // al@18 int v28; // edi@19 int v29; // eax@19 int v30; // ST04_4@23 int v31; // eax@23 int v32; // eax@23 int v33; // ecx@24 int v34; // eax@28 int *v35; // esi@29 int v36; // eax@30 char v38; // [sp+10h] [bp-24h]@6 int v39; // [sp+1Ch] [bp-18h]@1 int v40; // [sp+20h] [bp-14h]@16 int v41; // [sp+24h] [bp-10h]@17 int v42; // [sp+30h] [bp-4h]@1 int v43; // [sp+3Ch] [bp+8h]@16 v2 = (int)this; v39 = (int)"ShineObjectClass::ShinePlayer::sp_ReviveNow"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ReviveNow"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ReviveNow"; dword_750AB8[dword_750CB8++] = -1; **(_BYTE **)(v2 + 3828) = 1; v3 = (void *)(*(_DWORD *)(v2 + 32650) + 37); v4 = *(_BYTE *)(v2 + 155503) == 0; v42 = 0; if ( !v4 ) { memcpy(v3, (const void *)(v2 + 155460), 0x28u); v5 = (int)((char *)v3 + 40); *(_WORD *)v5 = *(_WORD *)(v2 + 155500); *(_BYTE *)(v5 + 2) = *(_BYTE *)(v2 + 155502); *(_BYTE *)(v2 + 155503) = 0; } v6 = *(_DWORD *)v2; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1264))(v2); (*(void (__thiscall **)(int, unsigned int))(v6 + 1252))( v2, (unsigned int)((unsigned int)a2 * v7 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_BYTE *)(v2 + 7636) = 0; sub_4989A0((void *)v2, (int (__stdcall *)(_DWORD))sub_496220); v8 = off_849C18; *(_WORD *)off_849C18 = 18462; *(_DWORD *)((char *)v8 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1256))(v2); *(_DWORD *)((char *)v8 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1260))(v2); *(_DWORD *)((char *)v8 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3464))(v2); v9 = 0; if ( sub_4C81E0(&off_849C18, 14) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ReviveNow : Packet Too Long", 14); } *(_WORD *)v8 = 18463; *((_WORD *)v8 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1256))(v2); *((_DWORD *)v8 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1260))(v2); *((_DWORD *)v8 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3464))(v2); sub_4287B0(&v38, &off_849C18, 16); v11 = *(_DWORD *)(v2 + 102); LOBYTE(v42) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v12, v11, 0, 0, (int)&v38, 0, 65535); *(_BYTE *)(v2 + 23824) &= 0xF7u; v13 = -1; (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, 291, 1, dword_87777C, dword_14D129E8, 0, -1, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 122) + 12) + 63), 10, 0); sub_401900((void *)v2, 291); sub_40ADC0((void *)(v2 + 432), (void *)v2); v14 = *(_DWORD *)(v2 + 32650); *(_BYTE *)(v2 + 7636) = 0; *(_DWORD *)(v2 + 7640) = 0; *(_WORD *)(v14 + 84) = word_13244DBC; *(_BYTE *)(v14 + 86) = byte_13244DBE; *(_DWORD *)(v2 + 368) = 0; v15 = *(_DWORD *)(v2 + 372); *(_DWORD *)(v2 + 368) = 0; *(_DWORD *)(v2 + 396) = 0; *(_DWORD *)(v2 + 400) = 0; *(_DWORD *)(v2 + 404) = 0; *(_DWORD *)(v2 + 408) = 0; *(_DWORD *)(v2 + 412) = 0; *(_DWORD *)(v2 + 376) = 0; v16 = *(_DWORD *)(v15 + 102); *(_DWORD *)(v2 + 388) = *(_DWORD *)v16; *(_DWORD *)(v2 + 392) = *(_DWORD *)(v16 + 4); *(_WORD *)(v2 + 332) = 0; *(_DWORD *)(v2 + 7644) = 0; *(_DWORD *)(v2 + 155404) = 7; *(_DWORD *)(v2 + 155400) = 0; *(_DWORD *)(v2 + 155568) = sub_55C1D0; *(_DWORD *)(v2 + 7892) = -1; *(_DWORD *)(v2 + 81996) = dword_14D129E8; *(_DWORD *)(v2 + 82008) = dword_14D129E8; v17 = *(_DWORD *)v2; *(_DWORD *)(v2 + 82000) = dword_14D129E8; *(_DWORD *)(v2 + 82012) = dword_14D129E8; *(_DWORD *)(v2 + 82004) = nullsub_2; *(_DWORD *)(v2 + 82016) = nullsub_2; v18 = (*(int (__thiscall **)(int))(v17 + 1300))(v2); v19 = *(_DWORD *)v2; *(_WORD *)(v2 + 156346) = v18; *(_WORD *)(v2 + 156348) = (*(int (__thiscall **)(int))(v19 + 1304))(v2); *(_DWORD *)off_849C18 = *(_DWORD *)(v2 + 156344); *((_WORD *)off_849C18 + 2) = *(_WORD *)(v2 + 156348); if ( sub_4C81E0(&off_849C18, 6) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v20 + 12))(v20, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } *(_BYTE *)(v2 + 7888) &= 0xFDu; *(_BYTE *)(v2 + 160360) = 0; *(_DWORD *)(v2 + 160752) = -1; sub_4406A0((void *)v2); if ( (*(_BYTE *)(v2 + 23848) & 0xF) == 2 ) { v21 = dword_877784; (*(void (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, *(_DWORD *)(*(_DWORD *)dword_877784 + 34), 1, dword_877784, dword_14D129E8, 0, -1, 1000000000, 0, 0); sub_401900((void *)v2, *(_DWORD *)(*(_DWORD *)v21 + 34)); v22 = *(_DWORD *)(v21 + 48); if ( v22 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 1008))( v2, *(_DWORD *)(*(_DWORD *)v21 + 34), *(_DWORD *)(v22 + 43), 1); sub_4055D0((void *)v2, *(_DWORD *)(*(_DWORD *)v21 + 34), *(_DWORD *)(*(_DWORD *)(v21 + 48) + 43), 1); } v13 = -1; } v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1056))(v2); if ( v23 && (v24 = sub_5C7D90(&unk_1325D0A0, *(_BYTE *)(v23 + 1160), *(_BYTE *)(v23 + 1161))) != 0 ) { v40 = (unsigned __int8)*v24; v43 = 0; if ( v40 <= 0 ) { LABEL_23: v30 = *(_DWORD *)(v2 + 102); v31 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v2, v31, v30, 0, 0, (int)sub_566BE0, 0, 0, v9, 0, 65535); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 3860))(v2, 0); v32 = *(_DWORD *)(v2 + 122); if ( v32 ) { v33 = *(_DWORD *)(v32 + 12); if ( v33 ) { if ( *(_BYTE *)(v33 + 54) == 1 && *(_DWORD *)(v32 + 60) == -1 ) sub_43C920((void *)v2); sub_4D1950(v2, 9); v34 = *(_DWORD *)(v2 + 122); if ( v34 ) { v35 = *(int **)(v34 + 16); if ( v35 ) { v36 = sub_461E60(*(_DWORD *)(v34 + 504)); sub_463870(&unk_1325D018, *(_WORD *)v35, v36, (void *)v2); } } } } } else { v25 = (int)(v24 + 4); v41 = v25; while ( 1 ) { v26 = *(_DWORD *)(v25 + 4); v27 = *(_BYTE *)v25; if ( v26 == v9 ) break; v28 = v27; v29 = *(_DWORD *)(v26 + 36 * v27 + 12); if ( v29 && (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, *(_DWORD *)(*(_DWORD *)v26 + 34), v28, v26, dword_14D129E8, 0, -1, *(_DWORD *)(v29 + 43), 1, 0) ) { sub_401900((void *)v2, *(_DWORD *)(*(_DWORD *)v26 + 34)); sub_4055D0((void *)v2, *(_DWORD *)(*(_DWORD *)v26 + 34), -1, v28); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v2 + 1008))( v2, *(_DWORD *)(*(_DWORD *)v26 + 34), -1, 1); } v25 = v41 + 12; v9 = 0; ++v43; v41 += 12; if ( v43 >= v40 ) goto LABEL_23; } } LOBYTE(v42) = 0; sub_428A70(&v38); v42 = -1; } else { LOBYTE(v42) = 0; sub_428A70(&v38); v42 = v13; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ReviveNow"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 87777C: using guessed type int dword_87777C; // 877784: using guessed type int dword_877784; // 13244DBC: using guessed type __int16 word_13244DBC; // 13244DBE: using guessed type char byte_13244DBE; // 14D129E8: using guessed type int dword_14D129E8; //----- (0057B5A0) -------------------------------------------------------- char __thiscall sub_57B5A0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 v4 = this; *(_BYTE *)(v4 + 7888) ^= (*(_BYTE *)(this + 7888) ^ 2 * (*(_BYTE *)(a2 + 304) != 0)) & 2; sub_579C10((void *)this, a2, a3, a4, -1); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1324))(v4); return sub_5A7F60(v5 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); } //----- (0057B600) -------------------------------------------------------- int __thiscall sub_57B600(void *this, int a2, __int16 *a3, int a4, int a5) { int v5; // edi@1 int v6; // esi@1 int v7; // eax@1 __int16 v8; // dx@3 int v9; // eax@3 int v10; // ebx@3 int (__thiscall *v11)(_DWORD, _DWORD); // edx@3 int v12; // eax@5 int v13; // ebx@5 unsigned __int16 v14; // si@6 unsigned __int16 v15; // dx@7 int v16; // ecx@8 int v17; // eax@8 unsigned __int16 v18; // ST20_2@8 bool v19; // zf@9 int v20; // ecx@9 void *v21; // ecx@10 int v22; // eax@15 char v24; // [sp+1Ch] [bp-1Ch]@3 int v25; // [sp+20h] [bp-18h]@3 __int16 v26; // [sp+24h] [bp-14h]@3 int v27; // [sp+28h] [bp-10h]@1 int v28; // [sp+34h] [bp-4h]@1 signed int v29; // [sp+40h] [bp+8h]@3 v5 = (int)this; v27 = (int)"ShineObjectClass::ShineMobileObject::smo_Dispel"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_Dispel"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_Dispel"; dword_750AB8[dword_750CB8++] = -1; v6 = a2; v7 = *(_DWORD *)(*(_DWORD *)(a2 + 4) + 527); v28 = 0; if ( v7 == 9 || v7 == 8 ) { v8 = *a3; v9 = *(_DWORD *)v5; v10 = a4; v24 = 0; v26 = v8; v11 = *(int (__thiscall **)(_DWORD, _DWORD))(v9 + 1836); v29 = 0; v25 = v6; if ( (unsigned __int8)v11(v5, a4) ) { if ( *(_BYTE *)(v6 + 352) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1324))(a4); v13 = v12; if ( v12 ) { v14 = *(_WORD *)(*(_DWORD *)(v12 + 3372) + 12 * *(_WORD *)(v12 + 3378) + 4); while ( 1 ) { v15 = *(_WORD *)(v13 + 3368); if ( v14 >= v15 ) break; v16 = *(_DWORD *)(v13 + 3372); v17 = v14; v18 = v14; v14 = *(_WORD *)(v16 + 12 * v14 + 4); if ( v18 >= v15 || (v19 = *(_BYTE *)(v16 + 12 * v17 + 8) == 0, v20 = v16 + 12 * v17, v19) ) v21 = 0; else v21 = *(void **)v20; if ( sub_4087B0(v21, v5, 95) ) { v29 = 256; break; } } } v10 = a4; } else { v29 = *(_BYTE *)(v6 + 224) != 0 ? 512 : 2; } } else { if ( *(_DWORD *)(*(_DWORD *)(v6 + 4) + 527) == 8 ) { v29 = 24; } else { if ( *(_BYTE *)(v6 + 320) ) v29 = 4; if ( *(_BYTE *)(v6 + 344) ) v29 |= 8u; if ( *(_BYTE *)(v6 + 336) ) v29 |= 0x10u; if ( *(_BYTE *)(v6 + 328) ) v29 |= 0x20u; if ( *(_BYTE *)(v6 + 432) ) v29 |= 0x400u; } } (*(void (__thiscall **)(int, int, char *, int))(*(_DWORD *)v5 + 1444))(v5, v10, &v24, a5); (*(void (__thiscall **)(int, int, char *, int, signed int))(*(_DWORD *)v5 + 1448))(v5, v10, &v24, a5, v29); v22 = 6 * dword_13254C88; dword_13254C90[6 * dword_13254C88] = v10; BYTE3(dword_13254C9C[v22]) = 1; LOBYTE(dword_13254CA0[v22]) = 0; } --dword_750CB8; v28 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_Dispel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254C88: using guessed type int dword_13254C88; // 13254C90: using guessed type int dword_13254C90[]; // 13254C9C: using guessed type int dword_13254C9C[]; // 13254CA0: using guessed type int dword_13254CA0[]; //----- (0057B840) -------------------------------------------------------- char __thiscall sub_57B840(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@7 int v6; // eax@7 int v7; // eax@7 int v8; // ebx@8 long double v9; // st7@9 int v10; // eax@9 int v11; // eax@11 void (__thiscall *v12)(_DWORD); // eax@13 void *v13; // eax@13 int v14; // ecx@13 int v15; // eax@13 int v16; // eax@13 int v18; // [sp-4h] [bp-60h]@2 char v19; // [sp+10h] [bp-4Ch]@13 int v20; // [sp+1Ch] [bp-40h]@7 int v21; // [sp+20h] [bp-3Ch]@7 int v22; // [sp+24h] [bp-38h]@11 int v23; // [sp+28h] [bp-34h]@11 int v24; // [sp+2Ch] [bp-30h]@10 int v25; // [sp+30h] [bp-2Ch]@12 int v26; // [sp+34h] [bp-28h]@7 int v27; // [sp+38h] [bp-24h]@7 int v28; // [sp+3Ch] [bp-20h]@1 int v29; // [sp+40h] [bp-1Ch]@10 int v30; // [sp+44h] [bp-18h]@10 __int64 v31; // [sp+48h] [bp-14h]@8 int v32; // [sp+58h] [bp-4h]@1 int v33; // [sp+6Ch] [bp+10h]@8 v4 = (int)this; v28 = (int)"ShineObjectClass::ShineMobileObject::smo_JumpTo"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_JumpTo"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_JumpTo"; dword_750AB8[dword_750CB8++] = -1; v32 = 0; if ( a3 && *(_DWORD *)(a3 + 4) && *(_DWORD *)(v4 + 122) && a2 && a4 ) { v5 = *(_DWORD *)(v4 + 102); v26 = *(_DWORD *)v5; v27 = *(_DWORD *)(v5 + 4); v20 = *(_DWORD *)v5; v21 = *(_DWORD *)(v5 + 4); v6 = *(_DWORD *)(v5 + 4) - *(_DWORD *)(a2 + 4); v7 = (*(_DWORD *)v5 - *(_DWORD *)a2) * (*(_DWORD *)v5 - *(_DWORD *)a2) + v6 * v6; if ( *(_BYTE *)(a3 + 584) == 1 ) { v31 = (signed __int64)sqrt((double)(unsigned int)v7); v8 = v31 - *(_DWORD *)(a3 + 588); v33 = v31 - *(_DWORD *)(a3 + 588); } else { v9 = sqrt((double)(unsigned int)v7); HIDWORD(v31) = HIWORD(v7) | 0xC00; v10 = *(_DWORD *)(a3 + 516); v31 = (signed __int64)v9; v8 = v10 + (unsigned __int64)(signed __int64)v9; v33 = v10; } sub_4620E0((int)&v29, a2, v5); LOBYTE(v32) = 1; sub_4614A0((int)&v29, v8); v26 += v30; v27 += v31; if ( sub_4BD750( (void *)v4, a2, (int)&v26, v33, (int)&v24, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) { v11 = *(_DWORD *)(v4 + 102); v22 = *(_DWORD *)v11; v23 = *(_DWORD *)(v11 + 4); sub_4BE0E0((void *)v4, (int)&v24, v8, (int)&v22, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v24 == v22 ) { if ( v25 == v23 ) { v12 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2632); *(_DWORD *)(v4 + 368) = 0; v12(v4); sub_4BD480((void *)v4, (int)&v24); sub_452220(v4, v24, v25, 11); sub_4BD660((void *)v4, (int)&v20); v13 = off_849C18; *(_WORD *)off_849C18 = 18477; *((_WORD *)v13 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v13 + 1) = v20; *((_DWORD *)v13 + 2) = v21; v14 = *(_DWORD *)(v4 + 102); *((_DWORD *)v13 + 3) = *(_DWORD *)v14; *((_DWORD *)v13 + 4) = *(_DWORD *)(v14 + 4); *((_BYTE *)v13 + 20) = **(_BYTE **)(v4 + 106); LOWORD(v14) = **(_WORD **)(a3 + 4); LODWORD(v31) = 23; *(_WORD *)((char *)v13 + 21) = v14; sub_4287B0(&v19, &off_849C18, v31); v15 = *(_DWORD *)(v4 + 102); LODWORD(v31) = 65535; v30 = 1; v29 = (int)&v19; v28 = 0; v27 = 0; v26 = v15; LOBYTE(v32) = 2; v16 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v16, v26, (_UNKNOWN *)v27, v28, v29, v30, v31); sub_43F0A0(v4 + 368); LOBYTE(v32) = 1; sub_428A70(&v19); --dword_750CB8; v32 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_JumpTo"); return 1; } } } --dword_750CB8; v18 = (int)"ShineObjectClass::ShineMobileObject::smo_JumpTo"; v32 = -1; } else { --dword_750CB8; v32 = -1; v18 = (int)"ShineObjectClass::ShineMobileObject::smo_JumpTo"; } sub_467660((int)&unk_D020420, v18); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0057BD80) -------------------------------------------------------- void __thiscall sub_57BD80(int this) { int v1; // esi@1 int v2; // eax@1 unsigned int v3; // edi@6 int v4; // eax@7 bool v5; // zf@7 void **v6; // eax@7 v1 = this; v2 = *(_DWORD *)(this + 16); if ( v2 ) { do { if ( v2 ) { --v2; *(_DWORD *)(this + 16) = v2; if ( !v2 ) *(_DWORD *)(this + 12) = 0; } } while ( *(_DWORD *)(this + 16) ); } v3 = *(_DWORD *)(this + 8); while ( v3 > 0 ) { v4 = *(_DWORD *)(v1 + 4); --v3; v5 = *(_DWORD *)(v4 + 4 * v3) == 0; v6 = (void **)(v4 + 4 * v3); if ( !v5 ) operator delete(*v6); } if ( *(_DWORD *)(v1 + 4) ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (0057BDF0) -------------------------------------------------------- int __thiscall sub_57BDF0(int this, int a2) { int v2; // eax@1 int v3; // eax@1 int v4; // esi@2 unsigned int v5; // eax@4 unsigned int v6; // edx@4 unsigned int v7; // ecx@4 int v8; // eax@4 char v10; // [sp+4h] [bp-18h]@1 char v11; // [sp+10h] [bp-Ch]@1 v2 = sub_574B00(this, (int)&v10); v3 = sub_574CD0((void *)v2, (int)&v11, a2); if ( *(_DWORD *)v3 ) v4 = **(_DWORD **)v3; else v4 = 0; v5 = *(_DWORD *)(v3 + 8); v6 = *(_DWORD *)(v4 + 8); v7 = v5 >> 2; v8 = v5 & 3; if ( v6 <= v7 ) v7 -= v6; return *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4 * v7) + 4 * v8; } //----- (0057BE40) -------------------------------------------------------- void *__thiscall sub_57BE40(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // eax@1 int (__thiscall **v5)(void *, char); // [sp+10h] [bp-20h]@4 void *v6; // [sp+1Ch] [bp-14h]@1 int v7; // [sp+20h] [bp-10h]@3 int v8; // [sp+2Ch] [bp-4h]@1 v1 = this; v6 = this; sub_4C0FA0(this); *(_DWORD *)v1 = &off_6EC8B0; v2 = (int)((char *)v1 + 1852); v8 = 0; *((_DWORD *)v1 + 463) = 0; v3 = operator new(8u); if ( !v3 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)v2 = v3; *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; **(_DWORD **)v2 = v2; *((_DWORD *)v1 + 464) = 0; *((_DWORD *)v1 + 465) = 0; *((_DWORD *)v1 + 466) = 0; *((_DWORD *)v1 + 467) = 0; *((_WORD *)v1 + 938) = 0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); //----- (0057BEF0) -------------------------------------------------------- void *__thiscall sub_57BEF0(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // eax@1 int (__thiscall **v5)(void *, char); // [sp+10h] [bp-20h]@4 void *v6; // [sp+1Ch] [bp-14h]@1 int v7; // [sp+20h] [bp-10h]@3 int v8; // [sp+2Ch] [bp-4h]@1 v1 = this; v6 = this; sub_4C0FA0(this); *(_DWORD *)v1 = &off_6EC8B0; v2 = (int)((char *)v1 + 1852); v8 = 0; *((_DWORD *)v1 + 463) = 0; v3 = operator new(8u); if ( !v3 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)v2 = v3; *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; **(_DWORD **)v2 = v2; *((_DWORD *)v1 + 464) = 0; *((_DWORD *)v1 + 465) = 0; *((_DWORD *)v1 + 466) = 0; *((_DWORD *)v1 + 467) = 0; *((_WORD *)v1 + 938) = 0; *(_DWORD *)v1 = &off_6EC8C0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8C0: using guessed type int (__stdcall *off_6EC8C0)(int, int, int); //----- (0057BFB0) -------------------------------------------------------- void *__thiscall sub_57BFB0(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // eax@1 int (__thiscall **v5)(void *, char); // [sp+10h] [bp-20h]@4 void *v6; // [sp+1Ch] [bp-14h]@1 int v7; // [sp+20h] [bp-10h]@3 int v8; // [sp+2Ch] [bp-4h]@1 v1 = this; v6 = this; sub_4C0FA0(this); *(_DWORD *)v1 = &off_6EC8B0; v2 = (int)((char *)v1 + 1852); v8 = 0; *((_DWORD *)v1 + 463) = 0; v3 = operator new(8u); if ( !v3 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)v2 = v3; *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; **(_DWORD **)v2 = v2; *((_DWORD *)v1 + 464) = 0; *((_DWORD *)v1 + 465) = 0; *((_DWORD *)v1 + 466) = 0; *((_DWORD *)v1 + 467) = 0; *((_WORD *)v1 + 938) = 0; *(_DWORD *)v1 = &off_6EC8D0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8D0: using guessed type int (__stdcall *off_6EC8D0)(int, int, int); //----- (0057C070) -------------------------------------------------------- void *__thiscall sub_57C070(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // eax@1 int (__thiscall **v5)(void *, char); // [sp+10h] [bp-20h]@4 void *v6; // [sp+1Ch] [bp-14h]@1 int v7; // [sp+20h] [bp-10h]@3 int v8; // [sp+2Ch] [bp-4h]@1 v1 = this; v6 = this; sub_4C0FA0(this); *(_DWORD *)v1 = &off_6EC8B0; v2 = (int)((char *)v1 + 1852); v8 = 0; *((_DWORD *)v1 + 463) = 0; v3 = operator new(8u); if ( !v3 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)v2 = v3; *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; **(_DWORD **)v2 = v2; *((_DWORD *)v1 + 464) = 0; *((_DWORD *)v1 + 465) = 0; *((_DWORD *)v1 + 466) = 0; *((_DWORD *)v1 + 467) = 0; *((_WORD *)v1 + 938) = 0; *(_DWORD *)v1 = &off_6EC8E0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8E0: using guessed type int (__stdcall *off_6EC8E0)(int, int, int); //----- (0057C130) -------------------------------------------------------- void *__thiscall sub_57C130(void *this) { void *v1; // edi@1 int v2; // esi@1 int v3; // eax@1 int (__thiscall **v5)(void *, char); // [sp+10h] [bp-20h]@4 void *v6; // [sp+1Ch] [bp-14h]@1 int v7; // [sp+20h] [bp-10h]@3 int v8; // [sp+2Ch] [bp-4h]@1 v1 = this; v6 = this; sub_4C0FA0(this); *(_DWORD *)v1 = &off_6EC8B0; v2 = (int)((char *)v1 + 1852); v8 = 0; *((_DWORD *)v1 + 463) = 0; v3 = operator new(8u); if ( !v3 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)v2 = v3; *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; **(_DWORD **)v2 = v2; *((_DWORD *)v1 + 464) = 0; *((_DWORD *)v1 + 465) = 0; *((_DWORD *)v1 + 466) = 0; *((_DWORD *)v1 + 467) = 0; *((_WORD *)v1 + 938) = 0; *(_DWORD *)v1 = &off_6EC8F0; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8F0: using guessed type int (__stdcall *off_6EC8F0)(int, int, int); //----- (0057C1F0) -------------------------------------------------------- void __thiscall sub_57C1F0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6EC8B0; sub_57BD80((int)((char *)this + 1852)); operator delete(*((void **)v1 + 463)); *((_DWORD *)v1 + 463) = 0; sub_4C11C0(v1); } // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); //----- (0057C230) -------------------------------------------------------- int __thiscall sub_57C230(void *this, int a2, __int16 a3) { void *v3; // esi@1 int result; // eax@3 char *v5; // ecx@6 int v6; // eax@6 unsigned __int16 v7; // ax@6 int v8; // ebx@8 int v9; // eax@8 int v10; // edi@8 int v11; // eax@12 int v12; // eax@12 void *v13; // ecx@12 int v14; // [sp+4h] [bp-10h]@12 int v15; // [sp+8h] [bp-Ch]@12 int v16; // [sp+Ch] [bp-8h]@12 int v17; // [sp+10h] [bp-4h]@12 v3 = this; sub_57BD80((int)((char *)this + 1852)); if ( *((_DWORD *)v3 + 401) < a2 ) a2 = *((_DWORD *)v3 + 401); result = a2; while ( *((_DWORD *)v3 + 467) < a2 ) { result = *((_DWORD *)v3 + 401); if ( result <= 0 ) return result; if ( (unsigned int)(result - 1) > 0x63 ) { v7 = 0; } else { v5 = (char *)&unk_14D42DC0 + 32776 * result; v6 = *((_DWORD *)v5 + 8193) & (*((_DWORD *)v5 + 8192) + 1); *((_DWORD *)v5 + 8192) = v6; v7 = *(_WORD *)&v5[2 * v6]; } v8 = (int)((char *)v3 + 8 * v7); v9 = *(_DWORD *)(v8 + 4); v10 = v8 + 4; if ( v9 && (a3 == -1 || *(_WORD *)(v9 + 4) != a3) ) { v11 = *(_DWORD *)(v9 + 102); v14 = *(_DWORD *)v11; v12 = *(_DWORD *)(v11 + 4); v16 = v14; v13 = (void *)*((_DWORD *)v3 + 460); v15 = v12; v17 = v12; sub_4BD750( v13, (int)((char *)v3 + 1844), (int)&v16, 10000, (int)&v14, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v16 != v14 || v17 != v15 ) { --*((_DWORD *)v3 + 401); *(_DWORD *)v10 = *((_DWORD *)v3 + 2 * *((_DWORD *)v3 + 401) + 1); result = *((_DWORD *)v3 + 2 * *((_DWORD *)v3 + 401) + 2); *(_DWORD *)(v8 + 8) = result; *((_DWORD *)v3 + 2 * *((_DWORD *)v3 + 401) + 1) = 0; continue; } loc_57BCD0((char *)v3 + 1852, v8 + 4); } --*((_DWORD *)v3 + 401); *(_DWORD *)v10 = *((_DWORD *)v3 + 2 * *((_DWORD *)v3 + 401) + 1); *(_DWORD *)(v8 + 8) = *((_DWORD *)v3 + 2 * *((_DWORD *)v3 + 401) + 2); result = *((_DWORD *)v3 + 401); *((_DWORD *)v3 + 2 * result + 1) = 0; } return result; } //----- (0057C3B0) -------------------------------------------------------- int __thiscall sub_57C3B0(void *this, int a2, _UNKNOWN *a3, void *a4) { void *v4; // edi@1 int v5; // edi@3 char *v6; // esi@5 int v7; // eax@10 int v8; // eax@10 __int16 v9; // di@10 int v10; // eax@12 int v11; // esi@15 void *v13; // [sp+0h] [bp-24CCh]@1 char v14; // [sp+4h] [bp-24C8h]@3 char v15; // [sp+75Ch] [bp-1D70h]@3 char v16; // [sp+EB4h] [bp-1618h]@3 char v17; // [sp+160Ch] [bp-EC0h]@3 char v18; // [sp+1D64h] [bp-768h]@3 unsigned int v19; // [sp+24BCh] [bp-10h]@1 int v20; // [sp+24C8h] [bp-4h]@3 int v21; // [sp+24CCh] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v4 = this; v13 = this; if ( !a2 || !*(_DWORD *)(a2 + 4) ) return 0; sub_57BE40(&v14); v20 = 0; sub_57BEF0(&v15); LOBYTE(v20) = 1; sub_57C070(&v17); LOBYTE(v20) = 2; sub_57BFB0(&v18); LOBYTE(v20) = 3; sub_57C130(&v16); v5 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v20) = 4; if ( !v5 ) { LABEL_18: LOBYTE(v20) = 3; sub_57C1F0(&v16); LOBYTE(v20) = 2; sub_57C1F0(&v18); LOBYTE(v20) = 1; sub_57C1F0(&v17); LOBYTE(v20) = 0; sub_57C1F0(&v15); v20 = -1; sub_57C1F0(&v14); return 0; } switch ( *(_DWORD *)(*(_DWORD *)(a2 + 4) + 188) ) { case 0: v6 = &v15; break; case 3: v6 = &v17; break; case 2: case 6: v6 = &v18; break; case 5: v6 = &v14; break; case 7: v6 = &v16; break; default: goto LABEL_18; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)a4 + 2956))(a4); sub_5770E0((int)v6, v7); *((_DWORD *)v6 + 461) = *(_DWORD *)v5; *((_DWORD *)v6 + 462) = *(_DWORD *)(v5 + 4); *((_DWORD *)v6 + 401) = 0; v8 = sub_427BD0(&unk_13253E80); sub_549E00(a4, v8, v5, a3, 0, (int)v6, 1, 65535); sub_401350((int)v6); v9 = *((_WORD *)v13 + 2); if ( *(_BYTE *)(a2 + 552) == 1 ) { if ( sub_4C0DC0((int)v6) > 1 ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 3096))(v13); if ( v10 ) v9 = *(_WORD *)(v10 + 4); } } sub_57C230(v6, 1, v9); if ( *((_DWORD *)v6 + 467) <= 0 ) v11 = 0; else v11 = *(_DWORD *)sub_57BDF0((int)(v6 + 1852), 0); LOBYTE(v20) = 3; sub_57C1F0(&v16); LOBYTE(v20) = 2; sub_57C1F0(&v18); LOBYTE(v20) = 1; sub_57C1F0(&v17); LOBYTE(v20) = 0; sub_57C1F0(&v15); v20 = -1; sub_57C1F0(&v14); return v11; } // 86FEB8: using guessed type int __security_cookie; //----- (0057C630) -------------------------------------------------------- int __thiscall sub_57C630(int this, int a2, int a3) { int v3; // edx@1 int v4; // esi@1 int v5; // eax@1 int result; // eax@4 v3 = a3; v4 = *(_DWORD *)(this + 4); v5 = a3 + 20; if ( a3 + 20 != v4 ) { do { *(_DWORD *)v3 = *(_DWORD *)v5; *(_DWORD *)(v3 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(v3 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(v3 + 16) = *(_DWORD *)(v5 + 16); v5 += 20; v3 += 20; } while ( v5 != v4 ); v3 = a3; } result = a2; *(_DWORD *)(this + 4) -= 20; *(_DWORD *)a2 = v3; return result; } //----- (0057C680) -------------------------------------------------------- int __thiscall sub_57C680(void *this, __int16 a2) { int v2; // esi@1 int v3; // edi@1 int v4; // ebx@1 signed int v5; // ecx@1 int v6; // edi@2 int v8; // [sp+Ch] [bp-28h]@1 __int16 v9; // [sp+10h] [bp-24h]@2 unsigned int v10; // [sp+24h] [bp-10h]@1 int v11; // [sp+30h] [bp-4h]@1 int v12; // [sp+34h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v2 = (int)this; v8 = (int)"CharaterSkillList::csl_UnLearn"; sub_4675D0((int)&unk_D020420, (int)"CharaterSkillList::csl_UnLearn"); dword_7508B8[dword_750CB8] = (int)"CharaterSkillList::csl_UnLearn"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)v2; v5 = *(_DWORD *)(v2 + 4) - *(_DWORD *)v2; v11 = 0; if ( v5 / 20 ) { v9 = a2; v6 = sub_4458E0(v4, v3, (int)&v9, (int (__cdecl *)(_DWORD, _DWORD))sub_444540); if ( !sub_444540((int)&v9, v6) ) { sub_57C630(v2, (int)&v8, v6); --*(_DWORD *)(v2 + 16); } } --dword_750CB8; v11 = -1; return sub_467660((int)&unk_D020420, (int)"CharaterSkillList::csl_UnLearn"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0057C780) -------------------------------------------------------- int __thiscall sub_57C780(void *this, __int16 a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 int (__thiscall *v7)(_DWORD); // edx@6 void *v8; // eax@6 unsigned int v9; // edx@11 int v10; // eax@11 int v11; // eax@13 int v12; // ecx@13 int v13; // eax@13 int v14; // eax@13 int v15; // edx@13 int v16; // eax@13 signed __int64 v17; // qax@13 __int64 v18; // qax@13 int v19; // ecx@13 unsigned int v20; // eax@13 __int16 v21; // dx@13 int v22; // ecx@13 int v23; // ST04_4@13 int v24; // eax@13 _UNKNOWN *v25; // ST14_4@13 int v26; // eax@13 int v28; // [sp+10h] [bp-678h]@6 int v29; // [sp+14h] [bp-674h]@6 int v30; // [sp+18h] [bp-670h]@6 unsigned int v31; // [sp+20h] [bp-668h]@4 int v32; // [sp+24h] [bp-664h]@1 int (__stdcall **v33)(int, int, int); // [sp+28h] [bp-660h]@13 int v34; // [sp+670h] [bp-18h]@13 int v35; // [sp+674h] [bp-14h]@13 unsigned int v36; // [sp+678h] [bp-10h]@1 int v37; // [sp+684h] [bp-4h]@1 int v38; // [sp+688h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v6 = (int)this; v32 = a4; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; if ( a3 && a4 ) { v31 = dword_14D129E8 - (((signed int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 268) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 268) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); *(_DWORD *)(v6 + 416) = a4; *(_DWORD *)(v6 + 372) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 276) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 276) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1488))(a3) && *(_DWORD *)(a4 + 8) != *(_DWORD *)(a4 + 12) ) { v28 = 0; v29 = 0; v30 = 0; v7 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1488); LOBYTE(v37) = 1; v8 = (void *)v7(a3); if ( sub_5CF200(v8, (int)&v28, a4, 2, a3, a3) ) *(_DWORD *)(v6 + 372) += (unsigned int)(10 * (sub_5CDED0((int)&v28, *(_DWORD *)(a4 + 276)) - *(_DWORD *)(a4 + 276)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; LOBYTE(v37) = 0; sub_424190((void **)&v28); } if ( *(_BYTE *)(a4 + 560) == 1 ) v31 += ((signed int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 564) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 564) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v9 = (unsigned int)((unsigned int)(10 * *(_DWORD *)(a4 + 268)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)(v6 + 388) = v9; *(_DWORD *)(v6 + 384) = v31 + v9; *(_DWORD *)(v6 + 122) = *(_DWORD *)(a3 + 122); v10 = *(_DWORD *)(v6 + 102); *(_DWORD *)v10 = *(_DWORD *)a5; *(_DWORD *)(v10 + 4) = *(_DWORD *)(a5 + 4); if ( sub_452770(*(void **)(v6 + 122), v6, 0, 0, 1) == 0 ) { v11 = *(_DWORD *)(a3 + 118); v12 = *(_DWORD *)(v6 + 118); *(_DWORD *)v12 = *(_DWORD *)v11; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v6 + 376) = *(_DWORD *)a5; *(_DWORD *)(v6 + 380) = *(_DWORD *)(a5 + 4); *(_WORD *)(v6 + 392) = *(_WORD *)a6; *(_DWORD *)(v6 + 396) = a3; *(_DWORD *)(v6 + 400) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1180))(a3); *(_BYTE *)(v6 + 404) = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 56))(v13); v14 = *(_DWORD *)(a3 + 102); *(_DWORD *)(v6 + 405) = *(_DWORD *)v14; v15 = *(_DWORD *)(v14 + 4); v16 = v32; *(_DWORD *)(v6 + 409) = v15; *(_BYTE *)(v6 + 420) = 1; v17 = 10 * *(_DWORD *)(v16 + 564) * (signed __int64)(signed int)&unk_10624DD3; *(_DWORD *)(v6 + 424) = dword_14D129E8 + (SHIDWORD(v17) >> 6) + (HIDWORD(v17) >> 31); *(_BYTE *)(v6 + 421) = **(_BYTE **)(a3 + 106); v18 = sub_548D10(a3); sub_548CF0(v6, v18, SHIDWORD(v18)); v19 = *(_DWORD *)(v32 + 4); v20 = *(_DWORD *)(v19 + 259); v21 = *(_WORD *)(a3 + 4); v32 = *(_WORD *)v19; **(_WORD **)(v6 + 366) = a2; *(_WORD *)(*(_DWORD *)(v6 + 366) + 2) = v21; *(_WORD *)(*(_DWORD *)(v6 + 366) + 4) = v32; v22 = *(_DWORD *)(v6 + 366); *(_DWORD *)(v22 + 6) = *(_DWORD *)a5; *(_DWORD *)(v22 + 10) = *(_DWORD *)(a5 + 4); *(_WORD *)(*(_DWORD *)(v6 + 366) + 14) = v20 >> 1; v23 = *(_DWORD *)(v6 + 102); v24 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v6, v24, v23, 0, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); sub_4C0DA0(&v33); v33 = &off_6EBD44; v34 = v6; v35 = v6 + 396; v25 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 416) + 4) + 259) >> 1); LOBYTE(v37) = 2; v26 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v6, v26, v6 + 376, v25, 0, (int)&v33, 1, 65535); sub_5787F0(&v33); LOBYTE(v37) = 0; v33 = &off_6EBD44; sub_4C11C0(&v33); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread : Mark err", 0); sub_555DF0(&unk_13253630, *(_WORD *)(v6 + 4), 0, 4); } --dword_750CB8; v37 = -1; } else { --dword_750CB8; v37 = -1; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread"); } // 6EBD44: using guessed type int (__stdcall *off_6EBD44)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (0057CBD0) -------------------------------------------------------- int __thiscall sub_57CBD0(void *this, __int16 a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 int v7; // edi@1 int v8; // ecx@5 int (__thiscall *v9)(_DWORD); // edx@7 void *v10; // eax@7 int v11; // ecx@10 unsigned int v12; // edx@12 int v13; // eax@12 int v14; // eax@14 int v15; // ecx@14 int v16; // eax@14 __int64 v17; // qax@14 int v18; // ecx@14 unsigned int v19; // eax@14 __int16 v20; // dx@14 int v21; // ecx@14 int v22; // ST04_4@14 int v23; // eax@14 int v25; // [sp-4h] [bp-34h]@2 int v26; // [sp+10h] [bp-20h]@7 int v27; // [sp+14h] [bp-1Ch]@7 int v28; // [sp+18h] [bp-18h]@7 int v29; // [sp+20h] [bp-10h]@1 int v30; // [sp+2Ch] [bp-4h]@1 int v31; // [sp+3Ch] [bp+Ch]@5 unsigned int v32; // [sp+3Ch] [bp+Ch]@10 int v33; // [sp+40h] [bp+10h]@14 v6 = (int)this; v29 = (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend"; dword_750AB8[dword_750CB8++] = -1; v7 = a3; v30 = 0; if ( a3 ) { if ( a4 ) { v8 = dword_14D129E8; *(_DWORD *)(v6 + 372) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 444) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 444) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v31 = v8; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1488))(v7) && *(_DWORD *)(a4 + 8) != *(_DWORD *)(a4 + 12) ) { v26 = 0; v27 = 0; v28 = 0; v9 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1488); LOBYTE(v30) = 1; v10 = (void *)v9(v7); if ( sub_5CF200(v10, (int)&v26, a4, 2, v7, v7) ) *(_DWORD *)(v6 + 372) += (unsigned int)(10 * (sub_5CDED0((int)&v26, *(_DWORD *)(a4 + 276)) - *(_DWORD *)(a4 + 276)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; LOBYTE(v30) = 0; sub_424190((void **)&v26); } v11 = *(_DWORD *)(a4 + 268); v32 = v31 - (((unsigned int)((unsigned __int64)(10 * v11 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31) + ((signed int)((unsigned __int64)(10 * v11 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6)); if ( *(_BYTE *)(a4 + 560) == 1 ) v32 += ((signed int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 564) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 564) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v12 = (unsigned int)((unsigned int)(10 * v11) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)(v6 + 388) = v12; *(_DWORD *)(v6 + 384) = v32 + v12; *(_DWORD *)(v6 + 122) = *(_DWORD *)(v7 + 122); v13 = *(_DWORD *)(v6 + 102); *(_DWORD *)v13 = *(_DWORD *)a5; *(_DWORD *)(v13 + 4) = *(_DWORD *)(a5 + 4); if ( sub_452770(*(void **)(v6 + 122), v6, 0, 0, 1) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread : Mark err", 0); sub_555DF0(&unk_13253630, *(_WORD *)(v6 + 4), 0, 4); } else { v14 = *(_DWORD *)(v7 + 118); v15 = *(_DWORD *)(v6 + 118); *(_DWORD *)v15 = *(_DWORD *)v14; *(_DWORD *)(v15 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v6 + 416) = a4; *(_DWORD *)(v6 + 376) = *(_DWORD *)a5; *(_DWORD *)(v6 + 380) = *(_DWORD *)(a5 + 4); *(_WORD *)(v6 + 392) = *(_WORD *)a6; *(_DWORD *)(v6 + 396) = v7; *(_DWORD *)(v6 + 400) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1180))(v7); *(_BYTE *)(v6 + 404) = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 56))(v16); *(_BYTE *)(v6 + 420) = 2; *(_DWORD *)(v6 + 424) = dword_14D129E8 + ((signed int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 564) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_DWORD *)(a4 + 564) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); *(_BYTE *)(v6 + 421) = **(_BYTE **)(v7 + 106); v17 = sub_548D10(v7); sub_548CF0(v6, v17, SHIDWORD(v17)); v18 = *(_DWORD *)(a4 + 4); v19 = *(_DWORD *)(v18 + 259); v20 = *(_WORD *)(v7 + 4); v33 = *(_WORD *)v18; **(_WORD **)(v6 + 366) = a2; *(_WORD *)(*(_DWORD *)(v6 + 366) + 2) = v20; *(_WORD *)(*(_DWORD *)(v6 + 366) + 4) = v33; v21 = *(_DWORD *)(v6 + 366); *(_DWORD *)(v21 + 6) = *(_DWORD *)a5; *(_DWORD *)(v21 + 10) = *(_DWORD *)(a5 + 4); *(_WORD *)(*(_DWORD *)(v6 + 366) + 14) = v19 >> 1; v22 = *(_DWORD *)(v6 + 102); v23 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v6, v23, v22, 0, 0, (int)sub_440E10, 0, 0, 0, 0, 65535); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend : SkillDataIndex NULL", 0); } v25 = (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend : Caster NULL", a3); v25 = (int)"ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend"; } --dword_750CB8; v30 = -1; return sub_467660((int)&unk_D020420, v25); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0057CF50) -------------------------------------------------------- int __thiscall sub_57CF50(void *this, int a2) { void *v2; // esi@1 __int16 v3; // cx@1 __int16 v4; // di@1 signed __int16 v5; // bx@1 void *v6; // eax@5 int v7; // eax@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_UnlearnSkillAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_UnlearnSkillAck"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 6); v4 = *(_WORD *)(a2 + 6); v5 = *(_WORD *)(a2 + 8); if ( v5 == 5377 ) { if ( (unsigned __int16)v3 >= 0x7530u ) { v4 = v3 - 30000; v5 = 5381; sub_5791F0((char *)v2 + 84424, v3 - 30000); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 872))(v2); } else { sub_57C680((char *)v2 + 84388, v3); } } v6 = off_849C18; *(_WORD *)off_849C18 = 18471; *((_WORD *)v6 + 1) = v4; *((_WORD *)v6 + 2) = v5; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_UnlearnSkillAck"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0057D0A0) -------------------------------------------------------- int __thiscall sub_57D0A0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_437380(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_WORD *)(result + 12) = *(_WORD *)(a2 + 12); } } else { v4 = (signed int)(a2 - *(_DWORD *)v2 + ((unsigned __int64)(-1840700269i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32)) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_437380(v2, 1); v6 = *(_DWORD *)v2 + 14 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_WORD *)(result + 12) = *(_WORD *)(v6 + 12); *(_DWORD *)(v2 + 4) += 14; return result; } } *(_DWORD *)(v2 + 4) += 14; return result; } //----- (0057D150) -------------------------------------------------------- int __thiscall sub_57D150(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 signed __int16 v6; // ax@6 int v7; // eax@9 int v8; // eax@11 int v9; // eax@11 int v10; // eax@12 int v11; // edx@19 int v12; // ebx@19 void *v13; // eax@21 int v14; // edi@21 int v15; // ecx@23 int v16; // eax@26 int v17; // edx@32 void (__thiscall *v18)(_DWORD); // eax@34 int v19; // eax@37 int v20; // eax@37 int v21; // edx@40 bool v22; // al@43 int v23; // edx@43 int v24; // eax@44 bool v25; // zf@45 int v26; // eax@45 int v27; // eax@46 int v28; // ebx@46 int v29; // edi@46 int v30; // ecx@46 unsigned int v31; // edi@46 int v32; // eax@51 unsigned int v33; // eax@52 int v34; // edx@54 int v35; // ecx@54 int v36; // edx@54 int v37; // eax@55 int v38; // eax@62 int v39; // eax@62 int v40; // eax@63 int v42; // [sp-4h] [bp-34h]@27 int v43; // [sp+10h] [bp-20h]@32 int v44; // [sp+14h] [bp-1Ch]@32 int v45; // [sp+18h] [bp-18h]@19 int v46; // [sp+1Ch] [bp-14h]@19 int v47; // [sp+20h] [bp-10h]@1 int v48; // [sp+2Ch] [bp-4h]@1 v4 = (int)this; v47 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v48 = 0; *(_WORD *)(v4 + 32655) = 4045; if ( !(dword_1325777C & 1) ) { dword_1325777C |= 1u; word_13257778 = 4; atexit(nullsub_142); v5 = 1; } if ( !((v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13257778) ) { *(_WORD *)(v4 + 32655) = 4032; dword_750CB8 -= v5; LABEL_67: v42 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; goto LABEL_68; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291) ) { v6 = 4033; LABEL_65: *(_WORD *)(v4 + 32655) = v6; goto LABEL_66; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 499) ) { *(_WORD *)(v4 + 32655) = 4033; LABEL_66: --dword_750CB8; goto LABEL_67; } v7 = *(_DWORD *)(v4 + 122); if ( !v7 || !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 159) ) { v6 = 4035; goto LABEL_65; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v8 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v9); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3736))(v4) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v10); v6 = 4036; goto LABEL_65; } if ( *(_BYTE *)(v4 + 7888) & 4 ) { *(_WORD *)(v4 + 32655) = 4044; goto LABEL_66; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) ) { *(_WORD *)(v4 + 32655) = 4050; goto LABEL_66; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4) ) { *(_WORD *)(v4 + 32655) = 4032; goto LABEL_66; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); v11 = *(_DWORD *)(a2 + 8); v12 = a2 + 4; v45 = *(_DWORD *)(a2 + 4); v46 = v11; sub_4BE0E0((void *)v4, a2 + 4, 10000, (int)&v45, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( *(_DWORD *)(a2 + 4) != v45 || *(_DWORD *)(a2 + 8) != v46 ) { v40 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4049; (*(void (__thiscall **)(int))(v40 + 3792))(v4); --dword_750CB8; v42 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; LABEL_68: v48 = -1; return sub_467660((int)&unk_D020420, v42); } v13 = sub_447910((int)&unk_132577A0, *(_WORD *)(a2 + 2)); v14 = (int)v13; v15 = v13 && *(_DWORD *)(*((_DWORD *)v13 + 1) + 199) != 2; if ( v15 ) { if ( *(_DWORD *)(*((_DWORD *)v13 + 1) + 527) == 7 && !(*(_BYTE *)(*(_DWORD *)(v4 + 122) + 496) & 2) ) { *(_WORD *)(v4 + 32655) = 4032; --dword_750CB8; v48 = -1; v42 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; return sub_467660((int)&unk_D020420, v42); } if ( !*((_BYTE *)v13 + 376) || (v17 = *(_DWORD *)(a2 + 8), v43 = *(_DWORD *)v12, v44 = v17, sub_4BE0E0((void *)v4, v12, 10000, (int)&v43, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0), *(_DWORD *)v12 == v43) && *(_DWORD *)(a2 + 8) == v44 ) { if ( *(_DWORD *)(v4 + 368) == 3 ) { if ( *(_DWORD *)(*(_DWORD *)(v14 + 4) + 203) ) { v19 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4040; v20 = (*(int (__thiscall **)(int))(v19 + 1388))(v4); sub_418B40((int)byte_85A2C0, v20); goto LABEL_27; } if ( *(_BYTE *)(v14 + 376) || *(_BYTE *)(v14 + 400) ) { v21 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4040; (*(void (__thiscall **)(int))(v21 + 3792))(v4); goto LABEL_27; } } if ( sub_57A470((void *)v4) == 2 ) { *(_WORD *)(v4 + 32655) = 4039; } else { v22 = sub_4695E0(v4 + 84388, v4, *(_WORD *)(a2 + 2)); v23 = *(_DWORD *)v4; if ( v22 ) { (*(void (__thiscall **)(int, _DWORD))(v23 + 3824))(v4, *(_WORD *)(a2 + 2)); v25 = sub_5599D0((void *)(v4 + 84388), v4, *(_WORD *)(a2 + 2), v14, v4 + 7684, 0) == 0; v26 = *(_DWORD *)v4; if ( v25 ) { v27 = (*(int (__thiscall **)(int))(v26 + 1388))(v4); sub_418B40((int)byte_85A2C0, v27); v28 = *(_DWORD *)(*(_DWORD *)(v14 + 4) + 168); v29 = *(_DWORD *)(v14 + 4); v30 = *(_DWORD *)(v29 + 172) * (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1264))(v4); v31 = *(_DWORD *)(v29 + 176); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1256))(v4) > ((unsigned int)((unsigned int)v30 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) + v28 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3464))(v4) >= v31 ) *(_WORD *)(v4 + 32655) = 4041; else *(_WORD *)(v4 + 32655) = 4060; } else { *(_WORD *)(v4 + 32655) = 4053; } } else { v32 = *(_DWORD *)(v14 + 116) + (*(int (__thiscall **)(int))(v26 + 1740))(v4); if ( ((unsigned int)(10 * v32) >> 3) - v32 <= 0x3C ) v33 = (unsigned int)(10 * v32) >> 3; else v33 = v32 + 60; v34 = *(_DWORD *)(v4 + 102); v35 = *(_DWORD *)v34; v36 = *(_DWORD *)(v34 + 4) - *(_DWORD *)(a2 + 8); if ( (v35 - *(_DWORD *)v12) * (v35 - *(_DWORD *)v12) + v36 * v36 <= v33 * v33 ) { if ( sub_42A910(v4 + 160796) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); if ( !*(_BYTE *)(*(_DWORD *)v14 + 72) ) *(_BYTE *)(v4 + 155428) |= 1u; } else { *(_BYTE *)(v4 + 155428) ^= (*(_BYTE *)(v4 + 155428) ^ *(_BYTE *)(*(_DWORD *)v14 + 71)) & 1; } if ( !sub_560060((void *)v4) ) *(_BYTE *)(v4 + 155428) &= 0xFEu; v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v38); sub_579C10((void *)v4, v14, 0, v12, -1); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v39); *(_BYTE *)(v4 + 155428) &= 0xFDu; *(_WORD *)(v4 + 32655) = 0; } else { v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v37); *(_WORD *)(v4 + 32655) = 4042; } } } else { v24 = (*(int (__thiscall **)(int))(v23 + 1388))(v4); sub_418B40((int)byte_85A2C0, v24); *(_WORD *)(v4 + 32655) = 4040; } } goto LABEL_27; } v18 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792); *(_WORD *)(v4 + 32655) = 4049; v18(v4); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ : Not skill", *(_WORD *)(a2 + 2)); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v16); *(_WORD *)(v4 + 32655) = 4038; } LABEL_27: --dword_750CB8; v48 = -1; v42 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; return sub_467660((int)&unk_D020420, v42); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257778: using guessed type __int16 word_13257778; // 1325777C: using guessed type int dword_1325777C; //----- (0057D7A0) -------------------------------------------------------- int __thiscall sub_57D7A0(void *this, int a2, int a3, int a4) { int v4; // esi@1 bool v5; // zf@1 signed __int16 v6; // cx@4 int v7; // eax@5 int v8; // eax@7 int v9; // eax@7 int v10; // edx@7 signed __int16 v11; // cx@8 int (__thiscall *v12)(_DWORD); // eax@9 int v13; // eax@9 char v14; // al@10 int v15; // eax@15 int v16; // edi@15 int v17; // eax@16 unsigned __int16 v18; // ax@17 char v19; // al@21 int v20; // edx@21 signed __int16 v21; // cx@22 int v22; // eax@24 int v23; // eax@33 int v24; // eax@35 int v25; // edi@35 void *v26; // eax@37 int v27; // edi@37 int v28; // eax@38 int v29; // ecx@40 int v30; // eax@44 void (__thiscall *v31)(_DWORD); // eax@56 unsigned __int8 v32; // al@61 int v33; // eax@64 int v34; // ecx@65 int v35; // eax@65 int v36; // eax@71 int v37; // eax@81 bool v38; // al@82 int v39; // edx@82 int v40; // eax@83 int v41; // eax@85 int v42; // edi@85 int v43; // ecx@85 unsigned int v44; // edi@85 int v45; // ebx@90 unsigned int v46; // ebx@91 int v47; // eax@94 int v48; // edx@94 int v49; // eax@94 int v50; // eax@104 int v51; // eax@104 int v52; // eax@108 int (__thiscall *v53)(_DWORD); // eax@110 int v54; // eax@110 int v55; // ecx@110 _BYTE *v56; // ecx@110 int v58; // [sp-4h] [bp-30h]@18 int v59; // [sp+14h] [bp-18h]@35 int v60; // [sp+18h] [bp-14h]@29 int v61; // [sp+1Ch] [bp-10h]@15 int v62; // [sp+28h] [bp-4h]@1 int v63; // [sp+34h] [bp+8h]@85 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (dword_13257784 & 1) == 0; v62 = 0; *(_WORD *)(v4 + 32655) = 4045; if ( v5 ) { dword_13257784 |= 1u; word_13257780 = 4; atexit(nullsub_143); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13257780) ) { v6 = 4032; LABEL_110: v53 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388); *(_WORD *)(v4 + 32655) = v6; v54 = v53(v4); v55 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v55; v56 = &byte_85A2C0[256 * v55]; *(_DWORD *)v56 = *(_DWORD *)v54; *((_DWORD *)v56 + 1) = *(_DWORD *)(v54 + 4); *((_DWORD *)v56 + 2) = *(_DWORD *)(v54 + 8); *((_DWORD *)v56 + 3) = *(_DWORD *)(v54 + 12); *((_DWORD *)v56 + 4) = *(_DWORD *)(v54 + 16); v56[20] = 0; goto LABEL_111; } v7 = *(_DWORD *)(v4 + 122); if ( !v7 || !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 159) ) { v6 = 4035; goto LABEL_110; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v8 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v9); v10 = *(_DWORD *)v4; if ( *(_BYTE *)(v4 + 7888) & 4 ) { v11 = 4044; LABEL_9: v12 = *(int (__thiscall **)(_DWORD))(v10 + 1388); *(_WORD *)(v4 + 32655) = v11; v13 = v12(v4); sub_418B40((int)byte_85A2C0, v13); LABEL_111: v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } v14 = (*(int (__thiscall **)(int))(v10 + 3864))(v4); v10 = *(_DWORD *)v4; if ( v14 ) { v11 = 4050; goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v10 + 2532))(v4) ) { *(_WORD *)(v4 + 32655) = 4032; goto LABEL_111; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3736))(v4) || (v15 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 4)), v16 = v15, (v61 = v15) == 0) ) { v52 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v52); v20 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4036; goto LABEL_24; } LOBYTE(v17) = sub_548D30(v4, v15); if ( !v17 ) { LABEL_106: (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1800))(v16); if ( !sub_63EDC0((int)&unk_14D159B0, v18, 2) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; LABEL_112: v62 = -1; goto LABEL_113; } if ( !sub_499ED0((void *)v4, v16) ) { *(_WORD *)(v4 + 32655) = 4032; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } v19 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291); v20 = *(_DWORD *)v4; if ( v19 ) goto LABEL_22; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(v20 + 996))(v4, 499) ) { v20 = *(_DWORD *)v4; LABEL_22: v21 = 4033; LABEL_23: *(_WORD *)(v4 + 32655) = v21; LABEL_24: v22 = (*(int (__thiscall **)(int))(v20 + 1388))(v4); sub_418B40((int)byte_85A2C0, v22); LABEL_25: v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v16 + 996))(v16, 499) ) goto LABEL_25; v60 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v16 + 1004))(v16, 291); if ( v60 > 0 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 2204))(v16) ) { v20 = *(_DWORD *)v4; v21 = 4034; goto LABEL_23; } if ( v60 > 3600 ) goto LABEL_25; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v16 + 1616))(v16, 291); } v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1072))(v4); if ( (unsigned __int8)sub_4C83A0(v23) || sub_57A470((void *)v4) == 2 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3788))(v4); v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } v24 = *(_DWORD *)(v16 + 102); v59 = *(_DWORD *)v24; v60 = *(_DWORD *)(v24 + 4); sub_4BE0E0((void *)v4, v24, 10000, (int)&v59, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); v25 = *(_DWORD *)(v16 + 102); if ( *(_DWORD *)v25 != v59 || *(_DWORD *)(v25 + 4) != v60 ) { *(_WORD *)(v4 + 32655) = 4049; goto LABEL_106; } v26 = sub_447910((int)&unk_132577A0, *(_WORD *)(a2 + 2)); v27 = (int)v26; v29 = v26 && (v28 = *((_DWORD *)v26 + 1)) != 0 && *(_DWORD *)(v28 + 199) != 2; if ( !v29 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ : Not skill", *(_WORD *)(a2 + 2)); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v30); v20 = *(_DWORD *)v4; v21 = 4038; goto LABEL_23; } if ( *(_DWORD *)(*(_DWORD *)(v27 + 4) + 527) == 7 && !(*(_BYTE *)(*(_DWORD *)(v4 + 122) + 496) & 2) ) { *(_WORD *)(v4 + 32655) = 4032; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v61 + 3140))() == 1 && *(_BYTE *)(v27 + 256) == 1 ) { *(_WORD *)(v4 + 32655) = 4056; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } if ( *(_DWORD *)(v4 + 368) == 3 ) { if ( *(_DWORD *)(*(_DWORD *)(v27 + 4) + 203) ) { v20 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4040; goto LABEL_24; } if ( *(_BYTE *)(v27 + 376) || *(_BYTE *)(v27 + 400) ) { v31 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792); *(_WORD *)(v4 + 32655) = 4040; v31(v4); v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } } if ( !sub_408B10(v27, v61) ) { *(_WORD *)(v4 + 32655) = 4052; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 394) ) { if ( *(_DWORD *)v27 ) { v32 = *(_BYTE *)(*(_DWORD *)(v27 + 4) + 668); if ( v32 ) { if ( v61 != *(_DWORD *)(v4 + 161188) || *(_BYTE *)(v4 + 161192) < v32 ) { v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v33); v20 = *(_DWORD *)v4; v21 = 4051; goto LABEL_23; } } } } word_87B250 = 4038; v34 = *(_DWORD *)(v27 + 4); v35 = *(_DWORD *)(v34 + 184); if ( v35 != 5 ) { if ( v35 && v35 != 7 ) { if ( *(_DWORD *)(v34 + 527) == 5 ) { if ( !*(_DWORD *)(v34 + 259) ) { if ( v35 != 8 || (v36 = (*(int (**)(void))(*(_DWORD *)v61 + 1804))()) == 0 || *(_DWORD *)(*(_DWORD *)v36 + 99) != 16 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 3724))(v4, v61) ) { v20 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4055; goto LABEL_24; } } } } } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, v61, "sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ") ) { v20 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = word_87B250; goto LABEL_24; } } } if ( **(_WORD **)(v27 + 4) == word_13257C7E && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2680))(v4) ) { *(_WORD *)(v4 + 32655) = 4046; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; goto LABEL_112; } if ( sub_57A470((void *)v4) == 2 ) { v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v37); v20 = *(_DWORD *)v4; v21 = 4039; goto LABEL_23; } v38 = sub_4695E0(v4 + 84388, v4, *(_WORD *)(a2 + 2)); v39 = *(_DWORD *)v4; if ( !v38 ) { v40 = (*(int (__thiscall **)(int))(v39 + 1388))(v4); sub_418B40((int)byte_85A2C0, v40); v20 = *(_DWORD *)v4; v21 = 4040; goto LABEL_23; } (*(void (__thiscall **)(int, _DWORD))(v39 + 3824))(v4, *(_WORD *)(a2 + 2)); if ( !sub_5599D0((void *)(v4 + 84388), v4, *(_WORD *)(a2 + 2), v27, v4 + 7684, 0) ) { v41 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v41); v63 = *(_DWORD *)(*(_DWORD *)(v27 + 4) + 168); v42 = *(_DWORD *)(v27 + 4); v43 = *(_DWORD *)(v42 + 172) * (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1264))(v4); v44 = *(_DWORD *)(v42 + 176); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1256))(v4) > ((unsigned int)((unsigned int)v43 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6) + v63 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3464))(v4) > v44 ) { *(_WORD *)(v4 + 32655) = 4041; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; } else { *(_WORD *)(v4 + 32655) = 4060; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; } } else { *(_WORD *)(v4 + 32655) = 4053; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; } goto LABEL_112; } v45 = *(_DWORD *)(v27 + 116) + (*(int (**)(void))(*(_DWORD *)v61 + 1740))(); if ( ((unsigned int)(10 * v45) >> 3) - v45 <= 0x3C ) v46 = (unsigned int)(10 * v45) >> 3; else v46 = v45 + 60; if ( sub_402710(v4, v61) <= v46 * v46 ) { if ( sub_42A910(v4 + 160796) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3792))(v4); if ( !*(_BYTE *)(*(_DWORD *)v27 + 72) ) *(_BYTE *)(v4 + 155428) |= 1u; } else { *(_BYTE *)(v4 + 155428) ^= (*(_BYTE *)(v4 + 155428) ^ *(_BYTE *)(*(_DWORD *)v27 + 71)) & 1; } if ( !sub_560060((void *)v4) ) *(_BYTE *)(v4 + 155428) &= 0xFEu; if ( *(_DWORD *)(v27 + 24) == *(_DWORD *)(v27 + 28) || sub_4450A0(v27, v4) ) { v50 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v50); sub_579C10((void *)v4, v27, v61, 0, -1); v51 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v51); *(_BYTE *)(v4 + 155428) &= 0xFDu; *(_WORD *)(v4 + 32655) = 0; v62 = -1; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; } else { *(_WORD *)(v4 + 32655) = 4053; v62 = -1; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; } } else { v47 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); sub_418B40((int)byte_85A2C0, v47); v48 = *(_DWORD *)v4; *(_WORD *)(v4 + 32655) = 4042; v49 = (*(int (__thiscall **)(int))(v48 + 1388))(v4); sub_418B40((int)byte_85A2C0, v49); v62 = -1; v58 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ"; } LABEL_113: --dword_750CB8; return sub_467660((int)&unk_D020420, v58); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 87B250: using guessed type __int16 word_87B250; // 13257780: using guessed type __int16 word_13257780; // 13257784: using guessed type int dword_13257784; // 13257C7E: using guessed type __int16 word_13257C7E; //----- (0057E110) -------------------------------------------------------- int __thiscall sub_57E110(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { int v7; // ecx@1 char v8; // bl@3 char v9; // dl@3 char v10; // al@3 bool v11; // zf@3 char v12; // bl@3 int v13; // eax@3 char v14; // bl@3 int (__stdcall *v15)(_DWORD); // edx@3 __int16 v16; // ax@3 int v17; // ecx@3 int v18; // eax@4 int v19; // ecx@4 unsigned int v20; // eax@4 int v21; // ecx@4 int v22; // eax@6 void (*v23)(void); // edx@7 int v24; // ebx@11 int v25; // eax@11 int v26; // ecx@11 int v27; // eax@11 int v28; // ecx@11 int v29; // edx@11 int v30; // ecx@11 int v31; // eax@12 int v33; // [sp-8h] [bp-40h]@2 unsigned int v34; // [sp-4h] [bp-3Ch]@1 int v35; // [sp+0h] [bp-38h]@0 int v36; // [sp+4h] [bp-34h]@0 int v37; // [sp+8h] [bp-30h]@0 unsigned int v38; // [sp+10h] [bp-28h]@4 int v39; // [sp+14h] [bp-24h]@1 __int16 v40; // [sp+18h] [bp-20h]@3 char v41; // [sp+1Ah] [bp-1Eh]@3 char v42; // [sp+1Bh] [bp-1Dh]@3 int v43; // [sp+1Ch] [bp-1Ch]@3 int v44; // [sp+20h] [bp-18h]@12 __int16 v45; // [sp+24h] [bp-14h]@3 unsigned int v46; // [sp+28h] [bp-10h]@1 int v47; // [sp+34h] [bp-4h]@1 int v48; // [sp+38h] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; v34 = (unsigned int)&v48 ^ __security_cookie; v39 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillDamageSender::sds_TemplateStore"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillDamageSender::sds_TemplateStore"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)a3; v47 = 0; if ( v7 ) { v8 = *(_BYTE *)(a3 + 15) & 1; v40 = *(_WORD *)(v7 + 4); v9 = (v42 ^ 2 * *(_BYTE *)(a3 + 17)) & 2 ^ v42; v10 = *(_BYTE *)(a3 + 10); v11 = *(_DWORD *)(a3 + 4) == 0; v41 = (*(_BYTE *)(a3 + 8) & 1 | v41 & 0x80 | 2 * (*(_BYTE *)(a3 + 11) & 1 | 2 * (*(_BYTE *)(a3 + 12) & 1 | 2 * (*(_BYTE *)(a3 + 13) & 1 | 2 * (*(_BYTE *)(a3 + 14) & 1 | 2 * (v8 | 2 * (*(_BYTE *)(a3 + 16) & 1))))))) & 0x7F | (*(_BYTE *)(a3 + 9) << 7); v12 = 4 * (v10 & 1) | v11; v13 = *(_DWORD *)v7; v14 = v9 & 0xFA | v12; v43 = *(_DWORD *)(a3 + 20); v15 = *(int (__stdcall **)(_DWORD))(v13 + 2024); v42 = v14; v16 = v15(v34); v17 = *(_DWORD *)a3; v45 = v16; (*(void (__stdcall **)(int, int))(*(_DWORD *)v17 + 1792))(a2, a4); if ( *(_BYTE *)(a3 + 8) ) { v18 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)a3 + 3048))(*(_DWORD *)(a3 + 20)); v19 = *(_DWORD *)a3; *(_DWORD *)(a3 + 20) = v18; v20 = (*(int (__stdcall **)(int, _DWORD))(*(_DWORD *)v19 + 3500))(v18, 0); v21 = *(_DWORD *)a3; *(_DWORD *)(a3 + 20) = v20; v38 = v20; if ( (*(int (**)(void))(*(_DWORD *)v21 + 1256))() > v20 ) { v14 &= 0xFEu; v42 = v14; } v22 = **(_DWORD **)a3; if ( v14 & 1 ) { (*(void (__stdcall **)(int, unsigned int, int, signed int))(v22 + 1468))(a2, v38, a5, 1); (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1252))(a2, a7); (*(void (__thiscall **)(int, int))(*(_DWORD *)a2 + 1252))(a2, a6); v23 = *(void (**)(void))(**(_DWORD **)a3 + 3028); } else { (*(void (__stdcall **)(int, unsigned int, int, signed int))(v22 + 1472))(a2, v38, a5, 1); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1252))(a2, a6); (*(void (**)(void))(**(_DWORD **)a3 + 3028))(); v23 = *(void (**)(void))(**(_DWORD **)a3 + 3496); } v23(); (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)a2 + 2616))( a2, 8, *(_WORD *)(*(_DWORD *)a3 + 4), 0); } if ( *(_BYTE *)(a3 + 14) ) { v24 = (*(int (**)(void))(**(_DWORD **)a3 + 1256))(); (*(void (__stdcall **)(_DWORD))(**(_DWORD **)a3 + 1252))(*(_DWORD *)(a3 + 20)); v25 = (*(int (**)(void))(**(_DWORD **)a3 + 1256))(); v26 = *(_DWORD *)a3; *(_DWORD *)(a3 + 20) = v25 - v24; v27 = (*(int (**)(void))(*(_DWORD *)v26 + 1152))(); v28 = v27 + 16 * *(_DWORD *)(v27 + 256); *(_DWORD *)v28 = 1; v29 = v43; *(_DWORD *)(v28 + 4) = a2; *(_DWORD *)(v28 + 8) = v29; *(_DWORD *)(v28 + 12) = a5; v30 = *(_DWORD *)(v27 + 260) & (*(_DWORD *)(v27 + 256) + 1); *(_DWORD *)(v27 + 256) = v30; *(_DWORD *)(v27 + 16 * v30) = 0; } v31 = **(_DWORD **)a3; v43 = *(_DWORD *)(a3 + 20); v44 = (*(int (__stdcall **)(int, int, int))(v31 + 1256))(v35, v36, v37); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 3064))(a2); (*(void (__thiscall **)(int, signed int, int, _DWORD, _DWORD))(*(_DWORD *)a2 + 3064))( a2, 3, a2, *(_BYTE *)(a3 + 12), 0); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)a3 + 3052))(*(_DWORD *)a3) ) sub_57D0A0(v39, (unsigned int)&v40); --dword_750CB8; v47 = -1; v33 = (int)"SkillEffectApply::SkillDamageSender::sds_TemplateStore"; } else { --dword_750CB8; v47 = -1; v33 = (int)"SkillEffectApply::SkillDamageSender::sds_TemplateStore"; } return sub_467660((int)&unk_D020420, v33); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0057E440) -------------------------------------------------------- void __thiscall sub_57E440(void *this, unsigned __int16 a2, __int16 a3, int a4) { int v4; // esi@1 int v5; // edi@8 int v6; // eax@10 int v7; // eax@13 unsigned __int16 v8; // ax@21 int v9; // eax@31 int v10; // eax@34 int v11; // eax@34 void *v12; // eax@38 int v13; // ecx@40 int v14; // ecx@50 int v15; // ecx@51 int v16; // eax@56 int v17; // eax@58 int v18; // ebx@64 unsigned int v19; // ebx@65 signed int v20; // [sp-8h] [bp-18h]@9 int v21; // [sp-8h] [bp-18h]@41 int v22; // [sp+8h] [bp-8h]@34 int v23; // [sp+Ch] [bp-4h]@34 int v24; // [sp+1Ch] [bp+Ch]@25 int v25; // [sp+1Ch] [bp+Ch]@38 v4 = (int)this; if ( !a4 ) return; if ( !(dword_1325778C & 1) ) { dword_1325778C |= 1u; word_13257788 = 6; atexit(nullsub_147); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13257788) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4032); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3736))(v4) == 1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4036); return; } v5 = sub_54DE90(&unk_13253630, a3); if ( !v5 ) { v20 = 4036; LABEL_45: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, v20); return; } v6 = *(_DWORD *)(v4 + 122); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 159) ) { v20 = 4035; goto LABEL_45; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_5A7F60(v7 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); if ( *(_BYTE *)(v4 + 7888) & 4 ) { v20 = 4044; goto LABEL_45; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3864))(v4) == 1 ) { v20 = 4050; goto LABEL_45; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4) == 1 ) { LABEL_18: v20 = 4032; goto LABEL_45; } if ( sub_57A470((void *)v4) == 2 ) { v20 = 4039; goto LABEL_45; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1800))(v5); if ( !sub_63EDC0((int)&unk_14D159B0, v8, 2) ) goto LABEL_54; if ( !sub_499ED0((void *)v4, v5) ) goto LABEL_18; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 291) ) goto LABEL_72; v24 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 1004))(v5, 291); if ( v24 > 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2204))(v5) != 1 ) { v20 = 4034; goto LABEL_45; } if ( v24 > 3600 ) return; (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 1616))(v5, 291); } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 996))(v4, 499) ) { LABEL_72: v20 = 4033; goto LABEL_45; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 996))(v5, 499) ) goto LABEL_54; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1072))(v4); if ( (unsigned __int8)sub_4C83A0(v9) == 1 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3788))(v4); return; } v10 = *(_DWORD *)(v5 + 102); v22 = *(_DWORD *)v10; v23 = *(_DWORD *)(v10 + 4); sub_4BE0E0( (void *)v4, *(_DWORD *)(v5 + 102), 10000, (int)&v22, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); v11 = *(_DWORD *)(v5 + 102); if ( *(_DWORD *)v11 != v22 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4049); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); return; } if ( *(_DWORD *)(v11 + 4) != v23 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4049); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3792))(v4); return; } v12 = sub_447910((int)&unk_132577A0, a2); v25 = (int)v12; if ( !v12 ) { sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_SkillBash_Object : Not Skill", a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4038); return; } v13 = *((_DWORD *)v12 + 1); if ( !v13 ) { v21 = a2; LABEL_44: sub_639100(&unk_86DDD8, (int)"ShineMover::so_smv_SkillBash_Object : Not Skill", v21); v20 = 4038; goto LABEL_45; } if ( *(_DWORD *)(v13 + 199) == 2 ) { v21 = a2; goto LABEL_44; } if ( *(_DWORD *)(v4 + 368) == 3 && (*(_DWORD *)(v13 + 203) || *((_BYTE *)v12 + 376) || *((_BYTE *)v12 + 400)) ) goto LABEL_63; v14 = *(_DWORD *)(v13 + 184); if ( !v14 ) goto LABEL_73; v15 = v14 - 5; if ( !v15 ) goto LABEL_56; if ( v15 == 2 ) { LABEL_73: if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, v5, "so_smv_SkillBash_Object") ) { LABEL_54: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4054); return; } v12 = (void *)v25; LABEL_56: v16 = *((_DWORD *)v12 + 1); if ( *(_DWORD *)(v16 + 259) ) { if ( *(_DWORD *)(v16 + 184) != 8 || (v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1804))(v5)) == 0 || *(_DWORD *)(*(_DWORD *)v17 + 99) != 16 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 3724))(v4, v5) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4055); return; } } } } if ( !sub_445D60(v4 + 8108, a2) ) { LABEL_63: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)a4 + 776))(a4, 9, 52, 4040); return; } v18 = *(_DWORD *)(v25 + 116) + (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1740))(v5); if ( ((unsigned int)(10 * v18) >> 3) - v18 <= 0x3C ) v19 = (unsigned int)(10 * v18) >> 3; else v19 = v18 + 60; if ( sub_402710(v4, v5) <= v19 * v19 ) sub_579C10((void *)v4, v25, v5, 0, -1); else (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a4 + 776))(9, 52, 4042); } // 13257788: using guessed type __int16 word_13257788; // 1325778C: using guessed type int dword_1325778C; //----- (0057E930) -------------------------------------------------------- void __thiscall sub_57E930(void *this, unsigned __int16 a2, int a3, int a4, int a5) { int v5; // edi@1 void *v6; // esi@1 int v7; // eax@6 int v8; // eax@10 int v9; // eax@25 int v10; // ebx@25 int v11; // eax@27 bool v12; // al@42 int v13; // edx@42 int v14; // eax@44 unsigned int v15; // eax@45 int v16; // [sp-8h] [bp-20h]@28 int v17; // [sp+8h] [bp-10h]@33 int v18; // [sp+Ch] [bp-Ch]@33 int v19; // [sp+10h] [bp-8h]@21 int v20; // [sp+14h] [bp-4h]@21 v5 = a5; v6 = this; if ( a5 ) { if ( !(dword_13257794 & 1) ) { dword_13257794 |= 1u; word_13257790 = 6; atexit(nullsub_148); } if ( !((1 << **((_BYTE **)v6 + 957)) & (unsigned __int16)word_13257790) ) goto LABEL_5; v7 = *(_DWORD *)((char *)v6 + 122); if ( !v7 ) goto LABEL_7; if ( !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 159) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4035); return; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1324))(v6); sub_5A7F60(v8 + 3364, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4A3630); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 3736))(v6) == 1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4036); return; } if ( *((_BYTE *)v6 + 7888) & 4 ) { LABEL_7: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4044); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 3864))(v6) == 1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4050); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2532))(v6) == 1 ) { LABEL_5: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4032); return; } if ( sub_57A470(v6) == 2 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4039); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v6 + 996))(v6, 291) || (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v6 + 996))(v6, 499) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4033); return; } v19 = a3; v20 = a4; sub_4BE0E0(v6, (int)&a3, 10000, (int)&v19, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v19 != a3 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4049); (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 3792))(v6); return; } if ( v20 != a4 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4049); (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 3792))(v6); return; } v9 = (int)sub_447910((int)&unk_132577A0, a2); v10 = v9; a5 = v9; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ : Not skill", a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4038); return; } v11 = *(_DWORD *)(v9 + 4); if ( !v11 ) { v16 = a2; LABEL_31: sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ : Not skill", v16); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4038); return; } if ( *(_DWORD *)(v11 + 199) == 2 ) { v16 = a2; goto LABEL_31; } if ( *(_BYTE *)(v10 + 376) != 1 ) goto LABEL_52; v17 = a3; v18 = a4; sub_4BE0E0(v6, (int)&a3, 10000, (int)&v17, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0); if ( a3 != v17 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4049); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3792))(v6); return; } if ( a4 == v18 ) { LABEL_52: if ( *((_DWORD *)v6 + 92) == 3 && (*(_DWORD *)(*(_DWORD *)(v10 + 4) + 203) || *(_BYTE *)(v10 + 376) == 1 || *(_BYTE *)(v10 + 400) == 1) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4040); } else { v12 = sub_445D60((int)((char *)v6 + 8108), a2); v13 = *(_DWORD *)v6; if ( v12 ) { v14 = *(_DWORD *)(v10 + 116) + (*(int (__thiscall **)(void *))(v13 + 1740))(v6); if ( ((unsigned int)(10 * v14) >> 3) - v14 <= 0x3C ) v15 = (unsigned int)(10 * v14) >> 3; else v15 = v14 + 60; if ( (**(_DWORD **)((char *)v6 + 102) - a3) * (**(_DWORD **)((char *)v6 + 102) - a3) + (*(_DWORD *)(*(_DWORD *)((char *)v6 + 102) + 4) - a4) * (*(_DWORD *)(*(_DWORD *)((char *)v6 + 102) + 4) - a4) <= v15 * v15 ) sub_579C10(v6, a5, 0, (int)&a3, -1); else (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4042); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v13 + 776))(v6, 9, 52, 4040); } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 9, 52, 4049); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3792))(v6); } } } // 13257790: using guessed type __int16 word_13257790; // 13257794: using guessed type int dword_13257794; //----- (0057EDA0) -------------------------------------------------------- int __userpurge sub_57EDA0(int a1, double a2, int a3, int a4, __int16 *a5, int a6, int a7, int a8, int a9) { unsigned int v9; // ST24_4@1 int v10; // ebx@1 int v11; // edi@1 int (__thiscall *v12)(_DWORD, _DWORD); // eax@1 int v13; // eax@1 int v14; // ecx@1 _BYTE *v15; // ecx@1 bool v16; // cf@1 int (__thiscall *v17)(_DWORD); // eax@6 unsigned __int16 v18; // ax@8 int v19; // eax@10 int v20; // eax@11 int v21; // eax@14 int (__thiscall *v22)(_DWORD); // edx@18 int v23; // eax@19 int v24; // eax@23 double v25; // st7@24 double v26; // st6@24 double v27; // st7@25 int v28; // eax@27 bool v29; // zf@27 int v30; // ecx@27 int v31; // edx@29 int v32; // ebx@32 signed int v33; // edx@32 int v34; // ebx@32 int v35; // eax@33 int v36; // eax@38 int v37; // eax@39 int v38; // ST24_4@40 void *v39; // eax@40 int v40; // eax@42 int v41; // ecx@42 int v42; // eax@42 int v43; // edx@42 int (__thiscall *v44)(_DWORD); // eax@43 void *v45; // eax@43 char v46; // al@46 bool v47; // sf@46 int v48; // ST24_4@50 int v49; // ST20_4@50 int v50; // ST18_4@50 int (*v51)(void); // eax@50 void *v52; // eax@50 __int16 v53; // ax@54 unsigned int v54; // ecx@53 int v55; // edx@55 int v56; // eax@55 int v57; // edx@56 int v58; // eax@56 int v59; // edx@57 int v60; // edx@64 int v61; // eax@64 double (__stdcall *(**v62)[4])(int); // edx@66 int v63; // eax@66 int v64; // eax@66 double (__stdcall *v65)(int); // edx@70 int v66; // eax@73 unsigned int v67; // ecx@75 signed int v68; // edx@75 unsigned int v69; // eax@75 int v70; // eax@82 int v71; // eax@84 int (__thiscall *v72)(_DWORD); // eax@94 int v73; // eax@95 int v74; // edx@95 int v75; // eax@96 void (__thiscall *v76)(_DWORD, _DWORD, _DWORD); // edx@97 unsigned __int16 v77; // ax@101 int (__thiscall *v78)(_DWORD); // eax@103 void *v79; // eax@103 int v80; // ecx@110 unsigned __int16 v81; // ax@110 char v82; // dl@115 char v83; // cl@115 int v84; // eax@115 int v85; // ecx@115 char v86; // dl@115 int v87; // ecx@115 int v88; // edx@122 int v89; // ecx@122 int v90; // eax@122 int v91; // eax@125 int v92; // ecx@126 int v93; // edx@126 __int16 v94; // ax@126 int v95; // eax@127 int v96; // ebx@127 int v97; // eax@127 void *v98; // eax@131 int v99; // ST04_4@136 int v100; // eax@136 int v101; // edx@143 int (__thiscall *v102)(_DWORD); // edx@145 void *v103; // eax@145 int v104; // edx@150 int (__thiscall *v105)(_DWORD); // edx@152 void *v106; // eax@152 int v107; // edx@157 int (__thiscall *v108)(_DWORD); // edx@159 void *v109; // eax@159 unsigned __int16 v110; // ax@167 int v111; // eax@169 unsigned int v112; // eax@172 int v113; // eax@174 int v114; // eax@174 int (__thiscall *v115)(_DWORD); // edx@178 void *v116; // eax@178 int v117; // ST24_4@182 void *v118; // eax@182 int v119; // eax@182 void (__thiscall *v120)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@186 int (__thiscall *v121)(_DWORD); // edx@197 void *v122; // eax@197 int v123; // edx@197 void *v124; // eax@197 int v125; // eax@198 int (__thiscall *v126)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@200 int v127; // eax@200 char v128; // dl@202 int v129; // eax@202 int v130; // eax@203 int (__thiscall *v131)(_DWORD, _DWORD); // eax@205 int v132; // eax@207 __int16 v133; // cx@208 int v134; // eax@208 int v135; // ecx@208 int v136; // eax@209 int v137; // eax@226 __int64 v138; // qax@227 signed __int64 v139; // qax@227 int (__thiscall *v140)(_DWORD); // eax@228 void *v141; // eax@228 int (__thiscall *v142)(_DWORD); // eax@229 int v143; // eax@229 int (__thiscall *v144)(_DWORD); // edx@230 int v145; // ebx@233 int v146; // eax@233 int v147; // ebx@234 signed int v148; // edx@235 int (__thiscall *v149)(_DWORD); // eax@240 int v150; // ecx@240 int v151; // eax@240 int v152; // ebx@240 int v154; // [sp-Ch] [bp-168h]@198 int v155; // [sp-8h] [bp-164h]@97 int v156; // [sp-8h] [bp-164h]@198 int v157; // [sp-8h] [bp-164h]@229 int v158; // [sp-4h] [bp-160h]@97 int v159; // [sp-4h] [bp-160h]@198 int v160; // [sp-4h] [bp-160h]@229 int v161; // [sp+10h] [bp-14Ch]@23 int v162; // [sp+14h] [bp-148h]@50 int v163; // [sp+18h] [bp-144h]@50 char v164; // [sp+20h] [bp-13Ch]@115 char v165; // [sp+21h] [bp-13Bh]@115 char v166; // [sp+23h] [bp-139h]@27 char v167; // [sp+26h] [bp-136h]@115 int v168; // [sp+34h] [bp-128h]@72 int v169; // [sp+38h] [bp-124h]@72 int v170; // [sp+3Ch] [bp-120h]@197 int v171; // [sp+40h] [bp-11Ch]@197 int v172; // [sp+4Ch] [bp-110h]@197 int v173; // [sp+50h] [bp-10Ch]@197 int v174; // [sp+54h] [bp-108h]@197 int v175; // [sp+58h] [bp-104h]@174 int v176; // [sp+5Ch] [bp-100h]@42 int v177; // [sp+60h] [bp-FCh]@1 double (__stdcall *(**v178)[4])(int); // [sp+64h] [bp-F8h]@66 double v179; // [sp+68h] [bp-F4h]@24 int v180; // [sp+6Ch] [bp-F0h]@24 int v181; // [sp+70h] [bp-ECh]@6 int v182; // [sp+74h] [bp-E8h]@1 char v183; // [sp+7Bh] [bp-E1h]@200 __int16 *v184; // [sp+7Ch] [bp-E0h]@1 unsigned int v185; // [sp+80h] [bp-DCh]@81 int v186; // [sp+84h] [bp-D8h]@46 double v187; // [sp+88h] [bp-D4h]@24 __int16 v188; // [sp+90h] [bp-CCh]@200 int v189; // [sp+94h] [bp-C8h]@49 int v190; // [sp+98h] [bp-C4h]@43 int v191; // [sp+9Ch] [bp-C0h]@43 int v192; // [sp+A0h] [bp-BCh]@43 int v193; // [sp+A4h] [bp-B8h]@126 int v194; // [sp+A8h] [bp-B4h]@38 int v195; // [sp+ACh] [bp-B0h]@70 int v196; // [sp+B0h] [bp-ACh]@23 char v197; // [sp+B4h] [bp-A8h]@18 int v198; // [sp+B8h] [bp-A4h]@94 unsigned int v199; // [sp+BCh] [bp-A0h]@64 int v200; // [sp+C0h] [bp-9Ch]@19 int v201; // [sp+C4h] [bp-98h]@42 int v202; // [sp+C8h] [bp-94h]@102 int v203; // [sp+CCh] [bp-90h]@110 unsigned int v204; // [sp+14Ch] [bp-10h]@1 int v205; // [sp+158h] [bp-4h]@1 int v206; // [sp+15Ch] [bp+0h]@1 v204 = (unsigned int)&v206 ^ __security_cookie; v9 = (unsigned int)&v206 ^ __security_cookie; v10 = a3; v11 = a1; v182 = a7; v177 = a3; v184 = a5; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlast"; dword_750AB8[dword_750CB8++] = -1; v12 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 1388); v205 = 0; v13 = v12(v11, v9); v14 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v14; v15 = &byte_85A2C0[256 * v14]; v16 = (unsigned int)dword_13254C88 < 0x40; *(_DWORD *)v15 = *(_DWORD *)v13; *((_DWORD *)v15 + 1) = *(_DWORD *)(v13 + 4); *((_DWORD *)v15 + 2) = *(_DWORD *)(v13 + 8); *((_DWORD *)v15 + 3) = *(_DWORD *)(v13 + 12); *((_DWORD *)v15 + 4) = *(_DWORD *)(v13 + 16); v15[20] = 0; if ( v16 && a4 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1452))(a4) && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a4 + 996))(a4, 291) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)a4 + 996))(a4, 499) ) { v17 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1800); v181 = 2; if ( (unsigned __int16)v17(v11) != -1 ) v181 = 1; v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1800))(a4); if ( sub_63EDC0((int)&unk_14D159B0, v18, v181) ) { if ( a3 ) { v19 = *(_DWORD *)(a3 + 4); if ( v19 ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 2960))(v11, *(_WORD *)v19); sub_499ED0((void *)v11, a4); v20 = *(_DWORD *)(a4 + 118); if ( !*(_BYTE *)(v20 + 4) || *(_BYTE *)(a3 + 224) && *(_BYTE *)(v20 + 4) == 1 ) { v21 = *(_DWORD *)a4; if ( *(_BYTE *)(a3 + 256) ) { (*(void (__thiscall **)(int))(v21 + 2016))(a4); goto LABEL_246; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(v21 + 1156))(a4) != 3 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 40))(a4) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v11 + 1416))(v11); (*(void (__thiscall **)(int))(*(_DWORD *)a4 + 1416))(a4); sub_4346E0((int)&v197, *(_WORD *)(v11 + 4), *(_WORD *)(a4 + 4)); v22 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1232); LOBYTE(v205) = 1; if ( (unsigned __int8)v22(v11) == 2 ) { v23 = *(_DWORD *)a3; v200 = 0; if ( v23 ) { if ( *(_DWORD *)(v23 + 63) || *(_DWORD *)(v23 + 67) ) v200 = 1; } } v196 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1256))(a4); v24 = 6 * dword_13254C88; LOBYTE(dword_13254C98[6 * dword_13254C88]) = 0; BYTE1(dword_13254C98[v24]) = 0; BYTE2(dword_13254C98[v24]) = 0; BYTE3(dword_13254C98[v24]) = 0; LOBYTE(dword_13254C9C[v24]) = 0; BYTE1(dword_13254C9C[v24]) = 0; BYTE2(dword_13254C9C[v24]) = 0; BYTE3(dword_13254C9C[v24]) = 0; LOBYTE(dword_13254CA0[v24]) = 0; BYTE1(dword_13254CA0[v24]) = 0; sub_42A950((int)&v161, v11, a4, a3, (int)v184, *(_DWORD *)(v11 + 102)); if ( a6 < 0 ) { (*(void (__stdcall **)(int *))(**(_DWORD **)(a3 + 112) + 24))(&v161); v180 = dword_132312AC - 1000; v187 = a2 + (double)(unsigned int)(dword_132312AC - 1000); v25 = (double)(unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v179 = v25; v26 = v187; if ( v187 >= v25 ) { v27 = v187; (*(void (__stdcall **)(int *))(**(_DWORD **)(a3 + 112) + 44))(&v161); v26 = v27; v25 = v179; } if ( v26 < v25 ) { v28 = 6 * dword_13254C88; v29 = v166 == 0; v30 = (int)&dword_13254C90[6 * dword_13254C88]; *(_DWORD *)v30 = a4; BYTE3(dword_13254C98[v28]) = 0; LOBYTE(dword_13254C9C[v28]) = 1; if ( !v29 ) BYTE1(dword_13254C9C[v28]) = 1; v31 = v196; BYTE2(dword_13254C9C[v28]) = 0; BYTE3(dword_13254C9C[v28]) = 0; dword_13254CA4[v28] = 0; dword_13254C94[v28] = v31; sub_57E110(&dword_87B254, v11, v30, 0, 1000, 0, 0); ++dword_13254C88; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1232))(v11) == 2 ) { v200 = 1; sub_434A10((int)&v197, dword_14D129E8 + 10); } if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1072))(a4) + 3282) ) { v32 = (*(int (__stdcall **)(int *))(**(_DWORD **)(a3 + 112) + 28))(&v161); v33 = (signed int)((unsigned __int64)(v32 * *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1072))(a4) + 3282) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v34 = v33 + ((unsigned int)v33 >> 31); if ( !*(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1072))(a4) + 3496) || (v180 = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1072))(a4) + 3496), v35 = sub_402710(v11, a4), v35 > (unsigned int)(v180 * v180)) ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v11 + 3924))(v11, v34, a4); } goto LABEL_245; } } if ( !v182 ) { LABEL_245: LOBYTE(v205) = 0; nullsub_2(&v197); goto LABEL_246; } if ( *(_DWORD *)v182 <= 0 ) { if ( *(_BYTE *)(a3 + 576) == 1 ) { v36 = sub_4012D0((int)&unk_877138, *(_WORD *)(a3 + 580)); v194 = v36; if ( v36 ) { v37 = *(_DWORD *)v36; if ( v37 ) { v38 = *(_DWORD *)(v37 + 34); v39 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1324))(a4); if ( sub_409A00(v39, v38) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a4 + 1616))( a4, *(_DWORD *)(*(_DWORD *)v194 + 34)); sub_401940((void *)a4, *(_DWORD *)(*(_DWORD *)v194 + 34)); sub_405730((void *)a4, *(_DWORD *)(*(_DWORD *)v194 + 34)); } } } } } v40 = 3 * dword_13254C88; dword_13254C90[6 * dword_13254C88] = 0; dword_13254C94[2 * v40] = 0; dword_13254C98[2 * v40] = 0; dword_13254C9C[2 * v40] = 0; dword_13254CA0[2 * v40] = 0; dword_13254CA4[2 * v40] = 0; v41 = *(_DWORD *)(*(_DWORD *)a3 + 67); v42 = *(_DWORD *)(*(_DWORD *)a3 + 63); v200 += v41; v43 = *(_DWORD *)v11; v180 = v41; v201 = dword_132312A8 + v42 - 1000; v176 = dword_132312A8 + v42 - 1000; if ( (*(int (__thiscall **)(int))(v43 + 1488))(v11) ) { v190 = 0; v191 = 0; v192 = 0; v44 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1488); LOBYTE(v205) = 2; v45 = (void *)v44(v11); if ( sub_5CF200(v45, (int)&v190, a3, 5, v11, a4) ) v176 = sub_5CDED0((int)&v190, v176); LOBYTE(v205) = 1; sub_424190((void **)&v190); } v46 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v11 + 2432))(v11, a4, "smo_SkillBlast"); v29 = *(_DWORD *)(a3 + 124) == 0; v47 = *(_DWORD *)(a3 + 124) < 0; LOBYTE(v186) = v46; if ( v47 | v29 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 40))(a4) || (_BYTE)v186 ) { dword_13254C94[6 * dword_13254C88] = v196; } else { v189 = *(_DWORD *)(a3 + 124); if ( (*(int (**)(void))(*(_DWORD *)v161 + 1488))() ) { v190 = 0; v191 = 0; v192 = 0; v48 = v162; v49 = v161; v50 = v163; v51 = *(int (**)(void))(*(_DWORD *)v161 + 1488); LOBYTE(v205) = 3; v52 = (void *)v51(); if ( sub_5CF200(v52, (int)&v190, v50, 11, v49, v48) == 1 ) v189 = sub_5CDED0((int)&v190, v189); LOBYTE(v205) = 1; sub_424190((void **)&v190); } v54 = (unsigned int)((unsigned int)(v189 * dword_1323127C) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( *v184 & 0xF ) { v53 = *v184; v54 += *(_DWORD *)(*(_DWORD *)(a3 + 4) + 4 * (v53 & 0xF) + 443); } v55 = *(_DWORD *)(a3 + 8); v56 = *(_DWORD *)(a3 + 12); if ( v55 != v56 ) { v57 = (v56 - v55) >> 2; v58 = 0; HIDWORD(v187) = v57; if ( v57 > 0 ) { v59 = *(_DWORD *)(a3 + 8); v189 = *(_DWORD *)(a3 + 8); while ( *(_DWORD *)v59 ) { if ( *(_DWORD *)(*(_DWORD *)v59 + 32) == 98 ) { v54 += ((signed int)((unsigned __int64)((signed int)(v54 * *(_WORD *)(v11 + 7410)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v54 * *(_WORD *)(v11 + 7410)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); break; } v189 += 4; ++v58; if ( v58 >= SHIDWORD(v187) ) break; v59 = v189; } } } v60 = v196; v61 = 6 * dword_13254C88; dword_13254C90[6 * dword_13254C88] = a4; BYTE3(dword_13254C98[v61]) = 0; LOBYTE(dword_13254C9C[v61]) = 0; BYTE2(dword_13254C9C[v61]) = 1; BYTE3(dword_13254C9C[v61]) = 0; LOBYTE(dword_13254CA0[v61]) = 0; dword_13254CA4[v61] = v54; dword_13254C94[v61] = v54 + v60; BYTE1(dword_13254CA0[v61]) = 0; v199 = v54; } v62 = *(double (__stdcall *(***)[4])(int))(a3 + 112); v181 = 0; v189 = 0; v63 = *(_DWORD *)a4; v178 = v62; v64 = (*(int (__thiscall **)(int))(v63 + 1804))(a4); if ( v64 && *(_DWORD *)(*(_DWORD *)v64 + 99) == 16 && *(_DWORD *)(*(_DWORD *)(a3 + 4) + 184) == 8 ) v178 = &off_855200; v65 = (**v178)[8]; v195 = 0; if ( !(unsigned __int8)((int (__stdcall *)(int *))v65)(&v161) || !(_BYTE)v186 ) { LABEL_129: if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 40))(a4) ) { if ( *(_BYTE *)(v10 + 584) == 1 ) { v98 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 2956))(a4); if ( v98 ) sub_57B840(v98, *(_DWORD *)(v11 + 102), v10, v11); } } if ( *(_BYTE *)(v10 + 288) ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 1276))(v11, *(_DWORD *)(v10 + 292)); if ( *(_BYTE *)(v10 + 160) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a4 + 1272))(a4, *(_DWORD *)(v10 + 164)); v99 = *(_DWORD *)(a4 + 102); v100 = sub_427BD0(&unk_13253E80); sub_549C70((void *)a4, v100, v99, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); } if ( *(_BYTE *)(v10 + 400) ) { dword_13254C90[6 * dword_13254C88] = a4; if ( dword_877910 ) { (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v11 + 1592))( v11, v11, 392, 1, dword_877910, dword_14D129E8, 0, 0, *(_DWORD *)(v10 + 404), 5, 0); sub_401900((void *)v11, 392); sub_4055D0((void *)v11, 392, *(_DWORD *)(v10 + 404), 1); (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v11 + 1008))( v11, 392, *(_DWORD *)(v10 + 404), 0); } if ( dword_877914 ) { (*(void (__thiscall **)(int, int, signed int, signed int, int, int, _DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v11 + 1592))( v11, v11, 393, 1, dword_877914, dword_14D129E8, 0, 0, *(_DWORD *)(v10 + 404), 5, 0); sub_401900((void *)v11, 393); sub_4055D0((void *)v11, 393, *(_DWORD *)(v10 + 404), 1); (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v11 + 1008))( v11, 393, *(_DWORD *)(v10 + 404), 0); } } if ( *(_BYTE *)(v10 + 384) ) { v101 = *(_DWORD *)v11; v196 = *(_DWORD *)(v10 + 388); if ( (*(int (__thiscall **)(int))(v101 + 1488))(v11) && *(_DWORD *)(v10 + 8) != *(_DWORD *)(v10 + 12) ) { v190 = 0; v191 = 0; v192 = 0; v102 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1488); LOBYTE(v205) = 5; v103 = (void *)v102(v11); if ( sub_5CF200(v103, (int)&v190, v10, 2, v11, a4) ) v196 = sub_5CDED0((int)&v190, v196); LOBYTE(v205) = 1; sub_424190((void **)&v190); } (*(void (__thiscall **)(int, signed int, int))(*(_DWORD *)a4 + 2652))(a4, 83, v196); } if ( *(_BYTE *)(v10 + 392) ) { v104 = *(_DWORD *)v11; v196 = *(_DWORD *)(v10 + 396); if ( (*(int (__thiscall **)(int))(v104 + 1488))(v11) && *(_DWORD *)(v10 + 8) != *(_DWORD *)(v10 + 12) ) { v190 = 0; v191 = 0; v192 = 0; v105 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1488); LOBYTE(v205) = 6; v106 = (void *)v105(v11); if ( sub_5CF200(v106, (int)&v190, v10, 2, v11, a4) ) v196 = sub_5CDED0((int)&v190, v196); LOBYTE(v205) = 1; sub_424190((void **)&v190); } (*(void (__thiscall **)(int, signed int, int))(*(_DWORD *)a4 + 2652))(a4, 35, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 50, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 51, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 52, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 53, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 54, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 55, v196); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 57, v196); } if ( *(_BYTE *)(v10 + 408) ) { v107 = *(_DWORD *)v11; v196 = *(_DWORD *)(v10 + 412); if ( (*(int (__thiscall **)(int))(v107 + 1488))(v11) && *(_DWORD *)(v10 + 8) != *(_DWORD *)(v10 + 12) ) { v190 = 0; v191 = 0; v192 = 0; v108 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1488); LOBYTE(v205) = 7; v109 = (void *)v108(v11); if ( sub_5CF200(v109, (int)&v190, v10, 2, v11, a4) ) v196 = sub_5CDED0((int)&v190, v196); LOBYTE(v205) = 1; sub_424190((void **)&v190); } (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)a4 + 2652))(a4, 33, v196); } if ( *(_DWORD *)v182 <= -1 ) { if ( !v167 ) { v126 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 1440); v188 = *v184; LOBYTE(v187) = 0; HIDWORD(v187) = v10; v29 = v126(v11, a4, &v187, &v197, &v183, v186) == 0; v127 = dword_13254C88; if ( !v29 ) BYTE3(dword_13254C9C[6 * dword_13254C88]) = 1; v128 = v183; v129 = 6 * v127; dword_13254C90[v129] = a4; LOBYTE(dword_13254CA0[v129]) |= v128; } sub_57B600((void *)v11, v10, v184, a4, (int)&v197); v130 = *(_DWORD *)(*(_DWORD *)(v10 + 4) + 527); if ( v130 == 9 || v130 == 8 ) { v131 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 1836); v188 = *v184; LOBYTE(v187) = 0; HIDWORD(v187) = v10; v196 = 0; if ( (unsigned __int8)v131(v11, a4) ) { if ( *(_BYTE *)(v10 + 352) ) { v132 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1324))(a4); if ( v132 ) { v133 = *(_WORD *)(v132 + 3368); v134 = v132 + 3364; LOWORD(v191) = v133; v135 = *(_WORD *)(v134 + 14); v192 = v134; HIWORD(v191) = *(_WORD *)(*(_DWORD *)(v134 + 8) + 12 * v135 + 4); v193 = 0; if ( sub_402530((int)&v191) ) { while ( 1 ) { v136 = sub_4A2CF0((int)&v191); if ( sub_4087B0((void *)v136, v11, 95) ) break; if ( !sub_402530((int)&v191) ) goto LABEL_226; } v196 = 256; } } } else { v196 = *(_BYTE *)(v10 + 224) != 0 ? 512 : 2; } } else { if ( *(_DWORD *)(*(_DWORD *)(v10 + 4) + 527) == 8 ) { v196 = 24; } else { if ( *(_BYTE *)(v10 + 320) ) v196 = 4; if ( *(_BYTE *)(v10 + 344) ) v196 |= 8u; if ( *(_BYTE *)(v10 + 336) ) v196 |= 0x10u; if ( *(_BYTE *)(v10 + 328) ) v196 |= 0x20u; if ( *(_BYTE *)(v10 + 432) ) v196 |= 0x400u; } } LABEL_226: (*(void (__thiscall **)(int, int, double *, char *))(*(_DWORD *)v11 + 1444))(v11, a4, &v187, &v197); (*(void (__thiscall **)(int, int, double *, char *, int))(*(_DWORD *)v11 + 1448))( v11, a4, &v187, &v197, v196); v137 = 6 * dword_13254C88; dword_13254C90[6 * dword_13254C88] = a4; BYTE3(dword_13254C9C[v137]) = 1; LOBYTE(dword_13254CA0[v137]) = 0; } v138 = *(_WORD *)(*(_DWORD *)v10 + 73) << 9; v139 = 10 * (((WORD2(v138) & 0x3FF) + (signed int)v138) >> 10) * (signed __int64)(signed int)&unk_10624DD3; sub_434A10((int)&v197, dword_14D129E8 + (SHIDWORD(v139) >> 6) + (HIDWORD(v139) >> 31)); if ( (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1488))(a4) ) { sub_42A830((int)&v170); v170 = 0; v171 = 1; v172 = a4; v173 = v11; v174 = a4; v190 = 0; v191 = 0; v192 = 0; v140 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1488); LOBYTE(v205) = 10; v141 = (void *)v140(a4); sub_5CF1E0(v141, (int)&v190, (int)&v170); if ( *(_DWORD *)(*(_DWORD *)v10 + 58) ) { v160 = (int)&v170; v157 = (int)&v190; v144 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1488); v171 = 2; v143 = v144(a4); } else { v160 = (int)&v170; v157 = (int)&v190; v142 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1488); v171 = 3; v143 = v142(a4); } sub_5CF1E0((void *)v143, v157, v160); LOBYTE(v205) = 1; sub_424190((void **)&v190); } if ( *(_BYTE *)(v10 + 600) == 1 ) { v145 = *(_DWORD *)(v10 + 604); v146 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1264))(a4); if ( v145 == 999 ) { v147 = v146 - 1; } else { v148 = (signed int)((unsigned __int64)(v145 * v146 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v147 = v148 + ((unsigned int)v148 >> 31); } if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1256))(a4) <= (unsigned int)v147 ) v147 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1256))(a4) - 1; if ( v147 <= 0 ) v147 = 1; dword_13254CA4[6 * dword_13254C88] = v147; v149 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1256); v195 = v147; v150 = v149(a4); v151 = v202; dword_13254C94[6 * dword_13254C88] = v150 - v147; v202 = v147 + v151; v203 += v147; v152 = v147 + v151; v189 = v203; } else { v152 = v181; } (*(void (__thiscall **)(int, int))(*(_DWORD *)a4 + 1620))(a4, v195); v125 = (int)&dword_13254C90[6 * dword_13254C88]; if ( !dword_13254C90[6 * dword_13254C88] ) goto LABEL_245; v159 = v189; v156 = v152; v154 = v176; } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a4 + 996))(a4, 499) && !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a4 + 996))(a4, 291) ) { v194 = v182 + 16; HIDWORD(v187) = 4; do { v110 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( (signed int)v110 < *(_DWORD *)(v194 - 4) ) { v177 = 0; while ( 1 ) { v196 = *(_DWORD *)v194; v111 = sub_401310(&unk_877138, v196); v195 = v111; if ( !v111 || !*(_DWORD *)v111 ) { sub_639100( &unk_86DDD8, (int)"BattleObjectGroup::BattleObject::bo_Routine : Invalid abstateidx", v196); goto LABEL_192; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)a4 + 1588))(a4, v111) ) break; v112 = (unsigned __int16)*v184; v186 = 0; if ( v112 & 0xF00 ) v186 = *(_DWORD *)(*(_DWORD *)(v10 + 4) + 4 * ((v112 >> 8) & 0xF) + 483); v113 = *(_DWORD *)(v194 + 4); v175 = v113; v114 = *(_DWORD *)(v195 + 36 * v113 + 12); v185 = 0; if ( v114 ) v185 = *(_DWORD *)(v114 + 43); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1488))(v11) && *(_DWORD *)(v10 + 8) != *(_DWORD *)(v10 + 12) ) { v190 = 0; v191 = 0; v192 = 0; v115 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1488); LOBYTE(v205) = 8; v116 = (void *)v115(v11); if ( sub_5CF200(v116, (int)&v190, v10, 2, v11, a4) ) v185 = sub_5CDED0((int)&v190, v185); LOBYTE(v205) = 1; sub_424190((void **)&v190); } if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int, int, int, int, int, signed int, unsigned int, signed int, _DWORD))(*(_DWORD *)a4 + 1592))( a4, v11, v196, v175, v195, dword_14D129E8, v186, -1, v185, 5, 0) ) { v117 = v196; v118 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1324))(a4); v119 = sub_409A00(v118, v117); if ( v119 ) (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v11 + 1492))(v11, v119, v10, a4); if ( !*(_DWORD *)(*(_DWORD *)v195 + 204) || !*(_DWORD *)(*(_DWORD *)v195 + 208) ) { sub_401900((void *)a4, v196); v120 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a4 + 1008); v186 += v185; v120(a4, v196, v186, 1); sub_4055D0((void *)a4, v196, v186, v175); } BYTE3(dword_13254C9C[6 * dword_13254C88]) = 1; } ++v177; if ( v177 >= 1 ) goto LABEL_192; } LOBYTE(dword_13254CA0[6 * dword_13254C88]) = 1; } LABEL_192: v194 += 12; --HIDWORD(v187); } while ( HIDWORD(v187) ); } sub_57B600((void *)v11, v10, v184, a4, (int)&v197); if ( !(unsigned __int8)((int (__stdcall *)(int *))(**v178)[8])(&v161) ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)a4 + 1792))(a4, v11, v200); if ( !*(_DWORD *)v182 && (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1488))(a4) ) { sub_42A830((int)&v170); v170 = 0; v171 = 1; v172 = a4; v173 = v11; v174 = a4; v190 = 0; v191 = 0; v192 = 0; v121 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1488); LOBYTE(v205) = 9; v122 = (void *)v121(a4); sub_5CF1E0(v122, (int)&v190, (int)&v170); v123 = *(_DWORD *)a4; v171 = 3 - (*(_DWORD *)(*(_DWORD *)v10 + 58) != 0); v124 = (void *)(*(int (__thiscall **)(int))(v123 + 1488))(a4); sub_5CF1E0(v124, (int)&v190, (int)&v170); LOBYTE(v205) = 1; sub_424190((void **)&v190); } v159 = v189; v156 = v181; v154 = v176; v125 = (int)&dword_13254C90[6 * dword_13254C88]; } sub_57E110(&dword_87B254, v11, v125, v180, v154, v156, v159); ++dword_13254C88; goto LABEL_245; } LOBYTE(dword_13254C98[6 * dword_13254C88]) = 1; BYTE1(dword_13254C98[6 * dword_13254C88]) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 3836))(v11); BYTE2(dword_13254C98[6 * dword_13254C88]) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 3840))(v11); sub_4A54B0(&unk_D73D278, (int)&v161); v168 = v182; v169 = a9; if ( a6 < 0 ) v66 = ((int (__stdcall *)(int *))(**v178)[7])(&v161); else v66 = a6; v67 = (unsigned int)((unsigned int)(v66 * dword_13231280) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; HIDWORD(v187) = *(_DWORD *)(v182 + 4); v68 = (signed int)((unsigned __int64)((signed int)(HIDWORD(v187) * v67) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v69 = v68 + ((unsigned int)((unsigned __int64)((signed int)(HIDWORD(v187) * v67) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v194 = v68 + ((unsigned int)((unsigned __int64)((signed int)(HIDWORD(v187) * v67) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( (signed int)v67 > 0 && !v69 ) { if ( SHIDWORD(v187) <= 0 ) { LOBYTE(dword_13254C98[6 * dword_13254C88]) = 0; } else { v69 = 1; v194 = 1; } } v29 = *(_BYTE *)(a3 + 504) == 1; v195 = v69; if ( v29 ) { v185 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1264))(a4); if ( v185 ) { v70 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1256))(a4); v195 = v194 + (signed int)(v194 * (((signed int)((unsigned __int64)((signed int)(*(_DWORD *)(a3 + 508) * 1000 * (v185 - (unsigned __int64)(unsigned int)v70) / v185) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(*(_DWORD *)(a3 + 508) * 1000 * (v185 - (unsigned __int64)(unsigned int)v70) / v185) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31))) / *(_DWORD *)(a3 + 508); } } if ( *(_BYTE *)(a3 + 480) == 1 ) { v71 = a8 * *(_DWORD *)(a3 + 484); if ( *(_BYTE *)(a3 + 488) == 1 && *(_DWORD *)(a3 + 492) < v71 ) v71 = *(_DWORD *)(a3 + 492); v195 += v195 * v71 / -1000; } if ( *(_BYTE *)(a3 + 512) == 1 && !sub_57B840((void *)v11, *(_DWORD *)(a4 + 102), a3, v11) ) goto LABEL_245; if ( *(_BYTE *)(a3 + 168) && (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1804))(a4) && *(_DWORD *)(*(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1804))(a4) + 99) == 5 ) v195 += ((signed int)((unsigned __int64)(v195 * *(_DWORD *)(a3 + 172) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v195 * *(_DWORD *)(a3 + 172) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v72 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1072); v198 = v195; if ( *(_WORD *)(v72(a4) + 3282) ) { v73 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1072))(a4); v74 = *(_DWORD *)a4; v194 = ((signed int)((unsigned __int64)(v195 * *(_WORD *)(v73 + 3282) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v195 * *(_WORD *)(v73 + 3282) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( !*(_DWORD *)((*(int (__thiscall **)(int))(v74 + 1072))(a4) + 3496) ) { v76 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 3924); v158 = a4; v155 = v194; goto LABEL_99; } HIDWORD(v187) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 1072))(a4) + 3496); v75 = sub_402710(v11, a4); if ( v75 > (unsigned int)(HIDWORD(v187) * HIDWORD(v187)) ) { v76 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 3924); v158 = a4; v155 = v194; LABEL_99: v76(v11, v155, v158); goto LABEL_100; } } LABEL_100: if ( *(_BYTE *)(a3 + 296) ) { HIDWORD(v187) = *(_DWORD *)(a3 + 300) + dword_132312AC - 1000; v77 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( (signed int)v77 < SHIDWORD(v187) ) { v202 = (unsigned int)((unsigned int)(dword_1323129C * (v202 + *(_DWORD *)(a3 + 244))) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1488))(v11) ) { v190 = 0; v191 = 0; v192 = 0; v78 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 1488); LOBYTE(v205) = 4; v79 = (void *)v78(v11); if ( sub_5CF200(v79, (int)&v190, a3, 7, v11, a4) ) v202 = sub_5CDED0((int)&v190, v202); LOBYTE(v205) = 1; sub_424190((void **)&v190); } v181 = v202; } } if ( *(_DWORD *)(v11 + 7892) > 0 ) v195 = *(_DWORD *)(v11 + 7892); if ( *(_BYTE *)(a3 + 248) ) { v80 = *(_DWORD *)(a3 + 300); v203 += ((signed int)((unsigned __int64)(v195 * *(_DWORD *)(a3 + 252) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v195 * *(_DWORD *)(a3 + 252) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); HIDWORD(v187) = v80 + dword_132312AC - 1000; v81 = sub_639500((int)&unk_1508B108, 0x3E8u); if ( (signed int)v81 < SHIDWORD(v187) ) v189 = (unsigned int)((unsigned int)(dword_1323129C * *(_DWORD *)(a3 + 252)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; } if ( v196 > v195 ) v194 = v196 - v195; else v194 = 0; v82 = v165; v83 = v164; v84 = 6 * dword_13254C88; dword_13254C90[6 * dword_13254C88] = a4; BYTE3(dword_13254C98[v84]) = v83; v85 = v194; LOBYTE(dword_13254C9C[v84]) = v82; v86 = v167; BYTE2(dword_13254C9C[v84]) = 0; LOBYTE(dword_13254CA0[v84]) = 0; dword_13254C94[v84] = v85; v87 = v195; BYTE1(dword_13254CA0[v84]) = v86; dword_13254CA4[v84] = v87; if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 40))(a4) ) { if ( !v165 ) { if ( *(double (__stdcall ***)(int))(a3 + 112) != off_8551EC ) goto LABEL_249; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)a4 + 996))(a4, 201) ) { LABEL_122: v88 = v195; v89 = v195 + v196; v90 = 6 * dword_13254C88; LOBYTE(dword_13254C98[6 * dword_13254C88]) = 0; BYTE2(dword_13254C9C[v90]) = 1; dword_13254CA4[v90] = v88; v198 = 0; v199 = v88; dword_13254C94[v90] = v89; goto LABEL_126; } if ( !v165 ) { LABEL_249: if ( *(double (__stdcall ***)(int))(a3 + 112) == &off_8551F0 && (unsigned __int8)(*(int (__thiscall **)(_DWORD, signed int))(*(_DWORD *)a4 + 996))(a4, 202) ) goto LABEL_122; } } if ( v194 > 0 ) { LABEL_126: v92 = *(_WORD *)(v11 + 3810); LOWORD(v191) = *(_WORD *)(v11 + 3800); v93 = *(_DWORD *)(v11 + 3804); v192 = v11 + 3796; v94 = *(_WORD *)(v93 + 12 * v92 + 4); v193 = 0; HIWORD(v191) = v94; if ( sub_402530((int)&v191) ) { do { v95 = dword_871508[3 * *(_DWORD *)(sub_4A2CF0((int)&v191) + 4)]; v96 = *(_DWORD *)v95; HIDWORD(v187) = v95; v97 = sub_4A2CF0((int)&v191); (*(void (__thiscall **)(_DWORD, int))(v96 + 64))(HIDWORD(v187), v97); } while ( sub_402530((int)&v191) ); v10 = v177; } goto LABEL_129; } (*(void (__thiscall **)(int))(*(_DWORD *)a4 + 36))(a4); } v91 = 6 * dword_13254C88; dword_13254CA4[6 * dword_13254C88] = v195; dword_13254C94[v91] = 0; goto LABEL_126; } } } } } } LABEL_246: --dword_750CB8; v205 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBlast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8551EC: using guessed type double (__stdcall *off_8551EC[2])(int); // 8551F0: using guessed type double (__stdcall *off_8551F0)(int); // 855200: using guessed type double (__stdcall *(*off_855200)[4])(int); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 871508: using guessed type int dword_871508[]; // 877910: using guessed type int dword_877910; // 877914: using guessed type int dword_877914; // 1323127C: using guessed type int dword_1323127C; // 13231280: using guessed type int dword_13231280; // 1323129C: using guessed type int dword_1323129C; // 132312A8: using guessed type int dword_132312A8; // 132312AC: using guessed type int dword_132312AC; // 13254C88: using guessed type int dword_13254C88; // 13254C90: using guessed type int dword_13254C90[]; // 13254C94: using guessed type int dword_13254C94[]; // 13254C98: using guessed type int dword_13254C98[]; // 13254C9C: using guessed type int dword_13254C9C[]; // 13254CA0: using guessed type int dword_13254CA0[]; // 13254CA4: using guessed type int dword_13254CA4[]; // 14D129E8: using guessed type int dword_14D129E8; //----- (00580A20) -------------------------------------------------------- int __userpurge sub_580A20(int a1, double a2, int a3, __int16 *a4, signed int a5, int a6) { int v6; // esi@1 signed int v7; // eax@1 signed int v8; // edi@1 double v9; // st7@8 void *v10; // ecx@10 int v11; // eax@10 int v12; // edi@11 int v13; // ecx@12 void *v14; // eax@12 void *v15; // eax@12 int v16; // edi@17 int v17; // eax@19 int v18; // eax@19 void *v19; // ecx@19 int v20; // eax@22 int v21; // eax@28 int v22; // edi@34 int v23; // ST14_4@34 int v24; // ST0C_4@34 __int16 v25; // ax@34 int v27; // [sp-8h] [bp-ACh]@38 unsigned int v28; // [sp-4h] [bp-A8h]@1 int v29; // [sp-4h] [bp-A8h]@38 int v30; // [sp+10h] [bp-94h]@10 int v31; // [sp+14h] [bp-90h]@10 int v32; // [sp+18h] [bp-8Ch]@10 int v33; // [sp+1Ch] [bp-88h]@10 int v34; // [sp+20h] [bp-84h]@10 int v35; // [sp+24h] [bp-80h]@10 int v36; // [sp+28h] [bp-7Ch]@10 __int16 *v37; // [sp+2Ch] [bp-78h]@1 int v38; // [sp+30h] [bp-74h]@19 int v39; // [sp+34h] [bp-70h]@19 void *v40; // [sp+38h] [bp-6Ch]@10 int v41; // [sp+3Ch] [bp-68h]@10 int v42; // [sp+40h] [bp-64h]@10 int v43; // [sp+44h] [bp-60h]@19 int v44; // [sp+48h] [bp-5Ch]@16 int v45; // [sp+4Ch] [bp-58h]@1 int v46; // [sp+50h] [bp-54h]@8 int v47; // [sp+54h] [bp-50h]@11 char v48; // [sp+58h] [bp-4Ch]@25 unsigned int v49; // [sp+94h] [bp-10h]@1 int v50; // [sp+A0h] [bp-4h]@1 int v51; // [sp+A4h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v28 = (unsigned int)&v51 ^ __security_cookie; v6 = a1; v45 = a6; v37 = a4; sub_4675D0((int)&unk_D020420, (int)"AxialListScanSkillTarget::alsst_SkillBlast"); dword_7508B8[dword_750CB8] = (int)"AxialListScanSkillTarget::alsst_SkillBlast"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_DWORD *)(v6 + 1604); v8 = 0; v50 = 0; if ( a5 >= v7 ) a5 = v7; if ( a3 ) { if ( *(_BYTE *)(a3 + 592) == 1 && v45 && a5 > 0 ) { v9 = (double)*(signed int *)(v45 + 4); v46 = v45 + 4; a2 = v9 / (double)a5; *(_DWORD *)(v45 + 4) = (signed int)a2; } } else { sub_639100(&unk_86DDD8, (int)"AxialListScanSkillTarget::alsst_SkillBlast : idx null", 0); } if ( (*(int (__stdcall **)(unsigned int))(**(_DWORD **)(v6 + 1840) + 1488))(v28) ) { v10 = 0; v31 = 0; v32 = 10; v33 = 0; v36 = 0; v40 = 0; v41 = 0; v42 = 0; v11 = *(_DWORD *)(v6 + 1840); LOBYTE(v50) = 1; v30 = 0; v34 = v11; v35 = v11; if ( a5 > 0 ) { v12 = v6 + 4; v47 = a5; do { v13 = *(_DWORD *)(v6 + 1840); v36 = *(_DWORD *)v12; v31 = 1; v14 = (void *)(*(int (**)(void))(*(_DWORD *)v13 + 1488))(); sub_5CF1E0(v14, (int)&v40, (int)&v30); v31 = 3 - (*(_DWORD *)(*(_DWORD *)a3 + 58) != 0); v15 = (void *)(*(int (**)(void))(**(_DWORD **)(v6 + 1840) + 1488))(); sub_5CF1E0(v15, (int)&v40, (int)&v30); v12 += 8; --v47; } while ( v47 ); v10 = v40; v8 = 0; } LOBYTE(v50) = 0; if ( v10 != (void *)v8 ) operator delete(v10); } v44 = v8; if ( a5 <= v8 ) goto LABEL_41; v16 = v6 + 4; v47 = v6 + 4; while ( 1 ) { if ( *(_DWORD *)v16 ) { v17 = *(_DWORD *)(*(_DWORD *)v16 + 102); v42 = *(_DWORD *)v17; v18 = *(_DWORD *)(v17 + 4); v38 = v42; v19 = *(void **)(v6 + 1840); v43 = v18; v39 = v18; sub_4BD750( v19, v6 + 1844, (int)&v38, 10000, (int)&v42, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v38 == v42 ) { if ( v39 == v43 ) break; } } LABEL_36: v16 += 8; ++v44; v47 = v16; if ( v44 >= a5 ) goto LABEL_41; } if ( !a3 ) { v29 = 0; v27 = (int)"AxialListScanSkillTarget::alsst_SkillBlast : idx null"; goto LABEL_40; } v20 = *(_DWORD *)(a3 + 4); if ( v20 ) { if ( *(_DWORD *)(v20 + 527) != 5 || (unsigned __int8)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 1840) + 3724))(*(_DWORD *)v16) ) { sub_434660((int)&v48); LOBYTE(v50) = 2; if ( v45 ) v46 = v45; else v46 = (int)&v48; v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 8))(v6, v44); sub_57EDA0(*(_DWORD *)(v6 + 1840), a2, a3, *(_DWORD *)v16, v37, -1, v46, -1, v21); if ( v45 && (*(_DWORD *)v45 == -1 || !*(_DWORD *)v45) ) sub_4A68D0( &unk_D73D278, *(_DWORD *)(v6 + 1840), *(_DWORD *)v16, **(_WORD **)(a3 + 4), *(_DWORD *)(*(_DWORD *)v16 + 102), 1); if ( *(_BYTE *)(a3 + 464) == 1 && *(_DWORD *)(v6 + 1840) ) { v22 = **(_DWORD **)(v6 + 1840); v23 = *(_WORD *)(v6 + 1876); v24 = *(_DWORD *)v47; v25 = sub_434770((int)&dword_87B264); (*(void (__thiscall **)(_DWORD, int, _DWORD, int, _DWORD, int, signed int))(v22 + 3060))( *(_DWORD *)(v6 + 1840), a3, (unsigned __int16)v25, v24, 0, v23, 2); v16 = v47; } LOBYTE(v50) = 0; nullsub_2(&v48); } goto LABEL_36; } v29 = 0; v27 = (int)"AxialListScanSkillTarget::alsst_SkillBlast : idx->Activ null"; LABEL_40: sub_639100(&unk_86DDD8, v27, v29); LABEL_41: --dword_750CB8; v50 = -1; return sub_467660((int)&unk_D020420, (int)"AxialListScanSkillTarget::alsst_SkillBlast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00580DC0) -------------------------------------------------------- int __userpurge sub_580DC0(int a1, double a2, int a3, __int16 *a4, int a5, int a6) { int v6; // ebx@1 int v7; // esi@1 __int16 v8; // di@3 int v9; // eax@5 void *v10; // ecx@8 int v11; // eax@8 int v12; // edi@8 int v13; // eax@11 int v14; // eax@11 int v15; // ebx@12 int v16; // ecx@14 unsigned int v17; // edx@14 unsigned int v18; // eax@14 int v19; // ecx@14 int v20; // edx@16 int v21; // eax@16 int v22; // ecx@18 void *v23; // eax@18 int v24; // ecx@18 void *v25; // eax@18 int v26; // ebx@22 int v27; // eax@26 int v28; // eax@26 int v29; // edi@27 int v30; // ecx@29 unsigned int v31; // edx@29 unsigned int v32; // eax@29 int v33; // ecx@29 int v34; // edi@31 int v35; // eax@32 int v36; // eax@32 void *v37; // ecx@32 int v38; // eax@34 char *v39; // ebx@37 int v40; // eax@39 int v41; // ST10_4@39 int v42; // ebx@39 int v43; // edi@45 int v44; // ST14_4@45 int v45; // ST0C_4@45 __int16 v46; // ax@45 int v48; // [sp-8h] [bp-CCh]@2 unsigned int v49; // [sp-4h] [bp-C8h]@1 char v50; // [sp+Ch] [bp-B8h]@26 int v51; // [sp+18h] [bp-ACh]@1 int v52; // [sp+1Ch] [bp-A8h]@8 int v53; // [sp+20h] [bp-A4h]@8 int v54; // [sp+24h] [bp-A0h]@8 int v55; // [sp+28h] [bp-9Ch]@8 int v56; // [sp+2Ch] [bp-98h]@8 int v57; // [sp+30h] [bp-94h]@8 int v58; // [sp+34h] [bp-90h]@8 void *v59; // [sp+38h] [bp-8Ch]@8 int v60; // [sp+3Ch] [bp-88h]@8 int v61; // [sp+40h] [bp-84h]@8 char v62; // [sp+48h] [bp-7Ch]@11 int v63; // [sp+4Ch] [bp-78h]@32 int v64; // [sp+50h] [bp-74h]@32 char v65; // [sp+54h] [bp-70h]@11 int v66; // [sp+58h] [bp-6Ch]@32 int v67; // [sp+5Ch] [bp-68h]@32 __int16 *v68; // [sp+60h] [bp-64h]@1 int v69; // [sp+64h] [bp-60h]@1 int v70; // [sp+68h] [bp-5Ch]@23 int v71; // [sp+6Ch] [bp-58h]@1 int v72; // [sp+70h] [bp-54h]@22 int v73; // [sp+74h] [bp-50h]@7 char v74; // [sp+78h] [bp-4Ch]@37 unsigned int v75; // [sp+B4h] [bp-10h]@1 int v76; // [sp+C0h] [bp-4h]@1 int v77; // [sp+C4h] [bp+0h]@1 v75 = (unsigned int)&v77 ^ __security_cookie; v49 = (unsigned int)&v77 ^ __security_cookie; v6 = a3; v7 = a1; v69 = a6; v71 = a3; v68 = a4; v51 = (int)"AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget"; sub_4675D0((int)&unk_D020420, (int)"AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget"); dword_7508B8[dword_750CB8] = (int)"AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget"; dword_750AB8[dword_750CB8++] = -1; v76 = 0; if ( a3 ) { v8 = -1; if ( *(_BYTE *)(a3 + 552) == 1 ) { if ( a5 < *(_DWORD *)(v7 + 1604) ) { v9 = (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(v7 + 1840) + 3096))(v49); if ( v9 ) v8 = *(_WORD *)(v9 + 4); } } sub_57C230((void *)v7, a5, v8); v73 = *(_DWORD *)(v7 + 1868); if ( (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(v7 + 1840) + 1488))(v49) ) { v10 = 0; v53 = 0; v54 = 10; v55 = 0; v58 = 0; v59 = 0; v60 = 0; v61 = 0; v11 = *(_DWORD *)(v7 + 1840); v12 = 0; LOBYTE(v76) = 1; v52 = 0; v56 = v11; v57 = v11; if ( v73 > 0 ) { do { if ( v12 < 0 || v12 >= *(_DWORD *)(v7 + 1868) ) { v21 = 0; } else { v13 = sub_574B00(v7 + 1852, (int)&v62); v14 = sub_574CD0((void *)v13, (int)&v65, v12); if ( *(_DWORD *)v14 ) v15 = **(_DWORD **)v14; else v15 = 0; v16 = *(_DWORD *)(v14 + 8); v17 = *(_DWORD *)(v15 + 8); v18 = *(_DWORD *)(v14 + 8) >> 2; v19 = v16 & 3; if ( v17 <= v18 ) v18 -= v17; v20 = *(_DWORD *)(v15 + 4); v6 = v71; v21 = *(_DWORD *)(*(_DWORD *)(v20 + 4 * v18) + 4 * v19); } v22 = *(_DWORD *)(v7 + 1840); v58 = v21; v53 = 1; v23 = (void *)(*(int (**)(void))(*(_DWORD *)v22 + 1488))(); sub_5CF1E0(v23, (int)&v59, (int)&v52); v24 = *(_DWORD *)(v7 + 1840); v53 = 3 - (*(_DWORD *)(*(_DWORD *)v6 + 58) != 0); v25 = (void *)(*(int (**)(void))(*(_DWORD *)v24 + 1488))(); sub_5CF1E0(v25, (int)&v59, (int)&v52); ++v12; } while ( v12 < v73 ); v10 = v59; } LOBYTE(v76) = 0; if ( v10 ) operator delete(v10); } v26 = 0; v72 = 0; if ( v73 > 0 ) { v70 = v7 + 4; do { if ( v26 >= 0 && v26 < *(_DWORD *)(v7 + 1868) ) { v27 = sub_574B00(v7 + 1852, (int)&v60); v28 = sub_574CD0((void *)v27, (int)&v50, v26); if ( *(_DWORD *)v28 ) v29 = **(_DWORD **)v28; else v29 = 0; v30 = *(_DWORD *)(v28 + 8); v31 = *(_DWORD *)(v29 + 8); v32 = *(_DWORD *)(v28 + 8) >> 2; v33 = v30 & 3; if ( v31 <= v32 ) v32 -= v31; v34 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v29 + 4) + 4 * v32) + 4 * v33); if ( v34 ) { v35 = *(_DWORD *)(v34 + 102); v66 = *(_DWORD *)v35; v36 = *(_DWORD *)(v35 + 4); v63 = v66; v37 = *(void **)(v7 + 1840); v67 = v36; v64 = v36; sub_4BD750( v37, v7 + 1844, (int)&v63, 10000, (int)&v66, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140); if ( v63 == v66 ) { if ( v64 == v67 ) { v38 = *(_DWORD *)(v71 + 4); if ( !v38 ) { sub_639100( &unk_86DDD8, (int)"AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget : idx->Activ null", 0); break; } if ( *(_DWORD *)(v38 + 527) != 5 || (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 1840) + 3724))(v34) ) { sub_434660((int)&v74); v39 = (char *)v69; LOBYTE(v76) = 2; if ( !v69 ) v39 = &v74; v40 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 8))(v7, v72); v41 = (int)v39; v42 = v71; sub_57EDA0(*(_DWORD *)(v7 + 1840), a2, v71, v34, v68, -1, v41, -1, v40); if ( v69 && (*(_DWORD *)v69 == -1 || !*(_DWORD *)v69) ) sub_4A68D0( &unk_D73D278, *(_DWORD *)(v7 + 1840), v34, **(_WORD **)(v42 + 4), *(_DWORD *)(v34 + 102), 1); if ( *(_BYTE *)(v42 + 464) == 1 && *(_DWORD *)(v7 + 1840) ) { v43 = **(_DWORD **)(v7 + 1840); v44 = *(_WORD *)(v7 + 1876); v45 = *(_DWORD *)v70; v46 = sub_434770((int)&dword_87B264); (*(void (__thiscall **)(_DWORD, int, _DWORD, int, _DWORD, int, signed int))(v43 + 3060))( *(_DWORD *)(v7 + 1840), v42, (unsigned __int16)v46, v45, 0, v44, 2); } LOBYTE(v76) = 0; nullsub_2(&v74); v26 = v72; } } } } } v70 += 8; ++v26; v72 = v26; } while ( v26 < v73 ); } --dword_750CB8; v48 = (int)"AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget"; v76 = -1; } else { --dword_750CB8; v76 = -1; v48 = (int)"AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget"; } return sub_467660((int)&unk_D020420, v48); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00581220) -------------------------------------------------------- int __userpurge sub_581220(int a1, double a2, int a3, __int16 *a4, int a5) { int v5; // esi@1 void *v6; // eax@1 int v7; // edx@1 int v8; // ST04_4@1 int v9; // eax@1 int v10; // eax@1 int v11; // ecx@1 _BYTE *v12; // ecx@1 int v13; // ecx@1 int *v14; // ebx@2 int v15; // eax@7 int v16; // eax@8 int v17; // ST04_4@10 int v18; // eax@10 _UNKNOWN *v20; // [sp-14h] [bp-48h]@8 int v21; // [sp-10h] [bp-44h]@8 int v22; // [sp-Ch] [bp-40h]@8 int v23; // [sp-8h] [bp-3Ch]@8 int v24; // [sp-4h] [bp-38h]@8 int v25; // [sp-4h] [bp-38h]@10 char v26; // [sp+10h] [bp-24h]@1 char v27; // [sp+1Ch] [bp-18h]@8 int v28; // [sp+24h] [bp-10h]@1 int v29; // [sp+30h] [bp-4h]@1 v5 = a1; v28 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 9283; *((_WORD *)v6 + 1) = **(_WORD **)(a5 + 4); *((_WORD *)v6 + 2) = *(_WORD *)(v5 + 4); *(_DWORD *)((char *)v6 + 6) = *(_DWORD *)a3; v7 = *(_DWORD *)(a3 + 4); v29 = 0; *(_DWORD *)((char *)v6 + 10) = v7; sub_4287B0(&v26, &off_849C18, 14); v8 = *(_DWORD *)(v5 + 102); LOBYTE(v29) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v5, v9, v8, 0, 0, (int)&v26, 1, 65535); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1388))(v5); v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); *((_DWORD *)v12 + 4) = *(_DWORD *)(v10 + 16); v12[20] = 0; dword_13254C88 = 0; v13 = *(_DWORD *)(a5 + 4); switch ( *(_DWORD *)(v13 + 188) ) { case 0: v14 = &dword_13257008; goto LABEL_7; case 3: v14 = &dword_132559E8; goto LABEL_7; case 2: case 6: v14 = &dword_13256140; goto LABEL_7; case 5: v14 = &dword_13255290; goto LABEL_7; case 7: v14 = &dword_13256898; LABEL_7: v14[460] = v5; v15 = *(_DWORD *)(v5 + 102); v14[461] = *(_DWORD *)v15; v14[462] = *(_DWORD *)(v15 + 4); v14[401] = 0; if ( *(_DWORD *)(a5 + 40) == *(_DWORD *)(a5 + 44) ) { sub_4C0FC0((int)v14); v16 = a3; v24 = 65535; v23 = 1; v22 = (int)v14; v21 = 0; v20 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(a5 + 4) + 259) >> 1); } else { sub_4C0FD0( (int)v14, *(_DWORD *)(a5 + 40), **(_DWORD **)(v5 + 102), *(_DWORD *)(*(_DWORD *)(v5 + 102) + 4), **(_DWORD **)(v5 + 102), *(_DWORD *)(*(_DWORD *)(v5 + 102) + 4), **(_BYTE **)(v5 + 106)); v24 = 65535; v23 = 1; v22 = (int)v14; v21 = 0; v20 = *(_UNKNOWN **)(*(_DWORD *)(a5 + 40) + 52); v16 = sub_4C10B0((int)v14, (int)&v27); } v17 = v16; v18 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v5, v18, v17, v20, v21, v22, v23, v24); qsort(v14 + 1, v14[401], 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); sub_580A20((int)v14, a2, a5, a4, *(_DWORD *)(*(_DWORD *)(a5 + 4) + 263), 0); v25 = a3; break; default: sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Invalid TargetType", *(_WORD *)v13, *(_DWORD *)(v13 + 184)); v25 = a3; break; } sub_578350((void *)v5, a5, v25); LOBYTE(v29) = 0; sub_428A70(&v26); --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13254C88: using guessed type int dword_13254C88; // 13255290: using guessed type int dword_13255290; // 132559E8: using guessed type int dword_132559E8; // 13256140: using guessed type int dword_13256140; // 13256898: using guessed type int dword_13256898; // 13257008: using guessed type int dword_13257008; //----- (005814E0) -------------------------------------------------------- int __userpurge sub_5814E0(int a1, double a2, int a3, int a4, int a5) { unsigned int v5; // ST1C_4@1 int v6; // ebx@1 int v7; // esi@1 void *v8; // eax@1 int v9; // ST04_4@1 int v10; // eax@1 int v11; // eax@1 int v12; // ecx@1 _BYTE *v13; // ecx@1 int v14; // eax@1 int v15; // ST08_4@2 int *v16; // ebx@4 int v17; // eax@8 int v18; // eax@9 int v19; // eax@9 int v20; // ST08_4@11 int v21; // eax@11 _UNKNOWN *v23; // [sp-14h] [bp-88h]@9 int v24; // [sp-10h] [bp-84h]@9 int v25; // [sp-Ch] [bp-80h]@9 int v26; // [sp-8h] [bp-7Ch]@9 int v27; // [sp-4h] [bp-78h]@9 char v28; // [sp+10h] [bp-64h]@1 char v29; // [sp+1Ch] [bp-58h]@9 int v30; // [sp+20h] [bp-54h]@9 int v31; // [sp+24h] [bp-50h]@1 char v32; // [sp+28h] [bp-4Ch]@2 unsigned int v33; // [sp+64h] [bp-10h]@1 int v34; // [sp+70h] [bp-4h]@1 int v35; // [sp+74h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v5 = (unsigned int)&v35 ^ __security_cookie; v6 = a3; v7 = a1; v31 = a3; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Obj)"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Obj)"; dword_750AB8[dword_750CB8++] = -1; v8 = off_849C18; *(_WORD *)off_849C18 = 9282; *((_WORD *)v8 + 1) = **(_WORD **)(a5 + 4); *((_WORD *)v8 + 2) = *(_WORD *)(v7 + 4); *((_WORD *)v8 + 3) = *(_WORD *)(a3 + 4); v34 = 0; sub_4287B0(&v28, &off_849C18, 8); v9 = *(_DWORD *)(v7 + 102); LOBYTE(v34) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v7, v10, v9, 0, 0, (int)&v28, 1, 65535); v11 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v7 + 1388))(v7, v5); v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); *((_DWORD *)v13 + 4) = *(_DWORD *)(v11 + 16); v13[20] = 0; dword_13254C88 = 0; v14 = *(_DWORD *)(a5 + 4); if ( *(_DWORD *)(v14 + 263) == 1 ) { sub_434660((int)&v32); v15 = *(_DWORD *)(v7 + 7652); LOBYTE(v34) = 2; sub_57EDA0(v7, a2, a5, v15, (__int16 *)(v7 + 7684), -1, (int)&v32, 1, 1000); LOBYTE(v34) = 1; nullsub_2(&v32); } else { switch ( *(_DWORD *)(v14 + 188) ) { case 0: v16 = &dword_13257008; goto LABEL_8; case 3: v16 = &dword_132559E8; goto LABEL_8; case 2: case 6: v16 = &dword_13256140; goto LABEL_8; case 5: v16 = &dword_13255290; LABEL_8: v16[460] = v7; v17 = *(_DWORD *)(v7 + 102); v16[461] = *(_DWORD *)v17; v16[462] = *(_DWORD *)(v17 + 4); v16[401] = 0; if ( *(_DWORD *)(a5 + 40) == *(_DWORD *)(a5 + 44) ) { sub_4C0FC0((int)v16); v19 = *(_DWORD *)(v31 + 102); v27 = 65535; v26 = 0; v25 = (int)v16; v24 = 0; v23 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(a5 + 4) + 259) >> 1); } else { v18 = *(_DWORD *)(v7 + 102); LOBYTE(v30) = **(_BYTE **)(v7 + 106); sub_4C0FD0( (int)v16, *(_DWORD *)(a5 + 40), *(_DWORD *)v18, *(_DWORD *)(v18 + 4), *(_DWORD *)v18, *(_DWORD *)(v18 + 4), v30); v27 = 65535; v26 = 1; v25 = (int)v16; v24 = 0; v23 = *(_UNKNOWN **)(*(_DWORD *)(a5 + 40) + 52); v19 = sub_4C10B0((int)v16, (int)&v29); } v20 = v19; v21 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v7, v21, v20, v23, v24, v25, v26, v27); qsort(v16 + 1, v16[401], 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); sub_580A20((int)v16, a2, a5, (__int16 *)(v7 + 7684), *(_DWORD *)(*(_DWORD *)(a5 + 4) + 263), 0); v6 = v31; break; default: sub_639150( &unk_86DDD8, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Invalid TargetType", **(_WORD **)(a5 + 4), *(_DWORD *)(*(_DWORD *)(a5 + 4) + 184)); break; } } sub_578350((void *)v7, a5, *(_DWORD *)(v6 + 102)); LOBYTE(v34) = 0; sub_428A70(&v28); --dword_750CB8; v34 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Obj)"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 13254C88: using guessed type int dword_13254C88; // 13255290: using guessed type int dword_13255290; // 132559E8: using guessed type int dword_132559E8; // 13256140: using guessed type int dword_13256140; // 13257008: using guessed type int dword_13257008; //----- (005817F0) -------------------------------------------------------- int __usercall sub_5817F0(int a1, double a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // eax@3 int v5; // eax@7 int v6; // edi@7 int v7; // eax@11 int v8; // ecx@11 int *v9; // edi@14 int v10; // eax@19 int v11; // eax@19 int v12; // ebx@19 int v13; // eax@20 unsigned __int8 v14; // cl@20 int v15; // eax@20 _UNKNOWN *v16; // ST08_4@20 int v17; // ST04_4@20 int v18; // eax@20 int v19; // eax@21 _UNKNOWN *v20; // ST08_4@22 int v21; // eax@22 int v22; // eax@23 bool v23; // zf@23 int v24; // eax@24 _UNKNOWN *v25; // ST08_4@25 int v26; // ST04_4@25 int v27; // eax@25 int v28; // eax@26 int v29; // eax@26 int v30; // eax@27 int v31; // eax@31 int v32; // eax@34 __int16 *v33; // edx@35 int v34; // eax@37 int v35; // esi@39 void (__thiscall *v36)(_DWORD, _DWORD, _DWORD); // edx@39 int v38; // ecx@46 int (*v39)(void); // eax@46 void *v40; // eax@46 int v41; // ecx@46 void *v42; // eax@46 int v43; // edi@50 int v44; // ST18_4@50 int v45; // ST14_4@50 int v46; // ST0C_4@50 __int16 v47; // ax@50 int v48; // [sp-4h] [bp-54h]@2 int v49; // [sp+10h] [bp-40h]@46 int v50; // [sp+14h] [bp-3Ch]@46 int v51; // [sp+18h] [bp-38h]@46 int v52; // [sp+1Ch] [bp-34h]@46 int v53; // [sp+20h] [bp-30h]@46 int v54; // [sp+24h] [bp-2Ch]@46 int v55; // [sp+28h] [bp-28h]@46 int v56; // [sp+2Ch] [bp-24h]@1 unsigned int v57; // [sp+30h] [bp-20h]@23 void *v58; // [sp+34h] [bp-1Ch]@24 int v59; // [sp+38h] [bp-18h]@46 int v60; // [sp+3Ch] [bp-14h]@20 int v61; // [sp+40h] [bp-10h]@20 int v62; // [sp+4Ch] [bp-4h]@1 v2 = a1; v56 = (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastObject"; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastObject"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastObject"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v62 = 0; if ( *(_DWORD *)(v2 + 16) ) { v4 = *(_DWORD *)(v2 + 44); if ( (v4 == -1 || !v4) && *(_BYTE *)(v2 + 104) == 1 ) { (*(void (__stdcall **)(_DWORD, _DWORD, int))(**(_DWORD **)(v2 + 16) + 3800))( **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), *(_DWORD *)(v2 + 8), v2 + 20); (*(void (__stdcall **)(signed int, _DWORD, _DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 3064))( 1, *(_DWORD *)(v2 + 16), 0, 0); } v5 = *(_DWORD *)(v2 + 8); v6 = *(_DWORD *)(v2 + 40); if ( v5 && *(_DWORD *)v5 && *(_QWORD *)(*(_DWORD *)v5 + 63) > 0ui64 ) (*(void (__stdcall **)(_DWORD, signed int))(**(_DWORD **)(v2 + 28) + 1792))(*(_DWORD *)(v2 + 16), 1); v7 = *(_DWORD *)(v2 + 8); v8 = *(_DWORD *)(v7 + 4); if ( *(_DWORD *)(v8 + 263) != 1 && *(_BYTE *)(v2 + 104) <= 1u ) { switch ( *(_DWORD *)(v8 + 188) ) { case 0: v9 = &dword_13257008; goto LABEL_19; case 1: case 3: v9 = &dword_132559E8; goto LABEL_19; case 2: case 6: v9 = &dword_13256140; goto LABEL_19; case 5: v9 = &dword_13255290; goto LABEL_19; case 7: v9 = &dword_13256898; LABEL_19: v10 = *(_DWORD *)(v2 + 16); v9[460] = v10; v11 = *(_DWORD *)(v10 + 102); v9[461] = *(_DWORD *)v11; v9[462] = *(_DWORD *)(v11 + 4); *((_WORD *)v9 + 938) = *(_WORD *)(v2 + 106); v9[401] = 0; v12 = sub_583330(*(_DWORD *)(v2 + 8), *(_BYTE *)(v2 + 52)); if ( v12 ) { v13 = *(_DWORD *)(v2 + 16); v14 = **(_BYTE **)(v13 + 106); v15 = *(_DWORD *)(v13 + 102); LOBYTE(v61) = v14; sub_4C0FD0( (int)v9, v12, *(_DWORD *)v15, *(_DWORD *)(v15 + 4), *(_DWORD *)(v2 + 32), *(_DWORD *)(v2 + 36), v14); v16 = *(_UNKNOWN **)(v12 + 52); v17 = sub_4C10B0((int)v9, (int)&v60); v18 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(v2 + 16), v18, v17, v16, 0, (int)v9, 1, 65535); } else { sub_4C0FC0((int)v9); v19 = *(_DWORD *)(*(_DWORD *)(v2 + 8) + 4); if ( *(_WORD *)(v19 + 197) == 360 ) { v20 = (_UNKNOWN *)(*(_DWORD *)(v19 + 259) >> 1); v21 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(v2 + 16), v21, v2 + 32, v20, 0, (int)v9, 1, 65535); } else { sub_579AC0(&v57, *(_DWORD *)(v2 + 16), *(_DWORD *)(v2 + 28)); v22 = *(_DWORD *)(v2 + 8); v57 = (unsigned int)*(_WORD *)(*(_DWORD *)(v22 + 4) + 197) >> 1; v23 = *(_WORD *)(*(_DWORD *)(v22 + 4) + 195) == 0; LOBYTE(v62) = 2; if ( !v23 ) { v24 = sub_576EB0(*(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 195)); sub_576F80((int)&v58, v24); } v25 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 259) >> 1); v26 = *(_DWORD *)(*(_DWORD *)(v2 + 28) + 102); v27 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(v2 + 16), v27, v26, v25, (int)&v57, (int)v9, 1, 65535); LOBYTE(v62) = 0; } } qsort(v9 + 1, v9[401], 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); v28 = *(_DWORD *)(*(_DWORD *)(v2 + 28) + 102); v9[461] = *(_DWORD *)v28; v9[462] = *(_DWORD *)(v28 + 4); v29 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v29 + 544) == 1 ) { v30 = *(_DWORD *)(v29 + 548); if ( v30 == 1 || v30 == 2 ) sub_580DC0( (int)v9, a2, *(_DWORD *)(v2 + 8), (__int16 *)(v2 + 20), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 263), v2 + 44); } else { sub_580A20( (int)v9, a2, *(_DWORD *)(v2 + 8), (__int16 *)(v2 + 20), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 263), v2 + 44); } v3 = 0; goto LABEL_31; default: sub_639150( &unk_86DDD8, (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastObject : Invalid TargetType", **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 184)); v62 = -1; break; } goto LABEL_41; } sub_57EDA0( *(_DWORD *)(v2 + 16), a2, v7, *(_DWORD *)(v2 + 28), (__int16 *)(v2 + 20), v6, v2 + 44, *(_BYTE *)(v2 + 104), 1000); if ( (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 1488))() ) { v51 = 10; v52 = 0; v58 = 0; v59 = 0; v60 = 0; v38 = *(_DWORD *)(v2 + 16); v55 = *(_DWORD *)(v2 + 28); v49 = 0; v53 = v38; v54 = v38; v50 = 1; v39 = *(int (**)(void))(*(_DWORD *)v38 + 1488); LOBYTE(v62) = 1; v40 = (void *)v39(); sub_5CF1E0(v40, (int)&v58, (int)&v49); v41 = *(_DWORD *)(v2 + 16); v50 = 3 - (*(_DWORD *)(**(_DWORD **)(v2 + 8) + 58) != 0); v42 = (void *)(*(int (**)(void))(*(_DWORD *)v41 + 1488))(); sub_5CF1E0(v42, (int)&v58, (int)&v49); LOBYTE(v62) = 0; if ( v58 ) operator delete(v58); } if ( *(_BYTE *)(*(_DWORD *)(v2 + 8) + 464) == 1 && *(_DWORD *)(v2 + 16) ) { v43 = **(_DWORD **)(v2 + 16); v44 = *(_BYTE *)(v2 + 104) + 1; v45 = *(_WORD *)(v2 + 106); v46 = *(_DWORD *)(v2 + 28); v47 = sub_434770((int)&dword_87B264); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, int, _DWORD, int, int))(v43 + 3060))( *(_DWORD *)(v2 + 16), *(_DWORD *)(v2 + 8), (unsigned __int16)v47, v46, 0, v45, v44); } LABEL_31: v31 = *(_DWORD *)(v2 + 44); if ( v31 == -1 || v31 == v3 ) { if ( *(_DWORD *)(v2 + 28) == v3 || (v32 = *(_DWORD *)(v2 + 8), v32 == v3) || (v33 = *(__int16 **)(v32 + 4), v33 == (__int16 *)v3) ) { LABEL_40: v62 = -1; LABEL_41: v48 = (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastObject"; goto LABEL_42; } sub_4A2E10(*(_DWORD *)(v2 + 16), *(_DWORD *)(v2 + 28), *v33, *(_DWORD *)(*(_DWORD *)(v2 + 28) + 102)); sub_4A68D0( &unk_D73D278, *(_DWORD *)(v2 + 16), *(_DWORD *)(v2 + 28), **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), *(_DWORD *)(*(_DWORD *)(v2 + 28) + 102), v3); } v34 = *(_DWORD *)(v2 + 16); if ( *(_DWORD *)(v34 + 126) != v3 && sub_4313C0(v34 + 298, (int)byte_6A492E) ) { sub_5D4E20((int)&v57, *(_DWORD *)(*(_DWORD *)(v2 + 16) + 122), *(_DWORD *)(v2 + 16)); v35 = *(_DWORD *)(v2 + 16); v36 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v35 + 2920); LOBYTE(v62) = 3; v36(v35, 172, &v57); LOBYTE(v62) = 0; sub_5D4580(&v57); } goto LABEL_40; } sub_639100(&unk_86DDD8, (int)" SkillEffectApply::SkillBlastEffect::sbe_BlastObject : Caster Null Ptr", 0); v62 = -1; v48 = (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastObject"; LABEL_42: --dword_750CB8; return sub_467660((int)&unk_D020420, v48); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13255290: using guessed type int dword_13255290; // 132559E8: using guessed type int dword_132559E8; // 13256140: using guessed type int dword_13256140; // 13256898: using guessed type int dword_13256898; // 13257008: using guessed type int dword_13257008; //----- (00581D90) -------------------------------------------------------- int __usercall sub_581D90(int a1, double a2) { int v2; // esi@1 signed int v3; // ebx@1 int v4; // eax@1 int *v5; // edi@5 int v6; // eax@10 int v7; // eax@10 int v8; // eax@10 int v9; // ecx@11 unsigned __int8 v10; // dl@11 int v11; // ecx@11 int v12; // eax@13 int v13; // eax@13 int v14; // eax@14 int v15; // eax@18 int v16; // edi@19 int v17; // eax@19 int v18; // eax@21 bool v19; // zf@21 void (__stdcall *v20)(_DWORD, _DWORD); // eax@24 int v22; // [sp-18h] [bp-58h]@11 _UNKNOWN *v23; // [sp-14h] [bp-54h]@11 int v24; // [sp-10h] [bp-50h]@11 int v25; // [sp-Ch] [bp-4Ch]@11 int v26; // [sp-8h] [bp-48h]@11 int v27; // [sp-4h] [bp-44h]@11 char v28; // [sp+10h] [bp-30h]@24 int v29; // [sp+24h] [bp-1Ch]@1 char v30; // [sp+28h] [bp-18h]@11 int v31; // [sp+2Ch] [bp-14h]@10 int v32; // [sp+30h] [bp-10h]@11 int v33; // [sp+3Ch] [bp-4h]@1 v2 = a1; v29 = (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastLocate"; sub_4675D0((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastLocate"); dword_7508B8[dword_750CB8] = (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastLocate"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; dword_13254C88 = 0; v4 = *(_DWORD *)(v2 + 44); v33 = 0; if ( v4 == -1 || !v4 ) { (*(void (__stdcall **)(_DWORD, _DWORD, int))(**(_DWORD **)(v2 + 16) + 3800))( **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), *(_DWORD *)(v2 + 8), v2 + 20); (*(void (__stdcall **)(signed int, _DWORD, _DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 3064))( 1, *(_DWORD *)(v2 + 16), 0, 0); v3 = -1; } switch ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 188) ) { case 0: v5 = &dword_13257008; goto LABEL_10; case 3: v5 = &dword_132559E8; goto LABEL_10; case 2: case 6: v5 = &dword_13256140; goto LABEL_10; case 5: v5 = &dword_13255290; goto LABEL_10; case 7: v5 = &dword_13256898; LABEL_10: v6 = *(_DWORD *)(v2 + 16); v5[460] = v6; v7 = *(_DWORD *)(v6 + 102); v5[461] = *(_DWORD *)v7; v5[462] = *(_DWORD *)(v7 + 4); v5[461] = *(_DWORD *)(v2 + 32); v5[462] = *(_DWORD *)(v2 + 36); *((_WORD *)v5 + 938) = *(_WORD *)(v2 + 106); v5[401] = 0; v8 = sub_583330(*(_DWORD *)(v2 + 8), *(_BYTE *)(v2 + 52)); v31 = v8; if ( v8 ) { v9 = *(_DWORD *)(v2 + 16); v10 = **(_BYTE **)(v9 + 106); v11 = *(_DWORD *)(v9 + 102); LOBYTE(v32) = v10; sub_4C0FD0((int)v5, v8, *(_DWORD *)v11, *(_DWORD *)(v11 + 4), *(_DWORD *)(v2 + 32), *(_DWORD *)(v2 + 36), v10); v27 = 65535; v26 = 1; v25 = (int)v5; v24 = 0; v23 = *(_UNKNOWN **)(v31 + 52); v22 = sub_4C10B0((int)v5, (int)&v30); } else { sub_4C0FC0((int)v5); v27 = 65535; v26 = 1; v25 = (int)v5; v24 = 0; v23 = (_UNKNOWN *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 259) >> 1); v22 = v2 + 32; } v12 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(v2 + 16), v12, v22, v23, v24, v25, v26, v27); qsort(v5 + 1, v5[401], 8u, (int (__cdecl *)(const void *, const void *))sub_4C0DF0); v13 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v13 + 544) == 1 ) { v14 = *(_DWORD *)(v13 + 548); if ( v14 == 1 || v14 == 2 ) sub_580DC0( (int)v5, a2, *(_DWORD *)(v2 + 8), (__int16 *)(v2 + 20), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 263), v2 + 44); } else { sub_580A20((int)v5, a2, v13, (__int16 *)(v2 + 20), *(_DWORD *)(*(_DWORD *)(v13 + 4) + 263), v2 + 44); } sub_578350(*(void **)(v2 + 16), *(_DWORD *)(v2 + 8), v2 + 32); sub_4A2E10(*(_DWORD *)(v2 + 16), 0, **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), v2 + 32); sub_4A68D0(&unk_D73D278, *(_DWORD *)(v2 + 16), 0, **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), v2 + 32, 0); v15 = *(_DWORD *)(v2 + 16); if ( *(_DWORD *)(v15 + 126) ) { v16 = *(_DWORD *)(v15 + 314); v17 = v15 + 298; if ( *(_DWORD *)(v17 + 20) >= 0x10u ) v17 = *(_DWORD *)v17; v18 = sub_4189B0(v17, (int)byte_6A492E, 0); v19 = v18 == 0; if ( !v18 ) v19 = v16 == 0; if ( !v19 ) { sub_5D4E20((int)&v28, *(_DWORD *)(*(_DWORD *)(v2 + 16) + 122), *(_DWORD *)(v2 + 16)); v20 = *(void (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 16) + 2920); LOBYTE(v33) = 1; v20(172, &v28); LOBYTE(v33) = 0; sub_5D4580(&v28); } } v33 = -1; goto LABEL_28; default: sub_639150( &unk_86DDD8, (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastLocate : Invalid TargetType", **(_WORD **)(*(_DWORD *)(v2 + 8) + 4), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 8) + 4) + 184)); break; case 0x12: break; } v33 = v3; LABEL_28: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SkillEffectApply::SkillBlastEffect::sbe_BlastLocate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13254C88: using guessed type int dword_13254C88; // 13255290: using guessed type int dword_13255290; // 132559E8: using guessed type int dword_132559E8; // 13256140: using guessed type int dword_13256140; // 13256898: using guessed type int dword_13256898; // 13257008: using guessed type int dword_13257008; //----- (00582110) -------------------------------------------------------- int __cdecl sub_582110(int a1, int a2) { return **(_WORD **)(a1 + 4) - **(_WORD **)(a2 + 4); } //----- (00582130) -------------------------------------------------------- int __thiscall sub_582130(int this) { int result; // eax@1 int v2; // [sp+0h] [bp-8h]@0 result = 0; LOBYTE(v2) = 0; *(_DWORD *)(this + 608) = v2; *(_DWORD *)(this + 612) = 0; *(_DWORD *)(this + 600) = v2; *(_DWORD *)(this + 604) = 0; *(_DWORD *)(this + 592) = v2; *(_DWORD *)(this + 596) = 0; *(_DWORD *)(this + 584) = v2; *(_DWORD *)(this + 588) = 0; *(_DWORD *)(this + 576) = v2; *(_DWORD *)(this + 580) = 0; *(_DWORD *)(this + 568) = v2; *(_DWORD *)(this + 572) = 0; *(_DWORD *)(this + 560) = v2; *(_DWORD *)(this + 564) = 0; *(_DWORD *)(this + 552) = v2; *(_DWORD *)(this + 556) = 0; *(_DWORD *)(this + 544) = v2; *(_DWORD *)(this + 548) = 0; *(_DWORD *)(this + 536) = v2; *(_DWORD *)(this + 540) = 0; *(_DWORD *)(this + 528) = v2; *(_DWORD *)(this + 532) = 0; *(_DWORD *)(this + 520) = v2; *(_DWORD *)(this + 524) = 0; *(_DWORD *)(this + 512) = v2; *(_DWORD *)(this + 516) = 0; *(_DWORD *)(this + 504) = v2; *(_DWORD *)(this + 508) = 0; *(_DWORD *)(this + 496) = v2; *(_DWORD *)(this + 500) = 0; *(_DWORD *)(this + 488) = v2; *(_DWORD *)(this + 492) = 0; *(_DWORD *)(this + 480) = v2; *(_DWORD *)(this + 484) = 0; *(_DWORD *)(this + 472) = v2; *(_DWORD *)(this + 476) = 0; *(_DWORD *)(this + 464) = v2; *(_DWORD *)(this + 468) = 0; *(_DWORD *)(this + 456) = v2; *(_DWORD *)(this + 460) = 0; *(_DWORD *)(this + 448) = v2; *(_DWORD *)(this + 452) = 0; *(_DWORD *)(this + 440) = v2; *(_DWORD *)(this + 444) = 0; *(_DWORD *)(this + 432) = v2; *(_DWORD *)(this + 436) = 0; *(_DWORD *)(this + 424) = v2; *(_DWORD *)(this + 428) = 0; *(_DWORD *)(this + 416) = v2; *(_DWORD *)(this + 420) = 0; *(_DWORD *)(this + 408) = v2; *(_DWORD *)(this + 412) = 0; *(_DWORD *)(this + 400) = v2; *(_DWORD *)(this + 404) = 0; *(_DWORD *)(this + 392) = v2; *(_DWORD *)(this + 396) = 0; *(_DWORD *)(this + 384) = v2; *(_DWORD *)(this + 388) = 0; *(_DWORD *)(this + 376) = v2; *(_DWORD *)(this + 380) = 0; *(_DWORD *)(this + 368) = v2; *(_DWORD *)(this + 372) = 0; *(_DWORD *)(this + 352) = v2; *(_DWORD *)(this + 356) = 0; *(_DWORD *)(this + 344) = v2; *(_DWORD *)(this + 348) = 0; *(_DWORD *)(this + 336) = v2; *(_DWORD *)(this + 340) = 0; *(_DWORD *)(this + 328) = v2; *(_DWORD *)(this + 332) = 0; *(_DWORD *)(this + 320) = v2; *(_DWORD *)(this + 324) = 0; *(_DWORD *)(this + 312) = v2; *(_DWORD *)(this + 316) = 0; *(_DWORD *)(this + 304) = v2; *(_DWORD *)(this + 308) = 0; *(_DWORD *)(this + 296) = v2; *(_DWORD *)(this + 300) = 0; *(_DWORD *)(this + 288) = v2; *(_DWORD *)(this + 292) = 0; *(_DWORD *)(this + 280) = v2; *(_DWORD *)(this + 284) = 0; *(_DWORD *)(this + 272) = v2; *(_DWORD *)(this + 276) = 0; *(_DWORD *)(this + 264) = v2; *(_DWORD *)(this + 268) = 0; *(_DWORD *)(this + 256) = v2; *(_DWORD *)(this + 260) = 0; *(_DWORD *)(this + 248) = v2; *(_DWORD *)(this + 252) = 0; *(_DWORD *)(this + 240) = v2; *(_DWORD *)(this + 244) = 0; *(_DWORD *)(this + 184) = v2; *(_DWORD *)(this + 188) = 0; *(_DWORD *)(this + 360) = v2; *(_DWORD *)(this + 364) = 0; *(_DWORD *)(this + 232) = v2; *(_DWORD *)(this + 236) = 0; *(_DWORD *)(this + 224) = v2; *(_DWORD *)(this + 228) = 0; *(_DWORD *)(this + 216) = v2; *(_DWORD *)(this + 220) = 0; *(_DWORD *)(this + 208) = v2; *(_DWORD *)(this + 212) = 0; *(_DWORD *)(this + 200) = v2; *(_DWORD *)(this + 204) = 0; *(_DWORD *)(this + 192) = v2; *(_DWORD *)(this + 196) = 0; *(_DWORD *)(this + 176) = v2; *(_DWORD *)(this + 180) = 0; *(_DWORD *)(this + 168) = v2; *(_DWORD *)(this + 172) = 0; *(_DWORD *)(this + 160) = v2; *(_DWORD *)(this + 164) = 0; *(_DWORD *)(this + 152) = v2; *(_DWORD *)(this + 156) = 0; *(_DWORD *)(this + 144) = v2; *(_DWORD *)(this + 148) = 0; *(_DWORD *)(this + 136) = v2; *(_DWORD *)(this + 140) = 0; *(_DWORD *)(this + 128) = v2; *(_DWORD *)(this + 132) = 0; *(_DWORD *)(this + 120) = v2; *(_DWORD *)(this + 124) = 0; return result; } //----- (00582430) -------------------------------------------------------- int __thiscall sub_582430(int this, int a2, int a3) { int result; // eax@1 int v4; // esi@1 result = a2 - 1; v4 = this; switch ( a2 ) { case 1: result = a3; *(_BYTE *)(this + 120) = 1; *(_DWORD *)(this + 124) = a3; break; case 2: *(_BYTE *)(this + 128) = 1; *(_DWORD *)(this + 132) = a3; break; case 3: *(_BYTE *)(this + 136) = 1; *(_DWORD *)(this + 140) = a3; break; case 4: result = a3; *(_BYTE *)(this + 144) = 1; *(_DWORD *)(this + 148) = a3; break; case 5: *(_BYTE *)(this + 152) = 1; *(_DWORD *)(this + 156) = a3; break; case 6: *(_BYTE *)(this + 160) = 1; *(_DWORD *)(this + 164) = a3; break; case 7: result = a3; *(_BYTE *)(this + 168) = 1; *(_DWORD *)(this + 172) = a3; break; case 8: *(_BYTE *)(this + 176) = 1; *(_DWORD *)(this + 180) = a3; break; case 9: *(_BYTE *)(this + 184) = 1; *(_DWORD *)(this + 188) = a3; break; case 26: result = a3; *(_BYTE *)(this + 192) = 1; *(_DWORD *)(this + 196) = a3; break; case 24: *(_BYTE *)(this + 200) = 1; *(_DWORD *)(this + 204) = a3; break; case 28: *(_BYTE *)(this + 208) = 1; *(_DWORD *)(this + 212) = a3; break; case 38: result = a3; *(_BYTE *)(this + 360) = 1; *(_DWORD *)(this + 364) = a3; *(_DWORD *)(this + 220) = a3; break; case 25: case 36: result = a3; *(_BYTE *)(this + 216) = 1; *(_DWORD *)(this + 220) = a3; break; case 27: *(_BYTE *)(this + 224) = 1; *(_DWORD *)(this + 228) = a3; break; case 34: *(_BYTE *)(this + 232) = 1; *(_DWORD *)(this + 236) = a3; break; case 10: result = a3; *(_BYTE *)(this + 240) = 1; *(_DWORD *)(this + 244) = a3; break; case 11: *(_BYTE *)(this + 248) = 1; *(_DWORD *)(this + 252) = a3; break; case 12: *(_BYTE *)(this + 256) = 1; *(_DWORD *)(this + 260) = a3; break; case 13: result = a3; *(_BYTE *)(this + 264) = 1; *(_DWORD *)(this + 268) = a3; break; case 14: *(_BYTE *)(this + 272) = 1; *(_DWORD *)(this + 276) = a3; break; case 15: *(_BYTE *)(this + 280) = 1; *(_DWORD *)(this + 284) = a3; break; case 16: result = a3; *(_BYTE *)(this + 288) = 1; *(_DWORD *)(this + 292) = a3; break; case 17: *(_BYTE *)(this + 296) = 1; *(_DWORD *)(this + 300) = a3; break; case 18: *(_BYTE *)(this + 304) = 1; *(_DWORD *)(this + 308) = a3; break; case 19: result = a3; *(_BYTE *)(this + 312) = 1; *(_DWORD *)(this + 316) = a3; break; case 20: *(_BYTE *)(this + 320) = 1; *(_DWORD *)(this + 324) = a3; break; case 21: *(_BYTE *)(this + 328) = 1; *(_DWORD *)(this + 332) = a3; break; case 22: result = a3; *(_BYTE *)(this + 336) = 1; *(_DWORD *)(this + 340) = a3; break; case 23: *(_BYTE *)(this + 344) = 1; *(_DWORD *)(this + 348) = a3; break; case 35: *(_BYTE *)(this + 352) = 1; *(_DWORD *)(this + 356) = a3; break; case 45: result = a3; *(_BYTE *)(this + 376) = 1; *(_DWORD *)(this + 380) = a3; break; case 43: *(_BYTE *)(this + 368) = 1; *(_DWORD *)(this + 372) = a3; break; case 41: *(_BYTE *)(this + 384) = 1; *(_DWORD *)(this + 388) = a3; break; case 40: result = a3; *(_BYTE *)(this + 392) = 1; *(_DWORD *)(this + 396) = a3; break; case 42: *(_BYTE *)(this + 400) = 1; *(_DWORD *)(this + 404) = a3; break; case 44: *(_BYTE *)(this + 408) = 1; *(_DWORD *)(this + 412) = a3; break; case 46: result = a3; *(_BYTE *)(this + 416) = 1; *(_DWORD *)(this + 420) = a3; break; case 47: *(_BYTE *)(this + 424) = 1; *(_DWORD *)(this + 428) = a3; break; case 48: *(_BYTE *)(this + 432) = 1; *(_DWORD *)(this + 436) = a3; break; case 49: result = a3; *(_BYTE *)(this + 440) = 1; *(_DWORD *)(this + 444) = a3; break; case 50: *(_BYTE *)(this + 448) = 1; *(_DWORD *)(this + 452) = a3; break; case 51: *(_BYTE *)(this + 456) = 1; *(_DWORD *)(this + 460) = a3; result = sub_4012D0((int)&unk_877138, a3); if ( !result ) { sub_639100( &unk_86DDD8, (int)"SkillDataIndex::sdi_SetArgument : SS_SETABSTATEFRIEND invalid abstate", *(_DWORD *)(v4 + 460)); result = loc_6391B0("SkillDataIndex::sdi_SetArgument"); } break; case 52: *(_BYTE *)(this + 464) = 1; *(_DWORD *)(this + 468) = a3; break; case 53: result = a3; *(_BYTE *)(this + 472) = 1; *(_DWORD *)(this + 476) = a3; break; case 54: *(_BYTE *)(this + 480) = 1; *(_DWORD *)(this + 484) = a3; break; case 55: *(_BYTE *)(this + 488) = 1; *(_DWORD *)(this + 492) = a3; break; case 56: result = a3; *(_BYTE *)(this + 496) = 1; *(_DWORD *)(this + 500) = a3; break; case 57: *(_BYTE *)(this + 504) = 1; *(_DWORD *)(this + 508) = a3; break; case 58: *(_BYTE *)(this + 512) = 1; *(_DWORD *)(this + 516) = a3; break; case 59: *(_BYTE *)(this + 520) = 1; *(_DWORD *)(this + 524) = a3; result = sub_4012D0((int)&unk_877138, a3); if ( !result ) { sub_639100( &unk_86DDD8, (int)"SkillDataIndex::sdi_SetArgument : sdi_SETABSTATEME invalid abstate", *(_DWORD *)(v4 + 524)); result = loc_6391B0("SkillDataIndex::sdi_SetArgument"); } break; case 60: result = a3; *(_BYTE *)(this + 528) = 1; *(_DWORD *)(this + 532) = a3; break; case 61: *(_BYTE *)(this + 536) = 1; *(_DWORD *)(this + 540) = a3; break; case 63: *(_BYTE *)(this + 544) = 1; *(_DWORD *)(this + 548) = a3; break; case 62: result = a3; *(_BYTE *)(this + 552) = 1; *(_DWORD *)(this + 556) = a3; break; case 64: *(_BYTE *)(this + 560) = 1; *(_DWORD *)(this + 564) = a3; break; case 66: *(_BYTE *)(this + 568) = 1; *(_DWORD *)(this + 572) = a3; break; case 65: *(_BYTE *)(this + 576) = 1; *(_DWORD *)(this + 580) = a3; result = sub_4012D0((int)&unk_877138, a3); if ( !result ) { sub_639100( &unk_86DDD8, (int)"SkillDataIndex::sdi_SetArgument : SS_DISPELABSTATE invalid abstate", *(_DWORD *)(v4 + 580)); result = loc_6391B0("SkillDataIndex::sdi_SetArgument"); } break; case 70: result = a3; *(_BYTE *)(this + 584) = 1; *(_DWORD *)(this + 588) = a3; break; case 71: *(_BYTE *)(this + 592) = 1; *(_DWORD *)(this + 596) = a3; break; case 72: *(_BYTE *)(this + 600) = 1; *(_DWORD *)(this + 604) = a3; break; case 73: result = a3; *(_BYTE *)(this + 608) = 1; *(_DWORD *)(this + 612) = a3; break; default: return result; } return result; } //----- (00582B30) -------------------------------------------------------- bool __thiscall sub_582B30(int this, int a2) { ++*(_DWORD *)a2; return *(_DWORD *)a2 < *(_DWORD *)(this + 328); } //----- (00582B50) -------------------------------------------------------- int __thiscall sub_582B50(int this, __int16 a2) { int v2; // esi@1 int result; // eax@1 int v4; // edx@2 int v5; // ecx@3 v2 = *(_DWORD *)(this + 480); result = 0; if ( v2 ) { v4 = *(_DWORD *)(this + 476); if ( v4 <= 0 ) { LABEL_6: result = 0; } else { v5 = *(_DWORD *)(this + 480); while ( *(_WORD *)v5 != a2 ) { ++result; v5 += 16; if ( result >= v4 ) goto LABEL_6; } result = v2 + 16 * result; } } return result; } //----- (00582BA0) -------------------------------------------------------- void *__thiscall sub_582BA0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1040, 78) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1040, 1040, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00582C60) -------------------------------------------------------- void *__thiscall sub_582C60(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 86355, 671) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 86355, 86355, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00582D20) -------------------------------------------------------- void *__thiscall sub_582D20(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 152, 70) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 152, 152, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00582DE0) -------------------------------------------------------- void *__thiscall sub_582DE0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 29, 38) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 29, 29, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00582E90) -------------------------------------------------------- void *__thiscall sub_582E90(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 8436, 254) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 8436, 8436, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00582F40) -------------------------------------------------------- void *__thiscall sub_582F40(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 169, 71) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 169, 169, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00582FF0) -------------------------------------------------------- void *__thiscall sub_582FF0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED2EC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED2EC: using guessed type int (__thiscall *off_6ED2EC)(void *, char); //----- (00583020) -------------------------------------------------------- void *__thiscall sub_583020(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED2F4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED2F4: using guessed type int (__thiscall *off_6ED2F4)(void *, char); //----- (00583050) -------------------------------------------------------- void *__thiscall sub_583050(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED2FC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED2FC: using guessed type int (__thiscall *off_6ED2FC)(void *, char); //----- (00583080) -------------------------------------------------------- void *__thiscall sub_583080(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED304; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED304: using guessed type int (__thiscall *off_6ED304)(void *, char); //----- (005830B0) -------------------------------------------------------- void *__thiscall sub_5830B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED30C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED30C: using guessed type int (__thiscall *off_6ED30C)(void *, char); //----- (005830E0) -------------------------------------------------------- void *__thiscall sub_5830E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED314; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED314: using guessed type int (__thiscall *off_6ED314)(void *, char); //----- (00583120) -------------------------------------------------------- int __thiscall sub_583120(int this) { int v1; // edi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_6ED2EC; memset((void *)(v1 + 64), 0, 0x29Fu); sub_639920(v1 + 736); memset((void *)(v1 + 800), 0, 0x4Eu); *(_DWORD *)(v1 + 736) = &off_6ED31C; sub_639920(v1 + 880); *(_DWORD *)(v1 + 880) = &off_6ED2F4; memset((void *)(v1 + 944), 0, 0x46u); sub_639920(v1 + 1016); *(_DWORD *)(v1 + 1016) = &off_6ED2FC; *(_DWORD *)(v1 + 1080) = 0; *(_DWORD *)(v1 + 1084) = 0; *(_DWORD *)(v1 + 1088) = 0; *(_DWORD *)(v1 + 1092) = 0; *(_DWORD *)(v1 + 1096) = 0; *(_DWORD *)(v1 + 1100) = 0; *(_DWORD *)(v1 + 1104) = 0; *(_DWORD *)(v1 + 1108) = 0; *(_DWORD *)(v1 + 1112) = 0; sub_639920(v1 + 1116); *(_DWORD *)(v1 + 1116) = &off_6ED304; *(_DWORD *)(v1 + 1180) = 0; *(_DWORD *)(v1 + 1184) = 0; *(_DWORD *)(v1 + 1188) = 0; *(_DWORD *)(v1 + 1192) = 0; *(_DWORD *)(v1 + 1196) = 0; *(_DWORD *)(v1 + 1200) = 0; *(_DWORD *)(v1 + 1204) = 0; *(_DWORD *)(v1 + 1208) = 0; *(_DWORD *)(v1 + 1212) = 0; *(_WORD *)(v1 + 1216) = 0; return v1; } // 6ED2EC: using guessed type int (__thiscall *off_6ED2EC)(void *, char); // 6ED2F4: using guessed type int (__thiscall *off_6ED2F4)(void *, char); // 6ED2FC: using guessed type int (__thiscall *off_6ED2FC)(void *, char); // 6ED304: using guessed type int (__thiscall *off_6ED304)(void *, char); // 6ED31C: using guessed type int (__thiscall *off_6ED31C)(void *, char); //----- (00583280) -------------------------------------------------------- void __thiscall sub_583280(void *this) { int v1; // esi@1 int v2; // ecx@1 v1 = (int)this; v2 = (int)((char *)this + 1116); *(_DWORD *)v2 = &off_6ED304; sub_639940(v2); *(_DWORD *)(v1 + 1016) = &off_6ED2FC; sub_639940(v1 + 1016); *(_DWORD *)(v1 + 880) = &off_6ED2F4; sub_639940(v1 + 880); *(_DWORD *)(v1 + 736) = &off_6ED2E4; sub_639940(v1 + 736); *(_DWORD *)v1 = &off_6ED2EC; sub_639940(v1); } // 6ED2E4: using guessed type int (__thiscall *off_6ED2E4)(void *, char); // 6ED2EC: using guessed type int (__thiscall *off_6ED2EC)(void *, char); // 6ED2F4: using guessed type int (__thiscall *off_6ED2F4)(void *, char); // 6ED2FC: using guessed type int (__thiscall *off_6ED2FC)(void *, char); // 6ED304: using guessed type int (__thiscall *off_6ED304)(void *, char); //----- (00583330) -------------------------------------------------------- int __stdcall sub_583330(int a1, char a2) { int result; // eax@2 int v3; // eax@3 int v4; // ecx@3 int v5; // edi@4 if ( a1 ) { v3 = (*(_DWORD *)(a1 + 44) - *(_DWORD *)(a1 + 40)) / 68; v4 = 0; if ( v3 <= 0 ) { LABEL_7: result = 0; } else { v5 = *(_DWORD *)(a1 + 40); while ( *(_BYTE *)v5 != a2 ) { ++v4; v5 += 68; if ( v4 >= v3 ) goto LABEL_7; } result = *(_DWORD *)(a1 + 40) + 68 * v4; } } else { result = 0; } return result; } //----- (00583390) -------------------------------------------------------- void *__thiscall sub_583390(void *this) { void *v1; // esi@1 char *v2; // edi@1 v1 = this; v2 = (char *)this + 4; sub_639920((int)((char *)this + 4)); *(_DWORD *)v2 = &off_6ED30C; memset(v2 + 64, 0, 0xFEu); sub_639920((int)((char *)v1 + 340)); *((_DWORD *)v1 + 85) = &off_6ED314; memset((char *)v1 + 404, 0, 0x47u); *(_DWORD *)v1 = (char *)v1 + 68; *((_WORD *)v1 + 34) = -1; *(_DWORD *)((char *)v1 + 174) = 1000; *(_DWORD *)((char *)v1 + 178) = 1000; *(_DWORD *)((char *)v1 + 182) = 1000; *(_DWORD *)((char *)v1 + 186) = 1000; *(_DWORD *)((char *)v1 + 190) = 1000; *(_DWORD *)((char *)v1 + 194) = 1000; *(_DWORD *)((char *)v1 + 198) = 1000; *(_DWORD *)((char *)v1 + 202) = 1000; *(_DWORD *)((char *)v1 + 206) = 1000; *((_DWORD *)v1 + 81) = 0; *((_BYTE *)v1 + 102) = 0; *((_BYTE *)v1 + 70) = 0; *(_DWORD *)((char *)v1 + 222) = 0; *(_DWORD *)((char *)v1 + 226) = 0; *(_DWORD *)((char *)v1 + 230) = 0; *(_DWORD *)((char *)v1 + 234) = 0; *(_DWORD *)((char *)v1 + 238) = 0; *(_DWORD *)((char *)v1 + 242) = 0; *(_DWORD *)((char *)v1 + 246) = 0; *(_DWORD *)((char *)v1 + 250) = 0; *(_DWORD *)((char *)v1 + 254) = 0; *(_DWORD *)((char *)v1 + 266) = 0; *(_DWORD *)((char *)v1 + 270) = 0; *(_DWORD *)((char *)v1 + 282) = 0; *(_DWORD *)((char *)v1 + 286) = 0; *((_DWORD *)v1 + 119) = 0; *((_DWORD *)v1 + 120) = 0; return v1; } // 6ED30C: using guessed type int (__thiscall *off_6ED30C)(void *, char); // 6ED314: using guessed type int (__thiscall *off_6ED314)(void *, char); //----- (005834D0) -------------------------------------------------------- unsigned int __thiscall sub_5834D0(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 unsigned int v4; // ebx@1 int v5; // eax@3 int v6; // eax@7 int v7; // eax@11 int i; // eax@13 unsigned int v9; // ebx@15 int v10; // eax@17 int v11; // edi@19 int v12; // eax@22 signed int v13; // edi@25 int v14; // edx@27 unsigned int v15; // eax@27 int v16; // eax@27 unsigned int result; // eax@29 int v18; // ebx@32 signed int v19; // edi@34 int v20; // ecx@37 int v21; // ebx@38 int v22; // eax@39 int v23; // edi@41 signed int v24; // edx@42 int v25; // edi@44 int v26; // eax@45 int v27; // ecx@46 int v28; // eax@50 __int16 v29; // [sp+Ch] [bp-Ch]@42 int v30; // [sp+10h] [bp-8h]@30 unsigned int v31; // [sp+14h] [bp-4h]@29 v2 = this; sub_582E90((void *)(this + 4), "../9Data/Shine/PassiveSkill.shn"); sub_582F40((void *)(v2 + 340), "../9Data/Shine/PSkillSetAbstate.shn"); v3 = *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40); v4 = 0; *(_DWORD *)(v2 + 328) = v3; *(_DWORD *)(v2 + 332) = 0; if ( v3 > 0 ) { do { if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v5 = sub_626BC0(v2 + 4, v4); else v5 = v2 + 68; if ( *(_DWORD *)(v2 + 332) < (signed int)*(_WORD *)v5 ) { if ( v4 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v6 = sub_626BC0(v2 + 4, v4); else v6 = v2 + 68; *(_DWORD *)(v2 + 332) = *(_WORD *)v6; } ++v4; } while ( (signed int)v4 < *(_DWORD *)(v2 + 328) ); } ++*(_DWORD *)(v2 + 332); v7 = unknown_libname_130(4 * *(_DWORD *)(v2 + 332) | -((unsigned __int64)*(_DWORD *)(v2 + 332) >> 30 != 0)); *(_DWORD *)(v2 + 324) = v7; if ( v7 == 0 ) { sub_639100(&unk_86DDD8, (int)"PassiveDataBox::pdb_Load : Fail to alloc memory", v7 != 0); loc_6391B0("PassiveDataBox::pdb_Load"); } for ( i = 0; i < *(_DWORD *)(v2 + 332); ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * i) = v2 + 68; v9 = 0; if ( *(_DWORD *)(v2 + 328) > 0 ) { do { if ( v9 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v10 = sub_626BC0(v2 + 4, v9); else v10 = v2 + 68; v11 = *(_WORD *)v10; if ( *(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * v11) != v2 + 68 ) { sub_639100(&unk_86DDD8, (int)"PassiveDataBox::pdb_Load : Dublicate id", v11); loc_6391B0("PassiveDataBox::pdb_Load"); } if ( v9 < *(_DWORD *)(*(_DWORD *)(v2 + 56) + 40) ) v12 = sub_626BC0(v2 + 4, v9); else v12 = v2 + 68; *(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * v11) = v12; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * v11) + 150) = 0; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * v11) + 102) = 0; LOWORD(dword_13257798) = **(_WORD **)(*(_DWORD *)(v2 + 324) + 4 * v11); BYTE2(dword_13257798) = 1; sub_639590(&unk_13257C80, (unsigned __int8 *)(*(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * v11) + 2), dword_13257798); ++v9; } while ( (signed int)v9 < *(_DWORD *)(v2 + 328) ); } v13 = sub_639620(&unk_13257C80, (unsigned __int8 *)"PowerofLove01"); if ( v13 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", (int)"PowerofLove01"); loc_6391B0("PassiveDataBox::sdb_MakeSpecialSkill"); } v14 = *(_DWORD *)(v2 + 392); *(_WORD *)(v2 + 336) = v13; v15 = *(_DWORD *)(v14 + 40); *(_DWORD *)(v2 + 476) = v15; v16 = unknown_libname_130(16 * v15 | -((unsigned __int64)v15 >> 28 != 0)); *(_DWORD *)(v2 + 480) = v16; if ( !v16 ) { sub_639100(&unk_86DDD8, (int)"PassiveDataBox::pdb_Load : Fail to alloc memory", 0); loc_6391B0("PassiveDataBox::pdb_Load"); } result = 0; v31 = 0; if ( *(_DWORD *)(v2 + 476) > 0 ) { v30 = 0; do { if ( result < *(_DWORD *)(*(_DWORD *)(v2 + 392) + 40) ) v18 = sub_626BC0(v2 + 340, result); else v18 = v2 + 404; v19 = sub_639620(&unk_13257C80, (unsigned __int8 *)v18); if ( v19 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", v18); loc_6391B0("PassiveDataBox::sdb_MakeSpecialSkill"); } if ( (_WORD)v19 == -1 || (v20 = (unsigned __int16)v19, (signed int)(unsigned __int16)v19 >= *(_DWORD *)(v2 + 332)) ) { v21 = v30; } else { v21 = v30; *(_WORD *)(v30 + *(_DWORD *)(v2 + 480)) = v19; if ( v31 < *(_DWORD *)(*(_DWORD *)(v2 + 392) + 40) ) { v22 = sub_626BC0(v2 + 340, v31); v20 = (unsigned __int16)v19; } else { v22 = v2 + 404; } *(_DWORD *)(v30 + *(_DWORD *)(v2 + 480) + 4) = v22; *(_DWORD *)(v30 + *(_DWORD *)(v2 + 480) + 8) = 0; *(_DWORD *)(v30 + *(_DWORD *)(v2 + 480) + 12) = 0; v23 = *(_DWORD *)(*(_DWORD *)(v2 + 324) + 4 * v20) + 70; if ( strcmp((const char *)v23, "-") ) { v24 = sub_639620(&unk_13257C80, (unsigned __int8 *)v23); v29 = v24; if ( v24 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", v23); loc_6391B0("PassiveDataBox::sdb_MakeSpecialSkill"); LOWORD(v24) = v29; } v25 = *(_DWORD *)(v2 + 480); if ( v25 ) { v26 = 0; if ( *(_DWORD *)(v2 + 476) > 0 ) { v27 = *(_DWORD *)(v2 + 480); while ( *(_WORD *)v27 != (_WORD)v24 ) { ++v26; v27 += 16; if ( v26 >= *(_DWORD *)(v2 + 476) ) goto LABEL_53; } v28 = v25 + 16 * v26; if ( v28 ) { *(_DWORD *)(v30 + v25 + 8) = v28; *(_DWORD *)(v28 + 12) = v30 + *(_DWORD *)(v2 + 480); } } } } } LABEL_53: result = v31 + 1; v31 = result; v30 = v21 + 16; } while ( (signed int)result < *(_DWORD *)(v2 + 476) ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 13257798: using guessed type int dword_13257798; //----- (00583910) -------------------------------------------------------- int __thiscall sub_583910(int this, unsigned int *a2) { int v2; // edx@2 int v3; // ecx@2 int result; // eax@3 if ( (signed int)*a2 >= *(_DWORD *)(this + 328) ) { result = *(_DWORD *)this; } else { v2 = *(_DWORD *)(this + 56); v3 = this + 4; if ( *a2 < *(_DWORD *)(v2 + 40) ) result = sub_626BC0(v3, *a2); else result = v3 + 64; } return result; } //----- (00583950) -------------------------------------------------------- int __stdcall sub_583950(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_3C3C3C3 || (result = operator new(68 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005839B0) -------------------------------------------------------- void *__thiscall sub_5839B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6ED2E4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6ED2E4: using guessed type int (__thiscall *off_6ED2E4)(void *, char); //----- (005839E0) -------------------------------------------------------- unsigned int __thiscall sub_5839E0(int this, unsigned int a2) { unsigned int result; // eax@1 int v3; // esi@1 int v4; // ebx@4 int v5; // edi@4 result = a2; v3 = this; if ( a2 > 0x3FFFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 2 < a2 ) { v4 = sub_5ADF10(a2); memmove_0((void *)v4, *(const void **)v3, 4 * ((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 2)); v5 = (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) >> 2; if ( *(_DWORD *)v3 ) operator delete(*(void **)v3); result = a2; *(_DWORD *)v3 = v4; *(_DWORD *)(v3 + 8) = v4 + 4 * a2; *(_DWORD *)(v3 + 4) = v4 + 4 * v5; } return result; } //----- (00583A60) -------------------------------------------------------- void *__cdecl sub_583A60(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 68 ) { if ( result ) memcpy(result, v3, 0x44u); v3 = (char *)v3 + 68; } return result; } //----- (00583AA0) -------------------------------------------------------- int __thiscall sub_583AA0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_3C3C3C3 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 68; if ( result < a2 ) { v4 = sub_583950(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v10 = v4; v12 = 0; sub_583A60(v6, v5, (void *)v4); v7 = (signed int)((unsigned __int64)(2021161081i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 5; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 68 * a2; *(_DWORD *)(v2 + 4) = result + 68 * v8; *(_DWORD *)v2 = result; } return result; } //----- (00583B83) -------------------------------------------------------- void __usercall sub_583B83(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00583BA0) -------------------------------------------------------- void *__thiscall sub_583BA0(void *this, int a2) { int v2; // esi@1 signed int v3; // eax@1 void *result; // eax@2 v2 = (int)this; v3 = sub_639620(&unk_13257C80, (unsigned __int8 *)a2); if ( v3 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"SkillDataBox::GetSkillIndexByName : Invalid Skill", a2); result = 0; } else { result = sub_447910(v2, v3); } return result; } //----- (00585990) -------------------------------------------------------- int __thiscall sub_585990(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = off_6ED90C; return result; } // 6ED90C: using guessed type int (*off_6ED90C[2])(); //----- (005859A0) -------------------------------------------------------- signed int __cdecl sub_5859A0() { return 88; } //----- (005859B0) -------------------------------------------------------- int __thiscall sub_5859B0(int this) { return **(_DWORD **)(*(_DWORD *)(this + 4) + 102); } //----- (005859C0) -------------------------------------------------------- int __thiscall sub_5859C0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = off_6ED918; return result; } // 6ED918: using guessed type int (*off_6ED918[2])(); //----- (005859D0) -------------------------------------------------------- signed int __cdecl sub_5859D0() { return 89; } //----- (005859E0) -------------------------------------------------------- int __thiscall sub_5859E0(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 4) + 102) + 4); } //----- (005859F0) -------------------------------------------------------- void __thiscall sub_5859F0(void *this) { *(_DWORD *)this = off_6ED900; } // 6ED900: using guessed type int (*off_6ED900[2])(); //----- (00585A00) -------------------------------------------------------- void *__thiscall sub_585A00(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = 0; *((_DWORD *)result + 2) = result; *((_DWORD *)result + 1) = result; return result; } //----- (00585A10) -------------------------------------------------------- char __thiscall sub_585A10(void *this, int a2) { void *v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 int v5; // ecx@5 int v7; // edi@13 int v8; // ST1C_4@13 int v9; // eax@15 int v10; // edi@16 int v11; // ST1C_4@16 int v12; // edi@17 int v13; // ST1C_4@17 int v14; // ebx@17 int v15; // eax@19 int v16; // ebx@23 int v17; // ST1C_4@23 char v18; // al@38 int v19; // [sp-8h] [bp-38h]@2 int v20; // [sp-4h] [bp-34h]@2 int v21; // [sp-4h] [bp-34h]@5 void *v22; // [sp+18h] [bp-18h]@1 int v23; // [sp+1Ch] [bp-14h]@13 int v24; // [sp+20h] [bp-10h]@13 int v25; // [sp+38h] [bp+8h]@1 signed int v26; // [sp+38h] [bp+8h]@13 signed int v27; // [sp+38h] [bp+8h]@17 v2 = this; v22 = this; sub_4675D0((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_AppendList"); dword_7508B8[dword_750CB8] = (int)"SlantedCoordList::CoordedNode::cn_AppendList"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(_DWORD *)v2; v25 = (***(int (****)(void))a2)(); if ( (**(int (__thiscall ***)(_DWORD))v4)(v4) != v25 ) { v20 = 0; v19 = (int)"SlantedCoordList::CoordedNode::cn_AppendList : List between wrong type"; LABEL_3: sub_639100(&unk_86DDD8, v19, v20); LABEL_4: --dword_750CB8; LABEL_5: v21 = (int)"SlantedCoordList::CoordedNode::cn_AppendList"; v5 = (int)&unk_D020420; LABEL_6: sub_467660(v5, v21); return 0; } if ( *((void **)v2 + 1) != v2 || *((void **)v2 + 2) != v2 ) { v20 = 0; v19 = (int)"CoordedNode::cn_AppendList : appendlink on object in list"; goto LABEL_3; } if ( *(_DWORD *)(v3 + 4) == v3 && *(_DWORD *)(v3 + 8) == v3 ) { v20 = 0; v19 = (int)"CoordedNode::cn_AppendList : appendlink to not in list"; goto LABEL_3; } v7 = *(_DWORD *)v2; v23 = 0; v24 = 0; v26 = 10000; v8 = (*(int (**)(void))(**(_DWORD **)v3 + 4))(); if ( v8 - (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 4))(v7) > 0 ) { while ( 1 ) { --v26; if ( v26 < 0 ) break; v9 = *(_DWORD *)(v3 + 4); if ( v3 == v9 ) { sub_639100(&unk_86DDD8, (int)"CoordedNode::cn_AppendList : Infinite Loop!!!", 0); break; } ++v24; v10 = *(_DWORD *)v2; v3 = *(_DWORD *)(v3 + 4); v11 = (*(int (**)(void))(**(_DWORD **)v9 + 4))(); if ( v11 - (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 4))(v10) <= 0 ) goto LABEL_17; } --dword_750CB8; goto LABEL_5; } LABEL_17: v12 = *(_DWORD *)(v3 + 8); v13 = *(_DWORD *)v12; v27 = 10000; v14 = (*(int (__thiscall **)(_DWORD))(**(_DWORD **)v2 + 4))(*(_DWORD *)v2); if ( v14 - (*(int (**)(void))(*(_DWORD *)v13 + 4))() > 0 ) { while ( 1 ) { --v27; if ( v27 < 0 ) break; v15 = *(_DWORD *)(v12 + 8); if ( v12 == v15 ) { sub_639100(&unk_86DDD8, (int)"CoordedNode::cn_AppendList : Infinite Loop!!!", 0); break; } v3 = *(_DWORD *)(v3 + 8); v12 = *(_DWORD *)(v12 + 8); if ( *(_DWORD *)(v3 + 8) != v15 || *(_DWORD *)(v15 + 4) != v3 ) sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_AppendList : Next & Prev split", 0); ++v23; v16 = *(_DWORD *)v12; v17 = (*(int (**)(void))(**(_DWORD **)v22 + 4))(); if ( v17 - (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 4))(v16) <= 0 ) goto LABEL_24; } --dword_750CB8; goto LABEL_5; } LABEL_24: if ( v24 && v23 ) { v20 = 0; v19 = (int)"CoordedNode::cn_AppendList : Pointer is wandering"; goto LABEL_3; } if ( !sub_549640((void *)v3) ) goto LABEL_4; if ( *(_DWORD *)(v3 + 8) != v12 || *(_DWORD *)(v12 + 4) != v3 ) { v20 = 0; v19 = (int)"SlantedCoordList::CoordedNode::cn_AppendList : List damaged"; goto LABEL_3; } if ( !sub_549640((void *)v12) || (*((_DWORD *)v22 + 1) = v3, *((_DWORD *)v22 + 2) = v12, *(_DWORD *)(v12 + 4) = v22, *(_DWORD *)(v3 + 8) = v22, !sub_549640((void *)v3)) || !sub_549640(v22) ) goto LABEL_4; v18 = sub_549640((void *)v12); --dword_750CB8; v21 = (int)"SlantedCoordList::CoordedNode::cn_AppendList"; v5 = (int)&unk_D020420; if ( !v18 ) goto LABEL_6; sub_467660((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_AppendList"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00585D10) -------------------------------------------------------- int __thiscall sub_585D10(void *this, void *a2) { void *v2; // esi@1 void *v3; // edi@1 int v4; // ebx@3 int v5; // eax@3 int v6; // ebx@11 void *v7; // ebx@12 int v9; // [sp+28h] [bp+8h]@3 int v10; // [sp+28h] [bp+8h]@11 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_MakeLink"); dword_7508B8[dword_750CB8] = (int)"SlantedCoordList::CoordedNode::cn_MakeLink"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 == v2 ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_MakeLink : List between same object", a2 != v2); loc_6391B0("SlantedCoordList::CoordedNode::cn_MakeLink"); } v4 = *(_DWORD *)v2; v9 = (***(int (****)(void))a2)(); v5 = (**(int (__thiscall ***)(_DWORD))v4)(v4); if ( v5 != v9 ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_MakeLink : List between wrong type", v5 == v9); loc_6391B0("SlantedCoordList::CoordedNode::cn_MakeLink"); } if ( *((void **)v2 + 1) != v2 || *((void **)v3 + 1) != v3 ) { sub_639100(&unk_86DDD8, (int)"CoordedNode::cn_MakeLink : makelink on object in list", 0); loc_6391B0("SlantedCoordList::CoordedNode::cn_MakeLink"); } if ( *((void **)v2 + 2) != v2 || *((void **)v3 + 2) != v3 ) { sub_639100(&unk_86DDD8, (int)"CoordedNode::cn_MakeLink : makelink on object in list", 0); loc_6391B0("SlantedCoordList::CoordedNode::cn_MakeLink"); } v6 = *(_DWORD *)v3; v10 = (*(int (**)(void))(**(_DWORD **)v2 + 4))(); if ( v10 - (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 4))(v6) >= 0 ) { v7 = v3; } else { v7 = v2; v2 = v3; } if ( (*(int (**)(void))(**(_DWORD **)v7 + 4))() || (_UNKNOWN *)(*(int (**)(void))(**(_DWORD **)v2 + 4))() != &unk_FFFFFF ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_MakeLink : invalid location", 0); loc_6391B0("SlantedCoordList::CoordedNode::cn_MakeLink"); } *((_DWORD *)v7 + 2) = v2; *((_DWORD *)v2 + 1) = v7; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_MakeLink"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00585EE0) -------------------------------------------------------- int __thiscall sub_585EE0(void *this, void *a2) { void *v2; // esi@1 void *v3; // edi@1 int v4; // ebx@3 int v5; // eax@3 int v6; // ebx@10 void *v7; // ebx@11 int v9; // [sp-4h] [bp-24h]@2 int v10; // [sp+28h] [bp+8h]@3 int v11; // [sp+28h] [bp+8h]@10 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_MakeLink2"); dword_7508B8[dword_750CB8] = (int)"SlantedCoordList::CoordedNode::cn_MakeLink2"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 == v2 ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_MakeLink2 : List between same object", a2 != v2); v9 = (int)"SlantedCoordList::CoordedNode::cn_MakeLink2"; } else { v4 = *(_DWORD *)a2; v10 = (***(int (****)(void))v2)(); v5 = (**(int (__thiscall ***)(_DWORD))v4)(v4); if ( v10 == v5 ) { if ( *((void **)v2 + 1) != v2 || *((void **)v3 + 1) != v3 || *((void **)v2 + 2) != v2 || *((void **)v3 + 2) != v3 ) { sub_639100(&unk_86DDD8, (int)"CoordedNode::cn_MakeLink2 : makelink on object in list", 0); } else { v6 = *(_DWORD *)v3; v11 = (*(int (**)(void))(**(_DWORD **)v2 + 4))(); if ( v11 - (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 4))(v6) >= 0 ) { v7 = v3; } else { v7 = v2; v2 = v3; } if ( (*(int (**)(void))(**(_DWORD **)v7 + 4))() || (_UNKNOWN *)(*(int (**)(void))(**(_DWORD **)v2 + 4))() != &unk_FFFFFF ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_MakeLink2 : invalid location", 0); } else { *((_DWORD *)v7 + 2) = v2; *((_DWORD *)v2 + 1) = v7; } } } else { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_MakeLink2 : List between wrong type", v10 == v5); } v9 = (int)"SlantedCoordList::CoordedNode::cn_MakeLink2"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00586060) -------------------------------------------------------- int __thiscall sub_586060(void *this, void *a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // ST1C_4@1 int v6; // edi@2 int v7; // ST1C_4@2 int v8; // edi@3 int v9; // eax@3 int v10; // eax@5 int v12; // [sp-4h] [bp-28h]@4 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_Rearrange"); dword_7508B8[dword_750CB8] = (int)"SlantedCoordList::CoordedNode::cn_Rearrange"; dword_750AB8[dword_750CB8++] = -1; v4 = **(_DWORD **)(v3 + 4); v5 = (*(int (**)(void))(**(_DWORD **)v3 + 4))(); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 4))(v4) - v5 >= 0 || (v6 = **(_DWORD **)(v3 + 8), v7 = (*(int (**)(void))(**(_DWORD **)v3 + 4))(), v7 - (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 4))(v6) >= 0) ) { v8 = *(_DWORD *)(v3 + 8); v9 = (unsigned __int8)sub_551960(v3); if ( !(_BYTE)v9 ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_Rearrange : removefail", v9); (*(void (__stdcall **)(signed int))(*(_DWORD *)a3 + 2208))(9); sub_4623E0(&unk_CFCE178, "cn_Rearrange"); v12 = (int)"SlantedCoordList::CoordedNode::cn_Rearrange"; LABEL_7: sub_462120(a2, v12); goto LABEL_8; } v10 = (unsigned __int8)sub_585A10((void *)v3, v8); if ( !(_BYTE)v10 ) { sub_639100(&unk_86DDD8, (int)"SlantedCoordList::CoordedNode::cn_Rearrange : AppendFail", v10); (*(void (__stdcall **)(signed int))(*(_DWORD *)a3 + 2208))(10); sub_4623E0(&unk_CFCE178, "cn_Rearrange 2"); v12 = (int)"SlantedCoordList::CoordedNode::cn_Rearrange 2"; goto LABEL_7; } } LABEL_8: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlantedCoordList::CoordedNode::cn_Rearrange"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005861D0) -------------------------------------------------------- int __thiscall sub_5861D0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v8; // esi@1 int v9; // ebx@9 __int64 v10; // qax@9 void *v11; // edi@11 __int16 v12; // ax@11 int v13; // eax@13 int v14; // edi@14 int v15; // eax@14 int v16; // edi@14 int v17; // eax@14 int v18; // eax@14 int v20; // [sp-4h] [bp-2Ch]@4 int v21; // [sp+30h] [bp+8h]@9 v8 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_PointStoneBuy"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_PointStoneBuy"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258270 & 1) ) { dword_13258270 |= 1u; word_1325826C = 70; atexit(nullsub_151); } if ( (1 << **(_BYTE **)(v8 + 3828)) & (unsigned __int16)word_1325826C && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v8 + 58688) + 16))(v8 + 58688) && sub_4C3BD0(v8 + 84508, v8) ) { if ( (unsigned int)((unsigned int)(a8 * *(_DWORD *)(a2 + 4)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6 >= a7 + a4 + a3 ) { v21 = a4 * *(_DWORD *)(a2 + 8); v9 = (unsigned __int64)v21 >> 32; LODWORD(v10) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1076))(v8); if ( a6 + v10 >= (unsigned __int64)v21 ) { v11 = off_849C18; *((_WORD *)off_849C18 + 1) = *(_WORD *)(v8 + 4); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); *(_WORD *)v11 = 13377; *((_DWORD *)v11 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); *((_BYTE *)v11 + 12) = a5; v12 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8) + 4); *(_WORD *)((char *)v11 + 13) = a4; *(_WORD *)((char *)v11 + 23) = v12; *(_DWORD *)((char *)v11 + 15) = v21; *(_DWORD *)((char *)v11 + 19) = v9; if ( sub_4C81E0(&off_849C18, 25) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_PointStoneBuy : Packet Too Long", 25); } v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); (*(void (__thiscall **)(int, _DWORD, int, int, signed int))(*(_DWORD *)v14 + 72))( v14, *(_WORD *)(v15 + 4), v21, v9, -1); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v16 + 92))(v16, *(_WORD *)(v17 + 4), a5, a4); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); ++*(_WORD *)(v18 + 4); (*(void (__thiscall **)(int, int))(*(_DWORD *)v8 + 2500))(v8, v21); (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 2880))(v8); --dword_750CB8; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v8 + 776))(v8, 20, 5, 1859); --dword_750CB8; } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v8 + 776))(v8, 20, 5, 1858); --dword_750CB8; } v20 = (int)"ShineObjectClass::ShinePlayer::sp_PointStoneBuy"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v8 + 776))(v8, 20, 5, 1857); --dword_750CB8; v20 = (int)"ShineObjectClass::ShinePlayer::sp_PointStoneBuy"; } return sub_467660((int)&unk_D020420, v20); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325826C: using guessed type __int16 word_1325826C; // 13258270: using guessed type int dword_13258270; // 14D16430: using guessed type int dword_14D16430; //----- (005864C0) -------------------------------------------------------- int __stdcall sub_5864C0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 12, 4, 513); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2884))(v2, 1); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00586600) -------------------------------------------------------- int __stdcall sub_586600(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 848))(v2, 12, 4, *(_WORD *)(a1 + 10)); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00586700) -------------------------------------------------------- int __thiscall sub_586700(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // ST10_4@1 int v4; // eax@1 int v5; // eax@1 int v6; // ecx@1 int (__thiscall *v7)(_DWORD); // edx@1 int v8; // edi@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; // ST04_4@6 int v15; // eax@6 char v17; // [sp+10h] [bp-1Ch]@1 int v18; // [sp+1Ch] [bp-10h]@1 int v19; // [sp+28h] [bp-4h]@1 v1 = this; v18 = (int)"ShineObjectClass::ShinePlayer::sp_HPStoneUse"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneUse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HPStoneUse"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 20491; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v19 = 0; sub_4287B0(&v17, &off_849C18, 4); v3 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v19) = 1; v4 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v4, v3, 0, 0, (int)&v17, 0, 65535); LOBYTE(v19) = 0; sub_428A70(&v17); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 20, 8); *((_DWORD *)v1 + 20501) = nullsub_2; *((_DWORD *)v1 + 20499) = dword_14D129E8 + 70; v5 = *(_DWORD *)v1; v6 = dword_14D129E8 + 50; --*(_WORD *)((char *)v1 + 32699); v7 = *(int (__thiscall **)(_DWORD))(v5 + 1240); *((_DWORD *)v1 + 20500) = v6; v8 = (unsigned __int8)v7(v1); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1180))(v1); if ( (unsigned __int16)v8 > 0x96u ) v10 = *(_DWORD *)(v9 + 67672); else v10 = *(_DWORD *)(v9 + 4 * v8 + 67672); v11 = (signed int)((unsigned __int64)(*(_DWORD *)(v10 + 28) * *((_WORD *)v1 + 80163) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; v12 = v11 + ((unsigned int)v11 >> 31); sub_55C1B0(v1, v11 + ((unsigned int)v11 >> 31), 1, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneUse"); v13 = *((_DWORD *)v1 + 960); *(_DWORD *)((char *)v1 + 32703) += v12; if ( *(_DWORD *)((char *)v1 + 32703) >= v13 ) *(_DWORD *)((char *)v1 + 32703) = v13; v14 = *(_DWORD *)((char *)v1 + 102); v15 = sub_427BD0(&unk_13253E80); sub_549C70(v1, v15, v14, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneUse"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005868E0) -------------------------------------------------------- int __thiscall sub_5868E0(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // ST10_4@1 int v4; // eax@1 int v5; // eax@1 int v6; // ecx@1 int (__thiscall *v7)(_DWORD); // edx@1 int v8; // edi@1 int v9; // eax@1 int v10; // eax@2 int v11; // ecx@4 unsigned int v12; // eax@4 int v13; // ST04_4@6 int v14; // eax@6 char v16; // [sp+10h] [bp-1Ch]@1 int v17; // [sp+1Ch] [bp-10h]@1 int v18; // [sp+28h] [bp-4h]@1 v1 = this; v17 = (int)"ShineObjectClass::ShinePlayer::sp_SPStoneUse"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SPStoneUse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SPStoneUse"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 20492; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v18 = 0; sub_4287B0(&v16, &off_849C18, 4); v3 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v18) = 1; v4 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v4, v3, 0, 0, (int)&v16, 0, 65535); LOBYTE(v18) = 0; sub_428A70(&v16); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 20, 10); *((_DWORD *)v1 + 20504) = nullsub_2; *((_DWORD *)v1 + 20502) = dword_14D129E8 + 70; v5 = *(_DWORD *)v1; v6 = dword_14D129E8 + 50; --*(_WORD *)((char *)v1 + 32701); v7 = *(int (__thiscall **)(_DWORD))(v5 + 1240); *((_DWORD *)v1 + 20503) = v6; v8 = (unsigned __int8)v7(v1); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1180))(v1); if ( (unsigned __int16)v8 > 0x96u ) v10 = *(_DWORD *)(v9 + 67672); else v10 = *(_DWORD *)(v9 + 4 * v8 + 67672); v11 = *(_DWORD *)(v10 + 40) * *((_WORD *)v1 + 80164); *(_DWORD *)((char *)v1 + 32707) += ((signed int)((unsigned __int64)(v11 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v11 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v12 = *((_DWORD *)v1 + 961); if ( *(_DWORD *)((char *)v1 + 32707) >= v12 ) *(_DWORD *)((char *)v1 + 32707) = v12; v13 = *(_DWORD *)((char *)v1 + 102); v14 = sub_427BD0(&unk_13253E80); sub_549C70(v1, v14, v13, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SPStoneUse"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00586AB0) -------------------------------------------------------- int __cdecl sub_586AB0() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_PointStone_NotInit"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_PointStone_NotInit"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_PointStone_NotInit"); } // 586AB0: using guessed type int sub_586AB0(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00586AF0) -------------------------------------------------------- int __thiscall sub_586AF0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_HPStoneReserv"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 20499) > (unsigned int)dword_14D129E8 ) goto LABEL_4; if ( !*(_WORD *)((char *)v1 + 32699) ) { *((_DWORD *)v1 + 20501) = nullsub_2; LABEL_4: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); } if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 40))(v1) ) *((_DWORD *)v1 + 20501) = nullsub_2; else sub_586700(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00586BF0) -------------------------------------------------------- int __thiscall sub_586BF0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SPStoneReserv"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 20502) <= (unsigned int)dword_14D129E8 ) { if ( *(_WORD *)((char *)v1 + 32701) ) { sub_5868E0(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); } *((_DWORD *)v1 + 20504) = nullsub_2; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00586CC0) -------------------------------------------------------- int __thiscall sub_586CC0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // edi@5 int v7; // eax@5 int v8; // edi@6 int v9; // eax@8 int v11; // [sp-8h] [bp-3Ch]@4 unsigned int v12; // [sp-4h] [bp-38h]@1 int v13; // [sp+Ch] [bp-28h]@8 int v14; // [sp+14h] [bp-20h]@8 unsigned int v15; // [sp+24h] [bp-10h]@1 int v16; // [sp+30h] [bp-4h]@1 int v17; // [sp+34h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v12 = (unsigned int)&v17 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v16 = 0; if ( !(dword_13258278 & 1) ) { dword_13258278 |= 1u; word_13258274 = 70; atexit(nullsub_149); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258274 ) { v6 = (unsigned __int8)(*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 1240))(v4, v12); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1180))(v4); if ( (unsigned __int16)v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 100))(v9); sub_5861D0(v4, v8 + 28, *(_WORD *)((char *)v4 + 32699), *(_WORD *)(a2 + 2), 0, v13, v14, *((_WORD *)v4 + 80157)); --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; } else { dword_750CB8 -= v5; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; } v16 = -1; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13258274: using guessed type __int16 word_13258274; // 13258278: using guessed type int dword_13258278; //----- (00586E30) -------------------------------------------------------- int __thiscall sub_586E30(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 int v6; // edi@5 int v7; // eax@5 int v8; // edi@6 int v9; // eax@8 int v11; // [sp-8h] [bp-3Ch]@4 unsigned int v12; // [sp-4h] [bp-38h]@1 int v13; // [sp+Ch] [bp-28h]@8 int v14; // [sp+18h] [bp-1Ch]@8 unsigned int v15; // [sp+24h] [bp-10h]@1 int v16; // [sp+30h] [bp-4h]@1 int v17; // [sp+34h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v12 = (unsigned int)&v17 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v16 = 0; if ( !(dword_13258280 & 1) ) { dword_13258280 |= 1u; word_1325827C = 70; atexit(nullsub_150); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1325827C ) { v6 = (unsigned __int8)(*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 1240))(v4, v12); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1180))(v4); if ( (unsigned __int16)v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 100))(v9); sub_5861D0(v4, v8 + 40, *(_WORD *)((char *)v4 + 32701), *(_WORD *)(a2 + 2), 1, v13, v14, *((_WORD *)v4 + 80158)); --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; } else { dword_750CB8 -= v5; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; } v16 = -1; return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1325827C: using guessed type __int16 word_1325827C; // 13258280: using guessed type int dword_13258280; //----- (00586FE0) -------------------------------------------------------- int __thiscall sub_586FE0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // al@5 int v6; // edx@5 int v7; // eax@8 int v8; // eax@12 void *v9; // ecx@19 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258288 & 1) ) { dword_13258288 |= 1u; word_13258284 = 86; atexit(nullsub_152); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258284) ) goto LABEL_26; v5 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688); v6 = *(_DWORD *)v4; if ( v5 ) { (*(void (__thiscall **)(void *, signed int, signed int))(v6 + 772))(v4, 20, 6); goto LABEL_23; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 2532))(v4) ) { LABEL_26: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 20, 6); goto LABEL_23; } v7 = *(_DWORD *)((char *)v4 + 122); if ( !v7 || !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 165) || !(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1256))(v4) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 40))(v4) || (v8 = *(_DWORD *)((char *)v4 + 122)) == 0 || !*(_BYTE *)(*(_DWORD *)(v8 + 12) + 158) || *(_DWORD *)((char *)v4 + 32703) >= *((_DWORD *)v4 + 960) ) goto LABEL_27; if ( *((_DWORD *)v4 + 20499) <= (unsigned int)dword_14D129E8 ) { v9 = v4; if ( *(_WORD *)((char *)v4 + 32699) ) { sub_586700(v4); goto LABEL_23; } LABEL_22: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v9, 20, 6); goto LABEL_23; } if ( *((_DWORD *)v4 + 20500) > (unsigned int)dword_14D129E8 ) { LABEL_27: v9 = v4; goto LABEL_22; } if ( *(_WORD *)((char *)v4 + 32699) ) *((_DWORD *)v4 + 20501) = sub_586AF0; LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258284: using guessed type __int16 word_13258284; // 13258288: using guessed type int dword_13258288; // 14D129E8: using guessed type int dword_14D129E8; //----- (005871B0) -------------------------------------------------------- int __thiscall sub_5871B0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char v5; // al@4 int v6; // edx@4 void *v7; // ecx@4 int v8; // eax@6 int v9; // eax@7 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258290 & 1) ) { dword_13258290 |= 1u; word_1325828C = 86; atexit(nullsub_153); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1325828C) ) goto LABEL_16; v5 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688); v6 = *(_DWORD *)v4; v7 = v4; if ( v5 ) { LABEL_18: (*(void (__thiscall **)(void *, signed int, signed int))(v6 + 772))(v7, 20, 6); goto LABEL_19; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 2532))(v4) || (v8 = *(_DWORD *)((char *)v4 + 122)) == 0 || (v9 = *(_DWORD *)(v8 + 12), !*(_BYTE *)(v9 + 165)) || *(_DWORD *)((char *)v4 + 32707) >= *((_DWORD *)v4 + 961) ) goto LABEL_16; if ( *((_DWORD *)v4 + 20502) <= (unsigned int)dword_14D129E8 ) { if ( *(_BYTE *)(v9 + 158) ) { v7 = v4; if ( *(_WORD *)((char *)v4 + 32701) ) { sub_5868E0(v4); goto LABEL_19; } goto LABEL_17; } LABEL_16: v7 = v4; LABEL_17: v6 = *(_DWORD *)v4; goto LABEL_18; } if ( *((_DWORD *)v4 + 20503) > (unsigned int)dword_14D129E8 ) goto LABEL_16; if ( *(_WORD *)((char *)v4 + 32701) ) *((_DWORD *)v4 + 20504) = sub_586BF0; LABEL_19: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325828C: using guessed type __int16 word_1325828C; // 13258290: using guessed type int dword_13258290; // 14D129E8: using guessed type int dword_14D129E8; //----- (00587340) -------------------------------------------------------- void *__thiscall sub_587340(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 5, 3) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 5, 5, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005873E0) -------------------------------------------------------- void *__thiscall sub_5873E0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 18, 5) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 18, 18, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00587480) -------------------------------------------------------- void *__thiscall sub_587480(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6EE110; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6EE110: using guessed type int (__thiscall *off_6EE110)(void *, char); //----- (005874B0) -------------------------------------------------------- void *__thiscall sub_5874B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6EE118; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6EE118: using guessed type int (__thiscall *off_6EE118)(void *, char); //----- (005874E0) -------------------------------------------------------- int __thiscall sub_5874E0(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; sub_587340(this, "../9Data/Shine/SpamerPenaltyRule.shn"); sub_5873E0((char *)v1 + 68, "../9Data/Shine/SpamerPenalty.shn"); result = *((_DWORD *)v1 + 30); *((_BYTE *)v1 + 140) = *(_BYTE *)(result + 40); return result; } //----- (00587510) -------------------------------------------------------- int __thiscall sub_587510(int this) { int v1; // eax@2 if ( *(_DWORD *)(*(_DWORD *)(this + 52) + 40) ) v1 = sub_626BC0(this, 0); else v1 = this + 64; return *(_WORD *)v1 / 100; } //----- (00587540) -------------------------------------------------------- char __thiscall sub_587540(int this) { char result; // al@2 if ( *(_DWORD *)(*(_DWORD *)(this + 52) + 40) ) result = *(_BYTE *)(sub_626BC0(this, 0) + 2); else result = *(_BYTE *)(this + 66); return result; } //----- (00587560) -------------------------------------------------------- char __thiscall sub_587560(int this, char a2, int a3) { int v3; // ebx@1 unsigned int v4; // esi@1 int v5; // eax@3 char result; // al@7 v3 = this; v4 = 0; if ( *(_BYTE *)(this + 140) ) { while ( 1 ) { v5 = v4 < *(_DWORD *)(*(_DWORD *)(v3 + 120) + 40) ? sub_626BC0(v3 + 68, v4) : v3 + 132; if ( a2 == *(_BYTE *)v5 ) break; ++v4; if ( (signed int)v4 >= *(_BYTE *)(v3 + 140) ) goto LABEL_7; } if ( v4 < *(_DWORD *)(*(_DWORD *)(v3 + 120) + 40) ) { *(_WORD *)a3 = *(_WORD *)(sub_626BC0(v3 + 68, v4) + 1); result = 1; } else { *(_WORD *)a3 = *(_WORD *)(v3 + 133); result = 1; } } else { LABEL_7: result = 0; } return result; } //----- (005875F0) -------------------------------------------------------- char __thiscall sub_5875F0(int this, char a2, int a3) { int v3; // ebx@1 unsigned int v4; // esi@1 int v5; // eax@3 char result; // al@7 v3 = this; v4 = 0; if ( *(_BYTE *)(this + 140) ) { while ( 1 ) { v5 = v4 < *(_DWORD *)(*(_DWORD *)(v3 + 120) + 40) ? sub_626BC0(v3 + 68, v4) : v3 + 132; if ( a2 == *(_BYTE *)v5 ) break; ++v4; if ( (signed int)v4 >= *(_BYTE *)(v3 + 140) ) goto LABEL_7; } if ( v4 < *(_DWORD *)(*(_DWORD *)(v3 + 120) + 40) ) { *(_WORD *)a3 = *(_WORD *)(sub_626BC0(v3 + 68, v4) + 3); result = 1; } else { *(_WORD *)a3 = *(_WORD *)(v3 + 135); result = 1; } } else { LABEL_7: result = 0; } return result; } //----- (00587680) -------------------------------------------------------- int __thiscall sub_587680(void *this, __int16 a2, int a3) { void *v3; // esi@1 int v4; // edx@1 int v5; // eax@2 int result; // eax@5 __int16 v7; // ax@6 int *v8; // edx@6 int v9; // eax@6 int v10; // esi@6 int v11; // [sp+0h] [bp-3Ch]@0 int v12; // [sp+4h] [bp-38h]@0 int v13; // [sp+8h] [bp-34h]@0 int (**v14)(); // [sp+Ch] [bp-30h]@1 char *v15; // [sp+10h] [bp-2Ch]@1 int v16; // [sp+14h] [bp-28h]@6 int v17; // [sp+18h] [bp-24h]@4 __int16 v18; // [sp+1Ch] [bp-20h]@4 int *v19; // [sp+20h] [bp-1Ch]@4 char *v20; // [sp+24h] [bp-18h]@4 int v21; // [sp+28h] [bp-14h]@4 int v22; // [sp+2Ch] [bp-10h]@1 int v23; // [sp+38h] [bp-4h]@1 v3 = this; v22 = (int)"ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"; dword_750AB8[dword_750CB8++] = -1; v14 = &off_6A86A4; v15 = (char *)v3 + 36484; v4 = *((_DWORD *)v3 + 9121); v23 = 0; if ( v3 == (void *)-160312 ) v5 = (*(int (**)(void))(v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(v4 + 4))((char *)v3 + 160312); v17 = v5; v14 = (int (**)())&off_6A86BC; v18 = a2; LOBYTE(v23) = 1; v19 = (int *)&v14; v20 = (char *)v3 + 58688; v21 = 9; if ( sub_486D40(&v19) ) { v7 = *(_WORD *)a3 & 0x3FF | 0x2400; v8 = v19; *(_WORD *)a3 = v7; *(_WORD *)a3 = v7 ^ (v7 ^ *((_WORD *)v8 + 4)) & 0x3FF; v9 = (**(int (__stdcall ***)(int, int, int, int, int (**)(), char *, int, int, _DWORD, int *, char *, int, int))v8[1])( v8[2], v11, v12, v13, v14, v15, v16, v17, *(_DWORD *)&v18, v19, v20, v21, v22); --dword_750CB8; v10 = v9; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); result = v10; } else { --dword_750CB8; v14 = &off_6A86A4; v23 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00587800) -------------------------------------------------------- int __thiscall sub_587800(void *this, signed int a2) { void *v2; // ebx@1 int v3; // eax@3 const void *v4; // esi@3 int v5; // ecx@5 int v6; // esi@7 unsigned int v8; // [sp-4h] [bp-9Ch]@1 int v9; // [sp+10h] [bp-88h]@3 char v10; // [sp+14h] [bp-84h]@3 char v11; // [sp+18h] [bp-80h]@7 unsigned __int8 v12; // [sp+22h] [bp-76h]@7 __int16 v13; // [sp+23h] [bp-75h]@8 int v14; // [sp+25h] [bp-73h]@8 int v15; // [sp+29h] [bp-6Fh]@8 __int16 v16; // [sp+84h] [bp-14h]@7 char v17; // [sp+86h] [bp-12h]@7 unsigned int v18; // [sp+88h] [bp-10h]@1 int v19; // [sp+94h] [bp-4h]@1 int v20; // [sp+98h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v8 = (unsigned int)&v20 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( a2 > 10 ) a2 = 10; v3 = sub_587680(v2, word_14D211B0, (int)&v10); v4 = (const void *)v3; v9 = v3; if ( v3 && (v5 = *(_DWORD *)(v3 + 112)) != 0 && (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v5 + 40))(v8) == 13 ) { memcpy(&v11, v4, 0x6Cu); v6 = (int)((char *)v4 + 108); v16 = *(_WORD *)v6; v17 = *(_BYTE *)(v6 + 2); if ( v12 < a2 ) { *(&v13 + 5 * v12) = -1; *(int *)((char *)&v14 + 10 * v12) = 10000; *(int *)((char *)&v15 + 10 * v12++) = 10000; sub_595A90(v2, v9, *(_DWORD *)(v9 + 112), (int)&v11, (int)&v10); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); } v19 = -1; } else { v19 = -1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D211B0: using guessed type __int16 word_14D211B0; //----- (00587970) -------------------------------------------------------- int __thiscall sub_587970(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // eax@5 int v6; // eax@8 const void *v7; // esi@8 int v8; // ecx@10 int v9; // esi@12 int v10; // edi@15 int v11; // eax@17 int v13; // [sp-8h] [bp-A4h]@9 unsigned int v14; // [sp-4h] [bp-A0h]@1 int v15; // [sp+14h] [bp-88h]@8 char v16; // [sp+18h] [bp-84h]@8 char v17; // [sp+1Ch] [bp-80h]@12 unsigned __int8 v18; // [sp+26h] [bp-76h]@12 __int16 v19; // [sp+27h] [bp-75h]@17 int v20; // [sp+29h] [bp-73h]@17 int v21; // [sp+2Dh] [bp-6Fh]@17 __int16 v22; // [sp+88h] [bp-14h]@12 char v23; // [sp+8Ah] [bp-12h]@12 unsigned int v24; // [sp+8Ch] [bp-10h]@1 int v25; // [sp+98h] [bp-4h]@1 int v26; // [sp+9Ch] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v14 = (unsigned int)&v26 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; if ( !(dword_1325832C & 1) ) { dword_1325832C |= 1u; word_13258328 = 70; atexit(nullsub_154); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258328) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4422); LABEL_19: v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; goto LABEL_20; } v5 = *(_DWORD *)((char *)v4 + 122); 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) + 107) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4419); goto LABEL_19; } v6 = sub_587680(v4, word_14D211B0, (int)&v16); v7 = (const void *)v6; v15 = v6; if ( !v6 || (v8 = *(_DWORD *)(v6 + 112)) == 0 || (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v8 + 40))(v14) != 13 ) { v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; LABEL_20: v25 = -1; goto LABEL_21; } memcpy(&v17, v7, 0x6Cu); v9 = (int)((char *)v7 + 108); v22 = *(_WORD *)v9; v23 = *(_BYTE *)(v9 + 2); if ( *(_BYTE *)(a2 + 2) < v18 ) { v10 = *(_DWORD *)((char *)v4 + 122); if ( v10 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2680))(v4) ) { v11 = sub_418B00((int)byte_85A2C0, v10); *(&v19 + 5 * *(_BYTE *)(a2 + 2)) = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v11); *(int *)((char *)&v20 + 10 * *(_BYTE *)(a2 + 2)) = **(_DWORD **)((char *)v4 + 102); *(int *)((char *)&v21 + 10 * *(_BYTE *)(a2 + 2)) = *(_DWORD *)(*(_DWORD *)((char *)v4 + 102) + 4); sub_595A90(v4, v15, *(_DWORD *)(v15 + 112), (int)&v17, (int)&v16); (*(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); v25 = -1; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; goto LABEL_21; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4420); } v25 = -1; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13258328: using guessed type __int16 word_13258328; // 1325832C: using guessed type int dword_1325832C; // 14D211B0: using guessed type __int16 word_14D211B0; //----- (00587BF0) -------------------------------------------------------- int __thiscall sub_587BF0(void *this, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@7 const void *v6; // esi@7 int v7; // ecx@9 int v8; // esi@11 unsigned __int8 v9; // al@11 int v10; // eax@15 int v11; // eax@17 __int16 v12; // dx@18 __int16 *v13; // ecx@18 int v14; // eax@18 int *v15; // eax@18 signed int v17; // [sp-8h] [bp-9Ch]@12 unsigned int v18; // [sp-4h] [bp-98h]@1 int v19; // [sp-4h] [bp-98h]@4 int v20; // [sp+10h] [bp-84h]@7 char v21; // [sp+14h] [bp-80h]@11 unsigned __int8 v22; // [sp+1Eh] [bp-76h]@11 __int16 v23[50]; // [sp+1Fh] [bp-75h]@11 unsigned int v24; // [sp+84h] [bp-10h]@1 int v25; // [sp+90h] [bp-4h]@1 int v26; // [sp+94h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v18 = (unsigned int)&v26 ^ __security_cookie; v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; if ( !(dword_13258334 & 1) ) { dword_13258334 |= 1u; word_13258330 = 70; atexit(nullsub_155); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13258330 ) { if ( (unsigned __int16)sub_5940D0((void *)v4) != 1792 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 6, 23, 4419, v18); v25 = -1; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ"; goto LABEL_22; } v5 = sub_587680((void *)v4, word_14D211B0, (int)&v20); v6 = (const void *)v5; if ( !v5 || (v7 = *(_DWORD *)(v5 + 112)) == 0 || (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v7 + 40))(v18) != 13 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v4 + 776))( v4, 6, 23, 4418, v18); v25 = -1; LABEL_21: v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ"; goto LABEL_22; } memcpy(&v21, v6, 0x6Cu); v8 = (int)((char *)v6 + 108); *(__int16 *)((char *)&v23[48] + 1) = *(_WORD *)v8; HIBYTE(v23[49]) = *(_BYTE *)(v8 + 2); v9 = *(_BYTE *)(a2 + 2); if ( v9 < v22 ) { if ( v23[5 * v9] == -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 776))(v4, 6, 23, 4420, v18); LABEL_20: v25 = -1; goto LABEL_21; } v10 = sub_587680((void *)v4, word_14D211B4, (int)&v20); if ( v10 && (v11 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v10 + 8))) != 0 ) { sub_53E400(off_86AD00, v4, v4 + 36484, (int **)v11, v20); v12 = *(_WORD *)(v4 + 4); v13 = &v23[5 * *(_BYTE *)(a2 + 2)]; dword_86A540 = dword_86A544 & (dword_86A540 + 1); word_869F40[6 * dword_86A540] = v12; v14 = 3 * dword_86A540; dword_869F42[3 * dword_86A540] = *(_DWORD *)v13; v15 = &dword_869F42[v14]; v15[1] = *((_DWORD *)v13 + 1); *((_WORD *)v15 + 4) = v13[4]; *(_WORD *)(v4 + 160828) = dword_86A540; v17 = 4417; } else { v17 = 4421; } } else { v17 = 4420; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 776))(v4, 6, 23, v17, v18); goto LABEL_20; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 776))(v4, 6, 23, 4422, v18); v25 = -1; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ"; LABEL_22: --dword_750CB8; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 869F40: using guessed type __int16 word_869F40[]; // 869F42: using guessed type int dword_869F42[]; // 86A540: using guessed type int dword_86A540; // 86A544: using guessed type int dword_86A544; // 86AD00: using guessed type int (__thiscall *off_86AD00[9])(void *, char); // 86FEB8: using guessed type int __security_cookie; // 13258330: using guessed type __int16 word_13258330; // 13258334: using guessed type int dword_13258334; // 14D20890: using guessed type int dword_14D20890; // 14D211B0: using guessed type __int16 word_14D211B0; // 14D211B4: using guessed type __int16 word_14D211B4; // 587BF0: using guessed type __int16 var_75[50]; //----- (00587E90) -------------------------------------------------------- int __thiscall sub_587E90(void *this) { void *v1; // esi@1 int v2; // eax@1 __int16 *v3; // ebx@2 int v4; // eax@3 bool v5; // zf@3 _BYTE *v6; // ebx@3 int v7; // esi@7 int v8; // eax@22 int v9; // eax@24 int v10; // ecx@24 int v11; // ecx@24 int v12; // ST14_4@24 __time32_t v13; // eax@24 __time32_t v14; // eax@24 int v15; // ecx@25 int v16; // edi@26 int v17; // ST10_4@27 int v18; // eax@27 int v19; // ST0C_4@27 __time32_t v20; // eax@27 __time32_t v21; // eax@27 __time32_t v22; // eax@27 __time32_t v23; // eax@27 int v24; // eax@28 _BYTE *v25; // eax@28 int v26; // eax@28 _BYTE *v27; // eax@28 int v28; // ecx@28 int v29; // edx@28 void (__thiscall *v30)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@28 int v32; // [sp-4h] [bp-388h]@1 char v33; // [sp+10h] [bp-374h]@28 char v34; // [sp+24h] [bp-360h]@28 char v35; // [sp+45h] [bp-33Fh]@28 int v36; // [sp+66h] [bp-31Eh]@28 int v37; // [sp+6Ah] [bp-31Ah]@28 char v38; // [sp+74h] [bp-310h]@17 char v39; // [sp+174h] [bp-210h]@13 char v40; // [sp+274h] [bp-110h]@5 unsigned int v41; // [sp+374h] [bp-10h]@1 int v42; // [sp+380h] [bp-4h]@1 int v43; // [sp+384h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v32 = (unsigned int)&v43 ^ __security_cookie; v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_WORD *)v1 + 80414); v42 = 0; if ( (unsigned __int16)v2 < 0x80u && (v3 = &word_869F40[6 * v2]) != 0 ) { if ( *((_WORD *)v1 + 2) == *v3 ) { v15 = (unsigned __int16)v3[1]; if ( v15 < dword_14D20400 && (v16 = *(_DWORD *)(dword_14D203FC + 4 * v15)) != 0 ) { v24 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v24; v25 = &byte_85A2C0[256 * v24]; *(_DWORD *)v25 = *(_DWORD *)(v16 + 2); *((_DWORD *)v25 + 1) = *(_DWORD *)(v16 + 6); *((_DWORD *)v25 + 2) = *(_DWORD *)(v16 + 10); v25[12] = 0; strncpy(&v34, v25, 0xCu); v26 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v26; v27 = &byte_85A2C0[256 * v26]; *(_DWORD *)v27 = *(_DWORD *)(v16 + 2); *((_DWORD *)v27 + 1) = *(_DWORD *)(v16 + 6); *((_DWORD *)v27 + 2) = *(_DWORD *)(v16 + 10); v27[12] = 0; strncpy(&v35, v27, 0xCu); v28 = *((_DWORD *)v3 + 2); v29 = *(_DWORD *)v1; v36 = *((_DWORD *)v3 + 1); v30 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(v29 + 772); v37 = v28; v30(v1, 12, 26, v32); (*(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 + 1536))( v1, &v33, 6, 9, 10); } else { v17 = (unsigned __int16)v3[1]; v18 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1388))(v1, "/"); v19 = sub_418B40((int)byte_85A2C0, v18); v20 = sub_418EA0((__time32_t)byte_14D211E0, (int)"Fly Null map"); v21 = sub_418EA0(v20, v19); v22 = sub_418EA0(v21, v17); v23 = sub_43B910(v22, (int)&unk_13359E04); sub_418F20(v23, v32); } } else { v9 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v1 + 1388))(v1, v32); v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = (int)&byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)v9; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v9 + 12); v12 = v11; *(_DWORD *)(v11 + 16) = *(_DWORD *)(v9 + 16); *(_BYTE *)(v11 + 20) = 0; v13 = sub_418EA0((__time32_t)byte_14D211E0, (int)"Fly Null "); v14 = sub_418EA0(v13, v12); sub_418F20(v14, (int)&unk_13359E04); } } else { v4 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v1 + 1388))(v1, v32); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = byte_7493ED == 0; v6 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); *((_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 16); v6[20] = 0; if ( !v5 ) { if ( byte_14D21464 ) { sprintf(&v40, "%.255s", "Fly Null return "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v40, dword_14D212E0); } } v7 = *((_WORD *)v1 + 80410); if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v7); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v39, "%.255s", word_6A2BF8); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v39, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v38, "%.255s", v6); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v38, dword_14D212E0); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v8 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v8); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } } } --dword_750CB8; v42 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 869F40: using guessed type __int16 word_869F40[]; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; // 14D21464: using guessed type char byte_14D21464; //----- (005882E0) -------------------------------------------------------- int __thiscall sub_5882E0(int this) { int result; // eax@1 int v2; // edx@1 signed int v3; // esi@1 result = this; *(_DWORD *)(this + 260) = 15; *(_DWORD *)(this + 256) = 0; v2 = this + 8; v3 = 16; do { *(_DWORD *)(v2 - 8) = 1; *(_DWORD *)(v2 - 4) = 0; *(_DWORD *)v2 = -1; *(_DWORD *)(v2 + 4) = 1000; v2 += 16; --v3; } while ( v3 ); return result; } //----- (00588320) -------------------------------------------------------- int __thiscall sub_588320(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 8) = 15; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6EE2CC; return result; } // 6EE2CC: using guessed type int (__thiscall *off_6EE2CC)(void *, char); //----- (00588340) -------------------------------------------------------- void __thiscall sub_588340(void *this) { *(_DWORD *)this = &off_6EE2B4; } // 6EE2B4: using guessed type int (__thiscall *off_6EE2B4)(void *, char); //----- (00588350) -------------------------------------------------------- int __stdcall sub_588350(int a1, int a2) { return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 1792))( *(_DWORD *)(a2 + 4), ((signed int)((unsigned __int64)(*(_DWORD *)(a2 + 8) * *(_DWORD *)(a2 + 12) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(a2 + 8) * *(_DWORD *)(a2 + 12) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); } //----- (00588390) -------------------------------------------------------- void *__thiscall sub_588390(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6EE2B4; if ( a2 & 1 ) operator delete(this); return v2; } // 6EE2B4: using guessed type int (__thiscall *off_6EE2B4)(void *, char); //----- (005883C0) -------------------------------------------------------- int __thiscall sub_5883C0(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // ebx@1 void (__thiscall *v5)(_DWORD, _DWORD, _DWORD); // eax@3 int v7; // [sp-4h] [bp-24h]@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SpyNet::IntelligenceOffice::io_ReadReport"); dword_7508B8[dword_750CB8] = (int)"SpyNet::IntelligenceOffice::io_ReadReport"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; while ( 2 ) { switch ( *(_DWORD *)(a3 + 16 * (*((_DWORD *)v3 + 1) & 0xF)) ) { case 1: v7 = a3 + 16 * (*((_DWORD *)v3 + 1) & 0xF); v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 4); goto LABEL_7; case 2: v7 = a3 + 16 * (*((_DWORD *)v3 + 1) & 0xF); v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 8); goto LABEL_7; case 3: v7 = a3 + 16 * (*((_DWORD *)v3 + 1) & 0xF); v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12); goto LABEL_7; case 4: v7 = a3 + 16 * (*((_DWORD *)v3 + 1) & 0xF); v5 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 16); LABEL_7: v5(v3, a2, v7); goto LABEL_8; case 0: goto LABEL_10; default: LABEL_8: ++v4; *((_DWORD *)v3 + 1) = *((_DWORD *)v3 + 2) & (*((_DWORD *)v3 + 1) + 1); if ( v4 < 0x10 ) continue; sub_639100(&unk_86DDD8, (int)"SpyNet::IntelligenceOffice::io_ReadReport : Cannot found EOR(End of Report)", 0); LABEL_10: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SpyNet::IntelligenceOffice::io_ReadReport"); } } } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005884D0) -------------------------------------------------------- int __thiscall sub_5884D0(void *this, int a2) { int v2; // esi@1 int result; // eax@2 int v4; // ebx@3 unsigned __int8 v5; // al@3 unsigned __int8 v6; // dl@3 int v7; // ecx@3 int v8; // eax@5 char v9; // bl@9 int v10; // edx@19 void *v11; // eax@19 int v12; // eax@21 v2 = (int)this; if ( 2753 == *(_WORD *)(a2 + 13) ) { v4 = 2 * (*(int (**)(void))(**((_DWORD **)this + 1029) + 56))(); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1240))(v2); v6 = *(_BYTE *)(a2 + 6); v7 = *(_WORD *)(dword_DA22E30[v5] + v4 + 51); if ( v7 >= *(_BYTE *)(a2 + 6) + *(_BYTE *)(a2 + 7) + *(_BYTE *)(a2 + 8) + *(_BYTE *)(a2 + 9) + *(_BYTE *)(a2 + 10) ) { v8 = 0; do { if ( v7 < *(_BYTE *)(a2 + v8 + 6) ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_FreeStat_Increase : Invalid Stat ", v8); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 4, 103, 2755); } ++v8; } while ( v8 < 5 ); if ( *(_BYTE *)(v2 + 32748) >= v6 ) { if ( *(_BYTE *)(v2 + 32749) >= *(_BYTE *)(a2 + 7) ) { if ( *(_BYTE *)(v2 + 32750) >= *(_BYTE *)(a2 + 8) ) { if ( *(_BYTE *)(v2 + 32751) >= *(_BYTE *)(a2 + 9) ) { v9 = 4; if ( *(_BYTE *)(v2 + 32752) >= *(_BYTE *)(a2 + 10) ) v9 = BYTE3(a2); } else { v9 = 3; } } else { v9 = 2; } } else { v9 = 1; } } else { v9 = 0; } *(_BYTE *)(v2 + 32748) = v6; *(_BYTE *)(v2 + 32749) = *(_BYTE *)(a2 + 7); *(_BYTE *)(v2 + 32750) = *(_BYTE *)(a2 + 8); v10 = *(_DWORD *)(v2 + 4116); *(_BYTE *)(v2 + 32751) = *(_BYTE *)(a2 + 9); *(_BYTE *)(v2 + 32752) = *(_BYTE *)(a2 + 10); sub_516340((void *)(v2 + 4120), v10, v2); v11 = off_849C18; *(_WORD *)off_849C18 = 4191; *((_BYTE *)v11 + 2) = v9; if ( sub_4C81E0(&off_849C18, 3) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 12))(v12, v2, &off_849C18); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_StatIncrease :too many stat - changestat", 0); result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 4, 97, 2754); } } else { result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 776))( this, 4, 97, *(_WORD *)(a2 + 13)); } return result; } // DA22E30: using guessed type int dword_DA22E30[]; //----- (005886C0) -------------------------------------------------------- #error "5889E0: call analysis failed (funcsize=250)" //----- (00588A00) -------------------------------------------------------- int __thiscall sub_588A00(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@5 signed int v6; // ebx@5 int v7; // eax@5 unsigned __int8 v8; // al@7 void *v9; // edi@10 unsigned __int8 v10; // al@10 int v11; // eax@14 signed int v13; // [sp-8h] [bp-28h]@15 int v14; // [sp-4h] [bp-24h]@4 signed int v15; // [sp-4h] [bp-24h]@6 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1325833C & 1) ) { dword_1325833C |= 1u; word_13258338 = 86; atexit(nullsub_156); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13258338 ) { v5 = 2 * (*(int (**)(void))(**(_DWORD **)(v4 + 4116) + 56))(); v6 = *(_WORD *)(dword_DA22E30[(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1240))(v4)] + v5 + 51); v7 = sub_44A190(v4); if ( v6 > v7 ) { v8 = *(_BYTE *)(a2 + 2); if ( v8 > 4u ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Invalid Stat", v8); v15 = 2755; } else { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2760))(v4) != 1 ) { v9 = off_849C18; *(_WORD *)off_849C18 = 4305; *((_WORD *)v9 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v9 + 8) = v6; *((_BYTE *)v9 + 9) = *(_BYTE *)(v4 + 32748); *((_BYTE *)v9 + 10) = *(_BYTE *)(v4 + 32749); *((_BYTE *)v9 + 11) = *(_BYTE *)(v4 + 32750); *((_BYTE *)v9 + 12) = *(_BYTE *)(v4 + 32751); *((_BYTE *)v9 + 13) = *(_BYTE *)(v4 + 32752); *((_BYTE *)v9 + 16) = 0; v10 = *(_BYTE *)(a2 + 2); if ( v10 >= 5u ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : invalid stat", v10); v15 = 2755; v13 = 103; } else { if ( *((_BYTE *)v9 + v10 + 9) < v6 ) { ++*((_BYTE *)v9 + v10 + 9); if ( sub_4C81E0(&off_849C18, 17) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2764))(v4); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Packet Too Long", 17); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2764))(v4); } goto LABEL_20; } sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : too many stat", v10); v15 = 2754; v13 = 103; } LABEL_19: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 4, v13, v15); LABEL_20: v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; goto LABEL_21; } sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : free stat is lock", 0); v15 = 2759; } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Try to increase above remain point", v6 > v7); v15 = 2754; } v13 = 97; goto LABEL_19; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2759); v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22E30: using guessed type int dword_DA22E30[]; // 13258338: using guessed type __int16 word_13258338; // 1325833C: using guessed type int dword_1325833C; // 14D16430: using guessed type int dword_14D16430; //----- (00588CC0) -------------------------------------------------------- int __stdcall sub_588CC0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_INCPOINTSUC_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_STAT_INCPOINTSUC_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2028))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_INCPOINTSUC_DB_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00588DB0) -------------------------------------------------------- int __thiscall sub_588DB0(void *this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // edi@1 int v5; // eax@1 unsigned __int8 v6; // al@4 unsigned __int8 v7; // al@6 unsigned __int8 v8; // al@8 unsigned __int8 v9; // al@10 unsigned __int8 v10; // al@12 void *v11; // eax@14 int v12; // eax@16 signed int v14; // [sp-4h] [bp-24h]@2 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease"; dword_750AB8[dword_750CB8++] = -1; v3 = 2 * (*(int (**)(void))(**(_DWORD **)(v2 + 4116) + 56))(); v4 = *(_WORD *)(dword_DA22E30[(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1240))(v2)] + v3 + 51); v5 = sub_44A190(v2); if ( v4 > v5 ) { switch ( *(_BYTE *)(a2 + 6) ) { case 0: v6 = *(_BYTE *)(v2 + 32748); if ( v6 < BYTE1(dword_DA22970[0]) ) *(_BYTE *)(v2 + 32748) = v6 + 1; break; case 1: v7 = *(_BYTE *)(v2 + 32749); if ( v7 < BYTE1(dword_DA22970[0]) ) *(_BYTE *)(v2 + 32749) = v7 + 1; break; case 2: v8 = *(_BYTE *)(v2 + 32750); if ( v8 < BYTE1(dword_DA22970[0]) ) *(_BYTE *)(v2 + 32750) = v8 + 1; break; case 3: v9 = *(_BYTE *)(v2 + 32751); if ( v9 < BYTE1(dword_DA22970[0]) ) *(_BYTE *)(v2 + 32751) = v9 + 1; break; case 4: v10 = *(_BYTE *)(v2 + 32752); if ( v10 < BYTE1(dword_DA22970[0]) ) *(_BYTE *)(v2 + 32752) = v10 + 1; break; default: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(a2 + 6)); v14 = 2755; goto LABEL_18; } sub_516340((void *)(v2 + 4120), *(_DWORD *)(v2 + 4116), v2); v11 = off_849C18; *(_WORD *)off_849C18 = 4191; *((_BYTE *)v11 + 2) = *(_BYTE *)(a2 + 6); if ( sub_4C81E0(&off_849C18, 3) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 12))(v12, v2, &off_849C18); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1320))(v2); } } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Try to increase above remain point", v4 > v5); v14 = 2754; LABEL_18: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 4, 97, v14); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22970: using guessed type int dword_DA22970[]; // DA22E30: using guessed type int dword_DA22E30[]; //----- (00588FF0) -------------------------------------------------------- int __stdcall sub_588FF0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 4, 97, *(_WORD *)(a1 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005890E0) -------------------------------------------------------- int __thiscall sub_5890E0(void *this, int a2, int a3, int a4) { int v4; // ebx@1 signed int v5; // eax@1 __int16 v6; // di@7 int v7; // edx@7 int v8; // eax@8 int v9; // eax@12 int v10; // edx@15 int v11; // esi@17 int v12; // eax@17 void *v13; // esi@17 signed int v14; // edi@17 int v15; // eax@17 unsigned __int8 v16; // al@17 int v17; // eax@19 int v18; // ecx@21 int v19; // eax@24 int v21; // [sp-8h] [bp-C8h]@4 int v22; // [sp-8h] [bp-C8h]@13 unsigned int v23; // [sp-4h] [bp-C4h]@1 int v24; // [sp-4h] [bp-C4h]@13 int *v25; // [sp+10h] [bp-B0h]@10 int v26; // [sp+14h] [bp-ACh]@10 int v27; // [sp+18h] [bp-A8h]@10 int v28; // [sp+1Ch] [bp-A4h]@1 int v29; // [sp+20h] [bp-A0h]@15 int (**v30)(); // [sp+24h] [bp-9Ch]@7 int v31; // [sp+28h] [bp-98h]@7 int v32; // [sp+30h] [bp-90h]@10 __int16 v33; // [sp+34h] [bp-8Ch]@10 int v34; // [sp+38h] [bp-88h]@12 __int16 v35; // [sp+3Ch] [bp-84h]@17 int v36; // [sp+40h] [bp-80h]@17 int v37; // [sp+44h] [bp-7Ch]@19 __int16 v38; // [sp+48h] [bp-78h]@17 __int16 v39; // [sp+ACh] [bp-14h]@17 char v40; // [sp+AEh] [bp-12h]@17 unsigned int v41; // [sp+B0h] [bp-10h]@1 int v42; // [sp+BCh] [bp-4h]@1 int v43; // [sp+C0h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; v23 = (unsigned int)&v43 ^ __security_cookie; v4 = (int)this; v28 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v42 = 0; if ( !(dword_13258344 & 1) ) { dword_13258344 |= 1u; word_13258340 = 86; atexit(nullsub_157); v5 = 1; } if ( !((v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13258340) ) { dword_750CB8 -= v5; v42 = -1; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; return sub_467660((int)&unk_D020420, v21); } if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v4 + 2760))(v4, v23) == 1 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : free stat is lock", 0); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 103); v42 = -1; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; LABEL_30: --dword_750CB8; return sub_467660((int)&unk_D020420, v21); } v6 = word_14D21194; v30 = &off_6A86A4; v31 = v4 + 36484; v7 = *(_DWORD *)(v4 + 36484); if ( v4 == -160312 ) v8 = (*(int (**)(void))(v7 + 8))(); else v8 = (*(int (__stdcall **)(int))(v7 + 4))(v4 + 160312); v32 = v8; v30 = (int (**)())&off_6A86BC; v33 = v6; v25 = (int *)&v30; LOBYTE(v42) = 1; v26 = v4 + 58688; v27 = 9; if ( !sub_486D40(&v25) ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : no init item", 0); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 103); v42 = -1; LABEL_29: v30 = &off_6A86A4; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; goto LABEL_30; } v9 = (**(int (__stdcall ***)(_DWORD))v25[1])(v25[2]); v34 = v9; if ( !v9 ) { v24 = 0; v22 = (int)"ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : ItemInventoryCell Null"; LABEL_14: sub_639100(&unk_86DDD8, v22, v24); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 4, 103); v42 = -1; goto LABEL_29; } v10 = *(_DWORD *)(v9 + 112); v29 = v10; if ( !v10 ) { v24 = 0; v22 = (int)"ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : ItemAttributeClass Null"; goto LABEL_14; } memcpy(&v36, (const void *)v9, 0x6Cu); v39 = *(_WORD *)(v9 + 108); v40 = *(_BYTE *)(v9 + 110); v11 = v25[2]; v12 = (*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)v10 + 28))(v10, &v38); v35 = v11 & 0x3FF | 0x2400; v13 = off_849C18; v14 = v12; *(_WORD *)off_849C18 = 4305; *((_WORD *)v13 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v13 + 8) = sub_5164A0(v4); *((_BYTE *)v13 + 9) = *(_BYTE *)(v4 + 32748); *((_BYTE *)v13 + 10) = *(_BYTE *)(v4 + 32749); *((_BYTE *)v13 + 11) = *(_BYTE *)(v4 + 32750); v15 = v28; *((_BYTE *)v13 + 12) = *(_BYTE *)(v4 + 32751); *((_BYTE *)v13 + 13) = *(_BYTE *)(v4 + 32752); v16 = *(_BYTE *)(v15 + 2); if ( v16 >= 5u ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Invalid Stat", v16); goto LABEL_28; } if ( !*((_BYTE *)v13 + v16 + 9) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Already_0", v16); LABEL_28: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 4, 103); v42 = -1; goto LABEL_29; } --*((_BYTE *)v13 + v16 + 9); v17 = *(_WORD *)(v4 + 58692); *((_WORD *)v13 + 7) = v17; *((_BYTE *)v13 + 16) = 1; *(_DWORD *)((char *)v13 + 18) = v36; *(_DWORD *)((char *)v13 + 22) = v37; *((_WORD *)v13 + 13) = v38; *((_BYTE *)v13 + 28) = 1; if ( v14 > 1 ) { v18 = v29; *((_BYTE *)v13 + 17) = 0; (*(void (__stdcall **)(__int16 *))(*(_DWORD *)v18 + 32))(&v38); (*(void (__thiscall **)(int, _DWORD, int, int *, __int16 *, __int16 *))(*(_DWORD *)(v4 + 58688) + 64))( v4 + 58688, *((_WORD *)v13 + 7), v34, &v36, &v35, &v35); } else { *((_BYTE *)v13 + 17) = 1; (*(void (__thiscall **)(int, int, int, __int16 *))(*(_DWORD *)(v4 + 58688) + 48))(v4 + 58688, v17, v34, &v35); } if ( sub_4C81E0(&off_849C18, 29) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Packet Too Long", 29); } ++*(_WORD *)(v4 + 58692); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2764))(v4); --dword_750CB8; v30 = &off_6A86A4; v42 = -1; v21 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; return sub_467660((int)&unk_D020420, v21); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13258340: using guessed type __int16 word_13258340; // 13258344: using guessed type int dword_13258344; // 14D16430: using guessed type int dword_14D16430; // 14D21194: using guessed type __int16 word_14D21194; //----- (00589540) -------------------------------------------------------- int __stdcall sub_589540(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTSUC_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTSUC_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2032))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTSUC_DB_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00589630) -------------------------------------------------------- int __thiscall sub_589630(void *this, int a2) { unsigned int v2; // ST0C_4@1 int v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@1 int v5; // ST04_4@1 int v6; // edi@6 int v7; // eax@13 char v8; // al@15 char v9; // al@17 char v10; // al@19 char v11; // al@21 char v12; // al@23 int v13; // ecx@25 void *v14; // eax@25 int v15; // eax@27 char v17; // [sp+10h] [bp-110h]@4 unsigned int v18; // [sp+110h] [bp-10h]@1 int v19; // [sp+11Ch] [bp-4h]@1 int v20; // [sp+120h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v2 = (unsigned int)&v20 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v3 + 58688) + 28); v5 = *(_WORD *)(a2 + 7); v19 = 0; if ( !(unsigned __int8)v4(v3 + 58688, v3, v5, 0, v2) ) { if ( byte_7493ED ) { if ( byte_14D15494 ) { sprintf(&v17, "%.255s", "ShineObjectClass::ShinePlayer::so_ply_StatDecrease : "); sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fputs(&v17, dword_14D15310); } } v6 = *(_WORD *)(a2 + 7); if ( byte_7493ED ) { if ( byte_14D15494 ) { sub_418E40((__time32_t)byte_14D15210); if ( dword_14D15310 ) fprintf(dword_14D15310, "%d", v6); } if ( byte_7493ED && byte_14D15494 && dword_14D15310 ) { v7 = sub_418E40((__time32_t)byte_14D15210); sub_654AB0(10, (FILE *)v7); fflush(dword_14D15310); fclose(dword_14D15310); dword_14D15310 = 0; } } } switch ( *(_BYTE *)(a2 + 6) ) { case 0: v8 = *(_BYTE *)(v3 + 32748); if ( v8 ) *(_BYTE *)(v3 + 32748) = v8 - 1; goto LABEL_25; case 1: v9 = *(_BYTE *)(v3 + 32749); if ( v9 ) *(_BYTE *)(v3 + 32749) = v9 - 1; goto LABEL_25; case 2: v10 = *(_BYTE *)(v3 + 32750); if ( v10 ) *(_BYTE *)(v3 + 32750) = v10 - 1; goto LABEL_25; case 3: v11 = *(_BYTE *)(v3 + 32751); if ( v11 ) *(_BYTE *)(v3 + 32751) = v11 - 1; goto LABEL_25; case 4: v12 = *(_BYTE *)(v3 + 32752); if ( v12 ) *(_BYTE *)(v3 + 32752) = v12 - 1; LABEL_25: v13 = *(_DWORD *)(v3 + 4116); --*(_BYTE *)(v3 + 32753); sub_516340((void *)(v3 + 4120), v13, v3); v14 = off_849C18; *(_WORD *)off_849C18 = 4197; *((_BYTE *)v14 + 2) = *(_BYTE *)(a2 + 6); if ( sub_4C81E0(&off_849C18, 3) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v15 + 12))(v15, v3, &off_849C18); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1320))(v3); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1320))(v3); } break; default: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(a2 + 6)); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 4, 103, 2755); break; } --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D15494: using guessed type char byte_14D15494; //----- (00589910) -------------------------------------------------------- int __stdcall sub_589910(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 4, 103, *(_WORD *)(a1 + 10)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00589A00) -------------------------------------------------------- int __thiscall sub_589A00(void *this) { int v1; // esi@1 int v2; // edi@1 int v3; // ebx@1 int v4; // eax@1 void *v5; // ecx@3 int v6; // eax@5 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = 2 * (*(int (**)(void))(**(_DWORD **)(v1 + 4116) + 56))(); v3 = *(_WORD *)(dword_DA22E30[(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1240))(v1)] + v2 + 51); v4 = sub_44A190(v1); if ( v3 >= v4 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 4187; *((_BYTE *)v5 + 2) = v3 - v4; if ( sub_4C81E0(&off_849C18, 3) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_charbasedata : Packet Too Long", 3); } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_StatRemainSend : Too many StatPoint", v3 >= v4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22E30: using guessed type int dword_DA22E30[]; //----- (00589B40) -------------------------------------------------------- int __stdcall sub_589B40(int a1, int a2) { int v2; // esi@1 int v3; // ebx@3 char v4; // al@7 char v5; // dl@7 char v6; // cl@7 char v7; // al@7 int (__thiscall *v8)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@7 bool v9; // zf@7 int v10; // eax@7 void (__thiscall *v11)(_DWORD); // edx@8 int v13; // [sp-4h] [bp-2Ch]@1 int v14; // [sp+0h] [bp-28h]@7 int v15; // [sp+10h] [bp-18h]@7 __int16 v16; // [sp+14h] [bp-14h]@7 int v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@1 v17 = (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK"; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v13 = *(_WORD *)(a1 + 2); v18 = 0; v2 = sub_54DE90(&unk_13253630, v13); if ( v2 ) { v3 = *(_DWORD *)(a1 + 4); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) == 1 ) { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK : shine empty", 0); } else { v4 = *(_BYTE *)(a1 + 8); v5 = *(_BYTE *)(a1 + 10); BYTE1(v15) = *(_BYTE *)(a1 + 9); v6 = *(_BYTE *)(a1 + 12); LOBYTE(v15) = v4; v7 = *(_BYTE *)(a1 + 11); BYTE2(v15) = v5; v8 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2756); LOBYTE(v16) = v6; BYTE3(v15) = v7; LOWORD(v13) = v16; v9 = v8(v2, v15, v13, v14) == 0; v10 = *(_DWORD *)v2; v14 = a1 + 2; if ( v9 ) v11 = *(void (__thiscall **)(_DWORD))(v10 + 2772); else v11 = *(void (__thiscall **)(_DWORD))(v10 + 2776); v11(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2768))(v2); } } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK : CharNo ", v3); } v13 = (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK"; } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK : Player Object NULL", 0); v13 = (int)"GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK"; } --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00589CD0) -------------------------------------------------------- void *__thiscall sub_589CD0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 77, 70) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 77, 77, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00589D70) -------------------------------------------------------- void *__thiscall sub_589D70(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6EEBD0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6EEBD0: using guessed type int (__thiscall *off_6EEBD0)(void *, char); //----- (00589DA0) -------------------------------------------------------- int __stdcall sub_589DA0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_3A83A83 || (result = operator new(70 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00589E00) -------------------------------------------------------- void *__cdecl sub_589E00(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 70 ) { if ( result ) memcpy(result, v3, 0x46u); v3 = (char *)v3 + 70; } return result; } //----- (00589E40) -------------------------------------------------------- void *__cdecl sub_589E40(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 70 ) { if ( result ) memcpy(result, v3, 0x46u); v3 = (char *)v3 + 70; } return result; } //----- (00589E80) -------------------------------------------------------- int __thiscall sub_589E80(int this, __int16 a2) { int result; // eax@2 int v3; // ecx@2 if ( a2 == -1 || (result = *(_DWORD *)this, v3 = *(_DWORD *)(this + 4), result == v3) ) { LABEL_5: result = 0; } else { while ( a2 != *(_WORD *)result ) { result += 20; if ( result == v3 ) goto LABEL_5; } } return result; } //----- (00589EC0) -------------------------------------------------------- int __cdecl sub_589EC0(int a1, int a2) { int v2; // ebx@2 int result; // eax@5 char v4; // [sp+0h] [bp-48h]@3 __int16 v5; // [sp+44h] [bp-4h]@4 if ( a2 ) { v2 = a1; do { memset(&v4, 0, 0x46u); if ( v2 ) { memcpy((void *)v2, &v4, 0x44u); *(_WORD *)(v2 + 68) = v5; } result = a2 - 1; v2 += 70; a2 = result; } while ( result ); } return result; } //----- (00589F10) -------------------------------------------------------- int __thiscall sub_589F10(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_3A83A83 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 70; if ( result < a2 ) { v4 = sub_589DA0(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v12 = v4; v14 = 0; sub_589E00(v6, v5, (void *)v4); v7 = (signed int)(*(_DWORD *)(v2 + 4) - *(_DWORD *)v2 + ((unsigned __int64)(-368140053i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32)) >> 6; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); v9 = v12; result = v12 + 70 * a2; v10 = v12 + 70 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (00589FED) -------------------------------------------------------- void __usercall sub_589FED(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0058A010) -------------------------------------------------------- int __thiscall sub_58A010(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 const void *v5; // ecx@4 const void *v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 70; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_3A83A83 ) sub_65178B((int)"vector too long"); v4 = sub_589DA0(v3); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 70 * v3; v5 = *(const void **)(a2 + 4); v6 = *(const void **)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_589E40(v6, v5, (void *)v4); } return v2; } //----- (0058A0D4) -------------------------------------------------------- void __usercall sub_58A0D4(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0058A0F0) -------------------------------------------------------- int __thiscall sub_58A0F0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 70; if ( (unsigned int)((char *)&unk_3A83A83 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 70; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_3A83A83 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_589F10(this, v5); } return result; } //----- (0058A170) -------------------------------------------------------- int __thiscall sub_58A170(int this, unsigned int a2) { int v2; // ebx@1 int v3; // edi@1 signed int v4; // ecx@1 int result; // eax@1 unsigned int v6; // edx@3 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; result = v4 / 70; if ( v4 / 70 <= a2 ) { if ( v4 / 70 < a2 ) { sub_58A0F0(v2, a2 - result); sub_589EC0(*(_DWORD *)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 70); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 70; *(_DWORD *)(v2 + 4) += 70 * (a2 - result); } } else { if ( *(_DWORD *)v2 + 70 * a2 != v3 ) { v6 = *(_DWORD *)v2 + 70 * a2; result = v3; *(_DWORD *)(v2 + 4) = v6; } } return result; } //----- (0058A250) -------------------------------------------------------- void __thiscall sub_58A250(int this, const void *a2) { const void *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 void *v7; // edi@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( (unsigned int)a2 >= v4 || *(_DWORD *)v3 > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(v3 + 8) ) sub_58A0F0(v3, 1); } else { v5 = (signed int)((char *)a2 + ((unsigned __int64)(-368140053i64 * (signed int)((char *)a2 - *(_DWORD *)v3)) >> 32) - *(_DWORD *)v3) >> 6; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_58A0F0(v3, 1); v2 = (const void *)(*(_DWORD *)v3 + 70 * v6); } v7 = *(void **)(v3 + 4); if ( v7 ) memcpy(v7, v2, 0x46u); *(_DWORD *)(v3 + 4) += 70; } //----- (0058A2C0) -------------------------------------------------------- int __cdecl sub_58A2C0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_WORD *)v3 = *(_WORD *)v4; sub_58A010(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (0058A370) -------------------------------------------------------- int __thiscall sub_58A370(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_58A2C0(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_492FC0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (0058A45B) -------------------------------------------------------- void __usercall sub_58A45B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0058A480) -------------------------------------------------------- int __thiscall sub_58A480(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_58A370(this, v5); } return result; } //----- (0058A500) -------------------------------------------------------- int __thiscall sub_58A500(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_58A480(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_WORD *)result = *(_WORD *)a2; v8 = a2 + 4; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_58A480(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_WORD *)result = *(_WORD *)v6; v8 = v6 + 4; LABEL_11: result = sub_58A010(result + 4, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 20; return result; } //----- (0058A5D0) -------------------------------------------------------- char __thiscall sub_58A5D0(void *this) { void *v1; // edi@1 unsigned int v2; // eax@1 int v3; // esi@2 int v4; // edi@2 int v5; // eax@3 int v6; // ecx@3 int v7; // edx@3 int v8; // ebx@4 int v10; // edi@11 __int16 v11; // si@13 int v12; // eax@14 int v13; // ebx@14 int v14; // eax@16 int v15; // eax@18 int v16; // eax@21 int v17; // [sp-Ch] [bp-D0h]@23 int v18; // [sp-8h] [bp-CCh]@23 __int16 v19; // [sp+Ch] [bp-B8h]@19 int v20; // [sp+10h] [bp-B4h]@19 int v21; // [sp+14h] [bp-B0h]@19 int v22; // [sp+18h] [bp-ACh]@19 unsigned int v23; // [sp+20h] [bp-A4h]@1 unsigned int v24; // [sp+24h] [bp-A0h]@1 void *v25; // [sp+28h] [bp-9Ch]@1 int (__thiscall **v26)(void *, char); // [sp+2Ch] [bp-98h]@1 int v27; // [sp+60h] [bp-64h]@1 char v28; // [sp+6Ch] [bp-58h]@1 unsigned int v29; // [sp+B4h] [bp-10h]@1 int v30; // [sp+C0h] [bp-4h]@1 int v31; // [sp+C4h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v1 = this; v25 = this; sub_639920((int)&v26); v26 = &off_6EEBD0; memset(&v28, 0, 0x46u); v30 = 0; sub_589CD0(&v26, "../9Data/Shine/StateItem.shn"); v2 = 0; v23 = *(_DWORD *)(v27 + 40); v24 = 0; if ( (signed int)v23 > 0 ) { while ( 1 ) { if ( v2 < *(_DWORD *)(v27 + 40) ) v10 = sub_626BC0((int)&v26, v2); else v10 = (int)&v28; v11 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v10); if ( v11 == -1 ) { v18 = v10; v17 = (int)"cStateItemDataBox::sidb_Load : not found item id "; goto LABEL_24; } v12 = sub_418CB0((int)&dword_14D20890, v11); v13 = v12; if ( !v12 || !*(_DWORD *)v12 ) { v18 = v10; v17 = (int)"cStateItemDataBox::sidb_Load : not found item data "; goto LABEL_24; } v14 = sub_639670(&byte_878354, v10 + 32); if ( v14 == -1 ) { v18 = v10 + 32; v17 = (int)"cStateItemDataBox::sidb_Load : not found abstate enum"; goto LABEL_24; } if ( !sub_401310(&unk_877138, v14) ) break; v15 = sub_589E80((int)v25, v11); if ( v15 ) { sub_58A250(v15 + 4, (const void *)v10); } else { v20 = 0; v21 = 0; v22 = 0; LOBYTE(v30) = 1; v19 = v11; sub_58A170((int)&v20, 0); sub_58A250((int)&v20, (const void *)v10); sub_58A500((int)v25, (unsigned int)&v19); LOBYTE(v30) = 0; sub_5C4DE0((int)&v19); } v16 = (int)sub_59A6B0(*(_DWORD *)v13 + 310); sub_594070((int)&dword_13258868, v11, (int)off_86AD3C, v16); ++v24; if ( (signed int)v24 >= (signed int)v23 ) { v1 = v25; goto LABEL_2; } v2 = v24; } v18 = v10 + 32; v17 = (int)"cStateItemDataBox::sidb_Load : not found abstate data"; LABEL_24: sub_6390B0(&unk_86DDD8, v17, v18); } else { LABEL_2: v3 = *(_DWORD *)v1; v4 = *((_DWORD *)v1 + 1); if ( v3 == v4 ) { LABEL_7: v30 = -1; v26 = &off_6EEBD0; sub_639940((int)&v26); return 1; } while ( 1 ) { v5 = *(_DWORD *)(v3 + 4); v6 = *(_DWORD *)(v3 + 8); v7 = 0; if ( v5 == v6 ) break; do { v8 = *(_WORD *)(v5 + 68); v5 += 70; v7 += v8; } while ( v5 != v6 ); if ( v7 != 1000 ) break; v3 += 20; if ( v3 == v4 ) goto LABEL_7; } sub_639100(&unk_86DDD8, (int)"cStateItemDataBox::sidb_Load : total suc rate error", v7); } v30 = -1; v26 = &off_6EEBD0; sub_639940((int)&v26); return 0; } // 6EEBD0: using guessed type int (__thiscall *off_6EEBD0)(void *, char); // 86AD3C: using guessed type int (__thiscall *off_86AD3C[2])(void *, char); // 86FEB8: using guessed type int __security_cookie; // 13258868: using guessed type int dword_13258868; // 14D20890: using guessed type int dword_14D20890; //----- (0058A880) -------------------------------------------------------- int __thiscall sub_58A880(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6EED04; *(_BYTE *)(this + 34) = 0; return result; } // 6EED04: using guessed type int (*off_6EED04)(); //----- (0058A8A0) -------------------------------------------------------- int __thiscall sub_58A8A0(int this, int a2) { __int16 v2; // ax@1 int result; // eax@4 int v4; // ecx@5 int v5; // eax@5 int v6; // ecx@5 v2 = ***(_WORD ***)(this + 8168); if ( v2 == 5606 || v2 == 5607 || v2 == 5700 ) { v4 = *(_DWORD *)(this + 102); v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 4) - *(_DWORD *)(a2 + 4); result = (unsigned int)((v5 - *(_DWORD *)a2) * (v5 - *(_DWORD *)a2) + v6 * v6) > 0x7E9; } else { result = 0; } return result; } //----- (0058A900) -------------------------------------------------------- signed int __thiscall sub_58A900(void *this, int a2) { 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 + 1156))() == 5 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2) == 4 ) { v4 = *(_DWORD *)((char *)v2 + 102); v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 4) - *(_DWORD *)(a2 + 4); result = (unsigned int)((v5 - *(_DWORD *)a2) * (v5 - *(_DWORD *)a2) + v6 * v6) > 0x7E9; } else { result = 1; } return result; } //----- (0058A960) -------------------------------------------------------- bool __thiscall sub_58A960(int this, int a2) { int v2; // ecx@1 int v3; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 102); v3 = *(_DWORD *)v2; v4 = *(_DWORD *)(v2 + 4) - *(_DWORD *)(a2 + 4); return (unsigned int)((v3 - *(_DWORD *)a2) * (v3 - *(_DWORD *)a2) + v4 * v4) > 0x7E9; } //----- (0058A990) -------------------------------------------------------- FILE *__stdcall sub_58A990(int a1, __int16 a2) { void *v2; // eax@1 FILE *result; // eax@2 int v4; // eax@3 v2 = off_849C18; *(_WORD *)off_849C18 = 26635; *((_WORD *)v2 + 1) = a2; if ( sub_4C81E0(&off_849C18, 7) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a1, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sb_RefreshError : Packet Too Long", 7); } return result; } //----- (0058AA00) -------------------------------------------------------- int __thiscall sub_58AA00(int this, int a2, int a3, int a4) { int result; // eax@1 result = *(_DWORD *)(this + 3828); if ( *(_BYTE *)result == 5 ) result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)(this + 155612) + 24))(a2, a3, a4); return result; } //----- (0058AA20) -------------------------------------------------------- int __thiscall sub_58AA20(int this, int a2, int a3) { int result; // eax@1 result = *(_DWORD *)(this + 3828); if ( *(_BYTE *)result == 5 ) result = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(**(_DWORD **)(this + 155612) + 28))( *(_DWORD *)(this + 155612), this, a2, a3); return result; } //----- (0058AA50) -------------------------------------------------------- int __thiscall sub_58AA50(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 155612) + 32))(); } //----- (0058AA60) -------------------------------------------------------- int __thiscall sub_58AA60(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sb_Clear"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sb_Clear"; dword_750AB8[dword_750CB8++] = -1; *((_WORD *)v2 + 180) = (*(_WORD *)(a2 + 4))++; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sb_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058AAD0) -------------------------------------------------------- int __thiscall sub_58AAD0(void *this, int a2) { void *v2; // esi@1 int v4; // [sp+0h] [bp-18h]@0 int v5; // [sp+4h] [bp-14h]@0 int v6; // [sp+Ch] [bp-Ch]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sb_Close"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sb_Close"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(_DWORD, int, int, _DWORD, int))(*(_DWORD *)a2 + 40))( *((_WORD *)v2 + 180), v4, v5, "StreetBoothSell::sb_Close", v6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sb_Close"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058AB80) -------------------------------------------------------- int __thiscall sub_58AB80(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sb_Clear"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sb_Clear"; dword_750AB8[dword_750CB8++] = -1; v2 = (int)((char *)v1 + 44); v3 = 20; do { *(_DWORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sb_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058AC00) -------------------------------------------------------- int __thiscall sub_58AC00(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sb_Clear"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sb_Clear"; dword_750AB8[dword_750CB8++] = -1; v2 = (int)((char *)v1 + 40); v3 = 20; do { *(_WORD *)v2 = -1; v2 += 16; --v3; } while ( v3 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sb_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058AC80) -------------------------------------------------------- int __thiscall sub_58AC80(void *this, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v6; // ebx@1 int v7; // eax@5 v5 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sb_Boarding"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sb_Boarding"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_BYTE *)(a4 + 1); if ( *(_BYTE *)(a4 + 1) < (*(int (**)(void))(*(_DWORD *)a5 + 1172))() ) { if ( *((_DWORD *)v5 + 4 * *(_BYTE *)(a4 + 1) + 11) ) { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_Boarding : Duplicate board", *(_BYTE *)(a4 + 1)); } else { *((_BYTE *)v5 + 16 * *(_BYTE *)(a4 + 1) + 40) = *(_BYTE *)a4; *((_DWORD *)v5 + 4 * *(_BYTE *)(a4 + 1) + 11) = a3; v7 = 2 * (*(_BYTE *)(a4 + 1) + 3); *((_DWORD *)v5 + 4 * (*(_BYTE *)(a4 + 1) + 3)) = *(_DWORD *)(a4 + 2); *((_DWORD *)v5 + 2 * v7 + 1) = *(_DWORD *)(a4 + 6); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 44))(*((_WORD *)v5 + 180), 9, *(_BYTE *)a4); } } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_Boarding : Too many board", v6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sb_Boarding"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058ADC0) -------------------------------------------------------- int __thiscall sub_58ADC0(void *this, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v6; // ebx@1 int v7; // eax@5 v5 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sb_Boarding"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sb_Boarding"; dword_750AB8[dword_750CB8++] = -1; v6 = *(_BYTE *)(a4 + 1); if ( *(_BYTE *)(a4 + 1) < (*(int (**)(void))(*(_DWORD *)a5 + 1172))() ) { if ( *((_WORD *)v5 + 8 * *(_BYTE *)(a4 + 1) + 20) == -1 ) { *((_WORD *)v5 + 8 * *(_BYTE *)(a4 + 1) + 20) = *(_WORD *)(a3 + 8); *((_WORD *)v5 + 8 * *(_BYTE *)(a4 + 1) + 21) = *(_WORD *)(a4 + 10); v7 = 2 * (*(_BYTE *)(a4 + 1) + 3); *((_DWORD *)v5 + 4 * (*(_BYTE *)(a4 + 1) + 3)) = *(_DWORD *)(a4 + 2); *((_DWORD *)v5 + 2 * v7 + 1) = *(_DWORD *)(a4 + 6); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_Boarding : Duplicate board", *(_BYTE *)(a4 + 1)); } } else { sub_639100(&unk_86DDD8, (int)"StreetBoothBuy::sbs_Boarding : Too many board", v6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sb_Boarding"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058AF00) -------------------------------------------------------- char __thiscall sub_58AF00(void *this, int a2, int a3) { void *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_TentPoint"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_TentPoint"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v3 + 1896))(v3, *(_DWORD *)(a2 + 102)); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_TentPoint"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058AFE0) -------------------------------------------------------- int __thiscall sub_58AFE0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@5 char v7; // [sp+8h] [bp-110h]@8 unsigned int v8; // [sp+108h] [bp-10h]@1 int v9; // [sp+114h] [bp-4h]@1 int v10; // [sp+118h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_CMD"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( !(dword_13258758 & 1) ) { dword_13258758 |= 1u; word_13258754 = 32; atexit(nullsub_159); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258754 ) { sub_590F40(v4); v5 = *(_DWORD *)((char *)v4 + 122); if ( v5 && v5 != -468 && !sub_43AEF0(v5 + 468, *((_WORD *)v4 + 2)) ) { sprintf(&v7, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_REQ - »"); sub_6390B0(&unk_86DDD8, (int)&v7, (int)byte_6A492E); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 5, 2628); } --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13258754: using guessed type __int16 word_13258754; // 13258758: using guessed type int dword_13258758; //----- (0058B140) -------------------------------------------------------- int __thiscall sub_58B140(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 bool v6; // zf@3 int v7; // eax@7 int v8; // edi@7 int v10; // [sp-4h] [bp-24h]@2 signed int v11; // [sp-4h] [bp-24h]@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 38903) ) { v6 = (dword_13258760 & 1) == 0; *((_DWORD *)v4 + 38902) = dword_14D129E8; if ( v6 ) { dword_13258760 |= 1u; word_1325875C = 6; atexit(nullsub_160); v5 = 1; } if ( !((v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1325875C) ) { (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 38903) + 4))(v4, 2626); v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ"; LABEL_15: --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } v7 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); v8 = v7; if ( v7 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1156))(v7) == 5 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2540))(v8) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 1992))(v8, v8, v4, 0); LABEL_14: v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ"; goto LABEL_15; } v11 = 2651; } else { v11 = 2630; } (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 38903) + 4))(v4, v11); goto LABEL_14; } --dword_750CB8; v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ"; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325875C: using guessed type __int16 word_1325875C; // 13258760: using guessed type int dword_13258760; // 14D129E8: using guessed type int dword_14D129E8; //----- (0058B2C0) -------------------------------------------------------- int __thiscall sub_58B2C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edi@5 int v7; // [sp-4h] [bp-24h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258768 & 1) ) { dword_13258768 |= 1u; word_13258764 = 70; atexit(nullsub_161); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258764 ) { v5 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); if ( v5 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1156))(v5) == 5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2540))(v5) ) { (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 38903) + 4))(v4, 2651); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1992))(v5, v5, v4, 1); *((_DWORD *)v4 + 38902) = dword_14D129E8; } } else { (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 38903) + 4))(v4, 2630); } v7 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ"; } else { (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)v4 + 38903) + 4))(v4, 2626); v7 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258764: using guessed type __int16 word_13258764; // 13258768: using guessed type int dword_13258768; // 14D129E8: using guessed type int dword_14D129E8; //----- (0058B430) -------------------------------------------------------- int __thiscall sub_58B430(void *this, int a2, int a3, char a4) { void *v4; // edi@1 void *v5; // esi@1 int v6; // ebx@1 int v7; // edi@2 int v8; // eax@4 int v9; // esi@6 int v10; // eax@8 v4 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sb_Show2Client"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sb_Show2Client"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; v6 = 0; *(_WORD *)off_849C18 = (a4 != 0 ? 9 : 12) & 0x3FF | 0x6800; *((_WORD *)v5 + 1) = 2625; *((_WORD *)v5 + 2) = *((_WORD *)v4 + 18); *((_BYTE *)v5 + 6) = 0; if ( (*(int (**)(void))(*(_DWORD *)a2 + 1172))() > 0 ) { v7 = (int)((char *)v4 + 40); do { if ( *(_WORD *)v7 != -1 ) { *((_BYTE *)v5 + 13 * *((_BYTE *)v5 + 6) + 7) = v6; *(_WORD *)((char *)v5 + 13 * *((_BYTE *)v5 + 6) + 8) = *(_WORD *)v7; v8 = 13 * *((_BYTE *)v5 + 6); *(_DWORD *)((char *)v5 + v8 + 10) = *(_DWORD *)(v7 + 8); *(_DWORD *)((char *)v5 + v8 + 14) = *(_DWORD *)(v7 + 12); *(_WORD *)((char *)v5 + 13 * (*((_BYTE *)v5 + 6))++ + 18) = *(_WORD *)(v7 + 2); } ++v6; v7 += 16; } while ( v6 < (*(int (**)(void))(*(_DWORD *)a2 + 1172))() ); } v9 = 13 * *((_BYTE *)v5 + 6) + 7; if ( sub_4C81E0(&off_849C18, v9) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12))(v10, a3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sb_Show2Client : Packet Too Long", v9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sb_Show2Client"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058B5C0) -------------------------------------------------------- int __thiscall sub_58B5C0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // edi@1 int v6; // esi@1 int v7; // ebx@2 int v8; // ecx@3 unsigned __int8 v9; // al@6 int v11; // [sp+14h] [bp-10h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sbs_FillBufferItem"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sbs_FillBufferItem"; dword_750AB8[dword_750CB8++] = -1; v5 = a2; v6 = a4; *(_BYTE *)a3 = 0; v11 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1172))(a2) > 0 ) { v7 = (int)((char *)v4 + 44); do { v8 = *(_DWORD *)v7; if ( *(_DWORD *)v7 ) { if ( *(_WORD *)(v8 + 8) == -1 ) { *(_DWORD *)v7 = 0; } else { *(_BYTE *)(v6 + 1) = v11; *(_DWORD *)(v6 + 2) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v6 + 6) = *(_DWORD *)(v7 + 8); v5 = a2; v9 = sub_63D090((void *)v8, *(_DWORD *)(v8 + 112), *(_WORD *)(v8 + 8), v6 + 10) - (v6 + 10) + 9; *(_BYTE *)v6 = v9; ++*(_BYTE *)a3; v6 += v9 + 1; } } ++v11; v7 += 16; } while ( v11 < (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1172))(v5) ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sbs_FillBufferItem"); return v6 - a4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058B6F0) -------------------------------------------------------- int __thiscall sub_58B6F0(void *this, int a2, int a3, int a4) { int v4; // esi@1 __int16 v5; // ST08_2@5 int v6; // eax@5 int v7; // edi@5 int v8; // eax@8 signed int v10; // [sp-Ch] [bp-2Ch]@14 signed int v11; // [sp-8h] [bp-28h]@14 int v12; // [sp-4h] [bp-24h]@4 signed int v13; // [sp-4h] [bp-24h]@14 int v14; // [sp+28h] [bp+8h]@5 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258770 & 1) ) { dword_13258770 |= 1u; word_1325876C = 70; atexit(nullsub_162); } if ( (1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_1325876C ) { v5 = *(_WORD *)(a2 + 2); v14 = a2 + 2; v6 = sub_54DE90(&unk_13253630, v5); v7 = v6; if ( v6 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1156))(v6) == 5 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2004))(v7); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 16))(v8) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2540))(v7) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 4, 2651); } else { if ( (unsigned int)sub_402710(v4, v7) < 0x15F90 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 1996))(v7, v4, v14); else (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 26, 14, 2636); } goto LABEL_17; } } v13 = 516; v11 = 4; v10 = 12; } else { v13 = 2626; v11 = 14; v10 = 26; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, v10, v11, v13); LABEL_17: v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ"; goto LABEL_18; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 26, 14, 2626); v12 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ"; LABEL_18: --dword_750CB8; return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325876C: using guessed type __int16 word_1325876C; // 13258770: using guessed type int dword_13258770; //----- (0058B8D0) -------------------------------------------------------- void *__thiscall sub_58B8D0(void *this, const char *a2) { void *v2; // esi@1 const char *v3; // edx@1 unsigned int v4; // eax@1 int v5; // ecx@1 int v6; // edi@2 const char v7; // cl@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(char *str)"); v3 = a2; dword_7508B8[dword_750CB8] = (int)"StringMaker::Maker::operator <<(char *str)"; dword_750AB8[dword_750CB8++] = -1; v4 = strlen(a2); v5 = *((_DWORD *)v2 + 256); if ( v5 + v4 + 1 < 0x400 ) { v6 = (int)((char *)v2 + v5); do { v7 = *v3; *(_BYTE *)v6++ = *v3++; } while ( v7 ); *((_DWORD *)v2 + 256) += v4; *((_BYTE *)v2 + *((_DWORD *)v2 + 256)) = 0; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(char *str)"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058B970) -------------------------------------------------------- void *__thiscall sub_58B970(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(char chr)"); dword_7508B8[dword_750CB8] = (int)"StringMaker::Maker::operator <<(char chr)"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 256); if ( (unsigned int)(v3 + 2) < 0x400 ) { *((_BYTE *)v2 + v3) = a2; ++*((_DWORD *)v2 + 256); *((_BYTE *)v2 + *((_DWORD *)v2 + 256)) = 0; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(char chr)"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058BA00) -------------------------------------------------------- void *__thiscall sub_58BA00(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 void *v4; // esi@1 char v6; // [sp+8h] [bp-30h]@1 unsigned int v7; // [sp+28h] [bp-10h]@1 int v8; // [sp+34h] [bp-4h]@1 int v9; // [sp+38h] [bp+0h]@1 v7 = (unsigned int)&v9 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(int num)"); dword_7508B8[dword_750CB8] = (int)"StringMaker::Maker::operator <<(int num)"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; sprintf(&v6, "%d", a2); v3 = sub_58B8D0(v2, &v6); --dword_750CB8; v4 = v3; v8 = -1; sub_467660((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(int num)"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0058BAD0) -------------------------------------------------------- void *__thiscall sub_58BAD0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 _BYTE *v4; // eax@1 void *v5; // eax@1 void *v6; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(Name3 *id)"); dword_7508B8[dword_750CB8] = (int)"StringMaker::Maker::operator <<(Name3 *id)"; dword_750AB8[dword_750CB8++] = -1; v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)a2; *((_DWORD *)v4 + 1) = *(_DWORD *)(a2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(a2 + 8); v4[12] = 0; v5 = sub_58B8D0(v2, v4); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(Name3 *id)"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0058BBB0) -------------------------------------------------------- void *__thiscall sub_58BBB0(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 void *v4; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(ItemInventoryCell *iic)"); dword_7508B8[dword_750CB8] = (int)"StringMaker::Maker::operator <<(ItemInventoryCell *iic)"; dword_750AB8[dword_750CB8++] = -1; v3 = sub_58BA00(v2, *(_WORD *)(a2 + 8)); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(ItemInventoryCell *iic)"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058BC60) -------------------------------------------------------- void *__thiscall sub_58BC60(void *this, int a2) { void *v2; // esi@1 int v4; // [sp+0h] [bp-18h]@0 int v5; // [sp+4h] [bp-14h]@0 int v6; // [sp+Ch] [bp-Ch]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(Finisher &fin)"); dword_7508B8[dword_750CB8] = (int)"StringMaker::Maker::operator <<(Finisher &fin)"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(void *, int, int, _DWORD, int))(**(_DWORD **)a2 + 1924))( v2, v4, v5, "StringMaker::Maker::operator <<(Finisher &fin)", v6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"StringMaker::Maker::operator <<(Finisher &fin)"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058BD10) -------------------------------------------------------- int __stdcall sub_58BD10(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_SendInform2Admin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_SendInform2Admin"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_SendInform2Admin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058BD60) -------------------------------------------------------- int __thiscall sub_58BD60(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 _BYTE *v5; // ecx@1 const char *v6; // ST10_4@1 void *v7; // eax@1 void *v8; // eax@1 int v9; // ST10_4@1 void *v10; // eax@1 void *v11; // eax@1 int v12; // ST10_4@1 void *v13; // eax@1 void *v14; // eax@1 int v15; // eax@1 int v16; // ecx@3 int v17; // ST10_4@3 int v18; // ST08_4@3 void *v19; // eax@3 void *v20; // eax@3 void *v21; // eax@3 void *v22; // eax@3 void *v23; // eax@3 int v24; // eax@4 int v25; // ST18_4@4 void *v26; // eax@4 void *v27; // eax@4 void *v28; // eax@4 void *v29; // eax@4 char v31; // [sp+4h] [bp-18h]@0 int v32; // [sp+8h] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SendInform2Admin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::so_SendInform2Admin"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1388))(v2); v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v6 = v5; *((_DWORD *)v5 + 4) = *(_DWORD *)(v3 + 16); v5[20] = 0; dword_13258750 = 0; v7 = sub_58B8D0(&unk_13258350, "Name : "); v8 = sub_58B8D0(v7, v6); sub_58BC60(v8, (int)&a2); dword_13258750 = 0; v9 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); v10 = sub_58B8D0(&unk_13258350, "Level : "); v11 = sub_58BA00(v10, v9); sub_58BC60(v11, (int)&a2); dword_13258750 = 0; v12 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2); v13 = sub_58B8D0(&unk_13258350, "Mode : "); v14 = sub_58BA00(v13, v12); sub_58BC60(v14, (int)&a2); dword_13258750 = 0; sub_58B8D0(&unk_13258350, "Location : "); v15 = *(_DWORD *)((char *)v2 + 122); if ( v15 ) { v16 = *(_DWORD *)((char *)v2 + 102); v17 = *(_DWORD *)(v16 + 4); v18 = *(_DWORD *)v16; v19 = sub_58BAD0(&unk_13258350, v15); v20 = sub_58B970(v19, 47); v21 = sub_58BA00(v20, v18); v22 = sub_58B970(v21, 47); v23 = sub_58BA00(v22, v17); sub_58BC60(v23, (int)&a2); } else { sub_58B8D0(&unk_13258350, "Null"); } dword_13258750 = 0; v24 = (*(int (__thiscall **)(void *, int *))(*(_DWORD *)v2 + 1264))(v2, &a2); v25 = (*(int (__thiscall **)(void *, signed int, int))(*(_DWORD *)v2 + 1256))(v2, 47, v24); v26 = sub_58B8D0(&unk_13258350, "HP : "); v27 = sub_58BA00(v26, v25); v28 = sub_58B970(v27, v31); v29 = sub_58BA00(v28, v32); sub_58BC60(v29, (int)"ShineObjectClass::ShineMobileObject::so_SendInform2Admin"); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::so_SendInform2Admin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13258750: using guessed type int dword_13258750; //----- (0058BFA0) -------------------------------------------------------- int __thiscall sub_58BFA0(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int (__stdcall *v4)(_DWORD); // edx@1 int v5; // ST08_4@1 void *v6; // eax@1 void *v7; // eax@1 int v8; // eax@1 void *v9; // eax@2 int *v10; // eax@3 int v11; // eax@7 int v12; // ST08_4@7 void *v13; // eax@7 void *v14; // eax@7 int v15; // eax@9 int v16; // ST0C_4@9 void *v17; // eax@9 void *v18; // eax@12 void *v19; // eax@12 void *v20; // eax@12 const char *v21; // ST04_4@12 void *v22; // eax@12 void *v23; // eax@12 void *v24; // eax@12 int v25; // eax@12 const char *v26; // ST04_4@13 void *v27; // eax@13 void *v28; // eax@13 void *v29; // eax@13 int v30; // esi@15 int v31; // ST08_4@15 void *v32; // eax@15 void *v33; // eax@15 const char *v35; // [sp-Ch] [bp-2Ch]@10 char v36; // [sp-8h] [bp-28h]@10 int v37; // [sp-4h] [bp-24h]@2 int v38; // [sp-4h] [bp-24h]@10 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SendInform2Admin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_SendInform2Admin"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; sub_58BD60(v2, a2); dword_13258750 = 0; v4 = (int (__stdcall *)(_DWORD))**((_DWORD **)v2 + 13444); a2 = v3; v5 = v4(0); v6 = sub_58B8D0(&unk_13258350, "MiniHouse(Inven) : "); v7 = sub_58BBB0(v6, v5); sub_58BC60(v7, (int)&a2); dword_13258750 = 0; sub_58B8D0(&unk_13258350, "MiniHouse(SkinHandle) : "); v8 = *((_DWORD *)v2 + 38876); if ( v8 ) { v10 = *(int **)(v8 + 4); if ( v10 ) { v37 = (int)&a2; v9 = sub_58BA00(&unk_13258350, *(_WORD *)v10); } else { v37 = (int)&a2; v9 = sub_58B8D0(&unk_13258350, "NULL Data"); } } else { v37 = (int)&a2; v9 = sub_58B8D0(&unk_13258350, "NULL handle"); } sub_58BC60(v9, v37); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2) == 4 ) { v11 = *(_DWORD *)((char *)v2 + 32650); dword_13258750 = 0; v12 = *(_WORD *)(v11 + 37); v13 = sub_58B8D0(&unk_13258350, "MiniHouse(Brief:Camp) : "); v14 = sub_58BA00(v13, v12); sub_58BC60(v14, (int)&a2); } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2) == 5 ) { v15 = *(_DWORD *)((char *)v2 + 32650); dword_13258750 = 0; v16 = *(_WORD *)(v15 + 37); v17 = sub_58B8D0(&unk_13258350, "MiniHouse(Brief:Booth) : "); sub_58BA00(v17, v16); if ( *((_DWORD *)v2 + 38903) ) { v38 = (int)&a2; v36 = 93; v35 = (const char *)(***((int (****)(void))v2 + 38903))(); } else { v38 = (int)&a2; v36 = 93; v35 = "NULL"; } v18 = sub_58B970(&unk_13258350, 91); v19 = sub_58B8D0(v18, v35); v20 = sub_58B970(v19, v36); sub_58BC60(v20, v38); v21 = (const char *)(*(_DWORD *)((char *)v2 + 32650) + 50); dword_13258750 = 0; v22 = sub_58B8D0(&unk_13258350, " ["); v23 = sub_58B8D0(v22, v21); v24 = sub_58B970(v23, 93); sub_58BC60(v24, (int)&a2); v25 = *((_DWORD *)v2 + 38903); if ( v25 ) { v26 = (const char *)(v25 + 4); dword_13258750 = 0; v27 = sub_58B8D0(&unk_13258350, " ["); v28 = sub_58B8D0(v27, v26); v29 = sub_58B970(v28, 93); sub_58BC60(v29, (int)&a2); } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1156))(v2) == 6 ) { v30 = *(_DWORD *)((char *)v2 + 32650); dword_13258750 = 0; v31 = *(_WORD *)(v30 + 80); v32 = sub_58B8D0(&unk_13258350, "Riding(Brief:Camp) : "); v33 = sub_58BA00(v32, v31); sub_58BC60(v33, (int)&a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_SendInform2Admin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258750: using guessed type int dword_13258750; //----- (0058C260) -------------------------------------------------------- int __thiscall sub_58C260(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_SendInform2Admin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_SendInform2Admin"; dword_750AB8[dword_750CB8++] = -1; sub_58BD60(v2, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_SendInform2Admin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058C310) -------------------------------------------------------- int __thiscall sub_58C310(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edi@6 int v6; // eax@6 int v7; // edi@6 int v8; // eax@6 void *v9; // edi@6 int v10; // eax@6 int v11; // ST04_4@6 int v12; // eax@6 void *v13; // eax@6 int v14; // eax@6 char v16; // [sp+10h] [bp-128h]@6 char v17; // [sp+1Ch] [bp-11Ch]@6 char v18; // [sp+28h] [bp-110h]@9 unsigned int v19; // [sp+128h] [bp-10h]@1 int v20; // [sp+134h] [bp-4h]@1 int v21; // [sp+138h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( !(dword_13258778 & 1) ) { dword_13258778 |= 1u; word_13258774 = 32; atexit(nullsub_163); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258774) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) ) { v20 = -1; } else { v5 = **((_DWORD **)v4 + 38903); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(_DWORD, int))(v5 + 12))(*((_DWORD *)v4 + 38903), v6); v7 = *(_DWORD *)((char *)v4 + 32650); *((_DWORD *)v4 + 38903) = &unk_13253600; v8 = sub_48C200(&unk_150A0980, "BoothInterior"); strncpy((char *)(v7 + 50), (const char *)v8, 0x1Du); v9 = off_849C18; *(_WORD *)off_849C18 = 26642; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); v10 = sub_48C200(&unk_150A0980, "BoothInterior"); strncpy((char *)v9 + 4, (const char *)v10, 0x1Du); sub_4287B0(&v16, &off_849C18, 34); v11 = *(_DWORD *)((char *)v4 + 102); LOBYTE(v20) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v12, v11, 0, 0, (int)&v16, 1, 65535); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 26, 17); v13 = off_849C18; *(_WORD *)off_849C18 = 26647; *((_WORD *)v13 + 1) = *((_WORD *)v4 + 2); sub_4287B0(&v17, &off_849C18, 4); LOBYTE(v20) = 2; sub_549B60(v4, (int)&v17, 0); v14 = *(_DWORD *)((char *)v4 + 122); if ( v14 && v14 != -468 && !sub_43AEF0(v14 + 468, *((_WORD *)v4 + 2)) ) { sprintf(&v18, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ - ³»ºÎ ¼"); sub_6390B0(&unk_86DDD8, (int)&v18, (int)byte_6A492E); } LOBYTE(v20) = 1; sub_428A70(&v17); LOBYTE(v20) = 0; sub_428A70(&v16); v20 = -1; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13258774: using guessed type __int16 word_13258774; // 13258778: using guessed type int dword_13258778; //----- (0058C590) -------------------------------------------------------- int __thiscall sub_58C590(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // eax@5 char v6; // al@7 int v7; // edx@7 void *v8; // ecx@7 unsigned int v9; // edi@9 int (__thiscall *v10)(_DWORD); // eax@9 int v11; // esi@9 int v12; // edi@9 int v13; // eax@14 unsigned int v14; // eax@16 signed int v15; // edi@17 int v16; // ecx@17 int v17; // esi@20 int v18; // eax@25 unsigned int v19; // eax@26 char v20; // al@27 int v21; // edi@29 int v22; // eax@30 int v23; // eax@30 unsigned int v24; // edx@32 int v25; // edi@33 unsigned int v26; // edx@37 unsigned int v27; // edx@39 bool v28; // zf@41 int v29; // eax@43 int v30; // edi@43 unsigned int v31; // ecx@46 int v32; // esi@54 int v33; // eax@54 int v34; // eax@55 int v35; // ecx@55 int v36; // esi@55 int v37; // eax@55 int v38; // edx@60 int (__thiscall *v39)(_DWORD, _DWORD); // eax@62 int v40; // eax@62 int v41; // esi@62 int v42; // eax@63 int v43; // edi@64 int v44; // eax@64 int v45; // ecx@64 unsigned __int16 v46; // ax@67 int v47; // esi@67 int v48; // ST10_4@67 int v49; // ST0C_4@67 int v50; // ecx@67 int v51; // ST08_4@67 unsigned int v52; // edx@69 int v53; // esi@71 int v54; // eax@71 int v55; // esi@73 int v56; // eax@73 int v57; // esi@74 int v58; // edi@74 const void *v59; // esi@74 int v60; // esi@75 int v61; // edx@76 int v62; // eax@76 int v63; // esi@76 int v64; // esi@77 int v65; // eax@77 int v66; // eax@77 int v67; // ebx@77 int v68; // eax@79 int v69; // eax@81 void *v70; // eax@82 int v71; // esi@82 int v72; // ecx@82 char v73; // dl@82 int v74; // ecx@82 int v75; // ecx@82 int v76; // eax@82 int v77; // eax@82 char v79; // [sp-68h] [bp-1B0h]@67 int v80; // [sp-64h] [bp-1ACh]@67 int v81; // [sp-60h] [bp-1A8h]@67 int v82; // [sp-5Ch] [bp-1A4h]@67 int v83; // [sp-58h] [bp-1A0h]@67 int v84; // [sp-54h] [bp-19Ch]@67 int v85; // [sp-50h] [bp-198h]@67 int v86; // [sp-4Ch] [bp-194h]@67 int v87; // [sp-48h] [bp-190h]@67 int v88; // [sp-44h] [bp-18Ch]@67 int v89; // [sp-40h] [bp-188h]@67 int v90; // [sp-3Ch] [bp-184h]@67 int v91; // [sp-38h] [bp-180h]@67 int v92; // [sp-34h] [bp-17Ch]@67 int v93; // [sp-30h] [bp-178h]@67 int v94; // [sp-2Ch] [bp-174h]@67 int v95; // [sp-28h] [bp-170h]@67 int v96; // [sp-24h] [bp-16Ch]@14 int v97; // [sp-20h] [bp-168h]@67 int v98; // [sp-1Ch] [bp-164h]@14 int v99; // [sp-18h] [bp-160h]@14 int v100; // [sp-14h] [bp-15Ch]@14 int v101; // [sp-10h] [bp-158h]@14 int v102; // [sp-Ch] [bp-154h]@14 int v103; // [sp-8h] [bp-150h]@4 int v104; // [sp-4h] [bp-14Ch]@1 int v105; // [sp+Ch] [bp-13Ch]@1 char v106; // [sp+10h] [bp-138h]@82 int v107; // [sp+1Ch] [bp-12Ch]@30 int v108; // [sp+20h] [bp-128h]@16 int v109; // [sp+24h] [bp-124h]@28 int v110; // [sp+28h] [bp-120h]@17 int v111; // [sp+2Ch] [bp-11Ch]@9 int i; // [sp+30h] [bp-118h]@17 char v113; // [sp+37h] [bp-111h]@54 char v114; // [sp+38h] [bp-110h]@58 unsigned int v115; // [sp+138h] [bp-10h]@1 int v116; // [sp+144h] [bp-4h]@1 int v117; // [sp+148h] [bp+0h]@1 v115 = (unsigned int)&v117 ^ __security_cookie; v104 = (unsigned int)&v117 ^ __security_cookie; v4 = this; v105 = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; dword_750AB8[dword_750CB8++] = -1; v116 = 0; if ( !(dword_13258780 & 1) ) { dword_13258780 |= 1u; word_1325877C = 38; atexit(nullsub_158); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_1325877C) ) { v103 = 2626; LABEL_84: v7 = *(_DWORD *)v4; v8 = v4; goto LABEL_85; } v5 = *(_DWORD *)((char *)v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 162) ) { v103 = 2645; goto LABEL_84; } v6 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688); v7 = *(_DWORD *)v4; v8 = v4; if ( v6 ) { v103 = 2629; LABEL_85: (*(void (__thiscall **)(void *, signed int, signed int, int, int))(v7 + 776))(v8, 26, 2, v103, v104); v116 = -1; goto LABEL_86; } (*(void (__thiscall **)(void *, int))(v7 + 2256))(v4, v104); v9 = *(_BYTE *)(a2 + 32); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1164); v11 = a2 + 2; v111 = a2 + 2; v12 = v9 >> 1; if ( (signed int)((unsigned int)*(_BYTE *)(a2 + 32) >> 1) >= v10(v4) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ : Too many items", v12); LABEL_11: v104 = 2627; goto LABEL_12; } v104 = 65535; v103 = 0; v99 = (int)sub_58AF00; v100 = 0; v98 = 0; v101 = 0; v102 = 0; v96 = *(_DWORD *)((char *)v4 + 102); v13 = sub_427BD0(&unk_13253E80); if ( !sub_549C70(v4, v13, v96, (_UNKNOWN *)0x190, 0, (int)sub_58AF00, 0, 0, 0, 0, 65535) ) { v104 = 2643; LABEL_12: (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 26, 2, v104); LABEL_13: v116 = -1; goto LABEL_86; } v14 = (unsigned int)*(_BYTE *)(a2 + 32) >> 1; v108 = 0; if ( (signed int)v14 > 0 ) { v15 = 1; v16 = a2 + 33; v110 = 1; i = a2 + 33; while ( v15 >= (signed int)v14 ) { LABEL_25: v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v18 + 12))(v18, 9, *(_BYTE *)i) ) goto LABEL_11; v19 = *(_BYTE *)(v11 + 30); ++v110; i += 12; v14 = v19 >> 1; ++v108; if ( v108 >= (signed int)v14 ) goto LABEL_27; v16 = i; v15 = v110; } v17 = v16 + 13; while ( *(_BYTE *)v16 != *(_BYTE *)(v17 - 1) && *(_BYTE *)(v16 + 1) != *(_BYTE *)v17 ) { ++v15; v17 += 12; if ( v15 >= (signed int)v14 ) { v11 = v111; goto LABEL_25; } } v104 = 2628; goto LABEL_12; } LABEL_27: v20 = *(_BYTE *)(v11 + 30); if ( !(v20 & 1) ) { v109 = 0; if ( v20 & 0xFE ) { v21 = v111 + 31; v110 = 1; i = v111 + 31; while ( 1 ) { v22 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)v21); v107 = v22; v23 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v22 + 8)); if ( !v23 || !*(_DWORD *)(*(_DWORD *)v23 + 98) ) { v104 = 2648; goto LABEL_12; } v24 = (unsigned int)*(_BYTE *)(v111 + 30) >> 1; v108 = v110; if ( v110 < (signed int)v24 ) break; LABEL_39: v27 = *(_BYTE *)(v111 + 30); ++v110; v21 += 12; ++v109; i = v21; if ( v109 >= (signed int)(v27 >> 1) ) { v11 = v111; goto LABEL_41; } } v25 = v21 + 14; while ( *(_WORD *)(v107 + 8) != *(_WORD *)((*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(v25 - 2)) + 8) || *(_DWORD *)(i + 2) == *(_DWORD *)v25 && *(_DWORD *)(i + 6) == *(_DWORD *)(v25 + 4) ) { v26 = (unsigned int)*(_BYTE *)(v111 + 30) >> 1; v25 += 12; ++v108; if ( v108 >= (signed int)v26 ) { v21 = i; goto LABEL_39; } } v104 = 2647; goto LABEL_12; } } LABEL_41: v28 = (*(_BYTE *)(v11 + 30) & 0xFE) == 0; v109 = 0; if ( v28 ) { LABEL_47: (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2632))(v4); if ( *(_BYTE *)(v11 + 30) & 1 ) *((_DWORD *)v4 + 38903) = (char *)v4 + 155616; else *((_DWORD *)v4 + 38903) = (char *)v4 + 155984; (*(void (**)(void))(**((_DWORD **)v4 + 38903) + 16))(); v32 = **((_DWORD **)v4 + 38903); v33 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(_DWORD, int))(v32 + 8))(*((_DWORD *)v4 + 38903), v33); v28 = (*(_BYTE *)(v111 + 30) & 1) == 0; v113 = 0; if ( !v28 ) { v34 = *(_DWORD *)((char *)v4 + 102); v35 = *(_DWORD *)((char *)v4 + 122); v36 = *(_DWORD *)v34; v37 = *(_DWORD *)(v34 + 4); if ( v35 ) { v109 = v35 + 468; if ( v35 != -468 ) { v113 = sub_43B300(*((_WORD *)v4 + 2), v36, v37); if ( !v113 ) { sprintf(&v114, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ - »"); sub_6390B0(&unk_86DDD8, (int)&v114, (int)byte_6A492E); } } } } v28 = (*(_BYTE *)(v111 + 30) & 0xFE) == 0; v108 = 0; if ( v28 ) { LABEL_74: v57 = v111; v58 = *((_DWORD *)v4 + 38903) + 4; memcpy((void *)v58, (const void *)v111, 0x1Cu); *(_WORD *)(v58 + 28) = *(_WORD *)(v57 + 28); *(_WORD *)(*((_DWORD *)v4 + 38903) + 36) = *((_WORD *)v4 + 2); v59 = (const void *)(*(_DWORD *)((char *)v4 + 32650) + 37); v28 = *((_BYTE *)v4 + 155503) == 0; v107 = (int)((char *)v4 + 155460); if ( v28 ) { memcpy((char *)v4 + 155460, v59, 0x28u); v60 = (int)((char *)v59 + 40); *((_WORD *)v4 + 77750) = *(_WORD *)v60; *((_BYTE *)v4 + 155502) = *(_BYTE *)(v60 + 2); *((_BYTE *)v4 + 155503) = 1; } v61 = v111; v62 = *(_DWORD *)((char *)v4 + 32650) + 37; v63 = v111; memcpy((void *)(*(_DWORD *)((char *)v4 + 32650) + 50), (const void *)v111, 0x1Cu); *(_WORD *)(v62 + 41) = *(_WORD *)(v63 + 28); *(_BYTE *)(v62 + 12) = *(_BYTE *)(v61 + 30) & 1; v109 = v62; if ( !sub_56C420(v4, v62) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2646); v64 = **((_DWORD **)v4 + 38903); v65 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(_DWORD, int))(v64 + 12))(*((_DWORD *)v4 + 38903), v65); v66 = v107; v67 = *(_DWORD *)((char *)v4 + 32650); if ( *(_BYTE *)(v107 + 43) ) { memcpy((void *)(v67 + 37), (const void *)v107, 0x2Bu); *(_BYTE *)(v66 + 43) = 0; v116 = -1; goto LABEL_86; } goto LABEL_13; } **((_BYTE **)v4 + 957) = 5; v68 = *((_DWORD *)v4 + 40446); if ( v68 == 5 || v68 == 6 ) { v69 = dword_14D129E8 + 6000; *((_DWORD *)v4 + 40476) = 6000; *((_DWORD *)v4 + 40475) = v69; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2625); v70 = off_849C18; *(_WORD *)off_849C18 = 26627; *((_WORD *)v70 + 1) = *((_WORD *)v4 + 2); v71 = *((_DWORD *)v4 + 38903) + 4; memcpy((char *)v70 + 17, (const void *)v71, 0x1Cu); v72 = v111; *(_WORD *)((char *)v70 + 45) = *(_WORD *)(v71 + 28); v73 = *(_BYTE *)(v72 + 30); v74 = v109; *((_BYTE *)v70 + 16) = v73 & 1; *((_DWORD *)v70 + 1) = *(_DWORD *)v74; *((_DWORD *)v70 + 2) = *(_DWORD *)(v74 + 4); v75 = *(_DWORD *)(v74 + 8); v104 = 47; *((_DWORD *)v70 + 3) = v75; sub_4287B0(&v106, &off_849C18, v104); v76 = *(_DWORD *)((char *)v4 + 102); v104 = 65535; v103 = 0; v102 = (int)&v106; v101 = 0; v100 = 0; v99 = v76; LOBYTE(v116) = 1; v77 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v77, v99, (_UNKNOWN *)v100, v101, v102, v103, v104); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1712))(v4, 2); *((_DWORD *)v4 + 38902) = dword_14D129E8; LOBYTE(v116) = 0; sub_428A70(&v106); v116 = -1; } else { v38 = v111 + 31; for ( i = v111 + 31; ; v38 = i ) { if ( *(_BYTE *)v38 >= 0x90u ) { v104 = *(_BYTE *)v38; sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ : Invalid slot", v104); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2627); v53 = **((_DWORD **)v4 + 38903); v54 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(_DWORD, int))(v53 + 12))(*((_DWORD *)v4 + 38903), v54); v116 = -1; goto LABEL_86; } v39 = (int (__thiscall *)(_DWORD, _DWORD))**((_DWORD **)v4 + 9121); v104 = *(_BYTE *)v38; v40 = v39((char *)v4 + 36484, v104); v41 = v40; v107 = v40; if ( !v40 ) break; v28 = sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62EE00, v40) == 0; v42 = *(_DWORD *)v4; if ( v28 ) goto LABEL_73; v43 = **((_DWORD **)v4 + 38903); v104 = (int)v4; v103 = i; v44 = (*(int (__thiscall **)(void *, int, int, void *))(v42 + 2004))(v4, v41, i, v4); v45 = *((_DWORD *)v4 + 38903); v104 = v44; (*(void (__thiscall **)(int, int))(v43 + 20))(v45, v44); if ( *(_BYTE *)(v111 + 30) & 1 ) { if ( v113 ) { if ( v109 ) { v46 = *((_WORD *)v4 + 2); v47 = v41 + 8; memcpy(&v79, (const void *)v47, 0x64u); v47 += 100; v48 = *(_DWORD *)(i + 6); v49 = *(_DWORD *)(i + 2); v50 = *(_DWORD *)v107; v51 = *(_DWORD *)(v107 + 4); LOWORD(v104) = *(_WORD *)v47; BYTE2(v104) = *(_BYTE *)(v47 + 2); if ( !sub_43A660( v109, v46, v50, v51, v49, v48, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, v95, v96, v97, v98, v99, v100, v101, v102, v103, v104) ) { sprintf(&v114, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ - ¸"); sub_6390B0(&unk_86DDD8, (int)&v114, (int)byte_6A492E); } } } } v52 = *(_BYTE *)(v111 + 30); i += 12; ++v108; if ( v108 >= (signed int)(v52 >> 1) ) goto LABEL_74; } v42 = *(_DWORD *)v4; LABEL_73: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v42 + 776))(v4, 26, 2, 2628); v55 = **((_DWORD **)v4 + 38903); v56 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(_DWORD, int))(v55 + 12))(*((_DWORD *)v4 + 38903), v56); v116 = -1; } } else { v110 = v11 + 31; while ( 1 ) { v29 = (**((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))((char *)v4 + 36484, *(_BYTE *)v110); v30 = v29; if ( !v29 ) break; if ( !sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62EE00, v29) || sub_48F9E0(*(_DWORD *)(v30 + 112), v30) ) break; v31 = *(_BYTE *)(v11 + 30); v110 += 12; ++v109; if ( v109 >= (signed int)(v31 >> 1) ) goto LABEL_47; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2649); v116 = -1; } LABEL_86: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 1325877C: using guessed type __int16 word_1325877C; // 13258780: using guessed type int dword_13258780; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0058CEF0) -------------------------------------------------------- int __thiscall sub_58CEF0(void *this, int a2, int a3, char a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // esi@1 int v7; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sb_Show2Client"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sb_Show2Client"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = (a4 != 0 ? 8 : 11) & 0x3FF | 0x6800; *((_WORD *)v5 + 1) = 2625; *((_WORD *)v5 + 2) = *((_WORD *)v4 + 18); v6 = sub_58B5C0(v4, a2, (int)((char *)v5 + 6), (int)((char *)v5 + 7)) + 7; if ( sub_4C81E0(&off_849C18, v6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 764))(a3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, a3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sb_Show2Client : Packet Too Long", v6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sb_Show2Client"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0058D020) -------------------------------------------------------- int __thiscall sub_58D020(int this) { int v1; // esi@1 v1 = this; sub_58A880(this); *(_DWORD *)v1 = &off_6EF548; return v1; } // 6EF548: using guessed type int (*off_6EF548)(); //----- (0058D040) -------------------------------------------------------- void __thiscall sub_58D040(void *this) { *(_DWORD *)this = &off_6EF548; *(_DWORD *)this = &off_6EED04; } // 6EED04: using guessed type int (*off_6EED04)(); // 6EF548: using guessed type int (*off_6EF548)(); //----- (0058D050) -------------------------------------------------------- int __cdecl sub_58D050() { return (int)"Sell"; } //----- (0058D060) -------------------------------------------------------- int __cdecl sub_58D060() { return (int)"Buy"; } //----- (0058D070) -------------------------------------------------------- int __stdcall sub_58D070(int a1, int a2, int a3, __int64 a4, int a5, int a6, __int16 a7, __int16 a8) { void *v8; // esi@1 int v9; // edi@1 int (__thiscall *v10)(_DWORD); // eax@1 int v11; // ebx@1 __int64 v12; // qax@1 __int64 v13; // qax@1 int v14; // eax@3 int (__thiscall *v15)(_DWORD); // eax@4 int v16; // esi@4 __int16 v17; // ST14_2@4 int v18; // esi@4 int v19; // eax@4 int v20; // eax@4 int v21; // edx@4 int v22; // esi@4 int v23; // eax@4 int v24; // esi@4 int v25; // eax@4 int v26; // eax@4 __int16 v28; // [sp+14h] [bp-10h]@4 int v29; // [sp+20h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sbb_BuyAll"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sbb_BuyAll"; dword_750AB8[dword_750CB8++] = -1; v8 = off_849C18; v9 = a1; *(_WORD *)off_849C18 = 13395; *((_WORD *)v8 + 1) = *(_WORD *)(a1 + 4); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836); v29 = 0; v11 = a2; *((_DWORD *)v8 + 1) = v10(a1); *((_WORD *)v8 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v8 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_DWORD *)((char *)v8 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *(_DWORD *)((char *)v8 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 836))(v11); *((_WORD *)v8 + 11) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9) + 4); *((_WORD *)v8 + 12) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2004))(v11) + 4); *(_DWORD *)((char *)v8 + 27) = *(_DWORD *)a5; *(_DWORD *)((char *)v8 + 31) = *(_DWORD *)(a5 + 4); *((_BYTE *)v8 + 37) = a8; *(_QWORD *)((char *)v8 + 46) = a4; *(_WORD *)((char *)v8 + 35) = *(_WORD *)(a5 + 8); *(_DWORD *)((char *)v8 + 38) = (*(int (__stdcall **)(int))(**(_DWORD **)(a5 + 112) + 28))(a5 + 8); *(_DWORD *)((char *)v8 + 42) = 0; LODWORD(v12) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1076))(v9); *(_QWORD *)((char *)v8 + 54) = a4 + v12; LODWORD(v13) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1076))(v11); *(_QWORD *)((char *)v8 + 62) = v13 - a4; *((_BYTE *)v8 + 26) = 0; if ( sub_4C81E0(&off_849C18, 70) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothBuy::sbb_BuyAll : Packet Too Long", 70); } v15 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); v28 = a7 & 0x3FF | 0x2400; v16 = v15(a1); v17 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1) + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v16 + 72))(v16); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v18 + 48))( v18, *(_WORD *)(v19 + 4), a5, &v28, &v28); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v20 + 4); v21 = *(_DWORD *)a2; v28 = a8 & 0x3FF | 0x2400; v22 = (*(int (__thiscall **)(int))(v21 + 2004))(a2); v23 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v22 + 72))( v22, *(_WORD *)(v23 + 4), a4, HIDWORD(a4), -1); v24 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, int, __int16 *, __int16 *))(*(_DWORD *)v24 + 64))( v24, *(_WORD *)(v25 + 4), a6, a5, &v28, &v28); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v26 + 4); --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sbb_BuyAll"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0058D350) -------------------------------------------------------- int __stdcall sub_58D350(int a1, int a2, int a3, __int64 a4, int a5, int a6, __int16 a7, __int16 a8) { unsigned int v8; // ST14_4@1 int v9; // ebx@1 int v10; // eax@1 int v11; // edi@1 int v12; // ecx@1 int (__thiscall *v13)(_DWORD, _DWORD, _DWORD); // eax@1 int v14; // eax@1 int v15; // edi@1 int v16; // eax@1 void *v17; // esi@1 int v18; // edi@1 int v19; // ecx@1 __int16 v20; // ax@4 int v21; // ecx@4 __int64 v22; // qax@4 __int64 v23; // qax@4 int v24; // eax@6 int v25; // eax@7 int (__thiscall *v26)(_DWORD); // edx@7 int v27; // esi@8 int v28; // eax@8 int v29; // esi@9 int v30; // eax@9 int v31; // eax@10 int v32; // esi@10 __int16 v33; // ST14_2@10 int v34; // esi@10 int v35; // eax@10 int v36; // eax@10 __int16 v38; // [sp+20h] [bp-FCh]@1 int v39; // [sp+24h] [bp-F8h]@1 __int16 v40; // [sp+28h] [bp-F4h]@1 char v41; // [sp+2Ch] [bp-F0h]@1 char v42; // [sp+34h] [bp-E8h]@1 __int16 v43; // [sp+98h] [bp-84h]@1 char v44; // [sp+9Ah] [bp-82h]@1 char v45; // [sp+9Ch] [bp-80h]@1 char v46; // [sp+A4h] [bp-78h]@1 __int16 v47; // [sp+108h] [bp-14h]@1 char v48; // [sp+10Ah] [bp-12h]@1 unsigned int v49; // [sp+10Ch] [bp-10h]@1 int v50; // [sp+118h] [bp-4h]@1 int v51; // [sp+11Ch] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v8 = (unsigned int)&v51 ^ __security_cookie; v9 = a2; sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sbb_BuyMerge"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sbb_BuyMerge"; dword_750AB8[dword_750CB8++] = -1; v10 = *(_DWORD *)(a6 + 112); memcpy(&v45, (const void *)a6, 0x6Cu); v47 = *(_WORD *)(a6 + 108); v48 = *(_BYTE *)(a6 + 110); memcpy(&v41, (const void *)a5, 0x6Cu); v43 = *(_WORD *)(a5 + 108); v44 = *(_BYTE *)(a5 + 110); v11 = *(_DWORD *)v10; v39 = v10; v12 = v10; v13 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(v11 + 28); v50 = 0; v14 = v13(v12, &v46, v8); (*(void (__thiscall **)(int, char *, int))(v11 + 32))(v39, &v46, *(_WORD *)(a3 + 3) + v14); v15 = *(_DWORD *)v39; v16 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v39 + 28))(v39, &v42); (*(void (__thiscall **)(int, char *, int))(v15 + 32))(v39, &v42, v16 - *(_WORD *)(a3 + 3)); v17 = off_849C18; v18 = a1; v38 = a8 & 0x3FF | 0x2400; v40 = a7 & 0x3FF | 0x2400; *(_WORD *)off_849C18 = 13396; *((_WORD *)v17 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 836))(v18); *((_WORD *)v17 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v17 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *(_DWORD *)((char *)v17 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 836))(v18); *(_DWORD *)((char *)v17 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *((_WORD *)v17 + 11) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v18 + 2004))(v18) + 4); *((_WORD *)v17 + 12) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9) + 4); *(_WORD *)((char *)v17 + 27) = *(_WORD *)(a6 + 8); *(_DWORD *)((char *)v17 + 29) = *(_DWORD *)a5; *(_DWORD *)((char *)v17 + 33) = *(_DWORD *)(a5 + 4); *(_DWORD *)((char *)v17 + 37) = *(_DWORD *)a6; *(_DWORD *)((char *)v17 + 41) = *(_DWORD *)(a6 + 4); *(_WORD *)((char *)v17 + 45) = *(_WORD *)(a3 + 3); *(_DWORD *)((char *)v17 + 51) = HIDWORD(a4); v19 = v39; *(_DWORD *)((char *)v17 + 47) = a4; *((_BYTE *)v17 + 55) = (*(int (__stdcall **)(int))(*(_DWORD *)v19 + 28))(a5 + 8) <= (unsigned int)*(_WORD *)(a3 + 3); v20 = (*(int (__stdcall **)(char *))(*(_DWORD *)v39 + 28))(&v42); v21 = v39; *((_WORD *)v17 + 28) = v20; *((_WORD *)v17 + 29) = (*(int (__stdcall **)(char *))(*(_DWORD *)v21 + 28))(&v46); LODWORD(v22) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1076))(a1); *(_QWORD *)((char *)v17 + 60) = a4 + v22; LODWORD(v23) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1076))(a2); *(_QWORD *)((char *)v17 + 68) = v23 - a4; *((_BYTE *)v17 + 26) = 0; if ( sub_4C81E0(&off_849C18, 76) ) { v24 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v24); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothBuy::sbb_BuyMerge : Packet Too Long", 76); } v39 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v25 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v39 + 72))( v39, *(_WORD *)(v25 + 4), a4, HIDWORD(a4), 1); v26 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); if ( *((_BYTE *)v17 + 55) ) { v27 = v26(a1); v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v27 + 48))( v27, *(_WORD *)(v28 + 4), a5, &v40, &v40); } else { v29 = v26(a1); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v29 + 64))( v29, *(_WORD *)(v30 + 4), a5, &v41, &v40, &v40); } v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v31 + 4); v32 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v33 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v32 + 72))(v32); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v34 + 64))( v34, *(_WORD *)(v35 + 4), a6, &v45, &v38, &v38); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v36 + 4); --dword_750CB8; v50 = -1; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sbb_BuyMerge"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0058D7B0) -------------------------------------------------------- int __stdcall sub_58D7B0(int a1, int a2, int a3, __int64 a4, int a5, int a6, __int16 a7, __int16 a8) { unsigned int v8; // ST14_4@1 int v9; // ebx@1 int v10; // eax@1 int v11; // esi@1 int v12; // ecx@1 int (__thiscall *v13)(_DWORD, _DWORD, _DWORD); // eax@1 int v14; // eax@1 int v15; // ST14_4@1 char *v16; // eax@1 void *v17; // esi@1 int v18; // edi@1 int v19; // eax@1 int v20; // eax@1 int v21; // eax@1 __int16 v22; // dx@1 __int64 v23; // qax@1 __int64 v24; // qax@1 int v25; // eax@3 int v26; // esi@4 int v27; // eax@4 int v28; // esi@4 int v29; // eax@4 unsigned int v30; // edx@4 bool v31; // cf@4 bool v32; // zf@4 int (__thiscall *v33)(_DWORD); // edx@4 int v34; // ST34_4@5 int v35; // eax@5 void (__stdcall *v36)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@5 int v37; // ST34_4@6 int v38; // eax@6 void (__stdcall *v39)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@6 int v40; // eax@7 int v41; // edi@7 __int16 v42; // ST14_2@7 int v43; // edi@7 int v44; // eax@7 int v45; // eax@7 int v47; // [sp+14h] [bp-108h]@1 __int16 v48; // [sp+20h] [bp-FCh]@1 int v49; // [sp+24h] [bp-F8h]@1 __int16 v50; // [sp+28h] [bp-F4h]@1 char v51; // [sp+2Ch] [bp-F0h]@1 int v52; // [sp+34h] [bp-E8h]@1 __int16 v53; // [sp+98h] [bp-84h]@1 char v54; // [sp+9Ah] [bp-82h]@1 int v55; // [sp+9Ch] [bp-80h]@1 int v56; // [sp+A0h] [bp-7Ch]@1 __int16 v57; // [sp+A4h] [bp-78h]@1 __int16 v58; // [sp+108h] [bp-14h]@1 char v59; // [sp+10Ah] [bp-12h]@1 unsigned int v60; // [sp+10Ch] [bp-10h]@1 int v61; // [sp+118h] [bp-4h]@1 int v62; // [sp+11Ch] [bp+0h]@1 v60 = (unsigned int)&v62 ^ __security_cookie; v8 = (unsigned int)&v62 ^ __security_cookie; v9 = a2; v49 = a5; sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sbb_BuySplitCreate"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sbb_BuySplitCreate"; dword_750AB8[dword_750CB8++] = -1; v10 = *(_DWORD *)(a5 + 112); memcpy(&v55, (const void *)a5, 0x6Cu); v58 = *(_WORD *)(a5 + 108); v59 = *(_BYTE *)(a5 + 110); memcpy(&v51, (const void *)v49, 0x6Cu); v53 = *(_WORD *)(v49 + 108); v54 = *(_BYTE *)(v49 + 110); v11 = *(_DWORD *)v10; v47 = v10; v12 = v10; v13 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 28); v61 = 0; v14 = v13(v12, &v52, v8); (*(void (__thiscall **)(int, int *, int))(v11 + 32))(v47, &v52, v14 - *(_WORD *)(a3 + 3)); v15 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v16 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v55, v52, 4, *((_DWORD *)v16 + 4), v15); (*(void (__thiscall **)(int, __int16 *, _DWORD))(*(_DWORD *)v47 + 32))(v47, &v57, *(_WORD *)(a3 + 3)); v17 = off_849C18; v48 = a8 & 0x3FF | 0x2400; v50 = a7 & 0x3FF | 0x2400; v18 = a1; *(_WORD *)off_849C18 = 13397; *((_WORD *)v17 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 836))(v18); *((_WORD *)v17 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v17 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *(_DWORD *)((char *)v17 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 836))(v18); *(_DWORD *)((char *)v17 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *((_WORD *)v17 + 11) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v18 + 2004))(v18) + 4); *((_WORD *)v17 + 12) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9) + 4); v19 = v49; *(_WORD *)((char *)v17 + 27) = v57; *(_DWORD *)((char *)v17 + 29) = *(_DWORD *)v19; *(_DWORD *)((char *)v17 + 33) = *(_DWORD *)(v19 + 4); *(_DWORD *)((char *)v17 + 37) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 836))(v9); v20 = *(_DWORD *)(a2 + 122); *(_DWORD *)((char *)v17 + 41) = *(_DWORD *)v20; *(_DWORD *)((char *)v17 + 45) = *(_DWORD *)(v20 + 4); *(_DWORD *)((char *)v17 + 49) = *(_DWORD *)(v20 + 8); v21 = *(_DWORD *)(a2 + 102); *(_DWORD *)((char *)v17 + 53) = *(_DWORD *)v21; *(_DWORD *)((char *)v17 + 57) = *(_DWORD *)(v21 + 4); *(_WORD *)((char *)v17 + 61) = v48; *(_DWORD *)((char *)v17 + 63) = v55; *(_DWORD *)((char *)v17 + 67) = v56; *(_WORD *)((char *)v17 + 71) = v57; v22 = *(_WORD *)(a3 + 3); *(_QWORD *)((char *)v17 + 77) = a4; *(_WORD *)((char *)v17 + 75) = v22; *(_WORD *)((char *)v17 + 85) = (*(int (__stdcall **)(int *))(*(_DWORD *)v47 + 28))(&v52); *(_WORD *)((char *)v17 + 87) = (*(int (__stdcall **)(__int16 *))(*(_DWORD *)v47 + 28))(&v57); LODWORD(v23) = (*(int (__thiscall **)(int))(*(_DWORD *)v18 + 1076))(v18); *(_QWORD *)((char *)v17 + 89) = a4 + v23; LODWORD(v24) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1076))(v9); *(_QWORD *)((char *)v17 + 97) = v24 - a4; *((_BYTE *)v17 + 26) = 0; if ( sub_4C81E0(&off_849C18, 105) ) { v25 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v25); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothBuy::sbb_BuySplitCreate : Packet Too Long", 105); } v26 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); v27 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2004))(a1); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v26 + 72))( v26, *(_WORD *)(v27 + 4), a4, HIDWORD(a4), 1); v28 = v49; v29 = (*(int (__stdcall **)(int))(*(_DWORD *)v47 + 28))(v49 + 8); v30 = *(_WORD *)(a3 + 3); v31 = v29 < v30; v32 = v29 == v30; v33 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); if ( v31 | v32 ) { v37 = v33(a1); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v39 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v37 + 48); v49 = *(_WORD *)(v38 + 4); v39(v49, v28, &v50, &v50); } else { v34 = v33(a1); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); v36 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v34 + 64); v49 = *(_WORD *)(v35 + 4); v36(v49, v28, &v51, &v50, &v50); } v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v40 + 4); v41 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v42 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v41 + 72))(v41); v43 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v44 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, int *, __int16 *, __int16 *))(*(_DWORD *)v43 + 64))( v43, *(_WORD *)(v44 + 4), a6, &v55, &v48, &v48); v45 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v45 + 4); --dword_750CB8; v61 = -1; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sbb_BuySplitCreate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0058DC70) -------------------------------------------------------- int __thiscall sub_58DC70(void *this, int a2, int a3, int a4) { int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@1 signed int v7; // eax@1 int v8; // ebx@1 int v9; // edx@1 int v10; // eax@3 bool v11; // zf@3 int v12; // eax@3 int v13; // eax@5 int v14; // eax@5 int v15; // edi@5 int v16; // ecx@6 int v17; // eax@8 unsigned int v18; // edx@14 int v20; // edi@22 int v21; // edx@22 __int64 v22; // qax@25 int (__thiscall *v23)(_DWORD); // eax@27 __int64 v24; // qax@32 unsigned __int64 v25; // qax@32 int v26; // edx@34 int v27; // eax@34 int v28; // eax@34 int (__thiscall *v29)(_DWORD); // eax@34 int v30; // eax@34 char v31; // al@34 int v32; // eax@36 int v33; // eax@37 int v34; // ecx@40 int v35; // eax@41 int (__thiscall *v36)(_DWORD); // edx@41 int v37; // eax@41 char v38; // dl@55 int v39; // eax@55 void *v40; // ecx@55 int v41; // eax@57 int v42; // [sp-24h] [bp-A4h]@50 int v43; // [sp-20h] [bp-A0h]@50 int v44; // [sp-1Ch] [bp-9Ch]@50 __int64 v45; // [sp-18h] [bp-98h]@50 int v46; // [sp-10h] [bp-90h]@50 int v47; // [sp-Ch] [bp-8Ch]@50 __int16 v48; // [sp-8h] [bp-88h]@50 signed int v49; // [sp-4h] [bp-84h]@11 __int16 v50; // [sp-4h] [bp-84h]@50 int (**v51)(); // [sp+10h] [bp-70h]@34 int (**v52)(); // [sp+24h] [bp-5Ch]@41 int *v53; // [sp+34h] [bp-4Ch]@41 int v54; // [sp+38h] [bp-48h]@41 int v55; // [sp+3Ch] [bp-44h]@41 int *v56; // [sp+40h] [bp-40h]@34 int v57; // [sp+44h] [bp-3Ch]@34 int v58; // [sp+48h] [bp-38h]@34 int v59; // [sp+4Ch] [bp-34h]@10 unsigned __int64 v60; // [sp+54h] [bp-2Ch]@22 int v61; // [sp+5Ch] [bp-24h]@1 int v62; // [sp+60h] [bp-20h]@34 int v63; // [sp+64h] [bp-1Ch]@7 int v64; // [sp+68h] [bp-18h]@12 int v65; // [sp+6Ch] [bp-14h]@22 void *v66; // [sp+70h] [bp-10h]@1 int v67; // [sp+7Ch] [bp-4h]@1 int v68; // [sp+88h] [bp+8h]@23 int v69; // [sp+88h] [bp+8h]@34 int v70; // [sp+8Ch] [bp+Ch]@5 v66 = this; v61 = (int)"StreetBoothBuy::sb_Trade"; sub_4675D0((int)&unk_D020420, (int)"StreetBoothBuy::sb_Trade"); dword_7508B8[dword_750CB8] = (int)"StreetBoothBuy::sb_Trade"; dword_750AB8[dword_750CB8++] = -1; v4 = a3; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1148); v67 = 0; v6 = v5(a3); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 3668) + 8))(v6 + 3668); v8 = a4; v9 = *(_DWORD *)a3; if ( *(_BYTE *)(a4 + 2) < v7 ) { v10 = (*(int (__thiscall **)(int))(v9 + 2004))(a3); v11 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v10 + 12))(v10, 9, *(_BYTE *)(a4 + 2)) == 0; v12 = *(_DWORD *)a3; if ( !v11 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v12 + 776))(a3, 26, 14, 2629); v67 = -1; goto LABEL_21; } v13 = (*(int (__thiscall **)(int))(v12 + 1148))(a3); v14 = (**(int (__stdcall ***)(_DWORD))(v13 + 3668))(*(_BYTE *)(a4 + 2)); v15 = v14; v70 = v14; if ( !v14 || (v16 = *(_DWORD *)(v14 + 112)) == 0 || (v63 = *(_WORD *)(v14 + 8), (_WORD)v63 == -1) || (v17 = (*(int (__stdcall **)(int))(*(_DWORD *)v16 + 52))(v14 + 8)) != 0 && *(_BYTE *)v17 ) goto LABEL_18; v59 = (*(int (__stdcall **)(int))(**(_DWORD **)(v15 + 112) + 28))(v15 + 8); if ( v59 < (unsigned int)*(_WORD *)(a4 + 3) ) { v49 = 2644; LABEL_19: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 14, v49); LABEL_20: v67 = -1; goto LABEL_21; } v64 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v15 + 8)); if ( !sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62EE00, v15) ) { LABEL_18: v49 = 2628; goto LABEL_19; } if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v15 + 112) + 24))() ) v18 = *(_DWORD *)(*(_DWORD *)v64 + 106); else v18 = 1; if ( v59 > v18 ) { sub_639100(&unk_86DDD8, (int)"StreetBooth::sbs_Buy : Too many lot", v59); goto LABEL_18; } v20 = a2; v21 = *(_DWORD *)a2; v60 = 0i64; v65 = 0; if ( (*(int (__thiscall **)(int))(v21 + 1172))(a2) <= 0 ) goto LABEL_60; v68 = (int)((char *)v66 + 42); do { if ( *(_WORD *)(v68 - 2) == *(_WORD *)(v70 + 8) ) { v22 = *(_WORD *)v68; if ( *(_WORD *)v68 > v60 ) { v63 = v65; v60 = v22; } } v23 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 1172); ++v65; v68 += 16; } while ( v65 < v23(v20) ); if ( !v60 ) { LABEL_60: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 14, 2628); goto LABEL_20; } if ( v60 < *(_WORD *)(a4 + 3) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 14, 2644); goto LABEL_20; } v24 = *((_QWORD *)v66 + 2 * (v63 + 3)) * *(_WORD *)(a4 + 3); HIDWORD(v60) = *((_QWORD *)v66 + 2 * (v63 + 3)) * (unsigned __int64)*(_WORD *)(a4 + 3) >> 32; HIDWORD(v24) = *(_DWORD *)v20; LODWORD(v60) = v24; LODWORD(v25) = (*(int (__thiscall **)(int))(HIDWORD(v24) + 1076))(v20); if ( v25 < v60 ) { v49 = 2650; goto LABEL_19; } v26 = *(_WORD *)(v70 + 8); v27 = *(_DWORD *)v20; v62 = *(_DWORD *)(v70 + 112); v65 = v26; v69 = 0; v28 = (*(int (__thiscall **)(int))(v27 + 1176))(v20); sub_43BB70((int)&v51, v20 + 36484, v65, v28); v29 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 2004); LOBYTE(v67) = 1; v30 = v29(v20); v56 = (int *)&v51; v57 = v30; v58 = 9; v31 = sub_486D40(&v56); while ( v31 ) { v32 = (**(int (__stdcall ***)(_DWORD))v56[1])(v56[2]); v65 = v32; if ( !v32 ) break; v33 = (*(int (__stdcall **)(int))(*(_DWORD *)v62 + 28))(v32 + 8); if ( *(_DWORD *)(*(_DWORD *)v64 + 106) - (unsigned __int64)(unsigned int)v33 >= *(_WORD *)(a4 + 3) ) { v8 = a4; v69 = v65; v65 = v56[2]; break; } v31 = sub_486DA0((void **)&v56); v8 = a4; } v34 = v69; LOBYTE(v67) = 0; v51 = &off_6A86A4; if ( !v69 ) { v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 1176))(v20); sub_43BB20((int)&v52, v20 + 36484, v35); v36 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v20 + 2004); LOBYTE(v67) = 2; v37 = v36(v20); v53 = (int *)&v52; v54 = v37; v55 = 9; if ( sub_486D40(&v53) ) { v69 = (**(int (__stdcall ***)(_DWORD))v53[1])(v53[2]); v65 = v53[2]; } LOBYTE(v67) = 0; v52 = &off_6A86A4; if ( !v69 ) { v49 = 2633; goto LABEL_19; } v34 = v69; } if ( *(_WORD *)(v34 + 8) != *(_WORD *)(v70 + 8) && *(_WORD *)(v34 + 8) != -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 14, 2633); goto LABEL_20; } if ( *(_WORD *)(v8 + 3) == (unsigned __int64)*(_WORD *)(v8 + 3) ) { v50 = v65; v48 = *(_BYTE *)(v8 + 2); v47 = v34; v46 = v70; v45 = v60; v44 = v8; v43 = v20; v42 = v4; if ( *(_WORD *)(v34 + 8) == -1 ) { sub_58D070(v4, v20, v8, v60, v70, v34, v48, v65); goto LABEL_55; } } else { v50 = v65; v48 = *(_BYTE *)(v8 + 2); v47 = v34; v46 = v70; v45 = v60; v44 = v8; v43 = v20; v42 = v4; if ( *(_WORD *)(v34 + 8) == -1 ) { sub_58D7B0(v4, v20, v8, v60, v70, v34, v48, v65); goto LABEL_55; } } sub_58D350(v42, v43, v44, v45, v46, v47, v48, v50); LABEL_55: v38 = v63; v39 = (int)((char *)v66 + 16 * v63 + 42); *(_WORD *)v39 -= *(_WORD *)(v8 + 3); v40 = off_849C18; *(_WORD *)off_849C18 = 26639; *((_BYTE *)v40 + 2) = v38; *(_WORD *)((char *)v40 + 3) = *(_WORD *)v39; if ( sub_4C81E0(&off_849C18, 5) ) { v41 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 764))(v20); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v41 + 12))(v41, v20, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothBuy::sb_Trade : Packet Too Long", 5); } goto LABEL_20; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(v9 + 776))(a3, 26, 14, 2628); v67 = -1; LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"StreetBoothBuy::sb_Trade"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0058E210) -------------------------------------------------------- int __thiscall sub_58E210(int this) { int v1; // esi@1 v1 = this; sub_58A880(this); *(_DWORD *)v1 = &off_6EF6E0; return v1; } // 6EF6E0: using guessed type int (*off_6EF6E0)(); //----- (0058E230) -------------------------------------------------------- void __thiscall sub_58E230(void *this) { *(_DWORD *)this = &off_6EF6E0; JUMPOUT(loc_58A890); } // 58A890: using guessed type int loc_58A890(); // 6EF6E0: using guessed type int (*off_6EF6E0)(); //----- (0058E240) -------------------------------------------------------- int __thiscall sub_58E240(void *this, int a2, int a3, int a4, __int64 a5, __int16 a6) { int (__thiscall *v6)(_DWORD); // eax@1 int v7; // edi@1 int v8; // eax@1 int v9; // edx@1 int v10; // ecx@1 int v11; // eax@2 int (__thiscall *v12)(_DWORD); // eax@4 void *v13; // ebx@6 int v14; // edi@6 int v15; // eax@6 void *v16; // edx@6 int v17; // eax@6 int v18; // eax@6 __int64 v19; // qax@6 __int64 v20; // qax@6 int v21; // eax@8 __int16 v22; // ax@9 int v23; // edx@9 __int16 v24; // ax@9 int v25; // edx@9 int v26; // ebx@9 int v27; // eax@9 int v28; // ebx@9 int v29; // eax@9 int v30; // eax@9 int v31; // edx@9 int v32; // edi@9 int v33; // eax@9 int v34; // edi@9 int v35; // ebx@9 int v36; // eax@9 int v37; // eax@9 int v39; // [sp+0h] [bp-44h]@5 int (**v40)(); // [sp+10h] [bp-34h]@1 int v41; // [sp+14h] [bp-30h]@1 int v42; // [sp+1Ch] [bp-28h]@4 int *v43; // [sp+20h] [bp-24h]@4 int v44; // [sp+24h] [bp-20h]@4 int v45; // [sp+28h] [bp-1Ch]@4 int v46; // [sp+2Ch] [bp-18h]@1 void *v47; // [sp+30h] [bp-14h]@1 int v48; // [sp+34h] [bp-10h]@9 int v49; // [sp+40h] [bp-4h]@1 int v50; // [sp+60h] [bp+1Ch]@9 v47 = this; v46 = (int)"StreetBoothSell::sbs_SellAll"; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sbs_SellAll"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sbs_SellAll"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1176); v49 = 0; v7 = v6(a3); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1148))(a3); v40 = &off_6A86A4; v41 = v8 + 3668; v9 = *(_DWORD *)(v8 + 3668); v10 = v8 + 3668; if ( v7 ) v11 = (*(int (__thiscall **)(int, int))(v9 + 4))(v10, v7); else v11 = (*(int (__thiscall **)(int))(v9 + 8))(v10); v42 = v11; v40 = (int (**)())&off_6A86B4; v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004); LOBYTE(v49) = 1; v43 = (int *)&v40; v44 = v12(a3); v45 = 9; if ( sub_486D40(&v43) ) { v13 = off_849C18; v14 = a2; *(_WORD *)off_849C18 = 13395; *((_WORD *)v13 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v13 + 4) = *(_WORD *)(a3 + 4); *(_DWORD *)((char *)v13 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *(_DWORD *)((char *)v13 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 836))(v14); *(_DWORD *)((char *)v13 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *((_WORD *)v13 + 11) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v14 + 2004))(v14) + 4); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2004))(a3); v16 = v47; *((_WORD *)v13 + 12) = *(_WORD *)(v15 + 4); v17 = *((_DWORD *)v16 + 4 * *(_BYTE *)(a4 + 2) + 11); *(_DWORD *)((char *)v13 + 27) = *(_DWORD *)v17; *(_DWORD *)((char *)v13 + 31) = *(_DWORD *)(v17 + 4); *((_BYTE *)v13 + 37) = v43[2]; *(_DWORD *)((char *)v13 + 46) = a5; *(_WORD *)((char *)v13 + 35) = a6; *(_DWORD *)((char *)v13 + 50) = HIDWORD(a5); v18 = *((_DWORD *)v47 + 4 * *(_BYTE *)(a4 + 2) + 11); *(_DWORD *)((char *)v13 + 38) = (*(int (__stdcall **)(int))(**(_DWORD **)(v18 + 112) + 28))(v18 + 8); *(_DWORD *)((char *)v13 + 42) = 0; LODWORD(v19) = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1076))(v14); *(_QWORD *)((char *)v13 + 54) = a5 + v19; LODWORD(v20) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1076))(a3); *(_QWORD *)((char *)v13 + 62) = v20 - a5; *((_BYTE *)v13 + 26) = 1; if ( sub_4C81E0(&off_849C18, 70) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_SellAll : Packet Too Long", 70); } v22 = v48 & 0x3FF | 0x2400; v23 = 2 * *(_BYTE *)(a4 + 2); LOWORD(v48) = v22; v24 = (v22 ^ *((_BYTE *)v47 + 8 * v23 + 40)) & 0x3FF ^ v22; v25 = *(_DWORD *)a2; LOWORD(v48) = v24; v26 = (*(int (__thiscall **)(int))(v25 + 2004))(a2); v27 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v26 + 72))( v26, *(_WORD *)(v27 + 4), a5, HIDWORD(a5), 1); v28 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, int *, int *))(*(_DWORD *)v28 + 48))( v28, *(_WORD *)(v29 + 4), *((_DWORD *)v47 + 4 * *(_BYTE *)(a4 + 2) + 11), &v48, &v48); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v30 + 4); LOWORD(v48) = v48 & 0x3FF | 0x2400; v31 = *(_DWORD *)a3; LOWORD(v48) = (v48 ^ *((_WORD *)v43 + 4)) & 0x3FF ^ v48; v32 = (*(int (__thiscall **)(int))(v31 + 2004))(a3); v33 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2004))(a3); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v32 + 72))( v32, *(_WORD *)(v33 + 4), a5, HIDWORD(a5), -1); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); v35 = *((_DWORD *)v47 + 4 * *(_BYTE *)(a4 + 2) + 11); v50 = (**(int (__stdcall ***)(_DWORD))v43[1])(v43[2]); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); (*(void (__thiscall **)(int, _DWORD, int, int, int *, int *))(*(_DWORD *)v34 + 64))( v34, *(_WORD *)(v36 + 4), v50, v35, &v48, &v48); v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); ++*(_WORD *)(v37 + 4); --dword_750CB8; v39 = (int)"StreetBoothSell::sbs_SellAll"; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(a3, 26, 14, 2633); --dword_750CB8; v39 = (int)"StreetBoothSell::sbs_SellAll"; } v49 = -1; v40 = &off_6A86A4; return sub_467660((int)&unk_D020420, v39); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0058E650) -------------------------------------------------------- int __thiscall sub_58E650(void *this, int a2, int a3, int a4, int a5, __int64 a6) { unsigned int v6; // ST10_4@1 void *v7; // esi@1 int (__stdcall *v8)(_DWORD, _DWORD); // eax@1 int v9; // esi@1 int v10; // ST0C_4@1 int v11; // eax@1 int v12; // edx@3 int v13; // esi@3 int v14; // edi@3 int v15; // eax@3 int v16; // edi@3 int v17; // eax@3 void *v18; // esi@3 int v19; // edi@3 int v20; // edx@3 int v21; // ecx@3 __int16 v22; // ax@6 int v23; // ecx@6 __int64 v24; // qax@6 __int64 v25; // qax@6 int v26; // eax@8 int v27; // eax@9 int (__thiscall *v28)(_DWORD); // edx@9 int v29; // esi@10 int v30; // eax@10 int v31; // esi@11 int v32; // eax@11 int v33; // eax@12 int v34; // esi@12 int v35; // eax@12 int v36; // esi@12 int v37; // eax@12 int v38; // eax@12 void *v40; // [sp+10h] [bp-114h]@1 int v41; // [sp+1Ch] [bp-108h]@1 int v42; // [sp+20h] [bp-104h]@1 __int16 v43; // [sp+24h] [bp-100h]@3 int v44; // [sp+28h] [bp-FCh]@3 int v45; // [sp+2Ch] [bp-F8h]@1 int v46; // [sp+30h] [bp-F4h]@3 char v47; // [sp+34h] [bp-F0h]@3 char v48; // [sp+3Ch] [bp-E8h]@3 __int16 v49; // [sp+A0h] [bp-84h]@3 char v50; // [sp+A2h] [bp-82h]@3 char v51; // [sp+A4h] [bp-80h]@3 char v52; // [sp+ACh] [bp-78h]@3 __int16 v53; // [sp+110h] [bp-14h]@3 char v54; // [sp+112h] [bp-12h]@3 unsigned int v55; // [sp+114h] [bp-10h]@1 int v56; // [sp+120h] [bp-4h]@1 int v57; // [sp+124h] [bp+0h]@1 v55 = (unsigned int)&v57 ^ __security_cookie; v6 = (unsigned int)&v57 ^ __security_cookie; v7 = this; v45 = a4; v40 = this; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sbs_SellMerge"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sbs_SellMerge"; dword_750AB8[dword_750CB8++] = -1; v8 = (int (__stdcall *)(_DWORD, _DWORD))***(_DWORD ***)(a5 + 4); v9 = *((_DWORD *)v7 + 4 * *(_BYTE *)(v45 + 2) + 11); v10 = *(_DWORD *)(a5 + 8); v56 = 0; v42 = v9; v11 = v8(v10, v6); v41 = v11; if ( *(_WORD *)(v9 + 8) == *(_WORD *)(v11 + 8) ) { v12 = *(_DWORD *)(v9 + 112); memcpy(&v51, (const void *)v9, 0x6Cu); v13 = v9 + 108; v53 = *(_WORD *)v13; v54 = *(_BYTE *)(v13 + 2); memcpy(&v47, (const void *)v11, 0x6Cu); v49 = *(_WORD *)(v11 + 108); v50 = *(_BYTE *)(v11 + 110); v14 = *(_DWORD *)v12; v46 = v12; v15 = (*(int (__thiscall **)(int, char *))(v14 + 28))(v12, &v52); (*(void (__thiscall **)(int, char *, int))(v14 + 32))(v46, &v52, v15 - *(_WORD *)(v45 + 3)); v16 = *(_DWORD *)v46; v17 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v46 + 28))(v46, &v48); (*(void (__thiscall **)(int, char *, int))(v16 + 32))(v46, &v48, *(_WORD *)(v45 + 3) + v17); v18 = off_849C18; v19 = a2; LOWORD(v44) = ((v44 & 0x3FF | 0x2400) ^ *((_BYTE *)v40 + 16 * *(_BYTE *)(v45 + 2) + 40)) & 0x3FF ^ (v44 & 0x3FF | 0x2400); v43 = *(_WORD *)(a5 + 8) & 0x3FF | 0x2400; *(_WORD *)off_849C18 = 13396; *((_WORD *)v18 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v18 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *((_WORD *)v18 + 4) = *(_WORD *)(a3 + 4); *(_DWORD *)((char *)v18 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *(_DWORD *)((char *)v18 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 836))(v19); *(_DWORD *)((char *)v18 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *((_WORD *)v18 + 11) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v19 + 2004))(v19) + 4); *((_WORD *)v18 + 12) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2004))(a3) + 4); *(_WORD *)((char *)v18 + 27) = *(_WORD *)(v42 + 8); *(_DWORD *)((char *)v18 + 29) = *(_DWORD *)v42; *(_DWORD *)((char *)v18 + 33) = *(_DWORD *)(v42 + 4); *(_DWORD *)((char *)v18 + 37) = *(_DWORD *)v41; v20 = v45; *(_DWORD *)((char *)v18 + 41) = *(_DWORD *)(v41 + 4); *(_WORD *)((char *)v18 + 45) = *(_WORD *)(v20 + 3); *(_DWORD *)((char *)v18 + 51) = HIDWORD(a6); v21 = v46; *(_DWORD *)((char *)v18 + 47) = a6; *((_BYTE *)v18 + 55) = (*(int (__stdcall **)(int))(*(_DWORD *)v21 + 28))(v42 + 8) <= (unsigned int)*(_WORD *)(v45 + 3); v22 = (*(int (__stdcall **)(char *))(*(_DWORD *)v46 + 28))(&v52); v23 = v46; *((_WORD *)v18 + 28) = v22; *((_WORD *)v18 + 29) = (*(int (__stdcall **)(char *))(*(_DWORD *)v23 + 28))(&v48); LODWORD(v24) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1076))(a2); *(_QWORD *)((char *)v18 + 60) = a6 + v24; LODWORD(v25) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1076))(a3); *(_QWORD *)((char *)v18 + 68) = v25 - a6; *((_BYTE *)v18 + 26) = 1; if ( sub_4C81E0(&off_849C18, 76) ) { v26 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v26); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_SellMerge : Packet Too Long", 76); } v46 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v27 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v46 + 72))( v46, *(_WORD *)(v27 + 4), a6, HIDWORD(a6), 1); v28 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); if ( *((_BYTE *)v18 + 55) ) { v29 = v28(a2); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, int *, int *))(*(_DWORD *)v29 + 48))( v29, *(_WORD *)(v30 + 4), v42, &v44, &v44); } else { v31 = v28(a2); v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); (*(void (__thiscall **)(int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v31 + 64))( v31, *(_WORD *)(v32 + 4), v42, &v51, &v44, &v44); } v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); ++*(_WORD *)(v33 + 4); v34 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2004))(a3); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v34 + 72))( v34, *(_WORD *)(v35 + 4), a6, HIDWORD(a6), -1); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v36 + 64))( v36, *(_WORD *)(v37 + 4), v41, &v47, &v43, &v43); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); ++*(_WORD *)(v38 + 4); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_SellMerge : Merge to other item", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(a3, 26, 14, 2628); --dword_750CB8; } v56 = -1; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sbs_SellMerge"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0058EB50) -------------------------------------------------------- int __thiscall sub_58EB50(void *this, int a2, int a3, int a4, __int64 a5) { unsigned int v5; // ST10_4@1 void *v6; // esi@1 int (__thiscall *v7)(_DWORD, _DWORD); // edx@1 int v8; // eax@1 int v9; // edx@1 int v10; // eax@2 int (__thiscall *v11)(_DWORD); // eax@4 int v12; // ecx@6 int v13; // eax@6 int v14; // edx@6 int v15; // esi@6 int v16; // eax@6 int v17; // ST24_4@6 int v18; // eax@6 int v19; // edi@6 int v20; // esi@6 int v21; // ST10_4@6 char *v22; // eax@6 int v23; // ecx@6 void *v24; // esi@6 int v25; // edi@6 int v26; // eax@6 int v27; // eax@6 int v28; // eax@6 int v29; // ecx@6 __int16 v30; // dx@6 int v31; // ecx@6 __int16 v32; // ax@6 int v33; // ecx@6 __int64 v34; // qax@6 __int64 v35; // qax@6 int v36; // eax@8 int v37; // esi@9 int v38; // eax@9 int v39; // esi@9 int v40; // eax@9 unsigned int v41; // edx@9 bool v42; // cf@9 bool v43; // zf@9 int (__thiscall *v44)(_DWORD); // edx@9 int v45; // eax@10 void (__stdcall *v46)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@10 int v47; // eax@11 void (__stdcall *v48)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@11 int v49; // eax@12 int v50; // edi@12 int v51; // eax@12 int v52; // edi@12 int v53; // esi@12 int v54; // eax@12 int v55; // eax@12 int (**v57)(); // [sp+14h] [bp-128h]@1 int v58; // [sp+18h] [bp-124h]@1 int v59; // [sp+20h] [bp-11Ch]@4 int *v60; // [sp+24h] [bp-118h]@4 int v61; // [sp+28h] [bp-114h]@4 int v62; // [sp+2Ch] [bp-110h]@4 int v63; // [sp+30h] [bp-10Ch]@1 int v64; // [sp+34h] [bp-108h]@6 int v65; // [sp+38h] [bp-104h]@1 int v66; // [sp+3Ch] [bp-100h]@6 int v67; // [sp+40h] [bp-FCh]@1 int v68; // [sp+44h] [bp-F8h]@1 int v69; // [sp+48h] [bp-F4h]@6 char v70; // [sp+4Ch] [bp-F0h]@6 char v71; // [sp+54h] [bp-E8h]@6 __int16 v72; // [sp+B8h] [bp-84h]@6 char v73; // [sp+BAh] [bp-82h]@6 int v74; // [sp+BCh] [bp-80h]@6 int v75; // [sp+C0h] [bp-7Ch]@6 int v76; // [sp+C4h] [bp-78h]@6 __int16 v77; // [sp+128h] [bp-14h]@6 char v78; // [sp+12Ah] [bp-12h]@6 unsigned int v79; // [sp+12Ch] [bp-10h]@1 int v80; // [sp+138h] [bp-4h]@1 int v81; // [sp+13Ch] [bp+0h]@1 v79 = (unsigned int)&v81 ^ __security_cookie; v5 = (unsigned int)&v81 ^ __security_cookie; v6 = this; v68 = (int)this; v67 = a2; v63 = a4; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sbs_SellSplitCreate"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sbs_SellSplitCreate"; dword_750AB8[dword_750CB8++] = -1; v7 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 1176); v80 = 0; v65 = v7(a3, v5); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1148))(a3) + 3668; v57 = &off_6A86A4; v58 = v8; v9 = *(_DWORD *)v8; if ( v65 ) v10 = (*(int (__thiscall **)(int, int))(v9 + 4))(v8, v65); else v10 = (*(int (__thiscall **)(int))(v9 + 8))(v8); v59 = v10; v57 = (int (**)())&off_6A86B4; v11 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004); LOBYTE(v80) = 1; v60 = (int *)&v57; v61 = v11(a3); v62 = 9; if ( sub_486D40(&v60) ) { v12 = *(_BYTE *)(a4 + 2); v13 = *((_DWORD *)v6 + 4 * v12 + 11); v14 = *(_DWORD *)(v13 + 112); v15 = *((_DWORD *)v6 + 4 * v12 + 11); memcpy(&v70, (const void *)v15, 0x6Cu); v15 += 108; v72 = *(_WORD *)v15; v73 = *(_BYTE *)(v15 + 2); memcpy(&v74, (const void *)v13, 0x6Cu); v77 = *(_WORD *)(v13 + 108); v65 = v13; v78 = *(_BYTE *)(v13 + 110); v16 = *(_DWORD *)v14; v64 = v14; v17 = v16; v18 = (*(int (__thiscall **)(int, char *))(v16 + 28))(v14, &v71); v19 = v63; v20 = v64; (*(void (__thiscall **)(int, char *, int))(v17 + 32))(v64, &v71, v18 - *(_WORD *)(v63 + 3)); v21 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v22 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v74, v76, 4, *((_DWORD *)v22 + 4), v21); (*(void (__thiscall **)(int, int *, _DWORD))(*(_DWORD *)v20 + 32))(v20, &v76, *(_WORD *)(v19 + 3)); v23 = *(_BYTE *)(v19 + 2); LOWORD(v69) = v69 & 0x3FF | 0x2400; LOWORD(v69) = (v69 ^ *(_BYTE *)(v68 + 16 * v23 + 40)) & 0x3FF ^ v69; LOWORD(v66) = v66 & 0x3FF | 0x2400; LOWORD(v66) = (v66 ^ *((_WORD *)v60 + 4)) & 0x3FF ^ v66; v24 = off_849C18; v25 = v67; *(_WORD *)off_849C18 = 13397; *((_WORD *)v24 + 1) = *(_WORD *)(v25 + 4); *((_DWORD *)v24 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 836))(v25); *((_WORD *)v24 + 4) = *(_WORD *)(a3 + 4); *(_DWORD *)((char *)v24 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *(_DWORD *)((char *)v24 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 836))(v25); *(_DWORD *)((char *)v24 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); *((_WORD *)v24 + 11) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v25 + 2004))(v25) + 4); *((_WORD *)v24 + 12) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2004))(a3) + 4); v26 = v65; *(_WORD *)((char *)v24 + 27) = v76; *(_DWORD *)((char *)v24 + 29) = *(_DWORD *)v26; *(_DWORD *)((char *)v24 + 33) = *(_DWORD *)(v26 + 4); *(_DWORD *)((char *)v24 + 37) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 836))(a3); v27 = *(_DWORD *)(a3 + 122); *(_DWORD *)((char *)v24 + 41) = *(_DWORD *)v27; *(_DWORD *)((char *)v24 + 45) = *(_DWORD *)(v27 + 4); *(_DWORD *)((char *)v24 + 49) = *(_DWORD *)(v27 + 8); v28 = *(_DWORD *)(a3 + 102); *(_DWORD *)((char *)v24 + 53) = *(_DWORD *)v28; *(_DWORD *)((char *)v24 + 57) = *(_DWORD *)(v28 + 4); *(_WORD *)((char *)v24 + 61) = v66; *(_DWORD *)((char *)v24 + 63) = v74; v29 = v63; *(_DWORD *)((char *)v24 + 67) = v75; *(_WORD *)((char *)v24 + 71) = v76; v30 = *(_WORD *)(v29 + 3); *(_DWORD *)((char *)v24 + 81) = HIDWORD(a5); v31 = v64; *(_WORD *)((char *)v24 + 75) = v30; *(_DWORD *)((char *)v24 + 77) = a5; v32 = (*(int (__stdcall **)(char *))(*(_DWORD *)v31 + 28))(&v71); v33 = v64; *(_WORD *)((char *)v24 + 85) = v32; *(_WORD *)((char *)v24 + 87) = (*(int (__stdcall **)(int *))(*(_DWORD *)v33 + 28))(&v76); LODWORD(v34) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1076))(v25); *(_QWORD *)((char *)v24 + 89) = a5 + v34; LODWORD(v35) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1076))(a3); *(_QWORD *)((char *)v24 + 97) = v35 - a5; *((_BYTE *)v24 + 26) = 1; if ( sub_4C81E0(&off_849C18, 105) ) { v36 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v36); } else { sub_639100(&unk_86DDD8, (int)"StreetBoothSell::sbs_SellSplitCreate : Packet Too Long", 105); } v37 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 2004))(v25); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 2004))(v25); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v37 + 72))( v37, *(_WORD *)(v38 + 4), a5, HIDWORD(a5), 1); v39 = v65; v40 = (*(int (__stdcall **)(int))(*(_DWORD *)v64 + 28))(v65 + 8); v41 = *(_WORD *)(v63 + 3); v42 = v40 < v41; v43 = v40 == v41; v44 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 2004); if ( v42 | v43 ) { v67 = v44(v25); v47 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 2004))(v25); v48 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v67 + 48); v68 = *(_WORD *)(v47 + 4); v48(v68, v39, &v69, &v69); } else { v67 = v44(v25); v45 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 2004))(v25); v46 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v67 + 64); v68 = *(_WORD *)(v45 + 4); v46(v68, v39, &v70, &v69, &v69); } v49 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 2004))(v25); ++*(_WORD *)(v49 + 4); v50 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 2004))(a3); v51 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v50 + 72))( v50, *(_WORD *)(v51 + 4), a5, HIDWORD(a5), -1); v52 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); v53 = (**(int (__stdcall ***)(_DWORD))v60[1])(v60[2]); v54 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); (*(void (__thiscall **)(int, _DWORD, int, int *, int *, int *))(*(_DWORD *)v52 + 64))( v52, *(_WORD *)(v54 + 4), v53, &v74, &v66, &v66); v55 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 2004))(a3); ++*(_WORD *)(v55 + 4); --dword_750CB8; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(a3, 26, 14, 2633); --dword_750CB8; } v80 = -1; v57 = &off_6A86A4; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sbs_SellSplitCreate"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (0058F130) -------------------------------------------------------- int __stdcall sub_58F130(int a1, int a2) { __int16 v2; // ST0C_2@1 int v3; // edi@1 int v4; // ebx@1 int v5; // eax@5 int v6; // ST08_4@6 __time32_t v7; // eax@6 __time32_t v8; // eax@6 int v9; // eax@10 int v10; // ST08_4@11 __time32_t v11; // eax@11 __time32_t v12; // eax@11 int v13; // eax@12 int v14; // edi@17 void *v15; // ecx@19 int v16; // eax@31 int v17; // eax@35 char v19; // [sp+10h] [bp-210h]@27 char v20; // [sp+110h] [bp-110h]@16 unsigned int v21; // [sp+210h] [bp-10h]@1 int v22; // [sp+21Ch] [bp-4h]@1 int v23; // [sp+220h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v22 = 0; v3 = sub_54DE90(&unk_13253630, v2); v4 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); if ( *(_WORD *)(a1 + 32) == 2625 ) { if ( v3 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, v3, *(_WORD *)(a1 + 14), 0) ) { v6 = *(_WORD *)(a1 + 14); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK : Seller : "); v8 = sub_43B910(v7, v6); sub_418F20(v8, (int)&unk_13359E04); } } } } if ( v4 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(a1 + 10) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 768))(v4) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, v4, *(_WORD *)(a1 + 16), 0) ) { v10 = *(_WORD *)(a1 + 16); v11 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK : Buyer : "); v12 = sub_43B910(v11, v10); sub_418F20(v12, (int)&unk_13359E04); } } } } v13 = *(_DWORD *)(a1 + 18); if ( v13 == 4 || v13 == 5 || v13 == 6 ) { if ( v3 ) { v14 = *(_DWORD *)(v3 + 122); if ( v14 ) { v15 = (void *)(v14 + 468); if ( v14 == -468 ) { sprintf(&v20, "GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK ºÎ¾² ¸Å´ÏÀ"); sub_6390B0(&unk_86DDD8, (int)&v20, (int)byte_6A492E); } else { if ( v13 == 4 ) { if ( !sub_43A810(v15, *(_WORD *)(a1 + 2), *(_DWORD *)(a1 + 22), *(_DWORD *)(a1 + 26)) ) { sprintf(&v20, "GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK ¾ÆÀÌÅÛÀÌ ÆÈ·È´Âµ¥µµ °Ë»"); sub_6390B0(&unk_86DDD8, (int)&v20, (int)byte_6A492E); } } else { if ( (v13 == 5 || v13 == 6) && !sub_43A920(v15, *(_WORD *)(a1 + 2), *(_DWORD *)(a1 + 22), *(_DWORD *)(a1 + 26), *(_WORD *)(a1 + 30)) ) { sprintf(&v19, "GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK ¾ÆÀÌÅÛÀÌ ÀϺΠÆÈ·È´Âµ¥µµ °Ë»"); sub_6390B0(&unk_86DDD8, (int)&v19, (int)byte_6A492E); } } } } else { sprintf(&v20, "GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK ij¸¯ÅͰ¡ ÀÖ´Â Çʵ带 ãÀ» ¼"); sub_6390B0(&unk_86DDD8, (int)&v20, (int)byte_6A492E); } } else { sprintf(&v20, "GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK ¿À³Ê¸¦ ãÀ» ¼"); sub_6390B0(&unk_86DDD8, (int)&v20, (int)byte_6A492E); } } } else { if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v16 + 40))(v16, *(_WORD *)(a1 + 14)); } if ( v4 && (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(a1 + 10) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 768))(v4) ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v17 + 40))(v17, *(_WORD *)(a1 + 16)); (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 776))( v4, 26, 14, *(_WORD *)(a1 + 32)); } } --dword_750CB8; v22 = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0058F4E0) -------------------------------------------------------- int __thiscall sub_58F4E0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // edi@1 int (__thiscall *v6)(_DWORD); // edx@1 int v7; // eax@3 int v8; // eax@7 int v9; // esi@7 int v10; // edx@7 int v11; // eax@11 unsigned int v12; // edx@11 __int64 v13; // qax@13 __int64 v14; // ST10_8@13 __int64 v15; // qax@13 int v16; // esi@13 unsigned __int64 v17; // qax@13 int v18; // eax@22 int v19; // ST14_4@22 int v20; // eax@22 int (__thiscall *v21)(_DWORD); // eax@22 int v22; // eax@22 int v23; // eax@26 int v25; // [sp-18h] [bp-6Ch]@25 int v26; // [sp-14h] [bp-68h]@25 int v27; // [sp-10h] [bp-64h]@25 __int64 v28; // [sp-Ch] [bp-60h]@25 __int16 v29; // [sp-4h] [bp-58h]@25 int (**v30)(); // [sp+10h] [bp-44h]@22 int *v31; // [sp+24h] [bp-30h]@22 int v32; // [sp+28h] [bp-2Ch]@22 int v33; // [sp+2Ch] [bp-28h]@22 __int64 v34; // [sp+30h] [bp-24h]@13 int v35; // [sp+38h] [bp-1Ch]@1 int v36; // [sp+3Ch] [bp-18h]@9 unsigned int v37; // [sp+40h] [bp-14h]@7 int v38; // [sp+44h] [bp-10h]@5 int v39; // [sp+50h] [bp-4h]@1 int v40; // [sp+60h] [bp+Ch]@15 unsigned int v41; // [sp+60h] [bp+Ch]@18 int v42; // [sp+64h] [bp+10h]@1 int v43; // [sp+64h] [bp+10h]@3 int v44; // [sp+64h] [bp+10h]@7 unsigned __int16 *v45; // [sp+64h] [bp+10h]@9 v4 = this; v35 = (int)"StreetBoothSell::sb_Trade"; sub_4675D0((int)&unk_D020420, (int)"StreetBoothSell::sb_Trade"); dword_7508B8[dword_750CB8] = (int)"StreetBoothSell::sb_Trade"; dword_750AB8[dword_750CB8++] = -1; v5 = a4; v42 = *(_BYTE *)(a4 + 2); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1172); v39 = 0; if ( v42 < v6(a2) ) { v43 = *((_BYTE *)v4 + 16 * v42 + 40); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int, _DWORD))(*(_DWORD *)v7 + 4))( v7, 9, v43, *((_WORD *)v4 + 180)) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(26, 14, 2629); goto LABEL_34; } v38 = *((_DWORD *)v4 + 4 * *(_BYTE *)(v5 + 2) + 11); if ( !v38 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(26, 14, 2631); goto LABEL_34; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1148))(a2); v9 = *(_BYTE *)(v5 + 2); v44 = *((_BYTE *)v4 + 16 * *(_BYTE *)(v5 + 2) + 40); v10 = *(_DWORD *)(v8 + 3668); v37 = *((_BYTE *)v4 + 16 * *(_BYTE *)(v5 + 2) + 40); if ( (signed int)v37 >= (*(int (**)(void))(v10 + 8))() ) { sub_639150(&unk_86DDD8, (int)"StreetBooth::sbs_Sell : Invalid invenslot", v44, v9); (*(void (__stdcall **)(_DWORD, _DWORD, signed int))(*(_DWORD *)a3 + 776))(26, 14, 2628); *((_DWORD *)v4 + 4 * *(_BYTE *)(v5 + 2) + 11) = 0; goto LABEL_34; } v36 = *(_WORD *)(v38 + 8); v45 = (unsigned __int16 *)(v38 + 8); if ( (_WORD)v36 == -1 ) { sub_639100(&unk_86DDD8, (int)"StreetBooth::sbs_Sell : Invalid Item", v37); (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(26, 14, 2631); *((_DWORD *)v4 + 4 * *(_BYTE *)(v5 + 2) + 11) = 0; goto LABEL_34; } v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(v38 + 112) + 28))(v38 + 8); v12 = *(_WORD *)(v5 + 3); v37 = v11; if ( v11 < v12 ) { (*(void (__stdcall **)(_DWORD, _DWORD, signed int))(*(_DWORD *)a3 + 776))(26, 14, 2632); goto LABEL_34; } v13 = (signed int)v12; HIDWORD(v14) = HIDWORD(v13); HIDWORD(v13) = *((_DWORD *)v4 + 4 * (*(_BYTE *)(v5 + 2) + 3) + 1); LODWORD(v14) = v13; LODWORD(v13) = *((_DWORD *)v4 + 4 * (*(_BYTE *)(v5 + 2) + 3)); v15 = v13 * v14; v16 = a3; HIDWORD(v34) = HIDWORD(v15); HIDWORD(v15) = *(_DWORD *)a3; LODWORD(v34) = v15; LODWORD(v17) = (*(int (__thiscall **)(int))(HIDWORD(v15) + 1076))(a3); if ( v17 < v34 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a3 + 776))(a3, 26, 14, 2649); goto LABEL_34; } v40 = sub_418CB0((int)&dword_14D20890, *v45); if ( !sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62EE00, v38) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v16 + 776))(v16, 26, 14, 2628); goto LABEL_34; } if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v38 + 112) + 24))() ) v41 = *(_DWORD *)(*(_DWORD *)v40 + 106); else v41 = 1; if ( v41 < v37 ) { sub_639100(&unk_86DDD8, (int)"StreetBooth::sbs_Sell : Too many lot", v37); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v16 + 776))(v16, 26, 14, 2628); goto LABEL_34; } v18 = *(_DWORD *)v16; v36 = *v45; v19 = (*(int (__thiscall **)(int))(v18 + 1176))(v16); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1148))(v16); sub_43BB70((int)&v30, v20 + 3668, v36, v19); v21 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v16 + 2004); LOBYTE(v39) = 1; v22 = v21(v16); v31 = (int *)&v30; v32 = v22; v33 = 9; if ( sub_486D40(&v31) ) { do { v23 = (**(int (__stdcall ***)(_DWORD))v31[1])(v31[2]); if ( (*(int (__stdcall **)(int))(**(_DWORD **)(v23 + 112) + 28))(v23 + 8) + (unsigned int)*(_WORD *)(v5 + 3) <= v41 ) { sub_58E650(v4, a2, v16, v5, (int)&v30, v34); goto LABEL_33; } } while ( sub_486DA0((void **)&v31) ); if ( v37 > *(_WORD *)(v5 + 3) ) { sub_58EB50(v4, a2, v16, v5, v34); goto LABEL_33; } v29 = *v45; v28 = v34; v27 = v5; v26 = v16; v25 = a2; } else { if ( v37 > *(_WORD *)(v5 + 3) ) { sub_58EB50(v4, a2, v16, v5, v34); LABEL_33: v30 = &off_6A86A4; goto LABEL_34; } v29 = *v45; v28 = v34; v27 = v5; v26 = v16; v25 = a2; } sub_58E240(v4, v25, v26, v27, v28, v29); goto LABEL_33; } (*(void (__stdcall **)(_DWORD, _DWORD, signed int))(*(_DWORD *)a3 + 776))(26, 14, 2628); LABEL_34: --dword_750CB8; v39 = -1; return sub_467660((int)&unk_D020420, (int)"StreetBoothSell::sb_Trade"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0058F970) -------------------------------------------------------- int __stdcall sub_58F970(int a1, int a2) { char v2; // bl@1 unsigned int v3; // esi@1 int v4; // eax@1 int v5; // edi@1 int v6; // ecx@3 v2 = 0; v3 = 0; v4 = a2 + 8; v5 = a1 - a2; while ( 1 ) { if ( *(_DWORD *)(v4 + v5 - 4) != *(_DWORD *)(v4 - 4) ) return 0; v6 = *(_DWORD *)(v5 + v4); if ( v6 < *(_DWORD *)v4 ) return 1; if ( v6 > *(_DWORD *)v4 ) break; if ( v6 > 0 ) v2 = 1; ++v3; v4 += 8; if ( v3 >= 4 ) return (v2 != 1) + 1; } return 2; } //----- (0058F9E0) -------------------------------------------------------- void *__thiscall sub_58F9E0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6EFB48; return result; } // 6EFB48: using guessed type int (__stdcall *off_6EFB48[3])(int); //----- (0058F9F0) -------------------------------------------------------- void __thiscall sub_58F9F0(void *this) { *(_DWORD *)this = off_6EFB48; } // 6EFB48: using guessed type int (__stdcall *off_6EFB48[3])(int); //----- (0058FA00) -------------------------------------------------------- void *__thiscall sub_58FA00(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = off_6EFB58; return result; } // 6EFB58: using guessed type int (__stdcall *off_6EFB58[3])(int); //----- (0058FA10) -------------------------------------------------------- bool __thiscall sub_58FA10(int this, int a2) { return *(_WORD *)(a2 + 4) == *(_WORD *)(*(_DWORD *)(this + 4) + 4); } //----- (0058FA30) -------------------------------------------------------- int __stdcall sub_58FA30(int a1) { return (*(int (**)(void))(*(_DWORD *)a1 + 2204))(); } //----- (0058FA50) -------------------------------------------------------- bool __stdcall sub_58FA50(int a1) { return (*(int (**)(void))(*(_DWORD *)a1 + 1232))() == 2; } //----- (0058FA70) -------------------------------------------------------- int __thiscall sub_58FA70(void *this, __int16 a2, unsigned __int8 a3) { int v3; // esi@1 unsigned __int8 v4; // bl@1 void *v5; // edi@1 int v6; // eax@1 void *v7; // edi@3 int v8; // eax@5 int v9; // eax@7 void *v10; // eax@8 __int16 v12; // [sp+10h] [bp-18h]@8 char v13; // [sp+12h] [bp-16h]@8 int v14; // [sp+13h] [bp-15h]@8 int v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@1 int v17; // [sp+34h] [bp+Ch]@1 v3 = (int)this; v15 = (int)"ShineObjectClass::ShinePlayer::sp_ThirdPromote"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ThirdPromote"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ThirdPromote"; dword_750AB8[dword_750CB8++] = -1; v4 = a3; v16 = 0; v5 = sub_44A140(&unk_8BB3B0, a3); v17 = (*(int (**)(void))(**(_DWORD **)(v3 + 4116) + 72))(); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 72))(v5); if ( v6 == v17 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 4182; *((_WORD *)v7 + 1) = sub_4802C0(v3); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); *((_BYTE *)v7 + 8) = v4; *((_BYTE *)v7 + 9) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1240))(v3); if ( sub_4C81E0(&off_849C18, 10) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ThirdPromote_ACK : Packet Too Long", 10); } if ( v4 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1388))(v3); sub_5B69E0((int)&unk_133595F0, v9, v4); } v13 = 3; v12 = a2; v14 = v4 != 0; v10 = sub_5CF620((void *)(v3 + 82048)); sub_5BCA70(v10, (int)&v12); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_ThirdPromote : ChassChange to another brench", v6 == v17); } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ThirdPromote"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0058FC10) -------------------------------------------------------- int __thiscall sub_58FC10(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; *(_DWORD *)(this + 12) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0058FC30) -------------------------------------------------------- int __thiscall sub_58FC30(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = a2; *(_BYTE *)(this + 8) = 0; *(_DWORD *)(this + 12) = dword_14D129E8; return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0058FC60) -------------------------------------------------------- char __thiscall sub_58FC60(int this, char a2) { *(_BYTE *)(this + 8) = a2; *(_DWORD *)this = 0; *(_DWORD *)(this + 12) = dword_14D129E8; return 1; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0058FC80) -------------------------------------------------------- char __thiscall sub_58FC80(int this) { return *(_BYTE *)(this + 8); } //----- (0058FC90) -------------------------------------------------------- unsigned int __thiscall sub_58FC90(int this) { unsigned int v1; // edx@1 unsigned int v2; // ecx@1 unsigned int result; // eax@2 v1 = *(_DWORD *)(this + 4); v2 = *(_DWORD *)this; if ( v1 > v2 ) result = (v1 - v2) / 0xA; else result = 0; return result; } //----- (0058FCB0) -------------------------------------------------------- char __thiscall sub_58FCB0(int this, int a2) { unsigned int v2; // edx@2 char result; // al@3 if ( *(_BYTE *)(this + 8) && (*(_DWORD *)this += a2, v2 = *(_DWORD *)(this + 4), v2 < *(_DWORD *)this) ) { *(_DWORD *)this -= v2; result = 1; } else { result = 0; } return result; } //----- (0058FCE0) -------------------------------------------------------- char __thiscall sub_58FCE0(int this, int a2) { int v2; // edx@2 unsigned int v3; // edx@2 char result; // al@3 if ( *(_BYTE *)(this + 8) && (v2 = a2 - *(_DWORD *)(this + 12), *(_DWORD *)(this + 12) = a2, *(_DWORD *)this += v2, v3 = *(_DWORD *)(this + 4), v3 < *(_DWORD *)this) ) { *(_DWORD *)this -= v3; result = 1; } else { result = 0; } return result; } //----- (0058FD10) -------------------------------------------------------- int __thiscall sub_58FD10(int this, int a2, unsigned __int64 a3) { int result; // eax@1 unsigned int v4; // edi@2 unsigned int v5; // edi@3 size_t v6; // edi@4 int v7; // ebx@6 int v8; // esi@6 int v9; // ecx@11 int v10; // [sp+0h] [bp-4h]@1 result = a3; v10 = this; if ( a3 > *(_DWORD *)(this + 16) ) { v4 = *(_DWORD *)(this + 16); if ( (unsigned int)a3 >= v4 || (v5 = v4 - a3, HIDWORD(a3) > v5) ) goto LABEL_9; v6 = 1 - HIDWORD(a3) + v5; if ( *(_DWORD *)(this + 20) >= 0x10u ) this = *(_DWORD *)this; v7 = this + a3; v8 = (int)memchr((const void *)(this + a3), *(_BYTE *)a2, v6); if ( v8 ) { while ( sub_4189B0(v8, a2, HIDWORD(a3)) ) { v6 = v6 + v7 - v8 - 1; v7 = v8 + 1; v8 = (int)memchr((const void *)(v8 + 1), *(_BYTE *)a2, v6); if ( !v8 ) goto LABEL_9; } v9 = v10; if ( *(_DWORD *)(v10 + 20) >= 0x10u ) v9 = *(_DWORD *)v10; result = v8 - v9; } else { LABEL_9: result = -1; } } return result; } //----- (0058FDC0) -------------------------------------------------------- void *__cdecl sub_58FDC0(int a1, int a2, void *a3) { void *v3; // edi@2 int v4; // esi@2 void *result; // eax@11 if ( a1 == a2 ) { result = a3; } else { v3 = a3; v4 = a1 + 20; do { if ( v3 != (void *)(v4 - 20) ) { if ( *((_DWORD *)v3 + 5) >= 0x10u ) operator delete(*(void **)v3); *((_DWORD *)v3 + 5) = 15; *((_DWORD *)v3 + 4) = 0; *(_BYTE *)v3 = 0; if ( *(_DWORD *)v4 >= 0x10u ) { *(_DWORD *)v3 = *(_DWORD *)(v4 - 20); *(_DWORD *)(v4 - 20) = 0; } else { memmove_0(v3, (const void *)(v4 - 20), *(_DWORD *)(v4 - 4) + 1); } *((_DWORD *)v3 + 4) = *(_DWORD *)(v4 - 4); *((_DWORD *)v3 + 5) = *(_DWORD *)v4; *(_DWORD *)(v4 - 4) = 0; *(_DWORD *)v4 = 0; } v4 += 28; v3 = (char *)v3 + 28; } while ( v4 - 20 != a2 ); result = v3; } return result; } //----- (0058FE50) -------------------------------------------------------- void __cdecl sub_58FE50(int a1, int a2, int a3, int a4, int a5, int a6) { int v6; // eax@1 int v7; // esi@2 unsigned int v8; // esi@3 unsigned int v9; // eax@3 int v10; // eax@6 bool v11; // zf@8 char v12; // bl@8 void *v13; // ecx@40 void *v14; // eax@40 int v15; // eax@42 void *v16; // eax@49 unsigned int v17; // [sp+18h] [bp-68h]@3 char v18; // [sp+1Ch] [bp-64h]@8 char v19; // [sp+20h] [bp-60h]@8 char v20; // [sp+2Ch] [bp-54h]@3 char v21; // [sp+2Dh] [bp-53h]@3 char v22; // [sp+2Eh] [bp-52h]@3 char v23; // [sp+2Fh] [bp-51h]@8 char v24; // [sp+30h] [bp-50h]@8 char v25; // [sp+34h] [bp-4Ch]@9 void *v26; // [sp+38h] [bp-48h]@53 int v27; // [sp+48h] [bp-38h]@53 unsigned int v28; // [sp+4Ch] [bp-34h]@53 void *v29; // [sp+54h] [bp-2Ch]@3 int v30; // [sp+64h] [bp-1Ch]@3 unsigned int v31; // [sp+68h] [bp-18h]@3 unsigned int v32; // [sp+70h] [bp-10h]@1 int v33; // [sp+7Ch] [bp-4h]@3 int v34; // [sp+80h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v6 = *(_DWORD *)(a2 + 4); if ( *(_DWORD *)a2 != v6 ) { v7 = (int)sub_58FDC0(v6, v6, *(void **)a2); sub_424F20(v7, *(_DWORD *)(a2 + 4)); *(_DWORD *)(a2 + 4) = v7; } v8 = 0; v20 = 0; v22 = 0; v31 = 15; v30 = 0; LOBYTE(v29) = 0; v9 = *(_DWORD *)(a1 + 16); v33 = 0; v21 = 0; v17 = v9; if ( v9 ) { while ( 1 ) { if ( *(_DWORD *)(a1 + 16) <= v8 ) LABEL_61: sub_6517D8((int)"invalid string position"); if ( *(_DWORD *)(a1 + 20) < 0x10u ) v10 = a1; else v10 = *(_DWORD *)a1; v11 = *(_DWORD *)(a6 + 16) == 0; v12 = *(_BYTE *)(v10 + v8); v19 = *(_BYTE *)(v10 + v8); v18 = 0; v23 = 1; v24 = 0; if ( !v11 ) { v25 = v12; if ( sub_58FD10(a6, (int)&v25, 0x100000000ui64) != -1 ) { ++v8; if ( v8 >= v17 ) { v23 = 0; } else { if ( *(_DWORD *)(a1 + 16) <= v8 ) goto LABEL_61; if ( *(_DWORD *)(a1 + 20) < 0x10u ) { v12 = *(_BYTE *)(a1 + v8); v19 = *(_BYTE *)(a1 + v8); v23 = 1; } else { v12 = *(_BYTE *)(*(_DWORD *)a1 + v8); v19 = *(_BYTE *)(*(_DWORD *)a1 + v8); v23 = 1; } } v24 = 1; } } if ( !*(_DWORD *)(a5 + 16) || v24 || (v25 = v12, sub_58FD10(a5, (int)&v25, 0x100000000ui64) == -1) ) goto LABEL_25; if ( v22 ) { if ( v20 != v12 ) goto LABEL_25; v22 = 0; v20 = 0; } else { v22 = 1; v20 = v12; } v23 = 0; LABEL_25: if ( *(_DWORD *)(a3 + 16) ) { if ( !v24 ) { if ( !v22 ) { v25 = v12; if ( sub_58FD10(a3, (int)&v25, 0x100000000ui64) != -1 ) { if ( v30 ) v21 = 1; v23 = 0; } } } } v11 = *(_DWORD *)(a4 + 16) == 0; v25 = 0; if ( v11 || v24 || v22 || (v24 = v12, sub_58FD10(a4, (int)&v24, 0x100000000ui64) == -1) ) { if ( v23 == 1 ) { v13 = v29; v14 = v29; if ( v31 < 0x10 ) v14 = &v29; v15 = (int)((char *)v14 + v30); if ( v31 < 0x10 ) v13 = &v29; if ( v15 ) v15 -= (signed int)v13; sub_4DCC50((int)&v29, v15, 1u, v19); } } else { if ( v30 ) v21 = 1; v18 = v12; v25 = 1; } if ( v21 == 1 && v30 ) { sub_564030(a2, (int)&v29); v16 = v29; v30 = 0; if ( v31 < 0x10 ) v16 = &v29; *(_BYTE *)v16 = 0; v21 = 0; } if ( v25 == 1 ) { v28 = 15; v27 = 0; LOBYTE(v26) = 0; LOBYTE(v33) = 1; sub_4DCC50((int)&v26, 0, 1u, v18); sub_564030(a2, (int)&v26); LOBYTE(v33) = 0; if ( v28 >= 0x10 ) operator delete(v26); } ++v8; if ( v17 <= v8 ) { if ( v30 ) sub_564030(a2, (int)&v29); if ( v31 >= 0x10 ) operator delete(v29); return; } } } } // 86FEB8: using guessed type int __security_cookie; //----- (00590140) -------------------------------------------------------- bool __thiscall sub_590140(void *this) { return sub_50D480((int)((char *)this + 84520)); } //----- (00590150) -------------------------------------------------------- void *__thiscall sub_590150(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // edi@1 int v5; // eax@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_CloseTradeMenu"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_CloseTradeMenu"; dword_750AB8[dword_750CB8++] = -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 + 1576))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1716))(v1, 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_CloseTradeMenu"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00590230) -------------------------------------------------------- int __thiscall sub_590230(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@5 int v6; // edi@9 __int16 v7; // bx@32 __int16 v8; // bx@32 int v9; // eax@32 int v10; // eax@32 int v11; // ebx@32 int v12; // ebx@32 void *v13; // eax@32 int v14; // eax@34 signed int v16; // [sp-4h] [bp-24h]@4 int v17; // [sp-4h] [bp-24h]@14 signed int v18; // [sp-4h] [bp-24h]@16 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1325878C & 1) ) { dword_1325878C |= 1u; word_13258788 = 70; atexit(nullsub_164); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_13258788) ) { v16 = 1729; LABEL_39: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 4, v16); goto LABEL_40; } v5 = *(_DWORD *)(v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 156) ) { v16 = 1734; goto LABEL_39; } if ( *(_WORD *)(a2 + 2) == *(_WORD *)(v4 + 4) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 4, 1730); LABEL_40: v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; goto LABEL_41; } v6 = sub_54DE90(&unk_13253630, *(_WORD *)(a2 + 2)); if ( !v6 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 2 ) { v18 = 1730; goto LABEL_17; } if ( !sub_50D480(v4 + 84520) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2424))(v6) ) goto LABEL_44; if ( (unsigned int)sub_402710(v4, v6) > 0xF4240 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 4, 1731); v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; goto LABEL_41; } if ( !((1 << (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1156))(v6)) & (unsigned __int16)word_13258788) ) { v18 = 1738; LABEL_17: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 4, v18); v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; goto LABEL_41; } if ( *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 796))(v6) + 6) != -1 || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 796))(v6) != -1 || *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 796))(v4) + 6) != -1 || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 796))(v4) != -1 || *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 796))(v6) + 8) != -1 || *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 796))(v6) + 2) != -1 || *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 796))(v4) + 8) != -1 || *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 796))(v4) + 2) != -1 ) { v18 = 1732; goto LABEL_17; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1708))(v4, 2) || !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 1708))(v6, 2) ) { LABEL_44: v18 = 1736; goto LABEL_17; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1584))(v4) ) { v18 = 1739; goto LABEL_17; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1584))(v6) ) { v18 = 1740; goto LABEL_17; } v7 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6) + 4); *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 796))(v6) + 16) = v7; v8 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4) + 4); *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 796))(v4) + 16) = v8; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6); ++*(_WORD *)(v9 + 4); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v10 + 4); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1712))(v4, 2); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 1712))(v6, 2); *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 796))(v4) = *(_WORD *)(a2 + 2); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 796))(v4) + 2) = v11; *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 796))(v6) + 6) = *(_WORD *)(v4 + 4); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 796))(v6) + 8) = v12; v13 = off_849C18; *(_WORD *)off_849C18 = 19458; *((_WORD *)v13 + 1) = *(_WORD *)(v4 + 4); if ( sub_4C81E0(&off_849C18, 4) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, v6, &off_849C18); v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_PROPOSE_REQ : Packet Too Long", 4); v17 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; } LABEL_41: --dword_750CB8; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258788: using guessed type __int16 word_13258788; // 1325878C: using guessed type int dword_1325878C; //----- (005906C0) -------------------------------------------------------- int __thiscall sub_5906C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // edx@1 int v6; // ebx@6 __int16 v7; // di@6 int v8; // eax@6 void *v9; // esi@6 int v11; // [sp-4h] [bp-28h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_CANCEL_CMD"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_CANCEL_CMD"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258794 & 1) ) { dword_13258794 |= 1u; word_13258790 = 126; atexit(nullsub_165); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258790 && *((_WORD *)v4 + 42226) != -1 ) { v6 = *(_DWORD *)((char *)v4 + 84454); v7 = *((_WORD *)v4 + 42226); sub_590150(v4); v8 = sub_54DE90(&unk_13253630, v7); v9 = (void *)v8; if ( v8 && (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8) == v6 ) { sub_590150(v9); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v9 + 772))(v9, 19, 8); } --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_CANCEL_CMD"; } else { dword_750CB8 -= v5; v11 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_CANCEL_CMD"; } return sub_467660((int)&unk_D020420, v11); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258790: using guessed type __int16 word_13258790; // 13258794: using guessed type int dword_13258794; //----- (00590810) -------------------------------------------------------- int __thiscall sub_590810(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 __int16 v6; // di@5 int v7; // eax@6 void *v8; // esi@6 int v10; // [sp-4h] [bp-28h]@4 int v11; // [sp+14h] [bp-10h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_ASKNO_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_ASKNO_ACK"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1325879C & 1) ) { dword_1325879C |= 1u; word_13258798 = 126; atexit(nullsub_166); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258798 ) { v6 = *((_WORD *)v4 + 42229); v11 = *((_DWORD *)v4 + 21115); sub_590150(v4); if ( v6 != -1 ) { v7 = sub_54DE90(&unk_13253630, v6); v8 = (void *)v7; if ( v7 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7) == v11 ) { sub_590150(v8); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v8 + 776))(v8, 19, 4, 1735); } } } --dword_750CB8; v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_ASKNO_ACK"; } else { dword_750CB8 -= v5; v10 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_ASKNO_ACK"; } return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258798: using guessed type __int16 word_13258798; // 1325879C: using guessed type int dword_1325879C; //----- (00590960) -------------------------------------------------------- int __thiscall sub_590960(void *this, int a2, int a3, int a4) { void *v4; // edi@1 signed int v5; // edx@1 __int16 v6; // ax@5 int v7; // eax@6 int v8; // esi@6 void *v9; // ecx@9 int v10; // ST20_4@13 void *v11; // ebx@16 int v12; // eax@18 int v13; // eax@21 int v15; // [sp-4h] [bp-28h]@4 int v16; // [sp+14h] [bp-10h]@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132587A4 & 1) ) { dword_132587A4 |= 1u; word_132587A0 = 126; atexit(nullsub_167); v5 = 1; } if ( !((v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132587A0) || (v6 = *((_WORD *)v4 + 42229), v16 = *((_DWORD *)v4 + 21115), v6 == -1) ) { dword_750CB8 -= v5; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK"; return sub_467660((int)&unk_D020420, v15); } v7 = sub_54DE90(&unk_13253630, v6); v8 = v7; if ( !v7 || (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7) != v16 ) { LABEL_25: --dword_750CB8; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK"; return sub_467660((int)&unk_D020420, v15); } if ( !((1 << (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1156))(v8)) & (unsigned __int16)word_132587A0) || *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 796))(v8) == -1 || *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 796))(v8) + 2) == 65535 || *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) != *((_WORD *)v4 + 2) || (v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) + 2, *(_DWORD *)v10 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4)) ) { v9 = v4; LABEL_24: sub_590150(v9); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v8 + 776))(v8, 19, 4, 1736); goto LABEL_25; } if ( !sub_50D480((int)((char *)v4 + 84520)) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2424))(v8) ) { sub_590150(v4); v9 = (void *)v8; goto LABEL_24; } v11 = off_849C18; *(_WORD *)off_849C18 = 19465; *((_WORD *)v11 + 1) = *((_WORD *)v4 + 42229); if ( sub_4C81E0(&off_849C18, 4) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK : Packet Too Long", 4); } *((_WORD *)v11 + 1) = *((_WORD *)v4 + 2); if ( sub_4C81E0(&off_849C18, 4) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK : Packet Too Long", 4); } (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 1580))(v8, v4); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v4 + 1580))(v4, v8); --dword_750CB8; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK"; return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587A0: using guessed type __int16 word_132587A0; // 132587A4: using guessed type int dword_132587A4; //----- (00590C40) -------------------------------------------------------- int __thiscall sub_590C40(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // eax@1 void *v6; // edi@5 int v8; // [sp-4h] [bp-20h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132587AC & 1) ) { dword_132587AC |= 1u; word_132587A8 = 126; atexit(nullsub_168); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_132587A8 ) { v6 = *(void **)((char *)v4 + 84471); sub_590150(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 19, 11); if ( v6 ) { sub_590150(v6); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 772))(v6, 19, 12); } --dword_750CB8; v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"; } else { dword_750CB8 -= v5; v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"; } return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587A8: using guessed type __int16 word_132587A8; // 132587AC: using guessed type int dword_132587AC; //----- (00590D60) -------------------------------------------------------- char __thiscall sub_590D60(void *this) { void *v1; // esi@1 signed int v2; // eax@1 char result; // al@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"; v2 = 1; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)((char *)v1 + 84471) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 0; } else { if ( *((_DWORD *)v1 + 21116) < (unsigned int)dword_14D129E8 ) { sub_590150(v1); *((_DWORD *)v1 + 21116) = dword_14D129E8 + 600; v2 = 1; } dword_750CB8 -= v2; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00590E60) -------------------------------------------------------- int __thiscall sub_590E60(void *this) { void *v1; // esi@1 void *v2; // edi@1 void *v3; // eax@3 void *v4; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_tradebreak"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_tradebreak"; dword_750AB8[dword_750CB8++] = -1; v2 = *(void **)((char *)v1 + 84471); if ( v2 ) { v3 = sub_590150(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 772))(v3, 19, 12); v4 = sub_590150(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 19, 12); --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_tradebreak"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00590F40) -------------------------------------------------------- int __thiscall sub_590F40(void *this) { void *v1; // ebx@1 bool v2; // zf@1 int v3; // esi@5 int v4; // eax@5 void *v5; // edi@5 int v6; // edi@6 void *v7; // eax@7 int v8; // esi@7 int v9; // ST04_4@7 int v10; // eax@7 void *v11; // eax@7 int v13; // [sp-4h] [bp-3Ch]@2 char v14; // [sp+10h] [bp-28h]@7 char v15; // [sp+1Ch] [bp-1Ch]@7 int v16; // [sp+28h] [bp-10h]@1 int v17; // [sp+34h] [bp-4h]@1 v1 = this; v16 = (int)"ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 38903) == 0; v17 = 0; if ( v2 ) { --dword_750CB8; v17 = -1; v13 = (int)"ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1156))(v1) == 5 ) { (*(void (**)(void))(**((_DWORD **)v1 + 38903) + 16))(); v3 = **((_DWORD **)v1 + 38903); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2004))(v1); (*(void (__thiscall **)(_DWORD, int))(v3 + 12))(*((_DWORD *)v1 + 38903), v4); **((_BYTE **)v1 + 957) = 1; v5 = (void *)(*(_DWORD *)((char *)v1 + 32650) + 37); if ( *((_BYTE *)v1 + 155503) ) { memcpy(v5, (char *)v1 + 155460, 0x28u); v6 = (int)((char *)v5 + 40); *(_WORD *)v6 = *((_WORD *)v1 + 77750); *(_BYTE *)(v6 + 2) = *((_BYTE *)v1 + 155502); *((_BYTE *)v1 + 155503) = 0; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 26, 5, 2625); v7 = off_849C18; *(_WORD *)off_849C18 = 26630; *((_WORD *)v7 + 1) = *((_WORD *)v1 + 2); v8 = *(_DWORD *)((char *)v1 + 32650) + 37; memcpy((char *)v7 + 4, (const void *)v8, 0x28u); v8 += 40; *((_WORD *)v7 + 22) = *(_WORD *)v8; *((_BYTE *)v7 + 46) = *(_BYTE *)(v8 + 2); sub_4287B0(&v14, &off_849C18, 47); v9 = *(_DWORD *)((char *)v1 + 102); LOBYTE(v17) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00(v1, v10, v9, 0, 0, (int)&v14, 0, 65535); v11 = off_849C18; *(_WORD *)off_849C18 = 26647; *((_WORD *)v11 + 1) = *((_WORD *)v1 + 2); sub_4287B0(&v15, &off_849C18, 4); LOBYTE(v17) = 2; sub_549B60(v1, (int)&v15, 0); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1716))(v1, 2); LOBYTE(v17) = 1; sub_428A70(&v15); LOBYTE(v17) = 0; sub_428A70(&v14); v17 = -1; v13 = (int)"ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; } else { v17 = -1; v13 = (int)"ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; } --dword_750CB8; } return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591140) -------------------------------------------------------- int __thiscall sub_591140(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_CloseByLink"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_CloseByLink"; dword_750AB8[dword_750CB8++] = -1; sub_590E60(v1); sub_56BA80(v1); sub_590F40(v1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_CloseByLink"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005911F0) -------------------------------------------------------- bool __stdcall sub_5911F0(int a1) { bool result; // al@2 __int16 v2; // ax@3 int v3; // eax@3 int v4; // ebx@7 int v5; // edi@8 if ( a1 ) { v2 = sub_63FD50(a1); v3 = sub_418CB0((int)&dword_14D20890, v2); if ( v3 && *(_DWORD *)v3 && (unsigned int)sub_46F910(a1) <= *(_DWORD *)(*(_DWORD *)v3 + 106) ) { v4 = (int)sub_5CF620((void *)a1); if ( v4 && (v5 = sub_43BBE0(a1)) != 0 && sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62EE00, a1) ) result = sub_48F9E0(v5, v4) != 1; else result = 0; } else { result = 0; } } else { result = 0; } return result; } // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (00591290) -------------------------------------------------------- int __thiscall sub_591290(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_Clear"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_Clear"; dword_750AB8[dword_750CB8++] = -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; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Clear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591300) -------------------------------------------------------- int __thiscall sub_591300(void *this, int a2) { void (__stdcall *v2)(_DWORD, _DWORD); // edx@2 int result; // eax@2 if ( *((_BYTE *)this + 84475) ) { v2 = *(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772); *((_BYTE *)this + 84475) = 0; v2(19, 29); result = (*(int (__stdcall **)(signed int, signed int))(*(_DWORD *)a2 + 772))(19, 30); } return result; } //----- (00591340) -------------------------------------------------------- int __thiscall sub_591340(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // edi@5 unsigned int v7; // ecx@12 unsigned int v8; // eax@12 void *v9; // edi@14 int v10; // eax@16 int v11; // eax@19 int v13; // [sp-4h] [bp-24h]@4 signed int v14; // [sp-4h] [bp-24h]@6 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132587B4 & 1) ) { dword_132587B4 |= 1u; word_132587B0 = 126; atexit(nullsub_169); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132587B0 ) { v6 = *(_DWORD *)(v4 + 84471); if ( v6 ) { if ( (unsigned int)sub_402710(v4, *(_DWORD *)(v4 + 84471)) > 0xF4240 ) { sub_590E60((void *)v4); goto LABEL_20; } if ( !*(_BYTE *)(v4 + 84475) ) { v7 = *(_DWORD *)(a2 + 6); v8 = *(_DWORD *)(a2 + 2); if ( __PAIR__(v7, v8) <= *(_QWORD *)(v4 + 32719) ) { *(_DWORD *)(v4 + 84489) = v8; *(_DWORD *)(v4 + 84493) = v7; (*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 2000))(v6, v4); v9 = off_849C18; *(_WORD *)off_849C18 = 19479; *(_DWORD *)((char *)v9 + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)((char *)v9 + 6) = *(_DWORD *)(a2 + 6); if ( sub_4C81E0(&off_849C18, 10) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Packet Too Long", 10); } *(_WORD *)v9 = 19480; *(_DWORD *)((char *)v9 + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)((char *)v9 + 6) = *(_DWORD *)(a2 + 6); if ( sub_4C81E0(&off_849C18, 10) ) { v11 = (*(int (**)(void))(**(_DWORD **)(v4 + 84471) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v11 + 12))( v11, *(_DWORD *)(v4 + 84471), &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Packet Too Long", 10); } } else { sub_639100( &unk_86DDD8, (int)"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); } goto LABEL_20; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Locked", *(_BYTE *)(v4 + 84475) == 0); v14 = 2115; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Not activ", 0); v14 = 2114; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 22, v14); LABEL_20: --dword_750CB8; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"; return sub_467660((int)&unk_D020420, v13); } dword_750CB8 -= v5; v13 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587B0: using guessed type __int16 word_132587B0; // 132587B4: using guessed type int dword_132587B4; //----- (005915D0) -------------------------------------------------------- int __thiscall sub_5915D0(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // edx@7 int v7; // ecx@7 void (__thiscall *v8)(_DWORD, _DWORD, _DWORD); // eax@10 signed int v10; // [sp-4h] [bp-20h]@7 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132587BC & 1) ) { dword_132587BC |= 1u; word_132587B8 = 126; atexit(nullsub_170); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132587B8 ) { if ( *(_DWORD *)(v4 + 84471) && !*(_BYTE *)(v4 + 84475) ) { if ( (unsigned int)sub_402710(v4, *(_DWORD *)(v4 + 84471)) > 0xF4240 ) { sub_590E60((void *)v4); LABEL_12: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"); } v8 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772); *(_BYTE *)(v4 + 84475) = 1; v8(v4, 19, 27); v7 = *(_DWORD *)(v4 + 84471); v6 = *(_DWORD *)v7; v10 = 28; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ : Not activ or already locked", 0); v6 = *(_DWORD *)v4; v10 = 26; v7 = v4; } (*(void (__thiscall **)(int, signed int, signed int))(v6 + 772))(v7, 19, v10); goto LABEL_12; } dword_750CB8 -= v5; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587B8: using guessed type __int16 word_132587B8; // 132587BC: using guessed type int dword_132587BC; //----- (00591730) -------------------------------------------------------- int __thiscall sub_591730(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { 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 int v16; // eax@8 int v17; // ST04_4@8 __int64 v18; // qax@8 __int64 v19; // qax@9 v7 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_FillCen"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_FillCen"; dword_750AB8[dword_750CB8++] = -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 *)(a7 + 17) = 0; *(_DWORD *)(a7 + 21) = 0; *(_DWORD *)(a7 + 25) = 0; *(_DWORD *)(a7 + 29) = 0; *(_DWORD *)(a7 + 33) = 0; *(_DWORD *)(a7 + 37) = 0; goto LABEL_11; } v12 = a7; *(_DWORD *)(a7 + 21) = (__PAIR__(v10, v8) - __PAIR__(v9, v11)) >> 32; v16 = *(_DWORD *)(a7 + 21); *(_DWORD *)(a7 + 17) = v8 - v11; v17 = *(_DWORD *)(a7 + 17); *(_BYTE *)(a7 + 16) = 66; (*(void (__stdcall **)(_DWORD, int, int, signed int))(**(_DWORD **)(a5 + 14) + 72))( *(_WORD *)(a2 + 22), v17, v16, 1); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(**(_DWORD **)(a6 + 14) + 72))( *(_WORD *)(a3 + 22), *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), -1); LODWORD(v18) = (*(int (**)(void))(**(_DWORD **)a6 + 1076))(); *(_QWORD *)(v12 + 25) = v18 - *(_QWORD *)(v12 + 17); v15 = *(_DWORD *)a5; } else { v12 = a7; *(_QWORD *)(a7 + 17) = __PAIR__(v9, v11) - __PAIR__(v10, v8); v13 = *(_DWORD *)(a7 + 17); *(_BYTE *)(a7 + 16) = 65; (*(void (__stdcall **)(_DWORD, int, _DWORD, signed int))(**(_DWORD **)(a5 + 14) + 72))( *(_WORD *)(a2 + 22), v13, (__PAIR__(v9, v11) - __PAIR__(v10, v8)) >> 32, -1); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(**(_DWORD **)(a6 + 14) + 72))( *(_WORD *)(a3 + 22), *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), 1); LODWORD(v14) = (*(int (**)(void))(**(_DWORD **)a5 + 1076))(); *(_QWORD *)(v12 + 25) = v14 - *(_QWORD *)(v12 + 17); v15 = *(_DWORD *)a6; } LODWORD(v19) = (*(int (**)(void))(*(_DWORD *)v15 + 1076))(); *(_QWORD *)(v12 + 33) = *(_QWORD *)(v12 + 17) + v19; LABEL_11: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_FillCen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005918F0) -------------------------------------------------------- char __thiscall sub_5918F0(void *this, int a2) { void *v2; // esi@1 char v3; // bl@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_Get"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_Get"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)a2 < 12 ) v3 = *((_BYTE *)v2 + *(_DWORD *)a2 + 6); else v3 = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Get"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591970) -------------------------------------------------------- char __thiscall sub_591970(void *this, int a2) { void *v2; // esi@1 int v4; // eax@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_Next"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_Next"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)a2 >= 12 ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Next"); return 0; } v4 = *(_DWORD *)a2 + 1; *(_DWORD *)a2 = v4; if ( *((_BYTE *)v2 + v4 + 6) == -1 ) { while ( 1 ) { ++v4; *(_DWORD *)a2 = v4; if ( v4 >= 12 ) break; if ( *((_BYTE *)v2 + v4 + 6) != -1 ) goto LABEL_7; } --dword_750CB8; goto LABEL_3; } LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Next"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591A60) -------------------------------------------------------- int __stdcall sub_591A60(int a1, int a2) { int v2; // esi@1 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); sub_590150((void *)v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 19, 35, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591B60) -------------------------------------------------------- int __stdcall sub_591B60(int a1, int a2) { int v2; // esi@1 int v3; // eax@3 int v4; // ST04_4@4 __time32_t v5; // eax@4 __time32_t v6; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 0) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } sub_590150((void *)v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591C70) -------------------------------------------------------- char __thiscall sub_591C70(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_Home"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_Home"; dword_750AB8[dword_750CB8++] = -1; *(_DWORD *)a2 = -1; v3 = sub_591970(v2, a2); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Home"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00591D20) -------------------------------------------------------- char __thiscall sub_591D20(void *this, int a2, int a3, int a4, int a5) { int v5; // ebx@1 int (*v6)(void); // eax@1 int v7; // eax@1 int v8; // ecx@1 int v9; // edx@1 int v10; // eax@2 int v11; // edi@4 int (*v12)(void); // eax@4 int v13; // eax@4 int v14; // ecx@4 int v15; // edx@4 int v16; // eax@5 int (*v17)(void); // eax@7 int v18; // eax@7 int v19; // ecx@7 int v20; // eax@7 char v21; // al@7 void *v22; // ecx@7 int v23; // esi@7 signed int v24; // eax@8 int v25; // edi@11 signed int v26; // eax@11 int v27; // ecx@14 int v28; // edi@15 int v29; // eax@17 int v30; // eax@20 int v31; // ecx@20 __int16 v32; // ax@21 int v33; // edx@23 int v34; // eax@23 int v35; // ecx@23 __int16 v36; // ax@24 int v37; // eax@28 int v38; // ecx@28 __int16 v39; // ax@29 int v40; // eax@31 int v41; // ecx@31 int v42; // edx@31 int v43; // edi@33 int v44; // eax@36 int v45; // ecx@36 int v46; // eax@36 int v47; // ecx@36 signed __int16 v48; // ax@37 signed __int16 v49; // cx@41 int (**v51)(); // [sp+10h] [bp-64h]@1 int v52; // [sp+14h] [bp-60h]@1 int v53; // [sp+1Ch] [bp-58h]@4 int (**v54)(); // [sp+20h] [bp-54h]@4 int v55; // [sp+24h] [bp-50h]@4 int v56; // [sp+2Ch] [bp-48h]@7 int *v57; // [sp+30h] [bp-44h]@7 int v58; // [sp+34h] [bp-40h]@7 int v59; // [sp+38h] [bp-3Ch]@7 int *v60; // [sp+3Ch] [bp-38h]@7 int v61; // [sp+40h] [bp-34h]@7 int v62; // [sp+44h] [bp-30h]@7 int v63; // [sp+48h] [bp-2Ch]@1 int v64; // [sp+4Ch] [bp-28h]@7 int v65; // [sp+50h] [bp-24h]@7 void *v66; // [sp+54h] [bp-20h]@1 int v67; // [sp+58h] [bp-1Ch]@17 int v68; // [sp+5Ch] [bp-18h]@7 int v69; // [sp+60h] [bp-14h]@7 char v70; // [sp+66h] [bp-Eh]@7 char v71; // [sp+67h] [bp-Dh]@7 int v72; // [sp+70h] [bp-4h]@1 int v73; // [sp+7Ch] [bp+8h]@8 int v74; // [sp+7Ch] [bp+8h]@27 char v75; // [sp+7Fh] [bp+Bh]@12 int v76; // [sp+84h] [bp+10h]@32 char v77; // [sp+87h] [bp+13h]@9 v66 = this; v63 = (int)"TradeBoard::tb_FillTradeBuffer"; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_FillTradeBuffer"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_FillTradeBuffer"; dword_750AB8[dword_750CB8++] = -1; v5 = a2; v6 = *(int (**)(void))(**(_DWORD **)a2 + 1176); v72 = 0; v7 = v6(); v8 = *(_DWORD *)(a2 + 10); v51 = &off_6A86A4; v52 = v8; v9 = *(_DWORD *)v8; if ( v7 ) v10 = (*(int (__stdcall **)(int))(v9 + 4))(v7); else v10 = (*(int (**)(void))(v9 + 8))(); v53 = v10; v51 = (int (**)())&off_6A86B4; v11 = a3; v12 = *(int (**)(void))(**(_DWORD **)a3 + 1176); LOBYTE(v72) = 1; v13 = v12(); v14 = *(_DWORD *)(a3 + 10); v54 = &off_6A86A4; v55 = v14; v15 = *(_DWORD *)v14; if ( v13 ) v16 = (*(int (__stdcall **)(int))(v15 + 4))(v13); else v16 = (*(int (**)(void))(v15 + 8))(); v56 = v16; v54 = (int (**)())&off_6A86B4; v17 = *(int (**)(void))(**(_DWORD **)a2 + 2004); LOBYTE(v72) = 2; v18 = v17(); v57 = (int *)&v51; v19 = *(_DWORD *)a3; v58 = v18; v59 = 9; v20 = (*(int (**)(void))(*(_DWORD *)v19 + 2004))(); v60 = (int *)&v54; v61 = v20; v62 = 9; v70 = sub_486D40(&v57); v21 = sub_486D40(&v60); v22 = *(void **)(a2 + 18); v71 = v21; sub_591C70(v22, (int)&v65); sub_591C70(*(void **)(a3 + 18), (int)&v64); v23 = a4; LOWORD(v68) = v68 & 0x3FF | 0x2400; LOWORD(v69) = v69 & 0x3FF | 0x2400; while ( 1 ) { v73 = *(_DWORD *)(v5 + 18); sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_Get"); v24 = v65; dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_Get"; dword_750AB8[dword_750CB8++] = -1; if ( v24 < 12 ) v77 = *(_BYTE *)(v73 + v24 + 6); else v77 = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Get"); v25 = *(_DWORD *)(v11 + 18); sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_Get"); v26 = v64; dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_Get"; dword_750AB8[dword_750CB8++] = -1; if ( v26 < 12 ) v75 = *(_BYTE *)(v25 + v26 + 6); else v75 = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_Get"); LOWORD(v69) = (v69 ^ (unsigned __int8)v77) & 0x3FF ^ v69; v27 = *(_DWORD *)v5; LOWORD(v68) = (v68 ^ (unsigned __int8)v75) & 0x3FF ^ v68; if ( (unsigned __int8)v77 < (*(int (**)(void))(*(_DWORD *)v27 + 1164))() ) { v28 = (***(int (__stdcall ****)(_DWORD))(v5 + 10))((unsigned __int8)v77); if ( !(*(_WORD *)(v28 + 8) != -1) ) { sub_639100(&unk_86DDD8, (int)"TradeBoard::tb_FillTradeBuffer : Trade empty", 0); v49 = 2117; goto LABEL_42; } if ( !sub_5911F0(v28) ) { *(_WORD *)a5 = 2129; goto LABEL_43; } v29 = **(_DWORD **)a3; v67 = (unsigned __int8)v75; if ( (unsigned __int8)v75 >= (*(int (**)(void))(v29 + 1164))() ) { v74 = (**(int (__stdcall ***)(_DWORD))v60[1])(v60[2]); if ( !v71 ) { *(_WORD *)a5 = 2121; goto LABEL_43; } *(_BYTE *)(26 * *(_BYTE *)(v23 + 41) + v23 + 54) = v77; v37 = 26 * *(_BYTE *)(v23 + 41); *(_DWORD *)(v37 + v23 + 42) = *(_DWORD *)v28; *(_DWORD *)(v37 + v23 + 46) = *(_DWORD *)(v28 + 4); *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 50) = *(_WORD *)(v28 + 8); v38 = *(_DWORD *)(v28 + 112); if ( v38 ) v39 = (*(int (__stdcall **)(int))(*(_DWORD *)v38 + 28))(v28 + 8); else v39 = 0; *(_WORD *)(26 * (*(_BYTE *)(v23 + 41) + 2) + v23) = v39; (*(void (__stdcall **)(_DWORD, int, int *, int *))(**(_DWORD **)(v5 + 14) + 48))( *(_WORD *)(v5 + 22), v28, &v69, &v69); *(_BYTE *)(26 * *(_BYTE *)(v23 + 41) + v23 + 67) = *((_BYTE *)v60 + 8); v40 = 26 * *(_BYTE *)(v23 + 41); *(_DWORD *)(v40 + v23 + 55) = -1; *(_DWORD *)(v40 + v23 + 59) = -1; *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 63) = -1; *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 65) = 0; v41 = *(_DWORD *)(a3 + 14); v42 = *(_WORD *)(a3 + 22); LOWORD(v68) = (v68 ^ *((_WORD *)v60 + 4)) & 0x3FF ^ v68; (*(void (__stdcall **)(int, int, int, int *, int *))(*(_DWORD *)v41 + 64))(v42, v74, v28, &v68, &v68); v71 = sub_486DA0((void **)&v60); } else { v67 = (***(int (__stdcall ****)(_DWORD))(a3 + 10))(v67); if ( !(*(_WORD *)(v67 + 8) != -1) ) { sub_639100(&unk_86DDD8, (int)"TradeBoard::tb_FillTradeBuffer : Trade empty", 0); *(_WORD *)a5 = 2117; goto LABEL_43; } if ( !sub_5911F0(v67) ) { v49 = 2129; goto LABEL_42; } *(_BYTE *)(26 * *(_BYTE *)(v23 + 41) + v23 + 54) = v77; v30 = 26 * *(_BYTE *)(v23 + 41); *(_DWORD *)(v30 + v23 + 42) = *(_DWORD *)v28; *(_DWORD *)(v30 + v23 + 46) = *(_DWORD *)(v28 + 4); *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 50) = *(_WORD *)(v28 + 8); v31 = *(_DWORD *)(v28 + 112); if ( v31 ) v32 = (*(int (__stdcall **)(int))(*(_DWORD *)v31 + 28))(v28 + 8); else v32 = 0; *(_WORD *)(26 * (*(_BYTE *)(v23 + 41) + 2) + v23) = v32; (*(void (__stdcall **)(_DWORD, int, int, int *, int *))(**(_DWORD **)(v5 + 14) + 64))( *(_WORD *)(v5 + 22), v28, v67, &v69, &v69); v33 = v67; *(_BYTE *)(26 * *(_BYTE *)(v23 + 41) + v23 + 67) = v75; v34 = 26 * *(_BYTE *)(v23 + 41); *(_DWORD *)(v34 + v23 + 55) = *(_DWORD *)v33; *(_DWORD *)(v34 + v23 + 59) = *(_DWORD *)(v33 + 4); *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 63) = *(_WORD *)(v33 + 8); v35 = *(_DWORD *)(v33 + 112); if ( v35 ) { v36 = (*(int (__stdcall **)(int))(*(_DWORD *)v35 + 28))(v33 + 8); v33 = v67; } else { v36 = 0; } *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 65) = v36; (*(void (__thiscall **)(_DWORD, _DWORD, int, int, int *, int *))(**(_DWORD **)(a3 + 14) + 64))( *(_DWORD *)(a3 + 14), *(_WORD *)(a3 + 22), v33, v28, &v68, &v68); } goto LABEL_40; } v76 = (**(int (__stdcall ***)(_DWORD))v57[1])(v57[2]); if ( (unsigned __int8)v75 >= (*(int (**)(void))(**(_DWORD **)a3 + 1164))() ) break; v43 = (***(int (__stdcall ****)(_DWORD))(a3 + 10))((unsigned __int8)v75); if ( !(*(_WORD *)(v43 + 8) != -1) ) { sub_639100(&unk_86DDD8, (int)"TradeBoard::tb_FillTradeBuffer : Trade empty", 0); goto LABEL_43; } if ( !sub_5911F0(v43) ) { *(_WORD *)a5 = 2129; goto LABEL_43; } if ( !v70 ) { v49 = 2121; LABEL_42: *(_WORD *)a5 = v49; LABEL_43: --dword_750CB8; v54 = &off_6A86A4; v51 = &off_6A86A4; v72 = -1; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_FillTradeBuffer"); return 0; } *(_BYTE *)(26 * *(_BYTE *)(v23 + 41) + v23 + 54) = *((_BYTE *)v57 + 8); v44 = 26 * *(_BYTE *)(v23 + 41); *(_DWORD *)(v44 + v23 + 42) = -1; *(_DWORD *)(v44 + v23 + 46) = -1; *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 50) = -1; *(_WORD *)(26 * (*(_BYTE *)(v23 + 41) + 2) + v23) = 0; v45 = *(_DWORD *)(v5 + 14); LOWORD(v69) = (v69 ^ *((_WORD *)v57 + 4)) & 0x3FF ^ v69; (*(void (__stdcall **)(_DWORD, int, int, int *, int *))(*(_DWORD *)v45 + 64))( *(_WORD *)(v5 + 22), v76, v43, &v69, &v69); *(_BYTE *)(26 * *(_BYTE *)(v23 + 41) + v23 + 67) = v75; v46 = 26 * *(_BYTE *)(v23 + 41); *(_DWORD *)(v46 + v23 + 55) = *(_DWORD *)v43; *(_DWORD *)(v46 + v23 + 59) = *(_DWORD *)(v43 + 4); *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 63) = *(_WORD *)(v43 + 8); v47 = *(_DWORD *)(v43 + 112); if ( v47 ) v48 = (*(int (__stdcall **)(int))(*(_DWORD *)v47 + 28))(v43 + 8); else v48 = 1; *(_WORD *)(26 * *(_BYTE *)(v23 + 41) + v23 + 65) = v48; (*(void (__stdcall **)(_DWORD, int, int *, int *))(**(_DWORD **)(a3 + 14) + 48))( *(_WORD *)(a3 + 22), v43, &v68, &v68); v70 = sub_486DA0((void **)&v57); LABEL_40: ++*(_BYTE *)(v23 + 41); sub_591970(*(void **)(v5 + 18), (int)&v65); sub_591970(*(void **)(a3 + 18), (int)&v64); v11 = a3; } --dword_750CB8; v54 = &off_6A86A4; v51 = &off_6A86A4; v72 = -1; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_FillTradeBuffer"); return 1; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00592500) -------------------------------------------------------- int __thiscall sub_592500(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // ebx@5 int v7; // eax@12 int v8; // ebx@13 void *v9; // ecx@13 int v10; // eax@14 int (__thiscall *v11)(_DWORD); // edx@14 int v12; // eax@14 int v13; // eax@17 int v14; // ecx@18 bool v15; // zf@18 void (__thiscall *v16)(int, signed int, signed int); // eax@18 int v17; // ebx@20 int (__thiscall *v18)(_DWORD); // eax@20 int v19; // eax@20 int v20; // eax@20 void *v21; // edi@20 int v22; // edx@20 int (__thiscall *v23)(_DWORD); // eax@20 int (__thiscall *v24)(_DWORD); // eax@20 int v25; // eax@20 int v26; // edx@20 int v27; // eax@20 int v28; // edx@20 int v29; // eax@20 int v30; // edx@20 int v31; // eax@20 int v32; // edx@20 __int16 v33; // ax@20 int v34; // edx@20 int v35; // eax@20 int v36; // eax@20 int v37; // eax@20 int v38; // eax@20 int v39; // eax@20 int v40; // eax@20 int v41; // eax@20 int v42; // ebx@21 int v43; // eax@24 char v44; // al@25 signed int v45; // ST14_4@26 int v46; // ST10_4@26 int v47; // ST0C_4@26 __time32_t v48; // eax@26 signed int v49; // ST14_4@26 int v50; // ST10_4@26 int v51; // ST0C_4@26 __time32_t v52; // eax@26 signed int v53; // ST14_4@28 int v54; // ST10_4@28 int v55; // ST0C_4@28 __time32_t v56; // eax@28 signed int v57; // ST14_4@28 int v58; // ST10_4@28 int v59; // ST0C_4@28 __time32_t v60; // eax@28 int v62; // [sp-8h] [bp-68h]@7 int v63; // [sp-4h] [bp-64h]@4 int v64; // [sp-4h] [bp-64h]@7 void *v65; // [sp+10h] [bp-50h]@20 __int16 v66; // [sp+14h] [bp-4Ch]@20 int v67; // [sp+16h] [bp-4Ah]@20 int v68; // [sp+1Ah] [bp-46h]@20 int v69; // [sp+1Eh] [bp-42h]@20 int v70; // [sp+22h] [bp-3Eh]@20 int v71; // [sp+26h] [bp-3Ah]@20 int v72; // [sp+2Ch] [bp-34h]@20 __int16 v73; // [sp+30h] [bp-30h]@20 int v74; // [sp+32h] [bp-2Eh]@20 int v75; // [sp+36h] [bp-2Ah]@20 int v76; // [sp+3Ah] [bp-26h]@20 int v77; // [sp+3Eh] [bp-22h]@20 int v78; // [sp+42h] [bp-1Eh]@20 int v79; // [sp+48h] [bp-18h]@1 int v80; // [sp+4Ch] [bp-14h]@5 int v81; // [sp+50h] [bp-10h]@14 int v82; // [sp+5Ch] [bp-4h]@1 v4 = (int)this; v79 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v82 = 0; if ( !(dword_132587C4 & 1) ) { dword_132587C4 |= 1u; word_132587C0 = 126; atexit(nullsub_171); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132587C0 ) { v6 = *(_DWORD *)(v4 + 84471); v80 = v6; if ( !v6 || *(_BYTE *)(v4 + 84476) ) { v64 = 0; v62 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ : Not activ or already decide"; LABEL_8: sub_639100(&unk_86DDD8, v62, v64); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 19, 32); LABEL_32: --dword_750CB8; v82 = -1; v63 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; return sub_467660((int)&unk_D020420, v63); } if ( !*(_BYTE *)(v4 + 84475) || !*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 800))(v6) + 4) ) { v64 = 0; v62 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ : Not lock"; goto LABEL_8; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 800))(v6); if ( v7 ) { v8 = *(_DWORD *)v7; v9 = (void *)v4; if ( !*(_DWORD *)v7 || (v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4), v11 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 836), v81 = v10, v12 = v11(v8), v9 = (void *)v4, v12 != v81) ) goto LABEL_31; if ( (unsigned int)sub_402710(v4, v80) <= 0xF4240 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v80 + 2004))(v80); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 16))(v13) ) { v14 = *(_DWORD *)(v4 + 84471); *(_BYTE *)(v4 + 84476) = 1; v15 = *(_BYTE *)((*(int (**)(void))(*(_DWORD *)v14 + 800))() + 5) == 0; v16 = *(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 772); if ( v15 ) { v16(v4, 19, 33); (*(void (__thiscall **)(_DWORD, signed int, signed int))(**(_DWORD **)(v4 + 84471) + 772))( *(_DWORD *)(v4 + 84471), 19, 34); } else { ((void (__thiscall *)(int, signed int))v16)(v4, 19); (*(void (**)(void))(**(_DWORD **)(v4 + 84471) + 772))(); v17 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 13371; *(_BYTE *)(v17 + 41) = 0; v18 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836); v72 = v4; *(_DWORD *)(v17 + 2) = v18(v4); *(_WORD *)v17 = *(_WORD *)(v4 + 4); v19 = *(_DWORD *)v4; v73 = *(_WORD *)(v4 + 4); v74 = (*(int (__thiscall **)(int))(v19 + 836))(v4); v75 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1148))(v4) + 3668; v76 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v77 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 800))(v4); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v21 = *(void **)(v4 + 84471); v22 = *(_DWORD *)v21; LOWORD(v78) = *(_WORD *)(v20 + 4); v23 = *(int (__thiscall **)(_DWORD))(v22 + 836); v65 = v21; *(_DWORD *)(v17 + 8) = v23(v21); *(_WORD *)(v17 + 6) = *((_WORD *)v21 + 2); v24 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v21 + 836); v66 = *((_WORD *)v21 + 2); v25 = v24(v21); v26 = *(_DWORD *)v21; v67 = v25; v27 = (*(int (__thiscall **)(void *))(v26 + 1148))(v21); v28 = *(_DWORD *)v21; v68 = v27 + 3668; v29 = (*(int (__thiscall **)(void *))(v28 + 2004))(v21); v30 = *(_DWORD *)v21; v69 = v29; v31 = (*(int (__thiscall **)(void *))(v30 + 800))(v21); v32 = *(_DWORD *)v21; v70 = v31; v33 = *(_WORD *)((*(int (__thiscall **)(void *))(v32 + 2004))(v21) + 4); *(_WORD *)(v17 + 12) = v78; *(_WORD *)(v17 + 14) = v33; v34 = *(_DWORD *)v4; LOWORD(v71) = v33; v35 = (*(int (__thiscall **)(int))(v34 + 2004))(v4); ++*(_WORD *)(v35 + 4); v36 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 2004))(v21); ++*(_WORD *)(v36 + 4); v37 = *(_DWORD *)v4; v81 = *(_DWORD *)v76; v38 = (*(int (__thiscall **)(int))(v37 + 796))(v4); (*(void (__thiscall **)(int, _DWORD))(v81 + 40))(v76, *(_WORD *)(v38 + 16)); v39 = *(_DWORD *)v21; v81 = *(_DWORD *)v69; v40 = (*(int (__thiscall **)(void *))(v39 + 796))(v21); (*(void (__thiscall **)(int, _DWORD))(v81 + 40))(v69, *(_WORD *)(v40 + 16)); v41 = (*(int (__stdcall **)(int *, void **, int))(**(_DWORD **)(v4 + 84471) + 800))(&v72, &v65, v17); sub_591730((void *)(v4 + 84471), (int)&v72, (int)&v65, v41, 19, 36, 36); if ( sub_591D20((void *)(v4 + 84471), (int)&v72, (int)&v65, v17, (int)&v81) ) { v81 = 26 * *(_BYTE *)(v17 + 41) + 44; if ( sub_4C81E0(&off_849C18, v81) ) { v43 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v43); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ : Packet Too Long", v81); } v44 = *(_BYTE *)(v17 + 16); if ( v44 == 65 ) { v45 = v67; v46 = *(_DWORD *)(v17 + 21); v47 = *(_DWORD *)(v17 + 17); v48 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4); sub_5C90A0(v48, v47, v46, v45); v49 = v74; v50 = *(_DWORD *)(v17 + 21); v51 = *(_DWORD *)(v17 + 17); v52 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1056))(v21); sub_5C9120(v52, v51, v50, v49); } else { if ( v44 == 66 ) { v53 = v67; v54 = *(_DWORD *)(v17 + 21); v55 = *(_DWORD *)(v17 + 17); v56 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4); sub_5C9120(v56, v55, v54, v53); v57 = v74; v58 = *(_DWORD *)(v17 + 21); v59 = *(_DWORD *)(v17 + 17); v60 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1056))(v21); sub_5C90A0(v60, v59, v58, v57); } } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 808))(v4, 1); (*(void (__stdcall **)(signed int))(*(_DWORD *)v80 + 808))(1); } else { v42 = (unsigned __int16)v81; (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 776))( v4, 19, 35, (unsigned __int16)v81); (*(void (__stdcall **)(signed int, signed int, int))(**(_DWORD **)(v4 + 84471) + 776))(19, 35, v42); sub_590150((void *)v4); sub_590150(v21); (*(void (__stdcall **)(int))(*(_DWORD *)v76 + 40))(v78); (*(void (__stdcall **)(int))(*(_DWORD *)v69 + 40))(v71); } } goto LABEL_32; } } } } v9 = (void *)v4; LABEL_31: sub_590E60(v9); goto LABEL_32; } dword_750CB8 -= v5; v82 = -1; v63 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; return sub_467660((int)&unk_D020420, v63); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587C0: using guessed type __int16 word_132587C0; // 132587C4: using guessed type int dword_132587C4; // 14D16430: using guessed type int dword_14D16430; //----- (00592A60) -------------------------------------------------------- signed int __thiscall sub_592A60(void *this, signed int a2) { void *v2; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_OffBoard"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_OffBoard"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= 12 ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_OffBoard"); return -1; } if ( *((_BYTE *)v2 + a2 + 6) == -1 ) { sub_639100(&unk_86DDD8, (int)"TradeBoard::tb_OffBoard : Down empty", *((_BYTE *)v2 + a2 + 6) != -1); --dword_750CB8; goto LABEL_3; } *((_BYTE *)v2 + a2 + 6) = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_OffBoard"); return a2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00592B60) -------------------------------------------------------- int __thiscall sub_592B60(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // ebx@5 int v7; // eax@12 int v8; // eax@12 int v9; // edi@12 int v10; // ST20_4@12 char v11; // al@12 void *v12; // edi@14 int v13; // eax@16 int v14; // eax@19 int v16; // [sp-4h] [bp-30h]@4 signed int v17; // [sp-4h] [bp-30h]@6 void *v18; // [sp+18h] [bp-14h]@5 int v19; // [sp+1Ch] [bp-10h]@12 int v20; // [sp+28h] [bp-4h]@1 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; v20 = 0; if ( !(dword_132587CC & 1) ) { dword_132587CC |= 1u; word_132587C8 = 126; atexit(nullsub_172); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132587C8 ) { v6 = *(_DWORD *)(v4 + 84471); v18 = (void *)(v4 + 84471); if ( v6 ) { if ( (unsigned int)sub_402710(v4, v6) > 0xF4240 ) { sub_590E60((void *)v4); v20 = -1; goto LABEL_21; } if ( !*(_BYTE *)(v4 + 84475) ) { v7 = *(_DWORD *)v4; v19 = *(_BYTE *)(a2 + 2); v8 = (*(int (__thiscall **)(int))(v7 + 2004))(v4); v9 = *(_DWORD *)v8; v10 = v8; v11 = sub_5918F0(v18, (int)&v19); (*(void (__thiscall **)(int, signed int, _DWORD))(v9 + 36))(v10, 9, (unsigned __int8)v11); v19 = sub_592A60(v18, *(_BYTE *)(a2 + 2)); if ( v19 == -1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 18, 2119); } else { (*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 2000))(v6, v4); v12 = off_849C18; *(_WORD *)off_849C18 = 19475; *((_BYTE *)v12 + 2) = v19; if ( sub_4C81E0(&off_849C18, 3) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Packet Too Long", 3); } *(_WORD *)v12 = 19476; *((_BYTE *)v12 + 2) = v19; if ( sub_4C81E0(&off_849C18, 3) ) { v14 = (*(int (**)(void))(**(_DWORD **)v18 + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v14 + 12))(v14, *(_DWORD *)v18, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Packet Too Long", 3); } } v20 = -1; goto LABEL_21; } sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Locked", *(_BYTE *)(v4 + 84475) == 0); v17 = 2115; } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Not activ", 0); v17 = 2114; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 18, v17); v20 = -1; LABEL_21: --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; return sub_467660((int)&unk_D020420, v16); } dword_750CB8 -= v5; v20 = -1; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587C8: using guessed type __int16 word_132587C8; // 132587CC: using guessed type int dword_132587CC; //----- (00592E00) -------------------------------------------------------- signed int __thiscall sub_592E00(void *this, char a2) { void *v2; // edi@1 signed int v3; // esi@1 signed int result; // eax@16 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TradeBoard::tb_OnBoard"); dword_7508B8[dword_750CB8] = (int)"TradeBoard::tb_OnBoard"; dword_750AB8[dword_750CB8++] = -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 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_OnBoard"); result = -1; } else { *((_BYTE *)v2 + v3 + 6) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TradeBoard::tb_OnBoard"); result = v3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00592F10) -------------------------------------------------------- int __thiscall sub_592F10(void *this, int a2, int a3, int a4) { int v4; // esi@1 signed int v5; // eax@1 int v6; // eax@5 int v7; // ebx@12 int v8; // eax@12 int v9; // eax@16 unsigned __int16 *v10; // edi@16 signed int v11; // eax@24 int v12; // edx@24 int v13; // eax@26 void *v14; // edi@26 int v15; // eax@28 int v16; // esi@29 int v17; // eax@31 int v19; // [sp-4h] [bp-30h]@4 signed int v20; // [sp-4h] [bp-30h]@6 int v21; // [sp+14h] [bp-18h]@5 int v22; // [sp+18h] [bp-14h]@14 int v23; // [sp+18h] [bp-14h]@21 char v24; // [sp+18h] [bp-14h]@24 void *v25; // [sp+1Ch] [bp-10h]@5 int v26; // [sp+34h] [bp+8h]@14 int v27; // [sp+34h] [bp+8h]@16 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_132587D4 & 1) ) { dword_132587D4 |= 1u; word_132587D0 = 126; atexit(nullsub_173); v5 = 1; } if ( (v5 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_132587D0 ) { v25 = (void *)(v4 + 84471); v6 = *(_DWORD *)(v4 + 84471); v21 = *(_DWORD *)(v4 + 84471); if ( v6 ) { if ( (unsigned int)sub_402710(v4, v6) > 0xF4240 ) { sub_590E60((void *)v4); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; goto LABEL_33; } if ( !*(_BYTE *)(v4 + 84475) ) { v7 = a2; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v8 + 12))( v8, 9, *(_BYTE *)(a2 + 2)) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 14, 2115); } else { v22 = *(_BYTE *)(a2 + 2); v26 = *(_BYTE *)(a2 + 2); if ( v26 < (*(int (__thiscall **)(int, int))(*(_DWORD *)(v4 + 36484) + 4))(v4 + 36484, v4 + 160312) ) { v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, v26); v10 = (unsigned __int16 *)(v9 + 8); v27 = v9; if ( *(_WORD *)(v9 + 8) == -1 ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Upboard empty cell", *(_WORD *)(v9 + 8) != -1); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 14, 2117); } else { if ( !sub_6450D0(&dword_1508B5A8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_62EE00, v9) || sub_48F9E0(*(_DWORD *)(v27 + 112), v27) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 14, 2129); } else { v23 = *(_DWORD *)sub_418CB0((int)&dword_14D20890, *v10); if ( v23 && (unsigned int)(*(int (__stdcall **)(unsigned __int16 *))(**(_DWORD **)(v27 + 112) + 28))(v10) <= *(_DWORD *)(v23 + 106) ) { v11 = sub_592E00(v25, *(_BYTE *)(v7 + 2)); v12 = *(_DWORD *)v4; v24 = v11; if ( v11 == -1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v12 + 776))(v4, 19, 14, 2118); } else { v13 = (*(int (__thiscall **)(int))(v12 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD))(*(_DWORD *)v13 + 44))( v13, *(_WORD *)(v4 + 84468), 9, *(_BYTE *)(v7 + 2)); (*(void (__stdcall **)(int))(*(_DWORD *)v21 + 2000))(v4); v14 = off_849C18; *(_WORD *)off_849C18 = 19471; *((_BYTE *)v14 + 2) = *(_BYTE *)(v7 + 2); *((_BYTE *)v14 + 3) = v24; if ( sub_4C81E0(&off_849C18, 4) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v15 + 12))(v15, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Packet Too Long", 4); } *(_WORD *)v14 = 19472; *((_BYTE *)v14 + 2) = v24; v16 = sub_63D090((void *)v27, *(_DWORD *)(v27 + 112), *(_WORD *)(v27 + 8), (int)((char *)v14 + 3)) - (_DWORD)v14; if ( sub_4C81E0(&off_849C18, v16) ) { v17 = (*(int (**)(void))(**(_DWORD **)v25 + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v17 + 12))( v17, *(_DWORD *)v25, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Packet Too Long", v16); } } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))( v4, 19, 14, 2115); } } } } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Too large slot", v22); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 14, 2116); } } v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; goto LABEL_33; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Locked", *(_BYTE *)(v4 + 84475) == 0); v20 = 2115; } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Not activ", 0); v20 = 2114; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 14, v20); v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; LABEL_33: --dword_750CB8; return sub_467660((int)&unk_D020420, v19); } dword_750CB8 -= v5; v19 = (int)"ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; return sub_467660((int)&unk_D020420, v19); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 132587D0: using guessed type __int16 word_132587D0; // 132587D4: using guessed type int dword_132587D4; // 14D20890: using guessed type int dword_14D20890; // 1508B5A8: using guessed type int dword_1508B5A8; //----- (00593340) -------------------------------------------------------- int __thiscall sub_593340(int this) { return *(_DWORD *)(this + 1000); } //----- (00593350) -------------------------------------------------------- void *__thiscall sub_593350(void *this, __int16 a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ItemListMaker::ItemListMaker"); dword_7508B8[dword_750CB8] = (int)"ItemListMaker::ItemListMaker"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 222) = 0; *((_WORD *)v2 + 446) = a2; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ItemListMaker"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005933D0) -------------------------------------------------------- signed __int16 __thiscall sub_5933D0(void *this, int a2) { void *v2; // ebx@1 signed __int16 result; // ax@2 signed int v4; // edi@3 int v5; // edi@5 signed __int16 v6; // si@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ItemListMaker::ilm_ItemMake"); dword_7508B8[dword_750CB8] = (int)"ItemListMaker::ilm_ItemMake"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = *((_DWORD *)v2 + 222); if ( v4 < 8 ) { v5 = (int)((char *)v2 + 111 * v4); memcpy((void *)v5, (const void *)a2, 0x6Cu); v5 += 108; *(_WORD *)v5 = *(_WORD *)(a2 + 108); *(_BYTE *)(v5 + 2) = *(_BYTE *)(a2 + 110); ++*((_DWORD *)v2 + 222); v6 = *(_WORD *)(a2 + 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ilm_ItemMake"); result = v6; } else { sub_639100(&unk_86DDD8, (int)"ItemListMaker::ilm_ItemMake : Too many content", v4 < 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ilm_ItemMake"); result = -1; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ilm_ItemMake"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00593520) -------------------------------------------------------- int __thiscall sub_593520(void *this, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 signed int v6; // edi@1 int result; // eax@2 int v8; // eax@3 int v9; // esi@3 int v10; // edi@5 int v11; // eax@6 unsigned __int8 v12; // al@6 int v13; // esi@10 void *v14; // [sp+14h] [bp-18h]@1 int v15; // [sp+18h] [bp-14h]@3 int v16; // [sp+1Ch] [bp-10h]@4 v5 = this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"ItemListMaker::ilm_PutInto"); dword_7508B8[dword_750CB8] = (int)"ItemListMaker::ilm_PutInto"; v6 = 1; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v5 + 222) ) { v8 = a2; *(_BYTE *)a2 = 0; v9 = a2 + 1; v15 = 0; if ( *((_DWORD *)v5 + 222) > 0 ) { v16 = (int)v5; while ( 1 ) { v10 = *(_WORD *)(v16 + 8); if ( !(*(_DWORD *)sub_418CB0((int)&dword_14D20890, *(_WORD *)(v16 + 8)) != 0) ) { sub_639100(&unk_86DDD8, (int)"ItemListMaker::ilm_PutInto : Invalid ItemID found", v10); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ilm_PutInto"); return 0; } *(_WORD *)(v9 + 1) = *((_WORD *)v5 + 446) << 10; v11 = (int)sub_63ACA0(dword_1508B168, v10); v12 = sub_63D1A0(v16, v11, v10, v9 + 3) - (v9 + 3) + 2; *(_BYTE *)v9 = v12; v9 += v12 + 1; ++*(_BYTE *)a2; ++v15; v16 += 111; if ( v15 >= *((_DWORD *)v14 + 222) ) break; v5 = v14; } v8 = a2; v6 = 1; } dword_750CB8 -= v6; v13 = v9 - v8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ilm_PutInto"); result = v13; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemListMaker::ilm_PutInto"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005936D0) -------------------------------------------------------- void *__thiscall sub_5936D0(void *this, unsigned __int16 a2, char a3, char a4) { void *v4; // esi@1 int v5; // ST0C_4@3 char *v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"TreasureChestMaker::TreasureChestMaker"); dword_7508B8[dword_750CB8] = (int)"TreasureChestMaker::TreasureChestMaker"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v4 + 250) = 0; if ( *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, a2) + 102) == 15 ) { v5 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v6 = sub_5A7540(byte_14D16AE8); sub_63D0E0(v4, a2, a3, *((_DWORD *)v6 + 4), v5); *((_WORD *)v4 + 4) = a2; *((_BYTE *)v4 + 10) = 16 * a4; *((_DWORD *)v4 + 250) = 1; --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"TreasureChestMaker::TreasureChestMaker : Not ItemChest", a2); --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::TreasureChestMaker"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005937F0) -------------------------------------------------------- int __cdecl sub_5937F0() { sub_4675D0((int)&unk_D020420, (int)"TreasureChestMaker::~TreasureChestMaker"); dword_7508B8[dword_750CB8] = (int)"TreasureChestMaker::~TreasureChestMaker"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::~TreasureChestMaker"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00593830) -------------------------------------------------------- signed __int16 __thiscall sub_593830(void *this, int a2) { void *v2; // ebx@1 signed __int16 result; // ax@2 signed int v4; // edi@3 int v5; // edi@5 int v6; // ecx@5 signed __int16 v7; // si@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); dword_7508B8[dword_750CB8] = (int)"TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = *((_DWORD *)v2 + 250); if ( v4 <= 8 ) { v5 = (int)((char *)v2 + 111 * v4); memcpy((void *)v5, (const void *)a2, 0x6Cu); v5 += 108; *(_WORD *)v5 = *(_WORD *)(a2 + 108); *(_BYTE *)(v5 + 2) = *(_BYTE *)(a2 + 110); v6 = *((_DWORD *)v2 + 250); *(_DWORD *)((char *)v2 + 8 * v6 + 3) = *(_DWORD *)a2; *(_DWORD *)((char *)v2 + 8 * v6 + 7) = *(_DWORD *)(a2 + 4); ++*((_DWORD *)v2 + 250); v7 = *(_WORD *)(a2 + 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); result = v7; } else { sub_639100(&unk_86DDD8, (int)"TreasureChestMaker::tcm_ItemMake : Too many content", v4 <= 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); result = -1; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00593990) -------------------------------------------------------- signed __int16 __thiscall sub_593990(void *this, char a2, int a3, int a4) { void *v4; // esi@1 signed __int16 v5; // ax@3 int v6; // edi@3 int v8; // ST0C_4@9 char *v9; // eax@9 void *v10; // eax@9 int v11; // eax@9 int v12; // eax@10 const char *v13; // eax@11 int v14; // ebx@12 void *v15; // eax@12 int v16; // eax@12 int v17; // ecx@15 int v18; // eax@15 int v19; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"); dword_7508B8[dword_750CB8] = (int)"TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 250) >= 8 ) { sub_639100(&unk_86DDD8, (int)"TreasureChestMaker::tcm_ItemMake : Too many content", 0); v19 = (int)"TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, v19); return -1; } v5 = sub_48F790(&unk_D565B30, a3 + 3, a4); v6 = (unsigned __int16)v5; if ( v5 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"TreasureChestMaker::tcm_ItemMake : Item not found", a3 + 3); LABEL_5: v19 = (int)"TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; goto LABEL_6; } if ( sub_418CB0((int)&dword_14D20890, v6) == 0 ) { sub_639100(&unk_86DDD8, (int)"TreasureChestMaker::tcm_ItemMake : Invalid item", v6); goto LABEL_5; } v8 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v9 = sub_5A7540(byte_14D16AE8); sub_63D0E0((char *)v4 + 111 * *((_DWORD *)v4 + 250), v6, a2, *((_DWORD *)v9 + 4), v8); *(_WORD *)((char *)v4 + 111 * *((_DWORD *)v4 + 250) + 8) = v6; v10 = sub_63ACA0(dword_1508B168, v6); (*(void (__thiscall **)(void *, int, int, char *))(*(_DWORD *)v10 + 16))( v10, v6, a3, (char *)v4 + 111 * *((_DWORD *)v4 + 250)); v11 = sub_418CB0((int)&dword_14D20890, v6); if ( !v11 || (v12 = *(_DWORD *)(v11 + 4)) == 0 || (v13 = (const char *)(v12 + 137)) == 0 ) goto LABEL_5; v14 = (int)sub_4934A0(&dword_D61E064, v13); v15 = sub_63ACA0(dword_1508B168, v6); v16 = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v15 + 112))( v15, (char *)v4 + 111 * *((_DWORD *)v4 + 250) + 8); if ( v14 ) { if ( v16 ) sub_4928F0(v16, v14); } v17 = *((_DWORD *)v4 + 250); v18 = 111 * *((_DWORD *)v4 + 250); *(_DWORD *)((char *)v4 + 8 * v17 + 3) = *(_DWORD *)((char *)v4 + v18); *(_DWORD *)((char *)v4 + 8 * v17 + 7) = *(_DWORD *)((char *)v4 + v18 + 4); ++*((_DWORD *)v4 + 250); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"); return v6; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00593BE0) -------------------------------------------------------- int __thiscall sub_593BE0(void *this, int a2, int a3, __int16 a4, int a5, __int16 a6) { void *v6; // edi@1 int result; // eax@2 int v8; // eax@3 int v9; // ebx@3 int v10; // esi@3 int v11; // edi@4 unsigned int v12; // edi@4 int v13; // eax@10 char v14; // al@10 int v15; // edi@10 char v16; // bl@10 unsigned __int8 v17; // bl@12 int v18; // esi@15 void *v19; // [sp+14h] [bp-14h]@1 int v20; // [sp+18h] [bp-10h]@4 v6 = this; v19 = this; sub_4675D0((int)&unk_D020420, (int)"TreasureChestMaker::tcm_PutInto"); dword_7508B8[dword_750CB8] = (int)"TreasureChestMaker::tcm_PutInto"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v6 + 250) ) { v8 = a3; v9 = a2; v10 = a3 + 1; *((_BYTE *)v6 + 10) ^= (*((_BYTE *)v6 + 10) ^ (*((_BYTE *)v6 + 1000) - 1)) & 0xF; *(_BYTE *)a3 = 0; if ( a2 >= *((_DWORD *)v6 + 250) ) { LABEL_15: --dword_750CB8; v18 = v10 - v8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_PutInto"); result = v18; } else { while ( 1 ) { v11 = (int)((char *)v6 + 111 * v9); v20 = v11; v12 = *(_WORD *)(v11 + 8); if ( *(_DWORD *)sub_418CB0((int)&dword_14D20890, v12) == 0 ) break; if ( v9 ) { *(_WORD *)(v10 + 1) = 10240; if ( a5 && *(_DWORD *)(a5 + 4) ) **(_BYTE **)a5 |= 1u; } else { *(_WORD *)(v10 + 1) = (a6 << 10) ^ a4 & 0x3FF; } v13 = (int)sub_63ACA0(dword_1508B168, v12); v14 = sub_63D1A0(v20, v13, v12, v10 + 3); v15 = a2; v16 = v14 - (v10 + 3); if ( a2 ) sub_4942D0(v20); v17 = v16 + 2; *(_BYTE *)v10 = v17; v10 += v17 + 1; v8 = a3; ++*(_BYTE *)v8; ++a2; if ( v15 + 1 >= *((_DWORD *)v19 + 250) ) goto LABEL_15; v9 = a2; v6 = v19; } sub_639100(&unk_86DDD8, (int)"TreasureChestMaker::tcm_PutInto : Invalid ItemID found", v12); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_PutInto"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"TreasureChestMaker::tcm_PutInto"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00593DF0) -------------------------------------------------------- void *__thiscall sub_593DF0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 2603, 62) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 2603, 2603, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00593EA0) -------------------------------------------------------- void *__thiscall sub_593EA0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F08E8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F08E8: using guessed type int (__thiscall *off_6F08E8)(void *, char); //----- (00593ED0) -------------------------------------------------------- int __thiscall sub_593ED0(void *this, int a2) { int v2; // esi@1 unsigned int v3; // edi@1 int v4; // eax@1 signed int v5; // ebx@1 int v6; // eax@2 unsigned __int16 v7; // ax@3 int v8; // eax@6 signed int v9; // eax@8 int v10; // eax@11 int v12; // [sp-8h] [bp-28h]@7 int v13; // [sp-4h] [bp-24h]@7 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"UpgradeDataBox::udb_Load"); dword_7508B8[dword_750CB8] = (int)"UpgradeDataBox::udb_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; sub_593DF0((void *)v2, "../9Data/Shine/UpGradeInfo.shn"); v4 = *(_DWORD *)(v2 + 52); *(_WORD *)(v2 + 132) = 0; v5 = *(_DWORD *)(v4 + 40); if ( v5 > 0 ) { do { v6 = sub_626BC0(v2, v3); if ( !v6 ) goto LABEL_14; v7 = *(_WORD *)v6; if ( *(_WORD *)(v2 + 132) < v7 ) *(_WORD *)(v2 + 132) = v7; ++v3; } while ( (signed int)v3 < v5 ); } v8 = unknown_libname_130(4 * (*(_WORD *)(v2 + 132) + 1) | -((unsigned __int64)((unsigned int)*(_WORD *)(v2 + 132) + 1) >> 30 != 0)); *(_DWORD *)(v2 + 128) = v8; if ( !v8 ) { v13 = *(_WORD *)(v2 + 132); v12 = (int)"UpgradeDataBox::udb_Load : udb_UpgradeInfoList NULL"; LABEL_15: sub_639100(&unk_86DDD8, v12, v13); loc_6391B0("BinaryDataBox::bdb_ReadData"); goto LABEL_16; } v9 = 0; do *(_DWORD *)(*(_DWORD *)(v2 + 128) + 4 * v9++) = 0; while ( v9 <= *(_WORD *)(v2 + 132) ); v3 = 0; if ( v5 > 0 ) { while ( 1 ) { v10 = sub_626BC0(v2, v3); if ( !v10 ) break; ++v3; *(_DWORD *)(*(_DWORD *)(v2 + 128) + 4 * *(_WORD *)v10) = v10; if ( (signed int)v3 >= v5 ) goto LABEL_16; } LABEL_14: v13 = v3; v12 = (int)"UpgradeDataBox::udb_Load : pUpgradeInfo NULL"; goto LABEL_15; } LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UpgradeDataBox::udb_Load"); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00594050) -------------------------------------------------------- int __thiscall sub_594050(int this, unsigned __int16 a2, char a3) { int result; // eax@1 result = 2 * a2; *(_BYTE *)(*(_DWORD *)(this + 240) + 16 * a2 + 12) = a3; return result; } //----- (00594070) -------------------------------------------------------- int __thiscall sub_594070(int this, unsigned __int16 a2, int a3, int a4) { int result; // eax@1 result = 2 * a2; *(_DWORD *)(*(_DWORD *)(this + 240) + 16 * a2) = this + 152; *(_DWORD *)(*(_DWORD *)(this + 240) + 16 * a2 + 4) = a3; *(_DWORD *)(*(_DWORD *)(this + 240) + 16 * a2 + 8) = a4; return result; } //----- (005940B0) -------------------------------------------------------- void *__thiscall sub_5940B0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6F09C0; return result; } // 6F09C0: using guessed type int (__thiscall *off_6F09C0)(void *, char); //----- (005940C0) -------------------------------------------------------- void __thiscall sub_5940C0(void *this) { *(_DWORD *)this = &off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); //----- (005940D0) -------------------------------------------------------- signed int __thiscall sub_5940D0(void *this) { void *v1; // esi@1 int v2; // edi@2 int v3; // eax@2 signed int result; // eax@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 2676))() ) { result = 1792; } else { v2 = *(_DWORD *)v1; v3 = sub_48C200(&unk_150A0980, "RecallDisableField"); (*(void (__thiscall **)(void *, int))(v2 + 1924))(v1, v3); result = 1807; } return result; } //----- (00594110) -------------------------------------------------------- signed int __stdcall sub_594110(int a1, int a2) { return 1794; } //----- (00594120) -------------------------------------------------------- signed int __stdcall sub_594120(int a1, int a2) { signed int result; // eax@2 __int16 v3; // ax@3 int v4; // eax@3 int v5; // edi@4 bool v6; // zf@4 if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 304))(a1) && (v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 312))(a1), (v4 = sub_54DE90(&unk_13253630, v3)) != 0) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 128))(v4); v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836))(a1) == v5; result = 1820; if ( v6 ) result = 1792; } else { result = 1818; } return result; } //----- (00594190) -------------------------------------------------------- signed int __userpurge sub_594190(int a1, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // eax@3 int v6; // edi@3 bool v7; // zf@11 int v8; // [sp+10h] [bp+8h]@6 v3 = a2; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) == 6 ) { v5 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 3188))(a2, a1); v6 = v5; if ( a3 ) { if ( v5 ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 3240))(v5); if ( v8 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) ) result = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3268))(v6); else result = 1793; } else { if ( *(_WORD *)(a3 + 8) == (unsigned __int16)sub_45CDB0(a2) ) { v7 = sub_45CD00(a2) == 0; result = 4297; if ( v7 ) result = 1792; } else { result = 4295; } } } else { result = 1793; } } else { result = 1793; } return result; } //----- (00594270) -------------------------------------------------------- signed int __stdcall sub_594270(int a1, int a2) { return 1792; } //----- (00594280) -------------------------------------------------------- signed int __stdcall sub_594280(void *a1, int a2) { return sub_49A8E0(a1); } //----- (00594290) -------------------------------------------------------- void __stdcall sub_594290(int a1, int a2, int a3) { bool v3; // zf@2 int v4; // eax@2 if ( a1 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3188))(a1) == 0; v4 = *(_DWORD *)a1; if ( v3 ) (*(void (__thiscall **)(int))(v4 + 2248))(a1); else (*(void (__thiscall **)(int))(v4 + 3216))(a1); } } //----- (005942D0) -------------------------------------------------------- int __stdcall sub_5942D0(int a1, int a2, int a3) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 812))(a2); } //----- (005942F0) -------------------------------------------------------- signed int __stdcall sub_5942F0(int a1, int a2) { int v2; // eax@1 int v3; // edi@1 __int16 v4; // ax@4 __int16 v5; // ax@6 signed int result; // eax@7 __int16 v7; // ax@8 int v8; // ebx@10 int v9; // esi@10 __int16 v10; // [sp-4h] [bp-Ch]@5 v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1884))(a1); v3 = v2; if ( !v2 || v2 == a1 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232))(v2) != 2 ) { v10 = 4808; goto LABEL_12; } v4 = sub_59CB90(a1); if ( v4 ) { v10 = v4; LABEL_12: sub_59C710(a1, *(_WORD *)(a1 + 4), v10); return 1822; } v5 = sub_59C8B0(v3); if ( v5 ) { sub_59C710(a1, *(_WORD *)(a1 + 4), v5); result = 1822; } else { v7 = sub_59CCB0(a1, v3); if ( v7 ) { sub_59C710(a1, *(_WORD *)(a1 + 4), v7); result = 1822; } else { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 37) = v8; v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836))(a1); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2392))(v3) + 37) = v9; result = 1792; } } return result; } //----- (00594400) -------------------------------------------------------- char __stdcall sub_594400(int a1, int a2, int a3) { int v3; // eax@3 *(_WORD *)off_849C18 = 8270; if ( sub_4C81E0(&off_849C18, 2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"UseItemPropose::uib_Effect : Packet Too Long", 2); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 2332))(a1, 1792, 9); return 1; } //----- (00594470) -------------------------------------------------------- signed int __stdcall sub_594470(int a1, int a2) { bool v2; // zf@1 signed int result; // eax@1 v2 = (*(_BYTE *)((*(int (**)(void))(*(_DWORD *)a1 + 2392))() + 8) & 0xF) == 2; result = 1796; if ( v2 ) result = 1792; return result; } //----- (005944A0) -------------------------------------------------------- char __stdcall sub_5944A0(void *a1, int a2, int a3) { int v3; // eax@2 int v4; // edx@2 int v5; // ST38_4@2 int (__thiscall *v6)(_DWORD); // eax@2 int v7; // eax@2 int v8; // eax@2 int v9; // ST14_4@2 int v10; // ST08_4@2 int v11; // eax@2 void *v12; // eax@2 void *v13; // eax@2 void *v14; // eax@2 __int16 v16; // [sp+Ch] [bp-D8h]@2 int v17; // [sp+10h] [bp-D4h]@2 _WORD v18[52]; // [sp+78h] [bp-6Ch]@2 unsigned int v19; // [sp+E0h] [bp-4h]@1 int v20; // [sp+E4h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; if ( sub_50D480((int)((char *)a1 + 84520)) ) { v16 = a2 & 0x3FF | 0x2400; v18[0] = a2 & 0x3FF | 0x2400; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2004))(a1); v4 = *((_DWORD *)a1 + 9121); v18[1] = *(_WORD *)(v3 + 4); v5 = (*(int (__thiscall **)(char *, int))v4)((char *)a1 + 36484, a2); v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); memcpy(&v17, v18, 0x68u); v7 = v6(a1); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v7 + 48))( v7, *(_DWORD *)&v18[1], v5, &v16, &v16); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)a1 + 2004))(a1); ++*(_WORD *)(v8 + 4); v9 = sub_48C200(&unk_150A0980, "No"); v10 = sub_48C200(&unk_150A0980, off_6B5A90); v11 = sub_48C200(&unk_15090128, "InstantDivorce"); v12 = sub_54CA20(a1, (const char *)v11); v13 = sub_54CB10(v12, (int)sub_50DC20, (const char *)v10, v18); v14 = sub_54CB10(v13, (int)sub_50DD90, (const char *)v9, &v17); sub_54CC20(v14, 0, -1, 0, 1000); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)a1 + 2332))(a1, 1792, 9); } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005945F0) -------------------------------------------------------- signed int __thiscall sub_5945F0(int this, int a2) { *(_WORD *)a2 = 13451; *(_DWORD *)(a2 + 12) = *(_DWORD *)(this + 16); *(_DWORD *)(a2 + 4) = *(_DWORD *)(this + 6); *(_DWORD *)(a2 + 8) = *(_DWORD *)(this + 10); *(_WORD *)(a2 + 2) = *(_WORD *)(this + 4); return 35; } //----- (00594630) -------------------------------------------------------- int __thiscall sub_594630(int this, int a2) { int result; // eax@1 result = a2; *(_WORD *)(this + 4) = *(_WORD *)a2; return result; } //----- (00594650) -------------------------------------------------------- int __thiscall sub_594650(int this, int a2) { int result; // eax@1 *(_DWORD *)(this + 6) = *(_DWORD *)a2; result = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 10) = result; return result; } //----- (00594670) -------------------------------------------------------- int __thiscall sub_594670(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 16) = *(_DWORD *)a2; return result; } //----- (00594680) -------------------------------------------------------- signed int __stdcall sub_594680(int a1, int a2) { signed int result; // eax@2 void *v3; // eax@5 int v4; // eax@5 unsigned int v5; // edx@6 unsigned int v6; // ecx@6 int v7; // eax@9 unsigned int v8; // ecx@9 int v9; // eax@11 unsigned int v10; // ecx@11 int v11; // eax@13 unsigned int v12; // ecx@13 if ( !a1 ) return 1793; if ( !a2 ) return 1794; v3 = sub_63ACA0(dword_1508B168, *(_WORD *)(a2 + 8)); v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 172))(v3, a2 + 8); if ( !v4 || (v5 = *(_DWORD *)v4, (v6 = (unsigned __int8)*(_DWORD *)v4) == 0) ) return 1830; if ( v6 > (unsigned __int8)dword_AA0BC8 ) return 1792; if ( v6 < (unsigned __int8)dword_AA0BC8 ) return 1830; v7 = (v5 >> 8) & 0x1F; v8 = ((unsigned int)dword_AA0BC8 >> 8) & 0x1F; if ( v7 > v8 ) return 1792; if ( v7 < v8 ) return 1830; v9 = (v5 >> 13) & 0x3F; v10 = ((unsigned int)dword_AA0BC8 >> 13) & 0x3F; if ( v9 > v10 ) return 1792; if ( v9 < v10 ) return 1830; v11 = (v5 >> 19) & 0x3F; v12 = ((unsigned int)dword_AA0BC8 >> 19) & 0x3F; if ( v11 > v12 ) return 1792; if ( v11 < v12 || (result = 1792, (v5 & 0xFE000000) < (dword_AA0BC8 & 0xFE000000u)) ) return 1830; return result; } // AA0BC8: using guessed type int dword_AA0BC8; //----- (00594760) -------------------------------------------------------- signed int __stdcall sub_594760(int a1, int a2) { signed int result; // eax@2 bool v3; // zf@4 if ( a1 && a2 ) { v3 = sub_589E80((int)&unk_1325CFC8, *(_WORD *)(a2 + 8)) == 0; result = 1794; if ( !v3 ) result = 1792; } else { result = 1794; } return result; } //----- (005947A0) -------------------------------------------------------- char __thiscall sub_5947A0(int this, int a2) { *(_DWORD *)(this + 4) = a2; return 1; } //----- (005947B0) -------------------------------------------------------- void *__thiscall sub_5947B0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 571, 86) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 571, 571, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00594860) -------------------------------------------------------- void *__thiscall sub_594860(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F0CF0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F0CF0: using guessed type int (__thiscall *off_6F0CF0)(void *, char); //----- (00594890) -------------------------------------------------------- int __stdcall sub_594890(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // ST04_4@5 __time32_t v5; // eax@5 __time32_t v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTSUC_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTSUC_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))( v3, v2, *(_WORD *)(a1 + 8), 1) ) { v4 = *(_WORD *)(a1 + 8); v5 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTSUC_ACK : "); v6 = sub_43B910(v5, v4); sub_418F20(v6, (int)&unk_13359E04); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTSUC_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005949C0) -------------------------------------------------------- int __stdcall sub_5949C0(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 40))(v3, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCHESTFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00594AC0) -------------------------------------------------------- int __thiscall sub_594AC0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@1 int v5; // edi@1 int v6; // eax@3 int v7; // ebx@3 int v8; // eax@3 unsigned int v9; // eax@6 int v10; // ST04_4@8 int v11; // eax@8 int v13; // [sp-4h] [bp-2Ch]@2 int v14; // [sp+14h] [bp-14h]@3 int v15; // [sp+18h] [bp-10h]@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"; dword_750AB8[dword_750CB8++] = -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 + 9121))((char *)v3 + 36484, a2); v7 = *(_DWORD *)(v6 + 112); v15 = v6; v8 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 104))(v7, v6 + 8); v14 = v8; if ( v8 >= 0 ) { if ( v5 > v8 ) v5 = v8; sub_55C1B0(v3, v5, 1, (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"); v9 = *((_DWORD *)v3 + 960); *(_DWORD *)((char *)v3 + 32703) += v5; if ( *(_DWORD *)((char *)v3 + 32703) > v9 ) *(_DWORD *)((char *)v3 + 32703) = v9; v10 = *(_DWORD *)((char *)v3 + 102); v11 = sub_427BD0(&unk_13253E80); sub_549C70(v3, v11, v10, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 108))(v7, v15 + 8, v14 - v5); if ( v14 == v5 ) { LOWORD(a2) = a2 & 0x3FF | 0x2400; sub_526030(v3, *((_WORD *)v3 + 2), v15, (int)&a2); } else { sub_45DC00(v3, v15, 9, a2); } } v13 = (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"; } else { v13 = (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00594C70) -------------------------------------------------------- int __thiscall sub_594C70(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@1 int v5; // edi@1 int v6; // eax@3 int v7; // ebx@3 int v8; // eax@3 unsigned int v9; // eax@6 int v10; // ST04_4@8 int v11; // eax@8 int v13; // [sp-4h] [bp-2Ch]@2 int v14; // [sp+14h] [bp-14h]@3 int v15; // [sp+18h] [bp-10h]@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_UseAmountSP"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_UseAmountSP"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1268))(v3); v5 = v4 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1260))(v3); if ( v5 > 0 ) { v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 9121))((char *)v3 + 36484, a2); v7 = *(_DWORD *)(v6 + 112); v15 = v6; v8 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 104))(v7, v6 + 8); v14 = v8; if ( v8 >= 0 ) { if ( v5 > v8 ) v5 = v8; v9 = *((_DWORD *)v3 + 961); *(_DWORD *)((char *)v3 + 32707) += v5; if ( *(_DWORD *)((char *)v3 + 32707) > v9 ) *(_DWORD *)((char *)v3 + 32707) = v9; v10 = *(_DWORD *)((char *)v3 + 102); v11 = sub_427BD0(&unk_13253E80); sub_549C70(v3, v11, v10, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 108))(v7, v15 + 8, v14 - v5); if ( v14 == v5 ) { LOWORD(a2) = a2 & 0x3FF | 0x2400; sub_526030(v3, *((_WORD *)v3 + 2), v15, (int)&a2); } else { sub_45DC00(v3, v15, 9, a2); } } v13 = (int)"ShineObjectClass::ShinePlayer::sp_UseAmountSP"; } else { v13 = (int)"ShineObjectClass::ShinePlayer::sp_UseAmountSP"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v13); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00594E10) -------------------------------------------------------- int __thiscall sub_594E10(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"; dword_750AB8[dword_750CB8++] = -1; v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v3 + 9121))((char *)v3 + 36484, a2); if ( v4 && *(_DWORD *)v4 == *(_DWORD *)a3 && *(_DWORD *)(v4 + 4) == *(_DWORD *)(a3 + 4) ) sub_532BA0(v3, v4, a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2332))(v3, 1792, 9); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00594EF0) -------------------------------------------------------- int __thiscall sub_594EF0(void *this, int a2) { int v2; // ebx@1 signed int v3; // eax@1 int v4; // esi@6 int v5; // eax@17 int v6; // eax@19 int v7; // edx@20 __time32_t v8; // eax@21 int v9; // edi@22 int v10; // eax@22 unsigned int v11; // eax@27 int v12; // eax@28 bool v13; // zf@28 int v14; // eax@28 int v15; // eax@29 int v16; // esi@30 int (__thiscall *v17)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@30 int v18; // ST1C_4@30 int v19; // ST08_4@30 void *v20; // esi@38 int v21; // eax@38 int v22; // eax@38 int v23; // ecx@38 int v24; // ecx@38 unsigned int v25; // eax@38 int v26; // eax@40 int v27; // eax@43 void *v28; // eax@44 int v29; // ecx@44 int v30; // edx@44 int v31; // edx@44 unsigned int v32; // ecx@44 int v33; // eax@46 int v34; // esi@47 int v35; // eax@47 int v36; // esi@48 int v37; // eax@48 unsigned int v39; // [sp-4h] [bp-174h]@1 char v40; // [sp+Ch] [bp-164h]@47 int v41; // [sp+1Ch] [bp-154h]@1 int v42; // [sp+20h] [bp-150h]@1 void *v43; // [sp+24h] [bp-14Ch]@20 int v44; // [sp+28h] [bp-148h]@20 int v45; // [sp+2Ch] [bp-144h]@28 int v46; // [sp+30h] [bp-140h]@30 int v47; // [sp+34h] [bp-13Ch]@5 int v48; // [sp+38h] [bp-138h]@1 char v49; // [sp+3Ch] [bp-134h]@22 int v50; // [sp+40h] [bp-130h]@24 unsigned int v51; // [sp+44h] [bp-12Ch]@23 int v52; // [sp+48h] [bp-128h]@24 int v53; // [sp+4Ch] [bp-124h]@24 int v54; // [sp+50h] [bp-120h]@24 char v55; // [sp+60h] [bp-110h]@8 unsigned int v56; // [sp+160h] [bp-10h]@1 int v57; // [sp+16Ch] [bp-4h]@1 int v58; // [sp+170h] [bp+0h]@1 v56 = (unsigned int)&v58 ^ __security_cookie; v39 = (unsigned int)&v58 ^ __security_cookie; v2 = (int)this; v42 = a2; v41 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"; dword_750AB8[dword_750CB8++] = -1; v57 = 0; sub_5CF620(&v48); LOBYTE(v57) = 1; v3 = -1; do { if ( v3 >= -1 ) { ++v3; v48 = v3; if ( v3 < dword_AA0B00 ) continue; } v48 = -10; LABEL_6: v4 = *(_WORD *)(a2 + 8); if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v55, "%.255s", "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff : This effect is already set "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v55, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v4); } if ( byte_7493ED && byte_14D21464 && dword_14D212E0 ) { v5 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v5); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } goto LABEL_50; } while ( *((_WORD *)dword_AA0AFC + 4 * v3) != *(_WORD *)(a2 + 8) ); v47 = *((_DWORD *)dword_AA0AFC + 2 * v3 + 1); if ( !v47 ) goto LABEL_6; v6 = *(_WORD *)(v2 + 159700); if ( (_WORD)v6 != -1 && (v7 = *(_DWORD *)(v2 + 159688), v44 = *(_WORD *)(v2 + 159700), (v43 = (void *)(*(int (__stdcall **)(int))(v7 + 8))(v6)) != 0) ) { memcpy(&v49, &unk_AA0BCC, 0x24u); v9 = v47; v10 = *(_WORD *)(v47 + 34); if ( (_WORD)v10 ) { v51 = v10 + (((unsigned int)dword_AA0BC8 >> 19) & 0x3F); _LN52(&v49); } else { v54 = 355; v53 = 11; v52 = 31; v51 = 23; v50 = 59; } if ( *(_DWORD *)(v47 + 36) == 31 ) { v47 = 0; while ( 1 ) { v11 = *(_WORD *)(v9 + 40); if ( dword_8772EC < v11 ) break; v12 = 1452 * v11; v13 = dword_8772E4 + v12 == 0; v14 = dword_8772E4 + v12; v45 = v14; if ( !v13 ) { v15 = *(_DWORD *)v14; if ( v15 ) { v16 = 3600000 * *(_WORD *)(v9 + 34); v17 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1592); v18 = 3600000 * *(_WORD *)(v9 + 34); v19 = *(_BYTE *)(v9 + 42); v46 = *(_DWORD *)(v15 + 34); if ( (unsigned __int8)v17(v2, v2, v46, v19, v45, dword_14D129E8, 0, 0, v18, 11, 0) ) { if ( !*(_DWORD *)(*(_DWORD *)v45 + 204) || !*(_DWORD *)(*(_DWORD *)v45 + 208) ) { sub_401900((void *)v2, v46); sub_4055D0((void *)v2, v46, v16, *(_BYTE *)(v9 + 42)); (*(void (__thiscall **)(int, int, int, signed int))(*(_DWORD *)v2 + 1008))(v2, v46, v16, 1); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1320))(v2); } ++v47; if ( v47 < 1 ) continue; } } goto LABEL_38; } sub_639100( &unk_86DDD8, (int)"AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", *(_WORD *)(v9 + 40)); } LABEL_38: sub_44FCC0(v43, v9, v54 - 100, v53 + 1, v52, v51, v50); v20 = off_849C18; *(_WORD *)off_849C18 = -28671; *(_DWORD *)((char *)v20 + 2) = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v2 + 836))(v2, v39); v21 = v42; *(_DWORD *)((char *)v20 + 6) = *(_DWORD *)v42; *(_DWORD *)((char *)v20 + 10) = *(_DWORD *)(v21 + 4); *((_WORD *)v20 + 7) = *(_WORD *)(v21 + 8); *((_WORD *)v20 + 10) = *(_WORD *)v9; *(_DWORD *)((char *)v20 + 22) = dword_AA0BC8; *((_BYTE *)v20 + 26) = v54 - 100; *(_DWORD *)((char *)v20 + 26) ^= (*(_DWORD *)((char *)v20 + 26) ^ ((v53 + 1) << 8)) & 0x1F00; v22 = *(_DWORD *)((char *)v20 + 26); v23 = v22 ^ (v52 << 13); v24 = v22 ^ v23 & 0x7E000; *(_DWORD *)((char *)v20 + 26) = v24; v25 = v24 ^ (unsigned int)&unk_1F80000 & (v24 ^ (v51 << 19)); *(_DWORD *)((char *)v20 + 26) = v25; *(_DWORD *)((char *)v20 + 26) = (v50 << 25) | (unsigned int)&unk_1FFFFFF & v25; *((_DWORD *)v20 + 4) = (unsigned __int16)v44; *(_DWORD *)((char *)v20 + 30) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 34) ) { v26 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v26); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff1 : Packet Too Long", 34); } if ( sub_4C81E0(&off_849C18, 34) ) { v27 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v27); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff2 : Packet Too Long", 34); } v28 = off_849C18; *(_WORD *)off_849C18 = -28669; *((_WORD *)v28 + 3) = *(_WORD *)v9; *((_DWORD *)v28 + 2) = dword_AA0BC8; *((_BYTE *)v28 + 12) = v54 - 100; *((_DWORD *)v28 + 3) ^= (*((_DWORD *)v28 + 3) ^ ((v53 + 1) << 8)) & 0x1F00; v29 = *((_DWORD *)v28 + 3); v30 = v29 ^ (v52 << 13); v31 = v29 ^ v30 & 0x7E000; *((_DWORD *)v28 + 3) = v31; v32 = v31 ^ (unsigned int)&unk_1F80000 & (v31 ^ (v51 << 19)); *((_DWORD *)v28 + 3) = v32; *((_DWORD *)v28 + 3) = (v50 << 25) | (unsigned int)&unk_1FFFFFF & v32; *(_DWORD *)((char *)v28 + 2) = (unsigned __int16)v44; if ( sub_4C81E0(&off_849C18, 16) ) { v33 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v33 + 12))(v33, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff3 : Packet Too Long", 16); } sub_450600((int)&v40, v2 + 159688, v2); memcpy((void *)(v2 + 160312), &byte_13244DC0, 0x2Cu); LOBYTE(v57) = 2; *(_WORD *)(v2 + 160356) = *((_WORD *)&byte_13244DC0 + 22); sub_43C470(v2 + 159688, (int)&v40); *(_BYTE *)(v2 + 3820) = 1; LOBYTE(v57) = 1; sub_450670((int)&v40); v34 = dword_14D129E8; v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 984))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, unsigned int))(*(_DWORD *)v2 + 3744))( v2, 29200, v34 + ((signed int)((unsigned __int64)(10 * v35 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v35 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) ) { v36 = *(_DWORD *)v2; v37 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 984))(v2); (*(void (__thiscall **)(int, signed int, unsigned int))(v36 + 884))( v2, 29200, ((signed int)((unsigned __int64)(v37 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v37 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 860))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 872))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 52))(v2); } else { v8 = sub_418EA0((__time32_t)byte_14D211E0, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff : Too many buff"); sub_418F20(v8, (int)&unk_13359E04); } LABEL_50: LOBYTE(v57) = 0; nullsub_2(&v48); --dword_750CB8; v57 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 8772E4: using guessed type int dword_8772E4; // 8772EC: using guessed type int dword_8772EC; // AA0B00: using guessed type int dword_AA0B00; // AA0BC8: using guessed type int dword_AA0BC8; // 13244DC0: using guessed type char byte_13244DC0; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; // 14D21464: using guessed type char byte_14D21464; //----- (00595610) -------------------------------------------------------- int __thiscall sub_595610(void *this, int a2, unsigned __int16 a3, int a4) { void *v4; // esi@1 int v5; // ebx@8 int v6; // edi@8 int v7; // ebx@10 int v8; // eax@11 int v9; // eax@11 int v11; // [sp-8h] [bp-28h]@5 signed int v12; // [sp-4h] [bp-24h]@5 int v13; // [sp+2Ch] [bp+Ch]@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemEffect"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ItemEffect"; dword_750AB8[dword_750CB8++] = -1; switch ( a2 ) { case 0: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 1252))(v4, a3); break; case 1: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 1276))(v4, a3); break; case 7: (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1252))(v4, 99999); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1276))(v4, 99999); break; case 8: sub_40A090(v4, 33, a3); sub_40A090(v4, 34, a3); sub_40A090(v4, 35, a3); sub_40A090(v4, 21, a3); sub_40A090(v4, 22, a3); sub_40A090(v4, 23, a3); sub_40A090(v4, 27, a3); sub_40A090(v4, 28, a3); v12 = a3; v11 = 96; goto LABEL_15; case 2: v12 = a3; v11 = 33; goto LABEL_15; case 3: v12 = a3; v11 = 34; goto LABEL_15; case 4: v5 = *(_DWORD *)(*(_DWORD *)a4 + 82); v6 = sub_401310(&unk_877138, *(_DWORD *)(*(_DWORD *)a4 + 82)); if ( v6 != 0 ) { v7 = a3; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, _DWORD, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(*(_DWORD *)a4 + 82), a3, v6, dword_14D129E8, 0, -1, 0, 11, 0) ) { sub_401900(v4, *(_DWORD *)(*(_DWORD *)v6 + 34)); v8 = v6 + 36 * a3 + 12; v13 = v8; v9 = *(_DWORD *)v8; if ( v9 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 1008))( v4, *(_DWORD *)(*(_DWORD *)v6 + 34), *(_DWORD *)(v9 + 43), 1); sub_4055D0(v4, *(_DWORD *)(*(_DWORD *)v6 + 34), *(_DWORD *)(*(_DWORD *)v13 + 43), v7); } } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2460))(v4); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemEffect : Invalid abstate", v5); } break; case 5: sub_40A090(v4, 35, a3); sub_40A090(v4, 50, a3); sub_40A090(v4, 51, a3); sub_40A090(v4, 52, a3); sub_40A090(v4, 53, a3); sub_40A090(v4, 54, a3); sub_40A090(v4, 55, a3); sub_40A090(v4, 56, a3); v12 = a3; v11 = 57; LABEL_15: sub_40A090(v4, v11, v12); break; default: break; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ItemEffect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005958C0) -------------------------------------------------------- int __thiscall sub_5958C0(void *this, int a2) { void *v2; // edi@1 void *v3; // edx@1 int v4; // ecx@1 int v5; // eax@1 char v6; // bl@2 char v7; // cl@3 unsigned __int8 v8; // al@4 int v9; // esi@4 int v10; // eax@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Notice"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Notice"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; v4 = a2; *(_WORD *)off_849C18 = 8209; v5 = (int)((char *)v3 + 3); do { v6 = *(_BYTE *)v4; *((_BYTE *)v3 + v4 - a2 + 3) = *(_BYTE *)v4; ++v4; } while ( v6 ); do v7 = *(_BYTE *)v5++; while ( v7 ); v8 = v5 - ((_BYTE)v3 + 4); v9 = v8 + 3; *((_BYTE *)v3 + 2) = v8; if ( sub_4C81E0(&off_849C18, v8 + 3) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_Notice : Packet Too Long", v9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Notice"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005959E0) -------------------------------------------------------- int __thiscall sub_5959E0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2332))(v2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00595A90) -------------------------------------------------------- int __thiscall sub_595A90(void *this, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 void *v6; // edi@1 int v7; // esi@1 int v8; // eax@1 int v9; // eax@3 int v11; // [sp+2Ch] [bp+Ch]@1 v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AttrChange2DB"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_AttrChange2DB"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 13385; *((_WORD *)v6 + 4) = *((_WORD *)v5 + 29346); *((_WORD *)v6 + 1) = *((_WORD *)v5 + 2); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)a4; *(_DWORD *)((char *)v6 + 14) = *(_DWORD *)(a4 + 4); v6 = (char *)v6 + 18; memcpy(v6, (const void *)(a4 + 8), 0x64u); v6 = (char *)v6 + 100; *(_WORD *)v6 = *(_WORD *)(a4 + 108); *((_BYTE *)v6 + 2) = *(_BYTE *)(a4 + 110); v7 = a3; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 12))(a3, a4 + 10); v11 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, a4 + 10) + 20; v8 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, a4 + 10); if ( sub_4C81E0(&off_849C18, v8 + 20) ) { v9 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v9); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_AttrChange2DB : Packet Too Long", v11); } (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)v5 + 14672) + 64))( (char *)v5 + 58688, (*((_WORD *)v5 + 29346))++); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_AttrChange2DB"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00595C10) -------------------------------------------------------- int __thiscall sub_595C10(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ebx@1 int v5; // eax@1 char *v6; // edi@2 unsigned __int16 **v7; // eax@5 int v8; // ST1C_4@9 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SilverWing_PortalCast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SilverWing_PortalCast"; dword_750AB8[dword_750CB8++] = -1; v3 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 36484))(v2 + 36484, *(_WORD *)a2 & 0x3FF); v4 = v3; v5 = *(_WORD *)(v3 + 8); if ( (unsigned __int16)v5 < word_1325895C ) v6 = (char *)dword_13258958 + 16 * v5; else v6 = (char *)dword_13258958; if ( v6 && (v7 = (unsigned __int16 **)*((_DWORD *)v6 + 2)) != 0 && *v7 ) { if ( sub_4695E0(v2 + 84388, v2, **v7) ) { v8 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v4 + 8)); sub_566EF0((void *)(v2 + 7644)); *(_DWORD *)(v2 + 7644) = dword_14D129E8 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v6 + 2) + 4) + 203)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_WORD *)(v2 + 7648) = **(_WORD **)(*((_DWORD *)v6 + 2) + 4); *(_DWORD *)(v2 + 7664) = *((_DWORD *)v6 + 2); *(_DWORD *)(v2 + 7676) = v8; *(_BYTE *)(v2 + 7680) = *(_BYTE *)a2; *(_BYTE *)(v2 + 7681) = 0; *(_DWORD *)(v2 + 7672) = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v6 + 2) + 4) + 207); } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1805, 9); } } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1805, 9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SilverWing_PortalCast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325895C: using guessed type __int16 word_1325895C; // 14D129E8: using guessed type int dword_14D129E8; // 14D20890: using guessed type int dword_14D20890; //----- (00595DD0) -------------------------------------------------------- int __thiscall sub_595DD0(void *this, int a2) { unsigned int v2; // ST14_4@1 void *v3; // esi@1 int (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // edx@1 int v5; // ST10_4@1 int v6; // ebx@1 int v7; // edi@1 int v8; // eax@3 int v9; // edi@4 int v10; // eax@5 _BYTE *v11; // eax@5 int v12; // eax@5 _BYTE *v13; // eax@5 int v14; // edx@5 void (__thiscall *v15)(_DWORD, _DWORD, _DWORD); // eax@5 char v17; // [sp+10h] [bp-74h]@5 char v18; // [sp+24h] [bp-60h]@5 char v19; // [sp+45h] [bp-3Fh]@5 int v20; // [sp+66h] [bp-1Eh]@5 int v21; // [sp+6Ah] [bp-1Ah]@5 unsigned int v22; // [sp+74h] [bp-10h]@1 int v23; // [sp+80h] [bp-4h]@1 int v24; // [sp+84h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v2 = (unsigned int)&v24 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"; dword_750AB8[dword_750CB8++] = -1; v4 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD))**((_DWORD **)v3 + 9121); v5 = *(_WORD *)a2 & 0x3FF; v23 = 0; v6 = v4((char *)v3 + 36484, v5, v2); v7 = *(_WORD *)(v6 + 8); if ( (_WORD)v7 == word_14D2118C ) { v8 = *(_WORD *)(v6 + 11); if ( v8 < dword_14D20400 ) { v9 = *(_DWORD *)(dword_14D203FC + 4 * v8); if ( v9 ) { v10 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v10; v11 = &byte_85A2C0[256 * v10]; *(_DWORD *)v11 = *(_DWORD *)(v9 + 2); *((_DWORD *)v11 + 1) = *(_DWORD *)(v9 + 6); *((_DWORD *)v11 + 2) = *(_DWORD *)(v9 + 10); v11[12] = 0; strncpy(&v18, v11, 0xCu); v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *(_DWORD *)v13 = *(_DWORD *)(v9 + 2); *((_DWORD *)v13 + 1) = *(_DWORD *)(v9 + 6); *((_DWORD *)v13 + 2) = *(_DWORD *)(v9 + 10); v13[12] = 0; strncpy(&v19, v13, 0xCu); v14 = *(_DWORD *)v3; v20 = *(_DWORD *)(v6 + 13); v15 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(v14 + 772); v21 = *(_DWORD *)(v6 + 17); v15(v3, 12, 26); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1792, 9); (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v3 + 1536))( v3, &v17, 6, 9, 10); } } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_silverwing_Setloc : wrong item", v7); } --dword_750CB8; v23 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; // 14D2118C: using guessed type __int16 word_14D2118C; //----- (00595FA0) -------------------------------------------------------- int __stdcall sub_595FA0(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 int v8; // eax@7 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMCHANGE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_ITEMCHANGE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 10) == 2305 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_ITEMCHANGE_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3448))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_ITEMCHANGE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005960E0) -------------------------------------------------------- void *__thiscall sub_5960E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F0990; if ( a2 & 1 ) operator delete(this); return v2; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); //----- (00596110) -------------------------------------------------------- signed __int16 __stdcall sub_596110(int a1, int a2) { int v2; // edi@2 int v3; // eax@2 signed __int16 v4; // si@2 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemSilverWing::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemSilverWing::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2676))(a1) ) { v4 = 1792; } else { v2 = *(_DWORD *)a1; v3 = sub_48C200(&unk_150A0980, "RecallDisableField"); (*(void (__thiscall **)(int, int))(v2 + 1924))(a1, v3); v4 = 1807; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSilverWing::uib_CanUseItem"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005961E0) -------------------------------------------------------- signed __int16 __stdcall sub_5961E0(int a1, int a2) { signed __int16 result; // ax@2 int v3; // edi@4 int v4; // eax@4 signed __int16 v5; // si@4 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemRecallScroll::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemRecallScroll::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2784))(a1) == 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRecallScroll::uib_CanUseItem"); result = 1802; } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2676))(a1) ) { v5 = 1792; } else { v3 = *(_DWORD *)a1; v4 = sub_48C200(&unk_150A0980, "RecallDisableField"); (*(void (__thiscall **)(int, int))(v3 + 1924))(a1, v4); v5 = 1807; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRecallScroll::uib_CanUseItem"); result = v5; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005962F0) -------------------------------------------------------- signed int __stdcall sub_5962F0(void *a1, int a2) { int v2; // eax@1 void *v3; // eax@2 int v4; // esi@4 int v5; // ecx@5 signed int v7; // edi@7 int v8; // edi@7 signed int v9; // eax@7 int v10; // [sp-4h] [bp-24h]@5 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemByTable::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemByTable::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a2 + 8); if ( (unsigned __int16)v2 < word_1325895C ) v3 = (char *)dword_13258958 + 16 * v2; else v3 = dword_13258958; v4 = *(_DWORD *)v3; if ( !*(_DWORD *)v3 ) { --dword_750CB8; v10 = (int)"UseEffect::UseItemByTable::uib_CanUseItem"; v5 = (int)&unk_D020420; LABEL_6: sub_467660(v5, v10); return 1811; } v7 = sub_56C7E0(a1, *(_DWORD *)(v4 + 32), *(_WORD *)(v4 + 36), *(_DWORD *)v3); v8 = sub_56C7E0(a1, *(_DWORD *)(v4 + 38), *(_WORD *)(v4 + 42), v4) + v7; v9 = sub_56C7E0(a1, *(_DWORD *)(v4 + 44), *(_WORD *)(v4 + 48), v4); --dword_750CB8; v10 = (int)"UseEffect::UseItemByTable::uib_CanUseItem"; v5 = (int)&unk_D020420; if ( !(v9 + v8) ) goto LABEL_6; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemByTable::uib_CanUseItem"); return 1792; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325895C: using guessed type __int16 word_1325895C; //----- (00596420) -------------------------------------------------------- signed int __stdcall sub_596420(void *a1, int a2) { int v2; // esi@1 signed int v3; // eax@1 int v4; // esi@5 int v5; // esi@7 int v6; // eax@18 signed int result; // eax@19 int v8; // ecx@21 bool v9; // zf@24 unsigned __int16 v10; // ax@39 unsigned __int16 v11; // ax@46 unsigned int v12; // eax@54 unsigned __int16 v13; // ax@68 unsigned __int16 v14; // ax@75 unsigned int v15; // [sp-4h] [bp-130h]@1 int v16; // [sp+18h] [bp-114h]@1 char v17; // [sp+1Ch] [bp-110h]@9 unsigned int v18; // [sp+11Ch] [bp-10h]@1 int v19; // [sp+128h] [bp-4h]@1 int v20; // [sp+12Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v15 = (unsigned int)&v20 ^ __security_cookie; v2 = a2; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemChargedBuff::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemChargedBuff::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; sub_5CF620(&v16); LOBYTE(v19) = 1; v3 = -1; do { if ( v3 >= -1 ) { ++v3; v16 = v3; if ( v3 < dword_AA0B00 ) continue; } v16 = -10; goto LABEL_7; } while ( *((_WORD *)dword_AA0AFC + 4 * v3) != *(_WORD *)(a2 + 8) ); v4 = *((_DWORD *)dword_AA0AFC + 2 * v3 + 1); if ( !v4 ) { v2 = a2; LABEL_7: v5 = *(_WORD *)(v2 + 8); if ( byte_7493ED ) { if ( byte_14D21464 ) { sprintf(&v17, "%.255s", "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff : This effect is already set "); sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fputs(&v17, dword_14D212E0); } if ( byte_7493ED ) { if ( byte_14D21464 ) { sub_418E40((__time32_t)byte_14D211E0); if ( dword_14D212E0 ) fprintf(dword_14D212E0, "%d", v5); } if ( byte_7493ED && byte_14D21464 ) { if ( dword_14D212E0 ) { v6 = sub_418E40((__time32_t)byte_14D211E0); sub_654AB0(10, (FILE *)v6); fflush(dword_14D212E0); fclose(dword_14D212E0); dword_14D212E0 = 0; } } } } LOBYTE(v19) = 0; nullsub_2(&v16); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemChargedBuff::uib_CanUseItem"); return 1810; } v8 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)a1 + 1176))(v15); switch ( *(_DWORD *)(v4 + 36) ) { case 0: if ( (unsigned __int16)*(_BYTE *)v8 > *(_WORD *)(v4 + 40) ) goto LABEL_87; goto LABEL_26; case 1: v9 = *(_BYTE *)(v8 + 6) == 0; goto LABEL_25; default: goto LABEL_26; case 2: if ( *(_WORD *)(v4 + 40) + *(_BYTE *)(v8 + 10) > 4 ) goto LABEL_26; goto LABEL_87; case 3: if ( *(_WORD *)(v4 + 40) + *(_BYTE *)(v8 + 11) > 2 ) goto LABEL_26; goto LABEL_87; case 4: if ( *(_WORD *)(v4 + 40) + *(_BYTE *)(v8 + 12) >= 20 ) goto LABEL_26; goto LABEL_87; case 5: v9 = *(_BYTE *)(v8 + 13) == 0; goto LABEL_25; case 6: if ( *(_WORD *)(v8 + 2) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 7: if ( *(_WORD *)(v8 + 4) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 8: v10 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(v8 + 2) >= v10 && *(_WORD *)(v8 + 4) >= v10 ) goto LABEL_26; goto LABEL_87; case 0xD: if ( *(_WORD *)(v8 + 14) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0xE: if ( *(_WORD *)(v8 + 16) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0xF: v11 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(v8 + 14) >= v11 && *(_WORD *)(v8 + 16) >= v11 && *(_WORD *)(v8 + 38) >= v11 ) goto LABEL_26; goto LABEL_87; case 0xA: if ( *(_WORD *)(v8 + 18) >= (signed int)(((signed int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) ) goto LABEL_26; goto LABEL_87; case 0xB: if ( *(_WORD *)(v8 + 20) >= (signed int)(((signed int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)) ) goto LABEL_26; goto LABEL_87; case 0xC: v12 = ((signed int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((*(_WORD *)(v4 + 40) << 10) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); if ( *(_WORD *)(v8 + 18) >= (signed int)v12 && *(_WORD *)(v8 + 20) >= (signed int)v12 ) goto LABEL_26; goto LABEL_87; case 0x10: if ( *(_WORD *)(v8 + 22) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x11: v9 = *(_BYTE *)(v8 + 24) == 0; LABEL_25: if ( !v9 ) goto LABEL_26; goto LABEL_87; case 0x12: if ( *(_WORD *)(v8 + 26) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x13: if ( *(_BYTE *)(v8 + 25) >= *(_BYTE *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x14: if ( *(_WORD *)(v8 + 28) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x15: if ( *(_WORD *)(v8 + 30) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x16: v13 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(v8 + 28) >= v13 && *(_WORD *)(v8 + 30) >= v13 ) goto LABEL_26; goto LABEL_87; case 0x17: if ( *(_WORD *)(v8 + 32) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x18: if ( *(_WORD *)(v8 + 34) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x19: v14 = *(_WORD *)(v4 + 40); if ( *(_WORD *)(v8 + 32) >= v14 && *(_WORD *)(v8 + 34) >= v14 ) goto LABEL_26; goto LABEL_87; case 0x1F: if ( !sub_417C30(a1, v4) ) goto LABEL_26; sub_417D70(a1, *(_WORD *)(v4 + 40)); goto LABEL_87; case 0x21: if ( *(_BYTE *)(v8 + 36) >= 1u ) goto LABEL_26; goto LABEL_87; case 0x22: if ( *(_WORD *)(v8 + 38) >= *(_WORD *)(v4 + 40) ) goto LABEL_26; goto LABEL_87; case 0x23: if ( *(_BYTE *)(v8 + 40) == 1 ) goto LABEL_26; goto LABEL_87; case 0x26: if ( *(_BYTE *)(v8 + 44) == 1 ) { LABEL_26: LOBYTE(v19) = 0; nullsub_2(&v16); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemChargedBuff::uib_CanUseItem"); result = 1811; } else { LABEL_87: LOBYTE(v19) = 0; nullsub_2(&v16); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemChargedBuff::uib_CanUseItem"); result = 1792; } break; } return result; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // AA0B00: using guessed type int dword_AA0B00; // 14D21464: using guessed type char byte_14D21464; //----- (005969C0) -------------------------------------------------------- signed __int16 __thiscall sub_5969C0(void *this, int a2, int a3) { void *v3; // ebx@1 int v4; // eax@2 char v5; // al@5 int v6; // ecx@5 signed __int16 result; // ax@17 unsigned __int16 v8; // ax@20 unsigned __int16 v9; // si@20 unsigned __int16 v10; // [sp-4h] [bp-24h]@6 v3 = this; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemRide::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemRide::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || (v4 = *(_DWORD *)(a2 + 122)) == 0 || !*(_DWORD *)(v4 + 12) || !*(_BYTE *)(*(_DWORD *)(v4 + 12) + 164) ) { v10 = 4296; LABEL_19: v6 = a2; goto LABEL_20; } v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3736))(a2); v6 = a2; if ( v5 ) { v10 = 4292; LABEL_20: v8 = sub_45CC50((void *)v6, v10); --dword_750CB8; v9 = v8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRide::uib_CanUseItem"); return v9; } switch ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { case 0u: case 3u: case 4u: case 5u: goto LABEL_8; case 1u: if ( !sub_445F40(a2 + 84388, **(_WORD **)(*((_DWORD *)v3 + 1) + 4)) ) goto LABEL_10; if ( sub_4695E0(a2 + 84388, a2, **(_WORD **)(*((_DWORD *)v3 + 1) + 4)) ) goto LABEL_17; v10 = 4290; goto LABEL_19; case 2u: if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3176))(a2) > (unsigned int)dword_14D129E8 ) { LABEL_8: v10 = 4291; goto LABEL_19; } if ( !sub_445F40(a2 + 84388, **(_WORD **)(*((_DWORD *)v3 + 1) + 4)) ) { LABEL_10: v10 = 4298; goto LABEL_19; } if ( !sub_4695E0(a2 + 84388, a2, **(_WORD **)(*((_DWORD *)v3 + 1) + 4)) ) { v10 = 4290; goto LABEL_19; } LABEL_17: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRide::uib_CanUseItem"); result = 1792; break; default: goto LABEL_17; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00596BC0) -------------------------------------------------------- signed int __stdcall sub_596BC0(int a1, int a2) { int (__thiscall *v2)(_DWORD); // eax@1 signed int result; // eax@2 int v4; // eax@3 __int16 v5; // di@3 int v6; // edx@3 int v7; // eax@4 int (__thiscall *v8)(_DWORD); // eax@6 int v9; // eax@7 int v10; // esi@7 bool v11; // cf@9 int (**v12)(); // [sp+10h] [bp-30h]@3 int v13; // [sp+14h] [bp-2Ch]@3 int v14; // [sp+1Ch] [bp-24h]@6 __int16 v15; // [sp+20h] [bp-20h]@6 int *v16; // [sp+24h] [bp-1Ch]@6 int v17; // [sp+28h] [bp-18h]@6 int v18; // [sp+2Ch] [bp-14h]@6 int v19; // [sp+30h] [bp-10h]@1 int v20; // [sp+3Ch] [bp-4h]@1 v19 = (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1148); v20 = 0; if ( v2(a1) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1176))(a1); v5 = word_14D211B0; v12 = &off_6A86A4; v13 = a1 + 36484; v6 = *(_DWORD *)(a1 + 36484); if ( v4 ) v7 = (*(int (__stdcall **)(int))(v6 + 4))(v4); else v7 = (*(int (**)(void))(v6 + 8))(); v14 = v7; v12 = (int (**)())&off_6A86BC; v15 = v5; v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2004); LOBYTE(v20) = 1; v16 = (int *)&v12; v17 = v8(a1); v18 = 9; if ( sub_486D40(&v16) && (v9 = (**(int (__stdcall ***)(_DWORD))v16[1])(v16[2]), (v10 = v9) != 0) && (*(int (**)(void))(**(_DWORD **)(v9 + 112) + 40))() == 13 ) { v11 = *(_BYTE *)(v10 + 10) < 5u; v20 = -1; v12 = &off_6A86A4; if ( v11 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"); result = 1792; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"); result = 1817; } } else { --dword_750CB8; v20 = -1; v12 = &off_6A86A4; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"); result = 1816; } } else { --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_CanUseItem"); result = 1793; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D211B0: using guessed type __int16 word_14D211B0; //----- (00596DA0) -------------------------------------------------------- int __thiscall sub_596DA0(void *this, __int16 a2, int a3) { void *v3; // edi@1 void *v4; // esi@1 int v5; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 13421; *((_WORD *)v4 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v4 + 2) = *(_DWORD *)a3; *((_DWORD *)v4 + 3) = *(_DWORD *)(a3 + 4); *((_WORD *)v4 + 8) = a2 & 0x3FF | 0x2400; if ( sub_4C81E0(&off_849C18, 18) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", 18); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00596EC0) -------------------------------------------------------- int __stdcall sub_596EC0(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHESTITEM_REQ"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CHESTITEM_REQ"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2336))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CHESTITEM_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00596FB0) -------------------------------------------------------- int __thiscall sub_596FB0(void *this, int a2) { unsigned int v2; // ST10_4@1 void *v3; // esi@1 int v4; // edx@1 __int16 v5; // di@1 int (__thiscall *v6)(_DWORD, _DWORD, _DWORD); // eax@1 int v7; // edi@1 int v8; // ebx@1 __int16 v9; // ax@4 void (__thiscall *v10)(_DWORD); // edx@6 void *v11; // ebx@8 int v12; // eax@8 int v13; // eax@8 int v14; // edi@11 int v15; // eax@11 int v16; // eax@12 int v17; // edi@12 bool v18; // zf@12 int v19; // edi@13 __int16 v20; // ax@15 int v21; // edx@15 int v22; // ecx@15 int v23; // edx@16 int v24; // esi@18 int v25; // edi@21 int v26; // eax@21 int v27; // eax@22 signed int v29; // [sp-8h] [bp-D0h]@9 signed int v30; // [sp-4h] [bp-CCh]@9 int (**v31)(); // [sp+10h] [bp-B8h]@10 int *v32; // [sp+20h] [bp-A8h]@10 char *v33; // [sp+24h] [bp-A4h]@10 int v34; // [sp+28h] [bp-A0h]@10 int v35; // [sp+2Ch] [bp-9Ch]@1 int v36; // [sp+30h] [bp-98h]@12 int v37; // [sp+34h] [bp-94h]@1 int v38; // [sp+38h] [bp-90h]@15 __int16 v39; // [sp+3Ch] [bp-8Ch]@12 int v40; // [sp+40h] [bp-88h]@10 int v41; // [sp+44h] [bp-84h]@1 int v42; // [sp+48h] [bp-80h]@15 int v43; // [sp+4Ch] [bp-7Ch]@15 unsigned int v44; // [sp+B8h] [bp-10h]@1 int v45; // [sp+C4h] [bp-4h]@1 int v46; // [sp+C8h] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v2 = (unsigned int)&v46 ^ __security_cookie; v3 = this; v35 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 9121); v5 = *(_WORD *)(a2 + 14); v37 = a2 + 14; v6 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))v4; v7 = v5 & 0x3FF; v45 = 0; v8 = v6((char *)v3 + 36484, v7, v2); v41 = v8; if ( !v8 || *(_DWORD *)v8 != *(_DWORD *)(v35 + 6) || *(_DWORD *)(v8 + 4) != *(_DWORD *)(v35 + 10) ) { v30 = 9; v29 = 1814; goto LABEL_25; } v9 = *(_WORD *)(v35 + 16); if ( v9 == 2486 || v9 == 2487 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1814, 9); sub_526030(v3, *((_WORD *)v3 + 2), v8, v37); goto LABEL_26; } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v10 = *(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836); if ( *(_BYTE *)(v8 + 10) & 0xF0 ) { v10(v3); sub_639100( &unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Invalid Chest flag", (unsigned int)*(_BYTE *)(v8 + 10) >> 4); goto LABEL_26; } v10(v3); v11 = off_849C18; *(_WORD *)off_849C18 = 13392; *((_WORD *)v11 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v11 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v12 = v41; *(_DWORD *)((char *)v11 + 14) = *(_DWORD *)v41; *(_DWORD *)((char *)v11 + 18) = *(_DWORD *)(v12 + 4); *((_BYTE *)v11 + 22) = 0; *((_WORD *)v11 + 6) = *((_WORD *)v3 + 29346); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v13 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 9121))((char *)v3 + 36484, v7); v41 = v13; if ( v13 == 0 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", v13 != 0); v30 = 9; v29 = 1795; LABEL_25: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, v29, v30); goto LABEL_26; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); sub_43BB20((int)&v31, (int)((char *)v3 + 36484), (int)((char *)v3 + 160312)); LOBYTE(v45) = 1; v32 = (int *)&v31; v40 = (int)((char *)v3 + 58688); v33 = (char *)v3 + 58688; v34 = 9; if ( sub_486D40(&v32) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); v16 = *((_WORD *)v3 + 29346); v39 = v7 & 0x3FF | 0x2400; v17 = v40; (*(void (__thiscall **)(int, int, int, __int16 *, __int16 *))(*(_DWORD *)v40 + 48))(v40, v16, v41, &v39, &v39); v18 = *(_BYTE *)(v35 + 18) == 0; v36 = v35 + 19; v41 = 0; if ( v18 ) { LABEL_18: ++*(_WORD *)(v17 + 4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); v24 = 10 * *((_BYTE *)v11 + 22) + 23; if ( sub_4C81E0(&off_849C18, 10 * *((_BYTE *)v11 + 22) + 23) ) { v27 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v27); v31 = &off_6A86A4; } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", v24); v31 = &off_6A86A4; } } else { v19 = (int)((char *)v11 + 31); while ( sub_486D40(&v32) ) { v20 = *(_WORD *)v19 & 0x3FF | 0x2400; *(_WORD *)v19 = v20; *(_WORD *)v19 = v20 ^ (v20 ^ *((_WORD *)v32 + 4)) & 0x3FF; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); sub_63D1E0((int)&v42, (int)dword_1508B168, 65535, v36 + 3); v21 = v36 + *(_BYTE *)v36 + 1; v22 = v43; *(_DWORD *)(v19 - 8) = v42; *(_DWORD *)(v19 - 4) = v22; ++*((_BYTE *)v11 + 22); v36 = v21; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); LOWORD(v38) = v38 & 0x3FF | 0x2400; LOWORD(v38) = (v38 ^ *((_WORD *)v32 + 4)) & 0x3FF ^ v38; v37 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 9121))( (char *)v3 + 36484, v32[2]); if ( !(v37 != 0) ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", 0); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1814, 9); (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v40 + 40))(*((_WORD *)v3 + 29346)); v31 = &off_6A86A4; goto LABEL_26; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); (*(void (__thiscall **)(int, _DWORD, int, int *, int *, int *))(*(_DWORD *)v40 + 64))( v40, *((_WORD *)v3 + 29346), v37, &v42, &v38, &v38); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); v23 = *(_BYTE *)(v35 + 18); v19 += 10; ++v41; if ( v41 >= v23 ) { v17 = v40; goto LABEL_18; } } v25 = *(_DWORD *)v3; v26 = sub_48C200(&unk_150A0980, "PresentBoxInvenFull"); (*(void (__thiscall **)(void *, int))(v25 + 1924))(v3, v26); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1812, 9); (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v40 + 40))(*((_WORD *)v3 + 29346)); v31 = &off_6A86A4; } } else { v14 = *(_DWORD *)v3; v15 = sub_48C200(&unk_150A0980, "PresentBoxInvenFull"); (*(void (__thiscall **)(void *, int))(v14 + 1924))(v3, v15); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v3 + 2332))(v3, 1812, 9); v31 = &off_6A86A4; } LABEL_26: --dword_750CB8; v45 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00597570) -------------------------------------------------------- char __stdcall sub_597570(void *a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemMiniHouse::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemMiniHouse::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_594E10(a1, a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMiniHouse::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597620) -------------------------------------------------------- char __stdcall sub_597620(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemMiniHouse::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemMiniHouse::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 72))(a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMiniHouse::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005976D0) -------------------------------------------------------- char __userpurge sub_5976D0(int a1, int a2, int a3, int a4) { char result; // al@3 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemRide::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemRide::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; switch ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1156))(a2) ) { case 1u: case 2u: if ( a4 ) { if ( sub_4BE7E0(&unk_13359F08, *(_WORD *)(a4 + 8)) == 2 ) sub_45CE00(a2, a1, -1, a3); else sub_45D990((void *)a2, a3); goto LABEL_10; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRide::uib_DirectUse"); result = 0; break; case 6u: if ( sub_45CDE0(a2) == 2 ) sub_45D1C0(a2, a2, 0); else sub_45F070((void *)a2); goto LABEL_10; default: LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRide::uib_DirectUse"); result = 1; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597830) -------------------------------------------------------- char __stdcall sub_597830(void *a1, __int16 a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemChest::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemChest::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_596DA0(a1, a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemChest::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005978E0) -------------------------------------------------------- char __stdcall sub_5978E0(void *a1, int a2, int a3) { __int16 v4; // [sp+Ch] [bp-10h]@1 int v5; // [sp+18h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemMysteryBolt::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemMysteryBolt::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; sub_5635D0(a1, a3, (int)&v4); (*(void (__thiscall **)(void *))(*(_DWORD *)a1 + 2332))(a1); --dword_750CB8; v5 = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMysteryBolt::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005979A0) -------------------------------------------------------- char __stdcall sub_5979A0(int a1, __int16 a2, int a3) { void *v3; // eax@1 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemLicenseClear::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemLicenseClear::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 2332))(a1, 1792, 9); v3 = off_849C18; *(_WORD *)off_849C18 = -28661; *((_WORD *)v3 + 1) = a2 & 0x3FF | 0x2400; if ( sub_4C81E0(&off_849C18, 4) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemLicenseClear::uib_DirectUse : Packet Too Long", 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemLicenseClear::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597AB0) -------------------------------------------------------- char __thiscall sub_597AB0(void *this, void *a2, int a3, int a4) { void *v4; // esi@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemStatClear::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemStatClear::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_516BE0(a2, *((_DWORD *)v4 + 1), *((_DWORD *)v4 + 2), a3, a4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2332))(a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemStatClear::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597B80) -------------------------------------------------------- char __stdcall sub_597B80(void *a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemAmountHP::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemAmountHP::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_594AC0(a1, a2, a3); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2332))(a1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemAmountHP::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597C40) -------------------------------------------------------- char __stdcall sub_597C40(void *a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemAmountSP::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemAmountSP::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_594C70(a1, a2, a3); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2332))(a1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemAmountSP::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597D00) -------------------------------------------------------- char __stdcall sub_597D00(void *a1, int a2, int a3) { char v4; // [sp+Ch] [bp-10h]@1 int v5; // [sp+18h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemBossMobDetect::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemBossMobDetect::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; sub_427E80(&v4); LOBYTE(v5) = 1; sub_549B60(a1, (int)&v4, 0); (*(void (__thiscall **)(void *))(*(_DWORD *)a1 + 2332))(a1); LOBYTE(v5) = 0; sub_427EB0(&v4); --dword_750CB8; v5 = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemBossMobDetect::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00597DD0) -------------------------------------------------------- int __stdcall sub_597DD0(int a1, int a2, int a3) { int v3; // edx@3 int v4; // eax@3 const char *v5; // esi@4 int v7; // [sp-24h] [bp-ACh]@3 int v8; // [sp-20h] [bp-A8h]@3 int v9; // [sp-1Ch] [bp-A4h]@3 int v10; // [sp-18h] [bp-A0h]@3 int v11; // [sp-14h] [bp-9Ch]@3 const char *v12; // [sp-10h] [bp-98h]@3 int v13; // [sp-Ch] [bp-94h]@3 int v14; // [sp-8h] [bp-90h]@3 unsigned int v15; // [sp-4h] [bp-8Ch]@1 int v16; // [sp+Ch] [bp-7Ch]@1 int *v17; // [sp+10h] [bp-78h]@3 char v18; // [sp+14h] [bp-74h]@4 char v19; // [sp+28h] [bp-60h]@4 char v20; // [sp+49h] [bp-3Fh]@4 int v21; // [sp+6Ah] [bp-1Eh]@4 int v22; // [sp+6Eh] [bp-1Ah]@4 unsigned int v23; // [sp+78h] [bp-10h]@1 int v24; // [sp+84h] [bp-4h]@1 int v25; // [sp+88h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; v15 = (unsigned int)&v25 ^ __security_cookie; v16 = (int)"UseEffect::UseItemRecallScroll::uib_Effect"; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemRecallScroll::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemRecallScroll::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; if ( a2 ) { v3 = *(_WORD *)(a2 + 8); v14 = 0; v13 = v3; v12 = "ItemIdent"; v17 = &v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "RecallPoint", 0x14u); v4 = sub_644B70(&unk_1321F620, v7, v8, v9, v10, v11, v12, v13, v14); if ( v4 ) { v5 = (const char *)(v4 + 36); v21 = *(_WORD *)(v4 + 68); v22 = *(_WORD *)(v4 + 70); strncpy(&v19, (const char *)(v4 + 36), 0x21u); strncpy(&v20, v5, 0x21u); (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)a1 + 1536))( a1, &v18, 6, 9, 10); } --dword_750CB8; v24 = -1; } else { --dword_750CB8; v24 = -1; } return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRecallScroll::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00597F10) -------------------------------------------------------- int __stdcall sub_597F10(int a1, int a2, int a3) { unsigned int v3; // eax@1 int v4; // esi@2 int v5; // edx@4 void *v6; // esi@11 int v7; // eax@13 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemSkillScroll::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemSkillScroll::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 8); if ( v3 < dword_14D20894 ) { v4 = dword_14D21184 + 40 * v3; if ( v4 ) { if ( *(_DWORD *)v4 ) { v5 = **(_WORD **)v4; if ( (_WORD)v5 == *(_WORD *)(a2 + 8) ) goto LABEL_7; sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v3 + v5); } } } v4 = 0; LABEL_7: if ( v4 ) { dword_13257798 = sub_639620(&unk_13257C80, (unsigned __int8 *)(*(_DWORD *)v4 + 2)); if ( dword_13257798 != -1 ) { v6 = off_849C18; *(_WORD *)off_849C18 = 18433; *((_WORD *)v6 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_DWORD *)v6 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_WORD *)v6 + 6) = dword_13257798; *(_WORD *)((char *)v6 + 15) = -1; *((_BYTE *)v6 + 14) = BYTE2(dword_13257798); if ( sub_4C81E0(&off_849C18, 17) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_SkillScroll_Result : Packet Too Long", 17); } } else { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_uie_skillscroll : Cannot found matched skill", *(_DWORD *)v4 + 2); } } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemSkillScroll::uib_Effect : Invalid item", *(_WORD *)(a2 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSkillScroll::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257798: using guessed type int dword_13257798; // 14D16430: using guessed type int dword_14D16430; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (005980F0) -------------------------------------------------------- int __stdcall sub_5980F0(int a1, int a2, int a3) { int v3; // edi@2 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemByTable::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemByTable::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; if ( a3 ) { v3 = a1; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 876))( a1, *(_DWORD *)(*(_DWORD *)a3 + 32), *(_WORD *)(*(_DWORD *)a3 + 36), a3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 876))( v3, *(_DWORD *)(*(_DWORD *)a3 + 38), *(_WORD *)(*(_DWORD *)a3 + 42), a3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 876))( v3, *(_DWORD *)(*(_DWORD *)a3 + 44), *(_WORD *)(*(_DWORD *)a3 + 48), a3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemByTable::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005981E0) -------------------------------------------------------- int __stdcall sub_5981E0(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemChargedBuff::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemChargedBuff::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 880))(a1, a2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 992))(a1); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemChargedBuff::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005982A0) -------------------------------------------------------- int __stdcall sub_5982A0(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemItemPackage::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemItemPackage::uib_Effect"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemItemPackage::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005982F0) -------------------------------------------------------- int __stdcall sub_5982F0(int a1, int a2, int a3) { int v4; // [sp+0h] [bp-14h]@0 int v5; // [sp+8h] [bp-Ch]@0 int v6; // [sp+Ch] [bp-8h]@0 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemRoar::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemRoar::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(int, _DWORD, int, int))(*(_DWORD *)a1 + 2276))( v4, "UseEffect::UseItemRoar::uib_Effect", v5, v6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemRoar::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005983A0) -------------------------------------------------------- int __stdcall sub_5983A0(int a1, int a2, int a3) { int v4; // [sp+0h] [bp-14h]@0 int v5; // [sp+8h] [bp-Ch]@0 int v6; // [sp+Ch] [bp-8h]@0 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemSkillErase::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemSkillErase::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(int, _DWORD, int, int))(*(_DWORD *)a1 + 2280))( v4, "UseEffect::UseItemSkillErase::uib_Effect", v5, v6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSkillErase::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598450) -------------------------------------------------------- int __stdcall sub_598450(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemWingStone::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemWingStone::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) (*(void (**)(void))(*(_DWORD *)a1 + 2328))(); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemWingStone::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598500) -------------------------------------------------------- int __stdcall sub_598500(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemMemoryFeather::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 2324))(5); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemMemoryFeather::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005985B0) -------------------------------------------------------- int __stdcall sub_5985B0(int a1, int a2, int a3) { int v4; // [sp+0h] [bp-14h]@0 int v5; // [sp+8h] [bp-Ch]@0 int v6; // [sp+Ch] [bp-8h]@0 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemGuildReName::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemGuildReName::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(int, _DWORD, int, int))(*(_DWORD *)a1 + 2184))( v4, "UseEffect::UseItemGuildReName::uib_Effect", v5, v6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemGuildReName::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598660) -------------------------------------------------------- int __stdcall sub_598660(int a1, int a2, int a3) { int v4; // [sp+0h] [bp-14h]@0 int v5; // [sp+8h] [bp-Ch]@0 int v6; // [sp+Ch] [bp-8h]@0 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemGuildReType::uib_Effect"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemGuildReType::uib_Effect"; dword_750AB8[dword_750CB8++] = -1; (*(void (__stdcall **)(int, _DWORD, int, int))(*(_DWORD *)a1 + 2188))( v4, "UseEffect::UseItemGuildReType::uib_Effect", v5, v6); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemGuildReType::uib_Effect"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598710) -------------------------------------------------------- int __thiscall sub_598710(void *this, int a2, int a3, unsigned __int16 **a4, unsigned __int8 a5) { unsigned int v5; // ST10_4@1 void *v6; // ebx@1 int (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // edx@1 int v8; // esi@1 unsigned __int16 v9; // cx@1 unsigned __int16 v10; // ax@1 int v11; // eax@4 size_t v12; // ebx@6 int v13; // ebx@7 int v14; // eax@9 int v15; // eax@10 int v16; // esi@10 int v17; // ST30_4@10 int v18; // eax@10 int v19; // edi@10 int v20; // ecx@10 int v21; // ebx@10 int v22; // eax@12 int v23; // esi@14 int v24; // esi@15 int v25; // edi@15 int v26; // eax@15 int v27; // edi@16 int v28; // eax@16 int v29; // edi@17 int v30; // eax@17 int v31; // eax@17 void *v33; // [sp+10h] [bp-510h]@1 void *v34; // [sp+14h] [bp-50Ch]@6 int v35; // [sp+20h] [bp-500h]@1 signed int v36; // [sp+24h] [bp-4FCh]@4 __int16 v37; // [sp+28h] [bp-4F8h]@14 unsigned __int8 v38; // [sp+2Fh] [bp-4F1h]@1 char v39; // [sp+30h] [bp-4F0h]@14 char v40; // [sp+38h] [bp-4E8h]@16 __int16 v41; // [sp+9Ch] [bp-484h]@14 char v42; // [sp+9Eh] [bp-482h]@14 char v43; // [sp+A0h] [bp-480h]@10 int v44; // [sp+A8h] [bp-478h]@10 __int16 v45; // [sp+10Ch] [bp-414h]@10 char v46; // [sp+10Eh] [bp-412h]@10 char v47; // [sp+110h] [bp-410h]@6 unsigned int v48; // [sp+510h] [bp-10h]@1 int v49; // [sp+51Ch] [bp-4h]@1 int v50; // [sp+520h] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v5 = (unsigned int)&v50 ^ __security_cookie; v6 = this; v38 = a5; v33 = this; sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast"; dword_750AB8[dword_750CB8++] = -1; v7 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD))**(_DWORD **)a3; v49 = 0; v8 = v7(a3, v38, v5); v9 = *(_WORD *)(v8 + 8); v10 = **a4; v35 = v8; if ( v9 != v10 ) { sub_639150(&unk_86DDD8, (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Item Changed", v9, v10); LABEL_3: (*(void (__thiscall **)(void *, int, signed int))(*(_DWORD *)v6 + 24))(v6, a2, 1794); --dword_750CB8; goto LABEL_18; } v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(v8 + 112) + 28))(v8 + 8); v36 = v11; if ( v11 <= 0 ) { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Zero lot", v11); goto LABEL_3; } v12 = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v6 + 20))(v6, &v47) - 19; v34 = off_849C18; memmove(off_849C18, &v47, v12); *(_DWORD *)((char *)v34 + v12 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); *(_WORD *)((char *)v34 + v12) = *(_WORD *)(a2 + 4); if ( v36 == 1 ) { *((_BYTE *)v34 + v12 + 20) = 1; *(_DWORD *)((char *)v34 + v12 + 6) = *(_DWORD *)v8; *(_DWORD *)((char *)v34 + v12 + 10) = *(_DWORD *)(v8 + 4); *(_WORD *)((char *)v34 + v12 + 18) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2) + 4); v13 = v12 + 21; if ( sub_4C81E0(&off_849C18, v13) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Packet Too Long", v13); } } else { v15 = *(_DWORD *)(v8 + 112); memcpy(&v43, (const void *)v8, 0x6Cu); v16 = v8 + 108; v45 = *(_WORD *)v16; v46 = *(_BYTE *)(v16 + 2); v17 = v15; v18 = (*(int (__thiscall **)(int, int *))(*(_DWORD *)v15 + 28))(v15, &v44); (*(void (__stdcall **)(int *, int))(*(_DWORD *)v17 + 32))(&v44, v18 - 1); *((_BYTE *)v34 + v12 + 20) = 0; v19 = (int)((char *)v34 + v12 + 21); *(_WORD *)((char *)v34 + v12 + 18) = *(_WORD *)((*(int (**)(void))(*(_DWORD *)a2 + 2004))() + 4); *(_DWORD *)((char *)v34 + v12 + 6) = *(_DWORD *)v35; v20 = v44; *(_DWORD *)((char *)v34 + v12 + 10) = *(_DWORD *)(v35 + 4); *(_WORD *)((char *)v34 + v12 + 14) = *(_WORD *)(v35 + 8); *(_WORD *)((char *)v34 + v12 + 16) = v19 - (_WORD)v34 - 1; v21 = sub_63D0C0(&v43, v17, v20, (int)((char *)v34 + v12 + 21)) - v19 + v12 + 21; if ( sub_4C81E0(&off_849C18, v21) ) { v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Packet Too Long", v21); } v8 = v35; } v37 = v38 | 0x2400; memcpy(&v39, (const void *)v8, 0x6Cu); v23 = v8 + 108; v41 = *(_WORD *)v23; v42 = *(_BYTE *)(v23 + 2); if ( v36 > 1 ) { (*(void (__stdcall **)(char *, int))(**(_DWORD **)(v35 + 112) + 32))(&v40, v36 - 1); v24 = a2; v27 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2004))(a2); v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v24 + 2004))(v24); (*(void (__thiscall **)(int, _DWORD, int, char *, __int16 *, __int16 *))(*(_DWORD *)v27 + 64))( v27, *(_WORD *)(v28 + 4), v35, &v39, &v37, &v37); } else { v24 = a2; v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004))(a2); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v24 + 2004))(v24); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, __int16 *))(*(_DWORD *)v25 + 48))( v25, *(_WORD *)(v26 + 4), v35, &v37, &v37); } v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v24 + 2004))(v24); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v24 + 2004))(v24); (*(void (__thiscall **)(int, _DWORD, char *, __int16 *, void *))(*(_DWORD *)v29 + 88))( v29, *(_WORD *)(v30 + 4), &v39, &v37, v33); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v24 + 2004))(v24); ++*(_WORD *)(v31 + 4); --dword_750CB8; LABEL_18: v49 = -1; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemVariationProtocolBase::uib_AfterCast"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00598B70) -------------------------------------------------------- int __stdcall sub_598B70(int a1, __int16 a2) { void *v2; // eax@1 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemFurnitureEndureKit::uivpb_SendErrorCode"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemFurnitureEndureKit::uivpb_SendErrorCode"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 12340; *((_WORD *)v2 + 3) = a2; if ( sub_4C81E0(&off_849C18, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo : Packet Too Long", 6); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemFurnitureEndureKit::uivpb_SendErrorCode"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598C60) -------------------------------------------------------- char __stdcall sub_598C60(void *a1, int a2, int a3) { char result; // al@2 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemCoin::uib_AfterCast"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemCoin::uib_AfterCast"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) { sub_614000(a1, a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemCoin::uib_AfterCast"); result = 1; } else { (*(void (__stdcall **)(_DWORD))(v0 + 2332))(1793); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemCoin::uib_AfterCast"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598D50) -------------------------------------------------------- int __thiscall sub_598D50(void *this, __int16 a2, int a3) { void *v3; // edi@1 void *v4; // esi@1 int v5; // eax@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 13474; *((_WORD *)v4 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v4 + 2) = *(_DWORD *)a3; *((_DWORD *)v4 + 3) = *(_DWORD *)(a3 + 4); *((_WORD *)v4 + 8) = a2 & 0x3FF | 0x2400; if ( sub_4C81E0(&off_849C18, 18) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", 18); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00598E70) -------------------------------------------------------- int __stdcall sub_598E70(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CAPSULEITEM_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_CAPSULEITEM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2888))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_CAPSULEITEM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00598F50) -------------------------------------------------------- int __thiscall sub_598F50(void *this, int a2) { void *v2; // esi@1 __int16 v3; // ax@1 int v4; // edx@3 int v5; // eax@3 int v6; // ebx@3 void *v7; // edi@8 int v8; // ebx@8 int v9; // edi@9 int v10; // eax@9 void (__thiscall *v11)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@10 __int16 v12; // ax@10 __int16 v13; // ax@10 int v14; // eax@10 int v15; // eax@14 unsigned int v17; // [sp-4h] [bp-C4h]@1 int v18; // [sp-4h] [bp-C4h]@4 int (**v19)(); // [sp+10h] [bp-B0h]@8 int v20; // [sp+20h] [bp-A0h]@3 int v21; // [sp+24h] [bp-9Ch]@3 int *v22; // [sp+28h] [bp-98h]@8 char *v23; // [sp+2Ch] [bp-94h]@8 int v24; // [sp+30h] [bp-90h]@8 int v25; // [sp+34h] [bp-8Ch]@1 int v26; // [sp+38h] [bp-88h]@10 __int16 v27; // [sp+3Ch] [bp-84h]@10 int v28; // [sp+40h] [bp-80h]@10 int v29; // [sp+44h] [bp-7Ch]@10 unsigned int v30; // [sp+B0h] [bp-10h]@1 int v31; // [sp+BCh] [bp-4h]@1 int v32; // [sp+C0h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v17 = (unsigned int)&v32 ^ __security_cookie; v2 = this; v25 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_WORD *)(a2 + 6); v31 = 0; if ( v3 == 10309 || v3 == 10310 ) { (*(void (__thiscall **)(void *, signed int, signed int, unsigned int))(*(_DWORD *)v2 + 2332))(v2, 1794, 9, v17); v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; goto LABEL_17; } v4 = *((_DWORD *)v2 + 9121); v21 = *(_WORD *)(a2 + 16) & 0x3FF; v5 = (*(int (__thiscall **)(char *, int, unsigned int))v4)((char *)v2 + 36484, v21, v17); v6 = v5; v20 = v5; if ( !v5 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; LABEL_17: --dword_750CB8; goto LABEL_18; } if ( *(_DWORD *)v5 != *(_DWORD *)(a2 + 8) || *(_DWORD *)(v5 + 4) != *(_DWORD *)(a2 + 12) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; goto LABEL_17; } v7 = off_849C18; *(_WORD *)off_849C18 = 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 *)((char *)v7 + 14) = *(_DWORD *)v6; *(_DWORD *)((char *)v7 + 18) = *(_DWORD *)(v6 + 4); *((_WORD *)v7 + 6) = *((_WORD *)v2 + 29346); sub_43BB20((int)&v19, (int)((char *)v2 + 36484), (int)((char *)v2 + 160312)); v22 = (int *)&v19; v8 = (int)((char *)v2 + 58688); LOBYTE(v31) = 1; v23 = (char *)v2 + 58688; v24 = 9; if ( !sub_486D40(&v22) ) { v9 = *(_DWORD *)v2; v10 = sub_48C200(&unk_150A0980, "PresentBoxInvenFull"); (*(void (__thiscall **)(void *, int))(v9 + 1924))(v2, v10); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1812, 9); v19 = &off_6A86A4; v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; goto LABEL_17; } v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 48); v27 = v21 & 0x3FF | 0x2400; v11((char *)v2 + 58688, *((_WORD *)v2 + 29346), v20, &v27, &v27); sub_63D1E0((int)&v28, (int)dword_1508B168, 65535, v25 + 18); v12 = v26 & 0x3FF | 0x2400; LOWORD(v26) = v12; v13 = (v12 ^ *((_WORD *)v22 + 4)) & 0x3FF ^ v12; LOWORD(v26) = v13; *((_WORD *)v7 + 15) = v13; *(_DWORD *)((char *)v7 + 22) = v28; *(_DWORD *)((char *)v7 + 26) = v29; v14 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 9121))( (char *)v2 + 36484, v22[2]); if ( !v14 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", 0); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1814, 9); (*(void (__thiscall **)(char *, _DWORD))(*(_DWORD *)v8 + 40))((char *)v2 + 58688, *((_WORD *)v2 + 29346)); v19 = &off_6A86A4; v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; goto LABEL_17; } (*(void (__thiscall **)(char *, _DWORD, int, int *, int *, int *))(*(_DWORD *)v8 + 64))( (char *)v2 + 58688, *((_WORD *)v7 + 6), v14, &v28, &v26, &v26); ++*((_WORD *)v2 + 29346); if ( sub_4C81E0(&off_849C18, 32) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", 32); } --dword_750CB8; v19 = &off_6A86A4; v18 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; LABEL_18: v31 = -1; return sub_467660((int)&unk_D020420, v18); } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; //----- (00599300) -------------------------------------------------------- int __stdcall sub_599300(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 int v8; // eax@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCAPSULE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCAPSULE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 10) == 10304 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, signed int))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 1) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCAPSULE_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_ITEMDB_GETFROMCAPSULE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00599460) -------------------------------------------------------- signed int __stdcall sub_599460(int a1, int a2) { signed int result; // eax@2 int v3; // eax@3 int v4; // ecx@7 unsigned __int8 v5; // al@19 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemPet::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; if ( !a1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); return 13377; } v3 = *(_DWORD *)(a1 + 122); if ( !v3 ) { sub_4D0A80((void *)a1, 13378, "uib_CanUseItem"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); return 13378; } if ( !*(_DWORD *)(v3 + 12) ) { sub_4D0A80((void *)a1, 13379, "uib_CanUseItem"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); return 13379; } v4 = *(_DWORD *)(v3 + 12); if ( *(_BYTE *)(v4 + 54) == 2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); return 13380; } if ( !*(_BYTE *)(v4 + 158) ) { sub_4D0A80((void *)a1, 13380, "uib_CanUseItem"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); return 13380; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3736))(a1) == 1 ) goto LABEL_28; if ( a1 == -161784 ) { sub_4D0A80((void *)0xFFFD8808, 13382, "uib_CanUseItem"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); return 13382; } if ( *(_DWORD *)(a1 + 161796) > (unsigned int)dword_14D129E8 ) { LABEL_28: sub_4D0A80((void *)a1, 13403, "uib_CanUseItem"); LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); result = 13403; } else { switch ( *(_DWORD *)(a1 + 161784) ) { case 1: goto LABEL_13; case 2: case 3: case 4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); result = 13404; break; case 0: case 5: case 6: v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1); if ( v5 && (v5 <= 2u || v5 > 7u) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); result = 1792; } else { sub_4D0A80((void *)a1, 13381, "uib_CanUseItem"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); result = 13381; } break; case 8: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); result = 13405; break; default: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_CanUseItem"); result = 13408; break; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00599810) -------------------------------------------------------- char __userpurge sub_599810(int a1, int a2, int a3, int a4) { int v5; // eax@7 int v6; // eax@10 int v7; // [sp-4h] [bp-20h]@12 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemPet::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { switch ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2) ) { case 1u: case 2u: if ( !a4 || (v5 = sub_645030((int)&dword_14D20890, *(_WORD *)(a4 + 8))) == 0 || !sub_4CE510(dword_1325CC60, (const char *)v5) || a2 == -161784 ) { --dword_750CB8; goto LABEL_3; } v6 = *(_DWORD *)(a2 + 161784); if ( v6 ) { if ( (unsigned int)(v6 - 5) > 1 ) { LABEL_15: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_DirectUse"); return 1; } v7 = a3; } else { v7 = a3; } sub_4D26A0(a2, a1, v7); goto LABEL_15; default: goto LABEL_15; } } --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemPet::uib_DirectUse"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (00599970) -------------------------------------------------------- signed int __thiscall sub_599970(void *this, int a2) { void *v2; // edi@1 int (__thiscall **v3)(_DWORD, _DWORD); // esi@1 int v4; // eax@1 int v5; // ebx@1 int v6; // esi@1 int v7; // eax@2 signed int result; // eax@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ItemSmallBag::isb_FindEmpty"); dword_7508B8[dword_750CB8] = (int)"ItemSmallBag::isb_FindEmpty"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall ***)(_DWORD, _DWORD))v2; v4 = (*(int (**)(void))(*(_DWORD *)a2 + 1176))(); v5 = ((int (__thiscall **)(void *, int))v3)[1](v2, v4); v6 = 0; if ( v5 <= 0 ) goto LABEL_7; while ( 1 ) { v7 = (**(int (__thiscall ***)(void *, int))v2)(v2, v6); if ( v7 ) { if ( sub_63FD50(v7) == -1 ) break; } ++v6; if ( v6 >= v5 ) goto LABEL_7; } if ( v6 < v5 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemSmallBag::isb_FindEmpty"); result = v6; } else { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ItemSmallBag::isb_FindEmpty"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00599A90) -------------------------------------------------------- int __thiscall sub_599A90(void *this, int a2, int a3, int a4) { int v4; // esi@1 __int16 v5; // di@1 int v6; // ebx@1 signed int v7; // eax@5 __int16 v8; // ax@6 void *v9; // edi@6 int v10; // eax@6 int v11; // eax@8 int v12; // edi@9 int v13; // eax@9 int v14; // edi@9 int v15; // eax@9 int v16; // eax@9 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Move4Activ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_Move4Activ"; dword_750AB8[dword_750CB8++] = -1; v5 = a2; v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 36484))(v4 + 36484, a2); if ( !v6 || *(_DWORD *)v6 != *(_DWORD *)a3 || *(_DWORD *)(v6 + 4) != *(_DWORD *)(a3 + 4) ) { LABEL_10: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1792, 9); goto LABEL_11; } if ( a4 == 15 ) { v7 = sub_599970((void *)(v4 + 57840), v4); if ( v7 >= 0 ) { LOWORD(a2) = v7 & 0x3FF | 0x3C00; v8 = *(_WORD *)(v4 + 4); LOWORD(a3) = v5 & 0x3FF | 0x2400; v9 = off_849C18; *((_WORD *)off_849C18 + 1) = v8; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)v9 = 13352; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v9 + 3) = v10; *((_DWORD *)v9 + 2) = v10; *((_WORD *)v9 + 8) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4) + 4); *((_WORD *)v9 + 13) = a2; *(_DWORD *)((char *)v9 + 18) = *(_DWORD *)v6; *(_DWORD *)((char *)v9 + 22) = *(_DWORD *)(v6 + 4); *((_WORD *)v9 + 14) = a3; *((_WORD *)v9 + 15) = *(_WORD *)(v6 + 8); *((_DWORD *)v9 + 8) = (*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 28))(v6 + 8); if ( sub_4C81E0(&off_849C18, 36) ) { v11 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v11); } else { sub_639100(&unk_86DDD8, (int)"ItemRelocationManager::irm_Move : Packet Too Long", 36); } v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int *, int *))(*(_DWORD *)v12 + 48))( v12, *(_WORD *)(v13 + 4), v6, &a3, &a2); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int *, int, int *, int *))(*(_DWORD *)v14 + 68))( v14, *(_WORD *)(v15 + 4), &a2, v6, &a2, &a3); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v16 + 4); goto LABEL_10; } } LABEL_11: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_Move4Activ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00599CE0) -------------------------------------------------------- int __stdcall sub_599CE0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Silverwing_Cancel"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_Silverwing_Cancel"; dword_750AB8[dword_750CB8++] = -1; sub_5959E0((void *)a1, a2); sub_50D4B0(a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Silverwing_Cancel"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00599D90) -------------------------------------------------------- int __stdcall sub_599D90(void *a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Silverwing_Portal"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_Silverwing_Portal"; dword_750AB8[dword_750CB8++] = -1; sub_595C10(a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Silverwing_Portal"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00599E30) -------------------------------------------------------- int __thiscall sub_599E30(void *this, int a2) { unsigned int v2; // ST0C_4@1 void *v3; // ebx@1 int (__thiscall *v4)(_DWORD, _DWORD, _DWORD); // edx@1 int v5; // ST08_4@1 int v6; // eax@1 int v7; // edx@3 int v8; // eax@6 signed int v9; // eax@6 int v10; // eax@9 signed int v12; // [sp-8h] [bp-A0h]@9 signed int v13; // [sp-4h] [bp-9Ch]@9 int v14; // [sp+10h] [bp-88h]@1 char v15; // [sp+18h] [bp-80h]@6 char v16; // [sp+22h] [bp-76h]@6 __int16 v17; // [sp+23h] [bp-75h]@7 int v18; // [sp+25h] [bp-73h]@9 int v19; // [sp+29h] [bp-6Fh]@9 __int16 v20; // [sp+84h] [bp-14h]@6 char v21; // [sp+86h] [bp-12h]@6 unsigned int v22; // [sp+88h] [bp-10h]@1 int v23; // [sp+94h] [bp-4h]@1 int v24; // [sp+98h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v2 = (unsigned int)&v24 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; dword_750AB8[dword_750CB8++] = -1; v4 = (int (__thiscall *)(_DWORD, _DWORD, _DWORD))**((_DWORD **)v3 + 9121); v5 = *(_WORD *)a2 & 0x3FF; v23 = 0; v6 = v4((char *)v3 + 36484, v5, v2); v14 = v6; if ( *(_WORD *)(v6 + 8) == word_14D2118C ) { v7 = *(_DWORD *)((char *)v3 + 122); if ( v7 ) { if ( !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 107) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1807, 9); goto LABEL_12; } memcpy(&v15, (const void *)v6, 0x6Cu); v20 = *(_WORD *)(v6 + 108); v21 = *(_BYTE *)(v6 + 110); v16 = 1; v8 = sub_418B00((int)byte_85A2C0, v7); v9 = sub_639620(&unk_14D20404, (unsigned __int8 *)v8); if ( v9 == -1 ) v17 = -1; else v17 = v9; v10 = *(_DWORD *)((char *)v3 + 102); v18 = *(_DWORD *)v10; v19 = *(_DWORD *)(v10 + 4); sub_595A90(v3, v14, *(_DWORD *)(v14 + 112), (int)&v15, a2); v13 = 9; v12 = 1792; } else { v13 = 9; v12 = 1807; } (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, v12, v13); goto LABEL_12; } sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_silverwing_Setloc : wrong item", *(_WORD *)(v6 + 8)); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1795, 9); LABEL_12: --dword_750CB8; v23 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D2118C: using guessed type __int16 word_14D2118C; //----- (0059A000) -------------------------------------------------------- char __stdcall sub_59A000(void *a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemActionItem::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemActionItem::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_599A90(a1, a2, a3, 15); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemActionItem::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059A0B0) -------------------------------------------------------- char __stdcall sub_59A0B0(void *a1, __int16 a2, int a3) { char result; // al@2 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemCoin::uib_AfterCast"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemCoin::uib_AfterCast"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) { sub_598D50(a1, a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemCoin::uib_AfterCast"); result = 1; } else { (*(void (__stdcall **)(_DWORD))(v0 + 2332))(1793); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemCoin::uib_AfterCast"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059A1A0) -------------------------------------------------------- int __stdcall sub_59A1A0(void *a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Silverwing_LocSet"); dword_7508B8[dword_750CB8] = (int)"ServerMenuFuncter::smfm_Silverwing_LocSet"; dword_750AB8[dword_750CB8++] = -1; sub_599E30(a1, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ServerMenuFuncter::smfm_Silverwing_LocSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059A240) -------------------------------------------------------- int __thiscall sub_59A240(void *this, __int16 a2, int a3) { void *v3; // esi@1 int v4; // eax@3 int v5; // eax@3 int v6; // eax@4 int v7; // ST10_4@5 int v8; // eax@5 void *v9; // eax@5 void *v10; // eax@5 __int16 v12; // [sp+Ch] [bp-14Ch]@0 int v13; // [sp+10h] [bp-148h]@3 int v14; // [sp+78h] [bp-E0h]@3 int v15; // [sp+E0h] [bp-78h]@3 unsigned int v16; // [sp+148h] [bp-10h]@1 int v17; // [sp+154h] [bp-4h]@1 int v18; // [sp+158h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SilverWingMenu"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_SilverWingMenu"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; if ( sub_50D480((int)((char *)v3 + 84520)) && !*(_DWORD *)((char *)v3 + 84471) ) { v4 = *(_DWORD *)((char *)v3 + 102); *((_WORD *)v3 + 42250) = -1; *((_DWORD *)v3 + 21126) = 0; *((_DWORD *)v3 + 21130) = *(_DWORD *)v4; *((_DWORD *)v3 + 21131) = *(_DWORD *)(v4 + 4); LOWORD(v13) = (v12 & 0x3FF | 0x2400) ^ ((v12 & 0x3FF | 0x2400) ^ a2) & 0x3FF; LOWORD(v15) = (v12 & 0x3FF | 0x2400) ^ ((v12 & 0x3FF | 0x2400) ^ a2) & 0x3FF; LOWORD(v14) = (v12 & 0x3FF | 0x2400) ^ ((v12 & 0x3FF | 0x2400) ^ a2) & 0x3FF; v5 = sub_48C200(&unk_15090128, "SilverWingTitle"); sub_54CA20(v3, (const char *)v5); if ( *(_BYTE *)(a3 + 10) ) { v6 = sub_48C200(&unk_15090128, "SilverWingPortal"); sub_54CB10(v3, (int)sub_599D90, (const char *)v6, &v15); } v7 = sub_48C200(&unk_150A0980, "Cancel"); v8 = sub_48C200(&unk_15090128, "SilverWingLocSet"); v9 = sub_54CB10(v3, (int)sub_59A1A0, (const char *)v8, &v14); v10 = sub_54CB10(v9, (int)sub_599CE0, (const char *)v7, &v13); sub_54CC20(v10, 0, -1, 0, 1000); } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_SilverWingMenu"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0059A410) -------------------------------------------------------- char __stdcall sub_59A410(void *a1, __int16 a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemSilverWing::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemSilverWing::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; sub_59A240(a1, a2, a3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSilverWing::uib_DirectUse"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059A4C0) -------------------------------------------------------- void __stdcall sub_59A4C0(void *a1, int a2, int a3) { void *v3; // edi@1 int v4; // esi@4 unsigned __int16 v5; // dx@5 int v6; // eax@5 int v7; // esi@5 unsigned __int16 v8; // cx@6 int v9; // ebx@10 int v10; // esi@10 int v11; // eax@10 int v12; // eax@16 int v13; // esi@16 int v14; // eax@18 int v15; // [sp+Ch] [bp+8h]@10 int v16; // [sp+Ch] [bp+8h]@20 int v17; // [sp+10h] [bp+Ch]@10 v3 = a1; if ( a1 ) { if ( a2 ) { if ( a3 ) { v4 = sub_589E80((int)&unk_1325CFC8, *(_WORD *)(a2 + 8)); if ( v4 ) { v5 = sub_639500((int)&unk_1508B108, 0x3E8u); v6 = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 8); if ( v6 == v7 ) { LABEL_9: sub_6390B0(&unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : not found abstate enum", v6 + 32); } else { v8 = 0; while ( 1 ) { v8 += *(_WORD *)(v6 + 68); if ( v8 >= v5 ) break; v6 += 70; if ( v6 == v7 ) goto LABEL_9; } v9 = *(_DWORD *)(v6 + 64); v10 = v6 + 32; v15 = v6 + 32; v11 = sub_639670(&byte_878354, v6 + 32); v17 = v11; if ( v11 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : not found abstate enum", v10); } else { if ( v9 ) { if ( (unsigned int)v9 < 0x28 ) { v12 = sub_401310(&unk_877138, v11); v13 = v12; if ( v12 ) { v14 = *(_DWORD *)v12; if ( *(_DWORD *)v13 ) { v16 = v13 + 36 * v9 + 12; if ( *(_DWORD *)(v13 + 36 * v9 + 12) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v3 + 1592))( v3, v3, *(_DWORD *)(v14 + 34), v9, v13, dword_14D129E8, 0, -1, 0, 11, 0) == 1 ) { sub_401900(v3, *(_DWORD *)(*(_DWORD *)v13 + 34)); (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 1008))( v3, *(_DWORD *)(*(_DWORD *)v13 + 34), *(_DWORD *)(*(_DWORD *)v16 + 43), 1); sub_4055D0(v3, *(_DWORD *)(*(_DWORD *)v13 + 34), *(_DWORD *)(*(_DWORD *)v16 + 43), v9); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2460))(v3); } } else { sub_639150( &unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : not found subabstate data", v17, v9); } } else { sub_6390B0(&unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : not found abstate data index", v15); } } else { sub_6390B0(&unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : not found abstate data", v15); } } else { sub_639100(&unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : nStrength value", v9); } } else { sub_639100(&unk_86DDD8, (int)"UseItemByAbstate::uib_Effect : nStrength value 0", 0); } } } } } } } } // 14D129E8: using guessed type int dword_14D129E8; //----- (0059A6B0) -------------------------------------------------------- void *__stdcall sub_59A6B0(int a1) { signed int v1; // eax@1 void *result; // eax@2 v1 = sub_639620(&unk_13257C80, (unsigned __int8 *)a1); dword_13257798 = v1; if ( v1 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_UseSkillID : Not found", a1); result = 0; } else { if ( BYTE2(dword_13257798) ) { sub_6390B0(&unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_UseSkillID : Passive", a1); result = 0; } else { result = sub_447910((int)&unk_132577A0, v1); if ( !result ) { sub_6390B0(&unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_UseSkillID : Skill", a1); result = 0; } } } return result; } // 13257798: using guessed type int dword_13257798; //----- (0059A740) -------------------------------------------------------- unsigned int __thiscall sub_59A740(int this) { unsigned __int16 v1; // ax@1 int v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@3 int v5; // eax@4 unsigned int v6; // eax@6 signed __int16 v7; // cx@9 int v8; // eax@11 int v9; // edi@14 int v10; // ebx@15 int v11; // eax@17 int v12; // edi@23 int v13; // eax@36 unsigned int result; // eax@42 int v15; // ebx@44 signed int v16; // eax@46 signed int v17; // eax@53 int v18; // ebx@56 int v19; // eax@58 int v20; // [sp-4h] [bp-20h]@24 signed int v21; // [sp+Ch] [bp-10h]@42 unsigned int v22; // [sp+10h] [bp-Ch]@42 signed __int16 v23; // [sp+14h] [bp-8h]@47 unsigned int i; // [sp+18h] [bp-4h]@6 int v25; // [sp+18h] [bp-4h]@44 v1 = dword_14D20894; v2 = this; *(_WORD *)(this + 244) = dword_14D20894; v3 = unknown_libname_130(16 * v1 | -(v1 / 0x10000000u != 0)); *(_DWORD *)(v2 + 240) = v3; if ( v3 == 0 ) { sub_639100(&unk_86DDD8, (int)"UsedItemEffect::uie_Load : Memory leak", v3 != 0); loc_6391B0("UseEffect::UsedItemEffect::uie_Load"); } v4 = 0; if ( *(_WORD *)(v2 + 244) > 0u ) { v5 = 0; do { *(_DWORD *)(v5 + *(_DWORD *)(v2 + 240)) = v2 + 152; *(_DWORD *)(v5 + *(_DWORD *)(v2 + 240) + 4) = off_86AC94; *(_DWORD *)(v5 + *(_DWORD *)(v2 + 240) + 8) = 0; *(_BYTE *)(v5 + *(_DWORD *)(v2 + 240) + 12) = 0; ++v4; v5 += 16; } while ( v4 < *(_WORD *)(v2 + 244) ); } v6 = 0; for ( i = 0; ; v6 = i ) { if ( v6 < dword_14D20890 ) { if ( v6 < *(_DWORD *)(dword_14D20CD0 + 40) ) v8 = sub_626BC0((int)&unk_14D20C9C, v6); else v8 = (int)&unk_14D20CDC; v7 = *(_WORD *)v8; } else { v7 = -1; } v9 = (unsigned __int16)v7; if ( (unsigned __int16)v7 < (unsigned int)dword_14D20894 ) { v10 = dword_14D21184 + 40 * (unsigned __int16)v7; if ( v10 ) { if ( *(_DWORD *)v10 ) { v11 = **(_WORD **)v10; if ( (_WORD)v11 == v7 ) goto LABEL_20; sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v11 + 10000 * (unsigned __int16)v7); } } } v10 = 0; LABEL_20: if ( !v10 ) { sub_639100(&unk_86DDD8, (int)"UsedItemEffect::uie_Load : Invalid ItemIndex", v9); loc_6391B0("UseEffect::UsedItemEffect::uie_Load"); } switch ( *(_DWORD *)(*(_DWORD *)v10 + 102) ) { case 0xB: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86ACA0; goto LABEL_24; case 0xC: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86AC9C; v20 = (int)"UseStageRecallScroll"; goto LABEL_25; case 0xF: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86ACA4; v20 = (int)"UsePresentBox"; goto LABEL_25; case 9: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86ACBC; goto LABEL_24; case 0x1B: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86ACB8; goto LABEL_24; case 0x1C: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86AD34; goto LABEL_24; case 0x1D: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86AD38; LABEL_24: v20 = (int)"UseSkill"; goto LABEL_25; case 0x21: case 0x23: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = off_86AD08; goto LABEL_33; case 0x24: v12 = 2 * v9; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 4) = &off_86AD40; LABEL_33: if ( *(_BYTE *)(*(_DWORD *)v10 + 310) != 45 ) { v20 = *(_DWORD *)v10 + 310; LABEL_25: *(_DWORD *)(*(_DWORD *)(v2 + 240) + 8 * v12 + 8) = sub_59A6B0(v20); } break; default: v13 = *(_DWORD *)v10 + 310; if ( *(_BYTE *)v13 != 45 ) *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * v9 + 8) = sub_59A6B0(v13); break; } ++i; if ( i >= dword_14D20890 ) break; } *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)word_14D211B8 + 4) = off_86AD10; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)word_14D211B8 + 8) = sub_59A6B0((int)"UseSkill"); if ( word_14D211C0 == -1 ) { sub_639100( &unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_Load : cannot find InstantDivorce item", word_14D211C0 != -1); } else { *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)word_14D211C0 + 4) = off_86AD14; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)word_14D211C0 + 8) = sub_59A6B0((int)"UseSkill"); } *(_DWORD *)(v2 + 196) = 10; *(_DWORD *)(v2 + 190) = 10; *(_DWORD *)(v2 + 184) = 10; *(_DWORD *)(v2 + 234) = 792; sub_5947B0((void *)v2, "../9Data/Shine/ItemUseEffect.shn"); *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)word_14D211C8 + 4) = &unk_13258864; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)word_14D211C8 + 8) = sub_59A6B0((int)"UseSkill"); result = 0; v21 = *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40); v22 = 0; if ( v21 > 0 ) { while ( 1 ) { if ( result < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ) { v25 = sub_626BC0(v2, result); v15 = v25; } else { v15 = v2 + 64; v25 = v2 + 64; } v16 = sub_639620(&unk_14D20898, (unsigned __int8 *)v15); if ( v16 == -1 ) v23 = -1; else v23 = v16; if ( v23 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_Load : Invalid item", v15); loc_6391B0("UseEffect::UsedItemEffect::uie_Load"); } if ( *(_BYTE *)(v15 + 50) == 45 ) { *(_DWORD *)(v15 + 82) = 792; } else { v17 = sub_639620(&byte_878354, (unsigned __int8 *)(v15 + 50)); *(_DWORD *)(v15 + 82) = v17; if ( v17 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_Load : AbState wrong", v15 + 50); loc_6391B0("UseEffect::UsedItemEffect::uie_Load"); } } if ( (unsigned __int16)v23 >= (unsigned int)dword_14D20894 || (v18 = dword_14D21184 + 40 * (unsigned __int16)v23) == 0 || !*(_DWORD *)v18 ) goto LABEL_60; v19 = **(_WORD **)v18; if ( (_WORD)v19 != v23 ) break; LABEL_61: if ( !v18 ) { sub_639100(&unk_86DDD8, (int)"UseEffect::UsedItemEffect::uie_Load : Null Item", (unsigned __int16)v23); loc_6391B0("UseEffect::UsedItemEffect::uie_Load"); } if ( *(_DWORD *)(*(_DWORD *)v18 + 102) == 27 ) { *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)v23) = v25; } else { *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)v23) = v25; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)v23 + 4) = off_86ACAC; *(_DWORD *)(*(_DWORD *)(v2 + 240) + 16 * (unsigned __int16)v23 + 8) = sub_59A6B0(*(_DWORD *)v18 + 310); } result = v22 + 1; v22 = result; if ( (signed int)result >= v21 ) return result; } sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v19 + 10000 * (unsigned __int16)v23); LABEL_60: v18 = 0; goto LABEL_61; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86AC94: using guessed type int (__thiscall *off_86AC94[12])(void *, char); // 86AC9C: using guessed type int (__thiscall *off_86AC9C[10])(void *, char); // 86ACA0: using guessed type int (__thiscall *off_86ACA0[9])(void *, char); // 86ACA4: using guessed type int (__thiscall *off_86ACA4[8])(void *, char); // 86ACAC: using guessed type int (__thiscall *off_86ACAC[6])(void *, char); // 86ACB8: using guessed type int (__thiscall *off_86ACB8[3])(void *, char); // 86ACBC: using guessed type int (__thiscall *off_86ACBC[2])(void *, char); // 86AD08: using guessed type int (__thiscall *off_86AD08[7])(void *, char); // 86AD10: using guessed type int (__thiscall *off_86AD10[5])(void *, char); // 86AD14: using guessed type int (__thiscall *off_86AD14[4])(void *, char); // 86AD34: using guessed type int (__thiscall *off_86AD34[4])(void *, char); // 86AD38: using guessed type int (__thiscall *off_86AD38[3])(void *, char); // 86AD40: using guessed type int (__thiscall **off_86AD40)(void *, char); // 14D20890: using guessed type int dword_14D20890; // 14D20894: using guessed type int dword_14D20894; // 14D20CD0: using guessed type int dword_14D20CD0; // 14D21184: using guessed type int dword_14D21184; // 14D211B8: using guessed type __int16 word_14D211B8; // 14D211C0: using guessed type __int16 word_14D211C0; // 14D211C8: using guessed type __int16 word_14D211C8; //----- (0059ACC0) -------------------------------------------------------- signed __int16 __stdcall sub_59ACC0(int a1, int a2) { unsigned int v2; // eax@1 int v3; // edi@2 int v4; // edx@4 int v5; // esi@6 signed int v7; // eax@11 int v8; // ebx@11 int v9; // esi@17 signed __int16 v10; // si@21 void *v11; // ebx@22 void *v12; // edi@23 int v13; // esi@23 int v14; // eax@25 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemSkillScroll::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemSkillScroll::uib_CanUseItem"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a2 + 8); if ( v2 >= dword_14D20894 || (v3 = dword_14D21184 + 40 * v2) == 0 || !*(_DWORD *)v3 ) goto LABEL_6; v4 = **(_WORD **)v3; if ( (_WORD)v4 != *(_WORD *)(a2 + 8) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * v2 + v4); LABEL_6: v5 = 0; goto LABEL_7; } v5 = dword_14D21184 + 40 * v2; LABEL_7: if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_uie_skillscroll : Invalid item", *(_WORD *)(a2 + 8)); LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSkillScroll::uib_CanUseItem"); return 1794; } v7 = sub_639620(&unk_13257C80, (unsigned __int8 *)(*(_DWORD *)v5 + 2)); dword_13257798 = v7; v8 = *(_DWORD *)v5 + 2; if ( v7 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ShinePlayer::sp_uie_skillscroll : Cannot found matched skill", *(_DWORD *)v5 + 2); goto LABEL_9; } if ( BYTE2(dword_13257798) ) { if ( (unsigned __int8)(1 << (unsigned __int16)v7 % 8) & *(_BYTE *)((unsigned __int16)v7 / 8 + *(_DWORD *)(a1 + 84424)) ) { LABEL_15: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSkillScroll::uib_CanUseItem"); return 1803; } if ( (unsigned __int16)v7 >= dword_132581D4 ) v9 = dword_13258088; else v9 = *(_DWORD *)(dword_132581CC + 4 * (unsigned __int16)v7); if ( !v9 ) { sub_6390B0(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_uie_SkillScroll_CanUse : Invalid Passive", v8); goto LABEL_9; } v10 = sub_4451A0((void *)(a1 + 84424), a1, (unsigned __int8 *)(v9 + 70)) != 0 ? 1792 : 1804; } else { v11 = (void *)(a1 + 84388); if ( sub_445FC0((void *)(a1 + 84388), v7) ) goto LABEL_15; v12 = sub_447910((int)&unk_132577A0, dword_13257798); v13 = *(_DWORD *)v5 + 2; if ( v12 == 0 ) { sub_6390B0(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_uie_SkillScroll_CanUse : Invalid Activ", v13); goto LABEL_9; } v14 = (int)sub_4444E0((int)&dword_D0205D8, dword_13257798); if ( v14 ) v10 = sub_469D30(v11, a1, (unsigned __int16)dword_13257798, v14); else v10 = sub_446AA0(v11, a1, (unsigned __int8 *)(*((_DWORD *)v12 + 1) + 114)) != 0 ? 1792 : 1804; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemSkillScroll::uib_CanUseItem"); return v10; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D0205D8: using guessed type int dword_D0205D8; // 13257798: using guessed type int dword_13257798; // 13258088: using guessed type int dword_13258088; // 132581CC: using guessed type int dword_132581CC; // 132581D4: using guessed type int dword_132581D4; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0059AFC0) -------------------------------------------------------- void *__thiscall sub_59AFC0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = *((_DWORD *)sub_418F80(&unk_DA120E0) + 9); *((_DWORD *)v1 + 1) = *((_DWORD *)sub_418F80(&unk_DA120E0) + 10); *((_DWORD *)v1 + 2) = *((_DWORD *)sub_418F80(&unk_DA120E0) + 11); *((_DWORD *)v1 + 3) = *((_DWORD *)sub_418F80(&unk_DA120E0) + 12); *((_DWORD *)v1 + 4) = *((_DWORD *)sub_418F80(&unk_DA120E0) + 13); return v1; } //----- (0059B020) -------------------------------------------------------- char __thiscall sub_59B020(void *this, __time32_t Time, int a3) { __time32_t v3; // ebx@1 void *v4; // esi@1 char v6; // al@3 int v7; // ecx@3 __int32 v8; // eax@8 int v9; // eax@8 void *v10; // eax@10 int v11; // eax@10 unsigned int v12; // eax@11 int v13; // edi@11 __int32 v14; // eax@13 int v15; // esi@20 int v16; // eax@22 int v17; // esi@22 int v18; // eax@24 v3 = Time; v4 = this; if ( !Time ) return 0; _time32(&Time); v6 = (*(int (__thiscall **)(__time32_t, signed int))(*(_DWORD *)v3 + 996))(v3, 345); v7 = *(_DWORD *)a3; if ( v6 ) { if ( Time > v7 ) { if ( Time - v7 >= *(_DWORD *)v4 ) { v8 = (Time - v7 - *(_DWORD *)v4) / *((_DWORD *)v4 + 2); a3 = 1000 * *((_DWORD *)v4 + 4); v9 = 1000 * *((_DWORD *)v4 + 3) * (v8 + 1); if ( a3 >= (unsigned int)v9 ) a3 = v9; } else { a3 = 0; } } else { a3 = 0; } v10 = (void *)(*(int (__thiscall **)(__time32_t))(*(_DWORD *)v3 + 1324))(v3); v11 = sub_409A00(v10, 345); if ( !v11 ) return 0; v12 = sub_4088C0((void *)v11); v13 = a3 + v12; } else { if ( Time > v7 ) { if ( Time - v7 >= *(_DWORD *)v4 ) { v14 = 1000 * (*((_DWORD *)v4 + 1) + *((_DWORD *)v4 + 3) * (Time - v7 - *(_DWORD *)v4) / *((_DWORD *)v4 + 2)); if ( 1000 * *((_DWORD *)v4 + 4) < (unsigned int)v14 ) v14 = 1000 * *((_DWORD *)v4 + 4); } else { v14 = 0; } } else { v14 = 0; } v13 = v14; } if ( v13 ) { v15 = 1000 * *((_DWORD *)v4 + 4); if ( v15 < (unsigned int)v13 ) v13 = v15; v16 = sub_401310(&unk_877138, 345); v17 = v16; if ( v16 && (unsigned __int8)(*(int (__thiscall **)(__time32_t, __time32_t, _DWORD, signed int, int, int, _DWORD, signed int, int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1592))( v3, v3, *(_DWORD *)(*(_DWORD *)v16 + 34), 1, v16, dword_14D129E8, 0, -1, v13, 0, 0) ) { sub_401900((void *)v3, *(_DWORD *)(*(_DWORD *)v17 + 34)); v18 = *(_DWORD *)(v17 + 48); if ( v18 ) { (*(void (__thiscall **)(__time32_t, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 1008))( v3, *(_DWORD *)(*(_DWORD *)v17 + 34), *(_DWORD *)(v18 + 43), 1); sub_4055D0((void *)v3, *(_DWORD *)(*(_DWORD *)v17 + 34), *(_DWORD *)(*(_DWORD *)(v17 + 48) + 43), 1); } } } return 1; } // 14D129E8: using guessed type int dword_14D129E8; //----- (0059B1B0) -------------------------------------------------------- int __thiscall sub_59B1B0(void *this, unsigned __int16 a2, int a3) { int v3; // ebx@1 int result; // eax@2 signed int v5; // esi@3 unsigned __int16 *v6; // edi@3 int v7; // [sp+4h] [bp-4h]@1 v3 = a3; v7 = (int)this; if ( a3 ) { v5 = 0; v6 = (unsigned __int16 *)(a3 + 17); while ( sub_63D920((int)&unk_14D159B0, *v6, a2) < 0 ) { ++v5; v6 += 3; if ( v5 >= 3 ) return 0; } result = sub_6327E0( v7, *(_WORD *)(v3 + 6 * v5 + 17), (unsigned int)&unk_FFFFFFF & *(_DWORD *)(v3 + 6 * v5 + 19), (int)&a3); } else { result = 0; } return result; } //----- (0059B230) -------------------------------------------------------- int __thiscall sub_59B230(int this, unsigned __int16 a2, int a3, int a4) { int result; // eax@1 int v5; // edx@2 result = 0; if ( a3 ) { v5 = a3 + 17; while ( *(_WORD *)v5 != a2 ) { ++result; v5 += 6; if ( result >= 3 ) return 0; } result = sub_6327E0(this, a2, (unsigned int)&unk_FFFFFFF & *(_DWORD *)(a3 + 6 * result + 19), a4); } return result; } //----- (0059B280) -------------------------------------------------------- int __thiscall sub_59B280(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // edi@1 int v5; // eax@1 int v6; // esi@2 int v7; // ecx@4 int result; // eax@5 int v9; // esi@7 int v10; // eax@8 int v11; // [sp-4h] [bp-24h]@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)a2 = 8204; v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))((char *)v2 + 32816, 12); v4 = v3; v5 = *(_WORD *)(v3 + 8); if ( (_WORD)v5 == -1 ) { *(_WORD *)a2 = *(_WORD *)a2 & 0xFC0A | 0xA; v9 = (**((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8204))((char *)v2 + 32816, 10); if ( *(_WORD *)(v9 + 8) == -1 ) goto LABEL_4; v10 = (*(int (**)(void))(**(_DWORD **)(v9 + 112) + 40))(); --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"; v7 = (int)&unk_D020420; if ( v10 != 5 ) goto LABEL_5; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"); result = v9; } else { v6 = v5; if ( (*(int (**)(void))(**(_DWORD **)(v4 + 112) + 40))() != 5 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_ply_EquipWeapon : not weapon in righthand", v6); LABEL_4: --dword_750CB8; v11 = (int)"ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"; v7 = (int)&unk_D020420; LABEL_5: sub_467660(v7, v11); return 0; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"); result = v4; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059B430) -------------------------------------------------------- int __stdcall sub_59B430(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@3 int v4; // eax@4 int v5; // ST04_4@5 __time32_t v6; // eax@5 __time32_t v7; // eax@5 int v8; // eax@6 void *v9; // eax@7 int v10; // eax@9 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_LICENSE_CLR_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_WT_LICENSE_CLR_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 24) == 2529 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_WT_LICENSE_CLR_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); } v9 = off_849C18; *(_WORD *)off_849C18 = 23554; *((_WORD *)v9 + 1) = *(_WORD *)(a1 + 10); *((_WORD *)v9 + 2) = *(_WORD *)(a1 + 12); *(_WORD *)((char *)v9 + 7) = *(_WORD *)(a1 + 24); *((_BYTE *)v9 + 6) = 0; if ( sub_4C81E0(&off_849C18, 9) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_WT_LICENSE_SET_ACK : Packet Too Long", 9); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_LICENSE_CLR_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059B5C0) -------------------------------------------------------- int __stdcall sub_59B5C0(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@3 int v4; // eax@4 int v5; // ST04_4@5 __time32_t v6; // eax@5 __time32_t v7; // eax@5 void *v8; // eax@6 int v9; // eax@7 void *v10; // eax@8 int v11; // eax@10 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_LICENSE_SET_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_WT_LICENSE_SET_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 8) == 2489 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 10), 0) ) { v5 = *(_WORD *)(a1 + 10); v6 = sub_418EA0((__time32_t)byte_14D15210, (int)"GameDBSession::gds_NC_WT_LICENSE_SET_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } v8 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2056))(v2); sub_5BB110(v8, 7); } else { v9 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 40))(v9, *(_WORD *)(a1 + 10)); } v10 = off_849C18; *(_WORD *)off_849C18 = 23554; *((_WORD *)v10 + 1) = *(_WORD *)(a1 + 12); *((_WORD *)v10 + 2) = *(_WORD *)(a1 + 14); *(_WORD *)((char *)v10 + 7) = *(_WORD *)(a1 + 8); if ( sub_4C81E0(&off_849C18, 9) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_WT_LICENSE_SET_ACK : Packet Too Long", 9); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_LICENSE_SET_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059B770) -------------------------------------------------------- int __stdcall sub_59B770(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059B7C0) -------------------------------------------------------- int __stdcall sub_59B7C0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_TITLE_SET_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_WT_TITLE_SET_ACK"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_WT_TITLE_SET_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059B810) -------------------------------------------------------- int __thiscall sub_59B810(void *this, int a2, __int16 a3, int a4) { void *v4; // edi@1 void *v5; // esi@1 int v6; // edx@1 int v7; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_saveweapontitle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_saveweapontitle"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 23561; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = *(_DWORD *)a2; v6 = *(_DWORD *)(a2 + 4); *(_DWORD *)((char *)v5 + 18) = a4; *((_DWORD *)v5 + 3) = v6; *((_WORD *)v5 + 8) = a3; if ( sub_4C81E0(&off_849C18, 22) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_weapontitle To sock2gameDB : Packet Too Long", 22); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_saveweapontitle"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059B930) -------------------------------------------------------- int __thiscall sub_59B930(void *this, int a2, int a3, int a4) { __int16 v4; // dx@1 signed int v5; // eax@1 __int16 *v6; // ecx@1 void *v7; // eax@5 int v8; // eax@7 void *v9; // ebx@8 int v10; // eax@8 int v11; // eax@8 int v12; // eax@9 int v13; // esi@11 int v14; // eax@13 void *v15; // ebx@15 int v16; // esi@15 unsigned int v18; // [sp-4h] [bp-120h]@1 int v19; // [sp+18h] [bp-104h]@8 int v20; // [sp+1Ch] [bp-100h]@8 void *v21; // [sp+28h] [bp-F4h]@1 char v22; // [sp+2Ch] [bp-F0h]@8 char v23; // [sp+34h] [bp-E8h]@10 __int16 v24; // [sp+98h] [bp-84h]@8 char v25; // [sp+9Ah] [bp-82h]@8 int v26; // [sp+9Ch] [bp-80h]@1 int v27; // [sp+A0h] [bp-7Ch]@8 __int16 v28; // [sp+ADh] [bp-6Fh]@1 char v29[93]; // [sp+AFh] [bp-6Dh]@1 unsigned int v30; // [sp+10Ch] [bp-10h]@1 int v31; // [sp+118h] [bp-4h]@1 int v32; // [sp+11Ch] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v18 = (unsigned int)&v32 ^ __security_cookie; v21 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)(a2 + 4); memcpy(&v26, (const void *)a3, 0x6Cu); *(_WORD *)&v29[89] = *(_WORD *)(a3 + 108); v5 = 0; v31 = 0; v29[91] = *(_BYTE *)(a3 + 110); v6 = &v28; do { if ( *v6 == v4 ) break; ++v5; v6 += 3; } while ( v5 < 3 ); if ( v5 == 3 ) { v7 = off_849C18; *(_WORD *)off_849C18 = 23554; *((_WORD *)v7 + 1) = *(_WORD *)a2; *((_WORD *)v7 + 2) = *(_WORD *)(a2 + 2); *((_BYTE *)v7 + 6) = 0; *(_WORD *)((char *)v7 + 7) = 2496; if ( sub_4C81E0(&off_849C18, 9) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 764))(v21); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v21, &off_849C18); --dword_750CB8; } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::sp_NC_WT_LICENSE_REQ : Packet Too Long", 9); --dword_750CB8; } } else { v9 = off_849C18; v10 = 6 * v5; *(__int16 *)((char *)&v28 + v10) = -1; *(_DWORD *)&v29[v10] = 0; *(_WORD *)v9 = 23559; *((_WORD *)v9 + 1) = *((_WORD *)v21 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *, unsigned int))(*(_DWORD *)v21 + 836))(v21, v18); *((_WORD *)v9 + 4) = *((_WORD *)v21 + 29346); *(_DWORD *)((char *)v9 + 14) = v26; *(_DWORD *)((char *)v9 + 18) = v27; *((_WORD *)v9 + 11) = *(_WORD *)(a2 + 4); *((_WORD *)v9 + 5) = *(_WORD *)a2; *((_WORD *)v9 + 6) = *(_WORD *)(a2 + 2); v20 = *(_DWORD *)(a4 + 112); v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(a4 + 112) + 28))(a4 + 8); memcpy(&v22, (const void *)a4, 0x6Cu); v24 = *(_WORD *)(a4 + 108); v25 = *(_BYTE *)(a4 + 110); *((_DWORD *)v9 + 6) = *(_DWORD *)a4; *((_DWORD *)v9 + 7) = *(_DWORD *)(a4 + 4); v19 = v11; *((_WORD *)v9 + 16) = *(_WORD *)(a4 + 8); if ( v11 == 1 ) { *((_BYTE *)v9 + 34) = 1; v12 = 0; *(_WORD *)((char *)v9 + 35) = 0; } else { *((_BYTE *)v9 + 34) = 0; (*(void (__stdcall **)(char *, int))(*(_DWORD *)v20 + 32))(&v23, v11 - 1); v12 = (*(int (__stdcall **)(char *, char *))(*(_DWORD *)v20 + 4))(&v23, (char *)v9 + 37) - (_DWORD)((char *)v9 + 37); *(_WORD *)((char *)v9 + 35) = 35; } v13 = v12 + 37; if ( sub_4C81E0(&off_849C18, v12 + 37) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_WeaponLicenseClear : Packet Too Long", v13); } if ( v19 == 1 ) { v15 = v21; v16 = (int)((char *)v21 + 58688); (*(void (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v21 + 14672) + 48))( (char *)v21 + 58688, *((_WORD *)v21 + 29346), a4, a2, a2); } else { v16 = (int)((char *)v21 + 58688); (*(void (__thiscall **)(char *, _DWORD, int, char *, int, int))(*((_DWORD *)v21 + 14672) + 64))( (char *)v21 + 58688, *((_WORD *)v21 + 29346), a4, &v22, a2, a2); v15 = v21; } (*(void (__thiscall **)(int, _DWORD, int, int *, int))(*(_DWORD *)v16 + 64))( v16, *((_WORD *)v15 + 29346), a3, &v26, a2 + 2); ++*(_WORD *)(v16 + 4); --dword_750CB8; } v31 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 59B930: using guessed type char var_6D[93]; //----- (0059BCA0) -------------------------------------------------------- signed int __thiscall sub_59BCA0(void *this, unsigned __int16 *a2) { void *v2; // esi@1 int (__thiscall *v3)(_DWORD, _DWORD); // edx@1 int v4; // edi@1 unsigned __int16 *v5; // ebx@3 int v6; // eax@3 int v8; // eax@7 signed int v9; // esi@9 unsigned __int16 *v10; // edi@9 int v11; // edi@13 unsigned __int16 v12; // ax@13 unsigned int v13; // esi@13 signed int v14; // eax@13 int v15; // esi@13 signed int v16; // ecx@13 void *v17; // esi@16 int v18; // eax@21 int v19; // [sp-4h] [bp-34h]@2 signed int v20; // [sp+14h] [bp-1Ch]@13 void *v21; // [sp+18h] [bp-18h]@1 int v22; // [sp+1Ch] [bp-14h]@1 char v23; // [sp+20h] [bp-10h]@1 int v24; // [sp+2Ch] [bp-4h]@1 int v25; // [sp+38h] [bp+8h]@7 signed int v26; // [sp+38h] [bp+8h]@13 v2 = this; v21 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_weapontitle"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_weapontitle"; dword_750AB8[dword_750CB8++] = -1; v3 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1964); v24 = 0; v4 = v3(v2, &v23); v22 = v4; if ( !v4 ) { v19 = (int)"ShineObjectClass::ShinePlayer::so_weapontitle"; LABEL_6: --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, v19); return 0; } v5 = a2; v6 = sub_418D40((int)&unk_14D159B0, *a2); if ( !v6 ) { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_weapontitle : Invalid mob", *a2); LABEL_5: v19 = (int)"ShineObjectClass::ShinePlayer::so_weapontitle"; goto LABEL_6; } v25 = *(_DWORD *)(*(_DWORD *)v6 + 66); v8 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); if ( v25 < (unsigned __int8)v8 - 5 || v25 > v8 + 20 ) goto LABEL_5; v9 = 0; v10 = (unsigned __int16 *)(v4 + 17); while ( sub_63D920((int)&unk_14D159B0, *v10, *v5) < 0 ) { ++v9; v10 += 3; if ( v9 >= 3 ) goto LABEL_5; } v11 = v22 + 6 * v9; v12 = *(_WORD *)(v11 + 17); *v5 = v12; v13 = (unsigned int)&unk_FFFFFFF & *(_DWORD *)(v11 + 19); v14 = sub_632790((int)dword_1325CEF0, v12, (unsigned int)&unk_FFFFFFF & *(_DWORD *)(v11 + 19)); v15 = v13 + 1; *(_DWORD *)(v11 + 19) ^= (unsigned int)&unk_FFFFFFF & (v15 ^ *(_DWORD *)(v11 + 19)); v26 = v14; v16 = sub_632790((int)dword_1325CEF0, *v5, v15); v20 = v16; if ( !(v15 % 0xAu) || v26 != v16 ) { sub_59B810(v21, v22, *v5, v15); if ( v26 != v20 ) { v17 = off_849C18; *(_WORD *)off_849C18 = 23555; if ( *(_WORD *)((*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v21 + 8204))( (char *)v21 + 32816, 12) + 8) == -1 ) *((_WORD *)v17 + 1) = 8202; else *((_WORD *)v17 + 1) = 8204; *((_BYTE *)v17 + 4) = v20; if ( sub_4C81E0(&off_849C18, 5) ) { v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 764))(v21); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v18 + 12))(v18, v21, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_weapontitle To ShinePlayer : Packet Too Long", 5); } } } --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_weapontitle"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059BF20) -------------------------------------------------------- int __thiscall sub_59BF20(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 __int16 v5; // ax@5 int v6; // esi@7 int v7; // eax@11 int v8; // eax@14 int v9; // edi@14 unsigned __int16 v10; // ax@15 int v11; // eax@18 unsigned __int16 v12; // ax@20 int v13; // eax@21 int v14; // edx@21 int v15; // esi@21 int v16; // esi@21 int v17; // ST38_4@21 int v18; // eax@21 int v19; // eax@21 int v20; // eax@22 void *v21; // esi@24 int v22; // eax@24 int v23; // edx@24 int v24; // eax@26 void *v25; // eax@31 int v26; // eax@33 int v28; // [sp+10h] [bp-94h]@20 int v29; // [sp+14h] [bp-90h]@14 int v30; // [sp+18h] [bp-8Ch]@1 int v31; // [sp+1Ch] [bp-88h]@7 signed __int16 v32; // [sp+20h] [bp-84h]@4 char v33; // [sp+24h] [bp-80h]@21 __int16 v34; // [sp+90h] [bp-14h]@21 char v35; // [sp+92h] [bp-12h]@21 unsigned int v36; // [sp+94h] [bp-10h]@1 int v37; // [sp+A0h] [bp-4h]@1 int v38; // [sp+A4h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"; dword_750AB8[dword_750CB8++] = -1; v37 = 0; v30 = a2 + 2; if ( !(dword_13258964 & 1) ) { dword_13258964 |= 1u; word_13258960 = 70; atexit(nullsub_174); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258960) ) { v32 = 2495; goto LABEL_31; } v5 = *(_WORD *)(a2 + 4); v32 = 2494; if ( (unsigned int)*(_WORD *)(a2 + 4) >> 10 == 8 ) { v31 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8204))( (char *)v4 + 32816, v5 & 0x3FF); v6 = v31; } else { if ( (unsigned int)*(_WORD *)(a2 + 4) >> 10 != 9 ) goto LABEL_31; v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, v5 & 0x3FF); v31 = v6; } if ( !v6 || *(_WORD *)(v6 + 8) == -1 || (v7 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v6 + 8))) == 0 || *(_DWORD *)(*(_DWORD *)v7 + 102) != 5 || (v32 = 2495, (*(_WORD *)(a2 + 2) & 0xFC00) != 9216) || (v8 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_WORD *)(a2 + 2) & 0x3FF), v9 = v8, (v29 = v8) == 0) || (v10 = *(_WORD *)(v8 + 8), *(_WORD *)(v9 + 8) == -1) ) goto LABEL_31; if ( v10 == word_14D21198 ) { sub_59B930(v4, v30, v6, v9); LABEL_34: --dword_750CB8; goto LABEL_35; } v11 = sub_418CB0((int)&dword_14D20890, v10); if ( !v11 || *(_DWORD *)(*(_DWORD *)v11 + 102) != 16 || (v12 = (*(int (__stdcall **)(_UNKNOWN *, int *, int))(**(_DWORD **)(v9 + 112) + 88))( &unk_14D159B0, &dword_14D20890, v9), v28 = v12, v12 == -1) ) { LABEL_31: v25 = off_849C18; *(_WORD *)off_849C18 = 23554; *((_WORD *)v25 + 1) = *(_WORD *)v30; *((_WORD *)v25 + 2) = *(_WORD *)(a2 + 4); *(_WORD *)((char *)v25 + 7) = v32; if ( sub_4C81E0(&off_849C18, 9) ) { v26 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v26 + 12))(v26, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::sp_NC_WT_LICENSE_REQ : Packet Too Long", 9); } goto LABEL_34; } v13 = *(_DWORD *)(v6 + 112); v14 = *(_DWORD *)v4; memcpy(&v33, (const void *)v6, 0x6Cu); v15 = v6 + 108; v34 = *(_WORD *)v15; v35 = *(_BYTE *)(v15 + 2); v16 = *(_DWORD *)v13; v17 = v13; v18 = (*(int (__thiscall **)(void *))(v14 + 1388))(v4); v19 = (*(int (__thiscall **)(int, char *, int, int))(v16 + 72))(v17, &v33, v28, v18) - 1; if ( !v19 ) { v32 = 2491; goto LABEL_31; } v20 = v19 - 1; if ( !v20 ) { v32 = 2492; goto LABEL_31; } if ( v20 == 1 ) { v32 = 2493; goto LABEL_31; } (*(void (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v4 + 14672) + 48))( (char *)v4 + 58688, *((_WORD *)v4 + 29346), v29, v30, v30); (*(void (__thiscall **)(char *, _DWORD, int, char *, int, int))(*((_DWORD *)v4 + 14672) + 64))( (char *)v4 + 58688, *((_WORD *)v4 + 29346), v31, &v33, a2 + 4, a2 + 4); v21 = off_849C18; *(_WORD *)off_849C18 = 23557; *((_WORD *)v21 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v21 + 4) = *((_WORD *)v4 + 29346); *(_DWORD *)((char *)v21 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1388))(v4); sub_4836B0((int)((char *)v21 + 14), v22); *(_DWORD *)((char *)v21 + 42) = *(_DWORD *)v29; v23 = *(_DWORD *)(v29 + 4); *((_WORD *)v21 + 25) = v28; *(_DWORD *)((char *)v21 + 46) = v23; *(_DWORD *)((char *)v21 + 34) = *(_DWORD *)v31; *(_DWORD *)((char *)v21 + 38) = *(_DWORD *)(v31 + 4); *((_WORD *)v21 + 26) = *(_WORD *)v30; *((_WORD *)v21 + 27) = *(_WORD *)(a2 + 4); *((_WORD *)v21 + 28) = *(_WORD *)(v31 + 8); *((_WORD *)v21 + 29) = *(_WORD *)(v29 + 8); if ( sub_4C81E0(&off_849C18, 60) ) { v24 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v24); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_WT_LICENSE_REQ : Packet Too Long", 60); } ++*((_WORD *)v4 + 29346); --dword_750CB8; LABEL_35: v37 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13258960: using guessed type __int16 word_13258960; // 13258964: using guessed type int dword_13258964; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D21198: using guessed type __int16 word_14D21198; //----- (0059C3C0) -------------------------------------------------------- int __thiscall sub_59C3C0(void *this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@5 unsigned int v5; // eax@9 int v6; // ecx@9 void *v7; // esi@13 int v8; // eax@15 signed int v10; // [sp+28h] [bp+8h]@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ItemInventoryCell::iic_WeaponTitleSave"); dword_7508B8[dword_750CB8] = (int)"ItemInventoryCell::iic_WeaponTitleSave"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( a2 ) { if ( (*(int (**)(void))(**(_DWORD **)(v2 + 112) + 40))() == 5 ) { v4 = v2 + 17; v10 = 3; do { if ( *(_WORD *)v4 != -1 ) sub_59B810((void *)v3, v2, *(_WORD *)v4, (unsigned int)&unk_FFFFFFF & *(_DWORD *)(v4 + 2)); v4 += 6; --v10; } while ( v10 ); v5 = 0; v6 = v2 + 58; while ( *(_WORD *)v6 == -1 ) { ++v5; v6 += 3; if ( v5 >= 3 ) goto LABEL_16; } v7 = off_849C18; *(_WORD *)off_849C18 = 13468; *((_WORD *)v7 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v7 + 2) = *(_DWORD *)v2; *((_DWORD *)v7 + 3) = *(_DWORD *)(v2 + 4); *(_WORD *)((char *)v7 + 17) = *(_WORD *)(v2 + 58); *((_BYTE *)v7 + 19) = *(_BYTE *)(v2 + 60); *((_WORD *)v7 + 10) = *(_WORD *)(v2 + 61); *((_BYTE *)v7 + 22) = *(_BYTE *)(v2 + 63); *(_WORD *)((char *)v7 + 23) = *(_WORD *)(v2 + 64); *((_BYTE *)v7 + 25) = *(_BYTE *)(v2 + 66); if ( sub_4C81E0(&off_849C18, 26) ) { v8 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::so_weapontitle To sock2gameDB : Packet Too Long", 26); } } } else { sub_639100(&unk_86DDD8, (int)"ItemInventoryCell::iic_WeaponTitleSave Null Pointer : sp", 0); } LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ItemInventoryCell::iic_WeaponTitleSave"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059C570) -------------------------------------------------------- bool __thiscall sub_59C570(void *this, unsigned int *a2) { unsigned int v2; // edx@1 unsigned 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 = *a2; v3 = *(_DWORD *)this; v4 = (unsigned __int8)*a2; v5 = (unsigned __int8)*(_DWORD *)this; return v5 < v4 || v5 <= v4 && ((v7 = (v2 >> 8) & 0x1F, v8 = (v3 >> 8) & 0x1F, v8 < (unsigned int)v7) || v8 <= (unsigned int)v7 && ((v9 = (v2 >> 13) & 0x3F, v10 = (v3 >> 13) & 0x3F, v10 < (unsigned int)v9) || v10 <= (unsigned int)v9 && ((v11 = (v2 >> 19) & 0x3F, v12 = (v3 >> 19) & 0x3F, v12 < (unsigned int)v11) || v12 <= (unsigned int)v11 && v3 >> 25 < v2 >> 25))); } //----- (0059C5F0) -------------------------------------------------------- void *__thiscall sub_59C5F0(void *this, unsigned int a2) { void *v2; // esi@1 unsigned int v3; // ecx@1 unsigned int v4; // edx@1 int v5; // eax@1 unsigned int v6; // ecx@1 __int64 v7; // qax@1 struct tm *v8; // eax@1 int v9; // edx@1 int v10; // edx@1 unsigned int v11; // ecx@1 __time64_t Time; // [sp+Ch] [bp-30h]@1 int v14; // [sp+14h] [bp-28h]@1 unsigned int v15; // [sp+18h] [bp-24h]@1 unsigned int v16; // [sp+1Ch] [bp-20h]@1 unsigned int v17; // [sp+20h] [bp-1Ch]@1 int v18; // [sp+24h] [bp-18h]@1 int v19; // [sp+28h] [bp-14h]@1 int v20; // [sp+34h] [bp-8h]@1 unsigned int v21; // [sp+38h] [bp-4h]@1 int v22; // [sp+3Ch] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v2 = this; v3 = *(_DWORD *)this; v4 = *(_DWORD *)v2; v15 = v3 >> 25; v5 = ((*(_DWORD *)v2 >> 8) & 0x1F) - 1; v16 = (v3 >> 19) & 0x3F; v6 = *(_DWORD *)v2; v18 = v5; v17 = (v4 >> 13) & 0x3F; v19 = (unsigned __int8)v6 + 100; v14 = 0; v20 = -1; LODWORD(v7) = _LN34_0(&v14); Time = (signed int)(60 * ((a2 >> 24) + 60 * ((unsigned __int8)(a2 >> 16) + 24 * (unsigned __int16)a2))) + v7; v8 = _localtime64(&Time); *(_BYTE *)v2 = LOBYTE(v8->tm_year) - 100; *(_DWORD *)v2 ^= (*(_DWORD *)v2 ^ ((v8->tm_mon + 1) << 8)) & 0x1F00; v9 = *(_DWORD *)v2 ^ (v8->tm_mday << 13); v10 = *(_DWORD *)v2 ^ v9 & 0x7E000; *(_DWORD *)v2 = v10; v11 = v10 ^ (unsigned int)&unk_1F80000 & (v10 ^ (v8->tm_hour << 19)); *(_DWORD *)v2 = v11; *(_DWORD *)v2 = (unsigned int)&unk_1FFFFFF & v11 | (v8->tm_min << 25); return v2; } // 657409: using guessed type _DWORD __cdecl $LN34_0(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0059C700) -------------------------------------------------------- char *__thiscall sub_59C700(void *this) { return (char *)this + 336; } //----- (0059C710) -------------------------------------------------------- FILE *__cdecl sub_59C710(int a1, __int16 a2, __int16 a3) { void *v3; // eax@1 FILE *result; // eax@2 int v5; // eax@3 v3 = off_849C18; *(_WORD *)off_849C18 = 8274; *((_WORD *)v3 + 2) = a3; *((_WORD *)v3 + 1) = a2; *(_DWORD *)((char *)v3 + 6) = 0; *(_DWORD *)((char *)v3 + 10) = 0; *(_DWORD *)((char *)v3 + 14) = 0; *(_DWORD *)((char *)v3 + 18) = 0; *(_DWORD *)((char *)v3 + 22) = 0; *(_DWORD *)((char *)v3 + 26) = 0; *(_DWORD *)((char *)v3 + 30) = 0; *(_DWORD *)((char *)v3 + 34) = 0; *(_DWORD *)((char *)v3 + 38) = 0; *((_BYTE *)v3 + 42) = 0; if ( sub_4C81E0(&off_849C18, 43) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, a1, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"::ProposeResult : Packet Too Long", 43); } return result; } //----- (0059C7A0) -------------------------------------------------------- FILE *__cdecl sub_59C7A0(int a1, __int16 a2, __int16 a3, const char *a4) { void *v4; // esi@1 FILE *result; // eax@2 int v6; // eax@3 v4 = off_849C18; *(_WORD *)off_849C18 = 8274; *((_WORD *)v4 + 1) = a2; *((_WORD *)v4 + 2) = a3; strncpy((char *)v4 + 6, a4, 0x25u); *((_BYTE *)v4 + 42) = 0; if ( sub_4C81E0(&off_849C18, 43) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"::ProposeResult : Packet Too Long", 43); } return result; } //----- (0059C820) -------------------------------------------------------- FILE *__cdecl sub_59C820(int a1, __int16 a2, __time64_t Time) { void *v3; // edi@1 FILE *result; // eax@2 int v5; // eax@3 v3 = off_849C18; *(_WORD *)off_849C18 = 8276; *((_WORD *)v3 + 1) = a2; *(_QWORD *)((char *)v3 + 4) = Time; memcpy((char *)v3 + 12, _localtime64(&Time), 0x24u); if ( sub_4C81E0(&off_849C18, 48) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 764))(a1); result = (FILE *)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, a1, &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"::ReservResult : Packet Too Long", 48); } return result; } //----- (0059C8B0) -------------------------------------------------------- signed int __cdecl sub_59C8B0(int a1) { signed int result; // eax@2 if ( (1 << (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1156))(a1)) & 0x46 ) { if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 8) & 0xF ) result = 4806; else result = 0; } else { result = 4802; } return result; } //----- (0059C900) -------------------------------------------------------- signed int __cdecl sub_59C900(int a1) { signed int result; // eax@2 if ( (1 << (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1156))(a1)) & 6 ) { if ( (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 8) & 0xF) == 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2384))(a1) ) result = 0; else result = 4872; } else { result = 4867; } } else { result = 4865; } return result; } //----- (0059C970) -------------------------------------------------------- signed int __cdecl sub_59C970(int a1) { signed int result; // eax@2 if ( (1 << (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1156))(a1)) & 6 ) { if ( (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 8) & 0xF) == 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2384))(a1) ) result = 0; else result = 4872; } else { result = 4867; } } else { result = 4866; } return result; } //----- (0059C9E0) -------------------------------------------------------- __int16 *__cdecl sub_59C9E0() { return &word_1324B27C; } // 1324B27C: using guessed type __int16 word_1324B27C; //----- (0059C9F0) -------------------------------------------------------- char *__thiscall sub_59C9F0(void *this) { return (char *)this + 23840; } //----- (0059CA00) -------------------------------------------------------- char __cdecl sub_59CA00() { return 0; } //----- (0059CA10) -------------------------------------------------------- int __thiscall sub_59CA10(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; } //----- (0059CA70) -------------------------------------------------------- char __thiscall sub_59CA70(int this, int a2) { int v2; // esi@1 int v3; // edx@5 int v4; // edx@5 int v5; // edx@5 char result; // al@6 v2 = this; if ( !*(_BYTE *)this || sub_516170((void *)(this + 4), (unsigned int *)&dword_AA0BC8) || sub_516170(&dword_AA0BC8, (unsigned int *)(v2 + 8)) ) { if ( a2 ) *(_WORD *)a2 = 4930; result = 0; } else { if ( a2 ) { *(_DWORD *)(a2 + 2) = *(_DWORD *)(v2 + 24); *(_DWORD *)(a2 + 6) = *(_DWORD *)(v2 + 28); *(_DWORD *)(a2 + 10) = *(_DWORD *)(v2 + 32); *(_DWORD *)(a2 + 14) = *(_DWORD *)(v2 + 36); *(_DWORD *)(a2 + 18) = *(_DWORD *)(v2 + 40); *(_DWORD *)(a2 + 22) = *(_DWORD *)(v2 + 48); *(_DWORD *)(a2 + 26) = *(_DWORD *)(v2 + 52); *(_DWORD *)(a2 + 30) = *(_DWORD *)(v2 + 56); *(_DWORD *)(a2 + 34) = *(_DWORD *)(v2 + 60); *(_DWORD *)(a2 + 38) = *(_DWORD *)(v2 + 64); *(_DWORD *)(a2 + 42) = sub_5161F0((void *)(v2 + 4)); *(_DWORD *)(a2 + 46) = v3; *(_DWORD *)(a2 + 50) = sub_5161F0((void *)(v2 + 8)); *(_DWORD *)(a2 + 54) = v4; *(_DWORD *)(a2 + 58) = sub_5161F0((void *)(v2 + 12)); *(_DWORD *)(a2 + 62) = v5; memcpy((void *)(a2 + 66), _localtime64((const __time64_t *)(a2 + 42)), 0x24u); memcpy((void *)(a2 + 102), _localtime64((const __time64_t *)(a2 + 50)), 0x24u); memcpy((void *)(a2 + 138), _localtime64((const __time64_t *)(a2 + 58)), 0x24u); *(_WORD *)a2 = 4928; } result = 1; } return result; } // AA0BC8: using guessed type int dword_AA0BC8; //----- (0059CB90) -------------------------------------------------------- signed int __cdecl sub_59CB90(int a1) { signed int result; // eax@2 sub_4675D0((int)&unk_D020420, (int)"Checker::WhenPropose"); dword_7508B8[dword_750CB8] = (int)"Checker::WhenPropose"; dword_750AB8[dword_750CB8++] = -1; if ( (1 << (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1156))(a1)) & 0x46 ) { if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 8) & 0xF ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Checker::WhenPropose"); result = 4805; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Checker::WhenPropose"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Checker::WhenPropose"); result = 4801; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059CCB0) -------------------------------------------------------- signed int __cdecl sub_59CCB0(int a1, int a2) { signed int result; // eax@2 if ( (unsigned int)sub_402710(a1, a2) <= 0x2710 ) result = 0; else result = 4803; return result; } //----- (0059CCE0) -------------------------------------------------------- int __cdecl sub_59CCE0(int a1) { int v1; // eax@1 void *v2; // edi@2 int v4; // eax@4 v1 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2392))(a1); if ( !sub_516170((void *)(v1 + 13), (unsigned int *)&dword_AA0BC8) ) { v2 = off_849C18; *(_WORD *)off_849C18 = 4229; *((_WORD *)v2 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_DWORD *)v2 + 2) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2392))(a1) + 37); if ( !sub_4C81E0(&off_849C18, 12) ) { sub_639100(&unk_86DDD8, (int)"Checker::ApplicationLimit : Packet Too Long", 12); return 0; } v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } return 0; } // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (0059CD80) -------------------------------------------------------- int __thiscall sub_59CD80(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); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); *(_BYTE *)(this + 41) = *(_BYTE *)(a2 + 41); *(_BYTE *)(this + 42) = *(_BYTE *)(a2 + 42); return result; } //----- (0059CE00) -------------------------------------------------------- int __cdecl sub_59CE00(int a1) { bool v1; // zf@1 int v2; // eax@1 int v4; // eax@3 void *v5; // edi@4 int v6; // eax@6 v1 = (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2392))(a1) + 8) & 0xF0) == 0; v2 = *(_DWORD *)a1; if ( !v1 ) { (*(void (__thiscall **)(int))(v2 + 2400))(a1); return 0; } v4 = (*(int (__thiscall **)(int))(v2 + 2392))(a1); if ( !sub_516170((void *)(v4 + 13), (unsigned int *)&dword_AA0BC8) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 4231; *((_WORD *)v5 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_DWORD *)v5 + 2) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2392))(a1) + 37); if ( !sub_4C81E0(&off_849C18, 12) ) { sub_639100(&unk_86DDD8, (int)"Checker::DelayLimit : Packet Too Long", 12); return 0; } v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } return 0; } // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (0059CEC0) -------------------------------------------------------- int __thiscall sub_59CEC0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate"; dword_750AB8[dword_750CB8++] = -1; sub_59CD80((int)((char *)v2 + 23840), a2); v3 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 4226; sub_59CD80(v3, a2); if ( sub_4C81E0(&off_849C18, 45) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate : Packet Too Long", 45); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059CFC0) -------------------------------------------------------- bool __thiscall sub_59CFC0(void *this) { void *v1; // esi@1 bool v2; // bl@1 char v4; // [sp+10h] [bp-10h]@1 int v5; // [sp+1Ch] [bp-4h]@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v2 = sub_587680(v1, word_14D211BC, (int)&v4) != 0; --dword_750CB8; v5 = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D211BC: using guessed type __int16 word_14D211BC; //----- (0059D080) -------------------------------------------------------- int __thiscall sub_59D080(void *this) { void *v1; // edi@1 void *v2; // esi@1 int v3; // eax@3 void *v4; // edi@4 int v5; // eax@6 __int16 v6; // di@7 int v7; // eax@7 __int16 v8; // di@8 int v9; // eax@8 int (__thiscall *v10)(_DWORD); // eax@11 int v11; // eax@11 void (__thiscall *v12)(_DWORD, _DWORD); // edx@11 char v14; // [sp+Ch] [bp-30h]@11 char v15; // [sp+14h] [bp-28h]@11 int v16; // [sp+1Dh] [bp-1Fh]@11 int v17; // [sp+21h] [bp-1Bh]@11 int v18; // [sp+25h] [bp-17h]@11 int v19; // [sp+29h] [bp-13h]@11 int v20; // [sp+2Dh] [bp-Fh]@11 unsigned int v21; // [sp+38h] [bp-4h]@1 int v22; // [sp+3Ch] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v1 = off_849C18; v2 = this; *(_WORD *)off_849C18 = 18469; *((_DWORD *)v1 + 1) = (*(int (**)(void))(*(_DWORD *)this + 836))(); *((_WORD *)v1 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v1 + 4) = word_13257C7E; if ( sub_4C81E0(&off_849C18, 10) ) { v3 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"Checker::DelayLimit : Packet Too Long", 10); } v4 = off_849C18; *(_WORD *)off_849C18 = 18469; *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v4 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v4 + 4) = dword_132581D8 + 30000; if ( sub_4C81E0(&off_849C18, 10) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"Checker::DelayLimit : Packet Too Long", 10); } v6 = *((_WORD *)v2 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1148))(v2); if ( !sub_526230(v2, v6, word_14D211BE, v7 + 3668, 9) ) { v8 = *((_WORD *)v2 + 2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1148))(v2); sub_526230(v2, v8, word_14D211BE, v9, 8); } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1616))(v2, 293); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1616))(v2, 294); (*(void (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v2 + 1616))(v2, 295); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1320))(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); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2392); v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; v11 = v10(v2); sub_59CD80((int)&v14, v11); v12 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2396); v15 &= 0xFu; v12(v2, &v14); return (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4998); } // 86FEB8: using guessed type int __security_cookie; // 13257C7E: using guessed type __int16 word_13257C7E; // 132581D8: using guessed type int dword_132581D8; // 14D16430: using guessed type int dword_14D16430; // 14D211BE: using guessed type __int16 word_14D211BE; //----- (0059D290) -------------------------------------------------------- int __thiscall sub_59D290(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ebx@1 __int16 v7; // cx@3 void *v8; // edi@8 int v9; // eax@10 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4); v6 = sub_54E4D0(&unk_13253630, *(_DWORD *)(v5 + 37)); if ( v6 ) { v7 = sub_59CB90(v4); if ( v7 || (v7 = sub_59C8B0(v6)) != 0 ) { sub_59C710(v4, *(_WORD *)(v4 + 4), v7); } else { if ( (unsigned int)sub_402710(v4, v6) <= 0x2710 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 8272; *((_WORD *)v8 + 1) = *(_WORD *)(v4 + 4); strncpy((char *)v8 + 4, (const char *)(a2 + 4), 0x24u); *((_BYTE *)v8 + 40) = 0; if ( sub_4C81E0(&off_849C18, 41) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v6, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ : Packet Too Long", 41); } } else { sub_59C710(v4, *(_WORD *)(v4 + 4), 4803); } } } else { sub_59C710(v4, *(_WORD *)(v4 + 4), 4808); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059D430) -------------------------------------------------------- int __thiscall sub_59D430(void *this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@1 int v6; // eax@1 int v7; // esi@1 bool v8; // zf@5 __int16 v9; // ax@5 int v10; // ST14_4@11 int v11; // eax@11 void *v12; // ebx@11 int v13; // eax@13 int v15; // [sp-Ch] [bp-2Ch]@10 __int16 v16; // [sp-8h] [bp-28h]@10 __int16 v17; // [sp-4h] [bp-24h]@10 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4); v6 = sub_54E4D0(&unk_13253630, *(_DWORD *)(v5 + 37)); v7 = v6; if ( !v6 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1232))(v6) != 2 ) { v17 = 4808; v16 = *(_WORD *)(v4 + 4); v15 = v4; goto LABEL_15; } if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 2392))(v7) + 8) & 0xF ) { sub_59C710(v7, *(_WORD *)(v7 + 4), 4805); sub_59C710(v4, *(_WORD *)(v4 + 4), 4806); goto LABEL_16; } v8 = (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4) + 8) & 0xF) == 0; v9 = *(_WORD *)(v7 + 4); if ( !v8 ) { sub_59C710(v7, v9, 4806); sub_59C710(v4, *(_WORD *)(v4 + 4), 4805); goto LABEL_16; } if ( !*(_BYTE *)(a2 + 4) ) { sub_59C7A0(v7, v9, 4810, (const char *)(a2 + 5)); goto LABEL_16; } if ( !sub_526320((void *)v7, v9, word_14D211B8, 1, 0) ) { v17 = 4807; v16 = *(_WORD *)(v7 + 4); v15 = v7; LABEL_15: sub_59C710(v15, v16, v17); goto LABEL_16; } sub_59C7A0(v7, *(_WORD *)(v4 + 4), 4800, (const char *)(a2 + 5)); v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1388))(v4); v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1388))(v7); sub_5B6C50((int)&unk_133595F0, v11, v10); v12 = off_849C18; *(_WORD *)off_849C18 = 4227; *((_WORD *)v12 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v12 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 836))(v7); if ( sub_4C81E0(&off_849C18, 12) ) { v13 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v13); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK : Packet Too Long", 12); } LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D211B8: using guessed type __int16 word_14D211B8; //----- (0059D690) -------------------------------------------------------- int __thiscall sub_59D690(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // edi@1 int v7; // eax@8 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = 8279; v6 = (int)((char *)v5 + 2); if ( !(dword_1325896C & 1) ) { dword_1325896C |= 1u; word_13258968 = 6; atexit(nullsub_175); } if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258968 ) sub_59CA70((int)&word_86AD48, v6); else *(_WORD *)v6 = 4929; if ( sub_4C81E0(&off_849C18, 176) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ : Packet Too Long", 176); } --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD48: using guessed type __int16 word_86AD48; // 13258968: using guessed type __int16 word_13258968; // 1325896C: using guessed type int dword_1325896C; //----- (0059D7E0) -------------------------------------------------------- int __thiscall sub_59D7E0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST14_4@1 void *v5; // esi@1 void *v6; // edi@1 int (__thiscall *v7)(_DWORD, _DWORD); // edx@1 int v8; // eax@6 int v9; // eax@11 int (__thiscall *v10)(_DWORD); // eax@12 char v12; // [sp+Ch] [bp-78h]@3 char v13; // [sp+10h] [bp-74h]@14 char v14; // [sp+24h] [bp-60h]@12 char v15; // [sp+30h] [bp-54h]@12 char v16; // [sp+45h] [bp-3Fh]@12 char v17; // [sp+51h] [bp-33h]@12 int v18; // [sp+66h] [bp-1Eh]@12 int v19; // [sp+6Ah] [bp-1Ah]@12 unsigned int v20; // [sp+74h] [bp-10h]@1 int v21; // [sp+80h] [bp-4h]@1 int v22; // [sp+84h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v4 = (unsigned int)&v22 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 8281; v7 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 836); v21 = 0; if ( dword_86AD74 != v7(v5, v4) && dword_86AD5C != (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5) && !sub_587680(v5, word_14D211BA, (int)&v12) ) { *((_WORD *)v6 + 1) = 4931; if ( sub_4C81E0(&off_849C18, 4) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v5, &off_849C18); goto LABEL_15; } goto LABEL_5; } if ( !(_BYTE)word_86AD48 || sub_516170(&unk_86AD4C, (unsigned int *)&dword_AA0BC8) || sub_516170(&dword_AA0BC8, (unsigned int *)&unk_86AD50) ) { *((_WORD *)v6 + 1) = 4930; if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v9 + 12))(v9, v5, &off_849C18); goto LABEL_15; } LABEL_5: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ : Packet Too Long", 4); goto LABEL_15; } sub_526320(v5, *((_WORD *)v5 + 2), word_14D211BA, 1, 0); strncpy(&v14, "Wedding", 0xCu); v15 = 0; strncpy(&v16, "Wedding", 0xCu); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1156); v17 = 0; v18 = 558; v19 = 154; if ( (unsigned __int8)v10(v5) == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 1160))(v5); (*(void (__thiscall **)(void *, char *, signed int))(*(_DWORD *)v5 + 1020))(v5, &v13, 1); LABEL_15: --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD48: using guessed type __int16 word_86AD48; // 86AD5C: using guessed type int dword_86AD5C; // 86AD74: using guessed type int dword_86AD74; // 86FEB8: using guessed type int __security_cookie; // AA0BC8: using guessed type int dword_AA0BC8; // 14D211BA: using guessed type __int16 word_14D211BA; //----- (0059DA10) -------------------------------------------------------- int __thiscall sub_59DA10(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // ecx@3 int v6; // edx@3 unsigned __int64 v7; // qax@5 void *v8; // edi@10 int v9; // eax@12 void *v10; // edi@14 signed int v12; // [sp-4h] [bp-20h]@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_13258974 & 1) ) { dword_13258974 |= 1u; word_13258970 = 6; atexit(nullsub_176); } v5 = v4; v6 = *(_DWORD *)v4; if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258970) ) { v12 = 4993; LABEL_18: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v5, 8, 93, v12); goto LABEL_19; } LODWORD(v7) = (*(int (__thiscall **)(void *))(v6 + 1076))(v4); if ( v7 < 0x3D090 ) { v12 = 4995; LABEL_17: v6 = *(_DWORD *)v4; v5 = v4; goto LABEL_18; } switch ( (unsigned int)*((_BYTE *)v4 + 23848) >> 4 ) { case 0u: if ( !sub_59C570((char *)v4 + 23853, (unsigned int *)&dword_AA0BC8) ) { v12 = 4994; goto LABEL_17; } v8 = off_849C18; *(_WORD *)off_849C18 = 4233; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 23877); if ( sub_4C81E0(&off_849C18, 12) ) { LABEL_12: v9 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v9); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ : Packet Too Long", 12); } LABEL_13: (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1940))(v4, 250000, 0); break; case 2u: v10 = off_849C18; *(_WORD *)off_849C18 = 4237; *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v10 + 2) = *(_DWORD *)((char *)v4 + 23877); *((_BYTE *)v10 + 12) = 0; if ( sub_4C81E0(&off_849C18, 13) ) goto LABEL_12; sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ : Packet Too Long", 13); goto LABEL_13; case 1u: case 3u: v12 = 5000; goto LABEL_17; default: break; } LABEL_19: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; // 13258970: using guessed type __int16 word_13258970; // 13258974: using guessed type int dword_13258974; // 14D16430: using guessed type int dword_14D16430; //----- (0059DC50) -------------------------------------------------------- int __thiscall sub_59DC50(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // edx@1 bool v6; // al@6 int v7; // edx@6 unsigned __int64 v8; // qax@8 void *v9; // edi@10 int v10; // eax@15 void *v11; // edi@17 int v12; // eax@19 int v14; // [sp-4h] [bp-28h]@16 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; v5 = 1; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_1325897C & 1) ) { dword_1325897C |= 1u; word_13258978 = 6; atexit(nullsub_177); v5 = 1; } if ( (v5 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_13258978 ) { switch ( (unsigned int)*((_BYTE *)v4 + 23848) >> 4 ) { case 0u: v6 = sub_59C570((char *)v4 + 23853, (unsigned int *)&dword_AA0BC8); v7 = *(_DWORD *)v4; if ( !v6 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v7 + 776))(v4, 8, 93, 4994); --dword_750CB8; goto LABEL_22; } LODWORD(v8) = (*(int (__thiscall **)(void *))(v7 + 1076))(v4); if ( v8 < 0xB71B0 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 4995); --dword_750CB8; goto LABEL_22; } v9 = off_849C18; if ( *((_BYTE *)v4 + 23882) >= 3u ) { *(_WORD *)off_849C18 = 4237; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v9 + 2) = *(_DWORD *)((char *)v4 + 23877); *((_BYTE *)v9 + 12) = 1; if ( !sub_4C81E0(&off_849C18, 13) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long", 13); goto LABEL_16; } } else { *(_WORD *)off_849C18 = 4235; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v9 + 2) = *(_DWORD *)((char *)v4 + 23877); if ( !sub_4C81E0(&off_849C18, 12) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long", 12); goto LABEL_16; } } v10 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v10); LABEL_16: (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1940))(v4, 750000, 0); --dword_750CB8; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; break; case 4u: v11 = off_849C18; *(_WORD *)off_849C18 = 4237; *((_WORD *)v11 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v11 + 2) = *(_DWORD *)((char *)v4 + 23877); *((_BYTE *)v11 + 12) = 1; if ( sub_4C81E0(&off_849C18, 13) ) { v12 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v12); --dword_750CB8; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long", 13); --dword_750CB8; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } return sub_467660((int)&unk_D020420, v14); case 1u: case 3u: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 5000); --dword_750CB8; v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; return sub_467660((int)&unk_D020420, v14); default: dword_750CB8 -= v5; goto LABEL_22; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 4993); --dword_750CB8; LABEL_22: v14 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; // 13258978: using guessed type __int16 word_13258978; // 1325897C: using guessed type int dword_1325897C; // 14D16430: using guessed type int dword_14D16430; //----- (0059DF70) -------------------------------------------------------- int __thiscall sub_59DF70(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@3 int v6; // eax@6 int v8; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4) + 8) & 0xF) == 2 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 4239; if ( (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4) + 8) & 0xF0) == 64 ) { *((_DWORD *)v5 + 1) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4) + 37); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v5 + 12) = 1; if ( sub_4C81E0(&off_849C18, 13) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD : Packet Too Long", 13); } } v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } else { v8 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059E0A0) -------------------------------------------------------- int __thiscall sub_59E0A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@3 int v6; // ebx@3 void *v7; // edi@5 int v8; // ecx@5 int v9; // eax@5 _BYTE *v10; // eax@5 int v11; // eax@7 void *v12; // edi@8 void *v13; // edi@9 int v14; // eax@11 int v16; // [sp-4h] [bp-24h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( (*((_BYTE *)v4 + 23848) & 0xF) == 2 ) { v5 = sub_54E4D0(&unk_13253630, *(_DWORD *)((char *)v4 + 23877)); v6 = v5; if ( v5 && *(_DWORD *)(v5 + 122) ) { v7 = off_849C18; *(_WORD *)off_849C18 = 4244; *((_BYTE *)v7 + 8) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1240))(v5); *((_BYTE *)v7 + 9) = 1; v8 = *(_DWORD *)(*(_DWORD *)(v6 + 122) + 12); v9 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v9; v10 = &byte_85A2C0[256 * v9]; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *(_DWORD *)(v8 + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)(v8 + 8); v10[12] = 0; *((_WORD *)v7 + 7) = sub_639620(&unk_14D20404, v10); if ( sub_4C81E0(&off_849C18, 16) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ : Packet Too Long", 16); } } else { v12 = off_849C18; *(_WORD *)off_849C18 = 4245; *((_BYTE *)v12 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v12 + 3) = *((_WORD *)v4 + 2); *(_DWORD *)((char *)v12 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_BYTE *)v12 + 10) = 0; *(_DWORD *)((char *)v12 + 13) = *(_DWORD *)((char *)v4 + 23877); sub_5A4B40(&off_849C18, 17); if ( !dword_13359E0C ) { v13 = off_849C18; *(_WORD *)off_849C18 = 4243; *((_WORD *)v13 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v13 + 2) = *(_DWORD *)((char *)v4 + 23877); if ( sub_4C81E0(&off_849C18, 12) ) { v14 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_RNG : Packet Too Long", 12); } } } --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ"; } else { --dword_750CB8; v16 = (int)"ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ"; } return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 13359E0C: using guessed type int dword_13359E0C; // 14D16430: using guessed type int dword_14D16430; //----- (0059E300) -------------------------------------------------------- char __stdcall sub_59E300(int a1, int a2) { int v2; // eax@1 v2 = *(_DWORD *)(a1 + 2); if ( dword_86AD74 == v2 || dword_86AD5C == v2 ) { LOBYTE(v2) = 0; if ( (_BYTE)word_86AD48 && !HIBYTE(word_86AD48) ) word_86AD48 = 0; } return v2; } // 86AD48: using guessed type __int16 word_86AD48; // 86AD5C: using guessed type int dword_86AD5C; // 86AD74: using guessed type int dword_86AD74; //----- (0059E340) -------------------------------------------------------- char __thiscall sub_59E340(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // edx@2 char result; // al@2 int v7; // eax@4 int v8; // eax@4 int v9; // edx@4 int v10; // ecx@4 int v11; // eax@5 int v12; // eax@5 int v13; // edx@6 v4 = this; sub_4675D0((int)&unk_D020420, (int)"WeddingHall::wh_Reserv"); dword_7508B8[dword_750CB8] = (int)"WeddingHall::wh_Reserv"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)v4 ) { *(_DWORD *)a4 = sub_5161F0((char *)v4 + 12); *(_DWORD *)(a4 + 4) = v5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"WeddingHall::wh_Reserv"); result = 0; } else { *(_WORD *)v4 = 1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2052))(a2) == 1 ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); *((_DWORD *)v4 + 6) = *(_DWORD *)v7; *((_DWORD *)v4 + 7) = *(_DWORD *)(v7 + 4); *((_DWORD *)v4 + 8) = *(_DWORD *)(v7 + 8); *((_DWORD *)v4 + 9) = *(_DWORD *)(v7 + 12); *((_DWORD *)v4 + 10) = *(_DWORD *)(v7 + 16); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1388))(a3); *((_DWORD *)v4 + 12) = *(_DWORD *)v8; *((_DWORD *)v4 + 13) = *(_DWORD *)(v8 + 4); *((_DWORD *)v4 + 14) = *(_DWORD *)(v8 + 8); *((_DWORD *)v4 + 15) = *(_DWORD *)(v8 + 12); *((_DWORD *)v4 + 16) = *(_DWORD *)(v8 + 16); *((_DWORD *)v4 + 5) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); v9 = *(_DWORD *)a3; v10 = a3; } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1388))(a3); *((_DWORD *)v4 + 6) = *(_DWORD *)v11; *((_DWORD *)v4 + 7) = *(_DWORD *)(v11 + 4); *((_DWORD *)v4 + 8) = *(_DWORD *)(v11 + 8); *((_DWORD *)v4 + 9) = *(_DWORD *)(v11 + 12); *((_DWORD *)v4 + 10) = *(_DWORD *)(v11 + 16); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1388))(a2); *((_DWORD *)v4 + 12) = *(_DWORD *)v12; *((_DWORD *)v4 + 13) = *(_DWORD *)(v12 + 4); *((_DWORD *)v4 + 14) = *(_DWORD *)(v12 + 8); *((_DWORD *)v4 + 15) = *(_DWORD *)(v12 + 12); *((_DWORD *)v4 + 16) = *(_DWORD *)(v12 + 16); *((_DWORD *)v4 + 5) = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 836))(a3); v9 = *(_DWORD *)a2; v10 = a2; } *((_DWORD *)v4 + 11) = (*(int (__thiscall **)(int))(v9 + 836))(v10); *((_DWORD *)v4 + 1) = dword_AA0BC8; sub_59C5F0((char *)v4 + 4, (unsigned int)&unk_14000000); *((_DWORD *)v4 + 2) = *((_DWORD *)v4 + 1); sub_59C5F0((char *)v4 + 8, (unsigned int)&unk_5000000); *((_DWORD *)v4 + 3) = *((_DWORD *)v4 + 2); sub_59C5F0((char *)v4 + 12, (unsigned int)&unk_A000000); *(_DWORD *)a4 = sub_5161F0((char *)v4 + 4); *(_DWORD *)(a4 + 4) = v13; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"WeddingHall::wh_Reserv"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // AA0BC8: using guessed type int dword_AA0BC8; //----- (0059E570) -------------------------------------------------------- int __stdcall sub_59E570(int a1) { int v1; // eax@2 int v2; // edi@2 void *v3; // ebx@4 int v4; // eax@7 int v5; // eax@10 void *v6; // edi@11 int v7; // eax@12 int v8; // esi@12 int v10; // [sp-4h] [bp-24h]@3 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_ACK"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)(a1 + 2) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 4245; *(_DWORD *)((char *)v6 + 2) = *(_DWORD *)(a1 + 2); *(_DWORD *)((char *)v6 + 6) = *(_DWORD *)(a1 + 6); *(_DWORD *)((char *)v6 + 10) = *(_DWORD *)(a1 + 10); *((_WORD *)v6 + 7) = *(_WORD *)(a1 + 14); *((_BYTE *)v6 + 16) = *(_BYTE *)(a1 + 16); if ( !*(_BYTE *)(a1 + 10) ) { v7 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 13)); v8 = v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1156))(v7) && *(_DWORD *)(v8 + 122) ) { *((_BYTE *)v6 + 9) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1240))(v8); *((_BYTE *)v6 + 10) = 1; *(_WORD *)((char *)v6 + 11) = sub_54BF00((void *)v8); } } } sub_5A4B40(&off_849C18, 17); goto LABEL_17; } v1 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 3)); v2 = v1; if ( v1 ) { v3 = off_849C18; if ( *(_BYTE *)(a1 + 10) ) { *(_WORD *)off_849C18 = 4244; *((_WORD *)v3 + 1) = *(_WORD *)(v1 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_BYTE *)v3 + 9) = *(_BYTE *)(a1 + 10); *((_WORD *)v3 + 7) = *(_WORD *)(a1 + 11); *((_BYTE *)v3 + 8) = *(_BYTE *)(a1 + 9); if ( sub_4C81E0(&off_849C18, 16) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_RNG : Packet Too Long", 16); } } else { *(_WORD *)off_849C18 = 4243; *((_WORD *)v3 + 1) = *(_WORD *)(v1 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_DWORD *)v3 + 2) = *(_DWORD *)(a1 + 13); if ( sub_4C81E0(&off_849C18, 12) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_RNG : Packet Too Long", 12); } } LABEL_17: v10 = (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_ACK"; goto LABEL_18; } v10 = (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_ACK"; LABEL_18: --dword_750CB8; return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059E7C0) -------------------------------------------------------- int __stdcall sub_59E7C0(int a1) { int v1; // ebx@1 int v2; // esi@1 int v3; // eax@2 int v4; // eax@4 int v5; // edi@4 unsigned __int8 v6; // al@6 int v7; // edi@11 int v8; // ecx@13 char v10; // [sp+2Bh] [bp+Bh]@6 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = a1; v2 = a1 + 2; if ( !sub_45AA60(a1 + 2) ) { v4 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 9)); v5 = v4; if ( v4 && *(_DWORD *)(v4 + 122) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1240))(v4); v10 = 0; if ( v6 < *(_BYTE *)(v2 + 31) || v6 > *(_BYTE *)(v2 + 32) ) v10 = 1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2676))(v5) && v10 != 1 ) { sub_5A62A0(0, v1); goto LABEL_15; } v7 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = *(_WORD *)v1; sub_59CA10(v7, v2); *(_WORD *)(v7 + 33) = 4046; } else { v8 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = *(_WORD *)a1; sub_59CA10(v8, v2); } sub_5A4B40(&off_849C18, 37); goto LABEL_15; } v3 = sub_45AA90(v2); if ( v3 ) sub_5A64B0(v3, a1); LABEL_15: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059E930) -------------------------------------------------------- int __stdcall sub_59E930(int a1) { int v1; // eax@2 void *v2; // eax@5 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_REFRESH_INFO_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_REFRESH_INFO_RNG"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_45AA60(a1 + 2) ) { v1 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 5)); if ( v1 && *(_DWORD *)(v1 + 122) ) { sub_5A6570(*(_DWORD *)(a1 + 5), a1); } else { v2 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a1; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)(a1 + 2); *((_WORD *)v2 + 3) = *(_WORD *)(a1 + 6); *((_BYTE *)v2 + 8) = *(_BYTE *)(a1 + 8); sub_5A4B40(&off_849C18, 9); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_CHAR_WEDDING_REFRESH_INFO_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059EA30) -------------------------------------------------------- int __stdcall sub_59EA30(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDINGDATA_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDINGDATA_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2388))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDINGDATA_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059EB20) -------------------------------------------------------- int __stdcall sub_59EB20(int a1, int a2) { int v2; // esi@1 int v3; // ebx@1 void *v4; // edi@3 int v5; // eax@5 void *v6; // esi@7 int v7; // eax@9 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 12)); if ( *(_DWORD *)(a1 + 8) ) { if ( v2 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v4 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK : Packet Too Long", 8); } } if ( v3 ) { v6 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v6 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( sub_4C81E0(&off_849C18, 8) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK : Packet Too Long", 8); } } } else { sub_59C710(v2, *(_WORD *)(v2 + 4), 4833); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059ECC0) -------------------------------------------------------- int __stdcall sub_59ECC0(int a1, int a2) { int v2; // eax@1 void *v3; // esi@3 int v4; // eax@5 int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_CANCEL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_CANCEL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( *(_DWORD *)(a1 + 8) ) { if ( v2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK : Packet Too Long", 8); } } v5 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a1 + 12); sub_5A6DE0(*(_DWORD *)(a1 + 12), v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_CANCEL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059EDF0) -------------------------------------------------------- int __stdcall sub_59EDF0(int a1, int a2) { int v2; // esi@1 void *v3; // ebx@3 int v4; // eax@5 int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 12)); if ( *(_DWORD *)(a1 + 8) ) { if ( v2 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4992); v3 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK : Packet Too Long", 8); } } v5 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a1 + 12); sub_5A6DE0(*(_DWORD *)(a1 + 12), v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059EF50) -------------------------------------------------------- int __stdcall sub_59EF50(int a1, int a2) { int v2; // esi@1 void *v3; // ebx@3 int v4; // eax@5 int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 12)); if ( *(_DWORD *)(a1 + 8) ) { if ( v2 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4992); v3 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK : Packet Too Long", 8); } } v5 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a1 + 12); sub_5A6DE0(*(_DWORD *)(a1 + 12), v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059F0B0) -------------------------------------------------------- int __stdcall sub_59F0B0(int a1, int a2) { int v2; // eax@1 void *v3; // esi@3 int v4; // eax@5 int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( *(_DWORD *)(a1 + 8) ) { if ( v2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK : Packet Too Long", 8); } } v5 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a1 + 12); sub_5A6DE0(*(_DWORD *)(a1 + 12), v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059F1E0) -------------------------------------------------------- int __stdcall sub_59F1E0(int a1, int a2) { int v2; // ST04_4@2 int v3; // eax@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(a1 + 8) ) { v2 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a1 + 4); sub_5A6DE0(*(_DWORD *)(a1 + 4), v2); v3 = (int)off_849C18; *(_DWORD *)((char *)off_849C18 + 5) = *(_DWORD *)(a1 + 13); sub_5A6DE0(*(_DWORD *)(a1 + 13), v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059F2C0) -------------------------------------------------------- FILE *__cdecl sub_59F2C0(int a1, __int16 a2, char a3) { void *v3; // esi@1 FILE *result; // eax@2 int v5; // eax@3 v3 = off_849C18; *(_WORD *)off_849C18 = 18433; *((_WORD *)v3 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836))(a1); *((_DWORD *)v3 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836))(a1); *((_WORD *)v3 + 6) = a2; *(_WORD *)((char *)v3 + 15) = -1; *((_BYTE *)v3 + 14) = a3 != 0; if ( sub_4C81E0(&off_849C18, 17) ) { v5 = sub_428750((int)&dword_14D16430); result = (FILE *)sub_4C7EC0(&off_849C18, v5); } else { result = sub_639100(&unk_86DDD8, (int)"learnSkill : Packet Too Long", 17); } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (0059F360) -------------------------------------------------------- int __stdcall sub_59F360(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 void *v4; // ebx@2 int v5; // eax@4 void *v6; // esi@8 int v7; // eax@10 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 12)); if ( v2 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v4 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK : Packet Too Long", 8); } if ( *(_DWORD *)(a1 + 8) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2228))(v2, (unsigned __int16)word_14D211BE); sub_59F2C0(v2, word_13257C7E, 0); sub_59F2C0(v2, dword_132581D8, 1); } } if ( v3 ) { v6 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v6 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); if ( sub_4C81E0(&off_849C18, 8) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK : Packet Too Long", 8); } if ( *(_DWORD *)(a1 + 8) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2228))(v3, (unsigned __int16)word_14D211BE); sub_59F2C0(v3, word_13257C7E, 0); sub_59F2C0(v3, dword_132581D8, 1); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257C7E: using guessed type __int16 word_13257C7E; // 132581D8: using guessed type int dword_132581D8; // 14D16430: using guessed type int dword_14D16430; // 14D211BE: using guessed type __int16 word_14D211BE; //----- (0059F570) -------------------------------------------------------- int __stdcall sub_59F570(int a1, int a2) { int v2; // eax@1 void *v3; // esi@3 int v4; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && *(_DWORD *)(a1 + 8) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK : Packet Too Long", 8); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (0059F690) -------------------------------------------------------- int __stdcall sub_59F690(int a1, int a2) { int v2; // eax@1 int v3; // edi@1 void *v4; // esi@3 int v5; // eax@3 int v6; // eax@5 int v8; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = v2; if ( v2 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 4244; *((_WORD *)v4 + 1) = *(_WORD *)(v2 + 4); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v4 + 7) = -1; *((_DWORD *)v4 + 1) = v5; *((_BYTE *)v4 + 9) = 0; *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(a1 + 10); *((_BYTE *)v4 + 8) = *(_BYTE *)(a1 + 8); if ( sub_4C81E0(&off_849C18, 16) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK : Packet Too Long", 16); } v8 = (int)"GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK"; } else { v8 = (int)"GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0059F7C0) -------------------------------------------------------- int __cdecl sub_59F7C0(int a1) { int result; // eax@2 int (__thiscall *v2)(_DWORD); // edx@3 int v3; // eax@3 void (__thiscall *v4)(_DWORD, _DWORD); // edx@3 int (__thiscall *v5)(_DWORD); // edx@7 int v6; // eax@7 void (__thiscall *v7)(_DWORD, _DWORD); // edx@7 int (__thiscall *v8)(_DWORD); // edx@9 int v9; // eax@9 char v10; // al@9 void (__thiscall *v11)(_DWORD, _DWORD); // edx@10 int (__thiscall *v12)(_DWORD); // edx@11 int v13; // eax@11 int v14; // eax@12 void *v15; // edi@15 int v16; // ebx@15 int v17; // eax@17 int v18; // eax@18 int v19; // eax@18 void *v20; // edi@21 void *v21; // edi@23 int v22; // eax@25 char v23; // [sp+Ch] [bp-30h]@3 char v24; // [sp+14h] [bp-28h]@3 int v25; // [sp+1Dh] [bp-1Fh]@3 int v26; // [sp+21h] [bp-1Bh]@3 int v27; // [sp+25h] [bp-17h]@3 int v28; // [sp+29h] [bp-13h]@3 int v29; // [sp+2Dh] [bp-Fh]@3 unsigned int v30; // [sp+38h] [bp-4h]@1 int v31; // [sp+3Ch] [bp+0h]@1 v30 = (unsigned int)&v31 ^ __security_cookie; switch ( (unsigned int)*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 8) >> 4 ) { case 0u: (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1036))(a1); (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1048))(a1); return 0; case 5u: v2 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392); v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v3 = v2(a1); sub_59CD80((int)&v23, v3); v4 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 2396); v24 &= 0xFu; v4(a1, &v23); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1028))(a1) ) goto LABEL_6; (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1032))(a1); goto LABEL_5; case 7u: v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392); v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v6 = v5(a1); sub_59CD80((int)&v23, v6); v7 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 2396); v24 &= 0xFu; v7(a1, &v23); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1028))(a1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1032))(a1); LABEL_5: (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1940))(a1); } LABEL_6: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a1 + 776))(a1, 8, 93, 4999); return 0; case 6u: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)a1 + 776))(a1, 8, 93, 4997); v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392); v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v9 = v8(a1); sub_59CD80((int)&v23, v9); v10 = v24 & 0xF | 0x20; goto LABEL_10; case 8u: v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392); v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v13 = v12(a1); sub_59CD80((int)&v23, v13); v10 = v24 & 0xF | 0x40; LABEL_10: v11 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a1 + 2396); v24 = v10; v11(a1, &v23); result = 0; break; default: v14 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2392))(a1); if ( !sub_516170((void *)(v14 + 13), (unsigned int *)&dword_AA0BC8) ) { switch ( (unsigned int)*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 8) >> 4 ) { case 1u: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1040))(a1) ) break; v15 = off_849C18; *(_WORD *)off_849C18 = 4239; *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_DWORD *)v15 + 2) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2392))(a1) + 37); v16 = 0; *((_BYTE *)v15 + 12) = 0; if ( sub_4C81E0(&off_849C18, 13) ) goto LABEL_17; sub_639100(&unk_86DDD8, (int)"Checker::DivorceLimit : Packet Too Long", 13); goto LABEL_18; case 2u: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1040))(a1) ) break; v20 = off_849C18; *(_WORD *)off_849C18 = 4239; *((_DWORD *)v20 + 1) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 37); v16 = 0; *((_DWORD *)v20 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *((_BYTE *)v20 + 12) = 0; if ( sub_4C81E0(&off_849C18, 13) ) { LABEL_17: v17 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v17); } else { sub_639100(&unk_86DDD8, (int)"Checker::DivorceLimit : Packet Too Long", 13); } LABEL_18: (*(void (__thiscall **)(int))(*(_DWORD *)a1 + 1044))(a1); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1); v19 = sub_54E4D0(&unk_13253630, *(_DWORD *)(v18 + 37)); if ( v19 == v16 ) break; (*(void (__thiscall **)(int))(*(_DWORD *)v19 + 1044))(v19); return 0; case 3u: case 4u: v21 = off_849C18; *(_WORD *)off_849C18 = 4237; *((_DWORD *)v21 + 1) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2392))(a1) + 37); *((_DWORD *)v21 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836))(a1); *((_BYTE *)v21 + 12) = 1; if ( !sub_4C81E0(&off_849C18, 13) ) { sub_639100(&unk_86DDD8, (int)"Checker::DivorceLimit : Packet Too Long", 13); return 0; } v22 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v22); break; default: break; } } result = 0; break; } return result; } // 86FEB8: using guessed type int __security_cookie; // AA0BC8: using guessed type int dword_AA0BC8; // 14D16430: using guessed type int dword_14D16430; //----- (0059FC00) -------------------------------------------------------- int __thiscall sub_59FC00(void *this, int a2) { int v2; // ebx@1 int v3; // ecx@3 int v4; // edx@3 int v5; // eax@3 int v6; // ecx@3 int v7; // edi@7 int v8; // eax@7 void *v9; // eax@12 int v10; // eax@14 unsigned __int8 v12[4]; // [sp+14h] [bp-24h]@3 int v13; // [sp+18h] [bp-20h]@3 int v14; // [sp+1Ch] [bp-1Ch]@3 int v15; // [sp+20h] [bp-18h]@3 int v16; // [sp+24h] [bp-14h]@3 unsigned int v17; // [sp+28h] [bp-10h]@1 int v18; // [sp+34h] [bp-4h]@1 int v19; // [sp+38h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingData"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingData"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; if ( *(_WORD *)(a2 + 6) ) { --dword_750CB8; v18 = -1; } else { sub_59CD80(v2 + 23840, a2); v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; sub_632850(v12, (const unsigned __int8 *)(v2 + 23857)); v3 = v13; v4 = v14; *(_DWORD *)(v2 + 23857) = *(_DWORD *)v12; v5 = v15; *(_DWORD *)(v2 + 23861) = v3; v6 = v16; *(_DWORD *)(v2 + 23869) = v5; *(_DWORD *)(v2 + 23865) = v4; *(_DWORD *)(v2 + 23873) = v6; switch ( *(_BYTE *)(v2 + 23848) & 0xF ) { case 1: sub_59CCE0(v2); break; case 2: v7 = sub_401310(&unk_877138, 293); (*(void (__thiscall **)(int, int, _DWORD, signed int, int, int, _DWORD, signed int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1592))( v2, v2, *(_DWORD *)(*(_DWORD *)v7 + 34), 1, v7, dword_14D129E8, 0, -1, 1000000000, 0, 0); sub_401900((void *)v2, *(_DWORD *)(*(_DWORD *)v7 + 34)); v8 = *(_DWORD *)(v7 + 48); if ( v8 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 1008))( v2, *(_DWORD *)(*(_DWORD *)v7 + 34), *(_DWORD *)(v8 + 43), 1); sub_4055D0((void *)v2, *(_DWORD *)(*(_DWORD *)v7 + 34), *(_DWORD *)(*(_DWORD *)(v7 + 48) + 43), 1); } sub_59F7C0(v2); if ( (*(_BYTE *)(v2 + 23848) & 0xF0) == 64 ) (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4996); break; case 3: sub_59CE00(v2); break; } v9 = off_849C18; *(_WORD *)off_849C18 = 4225; v9 = (char *)v9 + 2; memcpy(v9, (const void *)(v2 + 23840), 0x2Bu); *(_WORD *)v9 = *(_WORD *)(v2 + 4); *(_DWORD *)((char *)v9 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 45) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingData : Packet Too Long", 45); } --dword_750CB8; v18 = -1; } return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_WeddingData"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (0059FE60) -------------------------------------------------------- int __thiscall sub_59FE60(void *this, int a2, int a3, int a4) { int v4; // esi@1 __int16 v5; // ax@1 int v6; // edi@3 __int16 v7; // cx@8 unsigned int v8; // ebx@14 void *v9; // ebx@14 int v10; // eax@16 __int16 v12; // [sp-Ch] [bp-34h]@7 __time64_t v13; // [sp-8h] [bp-30h]@7 __time64_t Time; // [sp+10h] [bp-18h]@1 int v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@1 v4 = (int)this; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; Time = 0i64; v5 = sub_59C900(v4); if ( v5 ) { sub_59C710(v4, *(_WORD *)(v4 + 4), v5); LABEL_20: v16 = -1; goto LABEL_21; } v6 = sub_54E4D0(&unk_13253630, *(_DWORD *)(v4 + 23877)); if ( !v6 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 2 || (unsigned int)sub_402710(v4, v6) > 0x2710 ) { v13 = 0i64; v12 = 4869; goto LABEL_19; } if ( !sub_516170((void *)(v4 + 23853), (unsigned int *)&dword_AA0BC8) ) { v13 = 0i64; v12 = 4868; LABEL_19: sub_59C820(v4, v12, v13); goto LABEL_20; } v7 = sub_59C970(v6); if ( v7 ) { sub_59C710(v4, *(_WORD *)(v4 + 4), v7); goto LABEL_20; } if ( !sub_59E340(&word_86AD48, v4, v6, (int)&Time) ) { v13 = Time; v12 = 4870; goto LABEL_19; } if ( !sub_5270F0((void *)v4, *(_WORD *)(v4 + 4), 10, word_14D211BA, 15) || !sub_5270F0((void *)v6, *(_WORD *)(v6 + 4), 10, word_14D211BA, 15) ) { sub_59C710(v4, *(_WORD *)(v4 + 4), 4874); goto LABEL_20; } v8 = HIDWORD(Time); sub_59C820(v4, 4864, Time); sub_59C820(v6, 4864, __PAIR__(v8, (unsigned int)Time)); v9 = off_849C18; *(_WORD *)off_849C18 = 1629; *(_DWORD *)((char *)v9 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)((char *)v9 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); if ( sub_4C81E0(&off_849C18, 10) ) { v10 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v10); v16 = -1; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ : Packet Too Long", 10); v16 = -1; } LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD48: using guessed type __int16 word_86AD48; // AA0BC8: using guessed type int dword_AA0BC8; // 14D148D0: using guessed type int dword_14D148D0; // 14D211BA: using guessed type __int16 word_14D211BA; //----- (005A00D0) -------------------------------------------------------- void __thiscall sub_5A00D0(void *this) { void *v1; // ebx@1 int v2; // eax@1 _BYTE *v3; // eax@1 int v4; // ecx@1 _BYTE *v5; // ecx@1 char *v6; // ST08_4@1 char *v7; // ST00_4@1 void *v8; // eax@1 void *v9; // eax@1 void *v10; // eax@1 int v11; // eax@1 int v12; // ecx@1 void *v13; // eax@3 int v14; // eax@5 int (__stdcall **v15)(int, int); // [sp+Ch] [bp-334h]@1 int v16; // [sp+10h] [bp-330h]@1 int (__thiscall *v17)(int, int, int, int); // [sp+14h] [bp-32Ch]@1 char *v18; // [sp+18h] [bp-328h]@1 int v19; // [sp+1Ch] [bp-324h]@1 __int16 v20; // [sp+20h] [bp-320h]@1 char v21; // [sp+24h] [bp-31Ch]@1 char v22; // [sp+224h] [bp-11Ch]@1 char v23[4]; // [sp+324h] [bp-1Ch]@1 int v24; // [sp+328h] [bp-18h]@1 int v25; // [sp+32Ch] [bp-14h]@1 unsigned int v26; // [sp+330h] [bp-10h]@1 int v27; // [sp+33Ch] [bp-4h]@1 int v28; // [sp+340h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v1 = this; sub_4D5720(&v22); v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *((_DWORD *)v1 + 12); *((_DWORD *)v3 + 1) = *((_DWORD *)v1 + 13); *((_DWORD *)v3 + 2) = *((_DWORD *)v1 + 14); *((_DWORD *)v3 + 3) = *((_DWORD *)v1 + 15); *((_DWORD *)v3 + 4) = *((_DWORD *)v1 + 16); v3[20] = 0; v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *((_DWORD *)v1 + 6); *((_DWORD *)v5 + 1) = *((_DWORD *)v1 + 7); *((_DWORD *)v5 + 2) = *((_DWORD *)v1 + 8); v6 = v3; *((_DWORD *)v5 + 3) = *((_DWORD *)v1 + 9); *((_DWORD *)v5 + 4) = *((_DWORD *)v1 + 10); v5[20] = 0; v7 = v5; v27 = 0; v8 = sub_4D5720(&v22); v9 = sub_4D6730(v8, v7); v10 = sub_4D6730(v9, word_6A2BF8); sub_4D6730(v10, v6); v25 = 0; v24 = 0; *(_DWORD *)v23 = 0; strncpy(v23, "Wedding", 0xCu); sub_465590((int)&v21, (int)v23); v15 = &off_6A4700; v16 = (int)&unk_CFCF380; v17 = sub_4521E0; v18 = &v21; v19 = 0; v20 = -1; LOBYTE(v27) = 2; sub_43C470((int)&unk_CFCF380, (int)&v15); v11 = v19; v12 = v19 != 0; LOBYTE(v27) = 1; v15 = &off_6A2544; *((_DWORD *)v1 + 4) = v19; if ( v12 ) { sub_5071A0(*(void **)(v11 + 68), (int)"Wedding/Wedding", &v22, v11); sub_5B6D30((int)&unk_133595F0, (int)((char *)v1 + 24), (int)((char *)v1 + 48)); v13 = off_849C18; *(_WORD *)off_849C18 = 1630; *(_DWORD *)((char *)v13 + 2) = *((_DWORD *)v1 + 5); *(_DWORD *)((char *)v13 + 6) = *((_DWORD *)v1 + 11); if ( sub_4C81E0(&off_849C18, 10) ) { v14 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v14); } else { sub_639100(&unk_86DDD8, (int)"WeddingHall::wh_Start : Packet Too Long", 10); } } else { sub_639100(&unk_86DDD8, (int)"WeddingHall::wh_Start : Map not found", 0); } LOBYTE(v27) = 0; sub_4646E0((int)&v21); v27 = -1; nullsub_2(&v22); } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D148D0: using guessed type int dword_14D148D0; //----- (005A0320) -------------------------------------------------------- char __stdcall sub_5A0320(int a1) { int v1; // eax@1 int v2; // esi@1 int v3; // eax@3 int (__thiscall *v4)(_DWORD, _DWORD); // eax@5 unsigned int v6; // [sp-4h] [bp-2ACh]@1 int (__stdcall **v7)(int, int); // [sp+10h] [bp-298h]@3 int v8; // [sp+14h] [bp-294h]@3 int (__thiscall *v9)(int, int, int, int); // [sp+18h] [bp-290h]@3 char *v10; // [sp+1Ch] [bp-28Ch]@3 int v11; // [sp+20h] [bp-288h]@3 __int16 v12; // [sp+24h] [bp-284h]@3 char v13; // [sp+28h] [bp-280h]@3 char v14; // [sp+228h] [bp-80h]@7 char v15; // [sp+23Ch] [bp-6Ch]@5 char v16; // [sp+248h] [bp-60h]@5 char v17; // [sp+25Dh] [bp-4Bh]@5 char v18; // [sp+269h] [bp-3Fh]@5 int v19; // [sp+27Eh] [bp-2Ah]@5 int v20; // [sp+282h] [bp-26h]@5 char v21[4]; // [sp+28Ch] [bp-1Ch]@3 int v22; // [sp+290h] [bp-18h]@3 int v23; // [sp+294h] [bp-14h]@3 unsigned int v24; // [sp+298h] [bp-10h]@1 int v25; // [sp+2A4h] [bp-4h]@1 int v26; // [sp+2A8h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v6 = (unsigned int)&v26 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WeddingHall::wh_RecallCouple"); dword_7508B8[dword_750CB8] = (int)"WeddingHall::wh_RecallCouple"; dword_750AB8[dword_750CB8++] = -1; v25 = 0; v1 = sub_54E4D0(&unk_13253630, a1); v2 = v1; if ( v1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 304))(v1) ) { LABEL_8: --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"WeddingHall::wh_RecallCouple"); return 1; } v23 = 0; v22 = 0; *(_DWORD *)v21 = 0; strncpy(v21, "EldPri", 0xCu); sub_465590((int)&v13, (int)v21); v7 = &off_6A4700; v8 = (int)&unk_CFCF380; v9 = sub_4521E0; v10 = &v13; v11 = 0; v12 = -1; LOBYTE(v25) = 2; sub_43C470((int)&unk_CFCF380, (int)&v7); v3 = *(_DWORD *)(v2 + 122); LOBYTE(v25) = 1; v7 = &off_6A2544; if ( v3 && v11 != v3 ) { sub_526320((void *)v2, *(_WORD *)(v2 + 4), word_14D211BC, 1, 0); strncpy(&v15, "Wedding", 0xCu); v16 = 0; strncpy(&v17, "Wedding", 0xCu); v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1156); v18 = 0; v19 = 558; v20 = 154; if ( (unsigned __int8)v4(v2, v6) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1160))(v2); (*(void (__thiscall **)(int, char *))(*(_DWORD *)v2 + 1020))(v2, &v14); LOBYTE(v25) = 0; sub_4646E0((int)&v13); goto LABEL_8; } LOBYTE(v25) = 0; sub_4646E0((int)&v13); } --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)"WeddingHall::wh_RecallCouple"); return 0; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); // 6A4700: using guessed type int (__stdcall *off_6A4700)(int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D211BC: using guessed type __int16 word_14D211BC; //----- (005A0540) -------------------------------------------------------- int __thiscall sub_5A0540(void *this) { void *v1; // esi@1 char v2; // bl@1 int v3; // ST04_4@4 void *v4; // edi@10 v1 = this; sub_4675D0((int)&unk_D020420, (int)"WeddingHall::wh_Routine"); dword_7508B8[dword_750CB8] = (int)"WeddingHall::wh_Routine"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; if ( *(_BYTE *)v1 ) { if ( *((_BYTE *)v1 + 1) || sub_516170((char *)v1 + 4, (unsigned int *)&dword_AA0BC8) ) { if ( !sub_516170((char *)v1 + 12, (unsigned int *)&dword_AA0BC8) ) *(_WORD *)v1 = 0; } else { v3 = *((_DWORD *)v1 + 5); *((_BYTE *)v1 + 1) = 1; if ( sub_5A0320(v3) ) v2 = 1; if ( sub_5A0320(*((_DWORD *)v1 + 11)) ) ++v2; if ( v2 == 2 ) { sub_5A00D0(&word_86AD48); } else { v4 = off_849C18; *(_WORD *)off_849C18 = 8277; *((_BYTE *)v4 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v4 + 3) = -1; *(_DWORD *)((char *)v4 + 5) = -1; *(_DWORD *)((char *)v4 + 9) = *((_DWORD *)v1 + 5); *(_DWORD *)((char *)v4 + 13) = *((_DWORD *)v1 + 11); *((_BYTE *)v4 + 17) = v2; sub_5A4B40(&off_849C18, 18); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WeddingHall::wh_Routine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD48: using guessed type __int16 word_86AD48; // AA0BC8: using guessed type int dword_AA0BC8; //----- (005A0690) -------------------------------------------------------- int __stdcall sub_5A0690(int a1) { char v1; // bl@1 void *v2; // eax@3 int v3; // eax@5 void *v4; // eax@11 sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; if ( *(_BYTE *)(a1 + 2) == *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { if ( *(_BYTE *)(a1 + 17) ) { sub_5A00D0(&word_86AD48); } else { v2 = off_849C18; word_86AD48 = 0; *(_WORD *)off_849C18 = 1631; *(_DWORD *)((char *)v2 + 2) = *(_DWORD *)(a1 + 9); *(_DWORD *)((char *)v2 + 6) = *(_DWORD *)(a1 + 13); if ( sub_4C81E0(&off_849C18, 10) ) { v3 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"WeddingHall::wh_Cancel : Packet Too Long", 10); } } } else { if ( sub_5A0320(*(_DWORD *)(a1 + 9)) ) v1 = 1; if ( sub_5A0320(*(_DWORD *)(a1 + 13)) ) ++v1; v4 = off_849C18; *(_WORD *)off_849C18 = 8277; *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)(a1 + 2); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(a1 + 6); *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(a1 + 10); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(a1 + 14); *((_BYTE *)v4 + 17) += v1; sub_5A4B40(&off_849C18, 18); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86AD48: using guessed type __int16 word_86AD48; // 14D148D0: using guessed type int dword_14D148D0; //----- (005A0810) -------------------------------------------------------- void *__thiscall sub_5A0810(void *this) { void *v1; // esi@1 v1 = this; sub_5A4590(this); *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *(_DWORD *)v1 = &off_6F3358; *((_DWORD *)v1 + 2) = 5; return v1; } // 6F3358: using guessed type int (__stdcall *off_6F3358)(int); //----- (005A0840) -------------------------------------------------------- int (__stdcall **__thiscall sub_5A0840(int this))(int, int) { *(_DWORD *)this = &off_6F3358; return sub_5A4290(this); } // 6F3358: using guessed type int (__stdcall *off_6F3358)(int); //----- (005A0850) -------------------------------------------------------- int __stdcall sub_5A0850(int a1) { return a1; } //----- (005A0860) -------------------------------------------------------- int __thiscall sub_5A0860(void *this, int a2) { signed int v2; // esi@1 int result; // eax@1 int v4; // eax@15 char v5; // [sp+4h] [bp-104h]@6 unsigned int v6; // [sp+104h] [bp-4h]@1 int v7; // [sp+108h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = 0; result = (int)((char *)this + 4); do { ++v2; if ( result == a2 ) { *((_BYTE *)this + 264 * v2) = 1; return result; } result += 264; } while ( v2 < 4 ); if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v5, "%.255s", "Varification error"); sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fputs(&v5, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fprintf(dword_14D15088, "%d", v2); } if ( byte_7493ED && byte_14D1520C ) { if ( dword_14D15088 ) { v4 = sub_418E40((__time32_t)byte_14D14F88); sub_654AB0(10, (FILE *)v4); fflush(dword_14D15088); result = fclose(dword_14D15088); dword_14D15088 = 0; } } } } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D1520C: using guessed type char byte_14D1520C; //----- (005A09A0) -------------------------------------------------------- int __stdcall sub_5A09A0(unsigned int *a1, int a2) { unsigned int v2; // eax@1 char v4; // [sp+8h] [bp-50h]@1 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 int v7; // [sp+58h] [bp+0h]@1 v5 = (unsigned int)&v7 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_DummyFunction"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_DummyFunction"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)a1; v6 = 0; sprintf(&v4, "%d/%d:%d", v2 >> 10, v2 & 0x3FF, a2); sub_6390B0(&unk_86DDD8, (int)"WorldManagerSession::wms_DummyFunction", (int)&v4); --dword_750CB8; v6 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_DummyFunction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005A0A80) -------------------------------------------------------- int __thiscall sub_5A0A80(void *this, int a2) { void *v2; // edi@1 unsigned __int8 v3; // al@1 unsigned __int8 v4; // al@1 int v5; // ebx@1 int v6; // eax@1 int v7; // eax@2 int v8; // ebx@4 int v9; // eax@4 int v10; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 52))(v2, 0); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); *(_DWORD *)a2 = dword_DA22970[2 * v3]; *(_DWORD *)(a2 + 4) = dword_DA22974[2 * v3]; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); *(_DWORD *)(a2 + 8) = dword_DA22978[2 * v4]; *(_DWORD *)(a2 + 12) = dword_DA2297C[2 * v4]; *(_DWORD *)(a2 + 16) = *((_DWORD *)v2 + 1030); *(_DWORD *)(a2 + 20) = *((_DWORD *)v2 + 1795); *(_DWORD *)(a2 + 24) = *((_DWORD *)v2 + 1031); *(_DWORD *)(a2 + 28) = *((_DWORD *)v2 + 1796); *(_DWORD *)(a2 + 32) = *((_DWORD *)v2 + 1032); *(_DWORD *)(a2 + 36) = *((_DWORD *)v2 + 1797); *(_DWORD *)(a2 + 40) = *((_DWORD *)v2 + 1033); *(_DWORD *)(a2 + 44) = *((_DWORD *)v2 + 1798); *(_DWORD *)(a2 + 56) = *((_DWORD *)v2 + 1034); *(_DWORD *)(a2 + 60) = *((_DWORD *)v2 + 1799); *(_DWORD *)(a2 + 64) = *((_DWORD *)v2 + 1035); *(_DWORD *)(a2 + 68) = *((_DWORD *)v2 + 1800); *(_DWORD *)(a2 + 72) = *((_DWORD *)v2 + 1036); *(_DWORD *)(a2 + 76) = *((_DWORD *)v2 + 1801); *(_DWORD *)(a2 + 80) = *((_DWORD *)v2 + 1037); *(_DWORD *)(a2 + 84) = *((_DWORD *)v2 + 1802); *(_DWORD *)(a2 + 88) = *((_DWORD *)v2 + 1038); *(_DWORD *)(a2 + 92) = *((_DWORD *)v2 + 1803); *(_DWORD *)(a2 + 96) = *((_DWORD *)v2 + 1039); *(_DWORD *)(a2 + 100) = *((_DWORD *)v2 + 1804); *(_DWORD *)(a2 + 104) = *((_DWORD *)v2 + 1040); *(_DWORD *)(a2 + 108) = *((_DWORD *)v2 + 1805); *(_DWORD *)(a2 + 112) = *((_DWORD *)v2 + 1041); *(_DWORD *)(a2 + 116) = *((_DWORD *)v2 + 1806); *(_DWORD *)(a2 + 120) = *((_DWORD *)v2 + 1042); *(_DWORD *)(a2 + 124) = *((_DWORD *)v2 + 1807); *(_DWORD *)(a2 + 128) = *((_DWORD *)v2 + 1043); *(_DWORD *)(a2 + 132) = *((_DWORD *)v2 + 1808); *(_DWORD *)(a2 + 136) = *((_DWORD *)v2 + 1044); *(_DWORD *)(a2 + 140) = *((_DWORD *)v2 + 1809); *(_DWORD *)(a2 + 204) = 0; *(_DWORD *)(a2 + 200) = 0; *(_DWORD *)(a2 + 212) = 0; *(_DWORD *)(a2 + 208) = 0; *(_DWORD *)(a2 + 220) = 0; *(_DWORD *)(a2 + 216) = 0; *(_DWORD *)(a2 + 228) = 0; *(_DWORD *)(a2 + 224) = 0; *(_DWORD *)(a2 + 168) = 0; *(_DWORD *)(a2 + 172) = 0; *(_DWORD *)(a2 + 176) = 0; *(_DWORD *)(a2 + 180) = 0; *(_DWORD *)(a2 + 184) = 0; *(_DWORD *)(a2 + 188) = 0; *(_DWORD *)(a2 + 192) = 0; *(_DWORD *)(a2 + 196) = 0; *(_DWORD *)(a2 + 144) = sub_5488B0(v2); *(_DWORD *)(a2 + 148) = sub_558960(v2); *(_DWORD *)(a2 + 152) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 3468))(v2); *(_DWORD *)(a2 + 156) = 0; v5 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1240))(v2); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1180))(v2); if ( (unsigned __int16)v5 > 0x96u ) v7 = *(_DWORD *)(v6 + 67672); else v7 = *(_DWORD *)(v6 + 4 * v5 + 67672); *(_DWORD *)(a2 + 160) = (unsigned __int16)((unsigned int)(*(_DWORD *)(v7 + 32) * (unsigned int)*((_WORD *)v2 + 80157) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v8 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1240))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1180))(v2); if ( (unsigned __int16)v8 > 0x96u ) v10 = *(_DWORD *)(v9 + 67672); else v10 = *(_DWORD *)(v9 + 4 * v8 + 67672); *(_DWORD *)(a2 + 164) = (unsigned __int16)((unsigned int)(*(_DWORD *)(v10 + 44) * (unsigned int)*((_WORD *)v2 + 80158) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"); return a2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // DA22970: using guessed type int dword_DA22970[]; // DA22974: using guessed type int dword_DA22974[]; // DA22978: using guessed type int dword_DA22978[]; // DA2297C: using guessed type int dword_DA2297C[]; //----- (005A0DC0) -------------------------------------------------------- int __thiscall sub_5A0DC0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)a2 = *((_WORD *)v2 + 2); v3 = *(_DWORD *)((char *)v2 + 102); *(_DWORD *)(a2 + 234) = *(_DWORD *)v3; *(_DWORD *)(a2 + 238) = *(_DWORD *)(v3 + 4); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v2 + 1640))(v2, a2 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"); return a2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A0E90) -------------------------------------------------------- int __thiscall sub_5A0E90(void *this, int a2, int a3) { int v3; // edi@1 void *v4; // esi@1 char v5; // cl@1 __int16 v6; // dx@1 __int16 v7; // ax@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = 2050; *(_WORD *)((char *)v4 + 3) = 1541; *((_BYTE *)v4 + 5) = sub_5A7540(byte_14D16AE8)[12]; v5 = sub_5A7540(byte_14D16AE8)[16]; v6 = *((_BYTE *)v4 + 3); v7 = *((_BYTE *)v4 + 4); *((_BYTE *)v4 + 6) = v5; *(_WORD *)((char *)v4 + 7) = v7 + v6; if ( sub_4C81E0(&off_849C18, 9) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY : Packet Too Long", 9); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A0FA0) -------------------------------------------------------- signed int __thiscall sub_5A0FA0(int this, int a2, int a3) { int v3; // esi@1 v3 = this; sub_5A0860(&dword_14D12A00, this); sub_463020((int)&unk_CFCF380, v3); return sub_5C9D50(&unk_13267D80); } // 14D12A00: using guessed type int dword_14D12A00; //----- (005A0FD0) -------------------------------------------------------- int __thiscall sub_5A0FD0(void *this, int a2, int a3) { int v3; // esi@1 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 2053; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v3); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A10B0) -------------------------------------------------------- int __stdcall sub_5A10B0(int a1, int a2) { int v2; // edi@1 int v3; // ecx@3 void *v4; // eax@7 int v5; // eax@9 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2); if ( v3 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 6148; *((_WORD *)v4 + 1) = *(_WORD *)(a1 + 2); *((_BYTE *)v4 + 4) = -1; if ( sub_4C81E0(&off_849C18, 5) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK : Packet Too Long", 5); } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK : Invalid Object", *(_WORD *)(a1 + 2)); sub_644DD0((int)&unk_86F128, "NC_CHAR_ZONE_CHARDATAFAIL_ACK : Invalid ClientHandle [%d]", *(_WORD *)(a1 + 2)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1200) -------------------------------------------------------- int __stdcall sub_5A1200(int a1, int a2) { int v2; // esi@1 int v3; // edx@3 int v4; // edi@7 int v5; // eax@8 int v6; // eax@11 void *v7; // eax@11 int v8; // eax@13 void *v9; // eax@16 int v10; // eax@18 char *v11; // ecx@19 int v12; // eax@21 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2); if ( v3 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1204))( v2, *(_WORD *)(a1 + 2), "WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK"); v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3572))(v2); if ( !v4 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK : TutorialInfo Is Null - CharNo : ", v5); } if ( !*(_DWORD *)v4 && !(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3564))(v2) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK : Not Find Empty TutorialMap - CharNo : ", v6); v7 = off_849C18; *(_DWORD *)off_849C18 = 837556228; *((_BYTE *)v7 + 4) = -1; if ( sub_4C81E0(&off_849C18, 5) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK : Packet Too Long", 5); } } if ( sub_465790((void *)v2, 0) && ((*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v2 + 828))(v2, 0, 1, 3), sub_465E70((void *)v2)) ) { v9 = off_849C18; *(_DWORD *)off_849C18 = &unk_1421804; *((_BYTE *)v9 + 4) = -1; if ( sub_4C81E0(&off_849C18, 5) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2596))(v2, 2); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK : Packet Too Long", 5); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2596))(v2, 2); } } else { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1216))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1404))(v2); v11 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 6146; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v2 + 1636))(v2, v11); if ( sub_4C81E0(&off_849C18, 244) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK : Packet Too Long", 244); } } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK : Invalid Object", *(_WORD *)(a1 + 2)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A14D0) -------------------------------------------------------- int __stdcall sub_5A14D0(int a1) { int v1; // esi@1 int v2; // ecx@1 unsigned __int16 v3; // ax@1 unsigned __int16 v4; // di@1 int v5; // ecx@3 int v6; // eax@3 bool v7; // zf@3 int v8; // eax@3 int v9; // ebx@4 char v11; // [sp+10h] [bp-110h]@10 unsigned int v12; // [sp+110h] [bp-10h]@1 int v13; // [sp+11Ch] [bp-4h]@1 int v14; // [sp+120h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_kickoff"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_kickoff"; dword_750AB8[dword_750CB8++] = -1; v1 = dword_13253824; v2 = *(_DWORD *)(dword_13253824 + 8); v3 = *(_WORD *)(v2 + 12 * *(_WORD *)(dword_13253824 + 14) + 4); v4 = *(_WORD *)(v2 + 12 * v3 + 4); v13 = 0; while ( v3 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = 3 * v3; v7 = *(_BYTE *)(v5 + 4 * v6 + 8) == 0; v8 = v5 + 4 * v6; if ( v7 ) break; v9 = *(_DWORD *)v8; if ( !*(_DWORD *)v8 ) break; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 840))(v9) == a1 ) { if ( byte_7493ED ) { if ( byte_13359DE4 ) { sprintf(&v11, "%.255s", "Char From world "); sub_418E40((__time32_t)byte_13359B60); if ( dword_13359C60 ) fputs(&v11, dword_13359C60); } } sub_418F20((__time32_t)byte_13359B60, (int)&unk_13359E04); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 1532))(v9, 1); break; } if ( v4 >= *(_WORD *)(v1 + 4) ) break; v3 = v4; v4 = *(_WORD *)(*(_DWORD *)(v1 + 8) + 12 * v4 + 4); } --dword_750CB8; v13 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_kickoff"); } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13253824: using guessed type int dword_13253824; // 13359DE4: using guessed type char byte_13359DE4; //----- (005A1660) -------------------------------------------------------- int __stdcall sub_5A1660(int a1, int a2) { int v2; // edi@1 int v3; // eax@3 int v4; // esi@3 int v5; // ecx@5 int v6; // ebx@9 int v7; // eax@9 signed int v8; // esi@10 int v9; // ecx@16 signed int v10; // edx@16 int v11; // esi@19 unsigned __int8 v12; // cl@20 void *v13; // eax@24 int v14; // ebx@24 int v15; // ebx@24 int v16; // eax@26 int v18; // [sp-4h] [bp-2Ch]@2 int v19; // [sp+14h] [bp-14h]@3 int v20; // [sp+18h] [bp-10h]@10 int v21; // [sp+18h] [bp-10h]@19 int v22; // [sp+30h] [bp+8h]@10 signed int v23; // [sp+30h] [bp+8h]@18 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; if ( *(_WORD *)(a1 + 1037) < 0x200u ) { v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v4 = v3; v19 = v3; v5 = v3 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3); if ( v5 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4); sub_5C7A00(v6, *(_BYTE *)(a1 + 8) == 0); *(_BYTE *)(v6 + 1160) = *(_BYTE *)(a1 + 9); *(_BYTE *)(v6 + 1161) = *(_BYTE *)(a1 + 10); *(_WORD *)(v6 + 1162) = *(_WORD *)(a1 + 11); v7 = a1 + 13; if ( *(_BYTE *)(a1 + 8) ) { v9 = v6 + 1176; v10 = 128; do { *(_DWORD *)v9 = *(_DWORD *)v7; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v7 + 4); v7 += 8; v9 += 16; --v10; } while ( v10 ); } else { v8 = 0; v22 = v6 + 1176; v20 = v2 + 13; do { if ( sub_62ABB0(*(_DWORD *)v6, v8) == 1 ) { *(_DWORD *)v22 = 0; *(_DWORD *)(v22 + 4) = 0; } else { *(_DWORD *)v22 = *(_DWORD *)v20; *(_DWORD *)(v22 + 4) = *(_DWORD *)(v20 + 4); } v20 += 8; v22 += 16; ++v8; } while ( v8 < 128 ); } v23 = 0; if ( *(_WORD *)(v2 + 1037) > 0u ) { v21 = v6 + 137; v11 = v2 + 1040; do { v12 = *(_BYTE *)(v11 - 1); if ( *(_BYTE *)(v6 + 1160) == v12 && *(_BYTE *)(v6 + 1161) == (*(_BYTE *)v11 & 0x3F) ) *(_BYTE *)v11 |= 0xC0u; sub_5C7AB0((void *)v6, v12, *(_BYTE *)v11 & 0x3F, (unsigned int)*(_BYTE *)v11 >> 6); *(_BYTE *)(v21 - 1) = *(_BYTE *)(v11 - 1); *(_BYTE *)v21 = *(_BYTE *)v11 & 0x3F; v21 += 2; v11 += 2; ++v23; } while ( v23 < *(_WORD *)(v2 + 1037) ); } *(_DWORD *)(v6 + 132) = *(_WORD *)(v2 + 1037); v13 = off_849C18; *(_WORD *)off_849C18 = 4169; *((_BYTE *)v13 + 2) = *(_BYTE *)(v2 + 9); *((_BYTE *)v13 + 3) = *(_BYTE *)(v2 + 10); *((_WORD *)v13 + 2) = *(_WORD *)(v2 + 11); *((_WORD *)v13 + 3) = *(_WORD *)(v2 + 1037); v14 = 2 * *(_WORD *)(v2 + 1037); memmove((char *)v13 + 8, (const void *)(v2 + 1039), 2 * *(_WORD *)(v2 + 1037)); v15 = v14 + 8; if ( sub_4C81E0(&off_849C18, v15) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 760))(v19); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v19, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD : Packet Too Long", v15); } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD : Invalid Object", *(_WORD *)(a1 + 2)); } v18 = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD"; } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD : Too many titles", *(_WORD *)(a1 + 1037)); v18 = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1950) -------------------------------------------------------- int __stdcall sub_5A1950(int a1, int a2) { int v2; // eax@1 int v3; // esi@1 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CT_CHARTTING_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CT_CHARTTING_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = v2; if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1056))(v3); sub_5C9670(v4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CT_CHARTTING_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1A30) -------------------------------------------------------- int __stdcall sub_5A1A30(int a1, int a2) { int v2; // esi@1 unsigned __int16 v3; // ST00_2@3 int v4; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CT_ADD_FRIEND_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CT_ADD_FRIEND_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { v3 = *(_WORD *)(a1 + 8); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1056))(v2); sub_5C9600(v4, v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CT_ADD_FRIEND_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1B10) -------------------------------------------------------- int __stdcall sub_5A1B10(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_480170((int)dword_7515A8, *(_DWORD *)(a1 + 2), *(_DWORD *)(a1 + 6)); sub_5CA240((int)&unk_13267D80, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 7515A8: using guessed type int dword_7515A8[]; //----- (005A1BD0) -------------------------------------------------------- int __stdcall sub_5A1BD0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_4801D0((int)dword_7515A8, *(_DWORD *)(a1 + 2), *(_DWORD *)(a1 + 6)); sub_5CA290((int)&unk_13267D80, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 7515A8: using guessed type int dword_7515A8[]; //----- (005A1C90) -------------------------------------------------------- int __stdcall sub_5A1C90(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_5CA440((int)&unk_13267D80, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1D40) -------------------------------------------------------- int __stdcall sub_5A1D40(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_5C9E50((int)&unk_13267D80, (int *)(a1 + 2)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1DF0) -------------------------------------------------------- int __userpurge sub_5A1DF0(int a1, int a2, int a3) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_5CA5B0((int)&unk_13267D80, a1, (int *)(a2 + 2)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1EA0) -------------------------------------------------------- int __stdcall sub_5A1EA0(int a1, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // ebx@3 int v6; // [sp-4h] [bp-24h]@5 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_JOIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_JOIN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 6)); if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 768))(v3) ) { v6 = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_JOIN_CMD"; } else { v4 = sub_5CA140((int)&unk_13267D80, *(_DWORD *)v2); if ( v4 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2076))(v3, *(_DWORD *)v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2080))(v3, v4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2084))(v3); sub_63B620(v2); } v6 = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_JOIN_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A1FB0) -------------------------------------------------------- int __stdcall sub_5A1FB0(int a1, int a2) { int v2; // esi@1 int v3; // eax@3 int v5; // [sp+0h] [bp-20h]@0 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_LEAVE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_LEAVE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2092))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2116))(v2); v3 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2072))(v2, 1); sub_485F60(v2, v3, v5); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2076))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2080))(v2, 0); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2084))(v2); sub_63B620(a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_LEAVE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A20E0) -------------------------------------------------------- int __stdcall sub_5A20E0(int a1, int a2) { int v2; // esi@1 __int16 v3; // ST04_2@1 signed __int16 v4; // bx@1 int v5; // eax@1 int v6; // edi@1 char *v7; // eax@7 int v8; // eax@9 int v10; // [sp+28h] [bp+8h]@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_ZONE_PRISON_GO_REQ"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_ZONE_PRISON_GO_REQ"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; v3 = *(_WORD *)(a1 + 286); v4 = 3520; v10 = *(_WORD *)(a1 + 292); v5 = sub_54DE90(&unk_13253630, v3); v6 = v5; if ( v5 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 768))(v5) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6) == *(_DWORD *)(v2 + 286) ) { if ( !(*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 2212))(v6, v10) ) v4 = 3522; } else { v4 = 3521; } v7 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 31764; memcpy(v7, (const void *)v2, 0x174u); *((_WORD *)v7 + 145) = v10; *((_WORD *)v7 + 186) = v4; if ( sub_4C81E0(&off_849C18, 376) ) { v8 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v8); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_ZONE_PRISON_GO_REQ : Packet Too Long", 376); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_ZONE_PRISON_GO_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (005A2260) -------------------------------------------------------- int __thiscall sub_5A2260(void *this) { int v1; // esi@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_GuildWarStatusRequest"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_GuildWarStatusRequest"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)off_849C18 = 29845; if ( sub_4C81E0(&off_849C18, 2) ) sub_4C7EC0(&off_849C18, v1); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_GuildWarStatusRequest : Packet Too Long", 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_GuildWarStatusRequest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2340) -------------------------------------------------------- int __stdcall sub_5A2340(int a1, int a2) { signed int v2; // edi@1 int v3; // esi@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; sub_5CA0B0((int)&unk_13267D80); sub_4800D0((int)dword_7515A8); if ( *(_WORD *)(a1 + 2) > 0u ) { v3 = a1 + 4; do { sub_5CA240((int)&unk_13267D80, v3); sub_480170((int)dword_7515A8, *(_DWORD *)v3, *(_DWORD *)(v3 + 4)); ++v2; v3 += 8; } while ( v2 < *(_WORD *)(a1 + 2) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 7515A8: using guessed type int dword_7515A8[]; //----- (005A2420) -------------------------------------------------------- int __stdcall sub_5A2420(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2470) -------------------------------------------------------- int __thiscall sub_5A2470(void *this, int a2) { int v2; // edi@1 void *v3; // eax@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_EndOfKQPacket"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_EndOfKQPacket"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 22544; *(_DWORD *)((char *)v3 + 2) = a2; if ( sub_4C81E0(&off_849C18, 6) ) sub_4C7EC0(&off_849C18, v2); else sub_639100(&unk_86DDD8, (int)"PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step : Packet Too Long", 6); sub_499720(&dword_D64C510, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_EndOfKQPacket"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2560) -------------------------------------------------------- int __stdcall sub_5A2560(int a1, int a2) { int v2; // esi@4 int v4; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_STORAGE_WITHDRAW_GRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_STORAGE_WITHDRAW_GRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 8) != 3137 || *(_DWORD *)(a1 + 4) == -1 ) { --dword_750CB8; v4 = (int)"WorldManagerSession::wms_NC_GUILD_STORAGE_WITHDRAW_GRADE_ACK"; } else { v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 4)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1516))(v2, *(_BYTE *)(a1 + 10)); --dword_750CB8; v4 = (int)"WorldManagerSession::wms_NC_GUILD_STORAGE_WITHDRAW_GRADE_ACK"; } return sub_467660((int)&unk_D020420, v4); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2650) -------------------------------------------------------- int __stdcall sub_5A2650(int a1, int a2) { int v2; // esi@4 int v4; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_GRADE_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_GRADE_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a1 + 8) != 6016 || *(_DWORD *)(a1 + 4) == -1 ) { --dword_750CB8; v4 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_GRADE_ACK"; } else { v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 4)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2160))(v2, *(_BYTE *)(a1 + 10)); --dword_750CB8; v4 = (int)"WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_GRADE_ACK"; } return sub_467660((int)&unk_D020420, v4); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2740) -------------------------------------------------------- int __stdcall sub_5A2740(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int v5; // edx@5 int v7; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RENAME_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RENAME_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 4); if ( v2 == -1 ) { --dword_750CB8; v7 = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RENAME_ACK"; } else { v3 = sub_54E4D0(&unk_13253630, v2); v4 = v3; if ( v3 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v5 = *(_DWORD *)v4; if ( *(_WORD *)(a1 + 25) == 6720 ) (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(v5 + 2176))( v4, *(_BYTE *)(a1 + 8), *(_DWORD *)(a1 + 9), *(_DWORD *)(a1 + 13), *(_DWORD *)(a1 + 17), *(_DWORD *)(a1 + 21)); else (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(v5 + 776))(v4, 29, 173, *(_WORD *)(a1 + 25)); } --dword_750CB8; v7 = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RENAME_ACK"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2860) -------------------------------------------------------- int __stdcall sub_5A2860(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int v5; // edx@5 int v7; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RETYPE_ACK"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RETYPE_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 4); if ( v2 == -1 ) { --dword_750CB8; v7 = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RETYPE_ACK"; } else { v3 = sub_54E4D0(&unk_13253630, v2); v4 = v3; if ( v3 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v5 = *(_DWORD *)v4; if ( *(_WORD *)(a1 + 10) == 6744 ) (*(void (__thiscall **)(int, _DWORD, _DWORD))(v5 + 2180))(v4, *(_BYTE *)(a1 + 8), *(_BYTE *)(a1 + 9)); else (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(v5 + 776))(v4, 29, 181, *(_WORD *)(a1 + 10)); } --dword_750CB8; v7 = (int)"WorldManagerSession::wms_NC_GUILD_WORLD_RETYPE_ACK"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2960) -------------------------------------------------------- int __stdcall sub_5A2960(int a1, int a2) { bool v2; // zf@1 int v3; // eax@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_5CB6F0(*(_WORD *)(a1 + 2)) == 0; v3 = *(_WORD *)(a1 + 2); if ( v2 ) sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD Not Reset Raid", *(_WORD *)(a1 + 2)); else sub_485A10((int)&unk_D714FF8, 3, v3, 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2A30) -------------------------------------------------------- int __stdcall sub_5A2A30(int a1, int a2) { void *v2; // eax@1 unsigned __int8 v3; // dl@2 int v4; // ST04_4@4 signed int v5; // ST00_4@4 void *v6; // eax@4 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = (void *)sub_5CB350(*(_WORD *)(a1 + 2)); if ( v2 ) { v3 = *(_BYTE *)(a1 + 5); if ( v3 < 8u ) { if ( v3 < 4u ) { v4 = v3; v5 = *(_BYTE *)(a1 + 4); v6 = sub_639A60(v2); sub_641940(v6, v5, v4); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2B00) -------------------------------------------------------- int __stdcall sub_5A2B00(int a1, int a2) { int v2; // eax@1 int v3; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_5CB8C0(a1 + 2); v3 = v2; if ( v2 ) { sub_5CAE20(v2); sub_5CAD90(v3); sub_5CAFD0(v3); } else { sub_5CB560(*(_WORD *)(a1 + 2), *(_DWORD *)(a1 + 8)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2BE0) -------------------------------------------------------- int __stdcall sub_5A2BE0(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_5CB9B0(*(_WORD *)(a1 + 2), *(_DWORD *)(a1 + 8)); if ( v2 ) sub_485F60(v2, *(_WORD *)(a1 + 2), 3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2CB0) -------------------------------------------------------- int __stdcall sub_5A2CB0(int a1, int a2) { int v2; // eax@1 int v3; // edi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_5CB9B0(*(_WORD *)(a1 + 2), *(_DWORD *)(a1 + 8)); v3 = v2; if ( v2 ) { sub_485F60(v2, *(_DWORD *)(a1 + 8), 3); sub_485F60(v3, *(_DWORD *)(a1 + 8), 3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A2D80) -------------------------------------------------------- int __stdcall sub_5A2D80(int a1, int a2) { int v2; // edi@1 unsigned __int16 v3; // ST0C_2@1 void *v4; // esi@1 int v5; // ebx@3 int v6; // eax@3 int v7; // eax@6 int v8; // eax@8 int v9; // esi@8 int v10; // edi@9 signed __int16 v11; // ax@9 int v12; // edi@9 int v13; // eax@9 int v14; // eax@12 int v15; // eax@14 int v16; // edi@14 int v17; // ebx@15 signed __int16 v18; // ax@15 int v19; // ebx@15 int v20; // eax@15 int v21; // eax@16 int v22; // eax@18 int v23; // esi@18 int v24; // edi@19 signed __int16 v25; // ax@19 int v26; // edi@19 int v27; // eax@19 int v29; // [sp-8h] [bp-58h]@10 int v30; // [sp-4h] [bp-54h]@2 int v31; // [sp-4h] [bp-54h]@10 char v32; // [sp+10h] [bp-40h]@6 char v33; // [sp+1Ch] [bp-34h]@12 char v34; // [sp+28h] [bp-28h]@6 int v35; // [sp+34h] [bp-1Ch]@1 int v36; // [sp+38h] [bp-18h]@17 int v37; // [sp+3Ch] [bp-14h]@3 unsigned __int16 v38; // [sp+40h] [bp-10h]@11 int v39; // [sp+4Ch] [bp-4h]@1 v35 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = *(_WORD *)(a1 + 2); v39 = 0; v4 = (void *)sub_5CB350(v3); if ( v4 ) { v5 = sub_639E00(v4, *(_BYTE *)(v2 + 6), *(_BYTE *)(v2 + 7)); v6 = sub_639E00(v4, *(_BYTE *)(v2 + 30), *(_BYTE *)(v2 + 31)); v37 = v6; if ( v5 != -1 ) { if ( v6 == -1 ) { if ( sub_63A600(v4, v5, *(_BYTE *)(v2 + 30), *(_BYTE *)(v2 + 31), (int)&a1) ) { sub_63A470(v4, (int)&v34, v5); v7 = sub_639C10(v4, (int)&v32); if ( sub_639F40((int)&v34, v7) ) { if ( sub_639EC0((int)&v34, (int)&v37) ) { v8 = sub_54E4D0(&unk_13253630, v37); v9 = v8; if ( v8 ) { v10 = *(_DWORD *)v8; v11 = sub_639AC0((int)&v34); (*(void (__thiscall **)(int, _DWORD))(v10 + 1396))(v9, (unsigned __int16)v11); v12 = *(_DWORD *)v9; v13 = sub_639F80((int)&v34); (*(void (__thiscall **)(int, int))(v12 + 1908))(v9, v13); } } } goto LABEL_22; } v31 = (unsigned __int16)a1; v29 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD Not Change Member "; goto LABEL_21; } if ( !sub_63A8C0(v4, v5, v6, (int)&v38) ) { v31 = v38; v29 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD Not Swap Member "; LABEL_21: sub_639100(&unk_86DDD8, v29, v31); goto LABEL_22; } sub_63A470(v4, (int)&v33, v5); v14 = sub_639C10(v4, (int)&v34); if ( !sub_639F40((int)&v33, v14) ) { LABEL_16: sub_63A470(v4, (int)&v32, v37); v21 = sub_639C10(v4, (int)&v34); if ( sub_639F40((int)&v32, v21) ) { if ( sub_639EC0((int)&v32, (int)&v36) ) { v22 = sub_54E4D0(&unk_13253630, v36); v23 = v22; if ( v22 ) { v24 = *(_DWORD *)v22; v25 = sub_639AC0((int)&v32); (*(void (__thiscall **)(int, _DWORD))(v24 + 1396))(v23, (unsigned __int16)v25); v26 = *(_DWORD *)v23; v27 = sub_639F80((int)&v32); (*(void (__thiscall **)(int, int))(v26 + 1908))(v23, v27); } } } goto LABEL_22; } if ( sub_639EC0((int)&v33, (int)&a1) ) { v15 = sub_54E4D0(&unk_13253630, a1); v16 = v15; if ( v15 ) { v17 = *(_DWORD *)v15; v18 = sub_639AC0((int)&v33); (*(void (__thiscall **)(int, _DWORD))(v17 + 1396))(v16, (unsigned __int16)v18); v19 = *(_DWORD *)v16; v20 = sub_639F80((int)&v33); (*(void (__thiscall **)(int, int))(v19 + 1908))(v16, v20); } goto LABEL_16; } } LABEL_22: v30 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD"; goto LABEL_23; } v30 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD"; LABEL_23: --dword_750CB8; v39 = -1; return sub_467660((int)&unk_D020420, v30); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3040) -------------------------------------------------------- int __stdcall sub_5A3040(int a1, int a2) { void *v2; // esi@1 int v3; // eax@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = (void *)sub_5CB350(*(_WORD *)(a1 + 2)); if ( v2 ) { v3 = sub_639E00(v2, *(_BYTE *)(a1 + 10), *(_BYTE *)(a1 + 11)); if ( v3 != -1 ) sub_63AA80(v2, v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3110) -------------------------------------------------------- int __stdcall sub_5A3110(int a1, int a2) { unsigned __int16 v2; // ST04_2@1 void *v3; // esi@1 int v4; // eax@2 char v6; // [sp+14h] [bp-10h]@3 int v7; // [sp+20h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v7 = 0; v3 = (void *)sub_5CB350(v2); if ( v3 ) { v4 = sub_639E00(v3, *(_BYTE *)(a1 + 10), *(_BYTE *)(a1 + 11)); if ( v4 != -1 ) sub_63A970(v3, v4, (int)&v6); } --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A31E0) -------------------------------------------------------- int __stdcall sub_5A31E0(int a1, int a2) { unsigned __int16 v2; // ST04_2@1 void *v3; // esi@1 int v4; // eax@2 char v6; // [sp+14h] [bp-10h]@3 int v7; // [sp+20h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_WORD *)(a1 + 2); v7 = 0; v3 = (void *)sub_5CB350(v2); if ( v3 ) { v4 = sub_639E00(v3, *(_BYTE *)(a1 + 10), *(_BYTE *)(a1 + 11)); if ( v4 != -1 ) sub_639990(v3, v4, (int)&v6); } --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A32B0) -------------------------------------------------------- int __stdcall sub_5A32B0(int a1, int a2) { void *v2; // esi@1 int v3; // eax@2 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = (void *)sub_5CB350(*(_WORD *)(a1 + 2)); if ( v2 ) { v3 = sub_639E00(v2, *(_BYTE *)(a1 + 10), *(_BYTE *)(a1 + 11)); if ( v3 != -1 ) sub_63AA20(v2, v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3380) -------------------------------------------------------- int __stdcall sub_5A3380(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"wms_NC_CHAR_GET_CHAT_BLOCK_SPAMER_CMD"); dword_7508B8[dword_750CB8] = (int)"wms_NC_CHAR_GET_CHAT_BLOCK_SPAMER_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E5A0(&unk_13253630, a1 + 2); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2792))(v2, *(_DWORD *)(a1 + 22)); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MISC_SPAMMER_ZONE_CHAT_BAN_CMD - shineobject null", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"wms_NC_CHAR_GET_CHAT_BLOCK_SPAMER_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3450) -------------------------------------------------------- int __stdcall sub_5A3450(int a1, int a2) { const void *v2; // esi@1 unsigned int i; // ebx@4 int v4; // eax@5 int v6; // [sp-24h] [bp-68h]@16 int v7; // [sp-20h] [bp-64h]@16 int v8; // [sp-1Ch] [bp-60h]@16 int v9; // [sp-18h] [bp-5Ch]@16 int v10; // [sp-14h] [bp-58h]@16 int v11; // [sp-10h] [bp-54h]@16 int v12; // [sp-Ch] [bp-50h]@16 int v13; // [sp-8h] [bp-4Ch]@16 unsigned int v14; // [sp-4h] [bp-48h]@1 int v15; // [sp+Ch] [bp-38h]@1 unsigned int v16; // [sp+10h] [bp-34h]@2 char v17[4]; // [sp+14h] [bp-30h]@6 int v18; // [sp+18h] [bp-2Ch]@6 int v19; // [sp+1Ch] [bp-28h]@6 int v20; // [sp+20h] [bp-24h]@6 int v21; // [sp+24h] [bp-20h]@6 int v22; // [sp+28h] [bp-1Ch]@6 int v23; // [sp+2Ch] [bp-18h]@6 int v24; // [sp+30h] [bp-14h]@6 unsigned int v25; // [sp+34h] [bp-10h]@1 int v26; // [sp+40h] [bp-4h]@1 int v27; // [sp+44h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v14 = (unsigned int)&v27 ^ __security_cookie; v15 = (int)"wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"; sub_4675D0((int)&unk_D020420, (int)"wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = (const void *)(a1 + 2); v26 = 0; if ( dword_13359664 ) v16 = *(_DWORD *)(dword_13359664 + 40); else v16 = 0; for ( i = 0; i < v16; ++i ) { v4 = sub_626BC0((int)&unk_13359630, i); if ( !v4 ) break; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; strncpy(v17, (const char *)v4, 0x20u); if ( *(_DWORD *)v2 == *(_DWORD *)v17 && *(_DWORD *)(a1 + 6) == v18 && *(_DWORD *)(a1 + 10) == v19 && *(_DWORD *)(a1 + 14) == v20 && *(_DWORD *)(a1 + 18) == v21 && *(_DWORD *)(a1 + 22) == v22 && *(_DWORD *)(a1 + 26) == v23 && *(_DWORD *)(a1 + 30) == v24 ) { memcpy(&v6, v2, 0x20u); sub_4C5E60(dword_D9FBF28, v6, v7, v8, v9, v10, v11, v12, v13); break; } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13359664: using guessed type int dword_13359664; //----- (005A35C0) -------------------------------------------------------- int __stdcall sub_5A35C0(int a1, int a2) { const void *v2; // esi@1 unsigned int i; // ebx@4 int v4; // eax@5 int v6; // [sp-24h] [bp-68h]@16 int v7; // [sp-20h] [bp-64h]@16 int v8; // [sp-1Ch] [bp-60h]@16 int v9; // [sp-18h] [bp-5Ch]@16 int v10; // [sp-14h] [bp-58h]@16 int v11; // [sp-10h] [bp-54h]@16 int v12; // [sp-Ch] [bp-50h]@16 int v13; // [sp-8h] [bp-4Ch]@16 unsigned int v14; // [sp-4h] [bp-48h]@1 int v15; // [sp+Ch] [bp-38h]@1 unsigned int v16; // [sp+10h] [bp-34h]@2 char v17[4]; // [sp+14h] [bp-30h]@6 int v18; // [sp+18h] [bp-2Ch]@6 int v19; // [sp+1Ch] [bp-28h]@6 int v20; // [sp+20h] [bp-24h]@6 int v21; // [sp+24h] [bp-20h]@6 int v22; // [sp+28h] [bp-1Ch]@6 int v23; // [sp+2Ch] [bp-18h]@6 int v24; // [sp+30h] [bp-14h]@6 unsigned int v25; // [sp+34h] [bp-10h]@1 int v26; // [sp+40h] [bp-4h]@1 int v27; // [sp+44h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v14 = (unsigned int)&v27 ^ __security_cookie; v15 = (int)"wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"; sub_4675D0((int)&unk_D020420, (int)"wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = (const void *)(a1 + 2); v26 = 0; if ( dword_13359664 ) v16 = *(_DWORD *)(dword_13359664 + 40); else v16 = 0; for ( i = 0; i < v16; ++i ) { v4 = sub_626BC0((int)&unk_13359630, i); if ( !v4 ) break; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; strncpy(v17, (const char *)v4, 0x20u); if ( *(_DWORD *)v2 == *(_DWORD *)v17 && *(_DWORD *)(a1 + 6) == v18 && *(_DWORD *)(a1 + 10) == v19 && *(_DWORD *)(a1 + 14) == v20 && *(_DWORD *)(a1 + 18) == v21 && *(_DWORD *)(a1 + 22) == v22 && *(_DWORD *)(a1 + 26) == v23 && *(_DWORD *)(a1 + 30) == v24 ) { memcpy(&v6, v2, 0x20u); sub_4C60C0(dword_D9FBF28, v6, v7, v8, v9, v10, v11, v12, v13); break; } } --dword_750CB8; v26 = -1; return sub_467660((int)&unk_D020420, (int)"wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13359664: using guessed type int dword_13359664; //----- (005A3730) -------------------------------------------------------- int __stdcall sub_5A3730(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"wms_NC_MOVER_LINKDATA_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"wms_NC_MOVER_LINKDATA_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3208))(v2, a1 + 2); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_MOVER_LINKDATA_ZONE_CMD - ShineObject Null", 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"wms_NC_MOVER_LINKDATA_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3800) -------------------------------------------------------- int __stdcall sub_5A3800(int a1, int a2) { int v2; // eax@1 void *v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) { v3 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2056))(v2); sub_5BB770(v3, a1 + 2); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_ZONE_CMD - ShineObject Null", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A38E0) -------------------------------------------------------- int __stdcall sub_5A38E0(int a1, int a2) { int v2; // ecx@1 int v3; // esi@3 signed int v5; // [sp-Ch] [bp-24h]@7 signed int v6; // [sp-8h] [bp-20h]@7 signed int v7; // [sp-4h] [bp-1Ch]@7 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_SUPPORT_REWARD_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_SUPPORT_REWARD_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 ) { v3 = *(_DWORD *)(a1 + 6); if ( v3 != 1 ) { if ( v3 == 2 ) { v7 = 1; v6 = 1; v5 = 728; } else { if ( v3 != 3 ) { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_SUPPORT_REWARD_CMD : Invalid User Type", v3); goto LABEL_10; } v7 = 1; v6 = 1; v5 = 733; } (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1604))(v2, v5, v6, v7); goto LABEL_10; } } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_SUPPORT_REWARD_CMD : pPlayer NULL", *(_DWORD *)(a1 + 2)); } LABEL_10: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_SUPPORT_REWARD_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A39F0) -------------------------------------------------------- int __stdcall sub_5A39F0(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int v6; // [sp+28h] [bp+8h]@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_USEITEM_MINIMON_INFO_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_USEITEM_MINIMON_INFO_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v4 = v3; if ( v3 ) { v6 = *(_DWORD *)(a1 + 4); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == v6 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3656))(v4, v2 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_USEITEM_MINIMON_INFO_ZONE_CMD : pPlayer NULL", v6); } else { sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_USEITEM_MINIMON_INFO_ZONE_CMD : pPlayer NULL", *(_DWORD *)(a1 + 4)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_USEITEM_MINIMON_INFO_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3AF0) -------------------------------------------------------- int __stdcall sub_5A3AF0(int a1, int a2) { int v2; // eax@1 int v3; // edi@1 int v4; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_SELL_ITEM_INFO_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_SELL_ITEM_INFO_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); v3 = *(_DWORD *)(a1 + 4); v4 = v2; if ( v2 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == v3 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 3676))(v4, a1 + 8); else sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_SELL_ITEM_INFO_ZONE_CMD : CharNo not match", v3); } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_CHAR_SELL_ITEM_INFO_ZONE_CMD : pPlayer NULL", v3); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_SELL_ITEM_INFO_ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3BF0) -------------------------------------------------------- int __stdcall sub_5A3BF0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_5A14D0(*(_DWORD *)(a1 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3CA0) -------------------------------------------------------- int __stdcall sub_5A3CA0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; sub_5A14D0(*(_DWORD *)(a1 + 8)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3D50) -------------------------------------------------------- int __stdcall sub_5A3D50(int a1, int a2) { int v2; // edi@1 int v3; // eax@2 char v4; // al@5 int v5; // esi@6 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_ZONE_PRISON_END_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_ZONE_PRISON_END_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 ) { v3 = (**(int (__thiscall ***)(_DWORD))v2)(v2); if ( v3 ) { while ( (_UNKNOWN *)v3 != &unk_132541F4 ) { v3 = *(_DWORD *)(v3 + 4); if ( !v3 ) goto LABEL_5; } v4 = 1; } else { LABEL_5: v4 = 0; } v5 = v4 != 0 ? v2 : 0; if ( (v4 != 0 ? v2 : 0) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 768))(v5) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 2216))(v5, 0, 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_ZONE_PRISON_END_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3E60) -------------------------------------------------------- int __stdcall sub_5A3E60(int a1, int a2) { int v2; // eax@1 int v3; // eax@3 int v4; // esi@3 int v5; // esi@5 int v7; // [sp-4h] [bp-38h]@2 char v8; // [sp+10h] [bp-24h]@7 int v9; // [sp+24h] [bp-10h]@1 int v10; // [sp+30h] [bp-4h]@1 v9 = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a1 + 4); v10 = 0; if ( v2 == -1 ) { --dword_750CB8; v7 = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD"; } else { v3 = sub_54E4D0(&unk_13253630, v2); v4 = v3; if ( v3 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) ) { v5 = sub_409730(v4); if ( v5 ) { if ( *(_BYTE *)(a1 + 22) ) { sub_59AFC0(&v8); sub_59B020(&v8, v5, a1 + 12); } sub_55E340(v5, *(_BYTE *)(a1 + 16)); sub_55EA10(v5, *(_BYTE *)(a1 + 17)); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 2792))(v5, *(_DWORD *)(a1 + 18)); } } } --dword_750CB8; v7 = (int)"WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD"; } v10 = -1; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A3F80) -------------------------------------------------------- int __stdcall sub_5A3F80(int a1, int a2) { int v2; // esi@1 __int16 v3; // ST08_2@1 void *v4; // eax@1 int v5; // ebx@3 int v6; // edi@4 void *v7; // ebx@11 int v8; // eax@13 int v9; // edi@13 int v10; // eax@14 char v11; // al@17 int v12; // esi@18 int v14; // [sp-4h] [bp-58h]@2 char v15; // [sp+10h] [bp-44h]@11 char v16; // [sp+1Ch] [bp-38h]@3 char v17; // [sp+28h] [bp-2Ch]@11 int v18; // [sp+34h] [bp-20h]@1 int *v19; // [sp+38h] [bp-1Ch]@1 int v20; // [sp+3Ch] [bp-18h]@5 void *v21; // [sp+40h] [bp-14h]@1 int v22; // [sp+44h] [bp-10h]@3 int v23; // [sp+50h] [bp-4h]@1 v18 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = *(_WORD *)(a1 + 4); v23 = 0; v19 = (int *)(a1 + 6); v4 = (void *)sub_5CB1E0(v3, (unsigned __int16 *)(a1 + 6)); v21 = v4; if ( v4 ) { sub_639BF0(v4, (int)&v16); v5 = v2 + 14; v22 = 5; do { v6 = *(_DWORD *)v5; if ( *(_DWORD *)v5 != -1 ) { sub_639EC0((int)&v16, (int)&v20); if ( v20 != -1 ) { if ( v20 != v6 && !sub_63A8C0(v21, v20, v6, (int)&a1) ) sub_639100( &unk_86DDD8, (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD swap error", *(_WORD *)(v2 + 4)); sub_639A70((int)&v16); } } v5 += 4; --v22; } while ( v22 ); v7 = v21; sub_639BF0(v21, (int)&v17); sub_639C10(v7, (int)&v15); while ( sub_639F40((int)&v17, (int)&v15) ) { if ( sub_639EC0((int)&v17, (int)&a1) ) { v8 = sub_54E4D0(&unk_13253630, a1); v9 = v8; if ( v8 ) { v10 = (**(int (__thiscall ***)(_DWORD))v8)(v8); if ( v10 ) { while ( (_UNKNOWN *)v10 != &unk_132541F4 ) { v10 = *(_DWORD *)(v10 + 4); if ( !v10 ) goto LABEL_17; } v11 = 1; } else { LABEL_17: v11 = 0; } v12 = v11 != 0 ? v9 : 0; if ( v11 != 0 ? v9 : 0 ) { sub_5CAD90(v11 != 0 ? v9 : 0); sub_5CAF20(v12); } } } sub_639A70((int)&v17); } sub_484580((int)&unk_D714FF8, *(_WORD *)v19, 0, *((_WORD *)v7 + 2), 3); v23 = -1; v14 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD"; } else { sub_639100(&unk_86DDD8, (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD Not Make Raid", *(_WORD *)(v2 + 4)); v23 = -1; v14 = (int)"WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v14); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A4180) -------------------------------------------------------- int __stdcall sub_5A4180(int a1, int a2) { int v2; // edi@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // dx@2 int v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // ST14_2@3 bool v8; // zf@4 int v9; // ecx@4 int v10; // ecx@5 void *v11; // eax@7 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = dword_13253824; v3 = *(_WORD *)(*(_DWORD *)(dword_13253824 + 8) + 12 * *(_WORD *)(dword_13253824 + 14) + 4); while ( 1 ) { v4 = *(_WORD *)(v2 + 4); if ( v3 >= v4 ) break; v5 = *(_DWORD *)(v2 + 8); v6 = v3; v7 = v3; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v7 >= v4 || (v8 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0, v9 = v5 + 12 * v6, v8) ) v10 = 0; else v10 = *(_DWORD *)v9; v11 = (void *)(*(int (**)(void))(*(_DWORD *)v10 + 2056))(); sub_5BB640(v11, a1 + 2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_QUEST_RESET_TIME_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253824: using guessed type int dword_13253824; //----- (005A4290) -------------------------------------------------------- int (__stdcall **__thiscall sub_5A4290(int this))(int, int) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6F4598; *(_DWORD *)(this + 248) = &off_6F4588; sub_64C830(this + 224); return sub_64C2E0((SOCKET *)(v1 + 44)); } // 6F4588: using guessed type int (__stdcall *off_6F4588)(int, int); // 6F4598: using guessed type int (__stdcall *off_6F4598)(int); //----- (005A4300) -------------------------------------------------------- signed int __thiscall sub_5A4300(int this) { SOCKET *v1; // esi@1 v1 = (SOCKET *)(this + 44); sub_64BDF0((SOCKET *)(this + 44)); return sub_64BF40(v1); } //----- (005A4320) -------------------------------------------------------- signed int __thiscall sub_5A4320(int this, int a2, unsigned int a3) { return sub_64C4B0((void *)(this + 44), a2, a3); } //----- (005A4330) -------------------------------------------------------- signed int __thiscall sub_5A4330(void *this) { void *v1; // esi@1 int v2; // ebx@1 int v3; // eax@1 int v5; // [sp+Ch] [bp-4h]@1 v1 = this; v2 = sub_64CB30((int)((char *)this + 224)); v3 = sub_64CB20((int)((char *)v1 + 224)); return sub_64BCD0((char *)v1 + 44, (LPVOID)v2, v3, (int)&v5); } //----- (005A4370) -------------------------------------------------------- signed int __thiscall sub_5A4370(int this, void *a2) { int v2; // esi@1 int v4; // eax@4 const char *v5; // [sp-10h] [bp-9Ch]@2 int v6; // [sp-Ch] [bp-98h]@2 char v7; // [sp+8h] [bp-84h]@3 unsigned int v8; // [sp+88h] [bp-4h]@1 int v9; // [sp+8Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_64CC60(a2, *(HANDLE *)(this + 44), *(_DWORD *)(this + 44)) ) { v6 = sub_64B8B0(0, 1); v5 = "ERROR - Socket_Register_To_IOCP Step #1, %s"; LABEL_3: sprintf(&v7, v5, v6); sub_64BC90(1, "Msg", "%s", &v7); return 0; } v4 = sub_64CB20(v2 + 224); if ( !sub_64BCD0((void *)(v2 + 44), *(LPVOID *)(v2 + 228), v4, 0) ) { v6 = sub_64B8B0(0, 1); v5 = "ERROR - Socket_Register_To_IOCP Step #2, %s"; goto LABEL_3; } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005A4430) -------------------------------------------------------- signed int __thiscall sub_5A4430(int this, int a2) { int v2; // esi@1 DWORD v3; // eax@2 signed int result; // eax@4 int v5; // ecx@5 v2 = this; if ( !*(_DWORD *)(this + 4) ) return 1; v3 = timeGetTime(); if ( v3 - *(_DWORD *)(v2 + 36) < 0x7530 ) { *(_DWORD *)(v2 + 252) = 0; return 1; } v5 = *(_DWORD *)(v2 + 252); if ( v5 ) { result = v3 - v5 < 0x2BF20; } else { *(_DWORD *)(v2 + 252) = v3; result = sub_64C4B0((void *)(v2 + 44), (int)&unk_86ADD8, 3u); } return result; } //----- (005A4490) -------------------------------------------------------- signed int __stdcall sub_5A4490(int a1, int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@3 int v6; // ecx@9 v2 = *(_DWORD *)(a1 + 28); if ( *(_DWORD *)(v2 + 4) == 3 ) return 0; v3 = *(_DWORD *)(a1 + 20); if ( v3 ) { v4 = v3 - 1; if ( !v4 ) { *(_DWORD *)(v2 + 40) = timeGetTime(); sub_64C000(v2 + 44, a2); return 1; } if ( v4 == 1 ) { LABEL_5: *(_DWORD *)(v2 + 4) = 3; return 0; } } else { *(_DWORD *)(v2 + 36) = timeGetTime(); if ( !a2 ) goto LABEL_5; *(_DWORD *)(v2 + 244) += a2; v6 = *(_DWORD *)(v2 + 244); if ( *(_DWORD *)(v2 + 232) - v6 > 0 ) sub_64BCD0((void *)(v2 + 44), (LPVOID)(v6 + *(_DWORD *)(v2 + 228)), *(_DWORD *)(v2 + 232) - v6, 0); } return 1; } //----- (005A4520) -------------------------------------------------------- bool __thiscall sub_5A4520(int this, const char *cp, u_short hostshort, const char *a4, u_short a5, void *a6) { int v6; // edi@1 v6 = this; sub_64BDF0((SOCKET *)(this + 44)); sub_64BF40((SOCKET *)(v6 + 44)); (*(void (__thiscall **)(int))(*(_DWORD *)(v6 + 224) + 44))(v6 + 224); return sub_64C370((SOCKET *)(v6 + 44), cp, hostshort, a4, a5) && (!a6 || sub_5A4370(v6, a6)); } //----- (005A4590) -------------------------------------------------------- void *__thiscall sub_5A4590(void *this) { void *v1; // esi@1 DWORD v2; // eax@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@1 v1 = this; *(_DWORD *)this = &off_6F4598; sub_64C1E0((int)((char *)this + 44)); sub_64CB40((int)((char *)v1 + 224)); *((_DWORD *)v1 + 62) = &off_6F4600; *((_DWORD *)v1 + 2) = 10; *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *((_DWORD *)v1 + 1) = 0; GetLocalTime((LPSYSTEMTIME)((char *)v1 + 20)); *((_DWORD *)v1 + 9) = timeGetTime(); v2 = timeGetTime(); v3 = *((_DWORD *)v1 + 29); *((_DWORD *)v1 + 10) = v2; *((_DWORD *)v1 + 63) = 0; *(_DWORD *)v3 = (char *)v1 + 248; v4 = *((_DWORD *)v1 + 37); *((_DWORD *)v1 + 30) = v1; *(_DWORD *)v4 = (char *)v1 + 248; v5 = *((_DWORD *)v1 + 45); *((_DWORD *)v1 + 38) = v1; *(_DWORD *)v5 = (char *)v1 + 248; *((_DWORD *)v1 + 46) = v1; return v1; } // 6F4598: using guessed type int (__stdcall *off_6F4598)(int); // 6F4600: using guessed type int (__stdcall *off_6F4600)(int, int); //----- (005A4660) -------------------------------------------------------- int __thiscall sub_5A4660(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6F4610; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; return result; } // 6F4610: using guessed type int (__stdcall *off_6F4610)(int, int); //----- (005A4680) -------------------------------------------------------- void __thiscall sub_5A4680(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 4) ) { operator delete(*(void **)(this + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; } } //----- (005A46B0) -------------------------------------------------------- void __thiscall sub_5A46B0(int this, HANDLE *a2) { int v2; // esi@1 int v3; // edi@2 v2 = *(_DWORD *)(this + 16); if ( v2 ) { do { v3 = *(_DWORD *)(v2 + 4); if ( !(***(int (__stdcall ****)(_DWORD))(v2 + 8))(30) ) sub_64BEB0(*(_DWORD *)(v2 + 8) + 44, a2); v2 = v3; } while ( v3 ); } } //----- (005A4720) -------------------------------------------------------- signed int __thiscall sub_5A4720(int this, signed int a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // eax@4 signed int v5; // ecx@4 int v6; // eax@5 int v7; // edx@5 int v8; // eax@12 v2 = this; v3 = 0; if ( *(_DWORD *)(this + 4) ) { operator delete(*(void **)(this + 4)); *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)(v2 + 16) = 0; *(_DWORD *)(v2 + 20) = 0; } if ( a2 >= 1 ) { v4 = unknown_libname_130(12 * a2 | -((unsigned __int8)(12 * (unsigned __int64)(unsigned int)a2 >> 32) != 0)); v5 = 0; for ( *(_DWORD *)(v2 + 4) = v4; v5 < a2; ++v5 ) { v6 = 12 * v5; *(_DWORD *)(12 * v5 + *(_DWORD *)(v2 + 4) + 8) = v3; v7 = *(_DWORD *)(v2 + 4); if ( v5 == v3 ) { *(_DWORD *)v7 = v3; } else { *(_DWORD *)(v7 + v6) = v7 + v6 - 12; v3 = 0; } if ( v5 == a2 - 1 ) *(_DWORD *)(v6 + *(_DWORD *)(v2 + 4) + 4) = v3; else *(_DWORD *)(*(_DWORD *)(v2 + 4) + v6 + 4) = *(_DWORD *)(v2 + 4) + v6 + 12; } v8 = *(_DWORD *)(v2 + 4); *(_DWORD *)(v2 + 8) = a2; *(_DWORD *)(v2 + 12) = v3; *(_DWORD *)(v2 + 20) = v8; *(_DWORD *)(v2 + 16) = v3; } return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (005A47D0) -------------------------------------------------------- FILE *__thiscall sub_5A47D0(int this, int a2) { FILE *result; // eax@1 int v3; // esi@1 int v4; // eax@2 int v5; // ecx@6 int v6; // ecx@8 result = (FILE *)a2; v3 = this; if ( a2 ) { if ( *(_DWORD *)a2 ) *(_DWORD *)(*(_DWORD *)a2 + 4) = *(_DWORD *)(a2 + 4); else *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 4); v5 = *(_DWORD *)(a2 + 4); if ( v5 ) *(_DWORD *)v5 = *(_DWORD *)a2; *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v3 + 16); v6 = *(_DWORD *)(v3 + 16); if ( v6 ) *(_DWORD *)v6 = a2; ++*(_DWORD *)(v3 + 12); *(_DWORD *)(v3 + 16) = a2; } else { v4 = sub_64B920(a2); result = sub_64BC90(1, "Msg", "%s%s", "* NULL Session List used - CSocket_Session_Manager::CutFromEmpty *", v4); ++*(_DWORD *)(v3 + 12); } return result; } //----- (005A4850) -------------------------------------------------------- int __thiscall sub_5A4850(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@2 int v5; // eax@3 int result; // eax@3 int v7; // eax@4 v3 = this; if ( *(_DWORD *)(this + 8) > *(_DWORD *)(this + 12) && (v4 = *(_DWORD *)(this + 20)) != 0 ) { (*(void (__thiscall **)(int))(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 224) + 44))(*(_DWORD *)(v4 + 8) + 224); *(_DWORD *)(*(_DWORD *)(v4 + 8) + 44) = a2; v5 = *(_DWORD *)(v4 + 8); *(_DWORD *)(v5 + 48) = *(_DWORD *)a3; *(_DWORD *)(v5 + 52) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v5 + 56) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v5 + 60) = *(_DWORD *)(a3 + 12); *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4) = 2; sub_5A47D0(v3, v4); result = v4; } else { v7 = sub_64B920(0); sub_64BC90(1, "Msg", "%s%s", "* ACCEPT NO SESSION BUFFER - ERROR *", v7); result = 0; } return result; } //----- (005A48F0) -------------------------------------------------------- int __thiscall sub_5A48F0(int this, int a2) { int result; // eax@1 int v3; // edx@5 int v4; // edx@7 result = a2; if ( a2 ) { if ( *(_DWORD *)a2 ) *(_DWORD *)(*(_DWORD *)a2 + 4) = *(_DWORD *)(a2 + 4); else *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(a2 + 4); if ( v3 ) *(_DWORD *)v3 = *(_DWORD *)a2; } *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = *(_DWORD *)(this + 20); v4 = *(_DWORD *)(this + 20); if ( v4 ) *(_DWORD *)v4 = a2; *(_DWORD *)(this + 20) = a2; --*(_DWORD *)(this + 12); return result; } //----- (005A4940) -------------------------------------------------------- void *__thiscall sub_5A4940(void *this) { void *v1; // esi@1 v1 = this; sub_5A4590(this); *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 4) = 0; *(_DWORD *)v1 = &off_6F4690; *((_DWORD *)v1 + 2) = 3; return v1; } // 6F4690: using guessed type int (__stdcall *off_6F4690)(int); //----- (005A4980) -------------------------------------------------------- int __stdcall sub_5A4980(void *a1, int a2) { signed int i; // edi@1 void *v3; // eax@2 int result; // eax@2 unsigned __int16 v5; // ax@9 int v6; // eax@9 int v7; // eax@10 int v8; // eax@12 int v9; // eax@12 int v10; // ST08_4@12 void *v11; // eax@12 void *v12; // eax@12 void *v13; // eax@12 int v14; // [sp-1Ch] [bp-190h]@2 int *v15; // [sp-18h] [bp-18Ch]@2 int v16; // [sp-14h] [bp-188h]@2 signed int v17; // [sp-10h] [bp-184h]@2 int v18; // [sp-Ch] [bp-180h]@2 signed int v19; // [sp-8h] [bp-17Ch]@2 unsigned int v20; // [sp-4h] [bp-178h]@1 int *v21; // [sp+Ch] [bp-168h]@2 void *v22; // [sp+10h] [bp-164h]@1 int v23; // [sp+14h] [bp-160h]@12 int v24; // [sp+7Ch] [bp-F8h]@12 char v25; // [sp+80h] [bp-F4h]@12 char v26; // [sp+94h] [bp-E0h]@12 int v27; // [sp+98h] [bp-DCh]@12 char v28; // [sp+E4h] [bp-90h]@12 unsigned int v29; // [sp+164h] [bp-10h]@1 int v30; // [sp+170h] [bp-4h]@2 int v31; // [sp+174h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v20 = (unsigned int)&v31 ^ __security_cookie; v22 = a1; for ( i = 0; ; ++i ) { v19 = i; v21 = &v14; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; strncpy((char *)&v14, "LinkTable", 0x14u); v30 = 0; v3 = sub_4C48A0(dword_D9FBF28); v30 = -1; result = sub_6442C0(v3, v14, (int)v15, v16, v17, v18, v19); if ( !result ) break; if ( *(_DWORD *)result == *(_DWORD *)(a2 + 17) && *(_DWORD *)(result + 4) == *(_DWORD *)(a2 + 21) && *(_DWORD *)(result + 8) == *(_DWORD *)(a2 + 25) && *(_DWORD *)(result + 12) == *(_DWORD *)(a2 + 29) && *(_DWORD *)(result + 16) == *(_DWORD *)(a2 + 33) ) { v5 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)(result + 53)); v6 = sub_4190D0((int)&unk_14D20370, v5); if ( v6 ) v7 = v6 + 14; else v7 = (int)byte_6A492E; v19 = v7; v8 = sub_48C200(&unk_15090128, "LinkTitle"); sprintf(&v28, (const char *)v8, v19); v24 = *(_DWORD *)(a2 + 13); sub_649DA0(a2 + 17, (int)&v25); v9 = *(_DWORD *)(a2 + 9); v19 = 1000; v18 = 0; v17 = 65535; v16 = 0; v15 = &v23; v26 = 0; v27 = v9; v14 = sub_48C200(&unk_150A0980, "No"); v10 = sub_48C200(&unk_150A0980, off_6B5A90); v11 = sub_54CA20(v22, &v28); v12 = sub_54CB10(v11, (int)sub_50D860, (const char *)v10, &v24); v13 = sub_54CB10(v12, (int)sub_50D4B0, (const char *)v14, v15); return (int)sub_54CC20(v13, v16, v17, v18, v19); } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005A4B40) -------------------------------------------------------- int __stdcall sub_5A4B40(void *a1, int a2) { int v3; // [sp-4h] [bp-24h]@3 sub_4675D0((int)&unk_D020420, (int)"ZoneConnectSession::zcs_Send"); dword_7508B8[dword_750CB8] = (int)"ZoneConnectSession::zcs_Send"; dword_750AB8[dword_750CB8++] = -1; if ( dword_13359E34 == -1 ) { dword_13359E0C = 0; sub_5A7620(byte_14D16AE8, (int)&unk_13359E08); if ( !dword_13359E0C ) { v3 = (int)"ZoneConnectSession::zcs_Send"; goto LABEL_9; } dword_13359E2C = timeGetTime(); } if ( sub_4C81E0(a1, a2) ) sub_4C7EC0(a1, (int)&unk_13359E08); else sub_639100(&unk_86DDD8, (int)"ZoneConnectSession::zcs_Send : Packet Too Long", a2); v3 = (int)"ZoneConnectSession::zcs_Send"; LABEL_9: --dword_750CB8; return sub_467660((int)&unk_D020420, v3); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13359E0C: using guessed type int dword_13359E0C; // 13359E2C: using guessed type int dword_13359E2C; // 13359E34: using guessed type int dword_13359E34; //----- (005A4C40) -------------------------------------------------------- int __thiscall sub_5A4C40(void *this, int a2, int a3) { int v3; // esi@3 int v4; // eax@3 int v5; // ecx@4 _BYTE *v6; // ecx@4 int v7; // eax@7 _BYTE *v8; // eax@7 char *v9; // esi@7 int v10; // ecx@7 int v12; // [sp-4h] [bp-28h]@2 void *v13; // [sp+14h] [bp-10h]@1 v13 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketSummonPlayer::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketSummonPlayer::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v3 = a3 + 9; v4 = sub_54E5A0(&unk_13253630, a3 + 9); if ( v4 ) { v5 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v5; v6 = &byte_85A2C0[256 * v5]; *(_DWORD *)v6 = *(_DWORD *)v3; *((_DWORD *)v6 + 1) = *(_DWORD *)(a3 + 13); *((_DWORD *)v6 + 2) = *(_DWORD *)(a3 + 17); *((_DWORD *)v6 + 3) = *(_DWORD *)(a3 + 21); *((_DWORD *)v6 + 4) = *(_DWORD *)(a3 + 25); v6[20] = 0; if ( *(_DWORD *)(v4 + 122) ) (*(void (__stdcall **)(int, int))(*(_DWORD *)v13 + 4))(a2, a3); else (*(void (__stdcall **)(int, int))(*(_DWORD *)v13 + 8))(a2, a3); } else { v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = *(_DWORD *)v3; *((_DWORD *)v8 + 1) = *(_DWORD *)(a3 + 13); *((_DWORD *)v8 + 2) = *(_DWORD *)(a3 + 17); *((_DWORD *)v8 + 3) = *(_DWORD *)(a3 + 21); *((_DWORD *)v8 + 4) = *(_DWORD *)(a3 + 25); v8[20] = 0; v9 = (char *)off_849C18 + 2; v10 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = 4202; sub_45AB20(v10, a3 + 2); *v9 = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v9 + 1) = *(_WORD *)(a2 + 4); *(_DWORD *)(v9 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); sub_5A4B40(&off_849C18, 49); } --dword_750CB8; v12 = (int)"ZoneRingPacketSummonPlayer::zrpb_Request"; } else { --dword_750CB8; v12 = (int)"ZoneRingPacketSummonPlayer::zrpb_Request"; } return sub_467660((int)&unk_D020420, v12); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005A4E00) -------------------------------------------------------- int __thiscall sub_5A4E00(void *this, int a2, int a3) { int v3; // esi@3 int v4; // edi@3 _BYTE *v5; // eax@3 int v6; // eax@5 int v7; // eax@5 int v8; // eax@5 int v9; // edx@5 int v10; // eax@5 __int16 v11; // ax@6 int v12; // eax@6 int v13; // eax@7 void *v14; // edi@11 int v16; // [sp-8h] [bp-64h]@2 unsigned int v17; // [sp-4h] [bp-60h]@1 void *v18; // [sp+10h] [bp-4Ch]@1 char v19; // [sp+18h] [bp-44h]@9 int v20; // [sp+21h] [bp-3Bh]@5 int v21; // [sp+25h] [bp-37h]@5 int v22; // [sp+29h] [bp-33h]@5 int v23; // [sp+2Dh] [bp-2Fh]@5 int v24; // [sp+31h] [bp-2Bh]@5 int v25; // [sp+35h] [bp-27h]@5 int v26; // [sp+39h] [bp-23h]@5 int v27; // [sp+3Dh] [bp-1Fh]@5 int v28; // [sp+41h] [bp-1Bh]@5 int v29; // [sp+45h] [bp-17h]@5 unsigned int v30; // [sp+4Ch] [bp-10h]@1 int v31; // [sp+58h] [bp-4h]@1 int v32; // [sp+5Ch] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v17 = (unsigned int)&v32 ^ __security_cookie; v18 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindPlayer::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindPlayer::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; v31 = 0; if ( a2 ) { v3 = a3 + 9; v4 = sub_54E5A0(&unk_13253630, a3 + 9); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = &byte_85A2C0[256 * dword_8622C0]; if ( v4 ) { *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(a3 + 13); *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 17); *((_DWORD *)v5 + 3) = *(_DWORD *)(a3 + 21); *((_DWORD *)v5 + 4) = *(_DWORD *)(a3 + 25); v5[20] = 0; if ( *(_DWORD *)(v4 + 122) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); v25 = *(_DWORD *)v6; v26 = *(_DWORD *)(v6 + 4); v27 = *(_DWORD *)(v6 + 8); v28 = *(_DWORD *)(v6 + 12); v29 = *(_DWORD *)(v6 + 16); v7 = *(_DWORD *)(v4 + 122); v20 = *(_DWORD *)v7; v21 = *(_DWORD *)(v7 + 4); v22 = *(_DWORD *)(v7 + 8); v8 = *(_DWORD *)(v4 + 102); v23 = *(_DWORD *)v8; v9 = *(_DWORD *)(v8 + 4); v10 = *(_DWORD *)v4; v24 = v9; if ( (unsigned __int8)(*(int (__thiscall **)(int))(v10 + 304))(v4) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 312))(v4); v12 = sub_54DE90(&unk_13253630, v11); if ( !v12 || (v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 332))(v12)) == 0 ) goto LABEL_12; v20 = *(_DWORD *)v13; v21 = *(_DWORD *)(v13 + 4); v22 = *(_DWORD *)(v13 + 8); v23 = *(_DWORD *)(v13 + 12); v24 = *(_DWORD *)(v13 + 16); } (*(void (__stdcall **)(int, char *))(*(_DWORD *)v18 + 4))(a2, &v19); } else { (*(void (__stdcall **)(int, int))(*(_DWORD *)v18 + 8))(a2, a3); } } else { v14 = off_849C18; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(a3 + 13); *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 17); *((_DWORD *)v5 + 3) = *(_DWORD *)(a3 + 21); *((_DWORD *)v5 + 4) = *(_DWORD *)(a3 + 25); v5[20] = 0; *(_WORD *)v14 = 4200; *(_DWORD *)((char *)v14 + 2) = *(_DWORD *)(a3 + 2); *((_WORD *)v14 + 3) = *(_WORD *)(a3 + 6); *((_BYTE *)v14 + 8) = *(_BYTE *)(a3 + 8); *(_DWORD *)((char *)v14 + 9) = *(_DWORD *)v3; *(_DWORD *)((char *)v14 + 13) = *(_DWORD *)(a3 + 13); *(_DWORD *)((char *)v14 + 17) = *(_DWORD *)(a3 + 17); *(_DWORD *)((char *)v14 + 21) = *(_DWORD *)(a3 + 21); *(_DWORD *)((char *)v14 + 25) = *(_DWORD *)(a3 + 25); *((_BYTE *)v14 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v14 + 3) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v14 + 5) = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)a2 + 836))(v17); sub_5A4B40(&off_849C18, 29); } LABEL_12: --dword_750CB8; v31 = -1; v16 = (int)"ZoneRingPacketFindPlayer::zrpb_Request"; return sub_467660((int)&unk_D020420, v16); } --dword_750CB8; v31 = -1; v16 = (int)"ZoneRingPacketFindPlayer::zrpb_Request"; return sub_467660((int)&unk_D020420, v16); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A50A0) -------------------------------------------------------- int __thiscall sub_5A50A0(void *this, int a2, int a3) { int v3; // esi@3 int v4; // edi@3 _BYTE *v5; // eax@3 int v6; // eax@5 int v7; // eax@5 int v8; // eax@5 int v9; // edx@5 int v10; // eax@5 char v11; // al@5 int v12; // edx@5 __int16 v13; // ax@6 int v14; // eax@6 int v15; // eax@7 void *v16; // edi@11 int v18; // [sp-8h] [bp-64h]@2 unsigned int v19; // [sp-4h] [bp-60h]@1 void *v20; // [sp+10h] [bp-4Ch]@1 char v21; // [sp+18h] [bp-44h]@9 int v22; // [sp+21h] [bp-3Bh]@5 int v23; // [sp+25h] [bp-37h]@5 int v24; // [sp+29h] [bp-33h]@5 int v25; // [sp+2Dh] [bp-2Fh]@5 int v26; // [sp+31h] [bp-2Bh]@5 int v27; // [sp+35h] [bp-27h]@5 int v28; // [sp+39h] [bp-23h]@5 int v29; // [sp+3Dh] [bp-1Fh]@5 int v30; // [sp+41h] [bp-1Bh]@5 int v31; // [sp+45h] [bp-17h]@5 bool v32; // [sp+49h] [bp-13h]@5 unsigned int v33; // [sp+4Ch] [bp-10h]@1 int v34; // [sp+58h] [bp-4h]@1 int v35; // [sp+5Ch] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v19 = (unsigned int)&v35 ^ __security_cookie; v20 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; if ( a2 ) { v3 = a3 + 9; v4 = sub_54E5A0(&unk_13253630, a3 + 9); dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v5 = &byte_85A2C0[256 * dword_8622C0]; if ( v4 ) { *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(a3 + 13); *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 17); *((_DWORD *)v5 + 3) = *(_DWORD *)(a3 + 21); *((_DWORD *)v5 + 4) = *(_DWORD *)(a3 + 25); v5[20] = 0; if ( *(_DWORD *)(v4 + 122) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); v27 = *(_DWORD *)v6; v28 = *(_DWORD *)(v6 + 4); v29 = *(_DWORD *)(v6 + 8); v30 = *(_DWORD *)(v6 + 12); v31 = *(_DWORD *)(v6 + 16); v7 = *(_DWORD *)(v4 + 122); v22 = *(_DWORD *)v7; v23 = *(_DWORD *)(v7 + 4); v24 = *(_DWORD *)(v7 + 8); v8 = *(_DWORD *)(v4 + 102); v25 = *(_DWORD *)v8; v9 = *(_DWORD *)(v8 + 4); v10 = *(_DWORD *)v4; v26 = v9; v11 = (*(int (__thiscall **)(int))(v10 + 2680))(v4); v12 = *(_DWORD *)v4; v32 = v11 == 1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(v12 + 304))(v4) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 312))(v4); v14 = sub_54DE90(&unk_13253630, v13); if ( !v14 || (v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 332))(v14)) == 0 ) goto LABEL_12; v22 = *(_DWORD *)v15; v23 = *(_DWORD *)(v15 + 4); v24 = *(_DWORD *)(v15 + 8); v25 = *(_DWORD *)(v15 + 12); v26 = *(_DWORD *)(v15 + 16); } (*(void (__stdcall **)(int, char *))(*(_DWORD *)v20 + 4))(a2, &v21); } else { (*(void (__stdcall **)(int, int))(*(_DWORD *)v20 + 8))(a2, a3); } } else { v16 = off_849C18; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(a3 + 13); *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 17); *((_DWORD *)v5 + 3) = *(_DWORD *)(a3 + 21); *((_DWORD *)v5 + 4) = *(_DWORD *)(a3 + 25); v5[20] = 0; *(_WORD *)v16 = 4269; *(_DWORD *)((char *)v16 + 2) = *(_DWORD *)(a3 + 2); *((_WORD *)v16 + 3) = *(_WORD *)(a3 + 6); *((_BYTE *)v16 + 8) = *(_BYTE *)(a3 + 8); *(_DWORD *)((char *)v16 + 9) = *(_DWORD *)v3; *(_DWORD *)((char *)v16 + 13) = *(_DWORD *)(a3 + 13); *(_DWORD *)((char *)v16 + 17) = *(_DWORD *)(a3 + 17); *(_DWORD *)((char *)v16 + 21) = *(_DWORD *)(a3 + 21); *(_DWORD *)((char *)v16 + 25) = *(_DWORD *)(a3 + 25); *((_BYTE *)v16 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v16 + 3) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v16 + 5) = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)a2 + 836))(v19); sub_5A4B40(&off_849C18, 29); } LABEL_12: --dword_750CB8; v34 = -1; v18 = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Request"; return sub_467660((int)&unk_D020420, v18); } --dword_750CB8; v34 = -1; v18 = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Request"; return sub_467660((int)&unk_D020420, v18); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5350) -------------------------------------------------------- int __thiscall sub_5A5350(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@3 int v5; // eax@3 void *v6; // eax@5 void *v7; // esi@6 int v9; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketKickPlayerOut::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketKickPlayerOut::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = a3 + 10; v5 = sub_54E5A0(&unk_13253630, a3 + 10); if ( v5 && *(_DWORD *)(v5 + 122) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1528))(v5, 1675, 0, 0); v6 = off_849C18; *(_DWORD *)((char *)off_849C18 + 9) = *(_DWORD *)v4; *(_DWORD *)((char *)v6 + 13) = *(_DWORD *)(a3 + 14); *(_DWORD *)((char *)v6 + 17) = *(_DWORD *)(a3 + 18); *(_DWORD *)((char *)v6 + 21) = *(_DWORD *)(a3 + 22); *(_DWORD *)((char *)v6 + 25) = *(_DWORD *)(a3 + 26); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, a2, v6); } else { v7 = off_849C18; *(_WORD *)off_849C18 = 4200; *(_DWORD *)((char *)v7 + 2) = *(_DWORD *)(a3 + 2); *((_WORD *)v7 + 3) = *(_WORD *)(a3 + 6); *((_BYTE *)v7 + 8) = *(_BYTE *)(a3 + 8); *((_BYTE *)v7 + 9) = *(_BYTE *)(a3 + 9); *(_DWORD *)((char *)v7 + 10) = *(_DWORD *)v4; *(_DWORD *)((char *)v7 + 14) = *(_DWORD *)(a3 + 14); *(_DWORD *)((char *)v7 + 18) = *(_DWORD *)(a3 + 18); *(_DWORD *)((char *)v7 + 22) = *(_DWORD *)(a3 + 22); *(_DWORD *)((char *)v7 + 26) = *(_DWORD *)(a3 + 26); *((_BYTE *)v7 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v7 + 3) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v7 + 5) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); sub_5A4B40(&off_849C18, 30); } --dword_750CB8; v9 = (int)"ZoneRingPacketKickPlayerOut::zrpb_Request"; } else { --dword_750CB8; v9 = (int)"ZoneRingPacketKickPlayerOut::zrpb_Request"; } return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A54F0) -------------------------------------------------------- int __thiscall sub_5A54F0(void *this, int a2, int a3) { void *v3; // ebx@1 void *v4; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketItemBonus::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketItemBonus::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a3; *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)(a3 + 2); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(a3 + 6); *((_BYTE *)v4 + 10) = *(_BYTE *)(a3 + 10); if ( a2 ) { *((_BYTE *)v4 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v4 + 3) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v4 + 5) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); } sub_5A4B40(&off_849C18, 11); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, 0, a3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketItemBonus::zrpb_Request"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A5600) -------------------------------------------------------- int __thiscall sub_5A5600(void *this, int a2, int a3) { void *v3; // ebx@1 void *v4; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketExpBonus::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketExpBonus::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; *(_WORD *)off_849C18 = *(_WORD *)a3; *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)(a3 + 2); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(a3 + 6); *((_BYTE *)v4 + 10) = *(_BYTE *)(a3 + 10); if ( a2 ) { *((_BYTE *)v4 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v4 + 3) = *(_WORD *)(a2 + 4); *(_DWORD *)((char *)v4 + 5) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); } sub_5A4B40(&off_849C18, 11); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, 0, a3); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketExpBonus::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A5710) -------------------------------------------------------- int __stdcall sub_5A5710(int a1, int a2) { int v2; // eax@1 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketSummonPlayer::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketSummonPlayer::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E5A0(&unk_13253630, a2 + 9); if ( v2 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2192))(v2, a2 + 29, a2 + 41); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketSummonPlayer::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A57D0) -------------------------------------------------------- int __stdcall sub_5A57D0(int a1, int a2) { _BYTE *v2; // ecx@3 int v3; // eax@3 _BYTE *v4; // eax@3 int v6; // [sp-8h] [bp-ACh]@2 char v7; // [sp+14h] [bp-90h]@3 unsigned int v8; // [sp+94h] [bp-10h]@1 int v9; // [sp+A0h] [bp-4h]@1 int v10; // [sp+A4h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindPlayer::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindPlayer::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a1 ) { dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v2 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v2 = *(_DWORD *)(a2 + 9); *((_DWORD *)v2 + 1) = *(_DWORD *)(a2 + 13); *((_DWORD *)v2 + 2) = *(_DWORD *)(a2 + 17); v2[12] = 0; v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)(a2 + 29); *((_DWORD *)v4 + 1) = *(_DWORD *)(a2 + 33); *((_DWORD *)v4 + 2) = *(_DWORD *)(a2 + 37); *((_DWORD *)v4 + 3) = *(_DWORD *)(a2 + 41); *((_DWORD *)v4 + 4) = *(_DWORD *)(a2 + 45); v4[20] = 0; sprintf(&v7, "%s is at %s %d/%d", v4, v2, *(_DWORD *)(a2 + 21), *(_DWORD *)(a2 + 25)); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v7); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 2192))(a1, a2 + 9, a2 + 21); --dword_750CB8; v9 = -1; v6 = (int)"ZoneRingPacketFindPlayer::zrpb_Success"; } else { --dword_750CB8; v9 = -1; v6 = (int)"ZoneRingPacketFindPlayer::zrpb_Success"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5950) -------------------------------------------------------- int __stdcall sub_5A5950(int a1, int a2) { int v3; // [sp-4h] [bp-20h]@2 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 2680))(a1) == 1 && *(_BYTE *)(a2 + 49) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 2192))(a1, a2 + 9, a2 + 21); --dword_750CB8; v3 = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Success"; } else { --dword_750CB8; v3 = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Success"; } return sub_467660((int)&unk_D020420, v3); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A5A30) -------------------------------------------------------- int __stdcall sub_5A5A30(int a1, int a2) { int v2; // eax@3 _BYTE *v3; // eax@3 int v4; // ecx@3 int v6; // [sp-8h] [bp-A4h]@2 char v7; // [sp+Ch] [bp-90h]@3 unsigned int v8; // [sp+8Ch] [bp-10h]@1 int v9; // [sp+98h] [bp-4h]@1 int v10; // [sp+9Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketKickPlayerOut::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketKickPlayerOut::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a1 ) { v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *(_DWORD *)(a2 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a2 + 21); v4 = *(_DWORD *)(a2 + 25); v3[20] = 0; *((_DWORD *)v3 + 4) = v4; sprintf(&v7, "%s is banned", v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v7); --dword_750CB8; v6 = (int)"ZoneRingPacketKickPlayerOut::zrpb_Success"; } else { --dword_750CB8; v6 = (int)"ZoneRingPacketKickPlayerOut::zrpb_Success"; } v9 = -1; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5B50) -------------------------------------------------------- int __stdcall sub_5A5B50(int a1, int a2) { int v2; // eax@3 _BYTE *v3; // eax@3 int v4; // ecx@3 int v6; // [sp-8h] [bp-A4h]@2 char v7; // [sp+Ch] [bp-90h]@3 unsigned int v8; // [sp+8Ch] [bp-10h]@1 int v9; // [sp+98h] [bp-4h]@1 int v10; // [sp+9Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketSummonPlayer::zrpb_Faulure"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketSummonPlayer::zrpb_Faulure"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a1 ) { v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *(_DWORD *)(a2 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a2 + 21); v4 = *(_DWORD *)(a2 + 25); v3[20] = 0; *((_DWORD *)v3 + 4) = v4; sprintf(&v7, "%s is not in game", v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v7); --dword_750CB8; v6 = (int)"ZoneRingPacketSummonPlayer::zrpb_Faulure"; } else { --dword_750CB8; v6 = (int)"ZoneRingPacketSummonPlayer::zrpb_Faulure"; } v9 = -1; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5C70) -------------------------------------------------------- int __stdcall sub_5A5C70(int a1, int a2) { int v2; // eax@3 _BYTE *v3; // eax@3 int v4; // ecx@3 int v6; // [sp-8h] [bp-A4h]@2 char v7; // [sp+Ch] [bp-90h]@3 unsigned int v8; // [sp+8Ch] [bp-10h]@1 int v9; // [sp+98h] [bp-4h]@1 int v10; // [sp+9Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindPlayer::zrpb_Faulure"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindPlayer::zrpb_Faulure"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a1 ) { v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *(_DWORD *)(a2 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a2 + 21); v4 = *(_DWORD *)(a2 + 25); v3[20] = 0; *((_DWORD *)v3 + 4) = v4; sprintf(&v7, "%s is not in game", v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v7); --dword_750CB8; v6 = (int)"ZoneRingPacketFindPlayer::zrpb_Faulure"; } else { --dword_750CB8; v6 = (int)"ZoneRingPacketFindPlayer::zrpb_Faulure"; } v9 = -1; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5D90) -------------------------------------------------------- int __stdcall sub_5A5D90(int a1, int a2) { int v2; // eax@3 _BYTE *v3; // eax@3 int v4; // ecx@3 int v6; // [sp-8h] [bp-A4h]@2 char v7; // [sp+Ch] [bp-90h]@3 unsigned int v8; // [sp+8Ch] [bp-10h]@1 int v9; // [sp+98h] [bp-4h]@1 int v10; // [sp+9Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Faulure"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Faulure"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a1 ) { v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *(_DWORD *)(a2 + 9); *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 13); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 17); *((_DWORD *)v3 + 3) = *(_DWORD *)(a2 + 21); v4 = *(_DWORD *)(a2 + 25); v3[20] = 0; *((_DWORD *)v3 + 4) = v4; sprintf(&v7, "%s is not in game", v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v7); --dword_750CB8; v6 = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Faulure"; } else { --dword_750CB8; v6 = (int)"ZoneRingPacketFindPlayerByNormalUser::zrpb_Faulure"; } v9 = -1; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5EB0) -------------------------------------------------------- int __stdcall sub_5A5EB0(int a1, int a2) { int v2; // eax@3 _BYTE *v3; // eax@3 int v4; // ecx@3 int v6; // [sp-8h] [bp-A4h]@2 char v7; // [sp+Ch] [bp-90h]@3 unsigned int v8; // [sp+8Ch] [bp-10h]@1 int v9; // [sp+98h] [bp-4h]@1 int v10; // [sp+9Ch] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketKickPlayerOut::zrpb_Faulure"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketKickPlayerOut::zrpb_Faulure"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( a1 ) { v2 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v2; v3 = &byte_85A2C0[256 * v2]; *(_DWORD *)v3 = *(_DWORD *)(a2 + 10); *((_DWORD *)v3 + 1) = *(_DWORD *)(a2 + 14); *((_DWORD *)v3 + 2) = *(_DWORD *)(a2 + 18); *((_DWORD *)v3 + 3) = *(_DWORD *)(a2 + 22); v4 = *(_DWORD *)(a2 + 26); v3[20] = 0; *((_DWORD *)v3 + 4) = v4; sprintf(&v7, "%s is not in game", v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)a1 + 1924))(a1, &v7); --dword_750CB8; v6 = (int)"ZoneRingPacketKickPlayerOut::zrpb_Faulure"; } else { --dword_750CB8; v6 = (int)"ZoneRingPacketKickPlayerOut::zrpb_Faulure"; } v9 = -1; return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A5FD0) -------------------------------------------------------- int __thiscall sub_5A5FD0(void *this, int a2, int a3) { int v3; // edi@1 int v4; // ecx@1 int v5; // esi@3 void *v6; // eax@4 int v7; // ebx@4 _BYTE *v8; // edi@5 int v9; // edx@5 int v10; // eax@7 int v11; // eax@9 int v12; // ebx@9 unsigned __int8 v13; // al@10 char v14; // al@15 int v15; // edx@15 void *v16; // edi@18 int v17; // eax@18 int v19; // [sp-18h] [bp-40h]@4 int v20; // [sp-14h] [bp-3Ch]@4 int v21; // [sp-10h] [bp-38h]@4 int v22; // [sp-Ch] [bp-34h]@4 void *v23; // [sp-8h] [bp-30h]@4 int v24; // [sp-4h] [bp-2Ch]@2 int v25; // [sp+0h] [bp-28h]@15 int v26; // [sp+4h] [bp-24h]@15 int v27; // [sp+10h] [bp-18h]@1 void *v28; // [sp+14h] [bp-14h]@1 int v29; // [sp+18h] [bp-10h]@3 int v30; // [sp+24h] [bp-4h]@1 __int16 v31; // [sp+36h] [bp+Eh]@5 v28 = this; v27 = (int)"ZoneRingPacketSummonPartner::zrpb_Request"; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketSummonPartner::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketSummonPartner::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = 0; v30 = 0; if ( a2 ) { v5 = a3; *(_BYTE *)(a3 + 33) = 1; *(_BYTE *)(a3 + 34) = byte_DA2294C; *(_WORD *)(a3 + 35) = 4047; v29 = 0; while ( 1 ) { v24 = v29; v23 = (void *)v4; v22 = v4; v21 = v4; v20 = v4; v19 = v4; strncpy((char *)&v19, "LinkTable", 0x14u); LOBYTE(v30) = 1; v6 = sub_4C48A0(dword_D9FBF28); LOBYTE(v30) = 0; v7 = sub_6442C0(v6, v19, v20, v21, v22, (int)v23, v24); if ( !v7 ) break; dword_8622C0 = dword_8622C4 & (dword_8622C0 + 1); v8 = &byte_85A2C0[256 * dword_8622C0]; *(_DWORD *)v8 = *(_DWORD *)(v5 + 13); *((_DWORD *)v8 + 1) = *(_DWORD *)(v5 + 17); v9 = *(_DWORD *)(v5 + 21); v24 = v7 + 53; *((_DWORD *)v8 + 2) = v9; v8[12] = 0; v31 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v24); if ( v31 == (unsigned __int16)sub_419100((int)&unk_14D20370, v8) ) { v10 = sub_469530((int)&dword_D020440, (const unsigned __int8 *)(v7 + 20), 0); v3 = a2; if ( v10 ) { *(_BYTE *)(v5 + 33) = *(_BYTE *)(v10 + 34); *(_BYTE *)(v5 + 34) = *(_BYTE *)(v10 + 36); } break; } ++v29; v3 = a2; v4 = 0; } v24 = *(_DWORD *)(v5 + 9); v11 = sub_54E4D0(&unk_13253630, v24); v12 = v11; if ( v11 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1240))(v11); if ( v13 >= *(_BYTE *)(v5 + 33) && v13 <= *(_BYTE *)(v5 + 34) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 2676))(v12) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 304))(v12) ) { v14 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v12 + 1156))(v12, v25, v26); v15 = *(_DWORD *)v28; v26 = v5; v25 = v3; if ( v14 ) (*(void (__cdecl **)(int, int))(v15 + 4))(v25, v26); else (*(void (__cdecl **)(int, int))(v15 + 8))(v25, v26); } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 9, 52, 4046); } } else { v16 = off_849C18; *(_WORD *)off_849C18 = 4266; *(_DWORD *)((char *)v16 + 2) = *(_DWORD *)(v5 + 2); *((_WORD *)v16 + 3) = *(_WORD *)(v5 + 6); *((_BYTE *)v16 + 8) = *(_BYTE *)(v5 + 8); *(_DWORD *)((char *)v16 + 9) = *(_DWORD *)(v5 + 9); *(_DWORD *)((char *)v16 + 13) = *(_DWORD *)(v5 + 13); *(_DWORD *)((char *)v16 + 17) = *(_DWORD *)(v5 + 17); *(_DWORD *)((char *)v16 + 21) = *(_DWORD *)(v5 + 21); *(_DWORD *)((char *)v16 + 25) = *(_DWORD *)(v5 + 25); *(_DWORD *)((char *)v16 + 29) = *(_DWORD *)(v5 + 29); *((_BYTE *)v16 + 33) = *(_BYTE *)(v5 + 33); *((_BYTE *)v16 + 34) = *(_BYTE *)(v5 + 34); *(_WORD *)((char *)v16 + 35) = *(_WORD *)(v5 + 35); *((_BYTE *)v16 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v16 + 3) = *(_WORD *)(a2 + 4); v17 = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); v24 = 37; v23 = &off_849C18; *(_DWORD *)((char *)v16 + 5) = v17; sub_5A4B40(v23, v24); } --dword_750CB8; v24 = (int)"ZoneRingPacketSummonPartner::zrpb_Request"; v30 = -1; } else { --dword_750CB8; v30 = -1; v24 = (int)"ZoneRingPacketSummonPartner::zrpb_Request"; } return sub_467660((int)&unk_D020420, v24); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // D020440: using guessed type int dword_D020440; // DA2294C: using guessed type char byte_DA2294C; //----- (005A62A0) -------------------------------------------------------- int __stdcall sub_5A62A0(int a1, int a2) { int v2; // ST28_4@1 int v3; // ebx@1 int v4; // edx@3 int v5; // eax@3 int v6; // ecx@3 _BYTE *v7; // eax@3 int v8; // eax@3 _BYTE *v9; // eax@3 int v10; // ST14_4@3 int v11; // ST08_4@3 int v12; // eax@3 void *v13; // eax@3 void *v14; // eax@3 void *v15; // eax@3 int v17; // [sp-8h] [bp-15Ch]@3 int v18; // [sp+10h] [bp-144h]@3 char v19; // [sp+70h] [bp-E4h]@3 int v20; // [sp+78h] [bp-DCh]@3 char v21; // [sp+D8h] [bp-7Ch]@3 char v22; // [sp+E0h] [bp-74h]@3 char v23; // [sp+F4h] [bp-60h]@3 char v24; // [sp+115h] [bp-3Fh]@3 int v25; // [sp+136h] [bp-1Eh]@3 int v26; // [sp+13Ah] [bp-1Ah]@3 char v27; // [sp+140h] [bp-14h]@3 unsigned int v28; // [sp+144h] [bp-10h]@1 int v29; // [sp+150h] [bp-4h]@1 int v30; // [sp+154h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketSummonPartner::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketSummonPartner::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(a2 + 9); v29 = 0; v3 = sub_54E4D0(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { memset(&v22, 0, 0x61u); v4 = *(_DWORD *)(a2 + 29); v5 = dword_8622C4 & (dword_8622C0 + 1); v25 = *(_DWORD *)(a2 + 25); dword_8622C0 = v5; v6 = *(_DWORD *)(a2 + 13); v7 = &byte_85A2C0[256 * v5]; v26 = v4; *(_DWORD *)v7 = v6; *((_DWORD *)v7 + 1) = *(_DWORD *)(a2 + 17); *((_DWORD *)v7 + 2) = *(_DWORD *)(a2 + 21); v7[12] = 0; strncpy(&v23, v7, 0xCu); v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)(a2 + 13); *((_DWORD *)v9 + 1) = *(_DWORD *)(a2 + 17); *((_DWORD *)v9 + 2) = *(_DWORD *)(a2 + 21); v9[12] = 0; strncpy(&v24, v9, 0xCu); memcpy(&v18, &v22, 0x60u); v19 = v27; memcpy(&v20, &v22, 0x60u); v21 = v27; v10 = sub_48C200(&unk_150A0980, "No"); v11 = sub_48C200(&unk_150A0980, off_6B5A90); v12 = sub_48C200(&unk_15090128, "Summons"); v13 = sub_54CA20((void *)v3, (const char *)v12); v14 = sub_54CB10(v13, (int)sub_50D9C0, (const char *)v11, &v18); v15 = sub_54CB10(v14, (int)sub_50D4B0, (const char *)v10, &v20); sub_54CC20(v15, 0, -1, 0, 1000); *(_BYTE *)(v3 + 23825) |= 4u; v17 = (int)"ZoneRingPacketSummonPartner::zrpb_Success"; } else { v17 = (int)"ZoneRingPacketSummonPartner::zrpb_Success"; } --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A64B0) -------------------------------------------------------- int __stdcall sub_5A64B0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketSummonPartner::zrpb_Faulure"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketSummonPartner::zrpb_Faulure"; dword_750AB8[dword_750CB8++] = -1; if ( a1 ) (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 776))(9, 52, *(_WORD *)(a2 + 35)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketSummonPartner::zrpb_Faulure"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A6570) -------------------------------------------------------- int __stdcall sub_5A6570(int a1, int a2) { int v2; // eax@1 void *v3; // esi@3 int v4; // eax@5 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketRefreshWeddingInfo::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketRefreshWeddingInfo::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a2 + 5)); if ( v2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 4224; *((_WORD *)v3 + 1) = *(_WORD *)(v2 + 4); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 8) ) { v4 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK : Packet Too Long", 8); } --dword_750CB8; } else { --dword_750CB8; } return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketRefreshWeddingInfo::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005A6690) -------------------------------------------------------- int __thiscall sub_5A6690(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, a2, a3); v4 = off_849C18; *(_WORD *)off_849C18 = 4273; *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)(a3 + 2); *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(a3 + 6); *((_WORD *)v4 + 5) = *(_WORD *)(a3 + 10); *((_BYTE *)v4 + 12) = *(_BYTE *)(a3 + 12); *((_BYTE *)v4 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v4 + 3) = -1; *(_DWORD *)((char *)v4 + 5) = *(_DWORD *)(a3 + 5); sub_5A4B40(&off_849C18, 13); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A6790) -------------------------------------------------------- int __stdcall sub_5A6790(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; sub_485A10((int)&unk_D714FF8, *(_DWORD *)(a2 + 9), *(_DWORD *)(a2 + 5), 0); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A6840) -------------------------------------------------------- int __stdcall sub_5A6840(int a1, int a2) { int v2; // esi@1 void *v3; // ecx@1 char v5; // [sp+Ch] [bp-110h]@1 unsigned int v6; // [sp+10Ch] [bp-10h]@1 int v7; // [sp+118h] [bp-4h]@1 int v8; // [sp+11Ch] [bp+0h]@1 v6 = (unsigned int)&v8 ^ __security_cookie; v2 = a2; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v7 = 0; sub_494EA0((void *)a2, 944); sub_507950(*(void **)(v2 + 68), (const char *)(a1 + 35), v2); sub_49D420((void *)(*(_DWORD *)(v2 + 20) + 1072), *(_DWORD *)(v2 + 20)); sub_4D5720(&v5); v3 = *(void **)(a2 + 68); LOBYTE(v7) = 1; sub_5071A0(v3, a1 + 35, &v5, a2); LOBYTE(v7) = 0; nullsub_2(&v5); --dword_750CB8; v7 = -1; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005A6950) -------------------------------------------------------- int __stdcall sub_5A6950(int a1, const char *a2, const char *a3, int a4) { char v4; // al@8 int v5; // edx@8 int v6; // eax@11 void *v7; // esi@12 int v9; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindJobDungeon::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindJobDungeon::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; if ( a1 && a2 && a3 ) { if ( a4 ) { if ( !(dword_13258984 & 1) ) { dword_13258984 |= 1u; word_13258980 = 70; atexit(nullsub_178); } v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1); v5 = *(_DWORD *)a1; if ( (1 << v4) & (unsigned __int16)word_13258980 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v5 + 2676))(a1) ) { v6 = sub_49F830(&unk_D714FF8, a2); if ( v6 ) { (*(void (__thiscall **)(int, int, const char *))(*(_DWORD *)a1 + 976))(a1, v6, a3); } else { v7 = off_849C18; *(_WORD *)off_849C18 = 17439; *((_BYTE *)v7 + 2) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v7 + 3) = *(_WORD *)(a1 + 4); *(_DWORD *)((char *)v7 + 5) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); *(_WORD *)((char *)v7 + 9) = 12481; strncpy((char *)v7 + 11, a2, 0x21u); strncpy((char *)v7 + 77, a3, 0x21u); *((_DWORD *)v7 + 11) = 0; *((_DWORD *)v7 + 12) = 0; *((_DWORD *)v7 + 13) = 0; *((_DWORD *)v7 + 14) = 0; *((_DWORD *)v7 + 15) = 0; *((_DWORD *)v7 + 16) = 0; *((_DWORD *)v7 + 17) = 0; *((_DWORD *)v7 + 18) = 0; *((_BYTE *)v7 + 76) = 0; *(_DWORD *)((char *)v7 + 110) = *(_DWORD *)a4; *((_WORD *)v7 + 57) = *(_WORD *)(a4 + 4); *((_BYTE *)v7 + 116) = *(_BYTE *)(a4 + 6); sub_5A4B40(&off_849C18, 117); } } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(a1, 17, 32, 12482); *(_DWORD *)(a4 + 3) = 2; } } --dword_750CB8; v9 = (int)"ZoneRingPacketFindJobDungeon::zrpb_Request"; } else { --dword_750CB8; v9 = (int)"ZoneRingPacketFindJobDungeon::zrpb_Request"; } return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13258980: using guessed type __int16 word_13258980; // 13258984: using guessed type int dword_13258984; //----- (005A6B60) -------------------------------------------------------- int __stdcall sub_5A6B60(int a1, int a2) { char v3; // [sp+10h] [bp-110h]@4 unsigned int v4; // [sp+110h] [bp-10h]@1 int v5; // [sp+11Ch] [bp-4h]@1 int v6; // [sp+120h] [bp+0h]@1 v4 = (unsigned int)&v6 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindJobDungeon::zrpb_Success"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindJobDungeon::zrpb_Success"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; if ( a1 && a2 ) { sub_4D5720(&v3); LOBYTE(v5) = 1; sub_494EA0((void *)a1, 950); sub_5071A0(*(void **)(a1 + 68), a2, &v3, a1); LOBYTE(v5) = 0; nullsub_2(&v3); --dword_750CB8; } else { --dword_750CB8; } v5 = -1; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketFindJobDungeon::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005A6C60) -------------------------------------------------------- int __stdcall sub_5A6C60(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 unsigned __int16 v4; // cx@1 int v5; // eax@3 bool v6; // zf@3 int v7; // eax@3 int v8; // eax@4 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketItemBonus::zrpb_Success"); v2 = dword_CFCF388; dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketItemBonus::zrpb_Success"; v3 = (unsigned __int16)word_CFCF38E; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)(v2 + 12 * v3 + 4); while ( v4 < word_CFCF384 ) { v5 = v4; v4 = *(_WORD *)(v2 + 12 * v4 + 4); v6 = *(_BYTE *)(v2 + 12 * v5 + 8) == 0; v7 = v2 + 12 * v5; if ( !v6 ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( v8 != -76 ) { *(_DWORD *)(v8 + 80) = *(_WORD *)(a2 + 9); v2 = dword_CFCF388; } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketItemBonus::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // CFCF384: using guessed type __int16 word_CFCF384; // CFCF388: using guessed type int dword_CFCF388; // CFCF38E: using guessed type __int16 word_CFCF38E; //----- (005A6D20) -------------------------------------------------------- int __stdcall sub_5A6D20(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 unsigned __int16 v4; // cx@1 int v5; // eax@3 bool v6; // zf@3 int v7; // eax@3 int v8; // eax@4 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketExpBonus::zrpb_Success"); v2 = dword_CFCF388; dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketExpBonus::zrpb_Success"; v3 = (unsigned __int16)word_CFCF38E; dword_750AB8[dword_750CB8++] = -1; v4 = *(_WORD *)(v2 + 12 * v3 + 4); while ( v4 < word_CFCF384 ) { v5 = v4; v4 = *(_WORD *)(v2 + 12 * v4 + 4); v6 = *(_BYTE *)(v2 + 12 * v5 + 8) == 0; v7 = v2 + 12 * v5; if ( !v6 ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( v8 != -76 ) { *(_DWORD *)(v8 + 76) = *(_WORD *)(a2 + 9); v2 = dword_CFCF388; } } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketExpBonus::zrpb_Success"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // CFCF384: using guessed type __int16 word_CFCF384; // CFCF388: using guessed type int dword_CFCF388; // CFCF38E: using guessed type __int16 word_CFCF38E; //----- (005A6DE0) -------------------------------------------------------- int __stdcall sub_5A6DE0(int a1, int a2) { int v2; // eax@1 void *v3; // esi@4 char v4; // dl@4 sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketRefreshWeddingInfo::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketRefreshWeddingInfo::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a2 + 5)); if ( v2 ) { if ( *(_DWORD *)(v2 + 122) ) sub_5A6570(a1, a2); } else { v3 = off_849C18; *(_WORD *)off_849C18 = 4267; *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)(a2 + 2); *((_WORD *)v3 + 3) = *(_WORD *)(a2 + 6); *((_BYTE *)v3 + 8) = *(_BYTE *)(a2 + 8); v4 = sub_5A7540(byte_14D16AE8)[16]; *(_DWORD *)((char *)v3 + 5) = a1; *((_BYTE *)v3 + 2) = v4; *(_WORD *)((char *)v3 + 3) = -1; sub_5A4B40(&off_849C18, 9); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketRefreshWeddingInfo::zrpb_Request"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A6F00) -------------------------------------------------------- int __stdcall sub_5A6F00(int a1, int a2, int a3) { int v3; // eax@3 int v4; // ecx@7 int v5; // eax@7 int v6; // eax@7 int v7; // edx@7 signed int i; // esi@8 void *v9; // eax@9 int v10; // eax@9 int v11; // esi@16 int v12; // ecx@16 int v13; // eax@16 int v14; // eax@16 int v15; // edx@16 __int16 v16; // ax@16 unsigned __int8 v17; // dl@17 int v18; // esi@19 int v19; // edi@21 int v20; // eax@21 int v21; // edi@22 int v22; // eax@22 int v23; // edi@23 int v24; // esi@23 int v25; // ecx@23 int v27; // [sp-1Ch] [bp-B8h]@9 int v28; // [sp-18h] [bp-B4h]@9 int v29; // [sp-14h] [bp-B0h]@9 int v30; // [sp-10h] [bp-ACh]@9 int v31; // [sp-Ch] [bp-A8h]@6 signed int v32; // [sp-8h] [bp-A4h]@6 unsigned int v33; // [sp-4h] [bp-A0h]@1 int *v34; // [sp+Ch] [bp-90h]@9 int v35; // [sp+10h] [bp-8Ch]@1 int v36; // [sp+14h] [bp-88h]@1 int v37; // [sp+18h] [bp-84h]@1 char v38; // [sp+1Ch] [bp-80h]@16 char v39; // [sp+30h] [bp-6Ch]@16 char v40; // [sp+7Ch] [bp-20h]@16 int v41; // [sp+80h] [bp-1Ch]@6 int v42; // [sp+84h] [bp-18h]@6 int v43; // [sp+88h] [bp-14h]@6 unsigned int v44; // [sp+8Ch] [bp-10h]@1 int v45; // [sp+98h] [bp-4h]@1 int v46; // [sp+9Ch] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v33 = (unsigned int)&v46 ^ __security_cookie; v37 = a2; v36 = a3; v35 = (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Request"; sub_4675D0((int)&unk_D020420, (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Request"); dword_7508B8[dword_750CB8] = (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Request"; dword_750AB8[dword_750CB8++] = -1; v45 = 0; v37 += 2; if ( *(_BYTE *)(a3 + 21) != *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4) ) { v23 = v37; v24 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = -23548; sub_483A20(v24, v23); *(_BYTE *)v24 = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)(v24 + 1) = *(_WORD *)(v23 + 1); v25 = *(_DWORD *)(v23 + 3); v32 = 72; *(_DWORD *)(v24 + 3) = v25; sub_5A4B40(&off_849C18, v32); goto LABEL_24; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2692))(a1) ) { v3 = 3; } else { if ( -1 == (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1360))(a1) ) { v21 = *(_DWORD *)a1; v22 = sub_48C200(&unk_150A0980, "CannotAddAnymore"); (*(void (__thiscall **)(int, int))(v21 + 1924))(a1, v22); goto LABEL_24; } v3 = 0; } v32 = v3; v31 = *(_DWORD *)(v37 + 11); v43 = 0; v42 = 0; v41 = 0; if ( sub_4860E0((int)&v41, a3, v31, v3) ) { v19 = *(_DWORD *)a1; v20 = sub_48C200(&unk_150A0980, "CannotAddAnymore"); (*(void (__thiscall **)(int, int))(v19 + 1924))(a1, v20); } else { v4 = v42; v5 = dword_8622C4 & (dword_8622C0 + 1); v32 = 33; dword_8622C0 = v5; v6 = (int)&byte_85A2C0[256 * v5]; *(_DWORD *)v6 = v41; v7 = v43; v31 = v6; *(_DWORD *)(v6 + 4) = v4; *(_DWORD *)(v6 + 8) = v7; *(_BYTE *)(v6 + 12) = 0; strncpy((char *)(v37 + 35), (const char *)v31, v32); v37 = sub_409730(a1); if ( v37 ) { for ( i = 0; ; ++i ) { v32 = i; v34 = &v27; v31 = 0; v30 = 0; v29 = 0; v28 = 0; v27 = 0; strncpy((char *)&v27, "LinkTable", 0x14u); LOBYTE(v45) = 1; v9 = sub_4C48A0(dword_D9FBF28); LOBYTE(v45) = 0; v10 = sub_6442C0(v9, v27, v28, v29, v30, v31, v32); if ( !v10 ) break; if ( *(_DWORD *)v10 == *(_DWORD *)a3 && *(_DWORD *)(v10 + 4) == *(_DWORD *)(a3 + 4) && *(_DWORD *)(v10 + 8) == *(_DWORD *)(a3 + 8) && *(_DWORD *)(v10 + 12) == *(_DWORD *)(a3 + 12) && *(_DWORD *)(v10 + 16) == *(_DWORD *)(a3 + 16) ) { v11 = v10; memcpy(&v38, (const void *)v10, 0x60u); v12 = v42; v13 = dword_8622C4 & (dword_8622C0 + 1); v40 = *(_BYTE *)(v11 + 96); dword_8622C0 = v13; v14 = (int)&byte_85A2C0[256 * v13]; *(_DWORD *)v14 = v41; v15 = v43; v32 = 33; v31 = v14; *(_DWORD *)(v14 + 4) = v12; *(_DWORD *)(v14 + 8) = v15; *(_BYTE *)(v14 + 12) = 0; strncpy(&v39, (const char *)v31, v32); v16 = *(_WORD *)(v36 + 109); if ( v16 == -1 || (v17 = *(_BYTE *)(v36 + 105), v17 <= 0u) ) { v18 = v37; if ( sub_50D430(v37, (int)&v38) ) (*(void (__thiscall **)(int, char *, signed int, signed int, signed int))(*(_DWORD *)v18 + 1536))( v18, &v38, 6, 9, 10); } else { sub_526320((void *)v37, *(_WORD *)(v37 + 4), v16, v17, (int)&v38); } break; } } } } LABEL_24: --dword_750CB8; v45 = -1; return sub_467660((int)&unk_D020420, (int)"ZoneRingPacketFindInstanceDungeon::zrpb_Request"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; //----- (005A7250) -------------------------------------------------------- int __thiscall sub_5A7250(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; return result; } //----- (005A7260) -------------------------------------------------------- __int16 __thiscall sub_5A7260(void *this, int a2, const char *a3, __int16 a4) { void *v4; // edi@1 int v5; // esi@3 __int16 result; // ax@3 v4 = this; if ( (unsigned int)a2 >= 0xC ) { sub_639100(&unk_86DDD8, (int)"ZoneIPContainer::zipc_Store : Invalid mechine", a2); loc_6391B0("ZoneIPContainer::zipc_Store"); } v5 = (int)((char *)v4 + 18 * a2); *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)v5 = 0; strncpy((char *)v5, a3, 0x10u); result = a4; *(_WORD *)(v5 + 16) = a4; return result; } //----- (005A72C0) -------------------------------------------------------- char *__thiscall sub_5A72C0(void *this) { return (char *)this + 216; } //----- (005A72D0) -------------------------------------------------------- int __thiscall sub_5A72D0(void *this, int a2) { int v2; // esi@1 void *v3; // edi@1 int result; // eax@2 int v5; // eax@3 char v6[4]; // [sp+8h] [bp-14h]@3 int v7; // [sp+Ch] [bp-10h]@3 int v8; // [sp+10h] [bp-Ch]@3 int v9; // [sp+14h] [bp-8h]@3 unsigned int v10; // [sp+18h] [bp-4h]@1 int v11; // [sp+1Ch] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = a2 + 1; v3 = this; if ( (unsigned int)(a2 + 1) < 0xC ) { v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, byte_6A492E, 0x10u); v5 = (int)((char *)v3 + 18 * v2); if ( *(_DWORD *)((char *)v3 + 18 * v2) != *(_DWORD *)v6 || *(_DWORD *)(v5 + 4) != v7 || *(_DWORD *)(v5 + 8) != v8 || *(_DWORD *)(v5 + 12) != v9 ) result = a2 + 1; else result = 0; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005A7380) -------------------------------------------------------- char __thiscall sub_5A7380(void *this, char a2, int a3, int a4) { char v4; // al@1 void *v5; // esi@1 char result; // al@4 int v7; // eax@5 int v8; // edx@5 int v9; // eax@5 v4 = a2; v5 = this; if ( a2 == 99 ) v4 = sub_5A7540(byte_14D16AE8)[16]; if ( (unsigned __int8)v4 < 0xCu ) { v7 = 9 * (unsigned __int8)v4; v8 = *(_DWORD *)((char *)v5 + 2 * v7); v9 = (int)((char *)v5 + 2 * v7); *(_DWORD *)a3 = v8; *(_DWORD *)(a3 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(a3 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(a3 + 12) = *(_DWORD *)(v9 + 12); *(_WORD *)a4 = *(_WORD *)(v9 + 16); result = 1; } else { sub_639100(&unk_86DDD8, (int)"ZoneIPContainer::zipc_Mechine2IP : Invalid machine number", (unsigned __int8)v4); result = 0; } return result; } //----- (005A73F0) -------------------------------------------------------- void *__thiscall sub_5A73F0(void *this) { void *v1; // ebx@1 int v2; // esi@1 signed int v4; // [sp+Ch] [bp-4h]@1 v1 = this; _eh_vector_constructor_iterator_(this, 0x12u, 12, (int)sub_5A7250, nullsub_2); *((_DWORD *)v1 + 57) = 0; *((_DWORD *)v1 + 56) = 0; *((_DWORD *)v1 + 55) = 0; *((_DWORD *)v1 + 54) = 0; strncpy((char *)v1 + 216, byte_6A492E, 0x10u); v2 = (int)((char *)v1 + 8); v4 = 12; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; *(_DWORD *)(v2 - 8) = 0; strncpy((char *)(v2 - 8), byte_6A492E, 0x10u); v2 += 18; --v4; } while ( v4 ); return v1; } //----- (005A7470) -------------------------------------------------------- int __thiscall sub_5A7470(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char *v4; // eax@2 int result; // eax@4 char v6[4]; // [sp+10h] [bp-14h]@2 int v7; // [sp+14h] [bp-10h]@2 int v8; // [sp+18h] [bp-Ch]@2 int v9; // [sp+1Ch] [bp-8h]@2 unsigned int v10; // [sp+20h] [bp-4h]@1 int v11; // [sp+24h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; v3 = sub_5A72D0(this, a2); if ( v3 == a2 ) { v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, byte_6A492E, 0x10u); v4 = v6; } else { v4 = (char *)v2 + 18 * v3; } *((_DWORD *)v2 + 54) = *(_DWORD *)v4; *((_DWORD *)v2 + 55) = *((_DWORD *)v4 + 1); *((_DWORD *)v2 + 56) = *((_DWORD *)v4 + 2); result = *((_DWORD *)v4 + 3); *((_DWORD *)v2 + 57) = result; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005A7500) -------------------------------------------------------- int __cdecl sub_5A7500(int a1) { FILE *v1; // esi@1 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", a1); return fclose(v1); } //----- (005A7530) -------------------------------------------------------- char *__thiscall sub_5A7530(void *this) { return (char *)this + 64; } //----- (005A7540) -------------------------------------------------------- char *__thiscall sub_5A7540(void *this) { return (char *)this + 1336; } //----- (005A7570) -------------------------------------------------------- char *__thiscall sub_5A7570(void *this) { return (char *)this + 1372; } //----- (005A7580) -------------------------------------------------------- bool __thiscall sub_5A7580(int this, int a2, int a3) { int v3; // esi@1 bool result; // al@2 v3 = this; if ( sub_649CD0(this + 64, a2, a3, *(_DWORD *)(this + 1348), *(_DWORD *)(this + 1352), *(_DWORD *)(this + 1344)) || sub_649CD0(v3 + 64, a2, a3, *(_DWORD *)(v3 + 1348), *(_DWORD *)(v3 + 1352), 0) || sub_649CD0(v3 + 64, a2, a3, *(_DWORD *)(v3 + 1348), 0, *(_DWORD *)(v3 + 1344)) ) result = 1; else result = sub_649CD0(v3 + 64, a2, a3, *(_DWORD *)(v3 + 1348), 0, 0) != 0; return result; } //----- (005A7620) -------------------------------------------------------- char __thiscall sub_5A7620(void *this, int a2) { void *v2; // edi@1 int v3; // ebx@2 int v5; // ST10_4@6 int v6; // eax@6 u_short v7; // ST10_2@6 int v8; // eax@6 int v9; // eax@6 int v10; // ST10_4@7 int v11; // eax@7 int v12; // [sp+Ch] [bp-58h]@3 char v13[4]; // [sp+10h] [bp-54h]@3 int v14; // [sp+14h] [bp-50h]@3 int v15; // [sp+18h] [bp-4Ch]@3 int v16; // [sp+1Ch] [bp-48h]@3 char v17; // [sp+20h] [bp-44h]@6 unsigned int v18; // [sp+60h] [bp-4h]@1 int v19; // [sp+64h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; v2 = this; if ( !*(_DWORD *)(a2 + 4) ) { v3 = sub_5A72D0(&unk_13258988, dword_14D17030); if ( v3 == -1 ) return 0; v16 = 0; v15 = 0; v14 = 0; *(_DWORD *)v13 = 0; strncpy(v13, byte_6A492E, 0x10u); v12 = 0; if ( !sub_5A7380(&unk_13258988, v3, (int)v13, (int)&v12) ) { sub_639100(&unk_86DDD8, (int)"zs_ServerConnect2Zone : not find nextzoneinfo", v3); return 0; } v5 = (unsigned __int16)v12; v6 = sub_45A8D0((int)byte_85A2C0, (int)v13); sprintf(&v17, "Try to connect[%s:%d] bind[%s]", v6, v5, cp); sub_5A7500((int)&v17); v7 = v12; v8 = sub_45A8D0((int)byte_85A2C0, (int)v13); LOBYTE(v9) = sub_5A4520(a2, cp, 0, (const char *)v8, v7, (char *)v2 + 1420); if ( v9 == 1 ) { v10 = (unsigned __int16)v12; v11 = sub_45A8D0((int)byte_85A2C0, (int)v13); sprintf(&v17, "Connect Success[%s:%d] bind[%s]", v11, v10, cp); sub_5A7500((int)&v17); *(_DWORD *)(a2 + 4) = 2; } } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005A7770) -------------------------------------------------------- char __thiscall sub_5A7770(int this, int a2, int a3, signed int a4) { signed int v4; // esi@1 bool v5; // zf@1 int v6; // edi@1 FILE *v8; // esi@4 int v9; // edi@6 int v10; // eax@6 bool v11; // sf@9 unsigned __int8 v12; // of@9 char v13; // [sp+Ch] [bp-70h]@2 int v14; // [sp+20h] [bp-5Ch]@4 int v15; // [sp+24h] [bp-58h]@4 int v16; // [sp+30h] [bp-4Ch]@5 int v17; // [sp+34h] [bp-48h]@1 char v18; // [sp+38h] [bp-44h]@4 unsigned int v19; // [sp+78h] [bp-4h]@1 int v20; // [sp+7Ch] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v4 = -1; v5 = *(_DWORD *)(a2 + 4) == 0; v6 = this; v17 = a2; if ( v5 ) { if ( !sub_5A7580(this, (int)&v13, a3) ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_serverconnect : No serverinfo for connect to server", a3); return 0; } sprintf(&v18, "Try to connect[%s:%d]%d", v14, v15, a3); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n", &v18); fclose(v8); v4 = 0; if ( a4 > 0 ) { v16 = v6 + 1420; while ( 1 ) { v9 = v17; LOBYTE(v10) = sub_5A4520(v17, cp, 0, (const char *)v14, v15, (void *)v16); if ( v10 ) break; Sleep(0x64u); ++v4; if ( v4 >= a4 ) goto LABEL_11; } v12 = __OFSUB__(v4, a4); v11 = v4 - a4 < 0; if ( v4 >= a4 ) return v11 ^ v12; *(_DWORD *)(v9 + 252) = timeGetTime(); *(_DWORD *)(v9 + 4) = 2; } } LABEL_11: v12 = __OFSUB__(v4, a4); v11 = v4 - a4 < 0; return v11 ^ v12; } // 86FEB8: using guessed type int __security_cookie; //----- (005A7880) -------------------------------------------------------- char __thiscall sub_5A7880(int this) { int v1; // esi@1 char result; // al@2 int v3; // ebx@7 int v4; // edi@7 char v5; // [sp+8h] [bp-48h]@1 int v6; // [sp+28h] [bp-28h]@3 char v7; // [sp+2Ch] [bp-24h]@8 int v8; // [sp+30h] [bp-20h]@9 int v9; // [sp+34h] [bp-1Ch]@10 int v10; // [sp+38h] [bp-18h]@11 int v11; // [sp+3Ch] [bp-14h]@12 int v12; // [sp+40h] [bp-10h]@12 int v13; // [sp+44h] [bp-Ch]@12 int v14; // [sp+48h] [bp-8h]@12 v1 = this; if ( sub_649CD0(this + 64, (int)&v5, *(_DWORD *)(this + 1344), *(_DWORD *)(this + 1348), *(_DWORD *)(this + 1352), 20) ) { if ( sub_45BD00(v1 + 38984, v6) ) { if ( sub_64F850((LPVOID)(v1 + 1468)) ) { v3 = sub_6499D0(v1 + 64); v4 = 0; if ( v3 <= 0 ) { LABEL_14: result = 1; } else { while ( !sub_649A70(v1 + 64, (int)&v7, v4) || v8 != *(_DWORD *)(v1 + 1344) || v9 != *(_DWORD *)(v1 + 1348) || v10 != *(_DWORD *)(v1 + 1352) || sub_64F0D0(v1 + 1468, v12, v13, v11, v14) ) { ++v4; if ( v4 >= v3 ) goto LABEL_14; } sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Start_Acceptor : Listen fail", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Start_Acceptor : Listen Start fail", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Start_Acceptor : Init session fail", 0); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Start_Acceptor : No data for client listen", 0); result = 0; } return result; } // 6499D0: using guessed type int __thiscall sub_6499D0(_DWORD); //----- (005A79B0) -------------------------------------------------------- signed int __stdcall sub_5A79B0(int a1) { int v1; // eax@6 int v2; // eax@6 signed int result; // eax@7 bool v4; // zf@10 char Src; // [sp+8h] [bp-204h]@6 unsigned int v6; // [sp+208h] [bp-4h]@1 int v7; // [sp+20Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; *(_WORD *)(a1 + 32) = 1; *(_DWORD *)(a1 + 44) = 0; if ( !sub_6499A0(a1 + 64, "ZoneServerInfo/ZoneServerInfo.txt") ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); if ( !sub_6499A0(a1 + 64, "../9Data/ServerInfo/ZoneServerInfo.txt") ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); loc_6391B0("ZoneServer::zs_start"); } } if ( !sub_6499E0(a1 + 64, a1 + 1336) ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail Serverinfo", 0); loc_6391B0("ZoneServer::zs_start"); } sub_55A310(&unk_13253630); sub_45F530(&unk_AF09DA8); v1 = sub_658048("LUA_PATH"); sprintf(&Src, "LUA_PATH=%s;%s", v1, "../9Data/Shine/LuaScript/?.lua"); sub_657F7C(&Src); sub_5AEA60((void *)a1); lpParameter = (LPVOID)a1; v2 = sub_5D4FF0((int)&dword_14D40AE0, "tmfpemfjs", (int)&off_86D0C0); if ( (_BYTE)v2 ) { while ( *(_BYTE *)a1 ) Sleep(0x3E8u); v4 = *(_BYTE *)a1 == 0; *(_BYTE *)(a1 + 1) = 1; if ( !v4 ) { do Sleep(5u); while ( *(_BYTE *)a1 ); } result = 0; } else { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start_old : function call error", v2); result = -3; } return result; } // 86D0C0: using guessed type int (__thiscall **off_86D0C0)(void *, char); // 86FEB8: using guessed type int __security_cookie; // 14D40AE0: using guessed type int dword_14D40AE0; //----- (005A7B30) -------------------------------------------------------- int __stdcall sub_5A7B30(int a1) { int v1; // edi@2 *(_WORD *)(a1 + 16) = 1; *(_DWORD *)(a1 + 28) = 0; do { v1 = *(_DWORD *)(a1 + 12); if ( *(_DWORD *)(a1 + 28) == v1 ) sub_466B80((__time32_t)&unk_750830, (int)"ShineStackStruct"); *(_DWORD *)(a1 + 28) = v1; Sleep(0x2710u); } while ( !*(_BYTE *)(a1 + 17) ); *(_BYTE *)(a1 + 16) = 0; return 0; } //----- (005A7B90) -------------------------------------------------------- signed int __stdcall sub_5A7B90(int a1, int a2) { int v2; // edi@1 int v3; // eax@2 int v4; // eax@3 signed int result; // eax@8 v2 = a2; if ( (unsigned int)(*(_DWORD *)(a2 + 4) - 1) > 1 ) { result = 2; } else { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)(a2 + 224) + 12))(a2 + 224); if ( v3 ) { v4 = v3 - 1; if ( v4 ) { if ( v4 == 1 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v2 + 224) + 16))(v2 + 224, &a2); if ( a2 < 0 ) return 1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)(v2 + 224) + 24))(v2 + 224); } *(_DWORD *)(v2 + 4) = 3; return 1; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 4))(v2, 0, 65535); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)(v2 + 224) + 36))(v2 + 224); ++dword_86B064; return 0; } if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)(v2 + 224) + 40))(v2 + 224) ) return 0; sub_5A4330((void *)v2); result = 0; } return result; } // 86B064: using guessed type int dword_86B064; //----- (005A7C60) -------------------------------------------------------- char *__thiscall sub_5A7C60(void *this) { return (char *)this + 38984; } //----- (005A7C70) -------------------------------------------------------- char __thiscall sub_5A7C70(int this, char a2, char a3, char a4, char a5) { char result; // al@1 *(_BYTE *)(this + 160872) = a2; result = a4; *(_BYTE *)(this + 160873) = a3; *(_BYTE *)(this + 160874) = a4; *(_BYTE *)(this + 160875) = a5; return result; } //----- (005A7CA0) -------------------------------------------------------- const char *__cdecl sub_5A7CA0(const char *a1) { const char *result; // eax@1 FILE *v2; // esi@3 unsigned int v3; // edx@4 const char v4; // cl@5 result = (const char *)strcmp("ChargedItemLog", a1); if ( result ) { if ( dword_1325CA74 >= 128 ) { v2 = fopen("Message.txt", "w"); fprintf(v2, "void EraseOldLogList(char *filename)\n"); fclose(v2); loc_6391B0("EraseOldLogList"); } result = a1; v3 = (_UNKNOWN *)((char *)&unk_13258A70 + 128 * dword_1325CA74) - (_UNKNOWN *)a1; do { v4 = *result; result[v3] = *result; ++result; } while ( v4 ); ++dword_1325CA74; } return result; } // 1325CA74: using guessed type int dword_1325CA74; //----- (005A7D50) -------------------------------------------------------- unsigned int __fastcall sub_5A7D50(__time32_t a1) { unsigned int result; // eax@1 int v2; // edi@2 unsigned int v3; // esi@2 struct tm *v4; // eax@3 int v5; // ebx@3 int v6; // eax@5 char v7; // cl@6 char *v8; // eax@7 char v9; // cl@8 unsigned int v10; // eax@10 char *v11; // esi@10 char *v12; // edi@10 int v13; // eax@11 __time32_t Time; // [sp+0h] [bp-25Ch]@3 HANDLE hFindFile; // [sp+4h] [bp-258h]@9 unsigned int v16; // [sp+8h] [bp-254h]@1 int v17; // [sp+Ch] [bp-250h]@3 unsigned int v18; // [sp+10h] [bp-24Ch]@2 int v19; // [sp+14h] [bp-248h]@2 struct _WIN32_FIND_DATAA FindFileData; // [sp+18h] [bp-244h]@7 const CHAR FileName; // [sp+158h] [bp-104h]@2 unsigned int v22; // [sp+258h] [bp-4h]@1 int v23; // [sp+25Ch] [bp+0h]@1 result = (unsigned int)&v23 ^ __security_cookie; v22 = (unsigned int)&v23 ^ __security_cookie; v16 = 0; if ( dword_1325CA74 > 0 ) { v2 = (int)&unk_13258A70; v3 = &FileName - (const CHAR *)&unk_13258A70; v19 = (int)&unk_13258A70; v18 = &FileName - (const CHAR *)&unk_13258A70; do { sub_44FB50(a1, (int)&Time); v4 = _localtime32(&Time); v5 = v4->tm_mon + 1; v17 = v4->tm_mon; if ( !v17 ) v17 = 12; v6 = v2; do { v7 = *(_BYTE *)v6; *(_BYTE *)(v3 + v6) = *(_BYTE *)v6; ++v6; } while ( v7 ); v8 = &FindFileData.cAlternateFileName[15]; do v9 = (v8++)[1]; while ( v9 ); LOWORD(a1) = word_6F505C; *(_DWORD *)v8 = dword_6F5058; *((_WORD *)v8 + 2) = a1; hFindFile = FindFirstFileA(&FileName, &FindFileData); if ( hFindFile != (HANDLE)-1 ) { v10 = strlen((const char *)v2); v11 = &FindFileData.cFileName[v10 + 4]; v12 = &FindFileData.cFileName[v10 + 5]; do { v13 = *v12 + 10 * *v11 - 528; if ( v13 != v5 ) { if ( v13 != v17 ) DeleteFileA(FindFileData.cFileName); } } while ( FindNextFileA(hFindFile, &FindFileData) ); FindClose(hFindFile); v2 = v19; v3 = v18; } result = v16 + 1; v2 += 128; v3 -= 128; v16 = result; v19 = v2; v18 = v3; } while ( (signed int)result < dword_1325CA74 ); } return result; } // 6F5058: using guessed type int dword_6F5058; // 6F505C: using guessed type __int16 word_6F505C; // 86FEB8: using guessed type int __security_cookie; // 1325CA74: using guessed type int dword_1325CA74; //----- (005A7EE0) -------------------------------------------------------- int __cdecl sub_5A7EE0() { int result; // eax@1 void *v1; // eax@2 void *v2; // eax@3 result = dword_13359820; if ( !dword_13359820 ) { v1 = (void *)operator new(0x44u); if ( v1 ) v2 = sub_64FBF0(v1); else v2 = 0; dword_13359820 = (int)v2; (**(void (***)(void))v2)(); result = dword_13359820; } return result; } // 13359820: using guessed type int dword_13359820; //----- (005A7F60) -------------------------------------------------------- char __thiscall sub_5A7F60(int this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD)) { int v2; // esi@1 int v3; // ecx@1 int v4; // edx@2 int v5; // eax@2 int v6; // edi@3 char result; // al@5 v2 = this; v3 = *(_WORD *)(*(_DWORD *)(this + 8) + 12 * *(_WORD *)(this + 14) + 4); if ( (unsigned __int16)v3 >= *(_WORD *)(v2 + 4) ) { LABEL_5: result = 1; } else { while ( 1 ) { v4 = *(_DWORD *)(v2 + 8); v5 = 12 * (unsigned __int16)v3; if ( !*(_BYTE *)(v4 + v5 + 8) ) break; v6 = *(_WORD *)(v5 + v4 + 4); if ( !(unsigned __int8)a2(*(_DWORD *)(v4 + v5), v2, v3) ) break; v3 = v6; if ( (unsigned __int16)v6 >= *(_WORD *)(v2 + 4) ) goto LABEL_5; } result = 0; } return result; } //----- (005A7FC0) -------------------------------------------------------- void __thiscall sub_5A7FC0(void *this, int a2, int a3, int a4) { signed int v4; // edi@1 char *v5; // esi@1 char *v6; // [sp-8h] [bp-31Ch]@25 FILE *v7; // [sp-4h] [bp-318h]@25 char v8; // [sp+10h] [bp-304h]@11 char v9; // [sp+110h] [bp-204h]@7 char v10; // [sp+210h] [bp-104h]@19 unsigned int v11; // [sp+310h] [bp-4h]@1 int v12; // [sp+314h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v4 = 0; v5 = (char *)this + 8; do { if ( *(_DWORD *)v5 != 1 && *(_DWORD *)v5 != 2 ) { if ( *((_DWORD *)v5 + 63) > (unsigned int)dword_14D129E8 ) return; v5[256] = 0; if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v9, "%.255s", a2); sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fputs(&v9, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v8, "%.255s", " Socket cut - try reconnect "); sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fputs(&v8, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fprintf(dword_14D15088, "%d", v4); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v10, "%.255s", " : reconnect "); sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fputs(&v10, dword_14D15088); } } } } } if ( sub_5A7770(a3, (int)(v5 - 4), a4, 1) ) { if ( !byte_7493ED || !byte_14D1520C || (sprintf(&v10, "%.255s", "success"), sub_418E40((__time32_t)byte_14D14F88), !dword_14D15088) ) goto LABEL_31; v7 = dword_14D15088; v6 = &v10; } else { if ( !byte_7493ED || !byte_14D1520C || (sprintf(&v10, "%.255s", "fail"), sub_418E40((__time32_t)byte_14D14F88), !dword_14D15088) ) goto LABEL_31; v7 = dword_14D15088; v6 = &v10; } fputs(v6, v7); LABEL_31: sub_418F20((__time32_t)byte_14D14F88, (int)&unk_13359E04); } ++v4; v5 += 264; } while ( v4 < 4 ); } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; // 14D1520C: using guessed type char byte_14D1520C; //----- (005A8230) -------------------------------------------------------- int __thiscall sub_5A8230(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"SleepManager::sm_Sleep"); dword_7508B8[dword_750CB8] = (int)"SleepManager::sm_Sleep"; dword_750AB8[dword_750CB8++] = -1; Sleep(1u); *((_DWORD *)v1 + 1) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SleepManager::sm_Sleep"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A8290) -------------------------------------------------------- int __thiscall sub_5A8290(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"SleepManager::sm_Routine"); dword_7508B8[dword_750CB8] = (int)"SleepManager::sm_Routine"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)v1; if ( *((_DWORD *)v1 + 2) < *(_DWORD *)v1 ) *((_DWORD *)v1 + 2) = v2; v3 = *((_DWORD *)v1 + 1); if ( 2500 * v2 / *((_DWORD *)v1 + 2) >= v3 * v3 ) *((_DWORD *)v1 + 1) = v3 + 1; else sub_5A8230(v1); *(_DWORD *)v1 = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SleepManager::sm_Routine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005A8370) -------------------------------------------------------- int __thiscall sub_5A8370(void *this) { void *v1; // esi@1 v1 = this; sub_45BE20((int)((char *)this + 38984)); sub_64F460((SOCKET *)v1 + 367); sub_64CF90((ULONG_PTR)((char *)v1 + 1420)); return sub_64E4A0((int)((char *)v1 + 64)); } //----- (005A83F0) -------------------------------------------------------- char __thiscall sub_5A83F0(LPVOID lpParameter) { LPVOID v1; // esi@1 HANDLE v2; // eax@1 char result; // al@4 v1 = lpParameter; *((_WORD *)lpParameter + 16) = 0; v2 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_5A79B0, lpParameter, 0, (LPDWORD)lpParameter + 10); *((_DWORD *)v1 + 9) = v2; if ( v2 ) { while ( *((_BYTE *)v1 + 32) != 1 ) Sleep(5u); result = 1; } else { result = 0; } return result; } //----- (005A8440) -------------------------------------------------------- int __cdecl sub_5A8440() { int v0; // eax@1 v0 = (unsigned __int8)sub_5A7880((int)lpParameter); if ( !(_BYTE)v0 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_servicestart : Acceptor fail", v0); loc_6391B0("ZoneServer_zs_service_acceptor"); } return 0; } //----- (005A8480) -------------------------------------------------------- int __cdecl sub_5A8480() { LPVOID v0; // esi@1 struct _SYSTEM_INFO SystemInfo; // [sp+4h] [bp-24h]@1 v0 = lpParameter; GetSystemInfo(&SystemInfo); sub_64CEA0((char *)v0 + 1420, (void *)(2 * SystemInfo.dwNumberOfProcessors + 1), 1); return 0; } //----- (005A84C0) -------------------------------------------------------- signed int __thiscall sub_5A84C0(void *this) { void *v1; // ebx@1 int v2; // edi@1 signed int result; // eax@1 int v4; // eax@5 int v5; // esi@7 int v6; // edi@7 __int16 v7; // bx@9 int v8; // eax@15 int v9; // esi@15 int v10; // eax@18 bool v11; // zf@21 __int16 v12; // [sp+8h] [bp-28h]@7 void *v13; // [sp+Ch] [bp-24h]@1 SOCKET s; // [sp+10h] [bp-20h]@1 char v15; // [sp+14h] [bp-1Ch]@5 unsigned __int8 v16; // [sp+18h] [bp-18h]@9 unsigned __int8 v17; // [sp+19h] [bp-17h]@9 unsigned __int8 v18; // [sp+1Ah] [bp-16h]@9 unsigned __int8 v19; // [sp+1Bh] [bp-15h]@9 int v20; // [sp+24h] [bp-Ch]@2 unsigned int v21; // [sp+2Ch] [bp-4h]@1 int v22; // [sp+30h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v1 = this; v2 = 1; v13 = this; for ( result = sub_64F230((int)((char *)this + 1468), &s, 1); result; result = sub_64F230( (int)((char *)v1 + 1468), &s, 1) ) { if ( v20 == 6 ) { v9 = sub_45AAD0((int)&dword_AF09800, s, (int)&v15); *(_DWORD *)(v9 + 4) = v2; *(_DWORD *)(v9 + 8) = 6; *(_DWORD *)(v9 + 36) = timeGetTime(); *(_DWORD *)(v9 + 252) = 0; v11 = sub_5A4370(v9, (char *)v1 + 1420) == 0; } else { if ( v20 != 8 ) { if ( v20 == 20 ) { v4 = (*(int (__thiscall **)(char *, SOCKET, char *))*((int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v1 + 9746))( (char *)v1 + 38984, s, &v15); if ( v4 ) { v5 = *(_DWORD *)(v4 + 8); sub_45A9F0(*(_DWORD *)(v4 + 8), 0); sub_45AA10(v5); sub_45AA50(v5, 0); sub_45BF60((int)((char *)v1 + 38984), v5); (*(void (__thiscall **)(int))(*(_DWORD *)(v5 + 224) + 44))(v5 + 224); *(_DWORD *)(v5 + 4) = 1; *(_DWORD *)(v5 + 8) = 20; *(_DWORD *)(v5 + 36) = timeGetTime(); *(_DWORD *)(v5 + 252) = 0; v6 = sub_54DF90(&unk_13253630, (int)&v12, 2); if ( v6 != 0 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 780))(v6); (*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 752))(v6, v5); *(_WORD *)(v5 + 258) = v12; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 756))(v6); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 2364))( v6, v16, v17, v18, v19); if ( !sub_5A4370(v5, (char *)v13 + 1420) || !(unsigned __int8)sub_45A990(v5, v7) ) *(_DWORD *)(v5 + 4) = 3; v1 = v13; } else { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_connect : ShinePlayer full", 0); *(_DWORD *)(v5 + 4) = 3; } } else { shutdown(s, 2); closesocket(s); } } goto LABEL_13; } v8 = sub_45AAD0((int)&dword_DA0F928, s, (int)&v15); v9 = v8; if ( !v8 ) { closesocket(s); goto LABEL_13; } *(_DWORD *)(v8 + 4) = v2; *(_DWORD *)(v8 + 8) = 8; *(_DWORD *)(v8 + 36) = timeGetTime(); *(_DWORD *)(v9 + 252) = 0; if ( word_DA0F78C == -1 || (v10 = (*(int (__thiscall **)(int *, _DWORD))(dword_DA0F780 + 8))( &dword_DA0F780, (unsigned __int16)word_DA0F78C)) == 0 ) { *(_DWORD *)(v9 + 4) = 3; goto LABEL_13; } sub_4C72D0(v10, v9); if ( !sub_5A4370(v9, (char *)v1 + 1420) ) goto LABEL_23; v11 = sub_4C72F0(v9) == 0; } if ( v11 ) { LABEL_23: sub_64BC90(v2, "Msg", "%s", "!pSession->Socket_Register_To_IOCP(&zs_IOCP)"); *(_DWORD *)(v9 + 4) = 3; } LABEL_13: v2 = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; // AF09800: using guessed type int dword_AF09800; // DA0F780: using guessed type int dword_DA0F780; // DA0F78C: using guessed type __int16 word_DA0F78C; // DA0F928: using guessed type int dword_DA0F928; //----- (005A8790) -------------------------------------------------------- char __thiscall sub_5A8790(const CHAR *this, unsigned __int8 *a2) { const CHAR *v2; // ebx@1 signed int v3; // esi@1 unsigned __int8 *v4; // eax@1 void *v5; // edi@2 const CHAR *v6; // ebx@5 int v7; // eax@6 void *v8; // eax@7 void *v9; // ecx@9 void (__thiscall *v10)(_DWORD); // eax@9 void *v11; // edi@10 int v12; // eax@14 const CHAR *v13; // esi@22 char v15; // [sp-34h] [bp-4F4h]@14 int v16; // [sp-30h] [bp-4F0h]@14 int v17; // [sp-2Ch] [bp-4ECh]@14 int v18; // [sp-28h] [bp-4E8h]@14 char v19; // [sp-24h] [bp-4E4h]@14 int v20; // [sp-20h] [bp-4E0h]@14 int v21; // [sp-1Ch] [bp-4DCh]@14 int v22; // [sp-18h] [bp-4D8h]@14 char v23; // [sp-14h] [bp-4D4h]@14 int v24; // [sp-10h] [bp-4D0h]@14 int v25; // [sp-Ch] [bp-4CCh]@14 int v26; // [sp-8h] [bp-4C8h]@14 unsigned int v27; // [sp-4h] [bp-4C4h]@1 char *v28; // [sp+Ch] [bp-4B4h]@14 char *v29; // [sp+10h] [bp-4B0h]@14 char v30; // [sp+14h] [bp-4ACh]@1 LPCSTR lpText; // [sp+24h] [bp-49Ch]@19 int v32; // [sp+28h] [bp-498h]@19 int v33; // [sp+2Ch] [bp-494h]@19 int v34; // [sp+30h] [bp-490h]@19 int v35; // [sp+34h] [bp-48Ch]@19 int v36; // [sp+38h] [bp-488h]@19 char v37; // [sp+3Ch] [bp-484h]@1 char *v38; // [sp+4Ch] [bp-474h]@14 int v39; // [sp+50h] [bp-470h]@6 LPCSTR lpCaption; // [sp+54h] [bp-46Ch]@1 char v41; // [sp+58h] [bp-468h]@1 CHAR Filename; // [sp+A8h] [bp-418h]@10 unsigned __int8 v43[4]; // [sp+4A8h] [bp-18h]@1 char v44; // [sp+4ACh] [bp-14h]@1 unsigned int v45; // [sp+4B0h] [bp-10h]@1 int v46; // [sp+4BCh] [bp-4h]@1 int v47; // [sp+4C0h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v27 = (unsigned int)&v47 ^ __security_cookie; v2 = this; lpCaption = this; sub_650080((int)&v37, "UPLOAD"); v3 = 0; v46 = 0; sub_650080((int)&v30, "REMOVE"); LOBYTE(v46) = 1; _eh_vector_constructor_iterator_(&v41, 0x10u, 5, (int)sub_64FFF0, type_info::_type_info); LOBYTE(v46) = 2; *(_DWORD *)v43 = dword_6F5200; v44 = byte_6F5204; v4 = _mbstok(a2, v43); if ( v4 ) { v5 = &v41; do { if ( v3 >= 5 ) break; sub_64FF50(v5, (const char *)v4); ++v3; v5 = (char *)v5 + 16; v4 = _mbstok(0, v43); } while ( v4 ); } v6 = (const CHAR *)*((_DWORD *)v2 + 334); lpCaption = (LPCSTR)*((_DWORD *)lpCaption + 335); if ( !dword_13359820 ) { v7 = operator new(0x44u); v39 = v7; LOBYTE(v46) = 3; if ( v7 ) v8 = sub_64FBF0((void *)v7); else v8 = 0; dword_13359820 = (int)v8; v9 = v8; v10 = (void (__thiscall *)(_DWORD))**(_DWORD **)v8; LOBYTE(v46) = 2; v10(v9); } v11 = (void *)dword_13359820; GetModuleFileNameA(0, &Filename, 0x400u); if ( v3 < 1 ) { if ( sub_64FB40(v11, (int)&v39, 0, v6) ) { v12 = 0; goto LABEL_19; } sub_6500B0(&v41, (int)&v37); } sub_64FF40((int)&v41); if ( sub_6500D0((int)&v41, (int)&v37) ) { v29 = &v23; sub_650080((int)&v23, &Filename); v28 = &v19; LOBYTE(v46) = 4; sub_650080((int)&v19, lpCaption); v38 = &v15; LOBYTE(v46) = 5; sub_650080((int)&v15, v6); LOBYTE(v46) = 2; v12 = (sub_64F900(v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) == 0) + 1; } else { if ( sub_6500D0((int)&v41, (int)&v30) ) { v38 = &v23; sub_650080((int)&v23, v6); v12 = (sub_64FA00(v23, v24, v25, v26) == 0) + 3; } else { v12 = 5; } } LABEL_19: lpText = ""; v32 = (int)""; v33 = (int)""; v34 = (int)""; v35 = (int)""; v36 = (int)""; if ( v12 ) { if ( v12 > 0 && v12 <= 5 ) { v26 = (int)(&lpText)[4 * v12]; v13 = (const CHAR *)v26; sub_64BC90(1, "Msg", "%s", v26); MessageBoxA(0, v13, lpCaption, 0); LOBYTE(v46) = 1; _LN21(&v41, 0x10u, 5, type_info::_type_info); LOBYTE(v46) = 0; type_info::_type_info(&v30); v46 = -1; type_info::_type_info(&v37); return 0; } } else { v26 = (int)""; sub_64BC90(1, "Msg", "%s", ""); } LOBYTE(v46) = 1; _LN21(&v41, 0x10u, 5, type_info::_type_info); LOBYTE(v46) = 0; type_info::_type_info(&v30); v46 = -1; type_info::_type_info(&v37); return 1; } // 6F5200: using guessed type int dword_6F5200; // 6F5204: using guessed type char byte_6F5204; // 86FEB8: using guessed type int __security_cookie; // 13359820: using guessed type int dword_13359820; //----- (005A8B00) -------------------------------------------------------- int __thiscall sub_5A8B00(void *this, int a2, int a3) { char *v3; // ebx@1 signed int v4; // edi@4 int v5; // eax@28 int result; // eax@29 void *v7; // [sp+10h] [bp-310h]@1 int v8; // [sp+18h] [bp-308h]@1 char v9; // [sp+1Ch] [bp-304h]@7 char v10; // [sp+11Ch] [bp-204h]@11 char v11; // [sp+21Ch] [bp-104h]@19 unsigned int v12; // [sp+31Ch] [bp-4h]@1 int v13; // [sp+320h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v7 = this; v8 = 0; v3 = (char *)this + 8; do { if ( *(_DWORD *)v3 == 1 || *(_DWORD *)v3 == 2 ) { v4 = sub_5A7B90(a2, (int)(v3 - 4)); if ( v4 ) { sub_5A4300((int)(v3 - 4)); *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 63) = dword_14D129E8 + 10 * *(_DWORD *)v7; v3[256] = 0; if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v9, "%.255s", a2); sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fputs(&v9, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v10, "%.255s", " Cut by invalid packet "); sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fputs(&v10, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fprintf(dword_14D15088, "%d", v4); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v11, "%.255s", "/"); sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fputs(&v11, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sub_418E40((__time32_t)byte_14D14F88); if ( dword_14D15088 ) fprintf(dword_14D15088, "%d", v8); } if ( byte_7493ED && byte_14D1520C ) { if ( dword_14D15088 ) { v5 = sub_418E40((__time32_t)byte_14D14F88); sub_654AB0(10, (FILE *)v5); fflush(dword_14D15088); fclose(dword_14D15088); dword_14D15088 = 0; } } } } } } } } } result = v8 + 1; v3 += 264; v8 = result; } while ( result < 4 ); return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; // 14D1520C: using guessed type char byte_14D1520C; //----- (005A8D90) -------------------------------------------------------- int __thiscall sub_5A8D90(void *this, int a2) { int result; // eax@1 signed int v3; // edi@1 char *v4; // esi@1 int v5; // eax@18 void *v6; // [sp+Ch] [bp-20Ch]@1 char v7; // [sp+14h] [bp-204h]@5 char v8; // [sp+114h] [bp-104h]@9 unsigned int v9; // [sp+214h] [bp-4h]@1 int v10; // [sp+218h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; result = a2; v6 = this; v3 = 0; v4 = (char *)this + 8; do { if ( *(_DWORD *)v4 == 3 ) { sub_5A4300((int)(v4 - 4)); *(_DWORD *)v4 = 0; result = dword_14D129E8; *((_DWORD *)v4 + 63) = dword_14D129E8 + 10 * *(_DWORD *)v6; v4[256] = 0; if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v7, "%.255s", a2); sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fputs(&v7, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v8, "%.255s", " Close during SESSION_STATUS_CLOSEING "); sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fputs(&v8, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fprintf(dword_14D15088, "%d", v3); } if ( byte_7493ED && byte_14D1520C ) { if ( dword_14D15088 ) { v5 = sub_418E40((__time32_t)byte_14D14F88); sub_654AB0(10, (FILE *)v5); fflush(dword_14D15088); result = fclose(dword_14D15088); dword_14D15088 = 0; } } } } } } ++v3; v4 += 264; } while ( v3 < 4 ); return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; // 14D1520C: using guessed type char byte_14D1520C; //----- (005A8F50) -------------------------------------------------------- int __thiscall sub_5A8F50(void *this, int a2) { signed int v2; // edi@1 int v3; // esi@1 int result; // eax@2 int v5; // eax@18 void *v6; // [sp+Ch] [bp-20Ch]@1 char v7; // [sp+14h] [bp-204h]@5 char v8; // [sp+114h] [bp-104h]@9 unsigned int v9; // [sp+214h] [bp-4h]@1 int v10; // [sp+218h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v6 = this; v2 = 0; v3 = (int)((char *)this + 4); do { result = (**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, 30); if ( !result ) { sub_5A4300(v3); *(_DWORD *)(v3 + 4) = 0; result = dword_14D129E8; *(_DWORD *)(v3 + 256) = dword_14D129E8 + 10 * *(_DWORD *)v6; *(_BYTE *)(v3 + 260) = 0; if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v7, "%.255s", a2); sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fputs(&v7, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sprintf(&v8, "%.255s", " Cut by heartbeat "); sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fputs(&v8, dword_14D15088); } if ( byte_7493ED ) { if ( byte_14D1520C ) { sub_418E40((__time32_t)byte_14D14F88); result = (int)dword_14D15088; if ( dword_14D15088 ) result = fprintf(dword_14D15088, "%d", v2); } if ( byte_7493ED && byte_14D1520C ) { if ( dword_14D15088 ) { v5 = sub_418E40((__time32_t)byte_14D14F88); sub_654AB0(10, (FILE *)v5); fflush(dword_14D15088); result = fclose(dword_14D15088); dword_14D15088 = 0; } } } } } } ++v2; v3 += 264; } while ( v2 < 4 ); return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; // 14D1520C: using guessed type char byte_14D1520C; //----- (005A9100) -------------------------------------------------------- void *__thiscall sub_5A9100(void *this) { void *v1; // esi@1 v1 = this; sub_649990((int)((char *)this + 64)); *((_DWORD *)v1 + 342) = 0; *((_DWORD *)v1 + 341) = 0; *((_DWORD *)v1 + 340) = 0; *((_DWORD *)v1 + 339) = 0; sub_64CC30((int)((char *)v1 + 1420)); sub_64EFE0((int)((char *)v1 + 1468)); sub_45BE00((int)((char *)v1 + 38984)); *((_DWORD *)v1 + 351) = 0; *((_DWORD *)v1 + 352) = 0; *((_DWORD *)v1 + 353) = 0; *((_DWORD *)v1 + 354) = 0; return v1; } //----- (005A91B0) -------------------------------------------------------- signed int __thiscall sub_5A91B0(void *this, int a2) { void *v2; // esi@1 char *v3; // eax@1 char v4; // cl@2 int i; // eax@3 FILE *v6; // edi@6 signed int result; // eax@18 int v8; // ebx@19 int v9; // eax@22 void *v10; // eax@23 void *v11; // ecx@25 void (__thiscall *v12)(_DWORD); // eax@25 char v13; // [sp-1Ch] [bp-470h]@21 int v14; // [sp-18h] [bp-46Ch]@26 int v15; // [sp-14h] [bp-468h]@26 int v16; // [sp-10h] [bp-464h]@21 const char *v17; // [sp-Ch] [bp-460h]@21 const char *v18; // [sp-8h] [bp-45Ch]@6 unsigned int v19; // [sp-4h] [bp-458h]@1 char v20; // [sp+Ch] [bp-448h]@15 char *v21; // [sp+20h] [bp-434h]@17 char v22; // [sp+30h] [bp-424h]@19 char *v23; // [sp+38h] [bp-41Ch]@21 char *v24; // [sp+3Ch] [bp-418h]@21 int v25; // [sp+40h] [bp-414h]@22 char Filename[1024]; // [sp+44h] [bp-410h]@1 unsigned int v27; // [sp+444h] [bp-10h]@1 int v28; // [sp+450h] [bp-4h]@21 int v29; // [sp+454h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; v19 = (unsigned int)&v29 ^ __security_cookie; v2 = this; GetModuleFileNameA(0, Filename, 0x400u); v3 = Filename; do v4 = *v3++; while ( v4 ); for ( i = v3 - &Filename[1] - 1; i >= 0; --i ) { if ( Filename[i] == 92 ) break; } v18 = Filename; Filename[i] = 0; _chdir(v18); sub_547760(); v6 = fopen("../ServerInfo/ServerGroup.txt", "r"); if ( v6 == 0 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail to read ServerGroup.txt", 0); loc_6391B0("ZoneServer::zs_start"); } v18 = (char *)v2 + 1372; if ( fscanf(v6, "%s", (char *)v2 + 1372, v19) != 1 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail to read ServerGroup", 0); loc_6391B0("ZoneServer::zs_start"); } fclose(v6); if ( !sub_6499A0((int)((char *)v2 + 64), "ZoneServerInfo/ZoneServerInfo.txt") ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); if ( !sub_6499A0((int)((char *)v2 + 64), "../9Data/ServerInfo/ZoneServerInfo.txt") ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); loc_6391B0("ZoneServer::zs_start"); } } if ( !sub_6499E0((int)((char *)v2 + 64), (int)((char *)v2 + 1336)) ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Fail Serverinfo", 0); loc_6391B0("ZoneServer::zs_start"); } if ( !sub_649CD0((int)&unk_14D16B28, (int)&v20, 6, *((_DWORD *)v2 + 337), *((_DWORD *)v2 + 338), 6) ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Get BindServerInfo Fail", 0); loc_6391B0("ZoneServer::zs_start - BindIP"); } strncpy((char *)v2 + 1404, v21, 0x10u); v18 = (const char *)a2; *((_BYTE *)v2 + 1419) = 0; if ( sub_5A8790((const CHAR *)v2, (unsigned __int8 *)v18) ) { v8 = *((_DWORD *)v2 + 337); if ( sub_649C50((int)((char *)v2 + 64), v8, (int)&v22) ) { v18 = (const char *)16; v17 = v23; v16 = (int)((char *)v2 + 1356); *((_DWORD *)v2 + 342) = 0; *((_DWORD *)v2 + 341) = 0; *((_DWORD *)v2 + 340) = 0; *((_DWORD *)v2 + 339) = 0; strncpy((char *)v16, v17, (size_t)v18); v18 = (const char *)sub_49CE30; v17 = (const char *)sub_49CE20; v24 = &v13; sub_650080((int)&v13, "ZoneServer"); v28 = 0; if ( !dword_13359820 ) { v9 = operator new(0x44u); v25 = v9; LOBYTE(v28) = 1; if ( v9 ) v10 = sub_64FBF0((void *)v9); else v10 = 0; dword_13359820 = (int)v10; v11 = v10; v12 = (void (__thiscall *)(_DWORD))**(_DWORD **)v10; LOBYTE(v28) = 0; v12(v11); } v28 = -1; sub_64FE60((void *)dword_13359820, v13, v14, v15, v16, (int)v17, (int)v18); } else { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start : Cannot found WorldName", v8); } result = 0; } else { result = -2; } return result; } // 86FEB8: using guessed type int __security_cookie; // 13359820: using guessed type int dword_13359820; // 5A91B0: using guessed type CHAR Filename[1024]; //----- (005A9490) -------------------------------------------------------- int __cdecl sub_5A9490() { DWORD *v0; // ST14_4@1 void *v1; // ST0C_4@1 char *v2; // esi@1 LPVOID v3; // edi@1 HANDLE v4; // eax@1 int v5; // eax@4 v0 = (DWORD *)((char *)lpParameter + 24); v1 = lpParameter; v2 = (char *)lpParameter + 16; v3 = lpParameter; *((_BYTE *)lpParameter + 17) = 0; *v2 = 0; v4 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_5A7B30, v1, 0, v0); *((_DWORD *)v3 + 5) = v4; if ( v4 ) { while ( *v2 != 1 ) Sleep(5u); LOBYTE(v5) = 1; } else { LOBYTE(v5) = 0; } v5 = (unsigned __int8)v5; if ( !(_BYTE)v5 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_servicestart : StackCheck fail", v5); loc_6391B0("ZoneServer_zs_service_stackchecker"); } return 0; } //----- (005A9510) -------------------------------------------------------- char __cdecl sub_5A9510(const char *a1, __int16 a2) { const char *v2; // eax@2 int v3; // esi@2 int v5; // [sp+Ch] [bp-84h]@2 int v6; // [sp+10h] [bp-80h]@4 int v7; // [sp+14h] [bp-7Ch]@4 int v8; // [sp+18h] [bp-78h]@4 int v9; // [sp+1Ch] [bp-74h]@1 char *v10; // [sp+20h] [bp-70h]@2 unsigned int v11; // [sp+34h] [bp-5Ch]@2 char v12; // [sp+40h] [bp-50h]@2 unsigned int v13; // [sp+80h] [bp-10h]@1 int v14; // [sp+8Ch] [bp-4h]@2 int v15; // [sp+90h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v9 = 0; while ( 1 ) { sub_649C00((int)&unk_14D16B28, (int)&v5); sprintf(&v12, "%d", dword_14D409DC); sub_610220((int)&v10); v14 = 0; sub_60FFE0((int)&v10, a1, a2, (int)&v12, dword_14D1702C, dword_14D17030, v5); v2 = v10; v3 = dword_14D409DC * (dword_14D409DC * (2 * dword_14D409DC - 3) + 5) - 7; if ( v11 < 0x10 ) v2 = (const char *)&v10; sscanf(v2, "[%d][%d]%d", &v7, &v8, &v6); if ( v7 > 0 ) { if ( v8 > 0 && v6 == v3 ) break; } v14 = -1; sub_610240((int)&v10); ++v9; if ( v9 >= 1 ) return 0; } dword_14D409D0 = v8; dword_14D409CC = v7; v14 = -1; sub_610240((int)&v10); return 1; } // 86FEB8: using guessed type int __security_cookie; // 14D409CC: using guessed type int dword_14D409CC; // 14D409D0: using guessed type int dword_14D409D0; // 14D409DC: using guessed type int dword_14D409DC; //----- (005A9650) -------------------------------------------------------- int __stdcall sub_5A9650(int a1) { int v1; // esi@1 signed int v2; // edi@3 const char *v3; // eax@4 int v4; // esi@4 int v6; // [sp+Ch] [bp-84h]@6 int v7; // [sp+10h] [bp-80h]@4 int v8; // [sp+14h] [bp-7Ch]@6 int v9; // [sp+18h] [bp-78h]@1 int v10; // [sp+1Ch] [bp-74h]@6 char *v11; // [sp+20h] [bp-70h]@4 unsigned int v12; // [sp+34h] [bp-5Ch]@4 char v13; // [sp+40h] [bp-50h]@4 unsigned int v14; // [sp+80h] [bp-10h]@1 int v15; // [sp+8Ch] [bp-4h]@4 int v16; // [sp+90h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v1 = a1; v9 = a1; *(_WORD *)(a1 + 48) = 1; *(_DWORD *)(a1 + 60) = 0; do { if ( dword_14D409DC ) { v2 = 0; do { sub_649C00((int)&unk_14D16B28, (int)&v7); sprintf(&v13, "%d", dword_14D409DC); sub_610220((int)&v11); v15 = 0; sub_60FFE0((int)&v11, "127.0.0.1", -7044, (int)&v13, dword_14D1702C, dword_14D17030, v7); v3 = v11; v4 = dword_14D409DC * (dword_14D409DC * (2 * dword_14D409DC - 3) + 5) - 7; if ( v12 < 0x10 ) v3 = (const char *)&v11; sscanf(v3, "[%d][%d]%d", &v8, &v6, &v10); if ( v8 > 0 && v6 > 0 && v10 == v4 ) { dword_14D409D0 = v6; dword_14D409CC = v8; v15 = -1; sub_610240((int)&v11); goto LABEL_13; } v15 = -1; sub_610240((int)&v11); ++v2; } while ( v2 < 1 ); if ( !sub_5A9510("cert.fo.gamigo", 80) ) { ++dword_14D409D8; goto LABEL_14; } LABEL_13: dword_14D409D8 = 0; LABEL_14: ++dword_14D409C8; v1 = v9; dword_14D409DC = 0; } Sleep(0x2710u); } while ( !*(_BYTE *)(v1 + 49) ); *(_BYTE *)(v1 + 16) = 0; return 0; } // 86FEB8: using guessed type int __security_cookie; // 14D409C8: using guessed type int dword_14D409C8; // 14D409CC: using guessed type int dword_14D409CC; // 14D409D0: using guessed type int dword_14D409D0; // 14D409D8: using guessed type int dword_14D409D8; // 14D409DC: using guessed type int dword_14D409DC; //----- (005A97F0) -------------------------------------------------------- int __thiscall sub_5A97F0(void *this) { void *v1; // esi@1 int result; // eax@4 int v3; // ebx@4 int v4; // eax@5 int v5; // edi@5 char v6; // bl@8 char *v7; // eax@8 int v8; // edi@10 int v9; // esi@10 int v10; // eax@83 char v11; // bl@86 char *v12; // eax@86 int v13; // edi@88 int v14; // esi@88 int v15; // eax@161 int v16; // esi@164 int v17; // edi@172 int v18; // esi@172 int v19; // [sp+8h] [bp-924h]@4 int v20; // [sp+Ch] [bp-920h]@5 int v21; // [sp+10h] [bp-91Ch]@5 int v22; // [sp+14h] [bp-918h]@10 signed __int16 v23; // [sp+14h] [bp-918h]@88 signed __int16 v24; // [sp+18h] [bp-914h]@10 int v25; // [sp+18h] [bp-914h]@88 int v26; // [sp+1Ch] [bp-910h]@5 __int16 v27; // [sp+21h] [bp-90Bh]@86 char v28; // [sp+23h] [bp-909h]@86 __int16 v29; // [sp+25h] [bp-907h]@8 char v30; // [sp+27h] [bp-905h]@8 char v31; // [sp+28h] [bp-904h]@70 char v32; // [sp+128h] [bp-804h]@30 char v33; // [sp+228h] [bp-704h]@62 char v34; // [sp+328h] [bp-604h]@78 char v35; // [sp+428h] [bp-504h]@54 char v36; // [sp+528h] [bp-404h]@22 char v37; // [sp+628h] [bp-304h]@46 char v38; // [sp+728h] [bp-204h]@38 char v39; // [sp+828h] [bp-104h]@14 unsigned int v40; // [sp+928h] [bp-4h]@1 int v41; // [sp+92Ch] [bp+0h]@1 v40 = (unsigned int)&v41 ^ __security_cookie; v1 = this; sub_5A8F50(&dword_14D16430, (int)"DB"); sub_5A8F50(&dword_14D148D0, (int)"Log"); sub_5A8F50(&dword_14D12A00, (int)"WMS"); if ( dword_13359E34 != -1 && !sub_5A4430((int)&unk_13359E08, 30) ) { sub_64BEB0((int)&dword_13359E34, (HANDLE *)v1 + 355); sub_5A4300((int)&unk_13359E08); dword_13359E0C = 0; } v19 = (int)((char *)v1 + 38984); sub_5A46B0((int)((char *)v1 + 38984), (HANDLE *)v1 + 355); sub_5A8D90(&dword_14D16430, (int)"DB"); sub_5A8D90(&dword_14D148D0, (int)"Log"); result = sub_5A8D90(&dword_14D12A00, (int)"WMS"); v3 = *((_DWORD *)v1 + 9750); if ( v3 ) { while ( 1 ) { v4 = v3; v5 = *(_DWORD *)(v3 + 8); v3 = *(_DWORD *)(v3 + 4); v20 = v4; v21 = v3; v26 = v5; if ( (!sub_45AA00(v5) || sub_45AA00(v5) == 1) && (unsigned int)(dword_14D129E8 - sub_45AA20(v5)) > 0x11940 ) { v6 = 0; v29 = 0; v30 = 0; v7 = sub_45AA30((void *)v5); if ( v7 ) { v6 = *v7; LOBYTE(v29) = v7[1]; HIBYTE(v29) = v7[2]; v30 = v7[3]; } v8 = -1; v24 = -1; v22 = -1; v9 = sub_54DE90(&unk_13253630, *(_WORD *)(v26 + 258)); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1232))(v9) == 2 ) { v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 832))(v9); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 840))(v9); v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v39, "%.255s", "ZoneServer::zs_disconnect - TimeCut("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v39, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", 7200); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v36, "%.255s", " sec) IP_Addr("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v36, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int8)v6); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v32, "%.255s", "."); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v32, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int8)v29); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v38, "%.255s", "."); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v38, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", HIBYTE(v29)); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v37, "%.255s", "."); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v37, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int8)v30); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v35, "%.255s", "), nUserRegNo("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v35, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", v8); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v33, "%.255s", "), nCharRegNo("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v33, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", v22); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v31, "%.255s", "), nWMSHandle("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v31, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int16)v24); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v34, "%.255s", ") "); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v34, dword_14D13218); } if ( byte_7493ED && byte_14D1339C && dword_14D13218 ) { v10 = sub_418E40((__time32_t)byte_14D13118); sub_654AB0(10, (FILE *)v10); fflush(dword_14D13218); fclose(dword_14D13218); dword_14D13218 = 0; } } } } } } } } } } } } } } } } } } v3 = v21; *(_DWORD *)(v26 + 4) = 3; v5 = v26; } result = sub_45AA40(v5); if ( result == 1 ) { v11 = 0; v27 = 0; v28 = 0; v12 = sub_45AA30((void *)v5); if ( v12 ) { v11 = *v12; LOBYTE(v27) = v12[1]; HIBYTE(v27) = v12[2]; v28 = v12[3]; } v13 = -1; v23 = -1; v25 = -1; v14 = sub_54DE90(&unk_13253630, *(_WORD *)(v26 + 258)); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1232))(v14) == 2 ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 832))(v14); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 840))(v14); v25 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 836))(v14); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v34, "%.255s", "ZoneServer::zs_disconnect - NumberCut("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v34, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", 10); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v31, "%.255s", ") IP_Addr("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v31, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int8)v11); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v33, "%.255s", "."); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v33, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int8)v27); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v35, "%.255s", "."); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v35, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", HIBYTE(v27)); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v37, "%.255s", "."); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v37, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int8)v28); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v38, "%.255s", "), nUserRegNo("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v38, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", v13); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v32, "%.255s", "), nCharRegNo("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v32, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", v25); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v36, "%.255s", "), nWMSHandle("); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v36, dword_14D13218); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fprintf(dword_14D13218, "%d", (unsigned __int16)v23); } if ( byte_7493ED ) { if ( byte_14D1339C ) { sprintf(&v39, "%.255s", ") "); sub_418E40((__time32_t)byte_14D13118); if ( dword_14D13218 ) fputs(&v39, dword_14D13218); } if ( byte_7493ED && byte_14D1339C && dword_14D13218 ) { v15 = sub_418E40((__time32_t)byte_14D13118); sub_654AB0(10, (FILE *)v15); fflush(dword_14D13218); fclose(dword_14D13218); dword_14D13218 = 0; } } } } } } } } } } } } } } } } } } result = v26; v3 = v21; *(_DWORD *)(v26 + 4) = 3; v5 = v26; } if ( *(_DWORD *)(*(_DWORD *)(v20 + 8) + 4) != 3 ) goto LABEL_176; v16 = sub_54DE90(&unk_13253630, *(_WORD *)(v5 + 258)); if ( v16 == 0 ) break; result = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 380))(v16); if ( (_BYTE)result ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 2860))(v16); if ( (_BYTE)result ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 1156))(v16) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v16 + 2320))(v16, "Socket"); (*(void (__thiscall **)(int))(*(_DWORD *)v16 + 824))(v16); } (*(void (__thiscall **)(int))(*(_DWORD *)v16 + 744))(v16); goto LABEL_171; } } LABEL_176: if ( !v3 ) return result; } sub_639100(&unk_86DDD8, (int)"Socket cut not for player", 0); LABEL_171: if ( v16 ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 2284))(v16); (*(void (__thiscall **)(int, int, signed int, signed int))(*(_DWORD *)v16 + 828))(v16, v17, 1, 7); v18 = v26; if ( !sub_555DF0(&unk_13253630, *(_WORD *)(v26 + 258), v17, 0) ) sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_disconnect : Fail to object free", 0); } else { v18 = v26; } sub_45A9F0(v18, -1); sub_45BE60(v19, v18); sub_5A4300(v18); (*(void (__thiscall **)(int, int))(*(_DWORD *)v19 + 4))(v19, v20); result = *(_DWORD *)(v20 + 8); v3 = v21; *(_DWORD *)(result + 4) = 0; goto LABEL_176; } return result; } // 7493ED: using guessed type char byte_7493ED; // 86FEB8: using guessed type int __security_cookie; // 13359E0C: using guessed type int dword_13359E0C; // 13359E34: using guessed type int dword_13359E34; // 14D129E8: using guessed type int dword_14D129E8; // 14D12A00: using guessed type int dword_14D12A00; // 14D1339C: using guessed type char byte_14D1339C; // 14D148D0: using guessed type int dword_14D148D0; // 14D16430: using guessed type int dword_14D16430; //----- (005AA640) -------------------------------------------------------- int __cdecl sub_5AA640() { DWORD *v0; // ST14_4@1 void *v1; // ST0C_4@1 char *v2; // esi@1 LPVOID v3; // edi@1 HANDLE v4; // eax@1 int v5; // eax@4 v0 = (DWORD *)((char *)lpParameter + 24); v1 = lpParameter; v2 = (char *)lpParameter + 48; v3 = lpParameter; *((_BYTE *)lpParameter + 49) = 0; *v2 = 0; v4 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_5A9650, v1, 0, v0); *((_DWORD *)v3 + 13) = v4; if ( v4 ) { while ( *v2 != 1 ) Sleep(5u); LOBYTE(v5) = 1; } else { LOBYTE(v5) = 0; } v5 = (unsigned __int8)v5; if ( !(_BYTE)v5 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_servicestart : Certification fail", v5); loc_6391B0("ZoneServer_zs_service_certification"); } return 0; } //----- (005AA6C0) -------------------------------------------------------- int __userpurge sub_5AA6C0(double a1, int a2) { int v2; // edi@1 unsigned int v3; // eax@1 signed int v4; // esi@1 DWORD v5; // eax@4 int v6; // esi@4 unsigned int v7; // eax@4 int v8; // ecx@4 int v9; // eax@10 void *v10; // eax@13 int v11; // edi@13 int v12; // esi@13 signed int v13; // edi@18 int v14; // ecx@20 unsigned __int16 v15; // ax@22 int v16; // edx@24 int v17; // eax@24 int v18; // esi@24 int v19; // edi@25 int v20; // esi@27 FILE *v21; // eax@29 int v22; // esi@101 int v23; // esi@117 int v25; // [sp+14h] [bp-768h]@22 signed int v26; // [sp+18h] [bp-764h]@18 int v27; // [sp+1Ch] [bp-760h]@22 unsigned __int16 v28; // [sp+20h] [bp-75Ch]@25 __int16 v29; // [sp+24h] [bp-758h]@18 unsigned __int8 v30; // [sp+2Bh] [bp-751h]@24 int v31[16]; // [sp+2Ch] [bp-750h]@2 char v32; // [sp+6Ch] [bp-710h]@95 char v33; // [sp+16Ch] [bp-610h]@79 char v34; // [sp+26Ch] [bp-510h]@111 char v35; // [sp+36Ch] [bp-410h]@63 char v36; // [sp+46Ch] [bp-310h]@127 char v37; // [sp+56Ch] [bp-210h]@47 char v38; // [sp+66Ch] [bp-110h]@29 unsigned int v39; // [sp+76Ch] [bp-10h]@1 int v40; // [sp+778h] [bp-4h]@1 int v41; // [sp+77Ch] [bp+0h]@1 v39 = (unsigned int)&v41 ^ __security_cookie; v2 = a2; sub_4675D0((int)&unk_D020420, (int)"ZoneServer::zs_mainthreadfunction"); dword_7508B8[dword_750CB8] = (int)"ZoneServer::zs_mainthreadfunction"; dword_750AB8[dword_750CB8++] = -1; v40 = 0; *(_WORD *)a2 = 1; *(_DWORD *)(a2 + 12) = 1; v3 = _time32(0); srand(v3); v4 = 0; do v31[v4++] = rand(); while ( v4 < 16 ); sub_639280((int)v31); byte_14D159AC = 0; if ( !*(_BYTE *)(a2 + 1) ) { while ( 1 ) { sub_466B30((int)&unk_D020420); v5 = timeGetTime(); v6 = v5; v7 = v5 - dword_14D129D8 + qword_14D129E0; v8 = __CFADD__(v6 - dword_14D129D8, (_DWORD)qword_14D129E0) + HIDWORD(qword_14D129E0); LODWORD(qword_14D129E0) = v7; HIDWORD(qword_14D129E0) = v8; dword_14D129DC = v6; dword_14D129E8 = 10 * __PAIR__(v8, v7) / 0x3E8; dword_14D129EC = (unsigned int)((unsigned int)(10 * (v6 - dword_14D129F0)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; if ( dword_14D129EC ) dword_14D129F0 = v6; dword_14D129D8 = v6; dword_13244CE2 = -1; dword_13245092 = -1; sub_5A97F0((void *)a2); sub_5A84C0((void *)a2); sub_5A8B00(&dword_14D16430, (int)"DB", a2); sub_5A8B00(&dword_14D148D0, (int)"Log", a2); sub_5A8B00(&dword_14D12A00, (int)"WMS", a2); sub_5A7B90((int)"ZoneCon", (int)&unk_13359E08); sub_5A7B90((int)"ZoneLis", (int)&dword_AF09800); if ( dword_AA0BF8 != (unsigned int)dword_AA0BC8 >> 25 ) break; LABEL_143: sub_46C9A0((int)&unk_14D138B8); sub_5A7FC0(&dword_14D16430, (int)"DB", (int)byte_14D16AE8, 2); sub_5A7FC0(&dword_14D148D0, (int)"Log", (int)byte_14D16AE8, 3); sub_5A7FC0(&dword_14D12A00, (int)"WMS", (int)byte_14D16AE8, 5); sub_5A7F60((int)&unk_13253630, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_54D890); sub_437AA0((int)&dword_87B264, a1); sub_5A7F60((int)&dword_13359DE8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_5ACE80); sub_5A7F60((int)&dword_DA0F780, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_4C73A0); sub_5A7F60((int)&dword_D41F888, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_473A90); word_AA0BF0 = 0; if ( dword_14D409A4 < (unsigned int)dword_14D129E8 ) dword_14D409A4 = dword_14D129E8 + 50; sub_5A8290(&dword_86B064); if ( dword_14D129E8 > (unsigned int)dword_D73D088 ) { dword_D73D088 += dword_D73D08C; sub_5A7F60((int)&unk_D714FF8, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_485C30); } dword_84BE38[dword_84BE30] = dword_14D129E8; dword_84BE30 = dword_84BE34 & (dword_84BE30 + 1); sub_612400((int)&dword_14D41B48); v2 = a2; ++*(_DWORD *)(v2 + 12); sub_4674F0((int)&unk_D020420); if ( *(_BYTE *)(a2 + 1) ) goto LABEL_148; } if ( dword_14D409D8 <= dword_14D409D0 ) { ++dword_14D409D4; if ( dword_14D409D4 >= dword_14D409CC ) { v9 = dword_1506B0E0; do { v9 = dword_1506B0E4 & (v9 + 1); dword_1506B0E0 = v9; dword_14D409DC = (unsigned __int16)word_150630E0[v9] - 50; } while ( !dword_14D409DC ); dword_14D409D4 = 0; } } else { *(_BYTE *)(a2 + 1) = 1; } v10 = dword_132669E4; v11 = *((_DWORD *)dword_132669E4 + 1); v12 = v11; if ( !*(_BYTE *)(v11 + 17) ) { do { sub_463310(*(void **)(v12 + 8)); v12 = *(_DWORD *)v12; operator delete((void *)v11); v11 = v12; } while ( !*(_BYTE *)(v12 + 17) ); v10 = dword_132669E4; } *((_DWORD *)v10 + 1) = v10; *(_DWORD *)dword_132669E4 = dword_132669E4; *((_DWORD *)dword_132669E4 + 2) = dword_132669E4; dword_AA0BC8 = (unsigned __int8)(dword_AA0C08 - 100) | (((_WORD)dword_AA0C04 + 1) << 8) & 0x1F00 | ((dword_AA0C00 & 0x3F | (((dword_AA0BF8 << 6) | dword_AA0BFC & 0x3F) << 6)) << 13); memcpy(&unk_AA0BCC, &word_AA0BF4, 0x24u); dword_132669E8 = 0; LOBYTE(word_AA0BF0) = 1; if ( !(dword_AA0BC8 & 0xFFF80000) ) HIBYTE(word_AA0BF0) = 1; dword_86B06C -= dword_86B06C / 100; sub_476990(); sub_5A2260(&unk_14D12A04); sub_5A0540(&word_86AD48); sub_5CF620(&v29); v13 = 0; LOBYTE(v40) = 1; v26 = 0; LABEL_19: if ( (unsigned __int16)v13 < 0xDu ) v14 = dword_1325381C[(unsigned __int16)v13]; else v14 = dword_1325381C[0]; v15 = 0; v25 = v14; v27 = 0; while ( 1 ) { if ( v15 >= *(_WORD *)(v14 + 4) || (v16 = 3 * v15, v17 = *(_DWORD *)(v14 + 8), v18 = *(_DWORD *)(v17 + 4 * v16), v30 = *(_BYTE *)(v17 + 4 * v16 + 8), !v18) ) { ++v13; v26 = v13; if ( v13 >= 13 ) { LOBYTE(v40) = 0; nullsub_2(&v29); if ( !byte_86D0B8 ) { a1 = dbl_86D0B0 * 1.01; dbl_86D0B0 = dbl_86D0B0 * 1.01; } if ( !sub_5D4FF0((int)&dword_14D40AE0, "xlrfunction", (int)&off_86D0C0) ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_mainthreadfunction : function call error", 0); loc_6391B0("ZoneServer::zs_mainthreadfunction"); } goto LABEL_143; } goto LABEL_19; } v29 = *(_WORD *)(v18 + 4); v19 = (unsigned __int8)sub_6303C0(&v29, (int)&v28); if ( v26 != v19 ) break; if ( v27 != v28 ) break; LABEL_137: ++v27; v15 = v27; v14 = v25; v13 = v26; } v20 = *(_WORD *)(v18 + 4); if ( !byte_7493ED ) goto LABEL_44; if ( byte_14D1571C ) { sprintf(&v38, "%.255s", "ZoneServer::zs_mainthreadfunction - so_GetZoneHandle["); v21 = dword_14D15598; if ( !dword_14D15598 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; LABEL_36: if ( !byte_7493ED ) goto LABEL_101; if ( !byte_14D1571C ) goto LABEL_45; if ( !v21 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; LABEL_45: if ( !byte_7493ED ) goto LABEL_101; if ( byte_14D1571C ) { sprintf(&v37, "%.255s", "] ObjType["); v21 = dword_14D15598; if ( dword_14D15598 ) goto LABEL_151; if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_53; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( v21 ) { fprintf(v21, "%s : ", &unk_14D155DC); v21 = dword_14D15598; if ( dword_14D15598 ) { LABEL_151: fputs(&v37, v21); v21 = dword_14D15598; } } } LABEL_53: if ( !byte_7493ED ) goto LABEL_101; if ( !byte_14D1571C ) goto LABEL_61; if ( !v21 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; LABEL_61: if ( !byte_7493ED ) goto LABEL_101; if ( byte_14D1571C ) { sprintf(&v35, "%.255s", ","); v21 = dword_14D15598; if ( dword_14D15598 ) goto LABEL_152; if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_69; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( v21 ) { fprintf(v21, "%s : ", &unk_14D155DC); v21 = dword_14D15598; if ( dword_14D15598 ) { LABEL_152: fputs(&v35, v21); v21 = dword_14D15598; } } } LABEL_69: if ( !byte_7493ED ) goto LABEL_101; if ( !byte_14D1571C ) goto LABEL_77; if ( !v21 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; LABEL_77: if ( !byte_7493ED ) goto LABEL_101; if ( !byte_14D1571C ) goto LABEL_85; sprintf(&v33, "%.255s", "] Index["); v21 = dword_14D15598; if ( dword_14D15598 ) goto LABEL_153; if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_85; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( v21 ) { fprintf(v21, "%s : ", &unk_14D155DC); v21 = dword_14D15598; if ( dword_14D15598 ) { LABEL_153: fputs(&v33, v21); v21 = dword_14D15598; } } LABEL_85: if ( byte_7493ED ) { if ( byte_14D1571C ) { if ( v21 ) goto LABEL_154; if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_93; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( v21 ) { fprintf(v21, "%s : ", &unk_14D155DC); v21 = dword_14D15598; if ( dword_14D15598 ) { LABEL_154: fprintf(v21, "%d", v27); v21 = dword_14D15598; goto LABEL_93; } } } LABEL_93: if ( !byte_7493ED || !byte_14D1571C ) goto LABEL_101; sprintf(&v32, "%.255s", ","); v21 = dword_14D15598; if ( !dword_14D15598 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_101; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) goto LABEL_101; } fputs(&v32, v21); v21 = dword_14D15598; } LABEL_101: v22 = v28; if ( !byte_7493ED ) { LABEL_117: v23 = v30; if ( !byte_7493ED ) goto LABEL_137; if ( byte_14D1571C ) { if ( v21 ) goto LABEL_155; if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_125; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( v21 ) { fprintf(v21, "%s : ", &unk_14D155DC); v21 = dword_14D15598; if ( dword_14D15598 ) { LABEL_155: fprintf(v21, "%d", v23); v21 = dword_14D15598; } } } LABEL_125: if ( !byte_7493ED ) goto LABEL_137; if ( !byte_14D1571C ) goto LABEL_133; sprintf(&v36, "%.255s", "]"); v21 = dword_14D15598; if ( !dword_14D15598 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_133; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) { LABEL_133: if ( byte_7493ED && byte_14D1571C ) { if ( v21 ) { sub_654AB0(10, v21); fflush(dword_14D15598); fclose(dword_14D15598); dword_14D15598 = 0; } } goto LABEL_137; } } fputs(&v36, v21); v21 = dword_14D15598; goto LABEL_133; } if ( byte_14D1571C ) { if ( v21 ) goto LABEL_156; if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_109; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( v21 ) { fprintf(v21, "%s : ", &unk_14D155DC); v21 = dword_14D15598; if ( dword_14D15598 ) { LABEL_156: fprintf(v21, "%d", v22); v21 = dword_14D15598; goto LABEL_109; } } } LABEL_109: if ( !byte_7493ED || !byte_14D1571C ) goto LABEL_117; sprintf(&v34, "%.255s", "] inlist["); v21 = dword_14D15598; if ( !dword_14D15598 ) { if ( !*(_BYTE *)sub_418D90((__time32_t)byte_14D15498) ) { v21 = 0; dword_14D15598 = 0; goto LABEL_117; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) goto LABEL_117; } fputs(&v34, v21); v21 = dword_14D15598; goto LABEL_117; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) goto LABEL_77; } fprintf(v21, "%d", v19); v21 = dword_14D15598; goto LABEL_77; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) goto LABEL_61; } fprintf(v21, "%d", v26); v21 = dword_14D15598; goto LABEL_61; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) goto LABEL_45; } fprintf(v21, "%d", v20); LABEL_44: v21 = dword_14D15598; goto LABEL_45; } v21 = fopen(byte_14D1561C, "a+"); dword_14D15598 = v21; if ( !v21 || (fprintf(v21, "%s : ", &unk_14D155DC), (v21 = dword_14D15598) == 0) ) goto LABEL_36; } fputs(&v38, v21); } v21 = dword_14D15598; goto LABEL_36; } LABEL_148: *(_BYTE *)v2 = 0; --dword_750CB8; v40 = -1; sub_467660((int)&unk_D020420, (int)"ZoneServer::zs_mainthreadfunction"); return 0; } // 7493ED: using guessed type char byte_7493ED; // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BE30: using guessed type int dword_84BE30; // 84BE34: using guessed type int dword_84BE34; // 84BE38: using guessed type int dword_84BE38[]; // 86AD48: using guessed type __int16 word_86AD48; // 86B064: using guessed type int dword_86B064; // 86B06C: using guessed type int dword_86B06C; // 86D0B0: using guessed type double dbl_86D0B0; // 86D0B8: using guessed type char byte_86D0B8; // 86D0C0: using guessed type int (__thiscall **off_86D0C0)(void *, char); // 86FEB8: using guessed type int __security_cookie; // AA0BC8: using guessed type int dword_AA0BC8; // AA0BF0: using guessed type __int16 word_AA0BF0; // AA0BF4: using guessed type __int16 word_AA0BF4; // AA0BF8: using guessed type int dword_AA0BF8; // AA0BFC: using guessed type int dword_AA0BFC; // AA0C00: using guessed type int dword_AA0C00; // AA0C04: using guessed type int dword_AA0C04; // AA0C08: using guessed type int dword_AA0C08; // AF09800: using guessed type int dword_AF09800; // D41F888: using guessed type int dword_D41F888; // D73D088: using guessed type int dword_D73D088; // D73D08C: using guessed type int dword_D73D08C; // DA0F780: using guessed type int dword_DA0F780; // 13244CE2: using guessed type int dword_13244CE2; // 13245092: using guessed type int dword_13245092; // 1325381C: using guessed type int dword_1325381C[]; // 132669E8: using guessed type int dword_132669E8; // 13359DE8: using guessed type int dword_13359DE8; // 14D129D8: using guessed type int dword_14D129D8; // 14D129DC: using guessed type int dword_14D129DC; // 14D129E0: using guessed type __int64 qword_14D129E0; // 14D129E8: using guessed type int dword_14D129E8; // 14D129EC: using guessed type int dword_14D129EC; // 14D129F0: using guessed type int dword_14D129F0; // 14D12A00: using guessed type int dword_14D12A00; // 14D148D0: using guessed type int dword_14D148D0; // 14D1571C: using guessed type char byte_14D1571C; // 14D159AC: using guessed type char byte_14D159AC; // 14D16430: using guessed type int dword_14D16430; // 14D409A4: using guessed type int dword_14D409A4; // 14D409CC: using guessed type int dword_14D409CC; // 14D409D0: using guessed type int dword_14D409D0; // 14D409D4: using guessed type int dword_14D409D4; // 14D409D8: using guessed type int dword_14D409D8; // 14D409DC: using guessed type int dword_14D409DC; // 14D40AE0: using guessed type int dword_14D40AE0; // 150630E0: using guessed type __int16 word_150630E0[]; // 1506B0E0: using guessed type int dword_1506B0E0; // 1506B0E4: using guessed type int dword_1506B0E4; // 5AA6C0: using guessed type int var_750[16]; //----- (005AB410) -------------------------------------------------------- int __cdecl sub_5AB410() { DWORD *v0; // ST14_4@1 void *v1; // ST0C_4@1 LPVOID v2; // esi@1 HANDLE v3; // eax@1 int v4; // eax@4 v0 = (DWORD *)((char *)lpParameter + 8); v1 = lpParameter; v2 = lpParameter; *(_WORD *)lpParameter = 0; v3 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_5AA6C0, v1, 0, v0); *((_DWORD *)v2 + 1) = v3; if ( v3 ) { while ( *(_BYTE *)v2 != 1 ) Sleep(5u); LOBYTE(v4) = 1; } else { LOBYTE(v4) = 0; } v4 = (unsigned __int8)v4; if ( !(_BYTE)v4 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_servicestart : MainThread fail", v4); loc_6391B0("ZoneServer_zs_service_mainthread"); } return 0; } //----- (005AB490) -------------------------------------------------------- char __thiscall sub_5AB490(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 bool v5; // zf@1 char v7; // [sp+4h] [bp-110h]@1 unsigned int v8; // [sp+104h] [bp-10h]@1 int v9; // [sp+110h] [bp-4h]@1 int v10; // [sp+114h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v3 = (int)this; sub_4D5720(&v7); v4 = *(_DWORD *)(v3 + 12) + 65; v5 = *(_BYTE *)v4 == 45; v9 = 0; if ( !v5 ) sub_5071A0(*(void **)(v3 + 68), v4, &v7, v3); v9 = -1; nullsub_2(&v7); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005AB520) -------------------------------------------------------- int __cdecl sub_5AB520(int a1) { double v1; // st7@1 int result; // eax@1 v1 = sub_5F4640(a1, 1, 0); result = 0; dword_DA22938 = (signed __int64)v1; return result; } // DA22938: using guessed type int dword_DA22938; //----- (005AB560) -------------------------------------------------------- int __cdecl sub_5AB560(int a1) { double v1; // st7@1 int result; // eax@1 v1 = sub_5F4640(a1, 1, 0); result = 0; dword_DA2293C = (signed __int64)v1; return result; } // DA2293C: using guessed type int dword_DA2293C; //----- (005AB5A0) -------------------------------------------------------- int __thiscall sub_5AB5A0(void *this) { __time32_t v1; // ecx@1 nullsub_2(this); sub_5A7CA0("Assert"); sub_5A7D50(v1); sub_4D4A90(&off_84F3F0); sub_4D53B0(&off_8516B0); sub_4D2CC0(&off_84BFD0); sub_4D49F0(&off_84E298); sub_4D39F0(&off_84D138); sub_4D4B40(&off_850550); return 0; } // 84BFD0: using guessed type int (__thiscall **off_84BFD0)(void *, char); // 84D138: using guessed type int (__thiscall **off_84D138)(void *, char); // 84E298: using guessed type int (__thiscall **off_84E298)(void *, char); // 84F3F0: using guessed type int (__thiscall **off_84F3F0)(void *, char); // 850550: using guessed type int (__thiscall **off_850550)(void *, char); // 8516B0: using guessed type int (__thiscall **off_8516B0)(void *, char); //----- (005AB600) -------------------------------------------------------- int __cdecl sub_5AB600() { sub_5C4E10("../9Data/Shine/"); sub_507F50(); dword_D9FAF98 = (int)&unk_1335A9C0; return 0; } // D9FAF98: using guessed type int dword_D9FAF98; //----- (005AB630) -------------------------------------------------------- int __cdecl sub_5AB630() { FILE *v0; // esi@1 FILE *v1; // esi@1 FILE *v2; // esi@1 FILE *v3; // esi@1 FILE *v4; // esi@1 FILE *v5; // esi@1 FILE *v6; // esi@1 FILE *v7; // esi@1 FILE *v8; // esi@1 FILE *v9; // esi@1 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "bmpdata"); fclose(v0); sub_439040(&dword_8B36A8); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "fieldlist"); fclose(v1); sub_464840(&unk_CFCF380, (int)&unk_14D17034); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", "skilldatabox"); fclose(v2); loc_583BF0(&unk_132577A0, &unk_14D17034); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "passivedatabox"); fclose(v3); sub_5834D0((int)&dword_13258088, (int)&unk_14D17034); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "upgradedatabox"); fclose(v4); sub_593ED0(&dword_132587D8, (int)&unk_14D17034); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "merchantcity"); fclose(v5); sub_4C6D60(&dword_D9FBEE0); v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n", "gathertable"); fclose(v6); sub_469820(&dword_D0204E0); v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n", "recipebook"); fclose(v7); sub_469A00(&dword_D0205D8); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n", "useditemeffect"); fclose(v8); sub_59A740((int)&dword_13258868); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n", "kqreward"); fclose(v9); sub_499B60(&dword_D64C520, (int)&unk_14D17034); return 0; } // D0204E0: using guessed type int dword_D0204E0; // D0205D8: using guessed type int dword_D0205D8; // D64C520: using guessed type int dword_D64C520; // D9FBEE0: using guessed type int dword_D9FBEE0; // 13258088: using guessed type int dword_13258088; // 132587D8: using guessed type int dword_132587D8; // 13258868: using guessed type int dword_13258868; //----- (005AB860) -------------------------------------------------------- int __cdecl sub_5AB860() { FILE *v0; // esi@1 FILE *v1; // esi@1 int v2; // eax@1 int v3; // eax@1 FILE *v4; // esi@1 FILE *v5; // esi@1 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "ridedatabox"); fclose(v0); sub_44FA70(&dword_AA08E8); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "ui_ride"); fclose(v1); v2 = (int)sub_59A6B0((int)"UseRide"); sub_650330((int)&off_86ACC0, v2); v3 = (int)sub_59A6B0((int)"UseSumPup"); sub_5947A0((int)&off_86AD40, v3); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "Roaming Data"); fclose(v4); sub_4B7C80(&unk_D9FB7F8, (int)&unk_14D17034); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "miscdatatable"); fclose(v5); sub_4A7670(&unk_D73D278); return 0; } // 86ACC0: using guessed type int (__thiscall **off_86ACC0)(void *, char); // 86AD40: using guessed type int (__thiscall **off_86AD40)(void *, char); // AA08E8: using guessed type int dword_AA08E8; //----- (005AB970) -------------------------------------------------------- int __usercall sub_5AB970(int a1, int a2) { FILE *v2; // esi@1 FILE *v3; // esi@1 FILE *v4; // esi@1 FILE *v5; // esi@1 FILE *v6; // esi@1 FILE *v7; // esi@1 FILE *v8; // esi@1 FILE *v9; // esi@1 FILE *v10; // esi@1 sub_649790(&unk_150B11D8, (int)&unk_14D17034); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", "DamageBySoul"); fclose(v2); sub_45C910(&dword_AF09A70, (int)&unk_14D17034); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "MobRegist"); fclose(v3); sub_6417D0(&dword_1508B308); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "MobDataBox"); fclose(v4); sub_63E760(&unk_14D159B0); sub_4AE9D0(&dword_848F94, (int)&unk_14D17034); sub_49E4C0(&unk_D714FF8); sub_49EE10(&dword_D73D090); sub_649480(&dword_1508BA78); sub_649120(&dword_1508B988); sub_649350(&dword_1508BA10); sub_4602A0(&unk_CFCDB50); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "MapData"); fclose(v5); sub_64B4C0(&unk_14D20370); v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n", "ItemData"); fclose(v6); sub_645FE0((int)&dword_14D20890); sub_647A70(&dword_1508B5A8); sub_48EDF0((int)&unk_D5552D0, a1, a2, (int)v6, (int)&unk_14D17034); sub_4FB410(&unk_1321F620, (int)&unk_14D17034); v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n", "ItemGroupClassifier"); fclose(v7); sub_48F6E0((int)&unk_D565B30); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n", "SubAbstateDic"); fclose(v8); sub_416780((int)&unk_8770A0); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n", "AbstateDic"); fclose(v9); sub_416A30(&unk_877138); v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n", "RandomOptionTable"); fclose(v10); sub_493A20(&dword_D61E064, (int)&unk_14D17034); sub_499C30((int)&unk_14D17034); sub_45C250((int)&unk_AF099B8, (int)&unk_14D17034, "DamageByAngle_Mob"); sub_45C250((int)&unk_AF09900, (int)&unk_14D17034, "DamageByAngle_Chr"); sub_63D360(&unk_14D130B8, "../9Data/Shine/UseClassTypeInfo.shn"); sub_469510(&dword_D020440); return 0; } // 848F94: using guessed type int dword_848F94; // D020440: using guessed type int dword_D020440; // D73D090: using guessed type int dword_D73D090; // 14D20890: using guessed type int dword_14D20890; // 1508B308: using guessed type int dword_1508B308; // 1508B5A8: using guessed type int dword_1508B5A8; // 1508B988: using guessed type int dword_1508B988; // 1508BA10: using guessed type int dword_1508BA10; // 1508BA78: using guessed type int dword_1508BA78; //----- (005ABC30) -------------------------------------------------------- int __cdecl sub_5ABC30() { FILE *v0; // esi@1 FILE *v1; // esi@3 FILE *v2; // esi@3 FILE *v3; // esi@5 FILE *v4; // esi@7 int v5; // edi@9 signed int v6; // esi@11 FILE *v7; // esi@15 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "gMiniHouseObjEffect"); fclose(v0); if ( !sub_627480(&unk_132669A0, "../9Data/Shine/MiniHouseFurnitureObjEffect.shn", 4627, 210) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'MiniHouseFurnitureObjEffect.shn'", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "minihouseenduredatabox"); fclose(v1); sub_4A0450(&dword_D73D100); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", "gMiniHouseDiceRate"); fclose(v2); if ( !sub_627480(&unk_1325CE70, "../9Data/Shine/DiceRate.shn", 10, 4) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'DiceRate.shn'", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "gMiniHouseDiecGame"); fclose(v3); if ( !sub_627480(&unk_1325CCB0, "../9Data/Shine/DiceGame.shn", 2097, 44) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'DiecGame.shn'", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "gMiniHouseDiceDividind"); fclose(v4); if ( !sub_627480(&unk_13266A70, "../9Data/Shine/DiceDividind.shn", 2686, 31) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'DiceDividind.shn'", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } v5 = sub_626BC0((int)&unk_13266A70, 0); if ( v5 == 0 ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'DiceDividind.shn'", 1); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } sub_6310A0(&unk_13357DA8, *(_BYTE *)(v5 + 30)); v6 = 0; do { sub_630F00(&unk_13359670, v6, *(_WORD *)(v5 + 2 * v6)); ++v6; } while ( (unsigned int)v6 < 0xF ); if ( !sub_630EE0(&unk_13359670) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'DiceDividind.shn'", 2); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n", "ItemMixData"); fclose(v7); if ( !sub_632220((int)&unk_13359240, "../9Data/Shine/ItemMix.shn", 44, 64) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'ItemMix.shn'", 3); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } return 0; } // 5ABC30: using guessed type int sub_5ABC30(); // D73D100: using guessed type int dword_D73D100; //----- (005ABEF0) -------------------------------------------------------- int __cdecl sub_5ABEF0() { FILE *v0; // esi@1 FILE *v1; // esi@1 FILE *v2; // esi@1 char *v3; // eax@1 FILE *v4; // esi@1 FILE *v5; // esi@3 FILE *v6; // esi@5 FILE *v7; // esi@7 FILE *v8; // esi@9 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "itemmall"); fclose(v0); sub_492520(&unk_D56DC78); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "ItemEquipTable"); fclose(v1); sub_492410(&unk_D61DC80); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", "zipc_SetNextIP"); fclose(v2); v3 = sub_5A7540(byte_14D16AE8); sub_5A7470(&unk_13258988, *((_DWORD *)v3 + 4)); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "gCharacterTitleData"); fclose(v4); if ( !sub_5B66D0(&unk_1325CFD8, "../9Data/Shine/CharacterTitleData.shn", 2456, 172) ) { sub_639100(&unk_86DDD8, (int)"Fail to read CharacterTitleData.shn", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_moon"); } v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "CharacterTitleStateServer"); fclose(v5); if ( !sub_5C7B70((int)&unk_1325D0A0, "../9Data/Shine/CharacterTitleStateServer.shn", 100, 38) ) { sub_639100(&unk_86DDD8, (int)"Fail to read CharacterTitleStateServer.shn", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_moon"); } v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n", "gAnnounceSystem"); fclose(v6); if ( !sub_5B66D0(&unk_133595F0, "../9Data/Shine/AnnounceData.shn", 571, 264) ) { sub_639100(&unk_86DDD8, (int)"Fail to read AnnounceData.shn", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_moon"); } v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n", "gClassName"); fclose(v7); if ( !sub_627220(&unk_1325CBC8, "../9Data/Shine/ClassName.shn") ) { sub_639100(&unk_86DDD8, (int)"Fail to read ClassName.shn", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_moon"); } v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n", "gItemUpgrade"); fclose(v8); if ( !sub_627480(&unk_1325CA78, "../9Data/Shine/ItemUpgrade.shn", 81, 14) ) { sub_639100(&unk_86DDD8, (int)"Fail to read ItemUpgrade.shn", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_moon"); } return 0; } // 5ABEF0: using guessed type int sub_5ABEF0(); //----- (005AC180) -------------------------------------------------------- int __cdecl sub_5AC180() { int v0; // eax@1 sub_4815E0(); sub_6495E0(&unk_150A0980, (int)&unk_14D17034, (int)"ETC"); sub_6495E0(&unk_15090128, (int)&unk_14D17034, (int)"MenuString"); v0 = sub_48C200(&unk_150A0980, "DeamonDead"); if ( !*(_BYTE *)v0 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer_zs_start_yellow : DeamonDead needed", *(_BYTE *)v0 != 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_yellow"); } return 0; } // 5AC180: using guessed type int sub_5AC180(); //----- (005AC200) -------------------------------------------------------- int __cdecl sub_5AC200() { FILE *v0; // esi@1 char v2; // [sp+4h] [bp-68h]@1 unsigned int v3; // [sp+68h] [bp-4h]@1 int v4; // [sp+6Ch] [bp+0h]@1 v3 = (unsigned int)&v4 ^ __security_cookie; sprintf(&v2, "Player Buffer size : %d", 1500); v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", &v2); fclose(v0); return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC280) -------------------------------------------------------- char __thiscall sub_5AC280(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); result = 1; } else { result = 0; } return result; } //----- (005AC2D0) -------------------------------------------------------- char __thiscall sub_5AC2D0(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (005AC330) -------------------------------------------------------- char __thiscall sub_5AC330(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v5 + 12); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (005AC390) -------------------------------------------------------- void *__thiscall sub_5AC390(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6F5CAC; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CAC: using guessed type int (__thiscall *off_6F5CAC)(void *, char); //----- (005AC3D0) -------------------------------------------------------- void *__thiscall sub_5AC3D0(void *this) { void *v1; // esi@1 v1 = this; sub_467810(this); return v1; } //----- (005AC3F0) -------------------------------------------------------- void *__thiscall sub_5AC3F0(void *this) { void *v1; // esi@1 v1 = this; sub_469120(this); return v1; } //----- (005AC410) -------------------------------------------------------- void *__thiscall sub_5AC410(void *this) { void *v1; // esi@1 v1 = this; sub_5A0810(this); return v1; } //----- (005AC430) -------------------------------------------------------- void *__thiscall sub_5AC430(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 141, 43) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 141, 141, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC4E0) -------------------------------------------------------- void *__thiscall sub_5AC4E0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 488, 111) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 488, 488, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC590) -------------------------------------------------------- void *__thiscall sub_5AC590(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1017, 148) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1017, 1017, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC650) -------------------------------------------------------- void *__thiscall sub_5AC650(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 126, 42) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 126, 126, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC720) -------------------------------------------------------- void *__thiscall sub_5AC720(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 16, 7) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 16, 16, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC7D0) -------------------------------------------------------- void *__thiscall sub_5AC7D0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 273, 74) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 273, 273, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC8B0) -------------------------------------------------------- void *__thiscall sub_5AC8B0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 56, 12) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 56, 56, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005AC960) -------------------------------------------------------- void *__thiscall sub_5AC960(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 103, 40) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 103, 103, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005ACA10) -------------------------------------------------------- void *__thiscall sub_5ACA10(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 35, 12) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 35, 35, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005ACAB0) -------------------------------------------------------- void *__thiscall sub_5ACAB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5CD0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CD0: using guessed type int (__thiscall *off_6F5CD0)(void *, char); //----- (005ACAE0) -------------------------------------------------------- void *__thiscall sub_5ACAE0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5CD8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CD8: using guessed type int (__thiscall *off_6F5CD8)(void *, char); //----- (005ACB10) -------------------------------------------------------- void *__thiscall sub_5ACB10(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5CE0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CE0: using guessed type int (__thiscall *off_6F5CE0)(void *, char); //----- (005ACB40) -------------------------------------------------------- void *__thiscall sub_5ACB40(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5CE8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CE8: using guessed type int (__thiscall *off_6F5CE8)(void *, char); //----- (005ACB70) -------------------------------------------------------- void *__thiscall sub_5ACB70(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5CF0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CF0: using guessed type int (__thiscall *off_6F5CF0)(void *, char); //----- (005ACBA0) -------------------------------------------------------- void *__thiscall sub_5ACBA0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5CF8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CF8: using guessed type int (__thiscall *off_6F5CF8)(void *, char); //----- (005ACBD0) -------------------------------------------------------- void *__thiscall sub_5ACBD0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5D00; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5D00: using guessed type int (__thiscall *off_6F5D00)(void *, char); //----- (005ACC00) -------------------------------------------------------- void *__thiscall sub_5ACC00(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5D08; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5D08: using guessed type int (__thiscall *off_6F5D08)(void *, char); //----- (005ACC30) -------------------------------------------------------- void *__thiscall sub_5ACC30(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5D10; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5D10: using guessed type int (__thiscall *off_6F5D10)(void *, char); //----- (005ACC60) -------------------------------------------------------- void *__thiscall sub_5ACC60(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F5D18; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5D18: using guessed type int (__thiscall *off_6F5D18)(void *, char); //----- (005ACC90) -------------------------------------------------------- int __cdecl sub_5ACC90() { FILE *v0; // esi@1 FILE *v1; // esi@3 int v2; // esi@3 FILE *v3; // esi@5 int v4; // eax@5 FILE *v5; // esi@7 int v6; // edi@8 int v7; // esi@10 int v8; // ecx@12 void *v9; // eax@15 int v10; // eax@15 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "gItemDismantle"); fclose(v0); if ( !sub_627480(&unk_132668E0, "../9Data/Shine/ItemDismantle.shn", 9530, 102) ) { sub_639100(&unk_86DDD8, (int)"Fail to read ItemDismantle.shn", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_sink"); } v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "gQuestData"); fclose(v1); v2 = dword_1325D040; if ( !sub_633CD0((int)&unk_1325D028, "../9Data/Shine/QuestData.shn", 0) ) { sub_639100(&unk_86DDD8, (int)"Fail to read Quest.shn Error Type", v2); loc_6391B0(0); } v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "gQuestParserData"); fclose(v3); v4 = (unsigned __int8)sub_6366E0("../9Data/Shine/World/QuestParser.txt"); if ( !(_BYTE)v4 ) { sub_639100(&unk_86DDD8, (int)"QuestParser.txt", v4); loc_6391B0(0); } v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "gQuestData"); fclose(v5); if ( dword_1325D038 ) { LOWORD(v6) = *(_WORD *)(dword_1325D038 + 2); if ( (unsigned __int16)v6 > 0xBB8u ) { sub_639100(&unk_86DDD8, (int)&unk_6F5D68, 0); loc_6391B0(0); } } else { LOWORD(v6) = 0; } v7 = 0; v6 = (unsigned __int16)v6; do { if ( (unsigned __int16)v7 < *(_WORD *)(dword_13253824 + 4) ) v8 = *(_DWORD *)(*(_DWORD *)(dword_13253824 + 8) + 12 * (unsigned __int16)v7); else v8 = 0; v9 = (void *)(*(int (**)(void))(*(_DWORD *)v8 + 2056))(); v10 = (int)sub_5CF620(v9); if ( !sub_62BEA0(v10, v6) ) { sub_639150(&unk_86DDD8, (int)"Fail to player quest bf alloc", v7, v6); loc_6391B0("ZoneServer::ZoneServer_zs_start_sink"); } ++v7; } while ( v7 < 1500 ); return 0; } // 13253824: using guessed type int dword_13253824; // 1325D038: using guessed type int dword_1325D038; // 1325D040: using guessed type int dword_1325D040; //----- (005ACE80) -------------------------------------------------------- char __thiscall sub_5ACE80(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"EventReserveListElement::erle_Routine"); dword_7508B8[dword_750CB8] = (int)"EventReserveListElement::erle_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)v3 <= (unsigned int)dword_14D129E8 ) { (***((void (****)(void))v3 + 1))(); v4 = *((_DWORD *)v3 + 3); if ( v4 ) *(_DWORD *)v3 += v4; else (*(void (__stdcall **)(int))(*(_DWORD *)a2 + 12))(a3); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"EventReserveListElement::erle_Routine"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005ACF50) -------------------------------------------------------- char __thiscall sub_5ACF50(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_DWORD *)v2 = *(_DWORD *)a2; *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v2 + 12) = *(_DWORD *)(a2 + 12); result = 1; } else { result = 0; } return result; } //----- (005ACFA0) -------------------------------------------------------- FILE *__thiscall sub_5ACFA0(void *this, const char *a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@1 int v6; // ecx@1 FILE *result; // eax@1 unsigned int v8; // esi@1 int v9; // edi@3 signed int v10; // eax@7 int i; // edi@11 int v12; // eax@12 int v13; // ecx@12 unsigned int v14; // ecx@15 int v15; // edx@16 int v16; // edx@17 int v17; // edi@18 int v18; // [sp+14h] [bp+8h]@16 v4 = (int)this; sub_5AC430(this, a2); v5 = 8 * *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); v6 = (unsigned __int64)*(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) >> 29 != 0; *(_DWORD *)(v4 + 112) = *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); result = (FILE *)unknown_libname_130(v5 | -v6); v8 = 0; *(_DWORD *)(v4 + 108) = result; if ( *(_DWORD *)(v4 + 112) > 0 ) { do { if ( v8 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ) v9 = sub_626BC0(v4, v8); else v9 = v4 + 64; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Null argument", v8); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } v10 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v9 + 2)); if ( v10 == -1 ) LOWORD(v10) = -1; *(_WORD *)(*(_DWORD *)(v4 + 108) + 8 * v8) = v10; *(_DWORD *)(*(_DWORD *)(v4 + 108) + 8 * v8 + 4) = v9; if ( *(_WORD *)(*(_DWORD *)(v4 + 108) + 8 * v8) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Invalid item", v9 + 2); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v8 - 1); ++i ) { v12 = *(_DWORD *)(v4 + 108); v13 = **(_WORD **)(v12 + 8 * i + 4); if ( (_WORD)v13 == **(_WORD **)(v12 + 8 * v8 + 4) ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Same Handle", v13); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } } v14 = *(_WORD *)(*(_DWORD *)(v4 + 108) + 8 * v8); result = (FILE *)v14; if ( v14 < dword_14D20894 ) { v15 = dword_14D21184 + 40 * v14; v18 = v15; if ( v15 ) { v16 = *(_DWORD *)v15; if ( v16 ) { v17 = *(_WORD *)v16; if ( (_WORD)v17 == (_WORD)v14 ) { result = *(FILE **)(*(_DWORD *)v18 + 102); if ( result != (FILE *)27 && result != (FILE *)28 ) { if ( result != (FILE *)29 ) result = (FILE *)sub_594070((int)&dword_13258868, *(_WORD *)(*(_DWORD *)(v4 + 108) + 8 * v8), a3, a4); } } else { result = sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v14); } } } } ++v8; } while ( (signed int)v8 < *(_DWORD *)(v4 + 112) ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 13258868: using guessed type int dword_13258868; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (005AD170) -------------------------------------------------------- FILE *__thiscall sub_5AD170(void *this, const char *a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@1 int v6; // ecx@1 FILE *result; // eax@1 unsigned int v8; // esi@1 int v9; // edi@3 signed int v10; // eax@7 int i; // edi@11 int v12; // eax@12 int v13; // ecx@12 unsigned int v14; // ecx@15 int v15; // edx@16 int v16; // edx@17 int v17; // edi@18 int v18; // [sp+14h] [bp+8h]@16 v4 = (int)this; sub_5AC4E0(this, a2); v5 = 8 * *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); v6 = (unsigned __int64)*(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) >> 29 != 0; *(_DWORD *)(v4 + 180) = *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); result = (FILE *)unknown_libname_130(v5 | -v6); v8 = 0; *(_DWORD *)(v4 + 176) = result; if ( *(_DWORD *)(v4 + 180) > 0 ) { do { if ( v8 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ) v9 = sub_626BC0(v4, v8); else v9 = v4 + 64; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Null argument", v8); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } v10 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v9 + 2)); if ( v10 == -1 ) LOWORD(v10) = -1; *(_WORD *)(*(_DWORD *)(v4 + 176) + 8 * v8) = v10; *(_DWORD *)(*(_DWORD *)(v4 + 176) + 8 * v8 + 4) = v9; if ( *(_WORD *)(*(_DWORD *)(v4 + 176) + 8 * v8) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Invalid item", v9 + 2); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v8 - 1); ++i ) { v12 = *(_DWORD *)(v4 + 176); v13 = **(_WORD **)(v12 + 8 * i + 4); if ( (_WORD)v13 == **(_WORD **)(v12 + 8 * v8 + 4) ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Same Handle", v13); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } } v14 = *(_WORD *)(*(_DWORD *)(v4 + 176) + 8 * v8); result = (FILE *)v14; if ( v14 < dword_14D20894 ) { v15 = dword_14D21184 + 40 * v14; v18 = v15; if ( v15 ) { v16 = *(_DWORD *)v15; if ( v16 ) { v17 = *(_WORD *)v16; if ( (_WORD)v17 == (_WORD)v14 ) { result = *(FILE **)(*(_DWORD *)v18 + 102); if ( result != (FILE *)27 && result != (FILE *)28 ) { if ( result != (FILE *)29 ) result = (FILE *)sub_594070((int)&dword_13258868, *(_WORD *)(*(_DWORD *)(v4 + 176) + 8 * v8), a3, a4); } } else { result = sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v14); } } } } ++v8; } while ( (signed int)v8 < *(_DWORD *)(v4 + 180) ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 13258868: using guessed type int dword_13258868; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (005AD370) -------------------------------------------------------- FILE *__thiscall sub_5AD370(void *this, const char *a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@1 int v6; // ecx@1 FILE *result; // eax@1 unsigned int v8; // esi@1 int v9; // edi@3 signed int v10; // eax@7 int i; // edi@11 int v12; // eax@12 int v13; // ecx@12 unsigned int v14; // ecx@15 int v15; // edx@16 int v16; // edx@17 int v17; // edi@18 int v18; // [sp+14h] [bp+8h]@16 v4 = (int)this; sub_5AC590(this, a2); v5 = 8 * *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); v6 = (unsigned __int64)*(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) >> 29 != 0; *(_DWORD *)(v4 + 216) = *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40); result = (FILE *)unknown_libname_130(v5 | -v6); v8 = 0; *(_DWORD *)(v4 + 212) = result; if ( *(_DWORD *)(v4 + 216) > 0 ) { do { if ( v8 < *(_DWORD *)(*(_DWORD *)(v4 + 52) + 40) ) v9 = sub_626BC0(v4, v8); else v9 = v4 + 64; if ( !v9 ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Null argument", v8); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } v10 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v9 + 2)); if ( v10 == -1 ) LOWORD(v10) = -1; *(_WORD *)(*(_DWORD *)(v4 + 212) + 8 * v8) = v10; *(_DWORD *)(*(_DWORD *)(v4 + 212) + 8 * v8 + 4) = v9; if ( *(_WORD *)(*(_DWORD *)(v4 + 212) + 8 * v8) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Invalid item", v9 + 2); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v8 - 1); ++i ) { v12 = *(_DWORD *)(v4 + 212); v13 = **(_WORD **)(v12 + 8 * i + 4); if ( (_WORD)v13 == **(_WORD **)(v12 + 8 * v8 + 4) ) { sub_639100(&unk_86DDD8, (int)"ChargedItemEffectDataBox::cideb_Load : Same Handle", v13); loc_6391B0("ChargedItemEffectDataBox::cideb_Load"); } } v14 = *(_WORD *)(*(_DWORD *)(v4 + 212) + 8 * v8); result = (FILE *)v14; if ( v14 < dword_14D20894 ) { v15 = dword_14D21184 + 40 * v14; v18 = v15; if ( v15 ) { v16 = *(_DWORD *)v15; if ( v16 ) { v17 = *(_WORD *)v16; if ( (_WORD)v17 == (_WORD)v14 ) { result = *(FILE **)(*(_DWORD *)v18 + 102); if ( result != (FILE *)27 && result != (FILE *)28 ) { if ( result != (FILE *)29 ) result = (FILE *)sub_594070((int)&dword_13258868, *(_WORD *)(*(_DWORD *)(v4 + 212) + 8 * v8), a3, a4); } } else { result = sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v14); } } } } ++v8; } while ( (signed int)v8 < *(_DWORD *)(v4 + 216) ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 13258868: using guessed type int dword_13258868; // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (005AD570) -------------------------------------------------------- char __cdecl sub_5AD570() { return 1; } //----- (005AD580) -------------------------------------------------------- bool __stdcall sub_5AD580(char a1) { return a1 != -1; } //----- (005AD590) -------------------------------------------------------- char __thiscall sub_5AD590(void *this) { signed int v1; // ebx@1 void *v2; // esi@1 unsigned int i; // edi@1 int v4; // eax@2 int v5; // eax@4 signed int v6; // eax@4 void *v7; // eax@10 unsigned int j; // ebx@10 int v9; // eax@11 int v10; // eax@13 int v11; // edi@13 char result; // al@16 char v13; // [sp+Ch] [bp-4h]@1 v1 = -1; v2 = this; v13 = -1; for ( i = 0; ; ++i ) { v4 = *((_DWORD *)v2 + 14); if ( !v4 ) break; if ( i >= *(_DWORD *)(v4 + 40) ) break; v5 = sub_626BC0((int)((char *)v2 + 4), i); v6 = (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 12))(v2, v5); if ( (unsigned __int8)v6 > v1 ) { v13 = v6; v1 = v6; } } if ( v1 < 0 ) { LABEL_16: result = 0; } else { if ( *((_DWORD *)v2 + 49) ) sub_6530A4(*((void **)v2 + 49)); v7 = (void *)unknown_libname_130(4 * (v1 + 1) | -((unsigned __int64)(unsigned int)(v1 + 1) >> 30 != 0)); *((_DWORD *)v2 + 49) = v7; memset(v7, 0, 4 * v1 + 4); for ( j = 0; ; ++j ) { v9 = *((_DWORD *)v2 + 14); if ( !v9 ) break; if ( j >= *(_DWORD *)(v9 + 40) ) break; v10 = sub_626BC0((int)((char *)v2 + 4), j); v11 = 4 * (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 12))(v2, v10); if ( *(_DWORD *)(v11 + *((_DWORD *)v2 + 49)) ) { sub_6530A4(*((void **)v2 + 49)); *((_DWORD *)v2 + 49) = 0; goto LABEL_16; } *(_DWORD *)(v11 + *((_DWORD *)v2 + 49)) = sub_626BC0((int)((char *)v2 + 4), j); } *((_BYTE *)v2 + 200) = v13; result = 1; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (005AD6A0) -------------------------------------------------------- void *__thiscall sub_5AD6A0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5ED0; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5ED0: using guessed type int (*off_6F5ED0[2])(); //----- (005AD720) -------------------------------------------------------- void *__thiscall sub_5AD720(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5EE0; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5EE0: using guessed type int (*off_6F5EE0[2])(); //----- (005AD7A0) -------------------------------------------------------- void *__thiscall sub_5AD7A0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5EF0; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5EF0: using guessed type int (*off_6F5EF0[2])(); //----- (005AD820) -------------------------------------------------------- void *__thiscall sub_5AD820(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F00; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F00: using guessed type int (*off_6F5F00[2])(); //----- (005AD8A0) -------------------------------------------------------- void *__thiscall sub_5AD8A0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F10; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F10: using guessed type int (*off_6F5F10[2])(); //----- (005AD920) -------------------------------------------------------- void *__thiscall sub_5AD920(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F30; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F30: using guessed type int (*off_6F5F30[2])(); //----- (005AD9A0) -------------------------------------------------------- void *__thiscall sub_5AD9A0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F40; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F40: using guessed type int (*off_6F5F40[2])(); //----- (005ADA20) -------------------------------------------------------- void *__thiscall sub_5ADA20(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F50; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F50: using guessed type int (*off_6F5F50[2])(); //----- (005ADAA0) -------------------------------------------------------- void *__thiscall sub_5ADAA0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F80; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F80: using guessed type int (*off_6F5F80[2])(); //----- (005ADB20) -------------------------------------------------------- void *__thiscall sub_5ADB20(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5FB0; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5FB0: using guessed type int (*off_6F5FB0[2])(); //----- (005ADBA0) -------------------------------------------------------- void *__thiscall sub_5ADBA0(void *this, char a2) { void *v2; // esi@1 void *v3; // ST00_4@1 v2 = this; v3 = (void *)*((_DWORD *)this + 49); *(_DWORD *)this = off_6F5FC0; sub_6530A4(v3); *(_DWORD *)v2 = off_6F5FB0; sub_626B50((int)((char *)v2 + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5FB0: using guessed type int (*off_6F5FB0[2])(); // 6F5FC0: using guessed type int (*off_6F5FC0[2])(); //----- (005ADC30) -------------------------------------------------------- void *__thiscall sub_5ADC30(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5FF8; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5FF8: using guessed type int (*off_6F5FF8[2])(); //----- (005ADCB0) -------------------------------------------------------- void *__thiscall sub_5ADCB0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F6058; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F6058: using guessed type int (*off_6F6058[2])(); //----- (005ADD30) -------------------------------------------------------- int __stdcall sub_5ADD30(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_6186186 || (result = operator new(42 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005ADD90) -------------------------------------------------------- int __stdcall sub_5ADD90(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_71C71C7 || (result = operator new(36 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005ADDF0) -------------------------------------------------------- int __stdcall sub_5ADDF0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x24924924 || (result = operator new(7 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005ADE50) -------------------------------------------------------- int __stdcall sub_5ADE50(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_3759F22 || (result = operator new(74 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005ADEB0) -------------------------------------------------------- int __stdcall sub_5ADEB0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_6666666 || (result = operator new(40 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005ADF10) -------------------------------------------------------- int __stdcall sub_5ADF10(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x3FFFFFFF || (result = operator new(4 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005ADF70) -------------------------------------------------------- int __cdecl sub_5ADF70(int a1, int a2, int a3) { int result; // eax@1 for ( result = a1; result != a2; result += 4 ) *(_DWORD *)result = *(_DWORD *)a3; return result; } //----- (005ADFA0) -------------------------------------------------------- void *__thiscall sub_5ADFA0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 void *v4; // edi@2 void *v5; // eax@3 v2 = this; *(_DWORD *)this = &off_6F5D28; v3 = (void *)*((_DWORD *)this + 6); if ( v3 ) { v4 = (char *)v3 - 4; _LN21(v3, 0x10u, *((_DWORD *)v3 - 1), nullsub_2); sub_6530A4(v4); } v5 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6F5CAC; if ( v5 ) sub_6530A4(v5); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5CAC: using guessed type int (__thiscall *off_6F5CAC)(void *, char); // 6F5D28: using guessed type int (__thiscall *off_6F5D28)(void *, char); //----- (005AE040) -------------------------------------------------------- int __cdecl sub_5AE040() { FILE *v0; // esi@1 FILE *v1; // esi@1 FILE *v2; // esi@1 FILE *v3; // esi@1 int v4; // eax@1 FILE *v5; // esi@1 int v6; // eax@1 FILE *v7; // esi@1 int v8; // eax@1 FILE *v9; // esi@1 FILE *v10; // esi@1 FILE *v11; // esi@1 FILE *v12; // esi@1 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "itemusefunction"); fclose(v0); sub_49A990(); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "magiccontainer"); fclose(v1); sub_49BA10(&unk_D64C6B8); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", "mobattseq"); fclose(v2); sub_4A7D80(&unk_D740EB0); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "chargedbuffdatabox"); fclose(v3); v4 = (int)sub_59A6B0((int)"UseSkill"); sub_5ACFA0(&dword_AA0A90, "../9Data/Shine/ChargedEffect.shn", (int)off_86ACB0, v4); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "minihousedatabox"); fclose(v5); v6 = (int)sub_59A6B0((int)"UseSkill"); sub_5AD170(&dword_AA0B08, "../9Data/Shine/MiniHouse.shn", (int)off_86ACB4, v6); v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n", "minihousefurnituredatabox"); fclose(v7); v8 = (int)sub_59A6B0((int)"UseSkill"); sub_5AD370(&dword_AA07C0, "../9Data/Shine/MiniHouseFurniture.shn", (int)off_86ACBC, v8); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n", "minihouseobjanidatabox"); fclose(v9); sub_4A0BE0(&unk_D73D158); v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n", "kqregentable"); fclose(v10); sub_4B2940(&unk_D9FB4B8); v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n", "g_AIScriptMobContainer"); fclose(v11); sub_622FD0(&unk_14D41FC0); v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n", "g_AIScriptPetContainer"); fclose(v12); sub_623150(&unk_14D41FD0); return 0; } // 86ACB0: using guessed type int (__thiscall *off_86ACB0[5])(void *, char); // 86ACB4: using guessed type int (__thiscall *off_86ACB4[4])(void *, char); // 86ACBC: using guessed type int (__thiscall *off_86ACBC[2])(void *, char); // AA07C0: using guessed type int dword_AA07C0; // AA0A90: using guessed type int dword_AA0A90; // AA0B08: using guessed type int dword_AA0B08; //----- (005AE2A0) -------------------------------------------------------- char __thiscall sub_5AE2A0(void *this, const char *a2, __int16 a3) { void *v3; // edi@1 FILE *v4; // esi@1 int v5; // ST14_4@2 int v6; // ST10_4@2 char *v7; // eax@2 FILE *v8; // esi@2 const char *v9; // eax@2 FILE *v10; // esi@6 FILE *v11; // esi@13 FILE *v12; // esi@15 FILE *v13; // esi@15 void *v14; // eax@15 FILE *v15; // esi@19 unsigned int i; // eax@19 void *v17; // ecx@20 void *v18; // eax@23 FILE *v19; // esi@30 FILE *v21; // esi@32 unsigned int v22; // [sp-4h] [bp-16Ch]@1 int v23; // [sp+14h] [bp-154h]@2 DWORD cbData; // [sp+18h] [bp-150h]@7 DWORD Type; // [sp+1Ch] [bp-14Ch]@7 int v26; // [sp+20h] [bp-148h]@1 __int64 v27; // [sp+24h] [bp-144h]@7 __int64 v28; // [sp+2Ch] [bp-13Ch]@7 HKEY hKey; // [sp+34h] [bp-134h]@6 char *v30; // [sp+38h] [bp-130h]@2 unsigned int v31; // [sp+48h] [bp-120h]@19 unsigned int v32; // [sp+4Ch] [bp-11Ch]@2 BYTE Data; // [sp+58h] [bp-110h]@7 unsigned int v34; // [sp+158h] [bp-10h]@1 int v35; // [sp+164h] [bp-4h]@2 int v36; // [sp+168h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v22 = (unsigned int)&v36 ^ __security_cookie; v3 = this; v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "HTML"); fclose(v4); v26 = 0; while ( 1 ) { sub_649C00((int)((char *)v3 + 64), (int)&v23); sub_610220((int)&v30); v5 = v23; v35 = 0; v6 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 4); v7 = sub_5A7540(byte_14D16AE8); sub_60FFE0((int)&v30, a2, a3, (int)"boot", *((_DWORD *)v7 + 3), v6, v5); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n", " Pass 0"); fclose(v8); v9 = v30; dword_14D409D0 = 0; dword_14D409CC = 0; dword_14D409C8 = 0; if ( v32 < 0x10 ) v9 = (const char *)&v30; sscanf(v9, "[%d][%d]", &dword_14D409CC, &dword_14D409D0, v22); if ( (unsigned int)(dword_14D409CC - 1) > 0x275F ) { dword_14D409CC = 100; goto LABEL_29; } if ( (unsigned int)dword_14D409D0 > 0xA ) { dword_14D409D0 = 5; goto LABEL_29; } v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n", " Pass 1"); fclose(v10); if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\GBO", 0, 0x201u, &hKey) ) { v27 = 0i64; v28 = 0i64; cbData = 256; Type = 1; Data = 0; if ( !RegQueryValueExA(hKey, "Natural", 0, &Type, &Data, &cbData) ) sscanf((const char *)&Data, "%I64d", &v27); if ( !RegQueryValueExA(hKey, "Desert", 0, &Type, &Data, &cbData) ) sscanf((const char *)&Data, "%I64d", &v28); if ( !v27 || !v28 ) { v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n", " Code"); fclose(v11); } RegCloseKey(hKey); sub_6102F0((int)&v30, v27, v28); } v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n", " Pass 2"); fclose(v12); sub_6104F0((int)&v30); v13 = fopen("Message.txt", "a"); fprintf(v13, "%s\n", " Pass 3"); fclose(v13); v14 = v30; if ( v32 < 0x10 ) v14 = &v30; if ( sub_5D4300((int)&dword_14D40AE0, (int)v14) ) break; sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start_old : Script error", 0); LABEL_29: Sleep(0x3E8u); v35 = -1; sub_610240((int)&v30); ++v26; if ( v26 >= 1 ) { v19 = fopen("Message.txt", "a"); fprintf(v19, "%s\n", " Fly"); fclose(v19); return 0; } } v15 = fopen("Message.txt", "a"); fprintf(v15, "%s\n", " Pass 4"); fclose(v15); for ( i = 0; i < v31; *((_BYTE *)v17 + i++) = 32 ) { v17 = v30; if ( v32 < 0x10 ) v17 = &v30; } v18 = v30; v31 = 0; if ( v32 < 0x10 ) v18 = &v30; *(_BYTE *)v18 = 0; if ( !sub_5D4FF0((int)&dword_14D40AE0, "chrlghk", (int)&off_86D0C0) ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start_old : function call error", 0); goto LABEL_29; } v21 = fopen("Message.txt", "a"); fprintf(v21, "%s\n", " Sun"); fclose(v21); v35 = -1; sub_610240((int)&v30); return 1; } // 86D0C0: using guessed type int (__thiscall **off_86D0C0)(void *, char); // 86FEB8: using guessed type int __security_cookie; // 14D409C8: using guessed type int dword_14D409C8; // 14D409CC: using guessed type int dword_14D409CC; // 14D409D0: using guessed type int dword_14D409D0; // 14D40AE0: using guessed type int dword_14D40AE0; //----- (005AE7A0) -------------------------------------------------------- char __thiscall sub_5AE7A0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6F6068; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6F6068: using guessed type int (__stdcall *off_6F6068)(int, int); //----- (005AE920) -------------------------------------------------------- void *__cdecl sub_5AE920(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 42 ) { if ( result ) memcpy(result, v3, 0x2Au); v3 = (char *)v3 + 42; } return result; } //----- (005AE960) -------------------------------------------------------- int __cdecl sub_5AE960(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 7 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_WORD *)(result + 4) = *(_WORD *)(v3 + 4); *(_BYTE *)(result + 6) = *(_BYTE *)(v3 + 6); } v3 += 7; } return result; } //----- (005AE9A0) -------------------------------------------------------- void *__cdecl sub_5AE9A0(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 74 ) { if ( result ) memcpy(result, v3, 0x4Au); v3 = (char *)v3 + 74; } return result; } //----- (005AE9E0) -------------------------------------------------------- int __cdecl sub_5AE9E0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 12 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); } v3 += 12; } return result; } //----- (005AEA20) -------------------------------------------------------- void *__cdecl sub_5AEA20(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 40 ) { if ( result ) memcpy(result, v3, 0x28u); v3 = (char *)v3 + 40; } return result; } //----- (005AEA60) -------------------------------------------------------- char __thiscall sub_5AEA60(void *this) { void *v1; // edi@1 FILE *v2; // eax@1 FILE *v3; // eax@1 FILE *v4; // esi@1 FILE *v5; // esi@1 char result; // al@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", &unk_6F6268); fclose(v4); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "ZoneServer::zs_start_old"); fclose(v5); dword_14D409D8 = 0; dword_14D409D4 = 0; dword_14D409DC = 0; result = sub_5AE2A0(v1, "127.0.0.1", -7044); if ( !result ) result = sub_5AE2A0(v1, "cert.fo.gamigo", 80); return result; } // 14D409D4: using guessed type int dword_14D409D4; // 14D409D8: using guessed type int dword_14D409D8; // 14D409DC: using guessed type int dword_14D409DC; //----- (005AEB20) -------------------------------------------------------- void *__thiscall sub_5AEB20(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5ED0; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359870 & 1) ) { dword_13359870 |= 1u; atexit(sub_69CA70); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6294; return v1; } // 6F5ED0: using guessed type int (*off_6F5ED0[2])(); // 6F6294: using guessed type int (*off_6F6294[2])(); // 13359870: using guessed type int dword_13359870; //----- (005AEB60) -------------------------------------------------------- void *__thiscall sub_5AEB60(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5EE0; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359874 & 1) ) { dword_13359874 |= 1u; atexit(sub_69CA40); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F62A4; return v1; } // 6F5EE0: using guessed type int (*off_6F5EE0[2])(); // 6F62A4: using guessed type int (*off_6F62A4[2])(); // 13359874: using guessed type int dword_13359874; //----- (005AEBA0) -------------------------------------------------------- void *__thiscall sub_5AEBA0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5EF0; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359878 & 1) ) { dword_13359878 |= 1u; atexit(sub_69CA10); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F62B4; return v1; } // 6F5EF0: using guessed type int (*off_6F5EF0[2])(); // 6F62B4: using guessed type int (*off_6F62B4[2])(); // 13359878: using guessed type int dword_13359878; //----- (005AEBE0) -------------------------------------------------------- void *__thiscall sub_5AEBE0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F00; sub_626B20((int)((char *)this + 4)); if ( !(dword_1335987C & 1) ) { dword_1335987C |= 1u; atexit(sub_69C9E0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F62C4; return v1; } // 6F5F00: using guessed type int (*off_6F5F00[2])(); // 6F62C4: using guessed type int (*off_6F62C4[2])(); // 1335987C: using guessed type int dword_1335987C; //----- (005AEC20) -------------------------------------------------------- void *__thiscall sub_5AEC20(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F10; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359880 & 1) ) { dword_13359880 |= 1u; atexit(sub_69C9B0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F62D4; return v1; } // 6F5F10: using guessed type int (*off_6F5F10[2])(); // 6F62D4: using guessed type int (*off_6F62D4[2])(); // 13359880: using guessed type int dword_13359880; //----- (005AEC60) -------------------------------------------------------- void *__thiscall sub_5AEC60(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F20; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359884 & 1) ) { dword_13359884 |= 1u; atexit(sub_69C980); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F62E4; return v1; } // 6F5F20: using guessed type int (*off_6F5F20[2])(); // 6F62E4: using guessed type int (*off_6F62E4[2])(); // 13359884: using guessed type int dword_13359884; //----- (005AECA0) -------------------------------------------------------- void *__thiscall sub_5AECA0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F20; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F20: using guessed type int (*off_6F5F20[2])(); //----- (005AED20) -------------------------------------------------------- void *__thiscall sub_5AED20(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F30; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359888 & 1) ) { dword_13359888 |= 1u; atexit(sub_69C950); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F62F4; return v1; } // 6F5F30: using guessed type int (*off_6F5F30[2])(); // 6F62F4: using guessed type int (*off_6F62F4[2])(); // 13359888: using guessed type int dword_13359888; //----- (005AED60) -------------------------------------------------------- void *__thiscall sub_5AED60(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F40; sub_626B20((int)((char *)this + 4)); if ( !(dword_1335988C & 1) ) { dword_1335988C |= 1u; atexit(sub_69C920); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6304; return v1; } // 6F5F40: using guessed type int (*off_6F5F40[2])(); // 6F6304: using guessed type int (*off_6F6304[2])(); // 1335988C: using guessed type int dword_1335988C; //----- (005AEDA0) -------------------------------------------------------- void *__thiscall sub_5AEDA0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F50; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359890 & 1) ) { dword_13359890 |= 1u; atexit(sub_69C8F0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6314; return v1; } // 6F5F50: using guessed type int (*off_6F5F50[2])(); // 6F6314: using guessed type int (*off_6F6314[2])(); // 13359890: using guessed type int dword_13359890; //----- (005AEDE0) -------------------------------------------------------- void *__thiscall sub_5AEDE0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F60; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359894 & 1) ) { dword_13359894 |= 1u; atexit(sub_69C8C0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6324; return v1; } // 6F5F60: using guessed type int (*off_6F5F60[2])(); // 6F6324: using guessed type int (*off_6F6324[2])(); // 13359894: using guessed type int dword_13359894; //----- (005AEE20) -------------------------------------------------------- void *__thiscall sub_5AEE20(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F60; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F60: using guessed type int (*off_6F5F60[2])(); //----- (005AEEA0) -------------------------------------------------------- void *__thiscall sub_5AEEA0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F70; sub_626B20((int)((char *)this + 4)); if ( !(dword_13359898 & 1) ) { dword_13359898 |= 1u; atexit(sub_69C890); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6334; return v1; } // 6F5F70: using guessed type int (*off_6F5F70[2])(); // 6F6334: using guessed type int (*off_6F6334[2])(); // 13359898: using guessed type int dword_13359898; //----- (005AEEE0) -------------------------------------------------------- void *__thiscall sub_5AEEE0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F70; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F70: using guessed type int (*off_6F5F70[2])(); //----- (005AEF60) -------------------------------------------------------- void *__thiscall sub_5AEF60(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F80; sub_626B20((int)((char *)this + 4)); if ( !(dword_1335989C & 1) ) { dword_1335989C |= 1u; atexit(sub_69C860); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6344; return v1; } // 6F5F80: using guessed type int (*off_6F5F80[2])(); // 6F6344: using guessed type int (*off_6F6344[2])(); // 1335989C: using guessed type int dword_1335989C; //----- (005AEFA0) -------------------------------------------------------- void *__thiscall sub_5AEFA0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5F90; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598A0 & 1) ) { dword_133598A0 |= 1u; atexit(sub_69C830); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6354; return v1; } // 6F5F90: using guessed type int (*off_6F5F90[2])(); // 6F6354: using guessed type int (*off_6F6354[2])(); // 133598A0: using guessed type int dword_133598A0; //----- (005AEFE0) -------------------------------------------------------- void *__thiscall sub_5AEFE0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5F90; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5F90: using guessed type int (*off_6F5F90[2])(); //----- (005AF060) -------------------------------------------------------- void *__thiscall sub_5AF060(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5FA0; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598A4 & 1) ) { dword_133598A4 |= 1u; atexit(sub_69C800); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6364; return v1; } // 6F5FA0: using guessed type int (*off_6F5FA0[2])(); // 6F6364: using guessed type int (*off_6F6364[2])(); // 133598A4: using guessed type int dword_133598A4; //----- (005AF0A0) -------------------------------------------------------- void *__thiscall sub_5AF0A0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5FA0; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5FA0: using guessed type int (*off_6F5FA0[2])(); //----- (005AF120) -------------------------------------------------------- void *__thiscall sub_5AF120(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5FD8; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598A8 & 1) ) { dword_133598A8 |= 1u; atexit(sub_69C7D0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6374; return v1; } // 6F5FD8: using guessed type int (*off_6F5FD8[2])(); // 6F6374: using guessed type int (*off_6F6374[2])(); // 133598A8: using guessed type int dword_133598A8; //----- (005AF160) -------------------------------------------------------- void *__thiscall sub_5AF160(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5FD8; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5FD8: using guessed type int (*off_6F5FD8[2])(); //----- (005AF1E0) -------------------------------------------------------- void *__thiscall sub_5AF1E0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5FE8; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598AC & 1) ) { dword_133598AC |= 1u; atexit(sub_69C7A0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6384; return v1; } // 6F5FE8: using guessed type int (*off_6F5FE8[2])(); // 6F6384: using guessed type int (*off_6F6384[2])(); // 133598AC: using guessed type int dword_133598AC; //----- (005AF220) -------------------------------------------------------- void *__thiscall sub_5AF220(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F5FE8; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F5FE8: using guessed type int (*off_6F5FE8[2])(); //----- (005AF2A0) -------------------------------------------------------- void *__thiscall sub_5AF2A0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5FF8; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598B0 & 1) ) { dword_133598B0 |= 1u; atexit(sub_69C770); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F6394; return v1; } // 6F5FF8: using guessed type int (*off_6F5FF8[2])(); // 6F6394: using guessed type int (*off_6F6394[2])(); // 133598B0: using guessed type int dword_133598B0; //----- (005AF2E0) -------------------------------------------------------- void *__thiscall sub_5AF2E0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F6008; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598B4 & 1) ) { dword_133598B4 |= 1u; atexit(sub_69C740); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F63A4; return v1; } // 6F6008: using guessed type int (*off_6F6008[2])(); // 6F63A4: using guessed type int (*off_6F63A4[2])(); // 133598B4: using guessed type int dword_133598B4; //----- (005AF320) -------------------------------------------------------- void *__thiscall sub_5AF320(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F6008; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F6008: using guessed type int (*off_6F6008[2])(); //----- (005AF3A0) -------------------------------------------------------- void *__thiscall sub_5AF3A0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F6018; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598B8 & 1) ) { dword_133598B8 |= 1u; atexit(sub_69C710); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F63B4; return v1; } // 6F6018: using guessed type int (*off_6F6018[2])(); // 6F63B4: using guessed type int (*off_6F63B4[2])(); // 133598B8: using guessed type int dword_133598B8; //----- (005AF3E0) -------------------------------------------------------- int __cdecl sub_5AF3E0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359858 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359858: using guessed type int dword_13359858; //----- (005AF400) -------------------------------------------------------- void *__thiscall sub_5AF400(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 17) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 17) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 17) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 17) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 17) ) goto LABEL_11; return result; } //----- (005AF460) -------------------------------------------------------- int __cdecl sub_5AF460(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (005AF480) -------------------------------------------------------- void *__thiscall sub_5AF480(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 17) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 17) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 17); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (005AF4D0) -------------------------------------------------------- int __thiscall sub_5AF4D0(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 17) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005AF530) -------------------------------------------------------- int __thiscall sub_5AF530(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= 0x3FFFFFFE ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 16) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 16) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 17) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 16) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 16) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 17) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 16) = 1; *(_BYTE *)(v13 + 16) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 16) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 16) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 17) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 16) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 16) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 17) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 16) = 1; *(_BYTE *)(v22 + 16) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 16) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 16) = 1; return result; } //----- (005AF760) -------------------------------------------------------- void *__thiscall sub_5AF760(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F6018; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F6018: using guessed type int (*off_6F6018[2])(); //----- (005AF7E0) -------------------------------------------------------- int __thiscall sub_5AF7E0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 17) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_5AF480(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 17) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 17) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 17) ) { v9 = v6; } else { v9 = sub_461ED0(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 17) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_461EB0(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 17) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 17) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 16); *(_BYTE *)(v5 + 16) = *(_BYTE *)(v3 + 16); *(_BYTE *)(v3 + 16) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 16) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 16) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 16) ) { *(_BYTE *)(v15 + 16) = 1; *(_BYTE *)(v6 + 16) = 0; sub_5AF4D0(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 17) ) goto LABEL_53; 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; sub_462EC0(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 16) = *(_BYTE *)(v6 + 16); *(_BYTE *)(v6 + 16) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) = 1; sub_5AF4D0(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 16) ) { *(_BYTE *)(v15 + 16) = 1; *(_BYTE *)(v6 + 16) = 0; sub_462EC0(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 17) ) goto LABEL_53; 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; sub_5AF4D0(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 16) = *(_BYTE *)(v6 + 16); *(_BYTE *)(v6 + 16) = 1; *(_BYTE *)(*(_DWORD *)v15 + 16) = 1; sub_462EC0(i, v6); break; } } *(_BYTE *)(v15 + 16) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 16) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005AFA30) -------------------------------------------------------- int __thiscall sub_5AFA30(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 17) ) { do { sub_463310(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 17) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (005AFA80) -------------------------------------------------------- void *__thiscall sub_5AFA80(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F6028; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598BC & 1) ) { dword_133598BC |= 1u; atexit(sub_69C6E0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F63C4; return v1; } // 6F6028: using guessed type int (*off_6F6028[2])(); // 6F63C4: using guessed type int (*off_6F63C4[2])(); // 133598BC: using guessed type int dword_133598BC; //----- (005AFAC0) -------------------------------------------------------- void *__thiscall sub_5AFAC0(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F6028; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F6028: using guessed type int (*off_6F6028[2])(); //----- (005AFB40) -------------------------------------------------------- void *__thiscall sub_5AFB40(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F6038; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598C0 & 1) ) { dword_133598C0 |= 1u; atexit(sub_69C6B0); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F63D4; return v1; } // 6F6038: using guessed type int (*off_6F6038[2])(); // 6F63D4: using guessed type int (*off_6F63D4[2])(); // 133598C0: using guessed type int dword_133598C0; //----- (005AFB80) -------------------------------------------------------- void *__thiscall sub_5AFB80(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F6038; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F6038: using guessed type int (*off_6F6038[2])(); //----- (005AFC00) -------------------------------------------------------- void *__thiscall sub_5AFC00(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F6048; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598C4 & 1) ) { dword_133598C4 |= 1u; atexit(sub_69C680); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F63E4; return v1; } // 6F6048: using guessed type int (*off_6F6048[2])(); // 6F63E4: using guessed type int (*off_6F63E4[2])(); // 133598C4: using guessed type int dword_133598C4; //----- (005AFC40) -------------------------------------------------------- void *__thiscall sub_5AFC40(char *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F6048; sub_626B50((int)(this + 4)); sub_626C10((int)((char *)v2 + 4)); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F6048: using guessed type int (*off_6F6048[2])(); //----- (005AFCC0) -------------------------------------------------------- void *__thiscall sub_5AFCC0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F6058; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598C8 & 1) ) { dword_133598C8 |= 1u; atexit(sub_69C650); } *((_BYTE *)v1 + 68) = 0; *(_DWORD *)v1 = off_6F63F4; return v1; } // 6F6058: using guessed type int (*off_6F6058[2])(); // 6F63F4: using guessed type int (*off_6F63F4[2])(); // 133598C8: using guessed type int dword_133598C8; //----- (005AFD00) -------------------------------------------------------- int __thiscall sub_5AFD00(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // ebx@1 int v5; // ecx@1 int v6; // eax@1 int v7; // edx@3 signed int v8; // eax@3 int v9; // ecx@6 int v11; // [sp+28h] [bp+8h]@4 v2 = this; v3 = a2; v4 = 0; *(_DWORD *)this = &off_6F5CAC; *(_DWORD *)(this + 16) = 0; sub_5AE7A0(this, a2); *(_DWORD *)v2 = &off_6F5D28; v5 = 16 * v3 | -((unsigned __int64)(unsigned int)v3 >> 28 != 0); v6 = unknown_libname_130((v5 + 4) | -__CFADD__(v5, 4)); if ( v6 ) { v4 = v6 + 4; *(_DWORD *)v6 = a2; _eh_vector_constructor_iterator_((void *)(v6 + 4), 0x10u, a2, (int)sub_5CF620, nullsub_2); } v7 = 0; v8 = 0; *(_DWORD *)(v2 + 24) = v4; if ( a2 > 0 ) { v11 = 0; do { if ( v8 < *(_WORD *)(v2 + 4) ) { v9 = v11 + *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)v9 ) *(_DWORD *)v9 = v7 + *(_DWORD *)(v2 + 24); } v11 += 12; ++v8; v7 += 16; } while ( v8 < v3 ); } return v2; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6F5CAC: using guessed type int (__thiscall *off_6F5CAC)(void *, char); // 6F5D28: using guessed type int (__thiscall *off_6F5D28)(void *, char); //----- (005AFDE0) -------------------------------------------------------- int __thiscall sub_5AFDE0(void *this, int a2) { unsigned __int16 v2; // di@1 void *v3; // esi@1 int v4; // eax@3 int v6; // [sp+8h] [bp-8h]@3 v2 = a2; v3 = this; a2 = sub_5CC800(this, a2); if ( a2 == 0 ) { sub_639100(&unk_86DDD8, (int)"Invalid ItemActionCondition-ID", v2); loc_6391B0("Action::addCondition"); } v4 = sub_4632A0((char *)v3 + 12, (int)&a2); return sub_554220((int)((char *)v3 + 12), (int)&v6, (void *)v4, 0); } //----- (005AFE50) -------------------------------------------------------- int __thiscall sub_5AFE50(void *this, int a2) { unsigned __int16 v2; // di@1 void *v3; // esi@1 int v4; // eax@3 int v6; // [sp+8h] [bp-8h]@3 v2 = a2; v3 = this; a2 = sub_5CDAF0(this, a2); if ( a2 == 0 ) { sub_639100(&unk_86DDD8, (int)"Invalid ItemActionEffect-ID", v2); loc_6391B0("Action::addEffect"); } v4 = sub_4632A0((char *)v3 + 28, (int)&a2); return sub_554220((int)((char *)v3 + 28), (int)&v6, (void *)v4, 0); } //----- (005AFEC0) -------------------------------------------------------- int __thiscall sub_5AFEC0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 17) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 17) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 17); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_5AF7E0((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5AFA30(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (005AFF60) -------------------------------------------------------- bool __cdecl sub_5AFF60(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13244B78; if ( !dword_13244B78 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEB20(v2); else v1 = 0; dword_13244B78 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13244B78 + 4), a1) && (v3 = *(_DWORD *)(dword_13244B78 + 56)) != 0 && *(_DWORD *)v3 == 81 ) { v4 = a1; v5 = dword_13244B78 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13244B78 + 4))() != 0; } else { result = 0; } return result; } // 13244B78: using guessed type int dword_13244B78; //----- (005B0040) -------------------------------------------------------- bool __cdecl sub_5B0040(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359824; if ( !dword_13359824 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEB60(v2); else v1 = 0; dword_13359824 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359824 + 4), a1) && (v3 = *(_DWORD *)(dword_13359824 + 56)) != 0 && *(_DWORD *)v3 == 879 ) { v4 = a1; v5 = dword_13359824 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359824 + 4))() != 0; } else { result = 0; } return result; } // 13359824: using guessed type int dword_13359824; //----- (005B0120) -------------------------------------------------------- bool __cdecl sub_5B0120(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359828; if ( !dword_13359828 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEBA0(v2); else v1 = 0; dword_13359828 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359828 + 4), a1) && (v3 = *(_DWORD *)(dword_13359828 + 56)) != 0 && *(_DWORD *)v3 == 23 ) { v4 = a1; v5 = dword_13359828 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359828 + 4))() != 0; } else { result = 0; } return result; } // 13359828: using guessed type int dword_13359828; //----- (005B0200) -------------------------------------------------------- bool __cdecl sub_5B0200(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_1335982C; if ( !dword_1335982C ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEBE0(v2); else v1 = 0; dword_1335982C = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_1335982C + 4), a1) && (v3 = *(_DWORD *)(dword_1335982C + 56)) != 0 && *(_DWORD *)v3 == 18 ) { v4 = a1; v5 = dword_1335982C + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_1335982C + 4))() != 0; } else { result = 0; } return result; } // 1335982C: using guessed type int dword_1335982C; //----- (005B02E0) -------------------------------------------------------- bool __cdecl sub_5B02E0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359830; if ( !dword_13359830 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEC20(v2); else v1 = 0; dword_13359830 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359830 + 4), a1) && (v3 = *(_DWORD *)(dword_13359830 + 56)) != 0 && *(_DWORD *)v3 == 251 ) { v4 = a1; v5 = dword_13359830 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359830 + 4))() != 0; } else { result = 0; } return result; } // 13359830: using guessed type int dword_13359830; //----- (005B03C0) -------------------------------------------------------- bool __cdecl sub_5B03C0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359834; if ( !dword_13359834 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEC60(v2); else v1 = 0; dword_13359834 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359834 + 4), a1) && (v3 = *(_DWORD *)(dword_13359834 + 56)) != 0 && *(_DWORD *)v3 == 44 ) { v4 = a1; v5 = dword_13359834 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359834 + 4))() != 0; } else { result = 0; } return result; } // 13359834: using guessed type int dword_13359834; //----- (005B04A0) -------------------------------------------------------- bool __cdecl sub_5B04A0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359838; if ( !dword_13359838 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AED20(v2); else v1 = 0; dword_13359838 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359838 + 4), a1) && (v3 = *(_DWORD *)(dword_13359838 + 56)) != 0 && *(_DWORD *)v3 == 70 ) { v4 = a1; v5 = dword_13359838 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359838 + 4))() != 0; } else { result = 0; } return result; } // 13359838: using guessed type int dword_13359838; //----- (005B0580) -------------------------------------------------------- bool __cdecl sub_5B0580(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_D554210; if ( !dword_D554210 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AED60(v2); else v1 = 0; dword_D554210 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_D554210 + 4), a1) && (v3 = *(_DWORD *)(dword_D554210 + 56)) != 0 && *(_DWORD *)v3 == 7 ) { v4 = a1; v5 = dword_D554210 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_D554210 + 4))() != 0; } else { result = 0; } return result; } // D554210: using guessed type int dword_D554210; //----- (005B0660) -------------------------------------------------------- bool __cdecl sub_5B0660(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_D554214; if ( !dword_D554214 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEDA0(v2); else v1 = 0; dword_D554214 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_D554214 + 4), a1) && (v3 = *(_DWORD *)(dword_D554214 + 56)) != 0 && *(_DWORD *)v3 == 383 ) { v4 = a1; v5 = dword_D554214 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_D554214 + 4))() != 0; } else { result = 0; } return result; } // D554214: using guessed type int dword_D554214; //----- (005B0740) -------------------------------------------------------- bool __cdecl sub_5B0740(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_1335983C; if ( !dword_1335983C ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEDE0(v2); else v1 = 0; dword_1335983C = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_1335983C + 4), a1) && (v3 = *(_DWORD *)(dword_1335983C + 56)) != 0 && *(_DWORD *)v3 == 44 ) { v4 = a1; v5 = dword_1335983C + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_1335983C + 4))() != 0; } else { result = 0; } return result; } // 1335983C: using guessed type int dword_1335983C; //----- (005B0820) -------------------------------------------------------- bool __cdecl sub_5B0820(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_D554218; if ( !dword_D554218 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEEA0(v2); else v1 = 0; dword_D554218 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_D554218 + 4), a1) && (v3 = *(_DWORD *)(dword_D554218 + 56)) != 0 && *(_DWORD *)v3 == 1 ) { v4 = a1; v5 = dword_D554218 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_D554218 + 4))() != 0; } else { result = 0; } return result; } // D554218: using guessed type int dword_D554218; //----- (005B0900) -------------------------------------------------------- bool __cdecl sub_5B0900(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359840; if ( !dword_13359840 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEF60(v2); else v1 = 0; dword_13359840 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359840 + 4), a1) && (v3 = *(_DWORD *)(dword_13359840 + 56)) != 0 && *(_DWORD *)v3 == 150 ) { v4 = a1; v5 = dword_13359840 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359840 + 4))() != 0; } else { result = 0; } return result; } // 13359840: using guessed type int dword_13359840; //----- (005B09E0) -------------------------------------------------------- bool __cdecl sub_5B09E0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359844; if ( !dword_13359844 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AEFA0(v2); else v1 = 0; dword_13359844 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359844 + 4), a1) && (v3 = *(_DWORD *)(dword_13359844 + 56)) != 0 && *(_DWORD *)v3 == 7 ) { v4 = a1; v5 = dword_13359844 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359844 + 4))() != 0; } else { result = 0; } return result; } // 13359844: using guessed type int dword_13359844; //----- (005B0AC0) -------------------------------------------------------- bool __cdecl sub_5B0AC0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359848; if ( !dword_13359848 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AF060(v2); else v1 = 0; dword_13359848 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359848 + 4), a1) && (v3 = *(_DWORD *)(dword_13359848 + 56)) != 0 && *(_DWORD *)v3 == 7 ) { v4 = a1; v5 = dword_13359848 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359848 + 4))() != 0; } else { result = 0; } return result; } // 13359848: using guessed type int dword_13359848; //----- (005B0BA0) -------------------------------------------------------- bool __cdecl sub_5B0BA0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_1324488C; if ( !dword_1324488C ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AF120(v2); else v1 = 0; dword_1324488C = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_1324488C + 4), a1) && (v3 = *(_DWORD *)(dword_1324488C + 56)) != 0 && *(_DWORD *)v3 == 1 ) { v4 = a1; v5 = dword_1324488C + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_1324488C + 4))() != 0; } else { result = 0; } return result; } // 1324488C: using guessed type int dword_1324488C; //----- (005B0C80) -------------------------------------------------------- bool __cdecl sub_5B0C80(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_1335984C; if ( !dword_1335984C ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AF1E0(v2); else v1 = 0; dword_1335984C = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_1335984C + 4), a1) && (v3 = *(_DWORD *)(dword_1335984C + 56)) != 0 && *(_DWORD *)v3 == 45 ) { v4 = a1; v5 = dword_1335984C + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_1335984C + 4))() != 0; } else { result = 0; } return result; } // 1335984C: using guessed type int dword_1335984C; //----- (005B0D60) -------------------------------------------------------- bool __cdecl sub_5B0D60(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359850; if ( !dword_13359850 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AF2A0(v2); else v1 = 0; dword_13359850 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359850 + 4), a1) && (v3 = *(_DWORD *)(dword_13359850 + 56)) != 0 && *(_DWORD *)v3 == 279 ) { v4 = a1; v5 = dword_13359850 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359850 + 4))() != 0; } else { result = 0; } return result; } // 13359850: using guessed type int dword_13359850; //----- (005B0E40) -------------------------------------------------------- bool __cdecl sub_5B0E40(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359854; if ( !dword_13359854 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AF2E0(v2); else v1 = 0; dword_13359854 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359854 + 4), a1) && (v3 = *(_DWORD *)(dword_13359854 + 56)) != 0 && *(_DWORD *)v3 == 154 ) { v4 = a1; v5 = dword_13359854 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359854 + 4))() != 0; } else { result = 0; } return result; } // 13359854: using guessed type int dword_13359854; //----- (005B0F20) -------------------------------------------------------- bool __cdecl sub_5B0F20(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359858; if ( !dword_13359858 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AF3A0(v2); else v1 = 0; dword_13359858 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359858 + 4), a1) && (v3 = *(_DWORD *)(dword_13359858 + 56)) != 0 && *(_DWORD *)v3 == 64 ) { v4 = a1; v5 = dword_13359858 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359858 + 4))() != 0; } else { result = 0; } return result; } // 13359858: using guessed type int dword_13359858; //----- (005B1000) -------------------------------------------------------- bool __cdecl sub_5B1000(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_1335985C; if ( !dword_1335985C ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AFA80(v2); else v1 = 0; dword_1335985C = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_1335985C + 4), a1) && (v3 = *(_DWORD *)(dword_1335985C + 56)) != 0 && *(_DWORD *)v3 == 16 ) { v4 = a1; v5 = dword_1335985C + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_1335985C + 4))() != 0; } else { result = 0; } return result; } // 1335985C: using guessed type int dword_1335985C; //----- (005B10E0) -------------------------------------------------------- bool __cdecl sub_5B10E0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359860; if ( !dword_13359860 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AFB40(v2); else v1 = 0; dword_13359860 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359860 + 4), a1) && (v3 = *(_DWORD *)(dword_13359860 + 56)) != 0 && *(_DWORD *)v3 == 14 ) { v4 = a1; v5 = dword_13359860 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359860 + 4))() != 0; } else { result = 0; } return result; } // 13359860: using guessed type int dword_13359860; //----- (005B11C0) -------------------------------------------------------- bool __cdecl sub_5B11C0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359864; if ( !dword_13359864 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AFC00(v2); else v1 = 0; dword_13359864 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359864 + 4), a1) && (v3 = *(_DWORD *)(dword_13359864 + 56)) != 0 && *(_DWORD *)v3 == 21 ) { v4 = a1; v5 = dword_13359864 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359864 + 4))() != 0; } else { result = 0; } return result; } // 13359864: using guessed type int dword_13359864; //----- (005B12A0) -------------------------------------------------------- bool __cdecl sub_5B12A0(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_13359868; if ( !dword_13359868 ) { v2 = (void *)operator new(0xC4u); if ( v2 ) v1 = (int)sub_5AFCC0(v2); else v1 = 0; dword_13359868 = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_13359868 + 4), a1) && (v3 = *(_DWORD *)(dword_13359868 + 56)) != 0 && *(_DWORD *)v3 == 34 ) { v4 = a1; v5 = dword_13359868 + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_13359868 + 4))() != 0; } else { result = 0; } return result; } // 13359868: using guessed type int dword_13359868; //----- (005B1380) -------------------------------------------------------- void *__thiscall sub_5B1380(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F5FB0; sub_626B20((int)((char *)this + 4)); if ( !(dword_133598CC & 1) ) { dword_133598CC |= 1u; atexit(sub_69CAA0); } *((_BYTE *)v1 + 68) = 0; *((_DWORD *)v1 + 49) = 0; *((_BYTE *)v1 + 200) = 0; *(_DWORD *)v1 = off_6F646C; return v1; } // 6F5FB0: using guessed type int (*off_6F5FB0[2])(); // 6F646C: using guessed type int (*off_6F646C[2])(); // 133598CC: using guessed type int dword_133598CC; //----- (005B13D0) -------------------------------------------------------- int __thiscall sub_5B13D0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_6186186 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 42; if ( result < a2 ) { v4 = sub_5ADD30(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v12 = v4; v14 = 0; sub_5AE920(v6, v5, (void *)v4); v7 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); v9 = v12; result = v12 + 42 * a2; v10 = v12 + 42 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (005B14A9) -------------------------------------------------------- void __usercall sub_5B14A9(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005B14C0) -------------------------------------------------------- int __thiscall sub_5B14C0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_71C71C7 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 36; if ( result < a2 ) { v4 = sub_5ADD90(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v10 = v4; v12 = 0; sub_61F100(v6, v5, (void *)v4); v7 = (signed int)((unsigned __int64)(954437177i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 36 * a2; *(_DWORD *)(v2 + 4) = result + 36 * v8; *(_DWORD *)v2 = result; } return result; } //----- (005B159B) -------------------------------------------------------- void __usercall sub_5B159B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005B15C0) -------------------------------------------------------- int __thiscall sub_5B15C0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // edx@6 int v10; // [sp+0h] [bp-24h]@1 int v11; // [sp+10h] [bp-14h]@4 int *v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [bp-4h]@4 v12 = &v10; v2 = this; if ( a2 > 0x24924924 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 7; if ( result < a2 ) { v4 = sub_5ADDF0(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v11 = v4; v13 = 0; sub_5AE960((int)v6, v5, v4); v7 = (signed int)(*(_DWORD *)(v2 + 4) - *(_DWORD *)v2 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32)) >> 2; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v11; v9 = v11 + 7 * v8; *(_DWORD *)(v2 + 8) = v11 + 7 * a2; *(_DWORD *)(v2 + 4) = v9; *(_DWORD *)v2 = result; } return result; } //----- (005B16A9) -------------------------------------------------------- void __usercall sub_5B16A9(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005B16C0) -------------------------------------------------------- int __thiscall sub_5B16C0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_3759F22 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 74; if ( result < a2 ) { v4 = sub_5ADE50(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v12 = v4; v14 = 0; sub_5AE9A0(v6, v5, (void *)v4); v7 = (signed int)(*(_DWORD *)(v2 + 4) - *(_DWORD *)v2 + ((unsigned __int64)(-580400985i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32)) >> 6; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); v9 = v12; result = v12 + 74 * a2; v10 = v12 + 74 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (005B179D) -------------------------------------------------------- void __usercall sub_5B179D(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005B17C0) -------------------------------------------------------- int __thiscall sub_5B17C0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_6666666 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 40; if ( result < a2 ) { v4 = sub_5ADEB0(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v10 = v4; v12 = 0; sub_5AEA20(v6, v5, (void *)v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 4; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 40 * a2; *(_DWORD *)(v2 + 4) = result + 40 * v8; *(_DWORD *)v2 = result; } return result; } //----- (005B189B) -------------------------------------------------------- void __usercall sub_5B189B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005B18C0) -------------------------------------------------------- int __thiscall sub_5B18C0(int this) { int v1; // edi@1 int result; // eax@1 int v3; // ebx@1 int v4; // esi@2 unsigned int v5; // eax@5 int v6; // edx@6 int v7; // ecx@7 signed int v8; // edi@7 int v9; // eax@8 int v10; // eax@9 int v11; // ecx@9 unsigned int v12; // ecx@11 int v13; // eax@16 int v14; // ecx@19 int v15; // eax@20 int v16; // eax@21 int v17; // ecx@21 unsigned int v18; // ecx@23 int v19; // eax@28 int v20; // [sp+8h] [bp-Ch]@1 int v21; // [sp+Ch] [bp-8h]@1 int v22; // [sp+10h] [bp-4h]@4 v1 = this; result = *(_DWORD *)(this + 8); v3 = *(_DWORD *)result; v21 = this; v20 = *(_DWORD *)result; if ( *(_DWORD *)result != *(_DWORD *)(result + 4) ) { v4 = this + 28; do { if ( (*(_DWORD *)(v4 + 4) - *(_DWORD *)v4) >> 2 <= (unsigned int)*(_WORD *)(*(_DWORD *)(v1 + 44) + v3) ) { v22 = 0; do { v5 = *(_DWORD *)(v4 + 4); if ( (unsigned int)&v22 >= v5 || (v6 = *(_DWORD *)v4, *(_DWORD *)v4 > (unsigned int)&v22) ) { v14 = *(_DWORD *)(v4 + 8); if ( v5 == v14 ) { v15 = (signed int)(v5 - *(_DWORD *)v4) >> 2; if ( (unsigned int)v15 > 0x3FFFFFFE ) LABEL_33: sub_65178B((int)"vector too long"); v16 = v15 + 1; v17 = (v14 - *(_DWORD *)v4) >> 2; if ( v16 > (unsigned int)v17 ) { if ( 1073741823 - ((unsigned int)v17 >> 1) >= v17 ) v18 = ((unsigned int)v17 >> 1) + v17; else v18 = 0; if ( v18 < v16 ) v18 = v16; sub_5839E0(v4, v18); v1 = v21; } } v19 = *(_DWORD *)(v4 + 4); if ( v19 ) *(_DWORD *)v19 = 0; } else { v7 = *(_DWORD *)(v4 + 8); v8 = (signed int)((char *)&v22 - v6) >> 2; if ( v5 == v7 ) { v9 = (signed int)(v5 - v6) >> 2; if ( (unsigned int)v9 > 0x3FFFFFFE ) goto LABEL_33; v10 = v9 + 1; v11 = (v7 - v6) >> 2; if ( v10 > (unsigned int)v11 ) { if ( 1073741823 - ((unsigned int)v11 >> 1) >= v11 ) v12 = ((unsigned int)v11 >> 1) + v11; else v12 = 0; if ( v12 < v10 ) v12 = v10; sub_5839E0(v4, v12); v3 = v20; } } v13 = *(_DWORD *)(v4 + 4); if ( v13 ) *(_DWORD *)v13 = *(_DWORD *)(*(_DWORD *)v4 + 4 * v8); v1 = v21; } *(_DWORD *)(v4 + 4) += 4; } while ( (*(_DWORD *)(v4 + 4) - *(_DWORD *)v4) >> 2 <= (unsigned int)*(_WORD *)(*(_DWORD *)(v1 + 44) + v3) ); } result = *(_WORD *)(*(_DWORD *)(v1 + 44) + v3); *(_DWORD *)(*(_DWORD *)v4 + 4 * result) = v3; v3 += 42; v20 = v3; } while ( v3 != *(_DWORD *)(*(_DWORD *)(v1 + 8) + 4) ); } return result; } //----- (005B1A10) -------------------------------------------------------- bool __cdecl sub_5B1A10(const char *a1) { int v1; // eax@1 void *v2; // eax@2 int v3; // eax@7 const char *v4; // ecx@9 int v5; // edx@9 const char v6; // al@10 bool result; // al@11 v1 = dword_1335986C; if ( !dword_1335986C ) { v2 = (void *)operator new(0xCCu); if ( v2 ) v1 = (int)sub_5B1380(v2); else v1 = 0; dword_1335986C = v1; } sub_626B50(v1 + 4); if ( sub_627220((void *)(dword_1335986C + 4), a1) && (v3 = *(_DWORD *)(dword_1335986C + 56)) != 0 && *(_DWORD *)v3 == 56776 ) { v4 = a1; v5 = dword_1335986C + 68; do { v6 = *v4; *(_BYTE *)v5++ = *v4++; } while ( v6 ); result = (*(int (**)(void))(*(_DWORD *)dword_1335986C + 4))() != 0; } else { result = 0; } return result; } // 1335986C: using guessed type int dword_1335986C; //----- (005B1AF0) -------------------------------------------------------- void __thiscall sub_5B1AF0(int this, unsigned int a2, int a3, int a4) { int v4; // esi@1 int v5; // ebx@1 int i; // edi@1 int v7; // ecx@5 int v8; // edx@5 unsigned int v9; // edi@5 int v10; // eax@5 unsigned int v11; // ebx@8 int v12; // esi@10 int v13; // [sp+Ch] [bp-8h]@10 int v14; // [sp+10h] [bp-4h]@5 v4 = this; v5 = *(_DWORD *)(this + 4); for ( i = *(_DWORD *)this; i != v5; i += 4 ) { if ( *(_DWORD *)i ) (***(void (__stdcall ****)(_DWORD))i)(1); } v7 = *(_DWORD *)(v4 + 4); v8 = *(_DWORD *)v4; v9 = a2; v10 = (*(_DWORD *)(v4 + 4) - *(_DWORD *)v4) >> 2; v14 = 0; if ( a2 <= v10 ) { if ( a2 < v10 ) { v11 = v8 + 4 * a2; if ( v11 != v7 ) { memmove_0((void *)(v8 + 4 * a2), (const void *)v7, 0); *(_DWORD *)(v4 + 4) = v11; } } } else { sub_5D1890((void *)v4, v7, a2 - v10, (int)&v14); } v12 = *(_DWORD *)v4; v13 = a3; v14 = a4; if ( a2 ) { do { *(_DWORD *)v12 = sub_5C07E0((int)&v13); v12 += 4; --v9; } while ( v9 ); } } //----- (005B1BA0) -------------------------------------------------------- void __thiscall sub_5B1BA0(int this, unsigned int a2, int a3, int a4) { int v4; // esi@1 int v5; // ebx@1 int i; // edi@1 int v7; // ecx@5 int v8; // edx@5 unsigned int v9; // edi@5 int v10; // eax@5 unsigned int v11; // ebx@8 int v12; // esi@10 int v13; // [sp+Ch] [bp-8h]@10 int v14; // [sp+10h] [bp-4h]@5 v4 = this; v5 = *(_DWORD *)(this + 4); for ( i = *(_DWORD *)this; i != v5; i += 4 ) { if ( *(_DWORD *)i ) (***(void (__stdcall ****)(_DWORD))i)(1); } v7 = *(_DWORD *)(v4 + 4); v8 = *(_DWORD *)v4; v9 = a2; v10 = (*(_DWORD *)(v4 + 4) - *(_DWORD *)v4) >> 2; v14 = 0; if ( a2 <= v10 ) { if ( a2 < v10 ) { v11 = v8 + 4 * a2; if ( v11 != v7 ) { memmove_0((void *)(v8 + 4 * a2), (const void *)v7, 0); *(_DWORD *)(v4 + 4) = v11; } } } else { sub_5D1890((void *)v4, v7, a2 - v10, (int)&v14); } v12 = *(_DWORD *)v4; v13 = a3; v14 = a4; if ( a2 ) { do { *(_DWORD *)v12 = sub_5BF240((int)&v13); v12 += 4; --v9; } while ( v9 ); } } //----- (005B1C50) -------------------------------------------------------- void __cdecl sub_5B1C50(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0040(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B1D90) -------------------------------------------------------- void __cdecl sub_5B1D90(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0120(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B1ED0) -------------------------------------------------------- void __cdecl sub_5B1ED0(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0200(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2010) -------------------------------------------------------- void __cdecl sub_5B2010(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B02E0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2150) -------------------------------------------------------- void __cdecl sub_5B2150(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B03C0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2290) -------------------------------------------------------- void __cdecl sub_5B2290(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B04A0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B23D0) -------------------------------------------------------- void __cdecl sub_5B23D0(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0580(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2510) -------------------------------------------------------- void __cdecl sub_5B2510(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0660(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2650) -------------------------------------------------------- void __cdecl sub_5B2650(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0740(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2790) -------------------------------------------------------- void __cdecl sub_5B2790(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0820(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B28D0) -------------------------------------------------------- void __cdecl sub_5B28D0(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5AFF60(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2A10) -------------------------------------------------------- void __cdecl sub_5B2A10(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B09E0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2B50) -------------------------------------------------------- void __cdecl sub_5B2B50(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0AC0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2C90) -------------------------------------------------------- void __cdecl sub_5B2C90(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B1A10(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2DD0) -------------------------------------------------------- void __cdecl sub_5B2DD0(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0BA0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B2F10) -------------------------------------------------------- void __cdecl sub_5B2F10(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0900(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3050) -------------------------------------------------------- void __cdecl sub_5B3050(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B12A0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3190) -------------------------------------------------------- char __cdecl sub_5B3190(int a1, char *a2) { int v2; // ST08_4@2 int v3; // ST04_4@2 int v4; // eax@2 char result; // al@2 int v6; // [sp+0h] [bp-1086Ch]@2 int v7; // [sp+4h] [bp-10868h]@2 char v8; // [sp+8h] [bp-10864h]@1 unsigned int v9; // [sp+1085Ch] [bp-10h]@1 int v10; // [sp+10868h] [bp-4h]@1 int v11; // [sp+1086Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_6432E0((int)&v8); v10 = 0; if ( sub_6434A0(&v8, a2) ) { sub_5BE880((int)&v6, (int)&v8); v2 = v7; v3 = v6; v4 = sub_5C01C0(&v6); sub_5B1AF0(a1, v4, v3, v2); v10 = -1; sub_643080(&v8); result = 1; } else { v10 = -1; sub_643080(&v8); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B3270) -------------------------------------------------------- char __cdecl sub_5B3270(int a1, char *a2) { int v2; // ST08_4@2 int v3; // ST04_4@2 int v4; // eax@2 char result; // al@2 int v6; // [sp+0h] [bp-1086Ch]@2 int v7; // [sp+4h] [bp-10868h]@2 char v8; // [sp+8h] [bp-10864h]@1 unsigned int v9; // [sp+1085Ch] [bp-10h]@1 int v10; // [sp+10868h] [bp-4h]@1 int v11; // [sp+1086Ch] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_6432E0((int)&v8); v10 = 0; if ( sub_6434A0(&v8, a2) ) { sub_5BE880((int)&v6, (int)&v8); v2 = v7; v3 = v6; v4 = sub_5BF030(&v6); sub_5B1BA0(a1, v4, v3, v2); v10 = -1; sub_643080(&v8); result = 1; } else { v10 = -1; sub_643080(&v8); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B3350) -------------------------------------------------------- void __cdecl sub_5B3350(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0C80(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3490) -------------------------------------------------------- void __cdecl sub_5B3490(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0D60(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B35D0) -------------------------------------------------------- void __cdecl sub_5B35D0(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0E40(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3710) -------------------------------------------------------- void __cdecl sub_5B3710(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B0F20(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3850) -------------------------------------------------------- void __cdecl sub_5B3850(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B1000(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3990) -------------------------------------------------------- void __cdecl sub_5B3990(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B10E0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3AD0) -------------------------------------------------------- void __cdecl sub_5B3AD0(char *a1) { int v1; // eax@1 void *v2; // esi@1 const char *v3; // eax@3 void *v4; // eax@6 void *v5; // [sp+Ch] [bp-48h]@1 int v6; // [sp+1Ch] [bp-38h]@1 unsigned int v7; // [sp+20h] [bp-34h]@1 void *v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+38h] [bp-1Ch]@1 unsigned int v10; // [sp+3Ch] [bp-18h]@1 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 int v13; // [sp+54h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; v1 = (int)sub_5C4900(); v7 = 15; v6 = 0; LOBYTE(v5) = 0; sub_423FC0(&v5, v1, 0, 0xFFFFFFFFu); v10 = 15; v12 = 0; v9 = 0; LOBYTE(v8) = 0; sub_4241C0((int)&v8, "Fail to read : ", 0x10u); LOBYTE(v12) = 1; sub_476F60((int)&v8, a1, strlen(a1)); sub_476F60((int)&v5, a1, strlen(a1)); v2 = v8; if ( v10 < 0x10 ) v2 = &v8; v3 = (const char *)v5; if ( v7 < 0x10 ) v3 = (const char *)&v5; if ( !sub_5B11C0(v3) ) { sub_639100(&unk_86DDD8, (int)v2, 0); v4 = v8; if ( v10 < 0x10 ) v4 = &v8; loc_6391B0(v4); } if ( v10 >= 0x10 ) operator delete(v8); v10 = 15; v9 = 0; LOBYTE(v8) = 0; if ( v7 >= 0x10 ) operator delete(v5); } // 86FEB8: using guessed type int __security_cookie; //----- (005B3C10) -------------------------------------------------------- int __thiscall sub_5B3C10(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 42; if ( (unsigned int)((char *)&unk_6186186 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 42; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_6186186 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5B13D0(this, v5); } return result; } //----- (005B3C90) -------------------------------------------------------- int __thiscall sub_5B3C90(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 36; if ( (unsigned int)((char *)&unk_71C71C7 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 36; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_71C71C7 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5B14C0(this, v5); } return result; } //----- (005B3D10) -------------------------------------------------------- int __thiscall sub_5B3D10(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 7; if ( 613566756 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 7; if ( v3 > (unsigned int)result ) { if ( 613566756 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5B15C0(this, v5); } return result; } //----- (005B3D90) -------------------------------------------------------- int __thiscall sub_5B3D90(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 40; if ( (unsigned int)((char *)&unk_6666666 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 40; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_6666666 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5B17C0(this, v5); } return result; } //----- (005B3E10) -------------------------------------------------------- void __thiscall sub_5B3E10(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_5AFEC0(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (005B3E70) -------------------------------------------------------- int __cdecl sub_5B3E70() { sub_4C90E0(&unk_DA120E0, (int)&unk_14D17034); sub_449DD0(&unk_8BB3B0, (int)&unk_14D17034); sub_4C4EB0(dword_D9FBF28, (int)&unk_14D17034); sub_5B1C50("GuildTournamentScore.shn"); sub_5B1D90("GuildTournamentLvGap.shn"); sub_5B1ED0("GuildTournamentOccupy.shn"); sub_5B2010("GuildTournamentSkill.shn"); sub_5B2150("GuildTournamentMasterBuff.shn"); sub_5B2290("GTIGetRate.shn"); sub_5B23D0("GTIGetRateGap.shn"); sub_5B2510("GTIServer.shn"); sub_5B2650("GTIBreedSubject.shn"); sub_5B2790("GTWinScore.shn"); return 0; } // 5B3E70: using guessed type int sub_5B3E70(); //----- (005B3F10) -------------------------------------------------------- int __cdecl sub_5B3F10() { FILE *v0; // esi@1 FILE *v1; // esi@3 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "SHN - AccUpGradeInfo.shn"); fclose(v0); if ( !sub_5C43E0(&unk_1325CAB8) ) loc_6391B0("ZoneServer::zs_start_old"); sub_5B28D0("AccUpGrade.shn"); sub_5B2A10("DamageLvGapPVE.shn"); sub_5B2B50("DamageLvGapEVP.shn"); sub_5B2C90("DamageLvGapPVP.shn"); sub_5B2DD0("BelongDice.shn"); sub_5B2F10("MysteryVaultServer.shn"); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "_MultiHitTable"); fclose(v1); sub_4C05D0(&dword_D9FB84C); return 0; } // 5B3F10: using guessed type int sub_5B3F10(); //----- (005B3FD0) -------------------------------------------------------- int __cdecl sub_5B3FD0() { int v0; // edi@1 int v1; // esi@2 int v2; // esi@7 FILE *v3; // esi@11 FILE *v4; // esi@11 FILE *v5; // esi@11 sub_5B3050("EnchantSocketRate.shn"); v0 = dword_14D129E8; if ( word_13359DF4 == -1 ) v1 = 0; else v1 = (*(int (__thiscall **)(int *, _DWORD))(dword_13359DE8 + 8))(&dword_13359DE8, (unsigned __int16)word_13359DF4); if ( !v1 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Init : EventReserve error", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_open"); } *(_DWORD *)v1 = v0 + 300; *(_DWORD *)(v1 + 4) = &off_86BDF8; *(_DWORD *)(v1 + 12) = 300; if ( word_13359DF4 == -1 ) v2 = 0; else v2 = (*(int (__thiscall **)(int *, _DWORD))(dword_13359DE8 + 8))(&dword_13359DE8, (unsigned __int16)word_13359DF4); if ( !v2 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Init : EventReserve error", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_open"); } *(_DWORD *)v2 = v0 + 10; *(_DWORD *)(v2 + 4) = &unk_14D12E2C; *(_DWORD *)(v2 + 12) = 10; v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "npcmanager"); fclose(v3); sub_4C5B50((int)dword_D9FBF28); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "::fieldlist.l_4AllInList"); fclose(v4); sub_5A7F60((int)&unk_CFCF380, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_5AB490); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "Load end"); fclose(v5); return 0; } // 5B3FD0: using guessed type int sub_5B3FD0(); // 86BDF8: using guessed type int (**off_86BDF8)(); // 13359DE8: using guessed type int dword_13359DE8; // 13359DF4: using guessed type __int16 word_13359DF4; // 14D129E8: using guessed type int dword_14D129E8; //----- (005B4170) -------------------------------------------------------- int __cdecl sub_5B4170() { FILE *v0; // esi@1 FILE *v1; // esi@3 FILE *v2; // esi@3 FILE *v3; // esi@3 FILE *v4; // esi@3 FILE *v5; // esi@5 FILE *v6; // esi@7 FILE *v7; // esi@9 FILE *v8; // esi@11 FILE *v9; // esi@13 FILE *v10; // esi@15 FILE *v11; // esi@17 FILE *v12; // esi@19 int v13; // edi@21 signed int v14; // esi@23 FILE *v15; // esi@27 FILE *v16; // esi@29 FILE *v17; // esi@31 FILE *v18; // esi@33 FILE *v19; // esi@35 FILE *v20; // esi@37 FILE *v21; // esi@39 FILE *v22; // esi@41 FILE *v23; // esi@43 FILE *v24; // esi@45 FILE *v25; // esi@47 FILE *v26; // esi@49 FILE *v27; // esi@51 FILE *v28; // esi@53 FILE *v29; // esi@55 FILE *v30; // esi@57 FILE *v31; // esi@59 FILE *v32; // esi@61 FILE *v33; // esi@63 FILE *v34; // esi@65 FILE *v35; // esi@67 int v36; // eax@67 FILE *v37; // esi@69 FILE *v38; // esi@71 FILE *v39; // esi@73 FILE *v40; // esi@75 FILE *v41; // esi@77 FILE *v42; // esi@79 FILE *v43; // esi@81 FILE *v44; // esi@83 FILE *v45; // esi@85 FILE *v46; // esi@87 FILE *v47; // esi@89 FILE *v48; // esi@89 FILE *v49; // esi@91 int v50; // esi@91 v0 = fopen("Message.txt", "a"); fprintf(v0, "%s\n", "mobdatabox"); fclose(v0); sub_63EF30(&unk_14D159B0, &unk_13257C80, &byte_878354); if ( sub_632690((int)dword_1325CEF0, "../9Data/Shine/WeaponTitleData.shn", 1728, 64) != 1 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_Init : WeaponTitleData loading failed.", 0); loc_6391B0("ZoneServer::ZoneServer_zs_start_sleep"); } dword_1508B160 = (int)dword_1325CEF0; v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n", "NPCAction - Condition Manager"); fclose(v1); sub_5B3190((int)&dword_14D21484, "../9Data/Shine/World/NPCAction.txt"); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", "NPCAction - Action Manager"); fclose(v2); sub_5B3270((int)&dword_14D21494, "../9Data/Shine/World/NPCAction.txt"); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n", "NPCAction - Trigger Dictionary"); fclose(v3); sub_5C1E20(); sub_5B3350("ActionRangeFactor.shn"); sub_5B3490("ItemActionCondition.shn"); sub_5B35D0("ItemActionEffect.shn"); sub_5B3710("ItemAction.shn"); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n", "gActionViewInfo"); fclose(v4); if ( !sub_627480(&unk_13359038, "../9Data/Shine/ActionViewInfo.shn", 587, 114) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'ActionViewInfo.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n", "gMapLinkPoint"); fclose(v5); if ( !sub_627480(&unk_13359350, "../9Data/Shine/MapLinkPoint.shn", 43, 14) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'MapLinkPoint.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n", "gMapWayPoint"); fclose(v6); if ( !sub_627480(&unk_1325CF78, "../9Data/Shine/MapWayPoint.shn", 37, 11) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'MapWayPoint.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n", "gGambleHouse"); fclose(v7); if ( !sub_627480(&unk_1325CF38, "../9Data/Shine/GBHouse.shn", 40, 11) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBHouse.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n", "gGambleExchangeMaxCoin"); fclose(v8); if ( !sub_627480(&unk_13267D40, "../9Data/Shine/GBExchangeMaxCoin.shn", 10, 5) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBExchangeMaxCoin.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n", "gGBJoinGameMember;"); fclose(v9); if ( !sub_627480(&unk_1325CB78, "../9Data/Shine/GBJoinGameMember.shn", 12, 6) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBJoinGameMember.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n", "gGBDiceDividind"); fclose(v10); if ( !sub_627480(&unk_133592D0, "../9Data/Shine/GBDiceDividind.shn", 2686, 31) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBDiceDividind.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n", "gGBDiceGame"); fclose(v11); if ( !sub_627480(&unk_133591C0, "../9Data/Shine/GBDiceGame.shn", 37, 8) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBDiceGame.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n", "gGBDiceRate"); fclose(v12); if ( !sub_627480(&unk_13266960, "../9Data/Shine/GBDiceRate.shn", 10, 4) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBDiceRate.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v13 = sub_626BC0((int)&unk_133592D0, 0); if ( v13 == 0 ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBDiceDividind.shn'", 1); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } sub_6310A0(&unk_13266AB0, *(_BYTE *)(v13 + 30)); v14 = 0; do { sub_630F00(&unk_133594F0, v14, *(_WORD *)(v13 + 2 * v14)); ++v14; } while ( (unsigned int)v14 < 0xF ); if ( !sub_630EE0(&unk_133594F0) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'GBDiceDividind.shn'", 2); loc_6391B0("ZoneServer::ZoneServer_zs_start_star"); } v15 = fopen("Message.txt", "a"); fprintf(v15, "%s\n", "gNpcSchedule"); fclose(v15); if ( !sub_627480(&unk_13359630, "../9Data/Shine/NpcSchedule.shn", 131, 42) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'NpcSchedule.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v16 = fopen("Message.txt", "a"); fprintf(v16, "%s\n", "gReactionType"); fclose(v16); if ( !sub_627480(&unk_1325CCF0, "../9Data/Shine/ReactionType.shn", 61, 40) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'ReactionType.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } v17 = fopen("Message.txt", "a"); fprintf(v17, "%s\n", "gAdminLvSet"); fclose(v17); if ( !sub_627480(&unk_13359310, "../9Data/Shine/AdminLvSet.shn", 5, 20) ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'AdminLvSet.shn'", 0); loc_6391B0("ZoneServer::zs_start_old"); } sub_419C00(); sub_5B3850("SetEffect.shn"); sub_5B3990("ActionEffectItem.shn"); sub_5B3AD0("ActionEffectAbState.shn"); v18 = fopen("Message.txt", "a"); fprintf(v18, "%s\n", "JobEquipInfo"); fclose(v18); if ( !sub_627480(&unk_13359078, "../9Data/Shine/JobEquipInfo.shn", 1184, 228) ) loc_6391B0("ZoneServer::zs_start_old"); v19 = fopen("Message.txt", "a"); fprintf(v19, "%s\n", "SHN - ViewData Checksum - AbStateView.shn"); fclose(v19); if ( !sub_627220(&unk_13266920, "../9Data/Shine/View/AbStateView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v20 = fopen("Message.txt", "a"); fprintf(v20, "%s\n", "SHN - ViewData Checksum - ActiveSkillView.shn"); fclose(v20); if ( !sub_627220(&unk_13359138, "../9Data/Shine/View/ActiveSkillView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v21 = fopen("Message.txt", "a"); fprintf(v21, "%s\n", "SHN - ViewData Checksum - CharacterTitleStateView.shn"); fclose(v21); if ( !sub_627220(&unk_13359200, "../9Data/Shine/View/CharacterTitleStateView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v22 = fopen("Message.txt", "a"); fprintf(v22, "%s\n", "SHN - ViewData Checksum - EffectViewInfo.shn"); fclose(v22); if ( !sub_627220(&unk_133597E0, "../9Data/Shine/View/EffectViewInfo.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v23 = fopen("Message.txt", "a"); fprintf(v23, "%s\n", "SHN - ViewData Checksum - ItemShopView.shn"); fclose(v23); if ( !sub_627220(&unk_13359290, "../9Data/Shine/View/ItemShopView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v24 = fopen("Message.txt", "a"); fprintf(v24, "%s\n", "SHN - ViewData Checksum - ItemViewInfo.shn"); fclose(v24); if ( !sub_627220(&unk_132669F0, "../9Data/Shine/View/ItemViewInfo.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v25 = fopen("Message.txt", "a"); fprintf(v25, "%s\n", "SHN - ViewData Checksum - MapViewInfo.shn"); fclose(v25); if ( !sub_627220(&unk_13359178, "../9Data/Shine/View/MapViewInfo.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v26 = fopen("Message.txt", "a"); fprintf(v26, "%s\n", "SHN - ViewData Checksum - MobViewInfo.shn"); fclose(v26); if ( !sub_627220(&unk_1325CC08, "../9Data/Shine/View/MobViewInfo.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v27 = fopen("Message.txt", "a"); fprintf(v27, "%s\n", "SHN - ViewData Checksum - NPCViewInfo.shn"); fclose(v27); if ( !sub_627220(&unk_13266A30, "../9Data/Shine/View/NPCViewInfo.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v28 = fopen("Message.txt", "a"); fprintf(v28, "%s\n", "SHN - ViewData Checksum - PassiveSkillView.shn"); fclose(v28); if ( !sub_627220(&unk_133590B8, "../9Data/Shine/View/PassiveSkillView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v29 = fopen("Message.txt", "a"); fprintf(v29, "%s\n", "SHN - ViewData Checksum - ProduceView.shn"); fclose(v29); if ( !sub_627220(&unk_13359390, "../9Data/Shine/View/ProduceView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v30 = fopen("Message.txt", "a"); fprintf(v30, "%s\n", "SHN - ViewData Checksum - CollectCardView.shn"); fclose(v30); if ( !sub_627220(&unk_133590F8, "../9Data/Shine/View/CollectCardView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v31 = fopen("Message.txt", "a"); fprintf(v31, "%s\n", "SHN - ViewData Checksum - GTIView.shn"); fclose(v31); if ( !sub_627220(&unk_1325CEB0, "../9Data/Shine/View/GTIView.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v32 = fopen("Message.txt", "a"); fprintf(v32, "%s\n", "SHN - ViewData Checksum - ItemViewEquipTypeInfo.shn"); fclose(v32); if ( !sub_627220(&unk_1325CE30, "../9Data/Shine/View/ItemViewEquipTypeInfo.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v33 = fopen("Message.txt", "a"); fprintf(v33, "%s\n", "SHN - MobConditionServer.shn"); fclose(v33); if ( !sub_4AFC50(&unk_1325CC48) ) loc_6391B0("ZoneServer::zs_start_old"); v34 = fopen("Message.txt", "a"); fprintf(v34, "%s\n", "SHN - SingleData.shn"); fclose(v34); if ( !sub_62BC00(&unk_1325CFB8, "../9Data/Shine/SingleData.shn", 7, 34) ) loc_6391B0("ZoneServer::zs_start_old"); v35 = fopen("Message.txt", "a"); fprintf(v35, "%s\n", "SHN - MarketSearchInfo.shn"); fclose(v35); v36 = (unsigned __int8)sub_62A8A0(dword_133591B8, "../9Data/Shine/MarketSearchInfo.shn"); if ( !(_BYTE)v36 ) { sub_639100(&unk_86DDD8, (int)"Fail to read 'MarketSearchInfo.shn'", v36); loc_6391B0("ZoneServer::zs_start_old"); } v37 = fopen("Message.txt", "a"); fprintf(v37, "%s\n", "SHN - MoverUpgrade.shn"); fclose(v37); if ( !sub_4BFC40(&unk_133593D0) ) loc_6391B0("ZoneServer::zs_start_old"); v38 = fopen("Message.txt", "a"); fprintf(v38, "%s\n", "SHN - PupMain.shn"); fclose(v38); if ( !sub_4CED50(dword_1325CC60) ) loc_6391B0("ZoneServer::zs_start_old"); v39 = fopen("Message.txt", "a"); fprintf(v39, "%s\n", "SHN - BadNameFilter.shn"); fclose(v39); if ( !sub_42A700(&unk_13359770, "../9Data/Shine/BadNameFilter.shn") ) loc_6391B0("ZoneServer::zs_start_old"); v40 = fopen("Message.txt", "a"); fprintf(v40, "%s\n", "SHN - StateItem.shn"); fclose(v40); if ( !sub_58A5D0(&unk_1325CFC8) ) loc_6391B0("ZoneServer::zs_start_old"); v41 = fopen("Message.txt", "a"); fprintf(v41, "%s\n", "SHN - ChatColor.shn"); fclose(v41); if ( !sub_44F670(&dword_AA08A0) ) loc_6391B0("ZoneServer::zs_start_old"); v42 = fopen("Message.txt", "a"); fprintf(v42, "%s\n", "SHN - TermExtendMatch.shn"); fclose(v42); if ( !sub_6489C0(&unk_133597D0) ) loc_6391B0("ZoneServer::zs_start_old"); v43 = fopen("Message.txt", "a"); fprintf(v43, "%s\n", "SHN - MinimonInfo.shn"); fclose(v43); if ( !sub_4A1AC0(&unk_133597B0) ) loc_6391B0("ZoneServer::zs_start_old"); v44 = fopen("Message.txt", "a"); fprintf(v44, "%s\n", "SHN - MinimonAutoUseItem.shn"); fclose(v44); if ( !sub_4A1E70(&unk_1325CBB8) ) loc_6391B0("ZoneServer::zs_start_old"); v45 = fopen("Message.txt", "a"); fprintf(v45, "%s\n", "SHN - ChargedDeletableBuff.shn"); fclose(v45); if ( !sub_44F680(&unk_AA0BC0) ) loc_6391B0("ZoneServer::zs_start_old"); v46 = fopen("Message.txt", "a"); fprintf(v46, "%s\n", "SHN - KQItem.shn"); fclose(v46); if ( !sub_6486B0(&unk_133597C0) ) loc_6391B0("ZoneServer::zs_start_old"); v47 = fopen("Message.txt", "a"); fprintf(v47, "%s\n", "SHN - BRAccUpgrade.shn"); fclose(v47); v48 = fopen("Message.txt", "a"); fprintf(v48, "%s\n", "SHN - BRAccUpgradeInfo.shn"); fclose(v48); if ( !sub_43B5E0(&unk_1325CD30) ) loc_6391B0("ZoneServer::zs_start_old"); v49 = fopen("Message.txt", "a"); fprintf(v49, "%s\n", "ShnDataFile"); fclose(v49); v50 = (int)sub_62E170(&unk_14D420D8); if ( !sub_62E160(&unk_14D420D8) ) { sub_6390B0(&unk_86DDD8, (int)"Fail to read SHN Data File. ", v50); loc_6391B0(0); } return 0; } // 5B4170: using guessed type int sub_5B4170(); // AA08A0: using guessed type int dword_AA08A0; // 1508B160: using guessed type int dword_1508B160; //----- (005B50C0) -------------------------------------------------------- char __thiscall sub_5B50C0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int v7; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5B3D10(v2, 1); v7 = *(_DWORD *)(v2 + 4); if ( v7 ) { *(_DWORD *)v7 = *(_DWORD *)a2; *(_WORD *)(v7 + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(v7 + 6) = *(_BYTE *)(a2 + 6); } goto LABEL_11; } v4 = (signed int)(a2 - *(_DWORD *)v2 + ((unsigned __int64)(-1840700269i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32)) >> 2; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5B3D10(v2, 1); v6 = *(_DWORD *)(v2 + 4); v7 = *(_DWORD *)v2 + 7 * v5; if ( !v6 ) { LABEL_11: *(_DWORD *)(v2 + 4) += 7; return v7; } *(_DWORD *)v6 = *(_DWORD *)v7; *(_WORD *)(v6 + 4) = *(_WORD *)(v7 + 4); LOBYTE(v7) = *(_BYTE *)(v7 + 6); *(_BYTE *)(v6 + 6) = v7; *(_DWORD *)(v2 + 4) += 7; return v7; } //----- (005B5160) -------------------------------------------------------- int __thiscall sub_5B5160(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 int v5; // eax@2 int v6; // ST04_4@3 int (__thiscall **v8)(void *, char); // [sp+10h] [bp-2Ch]@7 int (__thiscall **v9)(void *, char); // [sp+1Ch] [bp-20h]@5 int v10; // [sp+28h] [bp-14h]@1 int v11; // [sp+2Ch] [bp-10h]@6 int v12; // [sp+38h] [bp-4h]@2 v2 = this; v10 = this; v3 = a2; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(v3 + 6); *(_WORD *)(this + 8) = *(_WORD *)(v3 + 10); *(_DWORD *)(this + 20) = 0; v4 = operator new(0x14u); if ( !v4 ) { v11 = 0; std::exception::exception(&v11); v8 = &off_6A1FD4; _CxxThrowException(&v8, &unk_733E50); } *(_DWORD *)(v2 + 16) = v4; *(_DWORD *)v4 = v4; *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4) = *(_DWORD *)(v2 + 16); *(_DWORD *)(*(_DWORD *)(v2 + 16) + 8) = *(_DWORD *)(v2 + 16); *(_BYTE *)(*(_DWORD *)(v2 + 16) + 16) = 1; *(_BYTE *)(*(_DWORD *)(v2 + 16) + 17) = 1; v12 = 0; *(_DWORD *)(v2 + 36) = 0; v5 = operator new(0x14u); if ( !v5 ) { a2 = 0; std::exception::exception(&a2); v9 = &off_6A1FD4; _CxxThrowException(&v9, &unk_733E50); } *(_DWORD *)(v2 + 32) = v5; *(_DWORD *)v5 = v5; *(_DWORD *)(*(_DWORD *)(v2 + 32) + 4) = *(_DWORD *)(v2 + 32); *(_DWORD *)(*(_DWORD *)(v2 + 32) + 8) = *(_DWORD *)(v2 + 32); *(_BYTE *)(*(_DWORD *)(v2 + 32) + 16) = 1; *(_BYTE *)(*(_DWORD *)(v2 + 32) + 17) = 1; v6 = *(_WORD *)(v3 + 2); LOBYTE(v12) = 1; sub_5AFDE0((void *)v2, v6); sub_5AFE50((void *)v2, *(_WORD *)(v3 + 4)); return v2; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005B5290) -------------------------------------------------------- char __cdecl sub_5B5290() { unsigned int v0; // esi@1 int v1; // edi@2 int v2; // eax@2 void *v3; // edx@2 int *v4; // eax@9 void *v5; // ebx@11 int v6; // eax@12 int v7; // eax@13 int v8; // eax@15 int v10; // esi@17 unsigned __int16 v11; // ST08_2@17 int v12; // esi@19 int v13; // eax@19 int v14; // esi@19 int v15; // ebx@19 void *v16; // ecx@19 int v17; // eax@21 int v18; // [sp+10h] [bp-3Ch]@21 int v19; // [sp+18h] [bp-34h]@19 int v20; // [sp+20h] [bp-2Ch]@15 char v21; // [sp+24h] [bp-28h]@15 __int16 v22; // [sp+28h] [bp-24h]@15 int v23; // [sp+2Ch] [bp-20h]@15 int v24; // [sp+30h] [bp-1Ch]@12 void *v25; // [sp+34h] [bp-18h]@10 int v26; // [sp+38h] [bp-14h]@7 unsigned int v27; // [sp+3Ch] [bp-10h]@1 int v28; // [sp+48h] [bp-4h]@12 v0 = 0; v27 = 0; if ( sub_5AF3E0() ) { do { v1 = sub_626BC0(dword_13359858 + 4, v0); v2 = *((_DWORD *)dword_14D40978 + 1); v3 = dword_14D40978; while ( !*(_BYTE *)(v2 + 21) ) { if ( *(_WORD *)(v2 + 12) >= *(_WORD *)v1 ) { v3 = (void *)v2; v2 = *(_DWORD *)v2; } else { v2 = *(_DWORD *)(v2 + 8); } } v26 = (int)v3; if ( v3 == dword_14D40978 || *(_WORD *)v1 < *((_WORD *)v3 + 6) ) { v25 = dword_14D40978; v4 = (int *)&v25; } else { v4 = &v26; } v5 = (void *)*v4; if ( (void *)*v4 == dword_14D40978 ) { v6 = operator new(0x2Cu); v24 = v6; v28 = 0; if ( v6 ) v7 = sub_5B5160(v6, v1); else v7 = 0; v22 = *(_WORD *)v1; v28 = -1; v23 = v7; v8 = sub_5C5AB0(&unk_14D40974, (int)&v22); sub_4240B0((int)&unk_14D40974, (int)&v20, (void *)v8, 0); if ( v21 != 1 ) { sub_639100(&unk_86DDD8, (int)"ItemAction Element Conflict", *(_WORD *)v1); loc_6391B0("ItemActions::DataProcess"); return 0; } } else { v10 = *(_WORD *)(v1 + 2); v11 = *(_WORD *)(v1 + 2); v26 = *((_DWORD *)v5 + 4); v24 = sub_5CC800((void *)v26, v11); if ( v24 == 0 ) { sub_639100(&unk_86DDD8, (int)"Invalid ItemActionCondition-ID", v10); loc_6391B0("Action::addCondition"); } v12 = v26; v13 = sub_4632A0((void *)(v26 + 12), (int)&v24); sub_554220(v12 + 12, (int)&v19, (void *)v13, 0); v14 = *(_WORD *)(v1 + 4); v15 = *((_DWORD *)v5 + 4); v24 = sub_5CDAF0(v16, *(_WORD *)(v1 + 4)); if ( v24 == 0 ) { sub_639100(&unk_86DDD8, (int)"Invalid ItemActionEffect-ID", v14); loc_6391B0("Action::addEffect"); } v17 = sub_4632A0((void *)(v15 + 28), (int)&v24); sub_554220(v15 + 28, (int)&v18, (void *)v17, 0); v0 = v27; } ++v0; v27 = v0; } while ( v0 < sub_5AF3E0() ); } return 1; } // 13359858: using guessed type int dword_13359858; //----- (005B54B0) -------------------------------------------------------- int __thiscall sub_5B54B0(int this) { int v1; // esi@1 v1 = this; sub_626920(this); return sub_5B18C0(v1); } //----- (005B54C0) -------------------------------------------------------- void __thiscall sub_5B54C0(int this) { int v1; // edi@1 int v2; // ecx@3 int v3; // ebx@3 unsigned int v10; // eax@8 unsigned int v11; // ecx@8 int v12; // esi@12 int v13; // ebx@14 unsigned int v14; // ecx@14 signed int v15; // edx@16 int v16; // esi@16 void *v17; // eax@21 int v18; // [sp+Ch] [bp-27Ch]@1 unsigned int v19; // [sp+10h] [bp-278h]@8 int (__thiscall **v20)(void *, char); // [sp+14h] [bp-274h]@8 int v21; // [sp+48h] [bp-240h]@8 int v22; // [sp+54h] [bp-234h]@8 int v23; // [sp+58h] [bp-230h]@8 int v24; // [sp+5Ch] [bp-22Ch]@8 int v25; // [sp+60h] [bp-228h]@8 int v26; // [sp+64h] [bp-224h]@8 int v27; // [sp+68h] [bp-220h]@8 int v28; // [sp+6Ch] [bp-21Ch]@8 int v29; // [sp+70h] [bp-218h]@8 int v30; // [sp+74h] [bp-214h]@8 char v31; // [sp+78h] [bp-210h]@3 unsigned int v32; // [sp+278h] [bp-10h]@1 int v33; // [sp+284h] [bp-4h]@8 int v34; // [sp+288h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v1 = this; v18 = this; if ( *(_DWORD *)(this + 4) == 0 ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v31, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v20); v20 = &off_6F5CD8; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v33 = 0; sub_6455B0(&v20, &v31); v10 = *(_DWORD *)(v21 + 40); v11 = 0; v19 = 0; if ( (signed int)v10 > 0 ) { while ( 1 ) { v12 = v11 < v10 ? sub_626BC0((int)&v20, v11) : &v22; v13 = *(_DWORD *)(v1 + 8); v14 = *(_DWORD *)(v13 + 4); if ( v12 >= v14 || *(_DWORD *)v13 > (unsigned int)v12 ) { if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3C90(v13, 1); } else { v15 = (signed int)((unsigned __int64)(954437177i64 * (v12 - *(_DWORD *)v13)) >> 32) >> 3; v16 = v15 + ((unsigned int)v15 >> 31); if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3C90(v13, 1); v12 = *(_DWORD *)v13 + 36 * v16; } v17 = *(void **)(v13 + 4); if ( v17 ) memcpy(v17, (const void *)v12, 0x24u); *(_DWORD *)(v13 + 4) += 36; v10 = *(_DWORD *)(v21 + 40); ++v19; if ( (signed int)v19 >= (signed int)v10 ) break; v1 = v18; v11 = v19; } } v33 = -1; v20 = &off_6F5CD8; sub_639940((int)&v20); } // 6F5CD8: using guessed type int (__thiscall *off_6F5CD8)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B56D0) -------------------------------------------------------- void __thiscall sub_5B56D0(int this) { int v1; // esi@1 unsigned int v2; // ebx@1 int v3; // esi@3 int v4; // edx@3 unsigned int v7; // eax@7 bool v8; // cf@7 int v9; // edi@9 int v10; // esi@11 unsigned int v11; // eax@11 int v12; // edx@12 int v13; // ecx@13 int v14; // edi@13 int v15; // eax@14 int v16; // eax@15 int v17; // ecx@15 unsigned int v18; // ecx@17 int v19; // eax@22 int v20; // ecx@24 int v21; // eax@25 int v22; // eax@26 int v23; // ecx@26 unsigned int v24; // ecx@28 int v25; // eax@33 unsigned int v26; // eax@35 int v27; // [sp+Ch] [bp-25Ch]@1 unsigned int v28; // [sp+10h] [bp-258h]@7 int (__thiscall **v29)(void *, char); // [sp+14h] [bp-254h]@7 int v30; // [sp+48h] [bp-220h]@7 int v31; // [sp+54h] [bp-214h]@7 char v32; // [sp+58h] [bp-210h]@3 unsigned int v33; // [sp+258h] [bp-10h]@1 int v34; // [sp+264h] [bp-4h]@7 int v35; // [sp+268h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v1 = this; v2 = 0; v27 = this; if ( *(_DWORD *)(this + 4) == 0 ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v32, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v3 = *(_DWORD *)(v1 + 8); v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 != *(_DWORD *)(v3 + 4) ) *(_DWORD *)(v3 + 4) = v4; sub_639920((int)&v29); v29 = &off_6F5CE0; v31 = 0; v34 = 0; sub_480550(&v29, &v32); v7 = *(_DWORD *)(v30 + 40); v28 = 0; v8 = v7 > 0; if ( (signed int)v7 > 0 ) { do { if ( v8 ) v9 = sub_626BC0((int)&v29, v2); else v9 = (int)&v31; v10 = *(_DWORD *)(v27 + 8); v11 = *(_DWORD *)(v10 + 4); if ( v9 >= v11 || (v12 = *(_DWORD *)v10, *(_DWORD *)v10 > (unsigned int)v9) ) { v20 = *(_DWORD *)(v10 + 8); if ( v11 == v20 ) { v21 = (signed int)(v11 - *(_DWORD *)v10) >> 2; if ( (unsigned int)v21 > 0x3FFFFFFE ) LABEL_37: sub_65178B((int)"vector too long"); v22 = v21 + 1; v23 = (v20 - *(_DWORD *)v10) >> 2; if ( v22 > (unsigned int)v23 ) { if ( 1073741823 - ((unsigned int)v23 >> 1) >= v23 ) v24 = ((unsigned int)v23 >> 1) + v23; else v24 = 0; if ( v24 < v22 ) v24 = v22; sub_61F820(v10, v24); v2 = v28; } } v25 = *(_DWORD *)(v10 + 4); if ( v25 ) *(_DWORD *)v25 = *(_DWORD *)v9; } else { v13 = *(_DWORD *)(v10 + 8); v14 = (v9 - v12) >> 2; if ( v11 == v13 ) { v15 = (signed int)(v11 - v12) >> 2; if ( (unsigned int)v15 > 0x3FFFFFFE ) goto LABEL_37; v16 = v15 + 1; v17 = (v13 - v12) >> 2; if ( v16 > (unsigned int)v17 ) { if ( 1073741823 - ((unsigned int)v17 >> 1) >= v17 ) v18 = ((unsigned int)v17 >> 1) + v17; else v18 = 0; if ( v18 < v16 ) v18 = v16; sub_61F820(v10, v18); v2 = v28; } } v19 = *(_DWORD *)(v10 + 4); if ( v19 ) *(_DWORD *)v19 = *(_DWORD *)(*(_DWORD *)v10 + 4 * v14); } *(_DWORD *)(v10 + 4) += 4; v26 = *(_DWORD *)(v30 + 40); ++v2; v28 = v2; v8 = v2 < v26; } while ( (signed int)v2 < (signed int)v26 ); } v34 = -1; v29 = &off_6F5CE0; sub_639940((int)&v29); } // 6F5CE0: using guessed type int (__thiscall *off_6F5CE0)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B5900) -------------------------------------------------------- void __thiscall sub_5B5900(int this) { int v1; // edi@1 int v2; // edx@3 int v3; // ecx@3 unsigned int v6; // esi@7 unsigned int v7; // eax@7 bool v8; // cf@8 int v9; // eax@10 unsigned int v10; // eax@12 int (__thiscall **v11)(void *, char); // [sp+Ch] [bp-258h]@7 int v12; // [sp+40h] [bp-224h]@7 int v13; // [sp+4Ch] [bp-218h]@7 __int16 v14; // [sp+50h] [bp-214h]@7 char v15; // [sp+52h] [bp-212h]@7 char v16; // [sp+54h] [bp-210h]@3 unsigned int v17; // [sp+254h] [bp-10h]@1 int v18; // [sp+260h] [bp-4h]@7 int v19; // [sp+264h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; if ( !*(_DWORD *)(this + 4) ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", *(_DWORD *)(this + 4) != 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v16, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v11); v11 = &off_6F5CE8; v6 = 0; v13 = 0; v14 = 0; v15 = 0; v18 = 0; sub_5AC720(&v11, &v16); v7 = *(_DWORD *)(v12 + 40); if ( (signed int)v7 > 0 ) { v8 = v7 > 0; do { if ( v8 ) v9 = sub_626BC0((int)&v11, v6); else v9 = (int)&v13; sub_5B50C0(*(_DWORD *)(v1 + 8), v9); v10 = *(_DWORD *)(v12 + 40); ++v6; v8 = v6 < v10; } while ( (signed int)v6 < (signed int)v10 ); } v18 = -1; v11 = &off_6F5CE8; sub_639940((int)&v11); } // 6F5CE8: using guessed type int (__thiscall *off_6F5CE8)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B5A60) -------------------------------------------------------- void __thiscall sub_5B5A60(int this) { int v1; // edi@1 int v2; // ecx@3 int v3; // ebx@3 unsigned int v10; // eax@8 unsigned int v11; // ecx@8 const void *v12; // esi@12 int v13; // edi@14 unsigned int v14; // ecx@14 int v15; // ebx@15 int v16; // edi@16 signed int v17; // edx@16 int v18; // esi@16 signed int v19; // edx@17 int v20; // ecx@17 int v21; // ecx@18 int v22; // eax@18 unsigned int v23; // eax@20 int v24; // ebx@24 void *v25; // edi@26 const void *v26; // esi@26 int v27; // ebx@29 signed int v28; // edx@30 int v29; // ecx@30 int v30; // ecx@31 int v31; // eax@31 unsigned int v32; // eax@33 void *v33; // eax@39 int v34; // [sp+Ch] [bp-2ACh]@1 int v35; // [sp+10h] [bp-2A8h]@14 int v36; // [sp+14h] [bp-2A4h]@12 unsigned int v37; // [sp+18h] [bp-2A0h]@8 int (__thiscall **v38)(void *, char); // [sp+1Ch] [bp-29Ch]@8 int v39; // [sp+50h] [bp-268h]@8 char v40; // [sp+5Ch] [bp-25Ch]@8 char v41; // [sp+A8h] [bp-210h]@3 unsigned int v42; // [sp+2A8h] [bp-10h]@1 int v43; // [sp+2B4h] [bp-4h]@8 int v44; // [sp+2B8h] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; v1 = this; v34 = this; if ( *(_DWORD *)(this + 4) == 0 ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v41, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v38); v38 = &off_6F5CF0; memset(&v40, 0, 0x4Au); v43 = 0; sub_5AC7D0(&v38, &v41); v10 = *(_DWORD *)(v39 + 40); v11 = 0; v37 = 0; if ( (signed int)v10 > 0 ) { while ( 1 ) { if ( v11 < v10 ) { v36 = sub_626BC0((int)&v38, v11); v12 = (const void *)v36; } else { v12 = &v40; v36 = (int)&v40; } v13 = *(_DWORD *)(v1 + 8); v14 = *(_DWORD *)(v13 + 4); v35 = v13; if ( (unsigned int)v12 >= v14 || (v15 = *(_DWORD *)v13, *(_DWORD *)v13 > (unsigned int)v12) ) { v27 = *(_DWORD *)(v13 + 8); if ( v14 == v27 ) { v28 = (signed int)(v14 - *(_DWORD *)v13 + ((unsigned __int64)(-580400985i64 * (signed int)(v14 - *(_DWORD *)v13)) >> 32)) >> 6; v29 = v28 + ((unsigned int)v28 >> 31); if ( v29 > (unsigned int)&unk_3759F21 ) LABEL_44: sub_65178B((int)"vector too long"); v30 = v29 + 1; v31 = (v27 - *(_DWORD *)v13) / 74; if ( v30 > (unsigned int)v31 ) { if ( (unsigned int)((char *)&unk_3759F22 - ((unsigned int)v31 >> 1)) >= v31 ) v32 = ((unsigned int)v31 >> 1) + v31; else v32 = 0; if ( v32 < v30 ) v32 = v30; sub_5B16C0(v13, v32); } v12 = (const void *)v36; } v33 = *(void **)(v13 + 4); if ( v33 ) memcpy(v33, v12, 0x4Au); *(_DWORD *)(v13 + 4) += 74; } else { v16 = *(_DWORD *)(v13 + 8); v17 = (signed int)((char *)v12 + ((unsigned __int64)(-580400985i64 * (signed int)((char *)v12 - v15)) >> 32) - v15) >> 6; v18 = v17 + ((unsigned int)v17 >> 31); if ( v14 != v16 ) goto LABEL_47; v19 = (signed int)(v14 - v15 + ((unsigned __int64)(-580400985i64 * (signed int)(v14 - v15)) >> 32)) >> 6; v20 = v19 + ((unsigned int)v19 >> 31); if ( v20 > (unsigned int)&unk_3759F21 ) goto LABEL_44; v21 = v20 + 1; v22 = (v16 - v15) / 74; if ( v21 <= (unsigned int)v22 ) { LABEL_47: v24 = v35; } else { if ( (unsigned int)((char *)&unk_3759F22 - ((unsigned int)v22 >> 1)) >= v22 ) v23 = ((unsigned int)v22 >> 1) + v22; else v23 = 0; if ( v23 < v21 ) v23 = v21; v24 = v35; sub_5B16C0(v35, v23); } v25 = *(void **)(v24 + 4); v26 = (const void *)(*(_DWORD *)v24 + 74 * v18); if ( v25 ) memcpy(v25, v26, 0x4Au); *(_DWORD *)(v24 + 4) += 74; } v10 = *(_DWORD *)(v39 + 40); ++v37; if ( (signed int)v37 >= (signed int)v10 ) break; v11 = v37; v1 = v34; } } v43 = -1; v38 = &off_6F5CF0; sub_639940((int)&v38); } // 6F5CF0: using guessed type int (__thiscall *off_6F5CF0)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B5D60) -------------------------------------------------------- void __thiscall sub_5B5D60(int this) { int v1; // edi@1 int v2; // ecx@3 int v3; // ebx@3 unsigned int v10; // eax@8 unsigned int v11; // ecx@8 int v12; // esi@12 int v13; // ebx@14 unsigned int v14; // ecx@14 signed int v15; // edx@16 int v16; // esi@16 void *v17; // eax@21 int v18; // [sp+Ch] [bp-27Ch]@1 unsigned int v19; // [sp+10h] [bp-278h]@8 int (__thiscall **v20)(void *, char); // [sp+14h] [bp-274h]@8 int v21; // [sp+48h] [bp-240h]@8 int v22; // [sp+54h] [bp-234h]@8 int v23; // [sp+58h] [bp-230h]@8 int v24; // [sp+5Ch] [bp-22Ch]@8 int v25; // [sp+60h] [bp-228h]@8 int v26; // [sp+64h] [bp-224h]@8 int v27; // [sp+68h] [bp-220h]@8 int v28; // [sp+6Ch] [bp-21Ch]@8 int v29; // [sp+70h] [bp-218h]@8 int v30; // [sp+74h] [bp-214h]@8 char v31; // [sp+78h] [bp-210h]@3 unsigned int v32; // [sp+278h] [bp-10h]@1 int v33; // [sp+284h] [bp-4h]@8 int v34; // [sp+288h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v1 = this; v18 = this; if ( *(_DWORD *)(this + 4) == 0 ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v31, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v20); v20 = &off_6F5CF8; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v33 = 0; sub_4A0E00(&v20, &v31); v10 = *(_DWORD *)(v21 + 40); v11 = 0; v19 = 0; if ( (signed int)v10 > 0 ) { while ( 1 ) { v12 = v11 < v10 ? sub_626BC0((int)&v20, v11) : &v22; v13 = *(_DWORD *)(v1 + 8); v14 = *(_DWORD *)(v13 + 4); if ( v12 >= v14 || *(_DWORD *)v13 > (unsigned int)v12 ) { if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3C90(v13, 1); } else { v15 = (signed int)((unsigned __int64)(954437177i64 * (v12 - *(_DWORD *)v13)) >> 32) >> 3; v16 = v15 + ((unsigned int)v15 >> 31); if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3C90(v13, 1); v12 = *(_DWORD *)v13 + 36 * v16; } v17 = *(void **)(v13 + 4); if ( v17 ) memcpy(v17, (const void *)v12, 0x24u); *(_DWORD *)(v13 + 4) += 36; v10 = *(_DWORD *)(v21 + 40); ++v19; if ( (signed int)v19 >= (signed int)v10 ) break; v1 = v18; v11 = v19; } } v33 = -1; v20 = &off_6F5CF8; sub_639940((int)&v20); } // 6F5CF8: using guessed type int (__thiscall *off_6F5CF8)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B5F70) -------------------------------------------------------- void __thiscall sub_5B5F70(int this) { int v1; // edi@1 int v2; // esi@3 int v3; // ecx@3 unsigned int v6; // esi@7 unsigned int v7; // eax@7 bool v8; // cf@8 int v9; // eax@10 unsigned int v10; // eax@12 int (__thiscall **v11)(void *, char); // [sp+Ch] [bp-25Ch]@7 int v12; // [sp+40h] [bp-228h]@7 int v13; // [sp+4Ch] [bp-21Ch]@7 int v14; // [sp+50h] [bp-218h]@7 int v15; // [sp+54h] [bp-214h]@7 char v16; // [sp+58h] [bp-210h]@3 unsigned int v17; // [sp+258h] [bp-10h]@1 int v18; // [sp+264h] [bp-4h]@7 int v19; // [sp+268h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; if ( !*(_DWORD *)(this + 4) ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", *(_DWORD *)(this + 4) != 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v16, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v11); v11 = &off_6F5D00; v6 = 0; v13 = 0; v14 = 0; v15 = 0; v18 = 0; sub_5ACA10(&v11, &v16); v7 = *(_DWORD *)(v12 + 40); if ( (signed int)v7 > 0 ) { v8 = v7 > 0; do { if ( v8 ) v9 = sub_626BC0((int)&v11, v6); else v9 = (int)&v13; sub_6200F0(*(_DWORD *)(v1 + 8), v9); v10 = *(_DWORD *)(v12 + 40); ++v6; v8 = v6 < v10; } while ( (signed int)v6 < (signed int)v10 ); } v18 = -1; v11 = &off_6F5D00; sub_639940((int)&v11); } // 6F5D00: using guessed type int (__thiscall *off_6F5D00)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B60D0) -------------------------------------------------------- void __thiscall sub_5B60D0(int this) { int v1; // edi@1 int v2; // esi@3 int v3; // ecx@3 unsigned int v6; // esi@7 unsigned int v7; // eax@7 bool v8; // cf@8 int v9; // eax@10 unsigned int v10; // eax@12 int (__thiscall **v11)(void *, char); // [sp+Ch] [bp-25Ch]@7 int v12; // [sp+40h] [bp-228h]@7 int v13; // [sp+4Ch] [bp-21Ch]@7 int v14; // [sp+50h] [bp-218h]@7 int v15; // [sp+54h] [bp-214h]@7 char v16; // [sp+58h] [bp-210h]@3 unsigned int v17; // [sp+258h] [bp-10h]@1 int v18; // [sp+264h] [bp-4h]@7 int v19; // [sp+268h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; if ( !*(_DWORD *)(this + 4) ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", *(_DWORD *)(this + 4) != 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v16, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v11); v11 = &off_6F5D08; v6 = 0; v13 = 0; v14 = 0; v15 = 0; v18 = 0; sub_5AC8B0(&v11, &v16); v7 = *(_DWORD *)(v12 + 40); if ( (signed int)v7 > 0 ) { v8 = v7 > 0; do { if ( v8 ) v9 = sub_626BC0((int)&v11, v6); else v9 = (int)&v13; sub_6200F0(*(_DWORD *)(v1 + 8), v9); v10 = *(_DWORD *)(v12 + 40); ++v6; v8 = v6 < v10; } while ( (signed int)v6 < (signed int)v10 ); } v18 = -1; v11 = &off_6F5D08; sub_639940((int)&v11); } // 6F5D08: using guessed type int (__thiscall *off_6F5D08)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B6230) -------------------------------------------------------- void __thiscall sub_5B6230(int this) { int v1; // edi@1 int v2; // ecx@3 int v3; // ebx@3 unsigned int v10; // eax@8 unsigned int v11; // ecx@8 int v12; // esi@12 int v13; // ebx@14 unsigned int v14; // ecx@14 signed int v15; // edx@16 int v16; // esi@16 void *v17; // eax@21 int v18; // [sp+Ch] [bp-280h]@1 unsigned int v19; // [sp+10h] [bp-27Ch]@8 int (__thiscall **v20)(void *, char); // [sp+14h] [bp-278h]@8 int v21; // [sp+48h] [bp-244h]@8 int v22; // [sp+54h] [bp-238h]@8 int v23; // [sp+58h] [bp-234h]@8 int v24; // [sp+5Ch] [bp-230h]@8 int v25; // [sp+60h] [bp-22Ch]@8 int v26; // [sp+64h] [bp-228h]@8 int v27; // [sp+68h] [bp-224h]@8 int v28; // [sp+6Ch] [bp-220h]@8 int v29; // [sp+70h] [bp-21Ch]@8 int v30; // [sp+74h] [bp-218h]@8 int v31; // [sp+78h] [bp-214h]@8 char v32; // [sp+7Ch] [bp-210h]@3 unsigned int v33; // [sp+27Ch] [bp-10h]@1 int v34; // [sp+288h] [bp-4h]@8 int v35; // [sp+28Ch] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v1 = this; v18 = this; if ( *(_DWORD *)(this + 4) == 0 ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v32, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v20); v20 = &off_6F5D10; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v31 = 0; v34 = 0; sub_5AC960(&v20, &v32); v10 = *(_DWORD *)(v21 + 40); v11 = 0; v19 = 0; if ( (signed int)v10 > 0 ) { while ( 1 ) { v12 = v11 < v10 ? sub_626BC0((int)&v20, v11) : &v22; v13 = *(_DWORD *)(v1 + 8); v14 = *(_DWORD *)(v13 + 4); if ( v12 >= v14 || *(_DWORD *)v13 > (unsigned int)v12 ) { if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3D90(v13, 1); } else { v15 = (signed int)((unsigned __int64)(1717986919i64 * (v12 - *(_DWORD *)v13)) >> 32) >> 4; v16 = v15 + ((unsigned int)v15 >> 31); if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3D90(v13, 1); v12 = *(_DWORD *)v13 + 40 * v16; } v17 = *(void **)(v13 + 4); if ( v17 ) memcpy(v17, (const void *)v12, 0x28u); *(_DWORD *)(v13 + 4) += 40; v10 = *(_DWORD *)(v21 + 40); ++v19; if ( (signed int)v19 >= (signed int)v10 ) break; v1 = v18; v11 = v19; } } v34 = -1; v20 = &off_6F5D10; sub_639940((int)&v20); } // 6F5D10: using guessed type int (__thiscall *off_6F5D10)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B6450) -------------------------------------------------------- void __thiscall sub_5B6450(int this) { int v1; // edi@1 int v2; // esi@3 int v3; // ecx@3 unsigned int v6; // esi@7 unsigned int v7; // eax@7 bool v8; // cf@8 int v9; // eax@10 unsigned int v10; // eax@12 int (__thiscall **v11)(void *, char); // [sp+Ch] [bp-25Ch]@7 int v12; // [sp+40h] [bp-228h]@7 int v13; // [sp+4Ch] [bp-21Ch]@7 int v14; // [sp+50h] [bp-218h]@7 int v15; // [sp+54h] [bp-214h]@7 char v16; // [sp+58h] [bp-210h]@3 unsigned int v17; // [sp+258h] [bp-10h]@1 int v18; // [sp+264h] [bp-4h]@7 int v19; // [sp+268h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; if ( !*(_DWORD *)(this + 4) ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", *(_DWORD *)(this + 4) != 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v16, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v11); v11 = &off_6F5D18; v6 = 0; v13 = 0; v14 = 0; v15 = 0; v18 = 0; sub_5ACA10(&v11, &v16); v7 = *(_DWORD *)(v12 + 40); if ( (signed int)v7 > 0 ) { v8 = v7 > 0; do { if ( v8 ) v9 = sub_626BC0((int)&v11, v6); else v9 = (int)&v13; sub_6200F0(*(_DWORD *)(v1 + 8), v9); v10 = *(_DWORD *)(v12 + 40); ++v6; v8 = v6 < v10; } while ( (signed int)v6 < (signed int)v10 ); } v18 = -1; v11 = &off_6F5D18; sub_639940((int)&v11); } // 6F5D18: using guessed type int (__thiscall *off_6F5D18)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (005B65B0) -------------------------------------------------------- int __cdecl sub_5B65B0() { dword_DA22938 = 5; dword_DA2293C = 10; sub_5874E0(&dword_13258298); sub_463BE0(&unk_CFCF380); sub_466300(&unk_1325D018); sub_5D1C40(&unk_14D40994); sub_5D2F20(&dword_14D409A8); sub_5D2080(&unk_14D40984); sub_626920((int)&dword_14D4207C); sub_5B18C0((int)&dword_14D4207C); dword_14D4204C = dword_14D42084; dword_14D42014 = dword_14D42084; sub_5B54C0((int)&dword_14D420AC); sub_5B56D0((int)&off_86D7D8); sub_5B5900((int)&dword_14D42028); sub_5B5A60((int)&dword_14D42060); sub_5B5D60((int)&dword_14D41FF0); sub_5B5F70((int)&off_86D234); sub_5B60D0((int)&off_86D250); sub_5B6450((int)&off_86D26C); sub_5B6230((int)&dword_14D41B28); sub_621310(&unk_14D41E50); sub_6204A0(&unk_14D41D90); sub_620D60(&unk_14D41F98); sub_612530(&dword_14D41B48); sub_49C640(&unk_D65CF10); sub_4BEF10(&unk_13359F08); return 0; } // 86D234: using guessed type int (*off_86D234)(); // 86D250: using guessed type int (*off_86D250)(); // 86D26C: using guessed type int (*off_86D26C)(); // 86D7D8: using guessed type int (*off_86D7D8)(); // DA22938: using guessed type int dword_DA22938; // DA2293C: using guessed type int dword_DA2293C; // 13258298: using guessed type int dword_13258298; // 14D41B28: using guessed type int dword_14D41B28; // 14D41FF0: using guessed type int dword_14D41FF0; // 14D42014: using guessed type int dword_14D42014; // 14D42028: using guessed type int dword_14D42028; // 14D4204C: using guessed type int dword_14D4204C; // 14D42060: using guessed type int dword_14D42060; // 14D4207C: using guessed type int dword_14D4207C; // 14D42084: using guessed type int dword_14D42084; // 14D420AC: using guessed type int dword_14D420AC; //----- (005B66C0) -------------------------------------------------------- int __thiscall sub_5B66C0(int this) { int v1; // esi@1 v1 = this; sub_626B20(this); return v1; } //----- (005B66D0) -------------------------------------------------------- int __thiscall sub_5B66D0(void *this, const char *a2, int a3, int a4) { return sub_627480(this, a2, a3, a4); } //----- (005B66E0) -------------------------------------------------------- int __stdcall sub_5B66E0(char a1, const char *a2) { void *v2; // ecx@1 const char *v3; // eax@1 const char v4; // dl@2 int v5; // esi@3 int v6; // eax@5 sub_4675D0((int)&unk_D020420, (int)"CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD"); dword_7508B8[dword_750CB8] = (int)"CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 25601; *((_BYTE *)v2 + 2) = a1; *((_BYTE *)v2 + 3) = strlen(a2) + 1; v3 = a2; do { v4 = *v3; v3[(char *)v2 + 4 - a2] = *v3; ++v3; } while ( v4 ); v5 = *((_BYTE *)v2 + 3) + 4; if ( sub_4C81E0(&off_849C18, *((_BYTE *)v2 + 3) + 4) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD : Packet Too Long", v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (005B6800) -------------------------------------------------------- signed int __thiscall sub_5B6800(int this, int a2, unsigned __int16 a3, unsigned __int8 a4) { int v4; // eax@1 int v5; // eax@3 int v6; // edi@3 signed int result; // eax@4 int v8; // eax@6 int v9; // ecx@7 char v10; // [sp+Ch] [bp-144h]@7 int v11; // [sp+10Ch] [bp-44h]@7 int v12; // [sp+110h] [bp-40h]@7 int v13; // [sp+114h] [bp-3Ch]@7 int v14; // [sp+118h] [bp-38h]@7 int v15; // [sp+11Ch] [bp-34h]@7 char v16; // [sp+120h] [bp-30h]@7 unsigned int v17; // [sp+14Ch] [bp-4h]@1 int v18; // [sp+150h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v4 = *(_DWORD *)(this + 52); if ( v4 && *(_DWORD *)(v4 + 40) > 1u && (v5 = sub_626BC0(this, 1u), (v6 = v5) != 0) ) { if ( (unsigned int)a4 >= *(_DWORD *)(v5 + 260) && (v8 = sub_418CB0((int)&dword_14D20890, a3)) != 0 ) { v11 = *(_DWORD *)a2; v12 = *(_DWORD *)(a2 + 4); v13 = *(_DWORD *)(a2 + 8); v9 = *(_DWORD *)(a2 + 16); v14 = *(_DWORD *)(a2 + 12); v15 = v9; v16 = 0; sprintf(&v10, (const char *)(v6 + 4), &v11, *(_DWORD *)v8 + 34, a4); sub_5B66E0(1, &v10); result = 1; } else { result = 0; } } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (005B6900) -------------------------------------------------------- int __stdcall sub_5B6900(int a1, int a2) { return 0; } //----- (005B6920) -------------------------------------------------------- signed int __thiscall sub_5B6920(int this, int a2, unsigned __int8 a3) { int v3; // eax@1 int v4; // eax@3 int v5; // ecx@5 signed int result; // eax@5 char v7; // [sp+4h] [bp-144h]@5 int v8; // [sp+104h] [bp-44h]@5 int v9; // [sp+108h] [bp-40h]@5 int v10; // [sp+10Ch] [bp-3Ch]@5 int v11; // [sp+110h] [bp-38h]@5 int v12; // [sp+114h] [bp-34h]@5 char v13; // [sp+118h] [bp-30h]@5 unsigned int v14; // [sp+144h] [bp-4h]@1 int v15; // [sp+148h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v3 = *(_DWORD *)(this + 52); if ( v3 && *(_DWORD *)(v3 + 40) > 4u && (v4 = sub_626BC0(this, 4u)) != 0 && a3 == *(_DWORD *)(v4 + 260) ) { v8 = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 4); v10 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a2 + 16); v11 = *(_DWORD *)(a2 + 12); v12 = v5; v13 = 0; sprintf(&v7, (const char *)(v4 + 4), &v8, a3); sub_5B66E0(4, &v7); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B69E0) -------------------------------------------------------- signed int __thiscall sub_5B69E0(int this, int a2, unsigned __int8 a3) { int v3; // eax@1 int v4; // edi@3 signed int result; // eax@4 int v6; // edx@5 int v7; // eax@5 int v8; // eax@5 char v9; // [sp+Ch] [bp-144h]@5 int v10; // [sp+10Ch] [bp-44h]@5 int v11; // [sp+110h] [bp-40h]@5 int v12; // [sp+114h] [bp-3Ch]@5 int v13; // [sp+118h] [bp-38h]@5 int v14; // [sp+11Ch] [bp-34h]@5 char v15; // [sp+120h] [bp-30h]@5 unsigned int v16; // [sp+14Ch] [bp-4h]@1 int v17; // [sp+150h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; v3 = *(_DWORD *)(this + 52); if ( v3 && *(_DWORD *)(v3 + 40) > 5u && (v4 = sub_626BC0(this, 5u)) != 0 ) { v6 = *(_DWORD *)(a2 + 4); v10 = *(_DWORD *)a2; v12 = *(_DWORD *)(a2 + 8); v11 = v6; v7 = *(_DWORD *)(a2 + 16); v13 = *(_DWORD *)(a2 + 12); v14 = v7; v15 = 0; v8 = sub_626BC0((int)&unk_1325CBC8, a3); sprintf(&v9, (const char *)(v4 + 4), &v10, v8 + 21); sub_5B66E0(5, &v9); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B6AB0) -------------------------------------------------------- signed int __thiscall sub_5B6AB0(int this, int a2, unsigned __int8 a3, char a4) { int v4; // eax@1 int v5; // eax@3 int v6; // edi@3 int v7; // ecx@5 int v8; // edx@5 int v9; // ecx@5 int v10; // edx@5 int v11; // eax@5 signed int result; // eax@5 char v13; // [sp+14h] [bp-144h]@5 int v14; // [sp+114h] [bp-44h]@5 int v15; // [sp+118h] [bp-40h]@5 int v16; // [sp+11Ch] [bp-3Ch]@5 int v17; // [sp+120h] [bp-38h]@5 int v18; // [sp+124h] [bp-34h]@5 char v19; // [sp+128h] [bp-30h]@5 unsigned int v20; // [sp+154h] [bp-4h]@1 int v21; // [sp+158h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v4 = *(_DWORD *)(this + 52); if ( v4 && *(_DWORD *)(v4 + 40) > 6u && (v5 = sub_626BC0(this, 6u), (v6 = v5) != 0) && (unsigned int)(unsigned __int8)a4 >= *(_DWORD *)(v5 + 260) ) { v7 = *(_DWORD *)(a2 + 4); v14 = *(_DWORD *)a2; v8 = *(_DWORD *)(a2 + 8); v15 = v7; v9 = *(_DWORD *)(a2 + 12); v16 = v8; v10 = *(_DWORD *)(a2 + 16); v17 = v9; v18 = v10; v19 = 0; v11 = sub_62AA20((int)&unk_1325CFD8, a3, a4); sprintf(&v13, (const char *)(v6 + 4), &v14, v11); sub_5B66E0(6, &v13); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B6BA0) -------------------------------------------------------- signed int __thiscall sub_5B6BA0(int this, int a2, int a3) { int v3; // eax@1 int v4; // eax@3 signed int result; // eax@4 int v6; // ecx@5 char v7; // [sp+8h] [bp-144h]@5 int v8; // [sp+108h] [bp-44h]@5 int v9; // [sp+10Ch] [bp-40h]@5 int v10; // [sp+110h] [bp-3Ch]@5 int v11; // [sp+114h] [bp-38h]@5 int v12; // [sp+118h] [bp-34h]@5 char v13; // [sp+11Ch] [bp-30h]@5 unsigned int v14; // [sp+148h] [bp-4h]@1 int v15; // [sp+14Ch] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v3 = *(_DWORD *)(this + 52); if ( v3 && *(_DWORD *)(v3 + 40) > 0xBu && (v4 = sub_626BC0(this, 0xBu)) != 0 ) { v8 = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 4); v10 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 16); v11 = *(_DWORD *)(a2 + 12); v12 = v6; v13 = 0; sprintf(&v7, (const char *)(v4 + 4), &v8, a3); sub_5B66E0(11, &v7); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B6C50) -------------------------------------------------------- signed int __thiscall sub_5B6C50(int this, int a2, int a3) { int v3; // eax@1 int v4; // eax@3 signed int result; // eax@4 int v6; // ecx@5 int v7; // ecx@5 char v8; // [sp+4h] [bp-184h]@5 int v9; // [sp+104h] [bp-84h]@5 int v10; // [sp+108h] [bp-80h]@5 int v11; // [sp+10Ch] [bp-7Ch]@5 int v12; // [sp+110h] [bp-78h]@5 int v13; // [sp+114h] [bp-74h]@5 char v14; // [sp+118h] [bp-70h]@5 int v15; // [sp+144h] [bp-44h]@5 int v16; // [sp+148h] [bp-40h]@5 int v17; // [sp+14Ch] [bp-3Ch]@5 int v18; // [sp+150h] [bp-38h]@5 int v19; // [sp+154h] [bp-34h]@5 char v20; // [sp+158h] [bp-30h]@5 unsigned int v21; // [sp+184h] [bp-4h]@1 int v22; // [sp+188h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v3 = *(_DWORD *)(this + 52); if ( v3 && *(_DWORD *)(v3 + 40) > 0xCu && (v4 = sub_626BC0(this, 0xCu)) != 0 ) { v15 = *(_DWORD *)a2; v16 = *(_DWORD *)(a2 + 4); v17 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 16); v18 = *(_DWORD *)(a2 + 12); v19 = v6; v9 = *(_DWORD *)a3; v10 = *(_DWORD *)(a3 + 4); v11 = *(_DWORD *)(a3 + 8); v7 = *(_DWORD *)(a3 + 16); v12 = *(_DWORD *)(a3 + 12); v13 = v7; v20 = 0; v14 = 0; sprintf(&v8, (const char *)(v4 + 4), &v15, &v9); sub_5B66E0(12, &v8); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B6D30) -------------------------------------------------------- signed int __thiscall sub_5B6D30(int this, int a2, int a3) { int v3; // eax@1 int v4; // eax@3 signed int result; // eax@4 int v6; // ecx@5 int v7; // ecx@5 char v8; // [sp+4h] [bp-184h]@5 int v9; // [sp+104h] [bp-84h]@5 int v10; // [sp+108h] [bp-80h]@5 int v11; // [sp+10Ch] [bp-7Ch]@5 int v12; // [sp+110h] [bp-78h]@5 int v13; // [sp+114h] [bp-74h]@5 char v14; // [sp+118h] [bp-70h]@5 int v15; // [sp+144h] [bp-44h]@5 int v16; // [sp+148h] [bp-40h]@5 int v17; // [sp+14Ch] [bp-3Ch]@5 int v18; // [sp+150h] [bp-38h]@5 int v19; // [sp+154h] [bp-34h]@5 char v20; // [sp+158h] [bp-30h]@5 unsigned int v21; // [sp+184h] [bp-4h]@1 int v22; // [sp+188h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v3 = *(_DWORD *)(this + 52); if ( v3 && *(_DWORD *)(v3 + 40) > 0xDu && (v4 = sub_626BC0(this, 0xDu)) != 0 ) { v15 = *(_DWORD *)a2; v16 = *(_DWORD *)(a2 + 4); v17 = *(_DWORD *)(a2 + 8); v6 = *(_DWORD *)(a2 + 16); v18 = *(_DWORD *)(a2 + 12); v19 = v6; v9 = *(_DWORD *)a3; v10 = *(_DWORD *)(a3 + 4); v11 = *(_DWORD *)(a3 + 8); v7 = *(_DWORD *)(a3 + 16); v12 = *(_DWORD *)(a3 + 12); v13 = v7; v20 = 0; v14 = 0; sprintf(&v8, (const char *)(v4 + 4), &v15, &v9); sub_5B66E0(13, &v8); result = 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005B6E10) -------------------------------------------------------- signed int __stdcall sub_5B6E10(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObject::so_Prison_Go"); dword_7508B8[dword_750CB8] = (int)"ShineObject::so_Prison_Go"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObject::so_Prison_Go"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B6E60) -------------------------------------------------------- int __thiscall sub_5B6E60(void *this, __int16 a2) { void *v2; // esi@1 signed int v3; // edi@1 int v4; // edx@1 int v5; // edx@3 int v6; // eax@3 _BYTE *v7; // eax@3 signed int v8; // eax@3 int v9; // edi@6 int v10; // eax@9 int v11; // eax@9 int v12; // edx@9 int v13; // eax@9 int v14; // eax@10 int (__thiscall *v15)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@10 unsigned __int8 v16; // al@12 int v17; // edi@12 char *v19; // [sp-14h] [bp-A4h]@10 signed int v20; // [sp-10h] [bp-A0h]@10 signed int v21; // [sp-Ch] [bp-9Ch]@10 signed int v22; // [sp-8h] [bp-98h]@10 char v23; // [sp+10h] [bp-80h]@10 char v24; // [sp+24h] [bp-6Ch]@9 char v25; // [sp+45h] [bp-4Bh]@9 int v26; // [sp+66h] [bp-2Ah]@9 int v27; // [sp+6Ah] [bp-26h]@9 __int16 v28; // [sp+6Eh] [bp-22h]@9 char v29[4]; // [sp+74h] [bp-1Ch]@3 int v30; // [sp+78h] [bp-18h]@3 int v31; // [sp+7Ch] [bp-14h]@3 unsigned int v32; // [sp+80h] [bp-10h]@1 int v33; // [sp+8Ch] [bp-4h]@1 int v34; // [sp+90h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::so_Prison_Go"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::so_Prison_Go"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v2 + 957); v33 = 0; if ( !*(_BYTE *)v4 || !*(_DWORD *)((char *)v2 + 122) ) { --dword_750CB8; goto LABEL_16; } v31 = 0; v30 = 0; *(_DWORD *)v29 = 0; strncpy(v29, "EldPri", 0xCu); v5 = v30; v6 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v6; v7 = &byte_85A2C0[256 * v6]; *(_DWORD *)v7 = *(_DWORD *)v29; *((_DWORD *)v7 + 2) = v31; *((_DWORD *)v7 + 1) = v5; v7[12] = 0; v8 = sub_639620(&unk_14D20404, v7); if ( v8 == -1 ) LOWORD(v8) = -1; v8 = (unsigned __int16)v8; if ( (unsigned __int16)v8 >= dword_14D20400 ) { LABEL_8: --dword_750CB8; LABEL_16: v33 = v3; sub_467660((int)&unk_D020420, (int)"ShinePlayer::so_Prison_Go"); return 0; } v9 = *(_DWORD *)(dword_14D203FC + 4 * v8); if ( !v9 ) { v3 = -1; goto LABEL_8; } v10 = sub_418B00((int)byte_85A2C0, (int)v29); strncpy(&v24, (const char *)v10, 0xCu); v11 = sub_418B00((int)byte_85A2C0, (int)v29); strncpy(&v25, (const char *)v11, 0xCu); v26 = *(_DWORD *)(v9 + 50); v12 = *(_DWORD *)(v9 + 54); v28 = 0; v13 = *((_DWORD *)v2 + 957); v27 = v12; if ( *(_BYTE *)v13 == 3 ) { *(_BYTE *)v13 = 1; sub_42A880((int)((char *)v2 + 155460), (void *)(*(_DWORD *)((char *)v2 + 32650) + 37)); v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); v15 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1536); v22 = 80; v21 = 79; *(_DWORD *)((char *)v2 + 32703) = (unsigned int)(307 * v14) >> 10; v20 = 4; v19 = &v23; } else { v15 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1536); v22 = 10; v21 = 9; v20 = 6; v19 = &v23; } v16 = v15(v2, v19, v20, v21, v22); v17 = v16; if ( v16 ) *(_WORD *)((char *)v2 + 32759) = a2; --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"ShinePlayer::so_Prison_Go"); return v17; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (005B7090) -------------------------------------------------------- int __stdcall sub_5B7090(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObject::so_Prison_End"); dword_7508B8[dword_750CB8] = (int)"ShineObject::so_Prison_End"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObject::so_Prison_End"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B70E0) -------------------------------------------------------- int __thiscall sub_5B70E0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // edx@3 int v6; // eax@3 int v7; // ecx@5 int v8; // eax@5 _BYTE *v9; // eax@5 int v10; // edx@5 int v11; // ecx@5 int v12; // eax@5 _BYTE *v13; // eax@5 int v14; // edx@6 int v15; // edx@7 int v16; // eax@7 _BYTE *v17; // eax@7 signed int v18; // eax@7 int v19; // eax@10 void (__thiscall *v20)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@12 char v22; // [sp+14h] [bp-80h]@12 char v23; // [sp+28h] [bp-6Ch]@5 char v24; // [sp+49h] [bp-4Bh]@5 int v25; // [sp+6Ah] [bp-2Ah]@6 int v26; // [sp+6Eh] [bp-26h]@12 __int16 v27; // [sp+72h] [bp-22h]@12 char v28[4]; // [sp+78h] [bp-1Ch]@3 int v29; // [sp+7Ch] [bp-18h]@3 int v30; // [sp+80h] [bp-14h]@3 unsigned int v31; // [sp+84h] [bp-10h]@1 int v32; // [sp+90h] [bp-4h]@1 int v33; // [sp+94h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::so_Prison_End"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::so_Prison_End"; dword_750AB8[dword_750CB8++] = -1; *(_WORD *)((char *)v3 + 32759) = 0; v4 = *(_DWORD *)((char *)v3 + 122); v32 = 0; if ( !v4 ) { --dword_750CB8; v32 = -1; return sub_467660((int)&unk_D020420, (int)"ShinePlayer::so_Prison_End"); } *((_DWORD *)v3 + 40199) = 0; *((_DWORD *)v3 + 40200) = sub_5131E0; *((_DWORD *)v3 + 40203) = sub_452C70; *((_DWORD *)v3 + 40202) = 0; if ( a2 ) { v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 8); *(_DWORD *)v28 = *(_DWORD *)a2; v29 = v5; v30 = v6; } else { v30 = 0; v29 = 0; *(_DWORD *)v28 = 0; strncpy(v28, "RouN", 0xCu); } v7 = v29; v8 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v8; v9 = &byte_85A2C0[256 * v8]; *(_DWORD *)v9 = *(_DWORD *)v28; v10 = v30; *((_DWORD *)v9 + 1) = v7; *((_DWORD *)v9 + 2) = v10; v9[12] = 0; strncpy(&v23, v9, 0xCu); v11 = *(_DWORD *)v28; v12 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v12; v13 = &byte_85A2C0[256 * v12]; *((_DWORD *)v13 + 1) = v29; *(_DWORD *)v13 = v11; *((_DWORD *)v13 + 2) = v30; v13[12] = 0; strncpy(&v24, v13, 0xCu); if ( a3 ) { v14 = *(_DWORD *)(a3 + 4); v25 = *(_DWORD *)a3; } else { v15 = v29; v16 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v16; v17 = &byte_85A2C0[256 * v16]; *(_DWORD *)v17 = *(_DWORD *)v28; *((_DWORD *)v17 + 2) = v30; *((_DWORD *)v17 + 1) = v15; v17[12] = 0; v18 = sub_639620(&unk_14D20404, v17); if ( v18 == -1 ) LOWORD(v18) = -1; v18 = (unsigned __int16)v18; if ( (unsigned __int16)v18 >= dword_14D20400 || (v19 = *(_DWORD *)(dword_14D203FC + 4 * v18)) == 0 ) goto LABEL_13; v25 = *(_DWORD *)(v19 + 50); v14 = *(_DWORD *)(v19 + 54); } v26 = v14; v20 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1536); v27 = 0; v20(v3, &v22, 6, 9, 10); LABEL_13: --dword_750CB8; v32 = -1; return sub_467660((int)&unk_D020420, (int)"ShinePlayer::so_Prison_End"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (005B7320) -------------------------------------------------------- signed int __thiscall sub_5B7320(void *this, int a2, const char *a3) { int v3; // esi@1 void *v4; // ecx@1 signed int v5; // esi@1 char v7; // [sp+8h] [bp-110h]@1 unsigned int v8; // [sp+108h] [bp-10h]@1 int v9; // [sp+114h] [bp-4h]@1 int v10; // [sp+118h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v3 = (int)this; sub_4D57B0(&v7, a3); v4 = *(void **)(v3 + 68); v9 = 0; v5 = sub_5071A0(v4, a2, &v7, v3); v9 = -1; nullsub_2(&v7); return v5; } // 86FEB8: using guessed type int __security_cookie; //----- (005B73B0) -------------------------------------------------------- int __thiscall sub_5B73B0(int this, int a2) { int v2; // esi@1 v2 = this; sub_62CF40(this, a2); *(_DWORD *)v2 = off_6F7844; sub_633D00((void *)(v2 + 184)); *(_DWORD *)(v2 + 180) = 0; *(_DWORD *)(v2 + 176) = 0; *(_DWORD *)(v2 + 168) = 0; *(_DWORD *)(v2 + 172) = 0; *(_DWORD *)(v2 + 164) = 0; return v2; } // 6F7844: using guessed type int (__stdcall *off_6F7844[2])(int); //----- (005B7430) -------------------------------------------------------- void __thiscall sub_5B7430(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_6F7844; sub_633FA0((void *)(this + 184)); sub_62BE60(v1); } // 6F7844: using guessed type int (__stdcall *off_6F7844[2])(int); //----- (005B7490) -------------------------------------------------------- int __thiscall sub_5B7490(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 180) = a2; return result; } //----- (005B74A0) -------------------------------------------------------- signed int __thiscall sub_5B74A0(int this, int a2, int a3, unsigned __int16 a4) { if ( !*(_DWORD *)(this + 180) ) return 0; if ( (*(int (**)(void))(**(_DWORD **)(this + 180) + 2692))() ) { if ( *(_BYTE *)(a2 + 17) != 8 ) return 0; } else { if ( *(_BYTE *)(a2 + 17) == 8 ) return 0; } if ( *(_BYTE *)(a2 + 8 * a3 + 92) != 1 || *(_BYTE *)(a2 + 8 * a3 + 96) != 1 || !sub_63D9F0((int)&unk_14D159B0, *(_WORD *)(a2 + 8 * a3 + 94), a4, *(_BYTE *)(a2 + 8 * a3 + 98)) ) return 0; return 1; } //----- (005B7510) -------------------------------------------------------- signed int __thiscall sub_5B7510(int this, int a2, int a3, unsigned __int16 a4) { int v5; // eax@6 if ( !*(_DWORD *)(this + 180) ) return 0; if ( (*(int (**)(void))(**(_DWORD **)(this + 180) + 2692))() ) { if ( *(_BYTE *)(a2 + 17) != 8 ) return 0; } else { if ( *(_BYTE *)(a2 + 17) == 8 ) return 0; } v5 = a2 + 32 * a3; if ( *(_BYTE *)(v5 + 196) != 1 || !sub_63D9F0((int)&unk_14D159B0, *(_WORD *)(v5 + 200), a4, *(_BYTE *)(32 * (a3 + 7) + a2)) ) return 0; return 1; } //----- (005B7590) -------------------------------------------------------- char __thiscall sub_5B7590(int this) { char result; // al@2 if ( *(_DWORD *)(this + 180) ) result = (*(int (**)(void))(**(_DWORD **)(this + 180) + 1240))(); else result = 0; return result; } //----- (005B75B0) -------------------------------------------------------- char __thiscall sub_5B75B0(int this) { int v1; // eax@1 char result; // al@2 v1 = *(_DWORD *)(this + 180); if ( v1 ) result = *(_BYTE *)(v1 + 32766) & 3; else result = 0; return result; } //----- (005B75D0) -------------------------------------------------------- char __thiscall sub_5B75D0(int this) { char result; // al@2 int v2; // eax@3 if ( *(_DWORD *)(this + 180) ) { v2 = (*(int (**)(void))(**(_DWORD **)(this + 180) + 1180))(); result = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 56))(v2); } else { result = 0; } return result; } //----- (005B7600) -------------------------------------------------------- char __thiscall sub_5B7600(int this) { char result; // al@2 if ( *(_DWORD *)(this + 180) ) result = (*(int (**)(void))(**(_DWORD **)(this + 180) + 2052))(); else result = 0; return result; } //----- (005B7620) -------------------------------------------------------- bool __thiscall sub_5B7620(int this, __int16 a2) { int v2; // esi@1 bool result; // al@2 void (*v4)(void); // eax@3 int v5; // [sp+0h] [bp-34h]@0 int v6; // [sp+4h] [bp-30h]@0 int (**v7)(); // [sp+8h] [bp-2Ch]@3 int v8; // [sp+Ch] [bp-28h]@3 int v9; // [sp+10h] [bp-24h]@3 int v10; // [sp+14h] [bp-20h]@3 int v11; // [sp+18h] [bp-1Ch]@3 int v12; // [sp+1Ch] [bp-18h]@3 int v13; // [sp+20h] [bp-14h]@3 int v14; // [sp+24h] [bp-10h]@3 int v15; // [sp+28h] [bp-Ch]@3 int v16; // [sp+30h] [bp-4h]@3 v2 = this; if ( *(_DWORD *)(this + 180) ) { v8 = (*(int (__stdcall **)(int, int, int (**)(), int, int, int, int, int, int, int, int))(**(_DWORD **)(this + 180) + 1148))( v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) + 3668; v7 = &off_6A86A4; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 8))(v8); v7 = (int (**)())&off_6A86BC; LOWORD(v11) = a2; v4 = *(void (**)(void))(**(_DWORD **)(v2 + 180) + 2004); v16 = 0; v4(); result = sub_486D40(&v12) == 0; } else { result = 1; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); //----- (005B76F0) -------------------------------------------------------- int __thiscall sub_5B76F0(void *this) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@2 unsigned __int16 v4; // ax@6 int v6; // [sp-4h] [bp-1Ch]@3 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::InitNewPlayer"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::InitNewPlayer"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 4); if ( v2 ) { v3 = *(_DWORD *)(v2 + 16); if ( v3 ) v6 = *(_WORD *)(v3 + 2); else v6 = 0; } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::InitNewPlayer : m_pQuestData NULL", 0); *(_DWORD *)(v1 + 4) = &unk_1325D028; if ( dword_1325D038 ) v4 = *(_WORD *)(dword_1325D038 + 2); else v4 = 0; v6 = v4; } sub_62BEA0(v1, v6); sub_62BF20(v1); *(_DWORD *)(v1 + 2304) = 0; *(_DWORD *)(v1 + 2308) = -1; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CQuestZone::InitNewPlayer"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1325D038: using guessed type int dword_1325D038; //----- (005B7800) -------------------------------------------------------- signed int __thiscall sub_5B7800(int this) { int v1; // esi@1 int v2; // edi@1 signed int v3; // eax@1 signed int result; // eax@2 v1 = this; v2 = *(_WORD *)(this + 2310); sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestClose"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestClose"; v3 = 1; dword_750AB8[dword_750CB8++] = v2; if ( *(_DWORD *)(v1 + 180) ) { if ( *(_WORD *)(v1 + 2310) != -1 ) { sub_633E30((void *)(v1 + 184)); *(_WORD *)(v1 + 2310) = -1; *(_DWORD *)(v1 + 2304) = 0; v3 = 1; } dword_750CB8 -= v3; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestClose"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestClose"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B7910) -------------------------------------------------------- int __thiscall sub_5B7910(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int result; // eax@2 int v6; // edx@3 int v7; // eax@4 int (*v8)(void); // eax@6 int v9; // esi@6 int (**v10)(); // [sp+8h] [bp-2Ch]@3 int v11; // [sp+Ch] [bp-28h]@3 int v12; // [sp+14h] [bp-20h]@6 int *v13; // [sp+18h] [bp-1Ch]@6 int v14; // [sp+1Ch] [bp-18h]@6 int v15; // [sp+20h] [bp-14h]@6 int v16; // [sp+24h] [bp-10h]@1 int v17; // [sp+30h] [bp-4h]@1 v3 = this; v16 = (int)"CQuestZone::QuestCheckRewardInven"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestCheckRewardInven"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestCheckRewardInven"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 45); v17 = 0; if ( v4 ) { v10 = &off_6A86A4; v11 = v4 + 36484; v6 = *(_DWORD *)(v4 + 36484); if ( a3 ) v7 = (*(int (__stdcall **)(int))(v6 + 4))(a3); else v7 = (*(int (**)(void))(v6 + 8))(); v12 = v7; v10 = (int (**)())&off_6A86B4; v8 = *(int (**)(void))(**((_DWORD **)v3 + 45) + 2004); LOBYTE(v17) = 1; v13 = (int *)&v10; v14 = v8(); v15 = 9; v9 = 0; if ( sub_486D40(&v13) ) { do { if ( !(**(int (__stdcall ***)(_DWORD))v13[1])(v13[2]) ) break; ++v9; } while ( sub_486DA0((void **)&v13) ); } --dword_750CB8; v10 = &off_6A86A4; v17 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckRewardInven"); result = v9 >= a2; } else { --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckRewardInven"); result = 0; } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86B4: using guessed type int (__thiscall *off_6A86B4)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B7A90) -------------------------------------------------------- signed int __thiscall sub_5B7A90(void *this, char a2, int a3) { void *v3; // esi@1 signed int result; // eax@2 int v5; // eax@3 int v6; // esi@5 int v7; // edx@5 signed int v8; // eax@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestCheckSelectReward"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestCheckSelectReward"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 45) ) { v5 = sub_632D90(*((_DWORD *)v3 + 1), a2); if ( v5 ) { v6 = 0; v7 = v5 + 516; v8 = 0; while ( 1 ) { if ( *(_BYTE *)v7 == 2 ) { ++v6; if ( a3 == v8 ) break; } ++v8; v7 += 12; if ( v8 >= 12 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckSelectReward"); return v6 == 0; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckSelectReward"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckSelectReward"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckSelectReward"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B7C00) -------------------------------------------------------- signed int __thiscall sub_5B7C00(void *this, __int16 a2) { void *v2; // esi@1 bool v3; // zf@1 int v4; // eax@4 signed int v5; // ecx@6 int v7; // [sp-4h] [bp-34h]@2 __int16 v8; // [sp+10h] [bp-20h]@3 int v9; // [sp+14h] [bp-1Ch]@3 int v10; // [sp+18h] [bp-18h]@10 int v11; // [sp+20h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-4h]@1 v2 = this; v11 = (int)"CQuestZone::QuestPlayer_NPCClickCheck"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClickCheck"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestPlayer_NPCClickCheck"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 45) == 0; v12 = 0; if ( v3 ) { --dword_750CB8; v7 = (int)"CQuestZone::QuestPlayer_NPCClickCheck"; } else { *((_WORD *)v2 + 1160) = a2; v8 = a2; sub_62DCD0(v2, &v8); if ( v9 && (v4 = *(_WORD *)(v9 + 4), v4 != -1) && *((_WORD *)v2 + 1155) == (_WORD)v4 ) { v5 = 1; if ( *((_DWORD *)v2 + 576) == 1 && *((_WORD *)v2 + 1154) == a2 ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClickCheck"); return 2; } } else { v5 = 1; } if ( v10 >= 4 && (v10 <= 8 || v10 == 20) ) { dword_750CB8 -= v5; v12 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClickCheck"); return 1; } dword_750CB8 -= v5; v7 = (int)"CQuestZone::QuestPlayer_NPCClickCheck"; } v12 = -1; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B7D70) -------------------------------------------------------- int __thiscall sub_5B7D70(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // ecx@3 int v7; // eax@3 _BYTE *v8; // eax@3 int v10; // [sp-4h] [bp-20h]@2 v4 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::GetPlayerCurrentLocation"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::GetPlayerCurrentLocation"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v4 + 45); if ( v5 ) { v6 = *(_DWORD *)(v5 + 122); v7 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v7; v8 = &byte_85A2C0[256 * v7]; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); v8[12] = 0; *(_WORD *)a2 = sub_639620(&unk_14D20404, v8); *(_DWORD *)a3 = **(_DWORD **)(*((_DWORD *)v4 + 45) + 102); *(_DWORD *)a4 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v4 + 45) + 102) + 4); --dword_750CB8; v10 = (int)"CQuestZone::GetPlayerCurrentLocation"; } else { --dword_750CB8; v10 = (int)"CQuestZone::GetPlayerCurrentLocation"; } return sub_467660((int)&unk_D020420, v10); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005B7EA0) -------------------------------------------------------- __int16 __thiscall sub_5B7EA0(void *this, __int16 a2) { void *v2; // esi@1 bool v3; // zf@1 __int16 result; // ax@2 int (*v5)(void); // eax@3 int v6; // esi@5 int v7; // eax@6 int (**v8)(); // [sp+10h] [bp-30h]@3 int v9; // [sp+14h] [bp-2Ch]@3 int v10; // [sp+1Ch] [bp-24h]@3 __int16 v11; // [sp+20h] [bp-20h]@3 int *v12; // [sp+24h] [bp-1Ch]@3 int v13; // [sp+28h] [bp-18h]@3 int v14; // [sp+2Ch] [bp-14h]@3 int v15; // [sp+30h] [bp-10h]@1 int v16; // [sp+3Ch] [bp-4h]@1 v2 = this; v15 = (int)"CQuestZone::GetQuestPlayerItemLot"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::GetQuestPlayerItemLot"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::GetQuestPlayerItemLot"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 45) == 0; v16 = 0; if ( v3 ) { --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::GetQuestPlayerItemLot"); result = 0; } else { v9 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 1148))() + 3668; v8 = &off_6A86A4; v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 8))(v9); v8 = (int (**)())&off_6A86BC; v11 = a2; v5 = *(int (**)(void))(**((_DWORD **)v2 + 45) + 2004); LOBYTE(v16) = 1; v12 = (int *)&v8; v13 = v5(); v14 = 9; if ( sub_486D40(&v12) ) { v6 = 0; do { v7 = (**(int (__stdcall ***)(_DWORD))v12[1])(v12[2]); v6 += (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 28))(v7 + 8); } while ( sub_486DA0((void **)&v12) ); --dword_750CB8; v8 = &off_6A86A4; v16 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::GetQuestPlayerItemLot"); result = v6; } else { --dword_750CB8; v8 = &off_6A86A4; v16 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::GetQuestPlayerItemLot"); result = 0; } } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86BC: using guessed type int (__thiscall *off_6A86BC)(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8040) -------------------------------------------------------- char __thiscall sub_5B8040(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // edi@4 int v4; // ST04_4@4 int v5; // eax@4 int (*v6)(void); // eax@4 int v7; // eax@4 char v8; // bl@6 int v10; // [sp-4h] [bp-40h]@5 int (**v11)(); // [sp+10h] [bp-2Ch]@4 int *v12; // [sp+20h] [bp-1Ch]@4 int v13; // [sp+24h] [bp-18h]@4 int v14; // [sp+28h] [bp-14h]@4 int v15; // [sp+2Ch] [bp-10h]@1 int v16; // [sp+38h] [bp-4h]@1 v1 = this; v15 = (int)"CQuestZone::GetQuestPlayerEmptyInventory"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::GetQuestPlayerEmptyInventory"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::GetQuestPlayerEmptyInventory"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 45) == 0; v16 = 0; if ( v2 || !(*(int (**)(void))(**((_DWORD **)v1 + 45) + 1148))() || !(*(int (**)(void))(**((_DWORD **)v1 + 45) + 1176))() ) { v10 = (int)"CQuestZone::GetQuestPlayerEmptyInventory"; goto LABEL_10; } v3 = *((_DWORD *)v1 + 45); v4 = (*(int (**)(void))(**((_DWORD **)v1 + 45) + 1176))(); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1148))(v3); sub_43BB20((int)&v11, v5 + 3668, v4); v6 = *(int (**)(void))(**((_DWORD **)v1 + 45) + 2004); LOBYTE(v16) = 1; v7 = v6(); v12 = (int *)&v11; v13 = v7; v14 = 9; if ( !sub_486D40(&v12) ) { v11 = &off_6A86A4; v10 = (int)"CQuestZone::GetQuestPlayerEmptyInventory"; LABEL_10: --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, v10); return 0; } v8 = 0; do ++v8; while ( sub_486DA0((void **)&v12) ); --dword_750CB8; v11 = &off_6A86A4; v16 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::GetQuestPlayerEmptyInventory"); return v8; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B81C0) -------------------------------------------------------- int __thiscall sub_5B81C0(void *this, int a2, __int16 a3) { void *v3; // esi@1 int result; // eax@2 int v5; // esi@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::GetSuccessItemCount"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::GetSuccessItemCount"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 45) && a2 ) { v5 = 0; if ( *(_BYTE *)(a2 + 132) == 1 && *(_WORD *)(a2 + 134) == a3 ) v5 = *(_WORD *)(a2 + 136); if ( *(_BYTE *)(a2 + 138) == 1 && *(_WORD *)(a2 + 140) == a3 ) v5 += *(_WORD *)(a2 + 142); if ( *(_BYTE *)(a2 + 144) == 1 && *(_WORD *)(a2 + 146) == a3 ) v5 += *(_WORD *)(a2 + 148); if ( *(_BYTE *)(a2 + 150) == 1 && *(_WORD *)(a2 + 152) == a3 ) v5 += *(_WORD *)(a2 + 154); if ( *(_BYTE *)(a2 + 156) == 1 ) { if ( *(_WORD *)(a2 + 158) == a3 ) v5 += *(_WORD *)(a2 + 160); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::GetSuccessItemCount"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::GetSuccessItemCount"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8320) -------------------------------------------------------- int __thiscall sub_5B8320(void *this, __int16 a2, const void *a3) { void *v3; // ebx@1 void *v4; // eax@3 int v5; // eax@5 int v7; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SCRIPT_CMD_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_SCRIPT_CMD_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 45) ) { v4 = off_849C18; *(_WORD *)off_849C18 = 17409; *((_WORD *)v4 + 1) = a2; memcpy((char *)v4 + 4, a3, 0x65u); if ( sub_4C81E0(&off_849C18, 105) ) { v5 = (*(int (**)(void))(**((_DWORD **)v3 + 45) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, *((_DWORD *)v3 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_SCRIPT_CMD_REQ : Packet Too Long", 105); } --dword_750CB8; v7 = (int)"CQuestZone::Send_NC_QUEST_SCRIPT_CMD_REQ"; } else { --dword_750CB8; v7 = (int)"CQuestZone::Send_NC_QUEST_SCRIPT_CMD_REQ"; } return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8440) -------------------------------------------------------- signed int __thiscall sub_5B8440(void *this, const void *a2, int a3) { void *v3; // esi@1 signed int result; // eax@2 void *v5; // ebx@3 int v6; // eax@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_SET_INFO_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_DB_SET_INFO_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 45) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 17411; *((_WORD *)v5 + 1) = *(_WORD *)(*((_DWORD *)v3 + 45) + 4); *((_DWORD *)v5 + 1) = (*(int (**)(void))(**((_DWORD **)v3 + 45) + 836))(); memcpy((char *)v5 + 9, a2, 0x20u); *((_BYTE *)v5 + 8) = *(_BYTE *)a3; if ( sub_4C81E0(&off_849C18, 41) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_DB_SET_INFO_REQ : Packet Too Long", 41); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_SET_INFO_REQ"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_SET_INFO_REQ"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005B8590) -------------------------------------------------------- signed int __thiscall sub_5B8590(void *this, __int16 a2) { void *v2; // edi@1 signed int result; // eax@2 void *v4; // esi@3 int v5; // eax@4 int v6; // eax@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_CLEAR_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_DB_CLEAR_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { v4 = off_849C18; if ( *((_DWORD *)off_849C18 + 1) ) { *(_WORD *)off_849C18 = 17413; *((_WORD *)v4 + 1) = *(_WORD *)(*((_DWORD *)v2 + 45) + 4); v5 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 836))(); *((_WORD *)v4 + 4) = a2; *((_DWORD *)v4 + 1) = v5; if ( sub_4C81E0(&off_849C18, 10) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_DB_CLEAR_REQ : Packet Too Long", 10); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_CLEAR_REQ"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_CLEAR_REQ"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005B86E0) -------------------------------------------------------- signed int __thiscall sub_5B86E0(void *this, __int16 a2, __int16 a3) { void *v3; // esi@1 signed int result; // eax@2 void *v5; // eax@3 int v6; // eax@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_GIVE_UP_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_GIVE_UP_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 45) ) { v5 = off_849C18; *(_WORD *)off_849C18 = 17416; *((_WORD *)v5 + 1) = a2; *((_WORD *)v5 + 2) = a3; if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (**)(void))(**((_DWORD **)v3 + 45) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, *((_DWORD *)v3 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ : Packet Too Long", 6); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_GIVE_UP_ACK"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_GIVE_UP_ACK"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8830) -------------------------------------------------------- signed int __thiscall sub_5B8830(void *this, __int16 a2) { void *v2; // edi@1 signed int result; // eax@2 void *v4; // esi@3 int v5; // eax@4 int v6; // eax@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_GIVE_UP_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_DB_GIVE_UP_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { v4 = off_849C18; if ( *((_DWORD *)off_849C18 + 1) ) { *(_WORD *)off_849C18 = 17417; *((_WORD *)v4 + 1) = *(_WORD *)(*((_DWORD *)v2 + 45) + 4); v5 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 836))(); *((_WORD *)v4 + 4) = a2; *((_DWORD *)v4 + 1) = v5; if ( sub_4C81E0(&off_849C18, 10) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_DB_GIVE_UP_REQ : Packet Too Long", 10); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_GIVE_UP_REQ"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_GIVE_UP_REQ"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005B8980) -------------------------------------------------------- int __thiscall sub_5B8980(void *this, int a2) { int v2; // esi@1 __int16 v4; // [sp+10h] [bp-30h]@4 char v5; // [sp+12h] [bp-2Eh]@4 int v6; // [sp+13h] [bp-2Dh]@4 int v7; // [sp+17h] [bp-29h]@4 int v8; // [sp+1Bh] [bp-25h]@4 int v9; // [sp+1Fh] [bp-21h]@4 int v10; // [sp+23h] [bp-1Dh]@4 int v11; // [sp+27h] [bp-19h]@4 int v12; // [sp+2Bh] [bp-15h]@4 char v13; // [sp+2Fh] [bp-11h]@4 unsigned int v14; // [sp+30h] [bp-10h]@1 int v15; // [sp+3Ch] [bp-4h]@1 int v16; // [sp+40h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_DB_GIVE_UP_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_DB_GIVE_UP_ACK"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( *(_DWORD *)(v2 + 180) ) { if ( *(_WORD *)(a2 + 8) == 2881 ) { v4 = *(_WORD *)(a2 + 6); v5 = 20; v6 = 0; v7 = 0; v8 = 0; v9 = 0; v10 = 0; v11 = 0; v12 = 0; v13 = 0; sub_62C050(v2, &v4); } sub_5B86E0((void *)v2, *(_WORD *)(a2 + 6), *(_WORD *)(a2 + 8)); --dword_750CB8; } else { --dword_750CB8; } v15 = -1; return sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_DB_GIVE_UP_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005B8A80) -------------------------------------------------------- signed int __thiscall sub_5B8A80(void *this, __int16 a2) { void *v2; // esi@1 signed int result; // eax@2 void *v4; // eax@3 int v5; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_CLIENT_SCENARIO_DONE_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_CLIENT_SCENARIO_DONE_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { v4 = off_849C18; *(_WORD *)off_849C18 = 17420; *((_WORD *)v4 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, *((_DWORD *)v2 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_CLIENT_SCENARIO_DONE_ACK : Packet Too Long", 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_CLIENT_SCENARIO_DONE_ACK"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_CLIENT_SCENARIO_DONE_ACK"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8BC0) -------------------------------------------------------- signed int __thiscall sub_5B8BC0(void *this, __int16 a2) { void *v2; // esi@1 signed int result; // eax@2 void *v4; // eax@3 int v5; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SCENARIO_RUN_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_SCENARIO_RUN_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { v4 = off_849C18; *(_WORD *)off_849C18 = 17422; *((_WORD *)v4 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, *((_DWORD *)v2 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_SCENARIO_RUN_CMD : Packet Too Long", 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SCENARIO_RUN_CMD"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SCENARIO_RUN_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8D00) -------------------------------------------------------- signed int __thiscall sub_5B8D00(void *this, __int16 a2, __int16 a3, __int16 a4) { void *v4; // esi@1 signed int result; // eax@2 void *v6; // eax@3 int v7; // eax@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SELECT_START_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_SELECT_START_ACK"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v4 + 45) ) { v6 = off_849C18; *(_WORD *)off_849C18 = 17424; *((_WORD *)v6 + 1) = a2; *((_WORD *)v6 + 3) = a4; *((_WORD *)v6 + 2) = a3; if ( sub_4C81E0(&off_849C18, 8) ) { v7 = (*(int (**)(void))(**((_DWORD **)v4 + 45) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, *((_DWORD *)v4 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_SELECT_START_ACK : Packet Too Long", 8); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SELECT_START_ACK"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_SELECT_START_ACK"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8E50) -------------------------------------------------------- signed int __thiscall sub_5B8E50(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { if ( *((_WORD *)v2 + 1155) == *(_WORD *)a2 ) *((_DWORD *)v2 + 579) = *(_DWORD *)(a2 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B8F30) -------------------------------------------------------- signed int __thiscall sub_5B8F30(void *this, __int16 a2) { void *v2; // esi@1 signed int result; // eax@2 void *v4; // eax@3 int v5; // eax@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_REWARD_NEED_SELECT_ITEM_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_REWARD_NEED_SELECT_ITEM_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { v4 = off_849C18; *(_WORD *)off_849C18 = 17426; *((_WORD *)v4 + 1) = a2; if ( sub_4C81E0(&off_849C18, 4) ) { v5 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, *((_DWORD *)v2 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_REWARD_NEED_SELECT_ITEM_CMD : Packet Too Long", 4); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_REWARD_NEED_SELECT_ITEM_CMD"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_REWARD_NEED_SELECT_ITEM_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B9070) -------------------------------------------------------- signed int __thiscall sub_5B9070(void *this, __int16 a2) { int v2; // edi@1 signed int result; // eax@2 int v4; // eax@5 void *v5; // esi@9 int v6; // eax@11 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_READ_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_DB_READ_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v2 + 180) ) { if ( sub_632D90(*(_DWORD *)(v2 + 4), a2) && (v4 = sub_62D210(v2, a2), v4 != 2) && v4 != 6 && v4 != 8 && v4 != 7 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 17432; *((_WORD *)v5 + 1) = *(_WORD *)(*(_DWORD *)(v2 + 180) + 4); *((_DWORD *)v5 + 1) = (*(int (**)(void))(**(_DWORD **)(v2 + 180) + 836))(); *((_WORD *)v5 + 4) = a2; if ( sub_4C81E0(&off_849C18, 10) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_DB_READ_REQ : Packet Too Long", 10); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_READ_REQ"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_READ_REQ"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_DB_READ_REQ"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005B9210) -------------------------------------------------------- int __thiscall sub_5B9210(void *this, int a2) { void *v2; // ebx@1 int result; // eax@2 int v4; // edx@3 signed int v5; // eax@4 int v6; // esi@5 int v7; // ecx@5 void *v8; // edi@8 int v9; // [sp+14h] [bp-14h]@3 int v10; // [sp+18h] [bp-10h]@3 int v11; // [sp+30h] [bp+8h]@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_QUEST_DOING_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::MakeStruct_NC_CHARSAVE_QUEST_DOING_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { v4 = a2; *(_BYTE *)(a2 + 6) = 1; v10 = 0; v9 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v11 = 0; v5 = 40; do { v6 = *((_DWORD *)v2 + 4) + v11; v7 = *(_BYTE *)(v6 + 2); if ( v7 == 6 || v7 == 7 || v7 == 8 ) { ++v10; v8 = (void *)(v4 + v5 - 32); v5 += 32; memcpy(v8, (const void *)v6, 0x20u); if ( (unsigned int)v5 >= 0x1F40 ) break; } v11 += 32; ++v9; } while ( v9 < *((_DWORD *)v2 + 2) ); } *(_BYTE *)(v4 + 7) = v10; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_QUEST_DOING_REQ"); result = v10; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_QUEST_DOING_REQ"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B9340) -------------------------------------------------------- int __thiscall sub_5B9340(void *this, int a2) { void *v2; // ebx@1 int v3; // edx@1 int result; // eax@2 int v5; // eax@3 int v6; // esi@5 int v7; // eax@5 void *v8; // edi@8 int v9; // [sp+14h] [bp-18h]@3 int v10; // [sp+18h] [bp-14h]@3 int v11; // [sp+18h] [bp-14h]@4 int v12; // [sp+1Ch] [bp-10h]@4 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *((_DWORD *)v2 + 45) ) { v5 = a2; *(_BYTE *)(a2 + 6) = 1; v10 = 0; v9 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v11 = 0; v12 = a2 + 8; do { v6 = v11 + *((_DWORD *)v2 + 4); v7 = *(_BYTE *)(v6 + 2); if ( v7 == 6 || v7 == 7 || v7 == 8 ) { v8 = (void *)v12; ++v3; v12 += 32; memcpy(v8, (const void *)v6, 0x20u); } v11 += 32; ++v9; } while ( v9 < *((_DWORD *)v2 + 2) ); v5 = a2; v10 = v3; } *(_BYTE *)(v5 + 7) = v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD"); result = v10; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B9470) -------------------------------------------------------- int __thiscall sub_5B9470(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@2 int v5; // edi@3 signed int v6; // eax@4 int v7; // ecx@5 int v8; // [sp+14h] [bp-10h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *((_DWORD *)v2 + 45) ) { v5 = 0; v8 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v6 = 10; do { v7 = *((_DWORD *)v2 + 4); if ( *(_BYTE *)(v7 + v3 + 2) == 20 ) { *(_WORD *)(a2 + v6 - 2) = *(_WORD *)(v7 + v3); v6 += 2; ++v5; if ( v6 >= 8000 ) break; } v3 += 32; ++v8; } while ( v8 < *((_DWORD *)v2 + 2) ); } *(_WORD *)(a2 + 6) = v5; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B9590) -------------------------------------------------------- int __thiscall sub_5B9590(void *this, int a2) { void *v2; // ebx@1 int v3; // edx@1 int result; // eax@2 signed int v5; // eax@4 int v6; // esi@5 void *v7; // edi@6 int v8; // [sp+14h] [bp-14h]@3 int v9; // [sp+18h] [bp-10h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *((_DWORD *)v2 + 45) ) { v9 = 0; v8 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v5 = 40; do { v6 = v3 + *((_DWORD *)v2 + 4); if ( *(_BYTE *)(v6 + 2) == 4 ) { ++v9; v7 = (void *)(a2 + v5 - 32); v5 += 32; memcpy(v7, (const void *)v6, 0x20u); if ( v5 >= 8000 ) break; } v3 += 32; ++v8; } while ( v8 < *((_DWORD *)v2 + 2) ); } *(_WORD *)(a2 + 6) = v9; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD"); result = v9; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005B96C0) -------------------------------------------------------- signed int __thiscall sub_5B96C0(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // ecx@1 int v5; // eax@1 int v7; // eax@6 int v8; // eax@9 int v9; // eax@9 signed int v10; // eax@9 unsigned int v11; // [sp-4h] [bp-68h]@1 void *v12; // [sp+10h] [bp-54h]@6 char v13; // [sp+14h] [bp-50h]@9 unsigned int v14; // [sp+54h] [bp-10h]@1 int v15; // [sp+60h] [bp-4h]@1 int v16; // [sp+64h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v11 = (unsigned int)&v16 ^ __security_cookie; v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::PsStart"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::PsStart"; v4 = -1; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v3 + 45); v15 = 0; if ( !v5 || (v7 = *(_DWORD *)(v5 + 122), (v12 = (void *)v7) == 0) ) { --dword_750CB8; goto LABEL_3; } if ( sub_5077C0(*(void **)(v7 + 68), (const char *)a2) ) { --dword_750CB8; v15 = -1; goto LABEL_4; } v8 = (*(int (__cdecl **)(_DWORD, int, unsigned int))(**((_DWORD **)v3 + 45) + 1388))( *(_WORD *)(*((_DWORD *)v3 + 45) + 4), a3, v11); v9 = sub_418B40((int)byte_85A2C0, v8); sprintf(&v13, "%s %d %s", v9); v10 = sub_5B7320(v12, a2, &v13); *((_DWORD *)v3 + 581) = v10; --dword_750CB8; v4 = -1; if ( v10 == -1 ) { LABEL_3: v15 = v4; LABEL_4: sub_467660((int)&unk_D020420, (int)"CQuestZone::PsStart"); return 0; } v15 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::PsStart"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005B9820) -------------------------------------------------------- signed int __thiscall sub_5B9820(void *this, unsigned __int16 a2, int a3) { int v3; // esi@1 int v4; // ecx@1 int v6; // eax@5 void *v7; // ebx@7 signed __int16 v8; // ax@7 __int16 v9; // dx@7 int v10; // eax@7 int v11; // edi@8 int v12; // eax@8 signed int v13; // esi@8 int v14; // eax@8 bool v15; // zf@16 unsigned __int8 v16; // cl@16 unsigned __int8 v17; // cl@19 int v18; // edx@21 int v19; // edx@21 void *v20; // eax@21 int v21; // eax@22 int v22; // eax@22 char v23; // al@22 int v24; // ecx@23 int v25; // esi@23 int v26; // eax@23 int (*v27)(void); // edx@23 int v28; // eax@23 char v29; // al@26 int v30; // esi@27 int v31; // ST10_4@30 char *v32; // eax@30 void *v33; // eax@30 void (__thiscall *v34)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@30 int v35; // ST08_4@30 int v36; // eax@30 int v37; // eax@31 const char *v38; // eax@32 int *v39; // eax@33 int (__stdcall *v40)(_DWORD); // edx@33 int v41; // eax@33 int v42; // eax@36 int v43; // eax@36 int *v44; // ecx@36 __int16 v45; // dx@36 int v46; // ecx@36 __int16 v47; // dx@36 int v48; // ecx@36 int v49; // eax@36 int v50; // eax@36 int v51; // edx@36 int v52; // esi@38 int v53; // eax@40 int v54; // eax@41 unsigned int v55; // [sp-4h] [bp-110h]@1 int v56; // [sp-4h] [bp-110h]@4 int (**v57)(); // [sp+10h] [bp-FCh]@23 int v58; // [sp+20h] [bp-ECh]@33 int v59; // [sp+24h] [bp-E8h]@29 int *v60; // [sp+28h] [bp-E4h]@23 int v61; // [sp+2Ch] [bp-E0h]@23 int v62; // [sp+30h] [bp-DCh]@23 int v63; // [sp+34h] [bp-D8h]@1 void *v64; // [sp+38h] [bp-D4h]@6 int v65; // [sp+3Ch] [bp-D0h]@26 int v66; // [sp+40h] [bp-CCh]@1 int v67; // [sp+44h] [bp-C8h]@30 int v68; // [sp+48h] [bp-C4h]@36 unsigned __int16 v69; // [sp+4Ch] [bp-C0h]@30 int v70[12]; // [sp+B4h] [bp-58h]@19 __int16 v71[12]; // [sp+E4h] [bp-28h]@19 unsigned int v72; // [sp+FCh] [bp-10h]@1 int v73; // [sp+108h] [bp-4h]@1 int v74; // [sp+10Ch] [bp+0h]@1 v72 = (unsigned int)&v74 ^ __security_cookie; v55 = (unsigned int)&v74 ^ __security_cookie; v3 = (int)this; v63 = (int)this; v66 = a2; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestTakeReward"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestTakeReward"; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(v3 + 180); v73 = 0; if ( !v4 ) { --dword_750CB8; v73 = -1; LABEL_3: sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestTakeReward"); return 0; } if ( (unsigned __int8)(*(int (__cdecl **)(unsigned int))(*(_DWORD *)v4 + 2784))(v55) == 1 || (v6 = (*(int (**)(void))(**(_DWORD **)(v3 + 180) + 2004))(), (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 16))(v6)) || (v64 = (void *)sub_632D90(*(_DWORD *)(v3 + 4), a2)) == 0 || (v7 = off_849C18, *(_WORD *)off_849C18 = 17434, *((_DWORD *)v7 + 1) = (*(int (**)(void))(**(_DWORD **)(v3 + 180) + 836))(), *((_WORD *)v7 + 1) = *(_WORD *)(*(_DWORD *)(v3 + 180) + 4), *((_DWORD *)v7 + 2) = (*(int (**)(void))(**(_DWORD **)(v3 + 180) + 840))(), v8 = sub_62C9B0(v3, v66), v9 = v66, *((_WORD *)v7 + 41) = 0, *((_BYTE *)v7 + 84) = 0, *((_WORD *)v7 + 6) = v8, *(_DWORD *)((char *)v7 + 47) = 0, *(_DWORD *)((char *)v7 + 51) = 0, *(_DWORD *)((char *)v7 + 55) = 0, *(_DWORD *)((char *)v7 + 59) = 0, *(_DWORD *)((char *)v7 + 63) = 0, *(_DWORD *)((char *)v7 + 67) = 0, *(_DWORD *)((char *)v7 + 71) = 0, *(_DWORD *)((char *)v7 + 75) = 0, *(_WORD *)((char *)v7 + 79) = 0, *((_BYTE *)v7 + 81) = 0, (v10 = sub_62BF80(v3, v9)) == 0) ) goto LABEL_25; memcpy((char *)v7 + 15, (const void *)v10, 0x20u); v11 = v63; sub_62C380(v63, (int)((char *)v7 + 15)); v12 = (int)v64; v13 = 0; *((_BYTE *)v7 + 14) = **(_BYTE **)(v63 + 2300); *(_DWORD *)(v11 + 2304) = 1; *((_BYTE *)v7 + 84) = 0; v66 = 0; v14 = v12 + 520; do { if ( *(_BYTE *)(v14 - 4) && (*(_BYTE *)(v14 - 4) != 2 || a3 == v13) ) { switch ( *(_BYTE *)(v14 - 3) ) { case 0: *(_DWORD *)((char *)v7 + 51) = *(_DWORD *)v14; break; case 1: *(_DWORD *)((char *)v7 + 47) = *(_DWORD *)v14; break; case 4: *(_DWORD *)((char *)v7 + 55) = *(_DWORD *)v14; break; case 7: *((_BYTE *)v7 + 79) = *(_BYTE *)v14; v15 = *((_BYTE *)v7 + 79) == 0; v16 = *(_BYTE *)(v14 + 1); *((_BYTE *)v7 + 80) = v16; if ( !v15 && v16 > 3u ) *((_BYTE *)v7 + 79) = 0; break; case 2: v17 = *((_BYTE *)v7 + 84); v71[v17] = *(_WORD *)v14; v70[v17] = *(_WORD *)(v14 + 2); v13 = v66; *((_BYTE *)v7 + 84) = v17 + 1; break; default: break; } } ++v13; v14 += 12; v66 = v13; } while ( v13 < 12 ); *((_WORD *)v7 + 41) = *(_WORD *)((*(int (**)(void))(**(_DWORD **)(v11 + 180) + 2004))() + 4); *(_DWORD *)((char *)v7 + 59) = (*(int (**)(void))(**(_DWORD **)(v11 + 180) + 1076))(); *(_DWORD *)((char *)v7 + 63) = v18; *(_DWORD *)((char *)v7 + 67) = (*(int (**)(void))(**(_DWORD **)(v11 + 180) + 1080))(); *(_DWORD *)((char *)v7 + 71) = v19; *(_DWORD *)((char *)v7 + 75) = (*(int (**)(void))(**(_DWORD **)(v11 + 180) + 1084))(); v20 = (void *)(*(int (**)(void))(**(_DWORD **)(v11 + 180) + 1056))(); if ( !v20 ) { LABEL_25: --dword_750CB8; v73 = -1; goto LABEL_3; } *((_BYTE *)v7 + 81) = sub_62AC10(v20, *((_BYTE *)v7 + 79), *((_BYTE *)v7 + 81)); v21 = (*(int (**)(void))(**(_DWORD **)(v11 + 180) + 2004))(); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v21 + 72))( v21, *((_WORD *)v7 + 41), *(_DWORD *)((char *)v7 + 47), 0, 1); v22 = (*(int (**)(void))(**(_DWORD **)(v11 + 180) + 2004))(); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v22 + 96))( v22, *((_WORD *)v7 + 41), *(_DWORD *)((char *)v7 + 51), *(_DWORD *)((char *)v7 + 55), *((_BYTE *)v7 + 79), *((_BYTE *)v7 + 80)); v23 = *((_BYTE *)v7 + 84); v66 = (int)((char *)v7 + 38 * *((_BYTE *)v7 + 84) + 85); if ( v23 ) { v24 = *(_DWORD *)(v11 + 180); v25 = v24 + 36484; v26 = (*(int (**)(void))(*(_DWORD *)v24 + 1176))(); sub_43BB20((int)&v57, v25, v26); v27 = *(int (**)(void))(**(_DWORD **)(v11 + 180) + 2004); LOBYTE(v73) = 1; v28 = v27(); v60 = (int *)&v57; v61 = v28; v62 = 9; if ( !sub_486D40(&v60) ) { LABEL_24: v57 = &off_6A86A4; goto LABEL_25; } v15 = *((_BYTE *)v7 + 84) == 0; v29 = 1; v65 = 0; if ( !v15 ) { v30 = (int)((char *)v7 + 97); while ( v29 ) { v59 = (**(int (__stdcall ***)(_DWORD))v60[1])(v60[2]); if ( !v59 ) break; v31 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v32 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v67, v71[v65], 2, *((_DWORD *)v32 + 4), v31); v69 = v71[v65]; v33 = sub_63ACA0(dword_1508B168, v69); v34 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v33 + 20); v35 = (unsigned __int16)v71[v65]; v64 = v33; v34(v33, v35, &v67, "-o", v56); v36 = sub_418CB0((int)&dword_14D20890, v71[v65]); if ( v36 ) { v37 = *(_DWORD *)(v36 + 4); if ( v37 ) { v38 = (const char *)(v37 + 137); if ( v38 ) { v39 = sub_4934A0(&dword_D61E064, v38); v40 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)v64 + 112); v58 = (int)v39; v41 = v40(&v69); if ( v58 ) { if ( v41 ) sub_4928F0(v41, v58); } } } } v56 = v70[v65]; (*(void (__stdcall **)(unsigned __int16 *))(*(_DWORD *)v64 + 32))(&v69); *(_DWORD *)(v30 - 12) = (*(int (**)(void))(**(_DWORD **)(v11 + 180) + 836))(); v42 = *(_DWORD *)(*(_DWORD *)(v11 + 180) + 122); *(_DWORD *)(v30 - 8) = *(_DWORD *)v42; *(_DWORD *)(v30 - 4) = *(_DWORD *)(v42 + 4); *(_DWORD *)v30 = *(_DWORD *)(v42 + 8); v43 = *(_DWORD *)(*(_DWORD *)(v11 + 180) + 102); *(_DWORD *)(v30 + 4) = *(_DWORD *)v43; *(_DWORD *)(v30 + 8) = *(_DWORD *)(v43 + 4); v44 = v60; LOWORD(v43) = *(_WORD *)(v30 + 12) & 0x3FF | 0x2400; *(_WORD *)(v30 + 12) = v43; v45 = (v43 ^ *((_WORD *)v44 + 4)) & 0x3FF; v46 = v65; v47 = v43 ^ v45; *(_DWORD *)(v30 + 18) = v68; LOWORD(v43) = v71[v46]; v48 = (int)v64; *(_WORD *)(v30 + 12) = v47; *(_DWORD *)(v30 + 14) = v67; *(_WORD *)(v30 + 22) = v43; v49 = v66; *(_WORD *)(v30 + 24) = v66 - (_WORD)v7 - 2; v66 = (*(int (__stdcall **)(unsigned __int16 *, int))(*(_DWORD *)v48 + 4))(&v69, v49); v50 = (*(int (**)(void))(**(_DWORD **)(v63 + 180) + 2004))(); (*(void (__thiscall **)(int, _DWORD, int, int *, int, int))(*(_DWORD *)v50 + 64))( v50, *((_WORD *)v7 + 41), v59, &v67, v30 + 12, v30 + 12); v29 = sub_486DA0((void **)&v60); v51 = *((_BYTE *)v7 + 84); v11 = v63; v30 += 38; ++v65; if ( v65 >= v51 ) goto LABEL_37; } goto LABEL_24; } LABEL_37: LOBYTE(v73) = 0; v57 = &off_6A86A4; } v52 = v66 - (_DWORD)v7; if ( sub_4C81E0(&off_849C18, v66 - (_DWORD)v7) ) { v53 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v53); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_DB_DONE_REQ : Packet Too Long", v52); } v54 = (*(int (__cdecl **)(int))(**(_DWORD **)(v11 + 180) + 2004))(v56); ++*(_WORD *)(v54 + 4); (*(void (__stdcall **)(signed int))(**(_DWORD **)(v11 + 180) + 2788))(1); sub_5BB890(v11); --dword_750CB8; v73 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestTakeReward"); return 1; } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 6A86A4: using guessed type int (*off_6A86A4)(); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 5B9820: using guessed type __int16 var_28[12]; // 5B9820: using guessed type int var_58[12]; //----- (005B9F30) -------------------------------------------------------- signed int __thiscall sub_5B9F30(void *this, char a2) { void *v2; // esi@1 void *v4; // eax@3 int v5; // eax@3 int (*v6)(void); // edx@5 int v7; // eax@9 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_RESET_TIME_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_RESET_TIME_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( !*((_DWORD *)v2 + 45) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_RESET_TIME_ZONE_CMD"); return 0; } v4 = off_849C18; *(_WORD *)off_849C18 = 17438; *(_DWORD *)((char *)v4 + 14) = *((_DWORD *)v2 + 44); *(_DWORD *)((char *)v4 + 10) = *((_DWORD *)v2 + 43); *(_DWORD *)((char *)v4 + 6) = *((_DWORD *)v2 + 42); *(_DWORD *)((char *)v4 + 2) = *((_DWORD *)v2 + 41); v5 = (unsigned __int8)sub_4C81E0(&off_849C18, 18); if ( a2 == 1 ) { if ( v5 ) { v6 = *(int (**)(void))(**((_DWORD **)v2 + 45) + 760); LABEL_9: v7 = v6(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v7 + 12))(v7, *((_DWORD *)v2 + 45), &off_849C18); goto LABEL_10; } } else { if ( v5 ) { v6 = *(int (**)(void))(**((_DWORD **)v2 + 45) + 764); goto LABEL_9; } } sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_RESET_TIME_ZONE_CMD : Packet Too Long", 18); LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_RESET_TIME_ZONE_CMD"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BA0B0) -------------------------------------------------------- unsigned int __thiscall sub_5BA0B0(int this, int a2) { unsigned int result; // eax@1 int v3; // ebx@1 int v4; // edi@1 int v5; // edx@2 char *v6; // eax@3 int v7; // ecx@5 int v8; // edi@5 int v9; // ecx@5 int v10; // edi@7 char *v11; // ecx@8 int v12; // eax@12 int v13; // eax@14 __int16 v14; // dx@14 bool v15; // zf@14 int v16; // eax@17 int v17; // [sp+Ch] [bp-7544h]@1 int v18; // [sp+10h] [bp-7540h]@3 int v19; // [sp+14h] [bp-753Ch]@3 char *v20; // [sp+14h] [bp-753Ch]@8 int v21; // [sp+18h] [bp-7538h]@3 int v22; // [sp+18h] [bp-7538h]@8 char v23; // [sp+1Ch] [bp-7534h]@2 char v24; // [sp+1Eh] [bp-7532h]@3 unsigned int v25; // [sp+754Ch] [bp-4h]@1 int v26; // [sp+7550h] [bp+0h]@1 result = (unsigned int)&v26 ^ __security_cookie; v25 = (unsigned int)&v26 ^ __security_cookie; v3 = 0; v4 = this; v17 = this; if ( a2 ) { *(_WORD *)a2 = 16400; *(_WORD *)(a2 + 2) = (*(int (**)(void))(**(_DWORD **)(this + 180) + 832))(); *(_DWORD *)(a2 + 4) = (*(int (**)(void))(**(_DWORD **)(v4 + 180) + 836))(); *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 8) = 0; memset(&v23, 0, 0x7530u); v5 = 0; if ( *(_DWORD *)(v4 + 8) > 0 ) { v21 = *(_DWORD *)(v4 + 16) + 2; v18 = 0; v6 = &v24; v19 = *(_DWORD *)(v4 + 8); do { if ( *(_BYTE *)v21 == 2 ) { v7 = v18 + *(_DWORD *)(v4 + 16); ++v5; *((_WORD *)v6 - 1) = *(_WORD *)v7; v8 = *(_DWORD *)(v7 + 11); v9 = *(_DWORD *)(v7 + 15); *(_DWORD *)v6 = v8; v4 = v17; *((_DWORD *)v6 + 1) = v9; v6 += 10; } v18 += 32; v21 += 32; --v19; } while ( v19 ); } *(_WORD *)(a2 + 8) = v5; *(_WORD *)(a2 + 10) = 10 * v5 + 12; v10 = 16; if ( v5 > 0 ) { v11 = &v23; v20 = &v23; v22 = v5; do { if ( v10 >= 8000 ) { *(_WORD *)(a2 + 12) = v3; if ( sub_4C81E0(&off_849C18, v10) ) { v12 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v12); } else { sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v10); } *(_WORD *)(a2 + 14) += v3; v11 = v20; v3 = 0; v10 = 16; } v13 = a2 + 10 * v3 + 16; *(_DWORD *)v13 = *(_DWORD *)v11; *(_DWORD *)(a2 + 10 * v3 + 20) = *((_DWORD *)v11 + 1); v14 = *((_WORD *)v11 + 4); v11 += 10; v10 += 10; ++v3; v15 = v22-- == 1; *(_WORD *)(v13 + 8) = v14; v20 = v11; } while ( !v15 ); } *(_WORD *)(a2 + 12) = v3; if ( sub_4C81E0(&off_849C18, v10) ) { v16 = sub_428750((int)&dword_14D12A00); result = sub_4C7EC0(&off_849C18, v16); } else { result = (unsigned int)sub_639100(&unk_86DDD8, (int)"WholeSaver::ws_save2worldmanager : Packet Too Long", v10); } } return result; } // 86FEB8: using guessed type int __security_cookie; // 14D12A00: using guessed type int dword_14D12A00; //----- (005BA2C0) -------------------------------------------------------- signed int __thiscall sub_5BA2C0(void *this, __int16 a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@2 int v5; // eax@4 int v6; // edx@5 int v7; // ecx@5 int v8; // eax@6 signed int result; // eax@11 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::IsQuestDropItem"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::IsQuestDropItem"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *(_DWORD *)(v2 + 8) <= 0 ) { LABEL_11: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::IsQuestDropItem"); result = 0; } else { while ( 1 ) { v4 = sub_62BFD0(v2, v3); if ( v4 ) { if ( *(_BYTE *)(v4 + 2) == 6 ) { v5 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)v4); if ( v5 ) { v6 = *(_BYTE *)(v5 + 192); v7 = 0; if ( v6 > 0 ) break; } } } LABEL_10: ++v3; if ( v3 >= *(_DWORD *)(v2 + 8) ) goto LABEL_11; } v8 = v5 + 208; while ( *(_BYTE *)(v8 - 4) != 1 || a2 != *(_WORD *)v8 ) { ++v7; v8 += 32; if ( v7 >= v6 ) goto LABEL_10; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::IsQuestDropItem"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BA3F0) -------------------------------------------------------- signed int __thiscall sub_5BA3F0(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // eax@4 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestStart"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestStart"; dword_750AB8[dword_750CB8++] = (unsigned __int16)a2; v3 = *(_DWORD *)(v2 + 180); if ( v3 ) { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v3 + 2784))() != 1 ) { sub_5B7800(v2); v4 = sub_632E20(*(_DWORD *)(v2 + 4), a2); if ( sub_6362F0(v2 + 184, a2, (const char *)v4) ) { *(_WORD *)(v2 + 2310) = a2; *(_DWORD *)(v2 + 2312) = 0; *(_DWORD *)(v2 + 2304) = 0; *(_DWORD *)(v2 + 2316) = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestStart"); return 1; } *(_WORD *)(v2 + 2310) = -1; } --dword_750CB8; } else { --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestStart"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BA540) -------------------------------------------------------- signed int __thiscall sub_5BA540(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 signed int v4; // eax@3 int v6; // [sp-4h] [bp-24h]@2 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestDoing"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestDoing"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v2 + 180) ) { sub_5B7800(v2); v3 = sub_632E70(*(_DWORD *)(v2 + 4), a2); v4 = sub_6362F0(v2 + 184, a2, (const char *)v3); v6 = (int)"CQuestZone::QuestDoing"; if ( v4 ) { *(_WORD *)(v2 + 2310) = a2; *(_DWORD *)(v2 + 2312) = 1; *(_DWORD *)(v2 + 2304) = 0; *(_DWORD *)(v2 + 2316) = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestDoing"); return 1; } *(_WORD *)(v2 + 2310) = -1; --dword_750CB8; } else { --dword_750CB8; v6 = (int)"CQuestZone::QuestDoing"; } sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BA670) -------------------------------------------------------- signed int __thiscall sub_5BA670(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 signed int v4; // eax@3 int v6; // [sp-4h] [bp-24h]@2 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestEnd"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestEnd"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v2 + 180) ) { sub_5B7800(v2); v3 = sub_632EC0(*(_DWORD *)(v2 + 4), a2); v4 = sub_6362F0(v2 + 184, a2, (const char *)v3); v6 = (int)"CQuestZone::QuestEnd"; if ( v4 ) { *(_WORD *)(v2 + 2310) = a2; *(_DWORD *)(v2 + 2312) = 2; *(_DWORD *)(v2 + 2304) = 0; *(_DWORD *)(v2 + 2316) = -1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestEnd"); return 1; } *(_WORD *)(v2 + 2310) = -1; --dword_750CB8; } else { --dword_750CB8; v6 = (int)"CQuestZone::QuestEnd"; } sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BA7A0) -------------------------------------------------------- int __thiscall sub_5BA7A0(void *this, char a2, int a3, int a4) { void *v4; // esi@1 int v6; // eax@3 signed int v7; // edi@5 int v8; // esi@5 signed int v9; // ecx@9 int v10; // eax@21 int v11; // esi@21 int v12; // [sp-4h] [bp-2Ch]@10 void *v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+30h] [bp+8h]@5 v4 = this; v13 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestCheckReward"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestCheckReward"; dword_750AB8[dword_750CB8++] = -1; if ( !*((_DWORD *)v4 + 45) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckReward"); return 0; } v6 = sub_632D90(*((_DWORD *)v4 + 1), a2); if ( !v6 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckReward"); return 0; } v14 = 0; v7 = 0; v8 = v6 + 517; do { if ( !*(_BYTE *)(v8 - 1) ) goto LABEL_20; if ( *(_BYTE *)(v8 - 1) == 1 ) { sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_PERIMARY"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_PERIMARY"; dword_750AB8[dword_750CB8] = -1; v9 = 1; ++dword_750CB8; if ( *(_BYTE *)v8 == 2 || *(_BYTE *)v8 == 5 ) ++v14; v12 = (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_PERIMARY"; } else { if ( *(_BYTE *)(v8 - 1) != 2 ) goto LABEL_20; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_SELECTABLE"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_SELECTABLE"; dword_750AB8[dword_750CB8] = -1; v9 = 1; ++dword_750CB8; if ( a3 == v7 ) { if ( *(_BYTE *)v8 == 2 || *(_BYTE *)v8 == 5 ) ++v14; v12 = (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_SELECTABLE"; } else { v12 = (int)"CQuestZone::QuestCheckReward - QUEST_DATA::QRU_SELECTABLE"; } } dword_750CB8 -= v9; sub_467660((int)&unk_D020420, v12); LABEL_20: ++v7; v8 += 12; } while ( v7 < 12 ); v10 = sub_5B7910(v13, v14, a4); --dword_750CB8; v11 = v10; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestCheckReward"); return v11; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BA9C0) -------------------------------------------------------- signed int __thiscall sub_5BA9C0(void *this, int a2, int a3, int a4, int a5) { void *v5; // edi@1 int v7; // esi@3 signed int v8; // eax@7 signed int v9; // esi@7 int v10; // ebx@8 int v11; // eax@8 int v12; // ebx@9 unsigned int v13; // esi@10 int v14; // ebx@12 signed int v15; // [sp+18h] [bp-10h]@3 unsigned int v16; // [sp+38h] [bp+10h]@8 v5 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestActionMobKill"; dword_750AB8[dword_750CB8++] = -1; if ( !*((_DWORD *)v5 + 45) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill"); return 0; } v7 = a3 + 32 * a4; v15 = 0; if ( *(_BYTE *)(v7 + 204) == 1 ) { sub_4675D0( (int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_DROP_ITEM"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_DROP_ITEM"; dword_750AB8[dword_750CB8++] = -1; v16 = *(_WORD *)(v7 + 208); v10 = sub_5B81C0(v5, a3, *(_WORD *)(v7 + 208)); v11 = sub_526890(*((void **)v5 + 45), v16); if ( v11 < (unsigned int)v10 ) { v12 = v10 - v11; if ( sub_639500((int)&unk_1508B108, 0xF4240u) < *(_DWORD *)(v7 + 212) ) { v13 = *(_DWORD *)(v7 + 216) + sub_639500((int)&unk_1508B108, 0xF4240u) * (*(_DWORD *)(v7 + 220) - *(_DWORD *)(v7 + 216)) / 0xF423F; if ( v13 > v12 ) v13 = v12; v14 = 0; if ( v13 ) { do { sub_526A00(*((void **)v5 + 45), v16, a5); ++v14; } while ( (unsigned __int16)v14 < v13 ); } v15 = 1; } } --dword_750CB8; sub_467660( (int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_DROP_ITEM"); } else { if ( *(_BYTE *)(v7 + 204) == 2 ) { sub_4675D0( (int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_DO_SCENARIO"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_DO_SCENARIO"; dword_750AB8[dword_750CB8++] = -1; v8 = sub_5B8BC0(v5, *(_WORD *)(v7 + 208)); --dword_750CB8; v9 = v8; sub_467660( (int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_DO_SCENARIO"); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill"); return v9; } if ( *(_BYTE *)(v7 + 204) == 3 ) { sub_4675D0( (int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_MOB_REGEN"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_MOB_REGEN"; dword_750AB8[dword_750CB8++] = -1; sub_639500((int)&unk_1508B108, 0xF4240u); --dword_750CB8; sub_467660( (int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill - QUEST_DATA::QUEST_ACTION_TYPE_THEN::QUEST_ACTION_THEN_MOB_REGEN"); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestActionMobKill"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BACB0) -------------------------------------------------------- signed int __thiscall sub_5BACB0(void *this, __int16 a2, int a3) { void *v3; // esi@1 void *v4; // ecx@1 signed int result; // eax@2 int v6; // eax@5 int (*v7)(void); // edx@9 char v8; // al@9 unsigned __int8 v9; // ST0C_1@10 int v10; // eax@10 int v11; // ecx@12 int v12; // ST00_4@16 int (*v13)(void); // eax@19 char v14; // al@19 unsigned __int8 v15; // ST0C_1@20 int v16; // eax@20 const void *v17; // ST0C_4@34 __int16 v18; // ST08_2@34 const char *v19; // [sp-Ch] [bp-44h]@4 const char *v20; // [sp-8h] [bp-40h]@4 int v21; // [sp-4h] [bp-3Ch]@4 int v22; // [sp-4h] [bp-3Ch]@7 __int16 v23; // [sp+10h] [bp-28h]@21 char v24; // [sp+12h] [bp-26h]@21 int v25; // [sp+13h] [bp-25h]@21 __int16 v26; // [sp+18h] [bp-20h]@11 char v27; // [sp+1Ah] [bp-1Eh]@11 int v28; // [sp+1Bh] [bp-1Dh]@11 int v29; // [sp+20h] [bp-18h]@1 int v30; // [sp+24h] [bp-14h]@4 int v31; // [sp+34h] [bp-4h]@1 v3 = this; v29 = (int)"CQuestZone::QuestPlayer_ScenarioRun"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioRun"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestPlayer_ScenarioRun"; dword_750AB8[dword_750CB8++] = -1; v4 = (void *)*((_DWORD *)v3 + 45); v31 = 0; if ( v4 ) { switch ( *(_WORD *)(a3 + 5) ) { case 8: sub_4026A0(&a3, 0, (int)"CQuestZone::QuestPlayer_ScenarioRun 8", -1); v21 = (int)&v30; v20 = "Promote/JobChange1"; LOBYTE(v31) = 1; v19 = "Job1_Dn01"; goto LABEL_5; case 9: sub_4026A0(&v30, 0, (int)"CQuestZone::QuestPlayer_ScenarioRun 9", -1); v7 = *(int (**)(void))(**((_DWORD **)v3 + 45) + 980); LOBYTE(v31) = 2; v8 = v7(); LOBYTE(a3) = v8; if ( v8 ) { v9 = a3; v10 = (*(int (**)(void))(**((_DWORD **)v3 + 45) + 1388))(); sub_5B69E0((int)&unk_133595F0, v10, v9); v8 = a3; } v26 = a2; v27 = 3; v28 = v8 != 0; sub_5BCA70(v3, (int)&v26); v22 = v30; goto LABEL_8; case 0xB: sub_4026A0(&a3, 0, (int)"CQuestZone::QuestPlayer_ScenarioRun 11", -1); v11 = *((_DWORD *)v3 + 45); LOBYTE(v31) = 3; BYTE2(v30) = 3; LOWORD(v30) = a2; *(int *)((char *)&v30 + 3) = 0; sub_5A6950(v11, "Rou", "Promote/JobChange2-1", (int)&v30); if ( *(int *)((char *)&v30 + 3) == 2 ) sub_5BCA70(v3, (int)&v30); v22 = a3; goto LABEL_8; case 0xC: sub_4026A0(&a3, 0, (int)"CQuestZone::QuestPlayer_ScenarioRun 12", -1); v21 = (int)&v30; v20 = "Promote/Job2_Gamb/Job2_Gamb"; LOBYTE(v31) = 4; v19 = "Job2_Dn01"; LABEL_5: v6 = *((_DWORD *)v3 + 45); LOWORD(v30) = a2; BYTE2(v30) = 3; *(int *)((char *)&v30 + 3) = 0; sub_5A6950(v6, v19, v20, v21); if ( *(int *)((char *)&v30 + 3) == 2 ) sub_5BCA70(v3, (int)&v30); v22 = a3; goto LABEL_8; case 0xD: sub_4026A0(&a3, 0, (int)"CQuestZone::QuestPlayer_ScenarioRun 13", -1); v12 = *((_DWORD *)v3 + 45); LOBYTE(v31) = 5; BYTE2(v30) = 3; LOWORD(v30) = a2; *(int *)((char *)&v30 + 3) = 0; sub_5A6950(v12, "Job2_Dn02", "Promote/Job2_Forest/Job2_Forest", (int)&v30); if ( *(int *)((char *)&v30 + 3) == 2 ) sub_5BCA70(v3, (int)&v30); v22 = a3; goto LABEL_8; case 0xE: sub_4026A0(&v30, 0, (int)"CQuestZone::QuestPlayer_ScenarioRun 14", -1); v13 = *(int (**)(void))(**((_DWORD **)v3 + 45) + 980); LOBYTE(v31) = 6; v14 = v13(); LOBYTE(a3) = v14; if ( v14 ) { v15 = a3; v16 = (*(int (**)(void))(**((_DWORD **)v3 + 45) + 1388))(); sub_5B69E0((int)&unk_133595F0, v16, v15); v14 = a3; } v23 = a2; v24 = 3; v25 = v14 != 0; sub_5BCA70(v3, (int)&v23); v22 = v30; LABEL_8: --dword_750CB8; LOBYTE(v31) = 0; sub_467660((int)&unk_D020420, v22); --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioRun"); return 1; case 0xF: --dword_750CB8; goto LABEL_36; case 0x10: sub_58FA70(v4, a2, 4u); break; case 0x11: sub_58FA70(v4, a2, 5u); break; case 0x12: sub_58FA70(v4, a2, 0xAu); break; case 0x13: sub_58FA70(v4, a2, 9u); break; case 0x14: sub_58FA70(v4, a2, 0xFu); break; case 0x15: sub_58FA70(v4, a2, 0xEu); break; case 0x16: sub_58FA70(v4, a2, 0x13u); break; case 0x17: sub_58FA70(v4, a2, 0x14u); break; case 0x18: sub_58FA70(v4, a2, 0x18u); break; case 0x19: sub_58FA70(v4, a2, 0x19u); break; case 0x1B: sub_58FA70(v4, a2, 0x1Bu); break; default: v17 = (const void *)*((_DWORD *)v3 + 575); v18 = *((_WORD *)v3 + 1155); *((_DWORD *)v3 + 576) = 1; sub_5B8320(v3, v18, v17); break; } --dword_750CB8; LABEL_36: sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioRun"); result = 1; } else { --dword_750CB8; v31 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioRun"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BB110) -------------------------------------------------------- signed int __thiscall sub_5BB110(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 signed int v4; // eax@5 signed int v5; // esi@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioDone_Server"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestPlayer_ScenarioDone_Server"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { if ( (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 24))(v2, a2) ) { v4 = sub_5B8A80(v2, a2); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioDone_Server"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioDone_Server"); result = 1; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_ScenarioDone_Server"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BB230) -------------------------------------------------------- int __thiscall sub_5BB230(void *this, __int16 a2) { void *v2; // esi@1 void *v3; // ecx@1 __int16 v4; // ax@3 int v6; // [sp+10h] [bp-78h]@4 char v7; // [sp+14h] [bp-74h]@4 int v8; // [sp+15h] [bp-73h]@4 int v9; // [sp+19h] [bp-6Fh]@4 __int16 v10; // [sp+1Dh] [bp-6Bh]@4 int v11; // [sp+78h] [bp-10h]@1 int v12; // [sp+84h] [bp-4h]@1 v2 = this; v11 = (int)"CQuestZone::Send_QUEST_ERROR_TO_CLIENT"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_QUEST_ERROR_TO_CLIENT"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_QUEST_ERROR_TO_CLIENT"; dword_750AB8[dword_750CB8++] = -1; v3 = (void *)*((_DWORD *)v2 + 45); v12 = 0; if ( v3 ) { sub_4C1BA0(v3, 1); v4 = *((_WORD *)v2 + 1155); if ( v4 != -1 ) { v8 = **((_DWORD **)v2 + 575); v10 = a2; v7 = 0; v6 = 0; v9 = 0; sub_5B8320(v2, v4, &v6); } --dword_750CB8; } else { --dword_750CB8; } v12 = -1; return sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_QUEST_ERROR_TO_CLIENT"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BB320) -------------------------------------------------------- int __thiscall sub_5BB320(void *this, __int16 *a2) { int v2; // ebx@1 bool v3; // zf@1 const void *v4; // esi@3 int v5; // eax@3 int v6; // eax@5 __int16 v7; // ax@7 int v9; // [sp-8h] [bp-B4h]@2 int v10; // [sp+Ch] [bp-A0h]@7 char v11; // [sp+10h] [bp-9Ch]@7 __int16 v12; // [sp+11h] [bp-9Bh]@7 int v13; // [sp+74h] [bp-38h]@1 int v14; // [sp+78h] [bp-34h]@3 char v15; // [sp+7Ch] [bp-30h]@7 char v16; // [sp+7Eh] [bp-2Eh]@7 unsigned int v17; // [sp+9Ch] [bp-10h]@1 int v18; // [sp+A8h] [bp-4h]@1 int v19; // [sp+ACh] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v2 = (int)this; v13 = (int)"CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 180) == 0; v18 = 0; if ( v3 ) { --dword_750CB8; v18 = -1; v9 = (int)"CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ"; } else { v4 = (const void *)sub_62BF80(v2, *a2); v5 = sub_632D90(*(_DWORD *)(v2 + 4), *a2); v14 = v5; if ( v4 && v5 ) { LOBYTE(v6) = sub_62D240(v2, *a2); if ( v6 ) { if ( *(_BYTE *)(v14 + 18) ) { v7 = *(_WORD *)v4; memcpy(&v15, v4, 0x20u); v11 = 0; v10 = 28; v12 = v7; v16 = 4; sub_62C090((int)&v15); sub_5B8440((void *)v2, &v15, (int)&v10); } else { sub_5B8830((void *)v2, *a2); } } } else { sub_5B86E0((void *)v2, *a2, 2885); } --dword_750CB8; v18 = -1; v9 = (int)"CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ"; } return sub_467660((int)&unk_D020420, v9); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005BB490) -------------------------------------------------------- signed int __thiscall sub_5BB490(int this, int *a2) { signed int result; // eax@2 if ( *(_DWORD *)(this + 180) ) result = sub_5BB110((void *)this, *(_WORD *)a2); else result = 0; return result; } //----- (005BB4C0) -------------------------------------------------------- signed int __thiscall sub_5BB4C0(void *this, int a2) { void *v2; // ebx@1 unsigned int v3; // edx@1 signed int result; // eax@2 int v5; // ecx@3 void *v6; // edi@3 int v7; // esi@3 int v8; // eax@3 int v9; // esi@6 int v10; // eax@9 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *((_DWORD *)v2 + 45) ) { v5 = a2; v6 = off_849C18; *(_WORD *)off_849C18 = 17421; *((_BYTE *)v6 + 2) = (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2; v7 = *(_DWORD *)a2; v8 = (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2; if ( v8 ) { if ( (unsigned int)v8 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { *(_DWORD *)((char *)v6 + 4 * v3 + 3) = *(_DWORD *)(v7 + 4 * v3); v7 = *(_DWORD *)a2; ++v3; } while ( (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) >> 2 > v3 ); } v9 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) >> 2; if ( sub_4C81E0(&off_849C18, 4 * v9 + 3) ) { v10 = (*(int (**)(void))(**((_DWORD **)v2 + 45) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v10 + 12))(v10, *((_DWORD *)v2 + 45), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD : Packet Too Long", 4 * v9 + 3); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BB640) -------------------------------------------------------- signed int __thiscall sub_5BB640(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || !*((_DWORD *)v2 + 45) ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_CMD"); return 0; } *((_DWORD *)v2 + 44) = *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 43) = *(_DWORD *)(a2 + 8); *((_DWORD *)v2 + 42) = *(_DWORD *)(a2 + 4); *((_DWORD *)v2 + 41) = *(_DWORD *)a2; if ( !sub_5B9F30(v2, 0) ) { sub_639100(&unk_86DDD8, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_CMD", 0); --dword_750CB8; goto LABEL_3; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_CMD"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BB770) -------------------------------------------------------- signed int __thiscall sub_5BB770(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_ZONE_CMD"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_ZONE_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && *((_DWORD *)v2 + 45) ) { *((_DWORD *)v2 + 44) = *(_DWORD *)(a2 + 16); *((_DWORD *)v2 + 43) = *(_DWORD *)(a2 + 12); *((_DWORD *)v2 + 42) = *(_DWORD *)(a2 + 8); *((_DWORD *)v2 + 41) = *(_DWORD *)(a2 + 4); if ( !sub_5B9F30(v2, 1) ) sub_639100(&unk_86DDD8, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_ZONE_CMD", 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_ZONE_CMD"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_RESET_TIME_ZONE_CMD"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BB890) -------------------------------------------------------- signed int __thiscall sub_5BB890(int this) { int v1; // ebx@1 int v2; // esi@1 bool v3; // zf@1 int v5; // esi@6 int v6; // eax@7 int v7; // edi@9 int (__thiscall *v8)(_DWORD, _DWORD); // edx@9 int v9; // ST24_4@9 int v10; // edi@11 int v11; // eax@11 int v12; // ecx@11 signed int v13; // edi@13 int v14; // eax@13 int v15; // esi@13 __int16 v16; // ST24_2@13 signed int v17; // eax@15 int v18; // edx@15 signed int v19; // esi@17 int v20; // edx@19 signed int v21; // edx@25 int v22; // eax@29 int v23; // esi@29 int v24; // ecx@29 __int16 v25; // ST1C_2@29 __int16 v26; // ST18_2@29 int v27; // eax@32 int v28; // esi@32 int v29; // ecx@32 __int16 v30; // ST20_2@32 int v31; // ST18_4@32 int v32; // esi@35 int v33; // ecx@35 char *v34; // edx@35 char v35; // al@36 int v36; // edi@37 int v37; // esi@37 int v38; // eax@45 int v39; // ecx@50 char *v40; // edx@50 char v41; // al@51 int v42; // eax@52 int v43; // eax@54 int v44; // ecx@57 char *v45; // edx@57 char v46; // al@58 int v47; // eax@59 int v48; // eax@61 int v49; // ST24_4@63 void *v50; // eax@63 int v51; // eax@63 int (__thiscall *v52)(_DWORD); // eax@65 int v53; // eax@72 const void *v54; // ST24_4@74 __int16 v55; // ST20_2@74 signed int v56; // esi@79 int v57; // edx@82 signed int v58; // eax@82 int v59; // ecx@83 __int16 v60; // ST24_2@83 int v61; // eax@84 int v62; // eax@88 void *v63; // ecx@88 int v64; // eax@92 int v65; // eax@94 int v66; // ecx@95 __int16 v67; // ST24_2@103 int v68; // esi@103 int v69; // eax@103 signed int v70; // eax@106 __int16 v71; // ST24_2@109 int v72; // eax@109 const void *v73; // esi@111 int v74; // eax@111 __int16 v75; // ST24_2@114 int v76; // eax@114 int v77; // ecx@116 __int16 v78; // ST24_2@117 int v79; // eax@124 int v80; // esi@128 int v81; // eax@128 int v82; // eax@128 __int16 v83; // ST24_2@130 int v84; // eax@130 int v85; // edx@132 int v86; // [sp-8h] [bp-16Ch]@17 int v87; // [sp-8h] [bp-16Ch]@20 int v88; // [sp-8h] [bp-16Ch]@85 __int16 v89; // [sp-8h] [bp-16Ch]@89 int v90; // [sp-8h] [bp-16Ch]@90 int v91; // [sp-8h] [bp-16Ch]@111 int v92; // [sp-8h] [bp-16Ch]@112 __int16 v93; // [sp-8h] [bp-16Ch]@118 unsigned int v94; // [sp-4h] [bp-168h]@1 int v95; // [sp+18h] [bp-14Ch]@29 int v96; // [sp+1Ch] [bp-148h]@32 int v97; // [sp+20h] [bp-144h]@50 int v98; // [sp+24h] [bp-140h]@13 int v99; // [sp+28h] [bp-13Ch]@35 int v100; // [sp+2Ch] [bp-138h]@37 int v101; // [sp+30h] [bp-134h]@57 __int16 v102; // [sp+34h] [bp-130h]@95 char v103; // [sp+36h] [bp-12Eh]@95 __int64 v104; // [sp+37h] [bp-12Dh]@95 int v105; // [sp+3Fh] [bp-125h]@95 int v106; // [sp+43h] [bp-121h]@95 int v107; // [sp+47h] [bp-11Dh]@95 int v108; // [sp+4Bh] [bp-119h]@95 int v109; // [sp+4Fh] [bp-115h]@95 char v110; // [sp+53h] [bp-111h]@95 char v111; // [sp+54h] [bp-110h]@57 char v112; // [sp+D4h] [bp-90h]@35 unsigned int v113; // [sp+154h] [bp-10h]@1 int v114; // [sp+160h] [bp-4h]@1 int v115; // [sp+164h] [bp+0h]@1 v113 = (unsigned int)&v115 ^ __security_cookie; v94 = (unsigned int)&v115 ^ __security_cookie; v1 = this; v2 = *(_WORD *)(this + 2310); sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestNext"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestNext"; dword_750AB8[dword_750CB8++] = v2; v3 = *(_DWORD *)(v1 + 180) == 0; v114 = 0; if ( v3 || *(_WORD *)(v1 + 2310) == -1 ) { --dword_750CB8; v114 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext"); return 0; } if ( *(_DWORD *)(v1 + 2304) ) { --dword_750CB8; v114 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext"); return 2; } v5 = v1 + 184; *(_DWORD *)(v1 + 2300) = sub_635490(v1 + 184); if ( *(_DWORD *)(v1 + 2184) == 1 ) { LABEL_25: sub_5B7800(v1); sub_4C1BA0(*(void **)(v1 + 180), 1); v21 = *(_DWORD *)(v5 + 2000) != 0; --dword_750CB8; v19 = v21; LABEL_26: v114 = -1; } else { while ( 1 ) { v6 = *(_DWORD *)(v5 + 2000); if ( v6 == 35 || !v6 ) goto LABEL_25; v7 = *(_WORD *)(v1 + 2310); sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestNext - 0"; dword_750AB8[dword_750CB8++] = v7; v8 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)v5; v9 = *(_DWORD *)(v1 + 2300); LOBYTE(v114) = 1; if ( !v8(v5, v9) ) break; *(_DWORD *)(v1 + 2300) = sub_635490(v5); --dword_750CB8; LABEL_24: LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); if ( *(_DWORD *)(v5 + 2000) == 1 ) goto LABEL_25; } v10 = *(_WORD *)(v1 + 2310); sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestNext - 1"; dword_750AB8[dword_750CB8++] = v10; v11 = *(_DWORD *)(v1 + 2300); v12 = *(_DWORD *)v11 - 1; LOBYTE(v114) = 2; switch ( v12 ) { case 0: sub_5B8320((void *)v1, *(_WORD *)(v1 + 2310), (const void *)v11); goto LABEL_23; case 10: v13 = -1; sub_4026A0(&v98, 0, (int)"CQuestZone::QuestEnd - QSC_LINK", -1); v14 = *(_DWORD *)(v1 + 2300); v15 = *(_WORD *)(v14 + 5); v16 = *(_WORD *)(v14 + 5); LOBYTE(v114) = 8; switch ( sub_62D210(v1, v16) ) { case 4: case 5: case 20: if ( !sub_5BA3F0((void *)v1, v15) ) goto LABEL_19; v17 = sub_5BB890(v1); v18 = v98; goto LABEL_100; case 6: case 7: if ( !sub_5BA540((void *)v1, v15) ) goto LABEL_19; v19 = sub_5BB890(v1); v86 = v98; goto LABEL_102; case 8: if ( !sub_5BA670((void *)v1, v15) ) goto LABEL_19; v17 = sub_5BB890(v1); v86 = v98; goto LABEL_101; default: LABEL_19: sub_5B7800(v1); --dword_750CB8; v20 = v98; LOBYTE(v114) = 2; break; } goto LABEL_20; default: goto LABEL_22; case 12: sub_4026A0(&v95, 0, (int)"CQuestZone::QuestEnd - QSC_DELETE_ITEM", -1); v22 = *(_DWORD *)(v1 + 2300); v23 = *(_DWORD *)(v22 + 7); v24 = *(_DWORD *)(v1 + 180); v25 = *(_WORD *)(v22 + 5); v26 = *(_WORD *)(v24 + 4); LOBYTE(v114) = 10; if ( !sub_526320((void *)v24, v26, v25, v23, 0) ) { sub_5BB230((void *)v1, 3082); sub_5B7800(v1); } --dword_750CB8; LOBYTE(v114) = 2; v87 = v95; goto LABEL_21; case 13: sub_4026A0(&v96, 0, (int)"CQuestZone::QuestEnd - QSC_CREATE_ITEM", -1); v27 = *(_DWORD *)(v1 + 2300); v28 = *(_DWORD *)(v27 + 7); v29 = *(_DWORD *)(v1 + 180); v30 = *(_WORD *)(v27 + 5); v31 = *(_WORD *)(v29 + 4); LOBYTE(v114) = 11; if ( !sub_5270F0((void *)v29, v31, 2, v30, v28) ) { sub_5BB230((void *)v1, 3083); sub_5B7800(v1); } --dword_750CB8; LOBYTE(v114) = 2; v87 = v96; goto LABEL_21; case 29: sub_4026A0(&v99, 0, (int)"CQuestZone::QuestEnd - QSC_SET_ABSTATE", -1); v32 = *(_DWORD *)(v1 + 2300); v33 = *(_DWORD *)(v32 + 5); LOBYTE(v114) = 12; v34 = &v112; do { v35 = *(_BYTE *)v33; *v34++ = *(_BYTE *)v33++; } while ( v35 ); v36 = *(_BYTE *)(v32 + 9); v100 = *(_DWORD *)(v32 + 10); v37 = sub_418C10((int)&unk_877138, (unsigned __int8 *)&v112); if ( !v37 ) { --dword_750CB8; LOBYTE(v114) = 2; v87 = v99; goto LABEL_21; } if ( !*(_DWORD *)v37 ) goto LABEL_40; if ( v36 <= 0 || v36 > 40 ) v36 = 1; if ( v100 ) goto LABEL_47; v38 = *(_DWORD *)(v37 + 36 * v36 + 12); if ( !v38 ) { LABEL_40: --dword_750CB8; v20 = v99; LOBYTE(v114) = 2; goto LABEL_20; } v100 = *(_DWORD *)(v38 + 43); LABEL_47: if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD, int, int, int, _DWORD, signed int, int, _DWORD, _DWORD))(**(_DWORD **)(v1 + 180) + 1592))( *(_DWORD *)(v1 + 180), *(_DWORD *)(*(_DWORD *)v37 + 34), v36, v37, dword_14D129E8, 0, -1, v100, 0, 0) ) { sub_401900(*(void **)(v1 + 180), *(_DWORD *)(*(_DWORD *)v37 + 34)); (*(void (__stdcall **)(_DWORD, int, signed int))(**(_DWORD **)(v1 + 180) + 1008))( *(_DWORD *)(*(_DWORD *)v37 + 34), v100, 1); sub_4055D0(*(void **)(v1 + 180), *(_DWORD *)(*(_DWORD *)v37 + 34), v100, v36); } --dword_750CB8; LOBYTE(v114) = 2; v87 = v99; goto LABEL_21; case 30: sub_4026A0(&v97, 0, (int)"CQuestZone::QuestEnd - QSC_RESET_ABSTATE", -1); v39 = *(_DWORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 13; v40 = &v112; do { v41 = *(_BYTE *)v39; *v40++ = *(_BYTE *)v39++; } while ( v41 ); v42 = sub_418C10((int)&unk_877138, (unsigned __int8 *)&v112); if ( v42 ) { v43 = *(_DWORD *)v42; if ( v43 ) { (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(v1 + 180) + 1616))(*(_DWORD *)(v43 + 34)); --dword_750CB8; LOBYTE(v114) = 2; v87 = v97; } else { --dword_750CB8; LOBYTE(v114) = 2; v87 = v97; } } else { --dword_750CB8; LOBYTE(v114) = 2; v87 = v97; } goto LABEL_21; case 31: sub_4026A0(&v101, 0, (int)"CQuestZone::QuestEnd - QSC_IS_ABSTATE", -1); v44 = *(_DWORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 14; v45 = &v111; do { v46 = *(_BYTE *)v44; *v45++ = *(_BYTE *)v44++; } while ( v46 ); v47 = sub_418C10((int)&unk_877138, (unsigned __int8 *)&v111); if ( v47 ) { v48 = *(_DWORD *)v47; if ( v48 ) { v49 = *(_DWORD *)(v48 + 34); v50 = (void *)(*(int (**)(void))(**(_DWORD **)(v1 + 180) + 1324))(); v51 = sub_409A00(v50, v49); v20 = v101; LOBYTE(v114) = 2; *(_DWORD *)(v1 + 208) = v51 != 0; --dword_750CB8; LABEL_20: v87 = v20; } else { --dword_750CB8; LOBYTE(v114) = 2; v87 = v101; } } else { --dword_750CB8; LOBYTE(v114) = 2; v87 = v101; } LABEL_21: sub_467660((int)&unk_D020420, v87); LABEL_22: v5 = v1 + 184; *(_DWORD *)(v1 + 2300) = sub_635490(v1 + 184); LABEL_23: --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; goto LABEL_24; case 32: *(_DWORD *)(v1 + 208) = (unsigned __int16)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v1 + 104))( v1, *(_WORD *)(v11 + 5)); goto LABEL_22; case 22: v52 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 108); goto LABEL_66; case 23: v52 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 112); goto LABEL_66; case 24: v52 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 100); goto LABEL_66; case 25: v52 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 116); goto LABEL_66; case 26: v52 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 120); LABEL_66: *(_DWORD *)(v1 + 4 * *(_DWORD *)(*(_DWORD *)(v1 + 2300) + 5) + 208) = (unsigned __int8)v52(v1); goto LABEL_22; case 17: case 19: case 20: case 21: *(_DWORD *)(v5 + 2005) = *(_DWORD *)(v5 + 2000); *(_DWORD *)(v5 + 2000) = 0; goto LABEL_23; case 1: v53 = *(_DWORD *)(v1 + 2300); if ( *(_WORD *)(v53 + 13) == -1 ) *(_WORD *)(v53 + 13) = *(_WORD *)(v1 + 2320); v54 = *(const void **)(v1 + 2300); v19 = 1; v55 = *(_WORD *)(v1 + 2310); *(_DWORD *)(v1 + 2304) = 1; sub_5B8320((void *)v1, v55, v54); goto LABEL_75; case 2: sub_5BACB0((void *)v1, *(_WORD *)(v1 + 2310), *(_DWORD *)(v1 + 2300)); goto LABEL_77; case 3: if ( !sub_5B96C0((void *)v1, *(_DWORD *)(v1 + 2300) + 5, *(_DWORD *)(v1 + 2300) + 69) ) { sub_5BB230((void *)v1, 3088); sub_5B7800(v1); v56 = 1; goto LABEL_80; } LABEL_77: v19 = 1; LABEL_75: dword_750CB8 -= v19; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); dword_750CB8 -= v19; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); dword_750CB8 -= v19; goto LABEL_26; case 4: v57 = *(_DWORD *)(v1 + 2300); *(_DWORD *)(v1 + 2304) = 1; v58 = sub_5B8590((void *)v1, *(_WORD *)(v57 + 5)); --dword_750CB8; v19 = v58; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); --dword_750CB8; goto LABEL_26; case 5: v13 = -1; sub_4026A0(&v99, 0, (int)"CQuestZone::QuestEnd - QSC_ACCEPT", -1); v59 = *(_DWORD *)(v1 + 4); v60 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 3; if ( !sub_632D90(v59, v60) ) { sub_5BB230((void *)v1, 3074); sub_5B7800(v1); v61 = v99; goto LABEL_85; } v62 = sub_62C880(v1); v63 = (void *)v1; if ( v62 >= 40 ) { v89 = 3087; LABEL_90: sub_5BB230(v63, v89); sub_5B7800(v1); v90 = v99; goto LABEL_91; } LOBYTE(v64) = sub_62CC50(v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5)); v63 = (void *)v1; if ( !v64 ) { v89 = 3075; goto LABEL_90; } v65 = sub_62BF80(v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5)); if ( v65 ) { if ( *(_BYTE *)(v65 + 2) == 20 ) { v104 = 0i64; v105 = 0; v106 = 0; v107 = 0; v108 = 0; v109 = 0; v110 = 0; v102 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); v103 = 6; v104 = _time64(0); } else { memcpy(&v102, (const void *)v65, 0x20u); v103 = 6; sub_62C090((int)&v102); v13 = -1; } } else { v66 = *(_DWORD *)(v1 + 2300); v104 = 0i64; v105 = 0; v106 = 0; v107 = 0; v108 = 0; v109 = 0; v110 = 0; v102 = *(_WORD *)(v66 + 5); v103 = 6; v104 = _time64(0); } v17 = sub_5B8440((void *)v1, &v102, *(_DWORD *)(v1 + 2300)); v18 = v99; LABEL_100: v86 = v18; LABEL_101: v19 = v17; LABEL_102: --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v86); --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); --dword_750CB8; v114 = v13; break; case 6: v13 = -1; sub_4026A0(&v101, 0, (int)"CQuestZone::QuestEnd - QSC_CANCEL", -1); v67 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 4; v68 = sub_62BF80(v1, v67); v69 = sub_632D90(*(_DWORD *)(v1 + 4), *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5)); if ( !v68 || !v69 ) { sub_5BB230((void *)v1, 3076); sub_5B7800(v1); v90 = v101; LABEL_91: v56 = 1; --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v90); --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); v114 = v13; goto LABEL_81; } *(_DWORD *)(v1 + 2304) = 1; if ( *(_BYTE *)(v69 + 18) ) { memcpy(&v102, (const void *)v68, 0x20u); v103 = 4; sub_62C090((int)&v102); v70 = sub_5B8440((void *)v1, &v102, *(_DWORD *)(v1 + 2300)); --dword_750CB8; v19 = v70; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v101); --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); --dword_750CB8; goto LABEL_26; } v17 = sub_5B8590((void *)v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5)); v86 = v101; goto LABEL_101; case 7: sub_4026A0(&v101, 0, (int)"CQuestZone::QuestEnd - QSC_PROGRESS", -1); v71 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 5; v72 = sub_62BF80(v1, v71); if ( !v72 ) { sub_5BB230((void *)v1, 3077); sub_5B7800(v1); v56 = 1; --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v101); goto LABEL_80; } v73 = (const void *)v72; v74 = *(_DWORD *)(v1 + 2300); *(_DWORD *)(v1 + 2304) = 1; memcpy(&v102, v73, 0x20u); LOBYTE(v108) = *(_BYTE *)(v74 + 7); v91 = v74; goto LABEL_112; case 8: sub_4026A0(&v101, 0, (int)"CQuestZone::QuestEnd - QSC_FAILED", -1); v75 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 6; v76 = sub_62BF80(v1, v75); if ( !v76 ) { sub_5BB230((void *)v1, 3078); sub_5B7800(v1); v56 = 1; --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v101); goto LABEL_80; } *(_DWORD *)(v1 + 2304) = 1; memcpy(&v102, (const void *)v76, 0x20u); v77 = *(_DWORD *)(v1 + 2300); v103 = 7; v91 = v77; LABEL_112: v19 = sub_5B8440((void *)v1, &v102, v91); v92 = v101; goto LABEL_113; case 9: v13 = -1; sub_4026A0(&v100, 0, (int)"CQuestZone::QuestEnd - QSC_DONE", -1); v78 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 7; if ( !sub_62BF80(v1, v78) ) { v93 = 3079; goto LABEL_119; } if ( !sub_62CE40(v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5)) ) { v93 = 3080; LABEL_119: sub_5BB230((void *)v1, v93); sub_5B7800(v1); v61 = v100; LABEL_85: v88 = v61; goto LABEL_86; } if ( sub_5B7A90((void *)v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5), *(_DWORD *)(v1 + 2316)) ) { v79 = (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(v1 + 180) + 1176))(v94); if ( !sub_5BA7A0((void *)v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5), *(_DWORD *)(v1 + 2316), v79) ) { sub_5BB230((void *)v1, 3073); sub_5B7800(v1); v88 = v100; LABEL_86: v56 = 1; LABEL_87: dword_750CB8 -= v56; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v88); dword_750CB8 -= v56; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); dword_750CB8 -= v56; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); v114 = v13; goto LABEL_81; } if ( !sub_5B9820((void *)v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5), *(_DWORD *)(v1 + 2316)) ) { v80 = (*(int (**)(void))(**(_DWORD **)(v1 + 180) + 2004))(); v81 = (*(int (**)(void))(**(_DWORD **)(v1 + 180) + 2004))(); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v80 + 40))(v80, *(_WORD *)(v81 + 4)); v82 = (*(int (**)(void))(**(_DWORD **)(v1 + 180) + 2004))(); v56 = 1; ++*(_WORD *)(v82 + 4); sub_5BB230((void *)v1, 3073); sub_5B7800(v1); v88 = v100; goto LABEL_87; } v19 = 1; --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v100); --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); --dword_750CB8; v114 = -1; } else { sub_5B8F30((void *)v1, *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5)); v19 = 1; --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v100); --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); --dword_750CB8; v114 = -1; } break; case 11: sub_4026A0(&v101, 0, (int)"CQuestZone::QuestEnd - QSC_ABORT", -1); v83 = *(_WORD *)(*(_DWORD *)(v1 + 2300) + 5); LOBYTE(v114) = 9; v84 = sub_62BF80(v1, v83); if ( v84 ) { v85 = *(_DWORD *)(v1 + 2300); *(_DWORD *)(v1 + 2304) = 1; memcpy(&v102, (const void *)v84, 0x20u); v103 = 1; v19 = sub_5B8440((void *)v1, &v102, v85); v92 = v101; LABEL_113: --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v92); --dword_750CB8; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); --dword_750CB8; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); --dword_750CB8; goto LABEL_26; } sub_5BB230((void *)v1, 3081); sub_5B7800(v1); v56 = 1; --dword_750CB8; LOBYTE(v114) = 2; sub_467660((int)&unk_D020420, v101); LABEL_80: dword_750CB8 -= v56; LOBYTE(v114) = 1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 1"); dword_750CB8 -= v56; LOBYTE(v114) = 0; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext - 0"); v114 = -1; LABEL_81: dword_750CB8 -= v56; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext"); return 0; } } sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestNext"); return v19; } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D129E8: using guessed type int dword_14D129E8; //----- (005BCA70) -------------------------------------------------------- int __thiscall sub_5BCA70(void *this, int a2) { int v2; // esi@1 __int16 v3; // ax@3 int v4; // ecx@5 int v5; // eax@9 char v7; // [sp+10h] [bp-110h]@9 unsigned int v8; // [sp+110h] [bp-10h]@1 int v9; // [sp+11Ch] [bp-4h]@1 int v10; // [sp+120h] [bp+0h]@1 v8 = (unsigned int)&v10 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( *(_DWORD *)(v2 + 180) ) { *(_DWORD *)(v2 + 2304) = 0; v3 = *(_WORD *)(v2 + 2310); if ( v3 != -1 ) { if ( *(_WORD *)a2 != v3 || (v4 = *(_DWORD *)(v2 + 2300), *(_BYTE *)(a2 + 2) != *(_DWORD *)v4) ) { sub_5BB230((void *)v2, 3084); goto LABEL_16; } if ( *(_DWORD *)v4 == 2 ) { *(_DWORD *)(v2 + 208) = *(_DWORD *)(a2 + 3); } else { if ( *(_DWORD *)v4 != 3 ) { if ( *(_DWORD *)v4 == 11 ) { sub_5BA3F0((void *)v2, *(_WORD *)(v4 + 5)); } else { v5 = sub_64B920(0); sprintf( &v7, "ERROR, Recv_NC_QUEST_SCRIPT_CMD_ACK, QUEST UN-DRIVED COMMAND=%d, QuestID=%d At %s", **(_DWORD **)(v2 + 2300), *(_WORD *)a2, v5); sub_64BC90(1, "Msg", "%s", &v7); sub_5BB230((void *)v2, 3085); sub_5B7800(v2); } goto LABEL_16; } *(_DWORD *)(v2 + 208) = *(_DWORD *)(a2 + 3); if ( *(_DWORD *)(a2 + 3) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 24))(v2, *(_WORD *)(v4 + 5)); sub_5BB890(v2); LABEL_16: --dword_750CB8; goto LABEL_17; } } sub_5BB890(v2); goto LABEL_16; } } --dword_750CB8; LABEL_17: v9 = -1; return sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK"); } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005BCC20) -------------------------------------------------------- int __thiscall sub_5BCC20(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 char v4; // al@3 __int16 v5; // bx@4 int v6; // eax@5 int v7; // eax@9 int v8; // eax@9 int v9; // ebx@9 int v10; // ST30_4@9 int v11; // ST2C_4@9 int v12; // ST28_4@9 int v13; // ST24_4@9 int v14; // eax@9 int v15; // eax@11 char v16; // dl@14 int v17; // eax@17 int v18; // ST30_4@19 int v19; // eax@19 void *v20; // ebx@25 int v21; // eax@27 int v22; // eax@29 unsigned int v24; // [sp-4h] [bp-28Ch]@1 char v25; // [sp+10h] [bp-278h]@29 char v26; // [sp+110h] [bp-178h]@9 int v27; // [sp+210h] [bp-78h]@14 char v28; // [sp+214h] [bp-74h]@10 __int16 v29; // [sp+215h] [bp-73h]@23 char v30; // [sp+217h] [bp-71h]@14 int v31; // [sp+234h] [bp-54h]@9 int v32; // [sp+238h] [bp-50h]@9 int v33; // [sp+23Ch] [bp-4Ch]@9 int v34; // [sp+240h] [bp-48h]@9 int v35; // [sp+244h] [bp-44h]@9 char v36; // [sp+248h] [bp-40h]@9 unsigned int v37; // [sp+278h] [bp-10h]@1 int v38; // [sp+284h] [bp-4h]@1 int v39; // [sp+288h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v24 = (unsigned int)&v39 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 180); v38 = 0; if ( v3 ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v3 + 2788))(0); *(_DWORD *)(v2 + 2304) = 0; v4 = *(_BYTE *)(a2 + 6); if ( v4 == 28 ) { v5 = 2886; if ( *(_WORD *)(a2 + 39) == 2881 ) { v6 = sub_62BF80(v2, *(_WORD *)(a2 + 7)); if ( v6 ) { *(_BYTE *)(v6 + 2) = 4; sub_62C090(v6); v5 = 2881; } } sub_5B86E0((void *)v2, *(_WORD *)(a2 + 7), v5); } else { if ( *(_WORD *)(a2 + 39) == 2881 ) { v28 = 0; switch ( v4 ) { case 6: v15 = sub_62C120(v2, *(_WORD *)(a2 + 7)); goto LABEL_21; case 7: v15 = sub_62C220(v2, *(_WORD *)(a2 + 7)); goto LABEL_21; case 8: if ( !sub_62C2C0(v2, *(_WORD *)(a2 + 7), *(_BYTE *)(a2 + 30)) ) goto LABEL_24; v16 = *(_BYTE *)(a2 + 30); v27 = *(_BYTE *)(a2 + 6); v30 = v16; goto LABEL_23; case 9: v15 = sub_62C320(v2, *(_WORD *)(a2 + 7)); goto LABEL_21; case 0xA: if ( !sub_62D020(v2, *(_WORD *)(a2 + 7)) ) goto LABEL_24; v17 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)(a2 + 7)); if ( v17 && !*(_BYTE *)(v17 + 18) ) { v18 = *(_WORD *)(a2 + 7); v19 = (*(int (**)(void))(**(_DWORD **)(v2 + 180) + 1056))(); sub_5C9640(v19, v18); } goto LABEL_22; case 0xC: v15 = sub_62C3F0(v2, *(_WORD *)(a2 + 7)); LABEL_21: if ( v15 ) { LABEL_22: v27 = *(_BYTE *)(a2 + 6); LABEL_23: v29 = *(_WORD *)(a2 + 7); sub_5B8320((void *)v2, v29, &v27); } LABEL_24: if ( *(_BYTE *)(a2 + 6) != 6 ) goto LABEL_28; v20 = off_849C18; *(_WORD *)off_849C18 = -14321; *(_DWORD *)((char *)v20 + 2) = (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(v2 + 180) + 840))(v24); *(_DWORD *)((char *)v20 + 6) = (*(int (**)(void))(**(_DWORD **)(v2 + 180) + 836))(); *((_WORD *)v20 + 5) = *(_WORD *)(a2 + 7); *((_BYTE *)v20 + 12) = sub_5A7540(byte_14D16AE8)[16]; *(_WORD *)((char *)v20 + 13) = sub_62C9A0(v2, *(_WORD *)(a2 + 7)); if ( sub_4C81E0(&off_849C18, 15) ) { v21 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&off_849C18, v21); LABEL_28: sub_5BB890(v2); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK : Packet Too Long", 15); sub_5BB890(v2); } break; default: v22 = sub_64B920(0); sprintf( &v25, "ERROR, Recv_NC_QUEST_DB_SET_INFO_ACK, QUEST UN-DRIVED COMMAND=%d, QuestID=%d At %s", **(_DWORD **)(v2 + 2300), *(_WORD *)(a2 + 7), v22); sub_64BC90(1, "Msg", "%s", &v25); goto LABEL_30; } } else { v7 = (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(v2 + 180) + 1388))(v24); v31 = *(_DWORD *)v7; v32 = *(_DWORD *)(v7 + 4); v33 = *(_DWORD *)(v7 + 8); v34 = *(_DWORD *)(v7 + 12); v8 = *(_DWORD *)(v7 + 16); v36 = 0; v9 = *(_DWORD *)(v2 + 180); v35 = v8; v10 = sub_64B920(0); v11 = *(_BYTE *)(a2 + 9); v12 = *(_WORD *)(a2 + 7); v13 = *(_WORD *)(v2 + 2310); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); sprintf( &v26, "ERROR - CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK, DB¿¡¼­ Ä", *(_WORD *)(a2 + 39), &v31, v14, v13, v12, v11, v10); sub_64BC90(1, "Msg", "%s", &v26); LABEL_30: sub_5BB230((void *)v2, 3086); } } --dword_750CB8; v38 = -1; } else { --dword_750CB8; v38 = -1; } return sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK"); } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D148D0: using guessed type int dword_14D148D0; //----- (005BCFE0) -------------------------------------------------------- int __thiscall sub_5BCFE0(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // eax@6 int v5; // ebx@6 int v6; // ST28_4@6 int v7; // ST24_4@6 int v8; // eax@6 unsigned int v10; // [sp-4h] [bp-164h]@1 char v11; // [sp+10h] [bp-150h]@6 int v12; // [sp+110h] [bp-50h]@6 int v13; // [sp+114h] [bp-4Ch]@6 int v14; // [sp+118h] [bp-48h]@6 int v15; // [sp+11Ch] [bp-44h]@6 int v16; // [sp+120h] [bp-40h]@6 char v17; // [sp+124h] [bp-3Ch]@6 unsigned int v18; // [sp+150h] [bp-10h]@1 int v19; // [sp+15Ch] [bp-4h]@1 int v20; // [sp+160h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v10 = (unsigned int)&v20 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::NC_QUEST_DB_CLEAR_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::NC_QUEST_DB_CLEAR_ACK"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 45); v19 = 0; if ( !v3 ) { --dword_750CB8; LABEL_9: v19 = -1; return sub_467660((int)&unk_D020420, (int)"CQuestZone::NC_QUEST_DB_CLEAR_ACK"); } if ( *(_WORD *)(a2 + 6) != *(_WORD *)(*((_DWORD *)v2 + 575) + 5) ) { sub_5BB230(v2, 3072); LABEL_8: --dword_750CB8; goto LABEL_9; } if ( *(_WORD *)(a2 + 8) == 2881 ) { *((_DWORD *)v2 + 576) = 0; sub_5BB890(v2); goto LABEL_8; } v4 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v3 + 1388))(v10); v5 = *((_DWORD *)v2 + 45); v12 = *(_DWORD *)v4; v13 = *(_DWORD *)(v4 + 4); v14 = *(_DWORD *)(v4 + 8); v15 = *(_DWORD *)(v4 + 12); v16 = *(_DWORD *)(v4 + 16); v17 = 0; v6 = sub_64B920(0); v7 = *(_WORD *)(a2 + 6); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); sprintf(&v11, "ERROR - CQuestZone::NC_QUEST_DB_CLEAR_ACK, DB¿¡¼­ Ä", *(_WORD *)(a2 + 8), &v12, v8, v7, v6); sub_64BC90(1, "Msg", "%s", &v11); sub_5BB230(v2, 3072); --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"CQuestZone::NC_QUEST_DB_CLEAR_ACK"); } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005BD190) -------------------------------------------------------- int __thiscall sub_5BD190(void *this, int a2) { int v2; // ebx@1 signed int v3; // edi@1 int v4; // ecx@1 int v5; // eax@4 int v6; // ST04_4@5 __time32_t v7; // eax@5 __time32_t v8; // eax@5 int v9; // eax@6 int v10; // ST08_4@7 int v11; // eax@8 unsigned int v13; // [sp-4h] [bp-44h]@1 char v14; // [sp+10h] [bp-30h]@7 unsigned int v15; // [sp+30h] [bp-10h]@1 int v16; // [sp+3Ch] [bp-4h]@1 int v17; // [sp+40h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v13 = (unsigned int)&v17 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_ITEMDB_QUESTREWARD_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_ITEMDB_QUESTREWARD_ACK"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = *(_DWORD *)(v2 + 180); v16 = 0; if ( v4 ) { if ( *(_WORD *)(a2 + 10) == 3009 ) { v5 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v4 + 2004))(v13); if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 28))( v5, *(_DWORD *)(v2 + 180), *(_WORD *)(a2 + 6), 0) ) { v6 = *(_WORD *)(a2 + 6); v7 = sub_418EA0((__time32_t)byte_14D15210, (int)"CQuestZone::Recv_NC_ITEMDB_QUESTREWARD_ACK : "); v8 = sub_43B910(v7, v6); sub_418F20(v8, (int)&unk_13359E04); } v9 = sub_62BF80(v2, *(_WORD *)(a2 + 8)); if ( v9 ) { memcpy(&v14, (const void *)v9, 0x20u); sub_62C380(v2, (int)&v14); v10 = *(_DWORD *)(v2 + 2300); *(_DWORD *)(v2 + 2304) = 1; sub_5B8440((void *)v2, &v14, v10); sub_5BB890(v2); v3 = -1; } } else { v11 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v4 + 2004))(v13); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v11 + 40))(v11, *(_WORD *)(a2 + 6)); sub_5BB230((void *)v2, 3086); (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 180) + 2788))(*(_DWORD *)(v2 + 180), 0); } --dword_750CB8; } else { --dword_750CB8; } v16 = v3; return sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_ITEMDB_QUESTREWARD_ACK"); } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005BD330) -------------------------------------------------------- signed int __thiscall sub_5BD330(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::PsEnd"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::PsEnd"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v2 + 45) ) { *((_DWORD *)v2 + 52) = a2; sub_5BB890(v2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::PsEnd"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::PsEnd"); result = 0; } return result; } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BD420) -------------------------------------------------------- int __thiscall sub_5BD420(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Return2Quest"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_Return2Quest"; dword_750AB8[dword_750CB8++] = -1; sub_5BD330((char *)v2 + 82048, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_Return2Quest"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BD4D0) -------------------------------------------------------- signed int __thiscall sub_5BD4D0(void *this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v5; // eax@4 int v6; // eax@5 int v7; // eax@5 int v8; // ebx@5 int v9; // ST30_4@5 int v10; // ST2C_4@5 int v11; // ST28_4@5 int v12; // ST24_4@5 int v13; // eax@5 int v14; // eax@5 int v15; // eax@6 int v16; // ST30_4@7 __time32_t v17; // eax@7 __time32_t v18; // eax@7 __int16 v19; // ST34_2@8 int v20; // eax@9 int v21; // ST34_4@11 int v22; // eax@11 __int16 v23; // ax@12 unsigned int v24; // [sp-4h] [bp-18Ch]@1 char v25; // [sp+10h] [bp-178h]@5 int v26; // [sp+110h] [bp-78h]@12 char v27; // [sp+114h] [bp-74h]@8 __int16 v28; // [sp+115h] [bp-73h]@12 int v29; // [sp+134h] [bp-54h]@5 int v30; // [sp+138h] [bp-50h]@5 int v31; // [sp+13Ch] [bp-4Ch]@5 int v32; // [sp+140h] [bp-48h]@5 int v33; // [sp+144h] [bp-44h]@5 char v34; // [sp+148h] [bp-40h]@5 unsigned int v35; // [sp+178h] [bp-10h]@1 int v36; // [sp+184h] [bp-4h]@1 int v37; // [sp+188h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v24 = (unsigned int)&v37 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::PROTO_NC_QUEST_DB_DONE_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::PROTO_NC_QUEST_DB_DONE_ACK"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 180); v36 = 0; if ( !v3 ) { --dword_750CB8; v36 = -1; LABEL_3: sub_467660((int)&unk_D020420, (int)"CQuestZone::PROTO_NC_QUEST_DB_DONE_ACK"); return 0; } v5 = *(_DWORD *)v3; if ( *(_WORD *)(a2 + 41) != 2881 ) { v6 = (*(int (__cdecl **)(unsigned int))(v5 + 1388))(v24); v29 = *(_DWORD *)v6; v30 = *(_DWORD *)(v6 + 4); v31 = *(_DWORD *)(v6 + 8); v32 = *(_DWORD *)(v6 + 12); v7 = *(_DWORD *)(v6 + 16); v34 = 0; v8 = *(_DWORD *)(v2 + 180); v33 = v7; v9 = sub_64B920(0); v10 = *(_BYTE *)(a2 + 9); v11 = *(_WORD *)(a2 + 7); v12 = *(_WORD *)(v2 + 2310); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); sprintf( &v25, "ERROR - CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK, DB¿¡¼­ Ä", *(_WORD *)(a2 + 41), &v29, v13, v12, v11, v10, v9); sub_64BC90(1, "Msg", "%s", &v25); v14 = (*(int (**)(void))(**(_DWORD **)(v2 + 180) + 2004))(); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v14 + 40))(v14, *(_WORD *)(a2 + 39)); sub_5BB230((void *)v2, 3086); (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 180) + 2788))(*(_DWORD *)(v2 + 180), 0); --dword_750CB8; v36 = -1; goto LABEL_3; } v15 = (*(int (__stdcall **)(unsigned int))(v5 + 2004))(v24); if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v15 + 28))( v15, *(_DWORD *)(v2 + 180), *(_WORD *)(a2 + 39), 0) ) { v16 = *(_WORD *)(a2 + 39); v17 = sub_418EA0((__time32_t)byte_14D15210, (int)"CQuestZone::Recv_NC_ITEMDB_QUESTREWARD_ACK : "); v18 = sub_43B910(v17, v16); sub_418F20(v18, (int)&unk_13359E04); } *(_DWORD *)(v2 + 2304) = 0; v19 = *(_WORD *)(a2 + 7); v27 = 0; if ( sub_62D020(v2, v19) ) { v20 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)(a2 + 7)); if ( v20 ) { if ( !*(_BYTE *)(v20 + 18) ) { v21 = *(_WORD *)(a2 + 7); v22 = (*(int (**)(void))(**(_DWORD **)(v2 + 180) + 1056))(); sub_5C9640(v22, v21); } } v23 = *(_WORD *)(a2 + 7); v26 = *(_BYTE *)(a2 + 6); v28 = v23; sub_5B8320((void *)v2, v23, &v26); } (*(void (__cdecl **)(_DWORD))(**(_DWORD **)(v2 + 180) + 2788))(0); sub_5BB890(v2); --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::PROTO_NC_QUEST_DB_DONE_ACK"); return 1; } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005BD770) -------------------------------------------------------- int __stdcall sub_5BD770(int a1) { int v1; // ebx@1 int v2; // edi@2 void *v3; // ebx@2 unsigned __int16 v4; // ax@8 int v5; // ebx@8 void (__thiscall *v6)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@9 int v7; // edi@12 void *v8; // eax@14 signed __int16 v10; // [sp+10h] [bp-78h]@11 char v11; // [sp+14h] [bp-74h]@9 char v12; // [sp+28h] [bp-60h]@9 char v13; // [sp+49h] [bp-3Fh]@9 int v14; // [sp+6Ah] [bp-1Eh]@9 int v15; // [sp+6Eh] [bp-1Ah]@9 __int16 v16; // [sp+72h] [bp-16h]@9 unsigned int v17; // [sp+78h] [bp-10h]@1 int v18; // [sp+84h] [bp-4h]@1 int v19; // [sp+88h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_QUEST_JOBDUNGEON_FIND_RNG"); dword_7508B8[dword_750CB8] = (int)"ZoneListenSession::zls_NC_QUEST_JOBDUNGEON_FIND_RNG"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v18 = 0; if ( sub_45AA60(a1 + 2) == 1 ) { v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 5)); v3 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3384))(v2); if ( v3 ) { if ( !(dword_14D2146C & 1) ) { dword_14D2146C |= 1u; word_14D21468 = 70; atexit(nullsub_179); } if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1156))(v2)) & (unsigned __int16)word_14D21468 ) { if ( *(_WORD *)(a1 + 9) == 12480 ) { v4 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)(a1 + 11)); v5 = sub_4190D0((int)&unk_14D20370, v4); if ( v5 ) { strncpy(&v13, (const char *)(a1 + 11), 0x21u); strncpy(&v12, (const char *)(a1 + 44), 0x21u); v14 = *(_DWORD *)(v5 + 50); v15 = *(_DWORD *)(v5 + 54); v6 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 1536); v16 = 0; v6(v2, &v11, 6, 9, 10); } } else { *(_DWORD *)(a1 + 113) = 0; sub_5BCA70(v3, a1 + 110); } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 17, 32, 12482); *(_DWORD *)(a1 + 113) = 2; sub_5BCA70(v3, a1 + 110); } } } else { v10 = *(_WORD *)(a1 + 9); if ( v10 == 12481 ) { v7 = sub_49F830(&unk_D714FF8, (const char *)(a1 + 11)); if ( v7 ) { sub_5A6B60(v7, a1 + 77); v1 = v7; v10 = 12480; } } v8 = off_849C18; *(_WORD *)off_849C18 = 17439; memcpy((char *)v8 + 2, (const void *)(a1 + 2), 0x73u); *(_WORD *)((char *)v8 + 9) = v10; if ( v1 ) { *((_DWORD *)v8 + 11) = *(_DWORD *)v1; *((_DWORD *)v8 + 12) = *(_DWORD *)(v1 + 4); *((_DWORD *)v8 + 13) = *(_DWORD *)(v1 + 8); *((_BYTE *)v8 + 56) = 0; } sub_5A4B40(&off_849C18, 117); } --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, (int)"ZoneListenSession::zls_NC_QUEST_JOBDUNGEON_FIND_RNG"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D21468: using guessed type __int16 word_14D21468; // 14D2146C: using guessed type int dword_14D2146C; //----- (005BD9F0) -------------------------------------------------------- void __cdecl sub_5BD9F0(int a1, int a2) { int v2; // ecx@1 int v3; // eax@2 v2 = a2; if ( a2 ) { v3 = a1; do { if ( v3 ) *(_DWORD *)v3 = 0; v3 += 4; --v2; } while ( v2 ); } } //----- (005BDA10) -------------------------------------------------------- int __thiscall sub_5BDA10(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // ecx@1 int v5; // eax@4 int v6; // esi@4 int v8; // eax@6 int v9; // esi@6 int v10; // eax@8 int v11; // esi@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestScriptRun"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestScriptRun"; dword_750AB8[dword_750CB8] = -1; v4 = 1; ++dword_750CB8; if ( *((_DWORD *)v3 + 45) ) { switch ( a2 ) { case 4: case 5: case 20: if ( !sub_5BA3F0(v3, a3) ) goto LABEL_9; v5 = sub_5BB890(v3); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestScriptRun"); return v6; case 6: case 7: if ( !sub_5BA540(v3, a3) ) goto LABEL_9; v8 = sub_5BB890(v3); --dword_750CB8; v9 = v8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestScriptRun"); return v9; case 8: if ( sub_5BA670(v3, a3) ) { v10 = sub_5BB890(v3); --dword_750CB8; v11 = v10; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestScriptRun"); return v11; } LABEL_9: v4 = 1; break; default: break; } } dword_750CB8 -= v4; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestScriptRun"); return 0; } // 5BB890: using guessed type int __thiscall sub_5BB890(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BDBE0) -------------------------------------------------------- signed int __thiscall sub_5BDBE0(void *this, __int16 a2) { void *v2; // esi@1 bool v3; // zf@1 signed int result; // eax@2 int v5; // eax@3 int v6; // ecx@4 int v7; // ecx@9 int v8; // eax@9 int v9; // esi@9 __int16 v10; // [sp+10h] [bp-20h]@3 int v11; // [sp+14h] [bp-1Ch]@3 int v12; // [sp+18h] [bp-18h]@9 int v13; // [sp+20h] [bp-10h]@1 int v14; // [sp+2Ch] [bp-4h]@1 v2 = this; v13 = (int)"CQuestZone::QuestPlayer_NPCClick"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClick"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestPlayer_NPCClick"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 45) == 0; v14 = 0; if ( v3 ) { --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClick"); result = 0; } else { *((_WORD *)v2 + 1160) = a2; v10 = a2; sub_62DCD0(v2, &v10); v5 = v11; if ( v11 && (v6 = *(_WORD *)(v11 + 4), v6 != -1) && *((_WORD *)v2 + 1155) == (_WORD)v6 && *((_DWORD *)v2 + 576) == 1 && *((_WORD *)v2 + 1154) == a2 ) { --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClick"); result = 2; } else { v7 = v12; *((_WORD *)v2 + 1154) = a2; *((_BYTE *)v2 + 2188) = 0; v8 = sub_5BDA10(v2, v7, *(_WORD *)(v5 + 4)); --dword_750CB8; v9 = v8; v14 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCClick"); result = v9; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BDD50) -------------------------------------------------------- int __thiscall sub_5BDD50(void *this, int a2) { int v2; // esi@1 int result; // eax@2 int v4; // edi@4 int v5; // eax@4 unsigned int v6; // ecx@8 int v7; // edx@8 bool v8; // zf@16 int v9; // eax@20 int v10; // esi@20 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NotCheckNPC"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestPlayer_NotCheckNPC"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v2 + 180) && *(_DWORD *)(v2 + 2304) != 1 ) { v4 = sub_62D210(v2, a2); v5 = sub_632D90(*(_DWORD *)(v2 + 4), a2); if ( !v5 ) goto LABEL_23; if ( *(_BYTE *)(v5 + 29) == 1 ) *(_WORD *)(v2 + 2320) = *(_WORD *)(v5 + 30); if ( v4 == 8 ) { v6 = 0; v7 = v5 + 98; while ( *(_BYTE *)(v7 - 6) != 1 || *(_BYTE *)v7 ) { ++v6; v7 += 8; if ( v6 >= 5 ) goto LABEL_14; } *(_WORD *)(v2 + 2320) = *(_WORD *)(v5 + 8 * v6 + 94); } LABEL_14: if ( *(_BYTE *)(v5 + 32) ) goto LABEL_24; v8 = v4 == 8 ? *(_BYTE *)(v5 + 88) == 0 : *(_BYTE *)(v5 + 25) == 0; if ( !v8 ) { LABEL_24: *(_BYTE *)(v2 + 2188) = 1; v9 = sub_5BDA10((void *)v2, v4, a2); --dword_750CB8; v10 = v9; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NotCheckNPC"); result = v10; } else { LABEL_23: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NotCheckNPC"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NotCheckNPC"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BDEE0) -------------------------------------------------------- signed int __thiscall sub_5BDEE0(void *this, int a2) { void *v2; // edi@1 bool v3; // zf@1 signed int result; // eax@2 int v5; // eax@3 signed int v6; // eax@12 signed int v7; // esi@12 __int16 v8; // [sp-Ch] [bp-3Ch]@4 __int16 v9; // [sp-8h] [bp-38h]@4 __int16 v10; // [sp-4h] [bp-34h]@4 __int16 v11; // [sp+10h] [bp-20h]@5 int v12; // [sp+18h] [bp-18h]@9 int v13; // [sp+20h] [bp-10h]@1 int v14; // [sp+2Ch] [bp-4h]@1 v2 = this; v13 = (int)"CQuestZone::Recv_NC_QUEST_SELECT_START_REQ"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_SELECT_START_REQ"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_SELECT_START_REQ"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 45) == 0; v14 = 0; if ( v3 ) { --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_SELECT_START_REQ"); result = 0; } else { v5 = sub_632D90(*((_DWORD *)v2 + 1), *(_WORD *)(a2 + 2)); if ( v5 ) { v11 = *(_WORD *)a2; if ( sub_62D2E0(v2, (int)&v11, v5, 0, 0, 0) ) { if ( *((_WORD *)v2 + 1155) != *(_WORD *)(a2 + 2) && *((_WORD *)v2 + 1154) == *(_WORD *)a2 && sub_5BDA10(v2, v12, *(_WORD *)(a2 + 2)) ) { v10 = 2881; v9 = *(_WORD *)(a2 + 2); v8 = *(_WORD *)a2; } else { v10 = 2887; v9 = *(_WORD *)(a2 + 2); v8 = *(_WORD *)a2; } } else { v10 = 2887; v9 = *(_WORD *)(a2 + 2); v8 = *(_WORD *)a2; } } else { v10 = 2887; v9 = *(_WORD *)(a2 + 2); v8 = *(_WORD *)a2; } v6 = sub_5B8D00(v2, v8, v9, v10); --dword_750CB8; v7 = v6; v14 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_SELECT_START_REQ"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BE050) -------------------------------------------------------- int __thiscall sub_5BE050(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 __int16 v4; // cx@3 __int16 v5; // dx@5 void *v6; // eax@5 __int16 v7; // dx@5 int v8; // eax@7 unsigned int v10; // [sp-4h] [bp-44h]@1 __int16 v11; // [sp+10h] [bp-30h]@5 char v12; // [sp+12h] [bp-2Eh]@5 int v13; // [sp+13h] [bp-2Dh]@5 int v14; // [sp+17h] [bp-29h]@5 int v15; // [sp+1Bh] [bp-25h]@5 int v16; // [sp+1Fh] [bp-21h]@5 int v17; // [sp+23h] [bp-1Dh]@5 int v18; // [sp+27h] [bp-19h]@5 int v19; // [sp+2Bh] [bp-15h]@5 char v20; // [sp+2Fh] [bp-11h]@5 unsigned int v21; // [sp+30h] [bp-10h]@1 int v22; // [sp+3Ch] [bp-4h]@1 int v23; // [sp+40h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v10 = (unsigned int)&v23 ^ __security_cookie; v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_DB_READ_ACK"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::Recv_NC_QUEST_DB_READ_ACK"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 180); v22 = 0; if ( v3 ) { v4 = *(_WORD *)(a2 + 6); if ( v4 == 2881 ) { v5 = *(_WORD *)(a2 + 8); v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v20 = 0; v11 = v5; v12 = 20; sub_62C050(v2, &v11); v6 = off_849C18; *(_WORD *)off_849C18 = 17431; v7 = *(_WORD *)(a2 + 8); *((_WORD *)v6 + 1) = 2904; *((_WORD *)v6 + 2) = v7; if ( sub_4C81E0(&off_849C18, 6) ) { v8 = (*(int (__cdecl **)(unsigned int))(**(_DWORD **)(v2 + 180) + 764))(v10); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v8 + 12))(v8, *(_DWORD *)(v2 + 180), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CQuestZone::Recv_NC_QUEST_DB_READ_ACK : Packet Too Long", 6); } } else { sub_576A90(v3, v4, "CQuestZone::Recv_NC_QUEST_DB_READ_ACK"); } --dword_750CB8; } else { --dword_750CB8; } v22 = -1; return sub_467660((int)&unk_D020420, (int)"CQuestZone::Recv_NC_QUEST_DB_READ_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005BE1D0) -------------------------------------------------------- int __thiscall sub_5BE1D0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@1 int v4; // edx@1 int v5; // ecx@1 unsigned int v6; // edx@2 v2 = this; result = *(_DWORD *)(this + 4); v4 = *(_DWORD *)this; v5 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; if ( v5 <= a2 ) { if ( v5 >= a2 ) return result; sub_447630(v2, a2 - v5); sub_5BD9F0(*(_DWORD *)(v2 + 4), a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2)); result = *(_DWORD *)(v2 + 4); v6 = result + 4 * (a2 - ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2)); } else { v6 = v4 + 4 * a2; if ( v6 == result ) return result; } *(_DWORD *)(v2 + 4) = v6; return result; } //----- (005BE260) -------------------------------------------------------- int __thiscall sub_5BE260(void *this, int a2) { void *v2; // esi@1 signed int v3; // ebx@1 signed int v4; // edi@1 int v5; // eax@1 int v7; // eax@4 int v8; // eax@5 int v9; // eax@6 int v10; // ebx@6 int v11; // eax@8 int v12; // edi@8 int v13; // esi@9 __int16 v14; // ax@11 int v15; // esi@14 signed int v16; // eax@16 void *v17; // esi@19 int v18; // eax@19 void (__thiscall *v19)(_DWORD, _DWORD, _DWORD); // eax@21 void *v20; // [sp+10h] [bp-40h]@5 int v21; // [sp+14h] [bp-3Ch]@5 int v22; // [sp+18h] [bp-38h]@5 int v23; // [sp+20h] [bp-30h]@1 int v24; // [sp+24h] [bp-2Ch]@5 int v25; // [sp+28h] [bp-28h]@5 __int16 v26; // [sp+2Ch] [bp-24h]@11 __int16 v27; // [sp+2Eh] [bp-22h]@11 int v28; // [sp+30h] [bp-20h]@5 int v29; // [sp+34h] [bp-1Ch]@5 int v30; // [sp+38h] [bp-18h]@9 void *v31; // [sp+3Ch] [bp-14h]@1 int v32; // [sp+40h] [bp-10h]@9 int v33; // [sp+4Ch] [bp-4h]@1 v2 = this; v31 = this; v23 = (int)"CQuestZone::QuestPlayer_NPCMobKill"; sub_4675D0((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCMobKill"); dword_7508B8[dword_750CB8] = (int)"CQuestZone::QuestPlayer_NPCMobKill"; v3 = -1; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v2 + 45); v33 = 0; if ( !v5 || !a2 || (v7 = (*(int (__stdcall **)(int))(*(_DWORD *)a2 + 1808))(v5)) == 0 ) { --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCMobKill"); return 0; } v25 = **(_WORD **)v7; v20 = 0; v21 = 0; v22 = 0; v8 = 0; LOBYTE(v33) = 1; v28 = 0; v24 = 0; v29 = 0; if ( *((_DWORD *)v2 + 2) <= 0 ) goto LABEL_32; do { v9 = sub_62BFD0((int)v2, v8); v10 = v9; if ( v9 ) { if ( *(_BYTE *)(v9 + 2) == 6 ) { v11 = sub_632D90(*((_DWORD *)v2 + 1), *(_WORD *)v9); v12 = v11; if ( v11 ) { v13 = 0; v32 = 0; v30 = v11 + 97; do { if ( sub_5B74A0((int)v31, v12, v13, v25) ) { v14 = *(_WORD *)(v12 + 4); v26 = *(_WORD *)(v30 - 3); v27 = v14; sub_4478A0((int)&v20, (unsigned int)&v26); if ( *(_BYTE *)(v13 + v10 + 24) < (signed int)*(_BYTE *)v30 ) { ++*(_BYTE *)(v13 + v10 + 24); v32 = 1; v24 = 1; } } v30 += 8; ++v13; } while ( v13 < 5 ); v15 = 0; if ( *(_BYTE *)(v12 + 192) ) { do { if ( sub_5B7510((int)v31, v12, v15, v25) ) { v16 = sub_5BA9C0(v31, v10, v12, v15, a2); v32 |= v16; } ++v15; } while ( v15 < *(_BYTE *)(v12 + 192) ); } if ( !v32 || (v17 = v31, v30 = *(_BYTE *)(v10 + 2), LOBYTE(v18) = sub_62D280((int)v31, v29), v30 != 6) ) goto LABEL_25; if ( v18 == 8 ) { v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v17 + 80); } else { if ( v18 != 7 ) { LABEL_25: v28 |= v32; v2 = v31; goto LABEL_26; } v19 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v17 + 84); } v19(v17, v10, v12); goto LABEL_25; } } } LABEL_26: v4 = 1; v8 = v29 + 1; v29 = v8; } while ( v8 < *((_DWORD *)v2 + 2) ); if ( v24 ) sub_5BB4C0(v2, (int)&v20); if ( v20 ) operator delete(v20); v3 = -1; LABEL_32: dword_750CB8 -= v4; v33 = v3; sub_467660((int)&unk_D020420, (int)"CQuestZone::QuestPlayer_NPCMobKill"); return v28; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BE4D0) -------------------------------------------------------- signed int __thiscall sub_5BE4D0(int this, __int16 a2, unsigned __int16 a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // edi@4 int v6; // eax@5 int v7; // edi@5 char v8; // al@6 int v9; // eax@8 int v10; // ebx@9 __int16 v11; // cx@12 unsigned __int8 v12; // al@12 void *v13; // esi@16 int v14; // ebx@16 int v15; // eax@16 void (__thiscall *v16)(_DWORD, _DWORD, _DWORD); // edx@18 int v18; // [sp-4h] [bp-40h]@18 int v19; // [sp+10h] [bp-2Ch]@5 int v20; // [sp+14h] [bp-28h]@5 int v21; // [sp+18h] [bp-24h]@5 int v22; // [sp+20h] [bp-1Ch]@4 int v23; // [sp+24h] [bp-18h]@1 int v24; // [sp+28h] [bp-14h]@4 __int16 v25; // [sp+2Ch] [bp-10h]@12 __int16 v26; // [sp+2Eh] [bp-Eh]@12 int v27; // [sp+38h] [bp-4h]@5 int v28; // [sp+44h] [bp+8h]@8 v3 = this; v23 = this; v4 = 0; if ( *(_DWORD *)(this + 180) ) { if ( a2 != -1 ) { if ( sub_418D40((int)&unk_14D159B0, a3) ) { v24 = 0; v5 = sub_62BF40(v3, a2); v22 = v5; if ( v5 != -1 ) { v19 = 0; v20 = 0; v21 = 0; v27 = 0; sub_5BE1D0((int)&v19, 0); v6 = sub_62BFD0(v3, v5); v7 = v6; if ( v6 ) { v8 = *(_BYTE *)(v6 + 2); if ( v8 == 6 || v8 == 8 ) { v9 = sub_632D90(*(_DWORD *)(v3 + 4), *(_WORD *)v7); v28 = v9; if ( v9 ) { v10 = v9 + 97; while ( 1 ) { if ( sub_5B74A0(v23, v9, v4, a3) ) { v11 = *(_WORD *)(v28 + 4); v25 = *(_WORD *)(v10 - 3); v26 = v11; sub_4478A0((int)&v19, (unsigned int)&v25); v12 = *(_BYTE *)(v4 + v7 + 24); if ( v12 < *(_BYTE *)v10 ) { *(_BYTE *)(v4 + v7 + 24) = v12 + 1; v24 = 1; } } ++v4; v10 += 8; if ( v4 >= 5 ) break; v9 = v28; } if ( v24 == 1 ) { v13 = (void *)v23; v14 = *(_BYTE *)(v7 + 2); LOBYTE(v15) = sub_62D280(v23, v22); if ( v14 == 6 ) { if ( v15 == 8 ) { v16 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v13 + 80); v18 = v28; LABEL_21: v16(v13, v7, v18); goto LABEL_22; } if ( v15 == 7 ) { v16 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v13 + 84); v18 = v28; goto LABEL_21; } } LABEL_22: sub_5BB4C0(v13, (int)&v19); sub_424190((void **)&v19); return 1; } } } } sub_424190((void **)&v19); } } } } return 0; } //----- (005BE680) -------------------------------------------------------- int __thiscall sub_5BE680(int this, unsigned __int16 a2) { int v2; // ebx@1 void *v3; // edi@1 int v4; // eax@3 int *v5; // eax@4 int v6; // eax@5 int v8; // esi@8 int v9; // eax@11 int v10; // edi@11 char v11; // al@12 int v12; // eax@14 int v13; // esi@15 int v14; // ebx@15 __int16 v15; // cx@18 unsigned __int8 v16; // al@18 int v17; // ebx@22 int v18; // esi@22 int v19; // eax@22 void (__thiscall *v20)(_DWORD, _DWORD, _DWORD); // edx@24 int v21; // [sp-4h] [bp-4Ch]@24 void *v22; // [sp+10h] [bp-38h]@8 int v23; // [sp+14h] [bp-34h]@8 int v24; // [sp+18h] [bp-30h]@8 int v25; // [sp+20h] [bp-28h]@8 __int16 v26; // [sp+24h] [bp-24h]@18 __int16 v27; // [sp+26h] [bp-22h]@18 int v28; // [sp+28h] [bp-20h]@8 int v29; // [sp+2Ch] [bp-1Ch]@8 int v30; // [sp+30h] [bp-18h]@1 void *v31; // [sp+34h] [bp-14h]@11 int v32; // [sp+38h] [bp-10h]@14 int v33; // [sp+44h] [bp-4h]@8 v2 = this; v30 = this; v3 = 0; if ( !*(_DWORD *)(this + 180) || a2 > (unsigned int)dword_14D16014 || (v4 = dword_14D1600C + 52 * a2) == 0 || (v5 = *(int **)v4) == 0 ) return 0; v6 = *(_WORD *)v5; if ( (_WORD)v6 != a2 ) { sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", a2, v6); return 0; } v28 = 0; v25 = 0; v22 = 0; v23 = 0; v24 = 0; v33 = 0; sub_5BE1D0((int)&v22, 0); v8 = 0; v29 = 0; if ( *(_DWORD *)(v2 + 8) <= 0 ) goto LABEL_33; while ( 1 ) { v31 = v3; v9 = sub_62BFD0(v2, v8); v10 = v9; if ( v9 ) { v11 = *(_BYTE *)(v9 + 2); if ( v11 == 6 || v11 == 8 ) { v12 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)v10); v32 = v12; if ( v12 ) { v13 = 0; v14 = v12 + 97; while ( 1 ) { if ( sub_5B74A0(v30, v12, v13, a2) ) { v15 = *(_WORD *)(v32 + 4); v26 = *(_WORD *)(v14 - 3); v27 = v15; sub_4478A0((int)&v22, (unsigned int)&v26); v16 = *(_BYTE *)(v13 + v10 + 24); if ( v16 < *(_BYTE *)v14 ) { *(_BYTE *)(v13 + v10 + 24) = v16 + 1; v31 = (void *)1; v25 = 1; } } ++v13; v14 += 8; if ( v13 >= 5 ) break; v12 = v32; } if ( v31 != (void *)1 || (v17 = v30, v18 = *(_BYTE *)(v10 + 2), LOBYTE(v19) = sub_62D280(v30, v29), v18 != 6) ) goto LABEL_28; if ( v19 == 8 ) { v20 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v17 + 80); v21 = v32; } else { if ( v19 != 7 ) { LABEL_28: v28 |= (unsigned int)v31; v2 = v30; v8 = v29; goto LABEL_29; } v20 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v17 + 84); v21 = v32; } v20(v17, v10, v21); goto LABEL_28; } } } LABEL_29: ++v8; v29 = v8; if ( v8 >= *(_DWORD *)(v2 + 8) ) break; v3 = 0; } if ( v25 == 1 ) sub_5BB4C0((void *)v2, (int)&v22); v3 = 0; LABEL_33: if ( v22 != v3 ) operator delete(v22); return v28; } // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (005BE880) -------------------------------------------------------- int __thiscall sub_5BE880(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = 0; return result; } //----- (005BE8A0) -------------------------------------------------------- int __stdcall sub_5BE8A0(int a1, int a2) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 2592))(a1); } //----- (005BE8C0) -------------------------------------------------------- int __thiscall sub_5BE8C0(int this, int a2, int a3) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a3 + 1616))(*(_DWORD *)(this + 4)); } //----- (005BE8E0) -------------------------------------------------------- int __thiscall sub_5BE8E0(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // ebx@1 int v5; // ST04_4@1 __int16 v6; // ax@1 v3 = this; (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 2632))(a3); (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 2640))(a3); v4 = *(_DWORD *)a3; v5 = *((_BYTE *)v3 + 4); v6 = sub_4802C0(a3); return (*(int (__thiscall **)(int, _DWORD, int))(v4 + 2624))(a3, (unsigned __int16)v6, v5); } //----- (005BE930) -------------------------------------------------------- int __thiscall sub_5BE930(int this, int a2, int a3) { return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1604))( a2, *(_DWORD *)(this + 4), *(_DWORD *)(this + 8), 1); } //----- (005BE960) -------------------------------------------------------- void *__thiscall sub_5BE960(void *this, __int16 a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; *(_DWORD *)this = &off_6F8CD0; v3 = sub_447910((int)&unk_132577A0, a2); *((_DWORD *)v2 + 1) = v3; if ( v3 == 0 ) { sub_639100(&unk_86DDD8, (int)"SkillAction::SkillAction : Invalid skill index", v3 != 0); loc_6391B0("SkillAction::SkillAction"); } return v2; } // 6F8CD0: using guessed type int (__thiscall *off_6F8CD0)(void *, char); //----- (005BE9F0) -------------------------------------------------------- int __thiscall sub_5BE9F0(int this, int a2, int a3) { int result; // eax@1 int v4; // ecx@2 int v5; // edx@3 result = *(_DWORD *)(this + 4); if ( result ) { v4 = *(_DWORD *)(result + 4); if ( v4 ) { v5 = *(_DWORD *)a2; if ( *(_DWORD *)(v4 + 184) == 1 ) result = (*(int (__stdcall **)(int, int, _DWORD))(v5 + 2628))(result, a2, 0); else result = (*(int (__stdcall **)(int, int, _DWORD))(v5 + 2628))(result, a3, 0); } } return result; } //----- (005BEA40) -------------------------------------------------------- int __stdcall sub_5BEA40(int a1, int a2) { int result; // eax@1 int v3; // esi@4 int v4; // eax@4 result = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1); if ( (_BYTE)result != 3 ) { if ( !*(_BYTE *)(sub_4190B0(a2) + 4) || (result = sub_4190B0(a2), *(_BYTE *)(result + 4) == 1) ) { v3 = *(_DWORD *)a1; v4 = (*(int (__thiscall **)(int, _DWORD, signed int))(*(_DWORD *)a1 + 1256))(a1, 0, 1); result = (*(int (__thiscall **)(int, int, int))(v3 + 1468))(a1, a2, v4); } } return result; } //----- (005BEAA0) -------------------------------------------------------- void __stdcall sub_5BEAA0(int a1, int a2) { int v2; // eax@7 int v3; // eax@8 int v4; // eax@8 if ( a1 && a2 && (!*(_BYTE *)(sub_4190B0(a2) + 4) || *(_BYTE *)(sub_4190B0(a2) + 4) == 1) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1156))(a1) != 3 && sub_4012C0(a2) ) { v2 = sub_4012C0(a2); if ( sub_4627E0((void *)v2) ) { v3 = sub_4012C0(a2); v4 = sub_4627E0((void *)v3); sub_47B270((void *)v4, a1, a2, 0); } } } } //----- (005BEB20) -------------------------------------------------------- int __stdcall sub_5BEB20(int a1, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ebx@4 int v5; // eax@8 int v6; // edx@8 int v7; // edi@8 int v8; // edi@10 int v9; // edi@13 __int16 v10; // ax@13 __int16 v11; // ax@13 int v12; // ST18_4@13 int v13; // ST04_4@13 int v14; // eax@13 char v15; // [sp+10h] [bp-18h]@13 int v16; // [sp+1Ch] [bp-Ch]@1 int v17; // [sp+24h] [bp-4h]@13 int v18; // [sp+30h] [bp+8h]@7 int v19; // [sp+34h] [bp+Ch]@8 result = (int)&v16; v3 = a1; if ( a1 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1); if ( (_BYTE)result != 3 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 40))(a1); if ( !(_BYTE)result ) { v4 = a2; if ( a2 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1156))(a2); if ( (_BYTE)result != 3 ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 40))(a2); if ( !(_BYTE)result ) { result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3032))(a2); v18 = result; if ( result > 0 ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1628))(v3); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3); v6 = *(_DWORD *)v3; v7 = v5 - v19; if ( v5 - v19 <= v18 ) { (*(void (__thiscall **)(int, int, int, signed int, signed int))(v6 + 1468))(v3, v3, v7, 1000, 1); v8 = v18 - v7; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3040))(v4) <= v8 ) { LABEL_13: v9 = sub_401180(&off_849C18, 9, 73); *(_WORD *)(v9 + 2) = sub_4802C0(v4); v10 = sub_4802C0(v3); *(_BYTE *)(v9 + 6) &= 0xFCu; *(_WORD *)(v9 + 4) = v10; *(_DWORD *)(v9 + 7) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2024))(v3); *(_BYTE *)(v9 + 6) &= 0xFBu; *(_WORD *)(v9 + 11) = v11; *(_WORD *)(v9 + 13) = 1; sub_4287B0(&v15, &off_849C18, 15); v17 = 0; v12 = (unsigned __int16)sub_4802C0(v3); v13 = sub_552F20(v3); v14 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v3, v14, v13, 0, 0, (int)&v15, 0, v12); v17 = -1; return sub_428A70(&v15); } (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 3044))(v4, v8); } else { (*(void (__thiscall **)(int, int, int, signed int, _DWORD))(v6 + 1472))(v3, v3, v18, 1000, 0); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3044))(v4, 0); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3056))(v4); goto LABEL_13; } } } } } } } return result; } //----- (005BED10) -------------------------------------------------------- void __stdcall sub_5BED10(int a1, int a2) { signed int v2; // ebx@5 signed int v3; // edx@6 int v4; // edi@6 int v5; // ebx@7 int v6; // ebx@8 int v7; // ST10_4@10 int v8; // eax@10 int v9; // eax@10 int v10; // eax@10 signed int v11; // eax@13 int v12; // ST10_4@13 int v13; // eax@13 int v14; // eax@13 int v15; // eax@13 char v16; // [sp+10h] [bp-4Ch]@10 char v17; // [sp+14h] [bp-48h]@10 char v18; // [sp+20h] [bp-3Ch]@13 char v19; // [sp+24h] [bp-38h]@13 char v20; // [sp+30h] [bp-2Ch]@13 char v21; // [sp+38h] [bp-24h]@11 int v22; // [sp+40h] [bp-1Ch]@13 int v23; // [sp+44h] [bp-18h]@13 int v24; // [sp+48h] [bp-14h]@7 int v25; // [sp+4Ch] [bp-10h]@7 int v26; // [sp+58h] [bp-4h]@10 signed int v27; // [sp+68h] [bp+Ch]@13 if ( a1 ) { if ( a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1156))(a1) != 3 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1552))(a1) ) { v2 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1968))(a2); if ( v2 ) { v3 = (signed int)((unsigned __int64)(1374389535i64 * v2 * ((unsigned __int16)sub_427920(&unk_14D42DC0, 100) + 50)) >> 32) >> 5; v4 = v3 + ((unsigned int)v3 >> 31); if ( v2 > (unsigned __int16)sub_4011A0(&unk_14D42DC0) ) { v22 = sub_401280(a1); v23 = sub_401290(a1); LOWORD(v11) = sub_6396B0(&unk_14D42DC0, 360); v27 = v11; v12 = sub_401290(a1); v13 = sub_401280(a1); sub_4620A0((int)&v18, v13, v12); v26 = 1; sub_4614A0((int)&v18, v4); sub_45F830((int)&v19, v27); v14 = sub_417060(&v19); v22 += v14; v15 = sub_428740((int)&v19); v23 += v15; if ( sub_4BE0E0( (void *)a1, (int)&v22, v4, (int)&v20, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) (*(void (__thiscall **)(int, char *, int, signed int, _DWORD, _DWORD))(*(_DWORD *)a1 + 2600))( a1, &v20, 2 * v2, 1, 0, 0); v26 = -1; sub_461490(&v18); } else { v24 = sub_401280(a1); v25 = sub_401290(a1); v5 = sub_401280(a1); if ( v5 != sub_401280(a2) || (v6 = sub_401290(a1), v6 != sub_401290(a2)) ) { v7 = sub_552F20(a2); v8 = sub_552F20(a1); sub_4620E0((int)&v16, v8, v7); v26 = 0; sub_4614A0((int)&v16, v4); v9 = sub_417060(&v17); v24 += v9; v10 = sub_428740((int)&v17); v25 += v10; v26 = -1; sub_461490(&v16); } else { v25 += v4; } if ( sub_4BE0E0( (void *)a1, (int)&v24, v4, (int)&v21, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) (*(void (__cdecl **)(char *))(*(_DWORD *)a1 + 2600))(&v21); } } } } } } } //----- (005BEF70) -------------------------------------------------------- void __thiscall sub_5BEF70(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@3 int v5; // eax@6 int v6; // eax@7 v3 = this; if ( a2 && a3 ) { v4 = *(_DWORD *)(this + 8); if ( v4 ) { if ( v4 != 1 ) return; } else { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1264))(a3); (*(void (__thiscall **)(int, int, unsigned int, signed int))(*(_DWORD *)a3 + 1844))( a3, a2, (unsigned int)((unsigned int)(v5 * *(_DWORD *)(v3 + 4)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6, 792); } v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1268))(a3); (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)a3 + 1848))( a3, a2, (unsigned int)((unsigned int)(v6 * *(_DWORD *)(v3 + 4)) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); } } //----- (005BF000) -------------------------------------------------------- void *__thiscall sub_5BF000(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F8C54; if ( a2 & 1 ) operator delete(this); return v2; } // 6F8C54: using guessed type int (*off_6F8C54[2])(); //----- (005BF030) -------------------------------------------------------- int __thiscall sub_5BF030(void *this) { const char *v1; // edx@1 void *v2; // esi@1 int v4; // [sp-14h] [bp-1Ch]@3 int v5; // [sp-10h] [bp-18h]@3 int v6; // [sp-Ch] [bp-14h]@3 int v7; // [sp-8h] [bp-10h]@3 int v8; // [sp-4h] [bp-Ch]@3 int *v9; // [sp+4h] [bp-4h]@3 v1 = dword_86C050; v2 = this; if ( (unsigned int)dword_86C064 < 0x10 ) v1 = (const char *)&dword_86C050; v9 = &v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v4 = 0; strncpy((char *)&v4, v1, 0x14u); return sub_644CC0(*(void **)v2, v4, v5, v6, v7, v8); } // 86C064: using guessed type int dword_86C064; //----- (005BF080) -------------------------------------------------------- int __thiscall sub_5BF080(int this, int a2, int a3) { int v3; // eax@1 v3 = this + 4; if ( *(_DWORD *)(this + 24) >= 0x10u ) v3 = *(_DWORD *)v3; return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a3 + 1924))(v3); } //----- (005BF0A0) -------------------------------------------------------- void __stdcall sub_5BF0A0(int a1, int a2) { int v2; // edi@4 int v3; // eax@4 int v4; // eax@6 bool v5; // zf@6 int v6; // eax@9 void (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // edx@9 char v8; // [sp+10h] [bp-24h]@9 int v9; // [sp+30h] [bp-4h]@9 if ( a1 && a2 && *(_DWORD *)(a1 + 126) ) { v2 = *(_DWORD *)(a1 + 286); v3 = a1 + 270; if ( *(_DWORD *)(a1 + 290) >= 0x10u ) v3 = *(_DWORD *)v3; v4 = sub_4189B0(v3, (int)byte_6A492E, 0); v5 = v4 == 0; if ( !v4 ) v5 = v2 == 0; if ( !v5 ) { v6 = sub_4012C0(a1); sub_5D4D00((int)&v8, v6, a1, a2); v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a1 + 2920); v9 = 0; v7(a1, 144, &v8); v9 = -1; sub_5D4580(&v8); } } } //----- (005BF170) -------------------------------------------------------- void *__thiscall sub_5BF170(void *this, char *a2) { void *v2; // esi@1 void *v3; // ST18_4@1 int v4; // ecx@1 v2 = this; v3 = this; v4 = (int)((char *)this + 4); *(_DWORD *)v3 = &off_6F8D3C; *(_DWORD *)(v4 + 16) = 0; *(_DWORD *)(v4 + 20) = 15; *(_BYTE *)v4 = 0; sub_4241C0(v4, a2, strlen(a2)); return v2; } // 6F8D3C: using guessed type int (__thiscall *off_6F8D3C)(void *, char); //----- (005BF1F0) -------------------------------------------------------- void *__thiscall sub_5BF1F0(void *this, char a2) { void *v2; // esi@1 v2 = this; if ( *((_DWORD *)this + 6) >= 0x10u ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 6) = 15; *((_DWORD *)v2 + 5) = 0; *((_BYTE *)v2 + 4) = 0; *(_DWORD *)v2 = off_6F8C54; if ( a2 & 1 ) operator delete(v2); return v2; } // 6F8C54: using guessed type int (*off_6F8C54[2])(); //----- (005BF240) -------------------------------------------------------- int __thiscall sub_5BF240(int this) { int v1; // esi@1 signed int v2; // eax@1 const char *v3; // ecx@1 int v4; // eax@3 int v5; // edi@3 signed int v6; // esi@5 int v7; // esi@7 int result; // eax@9 int v9; // ecx@10 char v10; // cl@16 signed int v11; // esi@18 int v12; // esi@20 signed int v13; // edi@22 int v14; // ecx@25 signed int v15; // esi@27 int v16; // eax@29 int v17; // eax@32 int v18; // eax@46 int v19; // edi@49 int v20; // edi@52 bool v21; // zf@53 int v22; // [sp-18h] [bp-38h]@3 int v23; // [sp-14h] [bp-34h]@3 int v24; // [sp-10h] [bp-30h]@3 int v25; // [sp-Ch] [bp-2Ch]@3 int v26; // [sp-8h] [bp-28h]@3 signed int v27; // [sp-4h] [bp-24h]@1 int *v28; // [sp+10h] [bp-10h]@3 int v29; // [sp+1Ch] [bp-4h]@29 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = dword_86C050; v27 = v2; if ( (unsigned int)dword_86C064 < 0x10 ) v3 = (const char *)&dword_86C050; v28 = &v22; v26 = 0; v25 = 0; v24 = 0; v23 = 0; v22 = 0; strncpy((char *)&v22, v3, 0x14u); v4 = sub_6442C0(*(void **)v1, v22, v23, v24, v25, v26, v27); v5 = v4; if ( v4 ) { ++*(_DWORD *)(v1 + 4); if ( strncmp("Dispell", (const char *)(v4 + 1), 0x21u) ) { if ( strncmp("Link", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("Emotion", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("AbState", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("Skill", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("Notice", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("Die", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("GTIEffect", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("DmgAbsorb", (const char *)(v5 + 1), 0x21u) ) { if ( strncmp("Ball", (const char *)(v5 + 1), 0x21u) ) { v18 = strncmp("RestoreRate", (const char *)(v5 + 1), 0x21u); v27 = 33; if ( v18 ) { if ( !strncmp("CallLua", (const char *)(v5 + 1), v27) ) { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8D18; return result; } return 0; } sub_6390B0(&unk_86DDD8, (int)"ActionGen_OptionReader : Unsupported Action", v5 + 1); loc_6391B0("ActionGen_OptionReader : Unsupported Action"); result = operator new(4u); v21 = result == 0; } else { if ( strncmp("HP", (const char *)(v5 + 34), v27) ) { result = operator new(0xCu); if ( result ) { v19 = *(_DWORD *)(v5 + 67); *(_DWORD *)result = &off_6F8D0C; *(_DWORD *)(result + 4) = v19; *(_DWORD *)(result + 8) = 0; return result; } return 0; } if ( strncmp("SP", (const char *)(v5 + 34), 0x21u) ) { result = operator new(0xCu); if ( result ) { v20 = *(_DWORD *)(v5 + 67); *(_DWORD *)result = &off_6F8D0C; *(_DWORD *)(result + 4) = v20; *(_DWORD *)(result + 8) = 1; return result; } return 0; } sub_6390B0(&unk_86DDD8, (int)"ActionGen_OptionReader : Unsupported Action", v5 + 1); loc_6391B0("ActionGen_OptionReader : Unsupported Action"); result = operator new(4u); v21 = result == 0; } if ( !v21 ) { *(_DWORD *)result = &off_6F8D30; return result; } } else { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8D00; return result; } } } else { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8CF4; return result; } } } else { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8CE8; return result; } } } else { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8CDC; return result; } } } else { v17 = operator new(0x20u); v28 = (int *)v17; v29 = 1; if ( v17 ) return (int)sub_5BF170((void *)v17, (char *)(v5 + 34)); } } else { v15 = sub_639620(&unk_13257C80, (unsigned __int8 *)(v5 + 34)); if ( v15 == -1 ) { sub_639100(&unk_86DDD8, (int)"ActionGen_OptionReader : Invalid Skill", 0); loc_6391B0("ActionGen_OptionReader"); } v16 = operator new(8u); v28 = (int *)v16; v29 = 0; if ( v16 ) return (int)sub_5BE960((void *)v16, v15); } } else { v11 = sub_639620(&unk_877F50, (unsigned __int8 *)(v5 + 34)); if ( v11 == -1 ) { sub_639100(&unk_86DDD8, (int)"ActionGen_OptionReader-Abstate : Invalid ABState", 0); loc_6391B0("ActionGen_OptionReader"); } v12 = sub_4012D0((int)&unk_877138, v11); if ( v12 == 0 ) { sub_639100(&unk_86DDD8, (int)"ActionGen_OptionReader-Abstate : Invalid ABState", 0); loc_6391B0("ActionGen_OptionReader"); } v13 = *(_DWORD *)(v5 + 67); if ( (unsigned int)v13 <= 1 ) v13 = 1; result = operator new(0xCu); if ( result ) { v14 = *(_DWORD *)(*(_DWORD *)v12 + 34); *(_DWORD *)result = &off_6F8C78; *(_DWORD *)(result + 4) = v14; *(_DWORD *)(result + 8) = v13; return result; } } } else { result = operator new(8u); if ( result ) { v10 = *(_BYTE *)(v5 + 67); *(_DWORD *)result = &off_6F8C6C; *(_BYTE *)(result + 4) = v10; return result; } } } else { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8D24; return result; } } } else { v6 = sub_639620(&unk_877F50, (unsigned __int8 *)(v5 + 34)); if ( v6 == -1 ) { sub_639100(&unk_86DDD8, (int)"ActionGen_OptionReader-Dispell : Invalid ABState", 0); loc_6391B0("ActionGen_OptionReader"); } v7 = sub_4012D0((int)&unk_877138, v6); if ( v7 == 0 ) { sub_639100(&unk_86DDD8, (int)"ActionGen_OptionReader-Dispell : Invalid ABState", 0); loc_6391B0("ActionGen_OptionReader"); } result = operator new(8u); if ( result ) { v9 = *(_DWORD *)(*(_DWORD *)v7 + 34); *(_DWORD *)result = &off_6F8C60; *(_DWORD *)(result + 4) = v9; return result; } } } return 0; } // 6F8C60: using guessed type int (__thiscall *off_6F8C60)(void *, char); // 6F8C6C: using guessed type int (__thiscall *off_6F8C6C)(void *, char); // 6F8C78: using guessed type int (__thiscall *off_6F8C78)(void *, char); // 6F8CDC: using guessed type int (__thiscall *off_6F8CDC)(void *, char); // 6F8CE8: using guessed type int (__thiscall *off_6F8CE8)(void *, char); // 6F8CF4: using guessed type int (__thiscall *off_6F8CF4)(void *, char); // 6F8D00: using guessed type int (__thiscall *off_6F8D00)(void *, char); // 6F8D0C: using guessed type int (__thiscall *off_6F8D0C)(void *, char); // 6F8D18: using guessed type int (__thiscall *off_6F8D18)(void *, char); // 6F8D24: using guessed type int (__thiscall *off_6F8D24)(void *, char); // 6F8D30: using guessed type int (__thiscall *off_6F8D30)(void *, char); // 86C064: using guessed type int dword_86C064; //----- (005BF7F0) -------------------------------------------------------- int __thiscall sub_5BF7F0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 int result; // eax@6 unsigned int v10; // ecx@7 signed int v11; // edi@7 unsigned int v12; // esi@11 v8 = this; if ( !a2 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() || !a3 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 768))() ) { result = 2; } else { if ( a4 ) return 0; v10 = *((_DWORD *)v8 + 1); v11 = 1; if ( v10 || *((_DWORD *)v8 + 2) ) { if ( dword_14D129E8 - a7 < v10 ) return 0; v12 = *((_DWORD *)v8 + 2); if ( v12 < dword_14D129E8 - a7 ) { if ( v10 < v12 ) v11 = 0; } } result = v11 | 2; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005BF880) -------------------------------------------------------- bool __thiscall sub_5BF880(int this) { return *(_DWORD *)(this + 4) || *(_DWORD *)(this + 8); } //----- (005BF8A0) -------------------------------------------------------- signed int __thiscall sub_5BF8A0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 signed int result; // eax@5 unsigned int v10; // ecx@6 int v11; // edi@6 signed int v12; // eax@6 unsigned int v13; // esi@9 v8 = this; if ( a2 && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() && a3 && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 768))() ) { result = 0; if ( a4 != 3 ) return result; v10 = *((_DWORD *)v8 + 2); LOBYTE(result) = a5 == *((_DWORD *)v8 + 1); v11 = (unsigned __int16)result; v12 = 0; if ( !v10 && !*((_DWORD *)v8 + 3) ) return v11 | v12; if ( dword_14D129E8 - a7 >= v10 ) { v13 = *((_DWORD *)v8 + 3); if ( v13 >= dword_14D129E8 - a7 || v10 >= v13 ) return v11 | v12; v12 = 2; } v11 = 0; return v11 | v12; } return 2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005BF930) -------------------------------------------------------- signed int __thiscall sub_5BF930(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 unsigned __int16 v10; // cx@7 signed int v11; // eax@7 int v12; // edi@7 unsigned int v13; // ecx@7 unsigned int v14; // esi@10 v8 = this; if ( a2 && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() && a3 && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 768))() ) { if ( a4 != 2 ) return 0; HIBYTE(v10) = 0; LOBYTE(v10) = a5 == *((_WORD *)v8 + 2); v11 = 0; v12 = v10; v13 = *((_DWORD *)v8 + 2); if ( !v13 && !*((_DWORD *)v8 + 3) ) return v12 | v11; if ( dword_14D129E8 - a7 >= v13 ) { v14 = *((_DWORD *)v8 + 3); if ( v14 >= dword_14D129E8 - a7 || v13 >= v14 ) return v12 | v11; v11 = 2; } v12 = 0; return v12 | v11; } return 2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005BF9C0) -------------------------------------------------------- signed int __stdcall sub_5BF9C0(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { signed int result; // eax@5 if ( !a1 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a1 + 768))() || !a2 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() ) { result = 2; } else { result = 1; if ( a3 != 1 ) result = 0; } return result; } //----- (005BFA10) -------------------------------------------------------- signed int __thiscall sub_5BFA10(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // esi@1 unsigned __int16 v10; // cx@7 signed int v11; // eax@7 int v12; // edi@7 unsigned int v13; // ecx@7 unsigned int v14; // esi@10 v8 = this; if ( a2 && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() && a3 && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a3 + 768))() ) { if ( a4 != 4 ) return 0; HIBYTE(v10) = 0; LOBYTE(v10) = a5 == *((_BYTE *)v8 + 4); v11 = 0; v12 = v10; v13 = *((_DWORD *)v8 + 2); if ( !v13 && !*((_DWORD *)v8 + 3) ) return v12 | v11; if ( dword_14D129E8 - a7 >= v13 ) { v14 = *((_DWORD *)v8 + 3); if ( v14 >= dword_14D129E8 - a7 || v13 >= v14 ) return v12 | v11; v11 = 2; } v12 = 0; return v12 | v11; } return 2; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005BFAA0) -------------------------------------------------------- signed int __stdcall sub_5BFAA0(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { int v8; // eax@7 int v9; // esi@7 __int16 v10; // bx@9 __int16 v11; // di@11 int (__thiscall *v12)(_DWORD); // eax@11 if ( !a1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 768))(a1) == 1 ) return 2; if ( !a2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 768))(a2) == 1 ) return 2; if ( a3 != 5 ) return 0; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2480))(a1); v9 = v8; if ( !v8 ) return 2; v10 = sub_4802C0(v8); if ( v10 == sub_4802C0(a2) ) return 1; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1364))(v9) == -1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1376))(v9) == -1 ) return 0; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1376))(a2); v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1376); } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1364))(a2); v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1364); } if ( (unsigned __int16)v12(v9) == v11 ) return 1; return 0; } //----- (005BFBA0) -------------------------------------------------------- signed int __stdcall sub_5BFBA0(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { int v8; // eax@9 int v9; // esi@9 __int16 v10; // bx@11 __int16 v11; // di@13 int (__thiscall *v12)(_DWORD); // eax@13 if ( !a1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 768))(a1) == 1 ) return 2; if ( !a2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 768))(a2) == 1 ) return 2; if ( a3 != 6 || !a7 || !sub_4010C0(a7) ) return 0; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2480))(a1); v9 = v8; if ( !v8 ) return 2; v10 = sub_4802C0(v8); if ( v10 == sub_4802C0(a2) ) return 1; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1364))(v9) == -1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1376))(v9) == -1 ) return 0; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1376))(a2); v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1376); } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1364))(a2); v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1364); } if ( (unsigned __int16)v12(v9) == v11 ) return 1; return 0; } //----- (005BFCB0) -------------------------------------------------------- signed int __stdcall sub_5BFCB0(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { signed int result; // eax@2 if ( a3 == 8 ) { if ( a1 && a2 && (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() != 1 ) result = a4 == sub_4802C0(a1); else result = 2; } else { result = 0; } return result; } //----- (005BFD10) -------------------------------------------------------- signed int __thiscall sub_5BFD10(void *this, __int64 a2, int a3, int a4, int a5, int a6, int a7) { int v7; // edi@1 signed int result; // eax@2 int v9; // esi@4 int v10; // ebx@9 signed int v11; // ST04_4@9 int v12; // edi@9 int v13; // eax@9 int v14; // eax@9 void *v15; // [sp+8h] [bp-4h]@1 __int64 v16; // [sp+14h] [bp+8h]@9 v7 = a2; v15 = this; if ( !(_DWORD)a2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 768))(a2) ) { result = 2; } else { v9 = HIDWORD(a2); if ( HIDWORD(a2) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*HIDWORD(a2) + 768))(HIDWORD(a2)) != 1 ) { if ( a3 == 7 ) { v16 = 0i64; v10 = sub_401290(v7); v11 = v10 - sub_401290(v9); v12 = sub_401280(v7); v13 = sub_401280(v9); v14 = sub_4011C0(&unk_AF09DA8, v12 - v13, v11); if ( v14 <= *((_DWORD *)v15 + 2) ) { if ( v14 <= *((_DWORD *)v15 + 1) ) HIDWORD(v16) = 1; result = HIDWORD(v16); } else { result = 2; } } else { result = 0; } } else { result = 2; } } return result; } //----- (005BFDF0) -------------------------------------------------------- bool __thiscall sub_5BFDF0(void *this, int a2) { void *v2; // esi@1 bool v3; // bl@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"NoneCondition::check"); dword_7508B8[dword_750CB8] = (int)"NoneCondition::check"; dword_750AB8[dword_750CB8++] = -1; v3 = !*((_DWORD *)v2 + 1) && !*((_DWORD *)v2 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"NoneCondition::check"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BFE60) -------------------------------------------------------- bool __thiscall sub_5BFE60(void *this, int a2) { void *v2; // esi@1 bool v3; // bl@1 int v5; // [sp+0h] [bp-1Ch]@0 int v6; // [sp+4h] [bp-18h]@0 int v7; // [sp+8h] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AbStateCondition::check"); dword_7508B8[dword_750CB8] = (int)"AbStateCondition::check"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__stdcall **)(_DWORD, int, int, int, _DWORD))(*(_DWORD *)a2 + 996))( *((_DWORD *)v2 + 1), v5, v6, v7, "AbStateCondition::check") != 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AbStateCondition::check"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005BFF20) -------------------------------------------------------- bool __thiscall sub_5BFF20(void *this, int a2) { void *v2; // esi@1 unsigned __int8 v3; // al@1 unsigned __int8 v4; // cl@1 unsigned __int8 v5; // dl@2 bool v6; // bl@3 bool result; // al@5 v2 = this; sub_4675D0((int)&unk_D020420, (int)"LvGapCondition::check"); dword_7508B8[dword_750CB8] = (int)"LvGapCondition::check"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (**)(void))(*(_DWORD *)a2 + 1240))(); v4 = *((_BYTE *)v2 + 4); if ( v4 > v3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"LvGapCondition::check"); result = 0; } else { v5 = *((_BYTE *)v2 + 5); if ( v5 >= v4 ) v6 = v3 <= v5; else v6 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"LvGapCondition::check"); result = v6; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C0010) -------------------------------------------------------- signed int __stdcall sub_5C0010(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { return sub_5C9990(a1, a2, a3, a4, a5, a6, a7); } //----- (005C0030) -------------------------------------------------------- char __thiscall sub_5C0030(void *this, int a2) { void *v2; // edi@1 char v3; // bl@1 int v4; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ClassCondition::check"); dword_7508B8[dword_750CB8] = (int)"ClassCondition::check"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v4 = (*(int (**)(void))(*(_DWORD *)a2 + 1180))(); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 84))(v4, *((_BYTE *)v2 + 4)) || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 56))(v4) == *((_BYTE *)v2 + 4) ) v3 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ClassCondition::check"); return v3; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C0100) -------------------------------------------------------- int __thiscall sub_5C0100(int this, __int16 a2, int a3, int a4) { *(_WORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = (unsigned int)((unsigned int)(10 * a3) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)this = &off_6F8F68; *(_DWORD *)(this + 12) = (unsigned int)((unsigned int)(10 * a4) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; return this; } // 6F8F68: using guessed type int (__thiscall *off_6F8F68)(void *, char); //----- (005C0150) -------------------------------------------------------- void *__thiscall sub_5C0150(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = off_6F8E90; sub_5C9980(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F8E90: using guessed type int (*off_6F8E90[5])(); //----- (005C0180) -------------------------------------------------------- int __thiscall sub_5C0180(int this, char a2, int a3, int a4) { *(_BYTE *)(this + 4) = a2; *(_DWORD *)(this + 8) = (unsigned int)((unsigned int)(10 * a3) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)this = &off_6F8F80; *(_DWORD *)(this + 12) = (unsigned int)((unsigned int)(10 * a4) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; return this; } // 6F8F80: using guessed type int (__thiscall *off_6F8F80)(void *, char); //----- (005C01C0) -------------------------------------------------------- int __thiscall sub_5C01C0(void *this) { const char *v1; // edx@1 void *v2; // esi@1 int v4; // [sp-14h] [bp-1Ch]@3 int v5; // [sp-10h] [bp-18h]@3 int v6; // [sp-Ch] [bp-14h]@3 int v7; // [sp-8h] [bp-10h]@3 int v8; // [sp-4h] [bp-Ch]@3 int *v9; // [sp+4h] [bp-4h]@3 v1 = dword_86C298; v2 = this; if ( (unsigned int)dword_86C2AC < 0x10 ) v1 = (const char *)&dword_86C298; v9 = &v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v4 = 0; strncpy((char *)&v4, v1, 0x14u); return sub_644CC0(*(void **)v2, v4, v5, v6, v7, v8); } // 86C2AC: using guessed type int dword_86C2AC; //----- (005C0210) -------------------------------------------------------- bool __thiscall sub_5C0210(void *this, int a2) { void *v2; // ebx@1 int v3; // eax@2 char v4; // al@5 int v5; // esi@6 bool result; // al@7 int v7; // eax@10 int v8; // eax@11 int v9; // eax@11 v2 = this; if ( !a2 ) goto LABEL_14; v3 = (**(int (__thiscall ***)(_DWORD))a2)(a2); if ( v3 ) { while ( (_UNKNOWN *)v3 != &unk_132541F4 ) { v3 = *(_DWORD *)(v3 + 4); if ( !v3 ) goto LABEL_5; } v4 = 1; } else { LABEL_5: v4 = 0; } v5 = v4 != 0 ? a2 : 0; if ( (v4 != 0 ? a2 : 0) && sub_4012C0(v4 != 0 ? a2 : 0) && (v7 = sub_4012C0(v5), sub_4627E0((void *)v7)) ) { v8 = sub_4012C0(v5); v9 = sub_4627E0((void *)v8); result = *((_DWORD *)v2 + 1) == sub_4780E0(v9, v5); } else { LABEL_14: result = 0; } return result; } //----- (005C02A0) -------------------------------------------------------- signed int __thiscall sub_5C02A0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { void *v8; // edi@1 signed int result; // eax@6 int v10; // eax@7 int v11; // esi@7 int v12; // eax@8 int v13; // eax@9 int v14; // eax@9 v8 = this; if ( !a2 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 768))() || !a3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 768))(a3) ) result = 2; else result = !a4 && (v10 = sub_409730(a3), (v11 = v10) != 0) && (v12 = sub_4012C0(v10), sub_4627E0((void *)v12)) && (v13 = sub_4012C0(v11), v14 = sub_4627E0((void *)v13), *((_DWORD *)v8 + 1) == sub_4780E0(v14, v11)); return result; } //----- (005C0340) -------------------------------------------------------- int __stdcall sub_5C0340(const char *a1, unsigned __int8 *a2, int a3, int a4, int a5, int a6, int a7) { int v7; // edi@1 int v8; // ebx@3 signed int v9; // esi@7 int v10; // esi@9 int result; // eax@11 unsigned int i; // edi@18 int v13; // esi@21 char v14; // cl@24 signed int v15; // esi@27 int v16; // eax@29 int v17; // eax@35 int v18; // ecx@55 v7 = (int)a1; if ( strncmp("Term", a1, 0x21u) ) { v8 = a3; } else { a2 = (unsigned __int8 *)(a5 + 108); v7 = a5 + 75; do { v8 = *(_DWORD *)(a5 + 141); a7 = *(_DWORD *)(a5 + 71); a6 = *(_DWORD *)(a5 + 67); a4 = *(_DWORD *)(a5 + 145); } while ( !strncmp("Term", (const char *)v7, 0x21u) ); } if ( !strncmp("AbState", (const char *)v7, 0x21u) ) { v9 = sub_639620(&unk_877F50, a2); if ( v9 == -1 ) { sub_639100(&unk_86DDD8, (int)"CondGen_OptionReader : Invalid ABState", 0); loc_6391B0("CondGen_OptionReader"); } v10 = sub_4012D0((int)&unk_877138, v9); if ( v10 == 0 ) { sub_639100(&unk_86DDD8, (int)"CondGen_OptionReader : Invalid ABState", 0); loc_6391B0("CondGen_OptionReader"); } result = operator new(0x10u); if ( result ) { *(_DWORD *)(result + 4) = *(_DWORD *)(*(_DWORD *)v10 + 34); *(_DWORD *)(result + 8) = (unsigned int)((unsigned int)(10 * a6) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)result = &off_6F8ED8; *(_DWORD *)(result + 12) = (unsigned int)((unsigned int)(10 * a7) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; return result; } return 0; } if ( !strncmp("LvGap", (const char *)v7, 0x21u) ) { result = operator new(8u); if ( result ) { *(_BYTE *)(result + 4) = v8; *(_DWORD *)result = &off_6F8F08; *(_BYTE *)(result + 5) = a4; return result; } return 0; } if ( strncmp("Class", (const char *)v7, 0x21u) ) { if ( !strncmp("Skill", (const char *)v7, 0x21u) ) { v15 = sub_639620(&unk_13257C80, a2); if ( v15 == -1 ) { sub_639100(&unk_86DDD8, (int)"CondGen_OptionReader : Invalid Skill", 0); loc_6391B0("CondGen_OptionReader"); } v16 = operator new(0x10u); if ( v16 ) return sub_5C0100(v16, v15, a6, a7); return 0; } if ( !strncmp("Die", (const char *)v7, 0x21u) ) { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8FE0; return result; } return 0; } if ( !strncmp("Emotion", (const char *)v7, 0x21u) ) { v17 = operator new(0x10u); if ( v17 ) return sub_5C0180(v17, v8, a6, a7); return 0; } if ( strncmp("Default", (const char *)v7, 0x21u) && strncmp("None", (const char *)v7, 0x21u) ) { if ( !strncmp("GTITeam", (const char *)v7, 0x21u) ) { result = operator new(0xCu); if ( result ) { *(_DWORD *)(result + 4) = v8; *(_DWORD *)result = &off_6F8F98; return result; } return 0; } if ( !strncmp("DmgAbsorb", (const char *)v7, 0x21u) ) { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F8FF8; return result; } return 0; } if ( !strncmp("CheckCycleParty", (const char *)v7, 0x21u) ) { result = operator new(8u); if ( result ) { *(_DWORD *)(result + 4) = v8; *(_DWORD *)result = &off_6F8FB0; return result; } return 0; } if ( !strncmp("AttackMob", (const char *)v7, 0x21u) ) { result = operator new(4u); if ( result ) { *(_DWORD *)result = &off_6F9010; return result; } return 0; } if ( !strncmp("Location", (const char *)v7, 0x21u) ) { result = operator new(0xCu); if ( result ) { *(_DWORD *)(result + 4) = v8; *(_DWORD *)result = &off_6F8FC8; *(_DWORD *)(result + 8) = a4; return result; } return 0; } sub_6390B0(&unk_86DDD8, (int)"CondGen_OptionReader::createCondition_ : Unsupported Condition", v7); } LABEL_55: v18 = operator new(0xCu); if ( v18 ) { *(_DWORD *)(v18 + 4) = (unsigned int)((unsigned int)(10 * a6) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; *(_DWORD *)v18 = &off_6F8EA8; *(_DWORD *)(v18 + 8) = (unsigned int)((unsigned int)(10 * a7) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; return v18; } return 0; } for ( i = 0; ; ++i ) { if ( !dword_1325CBFC || i >= *(_DWORD *)(dword_1325CBFC + 40) ) { sub_6390B0(&unk_86DDD8, (int)"CondGen_OptionReader : Invalid Class Name", (int)a2); loc_6391B0("CondGen_OptionReader"); goto LABEL_55; } v13 = sub_626BC0((int)&unk_1325CBC8, i); if ( !strncmp((const char *)(v13 + 5), (const char *)a2, 0x10u) ) break; } result = operator new(8u); if ( !result ) return 0; v14 = *(_BYTE *)v13; *(_DWORD *)result = &off_6F8F38; *(_BYTE *)(result + 4) = v14; return result; } // 6F8EA8: using guessed type int (__thiscall *off_6F8EA8)(void *, char); // 6F8ED8: using guessed type int (__thiscall *off_6F8ED8)(void *, char); // 6F8F08: using guessed type int (__thiscall *off_6F8F08)(void *, char); // 6F8F38: using guessed type int (__thiscall *off_6F8F38)(void *, char); // 6F8F98: using guessed type int (__thiscall *off_6F8F98)(void *, char); // 6F8FB0: using guessed type int (__thiscall *off_6F8FB0)(void *, char); // 6F8FC8: using guessed type int (__thiscall *off_6F8FC8)(void *, char); // 6F8FE0: using guessed type int (__thiscall *off_6F8FE0)(void *, char); // 6F8FF8: using guessed type int (__thiscall *off_6F8FF8)(void *, char); // 6F9010: using guessed type int (__thiscall *off_6F9010)(void *, char); // 1325CBFC: using guessed type int dword_1325CBFC; //----- (005C07E0) -------------------------------------------------------- int __thiscall sub_5C07E0(int this) { int v1; // esi@1 int v2; // eax@1 const char *v3; // ecx@1 int v4; // eax@3 int result; // eax@4 int v6; // [sp-18h] [bp-24h]@3 int v7; // [sp-14h] [bp-20h]@3 int v8; // [sp-10h] [bp-1Ch]@3 int v9; // [sp-Ch] [bp-18h]@3 int v10; // [sp-8h] [bp-14h]@3 int v11; // [sp-4h] [bp-10h]@1 int *v12; // [sp+8h] [bp-4h]@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = dword_86C298; v11 = v2; if ( (unsigned int)dword_86C2AC < 0x10 ) v3 = (const char *)&dword_86C298; v12 = &v6; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; strncpy((char *)&v6, v3, 0x14u); v4 = sub_6442C0(*(void **)v1, v6, v7, v8, v9, v10, v11); if ( v4 ) { ++*(_DWORD *)(v1 + 4); result = sub_5C0340( (const char *)(v4 + 1), (unsigned __int8 *)(v4 + 34), *(_DWORD *)(v4 + 67), *(_DWORD *)(v4 + 71), v4, 0, 0); } else { result = 0; } return result; } // 86C2AC: using guessed type int dword_86C2AC; //----- (005C0860) -------------------------------------------------------- void *__thiscall sub_5C0860(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_427BE0(this); *((_DWORD *)v2 + 1) = a2; *(_DWORD *)v2 = &off_6F9164; return v2; } // 6F9164: using guessed type int (__stdcall *off_6F9164)(int, int, int); //----- (005C0880) -------------------------------------------------------- void __thiscall sub_5C0880(void *this) { *(_DWORD *)this = &off_6F9164; sub_427EB0(this); } // 6F9164: using guessed type int (__stdcall *off_6F9164)(int, int, int); //----- (005C0890) -------------------------------------------------------- int __cdecl sub_5C0890(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 int result; // eax@3 int v7; // ecx@3 int v8; // [sp+8h] [bp-8h]@1 int i; // [sp+Ch] [bp-4h]@1 v5 = a2; v8 = a4; for ( i = a5; v5 != a3; v5 += 24 ) sub_5C2280(&v8, v5); result = a1; v7 = i; *(_DWORD *)a1 = v8; *(_DWORD *)(a1 + 4) = v7; return result; } //----- (005C08E0) -------------------------------------------------------- char __thiscall sub_5C08E0(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x3FFFFFFF ) sub_65178B((int)"vector too long"); v4 = sub_5ADF10(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 4 * a2; result = 1; } else { result = 0; } return result; } //----- (005C0930) -------------------------------------------------------- char *__stdcall sub_5C0930(const void *a1, int a2, void *a3) { return (char *)memmove_0(a3, a1, 4 * ((a2 - (signed int)a1) >> 2)) + 4 * ((a2 - (signed int)a1) >> 2); } //----- (005C0960) -------------------------------------------------------- char __thiscall sub_5C0960(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 int v5; // esi@1 void *v6; // ST10_4@5 void (__thiscall *v7)(_DWORD, _DWORD); // eax@5 int v8; // eax@5 int v9; // ebx@5 int v10; // eax@5 char v12; // [sp+10h] [bp-38h]@5 char v13; // [sp+20h] [bp-28h]@5 char v14; // [sp+28h] [bp-20h]@5 char v15; // [sp+30h] [bp-18h]@5 char v16; // [sp+38h] [bp-10h]@1 int v17; // [sp+44h] [bp-4h]@1 int v18; // [sp+54h] [bp+Ch]@5 v4 = this; sub_4026A0(&v16, 0, (int)"NeighborhoodChecker::ali_Work", -1); v5 = a3; v17 = 0; if ( a3 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 768))(a3) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) == 2 && !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 2620))(a3, a2) ) { v6 = sub_5C99A0(&v12, a2, 0); v7 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 2604); LOBYTE(v17) = 1; v7(a3, v6); LOBYTE(v17) = 2; nullsub_2(&v13); LOBYTE(v17) = 0; sub_5C9980(&v12); v8 = *((_DWORD *)v4 + 1); v9 = *(_DWORD *)(v8 + 4); v18 = *(_DWORD *)v8; v10 = sub_5C21A0((int)&v15, a2, v5); sub_5C0890((int)&v14, v18, v9, *(_DWORD *)v10, *(_DWORD *)(v10 + 4)); } v17 = -1; sub_4026F0((int *)&v16); return 1; } //----- (005C0AA0) -------------------------------------------------------- int __thiscall sub_5C0AA0(int this, int a2) { int v2; // esi@1 signed int v3; // edi@1 unsigned int v4; // edi@1 int v5; // eax@4 int v6; // ecx@4 int v7; // ST00_4@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@1 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; v10 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = *(_DWORD *)(a2 + 4) - *(_DWORD *)a2; *(_DWORD *)this = 0; v4 = v3 >> 2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v4 ) { if ( v4 > 0x3FFFFFFF ) sub_65178B((int)"vector too long"); v5 = sub_5ADF10(v4); *(_DWORD *)v2 = v5; *(_DWORD *)(v2 + 4) = v5; *(_DWORD *)(v2 + 8) = v5 + 4 * v4; v6 = *(_DWORD *)(a2 + 4); v7 = *(_DWORD *)a2; v12 = 0; *(_DWORD *)(v2 + 4) = sub_4AF4A0(v7, v6, v5); } return v2; } //----- (005C0B4F) -------------------------------------------------------- void __usercall sub_5C0B4F(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005C0B70) -------------------------------------------------------- int __thiscall sub_5C0B70(int this) { int v1; // ebx@1 int v2; // esi@1 int i; // edi@2 int result; // eax@5 v1 = this; v2 = *(_DWORD *)(this + 8); if ( v2 ) { for ( i = *(_DWORD *)(this + 12); v2 != i; v2 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v2)(v2, 0); operator delete(*(void **)(v1 + 8)); } result = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; return result; } //----- (005C0BB0) -------------------------------------------------------- void __cdecl sub_5C0BB0(int a1, unsigned int a2, char a3, int a4, void *a5, void *a6) { unsigned int v6; // esi@1 int v7; // eax@2 void *v8; // esi@5 void *v9; // edi@6 char v10; // [sp+10h] [bp-24h]@2 void *v11; // [sp+18h] [bp-1Ch]@2 int v12; // [sp+1Ch] [bp-18h]@4 int v13; // [sp+20h] [bp-14h]@4 int v14; // [sp+30h] [bp-4h]@1 v6 = a2; v14 = 0; if ( a2 ) { do { v7 = sub_5C2410((int)&a3, (int)&v10); *(_DWORD *)(a1 + 4) = *(_DWORD *)(v7 + 4); LOBYTE(v14) = 1; sub_5D1B10((void *)(a1 + 8), v7 + 8); LOBYTE(v14) = 0; if ( v11 ) operator delete(v11); v11 = 0; v12 = 0; v13 = 0; sub_5C9980(&v10); a1 += 24; --v6; } while ( v6 > 0 ); } v8 = a5; v14 = -1; if ( a5 ) { v9 = a6; if ( a5 != a6 ) { do { (**(void (__thiscall ***)(void *, _DWORD))v8)(v8, 0); v8 = (char *)v8 + 24; } while ( v8 != v9 ); v8 = a5; } operator delete(v8); } } //----- (005C0C80) -------------------------------------------------------- int __cdecl sub_5C0C80(int a1, int a2, int a3) { int v3; // edi@2 int v4; // esi@2 int result; // eax@4 if ( a1 == a2 ) { result = a3; } else { v3 = a3; v4 = a1 + 8; do { *(_DWORD *)(v3 + 4) = *(_DWORD *)(v4 - 4); sub_5D1B10((void *)(v3 + 8), v4); v4 += 24; v3 += 24; } while ( v4 - 8 != a2 ); result = v3; } return result; } //----- (005C0CC0) -------------------------------------------------------- void *__thiscall sub_5C0CC0(void *this, char a2) { void *v2; // esi@1 v2 = this; if ( *((_DWORD *)this + 2) ) operator delete(*((void **)this + 2)); *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; *((_DWORD *)v2 + 4) = 0; sub_5C9980(v2); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005C0D50) -------------------------------------------------------- int __thiscall sub_5C0D50(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // eax@2 int v7; // edi@2 int v8; // ebx@2 int i; // esi@2 int v10; // [sp+4h] [bp-4h]@1 result = a2; v5 = this; v10 = this; *(_DWORD *)a2 = a3; if ( a3 != a4 ) { v6 = sub_5C0C80(a4, *(_DWORD *)(this + 4), a3); v7 = *(_DWORD *)(v5 + 4); v8 = v6; for ( i = v6; i != v7; i += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); *(_DWORD *)(v10 + 4) = v8; result = a2; } return result; } //----- (005C0DB0) -------------------------------------------------------- int __cdecl sub_5C0DB0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@4 int v7; // [sp+0h] [bp-24h]@1 int v8; // [sp+10h] [bp-14h]@1 int *v9; // [sp+14h] [bp-10h]@1 int v10; // [sp+20h] [bp-4h]@1 v9 = &v7; v3 = a3; v4 = a1; v8 = a3; v10 = 0; while ( v4 != a2 ) { if ( v3 ) { *(_DWORD *)v3 = &off_6F918C; v5 = *(_DWORD *)(v4 + 4); LOBYTE(v10) = 2; *(_DWORD *)(v3 + 4) = v5; sub_5C0AA0(v3 + 8, v4 + 8); } v3 += 24; LOBYTE(v10) = 0; v4 += 24; } return v3; } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); //----- (005C0E60) -------------------------------------------------------- void __cdecl sub_5C0E60(int a1, unsigned int a2) { int v2; // esi@1 unsigned int v3; // edi@1 int v4; // eax@3 int v5; // [sp+0h] [bp-3Ch]@1 char v6; // [sp+10h] [bp-2Ch]@3 void *v7; // [sp+18h] [bp-24h]@5 int v8; // [sp+1Ch] [bp-20h]@7 int v9; // [sp+20h] [bp-1Ch]@7 int v10; // [sp+28h] [bp-14h]@1 int *v11; // [sp+2Ch] [bp-10h]@1 int v12; // [sp+38h] [bp-4h]@1 v11 = &v5; v2 = a1; v3 = a2; v10 = a1; v12 = 0; while ( v3 > 0 ) { v4 = sub_5C23B0((int)&v6); if ( v2 ) { *(_DWORD *)v2 = &off_6F918C; *(_DWORD *)(v2 + 4) = *(_DWORD *)(v4 + 4); LOBYTE(v12) = 3; sub_5C0AA0(v2 + 8, v4 + 8); } LOBYTE(v12) = 0; if ( v7 ) operator delete(v7); v7 = 0; v8 = 0; v9 = 0; sub_5C9980(&v6); --v3; v2 += 24; } } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); //----- (005C0F40) -------------------------------------------------------- int __cdecl sub_5C0F40(int a1, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v6; // [sp+0h] [bp-2Ch]@1 int v7; // [sp+10h] [bp-1Ch]@3 int v8; // [sp+14h] [bp-18h]@3 int v9; // [sp+18h] [bp-14h]@1 int *v10; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [bp-4h]@1 v10 = &v6; v3 = a3; v4 = a1; v9 = a3; v11 = 0; while ( v4 != a2 ) { v8 = v3; v7 = v3; if ( v3 ) { *(_DWORD *)v3 = &off_6F918C; *(_DWORD *)(v3 + 4) = *(_DWORD *)(v4 + 4); LOBYTE(v11) = 2; sub_5C0AA0(v3 + 8, v4 + 8); v4 = a1; } v3 += 24; v4 += 24; LOBYTE(v11) = 0; a1 = v4; } return v3; } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); //----- (005C1000) -------------------------------------------------------- int __cdecl sub_5C1000(int a1, int a2) { int v2; // esi@1 int i; // edi@2 int result; // eax@5 v2 = *(_DWORD *)(a2 + 4); if ( v2 ) { for ( i = *(_DWORD *)(a2 + 8); v2 != i; v2 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v2)(v2, 0); operator delete(*(void **)(a2 + 4)); } result = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; return result; } //----- (005C1050) -------------------------------------------------------- int __thiscall sub_5C1050(int this, int a2, char a3, int a4, char *a5) { unsigned int v5; // eax@1 char *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 char *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 char *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_CCCCCCB ) { sub_5C1000(this + 13, (int)(a5 + 12)); operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 32) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 32) ) { if ( v10 == *(char **)(v11 + 8) ) { v10 = (char *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 33) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(char **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(char **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 33) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 32) = 1; *(_BYTE *)(v13 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v10 = *(char **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 32) ) { if ( v10 == *(char **)v11 ) { v10 = (char *)*((_DWORD *)v10 + 1); v23 = *(char **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 33) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(char **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(char **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 33) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 32) = 1; *(_BYTE *)(v22 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v10 = *(char **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 32) = 1; return result; } //----- (005C1280) -------------------------------------------------------- int __thiscall sub_5C1280(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // edi@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edx@4 void *v8; // ecx@4 signed int v9; // edx@4 int v10; // ebx@4 void *i; // edi@5 int v12; // [sp+0h] [bp-28h]@1 int v13; // [sp+10h] [bp-18h]@4 int v14; // [sp+14h] [bp-14h]@4 int *v15; // [sp+18h] [bp-10h]@1 int v16; // [sp+24h] [bp-4h]@4 v15 = &v12; v2 = this; if ( a2 > (unsigned int)&unk_AAAAAAA ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 24; if ( result < a2 ) { v4 = sub_43EF20(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v13 = v4; v16 = 0; sub_5C0DB0((int)v6, v5, v4); v7 = *(_DWORD *)(v2 + 4); v8 = *(void **)v2; v14 = v7; v9 = (signed int)((unsigned __int64)(715827883i64 * (v7 - (signed int)v8)) >> 32) >> 2; v10 = v9 + ((unsigned int)v9 >> 31); v16 = -1; if ( v8 ) { for ( i = v8; i != (void *)v14; i = (char *)i + 24 ) (**(void (__thiscall ***)(void *, _DWORD))i)(i, 0); operator delete(*(void **)v2); v4 = v13; } result = 3 * v10; *(_DWORD *)(v2 + 8) = v4 + 24 * a2; *(_DWORD *)(v2 + 4) = v4 + 24 * v10; *(_DWORD *)v2 = v4; } return result; } //----- (005C138B) -------------------------------------------------------- void __usercall sub_5C138B(int a1) { operator delete(*(void **)(a1 - 24)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005C13B0) -------------------------------------------------------- int __thiscall sub_5C13B0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int v14; // eax@35 int i; // ecx@36 int v16; // eax@38 int v17; // esi@59 int j; // edi@60 unsigned int v19; // eax@63 int result; // eax@65 int v21; // [sp+10h] [bp-8h]@3 void *v22; // [sp+14h] [bp-4h]@1 v3 = a3; v22 = this; if ( *(_BYTE *)(a3 + 33) ) sub_6517D8((int)"invalid map/set iterator"); v21 = a3; sub_647B50(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 33) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 33) ) *(_DWORD *)(v4 + 4) = v6; v7 = v22; v8 = *((_DWORD *)v22 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v22 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 33) ) { v9 = v6; } else { v9 = sub_5C4910(v4); v7 = v22; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 33) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_4AF450(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 33) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 33) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v22 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 32); *(_BYTE *)(v5 + 32) = *(_BYTE *)(v3 + 32); *(_BYTE *)(v3 + 32) = v13; LABEL_35: v14 = v21; if ( *(_BYTE *)(v21 + 32) == 1 ) { for ( i = (int)v22; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 32) != 1 ) break; v16 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v16 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v16 + 32) ) { *(_BYTE *)(v16 + 32) = 1; *(_BYTE *)(v6 + 32) = 0; sub_4A1020(i, v6); v16 = *(_DWORD *)(v6 + 8); i = (int)v22; } if ( *(_BYTE *)(v16 + 33) ) goto LABEL_53; 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; sub_4A1080(i, v16); v16 = *(_DWORD *)(v6 + 8); i = (int)v22; } *(_BYTE *)(v16 + 32) = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = 1; *(_BYTE *)(*(_DWORD *)(v16 + 8) + 32) = 1; sub_4A1020(i, v6); break; } } else { if ( !*(_BYTE *)(v16 + 32) ) { *(_BYTE *)(v16 + 32) = 1; *(_BYTE *)(v6 + 32) = 0; sub_4A1080(i, v6); v16 = *(_DWORD *)v6; i = (int)v22; } if ( *(_BYTE *)(v16 + 33) ) goto LABEL_53; 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; sub_4A1020(i, v16); v16 = *(_DWORD *)v6; i = (int)v22; } *(_BYTE *)(v16 + 32) = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = 1; *(_BYTE *)(*(_DWORD *)v16 + 32) = 1; sub_4A1080(i, v6); break; } } *(_BYTE *)(v16 + 32) = 0; LABEL_53: v4 = v6; } v14 = v21; *(_BYTE *)(v4 + 32) = 1; } v17 = *(_DWORD *)(v14 + 16); if ( v17 ) { for ( j = *(_DWORD *)(v14 + 20); v17 != j; v17 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 0); operator delete(*(void **)(v21 + 16)); } *(_DWORD *)(v21 + 16) = 0; *(_DWORD *)(v21 + 20) = 0; *(_DWORD *)(v21 + 24) = 0; operator delete((void *)v21); v19 = *((_DWORD *)v22 + 2); if ( v19 > 0 ) *((_DWORD *)v22 + 2) = v19 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005C1640) -------------------------------------------------------- void __stdcall sub_5C1640(void *a1) { void *v1; // edi@1 void *i; // ebx@1 int v3; // esi@2 int j; // [sp+14h] [bp+8h]@3 v1 = a1; for ( i = a1; !*((_BYTE *)i + 33); v1 = i ) { sub_5C1640(*((void **)i + 2)); v3 = *((_DWORD *)v1 + 4); i = *(void **)i; if ( v3 ) { for ( j = *((_DWORD *)v1 + 5); v3 != j; v3 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v3)(v3, 0); operator delete(*((void **)v1 + 4)); } *((_DWORD *)v1 + 4) = 0; *((_DWORD *)v1 + 5) = 0; *((_DWORD *)v1 + 6) = 0; operator delete(v1); } } //----- (005C16C0) -------------------------------------------------------- int __thiscall sub_5C16C0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 int v5; // ecx@4 int v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 24; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_AAAAAAA ) sub_65178B((int)"vector too long"); v4 = sub_43EF20(v3); *(_DWORD *)(v2 + 8) = v4 + 24 * v3; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_5C0F40(v6, v5, v4); } return v2; } //----- (005C1783) -------------------------------------------------------- void __usercall sub_5C1783(int a1) { sub_556910(*(_DWORD *)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005C17A0) -------------------------------------------------------- int __thiscall sub_5C17A0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // edi@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // bx@2 int v11; // ebx@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 33) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 33) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5C1050(v5, (int)&a4, 1, v8, (char *)a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5C2C10(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { sub_5C1000(v5 + 13, (int)((char *)v4 + 12)); operator delete(a3); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5C1050(v5, (int)&a4, v15, v8, (char *)v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (005C1890) -------------------------------------------------------- int __thiscall sub_5C1890(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 24; if ( (unsigned int)((char *)&unk_AAAAAAA - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 24; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_AAAAAAA - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5C1280(this, v5); } return result; } //----- (005C1910) -------------------------------------------------------- int __thiscall sub_5C1910(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 unsigned int v5; // edi@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; v5 = a2; result = v4 / 24; if ( v4 / 24 <= a2 ) { if ( v4 / 24 < a2 ) { sub_5C1890(v2, a2 - result); sub_5C0E60(*(_DWORD *)(v2 + 4), v5 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 24); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 24; *(_DWORD *)(v2 + 4) += 24 * (v5 - result); } } else { result = sub_5C0D50(v2, (int)&a2, *(_DWORD *)v2 + 24 * a2, v3); } return result; } //----- (005C19C0) -------------------------------------------------------- #error "5C1A5C: positive sp value has been found (funcsize=57)" //----- (005C1A60) -------------------------------------------------------- int __thiscall sub_5C1A60(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 33) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 33) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_5C13B0((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5C1640(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (005C1B20) -------------------------------------------------------- char __cdecl sub_5C1B20(int a1, char *a2) { int v2; // eax@2 int v3; // esi@2 int v4; // eax@2 char result; // al@2 int v6; // [sp-24h] [bp-108A4h]@2 int v7; // [sp-20h] [bp-108A0h]@2 void *v8; // [sp-1Ch] [bp-1089Ch]@2 int v9; // [sp-18h] [bp-10898h]@2 unsigned int v10; // [sp-Ch] [bp-1088Ch]@1 int *v11; // [sp+0h] [bp-10880h]@2 int v12; // [sp+4h] [bp-1087Ch]@2 int v13; // [sp+8h] [bp-10878h]@2 char v14; // [sp+Ch] [bp-10874h]@2 char v15; // [sp+1Ch] [bp-10864h]@1 unsigned int v16; // [sp+10870h] [bp-10h]@1 int v17; // [sp+1087Ch] [bp-4h]@1 int v18; // [sp+10880h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v10 = (unsigned int)&v18 ^ __security_cookie; sub_6432E0((int)&v15); v17 = 0; if ( sub_6434A0(&v15, a2) ) { sub_5C2590((void **)&v12, &v15); LOBYTE(v17) = 1; v2 = sub_5C21C0((int)&v12); sub_5C1910(a1, v2); v6 = v12; v11 = &v6; v7 = v13; sub_5C16C0((int)&v8, (int)&v14); v3 = *(_DWORD *)a1; LOBYTE(v17) = 2; v4 = sub_5C21C0((int)&v12); LOBYTE(v17) = 1; sub_5C19C0(v3, v4, v6, v7, v8, v9); LOBYTE(v17) = 0; sub_5C0B70((int)&v12); v17 = -1; sub_643080(&v15); result = 1; } else { v17 = -1; sub_643080(&v15); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005C1C50) -------------------------------------------------------- int __cdecl sub_5C1C50(int a1, int a2, int a3) { int v3; // edi@1 int result; // eax@1 int v5; // esi@1 void *v6; // esi@3 void *v7; // edi@4 void *v8; // [sp+10h] [bp-20h]@1 void *v9; // [sp+14h] [bp-1Ch]@4 int v10; // [sp+20h] [bp-10h]@1 int v11; // [sp+2Ch] [bp-4h]@1 v10 = 0; v3 = sub_5C16C0((int)&v8, a3); result = a1; v5 = a1 + 4; *(_WORD *)a1 = *(_WORD *)a2; v11 = 1; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; if ( a1 + 4 != v3 ) { sub_556910(v5); *(_DWORD *)v5 = *(_DWORD *)v3; result = a1; *(_DWORD *)(a1 + 8) = *(_DWORD *)(v3 + 4); *(_DWORD *)(a1 + 12) = *(_DWORD *)(v3 + 8); *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; } v6 = v8; v10 = 1; LOBYTE(v11) = 0; if ( v8 ) { v7 = v9; if ( v8 != v9 ) { do { (**(void (__thiscall ***)(void *, _DWORD))v6)(v6, 0); v6 = (char *)v6 + 24; } while ( v6 != v7 ); v6 = v8; } operator delete(v6); result = a1; } return result; } //----- (005C1D20) -------------------------------------------------------- int __thiscall sub_5C1D20(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v4; // eax@3 int v5; // esi@3 int v6; // edi@3 int v8; // [sp+0h] [bp-38h]@1 int (__thiscall **v9)(void *, char); // [sp+10h] [bp-28h]@7 int v10; // [sp+1Ch] [bp-1Ch]@2 int v11; // [sp+20h] [bp-18h]@2 void *v12; // [sp+24h] [bp-14h]@1 int *v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@2 v13 = &v8; v2 = this; v3 = operator new(0x24u); v12 = (void *)v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v9 = &off_6A1FD4; _CxxThrowException(&v9, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(v3 + 32) = 0; v14 = 0; v11 = v3 + 12; v10 = v3 + 12; LOBYTE(v14) = 1; if ( v3 != -12 ) { v4 = a2; *(_WORD *)(v3 + 12) = *(_WORD *)a2; v5 = v3 + 16; v6 = v4 + 4; *(_DWORD *)(v3 + 16) = 0; *(_DWORD *)(v3 + 20) = 0; *(_DWORD *)(v3 + 24) = 0; if ( v3 + 16 != v4 + 4 ) { sub_556910(v5); *(_DWORD *)v5 = *(_DWORD *)v6; *(_DWORD *)(v3 + 20) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v3 + 24) = *(_DWORD *)(v6 + 8); *(_DWORD *)v6 = 0; *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)(v6 + 8) = 0; } } return v3; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C1E20) -------------------------------------------------------- char __cdecl sub_5C1E20() { int v0; // esi@1 char *v1; // eax@4 char v2; // cl@5 unsigned int v3; // edi@6 unsigned int v4; // ebx@6 int v5; // eax@7 void *v6; // esi@9 int i; // esi@11 void *v8; // eax@17 int v9; // ecx@19 int v10; // esi@21 int v11; // eax@22 int v12; // edi@23 void *v13; // edi@24 void *v14; // edx@25 void *v15; // ecx@26 int v16; // eax@26 unsigned __int8 *v17; // eax@29 int v18; // eax@31 int v19; // eax@31 void *v20; // esi@31 void *v21; // edi@32 void *v22; // ebx@39 int v23; // edi@40 void *j; // esi@40 __int32 v25; // edi@43 unsigned int v27; // [sp-4h] [bp-208h]@1 int v28; // [sp+Ch] [bp-1F8h]@31 char v29; // [sp+14h] [bp-1F0h]@31 void *v30; // [sp+18h] [bp-1ECh]@31 void *v31; // [sp+1Ch] [bp-1E8h]@32 int v32; // [sp+20h] [bp-1E4h]@36 int v33; // [sp+28h] [bp-1DCh]@31 __int32 hFindFile; // [sp+2Ch] [bp-1D8h]@1 void *v35; // [sp+30h] [bp-1D4h]@3 int v36; // [sp+34h] [bp-1D0h]@3 int v37; // [sp+38h] [bp-1CCh]@3 int v38; // [sp+40h] [bp-1C4h]@1 char v39; // [sp+54h] [bp-1B0h]@3 _BYTE v40[3]; // [sp+55h] [bp-1AFh]@6 void *v41; // [sp+158h] [bp-ACh]@4 unsigned int v42; // [sp+168h] [bp-9Ch]@4 unsigned int v43; // [sp+16Ch] [bp-98h]@4 char v44; // [sp+174h] [bp-90h]@3 unsigned int v45; // [sp+1F4h] [bp-10h]@1 int v46; // [sp+200h] [bp-4h]@3 int v47; // [sp+204h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v27 = (unsigned int)&v47 ^ __security_cookie; hFindFile = _findfirst32("../9Data/Shine/MobSetting/Action/*.txt", (int)&v38); v0 = 0; if ( hFindFile == -1 ) { sub_639100(&unk_86DDD8, (int)"ZoneServer::zs_start_old : Invalid file path", 0); loc_6391B0("NPCAction::Util::loadTriggers"); } do { v35 = (void *)v0; v36 = v0; v37 = v0; v46 = v0; sprintf(&v44, "../9Data/Shine/MobSetting/Action/%s", &v39, v27); if ( sub_5C1B20((int)&v35, &v44) ) { v1 = &v39; v43 = 15; v42 = v0; LOBYTE(v41) = 0; do v2 = *v1++; while ( v2 ); sub_4241C0((int)&v41, &v39, v1 - v40); v3 = v42; v4 = v43; LOBYTE(v46) = 1; if ( v42 < 1 ) { LABEL_20: v9 = -1; } else { v5 = v42 - 1; if ( v42 - 1 > 0xFFFFFFFF ) v5 = -1; v6 = v41; if ( v43 < 0x10 ) v6 = &v41; for ( i = (int)((char *)v6 + v5); *(_BYTE *)i != 46 || *(_BYTE *)i != 46 && ((*(_BYTE *)i - 46) >> 31) | 1; --i ) { if ( i == sub_419630((int)&v41) ) goto LABEL_20; } v8 = v41; if ( v4 < 0x10 ) v8 = &v41; v9 = i - (_DWORD)v8; } v10 = -1; if ( v3 < v9 ) sub_6517D8((int)"invalid string position"); v11 = v3 - v9; if ( v3 - v9 >= 0xFFFFFFFF || (v10 = v3 - v9, v12 = 0, v11) ) { v13 = v41; if ( v4 >= 0x10 ) { v14 = v41; } else { v13 = &v41; v14 = &v41; } memmove_0((char *)v14 + v9, (char *)v13 + v9 + v10, v11 - v10); v15 = v41; v16 = v42 - v10; v42 -= v10; if ( v43 < 0x10 ) v15 = &v41; *((_BYTE *)v15 + v16) = 0; v4 = v43; v12 = 0; } v17 = (unsigned __int8 *)v41; if ( v4 < 0x10 ) v17 = (unsigned __int8 *)&v41; v33 = (unsigned __int16)sub_418D10((int)&unk_14D159B0, v17); v18 = sub_5C1C50((int)&v29, (int)&v33, (int)&v35); LOBYTE(v46) = 2; v19 = sub_5C1D20(&unk_14D21474, v18); sub_5C17A0((int)&unk_14D21474, (int)&v28, (void *)v19, v12); v20 = v30; LOBYTE(v46) = 1; if ( v30 != (void *)v12 ) { v21 = v31; if ( v30 != v31 ) { do { (**(void (__thiscall ***)(void *, _DWORD))v20)(v20, 0); v20 = (char *)v20 + 24; } while ( v20 != v21 ); v20 = v30; } operator delete(v20); v12 = 0; } v30 = (void *)v12; v31 = (void *)v12; v32 = v12; if ( v43 >= 0x10 ) operator delete(v41); v43 = 15; v42 = v12; LOBYTE(v41) = 0; v0 = 0; } v22 = v35; v46 = -1; if ( v35 != (void *)v0 ) { v23 = v36; for ( j = v35; j != (void *)v23; j = (char *)j + 24 ) (**(void (__thiscall ***)(void *, _DWORD))j)(j, 0); operator delete(v22); v0 = 0; } v25 = hFindFile; v35 = (void *)v0; v36 = v0; v37 = v0; } while ( !_findnext32((HANDLE)hFindFile, (int)&v38) ); _findclose(v25); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005C21A0) -------------------------------------------------------- int __thiscall sub_5C21A0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = a3; return result; } //----- (005C21C0) -------------------------------------------------------- int __thiscall sub_5C21C0(int this) { return (*(_DWORD *)(this + 12) - *(_DWORD *)(this + 8)) / 24; } //----- (005C21E0) -------------------------------------------------------- signed int __thiscall sub_5C21E0(int this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v8; // esi@1 signed int result; // eax@2 int v10; // edi@4 int v11; // esi@4 signed int v12; // [sp+24h] [bp+20h]@3 v8 = this; if ( *(_DWORD *)(this + 4) ) { result = (unsigned __int16)(*(int (__stdcall **)(int, int, int, int, int, int, int))(**(_DWORD **)(this + 4) + 4))( a2, a3, a4, a5, a6, a7, a8); v12 = result; if ( result & 1 ) { v10 = *(_DWORD *)(v8 + 12); v11 = *(_DWORD *)(v8 + 8); if ( v11 != v10 ) { do { (*(void (__stdcall **)(int, int))(**(_DWORD **)v11 + 4))(a2, a3); v11 += 4; } while ( v11 != v10 ); result = v12; } } } else { sub_639100(&unk_86DDD8, (int)"NPCAction::Trigger::notify : null condition_", 0); result = sub_5C9990(a2, a3, a4, a5, a6, a7, a8); } return result; } //----- (005C2280) -------------------------------------------------------- int __thiscall sub_5C2280(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 bool v4; // zf@1 int v5; // edx@1 int v6; // ebx@1 int v7; // esi@3 void *v8; // eax@7 int v9; // edi@7 void *v10; // ST04_4@7 void (__thiscall *v11)(_DWORD, _DWORD); // eax@7 char v13; // [sp+10h] [bp-30h]@7 char v14; // [sp+20h] [bp-20h]@7 int v15; // [sp+28h] [bp-18h]@1 int i; // [sp+2Ch] [bp-14h]@3 int v17; // [sp+30h] [bp-10h]@1 int v18; // [sp+3Ch] [bp-4h]@1 v2 = this; v15 = (int)"doTriggers_::operator()"; sub_4675D0((int)&unk_D020420, (int)"doTriggers_::operator()"); dword_7508B8[dword_750CB8] = (int)"doTriggers_::operator()"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *(_DWORD *)(a2 + 4) == 0; v5 = *(_DWORD *)v2; v6 = *((_DWORD *)v2 + 1); v18 = 0; v17 = v5; if ( v4 || (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(a2 + 4) + 16))(v6) ) { v7 = *(_DWORD *)(a2 + 8); for ( i = *(_DWORD *)(a2 + 12); v7 != i; v7 += 4 ) (*(void (__stdcall **)(int, int))(**(_DWORD **)v7 + 4))(v17, v6); v3 = a2; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 8))(v3) ) { v8 = sub_5C99A0(&v13, *(_DWORD *)v2, v3); v9 = *((_DWORD *)v2 + 1); v10 = v8; v11 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 2604); LOBYTE(v18) = 1; v11(v9, v10); LOBYTE(v18) = 2; nullsub_2(&v14); LOBYTE(v18) = 0; sub_5C9980(&v13); } --dword_750CB8; v18 = -1; return sub_467660((int)&unk_D020420, (int)"doTriggers_::operator()"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C23B0) -------------------------------------------------------- int __thiscall sub_5C23B0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6F918C; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; return result; } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); //----- (005C23D0) -------------------------------------------------------- char __thiscall sub_5C23D0(int this) { char result; // al@2 if ( *(_DWORD *)(this + 4) ) result = (*(int (**)(void))(**(_DWORD **)(this + 4) + 8))(); else result = 0; return result; } //----- (005C23F0) -------------------------------------------------------- int __thiscall sub_5C23F0(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 4) ) result = (*(int (**)(void))(**(_DWORD **)(this + 4) + 12))(); else result = 0; return result; } //----- (005C2410) -------------------------------------------------------- int __thiscall sub_5C2410(int this, int a2) { unsigned int v2; // esi@1 int v3; // edi@1 signed int v4; // edx@1 int v5; // eax@3 v2 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = v2 + 1; v3 = *(_DWORD *)(this + 8); v4 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(this + 12) - v3)) >> 32) >> 2; if ( v4 + ((unsigned int)v4 >> 31) <= v2 ) sub_6517D8((int)"invalid vector subscript"); v5 = v3 + 24 * v2; *(_DWORD *)a2 = &off_6F918C; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v5 + 4); sub_5C0AA0(a2 + 8, v5 + 8); return a2; } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); //----- (005C24B0) -------------------------------------------------------- int __thiscall sub_5C24B0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5C1890(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6F918C; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v8 = a2 + 8; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 2; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5C1890(v2, 1); v6 = *(_DWORD *)v2 + 24 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6F918C; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); v8 = v6 + 8; LABEL_11: result = sub_5C0AA0(result + 8, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 24; return result; } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); //----- (005C2590) -------------------------------------------------------- void **__thiscall sub_5C2590(void **this, void *a2) { void **v2; // esi@1 size_t v3; // ebx@1 const char *v4; // ecx@1 int v5; // esi@3 const char *v6; // ecx@3 int v7; // edi@3 unsigned int v8; // eax@7 int v9; // edi@9 int v10; // esi@15 int v11; // edi@17 void *v12; // ecx@21 void *v13; // edx@21 signed int v14; // edi@23 signed int v15; // eax@24 int v16; // eax@25 int v17; // esi@25 unsigned int v18; // ecx@27 signed int v19; // eax@35 int v20; // eax@36 unsigned int v21; // edx@37 unsigned int v22; // ecx@38 const char *v23; // ecx@46 void *v24; // edx@52 void *v25; // ecx@52 void *v26; // edi@53 unsigned int v27; // edi@54 int v28; // ebx@56 int v29; // esi@62 int v30; // edi@64 signed int v31; // edi@70 int v32; // eax@71 int v33; // eax@72 int v34; // esi@72 unsigned int v35; // ecx@74 int v36; // eax@82 signed int v37; // esi@83 int v38; // eax@83 unsigned int v39; // edx@84 unsigned int v40; // ecx@85 const char *v41; // ecx@93 void **v42; // esi@96 int v44; // [sp-18h] [bp-58h]@3 int v45; // [sp-14h] [bp-54h]@3 int v46; // [sp-10h] [bp-50h]@3 int v47; // [sp-Ch] [bp-4Ch]@3 int v48; // [sp-8h] [bp-48h]@3 int v49; // [sp-4h] [bp-44h]@1 int (__thiscall **v50)(void *, char); // [sp+10h] [bp-30h]@3 int v51; // [sp+14h] [bp-2Ch]@3 void *v52; // [sp+18h] [bp-28h]@3 void *v53; // [sp+1Ch] [bp-24h]@3 void *v54; // [sp+20h] [bp-20h]@3 unsigned int v55; // [sp+28h] [bp-18h]@3 int *v56; // [sp+2Ch] [bp-14h]@21 void **v57; // [sp+30h] [bp-10h]@1 int v58; // [sp+3Ch] [bp-4h]@1 int v59; // [sp+48h] [bp+8h]@1 v2 = this; v57 = this; v3 = 0; *this = a2; this[1] = 0; this[2] = 0; this[3] = 0; this[4] = 0; v4 = dword_86C2F8; v58 = 0; v59 = 0; v49 = 0; if ( (unsigned int)dword_86C30C < 0x10 ) v4 = (const char *)&dword_86C2F8; v55 = (unsigned int)&v44; v48 = 0; v47 = 0; v46 = 0; v45 = 0; v44 = 0; strncpy((char *)&v44, v4, 0x14u); v5 = sub_6442C0(*v2, v44, v45, v46, v47, v48, v49); v50 = &off_6F918C; v51 = 0; v52 = 0; v53 = 0; v54 = 0; v6 = dword_86C2F8; LOBYTE(v58) = 1; v7 = (int)dword_86C2F8; if ( (unsigned int)dword_86C30C < 0x10 ) { v7 = (int)&dword_86C2F8; v6 = (const char *)&dword_86C2F8; } v55 = (unsigned int)&v45; v49 = 0; v48 = 0; v47 = 0; v46 = 0; v45 = 0; strncpy((char *)&v45, v6, 0x14u); if ( sub_644CC0(*v57, v45, v46, v47, v48, v49) <= 0 ) { sub_6390B0(&unk_86DDD8, (int)"TriggerGen_OptionReader : Invalid Table", v7); loc_6391B0("TriggerGen_OptionReader"); } v8 = *(_DWORD *)v5; if ( *(_DWORD *)v5 <= 0u || v8 > (dword_14D21488 - (signed int)dword_14D21484) >> 2 ) v9 = 0; else v9 = *((_DWORD *)dword_14D21484 + v8 - 1); if ( v9 == 0 ) { v49 = *(_DWORD *)v5; sub_639100(&unk_86DDD8, (int)"TriggerGen_OptionReader : Invalid condition(0). ConditionID", v49); loc_6391B0("TriggerGen_OptionReader"); } v51 = v9; v55 = *(_DWORD *)v5; do { if ( *(_DWORD *)v5 != v55 ) { while ( 1 ) { if ( *(_DWORD *)v5 == v55 ) { v25 = v53; v24 = v52; } else { sub_5C24B0((int)(v57 + 2), (unsigned int)&v50); v24 = v52; v25 = v53; v55 = *(_DWORD *)v5; if ( v52 != v53 ) { v26 = v52; memmove_0(v52, v53, v3); v24 = v52; v25 = v26; v53 = v26; } v27 = *(_DWORD *)v5; if ( *(_DWORD *)v5 <= v3 || v27 > (dword_14D21488 - (signed int)dword_14D21484) >> 2 ) v28 = 0; else v28 = *((_DWORD *)dword_14D21484 + v27 - 1); if ( !v28 ) { v49 = *(_DWORD *)v5; sub_639100(&unk_86DDD8, (int)"TriggerGen_OptionReader : Invalid condition(1). ConditionID", v49); loc_6391B0("TriggerGen_OptionReader"); v25 = v53; v24 = v52; } v51 = v28; v3 = 0; } v29 = *(_DWORD *)(v5 + 4); if ( v29 <= v3 || v29 > (unsigned int)((dword_14D21498 - (signed int)dword_14D21494) >> 2) ) v30 = 0; else v30 = *((_DWORD *)dword_14D21494 + v29 - 1); if ( (v30 != v3) == v3 ) { sub_639100(&unk_86DDD8, (int)"TriggerGen_OptionReader : Invalid action(1). ActionID", v29); loc_6391B0("TriggerGen_OptionReader"); v25 = v53; v24 = v52; } v56 = (int *)v30; if ( &v56 >= v25 || v24 > &v56 ) { if ( v25 == v54 ) { v36 = (signed int)(v25 - v24) >> 2; if ( (unsigned int)v36 > 0x3FFFFFFE ) goto LABEL_50; v37 = v54 - v24; v38 = v36 + 1; if ( v38 > (unsigned int)((signed int)(v54 - v24) >> 2) ) { v39 = (unsigned int)(v37 >> 2) >> 1; if ( 1073741823 - v39 >= v37 >> 2 ) v40 = v39 + (v37 >> 2); else v40 = 0; if ( v40 < v38 ) v40 = v38; sub_5839E0((int)&v52, v40); v25 = v53; } } if ( v25 == (void *)v3 ) goto LABEL_93; *(_DWORD *)v25 = v30; } else { v31 = (signed int)((char *)&v56 - v24) >> 2; if ( v25 == v54 ) { v32 = (signed int)(v25 - v24) >> 2; if ( (unsigned int)v32 > 0x3FFFFFFE ) goto LABEL_50; v33 = v32 + 1; v34 = (signed int)(v54 - v24) >> 2; if ( v33 > (unsigned int)v34 ) { if ( 1073741823 - ((unsigned int)v34 >> 1) >= v34 ) v35 = ((unsigned int)v34 >> 1) + v34; else v35 = 0; if ( v35 < v33 ) v35 = v33; sub_5839E0((int)&v52, v35); v25 = v53; v24 = v52; } } if ( v25 == (void *)v3 ) goto LABEL_93; *(_DWORD *)v25 = *((_DWORD *)v24 + v31); } v25 = v53; LABEL_93: v53 = (char *)v25 + 4; v41 = dword_86C2F8; ++v59; v49 = v59; if ( (unsigned int)dword_86C30C < 0x10 ) v41 = (const char *)&dword_86C2F8; v56 = &v44; v48 = v3; v47 = v3; v46 = v3; v45 = v3; v44 = v3; strncpy((char *)&v44, v41, 0x14u); v5 = sub_6442C0(*v57, v44, v45, v46, v47, v48, v49); if ( v5 == v3 ) goto LABEL_96; } } v10 = *(_DWORD *)(v5 + 4); if ( (unsigned int)v10 <= 0 || v10 > (unsigned int)((dword_14D21498 - (signed int)dword_14D21494) >> 2) ) v11 = 0; else v11 = *((_DWORD *)dword_14D21494 + v10 - 1); if ( v11 == 0 ) { sub_639100(&unk_86DDD8, (int)"TriggerGen_OptionReader : Invalid action(0). ActionID", v10); loc_6391B0("TriggerGen_OptionReader"); } v12 = v53; v13 = v52; v56 = (int *)v11; if ( &v56 >= v53 || v52 > &v56 ) { if ( v53 == v54 ) { v19 = (signed int)(v53 - v52) >> 2; if ( (unsigned int)v19 > 0x3FFFFFFE ) LABEL_50: sub_65178B((int)"vector too long"); v20 = v19 + 1; if ( v20 > (unsigned int)((signed int)(v54 - v52) >> 2) ) { v21 = (unsigned int)((signed int)(v54 - v52) >> 2) >> 1; if ( 1073741823 - v21 >= (signed int)(v54 - v52) >> 2 ) v22 = v21 + ((signed int)(v54 - v52) >> 2); else v22 = 0; if ( v22 < v20 ) v22 = v20; sub_5839E0((int)&v52, v22); v12 = v53; } } if ( v12 ) { *(_DWORD *)v12 = v11; goto LABEL_45; } } else { v14 = (signed int)((char *)&v56 - v52) >> 2; if ( v53 == v54 ) { v15 = (signed int)(v53 - v52) >> 2; if ( (unsigned int)v15 > 0x3FFFFFFE ) goto LABEL_50; v16 = v15 + 1; v17 = (signed int)(v54 - v52) >> 2; if ( v16 > (unsigned int)v17 ) { if ( 1073741823 - ((unsigned int)v17 >> 1) >= v17 ) v18 = ((unsigned int)v17 >> 1) + v17; else v18 = 0; if ( v18 < v16 ) v18 = v16; sub_5839E0((int)&v52, v18); v12 = v53; v13 = v52; } } if ( v12 ) { *(_DWORD *)v12 = *((_DWORD *)v13 + v14); LABEL_45: v12 = v53; goto LABEL_46; } } LABEL_46: v53 = (char *)v12 + 4; v23 = dword_86C2F8; ++v59; v49 = v59; if ( (unsigned int)dword_86C30C < 0x10 ) v23 = (const char *)&dword_86C2F8; v56 = &v44; v48 = 0; v47 = 0; v46 = 0; v45 = 0; v44 = 0; strncpy((char *)&v44, v23, 0x14u); v5 = sub_6442C0(*v57, v44, v45, v46, v47, v48, v49); } while ( v5 ); LABEL_96: v42 = v57; sub_5C24B0((int)(v57 + 2), (unsigned int)&v50); LOBYTE(v58) = 0; if ( v52 != (void *)v3 ) operator delete(v52); v52 = (void *)v3; v53 = (void *)v3; v54 = (void *)v3; sub_5C9980(&v50); return v42; } // 6F918C: using guessed type int (__thiscall *off_6F918C)(void *, char); // 86C30C: using guessed type int dword_86C30C; // 14D21488: using guessed type int dword_14D21488; // 14D21498: using guessed type int dword_14D21498; //----- (005C2AE0) -------------------------------------------------------- int __cdecl sub_5C2AE0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 25); i = *(_DWORD *)i ) result = i; return result; } //----- (005C2B00) -------------------------------------------------------- int __cdecl sub_5C2B00(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 25); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (005C2B30) -------------------------------------------------------- void *__thiscall sub_5C2B30(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 3999, 112) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 3999, 3999, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005C2BE0) -------------------------------------------------------- void *__thiscall sub_5C2BE0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F93B4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F93B4: using guessed type int (__thiscall *off_6F93B4)(void *, char); //----- (005C2C10) -------------------------------------------------------- void *__thiscall sub_5C2C10(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 33) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 33) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 33) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 33) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 33) ) goto LABEL_11; return result; } //----- (005C2C70) -------------------------------------------------------- void *__thiscall sub_5C2C70(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 25) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 25) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 25) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 25) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 25); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 25) ) goto LABEL_11; return result; } //----- (005C2CD0) -------------------------------------------------------- void *__thiscall sub_5C2CD0(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 25) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 25) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 25); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 25); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (005C2D20) -------------------------------------------------------- int __thiscall sub_5C2D20(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 25) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005C2D80) -------------------------------------------------------- int __thiscall sub_5C2D80(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 25) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005C2DE0) -------------------------------------------------------- int __thiscall sub_5C2DE0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= 0x15555554 ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 24) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 24) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 25) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 24) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 24) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 25) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 24) = 1; *(_BYTE *)(v13 + 24) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 24) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 24) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 25) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 24) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 24) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 25) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 24) = 1; *(_BYTE *)(v22 + 24) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 24) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 24) = 1; return result; } //----- (005C3010) -------------------------------------------------------- int __thiscall sub_5C3010(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 25) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_5C2CD0(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 25) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 25) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 25) ) { v9 = v6; } else { v9 = sub_5C2AE0(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 25) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_5C2B00(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 25) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 25) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 24); *(_BYTE *)(v5 + 24) = *(_BYTE *)(v3 + 24); *(_BYTE *)(v3 + 24) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 24) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 24) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 24) ) { *(_BYTE *)(v15 + 24) = 1; *(_BYTE *)(v6 + 24) = 0; sub_5C2D20(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 25) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v15 + 24) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 24) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 24) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 24) = 1; *(_BYTE *)(v15 + 24) = 0; sub_5C2D80(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 24) = *(_BYTE *)(v6 + 24); *(_BYTE *)(v6 + 24) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 24) = 1; sub_5C2D20(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 24) ) { *(_BYTE *)(v15 + 24) = 1; *(_BYTE *)(v6 + 24) = 0; sub_5C2D80(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 25) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 24) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 24) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 24) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 24) = 1; *(_BYTE *)(v15 + 24) = 0; sub_5C2D20(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 24) = *(_BYTE *)(v6 + 24); *(_BYTE *)(v6 + 24) = 1; *(_BYTE *)(*(_DWORD *)v15 + 24) = 1; sub_5C2D80(i, v6); break; } } *(_BYTE *)(v15 + 24) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 24) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005C3260) -------------------------------------------------------- void __stdcall sub_5C3260(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 25); v1 = i ) { sub_5C3260(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (005C32A0) -------------------------------------------------------- int __thiscall sub_5C32A0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 int v10; // edi@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 25) ) { v10 = *((_DWORD *)a3 + 3); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v7 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 25) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5C2DE0(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5C2C70(&a4); v11 = a4; v4 = a3; } if ( *(_DWORD *)(v11 + 12) >= *((_DWORD *)v4 + 3) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5C2DE0(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (005C3380) -------------------------------------------------------- int __thiscall sub_5C3380(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 25) ) { if ( *(_DWORD *)(v4 + 12) >= *(_DWORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_DWORD *)a3 < *(_DWORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (005C33F0) -------------------------------------------------------- int __thiscall sub_5C33F0(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 25) ) { do { sub_5C3260(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 25) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (005C3440) -------------------------------------------------------- int __thiscall sub_5C3440(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x1Cu); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 24) = 0; if ( result != -12 ) { v4 = a2; *(_DWORD *)(result + 12) = *(_DWORD *)a2; *(_DWORD *)(result + 16) = *(_DWORD *)(v4 + 4); *(_DWORD *)(result + 20) = *(_DWORD *)(v4 + 8); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C34C0) -------------------------------------------------------- int __thiscall sub_5C34C0(void *this, char a2) { void *v2; // esi@1 int result; // eax@2 int v4; // [sp+4h] [bp-4h]@1 v2 = this; sub_648340((int)((char *)this + 176), (int)&v4, (int)&a2); if ( v4 == *((_DWORD *)v2 + 45) ) result = 0; else result = v4 + 16; return result; } //----- (005C3500) -------------------------------------------------------- int __thiscall sub_5C3500(void *this, int a2, char a3) { void *v3; // esi@1 int v4; // esi@2 int result; // eax@3 int v6; // [sp+4h] [bp-4h]@1 v3 = this; a2 = (unsigned __int16)a2; sub_648340((int)((char *)this + 176), (int)&v6, (int)&a2); if ( v6 == *((_DWORD *)v3 + 45) || (v4 = v6 + 16, v6 == -16) || (sub_5C3380(v4, (int)&a2, (int)&a3), a2 == *(_DWORD *)(v4 + 4)) ) result = 0; else result = a2 + 16; return result; } //----- (005C3560) -------------------------------------------------------- int __thiscall sub_5C3560(void *this, int a2, int a3, char a4) { void *v4; // esi@1 int v5; // esi@2 int result; // eax@5 int v7; // [sp+4h] [bp-4h]@1 v4 = this; v7 = a3; a2 = (unsigned __int16)a2; sub_648340((int)((char *)this + 176), (int)&a3, (int)&a2); if ( a3 != *((_DWORD *)v4 + 45) && (v5 = a3 + 16, a3 != -16) && (sub_5C3380(a3 + 16, (int)&a2, (int)&v7), a2 != *(_DWORD *)(v5 + 4)) && a2 != -16 ) { if ( a4 == 1 ) result = *(_DWORD *)(a2 + 16); else result = *(_DWORD *)(a2 + 20); } else { result = 0; } return result; } //----- (005C35E0) -------------------------------------------------------- int __thiscall sub_5C35E0(void *this, int a2, int a3, char a4, int a5) { int v5; // eax@1 int v6; // ecx@2 int v7; // esi@5 int v8; // eax@5 int result; // eax@7 v5 = sub_5C3560(this, a2, a3, a4); if ( !v5 ) goto LABEL_11; v6 = a5; if ( a4 == 1 ) v6 = a5 - 1; if ( (unsigned int)v6 <= 0xB ) { v7 = *(_WORD *)(v5 + dword_86C314[v6]); v8 = *(_WORD *)(dword_86C344[v6] + v5) - v7; if ( v8 <= 1 ) v8 = 1; result = v7 + (unsigned __int16)sub_427920(&unk_14D42DC0, v8 + 1); } else { LABEL_11: result = 0; } return result; } // 86C314: using guessed type int dword_86C314[]; // 86C344: using guessed type int dword_86C344[]; //----- (005C3650) -------------------------------------------------------- int __thiscall sub_5C3650(void *this, int a2, int a3, char a4, int a5) { int v5; // eax@1 int v6; // ecx@2 int result; // eax@5 v5 = sub_5C3560(this, a2, a3, a4); if ( !v5 ) goto LABEL_9; v6 = a5; if ( a4 == 1 ) v6 = a5 - 1; if ( (unsigned int)v6 <= 0xB ) result = *(_WORD *)(dword_86C374[v6] + v5); else LABEL_9: result = 0; return result; } // 86C374: using guessed type int dword_86C374[]; //----- (005C3690) -------------------------------------------------------- char __thiscall sub_5C3690(void *this, int a2, int a3, signed int a4, int a5) { void *v5; // esi@2 int v6; // eax@3 int v7; // edi@3 int v8; // eax@4 int v9; // eax@6 int *v10; // eax@9 int v11; // edx@10 unsigned int v12; // esi@10 int v13; // esi@10 unsigned int v14; // edi@10 unsigned int v15; // edi@10 int v17; // esi@15 int v18; // esi@22 int v19; // esi@26 int v20; // eax@31 int v21; // esi@32 int *v22; // ecx@32 int v23; // eax@32 int v24; // eax@39 int v25; // esi@39 __int16 v26; // ax@40 int v27; // ecx@40 int v28; // esi@40 signed int v29; // ebx@40 int v30; // eax@40 int v31; // ecx@40 int v32; // ecx@40 unsigned int v33; // [sp-4h] [bp-78h]@1 char v34; // [sp+Ch] [bp-68h]@10 int v35; // [sp+2Ch] [bp-48h]@38 int v36; // [sp+30h] [bp-44h]@10 int v37; // [sp+34h] [bp-40h]@1 void *v38; // [sp+38h] [bp-3Ch]@2 int v39; // [sp+3Ch] [bp-38h]@10 char *v40; // [sp+40h] [bp-34h]@21 int v41; // [sp+44h] [bp-30h]@1 int v42; // [sp+48h] [bp-2Ch]@10 void *v43; // [sp+4Ch] [bp-28h]@1 int v44; // [sp+50h] [bp-24h]@21 char v45; // [sp+54h] [bp-20h]@20 int v46; // [sp+55h] [bp-1Fh]@20 int v47; // [sp+59h] [bp-1Bh]@20 int v48; // [sp+5Dh] [bp-17h]@20 __int16 v49; // [sp+61h] [bp-13h]@20 unsigned int v50; // [sp+64h] [bp-10h]@1 int v51; // [sp+70h] [bp-4h]@10 int v52; // [sp+74h] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v33 = (unsigned int)&v52 ^ __security_cookie; v43 = this; v37 = a2; v41 = a3; if ( !a2 || (v5 = sub_63ACA0(dword_1508B168, *(_WORD *)a2), (v38 = v5) == 0) || (v6 = sub_418CB0((int)&dword_14D20890, *(_WORD *)a2), (v7 = v6) == 0) || (v8 = *(_DWORD *)v6, !*(_DWORD *)v7) || *(_DWORD *)(v8 + 102) != 4 || (v9 = *(_DWORD *)(v7 + 4)) == 0 ) return 0; if ( a5 ) { v10 = sub_4934A0(&dword_D61E064, (const char *)(v9 + 137)); if ( v10 ) { v11 = *(_WORD *)(*(_DWORD *)v7 + 241); v12 = *(_BYTE *)(a2 + 39); v36 = *((_BYTE *)v10 + 4); v13 = v12 >> 1; v42 = v11; sub_64AE30((int)&v34); v14 = *(_BYTE *)(a2 + 13); v51 = 0; v15 = v14 >> 1; v39 = sub_5C34C0(v43, v42); if ( v39 ) { if ( a4 >= 0 ) { v45 = 0; v46 = 0; v47 = 0; v48 = 0; v49 = 0; if ( v13 > 0 ) { v40 = (char *)(a2 + 40); v44 = v13; do { v18 = (unsigned __int8)*v40; if ( sub_5C3500(v43, v42, *v40) ) { sub_64AB90(&v34, v18); *(&v45 + v18) = 1; } v40 += 3; --v44; } while ( v44 ); } if ( (signed int)v15 > 0 ) { v19 = a2 + 15; do { if ( *(&v45 + *(_BYTE *)(v19 - 1)) != 1 && *(_WORD *)v19 ) sub_64AB90(&v34, *(_BYTE *)(v19 - 1)); v19 += 3; --v15; } while ( v15 ); } v20 = sub_48F670((int)&v34); if ( v20 < v36 ) { sub_649430((int)&v34); v21 = v39; v22 = *(int **)(v39 + 4); v23 = *v22; v44 = v23; if ( (int *)v23 != v22 ) { do { sub_64AB90(&v34, *(_DWORD *)(v23 + 12)); sub_5C2CD0(&v44); v23 = v44; } while ( v44 != *(_DWORD *)(v21 + 4) ); } } } else { if ( (signed int)v15 > 0 ) { v17 = a2 + 14; do { if ( *(_WORD *)(v17 + 1) ) sub_64AB90(&v34, *(_BYTE *)v17); v17 += 3; --v15; } while ( v15 ); } } if ( !sub_48F670((int)&v34) ) { v51 = -1; sub_64AA60((int)&v34); return 0; } if ( sub_48F670((int)&v34) > 1 ) sub_64AAD0((int)&v34, 10); if ( (unsigned __int16)sub_48F680(&v34, (int)&v35) ) { v24 = v35; v25 = v41; *(_BYTE *)v41 = v35; if ( (unsigned __int8)v24 < 0xFu ) { v26 = (*(int (__stdcall **)(int, int, unsigned int))(*(_DWORD *)v38 + 124))(a2, v24, v33); v29 = a4; LOBYTE(v39) = a4 >= 1; v27 = v42; *(_WORD *)(v25 + 1) = v26; v28 = a4 * sub_5C35E0(v43, v27, *(_BYTE *)v25, a4 >= 1, a5) + *(_WORD *)(v25 + 1); LOBYTE(v29) = *(_BYTE *)v41; v30 = sub_5C3650(v43, v42, *(_BYTE *)v41, a4 >= 1, a5); v31 = v28 < 0; LOBYTE(v31) = v28 <= 0; v32 = v28 & (v31 - 1); if ( v32 < v30 ) LOWORD(v30) = v32; *(_WORD *)(v41 + 1) = v30; (*(void (__stdcall **)(int, signed int))(*(_DWORD *)v38 + 128))(v37, v29); v51 = -1; sub_64AA60((int)&v34); return 1; } } } v51 = -1; sub_64AA60((int)&v34); } return 0; } (*(void (__thiscall **)(void *, int))(*(_DWORD *)v5 + 132))(v5, a2); return 1; } // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (005C39A0) -------------------------------------------------------- int __thiscall sub_5C39A0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 25) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 25) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 25); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 25); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_5C3010((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5C33F0(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (005C3A40) -------------------------------------------------------- int __thiscall sub_5C3A40(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // eax@3 int v5; // eax@3 int (__thiscall **v7)(void *, char); // [sp+Ch] [bp-20h]@6 int v8; // [sp+18h] [bp-14h]@1 int v9; // [sp+1Ch] [bp-10h]@5 int v10; // [sp+28h] [bp-4h]@2 v2 = this; v8 = this; *(_DWORD *)(this + 8) = 0; v3 = operator new(0x1Cu); if ( !v3 ) { v9 = 0; std::exception::exception(&v9); v7 = &off_6A1FD4; _CxxThrowException(&v7, &unk_733E50); } *(_DWORD *)(v2 + 4) = v3; *(_DWORD *)v3 = v3; *(_DWORD *)(*(_DWORD *)(v2 + 4) + 4) = *(_DWORD *)(v2 + 4); *(_DWORD *)(*(_DWORD *)(v2 + 4) + 8) = *(_DWORD *)(v2 + 4); *(_BYTE *)(*(_DWORD *)(v2 + 4) + 24) = 1; *(_BYTE *)(*(_DWORD *)(v2 + 4) + 25) = 1; v10 = 0; if ( v2 != a2 ) { sub_5C33F0(v2); v4 = *(_DWORD *)(v2 + 4); *(_DWORD *)(v2 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = v4; v5 = *(_DWORD *)(v2 + 8); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = v5; } return v2; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C3B10) -------------------------------------------------------- void __thiscall sub_5C3B10(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_5C39A0(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (005C3B70) -------------------------------------------------------- void __thiscall sub_5C3B70(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this + 4; v5 = this + 4; v2 = *(_DWORD *)(this + 8); v3 = *(_DWORD *)v2; v6 = 0; sub_5C39A0(this + 4, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (005C3BE0) -------------------------------------------------------- int __cdecl sub_5C3BE0(int a1, int a2, int a3) { *(_WORD *)a1 = *(_WORD *)a2; sub_5C3A40(a1 + 4, a3); return a1; } //----- (005C3C10) -------------------------------------------------------- int __thiscall sub_5C3C10(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int v5; // eax@2 int v6; // edx@3 int v8; // [sp+0h] [bp-38h]@1 int (__thiscall **v9)(void *, char); // [sp+10h] [bp-28h]@6 int v10; // [sp+1Ch] [bp-1Ch]@2 int v11; // [sp+20h] [bp-18h]@2 void *v12; // [sp+24h] [bp-14h]@1 int *v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@2 v13 = &v8; v2 = this; v3 = operator new(0x24u); v4 = v3; v12 = (void *)v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v9 = &off_6A1FD4; _CxxThrowException(&v9, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 8) = *((_DWORD *)v2 + 1); v5 = v3 + 12; *(_WORD *)(v4 + 32) = 0; v14 = 0; v11 = v4 + 12; v10 = v4 + 12; LOBYTE(v14) = 1; if ( v4 != -12 ) { v6 = a2 + 4; *(_WORD *)v5 = *(_WORD *)a2; sub_5C3A40(v4 + 16, v6); } return v4; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C3CE0) -------------------------------------------------------- int __thiscall sub_5C3CE0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@1 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int result; // eax@52 v5 = *(_DWORD *)(this + 8); v6 = a5; if ( v5 >= (unsigned int)&unk_CCCCCCB ) { sub_5C39A0((int)((char *)a5 + 16), (int)&a5, **((_DWORD **)a5 + 5), *((_DWORD *)a5 + 5)); operator delete(*((void **)v6 + 5)); operator delete(v6); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)v6 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = v6; **(_DWORD **)(this + 4) = v6; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = v6; } else { if ( a3 ) { *(_DWORD *)a4 = v6; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = v6; } else { *(_DWORD *)(a4 + 8) = v6; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = v6; } } v10 = v6; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 32) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 32) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 33) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 33) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 32) = 1; *(_BYTE *)(v13 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 32) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 33) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 33) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 32) = 1; *(_BYTE *)(v22 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 32) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } result = a2; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(this + 4) + 4) + 32) = 1; *(_DWORD *)a2 = v6; return result; } //----- (005C3F60) -------------------------------------------------------- int __thiscall sub_5C3F60(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 char *v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 char *v16; // esi@59 int v17; // ST08_4@59 int v18; // ST04_4@59 int v19; // eax@59 int result; // eax@61 char v21; // [sp+10h] [bp-1Ch]@59 char *v22; // [sp+14h] [bp-18h]@20 void *v23; // [sp+18h] [bp-14h]@3 void *v24; // [sp+1Ch] [bp-10h]@1 int v25; // [sp+28h] [bp-4h]@59 v24 = this; v3 = a3; if ( *(_BYTE *)(a3 + 33) ) sub_6517D8((int)"invalid map/set iterator"); v23 = (void *)a3; sub_647B50(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 33) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 33) ) *(_DWORD *)(v4 + 4) = v6; v7 = v24; v8 = *((_DWORD *)v24 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v7 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 33) ) { v9 = v6; } else { v9 = sub_5C4910(v4); v7 = v24; } **((_DWORD **)v7 + 1) = v9; } v10 = (char *)*((_DWORD *)v7 + 1); v22 = v10; if ( *((_DWORD *)v10 + 2) == v3 ) { if ( *(_BYTE *)(v4 + 33) ) *((_DWORD *)v10 + 2) = v6; else *((_DWORD *)v22 + 2) = sub_4AF450(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 33) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 33) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v24 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 32); *(_BYTE *)(v5 + 32) = *(_BYTE *)(v3 + 32); *(_BYTE *)(v3 + 32) = v13; LABEL_35: if ( *((_BYTE *)v23 + 32) == 1 ) { for ( i = (int)v24; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 32) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 32) ) { *(_BYTE *)(v15 + 32) = 1; *(_BYTE *)(v6 + 32) = 0; sub_4A1020(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v24; } if ( *(_BYTE *)(v15 + 33) ) goto LABEL_53; 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; sub_4A1080(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v24; } *(_BYTE *)(v15 + 32) = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) = 1; sub_4A1020(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 32) ) { *(_BYTE *)(v15 + 32) = 1; *(_BYTE *)(v6 + 32) = 0; sub_4A1080(i, v6); v15 = *(_DWORD *)v6; i = (int)v24; } if ( *(_BYTE *)(v15 + 33) ) goto LABEL_53; 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; sub_4A1020(i, v15); v15 = *(_DWORD *)v6; i = (int)v24; } *(_BYTE *)(v15 + 32) = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = 1; *(_BYTE *)(*(_DWORD *)v15 + 32) = 1; sub_4A1080(i, v6); break; } } *(_BYTE *)(v15 + 32) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 32) = 1; } v16 = (char *)v23 + 16; v22 = (char *)v23 + 16; v17 = *((_DWORD *)v23 + 5); v18 = **((_DWORD **)v23 + 5); v25 = 0; sub_5C39A0((int)((char *)v23 + 16), (int)&v21, v18, v17); operator delete(*((void **)v16 + 1)); operator delete(v23); v19 = *((_DWORD *)v24 + 2); if ( v19 ) *((_DWORD *)v24 + 2) = v19 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005C4210) -------------------------------------------------------- void __thiscall sub_5C4210(void *this, void *a2) { void *v2; // ebx@1 void *i; // esi@1 int v4; // ST08_4@2 int v5; // ST04_4@2 void *v6; // ST08_4@2 char v7; // [sp+10h] [bp-14h]@2 void *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@2 v8 = this; v2 = a2; for ( i = a2; !*((_BYTE *)i + 33); v2 = i ) { sub_5C4210(v8, *((void **)i + 2)); i = *(void **)i; v4 = *((_DWORD *)v2 + 5); v5 = **((_DWORD **)v2 + 5); v9 = 0; sub_5C39A0((int)((char *)v2 + 16), (int)&v7, v5, v4); v6 = (void *)*((_DWORD *)v2 + 5); v9 = -1; operator delete(v6); operator delete(v2); } } //----- (005C42B0) -------------------------------------------------------- int __thiscall sub_5C42B0(int this, int a2, void *a3, int a4) { int v4; // ebx@1 int v5; // ecx@1 int v6; // eax@1 bool v7; // zf@1 void *v8; // edx@1 int v9; // esi@1 bool v10; // cl@1 unsigned __int16 v11; // di@2 int v12; // edi@10 int v13; // ecx@13 int result; // eax@13 int v15; // esi@17 int v16; // ST0C_4@17 int v17; // ST08_4@17 int v18; // [sp-10h] [bp-30h]@12 char v19; // [sp-Ch] [bp-2Ch]@12 int v20; // [sp-8h] [bp-28h]@12 void *v21; // [sp-4h] [bp-24h]@12 int v22; // [sp+10h] [bp-10h]@1 int v23; // [sp+1Ch] [bp-4h]@17 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = *(_BYTE *)(v6 + 33) == 0; v8 = a3; v9 = v5; v10 = 1; LOBYTE(v22) = 1; if ( v7 ) { v11 = *((_WORD *)a3 + 6); do { v9 = v6; if ( (_BYTE)a4 ) v10 = *(_WORD *)(v6 + 12) >= v11; else v10 = v11 < *(_WORD *)(v6 + 12); LOBYTE(v22) = v10; if ( v10 ) v6 = *(_DWORD *)v6; else v6 = *(_DWORD *)(v6 + 8); } while ( !*(_BYTE *)(v6 + 33) ); } v12 = v9; a4 = v9; if ( v10 ) { if ( v9 == **(_DWORD **)(v4 + 4) ) { v21 = a3; v20 = v9; v19 = 1; v18 = (int)&a4; LABEL_13: v13 = *(_DWORD *)sub_5C3CE0(v4, v18, v19, v20, v21); result = a2; *(_DWORD *)a2 = v13; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5C2C10(&a4); v12 = a4; v8 = a3; } if ( *(_WORD *)(v12 + 12) < *((_WORD *)v8 + 6) ) { v21 = v8; v20 = v9; v19 = v22; v18 = (int)&a4; goto LABEL_13; } v15 = (int)((char *)v8 + 16); a4 = (int)((char *)v8 + 16); v16 = *((_DWORD *)v8 + 5); v17 = **((_DWORD **)v8 + 5); v23 = 0; sub_5C39A0((int)((char *)v8 + 16), (int)&v22, v17, v16); operator delete(*(void **)(v15 + 4)); operator delete(a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (005C43E0) -------------------------------------------------------- char __thiscall sub_5C43E0(void *this) { int v1; // ebx@1 unsigned int v2; // eax@1 unsigned int v3; // esi@1 int v4; // edi@3 char *v5; // ecx@4 int v6; // eax@4 int v7; // eax@9 int *v8; // eax@11 int v9; // eax@13 void *v10; // eax@14 int v11; // eax@15 int v12; // eax@15 int v13; // ST04_4@15 int v14; // ST04_4@15 char *v15; // edx@16 int v16; // ecx@16 int v17; // esi@16 int *v18; // ecx@24 int v19; // ecx@26 int v20; // eax@28 int v21; // ecx@28 int v22; // edx@30 int v23; // eax@30 int v24; // ecx@34 char result; // al@36 char v26; // [sp+10h] [bp-7Ch]@15 char v27; // [sp+14h] [bp-78h]@15 void *v28; // [sp+18h] [bp-74h]@15 char v29; // [sp+24h] [bp-68h]@15 void *v30; // [sp+28h] [bp-64h]@15 int v31; // [sp+2Ch] [bp-60h]@14 int (__thiscall **v32)(void *, char); // [sp+34h] [bp-58h]@39 int v33; // [sp+40h] [bp-4Ch]@30 int v34; // [sp+44h] [bp-48h]@30 int v35; // [sp+48h] [bp-44h]@30 int v36; // [sp+4Ch] [bp-40h]@30 int v37; // [sp+54h] [bp-38h]@15 char v38; // [sp+5Ch] [bp-30h]@15 char v39; // [sp+60h] [bp-2Ch]@15 char v40; // [sp+64h] [bp-28h]@15 int v41; // [sp+68h] [bp-24h]@38 int v42; // [sp+6Ch] [bp-20h]@25 void *v43; // [sp+70h] [bp-1Ch]@1 int v44; // [sp+74h] [bp-18h]@12 char *v45; // [sp+78h] [bp-14h]@9 int v46; // [sp+7Ch] [bp-10h]@1 int v47; // [sp+88h] [bp-4h]@15 v1 = (int)this; v43 = this; sub_5C2B30(this, "../9Data/Shine/AccUpGradeInfo.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v3 = 0; v46 = 0; if ( (signed int)v2 <= 0 ) { LABEL_40: result = 1; } else { while ( 1 ) { if ( v3 >= v2 || (v4 = sub_626BC0(v1, v3), v4 == v1 + 64) ) { sub_639100(&unk_86DDD8, (int)"AccUpGradeDataBox::augdb_Load - def data block", v3); loc_6391B0("AccUpGradeDataBox::augdb_Load"); return 0; } v5 = *(char **)(v1 + 180); v6 = *((_DWORD *)v5 + 1); while ( !*(_BYTE *)(v6 + 33) ) { if ( *(_WORD *)(v6 + 12) >= *(_WORD *)v4 ) { v5 = (char *)v6; v6 = *(_DWORD *)v6; } else { v6 = *(_DWORD *)(v6 + 8); } } v7 = *(_DWORD *)(v1 + 180); v45 = v5; if ( v5 == (char *)v7 || *(_WORD *)v4 < *((_WORD *)v5 + 6) ) { v44 = v7; v8 = &v44; } else { v8 = (int *)&v45; } v9 = *v8; if ( v9 == *(_DWORD *)(v1 + 180) ) { v31 = 0; v10 = (void *)operator new(0x1Cu); if ( !v10 ) { v41 = 0; std::exception::exception(&v41); v32 = &off_6A1FD4; _CxxThrowException(&v32, &unk_733E50); } v30 = v10; *(_DWORD *)v10 = v10; *((_DWORD *)v30 + 1) = v30; *((_DWORD *)v30 + 2) = v30; *((_BYTE *)v30 + 24) = 1; *((_BYTE *)v30 + 25) = 1; v47 = 0; v11 = sub_5C3BE0((int)&v26, v4, (int)&v29); LOBYTE(v47) = 1; v12 = sub_5C3C10((void *)(v1 + 176), v11); sub_5C42B0(v1 + 176, (int)&v37, (void *)v12, 0); v45 = &v27; v13 = *(_DWORD *)v28; LOBYTE(v47) = 2; sub_5C39A0((int)&v27, (int)&v40, v13, (int)v28); operator delete(v28); v14 = *(_DWORD *)v30; v47 = 3; sub_5C39A0((int)&v29, (int)&v39, v14, (int)v30); v47 = -1; operator delete(v30); v9 = *(_DWORD *)sub_648340(v1 + 176, (int)&v38, v4); if ( v9 == *(_DWORD *)(v1 + 180) ) break; } v15 = *(char **)(v9 + 20); v16 = *((_DWORD *)v15 + 1); v17 = v9 + 16; if ( !*(_BYTE *)(v16 + 25) ) { do { if ( *(_DWORD *)(v16 + 12) >= *(_DWORD *)(v4 + 34) ) { v15 = (char *)v16; v16 = *(_DWORD *)v16; } else { v16 = *(_DWORD *)(v16 + 8); } } while ( !*(_BYTE *)(v16 + 25) ); v1 = (int)v43; } v45 = v15; if ( v15 == *(char **)(v9 + 20) || *(_DWORD *)(v4 + 34) < *((_DWORD *)v15 + 3) ) { v42 = *(_DWORD *)(v9 + 20); v18 = &v42; } else { v18 = (int *)&v45; } v19 = *v18; if ( v19 == *(_DWORD *)(v9 + 20) ) { if ( *(_WORD *)(v4 + 38) == 1 ) { v20 = v4; v21 = 0; } else { v20 = 0; v21 = v4; } v22 = *(_DWORD *)(v4 + 34); v34 = v20; v35 = v21; v33 = v22; v23 = sub_5C3440((void *)v17, (int)&v33); sub_5C32A0(v17, (int)&v36, (void *)v23, 0); } else { if ( *(_WORD *)(v4 + 38) == 1 ) *(_DWORD *)(v19 + 16) = v4; else *(_DWORD *)(v19 + 20) = v4; } v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v24 = v46 + 1; v46 = v24; if ( v24 >= (signed int)v2 ) goto LABEL_40; v3 = v24; } sub_639100(&unk_86DDD8, (int)"AccUpGradeDataBox::augdb_Load - data insert fail", v46); loc_6391B0("AccUpGradeDataBox::augdb_Load"); result = 0; } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C46E0) -------------------------------------------------------- int __thiscall sub_5C46E0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 33) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 33) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_5C3F60((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5C4210((void *)v4, *(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (005C47A0) -------------------------------------------------------- void __thiscall sub_5C47A0(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // eax@1 int v4; // ST04_4@1 char v5; // [sp+Ch] [bp-18h]@1 int v6; // [sp+10h] [bp-14h]@1 int v7; // [sp+14h] [bp-10h]@1 int v8; // [sp+20h] [bp-4h]@1 v1 = this; v7 = this; v2 = this + 176; v8 = 0; v6 = this + 176; v3 = *(_DWORD *)(this + 180); v4 = *(_DWORD *)v3; LOBYTE(v8) = 1; sub_5C46E0(this + 176, (int)&v5, v4, v3); operator delete(*(void **)(v2 + 4)); v8 = -1; *(_DWORD *)v1 = &off_6F93B4; sub_639940(v1); } // 6F93B4: using guessed type int (__thiscall *off_6F93B4)(void *, char); //----- (005C4830) -------------------------------------------------------- int __thiscall sub_5C4830(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+8h] [bp-20h]@4 int v5; // [sp+14h] [bp-14h]@1 int v6; // [sp+18h] [bp-10h]@3 int v7; // [sp+24h] [bp-4h]@1 v1 = this; v5 = this; sub_639920(this); *(_DWORD *)v1 = &off_6F93B4; memset((void *)(v1 + 64), 0, 0x70u); v7 = 0; *(_DWORD *)(v1 + 184) = 0; v2 = operator new(0x24u); if ( !v2 ) { v6 = 0; std::exception::exception(&v6); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 180) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 180) + 4) = *(_DWORD *)(v1 + 180); *(_DWORD *)(*(_DWORD *)(v1 + 180) + 8) = *(_DWORD *)(v1 + 180); *(_BYTE *)(*(_DWORD *)(v1 + 180) + 32) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 180) + 33) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6F93B4: using guessed type int (__thiscall *off_6F93B4)(void *, char); //----- (005C4900) -------------------------------------------------------- void **__cdecl sub_5C4900() { return &dword_86C3D4; } //----- (005C4910) -------------------------------------------------------- int __cdecl sub_5C4910(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 33); i = *(_DWORD *)i ) result = i; return result; } //----- (005C4930) -------------------------------------------------------- int __cdecl sub_5C4930() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359824 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359824: using guessed type int dword_13359824; //----- (005C4950) -------------------------------------------------------- int __cdecl sub_5C4950() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359828 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359828: using guessed type int dword_13359828; //----- (005C4970) -------------------------------------------------------- int __cdecl sub_5C4970() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_1335982C + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 1335982C: using guessed type int dword_1335982C; //----- (005C4990) -------------------------------------------------------- int __cdecl sub_5C4990() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359830 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359830: using guessed type int dword_13359830; //----- (005C49B0) -------------------------------------------------------- int __cdecl sub_5C49B0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359834 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359834: using guessed type int dword_13359834; //----- (005C49D0) -------------------------------------------------------- int __cdecl sub_5C49D0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359838 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359838: using guessed type int dword_13359838; //----- (005C49F0) -------------------------------------------------------- int __cdecl sub_5C49F0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_1335983C + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 1335983C: using guessed type int dword_1335983C; //----- (005C4A10) -------------------------------------------------------- __int16 __cdecl sub_5C4A10(int a1, int a2, signed int a3) { unsigned int v3; // esi@3 int v4; // edi@4 int v5; // eax@5 if ( a3 >= 7 ) sub_639100(&unk_86DDD8, (int)"GuildTournamentScoreTable::GetScore : No Script", 0); v3 = 0; if ( !sub_5C4930() ) return 0; v4 = a2; while ( 1 ) { v5 = sub_626BC0(dword_13359824 + 4, v3); if ( *(_WORD *)v5 == a1 ) break; LABEL_8: ++v3; if ( v3 >= sub_5C4930() ) return 0; } if ( v4 ) { --v4; goto LABEL_8; } return *(_WORD *)(v5 + 2 * a3 + 2); } // 13359824: using guessed type int dword_13359824; //----- (005C4A80) -------------------------------------------------------- signed int __cdecl sub_5C4A80(int a1) { unsigned int v1; // esi@1 int v2; // eax@2 signed int result; // eax@4 v1 = 0; if ( sub_5C4970() ) { while ( 1 ) { v2 = sub_626BC0(dword_1335982C + 4, v1); if ( *(_WORD *)v2 == a1 ) break; ++v1; if ( v1 >= sub_5C4970() ) goto LABEL_4; } result = *(_WORD *)(v2 + 2); } else { LABEL_4: sub_639100(&unk_86DDD8, (int)"GuildTournamentOccupyTable::GetOccupyTime : Not Find : %d", a1); result = -1; } return result; } // 1335982C: using guessed type int dword_1335982C; //----- (005C4AE0) -------------------------------------------------------- int __cdecl sub_5C4AE0(int a1) { unsigned int v1; // esi@1 int v2; // eax@2 int result; // eax@4 v1 = 0; if ( sub_5C4970() ) { while ( 1 ) { v2 = sub_626BC0(dword_1335982C + 4, v1); if ( *(_WORD *)v2 == a1 ) break; ++v1; if ( v1 >= sub_5C4970() ) goto LABEL_4; } result = *(_WORD *)(v2 + 4); } else { LABEL_4: sub_639100(&unk_86DDD8, (int)"GuildTournamentOccupyTable::GetScore : Not Find : %d", a1); result = 0; } return result; } // 1335982C: using guessed type int dword_1335982C; //----- (005C4B40) -------------------------------------------------------- int __cdecl sub_5C4B40(int a1, int a2) { unsigned int v2; // esi@1 int result; // eax@2 v2 = 0; if ( sub_5C4990() ) { while ( 1 ) { result = sub_626BC0(dword_13359830 + 4, v2); if ( *(_WORD *)result == a1 ) { if ( a2 == *(_WORD *)(result + 2) ) break; } ++v2; if ( v2 >= sub_5C4990() ) goto LABEL_5; } } else { LABEL_5: result = 0; } return result; } // 13359830: using guessed type int dword_13359830; //----- (005C4B90) -------------------------------------------------------- int __cdecl sub_5C4B90(int a1, unsigned int a2) { int v2; // ebx@1 unsigned int v3; // esi@1 int v4; // eax@2 v2 = 0; v3 = 0; if ( sub_5C4990() ) { do { v4 = sub_626BC0(dword_13359830 + 4, v3); if ( *(_WORD *)v4 == a1 && *(_WORD *)(v4 + 4) <= a2 ) ++v2; ++v3; } while ( v3 < sub_5C4990() ); } return v2; } // 13359830: using guessed type int dword_13359830; //----- (005C4BE0) -------------------------------------------------------- char __cdecl sub_5C4BE0(char a1, unsigned __int8 a2) { unsigned __int8 v2; // al@1 signed int v3; // ecx@3 int v4; // ebx@5 int v5; // edi@5 int v6; // eax@6 int v7; // esi@6 char result; // al@16 unsigned int v9; // [sp+Ch] [bp+Ch]@5 v2 = a2; if ( a2 > 2u ) { sub_639100(&unk_86DDD8, (int)"GTIGetRateTable::GetItemIDbyProbabilityCalculate Level Over Value :", a2); v2 = 0; } v3 = 0; if ( a1 == 1 ) v3 = 3; v4 = v3 + v2; v9 = 0; v5 = rand() % dword_14D214A4[v4]; if ( sub_5C49D0() ) { while ( 1 ) { v6 = sub_626BC0(dword_13359838 + 4, v9); v7 = v6; switch ( v4 ) { case 0: v5 -= *(_BYTE *)(v6 + 1); break; case 1: v5 -= *(_BYTE *)(v6 + 3); break; case 2: v5 -= *(_BYTE *)(v6 + 5); break; case 3: v5 -= *(_BYTE *)(v6 + 2); break; case 4: v5 -= *(_BYTE *)(v6 + 4); break; case 5: v5 -= *(_BYTE *)(v6 + 6); break; default: sub_639100(&unk_86DDD8, (int)"GTIGetRateTable::GetItemIDbyProbabilityCalculate Not Find enum : ", v4); break; } if ( v5 <= 0 ) break; ++v9; if ( v9 >= sub_5C49D0() ) goto LABEL_16; } result = *(_BYTE *)v7; } else { LABEL_16: sub_639100(&unk_86DDD8, (int)"GTIGetRateTable::GetItemIDbyProbabilityCalculate Probability error : ", v5); result = 0; } return result; } // 13359838: using guessed type int dword_13359838; // 14D214A4: using guessed type int dword_14D214A4[]; //----- (005C4CE0) -------------------------------------------------------- char __cdecl sub_5C4CE0() { unsigned int v0; // esi@1 int v1; // eax@2 v0 = 0; dword_14D214A4[0] = 0; dword_14D214A8 = 0; dword_14D214AC = 0; dword_14D214B0 = 0; dword_14D214B4 = 0; dword_14D214B8 = 0; if ( sub_5C49D0() ) { do { v1 = sub_626BC0(dword_13359838 + 4, v0); dword_14D214A4[0] += *(_BYTE *)(v1 + 1); dword_14D214A8 += *(_BYTE *)(v1 + 3); dword_14D214AC += *(_BYTE *)(v1 + 5); dword_14D214B0 += *(_BYTE *)(v1 + 2); dword_14D214B4 += *(_BYTE *)(v1 + 4); dword_14D214B8 += *(_BYTE *)(v1 + 6); ++v0; } while ( v0 < sub_5C49D0() ); } return 1; } // 13359838: using guessed type int dword_13359838; // 14D214A4: using guessed type int dword_14D214A4[]; // 14D214A8: using guessed type int dword_14D214A8; // 14D214AC: using guessed type int dword_14D214AC; // 14D214B0: using guessed type int dword_14D214B0; // 14D214B4: using guessed type int dword_14D214B4; // 14D214B8: using guessed type int dword_14D214B8; //----- (005C4D70) -------------------------------------------------------- int __cdecl sub_5C4D70(const char *a1) { unsigned int v1; // esi@1 int result; // eax@2 v1 = 0; if ( sub_5C49F0() ) { while ( 1 ) { result = sub_626BC0(dword_1335983C + 4, v1); if ( !strcmp(a1, (const char *)result) ) break; ++v1; if ( v1 >= sub_5C49F0() ) goto LABEL_4; } } else { LABEL_4: result = 0; } return result; } // 1335983C: using guessed type int dword_1335983C; //----- (005C4DE0) -------------------------------------------------------- void __thiscall sub_5C4DE0(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 4) ) operator delete(*(void **)(this + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; } //----- (005C4E10) -------------------------------------------------------- int __cdecl sub_5C4E10(char *a1) { return sub_4241C0((int)&dword_86C3D4, a1, strlen(a1)); } //----- (005C4E40) -------------------------------------------------------- int __cdecl sub_5C4E40(int a1, int a2) { unsigned int v2; // esi@1 int v3; // eax@2 int result; // eax@4 char *v5; // ecx@5 int v6; // eax@5 int v7; // edi@5 char v8; // dl@6 v2 = 0; if ( sub_5C49B0() ) { while ( 1 ) { v3 = sub_626BC0(dword_13359834 + 4, v2); if ( *(_WORD *)v3 == a2 ) break; ++v2; if ( v2 >= sub_5C49B0() ) goto LABEL_4; } v5 = (char *)(v3 + 2); v6 = v3 + 2; *(_DWORD *)(a1 + 20) = 15; *(_DWORD *)(a1 + 16) = 0; *(_BYTE *)a1 = 0; v7 = v6 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); sub_4241C0(a1, v5, v6 - v7); result = a1; } else { LABEL_4: result = a1; *(_DWORD *)(a1 + 20) = 15; *(_DWORD *)(a1 + 16) = 0; *(_BYTE *)a1 = 0; } return result; } // 13359834: using guessed type int dword_13359834; //----- (005C4ED0) -------------------------------------------------------- int __thiscall sub_5C4ED0(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int v5; // ecx@3 int (__thiscall **v6)(void *, char); // [sp+14h] [bp-18h]@7 v2 = this; result = operator new(0x24u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v6 = &off_6A1FD4; _CxxThrowException(&v6, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 32) = 0; if ( result != -12 ) { v4 = a2 + 4; *(_DWORD *)(result + 12) = *(_DWORD *)a2; v5 = result + 16; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 24) = 0; if ( result + 16 != v4 ) { *(_DWORD *)v5 = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)v5 = *(_DWORD *)v4; *(_DWORD *)(result + 20) = *(_DWORD *)(v4 + 4); *(_DWORD *)(result + 24) = *(_DWORD *)(v4 + 8); *(_DWORD *)v4 = 0; *(_DWORD *)(v4 + 4) = 0; *(_DWORD *)(v4 + 8) = 0; } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C4FA0) -------------------------------------------------------- int __thiscall sub_5C4FA0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // edi@1 int result; // eax@2 int v8; // eax@7 int v9; // ecx@20 int v10; // [sp+8h] [bp-8h]@20 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a4; if ( !*(_DWORD *)(this + 8) ) { sub_465FF0(this, a2, 1, v5, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v5 ) { if ( *(_DWORD *)(a4 + 12) < *(_DWORD *)(a3 + 12) ) { sub_465FF0(this, a2, 1, a3, (void *)a4); return a2; } goto LABEL_20; } if ( a3 == v5 ) { v8 = *(_DWORD *)(v5 + 8); if ( *(_DWORD *)(v8 + 12) < *(_DWORD *)(a4 + 12) ) { sub_465FF0(this, a2, 0, v8, (void *)a4); return a2; } goto LABEL_20; } if ( *(_DWORD *)(a4 + 12) >= *(_DWORD *)(a3 + 12) || (a4 = a3, sub_5C2C10(&a4), *(_DWORD *)(a4 + 12) >= *(_DWORD *)(v6 + 12)) ) { if ( *(_DWORD *)(a3 + 12) >= *(_DWORD *)(v6 + 12) || (a4 = a3, sub_647B50(&a4), a4 != *(_DWORD *)(v4 + 4)) && *(_DWORD *)(v6 + 12) >= *(_DWORD *)(a4 + 12) ) { LABEL_20: v9 = *(_DWORD *)sub_4A1D80(v4, (int)&v10, (void *)v6, 0); result = a2; *(_DWORD *)a2 = v9; return result; } if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 33) ) { sub_465FF0(v4, a2, 0, a3, (void *)v6); result = a2; } else { sub_465FF0(v4, a2, 1, a4, (void *)v6); result = a2; } } else { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 33) ) { sub_465FF0(v4, a2, 0, a4, (void *)v6); result = a2; } else { sub_465FF0(v4, a2, 1, a3, (void *)v6); result = a2; } } return result; } //----- (005C5100) -------------------------------------------------------- int __thiscall sub_5C5100(int this, int *a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // edi@1 int v6; // ecx@8 int v7; // eax@8 int *v8; // esi@8 int result; // eax@10 int v10; // [sp+10h] [bp-30h]@8 void *v11; // [sp+14h] [bp-2Ch]@8 int v12; // [sp+18h] [bp-28h]@8 int v13; // [sp+1Ch] [bp-24h]@8 int v14; // [sp+24h] [bp-1Ch]@8 int v15; // [sp+28h] [bp-18h]@8 int v16; // [sp+2Ch] [bp-14h]@8 int v17; // [sp+3Ch] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); v5 = v3; while ( !*(_BYTE *)(v4 + 33) ) { if ( *(_DWORD *)(v4 + 12) >= *a2 ) { v5 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v5 != *(_DWORD *)(v2 + 4) && *a2 >= *(_DWORD *)(v5 + 12) ) { result = v5 + 16; } else { v6 = *a2; v17 = 0; v10 = v6; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; LOBYTE(v17) = 1; v7 = sub_5C4ED0((void *)v2, (int)&v10); sub_5C4FA0(v2, (int)&a2, v5, v7); v8 = a2; if ( v11 ) operator delete(v11); result = (int)(v8 + 4); } return result; } //----- (005C51E0) -------------------------------------------------------- int __cdecl sub_5C51E0(int a1, int a2, int a3, signed int a4) { int v4; // eax@1 int v5; // ebx@1 int v6; // edi@1 int v7; // ecx@1 unsigned int v8; // edx@1 int v9; // esi@2 int v10; // ecx@6 v4 = sub_5C5100((int)&unk_14D214BC, &a1); v5 = *(_DWORD *)(v4 + 4); v6 = *(_DWORD *)v4; a4 -= a3; v7 = (v5 - v6) >> 2; v8 = 0; if ( !v7 ) goto LABEL_11; v9 = v6; if ( (unsigned int)v7 <= 0 ) goto LABEL_8; do { if ( (double)a4 >= *(float *)(*(_DWORD *)v9 + 2) ) { if ( v7 > v8 ) { v10 = *(_WORD *)(*(_DWORD *)(v6 + 4 * v8) + 6); return a2 * v10 / 100; } LABEL_8: sub_6517D8((int)"invalid vector subscript"); } ++v8; v9 += 4; } while ( v7 > v8 ); if ( v7 ) { v10 = *(_WORD *)(*(_DWORD *)(v5 - 4) + 6); return a2 * v10 / 100; } LABEL_11: sub_639100(&unk_86DDD8, (int)"GuildTournamentBalanceTable::BalanceScoreMediate Not Find : %d", a1); return 0; } //----- (005C5290) -------------------------------------------------------- char __cdecl sub_5C5290() { unsigned int v0; // esi@1 int v1; // eax@2 int v2; // edi@2 int v3; // eax@2 int v4; // eax@2 int v5; // esi@2 unsigned int v6; // eax@2 int v7; // edx@3 int v8; // ecx@4 signed int v9; // edi@4 int v10; // eax@5 int v11; // eax@6 int v12; // ecx@6 unsigned int v13; // ecx@8 int v14; // eax@13 int v15; // ecx@15 int v16; // eax@16 int v17; // eax@17 int v18; // ecx@17 unsigned int v19; // ecx@19 int v20; // eax@24 int v22; // [sp+4h] [bp-Ch]@2 unsigned int v23; // [sp+8h] [bp-8h]@1 int v24; // [sp+Ch] [bp-4h]@2 v0 = 0; v23 = 0; if ( sub_5C4950() ) { do { v1 = sub_626BC0(dword_13359828 + 4, v0); v2 = v1; v3 = *(_WORD *)v1; v24 = v2; v22 = v3; v4 = sub_5C5100((int)&unk_14D214BC, &v22); v5 = v4; v6 = *(_DWORD *)(v4 + 4); if ( (unsigned int)&v24 >= v6 || (v7 = *(_DWORD *)v5, *(_DWORD *)v5 > (unsigned int)&v24) ) { v15 = *(_DWORD *)(v5 + 8); if ( v6 == v15 ) { v16 = (signed int)(v6 - *(_DWORD *)v5) >> 2; if ( (unsigned int)v16 > 0x3FFFFFFE ) LABEL_28: sub_65178B((int)"vector too long"); v17 = v16 + 1; v18 = (v15 - *(_DWORD *)v5) >> 2; if ( v17 > (unsigned int)v18 ) { if ( 1073741823 - ((unsigned int)v18 >> 1) >= v18 ) v19 = ((unsigned int)v18 >> 1) + v18; else v19 = 0; if ( v19 < v17 ) v19 = v17; sub_5839E0(v5, v19); } } v20 = *(_DWORD *)(v5 + 4); if ( v20 ) *(_DWORD *)v20 = v2; } else { v8 = *(_DWORD *)(v5 + 8); v9 = (signed int)((char *)&v24 - v7) >> 2; if ( v6 == v8 ) { v10 = (signed int)(v6 - v7) >> 2; if ( (unsigned int)v10 > 0x3FFFFFFE ) goto LABEL_28; v11 = v10 + 1; v12 = (v8 - v7) >> 2; if ( v11 > (unsigned int)v12 ) { if ( 1073741823 - ((unsigned int)v12 >> 1) >= v12 ) v13 = ((unsigned int)v12 >> 1) + v12; else v13 = 0; if ( v13 < v11 ) v13 = v11; sub_5839E0(v5, v13); } } v14 = *(_DWORD *)(v5 + 4); if ( v14 ) *(_DWORD *)v14 = *(_DWORD *)(*(_DWORD *)v5 + 4 * v9); } *(_DWORD *)(v5 + 4) += 4; ++v23; v0 = v23; } while ( v23 < sub_5C4950() ); } return 1; } // 13359828: using guessed type int dword_13359828; //----- (005C53C0) -------------------------------------------------------- int __cdecl sub_5C53C0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_1335985C + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 1335985C: using guessed type int dword_1335985C; //----- (005C53E0) -------------------------------------------------------- int __cdecl sub_5C53E0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359860 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359860: using guessed type int dword_13359860; //----- (005C5400) -------------------------------------------------------- int __cdecl sub_5C5400() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359864 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359864: using guessed type int dword_13359864; //----- (005C5420) -------------------------------------------------------- int __cdecl sub_5C5420() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359868 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359868: using guessed type int dword_13359868; //----- (005C5440) -------------------------------------------------------- char __cdecl sub_5C5440(const char *a1, int a2, int a3) { char result; // al@2 unsigned int v4; // esi@4 int v5; // eax@5 if ( a2 && a3 ) { v4 = 0; if ( sub_5C53C0() ) { while ( 1 ) { v5 = sub_626BC0(dword_1335985C + 4, v4); if ( !strcmp(a1, (const char *)v5) ) { if ( *(_BYTE *)(v5 + 32) == a2 ) break; } ++v4; if ( v4 >= sub_5C53C0() ) goto LABEL_8; } *(_WORD *)a3 = *(_WORD *)(v5 + 33); result = 1; } else { LABEL_8: result = 0; } } else { result = 0; } return result; } // 1335985C: using guessed type int dword_1335985C; //----- (005C54D0) -------------------------------------------------------- char __cdecl sub_5C54D0(const char *a1, int a2) { char result; // al@2 unsigned int v3; // esi@5 int v4; // eax@6 if ( a2 ) { if ( a1 ) { v3 = 0; if ( sub_5C5400() ) { while ( 1 ) { v4 = sub_626BC0(dword_13359864 + 4, v3); if ( !strcmp(a1, (const char *)v4) ) break; ++v3; if ( v3 >= sub_5C5400() ) goto LABEL_8; } *(_WORD *)a2 = *(_WORD *)(v4 + 36); result = 1; } else { LABEL_8: result = 0; } } else { result = 0; } } else { result = 0; } return result; } // 13359864: using guessed type int dword_13359864; //----- (005C5560) -------------------------------------------------------- char __stdcall sub_5C5560(unsigned __int16 a1) { int v1; // eax@1 char result; // al@2 int v3; // ebx@3 unsigned int v4; // edi@3 int v5; // eax@4 int v6; // esi@4 int v7; // eax@9 int v8; // eax@9 v1 = sub_418CB0((int)&dword_14D20890, a1); if ( v1 ) { v3 = *(_DWORD *)(*(_DWORD *)v1 + 118); v4 = 0; if ( sub_5C5420() ) { while ( 1 ) { v5 = sub_626BC0(dword_13359868 + 4, v4); v6 = v5; if ( !v5 ) break; if ( v3 == *(_DWORD *)v5 ) { LOWORD(v7) = sub_6396B0( &unk_14D42DC0, (unsigned __int16)(*(_WORD *)(v5 + 4) + *(_WORD *)(v5 + 6) + *(_WORD *)(v5 + 8))); v8 = v7 - *(_WORD *)(v6 + 4); if ( v8 < 0 ) break; return (v8 - *(_WORD *)(v6 + 6) >= 0) + 1; } ++v4; if ( v4 >= sub_5C5420() ) goto LABEL_7; } } else { LABEL_7: sub_639100(&unk_86DDD8, (int)"EnchantSocketRateDataChild::iod_GetSocketCount UnKnow Grade Type", v3); } result = 0; } else { result = 0; } return result; } // 13359868: using guessed type int dword_13359868; // 14D20890: using guessed type int dword_14D20890; //----- (005C5600) -------------------------------------------------------- char __cdecl sub_5C5600() { if ( !(dword_14D214D0 & 1) ) { dword_14D214D0 |= 1u; dword_14D214CC = (int)&off_6F9620; } sub_648EA0((int)&dword_14D214CC); return 1; } // 6F9620: using guessed type int (__stdcall *off_6F9620)(int); // 14D214CC: using guessed type int dword_14D214CC; // 14D214D0: using guessed type int dword_14D214D0; //----- (005C5630) -------------------------------------------------------- int __thiscall sub_5C5630(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 21) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_WORD *)a3 < *(_WORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (005C56A0) -------------------------------------------------------- int __thiscall sub_5C56A0(void *this, char a2) { int v2; // eax@1 int result; // eax@2 void *v4; // [sp+0h] [bp-4h]@1 v4 = this; v2 = *(_DWORD *)sub_5C5630((int)&unk_14D214D4, (int)&v4, (int)&a2); if ( (void *)v2 == dword_14D214D8 ) result = 0; else result = *(_DWORD *)(v2 + 16); return result; } //----- (005C56D0) -------------------------------------------------------- char __cdecl sub_5C56D0() { unsigned int v0; // esi@1 int v1; // eax@2 int v2; // eax@2 int v3; // edx@2 int v4; // ecx@2 bool v5; // zf@2 unsigned __int16 v6; // di@3 __int16 v8; // [sp+4h] [bp-10h]@2 int v9; // [sp+8h] [bp-Ch]@2 int v10; // [sp+Ch] [bp-8h]@8 char v11[4]; // [sp+10h] [bp-4h]@2 v0 = 0; if ( sub_5C53E0() ) { do { v1 = sub_626BC0(dword_13359860 + 4, v0); v8 = *(_WORD *)v1; v9 = v1; v2 = sub_5C5AB0(&unk_14D214D4, (int)&v8); v3 = (int)dword_14D214D8; v4 = *((_DWORD *)dword_14D214D8 + 1); v5 = *(_BYTE *)(v4 + 21) == 0; v11[0] = 1; if ( v5 ) { v6 = *(_WORD *)(v2 + 12); do { v3 = v4; v11[0] = v6 < *(_WORD *)(v4 + 12); if ( v11[0] ) v4 = *(_DWORD *)v4; else v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 21) ); } sub_5CC4F0((int)&unk_14D214D4, (int)&v10, v11[0], v3, (void *)v2); ++v0; } while ( v0 < sub_5C53E0() ); } return 1; } // 13359860: using guessed type int dword_13359860; //----- (005C5770) -------------------------------------------------------- char __stdcall sub_5C5770(int a1) { return *(_BYTE *)a1; } //----- (005C5780) -------------------------------------------------------- int __cdecl sub_5C5780() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359844 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359844: using guessed type int dword_13359844; //----- (005C57A0) -------------------------------------------------------- int __cdecl sub_5C57A0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359848 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359848: using guessed type int dword_13359848; //----- (005C57C0) -------------------------------------------------------- signed int __cdecl sub_5C57C0(int a1, signed int a2) { int v2; // esi@1 int v3; // ecx@3 int v4; // eax@4 signed int result; // eax@5 v2 = dword_1335986C; if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)dword_1335986C + 16))(dword_1335986C, a1) && (unsigned __int8)a1 <= *(_BYTE *)(v2 + 200) && (v3 = *(_DWORD *)(v2 + 196), *(_DWORD *)(v3 + 4 * (unsigned __int8)a1)) && (v4 = *(_DWORD *)(v3 + 4 * (unsigned __int8)a1)) != 0 && a2 < 150 ) result = *(_WORD *)(dword_86C458[a2] + v4); else result = 1000; return result; } // 86C458: using guessed type int dword_86C458[]; // 1335986C: using guessed type int dword_1335986C; //----- (005C5820) -------------------------------------------------------- signed int __cdecl sub_5C5820(int a1, int a2) { unsigned int v2; // esi@1 signed int result; // eax@4 v2 = 0; if ( sub_5C5780() ) { while ( a2 - a1 > *(_WORD *)sub_626BC0(dword_13359844 + 4, v2) ) { ++v2; if ( v2 >= sub_5C5780() ) goto LABEL_4; } result = *(_WORD *)(sub_626BC0(dword_13359844 + 4, v2) + 2); } else { LABEL_4: result = 1000; } return result; } // 13359844: using guessed type int dword_13359844; //----- (005C5880) -------------------------------------------------------- signed int __cdecl sub_5C5880(int a1, int a2) { unsigned int v2; // esi@1 signed int result; // eax@4 v2 = 0; if ( sub_5C57A0() ) { while ( a1 - a2 > *(_WORD *)sub_626BC0(dword_13359848 + 4, v2) ) { ++v2; if ( v2 >= sub_5C57A0() ) goto LABEL_4; } result = *(_WORD *)(sub_626BC0(dword_13359848 + 4, v2) + 2); } else { LABEL_4: result = 1000; } return result; } // 13359848: using guessed type int dword_13359848; //----- (005C58E0) -------------------------------------------------------- char __cdecl sub_5C58E0(int a1, unsigned __int8 a2) { void *v2; // ecx@1 int v3; // eax@3 v2 = sub_44A140(&unk_8BB3B0, a2); if ( v2 ) { switch ( a1 ) { case 0: v3 = (*(int (**)(void))(*(_DWORD *)v2 + 72))() == 1; break; case 1: LOBYTE(v3) = (*(int (**)(void))(*(_DWORD *)v2 + 72))() == 11; break; case 2: LOBYTE(v3) = (*(int (**)(void))(*(_DWORD *)v2 + 72))() == 6; break; case 3: LOBYTE(v3) = (*(int (**)(void))(*(_DWORD *)v2 + 72))() == 16; break; case 4: LOBYTE(v3) = (*(int (**)(void))(*(_DWORD *)v2 + 72))() == 21; break; case 5: LOBYTE(v3) = (*(int (**)(void))(*(_DWORD *)v2 + 72))() == 26; break; case 6: LOBYTE(v3) = 1; break; default: sub_639100(&unk_86DDD8, (int)"MysteryVaultTable::IsCheckClassType Not Define Type", 0); goto LABEL_11; } } else { LABEL_11: LOBYTE(v3) = 0; } return v3; } //----- (005C59B0) -------------------------------------------------------- int __cdecl sub_5C59B0() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359840 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359840: using guessed type int dword_13359840; //----- (005C59D0) -------------------------------------------------------- int __thiscall sub_5C59D0(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 21) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005C5A30) -------------------------------------------------------- int __cdecl sub_5C5A30(int a1, unsigned __int16 a2) { void *v2; // ecx@1 int v3; // eax@1 int result; // eax@6 v2 = dword_14D214E8; v3 = *((_DWORD *)dword_14D214E8 + 1); while ( !*(_BYTE *)(v3 + 21) ) { if ( *(_WORD *)(v3 + 12) >= a2 ) { v2 = (void *)v3; v3 = *(_DWORD *)v3; } else { v3 = *(_DWORD *)(v3 + 8); } } result = a1; *(_DWORD *)a1 = v2; return result; } //----- (005C5A70) -------------------------------------------------------- int __cdecl sub_5C5A70(int a1, unsigned __int16 a2) { void *v2; // ecx@1 int v3; // eax@1 int result; // eax@6 v2 = dword_14D214E8; v3 = *((_DWORD *)dword_14D214E8 + 1); while ( !*(_BYTE *)(v3 + 21) ) { if ( a2 >= *(_WORD *)(v3 + 12) ) { v3 = *(_DWORD *)(v3 + 8); } else { v2 = (void *)v3; v3 = *(_DWORD *)v3; } } result = a1; *(_DWORD *)a1 = v2; return result; } //----- (005C5AB0) -------------------------------------------------------- int __thiscall sub_5C5AB0(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x18u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 20) = 0; if ( result != -12 ) { v4 = a2; *(_WORD *)(result + 12) = *(_WORD *)a2; *(_DWORD *)(result + 16) = *(_DWORD *)(v4 + 4); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005C5B20) -------------------------------------------------------- int __thiscall sub_5C5B20(void *this, int a2, int a3) { int v3; // edi@1 int v4; // eax@1 int v5; // ecx@1 bool v6; // zf@1 int v7; // esi@1 unsigned __int16 v8; // bx@2 int v9; // ecx@7 int result; // eax@7 v3 = (int)this; v4 = sub_5C5AB0(this, a3); v5 = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 4); v6 = *(_BYTE *)(v5 + 21) == 0; v7 = *(_DWORD *)(v3 + 4); LOBYTE(a3) = 1; if ( v6 ) { v8 = *(_WORD *)(v4 + 12); do { v7 = v5; LOBYTE(a3) = v8 < *(_WORD *)(v5 + 12); if ( (_BYTE)a3 ) v5 = *(_DWORD *)v5; else v5 = *(_DWORD *)(v5 + 8); } while ( !*(_BYTE *)(v5 + 21) ); } v9 = *(_DWORD *)sub_5CC4F0(v3, (int)&a3, a3, v7, (void *)v4); result = a2; *(_DWORD *)a2 = v9; return result; } //----- (005C5B90) -------------------------------------------------------- char __cdecl sub_5C5B90() { int v0; // edi@1 char result; // al@2 int v2; // eax@4 int v3; // esi@4 unsigned __int16 v4; // bx@5 char v5; // al@6 char v6; // cl@6 unsigned __int16 v7; // ax@13 int v8; // eax@16 unsigned __int16 v9; // [sp+Ch] [bp-18h]@15 int v10; // [sp+10h] [bp-14h]@15 char v11; // [sp+14h] [bp-10h]@15 unsigned int v12; // [sp+18h] [bp-Ch]@1 int v13; // [sp+1Ch] [bp-8h]@1 char v14; // [sp+23h] [bp-1h]@1 v0 = 0; v14 = 0; v13 = 0; v12 = 0; if ( sub_5C59B0() ) { while ( 1 ) { v2 = sub_626BC0(dword_13359840 + 4, v0); v3 = v2; if ( !v2 ) { sub_639100(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() Vault data null :", v0); return 0; } v4 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v2); if ( v4 == -1 ) { sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() Invalid Group ItemId :", v3); return 0; } v5 = *(_BYTE *)(v3 + 71); v6 = v14; if ( v5 != v14 ) { if ( v14 && (unsigned __int16)v13 < 0x3E8u ) { sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() Group Rate Shortage :", v3 + 36); return 0; } v14 = *(_BYTE *)(v3 + 71); v13 = 0; v6 = v5; } if ( v6 ) { LOWORD(v13) = *(_WORD *)(v3 + 69) + v13; if ( (unsigned __int16)v13 > 0x3E8u ) { sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() Group Rate Over :", v3 + 36); return 0; } } if ( strcmp((const char *)(v3 + 36), "-") ) { v7 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v3 + 36)); if ( -1 == v7 ) { sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() Invalid Make ItemId :", v3 + 36); return 0; } if ( *(_DWORD *)(*(_DWORD *)sub_418CB0((int)&dword_14D20890, v7) + 106) < (unsigned int)*(_BYTE *)(v3 + 68) ) { sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() Maxlot Over :", v3 + 36); return 0; } v9 = v4; v10 = v3; if ( *(void **)sub_5C5B20(&unk_14D214E4, (int)&v11, (int)&v9) == dword_14D214E8 ) break; } v8 = (int)sub_59A6B0((int)"UsePresentBox"); sub_594070((int)&dword_13258868, v4, (int)off_86ACA8, v8); ++v12; if ( v12 >= sub_5C59B0() ) return 1; v0 = v12; } sub_6390B0(&unk_86DDD8, (int)" MysteryBoltTable::DataProcess() InSert Fail :", v3); result = 0; } else { result = 1; } return result; } // 86ACA8: using guessed type int (__thiscall *off_86ACA8[7])(void *, char); // 13258868: using guessed type int dword_13258868; // 13359840: using guessed type int dword_13359840; // 14D20890: using guessed type int dword_14D20890; //----- (005C5DD0) -------------------------------------------------------- int __thiscall sub_5C5DD0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; *(_BYTE *)(this + 8) = 0; return result; } //----- (005C5DE0) -------------------------------------------------------- int __thiscall sub_5C5DE0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4) = a3; *(_BYTE *)(this + 8) = 0; return result; } //----- (005C5E00) -------------------------------------------------------- void *__thiscall sub_5C5E00(void *this, int a2) { void *v2; // esi@1 signed __int64 v3; // qax@1 int v4; // ecx@1 int v5; // edx@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"Navigator::PathFindBuffer::PathFindBuffer"); dword_7508B8[dword_750CB8] = (int)"Navigator::PathFindBuffer::PathFindBuffer"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 1) = a2; v3 = 20i64 * (unsigned int)((2 * a2 + 1) * (2 * a2 + 1)); *(_DWORD *)v2 = unknown_libname_130(v3 | -(BYTE4(v3) != 0)); v4 = 0; if ( (2 * *((_DWORD *)v2 + 1) + 1) * (2 * *((_DWORD *)v2 + 1) + 1) > 0 ) { v5 = 0; do { *(_DWORD *)(v5 + *(_DWORD *)v2) = -1; ++v4; v5 += 20; } while ( v4 < (2 * *((_DWORD *)v2 + 1) + 1) * (2 * *((_DWORD *)v2 + 1) + 1) ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::PathFindBuffer::PathFindBuffer"); return v2; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C5EF0) -------------------------------------------------------- int __thiscall sub_5C5EF0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // edx@5 int v6; // eax@5 int v7; // esi@5 int result; // eax@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Navigator::PathFindBuffer::operator ()"); dword_7508B8[dword_750CB8] = (int)"Navigator::PathFindBuffer::operator ()"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 1); if ( a2 > v4 || a2 < -v4 || a3 > v4 || a3 < -v4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::PathFindBuffer::operator ()"); result = 0; } else { v5 = 5 * (v4 + a3 + (v4 + a2) * (2 * v4 + 1)); v6 = *(_DWORD *)v3; --dword_750CB8; v7 = v6 + 4 * v5; sub_467660((int)&unk_D020420, (int)"Navigator::PathFindBuffer::operator ()"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C5FF0) -------------------------------------------------------- int __thiscall sub_5C5FF0(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // ebx@1 int v7; // esi@2 int v8; // eax@3 int result; // eax@6 int v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+28h] [bp+8h]@1 v3 = this; v10 = this; v4 = a2; sub_5C5E00((void *)(this + 4), a2); v5 = -a2; v6 = -a2; *(_DWORD *)v3 = 0; v11 = -a2; if ( -v4 > v4 ) { *(_DWORD *)(v3 + 12) = a3; result = v3; } else { do { v7 = v5; if ( v5 <= v4 ) { do { v8 = sub_5C5EF0((void *)(v10 + 4), v6, v7++); *(_DWORD *)v8 = *(_DWORD *)v10; } while ( v7 <= v4 ); v5 = v11; } ++v6; } while ( v6 <= v4 ); result = v10; *(_DWORD *)(v10 + 12) = a3; } return result; } //----- (005C60B0) -------------------------------------------------------- signed int __stdcall sub_5C60B0(void *a1, int *a2, int *a3) { int *v3; // esi@1 int *v4; // edi@1 int v5; // eax@1 void *v6; // ebx@1 int v7; // ecx@1 int v8; // ecx@3 int i; // [sp+14h] [bp-20h]@1 int v11; // [sp+18h] [bp-1Ch]@6 int v12; // [sp+1Ch] [bp-18h]@4 int v13; // [sp+20h] [bp-14h]@1 int v14; // [sp+24h] [bp-10h]@1 int v15; // [sp+3Ch] [bp+8h]@3 int v16; // [sp+40h] [bp+Ch]@1 signed int v17; // [sp+44h] [bp+10h]@1 sub_4675D0((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_ExitFromBlock"); dword_7508B8[dword_750CB8] = (int)"Navigator::MapNavigator::mn_ExitFromBlock"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = a3; v5 = *a3; v6 = a1; v14 = *a2; v17 = 1; v7 = *a2 - v5; v13 = v5; v16 = v5 + 1; for ( i = v7; ; v7 = i ) { v8 = v16 + v7; *v3 = v8; *v4 = v5; v15 = v8; if ( !sub_5C7610(v6, *v3, v5) ) break; *v3 = v14 - v17; v12 = v14 - v17; *v4 = v13; if ( !sub_5C7610(v6, *v3, v13) ) break; *v3 = v14; *v4 = v16; if ( !sub_5C7610(v6, *v3, v16) ) break; *v3 = v14; *v4 = v13 - v17; v11 = v13 - v17; if ( !sub_5C7610(v6, *v3, v13 - v17) ) break; *v3 = v15; *v4 = v16; if ( !sub_5C7610(v6, *v3, v16) ) break; *v3 = v12; *v4 = v16; if ( !sub_5C7610(v6, *v3, v16) ) break; *v3 = v15; *v4 = v11; if ( !sub_5C7610(v6, *v3, v11) ) break; *v3 = v12; *v4 = v11; if ( !sub_5C7610(v6, *v3, v11) ) break; ++v16; ++v17; if ( v17 >= 50 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_ExitFromBlock"); return 0; } v5 = v13; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_ExitFromBlock"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C62B0) -------------------------------------------------------- int __cdecl sub_5C62B0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 12 ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); v3 += 12; } return result; } //----- (005C62E0) -------------------------------------------------------- char __thiscall sub_5C62E0(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > 0x15555555 ) sub_65178B((int)"vector too long"); v4 = sub_480E80(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 12 * a2; result = 1; } else { result = 0; } return result; } //----- (005C6340) -------------------------------------------------------- int __cdecl sub_5C6340(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // edi@1 int result; // eax@1 signed int v6; // esi@1 int v7; // edx@2 int v8; // ecx@6 int v9; // esi@8 int v10; // eax@8 int v11; // ecx@8 int v12; // eax@10 int v13; // edx@10 int v14; // ST14_4@10 int v15; // eax@10 int v16; // [sp+18h] [bp-8h]@6 int v17; // [sp+2Ch] [bp+Ch]@1 v3 = a3; v4 = (a2 - a1) / 12; result = (a3 - a1) / 12; v17 = (a3 - a1) / 12; v6 = v4; if ( v4 ) { do { v7 = result % v6; result = v6; v6 = v7; } while ( v7 ); v17 = result; } if ( result < (a3 - a1) / 12 && result > 0 ) { v8 = 12 * v4; result = a1 + 12 * result; v16 = result; while ( 1 ) { v9 = result; v10 = v8 + result; v11 = a1; if ( v10 != v3 ) v11 = v10; do { v12 = *(_DWORD *)v9; v13 = *(_DWORD *)(v9 + 4); v14 = *(_DWORD *)(v9 + 8); *(_DWORD *)v9 = *(_DWORD *)v11; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v11 + 8); v3 = a3; *(_DWORD *)v11 = v12; *(_DWORD *)(v11 + 4) = v13; *(_DWORD *)(v11 + 8) = v14; v15 = (a3 - v11) / 12; v9 = v11; if ( v4 >= v15 ) v11 = a1 + 12 * (v4 - v15); else v11 += 12 * v4; } while ( v11 != v16 ); result = v16 - 12; --v17; v16 -= 12; if ( v17 <= 0 ) break; v8 = 12 * v4; } } return result; } //----- (005C6450) -------------------------------------------------------- void __cdecl sub_5C6450(int a1, int a2) { int v2; // ecx@1 int v3; // eax@2 v2 = a2; if ( a2 ) { v3 = a1; do { if ( v3 ) { *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; } v3 += 12; --v2; } while ( v2 ); } } //----- (005C6480) -------------------------------------------------------- int __stdcall sub_5C6480(int a1, int a2, int a3) { return sub_5AE9E0(a1, a2, a3); } //----- (005C64B0) -------------------------------------------------------- char __thiscall sub_5C64B0(void *this, int a2, int a3) { void *v3; // esi@1 signed int v4; // ebx@1 int v5; // eax@1 char result; // al@2 int v7; // edx@3 int v8; // eax@3 int v9; // ecx@4 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Navigator::WaitingList::wl_Pop"); dword_7508B8[dword_750CB8] = (int)"Navigator::WaitingList::wl_Pop"; v4 = 1; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == *((_DWORD *)v3 + 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::WaitingList::wl_Pop"); result = 0; } else { *(_DWORD *)a2 = *(_DWORD *)v5; *(_DWORD *)a3 = *(_DWORD *)(v5 + 4); v7 = *((_DWORD *)v3 + 1); v8 = v5 + 12; if ( v8 != v7 ) { v9 = v8 - 12; do { *(_DWORD *)v9 = *(_DWORD *)v8; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v8 + 8); v8 += 12; v9 += 12; } while ( v8 != v7 ); v4 = 1; } *((_DWORD *)v3 + 1) -= 12; dword_750CB8 -= v4; sub_467660((int)&unk_D020420, (int)"Navigator::WaitingList::wl_Pop"); result = v4; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C65C0) -------------------------------------------------------- int __thiscall sub_5C65C0(int this, unsigned int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@1 unsigned int v5; // edx@2 v2 = this; v3 = *(_DWORD *)(this + 4); result = (v3 - *(_DWORD *)v2) / 12; if ( result <= a2 ) { if ( result >= a2 ) return result; sub_481EE0(v2, a2 - result); sub_5C6450(*(_DWORD *)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12; v5 = *(_DWORD *)(v2 + 4) + 12 * (a2 - result); } else { result = 3 * a2; v5 = *(_DWORD *)v2 + 12 * a2; if ( v5 == v3 ) return result; result = v3; } *(_DWORD *)(v2 + 4) = v5; return result; } //----- (005C6690) -------------------------------------------------------- int __thiscall sub_5C6690(int this, int a2) { int v2; // esi@1 signed int v3; // edx@2 int v4; // ebx@2 int v5; // ecx@3 signed int v9; // edx@7 int v10; // ecx@7 int v11; // ebx@10 v2 = this; if ( this != a2 ) { v3 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2)) >> 32) >> 1; v4 = v3 + ((unsigned int)v3 >> 31); if ( v4 ) { v9 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(this + 4) - *(_DWORD *)this)) >> 32) >> 1; v10 = v9 + ((unsigned int)v9 >> 31); if ( v4 <= (unsigned int)v10 ) { sub_5C62B0(*(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)v2); *(_DWORD *)(v2 + 4) = *(_DWORD *)v2 + 12 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 12; return v2; } if ( v4 <= (unsigned int)((*(_DWORD *)(v2 + 8) - *(_DWORD *)v2) / 12) ) { v11 = *(_DWORD *)a2 + 12 * v10; sub_5C62B0(*(_DWORD *)a2, *(_DWORD *)a2 + 12 * v10, *(_DWORD *)v2); *(_DWORD *)(v2 + 4) = sub_5AE9E0(v11, *(_DWORD *)(a2 + 4), *(_DWORD *)(v2 + 4)); return v2; } if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); if ( sub_5C62E0(v2, (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 12) ) *(_DWORD *)(v2 + 4) = sub_5C6480(*(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)v2); } else { v5 = *(_DWORD *)this; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) { *(_DWORD *)(v2 + 4) = v5; return v2; } } } return v2; } //----- (005C67F0) -------------------------------------------------------- int __thiscall sub_5C67F0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4BBDA0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); } } else { v4 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 1; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_4BBDA0(v2, 1); v6 = *(_DWORD *)v2 + 12 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v2 + 4) += 12; return result; } } *(_DWORD *)(v2 + 4) += 12; return result; } //----- (005C6880) -------------------------------------------------------- signed int __thiscall sub_5C6880(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { void *v7; // esi@1 int v8; // eax@3 int v9; // eax@6 unsigned int v10; // ecx@6 int v11; // edi@8 signed int v12; // ebx@8 int v13; // edx@9 int v14; // edx@10 int v15; // esi@10 unsigned int v16; // esi@12 int v17; // edx@17 int v18; // edx@20 int v19; // edx@21 int v20; // esi@21 unsigned int v21; // esi@23 int v22; // eax@31 signed int v24; // esi@37 int v25; // edx@38 int v26; // edx@40 int v27; // edi@40 unsigned int v28; // eax@42 int v29; // edx@47 int v30; // edx@48 int v31; // edx@50 int v32; // edx@52 int v33; // edi@52 unsigned int v34; // eax@54 int v35; // edi@62 int v36; // edx@62 int v37; // ebx@62 int v38; // esi@62 unsigned int i; // esi@62 int v40; // eax@63 int v41; // edx@63 int v42; // [sp+10h] [bp-28h]@62 int v43; // [sp+14h] [bp-24h]@62 char v44; // [sp+18h] [bp-20h]@62 int v45; // [sp+1Ch] [bp-1Ch]@1 void *v46; // [sp+20h] [bp-18h]@2 void *v47; // [sp+24h] [bp-14h]@1 int v48; // [sp+28h] [bp-10h]@1 int v49; // [sp+34h] [bp-4h]@1 v7 = this; v47 = this; v45 = (int)"Navigator::MapNavigator::nm_MakePath"; sub_4675D0((int)&unk_D020420, (int)"Navigator::MapNavigator::nm_MakePath"); dword_7508B8[dword_750CB8] = (int)"Navigator::MapNavigator::nm_MakePath"; dword_750AB8[dword_750CB8++] = -1; v49 = 0; sub_45FAE0((int)&dword_D9FB83C, 0); sub_5F1770((int)&dword_D9FB83C, (unsigned int)&a3); v48 = 0; if ( a6 > 0 ) { v46 = (char *)v7 + 4; while ( 1 ) { v8 = sub_5C5EF0(v46, a3, a4); if ( !v8 ) { --dword_750CB8; v49 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::nm_MakePath"); return -1; } if ( *(_DWORD *)(v8 + 4) == a3 && *(_DWORD *)(v8 + 8) == a4 ) break; a3 = *(_DWORD *)(v8 + 4); a4 = *(_DWORD *)(v8 + 8); v9 = dword_D9FB840; v10 = (unsigned int)dword_D9FB83C; if ( (unsigned int)&a3 >= dword_D9FB840 || dword_D9FB83C > &a3 ) { v11 = dword_D9FB844; if ( dword_D9FB840 == dword_D9FB844 ) { v18 = (dword_D9FB840 - (signed int)dword_D9FB83C) >> 3; if ( (unsigned int)v18 > 0x1FFFFFFE ) goto LABEL_39; v19 = v18 + 1; v20 = (dword_D9FB844 - (signed int)dword_D9FB83C) >> 3; if ( v19 > (unsigned int)v20 ) { if ( 536870911 - ((unsigned int)v20 >> 1) >= v20 ) v21 = ((unsigned int)v20 >> 1) + v20; else v21 = 0; if ( v21 < v19 ) v21 = v19; sub_492BD0((int)&dword_D9FB83C, v21); v11 = dword_D9FB844; v9 = dword_D9FB840; v10 = (unsigned int)dword_D9FB83C; } } if ( !v9 ) goto LABEL_31; *(_DWORD *)v9 = a3; *(_DWORD *)(v9 + 4) = a4; } else { v11 = dword_D9FB844; v12 = (signed int)((char *)&a3 - dword_D9FB83C) >> 3; if ( dword_D9FB840 == dword_D9FB844 ) { v13 = (dword_D9FB840 - (signed int)dword_D9FB83C) >> 3; if ( (unsigned int)v13 > 0x1FFFFFFE ) goto LABEL_39; v14 = v13 + 1; v15 = (dword_D9FB844 - (signed int)dword_D9FB83C) >> 3; if ( v14 > (unsigned int)v15 ) { if ( 536870911 - ((unsigned int)v15 >> 1) >= v15 ) v16 = ((unsigned int)v15 >> 1) + v15; else v16 = 0; if ( v16 < v14 ) v16 = v14; sub_492BD0((int)&dword_D9FB83C, v16); v11 = dword_D9FB844; v9 = dword_D9FB840; v10 = (unsigned int)dword_D9FB83C; } } v17 = v10 + 8 * v12; if ( !v9 ) goto LABEL_31; *(_DWORD *)v9 = *(_DWORD *)v17; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v17 + 4); } v11 = dword_D9FB844; v10 = (unsigned int)dword_D9FB83C; v9 = dword_D9FB840; LABEL_31: v22 = v9 + 8; dword_D9FB840 = v22; ++v48; if ( v48 >= a6 ) goto LABEL_35; } } v10 = (unsigned int)dword_D9FB83C; v22 = dword_D9FB840; v11 = dword_D9FB844; LABEL_35: if ( (unsigned int)&a3 >= v22 || v10 > (unsigned int)&a3 ) { if ( v22 == v11 ) { v31 = (signed int)(v22 - v10) >> 3; if ( (unsigned int)v31 > 0x1FFFFFFE ) sub_65178B((int)"vector too long"); v32 = v31 + 1; v33 = (signed int)(v11 - v10) >> 3; if ( v32 > (unsigned int)v33 ) { if ( 536870911 - ((unsigned int)v33 >> 1) >= v33 ) v34 = ((unsigned int)v33 >> 1) + v33; else v34 = 0; if ( v34 < v32 ) v34 = v32; sub_492BD0((int)&dword_D9FB83C, v34); v22 = dword_D9FB840; v10 = (unsigned int)dword_D9FB83C; } } if ( !v22 ) goto LABEL_62; *(_DWORD *)v22 = a3; v30 = a4; } else { v24 = (signed int)((char *)&a3 - v10) >> 3; if ( v22 == v11 ) { v25 = (signed int)(v22 - v10) >> 3; if ( (unsigned int)v25 > 0x1FFFFFFE ) LABEL_39: sub_65178B((int)"vector too long"); v26 = v25 + 1; v27 = (signed int)(v11 - v10) >> 3; if ( v26 > (unsigned int)v27 ) { if ( 536870911 - ((unsigned int)v27 >> 1) >= v27 ) v28 = ((unsigned int)v27 >> 1) + v27; else v28 = 0; if ( v28 < v26 ) v28 = v26; sub_492BD0((int)&dword_D9FB83C, v28); v22 = dword_D9FB840; v10 = (unsigned int)dword_D9FB83C; } } v29 = v10 + 8 * v24; if ( !v22 ) goto LABEL_62; *(_DWORD *)v22 = *(_DWORD *)v29; v30 = *(_DWORD *)(v29 + 4); } *(_DWORD *)(v22 + 4) = v30; v22 = dword_D9FB840; v10 = (unsigned int)dword_D9FB83C; LABEL_62: v35 = a5; dword_D9FB840 = v22 + 8; v36 = *((_DWORD *)v47 + 3); v37 = 0; v42 = *(_DWORD *)a5 + v36 * *(_DWORD *)v10; v38 = *(_DWORD *)(a5 + 4) + v36 * *(_DWORD *)(v10 + 4); v44 = 0; v43 = v38; for ( i = v10; i != dword_D9FB840; ++v37 ) { v40 = *((_DWORD *)v47 + 3); v41 = *(_DWORD *)(v35 + 4) + v40 * *(_DWORD *)(i + 4); v42 = *(_DWORD *)v35 + v40 * *(_DWORD *)i; v43 = v41; sub_5C67F0(a7, (unsigned int)&v42); i += 8; } --dword_750CB8; v49 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::nm_MakePath"); return v37; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D9FB840: using guessed type int dword_D9FB840; // D9FB844: using guessed type int dword_D9FB844; //----- (005C6C50) -------------------------------------------------------- int __thiscall sub_5C6C50(void *this) { void *v1; // esi@1 int v2; // ecx@1 int v3; // eax@1 char v5; // [sp+10h] [bp-28h]@3 int v6; // [sp+1Ch] [bp-1Ch]@1 int v7; // [sp+20h] [bp-18h]@2 int v8; // [sp+28h] [bp-10h]@1 int v9; // [sp+34h] [bp-4h]@1 v1 = this; v8 = (int)"Navigator::PathAnalyzer::pa_Analyze"; sub_4675D0((int)&unk_D020420, (int)"Navigator::PathAnalyzer::pa_Analyze"); dword_7508B8[dword_750CB8] = (int)"Navigator::PathAnalyzer::pa_Analyze"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)v1; v9 = 0; sub_5C67F0(v2, (unsigned int)((char *)v1 + 8)); sub_5C7850( *((void **)v1 + 8), (int)&v6, *((_DWORD *)v1 + 2), *((_DWORD *)v1 + 3), *((_DWORD *)v1 + 5), *((_DWORD *)v1 + 6)); v3 = *((_DWORD *)v1 + 5); if ( v6 != v3 || v7 != *((_DWORD *)v1 + 6) ) { sub_5C7850(*((void **)v1 + 8), (int)&v5, v3, *((_DWORD *)v1 + 6), *((_DWORD *)v1 + 2), *((_DWORD *)v1 + 3)); sub_5C67F0(*(_DWORD *)v1, (unsigned int)&v6); sub_5C67F0(*(_DWORD *)v1, (unsigned int)&v5); } sub_5C67F0(*(_DWORD *)v1, (unsigned int)((char *)v1 + 20)); --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"Navigator::PathAnalyzer::pa_Analyze"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C6D60) -------------------------------------------------------- int __thiscall sub_5C6D60(void *this, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ecx@1 int v6; // edx@1 int v7; // eax@1 int v8; // esi@4 int v9; // eax@4 int v10; // edi@4 int v12; // [sp+Ch] [bp-1Ch]@4 int v13; // [sp+10h] [bp-18h]@4 int v14; // [sp+14h] [bp-14h]@4 int v15; // [sp+18h] [bp-10h]@1 int i; // [sp+24h] [bp-4h]@1 v4 = (int)this; v15 = (int)"Navigator::WaitingList::wl_Push"; sub_4675D0((int)&unk_D020420, (int)"Navigator::WaitingList::wl_Push"); dword_7508B8[dword_750CB8] = (int)"Navigator::WaitingList::wl_Push"; dword_750AB8[dword_750CB8++] = -1; v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)v4; for ( i = 0; v7 != v6; v7 += 12 ) { if ( *(_DWORD *)(v7 + 8) >= a4 ) break; } v12 = a2; v13 = a3; v14 = a4; v8 = (v7 - v5) / 12; sub_482420(v4, (unsigned int)&v12); v9 = *(_DWORD *)(v4 + 4); v10 = *(_DWORD *)v4; if ( v10 + 12 * v8 != v9 - 12 && v9 - 12 != v9 ) sub_5C6340(v10 + 12 * v8, v9 - 12, v9); --dword_750CB8; i = -1; return sub_467660((int)&unk_D020420, (int)"Navigator::WaitingList::wl_Push"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C6E70) -------------------------------------------------------- int __thiscall sub_5C6E70(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { int v7; // ebx@1 int v8; // edi@1 signed int v10; // eax@3 int v11; // esi@14 int v12; // eax@19 int v13; // ecx@20 int v14; // eax@22 int v15; // esi@25 int v16; // [sp-4h] [bp-30h]@18 void *v17; // [sp+14h] [bp-18h]@1 int v18; // [sp+18h] [bp-14h]@1 signed int i; // [sp+1Ch] [bp-10h]@3 v17 = this; sub_4675D0((int)&unk_D020420, (int)"Navigator::WaitingList::wl_StoreNeighbor"); dword_7508B8[dword_750CB8] = (int)"Navigator::WaitingList::wl_StoreNeighbor"; dword_750AB8[dword_750CB8++] = -1; v7 = a4; v8 = a3; v18 = sub_5C5EF0(*(void **)(a2 + 4), a3, a4); if ( !v18 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::WaitingList::wl_StoreNeighbor"); return (int)&unk_98967F; } v10 = 0; for ( i = 0; ; v10 = i ) { switch ( v10 ) { case 0: ++v8; break; case 2: --v8; break; case 4: ++v8; goto LABEL_9; case 1: LABEL_9: ++v7; break; case 5: ++v8; goto LABEL_13; case 6: --v8; ++v7; break; case 7: --v8; goto LABEL_13; case 3: LABEL_13: --v7; break; default: break; } v11 = sub_5C5EF0(*(void **)(a2 + 4), v8, v7); if ( v11 ) { if ( sub_5C7610(*(void **)a2, *(_DWORD *)a7 + a6 * v8, *(_DWORD *)(a7 + 4) + a6 * v7) ) { if ( v8 == *(_DWORD *)a5 && v7 == *(_DWORD *)(a5 + 4) ) { v16 = 0; LABEL_23: sub_5C6D60(v17, v8, v7, v16); goto LABEL_24; } } else { v12 = *(_DWORD *)(a2 + 8); if ( *(_DWORD *)v11 != v12 ) { *(_DWORD *)v11 = v12; *(_DWORD *)(v11 + 16) = *(_DWORD *)(v18 + 16) + 1; *(_DWORD *)(v11 + 8) = a4; *(_DWORD *)(v11 + 4) = a3; v14 = sub_5C75F0(v8, v7, *(_DWORD *)a5, *(_DWORD *)(a5 + 4)); *(_DWORD *)(v11 + 12) = v14; v16 = v14; goto LABEL_23; } v13 = *(_DWORD *)(v11 + 16) + 1; if ( *(_DWORD *)(v18 + 16) > v13 ) { *(_DWORD *)(v18 + 16) = v13; *(_DWORD *)(v18 + 4) = v8; *(_DWORD *)(v18 + 8) = v7; } } } LABEL_24: ++i; if ( i >= 8 ) break; v7 = a4; v8 = a3; } v15 = *(_DWORD *)(v18 + 12); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::WaitingList::wl_StoreNeighbor"); return v15; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C7070) -------------------------------------------------------- signed int __thiscall sub_5C7070(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { void *v7; // esi@1 signed int v8; // edi@1 int v9; // ebx@1 int v10; // eax@4 int v11; // eax@5 int v12; // edi@5 int v13; // eax@9 signed int result; // eax@14 signed int v15; // eax@15 signed int v16; // esi@15 int v17; // [sp+10h] [bp-30h]@5 char *v18; // [sp+14h] [bp-2Ch]@5 int v19; // [sp+18h] [bp-28h]@5 int v20; // [sp+1Ch] [bp-24h]@1 int v21; // [sp+20h] [bp-20h]@1 char v22; // [sp+24h] [bp-1Ch]@1 int 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 int v27; // [sp+4Ch] [bp+Ch]@2 v7 = this; v25 = (int)"Navigator::MapNavigator::mn_Search"; sub_4675D0((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_Search"); dword_7508B8[dword_750CB8] = (int)"Navigator::MapNavigator::mn_Search"; dword_750AB8[dword_750CB8++] = -1; v8 = *((_DWORD *)v7 + 3); v20 = a3; v21 = a4; v26 = 0; v22 = 0; v9 = (a5 - a3) / v8; v23 = v9; v24 = (a6 - a4) / v8; if ( !sub_5C5EF0((char *)v7 + 4, v9, v24) ) goto LABEL_14; v27 = sub_5C75F0(0, 0, v9, v24) + 30; if ( v27 < 30 ) v27 = 30; *(_DWORD *)v7 = (*(_DWORD *)v7 + 1) & 0x7FFFFFFF; sub_5C65C0((int)&dword_14D21508, 0); v10 = sub_5C5EF0((char *)v7 + 4, 0, 0); if ( v10 && (*(_DWORD *)(v10 + 4) = 0, *(_DWORD *)(v10 + 8) = 0, *(_DWORD *)(v10 + 16) = 0, *(_DWORD *)(v10 + 12) = 0, *(_DWORD *)v10 = *(_DWORD *)v7, v19 = *(_DWORD *)v7, v17 = a2, v18 = (char *)v7 + 4, a4 = sub_5C75F0(0, 0, v9, v24), v11 = sub_5C5EF0((char *)v7 + 4, 0, 0), *(_DWORD *)(v11 + 12) = a4, v12 = sub_5C6E70(&dword_14D21508, (int)&v17, 0, 0, (int)&v23, *((_DWORD *)v7 + 3), (int)&v20), v12 <= v27) && sub_5C64B0(&dword_14D21508, (int)&a5, (int)&a4) ) { while ( v9 != a5 || v24 != a4 ) { v13 = sub_5C6E70(&dword_14D21508, (int)&v17, a5, a4, (int)&v23, *((_DWORD *)v7 + 3), (int)&v20); if ( v13 > v12 ) { if ( v13 > v27 ) goto LABEL_14; if ( v27 > v13 + 30 ) v27 = v13 + 30; } v12 = v13; if ( !sub_5C64B0(&dword_14D21508, (int)&a5, (int)&a4) ) goto LABEL_14; } v15 = sub_5C6880(v7, a2, v9, v24, (int)&v20, 1000, a7); --dword_750CB8; v16 = v15; v26 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_Search"); result = v16; } else { LABEL_14: --dword_750CB8; v26 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_Search"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C72C0) -------------------------------------------------------- signed int __thiscall sub_5C72C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { int v7; // edi@1 int v8; // ebx@1 void *v9; // edi@6 int v10; // eax@6 int v12; // ebx@9 int v13; // edx@13 int v14; // edi@13 int v15; // eax@13 int v16; // eax@14 int v17; // esi@14 int v18; // ecx@14 int v19; // ecx@22 int v20; // eax@22 signed int v21; // ecx@23 int v22; // edi@23 void **v23; // [sp+10h] [bp-40h]@6 int v24; // [sp+14h] [bp-3Ch]@6 int v25; // [sp+18h] [bp-38h]@6 int v26; // [sp+1Ch] [bp-34h]@6 char v27; // [sp+20h] [bp-30h]@6 int v28; // [sp+24h] [bp-2Ch]@6 int v29; // [sp+28h] [bp-28h]@6 char v30; // [sp+2Ch] [bp-24h]@6 int v31; // [sp+30h] [bp-20h]@6 int v32; // [sp+34h] [bp-1Ch]@1 int v33; // [sp+38h] [bp-18h]@1 int v34; // [sp+3Ch] [bp-14h]@1 void *v35; // [sp+40h] [bp-10h]@1 int v36; // [sp+4Ch] [bp-4h]@1 v35 = this; v32 = (int)"Navigator::MapNavigator::mn_PathFind"; sub_4675D0((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_PathFind"); dword_7508B8[dword_750CB8] = (int)"Navigator::MapNavigator::mn_PathFind"; dword_750AB8[dword_750CB8++] = -1; v7 = a4; v8 = a3; v36 = 0; v34 = a3; v33 = a4; if ( sub_5C7610((void *)a2, a3, a4) ) { if ( !sub_5C60B0((void *)a2, &a3, &a4) ) { LABEL_24: --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_PathFind"); return -1; } v7 = a4; v8 = a3; } if ( !(dword_14D21504 & 1) ) { dword_14D21504 |= 1u; dword_14D214F4 = 0; dword_14D214F8 = 0; dword_14D214FC = 0; sub_4BBC10((int)&dword_14D214F4, 0x400u); atexit(sub_69CE90); LOBYTE(v36) = 0; } sub_4BBE20((int)&dword_14D214F4, 0); v28 = a5; v23 = &dword_14D214F4; v24 = a2; v25 = v8; v26 = v7; v27 = 0; v29 = a6; v30 = 0; v31 = a2; sub_5C6C50(&v23); v9 = dword_14D214F4; v10 = (dword_14D214F8 - (signed int)dword_14D214F4) / 12; if ( v10 == 2 ) { sub_5C6690(a7, (int)&dword_14D214F4); --dword_750CB8; v36 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_PathFind"); return 2; } if ( v10 != 4 ) goto LABEL_24; v12 = a7; if ( *(_DWORD *)dword_14D214F4 != *((_DWORD *)dword_14D214F4 + 3) || *((_DWORD *)dword_14D214F4 + 1) != *((_DWORD *)dword_14D214F4 + 4) ) { sub_5C67F0(a7, (unsigned int)dword_14D214F4); v9 = dword_14D214F4; } if ( sub_5C7070(v35, a2, *((_DWORD *)v9 + 6), *((_DWORD *)v9 + 7), *((_DWORD *)v9 + 3), *((_DWORD *)v9 + 4), v12) == -1 ) goto LABEL_24; sub_5C67F0(v12, (unsigned int)((char *)dword_14D214F4 + 36)); v13 = (*(_DWORD *)(v12 + 4) - *(_DWORD *)v12) / 12 - 1; v14 = 1; v15 = (*(_DWORD *)(v12 + 4) - *(_DWORD *)v12) / 12 - 2; a4 = (*(_DWORD *)(v12 + 4) - *(_DWORD *)v12) / 12 - 1; if ( v15 > 1 ) { do { v16 = *(_DWORD *)v12; v17 = (v14 + v13) / 2; a3 = *(_DWORD *)v12 + 12 * v14; v18 = v16 + 12 * v17; if ( *(_DWORD *)a3 != *(_DWORD *)(v16 + 12 * v17) || *(_DWORD *)(a3 + 4) != *(_DWORD *)(v18 + 4) ) { if ( sub_5C76D0((void *)a2, *(_DWORD *)v16, *(_DWORD *)(v16 + 4), *(_DWORD *)v18, *(_DWORD *)(v18 + 4)) ) v14 = v17; else a4 = v17; } else { v14 = (v14 + v13) / 2; } v13 = a4; } while ( v14 < a4 - 1 ); } **(_DWORD **)v12 = v34; *(_DWORD *)(*(_DWORD *)v12 + 4) = v33; if ( v14 > 1 ) { v19 = *(_DWORD *)v12; v20 = *(_DWORD *)v12 + 12 * v14; *(_DWORD *)(*(_DWORD *)v12 + 12) = *(_DWORD *)(*(_DWORD *)v12 + 12 * v14); *(_DWORD *)(v19 + 16) = *(_DWORD *)(v20 + 4); *(_DWORD *)(v19 + 20) = *(_DWORD *)(v20 + 8); } v21 = *(_DWORD *)(v12 + 4) - *(_DWORD *)v12; --dword_750CB8; v22 = v21 / 12; v36 = -1; sub_467660((int)&unk_D020420, (int)"Navigator::MapNavigator::mn_PathFind"); return v22; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D214F8: using guessed type int dword_14D214F8; // 14D214FC: using guessed type int dword_14D214FC; // 14D21504: using guessed type int dword_14D21504; //----- (005C75E0) -------------------------------------------------------- void *__thiscall sub_5C75E0(void *this, int a2) { void *result; // eax@1 result = this; *(_DWORD *)this = a2; return result; } //----- (005C75F0) -------------------------------------------------------- int __stdcall sub_5C75F0(int a1, int a2, int a3, int a4) { return sub_4011C0(&unk_AF09DA8, a1 - a3, a2 - a4); } //----- (005C7610) -------------------------------------------------------- int __thiscall sub_5C7610(void *this, int a2, int a3) { void *v3; // esi@1 unsigned __int8 v4; // al@1 int v5; // esi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_IsBlocked"); dword_7508B8[dword_750CB8] = (int)"Navigator::VirtualMap::vm_IsBlocked"; dword_750AB8[dword_750CB8++] = -1; v4 = sub_418F90(*(_DWORD *)v3, a2, a3, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))sub_49D140); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_IsBlocked"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C76D0) -------------------------------------------------------- signed int __thiscall sub_5C76D0(void *this, int a2, int a3, int a4, int a5) { void *v5; // ebx@1 signed int result; // eax@2 int v7; // esi@3 int v8; // edi@3 signed int v9; // esi@7 v5 = this; sub_4675D0((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_IsStreight"); dword_7508B8[dword_750CB8] = (int)"Navigator::VirtualMap::vm_IsStreight"; dword_750AB8[dword_750CB8++] = -1; if ( (a2 - a4) * (a2 - a4) + (a3 - a5) * (a3 - a5) >= 25 ) { v7 = (a2 + a4) / 2; v8 = (a3 + a5) / 2; if ( sub_5C7610(v5, (a2 + a4) / 2, (a3 + a5) / 2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_IsStreight"); result = 0; } else { v9 = sub_5C76D0(v5, a2, a3, v7, v8) && sub_5C76D0(v5, v7, v8, a4, a5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_IsStreight"); result = v9; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_IsStreight"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C7850) -------------------------------------------------------- int __thiscall sub_5C7850(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // esi@1 int v7; // eax@1 signed int v8; // eax@1 int v10; // [sp+10h] [bp-2Ch]@1 int v11; // [sp+14h] [bp-28h]@4 int v12; // [sp+18h] [bp-24h]@1 int v13; // [sp+1Ch] [bp-20h]@1 int v14; // [sp+20h] [bp-1Ch]@1 int v15; // [sp+24h] [bp-18h]@1 int v16; // [sp+28h] [bp-14h]@1 int v17; // [sp+2Ch] [bp-10h]@1 int v18; // [sp+38h] [bp-4h]@1 v6 = this; v17 = 0; v16 = (int)"Navigator::VirtualMap::vm_FindBlock"; sub_4675D0((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_FindBlock"); dword_7508B8[dword_750CB8] = (int)"Navigator::VirtualMap::vm_FindBlock"; dword_750AB8[dword_750CB8++] = -1; v18 = 1; v13 = a4; v12 = a3; v14 = a5; v15 = a6; v7 = sub_4011C0(&unk_AF09DA8, a3 - a5, a4 - a6); v8 = sub_462640( *(void **)v6, (int)&v12, v7, (int)&v14, (int)&v10, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0); if ( v8 ) { if ( v8 == 1 ) { sub_5C5DE0(a2, v10, v11); --dword_750CB8; v17 = 1; } else { sub_5C5DE0(a2, v14, v15); --dword_750CB8; v17 = 1; } } else { sub_5C5DE0(a2, v14, v15); --dword_750CB8; v17 = 1; } LOBYTE(v18) = 0; sub_467660((int)&unk_D020420, (int)"Navigator::VirtualMap::vm_FindBlock"); return a2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C79A0) -------------------------------------------------------- int __thiscall sub_5C79A0(int this, int a2) { int v2; // esi@1 v2 = this; sub_62AF70(this, a2); *(_DWORD *)(v2 + 1168) = 0; memset((void *)(v2 + 1176), 0, 0x800u); return v2; } //----- (005C79F0) -------------------------------------------------------- int __thiscall sub_5C79F0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 1168) = a2; return result; } //----- (005C7A00) -------------------------------------------------------- __int32 __thiscall sub_5C7A00(int this, int a2) { int v2; // esi@1 __time32_t v3; // ecx@1 __time32_t v4; // ecx@1 __time32_t v5; // ecx@1 __int32 result; // eax@1 v2 = this; sub_62AE00(this); memset((void *)(v2 + 1176), 0, 0x800u); *(_DWORD *)(v2 + 3224) = sub_44FB50(v3, 0); *(_DWORD *)(v2 + 3228) = -1; *(_DWORD *)(v2 + 3232) = sub_44FB50(v4, 0); *(_DWORD *)(v2 + 3236) = -1; *(_WORD *)(v2 + 3240) = -1; *(_DWORD *)(v2 + 3244) = sub_44FB50(65535, 0); *(_WORD *)(v2 + 3248) = -1; result = sub_44FB50(v5, 0); *(_DWORD *)(v2 + 3256) = -1; *(_DWORD *)(v2 + 3260) = -1; *(_DWORD *)(v2 + 3252) = result; *(_DWORD *)(v2 + 3264) = 65535; *(_DWORD *)(v2 + 3268) = 0; *(_BYTE *)(v2 + 3272) = 2; return result; } //----- (005C7AB0) -------------------------------------------------------- signed int __thiscall sub_5C7AB0(void *this, unsigned __int8 a2, char a3, char a4) { char *v4; // eax@1 signed int result; // eax@3 v4 = sub_62ABF0(this, a2); if ( v4 ) { switch ( a3 ) { case 0: *v4 ^= (a4 ^ *v4) & 3; result = 1; break; case 1: *v4 ^= (*v4 ^ 4 * a4) & 0xC; result = 1; break; case 2: *v4 ^= (*v4 ^ 16 * a4) & 0x30; result = 1; break; case 3: *v4 = (a4 << 6) | *v4 & 0x3F; result = 1; break; default: goto LABEL_7; } } else { LABEL_7: result = 0; } return result; } //----- (005C7B40) -------------------------------------------------------- int __thiscall sub_5C7B40(int *this, unsigned __int8 a2) { int *v2; // esi@1 int result; // eax@2 v2 = this; if ( sub_62ABB0(*this, a2) == 1 ) result = 0; else result = v2[4 * (a2 + 74)]; return result; } //----- (005C7B70) -------------------------------------------------------- int __thiscall sub_5C7B70(int this, const char *a2, int a3, int a4) { int v4; // esi@1 int result; // eax@1 int v6; // eax@2 signed int v7; // ecx@2 int v8; // eax@4 int v9; // eax@10 int v10; // esi@10 int v11; // edi@11 signed int v12; // eax@11 int v13; // eax@12 int v14; // eax@12 unsigned __int8 *v15; // edx@13 int v16; // eax@14 char v17; // [sp+4h] [bp-98h]@11 int v18; // [sp+8h] [bp-94h]@12 int v19; // [sp+Ch] [bp-90h]@1 signed int v20; // [sp+10h] [bp-8Ch]@5 unsigned int v21; // [sp+14h] [bp-88h]@7 char v22; // [sp+18h] [bp-84h]@18 char v23; // [sp+19h] [bp-83h]@18 unsigned int v24; // [sp+98h] [bp-4h]@1 int v25; // [sp+9Ch] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v4 = this; v19 = this; result = sub_627480((void *)(this + 38912), a2, a3, a4); if ( result ) { v6 = v4 + 8; v7 = 512; do { *(_BYTE *)(v6 - 8) = 0; *(_BYTE *)(v6 - 4) = 0; *(_DWORD *)v6 = 0; *(_DWORD *)(v6 + 4) = 0; *(_BYTE *)(v6 + 8) = 0; *(_DWORD *)(v6 + 12) = 0; *(_DWORD *)(v6 + 16) = 0; *(_BYTE *)(v6 + 20) = 0; *(_DWORD *)(v6 + 24) = 0; *(_DWORD *)(v6 + 28) = 0; *(_BYTE *)(v6 + 32) = 0; *(_DWORD *)(v6 + 36) = 0; *(_DWORD *)(v6 + 40) = 0; *(_BYTE *)(v6 + 44) = 0; *(_DWORD *)(v6 + 48) = 0; *(_DWORD *)(v6 + 52) = 0; *(_BYTE *)(v6 + 56) = 0; *(_DWORD *)(v6 + 60) = 0; *(_DWORD *)(v6 + 64) = 0; v6 += 76; --v7; } while ( v7 ); v8 = *(_DWORD *)(v4 + 38964); if ( v8 ) v20 = *(_DWORD *)(v8 + 40); else v20 = 0; v21 = 0; if ( v20 > 0 ) { while ( 1 ) { v9 = sub_626BC0(v4 + 38912, v21); v10 = v9; if ( !v9 ) break; v11 = 76 * (*(_BYTE *)(v9 + 4) + 4 * *(_DWORD *)v9); v12 = *(_BYTE *)(v11 + v19); v17 = *(_BYTE *)(v11 + v19); if ( v12 > 6 ) break; v13 = v19 + v11 + 12 * v12; *(_BYTE *)(v13 + 4) = *(_BYTE *)(v10 + 37); v18 = v13; v14 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(v10 + 5)); *(_DWORD *)(v18 + 8) = v14; if ( !v14 ) { v22 = 0; memset(&v23, 0, 0x7Fu); sprintf( &v22, "CCharacterTitleDataStateServer::Read : pAbStateDic is NULL. i count is %d pStateData->StateName is %s", v21, v10 + 5); sub_639100(&unk_86DDD8, (int)&v22, 0); break; } v15 = (unsigned __int8 *)(*(_DWORD *)v14 + 256); if ( strcmp((const char *)(*(_DWORD *)v14 + 256), "-") ) { v16 = sub_418C10((int)&unk_877138, v15); if ( !v16 ) break; *(_DWORD *)(v18 + 12) = v16; } *(_BYTE *)(v11 + v19) = v17 + 1; ++v21; if ( (signed int)v21 >= v20 ) goto LABEL_8; v4 = v19; } result = 0; } else { LABEL_8: result = 1; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005C7D90) -------------------------------------------------------- char *__thiscall sub_5C7D90(void *this, unsigned __int8 a2, unsigned __int8 a3) { char *result; // eax@3 if ( a2 > 0x7Fu || a3 > 3u ) result = 0; else result = (char *)this + 76 * (a3 + 4 * a2); return result; } //----- (005C7DC0) -------------------------------------------------------- int __thiscall sub_5C7DC0(void *this, char a2, char a3, __int16 a4, __int16 a5) { void *v5; // edi@1 void *v6; // esi@1 int v7; // eax@3 int v8; // eax@5 int v9; // eax@6 __int16 v10; // ax@9 int v11; // ST04_4@9 int v12; // eax@9 char v14; // [sp+10h] [bp-1Ch]@9 int v15; // [sp+1Ch] [bp-10h]@1 int v16; // [sp+28h] [bp-4h]@1 v5 = this; v15 = (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK"; sub_4675D0((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK"); dword_7508B8[dword_750CB8] = (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK"; dword_750AB8[dword_750CB8++] = -1; v6 = off_849C18; *(_WORD *)off_849C18 = 24578; *((_WORD *)v6 + 2) = a4; v16 = 0; *((_BYTE *)v6 + 2) = a2; *((_BYTE *)v6 + 3) = a3; *((_WORD *)v6 + 3) = a5; if ( sub_4C81E0(&off_849C18, 8) ) { v7 = (*(int (**)(void))(**((_DWORD **)v5 + 292) + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v7 + 12))(v7, *((_DWORD *)v5 + 292), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK : Packet Too Long", 8); } if ( a5 == 2561 ) { v8 = *((_DWORD *)v5 + 292); if ( !v8 || (v9 = *(_DWORD *)(v8 + 122)) == 0 || !*(_DWORD *)(v9 + 12) || !*(_BYTE *)(*(_DWORD *)(v9 + 12) + 106) ) { *(_WORD *)v6 = 24579; v10 = *(_WORD *)(*((_DWORD *)v5 + 292) + 4); *((_BYTE *)v6 + 5) = a3; *((_WORD *)v6 + 1) = v10; *((_BYTE *)v6 + 4) = a2; *((_WORD *)v6 + 3) = a4; sub_4287B0(&v14, &off_849C18, 8); v11 = *(_DWORD *)(*((_DWORD *)v5 + 292) + 102); LOBYTE(v16) = 1; v12 = sub_427BD0(&unk_13253E80); sub_549E00(*((void **)v5 + 292), v12, v11, 0, 0, (int)&v14, 0, 65535); LOBYTE(v16) = 0; sub_428A70(&v14); } } --dword_750CB8; v16 = -1; return sub_467660((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C7F70) -------------------------------------------------------- int __thiscall sub_5C7F70(void *this, int a2) { void *v2; // esi@1 void *v3; // eax@1 int v4; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_SET_CMD"); dword_7508B8[dword_750CB8] = (int)"CCharacterTitleZone::Send_NC_CT_SET_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 24580; *((_WORD *)v3 + 1) = *(_WORD *)a2; if ( sub_4C81E0(&off_849C18, 4) ) { v4 = (*(int (**)(void))(**((_DWORD **)v2 + 292) + 764))(); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, *((_DWORD *)v2 + 292), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CCharacterTitleZone::Send_NC_CT_SET_CMD : Packet Too Long", 4); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_SET_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005C8070) -------------------------------------------------------- int __thiscall sub_5C8070(void *this, int a2) { void *v2; // edi@1 void *v3; // esi@1 int v4; // eax@1 int v5; // eax@7 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_DB_SET_CMD"); dword_7508B8[dword_750CB8] = (int)"CCharacterTitleZone::Send_NC_CT_DB_SET_CMD"; dword_750AB8[dword_750CB8++] = -1; v3 = off_849C18; *(_WORD *)off_849C18 = 24581; *((_WORD *)v3 + 1) = *(_WORD *)(*((_DWORD *)v2 + 292) + 4); v4 = (*(int (**)(void))(**((_DWORD **)v2 + 292) + 836))(); *((_DWORD *)v3 + 1) = v4; *((_WORD *)v3 + 4) = *(_WORD *)a2; if ( v4 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"Send_NC_CT_DB_SET_CMD : invalid charregistnumber", (int)byte_6A492E); } else { if ( v4 ) { if ( sub_4C81E0(&off_849C18, 10) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"CCharacterTitleZone::Send_NC_CT_DB_SET_CMD : Packet Too Long", 10); } } else { sub_639100(&unk_86DDD8, (int)"Send_NC_CT_DB_SET_CMD : charregistnumber ", 0); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_DB_SET_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005C81B0) -------------------------------------------------------- int __thiscall sub_5C81B0(void *this, int a2, int a3, int a4) { void *v4; // ebx@1 void *v5; // esi@5 int v6; // eax@5 int v7; // eax@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_DB_CMD"); dword_7508B8[dword_750CB8] = (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_DB_CMD"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 && a4 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 24584; *((_WORD *)v5 + 1) = *(_WORD *)(*((_DWORD *)v4 + 292) + 4); v6 = (*(int (**)(void))(**((_DWORD **)v4 + 292) + 836))(); *((_DWORD *)v5 + 1) = v6; *((_BYTE *)v5 + 8) = *(_BYTE *)a2; *((_BYTE *)v5 + 9) = *(_BYTE *)(a2 + 1); *((_WORD *)v5 + 5) = *(_WORD *)(a2 + 2); *((_WORD *)v5 + 6) = *(_WORD *)a3; *((_WORD *)v5 + 7) = *(_WORD *)a4; if ( v6 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"Send_NC_CT_DB_SET_CMD : invalid charregistnumber", (int)byte_6A492E); } else { if ( v6 ) { if ( sub_4C81E0(&off_849C18, 16) ) { v7 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v7); } else { sub_639100(&unk_86DDD8, (int)"CCharacterTitleZone::Send_NC_CT_DB_SET_CMD : Packet Too Long", 16); } } else { sub_639100(&unk_86DDD8, (int)"Send_NC_CT_DB_SET_CMD : charregistnumber", 0); } } } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer:::so_SaveToDB_CharTitle : buf is NULL", 0); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CCharacterTitleZone::Send_NC_CT_SET_CURRENT_DB_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005C8340) -------------------------------------------------------- signed int __thiscall sub_5C8340(void *this, char a2, char a3, int a4) { int v4; // esi@1 signed int result; // eax@1 int v6; // ebx@3 int v7; // eax@9 unsigned int v8; // [sp+Ch] [bp-1Ch]@1 char v9[4]; // [sp+10h] [bp-18h]@3 int v10; // [sp+14h] [bp-14h]@3 int v11; // [sp+18h] [bp-10h]@3 int v12; // [sp+1Ch] [bp-Ch]@3 int v13; // [sp+20h] [bp-8h]@3 unsigned int v14; // [sp+24h] [bp-4h]@1 int v15; // [sp+28h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v4 = (int)this; v8 = sub_62AC10(this, a2, a3); result = sub_62AED0(v4, a2, a3, a4); if ( result ) { if ( v8 != a4 ) { LOBYTE(v8) = a2; BYTE1(v8) = a3 & 0x3F | ((_BYTE)a4 << 6); sub_5C7F70((void *)v4, (int)&v8); sub_5C8070((void *)v4, (int)&v8); v6 = (*(int (**)(void))(**(_DWORD **)(v4 + 1168) + 1388))(); v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, byte_6A492E, 0x14u); if ( *(_DWORD *)v6 != *(_DWORD *)v9 || *(_DWORD *)(v6 + 4) != v10 || *(_DWORD *)(v6 + 8) != v11 || *(_DWORD *)(v6 + 12) != v12 || *(_DWORD *)(v6 + 16) != v13 ) { if ( (*(int (**)(void))(**(_DWORD **)(v4 + 1168) + 836))() != -1 ) { v7 = (*(int (**)(void))(**(_DWORD **)(v4 + 1168) + 1388))(); sub_5B6AB0((int)&unk_133595F0, v7, a2, a3); } } } result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005C8480) -------------------------------------------------------- signed int __thiscall sub_5C8480(int *this, char a2, char a3) { int *v3; // esi@1 int v4; // eax@1 v3 = this; v4 = sub_62AB00(*this, a2, a3); if ( v4 ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v3[292] + 32))(v4); (*(void (**)(void))(*(_DWORD *)v3[292] + 1104))(); } return sub_5C8340(v3, a2, a3, 2); } //----- (005C84D0) -------------------------------------------------------- int __thiscall sub_5C84D0(void *this, int i, int a3, int a4) { int v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // edi@1 int v7; // ebx@1 int v8; // eax@9 int v9; // eax@11 unsigned __int8 v10; // dl@12 int v11; // ST24_4@12 char v12; // al@15 int v13; // eax@15 int v14; // ebx@15 int v15; // ST3C_4@15 int v16; // eax@15 char *v17; // eax@17 int v18; // ecx@18 int v19; // eax@19 int v20; // ebx@21 int v21; // ST24_4@23 void *v22; // eax@23 int v23; // ebx@25 int v24; // ST24_4@25 void *v25; // eax@25 char *v26; // eax@29 int v27; // eax@31 int v28; // edi@33 unsigned __int8 v29; // al@33 int v30; // ebx@34 int v31; // eax@34 char v33; // [sp-10h] [bp-50h]@4 char v34; // [sp-Ch] [bp-4Ch]@4 char v35; // [sp-Ch] [bp-4Ch]@13 __int16 v36; // [sp-8h] [bp-48h]@4 char v37; // [sp-8h] [bp-48h]@13 __int16 v38; // [sp-4h] [bp-44h]@4 int v39; // [sp-4h] [bp-44h]@13 char v40; // [sp+1Ch] [bp-24h]@10 int v41; // [sp+20h] [bp-20h]@1 int v42; // [sp+24h] [bp-1Ch]@10 int v43; // [sp+28h] [bp-18h]@12 char v44; // [sp+2Ch] [bp-14h]@9 char v45; // [sp+30h] [bp-10h]@15 char v46; // [sp+31h] [bp-Fh]@15 int v47; // [sp+3Ch] [bp-4h]@1 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1056); v47 = 0; v6 = i + 2; v7 = v5(v4); LOBYTE(v41) = *(_BYTE *)(v6 + 1); i = 0; if ( !(dword_14D2151C & 1) ) { dword_14D2151C |= 1u; word_14D21518 = 6; atexit(nullsub_180); } if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_14D21518) ) { v38 = 2563; v36 = *(_WORD *)(v6 + 2); v34 = *(_BYTE *)(v6 + 1); v33 = *(_BYTE *)v6; LABEL_40: sub_5C7DC0((void *)v7, v33, v34, v36, v38); goto LABEL_41; } if ( !sub_55E8E0(v4) ) { v38 = 2564; v36 = *(_WORD *)(v6 + 2); v34 = *(_BYTE *)(v6 + 1); v33 = *(_BYTE *)v6; goto LABEL_40; } if ( !sub_62ACE0((void *)v7, *(_BYTE *)v6, *(_BYTE *)(v6 + 1), *(_WORD *)(v6 + 2)) ) goto LABEL_44; if ( *(_BYTE *)v6 != 10 ) goto LABEL_12; v8 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v4 + 1964))(v4, &v44); i = v8; if ( !v8 || (v42 = sub_59B230((int)dword_1325CEF0, *(_WORD *)(v6 + 2), v8, (int)&v40)) == 0 ) { LABEL_44: v38 = 2562; v36 = *(_WORD *)(v6 + 2); v34 = *(_BYTE *)(v6 + 1); v33 = *(_BYTE *)v6; goto LABEL_40; } v9 = i; *(_WORD *)(i + 35) = *(_WORD *)(v6 + 2); sub_595A90((void *)v4, v9, *(_DWORD *)(v9 + 112), v9, (int)&v44); i = v42 + 3; LOBYTE(v41) = v40; LABEL_12: v10 = *(_BYTE *)(v7 + 1160); LOBYTE(v42) = *(_BYTE *)(v7 + 1161); v11 = *(_WORD *)(v7 + 1162); LOBYTE(v43) = v10; if ( sub_62ACE0((void *)v7, v10, v42, v11) ) { sub_5C7AB0((void *)v7, v43, v42, 2); v39 = 2; v37 = v42; v35 = v43; } else { sub_5C7AB0((void *)v7, v43, v42, 1); v39 = 1; v37 = v42; v35 = v43; } sub_5C8340((void *)v7, v35, v37, v39); sub_62AD70((void *)v7, *(_BYTE *)v6, v41, *(_WORD *)(v6 + 2), i); sub_62AED0(v7, *(_BYTE *)v6, *(_BYTE *)(v6 + 1), 3); v12 = *(_BYTE *)(v7 + 1161); v45 = *(_BYTE *)(v7 + 1160); v46 = v12 | 0xC0; LOWORD(i) = __PAIR__(v42 & 0x3F, (unsigned __int8)v43) | 0x8000; sub_5C81B0((void *)v7, v6, (int)&v45, (int)&i); sub_5C7DC0((void *)v7, *(_BYTE *)v6, v41, *(_WORD *)(v6 + 2), 2561); sub_55E900(v4, dword_14D129E8 + 100); v13 = *(_DWORD *)(v4 + 102); v14 = *(_DWORD *)v13; v15 = *(_DWORD *)(v13 + 4); (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1204))( v4, *(_WORD *)(v4 + 4), "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); v16 = *(_DWORD *)(v4 + 102); *(_DWORD *)v16 = v14; *(_DWORD *)(v16 + 4) = v15; if ( (unsigned __int8)v43 <= 0x7Fu ) { if ( (unsigned __int8)v42 <= 3u ) { v17 = (char *)&unk_1325D0A0 + 76 * ((unsigned __int8)v42 + 4 * (unsigned __int8)v43); if ( v17 ) { v18 = (unsigned __int8)*v17; if ( v18 > 0 ) { v19 = (int)(v17 + 12); i = v19; v43 = v18; while ( 1 ) { v20 = *(_DWORD *)v19; v42 = *(_DWORD *)(v19 - 4); if ( v20 && (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 996))( v4, *(_DWORD *)(*(_DWORD *)v20 + 34)) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1616))(v4, *(_DWORD *)(*(_DWORD *)v20 + 34)); v21 = *(_DWORD *)(*(_DWORD *)v20 + 34); v22 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_40A820(v22, v4, v21); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); } if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 996))( v4, *(_DWORD *)(*(_DWORD *)v42 + 34)) ) { v23 = v42; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1616))(v4, *(_DWORD *)(*(_DWORD *)v42 + 34)); v24 = *(_DWORD *)(*(_DWORD *)v23 + 34); v25 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1324))(v4); sub_40A820(v25, v4, v24); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); } i += 12; --v43; if ( !v43 ) break; v19 = i; } } sub_406770((void *)(v4 + 432), v4); if ( *(_BYTE *)v6 <= 0x7Fu ) { if ( (unsigned __int8)v41 <= 3u ) { v26 = (char *)&unk_1325D0A0 + 76 * ((unsigned __int8)v41 + 4 * *(_BYTE *)v6); if ( v26 ) { v42 = (unsigned __int8)*v26; v41 = 0; if ( v42 > 0 ) { v27 = (int)(v26 + 4); for ( i = v27; ; v27 = i ) { v28 = *(_DWORD *)(v27 + 4); v29 = *(_BYTE *)v27; if ( v28 ) { v30 = v29; v31 = *(_DWORD *)(v28 + 36 * v29 + 12); if ( v31 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, int, int, int, _DWORD, signed int, _DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 1592))( v4, v4, *(_DWORD *)(*(_DWORD *)v28 + 34), v30, v28, dword_14D129E8, 0, -1, *(_DWORD *)(v31 + 43), 1, 0) ) { sub_401900((void *)v4, *(_DWORD *)(*(_DWORD *)v28 + 34)); sub_4055D0((void *)v4, *(_DWORD *)(*(_DWORD *)v28 + 34), -1, v30); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 1008))( v4, *(_DWORD *)(*(_DWORD *)v28 + 34), -1, 1); } i += 12; ++v41; if ( v41 < v42 ) continue; } } break; } } } } } } } } LABEL_41: --dword_750CB8; v47 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D21518: using guessed type __int16 word_14D21518; // 14D2151C: using guessed type int dword_14D2151C; //----- (005C89C0) -------------------------------------------------------- signed int __thiscall sub_5C89C0(int *this, unsigned __int8 a2) { int *v2; // esi@1 signed int result; // eax@2 signed int v4; // eax@5 signed int v5; // edi@8 bool v6; // cf@15 signed __int64 v7; // qax@29 signed __int64 v8; // qax@42 unsigned __int64 v9; // qax@45 signed int v10; // eax@58 unsigned int v11; // eax@82 int v12; // [sp+8h] [bp-38h]@4 int v13; // [sp+10h] [bp-30h]@4 int v14; // [sp+18h] [bp-28h]@4 int v15; // [sp+20h] [bp-20h]@4 unsigned __int64 v16; // [sp+28h] [bp-18h]@4 unsigned __int64 v17; // [sp+28h] [bp-18h]@46 unsigned int v18; // [sp+30h] [bp-10h]@4 unsigned int v19; // [sp+34h] [bp-Ch]@4 unsigned int v20; // [sp+38h] [bp-8h]@4 unsigned int v21; // [sp+3Ch] [bp-4h]@4 v2 = this; if ( sub_62A9F0(*this, a2) && sub_62AB70(*v2, a2) ) { v15 = sub_62AA90(*v2, a2, 0); v14 = sub_62AA90(*v2, a2, 1); v13 = sub_62AA90(*v2, a2, 2); v12 = sub_62AA90(*v2, a2, 3); v16 = *(_QWORD *)&v2[4 * a2 + 294]; v21 = sub_62AC10(v2, a2, 0); v20 = sub_62AC10(v2, a2, 1); v19 = sub_62AC10(v2, a2, 2); v18 = sub_62AC10(v2, a2, 3); switch ( a2 ) { case 3u: case 4u: case 8u: case 0xBu: case 0xCu: case 0xDu: case 0xEu: case 0x10u: case 0x11u: case 0x12u: case 0x13u: case 0x14u: case 0x15u: case 0x16u: case 0x17u: case 0x18u: case 0x19u: case 0x1Au: case 0x1Bu: case 0x1Cu: case 0x1Du: case 0x1Eu: case 0x1Fu: case 0x20u: case 0x21u: case 0x22u: case 0x23u: case 0x24u: case 0x25u: case 0x26u: case 0x27u: case 0x28u: case 0x29u: case 0x2Au: case 0x2Du: case 0x2Eu: case 0x2Fu: case 0x30u: case 0x31u: case 0x32u: case 0x33u: case 0x34u: case 0x35u: case 0x36u: case 0x37u: case 0x38u: case 0x3Au: case 0x3Bu: case 0x3Cu: case 0x3Du: case 0x3Eu: case 0x3Fu: case 0x40u: case 0x41u: case 0x42u: case 0x43u: case 0x44u: case 0x45u: case 0x46u: case 0x47u: case 0x48u: case 0x49u: case 0x4Au: case 0x4Bu: case 0x4Cu: case 0x4Du: case 0x4Eu: case 0x4Fu: case 0x50u: case 0x51u: case 0x52u: case 0x53u: case 0x54u: case 0x55u: case 0x56u: case 0x57u: case 0x58u: case 0x59u: case 0x5Au: case 0x5Bu: case 0x5Cu: case 0x5Du: case 0x5Eu: case 0x5Fu: case 0x60u: case 0x61u: case 0x62u: case 0x63u: case 0x64u: case 0x65u: case 0x66u: case 0x67u: case 0x68u: case 0x69u: case 0x6Au: case 0x6Bu: case 0x6Cu: case 0x6Du: case 0x6Eu: case 0x6Fu: case 0x70u: case 0x71u: case 0x72u: case 0x73u: case 0x74u: case 0x78u: case 0x79u: case 0x7Au: case 0x7Bu: case 0x7Cu: case 0x7Du: case 0x7Eu: case 0x7Fu: v4 = 0; if ( v16 >= (unsigned int)v15 && (signed int)v21 < 2 ) v4 = sub_5C8480(v2, a2, 0); v5 = v4; if ( v16 >= (unsigned int)v14 && (signed int)v20 < 2 ) v5 = sub_5C8480(v2, a2, 1); if ( v16 >= (unsigned int)v13 ) { if ( (signed int)v19 < 2 ) v5 = sub_5C8480(v2, a2, 2); } if ( HIDWORD(v16) ) goto LABEL_17; v6 = (unsigned int)v16 < v12; goto LABEL_16; case 6u: if ( v16 < 1000000 * (unsigned __int64)(unsigned int)v15 || (signed int)v21 >= 2 ) v5 = 0; else v5 = sub_5C8480(v2, a2, 0); if ( v16 >= 1000000 * (unsigned __int64)(unsigned int)v14 && (signed int)v20 < 2 ) v5 = sub_5C8480(v2, a2, 1); if ( v16 >= 1000000 * (unsigned __int64)(unsigned int)v13 && (signed int)v19 < 2 ) v5 = sub_5C8480(v2, a2, 2); v7 = 1000000i64 * (unsigned int)v12; if ( HIDWORD(v16) < HIDWORD(v7) ) goto LABEL_94; if ( HIDWORD(v16) > HIDWORD(v7) ) goto LABEL_17; v6 = (unsigned int)v16 < (unsigned int)v7; goto LABEL_16; case 7u: if ( v16 < 1000 * (unsigned __int64)(unsigned int)v15 || (signed int)v21 >= 2 ) v5 = 0; else v5 = sub_5C8480(v2, a2, 0); if ( v16 >= 1000 * (unsigned __int64)(unsigned int)v14 && (signed int)v20 < 2 ) v5 = sub_5C8480(v2, a2, 1); if ( v16 >= 1000 * (unsigned __int64)(unsigned int)v13 && (signed int)v19 < 2 ) v5 = sub_5C8480(v2, a2, 2); v8 = 1000i64 * (unsigned int)v12; if ( HIDWORD(v16) < HIDWORD(v8) ) goto LABEL_94; if ( HIDWORD(v16) > HIDWORD(v8) ) goto LABEL_17; v6 = (unsigned int)v16 < (unsigned int)v8; goto LABEL_16; case 9u: LOBYTE(v9) = (*(int (**)(void))(*(_DWORD *)v2[292] + 1240))(); if ( v16 ) goto LABEL_93; v9 = (unsigned __int8)v9; v17 = (unsigned __int8)v9; if ( (unsigned __int8)v9 < (unsigned int)v15 || (signed int)v21 >= 2 ) { v5 = 0; } else { v5 = sub_5C8480(v2, a2, 0); v9 = v17; } if ( v9 >= (unsigned int)v14 && (signed int)v20 < 2 ) { v5 = sub_5C8480(v2, a2, 1); v9 = v17; } if ( v9 >= (unsigned int)v13 && (signed int)v19 < 2 ) { v5 = sub_5C8480(v2, a2, 2); v9 = v17; } if ( HIDWORD(v9) ) goto LABEL_17; v6 = (unsigned int)v9 < v12; goto LABEL_16; case 0xFu: v10 = 0; if ( v16 >= (unsigned int)v15 && (signed int)v21 < 2 ) v10 = sub_5C8480(v2, a2, 0); v5 = v10; if ( v16 >= (unsigned int)v14 && (signed int)v20 < 2 ) v5 = sub_5C8480(v2, a2, 1); if ( v16 >= (unsigned int)v13 && (signed int)v19 < 2 ) v5 = sub_5C8480(v2, a2, 2); if ( v16 >= (unsigned int)v12 && (signed int)v18 < 2 ) v5 = sub_5C8480(v2, a2, 3); if ( v16 < (unsigned int)v15 && (signed int)v21 >= 2 ) v5 = sub_5C8340(v2, a2, 0, 1); if ( v16 < (unsigned int)v14 && (signed int)v20 >= 2 ) v5 = sub_5C8340(v2, a2, 1, 1); if ( v16 < (unsigned int)v13 && (signed int)v19 >= 2 ) v5 = sub_5C8340(v2, a2, 2, 1); if ( v16 >= (unsigned int)v12 || (signed int)v18 < 2 ) goto LABEL_94; return sub_5C8340(v2, a2, 3, 1); case 0x2Bu: v11 = (unsigned int)(100 * v16) >> 9; if ( v11 < v15 || (signed int)v21 >= 2 ) { v5 = 0; } else { v5 = sub_5C8480(v2, a2, 0); v11 = (unsigned int)(100 * v16) >> 9; } if ( v11 >= v14 && (signed int)v20 < 2 ) { v5 = sub_5C8480(v2, a2, 1); v11 = (unsigned int)(100 * v16) >> 9; } if ( v11 >= v13 && (signed int)v19 < 2 ) { v5 = sub_5C8480(v2, a2, 2); v11 = (unsigned int)(100 * v16) >> 9; } v6 = v11 < v12; LABEL_16: if ( v6 ) goto LABEL_94; LABEL_17: if ( (signed int)v18 >= 2 ) goto LABEL_94; result = sub_5C8480(v2, a2, 3); break; default: LABEL_93: v5 = 0; LABEL_94: result = v5; break; } } else { result = 0; } return result; } //----- (005C8FF0) -------------------------------------------------------- signed int __thiscall sub_5C8FF0(int *this, unsigned __int8 a2, int a3, int a4) { signed int result; // eax@2 int *v5; // eax@3 if ( a2 < 0x80u ) { v5 = &this[4 * a2 + 294]; if ( *v5 != a3 || this[4 * a2 + 295] != a4 ) { *v5 = a3; this[4 * a2 + 295] = a4; this[4 * (a2 + 74)] = 1; } result = sub_5C89C0(this, a2); } else { result = 0; } return result; } //----- (005C9050) -------------------------------------------------------- signed int __thiscall sub_5C9050(int *this, unsigned __int8 a2, int a3, int a4) { signed int result; // eax@2 unsigned __int8 v5; // cf@3 if ( a2 < 0x80u ) { v5 = __CFADD__(a3, this[4 * a2 + 294]); this[4 * a2 + 294] += a3; this[4 * a2 + 295] += a4 + v5; this[4 * (a2 + 74)] = 1; result = sub_5C89C0(this, a2); } else { result = 0; } return result; } //----- (005C90A0) -------------------------------------------------------- signed int __thiscall sub_5C90A0(__time32_t this, int a2, int a3, signed int a4) { __time32_t v4; // esi@1 __int32 v5; // edi@1 signed int result; // eax@1 unsigned __int8 v7; // cf@3 v4 = this; v5 = sub_44FB50(this, 0); result = *(_DWORD *)(v4 + 3224) + 30; if ( result >= v5 ) { result = a4; *(_DWORD *)(v4 + 3224) = v5; *(_DWORD *)(v4 + 3228) = a4; } else { if ( a4 != *(_DWORD *)(v4 + 3228) ) { v7 = __CFADD__(a2, *(_DWORD *)(v4 + 1272)); *(_DWORD *)(v4 + 1272) += a2; *(_DWORD *)(v4 + 1276) += a3 + v7; *(_DWORD *)(v4 + 1280) = 1; result = sub_5C89C0((int *)v4, 6u); } *(_DWORD *)(v4 + 3228) = a4; *(_DWORD *)(v4 + 3224) = v5; } return result; } //----- (005C9120) -------------------------------------------------------- signed int __thiscall sub_5C9120(__time32_t this, int a2, int a3, signed int a4) { __time32_t v4; // esi@1 __int32 v5; // edi@1 signed int result; // eax@1 unsigned __int8 v7; // cf@3 v4 = this; v5 = sub_44FB50(this, 0); result = *(_DWORD *)(v4 + 3232) + 30; if ( result >= v5 ) { result = a4; *(_DWORD *)(v4 + 3232) = v5; *(_DWORD *)(v4 + 3236) = a4; } else { if ( a4 != *(_DWORD *)(v4 + 3236) ) { v7 = __CFADD__(a2, *(_DWORD *)(v4 + 1288)); *(_DWORD *)(v4 + 1288) += a2; *(_DWORD *)(v4 + 1292) += a3 + v7; *(_DWORD *)(v4 + 1296) = 1; result = sub_5C89C0((int *)v4, 7u); } *(_DWORD *)(v4 + 3236) = a4; *(_DWORD *)(v4 + 3232) = v5; } return result; } //----- (005C91A0) -------------------------------------------------------- signed int __thiscall sub_5C91A0(int this, int a2, __int16 a3) { int v3; // esi@1 unsigned __int8 v4; // cf@1 __time32_t v5; // ecx@1 __int32 v6; // edi@1 signed int result; // eax@1 v3 = this; v4 = __CFADD__(*(_DWORD *)(this + 1320), 1); ++*(_DWORD *)(v3 + 1320); *(_DWORD *)(v3 + 1324) += v4; *(_DWORD *)(this + 1328) = 1; sub_5C89C0((int *)this, 9u); v6 = sub_44FB50(v5, 0); result = *(_DWORD *)(v3 + 3244) + 180; if ( result >= v6 ) { *(_DWORD *)(v3 + 3244) = v6; *(_WORD *)(v3 + 3240) = a3; } else { if ( a3 != *(_WORD *)(v3 + 3240) ) { v4 = __CFADD__((*(_DWORD *)(v3 + 1304))++, 1); *(_DWORD *)(v3 + 1308) += v4; *(_DWORD *)(v3 + 1312) = 1; result = sub_5C89C0((int *)v3, 8u); } *(_WORD *)(v3 + 3240) = a3; *(_DWORD *)(v3 + 3244) = v6; } return result; } //----- (005C9240) -------------------------------------------------------- void __thiscall sub_5C9240(void *this, unsigned __int16 a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@4 unsigned __int8 v5; // cf@7 v2 = this; if ( a2 <= (unsigned int)dword_14D16014 ) { v3 = dword_14D1600C + 52 * a2; if ( v3 ) { if ( *(_DWORD *)v3 ) { v4 = **(_WORD **)v3; if ( (_WORD)v4 == a2 ) { if ( (unsigned __int16)(*(_WORD *)(*(_DWORD *)v3 + 66) + 10) >= (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v2 + 292) + 1240))() ) { v5 = __CFADD__((*((_DWORD *)v2 + 338))++, 1); *((_DWORD *)v2 + 339) += v5; *((_DWORD *)v2 + 340) = 1; sub_5C89C0((int *)v2, 0xBu); } } else { sub_639150(&unk_86DDD8, (int)"MobDataBox::operator [] :Invalid mob index", a2, v4); } } } } } // 14D1600C: using guessed type int dword_14D1600C; // 14D16014: using guessed type int dword_14D16014; //----- (005C92F0) -------------------------------------------------------- int __thiscall sub_5C92F0(__time32_t this, __int16 a2, signed int a3) { __time32_t v3; // esi@1 int result; // eax@1 unsigned __int8 v5; // cf@4 v3 = this; result = sub_44FB50(this, 0); if ( *(_DWORD *)(v3 + 3252) + 60 < result && *(_WORD *)(v3 + 3248) != a2 ) { if ( a3 >= 5 ) { *(_DWORD *)(v3 + 3252) = result; *(_WORD *)(v3 + 3248) = a2; v5 = __CFADD__((*(_DWORD *)(v3 + 1432))++, 1); *(_DWORD *)(v3 + 1436) += v5; *(_DWORD *)(v3 + 1440) = 1; result = sub_5C89C0((int *)v3, 0x10u); } } return result; } //----- (005C9360) -------------------------------------------------------- signed int __thiscall sub_5C9360(int this) { unsigned __int8 v1; // cf@1 v1 = __CFADD__((*(_DWORD *)(this + 1496))++, 1); *(_DWORD *)(this + 1504) = 1; *(_DWORD *)(this + 1500) += v1; return sub_5C89C0((int *)this, 0x14u); } //----- (005C93C0) -------------------------------------------------------- signed int __thiscall sub_5C93C0(int this, int a2, int a3, int a4) { unsigned __int8 v4; // cf@1 v4 = __CFADD__((*(_DWORD *)(this + 1544))++, 1); *(_DWORD *)(this + 1552) = 1; *(_DWORD *)(this + 1548) += v4; return sub_5C89C0((int *)this, 0x17u); } //----- (005C93F0) -------------------------------------------------------- signed int __thiscall sub_5C93F0(int this, int a2, int a3, int a4) { unsigned __int8 v4; // cf@1 v4 = __CFADD__((*(_DWORD *)(this + 1560))++, 1); *(_DWORD *)(this + 1568) = 1; *(_DWORD *)(this + 1564) += v4; return sub_5C89C0((int *)this, 0x18u); } //----- (005C9420) -------------------------------------------------------- char __thiscall sub_5C9420(int this, int a2, int a3, unsigned __int8 a4) { int v4; // esi@1 unsigned __int8 v5; // cf@2 int v6; // eax@8 char result; // al@10 v4 = this; if ( a4 >= 2u ) { v5 = __CFADD__((*(_DWORD *)(this + 1608))++, 1); *(_DWORD *)(this + 1616) = 1; *(_DWORD *)(this + 1612) += v5; sub_5C89C0((int *)this, 0x1Bu); } if ( *(_DWORD *)(v4 + 3264) == a2 && *(_DWORD *)(v4 + 3268) == a3 && a4 >= 2u && *(_BYTE *)(v4 + 3272) == 1 ) { v5 = __CFADD__((*(_DWORD *)(v4 + 1640))++, 1); *(_DWORD *)(v4 + 1644) += v5; *(_DWORD *)(v4 + 1648) = 1; sub_5C89C0((int *)v4, 0x1Du); } v6 = *(_DWORD *)(v4 + 1672); if ( (unsigned __int8)v6 < a4 ) { *(_QWORD *)(v4 + 1672) += a4 - (unsigned __int8)v6; *(_DWORD *)(v4 + 1680) = 1; sub_5C89C0((int *)v4, 0x1Fu); } result = (a4 < 2u) + 1; *(_BYTE *)(v4 + 3272) = result; *(_DWORD *)(v4 + 3264) = a2; *(_DWORD *)(v4 + 3268) = a3; return result; } //----- (005C9500) -------------------------------------------------------- int __thiscall sub_5C9500(int this, int a2, int a3, unsigned __int8 a4) { int v4; // esi@1 unsigned __int8 v5; // cf@1 int result; // eax@6 v4 = this; v5 = __CFADD__(*(_DWORD *)(this + 1624), 1); ++*(_DWORD *)(v4 + 1624); *(_DWORD *)(this + 1632) = 1; *(_DWORD *)(v4 + 1628) += v5; sub_5C89C0((int *)this, 0x1Cu); if ( *(_DWORD *)(v4 + 3264) == a2 && *(_DWORD *)(v4 + 3268) == a3 && !*(_BYTE *)(v4 + 3272) && a4 >= 2u ) { v5 = __CFADD__((*(_DWORD *)(v4 + 1656))++, 1); *(_DWORD *)(v4 + 1660) += v5; *(_DWORD *)(v4 + 1664) = 1; sub_5C89C0((int *)v4, 0x1Eu); } result = a3; *(_BYTE *)(v4 + 3272) = 0; *(_DWORD *)(v4 + 3264) = a2; *(_DWORD *)(v4 + 3268) = a3; return result; } //----- (005C9590) -------------------------------------------------------- int __thiscall sub_5C9590(int this, int a2, int a3, int a4) { int v4; // esi@1 unsigned __int8 v5; // cf@1 int result; // eax@1 v4 = this; v5 = __CFADD__(*(_DWORD *)(this + 1688), 1); ++*(_DWORD *)(v4 + 1688); *(_DWORD *)(this + 1696) = 1; *(_DWORD *)(v4 + 1692) += v5; sub_5C89C0((int *)this, 0x20u); v5 = __CFADD__((*(_DWORD *)(v4 + 1624))++, 1); *(_DWORD *)(v4 + 1628) += v5; *(_DWORD *)(v4 + 1632) = 1; sub_5C89C0((int *)v4, 0x1Cu); result = a2; *(_BYTE *)(v4 + 3272) = 0; *(_DWORD *)(v4 + 3264) = a2; *(_DWORD *)(v4 + 3268) = a3; return result; } //----- (005C9600) -------------------------------------------------------- signed int __thiscall sub_5C9600(int this, unsigned __int16 a2) { if ( *(_QWORD *)(this + 1720) != a2 ) { *(_QWORD *)(this + 1720) = a2; *(_DWORD *)(this + 1728) = 1; } return sub_5C89C0((int *)this, 0x22u); } //----- (005C9640) -------------------------------------------------------- signed int __thiscall sub_5C9640(int this, int a2) { unsigned __int8 v2; // cf@1 v2 = __CFADD__((*(_DWORD *)(this + 1816))++, 1); *(_DWORD *)(this + 1824) = 1; *(_DWORD *)(this + 1820) += v2; return sub_5C89C0((int *)this, 0x28u); } //----- (005C9670) -------------------------------------------------------- signed int __thiscall sub_5C9670(int this) { if ( *(_QWORD *)(this + 1832) ) { *(_DWORD *)(this + 1832) = 0; *(_DWORD *)(this + 1836) = 0; *(_DWORD *)(this + 1840) = 1; } return sub_5C89C0((int *)this, 0x29u); } //----- (005C96A0) -------------------------------------------------------- signed int __thiscall sub_5C96A0(int this) { unsigned __int8 v1; // cf@1 v1 = __CFADD__((*(_DWORD *)(this + 1848))++, 1); *(_DWORD *)(this + 1856) = 1; *(_DWORD *)(this + 1852) += v1; return sub_5C89C0((int *)this, 0x2Au); } //----- (005C96C0) -------------------------------------------------------- signed int __thiscall sub_5C96C0(int this, unsigned __int8 a2) { int v2; // esi@1 int v3; // eax@1 unsigned __int8 v5; // [sp-4h] [bp-Ch]@4 v2 = this; v3 = (*(int (**)(void))(**(_DWORD **)(this + 1168) + 1180))(); switch ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 56))(v3) ) { case 1u: case 2u: case 3u: case 4u: case 5u: if ( *(_QWORD *)(v2 + 1896) != a2 ) { *(_QWORD *)(v2 + 1896) = a2; *(_DWORD *)(v2 + 1904) = 1; } v5 = 45; goto LABEL_20; case 6u: case 7u: case 8u: case 9u: case 0xAu: if ( *(_QWORD *)(v2 + 1912) != a2 ) { *(_QWORD *)(v2 + 1912) = a2; *(_DWORD *)(v2 + 1920) = 1; } v5 = 46; goto LABEL_20; case 0xBu: case 0xCu: case 0xDu: case 0xEu: case 0xFu: if ( *(_QWORD *)(v2 + 1928) != a2 ) { *(_QWORD *)(v2 + 1928) = a2; *(_DWORD *)(v2 + 1936) = 1; } v5 = 47; goto LABEL_20; case 0x10u: case 0x11u: case 0x12u: case 0x13u: case 0x14u: if ( *(_QWORD *)(v2 + 1944) != a2 ) { *(_QWORD *)(v2 + 1944) = a2; *(_DWORD *)(v2 + 1952) = 1; } v5 = 48; goto LABEL_20; case 0x15u: case 0x16u: case 0x17u: case 0x18u: case 0x19u: if ( *(_QWORD *)(v2 + 2136) != a2 ) { *(_QWORD *)(v2 + 2136) = a2; *(_DWORD *)(v2 + 2144) = 1; } v5 = 60; goto LABEL_20; case 0x1Au: case 0x1Bu: if ( *(_QWORD *)(v2 + 2984) != a2 ) { *(_QWORD *)(v2 + 2984) = a2; *(_DWORD *)(v2 + 2992) = 1; } v5 = 113; LABEL_20: sub_5C89C0((int *)v2, v5); break; default: break; } *(_DWORD *)(v2 + 1328) = 1; return sub_5C89C0((int *)v2, 9u); } //----- (005C9860) -------------------------------------------------------- signed int __thiscall sub_5C9860(int this, unsigned __int16 a2) { unsigned __int8 v2; // cf@1 v2 = __CFADD__(a2, *(_DWORD *)(this + 2104)); *(_DWORD *)(this + 2104) += a2; *(_DWORD *)(this + 2112) = 1; *(_DWORD *)(this + 2108) += v2; return sub_5C89C0((int *)this, 0x3Au); } //----- (005C9890) -------------------------------------------------------- signed int __thiscall sub_5C9890(int this) { unsigned __int8 v1; // cf@1 v1 = __CFADD__((*(_DWORD *)(this + 2120))++, 1); *(_DWORD *)(this + 2128) = 1; *(_DWORD *)(this + 2124) += v1; return sub_5C89C0((int *)this, 0x3Bu); } //----- (005C98B0) -------------------------------------------------------- int __thiscall sub_5C98B0(__time32_t this) { __time32_t v1; // esi@1 __int32 v2; // eax@1 unsigned __int8 v3; // cf@2 int v4; // eax@2 v1 = this; v2 = sub_44FB50(this, 0) / 60; if ( v2 != *(_DWORD *)(v1 + 3276) ) { *(_DWORD *)(v1 + 3276) = v2; v3 = __CFADD__((*(_DWORD *)(v1 + 1224))++, 1); *(_DWORD *)(v1 + 1228) += v3; *(_DWORD *)(v1 + 1232) = 1; sub_5C89C0((int *)v1, 3u); v3 = __CFADD__((*(_DWORD *)(v1 + 1240))++, 1); *(_DWORD *)(v1 + 1244) += v3; *(_DWORD *)(v1 + 1248) = 1; sub_5C89C0((int *)v1, 4u); v3 = __CFADD__((*(_DWORD *)(v1 + 1832))++, 1); *(_DWORD *)(v1 + 1836) += v3; *(_DWORD *)(v1 + 1840) = 1; sub_5C89C0((int *)v1, 0x29u); v4 = sub_62AE40((void *)v1); if ( *(_DWORD *)(v1 + 1864) != v4 || *(_DWORD *)(v1 + 1868) ) { *(_DWORD *)(v1 + 1864) = v4; *(_DWORD *)(v1 + 1868) = 0; *(_DWORD *)(v1 + 1872) = 1; } sub_5C89C0((int *)v1, 0x2Bu); } return 0; } //----- (005C9980) -------------------------------------------------------- void __thiscall sub_5C9980(void *this) { *(_DWORD *)this = off_6A8718; } // 6A8718: using guessed type int (*off_6A8718[4])(); //----- (005C9990) -------------------------------------------------------- signed int __stdcall sub_5C9990(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { return 2; } //----- (005C99A0) -------------------------------------------------------- void *__thiscall sub_5C99A0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ST00_4@1 v3 = this; *(_DWORD *)this = &off_6A8FAC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)this + 16); *((_DWORD *)v3 + 2) = a3; *((_DWORD *)v3 + 1) = a2; v4 = dword_14D129E8; *((_DWORD *)v3 + 3) = dword_14D129E8; sub_401090((int)((char *)v3 + 16), v4, 0); return v3; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6A8FAC: using guessed type int (__thiscall *off_6A8FAC)(void *, char); // 14D129E8: using guessed type int dword_14D129E8; //----- (005C9A20) -------------------------------------------------------- bool __thiscall sub_5C9A20(int this, int a2) { return *(_DWORD *)(this + 4) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(this + 8) == *(_DWORD *)(a2 + 8); } //----- (005C9A50) -------------------------------------------------------- int __thiscall sub_5C9A50(int this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v8; // edx@1 int result; // eax@3 v8 = *(_DWORD *)(this + 4); if ( !v8 ) goto LABEL_9; if ( *(_DWORD *)(this + 8) ) return (*(int (__stdcall **)(int, int, int, int, int, _DWORD, int))(**(_DWORD **)(this + 8) + 4))( v8, a3, a4, a5, a6, *(_DWORD *)(this + 12), this + 16); if ( v8 ) result = 0; else LABEL_9: result = 2; return result; } //----- (005C9AA0) -------------------------------------------------------- char __thiscall sub_5C9AA0(int this) { char result; // al@3 if ( *(_DWORD *)(this + 4) && *(_DWORD *)(this + 8) ) result = (*(int (**)(void))(**(_DWORD **)(this + 8) + 8))(); else result = 0; return result; } //----- (005C9AC0) -------------------------------------------------------- void __thiscall sub_5C9AC0(int this) { int v1; // esi@1 int v2; // eax@2 v1 = this; if ( *(_DWORD *)(this + 8) ) { v2 = (*(int (**)(void))(**(_DWORD **)(this + 8) + 12))(); sub_401090(v1 + 16, *(_DWORD *)(v1 + 12), v2); } } //----- (005C9AF0) -------------------------------------------------------- void *__thiscall sub_5C9AF0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_6A8FAC; Concurrency::details::_ReaderWriterLock::_ReaderWriterLock((char *)this + 16); *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 2) = 0; *((_DWORD *)v1 + 3) = 0; sub_401090((int)((char *)v1 + 16), 0, 0); return v1; } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); // 6A8FAC: using guessed type int (__thiscall *off_6A8FAC)(void *, char); //----- (005C9B60) -------------------------------------------------------- int __thiscall sub_5C9B60(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; } //----- (005C9BF0) -------------------------------------------------------- void *__thiscall sub_5C9BF0(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6F9CB0; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F9CB0: using guessed type int (__thiscall *off_6F9CB0)(void *, char); //----- (005C9C30) -------------------------------------------------------- int __thiscall sub_5C9C30(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; return result; } //----- (005C9C50) -------------------------------------------------------- void __thiscall sub_5C9C50(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = off_6F9CDC; _LN21((void *)(this + 36), 0x3Cu, 16384, nullsub_2); *(_DWORD *)(v1 + 12) = &off_6F9CB0; v2 = *(void **)(v1 + 20); if ( v2 ) sub_6530A4(v2); } // 6F9CB0: using guessed type int (__thiscall *off_6F9CB0)(void *, char); // 6F9CDC: using guessed type int (__stdcall *off_6F9CDC[2])(int); //----- (005C9CD0) -------------------------------------------------------- signed int __thiscall sub_5C9CD0(int this, int a2) { int v2; // ebx@1 int v3; // eax@1 int v4; // ecx@1 __int16 v5; // di@2 int v6; // esi@2 signed int result; // eax@5 v2 = this; v3 = *(_WORD *)(this + 24); v4 = this + 12; if ( (_WORD)v3 == -1 ) { v5 = a2; v6 = 0; } else { v5 = v3; v6 = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 8))(v3); } if ( v6 ) { sub_5C9B60(v6, a2); *(_WORD *)(v6 + 56) = v5; *(_DWORD *)(v6 + 52) = 0; result = 1; } else { sub_639100(&unk_86DDD8, (int)"CGuildZone::ClearWar : Guild Buffer Full.", *(_WORD *)(v2 + 32)); result = 0; } return result; } //----- (005C9D50) -------------------------------------------------------- signed int __thiscall sub_5C9D50(void *this) { void *v1; // esi@1 int v2; // eax@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ"); dword_7508B8[dword_750CB8] = (int)"CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( *((_BYTE *)v1 + 8) ) { --dword_750CB8; } else { *(_WORD *)off_849C18 = 29766; if ( sub_4C81E0(&off_849C18, 3) ) { v2 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v2); } else { sub_639100(&unk_86DDD8, (int)"CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ : Packet Too Long", 3); } *((_BYTE *)v1 + 8) = 1; --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (005C9E50) -------------------------------------------------------- signed int __thiscall sub_5C9E50(int this, int *a2) { int *v2; // edi@1 signed int result; // eax@1 int v4; // esi@2 int v5; // edi@3 int v6; // ebx@3 int (__thiscall *v7)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@3 __time32_t v8; // eax@4 __time32_t v9; // eax@4 v2 = a2 + 1; result = sub_5C9CD0(this, (int)(a2 + 1)); if ( result ) { v4 = sub_54E4D0(&unk_13253630, *a2); if ( v4 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 2076))(v4, *v2); (*(void (__thiscall **)(int, int *))(*(_DWORD *)v4 + 2080))(v4, v2); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v6 = *(_WORD *)(v5 + 4); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v5 + 72))( v5, *(_WORD *)(v5 + 4), 1000000, 0, -1); v7 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 28); ++*(_WORD *)(v5 + 4); if ( !(unsigned __int8)v7(v5, v4, v6, 0) ) { v8 = sub_418EA0((__time32_t)byte_14D15210, (int)"CGuildZone::Recv_NC_GUILD_ZONE_MAKE_CMD : "); v9 = sub_43B910(v8, v6); sub_418F20(v9, (int)&unk_13359E04); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2084))(v4); } result = 1; } return result; } //----- (005C9F20) -------------------------------------------------------- char __thiscall sub_5C9F20(void *this, int a2) { int v2; // eax@2 int v3; // esi@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6)), (v3 = v2) != 0) ) { sub_5C9B60(v2, a2); *(_DWORD *)(v3 + 52) = *(_DWORD *)(a2 + 52); *(_WORD *)(v3 + 56) = *(_WORD *)(a2 + 56); result = 1; } else { result = 0; } return result; } //----- (005C9F70) -------------------------------------------------------- char __thiscall sub_5C9F70(void *this, int a2) { int v2; // eax@2 int v3; // esi@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6)), (v3 = v2) != 0) ) { sub_5C9B60(v2, a2); *(_DWORD *)(v3 + 52) = *(_DWORD *)(a2 + 52); *(_WORD *)(v3 + 56) = *(_WORD *)(a2 + 56); result = 1; } else { result = 0; } return result; } //----- (005C9FC0) -------------------------------------------------------- char __thiscall sub_5C9FC0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // ebx@1 int *v6; // eax@2 int v8; // edi@4 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { v6 = (int *)(v4 + 12 * v5); if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; v8 = *v6; sub_5C9B60(a2, *v6); *(_DWORD *)(a2 + 52) = *(_DWORD *)(v8 + 52); *(_WORD *)(a2 + 56) = *(_WORD *)(v8 + 56); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (005CA030) -------------------------------------------------------- char __thiscall sub_5CA030(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // ebx@1 int *v6; // eax@2 int v8; // edi@4 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { v6 = (int *)(v4 + 12 * v5); if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; v8 = *v6; sub_5C9B60(a2, *v6); *(_DWORD *)(a2 + 52) = *(_DWORD *)(v8 + 52); *(_WORD *)(a2 + 56) = *(_WORD *)(v8 + 56); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (005CA0B0) -------------------------------------------------------- void __thiscall sub_5CA0B0(int this) { unsigned __int16 v1; // bx@2 unsigned __int16 v2; // di@3 int v3; // edx@4 int v4; // eax@4 unsigned __int16 v5; // si@4 bool v6; // zf@5 int v7; // edx@5 int v8; // edx@6 int v9; // edx@9 int v10; // eax@9 int v11; // eax@9 if ( *(_DWORD *)(this + 4) ) { v1 = *(_WORD *)(*(_DWORD *)(this + 20) + 12 * *(_WORD *)(this + 26) + 4); while ( 1 ) { v2 = *(_WORD *)(this + 16); if ( v1 >= v2 ) break; v3 = *(_DWORD *)(this + 20); v4 = v1; v5 = v1; v1 = *(_WORD *)(v3 + 12 * v1 + 4); if ( v5 >= v2 || (v6 = *(_BYTE *)(v3 + 12 * v4 + 8) == 0, v7 = v3 + 12 * v4, v6) ) v8 = 0; else v8 = *(_DWORD *)v7; *(_BYTE *)(v8 + 44) = 0; if ( v5 >= *(_WORD *)(this + 16) || (v9 = *(_DWORD *)(this + 20), v10 = 3 * v4, v6 = *(_BYTE *)(v9 + 4 * v10 + 8) == 0, v11 = v9 + 4 * v10, v6) ) v34 = 0; else *(_DWORD *)(*(_DWORD *)v11 + 52) = 0; } } } //----- (005CA140) -------------------------------------------------------- int __thiscall sub_5CA140(int this, int a2) { unsigned __int16 v2; // bx@1 unsigned __int16 v3; // dx@1 int v4; // esi@3 int v5; // eax@3 unsigned __int16 v6; // di@3 int v7; // eax@4 bool v8; // zf@4 int v9; // eax@4 int v10; // eax@5 int v11; // eax@9 int v12; // eax@9 v2 = *(_WORD *)(this + 16); v3 = *(_WORD *)(*(_DWORD *)(this + 20) + 12 * *(_WORD *)(this + 26) + 4); while ( v3 < v2 ) { v4 = *(_DWORD *)(this + 20); v5 = v3; v6 = v3; v3 = *(_WORD *)(v4 + 12 * v3 + 4); if ( v6 >= v2 || (v7 = 3 * v5, v8 = *(_BYTE *)(v4 + 4 * v7 + 8) == 0, v9 = v4 + 4 * v7, v8) ) v10 = 0; else v10 = *(_DWORD *)v9; if ( *(_DWORD *)v10 == a2 ) { if ( v6 < v2 ) { v11 = *(_DWORD *)(this + 20); v8 = *(_BYTE *)(v11 + 12 * v6 + 8) == 0; v12 = v11 + 12 * v6; if ( !v8 ) return *(_DWORD *)v12; } return 0; } } return 0; } //----- (005CA1C0) -------------------------------------------------------- signed int __thiscall sub_5CA1C0(int this, int a2, int a3) { int v3; // eax@1 int v4; // ecx@1 signed int result; // eax@2 int v6; // eax@5 v3 = sub_5CA140(this, a2); if ( v3 ) { if ( *(_BYTE *)(v3 + 44) == 2 && *(_DWORD *)(v3 + 45) == a3 || (v6 = sub_5CA140(v4, a3)) != 0 && *(_BYTE *)(v6 + 44) == 2 && *(_DWORD *)(v6 + 45) == a2 ) { sub_480220((int)dword_7515A8, 1, a2, a3); result = 1; } else { sub_480220((int)dword_7515A8, 0, a2, a3); result = 0; } } else { sub_480220((int)dword_7515A8, 0, a2, a3); result = 0; } return result; } // 7515A8: using guessed type int dword_7515A8[]; //----- (005CA240) -------------------------------------------------------- signed int __thiscall sub_5CA240(int this, int a2) { int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int v5; // ecx@1 int v6; // eax@1 signed int result; // eax@2 v2 = sub_5CA140(this, *(_DWORD *)a2); v3 = *(_DWORD *)(a2 + 4); v4 = v2; v6 = sub_5CA140(v5, v3); if ( v6 && v4 ) { *(_DWORD *)(v4 + 45) = v3; *(_BYTE *)(v4 + 44) = 2; *(_DWORD *)(v6 + 52) = *(_DWORD *)a2; result = 1; } else { result = 0; } return result; } //----- (005CA290) -------------------------------------------------------- int __thiscall sub_5CA290(int this, int a2) { int result; // eax@1 result = sub_5CA140(this, *(_DWORD *)a2); if ( result ) { *(_DWORD *)(result + 45) = *(_DWORD *)(a2 + 4); *(_BYTE *)(result + 44) = 0; result = 1; } return result; } //----- (005CA2C0) -------------------------------------------------------- char __thiscall sub_5CA2C0(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6F9DC8; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6F9DC8: using guessed type int (__stdcall *off_6F9DC8)(int, int); //----- (005CA440) -------------------------------------------------------- signed int __thiscall sub_5CA440(int this, int a2) { int v2; // ebx@1 int v3; // esi@1 __int16 v4; // di@4 int v5; // esi@4 int v6; // eax@6 int v7; // edx@11 signed int result; // eax@13 int (__stdcall **v9)(int, int); // [sp+10h] [bp-1Ch]@2 int v10; // [sp+14h] [bp-18h]@2 int v11; // [sp+18h] [bp-14h]@1 int v12; // [sp+1Ch] [bp-10h]@3 int v13; // [sp+28h] [bp-4h]@2 v2 = this; v11 = this; v3 = a2; if ( *(_BYTE *)a2 & 1 ) { *(_DWORD *)(this + 4) = 0; v9 = &off_6F9DC8; v10 = this + 12; v13 = 0; sub_43C470(this + 12, (int)&v9); v13 = -1; v9 = &off_6F9CD4; } v12 = 0; if ( *(_WORD *)(a2 + 1) > 0u ) { v4 = a2; v5 = a2 + 15; do { if ( *(_WORD *)(v2 + 24) == -1 ) { v6 = 0; } else { v4 = *(_WORD *)(v2 + 24); v6 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v2 + 12) + 8))(v2 + 12, *(_WORD *)(v2 + 24)); } if ( v6 ) { *(_DWORD *)v6 = *(_DWORD *)(v5 - 12); *(_DWORD *)(v6 + 4) = *(_DWORD *)(v5 - 8); *(_DWORD *)(v6 + 8) = *(_DWORD *)(v5 - 4); *(_DWORD *)(v6 + 12) = *(_DWORD *)v5; *(_DWORD *)(v6 + 16) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v6 + 20) = *(_DWORD *)(v5 + 8); *(_DWORD *)(v6 + 24) = *(_DWORD *)(v5 + 12); *(_BYTE *)(v6 + 28) = *(_BYTE *)(v5 + 16); *(_BYTE *)(v6 + 29) = *(_BYTE *)(v5 + 17); *(_DWORD *)(v6 + 30) = *(_DWORD *)(v5 + 18); *(_WORD *)(v6 + 34) = *(_WORD *)(v5 + 22); *(_DWORD *)(v6 + 36) = *(_DWORD *)(v5 + 24); *(_DWORD *)(v6 + 40) = *(_DWORD *)(v5 + 28); *(_BYTE *)(v6 + 44) = *(_BYTE *)(v5 + 32); *(_DWORD *)(v6 + 45) = *(_DWORD *)(v5 + 33); *(_WORD *)(v6 + 56) = v4; *(_DWORD *)(v6 + 52) = 0; } else { sub_639100(&unk_86DDD8, (int)"CGuildZone::ClearWar : Guild Buffer Full.", *(_WORD *)(v11 + 32)); } v7 = *(_WORD *)(a2 + 1); v5 += 49; ++v12; } while ( v12 < v7 ); v2 = v11; v3 = a2; } result = 1; if ( *(_BYTE *)v3 & 2 ) *(_DWORD *)(v2 + 4) = 1; return result; } // 6F9CD4: using guessed type int (__stdcall *off_6F9CD4)(int, int); // 6F9DC8: using guessed type int (__stdcall *off_6F9DC8)(int, int); //----- (005CA5B0) -------------------------------------------------------- signed int __userpurge sub_5CA5B0(int a1, int a2, int *a3) { int v3; // esi@1 int v4; // edi@2 unsigned __int16 i; // bx@5 int v7; // eax@8 unsigned __int16 v8; // dx@8 bool v9; // zf@8 int v10; // eax@8 int v11; // eax@9 int v12; // eax@13 int v13; // eax@13 int v14; // ecx@14 int v15; // edx@17 int v16; // ecx@18 int v17; // ecx@21 int v18; // eax@22 int v19; // edx@26 int v20; // eax@27 int v21; // eax@31 int v22; // eax@31 int v23; // ecx@32 int v24; // edx@35 int v25; // ecx@36 int v26; // ecx@39 int v27; // eax@42 int v28; // ecx@42 int v29; // [sp-4h] [bp-1Ch]@5 unsigned __int16 v30; // [sp+Ah] [bp-Eh]@8 int v31; // [sp+14h] [bp-4h]@1 v3 = a1; v31 = a1; sub_485A10((int)&unk_D714FF8, 1, *a3, 0); if ( !sub_5CA140(v3, *a3) ) return 0; v4 = dword_13253824; if ( !dword_13253824 ) { sub_639100(&unk_86DDD8, (int)"CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD : NULL List", dword_13253824 != 0); return 0; } v29 = a2; for ( i = *(_WORD *)(*(_DWORD *)(dword_13253824 + 8) + 12 * *(_WORD *)(dword_13253824 + 14) + 4); i < *(_WORD *)(v4 + 4); i = v30 ) { v7 = *(_DWORD *)(v4 + 8); v8 = *(_WORD *)(v7 + 12 * i + 4); v9 = *(_BYTE *)(v7 + 12 * i + 8) == 0; v10 = v7 + 12 * i; v30 = v8; if ( v9 ) v11 = 0; else v11 = *(_DWORD *)v10; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2072))(v11) == *a3 ) { if ( i >= *(_WORD *)(v4 + 4) || (v12 = *(_DWORD *)(v4 + 8), v9 = *(_BYTE *)(v12 + 12 * i + 8) == 0, v13 = v12 + 12 * i, v9) ) v14 = 0; else v14 = *(_DWORD *)v13; (*(void (__stdcall **)(_DWORD, int))(*(_DWORD *)v14 + 2076))(0, v29); if ( i < *(_WORD *)(v4 + 4) && (v15 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v15 + 12 * i + 8)) ) v16 = *(_DWORD *)(v15 + 12 * i); else v16 = 0; v29 = 0; (*(void (**)(void))(*(_DWORD *)v16 + 2080))(); if ( i < *(_WORD *)(v4 + 4) && (v17 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v17 + 12 * i + 8)) ) v18 = *(_DWORD *)(v17 + 12 * i); else v18 = 0; (*(void (__thiscall **)(int))(*(_DWORD *)v18 + 2084))(v18); } if ( i < *(_WORD *)(v4 + 4) && (v19 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v19 + 12 * i + 8)) ) v20 = *(_DWORD *)(v19 + 12 * i); else v20 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 2140))(v20) == *a3 ) { if ( i >= *(_WORD *)(v4 + 4) || (v21 = *(_DWORD *)(v4 + 8), v9 = *(_BYTE *)(v21 + 12 * i + 8) == 0, v22 = v21 + 12 * i, v9) ) v23 = 0; else v23 = *(_DWORD *)v22; (*(void (__stdcall **)(_DWORD, int))(*(_DWORD *)v23 + 2144))(0, v29); if ( i < *(_WORD *)(v4 + 4) && (v24 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v24 + 12 * i + 8)) ) v25 = *(_DWORD *)(v24 + 12 * i); else v25 = 0; v29 = 0; (*(void (**)(void))(*(_DWORD *)v25 + 2148))(); if ( i < *(_WORD *)(v4 + 4) && (v26 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v26 + 12 * i + 8)) ) (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(v26 + 12 * i) + 2084))(*(_DWORD *)(v26 + 12 * i)); else (*(void (__thiscall **)(_DWORD))(v0 + 2084))(0); } } v27 = sub_5CA140(v31, *a3); if ( !v27 ) return 0; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v28 + 12) + 12))(v28 + 12, *(_WORD *)(v27 + 56)); return 1; } // 5CA5B0: could not find valid save-restore pair for ebx // 13253824: using guessed type int dword_13253824; //----- (005CA7E0) -------------------------------------------------------- int __thiscall sub_5CA7E0(int this) { int v1; // edi@1 int v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@1 int v5; // edi@1 int v6; // edx@3 int v7; // edx@6 bool v8; // zf@6 int v9; // edx@6 int v10; // edx@9 int v11; // edx@9 int v12; // edx@12 int v13; // edx@12 int v15; // [sp+10h] [bp-10h]@1 v1 = this; v15 = this; v2 = this + 12; *(_DWORD *)this = off_6F9CDC; *(_DWORD *)(this + 12) = &off_6F9CB0; *(_DWORD *)(this + 28) = 0; sub_5CA2C0(this + 12, 0x4000u); _eh_vector_constructor_iterator_((void *)(v1 + 36), 0x3Cu, 16384, (int)sub_5C9C30, nullsub_2); *(_DWORD *)(v1 + 4) = 0; *(_BYTE *)(v1 + 8) = 0; v3 = 0; v4 = 2; v5 = v1 + 96; do { if ( v4 - 2 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v6 + v3) ) *(_DWORD *)(v6 + v3) = v5 - 60; } if ( v4 - 1 < *(_WORD *)(v2 + 4) ) { v7 = *(_DWORD *)(v2 + 8); v8 = *(_DWORD *)(v7 + v3 + 12) == 0; v9 = v7 + v3 + 12; if ( v8 ) *(_DWORD *)v9 = v5; } if ( v4 < *(_WORD *)(v2 + 4) ) { v10 = *(_DWORD *)(v2 + 8); v8 = *(_DWORD *)(v10 + v3 + 24) == 0; v11 = v10 + v3 + 24; if ( v8 ) *(_DWORD *)v11 = v5 + 60; } if ( v4 + 1 < *(_WORD *)(v2 + 4) ) { v12 = *(_DWORD *)(v2 + 8); v8 = *(_DWORD *)(v12 + v3 + 36) == 0; v13 = v12 + v3 + 36; if ( v8 ) *(_DWORD *)v13 = v5 + 120; } v4 += 4; v3 += 48; v5 += 240; } while ( v4 - 2 < 16384 ); return v15; } // 6F9CB0: using guessed type int (__thiscall *off_6F9CB0)(void *, char); // 6F9CDC: using guessed type int (__stdcall *off_6F9CDC[2])(int); //----- (005CA900) -------------------------------------------------------- int __thiscall sub_5CA900(int this) { int result; // eax@1 result = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 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; *(_DWORD *)(this + 80) = 0; return result; } //----- (005CA950) -------------------------------------------------------- int __thiscall sub_5CA950(void *this, int a2) { int result; // eax@1 result = *(_DWORD *)this; *((_DWORD *)this + (*(_DWORD *)this)++ + 1) = a2; return result; } //----- (005CA970) -------------------------------------------------------- char __cdecl sub_5CA970(int a1, int a2) { int v2; // esi@1 char result; // al@2 int v4; // ebx@3 int v5; // edi@4 int v6; // ecx@6 int v7; // edi@6 int v8; // eax@8 int v9; // eax@8 int v10; // edi@8 v2 = a1; if ( a1 ) { v4 = a2; result = sub_639EC0(a2, (int)&a1); if ( result ) { v5 = sub_639FC0(v4); if ( v5 ) { *(_BYTE *)(v2 + 2) = *(_BYTE *)(v4 + 4); *(_WORD *)v2 = sub_639AC0(v4); *(_BYTE *)(v2 + 3) = *(_BYTE *)(v4 + 8); *(_BYTE *)(v2 + 25) = *(_BYTE *)(v5 + 28); *(_DWORD *)(v2 + 4) = *(_DWORD *)(v5 + 8); *(_DWORD *)(v2 + 8) = *(_DWORD *)(v5 + 12); *(_DWORD *)(v2 + 12) = *(_DWORD *)(v5 + 16); *(_DWORD *)(v2 + 16) = *(_DWORD *)(v5 + 20); v6 = a1; *(_DWORD *)(v2 + 20) = *(_DWORD *)(v5 + 24); *(_BYTE *)(v2 + 24) = *(_BYTE *)(v5 + 30); v7 = sub_54E4D0(&unk_13253630, v6); if ( v7 ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1180))(v7); *(_BYTE *)(v2 + 24) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 56))(v8); *(_BYTE *)(v2 + 25) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1240))(v7); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1388))(v7); *(_DWORD *)(v2 + 4) = *(_DWORD *)v9; *(_DWORD *)(v2 + 8) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v2 + 12) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v2 + 16) = *(_DWORD *)(v9 + 12); *(_DWORD *)(v2 + 20) = *(_DWORD *)(v9 + 16); *(_DWORD *)(v2 + 26) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1264))(v7); *(_DWORD *)(v2 + 30) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1268))(v7); *(_DWORD *)(v2 + 34) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3468))(v7); *(_DWORD *)(v2 + 38) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1256))(v7); *(_DWORD *)(v2 + 42) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1260))(v7); *(_DWORD *)(v2 + 46) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 3464))(v7); v10 = *(_DWORD *)(v7 + 102); *(_DWORD *)(v2 + 50) = *(_DWORD *)v10; result = 1; *(_DWORD *)(v2 + 54) = *(_DWORD *)(v10 + 4); } else { *(_DWORD *)(v2 + 38) = 0; *(_DWORD *)(v2 + 42) = 0; *(_DWORD *)(v2 + 46) = 0; *(_DWORD *)(v2 + 50) = 0; *(_DWORD *)(v2 + 26) = 1; *(_DWORD *)(v2 + 30) = 1; *(_DWORD *)(v2 + 34) = 1; result = 1; *(_DWORD *)(v2 + 54) = 0; } } else { result = 0; } } } else { result = 0; } return result; } //----- (005CAAF0) -------------------------------------------------------- char __cdecl sub_5CAAF0(int a1, void *a2, int a3) { signed int v3; // ebx@1 int v4; // edi@1 void *v6; // eax@3 void *v7; // esi@3 int v8; // ebx@7 int v9; // esi@9 int v10; // eax@13 char v11; // [sp+10h] [bp-28h]@6 char v12; // [sp+1Ch] [bp-1Ch]@6 int v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@1 v13 = (int)"PartyManufacture::pm_QuestCheck"; sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_QuestCheck"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = a1; v14 = 0; if ( !a1 ) { --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); return 0; } v6 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2692))(a1); v7 = v6; if ( !v6 ) { v14 = -1; LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); return 0; } sub_639BF0(v6, (int)&v12); sub_639C10(v7, (int)&v11); if ( sub_639F40((int)&v12, (int)&v11) ) { v8 = a3; while ( sub_639EC0((int)&v12, (int)&a1) ) { v9 = sub_54E4D0(&unk_13253630, a1); if ( v9 && *(_DWORD *)(v4 + 122) == *(_DWORD *)(v9 + 122) ) { if ( sub_4C81E0(a2, v8) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, void *))(*(_DWORD *)v10 + 12))(v10, v9, a2); } else { sub_639100(&unk_86DDD8, (int)"RaidTask::rt_Broadcast : Packet Too Long", v8); } } sub_639A70((int)&v12); if ( !sub_639F40((int)&v12, (int)&v11) ) { v3 = -1; goto LABEL_16; } } v14 = -1; goto LABEL_5; } LABEL_16: --dword_750CB8; v14 = v3; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CACC0) -------------------------------------------------------- void __cdecl sub_5CACC0(int a1) { void *v1; // ebx@2 void *v2; // edi@3 int v3; // eax@3 int v4; // eax@3 char v5; // [sp+4h] [bp-18h]@3 char v6; // [sp+10h] [bp-Ch]@3 char v7; // [sp+14h] [bp-8h]@4 char v8; // [sp+18h] [bp-4h]@4 if ( a1 ) { v1 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2692))(a1); if ( v1 ) { v2 = off_849C18; *(_WORD *)off_849C18 = -20446; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); sub_63A470(v1, (int)&v6, v3); v4 = sub_639C10(v1, (int)&v5); if ( !sub_639A90((int)&v6, v4) ) { *((_BYTE *)v2 + 4) = v7; *((_WORD *)v2 + 1) = sub_639AC0((int)&v6); *((_BYTE *)v2 + 5) = v8; *(_DWORD *)((char *)v2 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1256))(a1); *(_DWORD *)((char *)v2 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 1260))(a1); *(_DWORD *)((char *)v2 + 14) = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 3464))(a1); sub_5CAAF0(a1, &off_849C18, 18); } } } } //----- (005CAD90) -------------------------------------------------------- void __cdecl sub_5CAD90(int a1) { void *v1; // edi@2 void *v2; // ebx@3 int v3; // eax@3 int v4; // eax@3 char v5; // [sp+4h] [bp-18h]@3 char v6; // [sp+10h] [bp-Ch]@3 if ( a1 ) { v1 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2692))(a1); if ( v1 ) { v2 = off_849C18; *(_WORD *)off_849C18 = -20445; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); sub_63A470(v1, (int)&v6, v3); v4 = sub_639C10(v1, (int)&v5); if ( !sub_639A90((int)&v6, v4) ) { *((_BYTE *)v2 + 2) = 1; if ( sub_5CA970((int)((char *)v2 + 3), (int)&v6) ) sub_5CAAF0(a1, &off_849C18, 61); } } } } //----- (005CAE20) -------------------------------------------------------- void __cdecl sub_5CAE20(int a1) { void *v1; // esi@2 void *v2; // edi@3 int v3; // ebx@3 int v4; // esi@4 int v5; // esi@10 int v6; // eax@12 char v7; // [sp+0h] [bp-1Ch]@3 char v8; // [sp+Ch] [bp-10h]@3 char v9; // [sp+18h] [bp-4h]@5 if ( a1 ) { v1 = (void *)(*(int (**)(void))(*(_DWORD *)a1 + 2692))(); if ( v1 ) { v2 = off_849C18; *(_WORD *)off_849C18 = -20445; sub_639BF0(v1, (int)&v8); sub_639C10(v1, (int)&v7); v3 = 0; if ( sub_639F40((int)&v8, (int)&v7) ) { v4 = (int)((char *)v2 + 3); do { if ( sub_639EC0((int)&v8, (int)&v9) && sub_639FC0((int)&v8) && sub_5CA970(v4, (int)&v8) ) { ++v3; v4 += 58; } sub_639A70((int)&v8); } while ( sub_639F40((int)&v8, (int)&v7) ); } *((_BYTE *)v2 + 2) = v3; v5 = 58 * v3 + 1; if ( sub_4C81E0(&off_849C18, v5) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 764))(a1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"RaidTask::rt_SendMeRaidPlayersData : Packet Too Long", v5); } } } } //----- (005CAF20) -------------------------------------------------------- void __cdecl sub_5CAF20(int a1) { void *v1; // ebx@2 void *v2; // esi@3 int v3; // eax@3 int v4; // eax@3 int v5; // eax@4 char v6; // [sp+4h] [bp-18h]@3 char v7; // [sp+10h] [bp-Ch]@3 char v8; // [sp+14h] [bp-8h]@4 char v9; // [sp+18h] [bp-4h]@4 if ( a1 ) { v1 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2692))(a1); if ( v1 ) { v2 = off_849C18; *(_WORD *)off_849C18 = -20442; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); sub_63A470(v1, (int)&v7, v3); v4 = sub_639C10(v1, (int)&v6); if ( !sub_639A90((int)&v7, v4) ) { *((_BYTE *)v2 + 2) = 1; *((_BYTE *)v2 + 5) = v8; *(_WORD *)((char *)v2 + 3) = sub_639AC0((int)&v7); *((_BYTE *)v2 + 6) = v9; v5 = *(_DWORD *)(a1 + 102); *(_DWORD *)((char *)v2 + 7) = *(_DWORD *)v5; *(_DWORD *)((char *)v2 + 11) = *(_DWORD *)(v5 + 4); sub_5CAAF0(a1, &off_849C18, 15); } } } } //----- (005CAFD0) -------------------------------------------------------- void __cdecl sub_5CAFD0(int a1) { int v1; // esi@1 void *v2; // ebx@2 void *v3; // edi@3 int v4; // eax@3 int v5; // eax@3 int v6; // eax@4 int v7; // ebx@4 int v8; // esi@5 int v9; // eax@7 signed __int16 v10; // ax@9 int v11; // edx@9 int v12; // eax@9 int v13; // ebx@12 int v14; // eax@14 char v15; // [sp+4h] [bp-38h]@3 char v16; // [sp+10h] [bp-2Ch]@4 char v17; // [sp+1Ch] [bp-20h]@3 char v18; // [sp+20h] [bp-1Ch]@4 char v19; // [sp+24h] [bp-18h]@4 char v20; // [sp+28h] [bp-14h]@4 char v21; // [sp+2Ch] [bp-10h]@9 char v22; // [sp+30h] [bp-Ch]@9 int v23; // [sp+34h] [bp-8h]@7 int v24; // [sp+38h] [bp-4h]@6 v1 = a1; if ( a1 ) { v2 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a1 + 2692))(a1); if ( v2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = -20442; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a1 + 836))(a1); sub_63A470(v2, (int)&v17, v4); v5 = sub_639C10(v2, (int)&v15); if ( !sub_639A90((int)&v17, v5) ) { *((_BYTE *)v3 + 2) = 1; *((_BYTE *)v3 + 5) = v18; *(_WORD *)((char *)v3 + 3) = sub_639AC0((int)&v17); *((_BYTE *)v3 + 6) = v19; v6 = *(_DWORD *)(a1 + 102); *(_DWORD *)((char *)v3 + 7) = *(_DWORD *)v6; *(_DWORD *)((char *)v3 + 11) = *(_DWORD *)(v6 + 4); sub_5CAAF0(a1, &off_849C18, 15); sub_639BF0(v2, (int)&v20); sub_639C10(v2, (int)&v16); v7 = 0; if ( sub_639F40((int)&v20, (int)&v16) ) { v8 = (int)((char *)v3 + 3); do { if ( sub_639EC0((int)&v20, (int)&v24) ) { v9 = sub_54E4D0(&unk_13253630, v24); v23 = v9; if ( v9 ) { if ( *(_DWORD *)(a1 + 122) == *(_DWORD *)(v9 + 122) ) { *(_BYTE *)(v8 + 2) = v21; v10 = sub_639AC0((int)&v20); v11 = v23; *(_WORD *)v8 = v10; *(_BYTE *)(v8 + 3) = v22; v12 = *(_DWORD *)(v11 + 102); *(_DWORD *)(v8 + 4) = *(_DWORD *)v12; *(_DWORD *)(v8 + 8) = *(_DWORD *)(v12 + 4); ++v7; v8 += 12; } } } sub_639A70((int)&v20); } while ( sub_639F40((int)&v20, (int)&v16) ); v1 = a1; } *((_BYTE *)v3 + 2) = v7; v13 = 58 * v7 + 1; if ( sub_4C81E0(&off_849C18, v13) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v14 + 12))(v14, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"RaidTask::rt_SendMeRaidPlayersData : Packet Too Long", v13); } } } } } //----- (005CB170) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5CB170() { if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); } return &unk_14D21520; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB1E0) -------------------------------------------------------- int __cdecl sub_5CB1E0(__int16 a1, unsigned __int16 *a2) { unsigned __int16 *v2; // esi@1 int result; // eax@4 void *v4; // esi@7 int v5; // eax@10 char v6; // [sp+8h] [bp-28h]@8 char v7; // [sp+14h] [bp-1Ch]@8 int v8; // [sp+20h] [bp-10h]@9 int v9; // [sp+2Ch] [bp-4h]@3 v2 = a2; if ( a2 ) { if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v9 = -1; } result = sub_63A0E0(&unk_14D21520, a1, v2, (int)&a2); v4 = (void *)result; if ( result ) { sub_639BF0((void *)result, (int)&v7); sub_639C10(v4, (int)&v6); while ( sub_639F40((int)&v7, (int)&v6) ) { if ( sub_639EC0((int)&v7, (int)&v8) ) { v5 = sub_54E4D0(&unk_13253630, v8); if ( v5 ) (*(void (__thiscall **)(int, void *))(*(_DWORD *)v5 + 2696))(v5, v4); } sub_639A70((int)&v7); } result = (int)v4; } } else { if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v9 = -1; } result = sub_63A150(&unk_14D21520, a1, (int)&a2); } return result; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB350) -------------------------------------------------------- unsigned int __cdecl sub_5CB350(unsigned __int16 a1) { if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); } return sub_63A0C0(&unk_14D21520, a1); } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB3D0) -------------------------------------------------------- char __cdecl sub_5CB3D0(int a1, unsigned __int16 a2, int a3, int a4) { void *v4; // eax@3 void *v5; // esi@3 int v7; // eax@7 int v8; // edi@7 char v9; // [sp+10h] [bp-28h]@5 char v10; // [sp+1Ch] [bp-1Ch]@5 int v11; // [sp+28h] [bp-10h]@6 int v12; // [sp+34h] [bp-4h]@2 if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v12 = -1; } v4 = (void *)sub_63A0C0(&unk_14D21520, a2); v5 = v4; if ( !v4 ) return 0; sub_639BF0(v4, (int)&v10); sub_639C10(v5, (int)&v9); *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 0; *(_DWORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; if ( sub_639F40((int)&v10, (int)&v9) ) { while ( sub_639EC0((int)&v10, (int)&v11) ) { v7 = sub_54E4D0(&unk_13253630, v11); v8 = v7; if ( v7 && (!a3 || !a4 || sub_402710(a3, v7) <= (unsigned int)(a4 * a4)) ) { if ( sub_409730(v8) ) *(_DWORD *)(a1 + 4 * (*(_DWORD *)a1)++ + 4) = v8; } sub_639A70((int)&v10); if ( !sub_639F40((int)&v10, (int)&v9) ) return 1; } return 0; } return 1; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB560) -------------------------------------------------------- char __cdecl sub_5CB560(unsigned __int16 a1, int a2) { bool v2; // zf@1 void *v3; // esi@1 void *v4; // eax@3 void *v5; // edi@3 int v6; // eax@4 int v7; // esi@8 int v8; // eax@11 char v10; // [sp+Ch] [bp-40h]@4 char v11; // [sp+18h] [bp-34h]@6 char v12; // [sp+24h] [bp-28h]@4 char v13; // [sp+30h] [bp-1Ch]@6 int v14; // [sp+3Ch] [bp-10h]@7 int v15; // [sp+48h] [bp-4h]@2 v2 = (dword_14D28280 & 1) == 0; v3 = off_849C18; *(_WORD *)off_849C18 = -20445; if ( v2 ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v15 = -1; } v4 = (void *)sub_63A0C0(&unk_14D21520, a1); v5 = v4; if ( v4 ) { sub_63A470(v4, (int)&v12, a2); v6 = sub_639C10(v5, (int)&v10); LOBYTE(v4) = sub_639A90((int)&v12, v6); if ( !(_BYTE)v4 ) { *((_BYTE *)v3 + 2) = 1; LOBYTE(v4) = sub_5CA970((int)((char *)v3 + 3), (int)&v12); if ( (_BYTE)v4 ) { sub_639BF0(v5, (int)&v13); sub_639C10(v5, (int)&v11); for ( LOBYTE(v4) = sub_639F40((int)&v13, (int)&v11); (_BYTE)v4; LOBYTE(v4) = sub_639F40((int)&v13, (int)&v11) ) { LOBYTE(v4) = sub_639EC0((int)&v13, (int)&v14); if ( !(_BYTE)v4 ) break; v7 = sub_54E4D0(&unk_13253630, v14); if ( v7 ) { if ( sub_4C81E0(&off_849C18, 61) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v8 + 12))(v8, v7, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"RaidTask::rt_Broadcast : Packet Too Long", 61); } } sub_639A70((int)&v13); } } } } return (char)v4; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB6F0) -------------------------------------------------------- char __cdecl sub_5CB6F0(unsigned __int16 a1) { void *v1; // esi@3 int v2; // eax@6 int v3; // eax@14 char v5; // [sp+Ch] [bp-48h]@12 char v6; // [sp+18h] [bp-3Ch]@4 char v7; // [sp+24h] [bp-30h]@12 char v8; // [sp+30h] [bp-24h]@4 int v9; // [sp+3Ch] [bp-18h]@13 int v10; // [sp+40h] [bp-14h]@5 char v11; // [sp+44h] [bp-10h]@11 int v12; // [sp+50h] [bp-4h]@2 if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v12 = -1; } v1 = (void *)sub_63A0C0(&unk_14D21520, a1); if ( !v1 ) return 0; sub_639BF0(v1, (int)&v8); sub_639C10(v1, (int)&v6); while ( sub_639F40((int)&v8, (int)&v6) ) { if ( sub_639EC0((int)&v8, (int)&v10) ) { v2 = sub_54E4D0(&unk_13253630, v10); if ( v2 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 2696))(v2, 0); } sub_639A70((int)&v8); } if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; v12 = 1; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v12 = -1; } if ( !sub_63AB00(&unk_14D21520, a1, (int)&v11) ) { sub_639BF0(v1, (int)&v7); sub_639C10(v1, (int)&v5); while ( sub_639F40((int)&v7, (int)&v5) ) { if ( sub_639EC0((int)&v7, (int)&v9) ) { v3 = sub_54E4D0(&unk_13253630, v9); if ( v3 ) (*(void (__thiscall **)(int, void *))(*(_DWORD *)v3 + 2696))(v3, v1); } sub_639A70((int)&v7); } return 0; } return 1; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB8C0) -------------------------------------------------------- int __cdecl sub_5CB8C0(int a1) { int v1; // ebx@1 unsigned __int16 v2; // si@1 void *v3; // edi@3 int v4; // eax@5 int v5; // eax@5 int v6; // esi@5 v1 = a1; v2 = *(_WORD *)a1; if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); } v3 = (void *)sub_63A0C0(&unk_14D21520, v2); if ( !v3 ) return 0; if ( !sub_639D50(v3, v1, (int)&a1) ) { sub_639100(&unk_86DDD8, (int)"RaidTask::rt_AddPlayer", (unsigned __int16)a1); return 0; } v4 = sub_54E4D0(&unk_13253630, *(_DWORD *)(v1 + 6)); v5 = sub_409730(v4); v6 = v5; if ( v5 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 2696))(v5, v3); return v6; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CB9B0) -------------------------------------------------------- int __cdecl sub_5CB9B0(unsigned __int16 a1, int a2) { void *v2; // eax@3 int v3; // eax@5 int v4; // eax@5 int v5; // esi@5 unsigned __int16 v7; // [sp+8h] [bp-10h]@4 int v8; // [sp+14h] [bp-4h]@2 if ( !(dword_14D28280 & 1) ) { dword_14D28280 |= 1u; sub_63A090(&unk_14D21520, (int)&dword_DA230A4); atexit(sub_69CEE0); v8 = -1; } v2 = (void *)sub_63A0C0(&unk_14D21520, a1); if ( v2 ) { if ( sub_63A7F0(v2, a2, (int)&v7) ) { v3 = sub_54E4D0(&unk_13253630, a2); v4 = sub_409730(v3); v5 = v4; if ( v4 ) { (*(void (__cdecl **)(_DWORD))(*(_DWORD *)v4 + 2696))(0); return v5; } } else { sub_639150(&unk_86DDD8, (int)"RaidTask::rt_DelPlayer :", a2, v7); } } return 0; } // DA230A4: using guessed type int dword_DA230A4; // 14D28280: using guessed type int dword_14D28280; //----- (005CBAA0) -------------------------------------------------------- char __cdecl sub_5CBAA0(int a1, unsigned __int16 a2, int a3) { return sub_5CB3D0(a1, a2, a3, 1000); } //----- (005CBAC0) -------------------------------------------------------- char __cdecl sub_5CBAC0(int a1, unsigned __int16 a2) { return sub_5CB3D0(a1, a2, 0, 0); } //----- (005CBAE0) -------------------------------------------------------- char __cdecl sub_5CBAE0(int a1, int a2, int a3, int a4) { int (__thiscall *v4)(_DWORD); // eax@1 int v5; // eax@1 char result; // al@2 unsigned int v7; // edi@5 int v8; // ecx@6 unsigned int v9; // [sp+10h] [bp-64h]@3 int v10[20]; // [sp+14h] [bp-60h]@6 int v11; // [sp+64h] [bp-10h]@1 int v12; // [sp+70h] [bp-4h]@1 v11 = (int)"PartyManufacture::pm_QuestCheck"; sub_4675D0((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); dword_7508B8[dword_750CB8] = (int)"PartyManufacture::pm_QuestCheck"; dword_750AB8[dword_750CB8++] = -1; v4 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2692); v12 = 0; v5 = v4(a2); if ( v5 ) { if ( sub_5CB3D0((int)&v9, *(_WORD *)(v5 + 4), a3, 1000) ) { v7 = 0; if ( v9 ) { do { v8 = v10[v7]; if ( v8 ) (*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)v8 + 2036))(a1, a2, a3, a4); ++v7; } while ( v7 < v9 ); } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); result = 1; } else { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); result = 0; } } else { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PartyManufacture::pm_QuestCheck"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 5CBAE0: using guessed type int var_60[20]; //----- (005CBC30) -------------------------------------------------------- bool __thiscall sub_5CBC30(int this, int a2, int a3) { bool result; // al@2 __int16 v4; // si@7 int (*v5)(void); // eax@7 int v6; // ST04_4@15 int v7; // eax@15 int v8; // esi@17 switch ( *(_DWORD *)(this + 4) ) { case 0: case 0x10: return (*(int (__stdcall **)(int))(*(_DWORD *)a2 + 1836))(a3) == 1; case 1: case 0xF: if ( a2 && a2 == a3 ) goto LABEL_16; goto LABEL_5; case 2: if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2) == -1 ) goto LABEL_5; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2); v5 = *(int (**)(void))(*(_DWORD *)a3 + 1360); goto LABEL_8; case 5: case 0xE: case 0x11: return 1; case 7: if ( !(unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)a2 + 1836))(a3) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1232))(a3) != 2 ) goto LABEL_5; return 1; case 9: if ( !(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2) || (v6 = (*(int (**)(void))(*(_DWORD *)a3 + 2088))(), v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2), !sub_5CA1C0((int)&unk_13267D80, v7, v6)) ) goto LABEL_5; LABEL_16: result = 1; break; case 0xA: v8 = (*(int (**)(void))(*(_DWORD *)a2 + 2088))(); result = v8 == (*(int (**)(void))(*(_DWORD *)a3 + 2088))(); break; case 0xC: if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1364))(a2) == -1 ) goto LABEL_5; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1364))(a2); v5 = *(int (**)(void))(*(_DWORD *)a3 + 1364); LABEL_8: if ( v4 != (unsigned __int16)v5() ) LABEL_5: result = 0; else result = 1; break; default: result = 0; break; } return result; } //----- (005CBDF0) -------------------------------------------------------- bool __thiscall sub_5CBDF0(void *this, int a2, int a3) { void *v3; // esi@1 bool result; // al@2 int v5; // eax@3 v3 = this; if ( a3 ) { v5 = (*(int (**)(void))(*(_DWORD *)a3 + 1804))(); result = v5 && *(_DWORD *)(*(_DWORD *)v5 + 95) == *((_DWORD *)v3 + 1); } else { result = 0; } return result; } //----- (005CBE30) -------------------------------------------------------- bool __thiscall sub_5CBE30(void *this, int a2, int a3) { void *v3; // esi@1 bool result; // al@2 int v5; // eax@3 v3 = this; if ( a3 ) { v5 = (*(int (**)(void))(*(_DWORD *)a3 + 1804))(); result = v5 && *(_DWORD *)(*(_DWORD *)v5 + 99) == *((_DWORD *)v3 + 1); } else { result = 0; } return result; } //----- (005CBE70) -------------------------------------------------------- int __thiscall sub_5CBE70(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = a2; *(_DWORD *)this = &off_6F9ED0; switch ( a2 ) { case 0: *(_DWORD *)(this + 4) = 1; break; case 1: *(_DWORD *)(this + 4) = 11; break; case 2: *(_DWORD *)(this + 4) = 6; break; case 3: *(_DWORD *)(this + 4) = 16; break; case 4: *(_DWORD *)(this + 4) = 21; break; case 5: *(_DWORD *)(this + 4) = 26; break; default: return result; } return result; } // 6F9ED0: using guessed type int (__thiscall *off_6F9ED0)(void *, char); //----- (005CBEF0) -------------------------------------------------------- bool __thiscall sub_5CBEF0(void *this, int a2, int a3) { void *v3; // esi@1 bool result; // al@2 int v5; // eax@3 v3 = this; if ( a3 ) { v5 = (*(int (**)(void))(*(_DWORD *)a3 + 1180))(); result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 72))(v5) == *((_DWORD *)v3 + 1); } else { result = 0; } return result; } //----- (005CBF30) -------------------------------------------------------- int __cdecl sub_5CBF30(int a1, int a2) { int result; // eax@2 int v3; // eax@8 switch ( a1 ) { case 0: result = operator new(8u); if ( !result ) goto LABEL_10; *(_DWORD *)(result + 4) = a2; *(_DWORD *)result = &off_6F9EAC; break; case 1: result = operator new(8u); if ( !result ) goto LABEL_10; *(_DWORD *)(result + 4) = a2; *(_DWORD *)result = &off_6F9EB8; break; case 2: result = operator new(8u); if ( !result ) goto LABEL_10; *(_DWORD *)(result + 4) = a2; *(_DWORD *)result = &off_6F9EC4; break; case 3: v3 = operator new(8u); if ( !v3 ) goto LABEL_10; result = sub_5CBE70(v3, a2); break; default: LABEL_10: result = 0; break; } return result; } // 6F9EAC: using guessed type int (__thiscall *off_6F9EAC)(void *, char); // 6F9EB8: using guessed type int (__thiscall *off_6F9EB8)(void *, char); // 6F9EC4: using guessed type int (__thiscall *off_6F9EC4)(void *, char); //----- (005CBFD0) -------------------------------------------------------- void *__thiscall sub_5CBFD0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F9EA0; if ( a2 & 1 ) operator delete(this); return v2; } // 6F9EA0: using guessed type int (__thiscall *off_6F9EA0)(void *, char); //----- (005CC030) -------------------------------------------------------- bool __thiscall sub_5CC030(int this, int a2) { int v2; // eax@1 v2 = *(_DWORD *)(this + 12); return *(_DWORD *)(v2 + 18) == *(_DWORD *)a2 && *(_DWORD *)(v2 + 22) == *(_DWORD *)(a2 + 4); } //----- (005CC060) -------------------------------------------------------- int __thiscall sub_5CC060(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F9EDC; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = sub_5CBF30(*(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); *(_DWORD *)(v2 + 8) = sub_5CBF30(*(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); *(_DWORD *)v2 = &off_6F9EEC; return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); // 6F9EEC: using guessed type int (__thiscall *off_6F9EEC)(void *, char); //----- (005CC0B0) -------------------------------------------------------- int __thiscall sub_5CC0B0(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F9EDC; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = sub_5CBF30(*(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); *(_DWORD *)(v2 + 8) = sub_5CBF30(*(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); *(_DWORD *)v2 = &off_6F9EFC; return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); // 6F9EFC: using guessed type int (__thiscall *off_6F9EFC)(void *, char); //----- (005CC100) -------------------------------------------------------- int __thiscall sub_5CC100(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F9EDC; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = sub_5CBF30(*(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); *(_DWORD *)(v2 + 8) = sub_5CBF30(*(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); *(_DWORD *)v2 = &off_6F9F0C; return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); // 6F9F0C: using guessed type int (__thiscall *off_6F9F0C)(void *, char); //----- (005CC150) -------------------------------------------------------- bool __thiscall sub_5CC150(int this, int a2) { int v2; // edi@1 v2 = this; return (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(this + 4) + 4))( *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20)) && (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 8) + 4))( *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 24)); } //----- (005CC1A0) -------------------------------------------------------- int __thiscall sub_5CC1A0(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F9EDC; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = sub_5CBF30(*(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); *(_DWORD *)(v2 + 8) = sub_5CBF30(*(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); *(_DWORD *)v2 = &off_6F9F1C; return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); // 6F9F1C: using guessed type int (__thiscall *off_6F9F1C)(void *, char); //----- (005CC1F0) -------------------------------------------------------- int __thiscall sub_5CC1F0(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F9EDC; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = sub_5CBF30(*(_DWORD *)(a2 + 2), *(_DWORD *)(a2 + 6)); *(_DWORD *)(v2 + 8) = sub_5CBF30(*(_DWORD *)(a2 + 10), *(_DWORD *)(a2 + 14)); *(_DWORD *)v2 = &off_6F9F2C; return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); // 6F9F2C: using guessed type int (__thiscall *off_6F9F2C)(void *, char); //----- (005CC240) -------------------------------------------------------- char __thiscall sub_5CC240(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 char result; // al@1 int v5; // ecx@3 v2 = a2; v3 = this; result = (*(int (__stdcall **)(int))(*(_DWORD *)this + 4))(a2); if ( result ) { if ( *(_WORD *)(*((_DWORD *)v3 + 3) + 26) < (unsigned __int16)sub_4011A0(&unk_14D42DC0) ) return 0; v5 = *(_DWORD *)(a2 + 20); if ( v5 && *(_DWORD *)(a2 + 24) ) { if ( sub_402710(v5, *(_DWORD *)(a2 + 24)) > *(_WORD *)(*((_DWORD *)v3 + 3) + 28) * (unsigned int)*(_WORD *)(*((_DWORD *)v3 + 3) + 28) ) return 0; v2 = a2; } result = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 8))(v3, v2); } return result; } //----- (005CC2C0) -------------------------------------------------------- char __thiscall sub_5CC2C0(int this, int a2) { int v2; // ebx@1 char result; // al@1 unsigned int v4; // edi@3 unsigned int v5; // eax@3 unsigned int v6; // edi@5 int v7; // ecx@8 v2 = this; result = (*(int (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(this + 4) + 4))( *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 20)); if ( result ) { switch ( *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4) ) { case 0: v4 = 1000 * (*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1256))(); v5 = v4 / (*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1264))(); goto LABEL_8; case 1: v5 = (*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1256))(); goto LABEL_8; case 2: v6 = 1000 * (*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1260))(); v5 = v6 / (*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1268))(); goto LABEL_8; case 3: v5 = (*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1260))(); goto LABEL_8; case 4: v5 = (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(a2 + 16) + 1240))(); LABEL_8: v7 = *(_DWORD *)(v2 + 16); if ( *(_WORD *)(v7 + 8) > v5 || v5 >= *(_WORD *)(v7 + 10) ) goto LABEL_11; result = 1; break; default: LABEL_11: result = 0; break; } } return result; } //----- (005CC3C0) -------------------------------------------------------- void *__thiscall sub_5CC3C0(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 21) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 21) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 21); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (005CC410) -------------------------------------------------------- int __cdecl sub_5CC410() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_1335984C + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 1335984C: using guessed type int dword_1335984C; //----- (005CC430) -------------------------------------------------------- int __cdecl sub_5CC430() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359850 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359850: using guessed type int dword_13359850; //----- (005CC450) -------------------------------------------------------- void *__thiscall sub_5CC450(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 21) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 21) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 21) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 21) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 21) ) goto LABEL_11; return result; } //----- (005CC4B0) -------------------------------------------------------- void *__thiscall sub_5CC4B0(void *this, char a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // ecx@3 v2 = this; v3 = *((_DWORD *)this + 1); *(_DWORD *)v2 = &off_6F9EDC; if ( v3 ) (**(void (__stdcall ***)(_DWORD))v3)(1); v4 = *((_DWORD *)v2 + 2); if ( v4 ) (**(void (__stdcall ***)(_DWORD))v4)(1); if ( a2 & 1 ) operator delete(v2); return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); //----- (005CC4F0) -------------------------------------------------------- int __thiscall sub_5CC4F0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= 0x1FFFFFFE ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 20) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 20) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 21) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 20) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 20) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 21) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 20) = 1; *(_BYTE *)(v13 + 20) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 20) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 20) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 21) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 20) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 20) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 21) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 20) = 1; *(_BYTE *)(v22 + 20) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 20) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 20) = 1; return result; } //----- (005CC720) -------------------------------------------------------- int __thiscall sub_5CC720(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned int v10; // edi@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 21) ) { v10 = *((_DWORD *)a3 + 3); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v7 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 21) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5CC4F0(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5CC450(&a4); v11 = a4; v4 = a3; } if ( *(_DWORD *)(v11 + 12) >= *((_DWORD *)v4 + 3) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5CC4F0(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (005CC800) -------------------------------------------------------- int __thiscall sub_5CC800(void *this, unsigned __int16 a2) { int result; // eax@2 void *v3; // [sp+0h] [bp-4h]@1 v3 = this; sub_5C5630((int)&unk_14D28294, (int)&v3, (int)&a2); if ( v3 == dword_14D28298 ) { sub_639100(&unk_86DDD8, (int)"Cannot find ItemActionCondition", a2); result = 0; } else { result = *((_DWORD *)v3 + 4); } return result; } //----- (005CC850) -------------------------------------------------------- int __thiscall sub_5CC850(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // edi@1 int v6; // [sp+10h] [bp-10h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v2 = this; v3 = a2; *(_DWORD *)this = &off_6F9EDC; *(_DWORD *)(this + 12) = v3; *(_DWORD *)(this + 4) = sub_5CBF30(*(_DWORD *)(v3 + 2), *(_DWORD *)(v3 + 6)); *(_DWORD *)(v2 + 8) = sub_5CBF30(*(_DWORD *)(v3 + 10), *(_DWORD *)(v3 + 14)); *(_DWORD *)v2 = &off_6F9FA0; v4 = *(_DWORD *)(v3 + 22); v7 = 0; a2 = v4; sub_47A6E0((int)&unk_14D28284, (int)&v6, (int)&a2); if ( (void *)v6 == dword_14D28288 ) { sub_639100(&unk_86DDD8, (int)"Cannot find ActionRangeFactor", v4); loc_6391B0("ActionRangeFactors::getRangeFactor"); *(_DWORD *)(v2 + 16) = 0; } else { *(_DWORD *)(v2 + 16) = *(_DWORD *)(v6 + 16); } return v2; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); // 6F9FA0: using guessed type int (__thiscall *off_6F9FA0)(void *, char); //----- (005CC930) -------------------------------------------------------- char __cdecl sub_5CC930() { unsigned int v0; // edi@1 int v1; // esi@2 int v2; // eax@2 char result; // al@4 int v4; // [sp+8h] [bp-10h]@2 char v5; // [sp+Ch] [bp-Ch]@2 int v6; // [sp+10h] [bp-8h]@2 int v7; // [sp+14h] [bp-4h]@2 v0 = 0; if ( sub_5CC410() ) { while ( 1 ) { v1 = sub_626BC0(dword_1335984C + 4, v0); v6 = *(_DWORD *)v1; v7 = v1; v2 = sub_440B50(&unk_14D28284, (int)&v6); sub_5CC720((int)&unk_14D28284, (int)&v4, (void *)v2, 0); if ( v5 != 1 ) break; ++v0; if ( v0 >= sub_5CC410() ) goto LABEL_4; } sub_639100(&unk_86DDD8, (int)"ActionRangeFactor Index Conflict", *(_DWORD *)v1); loc_6391B0("ActionRangeFactors::DataProcess"); result = 0; } else { LABEL_4: result = 1; } return result; } // 1335984C: using guessed type int dword_1335984C; //----- (005CC9D0) -------------------------------------------------------- int __cdecl sub_5CC9D0(int a1) { int v1; // eax@2 int result; // eax@3 int v3; // eax@5 int v4; // eax@7 int v5; // eax@9 int v6; // eax@11 int v7; // eax@13 switch ( *(_DWORD *)(a1 + 18) ) { case 0: v1 = operator new(0x10u); if ( !v1 ) goto LABEL_4; result = sub_5CC060(v1, a1); break; case 2: v3 = operator new(0x10u); if ( !v3 ) goto LABEL_4; result = sub_5CC0B0(v3, a1); break; case 4: v4 = operator new(0x10u); if ( !v4 ) goto LABEL_4; result = sub_5CC100(v4, a1); break; case 6: v5 = operator new(0x14u); if ( !v5 ) goto LABEL_4; result = sub_5CC850(v5, a1); break; case 7: v6 = operator new(0x10u); if ( !v6 ) goto LABEL_4; result = sub_5CC1A0(v6, a1); break; case 8: v7 = operator new(0x10u); if ( v7 ) result = sub_5CC1F0(v7, a1); else LABEL_4: result = 0; break; default: sub_639100(&unk_86DDD8, (int)"Unexpected condition type", *(_WORD *)a1); loc_6391B0("::MakeCondition"); result = 0; break; } return result; } //----- (005CCBB0) -------------------------------------------------------- char __cdecl sub_5CCBB0() { unsigned int v0; // edi@1 int v1; // eax@2 int *v2; // esi@2 int v3; // eax@2 int v4; // eax@2 char result; // al@4 int v6; // [sp+8h] [bp-10h]@2 char v7; // [sp+Ch] [bp-Ch]@2 __int16 v8; // [sp+10h] [bp-8h]@2 int v9; // [sp+14h] [bp-4h]@2 v0 = 0; if ( sub_5CC430() ) { while ( 1 ) { v1 = sub_626BC0(dword_13359850 + 4, v0); v2 = (int *)v1; v3 = sub_5CC9D0(v1); v8 = *(_WORD *)v2; v9 = v3; v4 = sub_5C5AB0(&unk_14D28294, (int)&v8); sub_4240B0((int)&unk_14D28294, (int)&v6, (void *)v4, 0); if ( v7 != 1 ) break; ++v0; if ( v0 >= sub_5CC430() ) goto LABEL_4; } sub_639100(&unk_86DDD8, (int)"ItemActionCondition ID Conflict", *(_WORD *)v2); loc_6391B0("ItemActionConditions::DataProcess"); result = 0; } else { LABEL_4: result = 1; } return result; } // 13359850: using guessed type int dword_13359850; //----- (005CCC50) -------------------------------------------------------- void *__thiscall sub_5CCC50(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4C0DA0(this); *((_DWORD *)v2 + 402) = a2; *(_DWORD *)v2 = &off_6FA078; return v2; } // 6FA078: using guessed type int (__stdcall *off_6FA078)(int, int, int); //----- (005CCC80) -------------------------------------------------------- void *__thiscall sub_5CCC80(void *this, __int16 a2) { void *v2; // esi@1 v2 = this; sub_4C0DA0(this); *((_WORD *)v2 + 804) = a2; *(_DWORD *)v2 = &off_6FA08C; return v2; } // 6FA08C: using guessed type int (__stdcall *off_6FA08C)(int, int, int); //----- (005CCCB0) -------------------------------------------------------- void *__thiscall sub_5CCCB0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4C0DA0(this); *((_DWORD *)v2 + 402) = a2; *(_DWORD *)v2 = &off_6FA0A0; return v2; } // 6FA0A0: using guessed type int (__stdcall *off_6FA0A0)(int, int, int); //----- (005CCCE0) -------------------------------------------------------- void *__thiscall sub_5CCCE0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4C0DA0(this); *((_DWORD *)v2 + 402) = a2; *(_DWORD *)v2 = &off_6FA0B4; return v2; } // 6FA0B4: using guessed type int (__stdcall *off_6FA0B4)(int, int, int); //----- (005CCD10) -------------------------------------------------------- void *__thiscall sub_5CCD10(void *this, __int16 a2) { void *v2; // esi@1 v2 = this; sub_4C0DA0(this); *((_WORD *)v2 + 804) = a2; *(_DWORD *)v2 = &off_6FA0C8; return v2; } // 6FA0C8: using guessed type int (__stdcall *off_6FA0C8)(int, int, int); //----- (005CCD40) -------------------------------------------------------- void __thiscall sub_5CCD40(int this, int a2, int a3) { int v3; // edi@1 int v4; // ebx@2 int v5; // esi@3 int v6; // [sp+4h] [bp-4h]@1 v3 = 0; v6 = this; if ( *(_DWORD *)(this + 1604) > 0 ) { v4 = this + 4; do { v5 = *(_DWORD *)v4; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v4 + 1156))(*(_DWORD *)v4) != 3 ) (*(void (__stdcall **)(int, int))(*(_DWORD *)a2 + 20))(a3, v5); ++v3; v4 += 8; } while ( v3 < *(_DWORD *)(v6 + 1604) ); } } //----- (005CCDA0) -------------------------------------------------------- bool __thiscall sub_5CCDA0(int this, int a2) { return (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(this + 1608) + 1836))(a2) == 1; } //----- (005CCDC0) -------------------------------------------------------- bool __thiscall sub_5CCDC0(int this, int a2) { return *(_WORD *)(this + 1608) == (unsigned __int16)(*(int (**)(void))(*(_DWORD *)a2 + 1360))(); } //----- (005CCDF0) -------------------------------------------------------- bool __stdcall sub_5CCDF0(int a1) { return (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1232))(a1) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1232))(a1) == 5 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 1232))(a1) == 8; } //----- (005CCE40) -------------------------------------------------------- signed int __thiscall sub_5CCE40(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)a2 + 2088))(); return sub_5CA1C0((int)&unk_13267D80, *((_DWORD *)v2 + 402), v3); } //----- (005CCE70) -------------------------------------------------------- bool __thiscall sub_5CCE70(int this, int a2) { return *(_DWORD *)(this + 1608) == (*(int (**)(void))(*(_DWORD *)a2 + 2072))(); } //----- (005CCEA0) -------------------------------------------------------- bool __thiscall sub_5CCEA0(int this, int a2) { return *(_WORD *)(this + 1608) == (unsigned __int16)(*(int (**)(void))(*(_DWORD *)a2 + 1364))(); } //----- (005CCEE0) -------------------------------------------------------- bool __stdcall sub_5CCEE0(int a1) { int v1; // eax@1 v1 = *(_DWORD *)(a1 + 8); return v1 && v1 != 5 && v1 != 9; } //----- (005CCF10) -------------------------------------------------------- int __cdecl sub_5CCF10(int a1, char a2, __int16 a3) { int result; // eax@1 int v4; // esi@2 int v5; // ST04_4@2 int v6; // eax@2 char v7; // [sp+Ch] [bp-18h]@2 int v8; // [sp+18h] [bp-Ch]@1 int v9; // [sp+20h] [bp-4h]@2 result = (int)&v8; if ( a1 ) { v4 = sub_401180(&off_849C18, 8, 111); *(_WORD *)(v4 + 2) = sub_4802C0(a1); *(_BYTE *)(v4 + 4) ^= (a2 ^ *(_BYTE *)(v4 + 4)) & 1; *(_WORD *)(v4 + 5) = a3; sub_4287B0(&v7, &off_849C18, 7); v9 = 0; v5 = sub_552F20(a1); v6 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a1, v6, v5, 0, 0, (int)&v7, 1, 65535); v9 = -1; result = sub_428A70(&v7); } return result; } //----- (005CCFD0) -------------------------------------------------------- int __userpurge sub_5CCFD0(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // eax@1 int result; // eax@2 int v7; // edi@3 int v8; // eax@3 int v9; // edi@3 int v10; // eax@3 int v11; // edi@5 int v12; // edx@5 void (__thiscall *v13)(_DWORD); // eax@5 int (__thiscall *v14)(_DWORD, _DWORD, _DWORD); // edx@6 int v15; // eax@8 unsigned int v16; // edi@8 int v17; // ebx@9 int v18; // ST10_4@9 int v19; // edi@12 int v20; // edx@12 unsigned int v21; // [sp-8h] [bp-10h]@6 int v22; // [sp-4h] [bp-Ch]@1 int v23; // [sp+10h] [bp+8h]@3 v4 = a1; v5 = *(_DWORD *)(a1 + 4); v22 = a2; switch ( *(_DWORD *)(v5 + 14) ) { case 0: (*(void (__thiscall **)(int))(*(_DWORD *)a4 + 1284))(a4); sub_5CCF10(a4, 1, *(_WORD *)(*(_DWORD *)(v4 + 4) + 18)); (*(void (__thiscall **)(int, signed int, int))(*(_DWORD *)a4 + 52))(a4, 1, a2); return 0; case 1: v7 = *(_DWORD *)a4; v23 = *(_WORD *)(v5 + 18); v8 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a4 + 1264))(a4, v22); (*(void (__thiscall **)(int, unsigned int))(v7 + 1284))( a4, (unsigned int)((unsigned int)(unsigned __int16)v23 * v8 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); v9 = *(_WORD *)(*(_DWORD *)(v4 + 4) + 18); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1264))(a4); sub_5CCF10( a4, 1, (unsigned int)((unsigned int)(v9 * v10) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); (*(void (__thiscall **)(int))(*(_DWORD *)a4 + 52))(a4); return 0; case 2: (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)a4 + 1276))(a4, *(_WORD *)(v5 + 18), a2); (*(void (__thiscall **)(int))(*(_DWORD *)a4 + 52))(a4); return 0; case 3: v11 = *(_DWORD *)a4; v12 = (unsigned int)*(_WORD *)(v5 + 18) * (*(int (__thiscall **)(int, int))(*(_DWORD *)a4 + 1268))(a4, v22) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32; v13 = *(void (__thiscall **)(_DWORD))(v11 + 1276); goto LABEL_13; case 4: v14 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a4 + 3048); v21 = *(_WORD *)(v5 + 18); goto LABEL_8; case 5: v21 = (unsigned int)((unsigned int)*(_WORD *)(v5 + 18) * (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1264))(a4) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v14 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)a4 + 3048); LABEL_8: v15 = v14(a4, v21, a2); v16 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)a4 + 3500))(a4, v15, 0); if ( (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1256))(a4) > v16 ) { (*(void (__thiscall **)(int))(*(_DWORD *)a4 + 1472))(a4); sub_5CCF10(a4, 0, v16); (*(void (__thiscall **)(int, signed int, unsigned int))(*(_DWORD *)a4 + 52))(a4, 1, v16); result = 0; } else { v17 = *(_DWORD *)a4; v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a4 + 1256))(a4); (*(void (__thiscall **)(int))(v17 + 1468))(a4); sub_5CCF10(a4, 0, v16); (*(void (__thiscall **)(int, signed int, int))(*(_DWORD *)a4 + 52))(a4, 1, v18); result = 0; } return result; case 6: (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)a4 + 1272))(a4, *(_WORD *)(v5 + 18), a2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)a4 + 52))(a4); return 0; case 7: v19 = *(_DWORD *)a4; v20 = (unsigned int)*(_WORD *)(v5 + 18) * (*(int (__thiscall **)(int, int))(*(_DWORD *)a4 + 1268))(a4, v22) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32; v13 = *(void (__thiscall **)(_DWORD))(v19 + 1272); LABEL_13: v13(a4); break; default: break; } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)a4 + 52))(a4, 1); return 0; } // 5CCFD0: could not find valid save-restore pair for edi //----- (005CD240) -------------------------------------------------------- int __thiscall sub_5CD240(int this, int a2, int a3) { return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a3 + 1600))( a2, *(_DWORD *)(*(_DWORD *)(this + 4) + 14), *(_WORD *)(*(_DWORD *)(this + 4) + 18), 1, 2500, -1, 12); } //----- (005CD280) -------------------------------------------------------- int __thiscall sub_5CD280(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v6; // eax@6 v3 = this; v4 = sub_401310(&unk_877138, *(_DWORD *)(*(_DWORD *)(this + 4) + 14)); if ( v4 && !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)a3 + 1588))(a3, v4) ) { if ( *(_DWORD *)a2 == 8 && !*(_DWORD *)(a2 + 4) ) { (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v3 + 12))(v3, *(_DWORD *)(a2 + 16), a3); return 0; } v6 = *(_DWORD *)(a2 + 16); if ( *(_DWORD *)a2 == 6 ) { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 12))(v3, v6, a3); return 0; } (*(void (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)a3 + 1604))( a3, v6, *(_DWORD *)(*(_DWORD *)(v3 + 4) + 14), *(_WORD *)(*(_DWORD *)(v3 + 4) + 18), 1); } return 0; } //----- (005CD320) -------------------------------------------------------- int __thiscall sub_5CD320(int this, int a2, int a3) { return *(_WORD *)(*(_DWORD *)(this + 4) + 18); } //----- (005CD330) -------------------------------------------------------- signed int __thiscall sub_5CD330(int this, int a2) { int v2; // eax@2 if ( *(_WORD *)(*(_DWORD *)(this + 4) + 10) == *(_DWORD *)(a2 + 8) ) { v2 = *(_DWORD *)(a2 + 12); if ( (unsigned int)v2 <= 0xE ) return 1000; sub_639100(&unk_86DDD8, (int)"Unknown effect.subtype.actionImpowerType", v2); } return 0; } //----- (005CD370) -------------------------------------------------------- bool __thiscall sub_5CD370(int this, int a2) { int v2; // eax@1 v2 = *(_DWORD *)(this + 4); return *(_WORD *)(v2 + 10) == *(_DWORD *)(a2 + 8) && *(_DWORD *)(v2 + 14) == *(_DWORD *)(a2 + 12); } //----- (005CD3A0) -------------------------------------------------------- signed int __thiscall sub_5CD3A0(int this, int a2) { int v2; // eax@2 if ( *(_WORD *)(*(_DWORD *)(this + 4) + 10) != *(_DWORD *)(a2 + 8) ) return 0; v2 = *(_DWORD *)(a2 + 12); if ( v2 ) { if ( v2 != 1 ) { sub_639100(&unk_86DDD8, (int)"Unknown effect.subtype.actionEffectType", *(_DWORD *)(a2 + 12)); return 0; } } else { sub_639100(&unk_86DDD8, (int)"Unknown effect.subtype.actionEffectType", 0); } return 1000; } //----- (005CD3F0) -------------------------------------------------------- int __cdecl sub_5CD3F0(int a1) { int result; // eax@2 int v2; // [sp-Ch] [bp-10h]@15 int v3; // [sp-8h] [bp-Ch]@15 if ( *(_DWORD *)(a1 + 2) ) { sub_639100(&unk_86DDD8, (int)"USE TargetType for EffectTarget", *(_WORD *)a1); loc_6391B0("::MakeEffect"); result = 0; } else { switch ( *(_DWORD *)(a1 + 10) ) { case 0: result = operator new(8u); if ( !result ) goto LABEL_6; *(_DWORD *)(result + 4) = a1; *(_DWORD *)result = &off_6FA110; break; case 1: result = operator new(8u); if ( !result ) goto LABEL_6; *(_DWORD *)(result + 4) = a1; *(_DWORD *)result = &off_6FA130; break; case 2: result = operator new(8u); if ( !result ) goto LABEL_6; *(_DWORD *)(result + 4) = a1; *(_DWORD *)result = &off_6FA150; break; case 3: result = operator new(8u); if ( !result ) goto LABEL_6; *(_DWORD *)(result + 4) = a1; *(_DWORD *)result = &off_6FA170; break; case 5: result = operator new(8u); if ( !result ) goto LABEL_6; *(_DWORD *)(result + 4) = a1; *(_DWORD *)result = &off_6FA190; break; case 8: v3 = *(_WORD *)a1; v2 = (int)"ActionETCType Effect is exist yet"; goto LABEL_19; case 9: result = operator new(8u); if ( result ) { *(_DWORD *)(result + 4) = a1; *(_DWORD *)result = &off_6FA1DC; } else { LABEL_6: result = 0; } break; default: v3 = *(_WORD *)a1; v2 = (int)"Unexpected condition type"; LABEL_19: sub_639100(&unk_86DDD8, v2, v3); loc_6391B0("::MakeEffect"); result = 0; break; } } return result; } // 6FA110: using guessed type int (__thiscall *off_6FA110)(void *, char); // 6FA130: using guessed type int (__thiscall *off_6FA130)(void *, char); // 6FA150: using guessed type int (__thiscall *off_6FA150)(void *, char); // 6FA170: using guessed type int (__thiscall *off_6FA170)(void *, char); // 6FA190: using guessed type int (__thiscall *off_6FA190)(void *, char); // 6FA1DC: using guessed type int (__thiscall *off_6FA1DC)(void *, char); //----- (005CD550) -------------------------------------------------------- int __cdecl sub_5CD550() { int v0; // eax@1 int result; // eax@2 v0 = *(_DWORD *)(dword_13359854 + 56); if ( v0 ) result = *(_DWORD *)(v0 + 40); else result = 0; return result; } // 13359854: using guessed type int dword_13359854; //----- (005CD570) -------------------------------------------------------- void *__thiscall sub_5CD570(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FA064; sub_4C11C0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6FA064: using guessed type int (__stdcall *off_6FA064)(int, int, int); //----- (005CD5A0) -------------------------------------------------------- int __thiscall sub_5CD5A0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // eax@2 int v5; // ecx@2 _UNKNOWN *v6; // edx@7 _UNKNOWN *v7; // ST08_4@8 int v8; // ST04_4@8 int v9; // eax@8 void *v10; // ecx@8 char v11; // al@10 int v12; // ecx@10 int v13; // eax@11 __int16 v14; // ax@15 int v15; // ecx@16 _UNKNOWN *v16; // ST08_4@16 int v17; // ST04_4@16 int v18; // eax@16 bool v19; // zf@17 int v20; // eax@17 int v21; // eax@21 int v22; // eax@23 __int16 v23; // ax@25 int v24; // ecx@25 _UNKNOWN *v25; // ST08_4@25 int v26; // ST04_4@25 int v27; // eax@25 int v29; // [sp-8h] [bp-CC0h]@6 int v30; // [sp-4h] [bp-CBCh]@6 int v31; // [sp+Ch] [bp-CACh]@4 int (__stdcall **v32)(int, int, int); // [sp+10h] [bp-CA8h]@25 int (__stdcall **v33)(int, int, int); // [sp+65Ch] [bp-65Ch]@5 int (__stdcall **v34)(int, int, int); // [sp+660h] [bp-658h]@16 unsigned int v35; // [sp+CA8h] [bp-10h]@1 int v36; // [sp+CB4h] [bp-4h]@5 int v37; // [sp+CB8h] [bp+0h]@1 v35 = (unsigned int)&v37 ^ __security_cookie; v3 = (int)this; if ( (unsigned __int8)(*(int (__stdcall **)(int, unsigned int))(*(_DWORD *)this + 24))( a3, (unsigned int)&v37 ^ __security_cookie) ) { v4 = *(_DWORD *)(a3 + 16); v5 = *(_DWORD *)(a3 + 20); if ( v4 == v5 ) v5 = *(_DWORD *)(a3 + 24); v31 = v5; switch ( *(_DWORD *)(*(_DWORD *)(v3 + 4) + 6) ) { case 0: sub_5CCC50(&v33, v4); v36 = 0; goto LABEL_6; case 0xF: case 0x10: v11 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 1836))(v4, v5); v12 = v3; if ( !v11 ) goto LABEL_27; v13 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 20))(v3, a3, v31); *(_BYTE *)a2 = 1; goto LABEL_30; case 1: case 0xE: case 0x11: v13 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 20))(v3, a3, v4); *(_BYTE *)a2 = 1; goto LABEL_30; case 2: if ( (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v4 + 1360))() == -1 ) goto LABEL_14; v14 = (*(int (**)(void))(**(_DWORD **)(a3 + 16) + 1360))(); sub_5CCC80(&v33, v14); v6 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v3 + 4) + 20); v30 = 65535; v36 = 1; v29 = 1; goto LABEL_8; case 5: sub_4C0DA0(&v34); v34 = &off_6FA0FC; v15 = *(_DWORD *)(a3 + 16); v16 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v3 + 4) + 20); v36 = 2; v17 = sub_552F20(v15); v18 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a3 + 16), v18, v17, v16, 0, (int)&v34, 1, 65535); sub_5CCD40((int)&v34, v3, a3); v34 = &off_6FA064; v10 = &v34; goto LABEL_9; case 7: v19 = (*(int (**)(void))(*(_DWORD *)v5 + 1232))() == 2; v20 = *(_DWORD *)v3; if ( v19 ) { v13 = (*(int (__thiscall **)(int, int, int))(v20 + 20))(v3, a3, v31); *(_BYTE *)a2 = 1; goto LABEL_30; } v12 = v3; goto LABEL_28; case 9: if ( !(*(int (**)(void))(*(_DWORD *)v4 + 2072))() ) goto LABEL_26; v21 = (*(int (**)(void))(**(_DWORD **)(a3 + 16) + 2072))(); sub_5CCCB0(&v33, v21); v36 = 3; LABEL_6: v30 = 65535; v29 = 0; goto LABEL_7; case 0xA: if ( !(*(int (**)(void))(*(_DWORD *)v4 + 2072))() ) goto LABEL_26; v22 = (*(int (**)(void))(**(_DWORD **)(a3 + 16) + 2072))(); sub_5CCCE0(&v33, v22); v30 = 65535; v36 = 4; v29 = 1; LABEL_7: v6 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v3 + 4) + 20); LABEL_8: v7 = v6; v8 = sub_552F20(*(_DWORD *)(a3 + 16)); v9 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a3 + 16), v9, v8, v7, 0, (int)&v33, v29, v30); sub_5CCD40((int)&v33, v3, a3); v33 = &off_6FA064; v10 = &v33; goto LABEL_9; case 0xC: if ( (unsigned __int16)(*(int (**)(void))(*(_DWORD *)v4 + 1364))() == -1 ) { LABEL_14: v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 16))(v3, a3); goto LABEL_29; } v23 = (*(int (**)(void))(**(_DWORD **)(a3 + 16) + 1364))(); sub_5CCD10(&v32, v23); v24 = *(_DWORD *)(a3 + 16); v25 = (_UNKNOWN *)*(_WORD *)(*(_DWORD *)(v3 + 4) + 20); v36 = 5; v26 = sub_552F20(v24); v27 = sub_427BD0(&unk_13253E80); sub_549E00(*(void **)(a3 + 16), v27, v26, v25, 0, (int)&v32, 1, 65535); sub_5CCD40((int)&v32, v3, a3); v32 = &off_6FA064; v10 = &v32; LABEL_9: *(_BYTE *)a2 = 1; *(_DWORD *)(a2 + 4) = 0; v36 = -1; sub_4C11C0(v10); break; default: goto LABEL_26; } } else { LABEL_26: v12 = v3; LABEL_27: v20 = *(_DWORD *)v3; LABEL_28: v13 = (*(int (__thiscall **)(int, int))(v20 + 16))(v12, a3); LABEL_29: *(_BYTE *)a2 = 0; LABEL_30: *(_DWORD *)(a2 + 4) = v13; } return a2; } // 6FA064: using guessed type int (__stdcall *off_6FA064)(int, int, int); // 6FA0FC: using guessed type int (__stdcall *off_6FA0FC)(int, int, int); // 86FEB8: using guessed type int __security_cookie; //----- (005CD950) -------------------------------------------------------- int __thiscall sub_5CD950(void *this, int a2, int a3) { void *v3; // eax@1 char *v4; // eax@1 int v5; // ecx@1 unsigned __int16 v6; // si@1 unsigned __int16 i; // bx@1 void *v8; // eax@2 char *v9; // eax@2 int v10; // eax@3 int v11; // esi@4 int v12; // eax@5 void *v13; // eax@7 char *v14; // eax@7 void *v16; // [sp+Ch] [bp-4h]@1 v16 = this; v3 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1324))(a3); v4 = sub_401150(v3); v5 = *((_DWORD *)v4 + 2); v6 = *(_WORD *)(v5 + 12 * *((_WORD *)v4 + 7) + 4); for ( i = *(_WORD *)(v5 + 12 * *(_WORD *)(v5 + 12 * *((_WORD *)v4 + 7) + 4) + 4); ; i = *(_WORD *)(*((_DWORD *)v14 + 2) + 12 * i + 4) ) { v8 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1324))(a3); v9 = sub_401150(v8); if ( v6 >= *((_WORD *)v9 + 2) ) break; v10 = *((_DWORD *)v9 + 2) + 12 * v6; if ( !*(_BYTE *)(v10 + 8) ) break; v11 = *(_DWORD *)v10; if ( !*(_DWORD *)v10 ) break; v12 = sub_428740(*(_DWORD *)v10); if ( *(_WORD *)(*((_DWORD *)v16 + 1) + 18) == *(_DWORD *)(*(_DWORD *)sub_401310(&unk_877138, v12) + 244) ) sub_401100(v11); v13 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 1324))(a3); v14 = sub_401150(v13); if ( i >= *((_WORD *)v14 + 2) ) break; v6 = i; } return 0; } //----- (005CDA30) -------------------------------------------------------- void *__thiscall sub_5CDA30(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FA0DC; if ( a2 & 1 ) operator delete(this); return v2; } // 6FA0DC: using guessed type int (__thiscall *off_6FA0DC)(void *, char); //----- (005CDA60) -------------------------------------------------------- void __stdcall sub_5CDA60(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 21); v1 = i ) { sub_5CDA60(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (005CDAA0) -------------------------------------------------------- int __thiscall sub_5CDAA0(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 21) ) { do { sub_5CDA60(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 21) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (005CDAF0) -------------------------------------------------------- int __thiscall sub_5CDAF0(void *this, unsigned __int16 a2) { int result; // eax@2 void *v3; // [sp+0h] [bp-4h]@1 v3 = this; sub_5C5630((int)&unk_14D282A4, (int)&v3, (int)&a2); if ( v3 == dword_14D282A8 ) { sub_639100(&unk_86DDD8, (int)"Cannot find ItemActionEffect", a2); result = 0; } else { result = *((_DWORD *)v3 + 4); } return result; } //----- (005CDB40) -------------------------------------------------------- char __cdecl sub_5CDB40() { unsigned int v0; // edi@1 int v1; // eax@2 int *v2; // esi@2 int v3; // eax@2 int v4; // eax@2 char result; // al@4 int v6; // [sp+8h] [bp-10h]@2 char v7; // [sp+Ch] [bp-Ch]@2 __int16 v8; // [sp+10h] [bp-8h]@2 int v9; // [sp+14h] [bp-4h]@2 v0 = 0; if ( sub_5CD550() ) { while ( 1 ) { v1 = sub_626BC0(dword_13359854 + 4, v0); v2 = (int *)v1; v3 = sub_5CD3F0(v1); v8 = *(_WORD *)v2; v9 = v3; v4 = sub_5C5AB0(&unk_14D282A4, (int)&v8); sub_4240B0((int)&unk_14D282A4, (int)&v6, (void *)v4, 0); if ( v7 != 1 ) break; ++v0; if ( v0 >= sub_5CD550() ) goto LABEL_4; } sub_639100(&unk_86DDD8, (int)"ItemActionEffect ID Conflict", *(_WORD *)v2); loc_6391B0("ItemActionEffects::DataProcess"); result = 0; } else { LABEL_4: result = 1; } return result; } // 13359854: using guessed type int dword_13359854; //----- (005CDBE0) -------------------------------------------------------- void *__thiscall sub_5CDBE0(void *this) { void *result; // eax@1 result = this; *(_DWORD *)this = &off_6FA2D8; return result; } // 6FA2D8: using guessed type int (__thiscall *off_6FA2D8)(void *, char); //----- (005CDBF0) -------------------------------------------------------- void __thiscall sub_5CDBF0(void *this) { *(_DWORD *)this = &off_6FA2D8; } // 6FA2D8: using guessed type int (__thiscall *off_6FA2D8)(void *, char); //----- (005CDC00) -------------------------------------------------------- int __thiscall sub_5CDC00(int this, int a2, __int16 a3, unsigned __int16 a4) { int v4; // esi@1 int result; // eax@1 v4 = this; *(_DWORD *)(this + 8) = a2; *(_WORD *)(this + 12) = a3; *(_WORD *)(this + 14) = a4; *(_BYTE *)(this + 16) = 0; result = sub_418CB0((int)&dword_14D20890, a4); if ( result ) { if ( *(_DWORD *)(*(_DWORD *)result + 102) == 34 ) *(_BYTE *)(v4 + 16) = 1; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (005CDC40) -------------------------------------------------------- int __thiscall sub_5CDC40(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 32) = a2; return result; } //----- (005CDC70) -------------------------------------------------------- void *__thiscall sub_5CDC70(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_6FA2E0; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6FA2E0: using guessed type int (__thiscall *off_6FA2E0)(void *, char); //----- (005CDCB0) -------------------------------------------------------- void *__thiscall sub_5CDCB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FA2D8; if ( a2 & 1 ) operator delete(this); return v2; } // 6FA2D8: using guessed type int (__thiscall *off_6FA2D8)(void *, char); //----- (005CDCE0) -------------------------------------------------------- int __stdcall sub_5CDCE0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_9249249 || (result = operator new(28 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005CDD40) -------------------------------------------------------- char __thiscall sub_5CDD40(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { *(_WORD *)(v2 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(a2 + 12); *(_WORD *)(v2 + 14) = *(_WORD *)(a2 + 14); *(_BYTE *)(v2 + 16) = *(_BYTE *)(a2 + 16); result = 1; } else { result = 0; } return result; } //----- (005CDD90) -------------------------------------------------------- char __thiscall sub_5CDD90(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { *(_WORD *)(v2 + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(v2 + 8) = *(_DWORD *)(a2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(a2 + 12); *(_WORD *)(v2 + 14) = *(_WORD *)(a2 + 14); *(_BYTE *)(v2 + 16) = *(_BYTE *)(a2 + 16); result = 1; } else { result = 0; } return result; } //----- (005CDDE0) -------------------------------------------------------- char __thiscall sub_5CDDE0(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_WORD *)(a2 + 4) = *(_WORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_WORD *)(a2 + 12) = *(_WORD *)(v5 + 12); *(_WORD *)(a2 + 14) = *(_WORD *)(v5 + 14); *(_BYTE *)(a2 + 16) = *(_BYTE *)(v5 + 16); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (005CDE50) -------------------------------------------------------- char __thiscall sub_5CDE50(void *this, int a2) { int v2; // edx@1 int v3; // esi@1 int v5; // eax@4 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; v5 = *(_DWORD *)(v2 + 12 * v3); *(_WORD *)(a2 + 4) = *(_WORD *)(v5 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v5 + 8); *(_WORD *)(a2 + 12) = *(_WORD *)(v5 + 12); *(_WORD *)(a2 + 14) = *(_WORD *)(v5 + 14); *(_BYTE *)(a2 + 16) = *(_BYTE *)(v5 + 16); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (005CDED0) -------------------------------------------------------- unsigned int __thiscall sub_5CDED0(int this, unsigned int a2) { unsigned int result; // eax@1 int v3; // edx@2 int v4; // ecx@2 unsigned int v5; // esi@2 int v6; // edi@3 unsigned int v7; // edx@4 result = a2; if ( a2 ) { v3 = *(_DWORD *)this; v4 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 3; v5 = 0; if ( v4 ) { v6 = v3 + 4; if ( (unsigned int)v4 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v7 = (unsigned int)(result * *(_DWORD *)v6 * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; ++v5; v6 += 8; result = v7; } while ( v4 > v5 ); } } return result; } //----- (005CDF30) -------------------------------------------------------- int __thiscall sub_5CDF30(int this) { int v1; // esi@1 int v2; // ecx@1 __int64 v3; // qax@1 int v4; // esi@2 v1 = *(_DWORD *)this; v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 3; v3 = 0i64; if ( v2 ) { v4 = v1 + 4; if ( (unsigned int)v2 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { LODWORD(v3) = *(_DWORD *)v4 + v3; ++HIDWORD(v3); v4 += 8; } while ( (unsigned int)v2 > HIDWORD(v3) ); } return v3; } //----- (005CDF70) -------------------------------------------------------- char __thiscall sub_5CDF70(int this, __int16 a2) { int v2; // edi@1 unsigned int v3; // esi@1 int v4; // eax@1 int v5; // ecx@2 char result; // al@6 v2 = *(_DWORD *)(this + 16); v3 = 0; v4 = (*(_DWORD *)(this + 20) - v2) / 28; if ( v4 ) { v5 = v2 + 24; if ( (unsigned int)v4 <= 0 ) sub_6517D8((int)"invalid vector subscript"); while ( *(_DWORD *)(v5 - 8) != a2 || *(_DWORD *)v5 == dword_14D129E8 ) { ++v3; v5 += 28; if ( v4 <= v3 ) goto LABEL_6; } result = 0; } else { LABEL_6: result = 1; } return result; } // 14D129E8: using guessed type int dword_14D129E8; //----- (005CDFE0) -------------------------------------------------------- FILE *__thiscall sub_5CDFE0(int this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ebx@1 int v4; // eax@1 int v5; // esi@2 int v6; // ecx@5 int v7; // esi@5 FILE *result; // eax@6 int v9; // eax@8 void *v10; // [sp+Ch] [bp-Ch]@1 int v11; // [sp+10h] [bp-8h]@2 unsigned int v12; // [sp+14h] [bp-4h]@1 v1 = off_849C18; *(_WORD *)off_849C18 = 18476; v2 = this; v3 = *(_DWORD *)(this + 16); v4 = (*(_DWORD *)(this + 20) - v3) / 28; v10 = v1; v12 = 0; if ( v4 ) { v5 = (int)((char *)v1 + 4); v11 = 0; if ( (unsigned int)v4 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { *(_WORD *)(v5 + 2) = *(_WORD *)(v11 + v3 + 16); *(_WORD *)v5 = *(_WORD *)(v3 + v11 + 20); ++v12; *(_DWORD *)(v5 + 4) = 1000 * sub_58FC90(v3 + v11); v3 = *(_DWORD *)(v2 + 16); v11 += 28; v5 += 8; } while ( (*(_DWORD *)(v2 + 20) - v3) / 28 > v12 ); v1 = v10; } v6 = *(_DWORD *)(v2 + 20) - *(_DWORD *)(v2 + 16); *((_WORD *)v1 + 1) = (signed __int16)v6 / 28; v7 = 8 * (unsigned __int16)((signed __int16)v6 / 28) + 4; if ( sub_4C81E0(&off_849C18, 8 * (unsigned __int16)((signed __int16)v6 / 28) + 4) ) { v9 = (*(int (**)(void))(**(_DWORD **)(v2 + 32) + 760))(); result = (FILE *)(*(int (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v9 + 12))( v9, *(_DWORD *)(v2 + 32), &off_849C18); } else { result = sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::SendCoolTimes2Client : Packet Too Long", v7); } return result; } //----- (005CE110) -------------------------------------------------------- FILE *__thiscall sub_5CE110(int this) { int v1; // ebx@1 FILE *result; // eax@1 void *v3; // edi@2 int v4; // ecx@3 signed int v5; // edx@3 int v6; // ecx@4 int v7; // esi@4 unsigned int v8; // eax@4 __time64_t v9; // kr00_8@4 int v10; // eax@4 int v11; // esi@5 int v12; // eax@8 __time64_t Time; // [sp+4h] [bp-Ch]@2 int v14; // [sp+Ch] [bp-4h]@2 v1 = this; result = *(FILE **)(this + 16); if ( result != *(FILE **)(this + 20) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 16419; *((_WORD *)v3 + 1) = *(_WORD *)(*(_DWORD *)(this + 32) + 4); *((_DWORD *)v3 + 1) = (*(int (**)(void))(**(_DWORD **)(this + 32) + 836))(); *((_WORD *)v3 + 4) = (*(_DWORD *)(v1 + 20) - *(_DWORD *)(v1 + 16)) / 28; Time = 0i64; _time64(&Time); v14 = 0; if ( *((_WORD *)v3 + 4) > 0u ) { do { v4 = *(_DWORD *)(v1 + 20) - *(_DWORD *)(v1 + 16); v5 = (signed int)(v4 + ((unsigned __int64)(-1840700269i64 * v4) >> 32)) >> 4; if ( v5 + ((unsigned int)v5 >> 31) <= (unsigned __int16)v14 ) sub_6517D8((int)"invalid vector subscript"); v6 = *(_DWORD *)(v1 + 16) + 28 * (unsigned __int16)v14; v7 = (int)((char *)v3 + 10 * (unsigned __int16)v14 + 8); *((_WORD *)v3 + 5 * (unsigned __int16)v14 + 5) = *(_WORD *)(v6 + 20); v8 = sub_58FC90(v6); v9 = Time + v8; *(_DWORD *)(v7 + 4) = v9; v10 = v14 + 1; *(_DWORD *)(v7 + 8) = HIDWORD(v9); v14 = v10; } while ( (unsigned __int16)v10 < *((_WORD *)v3 + 4) ); } v11 = 2 * (5 * *((_WORD *)v3 + 4) + 5); if ( sub_4C81E0(&off_849C18, 2 * (5 * *((_WORD *)v3 + 4) + 5)) ) { v12 = sub_428750((int)&dword_14D16430); result = (FILE *)sub_4C7EC0(&off_849C18, v12); } else { result = sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::SendCoolTimes2DB : Packet Too Long", v11); } } return result; } // 14D16430: using guessed type int dword_14D16430; //----- (005CE250) -------------------------------------------------------- FILE *__thiscall sub_5CE250(int this) { int v1; // esi@1 FILE *result; // eax@1 void *v3; // edi@2 int v4; // ebx@2 int v5; // ecx@3 signed int v6; // edx@3 int v7; // ecx@4 int v8; // esi@4 unsigned int v9; // eax@4 int v10; // esi@5 int v11; // eax@8 __time64_t Time; // [sp+4h] [bp-Ch]@2 int v13; // [sp+Ch] [bp-4h]@1 v1 = this; result = *(FILE **)(this + 16); v13 = this; if ( result != *(FILE **)(this + 20) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 16436; *(_DWORD *)((char *)v3 + 2) = (*(int (**)(void))(**(_DWORD **)(this + 32) + 836))(); *((_WORD *)v3 + 3) = (*(_DWORD *)(v1 + 20) - *(_DWORD *)(v1 + 16)) / 28; v4 = 0; Time = 0i64; _time64(&Time); if ( *((_WORD *)v3 + 3) > 0u ) { do { v5 = *(_DWORD *)(v13 + 20) - *(_DWORD *)(v13 + 16); v6 = (signed int)(v5 + ((unsigned __int64)(-1840700269i64 * v5) >> 32)) >> 4; if ( v6 + ((unsigned int)v6 >> 31) <= (unsigned __int16)v4 ) sub_6517D8((int)"invalid vector subscript"); v7 = *(_DWORD *)(v13 + 16) + 28 * (unsigned __int16)v4; v8 = (int)((char *)v3 + 10 * (unsigned __int16)v4 + 2); *((_WORD *)v3 + 5 * (unsigned __int16)v4 + 4) = *(_WORD *)(v7 + 20); v9 = sub_58FC90(v7); ++v4; *(_QWORD *)(v8 + 8) = Time + v9; } while ( (unsigned __int16)v4 < *((_WORD *)v3 + 3) ); } v10 = 10 * *((_WORD *)v3 + 3) + 8; if ( sub_4C81E0(&off_849C18, 10 * *((_WORD *)v3 + 3) + 8) ) { v11 = sub_428750((int)&dword_14D12A00); result = (FILE *)sub_4C7EC0(&off_849C18, v11); } else { result = sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::SendCoolTimes2World : Packet Too Long", v10); } } return result; } // 14D12A00: using guessed type int dword_14D12A00; //----- (005CE380) -------------------------------------------------------- int __thiscall sub_5CE380(int this, int a2, int a3) { int v3; // eax@1 int v4; // esi@1 char v5; // al@2 int v6; // eax@4 int j; // eax@5 int i; // eax@8 int v9; // eax@14 int v10; // esi@14 int v11; // eax@16 bool v12; // zf@16 int v13; // edx@16 int v14; // eax@16 int v15; // eax@17 int n; // eax@18 int m; // eax@21 int v19; // eax@28 int v20; // eax@29 int l; // eax@30 int k; // eax@33 char v23; // [sp+Ch] [bp-Ch]@16 int v24; // [sp+14h] [bp-4h]@1 v3 = *(_DWORD *)(this + 16); v4 = *(_DWORD *)v3; v24 = this; *(_DWORD *)(a2 + 4) = 0; *(_BYTE *)a2 = 0; if ( v4 != v3 ) { do { v5 = sub_5CC240(*(void **)(v4 + 12), a3); *(_BYTE *)a2 = v5; if ( v5 ) break; if ( !*(_BYTE *)(v4 + 17) ) { v6 = *(_DWORD *)(v4 + 8); if ( *(_BYTE *)(v6 + 17) ) { for ( i = *(_DWORD *)(v4 + 4); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 4) ) { if ( v4 != *(_DWORD *)(i + 8) ) break; v4 = i; } v4 = i; } else { v4 = *(_DWORD *)(v4 + 8); for ( j = *(_DWORD *)v6; !*(_BYTE *)(j + 17); j = *(_DWORD *)j ) v4 = j; } } } while ( v4 != *(_DWORD *)(v24 + 16) ); this = v24; } v9 = *(_DWORD *)(this + 32); v10 = *(_DWORD *)v9; if ( !*(_BYTE *)a2 ) { if ( v10 != v9 ) { do { v19 = (*(int (__stdcall **)(int))(**(_DWORD **)(v10 + 12) + 16))(a3); v12 = *(_BYTE *)(v10 + 17) == 0; *(_DWORD *)(a2 + 4) = v19; if ( v12 ) { v20 = *(_DWORD *)(v10 + 8); if ( *(_BYTE *)(v20 + 17) ) { for ( k = *(_DWORD *)(v10 + 4); !*(_BYTE *)(k + 17); k = *(_DWORD *)(k + 4) ) { if ( v10 != *(_DWORD *)(k + 8) ) break; v10 = k; } v10 = k; } else { v10 = *(_DWORD *)(v10 + 8); for ( l = *(_DWORD *)v20; !*(_BYTE *)(l + 17); l = *(_DWORD *)l ) v10 = l; } } } while ( v10 != *(_DWORD *)(v24 + 32) ); } return a2; } if ( v10 == v9 ) return a2; do { v11 = sub_5CD5A0(*(void **)(v10 + 12), (int)&v23, a3); v12 = *(_BYTE *)(v10 + 17) == 0; v13 = *(_DWORD *)v11; v14 = *(_DWORD *)(v11 + 4); *(_DWORD *)a2 = v13; *(_DWORD *)(a2 + 4) = v14; if ( v12 ) { v15 = *(_DWORD *)(v10 + 8); if ( *(_BYTE *)(v15 + 17) ) { for ( m = *(_DWORD *)(v10 + 4); !*(_BYTE *)(m + 17); m = *(_DWORD *)(m + 4) ) { if ( v10 != *(_DWORD *)(m + 8) ) break; v10 = m; } v10 = m; } else { v10 = *(_DWORD *)(v10 + 8); for ( n = *(_DWORD *)v15; !*(_BYTE *)(n + 17); n = *(_DWORD *)n ) v10 = n; } } } while ( v10 != *(_DWORD *)(v24 + 32) ); return a2; } //----- (005CE500) -------------------------------------------------------- int __thiscall sub_5CE500(int this, int a2, int a3) { int result; // eax@3 int v4; // ecx@4 int v5; // edx@6 int v6; // [sp-8h] [bp-10h]@2 int v7; // [sp-4h] [bp-Ch]@2 int v8; // [sp+0h] [bp-8h]@6 int v9; // [sp+4h] [bp-4h]@6 if ( !a3 ) { v7 = 0; v6 = (int)"ItemActionObserveBuffer::EventRun pArgument is NULL"; LABEL_3: sub_639100(&unk_86DDD8, v6, v7); result = a2; *(_BYTE *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; return result; } v4 = *(_DWORD *)(this + 8); if ( !v4 ) { v7 = 0; v6 = (int)"ItemActionObserveBuffer::EventRun iao_pAction is NULL"; goto LABEL_3; } sub_5CE380(v4, (int)&v8, a3); result = a2; v5 = v9; *(_DWORD *)a2 = v8; *(_DWORD *)(a2 + 4) = v5; return result; } //----- (005CE560) -------------------------------------------------------- char __thiscall sub_5CE560(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_6FA338; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 6FA338: using guessed type int (__stdcall *off_6FA338)(int, int); //----- (005CE6E0) -------------------------------------------------------- int __thiscall sub_5CE6E0(int this) { int v1; // esi@1 signed int v2; // eax@1 signed int v3; // edx@1 int v4; // edi@1 int v5; // ecx@3 bool v6; // zf@3 int v7; // ecx@3 int v8; // ecx@6 int v9; // ecx@6 int v10; // ecx@9 int v11; // ecx@9 int v12; // ecx@12 int v13; // ecx@15 int v14; // ecx@15 signed int v16; // [sp+10h] [bp-10h]@1 v1 = this; *(_DWORD *)this = &off_6FA2E0; *(_DWORD *)(this + 16) = 0; sub_5CE560(this, 0x1388u); *(_DWORD *)v1 = &off_6FA478; _eh_vector_constructor_iterator_((void *)(v1 + 24), 0x14u, 5000, (int)sub_5CDBE0, sub_5CDBF0); v2 = 36; v3 = 2; v4 = v1 + 44; v16 = 1000; do { if ( v3 - 2 < *(_WORD *)(v1 + 4) ) { v5 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v5 + v2 - 36) == 0; v7 = v5 + v2 - 36; if ( v6 ) *(_DWORD *)v7 = v4 - 20; } if ( v3 - 1 < *(_WORD *)(v1 + 4) ) { v8 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v8 + v2 - 24) == 0; v9 = v8 + v2 - 24; if ( v6 ) *(_DWORD *)v9 = v4; } if ( v3 < *(_WORD *)(v1 + 4) ) { v10 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v10 + v2 - 12) == 0; v11 = v10 + v2 - 12; if ( v6 ) *(_DWORD *)v11 = v4 + 20; } if ( v3 + 1 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); if ( !*(_DWORD *)(v12 + v2) ) *(_DWORD *)(v12 + v2) = v4 + 40; } if ( v3 + 2 < *(_WORD *)(v1 + 4) ) { v13 = *(_DWORD *)(v1 + 8); v6 = *(_DWORD *)(v13 + v2 + 12) == 0; v14 = v13 + v2 + 12; if ( v6 ) *(_DWORD *)v14 = v4 + 60; } v2 += 60; v3 += 5; v4 += 100; --v16; } while ( v16 ); return v1; } // 6FA2E0: using guessed type int (__thiscall *off_6FA2E0)(void *, char); // 6FA478: using guessed type int (__thiscall *off_6FA478)(void *, char); //----- (005CE810) -------------------------------------------------------- void *__thiscall sub_5CE810(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; _LN21((char *)this + 24, 0x14u, 5000, sub_5CDBF0); v3 = (void *)*((_DWORD *)v2 + 2); *(_DWORD *)v2 = &off_6FA2E0; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 6FA2E0: using guessed type int (__thiscall *off_6FA2E0)(void *, char); //----- (005CE890) -------------------------------------------------------- char __thiscall sub_5CE890(int this, int a2, __int16 a3, __int16 a4) { int v4; // edi@1 int v5; // eax@2 int v6; // ecx@2 int v7; // esi@3 char result; // al@6 bool v9; // zf@7 int v10; // [sp+14h] [bp-4h]@8 v4 = this; if ( a2 && (v5 = *(_DWORD *)this, v6 = *(_DWORD *)(this + 4), *(_DWORD *)v4 != v6) ) { while ( 1 ) { v7 = *(_DWORD *)v5; if ( a3 == *(_WORD *)(*(_DWORD *)v5 + 12) ) { if ( a4 == *(_WORD *)(v7 + 14) ) break; } v5 += 4; if ( v5 == v6 ) goto LABEL_6; } memmove_0((void *)v5, (const void *)(v5 + 4), 4 * ((v6 - (v5 + 4)) >> 2)); *(_DWORD *)(v4 + 4) -= 4; v9 = (dword_14D40970 & 1) == 0; *(_DWORD *)(v7 + 8) = 0; *(_WORD *)(v7 + 12) = -1; if ( v9 ) { dword_14D40970 |= 1u; v10 = 0; sub_5CE6E0((int)&dword_14D282B8); atexit(sub_69D020); v10 = -1; } if ( !(unsigned __int8)(*(int (__thiscall **)(int *, _DWORD))(dword_14D282B8 + 12))( &dword_14D282B8, *(_WORD *)(v7 + 4)) ) sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::DelAction Can`t Free", 0); result = 1; } else { LABEL_6: result = 0; } return result; } // 14D282B8: using guessed type int dword_14D282B8; // 14D40970: using guessed type int dword_14D40970; //----- (005CEAA0) -------------------------------------------------------- char __thiscall sub_5CEAA0(void *this, int a2, __int16 a3, unsigned __int16 a4) { char result; // al@2 __int16 v5; // bx@3 int v6; // edi@3 __int16 v7; // si@7 int v8; // eax@7 int v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@5 v9 = (int)this; if ( !a2 || (v5 = a3, a2 = (unsigned __int16)a3, (v6 = *(_DWORD *)(*(_DWORD *)sub_5C5630((int)&unk_14D40974, (int)&a3, (int)&a2) + 16)) == 0) ) goto LABEL_14; if ( !(dword_14D40970 & 1) ) { dword_14D40970 |= 1u; v10 = 0; sub_5CE6E0((int)&dword_14D282B8); atexit(sub_69D020); v10 = -1; } if ( word_14D282C4 != -1 && (v7 = word_14D282C4, (v8 = (*(int (__thiscall **)(int *, _DWORD))(dword_14D282B8 + 8))( &dword_14D282B8, (unsigned __int16)word_14D282C4)) != 0) ) { *(_WORD *)(v8 + 4) = v7; } else { sub_639100(&unk_86DDD8, (int)"ItemActionObserveBuffer::alloc Buffer Full", 0); v8 = 0; } a2 = v8; if ( v8 ) { sub_5CDC00(v8, v6, v5, a4); sub_4242C0(v9, (unsigned int)&a2); result = 1; } else { LABEL_14: result = 0; } return result; } // 14D282B8: using guessed type int dword_14D282B8; // 14D282C4: using guessed type __int16 word_14D282C4; // 14D40970: using guessed type int dword_14D40970; //----- (005CEBC0) -------------------------------------------------------- int __thiscall sub_5CEBC0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 32) = 0; return result; } //----- (005CEBE0) -------------------------------------------------------- void __thiscall sub_5CEBE0(int this) { int v1; // edi@1 int v2; // esi@1 int v3; // ebx@3 int v4; // eax@3 int v5; // edx@4 const void *v6; // esi@5 void *v7; // edi@5 int v8; // [sp+8h] [bp-8h]@1 int v9; // [sp+Ch] [bp-4h]@1 v1 = this; v2 = *(_DWORD *)(this + 16); v8 = this; v9 = v2; if ( v2 != *(_DWORD *)(this + 20) ) { do { if ( sub_58FCE0(v2, dword_14D129E8) ) { v3 = *(_DWORD *)(v1 + 20); v4 = v2 + 28; if ( v2 + 28 != v3 ) { v5 = v2; do { v6 = (const void *)v4; v7 = (void *)v5; v4 += 28; v5 += 28; memcpy(v7, v6, 0x1Cu); } while ( v4 != v3 ); v1 = v8; v2 = v9; } *(_DWORD *)(v1 + 20) -= 28; } else { v2 += 28; v9 = v2; } } while ( v2 != *(_DWORD *)(v1 + 20) ); } } // 14D129E8: using guessed type int dword_14D129E8; //----- (005CEC60) -------------------------------------------------------- void __fastcall sub_5CEC60(int a1) { int v1; // ebx@1 v1 = *(_DWORD *)(a1 + 16); if ( v1 != *(_DWORD *)(a1 + 20) ) *(_DWORD *)(a1 + 20) = v1; } // 5CEC60: could not find valid save-restore pair for edi // 5CEC60: could not find valid save-restore pair for esi //----- (005CECB0) -------------------------------------------------------- int __thiscall sub_5CECB0(int this) { void *v1; // edi@1 int v2; // ebx@1 int v3; // esi@1 int v4; // eax@1 int v5; // edx@2 int v6; // edi@2 int v7; // ecx@7 int v8; // esi@7 int v9; // eax@10 int result; // eax@11 void *v15; // [sp+Ch] [bp-Ch]@1 unsigned int v16; // [sp+14h] [bp-4h]@1 int v17; // [sp+14h] [bp-4h]@12 v1 = off_849C18; v2 = this; *(_WORD *)off_849C18 = 18476; v3 = *(_DWORD *)(this + 16); v4 = (*(_DWORD *)(this + 20) - v3) / 28; v15 = v1; v16 = 0; if ( v4 ) { v5 = 0; v6 = (int)((char *)v1 + 4); while ( 1 ) { if ( v4 <= v16 ) sub_6517D8((int)"invalid vector subscript"); ++v16; *(_WORD *)(v6 + 2) = *(_WORD *)(v5 + v3 + 16); *(_WORD *)v6 = *(_WORD *)(v5 + v3 + 20); *(_DWORD *)(v6 + 4) = 0; v3 = *(_DWORD *)(this + 16); v4 = (*(_DWORD *)(this + 20) - v3) / 28; v6 += 8; if ( v16 >= v4 ) break; v5 += 28; } v1 = v15; } v7 = *(_DWORD *)(this + 20) - *(_DWORD *)(this + 16); *((_WORD *)v1 + 1) = (signed __int16)v7 / 28; v8 = 8 * (unsigned __int16)((signed __int16)v7 / 28) + 4; if ( sub_4C81E0(&off_849C18, 8 * (unsigned __int16)((signed __int16)v7 / 28) + 4) ) { v9 = (*(int (**)(void))(**(_DWORD **)(v2 + 32) + 760))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v9 + 12))(v9, *(_DWORD *)(v2 + 32), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::PlayerRegiste : Packet Too Long", v8); } result = *(_DWORD *)(v2 + 16); if ( result != *(_DWORD *)(v2 + 20) ) { v17 = *(_DWORD *)(v2 + 16); result = v17; *(_DWORD *)(v2 + 20) = v17; } return result; } //----- (005CEE10) -------------------------------------------------------- void __thiscall sub_5CEE10(int this, int a2, unsigned __int16 a3, unsigned __int16 a4) { int v4; // ebx@2 unsigned int v5; // esi@2 int v6; // eax@2 int v7; // ecx@3 signed int v8; // edx@6 unsigned int v9; // ecx@6 int v10; // esi@8 signed int v11; // edx@8 int v12; // edi@8 signed int v13; // edx@9 int v14; // ecx@9 int v15; // ecx@13 int v16; // eax@13 unsigned int v17; // eax@15 int v18; // eax@20 void *v19; // edi@20 char *v20; // esi@20 int v21; // esi@22 signed int v22; // edx@23 int v23; // ecx@23 int v24; // ecx@25 int v25; // eax@25 unsigned int v26; // eax@27 int v27; // esi@35 void *v28; // eax@36 int v29; // eax@38 char v30[16]; // [sp+0h] [bp-20h]@6 int v31; // [sp+10h] [bp-10h]@6 int v32; // [sp+14h] [bp-Ch]@6 int v33; // [sp+18h] [bp-8h]@6 int v34; // [sp+1Ch] [bp-4h]@1 v34 = this; if ( !a2 ) return; v4 = this + 16; v5 = 0; v6 = (*(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)) / 28; if ( !v6 ) { LABEL_6: sub_58FC10((int)v30); v31 = a3; v33 = dword_14D129E8; v32 = a4; v8 = (signed int)((unsigned __int64)(10 * a2 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6; sub_650330((int)v30, v8 + ((unsigned int)v8 >> 31)); sub_58FC60((int)v30, 1); v9 = *(_DWORD *)(v4 + 4); if ( (unsigned int)v30 >= v9 || *(_DWORD *)v4 > (unsigned int)v30 ) { v21 = *(_DWORD *)(v4 + 8); if ( v9 == v21 ) { v22 = (signed int)(v9 - *(_DWORD *)v4 + ((unsigned __int64)(-1840700269i64 * (signed int)(v9 - *(_DWORD *)v4)) >> 32)) >> 4; v23 = v22 + ((unsigned int)v22 >> 31); if ( v23 > (unsigned int)&unk_9249248 ) sub_65178B((int)"vector too long"); v24 = v23 + 1; v25 = (v21 - *(_DWORD *)v4) / 28; if ( v24 > (unsigned int)v25 ) { if ( (unsigned int)((char *)&unk_9249249 - ((unsigned int)v25 >> 1)) >= v25 ) v26 = ((unsigned int)v25 >> 1) + v25; else v26 = 0; if ( v26 < v24 ) v26 = v24; sub_47ADF0(v4, v26); } } v19 = *(void **)(v4 + 4); if ( !v19 ) goto LABEL_35; v20 = v30; } else { v10 = *(_DWORD *)(v4 + 8); v11 = (signed int)(&v30[(unsigned __int64)(-1840700269i64 * (signed int)&v30[-*(_DWORD *)v4]) >> 32] - *(_DWORD *)v4) >> 4; v12 = v11 + ((unsigned int)v11 >> 31); if ( v9 == v10 ) { v13 = (signed int)(v9 - *(_DWORD *)v4 + ((unsigned __int64)(-1840700269i64 * (signed int)(v9 - *(_DWORD *)v4)) >> 32)) >> 4; v14 = v13 + ((unsigned int)v13 >> 31); if ( v14 > (unsigned int)&unk_9249248 ) sub_65178B((int)"vector too long"); v15 = v14 + 1; v16 = (v10 - *(_DWORD *)v4) / 28; if ( v15 > (unsigned int)v16 ) { if ( (unsigned int)((char *)&unk_9249249 - ((unsigned int)v16 >> 1)) >= v16 ) v17 = ((unsigned int)v16 >> 1) + v16; else v17 = 0; if ( v17 < v15 ) v17 = v15; sub_47ADF0(v4, v17); } } v18 = 7 * v12; v19 = *(void **)(v4 + 4); v20 = (char *)(*(_DWORD *)v4 + 4 * v18); if ( !v19 ) goto LABEL_35; } memcpy(v19, v20, 0x1Cu); LABEL_35: v27 = v34; *(_DWORD *)(v4 + 4) += 28; if ( *(_DWORD *)(v27 + 32) ) { v28 = off_849C18; *(_DWORD *)off_849C18 = 84012; *((_WORD *)v28 + 3) = a3; *((_DWORD *)v28 + 2) = a2; *((_WORD *)v28 + 2) = a4; if ( sub_4C81E0(&off_849C18, 12) ) { v29 = (*(int (**)(void))(**(_DWORD **)(v27 + 32) + 760))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v29 + 12))(v29, *(_DWORD *)(v27 + 32), &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GuildTourmentSystem::PlayerRegiste : Packet Too Long", 12); } } return; } v7 = *(_DWORD *)(this + 16) + 16; if ( (unsigned int)v6 <= 0 ) sub_6517D8((int)"invalid vector subscript"); while ( a3 != *(_DWORD *)v7 ) { ++v5; v7 += 28; if ( v6 <= v5 ) goto LABEL_6; } sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::SetCoolTime ActionIDGroup", a3); } // 14D129E8: using guessed type int dword_14D129E8; // 5CEE10: using guessed type char var_20[16]; //----- (005CF0A0) -------------------------------------------------------- bool __thiscall sub_5CF0A0(void *this, int a2, int a3, __int16 a4) { int v4; // edx@1 int v5; // edi@1 bool result; // al@2 int v7; // ecx@5 int v8; // eax@5 unsigned int v9; // ebx@5 int v10; // esi@7 int v11; // eax@9 char v12; // [sp+4h] [bp-8h]@14 v4 = a2; v5 = (int)this; if ( a2 && a3 && *(_DWORD *)(a3 + 16) ) { v7 = *(_DWORD *)this; v8 = (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2; v9 = 0; if ( v8 ) { if ( (unsigned int)v8 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v10 = *(_DWORD *)(v7 + 4 * v9); if ( v10 ) { v11 = *(_DWORD *)(v10 + 8); if ( v11 ) { if ( -1 == a4 || a4 == *(_WORD *)(v10 + 14) ) { if ( sub_5CDF70(v5, *(_WORD *)(v11 + 8)) ) { sub_5CE500(v10, (int)&v12, a3); if ( v12 == 1 ) { sub_5F1770(a2, (unsigned int)&v12); sub_5CEE10( v5, *(_DWORD *)(*(_DWORD *)(v10 + 8) + 4), *(_WORD *)(*(_DWORD *)(v10 + 8) + 8), *(_WORD *)(v10 + 12)); if ( *(_BYTE *)(v10 + 16) ) (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(a3 + 16) + 1508))(*(_WORD *)(v10 + 14)); } } } } else { sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::EventRun NULL Action", 0); } } else { sub_639100(&unk_86DDD8, (int)"ItemActionObserveManager::EventRun NULL Observer", 0); } v7 = *(_DWORD *)v5; ++v9; } while ( (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2 > v9 ); v4 = a2; } result = ((*(_DWORD *)(v4 + 4) - *(_DWORD *)v4) & 0xFFFFFFF8) != 0; } else { result = 0; } return result; } //----- (005CF1D0) -------------------------------------------------------- bool __thiscall sub_5CF1D0(void *this, int a2, int a3, __int16 a4) { return sub_5CF0A0(this, a2, a3, a4); } //----- (005CF1E0) -------------------------------------------------------- bool __thiscall sub_5CF1E0(void *this, int a2, int a3) { return sub_5CF0A0(this, a2, a3, -1); } //----- (005CF200) -------------------------------------------------------- char __thiscall sub_5CF200(void *this, int a2, int a3, int a4, int a5, int a6) { int v6; // edi@1 char result; // al@2 int v8; // eax@6 int v9; // ecx@6 int v10; // eax@6 unsigned int v11; // esi@6 int v12; // [sp+4h] [bp-20h]@6 int v13; // [sp+8h] [bp-1Ch]@6 int v14; // [sp+Ch] [bp-18h]@6 int v15; // [sp+10h] [bp-14h]@6 int v16; // [sp+14h] [bp-10h]@6 int v17; // [sp+18h] [bp-Ch]@6 int v18; // [sp+1Ch] [bp-8h]@6 void *v19; // [sp+20h] [bp-4h]@1 char v20; // [sp+33h] [bp+Fh]@6 v6 = a3; v19 = this; if ( a3 && a5 ) { if ( a2 ) { v16 = a5; v17 = a5; v18 = a6; v8 = *(_DWORD *)(a3 + 12); v15 = a4; v9 = *(_DWORD *)(a3 + 8); v10 = (v8 - v9) >> 2; v11 = 0; v13 = 0; v12 = 7; v14 = 5; v20 = 0; if ( (unsigned int)v10 > 0 ) { if ( (unsigned int)v10 <= 0 ) sub_6517D8((int)"invalid vector subscript"); do { v13 = *(_DWORD *)(*(_DWORD *)(v9 + 4 * v11) + 32); if ( sub_5CF0A0(v19, a2, (int)&v12, -1) == 1 ) v20 = 1; v9 = *(_DWORD *)(v6 + 8); ++v11; } while ( (*(_DWORD *)(v6 + 12) - v9) >> 2 > v11 ); } result = v20; } else { result = 0; } } else { result = 0; } return result; } //----- (005CF2C0) -------------------------------------------------------- bool __thiscall sub_5CF2C0(int this, int a2, int a3, int a4, int a5) { int v5; // edi@4 bool result; // al@4 int v7; // [sp+4h] [bp-1Ch]@4 int v8; // [sp+8h] [bp-18h]@4 int v9; // [sp+Ch] [bp-14h]@4 int v10; // [sp+10h] [bp-10h]@4 int v11; // [sp+14h] [bp-Ch]@4 int v12; // [sp+18h] [bp-8h]@4 int v13; // [sp+1Ch] [bp-4h]@4 if ( a5 && a2 && a3 ) { v5 = *(_DWORD *)(this + 32); v12 = a2; v13 = a3; v11 = v5; v7 = 0; v8 = a4; v9 = 9; v10 = 1; result = sub_5CF0A0((void *)this, a5, (int)&v7, -1); } else { result = 0; } return result; } //----- (005CF330) -------------------------------------------------------- int __thiscall sub_5CF330(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 21) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_5CC3C0(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 21) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 21) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 21) ) { v9 = v6; } else { v9 = sub_419640(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 21) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_5AF460(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 21) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 21) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 20); *(_BYTE *)(v5 + 20) = *(_BYTE *)(v3 + 20); *(_BYTE *)(v3 + 20) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 20) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 20) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 20) ) { *(_BYTE *)(v15 + 20) = 1; *(_BYTE *)(v6 + 20) = 0; sub_5C59D0(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 21) ) goto LABEL_53; 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; sub_419660(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 20) = *(_BYTE *)(v6 + 20); *(_BYTE *)(v6 + 20) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) = 1; sub_5C59D0(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 20) ) { *(_BYTE *)(v15 + 20) = 1; *(_BYTE *)(v6 + 20) = 0; sub_419660(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 21) ) goto LABEL_53; 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; sub_5C59D0(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 20) = *(_BYTE *)(v6 + 20); *(_BYTE *)(v6 + 20) = 1; *(_BYTE *)(*(_DWORD *)v15 + 20) = 1; sub_419660(i, v6); break; } } *(_BYTE *)(v15 + 20) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 20) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005CF580) -------------------------------------------------------- int __thiscall sub_5CF580(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 21) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 21) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 21); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_5CF330((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5CDAA0(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (005CF620) -------------------------------------------------------- void *__thiscall sub_5CF620(void *this) { return this; } //----- (005CF630) -------------------------------------------------------- int __cdecl sub_5CF630(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 29); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (005CF650) -------------------------------------------------------- int __cdecl sub_5CF650(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 29); i = *(_DWORD *)i ) result = i; return result; } //----- (005CF670) -------------------------------------------------------- int __cdecl sub_5CF670(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 37); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (005CF690) -------------------------------------------------------- int __cdecl sub_5CF690(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 37); i = *(_DWORD *)i ) result = i; return result; } //----- (005CF6B0) -------------------------------------------------------- void *__thiscall sub_5CF6B0(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 29) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 29) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 29); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 29); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (005CF700) -------------------------------------------------------- void *__thiscall sub_5CF700(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 37) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 37) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 37); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 37); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (005CF760) -------------------------------------------------------- void *__thiscall sub_5CF760(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 154, 100) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 154, 154, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005CF820) -------------------------------------------------------- void *__thiscall sub_5CF820(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 88, 71) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 88, 88, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005CF8D0) -------------------------------------------------------- void *__thiscall sub_5CF8D0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 352, 81) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 352, 352, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (005CF980) -------------------------------------------------------- void *__thiscall sub_5CF980(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FA590; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6FA590: using guessed type int (__thiscall *off_6FA590)(void *, char); //----- (005CF9B0) -------------------------------------------------------- void *__thiscall sub_5CF9B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FA598; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6FA598: using guessed type int (__thiscall *off_6FA598)(void *, char); //----- (005CF9E0) -------------------------------------------------------- void *__thiscall sub_5CF9E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FA5A0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 6FA5A0: using guessed type int (__thiscall *off_6FA5A0)(void *, char); //----- (005CFA10) -------------------------------------------------------- void *__thiscall sub_5CFA10(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 29) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 29) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 29) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 29) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 29); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 29) ) goto LABEL_11; return result; } //----- (005CFA70) -------------------------------------------------------- void *__thiscall sub_5CFA70(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 37) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 37) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 37) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 37) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 37); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 37) ) goto LABEL_11; return result; } //----- (005CFAD0) -------------------------------------------------------- int __thiscall sub_5CFAD0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_TimerReset"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::ServentBuffBossTable::sbbt_TimerReset"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v1 + 4) = 0; --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_TimerReset"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFB30) -------------------------------------------------------- int __thiscall sub_5CFB30(int this, unsigned __int16 a2) { int v2; // eax@1 int result; // eax@2 unsigned int v4; // esi@3 v2 = *(_DWORD *)(this + 16); if ( a2 < (unsigned int)((*(_DWORD *)(this + 20) - v2) >> 2) ) { v4 = *(_DWORD *)(v2 + 4 * a2); if ( v4 < (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20 ) result = *(_DWORD *)this + 20 * v4; else result = *(_DWORD *)this; } else { result = *(_DWORD *)this; } return result; } //----- (005CFB90) -------------------------------------------------------- int __cdecl sub_5CFB90() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_BossAbstateSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMobileObject::smo_BossAbstateSet"; dword_750AB8[dword_750CB8] = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMobileObject::smo_BossAbstateSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFBD0) -------------------------------------------------------- int __thiscall sub_5CFBD0(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_BossAbstateGet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_BossAbstateGet"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_DWORD *)v1 + 2389); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_BossAbstateGet"); return v2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFC30) -------------------------------------------------------- int __thiscall sub_5CFC30(void *this, int a2) { void *v2; // esi@1 int v3; // esi@2 int v5; // [sp-4h] [bp-1Ch]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AITraining"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AITraining"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v3 = *(_DWORD *)((char *)v2 + 126); if ( v3 ) v5 = v3; else v5 = 0; (*(void (__stdcall **)(int))(*(_DWORD *)a2 + 2912))(v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AITraining"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFCF0) -------------------------------------------------------- signed int __cdecl sub_5CFCF0() { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CurrentTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_CurrentTarget"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_CurrentTarget"); return 65535; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFD40) -------------------------------------------------------- __int16 __thiscall sub_5CFD40(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CurrentTarget"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_CurrentTarget"; dword_750AB8[dword_750CB8++] = -1; LOWORD(v1) = *((_WORD *)v1 + 4739); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_CurrentTarget"); return (signed __int16)v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFDA0) -------------------------------------------------------- char __stdcall sub_5CFDA0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFDF0) -------------------------------------------------------- char __thiscall sub_5CFDF0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@2 int v6; // eax@5 int v7; // esi@7 int v8; // edi@7 int v9; // edx@7 int v10; // esi@8 char v11; // al@12 int v12; // [sp-4h] [bp-24h]@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3736))(v3) ) { --dword_750CB8; v12 = (int)"ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript"; v4 = (int)&unk_D020420; goto LABEL_3; } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3788))(v3); sub_4B8A50((char *)v3 + 8916); v6 = sub_4B7F90((int)((char *)v3 + 8916), a2); if ( !v6 ) goto LABEL_16; v7 = *((_DWORD *)v3 + 2042); v8 = *(_DWORD *)(v7 + 12); v9 = 0; if ( v8 > 0 ) { v10 = *(_DWORD *)(v7 + 8) + 4; do { if ( *(_WORD *)v10 == (_WORD)a3 ) break; ++v9; v10 += 12; } while ( v9 < v8 ); } if ( v9 >= v8 ) { LABEL_16: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript"); return 0; } v11 = (*(int (__thiscall **)(int, int, int, int))(*(_DWORD *)v6 + 24))(v6, a2, a3, v9); --dword_750CB8; v12 = (int)"ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript"; v4 = (int)&unk_D020420; if ( !v11 ) { LABEL_3: sub_467660(v4, v12); return 0; } sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005CFF70) -------------------------------------------------------- char __thiscall sub_5CFF70(void *this, const char *a2, int a3) { void *v3; // edi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"; dword_750AB8[dword_750CB8++] = -1; if ( !strcmp(a2, "HP") ) { *((_DWORD *)v3 + 1991) = a3; LABEL_17: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"); return 1; } if ( !strcmp(a2, "MaxHP") ) { *((_DWORD *)v3 + 2391) = a3; goto LABEL_17; } if ( !strcmp(a2, "MobEXP") ) { *((_DWORD *)v3 + 2392) = a3; goto LABEL_17; } if ( !strcmp(a2, "AC") ) { *((_DWORD *)v3 + 1037) = a3; goto LABEL_17; } if ( !strcmp(a2, "MR") ) { *((_DWORD *)v3 + 1042) = a3; goto LABEL_17; } if ( !strcmp(a2, "WalkSpeed") ) { *((_DWORD *)v3 + 2409) = a3; goto LABEL_17; } if ( !strcmp(a2, "RunSpeed") ) { *((_DWORD *)v3 + 2410) = a3; goto LABEL_17; } if ( !strcmp(a2, "HPRegen") ) { *((_DWORD *)v3 + 2411) = a3; goto LABEL_17; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D0230) -------------------------------------------------------- char __stdcall sub_5D0230(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D0280) -------------------------------------------------------- char __thiscall sub_5D0280(void *this, int a2, __int16 a3) { void *v3; // esi@1 char result; // al@2 int v5; // ecx@5 int v6; // edx@5 int v7; // eax@5 int v8; // ecx@6 int v9; // eax@10 v3 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillBlastAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SkillBlastAtScript"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillBlastAtScript"); result = 0; } else { if ( !a2 ) goto LABEL_13; v5 = *((_DWORD *)v3 + 2042); v6 = *(_DWORD *)(v5 + 12); v7 = 0; if ( v6 > 0 ) { v8 = *(_DWORD *)(v5 + 8) + 4; do { if ( *(_WORD *)v8 == a3 ) break; ++v7; v8 += 12; } while ( v7 < *(_DWORD *)(*((_DWORD *)v3 + 2042) + 12) ); } if ( v7 < v6 ) { *((_DWORD *)v3 + 2048) = v7; sub_4AAD70(v3, a2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1820))(v3); *((_DWORD *)v3 + 2255) = sub_4B88A0((char *)v3 + 8968, v9, (int)off_8492CC, a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillBlastAtScript"); result = 1; } else { LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillBlastAtScript"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (005D03F0) -------------------------------------------------------- char __stdcall sub_5D03F0(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillParameterSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SkillParameterSet"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillParameterSet"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D0440) -------------------------------------------------------- char __thiscall sub_5D0440(void *this, __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@3 int v5; // ecx@3 int v6; // edx@4 int v8; // eax@9 int v9; // [sp-4h] [bp-24h]@2 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSet"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1804))(v2); if ( !v3 ) { v9 = (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSet"; LABEL_8: --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } v4 = *(_DWORD *)(v3 + 12); v5 = 0; if ( v4 <= 0 ) { LABEL_7: v9 = (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSet"; goto LABEL_8; } v6 = *(_DWORD *)(v3 + 8) + 4; while ( *(_WORD *)v6 != a2 ) { ++v5; v6 += 12; if ( v5 >= v4 ) goto LABEL_7; } v8 = *(_DWORD *)(*(_DWORD *)(v3 + 8) + 12 * v5); sub_4A9130( v2, *(_DWORD *)(v8 + 87), *(_DWORD *)(v8 + 83), *(_WORD *)(v8 + 91), *(_DWORD *)(v8 + 97), *(_DWORD *)(v8 + 93), *(_WORD *)(v8 + 101)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSet"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D0570) -------------------------------------------------------- char __stdcall sub_5D0570(int a1) { sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D05C0) -------------------------------------------------------- char __thiscall sub_5D05C0(void *this, int a2) { int v2; // esi@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript"; dword_750AB8[dword_750CB8++] = -1; sub_4A9130( v2, *(_DWORD *)(a2 + 4), *(_DWORD *)a2, *(_WORD *)(a2 + 8), *(_DWORD *)(a2 + 16), *(_DWORD *)(a2 + 12), *(_WORD *)(a2 + 20)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D0680) -------------------------------------------------------- signed int __stdcall sub_5D0680(int a1) { sub_4675D0((int)&unk_D020420, (int)"MobTargetSelector::mts_StoreAggroList"); dword_7508B8[dword_750CB8] = (int)"MobTargetSelector::mts_StoreAggroList"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"MobTargetSelector::mts_StoreAggroList"); return -1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D06D0) -------------------------------------------------------- int __thiscall sub_5D06D0(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 29) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005D0730) -------------------------------------------------------- int __thiscall sub_5D0730(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 29) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005D0790) -------------------------------------------------------- int __thiscall sub_5D0790(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 37) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005D07F0) -------------------------------------------------------- int __thiscall sub_5D07F0(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 37) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (005D0850) -------------------------------------------------------- int __thiscall sub_5D0850(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_FFFFFFE ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 28) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 28) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 29) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 28) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 28) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 29) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 28) = 1; *(_BYTE *)(v13 + 28) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 28) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 28) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 29) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 28) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 28) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 29) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 28) = 1; *(_BYTE *)(v22 + 28) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 28) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 28) = 1; return result; } //----- (005D0A80) -------------------------------------------------------- int __thiscall sub_5D0A80(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_AAAAAA9 ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 36) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 36) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 37) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 36) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 36) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 37) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 36) = 1; *(_BYTE *)(v13 + 36) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 36) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 36) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 37) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 36) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 36) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 37) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 36) = 1; *(_BYTE *)(v22 + 36) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 36) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 36) = 1; return result; } //----- (005D0CB0) -------------------------------------------------------- int __thiscall sub_5D0CB0(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x20u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 28) = 0; if ( result != -12 ) { v4 = a2; *(_DWORD *)(result + 12) = *(_DWORD *)a2; *(_DWORD *)(result + 16) = *(_DWORD *)(v4 + 4); *(_DWORD *)(result + 20) = *(_DWORD *)(v4 + 8); *(_DWORD *)(result + 24) = *(_DWORD *)(v4 + 12); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005D0D30) -------------------------------------------------------- int __thiscall sub_5D0D30(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x28u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 36) = 0; if ( result != -12 ) { v4 = a2; *(_DWORD *)(result + 12) = *(_DWORD *)a2; *(_DWORD *)(result + 16) = *(_DWORD *)(v4 + 4); *(_DWORD *)(result + 20) = *(_DWORD *)(v4 + 8); *(_DWORD *)(result + 24) = *(_DWORD *)(v4 + 12); *(_DWORD *)(result + 28) = *(_DWORD *)(v4 + 16); *(_DWORD *)(result + 32) = *(_DWORD *)(v4 + 20); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005D0DC0) -------------------------------------------------------- int __thiscall sub_5D0DC0(void *this, int a2) { void *v2; // ebx@1 int v3; // ecx@4 unsigned __int16 v4; // di@4 int v5; // ecx@7 int v6; // eax@7 bool v7; // zf@7 int *v8; // eax@7 int v9; // eax@9 int v10; // edx@9 int v11; // ecx@9 int result; // eax@14 unsigned __int16 v13; // si@15 unsigned __int16 v14; // dx@16 int v15; // ecx@17 int v16; // eax@17 unsigned __int16 v17; // di@17 int v18; // eax@18 int v19; // eax@19 int v20; // eax@22 int v21; // eax@22 int v22; // eax@23 int v23; // eax@25 int v24; // esi@25 int v25; // [sp-4h] [bp-28h]@2 void *v26; // [sp+14h] [bp-10h]@1 int v27; // [sp+14h] [bp-10h]@4 v2 = this; v26 = this; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"; dword_750AB8[dword_750CB8++] = -1; if ( (*((_DWORD *)v2 + 2) - *((_DWORD *)v2 + 1)) & 0xFFFFFFFC ) { if ( *(_DWORD *)v2 ) { v13 = *(_WORD *)(*(_DWORD *)(a2 + 8) + 12 * *(_WORD *)(a2 + 14) + 4); do { v14 = *(_WORD *)(a2 + 4); if ( v13 < v14 ) { v15 = *(_DWORD *)(a2 + 8); v16 = v13; v17 = v13; v13 = *(_WORD *)(v15 + 12 * v13 + 4); if ( v17 < v14 ) { v7 = *(_BYTE *)(v15 + 12 * v16 + 8) == 0; v18 = v15 + 12 * v16; if ( !v7 ) { v19 = *(_DWORD *)v18; if ( v19 ) continue; } } } --dword_750CB8; v25 = (int)"BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"; goto LABEL_27; } while ( **((_DWORD **)v26 + 1) != sub_428740(v19) ); if ( v17 >= *(_WORD *)(a2 + 4) || (v20 = *(_DWORD *)(a2 + 8), v7 = *(_BYTE *)(v20 + 12 * v17 + 8) == 0, v21 = v20 + 12 * v17, v7) ) v22 = 0; else v22 = *(_DWORD *)v21; v23 = sub_4010E0(v22); --dword_750CB8; v24 = v23; sub_467660((int)&unk_D020420, (int)"BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = v24; } else { v3 = a2; v4 = *(_WORD *)(*(_DWORD *)(a2 + 8) + 12 * *(_WORD *)(a2 + 14) + 4); v27 = 0; while ( v4 < *(_WORD *)(v3 + 4) ) { v5 = *(_DWORD *)(v3 + 8); v6 = v4; v4 = *(_WORD *)(v5 + 12 * v4 + 4); v7 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0; v8 = (int *)(v5 + 12 * v6); if ( v7 ) break; if ( !*v8 ) break; v9 = sub_428740(*v8); v10 = *((_DWORD *)v2 + 2); v11 = *((_DWORD *)v2 + 1); if ( v11 != v10 ) { do { if ( *(_DWORD *)v11 == v9 ) break; v11 += 4; } while ( v11 != v10 ); if ( v11 != v10 ) ++v27; } v3 = a2; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = v27; } } else { --dword_750CB8; v25 = (int)"BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"; LABEL_27: sub_467660((int)&unk_D020420, v25); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D0FF0) -------------------------------------------------------- int __thiscall sub_5D0FF0(void *this) { void *v1; // esi@1 unsigned __int16 **v2; // eax@1 int v3; // edi@3 int v4; // eax@4 int v6; // [sp-4h] [bp-24h]@5 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::smo_BossAbstateSet"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::smo_BossAbstateSet"; dword_750AB8[dword_750CB8++] = -1; v2 = (unsigned __int16 **)*((_DWORD *)v1 + 2042); *((_DWORD *)v1 + 2389) = 0; if ( v2 && *v2 ) { v3 = sub_5CFB30((int)&dword_14D409A8, **v2); if ( v3 ) { v4 = (int)sub_401150((char *)v1 + 432); *((_DWORD *)v1 + 2389) = sub_5D0DC0((void *)v3, v4); } --dword_750CB8; v6 = (int)"ShineObjectClass::ShineMob::smo_BossAbstateSet"; } else { --dword_750CB8; v6 = (int)"ShineObjectClass::ShineMob::smo_BossAbstateSet"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D10D0) -------------------------------------------------------- int __thiscall sub_5D10D0(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 29) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_5CF6B0(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 29) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 29) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 29) ) { v9 = v6; } else { v9 = sub_5CF650(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 29) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_5CF630(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 29) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 29) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 28); *(_BYTE *)(v5 + 28) = *(_BYTE *)(v3 + 28); *(_BYTE *)(v3 + 28) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 28) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 28) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 28) ) { *(_BYTE *)(v15 + 28) = 1; *(_BYTE *)(v6 + 28) = 0; sub_5D06D0(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 29) ) goto LABEL_53; 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; sub_5D0730(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 28) = *(_BYTE *)(v6 + 28); *(_BYTE *)(v6 + 28) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 28) = 1; sub_5D06D0(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 28) ) { *(_BYTE *)(v15 + 28) = 1; *(_BYTE *)(v6 + 28) = 0; sub_5D0730(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 29) ) goto LABEL_53; 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; sub_5D06D0(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 28) = *(_BYTE *)(v6 + 28); *(_BYTE *)(v6 + 28) = 1; *(_BYTE *)(*(_DWORD *)v15 + 28) = 1; sub_5D0730(i, v6); break; } } *(_BYTE *)(v15 + 28) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 28) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005D1320) -------------------------------------------------------- int __thiscall sub_5D1320(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 37) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_5CF700(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 37) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 37) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 37) ) { v9 = v6; } else { v9 = sub_5CF690(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 37) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_5CF670(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 37) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 37) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 36); *(_BYTE *)(v5 + 36) = *(_BYTE *)(v3 + 36); *(_BYTE *)(v3 + 36) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 36) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 36) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 36) ) { *(_BYTE *)(v15 + 36) = 1; *(_BYTE *)(v6 + 36) = 0; sub_5D0790(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 37) ) goto LABEL_53; 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; sub_5D07F0(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 36) = *(_BYTE *)(v6 + 36); *(_BYTE *)(v6 + 36) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 36) = 1; sub_5D0790(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 36) ) { *(_BYTE *)(v15 + 36) = 1; *(_BYTE *)(v6 + 36) = 0; sub_5D07F0(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 37) ) goto LABEL_53; 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; sub_5D0790(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 36) = *(_BYTE *)(v6 + 36); *(_BYTE *)(v6 + 36) = 1; *(_BYTE *)(*(_DWORD *)v15 + 36) = 1; sub_5D07F0(i, v6); break; } } *(_BYTE *)(v15 + 36) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 36) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (005D1570) -------------------------------------------------------- void __stdcall sub_5D1570(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 29); v1 = i ) { sub_5D1570(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (005D15B0) -------------------------------------------------------- void __stdcall sub_5D15B0(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 37); v1 = i ) { sub_5D15B0(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (005D15F0) -------------------------------------------------------- int __thiscall sub_5D15F0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // di@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 29) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 29) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5D0850(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5CFA10(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5D0850(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (005D16D0) -------------------------------------------------------- int __thiscall sub_5D16D0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // di@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 37) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 37) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_5D0A80(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_5CFA70(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_5D0A80(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (005D17B0) -------------------------------------------------------- int __thiscall sub_5D17B0(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 29) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_WORD *)a3 < *(_WORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (005D1820) -------------------------------------------------------- int __thiscall sub_5D1820(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 37) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_WORD *)a3 < *(_WORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (005D1890) -------------------------------------------------------- void __thiscall sub_5D1890(void *this, int a2, unsigned int a3, int a4) { unsigned int v4; // edi@1 void *v5; // esi@1 int v6; // ecx@2 void *v7; // ebx@2 int v8; // eax@2 unsigned int v9; // edx@4 int v10; // eax@4 unsigned int v11; // eax@6 int v12; // eax@10 int v13; // ecx@10 int v14; // ebx@10 unsigned int v15; // edx@10 int v16; // eax@10 int v17; // edi@13 unsigned int v18; // eax@15 int v19; // eax@16 unsigned int v20; // ST30_4@18 const void *v21; // edi@18 void *v22; // eax@18 void *v23; // [sp+8h] [bp-4h]@10 v4 = a3; v5 = this; if ( a3 ) { v6 = *(_DWORD *)this; v7 = (void *)*((_DWORD *)v5 + 1); v8 = (*((_DWORD *)v5 + 1) - v6) >> 2; if ( 1073741823 - v8 < a3 ) sub_65178B((int)"vector too long"); v9 = v8 + a3; v10 = (*((_DWORD *)v5 + 2) - v6) >> 2; if ( v10 >= v9 ) { v19 = (signed int)((char *)v7 - a2) >> 2; if ( v19 >= a3 ) { v20 = 4 * a3; v21 = (char *)v7 - 4 * a3; a3 = *(_DWORD *)a4; a4 = 4 * ((signed int)(v7 - v21) >> 2); v22 = memmove_0(v7, v21, 4 * ((signed int)(v7 - v21) >> 2)); *((_DWORD *)v5 + 1) = (char *)v22 + a4; memmove_0( (char *)v7 - 4 * ((signed int)((char *)v21 - a2) >> 2), (const void *)a2, 4 * ((signed int)((char *)v21 - a2) >> 2)); sub_5ADF70(a2, a2 + v20, (int)&a3); } else { a4 = *(_DWORD *)a4; memmove_0((void *)(4 * a3 + a2), (const void *)a2, 4 * v19); sub_4E6740(*((_DWORD *)v5 + 1), v4 - ((*((_DWORD *)v5 + 1) - a2) >> 2), (int)&a4); *((_DWORD *)v5 + 1) += 4 * v4; sub_5ADF70(a2, *((_DWORD *)v5 + 1) - 4 * v4, (int)&a4); } } else { if ( 1073741823 - ((unsigned int)v10 >> 1) >= v10 ) { v11 = ((unsigned int)v10 >> 1) + v10; a3 = v11; } else { a3 = 0; v11 = 0; } if ( v11 < v9 ) { a3 = v9; v11 = v9; } v12 = sub_5ADF10(v11); v13 = a2; v23 = (void *)v12; v14 = (a2 - *(_DWORD *)v5) >> 2; v15 = v4; v16 = v12 + 4 * v14; if ( v4 ) { do { *(_DWORD *)v16 = *(_DWORD *)a4; v16 += 4; --v15; } while ( v15 ); v13 = a2; } memmove_0(v23, *(const void **)v5, 4 * ((v13 - *(_DWORD *)v5) >> 2)); memmove_0((char *)v23 + 4 * (v14 + v4), (const void *)a2, 4 * ((*((_DWORD *)v5 + 1) - a2) >> 2)); v17 = ((*((_DWORD *)v5 + 1) - *(_DWORD *)v5) >> 2) + v4; if ( *(_DWORD *)v5 ) operator delete(*(void **)v5); v18 = (unsigned int)((char *)v23 + 4 * a3); *(_DWORD *)v5 = v23; *((_DWORD *)v5 + 2) = v18; *((_DWORD *)v5 + 1) = (char *)v23 + 4 * v17; } } } //----- (005D1A70) -------------------------------------------------------- int __thiscall sub_5D1A70(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 29) ) { do { sub_5D1570(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 29) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (005D1AC0) -------------------------------------------------------- int __thiscall sub_5D1AC0(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 37) ) { do { sub_5D15B0(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 37) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (005D1B10) -------------------------------------------------------- int __thiscall sub_5D1B10(void *this, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // ecx@2 const void *v5; // eax@2 void *v6; // edi@2 const void *v7; // ecx@3 int v9; // edx@5 const void *v10; // edi@8 size_t v11; // ebx@8 int v12; // [sp+10h] [bp+8h]@2 v2 = a2; v3 = (int)this; if ( this != (void *)a2 ) { v4 = *(_DWORD *)(a2 + 4); v5 = *(const void **)a2; v6 = *(void **)v3; v12 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) >> 2; if ( v12 ) { v9 = (*(_DWORD *)(v3 + 4) - (signed int)v6) >> 2; if ( v12 <= (unsigned int)v9 ) { memmove_0(v6, v5, 4 * ((v4 - (signed int)v5) >> 2)); *(_DWORD *)(v3 + 4) = *(_DWORD *)v3 + 4 * ((*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2); return v3; } if ( v12 <= (unsigned int)((*(_DWORD *)(v3 + 8) - (signed int)v6) >> 2) ) { v10 = (char *)v5 + 4 * v9; memmove_0(*(void **)v3, v5, 4 * (4 * v9 >> 2)); v11 = 4 * ((*(_DWORD *)(v2 + 4) - (signed int)v10) >> 2); *(_DWORD *)(v3 + 4) = (char *)memmove_0(*(void **)(v3 + 4), v10, v11) + v11; return v3; } if ( v6 ) operator delete(v6); if ( sub_5C08E0(v3, (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2) ) *(_DWORD *)(v3 + 4) = sub_5C0930(*(const void **)v2, *(_DWORD *)(v2 + 4), *(void **)v3); } else { v7 = *(const void **)(v3 + 4); if ( v6 != v7 ) { memmove_0(v6, v7, 0); *(_DWORD *)(v3 + 4) = v6; return v3; } } } return v3; } //----- (005D1C40) -------------------------------------------------------- int __thiscall sub_5D1C40(void *this) { int v1; // eax@1 unsigned int v2; // ecx@1 int v3; // esi@5 int v4; // edi@11 int v5; // eax@13 int v6; // esi@13 int v7; // eax@13 int v9; // [sp+Ch] [bp-D8h]@13 int v10; // [sp+14h] [bp-D0h]@1 int v11; // [sp+18h] [bp-CCh]@7 int v12; // [sp+1Ch] [bp-C8h]@13 int v13; // [sp+20h] [bp-C4h]@13 int v14; // [sp+24h] [bp-C0h]@13 void *v15; // [sp+28h] [bp-BCh]@1 int v16; // [sp+2Ch] [bp-B8h]@1 int (__thiscall **v17)(void *, char); // [sp+30h] [bp-B4h]@1 int v18; // [sp+64h] [bp-80h]@1 char v19; // [sp+70h] [bp-74h]@1 unsigned int v20; // [sp+D4h] [bp-10h]@1 int v21; // [sp+E0h] [bp-4h]@1 int v22; // [sp+E4h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v15 = this; v10 = (int)"BossFieldContent::ServentBuffBossTable::sbbt_Load"; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_Load"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::ServentBuffBossTable::sbbt_Load"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; sub_639920((int)&v17); v17 = &off_6FA590; memset(&v19, 0, 0x64u); LOBYTE(v21) = 1; sub_5CF760(&v17, "../9Data/Shine/StateMob.shn"); v1 = *(_DWORD *)(v18 + 40); v2 = 0; v16 = 0; if ( v1 > 0 ) { while ( 1 ) { if ( v2 < v1 ) v3 = sub_626BC0((int)&v17, v2); else v3 = (int)&v19; LOWORD(v11) = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)(v3 + 32)); if ( (_WORD)v11 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ServentBuffBossTable::sbbt_Load : ConditionMob not found", v3 + 32); loc_6391B0("ServentBuffBossTable::sbbt_Load"); } HIWORD(v11) = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v3); if ( HIWORD(v11) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ServentBuffBossTable::sbbt_Load : TargetMob not found", v3); loc_6391B0("ServentBuffBossTable::sbbt_Load"); } v4 = sub_639670(&byte_878354, v3 + 64); if ( v4 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ServentBuffBossTable::sbbt_Load : Abstate not fount", v3 + 64); loc_6391B0("FieldContainer::fc_AbstateInFieldLoad"); } v12 = v4; v13 = sub_401310(&unk_877138, v4); v14 = *(_DWORD *)(v3 + 96); v5 = sub_418D40((int)&unk_14D159B0, v11); v6 = (int)v15; *(_BYTE *)(v5 + 40) |= 1u; v7 = sub_5D0CB0((void *)v6, (int)&v11); sub_5D15F0(v6, (int)&v9, (void *)v7, 0); v1 = *(_DWORD *)(v18 + 40); ++v16; if ( v16 >= v1 ) break; v2 = v16; } } LOBYTE(v21) = 0; v17 = &off_6FA590; sub_639940((int)&v17); --dword_750CB8; v21 = -1; return sub_467660((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_Load"); } // 6FA590: using guessed type int (__thiscall *off_6FA590)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005D1EB0) -------------------------------------------------------- int __thiscall sub_5D1EB0(void *this, int a2) { int v2; // esi@1 int v3; // esi@1 int result; // eax@2 int v5; // esi@3 __int16 v6; // [sp+Ch] [bp-1Ch]@1 int v7; // [sp+24h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"; dword_750AB8[dword_750CB8++] = -1; v6 = a2; sub_5D17B0(v2, (int)&a2, (int)&v6); v3 = *(_DWORD *)(v2 + 4); --dword_750CB8; v7 = -1; if ( a2 == v3 ) { sub_467660((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); result = 0; } else { v5 = a2 + 12; sub_467660((int)&unk_D020420, (int)"BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); result = v5; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D1F80) -------------------------------------------------------- int __thiscall sub_5D1F80(void *this) { void *v1; // esi@1 int v2; // eax@3 char v4; // [sp+Ch] [bp-28h]@4 int v5; // [sp+24h] [bp-10h]@1 int v6; // [sp+30h] [bp-4h]@1 v1 = this; v5 = (int)"ShineObjectClass::ShineMob::sm_IBuffToBuffee"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_IBuffToBuffee"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::sm_IBuffToBuffee"; dword_750AB8[dword_750CB8++] = -1; v6 = 0; if ( dword_14D409A4 < (unsigned int)dword_14D129E8 ) { v2 = sub_5D1EB0(&unk_14D40994, ***((_WORD ***)v1 + 2042)); if ( v2 ) { sub_4EADB0(&v4, *(_WORD *)(v2 + 2), *(_DWORD *)(v2 + 4), *(_DWORD *)(v2 + 12), *(_DWORD *)(v2 + 8), 6000); LOBYTE(v6) = 1; sub_549B60(v1, (int)&v4, 1); LOBYTE(v6) = 0; sub_4EADF0(&v4); } --dword_750CB8; } else { --dword_750CB8; } v6 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::sm_IBuffToBuffee"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; // 14D409A4: using guessed type int dword_14D409A4; //----- (005D2080) -------------------------------------------------------- int __thiscall sub_5D2080(void *this) { int v1; // ebx@1 unsigned int v2; // edi@1 unsigned int v3; // eax@1 bool v4; // cf@1 int v5; // esi@3 int v6; // eax@7 int v7; // ecx@9 signed int v8; // ebx@11 int v9; // ecx@13 int v10; // edx@13 int v11; // eax@13 int v12; // eax@14 unsigned int v13; // eax@14 int v15; // [sp+Ch] [bp-D0h]@14 int v16; // [sp+14h] [bp-C8h]@1 int v17; // [sp+18h] [bp-C4h]@5 int v18; // [sp+1Ch] [bp-C0h]@9 int v19; // [sp+20h] [bp-BCh]@13 int v20; // [sp+24h] [bp-B8h]@13 int v21; // [sp+28h] [bp-B4h]@13 int v22; // [sp+2Ch] [bp-B0h]@13 void *v23; // [sp+30h] [bp-ACh]@1 unsigned int v24; // [sp+34h] [bp-A8h]@1 int (__thiscall **v25)(void *, char); // [sp+38h] [bp-A4h]@1 int v26; // [sp+6Ch] [bp-70h]@1 char v27; // [sp+78h] [bp-64h]@1 unsigned int v28; // [sp+CCh] [bp-10h]@1 int v29; // [sp+D8h] [bp-4h]@1 int v30; // [sp+DCh] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v1 = (int)this; v23 = this; v16 = (int)"BossFieldContent::MobAutomaticActionList::maal_Load"; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::MobAutomaticActionList::maal_Load"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::MobAutomaticActionList::maal_Load"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; v29 = 0; sub_639920((int)&v25); v25 = &off_6FA5A0; memset(&v27, 0, 0x51u); LOBYTE(v29) = 1; sub_5CF8D0(&v25, "../9Data/Shine/MobAutoAction.shn"); v3 = *(_DWORD *)(v26 + 40); v24 = 0; v4 = v3 > 0; if ( (signed int)v3 > 0 ) { do { if ( v4 ) v5 = sub_626BC0((int)&v25, v2); else v5 = (int)&v27; LOWORD(v17) = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v5); if ( (_WORD)v17 == -1 ) { sub_6390B0( &unk_86DDD8, (int)"BossFieldContent::MobAutomaticActionList::maal_Load : Invalid mob in MobAutoAction", v5); loc_6391B0("BossFieldContent::MobAutomaticActionList::maal_Load"); } v6 = sub_418D40((int)&unk_14D159B0, v17); if ( !*(_DWORD *)(v5 + 32) ) *(_BYTE *)(v6 + 40) |= 2u; v7 = *(_DWORD *)(v5 + 40); v18 = *(_DWORD *)(v5 + 40); if ( v18 == 1 ) { v8 = sub_639670(&byte_878354, v5 + 44); if ( v8 == -1 ) { sub_6390B0( &unk_86DDD8, (int)"BossFieldContent::MobAutomaticActionList::maal_Load : Abstate not fount", v5 + 44); loc_6391B0("FieldContainer::fc_AbstateInFieldLoad"); } v9 = *(_BYTE *)(v5 + 76); v10 = *(_WORD *)(v5 + 77); v11 = *(_WORD *)(v5 + 79); v2 = v24; v19 = v8; v1 = (int)v23; v20 = v9; v21 = v10; v22 = v11; } else { sub_639100(&unk_86DDD8, (int)"BossFieldContent::MobAutomaticActionList::maal_Load : ActionType not defined", v7); loc_6391B0("BossFieldContent::MobAutomaticActionList::maal_Load"); } v12 = sub_5D0D30((void *)v1, (int)&v17); sub_5D16D0(v1, (int)&v15, (void *)v12, 0); v13 = *(_DWORD *)(v26 + 40); ++v2; v24 = v2; v4 = v2 < v13; } while ( (signed int)v2 < (signed int)v13 ); } LOBYTE(v29) = 0; v25 = &off_6FA5A0; sub_639940((int)&v25); --dword_750CB8; v29 = -1; return sub_467660((int)&unk_D020420, (int)"BossFieldContent::MobAutomaticActionList::maal_Load"); } // 6FA5A0: using guessed type int (__thiscall *off_6FA5A0)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005D22D0) -------------------------------------------------------- int __thiscall sub_5D22D0(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@1 int v6; // esi@3 __int16 v8; // [sp+Ch] [bp-28h]@1 int v9; // [sp+24h] [bp-10h]@1 int v10; // [sp+30h] [bp-4h]@1 v4 = (int)this; v9 = (int)"BossFieldContent::MobAutomaticActionList::maal_MobDamaged"; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::MobAutomaticActionList::maal_MobDamaged"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::MobAutomaticActionList::maal_MobDamaged"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v8 = a2; sub_5D1820(v4, (int)&a2, (int)&v8); v5 = a2; if ( a2 != *(_DWORD *)(v4 + 4) ) { if ( *(_DWORD *)(a2 + 16) == 1 ) { v6 = a3; if ( a3 ) { if ( (signed int)(unsigned __int16)sub_4011A0(&unk_14D42DC0) < *(_DWORD *)(a2 + 28) && sub_402710(v6, a4) < (unsigned int)(*(_DWORD *)(v5 + 32) * *(_DWORD *)(v5 + 32)) ) (*(void (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v6 + 1604))( v6, v6, *(_DWORD *)(v5 + 20), *(_DWORD *)(v5 + 24), 1); } } } --dword_750CB8; v10 = -1; return sub_467660((int)&unk_D020420, (int)"BossFieldContent::MobAutomaticActionList::maal_MobDamaged"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D23E0) -------------------------------------------------------- signed int __stdcall sub_5D23E0(int a1) { const void *v1; // eax@1 void *v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_GetAggroList"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_mob_GetAggroList"; dword_750AB8[dword_750CB8++] = -1; v1 = *(const void **)(a1 + 4); v2 = *(void **)a1; if ( *(const void **)a1 != v1 ) { memmove_0(v2, v1, 0); *(_DWORD *)(a1 + 4) = v2; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_mob_GetAggroList"); return -1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D2460) -------------------------------------------------------- signed int __thiscall sub_5D2460(void *this, int a2) { void *v2; // ebx@1 const void *v3; // eax@1 void *v4; // edi@1 int v5; // eax@4 int v6; // esi@4 signed int result; // eax@4 int v8; // [sp+0h] [bp-24h]@0 int v9; // [sp+4h] [bp-20h]@0 int v10; // [sp+8h] [bp-1Ch]@0 int v11; // [sp+Ch] [bp-18h]@0 void *v12; // [sp+14h] [bp-10h]@1 v2 = this; v12 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetAggroList"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_mob_GetAggroList"; dword_750AB8[dword_750CB8++] = -1; v3 = *(const void **)(a2 + 4); v4 = *(void **)a2; if ( *(const void **)a2 != v3 ) { memmove_0(v4, v3, 0); *(_DWORD *)(a2 + 4) = v4; v2 = v12; } if ( *((_DWORD *)v2 + 2211) ) { v5 = (*(int (__stdcall **)(int, int, int, int, int, _DWORD))(**((_DWORD **)v2 + 2211) + 44))( a2, v8, v9, v10, v11, "ShineObjectClass::ShineMob::so_mob_GetAggroList"); --dword_750CB8; v6 = v5; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetAggroList"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_mob_GetAggroList"); result = -1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D2570) -------------------------------------------------------- int __thiscall sub_5D2570(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 29) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 29) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 29); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 29); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_5D10D0((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5D1A70(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (005D2610) -------------------------------------------------------- int __thiscall sub_5D2610(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 37) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 37) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 37); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 37); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_5D1320((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_5D1AC0(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (005D26B0) -------------------------------------------------------- int __thiscall sub_5D26B0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 bool v6; // zf@1 int *v8; // [sp-4h] [bp-20h]@8 v3 = this; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"; dword_750AB8[dword_750CB8++] = -1; v4 = *((_DWORD *)v3 + 2); v5 = *((_DWORD *)v3 + 1); v6 = v5 == v4; if ( v5 != v4 ) { do { if ( *(_DWORD *)v5 == a2 ) break; v5 += 4; } while ( v5 != v4 ); v6 = v5 == v4; } if ( !v6 ) { sub_639100(&unk_86DDD8, (int)"BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load : Duplicate abstate", a2); loc_6391B0("BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } if ( (*((_DWORD *)v3 + 2) - *((_DWORD *)v3 + 1)) & 0xFFFFFFFC ) { if ( *(_DWORD *)v3 != a3 ) { sub_639100( &unk_86DDD8, (int)"BossFieldContent::MobAbstateCheckAtDead::macad_PushBack : DropType not same", *(_DWORD *)v3 == a3); loc_6391B0("BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } if ( *(_DWORD *)v3 ) { sub_639100( &unk_86DDD8, (int)"BossFieldContent::MobAbstateCheckAtDead::macad_PushBack : SDT_STA must be one", *(_DWORD *)v3 == 0); loc_6391B0("BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } v8 = &a2; } else { *(_DWORD *)v3 = a3; v8 = &a2; } sub_4242C0((int)((char *)v3 + 4), (unsigned int)v8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D2810) -------------------------------------------------------- signed int __thiscall sub_5D2810(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 int v4; // edi@1 unsigned __int16 v5; // bx@1 int v6; // ecx@3 int v7; // eax@3 bool v8; // zf@3 int v9; // ecx@3 int v10; // eax@4 int v11; // esi@6 unsigned int v12; // eax@6 int v13; // edx@7 int v14; // ecx@8 signed int v15; // esi@8 int v16; // eax@9 int v17; // eax@10 int v18; // ecx@10 unsigned int v19; // ecx@12 int v20; // eax@17 int v21; // ecx@20 int v22; // eax@21 int v23; // eax@22 int v24; // ecx@22 unsigned int v25; // ecx@24 int v26; // eax@29 signed int v27; // esi@33 int v29; // [sp+14h] [bp-18h]@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"MobTargetBout::mts_StoreAggroList"); dword_7508B8[dword_750CB8] = (int)"MobTargetBout::mts_StoreAggroList"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 5); v4 = a2; v5 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); v29 = v3; while ( v5 < *(_WORD *)(v29 + 4) ) { v6 = *(_DWORD *)(v29 + 8); v7 = v5; v5 = *(_WORD *)(v6 + 12 * v5 + 4); v8 = *(_BYTE *)(v6 + 12 * v7 + 8) == 0; v9 = v6 + 12 * v7; if ( !v8 ) { v10 = *(_DWORD *)v9; if ( *(_DWORD *)v9 ) { if ( *(_DWORD *)(v10 + 8) ) { v11 = (unsigned __int16)sub_4802C0(*(_DWORD *)(v10 + 8)); v12 = *(_DWORD *)(v4 + 4); a2 = v11; if ( (unsigned int)&a2 >= v12 || (v13 = *(_DWORD *)v4, *(_DWORD *)v4 > (unsigned int)&a2) ) { v21 = *(_DWORD *)(v4 + 8); if ( v12 == v21 ) { v22 = (signed int)(v12 - *(_DWORD *)v4) >> 1; if ( (unsigned int)v22 > 0x7FFFFFFE ) LABEL_32: sub_65178B((int)"vector too long"); v23 = v22 + 1; v24 = (v21 - *(_DWORD *)v4) >> 1; if ( v23 > (unsigned int)v24 ) { if ( 2147483647 - ((unsigned int)v24 >> 1) >= v24 ) v25 = ((unsigned int)v24 >> 1) + v24; else v25 = 0; if ( v25 < v23 ) v25 = v23; sub_479A70(v4, v25); } } v26 = *(_DWORD *)(v4 + 4); if ( v26 ) *(_WORD *)v26 = v11; *(_DWORD *)(v4 + 4) += 2; } else { v14 = *(_DWORD *)(v4 + 8); v15 = (signed int)((char *)&a2 - v13) >> 1; if ( v12 == v14 ) { v16 = (signed int)(v12 - v13) >> 1; if ( (unsigned int)v16 > 0x7FFFFFFE ) goto LABEL_32; v17 = v16 + 1; v18 = (v14 - v13) >> 1; if ( v17 > (unsigned int)v18 ) { if ( 2147483647 - ((unsigned int)v18 >> 1) >= v18 ) v19 = ((unsigned int)v18 >> 1) + v18; else v19 = 0; if ( v19 < v17 ) v19 = v17; sub_479A70(v4, v19); } } v20 = *(_DWORD *)(v4 + 4); if ( v20 ) *(_WORD *)v20 = *(_WORD *)(*(_DWORD *)v4 + 2 * v15); *(_DWORD *)(v4 + 4) += 2; } } } } } v27 = *(_DWORD *)(v4 + 4) - *(_DWORD *)v4; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"MobTargetBout::mts_StoreAggroList"); return v27 >> 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D29F0) -------------------------------------------------------- int __thiscall sub_5D29F0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AILearn"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineObject::so_AILearn"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { *(_DWORD *)((char *)v2 + 126) = a2; sub_4241C0((int)((char *)v2 + 130), "Entrance", 8u); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3092))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineObject::so_AILearn"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D2AC0) -------------------------------------------------------- int __thiscall sub_5D2AC0(void *this, int a2) { void *v2; // esi@1 int v3; // edx@2 char *v4; // ecx@2 int v5; // eax@2 int v6; // edi@2 char v7; // dl@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_AILearn"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShineMob::so_AILearn"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { sub_5D29F0(v2, a2); v3 = *((_DWORD *)v2 + 2042); v4 = (char *)(*(_DWORD *)v3 + 2); v5 = *(_DWORD *)v3 + 2; v6 = *(_DWORD *)v3 + 3; do v7 = *(_BYTE *)v5++; while ( v7 ); sub_4241C0((int)((char *)v2 + 130), v4, v5 - v6); } else { (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3092))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShineMob::so_AILearn"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D2BB0) -------------------------------------------------------- int __cdecl sub_5D2BB0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_5C0AA0(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (005D2C60) -------------------------------------------------------- int __thiscall sub_5D2C60(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // ebx@2 int v8; // [sp+8h] [bp-4h]@1 result = a2; v5 = a4; v6 = a3; v8 = this; *(_DWORD *)a2 = a3; if ( a3 != a4 ) { v7 = *(_DWORD *)(this + 4); if ( a4 != v7 ) { do { *(_DWORD *)v6 = *(_DWORD *)v5; sub_5D1B10((void *)(v6 + 4), v5 + 4); v5 += 20; v6 += 20; } while ( v5 != v7 ); this = v8; } sub_492FC0(v6, *(_DWORD *)(this + 4)); result = a2; *(_DWORD *)(v8 + 4) = v6; } return result; } //----- (005D2CC0) -------------------------------------------------------- int __thiscall sub_5D2CC0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_5D2BB0(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_492FC0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (005D2DAB) -------------------------------------------------------- void __usercall sub_5D2DAB(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005D2DD0) -------------------------------------------------------- int __thiscall sub_5D2DD0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5D2CC0(this, v5); } return result; } //----- (005D2E50) -------------------------------------------------------- int __thiscall sub_5D2E50(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 int v8; // [sp-4h] [bp-20h]@6 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5D2DD0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; v8 = a2 + 4; goto LABEL_11; } } else { v4 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5D2DD0(v2, 1); v6 = *(_DWORD *)v2 + 20 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; v8 = v6 + 4; LABEL_11: result = sub_5C0AA0(result + 4, v8); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v2 + 4) += 20; return result; } //----- (005D2F20) -------------------------------------------------------- int __thiscall sub_5D2F20(void *this) { int v1; // edi@1 int v2; // ST08_4@1 int v3; // ST04_4@1 int v4; // eax@3 int v5; // edx@3 int v6; // ebx@3 int v7; // ecx@3 void *v8; // ebx@6 int v9; // eax@8 int v10; // ecx@8 int v11; // ebx@12 unsigned __int16 v12; // ax@14 int v13; // esi@14 int v14; // eax@16 int v15; // edx@16 int v16; // esi@16 int v17; // ebx@16 signed int v18; // edx@17 int v19; // ebx@19 char v21; // [sp+10h] [bp-B4h]@1 void *v22; // [sp+14h] [bp-B0h]@1 int v23; // [sp+18h] [bp-ACh]@1 int v24; // [sp+1Ch] [bp-A8h]@1 int v25; // [sp+24h] [bp-A0h]@12 int v26; // [sp+28h] [bp-9Ch]@1 int (__thiscall **v27)(void *, char); // [sp+2Ch] [bp-98h]@8 int v28; // [sp+60h] [bp-64h]@8 char v29; // [sp+6Ch] [bp-58h]@8 unsigned int v30; // [sp+B4h] [bp-10h]@1 int v31; // [sp+C0h] [bp-4h]@1 int v32; // [sp+C4h] [bp+0h]@1 v30 = (unsigned int)&v32 ^ __security_cookie; v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); dword_7508B8[dword_750CB8] = (int)"BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"; dword_750AB8[dword_750CB8++] = -1; v2 = *(_DWORD *)(v1 + 4); v3 = *(_DWORD *)v1; v31 = 0; sub_5D2C60(v1, (int)&v26, v3, v2); v22 = 0; v23 = 0; v24 = 0; LOBYTE(v31) = 1; sub_5D2E50(v1, (unsigned int)&v21); LOBYTE(v31) = 0; if ( v22 ) operator delete(v22); v26 = 0; v4 = sub_4AD8E0((int)&unk_14D159B0); v5 = *(_DWORD *)(v1 + 20); v6 = *(_DWORD *)(v1 + 16); v7 = (*(_DWORD *)(v1 + 20) - v6) >> 2; if ( v4 <= (unsigned int)v7 ) { if ( v4 < (unsigned int)v7 ) { v8 = (void *)(v6 + 4 * v4); if ( v8 != (void *)v5 ) { v26 = 0; memmove_0(v8, (const void *)v5, 0); *(_DWORD *)(v1 + 20) = (char *)v8 + v26; } } } else { sub_5D1890((void *)(v1 + 16), v5, v4 - v7, (int)&v26); } sub_639920((int)&v27); v27 = &off_6FA598; memset(&v29, 0, 0x47u); LOBYTE(v31) = 2; sub_5CF820(&v27, "../9Data/Shine/MobAbStateDropSetting.shn"); v9 = *(_DWORD *)(v28 + 40); v10 = 0; v26 = 0; if ( v9 > 0 ) { while ( 1 ) { if ( v10 < (unsigned int)v9 ) { v25 = sub_626BC0((int)&v27, v10); v11 = v25; } else { v11 = (int)&v29; v25 = (int)&v29; } v12 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v11); v13 = v12; if ( v12 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load : Invalid mob", v11); loc_6391B0("BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); } v14 = *(_DWORD *)(v1 + 16); v15 = v13; v16 = *(_DWORD *)(v14 + 4 * v13); v17 = v14 + 4 * v15; if ( !v16 ) { v18 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v1 + 4) - *(_DWORD *)v1)) >> 32) >> 3; v16 = v18 + ((unsigned int)v18 >> 31); *(_DWORD *)v17 = v16; v22 = 0; v23 = 0; v24 = 0; LOBYTE(v31) = 3; sub_5D2E50(v1, (unsigned int)&v21); LOBYTE(v31) = 2; if ( v22 ) operator delete(v22); } v19 = sub_418C10((int)&unk_877138, (unsigned __int8 *)(v25 + 33)); if ( v19 == 0 ) { sub_6390B0( &unk_86DDD8, (int)"BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load : Invalid abstate", v25 + 33); loc_6391B0("BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); } sub_5D26B0((void *)(*(_DWORD *)v1 + 20 * v16), *(_DWORD *)(*(_DWORD *)v19 + 34), *(_DWORD *)(v25 + 66)); v9 = *(_DWORD *)(v28 + 40); ++v26; if ( v26 >= v9 ) break; v10 = v26; } } LOBYTE(v31) = 0; v27 = &off_6FA598; sub_639940((int)&v27); --dword_750CB8; v31 = -1; return sub_467660((int)&unk_D020420, (int)"BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); } // 6FA598: using guessed type int (__thiscall *off_6FA598)(void *, char); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005D3230) -------------------------------------------------------- int __cdecl sub_5D3230(int a1) { int v1; // eax@1 FILE *v2; // esi@1 char v4; // [sp+4h] [bp-104h]@1 unsigned int v5; // [sp+104h] [bp-4h]@1 int v6; // [sp+108h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = sub_5F48F0(a1, 1, 0); sprintf(&v4, "Script : %s", v1); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n", &v4); fclose(v2); return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (005D32A0) -------------------------------------------------------- signed int __cdecl sub_5D32A0(int a1) { int v1; // esi@1 unsigned int v2; // eax@1 void *v3; // edi@1 char v4; // cl@2 int lpValueName; // [sp+8h] [bp-214h]@1 DWORD cbData; // [sp+Ch] [bp-210h]@4 DWORD Type; // [sp+10h] [bp-20Ch]@4 HKEY hKey; // [sp+14h] [bp-208h]@3 BYTE Data; // [sp+18h] [bp-204h]@3 char v11; // [sp+117h] [bp-105h]@1 const CHAR SubKey[4]; // [sp+118h] [bp-104h]@1 unsigned int v13; // [sp+218h] [bp-4h]@1 int v14; // [sp+21Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v1 = sub_5F48F0(a1, 1, 0); lpValueName = sub_5F48F0(a1, 2, 0); strcpy((char *)SubKey, "SOFTWARE\\"); v2 = strlen((const char *)v1) + 1; v3 = &v11; do { v4 = *((_BYTE *)v3 + 1); v3 = (char *)v3 + 1; } while ( v4 ); memcpy(v3, (const void *)v1, v2); Data = 0; if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, SubKey, 0, 0x201u, &hKey) ) { cbData = 256; Type = 1; if ( RegQueryValueExA(hKey, (LPCSTR)lpValueName, 0, &Type, &Data, &cbData) ) Data = 0; RegCloseKey(hKey); } sub_5F4D80(a1, &Data); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005D33D0) -------------------------------------------------------- signed int __cdecl sub_5D33D0(int a1) { if ( !byte_86D0B8 && byte_86D0B9 ) dbl_86D0B0 = 1.0; sub_5F4C80(a1, (double)(unsigned __int8)dword_AA0BC8); sub_5F4C80(a1, (double)(((unsigned int)dword_AA0BC8 >> 8) & 0x1F)); sub_5F4C80(a1, (double)(((unsigned int)dword_AA0BC8 >> 13) & 0x3F)); sub_5F4C80(a1, (double)(((unsigned int)dword_AA0BC8 >> 19) & 0x3F)); sub_5F4C80(a1, (double)((unsigned int)dword_AA0BC8 >> 25)); return 5; } // 86D0B0: using guessed type double dbl_86D0B0; // 86D0B8: using guessed type char byte_86D0B8; // 86D0B9: using guessed type char byte_86D0B9; // AA0BC8: using guessed type int dword_AA0BC8; //----- (005D34B0) -------------------------------------------------------- int __thiscall sub_5D34B0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = -1; return result; } //----- (005D34C0) -------------------------------------------------------- void __thiscall sub_5D34C0(int this, int a2) { *(_DWORD *)this = a2; if ( a2 ) *(_DWORD *)(this + 4) = (*(int (**)(void))(*(_DWORD *)a2 + 836))(); else *(_DWORD *)(this + 4) = -1; } //----- (005D34F0) -------------------------------------------------------- char __thiscall sub_5D34F0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ecx@1 char result; // al@5 char v6; // [sp+Ch] [bp-104h]@6 unsigned int v7; // [sp+10Ch] [bp-4h]@1 int v8; // [sp+110h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)this; if ( !v4 ) return 0; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v4 + 768))() || (*(int (**)(void))(**(_DWORD **)v3 + 836))() != *((_DWORD *)v3 + 1) ) { *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = -1; return 0; } if ( a3 ) { sprintf(&v6, "%s[%s]", a2, a3); (*(void (__stdcall **)(char *))(**(_DWORD **)v3 + 1924))(&v6); result = 1; } else { (*(void (__stdcall **)(int))(**(_DWORD **)v3 + 1924))(a2); result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005D35D0) -------------------------------------------------------- int __cdecl sub_5D35D0(int a1) { signed int v1; // ST18_4@2 int v2; // eax@2 int v3; // esi@2 void *v4; // eax@4 int v5; // ebx@5 __int16 v6; // si@6 int v7; // eax@8 unsigned __int16 v8; // ax@9 if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); v3 = v2; if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v4 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2056))(v3); if ( v4 ) { v5 = (int)sub_5CF620(v4); if ( v5 ) { v6 = -1; if ( (signed int)sub_5F4640(a1, 2, 0) != -1 ) v6 = (signed int)sub_5F4640(a1, 2, 0); v7 = sub_5F48F0(a1, 3, 0); if ( v7 ) { v8 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v7); if ( v8 != -1 ) { if ( v6 == -1 ) { sub_5BE680(v5, v8); return 0; } sub_5BE4D0(v5, v6, v8); } } } } } } } return 0; } //----- (005D3710) -------------------------------------------------------- int __cdecl sub_5D3710(int a1) { int v1; // eax@1 int v2; // eax@2 void *v3; // edi@2 int v4; // eax@6 unsigned __int16 v5; // bx@7 signed int v6; // esi@8 int v7; // eax@8 int v8; // eax@8 int v9; // edi@8 int v10; // eax@11 int v11; // esi@11 void *v12; // eax@13 int v13; // esi@14 int i; // edi@15 int v15; // eax@17 int v17; // [sp+Ch] [bp-66Ch]@8 int v18; // [sp+10h] [bp-668h]@10 int v19; // [sp+14h] [bp-664h]@8 __int16 v20; // [sp+18h] [bp-660h]@4 char v21; // [sp+1Ch] [bp-65Ch]@8 unsigned int v22; // [sp+668h] [bp-10h]@1 int v23; // [sp+674h] [bp-4h]@8 int v24; // [sp+678h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 ) { if ( sub_462A60((void *)v2) ) { v20 = -1; if ( (signed int)sub_5F4640(a1, 2, 0) != -1 ) v20 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_5F48F0(a1, 3, 0); if ( v4 ) { v5 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v4); if ( v5 != -1 ) { v6 = (signed int)sub_5F4640(a1, 4, 0); sub_4C1110(&v21, 2, 0); v23 = 0; v7 = sub_462A60(v3); sub_549B60((void *)v7, (int)&v21, 0); v8 = sub_4C0DC0((int)&v21); v9 = v8; v17 = v8; v19 = v8; if ( v8 > v6 ) v19 = v6; v18 = 0; if ( v8 > 0 ) { do { v10 = sub_4C0DD0((int)&v21, v18); v11 = v10; if ( v10 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 768))(v10) != 1 ) { v12 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2056))(v11); if ( v12 ) { v13 = (int)sub_5CF620(v12); if ( v13 ) { for ( i = 0; i < v19; ++i ) { if ( v20 == -1 ) v15 = sub_5BE680(v13, v5); else v15 = sub_5BE4D0(v13, v20, v5); if ( !v15 ) break; } v9 = v17; } } } } ++v18; } while ( v18 < v9 ); } v23 = -1; sub_4C11C0(&v21); } } } } } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (005D3960) -------------------------------------------------------- int __cdecl sub_5D3960(int a1) { int v1; // eax@1 v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) sub_6390B0(&unk_86DDD8, (int)byte_6A492E, v1); return 0; } //----- (005D3990) -------------------------------------------------------- signed int __usercall sub_5D3990(int a1, int a2) { signed int result; // eax@2 int v3; // eax@3 int v4; // eax@4 void *v5; // esi@4 int v6; // eax@8 __int16 v7; // di@8 int v8; // eax@9 __int16 v9; // [sp+14h] [bp-8h]@3 if ( sub_5F41F0(a2, 1) && (v9 = (signed int)sub_5F4640(a2, 1, 0), (v3 = sub_54DE90(&unk_13253630, v9)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 3004))(v3, a1); v5 = (void *)v4; if ( v4 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 768))(v4) != 1 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1232))(v5) == 2 ) { v6 = sub_5F48F0(a2, 2, 0); v7 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v6); if ( v7 != -1 && (v8 = (signed int)sub_5F4640(a2, 3, 0)) != 0 && sub_526320(v5, v9, v7, v8, 0) ) { sub_5F4C80(a2, 1.0); result = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (005D3AA0) -------------------------------------------------------- bool __cdecl sub_5D3AA0(int a1, int a2) { return *(_DWORD *)(a1 + 4) < *(_DWORD *)(a2 + 4); } //----- (005D3AC0) -------------------------------------------------------- signed int __cdecl sub_5D3AC0(int a1) { signed int result; // eax@2 double v2; // st7@3 int v3; // eax@4 unsigned int v4; // eax@5 if ( sub_5F41F0(a1, 1) == 3 && (v2 = sub_5F4640(a1, 1, 0), (unsigned __int16)(signed int)v2 != -1) && (v3 = sub_54DE90(&unk_13253630, (signed int)v2)) != 0 && (v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3), v4 != -1) ) { sub_5F4C80(a1, (double)v4); result = 1; } else { result = 0; } return result; } //----- (005D3B60) -------------------------------------------------------- signed int __usercall sub_5D3B60(int a1, int a2) { signed int result; // eax@2 double v3; // st7@3 int v4; // esi@3 int v5; // edi@5 int v6; // eax@9 int v7; // edi@9 int v8; // eax@11 int v9; // eax@13 int v10; // [sp-8h] [bp-14h]@5 int v11; // [sp-4h] [bp-10h]@1 if ( sub_5F41F0(a2, 1) == 3 ) { v3 = sub_5F4640(a2, 1, 0); v4 = (unsigned __int16)(signed int)v3; if ( (_WORD)v4 == -1 ) { result = 0; } else { v10 = a1; v5 = sub_54DE90(&unk_13253630, (signed int)v3); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 1232))(v5, v10, v11) == 2 ) { v6 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BF50, 0); v7 = v6; if ( v6 ) { v8 = v6 + 161784; if ( v7 == -161784 ) { sub_639100(&unk_86DDD8, (int)"cPet_Unsummon : Get Player Pet Info Error", v4); result = 0; } else { v9 = *(_DWORD *)v8; if ( v9 == 5 || v9 == 6 ) { sub_4D1950(v7, 7); if ( sub_4D1E70(v7) ) { sub_5F4ED0(a2, 1); result = 1; } else { sub_639100(&unk_86DDD8, (int)"cPet_Unsummon : Unsummon pet fail", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_Unsummon : Pet is not summoned", v4); result = 0; } } } else { sub_639100(&unk_86DDD8, (int)"cPet_Unsummon : Player Type Casting Error", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_Unsummon : Not master Handle", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_Unsummon : Error get master", v4); result = 0; } } } else { result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005D3CE0) -------------------------------------------------------- signed int __cdecl sub_5D3CE0(int a1) { signed int result; // eax@2 int v2; // edi@5 int v3; // ebx@5 char v4; // [sp+18h] [bp-2Ch]@5 unsigned int v5; // [sp+24h] [bp-20h]@5 unsigned int v6; // [sp+28h] [bp-1Ch]@5 __int64 v7; // [sp+2Ch] [bp-18h]@5 int v8; // [sp+40h] [bp-4h]@5 if ( sub_5F41F0(a1, 1) != 3 || sub_5F41F0(a1, 2) != 3 || sub_5F41F0(a1, 3) != 3 ) { result = 0; } else { v2 = (signed __int64)sub_5F4640(a1, 1, 0); v3 = (signed __int64)sub_5F4640(a1, 2, 0); v7 = (signed __int64)sub_5F4640(a1, 3, 0); sub_4B0660((int)&v4, v2, v3, v7); v8 = 0; sub_4B0680((int)&v4, (int)&v5); sub_5F4C80(a1, (double)v5); sub_5F4C80(a1, (double)v6); v8 = -1; nullsub_2(&v4); result = 2; } return result; } //----- (005D3E40) -------------------------------------------------------- signed int __cdecl sub_5D3E40(signed int a1) { signed int result; // eax@2 double v2; // st7@3 int v3; // eax@4 int v4; // esi@4 if ( sub_5F41F0(a1, 1) != 3 || (v2 = sub_5F4640(a1, 1, 0), (unsigned __int16)(signed int)v2 == -1) ) { result = 0; } else { v3 = sub_54DE90(&unk_13253630, (signed int)v2); v4 = v3; if ( v3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { switch ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1156))(v4) ) { case 0u: sub_5F4D80(a1, "linking"); result = 1; break; case 1u: sub_5F4D80(a1, "normal"); result = 1; break; case 2u: sub_5F4D80(a1, "fight"); result = 1; break; case 3u: sub_5F4D80(a1, "corpse"); result = 1; break; case 4u: sub_5F4D80(a1, "house"); result = 1; break; case 5u: sub_5F4D80(a1, "booth"); result = 1; break; case 6u: sub_5F4D80(a1, "riding"); result = 1; break; case 7u: sub_5F4D80(a1, "logoutwait"); result = 1; break; default: goto LABEL_15; } } else { LABEL_15: result = 0; } } return result; } //----- (005D3FD0) -------------------------------------------------------- int __cdecl sub_5D3FD0(int a1) { signed int v1; // ST18_4@2 int v2; // eax@2 int v3; // esi@2 int v4; // eax@6 unsigned __int16 v5; // ax@7 int v6; // edi@7 int v7; // eax@7 if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); v3 = v2; if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { if ( *(_DWORD *)(v3 + 122) ) { v4 = sub_5F48F0(a1, 2, 0); if ( v4 ) { v5 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v4); v6 = v5; v7 = sub_418CB0((int)&dword_14D20890, v5); if ( v7 ) { if ( *(_DWORD *)v7 && *(_DWORD *)(v7 + 4) && (signed int)sub_5F4640(a1, 3, 0) > 0 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 2228))(v3, v6); } } } } } } } return 0; } // 14D20890: using guessed type int dword_14D20890; //----- (005D40C0) -------------------------------------------------------- int __cdecl sub_5D40C0(int a1) { int v1; // eax@3 int v2; // esi@4 int v3; // eax@5 if ( sub_5F41F0(a1, 1) ) { if ( sub_5F41F0(a1, 2) ) { v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); if ( v2 ) { v3 = sub_5F48F0(a1, 2, 0); sub_507950(*(void **)(v2 + 68), (const char *)v3, v2); sub_49D420((void *)(*(_DWORD *)(v2 + 20) + 1072), *(_DWORD *)(v2 + 20)); } } } } return 0; } //----- (005D4140) -------------------------------------------------------- int __cdecl sub_5D4140(int a1) { signed int v1; // ST14_4@5 int v2; // eax@5 int v3; // eax@6 int v4; // esi@6 __int16 v5; // di@9 if ( sub_5F41F0(a1, 1) ) { if ( sub_5F41F0(a1, 2) ) { if ( sub_5F41F0(a1, 1) == 3 ) { if ( sub_5F41F0(a1, 2) == 3 ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3004))(v2); v4 = v3; if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) == 2 ) { v5 = (signed int)sub_5F4640(a1, 2, 0); if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1876))(v4) == v5 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2456))(v4, 0); } } } } } } } } return 0; } //----- (005D4280) -------------------------------------------------------- bool __thiscall sub_5D4280(int this, const char *a2) { int v2; // esi@1 int v3; // eax@3 v2 = this; if ( *(_DWORD *)(this + 4) ) sub_609230(*(_DWORD *)(this + 4)); *(_DWORD *)(v2 + 4) = 0; v3 = sub_5F7710(); *(_DWORD *)(v2 + 4) = v3; sub_600630(v3); return (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 4))(v2) && !sub_5F6D20(*(_DWORD *)(v2 + 4), a2, 0) && !sub_5F58D0(*(_DWORD *)(v2 + 4), 0, 0, 0, 0, 0); } //----- (005D4300) -------------------------------------------------------- bool __thiscall sub_5D4300(int this, int a2) { int v2; // esi@1 int v3; // eax@3 v2 = this; if ( *(_DWORD *)(this + 4) ) sub_609230(*(_DWORD *)(this + 4)); *(_DWORD *)(v2 + 4) = 0; v3 = sub_5F7710(); *(_DWORD *)(v2 + 4) = v3; sub_600630(v3); return !sub_5F7020(*(_DWORD *)(v2 + 4), a2) && !sub_5F58D0(*(_DWORD *)(v2 + 4), 0, 0, 0, 0, 0) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 4))(v2); } //----- (005D4380) -------------------------------------------------------- void __thiscall sub_5D4380(int this, int a2) { int v2; // esi@1 bool v3; // zf@1 v2 = this; v3 = *(_DWORD *)(this + 4) == 1; *(_DWORD *)(this + 8) = -1; if ( v3 ) { if ( sub_5F4310(a2, -1) ) *(_DWORD *)(v2 + 8) = (signed int)sub_5F4640(a2, -1, 0); sub_5F3E70(a2, -2); } } //----- (005D43D0) -------------------------------------------------------- int __thiscall sub_5D43D0(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6FB13C; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 1; return result; } // 6FB13C: using guessed type int (__thiscall *off_6FB13C)(void *, char); //----- (005D43F0) -------------------------------------------------------- signed int __thiscall sub_5D43F0(int this, signed int a2) { int v2; // ecx@1 int v3; // eax@2 _BYTE *v4; // eax@2 signed int result; // eax@2 v2 = *(_DWORD *)(this + 12); if ( v2 ) { v3 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v3; v4 = &byte_85A2C0[256 * v3]; *(_DWORD *)v4 = *(_DWORD *)v2; *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 8); v4[12] = 0; sub_5F4D80(a2, v4); result = 1; } else { sub_5F4D80(a2, byte_6A492E); result = 1; } return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4460) -------------------------------------------------------- int __thiscall sub_5D4460(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB154; *(_DWORD *)(this + 12) = a2; return result; } // 6FB154: using guessed type int (__thiscall *off_6FB154)(void *, char); //----- (005D4480) -------------------------------------------------------- signed int __thiscall sub_5D4480(int this, signed int a2) { sub_5F4D80(a2, *(const void **)(this + 12)); return 1; } //----- (005D44A0) -------------------------------------------------------- int __thiscall sub_5D44A0(int this, __int16 a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)this = &off_6FB16C; *(_WORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 4) = 1; return result; } // 6FB16C: using guessed type int (__thiscall *off_6FB16C)(void *, char); //----- (005D44D0) -------------------------------------------------------- signed int __thiscall sub_5D44D0(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // eax@3 _BYTE *v5; // eax@3 const void *v7; // [sp+4h] [bp-10h]@2 v2 = this; sub_5F4C80(a2, (double)*(_WORD *)(this + 12)); v3 = *(_DWORD *)(v2 + 16); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v7 = v5; } else { v7 = byte_6A492E; } sub_5F4D80(a2, v7); return 2; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4550) -------------------------------------------------------- int __thiscall sub_5D4550(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB184; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 20) = a4; return result; } // 6FB184: using guessed type int (__thiscall *off_6FB184)(void *, char); //----- (005D4580) -------------------------------------------------------- void __thiscall sub_5D4580(void *this) { *(_DWORD *)this = &off_6FB124; } // 6FB124: using guessed type int (__thiscall *off_6FB124)(void *, char); //----- (005D4590) -------------------------------------------------------- signed int __thiscall sub_5D4590(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@3 signed int result; // eax@3 unsigned int v6; // [sp+1Ch] [bp+8h]@3 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 && *(_DWORD *)(this + 16) ) { v4 = a2; sub_5F4C80(a2, (double)*(_WORD *)(v3 + 4)); sub_5F4C80(a2, (double)*(_WORD *)(*(_DWORD *)(v2 + 16) + 4)); v6 = (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 836))(); sub_5F4C80(v4, (double)v6); sub_5F4D80(v4, *(const void **)(v2 + 20)); result = 4; } else { sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); sub_5F4D80(a2, byte_6A492E); result = 4; } return result; } //----- (005D4670) -------------------------------------------------------- int __thiscall sub_5D4670(int this, int a2, int a3, __int16 a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB19C; *(_DWORD *)(this + 16) = a3; *(_WORD *)(this + 20) = a4; return result; } // 6FB19C: using guessed type int (__thiscall *off_6FB19C)(void *, char); //----- (005D46A0) -------------------------------------------------------- signed int __thiscall sub_5D46A0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@3 signed int result; // eax@3 unsigned int v6; // [sp+1Ch] [bp+8h]@3 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 && *(_DWORD *)(this + 16) ) { v4 = a2; sub_5F4C80(a2, (double)*(_WORD *)(v3 + 4)); sub_5F4C80(a2, (double)*(_WORD *)(*(_DWORD *)(v2 + 16) + 4)); v6 = (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 836))(); sub_5F4C80(v4, (double)v6); sub_5F4C80(v4, (double)*(_WORD *)(v2 + 20)); result = 4; } else { sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); result = 4; } return result; } //----- (005D47A0) -------------------------------------------------------- int __thiscall sub_5D47A0(int this, int a2, int a3, char a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB1B4; *(_DWORD *)(this + 16) = a3; *(_BYTE *)(this + 20) = a4; return result; } // 6FB1B4: using guessed type int (__thiscall *off_6FB1B4)(void *, char); //----- (005D47D0) -------------------------------------------------------- signed int __thiscall sub_5D47D0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@3 signed int result; // eax@3 unsigned int v6; // [sp+1Ch] [bp+8h]@3 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 && *(_DWORD *)(this + 16) ) { v4 = a2; sub_5F4C80(a2, (double)*(_WORD *)(v3 + 4)); sub_5F4C80(a2, (double)*(_WORD *)(*(_DWORD *)(v2 + 16) + 4)); v6 = (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 836))(); sub_5F4C80(v4, (double)v6); sub_5F4C80(v4, (double)*(_BYTE *)(v2 + 20)); result = 4; } else { sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); sub_5F4C80(a2, -1.0); result = 4; } return result; } //----- (005D48D0) -------------------------------------------------------- int __thiscall sub_5D48D0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB1CC; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; return result; } // 6FB1CC: using guessed type int (__thiscall *off_6FB1CC)(void *, char); //----- (005D4900) -------------------------------------------------------- int __thiscall sub_5D4900(int this, int a2, int a3, __int16 a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB1E4; *(_DWORD *)(this + 16) = a3; *(_WORD *)(this + 20) = a4; return result; } // 6FB1E4: using guessed type int (__thiscall *off_6FB1E4)(void *, char); //----- (005D4930) -------------------------------------------------------- signed int __thiscall sub_5D4930(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 double v7; // st7@5 const void *v9; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v9 = v5; } else { v9 = byte_6A492E; } sub_5F4D80(a2, v9); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) v7 = (double)*(_WORD *)(v6 + 4); else v7 = -1.0; sub_5F4C80(a2, v7); sub_5F4C80(a2, (double)*(_WORD *)(v2 + 20)); return 3; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D49D0) -------------------------------------------------------- int __thiscall sub_5D49D0(int this, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 20) = a4; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB1FC; *(_DWORD *)(this + 24) = a5; *(_DWORD *)(this + 28) = a6; return result; } // 6FB1FC: using guessed type int (__thiscall *off_6FB1FC)(void *, char); //----- (005D4A10) -------------------------------------------------------- signed int __thiscall sub_5D4A10(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 double v7; // st7@5 int v8; // edi@7 double v9; // st7@8 const void *v11; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v11 = v5; } else { v11 = byte_6A492E; } sub_5F4D80(a2, v11); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) v7 = (double)*(_WORD *)(v6 + 4); else v7 = -1.0; sub_5F4C80(a2, v7); sub_5F4C80(a2, (double)*(unsigned int *)(v2 + 20)); sub_5F4C80(a2, (double)*(unsigned int *)(v2 + 24)); v8 = *(_DWORD *)(v2 + 28); if ( v8 ) v9 = (double)*(_WORD *)(v8 + 4); else v9 = -1.0; sub_5F4C80(a2, v9); return 5; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4B00) -------------------------------------------------------- int __thiscall sub_5D4B00(int this, int a2, int a3, char a4, char a5) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB214; *(_BYTE *)(this + 20) = a4; *(_BYTE *)(this + 21) = a5; return result; } // 6FB214: using guessed type int (__thiscall *off_6FB214)(void *, char); //----- (005D4B30) -------------------------------------------------------- signed int __thiscall sub_5D4B30(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 double v7; // st7@5 const void *v9; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v9 = v5; } else { v9 = byte_6A492E; } sub_5F4D80(a2, v9); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) v7 = (double)*(_WORD *)(v6 + 4); else v7 = -1.0; sub_5F4C80(a2, v7); sub_5F4C80(a2, (double)*(_BYTE *)(v2 + 20)); sub_5F4C80(a2, (double)*(_BYTE *)(v2 + 21)); return 4; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4BF0) -------------------------------------------------------- int __thiscall sub_5D4BF0(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB22C; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; return result; } // 6FB22C: using guessed type int (__thiscall *off_6FB22C)(void *, char); //----- (005D4C20) -------------------------------------------------------- int __thiscall sub_5D4C20(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB244; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 20) = a4; return result; } // 6FB244: using guessed type int (__thiscall *off_6FB244)(void *, char); //----- (005D4C50) -------------------------------------------------------- signed int __thiscall sub_5D4C50(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 double v7; // st7@5 int v8; // eax@7 double v9; // st7@8 const void *v11; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v11 = v5; } else { v11 = byte_6A492E; } sub_5F4D80(a2, v11); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) v7 = (double)*(_WORD *)(v6 + 4); else v7 = -1.0; sub_5F4C80(a2, v7); v8 = *(_DWORD *)(v2 + 20); if ( v8 ) v9 = (double)*(_WORD *)(v8 + 4); else v9 = -1.0; sub_5F4C80(a2, v9); return 3; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4D00) -------------------------------------------------------- int __thiscall sub_5D4D00(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB25C; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 20) = a4; return result; } // 6FB25C: using guessed type int (__thiscall *off_6FB25C)(void *, char); //----- (005D4D30) -------------------------------------------------------- signed int __thiscall sub_5D4D30(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 double v7; // st7@5 int v8; // eax@7 double v9; // st7@8 const void *v11; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v11 = v5; } else { v11 = byte_6A492E; } sub_5F4D80(a2, v11); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) v7 = (double)*(_WORD *)(v6 + 4); else v7 = -1.0; sub_5F4C80(a2, v7); v8 = *(_DWORD *)(v2 + 20); if ( v8 ) { sub_5F4C80(a2, (double)*(_WORD *)(v8 + 4)); v9 = (double)(unsigned int)(*(int (**)(void))(**(_DWORD **)(v2 + 20) + 836))(); } else { sub_5F4C80(a2, -1.0); v9 = -1.0; } sub_5F4C80(a2, v9); return 4; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4E20) -------------------------------------------------------- int __thiscall sub_5D4E20(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB274; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 16) = a3; return result; } // 6FB274: using guessed type int (__thiscall *off_6FB274)(void *, char); //----- (005D4E50) -------------------------------------------------------- signed int __thiscall sub_5D4E50(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 double v7; // st7@5 const void *v9; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v9 = v5; } else { v9 = byte_6A492E; } sub_5F4D80(a2, v9); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) v7 = (double)*(_WORD *)(v6 + 4); else v7 = -1.0; sub_5F4C80(a2, v7); return 2; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4EE0) -------------------------------------------------------- int __thiscall sub_5D4EE0(int this, int a2, int a3, int a4) { int result; // eax@1 result = this; *(_DWORD *)(this + 12) = a2; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB28C; *(_DWORD *)(this + 16) = a3; *(_DWORD *)(this + 20) = a4; return result; } // 6FB28C: using guessed type int (__thiscall *off_6FB28C)(void *, char); //----- (005D4F10) -------------------------------------------------------- signed int __thiscall sub_5D4F10(int this, signed int a2) { int v2; // edi@1 int v3; // ecx@1 int v4; // eax@2 _BYTE *v5; // eax@2 int v6; // eax@4 const void *v7; // eax@5 int v8; // edi@7 double v9; // st7@8 const void *v11; // [sp+4h] [bp-Ch]@2 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { v4 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v4; v5 = &byte_85A2C0[256 * v4]; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v11 = v5; } else { v11 = byte_6A492E; } sub_5F4D80(a2, v11); v6 = *(_DWORD *)(v2 + 16); if ( v6 ) { sub_5F4C80(a2, (double)*(_WORD *)(v6 + 4)); v7 = (const void *)(*(int (**)(void))(**(_DWORD **)(v2 + 16) + 2196))(); sub_5F4D80(a2, v7); } else { sub_5F4C80(a2, -1.0); sub_5F4D80(a2, byte_6A492E); } v8 = *(_DWORD *)(v2 + 20); if ( v8 ) v9 = (double)*(_WORD *)(v8 + 4); else v9 = -1.0; sub_5F4C80(a2, v9); return 4; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (005D4FF0) -------------------------------------------------------- bool __thiscall sub_5D4FF0(int this, const void *a2, int a3) { int v3; // edi@1 int v4; // ebx@1 int v5; // eax@1 int v6; // eax@1 bool v7; // bl@1 v3 = this; sub_5F4F40(*(_DWORD *)(this + 4), a2); v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 4))(a3, *(_DWORD *)(v3 + 4)); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a3 + 12))(a3); v6 = sub_5F58D0(*(_DWORD *)(v3 + 4), v4, v5, 0, 0, 0); v7 = v6 == 0; if ( !v6 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a3 + 8))(a3, *(_DWORD *)(v3 + 4)); return v7; } //----- (005D5060) -------------------------------------------------------- int __cdecl sub_5D5060(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)) { int v5; // edi@1 int i; // esi@1 int v7; // ebx@2 int result; // eax@4 v5 = a2; for ( i = (a2 - 1) / 2; a3 < v5; i = (i - 1) / 2 ) { v7 = a1 + 8 * i; if ( !(unsigned __int8)a5(a1 + 8 * i, a4) ) break; *(_DWORD *)(a1 + 8 * v5) = *(_DWORD *)v7; *(_DWORD *)(a1 + 8 * v5 + 4) = *(_DWORD *)(v7 + 4); v5 = i; } *(_DWORD *)(a1 + 8 * v5) = *(_DWORD *)a4; result = *(_DWORD *)(a4 + 4); *(_DWORD *)(a1 + 8 * v5 + 4) = result; return result; } //----- (005D50D0) -------------------------------------------------------- char __thiscall sub_5D50D0(int this) { int v1; // esi@1 v1 = this; sub_5F4E40(*(_DWORD *)(this + 4), (int)sub_5D3230, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "vmflsxm"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D32A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "fpwltmxmcheck"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D33D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "dhsmfskfWk"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5131E0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_service_multisocket"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5A8440, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_service_acceptor"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB410, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_service_mainthread"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5A8480, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_service_iocp"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5A9490, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_service_stackchecker"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AA640, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_service_certification"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ABEF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_moon"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5B3F10, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_full"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ABC30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_star"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB600, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_earth"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5B3E70, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_house"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AC180, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_yellow"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5B3FD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_open"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ACC90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_sink"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB5A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_black"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB630, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_wide"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AC200, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_sky"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5B65B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_long"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB970, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_home"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5B4170, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_sleep"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AE040, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_tough"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB860, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "zs_start_sun"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB520, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "ekfflrlthreh"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5AB560, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "rjerlthreh"); return 1; } // 5ABC30: using guessed type int sub_5ABC30(); // 5ABEF0: using guessed type int sub_5ABEF0(); // 5AC180: using guessed type int sub_5AC180(); // 5B3E70: using guessed type int sub_5B3E70(); // 5B3F10: using guessed type int sub_5B3F10(); // 5B3FD0: using guessed type int sub_5B3FD0(); // 5B4170: using guessed type int sub_5B4170(); //----- (005D5420) -------------------------------------------------------- int __thiscall sub_5D5420(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = *(_DWORD *)(this + 4); *(_DWORD *)this = &off_6FAFD4; if ( result ) result = sub_609230(result); *(_DWORD *)(v1 + 4) = 0; return result; } // 6FAFD4: using guessed type int (__thiscall *off_6FAFD4)(void *, char); //----- (005D5450) -------------------------------------------------------- int __thiscall sub_5D5450(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = &off_6FB46C; return result; } // 6FB46C: using guessed type int (__thiscall *off_6FB46C)(void *, char); //----- (005D5460) -------------------------------------------------------- char __cdecl sub_5D5460(int a1, __int16 a2, void *a3, int a4) { int v4; // ST04_4@4 int v5; // eax@4 int v6; // eax@5 int v7; // esi@5 int v8; // eax@10 char v10; // [sp+10h] [bp-1Ch]@4 int v11; // [sp+1Ch] [bp-10h]@1 int v12; // [sp+28h] [bp-4h]@1 v11 = (int)"cLuaBroadcast"; sub_4675D0((int)&unk_D020420, (int)"cLuaBroadcast"); dword_7508B8[dword_750CB8] = (int)"cLuaBroadcast"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( a1 && a3 ) { if ( a2 == -1 ) { sub_4287B0(&v10, a3, a4); v4 = *(_DWORD *)(a1 + 102); LOBYTE(v12) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a1, v5, v4, 0, 0, (int)&v10, 1, 65535); LOBYTE(v12) = 0; sub_428A70(&v10); LABEL_11: --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cLuaBroadcast"); return 1; } v6 = sub_54DE90(&unk_13253630, a2); v7 = v6; if ( v6 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1156))(v7) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 768))(v7) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, int, void *))(*(_DWORD *)v8 + 12))(v8, v7, a3); goto LABEL_11; } --dword_750CB8; } else { --dword_750CB8; } sub_467660((int)&unk_D020420, (int)"cLuaBroadcast"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D55F0) -------------------------------------------------------- signed int __cdecl sub_5D55F0(int a1) { int v1; // eax@1 signed int result; // eax@2 double v3; // st7@3 sub_4675D0((int)&unk_D020420, (int)"tonumber"); dword_7508B8[dword_750CB8] = (int)"tonumber"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v3 = atof((const char *)v1); sub_5F4C80(a1, v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"tonumber"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"tonumber"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D56D0) -------------------------------------------------------- int __cdecl sub_5D56D0(int a1) { int v1; // eax@1 char *v2; // edx@2 char v3; // cl@3 sub_4675D0((int)&unk_D020420, (int)"cExecCheck"); dword_7508B8[dword_750CB8] = (int)"cExecCheck"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = (char *)&unk_14D409E0 - v1; do { v3 = *(_BYTE *)v1; v2[v1] = *(_BYTE *)v1; ++v1; } while ( v3 ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cExecCheck"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D5780) -------------------------------------------------------- int __cdecl sub_5D5780(int a1) { int v1; // eax@1 char v3; // [sp+8h] [bp-110h]@2 unsigned int v4; // [sp+108h] [bp-10h]@1 int v5; // [sp+114h] [bp-4h]@1 int v6; // [sp+118h] [bp+0h]@1 v4 = (unsigned int)&v6 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cDebugLog"); dword_7508B8[dword_750CB8] = (int)"cDebugLog"; dword_750AB8[dword_750CB8++] = -1; v5 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { sprintf(&v3, "QuestEvent : %s", v1); sub_5D34F0(&unk_87B218, (int)&v3, 0); } --dword_750CB8; v5 = -1; sub_467660((int)&unk_D020420, (int)"cDebugLog"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005D5870) -------------------------------------------------------- signed int __cdecl sub_5D5870(int a1) { int v1; // eax@1 int v2; // eax@2 int v3; // eax@4 unsigned __int16 v4; // ax@5 signed int v5; // ebx@6 int v6; // eax@6 int v7; // esi@6 int v8; // eax@8 int v9; // eax@10 int v11; // [sp+40h] [bp-3Ch]@7 int v12; // [sp+58h] [bp-24h]@2 signed int v13; // [sp+5Ch] [bp-20h]@6 signed int v14; // [sp+60h] [bp-1Ch]@6 int v15; // [sp+64h] [bp-18h]@4 int v16; // [sp+68h] [bp-14h]@5 int v17; // [sp+6Ch] [bp-10h]@6 int v18; // [sp+78h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cMobRegen_XY"); dword_7508B8[dword_750CB8] = (int)"cMobRegen_XY"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v2 = sub_465D80((const char *)v1), (v12 = v2) == 0) || !sub_462A60((void *)v2) || (v3 = sub_5F48F0(a1, 2, 0), (v15 = v3) == 0) || (v4 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v3), v16 = v4, v4 == -1) ) { v11 = (int)"cMobRegen_XY"; v18 = -1; goto LABEL_14; } v5 = (signed int)sub_5F4640(a1, 3, 0); v13 = (signed int)sub_5F4640(a1, 4, 0); v14 = (signed int)sub_5F4640(a1, 5, 0); v6 = sub_54DF90(&unk_13253630, (int)&v17, 5); v7 = v6; if ( !v6 ) { sub_6390B0(&unk_86DDD8, (int)"cMobRegen_XY : som_AllocObject fail", v15); v18 = -1; v11 = (int)"cMobRegen_XY"; LABEL_14: --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 0; } v8 = (*(int (__thiscall **)(int, int, signed int, signed int, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 1760))( v6, v12, v5, v13, v14, v17, v16, 0, -1, 0, 0, -1, 0, 0, 0); if ( v8 ) { sub_639100(&unk_86DDD8, (int)"cMobRegen_XY : map regen fail", v8); sub_555DF0(&unk_13253630, v17, 0, 22); v18 = -1; v11 = (int)"cMobRegen_XY"; goto LABEL_14; } v9 = sub_418D40((int)&unk_14D159B0, v16); if ( v9 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v7 + 2748))(v7, *(_DWORD *)(v9 + 36)); sub_5F4C80(a1, (double)(unsigned __int16)v17); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_XY"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D5AC0) -------------------------------------------------------- signed int __cdecl sub_5D5AC0(int a1) { int v1; // edi@1 __int16 v3; // si@5 unsigned __int16 v4; // ax@5 int v5; // ebx@5 int v6; // eax@6 int v7; // eax@8 int v8; // eax@8 int v9; // esi@8 int v10; // eax@11 int v11; // eax@13 int v12; // [sp+54h] [bp-24h]@8 int v13; // [sp+58h] [bp-20h]@8 int v14; // [sp+60h] [bp-18h]@7 int v15; // [sp+64h] [bp-14h]@8 int v16; // [sp+74h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cMobRegen_Obj"); dword_7508B8[dword_750CB8] = (int)"cMobRegen_Obj"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || !sub_5F41F0(a1, 2) ) { v16 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMobRegen_Obj"); return 0; } v3 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v1); v5 = v4; if ( v4 == -1 || (v6 = sub_54DE90(&unk_13253630, v3)) == 0 || (v14 = *(_DWORD *)(v6 + 122)) == 0 ) { LABEL_10: v16 = -1; goto LABEL_3; } v7 = *(_DWORD *)(v6 + 102); v12 = *(_DWORD *)v7; v13 = *(_DWORD *)(v7 + 4); v8 = sub_54DF90(&unk_13253630, (int)&v15, 5); v9 = v8; if ( !v8 ) { sub_6390B0(&unk_86DDD8, (int)&unk_6FB52C, v1); goto LABEL_10; } v10 = (*(int (__thiscall **)(int, int, int, int, _DWORD, int, int, _DWORD, signed int, _DWORD, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 1760))( v8, v14, v12, v13, **(_BYTE **)(v8 + 106), v15, v5, 0, -1, 0, 0, -1, 0, 0, 0); if ( v10 ) { sub_639100(&unk_86DDD8, (int)"cMobRegen_Obj : map regen fail", v10); sub_555DF0(&unk_13253630, v15, 0, 22); v16 = -1; goto LABEL_3; } v11 = sub_418D40((int)&unk_14D159B0, v5); if ( v11 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 2748))(v9, *(_DWORD *)(v11 + 36)); sub_5F4C80(a1, (double)(unsigned __int16)v15); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Obj"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D5CF0) -------------------------------------------------------- signed int __cdecl sub_5D5CF0(int a1) { double v1; // st7@3 __int16 v2; // di@5 int v3; // edi@5 double v4; // st7@6 int v5; // eax@8 double v6; // ST48_8@10 double v7; // ST40_8@10 double v8; // ST50_8@10 double v9; // st7@10 int v11; // [sp+4h] [bp-3Ch]@7 __int16 v12; // [sp+2Ch] [bp-14h]@5 sub_4675D0((int)&unk_D020420, (int)"cDistanceSquar"); dword_7508B8[dword_750CB8] = (int)"cDistanceSquar"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F4310(a1, 3) ) { v6 = sub_5F4640(a1, 1, 0); v7 = sub_5F4640(a1, 2, 0); v8 = sub_5F4640(a1, 3, 0); v9 = sub_5F4640(a1, 4, 0); v1 = (v7 - v9) * (v7 - v9) + (v6 - v8) * (v6 - v8); goto LABEL_11; } if ( !sub_5F41F0(a1, 1) || !sub_5F41F0(a1, 2) ) { v1 = 99999999.0; LABEL_11: sub_5F4C80(a1, v1); v11 = (int)"cDistanceSquar"; goto LABEL_12; } v2 = (signed int)sub_5F4640(a1, 1, 0); v12 = (signed int)sub_5F4640(a1, 2, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v5 = sub_54DE90(&unk_13253630, v12)) != 0 ) v4 = (double)(unsigned int)sub_402710(v5, v3); else v4 = 99999999.0; sub_5F4C80(a1, v4); v11 = (int)"cDistanceSquar"; LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D5ED0) -------------------------------------------------------- signed int __cdecl sub_5D5ED0(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"cPlayerExist"); dword_7508B8[dword_750CB8] = (int)"cPlayerExist"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cPlayerExist"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cPlayerExist"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D6010) -------------------------------------------------------- int __cdecl sub_5D6010(int a1) { signed int v1; // ST1C_4@2 int v2; // eax@2 sub_4675D0((int)&unk_D020420, (int)"cNPCVanish"); dword_7508B8[dword_750CB8] = (int)"cNPCVanish"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1012))(v2); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCVanish"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D6100) -------------------------------------------------------- signed int __cdecl sub_5D6100(int a1) { unsigned int v1; // edx@1 sub_4675D0((int)&unk_D020420, (int)"cCurSec"); dword_7508B8[dword_750CB8] = (int)"cCurSec"; v1 = dword_14D129E8 / 0xAu; dword_750AB8[dword_750CB8++] = -1; sub_5F4C80(a1, (double)v1); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cCurSec"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005D6190) -------------------------------------------------------- signed int __cdecl sub_5D6190(int a1) { double v1; // st7@1 sub_4675D0((int)&unk_D020420, (int)"cCurrentSecond"); v1 = (double)(unsigned int)dword_14D129E8; dword_7508B8[dword_750CB8] = (int)"cCurrentSecond"; dword_750AB8[dword_750CB8++] = -1; sub_5F4C80(a1, v1 / 10.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cCurrentSecond"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005D6220) -------------------------------------------------------- signed int __cdecl sub_5D6220(int a1) { int v1; // edi@1 int v2; // eax@3 void *v3; // edi@3 int v4; // eax@5 void *v5; // ecx@5 int v7; // [sp+1Ch] [bp-40h]@5 char *v8; // [sp+20h] [bp-3Ch]@2 char v9; // [sp+24h] [bp-38h]@5 unsigned int v10; // [sp+4Ch] [bp-10h]@1 int v11; // [sp+58h] [bp-4h]@1 int v12; // [sp+5Ch] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)&unk_6FB5B4); dword_7508B8[dword_750CB8] = (int)&unk_6FB5B4; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v8 = (char *)sub_5F48F0(a1, 2, 0)) == 0 || (v2 = sub_465D80((const char *)v1), (v3 = (void *)v2) == 0) || !sub_462A60((void *)v2) ) goto LABEL_8; sub_429740((int)&v9, v8, (int)&v7); LOBYTE(v11) = 1; v4 = sub_462A60(v3); v5 = &v9; if ( !v4 ) { LOBYTE(v11) = 0; LABEL_7: sub_427EB0(v5); LABEL_8: --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB5B4); return 0; } if ( sub_549B60((void *)v4, (int)&v9, 0) ) { LOBYTE(v11) = 0; v5 = &v9; goto LABEL_7; } v8 = (char *)(unsigned __int16)v7; sub_5F4C80(a1, (double)(unsigned __int16)v7); LOBYTE(v11) = 0; sub_427EB0(&v9); --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB5B4); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005D6390) -------------------------------------------------------- signed int __cdecl sub_5D6390(int a1) { __int16 v1; // di@1 int v2; // edi@2 _UNKNOWN *v3; // ST18_4@3 int v4; // ST14_4@3 int v5; // eax@3 char v7; // [sp+18h] [bp-34h]@3 int v8; // [sp+28h] [bp-24h]@1 __int64 v9; // [sp+2Ch] [bp-20h]@1 unsigned __int16 v10; // [sp+34h] [bp-18h]@3 unsigned __int16 v11; // [sp+38h] [bp-14h]@3 int v12; // [sp+48h] [bp-4h]@1 v8 = (int)"cGetQuestHero_NPC"; sub_4675D0((int)&unk_D020420, (int)"cGetQuestHero_NPC"); dword_7508B8[dword_750CB8] = (int)"cGetQuestHero_NPC"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v9 = (signed __int64)sub_5F4640(a1, 1, 0); v1 = (signed int)sub_5F4640(a1, 2, 0); HIDWORD(v9) = (signed int)sub_5F4640(a1, 3, 0); if ( !sub_5F41F0(a1, 2) || (v2 = sub_54DE90(&unk_13253630, v1)) == 0 ) goto LABEL_5; sub_429940(&v7, v9, (int)&v11, (int)&v10); v3 = (_UNKNOWN *)HIDWORD(v9); v4 = *(_DWORD *)(v2 + 102); LOBYTE(v12) = 1; v5 = sub_427BD0(&unk_13253E80); if ( sub_549E00((void *)v2, v5, v4, v3, 0, (int)&v7, 0, 65535) ) { LOBYTE(v12) = 0; sub_427EB0(&v7); LABEL_5: --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cGetQuestHero_NPC"); return 0; } HIDWORD(v9) = v11; sub_5F4C80(a1, (double)v11); HIDWORD(v9) = v10; sub_5F4C80(a1, (double)v10); LOBYTE(v12) = 0; sub_427EB0(&v7); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cGetQuestHero_NPC"); return 2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D6570) -------------------------------------------------------- int __cdecl sub_5D6570(int a1) { int v1; // eax@1 int v2; // eax@2 int v3; // eax@4 __int16 v4; // ax@5 sub_4675D0((int)&unk_D020420, (int)"cGetQuestHero_ItemUse"); dword_7508B8[dword_750CB8] = (int)"cGetQuestHero_ItemUse"; dword_750AB8[dword_750CB8++] = -1; sub_5F4640(a1, 1, 0); v1 = sub_5F48F0(a1, 2, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); if ( v2 ) { if ( sub_462A60((void *)v2) ) { v3 = sub_5F48F0(a1, 3, 0); if ( v3 ) v4 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v3); } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetQuestHero_ItemUse"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005D6670) -------------------------------------------------------- signed int __cdecl sub_5D6670(int a1) { int v1; // ebx@1 signed int v2; // ST20_4@3 int v3; // edi@3 int v4; // eax@5 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cGetPlayerName"); dword_7508B8[dword_750CB8] = (int)"cGetPlayerName"; dword_750AB8[dword_750CB8++] = -1; v1 = (int)byte_6A492E; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1388))(v3); v1 = sub_418B40((int)byte_85A2C0, v4); } sub_5F4D80(a1, (const void *)v1); v6 = (int)"cGetPlayerName"; } else { sub_5F4D80(a1, byte_6A492E); v6 = (int)"cGetPlayerName"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D67A0) -------------------------------------------------------- int __cdecl sub_5D67A0(int a1) { signed int v1; // ST24_4@4 int v2; // edi@4 signed int v3; // ST24_4@5 int v4; // ebx@5 double v5; // st7@6 int v7; // [sp-4h] [bp-30h]@2 signed int v8; // [sp-4h] [bp-30h]@7 sub_4675D0((int)&unk_D020420, (int)"cAggroSet"); dword_7508B8[dword_750CB8] = (int)"cAggroSet"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && sub_5F41F0(a1, 2) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_54DE90(&unk_13253630, v3); if ( v4 ) { v5 = sub_5F4640(a1, 3, 0); if ( (unsigned int)(signed __int64)v5 ) v8 = (signed __int64)v5; else v8 = 1; (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 1792))(v2, v4, v8); } } v7 = (int)"cAggroSet"; } else { v7 = (int)"cAggroSet"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D6920) -------------------------------------------------------- signed int __cdecl sub_5D6920(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"cIsObjectDead"); dword_7508B8[dword_750CB8] = (int)"cIsObjectDead"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) || (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsObjectDead"); result = 0; } else { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsObjectDead"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D6A60) -------------------------------------------------------- signed int __cdecl sub_5D6A60(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 unsigned int v3; // ST20_4@4 unsigned int v4; // ST1C_4@4 int v6; // [sp+4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cObjectHP"); dword_7508B8[dword_750CB8] = (int)"cObjectHP"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1256))(v2); sub_5F4C80(a1, (double)v3); v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1264))(v2); sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectHP"); return 2; } v6 = (int)"cObjectHP"; } else { v6 = (int)"cObjectHP"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D6BD0) -------------------------------------------------------- signed int __cdecl sub_5D6BD0(int a1) { signed int v2; // ST58_4@3 int v3; // esi@3 int v4; // eax@5 int v5; // ebx@6 signed int v6; // ST54_4@11 int v7; // eax@11 int v8; // ST60_4@14 int v9; // [sp+50h] [bp-24h]@8 int v10; // [sp+58h] [bp-1Ch]@9 int v11; // [sp+5Ch] [bp-18h]@8 signed int v12; // [sp+60h] [bp-14h]@8 sub_4675D0((int)&unk_D020420, (int)"cSetAbstate"); dword_7508B8[dword_750CB8] = (int)"cSetAbstate"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetAbstate"); return 0; } v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 || (v4 = sub_5F48F0(a1, 2, 0)) == 0 || (v5 = sub_639670(&byte_878354, v4), v5 == -1) || (v12 = (signed int)sub_5F4640(a1, 3, 0), v11 = (signed int)sub_5F4640(a1, 4, 0), (v9 = sub_401310(&unk_877138, v5)) == 0) ) goto LABEL_4; v10 = v3; if ( sub_5F4310(a1, 5) ) { if ( !sub_5F41F0(a1, 5) ) { LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetAbstate"); return 0; } v6 = (signed int)sub_5F4640(a1, 5, 0); v7 = sub_54DE90(&unk_13253630, v6); if ( v7 ) v10 = v7; } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1592))( v3, v10, v5, v12, v9, dword_14D129E8, 0, 0, v11, 9, 0) ) goto LABEL_4; v8 = dword_871500; sub_401900((void *)v3, v5); sub_4055D0((void *)v3, v5, v11, v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1008))(v3, v5, v11, 1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1320))(v3); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetAbstate"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871500: using guessed type int dword_871500; // 14D129E8: using guessed type int dword_14D129E8; //----- (005D6E60) -------------------------------------------------------- signed int __cdecl sub_5D6E60(int a1) { int v2; // eax@6 __int16 v3; // di@7 int v4; // ST1C_4@13 char *v5; // eax@13 int v6; // edi@14 double v7; // st7@16 signed int v8; // eax@16 int v9; // eax@18 unsigned __int16 v10; // ax@21 int v11; // ebx@21 int (__thiscall *v12)(_DWORD); // edx@21 unsigned __int16 v13; // ax@21 int v14; // eax@22 int v15; // eax@23 const char *v16; // eax@24 int v17; // ebx@25 int v18; // eax@25 int v19; // eax@28 int v20; // eax@30 int v21; // eax@31 char v22; // [sp+34h] [bp-110h]@30 __int64 v23; // [sp+38h] [bp-10Ch]@4 int v24; // [sp+40h] [bp-104h]@21 int v25; // [sp+44h] [bp-100h]@28 int v26; // [sp+48h] [bp-FCh]@30 int v27; // [sp+4Ch] [bp-F8h]@30 int v28; // [sp+50h] [bp-F4h]@7 int v29; // [sp+54h] [bp-F0h]@13 int v30; // [sp+58h] [bp-ECh]@16 unsigned __int16 v31; // [sp+5Ah] [bp-EAh]@4 int v32; // [sp+5Ch] [bp-E8h]@4 char v33; // [sp+60h] [bp-E4h]@13 __int16 v34; // [sp+68h] [bp-DCh]@13 int v35; // [sp+D0h] [bp-74h]@14 int v36; // [sp+D4h] [bp-70h]@14 int v37; // [sp+D8h] [bp-6Ch]@14 int v38; // [sp+DCh] [bp-68h]@14 int v39; // [sp+E0h] [bp-64h]@14 int v40; // [sp+10Ch] [bp-38h]@14 int v41; // [sp+110h] [bp-34h]@14 int v42; // [sp+114h] [bp-30h]@14 int v43; // [sp+118h] [bp-2Ch]@14 int v44; // [sp+11Ch] [bp-28h]@14 int v45; // [sp+120h] [bp-24h]@14 int v46; // [sp+124h] [bp-20h]@14 int v47; // [sp+128h] [bp-1Ch]@14 int v48; // [sp+12Ch] [bp-18h]@14 unsigned int v49; // [sp+134h] [bp-10h]@1 int v50; // [sp+140h] [bp-4h]@1 int v51; // [sp+144h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cDropItem"); dword_7508B8[dword_750CB8] = (int)"cDropItem"; dword_750AB8[dword_750CB8++] = -1; v50 = 0; if ( !sub_5F41F0(a1, 2) || !sub_5F41F0(a1, 3) ) { v50 = -1; LABEL_10: --dword_750CB8; LABEL_11: sub_467660((int)&unk_D020420, (int)"cDropItem"); return 0; } v32 = v31 | 0xC00; v23 = (signed __int64)sub_5F4640(a1, 4, 0); if ( sub_639500((int)&unk_1508B108, 0xF4240u) >= (unsigned int)v23 ) { LABEL_5: sub_5F4C80(a1, 0.0); --dword_750CB8; v50 = -1; sub_467660((int)&unk_D020420, (int)"cDropItem"); return 1; } v2 = sub_5F48F0(a1, 1, 0); v32 = v2; if ( !v2 ) { LABEL_9: v50 = -1; goto LABEL_10; } v3 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v2); v28 = (unsigned __int16)v3; if ( v3 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"cDropItem : Item Not Found", v32); goto LABEL_9; } sub_46FE30((int)&v33); v4 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v5 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v33, v3, 3, *((_DWORD *)v5 + 4), v4); v34 = v3; v29 = (int)sub_63ACA0(dword_1508B168, v3); if ( !v29 ) goto LABEL_9; v39 = 0; v38 = 0; v37 = 0; v36 = 0; v35 = 0; v40 = 65537; v41 = 0; v42 = 0; v43 = 0; v44 = 0; v45 = 0; v46 = 0; v47 = 0; v48 = 0; v32 = (signed int)sub_5F4640(a1, 2, 0); v6 = sub_54DE90(&unk_13253630, v32); if ( v6 == 0 ) { sub_639100(&unk_86DDD8, (int)"cDropItem : Null pDropper", 0); goto LABEL_9; } v7 = sub_5F4640(a1, 3, 0); v8 = (signed int)v7; v30 = (signed int)v7; if ( (signed int)v7 == -1 ) { LOWORD(v8) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2060))(v6); v30 = (unsigned __int16)v8; } v9 = sub_54DE90(&unk_13253630, v8); HIDWORD(v23) = v9; if ( v9 ) { v32 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); } else { v32 = -1; v30 = 65535; } v10 = sub_639500((int)&unk_1508B108, 0x3E8u); v11 = *(_DWORD *)v29; v12 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1800); v24 = v10; v13 = v12(v6); if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *, int *, _DWORD, _DWORD))(v11 + 44))( v29, &v33, &v35, (unsigned __int16)v24, v13) ) goto LABEL_5; v14 = sub_418CB0((int)&dword_14D20890, v28); if ( !v14 || (v15 = *(_DWORD *)(v14 + 4)) == 0 || (v16 = (const char *)(v15 + 137)) == 0 ) goto LABEL_9; v17 = (int)sub_4934A0(&dword_D61E064, v16); v18 = (*(int (__stdcall **)(__int16 *))(*(_DWORD *)v29 + 112))(&v34); if ( v17 && v18 ) sub_4928F0(v18, v17); sub_4C0A40((int)&v25); LOBYTE(v19) = sub_5F4870(a1, 5); if ( v19 ) { v20 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v6 + 3652))(v6, &v22); v25 = *(_DWORD *)v20; v26 = *(_DWORD *)(v20 + 4); v27 = *(_DWORD *)(v20 + 8); } else { sub_4C0A80((int)&v25, SHIDWORD(v23)); } v21 = (unsigned __int8)sub_4B0220((void *)v6, (int)&v33, 1, (int)&v25, v30, v32, v29, 0); if ( !(_BYTE)v21 ) { sub_639100(&unk_86DDD8, (int)"cDropItem : Drop fail", v21); --dword_750CB8; v50 = -1; goto LABEL_11; } sub_5F4C80(a1, 1.0); --dword_750CB8; v50 = -1; sub_467660((int)&unk_D020420, (int)"cDropItem"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D20890: using guessed type int dword_14D20890; //----- (005D7320) -------------------------------------------------------- signed int __cdecl sub_5D7320(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // eax@3 int v4; // eax@4 unsigned int v5; // edi@4 sub_4675D0((int)&unk_D020420, (int)"cObjectLocate"); dword_7508B8[dword_750CB8] = (int)"cObjectLocate"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = *(_DWORD *)(v3 + 102); v5 = *(_DWORD *)(v4 + 4); sub_5F4C80(a1, (double)*(unsigned int *)v4); sub_5F4C80(a1, (double)v5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocate"); result = 2; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D7470) -------------------------------------------------------- signed int __cdecl sub_5D7470(int a1) { signed int result; // eax@2 int v2; // esi@3 int v3; // edi@7 __int16 v4; // ax@7 char *v5; // edi@7 int v6; // eax@7 int v7; // ecx@7 unsigned __int16 v8; // ax@7 int v9; // ST04_4@7 int v10; // eax@7 char v11; // [sp+30h] [bp-30h]@7 int v12; // [sp+3Ch] [bp-24h]@5 int v13; // [sp+40h] [bp-20h]@5 int v14; // [sp+44h] [bp-1Ch]@1 __int64 v15; // [sp+48h] [bp-18h]@3 signed int v16; // [sp+50h] [bp-10h]@5 int v17; // [sp+5Ch] [bp-4h]@1 v14 = (int)"cRunTo"; sub_4675D0((int)&unk_D020420, (int)"cRunTo"); dword_7508B8[dword_750CB8] = (int)"cRunTo"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; if ( sub_5F41F0(a1, 1) ) { HIDWORD(v15) = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, SWORD2(v15)); if ( v2 ) { v12 = (signed __int64)sub_5F4640(a1, 2, 0); v15 = (signed __int64)sub_5F4640(a1, 3, 0); v13 = v15; v16 = 1000; if ( sub_5F41F0(a1, 4) == 3 ) v16 = (signed int)sub_5F4640(a1, 4, 0); v3 = *(_DWORD *)v2; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1304))(v2); (*(void (__thiscall **)(int))(v3 + 1632))(v2); v5 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 8218; *(_WORD *)v5 = *(_WORD *)(v2 + 4); v6 = *(_DWORD *)(v2 + 102); *(_DWORD *)(v5 + 2) = *(_DWORD *)v6; *(_DWORD *)(v5 + 6) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v5 + 10) = v12; v7 = v13; *((_WORD *)v5 + 10) &= 0xFFFEu; *(_DWORD *)(v5 + 14) = v7; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1304))(v2); *((_WORD *)v5 + 9) = ((signed int)((unsigned __int64)(v16 * v8 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v16 * v8 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); (*(void (__thiscall **)(int, signed int, char *))(*(_DWORD *)v2 + 3000))(v2, 26, v5); sub_4287B0(&v11, &off_849C18, 24); v9 = *(_DWORD *)(v2 + 102); LOBYTE(v17) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v10, v9, 0, 0, (int)&v11, 0, 65535); sub_5F4C80(a1, 1.0); LOBYTE(v17) = 0; sub_428A70(&v11); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cRunTo"); result = 1; } else { --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cRunTo"); result = 0; } } else { --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cRunTo"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D7730) -------------------------------------------------------- signed int __cdecl sub_5D7730(int a1) { int v1; // esi@3 int v2; // edi@9 unsigned __int16 v3; // ax@9 char *v4; // edi@9 int v5; // eax@9 int v6; // ecx@9 unsigned __int16 v7; // ax@9 int v8; // ST08_4@9 int v9; // eax@9 int v11; // [sp-4h] [bp-44h]@2 int v12; // [sp-4h] [bp-44h]@4 char v13; // [sp+10h] [bp-30h]@9 int v14; // [sp+1Ch] [bp-24h]@7 int v15; // [sp+20h] [bp-20h]@7 int v16; // [sp+24h] [bp-1Ch]@1 __int64 v17; // [sp+28h] [bp-18h]@3 signed int v18; // [sp+30h] [bp-10h]@7 int v19; // [sp+3Ch] [bp-4h]@1 v16 = (int)"cWalkTo"; sub_4675D0((int)&unk_D020420, (int)"cWalkTo"); dword_7508B8[dword_750CB8] = (int)"cWalkTo"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( sub_5F41F0(a1, 1) ) { HIDWORD(v17) = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, SWORD2(v17)); if ( v1 ) { v12 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 768))(v1) != 1 ) { v14 = (signed __int64)sub_5F4640(a1, 2, 0); v17 = (signed __int64)sub_5F4640(a1, 3, 0); v15 = v17; v18 = 1000; if ( sub_5F41F0(a1, 4) == 3 ) v18 = (signed int)sub_5F4640(a1, 4, 0); v2 = *(_DWORD *)v1; v3 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v1 + 1300))(v1, 1, 0); (*(void (__thiscall **)(int, int *, unsigned int))(v2 + 1632))( v1, &v14, ((signed int)((unsigned __int64)(v18 * v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v18 * v3 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); v4 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 8216; *(_WORD *)v4 = *(_WORD *)(v1 + 4); v5 = *(_DWORD *)(v1 + 102); *(_DWORD *)(v4 + 2) = *(_DWORD *)v5; *(_DWORD *)(v4 + 6) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v4 + 10) = v14; v6 = v15; *((_WORD *)v4 + 10) &= 0xFFFEu; *(_DWORD *)(v4 + 14) = v6; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); *((_WORD *)v4 + 9) = ((signed int)((unsigned __int64)(v18 * v7 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v18 * v7 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); (*(void (__thiscall **)(int, signed int, char *))(*(_DWORD *)v1 + 3000))(v1, 24, v4); sub_4287B0(&v13, &off_849C18, 24); v8 = *(_DWORD *)(v1 + 102); LOBYTE(v19) = 1; v9 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v9, v8, 0, 0, (int)&v13, 0, 65535); sub_5F4ED0(a1, 1); LOBYTE(v19) = 0; sub_428A70(&v13); v19 = -1; goto LABEL_10; } } else { v12 = 0; } sub_5F4ED0(a1, v12); v19 = -1; LABEL_10: v11 = (int)"cWalkTo"; goto LABEL_11; } sub_5F4ED0(a1, 0); v19 = -1; v11 = (int)"cWalkTo"; LABEL_11: --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D79C0) -------------------------------------------------------- signed int __cdecl sub_5D79C0(int a1) { int v2; // esi@3 int v3; // eax@7 int v4; // edi@10 __int16 v5; // ax@10 char *v6; // edi@10 int v7; // eax@10 int v8; // ecx@10 unsigned __int16 v9; // ax@10 int v10; // ST04_4@10 int v11; // eax@10 char v12; // [sp+30h] [bp-48h]@7 char v13; // [sp+40h] [bp-38h]@10 int v14; // [sp+4Ch] [bp-2Ch]@7 int v15; // [sp+50h] [bp-28h]@10 int v16; // [sp+54h] [bp-24h]@5 int v17; // [sp+58h] [bp-20h]@5 int v18; // [sp+5Ch] [bp-1Ch]@1 __int64 v19; // [sp+60h] [bp-18h]@3 signed int v20; // [sp+68h] [bp-10h]@5 int v21; // [sp+74h] [bp-4h]@1 v18 = (int)"cRunToUntilBlock"; sub_4675D0((int)&unk_D020420, (int)"cRunToUntilBlock"); dword_7508B8[dword_750CB8] = (int)"cRunToUntilBlock"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"cRunToUntilBlock"); return 0; } HIDWORD(v19) = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, SWORD2(v19)); if ( !v2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1156))(v2) == 3 ) goto LABEL_9; v16 = (signed __int64)sub_5F4640(a1, 2, 0); v19 = (signed __int64)sub_5F4640(a1, 3, 0); v17 = v19; v20 = 1000; if ( sub_5F41F0(a1, 4) == 3 ) v20 = (signed int)sub_5F4640(a1, 4, 0); sub_4620E0((int)&v12, (int)&v16, *(_DWORD *)(v2 + 102)); LOBYTE(v21) = 1; v3 = sub_4B81F0((int)&v12); if ( !sub_4BE0E0((void *)v2, (int)&v16, v3, (int)&v14, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D1B0) ) { LOBYTE(v21) = 0; sub_461490(&v12); LABEL_9: --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"cRunToUntilBlock"); return 0; } v4 = *(_DWORD *)v2; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1304))(v2); (*(void (__thiscall **)(int))(v4 + 1632))(v2); v6 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 8218; *(_WORD *)v6 = *(_WORD *)(v2 + 4); v7 = *(_DWORD *)(v2 + 102); *(_DWORD *)(v6 + 2) = *(_DWORD *)v7; *(_DWORD *)(v6 + 6) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v6 + 10) = v14; v8 = v15; *((_WORD *)v6 + 10) &= 0xFFFEu; *(_DWORD *)(v6 + 14) = v8; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1304))(v2); *((_WORD *)v6 + 9) = ((signed int)((unsigned __int64)(v20 * v9 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v20 * v9 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); (*(void (__thiscall **)(int, signed int, char *))(*(_DWORD *)v2 + 3000))(v2, 26, v6); sub_4287B0(&v13, &off_849C18, 24); v10 = *(_DWORD *)(v2 + 102); LOBYTE(v21) = 2; v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v11, v10, 0, 0, (int)&v13, 0, 65535); sub_5F4C80(a1, 1.0); LOBYTE(v21) = 1; sub_428A70(&v13); LOBYTE(v21) = 0; sub_461490(&v12); --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, (int)"cRunToUntilBlock"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D7CE0) -------------------------------------------------------- signed int __cdecl sub_5D7CE0(int a1) { signed int v1; // esi@1 signed int result; // eax@2 sub_4675D0((int)&unk_D020420, (int)"cPermileRate"); dword_7508B8[dword_750CB8] = (int)"cPermileRate"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); if ( (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u) >= v1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cPermileRate"); result = 0; } else { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cPermileRate"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D7DF0) -------------------------------------------------------- signed int __cdecl sub_5D7DF0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // edi@3 sub_4675D0((int)&unk_D020420, (int)"cIsMovable"); dword_7508B8[dword_750CB8] = (int)"cIsMovable"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 1 || *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 2) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsMovable"); result = 0; } else { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsMovable"); result = 1; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsMovable"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D7F70) -------------------------------------------------------- signed int __cdecl sub_5D7F70(int a1) { signed int result; // eax@2 signed int v2; // ST30_4@4 int v3; // eax@4 void *v4; // edi@5 int v5; // eax@7 signed int v6; // ebx@8 int v7; // edi@8 int i; // eax@8 __int16 v9; // [sp+1Ch] [bp-84h]@7 void *v10; // [sp+20h] [bp-80h]@5 int v11; // [sp+28h] [bp-78h]@10 unsigned int v12; // [sp+90h] [bp-10h]@1 int v13; // [sp+9Ch] [bp-4h]@1 int v14; // [sp+A0h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cServerMenu"); dword_7508B8[dword_750CB8] = (int)"cServerMenu"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( sub_5F41F0(a1, 1) && sub_5F41F0(a1, 2) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3004))(v3); v10 = v4; if ( v4 && (v9 = (signed int)sub_5F4640(a1, 2, 0), (v5 = sub_5F48F0(a1, 3, 0)) != 0) ) { sub_54CA20(v4, (const char *)v5); v6 = 4; v7 = sub_5F48F0(a1, 4, 0); for ( i = sub_5F48F0(a1, 5, 0); v7; i = sub_5F48F0(a1, v6 + 1, 0) ) { if ( !i ) break; v6 += 2; LOWORD(v11) = v9; strncpy((char *)&v11 + 2, (const char *)i, 0x14u); sub_54CB10(v10, (int)sub_50DA80, (const char *)v7, &v11); v7 = sub_5F48F0(a1, v6, 0); } sub_54CC20(v10, 0, -1, 0, 1000); sub_5F4C80(a1, 1.0); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cServerMenu"); result = 1; } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cServerMenu"); result = 0; } } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cServerMenu"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005D81B0) -------------------------------------------------------- signed int __cdecl sub_5D81B0(int a1) { signed int result; // eax@2 int v2; // ebx@3 int v3; // eax@5 unsigned __int64 v4; // [sp+24h] [bp-24h]@6 unsigned __int64 v5; // [sp+2Ch] [bp-1Ch]@1 int v6; // [sp+34h] [bp-14h]@3 unsigned __int8 v7; // [sp+3Bh] [bp-Dh]@6 int v8; // [sp+44h] [bp-4h]@1 HIDWORD(v5) = "cGetItemLot"; sub_4675D0((int)&unk_D020420, (int)"cGetItemLot"); dword_7508B8[dword_750CB8] = (int)"cGetItemLot"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; if ( sub_5F41F0(a1, 1) ) { v6 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v6); if ( v2 && (v3 = sub_5F48F0(a1, 2, 0)) != 0 && (unsigned __int8)(*(int (__thiscall **)(int, int, unsigned __int64 *, unsigned __int8 *))(*(_DWORD *)v2 + 3008))( v2, v3, &v4, &v7) ) { v5 = v4 & 0x8000000000000000ui64; sub_5F4C80(a1, (double)v4); v6 = v7; sub_5F4C80(a1, (double)v7); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cGetItemLot"); result = 2; } else { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cGetItemLot"); result = 0; } } else { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cGetItemLot"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D8370) -------------------------------------------------------- signed int __cdecl sub_5D8370(int a1) { signed int v1; // ST20_4@3 int v2; // edi@3 signed int v3; // eax@4 int v5; // [sp+8h] [bp-2Ch]@2 signed int v6; // [sp+8h] [bp-2Ch]@6 sub_4675D0((int)&unk_D020420, (int)"cSetNPCIsItemDrop"); dword_7508B8[dword_750CB8] = (int)"cSetNPCIsItemDrop"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = (signed int)sub_5F4640(a1, 2, 0); if ( v3 >= 0 ) { if ( !v3 ) { v6 = 0; LABEL_9: (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2992))(v2, v6); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCIsItemDrop"); return 1; } if ( v3 == 1 ) { v6 = 1; goto LABEL_9; } } } v5 = (int)"cSetNPCIsItemDrop"; goto LABEL_11; } v5 = (int)"cSetNPCIsItemDrop"; LABEL_11: --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D84D0) -------------------------------------------------------- signed int __cdecl sub_5D84D0(int a1) { int v1; // esi@1 signed int result; // eax@2 signed int v3; // ST24_4@3 int v4; // edi@3 int v5; // esi@7 double v6; // st7@8 signed int v7; // [sp+8h] [bp-30h]@10 signed int v8; // [sp+Ch] [bp-2Ch]@10 sub_4675D0((int)&unk_D020420, (int)"cSetNPCResist"); dword_7508B8[dword_750CB8] = (int)"cSetNPCResist"; dword_750AB8[dword_750CB8++] = -1; v1 = a1; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCResist"); return 0; } v3 = (signed int)sub_5F4640(a1, 1, 0); v4 = sub_54DE90(&unk_13253630, v3); if ( v4 && sub_5F41F0(a1, 2) == 5 ) { sub_5F4C60(a1); if ( sub_5F5C30(a1, 2) ) { while ( 1 ) { v5 = sub_5F48F0(a1, -2, 0); if ( !v5 || (v6 = sub_5F4640(a1, -1, 0), (signed int)v6 < 0) ) goto LABEL_4; if ( !strcmp((const char *)v5, "ResDot") ) break; if ( !strcmp((const char *)v5, "ResStun") ) { v8 = (signed int)v6; v7 = 34; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResMoveSpeed") ) { v8 = (signed int)v6; v7 = 36; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResFear") ) { v8 = (signed int)v6; v7 = 38; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResBinding") ) { v8 = (signed int)v6; v7 = 40; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResReverse") ) { v8 = (signed int)v6; v7 = 42; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResMesmerize") ) { v8 = (signed int)v6; v7 = 44; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResSeverBone") ) { v8 = (signed int)v6; v7 = 46; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResKnockBack") ) { v8 = (signed int)v6; v7 = 48; goto LABEL_29; } if ( !strcmp((const char *)v5, "ResTBMinus") ) { v8 = (signed int)v6; v7 = 50; goto LABEL_29; } LABEL_30: v1 = a1; sub_5F3E70(a1, -2); if ( !sub_5F5C30(a1, 2) ) goto LABEL_31; } v8 = (signed int)v6; v7 = 32; LABEL_29: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 2976))(v4, v7, v8); goto LABEL_30; } LABEL_31: sub_5F4C80(v1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCResist"); result = 1; } else { LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCResist"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D88E0) -------------------------------------------------------- int __cdecl sub_5D88E0(int a1) { signed int v1; // ST28_4@3 int v2; // ebx@3 signed int v3; // edi@6 int v4; // eax@8 char v5; // cl@9 char *v6; // eax@10 char v7; // cl@11 int v9; // [sp-8h] [bp-134h]@2 int v10; // [sp+10h] [bp-11Ch]@5 char v11[256]; // [sp+1Ch] [bp-110h]@9 unsigned int v12; // [sp+11Ch] [bp-10h]@1 int v13; // [sp+128h] [bp-4h]@1 int v14; // [sp+12Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cNPCChatTest"); dword_7508B8[dword_750CB8] = (int)"cNPCChatTest"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 && (v10 = sub_5F48F0(a1, 2, 0)) != 0 ) { v3 = 65535; if ( sub_5F4310(a1, 3) ) v3 = (unsigned __int16)(signed int)sub_5F4640(a1, 3, 0); v4 = v10; do { v5 = *(_BYTE *)v4; *(&v11[v4] - v10) = *(_BYTE *)v4; ++v4; } while ( v5 ); v6 = v11; do v7 = *v6++; while ( v7 ); (*(void (__thiscall **)(int, signed int, char *, unsigned int, _DWORD))(*(_DWORD *)v2 + 1328))( v2, v3, v11, v6 - &v11[1], (_WORD)v3 != -1); v13 = -1; } else { v13 = -1; } v9 = (int)"cNPCChatTest"; } else { v13 = -1; v9 = (int)"cNPCChatTest"; } --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 5D88E0: using guessed type char var_110[256]; //----- (005D8AC0) -------------------------------------------------------- int __cdecl sub_5D8AC0(int a1) { int v1; // edi@1 int v2; // esi@4 int v3; // eax@5 void *v4; // edi@5 unsigned __int16 v5; // ax@7 int v6; // eax@8 int v7; // eax@9 size_t v8; // ecx@9 void *v9; // esi@10 int v10; // eax@10 char v12; // [sp+10h] [bp-24h]@10 int v13; // [sp+1Ch] [bp-18h]@1 int v14; // [sp+20h] [bp-14h]@3 int v15; // [sp+24h] [bp-10h]@2 int v16; // [sp+30h] [bp-4h]@1 v13 = (int)"cMobDialog"; sub_4675D0((int)&unk_D020420, (int)"cMobDialog"); dword_7508B8[dword_750CB8] = (int)"cMobDialog"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v15 = sub_5F48F0(a1, 2, 0); if ( v15 ) { v14 = sub_5F48F0(a1, 3, 0); if ( v14 ) { v2 = sub_5F48F0(a1, 4, 0); if ( v2 ) { v3 = sub_465D80((const char *)v1); v4 = (void *)v3; if ( v3 ) { if ( sub_462A60((void *)v3) ) { v5 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v15); v15 = v5; if ( v5 != -1 ) { v6 = sub_649720(&unk_150B11D8, v14); if ( v6 ) { v7 = sub_48C200((void *)v6, (const char *)v2); v8 = strlen((const char *)v7); if ( (signed int)v8 < 256 ) { v9 = off_849C18; *(_WORD *)off_849C18 = 27660; *((_WORD *)v9 + 1) = v15; *((_BYTE *)v9 + 4) = v8; memmove((char *)v9 + 5, (const void *)v7, v8); sub_4287B0(&v12, &off_849C18, *((_BYTE *)v9 + 4) + 5); LOBYTE(v16) = 1; v10 = sub_462A60(v4); sub_549B60((void *)v10, (int)&v12, 0); LOBYTE(v16) = 0; sub_428A70(&v12); } } } } } } } } } --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"cMobDialog"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D8C90) -------------------------------------------------------- int __cdecl sub_5D8C90(int a1) { signed int v1; // ST20_4@3 int v2; // edi@3 int v3; // esi@8 void *v4; // ecx@9 int v5; // eax@12 int v6; // eax@13 size_t v7; // ecx@13 void *v8; // esi@14 int v9; // esi@14 int v10; // eax@16 int v12; // [sp-4h] [bp-2Ch]@2 int v13; // [sp+14h] [bp-14h]@6 __int16 v14; // [sp+14h] [bp-14h]@11 int v15; // [sp+18h] [bp-10h]@7 sub_4675D0((int)&unk_D020420, (int)"cMobDialog_Obj"); dword_7508B8[dword_750CB8] = (int)"cMobDialog_Obj"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v13 = sub_5F48F0(a1, 2, 0); if ( v13 ) { v15 = sub_5F48F0(a1, 3, 0); if ( v15 ) { v3 = sub_5F48F0(a1, 4, 0); if ( v3 ) { v4 = *(void **)(v2 + 122); if ( v4 ) { if ( sub_462A60(v4) ) { v14 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v13); if ( v14 != -1 ) { v5 = sub_649720(&unk_150B11D8, v15); if ( v5 ) { v6 = sub_48C200((void *)v5, (const char *)v3); v7 = strlen((const char *)v6); if ( (signed int)v7 < 256 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 27660; *((_WORD *)v8 + 1) = v14; *((_BYTE *)v8 + 4) = v7; memmove((char *)v8 + 5, (const void *)v6, v7); v9 = *((_BYTE *)v8 + 4) + 5; if ( sub_4C81E0(&off_849C18, v9) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cMobDialog_Obj : Packet Too Long", v9); } } } } } } } } } } } } v12 = (int)"cMobDialog_Obj"; } else { v12 = (int)"cMobDialog_Obj"; } --dword_750CB8; sub_467660((int)&unk_D020420, v12); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D8ED0) -------------------------------------------------------- int __cdecl sub_5D8ED0(int a1) { int v1; // edi@1 int v2; // esi@5 void *v3; // ecx@6 unsigned __int16 v4; // ax@8 int v5; // eax@9 int v6; // eax@10 size_t v7; // ecx@10 void *v8; // esi@11 int v9; // ST08_4@11 int v10; // ST04_4@11 int v11; // eax@11 char v13; // [sp+10h] [bp-28h]@11 int v14; // [sp+1Ch] [bp-1Ch]@1 int v15; // [sp+20h] [bp-18h]@4 int v16; // [sp+24h] [bp-14h]@1 int v17; // [sp+28h] [bp-10h]@4 int v18; // [sp+34h] [bp-4h]@1 v14 = (int)"cMobDialog_Obj"; sub_4675D0((int)&unk_D020420, (int)"cMobDialog_Obj"); dword_7508B8[dword_750CB8] = (int)"cMobDialog_Obj"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v16 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, v16); if ( v1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 768))(v1) != 1 ) { v16 = sub_5F48F0(a1, 2, 0); if ( v16 ) { v15 = (signed int)sub_5F4640(a1, 3, 0); v17 = sub_5F48F0(a1, 4, 0); if ( v17 ) { v2 = sub_5F48F0(a1, 5, 0); if ( v2 ) { v3 = *(void **)(v1 + 122); if ( v3 ) { if ( sub_462A60(v3) ) { v4 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v16); v16 = v4; if ( v4 != -1 ) { v5 = sub_649720(&unk_150B11D8, v17); if ( v5 ) { v6 = sub_48C200((void *)v5, (const char *)v2); v7 = strlen((const char *)v6); if ( (signed int)v7 < 256 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 27660; *((_WORD *)v8 + 1) = v16; *((_BYTE *)v8 + 4) = v7; memmove((char *)v8 + 5, (const void *)v6, v7); sub_4287B0(&v13, &off_849C18, *((_BYTE *)v8 + 4) + 5); v9 = v15; v10 = *(_DWORD *)(v1 + 102); LOBYTE(v18) = 1; v11 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v11, v10, (_UNKNOWN *)v9, 0, (int)&v13, 0, 65535); LOBYTE(v18) = 0; sub_428A70(&v13); } } } } } } } } } } --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cMobDialog_Obj"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9100) -------------------------------------------------------- int __cdecl sub_5D9100(int a1) { int v1; // edi@3 int v2; // esi@5 int v3; // eax@6 int v4; // eax@7 int v6; // [sp-4h] [bp-2Ch]@2 __int16 v7; // [sp+14h] [bp-14h]@3 int v8; // [sp+18h] [bp-10h]@4 sub_4675D0((int)&unk_D020420, (int)"cMobShout"); dword_7508B8[dword_750CB8] = (int)"cMobShout"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v7 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_5F48F0(a1, 2, 0); if ( v1 ) { v8 = sub_5F48F0(a1, 3, 0); if ( v8 ) { v2 = sub_54DE90(&unk_13253630, v7); if ( v2 ) { v3 = sub_649720(&unk_150B11D8, v1); if ( v3 ) { v4 = sub_48C200((void *)v3, (const char *)v8); (*(void (__thiscall **)(int, signed int, _DWORD, int, unsigned int))(*(_DWORD *)v2 + 1332))( v2, 65535, byte_6A492E, v4, strlen((const char *)v4)); } } } } v6 = (int)"cMobShout"; } else { v6 = (int)"cMobShout"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9250) -------------------------------------------------------- int __cdecl sub_5D9250(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // edi@4 int v4; // ebx@6 signed int v5; // eax@6 int v6; // esi@7 void *v7; // ecx@7 __int16 v8; // dx@7 __int16 v9; // ax@7 int v11; // [sp-4h] [bp-4Ch]@2 char v12; // [sp+10h] [bp-38h]@7 int v13; // [sp+20h] [bp-28h]@6 int v14; // [sp+24h] [bp-24h]@1 __int64 v15; // [sp+28h] [bp-20h]@6 int v16; // [sp+30h] [bp-18h]@3 int v17; // [sp+34h] [bp-14h]@6 int v18; // [sp+38h] [bp-10h]@6 int v19; // [sp+44h] [bp-4h]@1 v14 = (int)"cCameraMove"; sub_4675D0((int)&unk_D020420, (int)"cCameraMove"); dword_7508B8[dword_750CB8] = (int)"cCameraMove"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1), (v16 = v2) != 0) ) { v3 = sub_462A60((void *)v2); if ( v3 ) { v4 = (signed __int64)sub_5F4640(a1, 2, 0); v15 = (signed __int64)sub_5F4640(a1, 3, 0); v13 = v15; HIDWORD(v15) = (unsigned __int16)(signed int)sub_5F4640(a1, 4, 0); v17 = (unsigned __int16)(signed int)sub_5F4640(a1, 5, 0); v18 = (signed int)sub_5F4640(a1, 6, 0); v5 = sub_5F46F0(a1, 7, 0); if ( v5 < 2 ) { v6 = v13; *(_DWORD *)(v16 + 292) = v5; v7 = off_849C18; *(_WORD *)off_849C18 = 27668; v8 = v17; *((_BYTE *)v7 + 2) = v5; *(_WORD *)((char *)v7 + 11) = WORD2(v15); v9 = v18; *(_DWORD *)((char *)v7 + 3) = v4; *(_DWORD *)((char *)v7 + 7) = v6; *(_WORD *)((char *)v7 + 13) = v8; *(_WORD *)((char *)v7 + 15) = v9; sub_4287B0(&v12, &off_849C18, 17); LOBYTE(v19) = 1; sub_549B60((void *)v3, (int)&v12, 0); (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v3 + 3108))(v3, v4, v6, v18); LOBYTE(v19) = 0; sub_428A70(&v12); } v19 = -1; } else { v19 = -1; } v11 = (int)"cCameraMove"; } else { v19 = -1; v11 = (int)"cCameraMove"; } --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9470) -------------------------------------------------------- signed int __cdecl sub_5D9470(int a1) { int v1; // eax@1 int v3; // ebx@3 int v4; // esi@7 int v5; // edx@9 char v6; // [sp+1Ch] [bp-1Ch]@3 double v7; // [sp+20h] [bp-18h]@1 int v8; // [sp+34h] [bp-4h]@1 LODWORD(v7) = &unk_6FB800; sub_4675D0((int)&unk_D020420, (int)&unk_6FB800); dword_7508B8[dword_750CB8] = (int)&unk_6FB800; dword_750AB8[dword_750CB8++] = -1; v8 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 ) { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB800); return 0; } v3 = sub_5063A0(&unk_13230E20, (unsigned __int8 *)v1, (int)&v6); if ( !v3 || !sub_5F41F0(a1, 2) ) { v8 = -1; LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB800); return 0; } HIDWORD(v7) = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_54DE90(&unk_13253630, SWORD2(v7)); if ( !v4 ) { v8 = -1; goto LABEL_5; } HIDWORD(v7) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 16))(v3); (*(void (__thiscall **)(int, _DWORD))(v5 + 2912))(v4, HIDWORD(v7)); sub_5F4C80(a1, 1.0); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB800); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9610) -------------------------------------------------------- signed int __cdecl sub_5D9610(int a1) { int v2; // esi@4 int v3; // edi@8 int v4; // eax@14 int v5; // edx@17 int v6; // ebx@17 signed int v7; // edi@17 int v8; // ecx@17 int v9; // ebx@17 int v10; // edi@17 double v11; // st7@17 double v12; // st6@17 int v13; // edi@17 unsigned __int16 v14; // ax@17 char *v15; // edi@17 int v16; // eax@17 int v17; // ecx@17 unsigned __int16 v18; // ax@17 int v19; // ST08_4@17 int v20; // eax@17 char v21; // [sp+30h] [bp-34h]@17 int v22; // [sp+3Ch] [bp-28h]@17 int v23; // [sp+40h] [bp-24h]@17 int v24; // [sp+44h] [bp-20h]@1 __int64 v25; // [sp+48h] [bp-1Ch]@10 float v26; // [sp+50h] [bp-14h]@4 signed int v27; // [sp+54h] [bp-10h]@10 int v28; // [sp+60h] [bp-4h]@1 v24 = (int)"cFollow"; sub_4675D0((int)&unk_D020420, (int)"cFollow"); dword_7508B8[dword_750CB8] = (int)"cFollow"; dword_750AB8[dword_750CB8++] = -1; v28 = 0; if ( !sub_5F41F0(a1, 1) || !sub_5F41F0(a1, 2) ) { --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"cFollow"); return 0; } LODWORD(v26) = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, SLOWORD(v26)); if ( !v2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1156))(v2) == 3 ) { v28 = -1; LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cFollow"); return 0; } LODWORD(v26) = (signed int)sub_5F4640(a1, 2, 0); v3 = sub_54DE90(&unk_13253630, SLOWORD(v26)); if ( !v3 ) { LABEL_9: v28 = -1; goto LABEL_6; } LODWORD(v26) = (signed __int64)sub_5F4640(a1, 3, 0); v25 = (signed __int64)sub_5F4640(a1, 4, 0); v27 = v25; if ( v26 == 0.0 ) LODWORD(v26) = 100; if ( !(_DWORD)v25 ) v27 = 1000; v4 = sub_402710(v2, v3); if ( v4 >= (unsigned int)(LODWORD(v26) * LODWORD(v26)) ) { if ( v4 > (unsigned int)(v27 * v27) ) goto LABEL_9; HIDWORD(v25) = v4; v5 = *(_DWORD *)(v3 + 102); v6 = *(_DWORD *)(v2 + 102); v7 = *(_DWORD *)v6; v8 = *(_DWORD *)v5; v9 = *(_DWORD *)(v6 + 4); v25 = (signed __int64)sqrt((double)(unsigned int)v4); v27 = v7; v10 = *(_DWORD *)(v5 + 4); v11 = 1.0 / (double)(unsigned int)v25; v26 = (double)(unsigned int)(v25 - LODWORD(v26)); v12 = v26; HIDWORD(v25) = v10 - v9; LODWORD(v26) = (signed int)((double)(v8 - v27) * v11 * v26); v22 = LODWORD(v26) + v27; v23 = (signed int)(v11 * (double)(v10 - v9) * v12) + *(_DWORD *)(*(_DWORD *)(v2 + 102) + 4); v13 = *(_DWORD *)v2; v14 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v2 + 1304))(v2, 2, 0); (*(void (__thiscall **)(int, int *, unsigned int))(v13 + 1632))( v2, &v22, ((signed int)((unsigned __int64)(1000 * v14 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(1000 * v14 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); v15 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 8218; *(_WORD *)v15 = *(_WORD *)(v2 + 4); v16 = *(_DWORD *)(v2 + 102); *(_DWORD *)(v15 + 2) = *(_DWORD *)v16; *(_DWORD *)(v15 + 6) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 10) = v22; v17 = v23; *((_WORD *)v15 + 10) &= 0xFFFEu; *(_DWORD *)(v15 + 14) = v17; v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1304))(v2); *((_WORD *)v15 + 9) = ((signed int)((unsigned __int64)(1000 * v18 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(1000 * v18 * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); (*(void (__thiscall **)(int, signed int, char *))(*(_DWORD *)v2 + 3000))(v2, 26, v15); sub_4287B0(&v21, &off_849C18, 24); v19 = *(_DWORD *)(v2 + 102); LOBYTE(v28) = 1; v20 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v20, v19, 0, 0, (int)&v21, 0, 65535); sub_5F4C80(a1, 1.0); LOBYTE(v28) = 0; sub_428A70(&v21); } else { sub_5F4C80(a1, 1.0); } --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"cFollow"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9A10) -------------------------------------------------------- signed int __cdecl sub_5D9A10(int a1) { int v1; // eax@1 int v2; // eax@2 int v3; // eax@4 unsigned __int16 v4; // ax@5 int v5; // edi@6 int v6; // ebx@8 int v7; // ST4C_4@8 int v8; // ST54_4@8 signed __int64 v9; // ST5C_8@8 int v11; // [sp+28h] [bp-4Ch]@7 int v12; // [sp+40h] [bp-34h]@2 int v13; // [sp+54h] [bp-20h]@5 int v14; // [sp+60h] [bp-14h]@6 int v15; // [sp+70h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)&unk_6FB818); dword_7508B8[dword_750CB8] = (int)&unk_6FB818; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v2 = sub_465D80((const char *)v1), (v12 = v2) == 0) || !sub_462A60((void *)v2) || (v3 = sub_5F48F0(a1, 2, 0)) == 0 || (v4 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v3), v13 = v4, v4 == -1) ) { v11 = (int)&unk_6FB818; goto LABEL_12; } v5 = sub_54DF90(&unk_13253630, (int)&v14, 7); if ( !v5 ) { v11 = (int)&unk_6FB818; LABEL_12: v15 = -1; goto LABEL_13; } v6 = (signed __int64)sub_5F4640(a1, 3, 0); v7 = (signed __int64)sub_5F4640(a1, 4, 0); v8 = (signed __int64)sub_5F4640(a1, 5, 0); v9 = (signed __int64)sub_5F4640(a1, 6, 0); if ( !(*(int (__thiscall **)(int, int, int, int, int, int, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 1756))( v5, v12, v6, v7, v8, v14, v13, v9, 0, 0) ) { sub_5F4C80(a1, (double)(unsigned __int16)v14); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB818); return 1; } sub_555DF0(&unk_13253630, v14, 0, 23); v15 = -1; v11 = (int)&unk_6FB818; LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9C60) -------------------------------------------------------- signed int __cdecl sub_5D9C60(int a1) { signed int v2; // ST24_4@3 int v3; // edi@3 int v4; // eax@7 signed int v5; // [sp+Ch] [bp-2Ch]@9 int v6; // [sp+28h] [bp-10h]@6 sub_4675D0((int)&unk_D020420, (int)"cDoorAction"); dword_7508B8[dword_750CB8] = (int)"cDoorAction"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cDoorAction"); return 0; } v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) != 7 || (v6 = sub_5F48F0(a1, 2, 0)) == 0 || (v4 = sub_5F48F0(a1, 3, 0)) == 0 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cDoorAction"); return 0; } if ( !strcmp((const char *)v4, "close") ) { v5 = 0; LABEL_12: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 792))(v3, v6, v5); goto LABEL_13; } if ( !strcmp((const char *)v4, "open") ) { v5 = 1; goto LABEL_12; } LABEL_13: sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cDoorAction"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005D9E60) -------------------------------------------------------- signed int __cdecl sub_5D9E60(int a1) { signed int result; // eax@2 int v2; // eax@3 int v3; // eax@4 int v4; // eax@6 signed int v5; // ST24_4@7 int v6; // eax@7 int v7; // [sp+1Ch] [bp-3Ch]@4 char v8[4]; // [sp+28h] [bp-30h]@6 int v9; // [sp+2Ch] [bp-2Ch]@6 int v10; // [sp+30h] [bp-28h]@6 int v11; // [sp+34h] [bp-24h]@6 int v12; // [sp+38h] [bp-20h]@6 int v13; // [sp+3Ch] [bp-1Ch]@6 int v14; // [sp+40h] [bp-18h]@6 int v15; // [sp+44h] [bp-14h]@6 unsigned int v16; // [sp+48h] [bp-10h]@1 int v17; // [sp+54h] [bp-4h]@1 int v18; // [sp+58h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGetAreaObject"); dword_7508B8[dword_750CB8] = (int)"cGetAreaObject"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; if ( sub_5F41F0(a1, 3) && (v2 = sub_5F48F0(a1, 1, 0)) != 0 && (v3 = sub_465D80((const char *)v2), (v7 = v3) != 0) && sub_462A60((void *)v3) && (v15 = 0, v14 = 0, v13 = 0, v12 = 0, v11 = 0, v10 = 0, v9 = 0, *(_DWORD *)v8 = 0, (v4 = sub_5F48F0(a1, 2, 0)) != 0) && (sub_427AD0(v8, (const char *)v4), v5 = (signed int)sub_5F4640(a1, 3, 0), (v6 = sub_54DE90(&unk_13253630, v5)) != 0) && sub_427B70(v7, (int)v8, **(_DWORD **)(v6 + 102), *(_DWORD *)(*(_DWORD *)(v6 + 102) + 4)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cGetAreaObject"); result = 1; } else { --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cGetAreaObject"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005DA000) -------------------------------------------------------- int __cdecl sub_5DA000(int a1) { unsigned __int16 v1; // bx@1 int v2; // eax@1 int v3; // eax@3 int v4; // eax@5 char *v5; // edi@6 char *v6; // ST00_4@6 int v7; // eax@6 int v8; // esi@6 int v9; // eax@8 int v10; // ecx@9 char v11; // dl@10 unsigned __int8 v12; // cl@11 char v14; // [sp+10h] [bp-2Ch]@13 int v15; // [sp+1Ch] [bp-20h]@1 int v16; // [sp+20h] [bp-1Ch]@4 int v17; // [sp+24h] [bp-18h]@6 int v18; // [sp+28h] [bp-14h]@6 int v19; // [sp+2Ch] [bp-10h]@6 int v20; // [sp+38h] [bp-4h]@1 v15 = (int)"cScriptMessage"; sub_4675D0((int)&unk_D020420, (int)"cScriptMessage"); dword_7508B8[dword_750CB8] = (int)"cScriptMessage"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v20 = 0; v2 = sub_5F48F0(a1, 1, 0); if ( v2 && (v3 = sub_465D80((const char *)v2)) != 0 && (v16 = sub_462A60((void *)v3)) != 0 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 ) { v5 = (char *)off_849C18 + 2; v6 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 27669; strncpy(v6, (const char *)v4, 0x1Fu); v7 = -29 - (_DWORD)v5; v18 = 0; v8 = (int)(v5 + 32); v17 = -29 - (_DWORD)v5; v19 = 5; while ( 1 ) { v9 = sub_5F48F0(a1, v8 + v7, 0); *(_BYTE *)v8 = 0; if ( v9 ) { v10 = v9; v18 = v9 + 1; do v11 = *(_BYTE *)v10++; while ( v11 ); v12 = v10 - v18; *(_BYTE *)v8 = v12; memmove(&v5[v1 + 37], (const void *)v9, v12); v1 += *(_BYTE *)v8; } ++v8; --v19; if ( !v19 ) break; v7 = v17; } sub_4287B0(&v14, &off_849C18, v1 + 39); LOBYTE(v20) = 1; sub_549B60((void *)v16, (int)&v14, 0); LOBYTE(v20) = 0; sub_428A70(&v14); v20 = -1; } else { v20 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cScriptMessage"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DA1A0) -------------------------------------------------------- int __cdecl sub_5DA1A0(int a1) { unsigned __int16 v1; // bx@1 signed int v2; // ST28_4@1 int v3; // eax@1 int v4; // eax@4 char *v5; // edi@5 char *v6; // ST00_4@5 int v7; // eax@5 int v8; // esi@5 int v9; // eax@7 int v10; // ecx@8 char v11; // dl@9 unsigned __int8 v12; // cl@10 int v13; // eax@14 int v15; // [sp+14h] [bp-1Ch]@1 signed int v16; // [sp+20h] [bp-10h]@5 sub_4675D0((int)&unk_D020420, (int)"cScriptMessage_Obj"); dword_7508B8[dword_750CB8] = (int)"cScriptMessage_Obj"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); v15 = v3; if ( v3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v4 = sub_5F48F0(a1, 2, 0); if ( v4 ) { v5 = (char *)off_849C18 + 2; v6 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 27669; strncpy(v6, (const char *)v4, 0x1Fu); v7 = -29 - (_DWORD)v5; v8 = (int)(v5 + 32); v16 = 5; while ( 1 ) { v9 = sub_5F48F0(a1, v8 + v7, 0); *(_BYTE *)v8 = 0; if ( v9 ) { v10 = v9; do v11 = *(_BYTE *)v10++; while ( v11 ); v12 = v10 - (v9 + 1); *(_BYTE *)v8 = v12; memmove(&v5[v1 + 37], (const void *)v9, v12); v1 += *(_BYTE *)v8; } ++v8; --v16; if ( !v16 ) break; v7 = -29 - (_DWORD)v5; } if ( sub_4C81E0(&off_849C18, v1 + 39) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 764))(v15); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v15, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cScriptMessage_Obj : Packet Too Long", v1 + 39); } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cScriptMessage_Obj"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DA370) -------------------------------------------------------- signed int __cdecl sub_5DA370(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@4 int v3; // ebx@4 signed int v4; // ST20_4@6 int v5; // edi@6 sub_4675D0((int)&unk_D020420, (int)"cNPCMenuOpen"); dword_7508B8[dword_750CB8] = (int)"cNPCMenuOpen"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && sub_5F41F0(a1, 2) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = (signed int)sub_5F4640(a1, 2, 0), (v5 = sub_54DE90(&unk_13253630, v4)) != 0) && (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1800))(v3) != -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 3116))(v5, v3); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCMenuOpen"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCMenuOpen"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCMenuOpen"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DA540) -------------------------------------------------------- signed int __cdecl sub_5DA540(int a1) { signed int result; // eax@2 signed int v2; // ST30_4@4 int v3; // eax@4 __int16 v4; // di@6 unsigned __int16 v5; // bx@8 int v6; // eax@8 void *v7; // [sp+1Ch] [bp-18h]@5 sub_4675D0((int)&unk_D020420, (int)"cCastingBar"); dword_7508B8[dword_750CB8] = (int)"cCastingBar"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && sub_5F41F0(a1, 2) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (v7 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3004))(v3)) != 0 ) { v4 = (signed int)sub_5F4640(a1, 2, 0); if ( sub_54DE90(&unk_13253630, v4) ) { v5 = (signed int)sub_5F4640(a1, 3, 0); v6 = sub_5F48F0(a1, 4, 0); sub_573FB0(v7, v4, v5, (const char *)v6); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cCastingBar"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cCastingBar"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cCastingBar"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DA730) -------------------------------------------------------- signed int __cdecl sub_5DA730(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 int v4; // edi@4 double v5; // st7@6 void *v6; // eax@6 char v7; // [sp+18h] [bp-24h]@6 int v8; // [sp+24h] [bp-18h]@1 int v9; // [sp+28h] [bp-14h]@6 int v10; // [sp+38h] [bp-4h]@1 v8 = (int)"cTimer"; sub_4675D0((int)&unk_D020420, (int)"cTimer"); dword_7508B8[dword_750CB8] = (int)"cTimer"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v3 = sub_465D80((const char *)v1)) != 0 ) { v4 = sub_462A60((void *)v3); if ( v4 ) { v5 = sub_5F4640(a1, 2, 0); v6 = off_849C18; v9 = (signed int)v5; *(_WORD *)off_849C18 = 27670; *((_WORD *)v6 + 1) = (signed int)v5; sub_4287B0(&v7, &off_849C18, 4); LOBYTE(v10) = 1; sub_549B60((void *)v4, (int)&v7, 0); sub_5F4C80(a1, 1.0); LOBYTE(v10) = 0; sub_428A70(&v7); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cTimer"); result = 1; } else { --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cTimer"); result = 0; } } else { --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cTimer"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DA8D0) -------------------------------------------------------- signed int __cdecl sub_5DA8D0(int a1) { signed int result; // eax@2 signed int v2; // ST24_4@3 int v3; // edi@3 signed int v4; // ST24_4@6 void *v5; // eax@6 int v6; // eax@8 sub_4675D0((int)&unk_D020420, (int)"cTimer"); dword_7508B8[dword_750CB8] = (int)"cTimer"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v4 = (signed int)sub_5F4640(a1, 2, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 27670; *((_WORD *)v5 + 1) = v4; if ( sub_4C81E0(&off_849C18, 4) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cTimer_Obj : Packet Too Long", 4); } sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cTimer"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cTimer"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cTimer"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DAAB0) -------------------------------------------------------- signed int __cdecl sub_5DAAB0(int a1) { signed int v2; // ST20_4@3 int v3; // ebx@3 int v4; // esi@6 int v5; // eax@8 char *v6; // [sp-4h] [bp-58h]@9 const char *v7; // [sp+0h] [bp-54h]@9 char v8; // [sp+24h] [bp-30h]@9 unsigned int v9; // [sp+44h] [bp-10h]@1 int v10; // [sp+50h] [bp-4h]@1 int v11; // [sp+54h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cAnimate"); dword_7508B8[dword_750CB8] = (int)"cAnimate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cAnimate"); return 0; } v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 ) { v10 = -1; LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAnimate"); return 0; } v4 = sub_5F48F0(a1, 2, 0); if ( !v4 ) { v10 = -1; goto LABEL_5; } v5 = sub_5F48F0(a1, 3, 0); if ( v5 ) { v7 = (const char *)v5; v6 = &v8; } else { v7 = byte_6A492E; v6 = &v8; } strncpy(v6, v7, 0x20u); if ( strcmp((const char *)v4, "start") ) { if ( !strcmp((const char *)v4, "stop") ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3124))(v3); } else { (*(void (__thiscall **)(int, char *))(*(_DWORD *)v3 + 3120))(v3, &v8); } sub_5F4C80(a1, 1.0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cAnimate"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005DACC0) -------------------------------------------------------- signed int __cdecl sub_5DACC0(int a1) { signed int v1; // ST20_4@3 int v2; // edi@4 int v3; // ebx@6 int v5; // [sp+4h] [bp-50h]@2 unsigned int v6; // [sp+8h] [bp-4Ch]@1 int v7; // [sp+20h] [bp-34h]@3 char v8; // [sp+24h] [bp-30h]@7 unsigned int v9; // [sp+44h] [bp-10h]@1 int v10; // [sp+50h] [bp-4h]@1 int v11; // [sp+54h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v6 = (unsigned int)&v11 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cAnimateForcedly"); dword_7508B8[dword_750CB8] = (int)"cAnimateForcedly"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; if ( sub_5F41F0(a1, 1) == 3 ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v7 = sub_54DE90(&unk_13253630, v1); if ( v7 ) { v2 = sub_5F48F0(a1, 2, 0); if ( !v2 ) { v10 = -1; LABEL_15: v5 = (int)"cAnimateForcedly"; goto LABEL_16; } v3 = sub_5F48F0(a1, 3, 0); if ( v3 ) strncpy(&v8, (const char *)v3, 0x20u); if ( strcmp((const char *)v2, "start") ) { if ( !strcmp((const char *)v2, "stop") ) { (*(void (__cdecl **)(unsigned int))(*(_DWORD *)v7 + 3124))(v6); goto LABEL_13; } } else { if ( v3 ) { (*(void (__stdcall **)(char *))(*(_DWORD *)v7 + 3128))(&v8); LABEL_13: sub_5F4C80(a1, 1.0); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cAnimateForcedly"); return 1; } } v10 = -1; goto LABEL_15; } } v10 = -1; v5 = (int)"cAnimateForcedly"; LABEL_16: --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005DAEC0) -------------------------------------------------------- signed int __cdecl sub_5DAEC0(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // esi@3 int v4; // eax@5 int v5; // ecx@6 int v6; // esi@6 int v7; // [sp+1Ch] [bp-3Ch]@3 char v8[4]; // [sp+20h] [bp-38h]@7 int v9; // [sp+24h] [bp-34h]@7 int v10; // [sp+28h] [bp-30h]@7 int v11; // [sp+2Ch] [bp-2Ch]@7 int v12; // [sp+30h] [bp-28h]@7 char v13[4]; // [sp+34h] [bp-24h]@6 int v14; // [sp+38h] [bp-20h]@6 int v15; // [sp+3Ch] [bp-1Ch]@6 char v16; // [sp+40h] [bp-18h]@6 unsigned int v17; // [sp+48h] [bp-10h]@1 int v18; // [sp+54h] [bp-4h]@1 int v19; // [sp+58h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGroupRegenInstance"); dword_7508B8[dword_750CB8] = (int)"cGroupRegenInstance"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v3 = sub_465D80((const char *)v1); v7 = v3; if ( v3 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 && (v5 = *(_DWORD *)(v3 + 12), *(_DWORD *)v13 = *(_DWORD *)v5, v14 = *(_DWORD *)(v5 + 4), v15 = *(_DWORD *)(v5 + 8), v16 = 0, (v6 = sub_4E7100(&unk_1321BBF0, v13, v4)) != 0) ) { v12 = 0; v11 = 0; v10 = 0; v9 = 0; *(_DWORD *)v8 = 0; strncpy(v8, "Def", 0x14u); sub_4B3590((void *)dword_D9FAF98, v7, v6 + 41, v6, (int)v8); sub_5F4C80(a1, 1.0); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cGroupRegenInstance"); result = 1; } else { --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cGroupRegenInstance"); result = 0; } } else { --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cGroupRegenInstance"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; //----- (005DB060) -------------------------------------------------------- signed int __cdecl sub_5DB060(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // esi@3 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@6 int v7; // esi@6 signed int v8; // ebx@9 signed int v9; // eax@9 int v10; // [sp+10h] [bp-44h]@3 int v11; // [sp+14h] [bp-40h]@7 int v12; // [sp+18h] [bp-3Ch]@7 char v13; // [sp+1Ch] [bp-38h]@9 char v14[4]; // [sp+30h] [bp-24h]@6 int v15; // [sp+34h] [bp-20h]@6 int v16; // [sp+38h] [bp-1Ch]@6 char v17; // [sp+3Ch] [bp-18h]@6 unsigned int v18; // [sp+44h] [bp-10h]@1 int v19; // [sp+50h] [bp-4h]@1 int v20; // [sp+54h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)&unk_6FB914); dword_7508B8[dword_750CB8] = (int)&unk_6FB914; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v3 = sub_465D80((const char *)v1); v10 = v3; if ( v3 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 && (v5 = *(_DWORD *)(v3 + 12), *(_DWORD *)v14 = *(_DWORD *)v5, v15 = *(_DWORD *)(v5 + 4), v16 = *(_DWORD *)(v5 + 8), v17 = 0, v6 = sub_4E7100(&unk_1321BBF0, v14, v4), (v7 = v6) != 0) && (v11 = *(_DWORD *)(v6 + 21), v12 = *(_DWORD *)(v6 + 25), sub_5F41F0(a1, 3) == 3) && sub_5F41F0(a1, 4) == 3 ) { v8 = (signed int)sub_5F4640(a1, 3, 0); v9 = (signed int)sub_5F4640(a1, 4, 0); *(_DWORD *)(v7 + 21) = v8; *(_DWORD *)(v7 + 25) = v9; sub_418AC0(&v13, "Def"); sub_4B3590((void *)dword_D9FAF98, v10, v7 + 41, v7, (int)&v13); *(_DWORD *)(v7 + 21) = v11; *(_DWORD *)(v7 + 25) = v12; sub_5F4ED0(a1, 1); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB914); result = 1; } else { --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB914); result = 0; } } else { --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB914); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; //----- (005DB240) -------------------------------------------------------- signed int __cdecl sub_5DB240(int a1) { signed int result; // eax@2 signed int v2; // ST44_4@3 int v3; // edi@3 int v4; // eax@5 int v5; // eax@6 int v6; // eax@7 signed int v7; // eax@7 int v8; // ebx@11 int v9; // ST44_4@11 int v10; // eax@11 unsigned int v11; // [sp+10h] [bp-9Ch]@1 int v12; // [sp+24h] [bp-88h]@6 const char *v13; // [sp+28h] [bp-84h]@5 char v14; // [sp+38h] [bp-74h]@13 char v15; // [sp+4Ch] [bp-60h]@11 char v16; // [sp+58h] [bp-54h]@11 char v17; // [sp+6Dh] [bp-3Fh]@11 char v18; // [sp+79h] [bp-33h]@11 int v19; // [sp+8Eh] [bp-1Eh]@11 int v20; // [sp+92h] [bp-1Ah]@11 unsigned int v21; // [sp+9Ch] [bp-10h]@1 int v22; // [sp+A8h] [bp-4h]@1 int v23; // [sp+ACh] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v11 = (unsigned int)&v23 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)&unk_6FB92C); dword_7508B8[dword_750CB8] = (int)&unk_6FB92C; dword_750AB8[dword_750CB8++] = -1; v22 = 0; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 || (v4 = sub_5F48F0(a1, 2, 0), (v13 = (const char *)v4) == 0) || (v5 = sub_63AB60(&unk_CFCF398, (const char *)v4), (v12 = v5) == 0) ) goto LABEL_16; v6 = sub_418B00((int)byte_85A2C0, v5); v7 = sub_639620(&unk_14D20404, (unsigned __int8 *)v6); if ( v7 == -1 ) LOWORD(v7) = -1; v7 = (unsigned __int16)v7; if ( (unsigned __int16)v7 < dword_14D20400 && *(_DWORD *)(dword_14D203FC + 4 * v7) ) { v8 = (signed __int64)sub_5F4640(a1, 3, 0); v9 = (signed __int64)sub_5F4640(a1, 4, 0); strncpy(&v15, v13, 0xCu); v16 = 0; v10 = sub_418B00((int)byte_85A2C0, v12); strncpy(&v17, (const char *)v10, 0xCu); v20 = v9; v18 = 0; v19 = v8; if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v3 + 1156))(v3, v11) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1160))(v3); (*(void (__thiscall **)(int, char *))(*(_DWORD *)v3 + 1020))(v3, &v14); sub_5F4C80(a1, 1.0); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB92C); result = 1; } else { LABEL_16: --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB92C); result = 0; } } else { --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB92C); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; //----- (005DB4B0) -------------------------------------------------------- signed int __cdecl sub_5DB4B0(int a1) { signed int result; // eax@2 signed int v2; // ST24_4@3 int v3; // eax@3 int v4; // edi@4 double v5; // st7@6 sub_4675D0((int)&unk_D020420, (int)&unk_6FB934); dword_7508B8[dword_750CB8] = (int)&unk_6FB934; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 3112))(v3); if ( v4 ) { v5 = sub_5F4640(a1, 2, 0); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3132))(v4, (signed __int64)v5); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB934); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB934); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB934); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DB640) -------------------------------------------------------- signed int __cdecl sub_5DB640(int a1) { signed int result; // eax@2 int v2; // ebx@3 signed int v3; // edi@5 double v4; // st7@5 int v5; // eax@5 unsigned int v6; // edx@5 unsigned int v7; // [sp+1Ch] [bp-18h]@5 int v8; // [sp+20h] [bp-14h]@3 int v9; // [sp+30h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)&unk_6FB948); dword_7508B8[dword_750CB8] = (int)&unk_6FB948; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( sub_5F41F0(a1, 1) ) { v8 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v8); if ( v2 ) { v3 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_5F4640(a1, 3, 0); v5 = *(_DWORD *)(v2 + 102); v6 = *(_DWORD *)v5; v8 = *(_DWORD *)(v5 + 4); v7 = v6; sub_4A2100(&unk_AF09DA8, v3 % 360 / 2, (signed int)v4, (int)&v7); sub_5F4C80(a1, (double)v7); sub_5F4C80(a1, (double)(unsigned int)v8); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB948); result = 2; } else { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB948); result = 0; } } else { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB948); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DB820) -------------------------------------------------------- signed int __cdecl sub_5DB820(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)&unk_6FB958); dword_7508B8[dword_750CB8] = (int)&unk_6FB958; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { sub_5F4C80(a1, (double)(unsigned __int16)(2 * **(_BYTE **)(v3 + 106))); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB958); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB958); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DB960) -------------------------------------------------------- signed int __cdecl sub_5DB960(int a1) { signed int result; // eax@2 signed int v2; // ST24_4@3 int v3; // esi@3 double v4; // st7@5 signed __int64 v5; // ST20_8@5 int v6; // ST04_4@6 int v7; // eax@6 sub_4675D0((int)&unk_D020420, (int)&unk_6FB964); dword_7508B8[dword_750CB8] = (int)&unk_6FB964; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F4640(a1, 2, 0), v5 = (signed __int64)v4, (unsigned int)(signed __int64)v4) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 1252))(v3, (signed __int64)v4); v6 = *(_DWORD *)(v3 + 102); v7 = sub_427BD0(&unk_13253E80); sub_549C70((void *)v3, v7, v6, 0, 0, (int)sub_566BE0, 0, 0, 0, 0, 65535); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB964); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB964); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB964); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DBB20) -------------------------------------------------------- signed int __cdecl sub_5DBB20(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // edi@3 int v4; // eax@5 int v5; // [sp-28h] [bp-78h]@6 int v6; // [sp-24h] [bp-74h]@6 int v7; // [sp-20h] [bp-70h]@6 int v8; // [sp-1Ch] [bp-6Ch]@6 int v9; // [sp-18h] [bp-68h]@6 int v10; // [sp-14h] [bp-64h]@6 int v11; // [sp-10h] [bp-60h]@6 int v12; // [sp-Ch] [bp-5Ch]@6 unsigned int v13; // [sp+8h] [bp-48h]@1 int v14; // [sp+18h] [bp-38h]@1 int v15; // [sp+1Ch] [bp-34h]@3 char v16[4]; // [sp+20h] [bp-30h]@5 int v17; // [sp+24h] [bp-2Ch]@5 int v18; // [sp+28h] [bp-28h]@5 int v19; // [sp+2Ch] [bp-24h]@5 int v20; // [sp+30h] [bp-20h]@5 int v21; // [sp+34h] [bp-1Ch]@5 int v22; // [sp+38h] [bp-18h]@5 int v23; // [sp+3Ch] [bp-14h]@5 unsigned int v24; // [sp+40h] [bp-10h]@1 int v25; // [sp+4Ch] [bp-4h]@1 int v26; // [sp+50h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v13 = (unsigned int)&v26 ^ __security_cookie; v14 = (int)&unk_6FB96C; sub_4675D0((int)&unk_D020420, (int)&unk_6FB96C); dword_7508B8[dword_750CB8] = (int)&unk_6FB96C; dword_750AB8[dword_750CB8++] = -1; v25 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v3 = sub_465D80((const char *)v1); v15 = v3; if ( v3 && (v23 = 0, v22 = 0, v21 = 0, v20 = 0, v19 = 0, v18 = 0, v17 = 0, *(_DWORD *)v16 = 0, (v4 = sub_5F48F0(a1, 2, 0)) != 0) && (v23 = 0, v22 = 0, v21 = 0, v20 = 0, v19 = 0, v18 = 0, v17 = 0, *(_DWORD *)v16 = 0, strncpy(v16, (const char *)v4, 0x20u), memcpy(&v5, v16, 0x20u), sub_4C62B0(dword_D9FBF28, v15, v5, v6, v7, v8, v9, v10, v11, v12, v3, -1, -1, -1)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB96C); result = 1; } else { --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB96C); result = 0; } } else { --dword_750CB8; v25 = -1; sub_467660((int)&unk_D020420, (int)&unk_6FB96C); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005DBCC0) -------------------------------------------------------- signed int __cdecl sub_5DBCC0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // eax@3 int v4; // edi@4 sub_4675D0((int)&unk_D020420, (int)&unk_6FB978); dword_7508B8[dword_750CB8] = (int)&unk_6FB978; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3004))(v3); if ( v4 ) { *(_DWORD *)(v4 + 7892) = (signed int)sub_5F4640(a1, 2, 0); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB978); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB978); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB978); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DBE30) -------------------------------------------------------- signed int __cdecl sub_5DBE30(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // eax@3 int v4; // edi@4 int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)&unk_6FB988); dword_7508B8[dword_750CB8] = (int)&unk_6FB988; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3004))(v3); if ( v4 ) { v5 = (signed int)sub_5F4640(a1, 2, 0); if ( v5 < 1000 ) v5 = 1000; sub_55E150(v4, v5); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB988); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB988); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB988); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DBFB0) -------------------------------------------------------- signed int __cdecl sub_5DBFB0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // eax@3 int v4; // edi@4 unsigned int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)&unk_6FB998); dword_7508B8[dword_750CB8] = (int)&unk_6FB998; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3004))(v3); if ( v4 ) { v5 = (signed int)sub_5F4640(a1, 2, 0); if ( (signed int)v5 < 1000 ) v5 = 1000; sub_55E130(v4, v5); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB998); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB998); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB998); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DC130) -------------------------------------------------------- signed int __cdecl sub_5DC130(int a1) { signed int v1; // ST2C_4@3 int v2; // eax@3 int v3; // eax@4 int *v4; // edi@5 unsigned __int64 v5; // qax@6 int v7; // [sp+4h] [bp-2Ch]@2 signed int v8; // [sp+1Ch] [bp-14h]@6 sub_4675D0((int)&unk_D020420, (int)&unk_6FB9AC); dword_7508B8[dword_750CB8] = (int)&unk_6FB9AC; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v1 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v1)) != 0) && (v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3004))(v2)) != 0 ) { v4 = (int *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1056))(v3); if ( v4 ) { v8 = (signed int)sub_5F4640(a1, 2, 0); v5 = (unsigned __int64)sub_5F4640(a1, 3, 0); if ( (_BYTE)v8 ) { if ( (unsigned __int8)v8 < 0x80u && v5 ) { sub_5C9050(v4, v8, v5, SHIDWORD(v5)); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FB9AC); return 1; } } } v7 = (int)&unk_6FB9AC; } else { v7 = (int)&unk_6FB9AC; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DC2E0) -------------------------------------------------------- signed int __cdecl sub_5DC2E0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // esi@3 int v4; // eax@6 unsigned __int8 v5; // al@6 sub_4675D0((int)&unk_D020420, (int)"cGetBaseClass"); dword_7508B8[dword_750CB8] = (int)"cGetBaseClass"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1180))(v3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1180))(v3); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 72))(v4); sub_5F4C80(a1, (double)v5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetBaseClass"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetBaseClass"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetBaseClass"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DC460) -------------------------------------------------------- signed int __cdecl sub_5DC460(int a1) { int v1; // eax@1 int v2; // eax@2 int v3; // eax@4 int v5; // eax@9 char v6; // [sp+14h] [bp-20h]@9 int v7; // [sp+20h] [bp-14h]@1 int v8; // [sp+24h] [bp-10h]@2 int v9; // [sp+30h] [bp-4h]@1 v7 = (int)"cReward"; sub_4675D0((int)&unk_D020420, (int)"cReward"); dword_7508B8[dword_750CB8] = (int)"cReward"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v2 = sub_465D80((const char *)v1), (v8 = v2) == 0) || !sub_462A60((void *)v2) || (v3 = sub_5F48F0(a1, 2, 0)) == 0 ) goto LABEL_8; if ( !strcmp((const char *)v3, "KQ") ) { if ( *(_DWORD *)(v8 + 60) == -1 ) { sub_639100(&unk_86DDD8, (int)"cReward : No KQ info", 0); LABEL_8: --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"cReward"); return 0; } sub_4285B0(&v6, *(_DWORD *)(v8 + 60)); LOBYTE(v9) = 1; v5 = sub_462A60((void *)v8); sub_549B60((void *)v5, (int)&v6, 0); LOBYTE(v9) = 0; sub_427EB0(&v6); } sub_5F4C80(a1, 1.0); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"cReward"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DC5F0) -------------------------------------------------------- signed int __cdecl sub_5DC5F0(int a1) { int v1; // eax@1 int v3; // eax@3 void *v4; // esi@3 sub_4675D0((int)&unk_D020420, (int)"cEndOfKingdomQuest"); dword_7508B8[dword_750CB8] = (int)"cEndOfKingdomQuest"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cEndOfKingdomQuest"); return 0; } v3 = sub_465D80((const char *)v1); v4 = (void *)v3; if ( !v3 ) goto LABEL_6; if ( *(_DWORD *)(v3 + 60) == -1 ) { sub_639100(&unk_86DDD8, (int)"cEndOfKingdomQuest : Invalid Shine Quest", 0); LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cEndOfKingdomQuest"); return 0; } sub_5A2470(&unk_14D12A04, *(_DWORD *)(v3 + 60)); sub_494EA0(v4, 176); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cEndOfKingdomQuest"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DC740) -------------------------------------------------------- signed int __cdecl sub_5DC740(int a1) { signed int v1; // ST20_4@3 int v2; // eax@3 int v3; // eax@4 int v4; // edi@4 int v6; // [sp+4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cWillMovement"); dword_7508B8[dword_750CB8] = (int)"cWillMovement"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v1 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v1)) != 0) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2956))(v2); v4 = v3; if ( v3 && !(*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072))(v3) + 3278) & 1) && !(*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1072))(v4) + 3278) & 2) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2536))(v4) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cWillMovement"); return 1; } v6 = (int)"cWillMovement"; } else { v6 = (int)"cWillMovement"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DC8B0) -------------------------------------------------------- signed int __cdecl sub_5DC8B0(int a1) { int v1; // eax@1 signed int result; // eax@2 void *v3; // eax@3 int v4; // eax@5 int v5; // eax@6 int v6; // eax@7 unsigned __int16 v7; // ax@7 int v8; // edi@8 int v9; // eax@8 int v10; // eax@8 char v11; // [sp+1Ch] [bp-94h]@8 char *v12; // [sp+24h] [bp-8Ch]@5 void *v13; // [sp+28h] [bp-88h]@3 int v14; // [sp+2Ch] [bp-84h]@6 __int64 v15; // [sp+30h] [bp-80h]@8 char v16; // [sp+3Ch] [bp-74h]@8 char v17; // [sp+50h] [bp-60h]@8 char v18; // [sp+5Ch] [bp-54h]@8 char v19; // [sp+71h] [bp-3Fh]@8 char v20; // [sp+7Dh] [bp-33h]@8 int v21; // [sp+92h] [bp-1Eh]@8 int v22; // [sp+96h] [bp-1Ah]@8 unsigned int v23; // [sp+A0h] [bp-10h]@1 int v24; // [sp+ACh] [bp-4h]@1 int v25; // [sp+B0h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cLinkToAll"); dword_7508B8[dword_750CB8] = (int)"cLinkToAll"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v3 = (void *)sub_465D80((const char *)v1), (v13 = v3) != 0) && sub_462A60(v3) && (v4 = sub_5F48F0(a1, 2, 0), (v12 = (char *)v4) != 0) && (v5 = sub_63AB60(&unk_CFCF398, (const char *)v4), (v14 = v5) != 0) && (v6 = sub_418B00((int)byte_85A2C0, v5), v7 = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v6), sub_4190D0((int)&unk_14D20370, v7)) ) { v8 = (signed __int64)sub_5F4640(a1, 3, 0); v15 = (signed __int64)sub_5F4640(a1, 4, 0); strncpy(&v17, v12, 0xCu); v18 = 0; v9 = sub_418B00((int)byte_85A2C0, v14); strncpy(&v19, (const char *)v9, 0xCu); v20 = 0; v21 = v8; v22 = v15; sub_428620((int)&v11, (int)&v16); LOBYTE(v24) = 1; v10 = sub_462A60(v13); sub_549B60((void *)v10, (int)&v11, 0); sub_5F4C80(a1, 1.0); LOBYTE(v24) = 0; sub_427EB0(&v11); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cLinkToAll"); result = 1; } else { --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cLinkToAll"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005DCAE0) -------------------------------------------------------- signed int __cdecl sub_5DCAE0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // eax@3 int v4; // eax@4 int v5; // edi@4 sub_4675D0((int)&unk_D020420, (int)"cMove2Where"); dword_7508B8[dword_750CB8] = (int)"cMove2Where"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1548))(v3); v5 = v4; if ( v4 ) { sub_5F4C80(a1, (double)*(unsigned int *)v4); sub_5F4C80(a1, (double)*(unsigned int *)(v5 + 4)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMove2Where"); result = 2; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMove2Where"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMove2Where"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DCC60) -------------------------------------------------------- signed int __cdecl sub_5DCC60(int a1) { int v1; // eax@1 int v3; // eax@3 int v4; // ebx@4 void *v5; // esi@8 int v6; // ebx@9 double v7; // st7@10 int v8; // edx@10 double v9; // st7@11 int v10; // edx@11 double v11; // st7@12 int v12; // edx@12 int v13; // eax@12 int v14; // ebx@13 int v15; // ebx@41 double v16; // st7@42 int v17; // edx@42 char v18; // [sp+18h] [bp-34h]@44 int v19; // [sp+24h] [bp-28h]@1 int v20; // [sp+28h] [bp-24h]@4 __int64 v21; // [sp+2Ch] [bp-20h]@9 __int64 v22; // [sp+34h] [bp-18h]@10 unsigned __int16 v23; // [sp+3Eh] [bp-Eh]@10 int v24; // [sp+48h] [bp-4h]@1 v19 = (int)"cMapMark"; sub_4675D0((int)&unk_D020420, (int)"cMapMark"); dword_7508B8[dword_750CB8] = (int)"cMapMark"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v3 = sub_465D80((const char *)v1)) == 0 ) { --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cMapMark"); return 0; } v4 = sub_462A60((void *)v3); v20 = v4; if ( !v4 || sub_5F41F0(a1, 2) != 5 ) { v24 = -1; LABEL_6: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMapMark"); return 0; } v5 = off_849C18; *(_DWORD *)off_849C18 = 27671; sub_5F4C60(a1); if ( sub_5F5C30(a1, 2) ) { while ( 1 ) { v6 = sub_5F3E50(a1); HIDWORD(v21) = v6; sub_5F4D80(a1, "Group"); sub_5F4FA0(a1, v6); if ( !sub_5F4310(a1, -1) ) break; v7 = sub_5F4640(a1, -1, 0); HIDWORD(v22) = v23 | 0xC00; v8 = 15 * *((_WORD *)v5 + 1); HIDWORD(v22) = (signed int)v7; *(_WORD *)((char *)v5 + v8 + 4) = (signed int)v7; sub_5F4D80(a1, "x"); sub_5F4FA0(a1, v6); if ( !sub_5F4310(a1, -1) ) break; v9 = sub_5F4640(a1, -1, 0); HIDWORD(v22) = v23 | 0xC00; v10 = 15 * *((_WORD *)v5 + 1); v22 = (signed __int64)v9; *(_DWORD *)((char *)v5 + v10 + 6) = (signed __int64)v9; sub_5F4D80(a1, "y"); sub_5F4FA0(a1, v6); if ( !sub_5F4310(a1, -1) ) break; v11 = sub_5F4640(a1, -1, 0); HIDWORD(v22) = v23 | 0xC00; v12 = 15 * *((_WORD *)v5 + 1); v22 = (signed __int64)v11; *(_DWORD *)((char *)v5 + v12 + 10) = (signed __int64)v11; sub_5F4D80(a1, "IconIndex"); sub_5F4FA0(a1, v6); LOBYTE(v13) = sub_5F43A0(a1, -1); if ( !v13 ) break; v14 = sub_5F48F0(a1, -1, 0); if ( strcmp((const char *)v14, "MobNormal") ) { if ( strcmp((const char *)v14, "MobChief") ) { if ( strcmp((const char *)v14, "Gate") ) { if ( strcmp((const char *)v14, "RedFlag") ) { if ( strcmp((const char *)v14, "BlueFlag") ) { if ( strcmp((const char *)v14, "MobDmg") ) { if ( strcmp((const char *)v14, "Templer") ) { if ( strcmp((const char *)v14, "Mine") ) { if ( strcmp((const char *)v14, "Normal") ) { if ( strcmp((const char *)v14, "LinkTown") ) { if ( strcmp((const char *)v14, "NotDamaged") ) { if ( strcmp((const char *)v14, "AlreadyDamaged") ) { if ( strcmp((const char *)v14, "MobChrLocFlag") ) { if ( strcmp((const char *)v14, "Kingdom") ) break; *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 4; } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 30; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 29; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 28; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 23; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 13; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 6; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 12; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 26; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 17; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 16; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 5; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 25; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 27; } sub_5F4D80(a1, "KeepTime"); v15 = HIDWORD(v21); sub_5F4FA0(a1, SHIDWORD(v21)); if ( !sub_5F4310(a1, -1) ) break; v16 = sub_5F4640(a1, -1, 0); HIDWORD(v21) = v23 | 0xC00; v17 = 15 * *((_WORD *)v5 + 1); v21 = (signed __int64)v16; *(_DWORD *)((char *)v5 + v17 + 15) = (signed __int64)v16; ++*((_WORD *)v5 + 1); sub_5F3E70(a1, v15 - 1); if ( !sub_5F5C30(a1, 2) ) { v4 = v20; goto LABEL_44; } } v24 = -1; goto LABEL_6; } LABEL_44: sub_4287B0(&v18, &off_849C18, 15 * *((_WORD *)v5 + 1) + 4); LOBYTE(v24) = 1; sub_549B60((void *)v4, (int)&v18, 0); sub_5F4C80(a1, 1.0); LOBYTE(v24) = 0; sub_428A70(&v18); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cMapMark"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DD3C0) -------------------------------------------------------- signed int __cdecl sub_5DD3C0(int a1) { signed int v2; // ST48_4@3 int v3; // ebx@3 void *v4; // esi@7 int v5; // ebx@8 int v6; // eax@11 int v7; // ebx@12 int v8; // esi@35 int v9; // eax@38 int v10; // [sp+24h] [bp-24h]@3 signed int v11; // [sp+2Ch] [bp-1Ch]@8 sub_4675D0((int)&unk_D020420, (int)"cMapMark_Obj"); dword_7508B8[dword_750CB8] = (int)"cMapMark_Obj"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMapMark_Obj"); return 0; } v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); v10 = v3; if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) != 2 || sub_5F41F0(a1, 2) != 5 ) goto LABEL_4; v4 = off_849C18; *(_DWORD *)off_849C18 = 27671; sub_5F4C60(a1); if ( sub_5F5C30(a1, 2) ) { while ( 1 ) { v5 = sub_5F3E50(a1); v11 = v5; sub_5F4D80(a1, "Group"); sub_5F4FA0(a1, v5); if ( !sub_5F4310(a1, -1) ) break; *(_WORD *)((char *)v4 + 15 * *((_WORD *)v4 + 1) + 4) = (signed int)sub_5F4640(a1, -1, 0); sub_5F4D80(a1, "x"); sub_5F4FA0(a1, v5); if ( !sub_5F4310(a1, -1) ) break; *(_DWORD *)((char *)v4 + 15 * *((_WORD *)v4 + 1) + 6) = (signed __int64)sub_5F4640(a1, -1, 0); sub_5F4D80(a1, "y"); sub_5F4FA0(a1, v5); if ( !sub_5F4310(a1, -1) ) break; *(_DWORD *)((char *)v4 + 15 * *((_WORD *)v4 + 1) + 10) = (signed __int64)sub_5F4640(a1, -1, 0); sub_5F4D80(a1, "IconIndex"); sub_5F4FA0(a1, v5); LOBYTE(v6) = sub_5F43A0(a1, -1); if ( !v6 ) break; v7 = sub_5F48F0(a1, -1, 0); if ( strcmp((const char *)v7, "MobNormal") ) { if ( strcmp((const char *)v7, "MobChief") ) { if ( strcmp((const char *)v7, "Gate") ) { if ( strcmp((const char *)v7, "RedFlag") ) { if ( strcmp((const char *)v7, "BlueFlag") ) { if ( strcmp((const char *)v7, "MobDmg") ) { if ( strcmp((const char *)v7, "Templer") ) { if ( strcmp((const char *)v7, "Mine") ) { if ( strcmp((const char *)v7, "Normal") ) { if ( strcmp((const char *)v7, "LinkTown") ) break; *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 23; } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 13; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 6; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 12; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 26; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 17; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 16; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 5; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 25; } } else { *((_BYTE *)v4 + 15 * *((_WORD *)v4 + 1) + 14) = 27; } sub_5F4D80(a1, "KeepTime"); sub_5F4FA0(a1, v11); if ( !sub_5F4310(a1, -1) ) break; *(_DWORD *)((char *)v4 + 15 * (*((_WORD *)v4 + 1))++ + 15) = (signed __int64)sub_5F4640(a1, -1, 0); sub_5F3E70(a1, v11 - 1); if ( !sub_5F5C30(a1, 2) ) { v3 = v10; goto LABEL_35; } } LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMapMark_Obj"); return 0; } LABEL_35: v8 = 15 * *((_WORD *)v4 + 1) + 4; if ( sub_4C81E0(&off_849C18, v8) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cMapMark_Obj : Packet Too Long", v8); } sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMapMark_Obj"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DDA50) -------------------------------------------------------- signed int __cdecl sub_5DDA50(int a1) { int v1; // esi@1 int v3; // eax@4 int v4; // ebx@5 void *v5; // esi@8 int v6; // ebx@9 double v7; // st7@10 int v8; // edx@10 double v9; // st7@11 int v10; // edx@11 double v11; // st7@12 int v12; // edx@12 int v13; // eax@12 int v14; // ebx@13 int v15; // ebx@33 double v16; // st7@34 int v17; // edx@34 int v18; // eax@36 char v19; // [sp+18h] [bp-3Ch]@36 int v20; // [sp+24h] [bp-30h]@4 int v21; // [sp+28h] [bp-2Ch]@4 int v22; // [sp+2Ch] [bp-28h]@1 int v23; // [sp+30h] [bp-24h]@5 __int64 v24; // [sp+34h] [bp-20h]@9 __int64 v25; // [sp+3Ch] [bp-18h]@10 unsigned __int16 v26; // [sp+46h] [bp-Eh]@10 int v27; // [sp+50h] [bp-4h]@1 v22 = (int)"cMapMark_FieldSight"; sub_4675D0((int)&unk_D020420, (int)"cMapMark_FieldSight"); dword_7508B8[dword_750CB8] = (int)"cMapMark_FieldSight"; dword_750AB8[dword_750CB8++] = -1; v27 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v20 = sub_5F46F0(a1, 2, 0), v21 = sub_5F46F0(a1, 3, 0), (v3 = sub_465D80((const char *)v1)) == 0) ) { v27 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMapMark_FieldSight"); return 0; } v4 = sub_462A60((void *)v3); v23 = v4; if ( !v4 || sub_5F41F0(a1, 4) != 5 ) { LABEL_6: v27 = -1; goto LABEL_3; } v5 = off_849C18; *(_DWORD *)off_849C18 = 27671; sub_5F4C60(a1); if ( sub_5F5C30(a1, 4) ) { while ( 1 ) { v6 = sub_5F3E50(a1); HIDWORD(v24) = v6; sub_5F4D80(a1, "Group"); sub_5F4FA0(a1, v6); if ( !sub_5F4310(a1, -1) ) goto LABEL_6; v7 = sub_5F4640(a1, -1, 0); HIDWORD(v25) = v26 | 0xC00; v8 = 15 * *((_WORD *)v5 + 1); HIDWORD(v25) = (signed int)v7; *(_WORD *)((char *)v5 + v8 + 4) = (signed int)v7; sub_5F4D80(a1, "x"); sub_5F4FA0(a1, v6); if ( !sub_5F4310(a1, -1) ) goto LABEL_6; v9 = sub_5F4640(a1, -1, 0); HIDWORD(v25) = v26 | 0xC00; v10 = 15 * *((_WORD *)v5 + 1); v25 = (signed __int64)v9; *(_DWORD *)((char *)v5 + v10 + 6) = (signed __int64)v9; sub_5F4D80(a1, "y"); sub_5F4FA0(a1, v6); if ( !sub_5F4310(a1, -1) ) goto LABEL_6; v11 = sub_5F4640(a1, -1, 0); HIDWORD(v25) = v26 | 0xC00; v12 = 15 * *((_WORD *)v5 + 1); v25 = (signed __int64)v11; *(_DWORD *)((char *)v5 + v12 + 10) = (signed __int64)v11; sub_5F4D80(a1, "IconIndex"); sub_5F4FA0(a1, v6); LOBYTE(v13) = sub_5F43A0(a1, -1); if ( !v13 ) goto LABEL_6; v14 = sub_5F48F0(a1, -1, 0); if ( strcmp((const char *)v14, "MobNormal") ) { if ( strcmp((const char *)v14, "MobChief") ) { if ( strcmp((const char *)v14, "Gate") ) { if ( strcmp((const char *)v14, "RedFlag") ) { if ( strcmp((const char *)v14, "BlueFlag") ) { if ( strcmp((const char *)v14, "MobDmg") ) { if ( strcmp((const char *)v14, "Templer") ) { if ( strcmp((const char *)v14, "Mine") ) { if ( strcmp((const char *)v14, "Normal") ) { if ( strcmp((const char *)v14, "LinkTown") ) goto LABEL_6; *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 23; } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 13; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 6; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 12; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 26; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 17; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 16; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 5; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 25; } } else { *((_BYTE *)v5 + 15 * *((_WORD *)v5 + 1) + 14) = 27; } sub_5F4D80(a1, "KeepTime"); v15 = HIDWORD(v24); sub_5F4FA0(a1, SHIDWORD(v24)); if ( !sub_5F4310(a1, -1) ) goto LABEL_6; v16 = sub_5F4640(a1, -1, 0); HIDWORD(v24) = v26 | 0xC00; v17 = 15 * *((_WORD *)v5 + 1); v24 = (signed __int64)v16; *(_DWORD *)((char *)v5 + v17 + 15) = (signed __int64)v16; ++*((_WORD *)v5 + 1); sub_5F3E70(a1, v15 - 1); if ( !sub_5F5C30(a1, 4) ) { v4 = v23; break; } } } sub_4287B0(&v19, &off_849C18, 15 * *((_WORD *)v5 + 1) + 4); LOBYTE(v27) = 1; v18 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v4, v18, (int)&v20, 0, 0, (int)&v19, 0, 65535); sub_5F4C80(a1, 1.0); LOBYTE(v27) = 0; sub_428A70(&v19); --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"cMapMark_FieldSight"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DE0A0) -------------------------------------------------------- signed int __cdecl sub_5DE0A0(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 unsigned __int8 v4; // al@4 sub_4675D0((int)&unk_D020420, (int)"cGetLevel"); dword_7508B8[dword_750CB8] = (int)"cGetLevel"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1240))(v3)) != 0 ) { sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetLevel"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetLevel"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DE1E0) -------------------------------------------------------- signed int __cdecl sub_5DE1E0(int a1) { int v1; // eax@1 int v3; // ebx@3 int v4; // ecx@5 int v5; // eax@5 int v6; // ecx@6 int v7; // eax@8 int v8; // eax@10 int v9; // eax@12 int v10; // [sp+4h] [bp-2Ch]@9 int v11; // [sp+1Ch] [bp-14h]@10 int v12; // [sp+2Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cSetFieldScript"); dword_7508B8[dword_750CB8] = (int)"cSetFieldScript"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 ) { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cSetFieldScript"); return 0; } v3 = sub_465D80((const char *)v1); if ( !v3 ) goto LABEL_4; v4 = sub_5F41F0(a1, 2); v5 = 0; if ( !v4 ) goto LABEL_14; v6 = v4 - 3; if ( !v6 ) { v11 = (signed int)sub_5F4640(a1, 2, 0); v9 = sub_54DE90(&unk_13253630, v11); if ( v9 ) { v5 = *(_DWORD *)(v9 + 126); goto LABEL_14; } LABEL_4: --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cSetFieldScript"); return 0; } if ( v6 != 1 ) goto LABEL_4; v7 = sub_5F48F0(a1, 2, 0); if ( v7 ) { v8 = sub_5063A0(&unk_13230E20, (unsigned __int8 *)v7, (int)&v11); if ( v8 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 16))(v8); LABEL_14: v10 = v5; goto LABEL_15; } goto LABEL_4; } v10 = 0; LABEL_15: sub_464410(v3, v10); sub_5F4C80(a1, 1.0); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cSetFieldScript"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DE3A0) -------------------------------------------------------- signed int __cdecl sub_5DE3A0(int a1) { int v1; // eax@1 int v2; // esi@4 int v3; // eax@4 int v4; // ecx@7 int v6; // [sp+4h] [bp-28h]@2 int v7; // [sp+1Ch] [bp-10h]@3 sub_4675D0((int)&unk_D020420, (int)&unk_6FBBBC); dword_7508B8[dword_750CB8] = (int)&unk_6FBBBC; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v7 = sub_465D80((const char *)v1); if ( v7 ) { v2 = sub_5F48F0(a1, 2, 0); v3 = sub_5F48F0(a1, 3, 0); if ( !v2 || !v3 ) { v6 = (int)&unk_6FBBBC; goto LABEL_22; } if ( strcmp((const char *)v2, "MapLogin") ) { if ( strcmp((const char *)v2, "ItemUse") ) { if ( strcmp((const char *)v2, "Tutorial") ) { if ( strcmp((const char *)v2, "MapLogout") ) { if ( strcmp((const char *)v2, "ObjectDied") ) { if ( strcmp((const char *)v2, "ServantSummon") ) { LABEL_19: v6 = (int)&unk_6FBBBC; goto LABEL_22; } v4 = 144; } else { v4 = 116; } } else { v4 = 88; } } else { v4 = 60; } } else { v4 = 32; } } else { v4 = 4; } if ( sub_4644A0(v7, v4, (char *)v3) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)&unk_6FBBBC); return 1; } goto LABEL_19; } } v6 = (int)&unk_6FBBBC; LABEL_22: --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DE650) -------------------------------------------------------- int __cdecl sub_5DE650(int a1) { signed int v1; // ST20_4@4 int v2; // esi@4 signed int v3; // ST20_4@5 int v4; // eax@5 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cAggroReset"); dword_7508B8[dword_750CB8] = (int)"cAggroReset"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && sub_5F41F0(a1, 2) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_54DE90(&unk_13253630, v3); if ( v4 ) (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 1796))(v2, v4, 1000); } v6 = (int)"cAggroReset"; } else { v6 = (int)"cAggroReset"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DE7A0) -------------------------------------------------------- signed int __cdecl sub_5DE7A0(int a1) { int v1; // eax@3 int v2; // esi@5 int v4; // [sp+8h] [bp-2Ch]@2 signed int v5; // [sp+20h] [bp-14h]@3 int v6; // [sp+24h] [bp-10h]@3 sub_4675D0((int)&unk_D020420, (int)"cSetMobAttr"); dword_7508B8[dword_750CB8] = (int)"cSetMobAttr"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v5 = (signed int)sub_5F4640(a1, 1, 0), v1 = sub_54DE90(&unk_13253630, v5), (v6 = v1) != 0) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1232))(v1) == 5 ) { v2 = sub_5F48F0(a1, 2, 0); LOBYTE(v5) = sub_5F4870(a1, 3); if ( v2 ) { if ( !strcmp((const char *)v2, "MobAggro") ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 1832))(v5); LABEL_10: sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetMobAttr"); return 1; } if ( !strcmp((const char *)v2, "CanRecovery") ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v6 + 1828))(v5); goto LABEL_10; } } v4 = (int)"cSetMobAttr"; } else { v4 = (int)"cSetMobAttr"; } --dword_750CB8; sub_467660((int)&unk_D020420, v4); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DE980) -------------------------------------------------------- int __cdecl sub_5DE980(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // ebx@4 int v4; // edi@5 int v5; // eax@7 int v6; // eax@8 int v8; // [sp-4h] [bp-30h]@2 char v9; // [sp+10h] [bp-1Ch]@8 int v10; // [sp+18h] [bp-14h]@1 int v11; // [sp+1Ch] [bp-10h]@5 int v12; // [sp+28h] [bp-4h]@1 v10 = (int)"cNotice"; sub_4675D0((int)&unk_D020420, (int)"cNotice"); dword_7508B8[dword_750CB8] = (int)"cNotice"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 ) { v3 = sub_462A60((void *)v2); if ( v3 ) { v11 = sub_5F48F0(a1, 2, 0); v4 = sub_5F48F0(a1, 3, 0); if ( v11 ) { if ( v4 ) { v5 = sub_649720(&unk_150B11D8, v11); if ( v5 ) { v6 = sub_48C200((void *)v5, (const char *)v4); sub_427E90((int)&v9, v6); LOBYTE(v12) = 1; sub_549B60((void *)v3, (int)&v9, 0); LOBYTE(v12) = 0; sub_427EB0(&v9); } } } } v8 = (int)"cNotice"; } else { v8 = (int)"cNotice"; } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DEAB0) -------------------------------------------------------- int __cdecl sub_5DEAB0(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // esi@4 int v4; // eax@5 int v6; // [sp-4h] [bp-2Ch]@2 char v7; // [sp+10h] [bp-18h]@5 int v8; // [sp+18h] [bp-10h]@1 int v9; // [sp+24h] [bp-4h]@1 v8 = (int)"cNoticeString"; sub_4675D0((int)&unk_D020420, (int)"cNoticeString"); dword_7508B8[dword_750CB8] = (int)"cNoticeString"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 ) { v3 = sub_462A60((void *)v2); if ( v3 ) { v4 = sub_5F48F0(a1, 2, 0); sub_427E90((int)&v7, v4); LOBYTE(v9) = 1; sub_549B60((void *)v3, (int)&v7, 0); LOBYTE(v9) = 0; sub_427EB0(&v7); } v6 = (int)"cNoticeString"; } else { v6 = (int)"cNoticeString"; } --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DEBB0) -------------------------------------------------------- int __cdecl sub_5DEBB0(int a1) { signed int v1; // ST20_4@2 int v2; // eax@2 int v3; // esi@2 int v4; // eax@6 unsigned __int16 v5; // ax@7 int v6; // eax@7 unsigned __int16 **v7; // ebx@7 void *v8; // edi@11 void *v9; // eax@11 void *v10; // ebx@11 int v11; // ST0C_4@12 char *v12; // eax@12 int v13; // eax@12 int v14; // ebx@15 int v15; // eax@15 int v16; // eax@17 int v17; // eax@18 int v18; // eax@18 unsigned int v20; // [sp-4h] [bp-41Ch]@1 signed int v21; // [sp+Ch] [bp-40Ch]@10 int v22; // [sp+Ch] [bp-40Ch]@12 int v23; // [sp+10h] [bp-408h]@5 int v24; // [sp+14h] [bp-404h]@7 char v25; // [sp+18h] [bp-400h]@15 char v26; // [sp+398h] [bp-80h]@12 char v27; // [sp+3A0h] [bp-78h]@12 unsigned int v28; // [sp+408h] [bp-10h]@1 int v29; // [sp+414h] [bp-4h]@15 int v30; // [sp+418h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v20 = (unsigned int)&v30 ^ __security_cookie; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); v3 = v2; if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v23 = *(_DWORD *)(v3 + 122); if ( v23 ) { v4 = sub_5F48F0(a1, 2, 0); if ( v4 ) { v5 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v4); v6 = sub_418CB0((int)&dword_14D20890, v5); v7 = (unsigned __int16 **)v6; v24 = v6; if ( v6 ) { if ( *(_DWORD *)v6 ) { if ( *(_DWORD *)(v6 + 4) ) { v21 = (signed int)sub_5F4640(a1, 3, 0); if ( v21 > 0 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 13389; *((_WORD *)v8 + 7) = **(_WORD **)(v23 + 16); *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 5) = 0; v9 = sub_63ACA0(dword_1508B168, **v7); v10 = v9; if ( v9 ) { (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD, unsigned int))(*(_DWORD *)v9 + 20))( v9, **(_WORD **)v24, &v26, "-o", v20); v11 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v12 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v26, **(_WORD **)v24, 11, *((_DWORD *)v12 + 4), v11); (*(void (__thiscall **)(void *, char *, signed int))(*(_DWORD *)v10 + 32))(v10, &v27, v21); v22 = (int)sub_4934A0(&dword_D61E064, (const char *)(*(_DWORD *)(v24 + 4) + 137)); v13 = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v10 + 112))(v10, &v27); if ( v22 && v13 ) sub_4928F0(v13, v22); sub_593350(&v25, 2); v29 = 0; sub_5933D0(&v25, (int)&v26); v14 = sub_593520(&v25, (int)((char *)v8 + 24), 0, 0, 2) + 25; *((_DWORD *)v8 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v8 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); *((_WORD *)v8 + 6) = sub_4802C0(v15); if ( sub_4C81E0(&off_849C18, v14) ) { v16 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v16); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v14); } v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v17 + 72))(v17); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); sub_43BBF0(v18); v29 = -1; nullsub_2(&v25); } } } } } } } } } } } return 0; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (005DEF00) -------------------------------------------------------- int __cdecl sub_5DEF00(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@2 int v4; // esi@2 int v5; // eax@4 unsigned __int16 v6; // ax@5 int v7; // eax@5 void *v8; // ebx@9 int v9; // eax@9 int v10; // eax@10 int v11; // esi@10 void *v12; // eax@12 void *v13; // edi@12 int v14; // ST0C_4@13 char *v15; // eax@13 int v16; // eax@13 int v17; // edi@16 int v18; // eax@16 int v19; // eax@18 int v20; // eax@19 int v21; // eax@19 unsigned int v23; // [sp-4h] [bp-A70h]@1 int v24; // [sp+0h] [bp-A6Ch]@0 int v25; // [sp+4h] [bp-A68h]@0 signed int v26; // [sp+8h] [bp-A64h]@0 signed int v27; // [sp+Ch] [bp-A60h]@8 int v28; // [sp+10h] [bp-A5Ch]@9 int v29; // [sp+14h] [bp-A58h]@13 int v30; // [sp+18h] [bp-A54h]@9 int v31; // [sp+1Ch] [bp-A50h]@5 char v32; // [sp+20h] [bp-A4Ch]@9 char v33; // [sp+66Ch] [bp-400h]@16 char v34; // [sp+9ECh] [bp-80h]@13 char v35; // [sp+9F4h] [bp-78h]@13 unsigned int v36; // [sp+A5Ch] [bp-10h]@1 int v37; // [sp+A68h] [bp-4h]@9 int v38; // [sp+A6Ch] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v23 = (unsigned int)&v38 ^ __security_cookie; v1 = 0; v2 = sub_5F48F0(a1, 1, 0); if ( v2 ) { v3 = sub_465D80((const char *)v2); v4 = v3; if ( v3 ) { if ( sub_462A60((void *)v3) ) { v5 = sub_5F48F0(a1, 2, 0); if ( v5 ) { v6 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v5); v7 = sub_418CB0((int)&dword_14D20890, v6); v31 = v7; if ( v7 ) { if ( *(_DWORD *)v7 ) { if ( *(_DWORD *)(v7 + 4) ) { v27 = (signed int)sub_5F4640(a1, 3, 0); if ( v27 > 0 ) { v8 = off_849C18; *(_WORD *)off_849C18 = 13389; *((_WORD *)v8 + 7) = **(_WORD **)(v4 + 16); *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 5) = 0; sub_4C1110(&v32, 2, 0); v37 = 0; v9 = sub_462A60((void *)v4); sub_549B60((void *)v9, (int)&v32, 0); v28 = sub_4C0DC0((int)&v32); v30 = 0; if ( v28 > 0 ) { do { v10 = sub_4C0DD0((int)&v32, v1); v11 = v10; if ( !v10 ) break; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1232))(v10) == 2 ) { v12 = sub_63ACA0(dword_1508B168, **(_WORD **)v31); v13 = v12; if ( !v12 ) break; (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD, unsigned int))(*(_DWORD *)v12 + 20))( v12, **(_WORD **)v31, &v34, "-o", v23); v14 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v15 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v34, **(_WORD **)v31, 11, *((_DWORD *)v15 + 4), v14); (*(void (__thiscall **)(void *, char *, signed int))(*(_DWORD *)v13 + 32))(v13, &v35, v27); v29 = (int)sub_4934A0(&dword_D61E064, (const char *)(*(_DWORD *)(v31 + 4) + 137)); v16 = (*(int (__thiscall **)(void *, char *))(*(_DWORD *)v13 + 112))(v13, &v35); if ( v29 && v16 ) sub_4928F0(v16, v29); sub_593350(&v33, 2); LOBYTE(v37) = 1; sub_5933D0(&v33, (int)&v34); v17 = sub_593520(&v33, (int)((char *)v8 + 24), 0, 0, 2) + 25; *((_DWORD *)v8 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 836))(v11); *((_WORD *)v8 + 1) = *(_WORD *)(v11 + 4); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 836))(v11); v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2004))(v11); *((_WORD *)v8 + 6) = sub_4802C0(v18); if ( sub_4C81E0(&off_849C18, v17) ) { v19 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v19); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v17); } v20 = (*(int (__thiscall **)(int, int, int, signed int))(*(_DWORD *)v11 + 2004))( v11, v24, v25, v26); v26 = 1; v25 = 0; v24 = 0; v23 = *((_WORD *)v8 + 6); (*(void (__thiscall **)(int))(*(_DWORD *)v20 + 72))(v20); v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 2004))(v11); sub_43BBF0(v21); LOBYTE(v37) = 0; nullsub_2(&v33); v1 = v30; } ++v1; v30 = v1; } while ( v1 < v28 ); } v37 = -1; sub_4C11C0(&v32); } } } } } } } } return 0; } // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; //----- (005DF270) -------------------------------------------------------- signed int __cdecl sub_5DF270(int a1) { int v1; // eax@1 int v3; // eax@3 int v4; // eax@5 unsigned __int16 v5; // ax@6 int v6; // esi@7 int v7; // ebx@7 double v8; // st7@7 int v9; // esi@7 int v10; // ebx@8 int v11; // ST20_4@8 int v12; // ST1C_4@8 unsigned __int16 v13; // ax@8 int v14; // eax@11 char v15; // [sp+54h] [bp-30h]@7 int v16; // [sp+60h] [bp-24h]@7 int v17; // [sp+64h] [bp-20h]@8 int v18; // [sp+68h] [bp-1Ch]@1 int v19; // [sp+6Ch] [bp-18h]@3 int v20; // [sp+70h] [bp-14h]@6 int v21; // [sp+74h] [bp-10h]@7 int v22; // [sp+80h] [bp-4h]@1 v18 = (int)"cMobRegen_Circle"; sub_4675D0((int)&unk_D020420, (int)"cMobRegen_Circle"); dword_7508B8[dword_750CB8] = (int)"cMobRegen_Circle"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v3 = sub_465D80((const char *)v1), (v19 = v3) == 0) || !sub_462A60((void *)v3) || (v4 = sub_5F48F0(a1, 2, 0)) == 0 || (v5 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v4), v20 = v5, v5 == -1) ) { --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Circle"); return 0; } v6 = (signed int)sub_5F4640(a1, 3, 0); v7 = (signed int)sub_5F4640(a1, 4, 0); v8 = sub_5F4640(a1, 5, 0); sub_4B0660((int)&v15, v6, v7, (signed int)v8); LOBYTE(v22) = 1; sub_4B0680((int)&v15, (int)&v16); v9 = sub_54DF90(&unk_13253630, (int)&v21, 5); if ( !v9 ) goto LABEL_10; v10 = *(_DWORD *)v9; v11 = v20; v12 = v21; v13 = sub_427920(&unk_14D42DC0, 90); if ( (*(int (__thiscall **)(int, int, int, int, int, int, int, _DWORD, signed int, _DWORD, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(v10 + 1760))( v9, v19, v16, v17, 4 * v13, v12, v11, 0, -1, 0, 0, -1, 0, 0, 0) ) { sub_555DF0(&unk_13253630, v21, 0, 22); LABEL_10: LOBYTE(v22) = 0; nullsub_2(&v15); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Circle"); return 0; } v14 = sub_418D40((int)&unk_14D159B0, v20); if ( v14 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 2748))(v9, *(_DWORD *)(v14 + 36)); v19 = (unsigned __int16)v21; sub_5F4C80(a1, (double)(unsigned __int16)v21); LOBYTE(v22) = 0; nullsub_2(&v15); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Circle"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DF4D0) -------------------------------------------------------- signed int __cdecl sub_5DF4D0(int a1) { int v1; // eax@1 int v3; // eax@3 int v4; // eax@5 unsigned __int16 v5; // ax@6 int v6; // edi@7 int v7; // ebx@7 double v8; // st7@7 int v9; // eax@7 int v10; // edi@7 int v11; // ebx@8 int v12; // ST20_4@8 int v13; // ST1C_4@8 unsigned __int16 v14; // ax@8 int v15; // eax@11 char v16; // [sp+54h] [bp-48h]@7 __int64 v17; // [sp+70h] [bp-2Ch]@7 int v18; // [sp+78h] [bp-24h]@1 int v19; // [sp+7Ch] [bp-20h]@3 int v20; // [sp+80h] [bp-1Ch]@7 int v21; // [sp+84h] [bp-18h]@7 int v22; // [sp+88h] [bp-14h]@6 int v23; // [sp+8Ch] [bp-10h]@7 int v24; // [sp+98h] [bp-4h]@1 v18 = (int)"cMobRegen_Rectangle"; sub_4675D0((int)&unk_D020420, (int)"cMobRegen_Rectangle"); dword_7508B8[dword_750CB8] = (int)"cMobRegen_Rectangle"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v3 = sub_465D80((const char *)v1), (v19 = v3) == 0) || !sub_462A60((void *)v3) || (v4 = sub_5F48F0(a1, 2, 0)) == 0 || (v5 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v4), v22 = v5, v5 == -1) ) { --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Rectangle"); return 0; } v6 = (signed int)sub_5F4640(a1, 3, 0); v7 = (signed int)sub_5F4640(a1, 4, 0); v20 = (signed int)sub_5F4640(a1, 5, 0); v21 = (signed int)sub_5F4640(a1, 6, 0); v8 = sub_5F4640(a1, 7, 0); sub_4B0790((int)&v16, v6, v7, v20, v21, (signed int)v8); LOBYTE(v24) = 1; sub_4B0800((int)&v16, (int)&v17); v9 = sub_54DF90(&unk_13253630, (int)&v23, 5); v10 = v9; if ( !v9 ) goto LABEL_10; v11 = *(_DWORD *)v9; v12 = v22; v13 = v23; v14 = sub_427920(&unk_14D42DC0, 90); if ( (*(int (__thiscall **)(int, int, _DWORD, _DWORD, int, int, int, _DWORD, signed int, _DWORD, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(v11 + 1760))( v10, v19, v17, HIDWORD(v17), 4 * v14, v13, v12, 0, -1, 0, 0, -1, 0, 0, 0) ) { sub_639150(&unk_86DDD8, (int)"cMobRegen_Rectangl Fail", v17, SHIDWORD(v17)); sub_555DF0(&unk_13253630, v23, 0, 22); LABEL_10: LOBYTE(v24) = 0; nullsub_2(&v16); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Rectangle"); return 0; } v15 = sub_418D40((int)&unk_14D159B0, v22); if ( v15 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 2748))(v10, *(_DWORD *)(v15 + 36)); v19 = (unsigned __int16)v23; sub_5F4C80(a1, (double)(unsigned __int16)v23); LOBYTE(v24) = 0; nullsub_2(&v16); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_Rectangle"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DF780) -------------------------------------------------------- signed int __cdecl sub_5DF780(int a1) { signed int result; // eax@2 signed int v2; // ST24_4@3 int v3; // esi@3 int v4; // eax@5 unsigned __int16 v5; // ax@7 int v6; // eax@7 int v7; // eax@8 signed int v8; // eax@9 unsigned __int8 *v9; // [sp+24h] [bp-14h]@5 int v10; // [sp+28h] [bp-10h]@6 sub_4675D0((int)&unk_D020420, (int)"cIsEquipItem"); dword_7508B8[dword_750CB8] = (int)"cIsEquipItem"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F48F0(a1, 2, 0), (v9 = (unsigned __int8 *)v4) != 0) && (v10 = (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v4), v10 != -1) && (v5 = sub_418C80((int)&dword_14D20890, v9), (v6 = sub_418CB0((int)&dword_14D20890, v5)) != 0) && (v7 = *(_DWORD *)v6) != 0 ) { v8 = (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v3 + 3376))(v3, *(_DWORD *)(v7 + 110), v10); sub_5F4C80(a1, (double)v8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsEquipItem"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsEquipItem"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsEquipItem"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005DF930) -------------------------------------------------------- int __cdecl sub_5DF930(int a1) { int v1; // edi@3 int v2; // esi@5 int v3; // eax@6 int v4; // eax@7 int v6; // [sp-4h] [bp-30h]@2 __int16 v7; // [sp+18h] [bp-14h]@3 int v8; // [sp+1Ch] [bp-10h]@4 sub_4675D0((int)&unk_D020420, (int)"cMobChat"); dword_7508B8[dword_750CB8] = (int)"cMobChat"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v7 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_5F48F0(a1, 2, 0); if ( v1 ) { v8 = sub_5F48F0(a1, 3, 0); if ( v8 ) { sub_5F4870(a1, 4); v2 = sub_54DE90(&unk_13253630, v7); if ( v2 ) { v3 = sub_649720(&unk_150B11D8, v1); if ( v3 ) { v4 = sub_48C200((void *)v3, (const char *)v8); (*(void (__thiscall **)(int, signed int, int, unsigned int))(*(_DWORD *)v2 + 1328))( v2, 65535, v4, strlen((const char *)v4)); } } } } v6 = (int)"cMobChat"; } else { v6 = (int)"cMobChat"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DFA90) -------------------------------------------------------- signed int __cdecl sub_5DFA90(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // edi@3 double v4; // st7@6 int v5; // eax@6 int v6; // eax@6 signed int v7; // ebx@7 int v8; // edi@7 int v9; // eax@8 int v10; // eax@9 int v11; // eax@10 int v13; // [sp+4h] [bp-67Ch]@2 signed int v14; // [sp+20h] [bp-660h]@6 char v15; // [sp+24h] [bp-65Ch]@6 unsigned int v16; // [sp+670h] [bp-10h]@1 int v17; // [sp+67Ch] [bp-4h]@1 int v18; // [sp+680h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cObjectCount"); dword_7508B8[dword_750CB8] = (int)"cObjectCount"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 && sub_462A60((void *)v2) ) { v4 = sub_5F4640(a1, 2, 0); sub_4C1110(&v15, (signed int)v4, 1); LOBYTE(v17) = 1; v5 = sub_462A60(v3); sub_549B60((void *)v5, (int)&v15, 0); v6 = sub_4C0DC0((int)&v15); v14 = v6; if ( (unsigned __int8)(signed int)v4 == 5 ) { v7 = 0; v8 = 0; if ( v6 > 0 ) { do { v9 = sub_4C0DD0((int)&v15, v8); if ( v9 ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1804))(v9); if ( !v10 || (v11 = *(_DWORD *)v10) != 0 && *(_BYTE *)(v11 + 82) != 1 ) ++v7; } ++v8; } while ( v8 < v14 ); } v14 = v7; } sub_5F4C80(a1, (double)v14); LOBYTE(v17) = 0; sub_4C11C0(&v15); v17 = -1; } else { sub_5F4C80(a1, 0.0); v17 = -1; } v13 = (int)"cObjectCount"; } else { sub_5F4C80(a1, 0.0); v17 = -1; v13 = (int)"cObjectCount"; } --dword_750CB8; sub_467660((int)&unk_D020420, v13); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005DFC90) -------------------------------------------------------- signed int __cdecl sub_5DFC90(int a1) { int v1; // eax@1 void *v3; // eax@3 int v4; // eax@6 void *v5; // ecx@6 double v6; // st7@8 int v7; // eax@9 int (__stdcall **v8)(int, int, int); // [sp+18h] [bp-24h]@11 __int16 v9; // [sp+1Ch] [bp-20h]@11 int v10; // [sp+20h] [bp-1Ch]@1 int (__stdcall **v11)(int, int, int); // [sp+24h] [bp-18h]@6 void *v12; // [sp+28h] [bp-14h]@6 void *v13; // [sp+2Ch] [bp-10h]@3 int v14; // [sp+38h] [bp-4h]@1 v10 = (int)"cMobSuicide"; sub_4675D0((int)&unk_D020420, (int)"cMobSuicide"); dword_7508B8[dword_750CB8] = (int)"cMobSuicide"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v3 = (void *)sub_465D80((const char *)v1), (v13 = v3) == 0) || !sub_462A60(v3) ) goto LABEL_2; if ( sub_5F41F0(a1, 2) != -1 ) { if ( sub_5F4310(a1, 2) ) { v6 = sub_5F4640(a1, 2, 0); v12 = (void *)(signed int)v6; if ( (unsigned __int16)(signed int)v6 != -1 ) { v7 = sub_54DE90(&unk_13253630, (signed int)v6); v12 = (void *)v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 5 ) { sub_427BE0(&v8); v8 = &off_6A23AC; v9 = -1; LOBYTE(v14) = 2; sub_4F0CF0(v12); sub_5F4C80(a1, 2.0); v8 = &off_6A23AC; v5 = &v8; goto LABEL_12; } } } } LABEL_2: --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cMobSuicide"); return 0; } sub_427BE0(&v11); v11 = &off_6A23AC; LOWORD(v12) = -1; LOBYTE(v14) = 1; v4 = sub_462A60(v13); sub_549B60((void *)v4, (int)&v11, 0); sub_5F4C80(a1, 1.0); v11 = &off_6A23AC; v5 = &v11; LABEL_12: LOBYTE(v14) = 0; sub_427EB0(v5); --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cMobSuicide"); return 1; } // 6A23AC: using guessed type int (__stdcall *off_6A23AC)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005DFEA0) -------------------------------------------------------- int __cdecl sub_5DFEA0(int a1) { int v1; // eax@1 int v2; // eax@3 char v3; // bl@6 signed int v4; // edi@6 char *v5; // esi@6 int v7; // [sp-4h] [bp-40h]@2 char v8; // [sp+10h] [bp-2Ch]@6 int v9; // [sp+1Ch] [bp-20h]@1 int v10; // [sp+20h] [bp-1Ch]@4 char *v11; // [sp+24h] [bp-18h]@5 int v12; // [sp+28h] [bp-14h]@6 int v13; // [sp+38h] [bp-4h]@1 v9 = (int)"cMapObjectControl"; sub_4675D0((int)&unk_D020420, (int)"cMapObjectControl"); dword_7508B8[dword_750CB8] = (int)"cMapObjectControl"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 && (v10 = sub_462A60((void *)v2)) != 0 && (v11 = (char *)sub_5F48F0(a1, 2, 0)) != 0 ) { v12 = (signed int)sub_5F4640(a1, 3, 0); v3 = v12; v4 = sub_5F46F0(a1, 4, 0); v5 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 27672; strncpy(v5, v11, 0x20u); v5[32] = v3; *(_DWORD *)(v5 + 33) = v4; sub_4287B0(&v8, &off_849C18, 39); LOBYTE(v13) = 1; sub_549B60((void *)v10, (int)&v8, 0); LOBYTE(v13) = 0; sub_428A70(&v8); v13 = -1; v7 = (int)"cMapObjectControl"; } else { v13 = -1; v7 = (int)"cMapObjectControl"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E0010) -------------------------------------------------------- int __cdecl sub_5E0010(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // eax@5 int v4; // eax@7 int v5; // eax@8 int v6; // edi@9 _UNKNOWN *v7; // ST10_4@10 int v8; // eax@10 int v10; // [sp-8h] [bp-6A8h]@2 int v11; // [sp+14h] [bp-68Ch]@7 int v12; // [sp+18h] [bp-688h]@4 int v13; // [sp+1Ch] [bp-684h]@6 int v14; // [sp+24h] [bp-67Ch]@7 int v15; // [sp+28h] [bp-678h]@10 int v16; // [sp+2Ch] [bp-674h]@10 __int64 v17; // [sp+30h] [bp-670h]@7 unsigned __int16 v18; // [sp+3Ah] [bp-666h]@7 char v19; // [sp+3Ch] [bp-664h]@10 unsigned int v20; // [sp+690h] [bp-10h]@1 int v21; // [sp+69Ch] [bp-4h]@1 int v22; // [sp+6A0h] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cSetAbstateInArea"); dword_7508B8[dword_750CB8] = (int)"cSetAbstateInArea"; dword_750AB8[dword_750CB8++] = -1; v21 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 && (v12 = sub_462A60((void *)v2)) != 0 && (v3 = sub_5F48F0(a1, 2, 0)) != 0 && (v13 = sub_639670(&byte_878354, v3), v13 != -1) && (v14 = (signed __int64)sub_5F4640(a1, 3, 0), HIDWORD(v17) = v18 | 0xC00, v11 = (signed __int64)sub_5F4640(a1, 4, 0), (v4 = sub_5F48F0(a1, 5, 0)) != 0) && (v5 = sub_439010((int)&dword_8B36A8, v4)) != 0 ) { v6 = (int)sub_5CF620((void *)v5); if ( v6 ) { v15 = (signed __int64)sub_5F4640(a1, 6, 0); v17 = (signed __int64)sub_5F4640(a1, 7, 0); v16 = v17; sub_4C11A0(&v19); LOBYTE(v21) = 1; sub_4C11D0((int)&v19, v6, v15, v17); v7 = *(_UNKNOWN **)(v6 + 8); v8 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v12, v8, (int)&v15, v7, 0, (int)&v19, 1, 65535); sub_401350((int)&v19); sub_4C1200(&v19, v13, v14, v11, 0); LOBYTE(v21) = 0; sub_4C11C0(&v19); } v10 = (int)"cSetAbstateInArea"; } else { v10 = (int)"cSetAbstateInArea"; } --dword_750CB8; v21 = -1; sub_467660((int)&unk_D020420, v10); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005E02F0) -------------------------------------------------------- signed int __cdecl sub_5E02F0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // esi@3 int v4; // eax@6 unsigned int v5; // esi@7 signed int v6; // [sp+1Ch] [bp-14h]@5 sub_4675D0((int)&unk_D020420, (int)"cGetMoveState"); dword_7508B8[dword_750CB8] = (int)"cGetMoveState"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3408))(v3), v6 != 2) && (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3412))(v3)) != 0 ) { v5 = (dword_14D129E8 - v4) / 0xAu; sub_5F4C80(a1, (double)v6); sub_5F4C80(a1, (double)v5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMoveState"); result = 2; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMoveState"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMoveState"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (005E0490) -------------------------------------------------------- signed int __cdecl sub_5E0490(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // edi@3 int v4; // eax@6 const char *v5; // esi@6 int v6; // eax@11 int v8; // [sp+0h] [bp-30h]@8 int v9; // [sp+4h] [bp-2Ch]@2 int v10; // [sp+4h] [bp-2Ch]@8 char v11; // [sp+14h] [bp-1Ch]@8 int v12; // [sp+20h] [bp-10h]@1 int v13; // [sp+2Ch] [bp-4h]@1 v12 = (int)"cQuestResult"; sub_4675D0((int)&unk_D020420, (int)"cQuestResult"); dword_7508B8[dword_750CB8] = (int)"cQuestResult"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 && sub_462A60((void *)v2) ) { v4 = sub_5F48F0(a1, 2, 0); v5 = (const char *)v4; if ( v4 ) { if ( !strcmp((const char *)v4, "Success") ) { sub_4286D0((int)&v11, 22, 18); v10 = 0; LOBYTE(v13) = 1; v8 = (int)&v11; LABEL_11: v6 = sub_462A60(v3); sub_549B60((void *)v6, v8, v10); LOBYTE(v13) = 0; sub_427EB0(&v11); sub_494EA0(v3, 432); sub_5F4C80(a1, 1.0); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cQuestResult"); return 1; } if ( !strcmp(v5, "Fail") ) { sub_4286D0((int)&v11, 22, 19); v10 = 0; LOBYTE(v13) = 2; v8 = (int)&v11; goto LABEL_11; } } v13 = -1; } else { v13 = -1; } v9 = (int)"cQuestResult"; goto LABEL_14; } v13 = -1; v9 = (int)"cQuestResult"; LABEL_14: --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E0680) -------------------------------------------------------- signed int __cdecl sub_5E0680(int a1) { signed int v2; // ST28_4@3 int v3; // esi@3 int v4; // eax@5 int v5; // eax@7 int v6; // eax@7 sub_4675D0((int)&unk_D020420, (int)"cGetMaster"); dword_7508B8[dword_750CB8] = (int)"cGetMaster"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMaster"); return 0; } v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 ) goto LABEL_4; v4 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) - 10; if ( v4 ) { if ( v4 != 2 ) { LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMaster"); return 0; } v5 = __RTDynamicCast(v3, 0, &off_84BF24, &off_84BEFC, 0); v6 = sub_419730(v5); } else { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2480))(v3); } if ( !v6 ) goto LABEL_4; sub_5F4C80(a1, (double)*(_WORD *)(v6 + 4)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMaster"); return 1; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); //----- (005E0820) -------------------------------------------------------- int __cdecl sub_5E0820(int a1) { __int16 v1; // di@4 __int16 v2; // bx@4 int v3; // esi@4 int v4; // eax@4 int v5; // edi@4 int v6; // ebx@11 int v7; // eax@11 int v9; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cPartyJoin"); dword_7508B8[dword_750CB8] = (int)"cPartyJoin"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && sub_5F41F0(a1, 2) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = (signed int)sub_5F4640(a1, 2, 0); v3 = sub_54DE90(&unk_13253630, v1); v4 = sub_54DE90(&unk_13253630, v2); v5 = v4; if ( v3 && v4 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 768))(v5) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5) == 2 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1360))(v5) == -1 ) { v6 = *(_DWORD *)v5; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); (*(void (__thiscall **)(int, int))(v6 + 3416))(v5, v7); } v9 = (int)"cPartyJoin"; } else { v9 = (int)"cPartyJoin"; } --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E09D0) -------------------------------------------------------- int __cdecl sub_5E09D0(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 void *v3; // edi@7 int v4; // eax@9 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cPartyJoin"); dword_7508B8[dword_750CB8] = (int)"cPartyJoin"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v1 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v1)) != 0) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1360))(v2) != -1 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 14433; *(_DWORD *)((char *)v3 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); if ( sub_4C81E0(&off_849C18, 6) ) { v4 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v4); } else { sub_639100(&unk_86DDD8, (int)"cPartyJoin : Packet Too Long", 6); } v6 = (int)"cPartyJoin"; } else { v6 = (int)"cPartyJoin"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (005E0B50) -------------------------------------------------------- int __cdecl sub_5E0B50(int a1) { signed int v1; // ST28_4@3 int v2; // ebx@3 signed int v3; // esi@7 signed int v4; // ebx@7 void *v5; // edi@9 double v6; // st7@10 int v7; // eax@13 int v9; // [sp-4h] [bp-34h]@2 int v10; // [sp+14h] [bp-1Ch]@3 sub_4675D0((int)&unk_D020420, (int)"cScoreInfo"); dword_7508B8[dword_750CB8] = (int)"cScoreInfo"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); v10 = v2; if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = 0; v4 = (signed __int64)sub_5F4640(a1, 2, 0); if ( v4 > 2 ) v4 = 2; v5 = off_849C18; *(_WORD *)off_849C18 = 22582; *(_DWORD *)((char *)v5 + 2) = 0; *(_DWORD *)((char *)v5 + 6) = 0; if ( v4 > 0 ) { do { v6 = sub_5F4640(a1, v3++ + 3, 0); *(_DWORD *)((char *)v5 + 4 * v3 - 2) = (signed __int64)v6; } while ( v3 < v4 ); } if ( sub_4C81E0(&off_849C18, 10) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 760))(v10); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v10, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cScoreInfo : Packet Too Long", 10); } } v9 = (int)"cScoreInfo"; } else { v9 = (int)"cScoreInfo"; } --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E0D30) -------------------------------------------------------- int __cdecl sub_5E0D30(int a1) { signed int v1; // esi@1 int v2; // eax@1 void *v3; // eax@3 signed int v4; // ebx@5 void *v5; // edi@7 double v6; // st7@8 int v7; // eax@9 char v9; // [sp+10h] [bp-2Ch]@9 int v10; // [sp+1Ch] [bp-20h]@1 void *v11; // [sp+20h] [bp-1Ch]@3 __int64 v12; // [sp+24h] [bp-18h]@5 int v13; // [sp+38h] [bp-4h]@1 v10 = (int)"cScoreInfo_AllInMap"; sub_4675D0((int)&unk_D020420, (int)"cScoreInfo_AllInMap"); dword_7508B8[dword_750CB8] = (int)"cScoreInfo_AllInMap"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v13 = 0; v2 = sub_5F48F0(a1, 1, 0); if ( v2 && (v3 = (void *)sub_465D80((const char *)v2), (v11 = v3) != 0) && sub_462A60(v3) ) { v12 = (signed __int64)sub_5F4640(a1, 2, 0); v4 = v12; if ( (signed int)v12 > 2 ) v4 = 2; v5 = off_849C18; *(_WORD *)off_849C18 = 22582; *(_DWORD *)((char *)v5 + 2) = 0; *(_DWORD *)((char *)v5 + 6) = 0; if ( v4 > 0 ) { do { v6 = sub_5F4640(a1, v1++ + 3, 0); v12 = (signed __int64)v6; *(_DWORD *)((char *)v5 + 4 * v1 - 2) = (signed __int64)v6; } while ( v1 < v4 ); } sub_4287B0(&v9, &off_849C18, 10); LOBYTE(v13) = 1; v7 = sub_462A60(v11); sub_549B60((void *)v7, (int)&v9, 0); LOBYTE(v13) = 0; sub_428A70(&v9); v13 = -1; } else { v13 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cScoreInfo_AllInMap"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E0EB0) -------------------------------------------------------- int __cdecl sub_5E0EB0(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // esi@3 void *v4; // eax@5 int v5; // eax@5 int v7; // [sp-4h] [bp-2Ch]@2 char v8; // [sp+Ch] [bp-1Ch]@5 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v9 = (int)"cStartMsg_AllInMap"; sub_4675D0((int)&unk_D020420, (int)"cStartMsg_AllInMap"); dword_7508B8[dword_750CB8] = (int)"cStartMsg_AllInMap"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 && sub_462A60((void *)v2) ) { v4 = off_849C18; *(_WORD *)off_849C18 = 29920; *(_DWORD *)((char *)v4 + 2) = 5; sub_4287B0(&v8, &off_849C18, 6); LOBYTE(v10) = 1; v5 = sub_462A60(v3); sub_549B60((void *)v5, (int)&v8, 0); LOBYTE(v10) = 0; sub_428A70(&v8); } v7 = (int)"cStartMsg_AllInMap"; } else { v7 = (int)"cStartMsg_AllInMap"; } --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E0FC0) -------------------------------------------------------- int __cdecl sub_5E0FC0(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 int v3; // eax@6 int v4; // eax@7 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cCharShapeEquipmentSet"); dword_7508B8[dword_750CB8] = (int)"cCharShapeEquipmentSet"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) { v4 = (unsigned __int16)sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v3); if ( (_WORD)v4 != -1 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 3428))(v2, v4); } } } } v6 = (int)"cCharShapeEquipmentSet"; } else { v6 = (int)"cCharShapeEquipmentSet"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005E1100) -------------------------------------------------------- int __cdecl sub_5E1100(int a1) { signed int v1; // ST1C_4@2 int v2; // esi@2 sub_4675D0((int)&unk_D020420, (int)"cCharShapeEquipmentSet"); dword_7508B8[dword_750CB8] = (int)"cCharShapeEquipmentSet"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 3436))(v2, 1); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cCharShapeEquipmentSet"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1220) -------------------------------------------------------- int __cdecl sub_5E1220(int a1) { int v1; // eax@3 int v2; // eax@4 int v3; // ebx@4 unsigned int v4; // edi@8 unsigned int v5; // esi@10 int v6; // eax@11 int v8; // [sp-4h] [bp-30h]@2 signed int v9; // [sp+18h] [bp-14h]@3 char v10; // [sp+1Ch] [bp-10h]@7 sub_4675D0((int)&unk_D020420, (int)"cEmotion"); dword_7508B8[dword_750CB8] = (int)"cEmotion"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v9 = (signed int)sub_5F4640(a1, 1, 0), (v1 = sub_54DE90(&unk_13253630, v9)) != 0) ) { v2 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 3004))(v1); v3 = v2; if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v10 = (signed int)sub_5F4640(a1, 2, 0); if ( dword_1335906C ) v4 = *(_DWORD *)(dword_1335906C + 40); else v4 = 0; v5 = 0; if ( v4 ) { do { v6 = sub_626BC0((int)&unk_13359038, v5); if ( v6 && *(_BYTE *)v6 == v10 ) break; ++v5; } while ( v5 < v4 ); } if ( v5 != v4 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 2624))(v3, (unsigned __int16)v9); } v8 = (int)"cEmotion"; } else { v8 = (int)"cEmotion"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 1335906C: using guessed type int dword_1335906C; //----- (005E13C0) -------------------------------------------------------- int __cdecl sub_5E13C0(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 int v3; // eax@5 int v5; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cKQRewardIndex"); dword_7508B8[dword_750CB8] = (int)"cKQRewardIndex"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 1904))(v2, v3); } } v5 = (int)"cKQRewardIndex"; } else { v5 = (int)"cKQRewardIndex"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E14D0) -------------------------------------------------------- signed int __cdecl sub_5E14D0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // esi@3 unsigned int v4; // ST1C_4@7 sub_4675D0((int)&unk_D020420, (int)"cGetCharNo"); dword_7508B8[dword_750CB8] = (int)"cGetCharNo"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 768))(v3) != 1 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3) == 2 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetCharNo"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetCharNo"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetCharNo"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1660) -------------------------------------------------------- signed int __cdecl sub_5E1660(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // esi@3 unsigned __int8 v4; // al@6 sub_4675D0((int)&unk_D020420, (int)"cGetAdminLevel"); dword_7508B8[dword_750CB8] = (int)"cGetAdminLevel"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 768))(v3) != 1 ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1236))(v3); sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetAdminLevel"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetAdminLevel"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetAdminLevel"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E17D0) -------------------------------------------------------- int __cdecl sub_5E17D0(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 int v3; // eax@6 int v5; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cPlaySound"); dword_7508B8[dword_750CB8] = (int)"cPlaySound"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 3452))(v2, v3); } } } v5 = (int)"cPlaySound"; } else { v5 = (int)"cPlaySound"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1900) -------------------------------------------------------- int __cdecl sub_5E1900(int a1) { signed int v1; // ST24_4@3 int v2; // esi@3 double v3; // st7@5 int v5; // [sp-4h] [bp-30h]@2 sub_4675D0((int)&unk_D020420, (int)"cEffectMsg"); dword_7508B8[dword_750CB8] = (int)"cEffectMsg"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v3 = sub_5F4640(a1, 2, 0); if ( (unsigned int)(signed __int64)v3 < 0xF ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 3456))(v2, (signed __int64)v3); } } v5 = (int)"cEffectMsg"; } else { v5 = (int)"cEffectMsg"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1A30) -------------------------------------------------------- int __cdecl sub_5E1A30(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // edi@3 int v4; // ecx@5 void *v5; // eax@6 int v6; // eax@6 int v8; // [sp-4h] [bp-3Ch]@2 char v9; // [sp+10h] [bp-28h]@6 int v10; // [sp+1Ch] [bp-1Ch]@1 __int64 v11; // [sp+20h] [bp-18h]@5 int v12; // [sp+34h] [bp-4h]@1 v10 = (int)"cEffectMsg_AllInMap"; sub_4675D0((int)&unk_D020420, (int)"cEffectMsg_AllInMap"); dword_7508B8[dword_750CB8] = (int)"cEffectMsg_AllInMap"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 ) { if ( sub_462A60((void *)v2) ) { v11 = (signed __int64)sub_5F4640(a1, 2, 0); v4 = v11; if ( (unsigned int)v11 < 0xF ) { v5 = off_849C18; *(_WORD *)off_849C18 = 8311; *(_DWORD *)((char *)v5 + 2) = v4; sub_4287B0(&v9, &off_849C18, 6); LOBYTE(v12) = 1; v6 = sub_462A60(v3); sub_549B60((void *)v6, (int)&v9, 0); LOBYTE(v12) = 0; sub_428A70(&v9); } } } v8 = (int)"cEffectMsg_AllInMap"; } else { v8 = (int)"cEffectMsg_AllInMap"; } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1B70) -------------------------------------------------------- signed int __cdecl sub_5E1B70(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 signed int v4; // eax@4 sub_4675D0((int)&unk_D020420, (int)"cGetMobID"); dword_7508B8[dword_750CB8] = (int)"cGetMobID"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (v4 = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1800))(v3), (_WORD)v4 != -1) ) { sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMobID"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMobID"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1CB0) -------------------------------------------------------- int __cdecl sub_5E1CB0(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 double v3; // st7@4 int v5; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cStaticDamage_smo"); dword_7508B8[dword_750CB8] = (int)"cStaticDamage_smo"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F4640(a1, 2, 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 3540))(v2, (signed int)v3); } v5 = (int)"cStaticDamage_smo"; } else { v5 = (int)"cStaticDamage_smo"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1DC0) -------------------------------------------------------- int __cdecl sub_5E1DC0(int a1) { int v1; // ebx@1 int v2; // edi@4 void *v3; // eax@5 int v4; // eax@7 int v5; // edi@8 size_t v6; // ebx@8 char *v7; // edx@9 char *v8; // esi@9 int v9; // eax@9 char v11; // [sp+10h] [bp-28h]@9 int v12; // [sp+1Ch] [bp-1Ch]@1 void *v13; // [sp+20h] [bp-18h]@5 char *v14; // [sp+24h] [bp-14h]@2 int v15; // [sp+28h] [bp-10h]@3 int v16; // [sp+34h] [bp-4h]@1 v12 = (int)"cMobDialog_FileName"; sub_4675D0((int)&unk_D020420, (int)"cMobDialog_FileName"); dword_7508B8[dword_750CB8] = (int)"cMobDialog_FileName"; dword_750AB8[dword_750CB8++] = -1; v16 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v14 = (char *)sub_5F48F0(a1, 2, 0)) != 0 && (v15 = sub_5F48F0(a1, 3, 0)) != 0 && (v2 = sub_5F48F0(a1, 4, 0)) != 0 && (v3 = (void *)sub_465D80((const char *)v1), (v13 = v3) != 0) && sub_462A60(v3) && (v4 = sub_649720(&unk_150B11D8, v15)) != 0 && (v5 = sub_48C200((void *)v4, (const char *)v2), v6 = strlen((const char *)v5), (signed int)v6 < 256) ) { v7 = v14; v8 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 27673; *(_DWORD *)v8 = 0; *((_DWORD *)v8 + 1) = 0; *((_DWORD *)v8 + 2) = 0; *((_DWORD *)v8 + 3) = 0; *((_DWORD *)v8 + 4) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 6) = 0; *((_DWORD *)v8 + 7) = 0; v8[32] = 0; strncpy(v8, v7, 0x20u); v8[33] = v6; memmove(v8 + 34, (const void *)v5, v6); sub_4287B0(&v11, &off_849C18, (unsigned __int8)v8[33] + 36); LOBYTE(v16) = 1; v9 = sub_462A60(v13); sub_549B60((void *)v9, (int)&v11, 0); LOBYTE(v16) = 0; sub_428A70(&v11); v16 = -1; } else { v16 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMobDialog_FileName"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E1FA0) -------------------------------------------------------- int __cdecl sub_5E1FA0(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 int v3; // ebx@4 signed int v4; // ST20_4@5 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cSetServantFlag"); dword_7508B8[dword_750CB8] = (int)"cSetServantFlag"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) { v4 = (signed int)sub_5F4640(a1, 3, 0); (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 3544))(v2, v3, v4); } } v6 = (int)"cSetServantFlag"; } else { v6 = (int)"cSetServantFlag"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E20E0) -------------------------------------------------------- __int16 __thiscall sub_5E20E0(void *this) { void *v1; // esi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"KingdomQuest::KQElement::kqe_SetLimitTime_void_"); dword_7508B8[dword_750CB8] = (int)"KingdomQuest::KQElement::kqe_SetLimitTime_void_"; dword_750AB8[dword_750CB8++] = -1; LOWORD(v1) = *(_WORD *)((char *)v1 + 77); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"KingdomQuest::KQElement::kqe_SetLimitTime_void_"); return (signed __int16)v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E2140) -------------------------------------------------------- signed int __cdecl sub_5E2140(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // eax@3 int v4; // edi@4 unsigned __int16 v5; // ax@6 signed int v6; // ebx@7 sub_4675D0((int)&unk_D020420, (int)"cObjectLocateDirection"); dword_7508B8[dword_750CB8] = (int)"cObjectLocateDirection"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = *(_DWORD *)(v3 + 102); if ( v4 && (v5 = **(_BYTE **)(v3 + 106), v5 < 0xB4u) ) { v6 = (unsigned __int16)(2 * v5); sub_5F4C80(a1, (double)*(unsigned int *)v4); sub_5F4C80(a1, (double)*(unsigned int *)(v4 + 4)); sub_5F4C80(a1, (double)v6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocateDirection"); result = 3; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocateDirection"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocateDirection"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E22E0) -------------------------------------------------------- signed int __cdecl sub_5E22E0(int a1) { double v1; // st7@5 signed int v2; // edi@7 int v3; // ebx@9 int v5; // [sp+20h] [bp-6Ch]@2 int v6; // [sp+38h] [bp-54h]@1 int v7; // [sp+3Ch] [bp-50h]@3 int v8; // [sp+40h] [bp-4Ch]@9 int v9; // [sp+44h] [bp-48h]@6 __int64 v10; // [sp+48h] [bp-44h]@5 char v11; // [sp+50h] [bp-3Ch]@10 char v12; // [sp+70h] [bp-1Ch]@10 unsigned int v13; // [sp+7Ch] [bp-10h]@1 int v14; // [sp+88h] [bp-4h]@1 int v15; // [sp+8Ch] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cEffectRegen_Object"); dword_7508B8[dword_750CB8] = (int)"cEffectRegen_Object"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v6 = sub_5F48F0(a1, 1, 0); if ( v6 && (v7 = sub_5F48F0(a1, 2, 0)) != 0 && sub_5F41F0(a1, 3) && (v1 = sub_5F4640(a1, 3, 0), HIDWORD(v10) = (signed int)v1, (unsigned __int16)(signed int)v1) && (v9 = sub_54DE90(&unk_13253630, (signed int)v1)) != 0 ) { v2 = (signed int)sub_5F4640(a1, 4, 0); HIDWORD(v10) = (signed int)sub_5F4640(a1, 5, 0); LODWORD(v10) = (signed int)sub_5F4640(a1, 6, 0); if ( !(_DWORD)v10 ) LODWORD(v10) = 1000; v3 = sub_54DF90(&unk_13253630, (int)&v8, 9); if ( v3 ) { sub_418A30(&v12, (const char *)v6); sub_418A80(&v11, (const char *)v7); if ( !(*(int (__thiscall **)(int, int, char *, int, char *, int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1764))( v3, v8, &v12, v9, &v11, 1000 * v2, v10, HIDWORD(v10)) ) { v9 = (unsigned __int16)v8; sub_5F4C80(a1, (double)(unsigned __int16)v8); --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cEffectRegen_Object"); return 1; } sub_555DF0(&unk_13253630, v8, 0, 50); } v5 = (int)"cEffectRegen_Object"; v14 = -1; } else { v14 = -1; v5 = (int)"cEffectRegen_Object"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005E2500) -------------------------------------------------------- signed int __cdecl sub_5E2500(int a1) { int v1; // esi@1 void *v2; // eax@5 int v3; // esi@7 unsigned __int16 v4; // ax@8 int v5; // eax@9 unsigned int v6; // ecx@9 void *v7; // esi@10 char v8; // dl@10 int v9; // eax@10 char v11; // [sp+18h] [bp-2Ch]@10 int v12; // [sp+24h] [bp-20h]@1 void *v13; // [sp+28h] [bp-1Ch]@5 char *v14; // [sp+2Ch] [bp-18h]@4 int v15; // [sp+30h] [bp-14h]@2 int v16; // [sp+34h] [bp-10h]@3 int v17; // [sp+40h] [bp-4h]@1 v12 = (int)"cSomebodyShout"; sub_4675D0((int)&unk_D020420, (int)"cSomebodyShout"); dword_7508B8[dword_750CB8] = (int)"cSomebodyShout"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v15 = sub_5F48F0(a1, 2, 0)) == 0 || (v16 = sub_5F48F0(a1, 3, 0)) == 0 || (v14 = (char *)sub_5F48F0(a1, 4, 0)) == 0 || (v2 = (void *)sub_465D80((const char *)v1), (v13 = v2) == 0) || !sub_462A60(v2) || (v3 = sub_649720(&unk_150B11D8, v16)) == 0 || (v4 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v15), v15 = v4, v4 == -1) || (v5 = sub_48C200((void *)v3, v14), v6 = strlen((const char *)v5), (signed int)v6 >= 256) ) goto LABEL_12; v7 = off_849C18; *(_WORD *)off_849C18 = 8223; v8 = *((_BYTE *)v7 + 22) & 0xFE | 2; *((_BYTE *)v7 + 23) = v6; *((_BYTE *)v7 + 22) = v8; *((_WORD *)v7 + 1) = v15; memmove((char *)v7 + 24, (const void *)v5, (unsigned __int8)v6); sub_4287B0(&v11, &off_849C18, *((_BYTE *)v7 + 23) + 24); LOBYTE(v17) = 1; v9 = sub_462A60(v13); if ( !sub_549B60((void *)v9, (int)&v11, 0) ) { LOBYTE(v17) = 0; sub_428A70(&v11); LABEL_12: --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cSomebodyShout"); return 0; } sub_5F4C80(a1, 1.0); LOBYTE(v17) = 0; sub_428A70(&v11); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cSomebodyShout"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E2740) -------------------------------------------------------- signed int __cdecl sub_5E2740(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 int v4; // eax@4 int v5; // eax@5 void *v6; // edi@5 __int16 v7; // ax@8 char v8; // [sp+1Ch] [bp-10h]@5 int v9; // [sp+28h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cGetKQLimitSecond"); dword_7508B8[dword_750CB8] = (int)"cGetKQLimitSecond"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v3 = sub_465D80((const char *)v1)) != 0 && (v4 = *(_DWORD *)(v3 + 60), v4 != -1) ) { v5 = sub_494970(&dword_D61E090, v4, (int)&v8); v6 = (void *)v5; if ( v5 && sub_5E20E0((void *)v5) != -1 ) { v7 = sub_5E20E0(v6); sub_5F4C80(a1, (double)(60 * (unsigned __int16)v7)); --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"cGetKQLimitSecond"); result = 1; } else { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"cGetKQLimitSecond"); result = 0; } } else { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"cGetKQLimitSecond"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D61E090: using guessed type int dword_D61E090; //----- (005E28A0) -------------------------------------------------------- signed int __cdecl sub_5E28A0(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 int v4; // edi@4 double v5; // st7@6 void *v6; // eax@6 char v7; // [sp+18h] [bp-24h]@6 int v8; // [sp+24h] [bp-18h]@1 int v9; // [sp+28h] [bp-14h]@6 int v10; // [sp+38h] [bp-4h]@1 v8 = (int)"cShowKQTimerWithLife"; sub_4675D0((int)&unk_D020420, (int)"cShowKQTimerWithLife"); dword_7508B8[dword_750CB8] = (int)"cShowKQTimerWithLife"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v3 = sub_465D80((const char *)v1)) != 0 ) { v4 = sub_462A60((void *)v3); if ( v4 ) { v5 = sub_5F4640(a1, 2, 0); v6 = off_849C18; v9 = (signed int)v5; *(_WORD *)off_849C18 = 2064; *(_WORD *)((char *)v6 + 3) = (signed int)v5; *((_BYTE *)v6 + 2) = 1; sub_4287B0(&v7, &off_849C18, 5); LOBYTE(v10) = 1; sub_549B60((void *)v4, (int)&v7, 0); sub_5F4C80(a1, 1.0); LOBYTE(v10) = 0; sub_428A70(&v7); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cShowKQTimerWithLife"); result = 1; } else { --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cShowKQTimerWithLife"); result = 0; } } else { --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cShowKQTimerWithLife"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E2A40) -------------------------------------------------------- signed int __cdecl sub_5E2A40(int a1) { signed int v1; // ST24_4@1 int v2; // esi@1 signed int result; // eax@2 signed int v4; // ST24_4@4 void *v5; // eax@4 int v6; // eax@6 sub_4675D0((int)&unk_D020420, (int)"cShowKQTimerWithLife_Obj"); dword_7508B8[dword_750CB8] = (int)"cShowKQTimerWithLife_Obj"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v4 = (signed int)sub_5F4640(a1, 2, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 2064; *(_WORD *)((char *)v5 + 3) = v4; *((_BYTE *)v5 + 2) = 1; if ( sub_4C81E0(&off_849C18, 5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cShowKQTimerWithLife_Obj : Packet Too Long", 5); } sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cShowKQTimerWithLife_Obj"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cShowKQTimerWithLife_Obj"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E2BF0) -------------------------------------------------------- signed int __cdecl sub_5E2BF0(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 int v4; // esi@4 void *v5; // eax@6 char v6; // [sp+18h] [bp-1Ch]@6 int v7; // [sp+24h] [bp-10h]@1 int v8; // [sp+30h] [bp-4h]@1 v7 = (int)"cVanishTimer"; sub_4675D0((int)&unk_D020420, (int)"cVanishTimer"); dword_7508B8[dword_750CB8] = (int)"cVanishTimer"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v3 = sub_465D80((const char *)v1)) != 0 ) { v4 = sub_462A60((void *)v3); if ( v4 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 2064; *(_WORD *)((char *)v5 + 3) = 0; *((_BYTE *)v5 + 2) = 1; sub_4287B0(&v6, &off_849C18, 5); LOBYTE(v8) = 1; sub_549B60((void *)v4, (int)&v6, 0); sub_5F4C80(a1, 1.0); LOBYTE(v8) = 0; sub_428A70(&v6); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cVanishTimer"); result = 1; } else { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cVanishTimer"); result = 0; } } else { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cVanishTimer"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E2D60) -------------------------------------------------------- signed int __cdecl sub_5E2D60(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 int v4; // ecx@4 int *v5; // eax@5 char v6; // cl@6 int v7; // [sp+14h] [bp-20h]@5 int v8; // [sp+18h] [bp-1Ch]@5 int v9; // [sp+1Ch] [bp-18h]@5 char v10; // [sp+20h] [bp-14h]@5 unsigned int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGetCurMapIndex"); dword_7508B8[dword_750CB8] = (int)"cGetCurMapIndex"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( !sub_5F41F0(a1, 1) ) goto LABEL_11; v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 ) goto LABEL_11; v4 = *(_DWORD *)(v3 + 122); if ( !v4 ) goto LABEL_11; v7 = 0; v8 = 0; v9 = 0; v10 = 0; v7 = *(_DWORD *)v4; v8 = *(_DWORD *)(v4 + 4); v9 = *(_DWORD *)(v4 + 8); v5 = &v7; v10 = 0; do { v6 = *(_BYTE *)v5; v5 = (int *)((char *)v5 + 1); } while ( v6 ); if ( v5 != (int *)((char *)&v7 + 1) ) { sub_5F4D80(a1, &v7); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cGetCurMapIndex"); result = 1; } else { LABEL_11: --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cGetCurMapIndex"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005E2EC0) -------------------------------------------------------- signed int __cdecl sub_5E2EC0(int a1) { double v1; // st7@3 int v2; // esi@3 int v3; // eax@5 signed int v4; // esi@9 double v5; // st7@9 void (__stdcall *v6)(_DWORD); // edx@9 int v8; // [sp+8h] [bp-30h]@2 int v9; // [sp+1Ch] [bp-1Ch]@9 int v10; // [sp+20h] [bp-18h]@9 int v11; // [sp+24h] [bp-14h]@1 int v12; // [sp+28h] [bp-10h]@3 int v13; // [sp+34h] [bp-4h]@1 v11 = (int)"cCastTeleport"; sub_4675D0((int)&unk_D020420, (int)"cCastTeleport"); dword_7508B8[dword_750CB8] = (int)"cCastTeleport"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( sub_5F41F0(a1, 1) ) { v1 = sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, (signed int)v1); v12 = v2; if ( v2 && (v3 = sub_5F48F0(a1, 2, 0)) != 0 ) { if ( !strcmp((const char *)v3, "AnyWhere") ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1752))(v2); LABEL_10: sub_5F4C80(a1, 1.0); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cCastTeleport"); return 1; } if ( !strcmp((const char *)v3, "SpecificCoord") ) { v4 = (signed int)sub_5F4640(a1, 3, 0); v5 = sub_5F4640(a1, 4, 0); v6 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)v12 + 1748); v10 = (signed int)v5; v9 = v4; v6(&v9); goto LABEL_10; } v13 = -1; } else { v13 = -1; } v8 = (int)"cCastTeleport"; goto LABEL_13; } v13 = -1; v8 = (int)"cCastTeleport"; LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E30A0) -------------------------------------------------------- signed int __cdecl sub_5E30A0(int a1) { signed int v1; // ST20_4@1 int v2; // eax@1 int v3; // eax@3 const void *v4; // edx@4 int v5; // eax@4 int v6; // ebx@4 char v7; // cl@5 int v9; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cGetItemIndex"); dword_7508B8[dword_750CB8] = (int)"cGetItemIndex"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_418CB0((int)&dword_14D20890, v1); if ( v2 && (v3 = *(_DWORD *)v2) != 0 ) { v4 = (const void *)(v3 + 2); v5 = v3 + 2; v6 = v5 + 1; do v7 = *(_BYTE *)v5++; while ( v7 ); if ( (unsigned int)(v5 - v6 - 1) <= 0x1E ) { sub_5F4D80(a1, v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetItemIndex"); return 1; } v9 = (int)"cGetItemIndex"; } else { v9 = (int)"cGetItemIndex"; } --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005E31D0) -------------------------------------------------------- signed int __cdecl sub_5E31D0(int a1) { signed int result; // eax@2 signed int v2; // ST24_4@3 int v3; // edi@3 int v4; // eax@5 signed int v5; // eax@6 unsigned __int8 v6; // bl@7 unsigned int v7; // edi@9 signed int v8; // [sp+24h] [bp-14h]@6 sub_4675D0((int)&unk_D020420, (int)"cGetAbstate"); dword_7508B8[dword_750CB8] = (int)"cGetAbstate"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 && (v5 = sub_639670(&byte_878354, v4), v8 = v5, v5 != -1) && (v6 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1000))(v3, v5)) != 0 && (v7 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1004))(v3, v8)) != 0 ) { sub_5F4C80(a1, (double)v6); sub_5F4C80(a1, (double)v7); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetAbstate"); result = 2; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetAbstate"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetAbstate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E33A0) -------------------------------------------------------- signed int __cdecl sub_5E33A0(int a1) { int v1; // esi@1 signed int v2; // ecx@3 void *v3; // eax@10 int v4; // eax@10 int v5; // eax@12 int v6; // esi@13 char v8; // [sp+Ch] [bp-1Ch]@14 int v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v9 = (int)"cNoticeRedWarningCode"; sub_4675D0((int)&unk_D020420, (int)"cNoticeRedWarningCode"); dword_7508B8[dword_750CB8] = (int)"cNoticeRedWarningCode"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v1 = sub_5F48F0(a1, 2, 0); if ( strlen((const char *)v1) <= 1 ) goto LABEL_15; if ( strcmp((const char *)v1, "Started") ) { if ( !strcmp((const char *)v1, "Remain1min") ) { v2 = 8227; goto LABEL_10; } if ( !strcmp((const char *)v1, "Remain30sec") ) { v2 = 8225; goto LABEL_10; } if ( !strcmp((const char *)v1, "BeAwakened") ) { v2 = 8226; goto LABEL_10; } LABEL_15: --dword_750CB8; goto LABEL_16; } v2 = 8224; LABEL_10: v3 = off_849C18; *(_WORD *)off_849C18 = 27652; *(_DWORD *)((char *)v3 + 2) = v2; v4 = sub_5F48F0(a1, 1, 0); if ( v4 ) { v5 = sub_465D80((const char *)v4); if ( v5 ) { v6 = sub_462A60((void *)v5); if ( v6 ) { sub_4287B0(&v8, &off_849C18, 6); LOBYTE(v10) = 1; sub_549B60((void *)v6, (int)&v8, 0); sub_5F4ED0(a1, 1); LOBYTE(v10) = 0; sub_428A70(&v8); --dword_750CB8; v10 = -1; sub_467660((int)&unk_D020420, (int)"cNoticeRedWarningCode"); return 1; } goto LABEL_15; } } --dword_750CB8; LABEL_16: sub_467660((int)&unk_D020420, (int)"cNoticeRedWarningCode"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E3610) -------------------------------------------------------- signed int __cdecl sub_5E3610(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 void *v4; // ebx@3 char v5; // bl@8 double v6; // st7@8 void *v7; // eax@8 char v8; // [sp+18h] [bp-28h]@8 int v9; // [sp+24h] [bp-1Ch]@1 int v10; // [sp+28h] [bp-18h]@5 int v11; // [sp+2Ch] [bp-14h]@8 int v12; // [sp+3Ch] [bp-4h]@1 v9 = (int)"PineEventScriptNode::ShineMapFog::sa_Step"; sub_4675D0((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapFog::sa_Step"); dword_7508B8[dword_750CB8] = (int)"PineEventScriptNode::ShineMapFog::sa_Step"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v3 = sub_465D80((const char *)v1); v4 = (void *)v3; if ( v3 && (v10 = sub_462A60((void *)v3), sub_462A60(v4)) && sub_5F4310(a1, 2) && sub_5F4310(a1, 3) ) { v5 = (signed int)sub_5F4640(a1, 2, 0); v6 = sub_5F4640(a1, 3, 0); v7 = off_849C18; v11 = (signed int)v6; *(_WORD *)off_849C18 = 27662; *(_WORD *)((char *)v7 + 3) = (signed int)v6; *((_BYTE *)v7 + 2) = v5; sub_4287B0(&v8, &off_849C18, 5); LOBYTE(v12) = 1; sub_549B60((void *)v10, (int)&v8, 0); sub_5F4C80(a1, 1.0); LOBYTE(v12) = 0; sub_428A70(&v8); --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapFog::sa_Step"); result = 1; } else { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapFog::sa_Step"); result = 0; } } else { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"PineEventScriptNode::ShineMapFog::sa_Step"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E3800) -------------------------------------------------------- signed int __cdecl sub_5E3800(int a1) { signed int result; // eax@2 signed int v2; // ST28_4@3 int v3; // esi@3 unsigned __int64 v4; // qax@5 signed __int64 v5; // [sp+24h] [bp-18h]@5 sub_4675D0((int)&unk_D020420, (int)"cUseMoney"); dword_7508B8[dword_750CB8] = (int)"cUseMoney"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v5 = (signed __int64)sub_5F4640(a1, 2, 0), LODWORD(v4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1076))(v3), v4 >= (unsigned int)v5) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 1940))(v3, v5, 0); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cUseMoney"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cUseMoney"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cUseMoney"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E39B0) -------------------------------------------------------- int __cdecl sub_5E39B0(int a1) { signed int v1; // ST48_4@3 int v2; // edi@3 int v3; // eax@5 unsigned int v4; // ebx@8 int v5; // eax@9 __int16 v6; // bx@15 double v7; // st7@15 void *v8; // eax@15 int v9; // eax@17 int v11; // [sp-4h] [bp-3Ch]@2 int v12; // [sp+10h] [bp-28h]@5 signed __int64 v13; // [sp+1Ch] [bp-1Ch]@5 char v14; // [sp+2Bh] [bp-Dh]@5 sub_4675D0((int)&unk_D020420, (int)"cTopView"); dword_7508B8[dword_750CB8] = (int)"cTopView"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v14 = (signed int)sub_5F4640(a1, 2, 0); v12 = (signed __int64)sub_5F4640(a1, 3, 0); v13 = (signed __int64)sub_5F4640(a1, 4, 0); v3 = *(_DWORD *)(v2 + 122); if ( v3 && *(_DWORD *)(v3 + 16) ) { if ( sub_549240(v2) == 1 ) { v4 = -1; } else { v5 = *(_DWORD *)(v2 + 122); if ( *(_DWORD *)(v5 + 292) == 1 ) v4 = -1; else v4 = *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72) * *(_DWORD *)(*(_DWORD *)(v5 + 16) + 72); } } else { v4 = 0; } if ( v14 != 1 || (**(_DWORD **)(v2 + 102) - v12) * (**(_DWORD **)(v2 + 102) - v12) + (*(_DWORD *)(*(_DWORD *)(v2 + 102) + 4) - (signed int)v13) * (*(_DWORD *)(*(_DWORD *)(v2 + 102) + 4) - (signed int)v13) <= v4 >> 1 ) { v6 = (signed int)sub_5F4640(a1, 5, 0); v7 = sub_5F4640(a1, 6, 0); v8 = off_849C18; *(_WORD *)off_849C18 = 27674; *(_DWORD *)((char *)v8 + 3) = v12; *(_WORD *)((char *)v8 + 11) = v6; *((_BYTE *)v8 + 2) = v14; *(_DWORD *)((char *)v8 + 7) = v13; *(_WORD *)((char *)v8 + 13) = (signed int)v7; if ( sub_4C81E0(&off_849C18, 15) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cTopView : Packet Too Long", 15); } } v11 = (int)"cTopView"; } else { v11 = (int)"cTopView"; } } else { v11 = (int)"cTopView"; } --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E3C40) -------------------------------------------------------- int __cdecl sub_5E3C40(int a1) { signed int v1; // ST20_4@3 int v2; // ebx@3 int v3; // eax@5 int v4; // edi@6 int v5; // eax@7 int v6; // eax@8 size_t v7; // ecx@8 void *v8; // esi@9 const void *v9; // ST04_4@9 void *v10; // eax@9 int v11; // esi@9 int v12; // eax@11 int v14; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cSystemMessage"); dword_7508B8[dword_750CB8] = (int)"cSystemMessage"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) { v4 = sub_649720(&unk_150B11D8, v3); if ( v4 ) { v5 = sub_5F48F0(a1, 3, 0); if ( v5 ) { v6 = sub_48C200((void *)v4, (const char *)v5); v7 = strlen((const char *)v6); if ( (signed int)v7 < 256 ) { v8 = off_849C18; v9 = (const void *)v6; v10 = (char *)off_849C18 + 3; *(_WORD *)off_849C18 = 27675; *((_BYTE *)v8 + 2) = v7; memmove(v10, v9, v7); v11 = *((_BYTE *)v8 + 2) + 3; if ( sub_4C81E0(&off_849C18, v11) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cSystemMessage_Obj : Packet Too Long", v11); } } } } } } v14 = (int)"cSystemMessage"; } else { v14 = (int)"cSystemMessage"; } --dword_750CB8; sub_467660((int)&unk_D020420, v14); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E3E00) -------------------------------------------------------- int __cdecl sub_5E3E00(int a1) { signed int v1; // ST20_4@3 int v2; // edi@3 double v3; // st7@4 void *v4; // eax@4 int v5; // eax@6 int v7; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cHideOtherPlayer"); dword_7508B8[dword_750CB8] = (int)"cHideOtherPlayer"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F4640(a1, 2, 0); v4 = off_849C18; *(_WORD *)off_849C18 = 27676; *((_BYTE *)v4 + 2) = (signed int)v3; if ( sub_4C81E0(&off_849C18, 3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cHideOtherPlayer : Packet Too Long", 3); } } v7 = (int)"cHideOtherPlayer"; } else { v7 = (int)"cHideOtherPlayer"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E3F60) -------------------------------------------------------- int __cdecl sub_5E3F60(int a1) { signed int v1; // ST20_4@3 int v2; // edi@3 signed int v3; // ebx@4 signed int v4; // ST20_4@5 void *v5; // eax@5 int v6; // eax@7 int v8; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cEffectTimer"); dword_7508B8[dword_750CB8] = (int)"cEffectTimer"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F46F0(a1, 2, 0); if ( v3 < 2 ) { v4 = (signed int)sub_5F4640(a1, 3, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 27677; *(_WORD *)((char *)v5 + 3) = v4; *((_BYTE *)v5 + 2) = v3; if ( sub_4C81E0(&off_849C18, 5) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cEffectTimer : Packet Too Long", 5); } } } v8 = (int)"cEffectTimer"; } else { v8 = (int)"cEffectTimer"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E40F0) -------------------------------------------------------- int __cdecl sub_5E40F0(int a1) { __int16 v1; // si@3 __int16 v2; // bx@3 int v3; // esi@3 int v4; // ebx@4 int v6; // [sp-4h] [bp-2Ch]@2 int v7; // [sp+14h] [bp-14h]@4 sub_4675D0((int)&unk_D020420, (int)"cKillObject"); dword_7508B8[dword_750CB8] = (int)"cKillObject"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = (signed int)sub_5F4640(a1, 2, 0); v3 = sub_54DE90(&unk_13253630, v1); if ( v3 ) { v4 = sub_54DE90(&unk_13253630, v2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1256))(v3); if ( !sub_5F41F0(a1, 2) ) v4 = 0; (*(void (__thiscall **)(int, int, int, _DWORD, signed int))(*(_DWORD *)v3 + 1468))(v3, v4, v7, 0, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 3560))(v3); } v6 = (int)"cKillObject"; } else { v6 = (int)"cKillObject"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4260) -------------------------------------------------------- int __cdecl sub_5E4260(int a1) { signed int v1; // esi@1 int v2; // eax@1 int result; // eax@2 int v4; // eax@3 int v5; // edi@5 int v6; // eax@5 int v7; // eax@8 int v8; // esi@8 __int16 v9; // ax@11 char v10; // [sp+10h] [bp-30h]@7 int v11; // [sp+28h] [bp-18h]@1 int v12; // [sp+2Ch] [bp-14h]@4 int v13; // [sp+30h] [bp-10h]@5 int v14; // [sp+3Ch] [bp-4h]@1 v11 = (int)"cFindNearestMobList"; sub_4675D0((int)&unk_D020420, (int)"cFindNearestMobList"); dword_7508B8[dword_750CB8] = (int)"cFindNearestMobList"; v1 = -1; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v2 = sub_5F48F0(a1, 1, 0); if ( v2 && (v4 = sub_465D80((const char *)v2)) != 0 && (v12 = sub_462A60((void *)v4)) != 0 ) { v5 = 0; v13 = 65535; v6 = sub_5F48F0(a1, 2, 0); if ( v6 ) v13 = (unsigned __int16)sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v6); sub_429F60((int)&v10); LOBYTE(v14) = 1; sub_549B60((void *)v12, (int)&v10, 0); sub_4285A0((int)&v10); if ( sub_429B20((int)&v10) == 1 ) { do { v7 = sub_429B40((int)&v10); v8 = v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 5 ) { if ( (_WORD)v13 == -1 || (v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1800))(v8), v9 == (_WORD)v13) ) { sub_5F4CC0(a1, *(_WORD *)(v8 + 4)); ++v5; } } } } while ( sub_429B20((int)&v10) == 1 ); v1 = -1; } if ( sub_5F3D20(a1, v5) ) { LOBYTE(v14) = 0; sub_42A030((int)&v10); --dword_750CB8; v14 = v1; sub_467660((int)&unk_D020420, (int)"cFindNearestMobList"); result = v5; } else { sub_639100(&unk_86DDD8, (int)"cFindNearestMobList Lua Stack Lack - ", v5); LOBYTE(v14) = 0; sub_42A030((int)&v10); --dword_750CB8; v14 = v1; sub_467660((int)&unk_D020420, (int)"cFindNearestMobList"); result = 0; } } else { --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cFindNearestMobList"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4460) -------------------------------------------------------- int __cdecl sub_5E4460(int a1) { signed int v1; // ST2C_4@3 int v2; // esi@3 signed int v3; // ebx@4 int v4; // eax@4 void *v5; // edi@5 int v6; // eax@7 void *v7; // edi@8 int v8; // eax@8 int v9; // eax@10 int v10; // eax@12 int v12; // [sp-4h] [bp-2Ch]@2 unsigned __int8 v13; // [sp+1Bh] [bp-Dh]@4 sub_4675D0((int)&unk_D020420, (int)"cSaveTutorialInfo"); dword_7508B8[dword_750CB8] = (int)"cSaveTutorialInfo"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F46F0(a1, 2, 0); v13 = (signed int)sub_5F4640(a1, 3, 0); v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3572))(v2); if ( v4 ) { *(_BYTE *)(v4 + 4) = v13; *(_DWORD *)v4 = v3; v5 = off_849C18; *(_WORD *)off_849C18 = 4376; *(_DWORD *)((char *)v5 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)((char *)v5 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 840))(v2); *(_DWORD *)((char *)v5 + 10) = v3; *((_BYTE *)v5 + 14) = v13; if ( sub_4C81E0(&off_849C18, 15) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"cSaveTutorialInfo : Packet Too Long", 15); } v7 = off_849C18; *(_WORD *)off_849C18 = 4380; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_BYTE *)v7 + 10) = v13; *(_DWORD *)((char *)v7 + 2) = v8; *(_DWORD *)((char *)v7 + 6) = v3; if ( sub_4C81E0(&off_849C18, 11) ) { v9 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v9); } else { sub_639100(&unk_86DDD8, (int)"cSaveTutorialInfo : Packet Too Long", 11); } if ( v3 == 1 ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); sub_611160(2025, v10, 1, v13); } } } v12 = (int)"cSaveTutorialInfo"; } else { v12 = (int)"cSaveTutorialInfo"; } --dword_750CB8; sub_467660((int)&unk_D020420, v12); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; //----- (005E46A0) -------------------------------------------------------- int __cdecl sub_5E46A0(int a1) { signed int v1; // ST20_4@3 int v2; // edi@3 double v3; // st7@4 void *v4; // eax@4 int v5; // eax@6 int v7; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cProgressTutorial"); dword_7508B8[dword_750CB8] = (int)"cProgressTutorial"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { v3 = sub_5F4640(a1, 2, 0); v4 = off_849C18; *(_WORD *)off_849C18 = 4374; *((_BYTE *)v4 + 2) = (signed int)v3; if ( sub_4C81E0(&off_849C18, 3) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cProgressTutorial : Packet Too Long", 3); } } v7 = (int)"cProgressTutorial"; } else { v7 = (int)"cProgressTutorial"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4800) -------------------------------------------------------- signed int __cdecl sub_5E4800(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 int v4; // eax@4 sub_4675D0((int)&unk_D020420, (int)"cGetTutorialInfo"); dword_7508B8[dword_750CB8] = (int)"cGetTutorialInfo"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3572))(v3)) != 0 ) { sub_5F4C80(a1, (double)*(_BYTE *)(v4 + 4)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetTutorialInfo"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetTutorialInfo"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4940) -------------------------------------------------------- int __cdecl sub_5E4940(int a1) { signed int v1; // ST1C_4@2 int v2; // eax@2 sub_4675D0((int)&unk_D020420, (int)"cLevelUp"); dword_7508B8[dword_750CB8] = (int)"cLevelUp"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3576))(v2); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cLevelUp"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4A30) -------------------------------------------------------- signed int __cdecl sub_5E4A30(int a1) { int v2; // eax@3 int v3; // eax@4 int v4; // eax@6 unsigned __int16 v5; // ax@7 signed int v6; // edi@8 signed int v7; // ebx@8 signed int v8; // ST78_4@8 int v9; // eax@8 int v10; // ebx@9 int v11; // edx@9 int v12; // eax@9 int v13; // edi@9 int v14; // eax@13 int v15; // [sp+60h] [bp-30h]@4 signed int v16; // [sp+64h] [bp-2Ch]@8 signed int v17; // [sp+68h] [bp-28h]@8 signed int v18; // [sp+6Ch] [bp-24h]@8 int v19; // [sp+70h] [bp-20h]@7 int v20; // [sp+78h] [bp-18h]@9 int v21; // [sp+7Ch] [bp-14h]@9 int v22; // [sp+8Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cMobRegen_XY_Layer"); dword_7508B8[dword_750CB8] = (int)"cMobRegen_XY_Layer"; dword_750AB8[dword_750CB8++] = -1; v22 = 0; if ( !sub_5F41F0(a1, 8) || (v2 = sub_5F48F0(a1, 1, 0)) == 0 || (v3 = sub_465D80((const char *)v2), (v15 = v3) == 0) || !sub_462A60((void *)v3) || (v4 = sub_5F48F0(a1, 2, 0)) == 0 || (v5 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v4), v19 = v5, v5 == -1) ) { --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_XY_Layer"); return 0; } v16 = (signed int)sub_5F4640(a1, 3, 0); v17 = (signed int)sub_5F4640(a1, 4, 0); v18 = (signed int)sub_5F4640(a1, 5, 0); v6 = sub_5F46F0(a1, 6, 0); v7 = sub_5F46F0(a1, 7, 0); v8 = (signed int)sub_5F4640(a1, 8, 0); v9 = sub_54DE90(&unk_13253630, v8); if ( !v9 || (v10 = (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v9 + 3504))(v9, v7, v6), v20 = v11, v12 = sub_54DF90(&unk_13253630, (int)&v21, 5), (v13 = v12) == 0) ) goto LABEL_12; if ( (*(int (__thiscall **)(int, int, signed int, signed int, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, signed int, _DWORD, int, int))(*(_DWORD *)v12 + 1760))( v12, v15, v16, v17, v18, v21, v19, 0, -1, 0, 0, -1, 0, v10, v20) ) { sub_555DF0(&unk_13253630, v21, 0, 22); LABEL_12: --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_XY_Layer"); return 0; } v14 = sub_418D40((int)&unk_14D159B0, v19); if ( v14 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v13 + 2748))(v13, *(_DWORD *)(v14 + 36)); sub_5F4C80(a1, (double)(unsigned __int16)v21); --dword_750CB8; v22 = -1; sub_467660((int)&unk_D020420, (int)"cMobRegen_XY_Layer"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4CD0) -------------------------------------------------------- int __cdecl sub_5E4CD0(int a1) { signed int v1; // ST6C_4@3 int v2; // edi@3 int v3; // ebx@7 signed int v4; // eax@7 void *v5; // ecx@8 int v6; // eax@10 int v8; // [sp-4h] [bp-3Ch]@2 int v9; // [sp+14h] [bp-24h]@7 __int16 v10; // [sp+20h] [bp-18h]@7 __int16 v11; // [sp+24h] [bp-14h]@7 signed int v12; // [sp+28h] [bp-10h]@7 sub_4675D0((int)&unk_D020420, (int)"cCameraMove_Obj"); dword_7508B8[dword_750CB8] = (int)"cCameraMove_Obj"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = (signed __int64)sub_5F4640(a1, 2, 0); v9 = (signed __int64)sub_5F4640(a1, 3, 0); v10 = (signed int)sub_5F4640(a1, 4, 0); v11 = (signed int)sub_5F4640(a1, 5, 0); v12 = (signed int)sub_5F4640(a1, 6, 0); v4 = sub_5F46F0(a1, 7, 0); if ( v4 < 2 ) { v5 = off_849C18; *(_WORD *)off_849C18 = 27668; *((_BYTE *)v5 + 2) = v4; *(_WORD *)((char *)v5 + 11) = v10; *(_DWORD *)((char *)v5 + 7) = v9; *(_DWORD *)((char *)v5 + 3) = v3; *(_WORD *)((char *)v5 + 13) = v11; *(_WORD *)((char *)v5 + 15) = v12; if ( sub_4C81E0(&off_849C18, 17) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cCameraMove_Obj : Packet Too Long", 17); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3536))(v2); } } } } v8 = (int)"cCameraMove_Obj"; } else { v8 = (int)"cCameraMove_Obj"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E4F30) -------------------------------------------------------- int __cdecl sub_5E4F30(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 int v3; // eax@5 int v5; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cSetSightState"); dword_7508B8[dword_750CB8] = (int)"cSetSightState"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v3 = sub_5F46F0(a1, 2, 0); if ( v3 < 2 ) sub_549230(v2, v3); } } v5 = (int)"cSetSightState"; } else { v5 = (int)"cSetSightState"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5040) -------------------------------------------------------- int __cdecl sub_5E5040(int a1) { signed int v1; // ST2C_4@3 int v2; // esi@3 signed int v3; // ebx@6 signed int v4; // eax@6 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cMoveLayer"); dword_7508B8[dword_750CB8] = (int)"cMoveLayer"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v3 = sub_5F46F0(a1, 2, 0); v4 = sub_5F46F0(a1, 3, 0); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 3508))(v2, v4, v3); } v6 = (int)"cMoveLayer"; } else { v6 = (int)"cMoveLayer"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5170) -------------------------------------------------------- int __cdecl sub_5E5170(int a1) { signed int v1; // ST20_4@3 int v2; // edi@3 int v3; // ebx@6 void *v4; // esi@7 int v5; // eax@9 int v7; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cFreeStatInit"); dword_7508B8[dword_750CB8] = (int)"cFreeStatInit"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v1 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v1)) != 0) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2760))(v2) != 1 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1060))(v2); if ( v3 ) { v4 = off_849C18; *(_WORD *)off_849C18 = 4378; *(_DWORD *)((char *)v4 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); *((_BYTE *)v4 + 7) = *(_BYTE *)v3; *((_BYTE *)v4 + 8) = *(_BYTE *)(v3 + 1); *((_BYTE *)v4 + 9) = *(_BYTE *)(v3 + 2); *((_BYTE *)v4 + 10) = *(_BYTE *)(v3 + 3); *((_BYTE *)v4 + 11) = *(_BYTE *)(v3 + 4); if ( sub_4C81E0(&off_849C18, 12) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"cFreeStatInit : Packet Too Long", 12); } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2764))(v2); } v7 = (int)"cFreeStatInit"; } else { v7 = (int)"cFreeStatInit"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (005E5320) -------------------------------------------------------- signed int __cdecl sub_5E5320(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 sub_4675D0((int)&unk_D020420, (int)"cWaitIdle"); dword_7508B8[dword_750CB8] = (int)"cWaitIdle"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2244))(v3) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cWaitIdle"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cWaitIdle"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5460) -------------------------------------------------------- int __cdecl sub_5E5460(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 double v3; // st7@5 int v5; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cMobDetectRange"); dword_7508B8[dword_750CB8] = (int)"cMobDetectRange"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 && sub_5F4310(a1, 2) ) { v3 = sub_5F4640(a1, 2, 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2236))(v2, (signed int)v3); } v5 = (int)"cMobDetectRange"; } else { v5 = (int)"cMobDetectRange"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5570) -------------------------------------------------------- signed int __cdecl sub_5E5570(int a1) { signed int v1; // ST1C_4@3 int v2; // eax@3 signed int v4; // [sp-4h] [bp-28h]@2 sub_4675D0((int)&unk_D020420, (int)"cGetKQTeamType"); dword_7508B8[dword_750CB8] = (int)"cGetKQTeamType"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v1 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v1)) != 0) ) v4 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 3584))(v2); else v4 = 2; sub_5F4CC0(a1, v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetKQTeamType"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5680) -------------------------------------------------------- signed int __cdecl sub_5E5680(int a1) { int v1; // eax@1 signed int v2; // ST1C_4@2 int v3; // eax@2 int v5; // [sp-4h] [bp-28h]@1 sub_4675D0((int)&unk_D020420, (int)"cIsKQJoiner"); dword_7508B8[dword_750CB8] = (int)"cIsKQJoiner"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F41F0(a1, 1); v5 = 0; if ( v1 ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); v5 = v3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3592))(v3); } sub_5F4ED0(a1, v5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsKQJoiner"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5790) -------------------------------------------------------- int __cdecl sub_5E5790(int a1) { int v1; // esi@1 int v2; // eax@3 int v3; // eax@3 int v4; // esi@3 int v5; // edi@4 int v6; // eax@5 int v7; // eax@7 char v9; // [sp+10h] [bp-24h]@9 int v10; // [sp+1Ch] [bp-18h]@1 int v11; // [sp+20h] [bp-14h]@3 char v12; // [sp+24h] [bp-10h]@5 int v13; // [sp+30h] [bp-4h]@1 v10 = (int)"cSetTeamBattle"; sub_4675D0((int)&unk_D020420, (int)"cSetTeamBattle"); dword_7508B8[dword_750CB8] = (int)"cSetTeamBattle"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (LOBYTE(v2) = sub_5F4870(a1, 2), v11 = v2, v3 = sub_465D80((const char *)v1), (v4 = v3) != 0) && (v5 = sub_462A60((void *)v3)) != 0 && (v6 = sub_494970(&dword_D61E090, *(_DWORD *)(v4 + 60), (int)&v12)) != 0 ) { if ( v11 == 1 ) { *(_BYTE *)(v6 + 364) = 1; v7 = 40; } else { *(_BYTE *)(v6 + 364) = 0; v7 = 41; } sub_428000((int)&v9, 6, v7); LOBYTE(v13) = 1; sub_549B60((void *)v5, (int)&v9, 0); LOBYTE(v13) = 0; sub_427EB0(&v9); --dword_750CB8; } else { --dword_750CB8; } v13 = -1; sub_467660((int)&unk_D020420, (int)"cSetTeamBattle"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // D61E090: using guessed type int dword_D61E090; //----- (005E58D0) -------------------------------------------------------- int __cdecl sub_5E58D0(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // esi@3 int v4; // ebx@5 int v5; // eax@6 void *v6; // ecx@6 int v8; // [sp-4h] [bp-30h]@2 char v9; // [sp+10h] [bp-1Ch]@9 int v10; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [bp-4h]@1 v10 = (int)"cSetCanUseReviveItem"; sub_4675D0((int)&unk_D020420, (int)"cSetCanUseReviveItem"); dword_7508B8[dword_750CB8] = (int)"cSetCanUseReviveItem"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = v2; if ( v2 ) { v4 = sub_462A60((void *)v2); if ( v4 ) { LOBYTE(v5) = sub_5F4870(a1, 2); v6 = off_849C18; *(_WORD *)off_849C18 = 6187; if ( v5 == 1 ) { *(_BYTE *)(v3 + 496) |= 1u; *((_BYTE *)v6 + 2) = 1; } else { *(_BYTE *)(v3 + 496) &= 0xFEu; *((_BYTE *)v6 + 2) = 0; } sub_4287B0(&v9, &off_849C18, 3); LOBYTE(v11) = 1; sub_549B60((void *)v4, (int)&v9, 0); LOBYTE(v11) = 0; sub_428A70(&v9); } v11 = -1; } else { v11 = -1; } v8 = (int)"cSetCanUseReviveItem"; } else { v11 = -1; v8 = (int)"cSetCanUseReviveItem"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5A10) -------------------------------------------------------- int __cdecl sub_5E5A10(int a1) { int v1; // eax@1 int v2; // edi@3 int v3; // eax@4 int v5; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"cSetCanUseReviveSkill"); dword_7508B8[dword_750CB8] = (int)"cSetCanUseReviveSkill"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); if ( v2 ) { LOBYTE(v3) = sub_5F4870(a1, 2); if ( v3 == 1 ) *(_BYTE *)(v2 + 496) |= 2u; else *(_BYTE *)(v2 + 496) &= 0xFDu; } v5 = (int)"cSetCanUseReviveSkill"; } else { v5 = (int)"cSetCanUseReviveSkill"; } --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5AF0) -------------------------------------------------------- int __cdecl sub_5E5AF0(int a1) { int v1; // eax@1 int v2; // edi@3 int v4; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"cSetReviveDelayTime"); dword_7508B8[dword_750CB8] = (int)"cSetReviveDelayTime"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); if ( v2 ) *(_DWORD *)(v2 + 500) = sub_5F46F0(a1, 2, 0); v4 = (int)"cSetReviveDelayTime"; } else { v4 = (int)"cSetReviveDelayTime"; } --dword_750CB8; sub_467660((int)&unk_D020420, v4); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5BC0) -------------------------------------------------------- int __cdecl sub_5E5BC0(int a1) { signed int v1; // ST30_4@3 int v2; // ebx@3 void *v3; // esi@7 int v4; // eax@9 int v6; // [sp-4h] [bp-30h]@2 sub_4675D0((int)&unk_D020420, (int)"cDirectionalArrow"); dword_7508B8[dword_750CB8] = (int)"cDirectionalArrow"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 27678; *(_DWORD *)((char *)v3 + 2) = (signed __int64)sub_5F4640(a1, 2, 0); *(_DWORD *)((char *)v3 + 6) = (signed __int64)sub_5F4640(a1, 3, 0); if ( sub_4C81E0(&off_849C18, 10) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cDirectionalArrow : Packet Too Long", 10); } } v6 = (int)"cDirectionalArrow"; } else { v6 = (int)"cDirectionalArrow"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5D80) -------------------------------------------------------- int __cdecl sub_5E5D80(int a1) { signed int v1; // ST1C_4@2 int v2; // esi@2 int v3; // eax@7 sub_4675D0((int)&unk_D020420, (int)"cDelDirectionalArrow"); dword_7508B8[dword_750CB8] = (int)"cDelDirectionalArrow"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { *(_WORD *)off_849C18 = 27679; if ( sub_4C81E0(&off_849C18, 3) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v3 + 12))(v3, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cDelDirectionalArrow : Packet Too Long", 3); } } } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cDelDirectionalArrow"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E5EE0) -------------------------------------------------------- signed int __cdecl sub_5E5EE0(int a1) { int v1; // ebx@1 signed int v3; // esi@5 int v4; // eax@8 int v5; // esi@9 int v6; // [sp+10h] [bp-128h]@6 int v7; // [sp+14h] [bp-124h]@10 int v8; // [sp+18h] [bp-120h]@10 int v9; // [sp+1Ch] [bp-11Ch]@10 int v10; // [sp+20h] [bp-118h]@10 char *v11; // [sp+24h] [bp-114h]@4 char v12; // [sp+28h] [bp-110h]@10 unsigned int v13; // [sp+128h] [bp-10h]@1 int v14; // [sp+134h] [bp-4h]@1 int v15; // [sp+138h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGetScriptString"); dword_7508B8[dword_750CB8] = (int)"cGetScriptString"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v11 = (char *)sub_5F48F0(a1, 2, 0)) == 0 ) { v14 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetScriptString"); return 0; } v3 = 0; do { *(&v6 + v3) = sub_5F48F0(a1, v3 + 3, 0); ++v3; } while ( v3 < 5 ); if ( strcmp((const char *)v1, "ETC") ) { if ( strcmp((const char *)v1, "MenuString") ) { v4 = sub_649720(&unk_150B11D8, v1); if ( !v4 ) goto LABEL_15; } else { v4 = (int)&unk_15090128; } } else { v4 = (int)&unk_150A0980; } v5 = sub_48C200((void *)v4, v11); if ( !v5 ) { LABEL_15: v14 = -1; goto LABEL_3; } memset(&v12, 0, 0x100u); sprintf(&v12, (const char *)v5, v6, v7, v8, v9, v10); sub_5F4D80(a1, &v12); --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cGetScriptString"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005E6100) -------------------------------------------------------- signed int __cdecl sub_5E6100(int a1) { int v1; // eax@1 signed int result; // eax@2 int v3; // eax@3 int v4; // eax@4 sub_4675D0((int)&unk_D020420, (int)"cGetMapName"); dword_7508B8[dword_750CB8] = (int)"cGetMapName"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v3 = sub_465D80((const char *)v1)) != 0 && (v4 = *(_DWORD *)(v3 + 16)) != 0 ) { sub_5F4D80(a1, (const void *)(v4 + 14)); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMapName"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMapName"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E6200) -------------------------------------------------------- int __cdecl sub_5E6200(int a1) { signed int v1; // ST2C_4@3 int v2; // esi@3 int v3; // edi@6 int v4; // eax@8 int v5; // eax@9 int v7; // [sp-4h] [bp-2Ch]@2 int v8; // [sp+14h] [bp-14h]@6 sub_4675D0((int)&unk_D020420, (int)"cNotice_Obj"); dword_7508B8[dword_750CB8] = (int)"cNotice_Obj"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v8 = sub_5F48F0(a1, 2, 0); v3 = sub_5F48F0(a1, 3, 0); if ( v8 ) { if ( v3 ) { v4 = sub_649720(&unk_150B11D8, v8); if ( v4 ) { v5 = sub_48C200((void *)v4, (const char *)v3); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 1924))(v2, v5); } } } } } } v7 = (int)"cNotice_Obj"; } else { v7 = (int)"cNotice_Obj"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E6350) -------------------------------------------------------- int __cdecl sub_5E6350(int a1) { int v1; // edi@3 char v2; // bl@10 int v3; // edi@12 signed __int64 v4; // ST2C_8@12 int v6; // [sp-4h] [bp-38h]@2 signed int v7; // [sp+1Ch] [bp-18h]@3 int v8; // [sp+20h] [bp-14h]@3 sub_4675D0((int)&unk_D020420, (int)"cSetObjectDiect"); dword_7508B8[dword_750CB8] = (int)"cSetObjectDiect"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v7 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, v7); v8 = v1; if ( !v1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 768))(v1) == 1 || sub_5F41F0(a1, 2) != 3 ) goto LABEL_17; LOBYTE(v7) = 0; if ( sub_5F41F0(a1, 3) && sub_5F41F0(a1, 3) != -1 ) { if ( sub_5F41F0(a1, 3) == 1 ) { v2 = (signed int)sub_5F4640(a1, 2, 0); LOBYTE(v7) = sub_5F4870(a1, 3); } else { if ( sub_5F41F0(a1, 3) != 3 ) goto LABEL_17; v3 = (signed __int64)sub_5F4640(a1, 2, 0); v4 = (signed __int64)sub_5F4640(a1, 3, 0); v2 = sub_401220(&unk_AF09DA8, v3 - **(_DWORD **)(v8 + 102), v4 - *(_DWORD *)(*(_DWORD *)(v8 + 102) + 4)); if ( sub_5F41F0(a1, 4) && sub_5F41F0(a1, 4) != -1 ) LOBYTE(v7) = sub_5F4870(a1, 4); v1 = v8; } } else { v2 = (signed int)sub_5F4640(a1, 2, 0); } **(_BYTE **)(v1 + 106) = v2; sub_551650(v1, v7); LABEL_17: v6 = (int)"cSetObjectDiect"; goto LABEL_18; } v6 = (int)"cSetObjectDiect"; LABEL_18: --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E65C0) -------------------------------------------------------- int __cdecl sub_5E65C0(int a1) { signed int v1; // ST1C_4@2 int v2; // esi@2 sub_4675D0((int)&unk_D020420, (int)"cDePolymorph"); dword_7508B8[dword_750CB8] = (int)"cDePolymorph"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 3604))(v2); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cDePolymorph"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E66D0) -------------------------------------------------------- signed int __cdecl sub_5E66D0(int a1) { signed int result; // eax@2 double v2; // st7@3 int v3; // ebx@3 int v4; // esi@4 int v5; // eax@8 int v6; // esi@10 int v7; // eax@14 int v8; // edi@17 if ( sub_5F41F0(a1, 1) != 3 ) return 0; v2 = sub_5F4640(a1, 1, 0); v3 = (unsigned __int16)(signed int)v2; if ( (_WORD)v3 == -1 ) return 0; v4 = sub_54DE90(&unk_13253630, (signed int)v2); if ( !v4 ) { sub_639100(&unk_86DDD8, (int)"cPet_IsMasterCalling : Error get pet", v3); return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) != 12 ) { sub_639100(&unk_86DDD8, (int)"cPet_IsMasterCalling : Not Pet Handle", v3); return 0; } v5 = __RTDynamicCast(v4, 0, &off_84BF24, &off_84BEFC, 0); if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"cPet_IsMasterCalling : Pet Type Casting Error", v3); return 0; } v6 = sub_419730(v5); if ( !v6 ) { sub_639100(&unk_86DDD8, (int)"cPet_IsMasterCalling : Error get pet master", v3); return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 2 ) { sub_639150(&unk_86DDD8, (int)"cPet_IsMasterCalling : Not Player Handle", v3, *(_WORD *)(v6 + 4)); return 0; } v7 = __RTDynamicCast(v6, 0, &off_84BF24, &off_84BF50, 0); if ( !v7 ) { sub_639150(&unk_86DDD8, (int)"cPet_IsMasterCalling : Player Type Casting Error", v3, *(_WORD *)(v6 + 4)); return 0; } v8 = v7 + 161784; if ( v7 == -161784 ) { sub_639150(&unk_86DDD8, (int)"cPet_IsMasterCalling : Get Player Pet Info Error", v3, *(_WORD *)(v6 + 4)); result = 0; } else { if ( *(_DWORD *)v8 == 5 || *(_DWORD *)v8 == 6 ) { if ( *(_DWORD *)(v7 + 161792) == 1 ) { sub_5F4ED0(a1, 1); *(_DWORD *)(v8 + 8) = 0; result = 1; } else { sub_5F4ED0(a1, 0); result = 1; } } else { sub_639150(&unk_86DDD8, (int)"cPet_IsMasterCalling : Pet is not summoned", v3, *(_WORD *)(v6 + 4)); result = 0; } } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005E68D0) -------------------------------------------------------- signed int __usercall sub_5E68D0(int a1, int a2) { signed int result; // eax@2 double v3; // st7@3 int v4; // edi@3 int v5; // esi@5 int v6; // eax@9 int v7; // esi@11 int v8; // eax@15 int v9; // ecx@17 int v10[3]; // [sp+8h] [bp-14h]@5 int v11; // [sp+Ch] [bp-10h]@1 if ( sub_5F41F0(a2, 1) == 3 ) { v3 = sub_5F4640(a2, 1, 0); v4 = (unsigned __int16)(signed int)v3; if ( (_WORD)v4 == -1 ) { result = 0; } else { v10[0] = a1; v5 = sub_54DE90(&unk_13253630, (signed int)v3); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 1232))(v5, v10[0], v11) == 12 ) { v6 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BEFC, 0); if ( v6 ) { v7 = sub_419730(v6); if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 2 ) { v8 = __RTDynamicCast(v7, 0, &off_84BF24, &off_84BF50, 0); if ( v8 ) { v9 = v8 + 161784; if ( v8 == -161784 ) { sub_639150(&unk_86DDD8, (int)"cPet_GetMind : Get Player Pet Info Error", v4, *(_WORD *)(v7 + 4)); result = 0; } else { if ( *(_DWORD *)v9 == 5 || *(_DWORD *)v9 == 6 ) { sub_5F4C80( a2, (double)(unsigned __int8)((unsigned int)(*(_DWORD *)(v8 + 161840) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6)); result = 1; } else { sub_639150(&unk_86DDD8, (int)"cPet_GetMind : Pet is not summoned", v4, *(_WORD *)(v7 + 4)); result = 0; } } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetMind : Player Type Casting Error", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetMind : Not Player Handle", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetMind : Error get pet master", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetMind : Pet Type Casting Error", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetMind : Not Pet Handle", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetMind : Error get pet", v4); result = 0; } } } else { result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005E6AD0) -------------------------------------------------------- signed int __usercall sub_5E6AD0(int a1, int a2) { signed int result; // eax@2 double v3; // st7@3 int v4; // edi@3 int v5; // esi@5 int v6; // eax@9 int v7; // esi@11 int v8; // eax@15 int v9; // ecx@17 int v10[3]; // [sp+8h] [bp-14h]@5 int v11; // [sp+Ch] [bp-10h]@1 if ( sub_5F41F0(a2, 1) == 3 ) { v3 = sub_5F4640(a2, 1, 0); v4 = (unsigned __int16)(signed int)v3; if ( (_WORD)v4 == -1 ) { result = 0; } else { v10[0] = a1; v5 = sub_54DE90(&unk_13253630, (signed int)v3); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 1232))(v5, v10[0], v11) == 12 ) { v6 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BEFC, 0); if ( v6 ) { v7 = sub_419730(v6); if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 2 ) { v8 = __RTDynamicCast(v7, 0, &off_84BF24, &off_84BF50, 0); if ( v8 ) { v9 = v8 + 161784; if ( v8 == -161784 ) { sub_639150(&unk_86DDD8, (int)"cPet_GetStress : Get Player Pet Info Error", v4, *(_WORD *)(v7 + 4)); result = 0; } else { if ( *(_DWORD *)v9 == 5 || *(_DWORD *)v9 == 6 ) { sub_5F4C80( a2, (double)(unsigned __int8)((unsigned int)(*(_DWORD *)(v8 + 161844) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6)); result = 1; } else { sub_639150(&unk_86DDD8, (int)"cPet_GetStress : Pet is not summoned", v4, *(_WORD *)(v7 + 4)); result = 0; } } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetStress : Player Type Casting Error", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetStress : Not Player Handle", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetStress : Error get pet master", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetStress : Pet Type Casting Error", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetStress : Not Pet Handle", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetStress : Error get pet", v4); result = 0; } } } else { result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005E6CD0) -------------------------------------------------------- signed int __usercall sub_5E6CD0(int a1, int a2) { signed int result; // eax@2 double v3; // st7@3 int v4; // edi@3 int v5; // esi@5 int v6; // eax@9 int v7; // esi@11 int v8; // eax@15 int v9; // eax@17 int v10[3]; // [sp+8h] [bp-14h]@5 int v11; // [sp+Ch] [bp-10h]@1 if ( sub_5F41F0(a2, 1) == 3 ) { v3 = sub_5F4640(a2, 1, 0); v4 = (unsigned __int16)(signed int)v3; if ( (_WORD)v4 == -1 ) { result = 0; } else { v10[0] = a1; v5 = sub_54DE90(&unk_13253630, (signed int)v3); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 1232))(v5, v10[0], v11) == 12 ) { v6 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BEFC, 0); if ( v6 ) { v7 = sub_419730(v6); if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 2 ) { v8 = __RTDynamicCast(v7, 0, &off_84BF24, &off_84BF50, 0); if ( v8 ) { v9 = v8 + 161784; if ( v9 ) { if ( *(_DWORD *)v9 == 5 || *(_DWORD *)v9 == 6 ) { sub_5F4C80(a2, (double)*(_WORD *)(v9 + 22)); result = 1; } else { sub_639150(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Pet is not summoned", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150( &unk_86DDD8, (int)"cPet_GetWalkSpeed : Get Player Pet Info Error", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Player Type Casting Error", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Not Player Handle", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Error get pet master", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Pet Type Casting Error", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Not Pet Handle", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetWalkSpeed : Error get pet", v4); result = 0; } } } else { result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005E6ED0) -------------------------------------------------------- signed int __usercall sub_5E6ED0(int a1, int a2) { signed int result; // eax@2 double v3; // st7@3 int v4; // edi@3 int v5; // esi@5 int v6; // eax@9 int v7; // esi@11 int v8; // eax@15 int v9; // eax@17 int v10[3]; // [sp+8h] [bp-14h]@5 int v11; // [sp+Ch] [bp-10h]@1 if ( sub_5F41F0(a2, 1) == 3 ) { v3 = sub_5F4640(a2, 1, 0); v4 = (unsigned __int16)(signed int)v3; if ( (_WORD)v4 == -1 ) { result = 0; } else { v10[0] = a1; v5 = sub_54DE90(&unk_13253630, (signed int)v3); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 1232))(v5, v10[0], v11) == 12 ) { v6 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BEFC, 0); if ( v6 ) { v7 = sub_419730(v6); if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1232))(v7) == 2 ) { v8 = __RTDynamicCast(v7, 0, &off_84BF24, &off_84BF50, 0); if ( v8 ) { v9 = v8 + 161784; if ( v9 ) { if ( *(_DWORD *)v9 == 5 || *(_DWORD *)v9 == 6 ) { sub_5F4C80(a2, (double)*(_WORD *)(v9 + 24)); result = 1; } else { sub_639150(&unk_86DDD8, (int)"cPet_GetRunSpeed : Pet is not summoned", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetRunSpeed : Get Player Pet Info Error", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetRunSpeed : Player Type Casting Error", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetRunSpeed : Not Player Handle", v4, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetRunSpeed : Error get pet master", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetRunSpeed : Pet Type Casting Error", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetRunSpeed : Not Pet Handle", v4); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"cPet_GetRunSpeed : Error get pet", v4); result = 0; } } } else { result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005E70C0) -------------------------------------------------------- signed int __cdecl sub_5E70C0(int a2) { signed int result; // eax@2 double v3; // st7@3 unsigned __int16 v4; // bx@3 int v5; // esi@4 int v6; // eax@8 int v7; // edi@11 int v8; // eax@16 int v9; // esi@18 int v10; // eax@23 int v11; // ebx@24 int v12; // esi@25 int v13; // eax@36 int v14; // eax@38 int v15; // esi@38 int v16; // [sp+8h] [bp-1Ch]@8 int v17; // [sp+8h] [bp-1Ch]@42 int v18; // [sp+Ch] [bp-18h]@1 const void *v19; // [sp+Ch] [bp-18h]@41 int v20; // [sp+14h] [bp-10h]@18 unsigned __int16 v21; // [sp+20h] [bp-4h]@3 if ( sub_5F41F0(a2, 1) != 3 ) return 0; v3 = sub_5F4640(a2, 1, 0); v4 = (signed int)v3; v21 = v4; if ( v4 == -1 ) return 0; v5 = sub_54DE90(&unk_13253630, (signed int)v3); if ( !v5 ) { sub_639100(&unk_86DDD8, (int)"cPet_GetActionRecord : Error get pet", v4); return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5) != 12 ) { sub_639100(&unk_86DDD8, (int)"cPet_GetActionRecord : Not Pet Handle", v4); return 0; } v6 = __RTDynamicCast(v5, 0, &off_84BF24, &off_84BEFC, 0); if ( !v6 ) { sub_639100(&unk_86DDD8, (int)"cPet_GetActionRecord : Pet Type Casting Error", v4); return 0; } v7 = sub_419730(v6); if ( !v7 ) { sub_639100(&unk_86DDD8, (int)"cPet_GetActionRecord : Error get pet master", v4); return 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 1232))(v7, v16, v18) == 2 ) { v8 = __RTDynamicCast(v7, 0, &off_84BF24, &off_84BF50, 0); if ( !v8 ) { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : Player Type Casting Error", v4, *(_WORD *)(v7 + 4)); return 0; } v9 = v8 + 161784; v20 = v8 + 161784; if ( v8 == -161784 ) { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : Get Player Pet Info Error", v4, *(_WORD *)(v7 + 4)); return 0; } if ( *(_DWORD *)v9 != 5 && *(_DWORD *)v9 != 6 ) { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : Pet is not summoned", v4, *(_WORD *)(v7 + 4)); return 0; } v10 = sub_5F48F0(a2, 2, 0); if ( strcmp((const char *)v10, "idle") ) { if ( strcmp((const char *)v10, "follow") ) { if ( strcmp((const char *)v10, "call") ) { if ( strcmp((const char *)v10, "die") ) { if ( strcmp((const char *)v10, "link") ) { sub_639150( &unk_86DDD8, (int)"cPet_GetActionRecord : 2nd param - Pet Master Mode is Invalid", v21, *(_WORD *)(v7 + 4)); return 0; } v11 = 0; } else { v11 = 1; } } else { v11 = 2; } } else { v11 = 3; } } else { v11 = 4; } v12 = sub_4CE770( (int)dword_1325CC60, (unsigned int)(*(_DWORD *)(v9 + 56) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6, (unsigned int)(*(_DWORD *)(v9 + 60) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); if ( v12 == 41 ) { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : GetPetActionCase fail", v21, *(_WORD *)(v7 + 4)); result = 0; } else { v13 = sub_4CE4D0((int)dword_1325CC60, *(_DWORD *)(v20 + 28)); if ( v13 ) { v14 = sub_4CEB70(dword_1325CC60, v11, v12, (char *)v13); v15 = v14; if ( v14 ) { switch ( *(_DWORD *)(v14 + 40) ) { case 0: v19 = "none"; goto LABEL_51; case 1: v19 = "follow"; v17 = a2; break; case 2: v19 = "revolution"; v17 = a2; break; case 3: v19 = "dance"; goto LABEL_51; case 4: v19 = "attack"; v17 = a2; break; case 5: v19 = "roaming"; v17 = a2; break; case 6: v19 = "rotation"; goto LABEL_51; case 7: v19 = "talk"; v17 = a2; break; case 8: v19 = "die"; v17 = a2; break; case 9: v19 = "script"; LABEL_51: v17 = a2; break; default: goto LABEL_15; } sub_5F4D80(v17, v19); sub_5F4D80(a2, (const void *)(v15 + 44)); sub_5F4C80(a2, (double)*(unsigned int *)(v15 + 76)); sub_5F4D80(a2, (const void *)(v15 + 80)); result = 4; } else { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : GetPetActionBundle fail", v21, *(_WORD *)(v7 + 4)); result = 0; } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : GetPetIDX fail", v21, *(_WORD *)(v7 + 4)); result = 0; } } } else { sub_639150(&unk_86DDD8, (int)"cPet_GetActionRecord : Not Player Handle", v4, *(_WORD *)(v7 + 4)); LABEL_15: result = 0; } return result; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); //----- (005E7590) -------------------------------------------------------- signed int __cdecl sub_5E7590(int a1) { int v2; // eax@4 int v3; // eax@4 int v4; // esi@4 int v5; // eax@6 int v6; // eax@7 int v7; // esi@7 int v8; // eax@10 int v9; // eax@14 int v10; // [sp-Ch] [bp-18h]@15 signed int v11; // [sp+4h] [bp-8h]@4 if ( sub_5F41F0(a1, 1) != 3 || sub_5F41F0(a1, 2) != 4 ) return 0; v11 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v11); v3 = __RTDynamicCast(v2, 0, &off_84BF24, &off_84BEFC, 0); v4 = v3; if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) != 12 || (v5 = sub_419730(v4)) == 0 || (v6 = __RTDynamicCast(v5, 0, &off_85A104, &off_84BF50, 0), (v7 = v6) == 0) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 2 || v7 == -161784 ) return 0; v8 = *(_DWORD *)(v7 + 161784); if ( v8 != 5 && v8 != 6 ) { sub_639150(&unk_86DDD8, (int)"cPet_ChangeMind : Pet is not summoned", (unsigned __int16)v11, *(_WORD *)(v7 + 4)); return 0; } v9 = sub_5F48F0(a1, 2, 0); if ( strcmp((const char *)v9, "dance") ) { v10 = 13; } else { if ( strcmp((const char *)v9, "attack") ) { v10 = 12; } else { if ( strcmp((const char *)v9, "follow") ) { v10 = 14; } else { if ( strcmp((const char *)v9, "talk") ) { v10 = 15; } else { if ( !strcmp((const char *)v9, "revolution") ) return 0; v10 = 16; } } } } sub_4D1950(v7, v10); sub_5F4ED0(a1, 1); return 1; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); //----- (005E77D0) -------------------------------------------------------- signed int __cdecl sub_5E77D0(int a1) { int v2; // eax@3 int v3; // eax@3 int v4; // esi@3 int v5; // eax@5 int v6; // eax@6 int v7; // esi@6 int v8; // eax@9 signed int v9; // [sp+4h] [bp-8h]@3 if ( sub_5F41F0(a1, 1) != 3 ) return 0; v9 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v9); v3 = __RTDynamicCast(v2, 0, &off_84BF24, &off_84BEFC, 0); v4 = v3; if ( !v3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1232))(v3) != 12 || (v5 = sub_419730(v4)) == 0 || (v6 = __RTDynamicCast(v5, 0, &off_85A104, &off_84BF50, 0), (v7 = v6) == 0) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) != 2 || v7 == -161784 ) return 0; v8 = *(_DWORD *)(v7 + 161784); if ( v8 != 5 && v8 != 6 ) { sub_639150(&unk_86DDD8, (int)"cPet_ChangeMind : Pet is not summoned", (unsigned __int16)v9, *(_WORD *)(v7 + 4)); return 0; } sub_4D1A00(v7); sub_5F4ED0(a1, 1); return 1; } // 656867: using guessed type _DWORD __cdecl __RTDynamicCast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 84BEFC: using guessed type int (__thiscall **off_84BEFC)(void *, char); // 84BF24: using guessed type int (__thiscall **off_84BF24)(void *, char); // 84BF50: using guessed type int (__thiscall **off_84BF50)(void *, char); // 85A104: using guessed type int (__thiscall **off_85A104)(void *, char); //----- (005E78F0) -------------------------------------------------------- signed int __cdecl sub_5E78F0(int a1) { signed int result; // eax@2 __int16 v2; // si@4 int v3; // eax@6 void *v4; // edx@7 int v5; // [sp+1Ch] [bp-14h]@4 sub_4675D0((int)&unk_D020420, (int)"cSimpleChatScriptMsg"); dword_7508B8[dword_750CB8] = (int)"cSimpleChatScriptMsg"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) != 3 || sub_5F41F0(a1, 2) != 4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSimpleChatScriptMsg"); result = 0; } else { v2 = (signed int)sub_5F4640(a1, 1, 0); v5 = sub_54DE90(&unk_13253630, v2); if ( v5 && (v3 = sub_5F48F0(a1, 2, 0)) != 0 && (v4 = off_849C18, *(_WORD *)off_849C18 = 8313, *((_WORD *)v4 + 1) = v2, memcpy((char *)v4 + 4, (const void *)v3, 0x20u), *((_DWORD *)v4 + 9) = 0, *((_BYTE *)v4 + 40) = 0, sub_5D5460(v5, -1, &off_849C18, 41)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSimpleChatScriptMsg"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSimpleChatScriptMsg"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E7AB0) -------------------------------------------------------- signed int __cdecl sub_5E7AB0(int a1) { signed int result; // eax@2 __int16 v2; // si@4 int v3; // eax@6 void *v4; // ecx@7 int v5; // [sp+1Ch] [bp-14h]@4 sub_4675D0((int)&unk_D020420, (int)"cObjectSound"); dword_7508B8[dword_750CB8] = (int)"cObjectSound"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) != 3 || sub_5F41F0(a1, 2) != 4 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectSound"); result = 0; } else { v2 = (signed int)sub_5F4640(a1, 1, 0); v5 = sub_54DE90(&unk_13253630, v2); if ( v5 && (v3 = sub_5F48F0(a1, 2, 0)) != 0 && (v4 = off_849C18, *(_WORD *)off_849C18 = 8314, *((_WORD *)v4 + 1) = v2, memcpy((char *)v4 + 4, (const void *)v3, 0x20u), sub_5D5460(v5, -1, &off_849C18, 36)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectSound"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectSound"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E7C70) -------------------------------------------------------- signed int __cdecl sub_5E7C70(int a1) { signed int result; // eax@2 __int16 v2; // di@4 int v3; // ebx@4 double v4; // st7@6 void *v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"cObjectEffect"); dword_7508B8[dword_750CB8] = (int)"cObjectEffect"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) != 3 || sub_5F41F0(a1, 2) != 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectEffect"); result = 0; } else { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F4640(a1, 2, 0), v5 = off_849C18, *(_WORD *)off_849C18 = 8315, *((_WORD *)v5 + 1) = v2, *((_DWORD *)v5 + 1) = (signed __int64)v4, sub_5D5460(v3, -1, &off_849C18, 8)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectEffect"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectEffect"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E7E30) -------------------------------------------------------- signed int __cdecl sub_5E7E30(int a1) { signed int result; // eax@2 __int16 v2; // di@4 int v3; // ebx@4 double v4; // st7@6 void *v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"cActByEventCode"); dword_7508B8[dword_750CB8] = (int)"cActByEventCode"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) != 3 || sub_5F41F0(a1, 2) != 3 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cActByEventCode"); result = 0; } else { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F4640(a1, 2, 0), v5 = off_849C18, *(_WORD *)off_849C18 = 8316, *((_WORD *)v5 + 1) = v2, *((_DWORD *)v5 + 1) = (signed __int64)v4, sub_5D5460(v3, -1, &off_849C18, 8)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cActByEventCode"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cActByEventCode"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E7FF0) -------------------------------------------------------- signed int __cdecl sub_5E7FF0(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 int v4; // eax@4 sub_4675D0((int)&unk_D020420, (int)"cIsNoAttacOrNoMove"); dword_7508B8[dword_750CB8] = (int)"cIsNoAttacOrNoMove"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) == 3 && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1072))(v3), (unsigned __int8)sub_4C8380(v4) != 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsNoAttacOrNoMove"); result = 0; } else { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsNoAttacOrNoMove"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E8130) -------------------------------------------------------- signed int __cdecl sub_5E8130(int a1) { int v1; // eax@1 double v2; // st7@2 int v3; // eax@6 int v4; // ebx@7 int v5; // eax@8 int v7; // [sp-8h] [bp-50h]@1 int v8; // [sp-8h] [bp-50h]@4 int v9; // [sp-8h] [bp-50h]@7 int v10; // [sp+14h] [bp-34h]@5 char v11; // [sp+18h] [bp-30h]@10 unsigned int v12; // [sp+38h] [bp-10h]@1 int v13; // [sp+44h] [bp-4h]@1 int v14; // [sp+48h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cIsInArea"); dword_7508B8[dword_750CB8] = (int)"cIsInArea"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; v1 = sub_5F41F0(a1, 1); v7 = 0; if ( !v1 ) goto LABEL_4; v2 = sub_5F4640(a1, 1, 0); if ( (unsigned __int16)(signed int)v2 == -1 ) goto LABEL_16; v10 = sub_54DE90(&unk_13253630, (signed int)v2); v7 = 0; if ( !v10 ) goto LABEL_4; v3 = sub_5F48F0(a1, 2, 0); if ( !v3 ) { LABEL_16: v7 = 0; LABEL_4: sub_5F4ED0(a1, v7); v8 = (int)"cIsInArea"; goto LABEL_13; } v4 = sub_465D80((const char *)v3); v9 = 0; if ( v4 ) { v5 = sub_5F48F0(a1, 3, 0); v9 = v5 && (sub_418A80(&v11, (const char *)v5), sub_427B70(v4, (int)&v11, **(_DWORD **)(v10 + 102), *(_DWORD *)(*(_DWORD *)(v10 + 102) + 4))); } sub_5F4ED0(a1, v9); v8 = (int)"cIsInArea"; LABEL_13: --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, v8); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005E82A0) -------------------------------------------------------- int __cdecl sub_5E82A0(int a1) { double v1; // st7@3 int v2; // eax@4 int v3; // ebx@4 char *v4; // edi@8 void *v5; // ST24_4@8 int v6; // edi@10 int v7; // ebx@11 int v8; // eax@13 int v9; // edi@18 int v10; // ebx@19 int v11; // eax@21 int v12; // eax@26 int v14; // [sp-4h] [bp-3Ch]@2 char *v15; // [sp+18h] [bp-20h]@8 int v16; // [sp+24h] [bp-14h]@4 sub_4675D0((int)&unk_D020420, (int)"cSendRankingList"); dword_7508B8[dword_750CB8] = (int)"cSendRankingList"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v1 = sub_5F4640(a1, 1, 0), (unsigned __int16)(signed int)v1 != -1) ) { v2 = sub_54DE90(&unk_13253630, (signed int)v1); v3 = v2; v16 = v2; if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) != 1 ) { v4 = (char *)off_849C18 + 2; v5 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 27680; v15 = v4; memset(v5, 0, 0x1F4u); memset(v4 + 500, 0, 0x1F4u); if ( sub_5F41F0(a1, 2) == 5 && (sub_5F4C60(a1), sub_5F5C30(a1, 2)) ) { v6 = (int)(v4 + 13); while ( 1 ) { v7 = sub_5F3E50(a1); sub_5F4D80(a1, "nRanking"); sub_5F4FA0(a1, v7); if ( sub_5F41F0(a1, -1) != 3 ) break; *(_BYTE *)(v6 - 13) = (signed int)sub_5F4640(a1, -1, 0); sub_5F4D80(a1, "sCharID"); sub_5F4FA0(a1, v7); if ( sub_5F41F0(a1, -1) != 4 ) break; v8 = sub_5F48F0(a1, -1, 0); *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)v6 = 0; *(_DWORD *)(v6 - 4) = 0; *(_DWORD *)(v6 - 8) = 0; *(_DWORD *)(v6 - 12) = 0; strncpy((char *)(v6 - 12), (const char *)v8, 0x14u); sub_5F4D80(a1, "nScore"); sub_5F4FA0(a1, v7); if ( sub_5F41F0(a1, -1) != 3 ) break; v6 += 25; *(_DWORD *)(v6 - 17) = (signed __int64)sub_5F4640(a1, -1, 0); sub_5F3E70(a1, v7 - 1); if ( !sub_5F5C30(a1, 2) ) { v3 = v16; v4 = v15; goto LABEL_16; } } } else { LABEL_16: if ( sub_5F41F0(a1, 3) == 5 && (sub_5F4C60(a1), sub_5F5C30(a1, 3)) ) { v9 = (int)(v4 + 513); while ( 1 ) { v10 = sub_5F3E50(a1); sub_5F4D80(a1, "nRanking"); sub_5F4FA0(a1, v10); if ( sub_5F41F0(a1, -1) != 3 ) break; *(_BYTE *)(v9 - 13) = (signed int)sub_5F4640(a1, -1, 0); sub_5F4D80(a1, "sCharID"); sub_5F4FA0(a1, v10); if ( sub_5F41F0(a1, -1) != 4 ) break; v11 = sub_5F48F0(a1, -1, 0); *(_DWORD *)(v9 + 4) = 0; *(_DWORD *)v9 = 0; *(_DWORD *)(v9 - 4) = 0; *(_DWORD *)(v9 - 8) = 0; *(_DWORD *)(v9 - 12) = 0; strncpy((char *)(v9 - 12), (const char *)v11, 0x14u); sub_5F4D80(a1, "nScore"); sub_5F4FA0(a1, v10); if ( sub_5F41F0(a1, -1) != 3 ) break; v9 += 25; *(_DWORD *)(v9 - 17) = (signed __int64)sub_5F4640(a1, -1, 0); sub_5F3E70(a1, v10 - 1); if ( !sub_5F5C30(a1, 3) ) { v3 = v16; goto LABEL_24; } } } else { LABEL_24: if ( sub_4C81E0(&off_849C18, 1002) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v12 + 12))(v12, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cShowRankingList : Packet Too Long", 1002); } } } } v14 = (int)"cSendRankingList"; } else { v14 = (int)"cSendRankingList"; } --dword_750CB8; sub_467660((int)&unk_D020420, v14); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E86D0) -------------------------------------------------------- signed int __cdecl sub_5E86D0(int a1) { double v2; // st7@3 int v3; // edi@4 char v4; // bl@7 void *v5; // eax@9 int v6; // eax@11 void *v7; // edi@12 void *v8; // eax@15 int v9; // eax@17 int v10; // [sp-4h] [bp-38h]@5 signed int v11; // [sp+18h] [bp-1Ch]@4 int v12; // [sp+1Ch] [bp-18h]@3 signed int v13; // [sp+20h] [bp-14h]@4 sub_4675D0((int)&unk_D020420, (int)"cSetCharacterTitle"); dword_7508B8[dword_750CB8] = (int)"cSetCharacterTitle"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) || (v2 = sub_5F4640(a1, 1, 0), v12 = (signed __int64)v2, v12 == -1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetCharacterTitle"); return 0; } v3 = sub_54E4D0(&unk_13253630, (signed __int64)v2); v13 = (signed int)sub_5F4640(a1, 2, 0); v11 = (signed int)sub_5F4640(a1, 3, 0); BYTE1(v13) = v11 & 0x3F | 0x80; if ( (_BYTE)v13 ) { if ( sub_62A9F0((int)&unk_1325CFD8, v13) ) { v4 = (v11 & 0x3F | 0x80) & 0x3F; if ( (unsigned __int8)v4 < 4u ) { if ( v3 ) { v7 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); if ( sub_62AC80(v7, v13, v4, 65535) != 1 && sub_62ACB0(v7, v13, v4, 65535) != 1 ) goto LABEL_18; sub_5C8340(v7, v13, v4, 2); } else { v5 = off_849C18; *(_WORD *)off_849C18 = 24585; *((_WORD *)v5 + 3) = v13; *(_DWORD *)((char *)v5 + 2) = v12; if ( sub_4C81E0(&off_849C18, 8) ) { v6 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"cAddCharacterTitle : Packet Too Long", 8); } } v8 = off_849C18; *(_DWORD *)off_849C18 = -40955; *((_DWORD *)v8 + 1) = v12; *((_WORD *)v8 + 4) = v13; if ( sub_4C81E0(&off_849C18, 10) ) { v9 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v9); } else { sub_639100(&unk_86DDD8, (int)"cAddCharacterTitle : Packet Too Long", 10); } LABEL_18: v10 = 1; goto LABEL_19; } } } v10 = 0; LABEL_19: sub_5F4ED0(a1, v10); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetCharacterTitle"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; // 14D16430: using guessed type int dword_14D16430; //----- (005E8960) -------------------------------------------------------- int __cdecl sub_5E8960(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // eax@4 int v4; // esi@5 double v5; // st7@7 int v6; // esi@8 int v7; // eax@13 char v9; // [sp+Ch] [bp-24h]@6 int v10; // [sp+18h] [bp-18h]@1 int v11; // [sp+1Ch] [bp-14h]@7 int v12; // [sp+2Ch] [bp-4h]@1 v10 = (int)"cTimerStart"; sub_4675D0((int)&unk_D020420, (int)"cTimerStart"); dword_7508B8[dword_750CB8] = (int)"cTimerStart"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v1 = sub_5F41F0(a1, 1) - 3; *(_WORD *)off_849C18 = 27681; if ( v1 ) { if ( v1 == 1 ) { v2 = sub_5F48F0(a1, 1, 0); if ( v2 ) { v3 = sub_465D80((const char *)v2); if ( v3 ) { v4 = sub_462A60((void *)v3); if ( v4 ) { sub_4287B0(&v9, &off_849C18, 3); LOBYTE(v12) = 1; sub_549B60((void *)v4, (int)&v9, 0); LOBYTE(v12) = 0; sub_428A70(&v9); } } } } } else { v5 = sub_5F4640(a1, 1, 0); v11 = (signed int)v5; if ( (unsigned __int16)(signed int)v5 != -1 ) { v6 = sub_54DE90(&unk_13253630, (signed int)v5); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1232))(v6) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 768))(v6) != 1 ) { if ( sub_4C81E0(&off_849C18, 3) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v6, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cTimerStart : Packet Too Long", 3); } } } } } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cTimerStart"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E8B30) -------------------------------------------------------- int __cdecl sub_5E8B30(int a1) { int v1; // eax@1 void *v2; // esi@1 int v3; // ebx@1 int v4; // eax@3 int v5; // eax@4 int v6; // esi@5 double v7; // st7@7 int v8; // eax@8 int v9; // esi@8 int v10; // eax@13 char v12; // [sp+14h] [bp-1Ch]@6 __int64 v13; // [sp+18h] [bp-18h]@1 int v14; // [sp+2Ch] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cTimerEnd"); dword_7508B8[dword_750CB8] = (int)"cTimerEnd"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v1 = sub_5F41F0(a1, 1); v2 = off_849C18; v3 = v1; *(_WORD *)off_849C18 = 27682; v13 = (signed __int64)sub_5F4640(a1, 2, 0); *(_DWORD *)((char *)v2 + 2) = v13; if ( v3 == 3 ) { v7 = sub_5F4640(a1, 1, 0); HIDWORD(v13) = (signed int)v7; if ( (unsigned __int16)(signed int)v7 != -1 ) { v8 = sub_54DE90(&unk_13253630, (signed int)v7); v9 = v8; if ( v8 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1232))(v8) == 2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 768))(v9) != 1 ) { if ( sub_4C81E0(&off_849C18, 6) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v10 + 12))(v10, v9, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cTimerEnd : Packet Too Long", 6); } } } } } else { if ( v3 == 4 ) { v4 = sub_5F48F0(a1, 1, 0); if ( v4 ) { v5 = sub_465D80((const char *)v4); if ( v5 ) { v6 = sub_462A60((void *)v5); if ( v6 ) { sub_4287B0(&v12, &off_849C18, 6); LOBYTE(v14) = 1; sub_549B60((void *)v6, (int)&v12, 0); LOBYTE(v14) = 0; sub_428A70(&v12); } } } } } --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cTimerEnd"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E8D30) -------------------------------------------------------- int __cdecl sub_5E8D30(int a1) { signed __int16 v1; // di@1 int v2; // eax@3 char *v3; // ebx@5 const void *v4; // esi@5 int v5; // eax@5 int v6; // esi@5 int v7; // eax@7 const void *v8; // edi@7 int v9; // ecx@8 char v10; // dl@8 char v11; // al@9 unsigned __int8 v12; // cl@10 int v13; // eax@14 int v15; // [sp-4h] [bp-30h]@4 signed int v16; // [sp+18h] [bp-14h]@5 unsigned __int16 v17; // [sp+1Ch] [bp-10h]@5 sub_4675D0((int)&unk_D020420, (int)"cScriptMsg"); dword_7508B8[dword_750CB8] = (int)"cScriptMsg"; dword_750AB8[dword_750CB8++] = -1; v1 = -1; if ( sub_5F41F0(a1, 1) ) v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_5F48F0(a1, 2, 0); if ( v2 ) { v3 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 8317; v4 = (const void *)v2; *(_WORD *)v3 = v1; v5 = -31 - (_DWORD)v3; memcpy(v3 + 2, v4, 0x20u); v17 = 0; v6 = (int)(v3 + 34); v16 = 5; while ( 1 ) { v7 = sub_5F48F0(a1, v6 + v5, 0); v8 = (const void *)v7; *(_BYTE *)v6 = 0; if ( v7 ) { v9 = v7; v10 = v7 + 1; do v11 = *(_BYTE *)v9++; while ( v11 ); v12 = v9 - v10; *(_BYTE *)v6 = v12; memmove(&v3[v17 + 39], v8, v12); v17 += *(_BYTE *)v6; } ++v6; --v16; if ( !v16 ) break; v5 = -31 - (_DWORD)v3; } if ( sub_4C81E0(&off_849C18, v17 + 41) ) { v13 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v13); } else { sub_639100(&unk_86DDD8, (int)"cScriptMsg_World : Packet Too Long", v17 + 41); } v15 = (int)"cScriptMsg"; } else { v15 = (int)"cScriptMsg"; } --dword_750CB8; sub_467660((int)&unk_D020420, v15); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (005E8F00) -------------------------------------------------------- int __cdecl sub_5E8F00(int a1) { int v1; // eax@5 char *v2; // ebx@6 const void *v3; // esi@6 int v4; // eax@6 int v5; // esi@6 int v6; // eax@8 int v7; // edi@8 int v8; // ecx@9 char v9; // dl@9 char v10; // al@10 unsigned __int8 v11; // cl@11 const void *v12; // ST14_4@11 unsigned __int16 v13; // di@11 int v14; // edi@13 int v15; // eax@15 int v16; // eax@17 int v17; // esi@18 int v18; // ebx@20 int v19; // ST04_4@22 int v20; // eax@22 double v21; // st7@23 int v22; // eax@24 int v23; // esi@24 int v24; // eax@29 int v26; // [sp-4h] [bp-44h]@2 char v27; // [sp+10h] [bp-30h]@21 int v28; // [sp+1Ch] [bp-24h]@1 int v29; // [sp+20h] [bp-20h]@1 int v30; // [sp+24h] [bp-1Ch]@6 int v31; // [sp+28h] [bp-18h]@4 int v32; // [sp+2Ch] [bp-14h]@3 int v33; // [sp+30h] [bp-10h]@6 int v34; // [sp+3Ch] [bp-4h]@1 v28 = (int)"cScriptMsg"; sub_4675D0((int)&unk_D020420, (int)"cScriptMsg"); dword_7508B8[dword_750CB8] = (int)"cScriptMsg"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; v29 = sub_5F41F0(a1, 1); if ( !v29 ) goto LABEL_35; v32 = 65535; if ( sub_5F41F0(a1, 2) ) { v31 = (signed int)sub_5F4640(a1, 2, 0); v32 = (unsigned __int16)v31; } v1 = sub_5F48F0(a1, 3, 0); if ( !v1 ) { LABEL_35: v34 = -1; v26 = (int)"cScriptMsg"; LABEL_31: --dword_750CB8; goto LABEL_32; } v2 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 8313; v3 = (const void *)v1; *(_WORD *)v2 = v32; v4 = -30 - (_DWORD)v2; memcpy(v2 + 2, v3, 0x20u); v33 = 0; v5 = (int)(v2 + 34); v30 = -30 - (_DWORD)v2; v31 = 5; while ( 1 ) { v6 = sub_5F48F0(a1, v5 + v4, 0); v7 = v6; *(_BYTE *)v5 = 0; if ( v6 ) { v8 = v6; v9 = v6 + 1; do v10 = *(_BYTE *)v8++; while ( v10 ); v11 = v8 - v9; v12 = (const void *)v7; v13 = v33; *(_BYTE *)v5 = v11; memmove(&v2[v13 + 39], v12, v11); LOWORD(v33) = *(_BYTE *)v5 + v13; } ++v5; --v31; if ( !v31 ) break; v4 = v30; } v14 = (unsigned __int16)v33 + 41; if ( v29 == 3 ) { v21 = sub_5F4640(a1, 1, 0); v29 = (signed int)v21; if ( (unsigned __int16)(signed int)v21 == -1 || (v22 = sub_54DE90(&unk_13253630, (signed int)v21), (v23 = v22) == 0) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v22 + 1232))(v22) != 2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v23 + 768))(v23) == 1 ) goto LABEL_16; if ( sub_4C81E0(&off_849C18, v14) ) { v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 764))(v23); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v24 + 12))(v24, v23, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cScriptMsg : Packet Too Long", v14); } LABEL_30: v34 = -1; v26 = (int)"cScriptMsg"; goto LABEL_31; } if ( v29 != 4 ) goto LABEL_30; v15 = sub_5F48F0(a1, 1, 0); if ( v15 ) { v16 = sub_465D80((const char *)v15); if ( v16 ) { v17 = sub_462A60((void *)v16); if ( v17 ) { if ( (_WORD)v32 != -1 && (v18 = sub_54DE90(&unk_13253630, v32)) != 0 ) { sub_4287B0(&v27, &off_849C18, v14); v19 = *(_DWORD *)(v18 + 102); LOBYTE(v34) = 2; v20 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v17, v20, v19, 0, 0, (int)&v27, 0, 65535); LOBYTE(v34) = 0; sub_428A70(&v27); } else { sub_4287B0(&v27, &off_849C18, v14); LOBYTE(v34) = 1; sub_549B60((void *)v17, (int)&v27, 0); LOBYTE(v34) = 0; sub_428A70(&v27); } goto LABEL_30; } } } LABEL_16: --dword_750CB8; v34 = -1; v26 = (int)"cScriptMsg"; LABEL_32: sub_467660((int)&unk_D020420, v26); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E9260) -------------------------------------------------------- int __cdecl sub_5E9260(int a1) { double v1; // st7@2 int v2; // esi@5 int v3; // eax@6 unsigned __int16 v4; // ax@7 int v6; // [sp-4h] [bp-2Ch]@4 sub_4675D0((int)&unk_D020420, (int)"cSetItemDropMobID"); dword_7508B8[dword_750CB8] = (int)"cSetItemDropMobID"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) ) goto LABEL_4; v1 = sub_5F4640(a1, 1, 0); if ( (unsigned __int16)(signed int)v1 == -1 ) { sub_5F4ED0(a1, 0); LABEL_4: v6 = (int)"cSetItemDropMobID"; goto LABEL_9; } v2 = sub_54DE90(&unk_13253630, (signed int)v1); if ( v2 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) { v4 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v3); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 2996))(v2, v4); } } v6 = (int)"cSetItemDropMobID"; LABEL_9: --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E9390) -------------------------------------------------------- int __cdecl sub_5E9390(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // esi@3 int v4; // edi@5 int v5; // eax@6 int v7; // [sp-4h] [bp-30h]@2 char v8; // [sp+10h] [bp-1Ch]@6 int v9; // [sp+1Ch] [bp-10h]@1 int v10; // [sp+28h] [bp-4h]@1 v9 = (int)"cSetFreeBattle"; sub_4675D0((int)&unk_D020420, (int)"cSetFreeBattle"); dword_7508B8[dword_750CB8] = (int)"cSetFreeBattle"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = v2; if ( v2 ) { v4 = sub_462A60((void *)v2); if ( v4 ) { LOBYTE(v5) = sub_5F4870(a1, 2); *(_BYTE *)(v3 + 84) = v5; sub_428000((int)&v8, 6, (v5 != 1) + 18); LOBYTE(v10) = 1; sub_549B60((void *)v4, (int)&v8, 0); LOBYTE(v10) = 0; sub_427EB0(&v8); } v10 = -1; } else { v10 = -1; } v7 = (int)"cSetFreeBattle"; } else { v10 = -1; v7 = (int)"cSetFreeBattle"; } --dword_750CB8; sub_467660((int)&unk_D020420, v7); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E94B0) -------------------------------------------------------- int __cdecl sub_5E94B0(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // esi@4 int v5; // [sp-4h] [bp-34h]@2 char v6; // [sp+Ch] [bp-24h]@5 int v7; // [sp+20h] [bp-10h]@1 int v8; // [sp+2Ch] [bp-4h]@1 v7 = (int)"cRevivalAll"; sub_4675D0((int)&unk_D020420, (int)"cRevivalAll"); dword_7508B8[dword_750CB8] = (int)"cRevivalAll"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 ) { v3 = sub_462A60((void *)v2); if ( v3 ) { sub_429DD0((int)&v6); LOBYTE(v8) = 1; sub_549B60((void *)v3, (int)&v6, 0); sub_429CB0((int)&v6); LOBYTE(v8) = 0; sub_429E10((int)&v6); } v5 = (int)"cRevivalAll"; } else { v5 = (int)"cRevivalAll"; } --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005E95A0) -------------------------------------------------------- int __cdecl sub_5E95A0(int a1) { int v1; // eax@1 int v2; // eax@3 signed int v3; // ebx@6 signed int v4; // eax@6 void *v5; // edi@6 signed int v6; // ebx@6 int v7; // edi@8 int v8; // ebx@9 int v9; // eax@11 signed int v10; // ecx@24 signed int v11; // ebx@28 int v12; // edi@29 int v13; // eax@31 int v14; // esi@31 int v15; // ebx@35 int v16; // ebx@35 int v17; // eax@37 int v19; // [sp-8h] [bp-84h]@2 signed int v20; // [sp+10h] [bp-6Ch]@6 int v21; // [sp+14h] [bp-68h]@5 void *v22; // [sp+18h] [bp-64h]@6 signed int v23; // [sp+1Ch] [bp-60h]@6 signed int v24; // [sp+24h] [bp-58h]@24 signed int v25; // [sp+28h] [bp-54h]@6 signed int v26; // [sp+28h] [bp-54h]@28 __int16 v27[32]; // [sp+2Ch] [bp-50h]@16 unsigned int v28; // [sp+6Ch] [bp-10h]@1 int v29; // [sp+78h] [bp-4h]@1 int v30; // [sp+7Ch] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cScoreTopList"); dword_7508B8[dword_750CB8] = (int)"cScoreTopList"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 && sub_462A60((void *)v2) && (v21 = sub_5F48F0(a1, 2, 0)) != 0 ) { v3 = sub_5F46F0(a1, 3, 0); v23 = v3; v4 = sub_5F46F0(a1, 4, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 22561; *(_DWORD *)((char *)v5 + 3) = v3; v6 = 0; v20 = v4; v22 = v5; v25 = 0; if ( sub_5F41F0(a1, 5) == 5 ) { sub_5F4C60(a1); if ( sub_5F5C30(a1, 5) ) { v7 = (int)((char *)v5 + 32); while ( 1 ) { v8 = sub_5F3E50(a1); if ( sub_5F41F0(a1, v8) != 5 ) break; sub_5F4D80(a1, "CharName"); sub_5F4FA0(a1, v8); if ( sub_5F41F0(a1, -1) != 4 ) break; v9 = sub_5F48F0(a1, -1, 0); *(_DWORD *)(v7 + 4) = 0; *(_DWORD *)v7 = 0; *(_DWORD *)(v7 - 4) = 0; *(_DWORD *)(v7 - 8) = 0; *(_DWORD *)(v7 - 12) = 0; strncpy((char *)(v7 - 12), (const char *)v9, 0x14u); sub_5F4D80(a1, "Kill"); sub_5F4FA0(a1, v8); if ( sub_5F41F0(a1, -1) != 3 ) break; *(_DWORD *)(v7 + 8) = sub_5F46F0(a1, -1, 0); sub_5F4D80(a1, "Death"); sub_5F4FA0(a1, v8); if ( sub_5F41F0(a1, -1) != 3 ) break; *(_DWORD *)(v7 + 12) = sub_5F46F0(a1, -1, 0); sub_5F4D80(a1, "Score"); sub_5F4FA0(a1, v8); if ( sub_5F41F0(a1, -1) != 3 ) break; *(_DWORD *)(v7 + 16) = sub_5F46F0(a1, -1, 0); sub_5F4D80(a1, "Handle"); sub_5F4FA0(a1, v8); if ( !sub_5F41F0(a1, -1) ) break; if ( sub_5F41F0(a1, -1) != 3 ) break; v27[v25] = (signed int)sub_5F4640(a1, -1, 0); if ( strcmp((const char *)v21, "ConditionOfHero") ) { if ( strcmp((const char *)v21, "NewConditionOfHero") ) *(_DWORD *)(v7 + 16) = v23 + *(_DWORD *)(v7 + 8) - *(_DWORD *)(v7 + 12); else *(_DWORD *)(v7 + 16) += v23; } else { *(_DWORD *)(v7 + 8) += 500; dword_14D9AE10 = dword_14D9AE14 & (dword_14D9AE10 + 1); *(_DWORD *)(v7 + 16) = v23 + (unsigned __int16)sub_427920(&unk_14D42DC0, 10) + *(_DWORD *)(v7 + 8) - *(_DWORD *)(v7 + 12); } if ( sub_5F41F0(a1, v8) <= 0 ) break; sub_5F3E70(a1, v8 - 1); ++v25; v7 += 32; if ( !sub_5F5C30(a1, 5) ) { v6 = v25; v5 = v22; goto LABEL_24; } } } else { LABEL_24: v10 = v6; v24 = v6; if ( v6 > 0 ) { if ( v20 && v20 < v6 ) LOBYTE(v6) = v20; *((_BYTE *)v5 + 2) = v6; v11 = 0; v26 = 0; if ( v10 > 0 ) { v12 = (int)((char *)v22 + 44); while ( 1 ) { v13 = sub_54DE90(&unk_13253630, v27[v11]); v14 = v13; if ( !v13 ) break; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 768))(v13) == 1 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1156))(v14) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 1948))(v14) == 1 ) break; *((_BYTE *)v22 + 7) = v11; v15 = *((_BYTE *)v22 + 2); *((_DWORD *)v22 + 2) = *(_DWORD *)(v12 - 4); *((_DWORD *)v22 + 3) = *(_DWORD *)v12; *((_DWORD *)v22 + 4) = *(_DWORD *)(v12 + 4); v16 = 32 * v15 + 20; if ( sub_4C81E0(&off_849C18, v16) ) { v17 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 764))(v14); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v17 + 12))(v17, v14, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cScoreTopList : Packet Too Long", v16); } v12 += 32; ++v26; if ( v26 >= v24 ) break; v11 = v26; } } } } } v29 = -1; v19 = (int)"cScoreTopList"; } else { v29 = -1; v19 = (int)"cScoreTopList"; } --dword_750CB8; sub_467660((int)&unk_D020420, v19); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; // 5E95A0: using guessed type __int16 var_50[32]; //----- (005E9A50) -------------------------------------------------------- int __cdecl sub_5E9A50(int a1) { int v1; // eax@1 int v2; // eax@3 signed int v3; // ebx@6 signed int v4; // eax@6 void *v5; // esi@6 int v6; // esi@8 int v7; // ebx@9 int v8; // eax@11 int v9; // eax@16 int v10; // ebx@16 int v11; // eax@21 int v12; // eax@21 int v13; // ecx@21 int v14; // ecx@21 int v15; // eax@22 int v16; // eax@26 int v17; // ebx@26 signed int v18; // ST2C_4@26 int v19; // edx@28 int v20; // eax@29 char v21; // cl@29 int v23; // [sp-4h] [bp-54h]@2 char v24; // [sp+10h] [bp-40h]@34 int v25; // [sp+1Ch] [bp-34h]@1 int v26; // [sp+20h] [bp-30h]@4 int v27; // [sp+24h] [bp-2Ch]@6 int v28; // [sp+28h] [bp-28h]@6 int v29; // [sp+2Ch] [bp-24h]@9 int v30; // [sp+30h] [bp-20h]@16 int v31; // [sp+34h] [bp-1Ch]@5 int v32; // [sp+38h] [bp-18h]@6 int v33; // [sp+3Ch] [bp-14h]@6 int v34; // [sp+4Ch] [bp-4h]@1 v25 = (int)"cScoreResultList"; sub_4675D0((int)&unk_D020420, (int)"cScoreResultList"); dword_7508B8[dword_750CB8] = (int)"cScoreResultList"; dword_750AB8[dword_750CB8++] = -1; v34 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 && (v26 = sub_462A60((void *)v2)) != 0 && (v31 = sub_5F48F0(a1, 2, 0)) != 0 ) { v3 = sub_5F46F0(a1, 3, 0); v33 = v3; v4 = sub_5F46F0(a1, 4, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 22548; v27 = v4; v28 = (int)v5; *(_DWORD *)((char *)v5 + 3) = v3; v32 = 0; if ( sub_5F41F0(a1, 5) == 5 ) { sub_5F4C60(a1); if ( sub_5F5C30(a1, 5) ) { v6 = (int)((char *)v5 + 19); while ( 1 ) { v7 = sub_5F3E50(a1); v29 = v7; if ( sub_5F41F0(a1, v7) != 5 || (sub_5F4D80(a1, "CharName"), sub_5F4FA0(a1, v7), sub_5F41F0(a1, -1) != 4) || (v8 = sub_5F48F0(a1, -1, 0), *(_DWORD *)(v6 + 4) = 0, *(_DWORD *)v6 = 0, *(_DWORD *)(v6 - 4) = 0, *(_DWORD *)(v6 - 8) = 0, *(_DWORD *)(v6 - 12) = 0, strncpy((char *)(v6 - 12), (const char *)v8, 0x14u), sub_5F4D80(a1, "Kill"), sub_5F4FA0(a1, v7), sub_5F41F0(a1, -1) != 3) || (*(_DWORD *)(v6 + 10) = sub_5F46F0(a1, -1, 0), sub_5F4D80(a1, "Death"), sub_5F4FA0(a1, v7), sub_5F41F0(a1, -1) != 3) || (*(_DWORD *)(v6 + 14) = sub_5F46F0(a1, -1, 0), sub_5F4D80(a1, "Score"), sub_5F4FA0(a1, v7), sub_5F41F0(a1, -1) != 3) || (*(_DWORD *)(v6 + 22) = sub_5F46F0(a1, -1, 0), sub_5F4D80(a1, "Handle"), sub_5F4FA0(a1, v7), !sub_5F41F0(a1, -1)) || sub_5F41F0(a1, -1) != 3 || (v30 = (signed int)sub_5F4640(a1, -1, 0), v9 = sub_54DE90(&unk_13253630, v30), (v10 = v9) == 0) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 768))(v9) == 1 || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1156))(v10) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1948))(v10) == 1 ) goto LABEL_35; if ( !strcmp((const char *)v31, "ConditionOfHero") ) break; v15 = strcmp((const char *)v31, "NewConditionOfHero"); *(_DWORD *)(v6 + 18) = 0; if ( v15 ) { v14 = *(_DWORD *)(v6 + 10) - *(_DWORD *)(v6 + 14); goto LABEL_25; } *(_DWORD *)(v6 + 22) += v33; LABEL_26: *(_BYTE *)(v6 + 8) &= 0x80u; *(_BYTE *)(v6 + 8) = *(_BYTE *)(v6 + 8) & 0x7F | ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 2052))(v10) << 7); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1180))(v10); v17 = v29; v18 = v29; *(_BYTE *)(v6 + 9) = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 56))(v16); if ( sub_5F41F0(a1, v18) <= 0 ) goto LABEL_35; sub_5F3E70(a1, v17 - 1); ++v32; v6 += 38; if ( !sub_5F5C30(a1, 5) ) { v19 = v32; if ( v32 > 0 ) { v20 = v28; *(_BYTE *)(v28 + 27) = *(_BYTE *)(v28 + 27) & 0x81 | 1; *(_BYTE *)(v20 + 65) = *(_BYTE *)(v20 + 65) & 0x82 | 2; *(_BYTE *)(v20 + 103) = *(_BYTE *)(v20 + 103) & 0x83 | 3; v21 = v27; if ( v27 ) { if ( v27 >= v19 ) v21 = v19; *(_BYTE *)(v20 + 2) = v21; } else { *(_BYTE *)(v20 + 2) = v19; } sub_4287B0(&v24, &off_849C18, 38 * *(_BYTE *)(v20 + 2) + 7); LOBYTE(v34) = 1; sub_549B60((void *)v26, (int)&v24, 0); LOBYTE(v34) = 0; sub_428A70(&v24); } goto LABEL_35; } } *(_DWORD *)(v6 + 10) += 500; v11 = dword_14D9AE14 & (dword_14D9AE10 + 1); dword_14D9AE10 = v11; v12 = *(_WORD *)&word_14D92E10[2 * v11]; v13 = *(_DWORD *)(v6 + 10) - *(_DWORD *)(v6 + 14); *(_DWORD *)(v6 + 18) = v12; v14 = v12 + v13; LABEL_25: *(_DWORD *)(v6 + 22) = v33 + v14; goto LABEL_26; } } LABEL_35: v34 = -1; v23 = (int)"cScoreResultList"; } else { v34 = -1; v23 = (int)"cScoreResultList"; } --dword_750CB8; sub_467660((int)&unk_D020420, v23); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; //----- (005E9EF0) -------------------------------------------------------- int __cdecl sub_5E9EF0(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // ebx@4 int v4; // eax@5 unsigned __int16 v5; // ax@6 int v6; // edi@6 int v7; // eax@8 int v9; // [sp-4h] [bp-3Ch]@2 char v10; // [sp+10h] [bp-28h]@7 int v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@1 v11 = (int)"cItemErase"; sub_4675D0((int)&unk_D020420, (int)"cItemErase"); dword_7508B8[dword_750CB8] = (int)"cItemErase"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = sub_465D80((const char *)v1)) != 0 ) { v3 = sub_462A60((void *)v2); if ( v3 ) { v4 = sub_5F48F0(a1, 2, 0); if ( v4 ) { v5 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)v4); v6 = v5; if ( v5 != -1 ) { sub_429F60((int)&v10); LOBYTE(v12) = 1; sub_549B60((void *)v3, (int)&v10, 0); sub_4285A0((int)&v10); while ( sub_429B20((int)&v10) == 1 ) { v7 = sub_429B40((int)&v10); if ( v7 ) (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v7 + 2232))(v7, v6, -1); } LOBYTE(v12) = 0; sub_42A030((int)&v10); } } } v9 = (int)"cItemErase"; } else { v9 = (int)"cItemErase"; } --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; //----- (005EA050) -------------------------------------------------------- signed int __cdecl sub_5EA050(int a1) { signed int v1; // ST24_4@3 int v2; // edi@3 int v3; // eax@6 int v5; // [sp+Ch] [bp-2Ch]@2 signed int v6; // [sp+Ch] [bp-2Ch]@8 sub_4675D0((int)&unk_D020420, (int)"cQuestResult_Individual"); dword_7508B8[dword_750CB8] = (int)"cQuestResult_Individual"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = sub_5F48F0(a1, 2, 0); if ( v3 ) { if ( !strcmp((const char *)v3, "Success") ) { v6 = 18; LABEL_11: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 772))(v2, 22, v6); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cQuestResult_Individual"); return 1; } if ( !strcmp((const char *)v3, "Fail") ) { v6 = 19; goto LABEL_11; } } } } v5 = (int)"cQuestResult_Individual"; goto LABEL_13; } v5 = (int)"cQuestResult_Individual"; LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, v5); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA220) -------------------------------------------------------- int __cdecl sub_5EA220(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // ebx@3 int v4; // eax@5 unsigned __int16 v5; // ax@6 int v6; // eax@7 size_t v7; // ecx@8 void *v8; // esi@9 int v9; // eax@9 int v11; // [sp-4h] [bp-34h]@2 char v12; // [sp+10h] [bp-20h]@9 int v13; // [sp+1Ch] [bp-14h]@1 int v14; // [sp+20h] [bp-10h]@6 int v15; // [sp+2Ch] [bp-4h]@1 v13 = (int)"cMobDialog_String"; sub_4675D0((int)&unk_D020420, (int)"cMobDialog_String"); dword_7508B8[dword_750CB8] = (int)"cMobDialog_String"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 ) { if ( sub_462A60((void *)v2) ) { v4 = sub_5F48F0(a1, 2, 0); if ( v4 ) { v5 = sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v4); v14 = v5; if ( v5 != -1 ) { v6 = sub_5F48F0(a1, 3, 0); if ( v6 ) { v7 = strlen((const char *)v6); if ( v7 < 0xFF ) { v8 = off_849C18; *(_WORD *)off_849C18 = 27660; *((_WORD *)v8 + 1) = v14; *((_BYTE *)v8 + 4) = v7; memmove((char *)v8 + 5, (const void *)v6, v7); sub_4287B0(&v12, &off_849C18, *((_BYTE *)v8 + 4) + 5); LOBYTE(v15) = 1; v9 = sub_462A60(v3); sub_549B60((void *)v9, (int)&v12, 0); LOBYTE(v15) = 0; sub_428A70(&v12); } } } } } } v11 = (int)"cMobDialog_String"; } else { v11 = (int)"cMobDialog_String"; } --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA3B0) -------------------------------------------------------- signed int __cdecl sub_5EA3B0(int a1) { int v1; // edi@1 int v2; // ebx@1 char v4; // [sp+18h] [bp-24h]@1 char v5; // [sp+1Ch] [bp-20h]@1 int v6; // [sp+28h] [bp-14h]@1 int v7; // [sp+2Ch] [bp-10h]@1 int v8; // [sp+38h] [bp-4h]@1 v6 = (int)"cLocationRotate"; sub_4675D0((int)&unk_D020420, (int)"cLocationRotate"); dword_7508B8[dword_750CB8] = (int)"cLocationRotate"; dword_750AB8[dword_750CB8++] = -1; v8 = 0; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = (signed int)sub_5F4640(a1, 2, 0); v7 = (signed int)sub_5F4640(a1, 3, 0); sub_4620A0((int)&v4, v1, v2); LOBYTE(v8) = 1; sub_45F830((int)&v5, v7); v7 = sub_417060(&v5); sub_5F4C80(a1, (double)v7); v7 = sub_428740((int)&v5); sub_5F4C80(a1, (double)v7); LOBYTE(v8) = 0; sub_461490(&v4); --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"cLocationRotate"); return 2; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA4F0) -------------------------------------------------------- signed int __cdecl sub_5EA4F0(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 unsigned __int16 v4; // ax@4 sub_4675D0((int)&unk_D020420, (int)"cGetMoveSpeed"); dword_7508B8[dword_750CB8] = (int)"cGetMoveSpeed"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1304))(v3); sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMoveSpeed"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetMoveSpeed"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA630) -------------------------------------------------------- signed int __cdecl sub_5EA630(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 unsigned __int16 v4; // ax@4 sub_4675D0((int)&unk_D020420, (int)"cGetWalkSpeed"); dword_7508B8[dword_750CB8] = (int)"cGetWalkSpeed"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1300))(v3); sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetWalkSpeed"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetWalkSpeed"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA770) -------------------------------------------------------- int __cdecl sub_5EA770(int a1) { double v1; // st7@3 int v2; // edi@3 int v3; // eax@3 int v4; // ebx@3 double v5; // st7@3 int v7; // [sp-8h] [bp-30h]@5 int v8; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cStaticRunSpeed"); dword_7508B8[dword_750CB8] = (int)"cStaticRunSpeed"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, (signed int)v1); LOBYTE(v3) = sub_5F4870(a1, 2); v4 = v3; v5 = sub_5F4640(a1, 3, 0); if ( v2 ) { v7 = v4 == 1; (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v2 + 3704))(v2, v7, (unsigned __int16)(signed int)v5); } v8 = (int)"cStaticRunSpeed"; } else { v8 = (int)"cStaticRunSpeed"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA8B0) -------------------------------------------------------- int __cdecl sub_5EA8B0(int a1) { double v1; // st7@3 int v2; // edi@3 int v3; // eax@3 int v4; // ebx@3 double v5; // st7@3 int v7; // [sp-8h] [bp-30h]@5 int v8; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cStaticWalkSpeed"); dword_7508B8[dword_750CB8] = (int)"cStaticWalkSpeed"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, (signed int)v1); LOBYTE(v3) = sub_5F4870(a1, 2); v4 = v3; v5 = sub_5F4640(a1, 3, 0); if ( v2 ) { v7 = v4 == 1; (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v2 + 3700))(v2, v7, (unsigned __int16)(signed int)v5); } v8 = (int)"cStaticWalkSpeed"; } else { v8 = (int)"cStaticWalkSpeed"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EA9F0) -------------------------------------------------------- signed int __cdecl sub_5EA9F0(int a1) { unsigned int v1; // edi@1 double v2; // st7@1 unsigned int v3; // ST24_4@1 sub_4675D0((int)&unk_D020420, (int)"cRandom"); dword_7508B8[dword_750CB8] = (int)"cRandom"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_5F4640(a1, 2, 0); v3 = sub_6396E0(&unk_14D42DC0, v1, (signed int)v2); sub_5F4C80(a1, (double)(signed int)v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cRandom"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EAAD0) -------------------------------------------------------- signed int __cdecl sub_5EAAD0(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 void *v4; // eax@4 sub_4675D0((int)&unk_D020420, (int)"cClassChangeOpen"); dword_7508B8[dword_750CB8] = (int)"cClassChangeOpen"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) && (v4 = (void *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3004))(v3)) != 0 ) { sub_51E4F0(v4); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cClassChangeOpen"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cClassChangeOpen"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EAC10) -------------------------------------------------------- int __cdecl sub_5EAC10(int a1) { signed int v1; // ST58_4@3 int v2; // ebx@3 void *v3; // esi@7 unsigned __int8 v4; // al@7 bool v5; // cf@7 bool v6; // zf@7 int v7; // eax@17 int v9; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cScoreBoard"); dword_7508B8[dword_750CB8] = (int)"cScoreBoard"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1232))(v2) == 2 ) { v3 = off_849C18; *(_WORD *)off_849C18 = 22588; *((_BYTE *)v3 + 2) = sub_5F4870(a1, 2); *((_BYTE *)v3 + 3) = (signed int)sub_5F4640(a1, 3, 0); *((_BYTE *)v3 + 4) = (signed int)sub_5F4640(a1, 4, 0); *((_BYTE *)v3 + 5) = (signed int)sub_5F4640(a1, 5, 0); *((_BYTE *)v3 + 6) = (signed int)sub_5F4640(a1, 6, 0); v4 = (signed int)sub_5F4640(a1, 7, 0); v5 = *((_BYTE *)v3 + 4) < 5u; v6 = *((_BYTE *)v3 + 4) == 5; *((_BYTE *)v3 + 7) = v4; if ( !(v5 | v6) ) *((_BYTE *)v3 + 4) = 5; if ( *((_BYTE *)v3 + 5) > 0x63u ) *((_BYTE *)v3 + 5) = 99; if ( *((_BYTE *)v3 + 6) > 5u ) *((_BYTE *)v3 + 6) = 5; if ( v4 > 0x63u ) *((_BYTE *)v3 + 7) = 99; if ( sub_4C81E0(&off_849C18, 8) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cScoreInfo : Packet Too Long", 8); } } v9 = (int)"cScoreBoard"; } else { v9 = (int)"cScoreBoard"; } --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EAE80) -------------------------------------------------------- int __cdecl sub_5EAE80(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // ebx@3 void *v4; // esi@6 unsigned __int8 v5; // al@6 bool v6; // cf@6 bool v7; // zf@6 int v8; // eax@14 int v10; // [sp-4h] [bp-38h]@2 char v11; // [sp+10h] [bp-24h]@14 int v12; // [sp+1Ch] [bp-18h]@1 int v13; // [sp+20h] [bp-14h]@6 int v14; // [sp+30h] [bp-4h]@1 v12 = (int)"cScoreInfo_AllInMap"; sub_4675D0((int)&unk_D020420, (int)"cScoreInfo_AllInMap"); dword_7508B8[dword_750CB8] = (int)"cScoreInfo_AllInMap"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 && sub_462A60((void *)v2) ) { v4 = off_849C18; *(_WORD *)off_849C18 = 22588; *((_BYTE *)v4 + 2) = sub_5F4870(a1, 2); *((_BYTE *)v4 + 3) = (signed int)sub_5F4640(a1, 3, 0); *((_BYTE *)v4 + 4) = (signed int)sub_5F4640(a1, 4, 0); *((_BYTE *)v4 + 5) = (signed int)sub_5F4640(a1, 5, 0); *((_BYTE *)v4 + 6) = (signed int)sub_5F4640(a1, 6, 0); v13 = (signed int)sub_5F4640(a1, 7, 0); v5 = v13; v6 = *((_BYTE *)v4 + 4) < 5u; v7 = *((_BYTE *)v4 + 4) == 5; *((_BYTE *)v4 + 7) = v13; if ( !(v6 | v7) ) *((_BYTE *)v4 + 4) = 5; if ( *((_BYTE *)v4 + 5) > 0x63u ) *((_BYTE *)v4 + 5) = 99; if ( *((_BYTE *)v4 + 6) > 5u ) *((_BYTE *)v4 + 6) = 5; if ( v5 > 0x63u ) *((_BYTE *)v4 + 7) = 99; sub_4287B0(&v11, &off_849C18, 8); LOBYTE(v14) = 1; v8 = sub_462A60(v3); sub_549B60((void *)v8, (int)&v11, 0); LOBYTE(v14) = 0; sub_428A70(&v11); v14 = -1; } else { v14 = -1; } v10 = (int)"cScoreInfo_AllInMap"; } else { v14 = -1; v10 = (int)"cScoreInfo_AllInMap"; } --dword_750CB8; sub_467660((int)&unk_D020420, v10); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB0A0) -------------------------------------------------------- int __cdecl sub_5EB0A0(int a1) { int v1; // eax@1 void *v2; // eax@3 void *v3; // esi@5 double v4; // st7@5 int v5; // eax@5 char v7; // [sp+10h] [bp-28h]@5 int v8; // [sp+1Ch] [bp-1Ch]@1 void *v9; // [sp+20h] [bp-18h]@3 int v10; // [sp+24h] [bp-14h]@5 int v11; // [sp+34h] [bp-4h]@1 v8 = (int)"cWinter_Event_ScoreBoard_AllInMap"; sub_4675D0((int)&unk_D020420, (int)"cWinter_Event_ScoreBoard_AllInMap"); dword_7508B8[dword_750CB8] = (int)"cWinter_Event_ScoreBoard_AllInMap"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 && (v2 = (void *)sub_465D80((const char *)v1), (v9 = v2) != 0) && sub_462A60(v2) ) { v3 = off_849C18; *(_WORD *)off_849C18 = 22589; *((_BYTE *)v3 + 2) = 0; v4 = sub_5F4640(a1, 2, 0); *((_BYTE *)v3 + 4) = 0; *((_BYTE *)v3 + 3) = (signed int)v4; v10 = (signed int)sub_5F4640(a1, 3, 0); *((_BYTE *)v3 + 5) = v10; sub_4287B0(&v7, &off_849C18, 6); LOBYTE(v11) = 1; v5 = sub_462A60(v9); sub_549B60((void *)v5, (int)&v7, 0); LOBYTE(v11) = 0; sub_428A70(&v7); v11 = -1; } else { v11 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cWinter_Event_ScoreBoard_AllInMap"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB210) -------------------------------------------------------- int __cdecl sub_5EB210(int a1) { signed int v1; // ST20_4@3 int v2; // esi@3 int v3; // esi@5 double v4; // st7@6 int v6; // [sp-4h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cVanishReserv"); dword_7508B8[dword_750CB8] = (int)"cVanishReserv"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3112))(v2); if ( v3 ) { v4 = sub_5F4640(a1, 2, 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 3956))(v3, (signed int)v4); } } } v6 = (int)"cVanishReserv"; } else { v6 = (int)"cVanishReserv"; } --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB340) -------------------------------------------------------- int __cdecl sub_5EB340(int a1) { signed int v1; // ST1C_4@2 int v2; // esi@2 sub_4675D0((int)&unk_D020420, (int)"cMoveStop"); dword_7508B8[dword_750CB8] = (int)"cMoveStop"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) != 1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2632))(v2); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMoveStop"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB440) -------------------------------------------------------- signed int __cdecl sub_5EB440(int a1) { signed int v1; // ST1C_4@3 int v2; // eax@3 int v4; // [sp-4h] [bp-28h]@2 sub_4675D0((int)&unk_D020420, (int)"cIsObjectAlreadyDead"); dword_7508B8[dword_750CB8] = (int)"cIsObjectAlreadyDead"; dword_750AB8[dword_750CB8++] = -1; v4 = !sub_5F41F0(a1, 1) || (v1 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v1)) == 0) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 40))(v2) == 1; sub_5F4ED0(a1, v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsObjectAlreadyDead"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB550) -------------------------------------------------------- signed int __cdecl sub_5EB550(int a1) { int v1; // edi@3 int v3; // [sp-4h] [bp-40h]@2 int v4; // [sp-4h] [bp-40h]@4 int v5; // [sp+10h] [bp-2Ch]@5 int v6; // [sp+14h] [bp-28h]@5 int v7; // [sp+18h] [bp-24h]@5 int v8; // [sp+1Ch] [bp-20h]@5 int v9; // [sp+20h] [bp-1Ch]@1 __int64 v10; // [sp+24h] [bp-18h]@3 int v11; // [sp+38h] [bp-4h]@1 v9 = (int)"cFindAttackBlockLocate"; sub_4675D0((int)&unk_D020420, (int)"cFindAttackBlockLocate"); dword_7508B8[dword_750CB8] = (int)"cFindAttackBlockLocate"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; if ( sub_5F41F0(a1, 1) ) { HIDWORD(v10) = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, SWORD2(v10)); if ( v1 ) { v4 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 768))(v1) == 1 ) { LABEL_10: sub_5F4ED0(a1, v4); v3 = (int)"cFindAttackBlockLocate"; goto LABEL_11; } v7 = (signed __int64)sub_5F4640(a1, 2, 0); v5 = v7; v10 = (signed __int64)sub_5F4640(a1, 3, 0); v8 = v10; v6 = v10; if ( sub_4BE0E0( (void *)v1, (int)&v7, 10000, (int)&v5, (int (__fastcall *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_49D140) && v7 == v5 && v8 == v6 ) { v4 = 1; goto LABEL_10; } } v4 = 0; goto LABEL_10; } sub_5F4ED0(a1, 0); v3 = (int)"cFindAttackBlockLocate"; LABEL_11: --dword_750CB8; v11 = -1; sub_467660((int)&unk_D020420, v3); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB700) -------------------------------------------------------- signed int __cdecl sub_5EB700(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // esi@3 __int16 v4; // ax@6 signed int v5; // esi@6 sub_4675D0((int)&unk_D020420, (int)"cIsObjectAlreadyDead"); dword_7508B8[dword_750CB8] = (int)"cIsObjectAlreadyDead"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) == 3 && (v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2060))(v3), v5 = (unsigned __int16)v4, sub_54DE90(&unk_13253630, v4)) ) { sub_5F4C80(a1, (double)v5); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsObjectAlreadyDead"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsObjectAlreadyDead"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsObjectAlreadyDead"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB880) -------------------------------------------------------- signed int __cdecl sub_5EB880(int a1) { double v1; // st7@1 signed int v2; // edi@1 int v3; // eax@1 double v4; // st7@2 char *v5; // eax@4 int v6; // ecx@4 unsigned __int16 v7; // ax@4 signed int v9; // [sp+10h] [bp-4h]@1 sub_4675D0((int)&unk_D020420, (int)"cRandomInt"); dword_7508B8[dword_750CB8] = (int)"cRandomInt"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F4640(a1, 1, 0); v2 = (signed int)v1; v9 = (signed int)v1; v3 = (signed int)sub_5F4640(a1, 2, 0) - (signed int)v1 + 1; if ( v3 > 1 ) { if ( (unsigned int)(v3 - 1) > 0x63 ) { v7 = 0; } else { v5 = (char *)&unk_14D42DC0 + 32776 * v3; v6 = *((_DWORD *)v5 + 8193) & (*((_DWORD *)v5 + 8192) + 1); *((_DWORD *)v5 + 8192) = v6; v7 = *(_WORD *)&v5[2 * v6]; } v4 = (double)(v2 + v7); } else { v4 = (double)v9; } sub_5F4C80(a1, v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cRandomInt"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EB960) -------------------------------------------------------- signed int __cdecl sub_5EB960(int a1) { int v1; // eax@1 signed int result; // eax@2 signed int v3; // ST14_4@3 sub_4675D0((int)&unk_D020420, (int)"cObjectLocate"); dword_7508B8[dword_750CB8] = (int)"cObjectLocate"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v3 = (unsigned __int16)sub_418D10((int)&unk_14D159B0, (unsigned __int8 *)v1); sub_5F4C80(a1, (double)v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocate"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectLocate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EBA60) -------------------------------------------------------- signed int __cdecl sub_5EBA60(int a1) { signed int v2; // ST20_4@3 int v3; // edi@3 signed int v4; // ST20_4@8 int v5; // eax@8 sub_4675D0((int)&unk_D020420, (int)"cAIScriptSet"); dword_7508B8[dword_750CB8] = (int)"cAIScriptSet"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAIScriptSet"); return 0; } v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( !v3 ) goto LABEL_4; if ( sub_5F4310(a1, 2) ) { if ( !sub_5F41F0(a1, 2) || (v4 = (signed int)sub_5F4640(a1, 2, 0), (v5 = sub_54DE90(&unk_13253630, v4)) == 0) ) { LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAIScriptSet"); return 0; } (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 2908))(v5, v3); } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2912))(v3, 0); } sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAIScriptSet"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EBC30) -------------------------------------------------------- signed int __cdecl sub_5EBC30(int a1) { signed int result; // eax@2 signed int v2; // ST2C_4@3 int v3; // edi@3 int v4; // eax@5 signed int v5; // ebx@6 sub_4675D0((int)&unk_D020420, (int)"cResetAbstate"); dword_7508B8[dword_750CB8] = (int)"cResetAbstate"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 && (v5 = sub_639670(&byte_878354, v4), v5 != -1) ) { sub_5F4640(a1, 3, 0); sub_5F4640(a1, 4, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1616))(v3, v5); sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cResetAbstate"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cResetAbstate"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cResetAbstate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EBDD0) -------------------------------------------------------- signed int __cdecl sub_5EBDD0(int a1) { signed int result; // eax@2 signed int v2; // ST20_4@3 int v3; // ebx@3 int v4; // eax@5 int v5; // eax@6 sub_4675D0((int)&unk_D020420, (int)"cIsInMap"); dword_7508B8[dword_750CB8] = (int)"cIsInMap"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 && (v5 = sub_465D80((const char *)v4)) != 0 && *(_DWORD *)(v3 + 122) == v5 ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsInMap"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsInMap"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsInMap"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EBF40) -------------------------------------------------------- signed int __cdecl sub_5EBF40(int a1) { signed int v1; // ST20_4@1 int v2; // eax@1 int v3; // esi@1 signed int result; // eax@2 __int16 v5; // ax@3 signed int v6; // ebx@3 int v7; // eax@5 sub_4675D0((int)&unk_D020420, (int)"cIsInBattle"); dword_7508B8[dword_750CB8] = (int)"cIsInBattle"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); v3 = v2; if ( v2 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2936))(v2); v6 = (unsigned __int16)v5; if ( v5 != -1 && (v7 = sub_54DE90(&unk_13253630, v5)) != 0 && (unsigned int)sub_402710(v3, v7) < 0x3B9AC9FF && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1156))(v3) != 3 ) { sub_5F4C80(a1, (double)v6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsInBattle"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsInBattle"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cIsInBattle"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EC0D0) -------------------------------------------------------- signed int __cdecl sub_5EC0D0(int a1) { double v1; // st7@1 int v2; // edi@1 signed int v3; // ST24_4@1 int v4; // eax@1 int v5; // ebx@1 int v6; // eax@3 signed int result; // eax@5 sub_4675D0((int)&unk_D020420, (int)"cNPCSkillUse"); dword_7508B8[dword_750CB8] = (int)"cNPCSkillUse"; dword_750AB8[dword_750CB8++] = -1; v1 = sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, (signed int)v1); v3 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_54DE90(&unk_13253630, v3); v5 = v4; if ( v2 && v4 && (v6 = sub_5F48F0(a1, 3, 0)) != 0 && (dword_13257798 = sub_639670(&unk_13257C80, v6), (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v2 + 2940))( v2, v5, (unsigned __int16)dword_13257798)) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCSkillUse"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCSkillUse"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257798: using guessed type int dword_13257798; //----- (005EC260) -------------------------------------------------------- signed int __cdecl sub_5EC260(int a1) { signed int result; // eax@2 double v2; // st7@3 int v3; // ebx@4 int v4; // eax@5 signed int v5; // eax@6 double v6; // st7@7 sub_4675D0((int)&unk_D020420, (int)"cAbstateRestTime"); dword_7508B8[dword_750CB8] = (int)"cAbstateRestTime"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = sub_5F4640(a1, 1, 0), (unsigned __int16)(signed int)v2 != -1) ) { v3 = sub_54DE90(&unk_13253630, (signed int)v2); if ( v3 && (v4 = sub_5F48F0(a1, 2, 0)) != 0 && (v5 = sub_639670(&byte_878354, v4), v5 != -1) && (v6 = (double)(unsigned int)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 1004))(v3, v5), v6 > 0.0) ) { sub_5F4C80(a1, v6); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAbstateRestTime"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAbstateRestTime"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAbstateRestTime"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EC400) -------------------------------------------------------- signed int __cdecl sub_5EC400(int a1) { signed int v1; // ST34_4@1 int v2; // edi@1 signed int result; // eax@2 __int16 v4; // bx@4 void *v5; // eax@6 int v6; // [sp+1Ch] [bp-18h]@3 sub_4675D0((int)&unk_D020420, (int)"cMessage"); dword_7508B8[dword_750CB8] = (int)"cMessage"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( !v2 || (v6 = sub_5F48F0(a1, 2, 0)) == 0 ) goto LABEL_10; v4 = -1; if ( sub_5F4310(a1, 3) ) v4 = (signed int)sub_5F4640(a1, 3, 0); v5 = off_849C18; *(_WORD *)off_849C18 = 27666; strncpy((char *)v5 + 2, (const char *)v6, 0x10u); if ( sub_5D5460(v2, v4, &off_849C18, 19) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMessage"); result = 1; } else { LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMessage"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EC5B0) -------------------------------------------------------- signed int __cdecl sub_5EC5B0(int a1) { __int16 v1; // di@1 int v2; // ebx@1 signed int result; // eax@2 void *v4; // eax@6 int v5; // ST34_4@6 int v6; // [sp+1Ch] [bp-18h]@3 __int16 v7; // [sp+24h] [bp-10h]@4 sub_4675D0((int)&unk_D020420, (int)"cNPCChat"); dword_7508B8[dword_750CB8] = (int)"cNPCChat"; dword_750AB8[dword_750CB8++] = -1; v1 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v1); if ( !v2 || (v6 = sub_5F48F0(a1, 2, 0)) == 0 ) goto LABEL_10; v7 = -1; if ( sub_5F4310(a1, 3) ) v7 = (signed int)sub_5F4640(a1, 3, 0); v4 = off_849C18; *(_WORD *)off_849C18 = 27665; v5 = (int)((char *)v4 + 2); strncpy((char *)v4 + 2, (const char *)v6, 0x20u); *(_WORD *)(v5 + 33) = v1; if ( sub_5D5460(v2, v7, &off_849C18, 37) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCChat"); result = 1; } else { LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNPCChat"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EC770) -------------------------------------------------------- signed int __cdecl sub_5EC770(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@3 signed int result; // eax@4 int v5; // [sp-Ch] [bp-4Ch]@3 int v6; // [sp-8h] [bp-48h]@3 int v7; // [sp-4h] [bp-44h]@3 double v8; // [sp+0h] [bp-40h]@3 unsigned int v9; // [sp+8h] [bp-38h]@1 int *v10; // [sp+18h] [bp-28h]@3 int v11; // [sp+1Ch] [bp-24h]@1 char *v12; // [sp+20h] [bp-20h]@1 char v13[4]; // [sp+24h] [bp-1Ch]@3 int v14; // [sp+28h] [bp-18h]@3 int v15; // [sp+2Ch] [bp-14h]@3 unsigned int v16; // [sp+30h] [bp-10h]@1 int v17; // [sp+3Ch] [bp-4h]@1 int v18; // [sp+40h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v9 = (unsigned int)&v18 ^ __security_cookie; v11 = (int)"cGroupRegen"; sub_4675D0((int)&unk_D020420, (int)"cGroupRegen"); dword_7508B8[dword_750CB8] = (int)"cGroupRegen"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v1 = sub_5F48F0(a1, 1, 0); v2 = sub_5F48F0(a1, 2, 0); v12 = (char *)v2; if ( v1 && v2 && (v15 = 0, v14 = 0, *(_DWORD *)v13 = 0, strncpy(v13, (const char *)v1, 0xCu), v10 = &v5, v8 = 0.0, v7 = 0, v6 = 0, v5 = 0, strncpy((char *)&v5, v12, 0x14u), (v3 = sub_4B1A40((void *)dword_D9FAF98, (int)v13, v5, v6, v7, SLODWORD(v8), SHIDWORD(v8))) != 0) ) { sub_4B27E0(v3); sub_5F4C80(a1, 1.0); --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cGroupRegen"); result = 1; } else { --dword_750CB8; v17 = -1; sub_467660((int)&unk_D020420, (int)"cGroupRegen"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; //----- (005EC8D0) -------------------------------------------------------- signed int __cdecl sub_5EC8D0(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@5 signed int result; // eax@6 int v5; // [sp-Ch] [bp-54h]@5 int v6; // [sp-8h] [bp-50h]@5 int v7; // [sp-4h] [bp-4Ch]@5 double v8; // [sp+0h] [bp-48h]@5 unsigned int v9; // [sp+8h] [bp-40h]@1 int v10; // [sp+18h] [bp-30h]@1 char *v11; // [sp+1Ch] [bp-2Ch]@1 int v12; // [sp+20h] [bp-28h]@3 int *v13; // [sp+24h] [bp-24h]@5 char v14[4]; // [sp+2Ch] [bp-1Ch]@3 int v15; // [sp+30h] [bp-18h]@3 int v16; // [sp+34h] [bp-14h]@3 unsigned int v17; // [sp+38h] [bp-10h]@1 int v18; // [sp+44h] [bp-4h]@1 int v19; // [sp+48h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v9 = (unsigned int)&v19 ^ __security_cookie; v10 = (int)"cRegenGroupActiv"; sub_4675D0((int)&unk_D020420, (int)"cRegenGroupActiv"); dword_7508B8[dword_750CB8] = (int)"cRegenGroupActiv"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; v1 = sub_5F48F0(a1, 1, 0); v2 = sub_5F48F0(a1, 2, 0); v11 = (char *)v2; if ( !v1 || !v2 ) goto LABEL_10; v16 = 0; v15 = 0; *(_DWORD *)v14 = 0; strncpy(v14, (const char *)v1, 0xCu); LOBYTE(v12) = 1; if ( sub_5F4310(a1, 3) ) LOBYTE(v12) = (signed int)sub_5F4640(a1, 3, 0); v13 = &v5; v8 = 0.0; v7 = 0; v6 = 0; v5 = 0; strncpy((char *)&v5, v11, 0x14u); v3 = sub_4B1A40((void *)dword_D9FAF98, (int)v14, v5, v6, v7, SLODWORD(v8), SHIDWORD(v8)); if ( v3 ) { sub_4B2780(v3, v12); sub_5F4C80(a1, 1.0); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cRegenGroupActiv"); result = 1; } else { LABEL_10: --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"cRegenGroupActiv"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // D9FAF98: using guessed type int dword_D9FAF98; //----- (005ECA70) -------------------------------------------------------- void *__thiscall sub_5ECA70(void *this, const char *a2, int a3) { void *v3; // ebx@1 v3 = this; sub_427BE0(this); *(_DWORD *)v3 = &off_6FB10C; *((_DWORD *)v3 + 8) = 0; *((_DWORD *)v3 + 7) = 0; *((_DWORD *)v3 + 6) = 0; *((_DWORD *)v3 + 5) = 0; *((_DWORD *)v3 + 4) = 0; *((_DWORD *)v3 + 3) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)v3 + 1) = 0; sub_4675D0((int)&unk_D020420, (int)"AxialListMobIndexVanish::AxialListMobIndexVanish"); dword_7508B8[dword_750CB8] = (int)"AxialListMobIndexVanish::AxialListMobIndexVanish"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v3 + 8) = 0; *((_DWORD *)v3 + 7) = 0; *((_DWORD *)v3 + 6) = 0; *((_DWORD *)v3 + 5) = 0; *((_DWORD *)v3 + 4) = 0; *((_DWORD *)v3 + 3) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)v3 + 1) = 0; strncpy((char *)v3 + 4, a2, 0x20u); *((_DWORD *)v3 + 9) = a3; *(_DWORD *)a3 = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"AxialListMobIndexVanish::AxialListMobIndexVanish"); return v3; } // 6FB10C: using guessed type int (__stdcall *off_6FB10C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005ECB60) -------------------------------------------------------- char __thiscall sub_5ECB60(void *this, int a2, int a3, int a4) { void *v4; // edi@1 int v5; // eax@3 int v6; // eax@4 int v7; // eax@5 char v9; // [sp+10h] [bp-30h]@5 unsigned int v10; // [sp+30h] [bp-10h]@1 int v11; // [sp+3Ch] [bp-4h]@1 int v12; // [sp+40h] [bp+0h]@1 v10 = (unsigned int)&v12 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListMobIndexVanish::ali_Work"); dword_7508B8[dword_750CB8] = (int)"AxialListMobIndexVanish::ali_Work"; dword_750AB8[dword_750CB8++] = -1; v11 = 0; if ( a3 && *((_DWORD *)v4 + 9) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1804))(a3); if ( v5 ) { v6 = *(_DWORD *)v5; if ( v6 ) { sub_418A80(&v9, (const char *)(v6 + 2)); LOBYTE(v7) = sub_427A70((int)((char *)v4 + 4), (int)&v9); if ( v7 ) { ++**((_DWORD **)v4 + 9); (*(void (__thiscall **)(int))(*(_DWORD *)a3 + 1012))(a3); } } } --dword_750CB8; } else { --dword_750CB8; } v11 = -1; sub_467660((int)&unk_D020420, (int)"AxialListMobIndexVanish::ali_Work"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005ECC60) -------------------------------------------------------- signed int __cdecl sub_5ECC60(int a1) { int v1; // eax@1 int v2; // eax@3 void *v3; // edi@3 int v4; // eax@7 int v5; // eax@8 void *v6; // ecx@8 int v7; // eax@9 int v9; // [sp+4h] [bp-5Ch]@2 int v10; // [sp+1Ch] [bp-44h]@8 int (__stdcall **v11)(int, int, int); // [sp+20h] [bp-40h]@9 __int16 v12; // [sp+24h] [bp-3Ch]@9 int (__stdcall **v13)(int, int, int); // [sp+28h] [bp-38h]@8 unsigned int v14; // [sp+50h] [bp-10h]@1 int v15; // [sp+5Ch] [bp-4h]@1 int v16; // [sp+60h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cVanishAll"); dword_7508B8[dword_750CB8] = (int)"cVanishAll"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = (void *)v2; if ( v2 && sub_462A60((void *)v2) ) { if ( !sub_5F41F0(a1, 2) || sub_5F41F0(a1, 2) == -1 ) { sub_427BE0(&v11); v11 = &off_6C7188; v12 = -1; LOBYTE(v15) = 1; v7 = sub_462A60(v3); sub_549B60((void *)v7, (int)&v11, 0); sub_5F4C80(a1, 1.0); v11 = &off_6C7188; v6 = &v11; goto LABEL_10; } v4 = sub_5F48F0(a1, 2, 0); if ( v4 ) { sub_5ECA70(&v13, (const char *)v4, (int)&v10); LOBYTE(v15) = 2; v5 = sub_462A60(v3); sub_549B60((void *)v5, (int)&v13, 0); sub_5F4C80(a1, (double)v10); v13 = &off_6FB10C; v6 = &v13; LABEL_10: LOBYTE(v15) = 0; sub_427EB0(v6); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"cVanishAll"); return 1; } } v9 = (int)"cVanishAll"; goto LABEL_12; } v9 = (int)"cVanishAll"; LABEL_12: --dword_750CB8; sub_467660((int)&unk_D020420, v9); return 0; } // 6C7188: using guessed type int (__stdcall *off_6C7188)(int, int, int); // 6FB10C: using guessed type int (__stdcall *off_6FB10C)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005ECE30) -------------------------------------------------------- signed int __cdecl sub_5ECE30(int a1) { signed int result; // eax@2 signed int v2; // ST24_4@3 int v3; // edi@3 double v4; // st7@6 int v5; // [sp+24h] [bp-14h]@5 sub_4675D0((int)&unk_D020420, (int)"cSetNPCParam"); dword_7508B8[dword_750CB8] = (int)"cSetNPCParam"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v2 = (signed int)sub_5F4640(a1, 1, 0); v3 = sub_54DE90(&unk_13253630, v2); if ( v3 && (v5 = sub_5F48F0(a1, 2, 0)) != 0 && (v4 = sub_5F4640(a1, 3, 0), (signed int)v4 >= 0) && (unsigned __int8)(*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v3 + 2944))(v3, v5, (signed int)v4) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCParam"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCParam"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSetNPCParam"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005ECFE0) -------------------------------------------------------- signed int __cdecl sub_5ECFE0(int a1) { signed int result; // eax@2 signed int v2; // ST1C_4@3 int v3; // eax@3 unsigned __int8 v4; // al@4 sub_4675D0((int)&unk_D020420, (int)"cObjectType"); dword_7508B8[dword_750CB8] = (int)"cObjectType"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) && (v2 = (signed int)sub_5F4640(a1, 1, 0), (v3 = sub_54DE90(&unk_13253630, v2)) != 0) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1232))(v3); sub_5F4C80(a1, (double)v4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectType"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cObjectType"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005ED120) -------------------------------------------------------- signed int __cdecl sub_5ED120(int a1) { double v1; // st7@3 int v2; // esi@4 int v3; // eax@4 signed int v4; // ecx@7 int v6; // [sp+Ch] [bp-2Ch]@2 int v7; // [sp+24h] [bp-14h]@3 sub_4675D0((int)&unk_D020420, (int)"cAIScriptFunc"); dword_7508B8[dword_750CB8] = (int)"cAIScriptFunc"; dword_750AB8[dword_750CB8++] = -1; if ( sub_5F41F0(a1, 1) ) { v1 = sub_5F4640(a1, 1, 0); v7 = sub_54DE90(&unk_13253630, (signed int)v1); if ( v7 ) { v2 = sub_5F48F0(a1, 2, 0); v3 = sub_5F48F0(a1, 3, 0); if ( !v2 || !v3 ) { v6 = (int)"cAIScriptFunc"; goto LABEL_24; } if ( strcmp((const char *)v2, "Entrance") ) { if ( strcmp((const char *)v2, "NPCClick") ) { if ( strcmp((const char *)v2, "NPCMenu") ) { if ( strcmp((const char *)v2, "MobDamaged") ) { if ( strcmp((const char *)v2, "ObjectDied") ) { if ( strcmp((const char *)v2, "NPCAction") ) { if ( strcmp((const char *)v2, "MobAttack") ) { LABEL_21: v6 = (int)"cAIScriptFunc"; goto LABEL_24; } v4 = 172; } else { v4 = 144; } } else { v4 = 116; } } else { v4 = 88; } } else { v4 = 60; } } else { v4 = 32; } } else { v4 = 4; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)v7 + 2928))(v7, v4, v3) ) { sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cAIScriptFunc"); return 1; } goto LABEL_21; } } v6 = (int)"cAIScriptFunc"; LABEL_24: --dword_750CB8; sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005ED450) -------------------------------------------------------- signed int __cdecl sub_5ED450(int a1) { double v1; // st7@4 int v2; // edi@4 signed int v3; // ST24_4@4 int v4; // eax@4 int v5; // ebx@4 int v6; // eax@6 int v8; // [sp+Ch] [bp-2Ch]@2 signed int v9; // [sp+24h] [bp-14h]@7 sub_4675D0((int)&unk_D020420, (int)"cSkillBlast"); dword_7508B8[dword_750CB8] = (int)"cSkillBlast"; dword_750AB8[dword_750CB8++] = -1; if ( !sub_5F41F0(a1, 1) || !sub_5F41F0(a1, 2) ) { v8 = (int)"cSkillBlast"; LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } v1 = sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, (signed int)v1); v3 = (signed int)sub_5F4640(a1, 2, 0); v4 = sub_54DE90(&unk_13253630, v3); v5 = v4; if ( !v2 || !v4 || (v6 = sub_5F48F0(a1, 3, 0)) == 0 ) { LABEL_9: v8 = (int)"cSkillBlast"; goto LABEL_10; } dword_13257798 = sub_639670(&unk_13257C80, v6); v9 = (signed int)sub_5F4640(a1, 4, 0); if ( v9 ) { if ( sub_402710(v2, v5) > (unsigned int)(v9 * v9) ) goto LABEL_9; } else { if ( (unsigned int)sub_402710(v2, v5) > 0xF4240 ) goto LABEL_9; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v2 + 2948))( v2, v5, (unsigned __int16)dword_13257798) ) goto LABEL_9; sub_5F4C80(a1, 1.0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSkillBlast"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13257798: using guessed type int dword_13257798; //----- (005ED640) -------------------------------------------------------- signed int __cdecl sub_5ED640(int a1) { signed int v1; // ebx@4 int v3; // [sp+40h] [bp-60h]@6 int v4; // [sp+44h] [bp-5Ch]@1 signed int v5; // [sp+48h] [bp-58h]@4 signed int v6; // [sp+4Ch] [bp-54h]@4 int v7; // [sp+50h] [bp-50h]@3 signed int v8; // [sp+54h] [bp-4Ch]@4 signed int v9; // [sp+58h] [bp-48h]@4 signed int v10; // [sp+5Ch] [bp-44h]@4 int v11; // [sp+60h] [bp-40h]@6 char v12[4]; // [sp+64h] [bp-3Ch]@7 int v13; // [sp+68h] [bp-38h]@7 int v14; // [sp+6Ch] [bp-34h]@7 int v15; // [sp+70h] [bp-30h]@7 int v16; // [sp+74h] [bp-2Ch]@7 int v17; // [sp+78h] [bp-28h]@7 int v18; // [sp+7Ch] [bp-24h]@7 int v19; // [sp+80h] [bp-20h]@7 char v20[4]; // [sp+84h] [bp-1Ch]@7 int v21; // [sp+88h] [bp-18h]@7 int v22; // [sp+8Ch] [bp-14h]@7 unsigned int v23; // [sp+90h] [bp-10h]@1 int v24; // [sp+9Ch] [bp-4h]@1 int v25; // [sp+A0h] [bp+0h]@1 v23 = (unsigned int)&v25 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cEffectRegen_XY"); dword_7508B8[dword_750CB8] = (int)"cEffectRegen_XY"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v4 = sub_5F48F0(a1, 1, 0); if ( v4 && (v7 = sub_5F48F0(a1, 2, 0)) != 0 ) { v10 = (signed int)sub_5F4640(a1, 3, 0); v5 = (signed int)sub_5F4640(a1, 4, 0); v6 = (signed int)sub_5F4640(a1, 5, 0); v1 = (signed int)sub_5F4640(a1, 6, 0); v8 = (signed int)sub_5F4640(a1, 7, 0); v9 = (signed int)sub_5F4640(a1, 8, 0); if ( !v9 ) v9 = 1000; v3 = sub_54DF90(&unk_13253630, (int)&v11, 9); if ( v3 ) { v22 = 0; v21 = 0; *(_DWORD *)v20 = 0; strncpy(v20, (const char *)v4, 0xCu); v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, (const char *)v7, 0x20u); if ( !(*(int (__stdcall **)(int, char *, signed int, signed int, signed int, char *, int, signed int, signed int))(*(_DWORD *)v3 + 1768))( v11, v20, v10, v5, v6, v12, 1000 * v1, v9, v8) ) { sub_5F4C80(a1, (double)(unsigned __int16)v11); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cEffectRegen_XY"); return 1; } sub_555DF0(&unk_13253630, v11, 0, 50); } v24 = -1; } else { v24 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cEffectRegen_XY"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005ED870) -------------------------------------------------------- char __thiscall sub_5ED870(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 int v6; // [sp+0h] [bp-1Ch]@0 int v7; // [sp+4h] [bp-18h]@0 int v8; // [sp+8h] [bp-14h]@0 v2 = this; sub_4675D0((int)&unk_D020420, (int)"AxialListEnemyInAray::alns_ValidObject"); dword_7508B8[dword_750CB8] = (int)"AxialListEnemyInAray::alns_ValidObject"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__stdcall **)(int, int, int, int, _DWORD))(**((_DWORD **)v2 + 402) + 1836))( a2, v6, v7, v8, "AxialListEnemyInAray::alns_ValidObject"); --dword_750CB8; v4 = v3; sub_467660((int)&unk_D020420, (int)"AxialListEnemyInAray::alns_ValidObject"); return v4; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005ED930) -------------------------------------------------------- int __cdecl sub_5ED930(int a1) { int result; // eax@2 int v2; // edi@3 signed int v3; // ebx@5 int v4; // eax@5 int v5; // edi@5 int i; // eax@5 int v7; // [sp+1Ch] [bp-670h]@5 int v8; // [sp+20h] [bp-66Ch]@5 __int64 v9; // [sp+24h] [bp-668h]@3 int (__stdcall **v10)(int, int, int); // [sp+30h] [bp-65Ch]@5 int v11; // [sp+678h] [bp-14h]@5 unsigned int v12; // [sp+67Ch] [bp-10h]@1 int v13; // [sp+688h] [bp-4h]@1 int v14; // [sp+68Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGetTargetList"); dword_7508B8[dword_750CB8] = (int)"cGetTargetList"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( sub_5F41F0(a1, 1) ) { HIDWORD(v9) = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, SWORD2(v9)); if ( v2 ) { v7 = (signed __int64)sub_5F4640(a1, 2, 0); v9 = (signed __int64)sub_5F4640(a1, 3, 0); v8 = v9; v3 = (signed int)sub_5F4640(a1, 4, 0); sub_4C0DA0(&v10); v10 = &off_6FB114; v11 = v2; LOBYTE(v13) = 1; v4 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v4, (int)&v7, (_UNKNOWN *)v3, 0, (int)&v10, 0, 65535); v5 = 0; for ( i = sub_4C0DD0((int)&v10, 0); i; i = sub_4C0DD0((int)&v10, v5) ) { HIDWORD(v9) = *(_WORD *)(i + 4); sub_5F4C80(a1, (double)SHIDWORD(v9)); ++v5; } LOBYTE(v13) = 0; v10 = &off_6FB114; sub_4C11C0(&v10); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cGetTargetList"); result = v5; } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cGetTargetList"); result = 0; } } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cGetTargetList"); result = 0; } return result; } // 6FB114: using guessed type int (__stdcall *off_6FB114)(int, int, int); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005EDBC0) -------------------------------------------------------- signed int __cdecl sub_5EDBC0(int a1) { int v1; // esi@1 int v3; // edi@5 unsigned int v4; // eax@8 bool v5; // cf@8 bool v6; // zf@8 int v7; // eax@8 int (__thiscall *v8)(_DWORD); // edx@9 void (__thiscall *v9)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@9 void *v10; // edi@12 int v11; // eax@12 __int16 v12; // ax@12 int v13; // eax@12 int v14; // eax@12 int v15; // [sp+10h] [bp-44h]@9 signed int v16; // [sp+14h] [bp-40h]@9 signed int v17; // [sp+18h] [bp-3Ch]@0 char v18; // [sp+28h] [bp-2Ch]@12 int v19; // [sp+2Ch] [bp-28h]@12 _UNKNOWN *v20; // [sp+30h] [bp-24h]@12 int v21; // [sp+34h] [bp-20h]@1 __int64 v22; // [sp+38h] [bp-1Ch]@3 unsigned int v23; // [sp+40h] [bp-14h]@1 int v24; // [sp+50h] [bp-4h]@1 v21 = (int)"cDamaged"; sub_4675D0((int)&unk_D020420, (int)"cDamaged"); dword_7508B8[dword_750CB8] = (int)"cDamaged"; dword_750AB8[dword_750CB8++] = -1; v24 = 0; v23 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, v23); if ( !v1 ) { --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cDamaged"); return 0; } v22 = (signed __int64)sub_5F4640(a1, 2, 0); v23 = v22; if ( !(_DWORD)v22 ) goto LABEL_6; if ( sub_5F4310(a1, 3) ) { HIDWORD(v22) = (signed int)sub_5F4640(a1, 3, 0); v3 = sub_54DE90(&unk_13253630, SWORD2(v22)); if ( !v3 ) { LABEL_6: --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cDamaged"); return 0; } v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1256))(v1); v5 = v4 < v23; v6 = v4 == v23; v7 = *(_DWORD *)v1; v17 = 1; if ( v5 | v6 ) { v8 = *(int (__thiscall **)(_DWORD))(v7 + 1256); v16 = 0; HIDWORD(v22) = *(_DWORD *)v1; v15 = v8(v1); v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(HIDWORD(v22) + 1468); } else { v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(v7 + 1472); v16 = 1000; v15 = v23; } v9(v1, v3, v15, v16); } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v1 + 1280))(v1, v22); } v10 = off_849C18; *(_WORD *)off_849C18 = 9276; *((_WORD *)v10 + 1) = *(_WORD *)(v1 + 4); v11 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v1 + 1256))(v1, v17); *((_WORD *)v10 + 4) = v23; *((_WORD *)v10 + 5) = 449; *((_DWORD *)v10 + 1) = v11; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2024))(v1); v23 = 15; HIDWORD(v22) = &off_849C18; *((_WORD *)v10 + 6) = v12; *((_BYTE *)v10 + 14) = 0; sub_4287B0(&v18, HIDWORD(v22), v23); v13 = *(_DWORD *)(v1 + 102); v23 = 65535; HIDWORD(v22) = 1; LODWORD(v22) = &v18; v21 = 0; v20 = 0; v19 = v13; LOBYTE(v24) = 1; v14 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v14, v19, v20, v21, v22, SHIDWORD(v22), v23); sub_5F4C80(a1, 1.0); LOBYTE(v24) = 0; sub_428A70(&v18); --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"cDamaged"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EDE60) -------------------------------------------------------- signed int __cdecl sub_5EDE60(int a1) { double v2; // st7@5 double v3; // st7@6 int v4; // eax@7 signed int v5; // eax@8 signed int v6; // esi@8 int v7; // esi@12 int v8; // esi@25 int (__stdcall *v9)(_DWORD); // edx@29 char v10; // [sp+20h] [bp-68h]@29 int v11; // [sp+4Ch] [bp-3Ch]@1 __int16 v12; // [sp+50h] [bp-38h]@29 int v13; // [sp+54h] [bp-34h]@5 int v14; // [sp+58h] [bp-30h]@6 int v15; // [sp+5Ch] [bp-2Ch]@9 int v16; // [sp+60h] [bp-28h]@11 int v17; // [sp+64h] [bp-24h]@11 int v18; // [sp+68h] [bp-20h]@11 int v19; // [sp+6Ch] [bp-1Ch]@11 int v20; // [sp+70h] [bp-18h]@11 int v21; // [sp+74h] [bp-14h]@11 unsigned int v22; // [sp+78h] [bp-10h]@1 int v23; // [sp+84h] [bp-4h]@1 int v24; // [sp+88h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v11 = (int)"cSkillDamageCalculate"; sub_4675D0((int)&unk_D020420, (int)"cSkillDamageCalculate"); dword_7508B8[dword_750CB8] = (int)"cSkillDamageCalculate"; dword_750AB8[dword_750CB8++] = -1; v23 = 0; if ( !sub_5F41F0(a1, 1) || !sub_5F41F0(a1, 3) || (v2 = sub_5F4640(a1, 1, 0), (v13 = sub_54DE90(&unk_13253630, (signed int)v2)) == 0) || (v3 = sub_5F4640(a1, 3, 0), (v14 = sub_54DE90(&unk_13253630, (signed int)v3)) == 0) || (v4 = sub_5F48F0(a1, 2, 0)) == 0 ) { v23 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSkillDamageCalculate"); return 0; } v5 = sub_639670(&unk_13257C80, v4); v6 = v5; if ( v5 == -1 || (v15 = (int)sub_447910((int)&unk_132577A0, v5)) == 0 ) goto LABEL_26; if ( sub_5F41F0(a1, 4) != 5 ) { if ( (unsigned __int8)(*(int (__stdcall **)(signed int))(*(_DWORD *)v13 + 2960))(v6) ) { v8 = v13; goto LABEL_29; } LABEL_26: v23 = -1; goto LABEL_3; } v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; sub_5F4C60(a1); while ( sub_5F5C30(a1, 4) ) { v7 = sub_5F48F0(a1, -2, 0); if ( strcmp((const char *)v7, "MinWC") ) { if ( strcmp((const char *)v7, "MaxWC") ) { if ( !strcmp((const char *)v7, "TH") ) v18 = (signed int)sub_5F4640(a1, -1, 0); } else { v17 = (signed int)sub_5F4640(a1, -1, 0); } } else { v16 = (signed int)sub_5F4640(a1, -1, 0); } if ( strcmp((const char *)v7, "MinMA") ) { if ( strcmp((const char *)v7, "MaxMA") ) { if ( !strcmp((const char *)v7, "MH") ) v21 = (signed int)sub_5F4640(a1, -1, 0); } else { v20 = (signed int)sub_5F4640(a1, -1, 0); } } else { v19 = (signed int)sub_5F4640(a1, -1, 0); } sub_5F3E70(a1, -2); } v8 = v13; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int *))(*(_DWORD *)v13 + 2964))(v13, &v16) ) goto LABEL_26; LABEL_29: v12 = 0; sub_42A950((int)&v10, v8, v14, v15, (int)&v12, *(_DWORD *)(v8 + 102)); v9 = *(int (__stdcall **)(_DWORD))(**(_DWORD **)(v15 + 112) + 28); LOBYTE(v23) = 1; v14 = v9(&v10); sub_5F4C80(a1, (double)v14); LOBYTE(v23) = 0; nullsub_2(&v10); --dword_750CB8; v23 = -1; sub_467660((int)&unk_D020420, (int)"cSkillDamageCalculate"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005EE2B0) -------------------------------------------------------- signed int __cdecl sub_5EE2B0(int a1) { int v1; // ebx@3 int v2; // eax@5 signed int v3; // eax@6 int v4; // eax@8 int v5; // edi@8 int v6; // ecx@9 int v7; // edx@9 int v8; // eax@9 int v10; // [sp+18h] [bp-44h]@2 int v11; // [sp+2Ch] [bp-30h]@5 int v12; // [sp+30h] [bp-2Ch]@5 int v13; // [sp+34h] [bp-28h]@1 __int64 v14; // [sp+38h] [bp-24h]@5 int v15; // [sp+40h] [bp-1Ch]@9 int v16; // [sp+44h] [bp-18h]@3 int v17; // [sp+48h] [bp-14h]@8 unsigned __int16 v18; // [sp+4Ch] [bp-10h]@5 int v19; // [sp+58h] [bp-4h]@1 v13 = (int)"cMagicFieldSpread"; sub_4675D0((int)&unk_D020420, (int)"cMagicFieldSpread"); dword_7508B8[dword_750CB8] = (int)"cMagicFieldSpread"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( !sub_5F41F0(a1, 1) ) { v19 = -1; v10 = (int)"cMagicFieldSpread"; LABEL_14: --dword_750CB8; sub_467660((int)&unk_D020420, v10); return 0; } v16 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, v16); if ( !v1 || (v11 = (signed __int64)sub_5F4640(a1, 2, 0), v16 = v18 | 0xC00, v14 = (signed __int64)sub_5F4640(a1, 3, 0), v12 = v14, sub_5F4640(a1, 4, 0), HIDWORD(v14) = (signed int)sub_5F4640(a1, 6, 0), (v2 = sub_5F48F0(a1, 5, 0)) == 0) || (v3 = sub_639670(&unk_13257C80, v2), v3 == -1) || (v16 = (int)sub_447910((int)&unk_132577A0, v3)) == 0 ) { v19 = -1; LABEL_13: v10 = (int)"cMagicFieldSpread"; goto LABEL_14; } v4 = sub_54DF90(&unk_13253630, (int)&v17, 6); v5 = v4; if ( !v4 ) { v19 = -1; goto LABEL_13; } v6 = *(_DWORD *)v4; v18 = 0; v7 = *(_DWORD *)v1; v15 = v6; v8 = (*(int (__thiscall **)(int, int, int *, unsigned __int16 *))(v7 + 2956))(v1, v16, &v11, &v18); (*(void (__thiscall **)(int, int, int))(v15 + 2008))(v5, v17, v8); if ( HIDWORD(v14) == 1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2968))(v5); HIDWORD(v14) = (unsigned __int16)v17; sub_5F4C80(a1, (double)(unsigned __int16)v17); --dword_750CB8; v19 = -1; sub_467660((int)&unk_D020420, (int)"cMagicFieldSpread"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EE500) -------------------------------------------------------- int __cdecl sub_5EE500(int a1) { int v1; // edi@1 int v2; // eax@8 int v4; // [sp+18h] [bp-3Ch]@2 int v5; // [sp+1Ch] [bp-38h]@5 char v6[4]; // [sp+20h] [bp-34h]@1 int v7; // [sp+24h] [bp-30h]@1 int v8; // [sp+28h] [bp-2Ch]@1 int v9; // [sp+2Ch] [bp-28h]@11 int v10; // [sp+30h] [bp-24h]@14 int v11; // [sp+34h] [bp-20h]@17 int v12; // [sp+38h] [bp-1Ch]@20 int v13; // [sp+3Ch] [bp-18h]@23 int v14; // [sp+40h] [bp-14h]@27 unsigned int v15; // [sp+44h] [bp-10h]@1 int v16; // [sp+50h] [bp-4h]@1 int v17; // [sp+54h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cSendGameLogDataType_4"); dword_7508B8[dword_750CB8] = (int)"cSendGameLogDataType_4"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v16 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; if ( sub_5F41F0(a1, 1) == 3 ) v4 = (signed __int64)sub_5F4640(a1, 1, 0); else v4 = 0; if ( sub_5F41F0(a1, 2) == 3 ) v5 = (signed __int64)sub_5F4640(a1, 2, 0); else v5 = 0; if ( sub_5F41F0(a1, 3) == 4 ) { v2 = sub_5F48F0(a1, 3, 0); v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, (const char *)v2, 0xCu); } else { v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, byte_6A492E, 0xCu); } if ( sub_5F41F0(a1, 4) == 3 ) v9 = (signed __int64)sub_5F4640(a1, 4, 0); else v9 = 0; if ( sub_5F41F0(a1, 5) == 3 ) v10 = (signed __int64)sub_5F4640(a1, 5, 0); else v10 = 0; if ( sub_5F41F0(a1, 6) == 3 ) v11 = (signed __int64)sub_5F4640(a1, 6, 0); else v11 = 0; if ( sub_5F41F0(a1, 7) == 3 ) v12 = (signed __int64)sub_5F4640(a1, 7, 0); else v12 = 0; if ( sub_5F41F0(a1, 8) == 3 ) v13 = (signed __int64)sub_5F4640(a1, 8, 0); else v13 = 0; if ( sub_5F41F0(a1, 9) == 3 ) v1 = (signed __int64)sub_5F4640(a1, 9, 0); v14 = v1; sub_611040(v4, v5, *(int *)v6, v7, v8, v9, v10, v11, v12, v13, v1); --dword_750CB8; v16 = -1; sub_467660((int)&unk_D020420, (int)"cSendGameLogDataType_4"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005EE830) -------------------------------------------------------- int __cdecl sub_5EE830(int a1) { int v1; // edi@1 int v2; // ebx@5 int v3; // eax@10 int v5; // [sp+10h] [bp-2Ch]@2 sub_4675D0((int)&unk_D020420, (int)"cSendGameLogDataType_5"); dword_7508B8[dword_750CB8] = (int)"cSendGameLogDataType_5"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; if ( sub_5F41F0(a1, 1) == 3 ) v5 = (signed __int64)sub_5F4640(a1, 1, 0); else v5 = 0; if ( sub_5F41F0(a1, 2) == 3 ) v2 = (signed __int64)sub_5F4640(a1, 2, 0); else v2 = 0; if ( sub_5F41F0(a1, 3) == 3 ) v1 = (signed __int64)sub_5F4640(a1, 3, 0); if ( sub_5F41F0(a1, 4) == 3 ) v3 = (signed __int64)sub_5F4640(a1, 4, 0); else v3 = 0; sub_611160(v5, v2, v1, v3); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cSendGameLogDataType_5"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EE9D0) -------------------------------------------------------- void *__thiscall sub_5EE9D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6FB124; if ( a2 & 1 ) operator delete(this); return v2; } // 6FB124: using guessed type int (__thiscall *off_6FB124)(void *, char); //----- (005EEA00) -------------------------------------------------------- int __stdcall sub_5EEA00(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > (unsigned int)&unk_35E50D7 || (result = operator new(76 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (005EEA60) -------------------------------------------------------- int __cdecl sub_5EEA60(int a1, int a2, int a3, int a4, int (__cdecl *a5)(_DWORD, _DWORD)) { int v5; // eax@1 int v6; // ebx@1 int v7; // edi@1 bool v8; // zf@1 int i; // edi@8 int result; // eax@11 v5 = a3; v6 = a2; v7 = 2 * a2 + 2; v8 = v7 == a3; if ( v7 < a3 ) { do { if ( (unsigned __int8)a5(a1 + 8 * v7, a1 + 8 * v7 - 8) ) --v7; *(_DWORD *)(a1 + 8 * v6) = *(_DWORD *)(a1 + 8 * v7); *(_DWORD *)(a1 + 8 * v6 + 4) = *(_DWORD *)(a1 + 8 * v7 + 4); v6 = v7; v7 = 2 * v7 + 2; } while ( v7 < a3 ); v5 = a3; v8 = v7 == a3; } if ( v8 ) { *(_DWORD *)(a1 + 8 * v6) = *(_DWORD *)(a1 + 8 * v5 - 8); *(_DWORD *)(a1 + 8 * v6 + 4) = *(_DWORD *)(a1 + 8 * v5 - 4); v6 = v5 - 1; } for ( i = (v6 - 1) / 2; a2 < v6; i = (i - 1) / 2 ) { if ( !(unsigned __int8)a5(a1 + 8 * i, a4) ) break; *(_DWORD *)(a1 + 8 * v6) = *(_DWORD *)(a1 + 8 * i); *(_DWORD *)(a1 + 8 * v6 + 4) = *(_DWORD *)(a1 + 8 * i + 4); v6 = i; } result = a4; *(_DWORD *)(a1 + 8 * v6) = *(_DWORD *)a4; *(_DWORD *)(a1 + 8 * v6 + 4) = *(_DWORD *)(a4 + 4); return result; } //----- (005EEB20) -------------------------------------------------------- void *__thiscall sub_5EEB20(void *this, char a2) { void *v2; // esi@1 int v3; // eax@1 v2 = this; v3 = *((_DWORD *)this + 1); *(_DWORD *)this = &off_6FAFD4; if ( v3 ) sub_609230(v3); *((_DWORD *)v2 + 1) = 0; if ( a2 & 1 ) operator delete(v2); return v2; } // 6FAFD4: using guessed type int (__thiscall *off_6FAFD4)(void *, char); //----- (005EEB60) -------------------------------------------------------- int __usercall sub_5EEB60(int a1, signed int a2) { int result; // eax@2 signed int v3; // ST14_4@4 int v4; // eax@4 int v5; // esi@5 int v6; // edi@6 int v7; // edx@7 void *v8; // eax@8 unsigned int v9; // esi@10 int v10; // [sp+Ch] [bp-10h]@4 if ( sub_5F41F0(a2, 1) && sub_5F41F0(a2, 1) == 3 && (v3 = (signed int)sub_5F4640(a2, 1, 0), (v4 = sub_54DE90(&unk_13253630, v3)) != 0) ) { result = sub_478720(v4); v5 = result; if ( result ) { v6 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)result + 1856))(result, a1, v10); if ( v6 >= 0 && (v7 = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1804))(v5) + 8), *(_WORD *)(v7 + 12 * v6 + 4)) && (v8 = sub_447910((int)&unk_132577A0, *(_WORD *)(v7 + 12 * v6 + 4))) != 0 ) { v9 = *(_DWORD *)(*(_DWORD *)(v5 + 8176) + 4 * *(_DWORD *)(v5 + 8192)); sub_5F4D80(a2, (const void *)(*((_DWORD *)v8 + 1) + 2)); sub_5F4C80(a2, (double)v9 / 10.0); result = 2; } else { result = 0; } } } else { result = 0; } return result; } //----- (005EEC80) -------------------------------------------------------- int __cdecl sub_5EEC80(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)) { int v3; // edi@1 int v4; // ecx@1 int result; // eax@1 int v6; // esi@2 int i; // edx@2 int v8; // ebx@4 int v9; // edx@4 int v10; // eax@4 int v11; // esi@4 int v12; // edx@4 int v13; // ebx@4 bool v14; // zf@4 int v15; // [sp+4h] [bp-10h]@4 int v16; // [sp+8h] [bp-Ch]@4 int v17; // [sp+Ch] [bp-8h]@3 int v18; // [sp+10h] [bp-4h]@3 int v19; // [sp+1Ch] [bp+8h]@4 int v20; // [sp+20h] [bp+Ch]@1 v3 = a1; v4 = (a2 - a1) >> 3; result = ((a2 - a1) >> 3) / 2; v20 = (a2 - a1) >> 3; if ( result > 0 ) { v6 = 2 * result + 2; for ( i = a1 + 8 * result; ; i = v18 ) { v8 = *(_DWORD *)(i - 8); v9 = i - 8; v10 = result - 1; v11 = v6 - 2; v18 = v9; v12 = *(_DWORD *)(v9 + 4); v15 = v8; v19 = v10; v17 = v11; v16 = v12; v13 = v10; v14 = v11 == v4; if ( v11 < v4 ) { do { if ( (unsigned __int8)a3(v3 + 8 * v11, v3 + 8 * v11 - 8) ) --v11; *(_DWORD *)(v3 + 8 * v13) = *(_DWORD *)(v3 + 8 * v11); *(_DWORD *)(v3 + 8 * v13 + 4) = *(_DWORD *)(v3 + 8 * v11 + 4); v13 = v11; v11 = 2 * v11 + 2; } while ( v11 < v20 ); v4 = v20; v10 = v19; v14 = v11 == v20; } if ( v14 ) { *(_DWORD *)(v3 + 8 * v13) = *(_DWORD *)(v3 + 8 * v4 - 8); *(_DWORD *)(v3 + 8 * v13 + 4) = *(_DWORD *)(v3 + 8 * v4 - 4); v13 = v4 - 1; } result = sub_5D5060(v3, v13, v10, (int)&v15, a3); if ( v19 <= 0 ) break; result = v19; v4 = v20; v6 = v17; } } return result; } //----- (005EED50) -------------------------------------------------------- int __cdecl sub_5EED50(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // eax@2 int v5; // ecx@2 int v6; // eax@4 int v7; // ecx@4 int result; // eax@5 int v9; // ecx@6 if ( (unsigned __int8)a4(a2, a1) ) { v4 = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = *(_DWORD *)a1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)a1 = v4; *(_DWORD *)(a1 + 4) = v5; } if ( (unsigned __int8)a4(a3, a2) ) { v6 = *(_DWORD *)a3; v7 = *(_DWORD *)(a3 + 4); *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = v6; *(_DWORD *)(a2 + 4) = v7; } result = a4(a2, a1); if ( (_BYTE)result ) { result = *(_DWORD *)a2; v9 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = *(_DWORD *)a1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)a1 = result; *(_DWORD *)(a1 + 4) = v9; } return result; } //----- (005EEDD0) -------------------------------------------------------- int __cdecl sub_5EEDD0(int a1) { int v2; // edi@3 unsigned int v3; // esi@6 int v4; // ST04_4@8 int v5; // eax@8 char *v6; // edi@8 int v7; // eax@11 int v8; // eax@12 int v9; // esi@13 char v10; // [sp+18h] [bp-34h]@8 int v11; // [sp+30h] [bp-1Ch]@1 __int64 v12; // [sp+34h] [bp-18h]@3 int i; // [sp+3Ch] [bp-10h]@13 int v14; // [sp+48h] [bp-4h]@1 v11 = (int)"cNearObjectList"; sub_4675D0((int)&unk_D020420, (int)"cNearObjectList"); dword_7508B8[dword_750CB8] = (int)"cNearObjectList"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cNearObjectList"); return 0; } HIDWORD(v12) = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, SWORD2(v12)); if ( !v2 ) { v14 = -1; LABEL_5: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cNearObjectList"); return 0; } v12 = (signed __int64)sub_5F4640(a1, 2, 0); v3 = v12; HIDWORD(v12) = (signed int)sub_5F4640(a1, 3, 0); if ( !(_DWORD)v12 || !BYTE4(v12) ) { LABEL_10: v14 = -1; goto LABEL_5; } sub_42A1D0((int)&v10, SBYTE4(v12)); v4 = *(_DWORD *)(v2 + 102); LOBYTE(v14) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, (_UNKNOWN *)v3, 0, (int)&v10, 0, 65535); v6 = sub_4286C0(&v10); if ( !v6 ) { LOBYTE(v14) = 0; sub_42A1F0((int)&v10); goto LABEL_10; } v7 = sub_429B50((int)&v10); if ( !sub_5F3D20(a1, v7) ) { v8 = sub_429B50((int)&v10); sub_639100(&unk_86DDD8, (int)"cNearObjectList Lua Stack Lack - ", v8); LOBYTE(v14) = 0; sub_42A1F0((int)&v10); v14 = -1; goto LABEL_5; } v9 = *(_DWORD *)v6; for ( i = 0; v9 != *((_DWORD *)v6 + 1); v9 += 4 ) { HIDWORD(v12) = *(_WORD *)(*(_DWORD *)v9 + 4); sub_5F4C80(a1, (double)SHIDWORD(v12)); ++i; } LOBYTE(v14) = 0; sub_42A1F0((int)&v10); --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"cNearObjectList"); return i; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EF050) -------------------------------------------------------- int __cdecl sub_5EF050(int a1) { int v1; // eax@6 int v2; // edi@7 int v3; // ebx@8 void *v4; // esi@9 int v5; // ST14_4@9 int v6; // ST10_4@9 int v7; // eax@9 int v8; // eax@9 void **i; // esi@10 int v11; // [sp-4h] [bp-54h]@2 char v12; // [sp+10h] [bp-40h]@9 int v13; // [sp+28h] [bp-28h]@1 __int64 v14; // [sp+2Ch] [bp-24h]@3 int v15; // [sp+34h] [bp-1Ch]@3 int v16; // [sp+38h] [bp-18h]@1 int v17; // [sp+3Ch] [bp-14h]@1 int v18; // [sp+40h] [bp-10h]@8 int v19; // [sp+4Ch] [bp-4h]@1 v13 = (int)"cSetAbstate_Range"; sub_4675D0((int)&unk_D020420, (int)"cSetAbstate_Range"); dword_7508B8[dword_750CB8] = (int)"cSetAbstate_Range"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; v16 = (signed int)sub_5F4640(a1, 1, 0); v17 = sub_54DE90(&unk_13253630, v16); if ( v17 ) { v14 = (signed __int64)sub_5F4640(a1, 2, 0); v15 = v14; v16 = (signed int)sub_5F4640(a1, 3, 0); if ( (_DWORD)v14 && (_BYTE)v16 && (v1 = sub_5F48F0(a1, 4, 0)) != 0 && (v2 = sub_639670(&byte_878354, v1), v2 != -1) ) { v3 = (signed int)sub_5F4640(a1, 5, 0); v18 = (signed int)sub_5F4640(a1, 6, 0); HIDWORD(v14) = sub_401310(&unk_877138, v2); if ( HIDWORD(v14) ) { sub_42A1D0((int)&v12, v16); v4 = (void *)v17; v5 = v15; v6 = *(_DWORD *)(v17 + 102); LOBYTE(v19) = 1; v7 = sub_427BD0(&unk_13253E80); sub_549E00(v4, v7, v6, (_UNKNOWN *)v5, 0, (int)&v12, 0, 65535); v8 = (int)sub_4286C0(&v12); v16 = v8; if ( v8 ) { for ( i = *(void ***)v8; i != *(void ***)(v8 + 4); ++i ) { if ( *i ) { if ( (unsigned __int8)(*(int (__stdcall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, int, signed int, _DWORD))(*(_DWORD *)*i + 1592))( v17, v2, v3, HIDWORD(v14), dword_14D129E8, 0, 0, v18, 9, 0) ) { v3 = dword_871500; sub_401900(*i, v2); sub_4055D0(*i, v2, v18, v3); (*(void (__stdcall **)(int, int, signed int))(*(_DWORD *)*i + 1008))(v2, v18, 1); (*(void (**)(void))(*(_DWORD *)*i + 1320))(); } v8 = v16; } } } LOBYTE(v19) = 0; sub_42A1F0((int)&v12); } v19 = -1; } else { v19 = -1; } v11 = (int)"cSetAbstate_Range"; } else { v19 = -1; v11 = (int)"cSetAbstate_Range"; } --dword_750CB8; sub_467660((int)&unk_D020420, v11); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 871500: using guessed type int dword_871500; // 14D129E8: using guessed type int dword_14D129E8; //----- (005EF2D0) -------------------------------------------------------- int __cdecl sub_5EF2D0(int a1) { int v1; // esi@1 unsigned int v2; // edi@3 int v3; // ebx@4 int v4; // ST04_4@5 int v5; // eax@5 char *v6; // edi@6 char *v7; // ST10_4@6 int v8; // ebx@6 int v9; // esi@6 int v10; // eax@7 int v11; // ecx@8 char v12; // dl@9 unsigned __int8 v13; // cl@10 __int16 v14; // bx@10 const void *v15; // ST14_4@10 int v16; // eax@10 int v17; // ebx@12 int i; // esi@12 int v19; // edi@14 int v20; // eax@16 int v22; // [sp-4h] [bp-50h]@2 char v23; // [sp+10h] [bp-3Ch]@5 int v24; // [sp+28h] [bp-24h]@1 __int64 v25; // [sp+2Ch] [bp-20h]@3 int v26; // [sp+34h] [bp-18h]@6 int v27; // [sp+38h] [bp-14h]@1 int v28; // [sp+3Ch] [bp-10h]@3 int v29; // [sp+48h] [bp-4h]@1 v24 = (int)"cScriptMessage_Range"; sub_4675D0((int)&unk_D020420, (int)"cScriptMessage_Range"); dword_7508B8[dword_750CB8] = (int)"cScriptMessage_Range"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v27 = (signed int)sub_5F4640(a1, 1, 0); v1 = sub_54DE90(&unk_13253630, v27); if ( v1 ) { v27 = HIWORD(v28) | 0xC00; v25 = (signed __int64)sub_5F4640(a1, 2, 0); v2 = v25; if ( (_DWORD)v25 ) { v3 = sub_5F48F0(a1, 3, 0); if ( v3 ) { sub_42A1D0((int)&v23, 2); v4 = *(_DWORD *)(v1 + 102); LOBYTE(v29) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v1, v5, v4, (_UNKNOWN *)v2, 0, (int)&v23, 0, 65535); HIDWORD(v25) = sub_4286C0(&v23); if ( HIDWORD(v25) ) { v6 = (char *)off_849C18 + 2; v7 = (char *)off_849C18 + 2; *(_WORD *)off_849C18 = 27669; strncpy(v7, (const char *)v3, 0x1Fu); v8 = -28 - (_DWORD)v6; v28 = 0; v9 = (int)(v6 + 32); v26 = -28 - (_DWORD)v6; v27 = 5; do { v10 = sub_5F48F0(a1, v8 + v9, 0); *(_BYTE *)v9 = 0; if ( v10 ) { v11 = v10; do v12 = *(_BYTE *)v11++; while ( v12 ); v13 = v11 - (v10 + 1); v14 = v28; v15 = (const void *)v10; v16 = (unsigned __int16)v28; *(_BYTE *)v9 = v13; memmove(&v6[v16 + 37], v15, v13); LOWORD(v28) = *(_BYTE *)v9 + v14; v8 = v26; } ++v9; --v27; } while ( v27 ); v17 = HIDWORD(v25); for ( i = *HIDWORD(v25); i != *(_DWORD *)(v17 + 4); i += 4 ) { if ( *(_DWORD *)i ) { v19 = (unsigned __int16)v28 + 39; if ( sub_4C81E0(&off_849C18, (unsigned __int16)v28 + 39) ) { v20 = (*(int (**)(void))(**(_DWORD **)i + 764))(); (*(void (__thiscall **)(int, _DWORD, void **))(*(_DWORD *)v20 + 12))(v20, *(_DWORD *)i, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"cScriptMessage_Range : Packet Too Long", v19); } } } } LOBYTE(v29) = 0; sub_42A1F0((int)&v23); } } v22 = (int)"cScriptMessage_Range"; } else { v22 = (int)"cScriptMessage_Range"; } --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, v22); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EF540) -------------------------------------------------------- int __cdecl sub_5EF540(int a1, const void *a2, int a3) { int result; // eax@1 const void *v4; // edx@2 result = a3; if ( (const void *)a1 != a2 ) { v4 = (const void *)(a1 + 8); do { if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *((_DWORD *)v4 - 1); memcpy((void *)(result + 8), v4, 0x44u); *(_DWORD *)result = &off_6B8AF8; } v4 = (char *)v4 + 76; result += 76; } while ( (char *)v4 - 8 != a2 ); } return result; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8AF8: using guessed type int (__thiscall *off_6B8AF8)(void *, char); //----- (005EF590) -------------------------------------------------------- int __cdecl sub_5EF590(int a1, const void *a2, int a3) { int result; // eax@1 const void *v4; // edx@2 result = a3; if ( (const void *)a1 != a2 ) { v4 = (const void *)(a1 + 8); do { if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *((_DWORD *)v4 - 1); memcpy((void *)(result + 8), v4, 0x44u); *(_DWORD *)result = &off_6B8B00; } v4 = (char *)v4 + 76; result += 76; } while ( (char *)v4 - 8 != a2 ); } return result; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8B00: using guessed type int (__thiscall *off_6B8B00)(void *, char); //----- (005EF5E0) -------------------------------------------------------- int __cdecl sub_5EF5E0(int a1, const void *a2, int a3) { int result; // eax@1 const void *v4; // edx@2 result = a3; if ( (const void *)a1 != a2 ) { v4 = (const void *)(a1 + 8); do { if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *((_DWORD *)v4 - 1); memcpy((void *)(result + 8), v4, 0x44u); *(_DWORD *)result = &off_6B8B08; } v4 = (char *)v4 + 76; result += 76; } while ( (char *)v4 - 8 != a2 ); } return result; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8B08: using guessed type int (__thiscall *off_6B8B08)(void *, char); //----- (005EF630) -------------------------------------------------------- int __cdecl sub_5EF630(int a1, int a2, int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // eax@1 int v5; // eax@2 int v6; // edi@2 int v7; // ebx@2 int v8; // edx@2 int v9; // ST30_4@2 int result; // eax@2 int v11; // [sp+Ch] [bp+8h]@2 v4 = (a3 - a1) >> 3; if ( v4 <= 40 ) { result = sub_5EED50(a1, a2, a3, a4); } else { v5 = (v4 + 1) / 8; v6 = 16 * v5; v7 = 8 * v5; v8 = 16 * v5 + a1; v9 = a1; v11 = 8 * v5 + a1; sub_5EED50(v9, v11, v8, a4); sub_5EED50(a2 - v7, a2, v7 + a2, a4); sub_5EED50(a3 - v6, a3 - v7, a3, a4); result = sub_5EED50(v11, a2, a3 - v7, a4); } return result; } //----- (005EF6D0) -------------------------------------------------------- int __cdecl sub_5EF6D0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)) { int result; // eax@1 int v4; // esi@1 int v5; // ebx@2 int v6; // edx@4 int v7; // edi@4 int i; // eax@5 int v9; // ecx@6 int v10; // ecx@7 int v11; // esi@8 int v12; // edx@10 int v13; // [sp+4h] [bp-Ch]@4 int v14; // [sp+8h] [bp-8h]@4 int v15; // [sp+Ch] [bp-4h]@3 result = a2; v4 = a1; if ( a1 != a2 ) { v5 = a1 + 8; if ( a1 + 8 != a2 ) { v15 = a1; do { v6 = *(_DWORD *)(v5 + 4); v7 = v5; v13 = *(_DWORD *)v5; v14 = v6; if ( (unsigned __int8)a3(&v13, v4) ) { for ( i = v5; i != v4; *(_DWORD *)(i + 12) = *(_DWORD *)(i + 4) ) { v9 = *(_DWORD *)(i - 8); i -= 8; *(_DWORD *)(i + 8) = v9; } result = v13; v10 = v14; *(_DWORD *)v4 = v13; *(_DWORD *)(v4 + 4) = v10; } else { v11 = v15; for ( result = a3(&v13, v15); (_BYTE)result; result = a3(&v13, v11) ) { *(_DWORD *)v7 = *(_DWORD *)v11; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v11 + 4); v7 = v11; v11 -= 8; } v12 = v14; v4 = a1; *(_DWORD *)v7 = v13; *(_DWORD *)(v7 + 4) = v12; } v15 += 8; v5 += 8; } while ( v5 != a2 ); } } return result; } //----- (005EF7A0) -------------------------------------------------------- int __cdecl sub_5EF7A0(int a1, int a2, unsigned int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // esi@1 unsigned int v5; // ebx@1 int v6; // edi@2 unsigned int v7; // eax@10 unsigned int v8; // edi@10 int v9; // ecx@14 int v10; // ST40_4@14 bool v11; // zf@17 int v12; // ebx@18 int v13; // eax@21 int v14; // ecx@21 int v15; // ecx@27 int v16; // ST38_4@27 int v17; // ST44_4@28 int v18; // ST48_4@28 unsigned int v19; // ecx@28 int v20; // ecx@31 int v21; // ST30_4@31 int v22; // ecx@32 int v23; // ST28_4@32 int v24; // ecx@33 int v25; // ST20_4@33 int result; // eax@34 unsigned int v27; // [sp+40h] [bp-8h]@10 int v28; // [sp+44h] [bp-4h]@1 v4 = a2 + 8 * ((signed int)(a3 - a2) >> 3) / 2; sub_5EF630(a2, a2 + 8 * ((signed int)(a3 - a2) >> 3) / 2, a3 - 8, a4); v5 = v4 + 8; v28 = v4 + 8; if ( a2 < (unsigned int)v4 ) { do { v6 = v4 - 8; if ( (unsigned __int8)a4(v4 - 8, v4) ) break; if ( (unsigned __int8)a4(v4, v4 - 8) ) break; v4 -= 8; } while ( a2 < (unsigned int)v6 ); } if ( v5 < a3 ) { do { if ( (unsigned __int8)a4(v5, v4) ) break; if ( (unsigned __int8)a4(v4, v5) ) break; v5 += 8; } while ( v5 < a3 ); v28 = v5; } v7 = v4; v8 = v5; v27 = v4; while ( 1 ) { while ( 1 ) { if ( v8 < a3 ) { do { if ( !(unsigned __int8)a4(v4, v8) ) { if ( (unsigned __int8)a4(v8, v4) ) break; v9 = *(_DWORD *)v5; v10 = *(_DWORD *)(v5 + 4); *(_DWORD *)v5 = *(_DWORD *)v8; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v8 + 4); v5 += 8; *(_DWORD *)v8 = v9; *(_DWORD *)(v8 + 4) = v10; } v8 += 8; } while ( v8 < a3 ); v7 = v27; v28 = v5; } v11 = v7 == a2; if ( v7 > a2 ) { v12 = v7 - 8; do { if ( !(unsigned __int8)a4(v12, v4) ) { if ( (unsigned __int8)a4(v4, v12) ) break; v13 = *(_DWORD *)(v4 - 8); v14 = *(_DWORD *)(v4 - 4); v4 -= 8; *(_DWORD *)v4 = *(_DWORD *)v12; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v12 + 4); *(_DWORD *)v12 = v13; *(_DWORD *)(v12 + 4) = v14; } v12 -= 8; v27 -= 8; } while ( a2 < v27 ); v7 = v27; v5 = v28; v11 = v27 == a2; } if ( v11 ) break; v7 -= 8; v27 = v7; if ( v8 == a3 ) { v4 -= 8; if ( v7 != v4 ) { v20 = *(_DWORD *)v7; v21 = *(_DWORD *)(v7 + 4); *(_DWORD *)v7 = *(_DWORD *)v4; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)v4 = v20; *(_DWORD *)(v4 + 4) = v21; } v22 = *(_DWORD *)v4; v5 -= 8; v23 = *(_DWORD *)(v4 + 4); *(_DWORD *)v4 = *(_DWORD *)v5; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)v5 = v22; v28 = v5; *(_DWORD *)(v5 + 4) = v23; } else { v24 = *(_DWORD *)v8; v25 = *(_DWORD *)(v8 + 4); *(_DWORD *)v8 = *(_DWORD *)v7; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)v7 = v24; *(_DWORD *)(v7 + 4) = v25; v8 += 8; } } if ( v8 == a3 ) break; if ( v5 != v8 ) { v15 = *(_DWORD *)v4; v16 = *(_DWORD *)(v4 + 4); *(_DWORD *)v4 = *(_DWORD *)v5; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)v5 = v15; *(_DWORD *)(v5 + 4) = v16; } v17 = *(_DWORD *)v4; v18 = *(_DWORD *)(v4 + 4); *(_DWORD *)v4 = *(_DWORD *)v8; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v8 + 4); v19 = v8; v5 += 8; *(_DWORD *)v8 = v17; v4 += 8; v28 = v5; v8 += 8; *(_DWORD *)(v19 + 4) = v18; } result = a1; *(_DWORD *)a1 = v4; *(_DWORD *)(a1 + 4) = v5; return result; } //----- (005EF9C0) -------------------------------------------------------- int __cdecl sub_5EF9C0(int a1, int a2, int (__cdecl *a3)(_DWORD, _DWORD)) { int result; // eax@1 int v4; // esi@2 int v5; // edx@3 int v6; // [sp+4h] [bp-8h]@3 int v7; // [sp+8h] [bp-4h]@3 result = a2 - a1; if ( ((a2 - a1) & 0xFFFFFFF8) > 8 ) { v4 = a2 - 8; do { v5 = *(_DWORD *)(v4 + 4); v6 = *(_DWORD *)v4; *(_DWORD *)v4 = *(_DWORD *)a1; v7 = v5; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a1 + 4); sub_5EEA60(a1, 0, (result - 8) >> 3, (int)&v6, a3); v4 -= 8; result = v4 - a1 + 8; } while ( ((v4 - a1 + 8) & 0xFFFFFFF8) > 8 ); } return result; } //----- (005EFA30) -------------------------------------------------------- signed int __cdecl sub_5EFA30(int a1) { signed int result; // eax@2 int v2; // eax@3 void (__thiscall *v3)(_DWORD, _DWORD); // edx@4 void *v4; // [sp+1Ch] [bp-28h]@4 int v5; // [sp+20h] [bp-24h]@4 int v6; // [sp+24h] [bp-20h]@4 int v7; // [sp+2Ch] [bp-18h]@1 int v8; // [sp+30h] [bp-14h]@3 int v9; // [sp+40h] [bp-4h]@1 v7 = (int)"cAggroListSize"; sub_4675D0((int)&unk_D020420, (int)"cAggroListSize"); dword_7508B8[dword_750CB8] = (int)"cAggroListSize"; dword_750AB8[dword_750CB8++] = -1; v9 = 0; if ( sub_5F41F0(a1, 1) && (v8 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v8)) != 0) ) { v4 = 0; v5 = 0; v6 = 0; v3 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2952); LOBYTE(v9) = 1; v3(v2, &v4); v8 = (v5 - (signed int)v4) >> 1; sub_5F4C80(a1, (double)v8); if ( v4 ) operator delete(v4); --dword_750CB8; v4 = 0; v5 = 0; v6 = 0; v9 = -1; sub_467660((int)&unk_D020420, (int)"cAggroListSize"); result = 1; } else { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"cAggroListSize"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EFB90) -------------------------------------------------------- int __cdecl sub_5EFB90(int a1) { int v1; // eax@1 int v2; // eax@3 int v3; // edi@3 int v4; // ebx@5 int v5; // eax@6 void *v6; // esi@7 int v8; // [sp-8h] [bp-78h]@2 unsigned int v9; // [sp-4h] [bp-74h]@1 char v10; // [sp+Ch] [bp-64h]@7 int v11; // [sp+2Ch] [bp-44h]@1 void *v12; // [sp+30h] [bp-40h]@7 unsigned int v13; // [sp+34h] [bp-3Ch]@7 int v14; // [sp+38h] [bp-38h]@13 char v15; // [sp+40h] [bp-30h]@7 unsigned int v16; // [sp+60h] [bp-10h]@1 int v17; // [sp+6Ch] [bp-4h]@1 int v18; // [sp+70h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v9 = (unsigned int)&v18 ^ __security_cookie; v11 = (int)"cDePolymorph_Area"; sub_4675D0((int)&unk_D020420, (int)"cDePolymorph_Area"); dword_7508B8[dword_750CB8] = (int)"cDePolymorph_Area"; dword_750AB8[dword_750CB8++] = -1; v17 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( v1 ) { v2 = sub_465D80((const char *)v1); v3 = v2; if ( v2 ) { v4 = sub_462A60((void *)v2); if ( v4 ) { v5 = sub_5F48F0(a1, 2, 0); if ( v5 ) { sub_418A80(&v15, (const char *)v5); sub_42A110((int)&v10, v3, (int)&v15, 2); LOBYTE(v17) = 1; sub_549B60((void *)v4, (int)&v10, 0); sub_42A6C0(&v10, (int)&v12); v6 = v12; LOBYTE(v17) = 2; if ( (unsigned int)v12 < v13 ) { do { if ( !*(_DWORD *)v6 ) break; (*(void (__cdecl **)(unsigned int))(**(_DWORD **)v6 + 3604))(v9); v6 = (char *)v6 + 4; } while ( (unsigned int)v6 < v13 ); v6 = v12; } if ( v6 ) operator delete(v6); v12 = 0; v13 = 0; v14 = 0; LOBYTE(v17) = 0; sub_42A170((int)&v10); } } v17 = -1; } else { v17 = -1; } v8 = (int)"cDePolymorph_Area"; } else { v17 = -1; v8 = (int)"cDePolymorph_Area"; } --dword_750CB8; sub_467660((int)&unk_D020420, v8); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005EFD10) -------------------------------------------------------- int __cdecl sub_5EFD10(int a1) { int result; // eax@2 int v2; // eax@3 void (__thiscall *v3)(_DWORD, _DWORD); // edx@4 void *v4; // esi@4 void *v5; // eax@4 int v6; // ebx@7 void *v7; // [sp+1Ch] [bp-28h]@4 void *v8; // [sp+20h] [bp-24h]@4 int v9; // [sp+24h] [bp-20h]@4 int v10; // [sp+2Ch] [bp-18h]@1 int v11; // [sp+30h] [bp-14h]@3 int v12; // [sp+40h] [bp-4h]@1 v10 = (int)"cAggroList"; sub_4675D0((int)&unk_D020420, (int)"cAggroList"); dword_7508B8[dword_750CB8] = (int)"cAggroList"; dword_750AB8[dword_750CB8++] = -1; v12 = 0; if ( sub_5F41F0(a1, 1) && (v11 = (signed int)sub_5F4640(a1, 1, 0), (v2 = sub_54DE90(&unk_13253630, v11)) != 0) ) { v7 = 0; v8 = 0; v9 = 0; v3 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2952); LOBYTE(v12) = 1; v3(v2, &v7); v4 = v7; v5 = v8; if ( v7 != v8 ) { do { v11 = *(_WORD *)v4; sub_5F4C80(a1, (double)v11); v5 = v8; v4 = (char *)v4 + 2; } while ( v4 != v8 ); v4 = v7; } v6 = (signed int)(v5 - v4) >> 1; if ( v4 ) operator delete(v4); --dword_750CB8; v7 = 0; v8 = 0; v9 = 0; v12 = -1; sub_467660((int)&unk_D020420, (int)"cAggroList"); result = v6; } else { --dword_750CB8; v12 = -1; sub_467660((int)&unk_D020420, (int)"cAggroList"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005EFE90) -------------------------------------------------------- signed int __cdecl sub_5EFE90(int a1) { int v2; // esi@3 int v3; // eax@4 signed int v4; // ST28_4@4 int v5; // ST24_4@4 int v6; // eax@4 int v7; // edi@4 int v8; // eax@4 int v9; // eax@6 int v10; // eax@10 int v11; // eax@12 char v12; // al@12 void *v13; // eax@16 int v14; // esi@16 int v15; // edi@19 int v16; // eax@19 char v17; // [sp+20h] [bp-88h]@4 void *v18; // [sp+38h] [bp-70h]@4 int v19; // [sp+3Ch] [bp-6Ch]@4 int v20; // [sp+40h] [bp-68h]@4 int v21; // [sp+48h] [bp-60h]@3 int v22; // [sp+4Ch] [bp-5Ch]@4 signed int v23; // [sp+50h] [bp-58h]@4 int v24; // [sp+54h] [bp-54h]@3 char v25[4]; // [sp+58h] [bp-50h]@4 int v26; // [sp+5Ch] [bp-4Ch]@4 int v27; // [sp+60h] [bp-48h]@4 int v28; // [sp+64h] [bp-44h]@4 int v29; // [sp+68h] [bp-40h]@4 int v30; // [sp+6Ch] [bp-3Ch]@4 int v31; // [sp+70h] [bp-38h]@4 int v32; // [sp+74h] [bp-34h]@4 char v33[4]; // [sp+78h] [bp-30h]@4 int v34; // [sp+7Ch] [bp-2Ch]@4 int v35; // [sp+80h] [bp-28h]@4 int v36; // [sp+84h] [bp-24h]@4 int v37; // [sp+88h] [bp-20h]@4 int v38; // [sp+8Ch] [bp-1Ch]@4 int v39; // [sp+90h] [bp-18h]@4 int v40; // [sp+94h] [bp-14h]@4 unsigned int v41; // [sp+98h] [bp-10h]@1 int v42; // [sp+A4h] [bp-4h]@1 int v43; // [sp+A8h] [bp+0h]@1 v41 = (unsigned int)&v43 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cObjectFind"); dword_7508B8[dword_750CB8] = (int)"cObjectFind"; dword_750AB8[dword_750CB8++] = -1; v42 = 0; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; v42 = -1; sub_467660((int)&unk_D020420, (int)"cObjectFind"); return 0; } v24 = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, v24); v21 = v2; if ( !v2 ) goto LABEL_27; v23 = (signed int)sub_5F4640(a1, 2, 0); v22 = (signed int)sub_5F4640(a1, 3, 0); v24 = sub_5F48F0(a1, 3, 0); v3 = sub_5F48F0(a1, 4, 0); v32 = 0; v31 = 0; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, (const char *)v3, 0x20u); sub_429F60((int)&v17); v4 = v23; v5 = *(_DWORD *)(v2 + 102); LOBYTE(v42) = 1; v6 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v6, v5, (_UNKNOWN *)v4, 0, (int)&v17, 1, 65535); v7 = 0; v18 = 0; v19 = 0; v20 = 0; LOBYTE(v42) = 2; sub_4285A0((int)&v17); v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; v35 = 0; v34 = 0; *(_DWORD *)v33 = 0; strncpy(v33, "so_mobile_GetIdxName", 0x20u); LOBYTE(v8) = sub_427A70((int)v25, (int)v33); if ( v8 ) { if ( !sub_429B20((int)&v17) ) goto LABEL_16; do { v9 = sub_429B40((int)&v17); if ( !strcmp((const char *)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2196))(v9), (const char *)v24) ) { v22 = sub_429B40((int)&v17); sub_4242C0((int)&v18, (unsigned int)&v22); } } while ( sub_429B20((int)&v17) ); goto LABEL_15; } v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; v35 = 0; v34 = 0; *(_DWORD *)v33 = 0; strncpy(v33, "so_ObjectType", 0x20u); LOBYTE(v10) = sub_427A70((int)v25, (int)v33); if ( v10 && sub_429B20((int)&v17) ) { do { v11 = sub_429B40((int)&v17); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1232))(v11); if ( v12 == v22 ) { v24 = sub_429B40((int)&v17); sub_4242C0((int)&v18, (unsigned int)&v24); } } while ( sub_429B20((int)&v17) ); LABEL_15: v7 = v19; } LABEL_16: v13 = v18; v14 = v23 * v23; v24 = 0; v23 = 0; v22 = (v7 - (signed int)v18) >> 2; if ( v22 <= 0 ) { LABEL_24: if ( v13 ) operator delete(v13); LOBYTE(v42) = 0; sub_42A030((int)&v17); LABEL_27: --dword_750CB8; v42 = -1; sub_467660((int)&unk_D020420, (int)"cObjectFind"); return 0; } while ( 1 ) { v15 = *((_DWORD *)v13 + v23); v16 = sub_402710(v21, *((_DWORD *)v13 + v23)); if ( v16 < v14 ) { v14 = v16; v24 = v15; } ++v23; if ( v23 >= v22 ) break; v13 = v18; } if ( !v24 ) { v13 = v18; goto LABEL_24; } v21 = *(_WORD *)(v24 + 4); sub_5F4C80(a1, (double)v21); if ( v18 ) operator delete(v18); LOBYTE(v42) = 0; sub_42A030((int)&v17); --dword_750CB8; v42 = -1; sub_467660((int)&unk_D020420, (int)"cObjectFind"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005F0290) -------------------------------------------------------- signed int __cdecl sub_5F0290(int a1) { int v2; // edi@3 _UNKNOWN *v3; // ST08_4@9 int v4; // ST04_4@9 int v5; // eax@9 signed int v6; // eax@9 char v7; // [sp+18h] [bp-44h]@9 int v8; // [sp+28h] [bp-34h]@5 int v9; // [sp+2Ch] [bp-30h]@5 int v10; // [sp+30h] [bp-2Ch]@5 int v11; // [sp+38h] [bp-24h]@1 __int64 v12; // [sp+3Ch] [bp-20h]@4 __int64 v13; // [sp+44h] [bp-18h]@3 unsigned __int16 v14; // [sp+4Eh] [bp-Eh]@4 int v15; // [sp+58h] [bp-4h]@1 v11 = (int)"cFindNearPlayer"; sub_4675D0((int)&unk_D020420, (int)"cFindNearPlayer"); dword_7508B8[dword_750CB8] = (int)"cFindNearPlayer"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( !sub_5F41F0(a1, 1) ) { --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"cFindNearPlayer"); return 0; } HIDWORD(v13) = (signed int)sub_5F4640(a1, 1, 0); v2 = sub_54DE90(&unk_13253630, SWORD2(v13)); if ( !v2 || (HIDWORD(v13) = v14 | 0xC00, v12 = (signed __int64)sub_5F4640(a1, 2, 0), HIDWORD(v12) = v12, sub_5F41F0(a1, 3) != 5) ) goto LABEL_11; v8 = 0; v9 = 0; v10 = 0; LOBYTE(v15) = 1; sub_5F4C60(a1); while ( sub_5F5C30(a1, 3) ) { v13 = (signed __int64)sub_5F4640(a1, -1, 0); HIDWORD(v13) = v13; if ( (unsigned int)v13 > 0 ) { sub_4242C0((int)&v8, (unsigned int)((char *)&v13 + 4)); sub_5F3E70(a1, -2); } } sub_428680((int)&v7, (int)&v8); v3 = (_UNKNOWN *)HIDWORD(v12); v4 = *(_DWORD *)(v2 + 102); LOBYTE(v15) = 2; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v5, v4, v3, 0, (int)&v7, 0, 65535); v6 = (unsigned __int16)sub_4286B0((int)&v7); if ( (_WORD)v6 == -1 ) { LOBYTE(v15) = 1; sub_427EB0(&v7); sub_424190((void **)&v8); LABEL_11: --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"cFindNearPlayer"); return 0; } HIDWORD(v12) = v6; sub_5F4C80(a1, (double)v6); LOBYTE(v15) = 1; sub_427EB0(&v7); sub_424190((void **)&v8); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"cFindNearPlayer"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005F0510) -------------------------------------------------------- signed int __cdecl sub_5F0510(int a1) { int v1; // eax@1 int v3; // eax@4 double v4; // st7@6 int v5; // eax@6 int v6; // eax@6 int v7; // esi@6 int v8; // eax@6 int v9; // eax@8 int v10; // eax@12 signed int v11; // edi@13 int v12; // eax@14 void *v13; // eax@18 int v14; // edi@18 int v15; // ecx@21 int v16; // edx@21 char v17; // [sp+20h] [bp-8Ch]@6 int v18; // [sp+38h] [bp-74h]@6 int v19; // [sp+3Ch] [bp-70h]@6 void *v20; // [sp+40h] [bp-6Ch]@6 int v21; // [sp+44h] [bp-68h]@6 int v22; // [sp+48h] [bp-64h]@6 int v23; // [sp+50h] [bp-5Ch]@6 int v24; // [sp+54h] [bp-58h]@9 int v25; // [sp+58h] [bp-54h]@5 char v26[4]; // [sp+5Ch] [bp-50h]@6 int v27; // [sp+60h] [bp-4Ch]@6 int v28; // [sp+64h] [bp-48h]@6 int v29; // [sp+68h] [bp-44h]@6 int v30; // [sp+6Ch] [bp-40h]@6 int v31; // [sp+70h] [bp-3Ch]@6 int v32; // [sp+74h] [bp-38h]@6 int v33; // [sp+78h] [bp-34h]@6 char v34[4]; // [sp+7Ch] [bp-30h]@6 int v35; // [sp+80h] [bp-2Ch]@6 int v36; // [sp+84h] [bp-28h]@6 int v37; // [sp+88h] [bp-24h]@6 int v38; // [sp+8Ch] [bp-20h]@6 int v39; // [sp+90h] [bp-1Ch]@6 int v40; // [sp+94h] [bp-18h]@6 int v41; // [sp+98h] [bp-14h]@6 unsigned int v42; // [sp+9Ch] [bp-10h]@1 int v43; // [sp+A8h] [bp-4h]@1 int v44; // [sp+ACh] [bp+0h]@1 v42 = (unsigned int)&v44 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGetNearestObjByCoord"); dword_7508B8[dword_750CB8] = (int)"cGetNearestObjByCoord"; dword_750AB8[dword_750CB8++] = -1; v43 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v3 = sub_465D80((const char *)v1)) == 0 || (v25 = sub_462A60((void *)v3)) == 0 ) { v43 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetNearestObjByCoord"); return 0; } v18 = (signed int)sub_5F4640(a1, 2, 0); v19 = (signed int)sub_5F4640(a1, 3, 0); v4 = sub_5F4640(a1, 4, 0); v23 = (signed int)v4; sub_429F60((int)&v17); LOBYTE(v43) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v25, v5, (int)&v18, (_UNKNOWN *)(signed int)v4, 0, (int)&v17, 1, 65535); v6 = sub_5F48F0(a1, 6, 0); v33 = 0; v32 = 0; v31 = 0; v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; strncpy(v26, (const char *)v6, 0x20u); v7 = 0; v20 = 0; v21 = 0; v22 = 0; LOBYTE(v43) = 2; sub_4285A0((int)&v17); v41 = 0; v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; v35 = 0; *(_DWORD *)v34 = 0; strncpy(v34, "so_mobile_GetIdxName", 0x20u); LOBYTE(v8) = sub_427A70((int)v26, (int)v34); if ( v8 ) { v25 = sub_5F48F0(a1, 5, 0); if ( !sub_429B20((int)&v17) ) goto LABEL_18; do { v9 = sub_429B40((int)&v17); if ( !strcmp((const char *)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2196))(v9), (const char *)v25) ) { v24 = sub_429B40((int)&v17); sub_4242C0((int)&v20, (unsigned int)&v24); } } while ( sub_429B20((int)&v17) ); goto LABEL_17; } sub_418A80(v34, "so_ObjectType"); LOBYTE(v10) = sub_427A70((int)v26, (int)v34); if ( v10 ) { v11 = (signed int)sub_5F4640(a1, 5, 0); if ( sub_429B20((int)&v17) ) { do { v12 = sub_429B40((int)&v17); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1232))(v12) == v11 ) { v25 = sub_429B40((int)&v17); sub_4242C0((int)&v20, (unsigned int)&v25); } } while ( sub_429B20((int)&v17) ); LABEL_17: v7 = v21; goto LABEL_18; } } LABEL_18: v13 = v20; v14 = v23 * v23; v25 = 0; v24 = 0; v23 = (v7 - (signed int)v20) >> 2; if ( v23 <= 0 ) { LABEL_26: if ( v13 ) operator delete(v13); LOBYTE(v43) = 0; sub_42A030((int)&v17); v43 = -1; goto LABEL_3; } while ( 1 ) { v15 = *(_DWORD *)(*((_DWORD *)v13 + v24) + 102); v16 = (*(_DWORD *)v15 - v18) * (*(_DWORD *)v15 - v18); if ( v16 + (*(_DWORD *)(v15 + 4) - v19) * (*(_DWORD *)(v15 + 4) - v19) < v14 ) { v14 = v16 + (*(_DWORD *)(v15 + 4) - v19) * (*(_DWORD *)(v15 + 4) - v19); v25 = *((_DWORD *)v13 + v24); } ++v24; if ( v24 >= v23 ) break; v13 = v20; } if ( !v25 ) { v13 = v20; goto LABEL_26; } v23 = *(_WORD *)(v25 + 4); sub_5F4C80(a1, (double)v23); if ( v20 ) operator delete(v20); LOBYTE(v43) = 0; sub_42A030((int)&v17); --dword_750CB8; v43 = -1; sub_467660((int)&unk_D020420, (int)"cGetNearestObjByCoord"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005F08F0) -------------------------------------------------------- int __cdecl sub_5F08F0(int a1) { int v1; // eax@3 signed int v2; // esi@5 void *v4; // [sp+10h] [bp-2Ch]@5 int v5; // [sp+14h] [bp-28h]@5 int v6; // [sp+18h] [bp-24h]@5 int v7; // [sp+20h] [bp-1Ch]@1 int v8; // [sp+24h] [bp-18h]@4 int v9; // [sp+28h] [bp-14h]@3 int v10; // [sp+38h] [bp-4h]@1 v7 = (int)"cMobWeaponRate"; sub_4675D0((int)&unk_D020420, (int)"cMobWeaponRate"); dword_7508B8[dword_750CB8] = (int)"cMobWeaponRate"; dword_750AB8[dword_750CB8++] = -1; v10 = 0; if ( sub_5F41F0(a1, 1) && (v9 = (signed int)sub_5F4640(a1, 1, 0), (v1 = sub_54DE90(&unk_13253630, v9)) != 0) && (v8 = sub_478720(v1)) != 0 ) { v4 = 0; v5 = 0; v6 = 0; LOBYTE(v10) = 1; v2 = 1; do { if ( !sub_5F4310(a1, v2) ) break; v9 = (unsigned __int16)(signed int)sub_5F4640(a1, v2, 0); if ( (unsigned __int16)v9 <= 0u ) break; sub_47AC30((int)&v4, (unsigned int)&v9); ++v2; } while ( (unsigned int)(v2 - 1) < 8 ); sub_50C8B0((void *)v8, (int)&v4); if ( v4 ) operator delete(v4); v4 = 0; v5 = 0; v6 = 0; v10 = -1; } else { v10 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cMobWeaponRate"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005F0A80) -------------------------------------------------------- int __thiscall sub_5F0A80(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // ebx@1 int result; // eax@3 int v5; // eax@4 const void *v6; // ecx@4 void *v7; // edx@4 int v8; // edx@4 void *v9; // ecx@4 signed int v10; // edx@4 int v11; // edi@4 void *i; // ebx@5 int v13; // edi@8 int v14; // [sp+0h] [bp-28h]@1 int v15; // [sp+10h] [bp-18h]@4 int v16; // [sp+14h] [bp-14h]@4 int *v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@4 v17 = &v14; v2 = this; v3 = a2; if ( a2 > (unsigned int)&unk_35E50D7 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 76; if ( result < a2 ) { v5 = sub_5EEA00(a2); v6 = *(const void **)(v2 + 4); v7 = *(void **)v2; v16 = v5; v18 = 0; sub_5EF540((int)v7, v6, v5); v8 = *(_DWORD *)(v2 + 4); v9 = *(void **)v2; v15 = v8; v10 = (signed int)((unsigned __int64)(1808407283i64 * (v8 - (signed int)v9)) >> 32) >> 5; v11 = v10 + ((unsigned int)v10 >> 31); v18 = -1; if ( v9 ) { for ( i = v9; i != (void *)v15; i = (char *)i + 76 ) (**(void (__thiscall ***)(void *, _DWORD))i)(i, 0); operator delete(*(void **)v2); v3 = a2; } result = v16; v13 = v16 + 76 * v11; *(_DWORD *)(v2 + 8) = v16 + 76 * v3; *(_DWORD *)(v2 + 4) = v13; *(_DWORD *)v2 = result; } return result; } //----- (005F0B89) -------------------------------------------------------- void __usercall sub_5F0B89(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005F0BA0) -------------------------------------------------------- int __thiscall sub_5F0BA0(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // ebx@1 int result; // eax@3 int v5; // eax@4 const void *v6; // ecx@4 void *v7; // edx@4 int v8; // edx@4 void *v9; // ecx@4 signed int v10; // edx@4 int v11; // edi@4 void *i; // ebx@5 int v13; // edi@8 int v14; // [sp+0h] [bp-28h]@1 int v15; // [sp+10h] [bp-18h]@4 int v16; // [sp+14h] [bp-14h]@4 int *v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@4 v17 = &v14; v2 = this; v3 = a2; if ( a2 > (unsigned int)&unk_35E50D7 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 76; if ( result < a2 ) { v5 = sub_5EEA00(a2); v6 = *(const void **)(v2 + 4); v7 = *(void **)v2; v16 = v5; v18 = 0; sub_5EF590((int)v7, v6, v5); v8 = *(_DWORD *)(v2 + 4); v9 = *(void **)v2; v15 = v8; v10 = (signed int)((unsigned __int64)(1808407283i64 * (v8 - (signed int)v9)) >> 32) >> 5; v11 = v10 + ((unsigned int)v10 >> 31); v18 = -1; if ( v9 ) { for ( i = v9; i != (void *)v15; i = (char *)i + 76 ) (**(void (__thiscall ***)(void *, _DWORD))i)(i, 0); operator delete(*(void **)v2); v3 = a2; } result = v16; v13 = v16 + 76 * v11; *(_DWORD *)(v2 + 8) = v16 + 76 * v3; *(_DWORD *)(v2 + 4) = v13; *(_DWORD *)v2 = result; } return result; } //----- (005F0CA9) -------------------------------------------------------- void __usercall sub_5F0CA9(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005F0CC0) -------------------------------------------------------- int __thiscall sub_5F0CC0(int this, unsigned int a2) { int v2; // esi@1 unsigned int v3; // ebx@1 int result; // eax@3 int v5; // eax@4 const void *v6; // ecx@4 void *v7; // edx@4 int v8; // edx@4 void *v9; // ecx@4 signed int v10; // edx@4 int v11; // edi@4 void *i; // ebx@5 int v13; // edi@8 int v14; // [sp+0h] [bp-28h]@1 int v15; // [sp+10h] [bp-18h]@4 int v16; // [sp+14h] [bp-14h]@4 int *v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@4 v17 = &v14; v2 = this; v3 = a2; if ( a2 > (unsigned int)&unk_35E50D7 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 76; if ( result < a2 ) { v5 = sub_5EEA00(a2); v6 = *(const void **)(v2 + 4); v7 = *(void **)v2; v16 = v5; v18 = 0; sub_5EF5E0((int)v7, v6, v5); v8 = *(_DWORD *)(v2 + 4); v9 = *(void **)v2; v15 = v8; v10 = (signed int)((unsigned __int64)(1808407283i64 * (v8 - (signed int)v9)) >> 32) >> 5; v11 = v10 + ((unsigned int)v10 >> 31); v18 = -1; if ( v9 ) { for ( i = v9; i != (void *)v15; i = (char *)i + 76 ) (**(void (__thiscall ***)(void *, _DWORD))i)(i, 0); operator delete(*(void **)v2); v3 = a2; } result = v16; v13 = v16 + 76 * v11; *(_DWORD *)(v2 + 8) = v16 + 76 * v3; *(_DWORD *)(v2 + 4) = v13; *(_DWORD *)v2 = result; } return result; } //----- (005F0DC9) -------------------------------------------------------- void __usercall sub_5F0DC9(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (005F0DE0) -------------------------------------------------------- int __cdecl sub_5F0DE0(int a1, int a2, signed int a3, int (__cdecl *a4)(_DWORD, _DWORD)) { int v4; // ebx@1 int v5; // edi@1 int result; // eax@1 int v7; // esi@2 int v8; // [sp+Ch] [bp-8h]@4 int v9; // [sp+10h] [bp-4h]@4 v4 = a1; v5 = a2; result = (a2 - a1) >> 3; if ( result <= 32 ) goto LABEL_8; v7 = a3; while ( v7 > 0 ) { sub_5EF7A0((int)&v8, v4, v5, a4); v7 = v7 / 2 / 2 + v7 / 2; if ( ((v8 - v4) & 0xFFFFFFF8) >= ((v5 - v9) & 0xFFFFFFF8) ) { sub_5F0DE0(v9, v5, v7, a4); v5 = v8; } else { sub_5F0DE0(v4, v8, v7, a4); v4 = v9; } result = (v5 - v4) >> 3; if ( result <= 32 ) goto LABEL_8; } if ( result <= 32 ) { LABEL_8: if ( result > 1 ) result = sub_5EF6D0(v4, v5, a4); } else { if ( ((v5 - v4) & 0xFFFFFFF8) > 8 ) sub_5EEC80(v4, v5, a4); result = sub_5EF9C0(v4, v5, a4); } return result; } //----- (005F0ED0) -------------------------------------------------------- int __cdecl sub_5F0ED0(int a1) { int v1; // edi@1 int v2; // eax@1 int v4; // eax@3 int v5; // esi@4 int v6; // eax@5 int v7; // eax@7 int v8; // eax@8 void *v9; // esi@10 unsigned int i; // ebx@10 char v11; // [sp+18h] [bp-48h]@5 void *v12; // [sp+2Ch] [bp-34h]@5 int v13; // [sp+30h] [bp-30h]@7 int v14; // [sp+34h] [bp-2Ch]@7 void *v15; // [sp+3Ch] [bp-24h]@5 unsigned int v16; // [sp+40h] [bp-20h]@5 int v17; // [sp+44h] [bp-1Ch]@5 int v18; // [sp+4Ch] [bp-14h]@1 int v19; // [sp+50h] [bp-10h]@12 int v20; // [sp+5Ch] [bp-4h]@1 v18 = (int)"cGetPlayerList"; sub_4675D0((int)&unk_D020420, (int)"cGetPlayerList"); dword_7508B8[dword_750CB8] = (int)"cGetPlayerList"; dword_750AB8[dword_750CB8++] = -1; v1 = 0; v20 = 0; v2 = sub_5F48F0(a1, 1, 0); if ( !v2 || (v4 = sub_465D80((const char *)v2)) == 0 ) { --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"cGetPlayerList"); return 0; } v5 = sub_462A60((void *)v4); if ( !v5 ) goto LABEL_9; v15 = 0; v16 = 0; v17 = 0; LOBYTE(v20) = 1; sub_42A070((int)&v11); LOBYTE(v20) = 2; sub_549B60((void *)v5, (int)&v11, 0); v6 = sub_424EF0(&v11, (int)&v12); LOBYTE(v20) = 3; sub_424530(&v15, v6); LOBYTE(v20) = 2; if ( v12 ) operator delete(v12); v12 = 0; v13 = 0; v14 = 0; v7 = sub_429B50((int)&v11); if ( !sub_5F3D20(a1, v7) ) { v8 = sub_429B50((int)&v11); sub_639100(&unk_86DDD8, (int)"cGetPlayerList Lua Stack Lack - ", v8); LOBYTE(v20) = 1; sub_42A0B0((int)&v11); sub_424190(&v15); LABEL_9: --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"cGetPlayerList"); return 0; } v9 = v15; for ( i = v16; (unsigned int)v9 < i; ++v1 ) { if ( !*(_DWORD *)v9 ) break; v19 = *(_WORD *)(*(_DWORD *)v9 + 4); sub_5F4C80(a1, (double)v19); v9 = (char *)v9 + 4; } LOBYTE(v20) = 1; sub_42A0B0((int)&v11); if ( v15 ) operator delete(v15); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"cGetPlayerList"); return v1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (005F10E0) -------------------------------------------------------- int __cdecl sub_5F10E0(int a1) { int v1; // eax@1 int v3; // eax@3 int v4; // edi@3 int v5; // eax@5 double v6; // st7@6 int v7; // eax@6 int v8; // eax@6 int v9; // eax@7 void *v10; // edi@9 char v11; // [sp+18h] [bp-80h]@6 char v12; // [sp+28h] [bp-70h]@6 int v13; // [sp+48h] [bp-50h]@1 void *v14; // [sp+4Ch] [bp-4Ch]@6 unsigned int v15; // [sp+50h] [bp-48h]@6 int v16; // [sp+54h] [bp-44h]@6 int v17; // [sp+5Ch] [bp-3Ch]@4 int v18; // [sp+60h] [bp-38h]@6 int i; // [sp+64h] [bp-34h]@9 char v20[4]; // [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 int v27; // [sp+84h] [bp-14h]@5 unsigned int v28; // [sp+88h] [bp-10h]@1 int v29; // [sp+94h] [bp-4h]@1 int v30; // [sp+98h] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v13 = (int)"cGetAreaObjectList"; sub_4675D0((int)&unk_D020420, (int)"cGetAreaObjectList"); dword_7508B8[dword_750CB8] = (int)"cGetAreaObjectList"; dword_750AB8[dword_750CB8++] = -1; v29 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 ) { --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"cGetAreaObjectList"); return 0; } v3 = sub_465D80((const char *)v1); v4 = v3; if ( !v3 || (v17 = sub_462A60((void *)v3)) == 0 || (v27 = 0, v26 = 0, v25 = 0, v24 = 0, v23 = 0, v22 = 0, v21 = 0, *(_DWORD *)v20 = 0, (v5 = sub_5F48F0(a1, 2, 0)) == 0) ) goto LABEL_8; sub_427AD0(v20, (const char *)v5); v6 = sub_5F4640(a1, 3, 0); v14 = 0; v15 = 0; v16 = 0; v18 = (signed int)v6; LOBYTE(v18) = (signed int)v6; LOBYTE(v29) = 1; sub_42A110((int)&v12, v4, (int)v20, (signed int)v6); LOBYTE(v29) = 2; sub_549B60((void *)v17, (int)&v12, 0); v7 = sub_42A6C0(&v12, (int)&v11); LOBYTE(v29) = 3; sub_424530(&v14, v7); LOBYTE(v29) = 2; sub_424190((void **)&v11); v8 = sub_429B60((int)&v12); if ( !sub_5F3D20(a1, v8) ) { v9 = sub_429B60((int)&v12); sub_639100(&unk_86DDD8, (int)"cGetAreaObjectList Lua Stack Lack - ", v9); LOBYTE(v29) = 1; sub_42A170((int)&v12); sub_424190(&v14); LABEL_8: --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"cGetAreaObjectList"); return 0; } v10 = v14; for ( i = 0; (unsigned int)v10 < v15; v10 = (char *)v10 + 4 ) { if ( !*(_DWORD *)v10 ) break; v17 = *(_WORD *)(*(_DWORD *)v10 + 4); sub_5F4C80(a1, (double)v17); ++i; } LOBYTE(v29) = 1; sub_42A170((int)&v12); if ( v14 ) operator delete(v14); --dword_750CB8; v29 = -1; sub_467660((int)&unk_D020420, (int)"cGetAreaObjectList"); return i; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005F1350) -------------------------------------------------------- int __thiscall sub_5F1350(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 76; if ( (unsigned int)((char *)&unk_35E50D7 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 76; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_35E50D7 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5F0A80(this, v5); } return result; } //----- (005F13D0) -------------------------------------------------------- int __thiscall sub_5F13D0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 76; if ( (unsigned int)((char *)&unk_35E50D7 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 76; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_35E50D7 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5F0BA0(this, v5); } return result; } //----- (005F1450) -------------------------------------------------------- int __thiscall sub_5F1450(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 76; if ( (unsigned int)((char *)&unk_35E50D7 - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 76; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_35E50D7 - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_5F0CC0(this, v5); } return result; } //----- (005F14D0) -------------------------------------------------------- unsigned int __thiscall sub_5F14D0(int this, int a2) { int v2; // eax@1 unsigned int result; // eax@3 int v4; // edx@3 unsigned int v5; // edx@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 3; if ( 536870911 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); result = a2 + v2; v4 = (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 3; if ( result > v4 ) { if ( 536870911 - ((unsigned int)v4 >> 1) >= v4 ) v5 = ((unsigned int)v4 >> 1) + v4; else v5 = 0; if ( v5 < result ) v5 = result; result = sub_492BD0(this, v5); } return result; } //----- (005F1530) -------------------------------------------------------- int __thiscall sub_5F1530(int this, unsigned int a2) { int v2; // ebx@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int result; // eax@5 int v7; // esi@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5F1350(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); memcpy((void *)(result + 8), (const void *)(a2 + 8), 0x44u); *(_DWORD *)result = &off_6B8AF8; } } else { v4 = (signed int)((unsigned __int64)(1808407283i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 5; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5F1350(v2, 1); result = *(_DWORD *)(v2 + 4); v7 = *(_DWORD *)v2 + 76 * v5; if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *(_DWORD *)(v7 + 4); memcpy((void *)(result + 8), (const void *)(v7 + 8), 0x44u); *(_DWORD *)result = &off_6B8AF8; *(_DWORD *)(v2 + 4) += 76; return result; } } *(_DWORD *)(v2 + 4) += 76; return result; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8AF8: using guessed type int (__thiscall *off_6B8AF8)(void *, char); //----- (005F15F0) -------------------------------------------------------- int __thiscall sub_5F15F0(int this, unsigned int a2) { int v2; // ebx@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int result; // eax@5 int v7; // esi@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5F13D0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); memcpy((void *)(result + 8), (const void *)(a2 + 8), 0x44u); *(_DWORD *)result = &off_6B8B00; } } else { v4 = (signed int)((unsigned __int64)(1808407283i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 5; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5F13D0(v2, 1); result = *(_DWORD *)(v2 + 4); v7 = *(_DWORD *)v2 + 76 * v5; if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *(_DWORD *)(v7 + 4); memcpy((void *)(result + 8), (const void *)(v7 + 8), 0x44u); *(_DWORD *)result = &off_6B8B00; *(_DWORD *)(v2 + 4) += 76; return result; } } *(_DWORD *)(v2 + 4) += 76; return result; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8B00: using guessed type int (__thiscall *off_6B8B00)(void *, char); //----- (005F16B0) -------------------------------------------------------- int __thiscall sub_5F16B0(int this, unsigned int a2) { int v2; // ebx@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int result; // eax@5 int v7; // esi@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5F1450(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); memcpy((void *)(result + 8), (const void *)(a2 + 8), 0x44u); *(_DWORD *)result = &off_6B8B08; } } else { v4 = (signed int)((unsigned __int64)(1808407283i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 5; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_5F1450(v2, 1); result = *(_DWORD *)(v2 + 4); v7 = *(_DWORD *)v2 + 76 * v5; if ( result ) { *(_DWORD *)result = &off_6B8AF0; *(_DWORD *)(result + 4) = *(_DWORD *)(v7 + 4); memcpy((void *)(result + 8), (const void *)(v7 + 8), 0x44u); *(_DWORD *)result = &off_6B8B08; *(_DWORD *)(v2 + 4) += 76; return result; } } *(_DWORD *)(v2 + 4) += 76; return result; } // 6B8AF0: using guessed type int (__thiscall *off_6B8AF0)(void *, char); // 6B8B08: using guessed type int (__thiscall *off_6B8B08)(void *, char); //----- (005F1770) -------------------------------------------------------- unsigned int __thiscall sub_5F1770(int this, unsigned int a2) { int v2; // esi@1 unsigned int result; // eax@1 signed int v4; // edi@3 int v5; // ecx@5 int v6; // eax@6 v2 = this; result = *(_DWORD *)(this + 4); if ( a2 >= result || *(_DWORD *)this > a2 ) { if ( result == *(_DWORD *)(this + 8) ) sub_5F14D0(this, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); } } else { v4 = (signed int)(a2 - *(_DWORD *)this) >> 3; if ( result == *(_DWORD *)(this + 8) ) result = sub_5F14D0(this, 1); v5 = *(_DWORD *)(v2 + 4); if ( v5 ) { v6 = *(_DWORD *)v2; *(_DWORD *)v5 = *(_DWORD *)(*(_DWORD *)v2 + 8 * v4); result = *(_DWORD *)(v6 + 8 * v4 + 4); *(_DWORD *)(v5 + 4) = result; *(_DWORD *)(v2 + 4) += 8; return result; } } *(_DWORD *)(v2 + 4) += 8; return result; } //----- (005F17F0) -------------------------------------------------------- signed int __cdecl sub_5F17F0(int a1) { double v1; // st7@3 int v2; // esi@4 double v3; // st7@4 int v4; // eax@8 int v5; // eax@10 int v6; // eax@12 int v8; // [sp+1Ch] [bp-68h]@4 int v9; // [sp+20h] [bp-64h]@4 int v10; // [sp+24h] [bp-60h]@3 char v11; // [sp+28h] [bp-5Ch]@8 unsigned int v12; // [sp+74h] [bp-10h]@1 int v13; // [sp+80h] [bp-4h]@1 int v14; // [sp+84h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cTriggerRegist"); dword_7508B8[dword_750CB8] = (int)"cTriggerRegist"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( sub_5F41F0(a1, 1) && (v1 = sub_5F4640(a1, 1, 0), (v10 = sub_54DE90(&unk_13253630, (signed int)v1)) != 0) ) { v2 = sub_5F48F0(a1, 2, 0); v9 = sub_5F48F0(a1, 3, 0); v3 = sub_5F4640(a1, 4, 0); v8 = (signed int)v3; if ( v2 && v9 && (signed int)v3 >= 0 ) { if ( !strcmp((const char *)v2, "Chat") ) { v4 = sub_48F5A0((int)&v11, v10, (const char *)v9, v8); LOBYTE(v13) = 1; sub_5F1530((int)&dword_D56DC58, v4); LOBYTE(v13) = 0; sub_48F660(&v11); LABEL_13: sub_5F4C80(a1, 1.0); --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"cTriggerRegist"); return 1; } if ( !strcmp((const char *)v2, "Jump") ) { v5 = sub_48F5E0((int)&v11, v10, (const char *)v9, v8); LOBYTE(v13) = 2; sub_5F15F0((int)&dword_D56DC48, v5); LOBYTE(v13) = 0; sub_48F660(&v11); goto LABEL_13; } if ( !strcmp((const char *)v2, "ItemUse") ) { v6 = sub_48F620((int)&v11, v10, (const char *)v9, v8); LOBYTE(v13) = 3; sub_5F16B0((int)&dword_D56DC38, v6); LOBYTE(v13) = 0; sub_48F660(&v11); goto LABEL_13; } } v13 = -1; } else { v13 = -1; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cTriggerRegist"); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005F1A90) -------------------------------------------------------- int __cdecl sub_5F1A90(int a1) { int v1; // eax@1 int v3; // eax@4 signed int v4; // esi@6 int v5; // eax@6 int v6; // eax@6 int v7; // eax@6 int v8; // eax@8 int v9; // eax@9 int v10; // eax@12 int v11; // eax@14 unsigned __int8 v12; // al@14 int v13; // eax@15 int v14; // esi@17 double v15; // st7@17 int v16; // eax@17 void *v17; // ecx@26 int v18; // esi@26 int v19; // [sp+4h] [bp-A8h]@21 char v20; // [sp+1Ch] [bp-90h]@6 int v21; // [sp+34h] [bp-78h]@6 int v22; // [sp+38h] [bp-74h]@6 void *v23; // [sp+3Ch] [bp-70h]@6 int v24; // [sp+40h] [bp-6Ch]@6 int v25; // [sp+44h] [bp-68h]@6 int v26; // [sp+4Ch] [bp-60h]@9 int v27; // [sp+50h] [bp-5Ch]@9 int v28; // [sp+54h] [bp-58h]@17 void *v29; // [sp+58h] [bp-54h]@5 char v30[4]; // [sp+5Ch] [bp-50h]@6 int v31; // [sp+60h] [bp-4Ch]@6 int v32; // [sp+64h] [bp-48h]@6 int v33; // [sp+68h] [bp-44h]@6 int v34; // [sp+6Ch] [bp-40h]@6 int v35; // [sp+70h] [bp-3Ch]@6 int v36; // [sp+74h] [bp-38h]@6 int v37; // [sp+78h] [bp-34h]@6 char v38[4]; // [sp+7Ch] [bp-30h]@6 int v39; // [sp+80h] [bp-2Ch]@6 int v40; // [sp+84h] [bp-28h]@6 int v41; // [sp+88h] [bp-24h]@6 int v42; // [sp+8Ch] [bp-20h]@6 int v43; // [sp+90h] [bp-1Ch]@6 int v44; // [sp+94h] [bp-18h]@6 int v45; // [sp+98h] [bp-14h]@6 unsigned int v46; // [sp+9Ch] [bp-10h]@1 int v47; // [sp+A8h] [bp-4h]@1 int v48; // [sp+ACh] [bp+0h]@1 v46 = (unsigned int)&v48 ^ __security_cookie; sub_4675D0((int)&unk_D020420, (int)"cGetNearObjListByCoord"); dword_7508B8[dword_750CB8] = (int)"cGetNearObjListByCoord"; dword_750AB8[dword_750CB8++] = -1; v47 = 0; v1 = sub_5F48F0(a1, 1, 0); if ( !v1 || (v3 = sub_465D80((const char *)v1)) == 0 || (v29 = (void *)sub_462A60((void *)v3)) == 0 ) { v47 = -1; LABEL_3: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"cGetNearObjListByCoord"); return 0; } v21 = (signed int)sub_5F4640(a1, 2, 0); v22 = (signed int)sub_5F4640(a1, 3, 0); v4 = (signed int)sub_5F4640(a1, 4, 0); sub_429F60((int)&v20); LOBYTE(v47) = 1; v5 = sub_427BD0(&unk_13253E80); sub_549E00(v29, v5, (int)&v21, (_UNKNOWN *)v4, 0, (int)&v20, 1, 65535); v6 = sub_5F48F0(a1, 6, 0); v37 = 0; v36 = 0; v35 = 0; v34 = 0; v33 = 0; v32 = 0; v31 = 0; *(_DWORD *)v30 = 0; strncpy(v30, (const char *)v6, 0x20u); v23 = 0; v24 = 0; v25 = 0; LOBYTE(v47) = 2; sub_4285A0((int)&v20); v45 = 0; v44 = 0; v43 = 0; v42 = 0; v41 = 0; v40 = 0; v39 = 0; *(_DWORD *)v38 = 0; strncpy(v38, "so_mobile_GetIdxName", 0x20u); LOBYTE(v7) = sub_427A70((int)v30, (int)v38); if ( v7 ) { v29 = (void *)sub_5F48F0(a1, 5, 0); while ( sub_429B20((int)&v20) ) { v8 = sub_429B40((int)&v20); if ( !strcmp((const char *)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2196))(v8), (const char *)v29) ) { v9 = sub_429B40((int)&v20); v27 = (**(_DWORD **)(v9 + 102) - v21) * (**(_DWORD **)(v9 + 102) - v21) + (*(_DWORD *)(*(_DWORD *)(v9 + 102) + 4) - v22) * (*(_DWORD *)(*(_DWORD *)(v9 + 102) + 4) - v22); v26 = v9; sub_5F1770((int)&v23, (unsigned int)&v26); } } } else { sub_418A80(v38, "so_ObjectType"); LOBYTE(v10) = sub_427A70((int)v30, (int)v38); if ( v10 ) { v29 = (void *)(signed int)sub_5F4640(a1, 5, 0); while ( sub_429B20((int)&v20) ) { v11 = sub_429B40((int)&v20); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 1232))(v11); if ( (void *)v12 == v29 ) { v13 = sub_429B40((int)&v20); v27 = (**(_DWORD **)(v13 + 102) - v21) * (**(_DWORD **)(v13 + 102) - v21) + (*(_DWORD *)(*(_DWORD *)(v13 + 102) + 4) - v22) * (*(_DWORD *)(*(_DWORD *)(v13 + 102) + 4) - v22); v26 = v13; sub_5F1770((int)&v23, (unsigned int)&v26); } } } } v14 = (v24 - (signed int)v23) >> 3; sub_5F0DE0((int)v23, v24, (v24 - (signed int)v23) >> 3, (int (__cdecl *)(_DWORD, _DWORD))sub_5D3AA0); v15 = sub_5F4640(a1, 7, 0); v16 = (signed int)v15; v28 = (signed int)v15; if ( !(signed int)v15 ) { v28 = 2147483647; v16 = 2147483647; } if ( v16 <= v14 ) { if ( !sub_5F3D20(a1, v16) ) { v19 = v28; goto LABEL_22; } } else { if ( !sub_5F3D20(a1, v14) ) { v19 = v14; LABEL_22: sub_639100(&unk_86DDD8, (int)"cGetNearObjListByCoord Lua Stack Lack - ", v19); sub_424190(&v23); LABEL_23: LOBYTE(v47) = 0; sub_42A030((int)&v20); v47 = -1; goto LABEL_3; } } v17 = v23; v18 = 0; v29 = v23; if ( v23 != (void *)v24 ) { while ( *(_DWORD *)v29 ) { v27 = *(_WORD *)(*(_DWORD *)v29 + 4); sub_5F4C80(a1, (double)v27); v17 = v23; ++v18; if ( v18 != v28 ) { v29 = (char *)v29 + 8; if ( v29 != (void *)v24 ) continue; } goto LABEL_30; } if ( v17 ) operator delete(v17); goto LABEL_23; } LABEL_30: if ( v17 ) operator delete(v17); LOBYTE(v47) = 0; sub_42A030((int)&v20); --dword_750CB8; v47 = -1; sub_467660((int)&unk_D020420, (int)"cGetNearObjListByCoord"); return v18; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (005F1F20) -------------------------------------------------------- char __thiscall sub_5F1F20(int this) { int v1; // esi@1 v1 = this; sub_5F4E40(*(_DWORD *)(this + 4), (int)sub_5D55F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "tonumber"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D56D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cExecCheck"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D5780, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDebugLog"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D5ED0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPlayerExist"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D5CF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDistanceSquar"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D5AC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobRegen_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D5870, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobRegen_XY"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6010, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNPCVanish"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6100, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cCurSec"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6190, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cCurrentSecond"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6220, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB5B4); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6390, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetQuestHero_NPC"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6570, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetQuestHero_ItemUse"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6670, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetPlayerName"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D67A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAggroSet"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6920, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsObjectDead"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6A60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectHP"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6BD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetAbstate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D6E60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDropItem"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D7320, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectLocate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB880, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRandomInt"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB960, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobIDFind"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EBA60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAIScriptSet"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EBC30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cResetAbstate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EBDD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EBF40, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTargetHandle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EC0D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNPCSkillUse"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EC260, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAbstateRestTime"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EC400, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMessage"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EC5B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNPCChat"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EC8D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRegenGroupActiv"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EC770, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGroupRegen"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ECC60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cVanishAll"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ECE30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetNPCParam"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ECFE0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectType"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ED120, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAIScriptFunc"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ED450, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSkillBlast"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EFD10, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAggroList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ED640, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEffectRegen_XY"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EE2B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMagicFieldSpread"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5ED930, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetTargetList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EDE60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSkillDamageCalculate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EDBC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDamaged"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D7470, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRunTo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D7730, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cWalkTo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D79C0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRunToUntilBlock"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D7CE0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPermileRate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D7DF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsMovable"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D7F70, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cServerMenu"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D81B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetItemLot"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EFE90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectFind"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D8370, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetNPCIsItemDrop"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D84D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetNPCResist"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F17F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTriggerRegist"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D88E0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNPCChatTest"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D8AC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobDialog"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D8C90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobDialog_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D8ED0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobDialog_Range"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9100, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobShout"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9250, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cCameraMove"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9470, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB800); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9610, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cFollow"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F0ED0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetPlayerList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9A10, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB818); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9C60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDoorAction"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F10E0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetAreaObjectList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D9E60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetAreaObject"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DA000, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScriptMessage"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DA1A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScriptMessage_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DA370, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNPCMenuOpen"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DA540, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cCastingBar"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DA730, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTimer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DA8D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTimer_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DAAB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAnimate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DACC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAnimateForcedly"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DAEC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGroupRegenInstance"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DB240, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB92C); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DB4B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB934); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DB640, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB948); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DB820, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB958); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DB960, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB964); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DBB20, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB96C); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DBCC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB978); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DBE30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB988); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DBFB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB998); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DC130, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB9AC); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DC2E0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetBaseClass"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DC460, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cReward"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DC5F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEndOfKingdomQuest"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DC740, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cWillMovement"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DC8B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cLinkToAll"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DCAE0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMove2Where"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DCC60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMapMark"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DD3C0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMapMark_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DDA50, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMapMark_FieldSight"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DE0A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetLevel"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F0290, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cFindNearPlayer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DE1E0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetFieldScript"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DE3A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FBBBC); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EEDD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNearObjectList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DE650, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAggroReset"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DE980, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNotice"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EF050, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetAbstate_Range"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EF2D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScriptMessage_Range"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D35D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cQuestMobKill"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3710, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cQuestMobKill_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DEBB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRewardItem"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DEF00, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRewardItem_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3960, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAssertLog"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DF270, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobRegen_Circle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DF4D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobRegen_Rectangle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DF780, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsEquipItem"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DF930, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobChat"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3990, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cInvenItemDestroy"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DFA90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectCount"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DFC90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobSuicide"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DFEA0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMapObjectControl"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0490, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cQuestResult"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0010, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetAbstateInArea"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EFA30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAggroListSize"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E02F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetMoveState"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0680, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetMaster"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0820, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPartyJoin"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E09D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPartyLeave"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0B50, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScoreInfo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0D30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScoreInfo_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0EB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cStartMsg_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E0FC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cViewSlotEquip"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1100, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cViewSlotUnEquipAll"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1220, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEmotion"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1220, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEmoticon"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1900, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEffectMsg"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1A30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEffectMsg_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E13C0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cKQRewardIndex"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E14D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetCharNo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1660, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetAdminLevel"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E17D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPlaySound"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1B70, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetMobID"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1CB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cStaticDamage_smo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1DC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobDialog_FileName"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E1FA0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetServantFlag"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2140, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectLocateDirection"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E22E0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEffectRegen_Object"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2500, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSomebodyShout"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2740, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetKQLimitSecond"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E28A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cShowKQTimerWithLife"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2A40, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cShowKQTimerWithLife_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2BF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cVanishTimer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2D60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetCurMapIndex"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F1A90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetNearObjListByCoord"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F0510, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetNearestObjByCoord"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DE7A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetMobAttr"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E2EC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cCastTeleport"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E30A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetItemIndex"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E3610, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMapFog"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DB060, 0); sub_5F5390(*(_DWORD *)(v1 + 4), &unk_6FB914); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5DEAB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNoticeString"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E31D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetAbstate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E33A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNoticeRedWarningCode"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E3800, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cUseMoney"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E39B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTopView"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E3C40, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSystemMessage_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E3E00, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cHideOtherPlayer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E3F60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cEffectTimer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E40F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cKillObject"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4260, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cFindNearestMobList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4460, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSaveTutorialInfo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E46A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cProgressTutorial"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4940, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cLevelUp"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4800, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetTutorialInfo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4A30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobRegen_XY_Layer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4CD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cCameraMove_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E4F30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetSightState"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5040, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMoveLayer"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5170, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cFreeStatInit"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5320, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cWaitIdle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5F08F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobWeaponRate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5460, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobDetectRange"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5570, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetKQTeamType"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5680, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsKQJoiner"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5790, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetTeamBattle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E58D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetCanUseReviveItem"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5A10, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetCanUseReviveSkill"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5AF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetReviveDelayTime"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5BC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDirectionalArrow"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5D80, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDelDirectionalArrow"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E5EE0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetScriptString"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E6100, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetMapName"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E6200, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cNotice_Obj"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E6350, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetObjectDirect"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E65C0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDePolymorph"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EFB90, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDePolymorph_Area"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E78F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSimpleChatScriptMsg"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E7AB0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectSound"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E7C70, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cObjectEffect"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E7E30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cActByEventCode"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3AC0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetRegistNumber"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E66D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_IsMasterCalling"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E68D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_GetMind"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E6AD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_GetStress"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E6CD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_GetWalkSpeed"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E6ED0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_GetRunSpeed"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3B60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_Unsummon"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E70C0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_GetActionRecord"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E7590, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_ChangeMind"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E77D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cPet_SaveTendency"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3CE0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetCoord_Circle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3E40, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetObjectMode"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E7FF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsNoAttacOrNoMove"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E8130, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsInArea"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E82A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSendRankingList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E86D0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cAddCharacterTitle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E8960, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTimerStart"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E8B30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTimerEnd"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E8D30, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScriptMsg_World"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E8F00, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScriptMsg"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E9260, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetItemDropMobID"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E9390, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSetFreeBattle"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E94B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRevivalAll"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E95A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScoreTopList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E9A50, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScoreResultList"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5E9EF0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cItemErase"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA050, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cQuestResult_Individual"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA220, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMobDialog_String"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA3B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cLocationRotate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA4F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetRunSpeed"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA630, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetWalkSpeed"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA770, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cStaticRunSpeed"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA8B0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cStaticWalkSpeed"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EA9F0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRandom"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EAAD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cClassChangeOpen"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EAC10, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScoreBoard"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EAE80, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cScoreBoard_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB0A0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cWinter_Event_ScoreBoard_AllInMap"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D3FD0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cRewardItem_CharInven"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D40C0, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cDropFilm"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EEB60, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetCurrentSkillInfo"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5D4140, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cTargetChangeNull"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB700, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cGetWhoKillMe"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB210, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cVanishReserv"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB340, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cMoveStop"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB440, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cIsObjectAlreadyDead"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EB550, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cFindAttackBlockLocate"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EE500, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSendGameLogDataType_4"); sub_5F4E40(*(_DWORD *)(v1 + 4), (int)sub_5EE830, 0); sub_5F5390(*(_DWORD *)(v1 + 4), "cSendGameLogDataType_5"); return 1; } //----- (005F3CB0) -------------------------------------------------------- int __usercall sub_5F3CB0(signed int a1, int a2) { int v2; // edx@1 int result; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 v2 = *(_DWORD *)(a2 + 16); if ( a1 > 0 ) { result = *(_DWORD *)v2 + 8 * a1; if ( (unsigned int)result < *(_DWORD *)(a2 + 8) ) return result; return (int)&unk_6FF0E0; } if ( a1 > -1001000 ) return *(_DWORD *)(a2 + 8) + 8 * a1; if ( a1 == -1001000 ) return *(_DWORD *)(a2 + 12) + 40; v4 = -1001000 - a1; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, result = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) return (int)&unk_6FF0E0; return result; } //----- (005F3D00) -------------------------------------------------------- int __cdecl sub_5F3D00(int a1, int *a2) { return sub_5FCD00(a1, *a2); } //----- (005F3D20) -------------------------------------------------------- signed int __cdecl sub_5F3D20(int a1, int a2) { int v2; // ecx@1 int v3; // eax@1 int v4; // edi@1 signed int result; // eax@2 int v6; // ecx@7 v2 = a2; v3 = *(_DWORD *)(a1 + 8); v4 = *(_DWORD *)(a1 + 16); if ( (*(_DWORD *)(a1 + 24) - v3) >> 3 > a2 ) { result = 1; goto LABEL_7; } if ( ((v3 - *(_DWORD *)(a1 + 28)) >> 3) + 5 > 1000000 - a2 ) return 0; result = sub_5FCB90(a1, (void (__cdecl *)(_DWORD, _DWORD))sub_5F3D00, (int)&a2) == 0; if ( result ) { v2 = a2; LABEL_7: v6 = *(_DWORD *)(a1 + 8) + 8 * v2; if ( *(_DWORD *)(v4 + 4) < (unsigned int)v6 ) *(_DWORD *)(v4 + 4) = v6; } return result; } //----- (005F3D90) -------------------------------------------------------- int __cdecl sub_5F3D90(int a1, int a2, int a3) { int result; // eax@2 int i; // ecx@2 int v5; // edx@3 if ( a1 != a2 ) { result = a3; *(_DWORD *)(a1 + 8) += -8 * a3; for ( i = 0; i < a3; *(_DWORD *)(result + 4) = *(_DWORD *)(v5 + 4) ) { result = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(a1 + 8) + 8 * i; *(_DWORD *)(a2 + 8) = result + 8; *(_DWORD *)result = *(_DWORD *)v5; ++i; } } return result; } //----- (005F3DE0) -------------------------------------------------------- int __cdecl sub_5F3DE0(int a1, int a2) { int v2; // ecx@1 int result; // eax@1 v2 = *(_DWORD *)(a1 + 12); result = *(_DWORD *)(v2 + 152); *(_DWORD *)(v2 + 152) = a2; return result; } //----- (005F3E00) -------------------------------------------------------- _UNKNOWN *__cdecl sub_5F3E00(int a1) { _UNKNOWN *result; // eax@2 if ( a1 ) result = *(_UNKNOWN **)(*(_DWORD *)(a1 + 12) + 160); else result = &unk_6FD710; return result; } //----- (005F3E20) -------------------------------------------------------- int __cdecl sub_5F3E20(int a1, int a2) { int result; // eax@2 if ( (unsigned int)(a2 + 1000999) > 0xF4627 ) result = a2; else result = a2 + ((*(_DWORD *)(a1 + 8) - **(_DWORD **)(a1 + 16)) >> 3); return result; } //----- (005F3E50) -------------------------------------------------------- int __cdecl sub_5F3E50(int a1) { return (*(_DWORD *)(a1 + 8) - **(_DWORD **)(a1 + 16) - 8) >> 3; } //----- (005F3E70) -------------------------------------------------------- int __cdecl sub_5F3E70(int a1, int a2) { int result; // eax@1 int i; // ecx@2 result = a1; if ( a2 < 0 ) { *(_DWORD *)(a1 + 8) += 8 * a2 + 8; } else { for ( i = **(_DWORD **)(a1 + 16) + 8 * a2 + 8; *(_DWORD *)(a1 + 8) < (unsigned int)i; *(_DWORD *)(a1 + 8) += 8 ) *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4) = 2146936064; *(_DWORD *)(a1 + 8) = i; } return result; } //----- (005F3EC0) -------------------------------------------------------- int __cdecl sub_5F3EC0(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // esi@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int result; // eax@11 int v11; // ecx@12 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) goto LABEL_10; LABEL_11: result = v3 + 8; if ( (unsigned int)result < *(_DWORD *)(a1 + 8) ) { v11 = result - 8; do { *(_DWORD *)v11 = *(_DWORD *)result; *(_DWORD *)(v11 + 4) = *(_DWORD *)(result + 4); result += 8; v11 += 8; } while ( (unsigned int)result < *(_DWORD *)(a1 + 8) ); } *(_DWORD *)(a1 + 8) -= 8; return result; } //----- (005F3F50) -------------------------------------------------------- int __cdecl sub_5F3F50(int a1, signed int a2) { int v2; // edx@1 int v3; // ecx@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 unsigned int v7; // eax@11 int v8; // edx@12 int v9; // eax@14 int result; // eax@14 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v3 = v5 + 8 * v4 + 8, v4 > v6) ) goto LABEL_10; LABEL_11: v7 = *(_DWORD *)(a1 + 8); if ( v7 > v3 ) { v8 = v7 - 8; do { *(_DWORD *)v7 = *(_DWORD *)v8; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v8 + 4); v7 -= 8; v8 -= 8; } while ( v7 > v3 ); } v9 = *(_DWORD *)(a1 + 8); *(_DWORD *)v3 = *(_DWORD *)v9; result = *(_DWORD *)(v9 + 4); *(_DWORD *)(v3 + 4) = result; return result; } //----- (005F3FE0) -------------------------------------------------------- char __usercall sub_5F3FE0(signed int a1, int a2, int a3) { int v3; // edx@1 int v4; // eax@2 int v5; // edx@8 int v6; // eax@8 int v7; // edx@9 int v8; // ebx@9 bool v9; // zf@9 bool v10; // sf@9 unsigned __int8 v11; // of@9 int v12; // ecx@16 v3 = *(_DWORD *)(a3 + 16); if ( a1 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a1; if ( (unsigned int)v4 < *(_DWORD *)(a3 + 8) ) goto LABEL_11; LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a1 > -1001000 ) { v4 = *(_DWORD *)(a3 + 8) + 8 * a1; goto LABEL_11; } if ( a1 == -1001000 ) { v4 = *(_DWORD *)(a3 + 12) + 40; goto LABEL_11; } v5 = *(_DWORD *)v3; v6 = -1001000 - a1; if ( *(_DWORD *)(v5 + 4) == 2146936086 || (v7 = *(_DWORD *)v5, v8 = *(_BYTE *)(v7 + 6), v11 = __OFSUB__(v6, v8), v9 = v6 == v8, v10 = v6 - v8 < 0, v4 = v7 + 8 * v6 + 8, !((unsigned __int8)(v10 ^ v11) | v9)) ) goto LABEL_10; LABEL_11: *(_DWORD *)v4 = *(_DWORD *)a2; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); if ( a1 < -1001000 ) { v4 = *(_DWORD *)(a2 + 4); if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 ) { v4 = *(_DWORD *)a2; if ( *(_BYTE *)(*(_DWORD *)a2 + 5) & 3 ) { v12 = ***(_DWORD ***)(a3 + 16); if ( *(_BYTE *)(v12 + 5) & 4 ) LOBYTE(v4) = sub_5FF530(a3, v12, *(_DWORD *)a2); } } } return v4; } //----- (005F4090) -------------------------------------------------------- char __cdecl sub_5F4090(int a1, signed int a2) { char result; // al@1 result = sub_5F3FE0(a2, *(_DWORD *)(a1 + 8) - 8, a1); *(_DWORD *)(a1 + 8) -= 8; return result; } //----- (005F40B0) -------------------------------------------------------- char __cdecl sub_5F40B0(int a1, signed int a2, signed int a3) { int v3; // edx@1 int v4; // edi@2 int v6; // eax@8 int v7; // ecx@9 int v8; // edi@9 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) return sub_5F3FE0(a3, v4, a1); LABEL_10: v8 = (int)&unk_6FF0E0; return sub_5F3FE0(a3, v8, a1); } if ( a2 > -1001000 ) return sub_5F3FE0(a3, *(_DWORD *)(a1 + 8) + 8 * a2, a1); if ( a2 == -1001000 ) return sub_5F3FE0(a3, *(_DWORD *)(a1 + 12) + 40, a1); v6 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v7 = **(_DWORD **)v3, v8 = v7 + 8 * v6 + 8, v6 > *(_BYTE *)(v7 + 6)) ) goto LABEL_10; return sub_5F3FE0(a3, v8, a1); } //----- (005F4140) -------------------------------------------------------- int __cdecl sub_5F4140(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int result; // eax@3 int v6; // eax@5 int v7; // ecx@5 int v8; // eax@7 int v9; // ecx@7 int v10; // eax@8 int v11; // ecx@9 int v12; // esi@9 bool v13; // zf@9 bool v14; // sf@9 unsigned __int8 v15; // of@9 int v16; // eax@9 int v17; // ecx@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) { v4 = *(_DWORD *)(a1 + 8); *(_DWORD *)v4 = *(_DWORD *)v3; result = *(_DWORD *)(v3 + 4); *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(a1 + 8) += 8; return result; } LABEL_10: v16 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v6 = *(_DWORD *)(a1 + 8); v7 = *(_DWORD *)(a1 + 8); *(_DWORD *)v7 = *(_DWORD *)(v6 + 8 * a2); result = *(_DWORD *)(v6 + 8 * a2 + 4); *(_DWORD *)(v7 + 4) = result; *(_DWORD *)(a1 + 8) += 8; return result; } if ( a2 == -1001000 ) { v8 = *(_DWORD *)(a1 + 12); v9 = *(_DWORD *)(a1 + 8); *(_DWORD *)v9 = *(_DWORD *)(v8 + 40); result = *(_DWORD *)(v8 + 44); *(_DWORD *)(v9 + 4) = result; *(_DWORD *)(a1 + 8) += 8; return result; } v10 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v11 = **(_DWORD **)v2, v12 = *(_BYTE *)(v11 + 6), v15 = __OFSUB__(v10, v12), v13 = v10 == v12, v14 = v10 - v12 < 0, v16 = v11 + 8 * v10 + 8, !((unsigned __int8)(v14 ^ v15) | v13)) ) goto LABEL_10; LABEL_11: v17 = *(_DWORD *)(a1 + 8); *(_DWORD *)v17 = *(_DWORD *)v16; result = *(_DWORD *)(v16 + 4); *(_DWORD *)(v17 + 4) = result; *(_DWORD *)(a1 + 8) += 8; return result; } //----- (005F41F0) -------------------------------------------------------- int __cdecl sub_5F41F0(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int result; // eax@3 int v5; // eax@8 int v6; // ecx@9 int v7; // eax@12 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v6 = **(_DWORD **)v2, v5 > *(_BYTE *)(v6 + 6)) ) return -1; v3 = v6 + 8 * v5 + 8; } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } } else { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 >= *(_DWORD *)(a1 + 8) ) return -1; } if ( (_UNKNOWN *)v3 == &unk_6FF0E0 ) return -1; v7 = *(_DWORD *)(v3 + 4); if ( (v7 & 0x7FFFFF00) == 2146936064 ) result = v7 & 0xF; else result = 3; return result; } //----- (005F4280) -------------------------------------------------------- int __cdecl sub_5F4280(int a1, int a2) { return (int)*(&off_6FFEA8 + a2); } // 6FFEA8: using guessed type void *off_6FFEA8; //----- (005F4290) -------------------------------------------------------- bool __cdecl sub_5F4290(int a1, signed int a2) { int v2; // edx@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // eax@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) { LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: v10 = *(_DWORD *)(v3 + 4); return v10 == 2146936086 || v10 == 2146936166; } //----- (005F4310) -------------------------------------------------------- int __cdecl sub_5F4310(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int result; // eax@12 char v11; // [sp+4h] [bp-8h]@12 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) { LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 || (result = sub_60DAD0(v3, (int)&v11)) != 0 ) result = 1; return result; } //----- (005F43A0) -------------------------------------------------------- bool __cdecl sub_5F43A0(int a1, signed int a2) { int v2; // eax@1 v2 = sub_5F41F0(a1, a2); return v2 == 4 || v2 == 3; } //----- (005F43D0) -------------------------------------------------------- bool __cdecl sub_5F43D0(int a1, signed int a2, signed int a3) { int v3; // esi@1 int v4; // edi@3 int v5; // ecx@8 int v6; // eax@9 int v7; // edi@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int v11; // eax@12 int v12; // eax@18 int v13; // ecx@19 int v14; // edx@19 int v15; // edx@24 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { if ( (unsigned int)(*(_DWORD *)v3 + 8 * a2) < *(_DWORD *)(a1 + 8) ) { v4 = *(_DWORD *)v3 + 8 * a2; goto LABEL_11; } LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) goto LABEL_10; LABEL_11: if ( a3 <= 0 ) { if ( a3 > -1001000 ) { v11 = *(_DWORD *)(a1 + 8) + 8 * a3; return (_UNKNOWN *)v4 != &unk_6FF0E0 && (_UNKNOWN *)v11 != &unk_6FF0E0 && ((*(_DWORD *)(v4 + 4) & 0x7FFFFF00) == 2146936064 ? (v15 = *(_DWORD *)(v4 + 4) == *(_DWORD *)(v11 + 4)) : (v15 = (*(_DWORD *)(v11 + 4) & 0x7FFFFF00) != 2146936064), v15 && sub_60E2F0(0, v4, (int *)v11)); } if ( a3 == -1001000 ) { v11 = *(_DWORD *)(a1 + 12) + 40; return (_UNKNOWN *)v4 != &unk_6FF0E0 && (_UNKNOWN *)v11 != &unk_6FF0E0 && ((*(_DWORD *)(v4 + 4) & 0x7FFFFF00) == 2146936064 ? (v15 = *(_DWORD *)(v4 + 4) == *(_DWORD *)(v11 + 4)) : (v15 = (*(_DWORD *)(v11 + 4) & 0x7FFFFF00) != 2146936064), v15 && sub_60E2F0(0, v4, (int *)v11)); } v12 = -1001000 - a3; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) != 2146936086 ) { v13 = **(_DWORD **)v3; v14 = *(_BYTE *)(v13 + 6); v10 = __OFSUB__(v12, v14); v8 = v12 == v14; v9 = v12 - v14 < 0; v11 = v13 + 8 * v12 + 8; if ( (unsigned __int8)(v9 ^ v10) | v8 ) return (_UNKNOWN *)v4 != &unk_6FF0E0 && (_UNKNOWN *)v11 != &unk_6FF0E0 && ((*(_DWORD *)(v4 + 4) & 0x7FFFFF00) == 2146936064 ? (v15 = *(_DWORD *)(v4 + 4) == *(_DWORD *)(v11 + 4)) : (v15 = (*(_DWORD *)(v11 + 4) & 0x7FFFFF00) != 2146936064), v15 && sub_60E2F0(0, v4, (int *)v11)); } goto LABEL_20; } v11 = *(_DWORD *)v3 + 8 * a3; if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 8) ) LABEL_20: v11 = (int)&unk_6FF0E0; return (_UNKNOWN *)v4 != &unk_6FF0E0 && (_UNKNOWN *)v11 != &unk_6FF0E0 && ((*(_DWORD *)(v4 + 4) & 0x7FFFFF00) == 2146936064 ? (v15 = *(_DWORD *)(v4 + 4) == *(_DWORD *)(v11 + 4)) : (v15 = (*(_DWORD *)(v11 + 4) & 0x7FFFFF00) != 2146936064), v15 && sub_60E2F0(0, v4, (int *)v11)); } //----- (005F44F0) -------------------------------------------------------- signed int __cdecl sub_5F44F0(int a1, signed int a2, signed int a3, int a4) { int v4; // esi@1 int v5; // edi@2 int v6; // edx@8 int v7; // ecx@9 int v8; // edi@9 bool v9; // zf@9 bool v10; // sf@9 unsigned __int8 v11; // of@9 int v12; // ecx@12 int v13; // ecx@18 int v14; // edx@19 int v15; // eax@19 int v17; // edx@29 v4 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v5 = *(_DWORD *)v4 + 8 * a2; if ( (unsigned int)v5 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v5 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v5 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v5 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v6 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v4 + 4) == 2146936086 || (v7 = **(_DWORD **)v4, v8 = *(_BYTE *)(v7 + 6), v11 = __OFSUB__(v6, v8), v9 = v6 == v8, v10 = v6 - v8 < 0, v5 = v7 + 8 * v6 + 8, !((unsigned __int8)(v10 ^ v11) | v9)) ) goto LABEL_10; LABEL_11: if ( a3 > 0 ) { v12 = *(_DWORD *)v4 + 8 * a3; if ( (unsigned int)v12 < *(_DWORD *)(a1 + 8) ) goto LABEL_21; goto LABEL_20; } if ( a3 <= -1001000 ) { if ( a3 == -1001000 ) { v12 = *(_DWORD *)(a1 + 12) + 40; } else { v13 = -1001000 - a3; if ( *(_DWORD *)(*(_DWORD *)v4 + 4) == 2146936086 || (v14 = **(_DWORD **)v4, v15 = *(_BYTE *)(v14 + 6), v11 = __OFSUB__(v13, v15), v9 = v13 == v15, v10 = v13 - v15 < 0, v12 = v14 + 8 * v13 + 8, !((unsigned __int8)(v10 ^ v11) | v9)) ) { LABEL_20: v12 = (int)&unk_6FF0E0; goto LABEL_21; } } } else { v12 = *(_DWORD *)(a1 + 8) + 8 * a3; } LABEL_21: if ( (_UNKNOWN *)v5 != &unk_6FF0E0 && (_UNKNOWN *)v12 != &unk_6FF0E0 ) { if ( a4 ) { if ( a4 == 1 ) return loc_60E180(a1, v5, v12); if ( a4 == 2 ) return sub_60E220(a1, v5, v12); } else { if ( (*(_DWORD *)(v5 + 4) & 0x7FFFFF00) == 2146936064 ) v17 = *(_DWORD *)(v5 + 4) == *(_DWORD *)(v12 + 4); else v17 = (*(_DWORD *)(v12 + 4) & 0x7FFFFF00) != 2146936064; if ( v17 && sub_60E2F0(a1, v5, (int *)v12) ) return 1; } } return 0; } //----- (005F4640) -------------------------------------------------------- double __cdecl sub_5F4640(int a1, signed int a2, int a3) { int v3; // esi@1 int v4; // eax@2 int v5; // eax@8 int v6; // ecx@9 int v7; // edx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 double result; // st7@15 char v12; // [sp+4h] [bp-8h]@12 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) { LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 || (v4 = sub_60DAD0(v4, (int)&v12)) != 0 ) { if ( a3 ) *(_DWORD *)a3 = 1; result = *(double *)v4; } else { if ( a3 ) *(_DWORD *)a3 = 0; result = 0.0; } return result; } //----- (005F46F0) -------------------------------------------------------- signed int __cdecl sub_5F46F0(int a1, signed int a2, int a3) { int v3; // esi@1 int v4; // eax@2 int v5; // eax@8 int v6; // ecx@9 int v7; // edx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 signed int result; // eax@15 char v12; // [sp+Ch] [bp-8h]@12 signed int v13; // [sp+1Ch] [bp+8h]@16 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) { LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 || (v4 = sub_60DAD0(v4, (int)&v12)) != 0 ) { v13 = (signed int)*(double *)v4; if ( a3 ) *(_DWORD *)a3 = 1; result = v13; } else { if ( a3 ) *(_DWORD *)a3 = 0; result = 0; } return result; } //----- (005F47B0) -------------------------------------------------------- int __cdecl sub_5F47B0(int a1, signed int a2, int a3) { int v3; // esi@1 int v4; // eax@2 int v5; // eax@8 int v6; // ecx@9 int v7; // edx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int result; // eax@15 signed __int64 v12; // [sp+Ch] [bp-10h]@16 char v13; // [sp+14h] [bp-8h]@12 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) { LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 || (v4 = sub_60DAD0(v4, (int)&v13)) != 0 ) { v12 = (signed __int64)*(double *)v4; if ( a3 ) *(_DWORD *)a3 = 1; result = v12; } else { if ( a3 ) *(_DWORD *)a3 = 0; result = 0; } return result; } //----- (005F4870) -------------------------------------------------------- bool __cdecl sub_5F4870(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // ecx@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) { LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: v10 = *(_DWORD *)(v3 + 4); return v10 != 2146936064 && (v10 != 2146936065 || *(_DWORD *)v3); } //----- (005F48F0) -------------------------------------------------------- int __cdecl sub_5F48F0(int a1, signed int a2, int a3) { int v3; // ecx@1 int v4; // eax@2 int v5; // ecx@8 int v6; // eax@8 int v7; // ecx@9 int v8; // edx@9 bool v9; // zf@9 bool v10; // sf@9 unsigned __int8 v11; // of@9 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v5 = *(_DWORD *)v3; v6 = -1001000 - a2; if ( *(_DWORD *)(v5 + 4) == 2146936086 || (v7 = *(_DWORD *)v5, v8 = *(_BYTE *)(v7 + 6), v11 = __OFSUB__(v6, v8), v9 = v6 == v8, v10 = v6 - v8 < 0, v4 = v7 + 8 * v6 + 8, !((unsigned __int8)(v10 ^ v11) | v9)) ) goto LABEL_10; LABEL_11: if ( (*(_DWORD *)(v4 + 4) | 0x70) != 2146936180 ) { if ( !sub_60DB30(a1, v4) ) { if ( a3 ) *(_DWORD *)a3 = 0; return 0; } if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); v4 = sub_5F3CB0(a2, a1); } if ( a3 ) *(_DWORD *)a3 = *(_DWORD *)(*(_DWORD *)v4 + 12); return *(_DWORD *)v4 + 16; } //----- (005F49B0) -------------------------------------------------------- unsigned int __cdecl sub_5F49B0(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // ecx@11 int v11; // ecx@13 int v12; // ecx@14 unsigned int result; // eax@16 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) goto LABEL_10; LABEL_11: v10 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v10) = 3; v11 = (v10 & 0xF) - 4; if ( v11 ) { v12 = v11 - 1; if ( v12 ) { if ( v12 == 2 ) result = *(_DWORD *)(*(_DWORD *)v3 + 16); else result = 0; } else { result = sub_60C1F0(*(_DWORD *)v3); } } else { result = *(_DWORD *)(*(_DWORD *)v3 + 12); } return result; } //----- (005F4A60) -------------------------------------------------------- int __cdecl sub_5F4A60(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // ecx@11 int v11; // ecx@13 int result; // eax@15 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) goto LABEL_10; LABEL_11: v10 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v10) = 3; v11 = (v10 & 0xF) - 2; if ( v11 ) { if ( v11 == 5 ) result = *(_DWORD *)v3 + 24; else result = 0; } else { result = *(_DWORD *)v3; } return result; } //----- (005F4B00) -------------------------------------------------------- int __cdecl sub_5F4B00(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int result; // eax@12 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) != 2146936086 ) { v5 = **(_DWORD **)v2; v6 = *(_BYTE *)(v5 + 6); v9 = __OFSUB__(v4, v6); v7 = v4 == v6; v8 = v4 - v6 < 0; v3 = v5 + 8 * v4 + 8; if ( (unsigned __int8)(v8 ^ v9) | v7 ) goto LABEL_11; } goto LABEL_10; } v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 >= *(_DWORD *)(a1 + 8) ) LABEL_10: v3 = (int)&unk_6FF0E0; LABEL_11: if ( *(_DWORD *)(v3 + 4) == 2146936136 ) result = *(_DWORD *)v3; else result = 0; return result; } //----- (005F4B70) -------------------------------------------------------- int __cdecl sub_5F4B70(int a1, signed int a2) { int v2; // ecx@1 int v3; // eax@2 int v4; // ecx@8 int v5; // eax@8 int v6; // ecx@9 int v7; // edi@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int v11; // ecx@11 int result; // eax@14 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = *(_DWORD *)v2; v5 = -1001000 - a2; if ( *(_DWORD *)(v4 + 4) == 2146936086 || (v6 = *(_DWORD *)v4, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v3 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) goto LABEL_10; LABEL_11: v11 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v11) = 3; switch ( v11 & 0x3F ) { case 5: case 6: case 8: case 0x16: case 0x26: result = *(_DWORD *)v3; break; case 2: case 7: result = sub_5F4A60(a1, a2); break; default: result = 0; break; } return result; } //----- (005F4C60) -------------------------------------------------------- int __cdecl sub_5F4C60(int a1) { int result; // eax@1 result = a1; *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4) = 2146936064; *(_DWORD *)(result + 8) += 8; return result; } //----- (005F4C80) -------------------------------------------------------- int __cdecl sub_5F4C80(int a1, double a2) { int v2; // ecx@1 int v3; // eax@1 int result; // eax@3 v2 = a1; v3 = *(_DWORD *)(a1 + 8); *(_QWORD *)v3 = *(_QWORD *)&a2; if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) == 2146936064 ) v3 = loc_5FC640(a1, "C API - attempt to push a signaling NaN"); result = v3 + 8; *(_DWORD *)(v2 + 8) = result; return result; } //----- (005F4CC0) -------------------------------------------------------- int __cdecl sub_5F4CC0(int a1, signed int a2) { int result; // eax@1 result = *(_DWORD *)(a1 + 8) + 8; *(double *)*(_DWORD *)(a1 + 8) = (double)a2; *(_DWORD *)(a1 + 8) = result; return result; } //----- (005F4CE0) -------------------------------------------------------- int __cdecl sub_5F4CE0(int a1, signed int a2) { int result; // eax@2 int v3; // eax@3 if ( (unsigned int)a2 > 0x7FFFFFFF ) { v3 = *(_DWORD *)(a1 + 8); *(double *)v3 = (double)(unsigned int)a2; result = v3 + 8; *(_DWORD *)(a1 + 8) = result; } else { result = *(_DWORD *)(a1 + 8) + 8; *(double *)*(_DWORD *)(a1 + 8) = (double)a2; *(_DWORD *)(a1 + 8) = result; } return result; } //----- (005F4D30) -------------------------------------------------------- int __cdecl sub_5F4D30(signed int a1, const void *a2, size_t a3) { int v3; // eax@3 int v4; // ecx@3 if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); v3 = sub_609580(a1, a2, a3); v4 = *(_DWORD *)(a1 + 8); *(_DWORD *)v4 = v3; *(_DWORD *)(v4 + 4) = *(_BYTE *)(v3 + 4) | 0x7FF7A540; *(_DWORD *)(a1 + 8) += 8; return v3 + 16; } //----- (005F4D80) -------------------------------------------------------- int __cdecl sub_5F4D80(signed int a1, const void *a2) { int result; // eax@2 int v3; // eax@5 int v4; // ecx@5 if ( a2 ) { if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); v3 = sub_609600(a1, a2); v4 = *(_DWORD *)(a1 + 8); *(_DWORD *)v4 = v3; *(_DWORD *)(v4 + 4) = *(_BYTE *)(v3 + 4) | 0x7FF7A540; *(_DWORD *)(a1 + 8) += 8; result = v3 + 16; } else { *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4) = 2146936064; *(_DWORD *)(a1 + 8) += 8; result = 0; } return result; } //----- (005F4DE0) -------------------------------------------------------- int __cdecl sub_5F4DE0(signed int a1, int a2, int a3) { if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); return loc_604820(a1, a2, a3); } //----- (005F4E10) -------------------------------------------------------- int __cdecl sub_5F4E10(signed int a1, int a2, char a3) { if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); return loc_604820(a1, a2, &a3); } //----- (005F4E40) -------------------------------------------------------- int __cdecl sub_5F4E40(signed int a1, int a2, int a3) { int v3; // esi@1 int result; // eax@2 int v5; // ecx@2 int v6; // ecx@6 int v7; // edx@6 int v8; // ecx@7 v3 = a3; if ( a3 ) { if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); result = sub_5FDEE0(a1, a3); *(_DWORD *)(result + 12) = a2; *(_DWORD *)(a1 + 8) += -8 * a3; do { v6 = *(_DWORD *)(a1 + 8); v7 = *(_DWORD *)(v6 + 8 * v3-- - 8); *(_DWORD *)(result + 8 * v3 + 16) = v7; *(_DWORD *)(result + 8 * v3 + 20) = *(_DWORD *)(v6 + 8 * v3 + 4); } while ( v3 ); v8 = *(_DWORD *)(a1 + 8); *(_DWORD *)v8 = result; *(_DWORD *)(v8 + 4) = 2146936166; *(_DWORD *)(a1 + 8) += 8; } else { result = a1; v5 = *(_DWORD *)(a1 + 8); *(_DWORD *)v5 = a2; *(_DWORD *)(v5 + 4) = 2146936086; *(_DWORD *)(result + 8) += 8; } return result; } //----- (005F4ED0) -------------------------------------------------------- __int64 __cdecl sub_5F4ED0(int a1, int a2) { int v2; // ecx@1 __int64 result; // qax@1 LODWORD(result) = a1; v2 = *(_DWORD *)(a1 + 8); *(_DWORD *)(v2 + 4) = 2146936065; HIDWORD(result) = a2 != 0; *(_DWORD *)v2 = HIDWORD(result); *(_DWORD *)(result + 8) += 8; return result; } //----- (005F4EF0) -------------------------------------------------------- int __cdecl sub_5F4EF0(int a1, int a2) { int result; // eax@1 int v3; // ecx@1 result = a1; v3 = *(_DWORD *)(a1 + 8); *(_DWORD *)v3 = a2; *(_DWORD *)(v3 + 4) = 2146936066; *(_DWORD *)(result + 8) += 8; return result; } //----- (005F4F10) -------------------------------------------------------- bool __cdecl sub_5F4F10(int a1) { int v1; // ecx@1 int v2; // ecx@1 v1 = *(_DWORD *)(a1 + 8); *(_DWORD *)v1 = a1; *(_DWORD *)(v1 + 4) = 2146936136; v2 = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 8) += 8; return *(_DWORD *)(v2 + 156) == a1; } //----- (005F4F40) -------------------------------------------------------- int __cdecl sub_5F4F40(int a1, const void *a2) { int v2; // eax@1 int v3; // edi@1 int v4; // ebx@1 int v5; // eax@1 v2 = sub_60BEB0(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 40), 2); v3 = *(_DWORD *)(a1 + 8); v4 = v2; *(_DWORD *)(a1 + 8) = v3 + 8; v5 = sub_609600(a1, a2); *(_DWORD *)v3 = v5; *(_DWORD *)(v3 + 4) = *(_BYTE *)(v5 + 4) | 0x7FF7A540; return sub_60DC80(a1, v4, *(_DWORD *)(a1 + 8) - 8, *(_DWORD *)(a1 + 8) - 8); } // 60DC80: using guessed type _DWORD __cdecl sub_60DC80(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005F4FA0) -------------------------------------------------------- int __cdecl sub_5F4FA0(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // esi@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) return sub_60DC80(a1, v3, *(_DWORD *)(a1 + 8) - 8, *(_DWORD *)(a1 + 8) - 8); goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) { LABEL_10: v3 = (int)&unk_6FF0E0; return sub_60DC80(a1, v3, *(_DWORD *)(a1 + 8) - 8, *(_DWORD *)(a1 + 8) - 8); } } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } return sub_60DC80(a1, v3, *(_DWORD *)(a1 + 8) - 8, *(_DWORD *)(a1 + 8) - 8); } // 60DC80: using guessed type _DWORD __cdecl sub_60DC80(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005F5020) -------------------------------------------------------- int __cdecl sub_5F5020(int a1, signed int a2, const void *a3) { int v3; // edx@1 int v4; // edi@2 int v5; // eax@8 int v6; // ecx@9 int v7; // ebx@11 int v8; // eax@11 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v4 = v6 + 8 * v5 + 8, v5 > *(_BYTE *)(v6 + 6)) ) { LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: v7 = *(_DWORD *)(a1 + 8); v8 = sub_609600(a1, a3); *(_DWORD *)v7 = v8; *(_DWORD *)(v7 + 4) = *(_BYTE *)(v8 + 4) | 0x7FF7A540; *(_DWORD *)(a1 + 8) += 8; return sub_60DC80(a1, v4, *(_DWORD *)(a1 + 8) - 8, *(_DWORD *)(a1 + 8) - 8); } // 60DC80: using guessed type _DWORD __cdecl sub_60DC80(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005F50C0) -------------------------------------------------------- int __cdecl sub_5F50C0(int a1, signed int a2) { int v2; // edx@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // eax@11 int v11; // ecx@11 int result; // eax@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) { LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: v10 = sub_60BF70(*(_DWORD *)v3, *(_DWORD *)(a1 + 8) - 8); v11 = *(_DWORD *)(a1 + 8); *(_DWORD *)(v11 - 8) = *(_DWORD *)v10; result = *(_DWORD *)(v10 + 4); *(_DWORD *)(v11 - 4) = result; return result; } //----- (005F5140) -------------------------------------------------------- int __cdecl sub_5F5140(int a1, signed int a2, signed int a3) { int v3; // edx@1 int v4; // eax@2 int v5; // eax@8 int v6; // ecx@9 int v7; // edx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int v11; // eax@11 int v12; // ecx@11 int result; // eax@11 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) { LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: v11 = sub_60BEB0(*(_DWORD *)v4, a3); v12 = *(_DWORD *)(a1 + 8); *(_DWORD *)v12 = *(_DWORD *)v11; result = *(_DWORD *)(v11 + 4); *(_DWORD *)(v12 + 4) = result; *(_DWORD *)(a1 + 8) += 8; return result; } //----- (005F51C0) -------------------------------------------------------- int __cdecl sub_5F51C0(signed int a1, int a2, int a3) { int result; // eax@3 int v4; // ecx@3 if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); result = sub_60BE10(a1); v4 = *(_DWORD *)(a1 + 8); *(_DWORD *)v4 = result; *(_DWORD *)(v4 + 4) = 2146936133; *(_DWORD *)(a1 + 8) += 8; if ( a2 > 0 || a3 > 0 ) result = sub_60C250(a1, result, a2, a3); return result; } // 60C250: using guessed type _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005F5210) -------------------------------------------------------- signed int __cdecl sub_5F5210(int a1, signed int a2) { int v2; // edx@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // edx@11 char v11; // cl@12 int v12; // ecx@14 int v13; // edx@17 signed int result; // eax@22 int v15; // eax@23 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) != 2146936086 ) { v5 = **(_DWORD **)v2; v6 = *(_BYTE *)(v5 + 6); v9 = __OFSUB__(v4, v6); v7 = v4 == v6; v8 = v4 - v6 < 0; v3 = v5 + 8 * v4 + 8; if ( (unsigned __int8)(v8 ^ v9) | v7 ) goto LABEL_11; } goto LABEL_10; } v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 >= *(_DWORD *)(a1 + 8) ) LABEL_10: v3 = (int)&unk_6FF0E0; LABEL_11: v10 = *(_DWORD *)(v3 + 4); if ( (v10 & 0x7FFFFF00) == 2146936064 ) v11 = *(_DWORD *)(v3 + 4); else v11 = 3; v12 = (v11 & 0xF) - 5; if ( v12 ) { if ( v12 == 2 ) { v13 = *(_DWORD *)(*(_DWORD *)v3 + 8); } else { if ( (v10 & 0x7FFFFF00) == 2146936064 ) v13 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * (v10 & 0xF) + 236); else v13 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 248); } } else { v13 = *(_DWORD *)(*(_DWORD *)v3 + 8); } if ( v13 ) { v15 = *(_DWORD *)(a1 + 8); *(_DWORD *)v15 = v13; *(_DWORD *)(v15 + 4) = 2146936133; *(_DWORD *)(a1 + 8) += 8; result = 1; } else { result = 0; } return result; } //----- (005F5300) -------------------------------------------------------- int __cdecl sub_5F5300(int a1, signed int a2) { int v2; // esi@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // esi@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // ecx@11 int result; // eax@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) != 2146936086 ) { v5 = **(_DWORD **)v2; v6 = *(_BYTE *)(v5 + 6); v9 = __OFSUB__(v4, v6); v7 = v4 == v6; v8 = v4 - v6 < 0; v3 = v5 + 8 * v4 + 8; if ( (unsigned __int8)(v8 ^ v9) | v7 ) goto LABEL_11; } goto LABEL_10; } v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 >= *(_DWORD *)(a1 + 8) ) LABEL_10: v3 = (int)&unk_6FF0E0; LABEL_11: v10 = *(_DWORD *)(*(_DWORD *)v3 + 12); result = *(_DWORD *)(a1 + 8); if ( v10 ) { *(_DWORD *)result = v10; *(_DWORD *)(result + 4) = 2146936133; *(_DWORD *)(a1 + 8) += 8; } else { *(_DWORD *)(result + 4) = 2146936064; *(_DWORD *)(a1 + 8) += 8; } return result; } //----- (005F5390) -------------------------------------------------------- int __cdecl sub_5F5390(int a1, const void *a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@1 int v5; // ebx@1 int v6; // eax@1 int result; // eax@1 v2 = a1; v3 = sub_60BEB0(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 40), 2); v4 = *(_DWORD *)(a1 + 8); v5 = v3; *(_DWORD *)(a1 + 8) = v4 + 8; v6 = sub_609600(a1, a2); *(_DWORD *)v4 = v6; *(_DWORD *)(v4 + 4) = *(_BYTE *)(v6 + 4) | 0x7FF7A540; result = sub_60DDE0(v2, v5, *(_DWORD *)(v2 + 8) - 8, *(_DWORD *)(v2 + 8) - 16); *(_DWORD *)(v2 + 8) -= 16; return result; } //----- (005F53F0) -------------------------------------------------------- int __cdecl sub_5F53F0(int a1, signed int a2, const void *a3) { int v3; // edx@1 int v4; // edi@2 int v5; // eax@8 int v6; // ecx@9 int v7; // ebx@11 int v8; // eax@11 int result; // eax@11 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; } else { v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v4 = v6 + 8 * v5 + 8, v5 > *(_BYTE *)(v6 + 6)) ) { LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: v7 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v7 + 8; v8 = sub_609600(a1, a3); *(_DWORD *)v7 = v8; *(_DWORD *)(v7 + 4) = *(_BYTE *)(v8 + 4) | 0x7FF7A540; result = sub_60DDE0(a1, v4, *(_DWORD *)(a1 + 8) - 8, *(_DWORD *)(a1 + 8) - 16); *(_DWORD *)(a1 + 8) -= 16; return result; } //----- (005F5490) -------------------------------------------------------- int __cdecl sub_5F5490(int a1, signed int a2) { int v2; // edx@1 int v3; // ebx@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edi@11 int v7; // eax@11 int v8; // ecx@11 int result; // eax@12 int v10; // ebx@16 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) != 2146936086 ) { v5 = **(_DWORD **)v2; v3 = v5 + 8 * v4 + 8; if ( v4 <= *(_BYTE *)(v5 + 6) ) goto LABEL_11; } goto LABEL_10; } v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 >= *(_DWORD *)(a1 + 8) ) LABEL_10: v3 = (int)&unk_6FF0E0; LABEL_11: v6 = *(_DWORD *)(a1 + 8); v7 = sub_60C070(a1, *(_DWORD *)v3, v6 - 16); *(_DWORD *)v7 = *(_DWORD *)(v6 - 8); *(_DWORD *)(v7 + 4) = *(_DWORD *)(v6 - 4); *(_BYTE *)(*(_DWORD *)v3 + 6) = 0; v8 = *(_DWORD *)(a1 + 8); if ( (*(_DWORD *)(v8 - 4) & 0x7FFFFF00) == 2146936064 ) result = *(_DWORD *)(v8 - 4) & 0xFF; else result = 3; if ( result & 0x40 ) { result = *(_DWORD *)(v8 - 8); if ( *(_BYTE *)(result + 5) & 3 ) { v10 = *(_DWORD *)v3; if ( *(_BYTE *)(v10 + 5) & 4 ) result = sub_5FE230(a1, v10); } } *(_DWORD *)(a1 + 8) -= 16; return result; } //----- (005F5560) -------------------------------------------------------- int __cdecl sub_5F5560(int a1, signed int a2, signed int a3) { int v3; // edx@1 int v4; // edi@2 int v5; // eax@8 int v6; // ecx@9 int v7; // ecx@11 int result; // eax@12 int v9; // edi@16 v3 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) != 2146936086 ) { v6 = **(_DWORD **)v3; v4 = v6 + 8 * v5 + 8; if ( v5 <= *(_BYTE *)(v6 + 6) ) goto LABEL_11; } goto LABEL_10; } v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 >= *(_DWORD *)(a1 + 8) ) LABEL_10: v4 = (int)&unk_6FF0E0; LABEL_11: sub_60C6F0(a1, *(_DWORD *)v4, a3, *(_DWORD *)(a1 + 8) - 8); v7 = *(_DWORD *)(a1 + 8); if ( (*(_DWORD *)(v7 - 4) & 0x7FFFFF00) == 2146936064 ) result = *(_DWORD *)(v7 - 4) & 0xFF; else result = 3; if ( result & 0x40 ) { result = *(_DWORD *)(v7 - 8); if ( *(_BYTE *)(result + 5) & 3 ) { v9 = *(_DWORD *)v4; if ( *(_BYTE *)(v9 + 5) & 4 ) result = sub_5FE230(a1, v9); } } *(_DWORD *)(a1 + 8) -= 8; return result; } //----- (005F5620) -------------------------------------------------------- signed int __cdecl sub_5F5620(int a1, signed int a2) { int v2; // edx@1 int v3; // esi@3 int v4; // eax@8 int v5; // ecx@9 int v6; // eax@11 int v7; // ebx@12 int v8; // ecx@14 int v9; // edx@14 char v10; // al@15 int v11; // eax@17 signed int result; // eax@20 int v13; // [sp-8h] [bp-14h]@26 int v14; // [sp-4h] [bp-10h]@26 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) != 2146936086 ) { v5 = **(_DWORD **)v2; v3 = v5 + 8 * v4 + 8; if ( v4 <= *(_BYTE *)(v5 + 6) ) goto LABEL_11; } } else { if ( (unsigned int)(*(_DWORD *)v2 + 8 * a2) < *(_DWORD *)(a1 + 8) ) { v3 = *(_DWORD *)v2 + 8 * a2; goto LABEL_11; } } v3 = (int)&unk_6FF0E0; LABEL_11: v6 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(v6 - 4) == 2146936064 ) v7 = 0; else v7 = *(_DWORD *)(v6 - 8); v8 = *(_DWORD *)(v3 + 4); v9 = *(_DWORD *)(v3 + 4) & 0x7FFFFF00; if ( v9 == 2146936064 ) v10 = *(_DWORD *)(v3 + 4); else v10 = 3; v11 = (v10 & 0xF) - 5; if ( !v11 ) { *(_DWORD *)(*(_DWORD *)v3 + 8) = v7; if ( v7 && *(_BYTE *)(v7 + 5) & 3 && *(_BYTE *)(*(_DWORD *)v3 + 5) & 4 ) sub_5FE230(a1, *(_DWORD *)v3); v14 = v7; v13 = *(_DWORD *)v3; goto LABEL_32; } if ( v11 == 2 ) { *(_DWORD *)(*(_DWORD *)v3 + 8) = v7; if ( !v7 ) { LABEL_33: *(_DWORD *)(a1 + 8) -= 8; return 1; } if ( *(_BYTE *)(v7 + 5) & 3 && *(_BYTE *)(*(_DWORD *)v3 + 5) & 4 ) sub_5FF530(a1, *(_DWORD *)v3, v7); v14 = v7; v13 = *(_DWORD *)v3; LABEL_32: sub_5FF2B0(a1, v13, v14); goto LABEL_33; } if ( v9 == 2146936064 ) { *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * (v8 & 0xF) + 236) = v7; *(_DWORD *)(a1 + 8) -= 8; result = 1; } else { *(_DWORD *)(*(_DWORD *)(a1 + 12) + 248) = v7; *(_DWORD *)(a1 + 8) -= 8; result = 1; } return result; } //----- (005F5770) -------------------------------------------------------- char __cdecl sub_5F5770(int a1, signed int a2) { int v2; // edx@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int v10; // ecx@11 int v11; // edx@13 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) goto LABEL_10; LABEL_11: v10 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(v10 - 4) == 2146936064 ) { v3 = *(_DWORD *)v3; *(_DWORD *)(v3 + 12) = 0; *(_DWORD *)(a1 + 8) -= 8; } else { *(_DWORD *)(*(_DWORD *)v3 + 12) = *(_DWORD *)(v10 - 8); v11 = *(_DWORD *)(a1 + 8); if ( *(_BYTE *)(*(_DWORD *)(v11 - 8) + 5) & 3 ) { v3 = *(_DWORD *)v3; if ( *(_BYTE *)(v3 + 5) & 4 ) LOBYTE(v3) = sub_5FF530(a1, v3, *(_DWORD *)(v11 - 8)); } *(_DWORD *)(a1 + 8) -= 8; } return v3; } //----- (005F5820) -------------------------------------------------------- int __cdecl sub_5F5820(int a1, int a2) { int v2; // eax@1 int result; // eax@4 v2 = *(_DWORD *)(a1 + 16); if ( *(_BYTE *)(v2 + 18) & 8 ) { if ( a2 ) *(_DWORD *)a2 = *(_DWORD *)(v2 + 24); result = *(_BYTE *)(*(_DWORD *)(a1 + 16) + 37); } else { result = 0; } return result; } //----- (005F5850) -------------------------------------------------------- int __cdecl sub_5F5850(int a1, int a2, int a3, int a4, int a5) { int v5; // eax@1 int result; // eax@5 unsigned int v7; // esi@6 int v8; // [sp-4h] [bp-Ch]@3 v5 = *(_DWORD *)(a1 + 8) - (8 * a2 + 8); if ( !a5 || *(_WORD *)(a1 + 36) ) { v8 = 0; } else { *(_DWORD *)(*(_DWORD *)(a1 + 16) + 28) = a5; *(_DWORD *)(*(_DWORD *)(a1 + 16) + 24) = a4; v8 = 1; } result = sub_5FD660(a1, v5, a3, v8); if ( a3 == -1 ) { result = *(_DWORD *)(a1 + 16); v7 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(result + 4) < v7 ) *(_DWORD *)(result + 4) = v7; } return result; } //----- (005F58B0) -------------------------------------------------------- int __cdecl sub_5F58B0(int a1, int a2) { return sub_5FD660(a1, *(_DWORD *)a2, *(_DWORD *)(a2 + 4), 0); } //----- (005F58D0) -------------------------------------------------------- int __cdecl sub_5F58D0(int a1, int a2, int a3, signed int a4, int a5, int a6) { int v6; // eax@2 int v7; // ecx@4 int v8; // ebx@6 int v9; // edi@6 int result; // eax@6 int v11; // ST0C_4@7 int v12; // ecx@9 unsigned int v13; // esi@9 int v14; // [sp+4h] [bp-8h]@4 int v15; // [sp+8h] [bp-4h]@7 if ( a4 ) v6 = sub_5F3CB0(a4, a1) - *(_DWORD *)(a1 + 28); else v6 = 0; v7 = *(_DWORD *)(a1 + 8) - (8 * a2 + 8); v14 = *(_DWORD *)(a1 + 8) - (8 * a2 + 8); if ( !a6 || *(_WORD *)(a1 + 36) ) { v8 = a3; v11 = v7 - *(_DWORD *)(a1 + 28); v15 = a3; result = sub_5FD1E0(a1, sub_5F58B0, (int)&v14, v11, v6); } else { v8 = a3; v9 = *(_DWORD *)(a1 + 16); *(_DWORD *)(v9 + 28) = a6; *(_DWORD *)(v9 + 24) = a5; *(_DWORD *)(v9 + 20) = v14 - *(_DWORD *)(a1 + 28); *(_BYTE *)(v9 + 36) = *(_BYTE *)(a1 + 41); *(_DWORD *)(v9 + 32) = *(_DWORD *)(a1 + 68); *(_DWORD *)(a1 + 68) = v6; *(_BYTE *)(v9 + 18) |= 0x10u; sub_5FD660(a1, v14, a3, 1); *(_BYTE *)(v9 + 18) &= 0xEFu; *(_DWORD *)(a1 + 68) = *(_DWORD *)(v9 + 32); result = 0; } if ( v8 == -1 ) { v12 = *(_DWORD *)(a1 + 16); v13 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(v12 + 4) < v13 ) *(_DWORD *)(v12 + 4) = v13; } return result; } //----- (005F5990) -------------------------------------------------------- int __cdecl sub_5F5990(int a1, int a2, int a3, int a4, int a5) { int v5; // edi@1 int v6; // ebx@3 int v7; // edi@4 int v8; // eax@5 int v9; // ecx@5 int v10; // ecx@5 int v11; // eax@8 int v12; // edi@9 char v14; // [sp+Ch] [bp-14h]@3 v5 = a4; if ( !a4 ) v5 = (int)"?"; sub_60FED0(a1, (int)&v14, a2, a3); v6 = sub_5FD390(a1, (int)&v14, v5, a5); if ( !v6 ) { v7 = *(_DWORD *)(*(_DWORD *)(a1 + 8) - 8); if ( *(_BYTE *)(v7 + 6) == 1 ) { v8 = sub_60BEB0(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 40), 2); v9 = *(_DWORD *)(*(_DWORD *)(v7 + 16) + 8); *(_DWORD *)v9 = *(_DWORD *)v8; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v8 + 4); v10 = *(_DWORD *)(v8 + 4); if ( (*(_DWORD *)(v8 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v10) = 3; if ( v10 & 0x40 ) { v11 = *(_DWORD *)v8; if ( *(_BYTE *)(v11 + 5) & 3 ) { v12 = *(_DWORD *)(v7 + 16); if ( *(_BYTE *)(v12 + 5) & 4 ) sub_5FF530(a1, v12, v11); } } } } return v6; } //----- (005F5A50) -------------------------------------------------------- int __cdecl sub_5F5A50(int a1, int a2, int a3) { int v3; // eax@1 int result; // eax@2 v3 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(v3 - 4) == 2146936134 ) result = sub_5FDE60(a1, *(_DWORD *)(*(_DWORD *)(v3 - 8) + 12), a2, a3, 0); else result = 1; return result; } //----- (005F5A90) -------------------------------------------------------- int __cdecl sub_5F5A90(int a1) { return *(_BYTE *)(a1 + 6); } //----- (005F5AA0) -------------------------------------------------------- signed int __cdecl sub_5F5AA0(signed int a1, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 signed int result; // eax@2 signed int v6; // edi@8 int v7; // eax@9 signed int v8; // edi@15 v3 = *(_DWORD *)(a1 + 12); v4 = 0; switch ( a2 ) { case 0: result = 0; *(_BYTE *)(v3 + 55) = 0; break; case 1: sub_608D10(v3, 0); result = 0; *(_BYTE *)(v3 + 55) = 1; break; case 2: sub_6003B0(a1, 0); result = 0; break; case 3: result = (unsigned int)(*(_DWORD *)(v3 + 8) + *(_DWORD *)(v3 + 12)) >> 10; break; case 4: result = (*(_DWORD *)(v3 + 8) + *(_DWORD *)(v3 + 12)) & 0x3FF; break; case 5: if ( *(_BYTE *)(v3 + 54) == 2 ) { v6 = *(_DWORD *)(v3 + 20) == 0; sub_6005A0(a1); result = v6; } else { v7 = (a3 << 10) - 1600; if ( *(_BYTE *)(v3 + 55) ) v7 += *(_DWORD *)(v3 + 12); sub_608D10(v3, v7); sub_6005A0(a1); if ( *(_BYTE *)(v3 + 53) != 5 ) goto LABEL_20; result = 1; } break; case 6: result = *(_DWORD *)(v3 + 140); *(_DWORD *)(v3 + 140) = a3; break; case 8: result = *(_DWORD *)(v3 + 144); *(_DWORD *)(v3 + 144) = a3; break; case 7: v8 = *(_DWORD *)(v3 + 148); *(_DWORD *)(v3 + 148) = a3; result = v8; break; case 9: result = *(_BYTE *)(v3 + 55); break; case 10: sub_6004A0(a1, 2); result = 0; break; case 11: sub_6004A0(a1, 0); result = 0; break; default: v4 = -1; LABEL_20: result = v4; break; } return result; } //----- (005F5C30) -------------------------------------------------------- signed int __cdecl sub_5F5C30(int a1, signed int a2) { int v2; // edx@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 signed int result; // eax@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 <= 0 ) { if ( a2 > -1001000 ) { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) != 2146936086 ) { v5 = **(_DWORD **)v2; v6 = *(_BYTE *)(v5 + 6); v9 = __OFSUB__(v4, v6); v7 = v4 == v6; v8 = v4 - v6 < 0; v3 = v5 + 8 * v4 + 8; if ( (unsigned __int8)(v8 ^ v9) | v7 ) goto LABEL_11; } goto LABEL_10; } v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 >= *(_DWORD *)(a1 + 8) ) LABEL_10: v3 = (int)&unk_6FF0E0; LABEL_11: result = sub_60BA80(a1, *(_DWORD *)v3, *(_DWORD *)(a1 + 8) - 8); if ( result ) *(_DWORD *)(a1 + 8) += 8; else *(_DWORD *)(a1 + 8) -= 8; return result; } //----- (005F5CC0) -------------------------------------------------------- void __cdecl sub_5F5CC0(int a1, signed int a2) { int v2; // edi@6 int v3; // eax@6 if ( a2 < 2 ) { if ( !a2 ) { v2 = *(_DWORD *)(a1 + 8); v3 = sub_609580(a1, byte_6A492E, 0); *(_DWORD *)v2 = v3; *(_DWORD *)(v2 + 4) = *(_BYTE *)(v3 + 4) | 0x7FF7A540; *(_DWORD *)(a1 + 8) += 8; } } else { if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); loc_60E430(a1, a2); } } //----- (005F5D30) -------------------------------------------------------- int __cdecl sub_5F5D30(int a1, signed int a2) { int v2; // edx@1 int v3; // eax@2 int v4; // eax@8 int v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 int result; // eax@11 v2 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v3 = *(_DWORD *)v2 + 8 * a2; if ( (unsigned int)v3 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a2 <= -1001000 ) { if ( a2 == -1001000 ) { v3 = *(_DWORD *)(a1 + 12) + 40; } else { v4 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v2 + 4) == 2146936086 || (v5 = **(_DWORD **)v2, v6 = *(_BYTE *)(v5 + 6), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, v3 = v5 + 8 * v4 + 8, !((unsigned __int8)(v8 ^ v9) | v7)) ) { LABEL_10: v3 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v3 = *(_DWORD *)(a1 + 8) + 8 * a2; } LABEL_11: result = sub_60E7B0(a1, *(_DWORD *)(a1 + 8), v3); *(_DWORD *)(a1 + 8) += 8; return result; } //----- (005F5DB0) -------------------------------------------------------- int __cdecl sub_5F5DB0(signed int a1, unsigned int a2) { int v2; // eax@3 int v3; // ecx@3 if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); v2 = sub_609630(a1, a2, 0); v3 = *(_DWORD *)(a1 + 8); *(_DWORD *)v3 = v2; *(_DWORD *)(v3 + 4) = 2146936135; *(_DWORD *)(a1 + 8) += 8; return v2 + 24; } //----- (005F5DF0) -------------------------------------------------------- int __usercall sub_5F5DF0(signed int a1, int a2, int a3, int a4) { int v4; // ecx@1 int v5; // ecx@3 int v6; // ecx@5 int v8; // ecx@10 int v9; // edx@10 int v10; // eax@14 v4 = *(_DWORD *)(a2 + 4); if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; v5 = v4 & 0x3F; if ( v5 != 6 ) { if ( v5 == 38 ) { v6 = *(_DWORD *)a2; if ( a1 >= 1 ) { if ( a1 <= *(_BYTE *)(v6 + 6) ) { *(_DWORD *)a3 = v6 + 8 * a1 + 8; if ( a4 ) *(_DWORD *)a4 = v6; return (int)byte_6A492E; } } } return 0; } v8 = *(_DWORD *)a2; v9 = *(_DWORD *)(*(_DWORD *)a2 + 12); if ( a1 < 1 || a1 > *(_DWORD *)(v9 + 40) ) return 0; *(_DWORD *)a3 = *(_DWORD *)(*(_DWORD *)(v8 + 4 * a1 + 12) + 8); if ( a4 ) *(_DWORD *)a4 = *(_DWORD *)(v8 + 4 * a1 + 12); v10 = *(_DWORD *)(*(_DWORD *)(v9 + 28) + 8 * a1 - 8); if ( !v10 ) return (int)byte_6A492E; return v10 + 16; } //----- (005F5E80) -------------------------------------------------------- int __cdecl sub_5F5E80(int a1, signed int a2, signed int a3) { int v3; // edx@1 int v4; // eax@2 int v5; // eax@8 int v6; // ecx@9 int v7; // edx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int v11; // ecx@11 int v12; // ecx@13 int result; // eax@15 int v14; // eax@16 int v15; // edx@18 int v16; // eax@20 int v17; // esi@20 int v18; // ecx@22 int v19; // ecx@24 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) goto LABEL_10; LABEL_11: v11 = *(_DWORD *)(v4 + 4); if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v11) = 3; v12 = v11 & 0x3F; if ( v12 != 6 ) { if ( v12 == 38 ) { v14 = *(_DWORD *)v4; if ( a3 >= 1 ) { if ( a3 <= *(_BYTE *)(v14 + 6) ) { v15 = v14 + 8 * a3 + 8; goto LABEL_19; } } } return 0; } v16 = *(_DWORD *)v4; v17 = *(_DWORD *)(v16 + 12); if ( a3 < 1 || a3 > *(_DWORD *)(v17 + 40) ) return 0; v15 = *(_DWORD *)(*(_DWORD *)(v16 + 4 * a3 + 12) + 8); v18 = *(_DWORD *)(*(_DWORD *)(v17 + 28) + 8 * a3 - 8); if ( v18 ) { result = v18 + 16; if ( v18 == -16 ) return result; goto LABEL_24; } LABEL_19: result = (int)byte_6A492E; LABEL_24: v19 = *(_DWORD *)(a1 + 8); *(_DWORD *)v19 = *(_DWORD *)v15; *(_DWORD *)(v19 + 4) = *(_DWORD *)(v15 + 4); *(_DWORD *)(a1 + 8) += 8; return result; } //----- (005F5F70) -------------------------------------------------------- int __cdecl sub_5F5F70(int a1, signed int a2, signed int a3) { int v3; // edx@1 int v4; // edx@2 int v5; // eax@8 int v6; // ecx@9 int v7; // edx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int v11; // esi@11 int v12; // eax@12 int v13; // ecx@12 int v14; // ecx@12 int v15; // eax@12 int v16; // ecx@15 int v18; // [sp+8h] [bp-8h]@1 int v19; // [sp+Ch] [bp-4h]@1 v3 = *(_DWORD *)(a1 + 16); v19 = 0; v18 = 0; if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) goto LABEL_10; LABEL_11: v11 = sub_5F5DF0(a3, v4, (int)&v19, (int)&v18); if ( v11 ) { *(_DWORD *)(a1 + 8) -= 8; v12 = *(_DWORD *)(a1 + 8); v13 = v19; *(_DWORD *)v19 = *(_DWORD *)v12; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v12 + 4); v14 = *(_DWORD *)(a1 + 8); v15 = *(_DWORD *)(v14 + 4); if ( (*(_DWORD *)(v14 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v15) = 3; if ( v15 & 0x40 ) { v16 = *(_DWORD *)v14; if ( *(_BYTE *)(v16 + 5) & 3 ) { if ( *(_BYTE *)(v18 + 5) & 4 ) sub_5FF530(a1, v18, v16); } } } return v11; } //----- (005F6050) -------------------------------------------------------- int __usercall sub_5F6050(signed int a1, int a2, int a3, int a4) { int v4; // edx@1 int v5; // eax@2 int v6; // ecx@8 int v7; // eax@9 int v8; // edx@9 int v9; // eax@11 v4 = *(_DWORD *)(a2 + 16); if ( a1 > 0 ) { v5 = *(_DWORD *)v4 + 8 * a1; if ( (unsigned int)v5 < *(_DWORD *)(a2 + 8) ) goto LABEL_11; LABEL_10: v5 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a1 > -1001000 ) { v5 = *(_DWORD *)(a2 + 8) + 8 * a1; goto LABEL_11; } if ( a1 == -1001000 ) { v5 = *(_DWORD *)(a2 + 12) + 40; goto LABEL_11; } v6 = -1001000 - a1; if ( *(_DWORD *)(*(_DWORD *)v4 + 4) == 2146936086 || (v7 = **(_DWORD **)v4, v8 = *(_BYTE *)(v7 + 6), v5 = v7 + 8 * v6 + 8, v6 > v8) ) goto LABEL_10; LABEL_11: v9 = *(_DWORD *)v5; if ( a4 ) *(_DWORD *)a4 = v9; return v9 + 4 * a3 + 12; } //----- (005F60B0) -------------------------------------------------------- int __cdecl sub_5F60B0(int a1, signed int a2, int a3) { int v3; // edi@1 int v4; // ecx@2 int v5; // ecx@8 int v6; // edx@9 int v7; // ebx@9 bool v8; // zf@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 int v11; // edx@11 int v12; // edx@13 int result; // eax@15 int v14; // eax@18 int v15; // ecx@24 int v16; // eax@25 int v17; // edx@25 int v18; // eax@25 v3 = *(_DWORD *)(a1 + 16); if ( a2 > 0 ) { v4 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v4 < *(_DWORD *)(a1 + 8) ) goto LABEL_11; LABEL_10: v4 = (int)&unk_6FF0E0; goto LABEL_11; } if ( a2 > -1001000 ) { v4 = *(_DWORD *)(a1 + 8) + 8 * a2; goto LABEL_11; } if ( a2 == -1001000 ) { v4 = *(_DWORD *)(a1 + 12) + 40; goto LABEL_11; } v5 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) == 2146936086 || (v6 = **(_DWORD **)v3, v7 = *(_BYTE *)(v6 + 6), v10 = __OFSUB__(v5, v7), v8 = v5 == v7, v9 = v5 - v7 < 0, v4 = v6 + 8 * v5 + 8, !((unsigned __int8)(v9 ^ v10) | v8)) ) goto LABEL_10; LABEL_11: v11 = *(_DWORD *)(v4 + 4); if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v11) = 3; v12 = v11 & 0x3F; if ( v12 == 6 ) { if ( a2 <= 0 ) { if ( a2 > -1001000 ) return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 8) + 8 * a2) + 4 * a3 + 12); if ( a2 == -1001000 ) return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 40) + 4 * a3 + 12); v15 = -1001000 - a2; if ( *(_DWORD *)(*(_DWORD *)v3 + 4) != 2146936086 ) { v16 = **(_DWORD **)v3; v17 = *(_BYTE *)(v16 + 6); v18 = v16 + 8 * v15 + 8; if ( v15 <= v17 ) return *(_DWORD *)(*(_DWORD *)v18 + 4 * a3 + 12); } } else { v14 = *(_DWORD *)v3 + 8 * a2; if ( (unsigned int)v14 < *(_DWORD *)(a1 + 8) ) return *(_DWORD *)(*(_DWORD *)v14 + 4 * a3 + 12); } v18 = (int)&unk_6FF0E0; return *(_DWORD *)(*(_DWORD *)v18 + 4 * a3 + 12); } if ( v12 == 38 ) result = *(_DWORD *)v4 + 8 * a3 + 8; else result = 0; return result; } //----- (005F61D0) -------------------------------------------------------- char __cdecl sub_5F61D0(int a1, signed int a2, int a3, signed int a4, int a5) { int v5; // ebx@1 int v6; // eax@1 int v7; // esi@1 int v8; // ecx@2 int v9; // ecx@8 int v10; // edx@9 int v11; // esi@9 bool v12; // zf@9 bool v13; // sf@9 unsigned __int8 v14; // of@9 int v15; // ecx@11 int v16; // ecx@11 v5 = a1; v6 = sub_5F6050(a2, a1, a3, (int)&a1); v7 = *(_DWORD *)(v5 + 16); if ( a4 > 0 ) { v8 = *(_DWORD *)v7 + 8 * a4; if ( (unsigned int)v8 < *(_DWORD *)(v5 + 8) ) goto LABEL_11; goto LABEL_10; } if ( a4 <= -1001000 ) { if ( a4 == -1001000 ) { v8 = *(_DWORD *)(v5 + 12) + 40; } else { v9 = -1001000 - a4; if ( *(_DWORD *)(*(_DWORD *)v7 + 4) == 2146936086 || (v10 = **(_DWORD **)v7, v11 = *(_BYTE *)(v10 + 6), v14 = __OFSUB__(v9, v11), v12 = v9 == v11, v13 = v9 - v11 < 0, v8 = v10 + 8 * v9 + 8, !((unsigned __int8)(v13 ^ v14) | v12)) ) { LABEL_10: v8 = (int)&unk_6FF0E0; goto LABEL_11; } } } else { v8 = *(_DWORD *)(v5 + 8) + 8 * a4; } LABEL_11: v15 = *(_DWORD *)v8 + 4 * a5 + 12; *(_DWORD *)v6 = *(_DWORD *)v15; v16 = *(_DWORD *)v15; if ( *(_BYTE *)(v16 + 5) & 3 ) { LOBYTE(v6) = a1; if ( *(_BYTE *)(a1 + 5) & 4 ) LOBYTE(v6) = sub_5FF530(v5, a1, v16); } return v6; } //----- (005F6270) -------------------------------------------------------- signed int __cdecl sub_5F6270(int a1, signed int a2, int a3) { int v3; // eax@5 signed int result; // eax@8 if ( a3 && sub_5F41F0(a1, -1) == 5 ) { sub_5F4C60(a1); if ( sub_5F5C30(a1, -2) ) { while ( 1 ) { if ( sub_5F41F0(a1, -2) == 4 ) { LOBYTE(v3) = sub_5F43D0(a1, a2, -1); if ( v3 ) { sub_5F3E70(a1, -2); return 1; } if ( sub_5F6270(a1, a2, a3 - 1) ) break; } sub_5F3E70(a1, -2); if ( !sub_5F5C30(a1, -2) ) goto LABEL_8; } sub_5F3EC0(a1, -2); sub_5F4D30(a1, ".", 1u); sub_5F3F50(a1, -2); sub_5F5CC0(a1, 3); result = 1; } else { LABEL_8: result = 0; } } else { result = 0; } return result; } // 5F6270: using guessed type _DWORD __cdecl sub_5F6270(_DWORD, _DWORD, _DWORD); //----- (005F6350) -------------------------------------------------------- signed int __usercall sub_5F6350(int a1, int a2) { int v2; // edi@1 signed int result; // eax@2 int v4; // [sp+0h] [bp-Ch]@0 v2 = sub_5F3E50(v4); sub_5FC7F0(a1, "f", a2); sub_5F5140(a1, -1001000, 2); if ( sub_5F6270(a1, v2 + 1, 2) ) { sub_5F40B0(a1, -1, v2 + 1); sub_5F3E70(a1, -3); result = 1; } else { sub_5F3E70(a1, v2); result = 0; } return result; } // 5F6270: using guessed type _DWORD __cdecl sub_5F6270(_DWORD, _DWORD, _DWORD); //----- (005F63C0) -------------------------------------------------------- int __usercall sub_5F63C0(int a1, signed int a2) { signed int v2; // esi@1 int result; // eax@2 char v4; // cl@3 char v5; // al@7 char v6; // [sp+0h] [bp-4h]@0 v2 = a2; if ( **(_BYTE **)(a1 + 8) ) { result = sub_5F4E10(a2, (int)"function '%s'", *(_DWORD *)(a1 + 4)); } else { v4 = **(_BYTE **)(a1 + 12); if ( v4 == 109 ) { result = sub_5F4E10(v2, (int)"main chunk", v6); } else { if ( v4 == 67 ) { if ( sub_5F6350(v2, a1) ) { v5 = sub_5F48F0(v2, -1, 0); sub_5F4E10(v2, (int)"function '%s'", v5); result = sub_5F3EC0(v2, -2); } else { result = sub_5F4D30(v2, "?", 1u); } } else { result = sub_5F4E10(v2, (int)"function <%s:%d>", a1 + 36); } } } return result; } //----- (005F6460) -------------------------------------------------------- int __thiscall sub_5F6460(int this) { int v1; // edi@1 signed int v2; // esi@1 int v3; // ebx@2 int result; // eax@8 int v5; // [sp+8h] [bp-6Ch]@1 char v6; // [sp+Ch] [bp-68h]@1 unsigned int v7; // [sp+70h] [bp-4h]@1 int v8; // [sp+74h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v1 = this; v2 = 1; v5 = this; if ( sub_5FBD50(this, 1, (int)&v6) ) { do { v3 = v2; v2 *= 2; } while ( sub_5FBD50(v1, v2, (int)&v6) ); while ( v3 < v2 ) { if ( sub_5FBD50(v5, (v2 + v3) / 2, (int)&v6) ) v3 = (v2 + v3) / 2 + 1; else v2 = (v2 + v3) / 2; } result = v2 - 1; } else { result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005F6510) -------------------------------------------------------- void __cdecl sub_5F6510(int a1, int a2, int a3, int a4) { int v4; // edi@3 int v5; // eax@10 int v6; // eax@12 int v7; // [sp+Ch] [bp-74h]@1 int v8; // [sp+14h] [bp-6Ch]@1 int v9; // [sp+18h] [bp-68h]@3 int v10; // [sp+2Ch] [bp-54h]@6 char v11; // [sp+3Bh] [bp-45h]@8 char v12; // [sp+3Ch] [bp-44h]@6 unsigned int v13; // [sp+7Ch] [bp-4h]@1 int v14; // [sp+80h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v8 = sub_5F3E50(a1); v7 = sub_5F6460(a2); if ( a3 ) sub_5F4E10(a1, (int)"%s\n", a3); sub_5F4D30(a1, "stack traceback:", 0x10u); v4 = a4; while ( sub_5FBD50(a2, v4, (int)&v9) ) { ++v4; if ( v4 == (((v7 <= 22) - 1) & 0xC) ) { sub_5F4D30(a1, "\n\t...", 5u); v4 = v7 - 10; } else { sub_5FC7F0(a2, "Slnt", (int)&v9); sub_5F4E10(a1, (int)"\n\t%s:", (unsigned int)&v12); if ( v10 > 0 ) sub_5F4E10(a1, (int)"%d:", v10); sub_5F4D30(a1, " in ", 4u); sub_5F63C0((int)&v9, a1); if ( v11 ) sub_5F4D30(a1, "\n\t(...tail calls...)", 0x14u); v5 = sub_5F3E50(a1); sub_5F5CC0(a1, v5 - v8); } } v6 = sub_5F3E50(a1); sub_5F5CC0(a1, v6 - v8); } // 86FEB8: using guessed type int __security_cookie; //----- (005F6670) -------------------------------------------------------- int __cdecl sub_5F6670(signed int a1, int a2) { int result; // eax@3 int v3; // [sp+4h] [bp-68h]@1 int v4; // [sp+18h] [bp-54h]@2 char v5; // [sp+28h] [bp-44h]@3 unsigned int v6; // [sp+68h] [bp-4h]@1 int v7; // [sp+6Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( sub_5FBD50(a1, a2, (int)&v3) && (sub_5FC7F0(a1, "Sl", (int)&v3), v4 > 0) ) result = sub_5F4E10(a1, (int)"%s:%d: ", (unsigned int)&v5); else result = sub_5F4D30(a1, byte_6A492E, 0); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005F6700) -------------------------------------------------------- int __cdecl sub_5F6700(signed int a1, int a2, char a3) { sub_5F6670(a1, 1); sub_5F4DE0(a1, a2, (int)&a3); sub_5F5CC0(a1, 2); return loc_5F5C20(a1); } //----- (005F6740) -------------------------------------------------------- signed int __cdecl sub_5F6740(int a1, int a2, int a3) { int v3; // edi@1 signed int result; // eax@2 char v5; // [sp-10h] [bp-14h]@3 v3 = *_errno(); if ( a2 ) { sub_5F4ED0(a1, 1); result = 1; } else { sub_5F4C60(a1); v5 = (unsigned int)strerror(v3); if ( a3 ) { sub_5F4E10(a1, (int)"%s: %s", a3); sub_5F4CC0(a1, v3); result = 3; } else { sub_5F4E10(a1, (int)"%s", v5); sub_5F4CC0(a1, v3); result = 3; } } return result; } //----- (005F67D0) -------------------------------------------------------- signed int __cdecl sub_5F67D0(int a1, signed int a2) { int v2; // esi@2 char v3; // al@2 signed int result; // eax@2 if ( a2 == -1 ) { v2 = *_errno(); sub_5F4C60(a1); v3 = (unsigned int)strerror(v2); sub_5F4E10(a1, (int)"%s", v3); sub_5F4CC0(a1, v2); result = 3; } else { if ( a2 ) sub_5F4C60(a1); else sub_5F4ED0(a1, 1); sub_5F4D80(a1, "exit"); sub_5F4CC0(a1, a2); result = 3; } return result; } //----- (005F6850) -------------------------------------------------------- signed int __cdecl sub_5F6850(int a1, const void *a2) { signed int result; // eax@2 sub_5F5020(a1, -1001000, a2); if ( sub_5F41F0(a1, -1) ) { result = 0; } else { sub_5F3E70(a1, -2); sub_5F51C0(a1, 0, 0); sub_5F4140(a1, -1); sub_5F53F0(a1, -1001000, a2); result = 1; } return result; } //----- (005F68B0) -------------------------------------------------------- signed int __cdecl sub_5F68B0(int a1, const void *a2) { sub_5F5020(a1, -1001000, a2); return sub_5F5620(a1, -2); } //----- (005F68E0) -------------------------------------------------------- int __cdecl sub_5F68E0(int a1, signed int a2, const void *a3) { int v3; // esi@1 int v4; // eax@3 int result; // eax@5 v3 = sub_5F4A60(a1, a2); if ( v3 && sub_5F5210(a1, a2) ) { sub_5F5020(a1, -1001000, a3); LOBYTE(v4) = sub_5F43D0(a1, -1, -2); if ( !v4 ) v3 = 0; sub_5F3E70(a1, -3); result = v3; } else { result = 0; } return result; } //----- (005F6950) -------------------------------------------------------- signed int __cdecl sub_5F6950(int a1, int a2, int a3) { signed int result; // eax@1 char v4; // [sp+0h] [bp-4h]@0 result = sub_5F3D20(a1, a2 + 20); if ( !result ) { if ( a3 ) result = sub_5F6700(a1, (int)"stack overflow (%s)", a3); else result = sub_5F6700(a1, (int)"stack overflow", v4); } return result; } //----- (005F69A0) -------------------------------------------------------- int __cdecl sub_5F69A0(int a1, unsigned int a2) { int v2; // esi@1 int v3; // ecx@1 unsigned int v4; // eax@1 signed int v5; // ebx@1 unsigned int v6; // edi@1 unsigned int v7; // edi@2 int v8; // ebx@7 char v10; // [sp+0h] [bp-Ch]@0 int v11; // [sp+14h] [bp+8h]@1 v2 = a1; v3 = *(_DWORD *)(a1 + 4); v4 = *(_DWORD *)(a1 + 8); v5 = *(_DWORD *)(a1 + 12); v6 = *(_DWORD *)(a1 + 4) - v4; v11 = *(_DWORD *)(a1 + 12); if ( v6 < a2 ) { v7 = 2 * v3; if ( 2 * v3 - v4 < a2 ) v7 = v4 + a2; if ( v7 < v4 || v7 - v4 < a2 ) sub_5F6700(v5, (int)"buffer too large", v10); v8 = sub_5F5DB0(v5, v7); memmove((void *)v8, *(const void **)v2, *(_DWORD *)(v2 + 8)); if ( *(_DWORD *)v2 != v2 + 16 ) sub_5F3EC0(v11, -2); *(_DWORD *)v2 = v8; *(_DWORD *)(v2 + 4) = v7; } return *(_DWORD *)v2 + *(_DWORD *)(v2 + 8); } //----- (005F6A30) -------------------------------------------------------- void *__cdecl sub_5F6A30(int a1, const void *a2, size_t a3) { int v3; // eax@1 void *result; // eax@1 v3 = sub_5F69A0(a1, a3); result = memmove((void *)v3, a2, a3); *(_DWORD *)(a1 + 8) += a3; return result; } //----- (005F6A60) -------------------------------------------------------- void *__cdecl sub_5F6A60(int a1, char *a2) { char *v2; // eax@1 char *v3; // edx@1 char v4; // cl@2 size_t v5; // esi@3 int v6; // eax@3 void *result; // eax@3 v2 = a2; v3 = a2 + 1; do v4 = *v2++; while ( v4 ); v5 = v2 - v3; v6 = sub_5F69A0(a1, v2 - v3); result = memmove((void *)v6, a2, v5); *(_DWORD *)(a1 + 8) += v5; return result; } //----- (005F6AA0) -------------------------------------------------------- int __cdecl sub_5F6AA0(int a1) { int v1; // edi@1 int result; // eax@1 v1 = *(_DWORD *)(a1 + 12); result = sub_5F4D30(*(_DWORD *)(a1 + 12), *(const void **)a1, *(_DWORD *)(a1 + 8)); if ( *(_DWORD *)a1 != a1 + 16 ) result = sub_5F3EC0(v1, -2); return result; } //----- (005F6AE0) -------------------------------------------------------- int __cdecl sub_5F6AE0(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 int result; // eax@1 v2 = a1; *(_DWORD *)(v2 + 8) += a2; v3 = *(_DWORD *)(a1 + 12); result = sub_5F4D30(*(_DWORD *)(a1 + 12), *(const void **)a1, *(_DWORD *)(a1 + 8)); if ( *(_DWORD *)v2 != v2 + 16 ) result = sub_5F3EC0(v3, -2); return result; } //----- (005F6B20) -------------------------------------------------------- int __cdecl sub_5F6B20(size_t a1) { int v1; // esi@1 int v2; // ebx@1 size_t v3; // edi@3 int v4; // eax@3 int v6; // [sp+Ch] [bp-4h]@1 v1 = a1; v2 = *(_DWORD *)(a1 + 12); v6 = sub_5F48F0(*(_DWORD *)(a1 + 12), -1, (int)&a1); if ( *(_DWORD *)v1 != v1 + 16 ) sub_5F3F50(v2, -2); v3 = a1; v4 = sub_5F69A0(v1, a1); memmove((void *)v4, (const void *)v6, v3); *(_DWORD *)(v1 + 8) += v3; return sub_5F3EC0(v2, (*(_DWORD *)v1 == v1 + 16) - 2); } //----- (005F6B90) -------------------------------------------------------- int __cdecl sub_5F6B90(int a1, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 12) = a1; *(_DWORD *)a2 = a2 + 16; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 4) = 512; return result; } //----- (005F6BC0) -------------------------------------------------------- int __cdecl sub_5F6BC0(int a1, int a2, unsigned int a3) { *(_DWORD *)(a2 + 12) = a1; *(_DWORD *)a2 = a2 + 16; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 4) = 512; return sub_5F69A0(a2, a3); } //----- (005F6BF0) -------------------------------------------------------- int __cdecl sub_5F6BF0(int a1, int a2, int a3) { int result; // eax@2 if ( *(_DWORD *)a2 <= 0 ) { if ( feof(*(FILE **)(a2 + 4)) ) { result = 0; } else { *(_DWORD *)a3 = fread((void *)(a2 + 8), 1u, 0x200u, *(FILE **)(a2 + 4)); result = a2 + 8; } } else { *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)a2 = 0; result = a2 + 8; } return result; } //----- (005F6C50) -------------------------------------------------------- signed int __usercall sub_5F6C50(signed int a1, int a2, char a3) { int *v3; // eax@1 int v4; // ST14_4@1 v3 = _errno(); strerror(*v3); v4 = sub_5F48F0(a2, a1, 0) + 1; sub_5F4E10(a2, (int)"cannot %s %s: %s", a3); sub_5F3EC0(a2, a1); return 7; } //----- (005F6C90) -------------------------------------------------------- int __usercall sub_5F6C90(int a1) { char v1[4]; // edi@1 int result; // eax@2 int v3; // ecx@3 FILE *v4; // ST00_4@5 *(_DWORD *)v1 = ""; *(_DWORD *)a1 = 0; while ( 1 ) { result = sub_656AE5(*(FILE **)(a1 + 4)); if ( result == -1 ) break; v3 = **(_BYTE **)v1; ++*(_DWORD *)v1; if ( result != v3 ) break; *(_BYTE *)((*(_DWORD *)a1)++ + a1 + 8) = result; if ( !**(_BYTE **)v1 ) { v4 = *(FILE **)(a1 + 4); *(_DWORD *)a1 = 0; return sub_656AE5(v4); } } return result; } //----- (005F6CE0) -------------------------------------------------------- signed int __usercall sub_5F6CE0(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // eax@2 signed int result; // eax@4 v2 = a1; v3 = sub_5F6C90(a1); *(_DWORD *)a2 = v3; if ( v3 == 35 ) { do v4 = sub_656AE5(*(FILE **)(v2 + 4)); while ( v4 != -1 && v4 != 10 ); *(_DWORD *)a2 = sub_656AE5(*(FILE **)(v2 + 4)); result = 1; } else { result = 0; } return result; } //----- (005F6D20) -------------------------------------------------------- signed int __cdecl sub_5F6D20(int a1, const char *a2, int a3) { int v3; // eax@1 signed int v4; // edi@1 int v5; // eax@3 int v6; // eax@4 signed int result; // eax@10 int *v8; // eax@12 int v9; // ST1C_4@12 int v10; // ST30_4@16 int v11; // eax@16 int v12; // esi@16 int *v13; // eax@19 int v14; // ST14_4@19 int v15; // [sp+Ch] [bp-21Ch]@1 int v16; // [sp+14h] [bp-214h]@3 int v17; // [sp+18h] [bp-210h]@1 int v18; // [sp+1Ch] [bp-20Ch]@3 FILE *v19; // [sp+20h] [bp-208h]@2 char v20[512]; // [sp+24h] [bp-204h]@6 unsigned int v21; // [sp+224h] [bp-4h]@1 int v22; // [sp+228h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v17 = a3; v3 = sub_5F3E50(a1); v4 = v3 + 1; v15 = v3 + 1; if ( a2 ) { sub_5F4E10(a1, (int)&off_6FD83C, (char)a2); v19 = fopen(a2, "r"); if ( !v19 ) { v8 = _errno(); strerror(*v8); v9 = sub_5F48F0(a1, v4, 0) + 1; sub_5F4E10(a1, (int)"cannot %s %s: %s", (unsigned int)"open"); sub_5F3EC0(a1, v4); return 7; } } else { sub_5F4D30(a1, "=stdin", 6u); v19 = (FILE *)sub_6586FE(); } v5 = sub_5F6C90((int)&v18); v16 = v5; if ( v5 == 35 ) { do v6 = sub_656AE5(v19); while ( v6 != -1 && v6 != 10 ); v5 = sub_656AE5(v19); v20[v18++] = 10; v16 = v5; } if ( v5 == 27 ) { if ( !a2 ) { LABEL_15: v20[v18++] = v5; goto LABEL_16; } v19 = freopen(a2, "rb", v19); if ( !v19 ) return sub_5F6C50(v4, a1, (unsigned int)"reopen"); sub_5F6CE0((int)&v18, (int)&v16); v5 = v16; v4 = v15; } if ( v5 != -1 ) goto LABEL_15; LABEL_16: v10 = v17; v11 = sub_5F48F0(a1, -1, 0); v12 = sub_5F5990(a1, (int)sub_5F6BF0, (int)&v18, v11, v10); v17 = ferror(v19); if ( a2 ) fclose(v19); if ( v17 ) { sub_5F3E70(a1, v4); v13 = _errno(); strerror(*v13); v14 = sub_5F48F0(a1, v4, 0) + 1; sub_5F4E10(a1, (int)"cannot %s %s: %s", (unsigned int)"read"); sub_5F3EC0(a1, v4); result = 7; } else { sub_5F3EC0(a1, v4); result = v12; } return result; } // 6FD83C: using guessed type void *off_6FD83C; // 86FEB8: using guessed type int __security_cookie; // 5F6D20: using guessed type char var_204[512]; //----- (005F6FB0) -------------------------------------------------------- int __cdecl sub_5F6FB0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@2 v3 = *(_DWORD *)(a2 + 4); if ( v3 ) { *(_DWORD *)a3 = v3; *(_DWORD *)(a2 + 4) = 0; result = *(_DWORD *)a2; } else { result = 0; } return result; } //----- (005F6FE0) -------------------------------------------------------- int __cdecl sub_5F6FE0(int a1, int a2, int a3, int a4, int a5) { int v6; // [sp+0h] [bp-8h]@1 int v7; // [sp+4h] [bp-4h]@1 v6 = a2; v7 = a3; return sub_5F5990(a1, (int)sub_5F6FB0, (int)&v6, a4, a5); } //----- (005F7020) -------------------------------------------------------- int __cdecl sub_5F7020(int a1, int a2) { int v3; // [sp+4h] [bp-8h]@1 unsigned int v4; // [sp+8h] [bp-4h]@1 v4 = strlen((const char *)a2); v3 = a2; return sub_5F5990(a1, (int)sub_5F6FB0, (int)&v3, a2, 0); } //----- (005F7060) -------------------------------------------------------- signed int __cdecl sub_5F7060(int a1, signed int a2, const void *a3) { if ( !sub_5F5210(a1, a2) ) return 0; sub_5F4D80(a1, a3); sub_5F50C0(a1, -2); if ( !sub_5F41F0(a1, -1) ) { sub_5F3E70(a1, -3); return 0; } sub_5F3EC0(a1, -2); return 1; } //----- (005F70C0) -------------------------------------------------------- signed int __cdecl sub_5F70C0(int a1, int a2, const void *a3) { int v3; // edi@1 v3 = sub_5F3E20(a1, a2); if ( !sub_5F5210(a1, v3) ) return 0; sub_5F4D80(a1, a3); sub_5F50C0(a1, -2); if ( !sub_5F41F0(a1, -1) ) { sub_5F3E70(a1, -3); return 0; } sub_5F3EC0(a1, -2); sub_5F4140(a1, v3); sub_5F5850(a1, 1, 1, 0, 0); return 1; } //----- (005F7140) -------------------------------------------------------- signed int __cdecl sub_5F7140(int a1, signed int a2) { signed int v2; // edi@1 char v4; // [sp+0h] [bp-Ch]@0 int v5; // [sp+8h] [bp-4h]@1 sub_5F5D30(a1, a2); v2 = sub_5F46F0(a1, -1, (int)&v5); if ( !v5 ) sub_5F6700(a1, (int)"object length is not a number", v4); sub_5F3E70(a1, -2); return v2; } //----- (005F7190) -------------------------------------------------------- int __cdecl sub_5F7190(int a1, signed int a2, int a3) { int result; // eax@3 int v4; // eax@4 bool v5; // zf@4 const void *v6; // eax@4 int v7; // eax@8 char v8; // al@8 if ( sub_5F70C0(a1, a2, "__tostring") ) { LABEL_9: result = sub_5F48F0(a1, -1, a3); } else { switch ( sub_5F41F0(a1, a2) ) { case 3: case 4: sub_5F4140(a1, a2); result = sub_5F48F0(a1, -1, a3); break; case 1: LOBYTE(v4) = sub_5F4870(a1, a2); v5 = v4 == 0; v6 = "true"; if ( v5 ) v6 = "false"; sub_5F4D80(a1, v6); result = sub_5F48F0(a1, -1, a3); break; case 0: sub_5F4D30(a1, &off_6FD878, 3u); result = sub_5F48F0(a1, -1, a3); break; default: sub_5F4B70(a1, a2); v7 = sub_5F41F0(a1, a2); v8 = sub_5F4280(a1, v7); sub_5F4E10(a1, (int)"%s: %p", v8); goto LABEL_9; } } return result; } // 6FD878: using guessed type void *off_6FD878; //----- (005F7290) -------------------------------------------------------- signed int __cdecl sub_5F7290(int a1, signed int a2, const void *a3) { signed int result; // eax@2 int v4; // edi@3 sub_5F5020(a1, a2, a3); if ( sub_5F41F0(a1, -1) == 5 ) { result = 1; } else { sub_5F3E70(a1, -2); v4 = sub_5F3E20(a1, a2); sub_5F51C0(a1, 0, 0); sub_5F4140(a1, -1); sub_5F53F0(a1, v4, a3); result = 0; } return result; } //----- (005F7300) -------------------------------------------------------- int __cdecl sub_5F7300(signed int a1, const void *a2, int a3, int a4) { int v4; // edi@2 int result; // eax@3 sub_5F4E40(a1, a3, 0); sub_5F4D80(a1, a2); sub_5F5850(a1, 1, 1, 0, 0); sub_5F5020(a1, -1001000, "_LOADED"); if ( sub_5F41F0(a1, -1) != 5 ) { sub_5F3E70(a1, -2); v4 = sub_5F3E20(a1, -1001000); sub_5F51C0(a1, 0, 0); sub_5F4140(a1, -1); sub_5F53F0(a1, v4, "_LOADED"); } sub_5F4140(a1, -2); sub_5F53F0(a1, -2, a2); result = sub_5F3E70(a1, -2); if ( a4 ) { sub_5F4140(a1, -1); result = sub_5F5390(a1, a2); } return result; } //----- (005F73C0) -------------------------------------------------------- int __cdecl sub_5F73C0(int a1, const char *a2, const char *a3, const char *a4) { int v4; // ebx@1 const void *v5; // edi@1 char *v6; // eax@1 char *v7; // esi@4 size_t v8; // eax@4 int v9; // esi@4 unsigned int v10; // ebx@5 size_t v11; // ecx@13 size_t v12; // esi@13 unsigned int v13; // edi@14 int v14; // ebx@19 const void *v15; // eax@24 int v16; // edx@24 char v17; // cl@25 size_t v18; // esi@26 int v19; // eax@26 int v20; // esi@26 char v22; // [sp+0h] [bp-23Ch]@0 unsigned int v23; // [sp+14h] [bp-228h]@1 char *v24; // [sp+20h] [bp-21Ch]@1 int v25; // [sp+24h] [bp-218h]@10 void *v26; // [sp+28h] [bp-214h]@1 unsigned int v27; // [sp+2Ch] [bp-210h]@1 size_t v28; // [sp+30h] [bp-20Ch]@1 int v29; // [sp+34h] [bp-208h]@1 char v30; // [sp+38h] [bp-204h]@1 unsigned int v31; // [sp+238h] [bp-4h]@1 int v32; // [sp+23Ch] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; v4 = a1; v5 = a2; v23 = strlen(a3); v29 = a1; v26 = &v30; v28 = 0; v27 = 512; v6 = strstr(a2, a3); v24 = v6; if ( v6 ) { while ( 1 ) { v7 = v6; v8 = v28; v9 = v7 - v5; if ( v27 - v28 < v9 ) { v10 = 2 * v27; if ( 2 * v27 - v28 < v9 ) v10 = v28 + v9; if ( v10 < v28 || v10 - v28 < v9 ) sub_5F6700(v29, (int)"buffer too large", v22); v25 = sub_5F5DB0(v29, v10); memmove((void *)v25, v26, v28); if ( v26 != &v30 ) sub_5F3EC0(v29, -2); v8 = v28; v26 = (void *)v25; v27 = v10; } memmove((char *)v26 + v8, v5, v9); v28 += v9; v11 = v28; v12 = strlen(a4); if ( v27 - v28 < v12 ) { v13 = 2 * v27; if ( 2 * v27 - v28 < v12 ) v13 = v12 + v28; if ( v13 < v28 || v13 - v28 < v12 ) sub_5F6700(v29, (int)"buffer too large", v22); v14 = sub_5F5DB0(v29, v13); memmove((void *)v14, v26, v28); if ( v26 != &v30 ) sub_5F3EC0(v29, -2); v11 = v28; v26 = (void *)v14; v27 = v13; } memmove((char *)v26 + v11, a4, v12); v5 = &v24[v23]; v28 += v12; v24 = strstr(&v24[v23], a3); if ( !v24 ) break; v6 = v24; } v4 = a1; } v15 = v5; v16 = (int)((char *)v5 + 1); do { v17 = *(_BYTE *)v15; v15 = (char *)v15 + 1; } while ( v17 ); v18 = (size_t)((char *)v15 - v16); v19 = sub_5F69A0((int)&v26, (unsigned int)((char *)v15 - v16)); memmove((void *)v19, v5, v18); v28 += v18; v20 = v29; sub_5F4D30(v29, v26, v28); if ( v26 != &v30 ) sub_5F3EC0(v20, -2); return sub_5F48F0(v4, -1, 0); } // 86FEB8: using guessed type int __security_cookie; //----- (005F76A0) -------------------------------------------------------- void *__cdecl sub_5F76A0(int a1, void *a2, int a3, size_t a4) { void *result; // eax@2 if ( a4 ) { result = realloc(a2, a4); } else { free(a2); result = 0; } return result; } //----- (005F76D0) -------------------------------------------------------- int __cdecl sub_5F76D0(int a1) { int v1; // ST0C_4@1 void **v2; // eax@1 void **v3; // eax@1 v1 = sub_5F48F0(a1, -1, 0); v2 = sub_6586FE(); fprintf((FILE *)v2 + 2, "PANIC: unprotected error in call to Lua API (%s)\n", v1); v3 = sub_6586FE(); fflush((FILE *)v3 + 2); return 0; } //----- (005F7710) -------------------------------------------------------- int __cdecl sub_5F7710() { int result; // eax@1 int v1; // esi@1 result = sub_609070((int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD))sub_5F76A0, 0); v1 = result; if ( result ) { sub_5F3DE0(result, (int)sub_5F76D0); result = v1; } return result; } //----- (005F7740) -------------------------------------------------------- int __cdecl sub_5F7740(int a1, double a2) { _UNKNOWN *v2; // edi@1 double v3; // ST08_8@4 char v5; // [sp+10h] [bp-8h]@0 v2 = sub_5F3E00(a1); if ( v2 == sub_5F3E00(0) ) { if ( a2 != *(double *)v2 ) { v3 = a2; sub_5F6700(a1, (int)"version mismatch: app. needs %f, Lua core provides %f", SLOBYTE(v3)); } } else { sub_5F6700(a1, (int)"multiple Lua VMs detected", v5); } sub_5F4C80(a1, -4660.0); if ( sub_5F46F0(a1, -1, 0) != -4660 || sub_5F47B0(a1, -1, 0) != -4660 ) sub_5F6700(a1, (int)"bad conversion number->int; must recompile Lua with proper settings", v5); return sub_5F3E70(a1, -2); } //----- (005F7800) -------------------------------------------------------- int __cdecl sub_5F7800(int a1, int a2) { int result; // eax@2 int v3; // eax@8 int v4; // [sp+8h] [bp-68h]@1 int v5; // [sp+Ch] [bp-64h]@5 const char *v6; // [sp+10h] [bp-60h]@3 unsigned int v7; // [sp+6Ch] [bp-4h]@1 int v8; // [sp+70h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; if ( sub_5FBD50(a1, 0, (int)&v4) ) { sub_5FC7F0(a1, "n", (int)&v4); if ( strcmp(v6, "method") || (--a2, a2) ) { if ( !v5 ) { if ( sub_5F6350(a1, (int)&v4) ) v3 = sub_5F48F0(a1, -1, 0); else v3 = (int)"?"; v5 = v3; } result = sub_5F6700(a1, (int)"bad argument #%d to '%s' (%s)", a2); } else { result = sub_5F6700(a1, (int)"calling '%s' on bad self", v5); } } else { result = sub_5F6700(a1, (int)"bad argument #%d (%s)", a2); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005F7910) -------------------------------------------------------- int __cdecl sub_5F7910(int a1, signed int a2, const void *a3) { int result; // eax@1 int v4; // ebx@1 int v5; // eax@2 result = sub_5F68E0(a1, a2, a3); v4 = result; if ( !result ) { v5 = sub_5F41F0(a1, a2); sub_5F4280(a1, v5); sub_5F4E10(a1, (int)"%s expected, got %s", (char)a3); sub_5F7800(a1, a2); result = v4; } return result; } //----- (005F7960) -------------------------------------------------------- int __cdecl sub_5F7960(int a1, signed int a2, int a3) { int result; // eax@1 char v4; // bl@2 int v5; // eax@2 result = sub_5F41F0(a1, a2); if ( result != a3 ) { v4 = sub_5F4280(a1, a3); v5 = sub_5F41F0(a1, a2); sub_5F4280(a1, v5); sub_5F4E10(a1, (int)"%s expected, got %s", v4); result = sub_5F7800(a1, a2); } return result; } //----- (005F79C0) -------------------------------------------------------- int __cdecl sub_5F79C0(int a1, signed int a2) { int result; // eax@1 result = sub_5F41F0(a1, a2); if ( result == -1 ) result = sub_5F7800(a1, a2); return result; } //----- (005F79F0) -------------------------------------------------------- int __cdecl sub_5F79F0(int a1, signed int a2, int a3) { int result; // eax@1 int v4; // ebx@1 char v5; // ST40_1@2 int v6; // eax@2 result = sub_5F48F0(a1, a2, a3); v4 = result; if ( !result ) { v5 = sub_5F4280(a1, 4); v6 = sub_5F41F0(a1, a2); sub_5F4280(a1, v6); sub_5F4E10(a1, (int)"%s expected, got %s", v5); sub_5F7800(a1, a2); result = v4; } return result; } //----- (005F7A50) -------------------------------------------------------- const char *__cdecl sub_5F7A50(int a1, signed int a2, const char *a3, int a4) { const char *result; // eax@2 if ( sub_5F41F0(a1, a2) > 0 ) { result = (const char *)sub_5F79F0(a1, a2, a4); } else { result = a3; if ( a4 ) { if ( a3 ) *(_DWORD *)a4 = strlen(a3); else *(_DWORD *)a4 = 0; } } return result; } //----- (005F7AB0) -------------------------------------------------------- double __cdecl sub_5F7AB0(int a1, signed int a2) { double result; // st7@1 char v3; // bl@2 int v4; // eax@2 int v5; // [sp+10h] [bp-4h]@1 result = sub_5F4640(a1, a2, (int)&v5); if ( !v5 ) { v3 = sub_5F4280(a1, 3); v4 = sub_5F41F0(a1, a2); sub_5F4280(a1, v4); sub_5F4E10(a1, (int)"%s expected, got %s", v3); sub_5F7800(a1, a2); } return result; } //----- (005F7B20) -------------------------------------------------------- double __cdecl sub_5F7B20(int a1, signed int a2, double a3) { double result; // st7@2 if ( sub_5F41F0(a1, a2) > 0 ) result = sub_5F7AB0(a1, a2); else result = a3; return result; } //----- (005F7B50) -------------------------------------------------------- signed int __cdecl sub_5F7B50(int a1, signed int a2) { signed int result; // eax@1 char v3; // bl@2 int v4; // eax@2 signed int v5; // [sp+8h] [bp-8h]@1 int v6; // [sp+Ch] [bp-4h]@1 result = sub_5F46F0(a1, a2, (int)&v6); v5 = result; if ( !v6 ) { v3 = sub_5F4280(a1, 3); v4 = sub_5F41F0(a1, a2); sub_5F4280(a1, v4); sub_5F4E10(a1, (int)"%s expected, got %s", v3); sub_5F7800(a1, a2); result = v5; } return result; } //----- (005F7BB0) -------------------------------------------------------- int __cdecl sub_5F7BB0(int a1, signed int a2) { int result; // eax@1 char v3; // bl@2 int v4; // eax@2 int v5; // [sp+8h] [bp-8h]@1 int v6; // [sp+Ch] [bp-4h]@1 result = sub_5F47B0(a1, a2, (int)&v6); v5 = result; if ( !v6 ) { v3 = sub_5F4280(a1, 3); v4 = sub_5F41F0(a1, a2); sub_5F4280(a1, v4); sub_5F4E10(a1, (int)"%s expected, got %s", v3); sub_5F7800(a1, a2); result = v5; } return result; } //----- (005F7C10) -------------------------------------------------------- signed int __cdecl sub_5F7C10(int a1, signed int a2, signed int a3) { signed int result; // eax@2 if ( sub_5F41F0(a1, a2) > 0 ) result = sub_5F7B50(a1, a2); else result = a3; return result; } //----- (005F7C40) -------------------------------------------------------- int __cdecl sub_5F7C40(int a1, int a2, int a3) { int v3; // ebx@1 int i; // edi@3 signed int v5; // ebx@5 int v7; // [sp+24h] [bp+Ch]@5 sub_5F7740(a1, 502.0); v3 = a3; if ( !sub_5F3D20(a1, a3 + 20) ) sub_5F6700(a1, (int)"stack overflow (%s)", (unsigned int)"too many upvalues"); for ( i = a2; *(_DWORD *)i; i += 8 ) { if ( v3 > 0 ) { v5 = -v3; v7 = a3; do { sub_5F4140(a1, v5); --v7; } while ( v7 ); v3 = a3; } sub_5F4E40(a1, *(_DWORD *)(i + 4), v3); sub_5F53F0(a1, -2 - a3, *(const void **)i); } return sub_5F3E70(a1, -1 - v3); } //----- (005F7CF0) -------------------------------------------------------- int __cdecl sub_5F7CF0(int a1, signed int a2, int a3, const char **a4) { int v4; // esi@1 int v5; // ebx@4 char v6; // si@5 int v7; // eax@5 const char *v8; // ecx@7 int result; // eax@7 v4 = a3; if ( a3 ) { if ( sub_5F41F0(a1, a2) > 0 ) v4 = sub_5F79F0(a1, a2, 0); } else { v5 = sub_5F48F0(a1, a2, 0); if ( !v5 ) { v6 = sub_5F4280(a1, 4); v7 = sub_5F41F0(a1, a2); sub_5F4280(a1, v7); sub_5F4E10(a1, (int)"%s expected, got %s", v6); sub_5F7800(a1, a2); } v4 = v5; } v8 = *a4; result = 0; if ( *a4 ) { while ( strcmp(v8, (const char *)v4) ) { v8 = a4[result++ + 1]; if ( !v8 ) goto LABEL_10; } } else { LABEL_10: sub_5F4E10(a1, (int)"invalid option '%s'", v4); result = sub_5F7800(a1, a2); } return result; } //----- (005F7DE0) -------------------------------------------------------- int __cdecl sub_5F7DE0(int a1) { signed int v1; // edi@1 int v2; // ebx@2 void **v3; // eax@4 void **v4; // eax@5 void **v5; // eax@6 void **v6; // eax@6 int result; // eax@6 char v8; // [sp+0h] [bp-14h]@0 int v9; // [sp+Ch] [bp-8h]@1 size_t v10; // [sp+10h] [bp-4h]@2 v9 = sub_5F3E50(a1); sub_5F4F40(a1, "tostring"); v1 = 1; if ( v9 < 1 ) { LABEL_6: v5 = sub_6586FE(); fwrite("\n", 1u, 1u, (FILE *)v5 + 1); v6 = sub_6586FE(); fflush((FILE *)v6 + 1); result = 0; } else { while ( 1 ) { sub_5F4140(a1, -1); sub_5F4140(a1, v1); sub_5F5850(a1, 1, 1, 0, 0); v2 = sub_5F48F0(a1, -1, (int)&v10); if ( !v2 ) break; if ( v1 > 1 ) { v3 = sub_6586FE(); fwrite("\t", 1u, 1u, (FILE *)v3 + 1); } v4 = sub_6586FE(); fwrite((const void *)v2, 1u, v10, (FILE *)v4 + 1); sub_5F3E70(a1, -2); ++v1; if ( v1 > v9 ) goto LABEL_6; } result = sub_5F6700(a1, (int)"'tostring' must return a string to 'print'", v8); } return result; } //----- (005F7EE0) -------------------------------------------------------- signed int __cdecl sub_5F7EE0(int a1) { double v1; // st7@2 int v3; // eax@5 const char *v4; // esi@5 signed int v5; // eax@5 int v6; // ebx@5 int *v7; // esi@8 int v8; // eax@15 int v9; // eax@18 double v10; // [sp+14h] [bp-1Ch]@13 int v11; // [sp+1Ch] [bp-14h]@5 signed int v12; // [sp+20h] [bp-10h]@5 int v13; // [sp+24h] [bp-Ch]@5 int v14; // [sp+28h] [bp-8h]@2 int v15; // [sp+2Ch] [bp-4h]@17 if ( sub_5F41F0(a1, 2) > 0 ) { v3 = sub_5F79F0(a1, 1, (int)&v13); v4 = (const char *)v3; v11 = v3 + v13; v5 = sub_5F7B50(a1, 2); v6 = v5; v12 = v5; v14 = 0; if ( v5 < 2 || v5 > 36 ) sub_5F7800(a1, 2); v7 = (int *)&v4[strspn(v4, " ")]; if ( *(_BYTE *)v7 == 45 ) { v14 = 1; } else { if ( *(_BYTE *)v7 != 43 ) goto LABEL_12; } v7 = (int *)((char *)v7 + 1); LABEL_12: if ( !isalnum(*(_BYTE *)v7) ) goto LABEL_4; v10 = 0.0; do { if ( isdigit(*(_BYTE *)v7) ) v8 = *(_BYTE *)v7 - 48; else v8 = toupper(*(_BYTE *)v7) - 55; v15 = v8; if ( v8 >= v6 ) break; v9 = *((_BYTE *)v7 + 1); v7 = (int *)((char *)v7 + 1); v10 = (double)v12 * v10 + (double)v15; } while ( isalnum(v9) ); if ( (int *)((char *)v7 + strspn((const char *)v7, " ")) != (int *)v11 ) goto LABEL_4; v1 = v10; if ( v14 ) v1 = -v10; goto LABEL_22; } v1 = sub_5F4640(a1, 1, (int)&v14); if ( !v14 ) { sub_5F79C0(a1, 1); LABEL_4: sub_5F4C60(a1); return 1; } LABEL_22: sub_5F4C80(a1, v1); return 1; } //----- (005F8050) -------------------------------------------------------- int __cdecl sub_5F8050(int a1) { int v1; // edi@1 int v2; // eax@1 v1 = sub_5F7C10(a1, 2, 1); sub_5F3E70(a1, 1); LOBYTE(v2) = sub_5F43A0(a1, 1); if ( v2 && v1 > 0 ) { sub_5F6670(a1, v1); sub_5F4140(a1, 1); sub_5F5CC0(a1, 2); } return loc_5F5C20(a1); } //----- (005F80B0) -------------------------------------------------------- signed int __cdecl sub_5F80B0(int a1) { signed int result; // eax@2 sub_5F79C0(a1, 1); if ( sub_5F5210(a1, 1) ) { sub_5F7060(a1, 1, "__metatable"); result = 1; } else { sub_5F4C60(a1); result = 1; } return result; } //----- (005F8100) -------------------------------------------------------- int __cdecl sub_5F8100(int a1) { int v1; // edi@1 int result; // eax@5 char v3; // [sp+0h] [bp-8h]@0 v1 = sub_5F41F0(a1, 2); sub_5F7960(a1, 1, 5); if ( v1 && v1 != 5 ) sub_5F7800(a1, 2); if ( sub_5F7060(a1, 1, "__metatable") ) { result = sub_5F6700(a1, (int)"cannot change a protected metatable", v3); } else { sub_5F3E70(a1, 2); sub_5F5620(a1, 1); result = 1; } return result; } //----- (005F8180) -------------------------------------------------------- signed int __cdecl sub_5F8180(int a1) { int v1; // eax@1 sub_5F79C0(a1, 1); sub_5F79C0(a1, 2); LOBYTE(v1) = sub_5F43D0(a1, 1, 2); sub_5F4ED0(a1, v1); return 1; } //----- (005F81C0) -------------------------------------------------------- signed int __cdecl sub_5F81C0(int a1) { int v1; // eax@1 signed int v2; // eax@4 v1 = sub_5F41F0(a1, 1); if ( v1 != 5 && v1 != 4 ) sub_5F7800(a1, 1); v2 = sub_5F49B0(a1, 1); sub_5F4CC0(a1, v2); return 1; } //----- (005F8210) -------------------------------------------------------- signed int __cdecl sub_5F8210(int a1) { sub_5F7960(a1, 1, 5); sub_5F79C0(a1, 2); sub_5F3E70(a1, 2); sub_5F50C0(a1, 1); return 1; } //----- (005F8250) -------------------------------------------------------- signed int __cdecl sub_5F8250(int a1) { sub_5F7960(a1, 1, 5); sub_5F79C0(a1, 2); sub_5F79C0(a1, 3); sub_5F3E70(a1, 3); sub_5F5490(a1, 1); return 1; } //----- (005F8290) -------------------------------------------------------- signed int __cdecl sub_5F8290(int a1) { int v1; // edi@1 int v2; // eax@1 signed int v3; // eax@1 int v4; // edi@1 int v5; // edi@2 signed int result; // eax@4 signed int v7; // edi@6 signed int v8; // [sp+10h] [bp-8h]@1 v1 = dword_6FDB80[sub_5F7CF0(a1, 1, (int)"collect", (const char **)off_6FDB50)]; v2 = sub_5F7C10(a1, 2, 0); v3 = sub_5F5AA0(a1, v1, v2); v4 = v1 - 3; v8 = v3; if ( v4 ) { v5 = v4 - 2; if ( v5 && v5 != 4 ) { sub_5F4CC0(a1, v3); result = 1; } else { sub_5F4ED0(a1, v3); result = 1; } } else { v7 = sub_5F5AA0(a1, 4, 0); sub_5F4C80(a1, (double)v7 * 0.0009765625 + (double)v8); sub_5F4CC0(a1, v7); result = 2; } return result; } // 6FDB50: using guessed type char *off_6FDB50[11]; // 6FDB80: using guessed type int dword_6FDB80[]; //----- (005F8350) -------------------------------------------------------- signed int __cdecl sub_5F8350(int a1) { int v1; // eax@1 int v2; // eax@1 sub_5F79C0(a1, 1); v1 = sub_5F41F0(a1, 1); v2 = sub_5F4280(a1, v1); sub_5F4D80(a1, (const void *)v2); return 1; } //----- (005F8380) -------------------------------------------------------- signed int __cdecl sub_5F8380(int a1) { signed int result; // eax@2 sub_5F7960(a1, 1, 5); sub_5F3E70(a1, 2); if ( sub_5F5C30(a1, 1) ) { result = 2; } else { sub_5F4C60(a1); result = 1; } return result; } //----- (005F83D0) -------------------------------------------------------- signed int __cdecl sub_5F83D0(int a1) { signed int result; // eax@2 if ( sub_5F7060(a1, 1, "__pairs") ) { sub_5F4140(a1, 1); sub_5F5850(a1, 1, 3, 0, 0); result = 3; } else { sub_5F7960(a1, 1, 5); sub_5F4E40(a1, (int)sub_5F8380, 0); sub_5F4140(a1, 1); sub_5F4C60(a1); result = 3; } return result; } //----- (005F8440) -------------------------------------------------------- int __cdecl sub_5F8440(int a1) { signed int v1; // edi@1 v1 = sub_5F7B50(a1, 2) + 1; sub_5F7960(a1, 1, 5); sub_5F4CC0(a1, v1); sub_5F5140(a1, 1, v1); return (sub_5F41F0(a1, -1) != 0) + 1; } //----- (005F8490) -------------------------------------------------------- signed int __cdecl sub_5F8490(int a1) { signed int result; // eax@2 if ( sub_5F7060(a1, 1, "__ipairs") ) { sub_5F4140(a1, 1); sub_5F5850(a1, 1, 3, 0, 0); result = 3; } else { sub_5F7960(a1, 1, 5); sub_5F4E40(a1, (int)sub_5F8440, 0); sub_5F4140(a1, 1); sub_5F4CC0(a1, 0); result = 3; } return result; } //----- (005F8500) -------------------------------------------------------- signed int __cdecl sub_5F8500(int a1) { const char *v1; // edi@1 int v2; // ebx@1 signed int result; // eax@4 int v4; // [sp+Ch] [bp-4h]@1 v1 = sub_5F7A50(a1, 1, 0, 0); v2 = (int)sub_5F7A50(a1, 2, 0, 0); v4 = sub_5F41F0(a1, 3) != -1; if ( sub_5F6D20(a1, v1, v2) ) { sub_5F4C60(a1); sub_5F3F50(a1, -2); result = 2; } else { if ( v4 ) { sub_5F4140(a1, 3); sub_5F5F70(a1, -2, 1); } result = 1; } return result; } //----- (005F8590) -------------------------------------------------------- int __cdecl sub_5F8590(int a1, int a2, int a3) { int result; // eax@2 int v4; // eax@3 char v5; // [sp+0h] [bp-4h]@0 sub_5F6950(a1, 2, (int)"too many nested functions"); sub_5F4140(a1, 1); sub_5F5850(a1, 0, 1, 0, 0); if ( sub_5F41F0(a1, -1) ) { LOBYTE(v4) = sub_5F43A0(a1, -1); if ( !v4 ) sub_5F6700(a1, (int)"reader function must return a string", v5); sub_5F4090(a1, 5); result = sub_5F48F0(a1, 5, a3); } else { sub_5F3E70(a1, -2); *(_DWORD *)a3 = 0; result = 0; } return result; } //----- (005F8620) -------------------------------------------------------- signed int __cdecl sub_5F8620(int a1) { int v1; // edi@1 int v2; // ebx@1 int v3; // eax@2 int v4; // eax@2 int v5; // edi@3 signed int result; // eax@7 int v7; // [sp+Ch] [bp-8h]@1 int v8; // [sp+10h] [bp-4h]@1 v7 = sub_5F3E50(a1); v1 = sub_5F48F0(a1, 1, (int)&v8); v2 = (int)sub_5F7A50(a1, 3, "bt", 0); if ( v1 ) { v3 = (int)sub_5F7A50(a1, 2, (const char *)v1, 0); v4 = sub_5F6FE0(a1, v1, v8, v3, v2); } else { v5 = (int)sub_5F7A50(a1, 2, "=(load)", 0); sub_5F7960(a1, 1, 6); sub_5F3E70(a1, 5); v4 = sub_5F5990(a1, (int)sub_5F8590, 0, v5, v2); } if ( v4 ) { sub_5F4C60(a1); sub_5F3F50(a1, -2); result = 2; } else { if ( v7 >= 4 ) { sub_5F4140(a1, 4); sub_5F5F70(a1, -2, 1); } result = 1; } return result; } //----- (005F8700) -------------------------------------------------------- int __cdecl sub_5F8700(int a1) { return sub_5F3E50(a1) - 1; } //----- (005F8720) -------------------------------------------------------- int __cdecl sub_5F8720(int a1) { const char *v1; // edi@1 v1 = sub_5F7A50(a1, 1, 0, 0); sub_5F3E70(a1, 1); if ( sub_5F6D20(a1, v1, 0) ) loc_5F5C20(a1); sub_5F5850(a1, 0, -1, 0, (int)sub_5F8700); return sub_5F3E50(a1) - 1; } //----- (005F8780) -------------------------------------------------------- int __cdecl sub_5F8780(int a1) { int v1; // eax@1 char v2; // al@2 int result; // eax@2 LOBYTE(v1) = sub_5F4870(a1, 1); if ( v1 ) { result = sub_5F3E50(a1); } else { v2 = (unsigned int)sub_5F7A50(a1, 2, "assertion failed!", 0); result = sub_5F6700(a1, (int)"%s", v2); } return result; } //----- (005F87D0) -------------------------------------------------------- int __cdecl sub_5F87D0(int a1) { int v1; // ebx@1 int result; // eax@3 signed int v3; // eax@4 int v4; // esi@4 v1 = sub_5F3E50(a1); if ( sub_5F41F0(a1, 1) != 4 || *(_BYTE *)sub_5F48F0(a1, 1, 0) != 35 ) { v3 = sub_5F7B50(a1, 1); v4 = v3; if ( v3 >= 0 ) { if ( v3 > v1 ) v4 = v1; } else { v4 = v1 + v3; } if ( v4 < 1 ) sub_5F7800(a1, 1); result = v1 - v4; } else { sub_5F4CC0(a1, v1 - 1); result = 1; } return result; } //----- (005F8850) -------------------------------------------------------- int __cdecl sub_5F8850(int a1) { int v1; // edi@1 int result; // eax@2 v1 = sub_5F5820(a1, 0); if ( sub_5F3D20(a1, 1) ) { sub_5F4ED0(a1, v1 == 1); sub_5F4090(a1, 1); result = sub_5F3E50(a1); } else { sub_5F3E70(a1, 0); sub_5F4ED0(a1, 0); sub_5F4D80(a1, "stack overflow"); result = 2; } return result; } //----- (005F88C0) -------------------------------------------------------- int __cdecl sub_5F88C0(int a1) { int v1; // eax@1 int v2; // edi@1 int result; // eax@2 sub_5F79C0(a1, 1); sub_5F4C60(a1); sub_5F3F50(a1, 1); v1 = sub_5F3E50(a1); v2 = sub_5F58D0(a1, v1 - 2, -1, 0, 0, (int)sub_5F8850); if ( sub_5F3D20(a1, 1) ) { sub_5F4ED0(a1, v2 == 0); sub_5F4090(a1, 1); result = sub_5F3E50(a1); } else { sub_5F3E70(a1, 0); sub_5F4ED0(a1, 0); sub_5F4D80(a1, "stack overflow"); result = 2; } return result; } //----- (005F8960) -------------------------------------------------------- int __cdecl sub_5F8960(int a1) { int v1; // edi@1 int v2; // edi@3 int result; // eax@4 v1 = sub_5F3E50(a1); if ( v1 < 2 ) sub_5F7800(a1, 2); sub_5F4140(a1, 1); sub_5F40B0(a1, 2, 1); sub_5F4090(a1, 2); v2 = sub_5F58D0(a1, v1 - 2, -1, 1, 0, (int)sub_5F8850); if ( sub_5F3D20(a1, 1) ) { sub_5F4ED0(a1, v2 == 0); sub_5F4090(a1, 1); result = sub_5F3E50(a1); } else { sub_5F3E70(a1, 0); sub_5F4ED0(a1, 0); sub_5F4D80(a1, "stack overflow"); result = 2; } return result; } //----- (005F8A20) -------------------------------------------------------- signed int __cdecl sub_5F8A20(int a1) { sub_5F79C0(a1, 1); sub_5F7190(a1, 1, 0); return 1; } //----- (005F8A50) -------------------------------------------------------- signed int __cdecl sub_5F8A50(int a1) { sub_5F5140(a1, -1001000, 2); sub_5F5140(a1, -1001000, 2); sub_5F53F0(a1, -2, "_G"); sub_5F7C40(a1, (int)&off_6FDBB0, 0); sub_5F4D30(a1, "Lua 5.2", 7u); sub_5F53F0(a1, -2, "_VERSION"); return 1; } // 6FDBB0: using guessed type char *off_6FDBB0; //----- (005F8AB0) -------------------------------------------------------- signed int __cdecl sub_5F8AB0(int a1) { int v1; // edi@1 signed int v2; // esi@1 signed int i; // ebx@1 int v4; // eax@2 v1 = sub_5F3E50(a1); v2 = 1; for ( i = -1; v2 <= v1; i &= v4 ) v4 = sub_5F7BB0(a1, v2++); sub_5F4CE0(a1, i); return 1; } //----- (005F8B00) -------------------------------------------------------- signed int __cdecl sub_5F8B00(int a1) { int v1; // edi@1 signed int v2; // esi@1 signed int i; // ebx@1 int v4; // eax@2 v1 = sub_5F3E50(a1); v2 = 1; for ( i = -1; v2 <= v1; i &= v4 ) v4 = sub_5F7BB0(a1, v2++); sub_5F4ED0(a1, i != 0); return 1; } //----- (005F8B60) -------------------------------------------------------- signed int __cdecl sub_5F8B60(int a1) { signed int v1; // ebx@1 int v2; // edi@1 signed int i; // esi@1 int v4; // eax@2 v1 = 0; v2 = sub_5F3E50(a1); for ( i = 1; i <= v2; v1 |= v4 ) v4 = sub_5F7BB0(a1, i++); sub_5F4CE0(a1, v1); return 1; } //----- (005F8BB0) -------------------------------------------------------- signed int __cdecl sub_5F8BB0(int a1) { signed int v1; // ebx@1 int v2; // edi@1 signed int i; // esi@1 int v4; // eax@2 v1 = 0; v2 = sub_5F3E50(a1); for ( i = 1; i <= v2; v1 ^= v4 ) v4 = sub_5F7BB0(a1, i++); sub_5F4CE0(a1, v1); return 1; } //----- (005F8C00) -------------------------------------------------------- signed int __cdecl sub_5F8C00(int a1) { int v1; // eax@1 v1 = sub_5F7BB0(a1, 1); sub_5F4CE0(a1, ~v1); return 1; } //----- (005F8C30) -------------------------------------------------------- signed int __cdecl sub_5F8C30(int a1) { signed int v1; // esi@1 int v2; // eax@1 int v3; // esi@2 v1 = sub_5F7B50(a1, 2); v2 = sub_5F7BB0(a1, 1); if ( v1 < 0 ) { v3 = -v1; if ( v3 < 32 ) { sub_5F4CE0(a1, (unsigned int)v2 >> v3); return 1; } goto LABEL_5; } if ( v1 >= 32 ) { LABEL_5: sub_5F4CE0(a1, 0); return 1; } sub_5F4CE0(a1, v2 << v1); return 1; } //----- (005F8CA0) -------------------------------------------------------- signed int __cdecl sub_5F8CA0(int a1) { signed int v1; // esi@1 int v2; // eax@1 int v3; // esi@1 int v4; // esi@2 v1 = sub_5F7B50(a1, 2); v2 = sub_5F7BB0(a1, 1); v3 = -v1; if ( v3 < 0 ) { v4 = -v3; if ( v4 < 32 ) { sub_5F4CE0(a1, (unsigned int)v2 >> v4); return 1; } goto LABEL_5; } if ( v3 >= 32 ) { LABEL_5: sub_5F4CE0(a1, 0); return 1; } sub_5F4CE0(a1, v2 << v3); return 1; } //----- (005F8D10) -------------------------------------------------------- signed int __cdecl sub_5F8D10(int a1) { int v1; // esi@1 signed int v2; // eax@1 signed int result; // eax@4 int v4; // ecx@6 v1 = sub_5F7BB0(a1, 1); v2 = sub_5F7B50(a1, 2); if ( v2 < 0 || v1 >= 0 ) { v4 = -v2; if ( -v2 >= 0 ) { if ( v4 < 32 ) { sub_5F4CE0(a1, v1 << v4); return 1; } } else { if ( v2 < 32 ) { sub_5F4CE0(a1, (unsigned int)v1 >> v2); return 1; } } sub_5F4CE0(a1, 0); return 1; } if ( v2 < 32 ) { sub_5F4CE0(a1, ~(0xFFFFFFFFu >> v2) | ((unsigned int)v1 >> v2)); result = 1; } else { sub_5F4CE0(a1, -1); result = 1; } return result; } //----- (005F8DC0) -------------------------------------------------------- signed int __cdecl sub_5F8DC0(int a1) { char v1; // si@1 signed int v2; // eax@1 v1 = sub_5F7B50(a1, 2) & 0x1F; v2 = __ROL__(sub_5F7BB0(a1, 1), v1); sub_5F4CE0(a1, v2); return 1; } //----- (005F8E00) -------------------------------------------------------- signed int __cdecl sub_5F8E00(int a1) { int v1; // esi@1 signed int v2; // eax@1 v1 = -sub_5F7B50(a1, 2) & 0x1F; v2 = __ROL__(sub_5F7BB0(a1, 1), v1); sub_5F4CE0(a1, v2); return 1; } //----- (005F8E40) -------------------------------------------------------- signed int __usercall sub_5F8E40(int a1, int a2, int a3) { signed int v3; // edi@1 signed int v4; // eax@1 signed int result; // eax@6 int v6; // [sp+0h] [bp-14h]@0 signed int v7; // [sp+4h] [bp-10h]@0 char v8; // [sp+8h] [bp-Ch]@0 signed int v9; // [sp+10h] [bp-4h]@1 v3 = sub_5F7B50(v6, v7); v4 = sub_5F7C10(a2, a1 + 1, 1); v9 = v4; if ( v3 < 0 ) { sub_5F7800(a2, a1); v4 = v9; } if ( v4 <= 0 ) { sub_5F7800(a2, a1 + 1); v4 = v9; } if ( v4 + v3 <= 32 ) { *(_DWORD *)a3 = v4; result = v3; } else { sub_5F6700(a2, (int)"trying to access non-existent bits", v8); *(_DWORD *)a3 = v9; result = v3; } return result; } //----- (005F8ED0) -------------------------------------------------------- signed int __cdecl sub_5F8ED0(int a1) { int v1; // edi@1 char v2; // al@1 int v4; // [sp+Ch] [bp-4h]@1 v1 = sub_5F7BB0(a1, 1); v2 = sub_5F8E40(2, a1, (int)&v4); sub_5F4CE0(a1, ((unsigned int)v1 >> v2) & ~(-2 << (v4 - 1))); return 1; } //----- (005F8F20) -------------------------------------------------------- signed int __cdecl sub_5F8F20(int a1) { int v1; // edi@1 int v2; // ST28_4@1 char v3; // al@1 int v5; // [sp+10h] [bp-4h]@1 v1 = sub_5F7BB0(a1, 1); v2 = sub_5F7BB0(a1, 2); v3 = sub_5F8E40(3, a1, (int)&v5); sub_5F4CE0(a1, ((v2 & ~(-2 << (v5 - 1))) << v3) | v1 & ~(~(-2 << (v5 - 1)) << v3)); return 1; } //----- (005F8F90) -------------------------------------------------------- signed int __cdecl sub_5F8F90(signed int a1) { sub_5F51C0(a1, 0, 12); sub_5F7C40(a1, (int)&off_6FDE18, 0); return 1; } // 6FDE18: using guessed type char *off_6FDE18; //----- (005F8FC0) -------------------------------------------------------- int __cdecl sub_5F8FC0(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 + 20); *(_DWORD *)(a1 + 24) = result; return result; } //----- (005F8FD0) -------------------------------------------------------- signed int __usercall sub_5F8FD0(int a1, signed int a2) { int v2; // edi@2 int v3; // eax@3 int v4; // esi@4 int v5; // eax@7 signed int result; // eax@9 if ( a2 == -1 ) { LABEL_9: result = 0; } else { v2 = *(_DWORD *)(*(_DWORD *)a1 + 12); while ( 1 ) { v3 = v2 + 4 * a2; if ( a2 < 1 || (v4 = v3 - 4, !(byte_6FF424[*(_DWORD *)(v3 - 4) & 0x3F] & 0x80)) ) v4 = v2 + 4 * a2; if ( (*(_BYTE *)v4 & 0x3F) != 28 ) break; v5 = (*(_DWORD *)v3 >> 14) - 131071; if ( v5 != -1 ) { a2 += v5 + 1; if ( a2 != -1 ) continue; } goto LABEL_9; } result = 1; } return result; } //----- (005F9030) -------------------------------------------------------- int __usercall sub_5F9030(int result, int a2) { int i; // esi@1 int v3; // eax@2 int v4; // ecx@3 for ( i = result; i != -1; i += result + 1 ) { v3 = 4 * i + *(_DWORD *)(*(_DWORD *)a2 + 12); if ( i < 1 || (v4 = v3 - 4, !(byte_6FF424[*(_DWORD *)(v3 - 4) & 0x3F] & 0x80)) ) v4 = 4 * i + *(_DWORD *)(*(_DWORD *)a2 + 12); if ( (*(_BYTE *)v4 & 0x3F) == 28 ) *(_DWORD *)v4 = (unsigned int)&unk_7FC000 & *(_DWORD *)v4 | ((*(_DWORD *)v4 & 0xFFB7FFFF | 0x360000u) >> 17); result = (*(_DWORD *)(4 * i + *(_DWORD *)(*(_DWORD *)a2 + 12)) >> 14) - 131071; if ( result == -1 ) break; } return result; } //----- (005F91E0) -------------------------------------------------------- int __cdecl sub_5F91E0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 int v5; // edi@2 int v6; // eax@3 int v7; // edx@4 v3 = a2; result = a3 + 1; if ( a2 != -1 ) { v5 = (unsigned __int8)result << 6; do { v6 = (*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * v3) >> 14) - 131071; if ( v6 == -1 ) v7 = -1; else v7 = v6 + v3 + 1; result = *(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * v3; *(_DWORD *)result = v5 | *(_DWORD *)result & 0xFFFFC03F; v3 = v7; } while ( v7 != -1 ); } return result; } //----- (005F9240) -------------------------------------------------------- void __cdecl sub_5F9240(int a1, int *a2, int a3) { int v3; // ecx@2 int v4; // esi@4 int v5; // eax@5 int v6; // eax@6 int v7; // edi@8 if ( a3 != -1 ) { v3 = *a2; if ( *a2 == -1 ) { *a2 = a3; } else { v4 = *(_DWORD *)(*(_DWORD *)a1 + 12); while ( 1 ) { v5 = (*(_DWORD *)(v4 + 4 * v3) >> 14) - 131071; if ( v5 == -1 ) break; v6 = v5 + v3 + 1; if ( v6 == -1 ) break; v3 = v6; } v7 = a3 - v3; if ( abs(a3 - v3 - 1) > 131071 ) loc_6019A0(*(_DWORD *)(a1 + 12), "control structure too long"); *(_DWORD *)(v4 + 4 * v3) = *(_DWORD *)(v4 + 4 * v3) & 0x3FFF ^ ((v7 + 131070) << 14); } } } //----- (005F92C0) -------------------------------------------------------- int __usercall sub_5F92C0(int a1, int a2) { int v2; // edi@1 int v3; // ecx@1 int result; // eax@5 v2 = *(_DWORD *)a1; loc_5F90B0(a1, *(_DWORD *)(a1 + 20), 255); v3 = *(_DWORD *)(a1 + 20) + 1; *(_DWORD *)(a1 + 28) = -1; if ( v3 > *(_DWORD *)(v2 + 48) ) *(_DWORD *)(v2 + 12) = sub_6037B0( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 52), *(_DWORD *)(v2 + 12), (signed int *)(v2 + 48), 4u, 2147483645, (int)"opcodes"); *(_DWORD *)(*(_DWORD *)(v2 + 12) + 4 * *(_DWORD *)(a1 + 20)) = a2; if ( *(_DWORD *)(a1 + 20) + 1 > *(_DWORD *)(v2 + 52) ) *(_DWORD *)(v2 + 20) = sub_6037B0( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 52), *(_DWORD *)(v2 + 20), (signed int *)(v2 + 52), 4u, 2147483645, (int)"opcodes"); *(_DWORD *)(*(_DWORD *)(v2 + 20) + 4 * *(_DWORD *)(a1 + 20)) = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 8); result = *(_DWORD *)(a1 + 20); *(_DWORD *)(a1 + 20) = result + 1; return result; } //----- (005F9370) -------------------------------------------------------- int __cdecl sub_5F9370(int a1, int a2, int a3, int a4, int a5) { return sub_5F92C0(a1, a2 | ((a3 | ((a5 | (a4 << 9)) << 8)) << 6)); } //----- (005F93A0) -------------------------------------------------------- int __cdecl sub_5F93A0(int a1, int a2, int a3, int a4) { return sub_5F92C0(a1, a2 | ((a3 | (a4 << 8)) << 6)); } //----- (005F93D0) -------------------------------------------------------- int __cdecl sub_5F93D0(int a1, int a2, signed int a3) { int result; // eax@2 int v4; // ebx@3 if ( a3 > 262143 ) { v4 = sub_5F92C0(a1, (a2 << 6) | 2); sub_5F92C0(a1, (a3 << 6) | 0x27); result = v4; } else { result = sub_5F92C0(a1, ((a2 | (a3 << 8)) << 6) | 1); } return result; } //----- (005F9430) -------------------------------------------------------- int __cdecl sub_5F9430(int a1, int a2) { int v2; // ecx@1 int result; // eax@1 v2 = *(_DWORD *)a1; result = a2 + *(_BYTE *)(a1 + 48); if ( result > *(_BYTE *)(*(_DWORD *)a1 + 78) ) { if ( result >= 250 ) result = loc_6019A0(*(_DWORD *)(a1 + 12), "function or expression too complex"); *(_BYTE *)(v2 + 78) = result; } return result; } //----- (005F9470) -------------------------------------------------------- int __cdecl sub_5F9470(int a1, int a2) { int v2; // ecx@1 int v3; // edx@1 int result; // eax@1 v2 = a1; v3 = *(_DWORD *)a1; result = a2 + *(_BYTE *)(a1 + 48); if ( result > *(_BYTE *)(*(_DWORD *)a1 + 78) ) { if ( result >= 250 ) result = loc_6019A0(*(_DWORD *)(a1 + 12), "function or expression too complex"); *(_BYTE *)(v3 + 78) = result; } *(_BYTE *)(v2 + 48) += a2; return result; } //----- (005F94B0) -------------------------------------------------------- signed int __usercall sub_5F94B0(signed int result, int a2) { if ( *(_DWORD *)result == 6 ) { result = *(_DWORD *)(result + 8); if ( !(result & 0x100) ) { if ( result >= *(_BYTE *)(a2 + 46) ) --*(_BYTE *)(a2 + 48); } } return result; } //----- (005F94D0) -------------------------------------------------------- signed int __thiscall sub_5F94D0(int this, int a2, int a3) { int v3; // eax@1 int v4; // esi@1 int v5; // edi@2 int v6; // ecx@3 int v7; // edx@8 int v8; // edi@8 int v9; // ebx@8 int v10; // eax@9 int v11; // ecx@12 int v12; // ecx@12 int v13; // eax@15 int v15; // [sp+14h] [bp-Ch]@1 int v16; // [sp+18h] [bp-8h]@1 signed int v17; // [sp+1Ch] [bp-4h]@2 v16 = *(_DWORD *)(*(_DWORD *)(a2 + 12) + 52); v3 = sub_60C070(v16, *(_DWORD *)(a2 + 4), this); v4 = *(_DWORD *)a2; v15 = v3; if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) { v17 = (signed int)*(double *)v3; v5 = *(_DWORD *)(v4 + 8) + 8 * v17; v6 = (*(_DWORD *)(v5 + 4) & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)(*(_DWORD *)(v5 + 4) == *(_DWORD *)(a3 + 4)) : (unsigned __int8)((*(_DWORD *)(a3 + 4) & 0x7FFFFF00) != 2146936064); if ( v6 ) { if ( sub_60E2F0(0, v5, (int *)a3) ) return v17; v3 = v15; } } v7 = a2; v8 = *(_DWORD *)(v4 + 44); v9 = v4 + 44; v17 = *(_DWORD *)(a2 + 32); *(double *)v3 = (double)v17; if ( v17 + 1 > *(_DWORD *)(v4 + 44) ) { v10 = sub_6037B0(v16, *(_DWORD *)(v4 + 8), (signed int *)(v4 + 44), 8u, (signed int)&unk_3FFFFFF, (int)"constants"); v7 = a2; *(_DWORD *)(v4 + 8) = v10; } for ( ; v8 < *(_DWORD *)v9; ++v8 ) *(_DWORD *)(*(_DWORD *)(v4 + 8) + 8 * v8 + 4) = 2146936064; v11 = *(_DWORD *)(v4 + 8); *(_DWORD *)(v11 + 8 * v17) = *(_DWORD *)a3; *(_DWORD *)(v11 + 8 * v17 + 4) = *(_DWORD *)(a3 + 4); ++*(_DWORD *)(v7 + 32); v12 = *(_DWORD *)(a3 + 4); if ( (v12 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v12) = 3; if ( v12 & 0x40 ) { v13 = *(_DWORD *)a3; if ( *(_BYTE *)(*(_DWORD *)a3 + 5) & 3 ) { if ( *(_BYTE *)(v4 + 5) & 4 ) sub_5FF530(v16, v4, v13); } } return v17; } //----- (005F9640) -------------------------------------------------------- signed int __cdecl sub_5F9640(int a1, int a2) { int v3; // [sp+0h] [bp-8h]@1 int v4; // [sp+4h] [bp-4h]@1 v3 = a2; v4 = *(_BYTE *)(a2 + 4) | 0x7FF7A540; return sub_5F94D0((int)&v3, a1, (int)&v3); } //----- (005F9670) -------------------------------------------------------- signed int __cdecl sub_5F9670(int a1, double a2) { int v2; // esi@1 signed int result; // eax@2 int v4; // edi@3 int v5; // eax@3 double v6; // [sp+0h] [bp-8h]@1 v2 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 52); v6 = a2; if ( 0.0 == a2 ) { v4 = *(_DWORD *)(v2 + 8); v5 = sub_609580(v2, &a2, 8u); *(_DWORD *)v4 = v5; *(_DWORD *)(v4 + 4) = *(_BYTE *)(v5 + 4) | 0x7FF7A540; *(_DWORD *)(v2 + 8) += 8; if ( ((*(_DWORD *)(v2 + 24) - *(_DWORD *)(v2 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(v2, 0); result = sub_5F94D0(*(_DWORD *)(v2 + 8) - 8, a1, (int)&v6); *(_DWORD *)(v2 + 8) -= 8; } else { result = sub_5F94D0((int)&v6, a1, (int)&v6); } return result; } //----- (005F9710) -------------------------------------------------------- int __cdecl sub_5F9710(int a1, int a2, int a3) { int result; // eax@1 int v4; // eax@2 int v5; // ecx@2 int v6; // edx@2 int v7; // ecx@4 int v8; // edx@4 int v9; // ecx@4 result = *(_DWORD *)a2; if ( *(_DWORD *)a2 == 12 ) { v4 = *(_DWORD *)(a2 + 8); v5 = *(_DWORD *)(*(_DWORD *)a1 + 12); v6 = *(_DWORD *)(v5 + 4 * v4) ^ ((a3 + 1) << 14); result = v5 + 4 * v4; *(_DWORD *)result ^= (unsigned int)&unk_7FC000 & v6; } else { if ( result == 13 ) { result = a1; v7 = *(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * *(_DWORD *)(a2 + 8); *(_DWORD *)v7 = (unsigned int)&unk_7FFFFF & *(_DWORD *)v7 ^ ((a3 + 1) << 23); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)result + 12) + 4 * *(_DWORD *)(a2 + 8)) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)result + 12) + 4 * *(_DWORD *)(a2 + 8)) & 0xFFFFC03F | (*(_BYTE *)(result + 48) << 6); v8 = *(_DWORD *)a1; v9 = *(_BYTE *)(a1 + 48) + 1; if ( v9 > *(_BYTE *)(*(_DWORD *)a1 + 78) ) { if ( v9 >= 250 ) result = loc_6019A0(*(_DWORD *)(a1 + 12), "function or expression too complex"); *(_BYTE *)(v8 + 78) = v9; } ++*(_BYTE *)(result + 48); } } return result; } //----- (005F97C0) -------------------------------------------------------- int __cdecl sub_5F97C0(int a1, int a2) { int result; // eax@1 int v3; // ecx@2 int v4; // ecx@4 result = a2; if ( *(_DWORD *)a2 == 12 ) { v3 = *(_DWORD *)(a2 + 8); *(_DWORD *)a2 = 6; *(_DWORD *)(a2 + 8) = (*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * v3) >> 6) & 0xFF; } else { if ( *(_DWORD *)a2 == 13 ) { v4 = *(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * *(_DWORD *)(a2 + 8); *(_DWORD *)v4 = (unsigned int)&unk_1000000 | (unsigned int)&unk_7FFFFF & *(_DWORD *)v4; *(_DWORD *)a2 = 11; } } return result; } //----- (005F9820) -------------------------------------------------------- int __cdecl sub_5F9820(int a1, int a2) { int result; // eax@1 int v3; // esi@3 int v4; // eax@3 signed int v5; // eax@4 signed int v6; // ecx@4 signed int v7; // eax@8 result = *(_DWORD *)a2 - 7; switch ( *(_DWORD *)a2 ) { case 7: *(_DWORD *)a2 = 6; break; case 8: v3 = a1; v4 = (*(_DWORD *)(a2 + 8) << 23) | 5; goto LABEL_13; case 9: v5 = *(_WORD *)(a2 + 8); v3 = a1; v6 = 6; if ( !(v5 & 0x100) && v5 >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); if ( *(_BYTE *)(a2 + 11) == 7 ) { v7 = *(_BYTE *)(a2 + 10); if ( !(v7 & 0x100) ) { if ( v7 >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); } v6 = 7; } v4 = v6 | ((*(_WORD *)(a2 + 8) | (*(_BYTE *)(a2 + 10) << 9)) << 14); LABEL_13: result = sub_5F92C0(v3, v4); *(_DWORD *)(a2 + 8) = result; *(_DWORD *)a2 = 11; break; case 0xC: case 0xD: result = sub_5F97C0(a1, a2); break; default: return result; } return result; } //----- (005F98F0) -------------------------------------------------------- int __usercall sub_5F98F0(int a1, int a2) { signed int v2; // eax@1 int v3; // ecx@1 int result; // eax@4 v2 = *(_DWORD *)(a1 + 8); v3 = *(_DWORD *)(*(_DWORD *)a2 + 12) + 4 * v2; if ( v2 >= 1 && byte_6FF424[*(_DWORD *)(v3 - 4) & 0x3F] & 0x80 ) v3 -= 4; result = *(_DWORD *)v3; *(_DWORD *)v3 ^= ((unsigned __int16)*(_DWORD *)v3 ^ (unsigned __int16)(((*(_DWORD *)v3 & 0x3FC0) == 0) << 6)) & 0x3FC0; return result; } //----- (005F9940) -------------------------------------------------------- signed int __usercall sub_5F9940(int a1, int a2, int a3) { signed int result; // eax@10 if ( *(_DWORD *)a3 != 5 || *(_DWORD *)(a3 + 16) != -1 || *(_DWORD *)(a3 + 20) != -1 || *(_DWORD *)a2 != 5 || *(_DWORD *)(a2 + 16) != -1 || *(_DWORD *)(a2 + 20) != -1 || (a1 == 16 || a1 == 17) && 0.0 == *(double *)(a2 + 8) ) { result = 0; } else { *(double *)(a3 + 8) = sub_604540(a1 - 13, *(double *)(a3 + 8), *(double *)(a2 + 8)); result = 1; } return result; } //----- (005F99B0) -------------------------------------------------------- int __cdecl sub_5F99B0(int a1, int a2) { int result; // eax@1 result = *(_DWORD *)(*(_DWORD *)a1 + 20); *(_DWORD *)(result + 4 * *(_DWORD *)(a1 + 20) - 4) = a2; return result; } //----- (005F9A80) -------------------------------------------------------- int __cdecl sub_5F9A80(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // edx@1 int v5; // eax@1 int v6; // edi@2 unsigned int v7; // ecx@2 int v8; // eax@3 int v9; // ecx@3 int result; // eax@11 v3 = a2; v4 = a2 + a3 - 1; v5 = *(_DWORD *)(a1 + 20); if ( v5 <= *(_DWORD *)(a1 + 24) || (v6 = *(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * v5 - 4, v7 = *(_DWORD *)v6, (*(_DWORD *)v6 & 0x3F) != 4) ) return sub_5F92C0(a1, ((a2 | ((a3 - 1) << 17)) << 6) | 4); v8 = (v7 >> 6) & 0xFF; v9 = v8 + (v7 >> 23); if ( a2 < v8 ) { LABEL_6: if ( v8 <= a2 + a3 ) goto LABEL_7; return sub_5F92C0(a1, ((a2 | ((a3 - 1) << 17)) << 6) | 4); } if ( a2 > v9 + 1 ) { if ( a2 > v8 ) return sub_5F92C0(a1, ((a2 | ((a3 - 1) << 17)) << 6) | 4); goto LABEL_6; } LABEL_7: if ( v8 < a2 ) v3 = v8; if ( v9 > v4 ) v4 = v9; result = (unsigned __int8)v3 << 6; *(_DWORD *)v6 = (unsigned int)&unk_7FC03F & *(_DWORD *)v6 | result | ((v4 - v3) << 23) & 0xFF800000; return result; } //----- (005F9B30) -------------------------------------------------------- int __cdecl sub_5F9B30(int a1) { int v1; // esi@1 int v2; // edi@1 v1 = a1; v2 = *(_DWORD *)(a1 + 28); *(_DWORD *)(a1 + 28) = -1; a1 = sub_5F92C0(v1, 2147450903); sub_5F9240(v1, &a1, v2); return a1; } //----- (005F9B70) -------------------------------------------------------- int __cdecl sub_5F9B70(int a1, int a2, int a3) { return sub_5F92C0(a1, (a2 << 6) | ((a3 + 1) << 23) | 0x1F); } //----- (005F9BA0) -------------------------------------------------------- void __cdecl sub_5F9BA0(int a1, int a2) { *(_DWORD *)(a1 + 24) = *(_DWORD *)(a1 + 20); sub_5F9240(a1, (int *)(a1 + 28), a2); } //----- (005F9BC0) -------------------------------------------------------- int __usercall sub_5F9BC0(int a1, int a2, int a3) { int v3; // esi@1 int result; // eax@1 signed int v5; // eax@5 int v6; // edx@6 int v7; // eax@6 int v8; // ecx@6 int v9; // [sp+4h] [bp-8h]@0 v3 = a1; sub_5F9820(a1, v9); result = *(_DWORD *)a2; switch ( *(_DWORD *)a2 ) { case 1: result = sub_5F9A80(v3, a3, 1); *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)a2 = 6; break; case 2: case 3: result = sub_5F92C0(v3, ((a3 | ((result == 2) << 17)) << 6) | 3); *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)a2 = 6; break; case 4: result = sub_5F93D0(v3, a3, *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)a2 = 6; break; case 5: v5 = sub_5F9670(v3, *(double *)(a2 + 8)); result = sub_5F93D0(v3, a3, v5); *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)a2 = 6; break; case 0xB: v6 = *(_DWORD *)(*(_DWORD *)v3 + 12); v7 = *(_DWORD *)(a2 + 8); v8 = *(_DWORD *)(v6 + 4 * v7) ^ (a3 << 6); result = v6 + 4 * v7; *(_DWORD *)result ^= v8 & 0x3FC0; *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)a2 = 6; break; case 6: result = *(_DWORD *)(a2 + 8); if ( a3 != result ) result = sub_5F92C0(v3, (a3 | (result << 17)) << 6); *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)a2 = 6; break; default: return result; } return result; } //----- (005F9CE0) -------------------------------------------------------- int __usercall sub_5F9CE0(int result, int a2) { int v2; // ebx@1 int v3; // edx@2 int v4; // ecx@2 v2 = a2; if ( *(_DWORD *)a2 != 6 ) { v3 = *(_DWORD *)result; v4 = *(_BYTE *)(result + 48) + 1; if ( v4 > *(_BYTE *)(*(_DWORD *)result + 78) ) { if ( v4 >= 250 ) result = loc_6019A0(*(_DWORD *)(result + 12), "function or expression too complex"); *(_BYTE *)(v3 + 78) = v4; } ++*(_BYTE *)(result + 48); result = sub_5F9BC0(result, v2, *(_BYTE *)(result + 48) - 1); } return result; } //----- (005F9D30) -------------------------------------------------------- signed int __usercall sub_5F9D30(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ebx@1 signed int v5; // edx@3 signed int v6; // edi@3 int v7; // edi@8 int v8; // ST14_4@9 int v9; // edi@10 signed int result; // eax@11 int v11; // [sp+Ch] [bp-Ch]@4 int v12; // [sp+10h] [bp-8h]@4 int v13; // [sp+14h] [bp-4h]@7 v3 = a2; v4 = a1; sub_5F9BC0(a2, a1, a3); if ( *(_DWORD *)v4 == 10 ) sub_5F9240(v3, (int *)(v4 + 16), *(_DWORD *)(v4 + 8)); v5 = *(_DWORD *)(v4 + 16); v6 = *(_DWORD *)(v4 + 20); if ( v5 != v6 ) { v12 = -1; v11 = -1; if ( sub_5F8FD0(v3, v5) || sub_5F8FD0(v3, v6) ) { if ( *(_DWORD *)v4 == 10 ) { v13 = -1; } else { v7 = *(_DWORD *)(v3 + 28); *(_DWORD *)(v3 + 28) = -1; v13 = sub_5F92C0(v3, 2147450903); sub_5F9240(v3, &v13, v7); } *(_DWORD *)(v3 + 24) = *(_DWORD *)(v3 + 20); v12 = sub_5F92C0(v3, (a3 << 6) | 0x4003); *(_DWORD *)(v3 + 24) = *(_DWORD *)(v3 + 20); v11 = sub_5F92C0(v3, (unsigned int)&unk_800003 | (a3 << 6)); v8 = v13; *(_DWORD *)(v3 + 24) = *(_DWORD *)(v3 + 20); sub_5F9240(v3, (int *)(v3 + 28), v8); } v9 = *(_DWORD *)(v3 + 20); *(_DWORD *)(v3 + 24) = v9; loc_5F90B0(v3, v9, a3, v12); loc_5F90B0(v3, v9, a3, v11); } result = -1; *(_DWORD *)(v4 + 16) = -1; *(_DWORD *)(v4 + 20) = -1; *(_DWORD *)(v4 + 8) = a3; *(_DWORD *)v4 = 6; return result; } //----- (005F9E60) -------------------------------------------------------- signed int __cdecl sub_5F9E60(int a1, int a2) { signed int v2; // eax@2 int v3; // ecx@5 int v4; // eax@5 sub_5F9820(a1, a2); if ( *(_DWORD *)a2 == 6 ) { v2 = *(_DWORD *)(a2 + 8); if ( !(v2 & 0x100) ) { if ( v2 >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); } } v3 = *(_DWORD *)a1; v4 = *(_BYTE *)(a1 + 48) + 1; if ( v4 > *(_BYTE *)(*(_DWORD *)a1 + 78) ) { if ( v4 >= 250 ) LOBYTE(v4) = loc_6019A0(*(_DWORD *)(a1 + 12), "function or expression too complex"); *(_BYTE *)(v3 + 78) = v4; } ++*(_BYTE *)(a1 + 48); return sub_5F9D30(a2, a1, *(_BYTE *)(a1 + 48) - 1); } //----- (005F9ED0) -------------------------------------------------------- signed int __cdecl sub_5F9ED0(int a1, int a2) { signed int result; // eax@2 sub_5F9820(a1, a2); if ( *(_DWORD *)a2 != 6 ) goto LABEL_8; result = *(_DWORD *)(a2 + 8); if ( *(_DWORD *)(a2 + 16) == *(_DWORD *)(a2 + 20) ) return result; if ( result < *(_BYTE *)(a1 + 46) ) { LABEL_8: sub_5F9E60(a1, a2); result = *(_DWORD *)(a2 + 8); } else { sub_5F9D30(a2, a1, *(_DWORD *)(a2 + 8)); result = *(_DWORD *)(a2 + 8); } return result; } //----- (005F9F30) -------------------------------------------------------- int __cdecl sub_5F9F30(int a1, int a2) { int result; // eax@2 if ( *(_DWORD *)a2 != 8 || (result = *(_DWORD *)(a2 + 16), result != *(_DWORD *)(a2 + 20)) ) { result = sub_5F9820(a1, a2); if ( *(_DWORD *)a2 != 6 ) goto LABEL_10; if ( *(_DWORD *)(a2 + 16) == *(_DWORD *)(a2 + 20) ) return result; if ( *(_DWORD *)(a2 + 8) < (signed int)*(_BYTE *)(a1 + 46) ) LABEL_10: result = sub_5F9E60(a1, a2); else result = sub_5F9D30(a2, a1, *(_DWORD *)(a2 + 8)); } return result; } //----- (005F9F90) -------------------------------------------------------- int __cdecl sub_5F9F90(int a1, int a2) { int result; // eax@2 if ( *(_DWORD *)(a2 + 16) == *(_DWORD *)(a2 + 20) ) return sub_5F9820(a1, a2); result = sub_5F9820(a1, a2); if ( *(_DWORD *)a2 != 6 ) return sub_5F9E60(a1, a2); if ( *(_DWORD *)(a2 + 16) == *(_DWORD *)(a2 + 20) ) return result; if ( *(_DWORD *)(a2 + 8) < (signed int)*(_BYTE *)(a1 + 46) ) return sub_5F9E60(a1, a2); return sub_5F9D30(a2, a1, *(_DWORD *)(a2 + 8)); } //----- (005FA000) -------------------------------------------------------- signed int __cdecl sub_5FA000(__int64 a1) { int v1; // eax@1 int v2; // eax@4 signed int v3; // eax@6 signed int result; // eax@7 int v5; // [sp+4h] [bp-1Ch]@4 char v6; // [sp+10h] [bp-10h]@4 int v7; // [sp+14h] [bp-Ch]@4 int v8; // [sp+18h] [bp-8h]@4 int v9; // [sp+1Ch] [bp-4h]@4 sub_5F9F90(a1, SHIDWORD(a1)); v1 = *HIDWORD(a1); switch ( *HIDWORD(a1) ) { case 1: case 2: case 3: if ( *(_DWORD *)(a1 + 32) > 255 ) goto LABEL_10; if ( v1 == 1 ) { v2 = *(_DWORD *)(a1 + 4); v7 = 2146936064; v8 = v2; v9 = 2146936133; v5 = (int)&v6; } else { v9 = 2146936065; v5 = (int)&v8; v8 = v1 == 2; } v3 = sub_5F94D0((int)&v8, a1, v5); *(_DWORD *)(HIDWORD(a1) + 8) = v3; *HIDWORD(a1) = 4; return v3 | 0x100; case 5: *(_DWORD *)(HIDWORD(a1) + 8) = sub_5F9670(a1, *(double *)(HIDWORD(a1) + 8)); *HIDWORD(a1) = 4; goto LABEL_9; case 4: LABEL_9: v3 = *(_DWORD *)(HIDWORD(a1) + 8); if ( v3 > 255 ) goto LABEL_10; return v3 | 0x100; default: LABEL_10: sub_5F9820(a1, SHIDWORD(a1)); if ( *HIDWORD(a1) != 6 ) goto LABEL_14; result = *(_DWORD *)(HIDWORD(a1) + 8); if ( *(_DWORD *)(HIDWORD(a1) + 16) != *(_DWORD *)(HIDWORD(a1) + 20) ) { if ( result < *(_BYTE *)(a1 + 46) ) { LABEL_14: sub_5F9E60(a1, SHIDWORD(a1)); result = *(_DWORD *)(HIDWORD(a1) + 8); } else { sub_5F9D30(SHIDWORD(a1), a1, *(_DWORD *)(HIDWORD(a1) + 8)); result = *(_DWORD *)(HIDWORD(a1) + 8); } } return result; } } //----- (005FA110) -------------------------------------------------------- signed int __cdecl sub_5FA110(int a1, int a2, int a3) { int v3; // ebx@4 signed int v4; // eax@4 signed int v5; // eax@5 signed int result; // eax@6 signed int v7; // edx@11 if ( *(_DWORD *)a2 == 7 ) { if ( *(_DWORD *)a3 == 6 ) { v7 = *(_DWORD *)(a3 + 8); if ( !(v7 & 0x100) ) { if ( v7 >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); } } result = sub_5F9D30(a3, a1, *(_DWORD *)(a2 + 8)); } else { if ( *(_DWORD *)a2 == 8 ) { v5 = sub_5F9ED0(a1, a3); sub_5F92C0(a1, ((v5 | (*(_DWORD *)(a2 + 8) << 17)) << 6) | 9); } else { if ( *(_DWORD *)a2 == 9 ) { v3 = 2 * (*(_BYTE *)(a2 + 11) == 7) + 8; v4 = sub_5FA000(__PAIR__(a3, a1)); sub_5F92C0(a1, v3 | ((*(_BYTE *)(a2 + 10) | ((v4 | (*(_WORD *)(a2 + 8) << 9)) << 8)) << 6)); } } result = a3; if ( *(_DWORD *)a3 == 6 ) { result = *(_DWORD *)(a3 + 8); if ( !(result & 0x100) ) { if ( result >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); } } } return result; } //----- (005FA1E0) -------------------------------------------------------- signed int __cdecl sub_5FA1E0(int a1, int a2, signed int a3) { signed int v3; // edi@6 int v4; // ecx@10 int v5; // eax@10 signed int v6; // eax@14 signed int result; // eax@14 sub_5F9820(a1, a2); if ( *(_DWORD *)a2 != 6 ) goto LABEL_5; if ( *(_DWORD *)(a2 + 16) != *(_DWORD *)(a2 + 20) ) { if ( *(_DWORD *)(a2 + 8) >= (signed int)*(_BYTE *)(a1 + 46) ) { sub_5F9D30(a2, a1, *(_DWORD *)(a2 + 8)); goto LABEL_6; } LABEL_5: sub_5F9E60(a1, a2); } LABEL_6: v3 = *(_DWORD *)(a2 + 8); if ( *(_DWORD *)a2 == 6 && !(v3 & 0x100) && v3 >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); *(_DWORD *)(a2 + 8) = *(_BYTE *)(a1 + 48); *(_DWORD *)a2 = 6; v4 = *(_DWORD *)a1; v5 = *(_BYTE *)(a1 + 48) + 2; if ( v5 > *(_BYTE *)(*(_DWORD *)a1 + 78) ) { if ( v5 >= 250 ) LOBYTE(v5) = loc_6019A0(*(_DWORD *)(a1 + 12), "function or expression too complex"); *(_BYTE *)(v4 + 78) = v5; } *(_BYTE *)(a1 + 48) += 2; v6 = sub_5FA000(__PAIR__(a3, a1)); sub_5F92C0(a1, ((*(_DWORD *)(a2 + 8) | ((v6 | (v3 << 9)) << 8)) << 6) | 0xC); result = a3; if ( *(_DWORD *)a3 == 6 ) { result = *(_DWORD *)(a3 + 8); if ( !(result & 0x100) ) { if ( result >= *(_BYTE *)(a1 + 46) ) --*(_BYTE *)(a1 + 48); } } return result; } //----- (005FA2D0) -------------------------------------------------------- int __usercall sub_5FA2D0(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // edi@1 int v5; // esi@1 int v6; // edx@2 int v7; // eax@2 int v8; // edi@3 int v9; // ecx@5 int v10; // eax@5 signed int v11; // eax@10 int v13; // [sp+Ch] [bp-4h]@14 v3 = a1; v4 = *(_DWORD *)a1; v5 = a2; if ( *(_DWORD *)a1 != 11 || (v6 = *(_DWORD *)(*(_DWORD *)a2 + 12), v7 = *(_DWORD *)(v6 + 4 * *(_DWORD *)(a1 + 8)), (*(_BYTE *)(v6 + 4 * *(_DWORD *)(v3 + 8)) & 0x3F) != 20) ) { if ( v4 == 6 ) goto LABEL_17; v9 = *(_DWORD *)a2; v10 = *(_BYTE *)(v5 + 48) + 1; if ( v10 > *(_BYTE *)(*(_DWORD *)v5 + 78) ) { if ( v10 >= 250 ) LOBYTE(v10) = loc_6019A0(*(_DWORD *)(v5 + 12), "function or expression too complex"); *(_BYTE *)(v9 + 78) = v10; } ++*(_BYTE *)(v5 + 48); sub_5F9BC0(v5, v3, *(_BYTE *)(v5 + 48) - 1); if ( *(_DWORD *)v3 == 6 ) { LABEL_17: v11 = *(_DWORD *)(v3 + 8); if ( !(v11 & 0x100) && v11 >= *(_BYTE *)(v5 + 46) ) --*(_BYTE *)(v5 + 48); } sub_5F92C0(v5, ((a3 | (*(_DWORD *)(v3 + 8) << 9)) << 14) | 0x3FDC); v8 = *(_DWORD *)(v5 + 28); *(_DWORD *)(v5 + 28) = -1; } else { --*(_DWORD *)(a2 + 20); sub_5F92C0(a2, ((a3 == 0) << 14) | ((v7 & 0xFFB7FFFF | 0x360000u) >> 17)); v8 = *(_DWORD *)(v5 + 28); *(_DWORD *)(v5 + 28) = -1; } v13 = sub_5F92C0(v5, 2147450903); sub_5F9240(v5, &v13, v8); return v13; } //----- (005FA3D0) -------------------------------------------------------- void __cdecl sub_5FA3D0(int a1, int a2) { signed int v2; // eax@2 int v3; // ST08_4@5 sub_5F9820(a1, a2); switch ( *(_DWORD *)a2 ) { case 0xA: sub_5F98F0(a2, a1); v2 = *(_DWORD *)(a2 + 8); break; case 2: case 4: case 5: v2 = -1; break; default: v2 = sub_5FA2D0(a2, a1, 0); break; } sub_5F9240(a1, (int *)(a2 + 20), v2); v3 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a1 + 24) = *(_DWORD *)(a1 + 20); sub_5F9240(a1, (int *)(a1 + 28), v3); *(_DWORD *)(a2 + 16) = -1; } //----- (005FA470) -------------------------------------------------------- void __cdecl sub_5FA470(int a1, int a2) { signed int v2; // eax@4 int v3; // ST08_4@7 sub_5F9820(a1, a2); if ( *(_DWORD *)a2 == 1 || *(_DWORD *)a2 == 3 ) { v2 = -1; } else { if ( *(_DWORD *)a2 == 10 ) v2 = *(_DWORD *)(a2 + 8); else v2 = sub_5FA2D0(a2, a1, 1); } sub_5F9240(a1, (int *)(a2 + 16), v2); v3 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a1 + 24) = *(_DWORD *)(a1 + 20); sub_5F9240(a1, (int *)(a1 + 28), v3); *(_DWORD *)(a2 + 20) = -1; } //----- (005FA4E0) -------------------------------------------------------- int __usercall sub_5FA4E0(int a1, int a2) { int v2; // esi@1 signed int v3; // eax@6 int v4; // edx@10 int v5; // edx@10 int v7; // [sp+0h] [bp-8h]@0 v2 = a1; sub_5F9820(a1, v7); switch ( *(_DWORD *)a2 ) { case 1: case 3: *(_DWORD *)a2 = 2; break; case 2: case 4: case 5: *(_DWORD *)a2 = 3; break; case 0xA: sub_5F98F0(a2, v2); break; case 6: case 0xB: sub_5F9CE0(v2, a2); if ( *(_DWORD *)a2 == 6 ) { v3 = *(_DWORD *)(a2 + 8); if ( !(v3 & 0x100) ) { if ( v3 >= *(_BYTE *)(v2 + 46) ) --*(_BYTE *)(v2 + 48); } } *(_DWORD *)(a2 + 8) = sub_5F92C0(v2, (*(_DWORD *)(a2 + 8) << 23) | 0x14); *(_DWORD *)a2 = 11; break; default: break; } v4 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 16) = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 20) = v4; sub_5F9030(v4, v2); return sub_5F9030(*(_DWORD *)(a2 + 16), v5); } //----- (005FA5A0) -------------------------------------------------------- char __cdecl sub_5FA5A0(unsigned int a1, int a2, unsigned int a3) { __int16 v3; // ax@1 bool v4; // zf@1 char result; // al@1 *(_BYTE *)(a2 + 10) = *(_BYTE *)(a2 + 8); v3 = sub_5FA000(__PAIR__(a3, a1)); v4 = *(_DWORD *)a2 == 8; *(_WORD *)(a2 + 8) = v3; result = v4 + 7; *(_BYTE *)(a2 + 11) = v4 + 7; *(_DWORD *)a2 = 9; return result; } //----- (005FA5E0) -------------------------------------------------------- signed int __usercall sub_5FA5E0(int a1, int a2, int a3, int a4, int a5) { signed int result; // eax@1 int v6; // esi@4 signed int v7; // eax@6 signed int v8; // ecx@8 signed int v9; // ecx@12 signed int v10; // ecx@16 signed int v11; // ecx@20 signed int v12; // [sp+4h] [bp-4h]@4 result = sub_5F9940(a3, a4, a1); if ( !result ) { if ( a3 == 19 || a3 == 21 ) { v6 = a4; v12 = 0; } else { v6 = a4; v12 = sub_5FA000(__PAIR__(a4, a2)); } v7 = sub_5FA000(__PAIR__(a1, a2)); if ( v7 <= v12 ) { if ( *(_DWORD *)v6 == 6 ) { v10 = *(_DWORD *)(v6 + 8); if ( !(v10 & 0x100) ) { if ( v10 >= *(_BYTE *)(a2 + 46) ) --*(_BYTE *)(a2 + 48); } } if ( *(_DWORD *)a1 == 6 ) { v11 = *(_DWORD *)(a1 + 8); if ( !(v11 & 0x100) ) { if ( v11 >= *(_BYTE *)(a2 + 46) ) --*(_BYTE *)(a2 + 48); } } } else { if ( *(_DWORD *)a1 == 6 ) { v8 = *(_DWORD *)(a1 + 8); if ( !(v8 & 0x100) ) { if ( v8 >= *(_BYTE *)(a2 + 46) ) --*(_BYTE *)(a2 + 48); } } if ( *(_DWORD *)v6 == 6 ) { v9 = *(_DWORD *)(v6 + 8); if ( !(v9 & 0x100) ) { if ( v9 >= *(_BYTE *)(a2 + 46) ) --*(_BYTE *)(a2 + 48); } } } *(_DWORD *)(a1 + 8) = sub_5F92C0(a2, a3 | ((v12 | (v7 << 9)) << 14)); *(_DWORD *)a1 = 11; result = *(_DWORD *)(a2 + 20); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 20) + 4 * result - 4) = a5; } return result; } //----- (005FA6E0) -------------------------------------------------------- void __usercall sub_5FA6E0(unsigned int a1, int a2, int a3, int a4, unsigned int a5) { unsigned int v5; // ebx@1 int v6; // esi@1 signed int v7; // edi@1 signed int v8; // eax@1 signed int v9; // ebx@2 unsigned int v10; // ebx@5 signed int v11; // ecx@6 signed int v12; // ecx@11 int v13; // edi@12 v5 = a1; v6 = a2; v7 = sub_5FA000(__PAIR__(a5, a2)); v8 = sub_5FA000(__PAIR__(v5, v6)); if ( *(_DWORD *)v5 == 6 ) { v9 = *(_DWORD *)(v5 + 8); if ( !(v9 & 0x100) ) { if ( v9 >= *(_BYTE *)(v6 + 46) ) --*(_BYTE *)(v6 + 48); } } v10 = a5; if ( *(_DWORD *)a5 == 6 ) { v11 = *(_DWORD *)(a5 + 8); if ( !(v11 & 0x100) ) { if ( v11 >= *(_BYTE *)(v6 + 46) ) --*(_BYTE *)(v6 + 48); } } if ( !a4 && a3 != 24 ) { v12 = v7; v7 = v8; v8 = v12; a4 = 1; } sub_5F92C0(v6, a3 | ((a4 | ((v8 | (v7 << 9)) << 8)) << 6)); v13 = *(_DWORD *)(v6 + 28); *(_DWORD *)(v6 + 28) = -1; a4 = sub_5F92C0(v6, 2147450903); sub_5F9240(v6, &a4, v13); *(_DWORD *)(v10 + 8) = a4; *(_DWORD *)v10 = 10; } //----- (005FA7A0) -------------------------------------------------------- int __cdecl sub_5FA7A0(int a1, int a2, int a3, int a4) { int result; // eax@1 int v5; // [sp+0h] [bp-18h]@1 double v6; // [sp+8h] [bp-10h]@1 int v7; // [sp+10h] [bp-8h]@1 int v8; // [sp+14h] [bp-4h]@1 result = a2; v6 = 0.0; v8 = -1; v7 = -1; v5 = 5; if ( a2 ) { if ( a2 == 1 ) { result = sub_5FA4E0(a1, a3); } else { result = a2 - 2; if ( a2 == 2 ) { sub_5F9ED0(a1, a3); result = sub_5FA5E0(a3, a1, 21, (int)&v5, a4); } } } else { if ( *(_DWORD *)a3 != 5 || *(_DWORD *)(a3 + 16) != -1 || *(_DWORD *)(a3 + 20) != -1 ) { sub_5F9ED0(a1, a3); result = sub_5FA5E0(a3, a1, 19, (int)&v5, a4); } else { *(double *)(a3 + 8) = -*(double *)(a3 + 8); } } return result; } //----- (005FA850) -------------------------------------------------------- void __cdecl sub_5FA850(int a1, int a2, int a3) { switch ( a2 ) { case 13: sub_5FA3D0(a1, a3); break; case 14: sub_5FA470(a1, a3); break; case 6: sub_5F9E60(a1, a3); break; case 0: case 1: case 2: case 3: case 4: case 5: if ( *(_DWORD *)a3 != 5 || *(_DWORD *)(a3 + 16) != -1 || *(_DWORD *)(a3 + 20) != -1 ) sub_5FA000(__PAIR__(a3, a1)); break; default: sub_5FA000(__PAIR__(a3, a1)); break; } } //----- (005FA900) -------------------------------------------------------- void __cdecl sub_5FA900(int a1, int a2, unsigned int a3, unsigned int a4, int a5) { int v5; // eax@6 switch ( a2 ) { case 13: sub_5F9820(a1, a4); sub_5F9240(a1, (int *)(a4 + 20), *(_DWORD *)(a3 + 20)); *(_DWORD *)a3 = *(_DWORD *)a4; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(a3 + 8) = *(_DWORD *)(a4 + 8); *(_DWORD *)(a3 + 12) = *(_DWORD *)(a4 + 12); *(_DWORD *)(a3 + 16) = *(_DWORD *)(a4 + 16); *(_DWORD *)(a3 + 20) = *(_DWORD *)(a4 + 20); break; case 14: sub_5F9820(a1, a4); sub_5F9240(a1, (int *)(a4 + 16), *(_DWORD *)(a3 + 16)); *(_DWORD *)a3 = *(_DWORD *)a4; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(a3 + 8) = *(_DWORD *)(a4 + 8); *(_DWORD *)(a3 + 12) = *(_DWORD *)(a4 + 12); *(_DWORD *)(a3 + 16) = *(_DWORD *)(a4 + 16); *(_DWORD *)(a3 + 20) = *(_DWORD *)(a4 + 20); break; case 6: sub_5F9F90(a1, a4); if ( *(_DWORD *)a4 != 11 || (*(_BYTE *)(*(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * *(_DWORD *)(a4 + 8)) & 0x3F) != 22 ) { sub_5F9E60(a1, a4); sub_5FA5E0(a3, a1, 22, a4, a5); } else { sub_5F94B0(a3, a1); v5 = *(_DWORD *)(*(_DWORD *)a1 + 12) + 4 * *(_DWORD *)(a4 + 8); *(_DWORD *)v5 = (unsigned int)&unk_7FFFFF & *(_DWORD *)v5 | (*(_DWORD *)(a3 + 8) << 23); *(_DWORD *)a3 = 11; *(_DWORD *)(a3 + 8) = *(_DWORD *)(a4 + 8); } break; case 0: case 1: case 2: case 3: case 4: case 5: sub_5FA5E0(a3, a1, a2 + 13, a4, a5); break; case 7: case 8: case 9: sub_5FA6E0(a4, a1, a2 + 17, 1, a3); break; case 10: case 11: case 12: sub_5FA6E0(a4, a1, a2 + 14, 0, a3); break; default: return; } } //----- (005FAAB0) -------------------------------------------------------- void __cdecl sub_5FAAB0(int a1, int a2, int a3) { int v3; // ecx@1 v3 = *(_DWORD *)(a1 + 20); if ( a3 == v3 ) { *(_DWORD *)(a1 + 24) = v3; sub_5F9240(a1, (int *)(a1 + 28), a2); } else { loc_5F90B0(a1, a3, 255, a3); } } //----- (005FAAF0) -------------------------------------------------------- signed int __usercall sub_5FAAF0(int a1, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@2 signed int v5; // eax@6 int v6; // ebx@9 v3 = a1; if ( sub_5F3D20(a3, a1) ) { if ( sub_5F5A90(a3) || sub_5F3E50(a3) ) { sub_5F3D90(a2, a3, v3); v5 = sub_5FD7E0(a3, a2, v3); if ( v5 && v5 != 1 ) { sub_5F3D90(a3, a2, 1); result = -1; } else { v6 = sub_5F3E50(a3); if ( sub_5F3D20(a2, v6 + 1) ) { sub_5F3D90(a3, a2, v6); result = v6; } else { sub_5F3E70(a3, -1 - v6); sub_5F4D30(a2, "too many results to resume", 0x1Au); result = -1; } } } else { sub_5F4D30(a2, "cannot resume dead coroutine", 0x1Cu); result = -1; } } else { sub_5F4D30(a2, "too many arguments to resume", 0x1Cu); result = -1; } return result; } //----- (005FABC0) -------------------------------------------------------- int __cdecl sub_5FABC0(int a1) { int v1; // esi@1 int v2; // eax@3 signed int v3; // esi@3 int result; // eax@4 v1 = sub_5F4B00(a1, 1); if ( !v1 ) sub_5F7800(a1, 1); v2 = sub_5F3E50(a1); v3 = sub_5FAAF0(v2 - 1, a1, v1); if ( v3 >= 0 ) { sub_5F4ED0(a1, 1); sub_5F3F50(a1, -1 - v3); result = v3 + 1; } else { sub_5F4ED0(a1, 0); sub_5F3F50(a1, -2); result = 2; } return result; } //----- (005FAC40) -------------------------------------------------------- signed int __cdecl sub_5FAC40(int a1) { int v1; // esi@1 int v2; // eax@1 signed int result; // eax@1 signed int v4; // esi@1 int v5; // eax@2 v1 = sub_5F4B00(a1, -1001001); v2 = sub_5F3E50(a1); result = sub_5FAAF0(v2, a1, v1); v4 = result; if ( result < 0 ) { LOBYTE(v5) = sub_5F43A0(a1, -1); if ( v5 ) { sub_5F6670(a1, 1); sub_5F3F50(a1, -2); sub_5F5CC0(a1, 2); } loc_5F5C20(a1); result = v4; } return result; } //----- (005FACB0) -------------------------------------------------------- signed int __cdecl sub_5FACB0(int a1) { int v1; // edi@1 sub_5F7960(a1, 1, 6); v1 = sub_608F70(a1); sub_5F4140(a1, 1); sub_5F3D90(a1, v1, 1); return 1; } //----- (005FACF0) -------------------------------------------------------- signed int __cdecl sub_5FACF0(int a1) { int v1; // edi@1 sub_5F7960(a1, 1, 6); v1 = sub_608F70(a1); sub_5F4140(a1, 1); sub_5F3D90(a1, v1, 1); sub_5F4E40(a1, (int)sub_5FAC40, 1); return 1; } //----- (005FAD40) -------------------------------------------------------- int __cdecl sub_5FAD40(int a1) { int v1; // eax@1 v1 = sub_5F3E50(a1); return sub_5FD160(a1, v1, 0, 0); } //----- (005FAD70) -------------------------------------------------------- signed int __cdecl sub_5FAD70(int a1) { int v1; // edi@1 int v2; // eax@5 const void *v4; // [sp-8h] [bp-78h]@4 size_t v5; // [sp-4h] [bp-74h]@4 char v6; // [sp+8h] [bp-68h]@8 unsigned int v7; // [sp+6Ch] [bp-4h]@1 int v8; // [sp+70h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v1 = sub_5F4B00(a1, 1); if ( !v1 ) sub_5F7800(a1, 1); if ( a1 != v1 ) { v2 = sub_5F5A90(v1); if ( v2 ) { if ( v2 != 1 ) { LABEL_7: v5 = 4; v4 = "dead"; goto LABEL_12; } } else { if ( sub_5FBD50(v1, 0, (int)&v6) > 0 ) { v5 = 6; v4 = "normal"; goto LABEL_12; } if ( !sub_5F3E50(v1) ) goto LABEL_7; } v5 = 9; v4 = "suspended"; goto LABEL_12; } v5 = 7; v4 = "running"; LABEL_12: sub_5F4D30(a1, v4, v5); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005FAE20) -------------------------------------------------------- signed int __cdecl sub_5FAE20(int a1) { int v1; // eax@1 LOBYTE(v1) = sub_5F4F10(a1); sub_5F4ED0(a1, v1); return 2; } //----- (005FAE40) -------------------------------------------------------- signed int __cdecl sub_5FAE40(signed int a1) { sub_5F51C0(a1, 0, 6); sub_5F7C40(a1, (int)&off_6FDF74, 0); return 1; } // 6FDF74: using guessed type char *off_6FDF74; //----- (005FAE70) -------------------------------------------------------- signed int __cdecl sub_5FAE70(int a1) { sub_5F4140(a1, -1001000); return 1; } //----- (005FAE90) -------------------------------------------------------- signed int __cdecl sub_5FAE90(int a1) { sub_5F79C0(a1, 1); if ( !sub_5F5210(a1, 1) ) sub_5F4C60(a1); return 1; } //----- (005FAEC0) -------------------------------------------------------- signed int __cdecl sub_5FAEC0(int a1) { int v1; // eax@1 v1 = sub_5F41F0(a1, 2); if ( v1 && v1 != 5 ) sub_5F7800(a1, 2); sub_5F3E70(a1, 2); sub_5F5620(a1, 1); return 1; } //----- (005FAF10) -------------------------------------------------------- signed int __cdecl sub_5FAF10(int a1) { signed int result; // eax@2 if ( sub_5F41F0(a1, 1) == 7 ) { sub_5F5300(a1, 1); result = 1; } else { sub_5F4C60(a1); result = 1; } return result; } //----- (005FAF50) -------------------------------------------------------- signed int __cdecl sub_5FAF50(int a1) { if ( sub_5F41F0(a1, 1) == 2 ) sub_5F7800(a1, 1); sub_5F7960(a1, 1, 7); if ( sub_5F41F0(a1, 2) > 0 ) sub_5F7960(a1, 2, 5); sub_5F3E70(a1, 2); sub_5F5770(a1, 1); return 1; } //----- (005FAFC0) -------------------------------------------------------- int __usercall sub_5FAFC0(int a1, int a2, const void *a3) { int result; // eax@2 if ( a2 == a1 ) { sub_5F4140(a2, -2); sub_5F3EC0(a2, -3); result = sub_5F53F0(a2, -2, a3); } else { sub_5F3D90(a1, a2, 1); result = sub_5F53F0(a2, -2, a3); } return result; } //----- (005FB010) -------------------------------------------------------- int __cdecl sub_5FB010(int a1) { signed int v1; // edi@2 const char *v2; // eax@4 signed int v3; // edi@4 int v4; // ebx@4 int v5; // eax@5 int v6; // edi@5 int v8; // [sp-8h] [bp-84h]@10 int v9; // [sp+Ch] [bp-70h]@4 int v10; // [sp+10h] [bp-6Ch]@2 int v11; // [sp+14h] [bp-68h]@5 const void *v12; // [sp+18h] [bp-64h]@18 const void *v13; // [sp+1Ch] [bp-60h]@18 const void *v14; // [sp+20h] [bp-5Ch]@12 const void *v15; // [sp+24h] [bp-58h]@12 int v16; // [sp+28h] [bp-54h]@14 int v17; // [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 int v25; // [sp+7Ch] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; if ( sub_5F41F0(a1, 1) == 8 ) { v1 = 1; v10 = sub_5F4B00(a1, 1); } else { v1 = 0; v10 = a1; } v9 = v1 + 2; v2 = sub_5F7A50(a1, v1 + 2, "flnStu", 0); v3 = v1 + 1; v4 = (int)v2; if ( sub_5F4310(a1, v3) ) { v5 = sub_5F46F0(a1, v3, 0); v6 = v10; if ( !sub_5FBD50(v10, v5, (int)&v11) ) { sub_5F4C60(a1); return 1; } } else { if ( sub_5F41F0(a1, v3) != 6 ) { v8 = v3; return sub_5F7800(a1, v8); } sub_5F4E10(a1, (int)&off_6FE374, v4); v4 = sub_5F48F0(a1, -1, 0); sub_5F4140(a1, v3); sub_5F3D90(a1, v10, 1); v6 = v10; } if ( !sub_5FC7F0(v6, (const char *)v4, (int)&v11) ) { v8 = v9; return sub_5F7800(a1, v8); } sub_5F51C0(a1, 0, 2); if ( strchr((const char *)v4, 83) ) { sub_5F4D80(a1, v15); sub_5F53F0(a1, -2, "source"); sub_5F4D80(a1, &v23); sub_5F53F0(a1, -2, "short_src"); sub_5F4CC0(a1, v17); sub_5F53F0(a1, -2, "linedefined"); sub_5F4CC0(a1, v18); sub_5F53F0(a1, -2, "lastlinedefined"); sub_5F4D80(a1, v14); sub_5F53F0(a1, -2, "what"); } if ( strchr((const char *)v4, 108) ) { sub_5F4CC0(a1, v16); sub_5F53F0(a1, -2, "currentline"); } if ( strchr((const char *)v4, 117) ) { sub_5F4CC0(a1, v19); sub_5F53F0(a1, -2, "nups"); sub_5F4CC0(a1, v20); sub_5F53F0(a1, -2, "nparams"); sub_5F4ED0(a1, v21); sub_5F53F0(a1, -2, "isvararg"); } if ( strchr((const char *)v4, 110) ) { sub_5F4D80(a1, v12); sub_5F53F0(a1, -2, "name"); sub_5F4D80(a1, v13); sub_5F53F0(a1, -2, "namewhat"); } if ( strchr((const char *)v4, 116) ) { sub_5F4ED0(a1, v22); sub_5F53F0(a1, -2, "istailcall"); } if ( strchr((const char *)v4, 76) ) sub_5FAFC0(v6, a1, "activelines"); if ( strchr((const char *)v4, 102) ) sub_5FAFC0(v6, a1, "func"); return 1; } // 6FE374: using guessed type void *off_6FE374; // 86FEB8: using guessed type int __security_cookie; //----- (005FB310) -------------------------------------------------------- int __cdecl sub_5FB310(int a1) { signed int v1; // edi@2 int v2; // ebx@2 signed int v3; // eax@4 signed int v4; // edi@4 int v5; // eax@5 int v6; // eax@6 int v8; // edi@8 int v9; // [sp+Ch] [bp-6Ch]@4 char v10; // [sp+10h] [bp-68h]@6 unsigned int v11; // [sp+74h] [bp-4h]@1 int v12; // [sp+78h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; if ( sub_5F41F0(a1, 1) == 8 ) { v1 = 1; v2 = sub_5F4B00(a1, 1); } else { v1 = 0; v2 = a1; } v3 = sub_5F7B50(a1, v1 + 2); v4 = v1 + 1; v9 = v3; if ( sub_5F41F0(a1, v4) == 6 ) { sub_5F4140(a1, v4); v5 = sub_5FBE40(a1, 0, v9); sub_5F4D80(a1, (const void *)v5); } else { v6 = sub_5F7B50(a1, v4); if ( !sub_5FBD50(v2, v6, (int)&v10) ) return sub_5F7800(a1, v4); v8 = sub_5FBE40(v2, (int)&v10, v9); if ( v8 ) { sub_5F3D90(v2, a1, 1); sub_5F4D80(a1, (const void *)v8); sub_5F4140(a1, -2); return 2; } sub_5F4C60(a1); } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005FB430) -------------------------------------------------------- int __cdecl sub_5FB430(int a1) { signed int v1; // edi@2 int v2; // ebx@2 int v3; // eax@4 int result; // eax@5 int v5; // eax@6 int v6; // eax@6 char v7; // [sp+10h] [bp-68h]@4 unsigned int v8; // [sp+74h] [bp-4h]@1 int v9; // [sp+78h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; if ( sub_5F41F0(a1, 1) == 8 ) { v1 = 1; v2 = sub_5F4B00(a1, 1); } else { v1 = 0; v2 = a1; } v3 = sub_5F7B50(a1, v1 + 1); if ( sub_5FBD50(v2, v3, (int)&v7) ) { sub_5F79C0(a1, v1 + 3); sub_5F3E70(a1, v1 + 3); sub_5F3D90(a1, v2, 1); v5 = sub_5F7B50(a1, v1 + 2); v6 = sub_5FBEB0(v2, (int)&v7, v5); sub_5F4D80(a1, (const void *)v6); result = 1; } else { result = sub_5F7800(a1, v1 + 1); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005FB510) -------------------------------------------------------- int __cdecl sub_5FB510(int a1) { signed int v1; // edi@1 int result; // eax@1 v1 = sub_5F7B50(a1, 2); sub_5F7960(a1, 1, 6); result = sub_5F5E80(a1, 1, v1); if ( result ) { sub_5F4D80(a1, (const void *)result); sub_5F3F50(a1, -2); result = 2; } return result; } //----- (005FB560) -------------------------------------------------------- int __cdecl sub_5FB560(int a1) { signed int v1; // edi@1 int result; // eax@1 sub_5F79C0(a1, 3); v1 = sub_5F7B50(a1, 2); sub_5F7960(a1, 1, 6); result = sub_5F5F70(a1, 1, v1); if ( result ) { sub_5F4D80(a1, (const void *)result); sub_5F3F50(a1, -1); result = 1; } return result; } //----- (005FB5C0) -------------------------------------------------------- signed int __cdecl sub_5FB5C0(int a1) { int v1; // edi@1 int v2; // eax@4 int v4; // [sp+8h] [bp-68h]@1 unsigned __int8 v5; // [sp+28h] [bp-48h]@2 unsigned int v6; // [sp+6Ch] [bp-4h]@1 int v7; // [sp+70h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v1 = sub_5F7B50(a1, 2); sub_5F7960(a1, 1, 6); sub_5F4140(a1, 1); sub_5FC7F0(a1, ">u", (int)&v4); if ( v1 < 1 || v1 > v5 ) sub_5F7800(a1, 2); v2 = sub_5F60B0(a1, 1, v1); sub_5F4EF0(a1, v2); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (005FB650) -------------------------------------------------------- int __cdecl sub_5FB650(int a1) { int v1; // ebx@1 int v2; // edi@4 int v3; // eax@7 int v4; // eax@9 int v6; // [sp+Ch] [bp-68h]@1 unsigned __int8 v7; // [sp+2Ch] [bp-48h]@2 unsigned int v8; // [sp+70h] [bp-4h]@1 int v9; // [sp+74h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = sub_5F7B50(a1, 2); sub_5F7960(a1, 1, 6); sub_5F4140(a1, 1); sub_5FC7F0(a1, ">u", (int)&v6); if ( v1 < 1 || v1 > v7 ) sub_5F7800(a1, 2); v2 = sub_5F7B50(a1, 4); sub_5F7960(a1, 3, 6); sub_5F4140(a1, 3); sub_5FC7F0(a1, ">u", (int)&v6); if ( v2 < 1 || v2 > v7 ) sub_5F7800(a1, 4); LOBYTE(v3) = sub_5F4290(a1, 1); if ( v3 ) sub_5F7800(a1, 1); LOBYTE(v4) = sub_5F4290(a1, 3); if ( v4 ) sub_5F7800(a1, 3); sub_5F61D0(a1, 1, v1, 3, v2); return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (005FB760) -------------------------------------------------------- int __cdecl sub_5FB760(int a1, int a2) { int result; // eax@1 signed int v3; // eax@2 sub_5F7290(a1, -1001000, "_HKEY"); sub_5F4F10(a1); sub_5F50C0(a1, -2); result = sub_5F41F0(a1, -1); if ( result == 6 ) { sub_5F4D80(a1, off_6FE1E8[*(_DWORD *)a2]); v3 = *(_DWORD *)(a2 + 20); if ( v3 < 0 ) { sub_5F4C60(a1); result = sub_5F5850(a1, 2, 0, 0, 0); } else { sub_5F4CC0(a1, v3); result = sub_5F5850(a1, 2, 0, 0, 0); } } return result; } // 6FE1E8: using guessed type char *off_6FE1E8[5]; //----- (005FB7F0) -------------------------------------------------------- int __cdecl sub_5FB7F0(int a1) { signed int v1; // edi@2 signed int v2; // ebx@4 signed int v3; // edi@6 int v5; // [sp+Ch] [bp-10h]@5 int v6; // [sp+10h] [bp-Ch]@2 int v7; // [sp+14h] [bp-8h]@5 int v8; // [sp+18h] [bp-4h]@5 int v9; // [sp+18h] [bp-4h]@6 if ( sub_5F41F0(a1, 1) == 8 ) { v1 = 1; v6 = sub_5F4B00(a1, 1); } else { v1 = 0; v6 = a1; } v2 = v1 + 1; if ( sub_5F41F0(a1, v1 + 1) > 0 ) { v9 = sub_5F79F0(a1, v1 + 2, 0); sub_5F7960(a1, v1 + 1, 6); v7 = sub_5F7C10(a1, v1 + 3, 0); v5 = (int)sub_5FB760; v3 = 0; if ( strchr((const char *)v9, 99) ) v3 = 1; if ( strchr((const char *)v9, 114) ) v3 |= 2u; if ( strchr((const char *)v9, 108) ) v3 |= 4u; if ( v7 > 0 ) v3 |= 8u; v8 = v3; } else { sub_5F3E70(a1, v1 + 1); v5 = 0; v8 = 0; v7 = 0; } if ( !sub_5F7290(a1, -1001000, "_HKEY") ) { sub_5F4D80(a1, "k"); sub_5F53F0(a1, -2, "__mode"); sub_5F4140(a1, -1); sub_5F5620(a1, -2); } sub_5F4F10(v6); sub_5F3D90(v6, a1, 1); sub_5F4140(a1, v2); sub_5F5490(a1, -3); sub_5FBCE0(v6, v5, v8, v7); return 0; } //----- (005FB950) -------------------------------------------------------- signed int __cdecl sub_5FB950(int a1) { int v1; // edi@2 char v2; // bl@4 int v3; // eax@4 signed int v4; // eax@8 int v5; // eax@14 char v7[8]; // [sp+8h] [bp-Ch]@9 unsigned int v8; // [sp+10h] [bp-4h]@1 int v9; // [sp+14h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; if ( sub_5F41F0(a1, 1) == 8 ) v1 = sub_5F4B00(a1, 1); else v1 = a1; v2 = sub_5FBD30(v1); v3 = sub_5FBD20(v1); if ( v3 && (int (__cdecl *)(int, int))v3 != sub_5FB760 ) { sub_5F4D30(a1, "external hook", 0xDu); } else { sub_5F7290(a1, -1001000, "_HKEY"); sub_5F4F10(v1); sub_5F3D90(v1, a1, 1); sub_5F50C0(a1, -2); sub_5F3EC0(a1, -2); } v4 = 0; if ( v2 & 1 ) { v7[0] = 99; v4 = 1; } if ( v2 & 2 ) v7[v4++] = 114; if ( v2 & 4 ) v7[v4++] = 108; v7[v4] = 0; sub_5F4D80(a1, v7); v5 = sub_5FBD40(v1); sub_5F4CC0(a1, v5); return 3; } // 86FEB8: using guessed type int __security_cookie; // 5FB950: using guessed type char var_C[8]; //----- (005FBA50) -------------------------------------------------------- int __cdecl sub_5FBA50(int a1) { void **v1; // eax@1 void **v2; // eax@1 void **v3; // eax@1 char *v4; // eax@3 char v5; // cl@4 int v6; // ST18_4@7 void **v7; // eax@7 void **v8; // eax@7 void **v9; // eax@8 void **v10; // eax@8 void **v11; // eax@8 char v13; // [sp+4h] [bp-100h]@1 _BYTE v14[3]; // [sp+5h] [bp-FFh]@5 unsigned int v15; // [sp+100h] [bp-4h]@1 int v16; // [sp+104h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v1 = sub_6586FE(); fprintf((FILE *)v1 + 2, "%s", "lua_debug> "); v2 = sub_6586FE(); fflush((FILE *)v2 + 2); v3 = sub_6586FE(); if ( fgets(&v13, 250, (FILE *)v3) ) { do { if ( !strcmp(&v13, "cont\n") ) break; v4 = &v13; do v5 = *v4++; while ( v5 ); if ( sub_5F6FE0(a1, (int)&v13, v4 - v14, (int)"=(debug command)", 0) || sub_5F58D0(a1, 0, 0, 0, 0, 0) ) { v6 = sub_5F48F0(a1, -1, 0); v7 = sub_6586FE(); fprintf((FILE *)v7 + 2, "%s\n", v6); v8 = sub_6586FE(); fflush((FILE *)v8 + 2); } sub_5F3E70(a1, 0); v9 = sub_6586FE(); fprintf((FILE *)v9 + 2, "%s", "lua_debug> "); v10 = sub_6586FE(); fflush((FILE *)v10 + 2); v11 = sub_6586FE(); } while ( fgets(&v13, 250, (FILE *)v11) ); } return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (005FBBD0) -------------------------------------------------------- signed int __cdecl sub_5FBBD0(int a1) { signed int v1; // edi@2 int v2; // ebx@2 signed int result; // eax@6 int v4; // eax@7 int v5; // [sp+Ch] [bp-8h]@4 signed int v6; // [sp+10h] [bp-4h]@4 if ( sub_5F41F0(a1, 1) == 8 ) { v1 = 1; v2 = sub_5F4B00(a1, 1); } else { v1 = 0; v2 = a1; } v6 = v1 + 1; v5 = sub_5F48F0(a1, v1 + 1, 0); if ( v5 || sub_5F41F0(a1, v6) <= 0 ) { v4 = sub_5F7C10(a1, v1 + 2, a1 == v2); sub_5F6510(a1, v2, v5, v4); result = 1; } else { sub_5F4140(a1, v6); result = 1; } return result; } //----- (005FBC80) -------------------------------------------------------- signed int __cdecl sub_5FBC80(signed int a1) { sub_5F51C0(a1, 0, 16); sub_5F7C40(a1, (int)&off_6FE200, 0); return 1; } // 6FE200: using guessed type char *off_6FE200; //----- (005FBCB0) -------------------------------------------------------- int __thiscall sub_5FBCB0(void *this) { int result; // eax@2 if ( *(_DWORD *)(*(_DWORD *)(**(_DWORD **)this + 12) + 20) ) result = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(**(_DWORD **)this + 12) + 20) + 4 * ((*((_DWORD *)this + 7) - *(_DWORD *)(*(_DWORD *)(**(_DWORD **)this + 12) + 12)) >> 2) - 4); else result = 0; return result; } //----- (005FBCE0) -------------------------------------------------------- signed int __cdecl sub_5FBCE0(int a1, int a2, int a3, int a4) { int v4; // esi@1 char v5; // dl@2 int v6; // ecx@4 v4 = a2; if ( !a2 || (v5 = a3, !a3) ) { v5 = 0; v4 = 0; } v6 = *(_DWORD *)(a1 + 16); if ( *(_BYTE *)(v6 + 18) & 1 ) *(_DWORD *)(a1 + 20) = *(_DWORD *)(v6 + 28); *(_DWORD *)(a1 + 52) = v4; *(_DWORD *)(a1 + 44) = a4; *(_DWORD *)(a1 + 48) = a4; *(_BYTE *)(a1 + 40) = v5; return 1; } //----- (005FBD20) -------------------------------------------------------- int __cdecl sub_5FBD20(int a1) { return *(_DWORD *)(a1 + 52); } //----- (005FBD30) -------------------------------------------------------- int __cdecl sub_5FBD30(int a1) { return *(_BYTE *)(a1 + 40); } //----- (005FBD40) -------------------------------------------------------- int __cdecl sub_5FBD40(int a1) { return *(_DWORD *)(a1 + 44); } //----- (005FBD50) -------------------------------------------------------- signed int __cdecl sub_5FBD50(int a1, int a2, int a3) { int v3; // eax@1 signed int result; // eax@2 int v5; // ecx@3 bool v6; // zf@3 v3 = a2; if ( a2 >= 0 ) { v5 = *(_DWORD *)(a1 + 16); v6 = a2 == 0; if ( a2 > 0 ) { do { if ( v5 == a1 + 72 ) break; v5 = *(_DWORD *)(v5 + 8); --v3; } while ( v3 > 0 ); v6 = v3 == 0; } if ( v6 && v5 != a1 + 72 ) { result = 1; *(_DWORD *)(a3 + 96) = v5; } else { result = 0; } } else { result = 0; } return result; } //----- (005FBDA0) -------------------------------------------------------- int __usercall sub_5FBDA0(int a1, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ecx@3 int result; // eax@4 int v7; // ebx@5 int v8; // eax@7 v4 = a1; if ( *(_BYTE *)(a2 + 18) & 1 ) { if ( a1 < 0 ) { v5 = *(_BYTE *)(*(_DWORD *)(**(_DWORD **)a2 + 12) + 76); if ( -a1 < ((*(_DWORD *)(a2 + 24) - *(_DWORD *)a2) >> 3) - v5 ) { *(_DWORD *)a4 = *(_DWORD *)a2 + 8 * (v5 - a1); return (int)"(*vararg)"; } return 0; } v7 = *(_DWORD *)(a2 + 24); result = sub_5FE1E0( *(_DWORD *)(**(_DWORD **)a2 + 12), a1, ((*(_DWORD *)(a2 + 28) - *(_DWORD *)(*(_DWORD *)(**(_DWORD **)a2 + 12) + 12)) >> 2) - 1); if ( result ) { LABEL_13: *(_DWORD *)a4 = v7 + 8 * v4 - 8; return result; } } else { v7 = *(_DWORD *)a2 + 8; } if ( a2 == *(_DWORD *)(a3 + 16) ) v8 = *(_DWORD *)(a3 + 8); else v8 = **(_DWORD **)(a2 + 12); if ( (v8 - v7) >> 3 >= v4 && v4 > 0 ) { result = (int)"(*temporary)"; goto LABEL_13; } return 0; } //----- (005FBE40) -------------------------------------------------------- int __cdecl sub_5FBE40(int a1, int a2, int a3) { int v3; // eax@2 int result; // eax@3 int v5; // esi@5 int v6; // edx@6 int v7; // ecx@6 if ( a2 ) { v5 = *(_DWORD *)(a2 + 96); a2 = 0; result = sub_5FBDA0(a3, v5, a1, (int)&a2); if ( result ) { v6 = a2; v7 = *(_DWORD *)(a1 + 8); *(_DWORD *)v7 = *(_DWORD *)a2; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(a1 + 8) += 8; } } else { v3 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(v3 - 4) == 2146936134 ) result = sub_5FE1E0(*(_DWORD *)(*(_DWORD *)(v3 - 8) + 12), a3, 0); else result = 0; } return result; } //----- (005FBEB0) -------------------------------------------------------- int __cdecl sub_5FBEB0(int a1, int a2, int a3) { int v3; // esi@1 int result; // eax@1 int v5; // ecx@2 int v6; // edx@2 int v7; // [sp+8h] [bp-4h]@1 v3 = *(_DWORD *)(a2 + 96); v7 = 0; result = sub_5FBDA0(a3, v3, a1, (int)&v7); if ( result ) { v5 = *(_DWORD *)(a1 + 8); v6 = v7; *(_DWORD *)v7 = *(_DWORD *)(v5 - 8); *(_DWORD *)(v6 + 4) = *(_DWORD *)(v5 - 4); } *(_DWORD *)(a1 + 8) -= 8; return result; } //----- (005FBF00) -------------------------------------------------------- char __usercall sub_5FBF00(int a1, int a2) { int v2; // ecx@3 int v3; // edx@3 int v4; // edx@4 int v5; // edx@6 char v6[4]; // ecx@6 void *v7; // edx@8 char result; // al@8 void *v9; // edx@9 if ( a2 && *(_BYTE *)(a2 + 4) != 38 ) { v2 = *(_DWORD *)(a2 + 12); v3 = *(_DWORD *)(v2 + 36); if ( v3 ) v4 = v3 + 16; else v4 = (int)"=?"; *(_DWORD *)(a1 + 16) = v4; v5 = *(_DWORD *)(v2 + 64); *(_DWORD *)(a1 + 24) = v5; *(_DWORD *)(a1 + 28) = *(_DWORD *)(v2 + 68); *(_DWORD *)v6 = byte_6C5D2C; if ( v5 ) *(_DWORD *)v6 = "Lua"; v7 = *(void **)(a1 + 16); *(_DWORD *)(a1 + 12) = *(_DWORD *)v6; result = sub_604B40((void *)(a1 + 36), v7, 0x3Cu); } else { *(_DWORD *)(a1 + 16) = "=[C]"; v9 = *(void **)(a1 + 16); *(_DWORD *)(a1 + 24) = -1; *(_DWORD *)(a1 + 28) = -1; *(_DWORD *)(a1 + 12) = "C"; result = sub_604B40((void *)(a1 + 36), v9, 0x3Cu); } return result; } //----- (005FBF80) -------------------------------------------------------- int __usercall sub_5FBF80(int a1, int a2) { int v2; // eax@3 int v3; // ecx@3 int v4; // edx@3 int result; // eax@5 int v6; // edi@5 int v7; // [sp+0h] [bp-10h]@5 int v8; // [sp+4h] [bp-Ch]@5 int v9; // [sp+8h] [bp-8h]@3 int v10; // [sp+Ch] [bp-4h]@3 if ( a1 && *(_BYTE *)(a1 + 4) != 38 ) { v10 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 20); v2 = sub_60BE10(a2); v3 = *(_DWORD *)(a2 + 8); *(_DWORD *)v3 = v2; *(_DWORD *)(v3 + 4) = 2146936133; *(_DWORD *)(a2 + 8) += 8; v4 = *(_DWORD *)(a2 + 24) - *(_DWORD *)(a2 + 8); v9 = v2; if ( (v4 & 0xFFFFFFF8) <= 0 ) sub_5FCD00(a2, 0); result = *(_DWORD *)(a1 + 12); v6 = 0; v7 = 1; v8 = 2146936065; if ( *(_DWORD *)(result + 52) > 0 ) { do result = sub_60C6F0(a2, v9, *(_DWORD *)(v10 + 4 * v6++), (int)&v7); while ( v6 < *(_DWORD *)(*(_DWORD *)(a1 + 12) + 52) ); } } else { result = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 4) = 2146936064; *(_DWORD *)(a2 + 8) += 8; if ( ((*(_DWORD *)(a2 + 24) - *(_DWORD *)(a2 + 8)) & 0xFFFFFFF8) <= 0 ) result = sub_5FCD00(a2, 0); } return result; } //----- (005FC050) -------------------------------------------------------- int __usercall sub_5FC050(int a1, int a2, int a3, int a4) { int v4; // ecx@2 int v5; // eax@2 int v6; // edx@2 int result; // eax@2 if ( a1 & 0x100 ) { v4 = *(_DWORD *)(a2 + 8); v5 = a1 & 0xFFFFFEFF; v6 = *(_DWORD *)(v4 + 8 * v5 + 4); result = v4 + 8 * v5; if ( (v6 | 0x70) == 2146936180 ) { result = *(_DWORD *)result + 16; *(_DWORD *)a3 = result; return result; } goto LABEL_6; } result = sub_5FC180(a2, a4, a1, a3); if ( !result || *(_BYTE *)result != 99 ) LABEL_6: *(_DWORD *)a3 = "?"; return result; } // 5FC180: using guessed type _DWORD __cdecl sub_5FC180(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FC0A0) -------------------------------------------------------- signed int __usercall sub_5FC0A0(int a1, int a2, int a3) { int v3; // edi@1 unsigned int v4; // ecx@3 int v5; // esi@3 int v6; // edx@3 int v7; // ecx@10 int v8; // edx@10 signed int result; // eax@17 int v10; // [sp+4h] [bp-8h]@2 signed int v11; // [sp+8h] [bp-4h]@1 v3 = 0; v11 = -1; if ( a3 <= 0 ) { result = -1; } else { v10 = *(_DWORD *)(a2 + 12); do { v4 = *(_DWORD *)(v10 + 4 * v3); v5 = *(_DWORD *)(v10 + 4 * v3) & 0x3F; v6 = (*(_DWORD *)(v10 + 4 * v3) >> 6) & 0xFF; switch ( v5 ) { case 4: if ( v6 <= a1 && a1 <= (signed int)(v6 + (v4 >> 23)) ) goto LABEL_15; break; case 34: v6 += 2; goto LABEL_8; case 29: case 30: LABEL_8: if ( a1 >= v6 ) goto LABEL_15; break; case 23: v7 = (v4 >> 14) - 131071; v8 = v7 + v3 + 1; if ( v3 < v8 && v8 <= a3 ) v3 += v7; break; default: if ( byte_6FF424[v5] & 0x40 ) goto LABEL_14; break; case 27: LABEL_14: if ( a1 == v6 ) LABEL_15: v11 = v3; break; } ++v3; } while ( v3 < a3 ); result = v11; } return result; } //----- (005FC180) -------------------------------------------------------- int __cdecl sub_5FC180(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@1 int v6; // eax@1 signed int v7; // eax@2 int v8; // edx@3 unsigned int v9; // eax@3 int v10; // ecx@3 int v11; // eax@5 int result; // eax@6 int v13; // edx@7 unsigned int v14; // eax@7 int v15; // eax@8 int v16; // eax@9 bool v17; // zf@14 int v18; // eax@16 unsigned int v19; // eax@20 int v20; // ecx@22 int v21; // edx@22 int v22; // eax@22 int v23; // [sp+Ch] [bp-4h]@7 const char *v24; // [sp+20h] [bp+10h]@10 v4 = a3; v5 = a2; v6 = sub_5FE1E0(a1, a3 + 1, a2); *(_DWORD *)a4 = v6; if ( v6 ) { LABEL_6: result = (int)"local"; } else { while ( 2 ) { v7 = sub_5FC0A0(v4, a1, v5); v5 = v7; if ( v7 == -1 ) { LABEL_25: result = 0; } else { v8 = *(_DWORD *)(a1 + 12); v9 = *(_DWORD *)(v8 + 4 * v7); v10 = *(_DWORD *)(v8 + 4 * v5) & 0x3F; switch ( v10 ) { case 0: if ( (signed int)(v9 >> 23) >= (signed int)((v9 >> 6) & 0xFF) ) goto LABEL_25; v4 = v9 >> 23; v11 = sub_5FE1E0(a1, (v9 >> 23) + 1, v5); *(_DWORD *)a4 = v11; if ( v11 ) goto LABEL_6; continue; case 6: case 7: v13 = (v9 >> 14) & 0x1FF; v14 = v9 >> 23; v23 = v13; if ( v10 == 7 ) { v15 = sub_5FE1E0(a1, v14 + 1, v5); } else { v16 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 8 * v14); if ( !v16 ) { v24 = "?"; goto LABEL_13; } v15 = v16 + 16; } v24 = (const char *)v15; LABEL_13: sub_5FC050(v23, a1, a4, v5); if ( !v24 || (v17 = strcmp(v24, "_ENV") == 0, result = (int)"global", !v17) ) result = (int)"field"; break; case 5: v18 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 8 * (v9 >> 23)); if ( v18 ) { *(_DWORD *)a4 = v18 + 16; result = (int)"upvalue"; } else { *(_DWORD *)a4 = "?"; result = (int)"upvalue"; } return result; case 1: case 2: if ( v10 == 1 ) v19 = v9 >> 14; else v19 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v5 + 4) >> 6; v20 = *(_DWORD *)(a1 + 8); v21 = *(_DWORD *)(v20 + 8 * v19 + 4); v22 = v20 + 8 * v19; if ( (v21 | 0x70) != 2146936180 ) goto LABEL_25; *(_DWORD *)a4 = *(_DWORD *)v22 + 16; return (int)"constant"; case 12: sub_5FC050((v9 >> 14) & 0x1FF, a1, a4, v5); return (int)"method"; default: goto LABEL_25; } } break; } } return result; } // 5FC180: using guessed type _DWORD __cdecl sub_5FC180(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FC380) -------------------------------------------------------- int __usercall sub_5FC380(int a1, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 unsigned int v5; // ecx@1 int v6; // eax@1 int result; // eax@2 signed int v8; // eax@4 v3 = *(_DWORD *)(**(_DWORD **)a1 + 12); v4 = (*(_DWORD *)(a1 + 28) - *(_DWORD *)(v3 + 12)) >> 2; v5 = *(_DWORD *)(*(_DWORD *)(v3 + 12) + 4 * v4 - 4); v6 = v4 - 1; switch ( v5 & 0x3F ) { case 0x1Du: case 0x1Eu: return sub_5FC180(v3, v6, (v5 >> 6) & 0xFF, a2); case 0x22u: *(_DWORD *)a2 = "for iterator"; return (int)"for iterator"; case 6u: case 7u: case 0xCu: v8 = 0; goto LABEL_18; case 8u: case 0xAu: v8 = 1; goto LABEL_18; case 0x18u: v8 = 5; goto LABEL_18; case 0xDu: v8 = 6; goto LABEL_18; case 0xEu: v8 = 7; goto LABEL_18; case 0xFu: v8 = 8; goto LABEL_18; case 0x10u: v8 = 9; goto LABEL_18; case 0x11u: v8 = 10; goto LABEL_18; case 0x12u: v8 = 11; goto LABEL_18; case 0x13u: v8 = 12; goto LABEL_18; case 0x15u: v8 = 4; goto LABEL_18; case 0x19u: v8 = 13; goto LABEL_18; case 0x1Au: v8 = 14; goto LABEL_18; case 0x16u: v8 = 15; LABEL_18: *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)(a3 + 12) + 4 * v8 + 168) + 16; result = (int)"metamethod"; break; default: result = 0; break; } return result; } // 5FC180: using guessed type _DWORD __cdecl sub_5FC180(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FC4D0) -------------------------------------------------------- int __usercall sub_5FC4D0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 int v6; // edx@2 int result; // eax@5 int v8; // eax@6 v3 = **(_DWORD **)a1; v4 = *(_BYTE *)(v3 + 6); v5 = 0; if ( v4 <= 0 ) { LABEL_5: result = 0; } else { v6 = v3 + 16; while ( *(_DWORD *)(*(_DWORD *)v6 + 8) != a2 ) { ++v5; v6 += 4; if ( v5 >= v4 ) goto LABEL_5; } v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 12) + 28) + 8 * v5); if ( v8 ) { *(_DWORD *)a3 = v8 + 16; result = (int)"upvalue"; } else { *(_DWORD *)a3 = "?"; result = (int)"upvalue"; } } return result; } //----- (005FC530) -------------------------------------------------------- int __usercall sub_5FC530(int a1) { int result; // eax@1 int v2; // edx@2 __int16 v3; // [sp+0h] [bp-40h]@3 unsigned int v4; // [sp+3Ch] [bp-4h]@1 int v5; // [sp+40h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; result = *(_DWORD *)(a1 + 16); if ( *(_BYTE *)(result + 18) & 1 ) { v2 = *(_DWORD *)(*(_DWORD *)(**(_DWORD **)result + 12) + 36); if ( v2 ) sub_604B40(&v3, (void *)(v2 + 16), 0x3Cu); else v3 = 63; result = sub_604B20(a1, (int)"%s:%d: %s", (unsigned int)&v3); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005FC670) -------------------------------------------------------- signed int __usercall sub_5FC670(int a1, int a2, int a3, int a4, int a5) { char v5; // al@1 char v6; // al@9 int v7; // eax@20 int v8; // eax@26 signed int result; // eax@27 signed int v10; // [sp+0h] [bp-4h]@1 v5 = *(_BYTE *)a4; v10 = 1; if ( *(_BYTE *)a4 ) { do { switch ( v5 ) { case 83: sub_5FBF00(a2, a5); break; case 108: if ( a1 && *(_BYTE *)(a1 + 18) & 1 ) *(_DWORD *)(a2 + 20) = sub_5FBCB0((void *)a1); else *(_DWORD *)(a2 + 20) = -1; break; case 117: if ( a5 ) v6 = *(_BYTE *)(a5 + 6); else v6 = 0; *(_BYTE *)(a2 + 32) = v6; if ( a5 && *(_BYTE *)(a5 + 4) != 38 ) { *(_BYTE *)(a2 + 34) = *(_BYTE *)(*(_DWORD *)(a5 + 12) + 77); *(_BYTE *)(a2 + 33) = *(_BYTE *)(*(_DWORD *)(a5 + 12) + 76); } else { *(_WORD *)(a2 + 33) = 256; } break; case 116: if ( a1 ) *(_BYTE *)(a2 + 35) = *(_BYTE *)(a1 + 18) & 0x40; else *(_BYTE *)(a2 + 35) = 0; break; case 110: if ( a1 && !(*(_BYTE *)(a1 + 18) & 0x40) && (v7 = *(_DWORD *)(a1 + 8), *(_BYTE *)(v7 + 18) & 1) ) *(_DWORD *)(a2 + 8) = sub_5FC380(v7, a2 + 4, a3); else *(_DWORD *)(a2 + 8) = 0; if ( !*(_DWORD *)(a2 + 8) ) { *(_DWORD *)(a2 + 8) = byte_6A492E; *(_DWORD *)(a2 + 4) = 0; } break; default: v10 = 0; break; case 76: case 102: break; } v8 = a4 + 1; a4 = v8; v5 = *(_BYTE *)v8; } while ( v5 ); result = v10; } else { result = 1; } return result; } //----- (005FC7F0) -------------------------------------------------------- signed int __cdecl sub_5FC7F0(int a1, const char *a2, int a3) { const char *v3; // esi@1 int v4; // eax@2 int v5; // ebx@2 int v6; // ecx@4 signed int v7; // ebx@9 int v8; // eax@10 signed int result; // eax@13 int v10; // [sp+10h] [bp-8h]@7 int v11; // [sp+14h] [bp-4h]@2 v3 = a2; if ( *a2 == 62 ) { v4 = *(_DWORD *)(a1 + 8) - 8; v5 = 0; v3 = a2 + 1; v11 = v4; ++a2; *(_DWORD *)(a1 + 8) = v4; } else { v5 = *(_DWORD *)(a3 + 96); v11 = *(_DWORD *)v5; v4 = *(_DWORD *)v5; } v6 = *(_DWORD *)(v4 + 4); if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v6) = 3; if ( (v6 & 0x1F) == 6 ) v10 = *(_DWORD *)v4; else v10 = 0; v7 = sub_5FC670(v5, a3, a1, (int)v3, v10); if ( strchr(a2, 102) ) { v8 = *(_DWORD *)(a1 + 8); *(_DWORD *)v8 = *(_DWORD *)v11; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)(a1 + 8) += 8; if ( ((*(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(a1, 0); } if ( strchr(a2, 76) ) { sub_5FBF80(v10, a1); result = v7; } else { result = v7; } return result; } //----- (005FC9F0) -------------------------------------------------------- void __cdecl sub_5FC9F0(int a1, int a2, int a3) { bool v3; // zf@1 int v4; // eax@1 char v5; // [sp+4h] [bp-8h]@1 v3 = sub_60DAD0(a2, (int)&v5) == 0; v4 = a2; if ( !v3 ) v4 = a3; loc_5FC8E0(a1, v4, "perform arithmetic on"); __debugbreak(); JUMPOUT(*(int *)sub_5FCA20); } //----- (005FCA20) -------------------------------------------------------- void __cdecl sub_5FCA20(int a1, int a2, int a3) { int v3; // eax@1 int v4; // ecx@3 int v5; // eax@3 int v6; // ecx@5 v3 = *(_DWORD *)(a2 + 4); if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = *(_DWORD *)(a3 + 4); v5 = (int)*(&off_6FFEA8 + (v3 & 0xF)); if ( (*(_DWORD *)(a3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; v6 = (int)*(&off_6FFEA8 + (v4 & 0xF)); if ( v5 == v6 ) v5 = loc_5FC640(a1, "attempt to compare two %s values", v5); loc_5FC640(a1, "attempt to compare %s with %s", v5, v6); __debugbreak(); JUMPOUT(*(int *)sub_5FCAA0); } // 6FFEA8: using guessed type void *off_6FFEA8; //----- (005FCAA0) -------------------------------------------------------- int __usercall sub_5FCAA0(int a1, int a2, int a3) { int v3; // eax@1 int v4; // esi@1 int result; // eax@3 int v6; // eax@4 v3 = a1 - 4; v4 = a2; if ( v3 ) { if ( v3 == 2 ) { v6 = sub_609580(a3, "error in error handling", 0x17u); *(_DWORD *)v4 = v6; result = *(_BYTE *)(v6 + 4) | 0x7FF7A540; *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(a3 + 8) = v4 + 8; } else { result = *(_DWORD *)(a3 + 8); *(_DWORD *)a2 = *(_DWORD *)(result - 8); *(_DWORD *)(a2 + 4) = *(_DWORD *)(result - 4); *(_DWORD *)(a3 + 8) = a2 + 8; } } else { result = *(_DWORD *)(*(_DWORD *)(a3 + 12) + 164); *(_DWORD *)a2 = result; *(_DWORD *)(a2 + 4) = *(_BYTE *)(result + 4) | 0x7FF7A540; *(_DWORD *)(a3 + 8) = a2 + 8; } return result; } //----- (005FCB10) -------------------------------------------------------- void __cdecl sub_5FCB10(int a1, int a2) { int i; // eax@1 int v3; // edx@2 int v4; // esi@3 int v5; // edx@3 int v6; // ecx@3 void (__cdecl *v7)(_DWORD); // ecx@5 for ( i = a1; !*(_DWORD *)(i + 64); i = *(_DWORD *)(*(_DWORD *)(i + 12) + 156) ) { v3 = *(_DWORD *)(i + 12); *(_BYTE *)(i + 6) = a2; if ( !*(_DWORD *)(*(_DWORD *)(v3 + 156) + 64) ) { v7 = *(void (__cdecl **)(_DWORD))(v3 + 152); if ( v7 ) v7(i); abort(); } v4 = *(_DWORD *)(v3 + 156); v5 = *(_DWORD *)(v4 + 8); v6 = *(_DWORD *)(i + 8); *(_DWORD *)(v4 + 8) = v5 + 8; *(_DWORD *)v5 = *(_DWORD *)(v6 - 8); *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 - 4); } *(_DWORD *)(*(_DWORD *)(i + 64) + 68) = a2; longjmp((int *)(*(_DWORD *)(i + 64) + 4), 1); } //----- (005FCB90) -------------------------------------------------------- int __cdecl sub_5FCB90(int a1, void (__cdecl *a2)(_DWORD, _DWORD), int a3) { __int16 v4; // [sp+Ch] [bp-54h]@1 int v5; // [sp+14h] [bp-4Ch]@1 char v6; // [sp+18h] [bp-48h]@1 int v7; // [sp+58h] [bp-8h]@1 unsigned int v8; // [sp+5Ch] [bp-4h]@1 int v9; // [sp+60h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v4 = *(_WORD *)(a1 + 38); v7 = 0; v5 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 64) = &v5; if ( !_setjmp3(&v6, 0) ) a2(a1, a3); *(_DWORD *)(a1 + 64) = v5; *(_WORD *)(a1 + 38) = v4; return v7; } // 86FEB8: using guessed type int __security_cookie; //----- (005FCC10) -------------------------------------------------------- int __cdecl sub_5FCC10(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edi@1 int v5; // eax@5 int v6; // edi@5 int v7; // eax@5 int result; // eax@7 int v9; // [sp+14h] [bp+8h]@1 v2 = a1; v3 = *(_DWORD *)(a1 + 28); v4 = *(_DWORD *)(a1 + 32); v9 = *(_DWORD *)(a1 + 28); if ( (unsigned int)(a2 + 1) > 0x1FFFFFFF ) v3 = loc_603720(v2); for ( *(_DWORD *)(v2 + 28) = sub_603740(v2, v3, 8 * v4, 8 * a2); v4 < a2; ++v4 ) *(_DWORD *)(*(_DWORD *)(v2 + 28) + 8 * v4 + 4) = 2146936064; v5 = *(_DWORD *)(v2 + 28); v6 = *(_DWORD *)(v2 + 8); *(_DWORD *)(v2 + 24) = v5 + 8 * a2 - 40; *(_DWORD *)(v2 + 8) = v5 + 8 * ((v6 - v9) >> 3); v7 = *(_DWORD *)(v2 + 56); for ( *(_DWORD *)(v2 + 32) = a2; v7; v7 = *(_DWORD *)v7 ) *(_DWORD *)(v7 + 8) = *(_DWORD *)(v2 + 28) + 8 * ((*(_DWORD *)(v7 + 8) - v9) >> 3); for ( result = *(_DWORD *)(v2 + 16); result; result = *(_DWORD *)(result + 8) ) { *(_DWORD *)(result + 4) = *(_DWORD *)(v2 + 28) + 8 * ((*(_DWORD *)(result + 4) - v9) >> 3); *(_DWORD *)result = *(_DWORD *)(v2 + 28) + 8 * ((*(_DWORD *)result - v9) >> 3); if ( *(_BYTE *)(result + 18) & 1 ) *(_DWORD *)(result + 24) = *(_DWORD *)(v2 + 28) + 8 * ((*(_DWORD *)(result + 24) - v9) >> 3); } return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FCD00) -------------------------------------------------------- int __cdecl sub_5FCD00(int a1, int a2) { signed int v2; // eax@1 int v3; // eax@3 v2 = *(_DWORD *)(a1 + 32); if ( v2 > 1000000 ) sub_5FCB10(a1, 6); v3 = 2 * v2; if ( v3 > 1000000 ) v3 = 1000000; if ( v3 < ((*(_DWORD *)(a1 + 8) - *(_DWORD *)(a1 + 28)) >> 3) + a2 + 5 ) v3 = ((*(_DWORD *)(a1 + 8) - *(_DWORD *)(a1 + 28)) >> 3) + a2 + 5; if ( v3 > 1000000 ) { sub_5FCC10(a1, 1000200); v3 = loc_5FC640(a1, "stack overflow"); } return sub_5FCC10(a1, v3); } //----- (005FCD70) -------------------------------------------------------- int __cdecl sub_5FCD70(int a1) { int v1; // ecx@1 unsigned int i; // eax@1 int v3; // ecx@5 __int64 v4; // qax@5 int result; // eax@5 v1 = *(_DWORD *)(a1 + 16); for ( i = *(_DWORD *)(a1 + 8); v1; v1 = *(_DWORD *)(v1 + 8) ) { if ( i < *(_DWORD *)(v1 + 4) ) i = *(_DWORD *)(v1 + 4); } v3 = ((signed int)(i - *(_DWORD *)(a1 + 28)) >> 3) + 1; v4 = ((signed int)(i - *(_DWORD *)(a1 + 28)) >> 3) + 1; result = (((BYTE4(v4) & 7) + (signed int)v4) >> 3) + v3 + 10; if ( result > 1000000 ) result = 1000000; if ( v3 <= 1000000 ) { if ( result < *(_DWORD *)(a1 + 32) ) result = sub_5FCC10(a1, result); } return result; } //----- (005FCDD0) -------------------------------------------------------- int __cdecl sub_5FCDD0(int a1, int a2, int a3) { int result; // eax@1 int v4; // eax@3 int v5; // ecx@3 int v6; // edi@3 int v7; // edx@3 int v8; // ebx@3 int v9; // ecx@3 int v10; // ecx@5 int v11; // [sp+4h] [bp-70h]@1 int v12; // [sp+8h] [bp-6Ch]@3 int v13; // [sp+Ch] [bp-68h]@3 int v14; // [sp+20h] [bp-54h]@3 int v15; // [sp+6Ch] [bp-8h]@3 unsigned int v16; // [sp+70h] [bp-4h]@1 int v17; // [sp+74h] [bp+0h]@1 v16 = (unsigned int)&v17 ^ __security_cookie; result = *(_DWORD *)(a1 + 52); v11 = result; if ( result && *(_BYTE *)(a1 + 41) ) { v4 = *(_DWORD *)(a1 + 8); v5 = *(_DWORD *)(a1 + 28); v6 = *(_DWORD *)(a1 + 16); v7 = *(_DWORD *)(v6 + 4) - v5; v8 = v4 - v5; v13 = a2; v12 = v7; v9 = (*(_DWORD *)(a1 + 24) - v4) & 0xFFFFFFF8; v14 = a3; v15 = v6; if ( v9 <= 160 ) sub_5FCD00(a1, 20); *(_DWORD *)(v6 + 4) = *(_DWORD *)(a1 + 8) + 160; *(_BYTE *)(a1 + 41) = 0; *(_BYTE *)(v6 + 18) |= 2u; result = ((int (__cdecl *)(int, int *))v11)(a1, &v13); v10 = v12 + *(_DWORD *)(a1 + 28); *(_BYTE *)(a1 + 41) = 1; *(_DWORD *)(v6 + 4) = v10; *(_DWORD *)(a1 + 8) = v8 + *(_DWORD *)(a1 + 28); *(_BYTE *)(v6 + 18) &= 0xFDu; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (005FCE90) -------------------------------------------------------- int __usercall sub_5FCE90(int a1, int a2) { int v2; // ebx@1 int v3; // ecx@1 unsigned int v4; // eax@3 int v5; // ecx@4 int v6; // eax@7 signed int v7; // ecx@8 int v8; // ecx@10 int v9; // eax@10 int result; // eax@17 int v11; // [sp+4h] [bp-4h]@1 v2 = sub_60D040(a2, a1, 16); v3 = a1 - *(_DWORD *)(a2 + 28); v11 = a1 - *(_DWORD *)(a2 + 28); if ( (*(_DWORD *)(v2 + 4) | 0x70) != 2146936182 ) loc_5FC8E0(a2, a1, "call"); v4 = *(_DWORD *)(a2 + 8); if ( v4 > a1 ) { v5 = v4 - 8; do { *(_DWORD *)v4 = *(_DWORD *)v5; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v5 + 4); v4 -= 8; v5 -= 8; } while ( v4 > a1 ); v3 = v11; } *(_DWORD *)(a2 + 8) += 8; v6 = *(_DWORD *)(a2 + 8); if ( ((*(_DWORD *)(a2 + 24) - v6) & 0xFFFFFFF8) <= 0 ) { v7 = *(_DWORD *)(a2 + 32); if ( v7 > 1000000 ) sub_5FCB10(a2, 6); v8 = 2 * v7; v9 = ((v6 - *(_DWORD *)(a2 + 28)) >> 3) + 5; if ( v8 > 1000000 ) v8 = 1000000; if ( v8 < v9 ) v8 = v9; if ( v8 > 1000000 ) { sub_5FCC10(a2, 1000200); loc_5FC640(a2, "stack overflow"); } sub_5FCC10(a2, v8); v3 = v11; } result = v3 + *(_DWORD *)(a2 + 28); *(_DWORD *)result = *(_DWORD *)v2; *(_DWORD *)(result + 4) = *(_DWORD *)(v2 + 4); return result; } //----- (005FCF70) -------------------------------------------------------- int __cdecl sub_5FCF70(int a1, int a2) { int v2; // esi@1 char v3; // al@1 int v4; // ebx@1 int v5; // edi@3 int v6; // edx@3 int v7; // edi@6 int v8; // eax@6 int v9; // ecx@6 int v10; // edi@7 int v11; // esi@9 int v12; // edx@9 int v14; // [sp+Ch] [bp-4h]@6 v2 = a1; v3 = *(_BYTE *)(a1 + 40); v4 = *(_DWORD *)(a1 + 16); if ( v3 & 6 ) { if ( v3 & 2 ) { v5 = a2 - *(_DWORD *)(a1 + 28); sub_5FCDD0(a1, 1, -1); v6 = v5 + *(_DWORD *)(a1 + 28); *(_DWORD *)(a1 + 20) = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 28); } else { v6 = a2; *(_DWORD *)(a1 + 20) = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 28); } } else { v6 = a2; } v7 = *(_WORD *)(v4 + 16); v8 = *(_DWORD *)v4; *(_DWORD *)(a1 + 16) = *(_DWORD *)(v4 + 8); v14 = v7; v9 = v7; if ( v7 ) { v10 = v6; do { if ( (unsigned int)v10 >= *(_DWORD *)(v2 + 8) ) break; v11 = v8; *(_DWORD *)v8 = *(_DWORD *)v10; v12 = *(_DWORD *)(v10 + 4); v8 += 8; v10 += 8; --v9; *(_DWORD *)(v11 + 4) = v12; v2 = a1; } while ( v9 ); v7 = v14; } for ( ; v9 > 0; v8 += 8 ) { --v9; *(_DWORD *)(v8 + 4) = 2146936064; } *(_DWORD *)(v2 + 8) = v8; return v7 + 1; } //----- (005FD020) -------------------------------------------------------- int __cdecl sub_5FD020(int a1) { int result; // eax@1 unsigned int v2; // ecx@4 char v3; // cl@6 int v4; // eax@8 for ( result = *(_DWORD *)(a1 + 16); result != a1 + 72; result = *(_DWORD *)(a1 + 16) ) { if ( *(_BYTE *)(result + 18) & 1 ) { sub_60EAC0(a1); sub_60EC60(a1); } else { if ( *(_WORD *)(result + 16) == -1 ) { v2 = *(_DWORD *)(a1 + 8); if ( *(_DWORD *)(result + 4) < v2 ) *(_DWORD *)(result + 4) = v2; } v3 = *(_BYTE *)(result + 18); if ( !(v3 & 0x20) ) *(_BYTE *)(result + 37) = 1; *(_BYTE *)(result + 18) = v3 & 0xCF | 8; v4 = (*(int (__cdecl **)(int))(result + 28))(a1); sub_5FCF70(a1, *(_DWORD *)(a1 + 8) - 8 * v4); } } return result; } //----- (005FD0A0) -------------------------------------------------------- signed int __usercall sub_5FD0A0(int a1, int a2) { int v2; // edi@1 int v3; // esi@1 signed int result; // eax@4 int v5; // ebx@5 v2 = a1; v3 = *(_DWORD *)(a1 + 16); if ( v3 ) { while ( !(*(_BYTE *)(v3 + 18) & 0x10) ) { v3 = *(_DWORD *)(v3 + 8); if ( !v3 ) goto LABEL_4; } v5 = *(_DWORD *)(a1 + 28) + *(_DWORD *)(v3 + 20); sub_5FE040(a1, *(_DWORD *)(a1 + 28) + *(_DWORD *)(v3 + 20)); sub_5FCAA0(a2, v5, v2); *(_DWORD *)(v2 + 16) = v3; *(_BYTE *)(v2 + 41) = *(_BYTE *)(v3 + 36); *(_WORD *)(v2 + 36) = 0; sub_5FCD70(v2); *(_DWORD *)(v2 + 68) = *(_DWORD *)(v3 + 32); *(_BYTE *)(v3 + 18) |= 0x20u; *(_BYTE *)(v3 + 37) = a2; result = 1; } else { LABEL_4: result = 0; } return result; } //----- (005FD160) -------------------------------------------------------- int __cdecl sub_5FD160(int a1, int a2, int a3, int a4) { int v4; // eax@1 int v5; // ecx@1 bool v6; // zf@5 v4 = a1; v5 = *(_DWORD *)(a1 + 16); if ( *(_WORD *)(a1 + 36) ) { if ( a1 != *(_DWORD *)(*(_DWORD *)(a1 + 12) + 156) ) v4 = loc_5FC640(a1, "attempt to yield across metamethod/C-call boundary"); v4 = loc_5FC640(v4, "attempt to yield from outside a coroutine"); } *(_BYTE *)(v4 + 6) = 1; v6 = (*(_BYTE *)(v5 + 18) & 1) == 0; *(_DWORD *)(v5 + 20) = *(_DWORD *)v5 - *(_DWORD *)(v4 + 28); if ( v6 ) { *(_DWORD *)(v5 + 28) = a4; if ( a4 ) *(_DWORD *)(v5 + 24) = a3; *(_DWORD *)v5 = *(_DWORD *)(v4 + 8) - (8 * a2 + 8); sub_5FCB10(v4, 1); } return 0; } //----- (005FD1E0) -------------------------------------------------------- int __cdecl sub_5FD1E0(int a1, void (__cdecl *a2)(_DWORD, _DWORD), int a3, int a4, int a5) { int v5; // edi@1 __int16 v6; // dx@1 int v7; // eax@1 int v8; // esi@1 int result; // eax@1 int v10; // ebx@1 int v11; // esi@2 int v12; // [sp+Ch] [bp-Ch]@1 __int16 v13; // [sp+10h] [bp-8h]@1 int v14; // [sp+14h] [bp-4h]@1 char v15; // [sp+23h] [bp+Bh]@1 v5 = a1; v6 = *(_WORD *)(a1 + 36); v7 = *(_DWORD *)(a1 + 16); v8 = *(_DWORD *)(a1 + 68); v15 = *(_BYTE *)(a1 + 41); v13 = v6; v14 = v7; v12 = v8; *(_DWORD *)(v5 + 68) = a5; result = sub_5FCB90(v5, a2, a3); v10 = result; if ( result ) { v11 = a4 + *(_DWORD *)(v5 + 28); sub_5FE040(v5, a4 + *(_DWORD *)(v5 + 28)); sub_5FCAA0(v10, v11, v5); *(_DWORD *)(v5 + 16) = v14; *(_BYTE *)(v5 + 41) = v15; *(_WORD *)(v5 + 36) = v13; sub_5FCD70(v5); *(_DWORD *)(v5 + 68) = v12; result = v10; } else { *(_DWORD *)(v5 + 68) = v8; } return result; } //----- (005FD270) -------------------------------------------------------- int __cdecl sub_5FD270(int a1, int a2) { int v2; // ecx@1 int v3; // eax@1 int *v4; // ecx@2 int v5; // ebx@2 const char *v6; // edi@4 int result; // eax@9 int v8; // esi@15 int v9; // ebx@15 int v10; // edi@16 int v11; // eax@17 v2 = **(_DWORD **)a2; **(_DWORD **)a2 = v2 - 1; v3 = *(_DWORD *)a2; if ( v2 ) { v4 = *(int **)(v3 + 4); v5 = *(_BYTE *)v4; *(_DWORD *)(v3 + 4) = (char *)v4 + 1; } else { v5 = sub_60FE90(*(_DWORD *)a2); } v6 = *(const char **)(a2 + 52); if ( v5 == 27 ) { if ( v6 && !strchr(v6, 98) ) { sub_604B20(a1, (int)"attempt to load a %s chunk (mode is '%s')", (unsigned int)"binary"); sub_5FCB10(a1, 3); } result = sub_60DA00(a1, *(_DWORD *)a2, a2 + 4, *(_DWORD *)(a2 + 56)); } else { if ( v6 && !strchr(v6, 116) ) { sub_604B20(a1, (int)"attempt to load a %s chunk (mode is '%s')", (unsigned int)"text"); sub_5FCB10(a1, 3); } result = sub_608C60(a1, *(_DWORD *)a2, a2 + 4, a2 + 16, *(const void **)(a2 + 56), v5); } v8 = result; v9 = 0; if ( *(_BYTE *)(result + 6) ) { v10 = result + 16; do { v11 = sub_5FDF60(a1); *(_DWORD *)v10 = v11; if ( *(_BYTE *)(v11 + 5) & 3 && *(_BYTE *)(v8 + 5) & 4 ) sub_5FF530(a1, v8, v11); result = *(_BYTE *)(v8 + 6); ++v9; v10 += 4; } while ( v9 < result ); } return result; } //----- (005FD390) -------------------------------------------------------- int __cdecl sub_5FD390(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ecx@1 int v6; // ST40_4@1 int v7; // ebx@1 int v9; // [sp+Ch] [bp-3Ch]@1 int v10; // [sp+10h] [bp-38h]@1 int v11; // [sp+18h] [bp-30h]@1 int v12; // [sp+1Ch] [bp-2Ch]@1 int v13; // [sp+24h] [bp-24h]@1 int v14; // [sp+28h] [bp-20h]@1 int v15; // [sp+30h] [bp-18h]@1 int v16; // [sp+34h] [bp-14h]@1 int v17; // [sp+3Ch] [bp-Ch]@1 int v18; // [sp+40h] [bp-8h]@1 int v19; // [sp+44h] [bp-4h]@1 v4 = a1; ++*(_WORD *)(v4 + 36); v19 = a3; v5 = *(_DWORD *)(v4 + 8) - *(_DWORD *)(v4 + 28); v9 = a2; v6 = *(_DWORD *)(a1 + 68); v18 = a4; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v10 = 0; v11 = 0; v7 = sub_5FD1E0(a1, sub_5FD270, (int)&v9, v5, v6); v10 = sub_603740(a1, v10, v11, 0); v11 = 0; sub_603740(a1, v12, 2 * v13, 0); sub_603740(a1, v14, 16 * v15, 0); sub_603740(a1, v16, 16 * v17, 0); --*(_WORD *)(v4 + 36); return v7; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FD450) -------------------------------------------------------- signed int __cdecl sub_5FD450(int a1, int a2, __int16 a3) { int v3; // eax@1 int v4; // esi@1 int v5; // ecx@2 int v6; // edi@2 int v7; // ecx@4 int (__cdecl *v8)(_DWORD); // ebx@8 int v9; // eax@12 int v10; // eax@16 int v12; // ebx@17 int v13; // eax@17 int v14; // ecx@19 int v15; // eax@19 int v16; // eax@22 int v17; // edi@23 int v18; // eax@23 int v19; // ecx@24 int v20; // edi@26 int v21; // eax@27 int v22; // edx@28 bool v23; // zf@28 int v24; // eax@29 int v25; // ecx@29 int v26; // [sp+14h] [bp+8h]@23 int v27; // [sp+14h] [bp+8h]@26 int i; // [sp+18h] [bp+Ch]@19 v3 = a2; v4 = a1; while ( 1 ) { v5 = *(_DWORD *)(v3 + 4); v6 = v3 - *(_DWORD *)(a1 + 28); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v5) = 3; v7 = v5 & 0x3F; if ( v7 == 6 ) break; if ( v7 == 22 ) { v8 = *(int (__cdecl **)(_DWORD))v3; goto LABEL_10; } if ( v7 == 38 ) { v8 = *(int (__cdecl **)(_DWORD))(*(_DWORD *)v3 + 12); LABEL_10: if ( ((*(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 8)) & 0xFFFFFFF8) <= 160 ) sub_5FCD00(a1, 20); v9 = *(_DWORD *)(*(_DWORD *)(a1 + 16) + 12); if ( !v9 ) v9 = sub_608D30(a1); *(_DWORD *)(a1 + 16) = v9; *(_WORD *)(v9 + 16) = a3; *(_DWORD *)v9 = v6 + *(_DWORD *)(a1 + 28); *(_DWORD *)(v9 + 4) = *(_DWORD *)(a1 + 8) + 160; *(_BYTE *)(v9 + 18) = 0; if ( *(_BYTE *)(a1 + 40) & 1 ) sub_5FCDD0(a1, 0, -1); v10 = v8(a1); sub_5FCF70(a1, *(_DWORD *)(a1 + 8) - 8 * v10); return 1; } v3 = sub_5FCE90(v3, a1); } v12 = *(_DWORD *)(*(_DWORD *)v3 + 12); v13 = *(_BYTE *)(v12 + 78); if ( (*(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 8)) >> 3 <= v13 ) sub_5FCD00(a1, v13); v14 = v6 + *(_DWORD *)(a1 + 28); v15 = ((*(_DWORD *)(a1 + 8) - v14) >> 3) - 1; for ( i = v6 + *(_DWORD *)(a1 + 28); v15 < *(_BYTE *)(v12 + 76); ++v15 ) { *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4) = 2146936064; *(_DWORD *)(a1 + 8) += 8; } if ( *(_BYTE *)(v12 + 77) ) { v17 = *(_BYTE *)(v12 + 76); v18 = *(_DWORD *)(a1 + 8) - 8 * v15; v26 = *(_DWORD *)(a1 + 8); if ( v17 > 0 ) { do { v19 = *(_DWORD *)(v4 + 8); *(_DWORD *)(v4 + 8) = v19 + 8; *(_DWORD *)v19 = *(_DWORD *)v18; *(_DWORD *)(v19 + 4) = *(_DWORD *)(v18 + 4); *(_DWORD *)(v18 + 4) = 2146936064; v18 += 8; --v17; } while ( v17 ); } v16 = v26; v14 = i; } else { v16 = v14 + 8; } v20 = *(_DWORD *)(*(_DWORD *)(v4 + 16) + 12); v27 = v16; if ( !v20 ) { v21 = sub_608D30(v4); v14 = i; v20 = v21; } *(_DWORD *)(v4 + 16) = v20; *(_WORD *)(v20 + 16) = a3; *(_DWORD *)v20 = v14; *(_DWORD *)(v20 + 24) = v27; v22 = v27 + 8 * *(_BYTE *)(v12 + 78); *(_DWORD *)(v20 + 4) = v22; *(_DWORD *)(v20 + 28) = *(_DWORD *)(v12 + 12); *(_BYTE *)(v20 + 18) = 1; v23 = (*(_BYTE *)(v4 + 40) & 1) == 0; *(_DWORD *)(v4 + 8) = v22; if ( !v23 ) { v24 = *(_DWORD *)(v20 + 8); *(_DWORD *)(v20 + 28) += 4; v25 = 0; if ( *(_BYTE *)(v24 + 18) & 1 && (*(_BYTE *)(*(_DWORD *)(v24 + 28) - 4) & 0x3F) == 30 ) { *(_BYTE *)(v20 + 18) |= 0x40u; v25 = 4; } sub_5FCDD0(v4, v25, -1); *(_DWORD *)(v20 + 28) -= 4; } return 0; } //----- (005FD660) -------------------------------------------------------- int __cdecl sub_5FD660(int a1, int a2, __int16 a3, int a4) { signed __int16 v4; // cx@1 unsigned __int16 v5; // ax@1 int v6; // ecx@12 int result; // eax@12 v4 = 1; ++*(_WORD *)(a1 + 38); v5 = *(_WORD *)(a1 + 38); if ( v5 >= 0xC8u ) { if ( v5 == 200 ) v5 = loc_5FC640(a1, "C stack overflow"); if ( v5 >= 0xE1u ) sub_5FCB10(a1, 6); } if ( !a4 ) *(_WORD *)(a1 + 36) += v4; if ( !sub_5FD450(a1, a2, a3) ) sub_60EC60(a1); if ( !a4 ) --*(_WORD *)(a1 + 36); v6 = *(_DWORD *)(a1 + 12); result = 65535; --*(_WORD *)(a1 + 38); if ( *(_DWORD *)(v6 + 12) > 0 ) result = sub_600600(a1); return result; } //----- (005FD700) -------------------------------------------------------- int __cdecl sub_5FD700(int a1, int a2) { int v2; // eax@1 signed int v3; // ecx@1 int v4; // edx@1 int result; // eax@6 int v6; // ecx@10 int (__fastcall *v7)(_DWORD, _DWORD); // edi@12 v2 = *(_DWORD *)(a1 + 16); v3 = 200; v4 = a2; if ( *(_WORD *)(a1 + 38) >= 0xC8u ) v2 = loc_5FD110(200, a2); LOBYTE(v3) = *(_BYTE *)(a1 + 6); if ( (_BYTE)v3 ) { if ( (_BYTE)v3 != 1 ) v2 = loc_5FD110(v3, v4); *(_BYTE *)(a1 + 6) = 0; v6 = *(_DWORD *)(a1 + 28) + *(_DWORD *)(v2 + 20); *(_DWORD *)v2 = v6; LOBYTE(v6) = *(_BYTE *)(v2 + 18); if ( v6 & 1 ) { sub_60EC60(a1); result = sub_5FD020(a1); } else { v7 = *(int (__fastcall **)(_DWORD, _DWORD))(v2 + 28); if ( v7 ) { LOBYTE(v6) = v6 | 8; *(_BYTE *)(v2 + 37) = 1; *(_BYTE *)(v2 + 18) = v6; v4 = *(_DWORD *)(a1 + 8) - 8 * v7(v6, v4); } sub_5FCF70(a1, v4); result = sub_5FD020(a1); } } else { if ( v2 != a1 + 72 ) loc_5FD110(); result = sub_5FD450(a1, a2 - 8, -1); if ( !result ) result = sub_60EC60(a1); } return result; } //----- (005FD7E0) -------------------------------------------------------- signed int __cdecl sub_5FD7E0(int a1, int a2, int a3) { signed __int16 v3; // ax@2 int v4; // eax@4 signed int v5; // ebx@4 int v6; // ecx@11 if ( a2 ) v3 = *(_WORD *)(a2 + 38) + 1; else v3 = 1; *(_WORD *)(a1 + 38) = v3; *(_WORD *)(a1 + 36) = 0; v4 = sub_5FCB90(a1, sub_5FD700, *(_DWORD *)(a1 + 8) - 8 * a3); v5 = v4; if ( v4 == -1 ) { v5 = 2; } else { if ( v4 ) { while ( v5 != 1 ) { if ( !sub_5FD0A0(a1, v5) ) { v6 = *(_DWORD *)(a1 + 8); *(_BYTE *)(a1 + 6) = v5; sub_5FCAA0(v5, v6, a1); *(_DWORD *)(*(_DWORD *)(a1 + 16) + 4) = *(_DWORD *)(a1 + 8); break; } v5 = sub_5FCB90(a1, (void (__cdecl *)(_DWORD, _DWORD))sub_5FD020, 0); if ( !v5 ) break; } } } --*(_WORD *)(a1 + 38); *(_WORD *)(a1 + 36) = 1; return v5; } //----- (005FD890) -------------------------------------------------------- int __usercall sub_5FD890(int result, int a2) { int v2; // edi@1 bool v3; // zf@4 int v4; // [sp+4h] [bp-4h]@2 v2 = result; if ( result ) { result = *(_DWORD *)(result + 12) + 1; v3 = *(_DWORD *)(a2 + 16) == 0; v4 = *(_DWORD *)(v2 + 12) + 1; if ( v3 ) { *(_DWORD *)(a2 + 16) = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(a2 + 4))( *(_DWORD *)a2, &v4, 4, *(_DWORD *)(a2 + 8)); result = v4; if ( !*(_DWORD *)(a2 + 16) ) { result = (*(int (__cdecl **)(_DWORD, int, int, _DWORD))(a2 + 4))( *(_DWORD *)a2, v2 + 16, v4, *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 16) = result; } } } else { v4 = 0; if ( !*(_DWORD *)(a2 + 16) ) { result = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(a2 + 4))( *(_DWORD *)a2, &v4, 4, *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 16) = result; } } return result; } //----- (005FD910) -------------------------------------------------------- int __usercall sub_5FD910(int a1, int a2) { int v2; // esi@1 bool v3; // zf@1 int result; // 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; // ebx@20 int i; // edi@22 int v13; // [sp+Ch] [bp-10h]@1 double v14; // [sp+10h] [bp-Ch]@1 char v15; // [sp+1Bh] [bp-1h]@6 v2 = a1; v3 = *(_DWORD *)(a1 + 16) == 0; result = a2; v5 = *(_DWORD *)(a2 + 44); v13 = v5; HIDWORD(v14) = v5; if ( v3 ) { result = (*(int (__cdecl **)(_DWORD, char *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, (char *)&v14 + 4, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } v6 = 0; if ( v5 > 0 ) { do { v7 = *(_DWORD *)(a2 + 8) + 8 * v6; v8 = *(_DWORD *)(v7 + 4); if ( (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v8) = 3; v3 = *(_DWORD *)(v2 + 16) == 0; v15 = v8 & 0xF; if ( v3 ) *(_DWORD *)(v2 + 16) = (*(int (__cdecl **)(_DWORD, char *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v15, 1, *(_DWORD *)(v2 + 8)); v9 = *(_DWORD *)(v7 + 4); if ( (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; v10 = (v9 & 0xF) - 1; if ( v10 ) { result = v10 - 2; if ( result ) { --result; if ( !result ) result = sub_5FD890(*(_DWORD *)v7, v2); goto LABEL_19; } v3 = *(_DWORD *)(v2 + 16) == 0; v14 = *(double *)v7; if ( v3 ) { result = (*(int (__cdecl **)(_DWORD, double *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v14, 8, *(_DWORD *)(v2 + 8)); LABEL_18: *(_DWORD *)(v2 + 16) = result; goto LABEL_19; } } else { v3 = *(_DWORD *)(v2 + 16) == 0; result = *(_BYTE *)v7; v15 = *(_BYTE *)v7; if ( v3 ) { result = (*(int (__cdecl **)(_DWORD, char *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v15, 1, *(_DWORD *)(v2 + 8)); goto LABEL_18; } } LABEL_19: ++v6; } while ( v6 < v13 ); } v3 = *(_DWORD *)(v2 + 16) == 0; v11 = *(_DWORD *)(a2 + 56); v13 = *(_DWORD *)(a2 + 56); if ( v3 ) { result = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v13, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } for ( i = 0; i < v11; ++i ) result = sub_5FDD30(*(_DWORD *)(*(_DWORD *)(a2 + 16) + 4 * i), v2); return result; } // 5FDD30: using guessed type _DWORD __cdecl sub_5FDD30(_DWORD, _DWORD); //----- (005FDA70) -------------------------------------------------------- int __usercall sub_5FDA70(int a1, int a2) { bool v2; // zf@1 int result; // eax@1 int i; // edi@3 int v5; // [sp+0h] [bp-Ch]@1 int v6; // [sp+4h] [bp-8h]@1 char v7; // [sp+Bh] [bp-1h]@4 v2 = *(_DWORD *)(a2 + 16) == 0; result = *(_DWORD *)(a1 + 40); v6 = result; v5 = result; if ( v2 ) { result = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(a2 + 4))( *(_DWORD *)a2, &v5, 4, *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 16) = result; } for ( i = 0; i < v6; ++i ) { v2 = *(_DWORD *)(a2 + 16) == 0; v7 = *(_BYTE *)(*(_DWORD *)(a1 + 28) + 8 * i + 4); if ( v2 ) { result = (*(int (__cdecl **)(_DWORD, char *, signed int, _DWORD))(a2 + 4))( *(_DWORD *)a2, &v7, 1, *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 16) = result; } v2 = *(_DWORD *)(a2 + 16) == 0; v7 = *(_BYTE *)(*(_DWORD *)(a1 + 28) + 8 * i + 5); if ( v2 ) { result = (*(int (__cdecl **)(_DWORD, char *, signed int, _DWORD))(a2 + 4))( *(_DWORD *)a2, &v7, 1, *(_DWORD *)(a2 + 8)); *(_DWORD *)(a2 + 16) = result; } } return result; } //----- (005FDB00) -------------------------------------------------------- int __usercall sub_5FDB00(int a1, int a2) { int v2; // esi@1 int v3; // eax@2 int result; // eax@4 int v5; // edi@5 bool v6; // zf@7 int v7; // ebx@7 int v8; // edi@11 int v9; // ebx@16 int v10; // edi@17 int v11; // edi@30 int v12; // ebx@34 int v13; // edi@35 int v14; // [sp-Ch] [bp-28h]@19 int v15; // [sp-Ch] [bp-28h]@37 signed int v16; // [sp-8h] [bp-24h]@19 signed int v17; // [sp-8h] [bp-24h]@37 int v18; // [sp-4h] [bp-20h]@19 int v19; // [sp-4h] [bp-20h]@37 int v20; // [sp+Ch] [bp-10h]@26 int v21; // [sp+10h] [bp-Ch]@24 int v22; // [sp+14h] [bp-8h]@7 int v23; // [sp+18h] [bp-4h]@18 v2 = a1; if ( *(_DWORD *)(a1 + 12) ) v3 = 0; else v3 = *(_DWORD *)(a2 + 36); result = sub_5FD890(v3, v2); if ( *(_DWORD *)(v2 + 12) ) v5 = 0; else v5 = *(_DWORD *)(a2 + 52); v6 = *(_DWORD *)(v2 + 16) == 0; v7 = *(_DWORD *)(a2 + 20); v22 = v5; if ( v6 ) { result = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v22, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; if ( !result ) { result = (*(int (__cdecl **)(_DWORD, int, int, _DWORD))(v2 + 4))(*(_DWORD *)v2, v7, 4 * v5, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } } if ( *(_DWORD *)(v2 + 12) ) v8 = 0; else v8 = *(_DWORD *)(a2 + 60); v6 = *(_DWORD *)(v2 + 16) == 0; v22 = v8; if ( v6 ) { result = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v22, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } if ( v8 > 0 ) { v9 = 0; v22 = v8; while ( 1 ) { v10 = *(_DWORD *)(v9 + *(_DWORD *)(a2 + 24)); if ( v10 ) break; v23 = 0; if ( !*(_DWORD *)(v2 + 16) ) { v18 = *(_DWORD *)(v2 + 8); v16 = 4; v14 = (int)&v23; LABEL_23: result = (*(int (__cdecl **)(_DWORD, int, signed int, int))(v2 + 4))(*(_DWORD *)v2, v14, v16, v18); *(_DWORD *)(v2 + 16) = result; } LABEL_24: v6 = *(_DWORD *)(v2 + 16) == 0; v21 = *(_DWORD *)(*(_DWORD *)(a2 + 24) + v9 + 4); if ( v6 ) { result = (*(int (__cdecl **)(_DWORD, int *, signed int, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v21, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } v6 = *(_DWORD *)(v2 + 16) == 0; v20 = *(_DWORD *)(*(_DWORD *)(a2 + 24) + v9 + 8); if ( v6 ) { result = (*(int (__cdecl **)(_DWORD, int *, _DWORD, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v20, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } v9 += 12; --v22; if ( !v22 ) goto LABEL_29; } v6 = *(_DWORD *)(v2 + 16) == 0; v23 = *(_DWORD *)(v10 + 12) + 1; if ( !v6 || (result = (*(int (__cdecl **)(_DWORD, int *, _DWORD, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v23, 4, *(_DWORD *)(v2 + 8)), (*(_DWORD *)(v2 + 16) = result) != 0) ) goto LABEL_24; v18 = *(_DWORD *)(v2 + 8); v16 = v23; v14 = v10 + 16; goto LABEL_23; } LABEL_29: if ( *(_DWORD *)(v2 + 12) ) { v11 = 0; v23 = 0; } else { v23 = *(_DWORD *)(a2 + 40); v11 = v23; } v6 = *(_DWORD *)(v2 + 16) == 0; v20 = v11; if ( v6 ) { result = (*(int (__cdecl **)(_DWORD, int *, _DWORD, _DWORD))(v2 + 4))(*(_DWORD *)v2, &v20, 4, *(_DWORD *)(v2 + 8)); *(_DWORD *)(v2 + 16) = result; } v12 = 0; if ( v11 > 0 ) { while ( 1 ) { v13 = *(_DWORD *)(*(_DWORD *)(a2 + 28) + 8 * v12); if ( v13 ) break; v20 = 0; if ( !*(_DWORD *)(v2 + 16) ) { v19 = *(_DWORD *)(v2 + 8); v17 = 4; v15 = (int)&v20; LABEL_41: result = (*(int (__cdecl **)(_DWORD, int, signed int, int))(v2 + 4))(*(_DWORD *)v2, v15, v17, v19); *(_DWORD *)(v2 + 16) = result; } LABEL_42: ++v12; if ( v12 >= v23 ) return result; } v6 = *(_DWORD *)(v2 + 16) == 0; v22 = *(_DWORD *)(v13 + 12) + 1; if ( !v6 || (result = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v2 + 4))( *(_DWORD *)v2, &v22, 4, *(_DWORD *)(v2 + 8)), (*(_DWORD *)(v2 + 16) = result) != 0) ) goto LABEL_42; v19 = *(_DWORD *)(v2 + 8); v17 = v22; v15 = v13 + 16; goto LABEL_41; } return result; } //----- (005FDD30) -------------------------------------------------------- int __cdecl sub_5FDD30(int a1, int a2) { int v2; // ebx@1 int v3; // esi@1 bool v4; // zf@1 int v5; // edi@11 int v6; // eax@12 v2 = a1; v3 = a2; v4 = *(_DWORD *)(a2 + 16) == 0; a1 = *(_DWORD *)(a1 + 64); if ( v4 ) *(_DWORD *)(a2 + 16) = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(a2 + 4))( *(_DWORD *)a2, &a1, 4, *(_DWORD *)(a2 + 8)); v4 = *(_DWORD *)(v3 + 16) == 0; a1 = *(_DWORD *)(v2 + 68); if ( v4 ) *(_DWORD *)(v3 + 16) = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 4))( *(_DWORD *)v3, &a1, 4, *(_DWORD *)(v3 + 8)); v4 = *(_DWORD *)(v3 + 16) == 0; BYTE3(a1) = *(_BYTE *)(v2 + 76); if ( v4 ) *(_DWORD *)(v3 + 16) = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 4))( *(_DWORD *)v3, (char *)&a1 + 3, 1, *(_DWORD *)(v3 + 8)); v4 = *(_DWORD *)(v3 + 16) == 0; BYTE3(a1) = *(_BYTE *)(v2 + 77); if ( v4 ) *(_DWORD *)(v3 + 16) = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 4))( *(_DWORD *)v3, (char *)&a1 + 3, 1, *(_DWORD *)(v3 + 8)); v4 = *(_DWORD *)(v3 + 16) == 0; BYTE3(a1) = *(_BYTE *)(v2 + 78); if ( v4 ) *(_DWORD *)(v3 + 16) = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 4))( *(_DWORD *)v3, (char *)&a1 + 3, 1, *(_DWORD *)(v3 + 8)); v4 = *(_DWORD *)(v3 + 16) == 0; v5 = *(_DWORD *)(v2 + 48); a2 = *(_DWORD *)(v2 + 12); a1 = v5; if ( v4 ) { v6 = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 4))(*(_DWORD *)v3, &a1, 4, *(_DWORD *)(v3 + 8)); *(_DWORD *)(v3 + 16) = v6; if ( !v6 ) *(_DWORD *)(v3 + 16) = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD))(v3 + 4))( *(_DWORD *)v3, a2, 4 * v5, *(_DWORD *)(v3 + 8)); } sub_5FD910(v3, v2); sub_5FDA70(v2, v3); return sub_5FDB00(v3, v2); } // 5FDD30: using guessed type _DWORD __cdecl sub_5FDD30(_DWORD, _DWORD); //----- (005FDE60) -------------------------------------------------------- int __cdecl sub_5FDE60(int a1, int a2, int a3, int a4, int a5) { int v6; // [sp+4h] [bp-2Ch]@1 int v7; // [sp+8h] [bp-28h]@1 int v8; // [sp+Ch] [bp-24h]@1 int v9; // [sp+10h] [bp-20h]@1 int v10; // [sp+14h] [bp-1Ch]@1 char v11; // [sp+18h] [bp-18h]@1 unsigned int v12; // [sp+2Ch] [bp-4h]@1 int v13; // [sp+30h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v7 = a3; v6 = a1; v8 = a4; v9 = a5; v10 = 0; sub_60D8C0((int)&v11); v10 = ((int (__cdecl *)(int, char *, signed int, int))v7)(v6, &v11, 18, v8); sub_5FDD30(a2, &v6); return v10; } // 5FDD30: using guessed type _DWORD __cdecl sub_5FDD30(_DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (005FDEE0) -------------------------------------------------------- int __cdecl sub_5FDEE0(int a1, int a2) { int result; // eax@1 result = sub_5FE250(a1, 38, 8 * a2 + 16, 0, 0); *(_BYTE *)(result + 6) = a2; return result; } //----- (005FDF10) -------------------------------------------------------- int __cdecl sub_5FDF10(int a1, int a2) { int v2; // ebx@1 int result; // eax@1 int v4; // ecx@2 v2 = a2; result = sub_5FE250(a1, 6, 4 * a2 + 16, 0, 0); *(_DWORD *)(result + 12) = 0; *(_BYTE *)(result + 6) = a2; if ( a2 ) { v4 = 4 * a2 + 16 + result; do { v4 -= 4; --v2; *(_DWORD *)v4 = 0; } while ( v2 ); } return result; } //----- (005FDF60) -------------------------------------------------------- int __cdecl sub_5FDF60(int a1) { int result; // eax@1 result = sub_5FE250(a1, 10, 24, 0, 0); *(_DWORD *)(result + 8) = result + 16; *(_DWORD *)(result + 20) = 2146936064; return result; } //----- (005FDF90) -------------------------------------------------------- int __cdecl sub_5FDF90(int a1, unsigned int a2) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@2 unsigned int v5; // edx@2 int v6; // ecx@5 unsigned __int8 v7; // cl@7 v2 = *(_DWORD *)(a1 + 12); v3 = a1 + 56; if ( *(_DWORD *)(a1 + 56) ) { do { result = *(_DWORD *)v3; v5 = *(_DWORD *)(*(_DWORD *)v3 + 8); if ( v5 < a2 ) break; if ( v5 == a2 ) { v7 = *(_BYTE *)(result + 5) ^ 3; if ( !((unsigned __int8)(*(_BYTE *)(v2 + 52) ^ 3) & v7) ) *(_BYTE *)(result + 5) = v7; return result; } *(_BYTE *)(result + 5) &= 0xBFu; v3 = result; } while ( *(_DWORD *)result ); } result = sub_5FE250(a1, 10, 24, v3, 0); *(_DWORD *)(result + 8) = a2; *(_DWORD *)(result + 16) = v2 + 104; v6 = *(_DWORD *)(v2 + 124); *(_DWORD *)(result + 20) = v6; *(_DWORD *)(v6 + 16) = result; *(_DWORD *)(v2 + 124) = result; return result; } //----- (005FE000) -------------------------------------------------------- int __cdecl sub_5FE000(int a1, int a2) { int v2; // ecx@1 v2 = a2 + 16; if ( *(_DWORD *)(a2 + 8) != a2 + 16 ) { *(_DWORD *)(*(_DWORD *)(a2 + 20) + 16) = *(_DWORD *)v2; *(_DWORD *)(*(_DWORD *)v2 + 20) = *(_DWORD *)(a2 + 20); } return sub_603740(a1, a2, 24, 0); } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FE040) -------------------------------------------------------- void __cdecl sub_5FE040(int a1, unsigned int a2) { int v2; // edi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // edx@7 v2 = *(_DWORD *)(a1 + 12); while ( *(_DWORD *)(a1 + 56) ) { v3 = *(_DWORD *)(a1 + 56); if ( *(_DWORD *)(v3 + 8) < a2 ) break; *(_DWORD *)(a1 + 56) = *(_DWORD *)v3; v4 = v3 + 16; if ( (unsigned __int8)(*(_BYTE *)(v2 + 52) ^ 3) & (unsigned __int8)(*(_BYTE *)(v3 + 5) ^ 3) ) { *(_DWORD *)(*(_DWORD *)(v3 + 20) + 16) = *(_DWORD *)v4; *(_DWORD *)(*(_DWORD *)v4 + 20) = *(_DWORD *)(v3 + 20); v5 = *(_DWORD *)(v3 + 8); *(_DWORD *)v4 = *(_DWORD *)v5; *(_DWORD *)(v3 + 20) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v3 + 8) = v4; *(_DWORD *)v3 = *(_DWORD *)(v2 + 60); *(_DWORD *)(v2 + 60) = v3; sub_5FF5B0(v2, v3); } else { if ( *(_DWORD *)(v3 + 8) != v4 ) { *(_DWORD *)(*(_DWORD *)(v3 + 20) + 16) = *(_DWORD *)v4; *(_DWORD *)(*(_DWORD *)v4 + 20) = *(_DWORD *)(v3 + 20); } sub_603740(a1, v3, 24, 0); } } } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FE0E0) -------------------------------------------------------- int __cdecl sub_5FE0E0(int a1) { int result; // eax@1 result = sub_5FE250(a1, 9, 80, 0, 0); *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 44) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 56) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 32) = 0; *(_DWORD *)(result + 48) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 52) = 0; *(_DWORD *)(result + 28) = 0; *(_DWORD *)(result + 40) = 0; *(_WORD *)(result + 76) = 0; *(_BYTE *)(result + 78) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 60) = 0; *(_DWORD *)(result + 64) = 0; *(_DWORD *)(result + 68) = 0; *(_DWORD *)(result + 36) = 0; return result; } //----- (005FE140) -------------------------------------------------------- int __cdecl sub_5FE140(int a1, int a2) { int v2; // esi@1 v2 = a2; sub_603740(a1, *(_DWORD *)(a2 + 12), 4 * *(_DWORD *)(a2 + 48), 0); sub_603740(a1, *(_DWORD *)(v2 + 16), 4 * *(_DWORD *)(v2 + 56), 0); sub_603740(a1, *(_DWORD *)(v2 + 8), 8 * *(_DWORD *)(v2 + 44), 0); sub_603740(a1, *(_DWORD *)(v2 + 20), 4 * *(_DWORD *)(v2 + 52), 0); sub_603740(a1, *(_DWORD *)(v2 + 24), 12 * *(_DWORD *)(v2 + 60), 0); sub_603740(a1, *(_DWORD *)(v2 + 28), 8 * *(_DWORD *)(v2 + 40), 0); return sub_603740(a1, a2, 80, 0); } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FE1E0) -------------------------------------------------------- int __cdecl sub_5FE1E0(int a1, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int v5; // ebx@2 int v6; // edi@2 int v7; // ecx@2 v3 = *(_DWORD *)(a1 + 60); v4 = 0; if ( v3 > 0 ) { v5 = *(_DWORD *)(a1 + 24); v6 = a2; v7 = v5 + 8; while ( *(_DWORD *)(v7 - 4) <= a3 ) { if ( a3 < *(_DWORD *)v7 ) { --v6; if ( !v6 ) return *(_DWORD *)(v5 + 12 * v4) + 16; } ++v4; v7 += 12; if ( v4 >= v3 ) return 0; } } return 0; } //----- (005FE230) -------------------------------------------------------- int __cdecl sub_5FE230(int a1, int a2) { int v2; // ecx@1 int result; // eax@1 v2 = *(_DWORD *)(a1 + 12); result = a2; *(_BYTE *)(result + 5) &= 0xFBu; *(_DWORD *)(a2 + 24) = *(_DWORD *)(v2 + 80); *(_DWORD *)(v2 + 80) = a2; return result; } //----- (005FE250) -------------------------------------------------------- int __cdecl sub_5FE250(int a1, char a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // eax@1 int v7; // ecx@1 int result; // eax@1 char v9; // dl@3 v5 = *(_DWORD *)(a1 + 12); v6 = sub_603740(a1, 0, a2 & 0xF, a3); v7 = a4; result = a5 + v6; if ( !a4 ) v7 = v5 + 60; v9 = *(_BYTE *)(v5 + 52) & 3; *(_BYTE *)(result + 4) = a2; *(_BYTE *)(result + 5) = v9; *(_DWORD *)result = *(_DWORD *)v7; *(_DWORD *)v7 = result; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FE2A0) -------------------------------------------------------- int __cdecl sub_5FE2A0(int a1, int a2) { int v2; // eax@1 int result; // eax@1 int v4; // eax@2 int v5; // eax@3 int v6; // eax@6 int v7; // eax@9 int v8; // ecx@10 int v9; // eax@10 int v10; // ecx@13 v2 = *(_BYTE *)(a2 + 4); *(_BYTE *)(a2 + 5) &= 0xFCu; result = v2 - 4; switch ( result ) { case 0: case 16: v4 = *(_DWORD *)(a2 + 12); *(_BYTE *)(a2 + 5) |= 4u; result = v4 + 17; *(_DWORD *)(a1 + 16) += result; break; case 3: v5 = *(_DWORD *)(a2 + 8); if ( v5 && *(_BYTE *)(v5 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(a2 + 8)); v6 = *(_DWORD *)(a2 + 12); if ( v6 ) { if ( *(_BYTE *)(v6 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(a2 + 12)); } v7 = *(_DWORD *)(a2 + 16); *(_BYTE *)(a2 + 5) |= 4u; result = v7 + 24; *(_DWORD *)(a1 + 16) += result; break; case 6: v8 = *(_DWORD *)(a2 + 8); v9 = *(_DWORD *)(v8 + 4); if ( (*(_DWORD *)(v8 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 ) { v10 = *(_DWORD *)v8; if ( *(_BYTE *)(v10 + 5) & 3 ) sub_5FE2A0(a1, v10); } result = a2 + 16; if ( *(_DWORD *)(a2 + 8) == a2 + 16 ) { *(_BYTE *)(a2 + 5) |= 4u; result = 24; *(_DWORD *)(a1 + 16) += 24; } break; case 2: result = a1; *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 76); *(_DWORD *)(a1 + 76) = a2; break; case 34: result = a1; *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 76); *(_DWORD *)(a1 + 76) = a2; break; case 1: result = a1; *(_DWORD *)(a2 + 24) = *(_DWORD *)(a1 + 76); *(_DWORD *)(a1 + 76) = a2; break; case 4: result = a1; *(_DWORD *)(a2 + 60) = *(_DWORD *)(a1 + 76); *(_DWORD *)(a1 + 76) = a2; break; case 5: result = a1; *(_DWORD *)(a2 + 72) = *(_DWORD *)(a1 + 76); *(_DWORD *)(a1 + 76) = a2; break; default: return result; } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FE400) -------------------------------------------------------- int __usercall sub_5FE400(int a1) { int result; // eax@1 int v2; // esi@2 int v3; // eax@4 int v4; // eax@5 int v5; // eax@6 int v6; // eax@9 int v7; // eax@12 int v8; // ecx@13 int v9; // eax@13 int v10; // ecx@16 signed int v11; // [sp+8h] [bp-8h]@1 int v12; // [sp+Ch] [bp-4h]@1 result = a1 + 236; v12 = a1 + 236; v11 = 9; do { v2 = *(_DWORD *)v12; if ( *(_DWORD *)v12 && *(_BYTE *)(v2 + 5) & 3 ) { v3 = *(_BYTE *)(v2 + 4); *(_BYTE *)(v2 + 5) &= 0xFCu; result = v3 - 4; switch ( result ) { case 0: case 16: v4 = *(_DWORD *)(v2 + 12); *(_BYTE *)(v2 + 5) |= 4u; result = v4 + 17; *(_DWORD *)(a1 + 16) += result; break; case 3: v5 = *(_DWORD *)(v2 + 8); if ( v5 && *(_BYTE *)(v5 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(v2 + 8)); v6 = *(_DWORD *)(v2 + 12); if ( v6 ) { if ( *(_BYTE *)(v6 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(v2 + 12)); } v7 = *(_DWORD *)(v2 + 16); *(_BYTE *)(v2 + 5) |= 4u; result = v7 + 24; *(_DWORD *)(a1 + 16) += result; break; case 6: v8 = *(_DWORD *)(v2 + 8); v9 = *(_DWORD *)(v8 + 4); if ( (*(_DWORD *)(v8 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 ) { v10 = *(_DWORD *)v8; if ( *(_BYTE *)(v10 + 5) & 3 ) sub_5FE2A0(a1, v10); } result = v2 + 16; if ( *(_DWORD *)(v2 + 8) == v2 + 16 ) { *(_BYTE *)(v2 + 5) |= 4u; result = 24; *(_DWORD *)(a1 + 16) += 24; } break; case 2: *(_DWORD *)(v2 + 8) = *(_DWORD *)(a1 + 76); goto LABEL_25; case 34: *(_DWORD *)(v2 + 8) = *(_DWORD *)(a1 + 76); goto LABEL_25; case 1: result = *(_DWORD *)(a1 + 76); *(_DWORD *)(v2 + 24) = result; goto LABEL_25; case 4: *(_DWORD *)(v2 + 60) = *(_DWORD *)(a1 + 76); goto LABEL_25; case 5: *(_DWORD *)(v2 + 72) = *(_DWORD *)(a1 + 76); LABEL_25: *(_DWORD *)(a1 + 76) = v2; break; default: break; } } v12 += 4; --v11; } while ( v11 ); return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FE580) -------------------------------------------------------- void __usercall sub_5FE580(int a1) { int i; // esi@1 int v2; // eax@2 int v3; // eax@3 int v4; // eax@4 int v5; // eax@7 int v6; // eax@10 int v7; // ecx@11 int v8; // eax@11 int v9; // ecx@14 for ( i = *(_DWORD *)(a1 + 96); i; i = *(_DWORD *)i ) { v2 = *(_BYTE *)(i + 4); *(_BYTE *)(i + 5) &= 0xB8u; switch ( v2 ) { case 4: case 20: v3 = *(_DWORD *)(i + 12); *(_BYTE *)(i + 5) |= 4u; *(_DWORD *)(a1 + 16) += v3 + 17; continue; case 7: v4 = *(_DWORD *)(i + 8); if ( v4 && *(_BYTE *)(v4 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(i + 8)); v5 = *(_DWORD *)(i + 12); if ( v5 ) { if ( *(_BYTE *)(v5 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(i + 12)); } v6 = *(_DWORD *)(i + 16); *(_BYTE *)(i + 5) |= 4u; *(_DWORD *)(a1 + 16) += v6 + 24; continue; case 10: v7 = *(_DWORD *)(i + 8); v8 = *(_DWORD *)(v7 + 4); if ( (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v8) = 3; if ( v8 & 0x40 ) { v9 = *(_DWORD *)v7; if ( *(_BYTE *)(v9 + 5) & 3 ) sub_5FE2A0(a1, v9); } if ( *(_DWORD *)(i + 8) == i + 16 ) { *(_BYTE *)(i + 5) |= 4u; *(_DWORD *)(a1 + 16) += 24; } continue; case 6: *(_DWORD *)(i + 8) = *(_DWORD *)(a1 + 76); goto LABEL_23; case 38: *(_DWORD *)(i + 8) = *(_DWORD *)(a1 + 76); goto LABEL_23; case 5: *(_DWORD *)(i + 24) = *(_DWORD *)(a1 + 76); goto LABEL_23; case 8: *(_DWORD *)(i + 60) = *(_DWORD *)(a1 + 76); goto LABEL_23; case 9: *(_DWORD *)(i + 72) = *(_DWORD *)(a1 + 76); LABEL_23: *(_DWORD *)(a1 + 76) = i; break; default: continue; } } } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FE6E0) -------------------------------------------------------- void __usercall sub_5FE6E0(int a1) { int i; // esi@1 int v2; // ecx@3 int v3; // eax@3 int v4; // ecx@6 for ( i = *(_DWORD *)(a1 + 124); i != a1 + 104; 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 ) sub_5FE2A0(a1, v4); } } } } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FE740) -------------------------------------------------------- void __usercall sub_5FE740(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@4 v1 = a1; v2 = *(_DWORD *)(a1 + 156); *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 76) = 0; *(_DWORD *)(v1 + 88) = 0; *(_DWORD *)(v1 + 92) = 0; *(_DWORD *)(v1 + 84) = 0; if ( v2 && *(_BYTE *)(v2 + 5) & 3 ) sub_5FE2A0(v1, v2); v3 = *(_DWORD *)(v1 + 44); if ( (*(_DWORD *)(v1 + 44) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; if ( v3 & 0x40 && *(_BYTE *)(*(_DWORD *)(v1 + 40) + 5) & 3 ) sub_5FE2A0(v1, *(_DWORD *)(v1 + 40)); sub_5FE400(v1); sub_5FE580(v1); } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FE7B0) -------------------------------------------------------- int __usercall sub_5FE7B0(int a1, int a2) { int v2; // esi@1 int v3; // ecx@1 int v4; // edi@1 int result; // eax@1 int v6; // ecx@2 int v7; // eax@2 int v8; // ecx@6 unsigned int j; // esi@9 int v10; // eax@10 int v11; // ecx@10 int v12; // eax@22 int i; // [sp+Ch] [bp-4h]@1 v2 = a1; v3 = *(_DWORD *)(a1 + 16); v4 = 0; result = 3 * (1 << *(_BYTE *)(a1 + 7)); for ( i = v3 + 8 * result; v4 < *(_DWORD *)(v2 + 28); ++v4 ) { v6 = *(_DWORD *)(v2 + 12) + 8 * v4; v7 = *(_DWORD *)(v6 + 4); if ( (*(_DWORD *)(v6 + 4) & 0x7FFFFF00) == 2146936064 ) result = (unsigned __int8)v7; else result = 3; if ( result & 0x40 ) { v8 = *(_DWORD *)v6; if ( *(_BYTE *)(v8 + 5) & 3 ) result = sub_5FE2A0(a2, v8); } } for ( j = *(_DWORD *)(v2 + 16); j < i; j += 24 ) { v10 = *(_DWORD *)(j + 12); v11 = *(_DWORD *)(j + 12) & 0x7FFFFF00; if ( *(_DWORD *)(j + 4) == 2146936064 ) { if ( v11 == 2146936064 ) result = (unsigned __int8)v10; else result = 3; if ( result & 0x40 ) { if ( *(_BYTE *)(*(_DWORD *)(j + 8) + 5) & 3 ) *(_DWORD *)(j + 12) = 2146936075; } } else { if ( v11 != 2146936064 ) LOBYTE(v10) = 3; if ( v10 & 0x40 && *(_BYTE *)(*(_DWORD *)(j + 8) + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)(j + 8)); v12 = *(_DWORD *)(j + 4); if ( (*(_DWORD *)(j + 4) & 0x7FFFFF00) == 2146936064 ) result = (unsigned __int8)v12; else result = 3; if ( result & 0x40 ) { result = *(_DWORD *)j; if ( *(_BYTE *)(*(_DWORD *)j + 5) & 3 ) result = sub_5FE2A0(a2, *(_DWORD *)j); } } } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FE8E0) -------------------------------------------------------- int __usercall sub_5FE8E0(int a1, int a2) { int v2; // eax@1 int v3; // eax@4 int v4; // ebx@6 int i; // edi@8 int v6; // ecx@9 int v7; // eax@9 int v8; // ecx@12 int j; // edi@15 int v10; // eax@16 int k; // edi@20 int v12; // ecx@21 int v13; // eax@22 int v14; // ebx@25 int v15; // edi@26 int v16; // edx@27 int v17; // eax@27 v2 = *(_DWORD *)(a1 + 32); if ( v2 && *(_BYTE *)(v2 + 5) & 3 ) *(_DWORD *)(a1 + 32) = 0; v3 = *(_DWORD *)(a1 + 36); if ( v3 && *(_BYTE *)(v3 + 5) & 3 ) { v4 = a2; sub_5FE2A0(a2, v3); } else { v4 = a2; } for ( i = 0; i < *(_DWORD *)(a1 + 44); ++i ) { v6 = *(_DWORD *)(a1 + 8) + 8 * i; v7 = *(_DWORD *)(v6 + 4); if ( (*(_DWORD *)(v6 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v7) = 3; if ( v7 & 0x40 ) { v8 = *(_DWORD *)v6; if ( *(_BYTE *)(v8 + 5) & 3 ) sub_5FE2A0(v4, v8); } } for ( j = 0; j < *(_DWORD *)(a1 + 40); ++j ) { v10 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 8 * j); if ( v10 && *(_BYTE *)(v10 + 5) & 3 ) sub_5FE2A0(v4, *(_DWORD *)(*(_DWORD *)(a1 + 28) + 8 * j)); } for ( k = 0; k < *(_DWORD *)(a1 + 56); ++k ) { v12 = *(_DWORD *)(a1 + 16); if ( *(_DWORD *)(v12 + 4 * k) ) { v13 = *(_DWORD *)(v12 + 4 * k); if ( *(_BYTE *)(v13 + 5) & 3 ) sub_5FE2A0(v4, v13); } } v14 = 0; if ( *(_DWORD *)(a1 + 60) > 0 ) { v15 = 0; do { v16 = *(_DWORD *)(a1 + 24); v17 = *(_DWORD *)(v15 + v16); if ( v17 && *(_BYTE *)(v17 + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)(v15 + v16)); ++v14; v15 += 12; } while ( v14 < *(_DWORD *)(a1 + 60) ); } return 4 * (*(_DWORD *)(a1 + 56) + *(_DWORD *)(a1 + 48) + *(_DWORD *)(a1 + 52) + 3 * *(_DWORD *)(a1 + 60) + 2 * (*(_DWORD *)(a1 + 40) + *(_DWORD *)(a1 + 44)) + 20); } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FEA10) -------------------------------------------------------- int __usercall sub_5FEA10(int a1, int a2) { int v2; // eax@1 int v3; // ebx@2 int v4; // eax@3 int v5; // esi@6 int v6; // eax@7 int v7; // eax@8 int v8; // eax@9 int v9; // eax@12 int v10; // eax@15 int v11; // ecx@16 int v12; // eax@16 int v13; // ecx@19 signed int v15; // [sp+0h] [bp-4h]@1 v2 = a2; v15 = 0; if ( *(_BYTE *)(a2 + 6) ) { v3 = a2 + 16; do { v4 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 ) { v5 = *(_DWORD *)v3; if ( *(_BYTE *)(*(_DWORD *)v3 + 5) & 3 ) { v6 = *(_BYTE *)(v5 + 4); *(_BYTE *)(v5 + 5) &= 0xFCu; switch ( v6 ) { case 4: case 20: v7 = *(_DWORD *)(v5 + 12); *(_BYTE *)(v5 + 5) |= 4u; *(_DWORD *)(a1 + 16) += v7 + 17; break; case 7: v8 = *(_DWORD *)(v5 + 8); if ( v8 && *(_BYTE *)(v8 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(v5 + 8)); v9 = *(_DWORD *)(v5 + 12); if ( v9 && *(_BYTE *)(v9 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(v5 + 12)); v10 = *(_DWORD *)(v5 + 16); *(_BYTE *)(v5 + 5) |= 4u; *(_DWORD *)(a1 + 16) += v10 + 24; break; case 10: v11 = *(_DWORD *)(v5 + 8); v12 = *(_DWORD *)(v11 + 4); if ( (*(_DWORD *)(v11 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v12) = 3; if ( v12 & 0x40 ) { v13 = *(_DWORD *)v11; if ( *(_BYTE *)(v13 + 5) & 3 ) sub_5FE2A0(a1, v13); } if ( *(_DWORD *)(v5 + 8) == v5 + 16 ) { *(_BYTE *)(v5 + 5) |= 4u; *(_DWORD *)(a1 + 16) += 24; } break; case 6: *(_DWORD *)(v5 + 8) = *(_DWORD *)(a1 + 76); goto LABEL_28; case 38: *(_DWORD *)(v5 + 8) = *(_DWORD *)(a1 + 76); goto LABEL_28; case 5: *(_DWORD *)(v5 + 24) = *(_DWORD *)(a1 + 76); goto LABEL_28; case 8: *(_DWORD *)(v5 + 60) = *(_DWORD *)(a1 + 76); goto LABEL_28; case 9: *(_DWORD *)(v5 + 72) = *(_DWORD *)(a1 + 76); LABEL_28: *(_DWORD *)(a1 + 76) = v5; break; default: break; } } } v2 = a2; v3 += 8; ++v15; } while ( v15 < *(_BYTE *)(a2 + 6) ); } return 8 * *(_BYTE *)(v2 + 6) + 16; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FEBC0) -------------------------------------------------------- int __usercall sub_5FEBC0(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 signed int v4; // ebx@4 int v5; // esi@5 int v6; // esi@6 int v7; // eax@8 int v8; // eax@9 int v9; // eax@10 int v10; // eax@13 int v11; // eax@16 int v12; // ecx@17 int v13; // eax@17 int v14; // ecx@20 int v16; // [sp+8h] [bp-4h]@5 v2 = a2; v3 = *(_DWORD *)(a2 + 12); if ( v3 && *(_BYTE *)(v3 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(a2 + 12)); v4 = 0; if ( *(_BYTE *)(a2 + 6) ) { v5 = a2 + 16; v16 = a2 + 16; do { v6 = *(_DWORD *)v5; if ( v6 && *(_BYTE *)(v6 + 5) & 3 ) { v7 = *(_BYTE *)(v6 + 4); *(_BYTE *)(v6 + 5) &= 0xFCu; switch ( v7 ) { case 4: case 20: v8 = *(_DWORD *)(v6 + 12); *(_BYTE *)(v6 + 5) |= 4u; *(_DWORD *)(a1 + 16) += v8 + 17; break; case 7: v9 = *(_DWORD *)(v6 + 8); if ( v9 && *(_BYTE *)(v9 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(v6 + 8)); v10 = *(_DWORD *)(v6 + 12); if ( v10 && *(_BYTE *)(v10 + 5) & 3 ) sub_5FE2A0(a1, *(_DWORD *)(v6 + 12)); v11 = *(_DWORD *)(v6 + 16); *(_BYTE *)(v6 + 5) |= 4u; *(_DWORD *)(a1 + 16) += v11 + 24; break; case 10: v12 = *(_DWORD *)(v6 + 8); v13 = *(_DWORD *)(v12 + 4); if ( (*(_DWORD *)(v12 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v13) = 3; if ( v13 & 0x40 ) { v14 = *(_DWORD *)v12; if ( *(_BYTE *)(v14 + 5) & 3 ) sub_5FE2A0(a1, v14); } if ( *(_DWORD *)(v6 + 8) == v6 + 16 ) { *(_BYTE *)(v6 + 5) |= 4u; *(_DWORD *)(a1 + 16) += 24; } break; case 6: *(_DWORD *)(v6 + 8) = *(_DWORD *)(a1 + 76); goto LABEL_29; case 38: *(_DWORD *)(v6 + 8) = *(_DWORD *)(a1 + 76); goto LABEL_29; case 5: *(_DWORD *)(v6 + 24) = *(_DWORD *)(a1 + 76); goto LABEL_29; case 8: *(_DWORD *)(v6 + 60) = *(_DWORD *)(a1 + 76); goto LABEL_29; case 9: *(_DWORD *)(v6 + 72) = *(_DWORD *)(a1 + 76); LABEL_29: *(_DWORD *)(a1 + 76) = v6; break; default: break; } } ++v4; v5 = v16 + 4; v16 += 4; } while ( v4 < *(_BYTE *)(a2 + 6) ); v2 = a2; } return 4 * *(_BYTE *)(v2 + 6) + 16; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FED70) -------------------------------------------------------- int __usercall sub_5FED70(int a1, int a2) { unsigned int v2; // esi@1 int result; // eax@2 int v4; // eax@4 int i; // eax@11 v2 = *(_DWORD *)(a1 + 28); if ( v2 ) { for ( ; v2 < *(_DWORD *)(a1 + 8); v2 += 8 ) { v4 = *(_DWORD *)(v2 + 4); if ( (*(_DWORD *)(v2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 && *(_BYTE *)(*(_DWORD *)v2 + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)v2); } if ( *(_BYTE *)(a2 + 53) == 1 ) { for ( i = *(_DWORD *)(a1 + 28) + 8 * *(_DWORD *)(a1 + 32); v2 < i; v2 += 8 ) *(_DWORD *)(v2 + 4) = 2146936064; } result = 8 * *(_DWORD *)(a1 + 32) + 112; } else { result = 1; } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FEE10) -------------------------------------------------------- int __usercall sub_5FEE10(int result, int a2) { switch ( *(_BYTE *)(result + 4) ) { case 9: result = sub_5FE140(a2, result); break; case 6: result = sub_603740(a2, result, 4 * *(_BYTE *)(result + 6) + 16, 0); break; case 0x26: result = sub_603740(a2, result, 8 * *(_BYTE *)(result + 6) + 16, 0); break; case 0xA: result = sub_5FE000(a2, result); break; case 5: result = sub_60BE50(a2, result); break; case 8: result = sub_609010(a2, result); break; case 7: result = sub_603740(a2, result, *(_DWORD *)(result + 16) + 24, 0); break; case 4: --*(_DWORD *)(*(_DWORD *)(a2 + 12) + 28); goto LABEL_10; case 0x14: LABEL_10: result = sub_603740(a2, result, *(_DWORD *)(result + 12) + 17, 0); break; default: return result; } return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FEF10) -------------------------------------------------------- int __cdecl sub_5FEF10(int a1, int a2, int a3) { int v3; // ecx@1 int v4; // edx@1 char v5; // al@2 int v6; // edi@4 int v8; // ecx@7 int v9; // esi@8 int v10; // ebx@8 int v11; // [sp+0h] [bp-10h]@1 char v12; // [sp+4h] [bp-Ch]@4 char v13; // [sp+8h] [bp-8h]@2 signed int v14; // [sp+Ch] [bp-4h]@2 v3 = *(_DWORD *)(a1 + 12); v4 = *(_BYTE *)(v3 + 52) ^ 3; v11 = *(_BYTE *)(v3 + 52) ^ 3; if ( *(_BYTE *)(v3 + 54) == 2 ) { v5 = 64; v13 = -1; v14 = 64; } else { v13 = -72; v5 = *(_BYTE *)(v3 + 52) & 3; v14 = 0; } v6 = a2; v12 = v5; if ( *(_DWORD *)a2 ) { while ( 1 ) { v8 = a3--; if ( !v8 ) break; v9 = *(_DWORD *)v6; v10 = *(_BYTE *)(*(_DWORD *)v6 + 5); if ( (*(_BYTE *)(*(_DWORD *)v6 + 5) ^ 3) & v4 ) { if ( v10 & v14 ) return 0; if ( *(_BYTE *)(v9 + 4) == 8 && *(_DWORD *)(v9 + 28) ) { sub_5FEF10(a1, v9 + 56, -3); sub_608D60(v9); if ( *(_BYTE *)(*(_DWORD *)(a1 + 12) + 54) != 1 ) sub_5FCD70(v9); } v6 = v9; *(_BYTE *)(v9 + 5) = v12 | v10 & v13; } else { *(_DWORD *)v6 = *(_DWORD *)v9; sub_5FEE10(v9, a1); } if ( !*(_DWORD *)v6 ) return *(_DWORD *)v6 != 0 ? v6 : 0; v4 = v11; } } return *(_DWORD *)v6 != 0 ? v6 : 0; } // 5FEF10: using guessed type _DWORD __cdecl sub_5FEF10(_DWORD, _DWORD, _DWORD); //----- (005FF010) -------------------------------------------------------- int __usercall sub_5FF010(int result, int a2, int a3) { int v3; // edx@2 int v4; // ecx@2 signed int v5; // ebx@2 int v6; // edi@2 char v7; // cl@3 int v8; // esi@13 int v9; // ebx@13 int v10; // eax@14 int v11; // [sp+Ch] [bp-1Ch]@1 int v12; // [sp+10h] [bp-18h]@2 int v13; // [sp+14h] [bp-14h]@12 char v14; // [sp+18h] [bp-10h]@5 char v15; // [sp+1Ch] [bp-Ch]@3 signed int v16; // [sp+20h] [bp-8h]@3 int v17; // [sp+24h] [bp-4h]@1 v11 = result; v17 = 0; do { v3 = *(_DWORD *)(a2 + 12); v4 = *(_BYTE *)(v3 + 52); v5 = 1; ++v17; v6 = result; v12 = v4 ^ 3; if ( *(_BYTE *)(v3 + 54) == 2 ) { v7 = 64; v15 = -1; v16 = 64; } else { v15 = -72; v7 = v4 & 3; v16 = 0; } v14 = v7; if ( *(_DWORD *)result ) { while ( 1 ) { v13 = v5 - 1; if ( !v5 ) break; v8 = *(_DWORD *)v6; v9 = *(_BYTE *)(*(_DWORD *)v6 + 5); if ( (*(_BYTE *)(*(_DWORD *)v6 + 5) ^ 3) & v12 ) { if ( v9 & v16 ) { result = 0; goto LABEL_7; } if ( *(_BYTE *)(v8 + 4) == 8 ) { if ( *(_DWORD *)(v8 + 28) ) { sub_5FEF10(a2, v8 + 56, -3); sub_608D60(v8); if ( *(_BYTE *)(*(_DWORD *)(a2 + 12) + 54) != 1 ) sub_5FCD70(v8); } } v6 = v8; *(_BYTE *)(v8 + 5) = v14 | v9 & v15; } else { v10 = *(_DWORD *)v6; *(_DWORD *)v6 = *(_DWORD *)v8; sub_5FEE10(v10, a2); } if ( !*(_DWORD *)v6 ) break; v5 = v13; } } result = *(_DWORD *)v6 != 0 ? v6 : 0; LABEL_7: ; } while ( result == v11 ); if ( a3 ) *(_DWORD *)a3 += v17; return result; } // 5FEF10: using guessed type _DWORD __cdecl sub_5FEF10(_DWORD, _DWORD, _DWORD); //----- (005FF120) -------------------------------------------------------- void __usercall sub_5FF120(int a1) { int v1; // esi@1 v1 = *(_DWORD *)(a1 + 12); if ( *(_BYTE *)(v1 + 54) != 1 ) { if ( *(_DWORD *)(v1 + 28) < (unsigned int)(*(_DWORD *)(v1 + 32) / 2) ) sub_609340(a1, *(_DWORD *)(v1 + 32) / 2); *(_DWORD *)(v1 + 128) = sub_603740(a1, *(_DWORD *)(v1 + 128), *(_DWORD *)(v1 + 136), 0); *(_DWORD *)(v1 + 136) = 0; } } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005FF170) -------------------------------------------------------- int __cdecl sub_5FF170(int a1) { return sub_5FD660(a1, *(_DWORD *)(a1 + 8) - 16, 0, 0); } //----- (005FF190) -------------------------------------------------------- signed int __usercall sub_5FF190(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // edx@1 signed int result; // eax@4 int v6; // ecx@6 char v7; // bl@6 int v8; // edx@6 int v9; // ecx@6 int v10; // eax@6 char v11; // cl@6 int v12; // eax@9 int v13; // eax@10 int v14; // [sp+4h] [bp-Ch]@4 int v15; // [sp+8h] [bp-8h]@4 int v16; // [sp+Ch] [bp-4h]@6 v2 = *(_DWORD *)(a1 + 12); v3 = *(_DWORD *)(v2 + 96); v4 = *(_DWORD *)(v2 + 60); *(_DWORD *)(v2 + 96) = *(_DWORD *)v3; *(_DWORD *)v3 = v4; *(_DWORD *)(v2 + 60) = v3; *(_BYTE *)(v3 + 5) &= 0xEFu; if ( *(_BYTE *)(v2 + 54) != 2 && *(_BYTE *)(v2 + 53) > 1u ) *(_BYTE *)(v3 + 5) = *(_BYTE *)(v3 + 5) & 0xB8 | *(_BYTE *)(v2 + 52) & 3; v14 = v3; v15 = *(_BYTE *)(v3 + 4) | 0x7FF7A540; result = sub_60D040(a1, (int)&v14, 2); if ( result ) { if ( (*(_DWORD *)(result + 4) | 0x70) == 2146936182 ) { v6 = *(_BYTE *)(v2 + 55); v7 = *(_BYTE *)(a1 + 41); *(_BYTE *)(a1 + 41) = 0; *(_BYTE *)(v2 + 55) = 0; v8 = *(_DWORD *)result; v16 = v6; v9 = *(_DWORD *)(a1 + 8); *(_DWORD *)v9 = v8; *(_DWORD *)(v9 + 4) = *(_DWORD *)(result + 4); v10 = *(_DWORD *)(a1 + 8); *(_DWORD *)(v10 + 8) = v14; *(_DWORD *)(v10 + 12) = v15; *(_DWORD *)(a1 + 8) += 16; result = sub_5FD1E0( a1, (void (__cdecl *)(_DWORD, _DWORD))sub_5FF170, 0, *(_DWORD *)(a1 + 8) - *(_DWORD *)(a1 + 28) - 16, 0); v11 = v16; *(_BYTE *)(a1 + 41) = v7; *(_BYTE *)(v2 + 55) = v11; if ( result ) { if ( a2 ) { if ( result == 2 ) { v12 = *(_DWORD *)(a1 + 8); if ( (*(_DWORD *)(v12 - 4) | 0x70) == 2146936180 ) LOBYTE(v13) = *(_DWORD *)(v12 - 8) + 16; else v13 = (int)"no message"; sub_604B20(a1, (int)"error in __gc metamethod (%s)", v13); result = 5; } sub_5FCB10(a1, result); } } } } return result; } //----- (005FF2B0) -------------------------------------------------------- void __cdecl sub_5FF2B0(int a1, int a2, int a3) { int v3; // edi@1 int v4; // eax@5 int v5; // eax@7 int i; // ecx@7 char v7; // al@9 v3 = *(_DWORD *)(a1 + 12); if ( !(*(_BYTE *)(a2 + 5) & 0x18) && a3 && !(*(_BYTE *)(a3 + 6) & 4) && sub_60D010(a3, 2, *(_DWORD *)(v3 + 176)) ) { v4 = *(_DWORD *)(v3 + 68); if ( v4 == a2 ) *(_DWORD *)(v3 + 68) = sub_5FF010(v4, a1, 0); v5 = *(_DWORD *)(v3 + 60); for ( i = v3 + 60; v5 != a2; v5 = *(_DWORD *)v5 ) i = v5; *(_DWORD *)i = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(v3 + 64); *(_DWORD *)(v3 + 64) = a2; v7 = *(_BYTE *)(a2 + 5) | 0x10; *(_BYTE *)(a2 + 5) = v7; if ( *(_BYTE *)(v3 + 54) == 2 || *(_BYTE *)(v3 + 53) <= 1u ) *(_BYTE *)(a2 + 5) = v7 & 0xBF; else *(_BYTE *)(a2 + 5) = v7 & 0xB8 | *(_BYTE *)(v3 + 52) & 3; } } //----- (005FF4A0) -------------------------------------------------------- int __cdecl sub_5FF4A0(int a1) { int v1; // edi@1 int v2; // eax@1 int i; // ecx@1 int j; // eax@3 int v5; // ebx@4 int result; // eax@5 int k; // ebx@5 v1 = *(_DWORD *)(a1 + 12); v2 = *(_DWORD *)(v1 + 96); for ( i = v1 + 96; v2; v2 = *(_DWORD *)v2 ) i = v2; for ( j = *(_DWORD *)(v1 + 64); j; j = *(_DWORD *)(v1 + 64) ) { v5 = *(_DWORD *)j; *(_BYTE *)(j + 5) |= 8u; *(_DWORD *)(v1 + 64) = v5; *(_DWORD *)j = *(_DWORD *)i; *(_DWORD *)i = j; i = j; } loc_5FF360(i); *(_BYTE *)(v1 + 52) = 3; *(_BYTE *)(v1 + 54) = 0; sub_5FEF10(a1, v1 + 64, -3); result = sub_5FEF10(a1, v1 + 60, -3); for ( k = 0; k < *(_DWORD *)(v1 + 32); ++k ) result = sub_5FEF10(a1, *(_DWORD *)(v1 + 24) + 4 * k, -3); return result; } // 5FEF10: using guessed type _DWORD __cdecl sub_5FEF10(_DWORD, _DWORD, _DWORD); //----- (005FF530) -------------------------------------------------------- char __cdecl sub_5FF530(int a1, int a2, int a3) { int v3; // eax@1 char v4; // dl@3 char result; // al@3 v3 = *(_DWORD *)(a1 + 12); if ( *(_BYTE *)(v3 + 54) == 2 || *(_BYTE *)(v3 + 53) <= 1u ) { result = sub_5FE2A0(v3, a3); } else { v4 = *(_BYTE *)(v3 + 52); result = *(_BYTE *)(a2 + 5) & 0xB8; *(_BYTE *)(a2 + 5) = result | v4 & 3; } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FF570) -------------------------------------------------------- char __cdecl sub_5FF570(int a1, int a2, int a3) { char result; // al@1 int v4; // ecx@1 result = a2; v4 = *(_DWORD *)(a1 + 12); if ( *(_DWORD *)(a2 + 32) ) { *(_BYTE *)(a2 + 5) &= 0xFBu; *(_DWORD *)(a2 + 72) = *(_DWORD *)(v4 + 80); *(_DWORD *)(v4 + 80) = a2; } else { if ( *(_BYTE *)(a3 + 5) & 3 ) { if ( *(_BYTE *)(a2 + 5) & 4 ) result = sub_5FF530(a1, a2, a3); } } return result; } //----- (005FF5B0) -------------------------------------------------------- char __cdecl sub_5FF5B0(int a1, int a2) { int v2; // eax@1 int v3; // ecx@5 int v4; // ecx@8 LOBYTE(v2) = *(_BYTE *)(a2 + 5); if ( !(v2 & 7) ) { if ( *(_BYTE *)(a1 + 54) == 2 || *(_BYTE *)(a1 + 53) <= 1u ) { *(_BYTE *)(a2 + 5) = v2 & 0xBF | 4; v3 = *(_DWORD *)(a2 + 8); v2 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v2) = 3; if ( v2 & 0x40 ) { v4 = *(_DWORD *)v3; if ( *(_BYTE *)(v4 + 5) & 3 ) LOBYTE(v2) = sub_5FE2A0(a1, v4); } } else { LOBYTE(v2) = v2 & 0xB8; *(_BYTE *)(a2 + 5) = v2 | *(_BYTE *)(a1 + 52) & 3; } } return v2; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FF620) -------------------------------------------------------- int __usercall sub_5FF620(int a1, int a2) { unsigned int v2; // esi@1 int v3; // ebx@1 int v4; // eax@2 int v5; // eax@14 char v6; // cl@15 bool v7; // zf@18 int v8; // eax@18 int result; // eax@25 signed int i; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)(a1 + 16); v3 = v2 + 24 * (1 << *(_BYTE *)(a1 + 7)); for ( i = *(_DWORD *)(a1 + 28) > 0; v2 < v3; v2 += 24 ) { v4 = *(_DWORD *)(v2 + 12); if ( *(_DWORD *)(v2 + 4) == 2146936064 ) { if ( (v4 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 && *(_BYTE *)(*(_DWORD *)(v2 + 8) + 5) & 3 ) *(_DWORD *)(v2 + 12) = 2146936075; } else { if ( (v4 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 && *(_BYTE *)(*(_DWORD *)(v2 + 8) + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)(v2 + 8)); if ( !i ) { v5 = *(_DWORD *)(v2 + 4); v6 = (*(_DWORD *)(v2 + 4) & 0x7FFFFF00) == 2146936064 ? (_BYTE)v5 : 3; if ( v6 & 0x40 ) { v7 = (v5 | 0x70) == 2146936180; v8 = *(_DWORD *)v2; if ( v7 ) { if ( v8 && *(_BYTE *)(v8 + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)v2); } else { if ( *(_BYTE *)(v8 + 5) & 3 ) i = 1; } } } } } result = a2; if ( i ) { *(_DWORD *)(a1 + 24) = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 84) = a1; } else { *(_DWORD *)(a1 + 24) = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 80) = a1; } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FF770) -------------------------------------------------------- signed int __usercall sub_5FF770(int a1, int a2) { int v2; // esi@1 signed int v3; // ebx@1 int v4; // ecx@2 int v5; // eax@2 int v6; // ecx@5 unsigned int v7; // esi@8 int v8; // eax@9 int v9; // edx@9 int v10; // ecx@9 char v11; // cl@16 bool v12; // zf@19 int v13; // eax@19 int v14; // eax@23 signed int v16; // [sp+Ch] [bp-Ch]@1 signed int v17; // [sp+10h] [bp-8h]@1 int i; // [sp+14h] [bp-4h]@1 v2 = 0; v3 = 0; v16 = 0; v17 = 0; for ( i = *(_DWORD *)(a1 + 16) + 24 * (1 << *(_BYTE *)(a1 + 7)); v2 < *(_DWORD *)(a1 + 28); ++v2 ) { v4 = *(_DWORD *)(a1 + 12) + 8 * v2; v5 = *(_DWORD *)(v4 + 4); if ( (*(_DWORD *)(v4 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v5) = 3; if ( v5 & 0x40 ) { v6 = *(_DWORD *)v4; if ( *(_BYTE *)(v6 + 5) & 3 ) { v3 = 1; sub_5FE2A0(a2, v6); } } } v7 = *(_DWORD *)(a1 + 16); if ( v7 >= i ) goto LABEL_39; do { v8 = *(_DWORD *)(v7 + 12); v9 = *(_DWORD *)(v7 + 4); v10 = *(_DWORD *)(v7 + 12) & 0x7FFFFF00; if ( v9 == 2146936064 ) { if ( v10 != 2146936064 ) LOBYTE(v8) = 3; if ( v8 & 0x40 ) { if ( *(_BYTE *)(*(_DWORD *)(v7 + 8) + 5) & 3 ) *(_DWORD *)(v7 + 12) = 2146936075; } goto LABEL_34; } if ( v10 == 2146936064 ) v11 = v8; else v11 = 3; if ( !(v11 & 0x40) ) goto LABEL_23; v12 = (v8 | 0x70) == 2146936180; v13 = *(_DWORD *)(v7 + 8); if ( v12 ) { if ( v13 && *(_BYTE *)(v13 + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)(v7 + 8)); LABEL_23: v14 = *(_DWORD *)(v7 + 4); if ( (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v14) = 3; if ( v14 & 0x40 && *(_BYTE *)(*(_DWORD *)v7 + 5) & 3 ) { v3 = 1; sub_5FE2A0(a2, *(_DWORD *)v7); } goto LABEL_34; } if ( !(*(_BYTE *)(v13 + 5) & 3) ) goto LABEL_23; v16 = 1; if ( (v9 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 && *(_BYTE *)(*(_DWORD *)v7 + 5) & 3 ) v17 = 1; LABEL_34: v7 += 24; } while ( v7 < i ); if ( v17 ) { *(_DWORD *)(a1 + 24) = *(_DWORD *)(a2 + 88); *(_DWORD *)(a2 + 88) = a1; return v3; } if ( v16 ) { *(_DWORD *)(a1 + 24) = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 92) = a1; return v3; } LABEL_39: *(_DWORD *)(a1 + 24) = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 80) = a1; return v3; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FF950) -------------------------------------------------------- int __usercall sub_5FF950(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // esi@2 int v5; // eax@6 char *v6; // ebx@11 char *v7; // eax@11 v2 = a1; v3 = *(_DWORD *)(a1 + 8); if ( v3 ) { if ( *(_BYTE *)(v3 + 6) & 8 ) v4 = 0; else v4 = sub_60D010(v3, 3, *(_DWORD *)(a2 + 180)); } else { v4 = 0; } v5 = *(_DWORD *)(v2 + 8); if ( v5 && *(_BYTE *)(v5 + 5) & 3 ) sub_5FE2A0(a2, *(_DWORD *)(v2 + 8)); if ( v4 && (*(_DWORD *)(v4 + 4) | 0x70) == 2146936180 && ((v6 = strchr((const char *)(*(_DWORD *)v4 + 16), 107), v7 = strchr((const char *)(*(_DWORD *)v4 + 16), 118), v6) || v7) ) { *(_BYTE *)(v2 + 5) &= 0xFBu; if ( v6 ) { if ( v7 ) { *(_DWORD *)(v2 + 24) = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 92) = v2; } else { sub_5FF770(v2, a2); } } else { sub_5FF620(v2, a2); } } else { sub_5FE7B0(v2, a2); } return 8 * (*(_DWORD *)(v2 + 28) + 3 * (1 << *(_BYTE *)(v2 + 7))) + 32; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FFA40) -------------------------------------------------------- int __usercall sub_5FFA40(int a1) { int result; // eax@1 int v2; // ecx@1 int v3; // edx@5 result = *(_DWORD *)(a1 + 76); v2 = *(_BYTE *)(result + 4); *(_BYTE *)(result + 5) |= 4u; switch ( v2 ) { case 5: *(_DWORD *)(a1 + 76) = *(_DWORD *)(result + 24); result = sub_5FF950(result, a1); *(_DWORD *)(a1 + 16) += result; break; case 6: *(_DWORD *)(a1 + 76) = *(_DWORD *)(result + 8); result = sub_5FEBC0(a1, result); *(_DWORD *)(a1 + 16) += result; break; case 38: *(_DWORD *)(a1 + 76) = *(_DWORD *)(result + 8); result = sub_5FEA10(a1, result); *(_DWORD *)(a1 + 16) += result; break; case 8: v3 = *(_DWORD *)(a1 + 80); *(_DWORD *)(a1 + 76) = *(_DWORD *)(result + 60); *(_DWORD *)(result + 60) = v3; *(_DWORD *)(a1 + 80) = result; *(_BYTE *)(result + 5) &= 0xFBu; result = sub_5FED70(result, a1); *(_DWORD *)(a1 + 16) += result; break; case 9: *(_DWORD *)(a1 + 76) = *(_DWORD *)(result + 72); result = sub_5FE8E0(result, a1); *(_DWORD *)(a1 + 16) += result; break; default: return result; } return result; } //----- (005FFB20) -------------------------------------------------------- void __usercall sub_5FFB20(int a1) { int v1; // eax@2 int v2; // ecx@2 int v3; // eax@3 int v4; // edx@6 while ( *(_DWORD *)(a1 + 76) ) { v1 = *(_DWORD *)(a1 + 76); v2 = *(_BYTE *)(v1 + 4); *(_BYTE *)(v1 + 5) |= 4u; switch ( v2 ) { case 5: *(_DWORD *)(a1 + 76) = *(_DWORD *)(v1 + 24); v3 = sub_5FF950(v1, a1); goto LABEL_8; case 6: *(_DWORD *)(a1 + 76) = *(_DWORD *)(v1 + 8); v3 = sub_5FEBC0(a1, v1); goto LABEL_8; case 38: *(_DWORD *)(a1 + 76) = *(_DWORD *)(v1 + 8); v3 = sub_5FEA10(a1, v1); goto LABEL_8; case 8: v4 = *(_DWORD *)(a1 + 80); *(_DWORD *)(a1 + 76) = *(_DWORD *)(v1 + 60); *(_DWORD *)(v1 + 60) = v4; *(_DWORD *)(a1 + 80) = v1; *(_BYTE *)(v1 + 5) &= 0xFBu; v3 = sub_5FED70(v1, a1); goto LABEL_8; case 9: *(_DWORD *)(a1 + 76) = *(_DWORD *)(v1 + 72); v3 = sub_5FE8E0(v1, a1); LABEL_8: *(_DWORD *)(a1 + 16) += v3; break; default: break; } } } //----- (005FFC00) -------------------------------------------------------- void __usercall sub_5FFC00(int a1) { int v1; // ebx@1 int v2; // esi@2 int v3; // edi@2 signed int v4; // [sp+Ch] [bp-4h]@2 v1 = a1; do { v2 = *(_DWORD *)(v1 + 88); *(_DWORD *)(v1 + 88) = 0; v4 = 0; v3 = v2; if ( !v2 ) break; do { v2 = *(_DWORD *)(v2 + 24); if ( sub_5FF770(v3, v1) ) { sub_5FFB20(v1); v4 = 1; } v3 = v2; } while ( v2 ); } while ( v4 ); } //----- (005FFC50) -------------------------------------------------------- int __usercall sub_5FFC50(int result, int a2, int a3) { int i; // ebx@1 char v4; // cl@2 unsigned int v5; // esi@2 int j; // edi@2 unsigned __int8 v7; // cl@5 bool v8; // zf@8 int v9; // eax@13 int v10; // ecx@13 for ( i = result; i != a3; i = *(_DWORD *)(i + 24) ) { v4 = *(_BYTE *)(i + 7); v5 = *(_DWORD *)(i + 16); result = 3 * (1 << v4); for ( j = v5 + 24 * (1 << v4); v5 < j; v5 += 24 ) { if ( *(_DWORD *)(v5 + 4) != 2146936064 ) { result = *(_DWORD *)(v5 + 12); v7 = (*(_DWORD *)(v5 + 12) & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)*(_DWORD *)(v5 + 12) : 3; if ( v7 & 0x40 ) { v8 = (result | 0x70) == 2146936180; result = *(_DWORD *)(v5 + 8); if ( v8 ) { if ( result ) { if ( *(_BYTE *)(result + 5) & 3 ) result = sub_5FE2A0(a2, *(_DWORD *)(v5 + 8)); } } else { if ( *(_BYTE *)(result + 5) & 3 ) { v9 = *(_DWORD *)(v5 + 12); v10 = *(_DWORD *)(v5 + 12) & 0x7FFFFF00; *(_DWORD *)(v5 + 4) = 2146936064; result = v10 == 2146936064 ? (unsigned __int8)v9 : 3; if ( result & 0x40 && *(_BYTE *)(*(_DWORD *)(v5 + 8) + 5) & 3 ) *(_DWORD *)(v5 + 12) = 2146936075; } } } } } } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FFD30) -------------------------------------------------------- int __usercall sub_5FFD30(int result, int a2, int a3) { int i; // edi@1 int v4; // esi@2 int v5; // ecx@3 char v6; // dl@4 int v7; // ecx@8 unsigned int k; // esi@14 unsigned __int8 v9; // cl@17 bool v10; // zf@20 int v11; // eax@25 int v12; // edx@25 int j; // [sp+8h] [bp-4h]@2 for ( i = result; i != a3; i = *(_DWORD *)(i + 24) ) { v4 = 0; result = 3 * (1 << *(_BYTE *)(i + 7)); for ( j = *(_DWORD *)(i + 16) + 24 * (1 << *(_BYTE *)(i + 7)); v4 < *(_DWORD *)(i + 28); ++v4 ) { v5 = *(_DWORD *)(i + 12) + 8 * v4; result = *(_DWORD *)(v5 + 4); if ( (*(_DWORD *)(v5 + 4) & 0x7FFFFF00) == 2146936064 ) v6 = *(_DWORD *)(v5 + 4); else v6 = 3; if ( v6 & 0x40 ) { result |= 0x70u; if ( result == 2146936180 ) { v7 = *(_DWORD *)v5; if ( v7 && *(_BYTE *)(v7 + 5) & 3 ) result = sub_5FE2A0(a2, v7); } else { result = *(_BYTE *)(*(_DWORD *)v5 + 5) & 3; if ( *(_BYTE *)(*(_DWORD *)v5 + 5) & 3 ) *(_DWORD *)(v5 + 4) = 2146936064; } } } for ( k = *(_DWORD *)(i + 16); k < j; k += 24 ) { result = *(_DWORD *)(k + 4); if ( result != 2146936064 ) { v9 = (result & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)*(_DWORD *)(k + 4) : 3; if ( v9 & 0x40 ) { v10 = (result | 0x70) == 2146936180; result = *(_DWORD *)k; if ( v10 ) { if ( result ) { if ( *(_BYTE *)(result + 5) & 3 ) result = sub_5FE2A0(a2, *(_DWORD *)k); } } else { if ( *(_BYTE *)(result + 5) & 3 ) { v11 = *(_DWORD *)(k + 12); v12 = *(_DWORD *)(k + 12) & 0x7FFFFF00; *(_DWORD *)(k + 4) = 2146936064; result = v12 == 2146936064 ? (unsigned __int8)v11 : 3; if ( result & 0x40 ) { result = *(_DWORD *)(k + 8); if ( *(_BYTE *)(result + 5) & 3 ) *(_DWORD *)(k + 12) = 2146936075; } } } } } } } return result; } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (005FFE90) -------------------------------------------------------- int __cdecl sub_5FFE90(int a1) { int v1; // edi@1 int v2; // esi@1 int v3; // eax@3 int v4; // esi@8 int v5; // ST34_4@8 int v6; // ST30_4@8 int v7; // ST2C_4@8 int v8; // esi@8 int v9; // ecx@8 int v10; // esi@8 int v11; // ebx@8 int v12; // ecx@8 int v13; // eax@8 int j; // eax@10 char v15; // dl@11 int v16; // esi@15 int i; // [sp+Ch] [bp-Ch]@8 int v19; // [sp+10h] [bp-8h]@8 v1 = *(_DWORD *)(a1 + 12); v2 = -*(_DWORD *)(v1 + 16); if ( *(_BYTE *)(a1 + 5) & 3 ) sub_5FE2A0(v1, a1); v3 = *(_DWORD *)(v1 + 44); if ( (*(_DWORD *)(v1 + 44) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; if ( v3 & 0x40 && *(_BYTE *)(*(_DWORD *)(v1 + 40) + 5) & 3 ) sub_5FE2A0(v1, *(_DWORD *)(v1 + 40)); sub_5FE400(v1); sub_5FE6E0(v1); sub_5FFB20(v1); v4 = *(_DWORD *)(v1 + 16) + v2; v5 = *(_DWORD *)(v1 + 80); v6 = *(_DWORD *)(v1 + 84); v7 = *(_DWORD *)(v1 + 88); *(_DWORD *)(v1 + 88) = 0; *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; sub_5FFB20(v1); *(_DWORD *)(v1 + 76) = v5; sub_5FFB20(v1); *(_DWORD *)(v1 + 76) = v6; sub_5FFB20(v1); *(_DWORD *)(v1 + 76) = v7; sub_5FFB20(v1); v8 = v4 - *(_DWORD *)(v1 + 16); sub_5FFC00(v1); sub_5FFD30(*(_DWORD *)(v1 + 84), v1, 0); sub_5FFD30(*(_DWORD *)(v1 + 92), v1, 0); v9 = *(_DWORD *)(a1 + 12); v10 = *(_DWORD *)(v1 + 16) + v8; v11 = v9 + 64; v12 = v9 + 96; v19 = *(_DWORD *)(v1 + 92); v13 = *(_DWORD *)v12; for ( i = *(_DWORD *)(v1 + 84); v13; v13 = *(_DWORD *)v13 ) v12 = v13; for ( j = *(_DWORD *)v11; *(_DWORD *)v11; j = *(_DWORD *)v11 ) { v15 = *(_BYTE *)(j + 5); if ( v15 & 3 ) { *(_BYTE *)(j + 5) = v15 | 8; *(_DWORD *)v11 = *(_DWORD *)j; *(_DWORD *)j = *(_DWORD *)v12; *(_DWORD *)v12 = j; v12 = j; } else { v11 = j; } } sub_5FE580(v1); sub_5FFB20(v1); v16 = v10 - *(_DWORD *)(v1 + 16); sub_5FFC00(v1); sub_5FFC50(*(_DWORD *)(v1 + 88), v1, 0); sub_5FFC50(*(_DWORD *)(v1 + 92), v1, 0); sub_5FFD30(*(_DWORD *)(v1 + 84), v1, i); sub_5FFD30(*(_DWORD *)(v1 + 92), v1, v19); *(_BYTE *)(v1 + 52) ^= 3u; return v16 + *(_DWORD *)(v1 + 16); } // 5FE2A0: using guessed type _DWORD __cdecl sub_5FE2A0(_DWORD, _DWORD); //----- (00600010) -------------------------------------------------------- int __cdecl sub_600010(int a1, int a2) { int v2; // edi@1 int result; // eax@1 int v4; // ebx@2 bool v5; // zf@3 int v6; // eax@8 int v7; // ebx@8 signed int v8; // esi@9 int v9; // eax@10 int v10; // eax@14 int v11; // eax@17 int v12; // [sp+4h] [bp-4h]@1 v2 = a1; result = *(_DWORD *)(a1 + 12); v12 = *(_DWORD *)(a1 + 12); if ( !((1 << *(_BYTE *)(result + 53)) & a2) ) { do { v4 = *(_DWORD *)(v2 + 12); switch ( *(_BYTE *)(v4 + 53) ) { case 5: v5 = *(_BYTE *)(v4 + 54) == 2; *(_DWORD *)(v4 + 16) = 0; if ( !v5 ) sub_5FE740(v4); *(_BYTE *)(v4 + 53) = 0; break; case 0: if ( *(_DWORD *)(v4 + 76) ) { sub_5FFA40(v4); } else { v6 = *(_DWORD *)(v4 + 16); *(_BYTE *)(v4 + 53) = 1; *(_DWORD *)(v4 + 20) = v6; *(_DWORD *)(v4 + 20) += sub_5FFE90(v2); v7 = *(_DWORD *)(v2 + 12); a1 = 0; *(_BYTE *)(v7 + 53) = 2; *(_DWORD *)(v7 + 56) = 0; *(_DWORD *)(v7 + 72) = sub_5FF010(v7 + 64, v2, (int)&a1); *(_DWORD *)(v7 + 68) = sub_5FF010(v7 + 60, v2, (int)&a1); } break; case 2: v8 = 0; do { v9 = v8 + *(_DWORD *)(v4 + 56); if ( v9 >= *(_DWORD *)(v4 + 32) ) break; sub_5FEF10(v2, *(_DWORD *)(v4 + 24) + 4 * v9, -3); ++v8; } while ( v8 < 80 ); *(_DWORD *)(v4 + 56) += v8; if ( *(_DWORD *)(v4 + 56) >= *(_DWORD *)(v4 + 32) ) *(_BYTE *)(v4 + 53) = 3; break; case 3: v10 = *(_DWORD *)(v4 + 72); if ( v10 ) *(_DWORD *)(v4 + 72) = sub_5FEF10(v2, v10, 80); else *(_BYTE *)(v4 + 53) = 4; break; case 4: v11 = *(_DWORD *)(v4 + 68); if ( v11 ) { *(_DWORD *)(v4 + 68) = sub_5FEF10(v2, v11, 80); } else { a1 = *(_DWORD *)(v4 + 156); sub_5FEF10(v2, &a1, 1); sub_5FF120(v2); *(_BYTE *)(v4 + 53) = 5; } break; default: break; } result = v12; } while ( !((1 << *(_BYTE *)(v12 + 53)) & a2) ); } return result; } // 5FEF10: using guessed type _DWORD __cdecl sub_5FEF10(_DWORD, _DWORD, _DWORD); // 600010: using guessed type _DWORD __cdecl sub_600010(_DWORD, _DWORD); //----- (00600190) -------------------------------------------------------- int __usercall sub_600190(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // ecx@3 int v4; // ebx@6 bool v5; // zf@7 int v6; // ebx@9 int v7; // esi@11 int v8; // ecx@12 int v9; // esi@12 int v10; // ebx@12 signed int v11; // esi@13 int v12; // eax@14 int v13; // eax@19 signed int v14; // eax@23 int result; // eax@26 int v16; // eax@27 int v17; // [sp+Ch] [bp-10h]@1 signed int v18; // [sp+10h] [bp-Ch]@1 int v19; // [sp+14h] [bp-8h]@4 int v20; // [sp+18h] [bp-4h]@12 v1 = a1; v2 = *(_DWORD *)(a1 + 12); v17 = v2; v18 = *(_DWORD *)(v2 + 148); if ( v18 < 40 ) v18 = 40; v3 = *(_DWORD *)(v2 + 12) / 200 + 1; if ( v3 >= 2147483644 / v18 ) v19 = 2147483644; else v19 = v3 * v18; do { v4 = *(_DWORD *)(v1 + 12); switch ( *(_BYTE *)(v4 + 53) ) { case 5: v5 = *(_BYTE *)(v4 + 54) == 2; *(_DWORD *)(v4 + 16) = 0; if ( !v5 ) sub_5FE740(v4); *(_BYTE *)(v4 + 53) = 0; v6 = *(_DWORD *)(v4 + 16); break; case 0: if ( *(_DWORD *)(v4 + 76) ) { v7 = *(_DWORD *)(v4 + 16); sub_5FFA40(v4); v6 = *(_DWORD *)(v4 + 16) - v7; } else { v8 = *(_DWORD *)(v4 + 16); *(_BYTE *)(v4 + 53) = 1; *(_DWORD *)(v4 + 20) = v8; v9 = sub_5FFE90(v1); *(_DWORD *)(v4 + 20) += v9; v10 = *(_DWORD *)(v1 + 12); v20 = 0; *(_DWORD *)(v10 + 56) = 0; *(_BYTE *)(v10 + 53) = 2; *(_DWORD *)(v10 + 72) = sub_5FF010(v10 + 64, v1, (int)&v20); *(_DWORD *)(v10 + 68) = sub_5FF010(v10 + 60, v1, (int)&v20); v6 = v20 + v9 + 4 * v20; } break; case 2: v11 = 0; do { v12 = v11 + *(_DWORD *)(v4 + 56); if ( v12 >= *(_DWORD *)(v4 + 32) ) break; sub_5FEF10(v1, *(_DWORD *)(v4 + 24) + 4 * v12, -3); ++v11; } while ( v11 < 80 ); *(_DWORD *)(v4 + 56) += v11; if ( *(_DWORD *)(v4 + 56) >= *(_DWORD *)(v4 + 32) ) *(_BYTE *)(v4 + 53) = 3; v6 = 5 * v11; break; case 3: v13 = *(_DWORD *)(v4 + 72); if ( !v13 ) { *(_BYTE *)(v4 + 53) = 4; goto LABEL_22; } *(_DWORD *)(v4 + 72) = sub_5FEF10(v1, v13, 80); v6 = 400; break; default: LABEL_22: v6 = 0; break; case 4: v16 = *(_DWORD *)(v4 + 68); if ( v16 ) { *(_DWORD *)(v4 + 68) = sub_5FEF10(v1, v16, 80); v6 = 400; } else { v20 = *(_DWORD *)(v4 + 156); sub_5FEF10(v1, &v20, 1); sub_5FF120(v1); *(_BYTE *)(v4 + 53) = 5; v6 = 5; } break; } v14 = v19 - v6; v19 = v14; } while ( v14 > -1600 && *(_BYTE *)(v17 + 53) != 5 ); if ( *(_BYTE *)(v17 + 53) == 5 ) result = sub_608D10(v17, -(*(_DWORD *)(v17 + 140) * *(_DWORD *)(v17 + 20) / 0xC8u)); else result = sub_608D10(v17, 200 * v14 / v18); return result; } // 5FEF10: using guessed type _DWORD __cdecl sub_5FEF10(_DWORD, _DWORD, _DWORD); //----- (006003B0) -------------------------------------------------------- int __cdecl sub_6003B0(signed int a1, int a2) { int v2; // esi@1 int v3; // edi@1 unsigned __int8 v4; // al@1 int v5; // ebx@1 bool v6; // cf@2 bool v7; // zf@2 int v8; // ebx@8 int v9; // ST14_4@11 int result; // eax@11 int v11; // [sp+Ch] [bp-4h]@1 v2 = a1; v3 = *(_DWORD *)(a1 + 12); v4 = *(_BYTE *)(v3 + 54); v5 = v4; v11 = v4; if ( v4 == 2 || (v6 = *(_BYTE *)(v3 + 53) < 1u, v7 = *(_BYTE *)(v3 + 53) == 1, a1 = 0, v6 | v7) ) a1 = 1; if ( a2 ) { *(_BYTE *)(v3 + 54) = 1; } else { *(_BYTE *)(v3 + 54) = 0; loc_5FF360(1); } if ( a1 ) { v8 = *(_DWORD *)(v2 + 12); a1 = 0; *(_DWORD *)(v8 + 56) = 0; *(_BYTE *)(v8 + 53) = 2; *(_DWORD *)(v8 + 72) = sub_5FF010(v8 + 64, v2, (int)&a1); *(_DWORD *)(v8 + 68) = sub_5FF010(v8 + 60, v2, (int)&a1); v5 = v11; } sub_600010(v2, 32); sub_600010(v2, -33); sub_600010(v2, 32); if ( v5 == 2 ) sub_600010(v2, 1); v9 = -(*(_DWORD *)(v3 + 140) * (*(_DWORD *)(v3 + 8) + *(_DWORD *)(v3 + 12)) / 0xC8u); *(_BYTE *)(v3 + 54) = v5; result = sub_608D10(v3, v9); if ( !a2 ) result = loc_5FF360(1); return result; } // 600010: using guessed type _DWORD __cdecl sub_600010(_DWORD, _DWORD); //----- (006004A0) -------------------------------------------------------- int __cdecl sub_6004A0(int a1, int a2) { int result; // eax@1 int v3; // edi@1 int v4; // esi@1 int v5; // esi@4 result = a2; v3 = a1; v4 = *(_DWORD *)(a1 + 12); if ( a2 != *(_BYTE *)(v4 + 54) ) { if ( a2 == 2 ) { result = sub_600010(a1, 1); *(_DWORD *)(v4 + 20) = *(_DWORD *)(v4 + 8) + *(_DWORD *)(v4 + 12); *(_BYTE *)(v4 + 54) = 2; } else { *(_BYTE *)(v4 + 54) = 0; v5 = *(_DWORD *)(v3 + 12); a1 = 0; *(_DWORD *)(v5 + 56) = 0; *(_BYTE *)(v5 + 53) = 2; *(_DWORD *)(v5 + 72) = sub_5FF010(v5 + 64, v3, (int)&a1); *(_DWORD *)(v5 + 68) = sub_5FF010(v5 + 60, v3, (int)&a1); result = sub_600010(v3, -29); } } return result; } // 600010: using guessed type _DWORD __cdecl sub_600010(_DWORD, _DWORD); //----- (00600520) -------------------------------------------------------- int __usercall sub_600520(signed int a1) { int v1; // esi@1 unsigned int v2; // ebx@1 unsigned int v3; // ecx@2 v1 = *(_DWORD *)(a1 + 12); v2 = *(_DWORD *)(v1 + 20); if ( v2 ) { sub_600010(a1, -33); sub_600010(a1, 32); v3 = *(_DWORD *)(v1 + 8) + *(_DWORD *)(v1 + 12); if ( v3 > *(_DWORD *)(v1 + 144) * v2 / 0x64 ) *(_DWORD *)(v1 + 20) = 0; } else { sub_6003B0(a1, 0); v3 = *(_DWORD *)(v1 + 12) + *(_DWORD *)(v1 + 8); *(_DWORD *)(v1 + 20) = v3; } return sub_608D10(v1, -(*(_DWORD *)(v1 + 140) * v3 / 0xC8)); } // 600010: using guessed type _DWORD __cdecl sub_600010(_DWORD, _DWORD); //----- (006005A0) -------------------------------------------------------- int __cdecl sub_6005A0(signed int a1) { int v1; // ebx@1 int result; // eax@2 signed int i; // edi@4 v1 = *(_DWORD *)(a1 + 12); if ( *(_BYTE *)(v1 + 54) == 2 ) result = sub_600520(a1); else result = sub_600190(a1); for ( i = 0; *(_DWORD *)(v1 + 96); ++i ) { if ( i >= 4 && *(_BYTE *)(v1 + 53) != 5 ) break; result = sub_5FF190(a1, 1); } return result; } //----- (00600600) -------------------------------------------------------- int __cdecl sub_600600(signed int a1) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(a1 + 12); if ( *(_BYTE *)(v1 + 55) ) result = sub_6005A0(a1); else result = sub_608D10(v1, -1600); return result; } //----- (00600630) -------------------------------------------------------- int __cdecl sub_600630(signed int a1) { int v1; // eax@1 char **i; // esi@1 v1 = (int)off_6FE6A4; for ( i = &off_6FE6A0; v1; i += 2 ) { sub_5F7300(a1, *i, v1, 1); sub_5F3E70(a1, -2); v1 = (int)i[3]; } sub_5F7290(a1, -1001000, "_PRELOAD"); return sub_5F3E70(a1, -2); } // 6FE6A0: using guessed type char *off_6FE6A0; // 6FE6A4: using guessed type int (__cdecl *off_6FE6A4)(int); //----- (00600690) -------------------------------------------------------- signed int __cdecl sub_600690(int a1) { int v1; // eax@1 signed int result; // eax@2 sub_5F79C0(a1, 1); v1 = sub_5F68E0(a1, 1, "FILE*"); if ( v1 ) { if ( *(_DWORD *)(v1 + 4) ) { sub_5F4D30(a1, "file", 4u); result = 1; } else { sub_5F4D30(a1, "closed file", 0xBu); result = 1; } } else { sub_5F4C60(a1); result = 1; } return result; } //----- (00600700) -------------------------------------------------------- signed int __cdecl sub_600700(int a1) { int v1; // eax@1 signed int result; // eax@2 v1 = sub_5F7910(a1, 1, "FILE*"); if ( *(_DWORD *)(v1 + 4) ) { sub_5F4E10(a1, (int)"file (%p)", *(_DWORD *)v1); result = 1; } else { sub_5F4D30(a1, "file (closed)", 0xDu); result = 1; } return result; } //----- (00600750) -------------------------------------------------------- int __cdecl sub_600750(int a1) { int v1; // eax@5 int (__cdecl *v2)(_DWORD); // ecx@5 char v4; // [sp+0h] [bp-4h]@0 if ( sub_5F41F0(a1, 1) == -1 ) sub_5F5020(a1, -1001000, "_IO_output"); if ( !*(_DWORD *)(sub_5F7910(a1, 1, "FILE*") + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v4); v1 = sub_5F7910(a1, 1, "FILE*"); v2 = *(int (__cdecl **)(_DWORD))(v1 + 4); *(_DWORD *)(v1 + 4) = 0; return v2(a1); } //----- (006007C0) -------------------------------------------------------- int __cdecl sub_6007C0(int a1) { int v1; // eax@1 int v2; // eax@3 void (__cdecl *v3)(_DWORD); // ecx@3 v1 = sub_5F7910(a1, 1, "FILE*"); if ( *(_DWORD *)(v1 + 4) && *(_DWORD *)v1 ) { v2 = sub_5F7910(a1, 1, "FILE*"); v3 = *(void (__cdecl **)(_DWORD))(v2 + 4); *(_DWORD *)(v2 + 4) = 0; v3(a1); } return 0; } //----- (00600810) -------------------------------------------------------- signed int __cdecl sub_600810(int a1) { int v1; // eax@1 int v2; // eax@1 v1 = sub_5F7910(a1, 1, "FILE*"); v2 = fclose(*(FILE **)v1); return sub_5F6740(a1, v2 == 0, 0); } //----- (00600850) -------------------------------------------------------- FILE *__usercall sub_600850(char a1, signed int a2, const char *a3) { int v3; // eax@1 int v4; // esi@1 FILE *result; // eax@1 int *v6; // eax@2 v3 = sub_5F5DB0(a2, 8u); v4 = v3; *(_DWORD *)(v3 + 4) = 0; sub_5F68B0(a2, "FILE*"); *(_DWORD *)v4 = 0; *(_DWORD *)(v4 + 4) = sub_600810; result = fopen((const char *)a1, a3); *(_DWORD *)v4 = result; if ( !result ) { v6 = _errno(); strerror(*v6); result = (FILE *)sub_5F6700(a2, (int)"cannot open file '%s' (%s)", a1); } return result; } //----- (006008B0) -------------------------------------------------------- signed int __cdecl sub_6008B0(int a1) { const char *v1; // ebx@1 int v2; // esi@1 char *v3; // eax@2 signed int v4; // ecx@2 FILE *v5; // eax@8 signed int result; // eax@9 int v7; // [sp+Ch] [bp-4h]@1 v7 = sub_5F79F0(a1, 1, 0); v1 = sub_5F7A50(a1, 2, "r", 0); v2 = sub_5F5DB0(a1, 8u); *(_DWORD *)(v2 + 4) = 0; sub_5F68B0(a1, "FILE*"); *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 4) = sub_600810; if ( !*v1 || (v3 = strchr("rwa", *v1), v4 = 1, !v3) ) goto LABEL_14; if ( v1[1] == 43 ) v4 = 2; if ( (v1[v4] != 98 || (++v4, v4)) && !v1[v4] ) { v5 = fopen((const char *)v7, v1); *(_DWORD *)v2 = v5; if ( v5 ) result = 1; else result = sub_5F6740(a1, 0, v7); } else { LABEL_14: result = sub_5F6700(a1, (int)"invalid mode '%s' (should match '[rwa]%%+?b?')", (char)v1); } return result; } //----- (00600990) -------------------------------------------------------- signed int __cdecl sub_600990(int a1) { int v1; // eax@1 signed int v2; // eax@1 v1 = sub_5F7910(a1, 1, "FILE*"); v2 = _LN97(*(FILE **)v1); return sub_5F67D0(a1, v2); } //----- (006009C0) -------------------------------------------------------- signed int __cdecl sub_6009C0(int a1) { int v1; // ebx@1 const char *v2; // ST40_4@1 int v3; // edi@1 FILE *v4; // eax@1 signed int result; // eax@2 v1 = sub_5F79F0(a1, 1, 0); v2 = sub_5F7A50(a1, 2, "r", 0); v3 = sub_5F5DB0(a1, 8u); *(_DWORD *)(v3 + 4) = 0; sub_5F68B0(a1, "FILE*"); v4 = _popen((const char *)v1, v2); *(_DWORD *)v3 = v4; *(_DWORD *)(v3 + 4) = sub_600990; if ( v4 ) result = 1; else result = sub_5F6740(a1, 0, v1); return result; } //----- (00600A40) -------------------------------------------------------- signed int __cdecl sub_600A40(signed int a1) { int v1; // esi@1 int v2; // eax@1 signed int result; // eax@2 v1 = sub_5F5DB0(a1, 8u); *(_DWORD *)(v1 + 4) = 0; sub_5F68B0(a1, "FILE*"); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = sub_600810; v2 = _LN49_0(); *(_DWORD *)v1 = v2; if ( v2 ) result = 1; else result = sub_5F6740(a1, 0, 0); return result; } // 659EC4: using guessed type int $LN49_0(void); //----- (00600AA0) -------------------------------------------------------- signed int __usercall sub_600AA0(int a1, const void *a2, const char *a3) { int v3; // edi@1 int v4; // eax@2 char v6; // [sp+0h] [bp-4h]@0 v3 = a1; if ( sub_5F41F0(a1, 1) > 0 ) { v4 = sub_5F48F0(v3, 1, 0); if ( v4 ) { sub_600850(v4, v3, a3); } else { if ( !*(_DWORD *)(sub_5F7910(v3, 1, "FILE*") + 4) ) sub_5F6700(v3, (int)"attempt to use a closed file", v6); sub_5F4140(v3, 1); } sub_5F53F0(v3, -1001000, a2); } sub_5F5020(v3, -1001000, a2); return 1; } //----- (00600B30) -------------------------------------------------------- signed int __cdecl sub_600B30(int a1) { return sub_600AA0(a1, "_IO_input", "r"); } //----- (00600B50) -------------------------------------------------------- signed int __cdecl sub_600B50(int a1) { return sub_600AA0(a1, "_IO_output", "w"); } //----- (00600B70) -------------------------------------------------------- signed int __usercall sub_600B70(FILE *a1, int a2) { signed int result; // eax@2 double v3; // [sp+8h] [bp-8h]@1 if ( fscanf(a1, "%lf", &v3) == 1 ) { sub_5F4C80(a2, v3); result = 1; } else { sub_5F4C60(a2); result = 0; } return result; } //----- (00600BC0) -------------------------------------------------------- signed int __usercall sub_600BC0(int a1, FILE *a2, int a3) { int v3; // esi@1 unsigned int v4; // eax@2 signed int result; // eax@5 char v6; // [sp+4h] [bp-214h]@1 int v7; // [sp+Ch] [bp-20Ch]@4 unsigned int v8; // [sp+214h] [bp-4h]@1 int v9; // [sp+218h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; sub_5F6B90(a1, (int)&v6); v3 = sub_5F69A0((int)&v6, 0x200u); if ( fgets((char *)v3, 512, a2) ) { while ( 1 ) { v4 = strlen((const char *)v3); if ( v4 ) { if ( *(_BYTE *)(v4 + v3 - 1) == 10 ) break; } v7 += v4; v3 = sub_5F69A0((int)&v6, 0x200u); if ( !fgets((char *)v3, 512, a2) ) goto LABEL_5; } v7 += v4 - a3; sub_5F6AA0((int)&v6); result = 1; } else { LABEL_5: sub_5F6AA0((int)&v6); result = sub_5F49B0(a1, -1) > 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00600CB0) -------------------------------------------------------- int __usercall sub_600CB0(FILE *a1, int a2) { unsigned int v2; // esi@1 int v3; // eax@1 size_t v4; // eax@1 int v5; // eax@4 size_t v6; // eax@4 char v8; // [sp+4h] [bp-214h]@1 int v9; // [sp+Ch] [bp-20Ch]@1 unsigned int v10; // [sp+214h] [bp-4h]@1 int v11; // [sp+218h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = 512; sub_5F6B90(a2, (int)&v8); v3 = sub_5F69A0((int)&v8, 0x200u); v4 = fread((void *)v3, 1u, 0x200u, a1); v9 += v4; if ( v4 >= 0x200 ) { do { if ( v2 <= 0x3FFFFFFF ) v2 *= 2; v5 = sub_5F69A0((int)&v8, v2); v6 = fread((void *)v5, 1u, v2, a1); v9 += v6; } while ( v6 >= v2 ); } return sub_5F6AA0((int)&v8); } // 86FEB8: using guessed type int __security_cookie; //----- (00600D50) -------------------------------------------------------- int __fastcall sub_600D50(int a1, FILE *a2, signed int a3) { int v3; // ebx@1 FILE *v4; // edi@1 int v5; // eax@1 int v6; // esi@1 signed int v7; // esi@2 int result; // eax@4 signed int v9; // esi@8 int v10; // esi@9 int v11; // eax@10 size_t v12; // esi@10 int v13; // eax@11 int v14; // esi@11 int v15; // [sp+Ch] [bp-21Ch]@1 int v16; // [sp+10h] [bp-218h]@2 char v17; // [sp+14h] [bp-214h]@10 int v18; // [sp+1Ch] [bp-20Ch]@10 unsigned int v19; // [sp+224h] [bp-4h]@1 int v20; // [sp+228h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v3 = a1; v4 = a2; v5 = sub_5F3E50(a1); v6 = v5 - 1; v15 = v5 - 1; clearerr(v4); if ( v6 ) { sub_5F6950(v3, v6 + 20, (int)"too many arguments"); v7 = 1; v16 = a3; do { --v15; if ( !v7 ) break; if ( sub_5F41F0(v3, v16) != 3 ) { v13 = sub_5F48F0(v3, v16, 0); v14 = v13; if ( !v13 || *(_BYTE *)v13 != 42 ) sub_5F7800(v3, v16); switch ( *(_BYTE *)(v14 + 1) ) { case 110: v7 = sub_600B70(v4, v3); goto LABEL_19; case 108: v7 = sub_600BC0(v3, v4, 1); goto LABEL_19; case 76: v7 = sub_600BC0(v3, v4, 0); goto LABEL_19; case 97: sub_600CB0(v4, v3); v7 = 1; goto LABEL_19; default: result = sub_5F7800(v3, v16); break; } return result; } v9 = sub_5F46F0(v3, v16, 0); if ( v9 ) { sub_5F6B90(v3, (int)&v17); v11 = sub_5F69A0((int)&v17, v9); v12 = fread((void *)v11, 1u, v9, v4); v18 += v12; sub_5F6AA0((int)&v17); v7 = v12 > 0; } else { v10 = sub_656AE5(v4); ungetc(v10, v4); sub_5F4D30(v3, 0, 0); v7 = v10 != -1; } LABEL_19: ++v16; } while ( v15 ); } else { v7 = sub_600BC0(v3, v4, 1); v16 = a3 + 1; } if ( ferror(v4) ) { result = sub_5F6740(v3, 0, 0); } else { if ( !v7 ) { sub_5F3E70(v3, -2); sub_5F4C60(v3); } result = v16 - a3; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00600FB0) -------------------------------------------------------- int __cdecl sub_600FB0(int a1) { int v1; // edi@1 sub_5F5020(a1, -1001000, "_IO_input"); v1 = sub_5F4A60(a1, -1); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"standard %s file is closed", (unsigned int)"input"); return sub_600D50(a1, *(FILE **)v1, 1); } //----- (00601000) -------------------------------------------------------- int __cdecl sub_601000(int a1) { int v1; // esi@1 char v3; // [sp+0h] [bp-8h]@0 v1 = sub_5F7910(a1, 1, "FILE*"); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v3); return sub_600D50(a1, *(FILE **)v1, 2); } //----- (00601040) -------------------------------------------------------- int __cdecl sub_601040(int a1) { int v1; // edi@1 signed int v2; // ebx@1 int result; // eax@2 signed int v4; // edi@4 int v5; // edi@7 char v6; // al@10 int v7; // eax@11 int v8; // eax@12 void (__cdecl *v9)(_DWORD); // ecx@12 char v10; // [sp+0h] [bp-10h]@0 int v11; // [sp+Ch] [bp-4h]@1 v1 = sub_5F4A60(a1, -1001001); v11 = v1; v2 = sub_5F46F0(a1, -1001002, 0); if ( *(_DWORD *)(v1 + 4) ) { sub_5F3E70(a1, 1); if ( v2 >= 1 ) { v4 = -1001004; do { sub_5F4140(a1, v4--); --v2; } while ( v2 ); v1 = v11; } v5 = sub_600D50(a1, *(FILE **)v1, 2); if ( sub_5F41F0(a1, -v5) ) { result = v5; } else { if ( v5 <= 1 ) { LOBYTE(v7) = sub_5F4870(a1, -1001003); if ( v7 ) { sub_5F3E70(a1, 0); sub_5F4140(a1, -1001001); v8 = sub_5F7910(a1, 1, "FILE*"); v9 = *(void (__cdecl **)(_DWORD))(v8 + 4); *(_DWORD *)(v8 + 4) = 0; v9(a1); } result = 0; } else { v6 = sub_5F48F0(a1, 1 - v5, 0); result = sub_5F6700(a1, (int)"%s", v6); } } } else { result = sub_5F6700(a1, (int)"file is already closed", v10); } return result; } //----- (00601150) -------------------------------------------------------- signed int __usercall sub_601150(signed int a1, int a2, FILE *a3) { signed int v3; // esi@1 int v4; // eax@1 signed int v5; // edi@1 double v6; // st7@6 int v8; // eax@11 size_t v9; // eax@12 int v10; // [sp+4h] [bp-14h]@0 int v11; // [sp+10h] [bp-8h]@4 size_t v12; // [sp+14h] [bp-4h]@11 v3 = a1; v4 = sub_5F3E50(v10) - a1; v5 = 1; if ( !v4 ) return 1; while ( 1 ) { v11 = v4 - 1; if ( sub_5F41F0(a2, v3) == 3 ) { if ( !v5 || (v6 = sub_5F4640(a2, v3, 0), fprintf(a3, "%.14g", LODWORD(v6), *(unsigned __int64 *)&v6 >> 32) <= 0) ) goto LABEL_7; } else { v8 = sub_5F79F0(a2, v3, (int)&v12); if ( !v5 || (v9 = fwrite((const void *)v8, 1u, v12, a3), v9 != v12) ) { LABEL_7: v5 = 0; goto LABEL_8; } } v5 = 1; LABEL_8: ++v3; if ( !v11 ) break; v4 = v11; } if ( v5 ) return 1; return sub_5F6740(a2, 0, 0); } //----- (00601210) -------------------------------------------------------- signed int __cdecl sub_601210(int a1) { int v1; // esi@1 sub_5F5020(a1, -1001000, "_IO_output"); v1 = sub_5F4A60(a1, -1); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"standard %s file is closed", (unsigned int)"output"); return sub_601150(1, a1, *(FILE **)v1); } //----- (00601270) -------------------------------------------------------- signed int __cdecl sub_601270(int a1) { int v1; // esi@1 FILE *v2; // esi@3 char v4; // [sp+0h] [bp-8h]@0 v1 = sub_5F7910(a1, 1, "FILE*"); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v4); v2 = *(FILE **)v1; sub_5F4140(a1, 1); return sub_601150(2, a1, v2); } //----- (006012C0) -------------------------------------------------------- signed int __cdecl sub_6012C0(int a1) { int v1; // edi@1 FILE *v2; // edi@3 int v3; // ebx@3 double v4; // st7@3 signed int result; // eax@6 __int64 v6; // ST1C_8@7 char v7; // [sp+Ch] [bp-10h]@0 v1 = sub_5F7910(a1, 1, "FILE*"); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v7); v2 = *(FILE **)v1; v3 = sub_5F7CF0(a1, 2, (int)&off_6FE76C, (const char **)off_6FE784); v4 = sub_5F7B20(a1, 3, 0.0); if ( (double)(signed __int64)(unsigned __int64)v4 != v4 ) sub_5F7800(a1, 3); if ( _fseeki64(v2, (unsigned __int64)v4, *(&Origin + v3)) ) { result = sub_5F6740(a1, 0, 0); } else { v6 = _ftelli64(v2); sub_5F4C80(a1, (double)v6); result = 1; } return result; } // 6FE76C: using guessed type void *off_6FE76C; // 6FE784: using guessed type void *off_6FE784[2]; //----- (006013A0) -------------------------------------------------------- signed int __cdecl sub_6013A0(int a1) { int v1; // edi@1 FILE *v2; // edi@3 int v3; // ebx@3 signed int v4; // eax@3 int v5; // eax@3 char v7; // [sp+0h] [bp-Ch]@0 v1 = sub_5F7910(a1, 1, "FILE*"); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v7); v2 = *(FILE **)v1; v3 = sub_5F7CF0(a1, 2, 0, (const char **)off_6FE7A0); v4 = sub_5F7C10(a1, 3, 512); v5 = setvbuf(v2, 0, *(&dword_6FE794 + v3), v4); return sub_5F6740(a1, v5 == 0, 0); } // 6FE7A0: using guessed type char *off_6FE7A0[3]; //----- (00601420) -------------------------------------------------------- signed int __cdecl sub_601420(int a1) { int v1; // edi@1 int v2; // eax@3 sub_5F5020(a1, -1001000, "_IO_output"); v1 = sub_5F4A60(a1, -1); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"standard %s file is closed", (unsigned int)"output"); v2 = fflush(*(FILE **)v1); return sub_5F6740(a1, v2 == 0, 0); } //----- (00601480) -------------------------------------------------------- signed int __cdecl sub_601480(int a1) { int v1; // esi@1 int v2; // eax@3 char v4; // [sp+0h] [bp-8h]@0 v1 = sub_5F7910(a1, 1, "FILE*"); if ( !*(_DWORD *)(v1 + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v4); v2 = fflush(*(FILE **)v1); return sub_5F6740(a1, v2 == 0, 0); } //----- (006014D0) -------------------------------------------------------- signed int __cdecl sub_6014D0(int a1) { *(_DWORD *)(sub_5F7910(a1, 1, "FILE*") + 4) = sub_6014D0; sub_5F4C60(a1); sub_5F4D30(a1, "cannot close standard file", 0x1Au); return 2; } // 6014D0: using guessed type int __cdecl sub_6014D0(int); //----- (00601510) -------------------------------------------------------- signed int __cdecl sub_601510(signed int a1) { void **v1; // ebx@1 int v2; // eax@1 int v3; // edi@1 void **v4; // edi@1 int v5; // eax@1 int v6; // ebx@1 void **v7; // ebx@1 int v8; // eax@1 int v9; // edi@1 sub_5F51C0(a1, 0, 11); sub_5F7C40(a1, (int)&off_6FE7B0, 0); sub_5F6850(a1, "FILE*"); sub_5F4140(a1, -1); sub_5F53F0(a1, -2, "__index"); sub_5F7C40(a1, (int)&off_6FE810, 0); sub_5F3E70(a1, -2); v1 = sub_6586FE(); v2 = sub_5F5DB0(a1, 8u); v3 = v2; *(_DWORD *)(v2 + 4) = 0; sub_5F68B0(a1, "FILE*"); *(_DWORD *)v3 = v1; *(_DWORD *)(v3 + 4) = sub_6014D0; sub_5F4140(a1, -1); sub_5F53F0(a1, -1001000, "_IO_input"); sub_5F53F0(a1, -2, "stdin"); v4 = sub_6586FE() + 8; v5 = sub_5F5DB0(a1, 8u); v6 = v5; *(_DWORD *)(v5 + 4) = 0; sub_5F68B0(a1, "FILE*"); *(_DWORD *)v6 = v4; *(_DWORD *)(v6 + 4) = sub_6014D0; sub_5F4140(a1, -1); sub_5F53F0(a1, -1001000, "_IO_output"); sub_5F53F0(a1, -2, "stdout"); v7 = sub_6586FE() + 16; v8 = sub_5F5DB0(a1, 8u); v9 = v8; *(_DWORD *)(v8 + 4) = 0; sub_5F68B0(a1, "FILE*"); *(_DWORD *)v9 = v7; *(_DWORD *)(v9 + 4) = sub_6014D0; sub_5F53F0(a1, -2, "stderr"); return 1; } // 6014D0: using guessed type int __cdecl sub_6014D0(int); // 6FE7B0: using guessed type char *off_6FE7B0; // 6FE810: using guessed type char *off_6FE810; //----- (00601660) -------------------------------------------------------- int __usercall sub_601660(int a1, int a2) { signed int v2; // esi@1 signed int v3; // eax@3 int v4; // ebx@4 int v6; // [sp+0h] [bp-8h]@0 v2 = sub_5F3E50(v6) - 1; if ( v2 > 17 ) sub_5F7800(a1, 17); sub_5F4140(a1, 1); sub_5F4CC0(a1, v2); sub_5F4ED0(a1, a2); v3 = 1; if ( v2 >= 1 ) { do { v4 = v3 + 1; sub_5F4140(a1, v3 + 1); v3 = v4; } while ( v4 <= v2 ); } return sub_5F4E40(a1, (int)sub_601040, v2 + 3); } //----- (006016E0) -------------------------------------------------------- signed int __cdecl sub_6016E0(signed int a1) { char v2; // [sp+0h] [bp-4h]@0 if ( !*(_DWORD *)(sub_5F7910(a1, 1, "FILE*") + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v2); sub_601660(a1, 0); return 1; } //----- (00601720) -------------------------------------------------------- signed int __cdecl sub_601720(int a1) { signed int result; // eax@6 char v2; // al@7 char v3; // [sp+0h] [bp-4h]@0 if ( sub_5F41F0(a1, 1) == -1 ) sub_5F4C60(a1); if ( sub_5F41F0(a1, 1) ) { v2 = sub_5F79F0(a1, 1, 0); sub_600850(v2, a1, "r"); sub_5F4090(a1, 1); sub_601660(a1, 1); result = 1; } else { sub_5F5020(a1, -1001000, "_IO_input"); sub_5F4090(a1, 1); if ( !*(_DWORD *)(sub_5F7910(a1, 1, "FILE*") + 4) ) sub_5F6700(a1, (int)"attempt to use a closed file", v3); sub_601660(a1, 0); result = 1; } return result; } //----- (006017E0) -------------------------------------------------------- char __thiscall sub_6017E0(int this, char a2) { int v2; // esi@1 unsigned int v3; // eax@1 int v4; // edi@4 int v5; // eax@6 char result; // al@7 v2 = *(_DWORD *)(this + 60); v3 = *(_DWORD *)(v2 + 8); if ( *(_DWORD *)(v2 + 4) + 1 > v3 ) { if ( v3 >= 0x7FFFFFFE ) v3 = loc_601900(this, "lexical element too long", 0); v4 = 2 * v3; if ( 2 * v3 + 1 > 0xFFFFFFFD ) v3 = loc_603720(*(_DWORD *)(this + 52)); v5 = sub_603740(*(_DWORD *)(this + 52), *(_DWORD *)v2, v3, v4); *(_DWORD *)(v2 + 8) = v4; *(_DWORD *)v2 = v5; } result = a2; *(_BYTE *)((*(_DWORD *)(v2 + 4))++ + *(_DWORD *)v2) = a2; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00601850) -------------------------------------------------------- int __cdecl sub_601850(int a1) { signed int v1; // ebx@1 int result; // eax@2 v1 = 0; do { result = sub_609600(a1, *(&off_6FEA80 + v1)); *(_BYTE *)(result + 5) |= 0x20u; ++v1; *(_BYTE *)(result + 6) = v1; } while ( v1 < 22 ); return result; } //----- (00601890) -------------------------------------------------------- int __cdecl sub_601890(int a1, signed int a2) { int result; // eax@3 if ( a2 >= 257 ) { result = dword_6FE67C[a2]; if ( a2 < 286 ) result = sub_604B20(*(_DWORD *)(a1 + 52), (int)"'%s'", result); } else { if ( byte_6FE031[a2] & 4 ) result = sub_604B20(*(_DWORD *)(a1 + 52), (int)"'%c'", a2); else result = sub_604B20(*(_DWORD *)(a1 + 52), (int)"char(%d)", a2); } return result; } // 6FE67C: using guessed type int dword_6FE67C[]; //----- (006019C0) -------------------------------------------------------- int __cdecl sub_6019C0(int a1, const void *a2, size_t a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // eax@1 v3 = *(_DWORD *)(a1 + 52); v4 = sub_609580(*(_DWORD *)(a1 + 52), a2, a3); v5 = *(_DWORD *)(v3 + 8); *(_DWORD *)(v3 + 8) = v5 + 8; *(_DWORD *)v5 = v4; *(_DWORD *)(v5 + 4) = *(_BYTE *)(v4 + 4) | 0x7FF7A540; v6 = sub_60C070(v3, *(_DWORD *)(*(_DWORD *)(a1 + 48) + 4), *(_DWORD *)(v3 + 8) - 8); if ( *(_DWORD *)(v6 + 4) == 2146936064 ) { *(_DWORD *)v6 = 1; *(_DWORD *)(v6 + 4) = 2146936065; if ( *(_DWORD *)(*(_DWORD *)(v3 + 12) + 12) > 0 ) sub_600600(v3); } *(_DWORD *)(v3 + 8) -= 8; return v4; } //----- (00601A40) -------------------------------------------------------- signed int __usercall sub_601A40(int a1) { int v1; // eax@1 int v2; // ecx@1 int v3; // edi@1 int v4; // ecx@2 signed int *v5; // edx@2 signed int result; // eax@2 int v7; // eax@7 int v8; // ecx@7 int v9; // ecx@8 signed int *v10; // edx@8 v1 = *(_DWORD *)(a1 + 56); v2 = *(_DWORD *)v1; v3 = *(_DWORD *)a1; --*(_DWORD *)v1; if ( v2 ) { v4 = *(_DWORD *)(a1 + 56); v5 = *(signed int **)(v4 + 4); result = *(_BYTE *)v5; *(_DWORD *)(v4 + 4) = (char *)v5 + 1; } else { result = sub_60FE90(*(_DWORD *)(a1 + 56)); } *(_DWORD *)a1 = result; if ( (result == 10 || result == 13) && result != v3 ) { v7 = *(_DWORD *)(a1 + 56); v8 = (*(_DWORD *)v7)--; if ( v8 ) { v9 = *(_DWORD *)(a1 + 56); v10 = *(signed int **)(v9 + 4); result = *(_BYTE *)v10; *(_DWORD *)(v9 + 4) = (char *)v10 + 1; } else { result = sub_60FE90(*(_DWORD *)(a1 + 56)); } *(_DWORD *)a1 = result; } ++*(_DWORD *)(a1 + 4); if ( *(_DWORD *)(a1 + 4) >= 2147483645 ) result = loc_601900(a1, "chunk has too many lines", *(_DWORD *)(a1 + 16)); return result; } //----- (00601AD0) -------------------------------------------------------- int __cdecl sub_601AD0(int a1, int a2, int a3, int a4, int a5) { int v5; // eax@1 int result; // eax@1 *(_DWORD *)a2 = a5; *(_DWORD *)(a2 + 4) = 1; *(_DWORD *)(a2 + 8) = 1; *(_BYTE *)(a2 + 76) = 46; *(_DWORD *)(a2 + 52) = a1; *(_DWORD *)(a2 + 32) = 286; *(_DWORD *)(a2 + 56) = a3; *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(a2 + 68) = a4; v5 = sub_609600(a1, "_ENV"); *(_DWORD *)(a2 + 72) = v5; *(_BYTE *)(v5 + 5) |= 0x20u; **(_DWORD **)(a2 + 60) = sub_603740( *(_DWORD *)(a2 + 52), **(_DWORD **)(a2 + 60), *(_DWORD *)(*(_DWORD *)(a2 + 60) + 8), 32); result = *(_DWORD *)(a2 + 60); *(_DWORD *)(result + 8) = 32; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00601B50) -------------------------------------------------------- signed int __usercall sub_601B50(int a1, const char *a2) { int v2; // eax@3 int v3; // ecx@3 int v4; // ecx@4 int v5; // edx@4 int v6; // eax@4 signed int result; // eax@4 if ( *(_DWORD *)a1 && strchr(a2, *(_DWORD *)a1) ) { sub_6017E0(a1, *(_DWORD *)a1); v2 = *(_DWORD *)(a1 + 56); v3 = (*(_DWORD *)v2)--; if ( v3 ) { v4 = *(_DWORD *)(a1 + 56); v5 = *(_DWORD *)(v4 + 4); v6 = *(_BYTE *)v5; *(_DWORD *)(v4 + 4) = v5 + 1; *(_DWORD *)a1 = v6; result = 1; } else { *(_DWORD *)a1 = sub_60FE90(*(_DWORD *)(a1 + 56)); result = 1; } } else { result = 0; } return result; } //----- (00601BC0) -------------------------------------------------------- int __usercall sub_601BC0(int a1, int a2) { char v2; // bl@1 char v3; // dl@1 int v4; // ecx@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@5 int v8; // edx@5 int v9; // ecx@6 int v10; // eax@6 int v11; // ecx@6 v2 = *(_BYTE *)(a1 + 76); v3 = *localeconv()->decimal_point; v4 = *(_DWORD *)(a1 + 60); *(_BYTE *)(a1 + 76) = v3; v5 = *(_DWORD *)(v4 + 4); v6 = *(_DWORD *)v4; while ( v5 ) { --v5; if ( *(_BYTE *)(v6 + v5) == v2 ) *(_BYTE *)(v6 + v5) = v3; } result = sub_604790(**(char ***)(a1 + 60), *(_DWORD *)(*(_DWORD *)(a1 + 60) + 4) - 1, a2); if ( !result ) { v9 = *(_DWORD *)(a1 + 60); v10 = *(_DWORD *)(v9 + 4); LOBYTE(v8) = *(_BYTE *)(a1 + 76); v11 = *(_DWORD *)v9; while ( v10 ) { --v10; if ( *(_BYTE *)(v11 + v10) == (_BYTE)v8 ) *(_BYTE *)(v11 + v10) = 46; } result = loc_601900(v11, v8, a1, "malformed number", 287); } return result; } //----- (00601EA0) -------------------------------------------------------- int __usercall sub_601EA0(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // ecx@2 signed int *v6; // edx@2 signed int v7; // eax@2 int v8; // esi@6 unsigned int v9; // eax@6 int v10; // ebx@8 int v11; // eax@10 int v12; // ecx@10 int v13; // ecx@11 signed int *v14; // edx@11 signed int v15; // eax@11 int v17; // [sp-4h] [bp-14h]@5 int v18; // [sp+0h] [bp-10h]@0 int v19; // [sp+4h] [bp-Ch]@1 int v20; // [sp+8h] [bp-8h]@6 int v21; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)a2; v21 = 0; v19 = *(_DWORD *)a2; sub_6017E0(a2, *(_DWORD *)a2); v3 = *(_DWORD *)(a2 + 56); v4 = (*(_DWORD *)v3)--; if ( v4 ) { v5 = *(_DWORD *)(a2 + 56); v6 = *(signed int **)(v5 + 4); v7 = *(_BYTE *)v6; *(_DWORD *)(v5 + 4) = (char *)v6 + 1; } else { v7 = sub_60FE90(*(_DWORD *)(a2 + 56)); } *(_DWORD *)a2 = v7; if ( v7 == 61 ) { v17 = a1; while ( 1 ) { v8 = *(_DWORD *)(a2 + 60); v9 = *(_DWORD *)(v8 + 8); v20 = *(_DWORD *)a2; if ( *(_DWORD *)(v8 + 4) + 1 > v9 ) { if ( v9 >= 0x7FFFFFFE ) { loc_601900(a2, "lexical element too long", 0); LABEL_18: loc_603720(*(_DWORD *)(a2 + 52), v17, v18); return -1 - v21; } v10 = 2 * v9; if ( 2 * v9 + 1 > 0xFFFFFFFD ) goto LABEL_18; *(_DWORD *)v8 = sub_603740(*(_DWORD *)(a2 + 52), *(_DWORD *)v8, v9, 2 * v9); *(_DWORD *)(v8 + 8) = v10; } *(_BYTE *)(*(_DWORD *)v8 + (*(_DWORD *)(v8 + 4))++) = v20; v11 = *(_DWORD *)(a2 + 56); v12 = (*(_DWORD *)v11)--; if ( v12 ) { v13 = *(_DWORD *)(a2 + 56); v14 = *(signed int **)(v13 + 4); v15 = *(_BYTE *)v14; *(_DWORD *)(v13 + 4) = (char *)v14 + 1; } else { v15 = sub_60FE90(*(_DWORD *)(a2 + 56)); } ++v21; *(_DWORD *)a2 = v15; if ( v15 != 61 ) { v2 = v19; break; } } } if ( *(_DWORD *)a2 != v2 ) return -1 - v21; return v21; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (006022F0) -------------------------------------------------------- int __usercall sub_6022F0(int a1) { int v1; // ebx@1 signed int v2; // edi@1 int v3; // eax@2 int v4; // ecx@2 int v5; // ecx@3 int *v6; // edx@3 int v7; // eax@3 bool v8; // zf@5 int v10[3]; // [sp+8h] [bp-10h]@1 unsigned int v11; // [sp+14h] [bp-4h]@1 int v12; // [sp+18h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v1 = 0; v10[0] = 120; v2 = 1; do { v3 = *(_DWORD *)(a1 + 56); v4 = (*(_DWORD *)v3)--; if ( v4 ) { v5 = *(_DWORD *)(a1 + 56); v6 = *(int **)(v5 + 4); v7 = *(_BYTE *)v6; *(_DWORD *)(v5 + 4) = (char *)v6 + 1; } else { v7 = sub_60FE90(*(_DWORD *)(a1 + 56)); } *(_DWORD *)a1 = v7; v8 = (byte_6FE031[v7] & 0x10) == 0; v10[v2] = v7; if ( v8 ) { loc_602240(a1, v10, v2 + 1, "hexadecimal digit expected"); __debugbreak(); JUMPOUT(*(int *)sub_602380); } ++v2; v1 = sub_6045D0(v7) + 16 * v1; } while ( v2 < 3 ); return v1; } // 86FEB8: using guessed type int __security_cookie; // 6022F0: using guessed type int var_10[3]; //----- (00602380) -------------------------------------------------------- int __usercall sub_602380(int a1) { int v1; // edi@1 signed int v2; // ebx@1 int v3; // eax@2 int v4; // eax@3 int v5; // ecx@3 int v6; // ecx@4 signed int *v7; // edx@4 signed int v8; // eax@4 int v10[3]; // [sp+8h] [bp-10h]@3 unsigned int v11; // [sp+14h] [bp-4h]@1 int v12; // [sp+18h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v1 = 0; v2 = 0; do { v3 = *(_DWORD *)a1; if ( !(byte_6FE031[*(_DWORD *)a1] & 2) ) break; v1 = v3 + 10 * v1 - 48; v10[v2] = v3; v4 = *(_DWORD *)(a1 + 56); v5 = (*(_DWORD *)v4)--; if ( v5 ) { v6 = *(_DWORD *)(a1 + 56); v7 = *(signed int **)(v6 + 4); v8 = *(_BYTE *)v7; *(_DWORD *)(v6 + 4) = (char *)v7 + 1; } else { v8 = sub_60FE90(*(_DWORD *)(a1 + 56)); } ++v2; *(_DWORD *)a1 = v8; } while ( v2 < 3 ); if ( v1 > 255 ) loc_602240(a1, v10, v2, "decimal escape too large"); return v1; } // 86FEB8: using guessed type int __security_cookie; // 602380: using guessed type int var_10[3]; //----- (00602420) -------------------------------------------------------- int __usercall sub_602420(int a1, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // eax@1 int v7; // ecx@1 int v8; // ecx@2 signed int *v9; // edx@2 signed int v10; // eax@2 int v11; // ecx@6 int v12; // eax@7 int v13; // ecx@7 int v14; // ecx@8 signed int *v15; // edx@8 signed int v16; // eax@8 int v17; // eax@20 int v18; // ecx@20 int v19; // ecx@21 int v20; // edx@21 int v21; // eax@21 int v22; // eax@24 int v23; // ecx@24 int v24; // ecx@25 signed int *v25; // edx@25 signed int v26; // eax@25 int v27; // eax@30 int v28; // ecx@30 int v29; // ecx@31 int v30; // edx@31 int v31; // eax@31 int v32; // edi@38 unsigned int v33; // eax@38 int v34; // ebx@40 int v35; // edi@43 unsigned int v36; // eax@43 int v37; // ebx@45 int v38; // eax@46 int v39; // eax@47 int v40; // ecx@47 int v41; // ecx@48 signed int *v42; // edx@48 signed int v43; // eax@48 int v44; // eax@52 int v45; // ecx@52 int v46; // ecx@53 signed int *v47; // edx@53 signed int v48; // eax@53 int result; // eax@61 int v50; // [sp-8h] [bp-10h]@5 int v51; // [sp-4h] [bp-Ch]@5 int v52; // [sp+4h] [bp-4h]@6 char v53; // [sp+4h] [bp-4h]@11 v5 = a1; sub_6017E0(a1, *(_DWORD *)a1); v6 = *(_DWORD *)(v5 + 56); v7 = (*(_DWORD *)v6)--; if ( v7 ) { v8 = *(_DWORD *)(v5 + 56); v9 = *(signed int **)(v8 + 4); v10 = *(_BYTE *)v9; *(_DWORD *)(v8 + 4) = (char *)v9 + 1; } else { v10 = sub_60FE90(*(_DWORD *)(v5 + 56)); } *(_DWORD *)v5 = v10; if ( v10 != a4 ) { v51 = a2; v50 = a3; while ( 2 ) { v11 = *(_DWORD *)v5; v52 = *(_DWORD *)v5; switch ( *(_DWORD *)v5 + 1 ) { case 93: v12 = *(_DWORD *)(v5 + 56); v13 = (*(_DWORD *)v12)--; if ( v13 ) { v14 = *(_DWORD *)(v5 + 56); v15 = *(signed int **)(v14 + 4); v16 = *(_BYTE *)v15; *(_DWORD *)(v14 + 4) = (char *)v15 + 1; } else { v16 = sub_60FE90(*(_DWORD *)(v5 + 56)); } *(_DWORD *)v5 = v16; switch ( v16 + 1 ) { case 98: v53 = 7; goto LABEL_20; case 99: v53 = 8; goto LABEL_20; case 103: v53 = 12; goto LABEL_20; case 111: v53 = 10; goto LABEL_20; case 115: v53 = 13; goto LABEL_20; case 117: v53 = 9; goto LABEL_20; case 119: v53 = 11; goto LABEL_20; case 121: LOBYTE(v16) = sub_6022F0(v5); goto LABEL_19; case 35: case 40: case 93: LABEL_19: v53 = v16; LABEL_20: v17 = *(_DWORD *)(v5 + 56); v18 = (*(_DWORD *)v17)--; if ( v18 ) { v19 = *(_DWORD *)(v5 + 56); v20 = *(_DWORD *)(v19 + 4); v21 = *(_BYTE *)v20; *(_DWORD *)(v19 + 4) = v20 + 1; *(_DWORD *)v5 = v21; } else { *(_DWORD *)v5 = sub_60FE90(*(_DWORD *)(v5 + 56)); } goto LABEL_38; case 11: case 14: sub_601A40(v5); v53 = 10; goto LABEL_38; case 123: v22 = *(_DWORD *)(v5 + 56); v23 = (*(_DWORD *)v22)--; if ( v23 ) { v24 = *(_DWORD *)(v5 + 56); v25 = *(signed int **)(v24 + 4); v26 = *(_BYTE *)v25; *(_DWORD *)(v24 + 4) = (char *)v25 + 1; } else { v26 = sub_60FE90(*(_DWORD *)(v5 + 56)); } *(_DWORD *)v5 = v26; while ( byte_6FE031[*(_DWORD *)v5] & 8 ) { if ( *(_DWORD *)v5 == 10 || *(_DWORD *)v5 == 13 ) { sub_601A40(v5); } else { v27 = *(_DWORD *)(v5 + 56); v28 = (*(_DWORD *)v27)--; if ( v28 ) { v29 = *(_DWORD *)(v5 + 56); v30 = *(_DWORD *)(v29 + 4); v31 = *(_BYTE *)v30; *(_DWORD *)(v29 + 4) = v30 + 1; *(_DWORD *)v5 = v31; } else { *(_DWORD *)v5 = sub_60FE90(*(_DWORD *)(v5 + 56)); } } } goto LABEL_51; default: if ( !(byte_6FE031[v16] & 2) ) goto LABEL_56; v53 = sub_602380(v5); LABEL_38: v32 = *(_DWORD *)(v5 + 60); v33 = *(_DWORD *)(v32 + 8); if ( *(_DWORD *)(v32 + 4) + 1 <= v33 ) goto LABEL_42; if ( v33 >= 0x7FFFFFFE ) goto LABEL_57; v34 = 2 * v33; if ( 2 * v33 + 1 > 0xFFFFFFFD ) goto LABEL_58; *(_DWORD *)v32 = sub_603740(*(_DWORD *)(v5 + 52), *(_DWORD *)v32, v33, 2 * v33); *(_DWORD *)(v32 + 8) = v34; LABEL_42: *(_BYTE *)(*(_DWORD *)v32 + (*(_DWORD *)(v32 + 4))++) = v53; break; case 0: goto LABEL_51; } goto LABEL_51; default: v35 = *(_DWORD *)(v5 + 60); v36 = *(_DWORD *)(v35 + 8); if ( *(_DWORD *)(v35 + 4) + 1 <= v36 ) goto LABEL_47; if ( v36 >= 0x7FFFFFFE ) goto LABEL_57; v37 = 2 * v36; if ( 2 * v36 + 1 > 0xFFFFFFFD ) goto LABEL_59; v38 = sub_603740(*(_DWORD *)(v5 + 52), *(_DWORD *)v35, v36, 2 * v36); LOBYTE(v11) = v52; *(_DWORD *)v35 = v38; *(_DWORD *)(v35 + 8) = v37; LABEL_47: *(_BYTE *)((*(_DWORD *)(v35 + 4))++ + *(_DWORD *)v35) = v11; v39 = *(_DWORD *)(v5 + 56); v40 = (*(_DWORD *)v39)--; if ( v40 ) { v41 = *(_DWORD *)(v5 + 56); v42 = *(signed int **)(v41 + 4); v43 = *(_BYTE *)v42; *(_DWORD *)(v41 + 4) = (char *)v42 + 1; } else { v43 = sub_60FE90(*(_DWORD *)(v5 + 56)); } *(_DWORD *)v5 = v43; LABEL_51: if ( *(_DWORD *)v5 == a4 ) goto LABEL_52; continue; case 0: loc_601900(v5, "unfinished string", 286); break; case 11: case 14: goto LABEL_55; } break; } LABEL_55: loc_601900(v5, "unfinished string", 289); LABEL_56: loc_602240(v5, v5, 1, "invalid escape sequence"); LABEL_57: loc_601900(v5, "lexical element too long", 0); LABEL_58: loc_603720(*(_DWORD *)(v5 + 52)); LABEL_59: loc_603720(*(_DWORD *)(v5 + 52), v50, v51); goto LABEL_60; } LABEL_52: sub_6017E0(v5, *(_DWORD *)v5); v44 = *(_DWORD *)(v5 + 56); v45 = (*(_DWORD *)v44)--; if ( !v45 ) { LABEL_60: v48 = sub_60FE90(*(_DWORD *)(v5 + 56)); goto LABEL_61; } v46 = *(_DWORD *)(v5 + 56); v47 = *(signed int **)(v46 + 4); v48 = *(_BYTE *)v47; *(_DWORD *)(v46 + 4) = (char *)v47 + 1; LABEL_61: *(_DWORD *)v5 = v48; result = sub_6019C0(v5, (const void *)(**(_DWORD **)(v5 + 60) + 1), *(_DWORD *)(*(_DWORD *)(v5 + 60) + 4) - 2); *(_DWORD *)a5 = result; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (006028A0) -------------------------------------------------------- int __usercall sub_6028A0(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // eax@4 int v7; // ecx@4 int v8; // ecx@5 int v9; // edx@5 int v10; // eax@5 int v11; // eax@7 int v12; // ecx@7 int v13; // ecx@8 signed int *v14; // edx@8 signed int v15; // eax@8 int v16; // eax@11 int v17; // ecx@11 int v18; // ecx@12 signed int *v19; // edx@12 signed int v20; // eax@12 int v21; // eax@15 int v22; // eax@20 unsigned int v23; // ecx@20 int v24; // ecx@21 signed int *v25; // edx@21 signed int v26; // eax@21 int v27; // edi@25 int v28; // eax@26 int v29; // ecx@26 int v30; // ecx@27 signed int *v31; // edx@27 signed int v32; // eax@27 int result; // eax@28 int v34; // eax@29 int v35; // eax@34 int v36; // ecx@34 int v37; // ecx@35 signed int *v38; // edx@35 signed int v39; // eax@35 int v40; // eax@39 int v41; // ecx@39 int v42; // ecx@40 int v43; // edx@40 int v44; // eax@40 int v45; // eax@42 int v46; // ecx@42 int v47; // ecx@43 signed int *v48; // edx@43 signed int v49; // eax@43 int v50; // eax@47 int v51; // ecx@47 int v52; // ecx@48 int v53; // edx@48 int v54; // eax@48 int v55; // eax@50 int v56; // ecx@50 int v57; // ecx@51 signed int *v58; // edx@51 signed int v59; // eax@51 int v60; // eax@55 int v61; // ecx@55 int v62; // ecx@56 int v63; // edx@56 int v64; // eax@56 int v65; // eax@58 int v66; // ecx@58 int v67; // ecx@59 signed int *v68; // edx@59 signed int v69; // eax@59 int v70; // eax@63 int v71; // ecx@63 int v72; // ecx@64 int v73; // edx@64 int v74; // eax@64 int v75; // eax@66 int v76; // ecx@66 int v77; // ecx@67 signed int *v78; // edx@67 signed int v79; // eax@67 int v80; // eax@71 int v81; // ecx@71 int v82; // ecx@72 int v83; // edx@72 int v84; // eax@72 int v85; // eax@75 int v86; // ecx@75 int v87; // ecx@76 signed int *v88; // edx@76 signed int v89; // eax@76 int v90; // eax@86 unsigned __int8 v91; // al@87 int v92; // eax@90 int v93; // ecx@90 int v94; // ecx@91 int v95; // edx@91 int v96; // eax@91 v4 = a1; *(_DWORD *)(*(_DWORD *)(a1 + 60) + 4) = 0; v5 = *(_DWORD *)a1 + 1; while ( 2 ) { switch ( v5 ) { case 11: case 14: sub_601A40(v4); goto LABEL_24; case 10: case 12: case 13: case 33: v6 = *(_DWORD *)(v4 + 56); v7 = (*(_DWORD *)v6)--; if ( v7 ) { v8 = *(_DWORD *)(v4 + 56); v9 = *(_DWORD *)(v8 + 4); v10 = *(_BYTE *)v9; *(_DWORD *)(v8 + 4) = v9 + 1; *(_DWORD *)v4 = v10; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); } goto LABEL_24; case 46: v11 = *(_DWORD *)(v4 + 56); v12 = (*(_DWORD *)v11)--; if ( v12 ) { v13 = *(_DWORD *)(v4 + 56); v14 = *(signed int **)(v13 + 4); v15 = *(_BYTE *)v14; *(_DWORD *)(v13 + 4) = (char *)v14 + 1; } else { v15 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v15; if ( v15 != 45 ) return 45; v16 = *(_DWORD *)(v4 + 56); v17 = *(_DWORD *)v16; a2 = 0; --*(_DWORD *)v16; if ( v17 ) { v18 = *(_DWORD *)(v4 + 56); v19 = *(signed int **)(v18 + 4); v20 = *(_BYTE *)v19; *(_DWORD *)(v18 + 4) = (char *)v19 + 1; } else { v20 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v20; if ( v20 != 91 || (a3 = v4, v21 = sub_601EA0(0, v4), *(_DWORD *)(*(_DWORD *)(v4 + 60) + 4) = 0, v21 < 0) ) { if ( *(_DWORD *)v4 != 10 ) { do { if ( *(_DWORD *)v4 == 13 || *(_DWORD *)v4 == -1 ) break; v22 = *(_DWORD *)(v4 + 56); v23 = (*(_DWORD *)v22)--; if ( v23 <= 0 ) { v26 = sub_60FE90(*(_DWORD *)(v4 + 56)); } else { v24 = *(_DWORD *)(v4 + 56); v25 = *(signed int **)(v24 + 4); v26 = *(_BYTE *)v25; *(_DWORD *)(v24 + 4) = (char *)v25 + 1; } *(_DWORD *)v4 = v26; } while ( v26 != 10 ); } } else { loc_601FB0(0, v21); *(_DWORD *)(*(_DWORD *)(v4 + 60) + 4) = 0; } LABEL_24: v5 = *(_DWORD *)v4 + 1; if ( (unsigned int)v5 <= 0x7F ) continue; LABEL_25: v27 = *(_DWORD *)v4; if ( byte_6FE031[*(_DWORD *)v4] & 1 ) { do { sub_6017E0(v4, *(_DWORD *)v4); v28 = *(_DWORD *)(v4 + 56); v29 = (*(_DWORD *)v28)--; if ( v29 ) { v30 = *(_DWORD *)(v4 + 56); v31 = *(signed int **)(v30 + 4); v32 = *(_BYTE *)v31; *(_DWORD *)(v30 + 4) = (char *)v31 + 1; } else { v32 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v32; } while ( byte_6FE031[v32] & 3 ); v90 = sub_6019C0(v4, **(const void ***)(v4 + 60), *(_DWORD *)(*(_DWORD *)(v4 + 60) + 4)); *(_DWORD *)a4 = v90; if ( *(_BYTE *)(v90 + 4) == 4 && (v91 = *(_BYTE *)(v90 + 6)) != 0 ) result = v91 + 256; else result = 288; } else { v92 = *(_DWORD *)(v4 + 56); v93 = (*(_DWORD *)v92)--; if ( v93 ) { v94 = *(_DWORD *)(v4 + 56); v95 = *(_DWORD *)(v94 + 4); v96 = *(_BYTE *)v95; *(_DWORD *)(v94 + 4) = v95 + 1; *(_DWORD *)v4 = v96; result = v27; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); result = v27; } } return result; default: goto LABEL_25; case 92: v34 = sub_601EA0(a2, v4); if ( v34 < 0 ) { if ( v34 == -1 ) { result = 91; } else { loc_601900(v4, "invalid long string delimiter", 289); LABEL_34: v35 = *(_DWORD *)(v4 + 56); v36 = (*(_DWORD *)v35)--; if ( v36 ) { v37 = *(_DWORD *)(v4 + 56); v38 = *(signed int **)(v37 + 4); v39 = *(_BYTE *)v38; *(_DWORD *)(v37 + 4) = (char *)v38 + 1; } else { v39 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v39; if ( v39 == 61 ) { v40 = *(_DWORD *)(v4 + 56); v41 = (*(_DWORD *)v40)--; if ( v41 ) { v42 = *(_DWORD *)(v4 + 56); v43 = *(_DWORD *)(v42 + 4); v44 = *(_BYTE *)v43; *(_DWORD *)(v42 + 4) = v43 + 1; *(_DWORD *)v4 = v44; result = 281; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); result = 281; } } else { result = 61; } } } else { loc_601FB0(a4, v34); result = 289; } return result; case 62: goto LABEL_34; case 61: v45 = *(_DWORD *)(v4 + 56); v46 = (*(_DWORD *)v45)--; if ( v46 ) { v47 = *(_DWORD *)(v4 + 56); v48 = *(signed int **)(v47 + 4); v49 = *(_BYTE *)v48; *(_DWORD *)(v47 + 4) = (char *)v48 + 1; } else { v49 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v49; if ( v49 == 61 ) { v50 = *(_DWORD *)(v4 + 56); v51 = (*(_DWORD *)v50)--; if ( v51 ) { v52 = *(_DWORD *)(v4 + 56); v53 = *(_DWORD *)(v52 + 4); v54 = *(_BYTE *)v53; *(_DWORD *)(v52 + 4) = v53 + 1; *(_DWORD *)v4 = v54; result = 283; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); result = 283; } } else { result = 60; } return result; case 63: v55 = *(_DWORD *)(v4 + 56); v56 = (*(_DWORD *)v55)--; if ( v56 ) { v57 = *(_DWORD *)(v4 + 56); v58 = *(signed int **)(v57 + 4); v59 = *(_BYTE *)v58; *(_DWORD *)(v57 + 4) = (char *)v58 + 1; } else { v59 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v59; if ( v59 == 61 ) { v60 = *(_DWORD *)(v4 + 56); v61 = (*(_DWORD *)v60)--; if ( v61 ) { v62 = *(_DWORD *)(v4 + 56); v63 = *(_DWORD *)(v62 + 4); v64 = *(_BYTE *)v63; *(_DWORD *)(v62 + 4) = v63 + 1; *(_DWORD *)v4 = v64; result = 282; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); result = 282; } } else { result = 62; } return result; case 127: v65 = *(_DWORD *)(v4 + 56); v66 = (*(_DWORD *)v65)--; if ( v66 ) { v67 = *(_DWORD *)(v4 + 56); v68 = *(signed int **)(v67 + 4); v69 = *(_BYTE *)v68; *(_DWORD *)(v67 + 4) = (char *)v68 + 1; } else { v69 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v69; if ( v69 == 61 ) { v70 = *(_DWORD *)(v4 + 56); v71 = (*(_DWORD *)v70)--; if ( v71 ) { v72 = *(_DWORD *)(v4 + 56); v73 = *(_DWORD *)(v72 + 4); v74 = *(_BYTE *)v73; *(_DWORD *)(v72 + 4) = v73 + 1; *(_DWORD *)v4 = v74; result = 284; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); result = 284; } } else { result = 126; } return result; case 59: v75 = *(_DWORD *)(v4 + 56); v76 = (*(_DWORD *)v75)--; if ( v76 ) { v77 = *(_DWORD *)(v4 + 56); v78 = *(signed int **)(v77 + 4); v79 = *(_BYTE *)v78; *(_DWORD *)(v77 + 4) = (char *)v78 + 1; } else { v79 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v79; if ( v79 == 58 ) { v80 = *(_DWORD *)(v4 + 56); v81 = (*(_DWORD *)v80)--; if ( v81 ) { v82 = *(_DWORD *)(v4 + 56); v83 = *(_DWORD *)(v82 + 4); v84 = *(_BYTE *)v83; *(_DWORD *)(v82 + 4) = v83 + 1; *(_DWORD *)v4 = v84; result = 285; } else { *(_DWORD *)v4 = sub_60FE90(*(_DWORD *)(v4 + 56)); result = 285; } } else { result = 58; } return result; case 35: case 40: sub_602420(v4, a2, a3, *(_DWORD *)v4, a4); return 289; case 47: sub_6017E0(v4, *(_DWORD *)v4); v85 = *(_DWORD *)(v4 + 56); v86 = (*(_DWORD *)v85)--; if ( v86 ) { v87 = *(_DWORD *)(v4 + 56); v88 = *(signed int **)(v87 + 4); v89 = *(_BYTE *)v88; *(_DWORD *)(v87 + 4) = (char *)v88 + 1; } else { v89 = sub_60FE90(*(_DWORD *)(v4 + 56)); } *(_DWORD *)v4 = v89; if ( sub_601B50(v4, ".") ) { result = (sub_601B50(v4, ".") != 0) + 279; } else { if ( byte_6FE031[*(_DWORD *)v4] & 2 ) { LABEL_82: loc_601C40(a4); 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 LABEL_82; case 0: return 286; } } } //----- (00602EE0) -------------------------------------------------------- int __usercall sub_602EE0(int a1, int a2, int a3) { int result; // eax@1 int v4; // edx@2 int v5; // ecx@2 int v6; // edx@2 *(_DWORD *)(a3 + 8) = *(_DWORD *)(a3 + 4); result = 286; if ( *(_DWORD *)(a3 + 32) == 286 ) { result = sub_6028A0(a3, a1, a2, a3 + 24); *(_DWORD *)(a3 + 16) = result; } else { v4 = *(_DWORD *)(a3 + 36); *(_DWORD *)(a3 + 16) = *(_DWORD *)(a3 + 32); v5 = *(_DWORD *)(a3 + 40); *(_DWORD *)(a3 + 20) = v4; v6 = *(_DWORD *)(a3 + 44); *(_DWORD *)(a3 + 24) = v5; *(_DWORD *)(a3 + 28) = v6; *(_DWORD *)(a3 + 32) = 286; } return result; } //----- (00602F30) -------------------------------------------------------- int __usercall sub_602F30(int a1, int a2, int a3) { int result; // eax@1 result = sub_6028A0(a3, a1, a2, a3 + 40); *(_DWORD *)(a3 + 32) = result; return result; } //----- (00602F50) -------------------------------------------------------- signed int __cdecl sub_602F50(int a1) { double v1; // st7@1 v1 = sub_5F7AB0(a1, 1); sub_5F4C80(a1, fabs(v1)); return 1; } //----- (00602F80) -------------------------------------------------------- signed int __cdecl sub_602F80(int a1) { double v1; // st7@1 v1 = sin(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (00602FB0) -------------------------------------------------------- signed int __cdecl sub_602FB0(int a1) { double v1; // st7@1 void *v2; // ecx@1 v1 = sub_5F7AB0(a1, 1); sub_65A6C8(v2); sub_5F4C80(a1, v1); return 1; } //----- (00602FE0) -------------------------------------------------------- signed int __cdecl sub_602FE0(int a1) { double v1; // st7@1 v1 = cos(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (00603010) -------------------------------------------------------- signed int __cdecl sub_603010(int a1) { double v1; // st7@1 v1 = sub_5F7AB0(a1, 1); sub_65A6D2(); sub_5F4C80(a1, v1); return 1; } //----- (00603040) -------------------------------------------------------- signed int __cdecl sub_603040(int a1) { double v1; // st7@1 v1 = tan(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (00603070) -------------------------------------------------------- signed int __cdecl sub_603070(int a1) { double v1; // st7@1 v1 = sub_5F7AB0(a1, 1); sub_65A6D9(); sub_5F4C80(a1, v1); return 1; } //----- (006030A0) -------------------------------------------------------- signed int __cdecl sub_6030A0(int a1) { double v1; // st7@1 v1 = asin(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (006030D0) -------------------------------------------------------- signed int __cdecl sub_6030D0(int a1) { double v1; // st7@1 v1 = acos(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (00603100) -------------------------------------------------------- signed int __cdecl sub_603100(int a1) { double v1; // st7@1 v1 = atan(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (00603130) -------------------------------------------------------- signed int __cdecl sub_603130(int a1) { double v1; // ST14_8@1 void *v2; // ecx@1 v1 = sub_5F7AB0(a1, 1); sub_5F7AB0(a1, 2); sub_65AABA(v2); sub_5F4C80(a1, v1); return 1; } //----- (00603180) -------------------------------------------------------- signed int __cdecl sub_603180(double a1) { double v1; // st7@1 double v2; // st7@1 v1 = sub_5F7AB0(SLODWORD(a1), 1); v2 = ceil(v1); sub_5F4C80(SLODWORD(a1), v2); return 1; } //----- (006031B0) -------------------------------------------------------- signed int __cdecl sub_6031B0(double a1) { double v1; // st7@1 double v2; // st7@1 v1 = sub_5F7AB0(SLODWORD(a1), 1); v2 = floor(v1); sub_5F4C80(SLODWORD(a1), v2); return 1; } //----- (006031E0) -------------------------------------------------------- signed int __cdecl sub_6031E0(int a1) { long double v1; // ST14_8@1 double v2; // st7@1 v1 = sub_5F7AB0(a1, 1); v2 = fmod(v1, sub_5F7AB0(a1, 2)); sub_5F4C80(a1, v2); return 1; } //----- (00603230) -------------------------------------------------------- signed int __cdecl sub_603230(double a1) { double v1; // st7@1 double v2; // ST10_8@1 double v4; // [sp+18h] [bp-8h]@1 v1 = sub_5F7AB0(SLODWORD(a1), 1); v2 = modf(v1, &v4); sub_5F4C80(SLODWORD(a1), v4); sub_5F4C80(SLODWORD(a1), v2); return 2; } //----- (00603280) -------------------------------------------------------- signed int __cdecl sub_603280(int a1) { double v1; // st7@1 v1 = sqrt(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (006032B0) -------------------------------------------------------- signed int __cdecl sub_6032B0(int a1) { long double v1; // ST14_8@1 double v2; // st7@1 v1 = sub_5F7AB0(a1, 1); v2 = pow(v1, sub_5F7AB0(a1, 2)); sub_5F4C80(a1, v2); return 1; } //----- (00603300) -------------------------------------------------------- signed int __cdecl sub_603300(int a1) { double v1; // st7@2 double v3; // [sp+Ch] [bp-10h]@3 double v4; // [sp+14h] [bp-8h]@1 v4 = sub_5F7AB0(a1, 1); if ( sub_5F41F0(a1, 2) > 0 ) { v3 = sub_5F7AB0(a1, 2); if ( 10.0 == v3 ) { v1 = log10(v4); } else { _CIlog(); _CIlog(); v1 = v4 / v3; } } else { v1 = v4; _CIlog(); } sub_5F4C80(a1, v1); return 1; } // 65B030: using guessed type double _CIlog(void); //----- (00603390) -------------------------------------------------------- signed int __cdecl sub_603390(int a1) { double v1; // st7@1 v1 = exp(sub_5F7AB0(a1, 1)); sub_5F4C80(a1, v1); return 1; } //----- (006033C0) -------------------------------------------------------- signed int __cdecl sub_6033C0(int a1) { double v1; // st7@1 v1 = sub_5F7AB0(a1, 1); sub_5F4C80(a1, v1 / 0.0174532925199433); return 1; } //----- (006033F0) -------------------------------------------------------- signed int __cdecl sub_6033F0(int a1) { double v1; // st7@1 v1 = sub_5F7AB0(a1, 1); sub_5F4C80(a1, v1 * 0.0174532925199433); return 1; } //----- (00603420) -------------------------------------------------------- signed int __cdecl sub_603420(double a1) { double v1; // st7@1 double v2; // st7@1 int v4; // [sp+10h] [bp-4h]@1 v1 = sub_5F7AB0(SLODWORD(a1), 1); v2 = frexp(v1, &v4); sub_5F4C80(SLODWORD(a1), v2); sub_5F4CC0(SLODWORD(a1), v4); return 2; } //----- (00603460) -------------------------------------------------------- signed int __cdecl sub_603460(double a1) { int v1; // ST08_4@1 double v2; // st7@1 double v3; // st7@1 v1 = sub_5F7B50(SLODWORD(a1), 2); v2 = sub_5F7AB0(SLODWORD(a1), 1); v3 = ldexp(v2, v1); sub_5F4C80(SLODWORD(a1), v3); return 1; } //----- (006034A0) -------------------------------------------------------- signed int __cdecl sub_6034A0(int a1) { int v1; // edi@1 double v2; // st7@1 signed int i; // esi@1 double v5; // [sp+14h] [bp-8h]@1 v1 = sub_5F3E50(a1); v2 = sub_5F7AB0(a1, 1); v5 = v2; for ( i = 2; i <= v1; ++i ) { v2 = sub_5F7AB0(a1, i); if ( v5 <= v2 ) v2 = v5; else v5 = v2; } sub_5F4C80(a1, v2); return 1; } //----- (00603510) -------------------------------------------------------- signed int __cdecl sub_603510(int a1) { int v1; // edi@1 double v2; // st7@1 signed int i; // esi@1 double v5; // [sp+14h] [bp-8h]@1 v1 = sub_5F3E50(a1); v2 = sub_5F7AB0(a1, 1); v5 = v2; for ( i = 2; i <= v1; ++i ) { v2 = sub_5F7AB0(a1, i); if ( v5 >= v2 ) v2 = v5; else v5 = v2; } sub_5F4C80(a1, v2); return 1; } //----- (00603580) -------------------------------------------------------- int __cdecl sub_603580(int a1) { int v1; // eax@1 int v2; // eax@2 double v4; // st7@5 double v5; // st7@7 double v6; // st7@8 char v7; // [sp+8h] [bp-1Ch]@0 double v8; // [sp+14h] [bp-10h]@1 double v9; // [sp+1Ch] [bp-8h]@5 v8 = (double)(rand() % 32767) / 32767.0; v1 = sub_5F3E50(a1); if ( v1 ) { v2 = v1 - 1; if ( v2 ) { if ( v2 != 1 ) return sub_5F6700(a1, (int)"wrong number of arguments", v7); v9 = sub_5F7AB0(a1, 1); v4 = sub_5F7AB0(a1, 2); if ( v4 < v9 ) sub_5F7800(a1, 2); v5 = floor((v4 - v9 + 1.0) * v8) + v9; } else { v6 = sub_5F7AB0(a1, 1); if ( v6 < 1.0 ) sub_5F7800(a1, 1); v5 = floor(v6 * v8) + 1.0; } } else { v5 = v8; } sub_5F4C80(a1, v5); return 1; } //----- (00603690) -------------------------------------------------------- int __cdecl sub_603690(int a1) { int v1; // eax@1 v1 = sub_5F7BB0(a1, 1); srand(v1); rand(); return 0; } //----- (006036B0) -------------------------------------------------------- signed int __cdecl sub_6036B0(signed int a1) { sub_5F51C0(a1, 0, 27); sub_5F7C40(a1, (int)&off_6FECF0, 0); sub_5F4C80(a1, 3.141592653589793); sub_5F53F0(a1, -2, "pi"); sub_5F4C80(a1, dbl_870410); sub_5F53F0(a1, -2, "huge"); return 1; } // 6FECF0: using guessed type void *off_6FECF0; // 870410: using guessed type double dbl_870410; //----- (00603740) -------------------------------------------------------- int __cdecl sub_603740(int a1, int a2, int a3, int a4) { int v4; // esi@1 int result; // eax@1 v4 = *(_DWORD *)(a1 + 12); result = (*(int (__cdecl **)(_DWORD, int, int, int))v4)(*(_DWORD *)(v4 + 4), a2, a3, a4); if ( !result ) { if ( a4 ) { if ( !*(_BYTE *)(v4 + 55) || (sub_6003B0(a1, 1), (result = (*(int (__cdecl **)(_DWORD, int, int, int))v4)(*(_DWORD *)(v4 + 4), a2, a3, a4)) == 0) ) sub_5FCB10(a1, 4); } } *(_DWORD *)(v4 + 12) += a4 - (a2 != 0 ? a3 : 0); return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (006037B0) -------------------------------------------------------- int __cdecl sub_6037B0(int a1, int a2, signed int *a3, unsigned int a4, signed int a5, int a6) { int v6; // esi@1 signed int v7; // ecx@1 int result; // eax@8 v6 = a5; v7 = *a3; if ( *a3 >= a5 / 2 ) { if ( v7 < a5 ) goto LABEL_6; loc_5FC640(a1, "too many %s (limit is %d)", a6, a5); } v6 = 2 * v7; if ( 2 * v7 < 4 ) v6 = 4; LABEL_6: if ( v6 + 1 > 0xFFFFFFFD / a4 ) loc_5FC640(a1, "memory allocation error: block too big"); result = sub_603740(a1, a2, a4 * v7, a4 * v6); *a3 = v6; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00603830) -------------------------------------------------------- int __usercall sub_603830(int a1) { DWORD v1; // eax@1 char *v2; // eax@3 int v3; // eax@4 int result; // eax@4 CHAR Filename; // [sp+0h] [bp-10Ch]@1 unsigned int v6; // [sp+108h] [bp-4h]@1 int v7; // [sp+10Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v1 = GetModuleFileNameA(0, &Filename, 0x105u); if ( v1 && v1 != 261 && (v2 = strrchr(&Filename, 92)) != 0 ) { *v2 = 0; v3 = sub_5F48F0(a1, -1, 0); sub_5F73C0(a1, (const char *)v3, "!", &Filename); result = sub_5F3EC0(a1, -2); } else { result = sub_5F6700(a1, (int)"unable to get ModuleFileName", Filename); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (006038D0) -------------------------------------------------------- int __usercall sub_6038D0(signed int a1) { DWORD v1; // eax@1 char v2; // si@1 int result; // eax@2 CHAR Buffer; // [sp+4h] [bp-84h]@1 unsigned int v5; // [sp+84h] [bp-4h]@1 int v6; // [sp+88h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = GetLastError(); v2 = v1; if ( FormatMessageA(0x1200u, 0, v1, 0, &Buffer, 0x80u, 0) ) result = sub_5F4D80(a1, &Buffer); else result = sub_5F4E10(a1, (int)"system error %d\n", v2); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00603950) -------------------------------------------------------- int __usercall sub_603950(int a1, const void *a2, int a3) { signed int v3; // eax@1 sub_5F5020(a1, -1001000, "_CLIBS"); sub_5F4EF0(a1, a3); sub_5F4140(a1, -1); sub_5F53F0(a1, -3, a2); v3 = sub_5F7140(a1, -2); sub_5F5560(a1, -2, v3 + 1); return sub_5F3E70(a1, -2); } //----- (006039A0) -------------------------------------------------------- int __cdecl sub_6039A0(int a1) { signed int i; // esi@1 int v2; // eax@2 for ( i = sub_5F7140(a1, 1); i >= 1; --i ) { sub_5F5140(a1, 1, i); v2 = sub_5F4A60(a1, -1); FreeLibrary((HMODULE)v2); sub_5F3E70(a1, -2); } return 0; } //----- (006039F0) -------------------------------------------------------- signed int __usercall sub_6039F0(int a1, const void *lpLibFileName, LPCSTR lpProcName) { int v3; // edi@1 int v4; // esi@1 HMODULE v5; // ebx@1 int v6; // esi@2 signed int result; // eax@5 int v8; // eax@9 v3 = a1; sub_5F5020(a1, -1001000, "_CLIBS"); sub_5F5020(v3, -1, lpLibFileName); v4 = sub_5F4A60(v3, -1); sub_5F3E70(v3, -3); v5 = (HMODULE)v4; if ( !v4 ) { v6 = (int)LoadLibraryExA((LPCSTR)lpLibFileName, 0, 0); if ( !v6 ) sub_6038D0(v3); v5 = (HMODULE)v6; if ( !v6 ) return 1; sub_603950(v3, lpLibFileName, v6); } if ( *lpProcName == 42 ) { sub_5F4ED0(v3, 1); result = 0; } else { v8 = (int)GetProcAddress(v5, lpProcName); if ( v8 ) { sub_5F4E40(v3, v8, 0); result = 0; } else { sub_6038D0(v3); result = 2; } } return result; } //----- (00603AB0) -------------------------------------------------------- signed int __cdecl sub_603AB0(int a1) { int v1; // edi@1 int v2; // eax@1 signed int v3; // edi@1 signed int result; // eax@2 const void *v5; // eax@3 v1 = sub_5F79F0(a1, 1, 0); v2 = sub_5F79F0(a1, 2, 0); v3 = sub_6039F0(a1, (const void *)v1, (LPCSTR)v2); if ( v3 ) { sub_5F4C60(a1); sub_5F3F50(a1, -2); v5 = "open"; if ( v3 != 1 ) v5 = "init"; sub_5F4D80(a1, v5); result = 3; } else { result = 1; } return result; } //----- (00603B20) -------------------------------------------------------- int __usercall sub_603B20(const char *a1, char *a2, int a3, const char *a4, const char *a5) { const char *v5; // edi@1 const char *i; // edi@3 char *v7; // ebx@6 int v8; // eax@9 int v9; // edi@9 FILE *v10; // eax@9 char *v12; // [sp+8h] [bp-21Ch]@1 const char *v13; // [sp+Ch] [bp-218h]@1 size_t v14; // [sp+10h] [bp-214h]@1 unsigned int v15; // [sp+220h] [bp-4h]@1 int v16; // [sp+224h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v5 = a1; v13 = a4; v12 = a2; sub_5F6B90(a3, (int)&v14); if ( *v5 ) v13 = (const char *)sub_5F73C0(a3, a4, v5, a5); while ( 1 ) { for ( i = v12; *i == 59; ++i ) ; if ( !*i ) break; v7 = strchr(i, 59); if ( !v7 ) v7 = (char *)&i[strlen(i)]; sub_5F4D30(a3, i, v7 - i); v12 = v7; if ( !v7 ) break; v8 = sub_5F48F0(a3, -1, 0); v9 = sub_5F73C0(a3, (const char *)v8, "?", v13); sub_5F3EC0(a3, -2); v10 = fopen((const char *)v9, "r"); if ( v10 ) { fclose(v10); return v9; } sub_5F4E10(a3, (int)"\n\tno file '%s'", v9); sub_5F3EC0(a3, -2); sub_5F6B20((size_t)&v14); } sub_5F6AA0((int)&v14); return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (00603C80) -------------------------------------------------------- signed int __cdecl sub_603C80(int a1) { const char *v1; // ST28_4@1 const char *v2; // edi@1 int v3; // ebx@1 int v4; // eax@1 signed int result; // eax@2 v1 = sub_5F7A50(a1, 4, "\\", 0); v2 = sub_5F7A50(a1, 3, ".", 0); v3 = sub_5F79F0(a1, 2, 0); v4 = sub_5F79F0(a1, 1, 0); if ( sub_603B20(v2, (char *)v3, a1, (const char *)v4, v1) ) { result = 1; } else { sub_5F4C60(a1); sub_5F3F50(a1, -2); result = 2; } return result; } //----- (00603D00) -------------------------------------------------------- int __cdecl sub_603D00(int a1) { int v1; // ebx@1 int v2; // edi@1 int v3; // eax@3 const void *v4; // edi@3 int result; // eax@4 char v6; // al@7 v1 = sub_5F79F0(a1, 1, 0); sub_5F5020(a1, -1001001, "path"); v2 = sub_5F48F0(a1, -1, 0); if ( !v2 ) sub_5F6700(a1, (int)"'package.%s' must be a string", (unsigned int)"path"); v3 = sub_603B20(".", (char *)v2, a1, (const char *)v1, "\\"); v4 = (const void *)v3; if ( v3 ) { if ( sub_5F6D20(a1, (const char *)v3, 0) ) { sub_5F48F0(a1, -1, 0); v6 = sub_5F48F0(a1, 1, 0); result = sub_5F6700(a1, (int)"error loading module '%s' from file '%s':\n\t%s", v6); } else { sub_5F4D80(a1, v4); result = 2; } } else { result = 1; } return result; } //----- (00603DD0) -------------------------------------------------------- signed int __usercall sub_603DD0(const char *a1, int a2, const void *lpLibFileName) { int v3; // eax@1 const void *v4; // edi@1 char *v5; // eax@1 char v6; // bl@1 char v7; // al@2 int v8; // eax@2 signed int result; // eax@2 int v10; // eax@4 v3 = sub_5F73C0(a2, a1, ".", "_"); v4 = (const void *)v3; v5 = strchr((const char *)v3, 45); v6 = (char)v5; if ( v5 ) { v7 = sub_5F4D30(a2, v4, v5 - v4); v8 = sub_5F4E10(a2, (int)"luaopen_%s", v7); result = sub_6039F0(a2, lpLibFileName, (LPCSTR)v8); if ( result != 2 ) return result; LOBYTE(v4) = v6 + 1; } v10 = sub_5F4E10(a2, (int)"luaopen_%s", (char)v4); return sub_6039F0(a2, lpLibFileName, (LPCSTR)v10); } //----- (00603E50) -------------------------------------------------------- int __cdecl sub_603E50(int a1) { int v1; // ebx@1 int v2; // edi@1 int v3; // eax@3 const void *v4; // edi@3 int result; // eax@4 char v6; // al@7 v1 = sub_5F79F0(a1, 1, 0); sub_5F5020(a1, -1001001, "cpath"); v2 = sub_5F48F0(a1, -1, 0); if ( !v2 ) sub_5F6700(a1, (int)"'package.%s' must be a string", (unsigned int)"cpath"); v3 = sub_603B20(".", (char *)v2, a1, (const char *)v1, "\\"); v4 = (const void *)v3; if ( v3 ) { if ( sub_603DD0((const char *)v1, a1, (const void *)v3) ) { sub_5F48F0(a1, -1, 0); v6 = sub_5F48F0(a1, 1, 0); result = sub_5F6700(a1, (int)"error loading module '%s' from file '%s':\n\t%s", v6); } else { sub_5F4D80(a1, v4); result = 2; } } else { result = 1; } return result; } //----- (00603F30) -------------------------------------------------------- int __cdecl sub_603F30(int a1) { int v1; // eax@1 const void *v2; // edi@1 int result; // eax@1 int v4; // ebx@2 int v5; // eax@4 const void *v6; // ebx@4 signed int v7; // eax@5 char v8; // al@7 int v9; // [sp+8h] [bp-4h]@2 v1 = sub_5F79F0(a1, 1, 0); v2 = (const void *)v1; result = (int)strchr((const char *)v1, 46); if ( result ) { sub_5F4D30(a1, v2, result - (_DWORD)v2); v9 = sub_5F48F0(a1, -1, 0); sub_5F5020(a1, -1001001, "cpath"); v4 = sub_5F48F0(a1, -1, 0); if ( !v4 ) sub_5F6700(a1, (int)"'package.%s' must be a string", (unsigned int)"cpath"); v5 = sub_603B20(".", (char *)v4, a1, (const char *)v9, "\\"); v6 = (const void *)v5; if ( !v5 ) return 1; v7 = sub_603DD0((const char *)v2, a1, (const void *)v5); if ( v7 ) { if ( v7 != 2 ) { sub_5F48F0(a1, -1, 0); v8 = sub_5F48F0(a1, 1, 0); return sub_5F6700(a1, (int)"error loading module '%s' from file '%s':\n\t%s", v8); } sub_5F4E10(a1, (int)"\n\tno module '%s' in file '%s'", (char)v2); return 1; } sub_5F4D80(a1, v6); result = 2; } return result; } //----- (00604040) -------------------------------------------------------- signed int __cdecl sub_604040(int a1) { int v1; // edi@1 v1 = sub_5F79F0(a1, 1, 0); sub_5F5020(a1, -1001000, "_PRELOAD"); sub_5F5020(a1, -1, (const void *)v1); if ( !sub_5F41F0(a1, -1) ) sub_5F4E10(a1, (int)"\n\tno field package.preload['%s']", v1); return 1; } //----- (006040A0) -------------------------------------------------------- int __usercall sub_6040A0(char a1, int a2) { signed int v2; // ebx@3 int result; // eax@6 int v4; // eax@7 size_t v5; // [sp+0h] [bp-214h]@1 unsigned int v6; // [sp+210h] [bp-4h]@1 int v7; // [sp+214h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; sub_5F6B90(a2, (int)&v5); sub_5F5020(a2, -1001001, "searchers"); if ( sub_5F41F0(a2, 3) != 5 ) sub_5F6700(a2, (int)"'package.searchers' must be a table", v5); v2 = 1; while ( 1 ) { sub_5F5140(a2, 3, v2); if ( !sub_5F41F0(a2, -1) ) { sub_5F3E70(a2, -2); sub_5F6AA0((int)&v5); sub_5F48F0(a2, -1, 0); sub_5F6700(a2, (int)"module '%s' not found:%s", a1); } sub_5F4D80(a2, (const void *)a1); sub_5F5850(a2, 1, 2, 0, 0); result = sub_5F41F0(a2, -2); if ( result == 6 ) break; LOBYTE(v4) = sub_5F43A0(a2, -2); if ( v4 ) { sub_5F3E70(a2, -2); sub_5F6B20((size_t)&v5); ++v2; } else { sub_5F3E70(a2, -3); ++v2; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (006041B0) -------------------------------------------------------- signed int __cdecl sub_6041B0(int a1) { int v1; // edi@1 int v2; // eax@1 v1 = sub_5F79F0(a1, 1, 0); sub_5F3E70(a1, 1); sub_5F5020(a1, -1001000, "_LOADED"); sub_5F5020(a1, 2, (const void *)v1); LOBYTE(v2) = sub_5F4870(a1, -1); if ( !v2 ) { sub_5F3E70(a1, -2); sub_6040A0(v1, a1); sub_5F4D80(a1, (const void *)v1); sub_5F3F50(a1, -2); sub_5F5850(a1, 2, 1, 0, 0); if ( sub_5F41F0(a1, -1) ) sub_5F53F0(a1, 2, (const void *)v1); sub_5F5020(a1, 2, (const void *)v1); if ( !sub_5F41F0(a1, -1) ) { sub_5F4ED0(a1, 1); sub_5F4140(a1, -1); sub_5F53F0(a1, 2, (const void *)v1); } } return 1; } //----- (00604280) -------------------------------------------------------- int __usercall sub_604280(int a1, int a2, char *a3, const void *Str, char *Stra, const char *a6) { int v6; // esi@1 int v7; // edi@1 int v8; // eax@3 int v9; // ebx@3 int v10; // eax@4 v6 = a1; v7 = sub_658048(a3); if ( (v7 || (v7 = sub_658048(Stra)) != 0) && (sub_5F5020(v6, -1001000, "LUA_NOENV"), LOBYTE(v8) = sub_5F4870(v6, -1), v9 = v8, sub_5F3E70(v6, -2), !v9) ) { v10 = sub_5F73C0(v6, (const char *)v7, ";;", (const char *)&unk_6FF030); sub_5F73C0(v6, (const char *)v10, byte_6FF028, a6); sub_5F3EC0(v6, -2); } else { sub_5F4D80(v6, a6); } sub_603830(v6); return sub_5F53F0(v6, -2, Str); } //----- (00604330) -------------------------------------------------------- int __usercall sub_604330(signed int a1) { int result; // eax@1 signed int v2; // esi@1 int *v3; // ebx@2 result = sub_5F51C0(a1, 4, 0); v2 = 0; if ( off_6FEEB0[0] ) { v3 = (int *)off_6FEEB0; do { sub_5F4140(a1, -2); sub_5F4E40(a1, *v3, 1); ++v2; result = sub_5F5560(a1, -2, v2); v3 = (int *)&off_6FEEB0[v2]; } while ( *v3 ); } return result; } // 6FEEB0: using guessed type int (__cdecl *off_6FEEB0[4])(int); //----- (00604380) -------------------------------------------------------- signed int __cdecl sub_604380(int a1) { int v1; // edx@1 int v2; // edx@1 sub_5F7290(a1, -1001000, "_CLIBS"); sub_5F51C0(a1, 0, 1); sub_5F4E40(a1, (int)sub_6039A0, 0); sub_5F53F0(a1, -2, "__gc"); sub_5F5620(a1, -2); sub_5F51C0(a1, 0, 2); sub_5F7C40(a1, (int)&off_6FEE88, 0); sub_604330(a1); sub_5F53F0(a1, -2, "searchers"); sub_604280( a1, v1, "LUA_PATH_5_2", "path", "LUA_PATH", "!\\lua\\?.lua;!\\lua\\?\\init.lua;!\\?.lua;!\\?\\init.lua;.\\?.lua"); sub_604280(a1, v2, "LUA_CPATH_5_2", "cpath", "LUA_CPATH", "!\\?.dll;!\\loadall.dll;.\\?.dll"); sub_5F4D30(a1, "\\\n;\n?\n!\n-\n", 0xAu); sub_5F53F0(a1, -2, "config"); sub_5F7290(a1, -1001000, "_LOADED"); sub_5F53F0(a1, -2, "loaded"); sub_5F7290(a1, -1001000, "_PRELOAD"); sub_5F53F0(a1, -2, "preload"); sub_5F5140(a1, -1001000, 2); sub_5F4140(a1, -2); sub_5F7C40(a1, (int)&off_6FEEA0, 1); sub_5F3E70(a1, -2); return 1; } // 6FEE88: using guessed type char *off_6FEE88; // 6FEEA0: using guessed type char *off_6FEEA0; //----- (006044C0) -------------------------------------------------------- unsigned int __cdecl sub_6044C0(unsigned int a1) { unsigned int v1; // ecx@1 int v2; // eax@1 unsigned int result; // eax@2 v1 = a1; v2 = 0; if ( a1 >= 8 ) { if ( a1 >= 0x10 ) { do { v1 = (v1 + 1) >> 1; ++v2; } while ( v1 >= 0x10 ); } result = (v1 - 8) | (8 * v2 + 8); } else { result = a1; } return result; } //----- (006044F0) -------------------------------------------------------- signed int __cdecl sub_6044F0(signed int a1) { signed int result; // eax@1 result = a1; if ( (a1 >> 3) & 0x1F ) result = ((a1 & 7) + 8) << (((a1 >> 3) & 0x1F) - 1); return result; } //----- (00604510) -------------------------------------------------------- int __cdecl sub_604510(int a1) { unsigned int v1; // eax@1 int i; // ecx@1 v1 = a1 - 1; for ( i = 0; v1 >= 0x100; i += 8 ) v1 >>= 8; return i + (unsigned __int8)byte_6FF0E8[v1]; } //----- (00604540) -------------------------------------------------------- double __cdecl sub_604540(int a1, long double a2, long double a3) { double result; // st7@2 switch ( a1 ) { case 0: result = a2 + a3; break; case 1: result = a2 - a3; break; case 2: result = a2 * a3; break; case 3: result = a2 / a3; break; case 4: result = a2 - floor(a2 / a3) * a3; break; case 5: result = pow(a2, a3); break; case 6: result = -a2; break; default: result = 0.0; break; } return result; } //----- (006045D0) -------------------------------------------------------- int __cdecl sub_6045D0(int a1) { int result; // eax@2 if ( byte_6FE031[a1] & 2 ) result = a1 - 48; else result = (a1 | 0x20) - 87; return result; } //----- (006045F0) -------------------------------------------------------- double __fastcall sub_6045F0(int a1, int a2, double a3) { double v3; // st6@2 int v4; // eax@3 int v5; // eax@4 double result; // st7@7 if ( byte_6FE031[**(_BYTE **)a1] & 0x10 ) { v3 = a3; do { v4 = **(_BYTE **)a1; if ( byte_6FE031[v4] & 2 ) v5 = v4 - 48; else v5 = (v4 | 0x20) - 87; ++*(_DWORD *)a2; ++*(_DWORD *)a1; v3 = v3 * 16.0 + (double)v5; } while ( byte_6FE031[**(_BYTE **)a1] & 0x10 ); result = v3; } else { result = a3; } return result; } //----- (00604650) -------------------------------------------------------- double __cdecl sub_604650(int a1, int a2) { int v2; // eax@1 int v3; // edi@1 int v4; // edx@1 int v5; // esi@1 int v6; // edx@2 char v7; // cl@9 int v8; // ecx@11 double v9; // st7@11 int v10; // eax@11 char v12; // cl@16 char v13; // cl@18 int v14; // edx@18 signed int v15; // edi@19 char v16; // cl@23 signed int v17; // [sp+14h] [bp-Ch]@4 int v18; // [sp+18h] [bp-8h]@1 int v19; // [sp+1Ch] [bp-4h]@1 v2 = a1; v3 = a2; *(_DWORD *)a2 = a1; v4 = *(_BYTE *)v2; v5 = 0; v19 = 0; v18 = 0; if ( byte_6FE031[v4] & 8 ) { do v6 = *(_BYTE *)(v2++ + 1); while ( byte_6FE031[v6] & 8 ); } if ( *(_BYTE *)v2 == 45 ) { ++v2; v17 = 1; } else { if ( *(_BYTE *)v2 == 43 ) ++v2; v17 = 0; } if ( *(_BYTE *)v2 != 48 || (v7 = *(_BYTE *)(v2 + 1), v7 != 120) && v7 != 88 ) return 0.0; a1 = v2 + 2; v9 = sub_6045F0((int)&a1, (int)&v18, 0.0); v10 = a1; if ( *(_BYTE *)a1 == 46 ) { ++a1; v9 = sub_6045F0(v8, (int)&v19, v9); v10 = a1; v5 = v19; } if ( !v18 && !v5 ) return 0.0; *(_DWORD *)v3 = v10; v12 = *(_BYTE *)v10; v19 = -4 * v5; if ( v12 == 112 || v12 == 80 ) { v13 = *(_BYTE *)(v10++ + 1); v14 = 0; if ( v13 == 45 ) { ++v10; v15 = 1; } else { if ( v13 == 43 ) ++v10; v15 = 0; } v16 = *(_BYTE *)v10; if ( !(byte_6FE031[*(_BYTE *)v10] & 2) ) goto LABEL_29; do { ++v10; v14 = v16 + 10 * v14 - 48; v16 = *(_BYTE *)v10; } while ( byte_6FE031[*(_BYTE *)v10] & 2 ); if ( v15 ) v14 = -v14; v19 += v14; v3 = a2; } *(_DWORD *)v3 = v10; LABEL_29: if ( v17 ) v9 = -v9; return ldexp(v9, v19); } //----- (00604790) -------------------------------------------------------- int __cdecl sub_604790(char *a1, int a2, int a3) { int result; // eax@2 char *v4; // eax@6 char *v5; // [sp+4h] [bp-4h]@4 if ( strpbrk(a1, "nN") || (!strpbrk(a1, "xX") ? (*(double *)a3 = strtod(a1, &v5)) : (*(double *)a3 = sub_604650((int)a1, (int)&v5)), v4 = v5, v5 == a1) ) { result = 0; } else { if ( byte_6FE031[(unsigned __int8)*v5] & 8 ) { do { ++v4; v5 = v4; } while ( byte_6FE031[(unsigned __int8)*v4] & 8 ); } result = v4 == &a1[a2]; } return result; } //----- (00604B20) -------------------------------------------------------- int __cdecl sub_604B20(int a1, int a2, char a3) { return loc_604820(a1, a2, &a3); } //----- (00604B40) -------------------------------------------------------- char __cdecl sub_604B40(void *a1, void *a2, size_t a3) { int v3; // esi@1 const void *v4; // ebx@2 char result; // al@3 char *v6; // eax@9 void *v7; // edi@9 int v8; // edi@11 int v9; // edi@16 v3 = strlen((const char *)a2); if ( *(_BYTE *)a2 == 61 ) { v4 = (char *)a2 + 1; if ( v3 > a3 ) { result = (unsigned int)memmove(a1, v4, a3 - 1); *((_BYTE *)a1 + a3 - 1) = 0; } else { result = (unsigned int)memmove(a1, v4, v3); } return result; } if ( *(_BYTE *)a2 != 64 ) { v6 = strchr((const char *)a2, 10); *(_DWORD *)a1 = dword_6FF234; *((_DWORD *)a1 + 1) = dword_6FF238; *((_BYTE *)a1 + 8) = byte_6FF23C; v7 = (char *)a1 + 9; if ( v3 >= a3 - 15 ) { if ( !v6 ) { LABEL_14: if ( v3 > a3 - 15 ) v3 = a3 - 15; memmove(v7, a2, v3); v9 = (int)((char *)v7 + v3); *(_WORD *)v9 = word_6FEA30; result = byte_6FEA32; *(_BYTE *)(v9 + 2) = byte_6FEA32; v8 = v9 + 3; goto LABEL_17; } } else { if ( !v6 ) { result = (unsigned int)memmove(v7, a2, v3); v8 = (int)((char *)v7 + v3); LABEL_17: *(_WORD *)v8 = word_6FF230; *(_BYTE *)(v8 + 2) = byte_6FF232; return result; } } v3 = v6 - a2; goto LABEL_14; } if ( v3 > a3 ) { *(_WORD *)a1 = word_6FEA30; *((_BYTE *)a1 + 2) = byte_6FEA32; result = (unsigned int)memmove((char *)a1 + 3, (char *)a2 + v3 - (a3 - 3) + 1, a3 - 3); } else { result = (unsigned int)memmove(a1, (char *)a2 + 1, v3); } return result; } // 6FEA30: using guessed type __int16 word_6FEA30; // 6FEA32: using guessed type char byte_6FEA32; // 6FF230: using guessed type __int16 word_6FF230; // 6FF232: using guessed type char byte_6FF232; // 6FF234: using guessed type int dword_6FF234; // 6FF238: using guessed type int dword_6FF238; // 6FF23C: using guessed type char byte_6FF23C; //----- (00604C80) -------------------------------------------------------- signed int __cdecl sub_604C80(int a1) { int v1; // esi@1 signed int result; // eax@2 int v3; // [sp-4h] [bp-Ch]@1 v1 = (int)sub_5F7A50(a1, 1, 0, 0); v3 = sub_65B79E(v1); if ( v1 ) { result = sub_5F67D0(a1, v3); } else { sub_5F4ED0(a1, v3); result = 1; } return result; } //----- (00604CD0) -------------------------------------------------------- signed int __cdecl sub_604CD0(int a1) { int v1; // eax@1 int v2; // ST08_4@1 int v3; // eax@1 v1 = sub_5F79F0(a1, 1, 0); v2 = v1; v3 = remove((const char *)v1); return sub_5F6740(a1, v3 == 0, v2); } //----- (00604D00) -------------------------------------------------------- signed int __cdecl sub_604D00(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@1 v1 = sub_5F79F0(a1, 1, 0); v2 = sub_5F79F0(a1, 2, 0); v3 = rename((const char *)v1, (const char *)v2); return sub_5F6740(a1, v3 == 0, v1); } //----- (00604D40) -------------------------------------------------------- int __cdecl sub_604D40(signed int a1) { int result; // eax@2 char v2; // [sp+0h] [bp-18h]@0 char v3; // [sp+4h] [bp-14h]@1 unsigned int v4; // [sp+14h] [bp-4h]@1 int v5; // [sp+18h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; if ( _LN42(&v3) ) { sub_5F4D80(a1, &v3); result = 1; } else { result = sub_5F6700(a1, (int)"unable to generate a unique filename", v2); } return result; } // 659CAA: using guessed type _DWORD __cdecl $LN42(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00604DB0) -------------------------------------------------------- signed int __cdecl sub_604DB0(int a1) { int v1; // eax@1 const void *v2; // eax@1 v1 = sub_5F79F0(a1, 1, 0); v2 = (const void *)sub_658048((char *)v1); sub_5F4D80(a1, v2); return 1; } //----- (00604DE0) -------------------------------------------------------- signed int __cdecl sub_604DE0(int a1) { clock_t v1; // ST0C_4@1 v1 = clock(); sub_5F4C80(a1, (double)v1 / 1000.0); return 1; } //----- (00604E10) -------------------------------------------------------- int __usercall sub_604E10(int a1, int a2, signed int a3) { unsigned int v3; // edi@1 const char *v4; // eax@4 char v5; // cl@5 v3 = 0; while ( 1 ) { if ( *(_BYTE *)a2 && strchr((&off_6FF4E0)[v3 * 2], *(_BYTE *)a2) ) { *(_BYTE *)(a1 + 1) = *(_BYTE *)a2; v4 = (const char *)(&off_6FF4E4)[v3]; if ( !*v4 ) { *(_BYTE *)(a1 + 2) = 0; return a2 + 1; } v5 = *(_BYTE *)(a2 + 1); if ( v5 ) { if ( strchr(v4, v5) ) break; } } v3 += 4; if ( v3 >= 4 ) { sub_5F4E10(a3, (int)"invalid conversion specifier '%%%s'", a2); sub_5F7800(a3, 1); return a2; } } *(_BYTE *)(a1 + 2) = *(_BYTE *)(a2 + 1); *(_BYTE *)(a1 + 3) = 0; return a2 + 2; } // 6FF4E0: using guessed type char *off_6FF4E0; // 6FF4E4: using guessed type char (*off_6FF4E4)[2]; //----- (00604EA0) -------------------------------------------------------- signed int __cdecl sub_604EA0(int a1) { const char *v1; // ebx@1 signed int v2; // eax@2 struct tm *v3; // esi@5 int v4; // esi@10 const char i; // al@12 size_t v6; // eax@17 char v8; // [sp+Ch] [bp-2E8h]@12 __time32_t Time; // [sp+10h] [bp-2E4h]@4 struct tm *v10; // [sp+14h] [bp-2E0h]@5 int v11; // [sp+18h] [bp-2DCh]@12 unsigned int v12; // [sp+1Ch] [bp-2D8h]@14 unsigned int v13; // [sp+20h] [bp-2D4h]@14 char v14; // [sp+228h] [bp-CCh]@17 unsigned int v15; // [sp+2F0h] [bp-4h]@1 int v16; // [sp+2F4h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v1 = sub_5F7A50(a1, 1, "%c", 0); if ( sub_5F41F0(a1, 2) > 0 ) v2 = (signed int)sub_5F7AB0(a1, 2); else v2 = _time32(0); Time = v2; if ( *v1 == 33 ) { v3 = _gmtime32(&Time); v10 = v3; ++v1; } else { v10 = _localtime32(&Time); v3 = v10; } if ( v3 ) { if ( strcmp(v1, "*t") ) { v8 = 37; sub_5F6B90(a1, (int)&v11); for ( i = *v1; *v1; i = *v1 ) { if ( i == 37 ) { v1 = (const char *)sub_604E10((int)&v8, (int)(v1 + 1), a1); v6 = strftime(&v14, 0xC8u, &v8, v10); sub_5F6A30((int)&v11, &v14, v6); } else { if ( v13 >= v12 ) sub_5F69A0((int)&v11, 1u); *(_BYTE *)(v11 + v13++) = *v1++; } } sub_5F6AA0((int)&v11); } else { sub_5F51C0(a1, 0, 9); sub_5F4CC0(a1, v3->tm_sec); sub_5F53F0(a1, -2, "sec"); sub_5F4CC0(a1, v3->tm_min); sub_5F53F0(a1, -2, &off_6FEC80); sub_5F4CC0(a1, v3->tm_hour); sub_5F53F0(a1, -2, "hour"); sub_5F4CC0(a1, v3->tm_mday); sub_5F53F0(a1, -2, "day"); sub_5F4CC0(a1, v3->tm_mon + 1); sub_5F53F0(a1, -2, "month"); sub_5F4CC0(a1, v3->tm_year + 1900); sub_5F53F0(a1, -2, "year"); sub_5F4CC0(a1, v3->tm_wday + 1); sub_5F53F0(a1, -2, "wday"); sub_5F4CC0(a1, v3->tm_yday + 1); sub_5F53F0(a1, -2, "yday"); v4 = v3->tm_isdst; if ( v4 >= 0 ) { sub_5F4ED0(a1, v4); sub_5F53F0(a1, -2, "isdst"); } } } else { sub_5F4C60(a1); } return 1; } // 6FEC80: using guessed type void *off_6FEC80; // 86FEB8: using guessed type int __security_cookie; //----- (00605150) -------------------------------------------------------- signed int __cdecl sub_605150(int a1) { __time32_t v1; // eax@2 signed int v2; // edi@3 signed int v3; // edi@5 signed int v4; // edi@7 signed int v5; // edi@9 int v6; // eax@10 signed int v7; // edi@12 int v8; // eax@13 signed int v9; // edi@15 int v10; // eax@16 signed int v11; // edi@19 signed int v12; // eax@20 signed int result; // eax@23 __time32_t v14; // [sp+Ch] [bp-2Ch]@3 int v15; // [sp+10h] [bp-28h]@5 int v16; // [sp+14h] [bp-24h]@7 int v17; // [sp+18h] [bp-20h]@9 int v18; // [sp+1Ch] [bp-1Ch]@12 int v19; // [sp+20h] [bp-18h]@15 int v20; // [sp+24h] [bp-14h]@18 int v21; // [sp+30h] [bp-8h]@21 unsigned int v22; // [sp+34h] [bp-4h]@1 int v23; // [sp+38h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; if ( sub_5F41F0(a1, 1) > 0 ) { sub_5F7960(a1, 1, 5); sub_5F3E70(a1, 1); sub_5F5020(a1, -1, "sec"); v2 = sub_5F46F0(a1, -1, (int)&v14); if ( !v14 ) v2 = 0; sub_5F3E70(a1, -2); v15 = v2; sub_5F5020(a1, -1, &off_6FEC80); v3 = sub_5F46F0(a1, -1, (int)&v14); if ( !v14 ) v3 = 0; sub_5F3E70(a1, -2); v16 = v3; sub_5F5020(a1, -1, "hour"); v4 = sub_5F46F0(a1, -1, (int)&v14); if ( !v14 ) v4 = 12; sub_5F3E70(a1, -2); v17 = v4; sub_5F5020(a1, -1, "day"); v5 = sub_5F46F0(a1, -1, (int)&v14); if ( v14 ) { sub_5F3E70(a1, -2); v6 = v5; } else { v6 = sub_5F6700(a1, (int)"field '%s' missing in date table", (unsigned int)"day"); } v18 = v6; sub_5F5020(a1, -1, "month"); v7 = sub_5F46F0(a1, -1, (int)&v14); if ( v14 ) { sub_5F3E70(a1, -2); v8 = v7; } else { v8 = sub_5F6700(a1, (int)"field '%s' missing in date table", (unsigned int)"month"); } v19 = v8 - 1; sub_5F5020(a1, -1, "year"); v9 = sub_5F46F0(a1, -1, (int)&v14); if ( v14 ) { sub_5F3E70(a1, -2); v10 = v9; } else { v10 = sub_5F6700(a1, (int)"field '%s' missing in date table", (unsigned int)"year"); } v20 = v10 - 1900; sub_5F5020(a1, -1, "isdst"); if ( sub_5F41F0(a1, -1) ) { LOBYTE(v12) = sub_5F4870(a1, -1); v11 = v12; } else { v11 = -1; } sub_5F3E70(a1, -2); v21 = v11; v1 = _LN52(&v15); } else { v1 = _time32(0); } v14 = v1; if ( v1 == -1 ) { sub_5F4C60(a1); result = 1; } else { sub_5F4C80(a1, (double)v14); result = 1; } return result; } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 6FEC80: using guessed type void *off_6FEC80; // 86FEB8: using guessed type int __security_cookie; //----- (006053A0) -------------------------------------------------------- signed int __cdecl sub_6053A0(int a1) { __time32_t v1; // edi@1 double v2; // st7@1 double v3; // st7@1 v1 = (signed int)sub_5F7B20(a1, 2, 0.0); v2 = sub_5F7AB0(a1, 1); v3 = _difftime32((signed int)v2, v1); sub_5F4C80(a1, v3); return 1; } //----- (006053F0) -------------------------------------------------------- signed int __cdecl sub_6053F0(int a1) { char *v1; // edi@1 int v2; // eax@1 const void *v3; // eax@1 v1 = (char *)sub_5F7A50(a1, 1, 0, 0); v2 = sub_5F7CF0(a1, 2, (int)&off_6C6768, (const char **)&off_6FF500); v3 = (const void *)_LN54_1(*(&dword_6FF4E8 + v2), v1); sub_5F4D80(a1, v3); return 1; } // 6C6768: using guessed type void *off_6C6768; // 6FF500: using guessed type void *off_6FF500; //----- (00605440) -------------------------------------------------------- int __cdecl sub_605440(int a1) { int v1; // eax@2 UINT v2; // esi@2 int v3; // eax@4 if ( sub_5F41F0(a1, 1) == 1 ) { LOBYTE(v1) = sub_5F4870(a1, 1); v2 = v1 == 0; } else { v2 = sub_5F7C10(a1, 1, 0); } LOBYTE(v3) = sub_5F4870(a1, 2); if ( v3 ) sub_609230(a1); if ( a1 ) _LN49(v2); return 0; } //----- (006054B0) -------------------------------------------------------- signed int __cdecl sub_6054B0(signed int a1) { sub_5F51C0(a1, 0, 11); sub_5F7C40(a1, (int)&off_6FF520, 0); return 1; } // 6FF520: using guessed type char *off_6FF520; //----- (00605560) -------------------------------------------------------- signed int __usercall sub_605560(int a1, int a2, int a3, int a4) { signed int result; // eax@2 if ( *(_DWORD *)(a1 + 16) == a4 ) { sub_602EE0(a2, a3, a1); result = 1; } else { result = 0; } return result; } //----- (00605580) -------------------------------------------------------- int __usercall sub_605580(int a1, int a2) { int v2; // esi@1 int v3; // edi@3 v2 = a1; if ( *(_DWORD *)(a1 + 16) != 288 ) loc_6054E0(); v3 = *(_DWORD *)(v2 + 24); sub_602EE0(a2, v3, v2); return v3; } //----- (006055B0) -------------------------------------------------------- signed int __usercall sub_6055B0(int a1, int a2, int a3) { signed int result; // eax@1 result = sub_5F9640(*(_DWORD *)(a2 + 48), a1); *(_DWORD *)(a3 + 16) = -1; *(_DWORD *)(a3 + 20) = -1; *(_DWORD *)a3 = 4; *(_DWORD *)(a3 + 8) = result; return result; } //----- (006055D0) -------------------------------------------------------- int __cdecl sub_6055D0(int a1, int a2) { int v2; // ecx@1 int v3; // edi@1 int v4; // esi@1 signed int *v5; // ebx@1 int v6; // eax@2 int v7; // eax@4 int result; // eax@9 int v9; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)(a1 + 48); v3 = *(_DWORD *)v2; v4 = *(_DWORD *)(*(_DWORD *)v2 + 60); v5 = (signed int *)(*(_DWORD *)v2 + 60); v9 = *(_DWORD *)(a1 + 48); if ( *(_WORD *)(v2 + 44) + 1 > v4 ) { v6 = sub_6037B0(*(_DWORD *)(a1 + 52), *(_DWORD *)(v3 + 24), v5, 0xCu, 32767, (int)"local variables"); v2 = v9; *(_DWORD *)(v3 + 24) = v6; } if ( v4 < *v5 ) { v7 = 12 * v4; do { *(_DWORD *)(v7 + *(_DWORD *)(v3 + 24)) = 0; ++v4; v7 += 12; } while ( v4 < *v5 ); } *(_DWORD *)(*(_DWORD *)(v3 + 24) + 12 * *(_WORD *)(v2 + 44)) = a2; if ( *(_BYTE *)(a2 + 5) & 3 && *(_BYTE *)(v3 + 5) & 4 ) { sub_5FF530(*(_DWORD *)(a1 + 52), v3, a2); v2 = v9; } LOWORD(result) = *(_WORD *)(v2 + 44); *(_WORD *)(v2 + 44) = result + 1; return (signed __int16)result; } //----- (00605680) -------------------------------------------------------- __int16 __usercall sub_605680(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 __int16 result; // ax@5 __int16 v6; // [sp+8h] [bp-4h]@1 v2 = *(_DWORD *)(a2 + 48); v3 = *(_DWORD *)(a2 + 64); v6 = sub_6055D0(a2, a1); v4 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)(v3 + 4) - *(_DWORD *)(v2 + 40) + 1 > 200 ) v4 = loc_605510(200, "local variables"); if ( v4 + 2 > *(_DWORD *)(v3 + 8) ) *(_DWORD *)v3 = sub_6037B0( *(_DWORD *)(a2 + 52), *(_DWORD *)v3, (signed int *)(v3 + 8), 2u, 2147483645, (int)"local variables"); result = v6; *(_WORD *)(*(_DWORD *)v3 + 2 * (*(_DWORD *)(v3 + 4))++) = v6; return result; } //----- (00605700) -------------------------------------------------------- int __usercall sub_605700(int a1, int a2) { int result; // eax@1 int v3; // ecx@2 result = *(_DWORD *)(a1 + 48); for ( *(_BYTE *)(result + 46) += a2; a2; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)result + 24) + 12 * *(_WORD *)(**(_DWORD **)(*(_DWORD *)(result + 12) + 64) + 2 * (*(_DWORD *)(result + 40) + v3)) + 4) = *(_DWORD *)(result + 20) ) v3 = *(_BYTE *)(result + 46) - a2--; return result; } //----- (00605740) -------------------------------------------------------- int __usercall sub_605740(int result, signed int a2) { int v2; // esi@2 int v3; // edi@2 unsigned __int8 v4; // cl@2 for ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(result + 12) + 64) + 4) += a2 - *(_BYTE *)(result + 46); *(_BYTE *)(result + 46) > a2; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)result + 24) + 12 * *(_WORD *)(**(_DWORD **)(v2 + 64) + 2 * (*(_DWORD *)(result + 40) + v4)) + 8) = v3 ) { v2 = *(_DWORD *)(result + 12); v3 = *(_DWORD *)(result + 20); v4 = *(_BYTE *)(result + 46) - 1; *(_BYTE *)(result + 46) = v4; } return result; } //----- (006057A0) -------------------------------------------------------- signed int __usercall sub_6057A0(int a1, int a2) { int v2; // ebx@1 signed int v3; // esi@1 int v4; // eax@2 signed int result; // eax@4 v2 = *(_DWORD *)(*(_DWORD *)a1 + 28); v3 = 0; if ( *(_BYTE *)(a1 + 47) ) { while ( 1 ) { LOBYTE(v4) = sub_6092C0(*(_DWORD *)(v2 + 8 * v3), a2); if ( v4 ) break; ++v3; if ( v3 >= *(_BYTE *)(a1 + 47) ) goto LABEL_4; } result = v3; } else { LABEL_4: result = -1; } return result; } //----- (006057E0) -------------------------------------------------------- int __usercall sub_6057E0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // ebx@1 int v6; // eax@1 signed int *v7; // ecx@1 int result; // eax@10 v3 = a1; v4 = *(_DWORD *)a1; v5 = *(_DWORD *)(*(_DWORD *)a1 + 40); v6 = *(_BYTE *)(a1 + 47) + 1; v7 = (signed int *)(*(_DWORD *)v3 + 40); if ( v6 > 255 ) v6 = loc_605510(v7, 255, "upvalues"); if ( v6 > v5 ) *(_DWORD *)(v4 + 28) = sub_6037B0( *(_DWORD *)(*(_DWORD *)(v3 + 12) + 52), *(_DWORD *)(v4 + 28), v7, 8u, 255, (int)"upvalues"); for ( ; v5 < *(_DWORD *)(v4 + 40); ++v5 ) *(_DWORD *)(*(_DWORD *)(v4 + 28) + 8 * v5) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 28) + 8 * *(_BYTE *)(v3 + 47) + 4) = *(_DWORD *)a3 == 7; *(_BYTE *)(*(_DWORD *)(v4 + 28) + 8 * *(_BYTE *)(v3 + 47) + 5) = *(_BYTE *)(a3 + 8); *(_DWORD *)(*(_DWORD *)(v4 + 28) + 8 * *(_BYTE *)(v3 + 47)) = a2; if ( *(_BYTE *)(a2 + 5) & 3 && *(_BYTE *)(v4 + 5) & 4 ) sub_5FF530(*(_DWORD *)(*(_DWORD *)(v3 + 12) + 52), v4, a2); LOBYTE(result) = *(_BYTE *)(v3 + 47); *(_BYTE *)(v3 + 47) = result + 1; return (unsigned __int8)result; } //----- (006058B0) -------------------------------------------------------- signed int __usercall sub_6058B0(int a1, int a2) { int v2; // edi@1 int v3; // eax@2 signed int result; // eax@4 v2 = *(_BYTE *)(a2 + 46) - 1; if ( v2 < 0 ) { LABEL_4: result = -1; } else { while ( 1 ) { LOBYTE(v3) = sub_6092C0( a1, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 24) + 12 * *(_WORD *)(**(_DWORD **)(*(_DWORD *)(a2 + 12) + 64) + 2 * (v2 + *(_DWORD *)(a2 + 40))))); if ( v3 ) break; --v2; if ( v2 < 0 ) goto LABEL_4; } result = v2; } return result; } //----- (006058F0) -------------------------------------------------------- signed int __cdecl sub_6058F0(int a1, int a2, int a3, int a4) { signed int result; // eax@2 signed int v5; // eax@3 int i; // edi@5 signed int v7; // eax@9 if ( !a1 ) return 0; v5 = sub_6058B0(a2, a1); if ( v5 < 0 ) { v7 = sub_6057A0(a1, a2); if ( v7 < 0 ) { result = sub_6058F0(*(_DWORD *)(a1 + 8), a2, a3, 0); if ( !result ) return result; v7 = sub_6057E0(a1, a2, a3); } *(_DWORD *)(a3 + 8) = v7; *(_DWORD *)(a3 + 16) = -1; *(_DWORD *)(a3 + 20) = -1; *(_DWORD *)a3 = 8; result = 8; } else { *(_DWORD *)(a3 + 16) = -1; *(_DWORD *)(a3 + 20) = -1; *(_DWORD *)a3 = 7; *(_DWORD *)(a3 + 8) = v5; if ( !a4 ) { for ( i = *(_DWORD *)(a1 + 16); *(_BYTE *)(i + 8) > v5; i = *(_DWORD *)i ) ; *(_BYTE *)(i + 9) = 1; } result = 7; } return result; } // 6058F0: using guessed type _DWORD __cdecl sub_6058F0(_DWORD, _DWORD, _DWORD, _DWORD); //----- (006059A0) -------------------------------------------------------- char __usercall sub_6059A0(int a1, int a2, int a3) { int v3; // esi@1 unsigned int v4; // edi@3 int v5; // eax@3 signed int v6; // eax@4 int v8; // [sp+8h] [bp-20h]@3 int v9; // [sp+Ch] [bp-1Ch]@4 int v10; // [sp+14h] [bp-14h]@4 int v11; // [sp+1Ch] [bp-Ch]@4 int v12; // [sp+20h] [bp-8h]@4 unsigned int v13; // [sp+24h] [bp-4h]@1 int v14; // [sp+28h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = a1; if ( *(_DWORD *)(a1 + 16) != 288 ) loc_6054E0(); v8 = *(_DWORD *)(v3 + 24); sub_602EE0(a2, a3, v3); v4 = *(_DWORD *)(v3 + 48); v5 = sub_6058F0(*(_DWORD *)(v3 + 48), v8, a2, 1); if ( !v5 ) { sub_6058F0(v4, *(_DWORD *)(v3 + 72), a2, 1); v6 = sub_5F9640(*(_DWORD *)(v3 + 48), v8); v11 = -1; v12 = -1; v9 = 4; v10 = v6; LOBYTE(v5) = sub_5FA5A0(v4, a2, (unsigned int)&v9); } return v5; } // 6058F0: using guessed type _DWORD __cdecl sub_6058F0(_DWORD, _DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00605A40) -------------------------------------------------------- int __usercall sub_605A40(int a1, int a2, int a3, int a4) { int v4; // edi@1 int result; // eax@1 int v6; // esi@1 int v7; // ebx@6 int v8; // esi@7 v4 = *(_DWORD *)(a1 + 48); result = *(_DWORD *)a3; v6 = a2 - a4; if ( *(_DWORD *)a3 == 12 || result == 13 ) { v8 = v6 + 1; if ( v8 < 0 ) v8 = 0; result = sub_5F9710(v4, a3, v8); if ( v8 > 1 ) result = sub_5F9470(v4, v8 - 1); } else { if ( result ) result = sub_5F9E60(v4, a3); if ( v6 > 0 ) { v7 = *(_BYTE *)(v4 + 48); sub_5F9470(v4, v6); result = sub_5F9A80(v4, v7, v6); } } return result; } //----- (00605AB0) -------------------------------------------------------- int __usercall sub_605AB0(int a1, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // ecx@1 int v6; // eax@1 unsigned __int8 v7; // dl@1 int v8; // eax@2 int result; // eax@3 int v10; // ecx@3 int v11; // edx@4 int v12; // eax@5 int v13; // edi@5 int v14; // eax@5 v3 = a1; v4 = *(_DWORD *)(a1 + 64); v5 = *(_DWORD *)(a1 + 48); v6 = 16 * a3 + *(_DWORD *)(v4 + 12); v7 = *(_BYTE *)(v6 + 12); if ( v7 < *(_BYTE *)(a2 + 12) ) { v4 = v7 + *(_DWORD *)(v5 + 40); v8 = sub_604B20( *(_DWORD *)(v3 + 52), (int)" at line %d jumps into the scope of local '%s'", *(_DWORD *)v6 + 16); *(_DWORD *)(v3 + 16) = 0; v6 = loc_6019A0(v3, v8); } sub_5FAAB0(v5, *(_DWORD *)(v6 + 4), *(_DWORD *)(a2 + 4)); v10 = a3; if ( a3 < *(_DWORD *)(v4 + 16) - 1 ) { v11 = 16 * a3; do { v12 = *(_DWORD *)(v4 + 12); v13 = *(_DWORD *)(v12 + v11 + 16); v14 = v11 + v12; *(_DWORD *)v14 = v13; *(_DWORD *)(v14 + 4) = *(_DWORD *)(v14 + 20); *(_DWORD *)(v14 + 8) = *(_DWORD *)(v14 + 24); *(_DWORD *)(v14 + 12) = *(_DWORD *)(v14 + 28); ++v10; result = *(_DWORD *)(v4 + 16) - 1; v11 += 16; } while ( v10 < result ); } --*(_DWORD *)(v4 + 16); return result; } //----- (00605B80) -------------------------------------------------------- signed int __usercall sub_605B80(int a1, int a2) { int v2; // esi@1 int *v3; // eax@1 int v4; // ecx@1 int v5; // ecx@2 int v6; // edi@4 int v7; // edx@4 int v8; // edi@4 int v9; // eax@4 signed int result; // eax@6 unsigned __int8 v11; // al@7 int v12; // esi@11 int v13; // eax@11 int v14; // ecx@11 unsigned __int8 v15; // dl@11 int v16; // eax@12 int v17; // ecx@13 int v18; // edx@14 int v19; // eax@15 int v20; // edi@15 int v21; // eax@15 int v22; // [sp+8h] [bp-14h]@1 int v23; // [sp+10h] [bp-Ch]@1 int v24; // [sp+14h] [bp-8h]@1 int v25; // [sp+18h] [bp-4h]@2 v2 = *(_DWORD *)(a1 + 64); v3 = (int *)(16 * a2 + *(_DWORD *)(v2 + 12)); v4 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 48) + 16) + 4); v22 = *(_DWORD *)(*(_DWORD *)(a1 + 48) + 16); v23 = 16 * a2 + *(_DWORD *)(v2 + 12); v24 = v4; if ( v4 >= *(_DWORD *)(v2 + 28) ) { LABEL_6: result = 0; } else { v5 = 16 * v4; v25 = v5; while ( 1 ) { v6 = *(_DWORD *)(v2 + 24); v7 = *(_DWORD *)(v6 + v5); v8 = v5 + v6; LOBYTE(v9) = sub_6092C0(v7, *v3); if ( v9 ) break; v25 += 16; ++v24; if ( v24 >= *(_DWORD *)(v2 + 28) ) goto LABEL_6; v5 = v25; v3 = (int *)v23; } v11 = *(_BYTE *)(v8 + 12); if ( *(_BYTE *)(v23 + 12) > v11 && (*(_BYTE *)(v22 + 9) || *(_DWORD *)(v2 + 28) > (signed int)*(_WORD *)(v22 + 4)) ) sub_5F91E0(*(_DWORD *)(a1 + 48), *(_DWORD *)(v23 + 4), v11); v12 = *(_DWORD *)(a1 + 64); v13 = 16 * a2 + *(_DWORD *)(v12 + 12); v14 = *(_DWORD *)(a1 + 48); v15 = *(_BYTE *)(v13 + 12); if ( v15 < *(_BYTE *)(v8 + 12) ) { v12 = v15 + *(_DWORD *)(v14 + 40); v16 = sub_604B20( *(_DWORD *)(a1 + 52), (int)" at line %d jumps into the scope of local '%s'", *(_DWORD *)v13 + 16); *(_DWORD *)(a1 + 16) = 0; v13 = loc_6019A0(a1, v16); } sub_5FAAB0(v14, *(_DWORD *)(v13 + 4), *(_DWORD *)(v8 + 4)); v17 = a2; if ( a2 < *(_DWORD *)(v12 + 16) - 1 ) { v18 = 16 * a2; do { v19 = *(_DWORD *)(v12 + 12); v20 = *(_DWORD *)(v19 + v18 + 16); v21 = v18 + v19; *(_DWORD *)v21 = v20; *(_DWORD *)(v21 + 4) = *(_DWORD *)(v21 + 20); *(_DWORD *)(v21 + 8) = *(_DWORD *)(v21 + 24); *(_DWORD *)(v21 + 12) = *(_DWORD *)(v21 + 28); ++v17; v18 += 16; } while ( v17 < *(_DWORD *)(v12 + 16) - 1 ); } --*(_DWORD *)(v12 + 16); result = 1; } return result; } //----- (00605CE0) -------------------------------------------------------- int __usercall sub_605CE0(int a1, int a2, int a3, int a4, int a5) { int v5; // edi@1 v5 = *(_DWORD *)(a2 + 4); if ( v5 + 1 > *(_DWORD *)(a2 + 8) ) *(_DWORD *)a2 = sub_6037B0( *(_DWORD *)(a1 + 52), *(_DWORD *)a2, (signed int *)(a2 + 8), 0x10u, 32767, (int)"labels/gotos"); *(_DWORD *)(*(_DWORD *)a2 + 16 * v5) = a3; *(_DWORD *)(*(_DWORD *)a2 + 16 * v5 + 8) = a4; *(_BYTE *)(*(_DWORD *)a2 + 16 * v5 + 12) = *(_BYTE *)(*(_DWORD *)(a1 + 48) + 46); *(_DWORD *)(*(_DWORD *)a2 + 16 * v5 + 4) = a5; ++*(_DWORD *)(a2 + 4); return v5; } //----- (00605E70) -------------------------------------------------------- int __cdecl sub_605E70(int a1, int a2) { int result; // eax@1 int v3; // edi@1 int v4; // ebx@1 int v5; // edx@1 int v6; // ebx@2 int v7; // esi@4 unsigned __int8 v8; // al@4 int v9; // eax@8 int v10; // ecx@8 int v11; // esi@8 int v12; // edi@8 int v13; // eax@8 int v14; // ecx@9 int v15; // ebx@11 int v16; // edx@11 int v17; // eax@11 int v18; // ebx@11 int v19; // eax@11 unsigned __int8 v20; // al@17 int v21; // [sp+8h] [bp-1Ch]@8 int v22; // [sp+Ch] [bp-18h]@8 int v23; // [sp+10h] [bp-14h]@8 int v24; // [sp+14h] [bp-10h]@2 int v25; // [sp+18h] [bp-Ch]@1 int v26; // [sp+1Ch] [bp-8h]@9 int v27; // [sp+20h] [bp-4h]@1 result = a1; v3 = a2; v4 = *(_WORD *)(a2 + 6); v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 64) + 12; v27 = v4; v25 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 64) + 12; if ( v4 < *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 64) + 16) ) { v6 = 16 * v4; v24 = v6; while ( 1 ) { v7 = *(_DWORD *)v5; v8 = *(_BYTE *)(v3 + 8); if ( *(_BYTE *)(*(_DWORD *)v5 + v6 + 12) > v8 ) { if ( *(_BYTE *)(v3 + 9) ) { sub_5F91E0(a1, *(_DWORD *)(v7 + v6 + 4), v8); v5 = v25; v3 = a2; } *(_BYTE *)(v7 + v6 + 12) = *(_BYTE *)(v3 + 8); } v9 = *(_DWORD *)(a1 + 12); v10 = *(_DWORD *)(*(_DWORD *)(v9 + 48) + 16); v11 = *(_DWORD *)(v9 + 64); v12 = *(_WORD *)(v10 + 4); v22 = *(_DWORD *)(a1 + 12); v13 = v6 + *(_DWORD *)(v11 + 12); v21 = v10; v23 = v6 + *(_DWORD *)(v11 + 12); if ( v12 >= *(_DWORD *)(v11 + 28) ) { LABEL_14: ++v27; v6 += 16; v24 = v6; } else { v14 = 16 * v12; v26 = 16 * v12; while ( 1 ) { v15 = *(_DWORD *)(v11 + 24); v16 = *(_DWORD *)v13; v17 = *(_DWORD *)(v15 + v14); v18 = v14 + v15; LOBYTE(v19) = sub_6092C0(v17, v16); if ( v19 ) break; v26 += 16; ++v12; if ( v12 >= *(_DWORD *)(v11 + 28) ) { v6 = v24; v5 = v25; goto LABEL_14; } v14 = v26; v13 = v23; } v20 = *(_BYTE *)(v18 + 12); if ( *(_BYTE *)(v23 + 12) > v20 && (*(_BYTE *)(v21 + 9) || *(_DWORD *)(v11 + 28) > (signed int)*(_WORD *)(v21 + 4)) ) sub_5F91E0(*(_DWORD *)(v22 + 48), *(_DWORD *)(v23 + 4), v20); sub_605AB0(v22, v18, v27); v6 = v24; v5 = v25; } result = v27; if ( v27 >= *(_DWORD *)(v5 + 4) ) break; v3 = a2; } } return result; } //----- (00605FB0) -------------------------------------------------------- int __usercall sub_605FB0(int a1) { int v1; // eax@1 int v2; // esi@1 int v3; // ebx@1 int v4; // ebx@3 int v6; // [sp+8h] [bp-8h]@1 int v7; // [sp+Ch] [bp-4h]@1 v1 = sub_609600(*(_DWORD *)(a1 + 52), "break"); v2 = *(_DWORD *)(a1 + 64); v3 = *(_DWORD *)(v2 + 28); v7 = v1; v6 = *(_DWORD *)(*(_DWORD *)(a1 + 48) + 20); if ( v3 + 1 > *(_DWORD *)(v2 + 32) ) *(_DWORD *)(v2 + 24) = sub_6037B0( *(_DWORD *)(a1 + 52), *(_DWORD *)(v2 + 24), (signed int *)(v2 + 32), 0x10u, 32767, (int)"labels/gotos"); v4 = 16 * v3; *(_DWORD *)(v4 + *(_DWORD *)(v2 + 24)) = v7; *(_DWORD *)(*(_DWORD *)(v2 + 24) + v4 + 8) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 24) + v4 + 12) = *(_BYTE *)(*(_DWORD *)(a1 + 48) + 46); *(_DWORD *)(*(_DWORD *)(v2 + 24) + v4 + 4) = v6; ++*(_DWORD *)(v2 + 28); return loc_605D50(a1, v4 + *(_DWORD *)(*(_DWORD *)(a1 + 64) + 24)); } //----- (00606130) -------------------------------------------------------- int __usercall sub_606130(int a1) { int v1; // edx@1 int v2; // ebx@1 signed int v3; // eax@1 int v4; // esi@1 signed int *v5; // ecx@1 int v6; // edi@1 int v7; // eax@3 int v8; // edi@6 int v10; // [sp+Ch] [bp-4h]@1 v1 = *(_DWORD *)(a1 + 52); v2 = *(_DWORD *)(a1 + 48); v3 = *(_DWORD *)(v2 + 36); v4 = *(_DWORD *)v2; v5 = (signed int *)(*(_DWORD *)v2 + 56); v6 = *v5; v10 = v1; if ( v3 >= *v5 ) { if ( v3 + 1 > v6 ) { v7 = sub_6037B0(v1, *(_DWORD *)(v4 + 16), v5, 4u, 262143, (int)"functions"); v1 = v10; *(_DWORD *)(v4 + 16) = v7; } for ( ; v6 < *(_DWORD *)(v4 + 56); ++v6 ) *(_DWORD *)(*(_DWORD *)(v4 + 16) + 4 * v6) = 0; } v8 = sub_5FE0E0(v1); *(_DWORD *)(*(_DWORD *)(v4 + 16) + 4 * (*(_DWORD *)(v2 + 36))++) = v8; if ( *(_BYTE *)(v8 + 5) & 3 && *(_BYTE *)(v4 + 5) & 4 ) sub_5FF530(v10, v4, v8); return v8; } //----- (006061D0) -------------------------------------------------------- int __usercall sub_6061D0(int a1, int a2, int a3) { int v3; // edi@1 int v4; // ecx@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 __int16 v8; // dx@3 v3 = *(_DWORD *)(a1 + 52); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 48); *(_DWORD *)(a2 + 12) = a1; *(_DWORD *)(a1 + 48) = a2; *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 28) = -1; *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(a2 + 36) = 0; *(_WORD *)(a2 + 47) = 0; *(_BYTE *)(a2 + 46) = 0; *(_WORD *)(a2 + 44) = 0; v4 = *(_DWORD *)a2; *(_DWORD *)(a2 + 40) = *(_DWORD *)(*(_DWORD *)(a1 + 64) + 4); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(v4 + 36) = *(_DWORD *)(a1 + 68); *(_BYTE *)(v4 + 78) = 2; v5 = sub_60BE10(v3); *(_DWORD *)(a2 + 4) = v5; v6 = *(_DWORD *)(v3 + 8); *(_DWORD *)v6 = v5; *(_DWORD *)(v6 + 4) = 2146936133; *(_DWORD *)(v3 + 8) += 8; if ( ((*(_DWORD *)(v3 + 24) - *(_DWORD *)(v3 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(v3, 0); result = a3; *(_BYTE *)(a3 + 10) = 0; *(_BYTE *)(a3 + 8) = *(_BYTE *)(a2 + 46); *(_WORD *)(a3 + 4) = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(a2 + 12) + 64) + 28); v8 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(a2 + 12) + 64) + 16); *(_BYTE *)(a3 + 9) = 0; *(_WORD *)(a3 + 6) = v8; *(_DWORD *)a3 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 16) = a3; return result; } //----- (00606290) -------------------------------------------------------- int __cdecl sub_606290(int a1) { signed int v1; // ebx@1 int v2; // edi@1 int 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; // ecx@13 int result; // eax@16 v1 = *(_DWORD *)(a1 + 52); v2 = *(_DWORD *)(a1 + 48); v3 = *(_DWORD *)v2; sub_5F9B70(*(_DWORD *)(a1 + 48), 0, 0); loc_606090(); v4 = *(_DWORD *)(v2 + 20); if ( (unsigned int)(v4 + 1) > 0x3FFFFFFF ) v4 = loc_603720(v1); *(_DWORD *)(v3 + 12) = sub_603740(v1, *(_DWORD *)(v3 + 12), 4 * *(_DWORD *)(v3 + 48), 4 * v4); *(_DWORD *)(v3 + 48) = *(_DWORD *)(v2 + 20); if ( (unsigned int)(*(_DWORD *)(v2 + 20) + 1) > 0x3FFFFFFF ) loc_603720(v1); *(_DWORD *)(v3 + 20) = sub_603740(v1, *(_DWORD *)(v3 + 20), 4 * *(_DWORD *)(v3 + 52), 4 * *(_DWORD *)(v2 + 20)); *(_DWORD *)(v3 + 52) = *(_DWORD *)(v2 + 20); v5 = *(_DWORD *)(v2 + 32); if ( (unsigned int)(v5 + 1) > 0x1FFFFFFF ) v5 = loc_603720(v1); *(_DWORD *)(v3 + 8) = sub_603740(v1, *(_DWORD *)(v3 + 8), 8 * *(_DWORD *)(v3 + 44), 8 * v5); *(_DWORD *)(v3 + 44) = *(_DWORD *)(v2 + 32); v6 = *(_DWORD *)(v2 + 36); if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) v6 = loc_603720(v1); *(_DWORD *)(v3 + 16) = sub_603740(v1, *(_DWORD *)(v3 + 16), 4 * *(_DWORD *)(v3 + 56), 4 * v6); *(_DWORD *)(v3 + 56) = *(_DWORD *)(v2 + 36); v7 = *(_WORD *)(v2 + 44); if ( (unsigned int)(v7 + 1) > 0x15555555 ) v7 = loc_603720(v1); *(_DWORD *)(v3 + 24) = sub_603740(v1, *(_DWORD *)(v3 + 24), 12 * *(_DWORD *)(v3 + 60), 12 * v7); *(_DWORD *)(v3 + 60) = *(_WORD *)(v2 + 44); v8 = *(_BYTE *)(v2 + 47); if ( (unsigned int)(v8 + 1) > 0x1FFFFFFF ) v8 = loc_603720(v1); *(_DWORD *)(v3 + 28) = sub_603740(v1, *(_DWORD *)(v3 + 28), 8 * *(_DWORD *)(v3 + 40), 8 * v8); *(_DWORD *)(v3 + 40) = *(_BYTE *)(v2 + 47); *(_DWORD *)(a1 + 48) = *(_DWORD *)(v2 + 8); v9 = *(_DWORD *)(a1 + 16); if ( v9 == 288 || v9 == 289 ) sub_6019C0(a1, (const void *)(*(_DWORD *)(a1 + 24) + 16), *(_DWORD *)(*(_DWORD *)(a1 + 24) + 12)); result = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 8) -= 8; if ( *(_DWORD *)(result + 12) > 0 ) result = sub_600600(v1); return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00606470) -------------------------------------------------------- signed int __usercall sub_606470(int a1, signed int a2) { signed int result; // eax@2 switch ( *(_DWORD *)(a1 + 16) ) { case 0x104: case 0x105: case 0x106: case 0x11E: result = 1; break; case 0x115: result = a2; break; default: result = 0; break; } return result; } //----- (006064D0) -------------------------------------------------------- char __usercall sub_6064D0(int a1, int a2) { int v2; // esi@1 unsigned int v3; // ebx@1 int v4; // ST20_4@3 int v6; // [sp+0h] [bp-2Ch]@0 int v7; // [sp+10h] [bp-1Ch]@3 int v8; // [sp+18h] [bp-14h]@3 int v9; // [sp+20h] [bp-Ch]@3 int v10; // [sp+24h] [bp-8h]@3 unsigned int v11; // [sp+28h] [bp-4h]@1 int v12; // [sp+2Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v2 = a1; v3 = *(_DWORD *)(a1 + 48); sub_5F9F30(*(_DWORD *)(a1 + 48), v6); sub_602EE0(v3, a2, v2); if ( *(_DWORD *)(v2 + 16) != 288 ) loc_6054E0(); v4 = *(_DWORD *)(v2 + 24); sub_602EE0(v3, a2, v2); v8 = sub_5F9640(*(_DWORD *)(v2 + 48), v4); v9 = -1; v10 = -1; v7 = 4; return sub_5FA5A0(v3, a2, (unsigned int)&v7); } // 86FEB8: using guessed type int __security_cookie; //----- (00606550) -------------------------------------------------------- int __usercall sub_606550(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // ST40_4@4 signed int v5; // eax@4 int v6; // ST40_4@10 int v7; // eax@10 int result; // eax@10 char v9; // [sp+8h] [bp-3Ch]@1 char v10; // [sp+10h] [bp-34h]@10 int v11; // [sp+28h] [bp-1Ch]@4 int v12; // [sp+30h] [bp-14h]@4 int v13; // [sp+38h] [bp-Ch]@4 int v14; // [sp+3Ch] [bp-8h]@4 unsigned int v15; // [sp+40h] [bp-4h]@1 int v16; // [sp+44h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v2 = a1; v3 = *(_DWORD *)(a1 + 48); v9 = *(_BYTE *)(v3 + 48); if ( *(_DWORD *)(a1 + 16) == 288 ) { if ( *(_DWORD *)(a2 + 28) > 2147483645 ) { v2 = *(_DWORD *)(a1 + 48); loc_605510(2147483645, "items in a constructor"); } v4 = *(_DWORD *)(v2 + 24); sub_602EE0(a2, v3, v2); v5 = sub_5F9640(*(_DWORD *)(v2 + 48), v4); v13 = -1; v14 = -1; v11 = 4; v12 = v5; } else { sub_602EE0(a2, v3, a1); sub_607370(v2, &v11, 0); sub_5F9F90(*(_DWORD *)(v2 + 48), (int)&v11); if ( *(_DWORD *)(v2 + 16) != 93 ) loc_6054E0(); sub_602EE0(a2, v3, v2); } ++*(_DWORD *)(a2 + 28); if ( *(_DWORD *)(v2 + 16) != 61 ) loc_6054E0(); sub_602EE0(a2, v3, v2); v6 = sub_5FA000(__PAIR__(&v11, v3)); sub_607370(v2, &v10, 0); v7 = sub_5FA000(__PAIR__(&v10, v3)); result = sub_5F9370(v3, 10, *(_DWORD *)(*(_DWORD *)(a2 + 24) + 8), v6, v7); *(_BYTE *)(v3 + 48) = v9; return result; } // 607370: using guessed type _DWORD __cdecl sub_607370(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00606670) -------------------------------------------------------- void __usercall sub_606670(int a1, int a2) { int v2; // eax@2 if ( *(_DWORD *)(a2 + 36) ) { v2 = *(_DWORD *)a2; if ( *(_DWORD *)a2 == 12 || v2 == 13 ) { sub_5F9710(a1, a2, -1); loc_5F99D0(a1, *(_DWORD *)(*(_DWORD *)(a2 + 24) + 8), (*(_DWORD *)(a2 + 32))--, -1); } else { if ( v2 ) sub_5F9E60(a1, a2); loc_5F99D0(a1, *(_DWORD *)(*(_DWORD *)(a2 + 24) + 8), *(_DWORD *)(a2 + 32), *(_DWORD *)(a2 + 36)); } } } //----- (006068C0) -------------------------------------------------------- int __usercall sub_6068C0(int a1) { int v1; // ebx@1 int v2; // esi@1 int v3; // edi@1 int v4; // esi@4 int v6; // [sp+Ch] [bp-8h]@1 int v7; // [sp+10h] [bp-4h]@1 v1 = a1; v2 = *(_DWORD *)(a1 + 48); v3 = *(_DWORD *)v2; *(_BYTE *)(*(_DWORD *)v2 + 77) = 0; v6 = v2; v7 = 0; if ( *(_DWORD *)(a1 + 16) != 41 ) { while ( 1 ) { if ( *(_DWORD *)(v1 + 16) == 280 ) { sub_602EE0(v1, v3, v1); *(_BYTE *)(v3 + 77) = 1; goto LABEL_10; } if ( *(_DWORD *)(v1 + 16) != 288 ) break; v4 = *(_DWORD *)(v1 + 24); sub_602EE0(v1, v3, v1); sub_605680(v4, v1); ++v7; if ( *(_BYTE *)(v3 + 77) || *(_DWORD *)(v1 + 16) != 44 ) goto LABEL_9; sub_602EE0(v1, v3, v1); v2 = v6; } loc_6019A0(v1, " or '...' expected"); LABEL_9: v2 = v6; } LABEL_10: sub_605700(v1, v7); *(_BYTE *)(v3 + 76) = *(_BYTE *)(v2 + 46); return sub_5F9470(v2, *(_BYTE *)(v2 + 46)); } //----- (00606AD0) -------------------------------------------------------- int __usercall sub_606AD0(int a1, int a2) { int v2; // ebx@1 v2 = 1; sub_607370(a2, a1, 0); while ( *(_DWORD *)(a2 + 16) == 44 ) { sub_602EE0(v2, a1, a2); sub_5F9E60(*(_DWORD *)(a2 + 48), a1); sub_607370(a2, a1, 0); ++v2; } return v2; } // 607370: using guessed type _DWORD __cdecl sub_607370(_DWORD, _DWORD, _DWORD); //----- (00606B10) -------------------------------------------------------- int __usercall sub_606B10(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // ebx@1 int v6; // eax@1 signed int v7; // eax@5 int v8; // esi@10 int v9; // eax@12 char v10; // al@20 int v11; // eax@20 int v12; // eax@22 int result; // eax@22 int v14; // [sp+10h] [bp-20h]@1 int v15; // [sp+14h] [bp-1Ch]@5 int v16; // [sp+1Ch] [bp-14h]@5 int v17; // [sp+24h] [bp-Ch]@5 int v18; // [sp+28h] [bp-8h]@5 unsigned int v19; // [sp+2Ch] [bp-4h]@1 int v20; // [sp+30h] [bp+0h]@1 v19 = (unsigned int)&v20 ^ __security_cookie; v4 = a1; v5 = *(_DWORD *)(a1 + 48); v6 = *(_DWORD *)(a1 + 16); v14 = *(_DWORD *)(a1 + 48); if ( v6 == 40 ) { sub_602EE0(v5, a2, a1); if ( *(_DWORD *)(v4 + 16) == 41 ) { v15 = 0; } else { a2 = (int)&v15; sub_606AD0((int)&v15, v4); sub_5F9710(v5, (int)&v15, -1); } if ( *(_DWORD *)(v4 + 16) != 41 ) { if ( a4 == *(_DWORD *)(v4 + 4) ) loc_6054E0(); sub_601890(v4, 40); v10 = sub_601890(v4, 41); v11 = sub_604B20(*(_DWORD *)(v4 + 52), (int)"%s expected (to close %s at line %d)", v10); loc_6019A0(v4, v11); goto LABEL_21; } sub_602EE0(v5, a2, v4); goto LABEL_7; } if ( v6 == 123 ) { loc_6066D0(a1, &v15); LABEL_7: a2 = -1; goto LABEL_8; } if ( v6 != 289 ) loc_6019A0(a1, "function arguments expected"); v7 = sub_5F9640(v5, *(_DWORD *)(v4 + 24)); a2 = -1; v17 = -1; v18 = -1; v15 = 4; v16 = v7; sub_602EE0(v5, -1, v4); LABEL_8: v5 = *(_DWORD *)(a3 + 8); if ( v15 == 12 || v15 == 13 ) { LABEL_21: v8 = v14; v9 = a2; goto LABEL_22; } v8 = v14; if ( v15 ) sub_5F9E60(v14, (int)&v15); v9 = *(_BYTE *)(v14 + 48) - v5 - 1; LABEL_22: v12 = sub_5F9370(v8, 29, v5, v9 + 1, 2); *(_DWORD *)(a3 + 16) = a2; *(_DWORD *)(a3 + 20) = a2; *(_DWORD *)a3 = 12; *(_DWORD *)(a3 + 8) = v12; result = sub_5F99B0(v8, a4); *(_BYTE *)(v8 + 48) = v5 + 1; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00606FF0) -------------------------------------------------------- int __usercall sub_606FF0(int a1, int a2) { int v2; // edi@1 int result; // eax@2 int v4; // eax@7 int v5; // eax@9 v2 = a1; switch ( *(_DWORD *)(a2 + 16) ) { case 0x11F: *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 16) = -1; *(_DWORD *)(a1 + 20) = -1; *(_DWORD *)a1 = 5; *(double *)(a1 + 8) = *(double *)(a2 + 24); return sub_602EE0(a2, a1, a2); case 0x121: sub_6055B0(*(_DWORD *)(a2 + 24), a2, a1); return sub_602EE0(a2, v2, a2); case 0x10E: *(_DWORD *)a1 = 1; *(_DWORD *)(a1 + 8) = 0; goto LABEL_10; case 0x114: *(_DWORD *)a1 = 2; *(_DWORD *)(a1 + 8) = 0; goto LABEL_10; case 0x107: *(_DWORD *)a1 = 3; *(_DWORD *)(a1 + 8) = 0; goto LABEL_10; case 0x118: v4 = *(_DWORD *)(a2 + 48); if ( !*(_BYTE *)(*(_DWORD *)v4 + 77) ) v4 = loc_6019A0(a2, "cannot use '...' outside a vararg function"); v5 = sub_5F9370(v4, 38, 0, 1, 0); *(_DWORD *)v2 = 13; *(_DWORD *)(v2 + 8) = v5; LABEL_10: *(_DWORD *)(v2 + 20) = -1; *(_DWORD *)(v2 + 16) = -1; result = sub_602EE0(a2, v2, a2); break; case 0x7B: JUMPOUT(&loc_6066D0); return result; case 0x109: sub_602EE0(a2, a1, a2); result = loc_606970(0, *(_DWORD *)(a2 + 4)); break; default: result = loc_606D30(a2); break; } return result; } //----- (006071C0) -------------------------------------------------------- signed int __usercall sub_6071C0(int a1) { signed int result; // eax@2 switch ( a1 ) { 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; } //----- (00607370) -------------------------------------------------------- int __cdecl sub_607370(int a1, unsigned int a2, signed int a3) { int v3; // eax@1 signed int v4; // ecx@1 int v5; // edi@1 int v6; // eax@3 int v7; // esi@9 int v8; // esi@11 int v9; // ST40_4@15 int v10; // edi@15 int v12; // [sp+10h] [bp-20h]@6 char v13; // [sp+14h] [bp-1Ch]@15 unsigned int v14; // [sp+2Ch] [bp-4h]@1 int v15; // [sp+30h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v3 = *(_DWORD *)(a1 + 52); v4 = 1; ++*(_WORD *)(v3 + 38); v5 = a2; if ( *(_WORD *)(v3 + 38) > 0xC8u ) loc_605510(200, "C levels"); v6 = *(_DWORD *)(a1 + 16); if ( v6 == 35 ) { v12 = 2; goto LABEL_9; } if ( v6 == 45 ) { v12 = 0; goto LABEL_9; } if ( v6 == 271 ) { v12 = v4; LABEL_9: v7 = *(_DWORD *)(a1 + 4); sub_602EE0(a1, a2, a1); sub_607370(a1, a2, 8); sub_5FA7A0(*(_DWORD *)(a1 + 48), v12, a2, v7); goto LABEL_11; } sub_606FF0(a2, a1); LABEL_11: v8 = sub_6071C0(*(_DWORD *)(a1 + 16)); if ( v8 != 15 ) { while ( (unsigned __int8)byte_6FF624[2 * v8] > a3 ) { v9 = *(_DWORD *)(a1 + 4); sub_602EE0(a1, v5, a1); sub_5FA850(*(_DWORD *)(a1 + 48), v8, v5); v10 = sub_607370(a1, &v13, (unsigned __int8)byte_6FF625[2 * v8]); sub_5FA900(*(_DWORD *)(a1 + 48), v8, a2, (unsigned int)&v13, v9); v8 = v10; if ( v10 == 15 ) break; v5 = a2; } } --*(_WORD *)(*(_DWORD *)(a1 + 52) + 38); return v8; } // 607370: using guessed type _DWORD __cdecl sub_607370(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (006074A0) -------------------------------------------------------- int __usercall sub_6074A0(int a1, int a2) { int v2; // esi@1 int v4; // [sp+4h] [bp-Ch]@1 __int16 v5; // [sp+8h] [bp-8h]@1 __int16 v6; // [sp+Ah] [bp-6h]@1 char v7; // [sp+Ch] [bp-4h]@1 char v8; // [sp+Dh] [bp-3h]@1 char v9; // [sp+Eh] [bp-2h]@1 v9 = 0; v2 = *(_DWORD *)(a1 + 48); v7 = *(_BYTE *)(v2 + 46); v5 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 12) + 64) + 28); v6 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 12) + 64) + 16); v8 = 0; v4 = *(_DWORD *)(v2 + 16); *(_DWORD *)(v2 + 16) = &v4; sub_608BA0(a2, a1); return loc_606090(); } //----- (00607500) -------------------------------------------------------- int __usercall sub_607500(int result, int a2, int a3) { int v3; // edi@1 int v4; // ecx@1 signed int v5; // edx@1 v3 = *(_DWORD *)(a2 + 48); v4 = *(_BYTE *)(v3 + 48); v5 = 0; if ( result ) { do { if ( *(_DWORD *)(result + 8) == 9 ) { if ( *(_BYTE *)(result + 19) == *(_DWORD *)a3 && *(_BYTE *)(result + 18) == *(_DWORD *)(a3 + 8) ) { v5 = 1; *(_BYTE *)(result + 19) = 7; *(_BYTE *)(result + 18) = v4; } if ( *(_DWORD *)a3 == 7 && *(_WORD *)(result + 16) == *(_DWORD *)(a3 + 8) ) { v5 = 1; *(_WORD *)(result + 16) = v4; } } result = *(_DWORD *)result; } while ( result ); if ( v5 ) { sub_5F9370(v3, *(_DWORD *)a3 != 7 ? 5 : 0, v4, *(_DWORD *)(a3 + 8), 0); result = sub_5F9470(v3, 1); } } return result; } //----- (006076F0) -------------------------------------------------------- signed int __usercall sub_6076F0(int a1, int a2) { int v2; // ebx@1 int v3; // edi@1 int v4; // esi@4 int v5; // eax@4 int v6; // eax@6 v2 = a1; v3 = *(_DWORD *)(a1 + 4); if ( *(_DWORD *)(a1 + 16) == 266 ) { sub_602EE0(a1, v3, a1); if ( *(_DWORD *)(v2 + 16) != 288 ) loc_6054E0(); v4 = *(_DWORD *)(v2 + 24); sub_602EE0(v2, v3, v2); v5 = v4; } else { sub_602EE0(a1, v3, a1); v5 = sub_609600(*(_DWORD *)(v2 + 52), "break"); } v6 = sub_605CE0(v2, *(_DWORD *)(v2 + 64) + 12, v5, v3, a2); return sub_605B80(v2, v6); } //----- (00607770) -------------------------------------------------------- int __usercall sub_607770(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // edi@1 int v6; // eax@2 int v7; // eax@4 int v8; // eax@8 int v9; // ST08_4@8 int v10; // esi@9 int v11; // eax@10 int v13; // [sp+Ch] [bp-8h]@1 int i; // [sp+10h] [bp-4h]@2 v3 = a1; v13 = *(_DWORD *)(a1 + 48); v4 = *(_WORD *)(*(_DWORD *)(v13 + 16) + 4); v5 = *(_DWORD *)(a1 + 64); if ( v4 < *(_DWORD *)(v5 + 28) ) { v6 = 16 * v4; for ( i = 16 * v4; ; v6 = i ) { LOBYTE(v7) = sub_6092C0(a2, *(_DWORD *)(*(_DWORD *)(v5 + 24) + v6)); if ( v7 ) break; i += 16; ++v4; if ( v4 >= *(_DWORD *)(v5 + 28) ) goto LABEL_6; } goto LABEL_8; } LABEL_6: if ( *(_DWORD *)(v3 + 16) != 285 ) { loc_6054E0(); LABEL_8: v8 = sub_604B20(*(_DWORD *)(*(_DWORD *)(v13 + 12) + 52), (int)"label '%s' already defined on line %d", a2 + 16); v9 = *(_DWORD *)(v13 + 12); *(_DWORD *)(v9 + 16) = 0; loc_6019A0(v9, v8); } sub_602EE0(v3, v5, v3); v10 = sub_605CE0(v3, v5 + 24, a2, a3, *(_DWORD *)(v13 + 20)); while ( 1 ) { v11 = *(_DWORD *)(v3 + 16); if ( v11 != 59 ) { if ( v11 != 285 ) break; } sub_608900(v5, v3); } switch ( v11 ) { case 260: case 261: case 262: case 286: *(_BYTE *)(*(_DWORD *)(v5 + 24) + 16 * v10 + 12) = *(_BYTE *)(*(_DWORD *)(v13 + 16) + 8); break; default: return loc_605D50(v3, *(_DWORD *)(v5 + 24) + 16 * v10); } return loc_605D50(v3, *(_DWORD *)(v5 + 24) + 16 * v10); } //----- (00607BC0) -------------------------------------------------------- int __usercall sub_607BC0(int a1, int a2, int a3, int a4, int a5) { int v5; // ebx@1 int v6; // edi@1 signed int v7; // ecx@1 int v8; // eax@2 int v9; // eax@6 int v10; // edx@8 int v11; // esi@8 int v12; // ebx@8 int v13; // eax@9 int v15; // [sp+Ch] [bp-1Ch]@8 __int16 v16; // [sp+10h] [bp-18h]@8 __int16 v17; // [sp+12h] [bp-16h]@8 char v18; // [sp+14h] [bp-14h]@8 char v19; // [sp+15h] [bp-13h]@8 char v20; // [sp+16h] [bp-12h]@8 int v21; // [sp+18h] [bp-10h]@8 __int16 v22; // [sp+1Ch] [bp-Ch]@8 __int16 v23; // [sp+1Eh] [bp-Ah]@8 char v24; // [sp+20h] [bp-8h]@8 char v25; // [sp+21h] [bp-7h]@8 char v26; // [sp+22h] [bp-6h]@8 int v27; // [sp+24h] [bp-4h]@8 v5 = a1; v6 = *(_DWORD *)(a1 + 48); v7 = 3; *(_BYTE *)(v6 + 46) += 3; do { v8 = *(_BYTE *)(v6 + 46) - v7--; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v6 + 24) + 12 * *(_WORD *)(**(_DWORD **)(*(_DWORD *)(v6 + 12) + 64) + 2 * (*(_DWORD *)(v6 + 40) + v8)) + 4) = *(_DWORD *)(v6 + 20); } while ( v7 ); if ( *(_DWORD *)(v5 + 16) != 259 ) loc_6054E0(); sub_602EE0(v5, v6, v5); if ( a5 ) v9 = sub_5F93A0(v6, 33, a2, 131070); else v9 = sub_5F9B30(v6); v26 = 0; v24 = *(_BYTE *)(v6 + 46); v10 = *(_DWORD *)(v6 + 12); v27 = v9; v22 = *(_WORD *)(*(_DWORD *)(v10 + 64) + 28); v23 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 12) + 64) + 16); v25 = 0; v21 = *(_DWORD *)(v6 + 16); *(_DWORD *)(v6 + 16) = &v21; sub_605700(v5, a4); sub_5F9470(v6, a4); v11 = *(_DWORD *)(v5 + 48); v20 = 0; v18 = *(_BYTE *)(v11 + 46); v16 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v11 + 12) + 64) + 28); v17 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v11 + 12) + 64) + 16); v19 = 0; v15 = *(_DWORD *)(v11 + 16); *(_DWORD *)(v11 + 16) = &v15; sub_608BA0(v6, v5); loc_606090(); loc_606090(); v12 = v27; sub_5F9BA0(v6, v27); if ( a5 ) { v13 = sub_5F93A0(v6, 32, a2, 131070); } else { sub_5F9370(v6, 34, a2, 0, a4); sub_5F99B0(v6, a3); v13 = sub_5F93A0(v6, 35, a2 + 2, 131070); } sub_5FAAB0(v6, v13, v12 + 1); return sub_5F99B0(v6, a3); } //----- (00607D50) -------------------------------------------------------- int __fastcall sub_607D50(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // edi@1 int v6; // eax@1 int v7; // eax@1 int v8; // eax@1 signed int v9; // eax@7 int v11; // [sp+14h] [bp-20h]@1 char v12; // [sp+18h] [bp-1Ch]@3 unsigned int v13; // [sp+30h] [bp-4h]@1 int v14; // [sp+34h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = a1; v4 = *(_DWORD *)(a1 + 48); v5 = a2; v11 = *(_BYTE *)(v4 + 48); v6 = sub_6019C0(a1, "(for index)", 0xBu); sub_605680(v6, v3); v7 = sub_6019C0(v3, "(for limit)", 0xBu); sub_605680(v7, v3); v8 = sub_6019C0(v3, "(for step)", 0xAu); sub_605680(v8, v3); sub_605680(v5, v3); if ( *(_DWORD *)(v3 + 16) != 61 ) { v4 = v3; loc_6054E0(); } sub_602EE0(v3, v5, v3); sub_607370(v3, &v12, 0); sub_5F9E60(*(_DWORD *)(v3 + 48), (int)&v12); if ( *(_DWORD *)(v3 + 16) != 44 ) { v4 = v3; loc_6054E0(); } sub_602EE0(v3, 44, v3); sub_607370(v3, &v12, 0); sub_5F9E60(*(_DWORD *)(v3 + 48), (int)&v12); if ( *(_DWORD *)(v3 + 16) == 44 ) { sub_602EE0(v3, 44, v3); sub_607370(v3, &v12, 0); sub_5F9E60(*(_DWORD *)(v3 + 48), (int)&v12); } else { v9 = sub_5F9670(v4, 1.0); sub_5F93D0(v4, *(_BYTE *)(v4 + 48), v9); sub_5F9470(v4, 1); } return sub_607BC0(v3, v11, a3, 1, 1); } // 607370: using guessed type _DWORD __cdecl sub_607370(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00607E90) -------------------------------------------------------- int __fastcall sub_607E90(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 int v5; // ebx@1 int v6; // eax@1 int v7; // eax@1 int v8; // ST40_4@4 int v9; // eax@11 int v10; // ebx@11 int v11; // edi@11 int v12; // ST40_4@16 int v13; // edi@17 int v15; // [sp+Ch] [bp-30h]@11 int v16; // [sp+10h] [bp-2Ch]@1 int v17; // [sp+14h] [bp-28h]@1 signed int v18; // [sp+18h] [bp-24h]@1 __int16 v19; // [sp+1Ch] [bp-20h]@4 int v20; // [sp+20h] [bp-1Ch]@11 unsigned int v21; // [sp+38h] [bp-4h]@1 int v22; // [sp+3Ch] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v2 = a1; v17 = *(_DWORD *)(a1 + 48); v3 = a2; v18 = 4; v16 = *(_BYTE *)(v17 + 48); v4 = sub_6019C0(a1, "(for generator)", 0xFu); v5 = v2; sub_605680(v4, v2); v6 = sub_6019C0(v2, "(for state)", 0xBu); sub_605680(v6, v2); v7 = sub_6019C0(v2, "(for control)", 0xDu); sub_605680(v7, v2); sub_605680(v3, v2); while ( *(_DWORD *)(v2 + 16) == 44 ) { sub_602EE0(v5, v3, v2); if ( *(_DWORD *)(v2 + 16) != 288 ) goto LABEL_10; v8 = *(_DWORD *)(v2 + 24); sub_602EE0(v5, v3, v2); v3 = *(_DWORD *)(v2 + 48); v5 = *(_DWORD *)(v2 + 64); v19 = sub_6055D0(v2, v8); if ( *(_DWORD *)(v5 + 4) - *(_DWORD *)(v3 + 40) + 1 > 200 ) { v2 = v3; loc_605510(200, "local variables"); break; } if ( *(_DWORD *)(v5 + 4) + 2 > *(_DWORD *)(v5 + 8) ) *(_DWORD *)v5 = sub_6037B0( *(_DWORD *)(v2 + 52), *(_DWORD *)v5, (signed int *)(v5 + 8), 2u, 2147483645, (int)"local variables"); *(_WORD *)(*(_DWORD *)v5 + 2 * (*(_DWORD *)(v5 + 4))++) = v19; ++v18; } if ( *(_DWORD *)(v2 + 16) == 268 ) goto LABEL_11; LABEL_10: loc_6054E0(); LABEL_11: sub_602EE0(v5, v3, v2); v15 = *(_DWORD *)(v2 + 4); v9 = sub_606AD0((int)&v20, v2); v10 = *(_DWORD *)(v2 + 48); v11 = 3 - v9; if ( v20 == 12 || v20 == 13 ) { v13 = v11 + 1; if ( v13 < 0 ) v13 = 0; sub_5F9710(v10, (int)&v20, v13); if ( v13 > 1 ) sub_5F9470(v10, v13 - 1); } else { if ( v20 ) sub_5F9E60(v10, (int)&v20); if ( v11 > 0 ) { v12 = *(_BYTE *)(v10 + 48); sub_5F9470(v10, v11); sub_5F9A80(v10, v12, v11); } } sub_5F9430(v17, 3); return sub_607BC0(v2, v16, v15, v18 - 3, 0); } // 86FEB8: using guessed type int __security_cookie; //----- (00608190) -------------------------------------------------------- void __usercall sub_608190(int a1, int a2, int *a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@3 __int16 v6; // cx@5 int v7; // ebx@5 int v8; // eax@7 int v9; // esi@13 int v10; // eax@15 int v11; // [sp+10h] [bp-28h]@5 __int16 v12; // [sp+14h] [bp-24h]@5 __int16 v13; // [sp+16h] [bp-22h]@5 char v14; // [sp+18h] [bp-20h]@5 char v15; // [sp+19h] [bp-1Fh]@5 char v16; // [sp+1Ah] [bp-1Eh]@5 char v17; // [sp+1Ch] [bp-1Ch]@1 int v18; // [sp+2Ch] [bp-Ch]@6 int v19; // [sp+30h] [bp-8h]@5 unsigned int v20; // [sp+34h] [bp-4h]@1 int v21; // [sp+38h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v3 = a1; v4 = *(_DWORD *)(a1 + 48); sub_602EE0(a2, v4, a1); sub_607370(v3, &v17, 0); if ( *(_DWORD *)(v3 + 16) != 275 ) loc_6054E0(); sub_602EE0(0, v4, v3); v5 = *(_DWORD *)(v3 + 16); if ( v5 == 266 || v5 == 258 ) { sub_5FA470(*(_DWORD *)(v3 + 48), (int)&v17); v16 = 0; v14 = *(_BYTE *)(v4 + 46); v12 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 64) + 28); v13 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 64) + 16); v15 = 0; v11 = *(_DWORD *)(v4 + 16); *(_DWORD *)(v4 + 16) = &v11; sub_6076F0(v3, v18); while ( 1 ) { v8 = *(_DWORD *)(v3 + 16); if ( v8 != 59 ) { if ( v8 != 285 ) break; } sub_608900(v4, v3); } switch ( v8 ) { case 260: case 261: case 262: case 286: loc_606090(); break; default: v7 = sub_5F9B30(v4); goto LABEL_13; } } else { sub_5FA3D0(*(_DWORD *)(v3 + 48), (int)&v17); v16 = 0; v14 = *(_BYTE *)(v4 + 46); v12 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 64) + 28); v6 = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 64) + 16); v15 = 0; v13 = v6; v11 = *(_DWORD *)(v4 + 16); *(_DWORD *)(v4 + 16) = &v11; v7 = v19; LABEL_13: sub_608BA0(v4, v3); loc_606090(); v9 = *(_DWORD *)(v3 + 16); if ( v9 == 260 || v9 == 261 ) { v10 = sub_5F9B30(v4); sub_5F9240(v4, a3, v10); } sub_5F9BA0(v4, v7); } } // 607370: using guessed type _DWORD __cdecl sub_607370(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00608470) -------------------------------------------------------- int __thiscall sub_608470(int this) { int v1; // ebx@1 int v2; // esi@1 int v3; // edi@3 int v4; // eax@3 int result; // eax@3 int v6; // [sp+14h] [bp-14h]@3 unsigned int v7; // [sp+24h] [bp-4h]@1 int v8; // [sp+28h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 48); if ( *(_DWORD *)(this + 16) != 288 ) { v2 = this; loc_6054E0(); } v3 = *(_DWORD *)(v1 + 24); sub_602EE0(v1, v3, v1); sub_605680(v3, v1); v4 = *(_DWORD *)(v1 + 48); ++*(_BYTE *)(v4 + 46); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v4 + 24) + 12 * *(_WORD *)(**(_DWORD **)(*(_DWORD *)(v4 + 12) + 64) + 2 * (*(_BYTE *)(v4 + 46) + *(_DWORD *)(v4 + 40)) - 2) + 4) = *(_DWORD *)(v4 + 20); loc_606970(0, *(_DWORD *)(v1 + 4)); result = *(_DWORD *)(*(_DWORD *)v2 + 24); *(_DWORD *)(result + 12 * *(_WORD *)(**(_DWORD **)(*(_DWORD *)(v2 + 12) + 64) + 2 * (v6 + *(_DWORD *)(v2 + 40))) + 4) = *(_DWORD *)(v2 + 20); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00608520) -------------------------------------------------------- int __usercall sub_608520(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ST28_4@3 int v5; // eax@11 int v7; // [sp-4h] [bp-30h]@1 int v8; // [sp+8h] [bp-24h]@1 __int16 v9; // [sp+Ch] [bp-20h]@3 int v10; // [sp+10h] [bp-1Ch]@11 unsigned int v11; // [sp+28h] [bp-4h]@1 int v12; // [sp+2Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v3 = a1; v8 = 0; v7 = a2; while ( *(_DWORD *)(v3 + 16) == 288 ) { v4 = *(_DWORD *)(v3 + 24); sub_602EE0(a2, a3, v3); a2 = *(_DWORD *)(v3 + 48); a3 = *(_DWORD *)(v3 + 64); v9 = sub_6055D0(v3, v4); if ( *(_DWORD *)(a3 + 4) - *(_DWORD *)(a2 + 40) + 1 > 200 ) goto LABEL_9; if ( *(_DWORD *)(a3 + 4) + 2 > *(_DWORD *)(a3 + 8) ) *(_DWORD *)a3 = sub_6037B0( *(_DWORD *)(v3 + 52), *(_DWORD *)a3, (signed int *)(a3 + 8), 2u, 2147483645, (int)"local variables"); *(_WORD *)(*(_DWORD *)a3 + 2 * (*(_DWORD *)(a3 + 4))++) = v9; ++v8; if ( *(_DWORD *)(v3 + 16) != 44 ) goto LABEL_10; sub_602EE0(a2, a3, v3); } loc_6054E0(); LABEL_9: v3 = a2; loc_605510(200, "local variables"); LABEL_10: if ( *(_DWORD *)(v3 + 16) == 61 ) { sub_602EE0(v7, a3, v3); v5 = sub_606AD0((int)&v10, v3); } else { v5 = 0; v10 = 0; } sub_605A40(v3, v8, (int)&v10, v5); return sub_605700(v3, v8); } // 86FEB8: using guessed type int __security_cookie; //----- (00608700) -------------------------------------------------------- int __usercall sub_608700(int a1, int a2, int a3) { int v3; // eax@1 int v5; // [sp+0h] [bp-3Ch]@0 char v6; // [sp+8h] [bp-34h]@1 char v7; // [sp+20h] [bp-1Ch]@1 unsigned int v8; // [sp+38h] [bp-4h]@1 int v9; // [sp+3Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; sub_602EE0(a1, a2, v5); v3 = loc_608640(a3, &v6); loc_606970(v3, a1); sub_5FA110(*(_DWORD *)(a3 + 48), (int)&v6, (int)&v7); return sub_5F99B0(*(_DWORD *)(a3 + 48), a1); } // 86FEB8: using guessed type int __security_cookie; //----- (00608760) -------------------------------------------------------- int __usercall sub_608760(int a1) { int v1; // ebx@1 int v2; // eax@1 int result; // eax@5 int v4; // [sp+8h] [bp-24h]@6 int v5; // [sp+10h] [bp-1Ch]@3 int v6; // [sp+18h] [bp-14h]@5 unsigned int v7; // [sp+28h] [bp-4h]@1 int v8; // [sp+2Ch] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v1 = *(_DWORD *)(a1 + 48); loc_606D30(a1); v2 = *(_DWORD *)(a1 + 16); if ( v2 == 61 || v2 == 44 ) { v4 = 0; result = loc_607580(a1, &v4, 1); } else { if ( v5 != 12 ) loc_6019A0(a1, "syntax error"); result = *(_DWORD *)(*(_DWORD *)v1 + 12) + 4 * v6; *(_DWORD *)result = *(_DWORD *)result & 0xFF807FFF | 0x4000; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (006087F0) -------------------------------------------------------- int __thiscall sub_6087F0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ebx@1 signed int v4; // edi@3 int v5; // eax@6 int result; // eax@13 int v7; // [sp+Ch] [bp-1Ch]@3 int v8; // [sp+14h] [bp-14h]@10 unsigned int v9; // [sp+24h] [bp-4h]@1 int v10; // [sp+28h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 16); v3 = *(_DWORD *)(this + 48); switch ( v2 ) { default: if ( v2 == 59 ) goto LABEL_12; v4 = sub_606AD0((int)&v7, this); if ( v7 == 12 || v7 == 13 ) { sub_5F9710(v3, (int)&v7, -1); if ( v7 == 12 && v4 == 1 ) *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v3 + 12) + 4 * v8) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v3 + 12) + 4 * v8) & 0xFFFFFFDE | 0x1E; v5 = *(_BYTE *)(v3 + 46); v4 = -1; } else { if ( v4 == 1 ) { v5 = sub_5F9ED0(v3, (int)&v7); } else { sub_5F9E60(v3, (int)&v7); v5 = *(_BYTE *)(v3 + 46); } } break; case 260: case 261: case 262: case 277: case 286: LABEL_12: v4 = 0; v5 = 0; break; } result = sub_5F9B70(v3, v5, v4); if ( *(_DWORD *)(v1 + 16) == 59 ) result = sub_602EE0(v3, v4, v1); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00608900) -------------------------------------------------------- signed int __usercall sub_608900(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ebx@1 char v5; // al@10 int v6; // eax@10 int v7; // eax@17 int v8; // eax@19 signed int result; // eax@21 v2 = a2; v3 = *(_DWORD *)(a2 + 52); v4 = *(_DWORD *)(a2 + 4); ++*(_WORD *)(v3 + 38); if ( *(_WORD *)(v3 + 38) > 0xC8u ) { v2 = *(_DWORD *)(a2 + 48); loc_605510(200, "C levels"); } switch ( *(_DWORD *)(v2 + 16) ) { case 0x3B: goto LABEL_4; case 0x10B: loc_608360(); break; case 0x116: loc_6078C0(v4); break; case 0x103: sub_602EE0(v4, a1, v2); sub_6074A0(v2, a1); if ( *(_DWORD *)(v2 + 16) == 262 ) { LABEL_4: sub_602EE0(v4, a1, v2); } else { if ( v4 == *(_DWORD *)(v2 + 4) ) loc_6054E0(); sub_601890(v2, 259); v5 = sub_601890(v2, 262); v6 = sub_604B20(*(_DWORD *)(v2 + 52), (int)"%s expected (to close %s at line %d)", v5); loc_6019A0(v2, v6); LABEL_11: loc_608080(v4); } break; case 0x108: goto LABEL_11; case 0x111: loc_607A50(v4); break; case 0x109: sub_608700(v4, a1, v2); break; case 0x10D: sub_602EE0(v4, a1, v2); if ( sub_605560(v2, v4, a1, 265) ) sub_608470(v2); else sub_608520(v2, v4, a1); break; case 0x11D: sub_602EE0(v4, a1, v2); v7 = sub_605580(v2, v4); sub_607770(v2, v7, v4); break; case 0x112: sub_602EE0(v4, a1, v2); sub_6087F0(v2); break; case 0x102: case 0x10A: v8 = sub_5F9B30(*(_DWORD *)(v2 + 48)); sub_6076F0(v2, v8); break; default: sub_608760(v2); break; } *(_BYTE *)(*(_DWORD *)(v2 + 48) + 48) = *(_BYTE *)(*(_DWORD *)(v2 + 48) + 46); result = 65535; --*(_WORD *)(*(_DWORD *)(v2 + 52) + 38); return result; } //----- (00608BA0) -------------------------------------------------------- signed int __usercall sub_608BA0(int a1, int a2) { signed int result; // eax@1 result = sub_606470(a2, 1); if ( !result ) { while ( *(_DWORD *)(a2 + 16) != 274 ) { sub_608900(a1, a2); result = sub_606470(a2, 1); if ( result ) return result; } result = sub_608900(a1, a2); } return result; } //----- (00608BF0) -------------------------------------------------------- int __usercall sub_608BF0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ecx@1 int v5; // ST08_4@1 int v7; // [sp+4h] [bp-24h]@1 int v8; // [sp+Ch] [bp-1Ch]@1 int v9; // [sp+14h] [bp-14h]@1 int v10; // [sp+18h] [bp-10h]@1 char v11; // [sp+1Ch] [bp-Ch]@1 v3 = a1; sub_6061D0(a3, a1, (int)&v11); v4 = *(_DWORD *)v3; v9 = -1; v10 = -1; *(_BYTE *)(v4 + 77) = 1; v5 = *(_DWORD *)(a3 + 72); v7 = 7; v8 = 0; sub_6057E0(v3, v5, (int)&v7); sub_602EE0(a2, a3, a3); sub_608BA0(a3, a3); if ( *(_DWORD *)(a3 + 16) != 286 ) loc_6054E0(); return sub_606290(a3); } //----- (00608C60) -------------------------------------------------------- int __cdecl sub_608C60(int a1, int a2, int a3, int a4, const void *a5, int a6) { int v6; // esi@1 int v7; // ebx@1 int v8; // eax@1 int v9; // eax@3 int v10; // ecx@3 char v12; // [sp+Ch] [bp-84h]@3 int v13; // [sp+48h] [bp-48h]@3 int v14; // [sp+4Ch] [bp-44h]@3 int v15; // [sp+5Ch] [bp-34h]@3 v6 = a1; v7 = sub_5FDF10(a1, 1); v8 = *(_DWORD *)(a1 + 8); *(_DWORD *)v8 = v7; *(_DWORD *)(v8 + 4) = 2146936134; *(_DWORD *)(v6 + 8) += 8; if ( ((*(_DWORD *)(v6 + 24) - *(_DWORD *)(v6 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(a1, 0); v9 = sub_5FE0E0(a1); *(_DWORD *)(v7 + 12) = v9; v15 = v9; *(_DWORD *)(v9 + 36) = sub_609600(a1, a5); v10 = v15; v14 = a4; *(_DWORD *)(a4 + 28) = 0; *(_DWORD *)(a4 + 16) = 0; *(_DWORD *)(a4 + 4) = 0; v13 = a3; sub_601AD0(a1, (int)&v12, a2, *(_DWORD *)(v10 + 36), a6); sub_608BF0((int)&v15, v7, (int)&v12); return v7; } //----- (00608D10) -------------------------------------------------------- int __cdecl sub_608D10(int a1, int a2) { int result; // eax@1 result = a1; *(_DWORD *)(result + 8) += *(_DWORD *)(a1 + 12) - a2; *(_DWORD *)(a1 + 12) = a2; return result; } //----- (00608D30) -------------------------------------------------------- int __cdecl sub_608D30(int a1) { int result; // eax@1 result = sub_603740(a1, 0, 0, 40); *(_DWORD *)(*(_DWORD *)(a1 + 16) + 12) = result; *(_DWORD *)(result + 8) = *(_DWORD *)(a1 + 16); *(_DWORD *)(result + 12) = 0; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00608D60) -------------------------------------------------------- int __cdecl sub_608D60(int a1) { int v1; // eax@1 int v2; // esi@1 int result; // eax@1 v1 = *(_DWORD *)(a1 + 16); v2 = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 12) = 0; for ( result = v2; v2; result = v2 ) { v2 = *(_DWORD *)(v2 + 12); sub_603740(a1, result, 40, 0); } return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00608DA0) -------------------------------------------------------- int __usercall sub_608DA0(int a1, int a2) { signed int v2; // eax@1 int v3; // eax@3 int v4; // edx@3 int result; // eax@3 *(_DWORD *)(a2 + 28) = sub_603740(a1, 0, 0, 320); *(_DWORD *)(a2 + 32) = 40; v2 = 0; do { *(_DWORD *)(v2 + *(_DWORD *)(a2 + 28) + 4) = 2146936064; v2 += 8; } while ( v2 < 320 ); v3 = *(_DWORD *)(a2 + 28); v4 = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 8) = v3; *(_DWORD *)(a2 + 24) = v3 + 8 * v4 - 40; result = a2 + 72; *(_DWORD *)(a2 + 80) = 0; *(_DWORD *)(a2 + 84) = 0; *(_BYTE *)(a2 + 90) = 0; *(_DWORD *)(a2 + 72) = *(_DWORD *)(a2 + 8); *(_DWORD *)(*(_DWORD *)(a2 + 8) + 4) = 2146936064; *(_DWORD *)(a2 + 8) += 8; *(_DWORD *)(a2 + 76) = *(_DWORD *)(a2 + 8) + 160; *(_DWORD *)(a2 + 16) = a2 + 72; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00608E20) -------------------------------------------------------- int __usercall sub_608E20(int a1, int a2) { int v2; // eax@1 int v3; // edi@1 int v5; // [sp+0h] [bp-10h]@0 int v6; // [sp+8h] [bp-8h]@1 int v7; // [sp+Ch] [bp-4h]@1 v2 = sub_60BE10(v5); v3 = v2; *(_DWORD *)(a1 + 40) = v2; *(_DWORD *)(a1 + 44) = 2146936133; sub_60C250(a2, v2, 2, 0); v6 = a2; v7 = 2146936136; sub_60C6F0(a2, v3, 1, (int)&v6); v6 = sub_60BE10(a2); v7 = 2146936133; return sub_60C6F0(a2, v3, 2, (int)&v6); } // 60C250: using guessed type _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00608E80) -------------------------------------------------------- int __cdecl sub_608E80(int a1) { int v1; // ebx@1 int result; // eax@1 v1 = *(_DWORD *)(a1 + 12); sub_608DA0(a1, a1); sub_608E20(v1, a1); sub_609340(a1, 32); sub_60CFC0(a1); sub_601850(a1); result = sub_609580(a1, "not enough memory", 0x11u); *(_DWORD *)(v1 + 164) = result; *(_BYTE *)(result + 5) |= 0x20u; *(_BYTE *)(v1 + 55) = 1; return result; } //----- (00608ED0) -------------------------------------------------------- int __usercall sub_608ED0(int a1) { int v1; // edi@1 v1 = *(_DWORD *)(a1 + 12); sub_5FE040(a1, *(_DWORD *)(a1 + 28)); sub_5FF4A0(a1); sub_603740(a1, *(_DWORD *)(*(_DWORD *)(a1 + 12) + 24), 4 * *(_DWORD *)(*(_DWORD *)(a1 + 12) + 32), 0); *(_DWORD *)(v1 + 128) = sub_603740(a1, *(_DWORD *)(v1 + 128), *(_DWORD *)(v1 + 136), 0); *(_DWORD *)(v1 + 136) = 0; if ( *(_DWORD *)(a1 + 28) ) { *(_DWORD *)(a1 + 16) = a1 + 72; sub_608D60(a1); sub_603740(a1, *(_DWORD *)(a1 + 28), 8 * *(_DWORD *)(a1 + 32), 0); } return (*(int (__cdecl **)(_DWORD, int, signed int, _DWORD))v1)(*(_DWORD *)(v1 + 4), a1, 384, 0); } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00608F70) -------------------------------------------------------- int __cdecl sub_608F70(signed int a1) { int v1; // esi@3 int v2; // eax@3 int v3; // ecx@3 int v4; // edx@3 if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) sub_600600(a1); v1 = sub_5FE250(a1, 8, 112, 0, 0); v2 = *(_DWORD *)(a1 + 8); *(_DWORD *)v2 = v1; *(_DWORD *)(v2 + 4) = 2146936136; v3 = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 8) += 8; *(_DWORD *)(v1 + 12) = v3; *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 44) = 0; *(_DWORD *)(v1 + 38) = &unk_1000000; *(_DWORD *)(v1 + 48) = 0; *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 56) = 0; *(_WORD *)(v1 + 36) = 1; *(_BYTE *)(v1 + 6) = 0; *(_DWORD *)(v1 + 68) = 0; *(_BYTE *)(v1 + 40) = *(_BYTE *)(a1 + 40); v4 = *(_DWORD *)(a1 + 44); *(_DWORD *)(v1 + 44) = v4; *(_DWORD *)(v1 + 52) = *(_DWORD *)(a1 + 52); *(_DWORD *)(v1 + 48) = v4; sub_608DA0(a1, v1); return v1; } //----- (00609010) -------------------------------------------------------- int __cdecl sub_609010(int a1, int a2) { sub_5FE040(a2, *(_DWORD *)(a2 + 28)); if ( *(_DWORD *)(a2 + 28) ) { *(_DWORD *)(a2 + 16) = a2 + 72; sub_608D60(a2); sub_603740(a2, *(_DWORD *)(a2 + 28), 8 * *(_DWORD *)(a2 + 32), 0); } return sub_603740(a1, a2, 112, 0); } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00609070) -------------------------------------------------------- int __cdecl sub_609070(int (__cdecl *a1)(_DWORD, _DWORD, _DWORD, _DWORD), int a2) { int v2; // eax@1 int v3; // esi@1 int v4; // eax@2 int v6; // [sp+10h] [bp-18h]@1 int v7; // [sp+14h] [bp-14h]@2 int *v8; // [sp+18h] [bp-10h]@2 int v9; // [sp+1Ch] [bp-Ch]@2 int v10; // [sp+20h] [bp-8h]@2 unsigned int v11; // [sp+24h] [bp-4h]@1 int v12; // [sp+28h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v6 = a2; v2 = a1(a2, 0, 8, 384); v3 = v2; if ( !v2 ) return 0; *(_DWORD *)v2 = 0; *(_BYTE *)(v2 + 4) = 8; *(_BYTE *)(v2 + 164) = 33; *(_BYTE *)(v2 + 5) = 1; *(_BYTE *)(v2 + 166) = 0; *(_WORD *)(v2 + 36) = 1; v4 = v6; *(_DWORD *)(v3 + 12) = v3 + 112; *(_DWORD *)(v3 + 28) = 0; *(_DWORD *)(v3 + 16) = 0; *(_DWORD *)(v3 + 32) = 0; *(_DWORD *)(v3 + 64) = 0; *(_DWORD *)(v3 + 52) = 0; *(_DWORD *)(v3 + 44) = 0; *(_DWORD *)(v3 + 38) = &unk_1000000; *(_DWORD *)(v3 + 48) = 0; *(_DWORD *)(v3 + 56) = 0; *(_BYTE *)(v3 + 6) = 0; *(_DWORD *)(v3 + 68) = 0; *(_DWORD *)(v3 + 112) = a1; *(_DWORD *)(v3 + 116) = v4; *(_DWORD *)(v3 + 268) = v3; v6 = _time32(0); v7 = v3; v8 = &v6; v9 = (int)&unk_6FF0E0; v10 = (int)sub_609070; *(_DWORD *)(v3 + 160) = sub_609300((int)&v7, 0x10u, v6); *(_DWORD *)(v3 + 232) = v3 + 216; *(_DWORD *)(v3 + 236) = v3 + 216; *(_BYTE *)(v3 + 167) = 0; *(_DWORD *)(v3 + 132) = 0; *(_DWORD *)(v3 + 144) = 0; *(_DWORD *)(v3 + 140) = 0; *(_DWORD *)(v3 + 136) = 0; *(_DWORD *)(v3 + 156) = 2146936064; *(_DWORD *)(v3 + 240) = 0; *(_DWORD *)(v3 + 248) = 0; *(_DWORD *)(v3 + 264) = 0; *(_DWORD *)(v3 + 272) = sub_5F3E00(0); *(_BYTE *)(v3 + 165) = 5; *(_DWORD *)(v3 + 172) = 0; *(_DWORD *)(v3 + 176) = 0; *(_DWORD *)(v3 + 208) = 0; *(_DWORD *)(v3 + 184) = 0; *(_DWORD *)(v3 + 180) = 0; *(_DWORD *)(v3 + 192) = 0; *(_DWORD *)(v3 + 188) = 0; *(_DWORD *)(v3 + 204) = 0; *(_DWORD *)(v3 + 200) = 0; *(_DWORD *)(v3 + 196) = 0; *(_DWORD *)(v3 + 120) = 384; *(_DWORD *)(v3 + 124) = 0; *(_DWORD *)(v3 + 252) = 200; *(_DWORD *)(v3 + 256) = 200; *(_DWORD *)(v3 + 260) = 200; *(_DWORD *)(v3 + 348) = 0; *(_DWORD *)(v3 + 352) = 0; *(_DWORD *)(v3 + 356) = 0; *(_DWORD *)(v3 + 360) = 0; *(_DWORD *)(v3 + 364) = 0; *(_DWORD *)(v3 + 368) = 0; *(_DWORD *)(v3 + 372) = 0; *(_DWORD *)(v3 + 376) = 0; *(_DWORD *)(v3 + 380) = 0; if ( sub_5FCB90(v3, (void (__cdecl *)(_DWORD, _DWORD))sub_608E80, 0) ) { sub_608ED0(v3); return 0; } return v3; } // 86FEB8: using guessed type int __security_cookie; //----- (00609230) -------------------------------------------------------- int __cdecl sub_609230(int a1) { return sub_608ED0(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 156)); } //----- (00609250) -------------------------------------------------------- signed int __cdecl sub_609250(int a1, int a2) { unsigned int v2; // eax@1 int v3; // ecx@3 int v4; // esi@3 v2 = *(_DWORD *)(a1 + 12); if ( a1 != a2 ) { if ( v2 != *(_DWORD *)(a2 + 12) ) return 0; v3 = a2 + 16; v4 = a1 + 16; if ( v2 >= 4 ) { while ( *(_DWORD *)v4 == *(_DWORD *)v3 ) { v2 -= 4; v3 += 4; v4 += 4; if ( v2 < 4 ) goto LABEL_6; } return 0; } LABEL_6: if ( v2 ) { if ( *(_BYTE *)v3 != *(_BYTE *)v4 || v2 > 1 && (*(_BYTE *)(v3 + 1) != *(_BYTE *)(v4 + 1) || v2 > 2 && *(_BYTE *)(v3 + 2) != *(_BYTE *)(v4 + 2)) ) return 0; } } return 1; } //----- (006092C0) -------------------------------------------------------- bool __cdecl sub_6092C0(int a1, int a2) { char v2; // dl@1 signed int v3; // eax@3 v2 = *(_BYTE *)(a1 + 4); return v2 == *(_BYTE *)(a2 + 4) && (v2 != 4 ? (v3 = sub_609250(a1, a2)) : (v3 = a1 == a2), v3); } //----- (00609300) -------------------------------------------------------- unsigned int __cdecl sub_609300(int a1, unsigned int a2, int a3) { unsigned int v3; // edx@1 unsigned int result; // eax@1 unsigned int v5; // ecx@1 int v6; // edi@2 v3 = a2; result = a3 ^ a2; v5 = (a2 >> 5) + 1; if ( a2 >= v5 ) { do { v6 = (result >> 2) + 32 * result + *(_BYTE *)(a1 + v3 - 1); v3 -= v5; result ^= v6; } while ( v3 >= v5 ); } return result; } //----- (00609340) -------------------------------------------------------- int __cdecl sub_609340(int a1, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // eax@1 int v5; // edi@1 int i; // eax@4 int v7; // edx@6 int v8; // ecx@7 int v9; // eax@7 int v10; // edi@8 int v11; // edx@9 int v12; // ecx@9 int result; // eax@12 int j; // [sp+Ch] [bp-4h]@6 v2 = a1; v3 = *(_DWORD *)(a1 + 12); sub_600010(a1, -5); v4 = *(_DWORD *)(v3 + 32); v5 = a2; if ( a2 > v4 ) { if ( (unsigned int)(a2 + 1) > 0x3FFFFFFF ) v4 = loc_603720(a1); *(_DWORD *)(v3 + 24) = sub_603740(a1, *(_DWORD *)(v3 + 24), 4 * v4, 4 * a2); for ( i = *(_DWORD *)(v3 + 32); i < a2; ++i ) *(_DWORD *)(*(_DWORD *)(v3 + 24) + 4 * i) = 0; } v7 = 0; for ( j = 0; v7 < *(_DWORD *)(v3 + 32); j = v7 ) { v8 = *(_DWORD *)(v3 + 24) + 4 * v7; v9 = *(_DWORD *)v8; *(_DWORD *)v8 = 0; if ( v9 ) { v10 = v5 - 1; do { v11 = *(_DWORD *)v9; v12 = v10 & *(_DWORD *)(v9 + 8); *(_DWORD *)v9 = *(_DWORD *)(*(_DWORD *)(v3 + 24) + 4 * v12); *(_DWORD *)(*(_DWORD *)(v3 + 24) + 4 * v12) = v9; *(_BYTE *)(v9 + 5) &= 0xBFu; v9 = v11; } while ( v11 ); v5 = a2; v2 = a1; v7 = j; } ++v7; } result = *(_DWORD *)(v3 + 32); if ( v5 < result ) { if ( (unsigned int)(v5 + 1) > 0x3FFFFFFF ) result = loc_603720(v2); result = sub_603740(v2, *(_DWORD *)(v3 + 24), 4 * result, 4 * v5); *(_DWORD *)(v3 + 24) = result; } *(_DWORD *)(v3 + 32) = v5; return result; } // 600010: using guessed type _DWORD __cdecl sub_600010(_DWORD, _DWORD); // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00609450) -------------------------------------------------------- int __usercall sub_609450(unsigned int a1, int a2, int a3) { int v3; // ebx@1 unsigned int v4; // eax@1 unsigned int v5; // esi@1 int result; // eax@1 int v7; // edx@4 unsigned int v8; // ecx@4 int v9; // esi@4 signed int v10; // eax@16 int v11; // eax@19 int v12; // esi@19 unsigned __int8 v13; // cl@22 unsigned int v14; // [sp+8h] [bp-8h]@1 int v15; // [sp+Ch] [bp-4h]@1 v3 = *(_DWORD *)(a2 + 12); v4 = sub_609300(a3, a1, *(_DWORD *)(v3 + 48)); v5 = v4; result = *(_DWORD *)(*(_DWORD *)(v3 + 24) + 4 * (v4 & (*(_DWORD *)(v3 + 32) - 1))); v14 = v5; v15 = result; if ( !result ) { LABEL_16: v10 = *(_DWORD *)(v3 + 32); if ( *(_DWORD *)(v3 + 28) >= (unsigned int)v10 ) { if ( v10 <= 1073741822 ) sub_609340(a2, 2 * v10); } v11 = sub_5FE250(a2, 4, a1 + 17, *(_DWORD *)(v3 + 24) + 4 * (v5 & (*(_DWORD *)(v3 + 32) - 1)), 0); v12 = v11; *(_DWORD *)(v11 + 12) = a1; *(_DWORD *)(v11 + 8) = v14; *(_BYTE *)(v11 + 6) = 0; memmove((void *)(v11 + 16), (const void *)a3, a1); *(_BYTE *)(v12 + a1 + 16) = 0; ++*(_DWORD *)(v3 + 28); return v12; } while ( 1 ) { if ( v5 != *(_DWORD *)(result + 8) || *(_DWORD *)(result + 12) != a1 ) goto LABEL_15; v7 = a3; v8 = a1; v9 = result + 16; if ( a1 < 4 ) break; while ( *(_DWORD *)v7 == *(_DWORD *)v9 ) { v8 -= 4; v9 += 4; v7 += 4; if ( v8 < 4 ) { result = v15; goto LABEL_8; } } LABEL_14: result = v15; LABEL_15: result = *(_DWORD *)result; v5 = v14; v15 = result; if ( !result ) goto LABEL_16; } LABEL_8: if ( !v8 ) goto LABEL_22; if ( *(_BYTE *)v9 != *(_BYTE *)v7 || v8 > 1 && (*(_BYTE *)(v9 + 1) != *(_BYTE *)(v7 + 1) || v8 > 2 && *(_BYTE *)(v9 + 2) != *(_BYTE *)(v7 + 2)) ) goto LABEL_14; result = v15; LABEL_22: v13 = *(_BYTE *)(result + 5) ^ 3; if ( !((unsigned __int8)(*(_BYTE *)(v3 + 52) ^ 3) & v13) ) *(_BYTE *)(result + 5) = v13; return result; } //----- (00609580) -------------------------------------------------------- int __cdecl sub_609580(int a1, const void *a2, size_t a3) { int result; // eax@2 int v4; // eax@3 int v5; // ebx@5 int v6; // eax@5 int v7; // esi@5 if ( a3 > 0x28 ) { v4 = a1; if ( a3 + 1 > 0xFFFFFFED ) v4 = loc_603720(a1); v5 = *(_DWORD *)(*(_DWORD *)(v4 + 12) + 48); v6 = sub_5FE250(v4, 20, a3 + 17, 0, 0); v7 = v6; *(_DWORD *)(v6 + 12) = a3; *(_DWORD *)(v6 + 8) = v5; *(_BYTE *)(v6 + 6) = 0; memmove((void *)(v6 + 16), a2, a3); *(_BYTE *)(v7 + a3 + 16) = 0; result = v7; } else { result = sub_609450(a3, a1, (int)a2); } return result; } //----- (00609600) -------------------------------------------------------- int __cdecl sub_609600(int a1, const void *a2) { return sub_609580(a1, a2, strlen((const char *)a2)); } //----- (00609630) -------------------------------------------------------- int __cdecl sub_609630(int a1, unsigned int a2, int a3) { int result; // eax@3 if ( a2 > 0xFFFFFFE5 ) loc_603720(a1); result = sub_5FE250(a1, 7, a2 + 24, 0, 0); *(_DWORD *)(result + 16) = a2; *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = a3; return result; } //----- (00609670) -------------------------------------------------------- signed int __cdecl sub_609670(int a1) { int v2; // [sp+4h] [bp-4h]@1 sub_5F79F0(a1, 1, (int)&v2); sub_5F4CC0(a1, v2); return 1; } //----- (006096A0) -------------------------------------------------------- signed int __cdecl sub_6096A0(int a1) { int v1; // eax@1 unsigned int v2; // esi@1 signed int v3; // eax@1 int v4; // esi@2 unsigned int v5; // ebx@6 signed int v6; // eax@6 signed int result; // eax@15 int v8; // [sp+8h] [bp-8h]@1 unsigned int v9; // [sp+Ch] [bp-4h]@1 v1 = sub_5F79F0(a1, 1, (int)&v9); v2 = v9; v8 = v1; v3 = sub_5F7B50(a1, 2); if ( v3 < 0 ) { if ( -v3 <= v2 ) v4 = v3 + v2 + 1; else v4 = 0; } else { v4 = v3; } v5 = v9; v6 = sub_5F7C10(a1, 3, -1); if ( v6 < 0 ) { if ( -v6 <= v5 ) v6 += v5 + 1; else v6 = 0; } if ( (unsigned int)v4 < 1 ) v4 = 1; if ( v6 > v9 ) v6 = v9; if ( v4 > (unsigned int)v6 ) { sub_5F4D30(a1, byte_6A492E, 0); result = 1; } else { sub_5F4D30(a1, (const void *)(v4 + v8 - 1), v6 - v4 + 1); result = 1; } return result; } //----- (00609760) -------------------------------------------------------- signed int __cdecl sub_609760(int a1) { int v1; // edi@1 int v2; // eax@1 int v3; // edx@1 unsigned int v4; // ecx@1 unsigned int v6; // [sp+8h] [bp-218h]@1 char v7; // [sp+Ch] [bp-214h]@1 unsigned int v8; // [sp+21Ch] [bp-4h]@1 int v9; // [sp+220h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = sub_5F79F0(a1, 1, (int)&v6); v2 = sub_5F6BC0(a1, (int)&v7, v6); v3 = v6; v4 = 0; if ( v6 ) { do { *(_BYTE *)(v4 + v2) = *(_BYTE *)(v3 - v4 + v1 - 1); v3 = v6; ++v4; } while ( v4 < v6 ); } sub_5F6AE0((int)&v7, v3); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (006097F0) -------------------------------------------------------- signed int __cdecl sub_6097F0(int a1) { int v1; // ebx@1 int v2; // eax@1 int v3; // ecx@1 unsigned int v4; // edi@1 int v5; // esi@2 int v6; // ebx@2 unsigned int v8; // [sp+Ch] [bp-218h]@1 char v9; // [sp+10h] [bp-214h]@1 unsigned int v10; // [sp+220h] [bp-4h]@1 int v11; // [sp+224h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v1 = sub_5F79F0(a1, 1, (int)&v8); v2 = sub_5F6BC0(a1, (int)&v9, v8); v3 = v8; v4 = 0; if ( v8 ) { v5 = v2; v6 = v1 - v2; do { *(_BYTE *)v5 = tolower(*(_BYTE *)(v6 + v5)); v3 = v8; ++v4; ++v5; } while ( v4 < v8 ); } sub_5F6AE0((int)&v9, v3); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00609890) -------------------------------------------------------- signed int __cdecl sub_609890(int a1) { int v1; // ebx@1 int v2; // eax@1 int v3; // ecx@1 unsigned int v4; // edi@1 int v5; // esi@2 int v6; // ebx@2 unsigned int v8; // [sp+Ch] [bp-218h]@1 char v9; // [sp+10h] [bp-214h]@1 unsigned int v10; // [sp+220h] [bp-4h]@1 int v11; // [sp+224h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v1 = sub_5F79F0(a1, 1, (int)&v8); v2 = sub_5F6BC0(a1, (int)&v9, v8); v3 = v8; v4 = 0; if ( v8 ) { v5 = v2; v6 = v1 - v2; do { *(_BYTE *)v5 = toupper(*(_BYTE *)(v6 + v5)); v3 = v8; ++v4; ++v5; } while ( v4 < v8 ); } sub_5F6AE0((int)&v9, v3); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00609930) -------------------------------------------------------- int __cdecl sub_609930(int a1) { signed int v1; // ebx@1 int result; // eax@2 int v3; // edi@5 int v4; // esi@5 int v5; // ebx@6 char v6; // [sp+0h] [bp-234h]@0 const void *v7; // [sp+10h] [bp-224h]@1 int v8; // [sp+14h] [bp-220h]@1 size_t v9; // [sp+18h] [bp-21Ch]@1 size_t v10; // [sp+1Ch] [bp-218h]@1 char v11; // [sp+20h] [bp-214h]@5 unsigned int v12; // [sp+230h] [bp-4h]@1 int v13; // [sp+234h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v8 = sub_5F79F0(a1, 1, (int)&v10); v1 = sub_5F7B50(a1, 2); v7 = sub_5F7A50(a1, 3, byte_6A492E, (int)&v9); if ( v1 > 0 ) { if ( v10 + v9 < v10 || v10 + v9 >= 0x7FFFFFFFu / v1 ) { result = sub_5F6700(a1, (int)"resulting string too large", v6); } else { v3 = v10 * v1 + v9 * (v1 - 1); v4 = sub_5F6BC0(a1, (int)&v11, v10 * v1 + v9 * (v1 - 1)); if ( v1 > 1 ) { v5 = v1 - 1; do { memmove((void *)v4, (const void *)v8, v10); v4 += v10; if ( v9 ) { memmove((void *)v4, v7, v9); v4 += v9; } --v5; } while ( v5 ); } memmove((void *)v4, (const void *)v8, v10); sub_5F6AE0((int)&v11, v3); result = 1; } } else { sub_5F4D30(a1, byte_6A492E, 0); result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00609AB0) -------------------------------------------------------- int __cdecl sub_609AB0(int a1) { int v1; // eax@1 unsigned int v2; // esi@1 signed int v3; // eax@1 signed int v4; // ebx@2 unsigned int v5; // esi@6 signed int v6; // eax@6 int result; // eax@15 int v8; // esi@16 int v9; // edi@18 int v10; // ebx@19 char v11; // [sp+0h] [bp-14h]@0 int v12; // [sp+Ch] [bp-8h]@1 unsigned int v13; // [sp+10h] [bp-4h]@1 v1 = sub_5F79F0(a1, 1, (int)&v13); v2 = v13; v12 = v1; v3 = sub_5F7C10(a1, 2, 1); if ( v3 < 0 ) { if ( -v3 <= v2 ) v4 = v3 + v2 + 1; else v4 = 0; } else { v4 = v3; } v5 = v13; v6 = sub_5F7C10(a1, 3, v4); if ( v6 < 0 ) { if ( -v6 <= v5 ) v6 += v5 + 1; else v6 = 0; } if ( (unsigned int)v4 < 1 ) v4 = 1; if ( v6 > v13 ) v6 = v13; if ( v4 <= (unsigned int)v6 ) { v8 = v6 - v4 + 1; if ( v8 + v4 > (unsigned int)v6 ) { sub_5F6950(a1, v6 - v4 + 1, (int)"string slice too long"); v9 = 0; if ( v8 > 0 ) { v10 = v4 + v12 - 1; do sub_5F4CC0(a1, *(_BYTE *)(v10 + v9++)); while ( v9 < v8 ); } result = v8; } else { result = sub_5F6700(a1, (int)"string slice too long", v11); } } else { result = 0; } return result; } //----- (00609B90) -------------------------------------------------------- signed int __cdecl sub_609B90(int a1) { int v1; // ebx@1 signed int v2; // esi@1 signed int v3; // eax@2 char v4; // bl@2 int v6; // [sp+Ch] [bp-21Ch]@1 signed int v7; // [sp+10h] [bp-218h]@1 char v8; // [sp+14h] [bp-214h]@1 unsigned int v9; // [sp+224h] [bp-4h]@1 int v10; // [sp+228h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v1 = sub_5F3E50(a1); v7 = v1; v2 = 1; v6 = sub_5F6BC0(a1, (int)&v8, v1); if ( v1 >= 1 ) { do { v3 = sub_5F7B50(a1, v2); v4 = v3; if ( (unsigned __int8)v3 != v3 ) sub_5F7800(a1, v2); *(_BYTE *)(v6 + v2++ - 1) = v4; } while ( v2 <= v7 ); v1 = v7; } sub_5F6AE0((int)&v8, v1); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00609C40) -------------------------------------------------------- int __cdecl sub_609C40(int a1, const void *a2, size_t a3, int a4) { sub_5F6A30(a4, a2, a3); return 0; } //----- (00609C60) -------------------------------------------------------- int __cdecl sub_609C60(int a1) { int result; // eax@2 char v2; // [sp+0h] [bp-218h]@0 char v3; // [sp+4h] [bp-214h]@1 unsigned int v4; // [sp+214h] [bp-4h]@1 int v5; // [sp+218h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; sub_5F7960(a1, 1, 6); sub_5F3E70(a1, 1); sub_5F6B90(a1, (int)&v3); if ( sub_5F5A50(a1, (int)sub_609C40, (int)&v3) ) { result = sub_5F6700(a1, (int)"unable to dump given function", v2); } else { sub_5F6AA0((int)&v3); result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00609CF0) -------------------------------------------------------- int __usercall sub_609CF0(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // esi@1 int result; // eax@3 char v6; // cl@8 char v7; // [sp+0h] [bp-4h]@0 v2 = a1; v3 = *(_BYTE *)a1; v4 = v2 + 1; if ( v3 == 37 ) { if ( v4 == *(_DWORD *)(a2 + 8) ) sub_5F6700(*(_DWORD *)(a2 + 12), (int)"malformed pattern (ends with '%%')", v7); result = v4 + 1; } else { if ( v3 == 91 ) { if ( *(_BYTE *)v4 == 94 ) ++v4; do { if ( v4 == *(_DWORD *)(a2 + 8) ) sub_5F6700(*(_DWORD *)(a2 + 12), (int)"malformed pattern (missing ']')", v7); v6 = *(_BYTE *)v4++; if ( v6 == 37 ) { if ( (unsigned int)v4 < *(_DWORD *)(a2 + 8) ) ++v4; } } while ( *(_BYTE *)v4 != 93 ); result = v4 + 1; } else { result = v4; } } return result; } //----- (00609D60) -------------------------------------------------------- int __usercall sub_609D60(int a1, int a2) { int v2; // esi@1 int v3; // esi@2 int result; // eax@14 int v5; // [sp+0h] [bp-8h]@0 v2 = a1; 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(a2) ) result = v3; else result = v3 == 0; break; default: result = a2 == v2; break; } return result; } //----- (00609E80) -------------------------------------------------------- signed int __usercall sub_609E80(int a1, int a2, unsigned int a3) { int v3; // edi@1 unsigned int v4; // edx@3 unsigned int v5; // edi@3 int v6; // eax@4 int v7; // esi@6 int v8; // esi@7 int v9; // ecx@25 int v11; // [sp+8h] [bp-Ch]@6 int v12; // [sp+Ch] [bp-8h]@6 signed int v13; // [sp+10h] [bp-4h]@1 v3 = a1; v13 = 1; if ( *(_BYTE *)(a1 + 1) == 94 ) { v13 = 0; v3 = a1 + 1; } v4 = a3; v5 = v3 + 1; if ( v5 < a3 ) { v6 = v5 + 2; do { if ( *(_BYTE *)v5 == 37 ) { v7 = *(_BYTE *)(v5++ + 1); v11 = v6 + 1; v12 = v7; switch ( tolower(v7) ) { case 97: v8 = isalpha(a2); goto LABEL_18; case 99: v8 = iscntrl(a2); goto LABEL_18; case 100: v8 = isdigit(a2); goto LABEL_18; case 103: v8 = isgraph(a2); goto LABEL_18; case 108: v8 = islower(a2); goto LABEL_18; case 112: v8 = ispunct(a2); goto LABEL_18; case 115: v8 = isspace(a2); goto LABEL_18; case 117: v8 = isupper(a2); goto LABEL_18; case 119: v8 = isalnum(a2); goto LABEL_18; case 120: v8 = isxdigit(a2); goto LABEL_18; case 122: v8 = a2 == 0; LABEL_18: if ( !islower(v12) ) v8 = v8 == 0; break; default: v8 = v7 == a2; break; } if ( v8 ) return v13; v6 = v11; v4 = a3; } else { if ( *(_BYTE *)(v5 + 1) != 45 || v6 >= v4 ) { if ( *(_BYTE *)v5 == a2 ) return v13; } else { v9 = *(_BYTE *)v5; v5 += 2; v6 += 2; if ( v9 <= a2 && a2 <= *(_BYTE *)v5 ) return v13; } } ++v5; ++v6; } while ( v5 < v4 ); } return v13 == 0; } //----- (0060A040) -------------------------------------------------------- int __usercall sub_60A040(unsigned int a1, int a2, int a3) { unsigned int v3; // edi@1 int v4; // esi@1 unsigned int v5; // ecx@4 int v6; // esi@4 int v7; // edx@4 signed int i; // edi@4 int v9; // eax@5 char v11; // [sp+0h] [bp-Ch]@0 int v12; // [sp+8h] [bp-4h]@4 v3 = a1; v4 = a2; if ( a1 >= *(_DWORD *)(a3 + 8) - 1 ) sub_5F6700(*(_DWORD *)(a3 + 12), (int)"malformed pattern (missing arguments to '%%b')", v11); if ( *(_BYTE *)v4 == *(_BYTE *)v3 ) { v5 = *(_DWORD *)(a3 + 4); v6 = v4 + 1; v12 = *(_BYTE *)v3; v7 = *(_BYTE *)(v3 + 1); for ( i = 1; v6 < v5; ++v6 ) { v9 = *(_BYTE *)v6; if ( v9 == v7 ) { --i; if ( !i ) return v6 + 1; } else { if ( v9 == v12 ) ++i; } } } return 0; } //----- (0060A0B0) -------------------------------------------------------- int __cdecl sub_60A0B0(int a1, int *a2, int a3, int a4) { int *v4; // esi@1 char v5; // al@2 int v6; // ebx@2 signed int v7; // eax@5 int result; // eax@11 int v9; // [sp+8h] [bp-4h]@1 v4 = a2; v9 = 0; if ( (unsigned int)a2 < *(_DWORD *)(a1 + 4) ) { while ( 1 ) { v5 = *(_BYTE *)a3; v6 = *(_BYTE *)v4; if ( *(_BYTE *)a3 == 37 ) break; if ( v5 != 46 ) { if ( v5 == 91 ) v7 = sub_609E80(a3, v6, a4 - 1); else v7 = v5 == v6; LABEL_8: if ( !v7 ) goto LABEL_10; } ++v9; v4 = (int *)((char *)v4 + 1); if ( (unsigned int)v4 >= *(_DWORD *)(a1 + 4) ) { LABEL_10: if ( v9 >= 0 ) goto LABEL_11; return 0; } } v7 = sub_609D60(*(_BYTE *)v4, *(_BYTE *)(a3 + 1)); goto LABEL_8; } LABEL_11: while ( 1 ) { result = sub_60A320(a1, (char *)a2 + v9, a4 + 1); if ( result ) break; --v9; if ( v9 < 0 ) return 0; } return result; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); //----- (0060A150) -------------------------------------------------------- int __usercall sub_60A150(int *a1, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // edi@1 int *v6; // esi@1 int result; // eax@1 char v8; // al@3 int v9; // ecx@3 int v10; // eax@6 v4 = a4; v5 = a2; v6 = a1; for ( result = sub_60A320(a2, a1, a4 + 1); !result; result = sub_60A320(v5, v6, v4 + 1) ) { if ( (unsigned int)v6 >= *(_DWORD *)(v5 + 4) ) return 0; v8 = *(_BYTE *)a3; v9 = *(_BYTE *)v6; if ( *(_BYTE *)a3 == 37 ) { v10 = sub_609D60(*(_BYTE *)v6, *(_BYTE *)(a3 + 1)); } else { if ( v8 == 46 ) goto LABEL_11; if ( v8 == 91 ) { v10 = sub_609E80(a3, v9, v4 - 1); v4 = a4; } else { v10 = v8 == v9; } } if ( !v10 ) return 0; v5 = a2; LABEL_11: v6 = (int *)((char *)v6 + 1); } return result; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); //----- (0060A1E0) -------------------------------------------------------- int __usercall sub_60A1E0(int a1, int a2, int a3, int a4) { signed int v4; // edi@1 int result; // eax@3 char v6; // [sp+0h] [bp-4h]@0 v4 = *(_DWORD *)(a2 + 16); if ( v4 >= 32 ) sub_5F6700(*(_DWORD *)(a2 + 12), (int)"too many captures", v6); *(_DWORD *)(a2 + 8 * v4 + 20) = a1; *(_DWORD *)(a2 + 8 * v4 + 24) = a4; *(_DWORD *)(a2 + 16) = v4 + 1; result = sub_60A320(a2, a1, a3); if ( !result ) --*(_DWORD *)(a2 + 16); return result; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); //----- (0060A230) -------------------------------------------------------- int __usercall sub_60A230(int a1, int a2, int a3) { int v3; // eax@1 int v4; // ecx@2 int v5; // edi@6 int result; // eax@6 char v7; // [sp+0h] [bp-4h]@0 v3 = *(_DWORD *)(a2 + 16) - 1; if ( v3 < 0 ) { LABEL_5: v3 = sub_5F6700(*(_DWORD *)(a2 + 12), (int)"invalid pattern capture", v7); } else { v4 = a2 + 8 * v3 + 24; while ( *(_DWORD *)v4 != -1 ) { v4 -= 8; --v3; if ( v3 < 0 ) goto LABEL_5; } } v5 = v3; *(_DWORD *)(a2 + 8 * v3 + 24) = a1 - *(_DWORD *)(a2 + 8 * v3 + 20); result = sub_60A320(a2, a1, a3); if ( !result ) *(_DWORD *)(a2 + 8 * v5 + 24) = -1; return result; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); //----- (0060A290) -------------------------------------------------------- int __usercall sub_60A290(int a1, int a2, int a3) { bool v3; // sf@1 int v4; // eax@1 int v5; // esi@1 unsigned int v6; // edi@5 int v7; // esi@6 unsigned int v8; // ecx@6 int v9; // edx@6 v3 = a1 - 49 < 0; v4 = a1 - 49; v5 = a2; if ( v3 || v4 >= *(_DWORD *)(a2 + 16) || *(_DWORD *)(a2 + 8 * v4 + 24) == -1 ) v4 = sub_5F6700(*(_DWORD *)(a2 + 12), (int)"invalid capture index %%%d", v4 + 1); v6 = *(_DWORD *)(v5 + 8 * v4 + 24); if ( *(_DWORD *)(v5 + 4) - a3 >= v6 ) { v7 = *(_DWORD *)(v5 + 8 * v4 + 20); v8 = v6; v9 = a3; if ( v6 < 4 ) { LABEL_9: if ( !v8 || *(_BYTE *)v9 == *(_BYTE *)v7 && (v8 <= 1 || *(_BYTE *)(v9 + 1) == *(_BYTE *)(v7 + 1) && (v8 <= 2 || *(_BYTE *)(v9 + 2) == *(_BYTE *)(v7 + 2))) ) return v6 + a3; } else { while ( *(_DWORD *)v7 == *(_DWORD *)v9 ) { v8 -= 4; v9 += 4; v7 += 4; if ( v8 < 4 ) goto LABEL_9; } } } return 0; } //----- (0060A320) -------------------------------------------------------- int __cdecl sub_60A320(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // ecx@1 int v6; // eax@6 int v7; // ecx@6 int v8; // edi@6 int v9; // ebx@6 char v10; // al@7 int v11; // edx@7 int v12; // eax@10 int v13; // esi@14 int v14; // eax@16 unsigned __int8 v15; // cl@17 unsigned int v16; // edi@19 signed int v17; // edx@27 int result; // eax@31 char v19; // [sp+0h] [bp-Ch]@0 int v20; // [sp+1Ch] [bp+10h]@6 int v21; // [sp+1Ch] [bp+10h]@16 v3 = a3; v4 = a1; v5 = *(_DWORD *)(a1 + 8); if ( a3 == v5 ) return a2; while ( 2 ) { switch ( *(_BYTE *)v3 ) { case 36: if ( v3 + 1 != v5 ) goto LABEL_6; return ((a2 != *(_DWORD *)(v4 + 4)) - 1) & a2; default: LABEL_6: v6 = sub_609CF0(v3, v4); v7 = a2; v8 = a1; v9 = v6; v20 = v6; if ( (unsigned int)a2 >= *(_DWORD *)(a1 + 4) ) goto LABEL_28; v10 = *(_BYTE *)v3; v11 = *(_BYTE *)a2; if ( *(_BYTE *)v3 == 37 ) { v12 = sub_609D60(*(_BYTE *)a2, *(_BYTE *)(v3 + 1)); } else { if ( v10 == 46 ) { LABEL_27: v17 = 1; goto LABEL_29; } if ( v10 == 91 ) { v12 = sub_609E80(v3, v11, v9 - 1); v9 = v20; } else { v12 = v10 == v11; } } v7 = a2; v8 = a1; if ( v12 ) goto LABEL_27; LABEL_28: v17 = 0; LABEL_29: switch ( *(_BYTE *)v9 ) { case 63: if ( v17 ) { result = sub_60A320(v8, v7 + 1, v9 + 1); if ( result ) return result; } v3 = v9 + 1; goto LABEL_35; default: if ( !v17 ) return 0; a2 = v7 + 1; v3 = v9; goto LABEL_35; case 42: return sub_60A0B0(v8, (int *)v7, v3, v9); case 43: if ( !v17 ) return 0; result = sub_60A0B0(v8, (int *)(v7 + 1), v3, v9); break; case 45: result = sub_60A150((int *)v7, v8, v3, v9); break; } return result; case 37: switch ( *(_BYTE *)(v3 + 1) ) { default: goto LABEL_6; case 98: a2 = sub_60A040(v3 + 2, a2, v4); if ( !a2 ) return 0; v3 += 4; goto LABEL_35; case 102: v13 = v3 + 2; if ( *(_BYTE *)v13 != 91 ) sub_5F6700(*(_DWORD *)(v4 + 12), (int)"missing '[' after '%%f' in pattern", v19); v14 = sub_609CF0(v13, v4); v21 = v14; if ( a2 == *(_DWORD *)a1 ) v15 = 0; else v15 = *(_BYTE *)(a2 - 1); v16 = v14 - 1; if ( sub_609E80(v13, v15, v14 - 1) || !sub_609E80(v13, *(_BYTE *)a2, v16) ) return 0; v3 = v21; goto LABEL_35; case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: a2 = sub_60A290(*(_BYTE *)(v3 + 1), a1, a2); if ( !a2 ) return 0; v3 += 2; LABEL_35: v5 = *(_DWORD *)(a1 + 8); if ( v3 == v5 ) return a2; v4 = a1; break; } continue; case 40: if ( *(_BYTE *)(v3 + 1) == 41 ) result = sub_60A1E0(a2, a1, v3 + 2, -2); else result = sub_60A1E0(a2, a1, v3 + 1, -1); return result; case 41: return sub_60A230(a2, a1, v3 + 1); } } } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); //----- (0060A630) -------------------------------------------------------- void *__usercall sub_60A630(size_t a1, const void *a2, size_t a3, int *a4) { void *result; // eax@2 unsigned int v5; // ebx@5 int v6; // edi@7 char *v7; // edx@7 unsigned int v8; // ecx@7 int v9; // esi@7 bool v10; // zf@16 size_t v11; // [sp+10h] [bp+Ch]@5 if ( a1 ) { if ( a1 <= a3 ) { v5 = a1 - 1; v11 = a3 - (a1 - 1); if ( v11 ) { do { result = memchr(a2, *(_BYTE *)a4, v11); if ( !result ) break; v6 = (int)((char *)result + 1); v7 = (char *)a4 + 1; v8 = v5; v9 = (int)((char *)result + 1); if ( v5 < 4 ) { LABEL_10: if ( !v8 || *v7 == *(_BYTE *)v9 && (v8 <= 1 || v7[1] == *(_BYTE *)(v9 + 1) && (v8 <= 2 || v7[2] == *(_BYTE *)(v9 + 2))) ) return result; } else { while ( *(_DWORD *)v9 == *(_DWORD *)v7 ) { v8 -= 4; v7 += 4; v9 += 4; if ( v8 < 4 ) goto LABEL_10; } } v10 = (char *)a2 + v11 - v6 == 0; v11 += (size_t)((char *)a2 - v6); a2 = (char *)result + 1; } while ( !v10 ); } result = 0; } else { result = 0; } } else { result = (void *)a2; } return result; } //----- (0060A6E0) -------------------------------------------------------- #error "60A703: call analysis failed (funcsize=48)" //----- (0060A760) -------------------------------------------------------- int __usercall sub_60A760(int a1, const void *a2, int a3) { int v3; // ebx@3 int i; // edi@5 size_t v5; // ebx@10 char v7; // [sp+0h] [bp-Ch]@0 signed int v8; // [sp+8h] [bp-4h]@3 if ( *(_DWORD *)(a1 + 16) || !a2 ) { v8 = *(_DWORD *)(a1 + 16); v3 = *(_DWORD *)(a1 + 16); } else { v3 = 1; v8 = 1; } sub_5F6950(*(_DWORD *)(a1 + 12), v3, (int)"too many captures"); for ( i = 0; i < v3; ++i ) { if ( i >= *(_DWORD *)(a1 + 16) ) { if ( i ) sub_5F6700(*(_DWORD *)(a1 + 12), (int)"invalid capture index", v7); else sub_5F4D30(*(_DWORD *)(a1 + 12), a2, a3 - (_DWORD)a2); continue; } v5 = *(_DWORD *)(a1 + 8 * i + 24); if ( v5 == -1 ) { sub_5F6700(*(_DWORD *)(a1 + 12), (int)"unfinished capture", v7); } else { if ( v5 == -2 ) { sub_5F4CC0(*(_DWORD *)(a1 + 12), *(_DWORD *)(a1 + 8 * i + 20) - *(_DWORD *)a1 + 1); v3 = v8; continue; } } sub_5F4D30(*(_DWORD *)(a1 + 12), *(const void **)(a1 + 8 * i + 20), v5); v3 = v8; } return v3; } //----- (0060A830) -------------------------------------------------------- signed int __usercall sub_60A830(unsigned int a1, int a2) { unsigned int v2; // esi@1 int v3; // eax@3 char v4; // cl@4 v2 = 0; while ( !strpbrk((const char *)(v2 + a2), "^$*+?.([%-") ) { v3 = v2 + a2; do v4 = *(_BYTE *)v3++; while ( v4 ); v2 += v3 - (v2 + a2 + 1) + 1; if ( v2 > a1 ) return 1; } return 0; } //----- (0060A880) -------------------------------------------------------- int __thiscall sub_60A880(int this, int a2) { int v2; // esi@1 int v3; // eax@1 unsigned int v4; // ebx@1 int v5; // edi@1 signed int v6; // eax@1 int v7; // ebx@2 int v8; // eax@9 signed int v9; // eax@10 void *v10; // eax@11 int v11; // edi@12 int result; // eax@12 const void *v13; // ebx@13 int v14; // eax@16 int v15; // edi@16 unsigned int v16; // edx@17 int v17; // [sp+Ch] [bp-12Ch]@1 unsigned int v18; // [sp+10h] [bp-128h]@1 size_t v19; // [sp+14h] [bp-124h]@1 int v20; // [sp+18h] [bp-120h]@1 int v21; // [sp+1Ch] [bp-11Ch]@2 int v22; // [sp+20h] [bp-118h]@15 unsigned int v23; // [sp+24h] [bp-114h]@15 unsigned int v24; // [sp+28h] [bp-110h]@15 int v25; // [sp+2Ch] [bp-10Ch]@15 int v26; // [sp+30h] [bp-108h]@16 unsigned int v27; // [sp+134h] [bp-4h]@1 int v28; // [sp+138h] [bp+0h]@1 v27 = (unsigned int)&v28 ^ __security_cookie; v2 = this; v20 = sub_5F79F0(this, 1, (int)&v18); v3 = sub_5F79F0(v2, 2, (int)&v19); v4 = v18; v5 = v3; v17 = v3; v6 = sub_5F7C10(v2, 3, 1); if ( v6 < 0 ) { if ( -v6 > v4 ) { LABEL_6: v21 = 1; v7 = 1; goto LABEL_8; } v21 = v6 + v4 + 1; v7 = v6 + v4 + 1; } else { v7 = v6; v21 = v6; } if ( (unsigned int)v7 < 1 ) goto LABEL_6; if ( v7 > v18 + 1 ) { LABEL_23: sub_5F4C60(v2); return 1; } LABEL_8: if ( a2 ) { LOBYTE(v8) = sub_5F4870(v2, 4); if ( v8 || (v9 = sub_60A830(v19, v5), v7 = v21, v9) ) { v10 = sub_60A630(v19, (const void *)(v7 + v20 - 1), v18 - v7 + 1, (int *)v5); if ( v10 ) { v11 = (int)((char *)v10 - v20); sub_5F4CC0(v2, (signed int)((char *)v10 + -v20 + 1)); sub_5F4CC0(v2, v19 + v11); return 2; } goto LABEL_23; } } v13 = (const void *)(v7 + v20 - 1); v21 = *(_BYTE *)v5 == 94; if ( v21 ) { ++v5; --v19; v17 = v5; } v22 = v20; v25 = v2; v23 = v20 + v18; v24 = v5 + v19; while ( 1 ) { v26 = 0; v14 = sub_60A320(&v22, v13, v5); v15 = v14; if ( v14 ) break; v16 = (unsigned int)v13; v13 = (char *)v13 + 1; if ( v16 >= v23 || v21 ) goto LABEL_23; v5 = v17; } if ( a2 ) { sub_5F4CC0(v2, (signed int)((char *)v13 + -v20 + 1)); sub_5F4CC0(v2, v15 - v20); result = sub_60A760((int)&v22, 0, 0) + 2; } else { result = sub_60A760((int)&v22, v13, v14); } return result; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0060AAD0) -------------------------------------------------------- int __cdecl sub_60AAD0(int a1) { return sub_60A880(a1, 1); } //----- (0060AAF0) -------------------------------------------------------- int __cdecl sub_60AAF0(int a1) { return sub_60A880(a1, 0); } //----- (0060AB10) -------------------------------------------------------- int __cdecl sub_60AB10(int a1) { int v1; // ebx@1 int v2; // esi@1 int v3; // eax@2 int result; // eax@4 signed int v5; // ecx@5 int v6; // [sp+Ch] [bp-128h]@1 int v7; // [sp+10h] [bp-124h]@1 int v8; // [sp+14h] [bp-120h]@2 int v9; // [sp+18h] [bp-11Ch]@1 int v10; // [sp+1Ch] [bp-118h]@1 int v11; // [sp+20h] [bp-114h]@1 int v12; // [sp+24h] [bp-110h]@1 int v13; // [sp+28h] [bp-10Ch]@1 int v14; // [sp+2Ch] [bp-108h]@2 unsigned int v15; // [sp+130h] [bp-4h]@1 int v16; // [sp+134h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v1 = sub_5F48F0(a1, -1001001, (int)&v7); v9 = sub_5F48F0(a1, -1001002, (int)&v6); v13 = a1; v10 = v1; v11 = v1 + v7; v12 = v9 + v6; v2 = v1 + sub_5F46F0(a1, -1001003, 0); if ( v2 > (unsigned int)v11 ) { LABEL_4: result = 0; } else { while ( 1 ) { v14 = 0; v3 = sub_60A320(&v10, v2, v9); v8 = v3; if ( v3 ) break; ++v2; if ( v2 > (unsigned int)v11 ) goto LABEL_4; } v5 = v3 - v1; if ( v3 == v2 ) ++v5; sub_5F4CC0(a1, v5); sub_5F4090(a1, -1001003); result = sub_60A760((int)&v10, (const void *)v2, v8); } return result; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0060AC30) -------------------------------------------------------- signed int __cdecl sub_60AC30(int a1) { sub_5F79F0(a1, 1, 0); sub_5F79F0(a1, 2, 0); sub_5F3E70(a1, 2); sub_5F4CC0(a1, 0); sub_5F4E40(a1, (int)sub_60AB10, 3); return 1; } //----- (0060AC80) -------------------------------------------------------- char __usercall sub_60AC80(unsigned int a1, int a2, const void *a3, int a4) { int v4; // eax@1 unsigned int v5; // edi@1 int v6; // esi@1 int v7; // ecx@6 int v9; // [sp+Ch] [bp-8h]@1 unsigned int v10; // [sp+10h] [bp-4h]@1 v4 = sub_5F48F0(*(_DWORD *)(a2 + 12), 3, (int)&v10); v5 = 0; v6 = v4; v9 = v4; if ( v10 ) { do { if ( *(_BYTE *)(v5 + v6) == 37 ) { v7 = *(_BYTE *)(v5++ + v6 + 1); if ( isdigit(v7) ) { if ( *(_BYTE *)(v5 + v6) == 48 ) { LOBYTE(v4) = (unsigned int)sub_5F6A30(a1, a3, a4 - (_DWORD)a3); } else { sub_60A6E0(a3); LOBYTE(v4) = sub_5F6B20(a1); v6 = v9; } } else { if ( *(_BYTE *)(v5 + v6) != 37 ) sub_5F6700(*(_DWORD *)(a2 + 12), (int)"invalid use of '%c' in replacement string", 37); if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 4) ) sub_5F69A0(a1, 1u); v4 = *(_DWORD *)(a1 + 8); *(_BYTE *)(*(_DWORD *)a1 + v4) = *(_BYTE *)(v5 + v6); ++*(_DWORD *)(a1 + 8); } } else { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 4) ) sub_5F69A0(a1, 1u); LOBYTE(v4) = *(_BYTE *)(v5 + v6); *(_BYTE *)(*(_DWORD *)a1 + (*(_DWORD *)(a1 + 8))++) = v4; } ++v5; } while ( v5 < v10 ); } return v4; } // 60A6E0: using guessed type int __thiscall sub_60A6E0(_DWORD); //----- (0060AD80) -------------------------------------------------------- char __usercall sub_60AD80(int a1, int a2, int a3, size_t a4, const void *a5) { int v5; // eax@1 int v6; // esi@1 signed int v7; // edi@1 int v8; // ebx@1 char result; // al@3 int v10; // eax@4 size_t v11; // eax@7 int v12; // eax@12 int v13; // eax@16 int v14; // eax@17 char v15; // al@17 signed int v16; // [sp-Ch] [bp-1Ch]@6 const void *v17; // [sp-8h] [bp-18h]@6 size_t v18; // [sp-4h] [bp-14h]@6 char v19; // [sp+0h] [bp-10h]@0 size_t v20; // [sp+Ch] [bp-4h]@7 v5 = a1 - 5; v6 = a2; v7 = *(_DWORD *)(a2 + 12); v8 = a3; if ( !v5 ) { if ( *(_DWORD *)(a2 + 16) > 0 ) { v11 = *(_DWORD *)(a2 + 24); v20 = v11; if ( v11 == -1 ) { sub_5F6700(v7, (int)"unfinished capture", v19); v11 = v20; } else { if ( v11 == -2 ) { sub_5F4CC0(v7, *(_DWORD *)(a2 + 20) - *(_DWORD *)a2 + 1); goto LABEL_11; } } v18 = v11; v17 = *(const void **)(v6 + 20); v16 = *(_DWORD *)(v6 + 12); } else { v18 = a3 - (_DWORD)a5; v17 = a5; v16 = *(_DWORD *)(a2 + 12); } sub_5F4D30(v16, v17, v18); LABEL_11: sub_5F4FA0(v7, 3); goto LABEL_12; } if ( v5 != 1 ) return sub_60AC80(a4, a2, a5, a3); sub_5F4140(v7, 3); v10 = sub_60A760(v6, a5, v8); sub_5F5850(v7, v10, 1, 0, 0); LABEL_12: LOBYTE(v12) = sub_5F4870(v7, -1); if ( v12 ) { LOBYTE(v13) = sub_5F43A0(v7, -1); if ( !v13 ) { v14 = sub_5F41F0(v7, -1); v15 = sub_5F4280(v7, v14); sub_5F6700(v7, (int)"invalid replacement value (a %s)", v15); } result = sub_5F6B20(a4); } else { sub_5F3E70(v7, -2); sub_5F4D30(v7, a5, v8 - (_DWORD)a5); result = sub_5F6B20(a4); } return result; } //----- (0060AEB0) -------------------------------------------------------- signed int __cdecl sub_60AEB0(int a1) { int v1; // esi@1 int v2; // ebx@1 bool v3; // zf@1 int v4; // eax@8 int v5; // ebx@11 int v7; // [sp+Ch] [bp-344h]@1 int v8; // [sp+10h] [bp-340h]@1 int v9; // [sp+14h] [bp-33Ch]@1 int v10; // [sp+18h] [bp-338h]@1 int v11; // [sp+1Ch] [bp-334h]@1 int v12; // [sp+20h] [bp-330h]@1 int v13; // [sp+24h] [bp-32Ch]@1 int v14; // [sp+28h] [bp-328h]@6 unsigned int v15; // [sp+2Ch] [bp-324h]@15 unsigned int v16; // [sp+30h] [bp-320h]@15 int v17; // [sp+238h] [bp-118h]@8 int v18; // [sp+23Ch] [bp-114h]@8 int v19; // [sp+240h] [bp-110h]@8 int v20; // [sp+244h] [bp-10Ch]@8 int v21; // [sp+248h] [bp-108h]@11 unsigned int v22; // [sp+34Ch] [bp-4h]@1 int v23; // [sp+350h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; v1 = sub_5F79F0(a1, 1, (int)&v7); v2 = sub_5F79F0(a1, 2, (int)&v12); v9 = v2; v11 = sub_5F41F0(a1, 3); v10 = sub_5F7C10(a1, 4, v7 + 1); v3 = *(_BYTE *)v2 == 94; v13 = 0; v8 = v3; if ( v11 != 3 && v11 != 4 && v11 != 6 && v11 != 5 ) sub_5F7800(a1, 3); sub_5F6B90(a1, (int)&v14); if ( v8 ) { ++v2; --v12; v9 = v2; } v4 = v1 + v7; v20 = a1; v17 = v1; v18 = v1 + v7; v19 = v2 + v12; if ( v10 ) { while ( 1 ) { v21 = 0; v5 = sub_60A320(&v17, v1, v2); if ( v5 && (++v13, sub_60AD80(v11, (int)&v17, v5, (size_t)&v14, (const void *)v1), v5 > (unsigned int)v1) ) { v1 = v5; } else { v4 = v18; if ( v1 >= (unsigned int)v18 ) goto LABEL_21; if ( v16 >= v15 ) sub_5F69A0((int)&v14, 1u); *(_BYTE *)(v14 + v16++) = *(_BYTE *)v1++; } if ( v8 || v13 >= (unsigned int)v10 ) break; v2 = v9; } v4 = v18; } LABEL_21: sub_5F6A30((int)&v14, (const void *)v1, v4 - v1); sub_5F6AA0((int)&v14); sub_5F4CC0(a1, v13); return 2; } // 60A320: using guessed type _DWORD __cdecl sub_60A320(_DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0060B0C0) -------------------------------------------------------- int __usercall sub_60B0C0(signed int a1, int a2, int a3) { int v3; // edi@1 unsigned __int8 v4; // al@4 bool v5; // cf@9 unsigned int v6; // edx@21 int result; // eax@23 char *v8; // [sp-Ch] [bp-28h]@11 const char *v9; // [sp-8h] [bp-24h]@11 int v10; // [sp-4h] [bp-20h]@11 int v11; // [sp+8h] [bp-14h]@1 char v12; // [sp+Ch] [bp-10h]@11 unsigned int v13; // [sp+18h] [bp-4h]@1 int v14; // [sp+1Ch] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = sub_5F79F0(a3, a1, (int)&v11); if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 4) ) sub_5F69A0(a2, 1u); *(_BYTE *)(*(_DWORD *)a2 + (*(_DWORD *)(a2 + 8))++) = 34; if ( v11 ) { while ( 1 ) { --v11; v4 = *(_BYTE *)v3; if ( *(_BYTE *)v3 == 34 ) break; if ( v4 == 92 || v4 == 10 ) break; if ( v4 && !iscntrl(v4) ) { v5 = *(_DWORD *)(a2 + 8) < *(_DWORD *)(a2 + 4); LABEL_17: if ( !v5 ) sub_5F69A0(a2, 1u); *(_BYTE *)(*(_DWORD *)a2 + (*(_DWORD *)(a2 + 8))++) = *(_BYTE *)v3; goto LABEL_20; } if ( isdigit(*(_BYTE *)(v3 + 1)) ) { v10 = *(_BYTE *)v3; v9 = "\\%03d"; v8 = &v12; } else { v10 = *(_BYTE *)v3; v9 = "\\%d"; v8 = &v12; } sprintf(v8, v9, v10); sub_5F6A60(a2, &v12); LABEL_20: ++v3; if ( !v11 ) goto LABEL_21; } if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 4) ) sub_5F69A0(a2, 1u); *(_BYTE *)(*(_DWORD *)a2 + (*(_DWORD *)(a2 + 8))++) = 92; v5 = *(_DWORD *)(a2 + 8) < *(_DWORD *)(a2 + 4); goto LABEL_17; } LABEL_21: v6 = *(_DWORD *)(a2 + 8); --v11; if ( v6 >= *(_DWORD *)(a2 + 4) ) sub_5F69A0(a2, 1u); result = *(_DWORD *)a2; *(_BYTE *)(*(_DWORD *)a2 + (*(_DWORD *)(a2 + 8))++) = 34; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0060B200) -------------------------------------------------------- int *__usercall sub_60B200(signed int a1, const void *a2, int a3) { signed int v3; // edi@1 int *i; // esi@1 int v5; // ecx@11 char v7; // [sp+0h] [bp-8h]@0 void *v8; // [sp+10h] [bp+8h]@17 v3 = a1; for ( i = (int *)a2; *(_BYTE *)i; i = (int *)((char *)i + 1) ) { if ( !strchr("-+ #0", *(_BYTE *)i) ) break; } if ( (char *)i - a2 >= 6 ) sub_5F6700(v3, (int)"invalid format (repeated flags)", v7); if ( isdigit(*(_BYTE *)i) ) i = (int *)((char *)i + 1); if ( isdigit(*(_BYTE *)i) ) i = (int *)((char *)i + 1); if ( *(_BYTE *)i == 46 ) { v5 = *((_BYTE *)i + 1); i = (int *)((char *)i + 1); if ( isdigit(v5) ) i = (int *)((char *)i + 1); if ( isdigit(*(_BYTE *)i) ) i = (int *)((char *)i + 1); } if ( isdigit(*(_BYTE *)i) ) sub_5F6700(v3, (int)"invalid format (width or precision too long)", v7); *(_BYTE *)a3 = 37; v8 = (void *)(a3 + 1); memmove(v8, a2, (char *)i - a2 + 1); *((_BYTE *)v8 + (char *)i - a2 + 1) = 0; return i; } //----- (0060B2E0) -------------------------------------------------------- int __thiscall sub_60B2E0(const char *this, const char *a2) { unsigned int v2; // edi@1 unsigned int v3; // eax@1 const char *v4; // edx@1 const char v5; // bl@1 int v6; // esi@1 const char v7; // dl@2 int result; // eax@3 v2 = strlen(a2); v3 = strlen(this); v4 = &a2[v2 - 1]; v5 = *v4; v6 = v4 - this; do { v7 = *this; this[v6] = *this; ++this; } while ( v7 ); result = v2 + v3; a2[result - 1] = v5; a2[result] = 0; return result; } //----- (0060B330) -------------------------------------------------------- int __cdecl sub_60B330(int a1) { int v1; // esi@1 int v2; // ebx@1 const void *v3; // ebx@6 int *v4; // eax@12 signed int v5; // eax@13 double v6; // st7@14 double v7; // st7@14 double v8; // st7@18 double v9; // st7@18 int result; // eax@31 double v11; // [sp+0h] [bp-25Ch]@21 unsigned int v12; // [sp+14h] [bp-248h]@25 int v13; // [sp+18h] [bp-244h]@1 int v14; // [sp+1Ch] [bp-240h]@1 int v15; // [sp+20h] [bp-23Ch]@1 __int64 v16; // [sp+24h] [bp-238h]@10 char *v17; // [sp+2Ch] [bp-230h]@10 int v18; // [sp+30h] [bp-22Ch]@10 size_t v19; // [sp+34h] [bp-228h]@1 unsigned int v20; // [sp+38h] [bp-224h]@3 unsigned int v21; // [sp+3Ch] [bp-220h]@3 char v22; // [sp+244h] [bp-18h]@12 unsigned int v23; // [sp+258h] [bp-4h]@1 int v24; // [sp+25Ch] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v14 = sub_5F3E50(a1); v1 = 1; v2 = sub_5F79F0(a1, 1, (int)&v13); v15 = v2 + v13; sub_5F6B90(a1, (int)&v19); if ( v2 >= (unsigned int)v15 ) { LABEL_31: sub_5F6AA0((int)&v19); return 1; } while ( *(_BYTE *)v2 != 37 ) { if ( v21 >= v20 ) sub_5F69A0((int)&v19, 1u); *(_BYTE *)(v19 + v21++) = *(_BYTE *)v2++; LABEL_30: if ( v2 >= (unsigned int)v15 ) goto LABEL_31; } v3 = (const void *)(v2 + 1); if ( *(_BYTE *)v3 == 37 ) { if ( v21 >= v20 ) sub_5F69A0((int)&v19, 1u); *(_BYTE *)(v19 + v21++) = *(_BYTE *)v3; v2 = (int)((char *)v3 + 1); goto LABEL_30; } ++v1; v17 = (char *)sub_5F69A0((int)&v19, 0x200u); v18 = 0; HIDWORD(v16) = v1; if ( v1 > v14 ) sub_5F7800(a1, v1); v4 = sub_60B200(a1, v3, (int)&v22); v2 = (int)((char *)v4 + 1); switch ( *(_BYTE *)v4 ) { case 99: v5 = sub_5F7B50(a1, v1); v18 = sprintf(v17, &v22, v5); goto LABEL_29; case 100: case 105: v6 = sub_5F7AB0(a1, v1); v18 = (signed int)v6; v7 = v6 - (double)(signed int)v6; if ( v7 <= -1.0 || v7 >= 1.0 ) sub_5F7800(a1, v1); sub_60B2E0("l", &v22); v18 = sprintf(v17, &v22, v18); goto LABEL_29; case 88: case 111: case 117: case 120: v8 = sub_5F7AB0(a1, v1); v16 = (signed __int64)v8; HIDWORD(v16) = (signed __int64)v8; v18 = (signed __int64)v8; v9 = v8 - (double)(unsigned int)v18; if ( v9 <= -1.0 || v9 >= 1.0 ) sub_5F7800(a1, v1); sub_60B2E0("l", &v22); LODWORD(v11) = HIDWORD(v16); goto LABEL_22; case 65: case 69: case 71: case 97: case 101: case 102: case 103: sub_60B2E0(byte_6A492E, &v22); v11 = sub_5F7AB0(a1, v1); LABEL_22: v18 = sprintf(v17, &v22, *(_QWORD *)&v11); goto LABEL_29; case 113: sub_60B0C0(v1, (int)&v19, a1); v1 = HIDWORD(v16); goto LABEL_29; case 115: HIDWORD(v16) = sub_5F7190(a1, v1, (int)&v12); if ( strchr(&v22, 46) || v12 < 0x64 ) { v18 = sprintf(v17, &v22, HIDWORD(v16)); sub_5F3E70(a1, -2); } else { sub_5F6B20((size_t)&v19); } LABEL_29: v21 += v18; goto LABEL_30; default: result = sub_5F6700(a1, (int)"invalid option '%%%c' to 'format'", *(_BYTE *)v4); break; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0060B740) -------------------------------------------------------- signed int __cdecl sub_60B740(signed int a1) { sub_5F51C0(a1, 0, 14); sub_5F7C40(a1, (int)&off_6FF938, 0); sub_5F51C0(a1, 0, 1); sub_5F4D30(a1, byte_6A492E, 0); sub_5F4140(a1, -2); sub_5F5620(a1, -2); sub_5F3E70(a1, -2); sub_5F4140(a1, -2); sub_5F53F0(a1, -2, "__index"); sub_5F3E70(a1, -2); return 1; } // 6FF938: using guessed type char *off_6FF938; //----- (0060B7C0) -------------------------------------------------------- int __usercall sub_60B7C0(int a1, double a2) { double v2; // st7@1 signed int v3; // eax@1 int v5; // [sp+10h] [bp-4h]@1 v2 = frexp(a2, &v5); v3 = v5 + (signed int)(v2 * 2147482623.0); if ( v3 < 0 ) { if ( v3 == -v3 ) v3 = 0; v3 = -v3; } return *(_DWORD *)(a1 + 16) + 24 * v3 % (((1 << *(_BYTE *)(a1 + 7)) - 1) | 1); } //----- (0060B820) -------------------------------------------------------- int __usercall sub_60B820(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int result; // eax@4 int v5; // ebx@5 v2 = a1; v3 = *(_DWORD *)(a2 + 4); if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; switch ( v3 & 0x3F ) { case 3: result = sub_60B7C0(v2, *(double *)a2); break; case 0x14: v5 = *(_DWORD *)a2; if ( !*(_BYTE *)(*(_DWORD *)a2 + 6) ) { *(_DWORD *)(v5 + 8) = sub_609300(v5 + 16, *(_DWORD *)(v5 + 12), *(_DWORD *)(v5 + 8)); *(_BYTE *)(v5 + 6) = 1; } goto LABEL_7; case 4: LABEL_7: result = *(_DWORD *)(v2 + 16) + 24 * (*(_DWORD *)(*(_DWORD *)a2 + 8) & ((1 << *(_BYTE *)(v2 + 7)) - 1)); break; case 1: result = *(_DWORD *)(v2 + 16) + 24 * (*(_DWORD *)a2 & ((1 << *(_BYTE *)(v2 + 7)) - 1)); break; case 2: result = *(_DWORD *)(v2 + 16) + 24 * *(_DWORD *)a2 % (((1 << *(_BYTE *)(v2 + 7)) - 1) | 1u); break; case 0x16: result = *(_DWORD *)(v2 + 16) + 24 * *(_DWORD *)a2 % (((1 << *(_BYTE *)(v2 + 7)) - 1) | 1u); break; default: result = *(_DWORD *)(v2 + 16) + 24 * *(_DWORD *)a2 % (((1 << *(_BYTE *)(v2 + 7)) - 1) | 1u); break; } return result; } //----- (0060B960) -------------------------------------------------------- int __usercall sub_60B960(int a1, int a2, int a3) { int v3; // edi@1 int v4; // eax@1 int result; // eax@2 double v6; // ST14_8@4 int v7; // esi@8 int v8; // eax@10 int v9; // eax@15 signed int v10; // [sp+Ch] [bp-4h]@4 v3 = a1; v4 = *(_DWORD *)(a1 + 4); if ( v4 == 2146936064 ) { result = -1; } else { if ( (v4 & 0x7FFFFF00) == 2146936064 || (v6 = *(double *)v3, v10 = (signed int)v6, v6 != (double)(signed int)v6) || v10 <= 0 || v10 > *(_DWORD *)(a2 + 28) ) { v7 = sub_60B820(a2, v3); while ( 1 ) { v8 = (*(_DWORD *)(v7 + 12) & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)(*(_DWORD *)(v7 + 12) == *(_DWORD *)(v3 + 4)) : (unsigned __int8)((*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064); if ( v8 && sub_60E2F0(0, v7 + 8, (int *)v3) ) break; if ( *(_DWORD *)(v7 + 12) == 2146936075 ) { v9 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 && *(_DWORD *)(v7 + 8) == *(_DWORD *)v3 ) break; } v7 = *(_DWORD *)(v7 + 16); if ( !v7 ) { loc_5FC640(a3, "invalid key to 'next'"); break; } } result = *(_DWORD *)(a2 + 28) + (v7 - *(_DWORD *)(a2 + 16)) / 24; } else { result = v10 - 1; } } return result; } //----- (0060BA80) -------------------------------------------------------- signed int __cdecl sub_60BA80(int a1, int a2, int a3) { int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 int v6; // edx@2 int v7; // eax@5 signed int v8; // edx@5 int v9; // edi@6 int v10; // ecx@6 signed int result; // eax@9 int v12; // ebx@10 int v13; // eax@11 int v14; // ecx@11 v3 = sub_60B960(a3, a2, a1); v4 = *(_DWORD *)(a2 + 28); v5 = v3 + 1; if ( v5 >= v4 ) { LABEL_5: v7 = v5 - v4; v8 = 1 << *(_BYTE *)(a2 + 7); if ( v7 >= v8 ) { LABEL_9: result = 0; } else { v9 = *(_DWORD *)(a2 + 16); v10 = v9 + 24 * v7 + 4; while ( *(_DWORD *)v10 == 2146936064 ) { ++v7; v10 += 24; if ( v7 >= v8 ) goto LABEL_9; } v13 = 24 * v7; *(_DWORD *)a3 = *(_DWORD *)(v9 + v13 + 8); *(_DWORD *)(a3 + 4) = *(_DWORD *)(v9 + v13 + 12); v14 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a3 + 8) = *(_DWORD *)(v14 + v13); *(_DWORD *)(a3 + 12) = *(_DWORD *)(v14 + v13 + 4); result = 1; } } else { v6 = *(_DWORD *)(a2 + 12) + 8 * v5 + 4; while ( *(_DWORD *)v6 == 2146936064 ) { ++v5; v6 += 8; if ( v5 >= v4 ) goto LABEL_5; } *(double *)a3 = (double)(v5 + 1); v12 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a3 + 8) = *(_DWORD *)(v12 + 8 * v5); *(_DWORD *)(a3 + 12) = *(_DWORD *)(v12 + 8 * v5 + 4); result = 1; } return result; } //----- (0060BB40) -------------------------------------------------------- int __cdecl sub_60BB40(int a1, int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // edi@1 signed int v5; // ecx@1 int result; // eax@8 int v7; // [sp+10h] [bp-4h]@2 v2 = 0; v3 = 0; v4 = 0; v5 = 1; if ( *(_DWORD *)a2 <= 0 ) { *(_DWORD *)a2 = 0; result = 0; } else { v7 = a1; while ( 1 ) { if ( *(_DWORD *)v7 > 0 ) { v2 += *(_DWORD *)v7; if ( v2 > v5 / 2 ) { v4 = v5; v3 = v2; } } if ( v2 == *(_DWORD *)a2 ) break; v7 += 4; v5 *= 2; if ( v5 / 2 >= *(_DWORD *)a2 ) { *(_DWORD *)a2 = v4; return v3; } } *(_DWORD *)a2 = v4; result = v3; } return result; } //----- (0060BBC0) -------------------------------------------------------- int __cdecl sub_60BBC0(int a1, int a2) { signed int v2; // edi@1 signed int v3; // eax@1 signed int v4; // edx@1 signed int v5; // esi@2 int v6; // ebx@2 signed int v7; // ecx@2 int v8; // ecx@6 int v9; // esi@6 int v11; // [sp+Ch] [bp-4h]@1 v2 = 0; v3 = 1; v11 = 0; v4 = 1; do { v5 = *(_DWORD *)(a1 + 28); v6 = 0; v7 = v4; if ( v4 <= v5 ) { if ( v3 > v4 ) goto LABEL_10; } else { v7 = *(_DWORD *)(a1 + 28); if ( v3 > v5 ) return v11; } v8 = v7 - v3 + 1; v9 = *(_DWORD *)(a1 + 12) + 8 * v3 - 4; v3 += v8; do { if ( *(_DWORD *)v9 != 2146936064 ) ++v6; v9 += 8; --v8; } while ( v8 ); LABEL_10: *(_DWORD *)(a2 + 4 * v2) += v6; v11 += v6; ++v2; v4 *= 2; } while ( v2 <= 30 ); return v11; } //----- (0060BC30) -------------------------------------------------------- int __usercall sub_60BC30(int a1, int a2, int a3) { signed int v3; // esi@1 int v4; // edi@2 int v5; // eax@3 double v6; // ST0C_8@5 int v7; // eax@7 signed int v8; // eax@7 int result; // eax@11 int v10; // [sp+Ch] [bp-Ch]@5 int v11; // [sp+10h] [bp-8h]@1 int v12; // [sp+14h] [bp-4h]@1 v3 = 1 << *(_BYTE *)(a1 + 7); v11 = 0; v12 = 0; if ( v3 ) { v4 = 24 * v3; do { v5 = *(_DWORD *)(a1 + 16); v4 -= 24; --v3; if ( *(_DWORD *)(v5 + v4 + 4) != 2146936064 ) { if ( (*(_DWORD *)(v5 + v4 + 12) & 0x7FFFFF00) == 2146936064 || (v6 = *(double *)(v5 + v4 + 8), v10 = (signed int)v6, v6 != (double)(signed int)v6) || (unsigned int)(v10 - 1) > 0x3FFFFFFF ) { v8 = 0; } else { v7 = sub_604510(v10); ++*(_DWORD *)(a2 + 4 * v7); v8 = 1; } v12 += v8; ++v11; } } while ( v3 ); *(_DWORD *)a3 += v12; result = v11; } else { *(_DWORD *)a3 = *(_DWORD *)a3; result = 0; } return result; } //----- (0060BD00) -------------------------------------------------------- int __usercall sub_60BD00(int a1, int a2, int a3) { int result; // eax@3 if ( (unsigned int)(a2 + 1) > 0x1FFFFFFF ) a1 = loc_603720(a1); *(_DWORD *)(a3 + 12) = sub_603740(a1, *(_DWORD *)(a3 + 12), 8 * *(_DWORD *)(a3 + 28), 8 * a2); for ( result = *(_DWORD *)(a3 + 28); result < a2; ++result ) *(_DWORD *)(*(_DWORD *)(a3 + 12) + 8 * result + 4) = 2146936064; *(_DWORD *)(a3 + 28) = a2; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060BD50) -------------------------------------------------------- int __usercall sub_60BD50(int a1, int a2, int a3) { int v3; // esi@1 int v4; // ebx@1 int v5; // eax@3 int v6; // ecx@8 int v7; // edx@8 int v8; // eax@9 int v9; // ecx@10 int result; // eax@10 char v11; // [sp+8h] [bp-4h]@2 v3 = a1; v4 = a2; if ( a1 ) { v5 = sub_604510(a1); v11 = v5; if ( v5 > 30 ) LOBYTE(v5) = loc_5FC640(v4, "table overflow"); v3 = 1 << v5; if ( (1 << v5) + 1 > (unsigned int)&unk_AAAAAAA ) loc_603720(v4); *(_DWORD *)(a3 + 16) = sub_603740(v4, 0, 0, 24 * v3); if ( v3 > 0 ) { v6 = 0; v7 = v3; do { v8 = *(_DWORD *)(a3 + 16); *(_DWORD *)(v8 + v6 + 16) = 0; *(_DWORD *)(v8 + v6 + 12) = 2146936064; *(_DWORD *)(v8 + v6 + 4) = 2146936064; v6 += 24; --v7; } while ( v7 ); } } else { *(_DWORD *)(a3 + 16) = &unk_6FFC88; v11 = 0; } v9 = *(_DWORD *)(a3 + 16); result = 3 * v3; *(_BYTE *)(a3 + 7) = v11; *(_DWORD *)(a3 + 20) = v9 + 24 * v3; return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060BE10) -------------------------------------------------------- int __cdecl sub_60BE10(int a1) { int result; // eax@1 result = sub_5FE250(a1, 5, 32, 0, 0); *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 28) = 0; *(_DWORD *)(result + 16) = &unk_6FFC88; *(_WORD *)(result + 6) = 255; *(_DWORD *)(result + 20) = &unk_6FFC88; return result; } //----- (0060BE50) -------------------------------------------------------- int __cdecl sub_60BE50(int a1, int a2) { _UNKNOWN *v2; // edx@1 v2 = *(_UNKNOWN **)(a2 + 16); if ( v2 != &unk_6FFC88 ) sub_603740(a1, v2, 24 * (1 << *(_BYTE *)(a2 + 7)), 0); sub_603740(a1, *(_DWORD *)(a2 + 12), 8 * *(_DWORD *)(a2 + 28), 0); return sub_603740(a1, a2, 32, 0); } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060BEB0) -------------------------------------------------------- int __cdecl sub_60BEB0(int a1, signed int a2) { int result; // eax@2 int v3; // ecx@3 double v4; // [sp+Ch] [bp-8h]@3 if ( (unsigned int)(a2 - 1) >= *(_DWORD *)(a1 + 28) ) { v4 = (double)a2; v3 = sub_60B7C0(a1, v4); while ( (*(_DWORD *)(v3 + 12) & 0x7FFFFF00) == 2146936064 || v4 != *(double *)(v3 + 8) ) { v3 = *(_DWORD *)(v3 + 16); if ( !v3 ) return (int)&unk_6FF0E0; } result = v3; } else { result = *(_DWORD *)(a1 + 12) + 8 * a2 - 8; } return result; } //----- (0060BF30) -------------------------------------------------------- int __cdecl sub_60BF30(int a1, int a2) { int result; // eax@1 result = *(_DWORD *)(a1 + 16) + 24 * (*(_DWORD *)(a2 + 8) & ((1 << *(_BYTE *)(a1 + 7)) - 1)); while ( *(_DWORD *)(result + 12) != 2146936132 || *(_DWORD *)(result + 8) != a2 ) { result = *(_DWORD *)(result + 16); if ( !result ) return (int)&unk_6FF0E0; } return result; } //----- (0060BF70) -------------------------------------------------------- int __cdecl sub_60BF70(int a1, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // eax@3 int v5; // eax@4 int result; // eax@6 int v7; // esi@9 int v8; // eax@11 signed int v9; // [sp+18h] [bp+Ch]@7 v2 = a2; v3 = *(_DWORD *)(a2 + 4); if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = v3 & 0x3F; if ( v4 ) { v5 = v4 - 3; if ( v5 ) { if ( v5 == 1 ) return sub_60BF30(a1, *(_DWORD *)a2); } else { v9 = (signed int)*(double *)a2; if ( *(double *)v2 == (double)v9 ) return sub_60BEB0(a1, v9); } v7 = sub_60B820(a1, v2); while ( 1 ) { v8 = (*(_DWORD *)(v7 + 12) & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)(*(_DWORD *)(v7 + 12) == *(_DWORD *)(v2 + 4)) : (unsigned __int8)((*(_DWORD *)(v2 + 4) & 0x7FFFFF00) != 2146936064); if ( v8 && sub_60E2F0(0, v7 + 8, (int *)v2) ) break; v7 = *(_DWORD *)(v7 + 16); if ( !v7 ) return (int)&unk_6FF0E0; } result = v7; } else { result = (int)&unk_6FF0E0; } return result; } //----- (0060C070) -------------------------------------------------------- int __cdecl sub_60C070(int a1, int a2, int a3) { int result; // eax@1 result = sub_60BF70(a2, a3); if ( (_UNKNOWN *)result == &unk_6FF0E0 ) result = sub_60C560(a1, a2, a3); return result; } // 60C560: using guessed type _DWORD __cdecl sub_60C560(_DWORD, _DWORD, _DWORD); //----- (0060C0A0) -------------------------------------------------------- int __usercall sub_60C0A0(int a1, int a2) { int v2; // edi@1 int v3; // ecx@3 double v4; // ST1C_8@4 signed int v5; // eax@4 signed int i; // esi@15 unsigned int v8; // esi@19 double v9; // [sp+14h] [bp-1Ch]@4 int v10; // [sp+24h] [bp-Ch]@4 int v11; // [sp+28h] [bp-8h]@4 unsigned int v12; // [sp+2Ch] [bp-4h]@1 int v13; // [sp+38h] [bp+8h]@1 v12 = a2; v2 = a2 + 1; v13 = a2 + 1; while ( 1 ) { if ( (unsigned int)(v2 - 1) >= *(_DWORD *)(a1 + 28) ) { v9 = (double)v13; v4 = frexp(v9, &v10) * 2147482623.0; v5 = v10 + (signed int)v4; v11 = v10 + (signed int)v4; if ( v10 + (signed int)v4 < 0 ) { if ( v5 == -v5 ) v5 = 0; v5 = -v5; v11 = v5; } v3 = *(_DWORD *)(a1 + 16) + 24 * v5 % (((1 << *(_BYTE *)(a1 + 7)) - 1) | 1); while ( (*(_DWORD *)(v3 + 12) & 0x7FFFFF00) == 2146936064 || v9 != *(double *)(v3 + 8) ) { v3 = *(_DWORD *)(v3 + 16); if ( !v3 ) { v3 = (int)&unk_6FF0E0; break; } } } else { v3 = *(_DWORD *)(a1 + 12) + 8 * v2 - 8; } if ( *(_DWORD *)(v3 + 4) == 2146936064 ) break; v12 = v2; v2 *= 2; v13 = v2; if ( (unsigned int)v2 > 0x7FFFFFFD ) { for ( i = 1; *(_DWORD *)(sub_60BEB0(a1, i) + 4) != 2146936064; ++i ) ; return i - 1; } } while ( v2 - v12 > 1 ) { v8 = (v12 + v2) >> 1; if ( *(_DWORD *)(sub_60BEB0(a1, (v12 + v2) >> 1) + 4) == 2146936064 ) v2 = v8; else v12 = v8; } return v12; } //----- (0060C1F0) -------------------------------------------------------- unsigned int __cdecl sub_60C1F0(int a1) { unsigned int result; // eax@1 int v2; // esi@2 unsigned int v3; // edx@3 result = *(_DWORD *)(a1 + 28); if ( result && (v2 = *(_DWORD *)(a1 + 12), *(_DWORD *)(v2 + 8 * result - 4) == 2146936064) ) { v3 = 0; if ( result > 1 ) { do { if ( *(_DWORD *)(v2 + 8 * ((v3 + result) >> 1) - 4) == 2146936064 ) result = (v3 + result) >> 1; else v3 = (v3 + result) >> 1; } while ( result - v3 > 1 ); } result = v3; } else { if ( *(_UNKNOWN **)(a1 + 16) != &unk_6FFC88 ) result = sub_60C0A0(a1, *(_DWORD *)(a1 + 28)); } return result; } //----- (0060C250) -------------------------------------------------------- signed int __cdecl sub_60C250(int a1, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // esi@1 int v6; // ecx@1 int v7; // edx@1 int v8; // edi@3 int v9; // edi@4 int v10; // ebx@5 int v11; // eax@6 signed int result; // eax@13 int v13; // edi@13 int v14; // ebx@14 int v15; // eax@16 double v16; // [sp+Ch] [bp-1Ch]@7 int v17; // [sp+14h] [bp-14h]@1 int v18; // [sp+18h] [bp-10h]@4 int v19; // [sp+1Ch] [bp-Ch]@4 int v20; // [sp+20h] [bp-8h]@1 int v21; // [sp+24h] [bp-4h]@1 signed int v22; // [sp+34h] [bp+Ch]@4 signed int v23; // [sp+34h] [bp+Ch]@13 int v24; // [sp+38h] [bp+10h]@4 v4 = a3; v5 = a2; v6 = *(_BYTE *)(a2 + 7); v7 = *(_DWORD *)(a2 + 16); v21 = *(_DWORD *)(a2 + 28); v17 = v6; v20 = v7; if ( a3 > v21 ) sub_60BD00(a1, a3, a2); sub_60BD50(a4, a1, a2); v8 = v21; if ( a3 < v21 ) { v19 = a3 + 1; v22 = a3 + 1; *(_DWORD *)(v5 + 28) = a3; v18 = 8 * a3; v24 = 8 * a3; v9 = v8 - v4; do { v10 = v24 + *(_DWORD *)(v5 + 12); if ( *(_DWORD *)(v10 + 4) != 2146936064 ) { v11 = sub_60BEB0(v5, v22); if ( (_UNKNOWN *)v11 == &unk_6FF0E0 ) { v16 = (double)v22; v11 = sub_60C560(a1, v5, &v16); } *(_DWORD *)v11 = *(_DWORD *)v10; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v10 + 4); } v24 += 8; ++v22; --v9; } while ( v9 ); if ( (unsigned int)v19 > 0x1FFFFFFF ) loc_603720(a1); *(_DWORD *)(v5 + 12) = sub_603740(a1, *(_DWORD *)(v5 + 12), 8 * v21, v18); } result = 1 << v17; v13 = (1 << v17) - 1; v23 = 1 << v17; if ( v13 >= 0 ) { v14 = v20 + 24 * v13 + 8; do { if ( *(_DWORD *)(v14 - 4) != 2146936064 ) { v15 = sub_60BF70(v5, v14); if ( (_UNKNOWN *)v15 == &unk_6FF0E0 ) v15 = sub_60C560(a1, v5, v14); *(_DWORD *)v15 = *(_DWORD *)(v14 - 8); *(_DWORD *)(v15 + 4) = *(_DWORD *)(v14 - 4); result = v23; } v14 -= 24; --v13; } while ( v13 >= 0 ); } if ( (_UNKNOWN *)v20 != &unk_6FFC88 ) result = sub_603740(a1, v20, 24 * result, 0); return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); // 60C250: using guessed type _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); // 60C560: using guessed type _DWORD __cdecl sub_60C560(_DWORD, _DWORD, _DWORD); //----- (0060C3C0) -------------------------------------------------------- int __cdecl sub_60C3C0(int a1, int a2, int a3) { int result; // eax@2 if ( *(_UNKNOWN **)(a2 + 16) == &unk_6FFC88 ) result = sub_60C250(a1, a2, a3, 0); else result = sub_60C250(a1, a2, a3, 1 << *(_BYTE *)(a2 + 7)); return result; } // 60C250: using guessed type _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060C410) -------------------------------------------------------- int __usercall sub_60C410(int a1, int a2, int a3) { int v3; // ebx@1 int v4; // esi@1 double v5; // ST20_8@2 int v6; // eax@5 signed int v7; // eax@5 int v8; // eax@7 int v10; // [sp+14h] [bp-88h]@2 int v11; // [sp+18h] [bp-84h]@1 int v12; // [sp+1Ch] [bp-80h]@1 int v13; // [sp+20h] [bp-7Ch]@1 int v14; // [sp+24h] [bp-78h]@1 int v15; // [sp+28h] [bp-74h]@1 int v16; // [sp+2Ch] [bp-70h]@1 int v17; // [sp+30h] [bp-6Ch]@1 int v18; // [sp+34h] [bp-68h]@1 int v19; // [sp+38h] [bp-64h]@1 int v20; // [sp+3Ch] [bp-60h]@1 int v21; // [sp+40h] [bp-5Ch]@1 int v22; // [sp+44h] [bp-58h]@1 int v23; // [sp+48h] [bp-54h]@1 int v24; // [sp+4Ch] [bp-50h]@1 int v25; // [sp+50h] [bp-4Ch]@1 int v26; // [sp+54h] [bp-48h]@1 int v27; // [sp+58h] [bp-44h]@1 int v28; // [sp+5Ch] [bp-40h]@1 int v29; // [sp+60h] [bp-3Ch]@1 int v30; // [sp+64h] [bp-38h]@1 int v31; // [sp+68h] [bp-34h]@1 int v32; // [sp+6Ch] [bp-30h]@1 int v33; // [sp+70h] [bp-2Ch]@1 int v34; // [sp+74h] [bp-28h]@1 int v35; // [sp+78h] [bp-24h]@1 int v36; // [sp+7Ch] [bp-20h]@1 int v37; // [sp+80h] [bp-1Ch]@1 int v38; // [sp+84h] [bp-18h]@1 int v39; // [sp+88h] [bp-14h]@1 int v40; // [sp+8Ch] [bp-10h]@1 int v41; // [sp+90h] [bp-Ch]@1 int v42; // [sp+94h] [bp-8h]@1 unsigned int v43; // [sp+98h] [bp-4h]@1 int v44; // [sp+9Ch] [bp+0h]@1 v43 = (unsigned int)&v44 ^ __security_cookie; v3 = a1; 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; v41 = 0; v42 = 0; v11 = sub_60BBC0(a1, (int)&v12); v4 = sub_60BC30(v3, (int)&v12, (int)&v11) + v11; if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) == 2146936064 || (v5 = *(double *)a2, v10 = (signed int)v5, v5 != (double)(signed int)v5) || v10 <= 0 || v10 > 1073741824 ) { v7 = 0; } else { v6 = sub_604510(v10); ++*(&v12 + v6); v7 = 1; } v11 += v7; v8 = sub_60BB40((int)&v12, (int)&v11); return sub_60C250(a3, v3, v11, v4 - v8 + 1); } // 60C250: using guessed type _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0060C560) -------------------------------------------------------- int __cdecl sub_60C560(int a1, int a2, int a3) { int v3; // edi@1 int v4; // eax@1 int v5; // ebx@3 int v6; // eax@3 int v7; // esi@3 int v8; // ebx@6 int result; // eax@11 int v10; // eax@13 int v11; // eax@19 v3 = a3; v4 = *(_DWORD *)(a3 + 4); if ( v4 == 2146936064 ) loc_5FC640(a1, "table index is nil"); v5 = a2; v6 = sub_60B820(a2, a3); v7 = v6; if ( *(_DWORD *)(v6 + 4) != 2146936064 || (_UNKNOWN *)v6 == &unk_6FFC88 ) { if ( *(_DWORD *)(a2 + 20) <= *(_DWORD *)(a2 + 16) ) goto LABEL_11; while ( 1 ) { *(_DWORD *)(v5 + 20) -= 24; v8 = *(_DWORD *)(v5 + 20); if ( *(_DWORD *)(v8 + 12) == 2146936064 ) break; v5 = a2; if ( *(_DWORD *)(a2 + 20) <= *(_DWORD *)(a2 + 16) ) goto LABEL_11; } if ( !v8 ) { v5 = a2; LABEL_11: sub_60C410(v5, a3, a1); result = sub_60BF70(v5, a3); if ( (_UNKNOWN *)result == &unk_6FF0E0 ) result = sub_60C560(a1, v5, a3); return result; } v10 = sub_60B820(a2, v6 + 8); if ( v10 == v7 ) { *(_DWORD *)(v8 + 16) = *(_DWORD *)(v7 + 16); *(_DWORD *)(v7 + 16) = v8; v7 = v8; } else { for ( ; *(_DWORD *)(v10 + 16) != v7; v10 = *(_DWORD *)(v10 + 16) ) ; *(_DWORD *)(v10 + 16) = v8; *(_DWORD *)v8 = *(_DWORD *)v7; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v7 + 12); *(_DWORD *)(v8 + 16) = *(_DWORD *)(v7 + 16); *(_DWORD *)(v8 + 20) = *(_DWORD *)(v7 + 20); *(_DWORD *)(v7 + 16) = 0; *(_DWORD *)(v7 + 4) = 2146936064; } v5 = a2; v3 = a3; } *(_DWORD *)(v7 + 8) = *(_DWORD *)v3; *(_DWORD *)(v7 + 12) = *(_DWORD *)(v3 + 4); v11 = *(_DWORD *)(v3 + 4); if ( (*(_DWORD *)(v3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v11) = 3; if ( v11 & 0x40 && *(_BYTE *)(*(_DWORD *)v3 + 5) & 3 && *(_BYTE *)(v5 + 5) & 4 ) sub_5FE230(a1, v5); return v7; } // 60C560: using guessed type _DWORD __cdecl sub_60C560(_DWORD, _DWORD, _DWORD); //----- (0060C6F0) -------------------------------------------------------- int __cdecl sub_60C6F0(int a1, int a2, signed int a3, int a4) { int result; // eax@1 double v5; // [sp+4h] [bp-8h]@2 result = sub_60BEB0(a2, a3); if ( (_UNKNOWN *)result == &unk_6FF0E0 ) { v5 = (double)a3; result = sub_60C560(a1, a2, &v5); } *(_DWORD *)result = *(_DWORD *)a4; *(_DWORD *)(result + 4) = *(_DWORD *)(a4 + 4); return result; } // 60C560: using guessed type _DWORD __cdecl sub_60C560(_DWORD, _DWORD, _DWORD); //----- (0060C740) -------------------------------------------------------- int __cdecl sub_60C740(int a1) { int v1; // esi@1 int v2; // eax@1 signed int v4; // eax@4 bool v5; // zf@4 bool v6; // sf@4 unsigned __int8 v7; // of@4 char v8; // [sp+0h] [bp-Ch]@0 signed int v9; // [sp+8h] [bp-4h]@4 sub_5F7960(a1, 1, 5); v1 = sub_5F7140(a1, 1) + 1; v2 = sub_5F3E50(a1) - 2; if ( !v2 ) { v4 = v1; LABEL_10: sub_5F5560(a1, 1, v4); return 0; } if ( v2 != 1 ) return sub_5F6700(a1, (int)"wrong number of arguments to 'insert'", v8); v4 = sub_5F7B50(a1, 2); v9 = v4; v7 = __OFSUB__(v1, v4); v5 = v1 == v4; v6 = v1 - v4 < 0; if ( v1 < v4 ) { v1 = v4; v7 = 0; v5 = 1; v6 = 0; } if ( (unsigned __int8)(v6 ^ v7) | v5 ) goto LABEL_10; do { sub_5F5140(a1, 1, v1 - 1); sub_5F5560(a1, 1, v1--); } while ( v1 > v9 ); sub_5F5560(a1, 1, v9); return 0; } //----- (0060C7F0) -------------------------------------------------------- signed int __cdecl sub_60C7F0(int a1) { signed int v1; // eax@1 signed int v2; // ebx@1 signed int v3; // eax@1 signed int v4; // esi@1 signed int result; // eax@6 signed int v6; // [sp+Ch] [bp-4h]@1 sub_5F7960(a1, 1, 5); v1 = sub_5F7140(a1, 1); v2 = v1; v6 = v1; v3 = sub_5F7C10(a1, 2, v1); v4 = v3; if ( v3 < 1 || v3 > v2 ) { result = 0; } else { sub_5F5140(a1, 1, v3); if ( v4 < v2 ) { do { sub_5F5140(a1, 1, v4 + 1); sub_5F5560(a1, 1, v4++); } while ( v4 < v6 ); v2 = v6; } sub_5F4C60(a1); sub_5F5560(a1, 1, v2); result = 1; } return result; } //----- (0060C890) -------------------------------------------------------- signed int __cdecl sub_60C890(int a1) { signed int v1; // edi@1 signed int v2; // eax@2 signed int v3; // ebx@4 bool i; // zf@4 int v5; // eax@5 int v6; // eax@6 char v7; // al@6 int v8; // eax@9 int v9; // eax@10 char v10; // al@10 size_t v12; // [sp+Ch] [bp-21Ch]@1 void *v13; // [sp+10h] [bp-218h]@1 int v14; // [sp+14h] [bp-214h]@4 unsigned int v15; // [sp+224h] [bp-4h]@1 int v16; // [sp+228h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v13 = (void *)sub_5F7A50(a1, 2, byte_6A492E, (int)&v12); sub_5F7960(a1, 1, 5); v1 = sub_5F7C10(a1, 3, 1); if ( sub_5F41F0(a1, 4) > 0 ) v2 = sub_5F7B50(a1, 4); else v2 = sub_5F7140(a1, 1); v3 = v2; sub_5F6B90(a1, (int)&v14); for ( i = v1 == v3; v1 < v3; i = v1 == v3 ) { sub_5F5140(a1, 1, v1); LOBYTE(v5) = sub_5F43A0(a1, -1); if ( !v5 ) { v6 = sub_5F41F0(a1, -1); v7 = sub_5F4280(a1, v6); sub_5F6700(a1, (int)"invalid value (%s) at index %d in table for 'concat'", v7); } sub_5F6B20((size_t)&v14); sub_5F6A30((int)&v14, v13, v12); ++v1; } if ( i ) { sub_5F5140(a1, 1, v1); LOBYTE(v8) = sub_5F43A0(a1, -1); if ( !v8 ) { v9 = sub_5F41F0(a1, -1); v10 = sub_5F4280(a1, v9); sub_5F6700(a1, (int)"invalid value (%s) at index %d in table for 'concat'", v10); } sub_5F6B20((size_t)&v14); } sub_5F6AA0((int)&v14); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0060C9F0) -------------------------------------------------------- signed int __cdecl sub_60C9F0(int a1) { signed int v1; // edi@1 v1 = sub_5F3E50(a1); sub_5F51C0(a1, v1, 1); sub_5F4CC0(a1, v1); sub_5F53F0(a1, -2, "n"); if ( v1 > 0 ) { sub_5F4140(a1, 1); sub_5F5560(a1, -2, 1); sub_5F4090(a1, 1); for ( ; v1 >= 2; --v1 ) sub_5F5560(a1, 1, v1); } return 1; } //----- (0060CA70) -------------------------------------------------------- int __cdecl sub_60CA70(int a1) { signed int v1; // esi@1 signed int v2; // eax@2 signed int v3; // ebx@4 int result; // eax@5 char v5; // [sp+0h] [bp-10h]@0 int v6; // [sp+Ch] [bp-4h]@6 sub_5F7960(a1, 1, 5); v1 = sub_5F7C10(a1, 2, 1); if ( sub_5F41F0(a1, 3) > 0 ) v2 = sub_5F7B50(a1, 3); else v2 = sub_5F7140(a1, 1); v3 = v2; if ( v1 <= v2 ) { v6 = v2 - v1 + 1; if ( v6 > 0 && sub_5F3D20(a1, v2 - v1 + 1) ) { sub_5F5140(a1, 1, v1); while ( v1 < v3 ) { ++v1; sub_5F5140(a1, 1, v1); } result = v6; } else { result = sub_5F6700(a1, (int)"too many results to unpack", v5); } } else { result = 0; } return result; } //----- (0060CB20) -------------------------------------------------------- void __usercall sub_60CB20(char a1, int a2, signed int a3, signed int a4) { signed int v4; // ebx@1 signed int v5; // edi@1 signed int v6; // eax@5 signed int v7; // edi@5 signed int v8; // eax@5 signed int v9; // kr00_4@11 int v10; // edi@11 signed int v11; // eax@12 signed int v12; // ebx@12 signed int v13; // eax@12 signed int v14; // eax@17 signed int v15; // ebx@17 signed int v16; // eax@17 signed int v17; // ebx@23 signed int v18; // ebx@23 int v19; // edi@23 signed int v20; // eax@25 signed int v21; // edi@25 signed int v22; // eax@25 signed int v23; // eax@32 signed int v24; // edi@32 signed int v25; // eax@32 signed int v26; // edi@40 int v27; // ebx@41 int v28; // eax@41 signed int v29; // edx@42 char v30; // [sp-4h] [bp-10h]@2 int v31; // [sp+8h] [bp-4h]@10 int v32; // [sp+8h] [bp-4h]@23 v4 = a4; v5 = a3; if ( a3 < a4 ) { v30 = a1; while ( 1 ) { sub_5F5140(a2, 1, v5); sub_5F5140(a2, 1, v4); if ( sub_5F41F0(a2, 2) ) { sub_5F4140(a2, 2); sub_5F4140(a2, -2); sub_5F4140(a2, -4); sub_5F5850(a2, 2, 1, 0, 0); LOBYTE(v6) = sub_5F4870(a2, -1); v7 = v6; sub_5F3E70(a2, -2); v8 = v7; v5 = a3; } else { v8 = sub_5F44F0(a2, -1, -2, 1); } if ( v8 ) { sub_5F5560(a2, 1, v5); sub_5F5560(a2, 1, v4); } else { sub_5F3E70(a2, -3); } v31 = v4 - v5; if ( v4 - v5 == 1 ) break; v9 = v5 + v4; v10 = (v5 + v4) / 2; sub_5F5140(a2, 1, v9 / 2); sub_5F5140(a2, 1, a3); if ( sub_5F41F0(a2, 2) ) { sub_5F4140(a2, 2); sub_5F4140(a2, -3); sub_5F4140(a2, -3); sub_5F5850(a2, 2, 1, 0, 0); LOBYTE(v11) = sub_5F4870(a2, -1); v12 = v11; sub_5F3E70(a2, -2); v13 = v12; v4 = a4; } else { v13 = sub_5F44F0(a2, -2, -1, 1); } if ( v13 ) { sub_5F5560(a2, 1, v10); sub_5F5560(a2, 1, a3); } else { sub_5F3E70(a2, -2); sub_5F5140(a2, 1, v4); if ( sub_5F41F0(a2, 2) ) { sub_5F4140(a2, 2); sub_5F4140(a2, -2); sub_5F4140(a2, -4); sub_5F5850(a2, 2, 1, 0, 0); LOBYTE(v14) = sub_5F4870(a2, -1); v15 = v14; sub_5F3E70(a2, -2); v16 = v15; v4 = a4; } else { v16 = sub_5F44F0(a2, -1, -2, 1); } if ( v16 ) { sub_5F5560(a2, 1, v10); sub_5F5560(a2, 1, v4); } else { sub_5F3E70(a2, -3); } } if ( v31 == 2 ) break; sub_5F5140(a2, 1, v10); sub_5F4140(a2, -1); v17 = v4 - 1; sub_5F5140(a2, 1, v17); sub_5F5560(a2, 1, v10); sub_5F5560(a2, 1, v17); v18 = a3; v19 = a4 - 1; v32 = a4 - 1; while ( 1 ) { while ( 1 ) { ++v18; sub_5F5140(a2, 1, v18); if ( sub_5F41F0(a2, 2) ) { sub_5F4140(a2, 2); sub_5F4140(a2, -2); sub_5F4140(a2, -4); sub_5F5850(a2, 2, 1, 0, 0); LOBYTE(v20) = sub_5F4870(a2, -1); v21 = v20; sub_5F3E70(a2, -2); v22 = v21; v19 = v32; } else { v22 = sub_5F44F0(a2, -1, -2, 1); } if ( !v22 ) break; if ( v18 >= a4 ) sub_5F6700(a2, (int)"invalid order function for sorting", v30); sub_5F3E70(a2, -2); } while ( 1 ) { --v19; v32 = v19; sub_5F5140(a2, 1, v19); if ( sub_5F41F0(a2, 2) ) { sub_5F4140(a2, 2); sub_5F4140(a2, -4); sub_5F4140(a2, -3); sub_5F5850(a2, 2, 1, 0, 0); LOBYTE(v23) = sub_5F4870(a2, -1); v24 = v23; sub_5F3E70(a2, -2); v25 = v24; v19 = v32; } else { v25 = sub_5F44F0(a2, -3, -1, 1); } if ( !v25 ) break; if ( v19 <= a3 ) sub_5F6700(a2, (int)"invalid order function for sorting", v30); sub_5F3E70(a2, -2); } if ( v19 < v18 ) break; sub_5F5560(a2, 1, v18); sub_5F5560(a2, 1, v19); } sub_5F3E70(a2, -4); sub_5F5140(a2, 1, a4 - 1); sub_5F5140(a2, 1, v18); sub_5F5560(a2, 1, a4 - 1); sub_5F5560(a2, 1, v18); v26 = a3; if ( v18 - a3 >= a4 - v18 ) { v28 = v18 + 1; v29 = v18 - 1; v27 = a4; a4 = v29; } else { v27 = v18 - 1; v28 = a3; a3 = v27 + 2; v26 = v27 + 2; } sub_60CB20(a2, a2, v28, v27); if ( v26 >= a4 ) break; v4 = a4; v5 = a3; } } } // 60CB20: could not find valid save-restore pair for esi //----- (0060CF30) -------------------------------------------------------- int __cdecl sub_60CF30(int a1) { signed int v1; // edi@1 sub_5F7960(a1, 1, 5); v1 = sub_5F7140(a1, 1); sub_5F6950(a1, 40, (int)byte_6A492E); if ( sub_5F41F0(a1, 2) > 0 ) sub_5F7960(a1, 2, 6); sub_5F3E70(a1, 2); sub_60CB20(a1, a1, 1, v1); return 0; } //----- (0060CF90) -------------------------------------------------------- signed int __cdecl sub_60CF90(signed int a1) { sub_5F51C0(a1, 0, 6); sub_5F7C40(a1, (int)&off_6FFD20, 0); return 1; } // 6FFD20: using guessed type char *off_6FFD20; //----- (0060CFC0) -------------------------------------------------------- int __cdecl sub_60CFC0(int a1) { signed int v1; // esi@1 int result; // eax@2 v1 = 42; do { *(_DWORD *)(v1 * 4 + *(_DWORD *)(a1 + 12)) = sub_609600(a1, off_6FFED8[v1 - 42]); result = *(_DWORD *)(*(_DWORD *)(a1 + 12) + v1 * 4); *(_BYTE *)(result + 5) |= 0x20u; ++v1; } while ( v1 < 59 ); return result; } // 6FFED8: using guessed type char *off_6FFED8[17]; //----- (0060D010) -------------------------------------------------------- int __cdecl sub_60D010(int a1, char a2, int a3) { int result; // eax@1 result = sub_60BF30(a1, a3); if ( *(_DWORD *)(result + 4) == 2146936064 ) { *(_BYTE *)(a1 + 6) |= 1 << a2; result = 0; } return result; } //----- (0060D040) -------------------------------------------------------- int __cdecl sub_60D040(int a1, int a2, int a3) { int v3; // ecx@1 int v4; // edx@1 char v5; // al@2 int v6; // eax@4 int v7; // ecx@7 int result; // eax@12 v3 = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 4) & 0x7FFFFF00; if ( v4 == 2146936064 ) v5 = *(_DWORD *)(a2 + 4); else v5 = 3; v6 = (v5 & 0xF) - 5; if ( v6 ) { if ( v6 == 2 ) { v7 = *(_DWORD *)(*(_DWORD *)a2 + 8); } else { if ( v4 == 2146936064 ) v7 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * (v3 & 0xF) + 236); else v7 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 248); } } else { v7 = *(_DWORD *)(*(_DWORD *)a2 + 8); } if ( v7 ) result = sub_60BF30(v7, *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * a3 + 168)); else result = (int)&unk_6FF0E0; return result; } //----- (0060D0E0) -------------------------------------------------------- void __usercall sub_60D0E0(int a1) { sub_604B20(*(_DWORD *)a1, (int)"%s: %s precompiled chunk", *(_DWORD *)(a1 + 12)); sub_5FCB10(*(_DWORD *)a1, 3); } //----- (0060D100) -------------------------------------------------------- int __usercall sub_60D100(int a1) { int v1; // esi@1 int result; // eax@3 int v3; // edi@4 int v4; // [sp+4h] [bp-4h]@1 v1 = a1; if ( sub_60FF00(*(_DWORD *)(a1 + 4), &v4, 4u) ) sub_60D0E0(v1); result = v4; if ( v4 ) { v3 = sub_60FF90(*(_DWORD *)v1, *(_DWORD *)(v1 + 8), v4); if ( sub_60FF00(*(_DWORD *)(v1 + 4), (void *)v3, v4) ) sub_60D0E0(v1); result = sub_609580(*(_DWORD *)v1, (const void *)v3, v4 - 1); } return result; } //----- (0060D180) -------------------------------------------------------- size_t __usercall sub_60D180(int a1, int a2) { int v2; // esi@1 int v3; // ebx@3 void *v4; // eax@7 size_t result; // eax@7 int v6; // [sp+4h] [bp-4h]@1 v2 = a1; if ( sub_60FF00(*(_DWORD *)(a1 + 4), &v6, 4u) ) sub_60D0E0(v2); v3 = v6; if ( v6 < 0 ) sub_60D0E0(v2); if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) loc_603720(*(_DWORD *)v2); v4 = (void *)sub_603740(*(_DWORD *)v2, 0, 0, 4 * v3); *(_DWORD *)(a2 + 12) = v4; *(_DWORD *)(a2 + 48) = v3; result = sub_60FF00(*(_DWORD *)(v2 + 4), v4, 4 * v3); if ( result ) sub_60D0E0(v2); return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060D210) -------------------------------------------------------- int __usercall sub_60D210(int a1, int a2) { int v2; // esi@1 int v3; // ebx@3 int v4; // eax@7 int v5; // ebx@10 int v6; // eax@17 int v7; // ebx@21 int result; // eax@25 int i; // ebx@27 double v10; // [sp+8h] [bp-14h]@15 int v11; // [sp+10h] [bp-Ch]@1 int v12; // [sp+14h] [bp-8h]@9 char v13; // [sp+1Ah] [bp-2h]@13 char v14; // [sp+1Bh] [bp-1h]@10 v2 = a1; if ( sub_60FF00(*(_DWORD *)(a1 + 4), &v11, 4u) ) goto LABEL_2; v3 = v11; if ( v11 < 0 ) sub_60D0E0(v2); if ( (unsigned int)(v11 + 1) > 0x1FFFFFFF ) loc_603720(*(_DWORD *)v2); *(_DWORD *)(a2 + 8) = sub_603740(*(_DWORD *)v2, 0, 0, 8 * v3); v4 = 0; for ( *(_DWORD *)(a2 + 44) = v3; v4 < v3; ++v4 ) *(_DWORD *)(*(_DWORD *)(a2 + 8) + 8 * v4 + 4) = 2146936064; v12 = 0; if ( v3 > 0 ) { while ( 1 ) { v5 = *(_DWORD *)(a2 + 8) + 8 * v12; if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v14, 1u) ) break; switch ( v14 ) { case 0: *(_DWORD *)(v5 + 4) = 2146936064; break; case 1: if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v13, 1u) ) goto LABEL_2; *(_DWORD *)v5 = v13; *(_DWORD *)(v5 + 4) = 2146936065; break; case 3: if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v10, 8u) ) goto LABEL_2; *(_QWORD *)v5 = *(_QWORD *)&v10; break; case 4: v6 = sub_60D100(v2); *(_DWORD *)v5 = v6; *(_DWORD *)(v5 + 4) = *(_BYTE *)(v6 + 4) | 0x7FF7A540; break; default: break; } ++v12; if ( v12 >= v11 ) goto LABEL_19; } LABEL_2: sub_60D0E0(v2); } LABEL_19: if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v12, 4u) ) sub_60D0E0(v2); v7 = v12; if ( v12 < 0 ) sub_60D0E0(v2); if ( (unsigned int)(v12 + 1) > 0x3FFFFFFF ) loc_603720(*(_DWORD *)v2); *(_DWORD *)(a2 + 16) = sub_603740(*(_DWORD *)v2, 0, 0, 4 * v7); result = 0; for ( *(_DWORD *)(a2 + 56) = v7; result < v7; ++result ) *(_DWORD *)(*(_DWORD *)(a2 + 16) + 4 * result) = 0; for ( i = 0; i < v12; ++i ) { *(_DWORD *)(*(_DWORD *)(a2 + 16) + 4 * i) = sub_5FE0E0(*(_DWORD *)v2); result = sub_60D7B0(v2, *(_DWORD *)(*(_DWORD *)(a2 + 16) + 4 * i)); } return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); // 60D7B0: using guessed type _DWORD __cdecl sub_60D7B0(_DWORD, _DWORD); //----- (0060D510) -------------------------------------------------------- int __usercall sub_60D510(int a1, int a2) { int v2; // esi@1 int v3; // eax@3 size_t v4; // ebx@7 void *v5; // eax@7 int v6; // edx@7 int v7; // ebx@11 int v8; // eax@16 int v9; // ecx@16 int v10; // ebx@19 int v11; // eax@21 int v12; // eax@22 int v13; // ST04_4@22 int result; // eax@31 int v15; // ebx@33 void *v16; // [sp+8h] [bp-18h]@26 int v17; // [sp+Ch] [bp-14h]@24 void *v18; // [sp+10h] [bp-10h]@22 int v19; // [sp+14h] [bp-Ch]@9 int v20; // [sp+18h] [bp-8h]@18 int v21; // [sp+1Ch] [bp-4h]@1 v2 = a1; *(_DWORD *)(a2 + 36) = sub_60D100(a1); if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v21, 4u) ) goto LABEL_2; v3 = v21; if ( v21 < 0 ) LABEL_4: sub_60D0E0(v2); if ( (unsigned int)(v21 + 1) > 0x3FFFFFFF ) v3 = loc_603720(*(_DWORD *)v2); v4 = 4 * v3; v5 = (void *)sub_603740(*(_DWORD *)v2, 0, 0, 4 * v3); v6 = v21; *(_DWORD *)(a2 + 20) = v5; *(_DWORD *)(a2 + 52) = v6; if ( sub_60FF00(*(_DWORD *)(v2 + 4), v5, v4) ) sub_60D0E0(v2); if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v19, 4u) ) sub_60D0E0(v2); v7 = v19; if ( v19 < 0 ) sub_60D0E0(v2); if ( (unsigned int)(v19 + 1) > 0x15555555 ) loc_603720(*(_DWORD *)v2); *(_DWORD *)(a2 + 24) = sub_603740(*(_DWORD *)v2, 0, 0, 12 * v7); *(_DWORD *)(a2 + 60) = v7; if ( v7 > 0 ) { v8 = 0; v9 = v7; do { *(_DWORD *)(v8 + *(_DWORD *)(a2 + 24)) = 0; v8 += 12; --v9; } while ( v9 ); } v20 = 0; if ( v7 > 0 ) { v10 = 0; while ( !sub_60FF00(*(_DWORD *)(v2 + 4), &v21, 4u) ) { v11 = v21; if ( v21 ) { v12 = sub_60FF90(*(_DWORD *)v2, *(_DWORD *)(v2 + 8), v21); v13 = *(_DWORD *)(v2 + 4); v18 = (void *)v12; if ( sub_60FF00(v13, (void *)v12, v21) ) break; v11 = sub_609580(*(_DWORD *)v2, v18, v21 - 1); } *(_DWORD *)(v10 + *(_DWORD *)(a2 + 24)) = v11; if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v17, 4u) ) break; if ( v17 < 0 ) goto LABEL_4; *(_DWORD *)(*(_DWORD *)(a2 + 24) + v10 + 4) = v17; if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v16, 4u) ) break; if ( (signed int)v16 < 0 ) goto LABEL_4; *(_DWORD *)(*(_DWORD *)(a2 + 24) + v10 + 8) = v16; v10 += 12; ++v20; if ( v20 >= v19 ) goto LABEL_29; } LABEL_2: sub_60D0E0(v2); } LABEL_29: if ( sub_60FF00(*(_DWORD *)(v2 + 4), &v19, 4u) ) sub_60D0E0(v2); result = v19; if ( v19 < 0 ) sub_60D0E0(v2); v15 = 0; if ( v19 > 0 ) { while ( !sub_60FF00(*(_DWORD *)(v2 + 4), &v21, 4u) ) { result = v21; if ( v21 ) { v16 = (void *)sub_60FF90(*(_DWORD *)v2, *(_DWORD *)(v2 + 8), v21); if ( sub_60FF00(*(_DWORD *)(v2 + 4), v16, v21) ) goto LABEL_2; result = sub_609580(*(_DWORD *)v2, v16, v21 - 1); } *(_DWORD *)(*(_DWORD *)(a2 + 28) + 8 * v15++) = result; if ( v15 >= v19 ) return result; } goto LABEL_2; } return result; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060D7B0) -------------------------------------------------------- int __cdecl sub_60D7B0(int a1, int a2) { int v2; // esi@1 int v3; // edi@5 v2 = a1; if ( sub_60FF00(*(_DWORD *)(a1 + 4), &a1, 4u) ) sub_60D0E0(v2); if ( a1 < 0 ) sub_60D0E0(v2); v3 = a2; *(_DWORD *)(a2 + 64) = a1; if ( sub_60FF00(*(_DWORD *)(v2 + 4), &a1, 4u) ) sub_60D0E0(v2); if ( a1 < 0 ) sub_60D0E0(v2); *(_DWORD *)(v3 + 68) = a1; if ( sub_60FF00(*(_DWORD *)(v2 + 4), (char *)&a1 + 3, 1u) ) sub_60D0E0(v2); *(_BYTE *)(v3 + 76) = BYTE3(a1); if ( sub_60FF00(*(_DWORD *)(v2 + 4), (char *)&a1 + 3, 1u) ) sub_60D0E0(v2); *(_BYTE *)(v3 + 77) = BYTE3(a1); if ( sub_60FF00(*(_DWORD *)(v2 + 4), (char *)&a1 + 3, 1u) ) sub_60D0E0(v2); *(_BYTE *)(v3 + 78) = BYTE3(a1); sub_60D180(v2, v3); sub_60D210(v2, v3); loc_60D410(v2); return sub_60D510(v2, v3); } // 60D7B0: using guessed type _DWORD __cdecl sub_60D7B0(_DWORD, _DWORD); //----- (0060D8C0) -------------------------------------------------------- int __cdecl sub_60D8C0(int a1) { int result; // eax@1 result = a1; *(_DWORD *)a1 = 1635077147; *(_WORD *)(a1 + 4) = 82; *(_WORD *)(a1 + 6) = 1025; *(_WORD *)(a1 + 8) = 1028; *(_WORD *)(a1 + 10) = 8; *(_DWORD *)(a1 + 12) = off_6FFF50; *(_WORD *)(a1 + 16) = word_6FFF54; return result; } // 6FFF50: using guessed type void *off_6FFF50; // 6FFF54: using guessed type __int16 word_6FFF54; //----- (0060D900) -------------------------------------------------------- char __thiscall sub_60D900(int this) { int v1; // esi@1 int v2; // ST00_4@1 signed int v3; // edx@3 int *v4; // eax@3 int *v5; // ecx@3 char result; // al@7 signed int v7; // eax@11 int v8; // ecx@11 int v9; // [sp+8h] [bp-2Ch]@1 char v10; // [sp+Ch] [bp-28h]@9 char v11; // [sp+Dh] [bp-27h]@10 int v12; // [sp+1Ch] [bp-18h]@1 int v13; // [sp+20h] [bp-14h]@1 int v14; // [sp+24h] [bp-10h]@1 void *v15; // [sp+28h] [bp-Ch]@1 __int16 v16; // [sp+2Ch] [bp-8h]@1 unsigned int v17; // [sp+30h] [bp-4h]@1 int v18; // [sp+34h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v1 = this; v15 = off_6FFF50; v2 = *(_DWORD *)(this + 4); v12 = 1635077147; v13 = (int)&unk_4010052; v14 = 525316; v16 = word_6FFF54; LOBYTE(v9) = 27; if ( sub_60FF00(v2, (char *)&v9 + 1, 0x11u) ) sub_60D0E0(v1); v3 = 18; v4 = &v9; v5 = &v12; do { if ( *v5 != *v4 ) goto LABEL_8; v3 -= 4; ++v4; ++v5; } while ( (unsigned int)v3 >= 4 ); if ( *(_BYTE *)v4 != *(_BYTE *)v5 || (result = *((_BYTE *)v4 + 1), result != *((_BYTE *)v5 + 1)) ) { LABEL_8: if ( v9 == 1635077147 ) { if ( v10 == 82 && !v11 ) { v7 = 12; v8 = 0; while ( *(int *)((char *)&v12 + v8) == *(int *)((char *)&v9 + v8) ) { v7 -= 4; v8 += 4; if ( (unsigned int)v7 < 4 ) sub_60D0E0(v1); } sub_60D0E0(v1); } sub_60D0E0(v1); } sub_60D0E0(v1); } return result; } // 6FFF50: using guessed type void *off_6FFF50; // 6FFF54: using guessed type __int16 word_6FFF54; // 86FEB8: using guessed type int __security_cookie; //----- (0060DA00) -------------------------------------------------------- int __cdecl sub_60DA00(int a1, int a2, int a3, int a4) { int v4; // ecx@1 char v5; // al@1 int v6; // esi@7 int v7; // edi@7 int v8; // eax@7 int v9; // eax@9 int v10; // ebx@9 int result; // eax@10 int v12; // esi@10 int v13; // [sp+0h] [bp-10h]@7 int v14; // [sp+4h] [bp-Ch]@7 int v15; // [sp+8h] [bp-8h]@7 int v16; // [sp+Ch] [bp-4h]@4 v4 = a4; v5 = *(_BYTE *)a4; if ( *(_BYTE *)a4 == 64 || v5 == 61 ) { v4 = a4 + 1; } else { if ( v5 == 27 ) { v16 = (int)"binary string"; goto LABEL_7; } } v16 = v4; LABEL_7: v6 = a1; v15 = a3; v13 = a1; v14 = a2; sub_60D900((int)&v13); v7 = sub_5FDF10(a1, 1); v8 = *(_DWORD *)(a1 + 8); *(_DWORD *)v8 = v7; *(_DWORD *)(v8 + 4) = 2146936134; *(_DWORD *)(v6 + 8) += 8; if ( ((*(_DWORD *)(v6 + 24) - *(_DWORD *)(v6 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(a1, 0); v9 = sub_5FE0E0(a1); *(_DWORD *)(v7 + 12) = v9; sub_60D7B0(&v13, v9); v10 = *(_DWORD *)(v7 + 12); if ( *(_DWORD *)(v10 + 40) == 1 ) { result = v7; } else { result = sub_5FDF10(a1, *(_DWORD *)(v10 + 40)); *(_DWORD *)(result + 12) = v10; v12 = *(_DWORD *)(a1 + 8); *(_DWORD *)(v12 - 8) = result; *(_DWORD *)(v12 - 4) = 2146936134; } return result; } // 60D7B0: using guessed type _DWORD __cdecl sub_60D7B0(_DWORD, _DWORD); //----- (0060DAD0) -------------------------------------------------------- int __cdecl sub_60DAD0(int a1, int a2) { int result; // eax@1 int v3[2]; // [sp+0h] [bp-8h]@3 result = a1; if ( (*(_DWORD *)(a1 + 4) & 0x7FFFFF00) == 2146936064 ) { if ( (*(_DWORD *)(a1 + 4) | 0x70) == 2146936180 && sub_604790((char *)(*(_DWORD *)a1 + 16), *(_DWORD *)(*(_DWORD *)a1 + 12), (int)v3) ) { result = a2; *(_QWORD *)a2 = *(_QWORD *)v3; } else { result = 0; } } return result; } //----- (0060DB30) -------------------------------------------------------- signed int __cdecl sub_60DB30(int a1, int a2) { signed int result; // eax@2 int v3; // eax@3 int v4; // eax@3 char v5; // [sp+10h] [bp-24h]@3 unsigned int v6; // [sp+30h] [bp-4h]@1 int v7; // [sp+34h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) == 2146936064 ) { result = 0; } else { v3 = sprintf(&v5, "%.14g", *(double *)a2); v4 = sub_609580(a1, &v5, v3); *(_DWORD *)a2 = v4; *(_DWORD *)(a2 + 4) = *(_BYTE *)(v4 + 4) | 0x7FF7A540; result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0060DBB0) -------------------------------------------------------- int __usercall sub_60DBB0(int a1, int a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 int v7; // eax@1 int v8; // edi@1 int v9; // eax@1 int v10; // eax@1 int v11; // eax@2 int result; // eax@5 int v13; // esi@6 v6 = a1; v7 = *(_DWORD *)(a1 + 8); *(_DWORD *)(v6 + 8) = v7 + 8; v8 = a5 - *(_DWORD *)(v6 + 28); *(_DWORD *)v7 = *(_DWORD *)a4; *(_DWORD *)(v7 + 4) = *(_DWORD *)(a4 + 4); v9 = *(_DWORD *)(v6 + 8); *(_DWORD *)(v6 + 8) = v9 + 8; *(_DWORD *)v9 = *(_DWORD *)a2; *(_DWORD *)(v9 + 4) = *(_DWORD *)(a2 + 4); v10 = *(_DWORD *)(v6 + 8); *(_DWORD *)(v6 + 8) = v10 + 8; *(_DWORD *)v10 = *(_DWORD *)a3; *(_DWORD *)(v10 + 4) = *(_DWORD *)(a3 + 4); if ( !a6 ) { v11 = *(_DWORD *)(v6 + 8); *(_DWORD *)(v6 + 8) = v11 + 8; *(_DWORD *)v11 = *(_DWORD *)a5; *(_DWORD *)(v11 + 4) = *(_DWORD *)(a5 + 4); } if ( ((*(_DWORD *)(v6 + 24) - *(_DWORD *)(v6 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(v6, 0); result = sub_5FD660(v6, *(_DWORD *)(v6 + 8) + 8 * a6 - 32, a6, *(_BYTE *)(*(_DWORD *)(v6 + 16) + 18) & 1); if ( a6 ) { result = *(_DWORD *)(v6 + 8) - 8; *(_DWORD *)(v6 + 8) = result; v13 = *(_DWORD *)(v6 + 28); *(_DWORD *)(v8 + v13) = *(_DWORD *)result; *(_DWORD *)(v8 + v13 + 4) = *(_DWORD *)(result + 4); } return result; } //----- (0060DC80) -------------------------------------------------------- int __cdecl sub_60DC80(int a1, int a2, int a3, int a4) { int v4; // edi@1 int v5; // ebx@3 int v6; // eax@3 int v7; // ebx@4 int v8; // eax@6 int result; // eax@8 int v10; // ecx@14 int v11; // ebx@14 int v12; // eax@14 int v13; // eax@14 int v14; // esi@16 int v15; // [sp+Ch] [bp-8h]@3 signed int v16; // [sp+10h] [bp-4h]@1 v4 = a2; v16 = 0; do { if ( *(_DWORD *)(v4 + 4) == 2146936133 ) { v5 = *(_DWORD *)v4; v6 = sub_60BF70(*(_DWORD *)v4, a3); v15 = v6; if ( *(_DWORD *)(v6 + 4) != 2146936064 || (v7 = *(_DWORD *)(v5 + 8)) == 0 || *(_BYTE *)(v7 + 6) & 1 ) goto LABEL_8; v8 = sub_60D010(v7, 0, *(_DWORD *)(*(_DWORD *)(a1 + 12) + 168)); if ( !v8 ) { v6 = v15; LABEL_8: *(_DWORD *)a4 = *(_DWORD *)v6; result = *(_DWORD *)(v6 + 4); *(_DWORD *)(a4 + 4) = result; return result; } } else { v8 = sub_60D040(a1, v4, 0); if ( *(_DWORD *)(v8 + 4) == 2146936064 ) goto LABEL_13; } if ( (*(_DWORD *)(v8 + 4) | 0x70) == 2146936182 ) goto LABEL_14; v4 = v8; ++v16; } while ( v16 < 100 ); loc_5FC640(a1, "loop in gettable"); LABEL_13: v8 = loc_5FC8E0(a1, v4, "index"); LABEL_14: v10 = *(_DWORD *)(a1 + 8); v11 = a4 - *(_DWORD *)(a1 + 28); *(_DWORD *)(a1 + 8) = v10 + 8; *(_DWORD *)v10 = *(_DWORD *)v8; *(_DWORD *)(v10 + 4) = *(_DWORD *)(v8 + 4); v12 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v12 + 8; *(_DWORD *)v12 = *(_DWORD *)v4; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v4 + 4); v13 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v13 + 8; *(_DWORD *)v13 = *(_DWORD *)a3; *(_DWORD *)(v13 + 4) = *(_DWORD *)(a3 + 4); if ( ((*(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(a1, 0); sub_5FD660(a1, *(_DWORD *)(a1 + 8) - 24, 1, *(_BYTE *)(*(_DWORD *)(a1 + 16) + 18) & 1); result = *(_DWORD *)(a1 + 8) - 8; *(_DWORD *)(a1 + 8) = result; v14 = *(_DWORD *)(a1 + 28); *(_DWORD *)(v14 + v11) = *(_DWORD *)result; *(_DWORD *)(v14 + v11 + 4) = *(_DWORD *)(result + 4); return result; } // 60DC80: using guessed type _DWORD __cdecl sub_60DC80(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060DDE0) -------------------------------------------------------- int __cdecl sub_60DDE0(int a1, int a2, int a3, int a4) { int v4; // edi@1 int v5; // eax@3 int v6; // edx@3 int v7; // ebx@3 int v8; // eax@4 int v9; // eax@6 int v10; // eax@9 int result; // eax@10 int v12; // ecx@10 int v13; // ecx@22 int v14; // eax@22 int v15; // eax@22 int v16; // eax@22 signed int v17; // [sp+Ch] [bp-8h]@1 int v18; // [sp+10h] [bp-4h]@3 v4 = a2; v17 = 0; while ( *(_DWORD *)(v4 + 4) == 2146936133 ) { v18 = *(_DWORD *)v4; v5 = sub_60BF70(*(_DWORD *)v4, a3); v6 = v18; v7 = v5; if ( *(_DWORD *)(v5 + 4) != 2146936064 ) goto LABEL_10; v8 = *(_DWORD *)(v18 + 8); if ( !v8 || *(_BYTE *)(v8 + 6) & 2 ) goto LABEL_8; v9 = sub_60D010(v8, 1, *(_DWORD *)(*(_DWORD *)(a1 + 12) + 172)); if ( !v9 ) { v6 = v18; LABEL_8: if ( (_UNKNOWN *)v7 == &unk_6FF0E0 ) { v10 = sub_60C560(a1, v6, a3); v6 = v18; v7 = v10; } LABEL_10: result = a4; *(_DWORD *)v7 = *(_DWORD *)a4; *(_DWORD *)(v7 + 4) = *(_DWORD *)(a4 + 4); *(_BYTE *)(v6 + 6) = 0; v12 = *(_DWORD *)(a4 + 4); if ( (v12 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v12) = 3; LABEL_16: if ( v12 & 0x40 ) { result = *(_DWORD *)result; if ( *(_BYTE *)(result + 5) & 3 ) { if ( *(_BYTE *)(v6 + 5) & 4 ) result = sub_5FE230(a1, v6); } } return result; } LABEL_13: if ( (*(_DWORD *)(v9 + 4) | 0x70) == 2146936182 ) goto LABEL_22; v4 = v9; ++v17; if ( v17 >= 100 ) { result = loc_5FC640(a1, "loop in settable"); goto LABEL_16; } } v9 = sub_60D040(a1, v4, 1); if ( *(_DWORD *)(v9 + 4) != 2146936064 ) goto LABEL_13; v9 = loc_5FC8E0(a1, v4, "index"); LABEL_22: v13 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v13 + 8; *(_DWORD *)v13 = *(_DWORD *)v9; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v9 + 4); v14 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v14 + 8; *(_DWORD *)v14 = *(_DWORD *)v4; *(_DWORD *)(v14 + 4) = *(_DWORD *)(v4 + 4); v15 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v15 + 8; *(_DWORD *)v15 = *(_DWORD *)a3; *(_DWORD *)(v15 + 4) = *(_DWORD *)(a3 + 4); v16 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v16 + 8; *(_DWORD *)v16 = *(_DWORD *)a4; *(_DWORD *)(v16 + 4) = *(_DWORD *)(a4 + 4); if ( ((*(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 8)) & 0xFFFFFFF8) <= 0 ) sub_5FCD00(a1, 0); return sub_5FD660(a1, *(_DWORD *)(a1 + 8) - 32, 0, *(_BYTE *)(*(_DWORD *)(a1 + 16) + 18) & 1); } // 60C560: using guessed type _DWORD __cdecl sub_60C560(_DWORD, _DWORD, _DWORD); //----- (0060DFB0) -------------------------------------------------------- int __usercall sub_60DFB0(int a1, int a2, int a3, int a4) { int v4; // ebx@3 int result; // eax@5 int v6; // eax@8 int v7; // edx@10 signed int v8; // [sp+4h] [bp-4h]@2 if ( a1 && (v8 = 1 << a2, !((unsigned __int8)(1 << a2) & *(_BYTE *)(a1 + 6))) && (v4 = sub_60D010(a1, a2, *(_DWORD *)(*(_DWORD *)(a3 + 12) + 4 * a2 + 168))) != 0 && (a1 == a4 || a4 && !((unsigned __int8)v8 & *(_BYTE *)(a4 + 6)) && (v6 = sub_60D010(a4, a2, *(_DWORD *)(*(_DWORD *)(a3 + 12) + 4 * a2 + 168))) != 0 && ((*(_DWORD *)(v4 + 4) & 0x7FFFFF00) == 2146936064 ? (v7 = *(_DWORD *)(v4 + 4) == *(_DWORD *)(v6 + 4)) : (v7 = (*(_DWORD *)(v6 + 4) & 0x7FFFFF00) != 2146936064), v7 && sub_60E2F0(0, v4, (int *)v6))) ) result = v4; else result = 0; return result; } //----- (0060E080) -------------------------------------------------------- signed int __usercall sub_60E080(int a1, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // esi@3 int v7; // eax@3 signed int result; // eax@6 int v9; // [sp+0h] [bp-10h]@0 int v10; // [sp+4h] [bp-Ch]@0 int v11; // [sp+Ch] [bp-4h]@1 v4 = a1; v11 = *(_DWORD *)(a1 + 8); v5 = sub_60D040(a1, v9, v10); if ( *(_DWORD *)(v5 + 4) == 2146936064 && (v5 = sub_60D040(v4, a4, a3), *(_DWORD *)(v5 + 4) == 2146936064) ) { result = -1; } else { sub_60DBB0(v4, a2, a4, v5, v11, 1); v6 = *(_DWORD *)(v4 + 8); v7 = *(_DWORD *)(v6 + 4); result = v7 != 2146936064 && (v7 != 2146936065 || *(_DWORD *)v6); } return result; } //----- (0060E100) -------------------------------------------------------- int __usercall sub_60E100(int a1, int a2) { int v2; // ebx@1 const char *v3; // edi@1 const char *v4; // esi@1 int result; // eax@1 unsigned int v6; // eax@2 int v7; // eax@4 int v8; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)(a1 + 12); v3 = (const char *)(a1 + 16); v4 = (const char *)(a2 + 16); v8 = *(_DWORD *)(a2 + 12); result = strcoll((const char *)(a2 + 16), (const char *)(a1 + 16)); if ( !result ) { while ( 1 ) { v6 = strlen(v4); if ( v6 == v2 ) return v6 != v8; if ( v6 == v8 ) break; v7 = v6 + 1; v8 -= v7; v3 += v7; v4 += v7; v2 -= v7; result = strcoll(v4, v3); if ( result ) return result; } result = -1; } return result; } //----- (0060E220) -------------------------------------------------------- signed int __cdecl sub_60E220(int a1, int a2, int a3) { signed int result; // eax@4 signed int v4; // eax@10 if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(a3 + 4) & 0x7FFFFF00) == 2146936064 ) { if ( (*(_DWORD *)(a2 + 4) | 0x70) != 2146936180 || (*(_DWORD *)(a3 + 4) | 0x70) != 2146936180 ) { result = sub_60E080(a1, a2, 14, a3); if ( result < 0 ) { v4 = sub_60E080(a1, a3, 13, a2); if ( v4 < 0 ) sub_5FCA20(a1, a2, a3); result = v4 == 0; } } else { result = sub_60E100(*(_DWORD *)a3, *(_DWORD *)a2) <= 0; } } else { result = *(double *)a3 >= *(double *)a2; } return result; } //----- (0060E2F0) -------------------------------------------------------- signed int __cdecl sub_60E2F0(int a1, int a2, int *a3) { int v3; // ecx@1 signed int result; // eax@4 int v5; // eax@11 int v6; // ebx@12 int v7; // eax@12 v3 = *(_DWORD *)(a2 + 4); if ( (*(_DWORD *)(a2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; switch ( v3 & 0x3F ) { case 0: goto LABEL_4; case 3: if ( *(double *)a3 != *(double *)a2 ) goto LABEL_6; goto LABEL_4; case 1: case 2: case 4: case 0x16: return *(_DWORD *)a2 == *a3; case 0x14: return sub_609250(*(_DWORD *)a2, *a3); case 5: case 7: if ( *(_DWORD *)a2 == *a3 ) goto LABEL_4; if ( !a1 || (v5 = sub_60DFB0(*(_DWORD *)(*(_DWORD *)a2 + 8), 5, a1, *(_DWORD *)(*a3 + 8))) == 0 || (sub_60DBB0(a1, a2, (int)a3, v5, *(_DWORD *)(a1 + 8), 1), v6 = *(_DWORD *)(a1 + 8), v7 = *(_DWORD *)(v6 + 4), v7 == 2146936064) ) goto LABEL_6; if ( v7 == 2146936065 ) { if ( *(_DWORD *)v6 ) result = 1; else LABEL_6: result = 0; } else { LABEL_4: result = 1; } break; default: result = *(_DWORD *)a2 == *a3; break; } return result; } //----- (0060E7B0) -------------------------------------------------------- int __cdecl sub_60E7B0(int a1, int a2, int a3) { int v3; // eax@1 int v4; // eax@3 int v5; // esi@5 int v6; // eax@5 int v7; // ebx@7 int v8; // eax@7 int result; // eax@10 double v10; // st7@11 v3 = *(_DWORD *)(a3 + 4); if ( (*(_DWORD *)(a3 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = (v3 & 0xF) - 4; if ( v4 ) { if ( v4 != 1 ) { v5 = a1; v6 = sub_60D040(a1, a3, 4); if ( *(_DWORD *)(v6 + 4) != 2146936064 ) return sub_60DBB0(v5, a3, a3, v6, a2, 1); loc_5FC8E0(a1, a3, "get length of"); } v7 = *(_DWORD *)a3; v8 = *(_DWORD *)(*(_DWORD *)a3 + 8); if ( v8 ) { if ( !(*(_BYTE *)(v8 + 6) & 0x10) ) { v5 = a1; v6 = sub_60D010(v8, 4, *(_DWORD *)(*(_DWORD *)(a1 + 12) + 184)); if ( v6 ) return sub_60DBB0(v5, a3, a3, v6, a2, 1); } } v10 = (double)(signed int)sub_60C1F0(v7); result = a2; *(_QWORD *)a2 = *(_QWORD *)&v10; } else { result = a2; *(double *)a2 = (double)*(unsigned int *)(*(_DWORD *)a3 + 12); } return result; } //----- (0060E9B0) -------------------------------------------------------- int __thiscall sub_60E9B0(int this, int a2, int a3) { int result; // eax@1 int v4; // ebx@2 int v5; // ecx@2 int v6; // edx@2 int v7; // edi@3 int v8; // ecx@3 int v9; // eax@4 int v10; // esi@5 int v11; // [sp+Ch] [bp-4h]@1 result = *(_DWORD *)(this + 32); v11 = result; if ( result ) { v4 = *(_DWORD *)(this + 40); v5 = *(_DWORD *)(this + 28); v6 = 0; if ( v4 > 0 ) { v7 = result + 16; v8 = v5 + 5; while ( 1 ) { v9 = *(_BYTE *)v8; v10 = *(_BYTE *)(v8 - 1) ? a3 + 8 * v9 : *(_DWORD *)(*(_DWORD *)(a2 + 4 * v9) + 8); if ( *(_DWORD *)(*(_DWORD *)v7 + 8) != v10 ) break; ++v6; v7 += 4; v8 += 8; if ( v6 >= v4 ) return v11; } result = 0; } } return result; } //----- (0060EA20) -------------------------------------------------------- int __usercall sub_60EA20(int a1, int a2, int a3, int a4, int a5) { int v5; // ebx@1 int v6; // esi@1 int v7; // edi@1 int result; // eax@1 int v9; // ebx@2 int v10; // edi@2 int v11; // [sp+Ch] [bp-8h]@1 int v12; // [sp+10h] [bp-4h]@1 v5 = a3; v6 = *(_DWORD *)(a3 + 40); v7 = a1; v11 = *(_DWORD *)(a3 + 28); result = sub_5FDF10(a2, *(_DWORD *)(a3 + 40)); *(_DWORD *)(result + 12) = a3; v12 = result; *(_DWORD *)v7 = result; *(_DWORD *)(v7 + 4) = 2146936134; if ( v6 > 0 ) { v9 = result + 16; v10 = v11 + 5; do { if ( *(_BYTE *)(v10 - 1) ) { *(_DWORD *)v9 = sub_5FDF90(a2, a5 + 8 * *(_BYTE *)v10); result = v12; } else { *(_DWORD *)v9 = *(_DWORD *)(a4 + 4 * *(_BYTE *)v10); } v9 += 4; v10 += 8; --v6; } while ( v6 ); v5 = a3; } if ( *(_BYTE *)(v5 + 5) & 4 ) { sub_5FF570(a2, v5, result); result = v12; } *(_DWORD *)(v5 + 32) = result; return result; } //----- (0060EAC0) -------------------------------------------------------- int __cdecl sub_60EAC0(int a1) { int v1; // edi@1 int v2; // ebx@1 unsigned int v3; // esi@1 int v4; // ecx@1 int result; // eax@1 int v6; // eax@2 int v7; // esi@2 int v8; // ecx@3 int v9; // edx@3 int v10; // eax@13 int v11; // ecx@13 int v12; // eax@15 int v13; // ecx@15 int v14; // esi@15 int v15; // [sp+Ch] [bp-4h]@1 int v16; // [sp+18h] [bp+8h]@6 v1 = a1; v2 = *(_DWORD *)(a1 + 16); v3 = *(_DWORD *)(*(_DWORD *)(v2 + 28) - 4); v4 = *(_DWORD *)(v2 + 24); result = *(_DWORD *)(*(_DWORD *)(v2 + 28) - 4) & 0x3F; v15 = *(_DWORD *)(v2 + 24); switch ( result ) { case 6: case 7: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 21: v6 = *(_DWORD *)(a1 + 8) - 8; *(_DWORD *)(a1 + 8) = v6; v7 = (v3 >> 6) & 0xFF; *(_DWORD *)(v4 + 8 * v7) = *(_DWORD *)v6; result = *(_DWORD *)(v6 + 4); *(_DWORD *)(v4 + 8 * v7 + 4) = result; break; case 24: case 25: case 26: v8 = *(_DWORD *)(a1 + 8); v9 = *(_DWORD *)(v8 - 4); v16 = v9 != 2146936064 && (v9 != 2146936065 || *(_DWORD *)(v8 - 8)); *(_DWORD *)(v1 + 8) = v8 - 8; if ( result == 26 ) { result = sub_60D040(v1, v15 + 8 * (v3 >> 23), 14); if ( *(_DWORD *)(result + 4) == 2146936064 ) v16 = v16 == 0; } if ( v16 != ((v3 >> 6) & 0xFF) ) *(_DWORD *)(v2 + 28) += 4; break; case 22: v10 = *(_DWORD *)(a1 + 8); v11 = (signed int)(v10 - 8 - (8 * (v3 >> 23) + 8) - v15) >> 3; *(_DWORD *)(v10 - 24) = *(_DWORD *)(v10 - 8); *(_DWORD *)(v10 - 20) = *(_DWORD *)(v10 - 4); if ( v11 > 1 ) { *(_DWORD *)(a1 + 8) = v10 - 16; loc_60E430(a1, v11); } v12 = *(_DWORD *)(a1 + 8); v13 = *(_DWORD *)(v2 + 24); v14 = (v3 >> 6) & 0xFF; *(_DWORD *)(v13 + 8 * v14) = *(_DWORD *)(v12 - 8); result = *(_DWORD *)(v12 - 4); *(_DWORD *)(v13 + 8 * v14 + 4) = result; *(_DWORD *)(a1 + 8) = *(_DWORD *)(v2 + 4); break; case 34: *(_DWORD *)(a1 + 8) = *(_DWORD *)(v2 + 4); break; case 29: if ( ((((v3 >> 14) & 0x1FF) - 1) & 0x80000000u) == 0 ) { result = *(_DWORD *)(v2 + 4); *(_DWORD *)(a1 + 8) = result; } break; default: return result; } return result; } //----- (0060EC60) -------------------------------------------------------- int __cdecl sub_60EC60(int a1) { unsigned int v1; // ebx@2 unsigned int *v2; // eax@3 unsigned int v3; // esi@3 int v4; // edi@3 char v5; // cl@3 bool v6; // zf@4 int v7; // ebx@6 int v8; // eax@8 signed int v9; // edx@8 char v10; // al@9 int v11; // ecx@15 int v12; // edi@15 unsigned int v13; // edx@15 int v14; // ecx@15 int v15; // eax@15 unsigned int v16; // eax@19 int v17; // eax@21 int v18; // edi@27 unsigned int v19; // esi@28 int v20; // eax@29 unsigned int v21; // esi@29 int v22; // eax@30 int v23; // esi@30 int v24; // ecx@30 unsigned int v25; // esi@33 int v26; // eax@33 unsigned int v27; // edx@34 int v28; // eax@36 unsigned int v29; // ecx@37 unsigned int v30; // esi@37 unsigned int v31; // ecx@37 int v32; // eax@38 unsigned int v33; // eax@43 int v34; // eax@44 unsigned int v35; // eax@47 int v36; // ecx@48 unsigned int v37; // esi@50 int v38; // eax@51 int v39; // esi@54 int v40; // eax@54 int v41; // eax@54 int v42; // edi@57 unsigned int v43; // eax@60 int v44; // ecx@61 unsigned int v45; // esi@63 int v46; // eax@64 signed int v47; // ebx@67 int v48; // esi@67 int v49; // eax@69 int v50; // eax@73 unsigned int v51; // esi@73 unsigned int v52; // eax@76 int v53; // ecx@77 unsigned int v54; // esi@79 int v55; // eax@80 unsigned int v56; // eax@86 int v57; // ecx@87 unsigned int v58; // esi@89 int v59; // eax@90 unsigned int v60; // eax@96 int v61; // ecx@97 unsigned int v62; // esi@99 int v63; // eax@100 unsigned int v64; // eax@106 int v65; // ecx@107 unsigned int v66; // esi@109 int v67; // eax@110 unsigned int v68; // eax@116 int v69; // ecx@117 unsigned int v70; // esi@119 int v71; // eax@120 double v72; // st7@124 unsigned int v73; // eax@126 int v74; // ecx@127 unsigned int v75; // esi@129 int v76; // eax@130 int v77; // eax@136 unsigned int v78; // esi@139 int v79; // eax@139 unsigned int v80; // edi@145 int v81; // esi@145 int v82; // ecx@145 int v83; // eax@145 int v84; // edi@145 int v85; // eax@148 unsigned int v86; // eax@153 int v87; // edi@154 unsigned int v88; // esi@156 int v89; // eax@157 int v90; // edx@160 int v91; // eax@164 int v92; // esi@166 unsigned int v93; // edi@168 unsigned int v94; // eax@171 int v95; // ecx@172 unsigned int v96; // esi@174 int v97; // eax@175 int v98; // ebx@177 signed int v99; // eax@177 int v100; // esi@178 unsigned int v101; // edi@180 unsigned int v102; // eax@183 int v103; // ecx@184 unsigned int v104; // esi@186 int v105; // eax@188 int v106; // eax@189 int v107; // ecx@193 unsigned int v108; // esi@193 int v109; // ecx@201 int v110; // eax@201 unsigned int v111; // eax@210 int v112; // esi@210 int v113; // ecx@214 unsigned int v114; // esi@215 double v115; // st7@219 double v116; // st6@219 double v117; // st5@219 double v118; // st7@219 int v119; // eax@224 int v120; // ecx@224 int v121; // eax@235 int v122; // ecx@238 unsigned int *v123; // eax@238 int v124; // eax@241 int v125; // esi@241 int v126; // ecx@241 int v127; // edx@244 int v128; // edx@245 int v129; // esi@245 int v130; // edi@248 int v131; // eax@249 int v132; // esi@257 int v133; // eax@257 int v134; // ST08_4@258 int v135; // esi@258 int v136; // ecx@261 int v137; // esi@262 int v138; // eax@262 int v139; // esi@262 int v140; // ecx@263 int v141; // edx@263 int v142; // ecx@266 int v143; // eax@267 int v144; // edi@273 int v145; // eax@274 unsigned int v146; // edi@274 int v147; // ecx@274 int v148; // edx@274 int v149; // esi@274 int v150; // ebx@274 int v151; // eax@274 int v152; // edx@274 bool v153; // sf@274 int v154; // ecx@277 int v155; // eax@277 int v156; // eax@278 int v157; // ecx@279 int v158; // ebx@279 int v159; // ecx@279 unsigned int v160; // esi@280 int result; // eax@284 int v162; // ecx@285 int v163; // [sp-4h] [bp-54h]@40 int v164; // [sp+0h] [bp-50h]@40 int v165; // [sp+4h] [bp-4Ch]@0 int v166; // [sp+4h] [bp-4Ch]@40 int v167[2]; // [sp+14h] [bp-3Ch]@234 int v168[2]; // [sp+1Ch] [bp-34h]@230 int v169[2]; // [sp+24h] [bp-2Ch]@226 double v170; // [sp+2Ch] [bp-24h]@124 int v171; // [sp+30h] [bp-20h]@15 double v172; // [sp+34h] [bp-1Ch]@124 int v173; // [sp+38h] [bp-18h]@16 int v174; // [sp+3Ch] [bp-14h]@2 int v175; // [sp+40h] [bp-10h]@8 int v176; // [sp+44h] [bp-Ch]@2 int v177; // [sp+48h] [bp-8h]@1 char v178; // [sp+4Fh] [bp-1h]@3 v177 = *(_DWORD *)(a1 + 16); LABEL_2: v1 = *(_DWORD *)(v177 + 24); v174 = **(_DWORD **)v177; v176 = *(_DWORD *)(*(_DWORD *)(v174 + 12) + 8); while ( 2 ) { v2 = *(unsigned int **)(v177 + 28); v3 = *v2; v4 = a1; *(_DWORD *)(v177 + 28) = v2 + 1; v5 = *(_BYTE *)(a1 + 40); v178 = v5; if ( v5 & 0xC ) { v6 = (*(_DWORD *)(a1 + 48))-- == 1; if ( v6 || v5 & 4 ) { v7 = *(_DWORD *)(a1 + 16); if ( !(v5 & 8) || *(_DWORD *)(a1 + 48) ) { v9 = 0; v175 = 0; } else { v8 = *(_DWORD *)(a1 + 44); v9 = 1; v175 = 1; *(_DWORD *)(a1 + 48) = v8; } v10 = *(_BYTE *)(v7 + 18); if ( v10 >= 0 ) { if ( v9 ) { sub_5FCDD0(a1, 3, v165); v5 = v178; } if ( v5 & 4 ) { v11 = *(_DWORD *)(**(_DWORD **)v7 + 12); v12 = *(_DWORD *)(v11 + 12); v13 = *(_DWORD *)(v7 + 28); v14 = *(_DWORD *)(v11 + 20); v15 = ((*(_DWORD *)(v7 + 28) - v12) >> 2) - 1; v171 = v12; v173 = v14 ? *(_DWORD *)(v14 + 4 * v15) : 0; if ( (v4 = a1, !v15) || (v16 = *(_DWORD *)(a1 + 20), v13 <= v16) || (!v14 ? (v17 = 0) : (v17 = *(_DWORD *)(v14 + 4 * ((signed int)(v16 - v171) >> 2) - 4)), v173 != v17) ) sub_5FCDD0(a1, 2, v173); } v6 = *(_BYTE *)(v4 + 6) == 1; *(_DWORD *)(v4 + 20) = *(_DWORD *)(v7 + 28); if ( v6 ) { if ( v175 ) *(_DWORD *)(v4 + 48) = 1; *(_DWORD *)(v7 + 28) -= 4; *(_BYTE *)(v7 + 18) |= 0x80u; *(_DWORD *)v7 = *(_DWORD *)(v4 + 8) - 8; sub_5FCB10(v4, 1); } } else { *(_BYTE *)(v7 + 18) = v10 & 0x7F; } v1 = *(_DWORD *)(v177 + 24); } } v175 = (v3 >> 6) & 0xFF; v18 = v1 + 8 * v175; switch ( v3 & 0x3F ) { case 0u: v19 = v3 >> 23; *(_DWORD *)v18 = *(_DWORD *)(v1 + 8 * v19); *(_DWORD *)(v18 + 4) = *(_DWORD *)(v1 + 8 * v19 + 4); continue; case 1u: v20 = v176; v21 = v3 >> 14; *(_DWORD *)v18 = *(_DWORD *)(v176 + 8 * v21); *(_DWORD *)(v18 + 4) = *(_DWORD *)(v20 + 8 * v21 + 4); continue; case 2u: v22 = *(_DWORD *)(v177 + 28); v23 = v176; v24 = *(_DWORD *)v22 >> 6; *(_DWORD *)(v177 + 28) = v22 + 4; *(_DWORD *)v18 = *(_DWORD *)(v23 + 8 * v24); *(_DWORD *)(v18 + 4) = *(_DWORD *)(v23 + 8 * v24 + 4); continue; case 3u: *(_DWORD *)v18 = v3 >> 23; *(_DWORD *)(v18 + 4) = 2146936065; if ( (unsigned int)&unk_7FC000 & v3 ) *(_DWORD *)(v177 + 28) += 4; continue; case 4u: v25 = v3 >> 23; v26 = v18 + 4; do { v27 = v25; *(_DWORD *)v26 = 2146936064; v26 += 8; --v25; } while ( v27 ); continue; case 5u: v28 = *(_DWORD *)(*(_DWORD *)(v174 + 4 * (v3 >> 23) + 16) + 8); *(_DWORD *)v18 = *(_DWORD *)v28; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v28 + 4); continue; case 6u: v29 = v3; v30 = v3 >> 14; v31 = v29 >> 23; if ( v30 & 0x100 ) v32 = v176 + 8 * (unsigned __int8)v30; else v32 = v1 + 8 * (v30 & 0x1FF); v166 = v1 + 8 * v175; v164 = v32; v163 = *(_DWORD *)(*(_DWORD *)(v174 + 4 * v31 + 16) + 8); goto LABEL_41; case 7u: v33 = v3 >> 14; if ( (v3 >> 14) & 0x100 ) v34 = v176 + 8 * (unsigned __int8)v33; else v34 = v1 + 8 * (v33 & 0x1FF); sub_60DC80(a1, v1 + 8 * (v3 >> 23), v34, v18); v1 = *(_DWORD *)(v177 + 24); continue; case 8u: v35 = v3 >> 14; if ( (v3 >> 14) & 0x100 ) v36 = v176 + 8 * (unsigned __int8)v35; else v36 = v1 + 8 * (v35 & 0x1FF); v37 = v3 >> 23; if ( v37 & 0x100 ) v38 = v176 + 8 * (unsigned __int8)v37; else v38 = v1 + 8 * v37; sub_60DDE0(a1, *(_DWORD *)(*(_DWORD *)(v174 + 4 * v175 + 16) + 8), v38, v36); v1 = *(_DWORD *)(v177 + 24); continue; case 9u: v39 = *(_DWORD *)(v174 + 4 * (v3 >> 23) + 16); v40 = *(_DWORD *)(v39 + 8); *(_DWORD *)v40 = *(_DWORD *)v18; *(_DWORD *)(v40 + 4) = *(_DWORD *)(v18 + 4); v41 = *(_DWORD *)(v18 + 4); if ( (*(_DWORD *)(v18 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v41) = 3; if ( v41 & 0x40 ) { v42 = *(_DWORD *)v18; if ( *(_BYTE *)(v42 + 5) & 3 ) { if ( *(_BYTE *)(v39 + 5) & 4 ) sub_5FF530(a1, v39, v42); } } continue; case 0xAu: v43 = v3 >> 14; if ( (v3 >> 14) & 0x100 ) v44 = v176 + 8 * (unsigned __int8)v43; else v44 = v1 + 8 * (v43 & 0x1FF); v45 = v3 >> 23; if ( v45 & 0x100 ) v46 = v176 + 8 * (unsigned __int8)v45; else v46 = v1 + 8 * v45; sub_60DDE0(a1, v18, v46, v44); v1 = *(_DWORD *)(v177 + 24); continue; case 0xBu: v47 = v3 >> 23; v173 = (v3 >> 14) & 0x1FF; v48 = sub_60BE10(a1); *(_DWORD *)v18 = v48; *(_DWORD *)(v18 + 4) = 2146936133; if ( v47 || v173 ) { v165 = sub_6044F0(v173); v49 = sub_6044F0(v47); sub_60C250(a1, v48, v49, v165); } if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) > 0 ) { *(_DWORD *)(a1 + 8) = v18 + 8; sub_600600(a1); *(_DWORD *)(a1 + 8) = *(_DWORD *)(v177 + 4); } v1 = *(_DWORD *)(v177 + 24); continue; case 0xCu: v50 = v1 + 8 * (v3 >> 23); *(_DWORD *)(v18 + 8) = *(_DWORD *)(v1 + 8 * (v3 >> 23)); v51 = v3 >> 14; *(_DWORD *)(v18 + 12) = *(_DWORD *)(v50 + 4); if ( v51 & 0x100 ) { v166 = v18; v164 = v176 + 8 * (unsigned __int8)v51; v163 = v50; } else { v166 = v18; v164 = v1 + 8 * (v51 & 0x1FF); v163 = v50; } LABEL_41: sub_60DC80(a1, v163, v164, v165); goto LABEL_42; case 0xDu: v52 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v53 = v176 + 8 * (unsigned __int8)v52; else v53 = v1 + 8 * v52; v54 = v3 >> 14; if ( v54 & 0x100 ) v55 = v176 + 8 * (unsigned __int8)v54; else v55 = v1 + 8 * (v54 & 0x1FF); if ( (*(_DWORD *)(v53 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v55 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v53, v55, 6); v1 = *(_DWORD *)(v177 + 24); } else { *(double *)v18 = *(double *)v55 + *(double *)v53; } continue; case 0xEu: v56 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v57 = v176 + 8 * (unsigned __int8)v56; else v57 = v1 + 8 * v56; v58 = v3 >> 14; if ( v58 & 0x100 ) v59 = v176 + 8 * (unsigned __int8)v58; else v59 = v1 + 8 * (v58 & 0x1FF); if ( (*(_DWORD *)(v57 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v59 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v57, v59, 7); v1 = *(_DWORD *)(v177 + 24); } else { *(double *)v18 = *(double *)v57 - *(double *)v59; } continue; case 0xFu: v60 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v61 = v176 + 8 * (unsigned __int8)v60; else v61 = v1 + 8 * v60; v62 = v3 >> 14; if ( v62 & 0x100 ) v63 = v176 + 8 * (unsigned __int8)v62; else v63 = v1 + 8 * (v62 & 0x1FF); if ( (*(_DWORD *)(v61 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v63 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v61, v63, 8); v1 = *(_DWORD *)(v177 + 24); } else { *(double *)v18 = *(double *)v63 * *(double *)v61; } continue; case 0x10u: v64 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v65 = v176 + 8 * (unsigned __int8)v64; else v65 = v1 + 8 * v64; v66 = v3 >> 14; if ( v66 & 0x100 ) v67 = v176 + 8 * (unsigned __int8)v66; else v67 = v1 + 8 * (v66 & 0x1FF); if ( (*(_DWORD *)(v65 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v67 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v65, v67, 9); v1 = *(_DWORD *)(v177 + 24); } else { *(double *)v18 = *(double *)v65 / *(double *)v67; } continue; case 0x11u: v68 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v69 = v176 + 8 * (unsigned __int8)v68; else v69 = v1 + 8 * v68; v70 = v3 >> 14; if ( v70 & 0x100 ) v71 = v176 + 8 * (unsigned __int8)v70; else v71 = v1 + 8 * (v70 & 0x1FF); if ( (*(_DWORD *)(v69 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v71 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v69, v71, 10); v1 = *(_DWORD *)(v177 + 24); } else { v172 = *(double *)v69; v170 = *(double *)v71; v72 = floor(v172 / v170); *(double *)v18 = v172 - v72 * v170; } continue; case 0x12u: v73 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v74 = v176 + 8 * (unsigned __int8)v73; else v74 = v1 + 8 * v73; v75 = v3 >> 14; if ( v75 & 0x100 ) v76 = v176 + 8 * (unsigned __int8)v75; else v76 = v1 + 8 * (v75 & 0x1FF); if ( (*(_DWORD *)(v74 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v76 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v74, v76, 11); v1 = *(_DWORD *)(v177 + 24); } else { *(long double *)v18 = pow(*(double *)v74, *(double *)v76); } continue; case 0x13u: v77 = v1 + 8 * (v3 >> 23); if ( (*(_DWORD *)(v77 + 4) & 0x7FFFFF00) == 2146936064 ) { loc_60E890(a1, v18, v77, v77, 12); v1 = *(_DWORD *)(v177 + 24); } else { *(double *)v18 = -*(double *)v77; } continue; case 0x14u: v78 = v3 >> 23; v79 = *(_DWORD *)(v1 + 8 * v78 + 4); if ( v79 != 2146936064 && (v79 != 2146936065 || *(_DWORD *)(v1 + 8 * v78)) ) { *(_DWORD *)v18 = 0; *(_DWORD *)(v18 + 4) = 2146936065; } else { *(_DWORD *)v18 = 1; *(_DWORD *)(v18 + 4) = 2146936065; } continue; case 0x15u: sub_60E7B0(a1, v18, v1 + 8 * (v3 >> 23)); v1 = *(_DWORD *)(v177 + 24); continue; case 0x16u: v80 = v3; v81 = (v3 >> 14) & 0x1FF; v80 >>= 23; *(_DWORD *)(a1 + 8) = v1 + 8 * v81 + 8; loc_60E430(a1, v81 - v80 + 1); v82 = *(_DWORD *)(v177 + 24); v83 = v82 + 8 * v175; v84 = v82 + 8 * v80; *(_DWORD *)v83 = *(_DWORD *)v84; *(_DWORD *)(v83 + 4) = *(_DWORD *)(v84 + 4); if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 12) <= 0 ) { v1 = *(_DWORD *)(v177 + 24); *(_DWORD *)(a1 + 8) = *(_DWORD *)(v177 + 4); } else { if ( v83 >= (unsigned int)v84 ) v84 = v83 + 8; *(_DWORD *)(a1 + 8) = v84; sub_600600(a1); v85 = v177; *(_DWORD *)(a1 + 8) = *(_DWORD *)(v177 + 4); v1 = *(_DWORD *)(v85 + 24); *(_DWORD *)(a1 + 8) = *(_DWORD *)(v85 + 4); } continue; case 0x17u: if ( v175 > 0 ) sub_5FE040(a1, *(_DWORD *)(v177 + 24) + 8 * v175 - 8); *(_DWORD *)(v177 + 28) += 4 * (v3 >> 14) - 524284; continue; case 0x18u: v86 = v3 >> 23; if ( (v3 >> 23) & 0x100 ) v87 = v176 + 8 * (unsigned __int8)v86; else v87 = v1 + 8 * v86; v88 = v3 >> 14; if ( v88 & 0x100 ) v89 = v176 + 8 * (unsigned __int8)v88; else v89 = v1 + 8 * (v88 & 0x1FF); if ( (*(_DWORD *)(v87 + 4) & 0x7FFFFF00) == 2146936064 ) v90 = *(_DWORD *)(v87 + 4) == *(_DWORD *)(v89 + 4); else v90 = (*(_DWORD *)(v89 + 4) & 0x7FFFFF00) != 2146936064; v91 = v90 && sub_60E2F0(a1, v87, (int *)v89); v92 = v177; if ( v91 == v175 ) { v93 = **(_DWORD **)(v177 + 28); if ( (signed int)((v93 >> 6) & 0xFF) > 0 ) sub_5FE040(a1, *(_DWORD *)(v177 + 24) + 8 * ((v93 >> 6) & 0xFF) - 8); v1 = *(_DWORD *)(v92 + 24); *(_DWORD *)(v92 + 28) += 4 * (v93 >> 14) - 524280; } else { *(_DWORD *)(v177 + 28) += 4; v1 = *(_DWORD *)(v92 + 24); } continue; case 0x19u: v94 = v3 >> 14; if ( (v3 >> 14) & 0x100 ) v95 = v176 + 8 * (unsigned __int8)v94; else v95 = v1 + 8 * (v94 & 0x1FF); v96 = v3 >> 23; if ( v96 & 0x100 ) v97 = v176 + 8 * (unsigned __int8)v96; else v97 = v1 + 8 * v96; v98 = a1; v99 = loc_60E180(a1, v97, v95); goto LABEL_178; case 0x1Au: v102 = v3 >> 14; if ( (v3 >> 14) & 0x100 ) v103 = v176 + 8 * (unsigned __int8)v102; else v103 = v1 + 8 * (v102 & 0x1FF); v104 = v3 >> 23; if ( v104 & 0x100 ) { v98 = a1; v99 = sub_60E220(a1, v176 + 8 * (unsigned __int8)v104, v103); } else { v105 = v1 + 8 * v104; v98 = a1; v99 = sub_60E220(a1, v105, v103); } LABEL_178: v100 = v177; if ( v99 == v175 ) { v101 = **(_DWORD **)(v177 + 28); if ( ((**(_DWORD **)(v177 + 28) >> 6) & 0xFF) > 0 ) sub_5FE040(v98, *(_DWORD *)(v177 + 24) + 8 * ((**(_DWORD **)(v177 + 28) >> 6) & 0xFF) - 8); v1 = *(_DWORD *)(v100 + 24); *(_DWORD *)(v100 + 28) += 4 * (v101 >> 14) - 524280; } else { *(_DWORD *)(v177 + 28) += 4; v1 = *(_DWORD *)(v100 + 24); } continue; case 0x1Bu: v106 = *(_DWORD *)(v18 + 4); if ( (unsigned int)&unk_7FC000 & v3 ) { if ( v106 != 2146936064 && (v106 != 2146936065 || *(_DWORD *)v18) ) goto LABEL_193; } else { if ( v106 == 2146936064 || v106 == 2146936065 && !*(_DWORD *)v18 ) { LABEL_193: v107 = v177; v108 = **(_DWORD **)(v177 + 28); goto LABEL_194; } } *(_DWORD *)(v177 + 28) += 4; continue; case 0x1Cu: v109 = *(_DWORD *)(v1 + 8 * (v3 >> 23) + 4); v110 = v1 + 8 * (v3 >> 23); if ( (unsigned int)&unk_7FC000 & v3 ) { if ( v109 == 2146936064 || v109 == 2146936065 && !*(_DWORD *)v110 ) goto LABEL_209; } else { if ( v109 != 2146936064 && (v109 != 2146936065 || *(_DWORD *)v110) ) { LABEL_209: *(_DWORD *)(v177 + 28) += 4; continue; } } *(_DWORD *)v18 = *(_DWORD *)v110; v107 = v177; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v110 + 4); v108 = **(_DWORD **)(v107 + 28); LABEL_194: if ( (signed int)((v108 >> 6) & 0xFF) > 0 ) { sub_5FE040(a1, *(_DWORD *)(v177 + 24) + 8 * ((v108 >> 6) & 0xFF) - 8); v107 = v177; } *(_DWORD *)(v107 + 28) += 4 * (v108 >> 14) - 524280; continue; case 0x1Du: v111 = v3 >> 23; v112 = ((v3 >> 14) & 0x1FF) - 1; if ( v111 ) *(_DWORD *)(a1 + 8) = v18 + 8 * v111; if ( !sub_5FD450(a1, v18, v112) ) { v144 = *(_DWORD *)(a1 + 16); *(_BYTE *)(v144 + 18) |= 4u; v177 = v144; goto LABEL_2; } if ( v112 < 0 ) { LABEL_42: v1 = *(_DWORD *)(v177 + 24); } else { v113 = v177; *(_DWORD *)(a1 + 8) = *(_DWORD *)(v177 + 4); v1 = *(_DWORD *)(v113 + 24); } continue; case 0x1Eu: v114 = v3 >> 23; if ( v114 ) *(_DWORD *)(a1 + 8) = v18 + 8 * v114; if ( sub_5FD450(a1, v18, -1) ) { v1 = *(_DWORD *)(v177 + 24); continue; } v145 = *(_DWORD *)(a1 + 16); v146 = *(_DWORD *)v145; v147 = *(_BYTE *)(*(_DWORD *)(**(_DWORD **)v145 + 12) + 76); v148 = *(_DWORD *)(v145 + 24); v149 = *(_DWORD *)(v145 + 8); v150 = *(_DWORD *)v149; v171 = *(_DWORD *)(a1 + 16); v151 = v148 + 8 * v147; v152 = *(_DWORD *)(v174 + 12); v6 = *(_DWORD *)(v152 + 56) == 0; v153 = *(_DWORD *)(v152 + 56) < 0; v175 = v151; if ( !(v153 | v6) ) sub_5FE040(a1, *(_DWORD *)(v149 + 24)); v173 = 0; if ( v146 < v175 ) { v154 = v146; v155 = 0; do { *(_DWORD *)(v155 + v150) = *(_DWORD *)v154; *(_DWORD *)(v155 + v150 + 4) = *(_DWORD *)(v154 + 4); v156 = v173 + 1; v173 = v156; v155 = 8 * v156; v154 = v155 + v146; } while ( v155 + v146 < v175 ); } v157 = v171; *(_DWORD *)(v149 + 24) = v150 + 8 * ((signed int)(*(_DWORD *)(v171 + 24) - v146) >> 3); v158 = v150 + 8 * ((signed int)(*(_DWORD *)(a1 + 8) - v146) >> 3); *(_DWORD *)(a1 + 8) = v158; *(_DWORD *)(v149 + 4) = v158; v159 = *(_DWORD *)(v157 + 28); *(_BYTE *)(v149 + 18) |= 0x40u; *(_DWORD *)(v149 + 28) = v159; *(_DWORD *)(a1 + 16) = v149; v177 = v149; goto LABEL_2; case 0x20u: v115 = *(double *)(v18 + 16); v116 = *(double *)v18 + v115; v117 = v115; v118 = *(double *)(v18 + 8); if ( v117 <= 0.0 ) { if ( v116 < v118 ) continue; } else { if ( v116 > v118 ) continue; } *(_DWORD *)(v177 + 28) += 4 * (v3 >> 14) - 524284; *(_QWORD *)v18 = *(_QWORD *)&v116; *(_QWORD *)(v18 + 24) = *(_QWORD *)&v116; continue; case 0x21u: v119 = *(_DWORD *)(v18 + 4); v120 = *(_DWORD *)(v18 + 4) & 0x7FFFFF00; v175 = v18 + 16; if ( v120 != 2146936064 ) goto LABEL_228; if ( (v119 | 0x70) == 2146936180 && sub_604790((char *)(*(_DWORD *)v18 + 16), *(_DWORD *)(*(_DWORD *)v18 + 12), (int)v169) ) { *(_QWORD *)v18 = *(_QWORD *)v169; LABEL_228: if ( (*(_DWORD *)(v18 + 12) & 0x7FFFFF00) == 2146936064 ) { if ( (*(_DWORD *)(v18 + 12) | 0x70) != 2146936180 || !sub_604790((char *)(*(_DWORD *)(v18 + 8) + 16), *(_DWORD *)(*(_DWORD *)(v18 + 8) + 12), (int)v168) || (*(_QWORD *)(v18 + 8) = *(_QWORD *)v168, v18 == -8) ) goto LABEL_291; } if ( (*(_DWORD *)(v175 + 4) & 0x7FFFFF00) == 2146936064 ) { if ( (*(_DWORD *)(v175 + 4) | 0x70) != 2146936180 || !sub_604790((char *)(*(_DWORD *)v175 + 16), *(_DWORD *)(*(_DWORD *)v175 + 12), (int)v167) || (v121 = v175, *(_QWORD *)v175 = *(_QWORD *)v167, (v175 = v121) == 0) ) return loc_5FC640(a1, "'for' step must be a number"); } *(double *)v18 = *(double *)v18 - *(double *)v175; LABEL_237: *(_DWORD *)(v177 + 28) += 4 * (v3 >> 14) - 524284; continue; } loc_5FC640(a1, "'for' initial value must be a number"); LABEL_291: loc_5FC640(a1, "'for' limit must be a number"); return loc_5FC640(a1, "'for' step must be a number"); case 0x22u: *(_DWORD *)(v18 + 40) = *(_DWORD *)(v18 + 16); *(_DWORD *)(v18 + 44) = *(_DWORD *)(v18 + 20); *(_DWORD *)(v18 + 32) = *(_DWORD *)(v18 + 8); *(_DWORD *)(v18 + 36) = *(_DWORD *)(v18 + 12); *(_DWORD *)(v18 + 24) = *(_DWORD *)v18; *(_DWORD *)(v18 + 28) = *(_DWORD *)(v18 + 4); *(_DWORD *)(a1 + 8) = v18 + 48; sub_5FD660(a1, v18 + 24, (v3 >> 14) & 0x1FF, 1); v1 = *(_DWORD *)(v177 + 24); v122 = v177; *(_DWORD *)(a1 + 8) = *(_DWORD *)(v177 + 4); v123 = *(unsigned int **)(v122 + 28); v3 = *v123; *(_DWORD *)(v122 + 28) = v123 + 1; v18 = v1 + 8 * ((v3 >> 6) & 0xFF); goto LABEL_239; case 0x23u: LABEL_239: if ( *(_DWORD *)(v18 + 12) == 2146936064 ) continue; *(_DWORD *)v18 = *(_DWORD *)(v18 + 8); *(_DWORD *)(v18 + 4) = *(_DWORD *)(v18 + 12); goto LABEL_237; case 0x24u: v124 = v3 >> 23; v125 = (v3 >> 14) & 0x1FF; v175 = v124; v126 = v125; if ( !v124 ) { v124 = ((*(_DWORD *)(a1 + 8) - v18) >> 3) - 1; v175 = ((*(_DWORD *)(a1 + 8) - v18) >> 3) - 1; } if ( !v125 ) { v127 = *(_DWORD *)(v177 + 28); v126 = *(_DWORD *)v127 >> 6; *(_DWORD *)(v177 + 28) = v127 + 4; } v128 = *(_DWORD *)v18; v129 = 50 * v126 + v124 - 50; v173 = v128; if ( v129 > *(_DWORD *)(v128 + 28) ) { sub_60C3C0(a1, v128, v129); v124 = v175; } if ( v124 > 0 ) { v130 = v18 + 8 * v175; do { sub_60C6F0(a1, v173, v129, v130); v131 = *(_DWORD *)(v130 + 4); --v129; if ( (*(_DWORD *)(v130 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v131) = 3; if ( v131 & 0x40 && *(_BYTE *)(*(_DWORD *)v130 + 5) & 3 && *(_BYTE *)(v173 + 5) & 4 ) sub_5FE230(a1, v173); v130 -= 8; --v175; } while ( v175 > 0 ); } *(_DWORD *)(a1 + 8) = *(_DWORD *)(v177 + 4); continue; case 0x25u: v132 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v174 + 12) + 16) + 4 * (v3 >> 14)); v171 = v174 + 16; v133 = sub_60E9B0(v132, v174 + 16, v1); if ( v133 ) { v135 = a1; *(_DWORD *)v18 = v133; *(_DWORD *)(v18 + 4) = 2146936134; } else { v134 = v132; v135 = a1; sub_60EA20(v18, a1, v134, v171, v1); } if ( *(_DWORD *)(*(_DWORD *)(v135 + 12) + 12) <= 0 ) goto LABEL_42; *(_DWORD *)(v135 + 8) = v18 + 8; sub_600600(v135); v136 = v177; *(_DWORD *)(v135 + 8) = *(_DWORD *)(v177 + 4); v1 = *(_DWORD *)(v136 + 24); continue; case 0x26u: v137 = (v3 >> 23) - 1; v138 = v137; v173 = v137; v139 = ((signed int)(v1 - *(_DWORD *)v177) >> 3) - *(_BYTE *)(*(_DWORD *)(v174 + 12) + 76) - 1; if ( v138 < 0 ) { v140 = a1; v138 = ((signed int)(v1 - *(_DWORD *)v177) >> 3) - *(_BYTE *)(*(_DWORD *)(v174 + 12) + 76) - 1; v141 = (*(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 8)) >> 3; v173 = ((signed int)(v1 - *(_DWORD *)v177) >> 3) - *(_BYTE *)(*(_DWORD *)(v174 + 12) + 76) - 1; if ( v141 <= v139 ) { sub_5FCD00(a1, v139); v140 = a1; v138 = v139; } v1 = *(_DWORD *)(v177 + 24); v18 = v1 + 8 * v175; *(_DWORD *)(v140 + 8) = v18 + 8 * v139; } v142 = 0; if ( v138 > 0 ) { v143 = v1 - 8 * v139; do { if ( v142 >= v139 ) { *(_DWORD *)(v18 + 4) = 2146936064; } else { *(_DWORD *)v18 = *(_DWORD *)v143; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v143 + 4); } ++v142; v143 += 8; v18 += 8; } while ( v142 < v173 ); } continue; case 0x1Fu: v160 = v3 >> 23; if ( v160 ) *(_DWORD *)(a1 + 8) = v18 + 8 * v160 - 8; if ( *(_DWORD *)(*(_DWORD *)(v174 + 12) + 56) > 0 ) sub_5FE040(a1, v1); result = sub_5FCF70(a1, v18); if ( !(*(_BYTE *)(v177 + 18) & 4) ) return result; v162 = *(_DWORD *)(a1 + 16); v177 = *(_DWORD *)(a1 + 16); if ( result ) *(_DWORD *)(a1 + 8) = *(_DWORD *)(v162 + 4); goto LABEL_2; default: continue; } } } // 60C250: using guessed type _DWORD __cdecl sub_60C250(_DWORD, _DWORD, _DWORD, _DWORD); // 60DC80: using guessed type _DWORD __cdecl sub_60DC80(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060FE90) -------------------------------------------------------- signed int __cdecl sub_60FE90(int a1) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@3 signed int result; // eax@3 v1 = a1; v2 = (*(int (__cdecl **)(_DWORD, _DWORD, _DWORD))(a1 + 8))(*(_DWORD *)(a1 + 16), *(_DWORD *)(a1 + 12), &a1); if ( v2 && a1 ) { v3 = a1 - 1; *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v1 = v3; LOBYTE(v3) = *(_BYTE *)v2; *(_DWORD *)(v1 + 4) = v2 + 1; result = (unsigned __int8)v3; } else { result = -1; } return result; } //----- (0060FED0) -------------------------------------------------------- int __cdecl sub_60FED0(int a1, int a2, int a3, int a4) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 16) = a1; *(_DWORD *)(a2 + 8) = a3; *(_DWORD *)(a2 + 12) = a4; *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; return result; } //----- (0060FF00) -------------------------------------------------------- size_t __cdecl sub_60FF00(int a1, void *a2, size_t a3) { size_t v3; // ebx@1 int v4; // eax@3 unsigned int v5; // ecx@5 int v6; // edx@5 int v7; // eax@5 size_t v8; // edi@7 v3 = a3; if ( !a3 ) return 0; while ( *(_DWORD *)a1 ) { LABEL_7: v8 = *(_DWORD *)a1; if ( v3 <= *(_DWORD *)a1 ) v8 = v3; memmove(a2, *(const void **)(a1 + 4), v8); *(_DWORD *)a1 -= v8; *(_DWORD *)(a1 + 4) += v8; a2 = (char *)a2 + v8; v3 -= v8; if ( !v3 ) return 0; } v4 = (*(int (__cdecl **)(_DWORD, _DWORD, size_t *))(a1 + 8))(*(_DWORD *)(a1 + 16), *(_DWORD *)(a1 + 12), &a3); if ( v4 ) { if ( a3 ) { v5 = a3 - 1; *(_DWORD *)(a1 + 4) = v4; *(_DWORD *)a1 = v5; v6 = *(_BYTE *)v4; v7 = v4 + 1; *(_DWORD *)(a1 + 4) = v7; if ( v6 != -1 ) { *(_DWORD *)a1 = v5 + 1; *(_DWORD *)(a1 + 4) = v7 - 1; goto LABEL_7; } } } return v3; } //----- (0060FF90) -------------------------------------------------------- int __cdecl sub_60FF90(int a1, int a2, unsigned int a3) { unsigned int v3; // esi@1 unsigned int v4; // eax@1 v3 = a3; v4 = *(_DWORD *)(a2 + 8); if ( a3 > v4 ) { if ( a3 < 0x20 ) v3 = 32; if ( v3 + 1 > 0xFFFFFFFD ) v4 = loc_603720(a1); *(_DWORD *)a2 = sub_603740(a1, *(_DWORD *)a2, v4, v3); *(_DWORD *)(a2 + 8) = v3; } return *(_DWORD *)a2; } // 603740: using guessed type _DWORD __cdecl sub_603740(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0060FFE0) -------------------------------------------------------- char __thiscall sub_60FFE0(int this, const char *a2, __int16 a3, int a4, int a5, int a6, int a7) { int v7; // eax@2 int v8; // eax@4 char v10; // [sp+0h] [bp-19B9Ch]@1 char v11; // [sp+19A64h] [bp-138h]@5 char v12; // [sp+19B64h] [bp-38h]@3 char v13; // [sp+19B84h] [bp-18h]@3 unsigned int v14; // [sp+19B8Ch] [bp-10h]@1 int v15; // [sp+19B98h] [bp-4h]@1 int v16; // [sp+19B9Ch] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; sub_610840((int)&v10, this); v15 = 0; if ( !sub_610DA0((int)&v10, 16) ) { v7 = GetLastError(); sub_65D284((int)"Error! %d\n", v7); } sub_610850((int)&v10, a3); sub_610890((int)&v10, a2); sub_6108D0((int)&v10, "GR.php"); sub_610910((int)&v10, (int)&off_700094, a4); sub_610910((int)&v10, (int)"title", (int)"Fiesta"); sub_610910((int)&v10, (int)"nation", a7); sub_610910((int)&v10, (int)"pw", (int)"wkdbdmldutlstkd"); sprintf(&v13, "%d", a5); sub_610910((int)&v10, (int)"world", (int)&v13); sprintf(&v12, "Zone%d", a6); sub_610910((int)&v10, (int)"machine", (int)&v12); if ( !sub_610E60((int)&v10) ) { v8 = GetLastError(); sub_65D284((int)"Error! %d\n", v8); } sub_610AF0((int)&v10, (int)&v11); v15 = -1; nullsub_2(&v10); return 1; } // 700094: using guessed type void *off_700094; // 86FEB8: using guessed type int __security_cookie; //----- (00610190) -------------------------------------------------------- int __thiscall sub_610190(int this) { int v1; // edi@1 unsigned int v2; // esi@2 int v3; // edx@4 int v4; // eax@6 int v5; // eax@7 int v6; // edx@8 int result; // eax@9 int v8; // eax@11 signed int v9; // eax@13 v1 = *(_DWORD *)(this + 16); if ( *(_DWORD *)(this + 28) < v1 ) { v2 = *(_DWORD *)(this + 20); do { if ( v2 < 0x10 ) v3 = this; else v3 = *(_DWORD *)this; v4 = *(_DWORD *)(this + 28); if ( *(_BYTE *)(v4 + v3) > 32 ) break; v5 = v4 + 1; *(_DWORD *)(this + 28) = v5; } while ( v5 < v1 ); } v6 = *(_DWORD *)(this + 28); if ( v6 < v1 ) { if ( *(_DWORD *)(this + 20) < 0x10u ) v8 = this; else v8 = *(_DWORD *)this; v9 = *(_BYTE *)(v6 + v8); if ( v9 >= 48 ) { if ( v9 > 57 ) { if ( v9 >= 65 ) { if ( v9 > 70 ) { result = 15; *(_DWORD *)(this + 28) = v6 + 1; } else { result = v9 - 55; *(_DWORD *)(this + 28) = v6 + 1; } } else { result = 10; *(_DWORD *)(this + 28) = v6 + 1; } } else { result = v9 - 48; *(_DWORD *)(this + 28) = v6 + 1; } } else { result = 0; *(_DWORD *)(this + 28) = v6 + 1; } } else { result = -1; *(_DWORD *)(this + 28) = v6 + 1; } return result; } //----- (00610220) -------------------------------------------------------- int __thiscall sub_610220(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 20) = 15; *(_DWORD *)(this + 16) = 0; *(_BYTE *)this = 0; return result; } //----- (00610240) -------------------------------------------------------- void __thiscall sub_610240(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 20) >= 0x10u ) operator delete(*(void **)this); *(_DWORD *)(v1 + 20) = 15; *(_DWORD *)(v1 + 16) = 0; *(_BYTE *)v1 = 0; } //----- (00610270) -------------------------------------------------------- int __thiscall sub_610270(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // ebx@1 unsigned int v6; // ecx@2 int v7; // edx@3 int v8; // eax@5 int v9; // ecx@6 int result; // eax@11 v4 = 0; v5 = this; if ( a4 <= 0 ) { result = a2; } else { do { v6 = *(_DWORD *)(a2 + 20); if ( v6 < 0x10 ) v7 = a2; else v7 = *(_DWORD *)a2; v8 = v7 + *(_DWORD *)(a2 + 16); if ( v6 < 0x10 ) v9 = a2; else v9 = *(_DWORD *)a2; if ( v8 ) v8 -= v9; sub_4DCC50(a2, v8, 1u, *((_BYTE *)v5 + (a3 + v4++ + *((_DWORD *)v5 + 64)) % 256)); } while ( v4 < a4 ); result = a2; } return result; } //----- (006102F0) -------------------------------------------------------- int __thiscall sub_6102F0(int this, signed __int64 a2, signed __int64 a3) { int v3; // esi@1 int i; // eax@1 unsigned int v5; // edi@2 unsigned int v6; // ebx@2 unsigned __int64 v7; // kr00_8@4 unsigned int v8; // esi@5 signed __int64 v9; // qax@5 void *v10; // ecx@8 int v11; // ecx@10 void *v12; // edx@10 void *v13; // eax@14 int v14; // eax@16 void *v15; // ecx@16 void *v16; // eax@20 int v17; // eax@22 void *v18; // ecx@22 int v19; // ecx@26 void *v20; // eax@28 int v21; // ecx@28 int v22; // edx@28 int v23; // edi@28 int v24; // eax@28 unsigned int v25; // eax@28 unsigned int v27; // [sp+Ch] [bp-44h]@5 int v28; // [sp+14h] [bp-3Ch]@3 int v29; // [sp+18h] [bp-38h]@1 signed int v30; // [sp+1Ch] [bp-34h]@5 void *v31; // [sp+24h] [bp-2Ch]@1 int v32; // [sp+28h] [bp-28h]@28 int v33; // [sp+2Ch] [bp-24h]@28 int v34; // [sp+30h] [bp-20h]@28 int v35; // [sp+34h] [bp-1Ch]@1 unsigned int v36; // [sp+38h] [bp-18h]@1 unsigned int v37; // [sp+40h] [bp-10h]@1 int v38; // [sp+4Ch] [bp-4h]@1 int v39; // [sp+50h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v3 = this; v29 = this; *(_DWORD *)(this + 28) = sub_58FD10(this, (int)")}]", 0x300000000ui64) + 3; v36 = 15; v38 = 0; v35 = 0; LOBYTE(v31) = 0; for ( i = sub_610190(v3); i != -1; v3 = v19 ) { v5 = 0; v6 = 0; if ( i > 0 ) { v28 = i; do { v7 = sub_610190(v3) + 16 * __PAIR__(v6, v5); v6 = HIDWORD(v7); v5 = v7; --v28; } while ( v28 ); } v8 = 0; v9 = 1i64; v30 = 1; v27 = 0; if ( a3 > 0 ) { do { v9 = (signed __int64)(v9 * __PAIR__(v6, v5)) % a2; v8 = (__PAIR__(v8, v27++) + 1) >> 32; } while ( (signed __int64)__PAIR__(v8, v27) < a3 ); v30 = v9; } v10 = v31; if ( v36 < 0x10 ) v10 = &v31; v11 = (int)((char *)v10 + v35); v12 = v31; if ( v36 < 0x10 ) v12 = &v31; if ( v11 ) v11 -= (signed int)v12; sub_4DCC50((int)&v31, v11, 1u, v9); v13 = v31; if ( v36 < 0x10 ) v13 = &v31; v14 = (int)((char *)v13 + v35); v15 = v31; if ( v36 < 0x10 ) v15 = &v31; if ( v14 ) v14 -= (signed int)v15; sub_4DCC50((int)&v31, v14, 1u, SBYTE1(v30)); v16 = v31; if ( v36 < 0x10 ) v16 = &v31; v17 = (int)((char *)v16 + v35); v18 = v31; if ( v36 < 0x10 ) v18 = &v31; if ( v17 ) v17 -= (signed int)v18; sub_4DCC50((int)&v31, v17, 1u, SBYTE2(v30)); i = sub_610190(v29); } if ( (void **)v3 != &v31 ) { v20 = *(void **)v3; v21 = *(_DWORD *)(v3 + 4); v22 = *(_DWORD *)(v3 + 8); v23 = *(_DWORD *)(v3 + 12); *(_DWORD *)v3 = v31; *(_DWORD *)(v3 + 4) = v32; *(_DWORD *)(v3 + 8) = v33; *(_DWORD *)(v3 + 12) = v34; v31 = v20; v24 = *(_DWORD *)(v3 + 16); v32 = v21; *(_DWORD *)(v3 + 16) = v35; v33 = v22; v35 = v24; v25 = *(_DWORD *)(v3 + 20); v34 = v23; *(_DWORD *)(v3 + 20) = v36; v36 = v25; } if ( v36 >= 0x10 ) operator delete(v31); return v3; } // 86FEB8: using guessed type int __security_cookie; //----- (006104F0) -------------------------------------------------------- int __thiscall sub_6104F0(int this) { int v1; // esi@1 unsigned int v2; // edi@1 int v3; // eax@2 char *v4; // eax@5 signed int v5; // edx@7 unsigned int v6; // eax@10 int v7; // ecx@11 int v8; // edx@14 char *v9; // eax@15 void *v10; // eax@17 int v11; // eax@19 void *v12; // ecx@19 int v13; // eax@24 char *v14; // ecx@28 int v15; // ebx@30 char *v16; // eax@31 int v17; // edi@33 bool v18; // cf@33 char *v19; // eax@34 int v20; // eax@36 unsigned int v21; // edx@36 int v22; // edi@37 int v23; // ecx@39 int v24; // edx@40 unsigned int v25; // ecx@44 void *v26; // edx@44 int i; // edi@44 void **v28; // eax@45 void *v29; // eax@47 int v30; // eax@49 void *v31; // ecx@49 void *v32; // eax@53 void *v33; // eax@60 int v34; // ecx@60 int v35; // edx@60 int v36; // edi@60 int v37; // eax@60 unsigned int v38; // eax@60 char v40; // [sp+Ch] [bp-15Ch]@36 char v41; // [sp+10h] [bp-158h]@17 char v42; // [sp+14h] [bp-154h]@47 int v43; // [sp+18h] [bp-150h]@0 int v44; // [sp+18h] [bp-150h]@14 int v45; // [sp+18h] [bp-150h]@58 char v46[256]; // [sp+1Ch] [bp-14Ch]@4 int v47; // [sp+11Ch] [bp-4Ch]@4 void *v48; // [sp+120h] [bp-48h]@33 int v49; // [sp+130h] [bp-38h]@33 unsigned int v50; // [sp+134h] [bp-34h]@33 void *v51; // [sp+13Ch] [bp-2Ch]@4 int v52; // [sp+140h] [bp-28h]@60 int v53; // [sp+144h] [bp-24h]@60 int v54; // [sp+148h] [bp-20h]@60 int v55; // [sp+14Ch] [bp-1Ch]@4 unsigned int v56; // [sp+150h] [bp-18h]@4 unsigned int v57; // [sp+158h] [bp-10h]@1 int v58; // [sp+164h] [bp-4h]@4 int v59; // [sp+168h] [bp+0h]@1 v57 = (unsigned int)&v59 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 20); if ( v2 < 0x10 ) v3 = this; else v3 = *(_DWORD *)this; LOBYTE(v43) = *(_BYTE *)v3; v47 = 0; memset(v46, v43, 0x100u); v56 = 15; v58 = 0; v55 = 0; LOBYTE(v51) = 0; if ( v2 < 0x10 ) v4 = (char *)v1; else v4 = *(char **)v1; sub_4DCC50((int)&v51, 0, 1u, *v4); v5 = 1; if ( *(_DWORD *)(v1 + 16) > 1 ) { while ( 1 ) { v6 = *(_DWORD *)(v1 + 20); v7 = v6 < 0x10 ? v1 : *(_DWORD *)v1; if ( *(_BYTE *)(v7 + v5) ) { if ( v6 < 0x10 ) v14 = (char *)v1; else v14 = *(char **)v1; v15 = (unsigned __int8)v14[v5]; if ( v6 < 0x10 ) v16 = (char *)v1; else v16 = *(char **)v1; v17 = (unsigned __int8)v16[v5 + 1]; v44 = v5 + 2; v50 = 15; v49 = 0; LOBYTE(v48) = 0; sub_4241C0((int)&v48, byte_6A492E, 0); v18 = *(_DWORD *)(v1 + 20) < 0x10u; LOBYTE(v58) = 1; if ( v18 ) v19 = (char *)v1; else v19 = *(char **)v1; v40 = v19[v44]; v20 = sub_610270(v46, (int)&v48, v15, v17); v21 = *(_DWORD *)(v20 + 20); if ( v21 < 0x10 ) v22 = v20; else v22 = *(_DWORD *)v20; v23 = v22 + *(_DWORD *)(v20 + 16); if ( v21 < 0x10 ) v24 = v20; else v24 = *(_DWORD *)v20; if ( v23 ) v23 -= v24; sub_4DCC50(v20, v23, 1u, v40); v25 = v50; v26 = v48; for ( i = 0; i < v49; v47 = (v47 + 1) % 256 ) { v28 = (void **)v26; if ( v25 < 0x10 ) v28 = &v48; v42 = *((_BYTE *)v28 + i); v29 = v51; if ( v56 < 0x10 ) v29 = &v51; v30 = (int)((char *)v29 + v55); v31 = v51; if ( v56 < 0x10 ) v31 = &v51; if ( v30 ) v30 -= (signed int)v31; sub_4DCC50((int)&v51, v30, 1u, v42); v25 = v50; v26 = v48; v32 = v48; if ( v50 < 0x10 ) v32 = &v48; v46[v47] = *((_BYTE *)v32 + i++); } LOBYTE(v58) = 0; if ( v25 >= 0x10 ) operator delete(v26); } else { v8 = v5 + 1; v44 = v8; if ( v6 < 0x10 ) v9 = (char *)v1; else v9 = *(char **)v1; v41 = v9[v8]; v10 = v51; if ( v56 < 0x10 ) v10 = &v51; v11 = (int)((char *)v10 + v55); v12 = v51; if ( v56 < 0x10 ) v12 = &v51; if ( v11 ) v11 -= (signed int)v12; sub_4DCC50((int)&v51, v11, 1u, v41); v13 = *(_DWORD *)(v1 + 20) < 0x10u ? v1 : *(_DWORD *)v1; v46[v47] = *(_BYTE *)(v13 + v44); v47 = (v47 + 1) % 256; } v45 = v44 + 1; if ( v45 >= *(_DWORD *)(v1 + 16) ) break; v5 = v45; } } if ( (void **)v1 != &v51 ) { v33 = *(void **)v1; v34 = *(_DWORD *)(v1 + 4); v35 = *(_DWORD *)(v1 + 8); v36 = *(_DWORD *)(v1 + 12); *(_DWORD *)v1 = v51; *(_DWORD *)(v1 + 4) = v52; *(_DWORD *)(v1 + 8) = v53; *(_DWORD *)(v1 + 12) = v54; v51 = v33; v37 = *(_DWORD *)(v1 + 16); v53 = v35; *(_DWORD *)(v1 + 16) = v55; v52 = v34; v55 = v37; v38 = *(_DWORD *)(v1 + 20); v54 = v36; *(_DWORD *)(v1 + 20) = v56; v56 = v38; } if ( v56 >= 0x10 ) operator delete(v51); return v1; } // 86FEB8: using guessed type int __security_cookie; // 6104F0: using guessed type char var_14C[256]; //----- (00610840) -------------------------------------------------------- int __thiscall sub_610840(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)(this + 16) = a2; return result; } //----- (00610850) -------------------------------------------------------- signed int __thiscall sub_610850(int this, __int16 a2) { signed int result; // eax@2 if ( !a2 || *(_BYTE *)(this + 1564) ) { result = 0; } else { *(_BYTE *)(this + 1564) = 1; *(_WORD *)(this + 1566) = a2; result = 1; } return result; } //----- (00610890) -------------------------------------------------------- signed int __thiscall sub_610890(int this, const char *a2) { int v2; // esi@1 signed int result; // eax@2 v2 = this; if ( !a2 || *(_BYTE *)(this + 1568) ) { result = 0; } else { strncpy((char *)(this + 1569), a2, 0x40u); result = 1; ++*(_BYTE *)(v2 + 1568); } return result; } //----- (006108D0) -------------------------------------------------------- signed int __thiscall sub_6108D0(int this, const char *a2) { int v2; // esi@1 signed int result; // eax@2 v2 = this; if ( !a2 || *(_BYTE *)(this + 1907) ) { result = 0; } else { strncpy((char *)(this + 1908), a2, 0x40u); result = 1; ++*(_BYTE *)(v2 + 1907); } return result; } //----- (00610910) -------------------------------------------------------- signed int __thiscall sub_610910(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 unsigned int v5; // eax@4 v3 = this; if ( a2 && a3 && (v5 = *(_DWORD *)(this + 1972), v5 < 0xC) ) { _snprintf((char *)((v5 << 7) + this + 1976), 0x80u, "%s=%s", a2, a3); result = 1; ++*(_DWORD *)(v3 + 1972); } else { result = 0; } return result; } //----- (00610970) -------------------------------------------------------- int __thiscall sub_610970(int this) { int v1; // esi@1 int v2; // eax@6 unsigned int v3; // edi@7 int v4; // ebx@8 int result; // eax@11 v1 = this; if ( *(_BYTE *)(this + 1633) ) { *(_DWORD *)(this + 4028) += _snprintf( (char *)(*(_DWORD *)(this + 4028) + this + 4032), 1024 - *(_DWORD *)(this + 4028), off_7000C4, this + 1634); *(_BYTE *)(v1 + 1633) = 0; } if ( *(_BYTE *)(v1 + 1890) ) { *(_DWORD *)(v1 + 4028) += _snprintf( (char *)(*(_DWORD *)(v1 + 4028) + v1 + 4032), 1024 - *(_DWORD *)(v1 + 4028), off_7000C4, v1 + 1891); *(_BYTE *)(v1 + 1890) = 0; } if ( *(_BYTE *)(v1 + 1907) ) { *(_DWORD *)(v1 + 4028) += _snprintf( (char *)(*(_DWORD *)(v1 + 4028) + v1 + 4032), 1024 - *(_DWORD *)(v1 + 4028), "/%s?", v1 + 1908); v2 = *(_DWORD *)(v1 + 1972); *(_BYTE *)(v1 + 1907) = 0; if ( v2 ) { v3 = 0; if ( v2 ) { v4 = v1 + 1976; do { *(_DWORD *)(v1 + 4028) += _snprintf( (char *)(*(_DWORD *)(v1 + 4028) + v1 + 4032), 1024 - *(_DWORD *)(v1 + 4028), "%s&", v4); ++v3; v4 += 128; } while ( v3 < *(_DWORD *)(v1 + 1972) ); } --*(_DWORD *)(v1 + 4028); *(_BYTE *)(*(_DWORD *)(v1 + 4028) + v1 + 4032) = 0; *(_DWORD *)(v1 + 1972) = 0; } result = v1 + 4032; } else { result = 0; } return result; } //----- (00610AC0) -------------------------------------------------------- void *__thiscall sub_610AC0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7000CC; sub_5D5420((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7000CC: using guessed type int (__thiscall *off_7000CC)(void *, char); //----- (00610AF0) -------------------------------------------------------- signed int __thiscall sub_610AF0(int this, int a2) { int v2; // edx@1 signed int result; // eax@2 char *v4; // eax@4 char v5; // cl@5 size_t v6; // edi@6 char *v7; // eax@6 char v8; // cl@7 int v9; // esi@8 int v10; // eax@11 signed int v11; // eax@16 int v12; // edx@17 int v13; // ecx@17 char v14; // cl@19 int v15; // ecx@20 char v16; // cl@22 int v17; // ecx@23 char v18; // cl@25 int v19; // ecx@26 char v20; // cl@28 int v21; // esi@34 int v22; // eax@35 signed int v23; // eax@40 int v24; // ecx@41 char v25; // cl@43 int v26; // ecx@44 char v27; // cl@46 int v28; // ecx@47 char v29; // cl@49 int v30; // ecx@50 char v31; // cl@52 size_t v32; // [sp+4h] [bp-34h]@8 int v33; // [sp+8h] [bp-30h]@1 char v34[4]; // [sp+Ch] [bp-2Ch]@4 __int16 v35; // [sp+10h] [bp-28h]@4 int v36; // [sp+12h] [bp-26h]@4 int v37; // [sp+16h] [bp-22h]@4 int v38; // [sp+1Ah] [bp-1Eh]@4 __int16 v39; // [sp+1Eh] [bp-1Ah]@4 char v40[4]; // [sp+20h] [bp-18h]@4 int v41; // [sp+24h] [bp-14h]@4 int v42; // [sp+28h] [bp-10h]@4 char v43; // [sp+2Ch] [bp-Ch]@4 int v44; // [sp+2Dh] [bp-Bh]@4 __int16 v45; // [sp+31h] [bp-7h]@4 char v46; // [sp+33h] [bp-5h]@4 unsigned int v47; // [sp+34h] [bp-4h]@1 int v48; // [sp+38h] [bp+0h]@1 v47 = (unsigned int)&v48 ^ __security_cookie; v2 = this; v33 = this; if ( a2 && *(_BYTE *)(this + 5056) ) { *(_DWORD *)v34 = dword_7000E4; v36 = 0; v37 = 0; v38 = 0; v39 = 0; *(_DWORD *)v40 = dword_7000D4; v35 = word_7000E8; v42 = dword_7000DC; v41 = dword_7000D8; v44 = 0; v45 = 0; v46 = 0; v4 = v34; v43 = byte_7000E0; do v5 = *v4++; while ( v5 ); v6 = v4 - &v34[1]; v7 = v40; do v8 = *v7++; while ( v8 ); v9 = 0; v32 = v7 - &v40[1]; if ( *(_DWORD *)(v2 + 12) <= 0 ) goto LABEL_9; while ( 1 ) { v10 = *(_DWORD *)(v2 + 16); if ( *(_DWORD *)(v10 + 20) >= 0x10u ) v10 = *(_DWORD *)v10; if ( !strncmp((const char *)(v9 + v10), v34, v6) ) break; ++v9; if ( v9 >= *(_DWORD *)(v33 + 12) ) goto LABEL_9; v2 = v33; } v11 = 0; do { v12 = v33; v13 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v13 + 20) >= 0x10u ) v13 = *(_DWORD *)v13; v14 = *(_BYTE *)(v9 + v11 + v13 + v6 + 3); *(_BYTE *)(a2 + v11) = v14; if ( v14 == 34 ) break; v15 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v15 + 20) >= 0x10u ) v15 = *(_DWORD *)v15; v16 = *(_BYTE *)(v9 + v11 + v15 + v6 + 4); *(_BYTE *)(a2 + v11 + 1) = v16; if ( v16 == 34 ) { ++v11; break; } v17 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v17 + 20) >= 0x10u ) v17 = *(_DWORD *)v17; v18 = *(_BYTE *)(v9 + v11 + v17 + v6 + 5); *(_BYTE *)(a2 + v11 + 2) = v18; if ( v18 == 34 ) { v11 += 2; break; } v19 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v19 + 20) >= 0x10u ) v19 = *(_DWORD *)v19; v20 = *(_BYTE *)(v9 + v11 + v19 + v6 + 6); *(_BYTE *)(a2 + v11 + 3) = v20; if ( v20 == 34 ) { v11 += 3; break; } v11 += 4; } while ( v11 < 128 ); *(_BYTE *)(a2 + v11) = 0; v21 = v9 + v6 + v11 + 3; if ( v21 >= *(_DWORD *)(v33 + 12) ) { LABEL_9: result = 0; } else { while ( 1 ) { v22 = *(_DWORD *)(v12 + 16); if ( *(_DWORD *)(v22 + 20) >= 0x10u ) v22 = *(_DWORD *)v22; if ( !strncmp((const char *)(v21 + v22), v40, v32) ) break; v12 = v33; ++v21; if ( v21 >= *(_DWORD *)(v33 + 12) ) goto LABEL_9; } v23 = 0; while ( 1 ) { v24 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v24 + 20) >= 0x10u ) v24 = *(_DWORD *)v24; v25 = *(_BYTE *)(v21 + v23 + v24 + v32 + 3); *(_BYTE *)(a2 + v23 + 128) = v25; if ( v25 == 34 ) break; v26 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v26 + 20) >= 0x10u ) v26 = *(_DWORD *)v26; v27 = *(_BYTE *)(v21 + v23 + v26 + v32 + 4); *(_BYTE *)(a2 + v23 + 129) = v27; if ( v27 == 34 ) { *(_BYTE *)(a2 + v23 + 1 + 128) = 0; goto LABEL_59; } v28 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v28 + 20) >= 0x10u ) v28 = *(_DWORD *)v28; v29 = *(_BYTE *)(v21 + v23 + v28 + v32 + 5); *(_BYTE *)(a2 + v23 + 130) = v29; if ( v29 == 34 ) { *(_BYTE *)(a2 + v23 + 2 + 128) = 0; goto LABEL_59; } v30 = *(_DWORD *)(v33 + 16); if ( *(_DWORD *)(v30 + 20) >= 0x10u ) v30 = *(_DWORD *)v30; v31 = *(_BYTE *)(v21 + v23 + v30 + v32 + 6); *(_BYTE *)(a2 + v23 + 131) = v31; if ( v31 == 34 ) { v23 += 3; break; } v23 += 4; if ( v23 >= 128 ) { *(_BYTE *)(a2 + v23 + 128) = 0; goto LABEL_59; } } *(_BYTE *)(a2 + v23 + 128) = 0; LABEL_59: result = 1; } } else { result = 0; } return result; } // 7000D4: using guessed type int dword_7000D4; // 7000D8: using guessed type int dword_7000D8; // 7000DC: using guessed type int dword_7000DC; // 7000E0: using guessed type char byte_7000E0; // 7000E4: using guessed type int dword_7000E4; // 7000E8: using guessed type __int16 word_7000E8; // 86FEB8: using guessed type int __security_cookie; //----- (00610DA0) -------------------------------------------------------- signed int __thiscall sub_610DA0(int this, char Buffer) { int v2; // esi@1 int v3; // eax@1 bool v4; // cf@1 HINTERNET v5; // eax@3 signed int result; // eax@4 v2 = this; v3 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 20) = 0; v4 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = 0; if ( !v4 ) v3 = *(_DWORD *)v3; *(_BYTE *)v3 = 0; memset((void *)(this + 1564), 0, 0xDA4u); v5 = InternetOpenA("HTTP_CONNECT", 0, 0, 0, 0); *(_DWORD *)v2 = v5; if ( v5 ) { InternetSetOptionA(v5, 2u, &Buffer, 4u); InternetSetOptionA(*(HINTERNET *)v2, 6u, &Buffer, 4u); InternetSetOptionA(*(HINTERNET *)v2, 5u, &Buffer, 4u); InternetSetOptionA(*(HINTERNET *)v2, 7u, &Buffer, 4u); InternetSetOptionA(*(HINTERNET *)v2, 8u, &Buffer, 4u); result = 1; } else { *(_DWORD *)(v2 + 20) = GetLastError(); result = 0; } return result; } //----- (00610E60) -------------------------------------------------------- signed int __thiscall sub_610E60(int this) { int v1; // esi@1 INTERNET_PORT v2; // ST08_2@1 void *v3; // ST00_4@1 HINTERNET v4; // eax@1 int v6; // eax@4 HINTERNET v7; // eax@5 void *i; // edi@7 DWORD v9; // ecx@11 char *v10; // eax@12 char v11; // cl@13 DWORD v12; // eax@14 DWORD dwNumberOfBytesRead; // [sp+4h] [bp-110h]@11 DWORD dwBufferLength; // [sp+8h] [bp-10Ch]@7 char Buffer; // [sp+Ch] [bp-108h]@10 char v16; // [sp+Dh] [bp-107h]@10 unsigned int v17; // [sp+110h] [bp-4h]@1 int v18; // [sp+114h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v1 = this; v2 = *(_WORD *)(this + 1566); v3 = *(void **)this; *(_BYTE *)(this + 5056) = 0; v4 = InternetConnectA(v3, (LPCSTR)(this + 1569), v2, 0, 0, 3u, 0, 0); *(_DWORD *)(v1 + 4) = v4; if ( !v4 ) goto LABEL_20; v6 = sub_610970(v1); if ( !v6 ) return 0; v7 = HttpOpenRequestA(*(HINTERNET *)(v1 + 4), "GET", (LPCSTR)v6, 0, 0, 0, 0, 0); *(_DWORD *)(v1 + 8) = v7; if ( !v7 || !HttpSendRequestA(v7, 0, 0, 0, 0) ) { LABEL_20: *(_DWORD *)(v1 + 20) = GetLastError(); return 0; } dwBufferLength = 10; for ( i = malloc(0xBu); !HttpQueryInfoA(*(HINTERNET *)(v1 + 8), 0x13u, i, &dwBufferLength, 0); i = malloc(dwBufferLength + 1) ) { if ( GetLastError() != 122 ) break; free(i); } Buffer = 0; memset(&v16, 0, 0x100u); *(_DWORD *)(v1 + 12) = 0; while ( 1 ) { InternetReadFile(*(HINTERNET *)(v1 + 8), &Buffer, 0x100u, &dwNumberOfBytesRead); v9 = dwNumberOfBytesRead + *(_DWORD *)(v1 + 12); *(&Buffer + dwNumberOfBytesRead) = 0; if ( v9 >= 0x186A0 ) break; v10 = &Buffer; do v11 = *v10++; while ( v11 ); sub_476F60(*(_DWORD *)(v1 + 16), &Buffer, v10 - &v16); v12 = dwNumberOfBytesRead; *(_DWORD *)(v1 + 12) += dwNumberOfBytesRead; *(_BYTE *)(v1 + 5056) = 1; if ( !v12 ) goto LABEL_17; } *(_BYTE *)(v1 + 5056) = 0; LABEL_17: InternetCloseHandle(*(HINTERNET *)(v1 + 8)); InternetCloseHandle(*(HINTERNET *)(v1 + 4)); InternetCloseHandle(*(HINTERNET *)v1); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00611040) -------------------------------------------------------- signed int __cdecl sub_611040(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11) { signed int result; // eax@4 int v12; // eax@5 if ( !(dword_14D40EF4 & 1) ) { dword_14D40EF4 |= 1u; dword_14D40EE8 = 0; dword_14D40EF0 = 0; atexit(nullsub_181); } LOWORD(dword_14D40AE8) = dword_14D40AE8 & 0x3FF | 0x400; LOWORD(dword_14D40AE8) = dword_14D40AE8 & 0xFFEC | 0x3EC; *(int *)((char *)&dword_14D40AE8 + 2) = a1; dword_14D40AEE = a2; dword_14D40AF2 = a3; dword_14D40AF6 = a4; dword_14D40AFA = a5; dword_14D40AFE = a6; dword_14D40B02 = a7; dword_14D40B06 = a8; dword_14D40B0A = a9; dword_14D40EE8 = (int)&dword_14D40AE8; dword_14D40EEC = 1024; dword_14D40B0E = a10; dword_14D40B12 = a11; if ( sub_4C81E0(&dword_14D40EE8, 46) ) { v12 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&dword_14D40EE8, v12); result = 1; } else { sub_639100(&unk_86DDD8, (int)"Send_NC_LOG_GAME_DATA_TYPE_4 : Packet Too Long", 46); result = 1; } return result; } // 14D148D0: using guessed type int dword_14D148D0; // 14D40AE8: using guessed type int dword_14D40AE8; // 14D40AEE: using guessed type int dword_14D40AEE; // 14D40AF2: using guessed type int dword_14D40AF2; // 14D40AF6: using guessed type int dword_14D40AF6; // 14D40AFA: using guessed type int dword_14D40AFA; // 14D40AFE: using guessed type int dword_14D40AFE; // 14D40B02: using guessed type int dword_14D40B02; // 14D40B06: using guessed type int dword_14D40B06; // 14D40B0A: using guessed type int dword_14D40B0A; // 14D40B0E: using guessed type int dword_14D40B0E; // 14D40B12: using guessed type int dword_14D40B12; // 14D40EE8: using guessed type int dword_14D40EE8; // 14D40EEC: using guessed type int dword_14D40EEC; // 14D40EF0: using guessed type int dword_14D40EF0; // 14D40EF4: using guessed type int dword_14D40EF4; //----- (00611160) -------------------------------------------------------- signed int __cdecl sub_611160(int a1, int a2, int a3, int a4) { signed int result; // eax@4 int v5; // eax@5 if ( !(dword_14D41304 & 1) ) { dword_14D41304 |= 1u; dword_14D412F8 = 0; dword_14D41300 = 0; atexit(nullsub_182); } LOWORD(dword_14D40EF8) = dword_14D40EF8 & 0x3FF | 0x400; LOWORD(dword_14D40EF8) = dword_14D40EF8 & 0xFFED | 0x3ED; *(int *)((char *)&dword_14D40EF8 + 2) = a1; dword_14D40F02 = a3; dword_14D412F8 = (int)&dword_14D40EF8; dword_14D412FC = 1024; dword_14D40EFE = a2; dword_14D40F06 = a4; if ( sub_4C81E0(&dword_14D412F8, 18) ) { v5 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&dword_14D412F8, v5); result = 1; } else { sub_639100(&unk_86DDD8, (int)"Send_NC_LOG_GAME_DATA_TYPE_5 : Packet Too Long", 18); result = 1; } return result; } // 14D148D0: using guessed type int dword_14D148D0; // 14D40EF8: using guessed type int dword_14D40EF8; // 14D40EFE: using guessed type int dword_14D40EFE; // 14D40F02: using guessed type int dword_14D40F02; // 14D40F06: using guessed type int dword_14D40F06; // 14D412F8: using guessed type int dword_14D412F8; // 14D412FC: using guessed type int dword_14D412FC; // 14D41300: using guessed type int dword_14D41300; // 14D41304: using guessed type int dword_14D41304; //----- (00611240) -------------------------------------------------------- signed int __cdecl sub_611240(int a1, int a2, int a3, int 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) { signed int result; // eax@4 int v17; // eax@5 if ( !(dword_14D41714 & 1) ) { dword_14D41714 |= 1u; dword_14D41708 = 0; dword_14D41710 = 0; atexit(nullsub_183); } LOWORD(dword_14D41308) = dword_14D41308 & 0x3FF | 0x400; LOWORD(dword_14D41308) = dword_14D41308 & 0xFFF7 | 0x3F7; *(int *)((char *)&dword_14D41308 + 2) = a1; dword_14D41312 = a3; dword_14D4130E = a2; dword_14D41316 = a4; dword_14D4131E = a6; dword_14D4131A = a5; dword_14D41322 = a7; dword_14D4132A = a9; dword_14D41326 = a8; dword_14D4132E = a10; dword_14D41336 = a12; dword_14D41332 = a11; dword_14D4133A = a13; dword_14D41342 = a15; dword_14D41708 = (int)&dword_14D41308; dword_14D4170C = 1024; dword_14D4133E = a14; dword_14D41346 = a16; if ( sub_4C81E0(&dword_14D41708, 66) ) { v17 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&dword_14D41708, v17); result = 1; } else { sub_639100(&unk_86DDD8, (int)"Send_NC_LOG_GAME_DATA_TYPE_F : Packet Too Long", 66); result = 1; } return result; } // 14D148D0: using guessed type int dword_14D148D0; // 14D41308: using guessed type int dword_14D41308; // 14D4130E: using guessed type int dword_14D4130E; // 14D41312: using guessed type int dword_14D41312; // 14D41316: using guessed type int dword_14D41316; // 14D4131A: using guessed type int dword_14D4131A; // 14D4131E: using guessed type int dword_14D4131E; // 14D41322: using guessed type int dword_14D41322; // 14D41326: using guessed type int dword_14D41326; // 14D4132A: using guessed type int dword_14D4132A; // 14D4132E: using guessed type int dword_14D4132E; // 14D41332: using guessed type int dword_14D41332; // 14D41336: using guessed type int dword_14D41336; // 14D4133A: using guessed type int dword_14D4133A; // 14D4133E: using guessed type int dword_14D4133E; // 14D41342: using guessed type int dword_14D41342; // 14D41346: using guessed type int dword_14D41346; // 14D41708: using guessed type int dword_14D41708; // 14D4170C: using guessed type int dword_14D4170C; // 14D41710: using guessed type int dword_14D41710; // 14D41714: using guessed type int dword_14D41714; //----- (00611390) -------------------------------------------------------- signed int __cdecl sub_611390(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15) { signed int result; // eax@4 int v16; // eax@5 if ( !(dword_14D41B24 & 1) ) { dword_14D41B24 |= 1u; dword_14D41B18 = 0; dword_14D41B20 = 0; atexit(nullsub_184); } LOWORD(dword_14D41718) = dword_14D41718 & 0x3FF | 0x400; LOWORD(dword_14D41718) = dword_14D41718 & 0xFFF8 | 0x3F8; dword_14D41722 = a3; *(int *)((char *)&dword_14D41718 + 2) = a1; dword_14D4171E = a2; dword_14D4172E = a6; dword_14D41726 = a4; dword_14D4172A = a5; dword_14D4173A = a9; dword_14D41732 = a7; dword_14D41736 = a8; dword_14D41746 = a12; dword_14D4173E = a10; dword_14D41742 = a11; dword_14D41752 = a15; dword_14D41B18 = (int)&dword_14D41718; dword_14D41B1C = 1024; dword_14D4174A = a13; dword_14D4174E = a14; if ( sub_4C81E0(&dword_14D41B18, 62) ) { v16 = sub_428750((int)&dword_14D148D0); sub_4C7EC0(&dword_14D41B18, v16); result = 1; } else { sub_639100(&unk_86DDD8, (int)"Send_NC_LOG_GAME_DATA_TYPE_G : Packet Too Long", 62); result = 1; } return result; } // 14D148D0: using guessed type int dword_14D148D0; // 14D41718: using guessed type int dword_14D41718; // 14D4171E: using guessed type int dword_14D4171E; // 14D41722: using guessed type int dword_14D41722; // 14D41726: using guessed type int dword_14D41726; // 14D4172A: using guessed type int dword_14D4172A; // 14D4172E: using guessed type int dword_14D4172E; // 14D41732: using guessed type int dword_14D41732; // 14D41736: using guessed type int dword_14D41736; // 14D4173A: using guessed type int dword_14D4173A; // 14D4173E: using guessed type int dword_14D4173E; // 14D41742: using guessed type int dword_14D41742; // 14D41746: using guessed type int dword_14D41746; // 14D4174A: using guessed type int dword_14D4174A; // 14D4174E: using guessed type int dword_14D4174E; // 14D41752: using guessed type int dword_14D41752; // 14D41B18: using guessed type int dword_14D41B18; // 14D41B1C: using guessed type int dword_14D41B1C; // 14D41B20: using guessed type int dword_14D41B20; // 14D41B24: using guessed type int dword_14D41B24; //----- (006114D0) -------------------------------------------------------- int __thiscall sub_6114D0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = off_7001C4; *(_DWORD *)(this + 4) = 0; *(_WORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_WORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; return result; } // 7001C4: using guessed type int (__stdcall *off_7001C4[3])(int); //----- (006114F0) -------------------------------------------------------- void __thiscall sub_6114F0(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // esi@3 v1 = this; v2 = *(void **)(this + 12); *(_DWORD *)this = off_7001C4; if ( v2 ) sub_6530A4(v2); v3 = *(void **)(v1 + 20); if ( v3 ) sub_6530A4(v3); } // 7001C4: using guessed type int (__stdcall *off_7001C4[3])(int); //----- (00611520) -------------------------------------------------------- char __thiscall sub_611520(int this, int a2) { char result; // al@2 if ( a2 ) { *(_DWORD *)(this + 4) = a2; result = 1; } else { result = 0; } return result; } //----- (00611540) -------------------------------------------------------- char __thiscall sub_611540(int this, unsigned int a2) { int v2; // esi@1 int v3; // eax@1 char result; // al@2 signed int i; // eax@3 v2 = this; *(_BYTE *)(this + 8) = a2; *(_BYTE *)(this + 9) = 0; v3 = unknown_libname_130(4 * a2 | -((unsigned __int64)a2 >> 30 != 0)); *(_DWORD *)(v2 + 12) = v3; if ( v3 ) { for ( i = 0; i < (signed int)a2; ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 12) + 4 * i) = 0; result = 1; } else { result = 0; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (006115A0) -------------------------------------------------------- char __thiscall sub_6115A0(int this, unsigned int a2) { int v2; // esi@1 int v3; // eax@1 char result; // al@2 signed int i; // eax@3 v2 = this; *(_BYTE *)(this + 16) = a2; v3 = unknown_libname_130(2 * a2 | -((unsigned __int64)a2 >> 31 != 0)); *(_DWORD *)(v2 + 20) = v3; if ( v3 ) { for ( i = 0; i < (signed int)a2; ++i ) *(_WORD *)(*(_DWORD *)(v2 + 20) + 2 * i) = -1; result = 1; } else { result = 0; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00611600) -------------------------------------------------------- char __thiscall sub_611600(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 char result; // al@2 unsigned __int8 v5; // al@4 bool v6; // zf@5 int v7; // eax@5 int (__thiscall *v8)(_DWORD); // eax@6 int v9; // edi@8 int v10; // eax@10 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 && a2 && (v5 = *(_BYTE *)(v2 + 9), v5 < *(_BYTE *)(v2 + 8)) && (v6 = *(_DWORD *)(v3 + 4 * v5) == 0, v7 = v3 + 4 * v5, v6) ) { *(_DWORD *)v7 = a2; v8 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 44); ++*(_BYTE *)(v2 + 9); if ( (unsigned __int8)v8(v2) ) { if ( *(_BYTE *)(v2 + 9) == *(_BYTE *)(v2 + 8) ) { v9 = dword_87797C; if ( dword_87797C ) { if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(**(_DWORD **)(v2 + 4) + 1592))( *(_DWORD *)(v2 + 4), *(_DWORD *)(*(_DWORD *)dword_87797C + 34), 1, dword_87797C, dword_14D129E8, 0, -1, 0, 0, 0) ) { sub_401900(*(void **)(v2 + 4), *(_DWORD *)(*(_DWORD *)v9 + 34)); v10 = *(_DWORD *)(v9 + 48); if ( v10 ) sub_4055D0(*(void **)(v2 + 4), *(_DWORD *)(*(_DWORD *)v9 + 34), *(_DWORD *)(v10 + 43), 1); } } } } result = 1; } else { result = 0; } return result; } // 87797C: using guessed type int dword_87797C; // 14D129E8: using guessed type int dword_14D129E8; //----- (006116B0) -------------------------------------------------------- int __thiscall sub_6116B0(int this, int a2) { int v2; // edi@1 int result; // eax@2 signed int v4; // esi@3 int v5; // eax@4 v2 = this; if ( *(_DWORD *)(this + 12) ) { v4 = 0; if ( *(_BYTE *)(this + 9) ) { while ( 1 ) { v5 = *(_DWORD *)(v2 + 12); if ( *(_DWORD *)(v5 + 4 * v4) ) { if ( (*(int (**)(void))(**(_DWORD **)(v5 + 4 * v4) + 836))() == a2 ) break; } ++v4; if ( v4 >= *(_BYTE *)(v2 + 9) ) goto LABEL_7; } result = *(_DWORD *)(*(_DWORD *)(v2 + 12) + 4 * v4); } else { LABEL_7: result = 0; } } else { result = 0; } return result; } //----- (00611710) -------------------------------------------------------- char __thiscall sub_611710(int this) { return *(_BYTE *)(this + 9); } //----- (00611720) -------------------------------------------------------- int __thiscall sub_611720(int this, signed int a2) { int v2; // eax@3 int result; // eax@4 if ( a2 >= 0 && a2 < *(_BYTE *)(this + 9) && (v2 = *(_DWORD *)(this + 12)) != 0 ) result = *(_DWORD *)(v2 + 4 * a2); else result = 0; return result; } //----- (00611750) -------------------------------------------------------- char __thiscall sub_611750(int this, int a2, int a3) { int v3; // edx@1 char result; // al@2 int v5; // esi@3 int v6; // eax@3 v3 = *(_DWORD *)(this + 12); if ( v3 ) { v5 = *(_BYTE *)(this + 9); v6 = 0; if ( v5 <= 0 ) { LABEL_7: result = 0; } else { while ( !*(_DWORD *)v3 || *(_DWORD *)v3 != a3 ) { ++v6; v3 += 4; if ( v6 >= v5 ) goto LABEL_7; } *(_DWORD *)a2 = v6; result = 1; } } else { result = 0; } return result; } //----- (006117A0) -------------------------------------------------------- char __thiscall sub_6117A0(int this, int a2, __int16 a3) { char result; // al@2 int v4; // edx@3 int v5; // eax@3 int v6; // ecx@4 if ( *(_DWORD *)(this + 12) ) { v4 = *(_BYTE *)(this + 9); v5 = 0; if ( v4 <= 0 ) { LABEL_8: result = 0; } else { v6 = *(_DWORD *)(this + 12); while ( !*(_DWORD *)v6 || *(_WORD *)(*(_DWORD *)v6 + 4) != a3 ) { ++v5; v6 += 4; if ( v5 >= v4 ) goto LABEL_8; } *(_DWORD *)a2 = v5; result = 1; } } else { result = 0; } return result; } //----- (006117F0) -------------------------------------------------------- char __thiscall sub_6117F0(int this, int a2, int a3) { int v3; // edi@1 char result; // al@2 signed int v5; // esi@3 int v6; // eax@4 v3 = this; if ( *(_DWORD *)(this + 12) ) { v5 = 0; if ( *(_BYTE *)(this + 9) ) { while ( 1 ) { v6 = *(_DWORD *)(v3 + 12); if ( *(_DWORD *)(v6 + 4 * v5) ) { if ( (*(int (**)(void))(**(_DWORD **)(v6 + 4 * v5) + 836))() == a3 ) break; } ++v5; if ( v5 >= *(_BYTE *)(v3 + 9) ) goto LABEL_7; } *(_DWORD *)a2 = v5; result = 1; } else { LABEL_7: result = 0; } } else { result = 0; } return result; } //----- (00611850) -------------------------------------------------------- bool __thiscall sub_611850(int this) { return *(_BYTE *)(this + 9) < *(_BYTE *)(this + 8); } //----- (00611860) -------------------------------------------------------- char __thiscall sub_611860(int this, int a2) { char result; // al@2 signed int v3; // esi@3 int v4; // ebx@4 if ( a2 ) { v3 = 0; if ( (signed int)*(_BYTE *)(this + 16) <= 0 ) { LABEL_7: result = 0; } else { v4 = *(_DWORD *)(this + 20); while ( *(_WORD *)(v4 + 2 * *(_BYTE *)(this + 17)) != -1 ) { ++v3; *(_BYTE *)(this + 17) = (unsigned __int8)(*(_BYTE *)(this + 17) + 1) % (signed __int16)*(_BYTE *)(this + 16); if ( v3 >= *(_BYTE *)(this + 16) ) goto LABEL_7; } *(_BYTE *)a2 = *(_BYTE *)(this + 17); result = 1; *(_BYTE *)(this + 17) = (unsigned __int8)(*(_BYTE *)(this + 17) + 1) % (signed __int16)*(_BYTE *)(this + 16); } } else { result = 0; } return result; } //----- (006118E0) -------------------------------------------------------- bool __thiscall sub_6118E0(int this, unsigned __int8 a2) { bool result; // al@2 if ( a2 < *(_BYTE *)(this + 16) ) result = *(_WORD *)(*(_DWORD *)(this + 20) + 2 * a2) == -1; else result = 0; return result; } //----- (00611910) -------------------------------------------------------- bool __thiscall sub_611910(int this, unsigned __int8 a2) { return (unsigned __int16)a2 >= *(_WORD *)(this + 40); } //----- (00611930) -------------------------------------------------------- signed int __stdcall sub_611930(int a1, int a2) { return 10445; } //----- (00611940) -------------------------------------------------------- signed int __stdcall sub_611940(int a1, int a2, int a3) { return 10445; } //----- (00611950) -------------------------------------------------------- signed int __stdcall sub_611950(int a1) { return 10445; } //----- (00611960) -------------------------------------------------------- char __stdcall sub_611960(int a1) { signed int v1; // edi@2 unsigned int v2; // esi@4 int v3; // eax@5 char result; // al@8 if ( dword_1325CBAC ) v1 = *(_DWORD *)(dword_1325CBAC + 40); else v1 = 0; v2 = 0; if ( v1 <= 0 ) { result = 0; } else { while ( 1 ) { v3 = sub_626BC0((int)&unk_1325CB78, v2); if ( !v3 ) break; if ( *(_DWORD *)v3 != a1 ) { ++v2; if ( (signed int)v2 < v1 ) continue; } return *(_BYTE *)(v3 + 5); } result = 0; } return result; } // 1325CBAC: using guessed type int dword_1325CBAC; //----- (006119C0) -------------------------------------------------------- int __thiscall sub_6119C0(int this, int a2, int a3) { int v3; // esi@1 unsigned int v4; // edi@1 int v5; // ebx@2 int result; // eax@6 v3 = *(_DWORD *)(this + 8); v4 = 0; if ( (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 12 ) { v5 = *(_DWORD *)v3; while ( *(_DWORD *)v5 != a2 || *(_DWORD *)(v5 + 4) != a3 ) { ++v4; v5 += 12; if ( v4 >= (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 12 ) goto LABEL_6; } result = *(_DWORD *)v3 + 12 * v4; } else { LABEL_6: result = 0; } return result; } //----- (00611A30) -------------------------------------------------------- char __thiscall sub_611A30(int this, int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@3 signed int v5; // eax@4 int v6; // eax@8 void (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // eax@21 v2 = this; if ( !a2 ) goto LABEL_24; *(_DWORD *)(this + 4) = a2; *(_BYTE *)(this + 16) = 13; v4 = unknown_libname_130(26); *(_DWORD *)(v2 + 20) = v4; if ( !v4 ) goto LABEL_24; v5 = 0; do { *(_WORD *)(v5 + *(_DWORD *)(v2 + 20)) = -1; v5 += 2; } while ( v5 < 26 ); LOBYTE(a2) = sub_611960(23); if ( (unsigned __int8)a2 > 0u && (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 52))(v2, a2) && (v6 = sub_626BC0((int)&unk_133591C0, 0)) != 0 ) { *(_DWORD *)(v2 + 32) = *(_DWORD *)v6; *(_WORD *)(v2 + 36) = *(_WORD *)(v6 + 4); *(_WORD *)(v2 + 38) = *(_WORD *)(v6 + 6); *(_WORD *)(v2 + 40) = 0; *(_WORD *)(v2 + 42) = *(_WORD *)(sub_61D2D0((int)&off_86D250, 23) + 4); *(_DWORD *)(v2 + 44) = 0; *(_DWORD *)(v2 + 48) = 0; *(_DWORD *)(v2 + 52) = 0; *(_DWORD *)(v2 + 56) = 0; *(_DWORD *)(v2 + 60) = 0; *(_DWORD *)(v2 + 64) = 0; if ( sub_6119C0((int)&off_86D26C, 23, 0) ) *(_DWORD *)(v2 + 44) = *(_DWORD *)(sub_6119C0((int)&off_86D26C, 23, 0) + 8); if ( sub_6119C0((int)&off_86D26C, 23, 1) ) *(_DWORD *)(v2 + 48) = *(_DWORD *)(sub_6119C0((int)&off_86D26C, 23, 1) + 8); if ( sub_6119C0((int)&off_86D26C, 23, 2) ) *(_DWORD *)(v2 + 52) = *(_DWORD *)(sub_6119C0((int)&off_86D26C, 23, 2) + 8); if ( sub_6119C0((int)&off_86D26C, 23, 3) ) *(_DWORD *)(v2 + 56) = *(_DWORD *)(sub_6119C0((int)&off_86D26C, 23, 3) + 8); if ( sub_6119C0((int)&off_86D26C, 23, 4) ) *(_DWORD *)(v2 + 60) = *(_DWORD *)(sub_6119C0((int)&off_86D26C, 23, 4) + 8); if ( sub_6119C0((int)&off_86D26C, 23, 5) ) *(_DWORD *)(v2 + 64) = *(_DWORD *)(sub_6119C0((int)&off_86D26C, 23, 5) + 8); *(_WORD *)(v2 + 36) = ((signed int)((unsigned __int64)(10 * *(_WORD *)(v2 + 36) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(v2 + 36) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 172); *(_WORD *)(v2 + 38) = ((signed int)((unsigned __int64)(10 * *(_WORD *)(v2 + 38) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(v2 + 38) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); v7(v2, 0, 0); result = 1; } else { LABEL_24: result = 0; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86D250: using guessed type int (*off_86D250)(); // 86D26C: using guessed type int (*off_86D26C)(); //----- (00611CA0) -------------------------------------------------------- int __stdcall sub_611CA0(int a1, int a2, int a3, int a4) { char *v4; // ecx@2 int v5; // eax@2 unsigned __int16 v6; // ax@2 int v7; // eax@4 void *v8; // ecx@5 int v9; // ST04_4@5 int v10; // eax@5 char v12; // [sp+8h] [bp-1Ch]@5 int v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@1 v13 = (int)"CGambleObject::go_PlayerAction"; sub_4675D0((int)&unk_D020420, (int)"CGambleObject::go_PlayerAction"); dword_7508B8[dword_750CB8] = (int)"CGambleObject::go_PlayerAction"; dword_750AB8[dword_750CB8++] = -1; v14 = 0; if ( (unsigned int)(a4 - 1) > 0x63 ) { v6 = 0; } else { v4 = (char *)&unk_14D42DC0 + 32776 * a4; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5]; } v7 = sub_6119C0((int)&off_86D26C, a2, *(_DWORD *)(a3 + 4 * v6)); if ( v7 ) { v8 = off_849C18; *(_WORD *)off_849C18 = -17378; *((_WORD *)v8 + 1) = *(_WORD *)(a1 + 4); *((_DWORD *)v8 + 1) = *(_DWORD *)(v7 + 8); sub_4287B0(&v12, &off_849C18, 8); v9 = *(_DWORD *)(a1 + 102); LOBYTE(v14) = 1; v10 = sub_427BD0(&unk_13253E80); sub_549E00((void *)a1, v10, v9, 0, 0, (int)&v12, 0, 65535); LOBYTE(v14) = 0; sub_428A70(&v12); } --dword_750CB8; v14 = -1; return sub_467660((int)&unk_D020420, (int)"CGambleObject::go_PlayerAction"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86D26C: using guessed type int (*off_86D26C)(); //----- (00611DF0) -------------------------------------------------------- char __thiscall sub_611DF0(int this, int a2) { int v2; // esi@1 int v3; // ecx@1 char result; // al@2 int v5; // edx@5 int v6; // eax@5 int v7; // ecx@11 void *v8; // eax@11 v2 = this; v3 = *(_DWORD *)(this + 12); if ( v3 ) { if ( a2 ) { v5 = *(_BYTE *)(v2 + 9); v6 = 0; if ( v5 <= 0 ) { LABEL_8: result = 0; } else { while ( *(_DWORD *)v3 != a2 ) { ++v6; v3 += 4; if ( v6 >= *(_BYTE *)(v2 + 9) ) goto LABEL_8; } if ( v6 < v5 - 1 ) { do { *(_DWORD *)(*(_DWORD *)(v2 + 12) + 4 * v6) = *(_DWORD *)(*(_DWORD *)(v2 + 12) + 4 * v6 + 4); ++v6; } while ( v6 < *(_BYTE *)(v2 + 9) - 1 ); } *(_DWORD *)(*(_DWORD *)(v2 + 12) + 4 * v6) = 0; v7 = *(_DWORD *)(v2 + 4); --*(_BYTE *)(v2 + 9); v8 = (void *)(*(int (**)(void))(*(_DWORD *)v7 + 1324))(); if ( sub_409A00(v8, 419) ) { (*(void (__stdcall **)(signed int))(**(_DWORD **)(v2 + 4) + 1616))(419); sub_401940(*(void **)(v2 + 4), 419); sub_405730(*(void **)(v2 + 4), 419); } result = 1; } } else { result = 0; } } else { result = 0; } return result; } //----- (00611EC0) -------------------------------------------------------- void *__thiscall sub_611EC0(void *this, int a2) { void *result; // eax@1 char *v3; // ecx@1 int v4; // ecx@1 int v10; // [sp+10h] [bp+8h]@2 result = this; v3 = (char *)this + 12; *((_DWORD *)result + 2) = v3; *(_DWORD *)result = &off_7002FC; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)result + 1) = a2; v4 = *((_DWORD *)result + 2); if ( *(_DWORD *)v4 != *(_DWORD *)(v4 + 4) ) { v10 = *(_DWORD *)v4; *(_DWORD *)(v4 + 4) = v10; } return result; } // 611EC0: could not find valid save-restore pair for edi // 611EC0: could not find valid save-restore pair for esi // 7002FC: using guessed type int (*off_7002FC)(); //----- (00611F30) -------------------------------------------------------- int __thiscall sub_611F30(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 8) = a2; return result; } //----- (00611F40) -------------------------------------------------------- int __thiscall sub_611F40(int this, int a2) { int result; // eax@3 if ( a2 == 1 ) { result = *(_DWORD *)(this + 16); } else { if ( a2 == 2 ) result = *(_DWORD *)(this + 508); else result = 0; } return result; } //----- (00611F70) -------------------------------------------------------- int __thiscall sub_611F70(int this, int a2, unsigned __int16 a3) { if ( a2 != 1 ) { if ( a2 == 2 && *(_DWORD *)(this + 508) > (signed int)a3 ) return *(_DWORD *)(this + 512) + 184 * a3; return 0; } if ( *(_DWORD *)(this + 16) <= (signed int)a3 ) return 0; return *(_DWORD *)(this + 20) + 1392 * a3; } //----- (00611FC0) -------------------------------------------------------- int __thiscall sub_611FC0(int this, int a2, int a3) { int v3; // edi@1 int v4; // ebx@6 int v5; // eax@10 int v6; // esi@13 int v8; // [sp+Ch] [bp-4h]@3 v3 = this; if ( a3 == 1 ) { v8 = *(_DWORD *)(this + 16); } else { if ( a3 == 2 ) v8 = *(_DWORD *)(this + 508); else v8 = 0; } v4 = 0; if ( v8 <= 0 ) return 0; while ( a3 == 1 ) { if ( *(_DWORD *)(v3 + 16) > (signed int)(unsigned __int16)v4 ) { v5 = *(_DWORD *)(v3 + 20) + 1392 * (unsigned __int16)v4; goto LABEL_13; } LABEL_15: ++v4; if ( v4 >= v8 ) return 0; } if ( a3 != 2 || *(_DWORD *)(v3 + 508) <= (signed int)(unsigned __int16)v4 ) goto LABEL_15; v5 = *(_DWORD *)(v3 + 512) + 184 * (unsigned __int16)v4; LABEL_13: v6 = v5; if ( !v5 || !sub_6116B0(v5, a2) ) goto LABEL_15; return v6; } //----- (00612060) -------------------------------------------------------- void __thiscall sub_612060(int this) { *(_BYTE *)(this + 24) = 1; } //----- (00612070) -------------------------------------------------------- char __thiscall sub_612070(int this, int a2, int a3) { int v3; // edi@1 size_t v4; // ebx@2 int v6; // eax@6 bool v7; // zf@6 int v8; // eax@6 signed int v9; // esi@7 int v10; // edi@8 int v11; // eax@9 int v12; // esi@10 int v13; // eax@10 signed int v14; // edx@18 char *v15; // eax@19 int v16; // ecx@19 signed int v17; // edx@22 int v18; // ecx@23 int v19; // eax@23 signed int v20; // [sp+Ch] [bp-990h]@7 int v21; // [sp+10h] [bp-98Ch]@2 int v22; // [sp+1Ch] [bp-980h]@1 int v23; // [sp+20h] [bp-97Ch]@6 signed int v24; // [sp+24h] [bp-978h]@7 int v25; // [sp+28h] [bp-974h]@4 char v26[8]; // [sp+2Ch] [bp-970h]@2 char v27; // [sp+34h] [bp-968h]@19 int v28[595]; // [sp+40h] [bp-95Ch]@10 unsigned int v29; // [sp+98Ch] [bp-10h]@1 int v30; // [sp+998h] [bp-4h]@2 int v31; // [sp+99Ch] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v3 = this; v22 = this; if ( *(_BYTE *)(this + 24) != 1 ) { LABEL_22: v17 = 0; if ( *(_BYTE *)(v3 + 25) ) { v18 = a2 + 8; v19 = v3 + 34; do { *(_DWORD *)(v18 - 8) = *(_DWORD *)(v19 - 8); *(_DWORD *)(v18 - 4) = *(_DWORD *)(v19 - 4); *(_DWORD *)v18 = *(_DWORD *)v19; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v19 + 4); *(_DWORD *)(v18 + 8) = *(_DWORD *)(v19 + 8); *(_DWORD *)(v18 + 12) = *(_DWORD *)(v19 + 12); ++v17; v19 += 24; v18 += 24; } while ( v17 < *(_BYTE *)(v3 + 25) ); } *(_BYTE *)a3 = *(_BYTE *)(v3 + 25); return 1; } _eh_vector_constructor_iterator_(v26, 0x18u, 100, (int)sub_650160, nullsub_2); v4 = 0; v30 = 0; v21 = dword_14D41B58; if ( dword_14D41B58 <= 0 ) { *(_BYTE *)(v3 + 25) = 0; v30 = -1; _LN21(v26, 0x18u, 100, nullsub_2); return 0; } v25 = 0; if ( dword_14D41B58 <= 0 ) { LABEL_16: qsort(v26, v4, 0x18u, (int (__cdecl *)(const void *, const void *))sub_614CE0); *(_BYTE *)(v3 + 25) = v4; if ( (unsigned __int8)v4 > 0x14u ) *(_BYTE *)(v3 + 25) = 20; v14 = 0; if ( *(_BYTE *)(v3 + 25) ) { v15 = &v27; v16 = v3 + 34; do { *(_DWORD *)(v16 - 8) = *((_DWORD *)v15 - 2); *(_DWORD *)(v16 - 4) = *((_DWORD *)v15 - 1); *(_DWORD *)v16 = *(_DWORD *)v15; *(_DWORD *)(v16 + 4) = *((_DWORD *)v15 + 1); *(_DWORD *)(v16 + 8) = *((_DWORD *)v15 + 2); *(_DWORD *)(v16 + 12) = *((_DWORD *)v15 + 3); ++v14; v15 += 24; v16 += 24; } while ( v14 < *(_BYTE *)(v3 + 25) ); } *(_BYTE *)(v3 + 24) = 0; v30 = -1; _LN21(v26, 0x18u, 100, nullsub_2); goto LABEL_22; } while ( dword_14D41B58 > (unsigned __int16)v25 ) { v6 = 1392 * (unsigned __int16)v25; v7 = dword_14D41B5C + v6 == 0; v8 = dword_14D41B5C + v6; v23 = v8; if ( v7 ) break; v9 = 0; v24 = 0; v20 = (unsigned __int8)sub_611710(v8); if ( v20 > 0 ) { do { v10 = sub_611720(v23, v9); if ( v10 ) { v11 = (*(int (__stdcall **)(signed int))(*(_DWORD *)v23 + 204))(v9); if ( v11 ) { v12 = 24 * v4; v28[6 * v4] = *(_DWORD *)v11; v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1744))(v10); *(_DWORD *)&v26[24 * v4] = *(_DWORD *)(v13 + 2); *(_DWORD *)&v26[24 * v4 + 4] = *(_DWORD *)(v13 + 6); *(_DWORD *)&v26[24 * v4 + 8] = *(_DWORD *)(v13 + 10); *(_DWORD *)&v26[24 * v4++ + 12] = *(_DWORD *)(v13 + 14); *(_DWORD *)&v26[v12 + 16] = *(_DWORD *)(v13 + 18); if ( (signed int)v4 >= 100 ) { qsort(v26, v4, 0x18u, (int (__cdecl *)(const void *, const void *))sub_614CE0); v4 = 20; } v9 = v24; } } ++v9; v24 = v9; } while ( v9 < v20 ); v3 = v22; } ++v25; if ( v25 >= v21 ) goto LABEL_16; } *(_BYTE *)(v3 + 25) = 0; v30 = -1; _LN21(v26, 0x18u, 100, nullsub_2); return 0; } // 86FEB8: using guessed type int __security_cookie; // 14D41B58: using guessed type int dword_14D41B58; // 14D41B5C: using guessed type int dword_14D41B5C; // 612070: using guessed type int var_95C[595]; // 612070: using guessed type char var_970[8]; //----- (00612360) -------------------------------------------------------- int __thiscall sub_612360(int this, __int16 a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 int v5; // eax@3 int result; // eax@6 v2 = this; v3 = 0; v4 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; if ( v4 <= 0 ) { LABEL_6: result = 0; } else { while ( 1 ) { if ( *(_DWORD *)(*(_DWORD *)v2 + 4 * v3) ) { v5 = sub_428740(*(_DWORD *)(*(_DWORD *)v2 + 4 * v3)); if ( v5 ) { if ( sub_4802C0(v5) == a2 ) break; } } ++v3; if ( v3 >= v4 ) goto LABEL_6; } result = *(_DWORD *)(*(_DWORD *)v2 + 4 * v3); } return result; } //----- (006123C0) -------------------------------------------------------- int __thiscall sub_6123C0(int this, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 int result; // eax@3 v2 = this; v3 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; v4 = 0; if ( v3 <= 0 ) { LABEL_5: result = 0; } else { while ( 1 ) { if ( *(_DWORD *)(*(_DWORD *)v2 + 4 * v4) ) { result = sub_6116B0(*(_DWORD *)(*(_DWORD *)v2 + 4 * v4), a2); if ( result ) break; } ++v4; if ( v4 >= v3 ) goto LABEL_5; } } return result; } //----- (00612400) -------------------------------------------------------- void __thiscall sub_612400(int this) { int v1; // ebx@1 int v2; // esi@1 int i; // edi@1 v1 = this; v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) >> 2; for ( i = 0; i < v2; ++i ) { if ( *(_DWORD *)(*(_DWORD *)v1 + 4 * i) ) (*(void (__thiscall **)(_DWORD))(**(_DWORD **)(*(_DWORD *)v1 + 4 * i) + 32))(*(_DWORD *)(*(_DWORD *)v1 + 4 * i)); } } //----- (00612440) -------------------------------------------------------- void __thiscall sub_612440(int this) { int v1; // esi@1 int v2; // ST20_4@1 const void *v3; // ecx@1 void *v4; // edi@1 void *v5; // eax@3 void *v6; // edi@4 void *v7; // eax@5 void *v8; // edi@6 v1 = this; v2 = this; v3 = *(const void **)(this + 4); v4 = *(void **)v2; if ( *(const void **)v2 != v3 ) { memmove_0(v4, v3, 0); *(_DWORD *)(v1 + 4) = v4; } v5 = *(void **)(v1 + 20); if ( v5 ) { v6 = (char *)v5 - 4; _LN21(v5, 0x570u, *((_DWORD *)v5 - 1), (void (__thiscall *)(void *))sub_614BE0); sub_6530A4(v6); } v7 = *(void **)(v1 + 512); if ( v7 ) { v8 = (char *)v7 - 4; _LN21(v7, 0xB8u, *((_DWORD *)v7 - 1), (void (__thiscall *)(void *))sub_61A820); sub_6530A4(v8); } _LN21((void *)(v1 + 26), 0x18u, 20, nullsub_2); if ( *(_DWORD *)v1 ) operator delete(*(void **)v1); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (00612530) -------------------------------------------------------- char __thiscall sub_612530(void *this) { int v1; // eax@1 int v2; // ebx@1 unsigned __int16 v4; // di@3 int v5; // ecx@5 int v6; // eax@5 bool v7; // zf@5 int v8; // eax@5 int v9; // ecx@6 unsigned __int16 v10; // ax@8 int v11; // eax@8 int v12; // eax@9 int v13; // eax@10 int v14; // esi@15 int v15; // eax@15 int v16; // ecx@15 int v17; // eax@15 int v18; // edi@16 int v19; // eax@16 int v20; // esi@18 int v21; // ecx@18 int v22; // eax@18 int v23; // edi@19 int v24; // edi@21 int v25; // edx@21 int v26; // eax@21 unsigned __int16 v27; // bx@21 unsigned __int16 v28; // cx@22 int v29; // eax@23 int v30; // esi@23 unsigned __int16 v31; // dx@23 int v32; // eax@24 int v33; // ecx@25 unsigned __int16 v34; // ax@27 int v35; // eax@27 int v36; // eax@28 int v37; // eax@29 int v38; // eax@32 int v39; // ecx@38 int v40; // eax@40 unsigned __int16 v41; // [sp+10h] [bp-2Ch]@23 int v42; // [sp+20h] [bp-1Ch]@1 int v43; // [sp+24h] [bp-18h]@15 int v44; // [sp+28h] [bp-14h]@1 int v45; // [sp+2Ch] [bp-10h]@1 int v46; // [sp+38h] [bp-4h]@15 v45 = (int)this; v44 = 0; v1 = sub_419080((int)&unk_13253630, 4u); v2 = v1; v42 = v1; if ( !v1 ) return 0; v4 = *(_WORD *)(*(_DWORD *)(v1 + 8) + 12 * *(_WORD *)(v1 + 14) + 4); while ( v4 < *(_WORD *)(v2 + 4) ) { v5 = *(_DWORD *)(v2 + 8); v6 = v4; v4 = *(_WORD *)(v5 + 12 * v4 + 4); v7 = *(_BYTE *)(v5 + 12 * v6 + 8) == 0; v8 = v5 + 12 * v6; if ( v7 ) v9 = 0; else v9 = *(_DWORD *)v8; v10 = (*(int (**)(void))(*(_DWORD *)v9 + 1800))(); v11 = sub_418D40((int)&unk_14D159B0, v10); if ( v11 ) { v12 = *(_DWORD *)v11; if ( v12 ) { v13 = *(_DWORD *)(v12 + 99); if ( v13 == 23 ) { ++*(_DWORD *)(v45 + 16); ++v44; } else { if ( v13 == 26 ) { ++*(_DWORD *)(v45 + 508); ++v44; } } } } } if ( v44 ) { v14 = *(_DWORD *)(v45 + 16); v15 = 1392 * *(_DWORD *)(v45 + 16); v16 = (unsigned __int8)(1392 * (unsigned __int64)*(_DWORD *)(v45 + 16) >> 32) != 0; v43 = 0; v17 = unknown_libname_130(((v15 | -v16) + 4) | -__CFADD__(v15 | -v16, 4)); v44 = v17; v46 = 0; if ( v17 ) { v18 = v17 + 4; *(_DWORD *)v17 = v14; _eh_vector_constructor_iterator_( (void *)(v17 + 4), 0x570u, v14, (int)sub_614B70, (void (__thiscall *)(void *))sub_614BE0); v19 = v18; } else { v19 = 0; } v20 = *(_DWORD *)(v45 + 508); *(_DWORD *)(v45 + 20) = v19; v44 = 0; v21 = 184 * v20 | -((unsigned __int8)(184 * (unsigned __int64)(unsigned int)v20 >> 32) != 0); v22 = unknown_libname_130((v21 + 4) | -__CFADD__(v21, 4)); v46 = 1; if ( v22 ) { v23 = v22 + 4; *(_DWORD *)v22 = v20; _eh_vector_constructor_iterator_( (void *)(v22 + 4), 0xB8u, v20, (int)sub_61A7B0, (void (__thiscall *)(void *))sub_61A820); } else { v23 = 0; } *(_DWORD *)(v45 + 512) = v23; v24 = v42; v25 = 3 * *(_WORD *)(v42 + 14); v26 = *(_DWORD *)(v42 + 8); v46 = -1; v27 = *(_WORD *)(v26 + 4 * v25 + 4); while ( 1 ) { while ( 1 ) { v28 = *(_WORD *)(v24 + 4); if ( v27 >= v28 ) return 1; v29 = *(_DWORD *)(v24 + 8); v30 = v27; v31 = v27; v27 = *(_WORD *)(v29 + 12 * v27 + 4); v41 = v31; if ( v31 >= v28 || (v7 = *(_BYTE *)(v29 + 12 * v30 + 8) == 0, v32 = v29 + 12 * v30, v7) ) v33 = 0; else v33 = *(_DWORD *)v32; v34 = (*(int (**)(void))(*(_DWORD *)v33 + 1800))(); v35 = sub_418D40((int)&unk_14D159B0, v34); if ( v35 ) { v36 = *(_DWORD *)v35; if ( v36 ) break; } } v37 = *(_DWORD *)(v36 + 99); if ( v37 == 23 ) break; if ( v37 == 26 ) { if ( *(_DWORD *)(v45 + 508) > (signed int)(unsigned __int16)v44 ) { v38 = *(_DWORD *)(v45 + 512) + 184 * (unsigned __int16)v44++; } else { v38 = 0; ++v44; } LABEL_38: v39 = v38; v42 = v38; if ( v38 ) { if ( v41 >= *(_WORD *)(v24 + 4) || (v40 = *(_DWORD *)(*(_DWORD *)(v24 + 8) + 12 * v30)) == 0 ) return 1; if ( !(unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v39 + 8))(v40) ) return 0; sub_4242C0(v45, (unsigned int)&v42); } } } if ( *(_DWORD *)(v45 + 16) > (signed int)(unsigned __int16)v43 ) v38 = *(_DWORD *)(v45 + 20) + 1392 * (unsigned __int16)v43; else v38 = 0; ++v43; goto LABEL_38; } return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00612820) -------------------------------------------------------- bool __thiscall sub_612820(int this) { int v1; // eax@1 bool result; // al@2 int v3; // eax@3 v1 = *(_DWORD *)(this + 122); if ( v1 && (v3 = *(_DWORD *)(v1 + 16)) != 0 ) result = *(_BYTE *)(v3 + 58) == 7; else result = 0; return result; } //----- (00612840) -------------------------------------------------------- void __thiscall sub_612840(void *this, int a2) { int v2; // esi@1 void *v3; // edi@1 void *v4; // ebx@2 unsigned int v5; // eax@2 unsigned int v6; // ecx@2 int v7; // eax@14 int v8; // eax@16 unsigned __int64 v9; // [sp+8h] [bp-18h]@2 unsigned int v10; // [sp+10h] [bp-10h]@2 unsigned int v11; // [sp+14h] [bp-Ch]@2 int v12; // [sp+18h] [bp-8h]@6 signed int v13; // [sp+1Ch] [bp-4h]@3 unsigned int v14; // [sp+28h] [bp+8h]@5 v2 = a2; v3 = this; if ( a2 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 2824))(this, *(_DWORD *)a2, *(_DWORD *)(a2 + 4)); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 2836))( v3, *(_DWORD *)(a2 + 8), *(_DWORD *)(a2 + 12)); v4 = off_849C18; *(_WORD *)off_849C18 = 4318; v5 = 0; v6 = 0; v9 = 0i64; v10 = 0; v11 = 0; if ( dword_13267D74 ) v13 = *(_DWORD *)(dword_13267D74 + 40); else v13 = 0; v14 = 0; if ( v13 <= 0 ) { LABEL_12: if ( __PAIR__(v5, v6) > *(_QWORD *)(v2 + 8) ) v9 = __PAIR__(v5, v6) - *(_QWORD *)(v2 + 8); *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)v2; v7 = *(_DWORD *)(v2 + 4); *(_DWORD *)((char *)v4 + 10) = v9; *(_DWORD *)((char *)v4 + 6) = v7; *(_DWORD *)((char *)v4 + 14) = HIDWORD(v9); if ( sub_4C81E0(&off_849C18, 18) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v8 + 12))(v8, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Gamble_CharCoinData : Packet Too Long", 18); } } else { while ( 1 ) { v12 = sub_626BC0((int)&unk_13267D40, v14); if ( !v12 ) break; if ( *(_BYTE *)v12 == (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1240))(v3) ) { v10 = *(_DWORD *)(v12 + 1); v11 = 0; LABEL_11: v5 = v11; v6 = v10; goto LABEL_12; } ++v14; if ( (signed int)v14 >= v13 ) goto LABEL_11; } } } } // 13267D74: using guessed type int dword_13267D74; //----- (00612990) -------------------------------------------------------- bool __thiscall sub_612990(int this, int a2) { return *(_DWORD *)(this + 161552) == 0; } //----- (006129A0) -------------------------------------------------------- bool __thiscall sub_6129A0(int this, int a2) { return *(_DWORD *)(this + 161552) == a2; } //----- (006129C0) -------------------------------------------------------- bool __thiscall sub_6129C0(int this, int a2) { if ( a2 ) *(_DWORD *)a2 = *(_DWORD *)(this + 161552); return *(_DWORD *)(this + 161552) != 0; } //----- (006129E0) -------------------------------------------------------- char __thiscall sub_6129E0(int this, int a2) { *(_DWORD *)(this + 161552) = a2; return 1; } //----- (00612A00) -------------------------------------------------------- char __thiscall sub_612A00(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@3 int v4; // eax@3 unsigned int v5; // eax@5 v1 = this; v2 = *((_DWORD *)this + 40388); if ( v2 ) { if ( v2 == 1 ) { v3 = (*(int (**)(void))(*(_DWORD *)this + 836))(); v4 = sub_611FC0((int)&dword_14D41B48, v3, 1); if ( v4 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 56))(v4) == 2 ) { v5 = *((_DWORD *)v1 + 40389); if ( !v5 ) { *((_DWORD *)v1 + 40389) = dword_14D129E8 + 50; return 0; } if ( v5 > dword_14D129E8 ) return 0; } } } } return 1; } // 14D129E8: using guessed type int dword_14D129E8; //----- (00612A70) -------------------------------------------------------- int __thiscall sub_612A70(int this, char a2) { int v2; // esi@1 void *v3; // eax@1 __int16 v4; // dx@1 int v5; // ST04_4@1 int v6; // eax@1 char v8; // [sp+8h] [bp-18h]@1 int v9; // [sp+1Ch] [bp-4h]@1 v2 = this; **(_BYTE **)(this + 106) = a2; v3 = off_849C18; *(_WORD *)off_849C18 = -17380; v4 = *(_WORD *)(this + 4); *((_BYTE *)v3 + 4) = a2; *((_WORD *)v3 + 1) = v4; sub_4287B0(&v8, &off_849C18, 5); v5 = *(_DWORD *)(v2 + 102); v9 = 0; v6 = sub_427BD0(&unk_13253E80); sub_549E00((void *)v2, v6, v5, 0, 0, (int)&v8, 0, 65535); v9 = -1; return sub_428A70(&v8); } //----- (00612B20) -------------------------------------------------------- int __thiscall sub_612B20(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed int v5; // edi@1 void *v6; // ecx@3 int v7; // edx@3 char v8; // al@5 int v9; // ST14_4@7 int v10; // eax@7 int v11; // eax@7 int v12; // ebx@7 int v13; // eax@11 _BYTE *v14; // eax@11 signed int v15; // eax@11 int v16; // ebx@13 int v17; // edi@14 int v18; // eax@16 int v19; // eax@17 _BYTE *v20; // eax@17 int v21; // eax@17 _BYTE *v22; // eax@17 int v23; // edx@17 void (__thiscall *v24)(_DWORD, _DWORD, _DWORD, _DWORD); // eax@17 int v25; // eax@18 unsigned int v27; // [sp-4h] [bp-88h]@1 int v28; // [sp-4h] [bp-88h]@4 char v29; // [sp+10h] [bp-74h]@17 char v30; // [sp+24h] [bp-60h]@17 char v31; // [sp+45h] [bp-3Fh]@17 int v32; // [sp+66h] [bp-1Eh]@17 int v33; // [sp+6Ah] [bp-1Ah]@17 unsigned int v34; // [sp+74h] [bp-10h]@1 int v35; // [sp+80h] [bp-4h]@1 int v36; // [sp+84h] [bp+0h]@1 v34 = (unsigned int)&v36 ^ __security_cookie; v27 = (unsigned int)&v36 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; v5 = -1; dword_750AB8[dword_750CB8++] = -1; v35 = 0; if ( !(dword_14D41D50 & 1) ) { dword_14D41D50 |= 1u; word_14D41D4C = 70; atexit(nullsub_185); } v6 = v4; v7 = *(_DWORD *)v4; if ( (1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_14D41D4C ) { v8 = (*(int (__thiscall **)(void *))(v7 + 2808))(v4); v7 = *(_DWORD *)v4; v6 = v4; if ( v8 ) { (*(void (__thiscall **)(void *, unsigned int))(v7 + 2256))(v4, v27); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2632))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2852))(v4, 0) && (v9 = *((_DWORD *)v4 + 40388), v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4), v11 = sub_611FC0((int)&dword_14D41B48, v10, v9), (v12 = v11) != 0) && ((*(int (__thiscall **)(int))(*(_DWORD *)v11 + 56))(v11) == 2 || (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 56))(v12) == 3) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 3, 10259); v35 = -1; } else { v13 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v13; v14 = &byte_85A2C0[256 * v13]; *(_DWORD *)v14 = *((_DWORD *)v4 + 40380); *((_DWORD *)v14 + 1) = *((_DWORD *)v4 + 40381); *((_DWORD *)v14 + 2) = *((_DWORD *)v4 + 40382); v14[12] = 0; v15 = sub_639620(&unk_14D20404, v14); if ( v15 == -1 ) LOWORD(v15) = -1; v16 = (unsigned __int16)v15; if ( (unsigned __int16)v15 < dword_14D20400 ) { v17 = *(_DWORD *)(dword_14D203FC + 4 * (unsigned __int16)v15); if ( v17 ) { v19 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v19; v20 = &byte_85A2C0[256 * v19]; *(_DWORD *)v20 = *((_DWORD *)v4 + 40380); *((_DWORD *)v20 + 1) = *((_DWORD *)v4 + 40381); *((_DWORD *)v20 + 2) = *((_DWORD *)v4 + 40382); v20[12] = 0; strncpy(&v30, v20, 0xCu); v21 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v21; v22 = &byte_85A2C0[256 * v21]; *(_DWORD *)v22 = *((_DWORD *)v4 + 40380); *((_DWORD *)v22 + 1) = *((_DWORD *)v4 + 40381); *((_DWORD *)v22 + 2) = *((_DWORD *)v4 + 40382); v22[12] = 0; strncpy(&v31, v22, 0xCu); v23 = *(_DWORD *)v4; v32 = *(_DWORD *)(v17 + 50); v24 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(v23 + 776); v33 = *(_DWORD *)(v17 + 54); v24(v4, 47, 3, 10240); if ( !(unsigned __int8)(*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v4 + 1536))( v4, &v29, 6, 9, 10) ) { v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ - Linkto Fail", v25); } v35 = -1; goto LABEL_20; } v5 = -1; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 2, 10243); v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); sub_639150(&unk_86DDD8, (int)"ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ - Linkto Fail", v18, v16); sub_43C920(v4); v35 = v5; } LABEL_20: v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; goto LABEL_21; } } (*(void (__thiscall **)(void *, signed int, signed int, signed int, unsigned int))(v7 + 776))(v6, 47, 3, 10241, v27); v35 = -1; v28 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; LABEL_21: --dword_750CB8; return sub_467660((int)&unk_D020420, v28); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; // 86FEB8: using guessed type int __security_cookie; // 14D203FC: using guessed type int dword_14D203FC; // 14D20400: using guessed type int dword_14D20400; // 14D41D4C: using guessed type __int16 word_14D41D4C; // 14D41D50: using guessed type int dword_14D41D50; //----- (00612E50) -------------------------------------------------------- int __thiscall sub_612E50(void *this, int a2, int a3, __int16 a4) { int v4; // edi@1 int v5; // ebx@1 int v6; // edx@3 int v7; // ST0C_4@4 int v8; // eax@4 int v9; // eax@9 int v10; // ecx@9 int v11; // eax@11 unsigned int v12; // esi@14 int v13; // edi@15 int v14; // eax@15 unsigned int v15; // edx@22 unsigned int v16; // esi@22 int v17; // eax@29 int (__thiscall *v18)(_DWORD); // edx@31 unsigned __int64 v19; // qax@31 __time32_t v20; // eax@33 void *v21; // esi@35 int v22; // eax@35 int v23; // eax@35 int v24; // edx@35 int v25; // ecx@35 int v26; // eax@35 int v27; // eax@37 int v28; // edi@38 int v29; // esi@38 int v30; // eax@38 __int16 v31; // ax@38 int v32; // edi@38 int v33; // esi@38 int v34; // eax@38 __int16 v35; // ax@38 int v36; // eax@38 signed int v38; // [sp-8h] [bp-6Ch]@27 unsigned int v39; // [sp-4h] [bp-68h]@1 int v40; // [sp+10h] [bp-54h]@0 __time32_t Time; // [sp+14h] [bp-50h]@33 int v42; // [sp+18h] [bp-4Ch]@11 int v43; // [sp+1Ch] [bp-48h]@11 int v44; // [sp+20h] [bp-44h]@1 int v45; // [sp+24h] [bp-40h]@12 unsigned __int64 v46; // [sp+28h] [bp-3Ch]@11 int v47; // [sp+30h] [bp-34h]@33 int v48; // [sp+34h] [bp-30h]@33 int v49; // [sp+38h] [bp-2Ch]@33 int v50; // [sp+3Ch] [bp-28h]@34 unsigned int v51; // [sp+54h] [bp-10h]@1 int v52; // [sp+60h] [bp-4h]@1 int v53; // [sp+64h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v39 = (unsigned int)&v53 ^ __security_cookie; v4 = a2; v5 = (int)this; v44 = a2; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_BUY_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_BUY_REQ"; dword_750AB8[dword_750CB8++] = -1; v52 = 0; if ( !(dword_14D41D58 & 1) ) { dword_14D41D58 |= 1u; word_14D41D54 = 70; atexit(nullsub_186); } v6 = *(_DWORD *)v5; if ( !((1 << **(_BYTE **)(v5 + 3828)) & (unsigned __int16)word_14D41D54) ) goto LABEL_6; v7 = *(_DWORD *)(v5 + 161552); v8 = (*(int (__thiscall **)(int))(v6 + 836))(v5); if ( sub_611FC0((int)&dword_14D41B48, v8, v7) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 58688) + 16))(v5 + 58688) ) goto LABEL_44; if ( *(_WORD *)(v5 + 85728) & 0xC ) { LABEL_39: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v5 + 776))( v5, 47, 16, 10251, v39); goto LABEL_40; } v9 = sub_4C3BD0(v5 + 84508, v5); v10 = 0; if ( !v9 ) { LABEL_44: v6 = *(_DWORD *)v5; LABEL_6: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(v6 + 776))(v5, 47, 16, 10251, v39); LABEL_40: v52 = -1; goto LABEL_41; } if ( !*(_QWORD *)(a2 + 2) ) goto LABEL_39; v11 = 0; v46 = 0i64; v42 = 0; v43 = 0; if ( dword_13267D74 ) v45 = *(_DWORD *)(dword_13267D74 + 40); else v45 = 0; v12 = 0; if ( v45 > 0 ) { while ( 1 ) { v13 = sub_626BC0((int)&unk_13267D40, v12); v14 = *(_DWORD *)v5; v40 = v13; if ( !v13 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(v14 + 776))( v5, 47, 16, 10251, v39); v52 = -1; goto LABEL_41; } if ( *(_BYTE *)v13 == (unsigned __int8)(*(int (__thiscall **)(int))(v14 + 1240))(v5) ) break; ++v12; if ( (signed int)v12 >= v45 ) goto LABEL_21; } v42 = *(_DWORD *)(v13 + 1); v43 = 0; LABEL_21: v10 = v42; v11 = v43; v4 = v44; } v15 = *(_DWORD *)(v5 + 161540); v16 = *(_DWORD *)(v5 + 161536); if ( v11 >= v15 && (v11 > v15 || v10 > v16) ) v46 = __PAIR__(v11, v10) - __PAIR__(v15, v16); if ( v46 < *(_QWORD *)(v4 + 2) ) { v38 = 10252; LABEL_28: (*(void (__thiscall **)(int, signed int, signed int, signed int, unsigned int))(*(_DWORD *)v5 + 776))( v5, 47, 16, v38, v39); v52 = -1; goto LABEL_41; } v17 = sub_626BC0((int)&unk_1325CF38, 0); v45 = v17; if ( !v17 ) { v38 = 10251; goto LABEL_28; } v18 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1076); v46 = *(_DWORD *)v17 * *(_QWORD *)(v4 + 2); LODWORD(v19) = v18(v5); if ( v19 < v46 ) { v38 = 10253; goto LABEL_28; } _time32(&Time); memcpy(&v47, _localtime32(&Time), 0x24u); v49 = *(_BYTE *)(v45 + 8); v48 = *(_BYTE *)(v45 + 9); v47 = *(_BYTE *)(v45 + 10); v20 = _LN52(&v47); if ( Time < v20 ) --v50; v21 = off_849C18; *(_WORD *)off_849C18 = -17391; *((_WORD *)v21 + 1) = a4; *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v5 + 836))(v5, v39); v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); *((_WORD *)v21 + 4) = sub_4802C0(v22); v23 = v44; *(_DWORD *)((char *)v21 + 10) = *(_DWORD *)(v44 + 2); v24 = *(_DWORD *)(v23 + 6); v25 = HIDWORD(v46); v26 = v46; *(_DWORD *)((char *)v21 + 14) = v24; *(_DWORD *)((char *)v21 + 22) = v25; *(_DWORD *)((char *)v21 + 18) = v26; *(_DWORD *)((char *)v21 + 26) = *(_DWORD *)(v40 + 1); *(_DWORD *)((char *)v21 + 30) = _LN52(&v47); if ( sub_4C81E0(&off_849C18, 34) ) { v27 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v27); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_BUY_REQ : Packet Too Long", 34); } v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); v29 = *(_DWORD *)v28; v30 = (*(int (__thiscall **)(int, _DWORD, _DWORD, signed int, signed int))(*(_DWORD *)v5 + 2004))( v5, *(_DWORD *)(v44 + 2), *(_DWORD *)(v44 + 6), 1, 1); v31 = sub_4802C0(v30); (*(void (__thiscall **)(int, _DWORD))(v29 + 112))(v28, (unsigned __int16)v31); v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); v33 = *(_DWORD *)v32; v34 = (*(int (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 2004))(v5, v46, HIDWORD(v46), -1); v35 = sub_4802C0(v34); (*(void (__thiscall **)(int, _DWORD))(v33 + 72))(v32, (unsigned __int16)v35); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); sub_43BBF0(v36); v52 = -1; LABEL_41: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_BUY_REQ"); } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 13267D74: using guessed type int dword_13267D74; // 14D16430: using guessed type int dword_14D16430; // 14D41D54: using guessed type __int16 word_14D41D54; // 14D41D58: using guessed type int dword_14D41D58; //----- (00613290) -------------------------------------------------------- int __thiscall sub_613290(void *this, int a2, int a3, __int16 a4) { int v4; // esi@1 int v5; // edx@3 int v6; // ST0C_4@4 int v7; // eax@4 int v8; // ebx@10 int v9; // eax@13 __int64 v10; // qax@15 unsigned int v11; // edi@15 unsigned __int64 v12; // qax@15 unsigned __int8 v13; // cf@16 int v14; // edi@16 void *v15; // edi@21 int v16; // eax@21 int v17; // eax@23 int v18; // eax@24 int v19; // edi@24 int v20; // eax@24 __int16 v21; // ax@24 int v22; // ebx@24 int v23; // edi@24 int v24; // eax@24 __int16 v25; // ax@24 int v26; // eax@24 signed int v28; // [sp-8h] [bp-30h]@11 signed int v29; // [sp-4h] [bp-2Ch]@11 int v30; // [sp-4h] [bp-2Ch]@12 unsigned int v31; // [sp+10h] [bp-18h]@15 int v32; // [sp+10h] [bp-18h]@16 int v33; // [sp+14h] [bp-14h]@18 int v34; // [sp+30h] [bp+8h]@13 int v35; // [sp+38h] [bp+10h]@24 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_14D41D60 & 1) ) { dword_14D41D60 |= 1u; word_14D41D5C = 70; atexit(nullsub_187); } v5 = *(_DWORD *)v4; if ( !((1 << **(_BYTE **)(v4 + 3828)) & (unsigned __int16)word_14D41D5C) ) goto LABEL_6; v6 = *(_DWORD *)(v4 + 161552); v7 = (*(int (__thiscall **)(int))(v5 + 836))(v4); if ( sub_611FC0((int)&dword_14D41B48, v7, v6) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) ) goto LABEL_30; if ( *(_WORD *)(v4 + 85728) & 0xC ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 20, 10259); goto LABEL_26; } if ( !sub_4C3BD0(v4 + 84508, v4) ) { LABEL_30: v5 = *(_DWORD *)v4; LABEL_6: (*(void (__thiscall **)(int, signed int, signed int, signed int))(v5 + 776))(v4, 47, 20, 10259); LABEL_26: v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ"; goto LABEL_27; } v8 = a2; if ( *(_QWORD *)(v4 + 161544) < *(_QWORD *)(a2 + 2) ) { v29 = 10260; v28 = 20; LABEL_12: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, v28, v29); v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ"; goto LABEL_27; } v9 = sub_626BC0((int)&unk_1325CF38, 0); v34 = v9; if ( !v9 ) { v29 = 10259; v28 = 16; goto LABEL_12; } v10 = *(_DWORD *)v9 * *(_QWORD *)(v8 + 2); v11 = HIDWORD(v10); v31 = v10; v12 = (unsigned __int64)*(_DWORD *)(v34 + 4) * v10 / 0x3E8; if ( v12 ) { v14 = (__PAIR__(v11, v31) - v12) >> 32; v32 = v31 - v12; } else { v13 = __CFADD__(v31, -1); v32 = v31 - 1; v14 = v13 + v11 - 1; } v33 = v14; if ( v14 || v32 ) { v15 = off_849C18; *(_WORD *)off_849C18 = -17387; *((_WORD *)v15 + 1) = a4; *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); *((_WORD *)v15 + 4) = sub_4802C0(v16); *(_DWORD *)((char *)v15 + 10) = *(_DWORD *)(v8 + 2); *(_DWORD *)((char *)v15 + 14) = *(_DWORD *)(v8 + 6); *(_DWORD *)((char *)v15 + 18) = v32; *(_DWORD *)((char *)v15 + 22) = v33; if ( sub_4C81E0(&off_849C18, 26) ) { v17 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v17); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ : Packet Too Long", 26); } v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v19 = *(_DWORD *)v18; v35 = v18; v20 = (*(int (__thiscall **)(int, _DWORD, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 2004))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), -1, 1); v21 = sub_4802C0(v20); (*(void (__thiscall **)(int, _DWORD))(v19 + 112))(v35, (unsigned __int16)v21); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v23 = *(_DWORD *)v22; v24 = (*(int (__thiscall **)(int, int, int, signed int))(*(_DWORD *)v4 + 2004))(v4, v32, v33, 1); v25 = sub_4802C0(v24); (*(void (__thiscall **)(int, _DWORD))(v23 + 72))(v22, (unsigned __int16)v25); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); sub_43BBF0(v26); v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ"; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 20, 10259); v30 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ"; } LABEL_27: --dword_750CB8; return sub_467660((int)&unk_D020420, v30); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D41D5C: using guessed type __int16 word_14D41D5C; // 14D41D60: using guessed type int dword_14D41D60; //----- (006135F0) -------------------------------------------------------- int __thiscall sub_6135F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@5 char v6; // al@7 int v7; // edx@7 int v8; // eax@15 int v9; // eax@15 int v10; // edi@15 int v11; // eax@16 int v12; // edx@17 signed int v14; // [sp-4h] [bp-28h]@11 int v15; // [sp-4h] [bp-28h]@12 int v16; // [sp+14h] [bp-10h]@10 int v17; // [sp+14h] [bp-10h]@15 int v18; // [sp+2Ch] [bp+8h]@15 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; dword_750AB8[dword_750CB8++] = -1; if ( !(dword_14D41D68 & 1) ) { dword_14D41D68 |= 1u; word_14D41D64 = 70; atexit(nullsub_188); } if ( !((1 << **((_BYTE **)v4 + 957)) & (unsigned __int16)word_14D41D64) ) goto LABEL_31; v5 = *(_DWORD *)((char *)v4 + 122); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 14, 10270); goto LABEL_26; } v6 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688); v7 = *(_DWORD *)v4; if ( v6 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v7 + 776))(v4, 47, 14, 10265); goto LABEL_26; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v7 + 2532))(v4) ) { LABEL_31: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 14, 10265); LABEL_26: v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; goto LABEL_27; } v16 = *(_BYTE *)(a2 + 2); if ( v16 >= (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 9121) + 8))((char *)v4 + 36484) ) { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ : wrong slot", v16); v14 = 10265; LABEL_12: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 14, v14); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; LABEL_27: --dword_750CB8; return sub_467660((int)&unk_D020420, v15); } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int, _DWORD))(*((_DWORD *)v4 + 14672) + 4))( (char *)v4 + 58688, 9, v16, *((_WORD *)v4 + 80389)) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 10269); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; goto LABEL_27; } v8 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 9121))( (char *)v4 + 36484, *(_BYTE *)(a2 + 2)); v18 = v8; v17 = v8 + 8; v9 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(v8 + 8)); v10 = v9; if ( !v9 || (v11 = *(_DWORD *)v9, !*(_DWORD *)v10) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ : Try to use empty cell", 0); v14 = 10271; goto LABEL_12; } v12 = *(_DWORD *)v4; if ( *(_DWORD *)(v11 + 98) != 5 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v12 + 776))(v4, 12, 14, 10266); v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; goto LABEL_27; } if ( *(_DWORD *)(*(_DWORD *)v10 + 127) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(v12 + 1240))(v4) ) { v14 = 10268; goto LABEL_12; } if ( (unsigned int)(*(int (__stdcall **)(int))(**(_DWORD **)(v18 + 112) + 28))(v17) >= 1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 14, 10264); --dword_750CB8; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ : Try to use lot 0 item", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 47, 14, 10271); --dword_750CB8; v15 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; } return sub_467660((int)&unk_D020420, v15); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D20890: using guessed type int dword_14D20890; // 14D41D64: using guessed type __int16 word_14D41D64; // 14D41D68: using guessed type int dword_14D41D68; //----- (006138F0) -------------------------------------------------------- int __thiscall sub_6138F0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int v6; // eax@3 int v7; // eax@6 int v8; // eax@8 int v9; // ebx@8 int v10; // eax@11 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 637582360; *((_BYTE *)v5 + 10) = -1; *((_WORD *)v5 + 2) = *(_WORD *)(a2 + 2); if ( *(_DWORD *)(v4 + 122) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 ) { *((_WORD *)v5 + 1) = 9730; } else { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); if ( sub_6123C0((int)&dword_14D41B48, v7) ) { *((_WORD *)v5 + 1) = 9736; } else { v8 = sub_612360((int)&dword_14D41B48, *(_WORD *)(a2 + 2)); v9 = v8; if ( !v8 ) { *((_WORD *)v5 + 1) = 9732; if ( sub_4C81E0(&off_849C18, 11) ) goto LABEL_3; goto LABEL_10; } v10 = sub_428740(v8); if ( v10 ) { if ( (unsigned int)sub_402710(v4, v10) <= 0xF4240 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, *(_BYTE *)(v4 + 32686)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 16))(v9) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 20))(v9, (char *)v5 + 10) ) *(_DWORD *)((char *)v5 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 12))(v9); else *((_WORD *)v5 + 1) = 9734; } else { *((_WORD *)v5 + 1) = 9733; } } else { *((_WORD *)v5 + 1) = 9737; } } else { *((_WORD *)v5 + 1) = 9735; } } else { *((_WORD *)v5 + 1) = 9732; } } } if ( sub_4C81E0(&off_849C18, 11) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_24; } goto LABEL_10; } *((_WORD *)v5 + 1) = 9729; if ( sub_4C81E0(&off_849C18, 11) ) { LABEL_3: v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_24: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); goto LABEL_25; } LABEL_10: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ : Packet Too Long", 11); LABEL_25: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00613B30) -------------------------------------------------------- int __thiscall sub_613B30(void *this) { void *v1; // esi@1 void *v2; // edi@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::sp_Gamble_PrevMapNameSave2World"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::sp_Gamble_PrevMapNameSave2World"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = -17379; *((_WORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); *((_DWORD *)v2 + 1) = *(_DWORD *)((char *)v1 + 32727); *((_DWORD *)v2 + 2) = *(_DWORD *)((char *)v1 + 32731); *((_DWORD *)v2 + 3) = *(_DWORD *)((char *)v1 + 32735); *((_DWORD *)v2 + 4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); if ( sub_4C81E0(&off_849C18, 20) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_Gamble_PrevMapNameSave2World : Packet Too Long", 20); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShinePlayer::sp_Gamble_PrevMapNameSave2World"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00613C50) -------------------------------------------------------- int __thiscall sub_613C50(void *this) { void *v1; // esi@1 void *v2; // edi@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShinePlayer::sp_Gamble_CoinDataSave2World"); dword_7508B8[dword_750CB8] = (int)"ShinePlayer::sp_Gamble_CoinDataSave2World"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = 16428; *((_WORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); *((_DWORD *)v2 + 3) = *((_DWORD *)v1 + 40384); *((_DWORD *)v2 + 4) = *((_DWORD *)v1 + 40385); *((_DWORD *)v2 + 1) = *((_DWORD *)v1 + 40386); *((_DWORD *)v2 + 2) = *((_DWORD *)v1 + 40387); *((_DWORD *)v2 + 5) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); if ( sub_4C81E0(&off_849C18, 24) ) { v3 = sub_428750((int)&dword_14D12A00); sub_4C7EC0(&off_849C18, v3); } else { sub_639100(&unk_86DDD8, (int)"ShinePlayer::sp_Gamble_CoinDataSave2World : Packet Too Long", 24); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShinePlayer::sp_Gamble_CoinDataSave2World"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D12A00: using guessed type int dword_14D12A00; //----- (00613D80) -------------------------------------------------------- int __thiscall sub_613D80(void *this) { void *v1; // esi@1 void *v2; // eax@1 int v3; // eax@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = -17404; *(_DWORD *)((char *)v2 + 2) = *((_DWORD *)v1 + 40386); *(_DWORD *)((char *)v2 + 6) = *((_DWORD *)v1 + 40387); if ( sub_4C81E0(&off_849C18, 10) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin : Packet Too Long", 10); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00613E80) -------------------------------------------------------- int __thiscall sub_613E80(void *this) { void *v1; // edi@1 void *v2; // eax@1 unsigned int v3; // esi@1 unsigned int v4; // ebx@1 int v5; // edi@5 unsigned int v6; // ecx@11 unsigned int v7; // edx@11 int v8; // eax@15 unsigned __int64 v10; // [sp+10h] [bp-28h]@1 void *v11; // [sp+1Ch] [bp-1Ch]@1 void *v12; // [sp+20h] [bp-18h]@1 signed int v13; // [sp+24h] [bp-14h]@2 unsigned int v14; // [sp+28h] [bp-10h]@4 v1 = this; v12 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; v3 = 0; *(_WORD *)off_849C18 = -17403; v4 = 0; v11 = v2; v10 = 0i64; if ( dword_13267D74 ) v13 = *(_DWORD *)(dword_13267D74 + 40); else v13 = 0; v14 = 0; if ( v13 <= 0 ) { LABEL_11: v6 = *((_DWORD *)v1 + 40385); v7 = *((_DWORD *)v1 + 40384); if ( __PAIR__(v3, v4) > __PAIR__(v6, v7) ) v10 = __PAIR__(v3, v4) - __PAIR__(v6, v7); *(_QWORD *)((char *)v2 + 2) = v10; if ( sub_4C81E0(&off_849C18, 10) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin : Packet Too Long", 10); } } else { while ( 1 ) { v5 = sub_626BC0((int)&unk_13267D40, v14); if ( !v5 ) break; if ( *(_BYTE *)v5 == (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v12 + 1240))() ) { v4 = *(_DWORD *)(v5 + 1); v3 = 0; LABEL_10: v2 = v11; v1 = v12; goto LABEL_11; } ++v14; if ( (signed int)v14 >= v13 ) goto LABEL_10; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13267D74: using guessed type int dword_13267D74; //----- (00614000) -------------------------------------------------------- void __thiscall sub_614000(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ebx@1 int v5; // eax@1 int v6; // eax@9 void *v7; // edi@13 int v8; // eax@13 int v9; // eax@15 int v10; // ebx@16 int v11; // edi@16 int v12; // eax@16 __int16 v13; // ax@16 int v14; // ebx@16 int v15; // edi@16 int v16; // eax@16 __int16 v17; // ax@16 int v18; // eax@16 __int64 v19; // [sp+10h] [bp-18h]@13 unsigned __int16 v20; // [sp+14h] [bp-14h]@12 char v21; // [sp+18h] [bp-10h]@5 int v22; // [sp+24h] [bp-4h]@5 int v23; // [sp+30h] [bp+8h]@12 v3 = this; v4 = a3; v5 = *(_DWORD *)this; if ( a3 ) { if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD))(v5 + 2852))(0) == 1 ) { (*(void (__cdecl **)(signed int))(*(_DWORD *)v3 + 2332))(1793); } else { sub_5CF620(&v21); v22 = 0; sub_56E9E0((int)&v21); while ( sub_56EA40((int)&dword_AA0A90, (int)&v21) != *(_WORD *)(v4 + 8) ) { if ( !sub_56E9F0((int)&dword_AA0A90, (int)&v21) ) goto LABEL_10; } v6 = sub_56EA20((int)&dword_AA0A90, (int)&v21); if ( !v6 || *(_DWORD *)(v6 + 36) != 32 || (v20 = *(_WORD *)(v6 + 40), LOWORD(a3) = a2 & 0x3FF | 0x2400, (v23 = (**((int (__stdcall ***)(_DWORD))v3 + 9121))(a2)) == 0) ) { LABEL_10: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1794, 9); goto LABEL_17; } v7 = off_849C18; *(_WORD *)off_849C18 = -17383; *((_WORD *)v7 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v7 + 2) = *(_DWORD *)v4; *((_DWORD *)v7 + 3) = *(_DWORD *)(v4 + 4); *((_QWORD *)v7 + 2) = v20; v19 = v20; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); *((_WORD *)v7 + 12) = sub_4802C0(v8); if ( sub_4C81E0(&off_849C18, 26) ) { v9 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v9); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::NC_GAMBLE_COIN_DB_USE_COINITEM_REQ : Packet Too Long", 26); } v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); v11 = *(_DWORD *)v10; v12 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int, _DWORD))(*(_DWORD *)v3 + 2004))( v3, v19, HIDWORD(v19), 1, 0); v13 = sub_4802C0(v12); (*(void (__thiscall **)(int, _DWORD))(v11 + 112))(v10, (unsigned __int16)v13); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v15 = *(_DWORD *)v14; v16 = (*(int (__thiscall **)(void *, int, int *, int *))(*(_DWORD *)v3 + 2004))(v3, v23, &a3, &a3); v17 = sub_4802C0(v16); (*(void (__thiscall **)(int, _DWORD))(v15 + 48))(v14, (unsigned __int16)v17); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); sub_43BBF0(v18); LABEL_17: v22 = -1; nullsub_2(&v21); } } else { (*(void (__cdecl **)(signed int))(v5 + 2332))(1794); } } // AA0A90: using guessed type int dword_AA0A90; // 14D16430: using guessed type int dword_14D16430; //----- (00614270) -------------------------------------------------------- int __stdcall sub_614270(int a1, int a2) { int v2; // esi@1 void (__thiscall *v3)(_DWORD, _DWORD, _DWORD, _DWORD); // edx@3 int v5; // [sp-Ch] [bp-28h]@3 int v6; // [sp-8h] [bp-24h]@3 int v7; // [sp-4h] [bp-20h]@1 int v8; // [sp+Ch] [bp-10h]@1 int v9; // [sp+18h] [bp-4h]@1 v8 = (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"; sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_WORD *)(a1 + 2); v9 = 0; v2 = sub_54DE90(&unk_13253630, v7); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) ) { v3 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2812); v5 = *(_DWORD *)(a1 + 8); v6 = *(_DWORD *)(a1 + 12); v7 = *(_DWORD *)(a1 + 16); v3(v2, v5, v6, v7); } --dword_750CB8; v9 = -1; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00614350) -------------------------------------------------------- int __stdcall sub_614350(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2816))(v2, a1 + 8); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00614420) -------------------------------------------------------- int __stdcall sub_614420(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54E4D0(&unk_13253630, *(_DWORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2836))( v2, *(_DWORD *)(a1 + 6), *(_DWORD *)(a1 + 10)); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2840))(v2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00614510) -------------------------------------------------------- int __stdcall sub_614510(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 int v8; // eax@7 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_DB_BUY_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_DB_BUY_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 10) == 10248 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_DB_BUY_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 776))(v2, 47, 16, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_DB_BUY_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00614660) -------------------------------------------------------- int __stdcall sub_614660(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 int v8; // eax@7 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_SELL_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_SELL_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 10) == 10256 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 8), 0) ) { v5 = *(_WORD *)(a1 + 8); v6 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_DB_BUY_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } } else { v8 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a1 + 8)); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 776))(v2, 47, 20, *(_WORD *)(a1 + 10)); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_SELL_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006147B0) -------------------------------------------------------- int __stdcall sub_6147B0(int a1, int a2) { int v2; // esi@1 int (__thiscall *v3)(_DWORD); // eax@4 int v4; // eax@5 int v5; // ST04_4@6 __time32_t v6; // eax@6 __time32_t v7; // eax@6 void *v8; // eax@7 int v9; // eax@9 int v10; // eax@10 sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_USE_COINITEM_ACK"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_USE_COINITEM_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) { v3 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004); if ( *(_WORD *)(a1 + 18) == 1792 ) { v4 = v3(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, v2, *(_WORD *)(a1 + 16), 0) ) { v5 = *(_WORD *)(a1 + 16); v6 = sub_418EA0( (__time32_t)byte_14D15210, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_DB_BUY_ACK : "); v7 = sub_43B910(v6, v5); sub_418F20(v7, (int)&unk_13359E04); } (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); v8 = off_849C18; *(_WORD *)off_849C18 = -17381; *(_DWORD *)((char *)v8 + 2) = *(_DWORD *)(a1 + 8); *(_DWORD *)((char *)v8 + 6) = *(_DWORD *)(a1 + 12); if ( sub_4C81E0(&off_849C18, 10) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_USE_COINITEM_ACK : Packet Too Long", 10); } } else { v10 = v3(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)(a1 + 16)); (*(void (__thiscall **)(int, _DWORD, signed int))(*(_DWORD *)v2 + 2332))(v2, *(_WORD *)(a1 + 18), 9); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::gds_NC_GAMBLE_COIN_DB_USE_COINITEM_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00614970) -------------------------------------------------------- int __stdcall sub_614970(int a1, int a2) { int v2; // edi@1 unsigned __int16 v3; // ax@1 unsigned __int16 v4; // cx@2 int v5; // esi@3 unsigned __int16 v6; // bx@3 int v7; // eax@3 bool v8; // zf@4 int v9; // eax@4 int v10; // ecx@5 int v11; // eax@7 void *v12; // ebx@8 int v13; // ecx@9 int v14; // ecx@10 int v15; // eax@14 int v16; // ecx@16 int v17; // ecx@17 int v18; // edx@20 int v19; // eax@21 unsigned __int16 v21; // [sp+10h] [bp-1Ch]@3 unsigned __int16 v22; // [sp+12h] [bp-1Ah]@3 sub_4675D0((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); dword_7508B8[dword_750CB8] = (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"; dword_750AB8[dword_750CB8++] = -1; v2 = dword_13253824; v3 = *(_WORD *)(*(_DWORD *)(dword_13253824 + 8) + 12 * *(_WORD *)(dword_13253824 + 14) + 4); while ( 1 ) { v4 = *(_WORD *)(v2 + 4); if ( v3 >= v4 ) break; v5 = v3; v6 = v3; v7 = *(_DWORD *)(v2 + 8); v21 = v6; v22 = *(_WORD *)(v7 + 12 * v5 + 4); if ( v6 >= v4 || (v8 = *(_BYTE *)(v7 + 12 * v5 + 8) == 0, v9 = v7 + 12 * v5, v8) ) v10 = 0; else v10 = *(_DWORD *)v9; v11 = (*(int (**)(void))(*(_DWORD *)v10 + 2004))(); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 16))(v11) == 1 ) { v12 = off_849C18; *(_WORD *)off_849C18 = -17398; if ( v21 < *(_WORD *)(v2 + 4) && (v13 = *(_DWORD *)(v2 + 8), *(_BYTE *)(v13 + 12 * v5 + 8)) ) v14 = *(_DWORD *)(v13 + 12 * v5); else v14 = 0; *(_DWORD *)((char *)v12 + 2) = (*(int (**)(void))(*(_DWORD *)v14 + 836))(); *(_DWORD *)((char *)v12 + 6) = *(_DWORD *)(a1 + 2); if ( sub_4C81E0(&off_849C18, 10) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); v3 = v22; } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_REQ : Packet Too Long", 10); v3 = v22; } } else { if ( v6 < *(_WORD *)(v2 + 4) && (v16 = *(_DWORD *)(v2 + 8), *(_BYTE *)(v16 + 12 * v5 + 8)) ) v17 = *(_DWORD *)(v16 + 12 * v5); else v17 = 0; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v17 + 2836))(0, 0); if ( v6 < *(_WORD *)(v2 + 4) && (v18 = *(_DWORD *)(v2 + 8), *(_BYTE *)(v18 + 12 * v5 + 8)) ) v19 = *(_DWORD *)(v18 + 12 * v5); else v19 = 0; (*(void (__thiscall **)(int))(*(_DWORD *)v19 + 2840))(v19); v3 = v22; } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 13253824: using guessed type int dword_13253824; // 14D16430: using guessed type int dword_14D16430; //----- (00614B70) -------------------------------------------------------- int __thiscall sub_614B70(int this) { int v1; // esi@1 int v2; // eax@1 signed int v3; // edx@1 v1 = this; sub_6114D0(this); *(_DWORD *)v1 = off_700B64; *(_DWORD *)(v1 + 68) = 0; *(_BYTE *)(v1 + 72) = 0; *(_DWORD *)(v1 + 76) = 0; *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; *(_DWORD *)(v1 + 88) = 0; *(_DWORD *)(v1 + 92) = 0; *(_DWORD *)(v1 + 96) = 0; *(_WORD *)(v1 + 100) = 0; *(_WORD *)(v1 + 102) = 0; *(_BYTE *)(v1 + 104) = 0; v2 = v1 + 120; v3 = 52; do { *(_DWORD *)(v2 - 8) = 0; *(_DWORD *)(v2 - 4) = 0; *(_WORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); *(_DWORD *)(v1 + 944) = 0; *(_DWORD *)(v1 + 948) = 0; return v1; } // 700B64: using guessed type int (__stdcall *off_700B64[3])(int); //----- (00614BE0) -------------------------------------------------------- void __thiscall sub_614BE0(int this) { *(_DWORD *)this = off_700B64; sub_6114F0(this); } // 700B64: using guessed type int (__stdcall *off_700B64[3])(int); //----- (00614BF0) -------------------------------------------------------- char __thiscall sub_614BF0(int this, unsigned __int8 a2) { int v2; // edi@1 char result; // al@1 void *v4; // eax@2 v2 = this; result = sub_611540(this, a2); if ( result ) { v4 = malloc(232 * a2); *(_DWORD *)(v2 + 28) = v4; result = v4 != 0; } return result; } //----- (00614C30) -------------------------------------------------------- bool __thiscall sub_614C30(int this, unsigned __int8 a2) { return sub_611540(this, a2) != 0; } //----- (00614C50) -------------------------------------------------------- int __thiscall sub_614C50(int this) { return *(_DWORD *)(this + 68); } //----- (00614C60) -------------------------------------------------------- signed int __stdcall sub_614C60(int a1) { return 9751; } //----- (00614C70) -------------------------------------------------------- signed int __stdcall sub_614C70(int a1) { return 9753; } //----- (00614C80) -------------------------------------------------------- signed int __stdcall sub_614C80(int a1) { return 9765; } //----- (00614C90) -------------------------------------------------------- signed int __stdcall sub_614C90(int a1, int a2) { return 9765; } //----- (00614CA0) -------------------------------------------------------- signed int __stdcall sub_614CA0(int a1, int a2) { return 9795; } //----- (00614CB0) -------------------------------------------------------- signed int __stdcall sub_614CB0(int a1, int a2) { return 9781; } //----- (00614CC0) -------------------------------------------------------- signed int __cdecl sub_614CC0() { return 9810; } //----- (00614CD0) -------------------------------------------------------- signed int __stdcall sub_614CD0(int a1) { return 9810; } //----- (00614CE0) -------------------------------------------------------- bool __cdecl sub_614CE0(int a1, int a2) { return *(_DWORD *)(a1 + 20) < *(_DWORD *)(a2 + 20); } //----- (00614D00) -------------------------------------------------------- int __thiscall sub_614D00(int this) { int v1; // esi@1 signed int v2; // ebx@1 int v3; // eax@3 void *v4; // eax@8 int v5; // eax@9 int v6; // edi@9 int v7; // eax@13 signed int v9; // [sp+14h] [bp-10h]@8 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_Routine"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::go_Routine"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; nullsub_2((void *)v1); if ( *(_BYTE *)(v1 + 72) == 1 && (unsigned int)dword_14D129E8 >= *(_DWORD *)(v1 + 76) ) { v3 = *(_DWORD *)(v1 + 68); if ( v3 == 1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 120))(v1) == 9808 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 124))(v1) == 9808 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 128))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 136))(v1); } } else { if ( v3 == 3 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 160))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 108))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 116))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 156))(v1); v4 = off_849C18; *(_WORD *)off_849C18 = -17280; *(_DWORD *)((char *)v4 + 2) = 0; *((_WORD *)v4 + 3) = *(_WORD *)(v1 + 102); *((_BYTE *)v4 + 8) = *(_BYTE *)(v1 + 104); v9 = (unsigned __int8)sub_611710(v1); if ( v9 > 0 ) { do { v5 = sub_611720(v1, v2); v6 = v5; if ( v5 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 2848))(v5, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 760))(v6); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v6, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::go_Routine : Packet Too Long", 9); } } ++v2; } while ( v2 < v9 ); v2 = 0; } (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 112))(v1); *(_DWORD *)(v1 + 68) = v2; } } *(_BYTE *)(v1 + 72) = 0; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_Routine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00614EF0) -------------------------------------------------------- signed int __thiscall sub_614EF0(void *this, int a2) { int v2; // edi@1 int v3; // ebx@1 signed int result; // eax@2 void *v5; // esi@3 int v6; // eax@4 char v7; // al@6 int v8; // eax@8 int v9; // eax@14 int v10; // [sp+14h] [bp-14h]@7 signed int v11; // [sp+18h] [bp-10h]@6 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_SendGameInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::go_SendGameInfo"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( a2 ) { v5 = off_849C18; *(_DWORD *)off_849C18 = 638631013; *((_WORD *)v5 + 2) = *(_WORD *)(v2 + 80); *((_BYTE *)v5 + 6) = *(_BYTE *)(v2 + 82); *(_WORD *)((char *)v5 + 7) = *(_WORD *)(v2 + 83); *((_BYTE *)v5 + 9) = *(_BYTE *)(v2 + 85); *((_WORD *)v5 + 5) = *(_WORD *)(v2 + 86); *((_BYTE *)v5 + 12) = *(_BYTE *)(v2 + 88); *(_WORD *)((char *)v5 + 13) = *(_WORD *)(v2 + 89); *((_BYTE *)v5 + 15) = *(_BYTE *)(v2 + 91); *((_WORD *)v5 + 8) = *(_WORD *)(v2 + 92); *((_BYTE *)v5 + 18) = *(_BYTE *)(v2 + 94); *(_WORD *)((char *)v5 + 19) = *(_WORD *)(v2 + 95); *((_BYTE *)v5 + 21) = *(_BYTE *)(v2 + 97); *((_WORD *)v5 + 11) = *(_WORD *)(v2 + 98); *((_BYTE *)v5 + 24) = *(_BYTE *)(v2 + 100); *(_DWORD *)((char *)v5 + 25) = *(_DWORD *)(v2 + 68); *(_DWORD *)((char *)v5 + 29) = 0; *(_WORD *)((char *)v5 + 33) = *(_WORD *)(v2 + 36); if ( *(_DWORD *)(v2 + 68) == 1 ) v6 = *(_DWORD *)(v2 + 76) - dword_14D129E8; else v6 = 0; *(_DWORD *)((char *)v5 + 35) = v6; *(_WORD *)((char *)v5 + 39) = *(_WORD *)(v2 + 42); *(_DWORD *)((char *)v5 + 41) = *(_DWORD *)(v2 + 32); *(_DWORD *)((char *)v5 + 45) = 0; v7 = sub_611710(v2); *((_BYTE *)v5 + 51) = v7; v11 = 0; if ( v7 ) { v10 = (int)((char *)v5 + 52); do { v8 = sub_611720(v2, v11); if ( v8 && v8 != a2 ) { *(_WORD *)v10 = *(_WORD *)(v8 + 4); ++v3; v10 += 2; } ++v11; } while ( v11 < *((_BYTE *)v5 + 51) ); } *((_BYTE *)v5 + 51) = v3; if ( sub_4C81E0(&off_849C18, 2 * (unsigned __int8)v3 + 52) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, a2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 2 * (unsigned __int8)v3 + 52); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_SendGameInfo"); result = 9744; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_SendGameInfo"); result = 9751; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00615110) -------------------------------------------------------- signed int __thiscall sub_615110(void *this, int a2) { void *v2; // esi@1 signed int result; // eax@2 void *v4; // ebx@6 signed int v5; // edi@6 int v6; // esi@6 int v7; // eax@7 int v8; // eax@9 signed int v9; // edx@11 int v10; // ecx@11 int v11; // eax@13 int v12; // edi@14 int v13; // eax@16 int v14; // edi@20 int v15; // eax@22 signed int v16; // [sp+14h] [bp-24h]@6 int v17; // [sp+18h] [bp-20h]@11 signed int v18; // [sp+1Ch] [bp-1Ch]@11 int v19; // [sp+20h] [bp-18h]@7 int v20; // [sp+24h] [bp-14h]@1 signed int v21; // [sp+28h] [bp-10h]@6 v2 = this; v20 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 ) goto LABEL_2; if ( *((_DWORD *)v2 + 17) == 1 ) { if ( !*((_DWORD *)v2 + 7) ) { LABEL_2: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo"); return 9753; } v4 = off_849C18; *(_WORD *)off_849C18 = -17305; *((_BYTE *)v4 + 2) = 1; v5 = 3; v6 = 0; v21 = 0; v16 = (unsigned __int8)sub_611710(v20); if ( v16 > 0 ) { do { v7 = sub_611720(v20, v21); v19 = v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 2848))(v7, 1) ) { v8 = (*(int (__stdcall **)(signed int))(*(_DWORD *)v20 + 188))(v21); if ( v8 ) { if ( v19 != a2 ) { v9 = 0; v10 = v8 + 4; v18 = 0; v17 = v8 + 4; do { if ( *(_DWORD *)v10 ) { v11 = (int)((char *)v4 + 10 * v6 + 2); *(_DWORD *)((char *)v4 + 10 * v6 + 7) = v9; *(_DWORD *)((char *)v4 + 10 * v6 + 11) = *(_DWORD *)v10; v5 += 10; ++v6; *(_WORD *)(v11 + 3) = *(_WORD *)(v19 + 4); if ( v5 > 7500 ) { v12 = v5 + 2; *(_WORD *)((char *)v4 + 3) = v6; if ( sub_4C81E0(&off_849C18, v12) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, a2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo : Packet Too Long", v12); } v9 = v18; v5 = 3; v6 = 0; *((_BYTE *)v4 + 2) = 0; } } ++v9; v10 = v17 + 4; v18 = v9; v17 += 4; } while ( v9 < 52 ); } } } } ++v21; } while ( v21 < v16 ); } *((_BYTE *)v4 + 2) |= 2u; v14 = v5 + 2; *(_WORD *)((char *)v4 + 3) = v6; if ( sub_4C81E0(&off_849C18, v14) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v15 + 12))(v15, a2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo : Packet Too Long", v14); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo"); result = 9744; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo"); result = 9752; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006153B0) -------------------------------------------------------- signed int __thiscall sub_6153B0(void *this, int a2) { int v2; // edi@1 signed int result; // eax@2 char v4; // bl@3 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v4 = sub_611710(v2); if ( v4 < (unsigned __int8)sub_58FC80(v2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2844))(a2, 1) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2856))(a2, 1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 212))(v2, a2, 0); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 164))(v2) && (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD))v2)(v2, a2) ) { sub_612060((int)&dword_14D41B48); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"); result = 9744; } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2856))(a2, 0); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"); result = 9751; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"); result = 9755; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"); result = 9749; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter"); result = 9751; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006155A0) -------------------------------------------------------- signed int __thiscall sub_6155A0(void *this, int a2) { int v2; // ebx@1 signed int v3; // esi@1 signed int result; // eax@2 void *v5; // eax@6 signed int v6; // edi@6 int v7; // eax@7 int v8; // esi@7 int v9; // eax@12 char v10; // [sp+10h] [bp-18h]@5 int v11; // [sp+14h] [bp-14h]@1 int v12; // [sp+18h] [bp-10h]@6 int v13; // [sp+24h] [bp-4h]@1 v2 = (int)this; v11 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter"; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v13 = 0; if ( a2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 2848))(a2, 1) && sub_611750(v2, (int)&v10, a2) ) { v5 = off_849C18; *(_WORD *)off_849C18 = -17306; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); v6 = 0; v12 = (unsigned __int8)sub_611710(v2); if ( v12 > 0 ) { do { v7 = sub_611720(v2, v6); v8 = v7; if ( v7 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 2848))(v7, 1) && v8 != a2 ) { if ( sub_4C81E0(&off_849C18, 4) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 760))(v8); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter : Packet Too Long", 4); } } ++v6; } while ( v6 < v12 ); v3 = -1; } --dword_750CB8; v13 = v3; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter"); result = 9744; } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter"); result = 9755; } } else { --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter"); result = 9751; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00615760) -------------------------------------------------------- signed int __thiscall sub_615760(void *this, int a2, char a3) { int v3; // edi@1 signed int result; // eax@2 void *v5; // eax@3 signed int v6; // ebx@3 int v7; // esi@4 int v8; // eax@9 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadOut"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadOut"; dword_750AB8[dword_750CB8++] = -1; if ( a2 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -17302; *((_BYTE *)v5 + 2) = a3; *(_WORD *)((char *)v5 + 3) = *(_WORD *)(a2 + 4); v6 = 0; if ( sub_611710(v3) ) { do { v7 = sub_611720(v3, v6); if ( v7 && (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 2848))(v7, 1) && v7 != a2 ) { if ( sub_4C81E0(&off_849C18, 5) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 760))(v7); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v7, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadOut : Packet Too Long", 5); } } ++v6; } while ( v6 < (unsigned __int8)sub_611710(v3) ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadOut"); result = 9760; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadOut"); result = 9765; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006158D0) -------------------------------------------------------- signed int __thiscall sub_6158D0(void *this, int a2, int a3) { void *v3; // ebx@1 signed int result; // eax@4 int v5; // eax@5 int v6; // eax@12 int v7; // ebx@12 int v8; // esi@14 unsigned __int64 v9; // qax@14 bool v10; // al@16 void *v11; // [sp+14h] [bp-10h]@1 v3 = this; v11 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 2848))(a2, 1) ) { v5 = *((_DWORD *)v3 + 17); if ( v5 != 1 && v5 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9782; } else { if ( *(_DWORD *)(a3 + 4) ) { if ( *(_DWORD *)a3 < 0 || *(_DWORD *)a3 >= 52 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9784; } else { v6 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 184))(v3, a2); v7 = v6; if ( v6 ) { v8 = *(_DWORD *)(a3 + 4) + *(_DWORD *)(v6 + 212); LODWORD(v9) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2820))(a2); if ( (unsigned int)v8 <= v9 ) { v10 = sub_630F40( &unk_133594F0, *(_DWORD *)a3, *((_DWORD *)v11 + 8), *(_DWORD *)(a3 + 4) + *(_DWORD *)(v7 + 4 * *(_DWORD *)a3 + 4)); --dword_750CB8; if ( v10 ) { sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9776; } else { sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9787; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9786; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9785; } } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9783; } } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9780; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting"); result = 9781; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00615BA0) -------------------------------------------------------- signed int __thiscall sub_615BA0(void *this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@2 void *v5; // eax@4 signed int v6; // edi@4 int v7; // eax@5 int v8; // esi@5 int v9; // eax@10 signed int v10; // [sp+2Ch] [bp+Ch]@4 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBetting"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBetting"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -17293; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = *(_DWORD *)a3; *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 4); v6 = 0; v10 = (unsigned __int8)sub_611710(v3); if ( v10 > 0 ) { do { v7 = sub_611720(v3, v6); v8 = v7; if ( v7 && (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 2848))(v7, 1) && v8 != a2 ) { if ( sub_4C81E0(&off_849C18, 12) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 760))(v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v8, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBetting : Packet Too Long", 12); } } ++v6; } while ( v6 < v10 ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBetting"); result = 9776; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBetting"); result = 9781; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00615D20) -------------------------------------------------------- signed int __thiscall sub_615D20(void *this, int a2, int a3) { void *v3; // edi@1 signed int result; // eax@4 int v5; // eax@5 int v6; // eax@12 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 2848))(a2, 1) ) { v5 = *((_DWORD *)v3 + 17); if ( v5 != 1 && v5 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9799; } else { if ( *(_DWORD *)(a3 + 4) ) { if ( *(_DWORD *)a3 < 0 || *(_DWORD *)a3 >= 52 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9803; } else { v6 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 184))(v3, a2); if ( v6 ) { if ( *(_DWORD *)(v6 + 4 * *(_DWORD *)a3 + 4) >= *(_DWORD *)(a3 + 4) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9792; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9802; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9801; } } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9800; } } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9796; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel"); result = 9795; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00615F70) -------------------------------------------------------- signed int __thiscall sub_615F70(void *this, int a2, int a3) { int v3; // ebx@1 signed int result; // eax@2 void *v5; // eax@4 signed int v6; // edi@4 int v7; // eax@5 int v8; // esi@5 int v9; // eax@10 signed int v10; // [sp+2Ch] [bp+Ch]@4 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBettingCancel"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBettingCancel"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && a3 ) { v5 = off_849C18; *(_WORD *)off_849C18 = -17290; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 4); *((_DWORD *)v5 + 1) = *(_DWORD *)a3; *((_DWORD *)v5 + 2) = *(_DWORD *)(a3 + 4); v6 = 0; v10 = (unsigned __int8)sub_611710(v3); if ( v10 > 0 ) { do { v7 = sub_611720(v3, v6); v8 = v7; if ( v7 && (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 2848))(v7, 1) && v8 != a2 ) { if ( sub_4C81E0(&off_849C18, 12) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 760))(v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v8, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBettingCancel : Packet Too Long", 12); } } ++v6; } while ( v6 < v10 ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBettingCancel"); result = 9792; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBettingCancel"); result = 9795; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006160F0) -------------------------------------------------------- signed int __thiscall sub_6160F0(void *this, int a2, signed int a3) { int v3; // edi@1 signed int v4; // ebx@1 int v6; // ecx@7 int v7; // edx@7 int v8; // eax@7 signed int v9; // esi@8 void *v10; // eax@11 __int16 v11; // cx@11 int v12; // edx@11 signed int v13; // ebx@11 int v14; // eax@12 int v15; // esi@12 int v16; // eax@16 signed int v17; // eax@21 int v18; // ecx@21 void *v19; // eax@24 int v20; // esi@25 int v21; // eax@29 signed int v22; // [sp+14h] [bp-10h]@7 int v23; // [sp+2Ch] [bp+8h]@7 signed int v24; // [sp+2Ch] [bp+8h]@11 signed int v25; // [sp+2Ch] [bp+8h]@24 int v26; // [sp+30h] [bp+Ch]@7 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( !a2 || a3 >= 2 ) goto LABEL_2; if ( a3 ) { if ( *(_DWORD *)(v3 + 68) == 1 ) { v17 = 0; v18 = v3 + 120; while ( *(_WORD *)v18 <= 0u ) { ++v17; v18 += 16; if ( v17 >= 52 ) { v19 = off_849C18; *(_WORD *)off_849C18 = -17279; *((_BYTE *)v19 + 2) = 0; *(_WORD *)((char *)v19 + 3) = 0; *(_DWORD *)((char *)v19 + 5) = 0; v25 = (unsigned __int8)sub_611710(v3); if ( v25 > 0 ) { do { v20 = sub_611720(v3, v4); if ( v20 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v20 + 2848))(v20, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 760))(v20); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v21 + 12))(v21, v20, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer : Packet Too Long", 9); } } ++v4; } while ( v4 < v25 ); v4 = 0; } *(_DWORD *)(v3 + 68) = v4; goto LABEL_33; } } goto LABEL_6; } LABEL_2: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer"); return 9781; } if ( *(_DWORD *)(v3 + 68) ) { LABEL_6: --dword_750CB8; goto LABEL_34; } v6 = 0; v26 = 0; v23 = 0; v7 = 0; v8 = v3 + 136; v22 = 13; do { v6 += *(_WORD *)(v8 - 16); v7 += *(_WORD *)v8; v23 += *(_WORD *)(v8 + 16); v26 += *(_WORD *)(v8 + 32); v9 = 1; v8 += 64; --v22; } while ( v22 ); if ( v26 + v23 + v7 + v6 != 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer"); return 9781; } v10 = off_849C18; *(_WORD *)off_849C18 = -17279; *((_BYTE *)v10 + 2) = 1; v11 = *(_WORD *)(v3 + 36); v12 = *(_WORD *)(v3 + 36); *(_BYTE *)(v3 + 72) = 1; *(_DWORD *)(v3 + 76) = dword_14D129E8 + v12; *(_WORD *)((char *)v10 + 3) = v11; *(_DWORD *)((char *)v10 + 5) = *(_DWORD *)(v3 + 76) - dword_14D129E8; v13 = 0; v24 = (unsigned __int8)sub_611710(v3); if ( v24 > 0 ) { do { v14 = sub_611720(v3, v13); v15 = v14; if ( v14 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v14 + 2848))(v14, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 760))(v15); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v15, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer : Packet Too Long", 9); } } ++v13; } while ( v13 < v24 ); v9 = 1; } *(_DWORD *)(v3 + 68) = v9; LABEL_33: --dword_750CB8; LABEL_34: sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer"); return 9776; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (006163E0) -------------------------------------------------------- char __stdcall sub_6163E0(int a1, int a2, int a3) { char result; // al@2 sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"; dword_750AB8[dword_750CB8++] = -1; if ( a1 && a2 && a3 && *(_DWORD *)(a2 + 4) ) { *(_BYTE *)a3 = 0; if ( !*(_DWORD *)(a1 + 4 * *(_DWORD *)a2 + 4) ) *(_BYTE *)a3 = 1; *(_DWORD *)(a1 + 212) += *(_DWORD *)(a2 + 4); *(_DWORD *)(a1 + 4 * *(_DWORD *)a2 + 4) += *(_DWORD *)(a2 + 4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006164E0) -------------------------------------------------------- char __stdcall sub_6164E0(int a1, int a2, int a3) { unsigned int v4; // edx@6 sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"; dword_750AB8[dword_750CB8++] = -1; if ( !a1 || !a2 || !a3 || (v4 = *(_DWORD *)(a2 + 4)) == 0 ) { --dword_750CB8; LABEL_3: sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"); return 0; } if ( *(_DWORD *)(a1 + 4 * *(_DWORD *)a2 + 4) < v4 ) { --dword_750CB8; goto LABEL_3; } *(_DWORD *)(a1 + 212) -= v4; *(_DWORD *)(a1 + 4 * *(_DWORD *)a2 + 4) -= *(_DWORD *)(a2 + 4); *(_BYTE *)a3 = 0; if ( !*(_DWORD *)(a1 + 4 * *(_DWORD *)a2 + 4) ) *(_BYTE *)a3 = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006165F0) -------------------------------------------------------- char __thiscall sub_6165F0(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // edx@1 int v4; // eax@3 int v5; // edx@3 int v6; // edi@3 __int16 v7; // bx@3 int v8; // ecx@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v1 + 236) = 0; *((_DWORD *)v1 + 237) = 0; v2 = (int)((char *)v1 + 120); v3 = 52; do { *(_DWORD *)(v2 - 8) = 0; *(_DWORD *)(v2 - 4) = 0; *(_WORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); v4 = *((_DWORD *)v1 + 20); v5 = *((_DWORD *)v1 + 22); v6 = *((_DWORD *)v1 + 23); v7 = *((_WORD *)v1 + 48); *((_DWORD *)v1 + 17) = 0; v8 = *((_DWORD *)v1 + 21); *(_DWORD *)((char *)v1 + 83) = v4; *(_DWORD *)((char *)v1 + 87) = v8; *(_DWORD *)((char *)v1 + 91) = v5; *(_DWORD *)((char *)v1 + 95) = v6; *(_WORD *)((char *)v1 + 99) = v7; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00616690) -------------------------------------------------------- char __thiscall sub_616690(void *this) { void *v1; // esi@1 char v2; // al@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory"; dword_750AB8[dword_750CB8++] = -1; v2 = *((_BYTE *)v1 + 104); *((_WORD *)v1 + 40) = *((_WORD *)v1 + 51); *((_BYTE *)v1 + 82) = v2; *((_WORD *)v1 + 51) = 0; *((_BYTE *)v1 + 104) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00616700) -------------------------------------------------------- char __thiscall sub_616700(void *this) { int v1; // esi@1 int v2; // ebx@1 char v3; // al@1 int v4; // edi@1 int v5; // edx@2 int v7; // [sp+14h] [bp-10h]@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo"; dword_750AB8[dword_750CB8++] = -1; v2 = 0; v3 = sub_611710(v1); v4 = (unsigned __int8)v3; v7 = (unsigned __int8)v3; if ( (signed int)(unsigned __int8)v3 > 0 ) { do { v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 188))(v1, v2); if ( v5 ) { *(_DWORD *)(v5 + 212) = 0; memset((void *)(v5 + 4), 0, 0xD0u); v4 = v7; *(_DWORD *)(v5 + 216) = 0; *(_DWORD *)(v5 + 220) = 0; } ++v2; } while ( v2 < v4 ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006167F0) -------------------------------------------------------- signed int __thiscall sub_6167F0(void *this) { void *v1; // esi@1 signed int result; // eax@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 17) == 1 ) { if ( *((_DWORD *)v1 + 237) || *((_DWORD *)v1 + 236) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); result = 9808; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); result = 9814; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); result = 9813; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006168F0) -------------------------------------------------------- signed int __thiscall sub_6168F0(void *this) { void *v1; // edi@1 signed int v2; // ecx@1 int v4; // esi@8 int v5; // edx@8 int v6; // eax@8 int v7; // edx@8 signed int v8; // esi@8 int v9; // ecx@9 int v10; // edx@10 int v11; // ecx@10 int v12; // edx@11 int v13; // ecx@11 int v14; // edx@12 int v15; // ecx@12 int v16; // edx@13 int v17; // ecx@13 int v18; // edx@14 int v19; // ecx@14 unsigned __int64 v20; // ST00_8@22 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"; dword_750AB8[dword_750CB8] = -1; v2 = 1; ++dword_750CB8; if ( *((_DWORD *)v1 + 17) != 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9813; } if ( !*((_DWORD *)v1 + 237) && !*((_DWORD *)v1 + 236) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9814; } if ( *((_BYTE *)v1 + 101) == 1 ) { *((_BYTE *)v1 + 101) = 0; } else { v4 = rand() << 15; v5 = ((unsigned int)v4 | (unsigned __int64)(unsigned int)rand()) % *((_DWORD *)v1 + 346); v6 = (int)((char *)v1 + 954); 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 ); HIDWORD(v20) = (char *)v1 + 102; LODWORD(v20) = v8; if ( !sub_630610(v20) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9810; } v2 = 1; } *((_DWORD *)v1 + 17) = 2; dword_750CB8 -= v2; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9808; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00616AE0) -------------------------------------------------------- signed int __thiscall sub_616AE0(void *this) { int v1; // edi@1 void *v2; // ebx@1 char v3; // al@1 signed int v4; // ecx@1 int v5; // eax@4 int v6; // esi@4 signed __int16 v7; // cx@6 int v8; // edi@7 unsigned __int64 v9; // qax@9 int v10; // eax@11 int v11; // eax@17 signed int v13; // [sp+14h] [bp-18h]@1 void *v14; // [sp+18h] [bp-14h]@1 signed int v15; // [sp+1Ch] [bp-10h]@1 v1 = (int)this; v14 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadDiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadDiceRoll"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = -17289; v3 = sub_611710(v1); v4 = 0; v15 = 0; v13 = (unsigned __int8)v3; if ( (signed int)(unsigned __int8)v3 > 0 ) { while ( 1 ) { *((_WORD *)v2 + 1) = 9824; v5 = sub_611720(v1, v4); v6 = v5; if ( !v5 ) goto LABEL_18; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 2848))(v5, 1) ) { v8 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 184))(v1, v6); if ( v8 ) { LODWORD(v9) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2820))(v6); if ( *(_DWORD *)(v8 + 212) <= v9 ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); if ( v10 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 16))(v10) != 1 ) goto LABEL_15; v7 = 9828; } else { v7 = 9827; } } else { v7 = 9826; } } else { v7 = 9825; } *((_WORD *)v2 + 1) = v7; LABEL_15: if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 760))(v6); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v11 + 12))(v11, v6, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadDiceRoll : Packet Too Long", 4); } LABEL_18: v4 = v15 + 1; v15 = v4; if ( v4 >= v13 ) break; v1 = (int)v14; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadDiceRoll"); return 9808; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00616CA0) -------------------------------------------------------- signed int __thiscall sub_616CA0(void *this, int a2) { int v2; // ebx@1 int v3; // edi@2 int v4; // esi@4 int (__thiscall *v5)(_DWORD); // eax@7 int v6; // eax@8 int v7; // ST04_4@9 __time32_t v8; // eax@9 __time32_t v9; // eax@9 int v10; // eax@10 int v11; // eax@11 int v12; // ecx@12 int v13; // edx@12 int v14; // edx@17 int v16; // [sp+14h] [bp-14h]@3 int v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll"; dword_750AB8[dword_750CB8++] = -1; v18 = 0; sub_611710(v2); v17 = 0; if ( *(_WORD *)(a2 + 12) > 0u ) { v3 = a2 + 16; do { if ( sub_6117F0(v2, (int)&v16, *(_DWORD *)(v3 + 2)) ) { v4 = sub_611720(v2, v16); if ( v4 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)(v3 + 2) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2848))(v4, 1) ) { v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004); if ( *(_WORD *)(v3 - 2) == 9856 ) { v6 = v5(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 28))( v6, v4, *(_WORD *)v3, 0) ) { v7 = *(_WORD *)v3; v8 = sub_418EA0( (__time32_t)byte_14D15210, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll : "); v9 = sub_43B910(v8, v7); sub_418F20(v9, (int)&unk_13359E04); } } else { v10 = v5(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(v10, *(_WORD *)v3); } v11 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 184))(v2, v4); if ( v11 ) { v12 = *(_DWORD *)(v3 + 10); v13 = *(_DWORD *)(v3 + 6); if ( v12 < 0 || v12 <= 0 && !v13 ) { v13 = 0; v12 = 0; } *(_DWORD *)(v11 + 216) = v13; *(_DWORD *)(v11 + 220) = v12; } } } } v14 = *(_WORD *)(a2 + 12); v3 += 16; ++v17; } while ( v17 < v14 ); } sub_612060((int)&dword_14D41B48); --dword_750CB8; v18 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll"); return 9808; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00616E70) -------------------------------------------------------- signed int __thiscall sub_616E70(void *this) { int v1; // ebx@1 void *v2; // edi@1 int v3; // esi@1 signed int result; // eax@2 char v5; // al@3 int v6; // ecx@3 int v7; // eax@5 int v8; // esi@5 unsigned __int64 v9; // qax@8 int v10; // eax@9 signed int v11; // ebx@11 unsigned int v12; // edi@11 signed int v13; // eax@15 signed int v14; // ebx@17 int v15; // eax@21 int v16; // esi@21 signed __int64 v17; // qax@21 unsigned int v18; // kr00_4@21 int v19; // edi@21 int v20; // esi@21 unsigned __int8 v21; // cf@21 int v22; // ebx@25 int v23; // eax@25 int v24; // eax@27 int v25; // ebx@27 int v26; // edx@27 int v27; // eax@27 int v28; // ecx@27 int v29; // eax@28 int v30; // edx@28 int v31; // eax@28 int v32; // eax@29 int v33; // esi@32 int v34; // eax@34 unsigned int v35; // [sp-4h] [bp-C4h]@1 void *v36; // [sp+18h] [bp-A8h]@1 int v37; // [sp+1Ch] [bp-A4h]@3 unsigned int v38; // [sp+20h] [bp-A0h]@3 int v39; // [sp+24h] [bp-9Ch]@11 int v40; // [sp+28h] [bp-98h]@15 int v41; // [sp+2Ch] [bp-94h]@4 int v42; // [sp+30h] [bp-90h]@3 void *v43; // [sp+34h] [bp-8Ch]@1 int v44; // [sp+38h] [bp-88h]@3 int v45; // [sp+3Ch] [bp-84h]@5 unsigned __int64 v46; // [sp+40h] [bp-80h]@11 int v47; // [sp+48h] [bp-78h]@7 unsigned __int8 v48; // [sp+4Ch] [bp-74h]@3 char v49[4]; // [sp+50h] [bp-70h]@21 int v50[23]; // [sp+54h] [bp-6Ch]@18 unsigned int v51; // [sp+B0h] [bp-10h]@1 int v52; // [sp+BCh] [bp-4h]@1 int v53; // [sp+C0h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v35 = (unsigned int)&v53 ^ __security_cookie; v1 = (int)this; v43 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Result_DiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Result_DiceRoll"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; v52 = 0; v36 = off_849C18; *(_WORD *)off_849C18 = -17288; v3 = sub_428740(v1); if ( v3 ) { *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v2 + 1) = *(_WORD *)(v3 + 4); *((_WORD *)v2 + 4) = *(_WORD *)(v1 + 102); *((_BYTE *)v2 + 10) = *(_BYTE *)(v1 + 104); *(_WORD *)((char *)v2 + 11) = 0; sub_6305A0(v1 + 102, (int)&v38); sub_630690(&unk_13266AB0, v38, (int)&v48); v5 = sub_611710(v1); v6 = 0; v44 = 0; v42 = 0; v37 = (unsigned __int8)v5; if ( (signed int)(unsigned __int8)v5 > 0 ) { v41 = (int)((char *)v2 + 17); do { v7 = sub_611720(v1, v42); v8 = v7; v45 = v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 2848))(v7, 1) ) { v47 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 184))(v1, v8); if ( v47 ) { LODWORD(v9) = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2820))(v8); if ( *(_DWORD *)(v47 + 212) <= v9 ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8); if ( v10 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 16))(v10) != 1 ) { v11 = 0; v12 = 0; v46 = 0i64; v39 = v47 + 4; v47 += 4; do { if ( *(_DWORD *)v47 ) sub_630F40(&unk_133594F0, v11, *((_DWORD *)v43 + 8), *(_DWORD *)v47); v47 += 4; ++v11; } while ( v11 < 52 ); v13 = 0; v40 = 0; v47 = v39; do { if ( *(_DWORD *)v47 ) { v14 = 0; if ( (signed int)v48 > 0 ) { while ( v50[2 * v14] != v13 ) { ++v14; if ( v14 >= v48 ) goto LABEL_22; } v15 = sub_630FA0(&unk_133594F0, v13, (unsigned __int8)v49[8 * v14], *(_DWORD *)v47); v16 = v15; v17 = (signed __int64)(*((_WORD *)v43 + 21) * (unsigned __int64)(unsigned int)v15) / -1000; v18 = v17; v13 = v40; v19 = (v18 + __PAIR__(HIDWORD(v17), v16)) >> 32; v20 = v18 + v16; v21 = __CFADD__(v20, (_DWORD)v46); LODWORD(v46) = v20 + v46; v8 = v45; HIDWORD(v46) += v19 + v21; v12 = HIDWORD(v46); } LABEL_22: if ( v14 == v48 ) { v12 = (__PAIR__(v12, (unsigned int)v46) - *(_DWORD *)v47) >> 32; v46 = __PAIR__(v12, (signed int)v46 - *(_DWORD *)v47); } } v47 += 4; ++v13; v40 = v13; } while ( v13 < 52 ); v22 = v41; *(_WORD *)(v41 - 4) = 0; *(_DWORD *)v22 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v8 + 836))(v8, v35); *(_DWORD *)(v22 + 4) = v46; *(_DWORD *)(v22 + 8) = v12; v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8); *(_WORD *)(v22 - 2) = sub_4802C0(v23); if ( (signed int)v12 > 0 || (v12 & 0x80000000u) == 0 ) { v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); v25 = *(_DWORD *)v29; v30 = *(_DWORD *)v8; v45 = v29; v31 = (*(int (__thiscall **)(int, _DWORD, unsigned int, signed int, _DWORD))(v30 + 2004))( v8, v46, v12, 1, 0); v35 = (unsigned __int16)sub_4802C0(v31); v28 = v45; } else { v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); v25 = *(_DWORD *)v24; v26 = *(_DWORD *)v8; v45 = v24; v27 = (*(int (__thiscall **)(int, int, _DWORD, signed int, _DWORD))(v26 + 2004))( v8, -(signed int)v46, (unsigned __int64)-(signed __int64)__PAIR__(v12, (unsigned int)v46) >> 32, -1, 0); v35 = (unsigned __int16)sub_4802C0(v27); v28 = v45; } (*(void (__thiscall **)(int))(v25 + 112))(v28); v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 2004))(v8); sub_43BBF0(v32); ++v44; v41 += 16; v1 = (int)v43; v2 = v36; } } } } } } ++v42; } while ( v42 < v37 ); v6 = v44; } *(_WORD *)((char *)v2 + 11) = v6; v33 = 16 * v6 + 13; if ( sub_4C81E0(&off_849C18, v33) ) { v34 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v34); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Result_DiceRoll : Packet Too Long", v33); } *(_BYTE *)(v1 + 72) = 0; --dword_750CB8; v52 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Result_DiceRoll"); result = 9808; } else { --dword_750CB8; v52 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Result_DiceRoll"); result = 9810; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 616E70: using guessed type int var_6C[23]; // 616E70: using guessed type char var_70[4]; //----- (006172E0) -------------------------------------------------------- signed int __thiscall sub_6172E0(void *this, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 signed int result; // eax@2 int v6; // eax@3 void *v7; // ecx@3 char v8; // al@3 int v9; // edi@3 signed int v10; // edx@5 int v11; // edi@5 signed int v12; // ebx@8 int v13; // edi@8 int v14; // esi@10 void *v15; // eax@10 __int16 v16; // cx@10 signed int v17; // eax@10 unsigned int v18; // edx@14 int v19; // eax@14 unsigned int v20; // edi@14 int v21; // eax@14 __int16 v22; // ax@15 int v23; // eax@18 int v24; // esi@23 int v25; // eax@25 signed int i; // esi@27 int v27; // eax@29 unsigned int v28; // [sp-4h] [bp-D0h]@1 unsigned int v29; // [sp+10h] [bp-BCh]@3 int *v30; // [sp+14h] [bp-B8h]@14 int v31; // [sp+18h] [bp-B4h]@7 int v32; // [sp+1Ch] [bp-B0h]@5 int v33; // [sp+20h] [bp-ACh]@3 void *v34; // [sp+24h] [bp-A8h]@1 void *v35; // [sp+28h] [bp-A4h]@1 int v36; // [sp+2Ch] [bp-A0h]@3 __int16 *v37; // [sp+30h] [bp-9Ch]@4 int v38; // [sp+34h] [bp-98h]@6 int v39; // [sp+38h] [bp-94h]@3 unsigned __int8 v40; // [sp+3Ch] [bp-90h]@3 char v41[4]; // [sp+40h] [bp-8Ch]@14 int v42[23]; // [sp+44h] [bp-88h]@11 __int16 v43[14]; // [sp+A0h] [bp-2Ch]@4 unsigned int v44; // [sp+BCh] [bp-10h]@1 int v45; // [sp+C8h] [bp-4h]@1 int v46; // [sp+CCh] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v28 = (unsigned int)&v46 ^ __security_cookie; v2 = (int)this; v34 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll"; dword_750AB8[dword_750CB8++] = -1; v45 = 0; v35 = off_849C18; v3 = 12; *(_WORD *)off_849C18 = -17286; v4 = sub_428740(v2); if ( v4 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v7 = v35; *((_DWORD *)v35 + 1) = v6; *((_WORD *)v7 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v7 + 2) = a2; *((_WORD *)v7 + 6) = 0; v39 = 0; sub_6305A0(v2 + 102, (int)&v29); sub_630690(&unk_13266AB0, v29, (int)&v40); v8 = sub_611710(v2); v33 = 0; v9 = (unsigned __int8)v8; v36 = (unsigned __int8)v8; if ( (signed int)(unsigned __int8)v8 > 0 ) { v37 = v43; do { v10 = v33; *v37 = 0; v11 = sub_611720(v2, v10); v32 = v11; if ( v11 ) { v38 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 184))(v2, v11); if ( v38 ) { v31 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 200))(v2, v11); if ( v31 ) { v12 = 0; v13 = v38 + 4; v38 += 4; do { if ( *(_DWORD *)v13 ) { v14 = (int)((char *)v35 + 21 * (unsigned __int16)v39 + 2); *(_DWORD *)((char *)v35 + 21 * (unsigned __int16)v39 + 14) = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v32 + 836))(v28); v15 = v34; *(_DWORD *)(v14 + 16) = v12; *(_DWORD *)(v14 + 20) = *(_DWORD *)v13; *(_WORD *)(v14 + 24) = 0; *(_BYTE *)(v14 + 26) = 0; v16 = *((_WORD *)v15 + 21); v17 = 0; *(_WORD *)(v14 + 27) = v16; *(_DWORD *)(v14 + 29) = 0; if ( (signed int)v40 > 0 ) { while ( v42[2 * v17] != v12 ) { ++v17; if ( v17 >= v40 ) goto LABEL_15; } v18 = *(_DWORD *)v13; v30 = (int *)&v41[8 * v17]; v19 = sub_630FA0(&unk_133594F0, v12, *(_BYTE *)v30, v18); v20 = v19 - ((unsigned int)(v19 * (unsigned int)*((_WORD *)v34 + 21) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6); *(_WORD *)(v14 + 24) = sub_631040(&unk_133594F0, v12, *(_BYTE *)v30); ++*v37; v21 = v31; *(_DWORD *)(v14 + 29) = v20; v13 = v38; *(_BYTE *)(v14 + 26) = 1; ++*(_DWORD *)v21; } LABEL_15: v22 = v39 + 1; v3 = 21 * (unsigned __int16)(v39++ + 1) + 12; if ( v3 > 7500 ) { *((_WORD *)v35 + 6) = v22; v39 = 0; if ( sub_4C81E0(&off_849C18, v3 + 2) ) { v23 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v23); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll : Packet Too Long", v3 + 2); } } } ++v12; v13 += 4; v38 = v13; } while ( v12 < 52 ); v2 = (int)v34; } } } ++v37; ++v33; } while ( v33 < v36 ); if ( (_WORD)v39 ) { *((_WORD *)v35 + 6) = v39; v24 = v3 + 2; if ( sub_4C81E0(&off_849C18, v24) ) { v25 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v25); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll : Packet Too Long", v24); } } v9 = v36; } for ( i = 0; i < v9; ++i ) { if ( v43[i] ) { v27 = sub_611720(v2, i); if ( v27 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v27 + 436))(v27, (unsigned __int16)v43[i]); } } sub_612060((int)&dword_14D41B48); --dword_750CB8; v45 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll"); result = 9808; } else { --dword_750CB8; v45 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll"); result = 9810; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 6172E0: using guessed type int var_88[23]; // 6172E0: using guessed type __int16 var_2C[14]; // 6172E0: using guessed type char var_8C[4]; //----- (00617700) -------------------------------------------------------- signed int __thiscall sub_617700(void *this) { int v1; // ebx@1 void *v2; // edi@1 int v3; // eax@2 int v4; // esi@2 int v5; // eax@7 signed int v7; // [sp+14h] [bp-14h]@1 signed int v8; // [sp+18h] [bp-10h]@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadResult_DiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadResult_DiceRoll"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = -17285; *((_WORD *)v2 + 2) = *(_WORD *)(v1 + 102); *((_BYTE *)v2 + 6) = *(_BYTE *)(v1 + 104); v8 = 0; v7 = (unsigned __int8)sub_611710(v1); if ( v7 > 0 ) { do { *((_WORD *)v2 + 1) = 9840; v3 = sub_611720(v1, v8); v4 = v3; if ( v3 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2848))(v3, 1) ) *((_WORD *)v2 + 1) = 9841; if ( sub_4C81E0(&off_849C18, 7) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadResult_DiceRoll : Packet Too Long", 7); } } ++v8; } while ( v8 < v7 ); } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadResult_DiceRoll"); return 9808; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00617860) -------------------------------------------------------- signed int __thiscall sub_617860(void *this, int a2) { int v2; // edi@1 int v3; // esi@1 char v4; // al@1 void *v5; // edi@1 char v6; // bl@1 int v7; // edi@2 int v8; // eax@4 int v9; // esi@4 int v10; // eax@8 int v11; // edx@14 int v12; // eax@16 int v13; // edx@17 char v15; // [sp+10h] [bp-38h]@20 int v16; // [sp+1Ch] [bp-2Ch]@1 int v17; // [sp+20h] [bp-28h]@1 int v18; // [sp+24h] [bp-24h]@1 int v19; // [sp+28h] [bp-20h]@2 int v20; // [sp+2Ch] [bp-1Ch]@3 int v21; // [sp+30h] [bp-18h]@1 int v22; // [sp+34h] [bp-14h]@1 char v23; // [sp+3Bh] [bp-Dh]@1 int v24; // [sp+44h] [bp-4h]@1 v2 = (int)this; v22 = (int)this; v16 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEmotion_DiceRoll"; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEmotion_DiceRoll"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEmotion_DiceRoll"; dword_750AB8[dword_750CB8++] = -1; v3 = (int)off_849C18; *(_WORD *)off_849C18 = -17284; v24 = 0; v18 = v3; *(_BYTE *)(v3 + 2) = 0; v4 = sub_611710(v2); v5 = 0; v6 = 0; v23 = 0; v17 = 0; v21 = 0; if ( *(_WORD *)(a2 + 12) > 0u ) { v19 = (unsigned __int8)v4; v7 = a2 + 22; do { v20 = 0; if ( v19 > 0 ) { while ( 1 ) { v8 = sub_611720(v22, v21); v9 = v8; if ( v8 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8) == *(_DWORD *)(v7 - 4) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 2848))(v9, 1) && *(_WORD *)(v7 - 8) == 9856 ) { v10 = *(_DWORD *)(v7 + 4); if ( v10 > 0 ) goto LABEL_14; if ( v10 < 0 ) break; if ( *(_DWORD *)v7 ) { LABEL_14: v11 = *(_DWORD *)(v22 + 4 * rand() % 3 + 44); goto LABEL_16; } if ( v10 < 0 ) break; } } ++v20; if ( v20 >= v19 ) goto LABEL_17; } v11 = *(_DWORD *)(v22 + 4 * rand() % 3 + 56); LABEL_16: v12 = v18 + 6 * (unsigned __int8)v6 + 2; v6 = v23 + 1; *(_WORD *)(v12 + 1) = *(_WORD *)(v9 + 4); *(_DWORD *)(v12 + 3) = v11; v23 = v6; v17 = v9; } LABEL_17: v13 = *(_WORD *)(a2 + 12); v7 += 16; ++v21; } while ( v21 < v13 ); v3 = v18; v5 = (void *)v17; } *(_BYTE *)(v3 + 2) = v6; if ( v6 ) { sub_4287B0(&v15, &off_849C18, 6 * (unsigned __int8)v6 + 3); LOBYTE(v24) = 1; if ( v5 ) sub_549B60(v5, (int)&v15, 1); LOBYTE(v24) = 0; sub_428A70(&v15); } --dword_750CB8; v24 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEmotion_DiceRoll"); return 9808; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00617A70) -------------------------------------------------------- signed int __thiscall sub_617A70(void *this) { void *v1; // esi@1 signed int result; // eax@2 int v3; // edx@3 v1 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v1 + 17) == 2 ) { v3 = *((_WORD *)v1 + 19); *((_BYTE *)v1 + 72) = 1; *((_DWORD *)v1 + 17) = 3; *((_DWORD *)v1 + 19) = dword_14D129E8 + v3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"); result = 7376; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"); result = 9810; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (00617B40) -------------------------------------------------------- char __thiscall sub_617B40(void *this) { int v1; // esi@1 signed int v2; // eax@1 int v3; // eax@2 int v4; // edi@2 void *v5; // ebx@6 __int16 v6; // ax@6 int v7; // eax@12 signed int i; // [sp+14h] [bp-1Ch]@1 int v10; // [sp+18h] [bp-18h]@0 __int16 v11; // [sp+1Ch] [bp-14h]@6 char v12; // [sp+23h] [bp-Dh]@4 int v13; // [sp+2Ch] [bp-4h]@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ExcuteLeaveGame"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_ExcuteLeaveGame"; dword_750AB8[dword_750CB8++] = -1; v13 = 0; v2 = (unsigned __int8)sub_611710(v1) - 1; for ( i = v2; i >= 0; --i ) { v3 = sub_611720(v1, v2); v4 = v3; if ( v3 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 2848))(v3, 1) && (unsigned __int8)(*(int (__thiscall **)(int, int, char *))(*(_DWORD *)v1 + 208))(v1, v4, &v12) && v12 == 1 ) { v5 = off_849C18; *(_DWORD *)off_849C18 = 639679593; v6 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 72))(v1, v4); v11 = v6; if ( v6 == 9760 ) { LOBYTE(v10) = 0; } else { if ( v6 == 9767 ) { LOBYTE(v10) = 1; (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v1 + 212))(v1, v4, 1); v6 = v11; } } *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 4) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_ExcuteLeaveGame : Packet Too Long", 4); } if ( v11 == 7312 ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v1 + 76))(v1, v4, v10); } v2 = i - 1; } --dword_750CB8; v13 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ExcuteLeaveGame"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00617CF0) -------------------------------------------------------- int __thiscall sub_617CF0(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 __int16 v4; // ax@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_PlayerUnmarking"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::go_PlayerUnmarking"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 72))(v2, a2); if ( v4 == 9760 ) { LOBYTE(a2) = 0; LABEL_5: (*(void (__thiscall **)(void *, int, int))(*(_DWORD *)v2 + 76))(v2, v3, a2); goto LABEL_6; } if ( v4 == 9767 ) { LOBYTE(a2) = 1; (*(void (__thiscall **)(void *, int, signed int))(*(_DWORD *)v2 + 212))(v2, v3, 1); goto LABEL_5; } LABEL_6: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::go_PlayerUnmarking"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00617DE0) -------------------------------------------------------- char __thiscall sub_617DE0(void *this) { int v1; // edi@1 void *v2; // ebx@1 char v3; // al@1 signed int v4; // ecx@1 int v5; // edx@1 int v6; // ebx@2 int v7; // eax@3 int v8; // esi@3 int v9; // eax@5 signed int v10; // eax@11 int v11; // eax@12 int v12; // esi@12 int v13; // eax@16 void *v15; // [sp+14h] [bp-1Ch]@1 int v16; // [sp+14h] [bp-1Ch]@11 signed int v17; // [sp+18h] [bp-18h]@1 int v18; // [sp+1Ch] [bp-14h]@1 signed int v19; // [sp+1Ch] [bp-14h]@11 signed int v20; // [sp+20h] [bp-10h]@1 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadLargeAmount"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadLargeAmount"; dword_750AB8[dword_750CB8++] = -1; v2 = off_849C18; *(_WORD *)off_849C18 = -17281; v15 = v2; *((_BYTE *)v2 + 2) = 0; v3 = sub_611710(v1); v4 = (unsigned __int8)v3; v5 = 0; v18 = 0; v20 = 0; v17 = (unsigned __int8)v3; if ( (signed int)(unsigned __int8)v3 > 0 ) { v6 = (int)((char *)v2 + 5); do { v7 = sub_611720(v1, v20); v8 = v7; if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 2848))(v7, 1) ) { v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 184))(v1, v8); if ( v9 ) { if ( *(_QWORD *)(v9 + 216) >= (unsigned __int64)*(_DWORD *)(v1 + 32) ) { ++v18; *(_WORD *)(v6 - 2) = *(_WORD *)(v8 + 4); *(_DWORD *)v6 = *(_DWORD *)(v9 + 216); v6 += 6; } } } } ++v20; } while ( v20 < v17 ); v5 = v18; v2 = v15; v4 = v17; } *((_BYTE *)v2 + 2) = v5; if ( v5 > 0 ) { v16 = 6 * (unsigned __int8)v5 + 1; v10 = 0; v19 = 0; if ( v4 > 0 ) { do { v11 = sub_611720(v1, v10); v12 = v11; if ( v11 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v11 + 2848))(v11, 1) ) { if ( sub_4C81E0(&off_849C18, v16 + 2) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 760))(v12); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v13 + 12))(v13, v12, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadLargeAmount : Packet Too Long", v16 + 2); } } v10 = v19 + 1; v19 = v10; } while ( v10 < v17 ); } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadLargeAmount"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00617FB0) -------------------------------------------------------- char __thiscall sub_617FB0(void *this) { int v1; // edi@1 char v3; // ST17_1@5 int v4; // edx@7 bool v5; // zf@7 int v6; // edx@7 int v7; // [sp-4h] [bp-24h]@3 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_DWORD *)(v1 + 28) ) { --dword_750CB8; LABEL_3: v7 = (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"; LABEL_4: sub_467660((int)&unk_D020420, v7); return 0; } v3 = sub_611710(v1); if ( v3 >= (unsigned __int8)sub_58FC80(v1) ) { --dword_750CB8; goto LABEL_3; } v4 = 232 * (unsigned __int8)sub_611710(v1); v5 = *(_DWORD *)(v1 + 28) + v4 == 0; v6 = *(_DWORD *)(v1 + 28) + v4; v7 = (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"; if ( v5 ) { --dword_750CB8; goto LABEL_4; } *(_WORD *)v6 = 0; memset((void *)(v6 + 4), 0, 0xD0u); *(_DWORD *)(v6 + 212) = 0; *(_DWORD *)(v6 + 216) = 0; *(_DWORD *)(v6 + 220) = 0; *(_DWORD *)(v6 + 224) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006180F0) -------------------------------------------------------- char __thiscall sub_6180F0(void *this, int a2) { void *v2; // esi@1 char result; // al@2 int v4; // edx@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || (v4 = *((_DWORD *)v2 + 17)) != 0 && v4 != 1 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"); result = 0; } else { *((_BYTE *)v2 + 101) = 1; *((_WORD *)v2 + 51) = *(_WORD *)a2; *((_BYTE *)v2 + 104) = *(_BYTE *)(a2 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"); result = 1; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006181D0) -------------------------------------------------------- char __thiscall sub_6181D0(void *this, int a2, unsigned __int16 a3) { void *v3; // esi@1 unsigned int v4; // edi@1 int v5; // ebx@2 int v6; // eax@3 char result; // al@6 int v8; // ST00_4@7 int v9; // eax@9 unsigned __int16 v10; // cx@9 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"; dword_750AB8[dword_750CB8++] = -1; v4 = 0; if ( a2 ) { v8 = a2; a2 = 0; if ( sub_6305A0(v8, (int)&a2) ) { v9 = a2; v10 = a3; *((_DWORD *)v3 + 346) += a3 - *((_WORD *)v3 + a2 + 476); *((_WORD *)v3 + v9 + 476) = v10; LABEL_10: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); result = 0; } } else { *((_DWORD *)v3 + 346) = 0; v5 = (int)((char *)v3 + 952); while ( 1 ) { v6 = sub_626BC0((int)&unk_13266960, v4); if ( !v6 ) break; *(_WORD *)v5 = *(_WORD *)v6; *((_DWORD *)v3 + 346) += *(_DWORD *)v6; ++v4; v5 += 2; if ( (signed int)v4 >= 216 ) goto LABEL_10; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618350) -------------------------------------------------------- int __thiscall sub_618350(void *this, signed int a2) { int v2; // esi@1 int result; // eax@2 int v4; // eax@5 int v5; // esi@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v2 + 28) ) { if ( a2 < (unsigned __int8)sub_611710(v2) ) { v4 = *(_DWORD *)(v2 + 28) + 232 * a2; --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618460) -------------------------------------------------------- int __thiscall sub_618460(void *this, int a2) { int v2; // edi@1 bool v3; // zf@1 int result; // eax@2 char v5; // al@4 int v6; // esi@6 int v7; // [sp+14h] [bp-10h]@4 int v8; // [sp+20h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 28) == 0; v8 = 0; if ( v3 || !a2 ) { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); result = 0; } else { v5 = sub_611750(v2, (int)&v7, a2); v8 = -1; if ( v5 ) { v6 = *(_DWORD *)(v2 + 28) + 232 * v7; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618570) -------------------------------------------------------- int __thiscall sub_618570(void *this, __int16 a2) { int v2; // edi@1 bool v3; // zf@1 int result; // eax@2 char v5; // al@4 int v6; // esi@6 int v7; // [sp+14h] [bp-10h]@4 int v8; // [sp+20h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 28) == 0; v8 = 0; if ( v3 || a2 == -1 ) { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); result = 0; } else { v5 = sub_6117A0(v2, (int)&v7, a2); v8 = -1; if ( v5 ) { v6 = *(_DWORD *)(v2 + 28) + 232 * v7; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618690) -------------------------------------------------------- int __thiscall sub_618690(void *this, int a2) { int v2; // edi@1 bool v3; // zf@1 int result; // eax@2 char v5; // al@4 int v6; // esi@6 int v7; // [sp+14h] [bp-10h]@4 int v8; // [sp+20h] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 28) == 0; v8 = 0; if ( v3 || a2 == -1 ) { --dword_750CB8; v8 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); result = 0; } else { v5 = sub_6117F0(v2, (int)&v7, a2); v8 = -1; if ( v5 ) { v6 = *(_DWORD *)(v2 + 28) + 232 * v7; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); result = v6; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006187A0) -------------------------------------------------------- int __thiscall sub_6187A0(void *this, signed int a2) { int v2; // esi@1 int result; // eax@2 int v4; // ecx@5 int v5; // esi@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)(v2 + 28) ) { if ( a2 < (unsigned __int8)sub_611710(v2) ) { v4 = *(_DWORD *)(v2 + 28); --dword_750CB8; v5 = 232 * a2 + v4 + 224; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); result = v5; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); result = 0; } } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006188C0) -------------------------------------------------------- int __thiscall sub_6188C0(void *this, int a2) { int v2; // esi@1 bool v3; // zf@1 int result; // eax@2 char v5; // al@4 int v6; // ecx@6 int v7; // esi@6 int v8; // [sp+10h] [bp-10h]@4 int v9; // [sp+1Ch] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 28) == 0; v9 = 0; if ( v3 || !a2 ) { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); result = 0; } else { v5 = sub_611750(v2, (int)&v8, a2); v9 = -1; if ( v5 ) { v6 = *(_DWORD *)(v2 + 28); --dword_750CB8; v7 = 232 * v8 + v6 + 224; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006189E0) -------------------------------------------------------- int __thiscall sub_6189E0(void *this, __int16 a2) { int v2; // esi@1 bool v3; // zf@1 int result; // eax@2 char v5; // al@4 int v6; // edx@6 int v7; // esi@6 int v8; // [sp+10h] [bp-10h]@4 int v9; // [sp+1Ch] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 28) == 0; v9 = 0; if ( v3 || a2 == -1 ) { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); result = 0; } else { v5 = sub_6117A0(v2, (int)&v8, a2); v9 = -1; if ( v5 ) { v6 = *(_DWORD *)(v2 + 28); --dword_750CB8; v7 = 232 * v8 + v6 + 224; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618B10) -------------------------------------------------------- int __thiscall sub_618B10(void *this, int a2) { int v2; // esi@1 bool v3; // zf@1 int result; // eax@2 char v5; // al@4 int v6; // ecx@6 int v7; // esi@6 int v8; // [sp+10h] [bp-10h]@4 int v9; // [sp+1Ch] [bp-4h]@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)(v2 + 28) == 0; v9 = 0; if ( v3 || a2 == -1 ) { --dword_750CB8; v9 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); result = 0; } else { v5 = sub_6117F0(v2, (int)&v8, a2); v9 = -1; if ( v5 ) { v6 = *(_DWORD *)(v2 + 28); --dword_750CB8; v7 = 232 * v8 + v6 + 224; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); result = 0; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618C30) -------------------------------------------------------- char __thiscall sub_618C30(void *this, int a2, int a3) { void *v3; // edi@1 int v4; // eax@5 int v6; // [sp-4h] [bp-24h]@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 0"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 0"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || !a3 ) { --dword_750CB8; LABEL_9: v6 = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 0"; goto LABEL_10; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2848))(a2, 1) != 1 ) { --dword_750CB8; goto LABEL_9; } v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 184))(v3, a2); v6 = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 0"; if ( v4 ) { *(_BYTE *)a3 = *(_BYTE *)v4; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 0"); return 1; } --dword_750CB8; LABEL_10: sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618D40) -------------------------------------------------------- char __thiscall sub_618D40(void *this, int a2, char a3) { void *v3; // edi@1 int v4; // eax@5 int v6; // [sp-4h] [bp-24h]@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 1"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 1"; dword_750AB8[dword_750CB8++] = -1; if ( !a2 || !a3 ) { --dword_750CB8; LABEL_9: v6 = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 1"; goto LABEL_10; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 2848))(a2, 1) != 1 ) { --dword_750CB8; goto LABEL_9; } v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 184))(v3, a2); v6 = (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 1"; if ( v4 ) { *(_BYTE *)v4 = a3; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo 1"); return 1; } --dword_750CB8; LABEL_10: sub_467660((int)&unk_D020420, v6); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00618E50) -------------------------------------------------------- signed int __thiscall sub_618E50(void *this, int a2) { int v2; // esi@1 signed int v3; // ebx@1 int v4; // edi@1 signed int result; // eax@2 int v6; // eax@7 int v7; // eax@9 signed int v8; // ebx@10 int v9; // edi@10 unsigned int v10; // ecx@13 bool v11; // cf@13 int v12; // ebx@17 char v13; // al@17 signed int v14; // ebx@17 int v15; // ecx@19 int v16; // eax@21 void *v17; // eax@32 int v18; // eax@33 int v19; // edi@33 int v20; // eax@37 int v21; // [sp+10h] [bp-28h]@12 unsigned int v22; // [sp+14h] [bp-24h]@12 int v23; // [sp+18h] [bp-20h]@1 int v24; // [sp+1Ch] [bp-1Ch]@9 int v25; // [sp+20h] [bp-18h]@5 unsigned int *v26; // [sp+24h] [bp-14h]@10 char v27; // [sp+2Bh] [bp-Dh]@12 int v28; // [sp+34h] [bp-4h]@1 v2 = (int)this; v23 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"; v3 = -1; dword_750AB8[dword_750CB8++] = -1; v4 = a2; v28 = 0; if ( !a2 ) { --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"); return 9765; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 2848))(a2, 1) ) { --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"); return 9763; } if ( !sub_611750(v2, (int)&v25, a2) ) goto LABEL_6; v6 = *(_DWORD *)(v2 + 68); if ( v6 == 3 || v6 == 2 ) { --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"); result = 9767; } else { v7 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 184))(v2, a2); v24 = v7; if ( v7 ) { v8 = 0; v9 = v2 + 120; v26 = (unsigned int *)(v7 + 4); while ( 1 ) { v22 = *v26; v21 = v8; if ( sub_6164E0(v7, (int)&v21, (int)&v27) ) { v10 = v22; v11 = *(_DWORD *)(v9 - 8) < v22; *(_DWORD *)(v9 - 8) -= v22; *(_DWORD *)(v9 - 4) -= v11; *(_WORD *)v9 -= v27 == 1; v11 = *(_DWORD *)(v2 + 944) < v10; *(_DWORD *)(v2 + 944) -= v10; *(_DWORD *)(v2 + 948) -= v11; } ++v26; ++v8; v9 += 16; if ( v8 >= 52 ) break; v7 = v24; } v4 = a2; v3 = -1; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 4))(v2, v4) ) { LABEL_6: --dword_750CB8; v28 = v3; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"); return 9764; } v12 = *(_DWORD *)(v2 + 28) + 232 * v25; v13 = sub_611710(v2); memmove((void *)v12, (const void *)(v12 + 232), 232 * ((unsigned __int8)v13 - v25)); v14 = 0; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2856))(v4, 0); if ( !sub_611710(v2) ) { *(_DWORD *)(v2 + 76) = 0; *(_BYTE *)(v2 + 72) = 0; } v15 = *(_DWORD *)(v2 + 948) | *(_DWORD *)(v2 + 944); if ( !*(_QWORD *)(v2 + 944) ) { if ( *(_DWORD *)(v2 + 68) == 1 ) { v16 = v2 + 136; while ( *(_WORD *)(v16 - 16) <= 0u ) { if ( *(_WORD *)v16 > 0u ) { ++v15; break; } if ( *(_WORD *)(v16 + 16) > 0u ) { v15 += 2; break; } if ( *(_WORD *)(v16 + 32) > 0u ) { v15 += 3; break; } v15 += 4; v16 += 64; if ( v15 >= 52 ) break; } if ( v15 == 52 ) { v17 = off_849C18; *(_WORD *)off_849C18 = -17279; *(_WORD *)((char *)v17 + 3) = 0; *((_BYTE *)v17 + 2) = 0; *(_DWORD *)((char *)v17 + 5) = 0; if ( sub_611710(v2) ) { do { v18 = sub_611720(v2, v14); v19 = v18; if ( v18 && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v18 + 2848))(v18, 1) ) { if ( sub_4C81E0(&off_849C18, 9) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 760))(v19); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v20 + 12))(v20, v19, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out : Packet Too Long", 9); } } ++v14; } while ( v14 < (unsigned __int8)sub_611710(v2) ); } } } *(_DWORD *)(v2 + 68) = 0; } sub_612060((int)&dword_14D41B48); --dword_750CB8; v28 = -1; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out"); result = 9760; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006191E0) -------------------------------------------------------- signed int __thiscall sub_6191E0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // ebx@1 int v5; // edi@2 int v7; // eax@5 int v8; // eax@12 int v9; // ebx@14 unsigned __int64 v10; // qax@14 int v11; // ebx@16 char v12; // al@18 int v13; // edx@20 int v14; // eax@20 unsigned __int8 v15; // cf@20 int v16; // eax@20 int v17; // [sp-4h] [bp-24h]@18 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; if ( a2 && (v5 = a3) != 0 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 2848))(a2, 1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9780; } v7 = *((_DWORD *)v3 + 17); if ( v7 != 1 && v7 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9782; } if ( !*(_DWORD *)(v5 + 4) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9783; } if ( *(_DWORD *)v5 < 0 || *(_DWORD *)v5 >= 52 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9784; } v8 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 184))(v3, v4); a3 = v8; if ( !v8 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9785; } v9 = *(_DWORD *)(v5 + 4) + *(_DWORD *)(v8 + 212); LODWORD(v10) = (*(int (**)(void))(*(_DWORD *)a2 + 2820))(); if ( (unsigned int)v9 > v10 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9786; } v11 = a3; if ( !sub_630F40( &unk_133594F0, *(_DWORD *)v5, *((_DWORD *)v3 + 8), *(_DWORD *)(v5 + 4) + *(_DWORD *)(a3 + 4 * *(_DWORD *)v5 + 4)) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9787; } v12 = sub_6163E0(v11, v5, (int)((char *)&a2 + 3)); v17 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"; if ( v12 ) { v13 = *(_DWORD *)(v5 + 4); v14 = (int)((char *)v3 + 16 * (*(_DWORD *)v5 + 7)); v15 = __CFADD__(v13, *(_DWORD *)v14); *(_DWORD *)v14 += v13; *(_DWORD *)(v14 + 4) += v15; *((_WORD *)v3 + 8 * *(_DWORD *)v5 + 60) += BYTE3(a2) == 1; v16 = *(_DWORD *)(v5 + 4); v15 = __CFADD__(v16, *((_DWORD *)v3 + 236)); *((_DWORD *)v3 + 236) += v16; *((_DWORD *)v3 + 237) += v15; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"); return 9776; } --dword_750CB8; } else { --dword_750CB8; v17 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting"; } sub_467660((int)&unk_D020420, v17); return 9781; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00619520) -------------------------------------------------------- signed int __thiscall sub_619520(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // edi@2 int v6; // eax@5 int v7; // eax@12 char v8; // al@16 unsigned int v9; // ecx@18 int v10; // eax@18 bool v11; // cf@18 unsigned int v12; // eax@18 int v13; // [sp-4h] [bp-24h]@16 v3 = this; sub_4675D0((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); dword_7508B8[dword_750CB8] = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"; dword_750AB8[dword_750CB8++] = -1; if ( a2 && (v4 = a3) != 0 ) { if ( !(unsigned __int8)(*(int (__stdcall **)(signed int))(*(_DWORD *)a2 + 2848))(1) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9796; } v6 = *((_DWORD *)v3 + 17); if ( v6 != 1 && v6 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9799; } if ( !*(_DWORD *)(v4 + 4) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9800; } if ( *(_DWORD *)v4 < 0 || *(_DWORD *)v4 >= 52 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9803; } v7 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v3 + 184))(v3, a2); if ( !v7 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9801; } if ( *(_DWORD *)(v7 + 4 * *(_DWORD *)v4 + 4) < *(_DWORD *)(v4 + 4) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9802; } v8 = sub_6164E0(v7, v4, (int)((char *)&a2 + 3)); v13 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"; if ( v8 ) { v9 = *(_DWORD *)(v4 + 4); v10 = (int)((char *)v3 + 16 * (*(_DWORD *)v4 + 7)); v11 = *(_DWORD *)v10 < v9; *(_DWORD *)v10 -= v9; *(_DWORD *)(v10 + 4) -= v11; *((_WORD *)v3 + 8 * *(_DWORD *)v4 + 60) -= BYTE3(a2) == 1; v12 = *(_DWORD *)(v4 + 4); v11 = *((_DWORD *)v3 + 236) < v12; *((_DWORD *)v3 + 236) -= v12; *((_DWORD *)v3 + 237) -= v11; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"); return 9792; } --dword_750CB8; } else { --dword_750CB8; v13 = (int)"CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel"; } sub_467660((int)&unk_D020420, v13); return 9795; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006197E0) -------------------------------------------------------- int __thiscall sub_6197E0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 int v8; // eax@10 int v9; // ebx@10 signed __int16 v10; // ax@11 int v11; // eax@15 int v12; // eax@16 __int16 v13; // ax@25 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 638631013; if ( !*(_DWORD *)(v4 + 122) ) { v6 = 9745; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 ) { v6 = 9746; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2844))(v4, 1) ) { v6 = 9755; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 52) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); } goto LABEL_29; } v8 = sub_612360((int)&dword_14D41B48, *(_WORD *)(a2 + 2)); v9 = v8; if ( !v8 ) { v10 = 9747; LABEL_12: *((_WORD *)v5 + 1) = v10; goto LABEL_13; } v12 = sub_428740(v8); if ( !v12 ) { *((_WORD *)v5 + 1) = 9747; goto LABEL_13; } if ( (unsigned int)sub_402710(v4, v12) > 0xF4240 ) { *((_WORD *)v5 + 1) = 9748; goto LABEL_13; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 16))(v9) ) { *((_WORD *)v5 + 1) = 9749; LABEL_13: if ( sub_4C81E0(&off_849C18, 52) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); } goto LABEL_29; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 24))(v9, *(_BYTE *)(a2 + 4)) ) { v10 = 9750; goto LABEL_12; } sub_612A70(v4, *(_BYTE *)(a2 + 5)); if ( (unsigned __int16)(*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 36))(v9, v4) == 9744 ) { v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 60))(v9, v4); if ( v13 == 9744 || v13 == 9752 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 64))(v9, v4) == 9744 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 68))(v9, v4); } } LABEL_29: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00619A60) -------------------------------------------------------- int __thiscall sub_619A60(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 int v8; // eax@11 int v9; // eax@11 __int16 v10; // bx@12 int v11; // eax@18 int v13; // [sp+14h] [bp-14h]@0 int v14; // [sp+18h] [bp-10h]@11 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 639679593; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 9761; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { v6 = 9762; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( !sub_4C81E0(&off_849C18, 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_22; } LABEL_5: v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); goto LABEL_22; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2848))(v4, 1) || (v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4), v9 = sub_611FC0((int)&dword_14D41B48, v8, 1), (v14 = v9) == 0) ) { *((_WORD *)v5 + 1) = 9763; if ( !sub_4C81E0(&off_849C18, 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_22; } goto LABEL_5; } v10 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v9 + 72))(v9, v4); if ( v10 == 9760 ) { LOBYTE(v13) = 0; } else { if ( v10 == 9767 ) { LOBYTE(v13) = 1; (*(void (__stdcall **)(void *, signed int))(*(_DWORD *)v14 + 212))(v4, 1); } } *(_WORD *)v5 = -17303; *((_WORD *)v5 + 1) = v10; if ( sub_4C81E0(&off_849C18, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); } if ( v10 == 9760 || v10 == 9767 ) (*(void (__stdcall **)(void *, int))(*(_DWORD *)v14 + 76))(v4, v13); LABEL_22: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00619C90) -------------------------------------------------------- int __thiscall sub_619C90(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 void *v8; // edi@8 int v9; // eax@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 647019630; *((_BYTE *)v5 + 4) = 0; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 9873; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2848))(v4, 1) ) { v6 = 9875; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 5) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ : Packet Too Long", 5); } goto LABEL_11; } v8 = off_849C18; *(_WORD *)off_849C18 = -17300; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); if ( sub_4C81E0(&off_849C18, 8) ) { v9 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v9); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ : Packet Too Long", 8); } LABEL_11: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00619E10) -------------------------------------------------------- int __thiscall sub_619E10(void *this, int a2, int a3, int a4) { void *v4; // edi@1 void *v5; // esi@1 int v6; // ebx@1 signed __int16 v7; // cx@2 int v8; // eax@9 int v9; // esi@10 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 648068208; v6 = (int)((char *)v5 + 4); *((_BYTE *)v5 + 4) = 0; if ( *(_DWORD *)((char *)v4 + 122) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2848))(v4, 1) ) { if ( !sub_612070((int)&dword_14D41B48, (int)((char *)v5 + 5), (int)((char *)v5 + 4)) ) { *((_WORD *)v5 + 1) = 9891; if ( !sub_4C81E0(&off_849C18, 5) ) goto LABEL_4; v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_13: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v4, &off_849C18); goto LABEL_14; } v9 = 24 * *(_BYTE *)v6 + 5; if ( !sub_4C81E0(&off_849C18, 24 * *(_BYTE *)v6 + 5) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ : Packet Too Long", v9); goto LABEL_14; } LABEL_12: v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_13; } v7 = 9890; } else { v7 = 9889; } *((_WORD *)v5 + 1) = v7; if ( sub_4C81E0(&off_849C18, 5) ) goto LABEL_12; LABEL_4: sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ : Packet Too Long", 5); LABEL_14: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00619F90) -------------------------------------------------------- int __thiscall sub_619F90(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@5 int v7; // eax@10 int v8; // ebx@10 int v9; // ecx@14 void (__thiscall *v10)(_DWORD, _DWORD); // eax@14 __int16 v11; // ax@15 int v12; // eax@19 __int16 v14; // [sp+14h] [bp-10h]@17 int v15; // [sp+2Ch] [bp+8h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 640728178; *((_WORD *)v5 + 2) = *(_WORD *)(a2 + 10); v15 = a2 + 2; if ( !*(_DWORD *)((char *)v4 + 122) ) { *((_WORD *)v5 + 1) = 9777; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *((_WORD *)v5 + 1) = 9778; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2848))(v4, 1) ) { *((_WORD *)v5 + 1) = 9779; LABEL_3: if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); } goto LABEL_23; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = sub_611FC0((int)&dword_14D41B48, v7, 1); if ( !v8 ) { *((_WORD *)v5 + 1) = 9779; LABEL_12: if ( !sub_4C81E0(&off_849C18, 6) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); goto LABEL_23; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 12); LABEL_22: v10(v9, v4); goto LABEL_23; } v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 84))(v8, v4, v15); if ( v11 != 9776 ) { *((_WORD *)v5 + 1) = v11; goto LABEL_12; } v14 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 88))(v8, v4, v15); *((_WORD *)v5 + 1) = v14; if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); } if ( v14 == 9776 ) { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v8 + 80))(v8, v15, 0); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 92); v9 = v8; goto LABEL_22; } LABEL_23: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061A1F0) -------------------------------------------------------- int __thiscall sub_61A1F0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 int v6; // eax@5 int v7; // eax@10 int v8; // ebx@10 int v9; // ecx@14 void (__thiscall *v10)(_DWORD, _DWORD); // eax@14 __int16 v11; // ax@15 int v12; // eax@19 __int16 v14; // [sp+14h] [bp-10h]@17 int v15; // [sp+2Ch] [bp+8h]@1 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 641776757; *((_WORD *)v5 + 2) = *(_WORD *)(a2 + 10); v15 = a2 + 2; if ( !*(_DWORD *)((char *)v4 + 122) ) { *((_WORD *)v5 + 1) = 9793; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) == 1 ) { *((_WORD *)v5 + 1) = 9794; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2848))(v4, 1) ) { *((_WORD *)v5 + 1) = 9796; LABEL_3: if ( sub_4C81E0(&off_849C18, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v6 + 12))(v6, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); } goto LABEL_23; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = sub_611FC0((int)&dword_14D41B48, v7, 1); if ( !v8 ) { *((_WORD *)v5 + 1) = 9796; LABEL_12: if ( !sub_4C81E0(&off_849C18, 6) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); goto LABEL_23; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 12); LABEL_22: v10(v9, v4); goto LABEL_23; } v11 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 96))(v8, v4, v15); if ( v11 != 9792 ) { *((_WORD *)v5 + 1) = v11; goto LABEL_12; } v14 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v8 + 100))(v8, v4, v15); *((_WORD *)v5 + 1) = v14; if ( sub_4C81E0(&off_849C18, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); } if ( v14 == 9792 ) { (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)v8 + 80))(v8, v15, 1); v10 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 104); v9 = v8; goto LABEL_22; } LABEL_23: --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061A450) -------------------------------------------------------- int __stdcall sub_61A450(int a1, int a2) { int v2; // edi@1 int v3; // eax@3 int v4; // esi@3 int v5; // eax@6 int v6; // esi@6 int v8; // [sp-4h] [bp-24h]@2 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1 + 2; if ( *(_WORD *)(a1 + 2) == 9856 ) { v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 8)); v4 = v3; if ( v3 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 10) ) { if ( *(_DWORD *)(v4 + 122) ) { v5 = sub_612360((int)&dword_14D41B48, *(_WORD *)(a1 + 8)); v6 = v5; if ( v5 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 12))(v5) == 1 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 132))(v6, v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 140))(v6, *(_DWORD *)(a1 + 4)); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 144))(v6); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 148))(v6, v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 152))(v6); } } } } } --dword_750CB8; v8 = (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"; } else { --dword_750CB8; v8 = (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK"; } return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061A590) -------------------------------------------------------- int __stdcall sub_61A590(int a1, int a2) { int v2; // esi@1 int v3; // edi@1 void *v4; // ebx@5 int v5; // ecx@10 int v6; // eax@10 int v7; // esi@13 int v8; // eax@15 signed int v10; // [sp+28h] [bp+8h]@9 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = a1; v3 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 4)); if ( v3 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)(a1 + 6) && *(_DWORD *)(v3 + 122) ) { v4 = off_849C18; *(_WORD *)off_849C18 = -17298; *((_WORD *)v4 + 1) = *(_WORD *)(a1 + 2); *((_BYTE *)v4 + 4) = 0; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2848))(v3, 1) ) { if ( *((_WORD *)v4 + 1) == 9872 ) { v10 = 0; if ( *(_BYTE *)(v2 + 10) ) { v5 = (int)((char *)v4 + 13); v6 = v2 + 19; do { ++v10; *(_DWORD *)(v5 - 8) = *(_DWORD *)(v6 - 8); *(_DWORD *)(v5 - 4) = *(_DWORD *)(v6 - 4); *(_DWORD *)v5 = *(_DWORD *)v6; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v5 + 12) = *(_DWORD *)(v6 + 12); v6 += 24; v5 += 24; } while ( v10 < *(_BYTE *)(v2 + 10) ); } *((_BYTE *)v4 + 4) = *(_BYTE *)(v2 + 10); } v7 = 24 * *((_BYTE *)v4 + 4) + 5; if ( !sub_4C81E0(&off_849C18, 24 * *((_BYTE *)v4 + 4) + 5) ) { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK : Packet Too Long", v7); goto LABEL_16; } } else { *((_WORD *)v4 + 1) = 9890; if ( !sub_4C81E0(&off_849C18, 5) ) { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK : Packet Too Long", 5); goto LABEL_16; } } v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 12))(v8, v3, &off_849C18); } LABEL_16: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061A780) -------------------------------------------------------- int __thiscall sub_61A780(int this) { int v1; // esi@1 v1 = this; sub_6114D0(this); *(_DWORD *)v1 = off_701EBC; *(_DWORD *)(v1 + 36) = 0; return v1; } // 701EBC: using guessed type int (__stdcall *off_701EBC[3])(int); //----- (0061A7A0) -------------------------------------------------------- void __thiscall sub_61A7A0(int this) { *(_DWORD *)this = off_701EBC; sub_6114F0(this); } // 701EBC: using guessed type int (__stdcall *off_701EBC[3])(int); //----- (0061A7B0) -------------------------------------------------------- int __thiscall sub_61A7B0(int this) { int v1; // esi@1 v1 = this; sub_6114D0(this); *(_DWORD *)v1 = off_701FBC; _eh_vector_constructor_iterator_( (void *)(v1 + 24), 0x50u, 2, (int)sub_61A780, (void (__thiscall *)(void *))sub_61A7A0); return v1; } // 701FBC: using guessed type int (__stdcall *off_701FBC[3])(int); //----- (0061A820) -------------------------------------------------------- void __thiscall sub_61A820(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_701FBC; _LN21((void *)(this + 24), 0x50u, 2, (void (__thiscall *)(void *))sub_61A7A0); sub_6114F0(v1); } // 701FBC: using guessed type int (__stdcall *off_701FBC[3])(int); //----- (0061A890) -------------------------------------------------------- char __thiscall sub_61A890(int this, int a2) { int v2; // edi@1 char result; // al@2 signed int v4; // esi@5 int v5; // edi@5 v2 = this; if ( sub_611520(this, a2) && sub_6115A0(v2, 2u) && (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 52))(v2, 2) ) { v4 = 0; v5 = v2 + 24; while ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 8))(v5, a2) ) { ++v4; v5 += 80; if ( v4 >= 2 ) return 1; } result = 0; } else { result = 0; } return result; } //----- (0061A900) -------------------------------------------------------- char *__cdecl sub_61A900() { byte_14D41D6C = 0; return &byte_14D41D6C; } // 14D41D6C: using guessed type char byte_14D41D6C; //----- (0061A910) -------------------------------------------------------- char *__thiscall sub_61A910(void *this) { return (char *)this + 161562; } //----- (0061A920) -------------------------------------------------------- int __cdecl sub_61A920(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 15); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (0061A940) -------------------------------------------------------- int __cdecl sub_61A940(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 15); i = *(_DWORD *)i ) result = i; return result; } //----- (0061A960) -------------------------------------------------------- void *__thiscall sub_61A960(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 15) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 15) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 15); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 15); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (0061A9C0) -------------------------------------------------------- void *__thiscall sub_61A9C0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 7, 6) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 7, 7, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0061AAC0) -------------------------------------------------------- void *__thiscall sub_61AAC0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 27, 12) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 27, 27, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0061AB60) -------------------------------------------------------- void *__thiscall sub_61AB60(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020BC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020BC: using guessed type int (__thiscall *off_7020BC)(void *, char); //----- (0061AB90) -------------------------------------------------------- void *__thiscall sub_61AB90(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020C4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020C4: using guessed type int (__thiscall *off_7020C4)(void *, char); //----- (0061ABC0) -------------------------------------------------------- void *__thiscall sub_61ABC0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020CC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020CC: using guessed type int (__thiscall *off_7020CC)(void *, char); //----- (0061ABF0) -------------------------------------------------------- void *__thiscall sub_61ABF0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020D4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020D4: using guessed type int (__thiscall *off_7020D4)(void *, char); //----- (0061AC20) -------------------------------------------------------- void *__thiscall sub_61AC20(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020DC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020DC: using guessed type int (__thiscall *off_7020DC)(void *, char); //----- (0061AC50) -------------------------------------------------------- void *__thiscall sub_61AC50(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020E4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020E4: using guessed type int (__thiscall *off_7020E4)(void *, char); //----- (0061AC80) -------------------------------------------------------- void *__thiscall sub_61AC80(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020EC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020EC: using guessed type int (__thiscall *off_7020EC)(void *, char); //----- (0061ACB0) -------------------------------------------------------- void *__thiscall sub_61ACB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7020F4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7020F4: using guessed type int (__thiscall *off_7020F4)(void *, char); //----- (0061ACE0) -------------------------------------------------------- void *__thiscall sub_61ACE0(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 15) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 15) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 15) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 15) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 15); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 15) ) goto LABEL_11; return result; } //----- (0061AD40) -------------------------------------------------------- int __cdecl sub_61AD40(int a1, int a2, int a3, int a4) { int v4; // esi@1 int i; // eax@1 int v6; // ecx@2 int v7; // edx@3 int result; // eax@4 v4 = a2; for ( i = (a2 - 1) / 2; a3 < v4; i = (i - 1) / 2 ) { v6 = a1 + 24 * i; if ( *(_DWORD *)(a1 + 24 * i + 20) <= *(_DWORD *)(a4 + 20) ) break; v7 = a1 + 24 * v4; *(_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); v4 = i; *(_DWORD *)(v7 + 20) = *(_DWORD *)(v6 + 20); } result = a1 + 24 * v4; *(_DWORD *)result = *(_DWORD *)a4; *(_DWORD *)(result + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a4 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a4 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a4 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(a4 + 20); return result; } //----- (0061ADE0) -------------------------------------------------------- int __cdecl sub_61ADE0(int a1, int a2, int a3) { int v3; // ecx@2 int result; // eax@2 int v5; // esi@3 if ( a1 == a2 ) { result = a3; } else { v3 = a2 + 8; result = a3; do { v5 = *(_DWORD *)(v3 - 32); v3 -= 24; result -= 24; *(_DWORD *)result = v5; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 - 4); *(_DWORD *)(result + 8) = *(_DWORD *)v3; *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 20) = *(_DWORD *)(v3 + 12); } while ( v3 - 8 != a1 ); } return result; } //----- (0061AE30) -------------------------------------------------------- int __thiscall sub_61AE30(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 int v8; // eax@10 int v9; // ebx@10 signed __int16 v10; // ax@11 int v11; // eax@15 int v12; // eax@16 bool v13; // zf@24 void (__thiscall *v14)(_DWORD, _DWORD); // eax@24 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -17207; *((_WORD *)v5 + 2) = 10432; if ( !*(_DWORD *)(v4 + 122) ) { v6 = 10434; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 58688) + 16))(v4 + 58688) == 1 ) { v6 = 10435; goto LABEL_3; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2844))(v4, 2) ) { v6 = 10433; LABEL_3: *((_WORD *)v5 + 2) = v6; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6); } goto LABEL_27; } v8 = sub_612360((int)&dword_14D41B48, *(_WORD *)(a2 + 2)); v9 = v8; if ( !v8 ) { v10 = 10436; LABEL_12: *((_WORD *)v5 + 2) = v10; goto LABEL_13; } v12 = sub_428740(v8); if ( v12 ) { if ( (unsigned int)sub_402710(v4, v12) <= 0xF4240 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 16))(v9) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 24))(v9, *(_BYTE *)(a2 + 4)) ) { v13 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v9, v4) == 0; v14 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2856); if ( !v13 ) { v14(v4, 2); sub_612A70(v4, *(_BYTE *)(a2 + 5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v9 + 36))(v9, v4); goto LABEL_27; } v14(v4, 0); *((_WORD *)v5 + 2) = 10433; goto LABEL_13; } v10 = 10439; goto LABEL_12; } *((_WORD *)v5 + 2) = 10438; } else { *((_WORD *)v5 + 2) = 10437; } } else { *((_WORD *)v5 + 2) = 10436; } LABEL_13: if ( sub_4C81E0(&off_849C18, 6) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v11 + 12))(v11, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6); } LABEL_27: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061B090) -------------------------------------------------------- int __thiscall sub_61B090(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // edi@1 signed __int16 v6; // cx@2 int v7; // eax@5 int v8; // eax@11 int v9; // ebx@11 int v10; // eax@13 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_DWORD *)off_849C18 = 684244171; if ( !*(_DWORD *)((char *)v4 + 122) ) { v6 = 10441; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*((_DWORD *)v4 + 14672) + 16))((char *)v4 + 58688) != 1 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2848))(v4, 2) ) { *((_WORD *)v5 + 1) = 10443; if ( !sub_4C81E0(&off_849C18, 4) ) { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SLOTMACHINE_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_18; } goto LABEL_5; } v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v9 = sub_611FC0((int)&dword_14D41B48, v8, 2); if ( v9 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2856))(v4, 0); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 4))(v9, v4); *(_DWORD *)v5 = 684244171; if ( sub_4C81E0(&off_849C18, 4) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_17; } } else { *((_WORD *)v5 + 1) = 10443; if ( sub_4C81E0(&off_849C18, 4) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_17: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 12))(v10, v4, &off_849C18); goto LABEL_18; } } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_SLOTMACHINE_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_18; } v6 = 10442; LABEL_3: *((_WORD *)v5 + 1) = v6; if ( sub_4C81E0(&off_849C18, 4) ) { LABEL_5: v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v4, &off_849C18); goto LABEL_18; } sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ : Packet Too Long", 4); LABEL_18: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061B2A0) -------------------------------------------------------- int __thiscall sub_61B2A0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 int v6; // edi@1 int v7; // eax@1 int v8; // eax@2 unsigned __int16 v9; // ax@4 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v6 = v5; v7 = sub_611FC0((int)&dword_14D41B48, v5, 2); if ( v7 && (v8 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v7 + 40))(v7, v6)) != 0 ) { v9 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v8 + 220))(v8, v4, a2 + 2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 47, 205, v9); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 47, 205, 10446); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061B3B0) -------------------------------------------------------- int __thiscall sub_61B3B0(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // eax@1 int v8; // edi@1 int v9; // eax@1 int v10; // eax@2 void *v11; // eax@4 int v12; // eax@6 int v14; // [sp+Ch] [bp-1Ch]@4 int v15; // [sp+10h] [bp-18h]@4 __int16 v16; // [sp+14h] [bp-14h]@4 char v17; // [sp+16h] [bp-12h]@4 unsigned int v18; // [sp+18h] [bp-10h]@1 int v19; // [sp+24h] [bp-4h]@1 int v20; // [sp+28h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v4 = (unsigned int)&v20 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 836); v19 = 0; v7 = v6(v5, v4); v8 = v7; v9 = sub_611FC0((int)&dword_14D41B48, v7, 2); if ( v9 && (v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 40))(v9, v8)) != 0 ) { LOWORD(v14) = (*(int (__thiscall **)(int, void *, int *))(*(_DWORD *)v10 + 228))(v10, v5, &v14); v11 = off_849C18; *(_WORD *)off_849C18 = -17201; *(_DWORD *)((char *)v11 + 2) = v14; *(_DWORD *)((char *)v11 + 6) = v15; *((_WORD *)v11 + 5) = v16; *((_BYTE *)v11 + 12) = v17; if ( sub_4C81E0(&off_849C18, 13) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 760))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v5, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ : Packet Too Long", 13); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 207, 10446); } --dword_750CB8; v19 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061B520) -------------------------------------------------------- int __thiscall sub_61B520(void *this, int a2, int a3, int a4) { unsigned int v4; // ST08_4@1 void *v5; // esi@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // eax@1 int v8; // edi@1 int v9; // eax@1 int v10; // eax@2 void *v11; // eax@4 int v12; // eax@6 __int64 v14; // [sp+Ch] [bp-1Ch]@4 __int16 v15; // [sp+14h] [bp-14h]@4 unsigned int v16; // [sp+18h] [bp-10h]@1 int v17; // [sp+24h] [bp-4h]@1 int v18; // [sp+28h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v4 = (unsigned int)&v18 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"; dword_750AB8[dword_750CB8++] = -1; v6 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 836); v17 = 0; v7 = v6(v5, v4); v8 = v7; v9 = sub_611FC0((int)&dword_14D41B48, v7, 2); if ( v9 && (v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 40))(v9, v8)) != 0 ) { v14 = 0i64; v15 = 0; v14 = (unsigned __int16)(*(int (__thiscall **)(int, void *, __int64 *))(*(_DWORD *)v10 + 236))(v10, v5, &v14); v11 = off_849C18; *(_WORD *)off_849C18 = -17199; *(_QWORD *)((char *)v11 + 2) = v14; *((_WORD *)v11 + 5) = v15; if ( sub_4C81E0(&off_849C18, 12) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 760))(v5); (*(void (__thiscall **)(int, void *, void **))(*(_DWORD *)v12 + 12))(v12, v5, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ : Packet Too Long", 12); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 209, 10446); } --dword_750CB8; v17 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061B690) -------------------------------------------------------- int __thiscall sub_61B690(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // ebx@1 int v7; // eax@1 int v8; // edi@1 int v9; // eax@1 int v10; // eax@2 int v11; // edi@5 int v12; // eax@7 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -17190; v6 = (int)((char *)v5 + 2); v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v8 = v7; v9 = sub_611FC0((int)&dword_14D41B48, v7, 2); if ( v9 && (v10 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 40))(v9, v8)) != 0 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v10 + 240))(v10, v6); else *(_BYTE *)v6 = 0; v11 = 24 * *(_BYTE *)v6 + 3; if ( sub_4C81E0(&off_849C18, 24 * *(_BYTE *)v6 + 3) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ : Packet Too Long", v11); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061B7C0) -------------------------------------------------------- int __thiscall sub_61B7C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 void *v5; // eax@1 int v6; // ebx@1 int v7; // eax@1 int v8; // edi@1 int v9; // eax@1 int v10; // eax@2 int v11; // edi@3 int v12; // eax@5 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -17188; v6 = (int)((char *)v5 + 2); v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v8 = v7; v9 = sub_611FC0((int)&dword_14D41B48, v7, 2); if ( v9 ) { v10 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 40))(v9, v8); if ( v10 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v10 + 244))(v10, v6); v11 = 24 * *(_BYTE *)v6 + 3; if ( sub_4C81E0(&off_849C18, 24 * *(_BYTE *)v6 + 3) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v12 + 12))(v12, v4, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ : Packet Too Long", v11); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061B8F0) -------------------------------------------------------- int __thiscall sub_61B8F0(void *this, int a2) { void *v2; // ebx@1 signed int v3; // esi@1 int v4; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_FindSubGambleObject"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_FindSubGambleObject"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v4 = (int)((char *)v2 + 24); while ( !sub_6116B0(v4, a2) ) { ++v3; v4 += 80; if ( v3 >= 2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_FindSubGambleObject"); return 0; } } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_FindSubGambleObject"); return (int)((char *)v2 + 80 * v3 + 24); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061B9E0) -------------------------------------------------------- char __thiscall sub_61B9E0(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 char result; // al@2 __int16 v6; // dx@3 int v7; // [sp+0h] [bp-1Ch]@0 v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::sms_PlayerReady"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::sms_PlayerReady"; dword_750AB8[dword_750CB8++] = -1; v4 = (*(int (__stdcall **)(int))(*(_DWORD *)a2 + 836))(v7); if ( sub_6116B0(v3, v4) ) { v6 = *(_WORD *)(v3 + 28); *(_DWORD *)(v3 + 32) = 0; *(_DWORD *)(v3 + 48) = 0; *(_DWORD *)(v3 + 40) = dword_14D129E8; *(_WORD *)a3 = v6; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::sms_PlayerReady"); result = 1; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::sms_PlayerReady"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0061BAD0) -------------------------------------------------------- char __thiscall sub_61BAD0(void *this, int a2) { int v2; // ebx@1 signed int v3; // esi@1 int v4; // edi@1 int v6; // eax@5 int v7; // esi@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Enter_Player"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_Enter_Player"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v4 = v2 + 24; while ( sub_611710(v4) ) { ++v3; v4 += 80; if ( v3 >= 2 ) goto LABEL_4; } v6 = *(_DWORD *)(v2 + 80 * v3 + 24); v7 = v2 + 80 * v3 + 24; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int))v6)(v7, a2) ) { LABEL_4: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Enter_Player"); return 0; } if ( !sub_611600(v2, a2) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v7 + 4))(v7, a2); goto LABEL_4; } --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Enter_Player"); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061BBF0) -------------------------------------------------------- char __thiscall sub_61BBF0(void *this, int a2) { int v2; // edi@1 int v3; // ecx@3 signed int v4; // esi@3 int v5; // eax@4 __int16 v6; // bx@5 char result; // al@8 int v8; // [sp-4h] [bp-28h]@2 int v9; // [sp+14h] [bp-10h]@3 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Out_Player"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_Out_Player"; dword_750AB8[dword_750CB8++] = -1; if ( sub_611DF0(v2, a2) ) { v3 = v2 + 24; v4 = 0; v9 = v2 + 24; while ( 1 ) { v5 = sub_611720(v3, 0); if ( v5 ) { v6 = sub_4802C0(v5); if ( v6 == sub_4802C0(a2) ) break; } ++v4; v3 = v9 + 80; v9 += 80; if ( v4 >= 2 ) { v8 = (int)"SlotMachine::SlotMachineCluster::go_Out_Player"; goto LABEL_8; } } (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)(v2 + 80 * v4 + 24) + 4))(v2 + 80 * v4 + 24, a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Out_Player"); result = 1; } else { v8 = (int)"SlotMachine::SlotMachineCluster::go_Out_Player"; LABEL_8: --dword_750CB8; sub_467660((int)&unk_D020420, v8); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061BD20) -------------------------------------------------------- int __thiscall sub_61BD20(void *this) { void *v1; // esi@1 int v2; // esi@1 signed int v3; // edi@1 v1 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Routine"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_Routine"; dword_750AB8[dword_750CB8++] = -1; v2 = (int)((char *)v1 + 24); v3 = 2; do { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 32))(v2); v2 += 80; --v3; } while ( v3 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_Routine"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061BDD0) -------------------------------------------------------- int __thiscall sub_61BDD0(void *this, int a2) { void *v2; // esi@1 int v3; // esi@1 signed int v4; // edi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_PlayerUnmarking"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_PlayerUnmarking"; dword_750AB8[dword_750CB8++] = -1; (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 4))(v2, a2); v3 = (int)((char *)v2 + 24); v4 = 2; do { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 216))(v3, a2); v3 += 80; --v4; } while ( v4 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_PlayerUnmarking"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061BEA0) -------------------------------------------------------- int __thiscall sub_61BEA0(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::go_PlayerUnmarking"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::go_PlayerUnmarking"; dword_750AB8[dword_750CB8++] = -1; v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2); if ( sub_6116B0(v2, v3) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 4))(v2, a2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::go_PlayerUnmarking"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061BF60) -------------------------------------------------------- signed int __thiscall sub_61BF60(void *this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@2 unsigned int v5; // esi@3 int v6; // ebx@3 unsigned int v7; // edx@3 void *v8; // [sp+14h] [bp-10h]@1 v3 = this; v8 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_Start"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SMS_Start"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 8) ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_Start"); result = 10448; } else { v5 = ((*(_BYTE *)(a3 + 3) & 7) + (*(_BYTE *)(a3 + 2) & 7) + (*(_BYTE *)(a3 + 1) & 7) + (*(_BYTE *)a3 & 7) + (((unsigned int)*(_BYTE *)(a3 + 3) >> 3) & 7) + (((unsigned int)*(_BYTE *)(a3 + 2) >> 3) & 7) + (((unsigned int)*(_BYTE *)(a3 + 1) >> 3) & 7) + (((unsigned int)*(_BYTE *)a3 >> 3) & 7)) * *((_WORD *)v8 + 14); v6 = (*(int (**)(void))(*(_DWORD *)a2 + 2820))(); if ( __PAIR__(v7, v6) >= (signed int)v5 ) { *((_DWORD *)v8 + 13) = *(_DWORD *)a3; *((_DWORD *)v8 + 11) = dword_14D129E8; *((_DWORD *)v8 + 8) = 1; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_Start"); result = 10447; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_Start"); result = 10449; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0061C100) -------------------------------------------------------- signed __int16 __thiscall sub_61C100(void *this, int a2, int a3, int a4) { void *v4; // esi@1 signed __int16 result; // ax@2 __int16 v6; // ax@3 int (__cdecl *v7)(_DWORD); // eax@5 int v8; // eax@5 signed __int16 v9; // si@5 int (__thiscall *v10)(_DWORD); // eax@6 int v11; // eax@6 unsigned int v12; // [sp-10h] [bp-2020h]@1 char v13; // [sp+0h] [bp-2010h]@5 int v14; // [sp+2000h] [bp-10h]@1 int v15; // [sp+200Ch] [bp-4h]@1 int v16; // [sp+2010h] [bp+0h]@1 v12 = (unsigned int)&v16 ^ __security_cookie; v4 = this; v14 = (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_StopButton"; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_StopButton"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_StopButton"; dword_750AB8[dword_750CB8++] = -1; v15 = 0; if ( *((_DWORD *)v4 + 8) == 2 ) { *((_DWORD *)v4 + 8) = 2; v6 = *(_WORD *)(a3 + 8); if ( v6 == 10456 || v6 == 10496 ) { memmove(&v13, off_849C18, 0x2000u); v10 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v15) = 1; v11 = v10(a2); (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v11 + 28))(v11, a2, *(_WORD *)(a3 + 6), 0); memmove(off_849C18, &v13, 0x2000u); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_StopButton"); result = 10447; } else { memmove(&v13, off_849C18, 0x2000u); v7 = *(int (__cdecl **)(_DWORD))(*(_DWORD *)a2 + 2004); LOBYTE(v15) = 2; v8 = v7(v12); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(a3 + 6)); v9 = *(_WORD *)(a3 + 8); memmove(off_849C18, &v13, 0x2000u); --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_StopButton"); result = v9; } } else { --dword_750CB8; v15 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_StopButton"); result = 10455; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061C2E0) -------------------------------------------------------- signed int __thiscall sub_61C2E0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop2"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop2"; dword_750AB8[dword_750CB8++] = -1; *((_DWORD *)v2 + 8) = 0; --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop2"); return 10452; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061C350) -------------------------------------------------------- signed int __thiscall sub_61C350(void *this, int a2, int a3) { void *v3; // esi@1 signed int result; // eax@2 int v5; // edi@3 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop3"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop3"; dword_750AB8[dword_750CB8++] = -1; if ( *((_DWORD *)v3 + 8) == 2 ) { v5 = *(_DWORD *)((char *)v3 + 67); *((_DWORD *)v3 + 8) = 0; *(_DWORD *)a3 = v5; *(_DWORD *)(a3 + 4) = *(_DWORD *)((char *)v3 + 71); *(_WORD *)(a3 + 8) = *(_WORD *)((char *)v3 + 75); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop3"); result = 10452; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SlotMachineScreen::SMS_WheelStop3"); result = 10455; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061C430) -------------------------------------------------------- int __thiscall sub_61C430(void *this) { char *v1; // esi@1 int result; // eax@2 int i; // ebx@2 int v4; // edi@3 int v5; // eax@3 double v6; // st7@3 unsigned int v7; // ecx@3 char v8; // ST1B_1@4 signed int v9; // [sp+14h] [bp-8h]@1 v1 = (char *)this + 16; v9 = 9; do { result = *((_DWORD *)v1 + 1) - *(_DWORD *)v1; for ( i = 0; i < *((_DWORD *)v1 + 1) - *(_DWORD *)v1; ++i ) { v4 = *((_DWORD *)v1 + 1) - *(_DWORD *)v1; v5 = rand(); v6 = (double)v5 * (double)(unsigned int)v4 / 32767.0; result = HIWORD(v5) | 0xC00; v7 = (signed __int64)v6; if ( v7 < *((_DWORD *)v1 + 1) - *(_DWORD *)v1 ) { v8 = *(_BYTE *)(*(_DWORD *)v1 + v7); *(_BYTE *)(*(_DWORD *)v1 + v7) = *(_BYTE *)(*(_DWORD *)v1 + i); result = *(_DWORD *)v1; *(_BYTE *)(i + *(_DWORD *)v1) = v8; } } v1 += 16; --v9; } while ( v9 ); return result; } //----- (0061C4E0) -------------------------------------------------------- signed int __thiscall sub_61C4E0(void *this, const char *a2) { void *v2; // edi@1 int v3; // esi@1 signed int v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // edi@2 int v8; // eax@3 signed int result; // eax@12 signed int v10; // esi@14 char v11[4]; // [sp+10h] [bp-30h]@1 int v12; // [sp+14h] [bp-2Ch]@1 int v13; // [sp+18h] [bp-28h]@1 int v14; // [sp+1Ch] [bp-24h]@1 int v15; // [sp+20h] [bp-20h]@1 int v16; // [sp+24h] [bp-1Ch]@1 int v17; // [sp+28h] [bp-18h]@1 int v18; // [sp+2Ch] [bp-14h]@1 unsigned int v19; // [sp+30h] [bp-10h]@1 int v20; // [sp+3Ch] [bp-4h]@12 int v21; // [sp+40h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_NPCData"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreenManager::smsm_NPCData"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; strncpy(v11, a2, 0x20u); v4 = (signed int)((unsigned __int64)(954437177i64 * (*((_DWORD *)v2 + 61) - *((_DWORD *)v2 + 60))) >> 32) >> 3; v5 = 0; v6 = v4 + ((unsigned int)v4 >> 31); if ( v6 ) { v7 = *((_DWORD *)v2 + 60); while ( 1 ) { v8 = v7 + 36 * v3; if ( *(_DWORD *)v11 == *(_DWORD *)(v7 + 36 * v3) ) { if ( v12 == *(_DWORD *)(v8 + 4) && v13 == *(_DWORD *)(v8 + 8) && v14 == *(_DWORD *)(v8 + 12) && v15 == *(_DWORD *)(v8 + 16) && v16 == *(_DWORD *)(v8 + 20) && v17 == *(_DWORD *)(v8 + 24) && v18 == *(_DWORD *)(v8 + 28) ) break; } ++v5; v3 = (unsigned __int16)v5; if ( (unsigned __int16)v5 >= (unsigned int)v6 ) goto LABEL_12; } v10 = *(_DWORD *)(v7 + 36 * (unsigned __int16)v5 + 32); --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_NPCData"); result = v10; } else { LABEL_12: --dword_750CB8; v20 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_NPCData"); result = 3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061C660) -------------------------------------------------------- __int16 __thiscall sub_61C660(void *this, int a2) { void *v2; // edi@1 unsigned int v3; // esi@1 int v4; // eax@3 __int16 result; // ax@7 int v6; // eax@9 __int16 v7; // si@11 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"; dword_750AB8[dword_750CB8++] = -1; v3 = 0; if ( *(_DWORD *)(*((_DWORD *)v2 + 77) + 40) <= 0 ) { LABEL_7: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"); result = 0; } else { while ( 1 ) { v4 = v3 < *(_DWORD *)(*((_DWORD *)v2 + 77) + 40) ? sub_626BC0((int)((char *)v2 + 256), v3) : (char *)v2 + 320; if ( *(_DWORD *)v4 == a2 ) break; ++v3; if ( (signed int)v3 >= *(_DWORD *)(*((_DWORD *)v2 + 77) + 40) ) goto LABEL_7; } if ( v3 < *(_DWORD *)(*((_DWORD *)v2 + 77) + 40) ) v6 = sub_626BC0((int)((char *)v2 + 256), v3); else v6 = (int)((char *)v2 + 320); v7 = *(_WORD *)(v6 + 4); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"); result = v7; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061C790) -------------------------------------------------------- int __thiscall sub_61C790(void *this, int a2) { int v2; // esi@1 unsigned int v3; // ebx@1 int v4; // edi@4 int v6; // [sp-4h] [bp-2Ch]@2 int v7; // [sp+14h] [bp-14h]@1 void *v8; // [sp+18h] [bp-10h]@1 int v9; // [sp+30h] [bp+8h]@3 v8 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"; dword_750AB8[dword_750CB8++] = -1; v2 = a2; v3 = 0; *(_BYTE *)a2 = 0; v7 = dword_14D41FBC; if ( dword_14D41FBC ) { v9 = 0; do { v4 = *((_DWORD *)v8 + 1); *(_WORD *)(v2 + 6 * *(_BYTE *)v2 + 1) = sub_61C660(&unk_14D41E50, v9++); *(_DWORD *)(v2 + 6 * (*(_BYTE *)v2)++ + 3) = (unsigned int)(*(_DWORD *)(v4 + v3) * (unsigned int)*(_WORD *)(v7 + 10) * (unsigned __int64)(unsigned int)&unk_10624DD3 >> 32) >> 6; v3 += 20; } while ( v3 < 0x3C ); --dword_750CB8; v6 = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"; } else { --dword_750CB8; v6 = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"; } return sub_467660((int)&unk_D020420, v6); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D41FBC: using guessed type int dword_14D41FBC; //----- (0061C8A0) -------------------------------------------------------- int __thiscall sub_61C8A0(void *this, int a2) { void *v2; // edi@1 char *v3; // esi@1 int v4; // ST04_4@1 int v5; // esi@1 int v6; // eax@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_SendJackPotPriceTo"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_SendJackPotPriceTo"; dword_750AB8[dword_750CB8++] = -1; v3 = (char *)off_849C18 + 2; v4 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = -17192; sub_61C790(v2, v4); v5 = 6 * (unsigned __int8)*v3 + 3; if ( sub_4C81E0(&off_849C18, v5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 760))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, a2, &off_849C18); } else { sub_639100( &unk_86DDD8, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_SendJackPotPriceTo : Packet Too Long", v5); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_SendJackPotPriceTo"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061C9A0) -------------------------------------------------------- int __thiscall sub_61C9A0(void *this, int a2, unsigned int a3) { void *v3; // esi@1 int v4; // edi@1 unsigned int v5; // esi@2 signed int v6; // edx@2 unsigned int v7; // ebx@2 int v8; // ecx@3 int v9; // eax@5 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake"; dword_750AB8[dword_750CB8++] = -1; v4 = a2; *(_BYTE *)a2 = 0; if ( a3 < (*((_DWORD *)v3 + 2) - *((_DWORD *)v3 + 1)) / 20 ) { v5 = *((_DWORD *)v3 + 1) + 20 * a3; v6 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(v5 + 8) - *(_DWORD *)(v5 + 4))) >> 32) >> 2; v7 = 0; if ( v6 + ((unsigned int)v6 >> 31) ) { v8 = a2 + 9; do { if ( *(_BYTE *)a2 >= 0x32u ) break; v9 = *(_DWORD *)(v5 + 4) + -9 - a2 + v8; ++v7; *(_DWORD *)(v8 - 8) = *(_DWORD *)v9; *(_DWORD *)(v8 - 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)v8 = *(_DWORD *)(v9 + 8); *(_DWORD *)(v8 + 4) = *(_DWORD *)(v9 + 12); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v9 + 16); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v9 + 20); v8 += 24; } while ( v7 < (*(_DWORD *)(v5 + 8) - *(_DWORD *)(v5 + 4)) / 24 ); v4 = a2; } *(_BYTE *)v4 = v7; } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061CAE0) -------------------------------------------------------- int __thiscall sub_61CAE0(void *this, unsigned int a2, int a3) { void *v3; // esi@1 unsigned int v4; // ecx@2 unsigned __int64 v5; // qax@2 int v6; // esi@2 int result; // eax@2 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= (*((_DWORD *)v3 + 2) - *((_DWORD *)v3 + 1)) / 20 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"); result = 0; } else { v4 = *((_DWORD *)v3 + 1) + 20 * a2; v5 = *(_DWORD *)v4 * (unsigned int)*(_WORD *)(a3 + 10) * (unsigned __int64)(unsigned int)&unk_10624DD3; *(_DWORD *)v4 = 0; --dword_750CB8; v6 = HIDWORD(v5) >> 6; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"); result = v6; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061CBE0) -------------------------------------------------------- int __thiscall sub_61CBE0(void *this, unsigned int a2, int a3) { void *v3; // esi@1 v3 = this; sub_4675D0( (int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine, DWRD bet)"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine, DWRD bet)"; dword_750AB8[dword_750CB8++] = -1; if ( a2 < (*((_DWORD *)v3 + 2) - *((_DWORD *)v3 + 1)) / 20 ) *(_DWORD *)(*((_DWORD *)v3 + 1) + 20 * a2) += a3; --dword_750CB8; return sub_467660( (int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine, DWRD bet)"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061CC70) -------------------------------------------------------- int __thiscall sub_61CC70(void *this, unsigned int a2) { void *v2; // esi@1 int v3; // esi@2 int result; // eax@2 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= (*((_DWORD *)v2 + 2) - *((_DWORD *)v2 + 1)) / 20 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"); result = 0; } else { v3 = *(_DWORD *)(*((_DWORD *)v2 + 1) + 20 * a2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"); result = v3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061CD50) -------------------------------------------------------- int __stdcall sub_61CD50(int a1, int a2) { int v2; // esi@1 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 2)); if ( v2 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 768))(v2) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 4) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2896))(v2, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061CE30) -------------------------------------------------------- int __thiscall sub_61CE30(void *this, int a2, int a3) { void *v3; // edi@1 void *v4; // esi@1 int (__thiscall *v5)(_DWORD); // eax@1 int v6; // eax@1 int v7; // eax@1 char v9; // [sp+0h] [bp-201Ch]@1 int v10; // [sp+2000h] [bp-1Ch]@1 char v11; // [sp+2004h] [bp-18h]@1 int v12; // [sp+2018h] [bp-4h]@1 v3 = this; v10 = (int)"GameDBSession::so_ply_IBurstJackPot"; sub_4675D0((int)&unk_D020420, (int)"GameDBSession::so_ply_IBurstJackPot"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::so_ply_IBurstJackPot"; dword_750AB8[dword_750CB8++] = -1; v4 = off_849C18; v12 = 0; memmove(&v9, off_849C18, 0x2000u); *(_WORD *)v4 = -17187; v5 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1388); LOBYTE(v12) = 1; v6 = v5(v3); *(_DWORD *)((char *)v4 + 2) = *(_DWORD *)v6; *(_DWORD *)((char *)v4 + 6) = *(_DWORD *)(v6 + 4); *(_DWORD *)((char *)v4 + 10) = *(_DWORD *)(v6 + 8); *(_DWORD *)((char *)v4 + 14) = *(_DWORD *)(v6 + 12); v7 = *(_DWORD *)(v6 + 16); *(_DWORD *)((char *)v4 + 22) = a2; *(_DWORD *)((char *)v4 + 18) = v7; *(_DWORD *)((char *)v4 + 26) = a3; sub_4287B0(&v11, &off_849C18, 30); LOBYTE(v12) = 2; sub_549B60(v3, (int)&v11, 1); LOBYTE(v12) = 1; sub_428A70(&v11); memmove(off_849C18, &v9, 0x2000u); --dword_750CB8; v12 = -1; return sub_467660((int)&unk_D020420, (int)"GameDBSession::so_ply_IBurstJackPot"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061CF80) -------------------------------------------------------- int __userpurge sub_61CF80(int a1, int a2, int a3, int a4, int a5) { int v5; // ST18_4@1 int v6; // ST14_4@1 int v7; // ST10_4@1 unsigned int v8; // ST0C_4@1 int v9; // esi@1 void *v10; // edi@1 int v11; // ebx@1 int (__thiscall *v12)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // eax@1 int v13; // eax@1 int v14; // eax@1 int v15; // edi@1 int v16; // eax@3 int v17; // edx@4 int v18; // eax@4 int v19; // eax@4 char v21; // [sp+0h] [bp-2014h]@1 int v22; // [sp+2000h] [bp-14h]@1 int v23; // [sp+2004h] [bp-10h]@4 int v24; // [sp+2010h] [bp-4h]@1 int v25; // [sp+2014h] [bp+0h]@1 v5 = a2; v6 = a4; v7 = a3; v8 = (unsigned int)&v25 ^ __security_cookie; v9 = a1; v22 = (int)"ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; dword_750AB8[dword_750CB8++] = -1; v10 = off_849C18; v24 = 0; memmove(&v21, off_849C18, 0x2000u); *(_WORD *)v10 = -17203; v11 = (int)((char *)v10 + 2); v12 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 836); LOBYTE(v24) = 1; v13 = v12(v9, 2, v8, v7, v6); v14 = sub_611FC0((int)&dword_14D41B48, v13, v5); v15 = v14; if ( v14 ) { v17 = *(_DWORD *)v9; v23 = *(_DWORD *)v14; v18 = (*(int (__thiscall **)(int))(v17 + 836))(v9); v19 = (*(int (__thiscall **)(int, int))(v23 + 40))(v15, v18); if ( v19 ) { *(_WORD *)v11 = (*(int (__thiscall **)(int, int, int, int))(*(_DWORD *)v19 + 224))(v19, v9, a5, v11); if ( sub_4C81E0(&off_849C18, 4) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 760))(v9); goto LABEL_9; } } else { *(_WORD *)v11 = 10446; if ( sub_4C81E0(&off_849C18, 4) ) goto LABEL_3; } } else { *(_WORD *)v11 = 10446; if ( sub_4C81E0(&off_849C18, 4) ) { LABEL_3: v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 760))(v9); LABEL_9: (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v9, &off_849C18); goto LABEL_10; } } sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult : Packet Too Long", 4); LABEL_10: memmove(off_849C18, &v21, 0x2000u); --dword_750CB8; v24 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"); } // 61CF80: could not find valid save-restore pair for ebx // 61CF80: could not find valid save-restore pair for edi // 61CF80: could not find valid save-restore pair for esi // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061D150) -------------------------------------------------------- int __stdcall sub_61D150(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x33333333 || (result = operator new(5 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0061D1B0) -------------------------------------------------------- int __stdcall sub_61D1B0(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x55555555 || (result = operator new(3 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0061D210) -------------------------------------------------------- int __thiscall sub_61D210(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 15) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (0061D270) -------------------------------------------------------- int __thiscall sub_61D270(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 15) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (0061D2D0) -------------------------------------------------------- int __thiscall sub_61D2D0(int this, int a2) { int v2; // esi@1 unsigned int v3; // edi@1 int v4; // ebx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 8); v3 = 0; if ( (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12 ) { v4 = *(_DWORD *)v2; while ( *(_DWORD *)v4 != a2 ) { ++v3; v4 += 12; if ( v3 >= (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 12 ) goto LABEL_5; } result = *(_DWORD *)v2 + 12 * v3; } else { LABEL_5: result = 0; } return result; } //----- (0061D340) -------------------------------------------------------- int __thiscall sub_61D340(int this, int a2, int a3) { int v3; // esi@1 unsigned int v4; // edi@1 int v5; // ebx@2 int result; // eax@6 v3 = *(_DWORD *)(this + 8); v4 = 0; if ( (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 40 ) { v5 = *(_DWORD *)v3; while ( *(_DWORD *)v5 != a2 || *(_DWORD *)(v5 + 4) != a3 ) { ++v4; v5 += 40; if ( v4 >= (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 40 ) goto LABEL_6; } result = *(_DWORD *)v3 + 40 * v4; } else { LABEL_6: result = 0; } return result; } //----- (0061D3B0) -------------------------------------------------------- int __cdecl sub_61D3B0(int a1, int a2, int a3) { int v3; // ecx@2 int result; // eax@2 int v5; // esi@3 if ( a1 == a2 ) { result = a3; } else { v3 = a1 + 8; result = a3; do { *(_DWORD *)result = *(_DWORD *)(v3 - 8); *(_DWORD *)(result + 4) = *(_DWORD *)(v3 - 4); *(_DWORD *)(result + 8) = *(_DWORD *)v3; *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 8); v5 = *(_DWORD *)(v3 + 12); v3 += 24; *(_DWORD *)(result + 20) = v5; result += 24; } while ( v3 - 8 != a2 ); } return result; } //----- (0061D400) -------------------------------------------------------- char __thiscall sub_61D400(int this, unsigned int a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@5 v2 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( a2 ) { if ( a2 > (unsigned int)&unk_AAAAAAA ) sub_65178B((int)"vector too long"); v4 = sub_43EF20(a2); *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; *(_DWORD *)(v2 + 8) = v4 + 24 * a2; result = 1; } else { result = 0; } return result; } //----- (0061D460) -------------------------------------------------------- int __cdecl sub_61D460(int a1, int a2, int a3, int a4) { int v4; // edx@1 int v5; // eax@1 bool i; // zf@1 int v7; // ecx@4 int v8; // edx@4 int v9; // ecx@6 int v10; // eax@6 v4 = a2; v5 = 2 * a2 + 2; for ( i = v5 == a3; v5 < a3; i = v5 == a3 ) { if ( *(_DWORD *)(a1 + 24 * v5 + 20) > *(_DWORD *)(a1 + 24 * v5 - 4) ) --v5; v7 = a1 + 24 * v5; v8 = a1 + 24 * v4; *(_DWORD *)v8 = *(_DWORD *)(a1 + 24 * 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); *(_DWORD *)(v8 + 20) = *(_DWORD *)(v7 + 20); v4 = v5; v5 = 2 * v5 + 2; } if ( i ) { v9 = a1 + 24 * v4; v10 = a1 + 24 * a3 - 24; *(_DWORD *)v9 = *(_DWORD *)(a1 + 24 * a3 - 24); *(_DWORD *)(v9 + 4) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v10 + 8); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v10 + 12); *(_DWORD *)(v9 + 16) = *(_DWORD *)(v10 + 16); *(_DWORD *)(v9 + 20) = *(_DWORD *)(v10 + 20); v4 = a3 - 1; } return sub_61AD40(a1, v4, a2, a4); } //----- (0061D520) -------------------------------------------------------- bool __thiscall sub_61D520(int this, int a2) { int v2; // esi@1 int v3; // eax@3 int v4; // eax@4 int v5; // eax@5 bool result; // al@6 v2 = this; if ( a2 && sub_611520(this, a2) && (v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1804))(a2)) != 0 && (v4 = *(_DWORD *)v3) != 0 && (v5 = sub_61C4E0(&unk_14D41E50, (const char *)(v4 + 2)), *(_DWORD *)(v2 + 24) = v5, *(_WORD *)(v2 + 28) = sub_61C660(&unk_14D41E50, v5), sub_6115A0(v2, 1u)) ) result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 52))(v2, 1) != 0; else result = 0; return result; } //----- (0061D5A0) -------------------------------------------------------- signed int __thiscall sub_61D5A0(void *this, int a2) { void *v2; // edi@1 int v3; // ebx@1 signed int v5; // esi@3 void *v6; // edi@3 int v7; // eax@8 int v8; // [sp+28h] [bp+8h]@3 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_SendGameInfo"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_SendGameInfo"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; if ( !a2 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_SendGameInfo"); return 10433; } v5 = 0; v8 = (int)((char *)off_849C18 + 2); *(_WORD *)off_849C18 = -17207; v6 = (char *)v2 + 24; do { if ( sub_61B9E0(v6, v3, v8) ) break; ++v5; v6 = (char *)v6 + 80; } while ( v5 < 2 ); if ( v5 == 2 ) { *(_WORD *)(v8 + 2) = 10457; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 760))(v3); LABEL_12: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v3, &off_849C18); goto LABEL_13; } } else { *(_WORD *)(v8 + 2) = 10432; if ( sub_4C81E0(&off_849C18, 6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 760))(v3); goto LABEL_12; } } sub_639100(&unk_86DDD8, (int)"CGambleDiceTaiSaiObject::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6); LABEL_13: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_SendGameInfo"); return 10432; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061D720) -------------------------------------------------------- char __thiscall sub_61D720(void *this, int a2) { int v2; // esi@1 int v3; // eax@2 char v4; // al@4 char v5; // bl@4 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::go_Enter_Player"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::go_Enter_Player"; dword_750AB8[dword_750CB8++] = -1; if ( !*(_DWORD *)(v2 + 36) ) { v3 = sub_61D2D0((int)&off_86D234, 26); if ( v3 ) *(_DWORD *)(v2 + 36) = 10 * *(_DWORD *)(v3 + 8); } *(_DWORD *)(v2 + 44) = dword_14D129E8; v4 = sub_611600(v2, a2); --dword_750CB8; v5 = v4; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::go_Enter_Player"); return v5; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86D234: using guessed type int (*off_86D234)(); // 14D129E8: using guessed type int dword_14D129E8; //----- (0061D800) -------------------------------------------------------- int __thiscall sub_61D800(void *this) { int v1; // esi@1 int v2; // edi@3 int v3; // eax@3 int v5; // [sp-4h] [bp-24h]@2 v1 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::go_Routine"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::go_Routine"; dword_750AB8[dword_750CB8++] = -1; if ( sub_611710(v1) ) { v2 = sub_611720(v1, 0); v3 = dword_14D129E8; if ( (unsigned int)(dword_14D129E8 - *(_DWORD *)(v1 + 44)) > *(_DWORD *)(v1 + 36) && v2 && ((*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 772))(v2, 47, 210), v3 = dword_14D129E8, dword_14D129E8 - *(_DWORD *)(v1 + 44) > (unsigned int)(*(_DWORD *)(v1 + 36) + 600)) ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 1532))(v2, 0); } else { if ( *(_DWORD *)(v1 + 40) < (unsigned int)v3 ) { sub_61C8A0(&unk_14D41F98, v2); *(_DWORD *)(v1 + 40) = dword_14D129E8 + 100; } } v5 = (int)"SlotMachine::SlotMachineScreen::go_Routine"; } else { v5 = (int)"SlotMachine::SlotMachineScreen::go_Routine"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v5); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D129E8: using guessed type int dword_14D129E8; //----- (0061D910) -------------------------------------------------------- int __thiscall sub_61D910(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_JackpotRank"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_JackpotRank"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a2 = 0; sub_61C9A0(&unk_14D41F98, a2, *((_DWORD *)v2 + 6)); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_JackpotRank"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061D9C0) -------------------------------------------------------- void __stdcall sub_61D9C0(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 15); v1 = i ) { sub_61D9C0(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (0061DA00) -------------------------------------------------------- int __thiscall sub_61DA00(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 15) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_61A960(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 15) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 15) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 15) ) { v9 = v6; } else { v9 = sub_61A940(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 15) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_61A920(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 15) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 15) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 14); *(_BYTE *)(v5 + 14) = *(_BYTE *)(v3 + 14); *(_BYTE *)(v3 + 14) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 14) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 14) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 14) ) { *(_BYTE *)(v15 + 14) = 1; *(_BYTE *)(v6 + 14) = 0; sub_61D210(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 15) ) goto LABEL_53; 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; sub_61D270(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 14) = *(_BYTE *)(v6 + 14); *(_BYTE *)(v6 + 14) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 14) = 1; sub_61D210(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 14) ) { *(_BYTE *)(v15 + 14) = 1; *(_BYTE *)(v6 + 14) = 0; sub_61D270(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 15) ) goto LABEL_53; 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; sub_61D210(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 14) = *(_BYTE *)(v6 + 14); *(_BYTE *)(v6 + 14) = 1; *(_BYTE *)(*(_DWORD *)v15 + 14) = 1; sub_61D270(i, v6); break; } } *(_BYTE *)(v15 + 14) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 14) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (0061DC50) -------------------------------------------------------- int __thiscall sub_61DC50(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= 0x7FFFFFFE ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 14) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 14) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 15) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 14) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 14) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 15) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 14) = 1; *(_BYTE *)(v13 + 14) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 14) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 14) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 15) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 14) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 14) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 15) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 14) = 1; *(_BYTE *)(v22 + 14) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 14) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 14) = 1; return result; } //----- (0061DE80) -------------------------------------------------------- int __thiscall sub_61DE80(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x10u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 14) = 0; if ( result != -12 ) *(_WORD *)(result + 12) = *(_BYTE *)a2; return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0061DEF0) -------------------------------------------------------- int __cdecl sub_61DEF0(int a1, int a2) { int v2; // edi@1 int result; // eax@1 int v4; // ebx@1 int v5; // eax@2 int v6; // esi@2 int v7; // edx@4 int v8; // ecx@4 int v9; // edx@4 int v10; // ecx@4 int v11; // edx@4 int v12; // eax@4 int v13; // ecx@4 int v14; // edx@4 bool v15; // zf@4 int v16; // ecx@7 int v17; // edx@7 int v18; // eax@10 int v19; // ecx@10 int v20; // [sp+Ch] [bp-1Ch]@4 int v21; // [sp+10h] [bp-18h]@4 int v22; // [sp+14h] [bp-14h]@4 int v23; // [sp+18h] [bp-10h]@4 int v24; // [sp+1Ch] [bp-Ch]@4 int v25; // [sp+20h] [bp-8h]@4 int v26; // [sp+24h] [bp-4h]@4 int v27; // [sp+34h] [bp+Ch]@4 v2 = (a2 - a1) / 24; result = (a2 - a1) / 24 - ((unsigned __int64)((a2 - a1) / 24) >> 32); v4 = (a2 - a1) / 24 / 2; if ( (a2 - a1) / 24 / 2 > 0 ) { v5 = 2 * v4 + 2; v6 = a1 + 24 * v4; while ( 1 ) { v7 = *(_DWORD *)(v6 - 24); v8 = *(_DWORD *)(v6 - 20); v6 -= 24; v20 = v7; v9 = *(_DWORD *)(v6 + 8); v21 = v8; v10 = *(_DWORD *)(v6 + 12); v22 = v9; v11 = *(_DWORD *)(v6 + 16); --v4; v12 = v5 - 2; v23 = v10; v13 = *(_DWORD *)(v6 + 20); v24 = v11; v26 = v4; v27 = v12; v25 = v13; v14 = v4; v15 = v12 == v2; if ( v12 < v2 ) { do { if ( *(_DWORD *)(a1 + 24 * v12 + 20) > *(_DWORD *)(a1 + 24 * v12 - 4) ) --v12; v16 = a1 + 24 * v12; v17 = a1 + 24 * v14; *(_DWORD *)v17 = *(_DWORD *)v16; *(_DWORD *)(v17 + 4) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v17 + 8) = *(_DWORD *)(v16 + 8); *(_DWORD *)(v17 + 12) = *(_DWORD *)(v16 + 12); *(_DWORD *)(v17 + 16) = *(_DWORD *)(v16 + 16); *(_DWORD *)(v17 + 20) = *(_DWORD *)(v16 + 20); v14 = v12; v12 = 2 * v12 + 2; v15 = v12 == v2; } while ( v12 < v2 ); v4 = v26; } if ( v15 ) { v18 = a1 + 24 * v2 - 24; v19 = a1 + 24 * v14; *(_DWORD *)v19 = *(_DWORD *)v18; *(_DWORD *)(v19 + 4) = *(_DWORD *)(v18 + 4); *(_DWORD *)(v19 + 8) = *(_DWORD *)(v18 + 8); *(_DWORD *)(v19 + 12) = *(_DWORD *)(v18 + 12); *(_DWORD *)(v19 + 16) = *(_DWORD *)(v18 + 16); *(_DWORD *)(v19 + 20) = *(_DWORD *)(v18 + 20); v14 = v2 - 1; } result = sub_61AD40(a1, v14, v4, (int)&v20); if ( v4 <= 0 ) break; v5 = v27; } } return result; } //----- (0061E020) -------------------------------------------------------- int __cdecl sub_61E020(int a1, int a2) { int result; // eax@1 int i; // esi@2 unsigned int v4; // ebx@3 int v5; // ecx@5 int v6; // [sp+4h] [bp-18h]@3 int v7; // [sp+8h] [bp-14h]@3 int v8; // [sp+Ch] [bp-10h]@3 int v9; // [sp+10h] [bp-Ch]@3 int v10; // [sp+14h] [bp-8h]@3 result = a2; if ( a1 != a2 ) { for ( i = a1 + 24; i != a2; i += 24 ) { v4 = *(_DWORD *)(i + 20); v6 = *(_DWORD *)i; v7 = *(_DWORD *)(i + 4); v8 = *(_DWORD *)(i + 8); result = i; v9 = *(_DWORD *)(i + 12); v10 = *(_DWORD *)(i + 16); if ( v4 <= *(_DWORD *)(a1 + 20) ) { v5 = i - 24; if ( v4 > *(_DWORD *)(i - 4) ) { do { *(_DWORD *)result = *(_DWORD *)v5; *(_DWORD *)(result + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(v5 + 20); result = v5; v5 -= 24; } while ( v4 > *(_DWORD *)(v5 + 20) ); } *(_DWORD *)result = v6; *(_DWORD *)(result + 4) = v7; *(_DWORD *)(result + 8) = v8; *(_DWORD *)(result + 12) = v9; *(_DWORD *)(result + 16) = v10; *(_DWORD *)(result + 20) = v4; } else { sub_61ADE0(a1, i, i + 24); result = v8; *(_DWORD *)a1 = v6; *(_DWORD *)(a1 + 4) = v7; *(_DWORD *)(a1 + 8) = v8; *(_DWORD *)(a1 + 12) = v9; *(_DWORD *)(a1 + 16) = v10; *(_DWORD *)(a1 + 20) = v4; } } } return result; } //----- (0061E110) -------------------------------------------------------- int __cdecl sub_61E110(int a1, int a2, int a3) { int result; // eax@1 int v4; // edx@2 int v5; // esi@2 int v6; // edi@2 int v7; // ST18_4@2 int v8; // ST1C_4@2 int v9; // ST20_4@2 int v10; // esi@4 int v11; // edi@4 int v12; // ST14_4@4 int v13; // ST18_4@4 int v14; // ST1C_4@4 int v15; // ST20_4@4 int v16; // edx@6 int v17; // esi@6 int v18; // edi@6 int v19; // ST18_4@6 int v20; // ST1C_4@6 int v21; // ST20_4@6 result = a2; if ( *(_DWORD *)(a2 + 20) > *(_DWORD *)(a1 + 20) ) { v4 = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)(a2 + 8); v7 = *(_DWORD *)(a2 + 12); v8 = *(_DWORD *)(a2 + 16); v9 = *(_DWORD *)(a2 + 20); *(_DWORD *)a2 = *(_DWORD *)a1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(a1 + 16); *(_DWORD *)(a2 + 20) = *(_DWORD *)(a1 + 20); *(_DWORD *)a1 = v4; *(_DWORD *)(a1 + 12) = v7; *(_DWORD *)(a1 + 16) = v8; *(_DWORD *)(a1 + 4) = v5; *(_DWORD *)(a1 + 8) = v6; *(_DWORD *)(a1 + 20) = v9; } if ( *(_DWORD *)(a3 + 20) > *(_DWORD *)(a2 + 20) ) { v10 = *(_DWORD *)a3; v11 = *(_DWORD *)(a3 + 4); v12 = *(_DWORD *)(a3 + 8); v13 = *(_DWORD *)(a3 + 12); v14 = *(_DWORD *)(a3 + 16); v15 = *(_DWORD *)(a3 + 20); *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a3 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(a3 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(a3 + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(a3 + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 8) = v12; *(_DWORD *)(a2 + 12) = v13; *(_DWORD *)(a2 + 16) = v14; *(_DWORD *)a2 = v10; *(_DWORD *)(a2 + 4) = v11; *(_DWORD *)(a2 + 20) = v15; } if ( *(_DWORD *)(a2 + 20) > *(_DWORD *)(a1 + 20) ) { v16 = *(_DWORD *)a2; v17 = *(_DWORD *)(a2 + 4); v18 = *(_DWORD *)(a2 + 8); v19 = *(_DWORD *)(a2 + 12); v20 = *(_DWORD *)(a2 + 16); v21 = *(_DWORD *)(a2 + 20); *(_DWORD *)a2 = *(_DWORD *)a1; *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(a1 + 16); *(_DWORD *)(a2 + 20) = *(_DWORD *)(a1 + 20); *(_DWORD *)a1 = v16; *(_DWORD *)(a1 + 12) = v19; result = v21; *(_DWORD *)(a1 + 4) = v17; *(_DWORD *)(a1 + 8) = v18; *(_DWORD *)(a1 + 16) = v20; *(_DWORD *)(a1 + 20) = v21; } return result; } //----- (0061E250) -------------------------------------------------------- int __thiscall sub_61E250(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 15) ) { do { sub_61D9C0(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 15) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (0061E2A0) -------------------------------------------------------- size_t __thiscall sub_61E2A0(int this, size_t a2) { size_t result; // eax@1 int v3; // esi@1 void *v4; // edi@4 int v5; // ebx@4 result = a2; v3 = this; if ( a2 > 0xFFFFFFFF ) sub_65178B((int)"vector too long"); if ( *(_DWORD *)(this + 8) - *(_DWORD *)this < a2 ) { v4 = (void *)sub_4227A0(a2); memmove_0(v4, *(const void **)v3, *(_DWORD *)(v3 + 4) - *(_DWORD *)v3); v5 = *(_DWORD *)(v3 + 4) - *(_DWORD *)v3; if ( *(_DWORD *)v3 ) operator delete(*(void **)v3); result = a2; *(_DWORD *)v3 = v4; *(_DWORD *)(v3 + 4) = (char *)v4 + v5; *(_DWORD *)(v3 + 8) = (char *)v4 + a2; } return result; } //----- (0061E310) -------------------------------------------------------- int __thiscall sub_61E310(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 15) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 15) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 15); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 15); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_61DA00((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_61E250(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (0061E3B0) -------------------------------------------------------- int __thiscall sub_61E3B0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // di@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 15) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 15) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_61DC50(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_61ACE0(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_61DC50(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (0061E490) -------------------------------------------------------- int __cdecl sub_61E490(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 5 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_BYTE *)(result + 4) = *(_BYTE *)(v3 + 4); } v3 += 5; } return result; } //----- (0061E4C0) -------------------------------------------------------- int __cdecl sub_61E4C0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 3 ) { if ( result ) { *(_WORD *)result = *(_WORD *)v3; *(_BYTE *)(result + 2) = *(_BYTE *)(v3 + 2); } v3 += 3; } return result; } //----- (0061E4F0) -------------------------------------------------------- int __cdecl sub_61E4F0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 24 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(v3 + 20); } v3 += 24; } return result; } //----- (0061E540) -------------------------------------------------------- int __cdecl sub_61E540(int a1, int a2, int a3) { int v3; // eax@1 int v4; // eax@2 int v5; // ebx@2 int v6; // edx@2 int v7; // esi@2 int v8; // ST24_4@2 int result; // eax@2 int v10; // [sp+Ch] [bp+8h]@2 v3 = (a3 - a1) / 24; if ( v3 <= 40 ) { result = sub_61E110(a1, a2, a3); } else { v4 = (v3 + 1) / 8; v5 = 48 * v4; v6 = 48 * v4 + a1; v7 = 24 * v4; v8 = a1; v10 = 24 * v4 + a1; sub_61E110(v8, v10, v6); sub_61E110(a2 - v7, a2, v7 + a2); sub_61E110(a3 - v5, a3 - v7, a3); result = sub_61E110(v10, a2, a3 - v7); } return result; } //----- (0061E5E0) -------------------------------------------------------- int __cdecl sub_61E5E0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 24 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v3 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v3 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(v3 + 20); } v3 += 24; } return result; } //----- (0061E630) -------------------------------------------------------- int __thiscall sub_61E630(void *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // edi@1 int v7; // ecx@1 int v8; // eax@1 int v9; // edi@4 signed int v10; // ebx@4 int v11; // eax@4 int v12; // edx@5 int v13; // esi@5 int v14; // ecx@5 int v15; // eax@5 int *v16; // eax@13 int v17; // esi@19 int result; // eax@22 void *v19; // [sp+10h] [bp-44h]@1 int v20; // [sp+14h] [bp-40h]@14 int v21; // [sp+18h] [bp-3Ch]@1 int v22; // [sp+1Ch] [bp-38h]@2 int v23; // [sp+20h] [bp-34h]@2 int v24; // [sp+24h] [bp-30h]@4 int v25; // [sp+28h] [bp-2Ch]@4 int v26; // [sp+2Ch] [bp-28h]@4 int v27; // [sp+30h] [bp-24h]@4 int v28; // [sp+34h] [bp-20h]@1 int v29; // [sp+38h] [bp-1Ch]@4 int v30; // [sp+3Ch] [bp-18h]@4 char v31; // [sp+40h] [bp-14h]@4 unsigned int v32; // [sp+44h] [bp-10h]@1 int v33; // [sp+50h] [bp-4h]@22 int v34; // [sp+54h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v6 = this; v19 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_1LineMatch"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineAnalyse::sma_1LineMatch"; dword_750AB8[dword_750CB8++] = -1; v7 = *((_DWORD *)v6 + 36); v8 = *((_DWORD *)v6 + 37); v28 = v7; v21 = v8; if ( v7 == v8 ) { LABEL_22: --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_1LineMatch"); result = 0; } else { v22 = 3 * a5; v23 = a2 + 2 * a3 + a3; while ( 1 ) { v9 = v23; v10 = 0; v29 = 0; v30 = 0; v31 = 0; v11 = *(_BYTE *)v7; v26 = 0; v24 = v11; v25 = a4; v27 = 0; do { v12 = *(_BYTE *)(v9 + v25 + 2); v13 = *((_DWORD *)v19 + 4 * *(_BYTE *)(v9 + v25 + 2) + 1); v14 = *((_DWORD *)v19 + 4 * *(_BYTE *)(v9 + v25 + 2) + 1); v15 = *(_DWORD *)(v14 + 4); if ( !*(_BYTE *)(v15 + 15) ) { do { if ( *(_WORD *)(v15 + 12) >= (unsigned __int16)v24 ) { v14 = v15; v15 = *(_DWORD *)v15; } else { v15 = *(_DWORD *)(v15 + 8); } } while ( !*(_BYTE *)(v15 + 15) ); v10 = v27; } v27 = v14; if ( v14 == v13 || (unsigned __int16)v24 < *(_WORD *)(v14 + 12) ) { v20 = v13; v16 = &v20; } else { v16 = &v27; } if ( *v16 == v13 ) break; if ( !*((_BYTE *)&v29 + v12) ) { ++v26; *((_BYTE *)&v29 + v12) = 1; } v9 += v22; v25 += a6; ++v10; v27 = v10; } while ( v10 < 3 ); v17 = v28; if ( v10 == 3 ) { if ( *(_BYTE *)(v28 + 1) == v26 ) break; } v28 += 4; if ( v28 == v21 ) goto LABEL_22; v7 = v28; } --dword_750CB8; v33 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_1LineMatch"); result = v17; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061E7F0) -------------------------------------------------------- int __thiscall sub_61E7F0(void *this, int a2) { void *v2; // ebx@1 int v3; // ecx@1 int v4; // eax@1 int v6; // ecx@5 int v7; // eax@5 signed int v8; // edi@7 int v9; // edx@8 int v10; // esi@8 int v11; // ecx@8 int v12; // eax@8 int *v13; // eax@16 signed int v14; // eax@22 int v15; // eax@24 int v16; // esi@25 int v17; // [sp+14h] [bp-40h]@14 int v18; // [sp+18h] [bp-3Ch]@1 void *v19; // [sp+1Ch] [bp-38h]@1 int v20; // [sp+20h] [bp-34h]@17 int v21; // [sp+24h] [bp-30h]@7 int v22; // [sp+28h] [bp-2Ch]@5 int v23; // [sp+2Ch] [bp-28h]@5 int v24; // [sp+30h] [bp-24h]@5 int v25; // [sp+34h] [bp-20h]@1 int v26; // [sp+38h] [bp-1Ch]@5 int v27; // [sp+3Ch] [bp-18h]@5 char v28; // [sp+40h] [bp-14h]@5 unsigned int v29; // [sp+44h] [bp-10h]@1 int v30; // [sp+50h] [bp-4h]@2 int v31; // [sp+54h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v2 = this; v19 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_AllMatch"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineAnalyse::sma_AllMatch"; dword_750AB8[dword_750CB8++] = -1; v3 = *((_DWORD *)v2 + 40); v4 = *((_DWORD *)v2 + 41); v25 = v3; v18 = v4; if ( v3 == v4 ) { LABEL_2: --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_AllMatch"); return 0; } while ( 2 ) { v6 = *(_BYTE *)v3; v7 = 0; v26 = 0; v27 = 0; v28 = 0; v23 = 0; v22 = v6; v24 = 0; while ( 2 ) { v8 = 0; v21 = v7 + a2 + 2 * v7 + 2; while ( 1 ) { v9 = *(_BYTE *)(v21 + v8); v10 = *((_DWORD *)v2 + 4 * *(_BYTE *)(v21 + v8) + 1); v11 = *((_DWORD *)v2 + 4 * *(_BYTE *)(v21 + v8) + 1); v12 = *(_DWORD *)(v11 + 4); if ( !*(_BYTE *)(v12 + 15) ) { do { if ( *(_WORD *)(v12 + 12) >= (unsigned __int16)v22 ) { v11 = v12; v12 = *(_DWORD *)v12; } else { v12 = *(_DWORD *)(v12 + 8); } } while ( !*(_BYTE *)(v12 + 15) ); v2 = v19; } v17 = v11; if ( v11 == v10 || (unsigned __int16)v22 < *(_WORD *)(v11 + 12) ) { v20 = v10; v13 = &v20; } else { v13 = &v17; } if ( *v13 == v10 ) break; if ( !*((_BYTE *)&v26 + v9) ) { ++v23; *((_BYTE *)&v26 + v9) = 1; } ++v8; if ( v8 >= 3 ) { v14 = v24; goto LABEL_24; } } v14 = 4; LABEL_24: v15 = v14 + 1; v24 = v15; if ( v15 < 3 ) { v7 = v24; continue; } break; } v16 = v25; if ( v15 != 3 || *(_BYTE *)(v25 + 1) != v23 ) { v25 += 5; if ( v25 != v18 ) { v3 = v25; continue; } goto LABEL_2; } break; } --dword_750CB8; v30 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_AllMatch"); return v16; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (0061E9C0) -------------------------------------------------------- unsigned __int16 *__thiscall sub_61E9C0(void *this, int a2) { void *v2; // esi@1 unsigned __int16 *v3; // edi@1 int v4; // esi@2 int v5; // ebx@2 unsigned __int16 v6; // dx@3 int v7; // eax@3 int v8; // ecx@3 int *v9; // eax@10 unsigned __int16 *result; // eax@14 unsigned __int16 *v11; // [sp+14h] [bp-18h]@1 int v12; // [sp+18h] [bp-14h]@11 int v13; // [sp+1Ch] [bp-10h]@8 int v14; // [sp+28h] [bp-4h]@14 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_CenterMatch"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineAnalyse::sma_CenterMatch"; dword_750AB8[dword_750CB8++] = -1; v3 = (unsigned __int16 *)*((_DWORD *)v2 + 44); v11 = (unsigned __int16 *)*((_DWORD *)v2 + 45); if ( v3 == v11 ) { LABEL_14: --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_CenterMatch"); result = 0; } else { v4 = *((_DWORD *)v2 + 4 * *(_BYTE *)(a2 + 6) + 1); v5 = *(_DWORD *)(v4 + 4); while ( 1 ) { v6 = *(_BYTE *)v3; v7 = v5; v8 = v4; while ( !*(_BYTE *)(v7 + 15) ) { if ( *(_WORD *)(v7 + 12) >= v6 ) { v8 = v7; v7 = *(_DWORD *)v7; } else { v7 = *(_DWORD *)(v7 + 8); } } v13 = v8; if ( v8 == v4 || v6 < *(_WORD *)(v8 + 12) ) { v12 = v4; v9 = &v12; } else { v9 = &v13; } if ( *v9 != v4 ) break; v3 = (unsigned __int16 *)((char *)v3 + 3); if ( v3 == v11 ) goto LABEL_14; } --dword_750CB8; v14 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::sma_CenterMatch"); result = v3; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061EB00) -------------------------------------------------------- unsigned int __thiscall sub_61EB00(void *this, unsigned int a2, unsigned int a3) { void *v3; // esi@1 int v4; // ecx@2 int v5; // eax@2 int v6; // esi@2 unsigned int v7; // eax@2 unsigned int v8; // edi@2 unsigned int result; // eax@8 unsigned int v10; // esi@9 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"; dword_750AB8[dword_750CB8++] = -1; if ( a2 >= (*((_DWORD *)v3 + 2) - *((_DWORD *)v3 + 1)) / 20 ) { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); result = 0; } else { v4 = *((_DWORD *)v3 + 5); v5 = *((_DWORD *)v3 + 1); v6 = *((_DWORD *)v3 + 6); v7 = *(_DWORD *)(v5 + 20 * a2) / a3; v8 = 0; if ( v4 == v6 ) { LABEL_8: --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); result = v8; } else { while ( v7 < *(_DWORD *)v4 || v7 > *(_DWORD *)(v4 + 4) ) { if ( v8 < *(_DWORD *)(v4 + 8) ) v8 = *(_DWORD *)(v4 + 8); v4 += 12; if ( v4 == v6 ) goto LABEL_8; } v10 = *(_DWORD *)(v4 + 8); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); result = v10; } } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061EC50) -------------------------------------------------------- void __cdecl sub_61EC50(int a1, int a2) { int v2; // eax@2 int v3; // [sp+14h] [bp-4h]@0 if ( a2 ) { v2 = a1; do { if ( v2 ) { *(_DWORD *)v2 = 0; *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)(v2 + 8) = 0; *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 16) = 0; *(_DWORD *)(v2 + 20) = v3; } v2 += 24; --a2; } while ( a2 ); } } //----- (0061ECA0) -------------------------------------------------------- int __cdecl sub_61ECA0(int a1, int a2, unsigned int a3) { int v3; // ecx@1 unsigned int i; // esi@1 unsigned int v5; // eax@2 unsigned int v6; // edx@2 unsigned int v7; // edx@6 unsigned int v8; // eax@7 int v9; // edi@10 unsigned int v10; // eax@10 unsigned int v11; // edx@12 unsigned int v12; // ebx@12 int v13; // STA8_4@14 int v14; // STAC_4@14 int v15; // STB0_4@14 int v16; // STB4_4@14 int v17; // STB8_4@14 int v18; // STBC_4@14 bool v19; // zf@16 int v20; // edx@17 unsigned int v21; // edi@18 unsigned int v22; // ebx@18 int v23; // ebx@20 int v24; // edi@20 int v25; // ST80_4@20 int v26; // ST84_4@20 int v27; // ST88_4@20 int v28; // ST8C_4@20 int v29; // edx@28 int v30; // ST34_4@28 int v31; // ST38_4@28 int v32; // ST3C_4@28 int v33; // ST40_4@28 int v34; // ST44_4@28 int v35; // ST90_4@29 int v36; // ST94_4@29 int v37; // ST98_4@29 int v38; // ST9C_4@29 int v39; // STA0_4@29 int v40; // STA4_4@29 unsigned int v41; // edx@29 int v42; // edx@32 int v43; // ST64_4@32 int v44; // ST68_4@32 int v45; // ST6C_4@32 int v46; // ST70_4@32 int v47; // ST74_4@32 int v48; // edx@33 int v49; // ST4C_4@33 int v50; // ST50_4@33 int v51; // ST54_4@33 int v52; // ST58_4@33 int v53; // ST5C_4@33 int v54; // edx@34 int v55; // ST1C_4@34 int v56; // ST20_4@34 int v57; // ST24_4@34 int v58; // ST28_4@34 int v59; // ST2C_4@34 int result; // eax@35 int v61; // [sp+B4h] [bp-8h]@10 sub_61E540(a2, a2 + 24 * (signed int)(a3 - a2) / 24 / 2, a3 - 24); v3 = a2 + 24 * (signed int)(a3 - a2) / 24 / 2; for ( i = v3 + 24; a2 < (unsigned int)v3; v3 -= 24 ) { v5 = *(_DWORD *)(v3 + 20); v6 = *(_DWORD *)(v3 - 4); if ( v5 < v6 ) break; if ( v5 > v6 ) break; } if ( i < a3 ) { v7 = *(_DWORD *)(v3 + 20); do { v8 = *(_DWORD *)(i + 20); if ( v7 < v8 ) break; if ( v7 > v8 ) break; i += 24; } while ( i < a3 ); } v9 = v3; v10 = i; v61 = v3; while ( 2 ) { while ( 2 ) { while ( v10 < a3 ) { v11 = *(_DWORD *)(v10 + 20); v12 = *(_DWORD *)(v3 + 20); if ( v11 >= v12 ) { if ( v11 > v12 ) break; v13 = *(_DWORD *)i; v14 = *(_DWORD *)(i + 4); v15 = *(_DWORD *)(i + 8); v16 = *(_DWORD *)(i + 12); v17 = *(_DWORD *)(i + 16); v18 = *(_DWORD *)(i + 20); *(_DWORD *)i = *(_DWORD *)v10; *(_DWORD *)(i + 4) = *(_DWORD *)(v10 + 4); *(_DWORD *)(i + 8) = *(_DWORD *)(v10 + 8); *(_DWORD *)(i + 12) = *(_DWORD *)(v10 + 12); *(_DWORD *)(i + 16) = *(_DWORD *)(v10 + 16); *(_DWORD *)(i + 20) = *(_DWORD *)(v10 + 20); *(_DWORD *)v10 = v13; *(_DWORD *)(v10 + 4) = v14; *(_DWORD *)(v10 + 8) = v15; *(_DWORD *)(v10 + 12) = v16; *(_DWORD *)(v10 + 16) = v17; i += 24; *(_DWORD *)(v10 + 20) = v18; } v10 += 24; } v19 = v9 == a2; if ( v9 <= (unsigned int)a2 ) goto LABEL_25; v20 = v9 - 16; while ( 1 ) { v21 = *(_DWORD *)(v20 + 12); v22 = *(_DWORD *)(v3 + 20); if ( v22 >= v21 ) break; LABEL_21: v9 = v61 - 24; v20 -= 24; v61 = v9; if ( a2 >= (unsigned int)v9 ) goto LABEL_24; } if ( v22 <= v21 ) { v23 = *(_DWORD *)(v3 - 20); v24 = *(_DWORD *)(v3 - 24); v3 -= 24; v25 = *(_DWORD *)(v3 + 8); v26 = *(_DWORD *)(v3 + 12); v27 = *(_DWORD *)(v3 + 16); v28 = *(_DWORD *)(v3 + 20); *(_DWORD *)v3 = *(_DWORD *)(v20 - 8); *(_DWORD *)(v3 + 4) = *(_DWORD *)(v20 - 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)v20; *(_DWORD *)(v3 + 12) = *(_DWORD *)(v20 + 4); *(_DWORD *)(v3 + 16) = *(_DWORD *)(v20 + 8); *(_DWORD *)(v3 + 20) = *(_DWORD *)(v20 + 12); *(_DWORD *)(v20 - 8) = v24; *(_DWORD *)(v20 - 4) = v23; *(_DWORD *)v20 = v25; *(_DWORD *)(v20 + 4) = v26; *(_DWORD *)(v20 + 8) = v27; *(_DWORD *)(v20 + 12) = v28; goto LABEL_21; } v9 = v61; LABEL_24: v19 = v9 == a2; LABEL_25: if ( !v19 ) { v9 -= 24; v61 = v9; if ( v10 == a3 ) { v3 -= 24; if ( v9 != v3 ) { v42 = *(_DWORD *)v9; v43 = *(_DWORD *)(v9 + 4); v44 = *(_DWORD *)(v9 + 8); v45 = *(_DWORD *)(v9 + 12); v46 = *(_DWORD *)(v9 + 16); v47 = *(_DWORD *)(v9 + 20); *(_DWORD *)v9 = *(_DWORD *)v3; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v3 + 12); *(_DWORD *)(v9 + 16) = *(_DWORD *)(v3 + 16); *(_DWORD *)(v9 + 20) = *(_DWORD *)(v3 + 20); *(_DWORD *)v3 = v42; *(_DWORD *)(v3 + 4) = v43; *(_DWORD *)(v3 + 8) = v44; *(_DWORD *)(v3 + 12) = v45; *(_DWORD *)(v3 + 16) = v46; *(_DWORD *)(v3 + 20) = v47; } v48 = *(_DWORD *)v3; v49 = *(_DWORD *)(v3 + 4); v50 = *(_DWORD *)(v3 + 8); v51 = *(_DWORD *)(v3 + 12); i -= 24; v52 = *(_DWORD *)(v3 + 16); v53 = *(_DWORD *)(v3 + 20); *(_DWORD *)v3 = *(_DWORD *)i; *(_DWORD *)(v3 + 4) = *(_DWORD *)(i + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(i + 8); *(_DWORD *)(v3 + 12) = *(_DWORD *)(i + 12); *(_DWORD *)(v3 + 16) = *(_DWORD *)(i + 16); *(_DWORD *)(v3 + 20) = *(_DWORD *)(i + 20); *(_DWORD *)i = v48; *(_DWORD *)(i + 4) = v49; *(_DWORD *)(i + 8) = v50; *(_DWORD *)(i + 12) = v51; *(_DWORD *)(i + 16) = v52; *(_DWORD *)(i + 20) = v53; } else { v54 = *(_DWORD *)v10; v55 = *(_DWORD *)(v10 + 4); v56 = *(_DWORD *)(v10 + 8); v57 = *(_DWORD *)(v10 + 12); v58 = *(_DWORD *)(v10 + 16); v59 = *(_DWORD *)(v10 + 20); *(_DWORD *)v10 = *(_DWORD *)v9; *(_DWORD *)(v10 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v10 + 12) = *(_DWORD *)(v9 + 12); *(_DWORD *)(v10 + 16) = *(_DWORD *)(v9 + 16); *(_DWORD *)(v10 + 20) = *(_DWORD *)(v9 + 20); *(_DWORD *)v9 = v54; *(_DWORD *)(v9 + 4) = v55; *(_DWORD *)(v9 + 8) = v56; *(_DWORD *)(v9 + 12) = v57; *(_DWORD *)(v9 + 16) = v58; *(_DWORD *)(v9 + 20) = v59; v10 += 24; } continue; } break; } if ( v10 != a3 ) { if ( i != v10 ) { v29 = *(_DWORD *)v3; v30 = *(_DWORD *)(v3 + 4); v31 = *(_DWORD *)(v3 + 8); v32 = *(_DWORD *)(v3 + 12); v33 = *(_DWORD *)(v3 + 16); v34 = *(_DWORD *)(v3 + 20); *(_DWORD *)v3 = *(_DWORD *)i; *(_DWORD *)(v3 + 4) = *(_DWORD *)(i + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(i + 8); *(_DWORD *)(v3 + 12) = *(_DWORD *)(i + 12); *(_DWORD *)(v3 + 16) = *(_DWORD *)(i + 16); *(_DWORD *)(v3 + 20) = *(_DWORD *)(i + 20); *(_DWORD *)i = v29; *(_DWORD *)(i + 4) = v30; *(_DWORD *)(i + 8) = v31; *(_DWORD *)(i + 12) = v32; *(_DWORD *)(i + 16) = v33; *(_DWORD *)(i + 20) = v34; } v35 = *(_DWORD *)v3; v36 = *(_DWORD *)(v3 + 4); v37 = *(_DWORD *)(v3 + 8); v38 = *(_DWORD *)(v3 + 12); v39 = *(_DWORD *)(v3 + 16); v40 = *(_DWORD *)(v3 + 20); *(_DWORD *)v3 = *(_DWORD *)v10; *(_DWORD *)(v3 + 4) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(v10 + 8); *(_DWORD *)(v3 + 12) = *(_DWORD *)(v10 + 12); *(_DWORD *)(v3 + 16) = *(_DWORD *)(v10 + 16); *(_DWORD *)(v3 + 20) = *(_DWORD *)(v10 + 20); v41 = v10; *(_DWORD *)v10 = v35; *(_DWORD *)(v10 + 4) = v36; *(_DWORD *)(v10 + 8) = v37; *(_DWORD *)(v10 + 12) = v38; *(_DWORD *)(v10 + 16) = v39; i += 24; v3 += 24; v10 += 24; *(_DWORD *)(v41 + 20) = v40; continue; } break; } result = a1; *(_DWORD *)(a1 + 4) = i; *(_DWORD *)a1 = v3; return result; } //----- (0061F100) -------------------------------------------------------- void *__cdecl sub_61F100(const void *a1, const void *a2, void *a3) { const void *v3; // edx@1 void *result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result = (char *)result + 36 ) { if ( result ) memcpy(result, v3, 0x24u); v3 = (char *)v3 + 36; } return result; } //----- (0061F140) -------------------------------------------------------- int __cdecl sub_61F140(int a1, int a2) { int result; // eax@1 int v3; // esi@2 int v4; // edx@3 int v5; // eax@3 int v6; // ecx@3 int v7; // eax@3 int v8; // edx@3 int v9; // edx@3 int v10; // [sp+8h] [bp-18h]@3 int v11; // [sp+Ch] [bp-14h]@3 int v12; // [sp+10h] [bp-10h]@3 int v13; // [sp+14h] [bp-Ch]@3 int v14; // [sp+18h] [bp-8h]@3 int v15; // [sp+1Ch] [bp-4h]@3 result = (a2 - a1) / 24; if ( result > 1 ) { v3 = a2 - 16; do { v4 = *(_DWORD *)(v3 - 4); v5 = *(_DWORD *)v3; v10 = *(_DWORD *)(v3 - 8); v6 = *(_DWORD *)(v3 + 4); v12 = v5; v7 = *(_DWORD *)(v3 + 12); v11 = v4; v8 = *(_DWORD *)(v3 + 8); v13 = v6; *(_DWORD *)(v3 - 8) = *(_DWORD *)a1; v14 = v8; v9 = *(_DWORD *)(a1 + 4); v15 = v7; *(_DWORD *)(v3 - 4) = v9; *(_DWORD *)v3 = *(_DWORD *)(a1 + 8); *(_DWORD *)(v3 + 4) = *(_DWORD *)(a1 + 12); *(_DWORD *)(v3 + 8) = *(_DWORD *)(a1 + 16); *(_DWORD *)(v3 + 12) = *(_DWORD *)(a1 + 20); sub_61D460(a1, 0, (-8 - a1 + v3) / 24, (int)&v10); v3 -= 24; result = (v3 + 16 - a1) / 24; } while ( result > 1 ); } return result; } //----- (0061F220) -------------------------------------------------------- int __stdcall sub_61F220(int a1, int a2, int a3, int a4, int a5) { int v5; // eax@1 int result; // eax@2 int v7; // esi@3 sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::sms_LineRate"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::sms_LineRate"; dword_750AB8[dword_750CB8++] = -1; v5 = sub_61E630(&unk_14D41D90, a1, a2, a3, a4, a5); if ( v5 ) { v7 = *(_WORD *)(v5 + 2); --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::sms_LineRate"); result = v7; } else { --dword_750CB8; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::sms_LineRate"); result = 0; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061F310) -------------------------------------------------------- int __thiscall sub_61F310(void *this, int a2, unsigned int a3, unsigned __int16 a4, int a5, int a6) { void *v6; // esi@1 char v7; // al@1 char v8; // al@5 char v9; // cl@7 bool v10; // bl@9 int v11; // eax@12 int v12; // eax@13 char v13; // al@17 int v14; // eax@18 char v15; // al@22 int v16; // eax@23 char v17; // al@27 int v18; // eax@28 char v19; // al@32 int v20; // eax@33 char v21; // al@37 int v22; // eax@38 char v23; // al@42 int v24; // eax@43 char v25; // al@47 int v26; // eax@48 char v27; // al@52 int v28; // eax@53 unsigned int v29; // edi@58 int v30; // edi@61 unsigned __int16 v31; // ax@61 char v32; // dl@61 int v33; // eax@63 int v34; // eax@63 int v35; // eax@63 int v36; // eax@63 int v37; // eax@63 int v38; // eax@63 int v39; // eax@63 int v40; // eax@63 int v41; // eax@63 signed int v42; // edx@63 signed int v43; // ecx@64 v6 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_Action"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreenManager::smsm_Action"; dword_750AB8[dword_750CB8++] = -1; v7 = *(_BYTE *)(a5 + 1); v10 = v7 & 7 && *(_BYTE *)a5 & 0x38 && *(_BYTE *)a5 & 7 && v7 & 0x38 && (v8 = *(_BYTE *)(a5 + 2), v8 & 7) && v8 & 0x38 && (v9 = *(_BYTE *)(a5 + 3), v9 & 7) && v9 & 0x38; if ( strlen((const char *)a6) == 9 ) { v11 = *(_BYTE *)a6; if ( *(_BYTE *)a6 >= 65 ) v12 = v11 - 55; else v12 = v11 - 48; if ( v12 >= 9 ) LOBYTE(v12) = 0; *(_BYTE *)(a2 + 8) = v12; v13 = *(_BYTE *)(a6 + 1); if ( v13 >= 65 ) v14 = v13 - 55; else v14 = v13 - 48; if ( v14 >= 9 ) LOBYTE(v14) = 0; *(_BYTE *)(a2 + 9) = v14; v15 = *(_BYTE *)(a6 + 2); if ( v15 >= 65 ) v16 = v15 - 55; else v16 = v15 - 48; if ( v16 >= 9 ) LOBYTE(v16) = 0; *(_BYTE *)(a2 + 10) = v16; v17 = *(_BYTE *)(a6 + 3); if ( v17 >= 65 ) v18 = v17 - 55; else v18 = v17 - 48; if ( v18 >= 9 ) LOBYTE(v18) = 0; *(_BYTE *)(a2 + 5) = v18; v19 = *(_BYTE *)(a6 + 4); if ( v19 >= 65 ) v20 = v19 - 55; else v20 = v19 - 48; if ( v20 >= 9 ) LOBYTE(v20) = 0; *(_BYTE *)(a2 + 6) = v20; v21 = *(_BYTE *)(a6 + 5); if ( v21 >= 65 ) v22 = v21 - 55; else v22 = v21 - 48; if ( v22 >= 9 ) LOBYTE(v22) = 0; *(_BYTE *)(a2 + 7) = v22; v23 = *(_BYTE *)(a6 + 6); if ( v23 >= 65 ) v24 = v23 - 55; else v24 = v23 - 48; if ( v24 >= 9 ) LOBYTE(v24) = 0; *(_BYTE *)(a2 + 2) = v24; v25 = *(_BYTE *)(a6 + 7); if ( v25 >= 65 ) v26 = v25 - 55; else v26 = v25 - 48; if ( v26 >= 9 ) LOBYTE(v26) = 0; *(_BYTE *)(a2 + 3) = v26; v27 = *(_BYTE *)(a6 + 8); if ( v27 >= 65 ) v28 = v27 - 55; else v28 = v27 - 48; if ( v28 >= 9 ) LOBYTE(v28) = 0; *(_BYTE *)(a2 + 4) = v28; } else { v29 = sub_61EB00(&unk_14D41F98, a3, a4); if ( v10 && sub_48D360(&unk_14D42DC0) < v29 ) { *(_DWORD *)(a2 + 7) = &unk_8080808; *(_DWORD *)(a2 + 3) = &unk_8080808; *(_BYTE *)(a2 + 2) = 8; } else { v30 = (unsigned __int16)sub_427920(&unk_14D42DC0, 9); v31 = sub_427920(&unk_14D42DC0, 9); v32 = *(_BYTE *)(*(_DWORD *)v6 + v30); *(_BYTE *)(*(_DWORD *)v6 + v30) = *(_BYTE *)(*(_DWORD *)v6 + v31); *(_BYTE *)(v31 + *(_DWORD *)v6) = v32; ++*((_DWORD *)v6 + 40); if ( *((_DWORD *)v6 + 40) >= (unsigned int)(*((_DWORD *)v6 + 5) - *((_DWORD *)v6 + 4)) ) { *((_DWORD *)v6 + 40) = 0; sub_61C430(v6); } *(_DWORD *)(a2 + 7) = 1667457891; *(_DWORD *)(a2 + 3) = 1667457891; *(_BYTE *)(a2 + 2) = 99; *(_BYTE *)(**(_BYTE **)v6 / 3 + **(_BYTE **)v6 % 3 + 2 * **(_BYTE **)v6 / 3 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 4) + *((_DWORD *)v6 + 40)); v33 = *(_BYTE *)(*(_DWORD *)v6 + 1) / 3; *(_BYTE *)(v33 + *(_BYTE *)(*(_DWORD *)v6 + 1) % 3 + 2 * v33 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 8) + *((_DWORD *)v6 + 40)); v34 = *(_BYTE *)(*(_DWORD *)v6 + 2) / 3; *(_BYTE *)(v34 + *(_BYTE *)(*(_DWORD *)v6 + 2) % 3 + 2 * v34 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 12) + *((_DWORD *)v6 + 40)); v35 = *(_BYTE *)(*(_DWORD *)v6 + 3) / 3; *(_BYTE *)(v35 + *(_BYTE *)(*(_DWORD *)v6 + 3) % 3 + 2 * v35 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 16) + *((_DWORD *)v6 + 40)); v36 = *(_BYTE *)(*(_DWORD *)v6 + 4) / 3; *(_BYTE *)(v36 + *(_BYTE *)(*(_DWORD *)v6 + 4) % 3 + 2 * v36 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 20) + *((_DWORD *)v6 + 40)); v37 = *(_BYTE *)(*(_DWORD *)v6 + 5) / 3; *(_BYTE *)(v37 + *(_BYTE *)(*(_DWORD *)v6 + 5) % 3 + 2 * v37 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 24) + *((_DWORD *)v6 + 40)); v38 = *(_BYTE *)(*(_DWORD *)v6 + 6) / 3; *(_BYTE *)(v38 + *(_BYTE *)(*(_DWORD *)v6 + 6) % 3 + 2 * v38 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 28) + *((_DWORD *)v6 + 40)); v39 = *(_BYTE *)(*(_DWORD *)v6 + 7) / 3; *(_BYTE *)(v39 + *(_BYTE *)(*(_DWORD *)v6 + 7) % 3 + 2 * v39 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 32) + *((_DWORD *)v6 + 40)); v40 = *(_BYTE *)(*(_DWORD *)v6 + 8) / 3; *(_BYTE *)(v40 + *(_BYTE *)(*(_DWORD *)v6 + 8) % 3 + 2 * v40 + a2 + 2) = *(_BYTE *)(*((_DWORD *)v6 + 36) + *((_DWORD *)v6 + 40)); v41 = a2 + 2; v42 = 3; do { v43 = 0; do { if ( *(_BYTE *)(v41 + v43) >= 9u ) *(_BYTE *)(v41 + v43) = 0; ++v43; } while ( v43 < 3 ); v41 += 3; --v42; } while ( v42 ); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreenManager::smsm_Action"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (0061F720) -------------------------------------------------------- int __stdcall sub_61F720(int a1, int a2, int a3) { return sub_61E4F0(a1, a2, a3); } //----- (0061F750) -------------------------------------------------------- void __thiscall sub_61F750(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_61E310(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (0061F7B0) -------------------------------------------------------- int __thiscall sub_61F7B0(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-10h]@4 int v5; // [sp+10h] [bp-4h]@3 v1 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x10u); if ( !v2 ) { v5 = 0; std::exception::exception(&v5); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 14) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 15) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0061F820) -------------------------------------------------------- unsigned int __thiscall sub_61F820(int this, unsigned int a2) { int v2; // esi@1 unsigned int result; // eax@1 int v4; // ebx@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edi@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@4 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; result = a2; if ( a2 > 0x3FFFFFFF ) sub_65178B((int)"vector too long"); if ( (*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 2 < a2 ) { v4 = sub_5ADF10(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v9 = v4; v11 = 0; sub_625820((int)v6, v5, v4); v7 = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) >> 2; if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = a2; *(_DWORD *)(v2 + 8) = v4 + 4 * a2; *(_DWORD *)(v2 + 4) = v4 + 4 * v7; *(_DWORD *)v2 = v4; } return result; } //----- (0061F8D7) -------------------------------------------------------- void __usercall sub_61F8D7(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0061F8F0) -------------------------------------------------------- int __thiscall sub_61F8F0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // [sp+0h] [bp-24h]@1 int v11; // [sp+10h] [bp-14h]@4 int *v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [bp-4h]@4 v12 = &v10; v2 = this; if ( a2 > 0x33333333 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 5; if ( result < a2 ) { v4 = sub_61D150(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v11 = v4; v13 = 0; sub_61E490((int)v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 1; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v11; v9 = v11 + 4 * v8; *(_DWORD *)(v2 + 8) = a2 + v11 + 4 * a2; *(_DWORD *)(v2 + 4) = v8 + v9; *(_DWORD *)v2 = result; } return result; } //----- (0061F9C7) -------------------------------------------------------- void __usercall sub_61F9C7(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0061F9E0) -------------------------------------------------------- int __thiscall sub_61F9E0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 int v7; // edi@4 int v8; // ecx@6 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > 0x55555555 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 3; if ( result < a2 ) { v4 = sub_61D1B0(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v10 = v4; v12 = 0; sub_61E4C0((int)v6, v5, v4); v7 = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 3; if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; v8 = v10 + 2 * v7; *(_DWORD *)(v2 + 8) = a2 + v10 + 2 * a2; *(_DWORD *)(v2 + 4) = v7 + v8; *(_DWORD *)v2 = result; } return result; } //----- (0061FAB3) -------------------------------------------------------- void __usercall sub_61FAB3(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0061FAD0) -------------------------------------------------------- int __thiscall sub_61FAD0(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > 0x15555555 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 12; if ( result < a2 ) { v4 = sub_480E80(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v10 = v4; v12 = 0; sub_5AE9E0((int)v6, v5, v4); v7 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 1; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); result = v10; *(_DWORD *)(v2 + 8) = v10 + 12 * a2; *(_DWORD *)(v2 + 4) = result + 12 * v8; *(_DWORD *)v2 = result; } return result; } //----- (0061FBA9) -------------------------------------------------------- void __usercall sub_61FBA9(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0061FBC0) -------------------------------------------------------- int __cdecl sub_61FBC0(int a1, int a2, signed int a3) { int v3; // ebx@1 int v4; // edi@1 int result; // eax@1 signed int v6; // esi@2 signed int v7; // edx@4 signed int v8; // edx@12 int v9; // [sp+Ch] [bp-8h]@4 int v10; // [sp+10h] [bp-4h]@4 v3 = a1; v4 = a2; result = (a2 - a1) / 24; if ( result <= 32 ) goto LABEL_8; v6 = a3; while ( v6 > 0 ) { sub_61ECA0((int)&v9, v3, v4); v6 = v6 / 2 / 2 + v6 / 2; v7 = (signed int)((unsigned __int64)(715827883i64 * (v9 - v3)) >> 32) >> 2; if ( (signed int)(v7 + ((unsigned int)v7 >> 31)) >= (v4 - v10) / 24 ) { sub_61FBC0(v10, v4, v6); v4 = v9; } else { sub_61FBC0(v3, v9, v6); v3 = v10; } result = (v4 - v3) / 24; if ( result <= 32 ) goto LABEL_8; } if ( result <= 32 ) { LABEL_8: if ( result > 1 ) result = sub_61E020(v3, v4); } else { v8 = (signed int)((unsigned __int64)(715827883i64 * (v4 - v3)) >> 32) >> 2; if ( (signed int)(v8 + ((unsigned int)v8 >> 31)) > 1 ) sub_61DEF0(v3, v4); result = sub_61F140(v3, v4); } return result; } // 61FBC0: using guessed type _DWORD __cdecl sub_61FBC0(_DWORD, _DWORD, _DWORD); //----- (0061FCE0) -------------------------------------------------------- int __thiscall sub_61FCE0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 12; if ( 357913941 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 12; if ( v3 > (unsigned int)result ) { if ( 357913941 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_61FAD0(this, v5); } return result; } //----- (0061FD60) -------------------------------------------------------- int __thiscall sub_61FD60(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 const void *v5; // ST04_4@4 const void *v6; // ST00_4@4 const void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 const void *i; // eax@5 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_71C71C7 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 36; if ( result < a2 ) { v4 = sub_5ADD90(a2); v5 = *(const void **)(v2 + 4); v6 = *(const void **)v2; v12 = v4; v14 = 0; sub_61F100(v6, v5, (void *)v4); v7 = *(const void **)v2; v8 = (signed int)((unsigned __int64)(954437177i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v9 = v8 + ((unsigned int)v8 >> 31); if ( *(_DWORD *)v2 ) { for ( i = *(const void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 36 ) ; operator delete(*(void **)v2); } result = v12; *(_DWORD *)(v2 + 8) = v12 + 36 * a2; *(_DWORD *)(v2 + 4) = result + 36 * v9; *(_DWORD *)v2 = result; } return result; } //----- (0061FE50) -------------------------------------------------------- void __usercall sub_61FE50(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0061FE70) -------------------------------------------------------- int __thiscall sub_61FE70(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 void *v7; // ebx@4 signed int v8; // edx@4 int v9; // edi@4 void *i; // eax@5 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > (unsigned int)&unk_AAAAAAA ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 24; if ( result < a2 ) { v4 = sub_43EF20(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v12 = v4; v14 = 0; sub_61E4F0((int)v6, v5, v4); v7 = *(void **)v2; v8 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 2; v9 = v8 + ((unsigned int)v8 >> 31); if ( *(_DWORD *)v2 ) { for ( i = *(void **)(v2 + 4); v7 != i; v7 = (char *)v7 + 24 ) ; operator delete(*(void **)v2); } result = v12; *(_DWORD *)(v2 + 8) = v12 + 24 * a2; *(_DWORD *)(v2 + 4) = result + 24 * v9; *(_DWORD *)v2 = result; } return result; } //----- (0061FF60) -------------------------------------------------------- void __usercall sub_61FF60(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0061FF80) -------------------------------------------------------- int __thiscall sub_61FF80(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@4 int v5; // ecx@4 int v6; // ST00_4@4 int v8; // [sp+0h] [bp-24h]@1 int v9; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@4 v10 = &v8; v2 = this; v9 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; v3 = (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 24; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; if ( v3 ) { if ( v3 > (unsigned int)&unk_AAAAAAA ) sub_65178B((int)"vector too long"); v4 = sub_43EF20(v3); *(_DWORD *)(v2 + 8) = v4 + 24 * v3; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = v4; v5 = *(_DWORD *)(a2 + 4); v6 = *(_DWORD *)a2; v11 = 0; *(_DWORD *)(v2 + 4) = sub_61E5E0(v6, v5, v4); } return v2; } //----- (00620043) -------------------------------------------------------- void __usercall sub_620043(int a1) { sub_424190(*(void ***)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (006200F0) -------------------------------------------------------- int __thiscall sub_6200F0(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_61FCE0(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); } } else { v4 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 1; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_61FCE0(v2, 1); v6 = *(_DWORD *)v2 + 12 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v2 + 4) += 12; return result; } } *(_DWORD *)(v2 + 4) += 12; return result; } //----- (00620180) -------------------------------------------------------- int __thiscall sub_620180(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 24; if ( (unsigned int)((char *)&unk_AAAAAAA - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 24; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_AAAAAAA - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_61FE70(this, v5); } return result; } //----- (00620200) -------------------------------------------------------- int __thiscall sub_620200(int this, int a2) { int v2; // esi@1 signed int v3; // edx@2 int v4; // ebx@2 int v5; // eax@3 int v6; // ecx@3 signed int v8; // edx@5 int v9; // ecx@5 int v10; // ebx@8 v2 = this; if ( this != a2 ) { v3 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2)) >> 32) >> 2; v4 = v3 + ((unsigned int)v3 >> 31); if ( v4 ) { v8 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(this + 4) - *(_DWORD *)this)) >> 32) >> 2; v9 = v8 + ((unsigned int)v8 >> 31); if ( v4 <= (unsigned int)v9 ) { sub_61D3B0(*(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)v2); *(_DWORD *)(v2 + 4) = *(_DWORD *)v2 + 24 * (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 24; return v2; } if ( v4 <= (unsigned int)((*(_DWORD *)(v2 + 8) - *(_DWORD *)v2) / 24) ) { v10 = *(_DWORD *)a2 + 24 * v9; sub_61D3B0(*(_DWORD *)a2, *(_DWORD *)a2 + 24 * v9, *(_DWORD *)v2); *(_DWORD *)(v2 + 4) = sub_61E4F0(v10, *(_DWORD *)(a2 + 4), *(_DWORD *)(v2 + 4)); return v2; } if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); if ( sub_61D400(v2, (*(_DWORD *)(a2 + 4) - *(_DWORD *)a2) / 24) ) *(_DWORD *)(v2 + 4) = sub_61F720(*(_DWORD *)a2, *(_DWORD *)(a2 + 4), *(_DWORD *)v2); } else { v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)this; if ( *(_DWORD *)v2 != v5 ) { *(_DWORD *)(v2 + 4) = sub_61D3B0(v5, v5, v6); return v2; } } } return v2; } //----- (00620350) -------------------------------------------------------- int __thiscall sub_620350(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; _eh_vector_constructor_iterator_( (void *)(this + 16), 0x10u, 9, (int)unknown_libname_3, (void (__thiscall *)(void *))sub_424190); *(_DWORD *)(v1 + 240) = 0; *(_DWORD *)(v1 + 244) = 0; *(_DWORD *)(v1 + 248) = 0; sub_639920(v1 + 256); *(_DWORD *)(v1 + 256) = &off_7020BC; *(_DWORD *)(v1 + 320) = 0; *(_WORD *)(v1 + 324) = 0; return v1; } // 625C30: using guessed type int __thiscall unknown_libname_3(_DWORD); // 7020BC: using guessed type int (__thiscall *off_7020BC)(void *, char); //----- (006203F0) -------------------------------------------------------- void __thiscall sub_6203F0(void *this) { void *v1; // esi@1 int v2; // ecx@1 v1 = this; v2 = (int)((char *)this + 256); *(_DWORD *)v2 = &off_7020BC; sub_639940(v2); if ( *((_DWORD *)v1 + 60) ) operator delete(*((void **)v1 + 60)); *((_DWORD *)v1 + 60) = 0; *((_DWORD *)v1 + 61) = 0; *((_DWORD *)v1 + 62) = 0; _LN21((char *)v1 + 16, 0x10u, 9, (void (__thiscall *)(void *))sub_424190); if ( *(_DWORD *)v1 ) operator delete(*(void **)v1); *(_DWORD *)v1 = 0; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 2) = 0; } // 7020BC: using guessed type int (__thiscall *off_7020BC)(void *, char); //----- (006204A0) -------------------------------------------------------- void __thiscall sub_6204A0(void *this) { void *v1; // esi@1 int v2; // eax@2 int v3; // ebx@2 int v4; // edi@2 unsigned int v5; // edi@4 unsigned int v6; // eax@5 int v7; // ebx@5 bool v8; // cf@5 int v9; // eax@7 int v10; // esi@9 int v11; // eax@9 unsigned int v12; // eax@9 int v13; // edx@10 int v14; // edi@10 int v17; // eax@16 int v18; // ecx@16 unsigned int v19; // eax@19 unsigned int v20; // ebx@19 bool v21; // cf@20 int v22; // esi@22 unsigned int v23; // eax@24 int v24; // edx@25 int v25; // ecx@26 int v26; // esi@26 int v27; // eax@27 int v28; // eax@28 int v29; // ecx@28 unsigned int v30; // ecx@30 int v31; // eax@35 int v32; // ecx@37 int v33; // eax@38 int v34; // eax@39 int v35; // ecx@39 unsigned int v36; // ecx@41 int v37; // eax@46 unsigned int v38; // eax@48 int v39; // edi@49 int v40; // esi@49 int v43; // eax@55 int v44; // ecx@55 unsigned int v45; // eax@59 int v46; // edi@61 unsigned int v47; // ecx@63 unsigned int v48; // ebx@64 int v49; // esi@65 int v50; // edi@65 signed int v51; // edx@66 int v52; // ecx@66 int v53; // ecx@67 int v54; // eax@67 unsigned int v55; // eax@69 int v56; // eax@74 int v57; // ecx@74 int v58; // edi@74 int v59; // esi@77 int v60; // eax@77 signed int v61; // edx@78 int v62; // ecx@78 int v63; // ecx@79 int v64; // eax@79 unsigned int v65; // eax@81 int v66; // ecx@87 int v67; // ecx@92 int v68; // esi@92 int v69; // edi@92 int v72; // eax@98 int v73; // ecx@98 unsigned int v74; // eax@101 int v75; // edi@103 int v76; // eax@105 unsigned int v77; // ecx@105 int v78; // ebx@106 int v79; // edi@107 int v80; // esi@107 int v81; // ecx@108 int v82; // ecx@109 int v83; // eax@109 unsigned int v84; // eax@111 int v85; // esi@115 int v86; // eax@117 int v87; // edi@117 int v88; // esi@121 int v89; // ecx@122 int v90; // ecx@123 int v91; // eax@123 unsigned int v92; // eax@125 int v93; // ecx@131 int v94; // [sp+Ch] [bp-1ACh]@9 int v95; // [sp+10h] [bp-1A8h]@1 unsigned int v96; // [sp+14h] [bp-1A4h]@19 void *v97; // [sp+18h] [bp-1A0h]@1 int (__thiscall **v98)(void *, char); // [sp+1Ch] [bp-19Ch]@96 int v99; // [sp+50h] [bp-168h]@97 __int16 v100; // [sp+5Ch] [bp-15Ch]@96 char v101; // [sp+5Eh] [bp-15Ah]@96 int (__thiscall **v102)(void *, char); // [sp+60h] [bp-158h]@1 int (__thiscall **v103)(void *, char); // [sp+64h] [bp-154h]@14 int v104; // [sp+94h] [bp-124h]@5 int v105; // [sp+98h] [bp-120h]@15 int v106; // [sp+A0h] [bp-118h]@1 int v107; // [sp+A4h] [bp-114h]@1 char v108; // [sp+A8h] [bp-110h]@18 unsigned int v109; // [sp+1A8h] [bp-10h]@1 int v110; // [sp+1B4h] [bp-4h]@1 int v111; // [sp+1B8h] [bp+0h]@1 v109 = (unsigned int)&v111 ^ __security_cookie; v1 = this; v97 = this; sub_639920((int)&v102); v102 = &off_7020D4; v106 = 0; LOBYTE(v107) = 0; v110 = 0; sub_5873E0(&v102, "../9Data/Shine/GBSMGroup.shn"); v95 = 9; do { v2 = *((_DWORD *)v1 + 1); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 15) ) { do { sub_61D9C0(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 15) ); } *(_DWORD *)(*((_DWORD *)v1 + 1) + 4) = *((_DWORD *)v1 + 1); **((_DWORD **)v1 + 1) = *((_DWORD *)v1 + 1); v5 = 0; *(_DWORD *)(*((_DWORD *)v1 + 1) + 8) = *((_DWORD *)v1 + 1); *((_DWORD *)v1 + 2) = 0; v1 = (char *)v1 + 16; --v95; } while ( v95 ); v6 = *(_DWORD *)(v104 + 40); v7 = (int)v97; v8 = v6 > 0; if ( (signed int)v6 > 0 ) { do { if ( v8 ) v9 = sub_626BC0((int)&v102, v5); else v9 = (int)&v106; v10 = v7 + 16 * *(_DWORD *)(v9 + 1); v11 = sub_61DE80((void *)(v7 + 16 * *(_DWORD *)(v9 + 1)), v9); sub_61E3B0(v10, (int)&v94, (void *)v11, 0); v12 = *(_DWORD *)(v104 + 40); ++v5; v8 = v5 < v12; } while ( (signed int)v5 < (signed int)v12 ); } v110 = -1; v102 = &off_7020D4; sub_639940((int)&v102); v13 = *(_DWORD *)(v7 + 144); v14 = v7 + 144; if ( v13 != *(_DWORD *)(v7 + 148) ) *(_DWORD *)(v7 + 148) = v13; sub_639920((int)&v103); v103 = &off_7020DC; v107 = 0; v110 = 1; if ( !sub_627480(&v103, "../9Data/Shine/GBSMLine.shn", 16, 4) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/GBSMLine.shn"); if ( v105 ) { v17 = *(_DWORD *)v105; v18 = *(_DWORD *)v105; } else { v17 = 0; v18 = 0; } sprintf(&v108, "Code:%X:%d\tSHN:%X:%d", 16, 16, v18, v17); sub_639100(&unk_86DDD8, (int)&v108, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v19 = *(_DWORD *)(v105 + 40); v20 = 0; v96 = 0; if ( (signed int)v19 > 0 ) { v21 = v19 > 0; do { if ( v21 ) v22 = sub_626BC0((int)&v103, v20); else v22 = (int)&v107; v23 = *(_DWORD *)(v14 + 4); if ( v22 >= v23 || (v24 = *(_DWORD *)v14, *(_DWORD *)v14 > (unsigned int)v22) ) { v32 = *(_DWORD *)(v14 + 8); if ( v23 == v32 ) { v33 = (signed int)(v23 - *(_DWORD *)v14) >> 2; if ( (unsigned int)v33 > 0x3FFFFFFE ) LABEL_56: sub_65178B((int)"vector too long"); v34 = v33 + 1; v35 = (v32 - *(_DWORD *)v14) >> 2; if ( v34 > (unsigned int)v35 ) { if ( 1073741823 - ((unsigned int)v35 >> 1) >= v35 ) v36 = ((unsigned int)v35 >> 1) + v35; else v36 = 0; if ( v36 < v34 ) v36 = v34; sub_61F820(v14, v36); v20 = v96; } } v37 = *(_DWORD *)(v14 + 4); if ( v37 ) *(_DWORD *)v37 = *(_DWORD *)v22; } else { v25 = *(_DWORD *)(v14 + 8); v26 = (v22 - v24) >> 2; if ( v23 == v25 ) { v27 = (signed int)(v23 - v24) >> 2; if ( (unsigned int)v27 > 0x3FFFFFFE ) goto LABEL_56; v28 = v27 + 1; v29 = (v25 - v24) >> 2; if ( v28 > (unsigned int)v29 ) { if ( 1073741823 - ((unsigned int)v29 >> 1) >= v29 ) v30 = ((unsigned int)v29 >> 1) + v29; else v30 = 0; if ( v30 < v28 ) v30 = v28; sub_61F820(v14, v30); v20 = v96; } } v31 = *(_DWORD *)(v14 + 4); if ( v31 ) *(_DWORD *)v31 = *(_DWORD *)(*(_DWORD *)v14 + 4 * v26); } *(_DWORD *)(v14 + 4) += 4; v38 = *(_DWORD *)(v105 + 40); ++v20; v96 = v20; v21 = v20 < v38; } while ( (signed int)v20 < (signed int)v38 ); } v110 = -1; v103 = &off_7020DC; sub_639940((int)&v103); v39 = (int)v97; v40 = *((_DWORD *)v97 + 40); if ( v40 != *((_DWORD *)v97 + 41) ) *(_DWORD *)(v39 + 164) = v40; sub_639920((int)&v102); v102 = &off_7020E4; v106 = 0; LOBYTE(v107) = 0; v110 = 2; if ( !sub_627480(&v102, "../9Data/Shine/GBSMAll.shn", 26, 5) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/GBSMAll.shn"); if ( v104 ) { v43 = *(_DWORD *)v104; v44 = *(_DWORD *)v104; } else { v43 = 0; v44 = 0; } sprintf(&v108, "Code:%X:%d\tSHN:%X:%d", 26, 26, v44, v43); sub_639100(&unk_86DDD8, (int)&v108, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v45 = *(_DWORD *)(v104 + 40); v96 = 0; if ( (signed int)v45 > 0 ) { do { if ( v96 < v45 ) v46 = sub_626BC0((int)&v102, v96); else v46 = (int)&v106; v47 = *((_DWORD *)v97 + 41); if ( v46 >= v47 || (v48 = *((_DWORD *)v97 + 40), v48 > v46) ) { v59 = *((_DWORD *)v97 + 42); v60 = (int)((char *)v97 + 160); v95 = (int)((char *)v97 + 160); if ( v47 == v59 ) { v61 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(v47 - *(_DWORD *)v60)) >> 32) >> 1; v62 = v61 + ((unsigned int)v61 >> 31); if ( (unsigned int)v62 > 0x33333332 ) goto LABEL_56; v63 = v62 + 1; v64 = (v59 - *(_DWORD *)v60) / 5; if ( v63 > (unsigned int)v64 ) { if ( 858993459 - ((unsigned int)v64 >> 1) >= v64 ) v65 = ((unsigned int)v64 >> 1) + v64; else v65 = 0; if ( v65 < v63 ) v65 = v63; sub_61F8F0(v95, v65); } v60 = v95; } v66 = *(_DWORD *)(v60 + 4); if ( v66 ) { *(_DWORD *)v66 = *(_DWORD *)v46; *(_BYTE *)(v66 + 4) = *(_BYTE *)(v46 + 4); } *(_DWORD *)(v60 + 4) += 5; } else { v49 = *((_DWORD *)v97 + 42); v50 = (signed int)(v46 - v48) / 5; if ( v47 == v49 ) { v51 = (signed int)((unsigned __int64)(1717986919i64 * (signed int)(v47 - v48)) >> 32) >> 1; v52 = v51 + ((unsigned int)v51 >> 31); if ( (unsigned int)v52 > 0x33333332 ) goto LABEL_56; v53 = v52 + 1; v54 = (signed int)(v49 - v48) / 5; if ( v53 > (unsigned int)v54 ) { if ( 858993459 - ((unsigned int)v54 >> 1) >= v54 ) v55 = ((unsigned int)v54 >> 1) + v54; else v55 = 0; if ( v55 < v53 ) v55 = v53; sub_61F8F0((int)((char *)v97 + 160), v55); } } v56 = (int)v97; v57 = *((_DWORD *)v97 + 41); v58 = *((_DWORD *)v97 + 40) + 5 * v50; if ( v57 ) { *(_DWORD *)v57 = *(_DWORD *)v58; *(_BYTE *)(v57 + 4) = *(_BYTE *)(v58 + 4); } *(_DWORD *)(v56 + 164) += 5; } v45 = *(_DWORD *)(v104 + 40); ++v96; } while ( (signed int)v96 < (signed int)v45 ); v39 = (int)v97; } v110 = -1; v102 = &off_7020E4; sub_639940((int)&v102); v67 = *(_DWORD *)(v39 + 180); v68 = *(_DWORD *)(v39 + 176); v69 = v39 + 176; v97 = (void *)v69; if ( v68 != v67 ) *(_DWORD *)(v69 + 4) = v68; sub_639920((int)&v98); v98 = &off_7020EC; v100 = 0; v101 = 0; v110 = 3; if ( !sub_627480(&v98, "../9Data/Shine/GBSMCenter.shn", 7, 3) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/GBSMCenter.shn"); if ( v99 ) { v72 = *(_DWORD *)v99; v73 = *(_DWORD *)v99; } else { v72 = 0; v73 = 0; } sprintf(&v108, "Code:%X:%d\tSHN:%X:%d", 7, 7, v73, v72); sub_639100(&unk_86DDD8, (int)&v108, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v74 = *(_DWORD *)(v99 + 40); v96 = 0; if ( (signed int)v74 > 0 ) { while ( 1 ) { if ( v96 < v74 ) v75 = sub_626BC0((int)&v98, v96); else v75 = (int)&v100; v76 = (int)v97; v77 = *((_DWORD *)v97 + 1); if ( v75 >= v77 ) goto LABEL_121; v78 = *(_DWORD *)v97; if ( *(_DWORD *)v97 > (unsigned int)v75 ) break; v79 = (v75 - v78) / 3; v80 = *((_DWORD *)v97 + 2); if ( v77 != v80 ) goto LABEL_138; v81 = (signed int)(v77 - v78) / 3; if ( (unsigned int)v81 > 0x55555554 ) goto LABEL_56; v82 = v81 + 1; v83 = (v80 - v78) / 3; if ( v82 <= (unsigned int)v83 ) { LABEL_138: v85 = (int)v97; } else { if ( 1431655765 - ((unsigned int)v83 >> 1) >= v83 ) v84 = ((unsigned int)v83 >> 1) + v83; else v84 = 0; if ( v84 < v82 ) v84 = v82; v85 = (int)v97; sub_61F9E0((int)v97, v84); } v86 = *(_DWORD *)(v85 + 4); v87 = *(_DWORD *)v85 + 3 * v79; if ( v86 ) { *(_WORD *)v86 = *(_WORD *)v87; *(_BYTE *)(v86 + 2) = *(_BYTE *)(v87 + 2); } *(_DWORD *)(v85 + 4) += 3; LABEL_134: v74 = *(_DWORD *)(v99 + 40); ++v96; if ( (signed int)v96 >= (signed int)v74 ) goto LABEL_135; } v76 = (int)v97; LABEL_121: v88 = *(_DWORD *)(v76 + 8); if ( v77 == v88 ) { v89 = (signed int)(v77 - *(_DWORD *)v76) / 3; if ( (unsigned int)v89 > 0x55555554 ) goto LABEL_56; v90 = v89 + 1; v91 = (v88 - *(_DWORD *)v76) / 3; if ( v90 > (unsigned int)v91 ) { if ( 1431655765 - ((unsigned int)v91 >> 1) >= v91 ) v92 = ((unsigned int)v91 >> 1) + v91; else v92 = 0; if ( v92 < v90 ) v92 = v90; sub_61F9E0((int)v97, v92); } v76 = (int)v97; } v93 = *(_DWORD *)(v76 + 4); if ( v93 ) { *(_WORD *)v93 = *(_WORD *)v75; *(_BYTE *)(v93 + 2) = *(_BYTE *)(v75 + 2); } *(_DWORD *)(v76 + 4) += 3; goto LABEL_134; } LABEL_135: v110 = -1; v98 = &off_7020EC; sub_639940((int)&v98); } // 7020D4: using guessed type int (__thiscall *off_7020D4)(void *, char); // 7020DC: using guessed type int (__thiscall *off_7020DC)(void *, char); // 7020E4: using guessed type int (__thiscall *off_7020E4)(void *, char); // 7020EC: using guessed type int (__thiscall *off_7020EC)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00620D60) -------------------------------------------------------- void __thiscall sub_620D60(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@3 int v4; // edi@3 unsigned int v7; // esi@7 unsigned int v8; // eax@7 bool v9; // cf@8 int v10; // eax@10 unsigned int v11; // eax@12 int (__thiscall **v12)(void *, char); // [sp+8h] [bp-5Ch]@7 int v13; // [sp+3Ch] [bp-28h]@7 int v14; // [sp+48h] [bp-1Ch]@7 int v15; // [sp+4Ch] [bp-18h]@7 int v16; // [sp+50h] [bp-14h]@7 unsigned int v17; // [sp+54h] [bp-10h]@1 int v18; // [sp+60h] [bp-4h]@7 int v19; // [sp+64h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; v2 = sub_61D2D0((int)&off_86D250, 26); *((_DWORD *)v1 + 9) = v2; if ( v2 == 0 ) { sub_639100(&unk_86DDD8, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_Load : TaxInfo Load fail", v2 != 0); loc_6391B0("SlotMachine::SlotMachineJackPotRanking::smjpr_Load"); } v3 = *((_DWORD *)v1 + 5); v4 = (int)((char *)v1 + 20); if ( v3 != *((_DWORD *)v1 + 6) ) *((_DWORD *)v1 + 6) = v3; sub_639920((int)&v12); v12 = &off_7020F4; v7 = 0; v14 = 0; v15 = 0; v16 = 0; v18 = 0; sub_61AAC0(&v12, "../9Data/Shine/GBSMJPRate.shn"); v8 = *(_DWORD *)(v13 + 40); if ( (signed int)v8 > 0 ) { v9 = v8 > 0; do { if ( v9 ) v10 = sub_626BC0((int)&v12, v7); else v10 = (int)&v14; sub_6200F0(v4, v10); v11 = *(_DWORD *)(v13 + 40); ++v7; v9 = v7 < v11; } while ( (signed int)v7 < (signed int)v11 ); } v18 = -1; v12 = &off_7020F4; sub_639940((int)&v12); } // 7020F4: using guessed type int (__thiscall *off_7020F4)(void *, char); // 86D250: using guessed type int (*off_86D250)(); // 86FEB8: using guessed type int __security_cookie; //----- (00620E90) -------------------------------------------------------- unsigned int __thiscall sub_620E90(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 unsigned int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; result = v4 / 24; if ( v4 / 24 <= a2 ) { if ( v4 / 24 < a2 ) { sub_620180(v2, a2 - result); sub_61EC50(*(_DWORD *)(v2 + 4), a2 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 24); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 24; *(_DWORD *)(v2 + 4) += 24 * (a2 - result); } } else { result = *(_DWORD *)v2 + 24 * a2; if ( result != v3 ) { result = sub_61D3B0(v3, v3, result); *(_DWORD *)(v2 + 4) = result; } } return result; } //----- (00620F50) -------------------------------------------------------- int __thiscall sub_620F50(int this, unsigned int a2) { int v2; // edi@1 unsigned int v3; // ecx@1 signed int v4; // edx@3 int v5; // esi@3 int v6; // ecx@5 int result; // eax@5 v2 = this; v3 = *(_DWORD *)(this + 4); if ( a2 >= v3 || *(_DWORD *)v2 > a2 ) { if ( v3 == *(_DWORD *)(v2 + 8) ) sub_620180(v2, 1); result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(a2 + 20); } } else { v4 = (signed int)((unsigned __int64)(715827883i64 * (signed int)(a2 - *(_DWORD *)v2)) >> 32) >> 2; v5 = v4 + ((unsigned int)v4 >> 31); if ( v3 == *(_DWORD *)(v2 + 8) ) sub_620180(v2, 1); v6 = *(_DWORD *)v2 + 24 * v5; result = *(_DWORD *)(v2 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v6; *(_DWORD *)(result + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(v6 + 12); *(_DWORD *)(result + 16) = *(_DWORD *)(v6 + 16); *(_DWORD *)(result + 20) = *(_DWORD *)(v6 + 20); *(_DWORD *)(v2 + 4) += 24; return result; } } *(_DWORD *)(v2 + 4) += 24; return result; } //----- (00621010) -------------------------------------------------------- int __thiscall sub_621010(void *this, int a2) { int v2; // edi@1 unsigned int v3; // eax@1 int i; // esi@5 int v5; // eax@6 void *v6; // esi@9 signed int v7; // edx@9 unsigned int v8; // ebx@9 int v9; // ecx@10 int v10; // edi@10 int v11; // eax@12 int v13; // [sp-4h] [bp-28h]@2 void *v14; // [sp+14h] [bp-10h]@1 v14 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; dword_750AB8[dword_750CB8++] = -1; *(_BYTE *)a2 = 0; v2 = sub_611F40((int)&dword_14D41B48, 2); v3 = 0; if ( v2 > 0 ) { if ( !(dword_14D41D88 & 1) ) { dword_14D41D88 |= 1u; dword_14D41D78 = 0; dword_14D41D7C = 0; dword_14D41D80 = 0; atexit(sub_69D400); v3 = 0; } sub_620E90((int)&dword_14D41D78, v3); for ( i = 0; i < v2; ++i ) { v5 = sub_611F70((int)&dword_14D41B48, 2, i); if ( v5 ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 248))( v5, &dword_14D41D78, *((_DWORD *)v14 + 6)); } sub_61FBC0(dword_14D41D78, dword_14D41D7C, (dword_14D41D7C - (signed int)dword_14D41D78) / 24); v6 = dword_14D41D78; v7 = (signed int)((unsigned __int64)(715827883i64 * (dword_14D41D7C - (signed int)dword_14D41D78)) >> 32) >> 2; v8 = 0; if ( v7 + ((unsigned int)v7 >> 31) ) { v9 = a2 + 9; v10 = -9 - a2; do { if ( v8 >= 0x32 ) break; v11 = (int)((char *)v6 + v10 + v9); *(_DWORD *)(v9 - 8) = *(_DWORD *)((char *)v6 + v10 + v9); *(_DWORD *)(v9 - 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)v9 = *(_DWORD *)(v11 + 8); *(_DWORD *)(v9 + 4) = *(_DWORD *)(v11 + 12); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v11 + 16); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v11 + 20); v6 = dword_14D41D78; ++v8; v9 += 24; } while ( v8 < (dword_14D41D7C - (signed int)dword_14D41D78) / 24 ); } *(_BYTE *)a2 = v8; v13 = (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; } else { v13 = (int)"SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v13); } // 61FBC0: using guessed type _DWORD __cdecl sub_61FBC0(_DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D41D7C: using guessed type int dword_14D41D7C; // 14D41D80: using guessed type int dword_14D41D80; // 14D41D88: using guessed type int dword_14D41D88; //----- (00621200) -------------------------------------------------------- int __thiscall sub_621200(void *this, int a2, int a3) { int v3; // esi@1 int v4; // eax@3 int v5; // eax@4 int v6; // edx@4 int v7; // ecx@4 int v8; // edx@4 int v9; // eax@4 int v10; // ecx@4 int v12; // [sp+10h] [bp-28h]@3 int v13; // [sp+14h] [bp-24h]@3 int v14; // [sp+18h] [bp-20h]@3 int v15; // [sp+1Ch] [bp-1Ch]@3 int v16; // [sp+20h] [bp-18h]@3 int v17; // [sp+24h] [bp-14h]@4 unsigned int v18; // [sp+28h] [bp-10h]@1 int v19; // [sp+34h] [bp-4h]@1 int v20; // [sp+38h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_WinRank"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SMS_WinRank"; dword_750AB8[dword_750CB8++] = -1; v19 = 0; if ( a3 == *(_DWORD *)(v3 + 24) ) { v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v4 = sub_611720(v3, 0); if ( v4 ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1388))(v4); v6 = *(_DWORD *)(v5 + 4); v12 = *(_DWORD *)v5; v7 = *(_DWORD *)(v5 + 8); v13 = v6; v8 = *(_DWORD *)(v5 + 12); v9 = *(_DWORD *)(v5 + 16); v14 = v7; v10 = *(_DWORD *)(v3 + 48); v15 = v8; v17 = v10; v16 = v9; sub_620F50(a2, (unsigned int)&v12); } --dword_750CB8; } else { --dword_750CB8; } v19 = -1; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_WinRank"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00621310) -------------------------------------------------------- void __thiscall sub_621310(void *this) { int v1; // esi@1 const void **v2; // ebx@1 void *v3; // ecx@2 int v4; // edx@5 unsigned int v5; // eax@5 int v6; // eax@7 int v7; // esi@10 unsigned int v8; // eax@11 unsigned int v9; // edx@12 int v10; // ebx@12 int v11; // ecx@13 char *v12; // edi@13 int v13; // eax@14 int v14; // eax@15 unsigned int v15; // ecx@15 size_t v16; // ecx@17 int v17; // edx@24 int v18; // edi@25 int v19; // eax@25 int v20; // eax@26 unsigned int v21; // edx@26 size_t v22; // edx@28 unsigned int v23; // eax@39 unsigned int v24; // edi@39 bool v25; // cf@40 int v26; // eax@42 unsigned int v27; // eax@45 int v28; // eax@48 int v29; // ecx@48 int v30; // eax@51 const char *v31; // eax@54 char *v32; // eax@57 int v33; // edi@59 unsigned int v34; // ecx@59 int v35; // ebx@60 int v36; // esi@61 signed int v37; // edx@61 int v38; // edi@61 signed int v39; // edx@62 int v40; // ecx@62 int v41; // ecx@63 int v42; // eax@63 unsigned int v43; // eax@65 int v44; // ebx@69 int v45; // ecx@71 void *v46; // edi@71 int v47; // esi@74 signed int v48; // edx@75 int v49; // ecx@75 int v50; // ecx@76 int v51; // eax@76 unsigned int v52; // eax@78 void *v53; // eax@83 int v54; // edi@89 int v55; // eax@90 int v56; // edi@93 int v57; // edx@96 const void *v58; // eax@98 void *v59; // ebx@98 signed int v60; // ebx@100 unsigned int v61; // eax@101 void *v62; // edx@102 int v63; // ecx@103 char *v64; // edi@103 int v65; // eax@104 int v66; // eax@105 unsigned int v67; // ecx@105 size_t v68; // ecx@107 int v69; // ecx@112 int v70; // ecx@114 int v71; // eax@115 int v72; // eax@116 unsigned int v73; // ecx@116 size_t v74; // ecx@118 int v75; // eax@123 signed int v76; // [sp+Ch] [bp-1F8h]@10 void *v77; // [sp+10h] [bp-1F4h]@1 signed int v78; // [sp+14h] [bp-1F0h]@9 void *v79; // [sp+18h] [bp-1ECh]@2 int v80; // [sp+18h] [bp-1ECh]@9 int v81; // [sp+18h] [bp-1ECh]@52 signed int v82; // [sp+1Ch] [bp-1E8h]@1 unsigned int v83; // [sp+1Ch] [bp-1E8h]@5 unsigned int v84; // [sp+1Ch] [bp-1E8h]@51 signed int v85; // [sp+1Ch] [bp-1E8h]@100 char v86; // [sp+23h] [bp-1E1h]@11 int (__thiscall **v87)(void *, char); // [sp+24h] [bp-1E0h]@1 int v88; // [sp+58h] [bp-1ACh]@5 int v89; // [sp+64h] [bp-1A0h]@1 __int16 v90; // [sp+68h] [bp-19Ch]@1 int (__thiscall **v91)(void *, char); // [sp+6Ch] [bp-198h]@46 int v92; // [sp+A0h] [bp-164h]@47 char v93[4]; // [sp+ACh] [bp-158h]@46 int v94; // [sp+B0h] [bp-154h]@46 int v95; // [sp+B4h] [bp-150h]@46 int v96; // [sp+B8h] [bp-14Ch]@46 int v97; // [sp+BCh] [bp-148h]@46 int v98; // [sp+C0h] [bp-144h]@46 int v99; // [sp+C4h] [bp-140h]@46 int v100; // [sp+C8h] [bp-13Ch]@46 int v101; // [sp+CCh] [bp-138h]@46 char v102[4]; // [sp+D0h] [bp-134h]@53 int v103; // [sp+D4h] [bp-130h]@53 int v104; // [sp+D8h] [bp-12Ch]@53 int v105; // [sp+DCh] [bp-128h]@53 int v106; // [sp+E0h] [bp-124h]@53 int v107; // [sp+E4h] [bp-120h]@53 int v108; // [sp+E8h] [bp-11Ch]@53 int v109; // [sp+ECh] [bp-118h]@53 int v110; // [sp+F0h] [bp-114h]@59 char v111; // [sp+F4h] [bp-110h]@50 unsigned int v112; // [sp+1F4h] [bp-10h]@1 int v113; // [sp+200h] [bp-4h]@1 int v114; // [sp+204h] [bp+0h]@1 v112 = (unsigned int)&v114 ^ __security_cookie; v1 = (int)this; v77 = this; sub_639920((int)&v87); v87 = &off_7020C4; v89 = 0; v90 = 0; v113 = 0; sub_61A9C0(&v87, "../9Data/Shine/GBSMCardRate.shn"); v2 = (const void **)(v1 + 20); v82 = 9; do { v3 = (void *)*(v2 - 1); v79 = v3; if ( v3 != *v2 ) { memmove_0(v3, *v2, 0); *v2 = v79; } v2 += 4; --v82; } while ( v82 ); v4 = v88; v5 = *(_DWORD *)(v88 + 40); v83 = 0; if ( (signed int)v5 > 0 ) { do { if ( v83 < v5 ) v6 = sub_626BC0((int)&v87, v83); else v6 = (int)&v89; v80 = v6; v78 = 0; if ( *(_WORD *)(v6 + 4) > 0u ) { do { v76 = 0; v7 = (int)((char *)v77 + 20); do { v8 = *(_DWORD *)v7; v86 = *(_BYTE *)v80; if ( (unsigned int)&v86 >= v8 || (v9 = *(_DWORD *)(v7 - 4), v10 = v7 - 4, v9 > (unsigned int)&v86) ) { v17 = *(_DWORD *)(v7 + 4); if ( v8 == v17 ) { v18 = *(_DWORD *)(v7 - 4); v19 = v8 - v18; if ( (unsigned int)v19 > 0xFFFFFFFE ) LABEL_43: sub_65178B((int)"vector too long"); v20 = v19 + 1; v21 = v17 - v18; if ( v20 > v21 ) { if ( -1 - (v21 >> 1) >= v21 ) v22 = (v21 >> 1) + v21; else v22 = 0; if ( v22 < v20 ) v22 = v20; sub_61E2A0(v7 - 4, v22); } } if ( *(_DWORD *)v7 ) **(_BYTE **)v7 = v86; } else { v11 = *(_DWORD *)(v7 + 4); v12 = &v86 - v9; if ( v8 == v11 ) { v13 = v8 - v9; if ( (unsigned int)v13 > 0xFFFFFFFE ) goto LABEL_43; v14 = v13 + 1; v15 = v11 - v9; if ( v14 > v15 ) { if ( -1 - (v15 >> 1) >= v15 ) v16 = (v15 >> 1) + v15; else v16 = 0; if ( v16 < v14 ) v16 = v14; v10 = v7 - 4; sub_61E2A0(v7 - 4, v16); } } if ( *(_DWORD *)v7 ) **(_BYTE **)v7 = v12[*(_DWORD *)v10]; } ++*(_DWORD *)v7; v7 += 16; ++v76; } while ( v76 < 9 ); ++v78; } while ( v78 < *(_WORD *)(v80 + 4) ); } v4 = v88; v5 = *(_DWORD *)(v88 + 40); ++v83; } while ( (signed int)v83 < (signed int)v5 ); v1 = (int)v77; } v23 = *(_DWORD *)(v4 + 40); v24 = 0; if ( (signed int)v23 > 0 ) { v25 = v23 > 0; do { if ( v25 ) v26 = sub_626BC0((int)&v87, v24); else v26 = (int)&v89; ++v24; *(double *)(v1 + 8 * *(_DWORD *)v26 + 168) = (double)*(_WORD *)(v26 + 4) / (double)(unsigned int)(*(_DWORD *)(v1 + 20) - *(_DWORD *)(v1 + 16)); v27 = *(_DWORD *)(v88 + 40); v25 = v24 < v27; } while ( (signed int)v24 < (signed int)v27 ); } sub_61C430((void *)v1); *(_DWORD *)(v1 + 160) = 0; sub_639920((int)&v91); v91 = &off_7020CC; *(_DWORD *)v93 = 0; v94 = 0; v95 = 0; v96 = 0; v97 = 0; v98 = 0; v99 = 0; v100 = 0; v101 = 0; LOBYTE(v113) = 1; if ( !sub_627480(&v91, "../9Data/Shine/GBSMNPC.shn", 18, 36) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/GBSMNPC.shn"); if ( v92 ) { v28 = *(_DWORD *)v92; v29 = *(_DWORD *)v92; } else { v28 = 0; v29 = 0; } sprintf(&v111, "Code:%X:%d\tSHN:%X:%d", 18, 18, v29, v28); sub_639100(&unk_86DDD8, (int)&v111, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v30 = v92 + 40; v84 = 0; if ( *(_DWORD *)(v92 + 40) > 0 ) { v81 = v1 + 240; do { v109 = 0; v108 = 0; v107 = 0; v106 = 0; v105 = 0; v104 = 0; v103 = 0; *(_DWORD *)v102 = 0; if ( v84 < *(_DWORD *)v30 ) v31 = (const char *)sub_626BC0((int)&v91, v84); else v31 = v93; v109 = 0; v108 = 0; v107 = 0; v106 = 0; v105 = 0; v104 = 0; v103 = 0; *(_DWORD *)v102 = 0; strncpy(v102, v31, 0x20u); if ( v84 < *(_DWORD *)(v92 + 40) ) v32 = (char *)sub_626BC0((int)&v91, v84); else v32 = v93; v33 = v81; v34 = *(_DWORD *)(v81 + 4); v110 = *((_DWORD *)v32 + 8); if ( (unsigned int)v102 >= v34 || (v35 = *(_DWORD *)v81, *(_DWORD *)v81 > (unsigned int)v102) ) { v47 = *(_DWORD *)(v81 + 8); if ( v34 == v47 ) { v48 = (signed int)((unsigned __int64)(954437177i64 * (signed int)(v34 - *(_DWORD *)v81)) >> 32) >> 3; v49 = v48 + ((unsigned int)v48 >> 31); if ( v49 > (unsigned int)&unk_71C71C6 ) goto LABEL_43; v50 = v49 + 1; v51 = (v47 - *(_DWORD *)v81) / 36; if ( v50 > (unsigned int)v51 ) { if ( (unsigned int)((char *)&unk_71C71C7 - ((unsigned int)v51 >> 1)) >= v51 ) v52 = ((unsigned int)v51 >> 1) + v51; else v52 = 0; if ( v52 < v50 ) v52 = v50; sub_61FD60(v81, v52); } } v53 = *(void **)(v81 + 4); if ( v53 ) { memcpy(v53, v102, 0x24u); v33 = v81; } *(_DWORD *)(v33 + 4) += 36; } else { v36 = *(_DWORD *)(v81 + 8); v37 = (signed int)((unsigned __int64)(954437177i64 * (signed int)&v102[-v35]) >> 32) >> 3; v38 = v37 + ((unsigned int)v37 >> 31); if ( v34 != v36 ) goto LABEL_129; v39 = (signed int)((unsigned __int64)(954437177i64 * (signed int)(v34 - v35)) >> 32) >> 3; v40 = v39 + ((unsigned int)v39 >> 31); if ( v40 > (unsigned int)&unk_71C71C6 ) goto LABEL_43; v41 = v40 + 1; v42 = (v36 - v35) / 36; if ( v41 <= (unsigned int)v42 ) { LABEL_129: v44 = v81; } else { if ( (unsigned int)((char *)&unk_71C71C7 - ((unsigned int)v42 >> 1)) >= v42 ) v43 = ((unsigned int)v42 >> 1) + v42; else v43 = 0; if ( v43 < v41 ) v43 = v41; v44 = v81; sub_61FD60(v81, v43); } v45 = 9 * v38; v46 = *(void **)(v44 + 4); if ( v46 ) memcpy(v46, (const void *)(*(_DWORD *)v44 + 4 * v45), 0x24u); *(_DWORD *)(v44 + 4) += 36; } v30 = v92 + 40; ++v84; } while ( (signed int)v84 < *(_DWORD *)(v92 + 40) ); v1 = (int)v77; } if ( !sub_627480((void *)(v1 + 256), "../9Data/Shine/GBSMBetCoin.shn", 7, 6) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/GBSMBetCoin.shn"); v54 = *(_DWORD *)(v1 + 308); if ( v54 ) v55 = *(_DWORD *)v54; else v55 = 0; if ( v54 ) v56 = *(_DWORD *)v54; else v56 = 0; sprintf(&v111, "Code:%X:%d\tSHN:%X:%d", 7, 7, v56, v55); sub_639100(&unk_86DDD8, (int)&v111, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v57 = *(_DWORD *)(v1 + 308); if ( *(_DWORD *)(v57 + 40) <= 0 ) { sub_639100( &unk_86DDD8, (int)"SlotMachine::SlotMachineScreenManager::smsm_Load : GBSMBetCoin.shn read fail", *(_DWORD *)(v57 + 40) > 0); loc_6391B0("GBSMBetCoin.shn"); } v58 = *(const void **)(v1 + 4); v59 = *(void **)v1; if ( *(const void **)v1 != v58 ) { memmove_0(v59, v58, 0); *(_DWORD *)(v1 + 4) = v59; } v60 = 0; v85 = 0; do { v61 = *(_DWORD *)(v1 + 4); v86 = v60; if ( (unsigned int)&v86 >= v61 || (v62 = *(void **)v1, *(_DWORD *)v1 > (unsigned int)&v86) ) { v70 = *(_DWORD *)(v1 + 8); if ( v61 == v70 ) { v71 = v61 - *(_DWORD *)v1; if ( (unsigned int)v71 > 0xFFFFFFFE ) goto LABEL_43; v72 = v71 + 1; v73 = v70 - *(_DWORD *)v1; if ( v72 > v73 ) { if ( -1 - (v73 >> 1) >= v73 ) v74 = (v73 >> 1) + v73; else v74 = 0; if ( v74 < v72 ) v74 = v72; sub_61E2A0(v1, v74); } } v75 = *(_DWORD *)(v1 + 4); if ( v75 ) *(_BYTE *)v75 = v60; } else { v63 = *(_DWORD *)(v1 + 8); v64 = (char *)(&v86 - v62); if ( v61 == v63 ) { v65 = v61 - (_DWORD)v62; if ( (unsigned int)v65 > 0xFFFFFFFE ) goto LABEL_43; v66 = v65 + 1; v67 = v63 - (_DWORD)v62; if ( v66 > v67 ) { if ( -1 - (v67 >> 1) >= v67 ) v68 = (v67 >> 1) + v67; else v68 = 0; if ( v68 < v66 ) v68 = v66; sub_61E2A0(v1, v68); v60 = v85; } } v69 = *(_DWORD *)(v1 + 4); if ( v69 ) *(_BYTE *)v69 = v64[*(_DWORD *)v1]; } ++*(_DWORD *)(v1 + 4); ++v60; v85 = v60; } while ( v60 < 9 ); LOBYTE(v113) = 0; v91 = &off_7020CC; sub_639940((int)&v91); v113 = -1; v87 = &off_7020C4; sub_639940((int)&v87); } // 7020C4: using guessed type int (__thiscall *off_7020C4)(void *, char); // 7020CC: using guessed type int (__thiscall *off_7020CC)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00621AF0) -------------------------------------------------------- int __thiscall sub_621AF0(void *this, unsigned int a2, int a3, int a4) { void *v4; // edi@1 signed int v5; // ecx@1 unsigned int v6; // edi@2 int v7; // ecx@2 int v8; // edx@2 int v9; // eax@2 int v10; // ecx@2 int v11; // esi@2 int v12; // edi@2 int v13; // esi@2 signed int v14; // edx@2 int v16; // [sp+10h] [bp-28h]@2 int v17; // [sp+14h] [bp-24h]@2 int v18; // [sp+18h] [bp-20h]@2 int v19; // [sp+1Ch] [bp-1Ch]@2 int v20; // [sp+20h] [bp-18h]@2 int v21; // [sp+24h] [bp-14h]@2 unsigned int v22; // [sp+28h] [bp-10h]@1 int v23; // [sp+34h] [bp-4h]@1 int v24; // [sp+38h] [bp+0h]@1 v22 = (unsigned int)&v24 ^ __security_cookie; v4 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"; dword_750AB8[dword_750CB8++] = -1; v5 = *((_DWORD *)v4 + 2) - *((_DWORD *)v4 + 1); v23 = 0; if ( a2 < v5 / 20 ) { v6 = *((_DWORD *)v4 + 1) + 20 * a2; v7 = *(_DWORD *)(a3 + 4); v8 = *(_DWORD *)(a3 + 8); v16 = *(_DWORD *)a3; v9 = *(_DWORD *)(a3 + 12); v17 = v7; v10 = *(_DWORD *)(a3 + 16); v19 = v9; v18 = v8; v20 = v10; v11 = v6 + 4; v21 = a4; sub_620F50(v6 + 4, (unsigned int)&v16); v12 = *(_DWORD *)(v6 + 8); v13 = *(_DWORD *)v11; v14 = (signed int)((unsigned __int64)(715827883i64 * (v12 - v13)) >> 32) >> 2; sub_61FBC0(v13, v12, v14 + ((unsigned int)v14 >> 31)); } --dword_750CB8; v23 = -1; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"); } // 61FBC0: using guessed type _DWORD __cdecl sub_61FBC0(_DWORD, _DWORD, _DWORD); // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00621C20) -------------------------------------------------------- int __thiscall sub_621C20(void *this, int a2) { void *v2; // edi@1 int v3; // eax@5 int v4; // edi@5 int v5; // ebx@6 v2 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"; dword_750AB8[dword_750CB8++] = -1; if ( *(_WORD *)(a2 + 1) != 10560 ) { sub_639100( &unk_86DDD8, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet : Error occur", *(_WORD *)(a2 + 1)); loc_6391B0("SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); } if ( *(_BYTE *)a2 >= (unsigned int)((*((_DWORD *)v2 + 2) - *((_DWORD *)v2 + 1)) / 20) ) { sub_639100( &unk_86DDD8, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet : Invalid Machine", *(_BYTE *)a2); loc_6391B0("SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); } v3 = *((_DWORD *)v2 + 1) + 20 * *(_BYTE *)a2; *(_DWORD *)v3 = *(_DWORD *)(a2 + 3); v4 = 0; if ( *(_BYTE *)(a2 + 7) ) { v5 = v3 + 4; do sub_620F50(v5, a2 + 24 * (unsigned __int16)v4++ + 8); while ( (unsigned __int16)v4 < *(_BYTE *)(a2 + 7) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00621D70) -------------------------------------------------------- int __thiscall sub_621D70(void *this, int a2, int a3) { void *v3; // esi@1 void *v4; // esi@1 signed int v5; // edi@1 v3 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_SMC_WinRank"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineCluster::go_SMC_WinRank"; dword_750AB8[dword_750CB8++] = -1; v4 = (char *)v3 + 24; v5 = 2; do { sub_621200(v4, a2, a3); v4 = (char *)v4 + 80; --v5; } while ( v5 ); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineCluster::go_SMC_WinRank"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00621E30) -------------------------------------------------------- signed int __userpurge sub_621E30(int a1, int a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 int v8; // eax@3 int v9; // edx@3 __int16 v10; // ax@3 int v11; // eax@3 unsigned __int8 v12; // dl@3 signed int v13; // edi@3 unsigned __int8 v14; // dl@7 unsigned __int8 v15; // dl@11 unsigned __int8 v16; // dl@15 int v17; // edx@19 int v18; // eax@20 int v19; // ecx@21 bool v20; // zf@21 char v21; // cl@21 int v22; // eax@24 int v23; // ecx@25 int v24; // eax@27 int v25; // eax@30 int v26; // eax@33 int v27; // eax@36 int v28; // eax@39 int v29; // eax@42 int v30; // eax@45 char v31; // al@49 unsigned __int16 *v32; // eax@51 int v33; // edi@55 int v34; // edi@58 int (__thiscall *v35)(_DWORD, _DWORD); // eax@58 int v36; // eax@58 int v37; // eax@58 unsigned __int16 v38; // ax@59 int v39; // eax@59 __int16 **v40; // edi@59 unsigned __int16 v41; // ST10_2@61 void *v42; // eax@61 int v43; // ST10_4@61 char *v44; // eax@61 void *v45; // edi@61 int v46; // eax@61 int v47; // eax@61 int v48; // eax@61 int v49; // eax@61 int v50; // edi@61 int v51; // eax@63 int v52; // eax@64 unsigned int v53; // edi@66 int (__thiscall *v54)(_DWORD); // eax@66 void *v55; // edi@67 int v56; // eax@67 signed int v57; // eax@67 int v58; // eax@67 int v59; // edx@67 int v60; // eax@69 int v61; // eax@71 int v62; // eax@71 int v63; // eax@71 int v64; // ecx@71 int v65; // eax@72 int v66; // eax@72 int v67; // eax@73 int v68; // eax@78 _UNKNOWN *v69; // [sp-18h] [bp-2440h]@74 __int64 v70; // [sp-14h] [bp-243Ch]@1 signed int v71; // [sp-14h] [bp-243Ch]@74 int v72; // [sp-Ch] [bp-2434h]@1 int v73; // [sp-8h] [bp-2430h]@1 char v74; // [sp+0h] [bp-2428h]@61 int v75; // [sp+2000h] [bp-428h]@1 int v76; // [sp+2004h] [bp-424h]@1 int v77; // [sp+2008h] [bp-420h]@71 int v78; // [sp+200Ch] [bp-41Ch]@19 int v79; // [sp+2010h] [bp-418h]@55 unsigned int v80; // [sp+2014h] [bp-414h]@3 char v81; // [sp+201Bh] [bp-40Dh]@19 char v82; // [sp+201Ch] [bp-40Ch]@61 char v83; // [sp+239Ch] [bp-8Ch]@61 int v84; // [sp+240Ch] [bp-1Ch]@3 int v85; // [sp+2410h] [bp-18h]@3 __int16 v86; // [sp+2414h] [bp-14h]@3 char v87; // [sp+2416h] [bp-12h]@3 unsigned int v88; // [sp+2418h] [bp-10h]@1 int v89; // [sp+2424h] [bp-4h]@1 int v90; // [sp+2428h] [bp+0h]@1 v88 = (unsigned int)&v90 ^ __security_cookie; v73 = a4; v72 = a3; HIDWORD(v70) = (unsigned int)&v90 ^ __security_cookie; v6 = a1; v76 = a6; v75 = (int)"SlotMachine::SlotMachineScreen::SMS_StopButton"; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_StopButton"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineScreen::SMS_StopButton"; dword_750AB8[dword_750CB8++] = -1; v89 = 0; if ( *(_DWORD *)(v6 + 32) != 1 ) { --dword_750CB8; v89 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_StopButton"); return 10451; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a5 + 2904))(a5); sub_61F310(&unk_14D41E50, (int)&v84, *(_DWORD *)(v6 + 24), *(_WORD *)(v6 + 28), v6 + 52, v8); v9 = v85; *(_DWORD *)(v6 + 56) = v84; v10 = v86; *(_DWORD *)(v6 + 60) = v9; LOBYTE(v9) = v87; *(_WORD *)(v6 + 64) = v10; v11 = 0; *(_BYTE *)(v6 + 66) = v9; *(_DWORD *)(v6 + 67) = 0; *(_DWORD *)(v6 + 71) = 0; *(_WORD *)(v6 + 75) = 0; v12 = *(_BYTE *)(v6 + 52); v13 = 0; v80 = 0; if ( v12 & 7 ) { v13 = 1; v11 = v12 & 7; } if ( v12 & 0x38 ) { ++v13; v11 += ((unsigned int)v12 >> 3) & 7; } v14 = *(_BYTE *)(v6 + 53); if ( v14 & 7 ) { ++v13; v11 += v14 & 7; v14 = *(_BYTE *)(v6 + 53); } if ( v14 & 0x38 ) { ++v13; v11 += ((unsigned int)v14 >> 3) & 7; } v15 = *(_BYTE *)(v6 + 54); if ( v15 & 7 ) { ++v13; v11 += v15 & 7; v15 = *(_BYTE *)(v6 + 54); } if ( v15 & 0x38 ) { ++v13; v11 += ((unsigned int)v15 >> 3) & 7; } v16 = *(_BYTE *)(v6 + 55); if ( v16 & 7 ) { ++v13; v11 += v16 & 7; v16 = *(_BYTE *)(v6 + 55); } if ( v16 & 0x38 ) { ++v13; v11 += ((unsigned int)v16 >> 3) & 7; } v17 = *(_WORD *)(v6 + 28); *(_BYTE *)(v6 + 76) &= 0xF8u; v78 = v11 * v17; *(_BYTE *)(v6 + 75) = 0; v81 = 0; if ( v13 == 8 && (v18 = sub_61E7F0(&unk_14D41D90, v6 + 56)) != 0 ) { v19 = v78 * *(_WORD *)(v18 + 2); *(_BYTE *)(v6 + 76) |= 1u; v20 = *(_BYTE *)(v18 + 4) == 0; v80 = v19; v21 = *(_BYTE *)(v6 + 76); v81 = 1; if ( !v20 ) *(_BYTE *)(v6 + 76) = v21 | 4; } else { if ( *(_BYTE *)(v6 + 53) & 7 ) { v22 = sub_61F220(v6 + 56, 2, 0, 0, 1); if ( v22 > 0 ) { v23 = v22 * *(_WORD *)(v6 + 28) * (*(_BYTE *)(v6 + 53) & 7); *(_BYTE *)(v6 + 75) |= 4u; v81 = 1; v80 = v23; } } if ( *(_BYTE *)(v6 + 52) & 0x38 ) { v24 = sub_61F220(v6 + 56, 1, 0, 0, 1); if ( v24 > 0 ) { v80 += v24 * *(_WORD *)(v6 + 28) * (((unsigned int)*(_BYTE *)(v6 + 52) >> 3) & 7); *(_BYTE *)(v6 + 75) |= 2u; v81 = 1; } } if ( *(_BYTE *)(v6 + 52) & 7 ) { v25 = sub_61F220(v6 + 56, 0, 0, 0, 1); if ( v25 > 0 ) { v80 += v25 * *(_WORD *)(v6 + 28) * (*(_BYTE *)(v6 + 52) & 7); *(_BYTE *)(v6 + 75) |= 1u; v81 = 1; } } if ( *(_BYTE *)(v6 + 53) & 0x38 ) { v26 = sub_61F220(v6 + 56, 0, 0, 1, 0); if ( v26 > 0 ) { v80 += v26 * *(_WORD *)(v6 + 28) * (((unsigned int)*(_BYTE *)(v6 + 53) >> 3) & 7); *(_BYTE *)(v6 + 75) |= 8u; v81 = 1; } } if ( *(_BYTE *)(v6 + 54) & 7 ) { v27 = sub_61F220(v6 + 56, 0, 1, 1, 0); if ( v27 > 0 ) { v80 += v27 * *(_WORD *)(v6 + 28) * (*(_BYTE *)(v6 + 54) & 7); *(_BYTE *)(v6 + 75) |= 0x10u; v81 = 1; } } if ( *(_BYTE *)(v6 + 54) & 0x38 ) { v28 = sub_61F220(v6 + 56, 0, 2, 1, 0); if ( v28 > 0 ) { v80 += v28 * *(_WORD *)(v6 + 28) * (((unsigned int)*(_BYTE *)(v6 + 54) >> 3) & 7); *(_BYTE *)(v6 + 75) |= 0x20u; v81 = 1; } } if ( *(_BYTE *)(v6 + 55) & 7 ) { v29 = sub_61F220(v6 + 56, 0, 0, 1, 1); if ( v29 > 0 ) { v80 += v29 * *(_WORD *)(v6 + 28) * (*(_BYTE *)(v6 + 55) & 7); *(_BYTE *)(v6 + 75) |= 0x40u; v81 = 1; } } if ( *(_BYTE *)(v6 + 55) & 0x38 ) { v30 = sub_61F220(v6 + 56, 0, 2, 1, -1); if ( v30 > 0 ) { v80 += v30 * *(_WORD *)(v6 + 28) * (((unsigned int)*(_BYTE *)(v6 + 55) >> 3) & 7); *(_BYTE *)(v6 + 75) |= 0x80u; v81 = 1; } } } if ( (*(_BYTE *)(v6 + 52) & 0x38 || *(_BYTE *)(v6 + 54) & 7 || (v31 = *(_BYTE *)(v6 + 55), v31 & 7) || v31 & 0x38) && (v32 = sub_61E9C0(&unk_14D41D90, v6 + 56)) != 0 ) { v80 += v78 * *(unsigned __int16 *)((char *)v32 + 1); *(_BYTE *)(v6 + 76) |= 2u; } else { if ( !v81 ) goto LABEL_55; } ++*(_DWORD *)(v6 + 48); LABEL_55: v33 = dword_14D41FBC; v20 = *(_DWORD *)(dword_14D41FBC + 6) == 1; v79 = dword_14D41FBC; if ( v20 ) sub_61CBE0(&unk_14D41F98, *(_DWORD *)(v6 + 24), v78); if ( *(_BYTE *)(v6 + 76) & 4 ) { v34 = sub_61CAE0(&unk_14D41F98, *(_DWORD *)(v6 + 24), v33) + v80; v35 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a5 + 1388); v80 = v34; v36 = v35(a5, v34); sub_621AF0(&unk_14D41F98, *(_DWORD *)(v6 + 24), v36, SHIDWORD(v70)); v70 = v34; (*(void (__thiscall **)(int, int))(*(_DWORD *)a5 + 2900))(a5, v34); v37 = sub_61D340((int)&dword_14D41B28, 26, 0); if ( v37 ) { v38 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v37 + 8)); v39 = sub_418CB0((int)&dword_14D20890, v38); v40 = (__int16 **)v39; if ( v39 ) { if ( *(_DWORD *)v39 ) { memmove(&v74, off_849C18, 0x2000u); v41 = **v40; LOBYTE(v89) = 1; v42 = sub_63ACA0(dword_1508B168, v41); (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD))(*(_DWORD *)v42 + 20))( v42, (unsigned __int16)**v40, &v83, "-o"); v43 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v44 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v83, **v40, 11, *((_DWORD *)v44 + 4), v43); v45 = off_849C18; *(_WORD *)off_849C18 = 13389; *((_WORD *)v45 + 1) = sub_4802C0(a5); *((_DWORD *)v45 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)a5 + 836))(a5); *((_DWORD *)v45 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)a5 + 836))(a5); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)a5 + 2004))(a5); *((_WORD *)v45 + 6) = sub_4802C0(v46); v47 = sub_4012C0(a5); v48 = (int)sub_5CF620((void *)v47); v49 = sub_418B00((int)byte_85A2C0, v48); *((_WORD *)v45 + 7) = sub_419100((int)&unk_14D20370, (unsigned __int8 *)v49); *((_DWORD *)v45 + 4) = 0; *((_DWORD *)v45 + 5) = 0; sub_593350(&v82, 2); LOBYTE(v89) = 2; sub_5933D0(&v82, (int)&v83); v50 = sub_593520(&v82, (int)((char *)v45 + 24), 0, 0, 2) + 25; if ( sub_4C81E0(&off_849C18, v50) ) { v51 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v51); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v50); } v52 = (*(int (__thiscall **)(int))(*(_DWORD *)a5 + 2004))(a5); sub_43BBF0(v52); LOBYTE(v89) = 1; nullsub_2(&v82); LOBYTE(v89) = 0; memmove(off_849C18, &v74, 0x2000u); } } } v33 = v79; } v53 = v80 - (((signed int)((unsigned __int64)((signed int)(v80 * *(_WORD *)(v33 + 4)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v80 * *(_WORD *)(v33 + 4)) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31)); *(_WORD *)(v6 + 69) = v78; *(_DWORD *)(v6 + 71) = v53; v54 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)a5 + 2004); v80 = v53; if ( v54(a5) ) { v55 = off_849C18; *(_WORD *)off_849C18 = -17197; *((_DWORD *)v55 + 1) = (*(int (__thiscall **)(int, _DWORD, int, int, int))(*(_DWORD *)a5 + 836))( a5, HIDWORD(v70), v72, v73, a2); *((_WORD *)v55 + 1) = sub_4802C0(a5); v56 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a5 + 2004))(a5); *((_WORD *)v55 + 4) = sub_4802C0(v56); *(_DWORD *)((char *)v55 + 10) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a5 + 836))(a5); *((_BYTE *)v55 + 14) = *(_BYTE *)(v6 + 64) + (*(_BYTE *)(v6 + 64) > 9u ? 65 : 48); *((_BYTE *)v55 + 15) = *(_BYTE *)(v6 + 65) + (*(_BYTE *)(v6 + 65) > 9u ? 65 : 48); *((_BYTE *)v55 + 16) = *(_BYTE *)(v6 + 66) + (*(_BYTE *)(v6 + 66) > 9u ? 65 : 48); *((_BYTE *)v55 + 17) = *(_BYTE *)(v6 + 61) + (*(_BYTE *)(v6 + 61) > 9u ? 65 : 48); *((_BYTE *)v55 + 18) = *(_BYTE *)(v6 + 62) + (*(_BYTE *)(v6 + 62) > 9u ? 65 : 48); *((_BYTE *)v55 + 19) = *(_BYTE *)(v6 + 63) + (*(_BYTE *)(v6 + 63) > 9u ? 65 : 48); *((_BYTE *)v55 + 20) = *(_BYTE *)(v6 + 58) + (*(_BYTE *)(v6 + 58) > 9u ? 65 : 48); *((_BYTE *)v55 + 21) = *(_BYTE *)(v6 + 59) + (*(_BYTE *)(v6 + 59) > 9u ? 65 : 48); v57 = v78; *((_BYTE *)v55 + 22) = *(_BYTE *)(v6 + 60) + (*(_BYTE *)(v6 + 60) > 9u ? 65 : 48); *((_BYTE *)v55 + 23) = 0; *((_BYTE *)v55 + 31) = v57 / *(_WORD *)(v6 + 28); v58 = v80; *(_WORD *)((char *)v55 + 29) = *(_WORD *)(v6 + 28); v59 = v79; *(_DWORD *)((char *)v55 + 34) = v58; *((_BYTE *)v55 + 24) = (*(_BYTE *)(v6 + 76) >> 2) & 1; *((_WORD *)v55 + 16) = *(_WORD *)(v59 + 10); *(_DWORD *)((char *)v55 + 25) = sub_61CC70(&unk_14D41F98, *(_DWORD *)(v6 + 24)); if ( sub_4C81E0(&off_849C18, 38) ) { v60 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v60); } else { sub_639100(&unk_86DDD8, (int)"SlotMachine::SlotMachineScreen::SMS_WheelStop : Packet Too Long", 38); } if ( ((v80 - v78) & 0x80000000u) == 0 ) { v65 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)a5 + 2004))(a5, *(_DWORD *)&v74); v77 = v65; v79 = *(_DWORD *)v65; *(_DWORD *)&v74 = 0; v66 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a5 + 2004))(a5); sub_4802C0(v66); v64 = v77; v63 = v79; } else { v61 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)a5 + 2004))(a5, *(_DWORD *)&v74); v77 = v61; v79 = *(_DWORD *)v61; *(_DWORD *)&v74 = 0; v62 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a5 + 2004))(a5); sub_4802C0(v62); v63 = v79; v64 = v77; } (*(void (__thiscall **)(int))(v63 + 112))(v64); v67 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a5 + 2004))(a5); sub_43BBF0(v67); if ( (signed int)v80 <= v78 ) { if ( (signed int)v80 >= v78 ) { LABEL_78: v68 = v76; *(_DWORD *)v76 = *(_DWORD *)(v6 + 56); *(_DWORD *)(v68 + 4) = *(_DWORD *)(v6 + 60); *(_WORD *)(v68 + 8) = *(_WORD *)(v6 + 64); *(_BYTE *)(v68 + 10) = *(_BYTE *)(v6 + 66); *(_DWORD *)(v6 + 32) = 2; --dword_750CB8; v89 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_StopButton"); return 10450; } v71 = 3; v69 = &unk_86D47C; } else { v71 = 3; v69 = &unk_86D488; } (*(void (__thiscall **)(int, int, signed int, _UNKNOWN *, signed int))(*(_DWORD *)v6 + 48))(v6, a5, 26, v69, v71); goto LABEL_78; } --dword_750CB8; v89 = -1; sub_467660((int)&unk_D020420, (int)"SlotMachine::SlotMachineScreen::SMS_StopButton"); return 10454; } // 621E30: could not find valid save-restore pair for ebx // 621E30: could not find valid save-restore pair for edi // 621E30: could not find valid save-restore pair for esi // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D41B28: using guessed type int dword_14D41B28; // 14D41FBC: using guessed type int dword_14D41FBC; //----- (00622820) -------------------------------------------------------- int __stdcall sub_622820(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK"; dword_750AB8[dword_750CB8++] = -1; sub_621C20(&unk_14D41F98, a1 + 2); --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006228D0) -------------------------------------------------------- int __cdecl sub_6228D0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+10h] [bp-14h]@1 int *v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v8 = &v6; v3 = a3; v4 = a1; v7 = a3; v9 = 0; while ( v4 != a2 ) { LOBYTE(v9) = 1; if ( v3 ) { *(_DWORD *)v3 = *(_DWORD *)v4; sub_61FF80(v3 + 4, v4 + 4); } v3 += 20; LOBYTE(v9) = 0; v4 += 20; } return v3; } //----- (00622980) -------------------------------------------------------- int __cdecl sub_622980(int a1, unsigned int a2) { int result; // eax@1 int v3; // esi@1 unsigned int v4; // edi@1 int v5; // [sp+0h] [bp-38h]@1 int v6; // [sp+10h] [bp-28h]@4 int v7; // [sp+14h] [bp-24h]@3 int v8; // [sp+18h] [bp-20h]@3 int v9; // [sp+1Ch] [bp-1Ch]@3 int v10; // [sp+24h] [bp-14h]@1 int *v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-Ch]@1 int v13; // [sp+34h] [bp-4h]@1 result = (int)&v12; v11 = &v5; v3 = a1; v4 = a2; v10 = a1; v13 = 0; while ( v4 > 0 ) { v7 = 0; v8 = 0; v9 = 0; LOBYTE(v13) = 2; if ( v3 ) { *(_DWORD *)v3 = v6; result = sub_61FF80(v3 + 4, (int)&v7); } --v4; v3 += 20; LOBYTE(v13) = 0; } return result; } //----- (00622A30) -------------------------------------------------------- int __thiscall sub_622A30(int this, int a2, int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // ebx@2 int v8; // [sp+8h] [bp-4h]@1 result = a2; v5 = a4; v6 = a3; v8 = this; *(_DWORD *)a2 = a3; if ( a3 != a4 ) { v7 = *(_DWORD *)(this + 4); if ( a4 != v7 ) { do { *(_DWORD *)v6 = *(_DWORD *)v5; sub_620200(v6 + 4, v5 + 4); v5 += 20; v6 += 20; } while ( v5 != v7 ); this = v8; } sub_492FC0(v6, *(_DWORD *)(this + 4)); result = a2; *(_DWORD *)(v8 + 4) = v6; } return result; } //----- (00622A90) -------------------------------------------------------- int __thiscall sub_622A90(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 int v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // [sp+0h] [bp-24h]@1 int v10; // [sp+10h] [bp-14h]@4 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v11 = &v9; v2 = this; if ( a2 > (unsigned int)&unk_CCCCCCC ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( result < a2 ) { v4 = sub_445710(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(_DWORD *)v2; v10 = v4; v12 = 0; sub_6228D0(v6, v5, v4); v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) { sub_492FC0(*(_DWORD *)v2, *(_DWORD *)(v2 + 4)); operator delete(*(void **)v2); } result = v10; *(_DWORD *)(v2 + 8) = v10 + 20 * a2; *(_DWORD *)(v2 + 4) = result + 20 * v8; *(_DWORD *)v2 = result; } return result; } //----- (00622B7B) -------------------------------------------------------- void __usercall sub_622B7B(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00622BA0) -------------------------------------------------------- int __thiscall sub_622BA0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 20; if ( (unsigned int)((char *)&unk_CCCCCCC - a2) < v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 20; if ( v3 > (unsigned int)result ) { if ( (unsigned int)((char *)&unk_CCCCCCC - ((unsigned int)result >> 1)) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_622A90(this, v5); } return result; } //----- (00622C20) -------------------------------------------------------- int __thiscall sub_622C20(int this, unsigned int a2) { int v2; // esi@1 int v3; // ebx@1 signed int v4; // ecx@1 unsigned int v5; // edi@1 int result; // eax@1 v2 = this; v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(this + 4) - *(_DWORD *)this; v5 = a2; result = v4 / 20; if ( v4 / 20 <= a2 ) { if ( v4 / 20 < a2 ) { sub_622BA0(v2, a2 - result); sub_622980(*(_DWORD *)(v2 + 4), v5 - (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20); result = (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 20; *(_DWORD *)(v2 + 4) += 20 * (v5 - result); } } else { result = sub_622A30(v2, (int)&a2, *(_DWORD *)v2 + 20 * a2, v3); } return result; } //----- (00622CD0) -------------------------------------------------------- int __thiscall sub_622CD0(void *this) { void *v1; // edi@1 void *v2; // esi@3 unsigned __int8 v3; // al@4 int v4; // esi@5 int v5; // eax@7 int v6; // esi@8 signed int v7; // ecx@8 int v8; // eax@9 int v9; // edi@9 int v17; // [sp-4h] [bp-28h]@2 v1 = this; sub_4675D0((int)&unk_D020420, (int)"SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"); dword_7508B8[dword_750CB8] = (int)"SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; dword_750AB8[dword_750CB8++] = -1; if ( *(_BYTE *)v1 ) { --dword_750CB8; v17 = (int)"SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; } else { *(_BYTE *)v1 = 1; v2 = off_849C18; *(_WORD *)off_849C18 = -17195; *((_BYTE *)v2 + 2) = 0; do { *((_BYTE *)v2 + 2 * *((_BYTE *)v2 + 2) + *((_BYTE *)v2 + 2) + 3) = *((_BYTE *)v2 + 2); *(_WORD *)((char *)v2 + 2 * *((_BYTE *)v2 + 2) + *((_BYTE *)v2 + 2) + 4) = sub_61C660( &unk_14D41E50, *((_BYTE *)v2 + 2)); ++*((_BYTE *)v2 + 2); v3 = *((_BYTE *)v2 + 2); } while ( v3 < 3u ); v4 = 3 * v3 + 3; if ( sub_4C81E0(&off_849C18, 3 * v3 + 3) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"SlotMachine::SlotMachineJackPotRanking::smjpr_RankingReq : Packet Too Long", v4); } v6 = (int)((char *)v1 + 4); sub_622C20((int)((char *)v1 + 4), 3u); v7 = 0; do { *(_DWORD *)(v7 + *(_DWORD *)v6) = 0; v8 = *(_DWORD *)(*(_DWORD *)v6 + v7 + 4); v9 = *(_DWORD *)v6 + v7 + 4; if ( v8 != *(_DWORD *)(*(_DWORD *)v6 + v7 + 8) ) *(_DWORD *)(v9 + 4) = v8; v7 += 20; } while ( v7 < 60 ); --dword_750CB8; v17 = (int)"SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; } return sub_467660((int)&unk_D020420, v17); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00622EA0) -------------------------------------------------------- int __thiscall sub_622EA0(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 45) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00622F00) -------------------------------------------------------- int __thiscall sub_622F00(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 45) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00622F60) -------------------------------------------------------- int __thiscall sub_622F60(int this, int a2) { int v2; // ecx@1 int v3; // eax@1 int result; // eax@6 v2 = *(_DWORD *)(this + 20); v3 = *(_DWORD *)(v2 + 4); while ( !*(_BYTE *)(v3 + 45) ) { if ( *(_DWORD *)(v3 + 12) >= a2 ) { v2 = v3; v3 = *(_DWORD *)v3; } else { v3 = *(_DWORD *)(v3 + 8); } } result = v2 + 16; if ( *(_DWORD *)(v2 + 36) >= 0x10u ) result = *(_DWORD *)result; return result; } //----- (00622FD0) -------------------------------------------------------- bool __thiscall sub_622FD0(void *this) { unsigned __int16 v1; // ax@2 __int16 v2; // di@2 int v3; // eax@2 FILE *v4; // eax@2 int v5; // eax@3 int v6; // esi@4 int v7; // esi@10 int v8; // eax@10 bool result; // al@11 unsigned int v10; // [sp-4h] [bp-138h]@1 int v11; // [sp+8h] [bp-12Ch]@10 int v12; // [sp+10h] [bp-124h]@3 __int16 v13; // [sp+14h] [bp-120h]@10 int v14; // [sp+18h] [bp-11Ch]@10 void *v15; // [sp+1Ch] [bp-118h]@1 char v16; // [sp+20h] [bp-114h]@1 char v17; // [sp+24h] [bp-110h]@2 unsigned int v18; // [sp+124h] [bp-10h]@1 int v19; // [sp+130h] [bp-4h]@3 int v20; // [sp+134h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v10 = (unsigned int)&v20 ^ __security_cookie; v15 = this; sub_4A7850((int)&v16); do { v1 = sub_4A7880((int)&unk_14D159B0, (unsigned int *)&v16); v2 = v1; v3 = sub_418D40((int)&unk_14D159B0, v1); sprintf(&v17, "../9Data/Shine/LuaScript/AIScript/%s.lua", *(_DWORD *)v3 + 2, v10); v4 = fopen(&v17, "r"); if ( v4 ) { fclose(v4); v5 = operator new(8u); v12 = v5; v19 = 0; if ( v5 ) v6 = sub_5D5450(v5); else v6 = 0; v19 = -1; if ( sub_5D4280(v6, &v17) ) { v14 = v6; v7 = (int)v15; v13 = v2; v8 = sub_5C5AB0(v15, (int)&v13); sub_4240B0(v7, (int)&v11, (void *)v8, 0); } else { sub_6390B0(&unk_86DDD8, (int)"AIScriptMobContainer::aismc_Load : AIScript load error", (int)&v17); if ( v6 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v6)(v6, 1); loc_6391B0("AIScriptMobContainer::aismc_Load"); } } result = sub_4A7860((int)&unk_14D159B0, (int)&v16); } while ( result ); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00623150) -------------------------------------------------------- FILE *__thiscall sub_623150(void *this) { int v1; // ebx@1 signed int v2; // edi@1 int v3; // ecx@2 int v4; // eax@2 int v5; // eax@7 FILE *result; // eax@9 int v7; // esi@9 int v8; // eax@10 int v9; // eax@16 unsigned int v10; // [sp-4h] [bp-134h]@1 int v11; // [sp+Ch] [bp-124h]@16 int v12; // [sp+14h] [bp-11Ch]@10 int v13; // [sp+18h] [bp-118h]@16 int v14; // [sp+1Ch] [bp-114h]@16 char v15; // [sp+20h] [bp-110h]@9 unsigned int v16; // [sp+120h] [bp-10h]@1 int v17; // [sp+12Ch] [bp-4h]@10 int v18; // [sp+130h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v10 = (unsigned int)&v18 ^ __security_cookie; v1 = (int)this; v2 = 0; do { v3 = *(_DWORD *)(v1 + 20); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 45) ) { if ( *(_DWORD *)(v4 + 12) >= v2 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } v5 = v3 + 16; if ( *(_DWORD *)(v3 + 36) >= 0x10u ) v5 = *(_DWORD *)v5; sprintf(&v15, "../9Data/Shine/LuaScript/PetSystem/%s.lua", v5, v10); result = fopen(&v15, "r"); v7 = 0; if ( result ) { fclose(result); v8 = operator new(8u); v12 = v8; v17 = 0; if ( v8 ) v7 = sub_5D5450(v8); v17 = -1; if ( sub_5D4280(v7, &v15) ) { v13 = v2; v14 = v7; v9 = sub_440B50((void *)v1, (int)&v13); result = (FILE *)sub_4409A0(v1, (int)&v11, (void *)v9, 0); } else { sub_6390B0(&unk_86DDD8, (int)"AIScriptPetContainer::aispc_Load : AIScript load error", (int)&v15); if ( v7 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v7)(v7, 1); result = (FILE *)loc_6391B0("AIScriptPetContainer::aispc_Load"); } } ++v2; } while ( v2 < 2 ); return result; } // 86FEB8: using guessed type int __security_cookie; //----- (006232B0) -------------------------------------------------------- int __thiscall sub_6232B0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@6 int v7; // edx@6 int v8; // edx@9 int v9; // edx@11 void *v10; // eax@13 int v11; // edx@14 int v12; // esi@14 int v13; // esi@15 int v14; // edx@18 int v15; // esi@20 int v16; // esi@22 int v17; // edx@26 int v18; // esi@26 int v19; // edi@26 int v20; // edi@28 int v21; // edi@30 int v22; // esi@33 void *v23; // edx@36 int v24; // esi@36 int v25; // esi@38 int v26; // esi@40 int v27; // edi@46 int v28; // edi@48 int v29; // ecx@54 int result; // eax@54 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_7FFFFFE ) { if ( *((_DWORD *)a5 + 9) >= 0x10u ) operator delete(*((void **)a5 + 4)); *((_DWORD *)a5 + 9) = 15; *((_DWORD *)a5 + 8) = 0; *((_BYTE *)a5 + 16) = 0; operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 44) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 44) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 45) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 45) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_52: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 44) = 1; *(_BYTE *)(v13 + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 44) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 45) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 45) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_52; } *(_BYTE *)(v11 + 44) = 1; *(_BYTE *)(v22 + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 44) = 1; return result; } //----- (00623500) -------------------------------------------------------- void __stdcall sub_623500(void *a1) { void *v1; // esi@1 void *i; // edi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 45); v1 = i ) { sub_623500(*((void **)i + 2)); i = *(void **)i; if ( *((_DWORD *)v1 + 9) >= 0x10u ) operator delete(*((void **)v1 + 4)); *((_DWORD *)v1 + 9) = 15; *((_DWORD *)v1 + 8) = 0; *((_BYTE *)v1 + 16) = 0; operator delete(v1); } } //----- (00623560) -------------------------------------------------------- int __thiscall sub_623560(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int v14; // eax@35 int i; // ecx@36 int v16; // eax@38 int v17; // eax@61 int result; // eax@63 int v19; // [sp+10h] [bp-8h]@3 void *v20; // [sp+14h] [bp-4h]@1 v3 = a3; v20 = this; if ( *(_BYTE *)(a3 + 45) ) sub_6517D8((int)"invalid map/set iterator"); v19 = a3; sub_633F50(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 45) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 45) ) *(_DWORD *)(v4 + 4) = v6; v7 = v20; v8 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v20 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 45) ) { v9 = v6; } else { v9 = sub_62AFC0(v4); v7 = v20; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 45) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_633F30(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 45) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 45) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 44); *(_BYTE *)(v5 + 44) = *(_BYTE *)(v3 + 44); *(_BYTE *)(v3 + 44) = v13; LABEL_35: v14 = v19; if ( *(_BYTE *)(v19 + 44) == 1 ) { for ( i = (int)v20; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 44) != 1 ) break; v16 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v16 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v16 + 44) ) { *(_BYTE *)(v16 + 44) = 1; *(_BYTE *)(v6 + 44) = 0; sub_622EA0(i, v6); v16 = *(_DWORD *)(v6 + 8); i = (int)v20; } if ( *(_BYTE *)(v16 + 45) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v16 + 44) != 1 || *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) == 1 ) { *(_BYTE *)(*(_DWORD *)v16 + 44) = 1; *(_BYTE *)(v16 + 44) = 0; sub_622F00(i, v16); v16 = *(_DWORD *)(v6 + 8); i = (int)v20; } *(_BYTE *)(v16 + 44) = *(_BYTE *)(v6 + 44); *(_BYTE *)(v6 + 44) = 1; *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) = 1; sub_622EA0(i, v6); break; } } else { if ( !*(_BYTE *)(v16 + 44) ) { *(_BYTE *)(v16 + 44) = 1; *(_BYTE *)(v6 + 44) = 0; sub_622F00(i, v6); v16 = *(_DWORD *)v6; i = (int)v20; } if ( *(_BYTE *)(v16 + 45) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) != 1 || *(_BYTE *)(*(_DWORD *)v16 + 44) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v16 + 44) == 1 ) { *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) = 1; *(_BYTE *)(v16 + 44) = 0; sub_622EA0(i, v16); v16 = *(_DWORD *)v6; i = (int)v20; } *(_BYTE *)(v16 + 44) = *(_BYTE *)(v6 + 44); *(_BYTE *)(v6 + 44) = 1; *(_BYTE *)(*(_DWORD *)v16 + 44) = 1; sub_622F00(i, v6); break; } } *(_BYTE *)(v16 + 44) = 0; LABEL_53: v4 = v6; } v14 = v19; *(_BYTE *)(v4 + 44) = 1; } if ( *(_DWORD *)(v14 + 36) >= 0x10u ) operator delete(*(void **)(v14 + 16)); *(_DWORD *)(v19 + 36) = 15; *(_DWORD *)(v19 + 32) = 0; *(_BYTE *)(v19 + 16) = 0; operator delete((void *)v19); v17 = *((_DWORD *)v20 + 2); if ( v17 ) *((_DWORD *)v20 + 2) = v17 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (006237E0) -------------------------------------------------------- int __thiscall sub_6237E0(int this, int a2, void *a3, int a4) { int v4; // edx@1 int v5; // ecx@1 int v6; // eax@1 int v7; // esi@1 void *v8; // edi@1 bool v9; // cl@1 int v10; // ebx@2 int v11; // ebx@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 int v15; // [sp+Ch] [bp-4h]@1 char v16; // [sp+1Ch] [bp+Ch]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = v5; v8 = a3; v9 = 1; v15 = v4; v16 = 1; if ( !*(_BYTE *)(v6 + 45) ) { v10 = *((_DWORD *)v8 + 3); do { v7 = v6; if ( (_BYTE)a4 ) v9 = *(_DWORD *)(v6 + 12) >= v10; else v9 = v10 < *(_DWORD *)(v6 + 12); v16 = v9; if ( v9 ) v6 = *(_DWORD *)v6; else v6 = *(_DWORD *)(v6 + 8); } while ( !*(_BYTE *)(v6 + 45) ); } v11 = v7; a4 = v7; if ( v9 ) { if ( v7 == **(_DWORD **)(v4 + 4) ) { v12 = *(_DWORD *)sub_6232B0(v4, (int)&a4, 1, v7, v8); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_62AFE0(&a4); v11 = a4; v4 = v15; } if ( *(_DWORD *)(v11 + 12) >= *((_DWORD *)v8 + 3) ) { if ( *((_DWORD *)v8 + 9) >= 0x10u ) operator delete(*((void **)v8 + 4)); *((_DWORD *)v8 + 9) = 15; *((_DWORD *)v8 + 8) = 0; *((_BYTE *)v8 + 16) = 0; operator delete(v8); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_6232B0(v4, (int)&a4, v16, v7, v8); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (006238E0) -------------------------------------------------------- int __thiscall sub_6238E0(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 45) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 45) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_623560((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_623500(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (006239A0) -------------------------------------------------------- int __thiscall sub_6239A0(void *this, int a2) { void *v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int v5; // eax@2 int v6; // edx@3 int v8; // [sp+0h] [bp-38h]@1 int (__thiscall **v9)(void *, char); // [sp+10h] [bp-28h]@6 int v10; // [sp+1Ch] [bp-1Ch]@2 int v11; // [sp+20h] [bp-18h]@2 void *v12; // [sp+24h] [bp-14h]@1 int *v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@2 v13 = &v8; v2 = this; v3 = operator new(0x30u); v4 = v3; v12 = (void *)v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v9 = &off_6A1FD4; _CxxThrowException(&v9, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); v5 = v3 + 12; *(_DWORD *)(v4 + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(v4 + 44) = 0; v14 = 0; v11 = v4 + 12; v10 = v4 + 12; LOBYTE(v14) = 1; if ( v4 != -12 ) { v6 = a2; *(_DWORD *)v5 = *(_DWORD *)a2; *(_DWORD *)(v4 + 36) = 15; *(_DWORD *)(v4 + 32) = 0; *(_BYTE *)(v4 + 16) = 0; sub_4E0E00((void **)(v4 + 16), (void **)(v6 + 4)); } return v4; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00623A80) -------------------------------------------------------- void __thiscall sub_623A80(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_6238E0(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (00623AE0) -------------------------------------------------------- void __thiscall sub_623AE0(int this) { int v1; // edi@1 int v2; // esi@1 void *v3; // ST08_4@1 int v4; // ST08_4@1 int v5; // ST04_4@1 int v6; // ST08_4@1 int v7; // ST04_4@1 char v8; // [sp+Ch] [bp-18h]@1 int v9; // [sp+10h] [bp-14h]@1 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v1 = this; v10 = this; v2 = this + 16; v3 = *(void **)(*(_DWORD *)(this + 20) + 4); v11 = 1; sub_623500(v3); *(_DWORD *)(*(_DWORD *)(v2 + 4) + 4) = *(_DWORD *)(v2 + 4); **(_DWORD **)(v2 + 4) = *(_DWORD *)(v2 + 4); *(_DWORD *)(*(_DWORD *)(v2 + 4) + 8) = *(_DWORD *)(v2 + 4); *(_DWORD *)(v2 + 8) = 0; v9 = v2; v4 = *(_DWORD *)(v2 + 4); v5 = **(_DWORD **)(v2 + 4); LOBYTE(v11) = 2; sub_6238E0(v2, (int)&v8, v5, v4); operator delete(*(void **)(v2 + 4)); v6 = *(_DWORD *)(v1 + 4); v7 = **(_DWORD **)(v1 + 4); v11 = 3; sub_5CF580(v1, (int)&v8, v7, v6); operator delete(*(void **)(v1 + 4)); } //----- (00623BA0) -------------------------------------------------------- int __thiscall sub_623BA0(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@2 int v4; // eax@3 int v5; // eax@5 int (__thiscall **v7)(void *, char); // [sp+Ch] [bp-58h]@9 int (__thiscall **v8)(void *, char); // [sp+18h] [bp-4Ch]@11 int v9; // [sp+24h] [bp-40h]@1 int v10; // [sp+28h] [bp-3Ch]@8 int v11; // [sp+2Ch] [bp-38h]@3 int v12; // [sp+30h] [bp-34h]@10 int v13; // [sp+34h] [bp-30h]@3 void *v14; // [sp+38h] [bp-2Ch]@3 int v15; // [sp+48h] [bp-1Ch]@3 unsigned int v16; // [sp+4Ch] [bp-18h]@3 unsigned int v17; // [sp+54h] [bp-10h]@1 int v18; // [sp+60h] [bp-4h]@2 int v19; // [sp+64h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; v9 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x18u); if ( !v2 ) { v12 = 0; std::exception::exception(&v12); v8 = &off_6A1FD4; _CxxThrowException(&v8, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 20) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 21) = 1; v18 = 0; *(_DWORD *)(v1 + 24) = 0; v3 = operator new(0x30u); if ( !v3 ) { v10 = 0; std::exception::exception(&v10); v7 = &off_6A1FD4; _CxxThrowException(&v7, &unk_733E50); } *(_DWORD *)(v1 + 20) = v3; *(_DWORD *)v3 = v3; *(_DWORD *)(*(_DWORD *)(v1 + 20) + 4) = *(_DWORD *)(v1 + 20); *(_DWORD *)(*(_DWORD *)(v1 + 20) + 8) = *(_DWORD *)(v1 + 20); *(_BYTE *)(*(_DWORD *)(v1 + 20) + 44) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 20) + 45) = 1; LOBYTE(v18) = 1; v13 = 0; v16 = 15; v15 = 0; LOBYTE(v14) = 0; sub_4241C0((int)&v14, "PetDummy", 8u); LOBYTE(v18) = 2; v4 = sub_6239A0((void *)(v1 + 16), (int)&v13); sub_6237E0(v1 + 16, (int)&v11, (void *)v4, 0); LOBYTE(v18) = 1; if ( v16 >= 0x10 ) operator delete(v14); v13 = 1; v16 = 15; v15 = 0; LOBYTE(v14) = 0; sub_4241C0((int)&v14, "PetBase", 7u); LOBYTE(v18) = 3; v5 = sub_6239A0((void *)(v1 + 16), (int)&v13); sub_6237E0(v1 + 16, (int)&v11, (void *)v5, 0); if ( v16 >= 0x10 ) operator delete(v14); return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00623D50) -------------------------------------------------------- void *__thiscall sub_623D50(void *this) { void *v1; // esi@1 v1 = this; sub_5940B0(this); *(_DWORD *)v1 = &off_7032C8; return v1; } // 7032C8: using guessed type int (__thiscall *off_7032C8)(void *, char); //----- (00623D80) -------------------------------------------------------- int __thiscall sub_623D80(void *this, int a2, int a3, __int16 a4) { void *v4; // ebx@1 void *v5; // esi@1 int v6; // eax@3 v4 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_PEEPING_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_PEEPING_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -15358; *((_WORD *)v5 + 3) = a4; *(_DWORD *)((char *)v5 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = *(_DWORD *)(a2 + 2); *((_DWORD *)v5 + 3) = *(_DWORD *)(a2 + 6); *((_DWORD *)v5 + 4) = *(_DWORD *)(a2 + 10); *((_DWORD *)v5 + 5) = *(_DWORD *)(a2 + 14); *((_DWORD *)v5 + 6) = *(_DWORD *)(a2 + 18); if ( sub_4C81E0(&off_849C18, 28) ) { v6 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v6); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_PEEPING_REQ : Packet Too Long", 28); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_PEEPING_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (00623EA0) -------------------------------------------------------- int __stdcall sub_623EA0(int a1, int a2) { int v2; // ebx@1 void *v3; // esi@3 size_t v4; // ST08_4@3 int v5; // esi@3 int v6; // eax@5 int v8; // [sp-4h] [bp-24h]@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { v3 = off_849C18; *(_WORD *)off_849C18 = -15355; *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)(a1 + 8); *(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(a1 + 12); *(_DWORD *)((char *)v3 + 10) = *(_DWORD *)(a1 + 16); *(_DWORD *)((char *)v3 + 14) = *(_DWORD *)(a1 + 20); *(_DWORD *)((char *)v3 + 18) = *(_DWORD *)(a1 + 24); *((_WORD *)v3 + 11) = *(_WORD *)(a1 + 28); *((_DWORD *)v3 + 6) = *(_DWORD *)(a1 + 30); v4 = 11 * *(_WORD *)(a1 + 34); *((_WORD *)v3 + 14) = *(_WORD *)(a1 + 34); memmove((char *)v3 + 30, (const void *)(a1 + 36), v4); v5 = 11 * *((_WORD *)v3 + 14) + 30; if ( sub_4C81E0(&off_849C18, v5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); v8 = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK"; } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK : Packet Too Long", v5); v8 = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK"; } } else { v8 = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00624010) -------------------------------------------------------- int __stdcall sub_624010(int a1, int a2) { int v2; // ebx@1 void *v3; // esi@3 size_t v4; // ST08_4@3 int v5; // esi@3 int v6; // eax@5 int v8; // [sp-4h] [bp-24h]@4 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_BOOKMARK_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_BOOKMARK_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { v3 = off_849C18; *(_WORD *)off_849C18 = -15354; *(_DWORD *)((char *)v3 + 2) = *(_DWORD *)(a1 + 8); *(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(a1 + 12); *(_DWORD *)((char *)v3 + 10) = *(_DWORD *)(a1 + 16); *(_DWORD *)((char *)v3 + 14) = *(_DWORD *)(a1 + 20); *(_DWORD *)((char *)v3 + 18) = *(_DWORD *)(a1 + 24); *((_WORD *)v3 + 11) = *(_WORD *)(a1 + 28); *((_DWORD *)v3 + 6) = *(_DWORD *)(a1 + 30); v4 = 4 * *(_WORD *)(a1 + 34); *((_WORD *)v3 + 14) = *(_WORD *)(a1 + 34); memmove((char *)v3 + 30, (const void *)(a1 + 36), v4); v5 = 4 * *((_WORD *)v3 + 14) + 30; if ( sub_4C81E0(&off_849C18, v5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); v8 = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_BOOKMARK_ACK"; } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK : Packet Too Long", v5); v8 = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_BOOKMARK_ACK"; } } else { v8 = (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_BOOKMARK_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v8); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00624180) -------------------------------------------------------- void *__thiscall sub_624180(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7032C8; sub_5940C0(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7032C8: using guessed type int (__thiscall *off_7032C8)(void *, char); //----- (006241B0) -------------------------------------------------------- signed int __stdcall sub_6241B0(int a1, int a2) { sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemCardOpen::uib_CanUseItem"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemCardOpen::uib_CanUseItem"; dword_750AB8[dword_750CB8] = -1; sub_467660((int)&unk_D020420, (int)"UseEffect::UseItemCardOpen::uib_CanUseItem"); return 1792; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00624200) -------------------------------------------------------- char __stdcall sub_624200(int a1, int a2, int a3) { void *v3; // esi@3 void *v4; // eax@3 int v5; // eax@7 int v6; // eax@11 int v8; // [sp-4h] [bp-24h]@8 sub_4675D0((int)&unk_D020420, (int)"UseEffect::UseItemCapsule::uib_DirectUse"); dword_7508B8[dword_750CB8] = (int)"UseEffect::UseItemCapsule::uib_DirectUse"; dword_750AB8[dword_750CB8++] = -1; if ( a1 && a3 ) { v3 = off_849C18; *(_WORD *)off_849C18 = -15353; v4 = sub_63ACA0(dword_1508B168, *(_WORD *)(a3 + 8)); if ( v4 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 40))(v4) == 30 ) { *(_WORD *)v3 = 13480; *(_DWORD *)((char *)v3 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 836))(a1); *((_WORD *)v3 + 3) = sub_4802C0(a1); *((_DWORD *)v3 + 2) = *(_DWORD *)a3; *((_DWORD *)v3 + 3) = *(_DWORD *)(a3 + 4); *((_WORD *)v3 + 8) = -15353; if ( sub_4C81E0(&off_849C18, 18) ) { v5 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v5); } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemCardOpen::uib_DirectUse : Packet Too Long", 18); } } else { *((_WORD *)v3 + 1) = 11137; if ( sub_4C81E0(&off_849C18, 108) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a1 + 760))(a1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, a1, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"UseEffect::UseItemCardOpen::uib_DirectUse : Packet Too Long", 108); } } --dword_750CB8; v8 = (int)"UseEffect::UseItemCapsule::uib_DirectUse"; } else { --dword_750CB8; v8 = (int)"UseEffect::UseItemCapsule::uib_DirectUse"; } sub_467660((int)&unk_D020420, v8); return 1; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (006243B0) -------------------------------------------------------- int __stdcall sub_6243B0(int a1, int a2) { int v2; // ebx@1 void *v3; // eax@3 int v4; // edi@3 int v5; // eax@5 int v7; // [sp-4h] [bp-24h]@8 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_BOOKMARK_REGIST_DB_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_COLLECT_BOOKMARK_REGIST_DB_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { v3 = off_849C18; *(_WORD *)off_849C18 = -15345; v4 = (int)((char *)v3 + 2); *((_WORD *)v3 + 1) = *(_WORD *)(a1 + 8); *((_WORD *)v3 + 2) = *(_WORD *)(a1 + 10); *((_WORD *)v3 + 3) = *(_WORD *)(a1 + 12); if ( sub_4C81E0(&off_849C18, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK : Packet Too Long", 8); } if ( *(_WORD *)(v4 + 4) == 11168 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 3088))(v2, v4); v7 = (int)"GameDBSession::gds_NC_COLLECT_BOOKMARK_REGIST_DB_ACK"; } else { v7 = (int)"GameDBSession::gds_NC_COLLECT_BOOKMARK_REGIST_DB_ACK"; } --dword_750CB8; return sub_467660((int)&unk_D020420, v7); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00624500) -------------------------------------------------------- int __stdcall sub_624500(int a1, int a2) { int v2; // esi@1 void *v3; // eax@3 int v4; // eax@5 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_REWARD_DB_REQ"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_COLLECT_REWARD_DB_REQ"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { v3 = off_849C18; *(_WORD *)off_849C18 = -15341; *((_WORD *)v3 + 1) = *(_WORD *)(a1 + 8); *((_WORD *)v3 + 2) = *(_WORD *)(a1 + 10); if ( sub_4C81E0(&off_849C18, 6) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_COLLECT_PEEPING_DB_COLLECT_ACK : Packet Too Long", 6); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_REWARD_DB_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00624620) -------------------------------------------------------- int __stdcall sub_624620(int a1, int a2) { int v2; // esi@1 int v3; // eax@4 int v4; // eax@5 void *v5; // eax@5 int v6; // eax@7 sub_4675D0((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_REGIST_ACK"); dword_7508B8[dword_750CB8] = (int)"GameDBSession::gds_NC_COLLECT_REGIST_ACK"; dword_750AB8[dword_750CB8++] = -1; v2 = sub_54DE90(&unk_13253630, *(_WORD *)(a1 + 6)); if ( v2 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2) == *(_DWORD *)(a1 + 2) ) { if ( *(_WORD *)(a1 + 18) == 11152 ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 28))(v3, v2, *(_WORD *)(a1 + 8), 0); } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 40))(v4, *(_WORD *)(a1 + 8)); v5 = off_849C18; *(_WORD *)off_849C18 = -15349; *(_DWORD *)((char *)v5 + 2) = *(_DWORD *)(a1 + 10); *(_DWORD *)((char *)v5 + 6) = *(_DWORD *)(a1 + 14); *((_WORD *)v5 + 5) = *(_WORD *)(a1 + 18); if ( sub_4C81E0(&off_849C18, 12) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 12))(v6, v2, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"GameDBSession::gds_NC_COLLECT_REGIST_ACK : Packet Too Long", 12); } } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"GameDBSession::gds_NC_COLLECT_REGIST_ACK"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00624790) -------------------------------------------------------- int __stdcall sub_624790(unsigned int a1) { int result; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-Ch]@5 result = 0; if ( a1 ) { if ( a1 > 0x1745D174 || (result = operator new(11 * a1)) == 0 ) { a1 = 0; std::exception::exception(&a1); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006247F0) -------------------------------------------------------- int __thiscall sub_6247F0(int this, __int16 a2) { int v2; // esi@1 unsigned int v3; // edi@1 int v4; // ebx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 8); v3 = 0; if ( (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 42 ) { v4 = *(_DWORD *)v2; while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 42; if ( v3 >= (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 42 ) goto LABEL_5; } result = *(_DWORD *)v2 + 42 * v3; } else { LABEL_5: result = 0; } return result; } //----- (00624870) -------------------------------------------------------- int __thiscall sub_624870(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@2 int result; // eax@4 v3 = *(_DWORD *)(this + 8); if ( *(_DWORD *)a3 >= (unsigned int)((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 42) ) { LABEL_4: result = 0; } else { while ( 1 ) { v4 = *(_DWORD *)a3; if ( *(_DWORD *)(42 * *(_DWORD *)a3 + *(_DWORD *)v3 + 38) == a2 ) break; *(_DWORD *)a3 = v4 + 1; v3 = *(_DWORD *)(this + 8); if ( *(_DWORD *)a3 >= (unsigned int)((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 42) ) goto LABEL_4; } result = **(_DWORD **)(this + 8) + 42 * v4; ++*(_DWORD *)a3; } return result; } //----- (006248F0) -------------------------------------------------------- int __thiscall sub_6248F0(int this, const char *a2) { int v2; // esi@1 unsigned int v3; // edi@1 const char *v4; // ebx@2 signed int v5; // edx@4 int result; // eax@5 v2 = *(_DWORD *)(this + 8); v3 = 0; if ( (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 42 ) { v4 = (const char *)(*(_DWORD *)v2 + 2); while ( strcmp(a2, v4) ) { v5 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; ++v3; v4 += 42; if ( v3 >= v5 + ((unsigned int)v5 >> 31) ) goto LABEL_5; } result = *(_DWORD *)v2 + 42 * v3; } else { LABEL_5: result = 0; } return result; } //----- (00624990) -------------------------------------------------------- int __thiscall sub_624990(int this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) { int v9; // edi@1 int v10; // ecx@1 unsigned int v11; // esi@1 int v12; // ebx@2 const char *v13; // ST04_4@3 int result; // eax@12 char v15[4]; // [sp+Ch] [bp-24h]@3 int v16; // [sp+10h] [bp-20h]@3 int v17; // [sp+14h] [bp-1Ch]@3 int v18; // [sp+18h] [bp-18h]@3 int v19; // [sp+1Ch] [bp-14h]@3 int v20; // [sp+20h] [bp-10h]@3 int v21; // [sp+24h] [bp-Ch]@3 int v22; // [sp+28h] [bp-8h]@3 unsigned int v23; // [sp+2Ch] [bp-4h]@1 int v24; // [sp+30h] [bp+0h]@1 v23 = (unsigned int)&v24 ^ __security_cookie; v9 = this; v10 = *(_DWORD *)(this + 8); v11 = 0; if ( (*(_DWORD *)(v10 + 4) - *(_DWORD *)v10) / 36 ) { v12 = 0; while ( 1 ) { v13 = (const char *)(v12 + *(_DWORD *)v10); v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)v15 = 0; strncpy(v15, v13, 0x20u); if ( *(_DWORD *)v15 == a2 ) { if ( v16 == a3 && v17 == a4 && v18 == a5 && v19 == a6 && v20 == a7 && v21 == a8 && v22 == a9 ) break; } v10 = *(_DWORD *)(v9 + 8); ++v11; v12 += 36; if ( v11 >= (*(_DWORD *)(v10 + 4) - *(_DWORD *)v10) / 36 ) goto LABEL_12; } result = **(_DWORD **)(v9 + 8) + 36 * v11; } else { LABEL_12: result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00624A90) -------------------------------------------------------- int __thiscall sub_624A90(int this, int a2, int a3) { int v3; // edi@1 int v4; // eax@2 int result; // eax@4 v3 = *(_DWORD *)(this + 8); if ( *(_DWORD *)a3 >= (unsigned int)((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 7) ) { LABEL_4: result = 0; } else { while ( 1 ) { v4 = *(_DWORD *)a3; if ( *(_DWORD *)(7 * *(_DWORD *)a3 + *(_DWORD *)v3) == a2 ) break; *(_DWORD *)a3 = v4 + 1; v3 = *(_DWORD *)(this + 8); if ( *(_DWORD *)a3 >= (unsigned int)((*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 7) ) goto LABEL_4; } result = **(_DWORD **)(this + 8) + 7 * v4; ++*(_DWORD *)a3; } return result; } //----- (00624B20) -------------------------------------------------------- int __thiscall sub_624B20(int this, __int16 a2, const char *a3) { int v3; // esi@1 unsigned int v4; // edi@1 const char *v5; // ebx@2 int result; // eax@6 int v7; // [sp+10h] [bp-4h]@2 v3 = *(_DWORD *)(this + 8); v4 = 0; if ( (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 74 ) { v7 = *(_DWORD *)v3; v5 = (const char *)(*(_DWORD *)v3 + 8); while ( *(_WORD *)v7 != a2 || strcmp(v5, a3) ) { v7 += 74; ++v4; v5 += 74; if ( v4 >= (*(_DWORD *)(v3 + 4) - *(_DWORD *)v3) / 74 ) goto LABEL_6; } result = *(_DWORD *)v3 + 74 * v4; } else { LABEL_6: result = 0; } return result; } //----- (00624BD0) -------------------------------------------------------- int __thiscall sub_624BD0(int this, const char *a2) { int v2; // esi@1 unsigned int v3; // edi@1 const char *v4; // ebx@2 signed int v5; // edx@4 int result; // eax@5 v2 = *(_DWORD *)(this + 8); v3 = 0; if ( (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2) / 36 ) { v4 = (const char *)(*(_DWORD *)v2 + 4); while ( strcmp(v4, a2) ) { v5 = (signed int)((unsigned __int64)(954437177i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 3; ++v3; v4 += 36; if ( v3 >= v5 + ((unsigned int)v5 >> 31) ) goto LABEL_5; } result = *(_DWORD *)v2 + 36 * v3; } else { LABEL_5: result = 0; } return result; } //----- (00624C70) -------------------------------------------------------- int __thiscall sub_624C70(void *this, int a2) { unsigned int v2; // ST0C_4@1 int v3; // edi@1 int (__thiscall *v4)(_DWORD, _DWORD); // edx@1 int v5; // eax@1 int v6; // eax@2 void *v7; // eax@3 unsigned int v8; // eax@9 int v9; // eax@10 __int16 v10; // si@11 int v11; // ST0C_4@12 char *v12; // eax@12 char v13; // cl@12 void *v14; // esi@12 int v15; // eax@12 void *v16; // eax@12 int v17; // eax@12 int v18; // ST08_4@12 int v19; // eax@12 int v20; // esi@12 int v21; // eax@14 int v22; // ebx@15 int v23; // esi@15 int v24; // eax@15 int v25; // eax@15 __int16 v26; // ax@15 int v27; // eax@15 int v28; // eax@16 char v30; // [sp+10h] [bp-A0h]@1 int v31; // [sp+20h] [bp-90h]@2 char v32; // [sp+24h] [bp-8Ch]@1 int v33; // [sp+30h] [bp-80h]@12 int v34; // [sp+34h] [bp-7Ch]@12 char v35[6]; // [sp+38h] [bp-78h]@12 char v36; // [sp+3Eh] [bp-72h]@12 unsigned int v37; // [sp+A0h] [bp-10h]@1 int v38; // [sp+ACh] [bp-4h]@1 int v39; // [sp+B0h] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v2 = (unsigned int)&v39 ^ __security_cookie; v3 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen"; dword_750AB8[dword_750CB8++] = -1; v38 = 0; sub_43BAC0((int)&v30, v3 + 36484, 0); v4 = *(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 2004); LOBYTE(v38) = 1; v5 = v4(v3, v2); sub_43BC00((int)&v32, 9, (int)&v30, v5); LOBYTE(v38) = 2; if ( !sub_486D40(&v32) ) goto LABEL_7; while ( 1 ) { v6 = sub_43BC20(&v32); v31 = v6; if ( v6 ) { v7 = sub_5CF620((void *)v6); if ( v7 ) { if ( *(_DWORD *)v7 == *(_DWORD *)(a2 + 10) && *((_DWORD *)v7 + 1) == *(_DWORD *)(a2 + 14) ) break; } } if ( !sub_486DA0((void **)&v32) ) goto LABEL_7; } v8 = *(_WORD *)(a2 + 24); if ( v8 < (dword_14D4209C - dword_14D42098) >> 2 && (v9 = *(_DWORD *)(dword_14D42098 + 4 * v8)) != 0 && (v10 = sub_418C80((int)&dword_14D20890, (unsigned __int8 *)(v9 + 2)), v10 != -1) ) { v11 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v12 = sub_5A7540(byte_14D16AE8); sub_63D0E0(&v33, v10, 3, *((_DWORD *)v12 + 4), v11); v13 = *(_BYTE *)(a2 + 26); v14 = off_849C18; *(_DWORD *)&v35[2] = *(_DWORD *)(a2 + 20); v36 = v13; *(_WORD *)off_849C18 = 13482; *(_DWORD *)((char *)v14 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v14 + 3) = sub_4802C0(v3); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); *((_WORD *)v14 + 4) = sub_4802C0(v15); *(_DWORD *)((char *)v14 + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)((char *)v14 + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)((char *)v14 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v16 = sub_5CF620(*(void **)(v3 + 122)); *(_DWORD *)((char *)v14 + 22) = *(_DWORD *)v16; *(_DWORD *)((char *)v14 + 26) = *((_DWORD *)v16 + 1); *(_DWORD *)((char *)v14 + 30) = *((_DWORD *)v16 + 2); v17 = sub_552F20(v3); *(_DWORD *)((char *)v14 + 34) = *(_DWORD *)v17; *(_DWORD *)((char *)v14 + 38) = *(_DWORD *)(v17 + 4); *((_WORD *)v14 + 21) = sub_43BC30(&v32) & 0x3FF | 0x2400; *((_DWORD *)v14 + 11) = v33; *((_DWORD *)v14 + 12) = v34; *((_WORD *)v14 + 26) = *(_WORD *)v35; *((_WORD *)v14 + 27) = 54; v18 = *(_DWORD *)v35; v19 = (int)sub_63ACA0(dword_1508B168, *(unsigned __int16 *)v35); v20 = sub_63D0C0(&v33, v19, v18, (int)((char *)v14 + 56)) - (_DWORD)((char *)v14 + 56) + 56; if ( sub_4C81E0(&off_849C18, v20) ) { v21 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v21); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin : Packet Too Long", v20); } v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); v23 = *(_DWORD *)v22; v24 = sub_43BC30(&v32); v25 = (*(int (__thiscall **)(int, int, int *, int))(*(_DWORD *)v3 + 2004))(v3, v31, &v33, v24); v26 = sub_4802C0(v25); (*(void (__thiscall **)(int, _DWORD))(v23 + 60))(v22, (unsigned __int16)v26); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); sub_43BBF0(v27); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1792, 9); } else { LABEL_7: *(_DWORD *)off_849C18 = 729990151; if ( sub_4C81E0(&off_849C18, 108) ) { v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v28 + 12))(v28, v3, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen : Packet Too Long", 108); } (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 2332))(v3, 1798, 9); } LOBYTE(v38) = 1; nullsub_2(&v32); LOBYTE(v38) = 0; sub_43BB10(&v30); --dword_750CB8; v38 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D42098: using guessed type int dword_14D42098; // 14D4209C: using guessed type int dword_14D4209C; //----- (00625020) -------------------------------------------------------- int __thiscall sub_625020(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int (__thiscall *v6)(_DWORD, _DWORD); // eax@1 int v7; // ST10_4@1 int v8; // edi@1 void *v9; // eax@1 int v10; // ebx@1 int v11; // eax@4 signed __int16 v12; // cx@5 void *v13; // eax@8 int v14; // eax@8 int v15; // eax@9 int v16; // eax@12 void *v17; // eax@12 int v18; // eax@14 int v19; // ST28_4@15 int v20; // ST2C_4@15 int v21; // eax@15 __int16 v22; // ax@15 int v23; // eax@15 int v24; // eax@21 int v26; // [sp+14h] [bp-1Ch]@8 int v27; // [sp+18h] [bp-18h]@10 void *v28; // [sp+1Ch] [bp-14h]@1 __int16 v29; // [sp+20h] [bp-10h]@15 int v30; // [sp+2Ch] [bp-4h]@1 int v31; // [sp+38h] [bp+8h]@15 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_CARDREGIST_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_CARDREGIST_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -15349; v6 = (int (__thiscall *)(_DWORD, _DWORD))**(_DWORD **)(v4 + 36484); v28 = v5; v7 = *(_BYTE *)(a2 + 2); v30 = 0; v8 = (int)((char *)v5 + 2); v9 = (void *)v6(v4 + 36484, v7); v10 = (int)v9; if ( !v9 || !sub_5CF620(v9) || !sub_43BBE0(v10) ) { v12 = 11153; goto LABEL_18; } v11 = sub_43BBE0(v10); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 40))(v11) != 31 ) { v12 = 11154; LABEL_18: *(_WORD *)(v8 + 8) = v12; LABEL_19: if ( sub_4C81E0(&off_849C18, 12) ) { v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v24 + 12))(v24, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen : Packet Too Long", 12); } goto LABEL_22; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v4 + 58688) + 12))( v4 + 58688, 9, *(_BYTE *)(a2 + 2)) ) { *(_WORD *)(v8 + 8) = 11155; goto LABEL_19; } v13 = sub_5CF620((void *)v10); v14 = sub_418CB0((int)&dword_14D20890, *((_WORD *)v13 + 4)); v26 = v14; if ( !v14 || (v15 = *(_DWORD *)v14) == 0 ) { v12 = 11156; goto LABEL_18; } v27 = sub_6248F0((int)&dword_14D4200C, (const char *)(v15 + 2)); if ( !v27 ) { v12 = 11157; goto LABEL_18; } *(_WORD *)v28 = -15351; *(_DWORD *)v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)(v8 + 4) = sub_4802C0(v4); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); *(_WORD *)(v8 + 6) = sub_4802C0(v16); v17 = sub_5CF620((void *)v10); *(_DWORD *)(v8 + 8) = *(_DWORD *)v17; *(_DWORD *)(v8 + 12) = *((_DWORD *)v17 + 1); *(_WORD *)(v8 + 17) = *(_WORD *)v27; *(_DWORD *)(v8 + 20) = *(_DWORD *)((char *)sub_5CF620((void *)v10) + 10); *(_BYTE *)(v8 + 19) = *((_BYTE *)sub_5CF620((void *)v10) + 14); *(_BYTE *)(v8 + 16) = *(_BYTE *)(a2 + 2); if ( sub_4C81E0(&off_849C18, 28) ) { v18 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_CARDREGIST_REQ : Packet Too Long", 28); } v19 = sub_624BD0((int)&dword_14D41FF0, (const char *)(*(_DWORD *)v26 + 2)); v29 = *(unsigned __int8 *)(a2 + 2) | 0x2400; v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2004))(v4); v20 = *(_DWORD *)v31 + 56; v21 = (*(int (__thiscall **)(int, int, __int16 *, __int16 *, int, int))(*(_DWORD *)v4 + 2004))( v4, v10, &v29, &v29, v8, v19); v22 = sub_4802C0(v21); (*(void (__thiscall **)(int, _DWORD))v20)(v31, (unsigned __int16)v22); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); sub_43BBF0(v23); LABEL_22: --dword_750CB8; v30 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_CARDREGIST_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D41FF0: using guessed type int dword_14D41FF0; // 14D4200C: using guessed type int dword_14D4200C; //----- (00625340) -------------------------------------------------------- char __cdecl sub_625340(unsigned __int16 a1, int a2) { int v2; // eax@1 int v3; // eax@2 int v4; // eax@3 int v5; // ebx@3 int v6; // esi@5 int v7; // eax@5 int v8; // eax@5 __int16 v9; // di@6 unsigned int v10; // ecx@6 int v11; // eax@6 int v12; // edx@7 int v13; // esi@10 unsigned int v14; // edi@11 double v15; // st7@11 __int16 v16; // ax@15 int v17; // eax@16 int v18; // edi@16 unsigned int v19; // ebx@16 int v20; // eax@17 int i; // esi@17 double v22; // st7@18 bool v23; // zf@21 int v24; // ecx@21 int v26; // [sp-24h] [bp-74h]@3 int v27; // [sp-20h] [bp-70h]@3 int v28; // [sp-1Ch] [bp-6Ch]@3 int v29; // [sp-18h] [bp-68h]@3 int v30; // [sp-14h] [bp-64h]@3 int v31; // [sp-10h] [bp-60h]@3 int v32; // [sp-Ch] [bp-5Ch]@3 int v33; // [sp-8h] [bp-58h]@3 unsigned int v34; // [sp-4h] [bp-54h]@1 int v35; // [sp+Ch] [bp-44h]@1 unsigned int v36; // [sp+10h] [bp-40h]@5 int v37; // [sp+14h] [bp-3Ch]@5 int v38; // [sp+18h] [bp-38h]@1 unsigned int v39; // [sp+1Ch] [bp-34h]@11 char v40[4]; // [sp+20h] [bp-30h]@3 int v41; // [sp+24h] [bp-2Ch]@3 int v42; // [sp+28h] [bp-28h]@3 int v43; // [sp+2Ch] [bp-24h]@3 int v44; // [sp+30h] [bp-20h]@3 int v45; // [sp+34h] [bp-1Ch]@3 int v46; // [sp+38h] [bp-18h]@3 int v47; // [sp+3Ch] [bp-14h]@3 unsigned int v48; // [sp+40h] [bp-10h]@1 int v49; // [sp+4Ch] [bp-4h]@1 int v50; // [sp+50h] [bp+0h]@1 v48 = (unsigned int)&v50 ^ __security_cookie; v34 = (unsigned int)&v50 ^ __security_cookie; v38 = a2; v35 = (int)"g_CardCollectMake"; sub_4675D0((int)&unk_D020420, (int)"g_CardCollectMake"); dword_7508B8[dword_750CB8] = (int)"g_CardCollectMake"; dword_750AB8[dword_750CB8++] = -1; v49 = 0; v2 = sub_418D40((int)&unk_14D159B0, a1); if ( !v2 || (v3 = *(_DWORD *)v2) == 0 ) { v33 = (int)"g_CardCollectMake"; goto LABEL_25; } v47 = 0; v46 = 0; v45 = 0; v44 = 0; v43 = 0; v42 = 0; v41 = 0; *(_DWORD *)v40 = 0; strncpy(v40, (const char *)(v3 + 2), 0x20u); memcpy(&v26, v40, 0x20u); v4 = sub_624990((int)&dword_14D420AC, v26, v27, v28, v29, v30, v31, v32, v33); v5 = v4; if ( !v4 ) goto LABEL_29; v6 = v38; *(_WORD *)(v38 + 7) = *(_WORD *)(v4 + 32); *(_WORD *)(v6 + 4) = -1; v7 = *(_DWORD *)(v4 + 32); v37 = 0; v36 = 0; v8 = sub_624870((int)&dword_14D42044, v7, (int)&v37); if ( v8 ) { do { v9 = *(_WORD *)v8; v10 = 0; v11 = (off_86D7E0[1] - *off_86D7E0) >> 2; if ( v11 ) { v12 = *off_86D7E0; while ( *(_WORD *)v12 != v9 ) { ++v10; v12 += 4; if ( v10 >= v11 ) goto LABEL_10; } v13 = *off_86D7E0 + 4 * v10; } else { LABEL_10: v13 = 0; } v36 += *(_WORD *)(v13 + 2); v14 = v36; v15 = (double)sub_48D360(&unk_14D42DC0); v39 = v14; v39 = *(_WORD *)(v13 + 2); if ( (double)(signed int)v39 > v15 * (double)v14 / 1000000.0 ) *(_WORD *)(v38 + 4) = *(_WORD *)v13; v8 = sub_624870((int)&dword_14D42044, *(_DWORD *)(v5 + 32), (int)&v37); } while ( v8 ); v6 = v38; } v16 = *(_WORD *)(v6 + 4); if ( v16 == -1 || (v39 = (unsigned int)&v33, v17 = sub_6247F0((int)&dword_14D4207C, v16), v18 = v17, v19 = 0, !v17) ) { LABEL_29: v33 = (int)"g_CardCollectMake"; LABEL_25: v49 = -1; v24 = (int)&unk_D020420; goto LABEL_26; } *(_BYTE *)(v38 + 6) = 0; v20 = *(_DWORD *)(v17 + 34); v37 = 0; for ( i = sub_624A90((int)&dword_14D42028, v20, (int)&v37); i != 0; i = sub_624A90((int)&dword_14D42028, *(_DWORD *)(v18 + 34), (int)&v37) ) { v19 += *(_WORD *)(i + 5); v22 = (double)sub_48D360(&unk_14D42DC0); v39 = v19; v39 = *(_WORD *)(i + 5); if ( (double)(signed int)v39 > v22 * (double)v19 / 1000000.0 ) *(_BYTE *)(v38 + 6) = *(_BYTE *)(i + 4); } v23 = *(_BYTE *)(v38 + 6) == 0; v49 = -1; v33 = (int)"g_CardCollectMake"; v24 = (int)&unk_D020420; if ( !v23 ) { --dword_750CB8; sub_467660((int)&unk_D020420, v33); return 1; } LABEL_26: --dword_750CB8; sub_467660(v24, v33); return 0; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86D7E0: using guessed type int *off_86D7E0; // 86FEB8: using guessed type int __security_cookie; // 14D42028: using guessed type int dword_14D42028; // 14D42044: using guessed type int dword_14D42044; // 14D4207C: using guessed type int dword_14D4207C; // 14D420AC: using guessed type int dword_14D420AC; //----- (00625640) -------------------------------------------------------- int __thiscall sub_625640(void *this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // esi@1 __int16 v6; // cx@1 int v7; // edx@2 int v8; // eax@2 int v9; // eax@8 int v10; // eax@11 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_BOOKMARK_REGIST_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_BOOKMARK_REGIST_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -15345; v6 = *(_WORD *)(a2 + 4); if ( v6 == -1 ) goto LABEL_15; v7 = *(_DWORD *)(v4 + 161584); v8 = *(_DWORD *)(v4 + 161580); if ( v8 == v7 ) goto LABEL_16; do { if ( *(_WORD *)(v8 + 8) == v6 ) break; v8 += 11; } while ( v8 != v7 ); if ( v8 != v7 ) { LABEL_15: *(_WORD *)v5 = -15347; *(_DWORD *)((char *)v5 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v5 + 3) = sub_4802C0(v4); *((_WORD *)v5 + 4) = *(_WORD *)(a2 + 2); *((_WORD *)v5 + 5) = *(_WORD *)(a2 + 4); if ( sub_4C81E0(&off_849C18, 12) ) { v10 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v10); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin : Packet Too Long", 12); } } else { LABEL_16: *((_WORD *)v5 + 3) = 11169; if ( sub_4C81E0(&off_849C18, 8) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v9 + 12))(v9, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen : Packet Too Long", 8); } } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_BOOKMARK_REGIST_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; //----- (006257E0) -------------------------------------------------------- int __cdecl sub_6257E0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 11 ) { if ( result ) { *(_DWORD *)result = *(_DWORD *)v3; *(_DWORD *)(result + 4) = *(_DWORD *)(v3 + 4); *(_WORD *)(result + 8) = *(_WORD *)(v3 + 8); *(_BYTE *)(result + 10) = *(_BYTE *)(v3 + 10); } v3 += 11; } return result; } //----- (00625820) -------------------------------------------------------- int __cdecl sub_625820(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 v3 = a1; for ( result = a3; v3 != a2; result += 4 ) { if ( result ) *(_DWORD *)result = *(_DWORD *)v3; v3 += 4; } return result; } //----- (00625850) -------------------------------------------------------- char __thiscall sub_625850(void *this, int a2) { void *v2; // esi@1 int v3; // ecx@1 int v4; // esi@1 int v5; // eax@1 int v6; // ebx@1 int v7; // edi@1 int v8; // edx@1 int v9; // edi@2 int v10; // edx@2 unsigned int v11; // eax@3 int v12; // eax@4 int v13; // edx@10 bool v14; // sf@10 unsigned __int8 v15; // of@10 char result; // al@12 int v17; // eax@13 int v18; // ecx@14 int v19; // edx@15 int v20; // ecx@16 int v21; // eax@16 int v22; // [sp+10h] [bp-20h]@1 int v23; // [sp+14h] [bp-1Ch]@1 int v24; // [sp+18h] [bp-18h]@1 int v25; // [sp+1Ch] [bp-14h]@1 unsigned int v26; // [sp+20h] [bp-10h]@1 int v27; // [sp+2Ch] [bp-4h]@12 int v28; // [sp+30h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v2 = this; sub_4675D0((int)&unk_D020420, (int)"CardCollection::CardCollectionAlbum::cca_IsRewardCondition"); dword_7508B8[dword_750CB8] = (int)"CardCollection::CardCollectionAlbum::cca_IsRewardCondition"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; v4 = *((_DWORD *)v2 + 1); v5 = 0; v6 = 0; v7 = 0; v8 = 0; v22 = 0; v23 = 0; v24 = 0; v25 = 0; if ( v3 != v4 ) { v9 = dword_14D42098; v10 = (dword_14D4209C - dword_14D42098) >> 2; do { v11 = *(_WORD *)(v3 + 8); if ( v11 < v10 ) { v12 = *(_DWORD *)(v9 + 4 * v11); if ( v12 ) { if ( *(_DWORD *)(v12 + 34) < 4 ) ++*(&v22 + *(_DWORD *)(v12 + 34)); } } v3 += 11; } while ( v3 != v4 ); v5 = v25; v8 = v24; v7 = v23; v6 = v22; } switch ( *(_DWORD *)(a2 + 2) ) { case 1: v13 = *(_WORD *)(a2 + 6); v15 = __OFSUB__(v6, v13); v14 = v6 - v13 < 0; goto LABEL_11; case 2: v17 = *(_WORD *)(a2 + 6); v15 = __OFSUB__(v7, v17); v14 = v7 - v17 < 0; goto LABEL_11; case 3: v18 = *(_WORD *)(a2 + 6); v15 = __OFSUB__(v8, v18); v14 = v8 - v18 < 0; goto LABEL_11; case 4: v19 = *(_WORD *)(a2 + 6); v15 = __OFSUB__(v5, v19); v14 = v5 - v19 < 0; goto LABEL_11; case 0: v20 = *(_WORD *)(a2 + 6); v21 = v6 + v7 + v8 + v5; v15 = __OFSUB__(v21, v20); v14 = v21 - v20 < 0; LABEL_11: if ( !(v14 ^ v15) ) goto LABEL_17; --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"CardCollection::CardCollectionAlbum::cca_IsRewardCondition"); result = 0; break; default: LABEL_17: --dword_750CB8; v27 = -1; sub_467660((int)&unk_D020420, (int)"CardCollection::CardCollectionAlbum::cca_IsRewardCondition"); result = 1; break; } return result; } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; // 14D42098: using guessed type int dword_14D42098; // 14D4209C: using guessed type int dword_14D4209C; //----- (006259D0) -------------------------------------------------------- int __thiscall sub_6259D0(void *this, int a2, int a3, int a4) { int v4; // esi@1 void *v5; // edi@1 int v6; // ecx@1 int v7; // eax@1 int v8; // eax@6 int v9; // eax@7 int v10; // eax@8 void *v11; // edi@12 int v12; // ST0C_4@12 char *v13; // eax@12 void *v14; // eax@12 int v15; // eax@14 int v16; // eax@18 v4 = (int)this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_REWARD_REQ"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_REWARD_REQ"; dword_750AB8[dword_750CB8++] = -1; v5 = off_849C18; *(_WORD *)off_849C18 = -15341; *((_WORD *)v5 + 1) = *(_WORD *)(a2 + 2); v6 = *(_DWORD *)(v4 + 161616); v7 = *(_DWORD *)(v4 + 161612); if ( v7 != v6 ) { do { if ( *(_WORD *)v7 == *(_WORD *)(a2 + 2) ) break; v7 += 2; } while ( v7 != v6 ); if ( v7 != v6 ) { *((_WORD *)v5 + 2) = 11177; goto LABEL_16; } } v8 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(a2 + 4)); if ( !v8 || (v9 = *(_DWORD *)v8) == 0 ) { *((_WORD *)v5 + 2) = 11178; LABEL_16: if ( sub_4C81E0(&off_849C18, 6) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, void **))(*(_DWORD *)v16 + 12))(v16, v4, &off_849C18); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::so_ply_CollectCardOpen : Packet Too Long", 6); } goto LABEL_19; } v10 = sub_624B20((int)&dword_14D42060, *(_WORD *)(a2 + 2), (const char *)(v9 + 2)); if ( !v10 ) { *((_WORD *)v5 + 2) = 11179; goto LABEL_16; } if ( !sub_625850((void *)(v4 + 161580), v10) ) { *((_WORD *)v5 + 2) = 11180; goto LABEL_16; } v11 = off_849C18; *(_WORD *)off_849C18 = -15343; *(_DWORD *)((char *)v11 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v11 + 3) = sub_4802C0(v4); *((_WORD *)v11 + 4) = *(_WORD *)(a2 + 2); v12 = *((_DWORD *)sub_5A7540(byte_14D16AE8) + 3); v13 = sub_5A7540(byte_14D16AE8); sub_63D0E0((char *)v11 + 10, *(_WORD *)(a2 + 4), 11, *((_DWORD *)v13 + 4), v12); v14 = sub_63ACA0(dword_1508B168, *(_WORD *)(a2 + 4)); (*(void (__thiscall **)(void *, _DWORD, char *, _DWORD))(*(_DWORD *)v14 + 20))( v14, *(_WORD *)(a2 + 4), (char *)v11 + 10, "-o"); if ( sub_4C81E0(&off_849C18, 121) ) { v15 = sub_428750((int)&dword_14D16430); sub_4C7EC0(&off_849C18, v15); } else { sub_639100(&unk_86DDD8, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_REWARD_REQ : Packet Too Long", 121); } LABEL_19: --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::sp_NC_COLLECT_REWARD_REQ"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 14D16430: using guessed type int dword_14D16430; // 14D20890: using guessed type int dword_14D20890; // 14D42060: using guessed type int dword_14D42060; //----- (00625C40) -------------------------------------------------------- int __thiscall sub_625C40(void *this, int a2) { int v2; // esi@1 const void *v3; // eax@1 void *v4; // edi@1 int v5; // ebx@4 unsigned int v6; // eax@5 void *v7; // edx@6 int v8; // ecx@7 int v9; // edi@7 int v10; // eax@8 int v11; // eax@9 int v12; // ecx@9 unsigned int v13; // ecx@11 int v14; // edi@16 int v15; // eax@16 int v16; // ecx@18 int v17; // eax@19 int v18; // eax@20 int v19; // ecx@20 unsigned int v20; // ecx@22 int v21; // eax@27 int v23; // [sp+14h] [bp-14h]@4 signed int v24; // [sp+18h] [bp-10h]@3 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CardCollection::CardCollectionReward::ccr_Load"); dword_7508B8[dword_750CB8] = (int)"CardCollection::CardCollectionReward::ccr_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = *(const void **)(v2 + 4); v4 = *(void **)v2; if ( *(const void **)v2 != v3 ) { memmove_0(v4, v3, 0); *(_DWORD *)(v2 + 4) = v4; } v24 = 0; if ( *(_WORD *)(a2 + 4) > 0u ) { v5 = a2 + 6; v23 = a2 + 6; do { v6 = *(_DWORD *)(v2 + 4); if ( v5 >= v6 || (v7 = *(void **)v2, *(_DWORD *)v2 > (unsigned int)v5) ) { v16 = *(_DWORD *)(v2 + 8); if ( v6 == v16 ) { v17 = (signed int)(v6 - *(_DWORD *)v2) >> 1; if ( (unsigned int)v17 > 0x7FFFFFFE ) LABEL_31: sub_65178B((int)"vector too long"); v18 = v17 + 1; v19 = (v16 - *(_DWORD *)v2) >> 1; if ( v18 > (unsigned int)v19 ) { if ( 2147483647 - ((unsigned int)v19 >> 1) >= v19 ) v20 = ((unsigned int)v19 >> 1) + v19; else v20 = 0; if ( v20 < v18 ) v20 = v18; sub_479A70(v2, v20); } } v21 = *(_DWORD *)(v2 + 4); if ( v21 ) *(_WORD *)v21 = *(_WORD *)v5; } else { v8 = *(_DWORD *)(v2 + 8); v9 = (v5 - (signed int)v7) >> 1; if ( v6 == v8 ) { v10 = (signed int)(v6 - (_DWORD)v7) >> 1; if ( (unsigned int)v10 > 0x7FFFFFFE ) goto LABEL_31; v11 = v10 + 1; v12 = (v8 - (signed int)v7) >> 1; if ( v11 > (unsigned int)v12 ) { if ( 2147483647 - ((unsigned int)v12 >> 1) >= v12 ) v13 = ((unsigned int)v12 >> 1) + v12; else v13 = 0; if ( v13 < v11 ) v13 = v11; sub_479A70(v2, v13); v5 = v23; } } v14 = *(_DWORD *)v2 + 2 * v9; v15 = *(_DWORD *)(v2 + 4); if ( v15 ) *(_WORD *)v15 = *(_WORD *)v14; } *(_DWORD *)(v2 + 4) += 2; v5 += 2; ++v24; v23 = v5; } while ( v24 < *(_WORD *)(a2 + 4) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CardCollection::CardCollectionReward::ccr_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00625E00) -------------------------------------------------------- int __thiscall sub_625E00(int this, unsigned int a2) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int v5; // ST04_4@4 void *v6; // ST00_4@4 signed int v7; // edx@4 int v8; // edi@4 int v9; // ecx@6 int v10; // edi@6 int v11; // [sp+0h] [bp-24h]@1 int v12; // [sp+10h] [bp-14h]@4 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@4 v13 = &v11; v2 = this; if ( a2 > 0x1745D174 ) sub_65178B((int)"vector too long"); result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 11; if ( result < a2 ) { v4 = sub_624790(a2); v5 = *(_DWORD *)(v2 + 4); v6 = *(void **)v2; v12 = v4; v14 = 0; sub_6257E0((int)v6, v5, v4); v7 = (signed int)((unsigned __int64)(780903145i64 * (*(_DWORD *)(v2 + 4) - *(_DWORD *)v2)) >> 32) >> 1; v8 = v7 + ((unsigned int)v7 >> 31); if ( *(_DWORD *)v2 ) operator delete(*(void **)v2); v9 = v12; result = v12 + 11 * a2; v10 = v12 + 11 * v8; *(_DWORD *)(v2 + 8) = result; *(_DWORD *)(v2 + 4) = v10; *(_DWORD *)v2 = v9; } return result; } //----- (00625ED7) -------------------------------------------------------- void __usercall sub_625ED7(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00625EF0) -------------------------------------------------------- int __thiscall sub_625EF0(int this, int a2) { int v2; // esi@1 int v3; // esi@3 int result; // eax@3 unsigned int v5; // eax@5 v2 = (*(_DWORD *)(this + 4) - *(_DWORD *)this) / 11; if ( 390451572 - a2 < (unsigned int)v2 ) sub_65178B((int)"vector too long"); v3 = a2 + v2; result = (*(_DWORD *)(this + 8) - *(_DWORD *)this) / 11; if ( v3 > (unsigned int)result ) { if ( 390451572 - ((unsigned int)result >> 1) >= result ) v5 = ((unsigned int)result >> 1) + result; else v5 = 0; if ( v5 < v3 ) v5 = v3; result = sub_625E00(this, v5); } return result; } //----- (00625F70) -------------------------------------------------------- void *__thiscall sub_625F70(void *this, int a2) { void *result; // eax@1 char *v3; // ecx@1 int v4; // ecx@1 int v10; // [sp+10h] [bp+8h]@2 result = this; v3 = (char *)this + 12; *((_DWORD *)result + 2) = v3; *(_DWORD *)result = &off_703760; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)result + 1) = a2; v4 = *((_DWORD *)result + 2); if ( *(_DWORD *)v4 != *(_DWORD *)(v4 + 4) ) { v10 = *(_DWORD *)v4; *(_DWORD *)(v4 + 4) = v10; } return result; } // 625F70: could not find valid save-restore pair for edi // 625F70: could not find valid save-restore pair for esi // 703760: using guessed type int (*off_703760)(); //----- (00625FE0) -------------------------------------------------------- int __thiscall sub_625FE0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 unsigned int v4; // ecx@1 signed int v5; // edx@3 int v6; // esi@3 int result; // eax@8 v2 = a2; v3 = this; v4 = *(_DWORD *)(this + 4); if ( a2 >= v4 || *(_DWORD *)v3 > (unsigned int)a2 ) { if ( v4 == *(_DWORD *)(v3 + 8) ) sub_625EF0(v3, 1); } else { v5 = (signed int)((unsigned __int64)(780903145i64 * (a2 - *(_DWORD *)v3)) >> 32) >> 1; v6 = v5 + ((unsigned int)v5 >> 31); if ( v4 == *(_DWORD *)(v3 + 8) ) sub_625EF0(v3, 1); v2 = *(_DWORD *)v3 + 11 * v6; } result = *(_DWORD *)(v3 + 4); if ( result ) { *(_DWORD *)result = *(_DWORD *)v2; *(_DWORD *)(result + 4) = *(_DWORD *)(v2 + 4); *(_WORD *)(result + 8) = *(_WORD *)(v2 + 8); *(_BYTE *)(result + 10) = *(_BYTE *)(v2 + 10); } *(_DWORD *)(v3 + 4) += 11; return result; } //----- (00626060) -------------------------------------------------------- int __thiscall sub_626060(int this, int a2) { *(_DWORD *)(this + 8) = a2; return sub_5B18C0(this); } //----- (00626100) -------------------------------------------------------- void *__thiscall sub_626100(void *this) { void *result; // eax@1 char *v2; // ecx@1 int v3; // ecx@1 int v9; // [sp+8h] [bp-4h]@2 result = this; v2 = (char *)this + 12; *((_DWORD *)result + 2) = v2; *(_DWORD *)result = &off_703778; *(_DWORD *)v2 = 0; *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; v3 = *((_DWORD *)result + 2); *((_DWORD *)result + 1) = 0; if ( *(_DWORD *)v3 != *(_DWORD *)(v3 + 4) ) { v9 = *(_DWORD *)v3; *(_DWORD *)(v3 + 4) = v9; } return result; } // 626100: could not find valid save-restore pair for edi // 626100: could not find valid save-restore pair for esi // 703778: using guessed type int (*off_703778)(); //----- (00626170) -------------------------------------------------------- void *__thiscall sub_626170(void *this) { void *result; // eax@1 char *v2; // ecx@1 int v3; // ecx@1 int v9; // [sp+8h] [bp-4h]@2 result = this; v2 = (char *)this + 12; *((_DWORD *)result + 2) = v2; *(_DWORD *)result = &off_703784; *(_DWORD *)v2 = 0; *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; v3 = *((_DWORD *)result + 2); *((_DWORD *)result + 1) = 0; if ( *(_DWORD *)v3 != *(_DWORD *)(v3 + 4) ) { v9 = *(_DWORD *)v3; *(_DWORD *)(v3 + 4) = v9; } return result; } // 626170: could not find valid save-restore pair for edi // 626170: could not find valid save-restore pair for esi // 703784: using guessed type int (*off_703784)(); //----- (006261E0) -------------------------------------------------------- void *__thiscall sub_6261E0(void *this, int a2) { void *result; // eax@1 char *v3; // ecx@1 int v4; // ecx@1 int v10; // [sp+10h] [bp+8h]@2 result = this; v3 = (char *)this + 12; *((_DWORD *)result + 2) = v3; *(_DWORD *)result = &off_703790; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)result + 1) = a2; v4 = *((_DWORD *)result + 2); if ( *(_DWORD *)v4 != *(_DWORD *)(v4 + 4) ) { v10 = *(_DWORD *)v4; *(_DWORD *)(v4 + 4) = v10; } return result; } // 6261E0: could not find valid save-restore pair for edi // 6261E0: could not find valid save-restore pair for esi // 703790: using guessed type int (*off_703790)(); //----- (00626250) -------------------------------------------------------- void *__thiscall sub_626250(void *this, int a2) { void *result; // eax@1 char *v3; // ecx@1 int v4; // ecx@1 int v5; // esi@1 result = this; v3 = (char *)this + 12; *((_DWORD *)result + 2) = v3; *(_DWORD *)result = &off_7037A8; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)result + 1) = a2; v4 = *((_DWORD *)result + 2); v5 = *(_DWORD *)v4; if ( *(_DWORD *)v4 != *(_DWORD *)(v4 + 4) ) *(_DWORD *)(v4 + 4) = v5; return result; } // 626250: could not find valid save-restore pair for ebx // 7037A8: using guessed type int (*off_7037A8)(); //----- (006262B0) -------------------------------------------------------- void *__thiscall sub_6262B0(void *this, int a2) { void *result; // eax@1 char *v3; // ecx@1 int v4; // ecx@1 int v10; // [sp+10h] [bp+8h]@2 result = this; v3 = (char *)this + 12; *((_DWORD *)result + 2) = v3; *(_DWORD *)result = &off_7037B4; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)result + 1) = a2; v4 = *((_DWORD *)result + 2); if ( *(_DWORD *)v4 != *(_DWORD *)(v4 + 4) ) { v10 = *(_DWORD *)v4; *(_DWORD *)(v4 + 4) = v10; } return result; } // 6262B0: could not find valid save-restore pair for edi // 6262B0: could not find valid save-restore pair for esi // 7037B4: using guessed type int (*off_7037B4)(); //----- (00626320) -------------------------------------------------------- void *__thiscall sub_626320(void *this, int a2) { void *result; // eax@1 char *v3; // ecx@1 int v4; // ecx@1 int v10; // [sp+10h] [bp+8h]@2 result = this; v3 = (char *)this + 12; *((_DWORD *)result + 2) = v3; *(_DWORD *)result = &off_7037C0; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)result + 1) = a2; v4 = *((_DWORD *)result + 2); if ( *(_DWORD *)v4 != *(_DWORD *)(v4 + 4) ) { v10 = *(_DWORD *)v4; *(_DWORD *)(v4 + 4) = v10; } return result; } // 626320: could not find valid save-restore pair for edi // 626320: could not find valid save-restore pair for esi // 7037C0: using guessed type int (*off_7037C0)(); //----- (00626390) -------------------------------------------------------- int __thiscall sub_626390(void *this, int a2) { int v2; // edi@1 int v3; // ecx@1 int v6; // esi@5 int v7; // ebx@6 unsigned int v8; // ecx@7 int v9; // esi@9 int v10; // eax@11 int v11; // esi@11 int v12; // eax@16 signed int v14; // [sp+14h] [bp-10h]@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CardCollection::CardCollectionAlbum::cca_Load"); dword_7508B8[dword_750CB8] = (int)"CardCollection::CardCollectionAlbum::cca_Load"; dword_750AB8[dword_750CB8++] = -1; v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; v6 = a2; v14 = 0; if ( *(_WORD *)(a2 + 4) > 0u ) { v7 = a2 + 6; do { v8 = *(_DWORD *)(v2 + 4); if ( v7 >= v8 || *(_DWORD *)v2 > (unsigned int)v7 ) { if ( v8 == *(_DWORD *)(v2 + 8) ) sub_625EF0(v2, 1); v12 = *(_DWORD *)(v2 + 4); if ( v12 ) { *(_DWORD *)v12 = *(_DWORD *)v7; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v7 + 4); *(_WORD *)(v12 + 8) = *(_WORD *)(v7 + 8); *(_BYTE *)(v12 + 10) = *(_BYTE *)(v7 + 10); } } else { v9 = (v7 - *(_DWORD *)v2) / 11; if ( *(_DWORD *)(v2 + 4) == *(_DWORD *)(v2 + 8) ) sub_625EF0(v2, 1); v10 = *(_DWORD *)(v2 + 4); v11 = *(_DWORD *)v2 + 11 * v9; if ( v10 ) { *(_DWORD *)v10 = *(_DWORD *)v11; *(_DWORD *)(v10 + 4) = *(_DWORD *)(v11 + 4); *(_WORD *)(v10 + 8) = *(_WORD *)(v11 + 8); *(_BYTE *)(v10 + 10) = *(_BYTE *)(v11 + 10); } v6 = a2; } *(_DWORD *)(v2 + 4) += 11; v7 += 11; ++v14; } while ( v14 < *(_WORD *)(v6 + 4) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CardCollection::CardCollectionAlbum::cca_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00626520) -------------------------------------------------------- int __thiscall sub_626520(void *this, int a2) { int v2; // esi@1 int v3; // edx@2 int v6; // ebx@6 unsigned int v7; // eax@7 int v8; // edx@8 int v9; // ecx@9 int v10; // edi@9 int v11; // eax@10 int v12; // eax@11 int v13; // ecx@11 unsigned int v14; // ecx@13 int v15; // edi@18 int v16; // eax@18 int v17; // ecx@20 int v18; // eax@21 int v19; // eax@22 int v20; // ecx@22 unsigned int v21; // ecx@24 int v22; // eax@29 int v24; // [sp+14h] [bp-14h]@6 signed int v25; // [sp+18h] [bp-10h]@5 v2 = (int)this; sub_4675D0((int)&unk_D020420, (int)"CardCollection::CardCollectionBookmark::ccb_Load"); dword_7508B8[dword_750CB8] = (int)"CardCollection::CardCollectionBookmark::ccb_Load"; dword_750AB8[dword_750CB8++] = -1; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) { v3 = *(_DWORD *)v2; *(_DWORD *)(v2 + 4) = v3; } v25 = 0; if ( *(_WORD *)(a2 + 4) > 0u ) { v6 = a2 + 6; v24 = a2 + 6; do { v7 = *(_DWORD *)(v2 + 4); if ( v6 >= v7 || (v8 = *(_DWORD *)v2, *(_DWORD *)v2 > (unsigned int)v6) ) { v17 = *(_DWORD *)(v2 + 8); if ( v7 == v17 ) { v18 = (signed int)(v7 - *(_DWORD *)v2) >> 2; if ( (unsigned int)v18 > 0x3FFFFFFE ) LABEL_33: sub_65178B((int)"vector too long"); v19 = v18 + 1; v20 = (v17 - *(_DWORD *)v2) >> 2; if ( v19 > (unsigned int)v20 ) { if ( 1073741823 - ((unsigned int)v20 >> 1) >= v20 ) v21 = ((unsigned int)v20 >> 1) + v20; else v21 = 0; if ( v21 < v19 ) v21 = v19; sub_61F820(v2, v21); } } v22 = *(_DWORD *)(v2 + 4); if ( v22 ) *(_DWORD *)v22 = *(_DWORD *)v6; } else { v9 = *(_DWORD *)(v2 + 8); v10 = (v6 - v8) >> 2; if ( v7 == v9 ) { v11 = (signed int)(v7 - v8) >> 2; if ( (unsigned int)v11 > 0x3FFFFFFE ) goto LABEL_33; v12 = v11 + 1; v13 = (v9 - v8) >> 2; if ( v12 > (unsigned int)v13 ) { if ( 1073741823 - ((unsigned int)v13 >> 1) >= v13 ) v14 = ((unsigned int)v13 >> 1) + v13; else v14 = 0; if ( v14 < v12 ) v14 = v12; sub_61F820(v2, v14); v6 = v24; } } v15 = *(_DWORD *)v2 + 4 * v10; v16 = *(_DWORD *)(v2 + 4); if ( v16 ) *(_DWORD *)v16 = *(_DWORD *)v15; } *(_DWORD *)(v2 + 4) += 4; v6 += 4; ++v25; v24 = v6; } while ( v25 < *(_WORD *)(a2 + 4) ); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"CardCollection::CardCollectionBookmark::ccb_Load"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (006266E0) -------------------------------------------------------- int __thiscall sub_6266E0(void *this, __int16 a2, int a3, char a4, int a5) { void *v5; // esi@1 int v6; // edx@1 int v7; // eax@1 char v9; // [sp+Ch] [bp-1Ch]@5 int v10; // [sp+10h] [bp-18h]@5 __int16 v11; // [sp+14h] [bp-14h]@1 char v12; // [sp+16h] [bp-12h]@5 unsigned int v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+24h] [bp-4h]@1 int v15; // [sp+28h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v5 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardRegist"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CardRegist"; dword_750AB8[dword_750CB8++] = -1; v6 = *((_DWORD *)v5 + 40396); v7 = *((_DWORD *)v5 + 40395); v14 = 0; v11 = a2; if ( v7 == v6 ) goto LABEL_12; do { if ( *(_WORD *)(v7 + 8) == a2 ) break; v7 += 11; } while ( v7 != v6 ); if ( v7 != v6 ) { *(_DWORD *)(v7 + 4) = a3; *(_BYTE *)(v7 + 10) = a4; } else { LABEL_12: v10 = a3; v12 = a4; sub_625FE0((int)((char *)v5 + 161580), (int)&v9); } if ( a5 != 128 ) sub_5C8FF0((int *)v5 + 39092, a5, 1, 0); --dword_750CB8; v14 = -1; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardRegist"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; // 86FEB8: using guessed type int __security_cookie; //----- (00626800) -------------------------------------------------------- int __thiscall sub_626800(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v4; // edx@1 int v5; // eax@1 __int16 v6; // di@1 int v7; // ecx@1 __int16 v8; // dx@6 int v9; // edx@8 int i; // esi@9 v2 = this; sub_4675D0((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardBookmarkRegist"); dword_7508B8[dword_750CB8] = (int)"ShineObjectClass::ShinePlayer::so_ply_CardBookmarkRegist"; dword_750AB8[dword_750CB8++] = -1; v3 = a2; v4 = *((_DWORD *)v2 + 40400); v5 = *((_DWORD *)v2 + 40399); v6 = *(_WORD *)a2; v7 = (int)((char *)v2 + 161596); LOWORD(a2) = *(_WORD *)a2; if ( v5 == v4 ) goto LABEL_15; do { if ( *(_WORD *)v5 == v6 ) break; v5 += 4; } while ( v5 != v4 ); if ( v5 != v4 ) { v8 = *(_WORD *)(v3 + 2); if ( v8 == -1 ) { v9 = v5 + 4; if ( v5 != v5 + 4 ) { for ( i = *((_DWORD *)v2 + 40400); v9 != i; v5 += 4 ) { *(_DWORD *)v5 = *(_DWORD *)v9; v9 += 4; } *(_DWORD *)(v7 + 4) = v5; } } else { *(_WORD *)(v5 + 2) = v8; } } else { LABEL_15: HIWORD(a2) = *(_WORD *)(v3 + 2); sub_4478A0(v7, (unsigned int)&a2); } --dword_750CB8; return sub_467660((int)&unk_D020420, (int)"ShineObjectClass::ShinePlayer::so_ply_CardBookmarkRegist"); } // 7508B8: using guessed type int dword_7508B8[]; // 750AB8: using guessed type int dword_750AB8[]; // 750CB8: using guessed type int dword_750CB8; //----- (00626920) -------------------------------------------------------- void __thiscall sub_626920(int this) { int v1; // edi@1 int v2; // ecx@3 int v3; // ebx@3 unsigned int v10; // eax@8 unsigned int v11; // ecx@8 int v12; // esi@12 int v13; // ebx@14 unsigned int v14; // ecx@14 signed int v15; // edx@16 int v16; // esi@16 void *v17; // eax@21 int v18; // [sp+Ch] [bp-284h]@1 unsigned int v19; // [sp+10h] [bp-280h]@8 int (__thiscall **v20)(void *, char); // [sp+14h] [bp-27Ch]@8 int v21; // [sp+48h] [bp-248h]@8 char v22; // [sp+54h] [bp-23Ch]@8 char v23; // [sp+80h] [bp-210h]@3 unsigned int v24; // [sp+280h] [bp-10h]@1 int v25; // [sp+28Ch] [bp-4h]@8 int v26; // [sp+290h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v1 = this; v18 = this; if ( *(_DWORD *)(this + 4) == 0 ) { sub_639100(&unk_86DDD8, (int)"CommonData::cd_Load : Name NULL", 0); loc_6391B0("CommonData::cd_Load"); } sprintf(&v23, "../9Data/Shine/%s", *(_DWORD *)(v1 + 4)); v2 = *(_DWORD *)(v1 + 8); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 != *(_DWORD *)(v2 + 4) ) *(_DWORD *)(v2 + 4) = v3; sub_639920((int)&v20); v20 = &off_6F5CD0; memset(&v22, 0, 0x2Au); v25 = 0; sub_5AC650(&v20, &v23); v10 = *(_DWORD *)(v21 + 40); v11 = 0; v19 = 0; if ( (signed int)v10 > 0 ) { while ( 1 ) { v12 = v11 < v10 ? sub_626BC0((int)&v20, v11) : &v22; v13 = *(_DWORD *)(v1 + 8); v14 = *(_DWORD *)(v13 + 4); if ( v12 >= v14 || *(_DWORD *)v13 > (unsigned int)v12 ) { if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3C10(v13, 1); } else { v15 = (signed int)((unsigned __int64)(818089009i64 * (v12 - *(_DWORD *)v13)) >> 32) >> 3; v16 = v15 + ((unsigned int)v15 >> 31); if ( v14 == *(_DWORD *)(v13 + 8) ) sub_5B3C10(v13, 1); v12 = *(_DWORD *)v13 + 42 * v16; } v17 = *(void **)(v13 + 4); if ( v17 ) memcpy(v17, (const void *)v12, 0x2Au); *(_DWORD *)(v13 + 4) += 42; v10 = *(_DWORD *)(v21 + 40); ++v19; if ( (signed int)v19 >= (signed int)v10 ) break; v1 = v18; v11 = v19; } } v25 = -1; v20 = &off_6F5CD0; sub_639940((int)&v20); } // 6F5CD0: using guessed type int (__thiscall *off_6F5CD0)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00626B20) -------------------------------------------------------- int __thiscall sub_626B20(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_703928; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; return result; } // 703928: using guessed type int (__thiscall *off_703928)(void *, char); //----- (00626B50) -------------------------------------------------------- void __thiscall sub_626B50(int this) { int v1; // esi@1 v1 = this; if ( *(_DWORD *)(this + 8) ) { operator delete(*(void **)(this + 52)); *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 56) = 0; } *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (00626B80) -------------------------------------------------------- char __cdecl sub_626B80(int a1, int a2) { char result; // al@1 int v3; // ecx@1 char i; // [sp+Fh] [bp+Fh]@1 result = a2; v3 = a2 - 1; for ( i = a2; v3 >= 0; i = result ) { *(_BYTE *)(v3 + a1) ^= result; result = i ^ ((v3 & 0xF) + 85) ^ (unsigned __int8)(11 * v3) ^ 0xAA; --v3; } return result; } //----- (00626BC0) -------------------------------------------------------- int __thiscall sub_626BC0(int this, unsigned int a2) { int v2; // eax@1 int result; // eax@2 v2 = *(_DWORD *)(this + 52); if ( v2 && a2 < *(_DWORD *)(v2 + 40) ) result = *(_DWORD *)(*(_DWORD *)(this + 60) + 4 * a2); else result = 0; return result; } //----- (00626C10) -------------------------------------------------------- void __thiscall sub_626C10(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_703928; if ( *(_DWORD *)(this + 8) ) { operator delete(*(void **)(this + 52)); *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 56) = 0; } *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 16) = 0; if ( *(_DWORD *)(v1 + 12) ) sub_6530A4(*(void **)(v1 + 60)); *(_DWORD *)(v1 + 12) = 0; } // 703928: using guessed type int (__thiscall *off_703928)(void *, char); //----- (00626C50) -------------------------------------------------------- signed int __thiscall sub_626C50(int this, int a2) { int v2; // edi@1 int v3; // ecx@2 int **v4; // eax@3 int v5; // eax@5 int v6; // ecx@12 int **v7; // eax@13 int v8; // eax@15 v2 = this; if ( !*(_BYTE *)(this + 4) ) { v3 = *(_DWORD *)this; if ( *(_DWORD *)v2 && ((v4 = *(int ***)(v3 + 32), !*v4) || **(_DWORD **)(v3 + 48) <= 0 ? (v5 = (*(int (**)(void))(*(_DWORD *)v3 + 24))()) : (v5 = *(_BYTE *)*v4), v5 != -1) ) *(_BYTE *)(v2 + 5) = v5; else *(_DWORD *)v2 = 0; *(_BYTE *)(v2 + 4) = 1; } if ( !*(_BYTE *)(a2 + 4) ) { v6 = *(_DWORD *)a2; if ( *(_DWORD *)a2 && ((v7 = *(int ***)(v6 + 32), !*v7) || **(_DWORD **)(v6 + 48) <= 0 ? (v8 = (*(int (**)(void))(*(_DWORD *)v6 + 24))()) : (v8 = *(_BYTE *)*v7), v8 != -1) ) *(_BYTE *)(a2 + 5) = v8; else *(_DWORD *)a2 = 0; *(_BYTE *)(a2 + 4) = 1; } if ( *(_DWORD *)v2 ) { if ( !*(_DWORD *)a2 ) return 0; } else { if ( *(_DWORD *)a2 ) return 0; } return 1; } //----- (00626D00) -------------------------------------------------------- void *__thiscall sub_626D00(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_703928; if ( *((_DWORD *)this + 2) ) { operator delete(*((void **)this + 13)); *((_DWORD *)v2 + 13) = 0; *((_DWORD *)v2 + 14) = 0; } *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 4) = 0; if ( *((_DWORD *)v2 + 3) ) sub_6530A4(*((void **)v2 + 15)); *((_DWORD *)v2 + 3) = 0; if ( a2 & 1 ) operator delete(v2); return v2; } // 703928: using guessed type int (__thiscall *off_703928)(void *, char); //----- (00626D60) -------------------------------------------------------- int __thiscall sub_626D60(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // esi@3 int v4; // eax@3 int result; // eax@3 int v6; // edx@5 int v7; // eax@6 int *v8; // ecx@6 int **v9; // eax@9 v1 = this; v2 = **((_DWORD **)this + 8); if ( !v2 ) goto LABEL_15; if ( **((_DWORD **)this + 12) > 1 ) { --**((_DWORD **)this + 12); v3 = *((_DWORD *)this + 8); v4 = *(_DWORD *)v3 + 1; *(_DWORD *)v3 = v4; return *(_BYTE *)v4; } if ( v2 && (v6 = *((_DWORD *)this + 12), *(_DWORD *)v6 > 0) ) { --*(_DWORD *)v6; v7 = *((_DWORD *)this + 8); v8 = (int *)(*(_DWORD *)v7)++; result = *(_BYTE *)v8; } else { LABEL_15: result = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 28))(this); } if ( result != -1 ) { v9 = (int **)*((_DWORD *)v1 + 8); if ( *v9 && **((_DWORD **)v1 + 12) > 0 ) result = *(_BYTE *)*v9; else result = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 24))(v1); } return result; } //----- (00626DE0) -------------------------------------------------------- char __thiscall sub_626DE0(int this) { int v1; // esi@1 int v2; // ecx@2 int **v3; // eax@3 int v4; // eax@5 v1 = this; if ( *(_BYTE *)(this + 4) ) goto LABEL_10; v2 = *(_DWORD *)this; if ( !*(_DWORD *)v1 || ((v3 = *(int ***)(v2 + 32), !*v3) || **(_DWORD **)(v2 + 48) <= 0 ? (v4 = (*(int (**)(void))(*(_DWORD *)v2 + 24))()) : (v4 = *(_BYTE *)*v3), v4 == -1) ) { *(_DWORD *)v1 = 0; *(_BYTE *)(v1 + 4) = 1; LABEL_10: LOBYTE(v4) = *(_BYTE *)(v1 + 5); return v4; } *(_BYTE *)(v1 + 5) = v4; *(_BYTE *)(v1 + 4) = 1; return v4; } //----- (00626E30) -------------------------------------------------------- void *__thiscall sub_626E30(void *this) { void *v1; // esi@1 int v2; // ecx@1 int v3; // edx@3 int **v4; // ecx@4 int *v5; // eax@4 int v6; // eax@4 void *result; // eax@7 v1 = this; v2 = *(_DWORD *)this; if ( v2 && (!**(_DWORD **)(v2 + 32) || (v3 = *(_DWORD *)(v2 + 48), *(_DWORD *)v3 <= 0) ? (v6 = (*(int (**)(void))(*(_DWORD *)v2 + 28))()) : (--*(_DWORD *)v3, v4 = *(int ***)(v2 + 32), v5 = *v4, *v4 = (int *)((char *)*v4 + 1), v6 = *(_BYTE *)v5), v6 != -1) ) { *((_BYTE *)v1 + 4) = 0; result = v1; } else { *(_DWORD *)v1 = 0; *((_BYTE *)v1 + 4) = 1; result = v1; } return result; } //----- (00626E80) -------------------------------------------------------- signed int __cdecl sub_626E80(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 char v6; // [sp+Ch] [bp-34h]@7 int v7; // [sp+30h] [bp-10h]@1 int v8; // [sp+3Ch] [bp-4h]@3 v2 = 0; v7 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(0x10u); v7 = v3; v8 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); sub_4D9080(&v6, v4); v2 = 1; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)v3 = &off_703930; *(_QWORD *)(v3 + 8) = _Getcvt(); } else { v3 = 0; } v8 = -1; *(_DWORD *)a1 = v3; if ( v2 & 1 ) sub_4D9130(&v6); } return 4; } // 703930: using guessed type int (__thiscall *off_703930)(void *, char); //----- (00626F40) -------------------------------------------------------- #error "6270D4: positive sp value has been found (funcsize=118)" //----- (006270E0) -------------------------------------------------------- int __cdecl sub_6270E0(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_14D420C8; v14 = 0; v13 = dword_14D420C8; if ( !dword_14D420CC ) { std::_Lockit::_Lockit(0); if ( !dword_14D420CC ) { ++dword_154DC980; dword_14D420CC = dword_154DC980; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_14D420CC; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_14D420CC >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_14D420CC); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_651AEE(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_626E80((int)&v13, v2) == -1 ) { sub_653952(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_73A6FC); } v7 = v13; dword_14D420C8 = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651A77: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 14D420C8: using guessed type int dword_14D420C8; // 14D420CC: using guessed type int dword_14D420CC; // 154DC980: using guessed type int dword_154DC980; //----- (00627220) -------------------------------------------------------- signed int __thiscall sub_627220(void *this, const char *a2) { void *v2; // esi@1 FILE *v3; // eax@1 FILE *v4; // edi@1 int v5; // ebx@1 int v6; // eax@2 __int32 v7; // eax@2 unsigned int v8; // ecx@2 int v9; // eax@5 int v10; // ecx@5 signed int result; // eax@10 int v12; // eax@11 int v13; // eax@14 unsigned int v14; // edi@15 unsigned int v15; // eax@17 int v16; // eax@21 unsigned int v17; // ecx@21 unsigned int v18; // eax@24 int v19; // edx@25 int v20; // ecx@25 void *v21; // eax@27 int v22; // esi@29 int v23; // [sp-24h] [bp-64h]@29 int v24; // [sp-20h] [bp-60h]@29 int v25; // [sp-1Ch] [bp-5Ch]@29 int v26; // [sp-18h] [bp-58h]@29 int v27; // [sp-14h] [bp-54h]@29 int v28; // [sp-10h] [bp-50h]@29 int v29; // [sp-Ch] [bp-4Ch]@29 signed int v30; // [sp-8h] [bp-48h]@5 unsigned int v31; // [sp-4h] [bp-44h]@1 size_t v32; // [sp+Ch] [bp-34h]@6 char *v33; // [sp+10h] [bp-30h]@1 char *v34; // [sp+14h] [bp-2Ch]@27 unsigned int v35; // [sp+28h] [bp-18h]@27 unsigned int v36; // [sp+30h] [bp-10h]@1 int v37; // [sp+3Ch] [bp-4h]@27 int v38; // [sp+40h] [bp+0h]@1 v36 = (unsigned int)&v38 ^ __security_cookie; v31 = (unsigned int)&v38 ^ __security_cookie; v2 = this; v33 = (char *)a2; v3 = fopen(a2, "rb"); v4 = v3; v5 = 0; if ( !v3 ) return 0; v6 = _fileno(v3); v7 = _filelength(v6); v8 = *((_DWORD *)v2 + 2); *((_DWORD *)v2 + 1) = v7; if ( v8 < v7 ) { if ( v8 ) { operator delete(*((void **)v2 + 13)); *((_DWORD *)v2 + 13) = 0; *((_DWORD *)v2 + 14) = 0; } v30 = *((_DWORD *)v2 + 1); *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 4) = 0; v9 = unknown_libname_130(v30); v10 = *((_DWORD *)v2 + 1); *((_DWORD *)v2 + 13) = v9; *((_DWORD *)v2 + 14) = 0; *((_DWORD *)v2 + 2) = v10; } v32 = fread(*((void **)v2 + 13), *((_DWORD *)v2 + 1), 1u, v4); fclose(v4); if ( v32 != 1 ) { if ( *((_DWORD *)v2 + 2) ) { operator delete(*((void **)v2 + 13)); *((_DWORD *)v2 + 13) = 0; *((_DWORD *)v2 + 14) = 0; } *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 4) = 0; return 0; } v12 = *((_DWORD *)v2 + 13); if ( v12 && *(_DWORD *)(v12 + 28) ) sub_626B80(v12 + 36, *((_DWORD *)v2 + 1) - 36); v13 = *((_DWORD *)v2 + 13); *((_DWORD *)v2 + 14) = v13 + 56 * *(_DWORD *)(v13 + 48) + 52; if ( v13 ) v14 = *(_DWORD *)(v13 + 40); else v14 = 0; v15 = *((_DWORD *)v2 + 3); if ( v15 < v14 ) { if ( v15 ) sub_6530A4(*((void **)v2 + 15)); *((_DWORD *)v2 + 3) = 0; *((_DWORD *)v2 + 15) = unknown_libname_130(4 * v14 | -((unsigned __int64)v14 >> 30 != 0)); *((_DWORD *)v2 + 3) = v14; } v16 = *((_DWORD *)v2 + 14); v17 = 0; if ( v14 > 0 ) { do { *(_DWORD *)(*((_DWORD *)v2 + 15) + 4 * v17++) = v16 + 2; v16 += *(_WORD *)v16; } while ( v17 < v14 ); v5 = 0; } v18 = 0; *((_DWORD *)v2 + 4) = v5; if ( *((_DWORD *)v2 + 2) > (unsigned int)v5 ) { v19 = *((_DWORD *)v2 + 13); v20 = 0; do { v20 += v18 * *(_BYTE *)(v19 + v18); ++v18; *((_DWORD *)v2 + 4) = v20; } while ( v18 < *((_DWORD *)v2 + 2) ); } sub_6377E0((int)&v34, *((const void **)v2 + 13), *((_DWORD *)v2 + 2)); v21 = v34; v37 = v5; if ( v35 < 0x10 ) v21 = &v34; v22 = (int)((char *)v2 + 20); v30 = 32; v29 = (int)v21; v28 = v22; *(_DWORD *)(v22 + 28) = v5; *(_DWORD *)(v22 + 24) = v5; *(_DWORD *)(v22 + 20) = v5; *(_DWORD *)(v22 + 16) = v5; *(_DWORD *)(v22 + 12) = v5; *(_DWORD *)(v22 + 8) = v5; *(_DWORD *)(v22 + 4) = v5; *(_DWORD *)v22 = v5; strncpy((char *)v28, (const char *)v29, v30); memcpy(&v23, (const void *)v22, 0x20u); if ( sub_62DF10(&unk_14D420D8, v33, v23, v24, v25, v26, v27, v28, v29, v30) ) { if ( v35 >= 0x10 ) operator delete(v34); result = 1; } else { if ( v35 >= 0x10 ) operator delete(v34); result = 0; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00627480) -------------------------------------------------------- int __thiscall sub_627480(void *this, const char *a2, int a3, int a4) { void *v4; // esi@1 int result; // eax@2 int v6; // eax@3 v4 = this; if ( sub_627220(this, a2) && (v6 = *((_DWORD *)v4 + 13), *(_DWORD *)v6 == a3) ) result = *(_DWORD *)(v6 + 44) - 2 == a4; else result = 0; return result; } //----- (006274C0) -------------------------------------------------------- int __thiscall sub_6274C0(int this, size_t a2, char a3) { int v3; // esi@1 size_t v4; // eax@5 int result; // eax@12 void *v6; // eax@16 bool v7; // cf@19 v3 = this; if ( a2 == -1 ) sub_65178B((int)"string too long"); if ( a2 > 0xFFFFFFFE ) sub_65178B((int)"string too long"); v4 = *(_DWORD *)(this + 20); if ( v4 < a2 ) { sub_423480(*(_DWORD *)(this + 16), this, a2, *(_DWORD *)(this + 16)); if ( !a2 ) return v3; LABEL_7: if ( a2 == 1 ) { if ( *(_DWORD *)(v3 + 20) < 0x10u ) *(_BYTE *)v3 = a3; else **(_BYTE **)v3 = a3; } else { if ( *(_DWORD *)(v3 + 20) < 0x10u ) v6 = (void *)v3; else v6 = *(void **)v3; memset(v6, a3, a2); } v7 = *(_DWORD *)(v3 + 20) < 0x10u; *(_DWORD *)(v3 + 16) = a2; if ( !v7 ) { *(_BYTE *)(*(_DWORD *)v3 + a2) = 0; return v3; } *(_BYTE *)(v3 + a2) = 0; return v3; } if ( a2 ) goto LABEL_7; *(_DWORD *)(this + 16) = 0; if ( v4 < 0x10 ) { result = this; *(_BYTE *)this = 0; } else { **(_BYTE **)this = 0; result = this; } return result; } //----- (00627580) -------------------------------------------------------- int __cdecl sub_627580(int a1, int a2, int a3, int a4, __int16 a5, int a6) { int v6; // edi@1 int v7; // ecx@6 int **v8; // eax@7 int v9; // eax@9 int v10; // ecx@15 int v11; // eax@20 int v12; // ebx@21 int v13; // ecx@27 int **v14; // eax@28 int v15; // eax@30 size_t v16; // ebx@47 int v17; // edi@49 int v18; // ecx@51 int **v19; // eax@52 int v20; // eax@54 char v21; // al@60 void *v22; // eax@65 void *v23; // eax@68 void *v24; // eax@71 int v25; // ecx@76 int **v26; // eax@77 int v27; // eax@79 int v28; // ecx@87 int v29; // eax@89 int **v30; // ecx@90 int *v31; // eax@90 int v32; // eax@90 void *v33; // eax@97 void *v34; // edx@102 void *v35; // ebx@104 unsigned int v36; // esi@104 char v37; // cl@106 void *v38; // eax@108 void *v39; // eax@112 int v40; // eax@117 unsigned int v42; // [sp-4h] [bp-6Ch]@1 int v43; // [sp+14h] [bp-54h]@21 int v44; // [sp+18h] [bp-50h]@4 char v45; // [sp+1Dh] [bp-4Bh]@2 char v46; // [sp+1Eh] [bp-4Ah]@25 char v47; // [sp+1Fh] [bp-49h]@25 void *v48; // [sp+20h] [bp-48h]@1 int v49; // [sp+30h] [bp-38h]@1 unsigned int v50; // [sp+34h] [bp-34h]@102 void *v51; // [sp+3Ch] [bp-2Ch]@49 int v52; // [sp+4Ch] [bp-1Ch]@49 unsigned int v53; // [sp+50h] [bp-18h]@49 unsigned int v54; // [sp+58h] [bp-10h]@1 int v55; // [sp+64h] [bp-4h]@1 int v56; // [sp+68h] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v42 = (unsigned int)&v56 ^ __security_cookie; v6 = sub_4DD750(a6); sub_4DC4F0((void *)v6, (int)&v48); v55 = 0; if ( v49 ) v45 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 8))(v6); else v45 = 0; v44 = a2; if ( !(unsigned __int8)sub_626C50(a3, a4) ) { if ( !*(_BYTE *)(a3 + 4) ) { v7 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v8 = *(int ***)(v7 + 32), !*v8) || **(_DWORD **)(v7 + 48) <= 0 ? (v9 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v7 + 24))(v42)) : (v9 = *(_BYTE *)*v8), v9 != -1) ) *(_BYTE *)(a3 + 5) = v9; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } v10 = a3; if ( *(_BYTE *)(a3 + 5) == 43 ) { *(_BYTE *)a2 = 43; LABEL_19: v44 = a2 + 1; sub_626E30((void *)v10); goto LABEL_20; } if ( sub_626DE0(a3) == 45 ) { *(_BYTE *)a2 = 45; v10 = a3; goto LABEL_19; } } LABEL_20: v11 = a5 & 0xE00; if ( v11 == 1024 ) { v12 = 8; v43 = 8; } else { if ( v11 == 2048 ) { v12 = 16; v43 = 16; } else { v12 = v11 != 0 ? 0xA : 0; v43 = v11 != 0 ? 0xA : 0; } } v47 = 0; v46 = 0; if ( (unsigned __int8)sub_626C50(a3, a4) ) goto LABEL_127; if ( !*(_BYTE *)(a3 + 4) ) { v13 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v14 = *(int ***)(v13 + 32), !*v14) || **(_DWORD **)(v13 + 48) <= 0 ? (v15 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v13 + 24))(v42)) : (v15 = *(_BYTE *)*v14), v15 != -1) ) *(_BYTE *)(a3 + 5) = v15; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 48 ) { LABEL_127: if ( !v12 ) goto LABEL_48; } else { v47 = 1; sub_626E30((void *)a3); if ( !(unsigned __int8)sub_626C50(a3, a4) && (sub_626DE0(a3) == 120 || sub_626DE0(a3) == 88) && (!v12 || v12 == 16) ) { v43 = 16; v47 = 0; sub_626E30((void *)a3); LABEL_47: v16 = v43 != 8 ? 22 : 8; goto LABEL_49; } if ( !v12 ) { v43 = 8; goto LABEL_47; } } if ( v12 != 10 ) goto LABEL_47; LABEL_48: v16 = 10; LABEL_49: v53 = 15; LOWORD(v51) = (unsigned __int8)v47; v52 = 1; LOBYTE(v55) = 1; v17 = 0; if ( (unsigned __int8)sub_626C50(a3, a4) ) goto LABEL_102; do { if ( !*(_BYTE *)(a3 + 4) ) { v18 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v19 = *(int ***)(v18 + 32), !*v19) || **(_DWORD **)(v18 + 48) <= 0 ? (v20 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v18 + 24))(v42)) : (v20 = *(_BYTE *)*v19), v20 != -1) ) *(_BYTE *)(a3 + 5) = v20; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } v21 = *(_BYTE *)(a3 + 5); *(_BYTE *)v44 = v21; if ( memchr("0123456789abcdefABCDEF", v21, v16) ) { if ( (v46 || *(_BYTE *)v44 != 48) && v44 < (unsigned int)(a2 + 31) ) { ++v44; v46 = 1; } v22 = v51; v47 = 1; if ( v53 < 0x10 ) v22 = &v51; if ( *((_BYTE *)v22 + v17) != 127 ) { v23 = v51; if ( v53 < 0x10 ) v23 = &v51; ++*((_BYTE *)v23 + v17); } goto LABEL_87; } v24 = v51; if ( v53 < 0x10 ) v24 = &v51; if ( !*((_BYTE *)v24 + v17) || !v45 ) break; if ( !*(_BYTE *)(a3 + 4) ) { v25 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v26 = *(int ***)(v25 + 32), !*v26) || **(_DWORD **)(v25 + 48) <= 0 ? (v27 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v25 + 24))(v42)) : (v27 = *(_BYTE *)*v26), v27 != -1) ) *(_BYTE *)(a3 + 5) = v27; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != v45 ) break; sub_4DCB30((int)&v51, 1u, 0); ++v17; LABEL_87: v28 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && (!**(_DWORD **)(v28 + 32) || (v29 = *(_DWORD *)(v28 + 48), *(_DWORD *)v29 <= 0) ? (v32 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v28 + 28))(v42)) : (--*(_DWORD *)v29, v30 = *(int ***)(v28 + 32), v31 = *v30, *v30 = (int *)((char *)*v30 + 1), v32 = *(_BYTE *)v31), v32 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } while ( !(unsigned __int8)sub_626C50(a3, a4) ); if ( v17 ) { v33 = v51; if ( v53 < 0x10 ) v33 = &v51; if ( *((_BYTE *)v33 + v17) <= 0 ) v47 = 0; else ++v17; } LABEL_102: v34 = v48; if ( v50 < 0x10 ) v34 = &v48; v35 = v51; v36 = v53; if ( v47 ) { while ( v17 ) { v37 = *(_BYTE *)v34; if ( *(_BYTE *)v34 == 127 ) break; --v17; if ( v17 ) { v38 = v51; if ( v53 < 0x10 ) v38 = &v51; if ( v37 != *((_BYTE *)v38 + v17) ) goto LABEL_119; } if ( !v17 ) { v39 = v51; if ( v53 < 0x10 ) v39 = &v51; if ( v37 < *(_BYTE *)v39 ) goto LABEL_119; } if ( *((_BYTE *)v34 + 1) > 0 ) v34 = (char *)v34 + 1; } v40 = v44; if ( !v46 ) { *(_BYTE *)v44 = 48; v40 = v44 + 1; } } else { LABEL_119: v40 = a2; } *(_BYTE *)v40 = 0; if ( v36 >= 0x10 ) operator delete(v35); if ( v50 >= 0x10 ) operator delete(v48); return v43; } // 86FEB8: using guessed type int __security_cookie; //----- (006279E0) -------------------------------------------------------- int __cdecl sub_6279E0(int a1, int a2, int a3, int a4, int a5, int a6) { int v6; // eax@1 int v7; // eax@1 int v8; // ebx@1 unsigned int v9; // eax@2 int v10; // edi@5 int v11; // edi@5 int v12; // ebx@7 int v13; // edi@7 int v14; // ecx@9 int **v15; // eax@10 int v16; // eax@12 int v17; // ecx@18 int v18; // eax@23 int v19; // ecx@25 int **v20; // eax@26 int v21; // eax@28 int v22; // eax@35 void *v23; // eax@40 void *v24; // eax@43 int v25; // ecx@51 int **v26; // eax@52 int v27; // eax@54 int v28; // eax@60 int v29; // edi@62 int v30; // ebx@70 int v31; // eax@74 void *v32; // eax@75 void *v33; // eax@78 void *v34; // eax@81 int v35; // ecx@87 int v36; // edx@89 int **v37; // ecx@90 int *v38; // eax@90 int v39; // eax@90 void *v40; // eax@97 void *v41; // edx@102 int v42; // ebx@105 char v43; // cl@107 void *v44; // eax@109 void *v45; // eax@113 int v46; // ebx@122 int v47; // eax@124 int v48; // edi@125 int v49; // ecx@127 int **v50; // eax@128 int v51; // eax@130 int v52; // ecx@133 int **v53; // eax@134 int v54; // eax@136 int v55; // eax@142 int v56; // edi@144 int v57; // ecx@155 int **v58; // eax@156 int v59; // eax@158 int v60; // eax@166 int v61; // ecx@167 int v62; // eax@169 int **v63; // ecx@170 int *v64; // eax@170 int v65; // eax@170 char *v66; // ecx@183 int v67; // eax@183 int v68; // ecx@183 int v69; // edx@185 int **v70; // ecx@186 int *v71; // eax@186 int v72; // eax@186 signed int v73; // ebx@191 int v74; // ecx@194 int **v75; // eax@195 int v76; // eax@197 int v77; // ecx@204 int v78; // eax@206 int **v79; // ecx@207 int *v80; // eax@207 int v81; // eax@207 int v82; // eax@214 int v83; // ecx@217 int **v84; // eax@218 int v85; // eax@220 int v86; // eax@226 int v87; // eax@228 char v88; // cl@237 int v89; // eax@237 int v90; // ecx@238 int v91; // eax@240 int **v92; // ecx@241 int *v93; // eax@241 int v94; // eax@241 int v95; // ecx@252 int **v96; // eax@253 int v97; // eax@255 int v98; // ecx@263 int **v99; // eax@264 int v100; // eax@266 int v101; // ebx@273 int v102; // ecx@273 int v103; // ebx@273 int v104; // eax@275 int **v105; // ecx@276 int *v106; // eax@276 int v107; // eax@276 int v108; // edi@281 int v109; // ecx@283 int **v110; // eax@284 int v111; // eax@286 int v112; // ecx@293 int v113; // eax@295 int v114; // ecx@296 int *v115; // eax@296 int v116; // eax@296 int v117; // ecx@298 int **v118; // eax@299 int v119; // eax@301 int v120; // eax@310 int v121; // ecx@311 int *v122; // eax@311 int v123; // ecx@318 int **v124; // eax@319 int v125; // eax@321 int v126; // ecx@328 int v127; // eax@330 int **v128; // ecx@331 int *v129; // eax@331 int v130; // eax@331 int v131; // eax@339 int v132; // edi@340 int v133; // ebx@341 int v134; // ecx@343 int **v135; // eax@344 int v136; // eax@346 int v137; // ecx@354 int **v138; // eax@355 int v139; // eax@357 int v140; // ecx@366 int **v141; // eax@367 int v142; // eax@369 int v143; // ecx@376 int v144; // eax@378 int **v145; // ecx@379 int *v146; // eax@379 int v147; // eax@379 int v148; // eax@388 bool v149; // cf@390 int v150; // ecx@390 unsigned int v152; // [sp-4h] [bp-84h]@1 int v153; // [sp+Ch] [bp-74h]@1 int v154; // [sp+10h] [bp-70h]@1 int v155; // [sp+14h] [bp-6Ch]@1 void *v156; // [sp+18h] [bp-68h]@1 int v157; // [sp+1Ch] [bp-64h]@23 int v158; // [sp+20h] [bp-60h]@23 int v159; // [sp+24h] [bp-5Ch]@1 int v160; // [sp+28h] [bp-58h]@5 char v161; // [sp+2Eh] [bp-52h]@47 char v162; // [sp+2Fh] [bp-51h]@7 int v163; // [sp+30h] [bp-50h]@7 char v164; // [sp+37h] [bp-49h]@23 void *v165; // [sp+38h] [bp-48h]@7 int v166; // [sp+48h] [bp-38h]@46 unsigned int v167; // [sp+4Ch] [bp-34h]@40 void *v168; // [sp+54h] [bp-2Ch]@49 int v169; // [sp+64h] [bp-1Ch]@49 unsigned int v170; // [sp+68h] [bp-18h]@49 unsigned int v171; // [sp+70h] [bp-10h]@1 int v172; // [sp+7Ch] [bp-4h]@1 int v173; // [sp+80h] [bp+0h]@1 v171 = (unsigned int)&v173 ^ __security_cookie; v152 = (unsigned int)&v173 ^ __security_cookie; v155 = a2; v159 = a4; v154 = a6; v6 = sub_4D5680(a5, (int)&v153); v172 = 0; v7 = sub_4DD750(v6); v8 = v153; v156 = (void *)v7; v172 = -1; if ( v153 ) { std::_Lockit::_Lockit(0); v9 = *(_DWORD *)(v8 + 4); if ( v9 && v9 < 0xFFFFFFFF ) *(_DWORD *)(v8 + 4) = v9 - 1; v10 = -(*(_DWORD *)(v8 + 4) == 0); std::_Lockit::__Lockit(&v160); v11 = v8 & v10; if ( v11 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v11)(v11, 1); } sub_4DC4F0(v156, (int)&v165); v12 = v159; v13 = v155; v172 = 1; v163 = v155; v162 = 0; if ( !(unsigned __int8)sub_626C50(a3, v159) ) { if ( !*(_BYTE *)(a3 + 4) ) { v14 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v15 = *(int ***)(v14 + 32), !*v15) || **(_DWORD **)(v14 + 48) <= 0 ? (v16 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v14 + 24))(v152)) : (v16 = *(_BYTE *)*v15), v16 != -1) ) *(_BYTE *)(a3 + 5) = v16; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } v17 = a3; if ( *(_BYTE *)(a3 + 5) == 43 ) { *(_BYTE *)v13 = 43; } else { if ( sub_626DE0(a3) != 45 ) goto LABEL_23; *(_BYTE *)v13 = 45; v17 = a3; } v163 = v13 + 1; sub_626E30((void *)v17); } LABEL_23: v18 = v163; *(_WORD *)v163 = 30768; v163 = v18 + 2; v164 = 0; v157 = 0; v158 = 0; if ( !(unsigned __int8)sub_626C50(a3, v12) ) { if ( !*(_BYTE *)(a3 + 4) ) { v19 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v20 = *(int ***)(v19 + 32), !*v20) || **(_DWORD **)(v19 + 48) <= 0 ? (v21 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v19 + 24))(v152)) : (v21 = *(_BYTE *)*v20), v21 != -1) ) *(_BYTE *)(a3 + 5) = v21; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 48 ) { v22 = (int)sub_626E30((void *)a3); if ( (unsigned __int8)sub_626C50(v22, v12) || sub_626DE0(a3) != 120 && sub_626DE0(a3) != 88 ) v164 = 1; else sub_626E30((void *)a3); } } v23 = v165; if ( v167 < 0x10 ) v23 = &v165; if ( *(_BYTE *)v23 != 127 ) { v24 = v165; if ( v167 < 0x10 ) v24 = &v165; if ( *(_BYTE *)v24 > 0 ) { if ( v166 ) v161 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v156 + 8))(v152); else v161 = 0; v170 = 15; v169 = 1; LOWORD(v168) = 0; LOBYTE(v172) = 2; v160 = 0; if ( (unsigned __int8)sub_626C50(a3, v12) ) goto LABEL_102; while ( 1 ) { if ( !*(_BYTE *)(a3 + 4) ) { v25 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v26 = *(int ***)(v25 + 32), !*v26) || **(_DWORD **)(v25 + 48) <= 0 ? (v27 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v25 + 24))(v152)) : (v27 = *(_BYTE *)*v26), v27 != -1) ) *(_BYTE *)(a3 + 5) = v27; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } LOBYTE(v28) = *(_BYTE *)(a3 + 5); if ( (char)v28 < 48 || (char)v28 > 57 ) { if ( (char)v28 < 97 || (char)v28 > 102 ) { if ( (char)v28 < 65 || (v28 = (char)v28, (char)v28 > 70) ) goto LABEL_81; v29 = v28 - 55; } else { v29 = (char)v28 - 87; } } else { v29 = (char)v28 - 48; } if ( v29 >= 0 ) { v30 = v157; v164 = 1; if ( v157 < 36 ) { if ( sub_626DE0(a3) != 48 || v30 ) { v31 = v163; *(_BYTE *)v163 = byte_703978[v29]; v163 = v31 + 1; v157 = v30 + 1; } } else { ++v158; } v32 = v168; if ( v170 < 0x10 ) v32 = &v168; if ( *((_BYTE *)v32 + v160) != 127 ) { v33 = v168; if ( v170 < 0x10 ) v33 = &v168; ++*((_BYTE *)v33 + v160); } goto LABEL_87; } LABEL_81: v34 = v168; if ( v170 < 0x10 ) v34 = &v168; if ( !*((_BYTE *)v34 + v160) || !v161 || sub_626DE0(a3) != v161 ) { LABEL_96: if ( v160 ) { v40 = v168; if ( v170 < 0x10 ) v40 = &v168; if ( *((_BYTE *)v40 + v160) <= 0 ) v162 = 1; else ++v160; } LABEL_102: v41 = v165; if ( v167 < 0x10 ) v41 = &v165; if ( !v162 ) { v42 = v160; while ( v42 ) { v43 = *(_BYTE *)v41; if ( *(_BYTE *)v41 == 127 ) break; --v42; if ( v42 ) { v44 = v168; if ( v170 < 0x10 ) v44 = &v168; if ( v43 != *((_BYTE *)v44 + v42) ) goto LABEL_395; } if ( !v42 ) { v45 = v168; if ( v170 < 0x10 ) v45 = &v168; if ( v43 < *(_BYTE *)v45 ) { LABEL_395: v162 = 1; break; } } if ( *((_BYTE *)v41 + 1) > 0 ) v41 = (char *)v41 + 1; } } LOBYTE(v172) = 1; if ( v170 >= 0x10 ) operator delete(v168); LABEL_121: if ( v164 ) { v46 = v157; goto LABEL_123; } goto LABEL_125; } sub_4DCB30((int)&v168, 1u, 0); ++v160; LABEL_87: v35 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && (!**(_DWORD **)(v35 + 32) || (v36 = *(_DWORD *)(v35 + 48), *(_DWORD *)v36 <= 0) ? (v39 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v35 + 28))(v152)) : (--*(_DWORD *)v36, v37 = *(int ***)(v35 + 32), v38 = *v37, *v37 = (int *)((char *)*v37 + 1), v39 = *(_BYTE *)v38), v39 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( (unsigned __int8)sub_626C50(a3, v159) ) goto LABEL_96; } } } if ( (unsigned __int8)sub_626C50(a3, v12) ) goto LABEL_121; do { if ( !*(_BYTE *)(a3 + 4) ) { v52 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v53 = *(int ***)(v52 + 32), !*v53) || **(_DWORD **)(v52 + 48) <= 0 ? (v54 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v52 + 24))(v152)) : (v54 = *(_BYTE *)*v53), v54 != -1) ) *(_BYTE *)(a3 + 5) = v54; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } LOBYTE(v55) = *(_BYTE *)(a3 + 5); if ( (char)v55 < 48 || (char)v55 > 57 ) { if ( (char)v55 < 97 || (char)v55 > 102 ) { if ( (char)v55 < 65 || (v55 = (char)v55, (char)v55 > 70) ) goto LABEL_121; v56 = v55 - 55; } else { v56 = (char)v55 - 87; } } else { v56 = (char)v55 - 48; } if ( v56 < 0 ) goto LABEL_121; v46 = v157; if ( v157 < 36 ) { if ( !*(_BYTE *)(a3 + 4) ) { v57 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v58 = *(int ***)(v57 + 32), !*v58) || **(_DWORD **)(v57 + 48) <= 0 ? (v59 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v57 + 24))(v152)) : (v59 = *(_BYTE *)*v58), v59 != -1) ) *(_BYTE *)(a3 + 5) = v59; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 48 || v46 ) { v60 = v163; *(_BYTE *)v163 = byte_703978[v56]; ++v46; v163 = v60 + 1; v157 = v46; } } else { ++v158; } v61 = *(_DWORD *)a3; v164 = 1; if ( v61 && (!**(_DWORD **)(v61 + 32) || (v62 = *(_DWORD *)(v61 + 48), *(_DWORD *)v62 <= 0) ? (v65 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v61 + 28))(v152)) : (--*(_DWORD *)v62, v63 = *(int ***)(v61 + 32), v64 = *v63, *v63 = (int *)((char *)*v63 + 1), v65 = *(_BYTE *)v64), v65 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } while ( !(unsigned __int8)sub_626C50(a3, v159) ); LABEL_123: if ( !v46 ) { v47 = v163; *(_BYTE *)v163 = 48; v163 = v47 + 1; } LABEL_125: v48 = v159; if ( !(unsigned __int8)sub_626C50(a3, v159) ) { if ( !*(_BYTE *)(a3 + 4) ) { v49 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v50 = *(int ***)(v49 + 32), !*v50) || **(_DWORD **)(v49 + 48) <= 0 ? (v51 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v49 + 24))(v152)) : (v51 = *(_BYTE *)*v50), v51 != -1) ) *(_BYTE *)(a3 + 5) = v51; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == (unsigned __int8)(*(int (__cdecl **)(unsigned int))(*(_DWORD *)v156 + 4))(v152) ) { v66 = localeconv()->decimal_point; v67 = v163; *(_BYTE *)v163 = *v66; v68 = *(_DWORD *)a3; v163 = v67 + 1; if ( v68 && (!**(_DWORD **)(v68 + 32) || (v69 = *(_DWORD *)(v68 + 48), *(_DWORD *)v69 <= 0) ? (v72 = (*(int (**)(void))(*(_DWORD *)v68 + 28))()) : (--*(_DWORD *)v69, v70 = *(int ***)(v68 + 32), v71 = *v70, *v70 = (int *)((char *)*v70 + 1), v72 = *(_BYTE *)v71), v72 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } } v73 = v157; if ( !v157 ) { while ( !(unsigned __int8)sub_626C50(a3, v48) ) { if ( !*(_BYTE *)(a3 + 4) ) { v74 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v75 = *(int ***)(v74 + 32), !*v75) || **(_DWORD **)(v74 + 48) <= 0 ? (v76 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v74 + 24))(v152)) : (v76 = *(_BYTE *)*v75), v76 != -1) ) *(_BYTE *)(a3 + 5) = v76; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 48 ) break; v77 = *(_DWORD *)a3; --v158; v164 = 1; if ( v77 && (!**(_DWORD **)(v77 + 32) || (v78 = *(_DWORD *)(v77 + 48), *(_DWORD *)v78 <= 0) ? (v81 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v77 + 28))(v152)) : (--*(_DWORD *)v78, v79 = *(int ***)(v77 + 32), v80 = *v79, *v79 = (int *)((char *)*v79 + 1), v81 = *(_BYTE *)v80), v81 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } v48 = v159; if ( v158 < 0 ) { v82 = v163; *(_BYTE *)v163 = 48; ++v158; v163 = v82 + 1; } } if ( (unsigned __int8)sub_626C50(a3, v48) ) { LABEL_248: if ( !v164 ) goto LABEL_386; v48 = v159; } else { do { if ( !*(_BYTE *)(a3 + 4) ) { v83 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v84 = *(int ***)(v83 + 32), !*v84) || **(_DWORD **)(v83 + 48) <= 0 ? (v85 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v83 + 24))(v152)) : (v85 = *(_BYTE *)*v84), v85 != -1) ) *(_BYTE *)(a3 + 5) = v85; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } LOBYTE(v86) = *(_BYTE *)(a3 + 5); if ( (char)v86 < 48 || (char)v86 > 57 ) { if ( (char)v86 < 97 || (char)v86 > 102 ) { if ( (char)v86 < 65 || (v86 = (char)v86, (char)v86 > 70) ) goto LABEL_248; v87 = v86 - 55; } else { v87 = (char)v86 - 87; } } else { v87 = (char)v86 - 48; } if ( v87 < 0 ) goto LABEL_248; if ( v73 < 36 ) { v88 = byte_703978[v87]; v89 = v163; *(_BYTE *)v163 = v88; v163 = v89 + 1; ++v73; } v90 = *(_DWORD *)a3; v164 = 1; if ( v90 && (!**(_DWORD **)(v90 + 32) || (v91 = *(_DWORD *)(v90 + 48), *(_DWORD *)v91 <= 0) ? (v94 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v90 + 28))(v152)) : (--*(_DWORD *)v91, v92 = *(int ***)(v90 + 32), v93 = *v92, *v92 = (int *)((char *)*v92 + 1), v94 = *(_BYTE *)v93), v94 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } while ( !(unsigned __int8)sub_626C50(a3, v48) ); } if ( !(unsigned __int8)sub_626C50(a3, v48) ) { if ( !*(_BYTE *)(a3 + 4) ) { v95 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v96 = *(int ***)(v95 + 32), !*v96) || **(_DWORD **)(v95 + 48) <= 0 ? (v97 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v95 + 24))(v152)) : (v97 = *(_BYTE *)*v96), v97 != -1) ) *(_BYTE *)(a3 + 5) = v97; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 112 ) goto LABEL_396; if ( !*(_BYTE *)(a3 + 4) ) { v98 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v99 = *(int ***)(v98 + 32), !*v99) || **(_DWORD **)(v98 + 48) <= 0 ? (v100 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v98 + 24))(v152)) : (v100 = *(_BYTE *)*v99), v100 != -1) ) *(_BYTE *)(a3 + 5) = v100; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 80 ) { LABEL_396: v101 = v163; *(_BYTE *)v163 = 112; v102 = *(_DWORD *)a3; v103 = v101 + 1; v163 = v103; if ( v102 && (!**(_DWORD **)(v102 + 32) || (v104 = *(_DWORD *)(v102 + 48), *(_DWORD *)v104 <= 0) ? (v107 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v102 + 28))(v152)) : (--*(_DWORD *)v104, v105 = *(int ***)(v102 + 32), v106 = *v105, *v105 = (int *)((char *)*v105 + 1), v107 = *(_BYTE *)v106), v107 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } v108 = v159; v164 = 0; v157 = 0; if ( (unsigned __int8)sub_626C50(a3, v159) ) goto LABEL_316; if ( !*(_BYTE *)(a3 + 4) ) { v109 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v110 = *(int ***)(v109 + 32), !*v110) || **(_DWORD **)(v109 + 48) <= 0 ? (v111 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v109 + 24))(v152)) : (v111 = *(_BYTE *)*v110), v111 != -1) ) *(_BYTE *)(a3 + 5) = v111; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 43 ) { *(_BYTE *)v103 = 43; v112 = *(_DWORD *)a3; v163 = v103 + 1; if ( !v112 ) goto LABEL_315; if ( **(_DWORD **)(v112 + 32) ) { v113 = *(_DWORD *)(v112 + 48); if ( *(_DWORD *)v113 > 0 ) { --*(_DWORD *)v113; v114 = *(_DWORD *)(v112 + 32); v115 = (int *)(*(_DWORD *)v114)++; v116 = *(_BYTE *)v115; goto LABEL_313; } } } else { if ( !*(_BYTE *)(a3 + 4) ) { v117 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v118 = *(int ***)(v117 + 32), !*v118) || **(_DWORD **)(v117 + 48) <= 0 ? (v119 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v117 + 24))(v152)) : (v119 = *(_BYTE *)*v118), v119 != -1) ) *(_BYTE *)(a3 + 5) = v119; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 45 ) goto LABEL_316; *(_BYTE *)v103 = 45; v112 = *(_DWORD *)a3; v163 = v103 + 1; if ( !v112 ) goto LABEL_315; if ( **(_DWORD **)(v112 + 32) ) { v120 = *(_DWORD *)(v112 + 48); if ( *(_DWORD *)v120 > 0 ) { --*(_DWORD *)v120; v121 = *(_DWORD *)(v112 + 32); v122 = (int *)(*(_DWORD *)v121)++; v116 = *(_BYTE *)v122; goto LABEL_313; } } } v116 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v112 + 28))(v152); LABEL_313: if ( v116 != -1 ) { *(_BYTE *)(a3 + 4) = 0; LABEL_316: if ( !(unsigned __int8)sub_626C50(a3, v108) ) { while ( 1 ) { if ( !*(_BYTE *)(a3 + 4) ) { v123 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v124 = *(int ***)(v123 + 32), !*v124) || **(_DWORD **)(v123 + 48) <= 0 ? (v125 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v123 + 24))(v152)) : (v125 = *(_BYTE *)*v124), v125 != -1) ) *(_BYTE *)(a3 + 5) = v125; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 48 ) break; v126 = *(_DWORD *)a3; v164 = 1; if ( v126 && (!**(_DWORD **)(v126 + 32) || (v127 = *(_DWORD *)(v126 + 48), *(_DWORD *)v127 <= 0) ? (v130 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v126 + 28))(v152)) : (--*(_DWORD *)v127, v128 = *(int ***)(v126 + 32), v129 = *v128, *v128 = (int *)((char *)*v128 + 1), v130 = *(_BYTE *)v129), v130 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( (unsigned __int8)sub_626C50(a3, v108) ) goto LABEL_339; } if ( !v164 ) goto LABEL_340; LABEL_339: v131 = v163; *(_BYTE *)v163 = 48; v163 = v131 + 1; } LABEL_340: v132 = v159; if ( !(unsigned __int8)sub_626C50(a3, v159) ) { v133 = v163; do { if ( !*(_BYTE *)(a3 + 4) ) { v134 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v135 = *(int ***)(v134 + 32), !*v135) || **(_DWORD **)(v134 + 48) <= 0 ? (v136 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v134 + 24))(v152)) : (v136 = *(_BYTE *)*v135), v136 != -1) ) *(_BYTE *)(a3 + 5) = v136; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) < 48 ) break; if ( !*(_BYTE *)(a3 + 4) ) { v137 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v138 = *(int ***)(v137 + 32), !*v138) || **(_DWORD **)(v137 + 48) <= 0 ? (v139 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v137 + 24))(v152)) : (v139 = *(_BYTE *)*v138), v139 != -1) ) *(_BYTE *)(a3 + 5) = v139; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) > 57 ) break; if ( v157 < 8 ) { if ( !*(_BYTE *)(a3 + 4) ) { v140 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v141 = *(int ***)(v140 + 32), !*v141) || **(_DWORD **)(v140 + 48) <= 0 ? (v142 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v140 + 24))(v152)) : (v142 = *(_BYTE *)*v141), v142 != -1) ) *(_BYTE *)(a3 + 5) = v142; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } *(_BYTE *)v133++ = *(_BYTE *)(a3 + 5); ++v157; } v143 = *(_DWORD *)a3; v164 = 1; if ( v143 && (!**(_DWORD **)(v143 + 32) || (v144 = *(_DWORD *)(v143 + 48), *(_DWORD *)v144 <= 0) ? (v147 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v143 + 28))(v152)) : (--*(_DWORD *)v144, v145 = *(int ***)(v143 + 32), v146 = *v145, *v145 = (int *)((char *)*v145 + 1), v147 = *(_BYTE *)v146), v147 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } while ( !(unsigned __int8)sub_626C50(a3, v132) ); v163 = v133; } goto LABEL_386; } LABEL_315: *(_BYTE *)(a3 + 4) = 1; *(_DWORD *)a3 = 0; goto LABEL_316; } } LABEL_386: if ( !v162 && v164 ) v148 = v163; else v148 = v155; v149 = v167 < 0x10; v150 = v158; *(_BYTE *)v148 = 0; *(_DWORD *)v154 = v150; if ( !v149 ) operator delete(v165); return 0; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00628680) -------------------------------------------------------- signed int __cdecl sub_628680(int a1, int a2, size_t a3, int a4) { char v4; // al@2 int v5; // ecx@2 int v6; // esi@7 size_t v7; // edi@7 char i; // al@8 void *v9; // eax@11 void *v10; // eax@14 char v11; // cl@17 char v12; // al@17 int v13; // eax@20 int v14; // ecx@21 int **v15; // eax@22 int v16; // eax@24 void *v17; // eax@35 int v18; // ecx@46 int v19; // eax@48 int **v20; // ecx@49 int *v21; // eax@49 int v22; // eax@49 unsigned int v24; // [sp-4h] [bp-50h]@1 signed int v25; // [sp+10h] [bp-3Ch]@6 signed int v26; // [sp+14h] [bp-38h]@6 char v27; // [sp+1Fh] [bp-2Dh]@7 void *v28; // [sp+20h] [bp-2Ch]@6 int v29; // [sp+30h] [bp-1Ch]@6 unsigned int v30; // [sp+34h] [bp-18h]@6 unsigned int v31; // [sp+3Ch] [bp-10h]@1 int v32; // [sp+48h] [bp-4h]@6 int v33; // [sp+4Ch] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v24 = (unsigned int)&v33 ^ __security_cookie; if ( *(_BYTE *)a4 ) { v4 = *(_BYTE *)a4; v5 = a4; do { if ( v4 == *(_BYTE *)a4 ) ++a3; v4 = *(_BYTE *)(v5++ + 1); } while ( v4 ); } v30 = 15; v29 = 0; LOBYTE(v28) = 0; sub_6274C0((int)&v28, a3, 0); v32 = 0; v25 = -2; v26 = 1; LABEL_7: v6 = 0; v7 = 0; v27 = 0; if ( a3 ) { while ( 1 ) { for ( i = *(_BYTE *)(v6 + a4); i; i = *(_BYTE *)(v6++ + a4 + 1) ) { if ( i == *(_BYTE *)a4 ) break; } v9 = v28; if ( v30 < 0x10 ) v9 = &v28; if ( *((_BYTE *)v9 + v7) ) { v10 = v28; if ( v30 < 0x10 ) v10 = &v28; v6 += *((_BYTE *)v10 + v7); goto LABEL_43; } v11 = v26; v6 += v26; v12 = *(_BYTE *)(v6 + a4); if ( v12 == *(_BYTE *)a4 || !v12 ) { if ( (unsigned int)v26 >= 0x7F ) v11 = 127; v17 = v28; if ( v30 < 0x10 ) v17 = &v28; v25 = v7; goto LABEL_42; } if ( (unsigned __int8)sub_626C50(a1, a2) ) goto LABEL_33; v13 = a1; if ( !*(_BYTE *)(a1 + 4) ) break; LABEL_31: if ( *(_BYTE *)(v6 + a4) != *(_BYTE *)(v13 + 5) ) { LABEL_33: v11 = v26; if ( (unsigned int)v26 >= 0x7F ) v11 = 127; v17 = v28; if ( v30 < 0x10 ) v17 = &v28; LABEL_42: *((_BYTE *)v17 + v7) = v11; goto LABEL_43; } v27 = 1; LABEL_43: ++v7; if ( v7 >= a3 ) { if ( v27 && !(unsigned __int8)sub_626C50(a1, a2) ) { v18 = *(_DWORD *)a1; ++v26; if ( *(_DWORD *)a1 && (!**(_DWORD **)(v18 + 32) || (v19 = *(_DWORD *)(v18 + 48), *(_DWORD *)v19 <= 0) ? (v22 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v18 + 28))(v24)) : (--*(_DWORD *)v19, v20 = *(int ***)(v18 + 32), v21 = *v20, *v20 = (int *)((char *)*v20 + 1), v22 = *(_BYTE *)v21), v22 != -1) ) { *(_BYTE *)(a1 + 4) = 0; v25 = -1; } else { *(_DWORD *)a1 = 0; *(_BYTE *)(a1 + 4) = 1; v25 = -1; } goto LABEL_7; } goto LABEL_54; } } v14 = *(_DWORD *)a1; if ( *(_DWORD *)a1 ) { v15 = *(int ***)(v14 + 32); if ( *v15 && **(_DWORD **)(v14 + 48) > 0 ) v16 = *(_BYTE *)*v15; else v16 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v14 + 24))(v24); if ( v16 != -1 ) { *(_BYTE *)(a1 + 5) = v16; v13 = a1; LABEL_30: *(_BYTE *)(v13 + 4) = 1; goto LABEL_31; } v13 = a1; } *(_DWORD *)v13 = 0; goto LABEL_30; } LABEL_54: if ( v30 >= 0x10 ) operator delete(v28); return v25; } // 86FEB8: using guessed type int __security_cookie; //----- (006288C0) -------------------------------------------------------- int __thiscall sub_6288C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // edi@1 int v11; // ebx@1 bool v12; // zf@1 int v13; // eax@2 int v14; // eax@2 int v15; // edi@2 void *v16; // ebx@2 unsigned int v17; // eax@3 int v18; // esi@6 int v19; // esi@6 int v20; // eax@8 int v21; // eax@10 unsigned int v22; // esi@12 void *v23; // eax@12 int v24; // eax@16 int v25; // esi@16 int v26; // eax@16 int v27; // eax@16 int v28; // edi@16 unsigned int v29; // eax@17 int v30; // esi@20 int v31; // esi@20 int v32; // eax@26 int result; // eax@31 int v34; // ecx@31 int v35; // [sp+Ch] [bp-70h]@2 int v36; // [sp+10h] [bp-6Ch]@1 int v37; // [sp+14h] [bp-68h]@16 int v38; // [sp+18h] [bp-64h]@16 int v39; // [sp+1Ch] [bp-60h]@1 char v40; // [sp+20h] [bp-5Ch]@20 int v41; // [sp+24h] [bp-58h]@1 int v42; // [sp+28h] [bp-54h]@16 unsigned int v43; // [sp+2Ch] [bp-50h]@6 void *v44; // [sp+30h] [bp-4Ch]@8 int v45; // [sp+40h] [bp-3Ch]@8 unsigned int v46; // [sp+44h] [bp-38h]@8 int v47; // [sp+4Ch] [bp-30h]@16 void *v48; // [sp+50h] [bp-2Ch]@8 unsigned int v49; // [sp+64h] [bp-18h]@8 unsigned int v50; // [sp+6Ch] [bp-10h]@1 int v51; // [sp+78h] [bp-4h]@2 int v52; // [sp+7Ch] [bp+0h]@1 v50 = (unsigned int)&v52 ^ __security_cookie; v9 = a7; v10 = (int)this; v11 = -1; v12 = (*(_DWORD *)(a7 + 20) & 0x4000) == 0; v41 = a8; v39 = a2; v36 = a9; if ( v12 ) { v42 = 0; v24 = sub_4D5680(a7, (int)&v37); v25 = *(_DWORD *)(v9 + 20); v51 = 4; v26 = sub_627580(v10, (int)&v47, (int)&a3, (int)&a5, v25, v24); v27 = _Stoulx((int)&v47, (int)&v38, v26, (int)&v42); v28 = v37; v43 = v27; v51 = -1; if ( v37 ) { std::_Lockit::_Lockit(0); v29 = *(_DWORD *)(v28 + 4); if ( v29 && v29 < 0xFFFFFFFF ) *(_DWORD *)(v28 + 4) = v29 - 1; v30 = -(*(_DWORD *)(v28 + 4) == 0); std::_Lockit::__Lockit(&v40); v31 = v28 & v30; if ( v31 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v31)(v31, 1); } if ( (int *)v38 != &v47 && !v42 && v43 <= 1 ) v11 = v43; } else { v13 = sub_4D5680(a7, (int)&v35); v51 = 0; v14 = sub_4DD750(v13); v15 = v35; v16 = (void *)v14; v51 = -1; if ( v35 ) { std::_Lockit::_Lockit(0); v17 = *(_DWORD *)(v15 + 4); if ( v17 && v17 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v17 - 1; v18 = -(*(_DWORD *)(v15 + 4) == 0); std::_Lockit::__Lockit(&v43); v19 = v15 & v18; if ( v19 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v19)(v19, 1); } v46 = 15; v45 = 1; LOWORD(v44) = 0; v51 = 1; v20 = sub_4DC4B0(v16, (int)&v48); LOBYTE(v51) = 2; sub_476C10((int)&v44, v20, 0, -1); LOBYTE(v51) = 1; if ( v49 >= 0x10 ) operator delete(v48); sub_4DCB30((int)&v44, 1u, 0); v21 = sub_4DC4D0(v16, (int)&v48); LOBYTE(v51) = 3; sub_476C10((int)&v44, v21, 0, -1); LOBYTE(v51) = 1; if ( v49 >= 0x10 ) operator delete(v48); v22 = v46; v23 = v44; if ( v46 < 0x10 ) v23 = &v44; v11 = sub_628680((int)&a3, (int)&a5, 2u, (int)v23); v51 = -1; if ( v22 >= 0x10 ) operator delete(v44); } v12 = sub_626C50((int)&a3, (int)&a5) == 0; v32 = v41; if ( !v12 ) *(_DWORD *)v41 |= 1u; if ( v11 >= 0 ) *(_BYTE *)v36 = v11 != 0; else *(_DWORD *)v32 |= 2u; result = v39; v34 = a4; *(_DWORD *)v39 = a3; *(_DWORD *)(result + 4) = v34; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00628B40) -------------------------------------------------------- int __thiscall sub_628B40(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // ebx@1 int v11; // edi@1 int v12; // eax@1 __int16 v13; // ST10_2@1 int v14; // edi@2 unsigned int v15; // eax@2 int v16; // esi@5 int v17; // esi@5 int v18; // edi@7 int v19; // esi@9 int result; // eax@18 int v21; // ecx@18 char v22; // [sp+Ch] [bp-4Ch]@5 int v23; // [sp+10h] [bp-48h]@9 int v24; // [sp+14h] [bp-44h]@1 int v25; // [sp+18h] [bp-40h]@1 int v26; // [sp+1Ch] [bp-3Ch]@1 size_t v27; // [sp+20h] [bp-38h]@1 int v28; // [sp+24h] [bp-34h]@1 char v29; // [sp+28h] [bp-30h]@1 int v30; // [sp+29h] [bp-2Fh]@7 unsigned int v31; // [sp+48h] [bp-10h]@1 int v32; // [sp+54h] [bp-4h]@1 int v33; // [sp+58h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v9 = a7; v10 = a8; v11 = (int)this; v26 = a9; v24 = a2; v28 = 0; v12 = sub_4D5680(a7, (int)&v25); v13 = *(_DWORD *)(v9 + 20); v32 = 0; v27 = sub_627580(v11, (int)&v29, (int)&a3, (int)&a5, v13, v12); v32 = -1; if ( v25 ) { v14 = v25; std::_Lockit::_Lockit(0); v15 = *(_DWORD *)(v14 + 4); if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)(v14 + 4) = v15 - 1; v16 = -(*(_DWORD *)(v14 + 4) == 0); std::_Lockit::__Lockit(&v22); v17 = v14 & v16; if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } v18 = (int)&v30; if ( v29 != 45 ) v18 = (int)&v29; v19 = _Stoulx(v18, (int)&v23, v27, (int)&v28); if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( v23 == v18 || v28 || (unsigned int)v19 > 0xFFFF ) { *(_DWORD *)v10 |= 2u; } else { if ( v29 == 45 ) v19 = -v19; *(_WORD *)v26 = v19; } result = v24; v21 = a4; *(_DWORD *)v24 = a3; *(_DWORD *)(result + 4) = v21; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00628C90) -------------------------------------------------------- int __thiscall sub_628C90(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // edi@1 int v11; // eax@1 __int16 v12; // ST10_2@1 int v13; // ebx@1 int v14; // edi@2 unsigned int v15; // eax@2 int v16; // esi@5 int v17; // esi@5 int v18; // edi@7 int v19; // esi@9 bool v20; // zf@9 int v21; // eax@9 int result; // eax@18 int v23; // ecx@18 int v24; // [sp+Ch] [bp-4Ch]@1 int v25; // [sp+10h] [bp-48h]@9 int v26; // [sp+14h] [bp-44h]@1 int v27; // [sp+18h] [bp-40h]@1 char v28; // [sp+1Ch] [bp-3Ch]@5 int v29; // [sp+20h] [bp-38h]@1 int v30; // [sp+24h] [bp-34h]@1 char v31; // [sp+28h] [bp-30h]@1 int v32; // [sp+29h] [bp-2Fh]@7 unsigned int v33; // [sp+48h] [bp-10h]@1 int v34; // [sp+54h] [bp-4h]@1 int v35; // [sp+58h] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v9 = a7; v10 = (int)this; v26 = a2; v29 = a8; v27 = a9; v30 = 0; v11 = sub_4D5680(a7, (int)&v24); v12 = *(_DWORD *)(v9 + 20); v34 = 0; v13 = sub_627580(v10, (int)&v31, (int)&a3, (int)&a5, v12, v11); v34 = -1; if ( v24 ) { v14 = v24; std::_Lockit::_Lockit(0); v15 = *(_DWORD *)(v14 + 4); if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)(v14 + 4) = v15 - 1; v16 = -(*(_DWORD *)(v14 + 4) == 0); std::_Lockit::__Lockit(&v28); v17 = v14 & v16; if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } v18 = (int)&v32; if ( v31 != 45 ) v18 = (int)&v31; v19 = _Stoulx(v18, (int)&v25, v13, (int)&v30); v20 = sub_626C50((int)&a3, (int)&a5) == 0; v21 = v29; if ( !v20 ) *(_DWORD *)v29 |= 1u; if ( v25 == v18 || v30 || (unsigned int)v19 > 0xFFFFFFFF ) { *(_DWORD *)v21 |= 2u; } else { if ( v31 == 45 ) v19 = -v19; *(_DWORD *)v27 = v19; } result = v26; v23 = a4; *(_DWORD *)v26 = a3; *(_DWORD *)(result + 4) = v23; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00628DD0) -------------------------------------------------------- int __thiscall sub_628DD0(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // ebx@1 int v11; // edi@1 int v12; // eax@1 int v13; // esi@1 int v14; // eax@1 int v15; // edi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // esi@5 int result; // eax@13 int v20; // ecx@13 char v21; // [sp+Ch] [bp-4Ch]@5 int v22; // [sp+10h] [bp-48h]@1 int v23; // [sp+14h] [bp-44h]@1 int v24; // [sp+18h] [bp-40h]@1 int v25; // [sp+1Ch] [bp-3Ch]@1 int v26; // [sp+20h] [bp-38h]@1 int v27; // [sp+24h] [bp-34h]@1 int v28; // [sp+28h] [bp-30h]@1 unsigned int v29; // [sp+48h] [bp-10h]@1 int v30; // [sp+54h] [bp-4h]@1 int v31; // [sp+58h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v9 = a7; v10 = a8; v11 = (int)this; v22 = a9; v23 = a2; v27 = 0; v12 = sub_4D5680(a7, (int)&v24); v13 = *(_DWORD *)(v9 + 20); v30 = 0; v14 = sub_627580(v11, (int)&v28, (int)&a3, (int)&a5, v13, v12); v25 = _Stolx((int)&v28, (int)&v26, v14, (int)&v27); v30 = -1; if ( v24 ) { v15 = v24; std::_Lockit::_Lockit(0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = -(*(_DWORD *)(v15 + 4) == 0); std::_Lockit::__Lockit(&v21); v18 = v15 & v17; if ( v18 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v18)(v18, 1); } if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( (int *)v26 == &v28 || v27 ) *(_DWORD *)v10 |= 2u; else *(_DWORD *)v22 = v25; result = v23; v20 = a4; *(_DWORD *)v23 = a3; *(_DWORD *)(result + 4) = v20; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00628F00) -------------------------------------------------------- int __thiscall sub_628F00(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // ebx@1 int v11; // edi@1 int v12; // eax@1 int v13; // esi@1 int v14; // eax@1 int v15; // edi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // esi@5 int result; // eax@13 int v20; // ecx@13 char v21; // [sp+Ch] [bp-4Ch]@5 int v22; // [sp+10h] [bp-48h]@1 int v23; // [sp+14h] [bp-44h]@1 int v24; // [sp+18h] [bp-40h]@1 int v25; // [sp+1Ch] [bp-3Ch]@1 int v26; // [sp+20h] [bp-38h]@1 int v27; // [sp+24h] [bp-34h]@1 int v28; // [sp+28h] [bp-30h]@1 unsigned int v29; // [sp+48h] [bp-10h]@1 int v30; // [sp+54h] [bp-4h]@1 int v31; // [sp+58h] [bp+0h]@1 v29 = (unsigned int)&v31 ^ __security_cookie; v9 = a7; v10 = a8; v11 = (int)this; v22 = a9; v23 = a2; v27 = 0; v12 = sub_4D5680(a7, (int)&v24); v13 = *(_DWORD *)(v9 + 20); v30 = 0; v14 = sub_627580(v11, (int)&v28, (int)&a3, (int)&a5, v13, v12); v25 = _Stoulx((int)&v28, (int)&v26, v14, (int)&v27); v30 = -1; if ( v24 ) { v15 = v24; std::_Lockit::_Lockit(0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = -(*(_DWORD *)(v15 + 4) == 0); std::_Lockit::__Lockit(&v21); v18 = v15 & v17; if ( v18 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v18)(v18, 1); } if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( (int *)v26 == &v28 || v27 ) *(_DWORD *)v10 |= 2u; else *(_DWORD *)v22 = v25; result = v23; v20 = a4; *(_DWORD *)v23 = a3; *(_DWORD *)(result + 4) = v20; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00629030) -------------------------------------------------------- int __thiscall sub_629030(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // ebx@1 int v11; // edi@1 int v12; // eax@1 int v13; // esi@1 int v14; // eax@1 int v15; // edx@1 int v16; // edi@2 unsigned int v17; // eax@2 int v18; // esi@5 int v19; // esi@5 int v20; // eax@11 int v21; // edx@11 int result; // eax@13 int v23; // edx@13 char v24; // [sp+Ch] [bp-50h]@5 int v25; // [sp+10h] [bp-4Ch]@1 int v26; // [sp+14h] [bp-48h]@1 int v27; // [sp+18h] [bp-44h]@1 int v28; // [sp+1Ch] [bp-40h]@1 int v29; // [sp+20h] [bp-3Ch]@1 int v30; // [sp+24h] [bp-38h]@1 int v31; // [sp+28h] [bp-34h]@1 int v32; // [sp+2Ch] [bp-30h]@1 unsigned int v33; // [sp+4Ch] [bp-10h]@1 int v34; // [sp+58h] [bp-4h]@1 int v35; // [sp+5Ch] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v9 = a7; v10 = a8; v11 = (int)this; v25 = a9; v29 = a2; v31 = 0; v12 = sub_4D5680(a7, (int)&v28); v13 = *(_DWORD *)(v9 + 20); v34 = 0; v14 = sub_627580(v11, (int)&v32, (int)&a3, (int)&a5, v13, v12); v26 = _Stollx((int)&v32, (int)&v30, v14, (int)&v31); v27 = v15; v34 = -1; if ( v28 ) { v16 = v28; std::_Lockit::_Lockit(0); v17 = *(_DWORD *)(v16 + 4); if ( v17 && v17 < 0xFFFFFFFF ) *(_DWORD *)(v16 + 4) = v17 - 1; v18 = -(*(_DWORD *)(v16 + 4) == 0); std::_Lockit::__Lockit(&v24); v19 = v16 & v18; if ( v19 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v19)(v19, 1); } if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( (int *)v30 == &v32 || v31 ) { *(_DWORD *)v10 |= 2u; } else { v20 = v25; v21 = v27; *(_DWORD *)v25 = v26; *(_DWORD *)(v20 + 4) = v21; } result = v29; v23 = a4; *(_DWORD *)v29 = a3; *(_DWORD *)(result + 4) = v23; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00629170) -------------------------------------------------------- int __thiscall sub_629170(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // esi@1 int v10; // ebx@1 int v11; // edi@1 int v12; // eax@1 int v13; // esi@1 int v14; // eax@1 int v15; // edx@1 int v16; // edi@2 unsigned int v17; // eax@2 int v18; // esi@5 int v19; // esi@5 int v20; // eax@11 int v21; // edx@11 int result; // eax@13 int v23; // edx@13 char v24; // [sp+Ch] [bp-50h]@5 int v25; // [sp+10h] [bp-4Ch]@1 int v26; // [sp+14h] [bp-48h]@1 int v27; // [sp+18h] [bp-44h]@1 int v28; // [sp+1Ch] [bp-40h]@1 int v29; // [sp+20h] [bp-3Ch]@1 int v30; // [sp+24h] [bp-38h]@1 int v31; // [sp+28h] [bp-34h]@1 int v32; // [sp+2Ch] [bp-30h]@1 unsigned int v33; // [sp+4Ch] [bp-10h]@1 int v34; // [sp+58h] [bp-4h]@1 int v35; // [sp+5Ch] [bp+0h]@1 v33 = (unsigned int)&v35 ^ __security_cookie; v9 = a7; v10 = a8; v11 = (int)this; v25 = a9; v29 = a2; v31 = 0; v12 = sub_4D5680(a7, (int)&v28); v13 = *(_DWORD *)(v9 + 20); v34 = 0; v14 = sub_627580(v11, (int)&v32, (int)&a3, (int)&a5, v13, v12); v26 = _Stoullx((int)&v32, (int)&v30, v14, (int)&v31); v27 = v15; v34 = -1; if ( v28 ) { v16 = v28; std::_Lockit::_Lockit(0); v17 = *(_DWORD *)(v16 + 4); if ( v17 && v17 < 0xFFFFFFFF ) *(_DWORD *)(v16 + 4) = v17 - 1; v18 = -(*(_DWORD *)(v16 + 4) == 0); std::_Lockit::__Lockit(&v24); v19 = v16 & v18; if ( v19 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v19)(v19, 1); } if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( (int *)v30 == &v32 || v31 ) { *(_DWORD *)v10 |= 2u; } else { v20 = v25; v21 = v27; *(_DWORD *)v25 = v26; *(_DWORD *)(v20 + 4) = v21; } result = v29; v23 = a4; *(_DWORD *)v29 = a3; *(_DWORD *)(result + 4) = v23; return result; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (006292B0) -------------------------------------------------------- int __thiscall sub_6292B0(void *this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // edi@1 int v10; // ebx@1 int v11; // esi@1 int v12; // eax@1 int v13; // edi@2 unsigned int v14; // eax@2 int v15; // esi@5 int v16; // esi@5 int v17; // esi@8 int v18; // edx@14 int v20; // [sp+10h] [bp-4Ch]@1 int v21; // [sp+14h] [bp-48h]@1 int v22; // [sp+18h] [bp-44h]@1 int v23; // [sp+1Ch] [bp-40h]@8 char v24; // [sp+20h] [bp-3Ch]@5 int v25; // [sp+24h] [bp-38h]@1 int v26; // [sp+28h] [bp-34h]@1 int v27; // [sp+2Ch] [bp-30h]@1 unsigned int v28; // [sp+4Ch] [bp-10h]@1 int v29; // [sp+58h] [bp-4h]@1 int v30; // [sp+5Ch] [bp+0h]@1 v28 = (unsigned int)&v30 ^ __security_cookie; v9 = a2; v10 = a8; v11 = (int)this; v25 = a2; v22 = a9; v26 = 0; v12 = sub_4D5680(a7, (int)&v21); v29 = 0; v20 = sub_627580(v11, (int)&v27, (int)&a3, (int)&a5, 2048, v12); v29 = -1; if ( v21 ) { v13 = v21; std::_Lockit::_Lockit(0); v14 = *(_DWORD *)(v13 + 4); if ( v14 && v14 < 0xFFFFFFFF ) *(_DWORD *)(v13 + 4) = v14 - 1; v15 = -(*(_DWORD *)(v13 + 4) == 0); std::_Lockit::__Lockit(&v24); v16 = v13 & v15; if ( v16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v16)(v16, 1); v9 = v25; } v17 = _Stoulx((int)&v27, (int)&v23, v20, (int)&v26); if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( (int *)v23 == &v27 || v26 ) *(_DWORD *)v10 |= 2u; else *(_DWORD *)v22 = v17; v18 = a4; *(_DWORD *)v9 = a3; *(_DWORD *)(v9 + 4) = v18; return v9; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (006293F0) -------------------------------------------------------- int __cdecl sub_6293F0(int a1, int a2, int a3, int a4, int a5, int a6) { int v6; // eax@1 int v8; // eax@3 int v9; // eax@3 int v10; // ebx@3 unsigned int v11; // eax@4 int v12; // edi@7 int v13; // edi@7 int v14; // ebx@9 int v15; // edi@9 char v16; // al@10 int v17; // ecx@10 void *v18; // eax@15 void *v19; // eax@18 signed int v20; // edi@24 int v21; // ebx@24 int v22; // ecx@26 int **v23; // eax@27 int v24; // eax@29 char v25; // al@41 int v26; // ecx@41 void *v27; // eax@42 void *v28; // eax@45 void *v29; // eax@48 char v30; // al@52 void *v31; // eax@57 void *v32; // edx@62 char v33; // cl@66 void *v34; // eax@68 void *v35; // eax@72 int v36; // edi@81 int v37; // eax@83 int v38; // ecx@86 int **v39; // eax@87 int v40; // eax@89 int v41; // ecx@92 int **v42; // eax@93 int v43; // eax@95 int v44; // ecx@103 int **v45; // eax@104 int v46; // eax@106 char v47; // al@117 int v48; // ecx@117 char *v49; // ecx@126 int v50; // eax@126 int v51; // ecx@126 int v52; // edx@128 int **v53; // ecx@129 int *v54; // eax@129 int v55; // eax@129 int v56; // edi@136 int v57; // ebx@136 int v58; // ecx@138 int **v59; // eax@139 int v60; // eax@141 int v61; // ecx@148 int v62; // eax@150 int **v63; // ecx@151 int *v64; // eax@151 int v65; // eax@151 int v66; // eax@159 signed int v67; // edi@161 int v68; // ecx@163 int **v69; // eax@164 int v70; // eax@166 int v71; // ecx@174 int **v72; // eax@175 int v73; // eax@177 int v74; // ecx@186 int **v75; // eax@187 int v76; // eax@189 int v77; // eax@195 int v78; // ecx@196 int v79; // eax@198 int **v80; // ecx@199 int *v81; // eax@199 int v82; // eax@199 int v83; // ecx@209 int **v84; // eax@210 int v85; // eax@212 int v86; // ecx@220 int **v87; // eax@221 int v88; // eax@223 int v89; // edi@230 int v90; // ecx@230 int v91; // edi@230 int v92; // eax@232 int **v93; // ecx@233 int *v94; // eax@233 int v95; // eax@233 int v96; // ebx@238 int v97; // ecx@240 int **v98; // eax@241 int v99; // eax@243 int v100; // ecx@250 int v101; // eax@252 int v102; // ecx@253 int *v103; // eax@253 int v104; // eax@253 int v105; // ecx@255 int **v106; // eax@256 int v107; // eax@258 int v108; // eax@267 int v109; // ecx@268 int *v110; // eax@268 int v111; // ecx@275 int **v112; // eax@276 int v113; // eax@278 int v114; // ecx@285 int v115; // eax@287 int **v116; // ecx@288 int *v117; // eax@288 int v118; // eax@288 int v119; // eax@296 int v120; // edi@298 signed int v121; // ebx@298 int v122; // ecx@300 int **v123; // eax@301 int v124; // eax@303 int v125; // ecx@311 int **v126; // eax@312 int v127; // eax@314 int v128; // ecx@323 int **v129; // eax@324 int v130; // eax@326 int v131; // ecx@333 int v132; // eax@335 int **v133; // ecx@336 int *v134; // eax@336 int v135; // eax@336 int v136; // eax@345 bool v137; // cf@347 unsigned int v138; // [sp-4h] [bp-7Ch]@1 int v139; // [sp+Ch] [bp-6Ch]@3 int v140; // [sp+10h] [bp-68h]@1 void *v141; // [sp+14h] [bp-64h]@3 int v142; // [sp+18h] [bp-60h]@15 int v143; // [sp+1Ch] [bp-5Ch]@7 int v144; // [sp+20h] [bp-58h]@1 char v145; // [sp+26h] [bp-52h]@22 char v146; // [sp+27h] [bp-51h]@9 int v147; // [sp+28h] [bp-50h]@9 char v148; // [sp+2Fh] [bp-49h]@15 void *v149; // [sp+30h] [bp-48h]@9 int v150; // [sp+40h] [bp-38h]@21 unsigned int v151; // [sp+44h] [bp-34h]@15 void *v152; // [sp+4Ch] [bp-2Ch]@24 int v153; // [sp+5Ch] [bp-1Ch]@24 int v154; // [sp+60h] [bp-18h]@24 unsigned int v155; // [sp+68h] [bp-10h]@1 int v156; // [sp+74h] [bp-4h]@3 int v157; // [sp+78h] [bp+0h]@1 v155 = (unsigned int)&v157 ^ __security_cookie; v138 = (unsigned int)&v157 ^ __security_cookie; v6 = *(_DWORD *)(a5 + 20) & 0x3000; v140 = a2; v144 = a4; if ( v6 == 12288 ) return sub_6279E0(a1, a2, a3, a4, a5, a6); v8 = sub_4D5680(a5, (int)&v139); v156 = 0; v9 = sub_4DD750(v8); v10 = v139; v141 = (void *)v9; v156 = -1; if ( v139 ) { std::_Lockit::_Lockit(0); v11 = *(_DWORD *)(v10 + 4); if ( v11 && v11 < 0xFFFFFFFF ) *(_DWORD *)(v10 + 4) = v11 - 1; v12 = -(*(_DWORD *)(v10 + 4) == 0); std::_Lockit::__Lockit(&v143); v13 = v10 & v12; if ( v13 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v13)(v13, 1); } sub_4DC4F0(v141, (int)&v149); v14 = v144; v15 = v140; v156 = 1; v147 = v140; v146 = 0; if ( !(unsigned __int8)sub_626C50(a3, v144) ) { v16 = sub_626DE0(a3); v17 = a3; if ( v16 == 43 ) { *(_BYTE *)v15 = 43; } else { if ( sub_626DE0(a3) != 45 ) goto LABEL_15; *(_BYTE *)v15 = 45; v17 = a3; } v147 = v15 + 1; sub_626E30((void *)v17); } LABEL_15: v148 = 0; v142 = 0; v143 = 0; v18 = v149; if ( v151 < 0x10 ) v18 = &v149; if ( *(_BYTE *)v18 != 127 ) { v19 = v149; if ( v151 < 0x10 ) v19 = &v149; if ( *(_BYTE *)v19 > 0 ) { if ( v150 ) v145 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v141 + 8))(v138); else v145 = 0; v20 = 15; v154 = 15; v153 = 1; LOWORD(v152) = 0; LOBYTE(v156) = 2; v21 = 0; if ( (unsigned __int8)sub_626C50(a3, v144) ) goto LABEL_62; while ( 1 ) { if ( !*(_BYTE *)(a3 + 4) ) { v22 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v23 = *(int ***)(v22 + 32), !*v23) || **(_DWORD **)(v22 + 48) <= 0 ? (v24 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v22 + 24))(v138)) : (v24 = *(_BYTE *)*v23), v24 != -1) ) *(_BYTE *)(a3 + 5) = v24; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) < 48 || sub_626DE0(a3) > 57 ) { v29 = v152; if ( (unsigned int)v20 < 0x10 ) v29 = &v152; if ( !*((_BYTE *)v29 + v21) || !v145 || (v30 = sub_626DE0(a3), v30 != v145) ) { LABEL_56: if ( v21 ) { v31 = v152; if ( (unsigned int)v20 < 0x10 ) v31 = &v152; if ( *((_BYTE *)v31 + v21) <= 0 ) v146 = 1; else ++v21; } LABEL_62: v32 = v149; if ( v151 < 0x10 ) v32 = &v149; if ( !v146 ) { while ( v21 ) { v33 = *(_BYTE *)v32; if ( *(_BYTE *)v32 == 127 ) break; --v21; if ( v21 ) { v34 = v152; if ( (unsigned int)v20 < 0x10 ) v34 = &v152; if ( v33 != *((_BYTE *)v34 + v21) ) goto LABEL_352; } if ( !v21 ) { v35 = v152; if ( (unsigned int)v20 < 0x10 ) v35 = &v152; if ( v33 < *(_BYTE *)v35 ) { LABEL_352: v146 = 1; break; } } if ( *((_BYTE *)v32 + 1) > 0 ) v32 = (char *)v32 + 1; } } LOBYTE(v156) = 1; if ( (unsigned int)v20 >= 0x10 ) operator delete(v152); LABEL_80: if ( v148 ) { v36 = v142; goto LABEL_82; } goto LABEL_84; } sub_4DCB30((int)&v152, 1u, 0); ++v21; } else { v148 = 1; if ( v142 < 36 ) { if ( sub_626DE0(a3) != 48 || v142 ) { v25 = sub_626DE0(a3); v26 = v147; *(_BYTE *)v147 = v25; ++v142; v147 = v26 + 1; } } else { ++v143; } v27 = v152; if ( (unsigned int)v20 < 0x10 ) v27 = &v152; if ( *((_BYTE *)v27 + v21) == 127 ) goto LABEL_55; v28 = v152; if ( (unsigned int)v20 < 0x10 ) v28 = &v152; ++*((_BYTE *)v28 + v21); } v20 = v154; LABEL_55: sub_626E30((void *)a3); if ( (unsigned __int8)sub_626C50(a3, v144) ) goto LABEL_56; } } } if ( !(unsigned __int8)sub_626C50(a3, v14) ) { do { if ( !*(_BYTE *)(a3 + 4) ) { v41 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v42 = *(int ***)(v41 + 32), !*v42) || **(_DWORD **)(v41 + 48) <= 0 ? (v43 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v41 + 24))(v138)) : (v43 = *(_BYTE *)*v42), v43 != -1) ) *(_BYTE *)(a3 + 5) = v43; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) < 48 ) goto LABEL_80; if ( !*(_BYTE *)(a3 + 4) ) { v44 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v45 = *(int ***)(v44 + 32), !*v45) || **(_DWORD **)(v44 + 48) <= 0 ? (v46 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v44 + 24))(v138)) : (v46 = *(_BYTE *)*v45), v46 != -1) ) *(_BYTE *)(a3 + 5) = v46; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) > 57 ) goto LABEL_80; v36 = v142; if ( v142 < 36 ) { if ( sub_626DE0(a3) != 48 || v36 ) { v47 = sub_626DE0(a3); v48 = v147; *(_BYTE *)v147 = v47; ++v36; v147 = v48 + 1; v142 = v36; } } else { ++v143; } v148 = 1; sub_626E30((void *)a3); } while ( !(unsigned __int8)sub_626C50(a3, v14) ); LABEL_82: if ( !v36 ) { v37 = v147; *(_BYTE *)v147 = 48; v147 = v37 + 1; } } LABEL_84: if ( !(unsigned __int8)sub_626C50(a3, v144) ) { if ( !*(_BYTE *)(a3 + 4) ) { v38 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v39 = *(int ***)(v38 + 32), !*v39) || **(_DWORD **)(v38 + 48) <= 0 ? (v40 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v38 + 24))(v138)) : (v40 = *(_BYTE *)*v39), v40 != -1) ) *(_BYTE *)(a3 + 5) = v40; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == (unsigned __int8)(*(int (__cdecl **)(unsigned int))(*(_DWORD *)v141 + 4))(v138) ) { v49 = localeconv()->decimal_point; v50 = v147; *(_BYTE *)v147 = *v49; v51 = *(_DWORD *)a3; v147 = v50 + 1; if ( v51 && (!**(_DWORD **)(v51 + 32) || (v52 = *(_DWORD *)(v51 + 48), *(_DWORD *)v52 <= 0) ? (v55 = (*(int (**)(void))(*(_DWORD *)v51 + 28))()) : (--*(_DWORD *)v52, v53 = *(int ***)(v51 + 32), v54 = *v53, *v53 = (int *)((char *)*v53 + 1), v55 = *(_BYTE *)v54), v55 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } } if ( !v142 ) { if ( !(unsigned __int8)sub_626C50(a3, v144) ) { v56 = v143; v57 = v144; do { if ( !*(_BYTE *)(a3 + 4) ) { v58 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v59 = *(int ***)(v58 + 32), !*v59) || **(_DWORD **)(v58 + 48) <= 0 ? (v60 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v58 + 24))(v138)) : (v60 = *(_BYTE *)*v59), v60 != -1) ) *(_BYTE *)(a3 + 5) = v60; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 48 ) break; v61 = *(_DWORD *)a3; --v56; v148 = 1; if ( v61 && (!**(_DWORD **)(v61 + 32) || (v62 = *(_DWORD *)(v61 + 48), *(_DWORD *)v62 <= 0) ? (v65 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v61 + 28))(v138)) : (--*(_DWORD *)v62, v63 = *(int ***)(v61 + 32), v64 = *v63, *v63 = (int *)((char *)*v63 + 1), v65 = *(_BYTE *)v64), v65 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } while ( !(unsigned __int8)sub_626C50(a3, v57) ); v143 = v56; } if ( v143 < 0 ) { v66 = v147; *(_BYTE *)v147 = 48; ++v143; v147 = v66 + 1; } } if ( !(unsigned __int8)sub_626C50(a3, v144) ) { v67 = v142; while ( 1 ) { if ( !*(_BYTE *)(a3 + 4) ) { v68 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v69 = *(int ***)(v68 + 32), !*v69) || **(_DWORD **)(v68 + 48) <= 0 ? (v70 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v68 + 24))(v138)) : (v70 = *(_BYTE *)*v69), v70 != -1) ) *(_BYTE *)(a3 + 5) = v70; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) < 48 ) break; if ( !*(_BYTE *)(a3 + 4) ) { v71 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v72 = *(int ***)(v71 + 32), !*v72) || **(_DWORD **)(v71 + 48) <= 0 ? (v73 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v71 + 24))(v138)) : (v73 = *(_BYTE *)*v72), v73 != -1) ) *(_BYTE *)(a3 + 5) = v73; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) > 57 ) break; if ( v67 < 36 ) { if ( !*(_BYTE *)(a3 + 4) ) { v74 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v75 = *(int ***)(v74 + 32), !*v75) || **(_DWORD **)(v74 + 48) <= 0 ? (v76 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v74 + 24))(v138)) : (v76 = *(_BYTE *)*v75), v76 != -1) ) *(_BYTE *)(a3 + 5) = v76; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } v77 = v147; *(_BYTE *)v147 = *(_BYTE *)(a3 + 5); v147 = v77 + 1; ++v67; } v78 = *(_DWORD *)a3; v148 = 1; if ( v78 && (!**(_DWORD **)(v78 + 32) || (v79 = *(_DWORD *)(v78 + 48), *(_DWORD *)v79 <= 0) ? (v82 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v78 + 28))(v138)) : (--*(_DWORD *)v79, v80 = *(int ***)(v78 + 32), v81 = *v80, *v80 = (int *)((char *)*v80 + 1), v82 = *(_BYTE *)v81), v82 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( (unsigned __int8)sub_626C50(a3, v144) ) goto LABEL_207; } } if ( v148 ) { LABEL_207: if ( !(unsigned __int8)sub_626C50(a3, v144) ) { if ( !*(_BYTE *)(a3 + 4) ) { v83 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v84 = *(int ***)(v83 + 32), !*v84) || **(_DWORD **)(v83 + 48) <= 0 ? (v85 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v83 + 24))(v138)) : (v85 = *(_BYTE *)*v84), v85 != -1) ) *(_BYTE *)(a3 + 5) = v85; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 101 ) goto LABEL_353; if ( !*(_BYTE *)(a3 + 4) ) { v86 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v87 = *(int ***)(v86 + 32), !*v87) || **(_DWORD **)(v86 + 48) <= 0 ? (v88 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v86 + 24))(v138)) : (v88 = *(_BYTE *)*v87), v88 != -1) ) *(_BYTE *)(a3 + 5) = v88; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 69 ) { LABEL_353: v89 = v147; *(_BYTE *)v147 = 101; v90 = *(_DWORD *)a3; v91 = v89 + 1; v147 = v91; if ( v90 && (!**(_DWORD **)(v90 + 32) || (v92 = *(_DWORD *)(v90 + 48), *(_DWORD *)v92 <= 0) ? (v95 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v90 + 28))(v138)) : (--*(_DWORD *)v92, v93 = *(int ***)(v90 + 32), v94 = *v93, *v93 = (int *)((char *)*v93 + 1), v95 = *(_BYTE *)v94), v95 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } v96 = v144; v148 = 0; v142 = 0; if ( (unsigned __int8)sub_626C50(a3, v144) ) goto LABEL_273; if ( !*(_BYTE *)(a3 + 4) ) { v97 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v98 = *(int ***)(v97 + 32), !*v98) || **(_DWORD **)(v97 + 48) <= 0 ? (v99 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v97 + 24))(v138)) : (v99 = *(_BYTE *)*v98), v99 != -1) ) *(_BYTE *)(a3 + 5) = v99; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) == 43 ) { *(_BYTE *)v91 = 43; v100 = *(_DWORD *)a3; v147 = v91 + 1; if ( !v100 ) goto LABEL_272; if ( **(_DWORD **)(v100 + 32) ) { v101 = *(_DWORD *)(v100 + 48); if ( *(_DWORD *)v101 > 0 ) { --*(_DWORD *)v101; v102 = *(_DWORD *)(v100 + 32); v103 = (int *)(*(_DWORD *)v102)++; v104 = *(_BYTE *)v103; goto LABEL_270; } } } else { if ( !*(_BYTE *)(a3 + 4) ) { v105 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v106 = *(int ***)(v105 + 32), !*v106) || **(_DWORD **)(v105 + 48) <= 0 ? (v107 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v105 + 24))(v138)) : (v107 = *(_BYTE *)*v106), v107 != -1) ) *(_BYTE *)(a3 + 5) = v107; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 45 ) goto LABEL_273; *(_BYTE *)v91 = 45; v100 = *(_DWORD *)a3; v147 = v91 + 1; if ( !v100 ) goto LABEL_272; if ( **(_DWORD **)(v100 + 32) ) { v108 = *(_DWORD *)(v100 + 48); if ( *(_DWORD *)v108 > 0 ) { --*(_DWORD *)v108; v109 = *(_DWORD *)(v100 + 32); v110 = (int *)(*(_DWORD *)v109)++; v104 = *(_BYTE *)v110; goto LABEL_270; } } } v104 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v100 + 28))(v138); LABEL_270: if ( v104 != -1 ) { *(_BYTE *)(a3 + 4) = 0; LABEL_273: if ( !(unsigned __int8)sub_626C50(a3, v96) ) { while ( 1 ) { if ( !*(_BYTE *)(a3 + 4) ) { v111 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v112 = *(int ***)(v111 + 32), !*v112) || **(_DWORD **)(v111 + 48) <= 0 ? (v113 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v111 + 24))(v138)) : (v113 = *(_BYTE *)*v112), v113 != -1) ) *(_BYTE *)(a3 + 5) = v113; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) != 48 ) break; v114 = *(_DWORD *)a3; v148 = 1; if ( v114 && (!**(_DWORD **)(v114 + 32) || (v115 = *(_DWORD *)(v114 + 48), *(_DWORD *)v115 <= 0) ? (v118 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v114 + 28))(v138)) : (--*(_DWORD *)v115, v116 = *(int ***)(v114 + 32), v117 = *v116, *v116 = (int *)((char *)*v116 + 1), v118 = *(_BYTE *)v117), v118 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( (unsigned __int8)sub_626C50(a3, v96) ) goto LABEL_296; } if ( !v148 ) goto LABEL_297; LABEL_296: v119 = v147; *(_BYTE *)v147 = 48; v147 = v119 + 1; } LABEL_297: if ( !(unsigned __int8)sub_626C50(a3, v96) ) { v120 = v147; v121 = v142; do { if ( !*(_BYTE *)(a3 + 4) ) { v122 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v123 = *(int ***)(v122 + 32), !*v123) || **(_DWORD **)(v122 + 48) <= 0 ? (v124 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v122 + 24))(v138)) : (v124 = *(_BYTE *)*v123), v124 != -1) ) *(_BYTE *)(a3 + 5) = v124; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) < 48 ) break; if ( !*(_BYTE *)(a3 + 4) ) { v125 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v126 = *(int ***)(v125 + 32), !*v126) || **(_DWORD **)(v125 + 48) <= 0 ? (v127 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v125 + 24))(v138)) : (v127 = *(_BYTE *)*v126), v127 != -1) ) *(_BYTE *)(a3 + 5) = v127; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } if ( *(_BYTE *)(a3 + 5) > 57 ) break; if ( v121 < 8 ) { if ( !*(_BYTE *)(a3 + 4) ) { v128 = *(_DWORD *)a3; if ( *(_DWORD *)a3 && ((v129 = *(int ***)(v128 + 32), !*v129) || **(_DWORD **)(v128 + 48) <= 0 ? (v130 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v128 + 24))(v138)) : (v130 = *(_BYTE *)*v129), v130 != -1) ) *(_BYTE *)(a3 + 5) = v130; else *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } *(_BYTE *)v120++ = *(_BYTE *)(a3 + 5); ++v121; } v131 = *(_DWORD *)a3; v148 = 1; if ( v131 && (!**(_DWORD **)(v131 + 32) || (v132 = *(_DWORD *)(v131 + 48), *(_DWORD *)v132 <= 0) ? (v135 = (*(int (__cdecl **)(unsigned int))(*(_DWORD *)v131 + 28))(v138)) : (--*(_DWORD *)v132, v133 = *(int ***)(v131 + 32), v134 = *v133, *v133 = (int *)((char *)*v133 + 1), v135 = *(_BYTE *)v134), v135 != -1) ) { *(_BYTE *)(a3 + 4) = 0; } else { *(_DWORD *)a3 = 0; *(_BYTE *)(a3 + 4) = 1; } } while ( !(unsigned __int8)sub_626C50(a3, v144) ); v147 = v120; } goto LABEL_343; } LABEL_272: *(_BYTE *)(a3 + 4) = 1; *(_DWORD *)a3 = 0; goto LABEL_273; } } } LABEL_343: if ( !v146 && v148 ) v136 = v147; else v136 = v140; v137 = v151 < 0x10; *(_BYTE *)v136 = 0; if ( !v137 ) operator delete(v149); return v143; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00629F70) -------------------------------------------------------- int __userpurge sub_629F70(int a1, double a2, int a3, int a4, int a5, char a6, int a7, int a8, int a9, int a10) { int v10; // ebx@1 int v11; // esi@1 int v12; // eax@1 int v13; // ecx@9 char *v15; // [sp+18h] [bp-50h]@1 int v16; // [sp+1Ch] [bp-4Ch]@1 float v17; // [sp+20h] [bp-48h]@1 float v18; // [sp+24h] [bp-44h]@1 char v19; // [sp+28h] [bp-40h]@1 unsigned int v20; // [sp+64h] [bp-4h]@1 int v21; // [sp+68h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v10 = a10; v11 = a9; v16 = 0; v18 = 0.0; v12 = sub_6293F0(a1, (int)&v19, (int)&a4, (int)&a6, a8, (int)&v18); _Stofx(&v19, &v15, v12, (int)&v16); v17 = a2; if ( v18 != 0.0 ) { v18 = ldexp(v17, 4 * LODWORD(v18)); v17 = v18; } if ( (unsigned __int8)sub_626C50((int)&a4, (int)&a6) ) *(_DWORD *)v11 |= 1u; if ( v15 == &v19 || v16 ) *(_DWORD *)v11 |= 2u; else *(float *)v10 = v17; v13 = a5; *(_DWORD *)a3 = a4; *(_DWORD *)(a3 + 4) = v13; return a3; } // 86FEB8: using guessed type int __security_cookie; //----- (0062A040) -------------------------------------------------------- int __userpurge sub_62A040(int a1, double a2, int a3, int a4, int a5, char a6, int a7, int a8, int a9, int a10) { int v10; // ebx@1 int v11; // esi@1 int v12; // eax@1 int v13; // ecx@9 double v15; // [sp+18h] [bp-54h]@1 char *v16; // [sp+20h] [bp-4Ch]@1 int v17; // [sp+24h] [bp-48h]@1 int v18; // [sp+28h] [bp-44h]@1 char v19; // [sp+2Ch] [bp-40h]@1 unsigned int v20; // [sp+68h] [bp-4h]@1 int v21; // [sp+6Ch] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v10 = a10; v11 = a9; v18 = 0; v17 = 0; v12 = sub_6293F0(a1, (int)&v19, (int)&a4, (int)&a6, a8, (int)&v17); _Stodx(&v19, &v16, v12, (int)&v18); v15 = a2; if ( v17 ) v15 = ldexp(a2, 4 * v17); if ( (unsigned __int8)sub_626C50((int)&a4, (int)&a6) ) *(_DWORD *)v11 |= 1u; if ( v16 == &v19 || v18 ) *(_DWORD *)v11 |= 2u; else *(_QWORD *)v10 = *(_QWORD *)&v15; v13 = a5; *(_DWORD *)a3 = a4; *(_DWORD *)(a3 + 4) = v13; return a3; } // 86FEB8: using guessed type int __security_cookie; //----- (0062A110) -------------------------------------------------------- int __thiscall sub_62A110(int this, int a2, int a3, int a4, char a5, int a6, int a7, int a8, int a9) { int v9; // ebx@1 int v10; // esi@1 int v11; // eax@1 double v12; // st7@1 int v13; // ecx@9 double v15; // [sp+18h] [bp-54h]@1 char *v16; // [sp+20h] [bp-4Ch]@1 int v17; // [sp+24h] [bp-48h]@1 int v18; // [sp+28h] [bp-44h]@1 char v19; // [sp+2Ch] [bp-40h]@1 unsigned int v20; // [sp+68h] [bp-4h]@1 int v21; // [sp+6Ch] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v9 = a9; v10 = a8; v18 = 0; v17 = 0; v11 = sub_6293F0(this, (int)&v19, (int)&a3, (int)&a5, a7, (int)&v17); v12 = _Stoldx(&v19, &v16, v11, &v18); v15 = v12; if ( v17 ) v15 = ldexp(v12, 4 * v17); if ( (unsigned __int8)sub_626C50((int)&a3, (int)&a5) ) *(_DWORD *)v10 |= 1u; if ( v16 == &v19 || v18 ) *(_DWORD *)v10 |= 2u; else *(_QWORD *)v9 = *(_QWORD *)&v15; v13 = a4; *(_DWORD *)a2 = a3; *(_DWORD *)(a2 + 4) = v13; return a2; } // 65264C: using guessed type double __cdecl _Stoldx(_DWORD, _DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0062A1E0) -------------------------------------------------------- bool __thiscall sub_62A1E0(int this, float a2, float a3) { float v3; // ST00_4@1 double v4; // st7@1 float v6; // [sp+Ch] [bp+8h]@1 float v7; // [sp+Ch] [bp+8h]@1 float v8; // [sp+Ch] [bp+8h]@1 v3 = a2 - *(float *)(this + 40); v6 = a3 - *(float *)(this + 44); v7 = v6 * v6 + v3 * v3; v4 = v7; v8 = *(float *)(this + 48) * *(float *)(this + 48); return v8 > v4; } //----- (0062A240) -------------------------------------------------------- bool __thiscall sub_62A240(int this, float a2, float a3) { float v3; // ST04_4@1 float v4; // ST08_4@1 double v5; // st4@1 float v7; // [sp+10h] [bp+8h]@1 float v8; // [sp+10h] [bp+8h]@1 float v9; // [sp+10h] [bp+8h]@1 float v10; // [sp+14h] [bp+Ch]@1 float v11; // [sp+14h] [bp+Ch]@1 v3 = a2 - *(float *)(this + 40); v4 = a3 - *(float *)(this + 44); v7 = -*(float *)(this + 56); v10 = cos(v7); v8 = sin(v7); v5 = v10; v11 = v10 * v3 + v8 * v4; v9 = v4 * v5 - v3 * v8; return v9 >= -*(float *)(this + 52) && *(float *)(this + 52) >= (double)v9 && v11 >= -*(float *)(this + 48) && *(float *)(this + 48) >= (double)v11; } //----- (0062A310) -------------------------------------------------------- int __thiscall sub_62A310(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_703990; *(_DWORD *)(this + 1028) = 0; memset((void *)(this + 4), 0, 0x400u); return v1; } // 703990: using guessed type int (__thiscall *off_703990)(void *, char); //----- (0062A340) -------------------------------------------------------- int __thiscall sub_62A340(int this, int a2) { unsigned int v2; // edi@1 unsigned int v3; // edx@1 int v4; // esi@2 int result; // eax@3 v2 = *(_DWORD *)(this + 1028); v3 = 0; if ( v2 ) { v4 = this + 4; do { result = *(_DWORD *)v4; if ( !*(_DWORD *)v4 ) break; if ( *(_DWORD *)a2 == *(_DWORD *)(result + 4) && *(_DWORD *)(a2 + 4) == *(_DWORD *)(result + 8) && *(_DWORD *)(a2 + 8) == *(_DWORD *)(result + 12) && *(_DWORD *)(a2 + 12) == *(_DWORD *)(result + 16) && *(_DWORD *)(a2 + 16) == *(_DWORD *)(result + 20) && *(_DWORD *)(a2 + 20) == *(_DWORD *)(result + 24) && *(_DWORD *)(a2 + 24) == *(_DWORD *)(result + 28) && *(_DWORD *)(a2 + 28) == *(_DWORD *)(result + 32) ) return result; ++v3; v4 += 4; } while ( v3 < v2 ); } return 0; } //----- (0062A3B0) -------------------------------------------------------- void __thiscall sub_62A3B0(int this) { void **v1; // esi@1 signed int v2; // edi@1 *(_DWORD *)(this + 1028) = 0; v1 = (void **)(this + 4); v2 = 256; do { if ( *v1 ) operator delete(*v1); *v1 = 0; ++v1; --v2; } while ( v2 ); } //----- (0062A3F0) -------------------------------------------------------- void __thiscall sub_62A3F0(int this) { void **v1; // esi@1 signed int v2; // edi@1 *(_DWORD *)this = &off_703990; *(_DWORD *)(this + 1028) = 0; v1 = (void **)(this + 4); v2 = 256; do { if ( *v1 ) operator delete(*v1); *v1 = 0; ++v1; --v2; } while ( v2 ); } // 703990: using guessed type int (__thiscall *off_703990)(void *, char); //----- (0062A430) -------------------------------------------------------- char __thiscall sub_62A430(void *this, const char *a2) { int v2; // esi@1 FILE *v3; // ebx@1 char result; // al@2 int v5; // eax@7 int v6; // esi@8 int v7; // eax@10 int v8; // eax@12 int v9; // esi@13 int v10; // eax@15 void *v11; // esi@15 int v12; // [sp+Ch] [bp-58h]@3 int v13; // [sp+10h] [bp-54h]@6 float v14; // [sp+14h] [bp-50h]@15 unsigned int v15; // [sp+18h] [bp-4Ch]@3 int v16; // [sp+1Ch] [bp-48h]@4 char v17[4]; // [sp+20h] [bp-44h]@6 int v18; // [sp+24h] [bp-40h]@6 int v19; // [sp+28h] [bp-3Ch]@6 int v20; // [sp+2Ch] [bp-38h]@6 int v21; // [sp+30h] [bp-34h]@6 int v22; // [sp+34h] [bp-30h]@6 int v23; // [sp+38h] [bp-2Ch]@6 int v24; // [sp+3Ch] [bp-28h]@6 char v25; // [sp+40h] [bp-24h]@6 unsigned int v26; // [sp+60h] [bp-4h]@1 int v27; // [sp+64h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v2 = (int)this; v3 = fopen(a2, "rb"); if ( v3 ) { sub_62A3B0(v2); v12 = v2 + 1028; fread((void *)(v2 + 1028), 4u, 1u, v3); v15 = 0; if ( *(_DWORD *)(v2 + 1028) > 0u ) { v16 = v2 + 4; do { if ( v15 >= 0x100 ) break; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; fread(&v25, 1u, 0x20u, v3); v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)v17 = 0; strncpy(v17, &v25, 0x20u); fread(&v13, 4u, 1u, v3); if ( v13 ) { if ( v13 == 1 ) { v8 = operator new(0x3Cu); if ( v8 ) { *(_DWORD *)(v8 + 32) = 0; *(_DWORD *)(v8 + 28) = 0; *(_DWORD *)(v8 + 24) = 0; *(_DWORD *)(v8 + 20) = 0; *(_DWORD *)(v8 + 16) = 0; *(_DWORD *)(v8 + 12) = 0; *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = &off_703998; v9 = v8; } else { v9 = 0; } v10 = *(_DWORD *)v17; *(_DWORD *)v16 = v9; *(_DWORD *)(v9 + 4) = v10; *(_DWORD *)(v9 + 8) = v18; *(_DWORD *)(v9 + 12) = v19; *(_DWORD *)(v9 + 16) = v20; *(_DWORD *)(v9 + 20) = v21; *(_DWORD *)(v9 + 24) = v22; *(_DWORD *)(v9 + 28) = v23; *(_DWORD *)(v9 + 32) = v24; *(_DWORD *)(v9 + 36) = v13; fread((void *)(v9 + 40), 4u, 1u, v3); fread((void *)(v9 + 44), 4u, 1u, v3); fread((void *)(v9 + 48), 4u, 1u, v3); fread((void *)(v9 + 52), 4u, 1u, v3); v11 = (void *)(v9 + 56); fread(v11, 4u, 1u, v3); v14 = atan(1.0); v14 = v14 * 4.0; *(float *)v11 = v14 * *(float *)v11 / 180.0; } } else { v5 = operator new(0x34u); if ( v5 ) { *(_DWORD *)(v5 + 32) = 0; *(_DWORD *)(v5 + 28) = 0; *(_DWORD *)(v5 + 24) = 0; *(_DWORD *)(v5 + 20) = 0; *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)v5 = &off_7039A0; v6 = v5; } else { v6 = 0; } v7 = *(_DWORD *)v17; *(_DWORD *)v16 = v6; *(_DWORD *)(v6 + 4) = v7; *(_DWORD *)(v6 + 8) = v18; *(_DWORD *)(v6 + 12) = v19; *(_DWORD *)(v6 + 16) = v20; *(_DWORD *)(v6 + 20) = v21; *(_DWORD *)(v6 + 24) = v22; *(_DWORD *)(v6 + 28) = v23; *(_DWORD *)(v6 + 32) = v24; *(_DWORD *)(v6 + 36) = v13; fread((void *)(v6 + 40), 4u, 1u, v3); fread((void *)(v6 + 44), 4u, 1u, v3); fread((void *)(v6 + 48), 4u, 1u, v3); } v16 += 4; ++v15; } while ( v15 < *(_DWORD *)v12 ); } fclose(v3); result = 1; } else { result = 0; } return result; } // 703998: using guessed type int (__stdcall *off_703998)(float, float); // 7039A0: using guessed type int (__stdcall *off_7039A0)(float, float); // 86FEB8: using guessed type int __security_cookie; //----- (0062A6E0) -------------------------------------------------------- void *__thiscall sub_62A6E0(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_62A3F0((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0062A710) -------------------------------------------------------- int __thiscall sub_62A710(int this) { int result; // eax@1 result = this; *(_BYTE *)this = 0; *(_DWORD *)(this + 7) = 0; *(_DWORD *)(this + 11) = 0; *(_DWORD *)(this + 1) = -1; *(_WORD *)(this + 5) = -1; *(_WORD *)(this + 15) = -1; return result; } //----- (0062A740) -------------------------------------------------------- char __stdcall sub_62A740(int a1) { char result; // al@3 if ( (unsigned int)(a1 - 1) > 0x25 ) { LABEL_18: result = 0; } else { switch ( a1 ) { case 0: case 11: case 12: case 14: case 16: case 17: case 19: case 20: case 22: case 25: case 28: case 33: case 34: result = 1; break; case 1: case 3: case 21: case 35: result = 2; break; case 2: case 18: case 24: case 26: case 27: case 37: result = 4; break; case 4: result = 62; break; case 5: result = 89; break; case 6: case 7: case 8: case 38: result = 37; break; case 9: result = 36; break; case 10: result = 8; break; case 13: result = 101; break; case 15: result = 65; break; case 23: result = 19; break; case 29: result = 12; break; case 30: result = 9; break; case 31: result = 5; break; case 36: result = 26; break; default: goto LABEL_18; } } return result; } //----- (0062A860) -------------------------------------------------------- char __stdcall sub_62A860(int a1) { return sub_62A740(a1) + 16; } //----- (0062A8A0) -------------------------------------------------------- char __thiscall sub_62A8A0(void *this, const char *a2) { void *v2; // edi@1 char result; // al@2 int v4; // eax@4 unsigned int v5; // esi@7 int v6; // eax@8 char v7; // [sp+8h] [bp-50h]@1 int v8; // [sp+3Ch] [bp-1Ch]@3 unsigned int v9; // [sp+48h] [bp-10h]@1 int v10; // [sp+54h] [bp-4h]@1 int v11; // [sp+58h] [bp+0h]@1 v9 = (unsigned int)&v11 ^ __security_cookie; v2 = this; sub_626B20((int)&v7); v10 = 0; if ( sub_627480(&v7, a2, 18, 8) && (!v8 ? (v4 = 0) : (v4 = *(_DWORD *)(v8 + 40)), (*(_DWORD *)v2 = v4) != 0) ) { v5 = 0; *((_DWORD *)v2 + 1) = operator new(8 * v4); if ( *(_DWORD *)v2 ) { do { v6 = sub_626BC0((int)&v7, v5); if ( v6 ) { *(_DWORD *)(*((_DWORD *)v2 + 1) + 8 * v5) = *(_DWORD *)v6; *(_DWORD *)(*((_DWORD *)v2 + 1) + 8 * v5 + 4) = *(_DWORD *)(v6 + 4); } else { *(_DWORD *)(*((_DWORD *)v2 + 1) + 8 * v5) = 0; *(_DWORD *)(*((_DWORD *)v2 + 1) + 8 * v5 + 4) = 0; } ++v5; } while ( v5 < *(_DWORD *)v2 ); } v10 = -1; sub_626C10((int)&v7); result = 1; } else { v10 = -1; sub_626C10((int)&v7); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0062A9B0) -------------------------------------------------------- signed int __thiscall sub_62A9B0(int this, int a2) { unsigned int v2; // edx@1 unsigned int v3; // eax@1 int v4; // esi@2 int v5; // ecx@2 signed int result; // eax@5 v2 = *(_DWORD *)this; v3 = 0; if ( *(_DWORD *)this ) { v4 = *(_DWORD *)(this + 4); v5 = *(_DWORD *)(this + 4); while ( *(_DWORD *)v5 != a2 ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = *(_DWORD *)(v4 + 8 * v3 + 4); } else { LABEL_5: result = 8; } return result; } //----- (0062A9F0) -------------------------------------------------------- int __thiscall sub_62A9F0(int this, unsigned __int8 a2) { int v2; // eax@1 int result; // eax@2 v2 = *(_DWORD *)(this + 52); if ( v2 && (unsigned int)a2 < *(_DWORD *)(v2 + 40) ) result = sub_626BC0(this, a2); else result = 0; return result; } //----- (0062AA20) -------------------------------------------------------- int __thiscall sub_62AA20(int this, unsigned __int8 a2, char a3) { int v3; // eax@1 int v4; // eax@3 int result; // eax@5 v3 = *(_DWORD *)(this + 52); if ( v3 && (unsigned int)a2 < *(_DWORD *)(v3 + 40) && (v4 = sub_626BC0(this, a2)) != 0 ) { switch ( a3 ) { case 0: result = v4 + 12; break; case 1: result = v4 + 52; break; case 2: result = v4 + 92; break; case 3: result = v4 + 132; break; default: goto LABEL_9; } } else { LABEL_9: result = (int)&unk_14D420D0; } return result; } //----- (0062AA90) -------------------------------------------------------- int __thiscall sub_62AA90(int this, unsigned __int8 a2, char a3) { int v3; // eax@1 int v4; // eax@3 int result; // eax@5 v3 = *(_DWORD *)(this + 52); if ( v3 && (unsigned int)a2 < *(_DWORD *)(v3 + 40) && (v4 = sub_626BC0(this, a2)) != 0 ) { switch ( a3 ) { case 0: result = *(_DWORD *)(v4 + 44); break; case 1: result = *(_DWORD *)(v4 + 84); break; case 2: result = *(_DWORD *)(v4 + 124); break; case 3: result = *(_DWORD *)(v4 + 164); break; default: goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (0062AB00) -------------------------------------------------------- int __thiscall sub_62AB00(int this, unsigned __int8 a2, char a3) { int v3; // eax@1 int v4; // eax@3 int result; // eax@5 v3 = *(_DWORD *)(this + 52); if ( v3 && (unsigned int)a2 < *(_DWORD *)(v3 + 40) && (v4 = sub_626BC0(this, a2)) != 0 ) { switch ( a3 ) { case 0: result = *(_DWORD *)(v4 + 48); break; case 1: result = *(_DWORD *)(v4 + 88); break; case 2: result = *(_DWORD *)(v4 + 128); break; case 3: result = *(_DWORD *)(v4 + 168); break; default: goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (0062AB70) -------------------------------------------------------- int __thiscall sub_62AB70(int this, unsigned __int8 a2) { int v2; // eax@1 int v3; // eax@3 int result; // eax@4 v2 = *(_DWORD *)(this + 52); if ( v2 && (unsigned int)a2 < *(_DWORD *)(v2 + 40) && (v3 = sub_626BC0(this, a2)) != 0 ) result = *(_DWORD *)(v3 + 4) == 0; else result = 0; return result; } //----- (0062ABB0) -------------------------------------------------------- int __thiscall sub_62ABB0(int this, unsigned __int8 a2) { int v2; // eax@1 int v3; // eax@3 int result; // eax@4 v2 = *(_DWORD *)(this + 52); if ( v2 && (unsigned int)a2 < *(_DWORD *)(v2 + 40) && (v3 = sub_626BC0(this, a2)) != 0 ) result = *(_DWORD *)(v3 + 8) == 0; else result = 0; return result; } //----- (0062ABF0) -------------------------------------------------------- char *__thiscall sub_62ABF0(void *this, unsigned __int8 a2) { char *result; // eax@2 if ( a2 < 0x80u ) result = (char *)this + a2 + 4; else result = 0; return result; } //----- (0062AC10) -------------------------------------------------------- unsigned int __thiscall sub_62AC10(void *this, unsigned __int8 a2, char a3) { char *v3; // eax@2 unsigned int result; // eax@4 if ( a2 >= 0x80u || (v3 = (char *)this + a2 + 4, (char *)this + a2 == (void *)-4) ) { LABEL_8: result = 0; } else { switch ( a3 ) { 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; } //----- (0062AC80) -------------------------------------------------------- int __thiscall sub_62AC80(void *this, unsigned __int8 a2, char a3, int a4) { int result; // eax@3 if ( a2 && a2 != 10 ) result = sub_62AC10(this, a2, a3) == 0; else result = 0; return result; } //----- (0062ACB0) -------------------------------------------------------- signed int __thiscall sub_62ACB0(void *this, unsigned __int8 a2, char a3, int a4) { signed int result; // eax@3 if ( a2 && a2 != 10 ) result = (signed int)sub_62AC10(this, a2, a3) >= 1; else result = 1; return result; } //----- (0062ACE0) -------------------------------------------------------- signed int __thiscall sub_62ACE0(void *this, unsigned __int8 a2, char a3, int a4) { signed int result; // eax@3 if ( a2 && a2 != 10 ) result = (signed int)sub_62AC10(this, a2, a3) >= 2; else result = 1; return result; } //----- (0062AD10) -------------------------------------------------------- signed int __thiscall sub_62AD10(int this, char a2, char a3) { int v3; // edi@1 int v4; // eax@1 int v5; // esi@2 signed int result; // eax@6 v3 = *(_DWORD *)(this + 132); v4 = 0; if ( v3 <= 0 ) { LABEL_6: *(_BYTE *)(this + 2 * v3 + 136) = a2; *(_BYTE *)(this + 2 * *(_DWORD *)(this + 132) + 137) = a3; result = 1; ++*(_DWORD *)(this + 132); } else { v5 = this + 137; while ( *(_BYTE *)(v5 - 1) != a2 || *(_BYTE *)v5 != a3 ) { ++v4; v5 += 2; if ( v4 >= v3 ) goto LABEL_6; } result = 0; } return result; } //----- (0062AD70) -------------------------------------------------------- signed int __thiscall sub_62AD70(void *this, unsigned __int8 a2, char a3, __int16 a4, int a5) { unsigned __int8 v5; // dl@1 void *v6; // esi@1 signed int result; // eax@3 int v8; // eax@4 v5 = a2; v6 = this; if ( !a2 || a2 == 10 || (result = (signed int)sub_62AC10(this, a2, a3) >= 2) != 0 ) { *((_WORD *)v6 + 581) = a4; v8 = a5; *((_BYTE *)v6 + 1160) = v5; *((_BYTE *)v6 + 1161) = a3; if ( !a5 ) { if ( !v5 ) { *((_DWORD *)v6 + 291) = &unk_14D420D1; return 1; } v8 = sub_62AA20(*(_DWORD *)v6, v5, a3); } *((_DWORD *)v6 + 291) = v8; result = 1; } return result; } //----- (0062AE00) -------------------------------------------------------- void *__thiscall sub_62AE00(int this) { int v1; // esi@1 void *result; // eax@1 v1 = this; result = memset((void *)(this + 4), 0, 0x80u); *(_DWORD *)(v1 + 1160) = -65536; *(_DWORD *)(v1 + 1164) = &unk_14D420D1; *(_DWORD *)(v1 + 132) = 0; return result; } //----- (0062AE40) -------------------------------------------------------- int __thiscall sub_62AE40(void *this) { int v1; // edi@1 signed int v2; // eax@1 signed int v3; // ebx@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 < 0x80u ) { v4 = (char *)this + (unsigned __int8)v2 + 4; if ( (char *)this + (unsigned __int8)v2 != (void *)-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 < 128 ); return v1; } //----- (0062AED0) -------------------------------------------------------- signed int __thiscall sub_62AED0(int this, char a2, char a3, char a4) { int v4; // eax@2 signed int result; // eax@8 if ( (unsigned __int8)a2 >= 0x80u || (v4 = (unsigned __int8)a2 + this + 4, (unsigned __int8)a2 + this == -4) ) { LABEL_9: result = 0; } else { switch ( a3 ) { case 0: *(_BYTE *)v4 ^= (a4 ^ *(_BYTE *)v4) & 3; break; case 1: *(_BYTE *)v4 ^= (*(_BYTE *)v4 ^ 4 * a4) & 0xC; break; case 2: *(_BYTE *)v4 ^= (*(_BYTE *)v4 ^ 16 * a4) & 0x30; break; case 3: *(_BYTE *)v4 = (a4 << 6) | *(_BYTE *)v4 & 0x3F; break; default: goto LABEL_9; } sub_62AD10(this, a2, a3); result = 1; } return result; } //----- (0062AF70) -------------------------------------------------------- int __thiscall sub_62AF70(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = a2; memset((void *)(this + 4), 0, 0x80u); *(_DWORD *)(v2 + 1160) = -65536; *(_DWORD *)(v2 + 1164) = &unk_14D420D1; *(_DWORD *)(v2 + 132) = 0; return v2; } //----- (0062AFC0) -------------------------------------------------------- int __cdecl sub_62AFC0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 45); i = *(_DWORD *)i ) result = i; return result; } //----- (0062AFE0) -------------------------------------------------------- void *__thiscall sub_62AFE0(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 45) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 45) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 45) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 45) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 45) ) goto LABEL_11; return result; } //----- (0062B040) -------------------------------------------------------- int __thiscall sub_62B040(int this, int a2) { int result; // eax@1 int v3; // edi@1 int v4; // edx@2 unsigned int v5; // ebx@2 int v6; // eax@4 unsigned int v7; // esi@6 unsigned int v8; // ecx@6 int v9; // eax@10 bool v10; // sf@10 unsigned int v11; // [sp+4h] [bp-8h]@2 int v12; // [sp+8h] [bp-4h]@1 result = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(result + 4); v12 = *(_DWORD *)(this + 4); if ( !*(_BYTE *)(v3 + 45) ) { v4 = a2; v5 = *(_DWORD *)(a2 + 16); v11 = *(_DWORD *)(a2 + 20); while ( 1 ) { v6 = v3 + 12; if ( v11 >= 0x10 ) v4 = *(_DWORD *)v4; v7 = *(_DWORD *)(v3 + 28); v8 = v7; if ( v7 >= v5 ) v8 = v5; if ( *(_DWORD *)(v3 + 32) >= 0x10u ) v6 = *(_DWORD *)v6; v9 = sub_4189B0(v6, v4, v8); v10 = v9 < 0; if ( !v9 ) { if ( v7 < v5 ) goto LABEL_14; LOBYTE(v9) = v7 != v5; v10 = v9 < 0; } if ( v10 ) { LABEL_14: v3 = *(_DWORD *)(v3 + 8); goto LABEL_16; } v12 = v3; v3 = *(_DWORD *)v3; LABEL_16: if ( *(_BYTE *)(v3 + 45) ) return v12; v4 = a2; } } return result; } //----- (0062B0D0) -------------------------------------------------------- int __thiscall sub_62B0D0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@6 int v7; // edx@6 int v8; // edx@9 int v9; // edx@11 void *v10; // eax@13 int v11; // edx@14 int v12; // esi@14 int v13; // esi@15 int v14; // edx@18 int v15; // esi@20 int v16; // esi@22 int v17; // edx@26 int v18; // esi@26 int v19; // edi@26 int v20; // edi@28 int v21; // edi@30 int v22; // esi@33 void *v23; // edx@36 int v24; // esi@36 int v25; // esi@38 int v26; // esi@40 int v27; // edi@46 int v28; // edi@48 int v29; // ecx@54 int result; // eax@54 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_7FFFFFE ) { if ( *((_DWORD *)a5 + 8) >= 0x10u ) operator delete(*((void **)a5 + 3)); *((_DWORD *)a5 + 8) = 15; *((_DWORD *)a5 + 7) = 0; *((_BYTE *)a5 + 12) = 0; operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 44) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 44) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 45) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 45) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_52: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 44) = 1; *(_BYTE *)(v13 + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 44) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 45) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 45) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_52; } *(_BYTE *)(v11 + 44) = 1; *(_BYTE *)(v22 + 44) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 44) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 44) = 1; return result; } //----- (0062B320) -------------------------------------------------------- int __thiscall sub_62B320(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int v14; // eax@35 int i; // ecx@36 int v16; // eax@38 int v17; // eax@61 int result; // eax@63 int v19; // [sp+10h] [bp-8h]@3 void *v20; // [sp+14h] [bp-4h]@1 v3 = a3; v20 = this; if ( *(_BYTE *)(a3 + 45) ) sub_6517D8((int)"invalid map/set iterator"); v19 = a3; sub_633F50(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 45) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 45) ) *(_DWORD *)(v4 + 4) = v6; v7 = v20; v8 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v20 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 45) ) { v9 = v6; } else { v9 = sub_62AFC0(v4); v7 = v20; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 45) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_633F30(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 45) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 45) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 44); *(_BYTE *)(v5 + 44) = *(_BYTE *)(v3 + 44); *(_BYTE *)(v3 + 44) = v13; LABEL_35: v14 = v19; if ( *(_BYTE *)(v19 + 44) == 1 ) { for ( i = (int)v20; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 44) != 1 ) break; v16 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v16 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v16 + 44) ) { *(_BYTE *)(v16 + 44) = 1; *(_BYTE *)(v6 + 44) = 0; sub_622EA0(i, v6); v16 = *(_DWORD *)(v6 + 8); i = (int)v20; } if ( *(_BYTE *)(v16 + 45) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v16 + 44) != 1 || *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) == 1 ) { *(_BYTE *)(*(_DWORD *)v16 + 44) = 1; *(_BYTE *)(v16 + 44) = 0; sub_622F00(i, v16); v16 = *(_DWORD *)(v6 + 8); i = (int)v20; } *(_BYTE *)(v16 + 44) = *(_BYTE *)(v6 + 44); *(_BYTE *)(v6 + 44) = 1; *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) = 1; sub_622EA0(i, v6); break; } } else { if ( !*(_BYTE *)(v16 + 44) ) { *(_BYTE *)(v16 + 44) = 1; *(_BYTE *)(v6 + 44) = 0; sub_622F00(i, v6); v16 = *(_DWORD *)v6; i = (int)v20; } if ( *(_BYTE *)(v16 + 45) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) != 1 || *(_BYTE *)(*(_DWORD *)v16 + 44) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v16 + 44) == 1 ) { *(_BYTE *)(*(_DWORD *)(v16 + 8) + 44) = 1; *(_BYTE *)(v16 + 44) = 0; sub_622EA0(i, v16); v16 = *(_DWORD *)v6; i = (int)v20; } *(_BYTE *)(v16 + 44) = *(_BYTE *)(v6 + 44); *(_BYTE *)(v6 + 44) = 1; *(_BYTE *)(*(_DWORD *)v16 + 44) = 1; sub_622F00(i, v6); break; } } *(_BYTE *)(v16 + 44) = 0; LABEL_53: v4 = v6; } v14 = v19; *(_BYTE *)(v4 + 44) = 1; } if ( *(_DWORD *)(v14 + 32) >= 0x10u ) operator delete(*(void **)(v14 + 12)); *(_DWORD *)(v19 + 32) = 15; *(_DWORD *)(v19 + 28) = 0; *(_BYTE *)(v19 + 12) = 0; operator delete((void *)v19); v17 = *((_DWORD *)v20 + 2); if ( v17 ) *((_DWORD *)v20 + 2) = v17 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (0062B5A0) -------------------------------------------------------- void __stdcall sub_62B5A0(void *a1) { void *v1; // esi@1 void *i; // edi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 45); v1 = i ) { sub_62B5A0(*((void **)i + 2)); i = *(void **)i; if ( *((_DWORD *)v1 + 8) >= 0x10u ) operator delete(*((void **)v1 + 3)); *((_DWORD *)v1 + 8) = 15; *((_DWORD *)v1 + 7) = 0; *((_BYTE *)v1 + 12) = 0; operator delete(v1); } } //----- (0062B600) -------------------------------------------------------- int __thiscall sub_62B600(int this, int a2, void *a3, int a4) { int v4; // edx@1 int v5; // eax@1 int v6; // ecx@1 int v7; // edi@1 void **v8; // ebx@1 bool v9; // al@1 int v10; // eax@4 char *v11; // edx@6 unsigned int v12; // esi@8 unsigned int v13; // edi@8 unsigned int v14; // ecx@8 int v15; // eax@12 bool v16; // sf@12 unsigned int v17; // edi@17 unsigned int v18; // esi@19 unsigned int v19; // edx@19 int v20; // ecx@22 int v21; // eax@24 bool v22; // sf@24 signed int v23; // eax@26 int v24; // edx@31 int v25; // esi@35 int v26; // ecx@37 int v27; // ecx@38 int result; // eax@38 int v29; // eax@41 int v30; // [sp-10h] [bp-2Ch]@37 char v31; // [sp-Ch] [bp-28h]@37 int v32; // [sp-8h] [bp-24h]@37 void *v33; // [sp-4h] [bp-20h]@37 int v34; // [sp+Ch] [bp-10h]@4 int v35; // [sp+10h] [bp-Ch]@1 char v36; // [sp+14h] [bp-8h]@1 int v37; // [sp+18h] [bp-4h]@1 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = *(_DWORD *)(v5 + 4); v7 = v5; v8 = (void **)((char *)a3 + 12); v9 = 1; v35 = v4; v37 = v6; v36 = 1; if ( !*(_BYTE *)(v6 + 45) ) { while ( 1 ) { v34 = v6; v10 = v6 + 12; if ( (_BYTE)a4 ) { if ( *((_DWORD *)a3 + 8) < 0x10u ) v11 = (char *)a3 + 12; else v11 = (char *)*v8; v12 = *(_DWORD *)(v6 + 28); v13 = *((_DWORD *)a3 + 7); v14 = v12; if ( v12 >= v13 ) v14 = *((_DWORD *)a3 + 7); if ( *(_DWORD *)(v10 + 20) >= 0x10u ) v10 = *(_DWORD *)v10; v15 = sub_4189B0(v10, (int)v11, v14); v16 = v15 < 0; if ( !v15 ) { if ( v12 < v13 ) { v9 = 0; goto LABEL_30; } v16 = (v12 != v13) < 0; } v9 = !v16; } else { v17 = *(_DWORD *)(v6 + 28); if ( *(_DWORD *)(v6 + 32) >= 0x10u ) v10 = *(_DWORD *)v10; v18 = *((_DWORD *)a3 + 7); v19 = *((_DWORD *)a3 + 7); if ( v18 >= v17 ) v19 = *(_DWORD *)(v6 + 28); if ( *((_DWORD *)a3 + 8) < 0x10u ) v20 = (int)((char *)a3 + 12); else v20 = (int)*v8; v21 = sub_4189B0(v20, v10, v19); v22 = v21 < 0; if ( !v21 ) { if ( v18 >= v17 ) v23 = v18 != v17; else v23 = -1; v22 = v23 < 0; } v9 = v22; } LABEL_30: v36 = v9; if ( v9 ) v24 = *(_DWORD *)v37; else v24 = *(_DWORD *)(v37 + 8); v37 = v24; if ( *(_BYTE *)(v24 + 45) ) { v7 = v34; v4 = v35; break; } v6 = v24; } } v25 = v7; a4 = v7; if ( v9 ) { if ( v7 == **(_DWORD **)(v4 + 4) ) { v33 = a3; v32 = v7; v31 = 1; v30 = (int)&a4; v26 = v4; LABEL_38: v27 = *(_DWORD *)sub_62B0D0(v26, v30, v31, v32, v33); result = a2; *(_DWORD *)a2 = v27; *(_BYTE *)(a2 + 4) = 1; return result; } sub_62AFE0(&a4); v25 = a4; } if ( *((_DWORD *)a3 + 8) < 0x10u ) v29 = (int)((char *)a3 + 12); else v29 = (int)*v8; if ( sub_422730(v25 + 12, 0, *(_DWORD *)(v25 + 28), v29, *((_DWORD *)a3 + 7)) < 0 ) { v33 = a3; v32 = v7; v31 = v36; v26 = v35; v30 = (int)&a4; goto LABEL_38; } if ( *((_DWORD *)a3 + 8) >= 0x10u ) operator delete(*v8); *((_DWORD *)a3 + 8) = 15; *((_DWORD *)a3 + 7) = 0; *(_BYTE *)v8 = 0; operator delete(a3); result = a2; *(_DWORD *)a2 = v25; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (0062B863) -------------------------------------------------------- void __usercall sub_62B863(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0062B8A0) -------------------------------------------------------- int __thiscall sub_62B8A0(int this, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // esi@1 int v6; // eax@1 int v7; // edi@1 int result; // eax@2 int v9; // eax@4 int v10; // eax@17 int v11; // ecx@23 int v12; // [sp+Ch] [bp-8h]@23 v4 = a4; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = a4 + 12; if ( !*(_DWORD *)(this + 8) ) { sub_62B0D0(this, a2, 1, v6, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v6 ) { v9 = a3 + 12; if ( *(_DWORD *)(a3 + 32) >= 0x10u ) v9 = *(_DWORD *)v9; if ( sub_422730(a4 + 12, 0, *(_DWORD *)(a4 + 28), v9, *(_DWORD *)(a3 + 28)) < 0 ) { sub_62B0D0(v5, a2, 1, a3, (void *)v4); return a2; } goto LABEL_23; } if ( a3 == v6 ) { if ( sub_479A40(*(_DWORD *)(v6 + 8) + 12, a4 + 12) ) { sub_62B0D0(v5, a2, 0, *(_DWORD *)(*(_DWORD *)(v5 + 4) + 8), (void *)v4); return a2; } goto LABEL_23; } if ( sub_479A40(a4 + 12, a3 + 12) ) { a4 = a3; sub_62AFE0(&a4); if ( sub_479A40(a4 + 12, v7) ) { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 45) ) { sub_62B0D0(v5, a2, 0, a4, (void *)v4); result = a2; } else { sub_62B0D0(v5, a2, 1, a3, (void *)v4); result = a2; } return result; } } if ( !sub_479A40(a3 + 12, v7) ) goto LABEL_23; a4 = a3; sub_633F50(&a4); v10 = a4; if ( a4 == *(_DWORD *)(v5 + 4) ) goto LABEL_20; if ( !sub_479A40(v7, a4 + 12) ) { LABEL_23: v11 = *(_DWORD *)sub_62B600(v5, (int)&v12, (void *)v4, 0); result = a2; *(_DWORD *)a2 = v11; return result; } v10 = a4; LABEL_20: if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 45) ) { sub_62B0D0(v5, a2, 0, a3, (void *)v4); result = a2; } else { sub_62B0D0(v5, a2, 1, v10, (void *)v4); result = a2; } return result; } //----- (0062BA60) -------------------------------------------------------- int __thiscall sub_62BA60(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 int v9; // edx@5 int v10; // eax@6 int v11; // ecx@7 int j; // eax@7 int i; // eax@10 char v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*(_BYTE *)(v6 + 45) ) { v10 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v10 + 45) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v11 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v11 = j; a3 = v11; } } sub_62B320((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_62B5A0(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (0062BB20) -------------------------------------------------------- int __thiscall sub_62BB20(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ebx@1 int v5; // eax@2 int v6; // eax@5 int v7; // esi@5 int result; // eax@7 int v9; // [sp+Ch] [bp-34h]@5 void *v10; // [sp+10h] [bp-30h]@5 int v11; // [sp+20h] [bp-20h]@5 unsigned int v12; // [sp+24h] [bp-1Ch]@5 __int16 v13; // [sp+2Ch] [bp-14h]@5 unsigned int v14; // [sp+30h] [bp-10h]@1 int v15; // [sp+3Ch] [bp-4h]@5 int v16; // [sp+40h] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v2 = this; v3 = sub_62B040(this, a2); v4 = v3; if ( v3 == *(_DWORD *)(v2 + 4) ) goto LABEL_11; v5 = v3 + 12; if ( *(_DWORD *)(v4 + 32) >= 0x10u ) v5 = *(_DWORD *)v5; if ( sub_422730(a2, 0, *(_DWORD *)(a2 + 16), v5, *(_DWORD *)(v4 + 28)) >= 0 ) { result = v4 + 40; } else { LABEL_11: v12 = 15; v11 = 0; LOBYTE(v10) = 0; sub_423FC0(&v10, a2, 0, 0xFFFFFFFFu); v13 = 0; v15 = 0; v6 = loc_62B7C0(v2, &v10); sub_62B8A0(v2, (int)&v9, v4, v6); v7 = v9; if ( v12 >= 0x10 ) operator delete(v10); result = v7 + 40; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0062BC00) -------------------------------------------------------- signed int __thiscall sub_62BC00(void *this, const char *a2, int a3, int a4) { unsigned int i; // edi@6 int v6; // eax@7 int v7; // esi@7 int v8; // edx@8 char v9; // cl@9 __int16 v10; // si@10 void *v11; // [sp+Ch] [bp-74h]@8 int v12; // [sp+1Ch] [bp-64h]@8 unsigned int v13; // [sp+20h] [bp-60h]@8 int v14; // [sp+28h] [bp-58h]@1 unsigned int v15; // [sp+2Ch] [bp-54h]@4 char v16; // [sp+30h] [bp-50h]@1 int v17; // [sp+64h] [bp-1Ch]@3 unsigned int v18; // [sp+70h] [bp-10h]@1 int v19; // [sp+7Ch] [bp-4h]@1 int v20; // [sp+80h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v14 = (int)this; sub_626B20((int)&v16); v19 = 0; if ( !sub_627480(&v16, a2, a3, a4) ) { LABEL_2: v19 = -1; sub_626C10((int)&v16); return 0; } if ( v17 ) v15 = *(_DWORD *)(v17 + 40); else v15 = 0; for ( i = 0; i < v15; LOBYTE(v11) = 0 ) { v6 = sub_626BC0((int)&v16, i); v7 = v6; if ( !v6 ) goto LABEL_2; v13 = 15; v12 = 0; LOBYTE(v11) = 0; v8 = v6 + 1; do v9 = *(_BYTE *)v6++; while ( v9 ); sub_4241C0((int)&v11, (char *)v7, v6 - v8); v10 = *(_WORD *)(v7 + 32); LOBYTE(v19) = 1; *(_WORD *)sub_62BB20(v14, (int)&v11) = v10; LOBYTE(v19) = 0; if ( v13 >= 0x10 ) operator delete(v11); ++i; v13 = 15; v12 = 0; } v19 = -1; sub_626C10((int)&v16); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0062BD30) -------------------------------------------------------- __int16 __thiscall sub_62BD30(int this, void *a2, int a3, int a4, int a5, int a6, unsigned int a7, int a8) { __int16 v8; // si@1 v8 = *(_WORD *)sub_62BB20(this, (int)&a2); if ( a7 >= 0x10 ) operator delete(a2); return v8; } //----- (0062BD90) -------------------------------------------------------- void __thiscall sub_62BD90(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_62BA60(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (0062BDF0) -------------------------------------------------------- int __thiscall sub_62BDF0(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-10h]@4 int v5; // [sp+10h] [bp-4h]@3 v1 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x30u); if ( !v2 ) { v5 = 0; std::exception::exception(&v5); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 44) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 45) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0062BE60) -------------------------------------------------------- void __thiscall sub_62BE60(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // eax@3 v1 = this; v2 = *(void **)(this + 16); *(_DWORD *)this = off_7039B4; if ( v2 ) { free(v2); *(_DWORD *)(v1 + 16) = 0; } v3 = *(void **)(v1 + 32); *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 8) = 0; if ( v3 ) sub_6530A4(v3); *(_DWORD *)(v1 + 28) = 0; *(_DWORD *)(v1 + 24) = 0; } // 7039B4: using guessed type int (__stdcall *off_7039B4[2])(int); //----- (0062BEA0) -------------------------------------------------------- void *__thiscall sub_62BEA0(int this, int a2) { int v2; // esi@1 void *result; // eax@6 bool v4; // zf@9 v2 = this; if ( *(_DWORD *)(this + 12) < a2 ) { if ( *(_DWORD *)(this + 16) ) { free(*(void **)(this + 16)); *(_DWORD *)(v2 + 16) = 0; } *(_DWORD *)(v2 + 12) = 0; } if ( !*(_DWORD *)(v2 + 16) ) { result = malloc(32 * a2); *(_DWORD *)(v2 + 16) = result; if ( !result ) { *(_DWORD *)(v2 + 8) = 0; return result; } memset(result, 0, 32 * a2); *(_DWORD *)(v2 + 12) = a2; } v4 = *(_DWORD *)(v2 + 16) == 0; *(_DWORD *)(v2 + 8) = 0; return (void *)!v4; } //----- (0062BF20) -------------------------------------------------------- __time32_t __thiscall sub_62BF20(int this) { int v1; // esi@1 __time32_t result; // eax@1 v1 = this; *(_DWORD *)(this + 8) = 0; result = _time32(0); *(_DWORD *)(v1 + 20) = result; return result; } //----- (0062BF40) -------------------------------------------------------- signed int __thiscall sub_62BF40(int this, __int16 a2) { signed int result; // eax@2 signed int v3; // edx@3 int v4; // ecx@4 if ( *(_DWORD *)(this + 12) ) { v3 = *(_DWORD *)(this + 8); result = 0; if ( v3 <= 0 ) { LABEL_7: result = -1; } else { v4 = *(_DWORD *)(this + 16); while ( *(_WORD *)v4 != a2 ) { ++result; v4 += 32; if ( result >= v3 ) goto LABEL_7; } } } else { result = -1; } return result; } //----- (0062BF80) -------------------------------------------------------- int __thiscall sub_62BF80(int this, __int16 a2) { int v2; // edx@2 int v3; // eax@2 int v4; // edi@3 int v5; // ecx@3 int result; // eax@6 if ( !*(_DWORD *)(this + 12) || (v2 = *(_DWORD *)(this + 8), v3 = 0, v2 <= 0) ) goto LABEL_12; v4 = *(_DWORD *)(this + 16); v5 = *(_DWORD *)(this + 16); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 32; if ( v3 >= v2 ) return 0; } if ( v3 != -1 ) result = v4 + 32 * v3; else LABEL_12: result = 0; return result; } //----- (0062BFD0) -------------------------------------------------------- int __thiscall sub_62BFD0(int this, int a2) { int result; // eax@3 if ( a2 >= *(_DWORD *)(this + 8) || a2 < 0 ) result = 0; else result = *(_DWORD *)(this + 16) + 32 * a2; return result; } //----- (0062BFF0) -------------------------------------------------------- signed int __thiscall sub_62BFF0(int this, const void *a2) { int v2; // edx@2 int v3; // eax@2 int v4; // edi@3 int v5; // ecx@3 signed int result; // eax@6 void *v7; // eax@8 if ( !*(_DWORD *)(this + 12) || (v2 = *(_DWORD *)(this + 8), v3 = 0, v2 <= 0) ) goto LABEL_13; v4 = *(_DWORD *)(this + 16); v5 = *(_DWORD *)(this + 16); while ( *(_WORD *)v5 != *(_WORD *)a2 ) { ++v3; v5 += 32; if ( v3 >= v2 ) return 0; } if ( v3 != -1 && (v7 = (void *)(v4 + 32 * v3)) != 0 ) { memcpy(v7, a2, 0x20u); result = 1; } else { LABEL_13: result = 0; } return result; } //----- (0062C050) -------------------------------------------------------- signed int __thiscall sub_62C050(int this, const void *a2) { int v2; // ebx@1 signed int result; // eax@1 int v4; // edi@2 v2 = this; result = sub_62BFF0(this, a2); if ( !result ) { v4 = *(_DWORD *)(v2 + 8); if ( v4 >= *(_DWORD *)(v2 + 12) ) return result; memcpy((void *)(*(_DWORD *)(v2 + 16) + 32 * v4), a2, 0x20u); ++*(_DWORD *)(v2 + 8); } return 1; } //----- (0062C090) -------------------------------------------------------- int __stdcall sub_62C090(int a1) { int result; // eax@1 result = a1; if ( a1 ) { *(_BYTE *)(a1 + 23) = 0; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 28) = 0; *(_BYTE *)(a1 + 29) &= 0xFCu; *(_WORD *)(a1 + 30) = 0; } return result; } //----- (0062C0C0) -------------------------------------------------------- void __thiscall sub_62C0C0(int this, __int16 a2) { int v2; // esi@1 int v3; // ecx@2 int v4; // eax@2 int v5; // edx@3 v2 = this; if ( *(_DWORD *)(this + 12) ) { v3 = *(_DWORD *)(this + 8); v4 = 0; if ( v3 > 0 ) { v5 = *(_DWORD *)(v2 + 16); while ( *(_WORD *)v5 != a2 ) { ++v4; v5 += 32; if ( v4 >= v3 ) return; } if ( v4 != -1 ) { memmove( (void *)(*(_DWORD *)(v2 + 16) + 32 * v4), (const void *)(*(_DWORD *)(v2 + 16) + 32 * v4 + 32), 32 * (v3 - v4 - 1)); --*(_DWORD *)(v2 + 8); } } } } //----- (0062C120) -------------------------------------------------------- int __thiscall sub_62C120(int this, __int16 a2) { int v2; // ebx@1 int result; // eax@1 int v4; // esi@2 bool v5; // zf@3 __time64_t v6; // qax@8 void *v7; // edi@8 __int16 v8; // [sp+8h] [bp-20h]@8 char v9; // [sp+Ah] [bp-1Eh]@8 __int64 v10; // [sp+Bh] [bp-1Dh]@8 int v11; // [sp+13h] [bp-15h]@8 int v12; // [sp+17h] [bp-11h]@8 int v13; // [sp+1Bh] [bp-Dh]@8 int v14; // [sp+1Fh] [bp-9h]@8 int v15; // [sp+23h] [bp-5h]@8 char v16; // [sp+27h] [bp-1h]@8 v2 = this; result = sub_632D90(*(_DWORD *)(this + 4), a2); if ( result ) { v4 = sub_62BF80(v2, a2); if ( v4 ) { v5 = *(_BYTE *)(v4 + 2) == 20; *(_BYTE *)(v4 + 2) = 6; if ( v5 ) { *(_DWORD *)(v4 + 3) = 0; *(_DWORD *)(v4 + 7) = 0; *(_DWORD *)(v4 + 11) = 0; *(_DWORD *)(v4 + 15) = 0; *(_DWORD *)(v4 + 19) = 0; *(_DWORD *)(v4 + 23) = 0; *(_DWORD *)(v4 + 27) = 0; *(_BYTE *)(v4 + 31) = 0; *(_QWORD *)(v4 + 3) = _time64(0); result = 1; } else { *(_BYTE *)(v4 + 23) = 0; *(_DWORD *)(v4 + 24) = 0; *(_BYTE *)(v4 + 28) = 0; *(_BYTE *)(v4 + 29) &= 0xFCu; *(_WORD *)(v4 + 30) = 0; result = 1; } } else { if ( *(_DWORD *)(v2 + 8) < *(_DWORD *)(v2 + 12) ) { v8 = a2; v9 = 6; v10 = 0i64; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v6 = _time64(0); v7 = (void *)(*(_DWORD *)(v2 + 16) + 32 * *(_DWORD *)(v2 + 8)); v10 = v6; memcpy(v7, &v8, 0x20u); result = 1; ++*(_DWORD *)(v2 + 8); } else { result = 0; } } } return result; } //----- (0062C220) -------------------------------------------------------- signed int __thiscall sub_62C220(int this, __int16 a2) { int v2; // edi@1 int v3; // edx@2 int v4; // eax@2 int v5; // esi@3 int v6; // ecx@3 int v7; // esi@6 int v8; // eax@10 signed int result; // eax@13 v2 = this; if ( !*(_DWORD *)(this + 12) || (v3 = *(_DWORD *)(this + 8), v4 = 0, v3 <= 0) ) goto LABEL_18; v5 = *(_DWORD *)(this + 16); v6 = *(_DWORD *)(this + 16); while ( *(_WORD *)v6 != a2 ) { ++v4; v6 += 32; if ( v4 >= v3 ) { v7 = 0; goto LABEL_10; } } if ( v4 != -1 ) v7 = 32 * v4 + v5; else LABEL_18: v7 = 0; LABEL_10: v8 = sub_632D90(*(_DWORD *)(v2 + 4), a2); if ( v7 && v8 ) { if ( *(_BYTE *)(v8 + 18) ) { *(_BYTE *)(v7 + 2) = 4; *(_BYTE *)(v7 + 23) = 0; *(_DWORD *)(v7 + 24) = 0; *(_BYTE *)(v7 + 28) = 0; *(_BYTE *)(v7 + 29) &= 0xFCu; *(_WORD *)(v7 + 30) = 0; result = 1; } else { sub_62C0C0(v2, a2); result = 1; } } else { result = 0; } return result; } //----- (0062C2C0) -------------------------------------------------------- signed int __thiscall sub_62C2C0(int this, __int16 a2, char a3) { int v3; // edx@2 int v4; // eax@2 int v5; // esi@3 int v6; // ecx@3 signed int result; // eax@6 int v8; // eax@8 if ( !*(_DWORD *)(this + 12) || (v3 = *(_DWORD *)(this + 8), v4 = 0, v3 <= 0) ) goto LABEL_13; v5 = *(_DWORD *)(this + 16); v6 = *(_DWORD *)(this + 16); while ( *(_WORD *)v6 != a2 ) { ++v4; v6 += 32; if ( v4 >= v3 ) return 0; } if ( v4 != -1 && (v8 = v5 + 32 * v4) != 0 ) { *(_BYTE *)(v8 + 23) = a3; result = 1; } else { LABEL_13: result = 0; } return result; } //----- (0062C320) -------------------------------------------------------- signed int __thiscall sub_62C320(int this, __int16 a2) { int v2; // edx@2 int v3; // eax@2 int v4; // esi@3 int v5; // ecx@3 signed int result; // eax@6 int v7; // eax@8 if ( !*(_DWORD *)(this + 12) || (v2 = *(_DWORD *)(this + 8), v3 = 0, v2 <= 0) ) goto LABEL_13; v4 = *(_DWORD *)(this + 16); v5 = *(_DWORD *)(this + 16); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 32; if ( v3 >= v2 ) return 0; } if ( v3 != -1 && (v7 = v4 + 32 * v3) != 0 ) { *(_BYTE *)(v7 + 2) = 7; result = 1; } else { LABEL_13: result = 0; } return result; } //----- (0062C380) -------------------------------------------------------- int __thiscall sub_62C380(int this, int a2) { int v2; // ebx@1 int result; // eax@2 int v4; // edi@3 __time64_t v5; // qax@4 v2 = this; if ( a2 ) { result = sub_632D90(*(_DWORD *)(this + 4), *(_WORD *)a2); v4 = result; if ( result ) { *(_BYTE *)(a2 + 2) = 2 * (*(_BYTE *)(result + 18) != 0) + 2; v5 = _time64(0); ++*(_DWORD *)(a2 + 19); *(_QWORD *)(a2 + 11) = v5; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 92))(v2, a2, v4); result = 1; } } else { result = 0; } return result; } //----- (0062C3F0) -------------------------------------------------------- signed int __thiscall sub_62C3F0(int this, __int16 a2) { int v2; // edx@2 int v3; // eax@2 int v4; // esi@3 int v5; // ecx@3 signed int result; // eax@6 int v7; // eax@8 if ( !*(_DWORD *)(this + 12) || (v2 = *(_DWORD *)(this + 8), v3 = 0, v2 <= 0) ) goto LABEL_13; v4 = *(_DWORD *)(this + 16); v5 = *(_DWORD *)(this + 16); while ( *(_WORD *)v5 != a2 ) { ++v3; v5 += 32; if ( v3 >= v2 ) return 0; } if ( v3 != -1 && (v7 = v4 + 32 * v3) != 0 ) { *(_BYTE *)(v7 + 2) = 1; result = 1; } else { LABEL_13: result = 0; } return result; } //----- (0062C450) -------------------------------------------------------- bool __thiscall sub_62C450(int this, int a2) { int v2; // esi@1 int v3; // ebx@1 unsigned __int8 v4; // al@3 const void *v5; // esi@6 int v6; // eax@7 int v7; // ecx@8 int v8; // edi@11 signed int v9; // eax@12 void *v10; // eax@14 int v11; // ecx@18 int v13; // [sp+8h] [bp-8h]@3 unsigned __int8 v14; // [sp+Fh] [bp-1h]@3 v2 = a2; v3 = this; if ( *(_BYTE *)(a2 + 4) ) { *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 20) = _time32(0); } v4 = 0; v13 = 0; v14 = 0; if ( *(_BYTE *)(a2 + 5) ) { while ( 1 ) { v5 = (const void *)(32 * v4 + v2 + 6); if ( !*(_DWORD *)(v3 + 12) || (v6 = 0, *(_DWORD *)(v3 + 8) <= 0) ) goto LABEL_11; v7 = *(_DWORD *)(v3 + 16); while ( *(_WORD *)v7 != *(_WORD *)v5 ) { ++v6; v7 += 32; if ( v6 >= *(_DWORD *)(v3 + 8) ) goto LABEL_11; } if ( v6 != -1 && (v10 = (void *)(*(_DWORD *)(v3 + 16) + 32 * v6)) != 0 ) { memcpy(v10, v5, 0x20u); } else { LABEL_11: v8 = *(_DWORD *)(v3 + 8); if ( v8 >= *(_DWORD *)(v3 + 12) ) { v9 = 0; goto LABEL_18; } memcpy((void *)(*(_DWORD *)(v3 + 16) + 32 * v8), v5, 0x20u); ++*(_DWORD *)(v3 + 8); } v9 = 1; LABEL_18: v11 = v9 == 0; v4 = v14 + 1; v14 = v4; v13 |= v11; if ( v4 >= *(_BYTE *)(a2 + 5) ) return v13 == 0; v2 = a2; } } return v13 == 0; } //----- (0062C530) -------------------------------------------------------- bool __thiscall sub_62C530(void *this, int a2) { void *v2; // edx@1 int v3; // ebx@1 int v4; // esi@2 __int16 v5; // di@2 int v6; // eax@2 int v7; // ecx@2 int v8; // eax@2 int v9; // eax@3 int v10; // ecx@4 int v11; // edi@7 signed int v12; // eax@8 void *v13; // eax@10 __int16 v15; // [sp+4h] [bp-24h]@2 char v16; // [sp+6h] [bp-22h]@1 int v17; // [sp+Fh] [bp-19h]@2 int v18; // [sp+13h] [bp-15h]@2 int v19; // [sp+24h] [bp-4h]@1 v2 = this; v3 = 0; v19 = 0; v16 = 2; if ( *(_WORD *)(a2 + 8) > 0u ) { while ( 1 ) { v4 = *((_DWORD *)v2 + 3); v5 = *(_WORD *)(a2 + 10 * (unsigned __int16)v3 + 12); v6 = a2 + 10 * (unsigned __int16)v3; v7 = *(_DWORD *)(v6 + 14); v8 = *(_DWORD *)(v6 + 18); v15 = *(_WORD *)(a2 + 10 * (unsigned __int16)v3 + 12); v17 = v7; v18 = v8; if ( v4 ) { v9 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v10 = *((_DWORD *)v2 + 4); while ( *(_WORD *)v10 != v5 ) { ++v9; v10 += 32; if ( v9 >= *((_DWORD *)v2 + 2) ) goto LABEL_7; } if ( v9 != -1 ) { v13 = (void *)(*((_DWORD *)v2 + 4) + 32 * v9); if ( v13 ) break; } } } LABEL_7: v11 = *((_DWORD *)v2 + 2); if ( v11 < v4 ) { memcpy((void *)(*((_DWORD *)v2 + 4) + 32 * v11), &v15, 0x20u); ++*((_DWORD *)v2 + 2); goto LABEL_13; } v12 = 0; LABEL_14: ++v3; v19 |= v12 == 0; if ( (unsigned __int16)v3 >= *(_WORD *)(a2 + 8) ) return v19 == 0; } memcpy(v13, &v15, 0x20u); LABEL_13: v12 = 1; goto LABEL_14; } return v19 == 0; } //----- (0062C600) -------------------------------------------------------- bool __thiscall sub_62C600(void *this, int a2) { void *v2; // edx@1 int v3; // ecx@1 int v4; // eax@1 int v5; // esi@2 __int16 v6; // di@2 int v7; // eax@3 int v8; // ecx@4 int v9; // edi@7 signed int v10; // eax@8 void *v11; // eax@10 bool v12; // zf@14 __int16 v14; // [sp+4h] [bp-28h]@2 char v15; // [sp+6h] [bp-26h]@1 int v16; // [sp+24h] [bp-8h]@1 int v17; // [sp+28h] [bp-4h]@1 v2 = this; v3 = a2; LOWORD(v4) = 0; v17 = 0; v15 = 20; v16 = 0; if ( *(_WORD *)(a2 + 4) > 0u ) { while ( 1 ) { v5 = *((_DWORD *)v2 + 3); v6 = *(_WORD *)(v3 + 2 * (unsigned __int16)v4 + 6); v14 = *(_WORD *)(v3 + 2 * (unsigned __int16)v4 + 6); if ( v5 ) { v7 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v8 = *((_DWORD *)v2 + 4); while ( *(_WORD *)v8 != v6 ) { ++v7; v8 += 32; if ( v7 >= *((_DWORD *)v2 + 2) ) goto LABEL_7; } if ( v7 != -1 ) { v11 = (void *)(*((_DWORD *)v2 + 4) + 32 * v7); if ( v11 ) break; } } } LABEL_7: v9 = *((_DWORD *)v2 + 2); if ( v9 < v5 ) { memcpy((void *)(*((_DWORD *)v2 + 4) + 32 * v9), &v14, 0x20u); ++*((_DWORD *)v2 + 2); goto LABEL_13; } v10 = 0; LABEL_14: v12 = v10 == 0; v4 = v16 + 1; v16 = v4; v17 |= v12; v3 = a2; if ( (unsigned __int16)v4 >= *(_WORD *)(a2 + 4) ) return v17 == 0; } memcpy(v11, &v14, 0x20u); LABEL_13: v10 = 1; goto LABEL_14; } return v17 == 0; } //----- (0062C6D0) -------------------------------------------------------- bool __thiscall sub_62C6D0(void *this, int a2) { void *v2; // edx@1 int v3; // ecx@1 int v4; // eax@1 const void *v5; // esi@2 int v6; // eax@3 int v7; // ecx@4 int v8; // edi@7 signed int v9; // eax@8 void *v10; // eax@10 bool v11; // zf@14 int v13; // [sp+4h] [bp-8h]@1 int v14; // [sp+8h] [bp-4h]@1 v2 = this; v3 = a2; LOWORD(v4) = 0; v14 = 0; v13 = 0; if ( *(_WORD *)(a2 + 4) > 0u ) { while ( 1 ) { v5 = (const void *)(32 * (unsigned __int16)v4 + v3 + 6); if ( *((_DWORD *)v2 + 3) ) { v6 = 0; if ( *((_DWORD *)v2 + 2) > 0 ) { v7 = *((_DWORD *)v2 + 4); while ( *(_WORD *)v7 != *(_WORD *)v5 ) { ++v6; v7 += 32; if ( v6 >= *((_DWORD *)v2 + 2) ) goto LABEL_7; } if ( v6 != -1 ) { v10 = (void *)(*((_DWORD *)v2 + 4) + 32 * v6); if ( v10 ) break; } } } LABEL_7: v8 = *((_DWORD *)v2 + 2); if ( v8 < *((_DWORD *)v2 + 3) ) { memcpy((void *)(*((_DWORD *)v2 + 4) + 32 * v8), v5, 0x20u); ++*((_DWORD *)v2 + 2); goto LABEL_13; } v9 = 0; LABEL_14: v11 = v9 == 0; v4 = v13 + 1; v13 = v4; v14 |= v11; v3 = a2; if ( (unsigned __int16)v4 >= *(_WORD *)(a2 + 4) ) return v14 == 0; } memcpy(v10, v5, 0x20u); LABEL_13: v9 = 1; goto LABEL_14; } return v14 == 0; } //----- (0062C790) -------------------------------------------------------- signed int __thiscall sub_62C790(int this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@4 int v5; // eax@6 int v6; // eax@8 signed int result; // eax@11 signed int v8; // [sp+8h] [bp-8h]@1 int v9; // [sp+Ch] [bp-4h]@2 v2 = this; v3 = 0; v8 = 0; if ( *(_DWORD *)(this + 8) <= 0 ) { result = 0; } else { v9 = 0; do { if ( v3 >= 0 ) { v4 = v9 + *(_DWORD *)(v2 + 16); if ( v4 ) { if ( *(_BYTE *)(v4 + 2) == 6 ) { v5 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)v4); if ( v5 ) { if ( *(_BYTE *)(v5 + 89) == 1 ) { v6 = *(_BYTE *)(v5 + 90); if ( (unsigned __int8)v6 <= (unsigned __int8)a2 ) { v8 = 1; (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v2 + 48))(v2, *(_WORD *)v4, a2, v6); } } } } } } v9 += 32; ++v3; } while ( v3 < *(_DWORD *)(v2 + 8) ); result = v8; } return result; } //----- (0062C820) -------------------------------------------------------- bool __stdcall sub_62C820(int a1, int a2, int a3, int a4, unsigned int a5) { return a5 >= (unsigned int)(signed __int64)sqrt((double)(abs(a2 - a4) + abs(a1 - a4))); } //----- (0062C880) -------------------------------------------------------- int __thiscall sub_62C880(int this) { int v1; // edi@1 int result; // eax@1 int v3; // esi@1 int v4; // ebx@2 int v5; // edx@4 v1 = *(_DWORD *)(this + 8); result = 0; v3 = 0; if ( v1 > 0 ) { v4 = 0; if ( v1 <= 0 ) goto LABEL_7; do { if ( v3 >= 0 ) { v5 = v4 + *(_DWORD *)(this + 16); if ( v5 ) { if ( (unsigned __int8)(*(_BYTE *)(v5 + 2) - 6) <= 2u ) ++result; } } LABEL_7: ++v3; v4 += 32; } while ( v3 < v1 ); } return result; } //----- (0062C8C0) -------------------------------------------------------- signed int __stdcall sub_62C8C0(signed int a1, __int16 a2) { signed int result; // eax@1 signed int v3; // edx@4 int v4; // eax@4 result = a1; if ( a1 ) { if ( !*(_BYTE *)(a1 + 29) || *(_WORD *)(a1 + 30) != a2 ) { v3 = 0; v4 = a1 + 96; while ( !*(_BYTE *)(v4 - 4) || *(_BYTE *)v4 && *(_BYTE *)v4 != 3 || *(_WORD *)(v4 - 2) != a2 ) { ++v3; v4 += 8; if ( v3 >= 5 ) return 0; } } result = 1; } return result; } //----- (0062C920) -------------------------------------------------------- signed int __stdcall sub_62C920(int a1, __int16 a2) { signed int v2; // ecx@2 int v3; // eax@2 signed int result; // eax@7 if ( a1 ) { v2 = 0; v3 = a1 + 96; while ( !*(_BYTE *)(v3 - 4) || *(_BYTE *)v3 != 3 || *(_WORD *)(v3 - 2) != a2 ) { ++v2; v3 += 8; if ( v2 >= 5 ) goto LABEL_7; } result = 1; } else { LABEL_7: result = 0; } return result; } //----- (0062C960) -------------------------------------------------------- signed __int16 __stdcall sub_62C960(int a1) { signed int v1; // eax@2 int v2; // ecx@2 signed __int16 result; // ax@6 if ( a1 ) { v1 = 0; v2 = a1 + 96; while ( !*(_BYTE *)(v2 - 4) || *(_BYTE *)v2 ) { ++v1; v2 += 8; if ( v1 >= 5 ) goto LABEL_6; } result = *(_WORD *)(a1 + 8 * v1 + 94); } else { LABEL_6: result = -1; } return result; } //----- (0062C9A0) -------------------------------------------------------- signed __int16 __thiscall sub_62C9A0(int this, int a2) { return sub_632DD0(*(_DWORD *)(this + 4), a2); } //----- (0062C9B0) -------------------------------------------------------- signed __int16 __thiscall sub_62C9B0(int this, char a2) { int v2; // eax@1 signed int v3; // ecx@2 int v4; // edx@2 signed __int16 result; // ax@6 v2 = sub_632D90(*(_DWORD *)(this + 4), a2); if ( v2 ) { v3 = 0; v4 = v2 + 96; while ( !*(_BYTE *)(v4 - 4) || *(_BYTE *)v4 ) { ++v3; v4 += 8; if ( v3 >= 5 ) goto LABEL_6; } result = *(_WORD *)(v2 + 8 * v3 + 94); } else { LABEL_6: result = -1; } return result; } //----- (0062C9F0) -------------------------------------------------------- signed int __thiscall sub_62C9F0(void *this, int a2) { int v2; // ebx@1 int v3; // esi@1 unsigned __int8 v4; // al@2 int v5; // eax@10 char v6; // cl@11 struct tm *v7; // esi@22 int v8; // eax@22 char v10; // [sp+8h] [bp-78h]@22 int v11; // [sp+14h] [bp-6Ch]@30 int v12; // [sp+18h] [bp-68h]@27 int v13; // [sp+1Ch] [bp-64h]@24 char v14; // [sp+2Ch] [bp-54h]@22 int v15; // [sp+38h] [bp-48h]@29 int v16; // [sp+3Ch] [bp-44h]@26 int v17; // [sp+40h] [bp-40h]@23 char v18; // [sp+50h] [bp-30h]@22 int v19; // [sp+5Ch] [bp-24h]@29 int v20; // [sp+60h] [bp-20h]@26 int v21; // [sp+64h] [bp-1Ch]@23 int v22; // [sp+74h] [bp-Ch]@7 __time64_t Time; // [sp+78h] [bp-8h]@7 v2 = a2; v3 = (int)this; if ( *(_BYTE *)(a2 + 26) && ((v4 = (*(int (**)(void))(*(_DWORD *)this + 100))(), (unsigned __int8)(v4 + 5) < *(_BYTE *)(v2 + 27)) || v4 > *(_BYTE *)(v2 + 28)) || *(_BYTE *)(v2 + 32) && (unsigned __int16)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 104))(v3, *(_WORD *)(v2 + 34)) < *(_WORD *)(v2 + 36) || *(_BYTE *)(v2 + 38) && (((*(void (__thiscall **)(int, int *, int *, char *))(*(_DWORD *)v3 + 96))(v3, &a2, &v22, (char *)&Time + 4), *(_WORD *)(v2 + 40) != (_WORD)a2) || !(*(int (__thiscall **)(int, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 40))( v3, v22, HIDWORD(Time), *(_DWORD *)(v2 + 44), *(_DWORD *)(v2 + 48), *(_DWORD *)(v2 + 52))) ) return 0; if ( *(_BYTE *)(v2 + 56) ) { v5 = sub_62BF80(v3, *(_WORD *)(v2 + 58)); if ( v5 ) { v6 = *(_BYTE *)(v5 + 2); if ( v6 == 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 128))(v3, v5) != 1 ) goto LABEL_15; } else { if ( v6 == 4 ) goto LABEL_15; } } return 0; } LABEL_15: if ( *(_BYTE *)(v2 + 60) && *(_BYTE *)(v2 + 61) != (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 108))(v3) || *(_BYTE *)(v2 + 62) && *(_BYTE *)(v2 + 63) != (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 112))(v3) || *(_BYTE *)(v2 + 64) && *(_BYTE *)(v2 + 65) != (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 116))(v3) ) return 0; if ( *(_BYTE *)(v2 + 66) ) { _time64(&Time); memcpy(&v18, _localtime64(&Time), 0x24u); a2 = v2 + 72; memcpy(&v14, _localtime64((const __time64_t *)(v2 + 72)), 0x24u); v22 = v2 + 80; v7 = _localtime64((const __time64_t *)(v2 + 80)); v8 = *(_BYTE *)(v2 + 67); memcpy(&v10, v7, 0x24u); switch ( v8 ) { case 0: if ( v21 < v17 || v21 > v13 ) return 0; return 1; case 1: if ( v20 >= v16 && v20 <= v12 ) return 1; return 0; case 2: if ( v19 >= v15 && v19 <= v11 ) return 1; return 0; case 3: if ( Time >= *(_QWORD *)a2 && (SHIDWORD(Time) < *(_DWORD *)(v22 + 4) || SHIDWORD(Time) <= *(_DWORD *)(v22 + 4) && (unsigned int)Time <= *(_DWORD *)v22) ) return 1; return 0; default: return 1; } } return 1; } //----- (0062CC10) -------------------------------------------------------- bool __thiscall sub_62CC10(void *this, int a2) { void *v2; // esi@1 unsigned __int8 v4; // al@4 v2 = this; return sub_62C9F0(this, a2) && (!*(_BYTE *)(a2 + 26) || (v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 100))(v2), v4 >= *(_BYTE *)(a2 + 27)) && v4 <= *(_BYTE *)(a2 + 28)); } //----- (0062CC50) -------------------------------------------------------- bool __thiscall sub_62CC50(int this, char a2) { int v2; // edi@1 int v3; // eax@1 int v4; // esi@1 unsigned __int8 v6; // al@5 v2 = this; v3 = sub_632D90(*(_DWORD *)(this + 4), a2); v4 = v3; return v3 && sub_62C9F0((void *)v2, v3) && (!*(_BYTE *)(v4 + 26) || (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 100))(v2), v6 >= *(_BYTE *)(v4 + 27)) && v6 <= *(_BYTE *)(v4 + 28)); } //----- (0062CCB0) -------------------------------------------------------- signed int __thiscall sub_62CCB0(int this, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // ebx@1 signed int v6; // edx@5 int v7; // ecx@5 int v8; // esi@10 int v9; // [sp+8h] [bp-Ch]@16 int v10; // [sp+Ch] [bp-8h]@16 int v11; // [sp+10h] [bp-4h]@10 v2 = this; v3 = sub_632D90(*(_DWORD *)(this + 4), *(_WORD *)a2); v4 = v3; if ( v3 && (!*(_BYTE *)(v3 + 89) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 100))(v2) >= *(_BYTE *)(v3 + 90)) ) { v6 = 0; v7 = v4 + 96; while ( !*(_BYTE *)(v7 - 4) || (unsigned __int8)(*(_BYTE *)v7 - 1) > 2u || *(_BYTE *)(v6 + a2 + 24) >= *(_BYTE *)(v7 + 1) ) { ++v6; v7 += 8; if ( v6 >= 5 ) { v11 = 0; v8 = v4 + 134; do { if ( *(_BYTE *)(v8 - 2) && ((unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 124))(v2, *(_WORD *)v8) == 1 || (unsigned __int16)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 104))(v2, *(_WORD *)v8) < *(_WORD *)(v8 + 2)) ) return 0; v8 += 6; ++v11; } while ( v11 < 5 ); if ( *(_BYTE *)(v4 + 162) && (((*(void (__thiscall **)(int, int *, int *, int *))(*(_DWORD *)v2 + 96))(v2, &v11, &v9, &v10), *(_WORD *)(v4 + 164) != (_WORD)v11) || !(*(int (__thiscall **)(int, int, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 40))( v2, v9, v10, *(_DWORD *)(v4 + 168), *(_DWORD *)(v4 + 172), *(_DWORD *)(v4 + 176))) || *(_BYTE *)(v4 + 180) && !(*(_BYTE *)(a2 + 29) & 2) || *(_BYTE *)(v4 + 184) && *(_BYTE *)(v4 + 185) != (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 108))(v2) || *(_BYTE *)(v4 + 186) && *(_BYTE *)(v4 + 187) != (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 112))(v2) || *(_BYTE *)(v4 + 188) && *(_WORD *)(v4 + 190) <= *(_WORD *)(a2 + 30) ) return 0; return 1; } } } return 0; } //----- (0062CE40) -------------------------------------------------------- signed int __thiscall sub_62CE40(int this, __int16 a2) { int v2; // esi@2 int v3; // eax@2 int v4; // edx@3 signed int result; // eax@6 int v6; // eax@8 if ( !*(_DWORD *)(this + 12) || (v2 = *(_DWORD *)(this + 8), v3 = 0, v2 <= 0) ) goto LABEL_13; v4 = *(_DWORD *)(this + 16); while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 32; if ( v3 >= v2 ) return 0; } if ( v3 != -1 && (v6 = *(_DWORD *)(this + 16) + 32 * v3) != 0 ) result = sub_62CCB0(this, v6); else LABEL_13: result = 0; return result; } //----- (0062CEA0) -------------------------------------------------------- char __thiscall sub_62CEA0(int this, char *a2) { char *v2; // esi@1 int v3; // edi@1 char result; // al@2 int v5; // eax@3 int v6; // eax@6 char v7; // [sp+13h] [bp+Bh]@5 v2 = a2; v3 = this; if ( a2 && (v5 = sub_632D90(*(_DWORD *)(this + 4), *(_WORD *)a2)) != 0 && *(_BYTE *)(v5 + 17) == 10 ) { v7 = 0; switch ( *(_BYTE *)(v5 + 19) ) { case 1: v6 = *(_DWORD *)(v3 + 176); goto LABEL_7; case 2: v6 = *(_DWORD *)(v3 + 172); goto LABEL_7; case 3: v6 = *(_DWORD *)(v3 + 168); goto LABEL_7; case 4: v6 = *(_DWORD *)(v3 + 164); LABEL_7: if ( *(_QWORD *)(v2 + 11) >= (signed __int64)v6 ) goto LABEL_13; result = 1; break; default: v7 = 0; LABEL_13: result = v7; break; } } else { result = 0; } return result; } //----- (0062CF40) -------------------------------------------------------- int __thiscall sub_62CF40(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = off_7039B4; *(_DWORD *)(this + 4) = a2; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 20) = _time32(0); *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 16) = 0; *(_DWORD *)(v2 + 24) = 0; *(_DWORD *)(v2 + 28) = 0; *(_DWORD *)(v2 + 32) = 0; *(_DWORD *)(v2 + 40) = 21; *(_DWORD *)(v2 + 44) = 21; *(_DWORD *)(v2 + 48) = 21; *(_DWORD *)(v2 + 52) = 21; *(_DWORD *)(v2 + 72) = 21; *(_DWORD *)(v2 + 76) = 21; *(_DWORD *)(v2 + 80) = 21; *(_DWORD *)(v2 + 84) = 21; *(_DWORD *)(v2 + 88) = 21; *(_DWORD *)(v2 + 92) = 21; *(_DWORD *)(v2 + 96) = 21; *(_DWORD *)(v2 + 100) = 21; *(_DWORD *)(v2 + 104) = 21; *(_DWORD *)(v2 + 108) = 21; *(_DWORD *)(v2 + 112) = 21; *(_DWORD *)(v2 + 68) = 0; *(_DWORD *)(v2 + 60) = 1; *(_DWORD *)(v2 + 116) = 2; *(_DWORD *)(v2 + 56) = 2; *(_DWORD *)(v2 + 64) = 2; *(_DWORD *)(v2 + 36) = 22; *(_DWORD *)(v2 + 124) = 11; *(_DWORD *)(v2 + 136) = 11; *(_DWORD *)(v2 + 160) = 11; *(_DWORD *)(v2 + 132) = 0; *(_DWORD *)(v2 + 128) = 1; *(_DWORD *)(v2 + 144) = 2; *(_DWORD *)(v2 + 148) = 2; *(_DWORD *)(v2 + 152) = 2; *(_DWORD *)(v2 + 140) = 3; *(_DWORD *)(v2 + 156) = 4; *(_DWORD *)(v2 + 120) = 5; return v2; } // 7039B4: using guessed type int (__stdcall *off_7039B4[2])(int); //----- (0062D020) -------------------------------------------------------- int __thiscall sub_62D020(int this, __int16 a2) { int v2; // esi@2 int v3; // eax@2 int v4; // edx@3 int result; // eax@6 if ( !*(_DWORD *)(this + 12) || (v2 = *(_DWORD *)(this + 8), v3 = 0, v2 <= 0) ) goto LABEL_12; v4 = *(_DWORD *)(this + 16); while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 32; if ( v3 >= v2 ) return sub_62C380(this, 0); } if ( v3 != -1 ) result = sub_62C380(this, *(_DWORD *)(this + 16) + 32 * v3); else LABEL_12: result = sub_62C380(this, 0); return result; } //----- (0062D090) -------------------------------------------------------- int __thiscall sub_62D090(int this, int a2) { int v2; // esi@1 int v3; // edx@2 int v4; // eax@2 int v5; // ecx@3 unsigned __int8 v6; // al@8 int result; // eax@10 int v8; // eax@12 bool v9; // zf@12 int v10; // eax@12 int v11; // ecx@12 int v12; // eax@14 int v13; // eax@16 int v14; // eax@17 int v15; // eax@18 int v16; // eax@21 v2 = this; if ( !*(_DWORD *)(this + 12) || (v3 = *(_DWORD *)(this + 8), v4 = 0, v3 <= 0) ) goto LABEL_6; v5 = *(_DWORD *)(this + 16); while ( *(_WORD *)v5 != *(_WORD *)(a2 + 4) ) { ++v4; v5 += 32; if ( v4 >= v3 ) goto LABEL_6; } if ( v4 == -1 || (v8 = 32 * v4, v9 = *(_DWORD *)(v2 + 16) + v8 == 0, v10 = *(_DWORD *)(v2 + 16) + v8, v11 = v10, v9) ) { LABEL_6: if ( sub_62C9F0((void *)v2, a2) && (!*(_BYTE *)(a2 + 26) || (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 100))(v2), v6 >= *(_BYTE *)(a2 + 27)) && v6 <= *(_BYTE *)(a2 + 28)) ) LABEL_22: result = 5; else LABEL_10: result = sub_62C9F0((void *)v2, a2) != 0 ? 3 : 0; } else { result = *(_BYTE *)(v10 + 2); switch ( result ) { default: return result; case 3: LOBYTE(v12) = sub_62CC10((void *)v2, a2); if ( !v12 ) goto LABEL_10; result = 5; break; case 4: LOBYTE(v13) = sub_62CC10((void *)v2, a2); result = v13 != 0 ? 4 : 0; break; case 5: LOBYTE(v14) = sub_62CC10((void *)v2, a2); result = v14 != 0 ? 5 : 0; break; case 20: LOBYTE(v15) = sub_62CC10((void *)v2, a2); result = v15 != 0 ? 0x14 : 0; break; case 6: case 8: result = sub_62CCB0(v2, v11) != 0 ? 8 : 6; break; case 2: if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 128))(v2, v11) == 1 ) { LOBYTE(v16) = sub_62CC10((void *)v2, a2); if ( v16 == 1 ) goto LABEL_22; } result = 2; break; } } return result; } //----- (0062D210) -------------------------------------------------------- int __thiscall sub_62D210(int this, char a2) { int v2; // esi@1 int result; // eax@1 v2 = this; result = sub_632D90(*(_DWORD *)(this + 4), a2); if ( result ) result = sub_62D090(v2, result); return result; } //----- (0062D240) -------------------------------------------------------- bool __thiscall sub_62D240(int this, char a2) { int v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; v3 = sub_632D90(*(_DWORD *)(this + 4), a2); return v3 && ((v4 = sub_62D090(v2, v3), v4 == 6) || v4 == 7 || v4 == 8); } //----- (0062D280) -------------------------------------------------------- char __thiscall sub_62D280(int this, int a2) { int v2; // esi@1 int v3; // edi@3 char result; // al@4 int v5; // eax@5 v2 = this; if ( a2 < *(_DWORD *)(this + 8) && a2 >= 0 && (v3 = *(_DWORD *)(this + 16) + 32 * a2) != 0 ) { v5 = sub_632D90(*(_DWORD *)(this + 4), *(_WORD *)v3); if ( v5 ) { result = sub_62D090(v2, v5); *(_BYTE *)(v3 + 2) = result; } else { *(_BYTE *)(v3 + 2) = 0; result = 0; } } else { result = 0; } return result; } //----- (0062D2E0) -------------------------------------------------------- int __thiscall sub_62D2E0(void *this, int a2, int a3, unsigned int a4, char a5, int a6) { int v6; // ebx@1 __int16 v7; // ST04_2@1 int v8; // edi@1 int v9; // eax@2 int result; // eax@3 signed int v11; // [sp+14h] [bp+8h]@2 v6 = a2; v7 = *(_WORD *)a2; v8 = (int)this; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 4) = a3; if ( sub_62C8C0(a3, v7) ) { v9 = sub_62D090(v8, a3); v11 = v9; switch ( v9 ) { case 0: case 1: case 2: case 3: goto LABEL_3; case 4: case 7: if ( a3 && *(_BYTE *)(a3 + 29) && *(_WORD *)(a3 + 30) == *(_WORD *)v6 ) break; return 0; case 5: case 20: if ( a3 && *(_BYTE *)(a3 + 29) && *(_WORD *)(a3 + 30) == *(_WORD *)v6 ) break; return 0; case 6: if ( sub_62C920(a3, *(_WORD *)v6) || a3 && *(_BYTE *)(a3 + 29) && *(_WORD *)(a3 + 30) == *(_WORD *)v6 ) goto LABEL_22; return 0; case 8: if ( *(_WORD *)v6 == sub_62C960(a3) ) goto LABEL_22; if ( !a3 || !*(_BYTE *)(a3 + 29) || *(_WORD *)(a3 + 30) != *(_WORD *)v6 ) goto LABEL_3; v11 = 6; LABEL_22: v9 = v11; break; default: break; } if ( a5 == 1 && (v9 == 5 || v9 == 20) ) { if ( (unsigned int)*(_BYTE *)(a3 + 27) + 5 < a4 ) v9 = 9; } *(_DWORD *)(v6 + 8) = v9; *(_DWORD *)(v6 + 12) = *(_BYTE *)(a3 + 27); result = v9 != 0; } else { LABEL_3: result = 0; } return result; } //----- (0062D440) -------------------------------------------------------- signed int __thiscall sub_62D440(int this, int a2, __int16 a3) { int v3; // edi@1 int v4; // ebx@1 int v5; // esi@4 int v6; // eax@7 int v7; // ebx@8 int v8; // eax@8 signed int v9; // ecx@12 unsigned __int8 v10; // al@13 int v11; // ebx@13 int v12; // eax@13 void (__thiscall *v13)(_DWORD, _DWORD, _DWORD); // edx@15 int v15; // [sp-8h] [bp-28h]@15 signed int v16; // [sp+8h] [bp-18h]@1 int v17; // [sp+Ch] [bp-14h]@8 int v18; // [sp+10h] [bp-10h]@7 int v19; // [sp+14h] [bp-Ch]@2 int v20; // [sp+18h] [bp-8h]@1 int v21; // [sp+1Ch] [bp-4h]@8 v3 = this; v4 = 0; v16 = 0; v20 = 0; if ( *(_DWORD *)(this + 8) > 0 ) { v19 = 0; while ( 1 ) { if ( v4 >= 0 ) { v5 = v19 + *(_DWORD *)(v3 + 16); if ( v5 ) { if ( *(_BYTE *)(v5 + 2) == 6 ) { if ( a3 == *(_WORD *)v5 ) { v6 = sub_632D90(*(_DWORD *)(v3 + 4), *(_WORD *)v5); v18 = v6; if ( v6 ) break; } } } } LABEL_21: v19 += 32; ++v4; v20 = v4; if ( v4 >= *(_DWORD *)(v3 + 8) ) return v16; } v7 = 0; v8 = v6 + 94; v21 = 0; v17 = v8; while ( 1 ) { if ( *(_BYTE *)(v8 - 2) != 1 || *(_WORD *)v8 != (_WORD)a2 || *(_BYTE *)(v8 + 2) != 1 || (v9 = *(_BYTE *)(v8 + 3), *(_BYTE *)(v7 + v5 + 24) >= v9) || (v10 = *(_BYTE *)(v7 + v5 + 24) + 1, *(_BYTE *)(v21 + v5 + 24) = v10, v16 = 1, (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v3 + 44))( v3, *(_WORD *)v5, a2, v10, v9), v11 = *(_BYTE *)(v5 + 2), LOBYTE(v12) = sub_62D280(v3, v20), v11 != 6) ) goto LABEL_19; if ( v12 == 8 ) break; if ( v12 == 7 ) { v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 84); v15 = v18; goto LABEL_18; } LABEL_19: v7 = v21 + 1; v8 = v17 + 8; v21 = v7; v17 += 8; if ( v7 >= 5 ) { v4 = v20; goto LABEL_21; } } v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 80); v15 = v18; LABEL_18: v13(v3, v5, v15); goto LABEL_19; } return 0; } //----- (0062D580) -------------------------------------------------------- signed int __thiscall sub_62D580(int this, int a2, int a3) { int v3; // esi@1 int v4; // ebx@1 int v5; // edi@4 int v6; // eax@6 int v7; // ecx@7 signed int v8; // ebx@10 int v9; // ebx@11 int v10; // eax@11 void (__thiscall *v11)(_DWORD, _DWORD, _DWORD); // edx@13 bool v12; // zf@17 int v14; // [sp-8h] [bp-28h]@13 signed int v15; // [sp+8h] [bp-18h]@1 signed int v16; // [sp+Ch] [bp-14h]@7 int v17; // [sp+10h] [bp-10h]@7 int v18; // [sp+14h] [bp-Ch]@6 int v19; // [sp+18h] [bp-8h]@2 int v20; // [sp+1Ch] [bp-4h]@1 v3 = this; v4 = 0; v15 = 0; v20 = 0; if ( *(_DWORD *)(this + 8) > 0 ) { v19 = 0; while ( 1 ) { if ( v4 >= 0 ) { v5 = v19 + *(_DWORD *)(v3 + 16); if ( v5 ) { if ( *(_BYTE *)(v5 + 2) == 6 ) { v6 = sub_632D90(*(_DWORD *)(v3 + 4), *(_WORD *)v5); v18 = v6; if ( v6 ) break; } } } LABEL_19: v19 += 32; ++v4; v20 = v4; if ( v4 >= *(_DWORD *)(v3 + 8) ) return v15; } v7 = v6 + 134; v17 = v6 + 134; v16 = 5; while ( 1 ) { if ( *(_BYTE *)(v7 - 2) != 1 || *(_WORD *)v7 != (_WORD)a2 || (v8 = *(_WORD *)(v7 + 2), (*(void (__thiscall **)(int, _DWORD, int, int, _DWORD))(*(_DWORD *)v3 + 52))( v3, *(_WORD *)v5, a2, a3, *(_WORD *)(v7 + 2)), (unsigned __int16)a3 > v8) || (v9 = *(_BYTE *)(v5 + 2), v15 = 1, LOBYTE(v10) = sub_62D280(v3, v20), v9 != 6) ) goto LABEL_17; if ( v10 == 8 ) break; if ( v10 == 7 ) { v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 84); v14 = v18; goto LABEL_16; } LABEL_17: v7 = v17 + 6; v12 = v16-- == 1; v17 += 6; if ( v12 ) { v4 = v20; goto LABEL_19; } } v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 80); v14 = v18; LABEL_16: v11(v3, v5, v14); goto LABEL_17; } return 0; } //----- (0062D690) -------------------------------------------------------- signed int __thiscall sub_62D690(int this, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 int v5; // ebx@4 int v6; // eax@5 int v7; // ecx@6 signed int v8; // edi@9 int v9; // edi@11 int v10; // eax@12 void (__thiscall *v11)(_DWORD, _DWORD, _DWORD); // edx@18 bool v12; // zf@22 int v14; // [sp+8h] [bp-1Ch]@10 signed int v15; // [sp+Ch] [bp-18h]@1 signed int v16; // [sp+10h] [bp-14h]@6 int v17; // [sp+14h] [bp-10h]@6 int v18; // [sp+18h] [bp-Ch]@5 int v19; // [sp+1Ch] [bp-8h]@1 int v20; // [sp+20h] [bp-4h]@2 v3 = this; v4 = 0; v15 = 0; v19 = 0; if ( *(_DWORD *)(this + 8) > 0 ) { v20 = 0; while ( 1 ) { if ( v4 >= 0 ) { v5 = v20 + *(_DWORD *)(v3 + 16); if ( v5 ) { v6 = sub_632D90(*(_DWORD *)(v3 + 4), *(_WORD *)v5); v18 = v6; if ( v6 ) break; } } LABEL_24: v20 += 32; ++v4; v19 = v4; if ( v4 >= *(_DWORD *)(v3 + 8) ) return v15; } v7 = v6 + 134; v17 = v6 + 134; v16 = 5; while ( 1 ) { if ( *(_BYTE *)(v7 - 2) != 1 || *(_WORD *)v7 != (_WORD)a2 || (v8 = *(_WORD *)(v7 + 2), (*(void (__thiscall **)(int, _DWORD, int, int, _DWORD))(*(_DWORD *)v3 + 56))( v3, *(_WORD *)v5, a2, a3, *(_WORD *)(v7 + 2)), (unsigned __int16)a3 >= v8) ) goto LABEL_22; v15 = 1; v14 = *(_BYTE *)(v5 + 2); if ( v19 < *(_DWORD *)(v3 + 8) && (v9 = v20 + *(_DWORD *)(v3 + 16)) != 0 ) { v10 = sub_632D90(*(_DWORD *)(v3 + 4), *(_WORD *)v9); if ( v10 ) LOBYTE(v10) = sub_62D090(v3, v10); *(_BYTE *)(v9 + 2) = v10; v10 = (unsigned __int8)v10; } else { v10 = 0; } if ( v14 != 8 ) goto LABEL_22; if ( v10 == 6 ) break; if ( v10 == 7 ) { v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 84); goto LABEL_21; } LABEL_22: v7 = v17 + 6; v12 = v16-- == 1; v17 += 6; if ( v12 ) { v4 = v19; goto LABEL_24; } } v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 88); LABEL_21: v11(v3, v5, v18); goto LABEL_22; } return 0; } //----- (0062D7D0) -------------------------------------------------------- int __thiscall sub_62D7D0(void *this) { int v1; // edi@1 void (__stdcall *v2)(_DWORD, _DWORD, _DWORD); // edx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // esi@4 int v6; // eax@6 void (__thiscall *v7)(_DWORD, _DWORD, _DWORD); // eax@11 int v8; // ST0C_4@11 int v9; // ebx@11 int v10; // eax@11 void (__thiscall *v11)(_DWORD, _DWORD, _DWORD); // edx@13 int v12; // eax@17 int v14; // [sp-8h] [bp-2Ch]@13 int v15; // [sp+8h] [bp-1Ch]@1 int v16; // [sp+Ch] [bp-18h]@1 int v17; // [sp+10h] [bp-14h]@1 int v18; // [sp+14h] [bp-10h]@6 int v19; // [sp+18h] [bp-Ch]@1 int v20; // [sp+1Ch] [bp-8h]@2 int v21; // [sp+20h] [bp-4h]@1 v1 = (int)this; v2 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 96); v17 = 0; v2(&v19, &v15, &v16); v3 = *(_DWORD *)(v1 + 8); v4 = 0; v21 = 0; if ( v3 > 0 ) { v20 = 0; if ( v3 <= 0 ) goto LABEL_17; while ( 1 ) { if ( v4 < 0 || (v5 = v20 + *(_DWORD *)(v1 + 16)) == 0 || *(_BYTE *)(v5 + 2) != 6 || (v6 = sub_632D90(*(_DWORD *)(v1 + 4), *(_WORD *)v5), (v18 = v6) == 0) || *(_BYTE *)(v6 + 162) != 1 || *(_WORD *)(v6 + 164) != (_WORD)v19 || *(_BYTE *)(v5 + 29) & 1 || !(*(int (__thiscall **)(int, int, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 40))( v1, v15, v16, *(_DWORD *)(v6 + 168), *(_DWORD *)(v6 + 172), *(_DWORD *)(v6 + 176)) || (*(_BYTE *)(v5 + 29) |= 1u, v7 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 60), v8 = *(_WORD *)v5, v17 = 1, v7(v1, v8, v19), v9 = *(_BYTE *)(v5 + 2), LOBYTE(v10) = sub_62D280(v1, v21), v9 != 6) ) goto LABEL_17; if ( v10 == 8 ) break; if ( v10 == 7 ) { v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 84); v14 = v18; goto LABEL_16; } LABEL_17: v12 = *(_DWORD *)(v1 + 8); v20 += 32; v4 = v21 + 1; v21 = v4; if ( v4 >= v12 ) return v17; } v11 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 80); v14 = v18; LABEL_16: v11(v1, v5, v14); goto LABEL_17; } return 0; } //----- (0062D910) -------------------------------------------------------- signed int __thiscall sub_62D910(int this, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // esi@4 int v6; // eax@6 char v7; // al@9 int v8; // ebx@10 int v9; // eax@10 void (__thiscall *v10)(_DWORD, _DWORD, _DWORD); // edx@12 int v12; // [sp-Ch] [bp-20h]@12 signed int v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+8h] [bp-Ch]@6 int v15; // [sp+Ch] [bp-8h]@2 int v16; // [sp+10h] [bp-4h]@1 v2 = this; v3 = *(_DWORD *)(this + 8); v4 = 0; v13 = 0; v16 = 0; if ( v3 > 0 ) { v15 = 0; while ( 1 ) { if ( v4 < 0 || (v5 = v15 + *(_DWORD *)(v2 + 16)) == 0 || *(_BYTE *)(v5 + 2) != 6 || (v6 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)v5), (v14 = v6) == 0) || *(_BYTE *)(v6 + 180) != 1 || *(_WORD *)(v6 + 182) != (_WORD)a2 || (v7 = *(_BYTE *)(v5 + 29), v7 & 2) || (*(_BYTE *)(v5 + 29) = v7 | 2, v13 = 1, (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v2 + 64))(v2, *(_WORD *)v5, a2), v8 = *(_BYTE *)(v5 + 2), LOBYTE(v9) = sub_62D280(v2, v16), v8 != 6) ) goto LABEL_16; if ( v9 == 8 ) break; if ( v9 == 7 ) { v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 84); v12 = v14; goto LABEL_15; } LABEL_16: v15 += 32; v4 = v16 + 1; v16 = v4; if ( v4 >= *(_DWORD *)(v2 + 8) ) return v13; } v10 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 80); v12 = v14; LABEL_15: v10(v2, v5, v12); goto LABEL_16; } return 0; } //----- (0062DA00) -------------------------------------------------------- signed int __thiscall sub_62DA00(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@4 int v6; // eax@6 int v7; // ebx@9 int v8; // eax@9 void (__thiscall *v9)(_DWORD, _DWORD, _DWORD); // edx@11 int v11; // [sp-Ch] [bp-20h]@11 signed int v12; // [sp+4h] [bp-10h]@1 int v13; // [sp+8h] [bp-Ch]@6 int v14; // [sp+Ch] [bp-8h]@2 int v15; // [sp+10h] [bp-4h]@1 v2 = this; v3 = *(_DWORD *)(this + 8); v4 = 0; v12 = 0; v15 = 0; if ( v3 > 0 ) { v14 = 0; while ( 1 ) { if ( v4 < 0 || (v5 = v14 + *(_DWORD *)(v2 + 16)) == 0 || *(_BYTE *)(v5 + 2) != 6 || (v6 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)v5), (v13 = v6) == 0) || *(_BYTE *)(v6 + 184) != 1 || *(_BYTE *)(v6 + 185) != (_BYTE)a2 || (v12 = 1, (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v2 + 68))(v2, *(_WORD *)v5, a2), v7 = *(_BYTE *)(v5 + 2), LOBYTE(v8) = sub_62D280(v2, v15), v7 != 6) ) goto LABEL_15; if ( v8 == 8 ) break; if ( v8 == 7 ) { v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 84); v11 = v13; goto LABEL_14; } LABEL_15: v14 += 32; v4 = v15 + 1; v15 = v4; if ( v4 >= *(_DWORD *)(v2 + 8) ) return v12; } v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 80); v11 = v13; LABEL_14: v9(v2, v5, v11); goto LABEL_15; } return 0; } //----- (0062DAE0) -------------------------------------------------------- signed int __thiscall sub_62DAE0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@4 int v6; // eax@6 int v7; // ebx@9 int v8; // eax@9 void (__thiscall *v9)(_DWORD, _DWORD, _DWORD); // edx@11 int v11; // [sp-Ch] [bp-20h]@11 signed int v12; // [sp+4h] [bp-10h]@1 int v13; // [sp+8h] [bp-Ch]@6 int v14; // [sp+Ch] [bp-8h]@2 int v15; // [sp+10h] [bp-4h]@1 v2 = this; v3 = *(_DWORD *)(this + 8); v4 = 0; v12 = 0; v15 = 0; if ( v3 > 0 ) { v14 = 0; while ( 1 ) { if ( v4 < 0 || (v5 = v14 + *(_DWORD *)(v2 + 16)) == 0 || *(_BYTE *)(v5 + 2) != 6 || (v6 = sub_632D90(*(_DWORD *)(v2 + 4), *(_WORD *)v5), (v13 = v6) == 0) || *(_BYTE *)(v6 + 186) != 1 || *(_BYTE *)(v6 + 187) != (_BYTE)a2 || (v12 = 1, (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v2 + 72))(v2, *(_WORD *)v5, a2), v7 = *(_BYTE *)(v5 + 2), LOBYTE(v8) = sub_62D280(v2, v15), v7 != 6) ) goto LABEL_15; if ( v8 == 8 ) break; if ( v8 == 7 ) { v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 84); v11 = v13; goto LABEL_14; } LABEL_15: v14 += 32; v4 = v15 + 1; v15 = v4; if ( v4 >= *(_DWORD *)(v2 + 8) ) return v12; } v9 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 80); v11 = v13; LABEL_14: v9(v2, v5, v11); goto LABEL_15; } return 0; } //----- (0062DBC0) -------------------------------------------------------- signed int __thiscall sub_62DBC0(void *this) { int v1; // esi@1 __time32_t v2; // eax@1 int v4; // edx@3 int v5; // eax@3 int v6; // edi@6 int v7; // eax@8 int v8; // ebx@8 int v9; // eax@10 int v10; // eax@11 int v11; // ST18_4@11 int v12; // eax@11 void (__thiscall *v13)(_DWORD, _DWORD, _DWORD); // eax@13 int v14; // [sp+Ch] [bp-10h]@3 signed int v15; // [sp+10h] [bp-Ch]@1 int v16; // [sp+14h] [bp-8h]@4 int v17; // [sp+18h] [bp-4h]@3 v1 = (int)this; v15 = 0; v2 = _time32(0); if ( v2 == *(_DWORD *)(v1 + 20) ) return 0; v4 = (unsigned __int16)(*(_WORD *)(v1 + 20) - v2); *(_DWORD *)(v1 + 20) = v2; v5 = 0; v14 = v4; v17 = 0; if ( *(_DWORD *)(v1 + 8) > 0 ) { v16 = 0; if ( *(_DWORD *)(v1 + 8) <= 0 ) goto LABEL_17; while ( 1 ) { if ( v5 < 0 || (v6 = v16 + *(_DWORD *)(v1 + 16)) == 0 || *(_BYTE *)(v6 + 2) != 6 || (v7 = sub_632D90(*(_DWORD *)(v1 + 4), *(_WORD *)v6), (v8 = v7) == 0) || *(_BYTE *)(v7 + 188) != 1 || (v9 = *(_WORD *)(v6 + 30), *(_WORD *)(v8 + 190) < (unsigned __int16)v9) || (v10 = v14 + v9, v15 = 1, *(_WORD *)(v6 + 30) = v10, (*(void (__thiscall **)(int, _DWORD, int, _DWORD))(*(_DWORD *)v1 + 76))( v1, *(_WORD *)v6, v10, *(_WORD *)(v8 + 190)), v11 = *(_BYTE *)(v6 + 2), LOBYTE(v12) = sub_62D280(v1, v17), v11 != 6) ) goto LABEL_17; if ( v12 == 8 ) break; if ( v12 == 7 ) { v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 84); goto LABEL_16; } LABEL_17: v16 += 32; v5 = v17 + 1; v17 = v5; if ( v5 >= *(_DWORD *)(v1 + 8) ) return v15; } v13 = *(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 80); LABEL_16: v13(v1, v6, v8); goto LABEL_17; } return v15; } //----- (0062DCD0) -------------------------------------------------------- int __thiscall sub_62DCD0(void *this, __int16 *a2) { __int16 *v2; // esi@1 __int16 v3; // ax@1 unsigned int v4; // edx@1 void *v5; // ebx@1 int v6; // edi@1 int v7; // ecx@2 int v8; // eax@2 unsigned __int16 v9; // ax@3 int v10; // eax@6 int v11; // esi@6 unsigned int v12; // eax@10 unsigned int v13; // ecx@10 bool v14; // zf@11 int v15; // edx@12 int v16; // eax@15 unsigned __int8 v17; // al@18 unsigned __int8 v18; // cl@21 int v19; // edx@38 int result; // eax@38 __int16 v21; // [sp+Ch] [bp-1Ch]@1 int v22; // [sp+14h] [bp-14h]@10 int v23; // [sp+1Ch] [bp-Ch]@1 unsigned int v24; // [sp+20h] [bp-8h]@1 int v25; // [sp+24h] [bp-4h]@1 v2 = a2; v3 = *a2; v4 = 0; v5 = this; v23 = 0; v6 = 0; v25 = -1; v21 = v3; v24 = 0; while ( 1 ) { v7 = *((_DWORD *)v5 + 1); v8 = *(_DWORD *)(v7 + 16); v9 = v8 ? *(_WORD *)(v8 + 2) : 0; if ( (signed int)v4 >= v9 ) break; v10 = sub_6328A0(v7, v4); v11 = v10; if ( v10 && sub_62D2E0(v5, (int)&v21, v10, 0, 0, 0) ) { if ( !v6 ) v6 = v11; v12 = *((_DWORD *)v5 + v22 + 9); v13 = *((_DWORD *)v5 + v23 + 9); if ( v12 >= v13 ) { if ( v12 > v13 ) goto LABEL_37; if ( !*(_BYTE *)(v11 + 26) ) { LABEL_36: v25 = -1; goto LABEL_37; } v16 = *(_BYTE *)(v11 + 27); if ( v16 <= v25 ) { if ( v16 < v25 ) goto LABEL_37; v17 = *(_BYTE *)(v11 + 17); if ( v17 == 3 ) { if ( *(_BYTE *)(v6 + 17) == 3 ) goto LABEL_37; ++v24; v4 = v24; v6 = v11; v2 = a2; } else { v18 = *(_BYTE *)(v6 + 17); if ( v18 == 3 ) goto LABEL_37; if ( *(_BYTE *)(v11 + 56) ) { if ( *(_BYTE *)(v6 + 56) ) goto LABEL_37; ++v24; v4 = v24; v6 = v11; v2 = a2; } else { if ( *(_BYTE *)(v6 + 56) ) goto LABEL_37; if ( *(_BYTE *)(v11 + 32) ) { if ( *(_BYTE *)(v6 + 32) ) goto LABEL_37; ++v24; v4 = v24; v6 = v11; v2 = a2; } else { if ( *(_BYTE *)(v6 + 32) ) goto LABEL_37; if ( *(_BYTE *)(v11 + 18) ) { if ( *(_BYTE *)(v6 + 18) ) goto LABEL_37; ++v24; v4 = v24; v6 = v11; v2 = a2; } else { if ( *(_BYTE *)(v6 + 18) || *((_DWORD *)v5 + v17 + 30) >= *((_DWORD *)v5 + v18 + 30) ) goto LABEL_37; ++v24; v4 = v24; v6 = v11; v2 = a2; } } } } } else { ++v24; v4 = v24; v6 = v11; v2 = a2; v25 = v16; } } else { v14 = *(_BYTE *)(v11 + 26) == 0; v23 = v22; v6 = v11; if ( v14 ) goto LABEL_36; v15 = *(_BYTE *)(v11 + 27); ++v24; v2 = a2; v25 = v15; v4 = v24; } } else { LABEL_37: ++v24; v4 = v24; v2 = a2; } } v19 = v23; result = v25; *((_DWORD *)v2 + 1) = v6; *((_DWORD *)v2 + 2) = v19; *((_DWORD *)v2 + 3) = result; return result; } //----- (0062DE90) -------------------------------------------------------- int __thiscall sub_62DE90(void *this, int a2, int a3) { int v3; // edx@1 int result; // eax@5 v3 = 0; if ( a3 <= 0 ) { result = a2; } else { do { *(_BYTE *)(v3 + a2) ^= byte_86D8E0[(*(_WORD *)this)++]; if ( *(_WORD *)this >= 0x1F3u ) *(_WORD *)this = 0; ++v3; } while ( v3 < a3 ); result = a2; } return result; } //----- (0062DEE0) -------------------------------------------------------- int __stdcall sub_62DEE0(int a1, int a2) { return a1; } //----- (0062DEF0) -------------------------------------------------------- int __thiscall sub_62DEF0(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; } //----- (0062DF10) -------------------------------------------------------- char __thiscall sub_62DF10(void *this, char *a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { char *v10; // eax@1 char v11; // cl@2 char *v12; // eax@3 char v13; // cl@4 int v14; // ebx@5 int i; // esi@5 char *v16; // edi@7 signed int v17; // esi@8 const char *v18; // eax@8 bool v19; // cf@11 bool v20; // zf@11 int v22; // eax@17 void *v23; // [sp+0h] [bp-8Ch]@1 char v24[2]; // [sp+4h] [bp-88h]@1 char v25; // [sp+7h] [bp-85h]@1 char v26[128]; // [sp+8h] [bp-84h]@2 unsigned int v27; // [sp+88h] [bp-4h]@1 int v28; // [sp+8Ch] [bp+0h]@1 v27 = (unsigned int)&v28 ^ __security_cookie; v23 = this; strcpy(v24, "/\\"); v10 = a2; v25 = 0; do { v11 = *v10; v10[v26 - a2] = *v10; ++v10; } while ( v11 ); v12 = v26; do v13 = *v12++; while ( v13 ); v14 = v12 - &v26[1]; for ( i = 0; i < v14; ++i ) v26[i] = tolower(v26[i]); v16 = strtok(v26, v24); if ( v16 ) { while ( 1 ) { v17 = 0; v18 = (char *)v23 + 37; do { if ( !strcmp(v18, v16) ) break; ++v17; v18 += 65; } while ( v17 < 49 ); v19 = (unsigned int)v17 < 0x31; v20 = v17 == 49; if ( v17 != 49 ) break; v16 = strtok(0, v24); if ( !v16 ) return 1; } } else { v17 = (signed int)v23; v19 = (unsigned int)v23 < 0x31; v20 = v23 == (void *)49; if ( v23 == (void *)49 ) return 1; } if ( v19 | v20 && *(_DWORD *)v23 <= 49 ) { v22 = (int)((char *)v23 + 64 * v17 + v17); *(_DWORD *)(v22 + 5) = a3; *(_DWORD *)(v22 + 9) = a4; *(_DWORD *)(v22 + 13) = a5; *(_DWORD *)(v22 + 17) = a6; *(_DWORD *)(v22 + 21) = a7; *(_DWORD *)(v22 + 25) = a8; *(_DWORD *)(v22 + 29) = a9; *(_DWORD *)(v22 + 33) = a10; *(_BYTE *)(v22 + 4) = 1; ++*(_DWORD *)v23; return 1; } return 0; } // 86FEB8: using guessed type int __security_cookie; // 62DF10: using guessed type char var_84[128]; //----- (0062E0C0) -------------------------------------------------------- signed int __thiscall sub_62E0C0(void *this, int a2) { unsigned __int8 v2; // bl@1 int v3; // eax@2 v2 = 0; while ( 1 ) { v3 = a2 + 32 * v2; if ( *(_DWORD *)((char *)this + 64 * v2 + v2 + 5) != *(_DWORD *)v3 ) break; if ( *(_DWORD *)((char *)this + 64 * v2 + v2 + 9) != *(_DWORD *)(v3 + 4) || *(_DWORD *)((char *)this + 64 * v2 + v2 + 13) != *(_DWORD *)(v3 + 8) || *(_DWORD *)((char *)this + 64 * v2 + v2 + 17) != *(_DWORD *)(v3 + 12) || *(_DWORD *)((char *)this + 64 * v2 + v2 + 21) != *(_DWORD *)(v3 + 16) || *(_DWORD *)((char *)this + 64 * v2 + v2 + 25) != *(_DWORD *)(v3 + 20) || *(_DWORD *)((char *)this + 64 * v2 + v2 + 29) != *(_DWORD *)(v3 + 24) || *(_DWORD *)((char *)this + 64 * v2 + v2 + 33) != *(_DWORD *)(v3 + 28) ) break; ++v2; if ( v2 >= 0x31u ) return -1; } return v2; } //----- (0062E140) -------------------------------------------------------- char *__thiscall sub_62E140(void *this, unsigned int a2) { char *result; // eax@2 if ( a2 > 0x30 ) result = 0; else result = (char *)this + 64 * a2 + a2 + 5; return result; } //----- (0062E160) -------------------------------------------------------- bool __thiscall sub_62E160(void *this) { return *(_DWORD *)this == 49; } //----- (0062E170) -------------------------------------------------------- char *__thiscall sub_62E170(void *this) { signed int v1; // eax@1 char *v2; // edx@1 v1 = 0; v2 = (char *)this + 4; while ( *v2 ) { ++v1; v2 += 65; if ( v1 >= 49 ) return 0; } return (char *)this + 64 * v1 + v1 + 37; } //----- (0062E1A0) -------------------------------------------------------- char *__thiscall sub_62E1A0(void *this, unsigned int a2) { char *result; // eax@2 if ( a2 > 0x30 ) result = 0; else result = (char *)this + 64 * a2 + a2 + 37; return result; } //----- (0062E1C0) -------------------------------------------------------- int __thiscall sub_62E1C0(int this) { int v1; // ebx@1 int v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@1 int v5; // edi@3 int v6; // eax@4 int v7; // edx@4 char v8; // cl@5 int v9; // esi@6 int i; // [sp+Ch] [bp-8h]@6 signed int v12; // [sp+10h] [bp-4h]@3 v1 = this; v2 = this + 4; _eh_vector_constructor_iterator_((void *)(this + 4), 0x41u, 49, (int)sub_62DEF0, nullsub_2); *(_DWORD *)v1 = 0; v3 = v2; v4 = 49; do { *(_BYTE *)v3 = 0; v3 += 65; --v4; } while ( v4 ); *(_DWORD *)(v1 + 37) = dword_703DC8; *(_DWORD *)(v1 + 41) = dword_703DCC; *(_DWORD *)(v1 + 45) = off_703DD0; *(_DWORD *)(v1 + 102) = dword_703DB8; *(_DWORD *)(v1 + 106) = dword_703DBC; *(_DWORD *)(v1 + 110) = dword_703DC0; *(_DWORD *)(v1 + 114) = off_703DC4; memcpy((void *)(v1 + 167), "CharacterTitleData.shn", 0x17u); *(_DWORD *)(v1 + 232) = dword_703D8C; *(_DWORD *)(v1 + 236) = dword_703D90; *(_DWORD *)(v1 + 240) = dword_703D94; *(_DWORD *)(v1 + 244) = dword_703D98; *(_WORD *)(v1 + 248) = word_703D9C; *(_DWORD *)(v1 + 297) = dword_703D7C; *(_DWORD *)(v1 + 301) = dword_703D80; *(_DWORD *)(v1 + 305) = dword_703D84; *(_WORD *)(v1 + 309) = word_703D88; *(_DWORD *)(v1 + 362) = dword_703D70; *(_DWORD *)(v1 + 366) = dword_703D74; *(_WORD *)(v1 + 370) = word_703D78; *(_BYTE *)(v1 + 372) = byte_703D7A; *(_DWORD *)(v1 + 427) = dword_703D5C; *(_DWORD *)(v1 + 431) = dword_703D60; *(_DWORD *)(v1 + 435) = dword_703D64; *(_DWORD *)(v1 + 439) = dword_703D68; *(_DWORD *)(v1 + 443) = off_703D6C; *(_DWORD *)(v1 + 492) = dword_703D48; *(_DWORD *)(v1 + 496) = dword_703D4C; *(_DWORD *)(v1 + 500) = dword_703D50; *(_DWORD *)(v1 + 504) = dword_703D54; *(_WORD *)(v1 + 508) = word_703D58; *(_DWORD *)(v1 + 557) = dword_703D38; *(_DWORD *)(v1 + 561) = dword_703D3C; *(_DWORD *)(v1 + 565) = dword_703D40; *(_BYTE *)(v1 + 569) = byte_703D44; *(_DWORD *)(v1 + 622) = dword_703D2C; *(_DWORD *)(v1 + 626) = dword_703D30; *(_DWORD *)(v1 + 630) = off_703D34; *(_DWORD *)(v1 + 687) = dword_703D1C; *(_DWORD *)(v1 + 691) = dword_703D20; *(_DWORD *)(v1 + 695) = dword_703D24; *(_WORD *)(v1 + 699) = word_703D28; memcpy((void *)(v1 + 752), "MiniHouseFurniture.shn", 0x17u); *(_DWORD *)(v1 + 817) = dword_703CF0; *(_DWORD *)(v1 + 821) = dword_703CF4; *(_DWORD *)(v1 + 825) = dword_703CF8; *(_DWORD *)(v1 + 829) = dword_703CFC; *(_DWORD *)(v1 + 833) = off_703D00; *(_DWORD *)(v1 + 882) = dword_703CE4; *(_DWORD *)(v1 + 886) = dword_703CE8; *(_DWORD *)(v1 + 890) = off_703CEC; *(_DWORD *)(v1 + 947) = dword_703CD0; *(_DWORD *)(v1 + 951) = dword_703CD4; *(_DWORD *)(v1 + 955) = dword_703CD8; *(_DWORD *)(v1 + 959) = dword_703CDC; *(_BYTE *)(v1 + 963) = byte_703CE0; *(_DWORD *)(v1 + 1012) = dword_703CC4; *(_DWORD *)(v1 + 1016) = dword_703CC8; *(_WORD *)(v1 + 1020) = word_703CCC; *(_BYTE *)(v1 + 1022) = byte_703CCE; *(_DWORD *)(v1 + 1077) = dword_703CB4; *(_DWORD *)(v1 + 1081) = dword_703CB8; *(_DWORD *)(v1 + 1085) = dword_703CBC; *(_WORD *)(v1 + 1089) = word_703CC0; *(_BYTE *)(v1 + 1091) = byte_703CC2; *(_DWORD *)(v1 + 1142) = dword_703CA4; *(_DWORD *)(v1 + 1146) = dword_703CA8; *(_DWORD *)(v1 + 1150) = dword_703CAC; *(_DWORD *)(v1 + 1154) = off_703CB0; *(_DWORD *)(v1 + 1207) = dword_703C90; *(_DWORD *)(v1 + 1211) = dword_703C94; *(_DWORD *)(v1 + 1215) = dword_703C98; *(_DWORD *)(v1 + 1219) = dword_703C9C; *(_BYTE *)(v1 + 1223) = byte_703CA0; *(_DWORD *)(v1 + 1272) = dword_703C7C; *(_DWORD *)(v1 + 1276) = dword_703C80; *(_DWORD *)(v1 + 1280) = dword_703C84; *(_DWORD *)(v1 + 1284) = dword_703C88; *(_DWORD *)(v1 + 1288) = off_703C8C; memcpy((void *)(v1 + 1337), "MiniHouseFurnitureObjEffect.shn", 0x20u); *(_DWORD *)(v1 + 1402) = dword_703C48; *(_DWORD *)(v1 + 1406) = dword_703C4C; *(_DWORD *)(v1 + 1410) = dword_703C50; *(_DWORD *)(v1 + 1414) = dword_703C54; *(_DWORD *)(v1 + 1418) = off_703C58; *(_DWORD *)(v1 + 1467) = dword_703C34; *(_DWORD *)(v1 + 1471) = dword_703C38; *(_DWORD *)(v1 + 1475) = dword_703C3C; *(_DWORD *)(v1 + 1479) = dword_703C40; *(_BYTE *)(v1 + 1483) = byte_703C44; *(_DWORD *)(v1 + 1532) = dword_703C20; *(_DWORD *)(v1 + 1536) = dword_703C24; *(_DWORD *)(v1 + 1540) = dword_703C28; *(_DWORD *)(v1 + 1544) = dword_703C2C; *(_WORD *)(v1 + 1548) = word_703C30; *(_BYTE *)(v1 + 1550) = byte_703C32; *(_DWORD *)(v1 + 1597) = dword_703C0C; *(_DWORD *)(v1 + 1601) = dword_703C10; *(_DWORD *)(v1 + 1605) = dword_703C14; *(_DWORD *)(v1 + 1609) = dword_703C18; *(_BYTE *)(v1 + 1613) = byte_703C1C; *(_DWORD *)(v1 + 1662) = dword_703BFC; *(_DWORD *)(v1 + 1666) = dword_703C00; *(_DWORD *)(v1 + 1670) = dword_703C04; *(_DWORD *)(v1 + 1674) = off_703C08; *(_DWORD *)(v1 + 1727) = dword_703BEC; *(_DWORD *)(v1 + 1731) = dword_703BF0; *(_DWORD *)(v1 + 1735) = dword_703BF4; *(_DWORD *)(v1 + 1739) = off_703BF8; *(_DWORD *)(v1 + 1792) = dword_703BD8; *(_DWORD *)(v1 + 1796) = dword_703BDC; *(_DWORD *)(v1 + 1800) = dword_703BE0; *(_DWORD *)(v1 + 1804) = dword_703BE4; *(_DWORD *)(v1 + 1808) = off_703BE8; memcpy((void *)(v1 + 1857), "CharacterTitleStateView.shn", 0x1Cu); *(_DWORD *)(v1 + 1922) = dword_703BA8; *(_DWORD *)(v1 + 1926) = dword_703BAC; *(_DWORD *)(v1 + 1930) = dword_703BB0; *(_DWORD *)(v1 + 1934) = dword_703BB4; *(_WORD *)(v1 + 1938) = word_703BB8; *(_BYTE *)(v1 + 1940) = byte_703BBA; *(_DWORD *)(v1 + 1987) = dword_703B94; *(_DWORD *)(v1 + 1991) = dword_703B98; *(_DWORD *)(v1 + 1995) = dword_703B9C; *(_DWORD *)(v1 + 1999) = dword_703BA0; *(_BYTE *)(v1 + 2003) = byte_703BA4; *(_DWORD *)(v1 + 2052) = dword_703B80; *(_DWORD *)(v1 + 2056) = dword_703B84; *(_DWORD *)(v1 + 2060) = dword_703B88; *(_DWORD *)(v1 + 2064) = dword_703B8C; *(_BYTE *)(v1 + 2068) = byte_703B90; *(_DWORD *)(v1 + 2117) = dword_703B70; *(_DWORD *)(v1 + 2121) = dword_703B74; *(_DWORD *)(v1 + 2125) = dword_703B78; *(_DWORD *)(v1 + 2129) = off_703B7C; *(_DWORD *)(v1 + 2182) = dword_703B60; *(_DWORD *)(v1 + 2186) = dword_703B64; *(_DWORD *)(v1 + 2190) = dword_703B68; *(_DWORD *)(v1 + 2194) = off_703B6C; *(_DWORD *)(v1 + 2247) = dword_703B50; *(_DWORD *)(v1 + 2251) = dword_703B54; *(_DWORD *)(v1 + 2255) = dword_703B58; *(_DWORD *)(v1 + 2259) = off_703B5C; *(_DWORD *)(v1 + 2312) = dword_703B38; *(_DWORD *)(v1 + 2316) = dword_703B3C; *(_DWORD *)(v1 + 2320) = dword_703B40; *(_DWORD *)(v1 + 2324) = dword_703B44; *(_DWORD *)(v1 + 2328) = dword_703B48; *(_BYTE *)(v1 + 2332) = byte_703B4C; *(_DWORD *)(v1 + 2377) = dword_703B28; *(_DWORD *)(v1 + 2381) = dword_703B2C; *(_DWORD *)(v1 + 2385) = dword_703B30; *(_DWORD *)(v1 + 2389) = off_703B34; *(_DWORD *)(v1 + 2442) = dword_703B14; *(_DWORD *)(v1 + 2446) = dword_703B18; *(_DWORD *)(v1 + 2450) = dword_703B1C; *(_DWORD *)(v1 + 2454) = dword_703B20; *(_DWORD *)(v1 + 2458) = off_703B24; *(_DWORD *)(v1 + 2507) = dword_703B08; *(_DWORD *)(v1 + 2511) = dword_703B0C; *(_DWORD *)(v1 + 2515) = off_703B10; memcpy((void *)(v1 + 2572), "ItemViewEquipTypeInfo.shn", 0x1Au); *(_DWORD *)(v1 + 2637) = dword_703ADC; *(_DWORD *)(v1 + 2641) = dword_703AE0; *(_DWORD *)(v1 + 2645) = dword_703AE4; *(_WORD *)(v1 + 2649) = word_703AE8; *(_BYTE *)(v1 + 2651) = byte_703AEA; *(_DWORD *)(v1 + 2702) = dword_703AC4; *(_DWORD *)(v1 + 2706) = dword_703AC8; *(_DWORD *)(v1 + 2710) = dword_703ACC; *(_DWORD *)(v1 + 2714) = dword_703AD0; *(_DWORD *)(v1 + 2718) = dword_703AD4; *(_BYTE *)(v1 + 2722) = byte_703AD8; *(_DWORD *)(v1 + 2767) = dword_703AB4; *(_DWORD *)(v1 + 2771) = dword_703AB8; *(_DWORD *)(v1 + 2775) = dword_703ABC; *(_WORD *)(v1 + 2779) = word_703AC0; *(_DWORD *)(v1 + 2832) = dword_703AA8; *(_DWORD *)(v1 + 2836) = dword_703AAC; *(_DWORD *)(v1 + 2840) = off_703AB0; *(_DWORD *)(v1 + 2897) = dword_703A98; *(_DWORD *)(v1 + 2901) = dword_703A9C; *(_DWORD *)(v1 + 2905) = dword_703AA0; *(_WORD *)(v1 + 2909) = word_703AA4; *(_DWORD *)(v1 + 2962) = dword_703A84; *(_DWORD *)(v1 + 2966) = dword_703A88; *(_DWORD *)(v1 + 2970) = dword_703A8C; *(_DWORD *)(v1 + 2974) = dword_703A90; *(_DWORD *)(v1 + 2978) = off_703A94; *(_DWORD *)(v1 + 3027) = dword_703A74; *(_DWORD *)(v1 + 3031) = dword_703A78; *(_DWORD *)(v1 + 3035) = dword_703A7C; *(_DWORD *)(v1 + 3039) = off_703A80; memcpy((void *)(v1 + 3092), "MinimonAutoUseItem.shn", 0x17u); memcpy((void *)(v1 + 3157), "ChargedDeletableBuff.shn", 0x19u); v5 = v1 + 37; v12 = 49; do { v6 = v5; v7 = v5 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); v9 = 0; for ( i = v6 - v7; v9 < i; ++v9 ) *(_BYTE *)(v5 + v9) = tolower(*(_BYTE *)(v5 + v9)); v5 += 65; --v12; } while ( v12 ); return v1; } // 703A74: using guessed type int dword_703A74; // 703A78: using guessed type int dword_703A78; // 703A7C: using guessed type int dword_703A7C; // 703A80: using guessed type void *off_703A80; // 703A84: using guessed type int dword_703A84; // 703A88: using guessed type int dword_703A88; // 703A8C: using guessed type int dword_703A8C; // 703A90: using guessed type int dword_703A90; // 703A94: using guessed type void *off_703A94; // 703A98: using guessed type int dword_703A98; // 703A9C: using guessed type int dword_703A9C; // 703AA0: using guessed type int dword_703AA0; // 703AA4: using guessed type __int16 word_703AA4; // 703AA8: using guessed type int dword_703AA8; // 703AAC: using guessed type int dword_703AAC; // 703AB0: using guessed type void *off_703AB0; // 703AB4: using guessed type int dword_703AB4; // 703AB8: using guessed type int dword_703AB8; // 703ABC: using guessed type int dword_703ABC; // 703AC0: using guessed type __int16 word_703AC0; // 703AC4: using guessed type int dword_703AC4; // 703AC8: using guessed type int dword_703AC8; // 703ACC: using guessed type int dword_703ACC; // 703AD0: using guessed type int dword_703AD0; // 703AD4: using guessed type int dword_703AD4; // 703AD8: using guessed type char byte_703AD8; // 703ADC: using guessed type int dword_703ADC; // 703AE0: using guessed type int dword_703AE0; // 703AE4: using guessed type int dword_703AE4; // 703AE8: using guessed type __int16 word_703AE8; // 703AEA: using guessed type char byte_703AEA; // 703B08: using guessed type int dword_703B08; // 703B0C: using guessed type int dword_703B0C; // 703B10: using guessed type void *off_703B10; // 703B14: using guessed type int dword_703B14; // 703B18: using guessed type int dword_703B18; // 703B1C: using guessed type int dword_703B1C; // 703B20: using guessed type int dword_703B20; // 703B24: using guessed type void *off_703B24; // 703B28: using guessed type int dword_703B28; // 703B2C: using guessed type int dword_703B2C; // 703B30: using guessed type int dword_703B30; // 703B34: using guessed type void *off_703B34; // 703B38: using guessed type int dword_703B38; // 703B3C: using guessed type int dword_703B3C; // 703B40: using guessed type int dword_703B40; // 703B44: using guessed type int dword_703B44; // 703B48: using guessed type int dword_703B48; // 703B4C: using guessed type char byte_703B4C; // 703B50: using guessed type int dword_703B50; // 703B54: using guessed type int dword_703B54; // 703B58: using guessed type int dword_703B58; // 703B5C: using guessed type void *off_703B5C; // 703B60: using guessed type int dword_703B60; // 703B64: using guessed type int dword_703B64; // 703B68: using guessed type int dword_703B68; // 703B6C: using guessed type void *off_703B6C; // 703B70: using guessed type int dword_703B70; // 703B74: using guessed type int dword_703B74; // 703B78: using guessed type int dword_703B78; // 703B7C: using guessed type void *off_703B7C; // 703B80: using guessed type int dword_703B80; // 703B84: using guessed type int dword_703B84; // 703B88: using guessed type int dword_703B88; // 703B8C: using guessed type int dword_703B8C; // 703B90: using guessed type char byte_703B90; // 703B94: using guessed type int dword_703B94; // 703B98: using guessed type int dword_703B98; // 703B9C: using guessed type int dword_703B9C; // 703BA0: using guessed type int dword_703BA0; // 703BA4: using guessed type char byte_703BA4; // 703BA8: using guessed type int dword_703BA8; // 703BAC: using guessed type int dword_703BAC; // 703BB0: using guessed type int dword_703BB0; // 703BB4: using guessed type int dword_703BB4; // 703BB8: using guessed type __int16 word_703BB8; // 703BBA: using guessed type char byte_703BBA; // 703BD8: using guessed type int dword_703BD8; // 703BDC: using guessed type int dword_703BDC; // 703BE0: using guessed type int dword_703BE0; // 703BE4: using guessed type int dword_703BE4; // 703BE8: using guessed type void *off_703BE8; // 703BEC: using guessed type int dword_703BEC; // 703BF0: using guessed type int dword_703BF0; // 703BF4: using guessed type int dword_703BF4; // 703BF8: using guessed type void *off_703BF8; // 703BFC: using guessed type int dword_703BFC; // 703C00: using guessed type int dword_703C00; // 703C04: using guessed type int dword_703C04; // 703C08: using guessed type void *off_703C08; // 703C0C: using guessed type int dword_703C0C; // 703C10: using guessed type int dword_703C10; // 703C14: using guessed type int dword_703C14; // 703C18: using guessed type int dword_703C18; // 703C1C: using guessed type char byte_703C1C; // 703C20: using guessed type int dword_703C20; // 703C24: using guessed type int dword_703C24; // 703C28: using guessed type int dword_703C28; // 703C2C: using guessed type int dword_703C2C; // 703C30: using guessed type __int16 word_703C30; // 703C32: using guessed type char byte_703C32; // 703C34: using guessed type int dword_703C34; // 703C38: using guessed type int dword_703C38; // 703C3C: using guessed type int dword_703C3C; // 703C40: using guessed type int dword_703C40; // 703C44: using guessed type char byte_703C44; // 703C48: using guessed type int dword_703C48; // 703C4C: using guessed type int dword_703C4C; // 703C50: using guessed type int dword_703C50; // 703C54: using guessed type int dword_703C54; // 703C58: using guessed type void *off_703C58; // 703C7C: using guessed type int dword_703C7C; // 703C80: using guessed type int dword_703C80; // 703C84: using guessed type int dword_703C84; // 703C88: using guessed type int dword_703C88; // 703C8C: using guessed type void *off_703C8C; // 703C90: using guessed type int dword_703C90; // 703C94: using guessed type int dword_703C94; // 703C98: using guessed type int dword_703C98; // 703C9C: using guessed type int dword_703C9C; // 703CA0: using guessed type char byte_703CA0; // 703CA4: using guessed type int dword_703CA4; // 703CA8: using guessed type int dword_703CA8; // 703CAC: using guessed type int dword_703CAC; // 703CB0: using guessed type void *off_703CB0; // 703CB4: using guessed type int dword_703CB4; // 703CB8: using guessed type int dword_703CB8; // 703CBC: using guessed type int dword_703CBC; // 703CC0: using guessed type __int16 word_703CC0; // 703CC2: using guessed type char byte_703CC2; // 703CC4: using guessed type int dword_703CC4; // 703CC8: using guessed type int dword_703CC8; // 703CCC: using guessed type __int16 word_703CCC; // 703CCE: using guessed type char byte_703CCE; // 703CD0: using guessed type int dword_703CD0; // 703CD4: using guessed type int dword_703CD4; // 703CD8: using guessed type int dword_703CD8; // 703CDC: using guessed type int dword_703CDC; // 703CE0: using guessed type char byte_703CE0; // 703CE4: using guessed type int dword_703CE4; // 703CE8: using guessed type int dword_703CE8; // 703CEC: using guessed type void *off_703CEC; // 703CF0: using guessed type int dword_703CF0; // 703CF4: using guessed type int dword_703CF4; // 703CF8: using guessed type int dword_703CF8; // 703CFC: using guessed type int dword_703CFC; // 703D00: using guessed type void *off_703D00; // 703D1C: using guessed type int dword_703D1C; // 703D20: using guessed type int dword_703D20; // 703D24: using guessed type int dword_703D24; // 703D28: using guessed type __int16 word_703D28; // 703D2C: using guessed type int dword_703D2C; // 703D30: using guessed type int dword_703D30; // 703D34: using guessed type void *off_703D34; // 703D38: using guessed type int dword_703D38; // 703D3C: using guessed type int dword_703D3C; // 703D40: using guessed type int dword_703D40; // 703D44: using guessed type char byte_703D44; // 703D48: using guessed type int dword_703D48; // 703D4C: using guessed type int dword_703D4C; // 703D50: using guessed type int dword_703D50; // 703D54: using guessed type int dword_703D54; // 703D58: using guessed type __int16 word_703D58; // 703D5C: using guessed type int dword_703D5C; // 703D60: using guessed type int dword_703D60; // 703D64: using guessed type int dword_703D64; // 703D68: using guessed type int dword_703D68; // 703D6C: using guessed type void *off_703D6C; // 703D70: using guessed type int dword_703D70; // 703D74: using guessed type int dword_703D74; // 703D78: using guessed type __int16 word_703D78; // 703D7A: using guessed type char byte_703D7A; // 703D7C: using guessed type int dword_703D7C; // 703D80: using guessed type int dword_703D80; // 703D84: using guessed type int dword_703D84; // 703D88: using guessed type __int16 word_703D88; // 703D8C: using guessed type int dword_703D8C; // 703D90: using guessed type int dword_703D90; // 703D94: using guessed type int dword_703D94; // 703D98: using guessed type int dword_703D98; // 703D9C: using guessed type __int16 word_703D9C; // 703DB8: using guessed type int dword_703DB8; // 703DBC: using guessed type int dword_703DBC; // 703DC0: using guessed type int dword_703DC0; // 703DC4: using guessed type void *off_703DC4; // 703DC8: using guessed type int dword_703DC8; // 703DCC: using guessed type int dword_703DCC; // 703DD0: using guessed type void *off_703DD0; //----- (0062EBC0) -------------------------------------------------------- void *__thiscall sub_62EBC0(void *this) { void *result; // eax@1 signed int v2; // edi@1 char *v3; // esi@1 signed int v4; // ecx@2 result = this; v2 = 17; *(_DWORD *)this = &off_703DD8; v3 = (char *)this + 293; do { v4 = 0; do { v3[v4 + 289] = 0; v3[v4] = 0; v3[v4++ - 289] = 0; } while ( v4 < 17 ); v3 += 17; --v2; } while ( v2 ); *((_BYTE *)result + 149) = 1; *(_WORD *)((char *)result + 165) = 257; *((_BYTE *)result + 160) = 1; *(_WORD *)((char *)result + 169) = 257; *((_BYTE *)result + 171) = 1; *((_WORD *)result + 86) = 257; *((_BYTE *)result + 157) = 1; *((_BYTE *)result + 163) = 1; *((_BYTE *)result + 220) = 1; *((_BYTE *)result + 58) = 1; *((_BYTE *)result + 238) = 1; *((_BYTE *)result + 256) = 1; *((_BYTE *)result + 274) = 1; *((_BYTE *)result + 4) = 1; *((_BYTE *)result + 13) = 1; *((_BYTE *)result + 112) = 1; *((_BYTE *)result + 115) = 1; *((_BYTE *)result + 47) = 1; *((_BYTE *)result + 81) = 1; *((_BYTE *)result + 98) = 1; *((_BYTE *)result + 438) = 1; *((_WORD *)result + 227) = 257; *((_BYTE *)result + 449) = 1; *((_WORD *)result + 229) = 257; *((_BYTE *)result + 460) = 1; *(_WORD *)((char *)result + 461) = 257; *((_BYTE *)result + 509) = 1; *((_BYTE *)result + 347) = 1; *((_BYTE *)result + 527) = 1; *((_BYTE *)result + 545) = 1; *((_BYTE *)result + 563) = 1; *((_WORD *)result + 146) = 257; *((_BYTE *)result + 302) = 1; *((_BYTE *)result + 401) = 1; *((_BYTE *)result + 404) = 1; *((_BYTE *)result + 336) = 1; *((_BYTE *)result + 370) = 1; *((_BYTE *)result + 387) = 1; *((_BYTE *)result + 727) = 1; *(_WORD *)((char *)result + 743) = 257; *((_BYTE *)result + 738) = 1; *(_WORD *)((char *)result + 747) = 257; *((_BYTE *)result + 749) = 1; *((_WORD *)result + 375) = 257; *((_BYTE *)result + 741) = 1; *((_BYTE *)result + 798) = 1; *((_BYTE *)result + 636) = 1; *((_BYTE *)result + 816) = 1; *((_BYTE *)result + 834) = 1; *((_BYTE *)result + 870) = 1; *((_BYTE *)result + 852) = 1; *(_WORD *)((char *)result + 581) = 257; *((_BYTE *)result + 591) = 1; *((_BYTE *)result + 690) = 1; *((_BYTE *)result + 693) = 1; *((_BYTE *)result + 625) = 1; *((_BYTE *)result + 659) = 1; *((_BYTE *)result + 676) = 1; return result; } // 703DD8: using guessed type int (__thiscall *off_703DD8)(void *, char); //----- (0062ED70) -------------------------------------------------------- void __thiscall sub_62ED70(void *this) { *(_DWORD *)this = &off_703DD8; } // 703DD8: using guessed type int (__thiscall *off_703DD8)(void *, char); //----- (0062ED80) -------------------------------------------------------- int __thiscall sub_62ED80(void *this, int a2, int a3) { void *v3; // esi@1 int result; // eax@1 v3 = this; result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( result ) { if ( *(_BYTE *)(result + 4) ) { if ( !a3 ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, 0); } result = *(_BYTE *)(result + 5) == 0; } return result; } //----- (0062EDD0) -------------------------------------------------------- int __thiscall sub_62EDD0(void *this, int a2) { int result; // eax@1 result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( result ) result = *(_BYTE *)(result + 9) == 0; return result; } //----- (0062EE00) -------------------------------------------------------- int __thiscall sub_62EE00(void *this, int a2, int a3) { void *v3; // esi@1 int result; // eax@1 v3 = this; result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( result ) { if ( *(_BYTE *)(result + 4) ) { if ( !a3 ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, 0); } result = *(_BYTE *)(result + 8) == 0; } return result; } //----- (0062EE50) -------------------------------------------------------- int __thiscall sub_62EE50(void *this, int a2) { int result; // eax@1 result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( result ) result = *(_BYTE *)(result + 6) == 0; return result; } //----- (0062EE80) -------------------------------------------------------- signed int __thiscall sub_62EE80(void *this, int a2, int a3, __int16 a4, __int16 a5) { void *v5; // esi@1 int v6; // eax@1 signed int result; // eax@2 v5 = this; v6 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( !v6 ) goto LABEL_14; if ( *(_BYTE *)(v6 + 4) && !a3 ) v6 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 4))(v5, 0); if ( !*(_BYTE *)(v6 + 7) || a4 != 6 && a4 && a5 != 6 && a5 ) result = 1; else LABEL_14: result = 0; return result; } //----- (0062EEF0) -------------------------------------------------------- signed int __thiscall sub_62EEF0(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 signed int result; // eax@8 v3 = this; v4 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( !v4 ) goto LABEL_12; if ( *(_BYTE *)(v4 + 4) && !a3 ) v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, 0); if ( *(_BYTE *)(v4 + 5) && *(_BYTE *)(v4 + 7) && *(_BYTE *)(v4 + 8) ) result = 1; else LABEL_12: result = 0; return result; } //----- (0062EF50) -------------------------------------------------------- signed int __thiscall sub_62EF50(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 signed int result; // eax@7 v3 = this; v4 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( !v4 ) goto LABEL_11; if ( *(_BYTE *)(v4 + 4) && !a3 ) v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, 0); if ( *(_BYTE *)(v4 + 5) && *(_BYTE *)(v4 + 8) ) result = 1; else LABEL_11: result = 0; return result; } //----- (0062EFA0) -------------------------------------------------------- int __thiscall sub_62EFA0(void *this, int a2) { int result; // eax@1 result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(a2); if ( result ) result = *(_BYTE *)(result + 4); return result; } //----- (0062EFC0) -------------------------------------------------------- void *__thiscall sub_62EFC0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_703DD8; if ( a2 & 1 ) operator delete(this); return v2; } // 703DD8: using guessed type int (__thiscall *off_703DD8)(void *, char); //----- (0062EFF0) -------------------------------------------------------- int __thiscall sub_62EFF0(void *this, int a2, int a3, __int16 a4, __int16 a5, int a6) { int result; // eax@1 void *v7; // esi@1 int v8; // eax@6 result = a6; v7 = this; if ( a6 ) { if ( (unsigned __int16)a4 >= 0x11u ) return 0; if ( (unsigned __int16)a5 < 0x11u ) { *(_DWORD *)a6 = 0; if ( sub_62EEF0(this, a2, a3) ) { v8 = (int)((char *)v7 + 16 * (unsigned __int16)a4 + (unsigned __int16)a4 + (unsigned __int16)a5 + 293); if ( !*(_BYTE *)v8 ) { *(_DWORD *)a6 = 1; return *(_BYTE *)v8; } return *(_BYTE *)v8; } if ( sub_62EF50(v7, a2, a3) ) { v8 = (int)((char *)v7 + 16 * (unsigned __int16)a4 + (unsigned __int16)a4 + (unsigned __int16)a5 + 582); if ( !*(_BYTE *)v8 ) { *(_DWORD *)a6 = 2; return *(_BYTE *)v8; } return *(_BYTE *)v8; } if ( sub_62EE80(v7, a2, a3, a4, a5) ) { v8 = (int)((char *)v7 + 16 * (unsigned __int16)a4 + (unsigned __int16)a4 + (unsigned __int16)a5 + 4); if ( !*(_BYTE *)v8 ) *(_DWORD *)a6 = 3; return *(_BYTE *)v8; } } result = 0; } return result; } //----- (0062F110) -------------------------------------------------------- int __thiscall sub_62F110(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 384) = 0; return result; } //----- (0062F120) -------------------------------------------------------- void __thiscall sub_62F120(int this) { *(_DWORD *)(this + 384) = 0; } //----- (0062F130) -------------------------------------------------------- signed int __thiscall sub_62F130(int this, int a2) { signed int v2; // eax@1 signed int result; // eax@2 int v4; // eax@3 int v5; // eax@3 v2 = *(_DWORD *)(this + 384); if ( v2 < 24 ) { v4 = 16 * v2; *(_DWORD *)(v4 + this) = *(_DWORD *)a2; v5 = this + v4; *(_DWORD *)(v5 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v5 + 12) = *(_DWORD *)(a2 + 12); result = 1; ++*(_DWORD *)(this + 384); } else { result = 0; } return result; } //----- (0062F180) -------------------------------------------------------- int __thiscall sub_62F180(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // edx@2 int result; // eax@5 v2 = *(_DWORD *)(this + 384); v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this; while ( *(_DWORD *)v4 != a2 ) { ++v3; v4 += 16; if ( v3 >= v2 ) goto LABEL_5; } result = this + 16 * v3; } return result; } //----- (0062F1C0) -------------------------------------------------------- int __thiscall sub_62F1C0(int this, int a2, int a3, int a4) { int v4; // esi@1 int result; // eax@4 v4 = this; if ( *(_DWORD *)(this + 16) && *(_DWORD *)this == 1 ) { operator delete(*(void **)(this + 16)); *(_DWORD *)(v4 + 16) = 0; *(_DWORD *)v4 = 0; } *(_DWORD *)(v4 + 12) = a2; result = 8 * a2; *(_DWORD *)(v4 + 8) = a3; *(_DWORD *)(v4 + 16) = a4; *(_DWORD *)(v4 + 20) = 8 * a2; *(_DWORD *)(v4 + 24) = a3; *(_DWORD *)v4 = 0; return result; } //----- (0062F270) -------------------------------------------------------- signed int __thiscall sub_62F270(int this) { int v1; // edi@1 int v2; // eax@1 unsigned int v3; // ebx@1 unsigned int v4; // ecx@1 unsigned int v5; // esi@1 unsigned int v6; // eax@1 signed int v7; // edx@1 unsigned int v8; // edx@14 signed int v10; // [sp+10h] [bp-1Ch]@1 unsigned int v11; // [sp+14h] [bp-18h]@1 signed int v12; // [sp+18h] [bp-14h]@1 unsigned int v13; // [sp+1Ch] [bp-10h]@5 unsigned int v14; // [sp+20h] [bp-Ch]@5 unsigned int v15; // [sp+24h] [bp-8h]@1 v1 = this; v2 = *(_DWORD *)(this + 7768) - *(_DWORD *)(this + 7724); v3 = *(_DWORD *)(this + 7772); v4 = *(_DWORD *)(this + 7768); v5 = abs(v2); v11 = v4; v6 = abs(v3 - *(_DWORD *)(v1 + 7728)); v15 = v3; v12 = *(_DWORD *)(v1 + 7724) < v4 ? -1 : 1; v7 = *(_DWORD *)(v1 + 7728) < v3 ? -1 : 1; v10 = *(_DWORD *)(v1 + 7728) < v3 ? -1 : 1; if ( !v5 ) v12 = 0; if ( !v6 ) { v7 = 0; v10 = 0; } v13 = v5; v14 = v6; while ( v4 != *(_DWORD *)(v1 + 7724) || v15 != *(_DWORD *)(v1 + 7728) ) { if ( v6 < v5 == 1 ) { v4 += v12; v14 += v6; v11 = v4; if ( v14 > v5 ) { v15 += v7; v14 -= v5; } } else { v15 += v7; v13 += v5; if ( v13 > v6 ) { v4 += v12; v13 -= v6; v11 = v4; } } v8 = *(_DWORD *)(v1 + 8); if ( v4 >= v8 || v15 >= v8 || (unsigned __int8)(1 << (v4 - 8 * (v4 >> 3))) & *(_BYTE *)(*(_DWORD *)(v1 + 16) + v15 * *(_DWORD *)(v1 + 12) + (v4 >> 3)) ) return 1; v4 = v11; v7 = v10; } return 0; } //----- (0062F390) -------------------------------------------------------- void __thiscall sub_62F390(int this, int a2, int a3) { int v3; // esi@1 v3 = this; if ( *(_DWORD *)(this + 12012) && (*(_DWORD *)(this + 12004) != a2 || *(_DWORD *)(this + 12008) != a3) ) { operator delete(*(void **)(this + 12012)); *(_DWORD *)(v3 + 12012) = 0; } if ( !*(_DWORD *)(v3 + 12012) ) { *(_DWORD *)(v3 + 12012) = unknown_libname_130(2 * a3 * a2 | -((unsigned __int64)(unsigned int)(a3 * a2) >> 31 != 0)); *(_DWORD *)(v3 + 12004) = a2; *(_DWORD *)(v3 + 12008) = a3; } } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0062F410) -------------------------------------------------------- int __thiscall sub_62F410(int this) { int v1; // esi@1 int v2; // ecx@1 int v3; // ebx@1 int v4; // edi@1 int result; // eax@1 int v6; // edx@5 int v7; // edx@7 int v8; // [sp+Ch] [bp-10h]@1 int v9; // [sp+10h] [bp-Ch]@4 int v10; // [sp+14h] [bp-8h]@2 int v11; // [sp+18h] [bp-4h]@1 v1 = this; memset(*(void **)(this + 12012), -1, 2 * *(_DWORD *)(this + 12008) * *(_DWORD *)(this + 12004)); v2 = *(_DWORD *)(v1 + 12020); v3 = (*(_DWORD *)(v1 + 12028) - v2) / 2 - *(_DWORD *)(v1 + 12004) / 2 + v2; v11 = *(_DWORD *)(v1 + 12008) / 2; v8 = *(_DWORD *)(v1 + 12004) / 2; v4 = *(_DWORD *)(v1 + 12024); result = v4 + (*(_DWORD *)(v1 + 12032) - v4) / 2 - v11; *(_DWORD *)(v1 + 11996) = v3; *(_DWORD *)(v1 + 12000) = result; if ( v2 < v3 || (v10 = v3 + *(_DWORD *)(v1 + 12004), v2 >= v10) || v4 < result || (v9 = result + *(_DWORD *)(v1 + 12008), v4 >= v9) || (v6 = *(_DWORD *)(v1 + 12028), v6 < v3) || v6 >= v10 || (v7 = *(_DWORD *)(v1 + 12032), v7 < result) || v7 >= v9 ) { *(_DWORD *)(v1 + 11996) = v2 - v8; *(_DWORD *)(v1 + 12000) = v4 - v11; *(_DWORD *)(v1 + 12016) = 0; } else { *(_DWORD *)(v1 + 12016) = 1; } return result; } //----- (0062F510) -------------------------------------------------------- signed int __thiscall sub_62F510(int this, int a2, int a3, __int16 a4) { int v4; // esi@1 signed int result; // eax@2 int v6; // edx@3 int v7; // edi@4 v4 = *(_DWORD *)(this + 11996); if ( v4 > a2 || (v6 = *(_DWORD *)(this + 12000), v6 > a3) ) { result = 0; } else { v7 = *(_DWORD *)(this + 12004); if ( v7 + v4 > a2 && v6 + *(_DWORD *)(this + 12008) > a3 ) { *(_WORD *)(*(_DWORD *)(this + 12012) + 2 * (a2 + v7 * (a3 - v6) - v4)) = a4; result = 1; } else { result = 0; } } return result; } //----- (0062F580) -------------------------------------------------------- signed int __thiscall sub_62F580(int this) { unsigned __int16 v1; // bx@1 int v2; // esi@1 unsigned int v3; // ecx@1 int v4; // eax@1 unsigned int v5; // edx@1 unsigned int v6; // edi@2 unsigned int v7; // eax@3 int v8; // ecx@7 __int16 v9; // bx@9 __int16 v10; // ax@9 int v11; // ecx@14 __int16 v12; // bx@16 __int16 v13; // ax@16 unsigned int v14; // edi@20 unsigned int v15; // eax@21 int v16; // ecx@25 __int16 v17; // bx@27 __int16 v18; // ax@27 unsigned int v19; // eax@29 int v20; // ecx@33 __int16 v21; // bx@35 __int16 v22; // ax@35 unsigned int v23; // eax@39 unsigned int v24; // eax@41 unsigned int v25; // ecx@47 unsigned int v26; // eax@49 int v28; // [sp+Ch] [bp-20h]@1 int v29; // [sp+10h] [bp-1Ch]@1 unsigned int v30; // [sp+14h] [bp-18h]@1 int v31; // [sp+18h] [bp-14h]@1 unsigned __int16 v32; // [sp+1Ch] [bp-10h]@0 unsigned int v33; // [sp+20h] [bp-Ch]@1 signed int v34; // [sp+24h] [bp-8h]@1 signed int v35; // [sp+28h] [bp-4h]@1 v1 = v32; v2 = this; v3 = *(_DWORD *)(this + 12032); v4 = *(_DWORD *)(v2 + 12028); v5 = v4 - 1; v31 = v3 + 1; v29 = v3 - 1; v35 = 0; v28 = v4 - 1; v30 = v4 + 1; v34 = v3; v33 = v3; while ( 2 ) { v6 = v5; if ( (signed int)v5 >= (signed int)v30 ) goto LABEL_20; do { v7 = *(_DWORD *)(v2 + 8); if ( v6 >= v7 ) goto LABEL_18; if ( v29 < v7 && !((unsigned __int8)(1 << (v6 - 8 * (v6 >> 3))) & *(_BYTE *)(*(_DWORD *)(v2 + 16) + v29 * *(_DWORD *)(v2 + 12) + (v6 >> 3))) ) { if ( !v35 ) { v9 = abs(v6 - *(_DWORD *)(v2 + 12020)); v10 = abs(v29 - *(_DWORD *)(v2 + 12024)); *(_DWORD *)(v2 + 7736) = v29; v1 = v10 + v9; v35 = 1; goto LABEL_10; } v8 = abs(v29 - *(_DWORD *)(v2 + 12024)) + abs(v6 - *(_DWORD *)(v2 + 12020)); if ( v1 > (unsigned __int16)v8 ) { *(_DWORD *)(v2 + 7736) = v29; v1 = v8; LABEL_10: *(_DWORD *)(v2 + 7732) = v6; goto LABEL_11; } } LABEL_11: if ( (unsigned int)v31 < *(_DWORD *)(v2 + 8) && !((unsigned __int8)(1 << (v6 - 8 * (v6 >> 3))) & *(_BYTE *)(*(_DWORD *)(v2 + 16) + v31 * *(_DWORD *)(v2 + 12) + (v6 >> 3))) ) { if ( v35 ) { v11 = abs(v31 - *(_DWORD *)(v2 + 12024)) + abs(v6 - *(_DWORD *)(v2 + 12020)); if ( v1 <= (unsigned __int16)v11 ) goto LABEL_18; *(_DWORD *)(v2 + 7736) = v31; v1 = v11; } else { v12 = abs(v6 - *(_DWORD *)(v2 + 12020)); v13 = abs(v31 - *(_DWORD *)(v2 + 12024)); *(_DWORD *)(v2 + 7736) = v31; v1 = v13 + v12; v35 = 1; } *(_DWORD *)(v2 + 7732) = v6; } LABEL_18: ++v6; } while ( (signed int)v6 < (signed int)v30 ); v5 = v28; LABEL_20: v14 = v33; if ( (signed int)v33 < v34 ) { while ( 2 ) { v15 = *(_DWORD *)(v2 + 8); if ( v5 < v15 && v14 < v15 && !((unsigned __int8)(1 << (v5 - 8 * (v5 >> 3))) & *(_BYTE *)(*(_DWORD *)(v2 + 16) + v14 * *(_DWORD *)(v2 + 12) + (v5 >> 3))) ) { if ( v35 ) { v16 = abs(v28 - *(_DWORD *)(v2 + 12020)) + abs(v14 - *(_DWORD *)(v2 + 12024)); if ( v1 > (unsigned __int16)v16 ) { *(_DWORD *)(v2 + 7732) = v28; v1 = v16; goto LABEL_28; } } else { v17 = abs(v14 - *(_DWORD *)(v2 + 12024)); v18 = abs(v28 - *(_DWORD *)(v2 + 12020)); *(_DWORD *)(v2 + 7732) = v28; v1 = v18 + v17; v35 = 1; LABEL_28: *(_DWORD *)(v2 + 7736) = v14; } } v19 = *(_DWORD *)(v2 + 8); if ( v30 < v19 && v14 < v19 && !((unsigned __int8)(1 << (v30 - 8 * (v30 >> 3))) & *(_BYTE *)(*(_DWORD *)(v2 + 16) + v14 * *(_DWORD *)(v2 + 12) + (v30 >> 3))) ) { if ( v35 ) { v20 = abs(v30 - *(_DWORD *)(v2 + 12020)) + abs(v14 - *(_DWORD *)(v2 + 12024)); if ( v1 > (unsigned __int16)v20 ) { *(_DWORD *)(v2 + 7732) = v30; v1 = v20; goto LABEL_36; } } else { v21 = abs(v14 - *(_DWORD *)(v2 + 12024)); v22 = abs(v30 - *(_DWORD *)(v2 + 12020)); *(_DWORD *)(v2 + 7732) = v30; v1 = v22 + v21; v35 = 1; LABEL_36: *(_DWORD *)(v2 + 7736) = v14; } } v5 = v28; ++v14; if ( (signed int)v14 >= v34 ) break; continue; } } if ( !v35 ) { v23 = *(_DWORD *)(v2 + 12020); if ( v23 >= v5 ) { if ( v23 <= v30 ) { v24 = *(_DWORD *)(v2 + 12024); if ( v24 >= v29 ) { if ( v24 <= v31 ) return 0; } } } if ( v5 ) { --v5; v28 = v5; } if ( v29 ) { --v29; --v33; } v25 = *(_DWORD *)(v2 + 20); if ( v30 < v25 ) ++v30; v26 = *(_DWORD *)(v2 + 24); if ( v31 < v26 ) { ++v31; ++v34; } if ( !(v5 + v29) && v30 + v31 == v26 + v25 - 2 ) return 0; continue; } return 1; } } //----- (0062F910) -------------------------------------------------------- signed int __thiscall sub_62F910(int this) { int v1; // esi@1 unsigned int v2; // ecx@1 unsigned int v3; // eax@1 unsigned int v4; // edi@1 int v5; // ecx@4 int v6; // eax@4 int v7; // edx@4 int v8; // eax@5 signed int v9; // ecx@5 int v10; // edx@5 signed int result; // eax@5 signed int v12; // edi@5 int v13; // ecx@8 int v14; // edx@8 int v15; // ecx@10 int v16; // edx@10 int v17; // eax@10 int v18; // ecx@11 int v19; // edx@11 int v20; // eax@12 int v21; // ebx@12 int v22; // ecx@12 int v23; // edi@12 int v24; // eax@12 int v25; // ecx@12 int v26; // eax@12 int v27; // ecx@12 int v28; // edi@13 int v29; // edx@13 unsigned int v30; // eax@13 int v31; // ecx@17 int v32; // edx@18 int v33; // ecx@19 int v34; // edx@19 int v35; // eax@19 int v36; // edi@20 int v37; // eax@23 int v38; // edx@23 unsigned int v39; // edi@24 signed int v40; // ecx@24 int v41; // eax@24 int v42; // edx@25 unsigned int v43; // ecx@29 signed int v44; // edx@32 int v45; // ecx@33 int v46; // eax@36 int v47; // eax@36 int v48; // ecx@36 __int16 v49; // di@36 int v50; // eax@36 int v51; // ecx@37 signed int v52; // edx@39 int v53; // eax@41 unsigned int v54; // eax@42 int v55; // ecx@46 int v56; // edx@46 int v57; // ecx@47 int v58; // edx@47 int v59; // edi@50 int v60; // ecx@50 int v61; // eax@50 int v62; // edx@52 int v63; // ebx@55 int v64; // eax@59 int v65; // ecx@59 int v66; // edx@60 int v67; // ebx@63 int v68; // eax@67 int v69; // ecx@67 int v70; // edx@68 int v71; // ebx@71 int v72; // eax@75 int v73; // ecx@75 int v74; // edx@76 int v75; // ebx@79 bool v76; // zf@83 int v77; // ecx@84 int v78; // edx@84 int v79; // eax@84 int v80; // edx@86 int v81; // ebx@86 signed int v82; // edi@86 __int16 v83; // [sp+10h] [bp-14h]@23 int v84; // [sp+10h] [bp-14h]@86 int v85; // [sp+14h] [bp-10h]@27 int v86; // [sp+18h] [bp-Ch]@26 signed int v87; // [sp+18h] [bp-Ch]@50 signed int v88; // [sp+18h] [bp-Ch]@86 int v89; // [sp+1Ch] [bp-8h]@23 signed __int16 v90; // [sp+1Ch] [bp-8h]@47 char v91; // [sp+23h] [bp-1h]@50 unsigned __int8 v92; // [sp+23h] [bp-1h]@59 unsigned __int8 v93; // [sp+23h] [bp-1h]@67 unsigned __int8 v94; // [sp+23h] [bp-1h]@75 v1 = this; v2 = *(_DWORD *)(this + 12028); v3 = *(_DWORD *)(v1 + 8); v4 = *(_DWORD *)(v1 + 12032); *(_DWORD *)(v1 + 7896) = 0; *(_DWORD *)(v1 + 12040) = 0; if ( v2 >= v3 || v4 >= v3 || (unsigned __int8)(1 << (v2 - 8 * (v2 >> 3))) & *(_BYTE *)(*(_DWORD *)(v1 + 16) + v4 * *(_DWORD *)(v1 + 12) + (v2 >> 3)) ) { v5 = *(_DWORD *)(v1 + 12020); v6 = *(_DWORD *)(v1 + 12032); *(_DWORD *)(v1 + 7768) = *(_DWORD *)(v1 + 12028); v7 = *(_DWORD *)(v1 + 12024); *(_DWORD *)(v1 + 7724) = v5; *(_DWORD *)(v1 + 7772) = v6; *(_DWORD *)(v1 + 7728) = v7; if ( !sub_62F580(v1) ) { v13 = *(_DWORD *)(v1 + 12020); v14 = *(_DWORD *)(v1 + 12024); result = 1; *(_DWORD *)(v1 + 12036) = 0; *(_DWORD *)(v1 + 12040) = 1; *(_DWORD *)(v1 + 12028) = v13; *(_DWORD *)(v1 + 12032) = v14; *(_DWORD *)(v1 + 12048) = v13; *(_DWORD *)(v1 + 12052) = v14; *(_DWORD *)(v1 + 12044) = 1; return result; } v8 = *(_DWORD *)(v1 + 7732); v9 = *(_DWORD *)(v1 + 7736); v10 = v8; *(_DWORD *)(v1 + 12028) = v8; result = v9; *(_DWORD *)(v1 + 12032) = v9; v12 = 1; *(_DWORD *)(v1 + 12048) = v10; *(_DWORD *)(v1 + 12052) = v9; *(_DWORD *)(v1 + 12040) = 1; if ( v10 == *(_DWORD *)(v1 + 12020) && v9 == *(_DWORD *)(v1 + 12024) ) { *(_DWORD *)(v1 + 12044) = 1; *(_DWORD *)(v1 + 12036) = 0; return result; } } else { v12 = 1; } v15 = *(_DWORD *)(v1 + 12024); v16 = *(_DWORD *)(v1 + 12028); *(_DWORD *)(v1 + 7768) = *(_DWORD *)(v1 + 12020); v17 = *(_DWORD *)(v1 + 12032); *(_DWORD *)(v1 + 7772) = v15; *(_DWORD *)(v1 + 7724) = v16; *(_DWORD *)(v1 + 7728) = v17; result = sub_62F270(v1); if ( result ) { sub_62F410(v1); v20 = *(_DWORD *)(v1 + 12020); v21 = *(_DWORD *)(v1 + 12024); v22 = *(_DWORD *)(v1 + 12024); *(_DWORD *)(v1 + 28) = v20; *(_DWORD *)(v1 + 7708) = v12; v23 = v20; v24 = v21 - *(_DWORD *)(v1 + 12032); *(_DWORD *)(v1 + 32) = v22; *(_DWORD *)(v1 + 7760) = v24; v25 = v23 - *(_DWORD *)(v1 + 12028); *(_DWORD *)(v1 + 7756) = v25; *(_WORD *)(v1 + 6172) = abs(v25) + abs(v24); sub_62F510(v1, v23, v21, 1); v26 = *(_DWORD *)(v1 + 12024); v27 = *(_DWORD *)(v1 + 12020); *(_DWORD *)(v1 + 7724) = v27; *(_DWORD *)(v1 + 7728) = v26; *(_DWORD *)(v1 + 7732) = v27; *(_DWORD *)(v1 + 7736) = v26; *(_WORD *)(v1 + 7742) = 1; *(_DWORD *)(v1 + 12036) = 0; *(_WORD *)(v1 + 7720) = -1; do { v28 = *(_DWORD *)(v1 + 7708); v29 = 0; v30 = 0; *(_DWORD *)(v1 + 7752) = 0; if ( v28 ) { do { if ( *(_WORD *)(v1 + 2 * v30 + 6172) < *(_WORD *)(v29 + v1 + 6172) ) { v29 = 2 * v30; *(_DWORD *)(v1 + 7752) = v30; } ++v30; } while ( v30 < *(_DWORD *)(v1 + 7708) ); } v31 = *(_DWORD *)(v1 + 7752); *(_DWORD *)(v1 + 7724) = *(_DWORD *)(v1 + 8 * v31 + 28); *(_DWORD *)(v1 + 7728) = *(_DWORD *)(v1 + 8 * v31 + 32); if ( *(_WORD *)(v1 + 2 * v31 + 6172) < *(_WORD *)(v1 + 7720) ) { v32 = *(_DWORD *)(v1 + 7728); *(_DWORD *)(v1 + 7712) = *(_DWORD *)(v1 + 7724); *(_DWORD *)(v1 + 7716) = v32; *(_WORD *)(v1 + 7720) = *(_WORD *)(v1 + 2 * v31 + 6172); } *(_DWORD *)(v1 + 7708) = v28 - 1; *(_DWORD *)(v1 + 8 * v31 + 28) = *(_DWORD *)(v1 + 8 * (v28 - 1) + 28); *(_DWORD *)(v1 + 8 * v31 + 32) = *(_DWORD *)(v1 + 8 * (v28 - 1) + 32); *(_WORD *)(v1 + 2 * *(_DWORD *)(v1 + 7752) + 6172) = *(_WORD *)(v1 + 2 * *(_DWORD *)(v1 + 7708) + 6172); v33 = *(_DWORD *)(v1 + 7724); v34 = *(_DWORD *)(v1 + 11996); v35 = *(_DWORD *)(v1 + 7728); if ( v34 <= v33 ) { v36 = *(_DWORD *)(v1 + 12000); if ( v36 <= v35 ) { if ( v34 + *(_DWORD *)(v1 + 12004) > v33 && v36 + *(_DWORD *)(v1 + 12008) > v35 ) { v37 = *(_DWORD *)(v1 + 12004) * (v35 - v36) - v34; v38 = *(_DWORD *)(v1 + 7724); v83 = *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * (v33 + v37)) + 1; *(_DWORD *)(v1 + 7736) = *(_DWORD *)(v1 + 7728); --*(_DWORD *)(v1 + 7736); *(_DWORD *)(v1 + 7732) = v38; *(_BYTE *)(v1 + 7740) = 2; v89 = 0; do { v39 = *(_DWORD *)(v1 + 7732); v40 = *(_DWORD *)(v1 + 11996); v41 = *(_DWORD *)(v1 + 7736); if ( v40 <= (signed int)v39 ) { v42 = *(_DWORD *)(v1 + 12000); if ( v42 <= v41 ) { v86 = v40 + *(_DWORD *)(v1 + 12004); if ( v86 > (signed int)v39 ) { v85 = v42 + *(_DWORD *)(v1 + 12008); if ( v85 > v41 ) { if ( *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * (v39 + *(_DWORD *)(v1 + 12004) * (v41 - v42) - v40)) == -1 ) { v43 = *(_DWORD *)(v1 + 8); if ( v39 < v43 ) { if ( v41 < v43 ) { if ( !((unsigned __int8)(1 << (v39 - 8 * (v39 >> 3))) & *(_BYTE *)(*(_DWORD *)(v1 + 16) + v41 * *(_DWORD *)(v1 + 12) + (v39 >> 3))) ) { v44 = *(_DWORD *)(v1 + 11996); if ( v44 <= (signed int)v39 ) { v45 = *(_DWORD *)(v1 + 12000); if ( v45 <= v41 ) { if ( v86 > (signed int)v39 ) { if ( v85 > v41 ) { *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * (v39 + *(_DWORD *)(v1 + 12004) * (v41 - v45) - v44)) = v83; v46 = *(_DWORD *)(v1 + 7708); *(_DWORD *)(v1 + 8 * v46 + 28) = *(_DWORD *)(v1 + 7732); *(_DWORD *)(v1 + 8 * v46 + 32) = *(_DWORD *)(v1 + 7736); v47 = *(_DWORD *)(v1 + 7736) - *(_DWORD *)(v1 + 12032); v48 = *(_DWORD *)(v1 + 7732) - *(_DWORD *)(v1 + 12028); *(_DWORD *)(v1 + 7760) = v47; v49 = abs(v47); v50 = *(_DWORD *)(v1 + 7708); *(_DWORD *)(v1 + 7756) = v48; *(_WORD *)(v1 + 2 * v50 + 6172) = abs(v48) + v49; ++*(_DWORD *)(v1 + 7708); if ( *(_DWORD *)(v1 + 7708) >= 0x300u ) break; } } } } } } } } } } } } v51 = *(_DWORD *)(v1 + 7732); if ( v51 != *(_DWORD *)(v1 + 12028) || *(_DWORD *)(v1 + 7736) != *(_DWORD *)(v1 + 12032) ) { v52 = v89; } else { *(_DWORD *)(v1 + 12036) = 1; v52 = 7; } v53 = *(_BYTE *)(v1 + 7740); *(_DWORD *)(v1 + 7732) = v51 + *(_DWORD *)(v1 + 4 * v53 + 7792); *(_DWORD *)(v1 + 7736) += *(_DWORD *)(v1 + 4 * v53 + 7844); *(_BYTE *)(v1 + 7740) = *(_BYTE *)(v53 + v1 + 7776); v89 = v52 + 1; } while ( (unsigned int)(v52 + 1) < 8 ); } } } v54 = *(_DWORD *)(v1 + 7708); if ( v54 >= 0x300 ) break; if ( *(_DWORD *)(v1 + 12036) ) goto LABEL_47; } while ( v54 ); if ( !*(_DWORD *)(v1 + 12036) ) { v55 = *(_DWORD *)(v1 + 7712); v56 = *(_DWORD *)(v1 + 7716); *(_DWORD *)(v1 + 12040) = 1; *(_DWORD *)(v1 + 12028) = v55; *(_DWORD *)(v1 + 12032) = v56; } LABEL_47: v57 = *(_DWORD *)(v1 + 12032); v58 = *(_DWORD *)(v1 + 12028); *(_DWORD *)(v1 + 7732) = v58; *(_DWORD *)(v1 + 7736) = v57; *(_DWORD *)(v1 + 7900) = v58; *(_DWORD *)(v1 + 7904) = v57; v90 = -1; *(_DWORD *)(v1 + 7896) = 1; while ( *(_DWORD *)(v1 + 7732) != *(_DWORD *)(v1 + 12020) || *(_DWORD *)(v1 + 7736) != *(_DWORD *)(v1 + 12024) ) { --*(_DWORD *)(v1 + 7736); *(_BYTE *)(v1 + 7740) = 2; v59 = *(_DWORD *)(v1 + 11996); v60 = *(_DWORD *)(v1 + 7736); v61 = *(_DWORD *)(v1 + 7732); v91 = 2; v87 = 2; do { if ( v59 <= v61 ) { v62 = *(_DWORD *)(v1 + 12000); if ( v62 <= v60 ) { if ( v59 + *(_DWORD *)(v1 + 12004) > v61 ) { if ( v62 + *(_DWORD *)(v1 + 12008) > v60 ) { v63 = v61 + *(_DWORD *)(v1 + 12004) * (v60 - v62) - v59; if ( *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v63) < (unsigned __int16)v90 ) { if ( (unsigned int)v61 < *(_DWORD *)(v1 + 20) && (unsigned int)v60 < *(_DWORD *)(v1 + 24) ) { v90 = *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v63); *(_DWORD *)(v1 + 7744) = *(_DWORD *)(v1 + 7732); *(_DWORD *)(v1 + 7748) = *(_DWORD *)(v1 + 7736); } } } } } } v64 = *(_DWORD *)(v1 + 4 * (unsigned __int8)v91 + 7792) + v61; *(_DWORD *)(v1 + 7732) = v64; v65 = *(_DWORD *)(v1 + 4 * (unsigned __int8)v91 + 7844) + v60; *(_DWORD *)(v1 + 7736) = v65; v92 = *(_BYTE *)((unsigned __int8)v91 + v1 + 7776); *(_BYTE *)(v1 + 7740) = v92; if ( v59 <= v64 ) { v66 = *(_DWORD *)(v1 + 12000); if ( v66 <= v65 ) { if ( v59 + *(_DWORD *)(v1 + 12004) > v64 ) { if ( v66 + *(_DWORD *)(v1 + 12008) > v65 ) { v67 = v64 + *(_DWORD *)(v1 + 12004) * (v65 - v66) - v59; if ( *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v67) < (unsigned __int16)v90 ) { if ( (unsigned int)v64 < *(_DWORD *)(v1 + 20) && (unsigned int)v65 < *(_DWORD *)(v1 + 24) ) { v90 = *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v67); *(_DWORD *)(v1 + 7744) = v64; *(_DWORD *)(v1 + 7748) = v65; } } } } } } v68 = *(_DWORD *)(v1 + 4 * v92 + 7792) + v64; *(_DWORD *)(v1 + 7732) = v68; v69 = *(_DWORD *)(v1 + 4 * v92 + 7844) + v65; *(_DWORD *)(v1 + 7736) = v69; v93 = *(_BYTE *)(v92 + v1 + 7776); *(_BYTE *)(v1 + 7740) = v93; if ( v59 <= v68 ) { v70 = *(_DWORD *)(v1 + 12000); if ( v70 <= v69 ) { if ( v59 + *(_DWORD *)(v1 + 12004) > v68 ) { if ( v70 + *(_DWORD *)(v1 + 12008) > v69 ) { v71 = v68 + *(_DWORD *)(v1 + 12004) * (v69 - v70) - v59; if ( *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v71) < (unsigned __int16)v90 ) { if ( (unsigned int)v68 < *(_DWORD *)(v1 + 20) && (unsigned int)v69 < *(_DWORD *)(v1 + 24) ) { v90 = *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v71); *(_DWORD *)(v1 + 7744) = v68; *(_DWORD *)(v1 + 7748) = v69; } } } } } } v72 = *(_DWORD *)(v1 + 4 * v93 + 7792) + v68; *(_DWORD *)(v1 + 7732) = v72; v73 = *(_DWORD *)(v1 + 4 * v93 + 7844) + v69; *(_DWORD *)(v1 + 7736) = v73; v94 = *(_BYTE *)(v93 + v1 + 7776); *(_BYTE *)(v1 + 7740) = v94; if ( v59 <= v72 ) { v74 = *(_DWORD *)(v1 + 12000); if ( v74 <= v73 ) { if ( v59 + *(_DWORD *)(v1 + 12004) > v72 ) { if ( v74 + *(_DWORD *)(v1 + 12008) > v73 ) { v75 = v72 + *(_DWORD *)(v1 + 12004) * (v73 - v74) - v59; if ( *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v75) < (unsigned __int16)v90 ) { if ( (unsigned int)v72 < *(_DWORD *)(v1 + 20) && (unsigned int)v73 < *(_DWORD *)(v1 + 24) ) { v90 = *(_WORD *)(*(_DWORD *)(v1 + 12012) + 2 * v75); *(_DWORD *)(v1 + 7744) = v72; *(_DWORD *)(v1 + 7748) = v73; } } } } } } v61 = *(_DWORD *)(v1 + 4 * v94 + 7792) + v72; *(_DWORD *)(v1 + 7732) = v61; v60 = *(_DWORD *)(v1 + 4 * v94 + 7844) + v73; v76 = v87-- == 1; *(_DWORD *)(v1 + 7736) = v60; v91 = *(_BYTE *)(v94 + v1 + 7776); *(_BYTE *)(v1 + 7740) = v91; } while ( !v76 ); v77 = *(_DWORD *)(v1 + 7748); v78 = *(_DWORD *)(v1 + 7744); *(_DWORD *)(v1 + 7732) = *(_DWORD *)(v1 + 7744); v79 = *(_DWORD *)(v1 + 7896); *(_DWORD *)(v1 + 7736) = v77; *(_DWORD *)(v1 + 8 * v79 + 7900) = v78; *(_DWORD *)(v1 + 8 * v79 + 7904) = *(_DWORD *)(v1 + 7748); ++*(_DWORD *)(v1 + 7896); if ( *(_DWORD *)(v1 + 7896) >= 512 ) { *(_DWORD *)(v1 + 12036) = 0; break; } } result = *(_DWORD *)(v1 + 7896); v80 = *(_DWORD *)(v1 + 12024); v81 = *(_DWORD *)(v1 + 12020); v82 = 0; *(_DWORD *)(v1 + 12044) = 0; v84 = v80; v88 = result; while ( v82 < v88 ) { *(_DWORD *)(v1 + 7768) = v81; *(_DWORD *)(v1 + 7772) = v84; *(_DWORD *)(v1 + 7724) = *(_DWORD *)(v1 + 8 * v82 + 7900); *(_DWORD *)(v1 + 7728) = *(_DWORD *)(v1 + 8 * v82 + 7904); result = sub_62F270(v1); if ( result ) { ++v82; } else { v81 = *(_DWORD *)(v1 + 8 * v82 + 7900); v84 = *(_DWORD *)(v1 + 8 * v82 + 7904); result = *(_DWORD *)(v1 + 12044); *(_DWORD *)(v1 + 8 * result + 12048) = v81; *(_DWORD *)(v1 + 8 * result + 12052) = *(_DWORD *)(v1 + 8 * v82 + 7904); ++*(_DWORD *)(v1 + 12044); v88 = v82; v82 = 0; } } } else { v18 = *(_DWORD *)(v1 + 12028); v19 = *(_DWORD *)(v1 + 12032); *(_DWORD *)(v1 + 12036) = v12; *(_DWORD *)(v1 + 12044) = v12; *(_DWORD *)(v1 + 12048) = v18; *(_DWORD *)(v1 + 12052) = v19; } return result; } //----- (006302B0) -------------------------------------------------------- char __thiscall sub_6302B0(int this) { int v1; // ebx@1 int v2; // ecx@1 int v3; // edx@1 char result; // al@1 int v5; // [sp+Ch] [bp-78h]@1 int v6; // [sp+10h] [bp-74h]@1 int v7; // [sp+14h] [bp-70h]@1 int v8; // [sp+18h] [bp-6Ch]@1 int v9; // [sp+1Ch] [bp-68h]@1 int v10; // [sp+20h] [bp-64h]@1 int v11; // [sp+24h] [bp-60h]@1 int v12; // [sp+28h] [bp-5Ch]@1 int v13; // [sp+2Ch] [bp-58h]@1 int v14; // [sp+30h] [bp-54h]@1 int v15; // [sp+34h] [bp-50h]@1 int v16; // [sp+38h] [bp-4Ch]@1 int v17; // [sp+3Ch] [bp-48h]@1 int v18; // [sp+40h] [bp-44h]@1 int v19; // [sp+44h] [bp-40h]@1 int v20; // [sp+48h] [bp-3Ch]@1 int v21; // [sp+4Ch] [bp-38h]@1 int v22; // [sp+50h] [bp-34h]@1 int v23; // [sp+54h] [bp-30h]@1 int v24; // [sp+58h] [bp-2Ch]@1 int v25; // [sp+5Ch] [bp-28h]@1 int v26; // [sp+60h] [bp-24h]@1 int v27; // [sp+64h] [bp-20h]@1 int v28; // [sp+68h] [bp-1Ch]@1 int v29; // [sp+6Ch] [bp-18h]@1 int v30; // [sp+70h] [bp-14h]@1 int v31; // [sp+74h] [bp-10h]@1 int v32; // [sp+78h] [bp-Ch]@1 int v33; // [sp+7Ch] [bp-8h]@1 v1 = this; v20 = 1; v27 = 1; v7 = 1; v9 = 1; v31 = (int)&unk_6040300; v32 = 786440; v33 = 513; v18 = 0; v19 = 0; v21 = 2; v22 = -1; v23 = 0; v24 = 0; v25 = 0; v26 = -1; v28 = 0; v29 = 0; v30 = -2; v5 = 0; v6 = -1; v8 = 0; v10 = 0; v11 = 2; v12 = 0; v13 = -1; v14 = -2; v15 = 0; v16 = 0; v17 = 0; *(_DWORD *)(this + 7896) = 0; *(_DWORD *)(this + 12044) = 0; *(_DWORD *)(this + 12012) = 0; sub_62F390(this, 256, 256); v2 = v32; v3 = v33; *(_DWORD *)(v1 + 7776) = v31; *(_DWORD *)(v1 + 7780) = v2; memcpy((void *)(v1 + 7792), &v18, 0x34u); memcpy((void *)(v1 + 7844), &v5, 0x34u); *(_DWORD *)(v1 + 7784) = v3; result = 9; *(_BYTE *)(v1 + 7788) = 9; return result; } //----- (006303A0) -------------------------------------------------------- int __thiscall sub_6303A0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 16) = 0; sub_6302B0(this); return v1; } //----- (006303C0) -------------------------------------------------------- char __thiscall sub_6303C0(void *this, int a2) { unsigned __int16 v2; // ax@1 char result; // al@2 v2 = *(_WORD *)this; if ( *(_WORD *)this >= 0x1F40u ) { if ( v2 >= 0x251Cu ) { if ( v2 < 0x251Cu || v2 >= 0x2904u ) { if ( v2 < 0x2904u || v2 >= 0x34BCu ) { if ( v2 < 0x34BCu || v2 >= 0x42BCu ) { if ( v2 < 0x42BCu || v2 >= 0x43BCu ) { if ( v2 < 0x43BCu || v2 >= 0x4BBCu ) { if ( v2 < 0x4BBCu || v2 >= 0x4FA4u ) { if ( v2 < 0x4FA4u || v2 >= 0x509Eu ) { if ( v2 < 0x509Eu || v2 >= 0x5486u ) { if ( v2 < 0x5486u || v2 >= 0x567Au ) { if ( v2 < 0x567Au || v2 >= 0x5A62u ) { if ( v2 < 0x5C56u || v2 >= 0x6232u ) { *(_WORD *)a2 = -1; result = -1; } else { *(_WORD *)a2 = v2 - 23638; result = 12; } } else { *(_WORD *)a2 = v2 - 22138; result = 11; } } else { *(_WORD *)a2 = v2 - 21638; result = 10; } } else { *(_WORD *)a2 = v2 - 20638; result = 7; } } else { *(_WORD *)a2 = v2 - 20388; result = 6; } } else { *(_WORD *)a2 = v2 - 19388; result = 9; } } else { *(_WORD *)a2 = v2 - 17340; result = 8; } } else { *(_WORD *)a2 = v2 - 17084; result = 4; } } else { *(_WORD *)a2 = v2 - 13500; result = 0; } } else { *(_WORD *)a2 = v2 - 10500; result = 1; } } else { *(_WORD *)a2 = v2 - 9500; result = 3; } } else { *(_WORD *)a2 = v2 - 8000; result = 2; } } else { *(_WORD *)a2 = v2; result = 5; } return result; } //----- (006305A0) -------------------------------------------------------- char __stdcall sub_6305A0(int a1, int a2) { signed int v3; // edx@4 unsigned __int8 v4; // cl@5 int v5; // ecx@8 int v6; // edx@8 int v7; // ecx@8 if ( a1 && a2 ) { v3 = 0; while ( 1 ) { v4 = *(_BYTE *)(v3 + a1); if ( v4 < 1u ) break; if ( v4 > 6u ) break; ++v3; if ( v3 >= 3 ) { *(_DWORD *)a2 = 0; v5 = 6 * *(_DWORD *)a2; *(_DWORD *)a2 = v5; v6 = 6 * (v5 + *(_BYTE *)a1) - 6; *(_DWORD *)a2 = v6; v7 = 6 * (v6 + *(_BYTE *)(a1 + 1)) - 6; *(_DWORD *)a2 = v7; *(_DWORD *)a2 = *(_BYTE *)(a1 + 2) + v7 - 1; return 1; } } } return 0; } //----- (00630610) -------------------------------------------------------- char __stdcall sub_630610(unsigned __int64 a1) { char result; // al@2 if ( a1 > 0xD7 ) { result = 0; } else { *(_BYTE *)(HIDWORD(a1) + 2) = (signed int)a1 % 6 + 1; *(_BYTE *)(HIDWORD(a1) + 1) = (signed int)a1 / 6 % 6 + 1; *HIDWORD(a1) = (signed int)a1 / 6 / 6 % 6 + 1; result = 1; } return result; } //----- (00630690) -------------------------------------------------------- char __thiscall sub_630690(void *this, unsigned int a2, int a3) { signed int v4; // eax@4 char *v5; // eax@6 char v6; // bl@6 int v7; // ecx@16 int v8; // edi@17 int v9; // ecx@18 int v10; // edi@19 int v11; // ecx@21 int v12; // ecx@22 int v13; // edi@24 signed int v14; // esi@24 signed int v15; // ecx@25 int v16; // edi@33 signed int v17; // esi@33 signed int v18; // ecx@34 int v19; // edi@42 signed int v20; // esi@42 signed int v21; // ecx@43 int v22; // edi@51 signed int v23; // esi@51 signed int v24; // ecx@52 int v25; // edi@60 signed int v26; // esi@60 signed int v27; // ecx@61 int v28; // edi@69 signed int v29; // esi@69 signed int v30; // ecx@70 int v31; // edi@78 signed int v32; // esi@78 signed int v33; // ecx@79 int v34; // edi@87 signed int v35; // esi@87 signed int v36; // ecx@88 int v37; // edi@96 signed int v38; // esi@96 signed int v39; // ecx@97 int v40; // edi@105 signed int v41; // esi@105 signed int v42; // ecx@106 int v43; // edi@114 signed int v44; // esi@114 signed int v45; // ecx@115 int v46; // edi@123 signed int v47; // esi@123 signed int v48; // ecx@124 int v49; // edi@132 signed int v50; // esi@132 signed int v51; // ecx@133 int v52; // edi@141 signed int v53; // esi@141 signed int v54; // ecx@142 int v55; // edi@150 signed int v56; // esi@150 signed int v57; // ecx@151 char v58; // bl@157 signed int v59; // edx@159 int v60; // ecx@166 signed int v61; // edx@167 int v62; // ecx@174 signed int v63; // edx@175 int v64; // ecx@182 signed int v65; // edx@183 int v66; // ecx@190 signed int v67; // edx@191 int v68; // ecx@198 signed int v69; // edx@199 int v70; // ecx@206 int v71; // [sp+0h] [bp-8h]@24 int v72; // [sp+4h] [bp-4h]@24 char v73; // [sp+13h] [bp+Bh]@6 if ( a2 > 0xD7 ) return 0; if ( !a3 ) return 0; v4 = 0; do { *(_BYTE *)a3 = 0; *(_BYTE *)(v4 + a3 + 4) = 0; v4 += 8; } while ( v4 < 96 ); v5 = (char *)this + 22 * a2; v6 = 0; v73 = 0; if ( v5[3] == 1 ) { *(_DWORD *)(a3 + 8) = 0; } else { if ( v5[3] != 2 ) goto LABEL_11; *(_DWORD *)(a3 + 8) = 1; } v6 = 1; v73 = 1; LABEL_11: if ( v5[4] == 1 ) { *(_DWORD *)(a3 + 8 * (unsigned __int8)v6 + 8) = 2; } else { if ( v5[4] != 2 ) goto LABEL_16; *(_DWORD *)(a3 + 8 * (unsigned __int8)v6 + 8) = 3; } ++v6; v73 = v6; LABEL_16: v7 = v5[5]; if ( v7 > 0 ) { v8 = (unsigned __int8)v6++; *(_DWORD *)(a3 + 8 * v8 + 8) = v7 + 3; v73 = v6; } v9 = v5[6]; if ( v9 > 0 ) { v10 = (unsigned __int8)v6++; *(_DWORD *)(a3 + 8 * v10 + 8) = v9 + 9; v73 = v6; } if ( 2 * (v5[6] > 0) - 1 > 0 ) { v11 = (unsigned __int8)v6++; *(_DWORD *)(a3 + 8 * v11 + 8) = 16; v73 = v6; } v12 = v5[7]; if ( v12 > 0 ) { *(_DWORD *)(a3 + 8 * (unsigned __int8)v6 + 8) = v12 + 13; v73 = v6 + 1; } v13 = 0; v71 = 1; v72 = 2; v14 = 0; do { v15 = 0; while ( v5[v15] != *(&v71 + v14) ) { ++v15; if ( v15 >= 3 ) goto LABEL_30; } ++v13; LABEL_30: ++v14; } while ( v14 < 2 ); if ( v13 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 31; v16 = 0; v71 = 1; v72 = 3; v17 = 0; do { v18 = 0; while ( v5[v18] != *(&v71 + v17) ) { ++v18; if ( v18 >= 3 ) goto LABEL_39; } ++v16; LABEL_39: ++v17; } while ( v17 < 2 ); if ( v16 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 32; v19 = 0; v71 = 1; v72 = 4; v20 = 0; do { v21 = 0; while ( v5[v21] != *(&v71 + v20) ) { ++v21; if ( v21 >= 3 ) goto LABEL_48; } ++v19; LABEL_48: ++v20; } while ( v20 < 2 ); if ( v19 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 33; v22 = 0; v71 = 1; v72 = 5; v23 = 0; do { v24 = 0; while ( v5[v24] != *(&v71 + v23) ) { ++v24; if ( v24 >= 3 ) goto LABEL_57; } ++v22; LABEL_57: ++v23; } while ( v23 < 2 ); if ( v22 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 34; v25 = 0; v71 = 1; v72 = 6; v26 = 0; do { v27 = 0; while ( v5[v27] != *(&v71 + v26) ) { ++v27; if ( v27 >= 3 ) goto LABEL_66; } ++v25; LABEL_66: ++v26; } while ( v26 < 2 ); if ( v25 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 35; v28 = 0; v71 = 2; v72 = 3; v29 = 0; do { v30 = 0; while ( v5[v30] != *(&v71 + v29) ) { ++v30; if ( v30 >= 3 ) goto LABEL_75; } ++v28; LABEL_75: ++v29; } while ( v29 < 2 ); if ( v28 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 36; v31 = 0; v71 = 2; v72 = 4; v32 = 0; do { v33 = 0; while ( v5[v33] != *(&v71 + v32) ) { ++v33; if ( v33 >= 3 ) goto LABEL_84; } ++v31; LABEL_84: ++v32; } while ( v32 < 2 ); if ( v31 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 37; v34 = 0; v71 = 2; v72 = 5; v35 = 0; do { v36 = 0; while ( v5[v36] != *(&v71 + v35) ) { ++v36; if ( v36 >= 3 ) goto LABEL_93; } ++v34; LABEL_93: ++v35; } while ( v35 < 2 ); if ( v34 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 38; v37 = 0; v71 = 2; v72 = 6; v38 = 0; do { v39 = 0; while ( v5[v39] != *(&v71 + v38) ) { ++v39; if ( v39 >= 3 ) goto LABEL_102; } ++v37; LABEL_102: ++v38; } while ( v38 < 2 ); if ( v37 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 39; v40 = 0; v71 = 3; v72 = 4; v41 = 0; do { v42 = 0; while ( v5[v42] != *(&v71 + v41) ) { ++v42; if ( v42 >= 3 ) goto LABEL_111; } ++v40; LABEL_111: ++v41; } while ( v41 < 2 ); if ( v40 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 40; v43 = 0; v71 = 3; v72 = 5; v44 = 0; do { v45 = 0; while ( v5[v45] != *(&v71 + v44) ) { ++v45; if ( v45 >= 3 ) goto LABEL_120; } ++v43; LABEL_120: ++v44; } while ( v44 < 2 ); if ( v43 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 41; v46 = 0; v71 = 3; v72 = 6; v47 = 0; do { v48 = 0; while ( v5[v48] != *(&v71 + v47) ) { ++v48; if ( v48 >= 3 ) goto LABEL_129; } ++v46; LABEL_129: ++v47; } while ( v47 < 2 ); if ( v46 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 42; v49 = 0; v71 = 4; v72 = 5; v50 = 0; do { v51 = 0; while ( v5[v51] != *(&v71 + v50) ) { ++v51; if ( v51 >= 3 ) goto LABEL_138; } ++v49; LABEL_138: ++v50; } while ( v50 < 2 ); if ( v49 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 43; v52 = 0; v71 = 4; v72 = 6; v53 = 0; do { v54 = 0; while ( v5[v54] != *(&v71 + v53) ) { ++v54; if ( v54 >= 3 ) goto LABEL_147; } ++v52; LABEL_147: ++v53; } while ( v53 < 2 ); if ( v52 == 2 ) *(_DWORD *)(a3 + 8 * (unsigned __int8)v73++ + 8) = 44; v55 = 0; v71 = 5; v72 = 6; v56 = 0; do { v57 = 0; while ( v5[v57] != *(&v71 + v56) ) { ++v57; if ( v57 >= 3 ) goto LABEL_156; } ++v55; LABEL_156: ++v56; } while ( v56 < 2 ); v58 = v73; if ( v55 == 2 ) { *(_DWORD *)(a3 + 8 * (unsigned __int8)v73 + 8) = 45; v58 = v73 + 1; } v59 = 0; if ( *v5 == 1 ) v59 = 1; if ( v5[1] == 1 ) ++v59; if ( v5[2] == 1 ) ++v59; if ( v59 > 0 ) { v60 = a3 + 8 * (unsigned __int8)v58; *(_BYTE *)(v60 + 4) = v59; *(_DWORD *)(v60 + 8) = 46; ++v58; } v61 = 0; if ( *v5 == 2 ) v61 = 1; if ( v5[1] == 2 ) ++v61; if ( v5[2] == 2 ) ++v61; if ( v61 > 0 ) { v62 = a3 + 8 * (unsigned __int8)v58; *(_BYTE *)(v62 + 4) = v61; *(_DWORD *)(v62 + 8) = 47; ++v58; } v63 = 0; if ( *v5 == 3 ) v63 = 1; if ( v5[1] == 3 ) ++v63; if ( v5[2] == 3 ) ++v63; if ( v63 > 0 ) { v64 = a3 + 8 * (unsigned __int8)v58; *(_BYTE *)(v64 + 4) = v63; *(_DWORD *)(v64 + 8) = 48; ++v58; } v65 = 0; if ( *v5 == 4 ) v65 = 1; if ( v5[1] == 4 ) ++v65; if ( v5[2] == 4 ) ++v65; if ( v65 > 0 ) { v66 = a3 + 8 * (unsigned __int8)v58; *(_BYTE *)(v66 + 4) = v65; *(_DWORD *)(v66 + 8) = 49; ++v58; } v67 = 0; if ( *v5 == 5 ) v67 = 1; if ( v5[1] == 5 ) ++v67; if ( v5[2] == 5 ) ++v67; if ( v67 > 0 ) { v68 = a3 + 8 * (unsigned __int8)v58; *(_BYTE *)(v68 + 4) = v67; *(_DWORD *)(v68 + 8) = 50; ++v58; } v69 = 0; if ( *v5 == 6 ) v69 = 1; if ( v5[1] == 6 ) ++v69; if ( v5[2] == 6 ) ++v69; if ( v69 > 0 ) { v70 = a3 + 8 * (unsigned __int8)v58; *(_BYTE *)(v70 + 4) = v69; *(_DWORD *)(v70 + 8) = 51; ++v58; } *(_BYTE *)a3 = v58; return 1; } //----- (00630D70) -------------------------------------------------------- void *__thiscall sub_630D70(void *this) { void *result; // eax@1 signed int v2; // ecx@1 result = this; v2 = 0; do { *((_WORD *)result + v2) = 0; *((_BYTE *)result + v2++ + 30) = 0; } while ( v2 < 15 ); *((_DWORD *)result + 16) = 2; *((_DWORD *)result + 17) = 2; *((_DWORD *)result + 18) = 2; *((_DWORD *)result + 19) = 2; *((_DWORD *)result + 20) = 2; *((_DWORD *)result + 21) = 2; *((_DWORD *)result + 22) = 3; *((_DWORD *)result + 23) = 3; *((_DWORD *)result + 24) = 3; *((_DWORD *)result + 25) = 3; *((_DWORD *)result + 26) = 3; *((_DWORD *)result + 27) = 3; *((_DWORD *)result + 34) = 10; *((_DWORD *)result + 35) = 10; *((_DWORD *)result + 36) = 10; *((_DWORD *)result + 37) = 10; *((_DWORD *)result + 12) = 0; *((_DWORD *)result + 13) = 0; *((_DWORD *)result + 43) = 11; *((_DWORD *)result + 44) = 11; *((_DWORD *)result + 45) = 11; *((_DWORD *)result + 46) = 11; *((_DWORD *)result + 47) = 11; *((_DWORD *)result + 48) = 11; *((_DWORD *)result + 49) = 11; *((_DWORD *)result + 50) = 11; *((_DWORD *)result + 51) = 11; *((_DWORD *)result + 52) = 11; *((_DWORD *)result + 53) = 11; *((_DWORD *)result + 54) = 11; *((_DWORD *)result + 55) = 11; *((_DWORD *)result + 56) = 11; *((_DWORD *)result + 57) = 11; *((_DWORD *)result + 31) = 7; *((_DWORD *)result + 40) = 7; *((_DWORD *)result + 14) = 1; *((_DWORD *)result + 15) = 1; *((_DWORD *)result + 28) = 4; *((_DWORD *)result + 29) = 5; *((_DWORD *)result + 30) = 6; *((_DWORD *)result + 32) = 8; *((_DWORD *)result + 33) = 9; *((_DWORD *)result + 38) = 9; *((_DWORD *)result + 39) = 8; *((_DWORD *)result + 41) = 6; *((_DWORD *)result + 42) = 5; *((_DWORD *)result + 58) = 14; *((_DWORD *)result + 59) = 14; *((_DWORD *)result + 60) = 14; *((_DWORD *)result + 61) = 14; *((_DWORD *)result + 62) = 14; *((_DWORD *)result + 63) = 14; return result; } //----- (00630EE0) -------------------------------------------------------- char __thiscall sub_630EE0(void *this) { signed int v1; // eax@1 v1 = 0; while ( *((_BYTE *)this + v1 + 30) ) { ++v1; if ( v1 >= 15 ) return 1; } return 0; } //----- (00630F00) -------------------------------------------------------- char __thiscall sub_630F00(void *this, signed int a2, __int16 a3) { signed int v4; // eax@3 if ( a2 < 15 ) { *((_WORD *)this + a2) = a3; *((_BYTE *)this + a2 + 30) = 1; v4 = 0; while ( *((_BYTE *)this + v4 + 30) ) { ++v4; if ( v4 >= 15 ) return 1; } } return 0; } //----- (00630F40) -------------------------------------------------------- bool __thiscall sub_630F40(void *this, signed int a2, int a3, unsigned int a4) { bool result; // al@2 signed int v5; // eax@3 if ( a2 < 52 && (v5 = *((_DWORD *)this + a2 + 12), v5 < 15) && *((_BYTE *)this + v5 + 30) ) result = a4 <= (unsigned int)(100 * a3) / (unsigned __int64)*((_WORD *)this + v5); else result = 0; return result; } //----- (00630FA0) -------------------------------------------------------- int __thiscall sub_630FA0(void *this, signed int a2, int a3, unsigned int a4) { signed int v5; // eax@3 if ( a2 >= 52 ) return 0; v5 = *((_DWORD *)this + a2 + 12); if ( (unsigned int)(a2 - 46) <= 5 ) { if ( a3 == 1 ) { v5 = 12; goto LABEL_11; } if ( a3 == 2 ) { v5 = 13; goto LABEL_11; } if ( a3 == 3 ) { v5 = 14; goto LABEL_11; } return 0; } if ( v5 >= 15 ) return 0; LABEL_11: if ( !*((_BYTE *)this + v5 + 30) ) return 0; return (signed __int64)((double)*((_WORD *)this + v5) / 100.0 * (double)a4); } //----- (00631040) -------------------------------------------------------- __int16 __thiscall sub_631040(void *this, signed int a2, int a3) { signed int v4; // eax@3 if ( a2 >= 52 ) return 0; v4 = *((_DWORD *)this + a2 + 12); if ( (unsigned int)(a2 - 46) <= 5 ) { if ( a3 == 1 ) { v4 = 12; goto LABEL_11; } if ( a3 == 2 ) { v4 = 13; goto LABEL_11; } if ( a3 == 3 ) { v4 = 14; goto LABEL_11; } return 0; } if ( v4 >= 15 ) return 0; LABEL_11: if ( !*((_BYTE *)this + v4 + 30) ) return 0; return *((_WORD *)this + v4); } //----- (006310A0) -------------------------------------------------------- int __thiscall sub_6310A0(void *this, int a2) { signed int v2; // edi@1 char *v3; // esi@1 unsigned __int64 v4; // ST00_8@2 int result; // eax@3 int v6; // esi@3 unsigned __int8 v7; // cl@4 signed int v8; // edi@4 unsigned __int8 v9; // dl@6 unsigned __int8 v10; // bl@6 char v11; // cl@15 char v12; // dl@15 char v13; // cl@18 char v14; // cl@18 unsigned __int8 v15; // dl@20 char v16; // cl@21 char v17; // cl@21 unsigned __int8 v18; // cl@22 unsigned __int8 v19; // dl@22 char v20; // cl@23 char v21; // cl@23 unsigned __int8 v22; // cl@24 unsigned __int8 v23; // dl@24 char v24; // cl@25 char v25; // cl@25 char v26; // cl@26 char v27; // dl@29 char v28; // cl@29 char v29; // bl@31 char v30; // cl@36 char v31; // cl@41 bool v32; // zf@41 bool v33; // sf@41 int v34; // edx@41 signed int v35; // [sp+Ch] [bp-Ch]@3 void *v36; // [sp+10h] [bp-8h]@1 int v37; // [sp+10h] [bp-8h]@4 v2 = 0; v36 = this; v3 = (char *)this + 4; do { HIDWORD(v4) = v3 - 4; LODWORD(v4) = v2; sub_630610(v4); *(v3 - 1) = -1; *v3 = -1; v3[1] = -1; v3[2] = -1; v3[3] = -1; *((_DWORD *)v3 + 1) = 3; *((_DWORD *)v3 + 2) = &unk_3000000; *((_DWORD *)v3 + 3) = 0; *((_WORD *)v3 + 8) = 0; ++v2; v3 += 22; } while ( v2 < 216 ); result = (int)((char *)v36 + 8); v6 = (int)((char *)v36 + 9); v35 = 216; do { v7 = *(_BYTE *)(result - 8); v8 = 0; v37 = 0; if ( v7 == *(_BYTE *)(result - 7) ) { v37 = v7; v8 = 1; } v9 = *(_BYTE *)(result - 7); v10 = *(_BYTE *)(result - 6); if ( v9 == v10 ) { v37 = v9; ++v8; } if ( v10 == v7 ) { v37 = v10; ++v8; } if ( v8 == 1 ) { *(_BYTE *)(result - 3) = v37; *(_BYTE *)(result + 7) = 2; *(_BYTE *)result = 1; LABEL_15: v11 = *(_BYTE *)(result - 8); v12 = *(_BYTE *)(result - 7); *(_BYTE *)(result + 1) = v11; if ( v11 == v12 ) v12 = *(_BYTE *)(result - 6); goto LABEL_19; } if ( v8 == 3 ) { *(_BYTE *)(result - 2) = v37; *(_BYTE *)(result + 7) = 1; *(_BYTE *)result = 0; goto LABEL_20; } if ( *(_BYTE *)result == 1 ) goto LABEL_15; if ( *(_BYTE *)result != 3 ) goto LABEL_20; v13 = *(_BYTE *)(result - 8); v12 = *(_BYTE *)(result - 7); *(_BYTE *)(result + 1) = v13; *(_BYTE *)(result + 3) = v13; v14 = *(_BYTE *)(result - 6); *(_BYTE *)(result + 4) = v14; *(_BYTE *)(result + 5) = v12; *(_BYTE *)(result + 6) = v14; LABEL_19: *(_BYTE *)(result + 2) = v12; LABEL_20: v15 = *(_BYTE *)(v6 + 1); if ( *(_BYTE *)v6 > v15 ) { v16 = v15 ^ *(_BYTE *)v6; *(_BYTE *)v6 = v16; v17 = v15 ^ v16; *(_BYTE *)v6 ^= v17; *(_BYTE *)(v6 + 1) = v17; } v18 = *(_BYTE *)(v6 + 2); v19 = *(_BYTE *)(v6 + 3); if ( v18 > v19 ) { v20 = v19 ^ v18; *(_BYTE *)(v6 + 2) = v20; v21 = v19 ^ v20; *(_BYTE *)(v6 + 2) ^= v21; *(_BYTE *)(v6 + 3) = v21; } v22 = *(_BYTE *)(v6 + 4); v23 = *(_BYTE *)(v6 + 5); if ( v22 > v23 ) { v24 = v23 ^ v22; *(_BYTE *)(v6 + 4) = v24; v25 = v23 ^ v24; *(_BYTE *)(v6 + 4) ^= v25; *(_BYTE *)(v6 + 5) = v25; } v26 = *(_BYTE *)(result + 7); if ( v26 == 1 ) { *(_BYTE *)(result + 8) = *(_BYTE *)(result - 8); *(_BYTE *)(result + 9) = 3; goto LABEL_39; } if ( v26 == 2 ) { v27 = *(_BYTE *)(result - 7); v28 = *(_BYTE *)(result - 8); if ( v28 == v27 ) { v27 = *(_BYTE *)(result - 6); *(_BYTE *)(result + 8) = v28; *(_BYTE *)(result + 9) = 2; } else { v29 = *(_BYTE *)(result - 6); if ( v28 != v29 ) { if ( v27 != v29 ) goto LABEL_39; *(_BYTE *)(result + 8) = v27; *(_BYTE *)(result + 9) = 2; *(_BYTE *)(result + 10) = v28; goto LABEL_38; } *(_BYTE *)(result + 8) = v28; *(_BYTE *)(result + 9) = 2; } } else { if ( v26 != 3 ) goto LABEL_39; v27 = *(_BYTE *)(result - 7); *(_BYTE *)(result + 8) = *(_BYTE *)(result - 8); v30 = *(_BYTE *)(result - 6); *(_BYTE *)(result + 9) = 1; *(_BYTE *)(result + 12) = v30; *(_BYTE *)(result + 13) = 1; } *(_BYTE *)(result + 10) = v27; LABEL_38: *(_BYTE *)(result + 11) = 1; LABEL_39: if ( !a2 ) { if ( *(_BYTE *)(result - 2) > 0 ) goto LABEL_44; LABEL_41: v31 = *(_BYTE *)(result - 6) + *(_BYTE *)(result - 7) + *(_BYTE *)(result - 8); v34 = (char)(*(_BYTE *)(result - 6) + *(_BYTE *)(result - 7) + *(_BYTE *)(result - 8)) & 0x80000001; v32 = ((char)(*(_BYTE *)(result - 6) + *(_BYTE *)(result - 7) + *(_BYTE *)(result - 8)) & 0x80000001) == 0; v33 = ((char)(*(_BYTE *)(result - 6) + *(_BYTE *)(result - 7) + *(_BYTE *)(result - 8)) & 0x80000001) < 0; *(_BYTE *)(result - 1) = v31; if ( v33 ) v32 = ((v34 - 1) | 0xFFFFFFFE) == -1; *(_BYTE *)(result - 5) = !v32 + 1; *(_BYTE *)(result - 4) = ((unsigned __int8)(v31 - 11) > 6u) + 1; goto LABEL_44; } if ( *(_BYTE *)(result - 2) <= 0 ) goto LABEL_41; if ( v37 != 1 && v37 != 6 ) *(_BYTE *)(result - 1) = *(_BYTE *)(result - 6) + *(_BYTE *)(result - 7) + *(_BYTE *)(result - 8); LABEL_44: v6 += 22; result += 22; --v35; } while ( v35 ); return result; } //----- (006312F0) -------------------------------------------------------- int __cdecl sub_6312F0(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 69); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (00631310) -------------------------------------------------------- int __cdecl sub_631310(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 69); i = *(_DWORD *)i ) result = i; return result; } //----- (00631330) -------------------------------------------------------- int __thiscall sub_631330(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 69) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00631390) -------------------------------------------------------- int __thiscall sub_631390(int this, int a2) { int result; // eax@1 int v3; // edi@1 int v4; // edx@2 unsigned int v5; // ebx@2 int v6; // eax@4 unsigned int v7; // esi@6 unsigned int v8; // ecx@6 int v9; // eax@10 bool v10; // sf@10 unsigned int v11; // [sp+4h] [bp-8h]@2 int v12; // [sp+8h] [bp-4h]@1 result = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(result + 4); v12 = *(_DWORD *)(this + 4); if ( !*(_BYTE *)(v3 + 69) ) { v4 = a2; v5 = *(_DWORD *)(a2 + 16); v11 = *(_DWORD *)(a2 + 20); while ( 1 ) { v6 = v3 + 12; if ( v11 >= 0x10 ) v4 = *(_DWORD *)v4; v7 = *(_DWORD *)(v3 + 28); v8 = v7; if ( v7 >= v5 ) v8 = v5; if ( *(_DWORD *)(v3 + 32) >= 0x10u ) v6 = *(_DWORD *)v6; v9 = sub_4189B0(v6, v4, v8); v10 = v9 < 0; if ( !v9 ) { if ( v7 < v5 ) goto LABEL_14; LOBYTE(v9) = v7 != v5; v10 = v9 < 0; } if ( v10 ) { LABEL_14: v3 = *(_DWORD *)(v3 + 8); goto LABEL_16; } v12 = v3; v3 = *(_DWORD *)v3; LABEL_16: if ( *(_BYTE *)(v3 + 69) ) return v12; v4 = a2; } } return result; } //----- (00631470) -------------------------------------------------------- void __cdecl sub_631470(int a1, int a2) { if ( *(_DWORD *)(a2 + 48) >= 0x10u ) operator delete(*(void **)(a2 + 28)); *(_DWORD *)(a2 + 48) = 15; *(_DWORD *)(a2 + 44) = 0; *(_BYTE *)(a2 + 28) = 0; if ( *(_DWORD *)(a2 + 20) >= 0x10u ) operator delete(*(void **)a2); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; } //----- (006314C0) -------------------------------------------------------- int __thiscall sub_6314C0(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@8 int v7; // edx@8 int v8; // edx@11 int v9; // edx@13 void *v10; // eax@15 int v11; // edx@16 int v12; // esi@16 int v13; // esi@17 int v14; // edx@19 int v15; // esi@21 int v16; // esi@23 int v17; // edx@27 int v18; // esi@27 int v19; // edi@27 int v20; // edi@29 int v21; // edi@31 void *v22; // edx@37 int v23; // esi@37 int v24; // esi@39 int v25; // esi@41 int v26; // edi@47 int v27; // edi@49 int v28; // ecx@55 int result; // eax@55 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_4924923 ) { if ( *((_DWORD *)a5 + 15) >= 0x10u ) operator delete(*((void **)a5 + 10)); *((_DWORD *)a5 + 15) = 15; *((_DWORD *)a5 + 14) = 0; *((_BYTE *)a5 + 40) = 0; if ( *((_DWORD *)a5 + 8) >= 0x10u ) operator delete(*((void **)a5 + 3)); *((_DWORD *)a5 + 8) = 15; *((_DWORD *)a5 + 7) = 0; *((_BYTE *)a5 + 12) = 0; operator delete(a5); sub_65178B((int)"map/set too long"); } v6 = a5; *(_DWORD *)(this + 8) = v5 + 1; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 68) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 68) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 69) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 69) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_53: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } } else { v13 = *(_DWORD *)v12; if ( *(_BYTE *)(v13 + 68) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v22 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v22 + 2); v23 = *((_DWORD *)v22 + 2); if ( !*(_BYTE *)(v23 + 69) ) *(_DWORD *)(v23 + 4) = v10; *((_DWORD *)v22 + 1) = *((_DWORD *)v10 + 1); v24 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v24 + 4) ) { *(_DWORD *)(v24 + 4) = v22; } else { v25 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v25 + 8) ) *(_DWORD *)(v25 + 8) = v22; else *(_DWORD *)v25 = v22; } *((_DWORD *)v22 + 2) = v10; *((_DWORD *)v10 + 1) = v22; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 69) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v26 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v26 + 4) ) { *(_DWORD *)(v26 + 4) = v18; } else { v27 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v27 ) *(_DWORD *)v27 = v18; else *(_DWORD *)(v27 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_53; } } *(_BYTE *)(v11 + 68) = 1; *(_BYTE *)(v13 + 68) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 68) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } v28 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v28 + 68) = 1; return result; } //----- (00631720) -------------------------------------------------------- void __stdcall sub_631720(void *a1) { void *v1; // esi@1 void *i; // edi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 69); v1 = i ) { sub_631720(*((void **)i + 2)); i = *(void **)i; if ( *((_DWORD *)v1 + 15) >= 0x10u ) operator delete(*((void **)v1 + 10)); *((_DWORD *)v1 + 15) = 15; *((_DWORD *)v1 + 14) = 0; *((_BYTE *)v1 + 40) = 0; if ( *((_DWORD *)v1 + 8) >= 0x10u ) operator delete(*((void **)v1 + 3)); *((_DWORD *)v1 + 8) = 15; *((_DWORD *)v1 + 7) = 0; *((_BYTE *)v1 + 12) = 0; operator delete(v1); } } //----- (006317A0) -------------------------------------------------------- int __thiscall sub_6317A0(void *this, int a2, void *a3) { void *v3; // edi@1 int v4; // ebx@4 void *v5; // eax@7 int v6; // esi@8 int v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // eax@23 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int v14; // eax@38 unsigned int v15; // eax@63 int result; // eax@65 void *v17; // [sp+Ch] [bp-4h]@1 v3 = a3; v17 = this; if ( *((_BYTE *)a3 + 69) ) sub_6517D8((int)"invalid map/set iterator"); sub_478310(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 69) ) { v4 = *((_DWORD *)v3 + 2); LABEL_8: v6 = *((_DWORD *)v3 + 1); if ( !*(_BYTE *)(v4 + 69) ) *(_DWORD *)(v4 + 4) = v6; v7 = (int)v17; v8 = *((_DWORD *)v17 + 1); if ( *(void **)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(void **)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((void ***)v17 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 69) ) { v9 = v6; } else { v9 = sub_631310(v4); v7 = (int)v17; } **(_DWORD **)(v7 + 4) = v9; } if ( *(void **)(*(_DWORD *)(v7 + 4) + 8) == v3 ) { if ( *(_BYTE *)(v4 + 69) ) { *(_DWORD *)(*(_DWORD *)(v7 + 4) + 8) = v6; } else { v10 = sub_6312F0(v4); v7 = (int)v17; *(_DWORD *)(*((_DWORD *)v17 + 1) + 8) = v10; } } goto LABEL_35; } if ( *(_BYTE *)(*((_DWORD *)v3 + 2) + 69) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *((_DWORD *)a3 + 2); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *((void **)v3 + 2) ) { v6 = (int)v5; } else { v6 = *((_DWORD *)v5 + 1); if ( !*(_BYTE *)(v4 + 69) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *((_DWORD *)v5 + 2) = *((_DWORD *)v3 + 2); *(_DWORD *)(*((_DWORD *)v3 + 2) + 4) = v5; } v11 = *((_DWORD *)v17 + 1); if ( *(void **)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *((_DWORD *)v3 + 1); if ( *(void **)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *((_DWORD *)v5 + 1) = *((_DWORD *)v3 + 1); v13 = *((_BYTE *)v5 + 68); *((_BYTE *)v5 + 68) = *((_BYTE *)v3 + 68); *((_BYTE *)v3 + 68) = v13; v7 = (int)v17; LABEL_35: if ( *((_BYTE *)v3 + 68) == 1 ) { for ( ; v4 != *(_DWORD *)(*(_DWORD *)(v7 + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 68) != 1 ) break; v14 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v14 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v14 + 68) ) { *(_BYTE *)(v14 + 68) = 1; *(_BYTE *)(v6 + 68) = 0; sub_478670(v7, v6); v14 = *(_DWORD *)(v6 + 8); v7 = (int)v17; } if ( *(_BYTE *)(v14 + 69) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v14 + 68) != 1 || *(_BYTE *)(*(_DWORD *)(v14 + 8) + 68) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v14 + 8) + 68) == 1 ) { *(_BYTE *)(*(_DWORD *)v14 + 68) = 1; *(_BYTE *)(v14 + 68) = 0; sub_631330(v7, v14); v14 = *(_DWORD *)(v6 + 8); v7 = (int)v17; } *(_BYTE *)(v14 + 68) = *(_BYTE *)(v6 + 68); *(_BYTE *)(v6 + 68) = 1; *(_BYTE *)(*(_DWORD *)(v14 + 8) + 68) = 1; sub_478670(v7, v6); break; } } else { if ( !*(_BYTE *)(v14 + 68) ) { *(_BYTE *)(v14 + 68) = 1; *(_BYTE *)(v6 + 68) = 0; sub_631330(v7, v6); v14 = *(_DWORD *)v6; v7 = (int)v17; } if ( *(_BYTE *)(v14 + 69) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v14 + 8) + 68) != 1 || *(_BYTE *)(*(_DWORD *)v14 + 68) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v14 + 68) == 1 ) { *(_BYTE *)(*(_DWORD *)(v14 + 8) + 68) = 1; *(_BYTE *)(v14 + 68) = 0; sub_478670(v7, v14); v14 = *(_DWORD *)v6; v7 = (int)v17; } *(_BYTE *)(v14 + 68) = *(_BYTE *)(v6 + 68); *(_BYTE *)(v6 + 68) = 1; *(_BYTE *)(*(_DWORD *)v14 + 68) = 1; sub_631330(v7, v6); break; } } *(_BYTE *)(v14 + 68) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 68) = 1; } if ( *((_DWORD *)v3 + 15) >= 0x10u ) operator delete(*((void **)v3 + 10)); *((_DWORD *)v3 + 15) = 15; *((_DWORD *)v3 + 14) = 0; *((_BYTE *)v3 + 40) = 0; if ( *((_DWORD *)v3 + 8) >= 0x10u ) operator delete(*((void **)v3 + 3)); *((_DWORD *)v3 + 8) = 15; *((_DWORD *)v3 + 7) = 0; *((_BYTE *)v3 + 12) = 0; operator delete(v3); v15 = *((_DWORD *)v17 + 2); if ( v15 > 0 ) *((_DWORD *)v17 + 2) = v15 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (00631A40) -------------------------------------------------------- int __thiscall sub_631A40(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // edi@1 bool v7; // al@1 unsigned int v8; // ecx@2 int v9; // eax@4 int v10; // edx@6 unsigned int v11; // esi@8 unsigned int v12; // ecx@8 int v13; // eax@12 bool v14; // sf@12 unsigned int v15; // edi@17 unsigned int v16; // esi@19 unsigned int v17; // edx@21 int v18; // ecx@24 int v19; // eax@26 bool v20; // sf@26 signed int v21; // eax@28 int v22; // esi@37 int v23; // ecx@40 int result; // eax@40 bool v25; // cf@42 int v26; // ebx@42 unsigned int v27; // edx@42 int v28; // eax@43 char v29; // [sp-Ch] [bp-2Ch]@39 int v30; // [sp-8h] [bp-28h]@39 void *v31; // [sp-4h] [bp-24h]@39 int v32; // [sp+Ch] [bp-14h]@4 unsigned int v33; // [sp+10h] [bp-10h]@2 unsigned int v34; // [sp+14h] [bp-Ch]@2 int v35; // [sp+18h] [bp-8h]@1 char v36; // [sp+1Ch] [bp-4h]@1 v4 = a3; v5 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); v6 = *(_DWORD *)(this + 4); v7 = 1; v35 = this; v36 = 1; if ( !*(_BYTE *)(v5 + 69) ) { v8 = *((_DWORD *)a3 + 7); v34 = *((_DWORD *)a3 + 7); v33 = *((_DWORD *)a3 + 8); while ( 1 ) { v32 = v5; v9 = v5 + 12; if ( (_BYTE)a4 ) { if ( v33 < 0x10 ) v10 = (int)((char *)v4 + 12); else v10 = *((_DWORD *)v4 + 3); v11 = *(_DWORD *)(v5 + 28); v12 = v11; if ( v11 >= v34 ) v12 = v34; if ( *(_DWORD *)(v5 + 32) >= 0x10u ) v9 = *(_DWORD *)v9; v13 = sub_4189B0(v9, v10, v12); v14 = v13 < 0; if ( !v13 ) { if ( v11 < v34 ) { v7 = 0; goto LABEL_32; } v14 = (v11 != v34) < 0; } v7 = !v14; } else { v15 = *(_DWORD *)(v5 + 28); if ( *(_DWORD *)(v5 + 32) >= 0x10u ) v9 = *(_DWORD *)v9; v16 = *((_DWORD *)a3 + 7); if ( v8 < v16 ) v16 = v8; v17 = v16; if ( v16 >= v15 ) v17 = *(_DWORD *)(v5 + 28); if ( v33 < 0x10 ) v18 = (int)((char *)a3 + 12); else v18 = *((_DWORD *)a3 + 3); v19 = sub_4189B0(v18, v9, v17); v20 = v19 < 0; if ( !v19 ) { if ( v16 >= v15 ) v21 = v16 != v15; else v21 = -1; v20 = v21 < 0; } v7 = v20; } LABEL_32: v36 = v7; if ( v7 ) v5 = *(_DWORD *)v5; else v5 = *(_DWORD *)(v5 + 8); v4 = a3; if ( *(_BYTE *)(v5 + 69) ) { v6 = v32; this = v35; break; } v8 = v34; } } v22 = v6; a4 = v6; if ( v7 ) { if ( v6 == **(_DWORD **)(this + 4) ) { v31 = v4; v30 = v6; v29 = 1; LABEL_40: v23 = *(_DWORD *)sub_6314C0(this, (int)&a4, v29, v30, v31); result = a2; *(_DWORD *)a2 = v23; *(_BYTE *)(a2 + 4) = 1; return result; } sub_4783A0(&a4); v22 = a4; v4 = a3; } v25 = *((_DWORD *)v4 + 8) < 0x10u; v26 = (int)((char *)v4 + 12); v27 = *((_DWORD *)v4 + 7); if ( v25 ) v28 = v26; else v28 = *(_DWORD *)v26; if ( sub_422730(v22 + 12, 0, *(_DWORD *)(v22 + 28), v28, v27) < 0 ) { v31 = a3; v30 = v6; v29 = v36; this = v35; goto LABEL_40; } sub_631470(v35 + 13, v26); operator delete(a3); result = a2; *(_DWORD *)a2 = v22; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (00631BF0) -------------------------------------------------------- int __thiscall sub_631BF0(int this, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // esi@1 int v6; // eax@1 int v7; // edi@1 int result; // eax@2 int v9; // eax@4 int v10; // eax@17 int v11; // ecx@23 int v12; // [sp+Ch] [bp-8h]@23 v4 = a4; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = a4 + 12; if ( !*(_DWORD *)(this + 8) ) { sub_6314C0(this, a2, 1, v6, (void *)a4); return a2; } if ( a3 == *(_DWORD *)v6 ) { v9 = a3 + 12; if ( *(_DWORD *)(a3 + 32) >= 0x10u ) v9 = *(_DWORD *)v9; if ( sub_422730(a4 + 12, 0, *(_DWORD *)(a4 + 28), v9, *(_DWORD *)(a3 + 28)) < 0 ) { sub_6314C0(v5, a2, 1, a3, (void *)v4); return a2; } goto LABEL_23; } if ( a3 == v6 ) { if ( sub_479A40(*(_DWORD *)(v6 + 8) + 12, a4 + 12) ) { sub_6314C0(v5, a2, 0, *(_DWORD *)(*(_DWORD *)(v5 + 4) + 8), (void *)v4); return a2; } goto LABEL_23; } if ( sub_479A40(a4 + 12, a3 + 12) ) { a4 = a3; sub_4783A0(&a4); if ( sub_479A40(a4 + 12, v7) ) { if ( *(_BYTE *)(*(_DWORD *)(a4 + 8) + 69) ) { sub_6314C0(v5, a2, 0, a4, (void *)v4); result = a2; } else { sub_6314C0(v5, a2, 1, a3, (void *)v4); result = a2; } return result; } } if ( !sub_479A40(a3 + 12, v7) ) goto LABEL_23; a4 = a3; sub_478310(&a4); v10 = a4; if ( a4 == *(_DWORD *)(v5 + 4) ) goto LABEL_20; if ( !sub_479A40(v7, a4 + 12) ) { LABEL_23: v11 = *(_DWORD *)sub_631A40(v5, (int)&v12, (void *)v4, 0); result = a2; *(_DWORD *)a2 = v11; return result; } v10 = a4; LABEL_20: if ( *(_BYTE *)(*(_DWORD *)(a3 + 8) + 69) ) { sub_6314C0(v5, a2, 0, a3, (void *)v4); result = a2; } else { sub_6314C0(v5, a2, 1, v10, (void *)v4); result = a2; } return result; } //----- (00631DB0) -------------------------------------------------------- int __thiscall sub_631DB0(int this, int a2, void *a3, void *a4) { int v4; // esi@1 int v5; // eax@1 void *v6; // ecx@1 int v7; // ecx@3 int result; // eax@3 void *v9; // edx@5 int v10; // eax@6 void *v11; // ecx@7 int j; // eax@7 int i; // eax@10 int v14; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(void **)v5 || a4 != (void *)v5 ) { for ( ; a3 != a4; v6 = a3 ) { v9 = v6; if ( !*((_BYTE *)v6 + 69) ) { v10 = *((_DWORD *)v6 + 2); if ( *(_BYTE *)(v10 + 69) ) { for ( i = *((_DWORD *)v6 + 1); !*(_BYTE *)(i + 69); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(void **)(i + 8) ) break; v6 = (void *)i; } a3 = (void *)i; } else { v11 = (void *)*((_DWORD *)v6 + 2); for ( j = *(_DWORD *)v10; !*(_BYTE *)(j + 69); j = *(_DWORD *)j ) v11 = (void *)j; a3 = v11; } } sub_6317A0((void *)v4, (int)&v14, v9); } result = a2; *(_DWORD *)a2 = v6; } else { sub_631720(*(void **)(v5 + 4)); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 4) = *(_DWORD *)(v4 + 4); **(_DWORD **)(v4 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(*(_DWORD *)(v4 + 4) + 8) = *(_DWORD *)(v4 + 4); v7 = *(_DWORD *)(v4 + 4); result = a2; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)a2 = *(_DWORD *)v7; } return result; } //----- (00631E70) -------------------------------------------------------- void __thiscall sub_631E70(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // ST04_4@1 int v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(void **)(this + 4); v3 = *(void **)v2; v6 = 0; sub_631DB0(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (00631ED0) -------------------------------------------------------- void __thiscall sub_631ED0(int this) { int v1; // edi@1 int v2; // esi@1 void *v3; // ST08_4@1 void *v4; // ST08_4@1 void *v5; // ST04_4@1 int v6; // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 int v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v1 = this; v8 = this; v2 = this + 64; v3 = *(void **)(*(_DWORD *)(this + 68) + 4); v9 = 1; sub_631720(v3); *(_DWORD *)(*(_DWORD *)(v2 + 4) + 4) = *(_DWORD *)(v2 + 4); **(_DWORD **)(v2 + 4) = *(_DWORD *)(v2 + 4); *(_DWORD *)(*(_DWORD *)(v2 + 4) + 8) = *(_DWORD *)(v2 + 4); *(_DWORD *)(v2 + 8) = 0; v7 = v2; v4 = *(void **)(v2 + 4); v5 = (void *)**(_DWORD **)(v2 + 4); LOBYTE(v9) = 2; sub_631DB0(v2, (int)&v6, v5, v4); operator delete(*(void **)(v2 + 4)); v9 = -1; sub_626C10(v1); } //----- (00631F70) -------------------------------------------------------- int __thiscall sub_631F70(void *this, char *a2) { void *v2; // esi@1 int v3; // edi@1 void **v4; // eax@3 void **v5; // edx@3 int v7; // [sp+0h] [bp-38h]@1 int (__thiscall **v8)(void *, char); // [sp+10h] [bp-28h]@6 int v9; // [sp+1Ch] [bp-1Ch]@2 int v10; // [sp+20h] [bp-18h]@2 void *v11; // [sp+24h] [bp-14h]@1 int *v12; // [sp+28h] [bp-10h]@1 int v13; // [sp+34h] [bp-4h]@2 v12 = &v7; v2 = this; v3 = operator new(0x48u); v11 = (void *)v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v8 = &off_6A1FD4; _CxxThrowException(&v8, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(v3 + 68) = 0; v13 = 0; v10 = v3 + 12; v9 = v3 + 12; LOBYTE(v13) = 1; if ( v3 != -12 ) { v4 = (void **)a2; *(_DWORD *)(v3 + 32) = 15; *(_DWORD *)(v3 + 28) = 0; *(_BYTE *)(v3 + 12) = 0; sub_4E0E00((void **)(v3 + 12), v4); v5 = (void **)(a2 + 28); *(_DWORD *)(v3 + 60) = 15; *(_DWORD *)(v3 + 56) = 0; LOBYTE(v13) = 2; *(_BYTE *)(v3 + 40) = 0; sub_4E0E00((void **)(v3 + 40), v5); } return v3; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0063212E) -------------------------------------------------------- void __usercall sub_63212E(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00632170) -------------------------------------------------------- int __thiscall sub_632170(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+8h] [bp-20h]@4 int v5; // [sp+14h] [bp-14h]@1 int v6; // [sp+18h] [bp-10h]@3 int v7; // [sp+24h] [bp-4h]@1 v1 = this; v5 = this; sub_626B20(this); v7 = 0; *(_DWORD *)(v1 + 72) = 0; v2 = operator new(0x48u); if ( !v2 ) { v6 = 0; std::exception::exception(&v6); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 68) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 68) + 4) = *(_DWORD *)(v1 + 68); *(_DWORD *)(*(_DWORD *)(v1 + 68) + 8) = *(_DWORD *)(v1 + 68); *(_BYTE *)(*(_DWORD *)(v1 + 68) + 68) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 68) + 69) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00632220) -------------------------------------------------------- signed int __thiscall sub_632220(int this, char *a2, int a3, int a4) { int v4; // esi@1 void *v5; // ST08_4@1 int v7; // eax@3 int v8; // eax@9 char *v9; // edi@9 int v10; // ecx@9 char v11; // dl@10 int v12; // edx@11 int v13; // eax@11 int v14; // esi@11 unsigned int v15; // edx@12 int v16; // eax@12 bool v17; // cf@12 void *v18; // ecx@16 int v19; // eax@18 bool v20; // sf@18 unsigned __int8 v21; // of@18 signed int v22; // eax@20 int *v23; // eax@24 bool v24; // zf@26 char *v25; // eax@29 char *v26; // esi@29 char v27; // dl@30 int v28; // eax@31 int v29; // edi@31 char v30; // cl@32 int v31; // esi@33 int v32; // eax@33 int v33; // [sp+Ch] [bp-8Ch]@33 unsigned int v34; // [sp+14h] [bp-84h]@12 int v35; // [sp+18h] [bp-80h]@25 int v36; // [sp+1Ch] [bp-7Ch]@11 int v37; // [sp+20h] [bp-78h]@11 int v38; // [sp+24h] [bp-74h]@1 unsigned int v39; // [sp+28h] [bp-70h]@6 char *v40; // [sp+2Ch] [bp-6Ch]@1 bool v41; // [sp+33h] [bp-65h]@26 void *v42; // [sp+34h] [bp-64h]@29 int v43; // [sp+44h] [bp-54h]@29 unsigned int v44; // [sp+48h] [bp-50h]@29 void *v45; // [sp+50h] [bp-48h]@31 int v46; // [sp+60h] [bp-38h]@31 unsigned int v47; // [sp+64h] [bp-34h]@31 void *v48; // [sp+6Ch] [bp-2Ch]@9 unsigned int v49; // [sp+7Ch] [bp-1Ch]@9 unsigned int v50; // [sp+80h] [bp-18h]@9 unsigned int v51; // [sp+88h] [bp-10h]@1 int v52; // [sp+94h] [bp-4h]@11 int v53; // [sp+98h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; v4 = this; v5 = *(void **)(*(_DWORD *)(this + 68) + 4); v38 = this; v40 = a2; sub_631720(v5); *(_DWORD *)(*(_DWORD *)(v4 + 68) + 4) = *(_DWORD *)(v4 + 68); **(_DWORD **)(v4 + 68) = *(_DWORD *)(v4 + 68); *(_DWORD *)(*(_DWORD *)(v4 + 68) + 8) = *(_DWORD *)(v4 + 68); *(_DWORD *)(v4 + 72) = 0; if ( !sub_627480((void *)v4, a2, a3, a4) ) return 0; v7 = *(_DWORD *)(v4 + 52); if ( v7 ) v40 = *(char **)(v7 + 40); else v40 = 0; v39 = 0; if ( (unsigned int)v40 > 0 ) { while ( 1 ) { v8 = sub_626BC0(v4, v39); v9 = (char *)v8; v50 = 15; v49 = 0; LOBYTE(v48) = 0; v10 = v8 + 1; do v11 = *(_BYTE *)v8++; while ( v11 ); sub_4241C0((int)&v48, v9, v8 - v10); v12 = *(_DWORD *)(v4 + 68); v52 = 0; v36 = v12; v13 = sub_631390(v4 + 64, (int)&v48); v14 = *(_DWORD *)(v4 + 68); v37 = v13; if ( v13 == v14 ) goto LABEL_41; v15 = *(_DWORD *)(v13 + 28); v16 = v13 + 12; v17 = *(_DWORD *)(v16 + 20) < 0x10u; v34 = v15; if ( !v17 ) v16 = *(_DWORD *)v16; if ( v49 < v15 ) v15 = v49; v18 = v48; if ( v50 < 0x10 ) v18 = &v48; v19 = sub_4189B0((int)v18, v16, v15); v21 = 0; v20 = v19 < 0; if ( !v19 ) { if ( v49 >= v34 ) v22 = v49 != v34; else v22 = -1; v21 = 0; v20 = v22 < 0; } if ( v20 ^ v21 ) { LABEL_41: v35 = v14; v23 = &v35; } else { v23 = &v37; } v24 = *v23 == v36; v52 = -1; v41 = !v24; if ( v50 >= 0x10 ) operator delete(v48); if ( v41 ) return 0; v25 = v9; v26 = v9 + 32; v44 = 15; v43 = 0; LOBYTE(v42) = 0; do v27 = *v25++; while ( v27 ); sub_4241C0((int)&v42, v9, v25 - (v9 + 1)); v28 = (int)(v9 + 32); v52 = 1; v47 = 15; v46 = 0; LOBYTE(v45) = 0; v29 = (int)(v9 + 33); do v30 = *(_BYTE *)v28++; while ( v30 ); sub_4241C0((int)&v45, v26, v28 - v29); v31 = v38; v52 = 2; v32 = sub_631F70((void *)(v38 + 64), (char *)&v42); sub_631A40(v31 + 64, (int)&v33, (void *)v32, 0); v52 = -1; if ( v47 >= 0x10 ) operator delete(v45); v47 = 15; v46 = 0; LOBYTE(v45) = 0; if ( v44 >= 0x10 ) operator delete(v42); v44 = 15; v43 = 0; LOBYTE(v42) = 0; ++v39; if ( v39 >= (unsigned int)v40 ) return 1; v4 = v38; } } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (006324B0) -------------------------------------------------------- int __thiscall sub_6324B0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 unsigned int v4; // ecx@2 int v5; // eax@2 int v6; // eax@5 int v8; // [sp+Ch] [bp-68h]@1 void *v9; // [sp+10h] [bp-64h]@5 int v10; // [sp+20h] [bp-54h]@5 unsigned int v11; // [sp+24h] [bp-50h]@5 void *v12; // [sp+2Ch] [bp-48h]@5 int v13; // [sp+3Ch] [bp-38h]@5 unsigned int v14; // [sp+40h] [bp-34h]@5 void *v15; // [sp+48h] [bp-2Ch]@5 int v16; // [sp+58h] [bp-1Ch]@5 unsigned int v17; // [sp+5Ch] [bp-18h]@5 unsigned int v18; // [sp+64h] [bp-10h]@1 int v19; // [sp+70h] [bp-4h]@5 int v20; // [sp+74h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v2 = this; v3 = sub_631390(this, a2); v8 = v3; if ( v3 == *(_DWORD *)(v2 + 4) ) goto LABEL_14; v4 = *(_DWORD *)(v3 + 28); v5 = v3 + 12; if ( *(_DWORD *)(v5 + 20) >= 0x10u ) v5 = *(_DWORD *)v5; if ( sub_422730(a2, 0, *(_DWORD *)(a2 + 16), v5, v4) < 0 ) { LABEL_14: v11 = 15; v10 = 0; LOBYTE(v9) = 0; v19 = 0; v14 = 15; v13 = 0; LOBYTE(v12) = 0; sub_423FC0(&v12, a2, 0, 0xFFFFFFFFu); LOBYTE(v19) = 1; v17 = 15; v16 = 0; LOBYTE(v15) = 0; sub_4E0E00(&v15, &v9); LOBYTE(v19) = 2; v6 = loc_632070(v2, &v12); sub_631BF0(v2, (int)&v8, v8, v6); if ( v17 >= 0x10 ) operator delete(v15); v17 = 15; v16 = 0; LOBYTE(v15) = 0; if ( v14 >= 0x10 ) operator delete(v12); v14 = 15; v13 = 0; LOBYTE(v12) = 0; if ( v11 >= 0x10 ) operator delete(v9); } return v8 + 40; } // 86FEB8: using guessed type int __security_cookie; //----- (006325F0) -------------------------------------------------------- int __thiscall sub_6325F0(int this, int a2) { int v2; // ebx@1 int v3; // edi@1 int v4; // esi@1 int v5; // eax@1 unsigned int v6; // ecx@2 int v7; // eax@2 int *v8; // eax@5 int result; // eax@8 int v10; // [sp+Ch] [bp-4h]@6 v2 = *(_DWORD *)(this + 68); v3 = a2; v4 = this + 64; v5 = sub_631390(this + 64, a2); a2 = v5; if ( v5 == *(_DWORD *)(v4 + 4) ) goto LABEL_13; v6 = *(_DWORD *)(v5 + 28); v7 = v5 + 12; if ( *(_DWORD *)(v7 + 20) >= 0x10u ) v7 = *(_DWORD *)v7; if ( sub_422730(v3, 0, *(_DWORD *)(v3 + 16), v7, v6) < 0 ) { LABEL_13: v10 = *(_DWORD *)(v4 + 4); v8 = &v10; } else { v8 = &a2; } if ( *v8 == v2 ) { result = 0; } else { result = sub_6324B0(v4, v3); if ( *(_DWORD *)(result + 20) >= 0x10u ) result = *(_DWORD *)result; } return result; } //----- (00632670) -------------------------------------------------------- int __thiscall sub_632670(int this) { int v1; // esi@1 v1 = this; sub_626B20(this); *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 0; return v1; } //----- (00632690) -------------------------------------------------------- int __thiscall sub_632690(int this, const char *a2, int a3, int a4) { int v4; // esi@1 unsigned int v5; // edi@1 int result; // eax@3 int v7; // eax@4 unsigned int v8; // ebx@5 int v9; // eax@8 unsigned __int8 v10; // cl@8 int v11; // eax@9 unsigned int v12; // edi@12 void *v13; // eax@13 size_t v14; // ST08_4@13 unsigned int v15; // edi@13 int v16; // eax@14 v4 = this; v5 = 0; if ( *(_DWORD *)(this + 64) ) { sub_6530A4(*(void **)(this + 64)); *(_DWORD *)(v4 + 64) = 0; } *(_DWORD *)(v4 + 68) = 0; result = sub_627480((void *)v4, a2, a3, a4); if ( result ) { v7 = *(_DWORD *)(v4 + 52); if ( v7 ) v8 = *(_DWORD *)(v7 + 40); else v8 = 0; if ( v8 ) { while ( 1 ) { v9 = sub_626BC0(v4, v5); v10 = *(_BYTE *)(v9 + 2); if ( v10 >= 0xAu ) break; v11 = v10 + 10 * *(_WORD *)v9; if ( *(_DWORD *)(v4 + 68) <= (unsigned int)v11 ) *(_DWORD *)(v4 + 68) = v11 + 1; ++v5; if ( v5 >= v8 ) goto LABEL_12; } result = 0; } else { LABEL_12: v12 = *(_DWORD *)(v4 + 68); if ( v12 ) { v13 = (void *)unknown_libname_130(4 * v12 | -((unsigned __int64)v12 >> 30 != 0)); v14 = 4 * *(_DWORD *)(v4 + 68); *(_DWORD *)(v4 + 64) = v13; memset(v13, 0, v14); v15 = 0; if ( v8 ) { do { v16 = sub_626BC0(v4, v15++); *(_DWORD *)(*(_DWORD *)(v4 + 64) + 4 * (*(_BYTE *)(v16 + 2) + 10 * *(_WORD *)v16)) = v16; } while ( v15 < v8 ); } } result = 1; } } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00632790) -------------------------------------------------------- signed int __thiscall sub_632790(int this, unsigned __int16 a2, unsigned int a3) { int v3; // edi@1 signed int result; // eax@2 int v5; // esi@3 int v6; // edx@5 v3 = 10 * a2; if ( (unsigned int)v3 < *(_DWORD *)(this + 68) ) { result = 0; v5 = 40 * a2; do { if ( (unsigned int)(result + v3) >= *(_DWORD *)(this + 68) ) break; v6 = *(_DWORD *)(v5 + *(_DWORD *)(this + 64)); if ( !v6 ) break; if ( a3 < *(_DWORD *)(v6 + 35) ) return result; ++result; v5 += 4; } while ( (unsigned int)result < 0xA ); --result; } else { result = -1; } return result; } //----- (006327E0) -------------------------------------------------------- int __thiscall sub_6327E0(int this, unsigned __int16 a2, unsigned int a3, int a4) { signed int v4; // eax@1 int v5; // ecx@1 int result; // eax@2 int v7; // eax@3 v4 = sub_632790(this, a2, a3); *(_DWORD *)a4 = v4; if ( v4 == -1 || (v7 = v4 + 10 * a2, (unsigned int)v7 >= *(_DWORD *)(v5 + 68)) ) result = 0; else result = *(_DWORD *)(*(_DWORD *)(v5 + 64) + 4 * v7); return result; } //----- (00632850) -------------------------------------------------------- char __cdecl sub_632850(unsigned __int8 *a1, const unsigned __int8 *a2) { unsigned __int8 *v2; // esi@1 signed int v3; // edi@5 char result; // al@9 v2 = a1; if ( a1 && a2 ) { if ( a1 != a2 ) _mbsnbcpy(a1, a2, 0x14u); v3 = 20; do { if ( !_mbsnbcmp(v2, &byte_6C6174, 1u) ) *v2 = 0; ++v2; --v3; } while ( v3 ); result = 1; } else { result = 0; } return result; } //----- (006328A0) -------------------------------------------------------- int __thiscall sub_6328A0(int this, unsigned int a2) { int v2; // eax@1 unsigned __int16 v3; // ax@2 int result; // eax@5 v2 = *(_DWORD *)(this + 16); if ( v2 ) v3 = *(_WORD *)(v2 + 2); else v3 = 0; if ( a2 < v3 ) result = *(_DWORD *)(*(_DWORD *)(this + 20) + 4 * a2); else result = 0; return result; } //----- (006328D0) -------------------------------------------------------- int __cdecl sub_6328D0(int a1, int a2, int a3) { int v3; // ecx@1 int result; // eax@1 int v5; // esi@2 v3 = a2; for ( result = a3; v3 != a1; *(_DWORD *)result = v5 ) { v5 = *(_DWORD *)(v3 - 4); v3 -= 4; result -= 4; } return result; } //----- (00632900) -------------------------------------------------------- int __thiscall sub_632900(int this, int a2, int a3, int a4, int a5, unsigned int a6) { int v6; // edx@2 int v7; // ecx@5 int result; // eax@5 if ( this != a3 ) { v6 = *(_DWORD *)(this + 4); if ( 536870910 - v6 < a6 ) sub_65178B((int)"list too long"); *(_DWORD *)(this + 4) = a6 + v6; *(_DWORD *)(a3 + 4) -= a6; } **(_DWORD **)(a4 + 4) = a5; **(_DWORD **)(a5 + 4) = a2; **(_DWORD **)(a2 + 4) = a4; v7 = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a5 + 4); result = a5; *(_DWORD *)(a5 + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(a4 + 4) = v7; return result; } //----- (00632980) -------------------------------------------------------- void __cdecl sub_632980(int a1, int a2, int a3) { int v3; // ecx@1 int v4; // eax@2 v3 = a2; if ( a2 ) { v4 = a1; do { if ( v4 ) *(_DWORD *)v4 = *(_DWORD *)a3; v4 += 4; --v3; } while ( v3 ); } } //----- (00632A60) -------------------------------------------------------- int __thiscall sub_632A60(void *this, int a2, int a3) { int v3; // ebx@1 void *v4; // esi@1 div_t v5; // qax@1 int v6; // eax@1 int v7; // ecx@3 int v8; // edi@3 int v9; // esi@3 int v10; // edx@3 int i; // eax@3 int v12; // ecx@5 unsigned __int16 v13; // cx@8 int result; // eax@11 int v15; // [sp+1Ch] [bp+Ch]@10 v3 = a3; v4 = this; v5 = div((*(_WORD *)a3 ^ 0xDEADBEEF) & 0x7FFFFFFF, 127773); v6 = (16807 * v5.rem - 2836 * v5.quot + ((char)-(16807 * v5.rem - 2836 * v5.quot < 0) & 0x7FFFFFFF)) & *((_DWORD *)v4 + 8); if ( *((_DWORD *)v4 + 9) <= (unsigned int)v6 ) v6 += -1 - (*((_DWORD *)v4 + 8) >> 1); v7 = *((_DWORD *)v4 + 4); v8 = *(_DWORD *)(v7 + 8 * v6); v9 = *((_DWORD *)v4 + 1); v10 = v7 + 8 * v6; for ( i = *(_DWORD *)(v7 + 8 * v6); ; i = *(_DWORD *)i ) { if ( v8 == v9 ) v12 = v9; else v12 = **(_DWORD **)(v10 + 4); if ( i == v12 ) { result = a2; *(_DWORD *)a2 = v9; return result; } v13 = *(_WORD *)(i + 8); if ( v13 >= *(_WORD *)a3 ) break; } v15 = i; if ( *(_WORD *)v3 >= v13 ) { result = a2; *(_DWORD *)a2 = v15; } else { result = a2; *(_DWORD *)a2 = v9; } return result; } //----- (00632B30) -------------------------------------------------------- int __thiscall sub_632B30(int this, int a2, unsigned int a3, int a4) { int result; // eax@1 int v5; // esi@1 int v6; // edi@1 int v7; // ebx@2 int v8; // ecx@2 int v9; // eax@2 unsigned int v10; // edx@4 int v11; // eax@4 unsigned int v12; // eax@6 int v13; // eax@10 signed int v14; // ebx@10 int v15; // ecx@10 void *v16; // ebx@10 int v17; // edi@10 unsigned int v18; // ecx@14 int v19; // eax@14 int v20; // ST00_4@14 int v21; // eax@14 unsigned int v22; // ecx@15 int v23; // edi@15 int v24; // ST18_4@15 int v25; // [sp+0h] [bp-24h]@1 void *v26; // [sp+10h] [bp-14h]@10 int *v27; // [sp+14h] [bp-10h]@1 int v28; // [sp+18h] [bp-Ch]@1 int v29; // [sp+20h] [bp-4h]@10 result = (int)&v28; v27 = &v25; v5 = this; v6 = a3; if ( a3 ) { v7 = *(_DWORD *)(this + 4); v8 = *(_DWORD *)this; v9 = (*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2; if ( 1073741823 - v9 < a3 ) sub_65178B((int)"vector too long"); v10 = v9 + a3; v11 = (*(_DWORD *)(v5 + 8) - v8) >> 2; if ( v11 >= v10 ) { if ( (v7 - a2) >> 2 >= a3 ) { v22 = *(_DWORD *)a4; v23 = v7 - 4 * a3; a4 = 4 * a3; v24 = v7 - 4 * a3; a3 = v22; *(_DWORD *)(v5 + 4) = sub_625820(v24, v7, v7); sub_6328D0(a2, v23, v7); result = sub_5ADF70(a2, a2 + a4, (int)&a3); } else { v18 = *(_DWORD *)a4; a4 = 4 * a3; a3 = v18; sub_625820(a2, v7, a2 + 4 * v6); v19 = *(_DWORD *)(v5 + 4); v20 = *(_DWORD *)(v5 + 4); v29 = 2; sub_632980(v20, v6 - ((v19 - a2) >> 2), (int)&a3); v21 = a4; *(_DWORD *)(v5 + 4) += a4; result = sub_5ADF70(a2, *(_DWORD *)(v5 + 4) - v21, (int)&a3); } } else { if ( 1073741823 - ((unsigned int)v11 >> 1) >= v11 ) { v12 = ((unsigned int)v11 >> 1) + v11; a3 = v12; } else { a3 = 0; v12 = 0; } if ( v12 < v10 ) { a3 = v10; v12 = v10; } v13 = sub_5ADF10(v12); v14 = a2 - *(_DWORD *)v5; v26 = (void *)v13; v14 >>= 2; v29 = 0; sub_632980(v13 + 4 * v14, v6, a4); sub_625820(*(_DWORD *)v5, a2, (int)v26); v15 = v14 + v6; v16 = v26; sub_625820(a2, *(_DWORD *)(v5 + 4), (int)((char *)v26 + 4 * v15)); v17 = ((*(_DWORD *)(v5 + 4) - *(_DWORD *)v5) >> 2) + v6; if ( *(_DWORD *)v5 ) operator delete(*(void **)v5); result = (int)((char *)v16 + 4 * a3); *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(v5 + 4) = (char *)v16 + 4 * v17; *(_DWORD *)v5 = v16; } } return result; } //----- (00632D90) -------------------------------------------------------- int __thiscall sub_632D90(int this, char a2) { int v2; // esi@1 int result; // eax@2 int v4; // [sp+4h] [bp-4h]@1 v2 = this; sub_632A60((void *)(this + 28), (int)&v4, (int)&a2); if ( v4 == *(_DWORD *)(v2 + 32) ) result = 0; else result = *(_DWORD *)(v4 + 12); return result; } //----- (00632DD0) -------------------------------------------------------- signed __int16 __thiscall sub_632DD0(int this, int a2) { int v2; // esi@1 int v3; // eax@2 signed __int16 result; // ax@4 int v5; // [sp+4h] [bp-4h]@1 v2 = this; a2 = (unsigned __int16)a2; sub_632A60((void *)(this + 28), (int)&v5, (int)&a2); if ( v5 != *(_DWORD *)(v2 + 32) && (v3 = *(_DWORD *)(v5 + 12)) != 0 && *(_BYTE *)(v3 + 29) ) result = *(_WORD *)(v3 + 30); else result = -1; return result; } //----- (00632E20) -------------------------------------------------------- int __thiscall sub_632E20(int this, int a2) { int v2; // esi@1 int v3; // eax@2 int result; // eax@3 int v5; // [sp+4h] [bp-4h]@1 v2 = this; a2 = (unsigned __int16)a2; sub_632A60((void *)(this + 28), (int)&v5, (int)&a2); if ( v5 != *(_DWORD *)(v2 + 32) && (v3 = *(_DWORD *)(v5 + 12)) != 0 ) result = *(_DWORD *)(v3 + 668); else result = *(_DWORD *)(v2 + 4); return result; } //----- (00632E70) -------------------------------------------------------- int __thiscall sub_632E70(int this, int a2) { int v2; // esi@1 int v3; // eax@2 int result; // eax@3 int v5; // [sp+4h] [bp-4h]@1 v2 = this; a2 = (unsigned __int16)a2; sub_632A60((void *)(this + 28), (int)&v5, (int)&a2); if ( v5 != *(_DWORD *)(v2 + 32) && (v3 = *(_DWORD *)(v5 + 12)) != 0 ) result = *(_DWORD *)(v3 + 672); else result = *(_DWORD *)(v2 + 4); return result; } //----- (00632EC0) -------------------------------------------------------- int __thiscall sub_632EC0(int this, int a2) { int v2; // esi@1 int v3; // eax@2 int result; // eax@3 int v5; // [sp+4h] [bp-4h]@1 v2 = this; a2 = (unsigned __int16)a2; sub_632A60((void *)(this + 28), (int)&v5, (int)&a2); if ( v5 != *(_DWORD *)(v2 + 32) && (v3 = *(_DWORD *)(v5 + 12)) != 0 ) result = *(_DWORD *)(v3 + 676); else result = *(_DWORD *)(v2 + 4); return result; } //----- (00632F10) -------------------------------------------------------- void __thiscall sub_632F10(int this) { int v1; // esi@1 void **v2; // ecx@3 void *v3; // eax@3 void *v4; // edi@4 v1 = this; if ( *(_DWORD *)(this + 16) ) operator delete(*(void **)(this + 16)); *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; v2 = *(void ***)(v1 + 4); v3 = *v2; *v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 8) = 0; if ( v3 != *(void **)(v1 + 4) ) { do { v4 = *(void **)v3; operator delete(v3); v3 = v4; } while ( v4 != *(void **)(v1 + 4) ); } operator delete(*(void **)(v1 + 4)); } //----- (00632F80) -------------------------------------------------------- void __thiscall sub_632F80(int this) { int v1; // ebx@1 double v2; // st7@1 unsigned int v3; // esi@1 signed int v4; // eax@2 int v5; // ecx@5 int v6; // edi@5 int v9; // ST08_4@9 float v10; // [sp+8h] [bp-4h]@1 v1 = this; v2 = *(float *)(this + 40); v3 = *(_DWORD *)(this + 36); v10 = (double)*(unsigned int *)(this + 8) / (double)v3; if ( v10 > v2 ) { v4 = 0; do { if ( v3 >= 0x1FFFFFFF ) break; ++v4; v3 *= 2; } while ( v4 < 3 ); v5 = this + 16; v6 = *(_DWORD *)(v1 + 16); LODWORD(v10) = *(_DWORD *)(v1 + 4); if ( v6 != *(_DWORD *)(v1 + 20) ) { v5 = v1 + 16; *(_DWORD *)(v1 + 20) = v6; } sub_632B30(v5, *(_DWORD *)v5, 2 * v3, (int)&v10); *(_DWORD *)(v1 + 32) = v3 - 1; v9 = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 36) = v3; sub_6333B0(v1, v9); } } //----- (00633030) -------------------------------------------------------- void __thiscall sub_633030(int this) { int v1; // ebx@1 double v2; // st7@1 unsigned int v3; // esi@1 signed int v4; // eax@2 int v5; // ecx@5 int v6; // edi@5 int v9; // ST08_4@9 float v10; // [sp+8h] [bp-4h]@1 v1 = this; v2 = *(float *)(this + 40); v3 = *(_DWORD *)(this + 36); v10 = (double)*(unsigned int *)(this + 8) / (double)v3; if ( v10 > v2 ) { v4 = 0; do { if ( v3 >= 0x1FFFFFFF ) break; ++v4; v3 *= 2; } while ( v4 < 3 ); v5 = this + 16; v6 = *(_DWORD *)(v1 + 16); LODWORD(v10) = *(_DWORD *)(v1 + 4); if ( v6 != *(_DWORD *)(v1 + 20) ) { v5 = v1 + 16; *(_DWORD *)(v1 + 20) = v6; } sub_632B30(v5, *(_DWORD *)v5, 2 * v3, (int)&v10); *(_DWORD *)(v1 + 32) = v3 - 1; v9 = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 36) = v3; sub_633500(v1, v9); } } //----- (006330E0) -------------------------------------------------------- int __thiscall sub_6330E0(int this) { int v1; // esi@1 void **v2; // ecx@1 void *v3; // eax@1 void *v4; // edi@2 int v5; // edi@3 int v6; // edx@3 int result; // eax@7 int v10; // [sp+8h] [bp-4h]@3 v1 = this; v2 = *(void ***)(this + 4); v3 = *v2; *v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 8) = 0; if ( v3 != *(void **)(v1 + 4) ) { do { v4 = *(void **)v3; operator delete(v3); v3 = v4; } while ( v4 != *(void **)(v1 + 4) ); } v5 = *(_DWORD *)(v1 + 16); v6 = *(_DWORD *)(v1 + 20); v10 = *(_DWORD *)(v1 + 4); if ( v5 != v6 ) *(_DWORD *)(v1 + 20) = v5; result = sub_632B30(v1 + 16, *(_DWORD *)(v1 + 16), 0x10u, (int)&v10); *(_DWORD *)(v1 + 32) = 7; *(_DWORD *)(v1 + 36) = 8; return result; } // 6330E0: could not find valid save-restore pair for ebx //----- (00633170) -------------------------------------------------------- int __thiscall sub_633170(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 int v5; // edx@2 int v6; // edi@2 int v7; // eax@2 int (__thiscall **v11)(void *, char); // [sp+10h] [bp-1Ch]@8 int v12; // [sp+1Ch] [bp-10h]@1 int v13; // [sp+28h] [bp-4h]@2 v3 = this; v12 = this; *(_BYTE *)this = *(_BYTE *)a2; *(_DWORD *)(this + 8) = 0; v4 = operator new(0x10u); if ( !v4 ) { a2 = 0; std::exception::exception(&a2); v11 = &off_6A1FD4; _CxxThrowException(&v11, &unk_733E50); } *(_DWORD *)(v3 + 4) = v4; *(_DWORD *)v4 = v4; *(_DWORD *)(*(_DWORD *)(v3 + 4) + 4) = *(_DWORD *)(v3 + 4); v13 = 0; *(_DWORD *)(v3 + 16) = 0; *(_DWORD *)(v3 + 20) = 0; *(_DWORD *)(v3 + 24) = 0; v5 = *(_DWORD *)(v3 + 4); *(float *)(v3 + 40) = 1.0; v6 = *(_DWORD *)(v3 + 16); v7 = *(_DWORD *)(v3 + 20); LOBYTE(v13) = 1; a2 = v5; if ( v6 != v7 ) *(_DWORD *)(v3 + 20) = v6; sub_632B30(v3 + 16, *(_DWORD *)(v3 + 16), 0x10u, (int)&a2); *(_DWORD *)(v3 + 32) = 7; *(_DWORD *)(v3 + 36) = 8; return v3; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00633260) -------------------------------------------------------- int __thiscall sub_633260(void *this, int a2, unsigned __int16 *a3, int *a4) { void *v4; // edi@1 div_t v5; // qax@1 int v6; // ebx@1 int v7; // eax@3 int v8; // ecx@3 int v9; // esi@3 int v10; // edi@3 int v11; // eax@3 unsigned __int16 v12; // ax@5 int *v13; // edx@8 int v14; // eax@10 int result; // eax@16 int **v16; // edx@19 int *v17; // ecx@19 int v18; // [sp+Ch] [bp-4h]@1 int *v19; // [sp+1Ch] [bp+Ch]@10 v4 = this; v18 = (int)this; v5 = div((*a3 ^ 0xDEADBEEF) & 0x7FFFFFFF, 127773); v6 = (16807 * v5.rem - 2836 * v5.quot + ((char)-(16807 * v5.rem - 2836 * v5.quot < 0) & 0x7FFFFFFF)) & *((_DWORD *)v4 + 8); if ( *((_DWORD *)v4 + 9) <= (unsigned int)v6 ) v6 += -1 - (*((_DWORD *)v4 + 8) >> 1); v7 = *((_DWORD *)v4 + 4); v8 = *(_DWORD *)(v7 + 8 * v6); v9 = *((_DWORD *)v4 + 1); v10 = (int)((char *)v4 + 4); v11 = v7 + 8 * v6; if ( v9 == v8 || (v9 = **(_DWORD **)(v11 + 4), v9 == v8) ) goto LABEL_8; v12 = *a3; while ( 1 ) { v9 = *(_DWORD *)(v9 + 4); if ( *(_WORD *)(v9 + 8) <= v12 ) break; if ( v9 == v8 ) goto LABEL_8; } if ( *(_WORD *)(v9 + 8) < v12 ) { v9 = *(_DWORD *)v9; LABEL_8: v13 = a4; if ( v9 != *a4 ) { sub_632900(v10, v9, v10, (int)a4, *a4, 1u); v13 = a4; } v14 = *(_DWORD *)(v18 + 16) + 8 * v6; v19 = v13; if ( *(_DWORD *)v14 == *(_DWORD *)v10 ) { *(_DWORD *)v14 = v13; *(_DWORD *)(*(_DWORD *)(v18 + 16) + 8 * v6 + 4) = v13; } else { if ( *(_DWORD *)v14 == v9 ) { *(_DWORD *)v14 = v13; } else { v16 = *(int ***)(v14 + 4); v17 = *v16; *(_DWORD *)(v14 + 4) = *v16; if ( v17 != v19 ) *(_DWORD *)(*(_DWORD *)(v18 + 16) + 8 * v6 + 4) = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v18 + 16) + 8 * v6 + 4) + 4); } } sub_632F80(v18); result = a2; *(_DWORD *)a2 = a4; *(_BYTE *)(a2 + 4) = 1; return result; } if ( a4 != *(int **)v10 ) { *(_DWORD *)a4[1] = *a4; *(_DWORD *)(*a4 + 4) = a4[1]; operator delete(a4); --*(_DWORD *)(v10 + 4); } result = a2; *(_DWORD *)a2 = v9; *(_BYTE *)(a2 + 4) = 0; return result; } //----- (006333B0) -------------------------------------------------------- int __thiscall sub_6333B0(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ST08_4@3 bool v5; // bl@3 int v6; // [sp+4h] [bp-8h]@3 int v7; // [sp+14h] [bp+8h]@2 result = a2; v3 = this; if ( **(_DWORD **)(this + 4) != a2 ) { v7 = *(_DWORD *)(a2 + 4); do { v4 = **(_DWORD **)(v3 + 4); v5 = v4 == v7; result = sub_633260((void *)v3, (int)&v6, (unsigned __int16 *)(v4 + 8), (int *)v4); } while ( !v5 ); } return result; } //----- (00633400) -------------------------------------------------------- int __thiscall sub_633400(void *this, int a2, int a3, int a4) { int v4; // edi@1 div_t v5; // qax@1 int v6; // ebx@1 int v7; // eax@3 int v8; // ecx@3 int v9; // esi@3 int v10; // eax@3 int v11; // eax@9 int v12; // eax@11 int v13; // edx@14 int v14; // ecx@15 int result; // eax@18 int v16; // [sp+18h] [bp+Ch]@11 v4 = (int)this; v5 = div((*(_WORD *)a3 ^ 0xDEADBEEF) & 0x7FFFFFFF, 127773); v6 = (16807 * v5.rem - 2836 * v5.quot + ((char)-(16807 * v5.rem - 2836 * v5.quot < 0) & 0x7FFFFFFF)) & *(_DWORD *)(v4 + 32); if ( *(_DWORD *)(v4 + 36) <= (unsigned int)v6 ) v6 += -1 - (*(_DWORD *)(v4 + 32) >> 1); v7 = *(_DWORD *)(v4 + 16); v8 = *(_DWORD *)(v7 + 8 * v6); v9 = *(_DWORD *)(v4 + 4); v10 = v7 + 8 * v6; if ( v9 != v8 ) { v9 = **(_DWORD **)(v10 + 4); if ( v9 != v8 ) { while ( 1 ) { v9 = *(_DWORD *)(v9 + 4); if ( *(_WORD *)a3 >= *(_WORD *)(v9 + 8) ) break; if ( v9 == v8 ) goto LABEL_9; } v9 = *(_DWORD *)v9; } } LABEL_9: v11 = a4; if ( v9 != *(_DWORD *)a4 ) { sub_632900(v4 + 4, v9, v4 + 4, a4, *(_DWORD *)a4, 1u); v11 = a4; } v16 = v11; v12 = *(_DWORD *)(v4 + 16) + 8 * v6; if ( *(_DWORD *)v12 != *(_DWORD *)(v4 + 4) ) { if ( *(_DWORD *)v12 == v9 ) { v13 = a4; } else { v14 = **(_DWORD **)(v12 + 4); *(_DWORD *)(v12 + 4) = v14; if ( v14 == v16 ) goto LABEL_18; v12 = *(_DWORD *)(v4 + 16) + 8 * v6 + 4; v13 = *(_DWORD *)(*(_DWORD *)v12 + 4); } *(_DWORD *)v12 = v13; goto LABEL_18; } *(_DWORD *)v12 = a4; *(_DWORD *)(*(_DWORD *)(v4 + 16) + 8 * v6 + 4) = v16; LABEL_18: sub_633030(v4); result = a2; *(_DWORD *)a2 = a4; *(_BYTE *)(a2 + 4) = 1; return result; } //----- (00633500) -------------------------------------------------------- int __thiscall sub_633500(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ST08_4@3 bool v5; // bl@3 char v6; // [sp+4h] [bp-8h]@3 int v7; // [sp+14h] [bp+8h]@2 result = a2; v3 = this; if ( **(_DWORD **)(this + 4) != a2 ) { v7 = *(_DWORD *)(a2 + 4); do { v4 = **(_DWORD **)(v3 + 4); v5 = v4 == v7; result = sub_633400((void *)v3, (int)&v6, v4 + 8, v4); } while ( !v5 ); } return result; } //----- (00633550) -------------------------------------------------------- int __thiscall sub_633550(int this) { int v1; // esi@1 int v2; // eax@5 unsigned int v3; // edi@6 int v4; // edx@7 void *v5; // eax@8 int v6; // edx@10 int v7; // ecx@12 v1 = this; if ( *(_DWORD *)(this + 12) ) { operator delete(*(void **)(this + 12)); *(_DWORD *)(v1 + 12) = 0; } if ( *(_DWORD *)(v1 + 20) ) { if ( !*(_DWORD *)(v1 + 8) ) { v2 = *(_DWORD *)(v1 + 16); if ( v2 ) { v3 = 0; if ( *(_WORD *)(v2 + 2) > 0u ) { do { v4 = *(_DWORD *)(v1 + 20); if ( *(_DWORD *)(v4 + 4 * v3) ) { v5 = *(void **)(*(_DWORD *)(v4 + 4 * v3) + 668); if ( v5 ) sub_6530A4(v5); v6 = *(_DWORD *)(*(_DWORD *)(v1 + 20) + 4 * v3); if ( *(_DWORD *)(v6 + 672) ) sub_6530A4(*(void **)(v6 + 672)); v7 = *(_DWORD *)(*(_DWORD *)(v1 + 20) + 4 * v3); if ( *(_DWORD *)(v7 + 676) ) sub_6530A4(*(void **)(v7 + 676)); operator delete(*(void **)(*(_DWORD *)(v1 + 20) + 4 * v3)); } ++v3; } while ( v3 < *(_WORD *)(*(_DWORD *)(v1 + 16) + 2) ); } } } sub_6530A4(*(void **)(v1 + 20)); *(_DWORD *)(v1 + 20) = 0; } if ( *(_DWORD *)(v1 + 16) ) { operator delete(*(void **)(v1 + 16)); *(_DWORD *)(v1 + 16) = 0; } return sub_6330E0(v1 + 28); } //----- (00633640) -------------------------------------------------------- void *__thiscall sub_633640(void *this, int a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = a2; sub_633170((int)((char *)this + 28), (int)((char *)&a2 + 3), (int)((char *)&a2 + 3)); sub_633170((int)((char *)v2 + 72), (int)((char *)&a2 + 3), (int)((char *)&a2 + 3)); *((_DWORD *)v2 + 1) = &unk_14D42D50; *((_DWORD *)v2 + 6) = 1; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; *((_DWORD *)v2 + 4) = 0; *((_DWORD *)v2 + 5) = 0; return v2; } //----- (006336D0) -------------------------------------------------------- void __thiscall sub_6336D0(int this) { int v1; // esi@1 v1 = this; sub_633550(this); sub_632F10(v1 + 72); sub_632F10(v1 + 28); } //----- (00633930) -------------------------------------------------------- FILE *__thiscall sub_633930(int this, const char *a2) { int v2; // esi@1 FILE *result; // eax@1 FILE *v4; // edi@1 int v5; // eax@3 __int32 v6; // ebx@3 void *v7; // eax@3 size_t v8; // ebx@7 void *v9; // eax@7 void *v10; // eax@10 int v11; // ecx@10 int v12; // eax@10 unsigned int v13; // edx@10 int v14; // ecx@11 int v15; // edi@11 FILE *v16; // [sp+10h] [bp+8h]@1 v2 = this; sub_633550(this); result = fopen(a2, "rb"); v4 = result; v16 = result; if ( !result ) { *(_DWORD *)(v2 + 24) = 1; return result; } v5 = _fileno(result); v6 = _filelength(v5); v7 = (void *)operator new(4u); *(_DWORD *)(v2 + 16) = v7; if ( fread(v7, 4u, 1u, v4) != 1 ) { *(_DWORD *)(v2 + 24) = 2; LABEL_9: sub_633550(v2); fclose(v4); return 0; } if ( **(_WORD **)(v2 + 16) != 6 ) { *(_DWORD *)(v2 + 24) = 3; goto LABEL_9; } v8 = v6 - 4; v9 = (void *)unknown_libname_130(v8); *(_DWORD *)(v2 + 12) = v9; if ( fread(v9, v8, 1u, v4) != 1 ) { *(_DWORD *)(v2 + 24) = 4; goto LABEL_9; } v10 = (void *)unknown_libname_130(4 * *(_WORD *)(*(_DWORD *)(v2 + 16) + 2) | -(*(_WORD *)(*(_DWORD *)(v2 + 16) + 2) / 0x40000000u != 0)); v11 = *(_DWORD *)(v2 + 16); *(_DWORD *)(v2 + 20) = v10; memset(v10, 0, 4 * *(_WORD *)(v11 + 2)); v12 = *(_DWORD *)(v2 + 12); v13 = 0; if ( *(_WORD *)(*(_DWORD *)(v2 + 16) + 2) > 0u ) { do { *(_DWORD *)(*(_DWORD *)(v2 + 20) + 4 * v13) = v12; *(_DWORD *)(v12 + 668) = v12 + 684; v14 = *(_WORD *)(v12 + 660); *(_DWORD *)(v12 + 672) = v14 + v12 + 684; v15 = *(_WORD *)(v12 + 664); *(_DWORD *)(v12 + 676) = v15 + v14 + v12 + 684; ++v13; v12 += v14 + v15 + *(_WORD *)(v12 + 662) + 680; } while ( v13 < *(_WORD *)(*(_DWORD *)(v2 + 16) + 2) ); v4 = v16; } fclose(v4); *(_DWORD *)(v2 + 24) = 0; loc_633730(v2); return (FILE *)1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00633AC0) -------------------------------------------------------- FILE *__thiscall sub_633AC0(int this, const char *a2) { int v2; // edi@1 FILE *result; // eax@1 FILE *v4; // ebx@1 int v5; // eax@3 void *v6; // eax@3 int v7; // eax@6 int v8; // eax@8 int v9; // esi@9 int v10; // eax@10 int v11; // ST18_4@10 int v12; // eax@10 size_t v13; // ST08_4@10 void *v14; // ST04_4@10 unsigned int v15; // [sp+10h] [bp+8h]@8 v2 = this; sub_633550(this); result = fopen(a2, "rb"); v4 = result; if ( !result ) { *(_DWORD *)(v2 + 24) = 1; return result; } v5 = _fileno(result); _filelength(v5); v6 = (void *)operator new(4u); *(_DWORD *)(v2 + 16) = v6; if ( fread(v6, 4u, 1u, v4) != 1 ) { *(_DWORD *)(v2 + 24) = 2; LABEL_5: sub_633550(v2); fclose(v4); return 0; } v7 = *(_DWORD *)(v2 + 16); if ( *(_WORD *)v7 != 6 ) { *(_DWORD *)(v2 + 24) = 3; goto LABEL_5; } *(_DWORD *)(v2 + 20) = unknown_libname_130(4 * *(_WORD *)(v7 + 2) | -(*(_WORD *)(v7 + 2) / 0x40000000u != 0)); v8 = *(_DWORD *)(v2 + 16); *(_DWORD *)(v2 + 24) = 4; v15 = 0; if ( *(_WORD *)(v8 + 2) > 0u ) { do { v9 = operator new(0x2A8u); memset((void *)v9, 0, 0x2A8u); *(_DWORD *)(*(_DWORD *)(v2 + 20) + 4 * v15) = v9; if ( fread((void *)v9, 0x2A8u, 1u, v4) != 1 ) goto LABEL_5; v10 = unknown_libname_130(*(_WORD *)(v9 + 660)); v11 = *(_WORD *)(v9 + 664); *(_DWORD *)(v9 + 668) = v10; *(_DWORD *)(v9 + 672) = unknown_libname_130(v11); v12 = unknown_libname_130(*(_WORD *)(v9 + 662)); v13 = *(_WORD *)(v9 + 660); v14 = *(void **)(v9 + 668); *(_DWORD *)(v9 + 676) = v12; if ( fread(v14, v13, 1u, v4) != 1 ) goto LABEL_5; if ( fread(*(void **)(v9 + 672), *(_WORD *)(v9 + 664), 1u, v4) != 1 || fread(*(void **)(v9 + 676), *(_WORD *)(v9 + 662), 1u, v4) != 1 ) goto LABEL_5; *(_DWORD *)v9 = *(_WORD *)(v9 + 660) + *(_WORD *)(v9 + 662) + *(_WORD *)(v9 + 664) + 680; ++v15; } while ( v15 < *(_WORD *)(*(_DWORD *)(v2 + 16) + 2) ); } fclose(v4); *(_DWORD *)(v2 + 24) = 0; loc_633730(v2); return (FILE *)1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00633CD0) -------------------------------------------------------- FILE *__thiscall sub_633CD0(int this, const char *a2, int a3) { FILE *result; // eax@2 *(_DWORD *)(this + 8) = a3; if ( a3 ) result = sub_633930(this, a2); else result = sub_633AC0(this, a2); return result; } //----- (00633D00) -------------------------------------------------------- void *__thiscall sub_633D00(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_7041CC; sub_637890((int)((char *)this + 1340)); *((_BYTE *)v1 + 2004) = 0; *((_DWORD *)v1 + 1) = off_86DBC8; *((_DWORD *)v1 + 2) = off_86DC58; *((_DWORD *)v1 + 3) = &off_86DC78; *((_DWORD *)v1 + 4) = &off_86DC90; *((_DWORD *)v1 + 5) = &off_86DC98; sub_637960((char *)v1 + 1340, (int)" ,\t\r\n"); return v1; } // 7041CC: using guessed type int (__stdcall *off_7041CC)(int); // 86DBC8: using guessed type char *off_86DBC8[19]; // 86DC58: using guessed type char *off_86DC58[9]; // 86DC78: using guessed type char *off_86DC78; // 86DC90: using guessed type void *off_86DC90; // 86DC98: using guessed type void *off_86DC98; //----- (00633D90) -------------------------------------------------------- signed int __stdcall sub_633D90(unsigned int *a1) { unsigned int *v1; // esi@1 v1 = a1; if ( a1 ) { while ( _ismbcdigit(*(_BYTE *)v1) ) { v1 = (unsigned int *)((char *)v1 + 1); if ( !*(_BYTE *)v1 ) return 1; } } return 0; } //----- (00633DD0) -------------------------------------------------------- signed int __thiscall sub_633DD0(int this, const unsigned __int8 *a2) { int v2; // edi@1 int v3; // esi@1 const unsigned __int8 *v4; // ebx@2 signed int result; // eax@5 v2 = this; v3 = 0; if ( *(_DWORD *)(this + 56) <= 0 ) goto LABEL_11; v4 = (const unsigned __int8 *)(this + 60); while ( _mbsicmp(v4, a2) ) { ++v3; v4 += 20; if ( v3 >= *(_DWORD *)(v2 + 56) ) return 0; } if ( *(_DWORD *)(v2 + 20 * v3 + 76) ) result = sub_637BF0(v2 + 1340, *(_DWORD *)(v2 + 20 * v3 + 76)); else LABEL_11: result = 0; return result; } //----- (00633E30) -------------------------------------------------------- signed int __thiscall sub_633E30(void *this) { return sub_637900((int)((char *)this + 1340)); } //----- (00633E40) -------------------------------------------------------- signed int __thiscall sub_633E40(int this, int a2, int a3, int a4, int a5) { signed int result; // eax@2 int v6; // eax@3 switch ( a4 ) { case 0: case 1: case 2: case 3: case 4: case 5: *(_DWORD *)a2 = *(_DWORD *)(this + 4 * a4 + 24); result = 1; break; case 6: v6 = sub_62BF80(*(_DWORD *)(this + 2104), *(_WORD *)(this + 2108)); if ( !v6 ) goto LABEL_6; *(_DWORD *)a2 = *(_BYTE *)(v6 + 23); goto LABEL_5; case 7: LABEL_5: *(_DWORD *)a2 = a5; result = 1; break; default: LABEL_6: result = 0; break; } return result; } //----- (00633EF0) -------------------------------------------------------- int __thiscall sub_633EF0(int this, int a2) { int v2; // esi@1 int v3; // edi@1 unsigned int v4; // eax@1 v2 = **(_DWORD **)(this + 56); v3 = a2; *(_DWORD *)a2 = v2; std::_Lockit::_Lockit(0); v4 = *(_DWORD *)(v2 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(v2 + 4) = v4 + 1; std::_Lockit::__Lockit(&a2); return v3; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00633F30) -------------------------------------------------------- int __cdecl sub_633F30(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (00633F50) -------------------------------------------------------- void *__thiscall sub_633F50(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 45) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 45) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (00633FA0) -------------------------------------------------------- int __thiscall sub_633FA0(void *this) { int v1; // esi@1 *(_DWORD *)this = &off_7041CC; v1 = (int)((char *)this + 1340); sub_637900((int)((char *)this + 1340)); return sub_637D00(v1); } // 7041CC: using guessed type int (__stdcall *off_7041CC)(int); //----- (00634000) -------------------------------------------------------- signed int __thiscall sub_634000(int this, const unsigned __int8 *a2, int a3) { int v3; // esi@1 int v4; // edi@1 const unsigned __int8 *v5; // ebx@2 signed int v6; // ecx@5 signed int result; // eax@5 int v8; // ecx@6 v3 = this; v4 = 0; if ( *(_DWORD *)(this + 56) <= 0 ) goto LABEL_5; v5 = (const unsigned __int8 *)(this + 60); while ( _mbsicmp(v5, a2) ) { ++v4; v5 += 20; if ( v4 >= *(_DWORD *)(v3 + 56) ) goto LABEL_5; } if ( *(_DWORD *)(v3 + 20 * v4 + 76) ) { result = 0; } else { LABEL_5: v6 = *(_DWORD *)(v3 + 56); result = 0; if ( v6 < 64 ) { v8 = v3 + 4 * (5 * v6 + 15); *(_DWORD *)v8 = 0; *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 12) = 0; _mbsnbcpy((unsigned __int8 *)(v3 + 4 * (5 * *(_DWORD *)(v3 + 56) + 15)), a2, 0xFu); *(_DWORD *)(v3 + 20 * *(_DWORD *)(v3 + 56) + 76) = a3; result = 1; ++*(_DWORD *)(v3 + 56); } } return result; } //----- (00634090) -------------------------------------------------------- int __thiscall sub_634090(int this, int a2, int a3) { int result; // eax@1 *(_DWORD *)(this + 16) = this + 8; *(_DWORD *)(this + 32) = this + 24; *(_DWORD *)(this + 36) = this + 28; *(_BYTE *)(this + 80) = a3 == 1; *(_DWORD *)(this + 48) = this + 40; *(_BYTE *)(this + 73) = 0; *(_DWORD *)(this + 20) = this + 12; *(_DWORD *)(this + 52) = this + 44; *(_DWORD *)(this + 12) = 0; **(_DWORD **)(this + 36) = 0; **(_DWORD **)(this + 52) = 0; **(_DWORD **)(this + 16) = 0; **(_DWORD **)(this + 32) = 0; **(_DWORD **)(this + 48) = 0; result = a2; if ( a2 ) { *(_DWORD *)(this + 16) = a2 + 8; *(_DWORD *)(this + 20) = a2 + 8; *(_DWORD *)(this + 32) = a2; *(_DWORD *)(this + 36) = a2; *(_DWORD *)(this + 48) = a2 + 4; *(_DWORD *)(this + 52) = a2 + 4; } *(_DWORD *)(this + 84) = a2; *(_DWORD *)(this + 76) = dword_14D42D54; *(_DWORD *)(this + 68) = 0; return result; } // 14D42D54: using guessed type int dword_14D42D54; //----- (00634130) -------------------------------------------------------- signed int __stdcall sub_634130(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { *(_DWORD *)a4 = a2; *(_DWORD *)a7 = a5; return 3; } //----- (00634150) -------------------------------------------------------- signed int __stdcall sub_634150(int a1, int a2, int a3, int a4) { *(_DWORD *)a4 = a2; return 3; } //----- (00634170) -------------------------------------------------------- unsigned int __stdcall sub_634170(int a1, int a2, int a3, unsigned int a4) { unsigned int result; // eax@1 result = a3 - a2; if ( a4 < a3 - a2 ) result = a4; return result; } //----- (00634190) -------------------------------------------------------- bool __cdecl sub_634190(char a1, FILE *a2) { return sub_654AB0(a1, a2) != -1; } //----- (006341D0) -------------------------------------------------------- signed int __thiscall sub_6341D0(void *this) { void *v1; // esi@1 signed int result; // eax@4 v1 = this; if ( *((_DWORD *)this + 21) && (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 12))(-1) != -1 && fflush(*((FILE **)v1 + 21)) < 0 ) result = -1; else result = 0; return result; } //----- (00634240) -------------------------------------------------------- int __thiscall sub_634240(int this, int a2) { int v2; // esi@1 unsigned int v3; // eax@1 v2 = this; v3 = **(_DWORD **)(this + 32); if ( v3 && **(_DWORD **)(this + 16) < v3 && (a2 == -1 || *(_BYTE *)(v3 - 1) == a2) ) { ++**(_DWORD **)(this + 48); --**(_DWORD **)(this + 32); return a2 != -1 ? a2 : 0; } if ( *(_DWORD *)(this + 84) && a2 != -1 ) { if ( !*(_DWORD *)(this + 68) && ungetc((unsigned __int8)a2, *(FILE **)(this + 84)) != -1 ) return a2; if ( **(_DWORD **)(v2 + 32) != v2 + 72 ) { *(_BYTE *)(v2 + 72) = a2; std::basic_filebuf>::_Set_back(v2); return a2; } } return -1; } // 634200: using guessed type int __thiscall std__basic_filebuf_char_std__char_traits_char_____Set_back(_DWORD); //----- (006342D0) -------------------------------------------------------- int __thiscall sub_6342D0(int this) { int v1; // esi@1 unsigned int v2; // ecx@1 int result; // eax@3 int v4; // edi@4 v1 = this; v2 = **(_DWORD **)(this + 32); if ( v2 && v2 < v2 + **(_DWORD **)(v1 + 48) ) { result = *(_BYTE *)v2; } else { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 28))(v1); v4 = result; if ( result != -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 16))(v1, result); result = v4; } } return result; } //----- (00634320) -------------------------------------------------------- int __thiscall sub_634320(int this, char *a2, __int64 a3) { int v3; // edi@1 FILE *v4; // ecx@1 int v5; // eax@4 int result; // eax@7 v3 = this; v4 = *(FILE **)(this + 84); if ( !v4 || (a2 || a3 ? (v5 = 0) : (v5 = 4), setvbuf(v4, a2, v5, a3)) ) { result = 0; } else { sub_634090(v3, *(_DWORD *)(v3 + 84), 1); result = v3; } return result; } //----- (00634380) -------------------------------------------------------- signed int __cdecl sub_634380(int a1, int a2) { char v2; // bl@1 int v3; // esi@3 char *v4; // eax@5 char v6; // [sp+Ch] [bp-34h]@7 int v7; // [sp+30h] [bp-10h]@1 int v8; // [sp+3Ch] [bp-4h]@3 v2 = 0; v7 = 0; if ( a1 && !*(_DWORD *)a1 ) { v3 = operator new(8u); v7 = v3; v8 = 0; if ( v3 ) { if ( *(_DWORD *)(*(_DWORD *)a2 + 24) ) v4 = *(char **)(*(_DWORD *)a2 + 24); else v4 = (char *)(*(_DWORD *)a2 + 28); sub_4D9080(&v6, v4); v2 = 1; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)v3 = &off_7041D4; } else { v3 = 0; } v8 = -1; *(_DWORD *)a1 = v3; if ( v2 & 1 ) sub_4D9130(&v6); } return 2; } // 7041D4: using guessed type int (__thiscall *off_7041D4)(void *, char); //----- (00634430) -------------------------------------------------------- int __cdecl sub_634430(int a1) { int v1; // ebx@1 int v2; // edi@5 int v3; // esi@5 int v4; // eax@5 int v5; // ecx@6 int v6; // eax@8 int v7; // esi@9 unsigned int v8; // eax@18 char v10; // [sp+10h] [bp-24h]@16 char v11; // [sp+1Ch] [bp-18h]@21 char v12; // [sp+20h] [bp-14h]@4 int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 std::_Lockit::_Lockit(0); v1 = dword_14D42D58; v14 = 0; v13 = dword_14D42D58; if ( !dword_87709C ) { std::_Lockit::_Lockit(0); if ( !dword_87709C ) { ++dword_154DC980; dword_87709C = dword_154DC980; } std::_Lockit::__Lockit(&v12); } v2 = a1; v3 = dword_87709C; v4 = *(_DWORD *)a1; if ( (unsigned int)dword_87709C >= *(_DWORD *)(*(_DWORD *)a1 + 12) ) { v5 = 0; } else { v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4 * dword_87709C); if ( v5 ) { LABEL_11: v7 = v5; LABEL_12: if ( v7 ) goto LABEL_21; goto LABEL_13; } } if ( !*(_BYTE *)(v4 + 20) ) goto LABEL_11; v6 = sub_651AEE(); if ( (unsigned int)v3 < *(_DWORD *)(v6 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4 * v3); goto LABEL_12; } LABEL_13: if ( v1 ) { v7 = v1; } else { if ( sub_634380((int)&v13, v2) == -1 ) { sub_653952(&v10, (unsigned int)"bad cast"); _CxxThrowException(&v10, &unk_73A6FC); } v7 = v13; dword_14D42D58 = v13; std::_Lockit::_Lockit(0); v8 = *(_DWORD *)(v7 + 4); if ( v8 < 0xFFFFFFFF ) *(_DWORD *)(v7 + 4) = v8 + 1; std::_Lockit::__Lockit(&a1); std::locale::facet::_Facet_Register(v7); } LABEL_21: v14 = -1; std::_Lockit::__Lockit(&v11); return v7; } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651A77: using guessed type _DWORD __cdecl std__locale__facet___Facet_Register(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 87709C: using guessed type int dword_87709C; // 14D42D58: using guessed type int dword_14D42D58; // 154DC980: using guessed type int dword_154DC980; //----- (00634570) -------------------------------------------------------- int __thiscall sub_634570(void *this, int a2) { int v2; // edi@1 int v3; // eax@1 int v4; // esi@1 int result; // eax@1 v2 = (int)this; v3 = sub_634430(a2); v4 = v3; result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 4))(v3); if ( (_BYTE)result ) { *(_DWORD *)(v2 + 68) = 0; } else { *(_DWORD *)(v2 + 68) = v4; result = sub_4D6340(v2); } return result; } //----- (006345B0) -------------------------------------------------------- int __thiscall sub_6345B0(int this, const char *a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@2 int v6; // eax@3 int v7; // edi@3 int result; // eax@4 v4 = this; if ( *(_DWORD *)(this + 84) || (v5 = (int)sub_65271E(a2, a3, a4)) == 0 ) { result = 0; } else { sub_634090(v4, v5, 1); v6 = sub_633EF0(v4, (int)&a4); v7 = sub_634430(v6); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 4))(v7) ) { *(_DWORD *)(v4 + 68) = 0; sub_4D5600(&a4); result = v4; } else { *(_DWORD *)(v4 + 68) = v7; sub_4D6340(v4); sub_4D5600(&a4); result = v4; } } return result; } //----- (00634690) -------------------------------------------------------- int __cdecl sub_634690(int a1, int a2, char a3) { int v3; // ecx@1 int v4; // edi@1 int v5; // ecx@4 int **v6; // eax@4 int v7; // eax@6 int v8; // ecx@11 bool v9; // zf@11 int v10; // eax@12 int v11; // ecx@19 int v12; // eax@20 int v13; // ecx@23 void *v15; // ecx@26 int v16; // [sp+0h] [bp-30h]@1 int v17; // [sp+10h] [bp-20h]@1 char v18; // [sp+14h] [bp-1Ch]@3 int v19; // [sp+18h] [bp-18h]@1 char v20; // [sp+1Fh] [bp-11h]@1 int *v21; // [sp+20h] [bp-10h]@1 int v22; // [sp+2Ch] [bp-4h]@3 v21 = &v16; v3 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1 + 56); v4 = 0; v19 = 0; v20 = 0; v17 = a1; if ( v3 ) (*(void (**)(void))(*(_DWORD *)v3 + 4))(); v22 = 0; v18 = sub_626F40(1); v22 = 1; if ( !v18 ) goto LABEL_29; LOBYTE(v22) = 2; sub_4233F0(a2, 0, 0xFFFFFFFFu); v5 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1 + 56); v6 = *(int ***)(v5 + 32); if ( *v6 && **(_DWORD **)(v5 + 48) > 0 ) v7 = *(_BYTE *)*v6; else v7 = (*(int (**)(void))(*(_DWORD *)v5 + 24))(); while ( 1 ) { if ( v7 == -1 ) { v19 |= 1u; goto LABEL_17; } if ( v7 == a3 ) break; if ( *(_DWORD *)(a2 + 16) >= 0xFFFFFFFEu ) { v19 |= 2u; goto LABEL_17; } sub_4DCB30(a2, 1u, v7); v15 = *(void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1 + 56); v20 = 1; v7 = sub_626D60(v15); } v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1 + 56); v9 = **(_DWORD **)(v8 + 32) == 0; v20 = 1; if ( v9 || (v10 = *(_DWORD *)(v8 + 48), *(_DWORD *)v10 <= 0) ) { (*(void (**)(void))(*(_DWORD *)v8 + 28))(); } else { --*(_DWORD *)v10; ++**(_DWORD **)(v8 + 32); } LABEL_17: v22 = 1; v4 = v19; if ( !v20 ) LABEL_29: v4 |= 2u; v11 = a1 + *(_DWORD *)(*(_DWORD *)a1 + 4); if ( v4 ) { v12 = v4 | *(_DWORD *)(v11 + 12); if ( !*(_DWORD *)(v11 + 56) ) LOBYTE(v12) = v12 | 4; sub_4D6510(v11, v12, 0); } v13 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v17 + 4) + v17 + 56); v22 = -1; if ( v13 ) (*(void (**)(void))(*(_DWORD *)v13 + 8))(); return a1; } // 626F40: using guessed type _DWORD __stdcall sub_626F40(char); //----- (00634807) -------------------------------------------------------- int (*__usercall sub_634807(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 + 8) + *(_DWORD *)(**(_DWORD **)(a1 + 8) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_634838; } // 634838: using guessed type int loc_634838(); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00634850) -------------------------------------------------------- int __cdecl sub_634850(int a1, int a2) { int v2; // ecx@1 int v3; // edi@1 int v4; // eax@4 int v5; // eax@4 int v6; // ebx@4 unsigned int v7; // eax@5 int v8; // edi@8 int v9; // edi@8 int v10; // edx@10 int v11; // ecx@10 unsigned int v12; // eax@10 signed int v13; // ebx@14 int v14; // ecx@16 int **v15; // eax@16 int v16; // eax@18 int v17; // eax@24 int v18; // ecx@26 int v19; // eax@27 int v20; // ecx@30 void *v22; // ecx@34 int v23; // [sp+0h] [bp-40h]@1 int v24; // [sp+10h] [bp-30h]@1 char v25; // [sp+14h] [bp-2Ch]@3 int v26; // [sp+18h] [bp-28h]@4 int v27; // [sp+20h] [bp-20h]@8 int v28; // [sp+24h] [bp-1Ch]@4 int v29; // [sp+28h] [bp-18h]@1 char v30; // [sp+2Fh] [bp-11h]@1 int *v31; // [sp+30h] [bp-10h]@1 int v32; // [sp+3Ch] [bp-4h]@3 v31 = &v23; v2 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1 + 56); v3 = 0; v29 = 0; v30 = 0; v24 = a1; if ( v2 ) (*(void (**)(void))(*(_DWORD *)v2 + 4))(); v32 = 0; v25 = sub_626F40(0); v32 = 1; if ( v25 ) { v4 = sub_4D5680(a1 + *(_DWORD *)(*(_DWORD *)a1 + 4), (int)&v28); LOBYTE(v32) = 2; v5 = sub_4D9C60(v4); v6 = v28; v26 = v5; LOBYTE(v32) = 1; if ( v28 ) { std::_Lockit::_Lockit(0); v7 = *(_DWORD *)(v6 + 4); if ( v7 && v7 < 0xFFFFFFFF ) *(_DWORD *)(v6 + 4) = v7 - 1; v8 = -(*(_DWORD *)(v6 + 4) == 0); std::_Lockit::__Lockit(&v27); v9 = v6 & v8; if ( v9 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v9)(v9, 1); } sub_4233F0(a2, 0, 0xFFFFFFFFu); v10 = *(_DWORD *)(*(_DWORD *)a1 + 4); v11 = *(_DWORD *)(v10 + a1 + 36); v12 = *(_DWORD *)(v10 + a1 + 32); LOBYTE(v32) = 3; if ( v11 >= 0 && (v11 > 0 || v12) && (v27 = v11, v12 < 0xFFFFFFFE) ) { v27 = v11; v13 = v12; } else { v13 = -2; } v14 = *(_DWORD *)(v10 + a1 + 56); v15 = *(int ***)(v14 + 32); if ( *v15 && **(_DWORD **)(v14 + 48) > 0 ) v16 = *(_BYTE *)*v15; else v16 = (*(int (**)(void))(*(_DWORD *)v14 + 24))(); while ( v13 ) { if ( v16 == -1 ) { v29 |= 1u; break; } if ( *(_BYTE *)(*(_DWORD *)(v26 + 16) + 2 * (unsigned __int8)v16) & 0x48 ) break; sub_4DCB30(a2, 1u, v16); v22 = *(void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + a1 + 56); v30 = 1; --v13; v16 = sub_626D60(v22); } v32 = 1; v3 = v29; } v17 = *(_DWORD *)(*(_DWORD *)a1 + 4); *(_DWORD *)(v17 + a1 + 32) = 0; *(_DWORD *)(v17 + a1 + 36) = 0; if ( !v30 ) v3 |= 2u; v18 = a1 + *(_DWORD *)(*(_DWORD *)a1 + 4); if ( v3 ) { v19 = v3 | *(_DWORD *)(v18 + 12); if ( !*(_DWORD *)(v18 + 56) ) LOBYTE(v19) = v19 | 4; sub_4D6510(v18, v19, 0); } v20 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v24 + 4) + v24 + 56); v32 = -1; if ( v20 ) (*(void (**)(void))(*(_DWORD *)v20 + 8))(); return a1; } // 626F40: using guessed type _DWORD __stdcall sub_626F40(char); // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00634A34) -------------------------------------------------------- int (*__usercall sub_634A34(int a1))() { int v1; // eax@1 int v2; // ecx@1 int v3; // ecx@3 v1 = *(_DWORD *)(a1 + 8) + *(_DWORD *)(**(_DWORD **)(a1 + 8) + 4); v2 = *(_DWORD *)(v1 + 12) | 4; if ( !*(_DWORD *)(v1 + 56) ) v2 = *(_DWORD *)(v1 + 12) | 4; v3 = v2 & 0x17; *(_DWORD *)(v1 + 12) = v3; if ( v3 & *(_DWORD *)(v1 + 16) ) _CxxThrowException(0, 0); *(_DWORD *)(a1 - 4) = 1; return loc_634A65; } // 634A65: using guessed type int loc_634A65(); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (00634A80) -------------------------------------------------------- #error "634C4C: positive sp value has been found (funcsize=150)" //----- (00634C50) -------------------------------------------------------- int __thiscall sub_634C50(int this) { int v1; // esi@1 int v2; // esi@3 int v3; // eax@3 int result; // eax@3 int v5; // ecx@5 int v6; // eax@6 int i; // eax@10 void *v8; // eax@11 void *v9; // edx@11 int v10; // eax@13 const void *v11; // eax@17 int v12; // esi@19 void *v13; // eax@21 void *v14; // edi@28 int v15; // edi@30 int v16; // ecx@31 int v17; // esi@32 char *v18; // [sp+Ch] [bp-38h]@13 int v19; // [sp+10h] [bp-34h]@13 unsigned __int8 Dst; // [sp+17h] [bp-2Dh]@13 void *Src; // [sp+18h] [bp-2Ch]@10 unsigned int v22; // [sp+28h] [bp-1Ch]@10 unsigned int v23; // [sp+2Ch] [bp-18h]@10 unsigned int v24; // [sp+34h] [bp-10h]@1 int v25; // [sp+40h] [bp-4h]@10 int v26; // [sp+44h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v1 = this; if ( **(_DWORD **)(this + 32) && **(_DWORD **)(this + 32) < (unsigned int)(**(_DWORD **)(this + 32) + **(_DWORD **)(this + 48)) ) { --**(_DWORD **)(this + 48); v2 = *(_DWORD *)(this + 32); v3 = (*(_DWORD *)v2)++; return *(_BYTE *)v3; } if ( *(_DWORD *)(this + 84) ) { v5 = *(_DWORD *)(this + 16); if ( *(_DWORD *)v5 == v1 + 72 ) { v6 = *(_DWORD *)(v1 + 64); *(_DWORD *)v5 = *(_DWORD *)(v1 + 60); **(_DWORD **)(v1 + 32) = v6; **(_DWORD **)(v1 + 48) = 0; } if ( *(_DWORD *)(v1 + 68) ) { v23 = 15; v22 = 0; LOBYTE(Src) = 0; v25 = 0; for ( i = sub_656AE5(*(FILE **)(v1 + 84)); i != -1; i = sub_656AE5(*(FILE **)(v1 + 84)) ) { sub_4DCB30((int)&Src, 1u, i); v8 = Src; v9 = Src; if ( v23 < 0x10 ) { v9 = &Src; v8 = &Src; } v10 = (*(int (__stdcall **)(int, void *, char *, int *, unsigned __int8 *, void **, char **))(**(_DWORD **)(v1 + 68) + 16))( v1 + 76, v8, (char *)v9 + v22, &v19, &Dst, &Src, &v18); if ( v10 < 0 ) break; if ( v10 <= 1 ) { if ( (unsigned __int8 *)v18 != &Dst ) { v14 = Src; if ( v23 < 0x10 ) v14 = &Src; v15 = (int)((char *)v14 + v22 - v19); while ( v15 > 0 ) { v16 = *(_BYTE *)(v15-- + v19 - 1); ungetc(v16, *(FILE **)(v1 + 84)); } v17 = Dst; sub_610240((int)&Src); return v17; } v13 = Src; if ( v23 < 0x10 ) v13 = &Src; sub_4233F0((int)&Src, 0, v19 - (_DWORD)v13); } else { if ( v10 != 3 ) break; if ( v22 >= 1 ) { v11 = Src; if ( v23 < 0x10 ) v11 = &Src; memcpy_s(&Dst, 1u, v11, 1u); v12 = Dst; sub_610240((int)&Src); return v12; } } } sub_610240((int)&Src); } else { result = sub_656AE5(*(FILE **)(v1 + 84)); if ( result != -1 ) return (unsigned __int8)result; } } return -1; } // 86FEB8: using guessed type int __security_cookie; //----- (00634E40) -------------------------------------------------------- char __thiscall sub_634E40(void *this) { void *v1; // edi@1 const void *v2; // eax@5 unsigned int v3; // ebx@5 void **v4; // edx@6 int v5; // eax@8 int v6; // eax@9 int v7; // ecx@10 void *v8; // ecx@13 size_t v9; // esi@15 void *v11; // [sp+Ch] [bp-30h]@8 void *v12; // [sp+10h] [bp-2Ch]@4 int v13; // [sp+14h] [bp-28h]@4 char v14; // [sp+18h] [bp-24h]@4 unsigned int v15; // [sp+20h] [bp-1Ch]@4 unsigned int v16; // [sp+24h] [bp-18h]@4 unsigned int v17; // [sp+2Ch] [bp-10h]@1 int v18; // [sp+38h] [bp-4h]@4 int v19; // [sp+3Ch] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = this; if ( !*((_DWORD *)this + 17) || !*((_BYTE *)this + 73) ) return 1; if ( (*(int (__stdcall **)(signed int))(*(_DWORD *)this + 12))(-1) == -1 ) return 0; v16 = 15; v12 = 0; v13 = 0; v15 = 8; v14 = 0; v18 = 0; LABEL_5: v2 = v12; v3 = v16; while ( 1 ) { v4 = (void **)v2; if ( v3 < 0x10 ) { v4 = &v12; v2 = &v12; } v5 = (*(int (__stdcall **)(char *, const void *, void **, void **))(**((_DWORD **)v1 + 17) + 24))( (char *)v1 + 76, v2, &v4[v15 / 4], &v11); if ( v5 ) break; *((_BYTE *)v1 + 73) = 0; LABEL_13: v3 = v16; v2 = v12; v8 = v12; if ( v16 < 0x10 ) v8 = &v12; v9 = v11 - v8; if ( v11 != v8 ) { if ( v16 < 0x10 ) v2 = &v12; if ( v9 != fwrite(v2, 1u, v9, *((FILE **)v1 + 21)) ) { v7 = (int)&v12; goto LABEL_24; } v3 = v16; v2 = v12; } if ( !*((_BYTE *)v1 + 73) ) { v7 = (int)&v12; goto LABEL_27; } if ( !v9 ) { sub_4DCB30((int)&v12, 8u, 0); goto LABEL_5; } } v6 = v5 - 1; if ( !v6 ) goto LABEL_13; v7 = (int)&v12; if ( v6 != 2 ) { LABEL_24: sub_610240(v7); return 0; } LABEL_27: sub_610240(v7); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00634F80) -------------------------------------------------------- char __cdecl sub_634F80(int a1, int a2) { int v2; // eax@1 unsigned int v3; // ecx@2 int v4; // eax@2 int *v5; // eax@5 int v6; // eax@7 char result; // al@8 void *v8; // [sp+4h] [bp-8h]@6 int v9; // [sp+8h] [bp-4h]@1 v2 = sub_62B040((int)&unk_14D42D5C, a1); v9 = v2; if ( (void *)v2 == dword_14D42D60 ) goto LABEL_12; v3 = *(_DWORD *)(v2 + 28); v4 = v2 + 12; if ( *(_DWORD *)(v4 + 20) >= 0x10u ) v4 = *(_DWORD *)v4; if ( sub_422730(a1, 0, *(_DWORD *)(a1 + 16), v4, v3) < 0 ) { LABEL_12: v8 = dword_14D42D60; v5 = (int *)&v8; } else { v5 = &v9; } v6 = *v5; if ( (void *)v6 == dword_14D42D60 ) { result = 0; } else { *(_DWORD *)a2 = *(_DWORD *)(v6 + 40); result = 1; } return result; } //----- (00635000) -------------------------------------------------------- signed int __thiscall sub_635000(int this, signed int a2) { signed int result; // eax@1 int v3; // esi@1 unsigned int v4; // edx@2 int v5; // ecx@3 int v6; // esi@4 int v7; // eax@4 int v8; // edx@6 int v9; // ecx@7 const void *v10; // eax@12 unsigned int v11; // ebx@12 void **v12; // edx@13 int v13; // eax@15 void *v14; // ecx@17 size_t v15; // edi@19 int v16; // ecx@26 int *v17; // [sp+Ch] [bp-38h]@15 void *v18; // [sp+10h] [bp-34h]@15 int v19; // [sp+14h] [bp-30h]@11 void *v20; // [sp+18h] [bp-2Ch]@11 int v21; // [sp+1Ch] [bp-28h]@11 char v22; // [sp+20h] [bp-24h]@11 unsigned int v23; // [sp+28h] [bp-1Ch]@11 unsigned int v24; // [sp+2Ch] [bp-18h]@11 unsigned int v25; // [sp+34h] [bp-10h]@1 int v26; // [sp+40h] [bp-4h]@11 int v27; // [sp+44h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; result = 0; v3 = this; if ( a2 != -1 ) { v4 = **(_DWORD **)(this + 36); if ( v4 ) { v5 = *(_DWORD *)(this + 52); if ( v4 < v4 + *(_DWORD *)v5 ) { --*(_DWORD *)v5; v6 = *(_DWORD *)(v3 + 36); v7 = (*(_DWORD *)v6)++; *(_BYTE *)v7 = a2; return a2; } } if ( !*(_DWORD *)(v3 + 84) ) return -1; v8 = *(_DWORD *)(v3 + 16); if ( *(_DWORD *)v8 == v3 + 72 ) { v9 = *(_DWORD *)(v3 + 64); *(_DWORD *)v8 = *(_DWORD *)(v3 + 60); **(_DWORD **)(v3 + 32) = v9; **(_DWORD **)(v3 + 48) = 0; } if ( !*(_DWORD *)(v3 + 68) ) { if ( sub_654AB0((char)a2, *(FILE **)(v3 + 84)) != -1 ) return a2; return -1; } LOBYTE(v19) = a2; v24 = 15; v20 = 0; v21 = 0; v23 = 8; v22 = 0; v26 = 0; LABEL_12: v10 = v20; v11 = v24; while ( 1 ) { v12 = (void **)v10; if ( v11 < 0x10 ) { v12 = &v20; v10 = &v20; } v13 = (*(int (__stdcall **)(int, int *, char *, int **, const void *, void **, void **))(**(_DWORD **)(v3 + 68) + 20))( v3 + 76, &v19, (char *)&v19 + 1, &v17, v10, &v12[v23 / 4], &v18); if ( v13 < 0 ) goto LABEL_33; if ( v13 > 1 ) break; v11 = v24; v10 = v20; v14 = v20; if ( v24 < 0x10 ) v14 = &v20; v15 = v18 - v14; if ( v18 != v14 ) { if ( v24 < 0x10 ) v10 = &v20; if ( v15 != fwrite(v10, 1u, v15, *(FILE **)(v3 + 84)) ) goto LABEL_33; v11 = v24; v10 = v20; } *(_BYTE *)(v3 + 73) = 1; if ( v17 != &v19 ) { sub_610240((int)&v20); return a2; } if ( !v15 ) { v16 = (int)&v20; if ( v23 < 0x20 ) { sub_4DCB30((int)&v20, 8u, 0); goto LABEL_12; } goto LABEL_34; } } if ( v13 != 3 ) { LABEL_33: v16 = (int)&v20; LABEL_34: sub_610240(v16); return -1; } if ( sub_634190(v19, *(FILE **)(v3 + 84)) ) { sub_610240((int)&v20); result = a2; } else { sub_610240((int)&v20); result = -1; } } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (006351F0) -------------------------------------------------------- int __thiscall sub_6351F0(int this, unsigned int a2, fpos_t a3, int Origin, int a5) { int v5; // esi@1 unsigned int v6; // ebx@4 unsigned int v7; // edi@4 int v8; // ecx@12 int v9; // eax@13 unsigned __int64 v10; // qax@14 int v11; // ecx@14 v5 = this; if ( **(_DWORD **)(this + 32) != this + 72 || Origin != 1 || *(_DWORD *)(this + 68) ) { v7 = HIDWORD(a3); v6 = a3; } else { v6 = a3 - 1; v7 = ((unsigned __int64)(a3 - 1) >> 32) - 1; } if ( !*(_DWORD *)(this + 84) || !sub_634E40((void *)this) || (v7 | v6 || Origin != 1) && _fseeki64(*(FILE **)(v5 + 84), __PAIR__(v7, v6), Origin) || fgetpos(*(FILE **)(v5 + 84), &a3) ) { v10 = __PAIR__(dword_708FE0, a2); *(_DWORD *)(a2 + 4) = dword_708FE4; *(_DWORD *)a2 = HIDWORD(v10); *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 16) = 0; } else { v8 = *(_DWORD *)(v5 + 16); if ( *(_DWORD *)v8 == v5 + 72 ) { v9 = *(_DWORD *)(v5 + 64); *(_DWORD *)v8 = *(_DWORD *)(v5 + 60); **(_DWORD **)(v5 + 32) = v9; **(_DWORD **)(v5 + 48) = 0; } v10 = __PAIR__(HIDWORD(a3), a2); *(_DWORD *)(a2 + 8) = a3; v11 = *(_DWORD *)(v5 + 76); *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 12) = HIDWORD(v10); *(_DWORD *)(a2 + 16) = v11; } return v10; } // 708FE0: using guessed type int dword_708FE0; // 708FE4: using guessed type int dword_708FE4; //----- (006352E0) -------------------------------------------------------- int __thiscall sub_6352E0(void *this, unsigned int a2, __int64 Offset, fpos_t a4, int a5, int a6, int a7) { void *v7; // esi@1 int v8; // ecx@1 unsigned __int64 v9; // qax@7 int v10; // ecx@7 fpos_t v12; // [sp+Ch] [bp-8h]@1 v7 = this; v8 = 0; v12 = a4; if ( !*((_DWORD *)v7 + 21) ) goto LABEL_9; if ( !sub_634E40(v7) || fsetpos(*((FILE **)v7 + 21), &v12) || Offset && _fseeki64(*((FILE **)v7 + 21), Offset, 1) || fgetpos(*((FILE **)v7 + 21), &v12) ) { v8 = 0; LABEL_9: LODWORD(v9) = a2; *(_DWORD *)a2 = dword_708FE0; *(_DWORD *)(a2 + 4) = dword_708FE4; *(_DWORD *)(a2 + 8) = v8; *(_DWORD *)(a2 + 12) = v8; *(_DWORD *)(a2 + 16) = v8; return v9; } *((_DWORD *)v7 + 19) = a5; std::basic_filebuf>::_Reset_back(v7); v9 = __PAIR__(HIDWORD(v12), a2); *(_DWORD *)(a2 + 8) = v12; v10 = *((_DWORD *)v7 + 19); *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 12) = HIDWORD(v9); *(_DWORD *)(a2 + 16) = v10; return v9; } // 633EC0: using guessed type int __thiscall std__basic_filebuf_char_std__char_traits_char_____Reset_back(_DWORD); // 708FE0: using guessed type int dword_708FE0; // 708FE4: using guessed type int dword_708FE4; //----- (006353C0) -------------------------------------------------------- int __thiscall sub_6353C0(int this) { int v1; // esi@1 int v2; // edi@1 int v3; // ecx@6 int result; // eax@6 v1 = this; v2 = this; if ( !*(_DWORD *)(this + 84) ) goto LABEL_9; if ( !sub_634E40((void *)this) ) v2 = 0; if ( fclose(*(FILE **)(v1 + 84)) ) LABEL_9: v2 = 0; *(_DWORD *)(v1 + 16) = v1 + 8; *(_BYTE *)(v1 + 80) = 0; *(_BYTE *)(v1 + 73) = 0; *(_DWORD *)(v1 + 32) = v1 + 24; *(_DWORD *)(v1 + 36) = v1 + 28; *(_DWORD *)(v1 + 20) = v1 + 12; *(_DWORD *)(v1 + 48) = v1 + 40; *(_DWORD *)(v1 + 52) = v1 + 44; *(_DWORD *)(v1 + 12) = 0; **(_DWORD **)(v1 + 36) = 0; **(_DWORD **)(v1 + 52) = 0; **(_DWORD **)(v1 + 16) = 0; **(_DWORD **)(v1 + 32) = 0; **(_DWORD **)(v1 + 48) = 0; *(_DWORD *)(v1 + 84) = 0; v3 = dword_14D42D54; result = v2; *(_DWORD *)(v1 + 68) = 0; *(_DWORD *)(v1 + 76) = v3; return result; } // 14D42D54: using guessed type int dword_14D42D54; //----- (00635450) -------------------------------------------------------- int __cdecl sub_635450(int a1, int a2, int a3) { *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 15; *(_BYTE *)a1 = 0; sub_423FC0((void *)a1, a2, 0, 0xFFFFFFFFu); *(_DWORD *)(a1 + 28) = *(_DWORD *)a3; return a1; } //----- (00635490) -------------------------------------------------------- int __thiscall sub_635490(int this) { int v1; // esi@1 const unsigned __int8 *v2; // eax@1 int result; // eax@2 unsigned int v4; // ecx@3 int v5; // ebx@3 const unsigned __int8 *v6; // ebx@6 int v7; // ST04_4@7 unsigned int *v8; // ebx@11 const unsigned __int8 *v9; // edi@14 int v10; // edx@19 const char v11; // cl@20 int v12; // esi@23 const char v13; // cl@24 unsigned int *v14; // ebx@26 unsigned int *v15; // ebx@34 const unsigned __int8 *v16; // ebx@37 const unsigned __int8 *v17; // ebx@38 int v18; // ebx@49 int v19; // eax@49 int v20; // eax@51 int v21; // eax@52 int v22; // eax@57 int v23; // edi@57 int v24; // eax@57 int v25; // eax@59 char v26; // bl@59 int v27; // edx@60 int v28; // ecx@69 int v29; // eax@70 int v30; // edi@70 int v31; // eax@70 int v32; // ecx@76 int v33; // edx@77 int v34; // eax@77 int v35; // ecx@82 int v36; // edx@83 int v37; // ecx@87 int v38; // ecx@90 const unsigned __int8 *v39; // ebx@102 const unsigned __int8 *v40; // edi@103 int v41; // ecx@109 int v42; // edx@118 int v43; // [sp+Ch] [bp-58h]@51 char v44; // [sp+13h] [bp-51h]@51 int v45; // [sp+14h] [bp-50h]@3 unsigned int v46; // [sp+18h] [bp-4Ch]@1 char v47; // [sp+1Ch] [bp-48h]@59 char v48; // [sp+38h] [bp-2Ch]@51 unsigned int v49; // [sp+54h] [bp-10h]@1 int v50; // [sp+60h] [bp-4h]@51 int v51; // [sp+64h] [bp+0h]@1 v49 = (unsigned int)&v51 ^ __security_cookie; v1 = this; v2 = (const unsigned __int8 *)sub_637CA0(this + 1340, (int)&v46, *(_DWORD *)(this + 4), 0x22u); if ( !v2 ) { result = v1 + 2000; *(_DWORD *)(v1 + 2000) = 35; return result; } v4 = v46; v5 = v1 + 2000; v45 = v1 + 2000; *(_DWORD *)(v1 + 2000) = v46; if ( v4 > 0x11 ) { if ( v4 <= 0x1A ) { if ( v4 != 26 ) { switch ( v4 ) { case 0x14u: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 7u); v28 = v46; if ( v46 == -1 ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 20; goto LABEL_121; } v29 = *(_DWORD *)(v1 + 8); *(_DWORD *)(v1 + 2005) = v46; *(_DWORD *)(v1 + 2009) = *(_DWORD *)(v1 + 4 * v28 + 24); v30 = sub_637CA0(v1 + 1340, (int)&v46, v29, 7u); v31 = v46; if ( v46 != -1 ) { *(_DWORD *)(v1 + 2013) = v46; *(_DWORD *)(v1 + 2017) = *(_DWORD *)(v1 + 4 * v31 + 24); return v45; } if ( !sub_633D90((unsigned int *)v30) ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 20; *(_DWORD *)(v1 + 2009) = v30; return v45; } goto LABEL_73; case 0x15u: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 7u); v32 = v46; if ( v46 == -1 ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 21; goto LABEL_121; } v33 = *(_DWORD *)(v1 + 8); *(_DWORD *)(v1 + 2005) = v46; *(_DWORD *)(v1 + 2009) = *(_DWORD *)(v1 + 4 * v32 + 24); v30 = sub_637CA0(v1 + 1340, (int)&v46, v33, 7u); v34 = v46; if ( v46 != -1 ) goto LABEL_78; if ( !sub_633D90((unsigned int *)v30) ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 21; *(_DWORD *)(v1 + 2009) = v30; return v45; } goto LABEL_73; case 0x16u: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 7u); v35 = v46; if ( v46 == -1 ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 22; goto LABEL_121; } v36 = *(_DWORD *)(v1 + 8); *(_DWORD *)(v1 + 2005) = v46; *(_DWORD *)(v1 + 2009) = *(_DWORD *)(v1 + 4 * v35 + 24); v30 = sub_637CA0(v1 + 1340, (int)&v46, v36, 7u); v34 = v46; if ( v46 == -1 ) { if ( sub_633D90((unsigned int *)v30) ) { LABEL_73: *(_DWORD *)(v1 + 2013) = 7; *(_DWORD *)(v1 + 2017) = atoi((const char *)v30); } else { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 22; *(_DWORD *)(v1 + 2009) = v30; } } else { LABEL_78: *(_DWORD *)(v1 + 2013) = v34; *(_DWORD *)(v1 + 2017) = *(_DWORD *)(v1 + 4 * v34 + 24); } return v45; case 0x17u: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 6u); v37 = v46; if ( v46 != -1 ) goto LABEL_88; *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 23; goto LABEL_121; case 0x18u: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 6u); v38 = v46; if ( v46 != -1 ) goto LABEL_91; *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 24; goto LABEL_121; case 0x19u: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 6u); v37 = v46; if ( v46 != -1 ) { LABEL_88: *(_DWORD *)(v1 + 2005) = v37; *(_DWORD *)(v1 + 2009) = *(_DWORD *)(v1 + 4 * v37 + 24); return v45; } *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 25; break; case 0x12u: goto LABEL_111; default: goto LABEL_116; } goto LABEL_121; } v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 6u); v38 = v46; if ( v46 == -1 ) { *(_DWORD *)(v1 + 2005) = 26; LABEL_120: *(_DWORD *)v5 = 0; goto LABEL_121; } goto LABEL_91; } if ( v4 > 0x1E ) { if ( v4 > 0x21 ) { if ( v4 == 35 ) return v45; if ( v4 == -1 ) { if ( *v2 == **(_BYTE **)(*(_DWORD *)(v1 + 4) + 76) ) { v42 = *(_DWORD *)(v1 + 1984); *(_DWORD *)v5 = 19; *(_DWORD *)(v1 + 2005) = v2 + 1; *(_DWORD *)(v1 + 2009) = v42; return v45; } *(_DWORD *)(v1 + 2005) = 29; goto LABEL_120; } } else { if ( v4 == 33 ) { v9 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v9) ) { LABEL_15: *(_WORD *)(v1 + 2005) = atoi((const char *)v9); } else { *(_DWORD *)v5 = 0; *(_DWORD *)(v1 + 2005) = 33; *(_DWORD *)(v1 + 2009) = v9; } return v45; } v41 = v4 - 31; if ( !v41 || v41 == 1 ) { LABEL_111: *(_DWORD *)(v1 + 2005) = sub_637A00(v1 + 1340); return v45; } } } else { if ( v4 == 30 ) { *(_DWORD *)(v1 + 2005) = sub_637A00(v1 + 1340); v39 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v39) ) { *(_BYTE *)(v1 + 2009) = atoi((const char *)v39); v40 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v40) ) { *(_DWORD *)(v1 + 2010) = atoi((const char *)v40); } else { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 30; *(_DWORD *)(v1 + 2009) = v40; } } else { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 30; *(_DWORD *)(v1 + 2009) = v39; } return v45; } if ( v4 == 27 ) { v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 6u); v38 = v46; if ( v46 == -1 ) { *(_DWORD *)(v1 + 2005) = 27; goto LABEL_120; } LABEL_91: *(_DWORD *)(v1 + 2005) = v38; *(_DWORD *)(v1 + 2009) = *(_DWORD *)(v1 + 4 * v38 + 24); return v45; } } LABEL_116: *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 29; LABEL_121: *(_DWORD *)(v1 + 2009) = v2; return v45; } if ( v4 != 17 ) { switch ( v4 ) { case 2u: v6 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v6) ) { *(_DWORD *)(v1 + 2005) = atoi((const char *)v6); v7 = *(_DWORD *)(v1 + 16); *(_WORD *)(v1 + 2013) = -1; v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, v7, 2u); if ( v46 ) { if ( v46 != 1 ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 2; goto LABEL_121; } *(_DWORD *)(v1 + 2009) = 1; } else { *(_DWORD *)(v1 + 2009) = 0; sub_637BE0(v1 + 1340); v8 = (unsigned int *)sub_637A00(v1 + 1340); if ( !sub_633D90(v8) ) goto LABEL_29; *(_WORD *)(v1 + 2013) = atoi((const char *)v8); } } else { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 2; *(_DWORD *)(v1 + 2009) = v6; } return v45; case 3u: v9 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v9) ) goto LABEL_15; *(_DWORD *)v5 = 0; *(_DWORD *)(v1 + 2005) = 3; *(_DWORD *)(v1 + 2009) = v9; return v45; case 4u: v2 = sub_637A00(v1 + 1340); if ( strlen((const char *)v2) >= 0x40 ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 4; goto LABEL_121; } v10 = v1 + 2005 - (_DWORD)v2; do { v11 = *v2; v2[v10] = *v2; ++v2; } while ( v11 ); v2 = sub_637A00(v1 + 1340); if ( strlen((const char *)v2) >= 0x20 ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 4; goto LABEL_121; } v12 = v1 - (_DWORD)v2; do { v13 = *v2; v2[v12 + 2069] = *v2; ++v2; } while ( v13 ); return v45; case 5u: case 0xAu: goto LABEL_26; case 6u: case 0xBu: sub_637BE0(v1 + 1340); v14 = (unsigned int *)sub_637A00(v1 + 1340); if ( sub_633D90(v14) ) goto LABEL_27; *(_WORD *)(v1 + 2005) = *(_WORD *)(v1 + 2108); sub_637BF0(v1 + 1340, 0); return v45; case 7u: case 9u: case 0xCu: sub_637BE0(v1 + 1340); v14 = (unsigned int *)sub_637A00(v1 + 1340); if ( sub_633D90(v14) ) goto LABEL_27; *(_WORD *)(v1 + 2005) = *(_WORD *)(v1 + 2108); sub_637BF0(v1 + 1340, 0); return v45; case 8u: v15 = (unsigned int *)sub_637A00(v1 + 1340); if ( !sub_633D90(v15) ) { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 8; *(_DWORD *)(v1 + 2009) = v15; return v45; } *(_BYTE *)(v1 + 2007) = atoi((const char *)v15); LABEL_26: sub_637BE0(v1 + 1340); v14 = (unsigned int *)sub_637A00(v1 + 1340); if ( sub_633D90(v14) ) { LABEL_27: *(_WORD *)(v1 + 2005) = atoi((const char *)v14); return v45; } *(_WORD *)(v1 + 2005) = *(_WORD *)(v1 + 2108); goto LABEL_29; case 0xDu: v16 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v16) ) { *(_WORD *)(v1 + 2005) = atoi((const char *)v16); *(_DWORD *)(v1 + 2007) = 1; sub_637BE0(v1 + 1340); v17 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 20), 1u); if ( v46 ) goto LABEL_44; *(_DWORD *)(v1 + 2007) = -1; } else { *(_DWORD *)v45 = 0; LABEL_41: *(_DWORD *)(v1 + 2005) = 14; *(_DWORD *)(v1 + 2009) = v16; } break; case 0xEu: v16 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v16) ) goto LABEL_43; *(_DWORD *)v45 = 0; goto LABEL_41; case 0xFu: v16 = sub_637A00(v1 + 1340); if ( sub_633D90((unsigned int *)v16) ) { LABEL_43: *(_WORD *)(v1 + 2005) = atoi((const char *)v16); *(_DWORD *)(v1 + 2007) = 1; sub_637BE0(v1 + 1340); v17 = sub_637A00(v1 + 1340); LABEL_44: if ( sub_633D90((unsigned int *)v17) ) *(_DWORD *)(v1 + 2007) = atoi((const char *)v17); else LABEL_29: sub_637BF0(v1 + 1340, 0); } else { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 15; *(_DWORD *)(v1 + 2009) = v16; } break; case 1u: case 0x10u: return v45; default: goto LABEL_116; } return v45; } v18 = sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 8), 7u); v19 = v46; if ( v46 != -1 ) { *(_DWORD *)(v1 + 2005) = v46; *(_DWORD *)(v1 + 2009) = *(_DWORD *)(v1 + 4 * v19 + 24); LABEL_56: v2 = (const unsigned __int8 *)sub_637CA0(v1 + 1340, (int)&v46, *(_DWORD *)(v1 + 12), 6u); if ( v46 != -1 ) { v22 = *(_DWORD *)(v1 + 8); *(_DWORD *)(v1 + 2013) = v46; v23 = sub_637CA0(v1 + 1340, (int)&v46, v22, 7u); v24 = v46; if ( v46 == -1 ) { v25 = sub_4244F0((int)&v47, (char *)v23); v50 = 1; v26 = sub_634F80(v25, (int)&v43); sub_610240((int)&v47); if ( v26 ) { v27 = v43; *(_DWORD *)(v1 + 2005) = 7; *(_DWORD *)(v1 + 2009) = v27; } else { if ( sub_633D90((unsigned int *)v23) ) { *(_DWORD *)(v1 + 2017) = 7; *(_DWORD *)(v1 + 2021) = atoi((const char *)v23); } else { *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 17; *(_DWORD *)(v1 + 2009) = v23; } } } else { *(_DWORD *)(v1 + 2017) = v46; *(_DWORD *)(v1 + 2021) = *(_DWORD *)(v1 + 4 * v24 + 24); } return v45; } *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 17; goto LABEL_121; } v20 = sub_4244F0((int)&v48, (char *)v18); v50 = 0; v44 = sub_634F80(v20, (int)&v43); v50 = -1; sub_610240((int)&v48); if ( v44 ) { v21 = v43; *(_DWORD *)(v1 + 2005) = 7; LABEL_55: *(_DWORD *)(v1 + 2009) = v21; goto LABEL_56; } if ( sub_633D90((unsigned int *)v18) ) { *(_DWORD *)(v1 + 2005) = 7; v21 = atoi((const char *)v18); goto LABEL_55; } *(_DWORD *)v45 = 0; *(_DWORD *)(v1 + 2005) = 17; *(_DWORD *)(v1 + 2009) = v18; return v45; } // 86FEB8: using guessed type int __security_cookie; //----- (00636030) -------------------------------------------------------- signed int __thiscall sub_636030(int this, unsigned int a2) { unsigned int v2; // esi@1 int v3; // edi@1 signed int result; // eax@2 int v5; // eax@7 bool v6; // cf@11 unsigned int v7; // [sp+8h] [bp-4h]@5 v2 = a2; v3 = this; switch ( *(_DWORD *)a2 ) { 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: case 0x1E: case 0x1F: case 0x20: case 0x21: goto LABEL_2; case 0x10: sub_637B40(this + 1340); return 1; case 0x11: if ( !sub_633E40(this, (int)&a2, *(_WORD *)(this + 2108), *(_DWORD *)(a2 + 5), *(_DWORD *)(a2 + 9)) || !sub_633E40(v3, (int)&v7, *(_WORD *)(v3 + 2108), *(_DWORD *)(v2 + 17), *(_DWORD *)(v2 + 21)) ) goto LABEL_2; switch ( *(_DWORD *)(v2 + 13) ) { case 0: v5 = a2 == v7; goto LABEL_14; case 1: v5 = a2 != v7; goto LABEL_14; case 2: v5 = a2 < v7; goto LABEL_14; case 3: v5 = v7 < a2; goto LABEL_14; case 4: v6 = v7 < a2; goto LABEL_13; case 5: v6 = a2 < v7; LABEL_13: v5 = 1 - v6; LABEL_14: if ( !v5 ) goto LABEL_15; goto LABEL_24; default: LABEL_15: sub_635490(v3); result = 1; break; } return result; case 0x12: result = sub_633DD0(this, *(const unsigned __int8 **)(a2 + 5)); if ( !result ) return result; goto LABEL_24; case 0x14: if ( !sub_633E40(this, (int)&a2, *(_WORD *)(this + 2108), *(_DWORD *)(a2 + 13), *(_DWORD *)(a2 + 17)) ) goto LABEL_2; *(_DWORD *)(v3 + 4 * *(_DWORD *)(v2 + 5) + 24) = a2; return 1; case 0x15: if ( !sub_633E40(this, (int)&a2, *(_WORD *)(this + 2108), *(_DWORD *)(a2 + 13), *(_DWORD *)(a2 + 17)) ) goto LABEL_2; *(_DWORD *)(v3 + 4 * *(_DWORD *)(v2 + 5) + 24) += a2; return 1; case 0x16: if ( sub_633E40(this, (int)&a2, *(_WORD *)(this + 2108), *(_DWORD *)(a2 + 13), *(_DWORD *)(a2 + 17)) ) { *(_DWORD *)(v3 + 4 * *(_DWORD *)(v2 + 5) + 24) -= a2; LABEL_24: result = 1; } else { LABEL_2: result = 0; } return result; default: goto LABEL_24; } } //----- (00636250) -------------------------------------------------------- int __thiscall sub_636250(int this, char a2) { int v2; // esi@1 int v3; // ecx@2 int v4; // eax@3 v2 = this; *(_DWORD *)this = &off_7041FC; if ( *(_DWORD *)(this + 84) ) { v3 = *(_DWORD *)(this + 16); if ( *(_DWORD *)v3 == v2 + 72 ) { v4 = *(_DWORD *)(v2 + 64); *(_DWORD *)v3 = *(_DWORD *)(v2 + 60); **(_DWORD **)(v2 + 32) = v4; **(_DWORD **)(v2 + 48) = 0; } } if ( *(_BYTE *)(v2 + 80) ) sub_6353C0(v2); sub_4D8210(v2); if ( a2 & 1 ) operator delete((void *)v2); return v2; } // 7041FC: using guessed type int (__thiscall *off_7041FC)(void *, char); //----- (006362F0) -------------------------------------------------------- signed int __thiscall sub_6362F0(int this, __int16 a2, const char *a3) { int v3; // esi@1 int v4; // edi@2 int v5; // eax@3 signed int result; // eax@12 int v7; // [sp+10h] [bp+8h]@1 v3 = this; *(_WORD *)(this + 2108) = a2; *(_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; v7 = this + 1340; if ( !sub_637EA0(this + 1340, a3) ) goto LABEL_16; *(_DWORD *)(v3 + 2112) = 0; v4 = v3 + 2000; do { sub_635490(v3); v5 = *(_DWORD *)v4; if ( !*(_DWORD *)v4 ) ++*(_DWORD *)(v3 + 2112); if ( v5 == 16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v3)(v3, v3 + 2000); if ( *(_DWORD *)v4 == 19 ) { if ( !sub_634000(v3, *(const unsigned __int8 **)(v3 + 2005), *(_DWORD *)(v3 + 2009)) ) ++*(_DWORD *)(v3 + 2112); } } while ( *(_DWORD *)v4 != 35 ); if ( *(_DWORD *)(v3 + 2112) ) LABEL_16: result = 0; else result = sub_637A80(v7); return result; } //----- (006363C0) -------------------------------------------------------- void *__thiscall sub_6363C0(void *this, int a2) { void *v2; // ebx@1 int v3; // edi@3 char v4; // al@3 bool v5; // zf@3 v2 = this; if ( a2 ) { *(_DWORD *)this = &unk_704240; *((_DWORD *)this + 26) = &off_6C5C24; } *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this + 4)) = &off_6C5C14; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 3) = 0; v3 = (int)((char *)this + *(_DWORD *)(*(_DWORD *)this + 4)); sub_4D6640((int)((char *)this + *(_DWORD *)(*(_DWORD *)this + 4))); *(_DWORD *)(v3 + 56) = (char *)v2 + 16; *(_DWORD *)(v3 + 60) = 0; v4 = sub_4DC510(v3, 32); v5 = *(_DWORD *)(v3 + 56) == 0; *(_BYTE *)(v3 + 64) = v4; if ( v5 ) sub_4D6510(v3, *(_BYTE *)(v3 + 12) | 4, 0); *(_DWORD *)((char *)v2 + *(_DWORD *)(*(_DWORD *)v2 + 4)) = &off_70423C; sub_4D8A00((char *)v2 + 16); *((_DWORD *)v2 + 12) = (char *)v2 + 40; *((_DWORD *)v2 + 4) = &off_7041FC; *((_BYTE *)v2 + 96) = 0; *((_BYTE *)v2 + 89) = 0; *((_DWORD *)v2 + 8) = (char *)v2 + 24; *((_DWORD *)v2 + 13) = (char *)v2 + 44; *((_DWORD *)v2 + 16) = (char *)v2 + 56; *((_DWORD *)v2 + 9) = (char *)v2 + 28; *((_DWORD *)v2 + 17) = (char *)v2 + 60; *((_DWORD *)v2 + 7) = 0; **((_DWORD **)v2 + 13) = 0; **((_DWORD **)v2 + 17) = 0; **((_DWORD **)v2 + 8) = 0; **((_DWORD **)v2 + 12) = 0; **((_DWORD **)v2 + 16) = 0; *((_DWORD *)v2 + 25) = 0; *((_DWORD *)v2 + 23) = dword_14D42D54; *((_DWORD *)v2 + 21) = 0; return v2; } // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C24: using guessed type int (__thiscall *off_6C5C24)(void *, char); // 7041FC: using guessed type int (__thiscall *off_7041FC)(void *, char); // 70423C: using guessed type int (__stdcall *off_70423C)(char); // 14D42D54: using guessed type int dword_14D42D54; //----- (006364F0) -------------------------------------------------------- int __thiscall sub_6364F0(void *this) { int v1; // esi@1 int v2; // ecx@2 int v3; // eax@3 int result; // eax@6 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 26) + 4) - 104) = &off_70423C; v1 = (int)((char *)this - 88); *((_DWORD *)this - 22) = &off_7041FC; if ( *((_DWORD *)this - 1) ) { v2 = *(_DWORD *)(v1 + 16); if ( *(_DWORD *)v2 == v1 + 72 ) { v3 = *(_DWORD *)(v1 + 64); *(_DWORD *)v2 = *(_DWORD *)(v1 + 60); **(_DWORD **)(v1 + 32) = v3; **(_DWORD **)(v1 + 48) = 0; } } if ( *(_BYTE *)(v1 + 80) ) sub_6353C0(v1); sub_4D8210(v1); result = *(_DWORD *)(v1 - 16); *(_DWORD *)(*(_DWORD *)(result + 4) + v1 - 16) = &off_6C5C14; return result; } // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 7041FC: using guessed type int (__thiscall *off_7041FC)(void *, char); // 70423C: using guessed type int (__stdcall *off_70423C)(char); //----- (006365C0) -------------------------------------------------------- void *__thiscall sub_6365C0(void *this, char a2) { void *v2; // edi@1 void *v3; // esi@1 v2 = (char *)this - 104; v3 = this; sub_6364F0(this); *(_DWORD *)v3 = &off_6C59A0; std::ios_base::_Ios_base_dtor(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); //----- (00636600) -------------------------------------------------------- int __thiscall sub_636600(void *this, void *a2) { void *v2; // esi@1 int v3; // edi@1 void *v4; // ebx@3 int v6; // [sp+0h] [bp-38h]@1 int (__thiscall **v7)(void *, char); // [sp+10h] [bp-28h]@6 int v8; // [sp+1Ch] [bp-1Ch]@2 int v9; // [sp+20h] [bp-18h]@2 void *v10; // [sp+24h] [bp-14h]@1 int *v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@2 v11 = &v6; v2 = this; v3 = operator new(0x30u); v10 = (void *)v3; if ( !v3 ) { a2 = 0; std::exception::exception(&a2); v7 = &off_6A1FD4; _CxxThrowException(&v7, &unk_733E50); } *(_DWORD *)v3 = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(v3 + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(v3 + 44) = 0; v12 = 0; v9 = v3 + 12; v8 = v3 + 12; LOBYTE(v12) = 1; if ( v3 != -12 ) { v4 = a2; *(_DWORD *)(v3 + 32) = 15; *(_DWORD *)(v3 + 28) = 0; *(_BYTE *)(v3 + 12) = 0; sub_4E0E00((void **)(v3 + 12), (void **)v4); *(_DWORD *)(v3 + 40) = *((_DWORD *)v4 + 7); } return v3; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006366E0) -------------------------------------------------------- char __cdecl sub_6366E0(const char *a1) { int v1; // esi@1 int v2; // ecx@2 int v3; // eax@2 char *v4; // ecx@2 char v5; // al@2 int v6; // ecx@4 int v7; // eax@4 char result; // al@6 int v9; // eax@8 int v10; // eax@8 int v11; // edi@8 int v12; // ebx@8 unsigned int v13; // eax@9 int v14; // esi@12 int v15; // esi@12 char v16; // al@15 int v17; // eax@15 int v18; // eax@16 int v19; // ebx@16 int v20; // edi@17 unsigned int v21; // eax@17 int v22; // esi@20 int v23; // esi@20 int v24; // edx@25 const void *v25; // eax@25 unsigned int v26; // ebx@25 int v27; // eax@28 unsigned int v28; // edi@29 int v29; // eax@29 unsigned int v30; // ebx@31 unsigned int v31; // edx@31 void *v32; // ecx@33 int v33; // eax@35 bool v34; // sf@35 unsigned __int8 v35; // of@35 signed int v36; // eax@37 int *v37; // eax@41 int v38; // eax@44 int v39; // eax@44 int v40; // ecx@48 void *v41; // ebx@50 int v42; // edi@51 unsigned int v43; // eax@52 int v44; // esi@55 int v45; // esi@55 int v46; // [sp+Ch] [bp-1F4h]@1 int v47; // [sp+18h] [bp-1E8h]@2 char v48; // [sp+1Ch] [bp-1E4h]@1 int v49; // [sp+44h] [bp-1BCh]@4 int v50; // [sp+70h] [bp-190h]@5 int (__thiscall **v51)(void *, char); // [sp+74h] [bp-18Ch]@6 int v52; // [sp+BCh] [bp-144h]@44 int *v53; // [sp+C4h] [bp-13Ch]@48 int v54; // [sp+C8h] [bp-138h]@16 int v55; // [sp+D0h] [bp-130h]@16 int v56; // [sp+D4h] [bp-12Ch]@16 int v57; // [sp+D8h] [bp-128h]@16 int (__thiscall **v58)(void *, char); // [sp+E0h] [bp-120h]@16 char v59; // [sp+E4h] [bp-11Ch]@59 void **v60; // [sp+F0h] [bp-110h]@49 int v61; // [sp+F4h] [bp-10Ch]@50 int v62; // [sp+100h] [bp-100h]@50 int v63; // [sp+104h] [bp-FCh]@50 int v64; // [sp+110h] [bp-F0h]@50 int v65; // [sp+114h] [bp-ECh]@50 void *v66; // [sp+118h] [bp-E8h]@50 int v67; // [sp+11Ch] [bp-E4h]@50 int v68; // [sp+120h] [bp-E0h]@48 int (__stdcall **v69)(char); // [sp+128h] [bp-D8h]@16 int v70; // [sp+134h] [bp-CCh]@24 int *v71; // [sp+160h] [bp-A0h]@16 int v72; // [sp+164h] [bp-9Ch]@16 char v73; // [sp+168h] [bp-98h]@23 int v74; // [sp+170h] [bp-90h]@15 int v75; // [sp+174h] [bp-8Ch]@16 int v76; // [sp+178h] [bp-88h]@8 char v77; // [sp+17Ch] [bp-84h]@12 void *v78; // [sp+180h] [bp-80h]@42 char v79; // [sp+184h] [bp-7Ch]@20 char v80; // [sp+188h] [bp-78h]@55 char v81; // [sp+18Ch] [bp-74h]@27 int v82; // [sp+190h] [bp-70h]@1 int *v83; // [sp+194h] [bp-6Ch]@25 void *v84; // [sp+198h] [bp-68h]@44 unsigned int v85; // [sp+1ACh] [bp-54h]@44 void *v86; // [sp+1B8h] [bp-48h]@7 size_t v87; // [sp+1C8h] [bp-38h]@7 unsigned int v88; // [sp+1CCh] [bp-34h]@7 void *v89; // [sp+1D4h] [bp-2Ch]@27 unsigned int v90; // [sp+1E4h] [bp-1Ch]@27 unsigned int v91; // [sp+1E8h] [bp-18h]@27 unsigned int v92; // [sp+1F0h] [bp-10h]@1 int v93; // [sp+1FCh] [bp-4h]@1 int v94; // [sp+200h] [bp+0h]@1 v92 = (unsigned int)&v94 ^ __security_cookie; v1 = 0; v82 = 0; sub_6363C0(&v46, 1); v93 = 0; if ( sub_6345B0((int)&v48, a1, 1, 64) ) { v6 = *(_DWORD *)(v46 + 4); v7 = *(int *)((char *)&v49 + v6); v4 = (char *)&v46 + v6; v5 = v7 != 0 ? 0 : 4; } else { v2 = *(_DWORD *)(v46 + 4); v3 = *(int *)((char *)&v47 + v2); v4 = (char *)&v46 + v2; v5 = v3 | 2; if ( !*((_DWORD *)v4 + 14) ) v5 |= 4u; } sub_4D6510((int)v4, v5, 0); if ( v50 ) { sub_62B5A0(*((void **)dword_14D42D60 + 1)); *((_DWORD *)dword_14D42D60 + 1) = dword_14D42D60; *(_DWORD *)dword_14D42D60 = dword_14D42D60; *((_DWORD *)dword_14D42D60 + 2) = dword_14D42D60; dword_14D42D64 = 0; v88 = 15; v87 = 0; LOBYTE(v86) = 0; LOBYTE(v93) = 1; while ( 1 ) { v9 = sub_4D5680((int)((char *)&v46 + *(_DWORD *)(v46 + 4)), (int)&v76); LOBYTE(v93) = 2; v10 = sub_4D9C60(v9); v11 = v76; v12 = v10; LOBYTE(v93) = 1; if ( v76 != v1 ) { std::_Lockit::_Lockit(v1); v13 = *(_DWORD *)(v11 + 4); if ( v13 > v1 && v13 < 0xFFFFFFFF ) *(_DWORD *)(v11 + 4) = v13 - 1; v14 = -(*(_DWORD *)(v11 + 4) == 0); std::_Lockit::__Lockit(&v77); v15 = v11 & v14; if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); v1 = 0; } v16 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v12 + 24))(v12, 10); LOBYTE(v74) = v16; v17 = sub_634690((int)&v46, (int)&v86, v16); if ( !((*(_DWORD *)(*(_DWORD *)(*(_DWORD *)v17 + 4) + v17 + 12) & 6) == 0 ? v17 + *(_DWORD *)(*(_DWORD *)v17 + 4) : 0) ) break; v54 = (int)&unk_6C622C; v57 = (int)&unk_6C6224; v82 |= 1u; LOBYTE(v93) = 3; v69 = &off_6C5C14; v55 = v1; v56 = v1; sub_4D6640((int)&v69); v71 = (int *)&v58; v72 = v1; v18 = sub_4D5680((int)&v69, (int)&v75); v93 = 6; v19 = sub_4D9C60(v18); LOBYTE(v93) = 5; if ( v75 != v1 ) { v20 = v75; std::_Lockit::_Lockit(v1); v21 = *(_DWORD *)(v20 + 4); if ( v21 > v1 && v21 < 0xFFFFFFFF ) *(_DWORD *)(v20 + 4) = v21 - 1; v22 = -(*(_DWORD *)(v20 + 4) == 0); std::_Lockit::__Lockit(&v79); v23 = v20 & v22; if ( v23 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v23)(v23, 1); v1 = 0; } v73 = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v19 + 24))(v19, 32); if ( v71 == (int *)v1 ) sub_4D6510((int)&v69, v70 | 4, v1); *(int *)((char *)&v57 + *(_DWORD *)(v57 + 4)) = (int)&off_6C5C0C; *(int *)((char *)&v54 + *(_DWORD *)(v54 + 4)) = (int)&off_6C5C1C; v24 = *(_DWORD *)(v54 + 4); v93 = 9; *(int *)((char *)&v54 + v24) = (int)&off_6C5EC0; v83 = (int *)&v58; sub_4D8A00(&v58); v25 = v86; v26 = 16; LOBYTE(v93) = 10; v58 = &off_6C5D9C; if ( v88 < 0x10 ) v25 = &v86; sub_4D8AF0((int)&v58, v25, v87, v1); v91 = 15; v90 = v1; LOBYTE(v89) = 0; LOBYTE(v93) = 12; sub_634850((int)&v54, (int)&v89); sub_634A80(&v81); if ( v90 == v1 ) { if ( v91 >= 0x10 ) operator delete(v89); v91 = 15; v90 = v1; LOBYTE(v89) = 0; LOBYTE(v93) = 1; sub_4D98A0(&v69); v69 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v69); if ( v88 >= 0x10 ) operator delete(v86); v88 = 15; v87 = v1; LOBYTE(v86) = 0; v93 = -1; sub_6364F0(&v51); v51 = &off_6C59A0; std::ios_base::_Ios_base_dtor(&v51); return 0; } v27 = sub_62B040((int)&unk_14D42D5C, (int)&v89); v83 = (int *)v27; if ( (void *)v27 == dword_14D42D60 ) goto LABEL_75; v28 = *(_DWORD *)(v27 + 28); v29 = v27 + 12; if ( *(_DWORD *)(v29 + 20) >= 0x10u ) v29 = *(_DWORD *)v29; v30 = v90; v31 = v90; if ( v90 >= v28 ) v31 = v28; v32 = v89; if ( v91 < 0x10 ) v32 = &v89; v33 = sub_4189B0((int)v32, v29, v31); v35 = __OFSUB__(v33, v1); v34 = v33 - v1 < 0; if ( v33 == v1 ) { if ( v30 >= v28 ) v36 = v30 != v28; else v36 = -1; v35 = __OFSUB__(v36, v1); v34 = v36 - v1 < 0; } v26 = 16; if ( v34 ^ v35 ) { LABEL_75: v78 = dword_14D42D60; v37 = (int *)&v78; } else { v37 = (int *)&v83; } if ( dword_14D42D60 != (void *)*v37 ) { if ( v91 >= v26 ) operator delete(v89); v91 = 15; v90 = v1; LOBYTE(v89) = 0; LOBYTE(v93) = 1; sub_4D98A0(&v69); v69 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v69); if ( v88 >= v26 ) operator delete(v86); v88 = 15; v87 = v1; LOBYTE(v86) = 0; v93 = -1; sub_6364F0(&v51); v51 = &off_6C59A0; std::ios_base::_Ios_base_dtor(&v51); return 0; } v38 = sub_635450((int)&v84, (int)&v89, (int)&v81); LOBYTE(v93) = 13; v39 = sub_636600(&unk_14D42D5C, (void *)v38); sub_62B600((int)&unk_14D42D5C, (int)&v52, (void *)v39, v1); if ( v85 >= v26 ) operator delete(v84); if ( v91 >= v26 ) operator delete(v89); v91 = 15; v90 = v1; LOBYTE(v89) = 0; v40 = *(_DWORD *)(v54 + 4); v83 = (int *)&v69; *(int *)((char *)&v54 + v40) = (int)&off_6C5EC0; v53 = (int *)&v58; v58 = &off_6C5D9C; if ( v68 & 1 ) operator delete(*v60); *v60 = (void *)v1; *(_DWORD *)v62 = v1; *(_DWORD *)v64 = v1; *(_DWORD *)v61 = v1; *(_DWORD *)v63 = v1; *(_DWORD *)v65 = v1; v68 &= 0xFFFFFFFEu; v67 = v1; v58 = &off_6C5D5C; LOBYTE(v93) = 15; v41 = v66; if ( v66 != (void *)v1 ) { v42 = *(_DWORD *)v66; if ( *(_DWORD *)v66 != v1 ) { std::_Lockit::_Lockit(v1); v43 = *(_DWORD *)(v42 + 4); if ( v43 > v1 && v43 < 0xFFFFFFFF ) *(_DWORD *)(v42 + 4) = v43 - 1; v44 = -(*(_DWORD *)(v42 + 4) == 0); std::_Lockit::__Lockit(&v80); v45 = v42 & v44; if ( v45 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v45)(v45, 1); v1 = 0; } operator delete(v41); } LOBYTE(v93) = 14; std::_Mutex::__Mutex(&v59); *(int *)((char *)&v54 + *(_DWORD *)(v54 + 4)) = (int)&off_6C5C1C; *(int *)((char *)&v57 + *(_DWORD *)(v57 + 4)) = (int)&off_6C5C0C; *(int *)((char *)&v54 + *(_DWORD *)(v54 + 4)) = (int)&off_6C5C14; LOBYTE(v93) = 1; v69 = (int (__stdcall **)(char))&off_6C59A0; std::ios_base::_Ios_base_dtor(&v69); } if ( v88 >= 0x10 ) operator delete(v86); v88 = 15; v87 = v1; LOBYTE(v86) = 0; v93 = -1; sub_6364F0(&v51); v51 = &off_6C59A0; std::ios_base::_Ios_base_dtor(&v51); result = 1; } else { v93 = -1; sub_6364F0(&v51); v51 = &off_6C59A0; std::ios_base::_Ios_base_dtor(&v51); result = 0; } return result; } // 634A80: using guessed type _DWORD __stdcall sub_634A80(_DWORD); // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 65208B: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); // 6C5D5C: using guessed type int (__thiscall *off_6C5D5C)(void *, char); // 6C5D9C: using guessed type int (__thiscall *off_6C5D9C)(void *, char); // 6C5EC0: using guessed type int (__stdcall *off_6C5EC0)(char); // 86FEB8: using guessed type int __security_cookie; // 14D42D64: using guessed type int dword_14D42D64; //----- (00636E70) -------------------------------------------------------- void *__thiscall sub_636E70(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70424C; if ( a2 & 1 ) operator delete(this); return v2; } // 70424C: using guessed type int (__thiscall *off_70424C)(void *, char); //----- (00636EA0) -------------------------------------------------------- int __thiscall sub_636EA0(void *this, int a2) { void *v2; // eax@1 int v3; // ecx@1 int *v4; // edx@1 signed int v5; // esi@1 int v6; // esi@3 int v7; // edx@3 int v8; // ecx@3 int v9; // eax@3 int v10; // eax@3 int v11; // ecx@3 int v12; // ecx@3 int v13; // edx@3 int v14; // edx@3 int v15; // esi@3 int v16; // esi@3 int v17; // eax@3 int v18; // eax@3 int v19; // ecx@3 int v20; // ecx@3 int v21; // edx@3 int v22; // edx@3 int v23; // esi@3 int v24; // esi@3 int v25; // eax@3 int v26; // eax@3 int v27; // ecx@3 int v28; // ecx@3 int v29; // edx@3 int v30; // edx@3 int v31; // esi@3 int v32; // esi@3 int v33; // eax@3 int v34; // eax@3 int v35; // ecx@3 int v36; // ecx@3 int v37; // edx@3 int v38; // edx@3 int v39; // esi@3 int v40; // esi@3 int v41; // eax@3 int v42; // eax@3 int v43; // ecx@3 int v44; // ecx@3 int v45; // edx@3 int v46; // edx@3 int v47; // esi@3 int v48; // esi@3 int v49; // eax@3 char *v50; // ecx@3 int v51; // eax@3 int v52; // ecx@3 int v53; // edx@3 int v54; // edx@3 int v55; // esi@3 int v56; // esi@3 int v57; // eax@3 int v58; // ecx@3 int v59; // eax@3 int v60; // ecx@3 int v61; // edx@3 int v62; // edx@3 int v63; // esi@3 int v64; // esi@3 int v65; // eax@3 int v66; // ecx@3 int v67; // eax@3 int v68; // ecx@3 int v69; // edx@3 int v70; // edx@3 int v71; // esi@3 int v72; // esi@3 int v73; // eax@3 int v74; // eax@3 int v75; // ecx@3 int v76; // ecx@3 int v77; // edx@3 int v78; // edx@3 int v79; // esi@3 int v80; // esi@3 int v81; // eax@3 int v82; // eax@3 int v83; // edi@3 int v84; // edi@3 int v85; // edx@3 int v86; // edx@3 int v87; // ecx@3 int v88; // ecx@3 int v89; // eax@3 int v90; // eax@3 int v91; // esi@3 int v92; // esi@3 int v93; // edi@3 int v94; // edi@3 int v95; // ecx@3 int v96; // ecx@3 int v97; // eax@3 int v98; // eax@3 int v99; // edx@3 int v100; // edx@3 int v101; // esi@3 int v102; // esi@3 int v103; // ecx@3 int v104; // ecx@3 int v105; // eax@3 int v106; // eax@3 int v107; // edx@3 int v108; // edx@3 int v109; // esi@3 int v110; // esi@3 int v111; // ecx@3 int v112; // ecx@3 int v113; // eax@3 int v114; // eax@3 int v115; // edx@3 int v116; // edx@3 int v117; // esi@3 int v118; // esi@3 int v119; // ecx@3 int v120; // ecx@3 int v121; // eax@3 int v122; // eax@3 int v123; // edx@3 int v124; // edx@3 int v125; // esi@3 int v126; // esi@3 int v127; // edi@3 int v128; // edi@3 int v129; // eax@3 int v130; // eax@3 int v131; // edx@3 int v132; // edx@3 void *v133; // ecx@3 int v134; // esi@3 int v135; // esi@3 int v136; // eax@3 int result; // eax@3 void *v138; // [sp+Ch] [bp-50h]@1 int v139; // [sp+18h] [bp-44h]@1 int v140; // [sp+1Ch] [bp-40h]@3 int v141; // [sp+20h] [bp-3Ch]@3 int v142; // [sp+24h] [bp-38h]@3 int v143; // [sp+28h] [bp-34h]@3 int v144; // [sp+2Ch] [bp-30h]@3 int v145; // [sp+30h] [bp-2Ch]@3 int v146; // [sp+34h] [bp-28h]@3 int v147; // [sp+38h] [bp-24h]@3 int v148; // [sp+3Ch] [bp-20h]@3 int v149; // [sp+40h] [bp-1Ch]@3 int v150; // [sp+44h] [bp-18h]@3 int v151; // [sp+48h] [bp-14h]@3 int v152; // [sp+4Ch] [bp-10h]@3 int v153; // [sp+50h] [bp-Ch]@3 int v154; // [sp+54h] [bp-8h]@3 unsigned int v155; // [sp+58h] [bp-4h]@1 int v156; // [sp+5Ch] [bp+0h]@1 v155 = (unsigned int)&v156 ^ __security_cookie; v2 = this; v138 = this; v3 = a2 + 2; v4 = &v139; v5 = 16; do { *v4 = *(_BYTE *)(v3 - 2) | ((*(_BYTE *)(v3 - 1) | ((*(_BYTE *)v3 | (*(_BYTE *)(v3 + 1) << 8)) << 8)) << 8); ++v4; v3 += 4; --v5; } while ( v5 ); v6 = *((_DWORD *)v2 + 20); v7 = *((_DWORD *)v2 + 21); v8 = *((_DWORD *)v2 + 22); v9 = __ROL__(v139 + (v6 & v7 | v8 & ~v6) + *((_DWORD *)v2 + 19) - 680876936, 7); v10 = v6 + v9; v11 = __ROL__(v140 + (v10 & v6 | v7 & ~v10) + v8 - 389564586, 12); v12 = v10 + v11; v13 = __ROR__(v141 + (v10 & v12 | v6 & ~v12) + v7 + 606105819, 15); v14 = v12 + v13; v15 = __ROR__(v142 + (v14 & v12 | v10 & ~v14) + v6 - 1044525330, 10); v16 = v14 + v15; v17 = __ROL__(v143 + (v16 & v14 | v12 & ~v16) + v10 - 176418897, 7); v18 = v16 + v17; v19 = __ROL__(v144 + (v18 & v16 | v14 & ~v18) + v12 + 1200080426, 12); v20 = v18 + v19; v21 = __ROR__(v145 + (v18 & v20 | v16 & ~v20) + v14 - 1473231341, 15); v22 = v20 + v21; v23 = __ROR__(v146 + (v22 & v20 | v18 & ~v22) + v16 - 45705983, 10); v24 = v22 + v23; v25 = __ROL__(v147 + (v24 & v22 | v20 & ~v24) + v18 + 1770035416, 7); v26 = v24 + v25; v27 = __ROL__(v148 + (v26 & v24 | v22 & ~v26) + v20 - 1958414417, 12); v28 = v26 + v27; v29 = __ROR__(v149 + (v26 & v28 | v24 & ~v28) + v22 - 42063, 15); v30 = v28 + v29; v31 = __ROR__(v150 + (v30 & v28 | v26 & ~v30) + v24 - 1990404162, 10); v32 = v30 + v31; v33 = __ROL__(v151 + (v32 & v30 | v28 & ~v32) + v26 + 1804603682, 7); v34 = v32 + v33; v35 = __ROL__(v152 + (v34 & v32 | v30 & ~v34) + v28 - 40341101, 12); v36 = v34 + v35; v37 = __ROR__(v153 + (v34 & v36 | v32 & ~v36) + v30 - 1502002290, 15); v38 = v36 + v37; v39 = __ROR__(v154 + (v38 & v36 | v34 & ~v38) + v32 + 1236535329, 10); v40 = v38 + v39; v41 = __ROL__(v140 + (v40 & v36 | v38 & ~v36) + v34 - 165796510, 5); v42 = v40 + v41; v43 = __ROL__(v145 + (v42 & v38 | v40 & ~v38) + v36 - 1069501632, 9); v44 = v42 + v43; v45 = __ROL__(v150 + (v40 & v44 | v42 & ~v40) + v38 + 643717713, 14); v46 = v44 + v45; v47 = __ROR__(v139 + (v42 & v46 | v44 & ~v42) + v40 - 373897302, 12); v48 = v46 + v47; v49 = __ROL__(v144 + (v48 & v44 | v46 & ~v44) + v42 - 701558691, 5); v50 = (char *)&unk_2441453 + v149 + ((v48 + v49) & v46 | v48 & ~v46) + v44; v51 = v48 + v49; v50 = (char *)__ROL__(v50, 9); v52 = (int)&v50[v51]; v53 = __ROL__(v154 + (v48 & v52 | v51 & ~v48) + v46 - 660478335, 14); v54 = v52 + v53; v55 = __ROR__(v143 + (v51 & v54 | v52 & ~v51) + v48 - 405537848, 12); v56 = v54 + v55; v57 = __ROL__(v148 + (v56 & v52 | v54 & ~v52) + v51 + 568446438, 5); v58 = v153 + ((v56 + v57) & v54 | v56 & ~v54) + v52 - 1019803690; v59 = v56 + v57; v58 = __ROL__(v58, 9); v60 = v59 + v58; v61 = __ROL__(v142 + (v56 & v60 | v59 & ~v56) + v54 - 187363961, 14); v62 = v60 + v61; v63 = __ROR__(v147 + (v59 & v62 | v60 & ~v59) + v56 + 1163531501, 12); v64 = v62 + v63; v65 = __ROL__(v152 + (v64 & v60 | v62 & ~v60) + v59 - 1444681467, 5); v66 = v141 + ((v64 + v65) & v62 | v64 & ~v62) + v60 - 51403784; v67 = v64 + v65; v66 = __ROL__(v66, 9); v68 = v67 + v66; v69 = __ROL__(v146 + (v64 & v68 | v67 & ~v64) + v62 + 1735328473, 14); v70 = v68 + v69; v71 = __ROR__(v151 + (v67 & v70 | v68 & ~v67) + v64 - 1926607734, 12); v72 = v70 + v71; v73 = __ROL__(v144 + (v72 ^ v70 ^ v68) + v67 - 378558, 4); v74 = v72 + v73; v75 = __ROL__(v147 + (v74 ^ v72 ^ v70) + v68 - 2022574463, 11); v76 = v74 + v75; v77 = __ROL__(v150 + (v74 ^ v72 ^ v76) + v70 + 1839030562, 16); v78 = v76 + v77; v79 = __ROR__(v153 + (v74 ^ v78 ^ v76) + v72 - 35309556, 9); v80 = v78 + v79; v81 = __ROL__(v140 + (v80 ^ v78 ^ v76) + v74 - 1530992060, 4); v82 = v80 + v81; v83 = __ROL__(v143 + (v82 ^ v80 ^ v78) + v76 + 1272893353, 11); v84 = v82 + v83; v85 = __ROL__(v146 + (v82 ^ v80 ^ v84) + v78 - 155497632, 16); v86 = v84 + v85; v87 = __ROR__(v149 + (v82 ^ v86 ^ v84) + v80 - 1094730640, 9); v88 = v86 + v87; v89 = __ROL__(v152 + (v88 ^ v86 ^ v84) + v82 + 681279174, 4); v90 = v88 + v89; v91 = __ROL__(v139 + (v90 ^ v88 ^ v86) + v84 - 358537222, 11); v92 = v90 + v91; v93 = __ROL__(v142 + (v90 ^ v88 ^ v92) + v86 - 722521979, 16); v94 = v92 + v93; v95 = __ROR__((char *)&unk_4881D05 + v145 + (v90 ^ v94 ^ v92) + v88, 9); v96 = v94 + v95; v97 = __ROL__(v148 + (v96 ^ v94 ^ v92) + v90 - 640364487, 4); v98 = v96 + v97; v99 = __ROL__(v151 + (v98 ^ v96 ^ v94) + v92 - 421815835, 11); v100 = v98 + v99; v101 = __ROL__(v154 + (v98 ^ v96 ^ v100) + v94 + 530742520, 16); v102 = v100 + v101; v103 = __ROR__(v141 + (v98 ^ v102 ^ v100) + v96 - 995338651, 9); v104 = v102 + v103; v105 = __ROL__(v139 + (v102 ^ (v104 | ~v100)) + v98 - 198630844, 6); v106 = v104 + v105; v107 = __ROL__(v146 + (v104 ^ (v106 | ~v102)) + v100 + 1126891415, 10); v108 = v106 + v107; v109 = __ROL__(v153 + (v106 ^ (v108 | ~v104)) + v102 - 1416354905, 15); v110 = v108 + v109; v111 = __ROR__(v144 + (v108 ^ (v110 | ~v106)) + v104 - 57434055, 11); v112 = v110 + v111; v113 = __ROL__(v151 + (v110 ^ (v112 | ~v108)) + v106 + 1700485571, 6); v114 = v112 + v113; v115 = __ROL__(v142 + (v112 ^ (v114 | ~v110)) + v108 - 1894986606, 10); v116 = v114 + v115; v117 = __ROL__(v149 + (v114 ^ (v116 | ~v112)) + v110 - 1051523, 15); v118 = v116 + v117; v119 = __ROR__(v140 + (v116 ^ (v118 | ~v114)) + v112 - 2054922799, 11); v120 = v118 + v119; v121 = __ROL__(v147 + (v118 ^ (v120 | ~v116)) + v114 + 1873313359, 6); v122 = v120 + v121; v123 = __ROL__(v154 + (v120 ^ (v122 | ~v118)) + v116 - 30611744, 10); v124 = v122 + v123; v125 = __ROL__(v145 + (v122 ^ (v124 | ~v120)) + v118 - 1560198380, 15); v126 = v124 + v125; v127 = __ROR__(v152 + (v124 ^ (v126 | ~v122)) + v120 + 1309151649, 11); v128 = v126 + v127; v129 = __ROL__(v143 + (v126 ^ (v128 | ~v124)) + v122 - 145523070, 6); v130 = v128 + v129; v131 = __ROL__(v150 + (v128 ^ (v130 | ~v126)) + v124 - 1120210379, 10); v132 = v130 + v131; v133 = v138; v134 = __ROL__(v141 + (v130 ^ (v132 | ~v128)) + v126 + 718787259, 15); v135 = v132 + v134; *((_DWORD *)v138 + 19) += v130; v136 = __ROR__(v148 + (v132 ^ (v135 | ~v130)) + v128 - 343485551, 11); *((_DWORD *)v133 + 20) += v135 + v136; *((_DWORD *)v133 + 21) += v135; result = v132 + *((_DWORD *)v138 + 22); *((_DWORD *)v138 + 22) = result; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00637580) -------------------------------------------------------- void *__thiscall sub_637580(int this, const void *a2, unsigned int a3) { int v3; // esi@1 unsigned int v4; // ecx@1 unsigned int v5; // edi@1 unsigned int v6; // eax@1 unsigned int v7; // ecx@1 int v8; // eax@1 int v9; // ebx@3 int i; // ebx@4 int v12; // [sp+18h] [bp+Ch]@4 v3 = this; v4 = *(_DWORD *)(this + 68); v5 = a3; v6 = v4 >> 3; v7 = v4 + 8 * a3; v8 = v6 & 0x3F; *(_DWORD *)(v3 + 68) = v7; if ( v7 < 8 * a3 ) ++*(_DWORD *)(v3 + 72); *(_DWORD *)(v3 + 72) += a3 >> 29; v9 = 64 - v8; if ( a3 < 64 - v8 ) { v12 = 0; } else { memmove((void *)(v8 + v3 + 4), a2, 64 - v8); sub_636EA0((void *)v3, v3 + 4); v12 = v9; for ( i = v9 + 63; i < v5; i += 64 ) { sub_636EA0((void *)v3, (int)((char *)a2 + i - 63)); v12 += 64; } v8 = 0; } return memmove((void *)(v8 + v3 + 4), (char *)a2 + v12, v5 - v12); } //----- (00637630) -------------------------------------------------------- int __thiscall sub_637630(void *this, int a2) { int 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; // edi@7 unsigned __int8 v10; // al@8 char *v11; // eax@14 char v12; // cl@15 char *v14; // [sp-10h] [bp-84h]@11 const char *v15; // [sp-Ch] [bp-80h]@11 int v16; // [sp-8h] [bp-7Ch]@11 void *v17; // [sp+10h] [bp-64h]@14 int v18; // [sp+20h] [bp-54h]@14 unsigned int v19; // [sp+24h] [bp-50h]@14 char v20; // [sp+2Ch] [bp-48h]@9 _BYTE v21[3]; // [sp+2Dh] [bp-47h]@16 char v22; // [sp+4Ch] [bp-28h]@6 char v23; // [sp+4Dh] [bp-27h]@6 char v24; // [sp+4Eh] [bp-26h]@6 char v25[13]; // [sp+4Fh] [bp-25h]@6 char v26; // [sp+5Ch] [bp-18h]@2 char v27; // [sp+5Dh] [bp-17h]@2 char v28; // [sp+5Eh] [bp-16h]@2 char v29; // [sp+5Fh] [bp-15h]@2 int v30; // [sp+60h] [bp-14h]@1 unsigned int v31; // [sp+64h] [bp-10h]@1 int v32; // [sp+70h] [bp-4h]@7 int v33; // [sp+74h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v2 = (int)this; v30 = 0; v3 = 0; v4 = v2 + 68; do { *(&v26 + v3) = *(_BYTE *)v4; *(&v27 + v3) = *(_BYTE *)(v4 + 1); *(&v28 + v3) = *(_BYTE *)(v4 + 2); *(&v29 + v3) = *(_BYTE *)(v4 + 3); v3 += 4; v4 += 4; } while ( v3 < 8 ); v5 = (*(_DWORD *)(v2 + 68) >> 3) & 0x3F; v6 = 56; if ( (unsigned int)v5 >= 0x38 ) v6 = 120; sub_637580(v2, &unk_86DD78, v6 - v5); sub_637580(v2, &v26, 8u); v7 = 0; v8 = v2 + 78; do { *(&v22 + v7) = *(_BYTE *)(v8 - 2); *(&v23 + v7) = *(_BYTE *)(v8 - 1); *(&v24 + v7) = *(_BYTE *)v8; v25[v7] = *(_BYTE *)(v8 + 1); v7 += 4; v8 += 4; } while ( v7 < 0x10 ); *(_DWORD *)(a2 + 20) = 15; *(_DWORD *)(a2 + 16) = 0; *(_BYTE *)a2 = 0; v32 = 0; v30 = 1; v9 = 0; do { v10 = *(&v22 + v9); if ( v10 ) { if ( v10 > 0xFu ) { v16 = v10; v15 = "%x"; v14 = &v20; } else { v16 = v10; v15 = "0%x"; v14 = &v20; } sprintf(v14, v15, v16); } else { sprintf(&v20, "00"); } v11 = &v20; v19 = 15; v18 = 0; LOBYTE(v17) = 0; do v12 = *v11++; while ( v12 ); sub_4241C0((int)&v17, &v20, v11 - v21); v32 = 1; sub_476C10(a2, (int)&v17, 0, -1); LOBYTE(v32) = 0; if ( v19 >= 0x10 ) operator delete(v17); ++v9; } while ( v9 < 16 ); return a2; } // 86FEB8: using guessed type int __security_cookie; // 637630: using guessed type char var_25[13]; //----- (006377E0) -------------------------------------------------------- int __cdecl sub_6377E0(int a1, const void *a2, unsigned int a3) { int (__thiscall **v4)(void *, char); // [sp+10h] [bp-6Ch]@1 char v5; // [sp+14h] [bp-68h]@1 int v6; // [sp+54h] [bp-28h]@1 int v7; // [sp+58h] [bp-24h]@1 int v8; // [sp+5Ch] [bp-20h]@1 int v9; // [sp+60h] [bp-1Ch]@1 int v10; // [sp+64h] [bp-18h]@1 int v11; // [sp+68h] [bp-14h]@1 unsigned int v12; // [sp+6Ch] [bp-10h]@1 int v13; // [sp+78h] [bp-4h]@1 int v14; // [sp+7Ch] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; v4 = &off_70424C; memset(&v5, 0, 0x40u); v7 = 0; v6 = 0; v8 = 1732584193; v9 = -271733879; v10 = -1732584194; v11 = (int)&unk_10325476; v13 = 0; sub_637580((int)&v4, a2, a3); sub_637630(&v4, a1); return a1; } // 70424C: using guessed type int (__thiscall *off_70424C)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00637890) -------------------------------------------------------- int __thiscall sub_637890(int this) { int v1; // esi@1 char v2; // dl@1 v1 = this; sub_638780(this); *(_DWORD *)(v1 + 348) = 0; *(_DWORD *)(v1 + 352) = 0; *(_DWORD *)(v1 + 360) = 0; *(_DWORD *)(v1 + 364) = 0; *(_DWORD *)(v1 + 368) = 0; *(_DWORD *)(v1 + 636) = 0; *(_DWORD *)(v1 + 640) = 1; *(_DWORD *)(v1 + 376) = off_70425C; v2 = byte_704260; *(_DWORD *)(v1 + 644) = 0; *(_DWORD *)(v1 + 652) = 0; *(_DWORD *)(v1 + 656) = 0; *(_BYTE *)(v1 + 380) = v2; return v1; } // 70425C: using guessed type void *off_70425C; // 704260: using guessed type char byte_704260; //----- (00637900) -------------------------------------------------------- signed int __thiscall sub_637900(int this) { int v1; // esi@1 signed int result; // eax@5 v1 = this; if ( *(_DWORD *)(this + 360) ) { free(*(void **)(this + 360)); *(_DWORD *)(v1 + 360) = 0; } if ( *(_DWORD *)(v1 + 348) ) { sub_638460(v1, *(HANDLE *)(v1 + 352)); *(_DWORD *)(v1 + 348) = 0; } result = sub_638BD0(v1); *(_DWORD *)(v1 + 368) = 0; return result; } //----- (00637960) -------------------------------------------------------- int __thiscall sub_637960(void *this, int a2) { int result; // eax@1 char *v3; // edx@1 char v4; // cl@2 result = a2; v3 = (char *)this + -a2 + 376; do { v4 = *(_BYTE *)result; v3[result] = *(_BYTE *)result; ++result; } while ( v4 ); return result; } //----- (00637980) -------------------------------------------------------- const unsigned __int8 *__thiscall sub_637980(int this, int a2, const unsigned __int8 *a3) { int v3; // esi@1 const unsigned __int8 *v4; // edi@3 const unsigned __int8 *result; // eax@4 unsigned __int8 *v6; // eax@5 unsigned __int8 *v7; // eax@6 int v8; // eax@7 v3 = this; if ( a2 ) *(_DWORD *)(this + 648) = a2; v4 = *(const unsigned __int8 **)(this + 648); if ( v4 ) { v6 = _mbspbrk(v4, a3); *(_DWORD *)(v3 + 648) = v6; if ( v6 == v4 ) { do { ++*(_DWORD *)(v3 + 648); v4 = *(const unsigned __int8 **)(v3 + 648); v7 = _mbspbrk(*(const unsigned __int8 **)(v3 + 648), a3); *(_DWORD *)(v3 + 648) = v7; } while ( v7 == v4 ); } v8 = *(_DWORD *)(v3 + 648); if ( v8 ) { *(_BYTE *)v8 = 0; ++*(_DWORD *)(v3 + 648); } result = v4; } else { result = 0; } return result; } //----- (00637A00) -------------------------------------------------------- const unsigned __int8 *__thiscall sub_637A00(int this) { int v1; // esi@1 const unsigned __int8 *result; // eax@1 int v3; // [sp-8h] [bp-Ch]@3 const unsigned __int8 *v4; // [sp-4h] [bp-8h]@3 v1 = this; result = *(const unsigned __int8 **)(this + 360); if ( result ) { if ( *(_DWORD *)(this + 640) ) { v4 = (const unsigned __int8 *)(this + 376); *(_DWORD *)(this + 640) = 0; *(_DWORD *)(this + 636) = 0; v3 = (int)result; } else { if ( *(_DWORD *)(this + 636) ) { result = sub_637980(this, *(_DWORD *)(this + 632), (const unsigned __int8 *)(this + 376)); *(_DWORD *)(v1 + 636) = 0; *(_DWORD *)(v1 + 644) = result; return result; } v4 = (const unsigned __int8 *)(this + 376); v3 = 0; } result = sub_637980(this, v3, v4); *(_DWORD *)(v1 + 644) = result; } return result; } //----- (00637A80) -------------------------------------------------------- signed int __thiscall sub_637A80(int this) { int v1; // esi@1 signed int result; // eax@2 DWORD NumberOfBytesRead; // [sp+4h] [bp-4h]@7 v1 = this; if ( *(_DWORD *)(this + 368) ) { *(_BYTE *)(*(_DWORD *)(this + 356) + *(_DWORD *)(this + 360)) = 0; memmove(*(void **)(this + 360), *(const void **)(this + 372), *(_DWORD *)(this + 356)); result = 1; *(_DWORD *)(v1 + 640) = 1; return result; } if ( !*(_DWORD *)(this + 348) ) return 0; if ( sub_638660(this, *(HANDLE *)(this + 352), 0, 0, 0) == -1 || !sub_6384A0(v1, *(HANDLE *)(v1 + 352), *(LPVOID *)(v1 + 360), *(_DWORD *)(v1 + 356), &NumberOfBytesRead, 0) ) { sub_637900(v1); return 0; } result = 1; *(_DWORD *)(v1 + 640) = 1; return result; } //----- (00637B40) -------------------------------------------------------- signed int __thiscall sub_637B40(int this) { int v1; // esi@1 signed int result; // eax@2 int v3; // edx@3 int v4; // eax@4 char v5; // cl@5 v1 = this; if ( *(_DWORD *)(this + 360) && (v3 = *(_DWORD *)(this + 644)) != 0 ) { v4 = *(_DWORD *)(this + 644); do v5 = *(_BYTE *)v4++; while ( v5 ); if ( *(_BYTE *)(v3 + v4 - (v3 + 1) + 1) != 10 ) *(_DWORD *)(v1 + 644) = sub_637980(v1, 0, (const unsigned __int8 *)"\n"); result = 1; } else { result = 0; } return result; } //----- (00637B90) -------------------------------------------------------- int __thiscall sub_637B90(int this) { int result; // eax@2 int v2; // edi@3 int v3; // eax@3 int v4; // edx@3 char v5; // cl@4 int v6; // esi@5 signed int v7; // edx@5 int i; // eax@5 if ( *(_DWORD *)(this + 360) ) { v2 = *(_DWORD *)(this + 644); v3 = *(_DWORD *)(this + 644); v4 = v3 + 1; do v5 = *(_BYTE *)v3++; while ( v5 ); v6 = v3 - v4; v7 = 1; for ( i = v2 + v6 + 1; *(_BYTE *)i != 34; ++i ) ++v7; result = v6 + v2 + v7; } else { result = 0; } return result; } //----- (00637BE0) -------------------------------------------------------- int __thiscall sub_637BE0(int this) { int result; // eax@1 result = *(_DWORD *)(this + 644); *(_DWORD *)(this + 364) = result; return result; } //----- (00637BF0) -------------------------------------------------------- signed int __thiscall sub_637BF0(int this, int a2) { int v2; // esi@1 int v4; // [sp-8h] [bp-10h]@3 const unsigned __int8 *v5; // [sp-4h] [bp-Ch]@3 v2 = this; if ( a2 ) { if ( sub_637A80(this) ) { v5 = (const unsigned __int8 *)(v2 + 376); v4 = a2; LABEL_7: *(_DWORD *)(v2 + 640) = 0; *(_DWORD *)(v2 + 644) = sub_637980(v2, v4, v5); return 1; } } else { if ( *(_DWORD *)(this + 364) && sub_637A80(this) ) { v5 = (const unsigned __int8 *)(v2 + 376); v4 = *(_DWORD *)(v2 + 364); goto LABEL_7; } } return 0; } //----- (00637C60) -------------------------------------------------------- signed int __stdcall sub_637C60(const unsigned __int8 *a1, int a2, unsigned int a3) { unsigned int v3; // esi@1 signed int result; // eax@4 v3 = 0; if ( a3 ) { while ( _mbsicmp(a1, *(const unsigned __int8 **)(a2 + 4 * v3)) ) { ++v3; if ( v3 >= a3 ) goto LABEL_4; } result = v3; } else { LABEL_4: result = -1; } return result; } //----- (00637CA0) -------------------------------------------------------- int __thiscall sub_637CA0(int this, int a2, int a3, unsigned int a4) { int v4; // esi@1 const unsigned __int8 *v5; // eax@3 v4 = this; sub_637A00(this); *(_DWORD *)a2 = -1; if ( a3 ) { if ( a4 ) { v5 = *(const unsigned __int8 **)(v4 + 644); if ( v5 ) { if ( !*v5 ) return 0; *(_DWORD *)a2 = sub_637C60(v5, a3, a4); } } } return *(_DWORD *)(v4 + 644); } //----- (00637D00) -------------------------------------------------------- int __thiscall sub_637D00(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 360); if ( v2 ) { free(v2); *(_DWORD *)(v1 + 360) = 0; } if ( *(_DWORD *)(v1 + 348) ) { sub_638460(v1, *(HANDLE *)(v1 + 352)); *(_DWORD *)(v1 + 348) = 0; } sub_638BD0(v1); *(_DWORD *)(v1 + 368) = 0; return sub_638D70(v1); } // 638D70: using guessed type int __thiscall sub_638D70(_DWORD); //----- (00637D90) -------------------------------------------------------- signed int __thiscall sub_637D90(int this, LPCSTR lpFileName) { int v2; // esi@1 void *v3; // eax@5 signed int result; // eax@6 DWORD v5; // eax@7 DWORD v6; // edi@7 void *v7; // eax@8 DWORD NumberOfBytesRead; // [sp+8h] [bp-4h]@9 v2 = this; if ( *(_DWORD *)(this + 360) ) { free(*(void **)(this + 360)); *(_DWORD *)(v2 + 360) = 0; } if ( *(_DWORD *)(v2 + 348) ) { sub_638460(v2, *(HANDLE *)(v2 + 352)); *(_DWORD *)(v2 + 348) = 0; } sub_638BD0(v2); *(_DWORD *)(v2 + 368) = 0; v3 = (void *)sub_638DC0(v2, lpFileName, 0x80000000u, 1u, 0, 3u, 0x80u, 0); *(_DWORD *)(v2 + 352) = v3; if ( v3 == (void *)-1 ) { result = 0; } else { *(_DWORD *)(v2 + 348) = 1; v5 = sub_638620(v2, v3, 0); v6 = v5; *(_DWORD *)(v2 + 356) = v5; if ( v5 != -1 && (v7 = malloc(v5 + 1), (*(_DWORD *)(v2 + 360) = v7) != 0) && (*((_BYTE *)v7 + v6) = 0, sub_6384A0(v2, *(HANDLE *)(v2 + 352), *(LPVOID *)(v2 + 360), *(_DWORD *)(v2 + 356), &NumberOfBytesRead, 0)) ) { result = 1; *(_DWORD *)(v2 + 368) = 0; *(_DWORD *)(v2 + 640) = 1; } else { sub_637900(v2); result = 0; } } return result; } //----- (00637EA0) -------------------------------------------------------- signed int __thiscall sub_637EA0(int this, const char *a2) { int v2; // esi@1 unsigned int v3; // eax@5 unsigned int v4; // edi@5 signed int result; // eax@6 void *v6; // eax@7 v2 = this; if ( *(_DWORD *)(this + 360) ) { free(*(void **)(this + 360)); *(_DWORD *)(v2 + 360) = 0; } if ( *(_DWORD *)(v2 + 348) ) { sub_638460(v2, *(HANDLE *)(v2 + 352)); *(_DWORD *)(v2 + 348) = 0; } sub_638BD0(v2); *(_DWORD *)(v2 + 368) = 0; v3 = strlen(a2); v4 = v3; *(_DWORD *)(v2 + 356) = v3; if ( v3 && (v6 = malloc(v3 + 1), (*(_DWORD *)(v2 + 360) = v6) != 0) ) { *((_BYTE *)v6 + v4) = 0; memmove(*(void **)(v2 + 360), a2, *(_DWORD *)(v2 + 356)); result = 1; *(_DWORD *)(v2 + 372) = a2; *(_DWORD *)(v2 + 640) = 1; *(_DWORD *)(v2 + 368) = 1; } else { result = 0; } return result; } //----- (00637F60) -------------------------------------------------------- int __thiscall sub_637F60(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v5; // eax@7 const unsigned __int8 *v6; // eax@11 int v7; // edi@12 char v8; // cl@13 v2 = this; v3 = *(_DWORD *)(this + 360); if ( !v3 ) return 0; if ( *(_DWORD *)(this + 640) ) { *(_DWORD *)(this + 640) = 0; *(_DWORD *)(this + 636) = 0; *(_DWORD *)(this + 644) = sub_637980(this, v3, "\""); } if ( *(_DWORD *)(v2 + 636) ) { *(_DWORD *)(v2 + 644) = *(_DWORD *)(v2 + 632) - 1; *(_DWORD *)(v2 + 636) = 0; } v5 = sub_637B90(v2); *(_DWORD *)(v2 + 644) = v5; if ( *(_BYTE *)v5 != 34 || *(_BYTE *)(v5 + 1) != 34 ) { v6 = sub_637980(v2, v5, "\""); *(_DWORD *)(v2 + 644) = v6; if ( a2 ) { v7 = (int)(v6 + 1); do v8 = *v6++; while ( v8 ); *(_DWORD *)a2 = &v6[-v7]; } } else { *(_BYTE *)(v5 + 1) = 0; *(_DWORD *)(v2 + 632) = *(_DWORD *)(v2 + 644) + 2; *(_DWORD *)(v2 + 636) = 1; *(_DWORD *)(v2 + 644) = &unk_14D42D6C; if ( a2 ) { *(_DWORD *)a2 = 0; return *(_DWORD *)(v2 + 644); } } return *(_DWORD *)(v2 + 644); } //----- (00638050) -------------------------------------------------------- void *__thiscall sub_638050(int this) { int v1; // esi@1 void *result; // eax@1 v1 = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; result = memset((void *)(this + 24), 0, 0x104u); *(_DWORD *)(v1 + 284) = 0; *(_DWORD *)(v1 + 288) = 0; *(_DWORD *)(v1 + 292) = 0; *(_DWORD *)(v1 + 296) = 0; *(_DWORD *)(v1 + 316) = 0; *(_DWORD *)(v1 + 320) = 0; *(_DWORD *)(v1 + 324) = 0; *(_DWORD *)(v1 + 332) = 0; *(_DWORD *)(v1 + 340) = 0; *(_DWORD *)(v1 + 344) = 0; *(_DWORD *)(v1 + 300) = 10; return result; } //----- (006380D0) -------------------------------------------------------- DWORD __thiscall sub_6380D0(int this, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) { int v4; // esi@1 int v5; // eax@1 DWORD result; // eax@5 v4 = this; v5 = *(_DWORD *)(this + 4); if ( v5 ) { if ( v5 != 1 ) return -1; if ( fseek(*(FILE **)(this + 12), lDistanceToMove, dwMoveMethod) ) { SetLastError(0x84u); return -1; } if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh = 0; result = ftell(*(FILE **)(v4 + 12)); } else { result = SetFilePointer(*(HANDLE *)(this + 8), lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); } return result; } //----- (00638150) -------------------------------------------------------- unsigned int __thiscall sub_638150(int this, int a2, unsigned int a3) { char v3; // dl@1 unsigned int result; // eax@1 v3 = *(_BYTE *)(this + 312) ^ *(_BYTE *)(this + 313) ^ *(_BYTE *)(this + 314) ^ *(_BYTE *)(this + 315); result = 0; if ( a3 ) { do *(_BYTE *)(result++ + a2) ^= v3; while ( result < a3 ); } return result; } //----- (00638190) -------------------------------------------------------- BOOL __thiscall sub_638190(int this, LPCVOID NumberOfBytesWritten) { int v2; // edx@1 LPCVOID v3; // ecx@2 LPCVOID v4; // esi@3 int v5; // eax@3 unsigned int v6; // ecx@3 int v7; // eax@6 BOOL result; // eax@9 char v9; // [sp+0h] [bp-13Ch]@3 int v10[77]; // [sp+8h] [bp-134h]@4 v2 = this; if ( *(_DWORD *)(this + 304) ) { v4 = NumberOfBytesWritten; *((_DWORD *)v4 + 1) |= 1u; v5 = *(_DWORD *)(this + 312); memcpy(&v9, v4, 0x13Cu); v6 = 0; do { v10[v6] ^= v5 ^ 0x36175A5A; ++v6; v5 = __ROL__(v5, 1); } while ( v6 < 0x4D ); v3 = &v9; } else { v3 = NumberOfBytesWritten; *((_DWORD *)v3 + 1) &= 0xFFFFFFFEu; } v7 = *(_DWORD *)(v2 + 4); if ( v7 ) result = v7 != 1 || fwrite(v3, 0x13Cu, 1u, *(FILE **)(v2 + 12)) == 1; else result = WriteFile(*(HANDLE *)(v2 + 8), v3, 0x13Cu, (LPDWORD)&NumberOfBytesWritten, 0); return result; } // 638190: using guessed type int var_134[77]; //----- (00638250) -------------------------------------------------------- int __thiscall sub_638250(int this, int a2) { int v2; // edi@1 int result; // eax@3 v2 = this; if ( sub_6380D0( this, *(_DWORD *)(*(_DWORD *)(this + 296) + 324 * a2), (PLONG)(*(_DWORD *)(this + 296) + 324 * a2 + 4), 0) == -1 && GetLastError() ) result = 0; else result = sub_638190(v2, (LPCVOID)(324 * a2 + *(_DWORD *)(v2 + 296) + 8)) != 0; return result; } //----- (006382B0) -------------------------------------------------------- BOOL __thiscall sub_6382B0(int this, int a2, unsigned int a3) { int v3; // esi@1 int v4; // edi@1 __int64 v5; // kr00_8@1 struct _SYSTEMTIME SystemTime; // [sp+Ch] [bp-14h]@1 unsigned int v8; // [sp+1Ch] [bp-4h]@1 int v9; // [sp+20h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v3 = this; v4 = *(_DWORD *)(this + 344); v5 = *(_QWORD *)(v4 + 288) + a3; *(_DWORD *)(v4 + 288) = v5; *(_DWORD *)(*(_DWORD *)(this + 344) + 292) = HIDWORD(v5); *(_QWORD *)(*(_DWORD *)(this + 344) + 296) = v5; GetSystemTime(&SystemTime); return SystemTimeToFileTime(&SystemTime, (LPFILETIME)(*(_DWORD *)(v3 + 344) + 304)); } // 86FEB8: using guessed type int __security_cookie; //----- (00638350) -------------------------------------------------------- signed int __thiscall sub_638350(int this, const unsigned __int8 *a2) { int v2; // esi@1 signed int v3; // ebx@1 int v4; // edi@2 int v5; // eax@3 signed int result; // eax@6 v2 = this; v3 = 0; if ( *(_DWORD *)(this + 292) ) { v4 = 0; while ( 1 ) { v5 = v4 + *(_DWORD *)(v2 + 296); if ( *(_DWORD *)(v5 + 8) == 2 ) { if ( !_mbsicmp((const unsigned __int8 *)(v5 + 16), a2) ) break; } ++v3; v4 += 324; if ( (unsigned int)v3 >= *(_DWORD *)(v2 + 292) ) goto LABEL_6; } result = v3; } else { LABEL_6: result = -1; } return result; } //----- (006383B0) -------------------------------------------------------- int __thiscall sub_6383B0(int this, int a2) { int v2; // edi@1 int v3; // esi@1 int v4; // eax@1 int result; // eax@2 v2 = 324 * a2; v3 = this; v4 = *(_DWORD *)(this + 296); if ( *(_DWORD *)(v4 + 324 * a2 + 8) != 2 || (*(_DWORD *)(v4 + v2 + 8) = 3, sub_6380D0(this, *(_DWORD *)(*(_DWORD *)(this + 296) + v2), (PLONG)(*(_DWORD *)(this + 296) + v2 + 4), 0) == -1) && GetLastError() ) result = 0; else result = sub_638190(v3, (LPCVOID)(*(_DWORD *)(v3 + 296) + v2 + 8)) != 0; return result; } //----- (00638430) -------------------------------------------------------- int __thiscall sub_638430(int this, const unsigned __int8 *a2) { int v2; // esi@1 int v3; // eax@1 int result; // eax@2 v2 = this; v3 = sub_638350(this, a2); if ( v3 == -1 ) result = 0; else result = sub_6383B0(v2, v3); return result; } //----- (00638460) -------------------------------------------------------- BOOL __thiscall sub_638460(int this, HANDLE hObject) { int v2; // esi@1 BOOL result; // eax@2 v2 = this; if ( *(_DWORD *)this ) { if ( *(_DWORD *)(this + 316) ) { sub_638250(this, *(_DWORD *)(this + 340)); *(_DWORD *)(v2 + 316) = 0; } result = 1; } else { result = CloseHandle(hObject); } return result; } //----- (006384A0) -------------------------------------------------------- BOOL __thiscall sub_6384A0(int this, HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { int v6; // esi@1 BOOL result; // eax@2 int v8; // eax@5 int v9; // eax@6 v6 = this; if ( !*(_DWORD *)this ) return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); if ( hFile != *(HANDLE *)(this + 332) ) return 0; v8 = *(_DWORD *)(*(_DWORD *)(this + 344) + 276); if ( v8 ) { v9 = v8 - 1; if ( v9 ) { result = v9 - 1; if ( !result ) return result; goto LABEL_11; } return 0; } if ( !ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped) ) return 0; LABEL_11: if ( *(_BYTE *)(*(_DWORD *)(v6 + 344) + 12) & 2 ) sub_638150(v6, (int)lpBuffer, *lpNumberOfBytesRead); return 1; } //----- (00638530) -------------------------------------------------------- void *__thiscall sub_638530(int this, HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) { int v6; // esi@1 void *result; // eax@2 DWORD v8; // eax@6 char v9; // cl@6 int v10; // eax@8 int v11; // eax@9 DWORD v12; // eax@14 char v13; // cl@14 v6 = this; if ( *(_DWORD *)this ) { if ( hFile == *(HANDLE *)(this + 332) ) { if ( *(_BYTE *)(*(_DWORD *)(this + 344) + 12) & 2 ) { v8 = 0; v9 = *(_BYTE *)(this + 312) ^ *(_BYTE *)(this + 313) ^ *(_BYTE *)(this + 314) ^ *(_BYTE *)(this + 315); if ( nNumberOfBytesToWrite ) { do *((_BYTE *)lpBuffer + v8++) ^= v9; while ( v8 < nNumberOfBytesToWrite ); } } v10 = *(_DWORD *)(*(_DWORD *)(v6 + 344) + 276); if ( v10 ) { v11 = v10 - 1; if ( !v11 || v11 == 1 ) hFile = 0; } else { hFile = (HANDLE)WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); } if ( *(_BYTE *)(*(_DWORD *)(v6 + 344) + 12) & 2 ) { v12 = 0; v13 = *(_BYTE *)(v6 + 312) ^ *(_BYTE *)(v6 + 313) ^ *(_BYTE *)(v6 + 314) ^ *(_BYTE *)(v6 + 315); if ( nNumberOfBytesToWrite ) { do *((_BYTE *)lpBuffer + v12++) ^= v13; while ( v12 < nNumberOfBytesToWrite ); } } if ( hFile ) { *(_DWORD *)(v6 + 328) = 1; sub_6382B0(v6, (int)lpBuffer, nNumberOfBytesToWrite); } result = hFile; } else { result = 0; } } else { result = (void *)WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); } return result; } //----- (00638620) -------------------------------------------------------- DWORD __thiscall sub_638620(int this, HANDLE hFile, LPDWORD lpFileSizeHigh) { DWORD result; // eax@2 if ( *(_DWORD *)this ) { if ( lpFileSizeHigh ) *lpFileSizeHigh = *(_DWORD *)(*(_DWORD *)(this + 344) + 292); result = *(_DWORD *)(*(_DWORD *)(this + 344) + 288); } else { result = GetFileSize(hFile, lpFileSizeHigh); } return result; } //----- (00638660) -------------------------------------------------------- DWORD __thiscall sub_638660(int this, HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) { int v5; // esi@1 DWORD result; // eax@2 int v7; // eax@9 PLONG v8; // edi@9 LONG v9; // edx@10 DWORD v10; // eax@15 int v11; // esi@15 void *v12; // [sp-14h] [bp-18h]@9 LONG v13; // [sp-10h] [bp-14h]@9 LONG *v14; // [sp-Ch] [bp-10h]@9 DWORD v15; // [sp-8h] [bp-Ch]@9 v5 = this; if ( !*(_DWORD *)this ) return SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); if ( !dwMoveMethod ) { v8 = lpDistanceToMoveHigh; if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh += *(_DWORD *)(*(_DWORD *)(this + 344) + 284); v9 = lDistanceToMove + *(_DWORD *)(*(_DWORD *)(this + 344) + 280); v15 = 0; goto LABEL_14; } if ( dwMoveMethod == 1 ) { v8 = lpDistanceToMoveHigh; v9 = lDistanceToMove; v15 = 1; LABEL_14: v14 = v8; v13 = v9; v12 = *(void **)(this + 332); goto LABEL_15; } if ( dwMoveMethod != 2 ) { if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh = -1; SetLastError(0x57u); return -1; } v7 = *(_DWORD *)(this + 344); v8 = lpDistanceToMoveHigh; v15 = 2; v14 = &lpDistanceToMoveHigh[*(_DWORD *)(v7 + 284)]; v13 = lDistanceToMove + *(_DWORD *)(v7 + 280) + *(_DWORD *)(v7 + 288); v12 = *(void **)(this + 332); LABEL_15: v10 = SetFilePointer(v12, v13, v14, v15); v11 = *(_DWORD *)(v5 + 344); result = v10 - *(_DWORD *)(v11 + 280); if ( v8 ) *v8 -= *(_DWORD *)(v11 + 284); return result; } //----- (00638730) -------------------------------------------------------- int __thiscall sub_638730(int this, FILE *a2) { int v2; // esi@1 int result; // eax@2 v2 = this; if ( *(_DWORD *)this ) { if ( *(_DWORD *)(this + 316) ) { sub_638250(this, *(_DWORD *)(this + 340)); *(_DWORD *)(v2 + 316) = 0; } result = 0; } else { result = fclose(a2); } return result; } //----- (00638780) -------------------------------------------------------- int __thiscall sub_638780(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 304) = 0; *(_DWORD *)(this + 308) = 0; *(_DWORD *)(this + 312) = 0; sub_638050(this); return v1; } //----- (006387A0) -------------------------------------------------------- int __thiscall sub_6387A0(int this) { int v1; // eax@2 if ( *(_DWORD *)(this + 316) ) { v1 = *(_DWORD *)(this + 4); if ( !v1 ) return sub_638460(this, *(HANDLE *)(this + 332)); if ( v1 == 1 ) return sub_638730(this, *(FILE **)(this + 336)); } return 1; } //----- (006387E0) -------------------------------------------------------- int __thiscall sub_6387E0(int this, unsigned int a2) { int v2; // esi@1 int v3; // edi@1 int result; // eax@1 int v5; // ebx@1 unsigned int v6; // eax@2 int v7; // edi@2 int v8; // ebx@3 int v9; // eax@9 FILE *v10; // ST0C_4@14 int v11; // eax@14 unsigned int v12; // ebx@18 int v13; // edi@19 LONG *v14; // eax@20 int v15; // ecx@22 signed int v16; // eax@24 int v17; // edx@33 int v18; // edi@33 int v19; // ecx@35 signed int v20; // eax@37 int v21; // edi@44 int v22; // edx@44 int v23; // eax@44 int v24; // ecx@44 LONG *v25; // ebx@44 __int32 v26; // eax@44 DWORD v27; // eax@50 int v28; // edx@55 int NumberOfBytesWritten; // [sp+Ch] [bp-14Ch]@18 int v30; // [sp+148h] [bp-10h]@24 LONG DistanceToMoveHigh; // [sp+14Ch] [bp-Ch]@9 int v32; // [sp+150h] [bp-8h]@2 int v33; // [sp+154h] [bp-4h]@11 v2 = this; v3 = *(_DWORD *)(this + 292); result = (int)malloc(324 * (v3 + a2 + 1)); v5 = result; if ( result ) { memmove((void *)result, *(const void **)(v2 + 296), 324 * v3); free(*(void **)(v2 + 296)); v6 = *(_DWORD *)(v2 + 292); v7 = 0; *(_DWORD *)(v2 + 296) = v5; v32 = 0; if ( v6 ) { v8 = v5 + 8; do { if ( *(_DWORD *)v8 == 5 ) break; ++v7; v8 += 324; } while ( v7 < v6 ); v32 = v7; } if ( v7 >= v6 ) return -1; v9 = *(_DWORD *)(v2 + 4); DistanceToMoveHigh = 0; if ( v9 ) { if ( v9 != 1 ) { v33 = -1; goto LABEL_17; } if ( fseek(*(FILE **)(v2 + 12), 0, 2) ) { SetLastError(0x84u); v33 = -1; LABEL_17: if ( GetLastError() ) return -1; LABEL_18: memset(&NumberOfBytesWritten, 0, 0x13Cu); v12 = 1; NumberOfBytesWritten = 4; if ( a2 >= 1 ) { v13 = 324 * (v7 + 1); while ( 1 ) { v14 = (LONG *)(v13 + *(_DWORD *)(v2 + 296) + 4); if ( v13 + *(_DWORD *)(v2 + 296) != -4 ) *v14 = 0; v15 = *(_DWORD *)(v2 + 4); if ( v15 ) { if ( v15 == 1 ) { v16 = ftell(*(FILE **)(v2 + 12)); v30 = v16; if ( v16 ) { SetLastError(0x84u); v16 = -1; } } else { v16 = v30; } } else { v16 = SetFilePointer(*(HANDLE *)(v2 + 8), 0, v14, 1u); } *(_DWORD *)(v13 + *(_DWORD *)(v2 + 296)) = v16; if ( *(_DWORD *)(v13 + *(_DWORD *)(v2 + 296)) == -1 ) { if ( GetLastError() ) return -1; } if ( !sub_638190(v2, &NumberOfBytesWritten) ) return -1; *(_DWORD *)(v13 + *(_DWORD *)(v2 + 296) + 8) = 4; ++v12; v13 += 324; if ( v12 > a2 ) { v7 = v32; break; } } } v17 = *(_DWORD *)(v2 + 296); v18 = 324 * (v12 + v7); NumberOfBytesWritten = 5; if ( v18 + v17 != -4 ) *(_DWORD *)(v18 + v17 + 4) = 0; v19 = *(_DWORD *)(v2 + 4); if ( v19 ) { if ( v19 == 1 ) { v20 = ftell(*(FILE **)(v2 + 12)); if ( v20 ) { SetLastError(0x84u); v20 = -1; } } else { v20 = a2; } } else { v20 = SetFilePointer(*(HANDLE *)(v2 + 8), 0, (PLONG)(v18 + v17 + 4), 1u); } *(_DWORD *)(v18 + *(_DWORD *)(v2 + 296)) = v20; if ( *(_DWORD *)(v18 + *(_DWORD *)(v2 + 296)) == -1 && GetLastError() || !sub_638190(v2, &NumberOfBytesWritten) ) return -1; *(_DWORD *)(v18 + *(_DWORD *)(v2 + 296) + 8) = 5; v21 = 324 * v32; v22 = v33; *(_DWORD *)(324 * v32 + *(_DWORD *)(v2 + 296) + 8) = 1; *(_DWORD *)(v21 + *(_DWORD *)(v2 + 296) + 276) = v22; *(_DWORD *)(v21 + *(_DWORD *)(v2 + 296) + 280) = DistanceToMoveHigh; *(_DWORD *)(v21 + *(_DWORD *)(v2 + 296) + 284) = a2 + 1; v23 = v21 + *(_DWORD *)(v2 + 296); v24 = *(_DWORD *)(v2 + 4); v25 = (LONG *)(v23 + 4); v26 = *(_DWORD *)v23; if ( v24 ) { if ( v24 != 1 ) goto LABEL_53; if ( fseek(*(FILE **)(v2 + 12), v26, 0) ) { SetLastError(0x84u); goto LABEL_53; } if ( v25 ) *v25 = 0; v27 = ftell(*(FILE **)(v2 + 12)); } else { v27 = SetFilePointer(*(HANDLE *)(v2 + 8), v26, v25, 0); } if ( v27 != -1 ) { LABEL_54: if ( sub_638190(v2, (LPCVOID)(v21 + *(_DWORD *)(v2 + 296) + 8)) ) { v28 = *(_DWORD *)(v2 + 296); *(_DWORD *)(v2 + 292) += a2 + 1; *(_DWORD *)(v28 + 276) = *(_DWORD *)(v2 + 292); if ( sub_6380D0(v2, **(_DWORD **)(v2 + 296), (PLONG)(*(_DWORD *)(v2 + 296) + 4), 0) != -1 || !GetLastError() ) { if ( sub_638190(v2, (LPCVOID)(*(_DWORD *)(v2 + 296) + 8)) ) return v32 + 1; } } return -1; } LABEL_53: if ( GetLastError() ) return -1; goto LABEL_54; } v10 = *(FILE **)(v2 + 12); DistanceToMoveHigh = 0; v11 = ftell(v10); } else { v11 = SetFilePointer(*(HANDLE *)(v2 + 8), 0, &DistanceToMoveHigh, 2u); } v33 = v11; if ( v11 != -1 ) goto LABEL_18; goto LABEL_17; } return result; } //----- (00638BD0) -------------------------------------------------------- signed int __thiscall sub_638BD0(int this) { int v1; // esi@1 int v2; // eax@2 int v4; // eax@9 v1 = this; if ( *(_DWORD *)(this + 316) ) { v2 = *(_DWORD *)(this + 4); if ( v2 ) { if ( v2 == 1 && sub_638730(this, *(FILE **)(this + 336)) ) return 0; } else { if ( !sub_638460(this, *(HANDLE *)(this + 332)) ) return 0; } *(_DWORD *)(v1 + 316) = 0; } if ( *(_DWORD *)v1 ) { v4 = *(_DWORD *)(v1 + 4); *(_DWORD *)v1 = 0; if ( v4 ) { if ( v4 == 1 && !*(_DWORD *)(v1 + 20) ) fclose(*(FILE **)(v1 + 12)); } else { if ( !*(_DWORD *)(v1 + 16) ) CloseHandle(*(HANDLE *)(v1 + 8)); } } if ( *(_DWORD *)(v1 + 296) ) free(*(void **)(v1 + 296)); sub_638050(v1); return 1; } //----- (00638C80) -------------------------------------------------------- signed int __thiscall sub_638C80(int this, unsigned int a2) { int v2; // esi@1 signed int result; // eax@2 unsigned int v4; // eax@7 int v5; // eax@9 int v6; // edx@9 v2 = this; if ( *(_DWORD *)this ) { if ( *(_DWORD *)(this + 292) >= a2 ) { if ( *(_DWORD *)(324 * a2 + *(_DWORD *)(this + 296) + 8) == 2 && sub_6387A0(this) && (v4 = 324 * a2 + *(_DWORD *)(v2 + 296), *(_DWORD *)(v2 + 340) = a2, *(_DWORD *)(v2 + 344) = v4, *(_DWORD *)(*(_DWORD *)(v2 + 344) + 280) == sub_6380D0(v2, *(_DWORD *)(v4 + 280), (PLONG)(v4 + 284), 0)) ) { v5 = *(_DWORD *)(v2 + 12); v6 = *(_DWORD *)(v2 + 8); *(_DWORD *)(v2 + 328) = 0; *(_DWORD *)(v2 + 324) = 0; *(_DWORD *)(v2 + 336) = v5; result = 1; *(_DWORD *)(v2 + 332) = v6; *(_DWORD *)(v2 + 316) = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (00638D40) -------------------------------------------------------- signed int __thiscall sub_638D40(void *this, const unsigned __int8 *a2) { int v2; // esi@1 signed int result; // eax@2 signed int v4; // eax@3 v2 = (int)this; if ( *(_DWORD *)this && (v4 = sub_638350((int)this, a2), v4 != -1) ) result = sub_638C80(v2, v4); else result = 0; return result; } //----- (00638D80) -------------------------------------------------------- int __thiscall sub_638D80(int this) { unsigned int v1; // esi@1 int result; // eax@1 int v3; // edx@2 v1 = *(_DWORD *)(this + 292); result = 0; if ( v1 ) { v3 = *(_DWORD *)(this + 296) + 8; while ( *(_DWORD *)v3 != 4 ) { ++result; v3 += 324; if ( result >= v1 ) goto LABEL_5; } } else { LABEL_5: result = sub_6387E0(this, *(_DWORD *)(this + 300)); } return result; } //----- (00638DC0) -------------------------------------------------------- signed int __thiscall sub_638DC0(int this, LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD a6, DWORD a7, HANDLE hTemplateFile) { int v8; // esi@1 signed int result; // eax@2 int v10; // eax@4 int v11; // eax@20 int v12; // eax@21 DWORD v13; // [sp-4h] [bp-2Ch]@10 struct _SYSTEMTIME SystemTime; // [sp+14h] [bp-14h]@21 unsigned int v15; // [sp+24h] [bp-4h]@1 int v16; // [sp+28h] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v8 = this; if ( !*(_DWORD *)this ) return (signed int)CreateFileA( lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, a6, a7, hTemplateFile); if ( *(_DWORD *)(this + 316) ) { v10 = *(_DWORD *)(this + 4); if ( v10 ) { if ( v10 == 1 ) sub_638730(this, *(FILE **)(this + 336)); } else { sub_638460(this, *(HANDLE *)(this + 332)); } } switch ( a6 ) { case 1u: if ( sub_638350(v8, (const unsigned __int8 *)lpFileName) == -1 ) goto LABEL_20; v13 = 183; goto LABEL_11; case 2u: sub_638430(v8, (const unsigned __int8 *)lpFileName); goto LABEL_20; case 3u: if ( !sub_638D40((void *)v8, (const unsigned __int8 *)lpFileName) ) goto LABEL_15; return *(_DWORD *)(v8 + 332); case 4u: if ( !sub_638D40((void *)v8, (const unsigned __int8 *)lpFileName) ) goto LABEL_20; return *(_DWORD *)(v8 + 332); case 5u: if ( sub_638350(v8, (const unsigned __int8 *)lpFileName) != -1 ) { LABEL_15: v13 = 1168; LABEL_11: SetLastError(v13); return -1; } if ( !sub_6383B0(v8, -1) ) return -1; LABEL_20: v11 = sub_638D80(v8); *(_DWORD *)(v8 + 340) = v11; if ( v11 == -1 || (GetSystemTime(&SystemTime), v12 = *(_DWORD *)(v8 + 296) + 324 * *(_DWORD *)(v8 + 340), *(_DWORD *)(v8 + 344) = v12, *(_DWORD *)(v12 + 8) = 2, strncpy((char *)(*(_DWORD *)(v8 + 344) + 16), lpFileName, 0x103u), *(_DWORD *)(*(_DWORD *)(v8 + 344) + 288) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 292) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 296) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 300) = 0, SystemTimeToFileTime(&SystemTime, (LPFILETIME)(*(_DWORD *)(v8 + 344) + 304)), *(_DWORD *)(*(_DWORD *)(v8 + 344) + 312) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 284) = 0, *(_DWORD *)(*(_DWORD *)(v8 + 344) + 280) = SetFilePointer( *(HANDLE *)(v8 + 8), 0, (PLONG)(*(_DWORD *)(v8 + 344) + 284), 2u), *(_DWORD *)(*(_DWORD *)(v8 + 344) + 280) == -1) && GetLastError() ) return -1; result = *(_DWORD *)(v8 + 8); *(_DWORD *)(v8 + 316) = 1; *(_DWORD *)(v8 + 324) = 1; *(_DWORD *)(v8 + 328) = 0; *(_DWORD *)(v8 + 336) = 0; *(_DWORD *)(v8 + 332) = result; return result; default: return -1; } } // 86FEB8: using guessed type int __security_cookie; //----- (00639030) -------------------------------------------------------- int __thiscall sub_639030(void *this) { void *v1; // edi@1 struct tm *v2; // esi@1 __time32_t Time; // [sp+Ch] [bp-4h]@1 v1 = this; _time32(&Time); v2 = _localtime32(&Time); sprintf((char *)v1 + 2, "%04d%02d%02d", v2->tm_year + 1900, v2->tm_mon + 1, v2->tm_mday); sprintf((char *)v1 + 34, "%02d:%02d:%02d", v2->tm_hour, v2->tm_min, v2->tm_sec); return sprintf((char *)v1 + 66, "Assert%s%02d.txt", (char *)v1 + 2, v2->tm_hour); } //----- (006390B0) -------------------------------------------------------- FILE *__thiscall sub_6390B0(void *this, int a2, int a3) { void *v3; // esi@1 FILE *result; // eax@1 FILE *v5; // edi@2 v3 = this; result = (FILE *)sub_639030(this); if ( *(_WORD *)v3 ) { result = fopen((const char *)v3 + 66, "a"); v5 = result; if ( result ) { fprintf(result, "%s : AssertClass::ac_AssertFail : %s[%s]\n", (char *)v3 + 34, a2, a3); result = (FILE *)fclose(v5); } } return result; } //----- (00639100) -------------------------------------------------------- FILE *__thiscall sub_639100(void *this, int a2, int a3) { void *v3; // esi@1 FILE *result; // eax@1 FILE *v5; // edi@2 v3 = this; result = (FILE *)sub_639030(this); if ( *(_WORD *)v3 ) { result = fopen((const char *)v3 + 66, "a"); v5 = result; if ( result ) { fprintf(result, "%s : AssertClass::ac_AssertFail : %s[%d]\n", (char *)v3 + 34, a2, a3); result = (FILE *)fclose(v5); } } return result; } //----- (00639150) -------------------------------------------------------- FILE *__thiscall sub_639150(void *this, int a2, int a3, int a4) { void *v4; // esi@1 FILE *result; // eax@1 FILE *v6; // edi@2 v4 = this; result = (FILE *)sub_639030(this); if ( *(_WORD *)v4 ) { result = fopen((const char *)v4 + 66, "a"); v6 = result; if ( result ) { fprintf(result, "%s : AssertClass::ac_AssertFail : %s[%d/%d]\n", (char *)v4 + 34, a2, a3, a4); result = (FILE *)fclose(v6); } } return result; } //----- (00639280) -------------------------------------------------------- signed int __cdecl sub_639280(int a1) { signed int result; // eax@1 result = (signed int)dword_14D42D70; dword_14D42DBC = 0; do { *(_DWORD *)result = *(_DWORD *)(a1 - (_DWORD)dword_14D42D70 + result); result += 4; } while ( result < (signed int)&dword_14D42DB0 ); return result; } // 14D42D70: using guessed type int dword_14D42D70[]; // 14D42DB0: using guessed type int dword_14D42DB0; // 14D42DBC: using guessed type int dword_14D42DBC; //----- (006392B0) -------------------------------------------------------- double __cdecl sub_6392B0() { char v0; // dl@1 int v1; // edi@1 int v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 double v5; // st7@1 v0 = dword_14D42DBC; v1 = ((_BYTE)dword_14D42DBC - 1) & 0xF; dword_14D42DB8 = dword_14D42D70[v1]; v2 = dword_14D42D70[((_BYTE)dword_14D42DBC - 3) & 0xF]; v3 = dword_14D42D70[dword_14D42DBC] ^ v2 ^ ((v2 ^ 2 * dword_14D42D70[dword_14D42DBC]) << 15); dword_14D42DB0 = dword_14D42D70[((_BYTE)dword_14D42DBC - 7) & 0xF] ^ ((unsigned int)dword_14D42D70[((_BYTE)dword_14D42DBC - 7) & 0xF] >> 11); v4 = dword_14D42DB8 ^ v3 ^ v3 ^ dword_14D42DB0 ^ 4 * (dword_14D42DB8 ^ 8 * ((v3 ^ dword_14D42DB0) & 0xFED22169 ^ ((v3 ^ (dword_14D42DB0 << 10)) << 13))); dword_14D42D70[dword_14D42DBC] = v3 ^ dword_14D42DB0; dword_14D42D70[v1] = v4; v5 = (double)(unsigned int)dword_14D42D70[(v0 - 1) & 0xF]; dword_14D42DB4 = v3; dword_14D42DBC = (v0 - 1) & 0xF; return v5 * 2.328306436538696e-10; } // 14D42D70: using guessed type int dword_14D42D70[]; // 14D42DB0: using guessed type int dword_14D42DB0; // 14D42DB4: using guessed type int dword_14D42DB4; // 14D42DB8: using guessed type int dword_14D42DB8; // 14D42DBC: using guessed type int dword_14D42DBC; //----- (00639380) -------------------------------------------------------- int __thiscall sub_639380(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 64) = 0; *(_DWORD *)(this + 68) = 0; *(_DWORD *)(this + 72) = 0; *(_DWORD *)(this + 76) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 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; return result; } //----- (006393C0) -------------------------------------------------------- int __thiscall sub_6393C0(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // ecx@1 *(_DWORD *)(this + 64) = 0; *(_DWORD *)(this + 68) = 0; *(_DWORD *)(this + 72) = 0; *(_DWORD *)(this + 76) = 0; result = this; v3 = a2 - this; v4 = 16; do { *(_DWORD *)result = *(_DWORD *)(v3 + result); result += 4; --v4; } while ( v4 ); return result; } //----- (006393F0) -------------------------------------------------------- double __thiscall sub_6393F0(int this) { int v1; // eax@1 int v2; // esi@1 int v3; // edi@1 int v4; // edx@1 int v5; // eax@1 v1 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 68) = *(_DWORD *)(this + 4 * (((_BYTE)v1 - 1) & 0xF)); v2 = *(_DWORD *)(this + 4 * (((_BYTE)v1 - 3) & 0xF)); v3 = *(_DWORD *)(this + 4 * v1) ^ v2 ^ ((v2 ^ 2 * *(_DWORD *)(this + 4 * v1)) << 15); *(_DWORD *)(this + 72) = v3; v4 = *(_DWORD *)(this + 4 * (((_BYTE)v1 - 7) & 0xF)) ^ (*(_DWORD *)(this + 4 * (((_BYTE)v1 - 7) & 0xF)) >> 11); *(_DWORD *)(this + 76) = v4; *(_DWORD *)(this + 4 * v1) = v4 ^ v3; *(_DWORD *)(this + 4 * (((unsigned __int8)*(_DWORD *)(this + 64) - 1) & 0xF)) = *(_DWORD *)(this + 72) ^ *(_DWORD *)(this + 4 * *(_DWORD *)(this + 64)) ^ *(_DWORD *)(this + 68) ^ 4 * (*(_DWORD *)(this + 68) ^ 8 * (*(_DWORD *)(this + 4 * *(_DWORD *)(this + 64)) & 0xFED22169 ^ ((*(_DWORD *)(this + 72) ^ (*(_DWORD *)(this + 76) << 10)) << 13))); v5 = ((unsigned __int8)*(_DWORD *)(this + 64) - 1) & 0xF; *(_DWORD *)(this + 64) = v5; return (double)*(unsigned int *)(this + 4 * v5) * 2.328306436538696e-10; } //----- (006394A0) -------------------------------------------------------- unsigned int __thiscall sub_6394A0(int this, unsigned int a2, unsigned int a3) { unsigned int result; // eax@2 if ( a2 < a3 ) result = a2 + (unsigned int)(signed __int64)(sub_6393F0(this) * 1.0e11) % (a3 - a2 + 1); else result = a2; return result; } //----- (00639500) -------------------------------------------------------- unsigned int __thiscall sub_639500(int this, unsigned int a2) { return (unsigned int)(signed __int64)(sub_6393F0(this) * 1.0e11) % a2; } //----- (00639540) -------------------------------------------------------- int __thiscall sub_639540(int this) { *(_DWORD *)this = -1; memset((void *)(this + 4), 0, 0x400u); return this; } //----- (00639560) -------------------------------------------------------- void __thiscall sub_639560(void *this) { void **v1; // edi@1 signed int v2; // ebx@1 void *v3; // esi@2 v1 = (void **)((char *)this + 4); v2 = 256; do { v3 = *v1; if ( *v1 ) { sub_639560(*v1); operator delete(v3); } ++v1; --v2; } while ( v2 ); } //----- (00639590) -------------------------------------------------------- signed int __thiscall sub_639590(void *this, unsigned __int8 *a2, int a3) { unsigned __int8 *v3; // esi@1 unsigned __int8 v4; // al@1 void *v5; // ebx@1 bool v6; // zf@2 int v7; // eax@2 int v8; // eax@3 int v9; // edx@3 signed int result; // eax@8 v3 = a2; v4 = *a2; v5 = this; if ( *a2 ) { while ( 1 ) { v6 = *((_DWORD *)v5 + v4 + 1) == 0; v7 = (int)((char *)v5 + 4 * v4 + 4); if ( v6 ) { v8 = operator new(0x404u); v9 = v8; if ( v8 ) { *(_DWORD *)v8 = -1; memset((void *)(v8 + 4), 0, 0x400u); } else { v9 = 0; } *((_DWORD *)v5 + *v3 + 1) = v9; v7 = (int)((char *)v5 + 4 * *v3 + 4); if ( !*(_DWORD *)v7 ) break; } v5 = *(void **)v7; v4 = (v3++)[1]; if ( !v4 ) goto LABEL_8; } result = 0; } else { LABEL_8: *(_DWORD *)v5 = a3; result = 1; } return result; } //----- (00639620) -------------------------------------------------------- signed int __thiscall sub_639620(void *this, unsigned __int8 *a2) { unsigned __int8 *v2; // edx@1 unsigned __int8 v3; // al@1 bool v4; // zf@2 void **v5; // eax@2 signed int result; // eax@4 v2 = a2; v3 = *a2; if ( *a2 ) { while ( 1 ) { v4 = *((_DWORD *)this + v3 + 1) == 0; v5 = (void **)((char *)this + 4 * v3 + 4); if ( v4 ) break; this = *v5; v3 = (v2++)[1]; if ( !v3 ) goto LABEL_4; } result = -1; } else { LABEL_4: result = *(_DWORD *)this; } return result; } //----- (00639660) -------------------------------------------------------- signed int __thiscall sub_639660(void *this, unsigned __int8 *a2, int a3) { return sub_639590(this, a2, a3); } //----- (00639670) -------------------------------------------------------- signed int __thiscall sub_639670(void *this, int a2) { unsigned __int8 v2; // al@1 signed int result; // eax@2 bool v4; // zf@3 void **v5; // eax@3 v2 = *(_BYTE *)a2; if ( *(_BYTE *)a2 ) { v4 = *((_DWORD *)this + v2 + 1) == 0; v5 = (void **)((char *)this + 4 * v2 + 4); if ( v4 ) result = -1; else result = sub_639620(*v5, (unsigned __int8 *)(a2 + 1)); } else { result = *(_DWORD *)this; } return result; } //----- (006396B0) -------------------------------------------------------- __int16 __thiscall sub_6396B0(void *this, signed int a2) { __int16 result; // ax@2 if ( a2 > 100 ) result = sub_639500((int)((char *)this + 3441480), a2); else result = sub_427920(&unk_14D42DC0, a2); return result; } //----- (006396E0) -------------------------------------------------------- unsigned int __thiscall sub_6396E0(void *this, unsigned int a2, unsigned int a3) { return sub_6394A0((int)((char *)this + 3441480), a2, a3); } //----- (006396F0) -------------------------------------------------------- int __thiscall sub_6396F0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 32772) = 16383; *(_DWORD *)(this + 32768) = 0; return result; } //----- (00639710) -------------------------------------------------------- signed int __thiscall sub_639710(void *this, signed int a2) { void *v2; // esi@1 signed int v3; // ecx@1 signed int v4; // edi@1 signed int v5; // edi@3 signed int v6; // eax@4 __int16 v7; // cx@5 signed int result; // eax@7 v2 = this; v3 = 0; v4 = 0; do { *((_WORD *)v2 + v3++) = v4 / 16384; v4 += a2; } while ( v3 < 16384 ); v5 = 0; do { v6 = (signed int)((double)rand() * 16384.0 / 32767.0); if ( v6 < 16384 ) { v7 = *((_WORD *)v2 + v5); *((_WORD *)v2 + v5) = *((_WORD *)v2 + v6); *((_WORD *)v2 + v6) = v7; } ++v5; } while ( v5 < 16384 ); result = 0; do { if ( *((_WORD *)v2 + result) >= a2 ) *((_WORD *)v2 + result) = 0; ++result; } while ( result < 16384 ); return result; } //----- (006397A0) -------------------------------------------------------- void *__thiscall sub_6397A0(void *this) { void *v1; // esi@1 signed int v2; // ebx@1 unsigned int v3; // eax@1 signed int v4; // ecx@2 signed int v5; // edi@2 signed int v6; // edi@4 int v7; // eax@5 signed int v8; // eax@5 __int16 v9; // cx@6 signed int v10; // eax@8 void *v11; // esi@13 signed int v12; // edi@13 signed int v13; // esi@15 __time32_t Time; // [sp+Ch] [bp-5Ch]@1 int v16; // [sp+10h] [bp-58h]@5 void *v17; // [sp+14h] [bp-54h]@1 int v18[16]; // [sp+18h] [bp-50h]@16 unsigned int v19; // [sp+58h] [bp-10h]@1 int v20; // [sp+64h] [bp-4h]@1 int v21; // [sp+68h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v1 = this; v17 = this; _eh_vector_constructor_iterator_(this, 0x8008u, 101, (int)sub_6396F0, nullsub_2); v2 = 0; v20 = 0; _eh_vector_constructor_iterator_((char *)v1 + 3310376, 0x8008u, 4, (int)sub_6396F0, nullsub_2); sub_639380((int)((char *)v1 + 3441480)); LOBYTE(v20) = 2; v3 = _time32(&Time); srand(v3); do { v4 = 0; v5 = 0; do { *((_WORD *)v1 + v4++) = v5 / 16384; v5 += v2; } while ( v4 < 16384 ); v6 = 0; do { v7 = rand(); v16 = v7; v8 = (signed int)((double)v7 * 16384.0 / 32767.0); if ( v8 < 16384 ) { v9 = *((_WORD *)v1 + v6); *((_WORD *)v1 + v6) = *((_WORD *)v1 + v8); *((_WORD *)v1 + v8) = v9; } ++v6; } while ( v6 < 16384 ); v10 = 0; do { if ( *((_WORD *)v1 + v10) >= v2 ) *((_WORD *)v1 + v10) = 0; ++v10; } while ( v10 < 16384 ); ++v2; v1 = (char *)v1 + 32776; } while ( v2 < 101 ); v11 = (char *)v17 + 3310376; v12 = 4; do { sub_639710(v11, 1000); v11 = (char *)v11 + 32776; --v12; } while ( v12 ); v13 = 0; do v18[v13++] = rand(); while ( v13 < 16 ); sub_6393C0((int)((char *)v17 + 3441480), (int)v18); return v17; } // 86FEB8: using guessed type int __security_cookie; // 6397A0: using guessed type int var_50[16]; //----- (00639920) -------------------------------------------------------- int __thiscall sub_639920(int this) { int v1; // esi@1 v1 = this; sub_626B20(this); *(_DWORD *)v1 = &off_70435C; return v1; } // 70435C: using guessed type int (__thiscall *off_70435C)(void *, char); //----- (00639940) -------------------------------------------------------- void __thiscall sub_639940(int this) { *(_DWORD *)this = &off_70435C; sub_626C10(this); } // 70435C: using guessed type int (__thiscall *off_70435C)(void *, char); //----- (00639950) -------------------------------------------------------- void *__thiscall sub_639950(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70435C; sub_626C10((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70435C: using guessed type int (__thiscall *off_70435C)(void *, char); //----- (00639980) -------------------------------------------------------- void __thiscall sub_639980(void *this) { *(_DWORD *)this = &off_704364; } // 704364: using guessed type int (__thiscall *off_704364)(void *, char); //----- (00639990) -------------------------------------------------------- char __thiscall sub_639990(void *this, int a2, int a3) { unsigned int v3; // eax@1 char *v4; // edx@1 v3 = 0; v4 = (char *)this + 20; while ( *(_DWORD *)v4 != a2 ) { ++v3; v4 += 4; if ( v3 >= 4 ) { *(_WORD *)a3 = 7946; return 0; } } *((_DWORD *)this + v3 + 5) = -1; return 1; } //----- (006399D0) -------------------------------------------------------- char __stdcall sub_6399D0(int a1, int a2) { char result; // al@2 switch ( a1 ) { case 0: case 1: result = 1; break; case 2: *(_WORD *)a2 = 8012; result = 0; break; case 3: *(_WORD *)a2 = 8013; result = 0; break; case 4: *(_WORD *)a2 = 8014; result = 0; break; default: *(_WORD *)a2 = 8002; result = 0; break; } return result; } //----- (00639A40) -------------------------------------------------------- char __thiscall sub_639A40(int this) { return *(_BYTE *)(this + 6); } //----- (00639A50) -------------------------------------------------------- int __thiscall sub_639A50(void *this) { return sub_6419B0((int)((char *)this + 36)); } //----- (00639A60) -------------------------------------------------------- char *__thiscall sub_639A60(void *this) { return (char *)this + 36; } //----- (00639A70) -------------------------------------------------------- int __thiscall sub_639A70(int this) { int result; // eax@1 signed int v2; // ecx@1 result = this; v2 = *(_DWORD *)(this + 4); if ( v2 < 4 ) { ++*(_DWORD *)(result + 8); if ( *(_DWORD *)(result + 8) >= 5 ) { *(_DWORD *)(result + 8) = 0; *(_DWORD *)(result + 4) = v2 + 1; } } return result; } //----- (00639A90) -------------------------------------------------------- bool __thiscall sub_639A90(int this, int a2) { return *(_DWORD *)this && *(_DWORD *)this == *(_DWORD *)a2 && *(_DWORD *)(this + 4) == *(_DWORD *)(a2 + 4) && *(_DWORD *)(this + 8) == *(_DWORD *)(a2 + 8); } //----- (00639AC0) -------------------------------------------------------- signed __int16 __thiscall sub_639AC0(int this) { signed int v1; // eax@1 signed __int16 result; // ax@3 v1 = *(_DWORD *)(this + 4); if ( v1 >= 4 || v1 < 0 ) result = -1; else result = *(_WORD *)(*(_DWORD *)this + 2 * v1 + 8); return result; } //----- (00639AE0) -------------------------------------------------------- unsigned int __thiscall sub_639AE0(void *this, unsigned __int16 a2) { unsigned int result; // eax@2 char v3; // [sp+0h] [bp-104h]@3 unsigned int v4; // [sp+100h] [bp-4h]@1 int v5; // [sp+104h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; if ( a2 > 0x1F3u ) { sprintf(&v3, "RaidSystem::FindRaid : INVALID RAID SLOT INDEX : %d", a2); sub_64BC90(1, "Msg", "%s", &v3); result = 0; } else { result = (unsigned int)((char *)this + 56 * a2) & ((*((_WORD *)this + 28 * a2 + 2) != a2) - 1); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00639B70) -------------------------------------------------------- void *__thiscall sub_639B70(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_704364; sub_641CD0((int)((char *)this + 36)); *((_WORD *)v1 + 2) = -1; *((_BYTE *)v1 + 6) = 0; *((_DWORD *)v1 + 2) = -1; *((_DWORD *)v1 + 3) = -1; *((_DWORD *)v1 + 4) = -1; *((_DWORD *)v1 + 5) = -1; *((_DWORD *)v1 + 6) = -1; *((_DWORD *)v1 + 7) = -1; *((_DWORD *)v1 + 8) = -1; sub_641990((int)((char *)v1 + 36)); return v1; } // 704364: using guessed type int (__thiscall *off_704364)(void *, char); //----- (00639BC0) -------------------------------------------------------- void *__thiscall sub_639BC0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_704364; if ( a2 & 1 ) operator delete(this); return v2; } // 704364: using guessed type int (__thiscall *off_704364)(void *, char); //----- (00639BF0) -------------------------------------------------------- int __thiscall sub_639BF0(void *this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)a2 = this; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; return result; } //----- (00639C10) -------------------------------------------------------- int __thiscall sub_639C10(void *this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)a2 = this; *(_DWORD *)(a2 + 4) = 4; *(_DWORD *)(a2 + 8) = 0; return result; } //----- (00639C30) -------------------------------------------------------- char __thiscall sub_639C30(int this, __int16 a2, unsigned __int16 *a3, int a4) { int v4; // esi@1 char result; // al@2 int v6; // edi@5 signed int v7; // edi@5 int v8; // ebx@5 int v9; // eax@6 int v10; // [sp+Ch] [bp+8h]@5 v4 = this; if ( dword_1508B158 ) { if ( -1 == *(_WORD *)(this + 4) ) { v6 = sub_641CA0((void *)dword_1508B158, *a3); *(_WORD *)(v4 + 4) = a2; *(_BYTE *)(v4 + 6) = *(_BYTE *)v6; *(_DWORD *)(v4 + 16) = *(_DWORD *)(v6 + 4); v10 = v4 + 36; sub_641990(v4 + 36); sub_6419C0(v4 + 36, *(_DWORD *)(v4 + 16)); *(_BYTE *)(v6 + 205) = 1; v7 = 0; v8 = v4 + 8; while ( 1 ) { v9 = sub_641CA0((void *)dword_1508B158, a3[v7]); if ( !v9 ) break; *(_BYTE *)(v9 + 205) = 1; *(_WORD *)v8 = a3[v7++]; v8 += 2; if ( v7 >= 4 ) return 1; } *(_WORD *)a4 = 7814; *(_WORD *)(v4 + 4) = -1; *(_BYTE *)(v4 + 6) = 0; *(_DWORD *)(v4 + 8) = -1; *(_DWORD *)(v4 + 12) = -1; *(_DWORD *)(v4 + 16) = -1; *(_DWORD *)(v4 + 20) = -1; *(_DWORD *)(v4 + 24) = -1; *(_DWORD *)(v4 + 28) = -1; *(_DWORD *)(v4 + 32) = -1; sub_641990(v10); result = 0; } else { *(_WORD *)a4 = 7874; result = 0; } } else { *(_WORD *)a4 = 7873; result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639D50) -------------------------------------------------------- char __thiscall sub_639D50(void *this, int a2, int a3) { void *v3; // edi@1 char result; // al@2 unsigned __int8 v5; // al@5 unsigned __int16 v6; // ax@7 v3 = this; if ( a2 ) { if ( dword_1508B158 ) { v5 = *(_BYTE *)(a2 + 4); if ( v5 >= 4u || (v6 = *((_WORD *)this + v5 + 4), v6 != *(_WORD *)(a2 + 2)) ) { *(_WORD *)a3 = 8007; result = 0; } else { if ( -1 == v6 ) { *(_WORD *)a3 = 8007; result = 0; } else { if ( sub_641D50((void *)dword_1508B158, v6, a2 + 10) == v6 ) { result = 1; ++*((_BYTE *)v3 + 6); } else { *(_WORD *)a3 = 8006; result = 0; } } } } else { *(_WORD *)a3 = 7873; result = 0; } } else { *(_WORD *)a3 = 8003; result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639E00) -------------------------------------------------------- signed int __thiscall sub_639E00(void *this, unsigned __int8 a2, unsigned __int8 a3) { signed int result; // eax@2 unsigned __int16 v4; // ax@5 int v5; // eax@6 if ( a2 < 4u ) { if ( a3 < 5u && dword_1508B158 && (v4 = *((_WORD *)this + a2 + 4), v4 != -1) && (v5 = sub_641CA0((void *)dword_1508B158, v4)) != 0 && *(_BYTE *)v5 > a3 ) result = *(_DWORD *)(v5 + 36 * a3 + 4); else result = -1; } else { result = -1; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639E60) -------------------------------------------------------- int __thiscall sub_639E60(int this, char a2) { int result; // eax@1 result = dword_1508B158; if ( dword_1508B158 ) { result = sub_641CA0((void *)dword_1508B158, *(_WORD *)(this + 8)); if ( result ) *(_BYTE *)(result + 204) = a2; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639E90) -------------------------------------------------------- char __thiscall sub_639E90(int this) { char result; // al@2 int v2; // eax@3 if ( dword_1508B158 && (v2 = sub_641CA0((void *)dword_1508B158, *(_WORD *)(this + 8))) != 0 ) result = *(_BYTE *)(v2 + 204); else result = 0; return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639EC0) -------------------------------------------------------- char __thiscall sub_639EC0(int this, int a2) { int v2; // esi@1 signed int v3; // edx@2 signed int v4; // eax@4 unsigned __int16 v5; // ax@7 int v6; // eax@8 signed int v7; // ecx@9 char result; // al@10 v2 = this; if ( *(_DWORD *)this && (v3 = *(_DWORD *)(this + 4), v3 < 4) && v3 >= 0 && (v4 = *(_DWORD *)(this + 8), v4 < 5) && v4 >= 0 && dword_1508B158 && (v5 = *(_WORD *)(*(_DWORD *)this + 2 * v3 + 8), v5 != -1) && (v6 = sub_641CA0((void *)dword_1508B158, v5)) != 0 ) { v7 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)v6 > v7 ) { *(_DWORD *)a2 = *(_DWORD *)(v6 + 36 * v7 + 4); result = 1; } else { *(_DWORD *)a2 = -1; result = 1; } } else { result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639F40) -------------------------------------------------------- bool __thiscall sub_639F40(int this, int a2) { return !*(_DWORD *)this || *(_DWORD *)this != *(_DWORD *)a2 || *(_DWORD *)(this + 4) != *(_DWORD *)(a2 + 4) || *(_DWORD *)(this + 8) != *(_DWORD *)(a2 + 8); } //----- (00639F80) -------------------------------------------------------- int __thiscall sub_639F80(int this) { signed int v1; // eax@1 int result; // eax@3 v1 = *(_DWORD *)(this + 4); if ( v1 >= 4 || v1 < 0 ) result = sub_641CA0((void *)dword_1508B158, 0xFFFFu); else result = sub_641CA0((void *)dword_1508B158, *(_WORD *)(*(_DWORD *)this + 2 * v1 + 8)); return result; } // 1508B158: using guessed type int dword_1508B158; //----- (00639FC0) -------------------------------------------------------- int __thiscall sub_639FC0(int this) { int v1; // esi@1 signed int v2; // eax@1 unsigned __int16 v3; // ax@3 int v4; // eax@5 signed int v5; // ecx@6 int result; // eax@9 v1 = this; v2 = *(_DWORD *)(this + 4); if ( v2 >= 4 || v2 < 0 ) v3 = -1; else v3 = *(_WORD *)(*(_DWORD *)this + 2 * v2 + 8); v4 = sub_641CA0((void *)dword_1508B158, v3); if ( v4 && (v5 = *(_DWORD *)(v1 + 8), *(_BYTE *)v4 > v5) && v5 < 5 && v5 >= 0 ) result = v4 + 36 * v5 + 4; else result = 0; return result; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A010) -------------------------------------------------------- char __thiscall sub_63A010(int this, int a2) { int v2; // esi@1 signed int v3; // eax@1 unsigned __int16 v4; // ax@3 int v5; // eax@5 signed int v6; // ecx@6 int v7; // eax@9 char result; // al@9 v2 = this; v3 = *(_DWORD *)(this + 4); if ( v3 >= 4 || v3 < 0 ) v4 = -1; else v4 = *(_WORD *)(*(_DWORD *)this + 2 * v3 + 8); v5 = sub_641CA0((void *)dword_1508B158, v4); if ( v5 && (v6 = *(_DWORD *)(v2 + 8), *(_BYTE *)v5 > v6) && v6 < 5 && v6 >= 0 ) { v7 = v5 + 36 * v6 + 12; *(_DWORD *)v7 = *(_DWORD *)a2; *(_DWORD *)(v7 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v7 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v7 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v7 + 16) = *(_DWORD *)(a2 + 16); result = 1; } else { result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A090) -------------------------------------------------------- void *__thiscall sub_63A090(void *this, int a2) { void *v2; // esi@1 v2 = this; _eh_vector_constructor_iterator_(this, 0x38u, 500, (int)sub_639B70, sub_639980); dword_1508B158 = a2; return v2; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A0C0) -------------------------------------------------------- unsigned int __thiscall sub_63A0C0(void *this, unsigned __int16 a2) { unsigned int result; // eax@2 if ( -1 == a2 ) result = 0; else result = sub_639AE0(this, a2); return result; } //----- (0063A0E0) -------------------------------------------------------- int __thiscall sub_63A0E0(void *this, __int16 a2, unsigned __int16 *a3, int a4) { int result; // eax@2 int v5; // esi@3 *(_WORD *)a4 = 7808; if ( (unsigned __int16)a2 < 0x1F4u ) { v5 = (int)((char *)this + 56 * (unsigned __int16)a2); if ( *(_WORD *)(v5 + 4) == -1 ) result = sub_639C30(v5, a2, a3, a4) != 0 ? v5 : 0; else result = 0; } else { result = 0; } return result; } //----- (0063A150) -------------------------------------------------------- int __thiscall sub_63A150(void *this, __int16 a2, int a3) { int result; // eax@2 unsigned int v4; // ebx@5 char *v5; // eax@5 signed int v6; // esi@9 int v7; // edi@9 int v8; // eax@10 signed int i; // edi@13 void *v10; // [sp+0h] [bp-14h]@1 __int16 v11; // [sp+8h] [bp-Ch]@9 int v12; // [sp+Ah] [bp-Ah]@9 __int16 v13; // [sp+Eh] [bp-6h]@9 unsigned int v14; // [sp+10h] [bp-4h]@1 int v15; // [sp+14h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; *(_WORD *)a3 = 7808; v10 = this; if ( dword_1508B158 ) { if ( -1 == a2 ) { *(_WORD *)a3 = 7812; result = 0; } else { v4 = 0; v5 = (char *)this + 4; while ( *(_WORD *)v5 != -1 ) { ++v4; v5 += 56; if ( v4 >= 0x1F4 ) return 0; } v12 = 0; v13 = 0; v11 = a2; v6 = 1; v7 = (int)&v12; while ( 1 ) { v8 = sub_641B30(dword_1508B158, v7); if ( v8 != 65528 ) break; ++v6; v7 += 2; if ( v6 >= 4 ) return sub_639C30((int)((char *)v10 + 56 * v4), v4, (unsigned __int16 *)&v11, a3) != 0 ? (int)((char *)v10 + 56 * v4) : 0; } for ( i = 1; i < v6; ++i ) v8 = sub_641A70(v8, dword_1508B158, *(&v11 + i)); *(_WORD *)a3 = 7813; result = 0; } } else { *(_WORD *)a3 = 7873; result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; // 1508B158: using guessed type int dword_1508B158; //----- (0063A2A0) -------------------------------------------------------- signed __int16 __thiscall sub_63A2A0(void *this, int a2) { void *v3; // ebx@3 void *v4; // ecx@3 signed int v5; // edi@5 signed int v6; // esi@5 unsigned __int16 v7; // ax@12 int v8; // eax@13 signed int v9; // eax@15 unsigned int v10; // [sp+0h] [bp-4h]@3 if ( a2 == -1 ) return -1; v3 = this; v4 = (void *)dword_1508B158; v10 = 0; while ( !*((_BYTE *)v3 + 6) ) { LABEL_22: v3 = (char *)v3 + 56; ++v10; if ( v10 >= 0x1F4 ) return -1; } v5 = 0; v6 = 0; while ( 1 ) { if ( v3 ) { if ( v5 == 4 && !v6 ) goto LABEL_22; if ( (unsigned int)v5 <= 3 ) { if ( (unsigned int)v6 <= 4 ) { if ( v4 ) { v7 = *((_WORD *)v3 + v5 + 4); if ( v7 != -1 ) break; } } } } LABEL_19: if ( v5 < 4 ) { ++v6; if ( v6 >= 5 ) { v6 = 0; ++v5; } } } v8 = sub_641CA0(v4, v7); if ( !v8 || (*(_BYTE *)v8 > v6 ? (v9 = *(_DWORD *)(v8 + 36 * v6 + 4)) : (v9 = -1), v9 != a2) ) { v4 = (void *)dword_1508B158; goto LABEL_19; } return v10; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A360) -------------------------------------------------------- char __thiscall sub_63A360(void *this, int a2) { int v2; // eax@1 void *v3; // esi@1 char result; // al@2 signed int v5; // edi@3 signed int v6; // ebx@3 unsigned __int16 v7; // ax@11 int v8; // eax@13 unsigned __int16 *v9; // edi@19 void *v10; // [sp+4h] [bp-14h]@3 int v11; // [sp+8h] [bp-10h]@4 int v12; // [sp+Ch] [bp-Ch]@4 int v13; // [sp+10h] [bp-8h]@8 int v14; // [sp+14h] [bp-4h]@1 signed int v15; // [sp+20h] [bp+8h]@19 v2 = dword_1508B158; v3 = this; v14 = dword_1508B158; if ( dword_1508B158 ) { v5 = 0; v10 = this; v6 = 0; LABEL_4: v12 = v6; v11 = v5; while ( !v3 || v5 != 4 || v6 ) { LOBYTE(v2) = sub_639EC0((int)&v10, (int)&v13); if ( !(_BYTE)v2 ) { *(_WORD *)a2 = 8001; return 0; } if ( v13 != -1 ) { v7 = (unsigned int)v5 > 3 ? -1 : *((_WORD *)v3 + v5 + 4); v8 = sub_641FA0((void *)v14, v7, v13); LOBYTE(v2) = sub_6399D0(v8, a2); if ( !(_BYTE)v2 ) return 0; } if ( v5 < 4 ) { ++v6; v12 = v6; if ( v6 >= 5 ) { v6 = 0; ++v5; goto LABEL_4; } } } v9 = (unsigned __int16 *)((char *)v3 + 8); v15 = 4; do { v2 = sub_641A70(v2, v14, *v9); ++v9; --v15; } while ( v15 ); *((_WORD *)v3 + 2) = -1; *((_BYTE *)v3 + 6) = 0; *((_DWORD *)v3 + 2) = -1; *((_DWORD *)v3 + 3) = -1; *((_DWORD *)v3 + 4) = -1; *((_DWORD *)v3 + 5) = -1; *((_DWORD *)v3 + 6) = -1; *((_DWORD *)v3 + 7) = -1; *((_DWORD *)v3 + 8) = -1; sub_641990((int)((char *)v3 + 36)); result = 1; } else { result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A470) -------------------------------------------------------- int __thiscall sub_63A470(void *this, int a2, int a3) { signed int v3; // edi@1 void *v4; // ebx@1 signed int v5; // esi@1 unsigned __int16 v6; // ax@8 int v7; // eax@9 signed int v8; // eax@11 int result; // eax@17 v3 = 0; v4 = this; v5 = 0; while ( v4 && (v3 != 4 || v5) ) { if ( (unsigned int)v3 > 3 ) break; if ( (unsigned int)v5 > 4 ) break; if ( !dword_1508B158 ) break; v6 = *((_WORD *)v4 + v3 + 4); if ( v6 == -1 ) break; v7 = sub_641CA0((void *)dword_1508B158, v6); if ( !v7 ) break; if ( *(_BYTE *)v7 > v5 ) v8 = *(_DWORD *)(v7 + 36 * v5 + 4); else v8 = -1; if ( a3 == v8 ) { result = a2; *(_DWORD *)a2 = v4; *(_DWORD *)(a2 + 4) = v3; *(_DWORD *)(a2 + 8) = v5; return result; } if ( v3 < 4 ) { ++v5; if ( v5 >= 5 ) { v5 = 0; ++v3; } } } result = a2; *(_DWORD *)a2 = v4; *(_DWORD *)(a2 + 4) = 4; *(_DWORD *)(a2 + 8) = 0; return result; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A510) -------------------------------------------------------- char __thiscall sub_63A510(void *this, int a2, int a3) { void *v3; // esi@1 char result; // al@2 signed __int16 v5; // ax@12 void *v6; // [sp+8h] [bp-Ch]@5 int v7; // [sp+Ch] [bp-8h]@7 int v8; // [sp+10h] [bp-4h]@8 v3 = this; if ( !a2 ) { *(_WORD *)a3 = 8003; return 0; } if ( !dword_1508B158 ) { *(_WORD *)a3 = 7873; return 0; } sub_63A470(this, (int)&v6, -1); if ( v6 && v6 == v3 && v7 == 4 ) { if ( !v8 ) { *(_WORD *)a3 = 8005; return 0; } goto LABEL_15; } if ( v7 < 0 || v7 >= 4 ) { LABEL_15: sub_639100(&unk_86DDD8, (int)"Raid::AddMember : INVALID PARTY INDEX :", v7); return 0; } v5 = sub_639AC0((int)&v6); if ( sub_641D50((void *)dword_1508B158, v5, a2) == v5 ) { result = 1; ++*((_BYTE *)v3 + 6); } else { *(_WORD *)a3 = 8006; result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A600) -------------------------------------------------------- char __thiscall sub_63A600(void *this, int a2, unsigned __int8 a3, unsigned __int8 a4, int a5) { void *v5; // esi@1 void *v6; // ebx@1 char result; // al@2 signed int v8; // edi@5 signed __int16 v9; // ax@12 signed __int16 v10; // cx@13 unsigned __int16 v11; // ST04_2@14 int v12; // eax@14 void *v13; // edi@22 int v14; // eax@22 unsigned __int16 *v15; // eax@23 int v16; // [sp+8h] [bp-4Ch]@18 void *v17; // [sp+Ch] [bp-48h]@1 void *v18; // [sp+10h] [bp-44h]@5 int v19; // [sp+14h] [bp-40h]@7 int v20; // [sp+18h] [bp-3Ch]@5 int v21; // [sp+1Ch] [bp-38h]@12 unsigned __int16 *v22; // [sp+20h] [bp-34h]@14 int v23; // [sp+24h] [bp-30h]@12 int v24; // [sp+28h] [bp-2Ch]@1 unsigned __int8 v25; // [sp+2Fh] [bp-25h]@1 char v26; // [sp+30h] [bp-24h]@22 unsigned int v27; // [sp+50h] [bp-4h]@1 int v28; // [sp+54h] [bp+0h]@1 v27 = (unsigned int)&v28 ^ __security_cookie; v5 = (void *)dword_1508B158; v6 = this; v25 = a3; v24 = a5; v17 = (void *)dword_1508B158; if ( !dword_1508B158 ) { *(_WORD *)a5 = 7873; return 0; } if ( a2 == -1 ) { *(_WORD *)a5 = 8008; return 0; } sub_63A470(this, (int)&v18, a2); v8 = v20; if ( v18 && v18 == v6 && v19 == 4 && !v20 ) { *(_WORD *)v24 = 8008; return 0; } if ( v25 >= 4u || a4 >= 5u ) { v10 = 8009; goto LABEL_27; } v9 = sub_639AC0((int)&v18); v23 = (unsigned __int16)v9; v21 = sub_641CA0(v5, v9); if ( !v21 ) { v10 = 8010; LABEL_27: *(_WORD *)v24 = v10; return 0; } v11 = *((_WORD *)v6 + v25 + 4); v22 = (unsigned __int16 *)((char *)v6 + 2 * v25 + 8); v12 = sub_641CA0(v5, v11); if ( v12 ) { if ( a4 >= *(_BYTE *)v12 ) { if ( sub_639EC0((int)&v18, (int)&v16) ) { if ( v8 < 5 ) { if ( v8 >= 0 ) { memcpy(&v26, (const void *)(v21 + 36 * v8 + 4), 0x20u); v13 = v17; v14 = sub_641FA0(v17, v23, v16); if ( sub_6399D0(v14, v24) ) { v15 = v22; --*((_BYTE *)v6 + 6); if ( sub_641D50(v13, *v15, (int)&v26) == *v15 ) { result = 1; ++*((_BYTE *)v6 + 6); return result; } *(_WORD *)v24 = 8006; } } } } else { *(_WORD *)v24 = 8001; } } else { *(_WORD *)v24 = 8011; } } else { *(_WORD *)v24 = 8010; } return 0; } // 86FEB8: using guessed type int __security_cookie; // 1508B158: using guessed type int dword_1508B158; //----- (0063A7F0) -------------------------------------------------------- char __thiscall sub_63A7F0(void *this, int a2, int a3) { void *v3; // esi@1 unsigned __int16 v5; // di@9 int v6; // eax@14 void *v7; // [sp+4h] [bp-Ch]@3 unsigned int v8; // [sp+8h] [bp-8h]@5 int v9; // [sp+Ch] [bp-4h]@6 v3 = this; if ( !dword_1508B158 ) { *(_WORD *)a3 = 7873; return 0; } sub_63A470(this, (int)&v7, a2); if ( v7 && v7 == v3 && v8 == 4 && !v9 ) { *(_WORD *)a3 = 8008; return 0; } if ( v8 > 3 ) v5 = -1; else v5 = *((_WORD *)v7 + v8 + 4); if ( !sub_641CA0((void *)dword_1508B158, v5) ) { *(_WORD *)a3 = 7814; return 0; } v6 = sub_641FA0((void *)dword_1508B158, v5, a2); if ( !sub_6399D0(v6, a3) ) return 0; --*((_BYTE *)v3 + 6); return 1; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A8C0) -------------------------------------------------------- char __thiscall sub_63A8C0(void *this, int a2, int a3, int a4) { void *v4; // esi@1 char result; // al@2 unsigned int v6; // ebx@3 signed int v7; // edi@3 void *v8; // [sp+4h] [bp-Ch]@3 int v9; // [sp+8h] [bp-8h]@3 unsigned int v10; // [sp+Ch] [bp-4h]@3 v4 = this; if ( dword_1508B158 ) { sub_63A470(this, (int)&v8, a2); v6 = v10; v7 = v9; if ( v8 && v8 == v4 && v9 == 4 && !v10 || (sub_63A470(v4, (int)&v8, a3), v8) && v8 == v4 && v9 == 4 && !v10 || v7 >= 4 || v7 < 0 || v9 >= 4 || v9 < 0 ) result = 0; else result = sub_642270((void *)dword_1508B158, *((_WORD *)v4 + v7 + 4), v6, *((_WORD *)v4 + v9 + 4), v10); } else { result = 0; } return result; } // 1508B158: using guessed type int dword_1508B158; //----- (0063A970) -------------------------------------------------------- char __thiscall sub_63A970(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 char result; // al@5 unsigned int v6; // eax@6 int v7; // ecx@6 unsigned int v8; // eax@9 int v9; // ecx@9 char v10; // [sp+8h] [bp-Ch]@1 v3 = this; v4 = sub_63A470(this, (int)&v10, a2); if ( !*(_DWORD *)v4 || *(void **)v4 != v3 || *(_DWORD *)(v4 + 4) != 4 || *(_DWORD *)(v4 + 8) ) { v6 = 0; v7 = (int)((char *)v3 + 20); do { if ( a2 == *(_DWORD *)v7 ) { *(_WORD *)a3 = 7948; return 0; } ++v6; v7 += 4; } while ( v6 < 4 ); v8 = 0; v9 = (int)((char *)v3 + 20); while ( *(_DWORD *)v9 != -1 ) { ++v8; v9 += 4; if ( v8 >= 4 ) { *(_WORD *)a3 = 7947; return 0; } } *((_DWORD *)v3 + v8 + 5) = a2; result = 1; } else { *(_WORD *)a3 = 7944; result = 0; } return result; } //----- (0063AA20) -------------------------------------------------------- char __thiscall sub_63AA20(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@5 char v5; // [sp+8h] [bp-Ch]@1 v2 = this; v3 = sub_63A470(this, (int)&v5, a2); if ( *(_DWORD *)v3 && *(void **)v3 == v2 && *(_DWORD *)(v3 + 4) == 4 && !*(_DWORD *)(v3 + 8) || sub_6419B0((int)((char *)v2 + 36)) == a2 ) { result = 0; } else { sub_6419C0((int)((char *)v2 + 36), a2); result = 1; } return result; } //----- (0063AA80) -------------------------------------------------------- char __thiscall sub_63AA80(void *this, int a2) { int v2; // edi@1 void *v3; // esi@1 int v4; // eax@1 char result; // al@5 unsigned int v6; // ebx@7 int v7; // eax@9 int v8; // ecx@10 char v9; // [sp+8h] [bp-Ch]@1 v2 = a2; v3 = this; v4 = sub_63A470(this, (int)&v9, a2); if ( *(_DWORD *)v4 && *(void **)v4 == v3 && *(_DWORD *)(v4 + 4) == 4 && !*(_DWORD *)(v4 + 8) || *((_DWORD *)v3 + 4) == v2 ) { result = 0; } else { *((_DWORD *)v3 + 4) = v2; v6 = 0; do { if ( (unsigned __int8)v6 < 4u ) { v7 = *((_DWORD *)v3 + (unsigned __int8)v6 + 5); if ( v7 != -1 ) { v8 = *((_DWORD *)v3 + 4); if ( v7 == v8 ) sub_639990(v3, v8, (int)&a2); } } ++v6; } while ( v6 < 4 ); result = 1; } return result; } //----- (0063AB00) -------------------------------------------------------- bool __thiscall sub_63AB00(void *this, unsigned __int16 a2, int a3) { void *v3; // eax@1 bool result; // al@2 *(_WORD *)a3 = 7808; v3 = (void *)sub_639AE0(this, a2); if ( v3 ) { result = sub_63A360(v3, a3) != 0; } else { *(_WORD *)a3 = 8000; result = 0; } return result; } //----- (0063AB40) -------------------------------------------------------- int __thiscall sub_63AB40(int this) { int v1; // esi@1 v1 = this; sub_6432E0(this); return v1; } //----- (0063AB60) -------------------------------------------------------- int __thiscall sub_63AB60(void *this, const char *a2) { void *v2; // edi@1 char *v3; // esi@1 char v4; // al@2 int v5; // esi@3 int result; // eax@3 int 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 const char *v12; // [sp-Ch] [bp-60h]@5 int v13; // [sp-8h] [bp-5Ch]@5 int v14; // [sp-4h] [bp-58h]@5 int *v15; // [sp+Ch] [bp-48h]@5 char v16[64]; // [sp+10h] [bp-44h]@1 unsigned int v17; // [sp+50h] [bp-4h]@1 int v18; // [sp+54h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v2 = this; strncpy(v16, a2, 0x3Fu); v3 = v16; do v4 = *v3++; while ( v4 ); v5 = v3 - &v16[1]; result = 0; do { if ( v5 <= 0 ) break; v14 = 0; v13 = (int)v16; v12 = "MapIDClient"; v15 = &v7; v16[v5] = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "FieldList", 0x14u); result = sub_644460(v2, v7, v8, v9, v10, v11, v12, v13, v14); --v5; } while ( !result ); return result; } // 86FEB8: using guessed type int __security_cookie; // 63AB60: using guessed type char var_44[64]; //----- (0063AC00) -------------------------------------------------------- signed int __thiscall sub_63AC00(void *this, const char *a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 signed int result; // eax@3 int 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 const 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)&a3; v14 = 0; v4 = this; v13 = a3; v12 = "Serial"; a3 = (int)&v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "FieldList", 0x14u); v5 = sub_644C30(v4, a2, v7, v8, v9, v10, v11, v12, v13, v14, v15); if ( v5 && a3 == 3 ) result = *(_BYTE *)v5; else result = -1; return result; } //----- (0063AC70) -------------------------------------------------------- signed int __thiscall sub_63AC70(int this, int a2) { signed int result; // eax@1 result = *(_DWORD *)(this + 69716); if ( result < 512 ) { *(_DWORD *)(this + 4 * result + 67668) = a2; ++*(_DWORD *)(this + 69716); } return result; } //----- (0063ACA0) -------------------------------------------------------- void *__thiscall sub_63ACA0(void *this, unsigned __int16 a2) { void *v2; // ebx@1 int v3; // ecx@2 int v4; // esi@4 void *result; // eax@6 int v6; // eax@7 v2 = this; if ( a2 >= (unsigned int)dword_14D20894 || (v3 = dword_14D21184 + 40 * a2) == 0 || !*(_DWORD *)v3 ) return v2; v4 = **(_WORD **)v3; if ( (_WORD)v4 != a2 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v4 + 10000 * a2); return v2; } v6 = *(_DWORD *)(*(_DWORD *)v3 + 102); if ( v6 < 39 ) { result = (void *)*((_DWORD *)v2 + v6 + 39); } else { sub_639100(&unk_86DDD8, (int)"ItemAttributeClassContainer::operator [] : Invalid item class", v6); result = v2; } return result; } // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0063AD40) -------------------------------------------------------- int __stdcall sub_63AD40(int a1, int a2, int a3, int a4) { return 0; } //----- (0063AD50) -------------------------------------------------------- signed int __cdecl sub_63AD50() { return 255; } //----- (0063AD60) -------------------------------------------------------- signed int __stdcall sub_63AD60(int a1) { return -1; } //----- (0063AD70) -------------------------------------------------------- int __stdcall sub_63AD70(int a1) { return *(_BYTE *)(a1 + 2); } //----- (0063AD80) -------------------------------------------------------- char __stdcall sub_63AD80(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 2) = a2; return result; } //----- (0063AD90) -------------------------------------------------------- int __stdcall sub_63AD90(int a1) { return *(_WORD *)(a1 + 2); } //----- (0063ADA0) -------------------------------------------------------- __int16 __stdcall sub_63ADA0(int a1, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(a1 + 2) = a2; return result; } //----- (0063ADC0) -------------------------------------------------------- int __stdcall sub_63ADC0(int a1) { return a1 + 61; } //----- (0063ADD0) -------------------------------------------------------- int __stdcall sub_63ADD0(int a1) { return a1 + 9; } //----- (0063ADE0) -------------------------------------------------------- int __stdcall sub_63ADE0(int a1) { return *(_BYTE *)(a1 + 10); } //----- (0063ADF0) -------------------------------------------------------- int __stdcall sub_63ADF0(int a1) { return a1 + 5; } //----- (0063AE00) -------------------------------------------------------- int __stdcall sub_63AE00(int a1) { return a1 + 25; } //----- (0063AE10) -------------------------------------------------------- int __stdcall sub_63AE10(int a1) { return a1 + 10; } //----- (0063AE20) -------------------------------------------------------- signed int __cdecl sub_63AE20() { return 21; } //----- (0063AE30) -------------------------------------------------------- int __stdcall sub_63AE30(int a1) { return a1 + 4; } //----- (0063AE40) -------------------------------------------------------- signed int __cdecl sub_63AE40() { return 23; } //----- (0063AE50) -------------------------------------------------------- signed int __cdecl sub_63AE50() { return 37; } //----- (0063AE60) -------------------------------------------------------- int __stdcall sub_63AE60(int a1) { return a1 + 2; } //----- (0063AE70) -------------------------------------------------------- signed int __cdecl sub_63AE70() { return 27; } //----- (0063AE80) -------------------------------------------------------- signed int __cdecl sub_63AE80() { return 34; } //----- (0063AE90) -------------------------------------------------------- signed int __cdecl sub_63AE90() { return 29; } //----- (0063AEA0) -------------------------------------------------------- signed int __cdecl sub_63AEA0() { return 30; } //----- (0063AEB0) -------------------------------------------------------- signed int __cdecl sub_63AEB0() { return 31; } //----- (0063AEC0) -------------------------------------------------------- signed int __cdecl sub_63AEC0() { return 35; } //----- (0063AED0) -------------------------------------------------------- signed int __cdecl sub_63AED0() { return 38; } //----- (0063AEE0) -------------------------------------------------------- int __stdcall sub_63AEE0(int a1) { return *(_BYTE *)(a1 + 18); } //----- (0063AEF0) -------------------------------------------------------- int __stdcall sub_63AEF0(int a1, int a2, const void *a3, int a4) { int result; // eax@1 int v5; // ecx@3 __int16 v6; // dx@3 char v7; // [sp+8h] [bp-28h]@3 int v8; // [sp+Ch] [bp-24h]@3 int v9; // [sp+10h] [bp-20h]@3 int v10; // [sp+14h] [bp-1Ch]@3 int v11; // [sp+18h] [bp-18h]@3 char v12; // [sp+1Ch] [bp-14h]@3 unsigned int v13; // [sp+2Ch] [bp-4h]@1 int v14; // [sp+30h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; result = a2; if ( a2 > 0 ) { memcpy(&v7, a3, 0x24u); v9 = a4 + a2; _LN52(&v7); v5 = v9 & 0x3F | (v8 << 6); v6 = v11; *(_BYTE *)a1 = v12 - 100; result = *(_BYTE *)a1; *(_DWORD *)a1 = result | ((v6 + 1) << 8) & 0x1F00 | ((v10 & 0x3F | (v5 << 6)) << 13); } else { *(_DWORD *)a1 = 1992027391; } return result; } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0063AF90) -------------------------------------------------------- int __stdcall sub_63AF90(int a1) { return *(_DWORD *)(a1 + 2); } //----- (0063AFA0) -------------------------------------------------------- int __stdcall sub_63AFA0(int a1, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(a1 + 2) = a2; return result; } //----- (0063AFB0) -------------------------------------------------------- int __stdcall sub_63AFB0(int a1) { return a1 + 39; } //----- (0063AFC0) -------------------------------------------------------- int __stdcall sub_63AFC0(int a1) { return a1 + 66; } //----- (0063AFD0) -------------------------------------------------------- int __stdcall sub_63AFD0(int a1) { return a1 + 14; } //----- (0063AFE0) -------------------------------------------------------- char __stdcall sub_63AFE0(int a1) { return -1; } //----- (0063AFF0) -------------------------------------------------------- char __stdcall sub_63AFF0(int a1) { return *(_BYTE *)(a1 + 38); } //----- (0063B000) -------------------------------------------------------- char __stdcall sub_63B000(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 38) = a2; return result; } //----- (0063B010) -------------------------------------------------------- char __stdcall sub_63B010(int a1) { return *(_BYTE *)(a1 + 65); } //----- (0063B020) -------------------------------------------------------- char __stdcall sub_63B020(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 65) = a2; return result; } //----- (0063B030) -------------------------------------------------------- char __stdcall sub_63B030(int a1) { return *(_BYTE *)(a1 + 13); } //----- (0063B040) -------------------------------------------------------- char __stdcall sub_63B040(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 13) = a2; return result; } //----- (0063B050) -------------------------------------------------------- __int16 __stdcall sub_63B050(int a1, unsigned __int8 a2) { signed int v2; // eax@1 unsigned int v3; // ecx@2 int v4; // esi@3 v2 = 0; if ( a2 < 0xFu ) { v3 = (unsigned int)*(_BYTE *)(a1 + 13) >> 1; if ( (signed int)v3 <= 0 ) { LABEL_6: LOWORD(v2) = 0; } else { v4 = a1 + 14; while ( *(_BYTE *)v4 != a2 ) { ++v2; v4 += 3; if ( v2 >= (signed int)v3 ) goto LABEL_6; } LOWORD(v2) = *(_WORD *)(v2 + a1 + 2 * v2 + 10 + 5); } } return v2; } //----- (0063B0A0) -------------------------------------------------------- char __thiscall sub_63B0A0(void *this, int a2, int a3, int a4, int a5) { if ( a2 ) { *(_BYTE *)(a2 + 18) = 0; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 132))(a2 + 8); } return 1; } //----- (0063B0D0) -------------------------------------------------------- void __stdcall sub_63B0D0(int a1, unsigned __int8 a2, __int16 a3) { unsigned int v3; // eax@3 signed int v4; // ecx@3 int v5; // esi@5 int v6; // edx@9 int v7; // ecx@10 int v8; // esi@10 int v9; // esi@14 int v10; // ecx@18 if ( a2 < 0xFu && a1 ) { v3 = (unsigned int)*(_BYTE *)(a1 + 13) >> 1; v4 = 0; if ( a3 ) { if ( (signed int)v3 <= 0 ) { LABEL_17: if ( (signed int)v3 < 8 ) { v10 = a1 + 2 * v3 + 13; *(_WORD *)(v10 + v3 + 2) = a3; *(_BYTE *)(v10 + v3 + 1) = a2; *(_BYTE *)(a1 + 13) = *(_BYTE *)(a1 + 13) & 1 ^ 2 * (v3 + 1); } } else { v9 = a1 + 14; while ( *(_BYTE *)v9 != a2 ) { ++v4; v9 += 3; if ( v4 >= (signed int)v3 ) goto LABEL_17; } *(_WORD *)(v4 + a1 + 2 * v4 + 13 + 2) = a3; } } else { if ( (signed int)v3 > 0 ) { v5 = a1 + 14; while ( *(_BYTE *)v5 != a2 ) { ++v4; v5 += 3; if ( v4 >= (signed int)v3 ) return; } v6 = v4 + 1; if ( v4 + 1 < (signed int)v3 ) { v7 = v6 + a1 + 2 * v6 + 13 + 1; v8 = v3 - v6; do { *(_WORD *)(v7 - 3) = *(_WORD *)v7; *(_BYTE *)(v7 - 1) = *(_BYTE *)(v7 + 2); *(_BYTE *)v7 = 0; *(_WORD *)(v7 + 1) = 0; v7 += 3; --v8; } while ( v8 ); } *(_BYTE *)(a1 + 13) = *(_BYTE *)(a1 + 13) & 1 | 2 * (v3 - 1); } } } } //----- (0063B1C0) -------------------------------------------------------- int __stdcall sub_63B1C0(int a1) { int result; // eax@1 result = a1; if ( a1 ) { *(_BYTE *)(a1 + 14) = 0; *(_WORD *)(a1 + 15) = 0; *(_BYTE *)(a1 + 17) = 0; *(_WORD *)(a1 + 18) = 0; *(_BYTE *)(a1 + 20) = 0; *(_WORD *)(a1 + 21) = 0; *(_BYTE *)(a1 + 23) = 0; *(_WORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 26) = 0; *(_WORD *)(a1 + 27) = 0; *(_BYTE *)(a1 + 29) = 0; *(_WORD *)(a1 + 30) = 0; *(_BYTE *)(a1 + 32) = 0; *(_WORD *)(a1 + 33) = 0; *(_BYTE *)(a1 + 35) = 0; *(_WORD *)(a1 + 36) = 0; *(_BYTE *)(a1 + 13) = 1; } return result; } //----- (0063B210) -------------------------------------------------------- int __stdcall sub_63B210(int a1, int a2) { *(_WORD *)a2 = *(_WORD *)(a1 + 2); return a2 + 2; } //----- (0063B230) -------------------------------------------------------- char *__stdcall sub_63B230(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x24u); return (char *)a2 + 36; } //----- (0063B250) -------------------------------------------------------- int __stdcall sub_63B250(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); return a2 + 8; } //----- (0063B270) -------------------------------------------------------- int __stdcall sub_63B270(int a1, int a2) { return a2 + 1; } //----- (0063B280) -------------------------------------------------------- char *__stdcall sub_63B280(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x65u); return (char *)a2 + 10 * *(_BYTE *)a2 + 1; } //----- (0063B2B0) -------------------------------------------------------- char *__stdcall sub_63B2B0(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x41u); return (char *)a2 + 8 * (*(_BYTE *)a2 & 0xF) + 1; } //----- (0063B2E0) -------------------------------------------------------- int __stdcall sub_63B2E0(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 10); *(_DWORD *)(a2 + 12) = *(_DWORD *)(a1 + 14); *(_WORD *)(a2 + 16) = *(_WORD *)(a1 + 18); *(_BYTE *)(a2 + 18) = *(_BYTE *)(a1 + 20); return a2 + 19; } //----- (0063B320) -------------------------------------------------------- int __stdcall sub_63B320(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); return a2 + 4; } //----- (0063B340) -------------------------------------------------------- int __stdcall sub_63B340(int a1, int a2) { *(_BYTE *)a2 = *(_BYTE *)(a1 + 2); return a2 + 1; } //----- (0063B360) -------------------------------------------------------- int __stdcall sub_63B360(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); *(_DWORD *)(a2 + 8) = *(_DWORD *)(a1 + 10); return a2 + 12; } //----- (0063B390) -------------------------------------------------------- int __stdcall sub_63B390(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a1 + 6); *(_BYTE *)(a2 + 8) = *(_BYTE *)(a1 + 10); return a2 + 9; } //----- (0063B3C0) -------------------------------------------------------- int __stdcall sub_63B3C0(int a1, int a2) { *(_DWORD *)a2 = *(_DWORD *)(a1 + 2); *(_BYTE *)(a2 + 4) = *(_BYTE *)(a1 + 6); return a2 + 5; } //----- (0063B3E0) -------------------------------------------------------- char *__stdcall sub_63B3E0(int a1, void *a2) { memcpy(a2, (const void *)(a1 + 2), 0x1Au); return (char *)a2 + 26; } //----- (0063B410) -------------------------------------------------------- int __stdcall sub_63B410(int a1, int a2) { return a2; } //----- (0063B420) -------------------------------------------------------- int __stdcall sub_63B420(int a1, int a2) { *(_WORD *)(a1 + 2) = *(_WORD *)a2; return a2 + 2; } //----- (0063B440) -------------------------------------------------------- char *__stdcall sub_63B440(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x24u); return (char *)a2 + 36; } //----- (0063B460) -------------------------------------------------------- int __stdcall sub_63B460(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); return a2 + 8; } //----- (0063B480) -------------------------------------------------------- char *__stdcall sub_63B480(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x65u); return (char *)a2 + 10 * *(_BYTE *)a2 + 1; } //----- (0063B4B0) -------------------------------------------------------- char *__stdcall sub_63B4B0(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x41u); return (char *)a2 + 8 * (*(_BYTE *)a2 & 0xF) + 1; } //----- (0063B4E0) -------------------------------------------------------- int __stdcall sub_63B4E0(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; return a2 + 4; } //----- (0063B500) -------------------------------------------------------- int __stdcall sub_63B500(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a1 + 10) = *(_DWORD *)(a2 + 8); *(_DWORD *)(a1 + 14) = *(_DWORD *)(a2 + 12); *(_WORD *)(a1 + 18) = *(_WORD *)(a2 + 16); *(_BYTE *)(a1 + 20) = *(_BYTE *)(a2 + 18); return a2 + 19; } //----- (0063B540) -------------------------------------------------------- int __stdcall sub_63B540(int a1, int a2) { *(_BYTE *)(a1 + 2) = *(_BYTE *)a2; return a2 + 1; } //----- (0063B560) -------------------------------------------------------- int __stdcall sub_63B560(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); *(_DWORD *)(a1 + 10) = *(_DWORD *)(a2 + 8); return a2 + 12; } //----- (0063B590) -------------------------------------------------------- int __stdcall sub_63B590(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_DWORD *)(a1 + 6) = *(_DWORD *)(a2 + 4); *(_BYTE *)(a1 + 10) = *(_BYTE *)(a2 + 8); return a2 + 9; } //----- (0063B5C0) -------------------------------------------------------- int __stdcall sub_63B5C0(int a1, int a2) { *(_DWORD *)(a1 + 2) = *(_DWORD *)a2; *(_BYTE *)(a1 + 6) = *(_BYTE *)(a2 + 4); return a2 + 5; } //----- (0063B5E0) -------------------------------------------------------- char *__stdcall sub_63B5E0(int a1, const void *a2) { memcpy((void *)(a1 + 2), a2, 0x1Au); return (char *)a2 + 26; } //----- (0063B610) -------------------------------------------------------- signed int __stdcall sub_63B610(int a1) { return 8; } //----- (0063B620) -------------------------------------------------------- signed int __stdcall sub_63B620(int a1) { return 1; } //----- (0063B630) -------------------------------------------------------- int __stdcall sub_63B630(int a1) { return 10 * *(_BYTE *)a1 + 1; } //----- (0063B650) -------------------------------------------------------- signed int __stdcall sub_63B650(int a1) { return 65; } //----- (0063B660) -------------------------------------------------------- signed int __stdcall sub_63B660(int a1) { return 4; } //----- (0063B670) -------------------------------------------------------- signed int __stdcall sub_63B670(int a1) { return 19; } //----- (0063B680) -------------------------------------------------------- signed int __stdcall sub_63B680(int a1) { return 12; } //----- (0063B690) -------------------------------------------------------- signed int __stdcall sub_63B690(int a1) { return 9; } //----- (0063B6A0) -------------------------------------------------------- signed int __stdcall sub_63B6A0(int a1) { return 26; } //----- (0063B6B0) -------------------------------------------------------- char __stdcall sub_63B6B0(int a1, int a2) { int v2; // eax@1 int v3; // edi@3 unsigned int v4; // esi@3 __int16 v5; // dx@5 LOBYTE(v2) = *(_BYTE *)(a2 + 2); if ( (_BYTE)v2 == 73 || (_BYTE)v2 == 105 ) { v2 = a1; *(_BYTE *)v2 |= 1u; } else { v3 = a1; v4 = (unsigned int)*(_BYTE *)a1 >> 1; if ( (signed int)v4 < 8 ) { v2 = sscanf((const char *)(a2 + 2), "%d/%d", &a1, &a2); if ( v2 == 2 ) { v5 = a2; v2 = v3 + 2 * v4; *(_BYTE *)(v2 + v4 + 1) = a1; *(_WORD *)(v2 + v4 + 2) = v5; LOBYTE(v2) = *(_BYTE *)v3 & 1; *(_BYTE *)v3 = v2 ^ ((*(_BYTE *)v3 & 0xFE) + 2); } } } return v2; } //----- (0063B730) -------------------------------------------------------- char __stdcall sub_63B730(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 76 || result == 108 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_DWORD *)(a2 + 10) = a3; } return result; } //----- (0063B770) -------------------------------------------------------- char __thiscall sub_63B770(void *this, int a2, int a3, int a4) { int v4; // ebx@1 int v5; // esi@1 char v6; // al@1 char v7; // al@4 char result; // al@7 v4 = a4; v5 = a3; *(_BYTE *)(a3 + 46) = 0; v6 = *(_BYTE *)(v4 + 1); if ( v6 == 79 || v6 == 111 ) { *(_WORD *)(v5 + 19) = 0; *(_BYTE *)(v5 + 18) = 0; (*(void (__stdcall **)(int))(*(_DWORD *)this + 132))(v5 + 8); *(_DWORD *)(v5 + 10) &= 0xFFu; *(_BYTE *)(v5 + 47) = 1; *(_BYTE *)(v5 + 10) = 0; } v7 = *(_BYTE *)(v4 + 1); if ( v7 == 80 || v7 == 112 ) sub_63B6B0(v5 + 47, v4); *(_DWORD *)(v5 + 14) = 0; *(_BYTE *)(v5 + 21) = 1; result = *(_BYTE *)(v4 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v4 + 2), "%d", &a3); *(_BYTE *)(v5 + 18) = a3; } return result; } //----- (0063B810) -------------------------------------------------------- char __stdcall sub_63B810(int a1, signed int a2, int a3) { signed int v3; // esi@1 char result; // al@1 int v5; // edi@1 char v6; // dl@1 v3 = a2; result = 0; v5 = a3; *(_BYTE *)(a2 + 73) = 0; v6 = *(_BYTE *)(v5 + 1); if ( v6 == 79 || v6 == 111 ) { *(_WORD *)(v3 + 11) = 0; *(_BYTE *)(v3 + 10) = 0; *(_BYTE *)(v3 + 47) = 0; *(_DWORD *)(v3 + 19) = 0; *(_DWORD *)(v3 + 25) = 0; *(_DWORD *)(v3 + 31) = 0; *(_WORD *)(v3 + 17) = -1; *(_WORD *)(v3 + 29) = -1; *(_WORD *)(v3 + 23) = -1; *(_DWORD *)(v3 + 69) &= 0xFFu; *(_WORD *)(v3 + 35) = -1; *(_BYTE *)(v3 + 37) = 0; *(_BYTE *)(v3 + 74) = 1; *(_BYTE *)(v3 + 69) = 0; *(_DWORD *)(v3 + 13) = 0; *(_WORD *)(v3 + 58) = -1; *(_BYTE *)(v3 + 60) = -1; *(_WORD *)(v3 + 61) = -1; *(_BYTE *)(v3 + 63) = -1; *(_DWORD *)(v3 + 64) = &unk_FFFFFF; *(_BYTE *)(v3 + 68) = 0; } else { if ( v6 == 80 || v6 == 112 ) sub_63B6B0(v3 + 74, v5); result = *(_BYTE *)(v5 + 1); switch ( result ) { case 85: case 117: result = sscanf((const char *)(v5 + 2), "%d", &a2); *(_BYTE *)(v3 + 10) = a2; break; case 83: case 115: sscanf((const char *)(v5 + 2), "%d", &a2); result = a2; *(_BYTE *)(v3 + 11) = a2; break; case 69: case 101: sscanf((const char *)(v5 + 2), "%d", &a2); result = a2; if ( a2 >= 2 ) result = 2; *(_BYTE *)(v3 + 67) = result; break; } } return result; } //----- (0063B940) -------------------------------------------------------- char __stdcall sub_63B940(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 char result; // al@1 v3 = a2; v4 = a3; *(_BYTE *)(a2 + 21) = 0; result = *(_BYTE *)(v4 + 1); if ( result == 79 || result == 111 ) { *(_DWORD *)(v3 + 17) &= 0xFFu; *(_WORD *)(v3 + 11) = 0; *(_BYTE *)(v3 + 10) = 0; *(_BYTE *)(v3 + 22) = 1; *(_BYTE *)(v3 + 17) = 0; *(_DWORD *)(v3 + 13) = 0; } else { if ( result == 80 || result == 112 ) sub_63B6B0(v3 + 22, v4); result = *(_BYTE *)(v4 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 10) = a2; } else { if ( result == 83 || result == 115 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 11) = a2; } } } return result; } //----- (0063B9E0) -------------------------------------------------------- char __stdcall sub_63B9E0(int a1, int a2, int a3) { int v3; // esi@1 int v4; // edi@1 char result; // al@1 v3 = a2; v4 = a3; *(_BYTE *)(a2 + 21) = 0; result = *(_BYTE *)(v4 + 1); if ( result == 79 || result == 111 ) { *(_DWORD *)(v3 + 17) &= 0xFFu; *(_BYTE *)(v3 + 12) = 0; *(_WORD *)(v3 + 10) = 0; *(_BYTE *)(v3 + 22) = 1; *(_BYTE *)(v3 + 17) = 0; *(_DWORD *)(v3 + 13) = 0; } else { if ( result == 80 || result == 112 ) sub_63B6B0(v3 + 22, v4); result = *(_BYTE *)(v4 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 10) = a2; } else { if ( result == 83 || result == 115 ) { result = sscanf((const char *)(v4 + 2), "%d", &a2); *(_BYTE *)(v3 + 11) = a2; } } } return result; } //----- (0063BA80) -------------------------------------------------------- int __stdcall sub_63BA80(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_BYTE *)(result + 10) &= 0xFEu; *(float *)(a2 + 17) = 276.0; *(float *)(a2 + 21) = 389.0; *(_BYTE *)(a2 + 13) = 0; *(_DWORD *)(result + 13) &= 0xFFu; *(float *)(a2 + 25) = 6.0; *(_BYTE *)(a2 + 33) = 0; *(_DWORD *)(result + 33) &= 0xFFu; *(float *)(a2 + 29) = 0.0; *(_WORD *)(a2 + 11) = 0; *(_BYTE *)(a2 + 37) = 0; *(_DWORD *)(a2 + 38) = 0; *(_DWORD *)(a2 + 42) = 0; return result; } //----- (0063BAD0) -------------------------------------------------------- int __stdcall sub_63BAD0(int a1, int a2, int a3) { int result; // eax@1 result = 0; *(_DWORD *)(a2 + 10) = 0; *(_DWORD *)(a2 + 14) = 0; return result; } //----- (0063BAF0) -------------------------------------------------------- char __thiscall sub_63BAF0(void *this, int a2, int a3, int a4) { int v4; // esi@1 char v5; // al@1 int v6; // eax@4 int v7; // ecx@6 v4 = a4; v5 = *(_BYTE *)(a4 + 1); if ( v5 == 79 || v5 == 111 ) (*(void (__stdcall **)(int, int, _UNKNOWN *))(*(_DWORD *)this + 20))(a2, a3, &unk_7062F0); LOBYTE(v6) = *(_BYTE *)(v4 + 1); if ( (_BYTE)v6 == 78 || (_BYTE)v6 == 110 ) { LOBYTE(v6) = sscanf((const char *)(v4 + 2), "%d", &a4); v7 = a4; *(_BYTE *)(a3 + 10) = a4; if ( v7 > 0 ) { v6 = a3 + 17; do { *(_DWORD *)(v6 - 4) = 10000; *(_DWORD *)v6 = 10000; *(_WORD *)(v6 - 6) = -1; v6 += 10; --v7; } while ( v7 ); } } return v6; } //----- (0063BB70) -------------------------------------------------------- char __stdcall sub_63BB70(int a1, int a2, int a3) { int v3; // eax@1 LOBYTE(v3) = *(_BYTE *)(a3 + 1); if ( (_BYTE)v3 == 79 || (_BYTE)v3 == 111 ) { v3 = a2; *(_BYTE *)(v3 + 10) &= 0xF0u; } return v3; } //----- (0063BB90) -------------------------------------------------------- char __stdcall sub_63BB90(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 79 || result == 111 ) { result = 0; *(_WORD *)(a2 + 10) = 0; } else { if ( result == 83 || result == 115 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_WORD *)(a2 + 10) = a3; } } return result; } //----- (0063BBE0) -------------------------------------------------------- int __stdcall sub_63BBE0(unsigned __int16 a1, int a2, int a3) { int result; // eax@1 *(_WORD *)(a2 + 10) = sub_44F600(a1); *(_DWORD *)(a2 + 12) = 0; *(_WORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 18) = 0; result = sub_44F140(a1); *(_DWORD *)(a2 + 22) = result; *(_BYTE *)(a2 + 26) = 0; *(_WORD *)(a2 + 27) = 0; return result; } //----- (0063BC30) -------------------------------------------------------- signed int __stdcall sub_63BC30(int a1, int a2, int a3) { unsigned int v3; // eax@1 int v4; // esi@2 int v5; // ecx@4 signed int result; // eax@6 v3 = *(_WORD *)(a2 + 8); if ( v3 >= dword_14D20894 || (v4 = dword_14D21184 + 40 * v3) == 0 || !*(_DWORD *)v4 ) goto LABEL_6; v5 = **(_WORD **)v4; if ( (_WORD)v5 != *(_WORD *)(a2 + 8) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * v3); LABEL_6: result = 1000; *(_DWORD *)(a2 + 10) = 1000; return result; } result = *(_DWORD *)(*(_DWORD *)v4 + 106); *(_DWORD *)(a2 + 10) = result; return result; } // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (0063BCB0) -------------------------------------------------------- __int16 __stdcall sub_63BCB0(__int16 a1, int a2, int a3) { __int16 result; // ax@1 *(_DWORD *)(a2 + 10) = 0; result = sub_516530(a1); *(_DWORD *)(a2 + 10) = (unsigned __int16)result; return result; } //----- (0063BCE0) -------------------------------------------------------- int __stdcall sub_63BCE0(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 10) = 0; return result; } //----- (0063BD00) -------------------------------------------------------- char __stdcall sub_63BD00(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 76 || result == 108 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_BYTE *)(a2 + 10) = a3; } return result; } //----- (0063BD40) -------------------------------------------------------- int __stdcall sub_63BD40(int a1, int a2, int a3) { int result; // eax@1 result = 0; *(_DWORD *)(a2 + 10) = 0; *(_DWORD *)(a2 + 14) = 0; *(_DWORD *)(a2 + 18) = 0; return result; } //----- (0063BD60) -------------------------------------------------------- int __stdcall sub_63BD60(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 10) = &unk_19BFCBF; *(_WORD *)(a2 + 14) = 1; *(_WORD *)(a2 + 17) = 1; return result; } //----- (0063BD80) -------------------------------------------------------- int __stdcall sub_63BD80(int a1, int a2, int a3) { int v3; // eax@1 int v4; // esi@1 int result; // eax@1 v3 = dword_14E1AE94 & (dword_14E1AE90 + 1); dword_14E1AE90 = v3; v4 = (unsigned __int16)word_14E12E90[v3]; dword_1505B0D0 = dword_1505B0D4 & (dword_1505B0D0 + 1); *(_DWORD *)(a2 + 10) = 10000 * (100 * v4 + (unsigned __int16)word_150530D0[dword_1505B0D0] + 101) + (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); result = dword_14D9AE14 & (dword_14D9AE10 + 1); dword_14D9AE10 = result; *(_BYTE *)(a2 + 14) = word_14D92E10[2 * result]; return result; } // 14D9AE10: using guessed type int dword_14D9AE10; // 14D9AE14: using guessed type int dword_14D9AE14; // 14E12E90: using guessed type __int16 word_14E12E90[]; // 14E1AE90: using guessed type int dword_14E1AE90; // 14E1AE94: using guessed type int dword_14E1AE94; // 150530D0: using guessed type __int16 word_150530D0[]; // 1505B0D0: using guessed type int dword_1505B0D0; // 1505B0D4: using guessed type int dword_1505B0D4; //----- (0063BE00) -------------------------------------------------------- char __stdcall sub_63BE00(int a1, int a2, int a3) { char result; // al@1 result = *(_BYTE *)(a3 + 1); if ( result == 76 || result == 108 ) { result = sscanf((const char *)(a3 + 2), "%d", &a3); *(_WORD *)(a2 + 10) = a3; } return result; } //----- (0063BE40) -------------------------------------------------------- int __stdcall sub_63BE40(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a2 + 14) = -1; *(_DWORD *)(a2 + 10) = -1; *(_DWORD *)(a2 + 18) = 0; *(_DWORD *)(a2 + 22) = 0; *(_DWORD *)(a2 + 26) = 0; *(_DWORD *)(a2 + 30) = 0; *(_WORD *)(a2 + 34) = 0; return result; } //----- (0063BE70) -------------------------------------------------------- char __thiscall sub_63BE70(void *this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // edi@1 char v6; // al@1 char v7; // al@4 char result; // al@7 v4 = a3; v5 = a4; *(_BYTE *)(a3 + 21) = 0; v6 = *(_BYTE *)(v5 + 1); if ( v6 == 79 || v6 == 111 ) { *(_WORD *)(v4 + 19) = 0; *(_BYTE *)(v4 + 18) = 0; (*(void (__stdcall **)(int))(*(_DWORD *)this + 132))(v4 + 8); *(_DWORD *)(v4 + 10) &= 0xFFu; *(_BYTE *)(v4 + 22) = 1; *(_BYTE *)(v4 + 10) = 0; } v7 = *(_BYTE *)(v5 + 1); if ( v7 == 80 || v7 == 112 ) sub_63B6B0(v4 + 22, v5); *(_DWORD *)(v4 + 14) = 0; result = *(_BYTE *)(v5 + 1); if ( result == 85 || result == 117 ) { result = sscanf((const char *)(v5 + 2), "%d", &a3); *(_BYTE *)(v4 + 18) = a3; } return result; } //----- (0063BF10) -------------------------------------------------------- int __stdcall sub_63BF10(int a1) { return *(_DWORD *)(a1 + 10); } //----- (0063BF20) -------------------------------------------------------- int __stdcall sub_63BF20(int a1, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(a1 + 10) = a2; return result; } //----- (0063BF30) -------------------------------------------------------- __int16 __stdcall sub_63BF30(int a1) { return *(_WORD *)(a1 + 8) >> 15; } //----- (0063BF50) -------------------------------------------------------- int __stdcall sub_63BF50(int a1, unsigned __int8 a2) { int result; // eax@1 result = a1; *(_WORD *)(a1 + 8) = *(_WORD *)(a1 + 8) & 0x7FFF | (a2 << 15); return result; } //----- (0063BF80) -------------------------------------------------------- int __stdcall sub_63BF80(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_BYTE *)(a3 + 10) = *(_BYTE *)(a2 + 36); return result; } //----- (0063BFA0) -------------------------------------------------------- int __stdcall sub_63BFA0(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_DWORD *)(a3 + 10) = *(_DWORD *)(a2 + 36); return result; } //----- (0063BFC0) -------------------------------------------------------- char __thiscall sub_63BFC0(void *this, int a2, int a3, int a4) { (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 20))(a2, a4, "-o"); return sub_649190((int)((char *)&unk_1508BAD4 + 36 * *(_WORD *)(a3 + 60)), a4 + 47); } //----- (0063C000) -------------------------------------------------------- int __thiscall sub_63C000(void *this, int a2, int a3, int a4) { int v4; // edx@1 unsigned int v5; // eax@1 int v6; // esi@1 int v7; // ecx@2 int result; // eax@4 int v9; // esi@4 (*(void (__stdcall **)(int, int, _DWORD))(*(_DWORD *)this + 20))(a2, a4, "-o"); *(_BYTE *)(a4 + 12) = 0; v4 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v5 = 0; v6 = a3 + 40; do { v7 = *(_WORD *)v6; if ( v4 < v7 ) break; ++v5; v4 -= v7; v6 += 2; } while ( v5 < 0xA ); *(_BYTE *)(a4 + 10) = v5 < 0xA ? v5 : 0; sub_649190((int)((char *)&unk_1508BAD4 + 36 * *(_WORD *)(a3 + 60)), a4 + 74); result = sub_648E90(); v9 = result; if ( result ) { if ( (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD))result)(result, *(_WORD *)(a4 + 8)) >= 2u ) { result = 2; *(_BYTE *)(a4 + 67) = 2; } else { result = (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v9, *(_WORD *)(a4 + 8)); *(_BYTE *)(a4 + 67) = result; } } return result; } //----- (0063C0B0) -------------------------------------------------------- char __thiscall sub_63C0B0(void *this, int a2, int a3, int a4) { int v4; // edx@1 unsigned int v5; // eax@1 int v6; // esi@1 int v7; // ecx@2 (*(void (__stdcall **)(int, int, _DWORD))(*(_DWORD *)this + 20))(a2, a4, "-o"); *(_BYTE *)(a4 + 12) = 0; v4 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v5 = 0; v6 = a3 + 40; do { v7 = *(_WORD *)v6; if ( v4 < v7 ) break; ++v5; v4 -= v7; v6 += 2; } while ( v5 < 0xA ); *(_BYTE *)(a4 + 10) = v5 < 0xA ? v5 : 0; return sub_649190((int)((char *)&unk_1508BAD4 + 36 * *(_WORD *)(a3 + 60)), a4 + 22); } //----- (0063C130) -------------------------------------------------------- int __stdcall sub_63C130(int a1, int a2, int a3) { int result; // eax@1 result = 0; *(_DWORD *)(a3 + 10) = 0; *(_DWORD *)(a3 + 14) = 0; return result; } //----- (0063C150) -------------------------------------------------------- int __stdcall sub_63C150(int a1, int a2, int a3) { int result; // eax@1 result = a2; *(_WORD *)(a3 + 10) = *(_WORD *)(a2 + 36); return result; } //----- (0063C170) -------------------------------------------------------- char __thiscall sub_63C170(void *this, int a2, int a3, int a4) { (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 20))(a2, a4, "-o"); return sub_649190((int)((char *)&unk_1508BAD4 + 36 * *(_WORD *)(a3 + 60)), a4 + 22); } //----- (0063C1B0) -------------------------------------------------------- signed int __stdcall sub_63C1B0(__int16 a1, int a2, int a3, char a4, int a5, int a6) { *(_WORD *)a2 = 7172; *(_WORD *)(a2 + 2) = a1; *(_BYTE *)(a2 + 4) = a4; return 5; } //----- (0063C1E0) -------------------------------------------------------- signed int __stdcall sub_63C1E0(__int16 a1, int a2, int a3, int a4, int a5, int a6) { signed int v6; // eax@1 int v7; // edx@1 int v8; // eax@7 unsigned __int16 v9; // cx@7 *(_WORD *)a2 = 7173; *(_WORD *)(a2 + 2) = a1; *(_WORD *)(a2 + 4) = *(_WORD *)a3; *(_BYTE *)(a2 + 6) = *(_BYTE *)(a3 + 2); v6 = 0; v7 = a3 + 9; while ( *(_WORD *)(a3 + 27) != *(_WORD *)v7 ) { ++v6; v7 += 6; if ( v6 >= 3 ) { *(_WORD *)(a2 + 8) = -1; *(_BYTE *)(a2 + 10) = 0; goto LABEL_8; } } if ( v6 < 3 ) { v8 = a3 + 6 * v6; v9 = *(_WORD *)(v8 + 9); *(_WORD *)(a2 + 8) = v9; *(_BYTE *)(a2 + 10) = sub_632790(dword_1508B160, v9, (unsigned int)&unk_FFFFFFF & *(_DWORD *)(v8 + 11)); } else { *(_WORD *)(a2 + 8) = -1; *(_BYTE *)(a2 + 10) = 0; } LABEL_8: if ( a5 ) *(_WORD *)a5 = *(_WORD *)(a2 + 8); if ( a6 ) *(_BYTE *)a6 = *(_BYTE *)(a2 + 10); return 11; } // 1508B160: using guessed type int dword_1508B160; //----- (0063C290) -------------------------------------------------------- signed int __stdcall sub_63C290(__int16 a1, int a2, int a3, char a4, int a5, int a6) { *(_WORD *)a2 = 7171; *(_WORD *)(a2 + 2) = a1; *(_WORD *)(a2 + 4) = *(_WORD *)a3; *(_BYTE *)(a2 + 6) = *(_BYTE *)(a3 + 2); *(_BYTE *)(a2 + 7) = a4; return 8; } //----- (0063C2D0) -------------------------------------------------------- signed int __stdcall sub_63C2D0(__int16 a1, int a2, int a3, char a4, int a5, int a6) { *(_WORD *)a2 = 7170; *(_WORD *)(a2 + 2) = a1; *(_WORD *)(a2 + 4) = *(_WORD *)a3; *(_BYTE *)(a2 + 6) = a4; return 7; } //----- (0063C300) -------------------------------------------------------- int __stdcall sub_63C300(int a1, int a2, int a3, int a4, int a5, int a6) { return 0; } //----- (0063C310) -------------------------------------------------------- char __stdcall sub_63C310(int a1, int a2, int a3, int a4) { return 1; } //----- (0063C320) -------------------------------------------------------- char __stdcall sub_63C320(int a1, int a2, int a3, int a4) { *(_DWORD *)(a1 + 10) = *(_WORD *)(a2 + 60) + ((signed int)((unsigned __int64)(a3 * (*(_WORD *)(a2 + 62) - *(_WORD *)(a2 + 60) + 1) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(a3 * (*(_WORD *)(a2 + 62) - *(_WORD *)(a2 + 60) + 1) * (signed __int64)(signed int)&unk_10624DD3) >> 32) >> 31); return 1; } //----- (0063C360) -------------------------------------------------------- char __stdcall sub_63C360(int a1, int a2, signed int a3, int a4) { unsigned int v4; // eax@1 int v5; // ecx@1 int v6; // eax@6 v4 = 0; v5 = a2 + 64; while ( *(_WORD *)v5 <= a3 ) { ++v4; v5 += 2; if ( v4 >= 0x10 ) goto LABEL_6; } *(_BYTE *)(a1 + 10) = v4; LABEL_6: *(_BYTE *)(a1 + 10) = 0; *(_WORD *)(a1 + 17) = -1; *(_DWORD *)(a1 + 19) = 0; *(_DWORD *)(a1 + 25) = 0; *(_DWORD *)(a1 + 31) = 0; *(_WORD *)(a1 + 23) = -1; *(_WORD *)(a1 + 29) = -1; *(_BYTE *)(a1 + 74) = 1; *(_WORD *)(a1 + 58) = -1; *(_BYTE *)(a1 + 60) = 0; *(_WORD *)(a1 + 61) = -1; *(_BYTE *)(a1 + 63) = 0; *(_DWORD *)(a1 + 64) = 65535; v6 = sub_648E90(); if ( v6 ) *(_BYTE *)(a1 + 67) = (**(int (__thiscall ***)(_DWORD, _DWORD))v6)(v6, *(_WORD *)(a1 + 8)); *(_BYTE *)(a1 + 68) = 0; return 1; } //----- (0063C3F0) -------------------------------------------------------- char __stdcall sub_63C3F0(int a1, int a2, signed int a3, int a4) { unsigned int v4; // eax@1 int v5; // ecx@1 v4 = 0; v5 = a2 + 64; while ( *(_WORD *)v5 <= a3 ) { ++v4; v5 += 2; if ( v4 >= 0x10 ) { *(_BYTE *)(a1 + 10) = 0; *(_BYTE *)(a1 + 22) = 1; return 1; } } *(_BYTE *)(a1 + 10) = v4; *(_BYTE *)(a1 + 10) = 0; *(_BYTE *)(a1 + 22) = 1; return 1; } //----- (0063C440) -------------------------------------------------------- char __stdcall sub_63C440(int a1, int a2, int a3, int a4) { signed __int64 v4; // qax@1 v4 = a3 * (*(_WORD *)(a2 + 62) - *(_WORD *)(a2 + 60) + 1) * (signed __int64)(signed int)&unk_10624DD3; *(_BYTE *)(a1 + 10) = *(_BYTE *)(a2 + 60) + (SHIDWORD(v4) >> 6) + (unsigned __int8)(HIDWORD(v4) >> 31); return 1; } //----- (0063C480) -------------------------------------------------------- char __stdcall sub_63C480(int a1, int a2, int a3, unsigned __int16 a4) { return sub_625340(a4, a1 + 10); } //----- (0063C4A0) -------------------------------------------------------- char __stdcall sub_63C4A0(int a1, int a2, int a3, int a4) { int v4; // esi@1 signed __int64 v5; // qax@1 v4 = *(_WORD *)(a2 + 60); v5 = a3 * (*(_WORD *)(a2 + 62) - v4 + 1) * (signed __int64)(signed int)&unk_10624DD3; *(_WORD *)(a1 + 10) = v4 + (SHIDWORD(v5) >> 6) + (unsigned __int16)(HIDWORD(v5) >> 31); return 1; } //----- (0063C4E0) -------------------------------------------------------- signed int __stdcall sub_63C4E0(int a1, int a2, int a3) { return 3; } //----- (0063C4F0) -------------------------------------------------------- signed int __stdcall sub_63C4F0(int a1, __int16 a2, int a3) { signed int v3; // eax@1 int v4; // ecx@1 signed int v5; // eax@4 int v6; // ecx@4 signed int v8; // ecx@9 v3 = 0; v4 = a1 + 17; do { if ( *(_WORD *)v4 == a2 ) return 1; ++v3; v4 += 6; } while ( v3 < 3 ); v5 = 0; v6 = a1 + 17; while ( *(_WORD *)v6 != -1 ) { ++v5; v6 += 6; if ( v5 >= 3 ) return 2; } v8 = 0; if ( *(_WORD *)(a1 + 17) != -1 ) v8 = 1; if ( *(_WORD *)(a1 + 23) != -1 ) ++v8; if ( *(_WORD *)(a1 + 29) != -1 ) ++v8; if ( !v8 ) { *(_DWORD *)(a1 + 37) = *(_DWORD *)a3; *(_DWORD *)(a1 + 41) = *(_DWORD *)(a3 + 4); *(_DWORD *)(a1 + 45) = *(_DWORD *)(a3 + 8); *(_DWORD *)(a1 + 49) = *(_DWORD *)(a3 + 12); *(_DWORD *)(a1 + 53) = *(_DWORD *)(a3 + 16); *(_BYTE *)(a1 + 57) = 0; } *(_WORD *)(a1 + 6 * v5 + 17) = a2; return 0; } //----- (0063C5A0) -------------------------------------------------------- int __stdcall sub_63C5A0(int a1, int a2, int a3) { return 0; } //----- (0063C5B0) -------------------------------------------------------- unsigned int __stdcall sub_63C5B0(int a1, __int16 a2, int a3) { signed int v3; // eax@1 int v4; // ecx@1 unsigned int result; // eax@4 int v6; // eax@5 int v7; // ecx@5 int v8; // edx@5 v3 = 0; v4 = a1 + 17; while ( *(_WORD *)v4 != a2 ) { ++v3; v4 += 6; if ( v3 >= 3 ) return -1; } v6 = 3 * v3; v7 = *(_DWORD *)(a1 + 2 * v6 + 19); v8 = a1 + 2 * v6 + 19; result = a3 + ((unsigned int)&unk_FFFFFFF & v7); *(_DWORD *)v8 = v7 ^ (unsigned int)&unk_FFFFFFF & (result ^ v7); return result; } //----- (0063C600) -------------------------------------------------------- _UNKNOWN *__stdcall sub_63C600(int a1) { return &unk_1508B2A0; } //----- (0063C610) -------------------------------------------------------- int __stdcall sub_63C610(int a1) { return a1 + 37; } //----- (0063C620) -------------------------------------------------------- char __stdcall sub_63C620(int a1, int a2, int a3) { int v3; // eax@1 char v4; // cl@2 v3 = a3; do { v4 = *(_BYTE *)v3; *(_BYTE *)(a1 + 37 - a3 + v3) = *(_BYTE *)v3; ++v3; } while ( v4 ); return 1; } //----- (0063C640) -------------------------------------------------------- int __stdcall sub_63C640(int a1, int a2, int a3) { int result; // eax@1 result = a2 + *(_WORD *)(a1 + 10); if ( result > a3 ) result = a3; if ( result < 0 ) result = 0; *(_WORD *)(a1 + 10) = result; return result; } //----- (0063C670) -------------------------------------------------------- int __stdcall sub_63C670(int a1) { return *(_WORD *)(a1 + 10); } //----- (0063C680) -------------------------------------------------------- signed int __stdcall sub_63C680(int a1, int a2, int a3) { return 65535; } //----- (0063C690) -------------------------------------------------------- signed int __stdcall sub_63C690(int a1, int a2, int a3) { unsigned int v3; // eax@1 int v4; // ecx@2 int v5; // esi@4 signed int result; // eax@6 v3 = *(_WORD *)(a3 + 8); if ( v3 >= *(_DWORD *)(a2 + 4) || (v4 = *(_DWORD *)(a2 + 2292) + 40 * v3) == 0 || !*(_DWORD *)v4 ) return 65535; v5 = **(_WORD **)v4; if ( (_WORD)v5 != *(_WORD *)(a3 + 8) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * v3); return 65535; } result = sub_639620((void *)(a1 + 1640), (unsigned __int8 *)(*(_DWORD *)v4 + 6)); if ( result == -1 ) return 65535; return (unsigned __int16)result; } //----- (0063C710) -------------------------------------------------------- __int16 __stdcall sub_63C710(int a1, __int16 a2) { __int16 result; // ax@1 result = a2; *(_WORD *)(a1 + 11) = a2; return result; } //----- (0063C730) -------------------------------------------------------- signed int __thiscall sub_63C730(void *this, int a2, int a3) { signed int result; // eax@2 int v4; // eax@3 if ( a2 && (v4 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 140))(a2 + 8)) != 0 ) { *(_DWORD *)v4 = *(_DWORD *)a3; result = 1; } else { result = 0; } return result; } //----- (0063C770) -------------------------------------------------------- signed int __userpurge sub_63C770(int a1, int a2, signed int a3, unsigned __int16 a4, unsigned __int16 a5, const void *a6) { signed int result; // eax@1 int v7; // ebx@2 unsigned int v8; // eax@8 char *v9; // ecx@8 int v10; // esi@9 int v11; // eax@9 bool v12; // sf@9 unsigned __int8 v13; // of@9 int *v14; // esi@9 int v15; // eax@11 int v16; // edx@13 int v17; // [sp+4h] [bp-9Ch]@8 char v18; // [sp+Ch] [bp-94h]@9 char v19; // [sp+30h] [bp-70h]@11 int v20; // [sp+38h] [bp-68h]@11 char v21; // [sp+54h] [bp-4Ch]@8 int v22; // [sp+5Ch] [bp-44h]@8 int v23; // [sp+78h] [bp-28h]@9 unsigned int v24; // [sp+7Ch] [bp-24h]@9 unsigned int v25; // [sp+80h] [bp-20h]@9 unsigned int v26; // [sp+84h] [bp-1Ch]@9 unsigned int v27; // [sp+88h] [bp-18h]@9 int v28; // [sp+8Ch] [bp-14h]@9 unsigned int v29; // [sp+9Ch] [bp-4h]@1 int v30; // [sp+A0h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; result = a3; if ( a3 ) { v7 = (*(int (__stdcall **)(int, int))(*(_DWORD *)a1 + 140))(a3 + 8, a2); if ( v7 ) { if ( !a5 ) { *(_DWORD *)v7 = 1992027391; return 1; } if ( *(_BYTE *)v7 == -1 ) return 1; if ( a6 ) { memcpy(&v21, a6, 0x24u); v22 += a5; v17 = _LN52(&v21); v8 = *(_DWORD *)v7; v9 = &v21; if ( (unsigned __int8)*(_DWORD *)v7 ) { v28 = (unsigned __int8)*(_DWORD *)v7 + 100; v27 = ((v8 >> 8) & 0x1F) - 1; v26 = (v8 >> 13) & 0x3F; v25 = (v8 >> 19) & 0x3F; v24 = v8 >> 25; v23 = 0; memcpy(&v18, a6, 0x24u); v10 = _LN52(&v23); v11 = _LN52(&v18); v13 = __OFSUB__(v10, v11); v12 = v10 - v11 < 0; v14 = (int *)a6; if ( !(v12 ^ v13) ) v14 = &v23; memcpy(&v19, v14, 0x24u); v20 += a4; v15 = _LN52(&v19); v9 = &v21; if ( v17 >= v15 ) v9 = &v19; } v16 = *((_DWORD *)v9 + 2); *(_BYTE *)v7 = v9[20] - 100; *(_DWORD *)v7 = *(_BYTE *)v7 | (((unsigned __int16)*((_DWORD *)v9 + 4) + 1) << 8) & 0x1F00 | ((*((_DWORD *)v9 + 3) & 0x3F | (((*((_DWORD *)v9 + 1) << 6) | v16 & 0x3F) << 6)) << 13); return 1; } } result = 0; } return result; } // 65385C: using guessed type _DWORD __cdecl $LN52(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0063C910) -------------------------------------------------------- char __stdcall sub_63C910(int a1, char a2) { char result; // al@1 result = a2; *(_BYTE *)(a1 + 37) = a2; return result; } //----- (0063C920) -------------------------------------------------------- int __stdcall sub_63C920(int a1) { return *(_DWORD *)(a1 + 13); } //----- (0063C930) -------------------------------------------------------- int __stdcall sub_63C930(int a1) { return *(_DWORD *)(a1 + 18); } //----- (0063C940) -------------------------------------------------------- int __stdcall sub_63C940(int a1) { return *(_DWORD *)(a1 + 14); } //----- (0063C950) -------------------------------------------------------- signed int __stdcall sub_63C950(int a1, int a2) { *(_DWORD *)(a1 + 13) = a2; return 1; } //----- (0063C970) -------------------------------------------------------- signed int __stdcall sub_63C970(int a1, int a2) { *(_DWORD *)(a1 + 18) = a2; return 1; } //----- (0063C990) -------------------------------------------------------- signed int __stdcall sub_63C990(int a1, int a2) { *(_DWORD *)(a1 + 14) = a2; return 1; } //----- (0063C9B0) -------------------------------------------------------- int __thiscall sub_63C9B0(void *this, int a2, int a3) { int result; // eax@2 int v4; // eax@3 unsigned int v5; // edx@4 signed int v6; // ecx@4 int v7; // esi@5 if ( a2 && (v4 = (*(int (__stdcall **)(int))(*(_DWORD *)this + 112))(a2)) != 0 ) { v5 = (unsigned int)*(_BYTE *)v4 >> 1; v6 = 0; if ( (signed int)v5 <= 0 ) { LABEL_8: result = 0; } else { v7 = v4 + 1; while ( *(_BYTE *)v7 != a3 ) { ++v6; v7 += 3; if ( v6 >= (signed int)v5 ) goto LABEL_8; } result = *(_WORD *)(v6 + v4 + 2 * v6 + 2); } } else { result = 0; } return result; } //----- (0063CA10) -------------------------------------------------------- int __stdcall sub_63CA10(int a1, int a2) { int result; // eax@1 result = a1; if ( a1 ) *(_DWORD *)(a1 + 22) = a2; return result; } //----- (0063CA30) -------------------------------------------------------- int __stdcall sub_63CA30(int a1) { int result; // eax@1 result = a1; if ( a1 ) result = *(_DWORD *)(a1 + 22); return result; } //----- (0063CA50) -------------------------------------------------------- signed int __cdecl sub_63CA50() { return 33; } //----- (0063CA60) -------------------------------------------------------- int __stdcall sub_63CA60(int a1, char a2) { int result; // eax@1 result = a1; if ( a1 ) *(_BYTE *)(a1 + 26) = a2; return result; } //----- (0063CA80) -------------------------------------------------------- char __stdcall sub_63CA80(int a1) { char result; // al@2 if ( a1 ) result = *(_BYTE *)(a1 + 26); else result = 0; return result; } //----- (0063CAA0) -------------------------------------------------------- int __stdcall sub_63CAA0(int a1, __int16 a2) { int result; // eax@1 result = a1; if ( a1 ) *(_WORD *)(a1 + 27) = a2; return result; } //----- (0063CAC0) -------------------------------------------------------- __int16 __stdcall sub_63CAC0(int a1) { __int16 result; // ax@1 result = a1; if ( a1 ) result = *(_WORD *)(a1 + 27); return result; } //----- (0063CAE0) -------------------------------------------------------- int __stdcall sub_63CAE0(int a1, int a2, const void *a3, int a4) { sub_63AEF0(a1 + 2, a2, a3, a4); return a1 + 2; } //----- (0063CB10) -------------------------------------------------------- int __stdcall sub_63CB10(int a1, int a2, const void *a3, int a4) { sub_63AEF0(a1 + 4, a2, a3, a4); return a1 + 4; } //----- (0063CB40) -------------------------------------------------------- int __thiscall sub_63CB40(int this) { int result; // eax@1 result = this; *(_DWORD *)this = &off_704414; *(_DWORD *)(this + 4) = &off_7044E4; *(_DWORD *)(this + 8) = &off_7045B4; *(_DWORD *)(this + 12) = &off_704684; *(_DWORD *)(this + 16) = &off_704754; *(_DWORD *)(this + 20) = &off_704824; *(_DWORD *)(this + 24) = &off_7048F4; *(_DWORD *)(this + 28) = &off_7049C4; *(_DWORD *)(this + 32) = &off_704A94; *(_DWORD *)(this + 36) = &off_704B64; *(_DWORD *)(this + 40) = &off_704C34; *(_DWORD *)(this + 44) = &off_704D04; *(_DWORD *)(this + 48) = &off_704DD4; *(_DWORD *)(this + 52) = &off_704EA4; *(_DWORD *)(this + 56) = &off_704F74; *(_DWORD *)(this + 60) = &off_705044; *(_DWORD *)(this + 64) = &off_705114; *(_DWORD *)(this + 68) = &off_7051E4; *(_DWORD *)(this + 72) = &off_7052B4; *(_DWORD *)(this + 76) = &off_705384; *(_DWORD *)(this + 80) = &off_705454; *(_DWORD *)(this + 84) = &off_705524; *(_DWORD *)(this + 88) = &off_7055F4; *(_DWORD *)(this + 92) = &off_7056C4; *(_DWORD *)(this + 96) = &off_705794; *(_DWORD *)(this + 100) = &off_705864; *(_DWORD *)(this + 104) = &off_705934; *(_DWORD *)(this + 108) = &off_705A04; *(_DWORD *)(this + 112) = &off_705AD4; *(_DWORD *)(this + 116) = &off_705BA4; *(_DWORD *)(this + 120) = &off_705C74; *(_DWORD *)(this + 124) = &off_705D44; *(_DWORD *)(this + 128) = &off_705E14; *(_DWORD *)(this + 132) = &off_705EE4; *(_DWORD *)(this + 136) = &off_705FB4; *(_DWORD *)(this + 140) = &off_7062FC; *(_DWORD *)(this + 144) = &off_706084; *(_DWORD *)(this + 148) = &off_706154; *(_DWORD *)(this + 152) = &off_706224; memset32((void *)(this + 156), this, 0x27u); *(_DWORD *)(result + 168) = result + 16; *(_DWORD *)(result + 172) = result + 20; *(_DWORD *)(result + 176) = result + 24; *(_DWORD *)(result + 180) = result + 28; *(_DWORD *)(result + 184) = result + 32; *(_DWORD *)(result + 188) = result + 36; *(_DWORD *)(result + 192) = result + 40; *(_DWORD *)(result + 196) = result + 44; *(_DWORD *)(result + 200) = result + 48; *(_DWORD *)(result + 204) = result + 52; *(_DWORD *)(result + 208) = result + 56; *(_DWORD *)(result + 212) = result + 60; *(_DWORD *)(result + 216) = result + 64; *(_DWORD *)(result + 220) = result + 68; *(_DWORD *)(this + 156) = this + 4; *(_DWORD *)(this + 160) = this + 8; *(_DWORD *)(this + 164) = this + 12; *(_DWORD *)(result + 224) = result + 72; *(_DWORD *)(result + 228) = result + 76; *(_DWORD *)(result + 232) = result + 80; *(_DWORD *)(result + 236) = result + 84; *(_DWORD *)(result + 256) = result + 88; *(_DWORD *)(result + 240) = result + 92; *(_DWORD *)(result + 244) = result + 96; *(_DWORD *)(result + 248) = result + 100; *(_DWORD *)(result + 252) = result + 104; *(_DWORD *)(result + 260) = result + 108; *(_DWORD *)(result + 304) = result + 112; *(_DWORD *)(result + 264) = result + 116; *(_DWORD *)(result + 292) = result + 120; *(_DWORD *)(result + 268) = result + 124; *(_DWORD *)(result + 272) = result + 128; *(_DWORD *)(result + 276) = result + 132; *(_DWORD *)(result + 280) = result + 136; *(_DWORD *)(result + 288) = result + 140; *(_DWORD *)(result + 296) = result + 144; *(_DWORD *)(result + 300) = result + 148; *(_DWORD *)(result + 308) = result + 152; return result; } // 704414: using guessed type int (__thiscall *off_704414)(void *, char); // 7044E4: using guessed type int (__thiscall *off_7044E4)(void *, char); // 7045B4: using guessed type int (__thiscall *off_7045B4)(void *, char); // 704684: using guessed type int (__thiscall *off_704684)(void *, char); // 704754: using guessed type int (__thiscall *off_704754)(void *, char); // 704824: using guessed type int (__thiscall *off_704824)(void *, char); // 7048F4: using guessed type int (__thiscall *off_7048F4)(void *, char); // 7049C4: using guessed type int (__thiscall *off_7049C4)(void *, char); // 704A94: using guessed type int (__thiscall *off_704A94)(void *, char); // 704B64: using guessed type int (__thiscall *off_704B64)(void *, char); // 704C34: using guessed type int (__thiscall *off_704C34)(void *, char); // 704D04: using guessed type int (__thiscall *off_704D04)(void *, char); // 704DD4: using guessed type int (__thiscall *off_704DD4)(void *, char); // 704EA4: using guessed type int (__thiscall *off_704EA4)(void *, char); // 704F74: using guessed type int (__thiscall *off_704F74)(void *, char); // 705044: using guessed type int (__thiscall *off_705044)(void *, char); // 705114: using guessed type int (__thiscall *off_705114)(void *, char); // 7051E4: using guessed type int (__thiscall *off_7051E4)(void *, char); // 7052B4: using guessed type int (__thiscall *off_7052B4)(void *, char); // 705384: using guessed type int (__thiscall *off_705384)(void *, char); // 705454: using guessed type int (__thiscall *off_705454)(void *, char); // 705524: using guessed type int (__thiscall *off_705524)(void *, char); // 7055F4: using guessed type int (__thiscall *off_7055F4)(void *, char); // 7056C4: using guessed type int (__thiscall *off_7056C4)(void *, char); // 705794: using guessed type int (__thiscall *off_705794)(void *, char); // 705864: using guessed type int (__thiscall *off_705864)(void *, char); // 705934: using guessed type int (__thiscall *off_705934)(void *, char); // 705A04: using guessed type int (__thiscall *off_705A04)(void *, char); // 705AD4: using guessed type int (__thiscall *off_705AD4)(void *, char); // 705BA4: using guessed type int (__thiscall *off_705BA4)(void *, char); // 705C74: using guessed type int (__thiscall *off_705C74)(void *, char); // 705D44: using guessed type int (__thiscall *off_705D44)(void *, char); // 705E14: using guessed type int (__thiscall *off_705E14)(void *, char); // 705EE4: using guessed type int (__thiscall *off_705EE4)(void *, char); // 705FB4: using guessed type int (__thiscall *off_705FB4)(void *, char); // 706084: using guessed type int (__thiscall *off_706084)(void *, char); // 706154: using guessed type int (__thiscall *off_706154)(void *, char); // 706224: using guessed type int (__thiscall *off_706224)(void *, char); // 7062FC: using guessed type int (__thiscall *off_7062FC)(void *, char); //----- (0063CE80) -------------------------------------------------------- int __stdcall sub_63CE80(int a1, int a2, const void *a3, int a4) { sub_63AEF0(a1 + 10, a2, a3, a4); return a1 + 10; } //----- (0063CEB0) -------------------------------------------------------- void *__thiscall sub_63CEB0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_704414; if ( a2 & 1 ) operator delete(this); return v2; } // 704414: using guessed type int (__thiscall *off_704414)(void *, char); //----- (0063CEE0) -------------------------------------------------------- unsigned int __stdcall sub_63CEE0(int a1, int a2) { memcpy((void *)a2, (const void *)(a1 + 2), 0x3Eu); return ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + 37 + 1; } //----- (0063CF10) -------------------------------------------------------- unsigned int __stdcall sub_63CF10(int a1, int a2) { memcpy((void *)a2, (const void *)(a1 + 2), 0x59u); return ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + 64 + 1; } //----- (0063CF40) -------------------------------------------------------- unsigned int __stdcall sub_63CF40(int a1, int a2) { memcpy((void *)a2, (const void *)(a1 + 2), 0x25u); return ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + 12 + 1; } //----- (0063CF70) -------------------------------------------------------- unsigned int __stdcall sub_63CF70(int a1, int a2) { memcpy((void *)(a1 + 2), (const void *)a2, 0x3Eu); return ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 37) >> 1) + 37 + 1; } //----- (0063CFA0) -------------------------------------------------------- unsigned int __stdcall sub_63CFA0(int a1, int a2) { memcpy((void *)(a1 + 2), (const void *)a2, 0x59u); return ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 64) >> 1) + 64 + 1; } //----- (0063CFD0) -------------------------------------------------------- unsigned int __stdcall sub_63CFD0(int a1, int a2) { memcpy((void *)(a1 + 2), (const void *)a2, 0x25u); return ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + a2 + 2 * ((unsigned int)*(_BYTE *)(a2 + 12) >> 1) + 12 + 1; } //----- (0063D000) -------------------------------------------------------- unsigned int __stdcall sub_63D000(int a1) { return 3 * ((unsigned int)*(_BYTE *)(a1 + 37) >> 1) + 38; } //----- (0063D020) -------------------------------------------------------- unsigned int __stdcall sub_63D020(int a1) { return 3 * ((unsigned int)*(_BYTE *)(a1 + 64) >> 1) + 65; } //----- (0063D040) -------------------------------------------------------- unsigned int __stdcall sub_63D040(int a1) { return 3 * ((unsigned int)*(_BYTE *)(a1 + 12) >> 1) + 13; } //----- (0063D060) -------------------------------------------------------- signed int __stdcall sub_63D060(int a1, int a2, int a3) { signed int result; // eax@1 *(_DWORD *)a2 = -1; *(_DWORD *)(a2 + 4) = -1; memset((void *)(a2 + 8), 0, 0x67u); result = 65535; *(_WORD *)(a2 + 8) = -1; return result; } //----- (0063D090) -------------------------------------------------------- int __thiscall sub_63D090(void *this, int a2, __int16 a3, int a4) { *(_WORD *)a4 = a3; return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 4))((char *)this + 8, a4 + 2); } //----- (0063D0C0) -------------------------------------------------------- int __thiscall sub_63D0C0(void *this, int a2, int a3, int a4) { return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 4))((char *)this + 8, a4); } //----- (0063D0E0) -------------------------------------------------------- int __thiscall sub_63D0E0(void *this, __int16 a2, char a3, char a4, char a5) { void *v5; // esi@1 int v6; // edx@1 char v7; // al@1 unsigned int v8; // ecx@1 int result; // eax@1 struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-14h]@1 unsigned int v11; // [sp+14h] [bp-4h]@1 int v12; // [sp+18h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; v5 = this; GetLocalTime(&SystemTime); v6 = (unsigned __int8)word_1508B2A4; *((_WORD *)v5 + 4) = a2; v7 = SystemTime.wYear; v8 = (unsigned int)&unk_3FFFFFF & (*(_DWORD *)v5 & 0xFC000000 | ((a3 & 0xF | 16 * (a4 & 0x1F | 32 * v6)) << 9)) | (SystemTime.wSecond << 26); LOBYTE(v6) = LOBYTE(SystemTime.wMonth); *(_DWORD *)v5 = v8; ++word_1508B2A4; result = SystemTime.wMinute & 0x3F | ((SystemTime.wHour & 0x1F | 32 * (SystemTime.wDay & 0x1F | 32 * (v6 & 0xF | 16 * (32 * (a5 & 0x3F) | (v7 - 16) & 0x1F)))) << 6); *((_DWORD *)v5 + 1) = result; return result; } // 86FEB8: using guessed type int __security_cookie; // 1508B2A4: using guessed type __int16 word_1508B2A4; //----- (0063D1A0) -------------------------------------------------------- int __thiscall sub_63D1A0(int this, int a2, __int16 a3, int a4) { *(_DWORD *)a4 = *(_DWORD *)this; *(_DWORD *)(a4 + 4) = *(_DWORD *)(this + 4); *(_WORD *)(a4 + 8) = a3; return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 4))(this + 8, a4 + 10); } //----- (0063D1E0) -------------------------------------------------------- int __thiscall sub_63D1E0(int this, int a2, int a3, int a4) { int v4; // edi@1 void *v5; // eax@1 *(_DWORD *)this = *(_DWORD *)a4; *(_DWORD *)(this + 4) = *(_DWORD *)(a4 + 4); v4 = this + 8; *(_WORD *)(this + 8) = *(_WORD *)(a4 + 8); v5 = sub_63ACA0(dword_1508B168, *(_WORD *)(a4 + 8)); return (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 8))(v5, v4, a4 + 10); } //----- (0063D220) -------------------------------------------------------- signed __int64 __stdcall sub_63D220(char a1) { return 1i64 << a1; } //----- (0063D240) -------------------------------------------------------- void *__thiscall sub_63D240(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1162, 31) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1162, 1162, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063D2F0) -------------------------------------------------------- void *__thiscall sub_63D2F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7063CC; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7063CC: using guessed type int (__thiscall *off_7063CC)(void *, char); //----- (0063D320) -------------------------------------------------------- int __thiscall sub_63D320(int this) { int v1; // esi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_7063CC; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 0; *(_DWORD *)(v1 + 72) = 0; *(_DWORD *)(v1 + 76) = 0; *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; *(_DWORD *)(v1 + 88) = 0; *(_WORD *)(v1 + 92) = 0; *(_BYTE *)(v1 + 94) = 0; return v1; } // 7063CC: using guessed type int (__thiscall *off_7063CC)(void *, char); //----- (0063D360) -------------------------------------------------------- void *__thiscall sub_63D360(void *this, const char *a2) { return sub_63D240(this, a2); } //----- (0063D370) -------------------------------------------------------- signed __int64 __thiscall sub_63D370(int this, int a2) { int v2; // edi@1 signed int v3; // ebx@1 signed __int64 result; // qax@1 unsigned int v5; // esi@1 int v6; // ecx@3 unsigned __int64 v7; // qt0@8 unsigned __int64 v8; // qt0@8 unsigned __int64 v9; // kr80_8@8 v2 = this; v3 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); result = 0i64; v5 = 0; if ( v3 > 0 ) { while ( 1 ) { v6 = v5 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ? sub_626BC0(v2, v5) : v2 + 64; if ( *(_DWORD *)v6 == a2 ) break; ++v5; if ( (signed int)v5 >= v3 ) return 0i64; } v7 = *(_BYTE *)(v6 + 18) + 2 * (*(_BYTE *)(v6 + 19) + 2 * (*(_BYTE *)(v6 + 20) + 2 * (*(_BYTE *)(v6 + 21) + 2 * (*(_BYTE *)(v6 + 22) + 2 * (*(_BYTE *)(v6 + 23) + 2 * (*(_BYTE *)(v6 + 24) + 2 * (*(_BYTE *)(v6 + 25) + 2 * (*(_BYTE *)(v6 + 26) + 2 * (*(_BYTE *)(v6 + 27) + 2 * (*(_BYTE *)(v6 + 28) + 2 * (*(_BYTE *)(v6 + 29) + 2i64 * *(_BYTE *)(v6 + 30)))))))))))); v8 = *(_BYTE *)(v6 + 17) + __PAIR__( v7 >> 31, 2 * (*(_BYTE *)(v6 + 18) + 2 * (*(_BYTE *)(v6 + 19) + 2 * (*(_BYTE *)(v6 + 20) + 2 * (*(_BYTE *)(v6 + 21) + 2 * (*(_BYTE *)(v6 + 22) + 2 * (*(_BYTE *)(v6 + 23) + 2 * (*(_BYTE *)(v6 + 24) + 2 * (*(_BYTE *)(v6 + 25) + 2 * (*(_BYTE *)(v6 + 26) + 2 * (*(_BYTE *)(v6 + 27) + 2 * (*(_BYTE *)(v6 + 28) + 2 * (*(_BYTE *)(v6 + 29) + 2 * (unsigned int)*(_BYTE *)(v6 + 30)))))))))))))); v9 = *(_BYTE *)(v6 + 6) + 2 * (*(_BYTE *)(v6 + 7) + 2 * (*(_BYTE *)(v6 + 8) + 2 * (*(_BYTE *)(v6 + 9) + 2 * (*(_BYTE *)(v6 + 10) + 2 * (*(_BYTE *)(v6 + 11) + 2 * (*(_BYTE *)(v6 + 12) + 2 * (*(_BYTE *)(v6 + 13) + 2 * (*(_BYTE *)(v6 + 14) + 2 * (*(_BYTE *)(v6 + 15) + 2 * (*(_BYTE *)(v6 + 16) + __PAIR__( v8 >> 31, 2 * (*(_BYTE *)(v6 + 17) + 2 * (*(_BYTE *)(v6 + 18) + 2 * (*(_BYTE *)(v6 + 19) + 2 * (*(_BYTE *)(v6 + 20) + 2 * (*(_BYTE *)(v6 + 21) + 2 * (*(_BYTE *)(v6 + 22) + 2 * (*(_BYTE *)(v6 + 23) + 2 * (*(_BYTE *)(v6 + 24) + 2 * (*(_BYTE *)(v6 + 25) + 2 * (*(_BYTE *)(v6 + 26) + 2 * (*(_BYTE *)(v6 + 27) + 2 * (*(_BYTE *)(v6 + 28) + 2 * (*(_BYTE *)(v6 + 29) + 2 * (unsigned int)*(_BYTE *)(v6 + 30))))))))))))))))))))))))); result = 2 * (2 * (*(_BYTE *)(v6 + 5) + 2 * v9) + *(_BYTE *)(v6 + 4)); } return result; } //----- (0063D560) -------------------------------------------------------- char __stdcall sub_63D560(__int64 a1) { unsigned int v1; // eax@1 double v2; // st7@1 double v3; // st5@3 double v4; // st7@8 char result; // al@11 signed int v6; // [sp+4h] [bp-8h]@1 _CIlog(); _CIlog(); v6 = (signed int)((double)a1 / 2.0); v1 = (unsigned __int8)v6; v2 = 2.0; if ( (signed int)(unsigned __int8)v6 < 0 ) v1 = -(unsigned __int8)v6; v3 = 1.0; while ( 1 ) { if ( v1 & 1 ) v3 = v3 * v2; v1 >>= 1; if ( !v1 ) break; v2 = v2 * v2; } v4 = v3; if ( (signed int)(unsigned __int8)v6 < 0 ) v4 = 1.0 / v3; if ( (unsigned __int64)v4 == a1 ) result = (signed int)((double)a1 / 2.0); else result = 0; return result; } // 65B030: using guessed type double _CIlog(void); //----- (0063D5F0) -------------------------------------------------------- int __thiscall sub_63D5F0(int this, char a2) { int v2; // edi@1 int result; // eax@1 unsigned int v4; // esi@1 int v5; // ecx@5 unsigned __int64 v6; // qt0@7 unsigned __int64 v7; // qt0@7 unsigned __int64 v8; // kr80_8@7 signed int v9; // [sp+14h] [bp-8h]@1 int v10; // [sp+18h] [bp-4h]@1 v2 = this; v10 = this; v9 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); result = 0; v4 = 0; if ( *(_DWORD *)(*(_DWORD *)(this + 52) + 40) > 0 ) { while ( 1 ) { v5 = v4 < *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40) ? sub_626BC0(v2, v4) : v2 + 64; v6 = *(_BYTE *)(v5 + 18) + 2 * (*(_BYTE *)(v5 + 19) + 2 * (*(_BYTE *)(v5 + 20) + 2 * (*(_BYTE *)(v5 + 21) + 2 * (*(_BYTE *)(v5 + 22) + 2 * (*(_BYTE *)(v5 + 23) + 2 * (*(_BYTE *)(v5 + 24) + 2 * (*(_BYTE *)(v5 + 25) + 2 * (*(_BYTE *)(v5 + 26) + 2 * (*(_BYTE *)(v5 + 27) + 2 * (*(_BYTE *)(v5 + 28) + 2 * (*(_BYTE *)(v5 + 29) + 2i64 * *(_BYTE *)(v5 + 30)))))))))))); v7 = *(_BYTE *)(v5 + 17) + __PAIR__( v6 >> 31, 2 * (*(_BYTE *)(v5 + 18) + 2 * (*(_BYTE *)(v5 + 19) + 2 * (*(_BYTE *)(v5 + 20) + 2 * (*(_BYTE *)(v5 + 21) + 2 * (*(_BYTE *)(v5 + 22) + 2 * (*(_BYTE *)(v5 + 23) + 2 * (*(_BYTE *)(v5 + 24) + 2 * (*(_BYTE *)(v5 + 25) + 2 * (*(_BYTE *)(v5 + 26) + 2 * (*(_BYTE *)(v5 + 27) + 2 * (*(_BYTE *)(v5 + 28) + 2 * (*(_BYTE *)(v5 + 29) + 2 * (unsigned int)*(_BYTE *)(v5 + 30)))))))))))))); v8 = *(_BYTE *)(v5 + 6) + 2 * (*(_BYTE *)(v5 + 7) + 2 * (*(_BYTE *)(v5 + 8) + 2 * (*(_BYTE *)(v5 + 9) + 2 * (*(_BYTE *)(v5 + 10) + 2 * (*(_BYTE *)(v5 + 11) + 2 * (*(_BYTE *)(v5 + 12) + 2 * (*(_BYTE *)(v5 + 13) + 2 * (*(_BYTE *)(v5 + 14) + 2 * (*(_BYTE *)(v5 + 15) + 2 * (*(_BYTE *)(v5 + 16) + __PAIR__( v7 >> 31, 2 * (*(_BYTE *)(v5 + 17) + 2 * (*(_BYTE *)(v5 + 18) + 2 * (*(_BYTE *)(v5 + 19) + 2 * (*(_BYTE *)(v5 + 20) + 2 * (*(_BYTE *)(v5 + 21) + 2 * (*(_BYTE *)(v5 + 22) + 2 * (*(_BYTE *)(v5 + 23) + 2 * (*(_BYTE *)(v5 + 24) + 2 * (*(_BYTE *)(v5 + 25) + 2 * (*(_BYTE *)(v5 + 26) + 2 * (*(_BYTE *)(v5 + 27) + 2 * (*(_BYTE *)(v5 + 28) + 2 * (*(_BYTE *)(v5 + 29) + 2 * (unsigned int)*(_BYTE *)(v5 + 30))))))))))))))))))))))))); if ( 2 * (2 * (*(_BYTE *)(v5 + 5) + 2 * v8) + *(_BYTE *)(v5 + 4)) == 1i64 << a2 ) break; ++v4; if ( (signed int)v4 >= v9 ) return 0; v2 = v10; } result = *(_DWORD *)v5; } return result; } //----- (0063D810) -------------------------------------------------------- char __thiscall sub_63D810(int this, int a2, char a3) { char result; // al@2 if ( (1i64 << a3) & sub_63D370(this, a2) ) result = 1; else result = 0; return result; } //----- (0063D850) -------------------------------------------------------- signed int __thiscall sub_63D850(int this, char a2) { int v2; // esi@1 signed __int64 v3; // kr00_8@1 signed int result; // eax@2 v2 = this; v3 = 1i64 << a2; if ( (1i64 << a2) & sub_63D370(this, 5) ) { result = 5; } else { if ( v3 & sub_63D370(v2, 13) ) { result = 13; } else { if ( v3 & sub_63D370(v2, 19) ) { result = 19; } else { if ( v3 & sub_63D370(v2, 25) ) { result = 25; } else { if ( sub_63D810(v2, 32, a2) == 1 ) result = 32; else result = (unsigned __int8)(sub_63D810(v2, 34, a2) - 1) != 0 ? 0 : 34; } } } } return result; } //----- (0063D920) -------------------------------------------------------- signed int __thiscall sub_63D920(int this, unsigned __int16 a2, unsigned __int16 a3) { unsigned int v3; // esi@3 int v4; // esi@5 int v5; // eax@5 int v6; // edx@6 int v7; // ecx@7 int v8; // edx@7 signed int result; // eax@9 const char *v10; // esi@9 int v11; // edi@9 if ( a2 != -1 && a3 != -1 && (v3 = *(_DWORD *)(this + 1636), a2 < v3) && a3 < v3 && (v4 = *(_DWORD *)(this + 1628), v5 = 52 * a2, *(_DWORD *)(v4 + v5)) && (v6 = 52 * a3, *(_DWORD *)(v6 + v4)) && (v7 = *(_DWORD *)(v4 + v5 + 16), v8 = *(_DWORD *)(v4 + v6 + 16), v7) && v8 ) { result = 0; v10 = (const char *)(v7 + 2); v11 = v8 - v7; while ( *v10 == 45 || strcmp(v10, &v10[v11]) ) { ++result; v10 += 33; if ( result >= 4 ) return -1; } } else { result = -1; } return result; } //----- (0063D9F0) -------------------------------------------------------- bool __thiscall sub_63D9F0(int this, unsigned __int16 a2, unsigned __int16 a3, unsigned __int8 a4) { int v5; // eax@5 int v6; // ecx@5 int v7; // esi@5 int v8; // eax@8 return a2 != -1 && a3 != -1 && (a2 == a3 || (v5 = *(_DWORD *)(this + 1628), v6 = *(_DWORD *)(52 * a2 + v5 + 24), v7 = *(_DWORD *)(52 * a3 + v5 + 24), v6) && v7 && a4 < 4u && (v8 = 33 * a4, *(_BYTE *)(v8 + v6 + 2) != 45) && !strcmp((const char *)(v8 + v6 + 2), (const char *)(v8 + v7 + 2))); } //----- (0063DA90) -------------------------------------------------------- signed int __thiscall sub_63DA90(int this, unsigned __int16 a2) { signed int result; // eax@2 int v3; // eax@4 if ( (unsigned int)a2 <= *(_DWORD *)(this + 1636) && a2 != -1 && (v3 = *(_DWORD *)(52 * a2 + *(_DWORD *)(this + 1628))) != 0 ) result = *(_DWORD *)(v3 + 99); else result = 33; return result; } //----- (0063DAE0) -------------------------------------------------------- void *__thiscall sub_63DAE0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1193, 108) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1193, 1193, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063DBA0) -------------------------------------------------------- void *__thiscall sub_63DBA0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 7409, 167) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 7409, 7409, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063DC60) -------------------------------------------------------- void *__thiscall sub_63DC60(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 2556, 152) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 2556, 2556, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063DD20) -------------------------------------------------------- void *__thiscall sub_63DD20(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 591, 134) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 591, 591, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063DDE0) -------------------------------------------------------- void *__thiscall sub_63DDE0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 886, 167) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 886, 886, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063DEA0) -------------------------------------------------------- void *__thiscall sub_63DEA0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 37, 8) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 37, 37, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063DF50) -------------------------------------------------------- void *__thiscall sub_63DF50(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 11, 4) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 11, 11, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063E000) -------------------------------------------------------- void *__thiscall sub_63E000(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 7, 34) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 7, 7, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063E0C0) -------------------------------------------------------- void *__thiscall sub_63E0C0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 102, 67) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 102, 102, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063E160) -------------------------------------------------------- void *__thiscall sub_63E160(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 51, 65) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 51, 51, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0063E200) -------------------------------------------------------- void *__thiscall sub_63E200(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706408; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706408: using guessed type int (__thiscall *off_706408)(void *, char); //----- (0063E230) -------------------------------------------------------- void *__thiscall sub_63E230(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706410; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706410: using guessed type int (__thiscall *off_706410)(void *, char); //----- (0063E260) -------------------------------------------------------- void *__thiscall sub_63E260(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706418; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706418: using guessed type int (__thiscall *off_706418)(void *, char); //----- (0063E290) -------------------------------------------------------- void *__thiscall sub_63E290(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706420; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706420: using guessed type int (__thiscall *off_706420)(void *, char); //----- (0063E2C0) -------------------------------------------------------- void *__thiscall sub_63E2C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706428; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706428: using guessed type int (__thiscall *off_706428)(void *, char); //----- (0063E2F0) -------------------------------------------------------- void *__thiscall sub_63E2F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706430; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706430: using guessed type int (__thiscall *off_706430)(void *, char); //----- (0063E320) -------------------------------------------------------- void *__thiscall sub_63E320(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706438; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706438: using guessed type int (__thiscall *off_706438)(void *, char); //----- (0063E350) -------------------------------------------------------- void *__thiscall sub_63E350(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706440; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706440: using guessed type int (__thiscall *off_706440)(void *, char); //----- (0063E380) -------------------------------------------------------- void *__thiscall sub_63E380(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706448; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706448: using guessed type int (__thiscall *off_706448)(void *, char); //----- (0063E3B0) -------------------------------------------------------- void *__thiscall sub_63E3B0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706450; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706450: using guessed type int (__thiscall *off_706450)(void *, char); //----- (0063E3E0) -------------------------------------------------------- void *__thiscall sub_63E3E0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706458; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706458: using guessed type int (__thiscall *off_706458)(void *, char); //----- (0063E410) -------------------------------------------------------- int __thiscall sub_63E410(int this) { int v1; // esi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_706408; memset((void *)(v1 + 64), 0, 0x6Cu); sub_639920(v1 + 172); *(_DWORD *)(v1 + 172) = &off_706410; memset((void *)(v1 + 236), 0, 0xA7u); sub_639920(v1 + 404); *(_DWORD *)(v1 + 404) = &off_706418; memset((void *)(v1 + 468), 0, 0x98u); sub_639920(v1 + 620); *(_DWORD *)(v1 + 620) = &off_706420; memset((void *)(v1 + 684), 0, 0x86u); sub_639920(v1 + 820); *(_DWORD *)(v1 + 820) = &off_706428; memset((void *)(v1 + 884), 0, 0xA7u); sub_639920(v1 + 1052); *(_DWORD *)(v1 + 1052) = &off_706430; *(_DWORD *)(v1 + 1116) = 0; *(_DWORD *)(v1 + 1120) = 0; sub_639920(v1 + 1124); *(_DWORD *)(v1 + 1124) = &off_706438; *(_DWORD *)(v1 + 1188) = 0; sub_639920(v1 + 1192); *(_DWORD *)(v1 + 1192) = &off_706440; *(_DWORD *)(v1 + 1256) = 0; *(_DWORD *)(v1 + 1260) = 0; *(_DWORD *)(v1 + 1264) = 0; *(_DWORD *)(v1 + 1268) = 0; *(_DWORD *)(v1 + 1272) = 0; *(_DWORD *)(v1 + 1276) = 0; *(_DWORD *)(v1 + 1280) = 0; *(_DWORD *)(v1 + 1284) = 0; *(_WORD *)(v1 + 1288) = 0; sub_639920(v1 + 1292); *(_DWORD *)(v1 + 1292) = &off_706448; *(_DWORD *)(v1 + 1356) = 0; *(_WORD *)(v1 + 1360) = 0; *(_BYTE *)(v1 + 1362) = 0; sub_639920(v1 + 1364); *(_DWORD *)(v1 + 1364) = &off_706450; memset((void *)(v1 + 1428), 0, 0x43u); sub_639920(v1 + 1496); *(_DWORD *)(v1 + 1496) = &off_706458; memset((void *)(v1 + 1560), 0, 0x41u); return v1; } // 706408: using guessed type int (__thiscall *off_706408)(void *, char); // 706410: using guessed type int (__thiscall *off_706410)(void *, char); // 706418: using guessed type int (__thiscall *off_706418)(void *, char); // 706420: using guessed type int (__thiscall *off_706420)(void *, char); // 706428: using guessed type int (__thiscall *off_706428)(void *, char); // 706430: using guessed type int (__thiscall *off_706430)(void *, char); // 706438: using guessed type int (__thiscall *off_706438)(void *, char); // 706440: using guessed type int (__thiscall *off_706440)(void *, char); // 706448: using guessed type int (__thiscall *off_706448)(void *, char); // 706450: using guessed type int (__thiscall *off_706450)(void *, char); // 706458: using guessed type int (__thiscall *off_706458)(void *, char); //----- (0063E630) -------------------------------------------------------- void __thiscall sub_63E630(void *this) { int v1; // esi@1 int v2; // ecx@1 v1 = (int)this; v2 = (int)((char *)this + 1496); *(_DWORD *)v2 = &off_706458; sub_639940(v2); *(_DWORD *)(v1 + 1364) = &off_706450; sub_639940(v1 + 1364); *(_DWORD *)(v1 + 1292) = &off_706448; sub_639940(v1 + 1292); *(_DWORD *)(v1 + 1192) = &off_706440; sub_639940(v1 + 1192); *(_DWORD *)(v1 + 1124) = &off_706438; sub_639940(v1 + 1124); *(_DWORD *)(v1 + 1052) = &off_706430; sub_639940(v1 + 1052); *(_DWORD *)(v1 + 820) = &off_706428; sub_639940(v1 + 820); *(_DWORD *)(v1 + 620) = &off_706420; sub_639940(v1 + 620); *(_DWORD *)(v1 + 404) = &off_706418; sub_639940(v1 + 404); *(_DWORD *)(v1 + 172) = &off_706410; sub_639940(v1 + 172); *(_DWORD *)v1 = &off_706408; sub_639940(v1); } // 706408: using guessed type int (__thiscall *off_706408)(void *, char); // 706410: using guessed type int (__thiscall *off_706410)(void *, char); // 706418: using guessed type int (__thiscall *off_706418)(void *, char); // 706420: using guessed type int (__thiscall *off_706420)(void *, char); // 706428: using guessed type int (__thiscall *off_706428)(void *, char); // 706430: using guessed type int (__thiscall *off_706430)(void *, char); // 706438: using guessed type int (__thiscall *off_706438)(void *, char); // 706440: using guessed type int (__thiscall *off_706440)(void *, char); // 706448: using guessed type int (__thiscall *off_706448)(void *, char); // 706450: using guessed type int (__thiscall *off_706450)(void *, char); // 706458: using guessed type int (__thiscall *off_706458)(void *, char); //----- (0063E760) -------------------------------------------------------- __int16 __thiscall sub_63E760(void *this) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 unsigned int v4; // edi@4 int v5; // eax@6 int v6; // eax@9 int v7; // ecx@11 int v8; // eax@12 int v9; // eax@14 unsigned int v10; // edi@20 int v11; // eax@22 int v12; // eax@26 int v13; // eax@30 unsigned int v14; // edx@32 int v15; // eax@32 unsigned int v16; // ebx@34 int v17; // eax@36 int v18; // eax@39 int v19; // eax@42 int v20; // edi@44 int v21; // eax@45 int v22; // edi@51 int v23; // eax@51 int v24; // eax@57 int v25; // eax@60 int v26; // eax@63 int v27; // eax@66 unsigned int v28; // edi@68 int v29; // eax@70 unsigned int v30; // edi@76 int v31; // eax@78 int v32; // eax@84 unsigned int v33; // ebx@85 int v34; // eax@87 unsigned int v35; // eax@92 unsigned int v36; // ebx@92 int v37; // edi@94 signed int v39; // [sp+Ch] [bp-54h]@1 signed int v40; // [sp+10h] [bp-50h]@1 unsigned int v41; // [sp+10h] [bp-50h]@92 int v42; // [sp+14h] [bp-4Ch]@8 int v43; // [sp+14h] [bp-4Ch]@38 int v44; // [sp+18h] [bp-48h]@11 int v45; // [sp+18h] [bp-48h]@41 int v46; // [sp+18h] [bp-48h]@51 char v47; // [sp+1Ch] [bp-44h]@18 unsigned int v48; // [sp+5Ch] [bp-4h]@1 int v49; // [sp+60h] [bp+0h]@1 v48 = (unsigned int)&v49 ^ __security_cookie; v1 = (int)this; sub_63DAE0(this, "../9Data/Shine/MobInfo.shn"); sub_63DD20((void *)(v1 + 620), "../9Data/Shine/MobSpecies.shn"); sub_63DC60((void *)(v1 + 404), "../9Data/Shine/MobWeapon.shn"); sub_63DBA0((void *)(v1 + 172), "../9Data/Shine/MobInfoServer.shn"); sub_63DDE0((void *)(v1 + 820), "../9Data/Shine/QuestSpecies.shn"); sub_63DEA0((void *)(v1 + 1052), "../9Data/Shine/MobKillAnnounce.shn"); sub_63DF50((void *)(v1 + 1124), "../9Data/Shine/MobKillLog.shn"); sub_63E000((void *)(v1 + 1192), "../9Data/Shine/MobLifeTime.shn"); sub_4165D0((void *)(v1 + 1292), "../9Data/Shine/MobKillAble.shn"); sub_63E0C0((void *)(v1 + 1364), "../9Data/Shine/MobRegenAni.shn"); sub_63E160((void *)(v1 + 1496), "../9Data/Shine/GroupAbState.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v3 = *(_DWORD *)(v1 + 1104); *(_DWORD *)(v1 + 1632) = v2; v39 = *(_DWORD *)(v3 + 40); v40 = *(_DWORD *)(*(_DWORD *)(v1 + 1176) + 40); if ( *(_DWORD *)(*(_DWORD *)(v1 + 224) + 40) != v2 || *(_DWORD *)(*(_DWORD *)(v1 + 672) + 40) != v2 || *(_DWORD *)(*(_DWORD *)(v1 + 872) + 40) != v2 ) { sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_Load : Mob number mismatch", 0); v4 = 0; if ( *(_DWORD *)(v1 + 1632) > 0u ) { while ( 1 ) { v5 = v4 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ? sub_626BC0(v1, v4) : v1 + 64; v42 = *(_WORD *)v5; v6 = v4 < *(_DWORD *)(*(_DWORD *)(v1 + 224) + 40) ? sub_626BC0(v1 + 172, v4) : v1 + 236; v7 = *(_DWORD *)v6; v44 = *(_DWORD *)v6; if ( v4 < *(_DWORD *)(*(_DWORD *)(v1 + 672) + 40) ) { v8 = sub_626BC0(v1 + 620, v4); v7 = v44; } else { v8 = v1 + 684; } v9 = *(_WORD *)v8; if ( v42 != v7 ) break; if ( v7 != v9 ) break; ++v4; if ( v4 >= *(_DWORD *)(v1 + 1632) ) goto LABEL_19; } sprintf(&v47, "%d/%d/%d", v42, v44, v9); sub_6390B0(&unk_86DDD8, (int)"Conflict ", (int)&v47); } LABEL_19: loc_6391B0("MobDataBox::mdb_Load"); } v10 = 0; *(_DWORD *)(v1 + 1636) = 0; if ( *(_DWORD *)(v1 + 1632) > 0u ) { do { if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v11 = sub_626BC0(v1, v10); else v11 = v1 + 64; if ( *(_DWORD *)(v1 + 1636) < (unsigned int)*(_WORD *)v11 ) { if ( v10 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v12 = sub_626BC0(v1, v10); else v12 = v1 + 64; *(_DWORD *)(v1 + 1636) = *(_WORD *)v12; } ++v10; } while ( v10 < *(_DWORD *)(v1 + 1632) ); } v13 = unknown_libname_130(52 * (*(_DWORD *)(v1 + 1636) + 1) | -((unsigned __int8)(52 * (unsigned __int64)(unsigned int)(*(_DWORD *)(v1 + 1636) + 1) >> 32) != 0)); *(_DWORD *)(v1 + 1628) = v13; if ( v13 == 0 ) { sub_639100(&unk_86DDD8, (int)"Memory leak for index in MobInfo.dat", *(_DWORD *)(v1 + 1636) + 1); loc_6391B0("MobDataBox::mdb_Load"); } v14 = 0; v15 = 0; do { *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628)) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 4) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 16) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 24) = 0; *(_BYTE *)(v15 + *(_DWORD *)(v1 + 1628) + 40) &= 0xFEu; *(_BYTE *)(v15 + *(_DWORD *)(v1 + 1628) + 40) &= 0xFDu; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 28) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 32) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 36) = 0; *(_WORD *)(v15 + *(_DWORD *)(v1 + 1628) + 20) = -1; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 8) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 12) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 44) = 0; *(_DWORD *)(v15 + *(_DWORD *)(v1 + 1628) + 48) = -1; ++v14; v15 += 52; } while ( v14 <= *(_DWORD *)(v1 + 1636) ); v16 = 0; if ( *(_DWORD *)(v1 + 1632) ) { do { if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v17 = sub_626BC0(v1, v16); else v17 = v1 + 64; v43 = *(_WORD *)v17; if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 224) + 40) ) v18 = sub_626BC0(v1 + 172, v16); else v18 = v1 + 236; v45 = *(_DWORD *)v18; if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 672) + 40) ) v19 = sub_626BC0(v1 + 620, v16); else v19 = v1 + 684; v20 = *(_WORD *)v19; if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 872) + 40) ) v21 = sub_626BC0(v1 + 820, v16); else v21 = v1 + 884; if ( v43 != v45 || v43 != v20 || v43 != *(_WORD *)v21 ) { sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_Load : DataOrder mismatch", v43); loc_6391B0("MobDataBox::mdb_Load"); } v22 = 52 * v43; v23 = 52 * v43 + *(_DWORD *)(v1 + 1628); v46 = 52 * v43; if ( *(_DWORD *)v23 || *(_DWORD *)(v23 + 4) || *(_DWORD *)(v23 + 16) || *(_DWORD *)(v23 + 24) ) { sub_639100(&unk_86DDD8, (int)"Data duplicate in MobInfo.shn", v43); loc_6391B0("MobDataBox::mdb_Load"); } if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v24 = sub_626BC0(v1, v16); else v24 = v1 + 64; *(_DWORD *)(v22 + *(_DWORD *)(v1 + 1628)) = v24; if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 224) + 40) ) v25 = sub_626BC0(v1 + 172, v16); else v25 = v1 + 236; *(_DWORD *)(*(_DWORD *)(v1 + 1628) + v22 + 4) = v25; if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 672) + 40) ) v26 = sub_626BC0(v1 + 620, v16); else v26 = v1 + 684; *(_DWORD *)(*(_DWORD *)(v1 + 1628) + v22 + 16) = v26; if ( v16 < *(_DWORD *)(*(_DWORD *)(v1 + 872) + 40) ) v27 = sub_626BC0(v1 + 820, v16); else v27 = v1 + 884; v28 = 0; *(_DWORD *)(*(_DWORD *)(v1 + 1628) + v46 + 24) = v27; if ( v39 > 0 ) { while ( 1 ) { v29 = v28 < *(_DWORD *)(*(_DWORD *)(v1 + 1104) + 40) ? sub_626BC0(v1 + 1052, v28) : v1 + 1116; if ( *(_DWORD *)v29 == v43 ) break; ++v28; if ( (signed int)v28 >= v39 ) goto LABEL_76; } *(_DWORD *)(*(_DWORD *)(v1 + 1628) + v46 + 28) = v29; } LABEL_76: v30 = 0; if ( v40 > 0 ) { while ( 1 ) { v31 = v30 < *(_DWORD *)(*(_DWORD *)(v1 + 1176) + 40) ? sub_626BC0(v1 + 1124, v30) : v1 + 1188; if ( *(_DWORD *)v31 == v43 ) break; ++v30; if ( (signed int)v30 >= v40 ) goto LABEL_84; } *(_DWORD *)(*(_DWORD *)(v1 + 1628) + v46 + 32) = v31; } LABEL_84: v32 = *(_DWORD *)(*(_DWORD *)(v1 + 1628) + v46 + 4); sub_639590((void *)(v1 + 1640), (unsigned __int8 *)(v32 + 4), *(_DWORD *)v32); ++v16; } while ( v16 < *(_DWORD *)(v1 + 1632) ); } v33 = 0; if ( *(_DWORD *)(v1 + 1632) ) { do { if ( v33 < *(_DWORD *)(*(_DWORD *)(v1 + 224) + 40) ) v34 = sub_626BC0(v1 + 172, v33); else v34 = v1 + 236; if ( *(_BYTE *)(v34 + 112) != 45 ) *(_WORD *)(52 * *(_DWORD *)v34 + *(_DWORD *)(v1 + 1628) + 20) = sub_641810((int)&dword_1508B308, v34 + 112); ++v33; } while ( v33 < *(_DWORD *)(v1 + 1632) ); } v35 = *(_DWORD *)(*(_DWORD *)(v1 + 1244) + 40); v36 = 0; v41 = v35; if ( v35 ) { do { if ( v36 < *(_DWORD *)(*(_DWORD *)(v1 + 1244) + 40) ) v37 = sub_626BC0(v1 + 1192, v36); else v37 = v1 + 1256; v35 = (unsigned __int16)sub_418D10(v1, (unsigned __int8 *)v37); if ( -1 != (_WORD)v35 ) { v35 *= 52; *(_DWORD *)(v35 + *(_DWORD *)(v1 + 1628) + 36) = *(_WORD *)(v37 + 32); } ++v36; } while ( v36 < v41 ); } return v35; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; // 1508B308: using guessed type int dword_1508B308; //----- (0063EDC0) -------------------------------------------------------- bool __thiscall sub_63EDC0(int this, unsigned __int16 a2, int a3) { bool result; // al@2 int v4; // edx@3 int v5; // esi@3 int v6; // eax@5 int v7; // ecx@5 int v8; // eax@6 if ( a2 == -1 ) { result = 1; } else { v4 = *(_DWORD *)(52 * a2 + *(_DWORD *)(this + 1628) + 4); v5 = *(_DWORD *)(v4 + 49); if ( (unsigned int)v5 <= 2 ) { v6 = *(_DWORD *)(this + 1344); v7 = this + 1292; if ( (unsigned int)v5 < *(_DWORD *)(v6 + 40) ) v8 = sub_626BC0(v7, *(_DWORD *)(v4 + 49)); else v8 = v7 + 64; if ( v8 ) { switch ( a3 ) { case 0: result = *(_BYTE *)(v8 + 4) != 0; break; case 1: result = *(_BYTE *)(v8 + 5) != 0; break; case 2: result = *(_BYTE *)(v8 + 6) != 0; break; case 3: goto LABEL_15; default: sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_CanIKill : Unknown identity", a3); LABEL_15: result = 1; break; } } else { sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_CanIKill : mobKillAble is NULL", v5); result = 0; } } else { sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_CanIKill : Invalid MobKillType", a2); result = 0; } } return result; } //----- (0063EEB0) -------------------------------------------------------- int __thiscall sub_63EEB0(int this, int a2, unsigned int a3) { int v3; // ecx@1 int v4; // eax@1 int result; // eax@6 v3 = *(_DWORD *)(this + 2672); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 21) ) { if ( *(_DWORD *)(v4 + 12) >= a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } result = a2; *(_DWORD *)a2 = v3; return result; } //----- (0063EEF0) -------------------------------------------------------- int __thiscall sub_63EEF0(int this, int a2, unsigned int a3) { int v3; // ecx@1 int v4; // eax@1 int result; // eax@6 v3 = *(_DWORD *)(this + 2672); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 21) ) { if ( a3 >= *(_DWORD *)(v4 + 12) ) { v4 = *(_DWORD *)(v4 + 8); } else { v3 = v4; v4 = *(_DWORD *)v4; } } result = a2; *(_DWORD *)a2 = v3; return result; } //----- (0063EF30) -------------------------------------------------------- unsigned int __thiscall sub_63EF30(void *this, void *a2, void *a3) { unsigned int v3; // eax@1 int v4; // edi@1 int v5; // ebx@3 unsigned __int16 v6; // ax@6 int v7; // ebx@6 int v8; // esi@6 unsigned int v9; // ebx@9 int v10; // esi@10 int v11; // eax@11 void *v12; // eax@12 unsigned int v13; // eax@16 int v14; // ebx@18 unsigned __int16 v15; // ax@21 int v16; // ebx@21 int v17; // esi@21 int v18; // ebx@23 int v19; // esi@24 int v20; // edx@27 char v21; // al@27 int v22; // ebx@27 signed int v23; // eax@29 signed int v24; // edx@29 unsigned int v25; // eax@35 int v26; // ebx@39 int v27; // eax@43 int v28; // esi@43 int v29; // eax@46 int l; // eax@47 int k; // eax@50 int v32; // eax@56 int v33; // edx@56 int v34; // ecx@56 bool v35; // zf@56 unsigned int v36; // ebx@57 int v37; // eax@65 int v38; // edx@65 int v39; // ecx@65 unsigned int v40; // ebx@66 unsigned int result; // eax@73 int v42; // esi@75 unsigned __int16 v43; // ax@77 int v44; // ebx@77 int v45; // ebx@79 int v46; // eax@82 int v47; // esi@82 int v48; // eax@85 int n; // eax@86 int m; // eax@89 unsigned int v51; // [sp+Ch] [bp-30h]@65 int v52; // [sp+10h] [bp-2Ch]@65 int v53; // [sp+14h] [bp-28h]@56 int v54; // [sp+18h] [bp-24h]@56 int v55; // [sp+1Ch] [bp-20h]@71 int v56; // [sp+20h] [bp-1Ch]@63 unsigned int v57; // [sp+24h] [bp-18h]@35 char v58[4]; // [sp+28h] [bp-14h]@65 char v59[4]; // [sp+2Ch] [bp-10h]@56 void *v60; // [sp+30h] [bp-Ch]@56 unsigned int j; // [sp+34h] [bp-8h]@16 int i; // [sp+38h] [bp-4h]@1 unsigned int v63; // [sp+44h] [bp+8h]@35 unsigned int v64; // [sp+44h] [bp+8h]@73 int v65; // [sp+48h] [bp+Ch]@81 v3 = 0; v4 = (int)this; for ( i = 0; ; v3 = i ) { v5 = v3 < *(_DWORD *)(*(_DWORD *)(v4 + 456) + 40) ? sub_626BC0(v4 + 404, v3) : v4 + 468; if ( v5 == v4 + 468 ) break; v6 = sub_639620((void *)(v4 + 1640), (unsigned __int8 *)(v5 + 4)); v7 = *(_DWORD *)v5; v8 = v6; if ( v6 != v7 ) { sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_Load : Error in Monster Weapon", v7); loc_6391B0("MobDataBox::mdb_SkillStore"); } ++*(_DWORD *)(52 * v8 + *(_DWORD *)(v4 + 1628) + 12); ++i; } v9 = 0; if ( *(_DWORD *)(v4 + 1636) != -1 ) { v10 = 0; do { v11 = *(_DWORD *)(v4 + 1628); if ( *(_DWORD *)(v11 + v10 + 12) ) { v12 = *(void **)(v11 + v10 + 8); if ( v12 ) { operator delete(v12); *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v10 + 8) = 0; } *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v10 + 8) = unknown_libname_130(12 * *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v10 + 12) | -((unsigned __int8)(12 * (unsigned __int64)*(_DWORD *)(*(_DWORD *)(v4 + 1628) + v10 + 12) >> 32) != 0)); } *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v10 + 12) = 0; ++v9; v10 += 52; } while ( v9 < *(_DWORD *)(v4 + 1636) + 1 ); } v13 = 0; for ( j = 0; ; v13 = j ) { if ( v13 < *(_DWORD *)(*(_DWORD *)(v4 + 456) + 40) ) { v14 = sub_626BC0(v4 + 404, v13); i = v14; } else { v14 = v4 + 468; i = v4 + 468; } if ( v14 == v4 + 468 ) break; v15 = sub_639620((void *)(v4 + 1640), (unsigned __int8 *)(v14 + 4)); v16 = *(_DWORD *)v14; v17 = v15; if ( v15 != v16 ) { sub_639100(&unk_86DDD8, (int)"MobDataBox::mdb_Load : Error in Monster Weapon", v16); loc_6391B0("MobDataBox::mdb_SkillStore"); } v18 = i + 37; if ( *(_BYTE *)(i + 37) == 45 ) { v19 = 52 * v17; *(_WORD *)(*(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 8) + 12 * *(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 12) + 4) = -1; } else { v19 = 52 * v17; *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 1628) + v19 + 8) + 12 * *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v19 + 12) + 4) = sub_639620(a2, (unsigned __int8 *)(i + 37)); if ( *(_WORD *)(*(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 8) + 12 * *(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 12) + 4) == -1 ) sub_6390B0(&unk_86DDD8, (int)"MobDataBox::mdb_SkillStore : Invalid MobSkill Name", v18); } v20 = i; v21 = *(_BYTE *)(i + 113); v22 = i + 113; if ( v21 != 45 && v21 ) { v23 = sub_639620(a3, (unsigned __int8 *)(i + 113)); v24 = 792; if ( v23 != -1 ) v24 = v23; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 1628) + v19 + 8) + 12 * *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v19 + 12) + 8) = v24; if ( *(_DWORD *)(*(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 8) + 12 * *(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 12) + 8) == 792 ) sub_6390B0(&unk_86DDD8, (int)"MobDataBox::mdb_SkillStore : Invalid AbState Name", v22); } else { *(_DWORD *)(*(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 8) + 12 * *(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 12) + 8) = 792; *(_WORD *)(v20 + 148) = 0; } *(_DWORD *)(*(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 8) + 12 * (*(_DWORD *)(v19 + *(_DWORD *)(v4 + 1628) + 12))++) = i; ++j; } v25 = 0; v57 = *(_DWORD *)(*(_DWORD *)(v4 + 1548) + 40); j = 0; v63 = 0; if ( v57 ) { while ( 1 ) { if ( v25 < *(_DWORD *)(*(_DWORD *)(v4 + 1548) + 40) ) { v26 = sub_626BC0(v4 + 1496, v25); i = v26; } else { v26 = v4 + 1560; i = v4 + 1560; } if ( sub_639620(a3, (unsigned __int8 *)(v26 + 32)) == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobDataBox::mdb_SkillStore : GroupAbState Invalid AbstateIDX", v26 + 32); loc_6391B0("MobDataBox::mdb_SkillStore"); } v27 = *(_DWORD *)(v4 + 2672); v28 = *(_DWORD *)v27; if ( *(_DWORD *)v27 != v27 ) { while ( _mbscmp(*(const unsigned __int8 **)(v28 + 16), (const unsigned __int8 *)v26) ) { if ( !*(_BYTE *)(v28 + 21) ) { v29 = *(_DWORD *)(v28 + 8); if ( *(_BYTE *)(v29 + 21) ) { for ( k = *(_DWORD *)(v28 + 4); !*(_BYTE *)(k + 21); k = *(_DWORD *)(k + 4) ) { if ( v28 != *(_DWORD *)(k + 8) ) break; v28 = k; } v28 = k; } else { v28 = *(_DWORD *)(v28 + 8); for ( l = *(_DWORD *)v29; !*(_BYTE *)(l + 21); l = *(_DWORD *)l ) v28 = l; } } if ( v28 == *(_DWORD *)(v4 + 2672) ) goto LABEL_64; } v53 = *(_DWORD *)(v28 + 12); v54 = v26; v32 = sub_440B50((void *)(v4 + 2668), (int)&v53); v33 = *(_DWORD *)(v4 + 2672); v34 = *(_DWORD *)(v33 + 4); v35 = *(_BYTE *)(v34 + 21) == 0; v60 = (void *)v32; v59[0] = 1; if ( v35 ) { v36 = *(_DWORD *)(v32 + 12); do { v33 = v34; v59[0] = v36 < *(_DWORD *)(v34 + 12); if ( v59[0] ) v34 = *(_DWORD *)v34; else v34 = *(_DWORD *)(v34 + 8); } while ( !*(_BYTE *)(v34 + 21) ); v26 = i; } v28 = *(_DWORD *)sub_5CC4F0(v4 + 2668, (int)&v56, v59[0], v33, v60); } LABEL_64: if ( v28 == *(_DWORD *)(v4 + 2672) ) { v51 = j; v52 = v26; v37 = sub_440B50((void *)(v4 + 2668), (int)&v51); v38 = *(_DWORD *)(v4 + 2672); v39 = *(_DWORD *)(v38 + 4); v35 = *(_BYTE *)(v39 + 21) == 0; v60 = (void *)v37; v58[0] = 1; if ( v35 ) { v40 = *(_DWORD *)(v37 + 12); do { v38 = v39; v58[0] = v40 < *(_DWORD *)(v39 + 12); if ( v58[0] ) v39 = *(_DWORD *)v39; else v39 = *(_DWORD *)(v39 + 8); } while ( !*(_BYTE *)(v39 + 21) ); } sub_5CC4F0(v4 + 2668, (int)&v55, v58[0], v38, v60); ++j; } ++v63; if ( v63 >= v57 ) break; v25 = v63; } } result = 0; v57 = *(_DWORD *)(*(_DWORD *)(v4 + 1416) + 40); v64 = 0; if ( v57 ) { do { if ( result < *(_DWORD *)(*(_DWORD *)(v4 + 1416) + 40) ) v42 = sub_626BC0(v4 + 1364, result); else v42 = v4 + 1428; v43 = sub_418D10(v4, (unsigned __int8 *)v42); v44 = v43; if ( v43 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"MobDataBox::mdb_SkillStore : MobRegenAni Invalid MobIDX", v42); loc_6391B0("MobDataBox::mdb_SkillStore"); } v45 = 52 * v44; if ( *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v45 + 44) ) { sub_6390B0(&unk_86DDD8, (int)"MobDataBox::mdb_SkillStore : MobRegenAni Duplicate MobIDX", v42); loc_6391B0("MobDataBox::mdb_SkillStore"); } *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v45 + 44) = v42; v65 = v42 + 34; if ( *(_BYTE *)(v42 + 34) != 45 ) { v46 = *(_DWORD *)(v4 + 2672); v47 = *(_DWORD *)v46; if ( *(_DWORD *)v46 != v46 ) { while ( _mbscmp(*(const unsigned __int8 **)(v47 + 16), (const unsigned __int8 *)v65) ) { if ( !*(_BYTE *)(v47 + 21) ) { v48 = *(_DWORD *)(v47 + 8); if ( *(_BYTE *)(v48 + 21) ) { for ( m = *(_DWORD *)(v47 + 4); !*(_BYTE *)(m + 21); m = *(_DWORD *)(m + 4) ) { if ( v47 != *(_DWORD *)(m + 8) ) break; v47 = m; } v47 = m; } else { v47 = *(_DWORD *)(v47 + 8); for ( n = *(_DWORD *)v48; !*(_BYTE *)(n + 21); n = *(_DWORD *)n ) v47 = n; } } if ( v47 == *(_DWORD *)(v4 + 2672) ) goto LABEL_96; } *(_DWORD *)(*(_DWORD *)(v4 + 1628) + v45 + 48) = *(_DWORD *)(v47 + 12); } LABEL_96: if ( v47 == *(_DWORD *)(v4 + 2672) ) { sub_6390B0(&unk_86DDD8, (int)"MobDataBox::mdb_SkillStore : MobRegenAni not exist GroupAbStateIDX", v65); loc_6391B0("MobDataBox::mdb_SkillStore"); } } result = v64 + 1; v64 = result; } while ( result < v57 ); } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0063F550) -------------------------------------------------------- void __thiscall sub_63F550(int this) { int v1; // edi@1 int v2; // ST08_4@3 int v3; // ST04_4@3 char v4; // [sp+Ch] [bp-18h]@3 int v5; // [sp+10h] [bp-14h]@3 int v6; // [sp+14h] [bp-10h]@1 int v7; // [sp+20h] [bp-4h]@1 v1 = this; v6 = this; v7 = 0; if ( *(_DWORD *)(this + 1628) ) operator delete(*(void **)(this + 1628)); v5 = v1 + 2668; v2 = *(_DWORD *)(v1 + 2672); v3 = **(_DWORD **)(v1 + 2672); LOBYTE(v7) = 2; sub_5CF580(v1 + 2668, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 2672)); LOBYTE(v7) = 0; sub_639560((void *)(v1 + 1640)); v7 = -1; sub_63E630((void *)v1); } //----- (0063F5F0) -------------------------------------------------------- int __thiscall sub_63F5F0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int (__thiscall **v5)(void *, char); // [sp+Ch] [bp-20h]@6 int v6; // [sp+18h] [bp-14h]@1 int v7; // [sp+1Ch] [bp-10h]@5 int v8; // [sp+28h] [bp-4h]@1 v2 = this; v6 = this; sub_63E410(this); v8 = 0; sub_639540(v2 + 1640); LOBYTE(v8) = 1; *(_DWORD *)(v2 + 2676) = 0; v3 = operator new(0x18u); if ( !v3 ) { v7 = 0; std::exception::exception(&v7); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)(v2 + 2672) = v3; *(_DWORD *)v3 = v3; *(_DWORD *)(*(_DWORD *)(v2 + 2672) + 4) = *(_DWORD *)(v2 + 2672); *(_DWORD *)(*(_DWORD *)(v2 + 2672) + 8) = *(_DWORD *)(v2 + 2672); *(_BYTE *)(*(_DWORD *)(v2 + 2672) + 20) = 1; *(_BYTE *)(*(_DWORD *)(v2 + 2672) + 21) = 1; LOBYTE(v8) = 2; *(_DWORD *)(v2 + 1628) = 0; *(_DWORD *)(v2 + 1636) = 0; if ( a2 != -1 ) { sub_639100(&unk_86DDD8, (int)"MobDataBox::ReadData called", 0); loc_6391B0("MobDataBox::ReadData"); } return v2; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (0063F6F0) -------------------------------------------------------- int __stdcall sub_63F6F0(int a1) { return a1 + 3668; } //----- (0063F700) -------------------------------------------------------- int __stdcall sub_63F700(int a1) { return a1 + 20376; } //----- (0063F710) -------------------------------------------------------- int __stdcall sub_63F710(int a1) { return a1 + 20960; } //----- (0063F720) -------------------------------------------------------- int __thiscall sub_63F720(void *this) { void *v1; // esi@1 int v2; // ebx@1 int v3; // edi@1 int v4; // eax@2 v1 = this; v2 = 0; v3 = 0; if ( (*(int (**)(void))(*(_DWORD *)this + 8))() > 0 ) { do { v4 = (**(int (__thiscall ***)(void *, int))v1)(v1, v3); if ( v4 && *(_WORD *)(v4 + 8) != -1 ) ++v2; ++v3; } while ( v3 < (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 8))(v1) ); } return v2; } //----- (0063F770) -------------------------------------------------------- int __thiscall sub_63F770(void *this, __int16 a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@2 __int16 v5; // dx@3 int result; // eax@7 int v7; // [sp+Ch] [bp-4h]@1 v2 = this; v7 = 0; v3 = 0; if ( (*(int (**)(void))(*(_DWORD *)this + 8))() <= 0 ) { result = 0; } else { do { v4 = (**(int (__thiscall ***)(void *, int))v2)(v2, v3); if ( v4 ) { v5 = *(_WORD *)(v4 + 8); if ( v5 != -1 ) { if ( v5 == a2 ) v7 += (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v4 + 112) + 28))(*(_DWORD *)(v4 + 112), v4 + 8); } } ++v3; } while ( v3 < (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 8))(v2) ); result = v7; } return result; } //----- (0063F7F0) -------------------------------------------------------- char __thiscall sub_63F7F0(void *this) { void *v1; // esi@1 int v2; // eax@2 int v3; // edx@3 v1 = this; while ( 1 ) { v2 = *((_DWORD *)v1 + 2); if ( v2 >= *((_DWORD *)v1 + 3) - 1 ) break; v3 = *(_DWORD *)v1; *((_DWORD *)v1 + 2) = v2 + 1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))v3)(v1) ) return 1; } return 0; } //----- (0063F820) -------------------------------------------------------- int __thiscall sub_63F820(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 4) ) result = (***(int (__stdcall ****)(_DWORD))(this + 4))(*(_DWORD *)(this + 8)); else result = 0; return result; } //----- (0063F850) -------------------------------------------------------- void *__thiscall sub_63F850(int this, const void *a2) { int v2; // ebx@1 void *result; // eax@1 v2 = this; memcpy((void *)this, a2, 0x6Fu); result = sub_63ACA0(dword_1508B168, *(_WORD *)(this + 8)); *(_DWORD *)(v2 + 112) = result; return result; } //----- (0063F880) -------------------------------------------------------- int __thiscall sub_63F880(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_7068E4; result = _LN21((void *)(this + 4), 0x74u, 144, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 7068E4: using guessed type int (__stdcall *off_7068E4[2])(int); //----- (0063F8F0) -------------------------------------------------------- int __stdcall sub_63F8F0(int a1) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(a1 + 10); if ( v1 <= 4u ) result = 8 * (3 * v1 + 6); else result = 144; return result; } //----- (0063F920) -------------------------------------------------------- signed int __cdecl sub_63F920() { return 144; } //----- (0063F930) -------------------------------------------------------- int __thiscall sub_63F930(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_7068F8; result = _LN21((void *)(this + 4), 0x74u, 30, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 7068F8: using guessed type int (__stdcall *off_7068F8[2])(int); //----- (0063F990) -------------------------------------------------------- signed int __stdcall sub_63F990(int a1) { return 30; } //----- (0063F9A0) -------------------------------------------------------- int __thiscall sub_63F9A0(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_70690C; result = _LN21((void *)(this + 4), 0x74u, 5, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 70690C: using guessed type int (__stdcall *off_70690C[2])(int); //----- (0063FA00) -------------------------------------------------------- signed int __stdcall sub_63FA00(int a1) { return 5; } //----- (0063FA10) -------------------------------------------------------- char __cdecl sub_63FA10() { return 7; } //----- (0063FA20) -------------------------------------------------------- int __thiscall sub_63FA20(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_706920; result = _LN21((void *)(this + 4), 0x74u, 576, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 706920: using guessed type int (__stdcall *off_706920[2])(int); //----- (0063FA90) -------------------------------------------------------- int __stdcall sub_63FA90(int a1) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(a1 + 11); if ( v1 <= 2u ) result = 4 * (9 * v1 + 18); else result = 144; return result; } //----- (0063FAC0) -------------------------------------------------------- signed int __cdecl sub_63FAC0() { return 576; } //----- (0063FAD0) -------------------------------------------------------- char __cdecl sub_63FAD0() { return 6; } //----- (0063FAE0) -------------------------------------------------------- int __thiscall sub_63FAE0(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_706934; result = _LN21((void *)(this + 4), 0x74u, 35, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 706934: using guessed type int (__stdcall *off_706934[2])(int); //----- (0063FB40) -------------------------------------------------------- int __thiscall sub_63FB40(void *this, int a2) { void *v2; // esi@1 int result; // eax@2 v2 = this; if ( a2 >= (*(int (**)(void))(*(_DWORD *)this + 8))() ) result = (int)&dword_86E7E8; else result = (int)((char *)v2 + 116 * a2 + 4); return result; } // 86E7E8: using guessed type int dword_86E7E8; //----- (0063FB70) -------------------------------------------------------- signed int __stdcall sub_63FB70(int a1) { return 35; } //----- (0063FB80) -------------------------------------------------------- char __cdecl sub_63FB80() { return 12; } //----- (0063FB90) -------------------------------------------------------- int __thiscall sub_63FB90(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_706948; result = _LN21((void *)(this + 4), 0x74u, 36, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 706948: using guessed type int (__stdcall *off_706948[2])(int); //----- (0063FBF0) -------------------------------------------------------- signed int __stdcall sub_63FBF0(int a1) { return 36; } //----- (0063FC00) -------------------------------------------------------- signed int __cdecl sub_63FC00() { return 36; } //----- (0063FC10) -------------------------------------------------------- char __cdecl sub_63FC10() { return 4; } //----- (0063FC20) -------------------------------------------------------- int __thiscall sub_63FC20(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_70695C; result = _LN21((void *)(this + 4), 0x74u, 72, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 70695C: using guessed type int (__stdcall *off_70695C[2])(int); //----- (0063FC80) -------------------------------------------------------- signed int __stdcall sub_63FC80(int a1) { return 72; } //----- (0063FC90) -------------------------------------------------------- signed int __cdecl sub_63FC90() { return 72; } //----- (0063FCA0) -------------------------------------------------------- int __thiscall sub_63FCA0(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_706970; result = _LN21((void *)(this + 4), 0x74u, 98, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 706970: using guessed type int (__stdcall *off_706970[2])(int); //----- (0063FD00) -------------------------------------------------------- signed int __stdcall sub_63FD00(int a1) { return 98; } //----- (0063FD10) -------------------------------------------------------- signed int __cdecl sub_63FD10() { return 98; } //----- (0063FD20) -------------------------------------------------------- char __cdecl sub_63FD20() { return 3; } //----- (0063FD30) -------------------------------------------------------- signed int __thiscall sub_63FD30(int this) { signed int result; // eax@1 result = 65535; *(_WORD *)(this + 8) = -1; return result; } //----- (0063FD40) -------------------------------------------------------- char *__thiscall sub_63FD40(void *this) { return (char *)this + 10; } //----- (0063FD50) -------------------------------------------------------- __int16 __thiscall sub_63FD50(int this) { return *(_WORD *)(this + 8); } //----- (0063FD60) -------------------------------------------------------- int __thiscall sub_63FD60(int this, int a2) { int result; // eax@1 *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_WORD *)(this + 8) = *(_WORD *)(a2 + 8); result = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 10) = result; return result; } //----- (0063FD90) -------------------------------------------------------- int __thiscall sub_63FD90(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)a2 = *(_DWORD *)this; *(_DWORD *)(a2 + 4) = *(_DWORD *)(this + 4); *(_WORD *)(a2 + 8) = *(_WORD *)(this + 8); *(_DWORD *)(a2 + 10) = *(_DWORD *)(this + 10); return result; } //----- (0063FDC0) -------------------------------------------------------- int __thiscall sub_63FDC0(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_706984; result = _LN21((void *)(this + 4), 0x74u, 24, nullsub_2); *(_DWORD *)v1 = off_7068D0; return result; } // 7068D0: using guessed type int (*off_7068D0[4])(); // 706984: using guessed type int (__stdcall *off_706984[2])(int); //----- (0063FE20) -------------------------------------------------------- int __thiscall sub_63FE20(void *this, int a2, int a3, int a4) { int result; // eax@1 int v5; // ebx@1 int v6; // edi@1 void *v7; // esi@1 int v8; // eax@5 void *v9; // [sp+Ch] [bp-80h]@1 int v10; // [sp+14h] [bp-78h]@1 char v11; // [sp+18h] [bp-74h]@5 __int16 v12; // [sp+84h] [bp-8h]@5 char v13; // [sp+86h] [bp-6h]@5 unsigned int v14; // [sp+88h] [bp-4h]@1 int v15; // [sp+8Ch] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; result = a2; v5 = a3; v6 = 0; v7 = this; v9 = this; v10 = 0; if ( *(_BYTE *)a2 ) { do { if ( (unsigned int)*(_WORD *)(v5 + 1) >> 10 == a4 ) { if ( v6 < (*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 8))(v7) ) { sub_63D1E0((int)&v11, (int)dword_1508B168, 65535, v5 + 3); v8 = (**(int (__thiscall ***)(void *, int))v7)(v7, v6); memcpy((void *)v8, &v11, 0x6Cu); *(_WORD *)(v8 + 108) = v12; *(_BYTE *)(v8 + 110) = v13; v7 = v9; v6 = v10; *(_DWORD *)(v8 + 112) = sub_63ACA0(dword_1508B168, *(_WORD *)(v8 + 8)); } else { sub_639100(&unk_86DDD8, (int)"ItemRewardStorage::irs_Initializetotal : Invalid slot", v6); } } result = a2; ++v6; v5 += *(_BYTE *)v5 + 1; v10 = v6; } while ( v6 < *(_BYTE *)a2 ); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0063FF00) -------------------------------------------------------- int __thiscall sub_63FF00(int this, int a2, int a3, int a4, int a5) { int v5; // esi@1 int v6; // edx@1 int v7; // eax@2 v5 = this; *(_DWORD *)this = &off_6A86A4; *(_DWORD *)(this + 4) = a2; v6 = *(_DWORD *)a2; if ( a5 ) v7 = (*(int (__stdcall **)(int))(v6 + 4))(a5); else v7 = (*(int (**)(void))(v6 + 8))(); *(_DWORD *)(v5 + 12) = v7; *(_DWORD *)v5 = &off_7069D0; *(_DWORD *)(v5 + 16) = a3; *(_DWORD *)(v5 + 20) = a4; return v5; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 7069D0: using guessed type int (*off_7069D0)(); //----- (0063FF50) -------------------------------------------------------- bool __thiscall sub_63FF50(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; v2 = (***(int (__stdcall ****)(_DWORD))(this + 4))(*(_DWORD *)(this + 8)); return *(_DWORD *)v2 == *(_DWORD *)(v1 + 16) && *(_DWORD *)(v2 + 4) == *(_DWORD *)(v1 + 20); } //----- (0063FF80) -------------------------------------------------------- int __thiscall sub_63FF80(void *this, int a2, char a3, __int16 a4) { int result; // eax@1 result = a2; if ( (unsigned int)(a2 - 1) <= 0x1C ) { *((_BYTE *)this + 4 * a2 + 3547) = a3; *((_BYTE *)this + 4 * a2 + 3546) = 0; *((_WORD *)this + 2 * a2 + 1774) = a4; } return result; } //----- (0063FFB0) -------------------------------------------------------- char *__thiscall sub_63FFB0(void *this, int a2) { char *result; // eax@1 signed int v3; // esi@2 result = (char *)(a2 - 1); if ( (unsigned int)(a2 - 1) <= 0x1C ) { result = (char *)this + 3547; v3 = 5; do { if ( *result == a2 ) { *(result - 1) = 0; *result = 0; *(_WORD *)(result + 1) = -1; } if ( result[4] == a2 ) { result[3] = 0; result[4] = 0; *(_WORD *)(result + 5) = -1; } if ( result[8] == a2 ) { result[7] = 0; result[8] = 0; *(_WORD *)(result + 9) = -1; } if ( result[12] == a2 ) { result[11] = 0; result[12] = 0; *(_WORD *)(result + 13) = -1; } if ( result[16] == a2 ) { result[15] = 0; result[16] = 0; *(_WORD *)(result + 17) = -1; } if ( result[20] == a2 ) { result[19] = 0; result[20] = 0; *(_WORD *)(result + 21) = -1; } result += 24; --v3; } while ( v3 ); } return result; } //----- (00640070) -------------------------------------------------------- char *__thiscall sub_640070(void *this) { char *result; // eax@1 signed int v2; // ecx@1 result = (char *)this + 3547; v2 = 30; do { *(result - 1) = 0; *result = 0; *(_WORD *)(result + 1) = -1; result += 4; --v2; } while ( v2 ); return result; } //----- (006400A0) -------------------------------------------------------- bool __thiscall sub_6400A0(void *this, int a2) { bool result; // al@2 if ( (unsigned int)(a2 - 1) > 0x1C ) result = 0; else result = *((_BYTE *)this + 4 * a2 + 3547) != 0; return result; } //----- (006400D0) -------------------------------------------------------- char __thiscall sub_6400D0(void *this) { signed int v1; // edx@1 char *v2; // eax@1 v1 = 0; v2 = (char *)this + 3548; while ( !*(v2 - 1) && *(_WORD *)v2 == -1 ) { ++v1; v2 += 4; if ( v1 >= 30 ) return 0; } return 1; } //----- (00640100) -------------------------------------------------------- signed __int16 __thiscall sub_640100(void *this, int a2) { signed __int16 result; // ax@2 if ( (unsigned int)(a2 - 1) > 0x1C ) result = -1; else result = *((_WORD *)this + 2 * a2 + 1774); return result; } //----- (00640130) -------------------------------------------------------- int __thiscall sub_640130(void *this, int a2, char a3) { int result; // eax@1 result = a2; if ( (unsigned int)(a2 - 1) <= 0x1C ) *((_BYTE *)this + 4 * a2 + 3546) = a3; return result; } //----- (00640150) -------------------------------------------------------- char __thiscall sub_640150(void *this, int a2) { char result; // al@2 if ( (unsigned int)(a2 - 1) > 0x1C ) result = 0; else result = *((_BYTE *)this + 4 * a2 + 3546); return result; } //----- (00640170) -------------------------------------------------------- char *__thiscall sub_640170(void *this) { char *result; // eax@1 signed int v2; // ecx@1 result = (char *)this + 3546; v2 = 30; do { *result = 0; result += 4; --v2; } while ( v2 ); return result; } //----- (00640190) -------------------------------------------------------- signed __int16 __thiscall sub_640190(void *this, int a2) { signed __int16 result; // ax@3 if ( (unsigned int)(a2 - 1) > 0x1C ) { result = -1; } else { if ( *((_BYTE *)this + 4 * a2 + 3547) ) result = *((_WORD *)this + 2 * a2 + 1774); else result = *((_WORD *)this + 58 * a2 + 6); } return result; } //----- (006401D0) -------------------------------------------------------- int __thiscall sub_6401D0(void *this, int a2) { char *v2; // eax@3 int v3; // ecx@3 int result; // eax@4 if ( (unsigned int)(a2 - 1) > 0x1C || *((_BYTE *)this + 4 * a2 + 3547) || (v2 = (char *)this + 116 * a2, (v3 = *((_DWORD *)v2 + 29)) == 0) ) result = 0; else result = (*(int (__stdcall **)(char *))(*(_DWORD *)v3 + 48))(v2 + 4); return result; } //----- (00640210) -------------------------------------------------------- signed int __thiscall sub_640210(int this) { signed int result; // eax@1 *(_BYTE *)(this + 3484) = 0; result = -1; *(_DWORD *)(this + 3486) = -1; *(_DWORD *)(this + 3490) = -1; *(_DWORD *)(this + 3494) = -1; *(_DWORD *)(this + 3498) = -1; *(_DWORD *)(this + 3502) = -1; *(_DWORD *)(this + 3506) = -1; *(_DWORD *)(this + 3510) = -1; *(_DWORD *)(this + 3514) = -1; *(_DWORD *)(this + 3518) = -1; *(_DWORD *)(this + 3522) = -1; *(_DWORD *)(this + 3526) = -1; *(_DWORD *)(this + 3530) = -1; *(_DWORD *)(this + 3534) = -1; *(_DWORD *)(this + 3538) = -1; *(_DWORD *)(this + 3542) = -1; return result; } //----- (00640290) -------------------------------------------------------- unsigned __int8 __thiscall sub_640290(int this, __int16 a2) { unsigned __int8 result; // al@1 result = *(_BYTE *)(this + 3484); if ( result < 0x1Eu ) { *(_WORD *)(this + 2 * result + 3486) = a2; ++*(_BYTE *)(this + 3484); } return result; } //----- (006402C0) -------------------------------------------------------- char __thiscall sub_6402C0(int this) { return *(_BYTE *)(this + 3484); } //----- (006402D0) -------------------------------------------------------- signed __int16 __thiscall sub_6402D0(int this, unsigned __int8 a2) { signed __int16 result; // ax@2 if ( *(_BYTE *)(this + 3484) > a2 ) result = *(_WORD *)(this + 2 * a2 + 3486); else result = -1; return result; } //----- (00640310) -------------------------------------------------------- signed int __cdecl sub_640310() { signed int result; // eax@1 dword_86E7E8 = -1; dword_86E7EC = -1; memset(&word_86E7F0, 0, 0x67u); result = 65535; word_86E7F0 = -1; off_86E858 = dword_1508B168; return result; } // 86E7E8: using guessed type int dword_86E7E8; // 86E7EC: using guessed type int dword_86E7EC; // 86E7F0: using guessed type __int16 word_86E7F0; // 86E858: using guessed type void *off_86E858; //----- (00640350) -------------------------------------------------------- int __thiscall sub_640350(void *this, int a2, int a3, int a4) { int result; // eax@1 int v5; // ebx@1 void *v6; // esi@1 int v7; // edi@3 int v8; // eax@5 void *v9; // [sp+8h] [bp-80h]@1 int v10; // [sp+10h] [bp-78h]@1 char v11; // [sp+14h] [bp-74h]@5 __int16 v12; // [sp+80h] [bp-8h]@5 char v13; // [sp+82h] [bp-6h]@5 unsigned int v14; // [sp+84h] [bp-4h]@1 int v15; // [sp+88h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; result = a2; v5 = a3; v6 = this; v9 = this; v10 = 0; if ( *(_BYTE *)a2 ) { while ( 1 ) { if ( (unsigned int)*(_WORD *)(v5 + 1) >> 10 != a4 ) goto LABEL_6; v7 = *(_WORD *)(v5 + 1) & 0x3FF; if ( (*(_WORD *)(v5 + 1) & 0x3FF) < (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 8))(v6) ) break; sub_639100(&unk_86DDD8, (int)"ItemBag::ib_Initializetotal : Invalid slot", v7); v5 += *(_BYTE *)v5 + 1; LABEL_7: result = v10 + 1; v10 = result; if ( result >= *(_BYTE *)a2 ) return result; } sub_63D1E0((int)&v11, (int)dword_1508B168, 65535, v5 + 3); v8 = (**(int (__thiscall ***)(void *, int))v6)(v6, *(_WORD *)(v5 + 1) & 0x3FF); memcpy((void *)v8, &v11, 0x6Cu); *(_WORD *)(v8 + 108) = v12; *(_BYTE *)(v8 + 110) = v13; v6 = v9; *(_DWORD *)(v8 + 112) = sub_63ACA0(dword_1508B168, *(_WORD *)(v8 + 8)); LABEL_6: v5 += *(_BYTE *)v5 + 1; goto LABEL_7; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00640460) -------------------------------------------------------- int __thiscall sub_640460(void *this, int a2, int a3, int a4, int a5, int a6) { int v6; // edi@1 int (*v7)(); // eax@3 int v8; // eax@6 int v9; // esi@6 unsigned __int16 v10; // ax@7 int v11; // edx@8 int v12; // ecx@10 int v13; // eax@12 FILE *v14; // ebx@14 FILE *v15; // ebx@17 __int16 v16; // ax@18 unsigned __int8 v17; // al@18 int (*v18)(); // eax@20 int (**v20)(); // [sp+10h] [bp-1Ch]@1 void *v21; // [sp+14h] [bp-18h]@1 int v22; // [sp+18h] [bp-14h]@1 int v23; // [sp+1Ch] [bp-10h]@1 int v24; // [sp+28h] [bp-4h]@1 v6 = a3; *(_BYTE *)a2 = 0; v20 = &off_6A86A4; v21 = this; v23 = (*(int (**)(void))(*(_DWORD *)this + 8))(); v20 = (int (**)())&off_6A86AC; v24 = 0; v22 = 0; if ( (unsigned __int8)off_6A86AC(&v20) ) { LABEL_4: if ( v22 < a5 || v22 > a6 ) { LABEL_19: while ( v22 < v23 - 1 ) { v18 = *v20; ++v22; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v18)(&v20) ) goto LABEL_4; } return v6 - a2; } v8 = (**(int (__stdcall ***)(_DWORD))v21)(v22); v9 = v8; if ( !v8 ) return v6 - a2; v10 = *(_WORD *)(v8 + 8); if ( v10 < (unsigned int)dword_14D20894 ) { v11 = dword_14D21184 + 40 * v10; if ( v11 ) { if ( *(_DWORD *)v11 ) { v12 = **(_WORD **)v11; if ( (_WORD)v12 == v10 ) { v13 = dword_14D21184 + 40 * v10; LABEL_13: if ( v13 ) { if ( *(_DWORD *)v13 != 0 ) { v16 = *(_WORD *)(v6 + 1) & 0x3FF | 0x1800; *(_WORD *)(v6 + 1) = v16; *(_WORD *)(v6 + 1) = v16 ^ (v22 ^ v16) & 0x3FF; v17 = 2 - (v6 + 3) + sub_63D090((void *)v9, *(_DWORD *)(v9 + 112), *(_WORD *)(v9 + 8), v6 + 3); *(_BYTE *)v6 = v17; v6 += v17 + 1; ++*(_BYTE *)a2; } else { sub_639100( &unk_86DDD8, (int)"CharacterInventory::ias_FillBufferItem : Invalid ItemID found", *(_WORD *)(v9 + 8)); v15 = fopen("StorageError.txt", "a"); fprintf(v15, "%s %d\n", a4, *(_WORD *)(v9 + 8)); fclose(v15); } } else { sub_639100( &unk_86DDD8, (int)"CharacterInventory::ias_FillBufferItem : Invalid ItemID found", *(_WORD *)(v9 + 8)); v14 = fopen("StorageError.txt", "a"); fprintf(v14, "%s/%d\n", a4, *(_WORD *)(v9 + 8)); fclose(v14); } goto LABEL_19; } sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v12 + 10000 * v10); } } } v13 = 0; goto LABEL_13; } while ( v22 < v23 - 1 ) { v7 = *v20; ++v22; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v7)(&v20) ) goto LABEL_4; } return v6 - a2; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; //----- (00640690) -------------------------------------------------------- int __thiscall sub_640690(int this, int a2, int a3, unsigned __int16 a4, int a5, int a6, int a7) { int v7; // esi@1 int v8; // eax@1 int v9; // edi@1 int (__stdcall *v10)(int); // eax@3 int (*v11)(); // eax@8 int (*v12)(); // eax@11 int v13; // ebx@13 int v14; // eax@14 int v15; // edi@14 int v16; // eax@14 int v17; // ecx@14 int v18; // eax@15 int v19; // eax@16 int v20; // ecx@19 int v21; // ecx@20 int v22; // ecx@21 int v23; // eax@23 __int16 v24; // ax@27 unsigned __int8 v25; // al@27 int (*v26)(); // eax@29 int (**v28)(); // [sp+10h] [bp-20h]@6 int v29; // [sp+14h] [bp-1Ch]@6 int v30; // [sp+18h] [bp-18h]@6 int v31; // [sp+1Ch] [bp-14h]@6 int v32; // [sp+20h] [bp-10h]@15 int v33; // [sp+2Ch] [bp-4h]@6 int v34; // [sp+4Ch] [bp+1Ch]@14 v7 = a3; *(_BYTE *)a2 = 0; v8 = a7; v9 = 0; if ( !a7 ) { v10 = (int (__stdcall *)(int))(a4 < 0x11u ? dword_1508B2C0[a4] : sub_452C70); v8 = v10(this); if ( !v8 ) return 0; } v29 = v8; v28 = &off_6A86A4; v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 8))(v8); v28 = (int (**)())&off_6A86AC; v33 = 0; v30 = 0; if ( !(unsigned __int8)off_6A86AC(&v28) ) { while ( v30 < v31 - 1 ) { v11 = *v28; ++v30; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v11)(&v28) ) goto LABEL_9; } return 0; } LABEL_9: if ( *(_DWORD *)a5 > 0 ) { while ( v30 < v31 - 1 ) { v12 = *v28; ++v30; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v12)(&v28) ) { ++v9; if ( v9 >= *(_DWORD *)a5 ) goto LABEL_13; } } return 0; } LABEL_13: v13 = 0; LABEL_14: v14 = (**(int (__stdcall ***)(_DWORD))v29)(v30); v15 = v14; v16 = *(_WORD *)(v14 + 8); v17 = (unsigned __int16)v16; v34 = v16; if ( (unsigned __int16)v16 >= (unsigned int)dword_14D20894 || (v18 = dword_14D21184 + 40 * (unsigned __int16)v16, (v32 = v18) == 0) || (v19 = *(_DWORD *)v18) == 0 ) return 0; if ( !(*(_WORD *)v19 == (_WORD)v17) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v32 + 10000 * v17); return 0; } if ( (unsigned __int16)v34 < (unsigned int)dword_14D20894 ) { v20 = dword_14D21184 + 40 * (unsigned __int16)v34; v32 = v20; if ( v20 ) { v21 = *(_DWORD *)v20; if ( v21 ) { v22 = *(_WORD *)v21; if ( (_WORD)v22 == (_WORD)v34 ) { v23 = v32; goto LABEL_24; } sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v22 + 10000 * (unsigned __int16)v34); } } } v23 = 0; LABEL_24: if ( *(_DWORD *)v23 == 0 ) { sub_639100( &unk_86DDD8, (int)"CharacterInventory::ci_FillBufferInventoryItem : Invalid ItemID found", *(_WORD *)(v15 + 8)); goto LABEL_28; } v24 = (a4 << 10) | *(_WORD *)(v7 + 1) & 0x3FF; *(_WORD *)(v7 + 1) = v24; *(_WORD *)(v7 + 1) = v24 ^ (v30 ^ v24) & 0x3FF; v25 = 2 - (v7 + 3) + sub_63D090((void *)v15, *(_DWORD *)(v15 + 112), *(_WORD *)(v15 + 8), v7 + 3); *(_BYTE *)v7 = v25; v7 += v25 + 1; ++*(_BYTE *)a2; ++*(_DWORD *)a5; v13 = v7 - a3; if ( v7 - a3 < a6 ) { LABEL_28: while ( v30 < v31 - 1 ) { v26 = *v28; ++v30; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v26)(&v28) ) goto LABEL_14; } } return v13; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; // 1508B2C0: using guessed type int dword_1508B2C0[]; //----- (00640920) -------------------------------------------------------- int __thiscall sub_640920(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 int (__stdcall *v5)(int); // eax@3 int v6; // eax@5 int (*v7)(); // eax@8 int v8; // eax@9 int v9; // ebx@9 int v10; // eax@9 __int16 v11; // di@9 int v12; // ecx@10 int v13; // ecx@11 int v14; // ecx@12 int v15; // eax@12 int v16; // eax@14 int v17; // eax@16 int v18; // edx@17 int v19; // ecx@19 int v20; // eax@21 __int16 v21; // ax@26 unsigned __int8 v22; // al@26 int (*v23)(); // eax@28 int (**v25)(); // [sp+10h] [bp-28h]@6 int v26; // [sp+14h] [bp-24h]@6 int v27; // [sp+18h] [bp-20h]@6 int v28; // [sp+1Ch] [bp-1Ch]@6 int v29; // [sp+20h] [bp-18h]@9 int v30; // [sp+24h] [bp-14h]@1 int v31; // [sp+28h] [bp-10h]@1 int v32; // [sp+34h] [bp-4h]@6 v30 = (int)this; v3 = a3; v4 = 0; *(_BYTE *)a2 = 0; v31 = 0; do { if ( (unsigned __int16)v4 < 0x11u ) v5 = (int (__stdcall *)(int))dword_1508B2C0[(unsigned __int16)v4]; else v5 = sub_452C70; v6 = v5(v30); if ( v6 ) { v26 = v6; v25 = &off_6A86A4; v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 8))(v6); v25 = (int (**)())&off_6A86AC; v32 = 0; v27 = 0; if ( !(unsigned __int8)off_6A86AC(&v25) ) { while ( v27 < v28 - 1 ) { v7 = *v25; ++v27; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v7)(&v25) ) goto LABEL_9; } v25 = &off_6A86A4; goto LABEL_31; } LABEL_9: v8 = (**(int (__stdcall ***)(_DWORD))v26)(v27); v9 = v8; v10 = *(_WORD *)(v8 + 8); v11 = v10; v29 = v10; if ( (unsigned __int16)v10 >= (unsigned int)dword_14D20894 || (v12 = dword_14D21184 + 40 * (unsigned __int16)v10) == 0 || (v13 = *(_DWORD *)v12) == 0 ) goto LABEL_14; v14 = *(_WORD *)v13; v15 = v14 + 10000 * (unsigned __int16)v10; if ( (_WORD)v14 != v11 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v15); LABEL_14: v16 = 0; LABEL_23: if ( v16 != 0 ) { v21 = ((_WORD)v31 << 10) | *(_WORD *)(v3 + 1) & 0x3FF; *(_WORD *)(v3 + 1) = v21; *(_WORD *)(v3 + 1) = v21 ^ (v27 ^ v21) & 0x3FF; v22 = sub_63D090((void *)v9, *(_DWORD *)(v9 + 112), *(_WORD *)(v9 + 8), v3 + 3) - (v3 + 3) + 2; *(_BYTE *)v3 = v22; v3 += v22 + 1; ++*(_BYTE *)a2; } else { sub_639100( &unk_86DDD8, (int)"CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( v27 < v28 - 1 ) { v23 = *v25; ++v27; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v23)(&v25) ) goto LABEL_9; } v4 = v31; v25 = &off_6A86A4; LABEL_31: v32 = -1; goto LABEL_32; } v17 = (unsigned __int16)v29; v29 = v17; if ( (unsigned __int16)v17 < (unsigned int)dword_14D20894 ) { v18 = dword_14D21184 + 40 * (unsigned __int16)v17; if ( v18 ) { if ( *(_DWORD *)v18 ) { v19 = **(_WORD **)v18; if ( (_WORD)v19 == (_WORD)v29 ) { v20 = dword_14D21184 + 40 * (unsigned __int16)v17; goto LABEL_22; } sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", 10000 * (unsigned __int16)v17 + v19); } } } v20 = 0; LABEL_22: v16 = *(_DWORD *)v20; goto LABEL_23; } LABEL_32: ++v4; v31 = v4; } while ( v4 < 17 ); return v3 - a3; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; // 1508B2C0: using guessed type int dword_1508B2C0[]; //----- (00640B70) -------------------------------------------------------- signed int __thiscall sub_640B70(int this, int a2, int a3, unsigned __int16 a4, int a5, int a6) { int v6; // esi@1 int (__stdcall *v7)(int); // eax@2 int v8; // eax@4 int v9; // edi@4 int (*v11)(); // eax@8 int (*v12)(); // eax@11 int v13; // ebx@13 int v14; // eax@14 int v15; // edi@14 int v16; // eax@14 int v17; // ecx@14 int v18; // eax@15 int v19; // eax@16 int v20; // eax@18 int v21; // ecx@19 int v22; // ecx@20 int v23; // ecx@21 int v24; // eax@23 __int16 v25; // ax@27 unsigned __int8 v26; // al@27 int (*v27)(); // eax@29 int (**v28)(); // [sp+10h] [bp-24h]@6 int v29; // [sp+14h] [bp-20h]@6 int v30; // [sp+18h] [bp-1Ch]@6 int v31; // [sp+1Ch] [bp-18h]@6 int v32; // [sp+20h] [bp-14h]@15 int v33; // [sp+24h] [bp-10h]@14 int v34; // [sp+30h] [bp-4h]@6 v6 = a3; *(_BYTE *)a2 = 0; if ( a4 < 0x11u ) v7 = (int (__stdcall *)(int))dword_1508B2C0[a4]; else v7 = sub_452C70; v8 = v7(this); v9 = 0; if ( !v8 ) return 0; v29 = v8; v28 = &off_6A86A4; v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 8))(v8); v28 = (int (**)())&off_6A86AC; v34 = 0; v30 = 0; if ( !(unsigned __int8)off_6A86AC(&v28) ) { while ( v30 < v31 - 1 ) { v11 = *v28; ++v30; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v11)(&v28) ) goto LABEL_9; } return 0; } LABEL_9: if ( *(_DWORD *)a5 > 0 ) { while ( v30 < v31 - 1 ) { v12 = *v28; ++v30; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v12)(&v28) ) { ++v9; if ( v9 >= *(_DWORD *)a5 ) goto LABEL_13; } } return 0; } LABEL_13: v13 = 0; LABEL_14: v14 = (**(int (__stdcall ***)(_DWORD))v29)(v30); v15 = v14; v16 = *(_WORD *)(v14 + 8); v17 = (unsigned __int16)v16; v33 = v16; if ( (unsigned __int16)v16 >= (unsigned int)dword_14D20894 || (v18 = dword_14D21184 + 40 * (unsigned __int16)v16, (v32 = v18) == 0) || (v19 = *(_DWORD *)v18) == 0 ) return -1; if ( !(*(_WORD *)v19 == (_WORD)v17) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v32 + 10000 * v17); return -1; } v20 = (unsigned __int16)v33; v33 = v20; if ( (unsigned __int16)v20 < (unsigned int)dword_14D20894 ) { v21 = dword_14D21184 + 40 * (unsigned __int16)v20; v32 = v21; if ( v21 ) { v22 = *(_DWORD *)v21; if ( v22 ) { v23 = *(_WORD *)v22; if ( (_WORD)v23 == (_WORD)v33 ) { v24 = v32; goto LABEL_24; } sub_639100( &unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v23 + 10000 * (unsigned __int16)v20); } } } v24 = 0; LABEL_24: if ( *(_DWORD *)v24 == 0 ) { sub_639100( &unk_86DDD8, (int)"CharacterInventory::ci_FillBufferInventoryTotal : Invalid ItemID found", *(_WORD *)(v15 + 8)); goto LABEL_28; } v25 = (a4 << 10) | *(_WORD *)(v6 + 1) & 0x3FF; *(_WORD *)(v6 + 1) = v25; *(_WORD *)(v6 + 1) = v25 ^ (v30 ^ v25) & 0x3FF; v26 = 2 - (v6 + 3) + sub_63D1A0(v15, *(_DWORD *)(v15 + 112), *(_WORD *)(v15 + 8), v6 + 3); *(_BYTE *)v6 = v26; v6 += v26 + 1; ++*(_BYTE *)a2; ++*(_DWORD *)a5; v13 = v6 - a3; if ( v6 - a3 < a6 ) { LABEL_28: while ( v30 < v31 - 1 ) { v27 = *v28; ++v30; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v27)(&v28) ) goto LABEL_14; } } return v13; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; // 1508B2C0: using guessed type int dword_1508B2C0[]; //----- (00640E00) -------------------------------------------------------- int __thiscall sub_640E00(void *this, int a2, int a3) { int v3; // esi@1 signed int v4; // edi@1 int (__stdcall *v5)(int); // eax@3 int v6; // eax@5 int (*v7)(); // eax@8 int v8; // eax@9 int v9; // edi@9 int v10; // eax@9 int v11; // edx@10 int v12; // ecx@12 int v13; // eax@12 int v14; // eax@14 __int16 v15; // ax@19 unsigned __int8 v16; // al@19 int (*v17)(); // eax@21 int (**v19)(); // [sp+10h] [bp-28h]@6 int v20; // [sp+14h] [bp-24h]@6 int v21; // [sp+18h] [bp-20h]@6 int v22; // [sp+1Ch] [bp-1Ch]@6 int v23; // [sp+20h] [bp-18h]@9 int v24; // [sp+24h] [bp-14h]@1 int v25; // [sp+28h] [bp-10h]@1 int v26; // [sp+34h] [bp-4h]@6 v24 = (int)this; v3 = a3; v4 = 0; *(_BYTE *)a2 = 0; v25 = 0; do { if ( (unsigned __int16)v4 < 0x11u ) v5 = (int (__stdcall *)(int))dword_1508B2C0[(unsigned __int16)v4]; else v5 = sub_452C70; v6 = v5(v24); if ( v6 ) { v20 = v6; v19 = &off_6A86A4; v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 8))(v6); v19 = (int (**)())&off_6A86AC; v26 = 0; v21 = 0; if ( !(unsigned __int8)off_6A86AC(&v19) ) { while ( v21 < v22 - 1 ) { v7 = *v19; ++v21; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v7)(&v19) ) goto LABEL_9; } v19 = &off_6A86A4; goto LABEL_24; } LABEL_9: v8 = (**(int (__stdcall ***)(_DWORD))v20)(v21); v9 = v8; v10 = *(_WORD *)(v8 + 8); v23 = v10; if ( (unsigned __int16)v10 < (unsigned int)dword_14D20894 ) { v11 = dword_14D21184 + 40 * (unsigned __int16)v10; if ( v11 ) { if ( *(_DWORD *)v11 ) { v12 = **(_WORD **)v11; v13 = v12 + 10000 * (unsigned __int16)v10; if ( (_WORD)v12 == (_WORD)v23 ) { v14 = v11; goto LABEL_15; } sub_639100(&unk_86DDD8, (int)"ItemDataBox::operator [] :Invalid Item index", v13); } } } v14 = 0; LABEL_15: if ( *(_DWORD *)v14 != 0 ) { v15 = ((_WORD)v25 << 10) | *(_WORD *)(v3 + 1) & 0x3FF; *(_WORD *)(v3 + 1) = v15; *(_WORD *)(v3 + 1) = v15 ^ (v21 ^ v15) & 0x3FF; v16 = sub_63D1A0(v9, *(_DWORD *)(v9 + 112), *(_WORD *)(v9 + 8), v3 + 3) - (v3 + 3) + 2; *(_BYTE *)v3 = v16; v3 += v16 + 1; ++*(_BYTE *)a2; } else { sub_639100( &unk_86DDD8, (int)"CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( v21 < v22 - 1 ) { v17 = *v19; ++v21; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v17)(&v19) ) goto LABEL_9; } v4 = v25; v19 = &off_6A86A4; LABEL_24: v26 = -1; } ++v4; v25 = v4; } while ( v4 < 17 ); return v3 - a3; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); // 14D20894: using guessed type int dword_14D20894; // 14D21184: using guessed type int dword_14D21184; // 1508B2C0: using guessed type int dword_1508B2C0[]; //----- (00641000) -------------------------------------------------------- int __thiscall sub_641000(void *this) { int (*v1)(); // eax@3 char v2; // al@4 int result; // eax@6 int v4; // eax@9 int v5; // esi@9 int v6; // edi@9 int (*v7)(); // eax@11 int (**v8)(); // [sp+Ch] [bp-1Ch]@1 void *v9; // [sp+10h] [bp-18h]@1 int v10; // [sp+14h] [bp-14h]@1 int v11; // [sp+18h] [bp-10h]@1 int v12; // [sp+24h] [bp-4h]@1 v8 = &off_6A86A4; v9 = this; v11 = (*(int (**)(void))(*(_DWORD *)this + 8))(); v12 = 0; v10 = 0; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))off_6A86A4)(&v8) ) { LABEL_4: v2 = 1; } else { while ( v10 < v11 - 1 ) { v1 = *v8; ++v10; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v1)(&v8) ) goto LABEL_4; } v2 = 0; } if ( v2 ) { LABEL_9: v4 = (**(int (__stdcall ***)(_DWORD))v9)(v10); v5 = v4; v6 = v4 + 8; *(_DWORD *)v4 = -1; *(_DWORD *)(v4 + 4) = -1; memset((void *)(v4 + 8), 0, 0x67u); result = 65535; *(_WORD *)v6 = -1; *(_DWORD *)(v5 + 112) = dword_1508B168; while ( v10 < v11 - 1 ) { v7 = *v8; ++v10; result = ((int (__thiscall *)(int (***)()))v7)(&v8); if ( (_BYTE)result ) goto LABEL_9; } } else { result = (int)sub_639100(&unk_86DDD8, (int)"ItemBag::ib_clear : homefail", 0); } return result; } // 6A86A4: using guessed type int (*off_6A86A4)(); //----- (00641100) -------------------------------------------------------- int __thiscall sub_641100(int this) { int v1; // esi@1 int v2; // edi@1 v1 = this; v2 = this + 8; *(_DWORD *)this = -1; *(_DWORD *)(this + 4) = -1; memset((void *)(this + 8), 0, 0x67u); *(_WORD *)v2 = -1; *(_DWORD *)(v1 + 112) = dword_1508B168; return v1; } //----- (00641130) -------------------------------------------------------- int __thiscall sub_641130(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_7068E4; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 144, (int)sub_641100, nullsub_2); return v1; } // 7068E4: using guessed type int (__stdcall *off_7068E4[2])(int); //----- (006411A0) -------------------------------------------------------- int __thiscall sub_6411A0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_7068F8; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 30, (int)sub_641100, nullsub_2); return v1; } // 7068F8: using guessed type int (__stdcall *off_7068F8[2])(int); //----- (00641200) -------------------------------------------------------- int __thiscall sub_641200(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_70690C; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 5, (int)sub_641100, nullsub_2); return v1; } // 70690C: using guessed type int (__stdcall *off_70690C[2])(int); //----- (00641260) -------------------------------------------------------- int __thiscall sub_641260(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_706920; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 576, (int)sub_641100, nullsub_2); return v1; } // 706920: using guessed type int (__stdcall *off_706920[2])(int); //----- (006412D0) -------------------------------------------------------- int __thiscall sub_6412D0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_706934; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 35, (int)sub_641100, nullsub_2); return v1; } // 706934: using guessed type int (__stdcall *off_706934[2])(int); //----- (00641330) -------------------------------------------------------- int __thiscall sub_641330(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_706948; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 36, (int)sub_641100, nullsub_2); return v1; } // 706948: using guessed type int (__stdcall *off_706948[2])(int); //----- (00641390) -------------------------------------------------------- int __thiscall sub_641390(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_70695C; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 72, (int)sub_641100, nullsub_2); return v1; } // 70695C: using guessed type int (__stdcall *off_70695C[2])(int); //----- (006413F0) -------------------------------------------------------- int __thiscall sub_6413F0(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_706970; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 98, (int)sub_641100, nullsub_2); return v1; } // 706970: using guessed type int (__stdcall *off_706970[2])(int); //----- (00641450) -------------------------------------------------------- int __thiscall sub_641450(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_706B6C; _eh_vector_constructor_iterator_((void *)(this + 4), 0x14u, 42, (int)sub_5CF620, nullsub_2); return v1; } // 706B6C: using guessed type int (__stdcall *off_706B6C[2])(int); //----- (006414B0) -------------------------------------------------------- signed int __stdcall sub_6414B0(int a1) { return 42; } //----- (006414C0) -------------------------------------------------------- signed int __cdecl sub_6414C0() { return 42; } //----- (006414D0) -------------------------------------------------------- int __thiscall sub_6414D0(void *this, int a2) { void *v2; // esi@1 int result; // eax@2 v2 = this; if ( a2 >= (*(int (**)(void))(*(_DWORD *)this + 8))() ) { word_1508B2B0 = -1; dword_1508B2B8 = (int)dword_1508B168; result = (int)&unk_1508B2A8; } else { result = (int)((char *)v2 + 20 * a2 + 4); } return result; } // 1508B2B0: using guessed type __int16 word_1508B2B0; // 1508B2B8: using guessed type int dword_1508B2B8; //----- (00641510) -------------------------------------------------------- int __thiscall sub_641510(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; *(_DWORD *)this = off_706B6C; result = _LN21((void *)(this + 4), 0x14u, 42, nullsub_2); *(_DWORD *)v1 = off_7069D8; return result; } // 7069D8: using guessed type int (*off_7069D8[3])(); // 706B6C: using guessed type int (__stdcall *off_706B6C[2])(int); //----- (00641570) -------------------------------------------------------- int __thiscall sub_641570(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = off_706984; _eh_vector_constructor_iterator_((void *)(this + 4), 0x74u, 24, (int)sub_641100, nullsub_2); return v1; } // 706984: using guessed type int (__stdcall *off_706984[2])(int); //----- (006415D0) -------------------------------------------------------- int __thiscall sub_6415D0(void *this, int a2, int a3) { int v3; // esi@1 int (*v4)(); // eax@3 int v5; // eax@4 __int16 v6; // dx@5 unsigned __int8 v7; // al@5 int (*v8)(); // eax@7 int (**v10)(); // [sp+10h] [bp-1Ch]@1 void *v11; // [sp+14h] [bp-18h]@1 int v12; // [sp+18h] [bp-14h]@1 int v13; // [sp+1Ch] [bp-10h]@1 int v14; // [sp+28h] [bp-4h]@1 v3 = a3; *(_BYTE *)a2 = 0; v10 = &off_6A86A4; v11 = this; v13 = (*(int (**)(void))(*(_DWORD *)this + 8))(); v10 = (int (**)())&off_6A86AC; v14 = 0; v12 = 0; if ( (unsigned __int8)off_6A86AC(&v10) ) { LABEL_4: v5 = (**(int (__stdcall ***)(_DWORD))v11)(v12); if ( v5 ) { v6 = *(_WORD *)(v3 + 1) & 0x3FF | 0x800; *(_WORD *)(v3 + 1) = v6; *(_WORD *)(v3 + 1) = v6 ^ (v12 ^ v6) & 0x3FF; v7 = 2 - (v3 + 3) + sub_63D090((void *)v5, *(_DWORD *)(v5 + 112), *(_WORD *)(v5 + 8), v3 + 3); *(_BYTE *)v3 = v7; ++*(_BYTE *)a2; v3 += v7 + 1; while ( v12 < v13 - 1 ) { v8 = *v10; ++v12; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v8)(&v10) ) goto LABEL_4; } } } else { while ( v12 < v13 - 1 ) { v4 = *v10; ++v12; if ( (unsigned __int8)((int (__thiscall *)(int (***)()))v4)(&v10) ) goto LABEL_4; } } return v3 - a2; } // 6A86A4: using guessed type int (*off_6A86A4)(); // 6A86AC: using guessed type int (__thiscall *off_6A86AC)(_DWORD); //----- (006416F0) -------------------------------------------------------- void *__thiscall sub_6416F0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 286, 52) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 286, 286, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (006417A0) -------------------------------------------------------- void *__thiscall sub_6417A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_706B7C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 706B7C: using guessed type int (__thiscall *off_706B7C)(void *, char); //----- (006417D0) -------------------------------------------------------- void *__thiscall sub_6417D0(void *this) { return sub_6416F0(this, "../9Data/Shine/MobResist.shn"); } //----- (006417E0) -------------------------------------------------------- int __thiscall sub_6417E0(int this, unsigned __int16 a2) { signed int v2; // edx@1 int result; // eax@2 v2 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); if ( a2 < v2 ) { if ( a2 < (unsigned int)v2 ) result = sub_626BC0(this, a2); else result = this + 64; } else { result = 0; } return result; } //----- (00641810) -------------------------------------------------------- signed __int16 __thiscall sub_641810(int this, int a2) { int v2; // edi@1 unsigned int v3; // eax@1 unsigned int v4; // esi@1 bool v5; // cf@2 const char *v6; // eax@4 unsigned int v7; // eax@7 signed __int16 result; // ax@8 v2 = this; v3 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); v4 = 0; if ( (signed int)v3 <= 0 ) { LABEL_8: sub_6390B0(&unk_86DDD8, (int)"MobResistTable::operator [] : Invalid index", a2); loc_6391B0("MobResistTable::operator []"); result = -1; } else { v5 = v3 > 0; while ( 1 ) { v6 = (const char *)(v5 ? sub_626BC0(v2, v4) : v2 + 64); if ( !strcmp(v6, (const char *)a2) ) break; v7 = *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40); ++v4; v5 = v4 < v7; if ( (signed int)v4 >= (signed int)v7 ) goto LABEL_8; } result = v4; } return result; } //----- (006418B0) -------------------------------------------------------- int __thiscall sub_6418B0(void *this, int a2) { int result; // eax@2 if ( a2 ) { if ( *(_DWORD *)(a2 + 98) != 3 ) { switch ( *(_DWORD *)(a2 + 118) ) { case 1: return *((_DWORD *)this + 1); case 0: return *(_DWORD *)this; case 2: case 5: return *((_DWORD *)this + 2); case 3: return *((_DWORD *)this + 3); case 4: break; default: sub_639100(&unk_86DDD8, (int)"CLooting::GetItemLootingTypeConVert undefine GradeType ", *(_DWORD *)(a2 + 131)); break; } } result = 0; } else { sub_639100(&unk_86DDD8, (int)"CLooting::GetItemLootingTypeConVert Paramater NULL ", 0); result = 0; } return result; } //----- (00641940) -------------------------------------------------------- char __thiscall sub_641940(void *this, signed int a2, int a3) { char result; // al@2 if ( a2 < 4 ) { if ( a3 < 4 ) { if ( a2 > 0 ) memset(this, 0, 4 * a2); if ( a2 < 4 ) memset32((char *)this + 4 * a2, a3, 4 - a2); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (00641990) -------------------------------------------------------- int __thiscall sub_641990(int this) { int result; // eax@1 result = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = -1; return result; } //----- (006419B0) -------------------------------------------------------- int __thiscall sub_6419B0(int this) { return *(_DWORD *)(this + 16); } //----- (006419C0) -------------------------------------------------------- int __thiscall sub_6419C0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 16) = a2; return result; } //----- (006419D0) -------------------------------------------------------- signed __int16 __thiscall sub_6419D0(int this) { signed int v1; // esi@1 int v2; // esi@3 int v3; // ebx@3 signed int v4; // edi@3 v1 = *(_DWORD *)(this + 8); if ( v1 >= 4000 ) v1 -= 4000; v2 = v1 + ((char)-(v1 < 0) & 0xFA0); v3 = *(_DWORD *)this; v4 = 0; while ( *(_BYTE *)(208 * v2 + v3 + 205) == 1 || *(_BYTE *)(208 * v2 + v3) ) { ++v4; v2 = (v2 + 1) % -4000; if ( v4 >= 4000 ) return -1; } *(_DWORD *)(this + 8) = (v2 + 1) % 4000; return v2; } //----- (00641A70) -------------------------------------------------------- int __userpurge sub_641A70(int result, int a2, unsigned __int16 a3) { int v3; // edx@2 LOWORD(result) = a3; if ( a3 < 0xFA0u ) { v3 = *(_DWORD *)a2; result = 208 * a3; if ( *(_BYTE *)(*(_DWORD *)a2 + result) || *(_BYTE *)(v3 + result + 205) == 1 ) { *(_BYTE *)(v3 + result) = 0; *(_BYTE *)(result + *(_DWORD *)a2 + 205) = 0; --*(_DWORD *)(a2 + 4); } } return result; } //----- (00641AC0) -------------------------------------------------------- signed int __thiscall sub_641AC0(void *this, int a2) { int v2; // edi@1 int v3; // edx@1 signed int result; // eax@1 int v5; // esi@4 int v6; // ecx@4 int v7; // [sp+Ch] [bp-4h]@1 v2 = *(_DWORD *)this; v3 = *(_DWORD *)this + 4; result = 0; v7 = *(_DWORD *)this + 4; while ( 1 ) { if ( *(_BYTE *)(v3 + 201) == 1 || *(_BYTE *)v2 ) { v5 = *(_BYTE *)v2; v6 = 0; if ( v5 > 0 ) break; } LABEL_8: ++result; v3 += 208; v2 += 208; v7 = v3; if ( result >= 4000 ) return 65535; } while ( *(_DWORD *)v3 != a2 ) { ++v6; v3 += 36; if ( v6 >= v5 ) { v3 = v7; goto LABEL_8; } } return result; } //----- (00641B30) -------------------------------------------------------- signed int __thiscall sub_641B30(int this, int a2) { int v2; // esi@1 int v3; // edx@1 signed int result; // eax@1 int v5; // ecx@4 int v6; // eax@4 v2 = this; v3 = (unsigned __int16)sub_6419D0(this); result = 65535; if ( (_WORD)v3 != -1 ) { if ( (unsigned __int16)v3 < 0xFA0u ) { v5 = *(_DWORD *)v2; v6 = 208 * v3; if ( *(_BYTE *)(*(_DWORD *)v2 + 208 * v3 + 205) == 1 || *(_BYTE *)(v5 + v6) ) { result = 65532; } else { *(_BYTE *)(v5 + v6) = 0; *(_DWORD *)(v6 + *(_DWORD *)v2 + 4) = -1; *(_DWORD *)(v6 + *(_DWORD *)v2 + 40) = -1; *(_DWORD *)(v6 + *(_DWORD *)v2 + 76) = -1; *(_DWORD *)(v6 + *(_DWORD *)v2 + 112) = -1; *(_DWORD *)(v6 + *(_DWORD *)v2 + 148) = -1; *(_BYTE *)(v6 + *(_DWORD *)v2) = 0; *(_BYTE *)(v6 + *(_DWORD *)v2 + 205) = 1; ++*(_DWORD *)(v2 + 4); *(_WORD *)a2 = v3; result = 65528; } } else { result = 65529; } } return result; } //----- (00641BE0) -------------------------------------------------------- signed int __thiscall sub_641BE0(void *this, unsigned __int16 a2, int a3) { signed int result; // eax@2 int v4; // edx@3 signed int v5; // ecx@3 int v6; // edx@4 if ( a2 < 0xFA0u ) { v4 = *(_DWORD *)this + 208 * a2; v5 = *(_BYTE *)v4; result = 0; if ( v5 <= 0 ) { LABEL_7: result = -2; } else { v6 = v4 + 4; while ( *(_DWORD *)v6 != a3 ) { ++result; v6 += 36; if ( result >= v5 ) goto LABEL_7; } } } else { result = -1; } return result; } //----- (00641C30) -------------------------------------------------------- char __thiscall sub_641C30(void *this, unsigned __int16 a2) { char result; // al@2 if ( a2 < 0xFA0u ) result = *(_BYTE *)(208 * a2 + *(_DWORD *)this + 204); else result = 0; return result; } //----- (00641C60) -------------------------------------------------------- __int16 __thiscall sub_641C60(void *this, unsigned __int16 a2, char a3) { int v3; // eax@1 LOWORD(v3) = a2; if ( a2 < 0xFA0u ) { v3 = 208 * a2; *(_BYTE *)(v3 + *(_DWORD *)this + 204) = a3; } return v3; } //----- (00641C90) -------------------------------------------------------- int __cdecl sub_641C90() { return (int)byte_1508B380; } //----- (00641CA0) -------------------------------------------------------- int __thiscall sub_641CA0(void *this, unsigned __int16 a2) { int result; // eax@2 if ( a2 < 0xFA0u ) result = *(_DWORD *)this + 208 * a2; else result = (int)byte_1508B380; return result; } //----- (00641CD0) -------------------------------------------------------- int __thiscall sub_641CD0(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = -1; return result; } //----- (00641CF0) -------------------------------------------------------- int __thiscall sub_641CF0(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); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); *(_BYTE *)(this + 29) = *(_BYTE *)(a2 + 29); *(_BYTE *)(this + 30) = *(_BYTE *)(a2 + 30); *(_BYTE *)(this + 31) = *(_BYTE *)(a2 + 31); return result; } //----- (00641D50) -------------------------------------------------------- unsigned __int16 __thiscall sub_641D50(void *this, unsigned __int16 a2, int a3) { unsigned __int16 result; // ax@2 int v4; // ebx@3 int v5; // esi@3 unsigned __int8 v6; // al@6 int v7; // edi@8 int v8; // eax@8 int v9; // ecx@9 void *v10; // [sp+0h] [bp-4h]@1 v10 = this; if ( a2 < 0xFA0u ) { v4 = *(_DWORD *)this; v5 = 208 * a2; if ( *(_BYTE *)(*(_DWORD *)this + v5 + 205) == 1 || *(_BYTE *)(v4 + v5) ) { v6 = *(_BYTE *)(v4 + v5); if ( v6 < 5u ) { v7 = v6; v8 = 0; if ( v7 <= 0 ) { LABEL_13: if ( (unsigned __int16)sub_641AC0(this, *(_DWORD *)a3) == -1 ) { sub_641CF0(v4 + 36 * v7 + v5 + 4, a3); ++*(_BYTE *)(*(_DWORD *)v10 + v5); result = a2; } else { result = -2; } } else { v9 = v4 + v5 + 4; while ( *(_DWORD *)v9 != *(_DWORD *)a3 ) { ++v8; v9 += 36; if ( v8 >= v7 ) { this = v10; goto LABEL_13; } } result = -3; } } else { result = -5; } } else { result = -6; } } else { result = -7; } return result; } //----- (00641E30) -------------------------------------------------------- int __thiscall sub_641E30(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); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); *(_BYTE *)(this + 29) = *(_BYTE *)(a2 + 29); *(_BYTE *)(this + 30) = *(_BYTE *)(a2 + 30); *(_BYTE *)(this + 31) = *(_BYTE *)(a2 + 31); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); return result; } //----- (00641E90) -------------------------------------------------------- unsigned __int16 __thiscall sub_641E90(int this, int a2, int a3, signed __int16 a4) { signed __int16 v4; // bx@1 int v5; // esi@1 unsigned __int16 result; // ax@3 unsigned __int16 v7; // ax@4 int v8; // edi@10 int v9; // eax@10 v4 = a4; v5 = this; if ( (unsigned __int16)a4 < 0xFA0u || (v4 = sub_6419D0(this), v4 != -1) ) { v7 = sub_641AC0((void *)v5, *(_DWORD *)a2); if ( v7 == -1 ) { if ( (unsigned __int16)sub_641AC0((void *)v5, *(_DWORD *)a3) == -1 ) { v8 = 208 * (unsigned __int16)v4; *(_BYTE *)(v8 + *(_DWORD *)v5) = 2; sub_641CF0(v8 + *(_DWORD *)v5 + 4, a2); sub_641CF0(v8 + *(_DWORD *)v5 + 40, a3); *(_DWORD *)(v8 + *(_DWORD *)v5 + 76) = -1; *(_DWORD *)(v8 + *(_DWORD *)v5 + 112) = -1; *(_DWORD *)(v8 + *(_DWORD *)v5 + 148) = -1; ++*(_DWORD *)(v5 + 4); v9 = v8 + *(_DWORD *)v5 + 184; *(_DWORD *)v9 = 0; *(_DWORD *)(v9 + 4) = 0; *(_DWORD *)(v9 + 8) = 0; *(_DWORD *)(v9 + 12) = 0; *(_DWORD *)(v9 + 16) = -1; *(_DWORD *)(v8 + *(_DWORD *)v5 + 200) = *(_DWORD *)a2; result = v4; } else { result = -2; } } else { if ( v7 == v4 ) result = sub_641D50((void *)v5, v7, a3); else result = -7; } } else { result = -1; } return result; } //----- (00641FA0) -------------------------------------------------------- signed int __thiscall sub_641FA0(void *this, unsigned __int16 a2, int a3) { void *v3; // esi@1 signed int result; // eax@2 int v5; // edx@3 int v6; // eax@3 int v7; // ebx@3 int v8; // edi@6 int v9; // eax@7 int v10; // ecx@13 int v11; // ecx@14 int v12; // eax@15 bool v13; // zf@15 int v14; // ecx@17 int v15; // [sp+Ch] [bp+8h]@14 v3 = this; if ( a2 < 0xFA0u ) { v5 = 208 * a2; v6 = v5 + *(_DWORD *)this; v7 = *(_BYTE *)v6; if ( *(_BYTE *)(v6 + 205) == 1 || *(_BYTE *)v6 ) { v8 = 0; if ( v7 <= 0 ) goto LABEL_24; v9 = v6 + 4; while ( *(_DWORD *)v9 != a3 ) { ++v8; v9 += 36; if ( v8 >= v7 ) return 3; } if ( v8 < v7 ) { v10 = v8; if ( v8 < v7 - 1 ) { v15 = v7 - 1 - v8; v11 = v5 + 36 * v8; do { v12 = v11 + *(_DWORD *)v3; *(_DWORD *)(v12 + 4) = *(_DWORD *)(*(_DWORD *)v3 + v11 + 40); *(_WORD *)(v12 + 8) = *(_WORD *)(v12 + 44); *(_WORD *)(v12 + 10) = *(_WORD *)(v12 + 46); *(_DWORD *)(v12 + 12) = *(_DWORD *)(v12 + 48); *(_DWORD *)(v12 + 16) = *(_DWORD *)(v12 + 52); *(_DWORD *)(v12 + 20) = *(_DWORD *)(v12 + 56); *(_DWORD *)(v12 + 24) = *(_DWORD *)(v12 + 60); *(_DWORD *)(v12 + 28) = *(_DWORD *)(v12 + 64); *(_BYTE *)(v12 + 32) = *(_BYTE *)(v12 + 68); *(_BYTE *)(v12 + 33) = *(_BYTE *)(v12 + 69); *(_BYTE *)(v12 + 34) = *(_BYTE *)(v12 + 70); *(_BYTE *)(v12 + 35) = *(_BYTE *)(v12 + 71); v11 += 36; v13 = v15-- == 1; *(_DWORD *)(v12 + 36) = *(_DWORD *)(v12 + 72); } while ( !v13 ); v10 = v7 - 1; } *(_DWORD *)(v5 + 4 * (9 * v10 + 9) + *(_DWORD *)v3) = 0; --*(_BYTE *)(*(_DWORD *)v3 + v5); *(_DWORD *)(*(_DWORD *)v3 + 36 * *(_BYTE *)(*(_DWORD *)v3 + v5) + v5 + 4) = -1; v14 = *(_DWORD *)v3; if ( *(_BYTE *)(v5 + *(_DWORD *)v3 + 205) == 1 ) { result = 0; } else { if ( *(_BYTE *)(v5 + v14) > 1u ) { result = v8 == 0; } else { *(_BYTE *)(v5 + v14) = 0; --*((_DWORD *)v3 + 1); result = 2; } } } else { LABEL_24: result = 3; } } else { result = 4; } } else { result = 4; } return result; } //----- (00642100) -------------------------------------------------------- signed int __thiscall sub_642100(void *this, unsigned __int16 a2, int a3) { signed int result; // eax@2 int v4; // edx@3 int v5; // eax@3 int v6; // ecx@3 int v7; // ebx@3 int v8; // eax@4 int v9; // esi@4 int v10; // ecx@11 int v11; // eax@11 int v12; // edx@11 int v13; // ecx@11 int v14; // edx@11 int v15; // ecx@11 int v16; // edx@11 unsigned int v17; // ecx@11 unsigned int v18; // edx@11 int v19; // ecx@11 int v20; // [sp+0h] [bp-28h]@11 int v21; // [sp+4h] [bp-24h]@11 int v22; // [sp+8h] [bp-20h]@11 int v23; // [sp+Ch] [bp-1Ch]@11 int v24; // [sp+10h] [bp-18h]@11 int v25; // [sp+14h] [bp-14h]@11 int v26; // [sp+18h] [bp-10h]@11 unsigned int v27; // [sp+1Ch] [bp-Ch]@11 int v28; // [sp+20h] [bp-8h]@11 void *v29; // [sp+24h] [bp-4h]@1 int v30; // [sp+30h] [bp+8h]@3 v29 = this; if ( a2 < 0xFA0u ) { v4 = *(_DWORD *)this; v5 = 208 * a2; v6 = *(_BYTE *)(*(_DWORD *)this + v5); v7 = 0; v30 = 208 * a2; if ( v6 <= 0 ) goto LABEL_9; v8 = v4 + v5 + 4; v9 = v8; while ( *(_DWORD *)v9 != a3 ) { ++v7; v9 += 36; if ( v7 >= v6 ) goto LABEL_9; } if ( v7 < v6 ) { if ( v7 ) { memcpy(&v20, (const void *)v8, 0x24u); v10 = v30 + 36 * v7; *(_DWORD *)v8 = *(_DWORD *)(v10 + v4 + 4); *(_WORD *)(v8 + 4) = *(_WORD *)(v10 + v4 + 8); *(_WORD *)(v8 + 6) = *(_WORD *)(v10 + v4 + 10); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v10 + v4 + 12); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v10 + v4 + 16); *(_DWORD *)(v8 + 16) = *(_DWORD *)(v10 + v4 + 20); *(_DWORD *)(v8 + 20) = *(_DWORD *)(v10 + v4 + 24); *(_DWORD *)(v8 + 24) = *(_DWORD *)(v10 + v4 + 28); *(_BYTE *)(v8 + 28) = *(_BYTE *)(v10 + v4 + 32); *(_BYTE *)(v8 + 29) = *(_BYTE *)(v10 + v4 + 33); *(_BYTE *)(v8 + 30) = *(_BYTE *)(v10 + v4 + 34); *(_BYTE *)(v8 + 31) = *(_BYTE *)(v10 + v4 + 35); *(_DWORD *)(v8 + 32) = *(_DWORD *)(v10 + v4 + 36); v11 = v10 + *(_DWORD *)v29 + 4; v12 = v22; *(_DWORD *)v11 = v20; HIWORD(v10) = HIWORD(v21); *(_WORD *)(v11 + 4) = v21; *(_WORD *)(v11 + 6) = HIWORD(v10); v13 = v23; *(_DWORD *)(v11 + 8) = v12; v14 = v24; *(_DWORD *)(v11 + 12) = v13; v15 = v25; *(_DWORD *)(v11 + 16) = v14; v16 = v26; *(_DWORD *)(v11 + 20) = v15; v17 = v27; *(_DWORD *)(v11 + 24) = v16; *(_BYTE *)(v11 + 29) = BYTE1(v17); *(_BYTE *)(v11 + 28) = v17; v18 = v17 >> 16; *(_BYTE *)(v11 + 31) = BYTE3(v17); v19 = v28; *(_BYTE *)(v11 + 30) = v18; *(_DWORD *)(v11 + 32) = v19; } result = 1; } else { LABEL_9: sub_64BC90(1, "Msg", "%s", &unk_706C58); result = 0; } } else { result = 0; } return result; } //----- (00642270) -------------------------------------------------------- char __thiscall sub_642270(void *this, unsigned __int16 a2, unsigned int a3, unsigned __int16 a4, unsigned int a5) { char result; // al@2 int v6; // eax@6 int v7; // edx@6 unsigned int v8; // esi@6 char v9; // [sp+4h] [bp-28h]@6 void *v10; // [sp+28h] [bp-4h]@1 v10 = this; if ( a2 >= 0xFA0u || a4 >= 0xFA0u || a3 > 4 ) { result = 0; } else { if ( a5 > 4 ) { result = 0; } else { v6 = *(_DWORD *)this; v7 = *(_DWORD *)this + 208 * a2 + 36 * a3 + 4; memcpy(&v9, (const void *)v7, 0x24u); v8 = 208 * a4 + 36 * a5; sub_641E30(v7, v8 + v6 + 4); sub_641E30(*(_DWORD *)v10 + v8 + 4, (int)&v9); result = 1; } } return result; } //----- (00642310) -------------------------------------------------------- char __thiscall sub_642310(void *this) { void *v1; // esi@1 signed int v2; // eax@1 int v3; // esi@3 _UNKNOWN *v4; // ecx@3 char *v5; // edx@3 int v6; // eax@3 char result; // al@6 signed int v8; // [sp+28h] [bp-4h]@3 v1 = this; *(_DWORD *)this = malloc(0xCB200u); *((_DWORD *)v1 + 1) = 0; v2 = 108; do { *(_BYTE *)(v2 + *(_DWORD *)v1 - 108) = 0; *(_BYTE *)(v2 + *(_DWORD *)v1 + 97) = 0; *(_DWORD *)(v2 + *(_DWORD *)v1 - 72) = 0; *(_DWORD *)(v2 + *(_DWORD *)v1 - 36) = 0; *(_DWORD *)(v2 + *(_DWORD *)v1) = 0; *(_DWORD *)(v2 + *(_DWORD *)v1 + 36) = 0; *(_DWORD *)(v2 + *(_DWORD *)v1 + 72) = 0; v2 += 208; } while ( v2 < 832108 ); *((_DWORD *)v1 + 2) = 0; v3 = *(_DWORD *)v1; v4 = &unk_1508B388; v5 = (char *)&unk_1508B384 - v3; byte_1508B380[0] = *(_BYTE *)v3; v6 = v3 + 20; v8 = 5; while ( 1 ) { *((_DWORD *)v4 - 1) = *(_DWORD *)(v6 - 16); *(_WORD *)v4 = *(_WORD *)(v6 - 12); *((_WORD *)v4 + 1) = *(_WORD *)(v6 - 10); *((_DWORD *)v4 + 1) = *(_DWORD *)(v6 - 8); *((_DWORD *)v4 + 2) = *(_DWORD *)(v6 - 4); *(_DWORD *)(&byte_1508B380[v6] - v3) = *(_DWORD *)v6; *(_DWORD *)&v5[v6] = *(_DWORD *)(v6 + 4); *(_DWORD *)((char *)&unk_1508B388 + v6 - v3) = *(_DWORD *)(v6 + 8); *((_BYTE *)&unk_1508B38C + v6 - v3) = *(_BYTE *)(v6 + 12); *((_BYTE *)&unk_1508B38D + v6 - v3) = *(_BYTE *)(v6 + 13); *((_BYTE *)&unk_1508B38E + v6 - v3) = *(_BYTE *)(v6 + 14); *((_BYTE *)&unk_1508B38F + v6 - v3) = *(_BYTE *)(v6 + 15); *(_DWORD *)((char *)&unk_1508B390 + v6 - v3) = *(_DWORD *)(v6 + 16); v6 += 36; v4 = (char *)v4 + 36; --v8; if ( !v8 ) break; v5 = (char *)&unk_1508B384 - v3; } dword_1508B438 = *(_DWORD *)(v3 + 184); dword_1508B43C = *(_DWORD *)(v3 + 188); dword_1508B440 = *(_DWORD *)(v3 + 192); dword_1508B444 = *(_DWORD *)(v3 + 196); dword_1508B448 = *(_DWORD *)(v3 + 200); byte_1508B44C = *(_BYTE *)(v3 + 204); result = *(_BYTE *)(v3 + 205); byte_1508B44D = *(_BYTE *)(v3 + 205); return result; } // 1508B438: using guessed type int dword_1508B438; // 1508B43C: using guessed type int dword_1508B43C; // 1508B440: using guessed type int dword_1508B440; // 1508B444: using guessed type int dword_1508B444; // 1508B448: using guessed type int dword_1508B448; // 1508B44C: using guessed type char byte_1508B44C; // 1508B44D: using guessed type char byte_1508B44D; //----- (006424A0) -------------------------------------------------------- void *__thiscall sub_6424A0(void *this) { void *v1; // esi@1 v1 = this; sub_642310(this); return v1; } //----- (006424B0) -------------------------------------------------------- char __thiscall sub_6424B0(int this, void *a2, int a3) { void *v3; // ebx@1 int v4; // esi@1 int v5; // eax@1 int v6; // eax@38 int v7; // eax@39 int v8; // ecx@42 int v10; // [sp-8h] [bp-3Ch]@13 __int16 v11; // [sp-4h] [bp-38h]@7 int v12; // [sp-4h] [bp-38h]@42 int v13; // [sp+10h] [bp-24h]@1 char v14; // [sp+18h] [bp-1Ch]@13 char v15[4]; // [sp+1Ch] [bp-18h]@2 int v16; // [sp+20h] [bp-14h]@2 int v17; // [sp+24h] [bp-10h]@2 int v18; // [sp+28h] [bp-Ch]@2 int v19; // [sp+2Ch] [bp-8h]@2 unsigned int v20; // [sp+30h] [bp-4h]@1 int v21; // [sp+34h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; v3 = a2; v4 = this; *(_DWORD *)(this + 20) = 0; v13 = 0; v5 = sub_64A3F0(a2, 1); if ( v5 ) { while ( 1 ) { v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)v15 = 0; strncpy(v15, (const char *)v5, 0x14u); sub_649D10(v15); if ( *(_DWORD *)v15 != *(_DWORD *)dword_1508B48C || v16 != dword_1508B490 || v17 != dword_1508B494 || v18 != dword_1508B498 || v19 != dword_1508B49C ) { if ( *(_DWORD *)v15 == *(_DWORD *)dword_1508B4C8 && v16 == dword_1508B4CC && v17 == dword_1508B4D0 && v18 == dword_1508B4D4 && v19 == dword_1508B4D8 ) { v11 = 2; v10 = (int)&v14; goto LABEL_38; } if ( *(_DWORD *)v15 == *(_DWORD *)dword_1508B4F0 && v16 == dword_1508B4F4 && v17 == dword_1508B4F8 && v18 == dword_1508B4FC && v19 == dword_1508B500 ) { v11 = 3; v10 = (int)&v14; goto LABEL_38; } if ( *(_DWORD *)v15 != *(_DWORD *)dword_1508B52C || v16 != dword_1508B530 || v17 != dword_1508B534 || v18 != dword_1508B538 || v19 != dword_1508B53C ) { if ( (*(_DWORD *)v15 != *(_DWORD *)dword_1508B4B4 || v16 != dword_1508B4B8 || v17 != dword_1508B4BC || v18 != dword_1508B4C0 || v19 != dword_1508B4C4) && (*(_DWORD *)v15 != *(_DWORD *)dword_1508B4A0 || v16 != dword_1508B4A4 || v17 != dword_1508B4A8 || v18 != dword_1508B4AC || v19 != dword_1508B4B0) ) { v12 = (int)"Undefined column type"; LABEL_46: v8 = (int)a2; goto LABEL_47; } v11 = 5; } else { v11 = 4; } } else { v11 = 1; } v10 = (int)&v14; LABEL_38: v6 = sub_643B00((void *)(v4 + 24), v10, v11); if ( !v6 ) { v12 = (int)"Too many columns or memory leak"; goto LABEL_46; } v3 = a2; v7 = (**(int (__thiscall ***)(int, void *, int))v6)(v6, a2, a3); if ( v7 < 0 ) return 0; *(_DWORD *)(v4 + 20) += v7; ++v13; v5 = sub_64A3F0(a2, 1); if ( !v5 ) { if ( !v13 ) break; return 1; } } } v12 = (int)"At least one column needed"; v8 = (int)v3; LABEL_47: sub_64A030(v8, v12); return 0; } // 86FEB8: using guessed type int __security_cookie; // 1508B490: using guessed type int dword_1508B490; // 1508B494: using guessed type int dword_1508B494; // 1508B498: using guessed type int dword_1508B498; // 1508B49C: using guessed type int dword_1508B49C; // 1508B4A4: using guessed type int dword_1508B4A4; // 1508B4A8: using guessed type int dword_1508B4A8; // 1508B4AC: using guessed type int dword_1508B4AC; // 1508B4B0: using guessed type int dword_1508B4B0; // 1508B4B8: using guessed type int dword_1508B4B8; // 1508B4BC: using guessed type int dword_1508B4BC; // 1508B4C0: using guessed type int dword_1508B4C0; // 1508B4C4: using guessed type int dword_1508B4C4; // 1508B4CC: using guessed type int dword_1508B4CC; // 1508B4D0: using guessed type int dword_1508B4D0; // 1508B4D4: using guessed type int dword_1508B4D4; // 1508B4D8: using guessed type int dword_1508B4D8; // 1508B4F4: using guessed type int dword_1508B4F4; // 1508B4F8: using guessed type int dword_1508B4F8; // 1508B4FC: using guessed type int dword_1508B4FC; // 1508B500: using guessed type int dword_1508B500; // 1508B530: using guessed type int dword_1508B530; // 1508B534: using guessed type int dword_1508B534; // 1508B538: using guessed type int dword_1508B538; // 1508B53C: using guessed type int dword_1508B53C; //----- (006426F0) -------------------------------------------------------- void __thiscall sub_6426F0(void *this) { void *v1; // esi@1 v1 = this; nullsub_2((char *)this + 120); nullsub_2((char *)v1 + 117); nullsub_2((char *)v1 + 116); nullsub_2((char *)v1 + 48); nullsub_2((char *)v1 + 12); nullsub_2(v1); } //----- (006427B0) -------------------------------------------------------- bool __thiscall sub_6427B0(int this, int a2) { void *v2; // eax@1 bool result; // al@2 v2 = *(void **)(this + 67636); if ( v2 ) { result = sub_644000(v2, a2) && sub_64A320(a2); } else { sub_649F60(this, (int)"ColumnName without table"); result = 0; } return result; } //----- (00642800) -------------------------------------------------------- char __thiscall sub_642800(int this, void *a2) { int v2; // eax@1 char result; // al@2 v2 = *(_DWORD *)(this + 67636); if ( v2 ) { result = sub_6424B0(v2, a2, this); } else { sub_649F60(this, (int)"ColumnHeader without table"); result = 0; } return result; } //----- (00642850) -------------------------------------------------------- char __thiscall sub_642850(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x808u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (006428A0) -------------------------------------------------------- char __thiscall sub_6428A0(void *this, void *a2) { int v2; // esi@1 int v3; // edx@1 bool v4; // zf@2 const void **v5; // esi@2 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { v4 = *(_BYTE *)(v2 + 12 * v3 + 8) == 0; v5 = (const void **)(v2 + 12 * v3); if ( v4 ) return 0; memcpy(a2, *v5, 0x808u); (*(void (__thiscall **)(void *, int))(*(_DWORD *)this + 12))(this, v3); } return 1; } //----- (00642910) -------------------------------------------------------- void *__thiscall sub_642910(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_706D38; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 706D38: using guessed type int (__thiscall *off_706D38)(void *, char); //----- (00642950) -------------------------------------------------------- void *__thiscall sub_642950(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_706D5C; if ( v3 ) sub_6530A4(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 706D5C: using guessed type int (__thiscall *off_706D5C)(void *, char); //----- (00642990) -------------------------------------------------------- char __thiscall sub_642990(int this, void *a2) { int v2; // edi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // esi@2 int v7; // eax@7 v2 = this; v3 = *(_WORD *)(this + 168); v4 = this + 156; if ( (_WORD)v3 == -1 ) v5 = 0; else v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 8))(v3); *(_DWORD *)(v2 + 67636) = v5; if ( !v5 ) { sub_649F60(v2, (int)"Too many tables"); return 0; } v7 = sub_64A3F0(a2, 1); 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, (const char *)v7, 0x14u); return 1; } //----- (00642A40) -------------------------------------------------------- char __thiscall sub_642A40(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x808u); result = 1; } else { result = 0; } return result; } //----- (00642A80) -------------------------------------------------------- char __thiscall sub_642A80(void *this, const void *a2) { void *v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (void *)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { memcpy(v2, a2, 0x808u); result = 1; } else { result = 0; } return result; } //----- (00642AC0) -------------------------------------------------------- int __thiscall sub_642AC0(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; } //----- (00642B80) -------------------------------------------------------- char __thiscall sub_642B80(int this, int a2, int a3) { (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(this + 4) + 12))(a3); return 1; } //----- (00642BA0) -------------------------------------------------------- void __thiscall sub_642BA0(int this) { int v1; // esi@1 void *v2; // edi@1 void *v3; // eax@3 void *v4; // eax@5 void *v5; // edi@6 v1 = this; v2 = *(void **)(this + 2104); if ( v2 ) { sub_650180(v2); operator delete(v2); } v3 = *(void **)(v1 + 2088); *(_DWORD *)(v1 + 2080) = &off_706D38; if ( v3 ) sub_6530A4(v3); v4 = *(void **)(v1 + 2072); if ( v4 ) { v5 = (char *)v4 - 4; _LN21(v4, 0x808u, *((_DWORD *)v4 - 1), (void (__thiscall *)(void *))sub_650880); sub_6530A4(v5); } sub_643EB0((void *)(v1 + 24)); } // 706D38: using guessed type int (__thiscall *off_706D38)(void *, char); //----- (00642C60) -------------------------------------------------------- char __thiscall sub_642C60(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 4))(*((_WORD *)this + 6))) != 0 ) { sub_642AC0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00642CA0) -------------------------------------------------------- char __thiscall sub_642CA0(void *this, int a2) { int v2; // eax@2 char result; // al@3 if ( *((_WORD *)this + 6) != -1 && (v2 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 8))(*((_WORD *)this + 6))) != 0 ) { sub_642AC0(v2, a2); result = 1; } else { result = 0; } return result; } //----- (00642CE0) -------------------------------------------------------- char __thiscall sub_642CE0(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 4); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_642AC0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00642D30) -------------------------------------------------------- char __thiscall sub_642D30(int this, int a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // edi@1 v2 = this; v3 = *(_WORD *)(this + 14); v4 = *(_DWORD *)(this + 8); v5 = *(_WORD *)(v4 + 12 * v3 + 6); if ( (unsigned __int16)v5 < *(_WORD *)(v2 + 4) ) { if ( !*(_BYTE *)(v4 + 12 * v5 + 8) ) return 0; sub_642AC0(a2, *(_DWORD *)(v4 + 12 * v5)); (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 12))(v2, v5); } return 1; } //----- (00642D80) -------------------------------------------------------- char __thiscall sub_642D80(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_706DA0; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 706DA0: using guessed type int (__stdcall *off_706DA0)(int, int); //----- (00642F00) -------------------------------------------------------- char __thiscall sub_642F00(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = unknown_libname_130(12 * (a2 + 1) | -((unsigned __int8)(12 * (unsigned __int64)((unsigned int)a2 + 1) >> 32) != 0)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_706DA8; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 706DA8: using guessed type int (__stdcall *off_706DA8)(int, int); //----- (00643080) -------------------------------------------------------- void __thiscall sub_643080(void *this) { void *v1; // esi@1 void *v2; // eax@3 v1 = this; if ( *((_DWORD *)this + 16915) >= 0x10u ) operator delete(*((void **)this + 16910)); *((_DWORD *)v1 + 16915) = 15; *((_DWORD *)v1 + 16914) = 0; *((_BYTE *)v1 + 67640) = 0; _LN21((char *)v1 + 180, 0x83Cu, 32, (void (__thiscall *)(void *))sub_642BA0); v2 = (void *)*((_DWORD *)v1 + 41); *((_DWORD *)v1 + 39) = &off_706D5C; if ( v2 ) sub_6530A4(v2); nullsub_2((char *)v1 + 120); nullsub_2((char *)v1 + 117); nullsub_2((char *)v1 + 116); nullsub_2((char *)v1 + 48); nullsub_2((char *)v1 + 12); nullsub_2(v1); } // 706D5C: using guessed type int (__thiscall *off_706D5C)(void *, char); //----- (00643180) -------------------------------------------------------- int __thiscall sub_643180(int this, int a2) { int v2; // ebx@1 int v3; // esi@1 int v4; // edi@1 int result; // eax@2 signed int v6; // eax@4 int v7; // edx@5 int v8; // ecx@7 v2 = a2; v3 = this; v4 = 0; *(_DWORD *)this = &off_706D38; *(_DWORD *)(this + 16) = a2; if ( *(_DWORD *)a2 ) { sub_642D80(this, *(_WORD *)(a2 + 4)); if ( *(_DWORD *)(v3 + 8) ) { v6 = 0; if ( *(_WORD *)(v3 + 4) > 0u ) { v7 = 0; do { if ( v6 < *(_WORD *)(v3 + 4) ) { v8 = *(_DWORD *)(v3 + 8); if ( !*(_DWORD *)(v8 + v7) ) { *(_DWORD *)(v8 + v7) = v4 + *(_DWORD *)v2; v2 = a2; } } ++v6; v4 += 2056; v7 += 12; } while ( v6 < *(_WORD *)(v3 + 4) ); } } result = v3; } else { *(_DWORD *)(this + 8) = 0; result = this; } return result; } // 706D38: using guessed type int (__thiscall *off_706D38)(void *, char); //----- (00643200) -------------------------------------------------------- int __thiscall sub_643200(int this) { int v1; // esi@1 int v2; // ebx@1 int v3; // eax@1 int v4; // ebx@2 int v5; // eax@2 v1 = this; v2 = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; sub_643AE0((void *)(this + 24)); *(_DWORD *)(v1 + 2076) = 32; v3 = unknown_libname_130(65796); if ( v3 ) { v4 = v3 + 4; *(_DWORD *)v3 = 32; _eh_vector_constructor_iterator_( (void *)(v3 + 4), 0x808u, 32, (int)sub_650600, (void (__thiscall *)(void *))sub_650880); v5 = v4; v2 = 0; } else { v5 = 0; } *(_DWORD *)(v1 + 2072) = v5; sub_643180(v1 + 2080, v1 + 2072); *(_DWORD *)(v1 + 2104) = v2; return v1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (006432E0) -------------------------------------------------------- int __thiscall sub_6432E0(int this) { int v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // ecx@3 int v5; // ecx@6 bool v6; // zf@6 int v7; // ecx@6 int v8; // ecx@9 int v9; // ecx@9 int v10; // ecx@12 int v11; // ecx@12 signed int v13; // [sp+10h] [bp-14h]@1 int v14; // [sp+14h] [bp-10h]@1 v1 = this; sub_64A770(this); sub_649ED0(v1 + 12); sub_649EE0(v1 + 48); sub_649EF0((void *)(v1 + 116)); sub_649F00((void *)(v1 + 117)); sub_649ED0(v1 + 120); *(_DWORD *)(v1 + 156) = &off_706D5C; *(_DWORD *)(v1 + 172) = 0; sub_642F00(v1 + 156, 0x20u); _eh_vector_constructor_iterator_( (void *)(v1 + 180), 0x83Cu, 32, (int)sub_643200, (void (__thiscall *)(void *))sub_642BA0); *(_DWORD *)(v1 + 67660) = 15; *(_DWORD *)(v1 + 67656) = 0; *(_BYTE *)(v1 + 67640) = 0; *(_DWORD *)(v1 + 67636) = 0; v2 = 2; v3 = 0; v14 = v1 + 2288; v13 = 8; do { if ( v2 - 2 < *(_WORD *)(v1 + 160) ) { v4 = *(_DWORD *)(v1 + 164); if ( !*(_DWORD *)(v4 + v3) ) *(_DWORD *)(v4 + v3) = v14 - 2108; } if ( v2 - 1 < *(_WORD *)(v1 + 160) ) { v5 = *(_DWORD *)(v1 + 164); v6 = *(_DWORD *)(v5 + v3 + 12) == 0; v7 = v5 + v3 + 12; if ( v6 ) *(_DWORD *)v7 = v14; } if ( v2 < *(_WORD *)(v1 + 160) ) { v8 = *(_DWORD *)(v1 + 164); v6 = *(_DWORD *)(v8 + v3 + 24) == 0; v9 = v8 + v3 + 24; if ( v6 ) *(_DWORD *)v9 = v14 + 2108; } if ( v2 + 1 < *(_WORD *)(v1 + 160) ) { v10 = *(_DWORD *)(v1 + 164); v6 = *(_DWORD *)(v10 + v3 + 36) == 0; v11 = v10 + v3 + 36; if ( v6 ) *(_DWORD *)v11 = v14 + 4216; } v14 += 8432; v3 += 48; v2 += 4; --v13; } while ( v13 ); return v1; } // 706D5C: using guessed type int (__thiscall *off_706D5C)(void *, char); //----- (006434A0) -------------------------------------------------------- char __thiscall sub_6434A0(void *this, char *a2) { int v2; // edi@1 int v3; // esi@3 char v5; // bl@5 int v6; // esi@7 int v7; // ecx@8 char v8; // al@12 FILE *v9; // [sp+0h] [bp-1838h]@3 char v10; // [sp+4h] [bp-1834h]@5 char v11[4]; // [sp+1814h] [bp-24h]@5 int v12; // [sp+1818h] [bp-20h]@5 int v13; // [sp+181Ch] [bp-1Ch]@5 int v14; // [sp+1820h] [bp-18h]@5 int v15; // [sp+1824h] [bp-14h]@5 unsigned int v16; // [sp+1828h] [bp-10h]@1 int v17; // [sp+1834h] [bp-4h]@5 int v18; // [sp+1838h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v2 = (int)this; if ( a2 ) sub_4241C0((int)((char *)this + 67640), a2, strlen(a2)); v3 = (int)fopen(a2, "r"); v9 = (FILE *)v3; sub_649F60(v2, (int)"Undefined Error"); if ( !v3 ) { sub_649F60(v2, (int)"File not found"); return 0; } sub_649F80((int)&v10, v3, v2); v17 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; v5 = 1; while ( 1 ) { if ( !sub_64A5A0((int)&v10, v11) ) goto LABEL_60; v6 = *(_DWORD *)v11; if ( *(_DWORD *)v11 != *(_DWORD *)dword_1508B57C ) break; v7 = v14; if ( v12 != dword_1508B580 || v13 != dword_1508B584 || v14 != dword_1508B588 || v15 != dword_1508B58C ) goto LABEL_14; v8 = sub_64A700((void *)(v2 + 116), (int)&v10); LABEL_52: v5 = v8; if ( !v8 ) goto LABEL_61; } v7 = v14; LABEL_14: if ( *(_DWORD *)v11 == *(_DWORD *)dword_1508B4DC && v12 == dword_1508B4E0 && v13 == dword_1508B4E4 && v7 == dword_1508B4E8 && v15 == dword_1508B4EC ) { v8 = sub_64A730((void *)(v2 + 117), (int)&v10); goto LABEL_52; } if ( *(_DWORD *)v11 == *(_DWORD *)dword_1508B518 && v12 == dword_1508B51C && v13 == dword_1508B520 && v7 == dword_1508B524 && v15 == dword_1508B528 ) { v8 = sub_64A640(v2 + 120, (int)&v10); goto LABEL_52; } if ( *(_DWORD *)v11 == *(_DWORD *)dword_1508B540 && v12 == dword_1508B544 && v13 == dword_1508B548 && v7 == dword_1508B54C && v15 == dword_1508B550 ) { v8 = sub_64A640(v2 + 12, (int)&v10); goto LABEL_52; } if ( *(_DWORD *)v11 == *(_DWORD *)dword_1508B464 && v12 == dword_1508B468 && v13 == dword_1508B46C && v7 == dword_1508B470 && v15 == dword_1508B474 ) { v8 = sub_64A690(v2 + 48, (int)&v10); goto LABEL_52; } if ( *(_DWORD *)v11 == *(_DWORD *)dword_1508B478 && v12 == dword_1508B47C && v13 == dword_1508B480 && v7 == dword_1508B484 && v15 == dword_1508B488 ) { v8 = sub_642990(v2, &v10); goto LABEL_52; } if ( sub_427B00((int)v11, (int)byte_1508B504) ) { v8 = sub_642800(v2, &v10); goto LABEL_52; } if ( sub_427B00((int)v11, (int)byte_1508B590) ) { v8 = sub_6427B0(v2, (int)&v10); goto LABEL_52; } if ( sub_427B00((int)v11, (int)byte_1508B450) ) { v8 = sub_644B20(v2, (int)&v10); goto LABEL_52; } if ( sub_427B00((int)v11, (int)byte_1508B568) ) { v8 = sub_644A20((void *)v2, (int)&v10); goto LABEL_52; } if ( v6 != *(_DWORD *)dword_1508B554 || v12 != dword_1508B558 || v13 != dword_1508B55C || v14 != dword_1508B560 || v15 != dword_1508B564 ) { sub_649F60(v2, (int)"Undefined command"); LABEL_60: v5 = 0; } LABEL_61: fclose(v9); v17 = -1; nullsub_2(&v10); return v5; } // 86FEB8: using guessed type int __security_cookie; // 1508B468: using guessed type int dword_1508B468; // 1508B46C: using guessed type int dword_1508B46C; // 1508B470: using guessed type int dword_1508B470; // 1508B474: using guessed type int dword_1508B474; // 1508B47C: using guessed type int dword_1508B47C; // 1508B480: using guessed type int dword_1508B480; // 1508B484: using guessed type int dword_1508B484; // 1508B488: using guessed type int dword_1508B488; // 1508B4E0: using guessed type int dword_1508B4E0; // 1508B4E4: using guessed type int dword_1508B4E4; // 1508B4E8: using guessed type int dword_1508B4E8; // 1508B4EC: using guessed type int dword_1508B4EC; // 1508B51C: using guessed type int dword_1508B51C; // 1508B520: using guessed type int dword_1508B520; // 1508B524: using guessed type int dword_1508B524; // 1508B528: using guessed type int dword_1508B528; // 1508B544: using guessed type int dword_1508B544; // 1508B548: using guessed type int dword_1508B548; // 1508B54C: using guessed type int dword_1508B54C; // 1508B550: using guessed type int dword_1508B550; // 1508B558: using guessed type int dword_1508B558; // 1508B55C: using guessed type int dword_1508B55C; // 1508B560: using guessed type int dword_1508B560; // 1508B564: using guessed type int dword_1508B564; // 1508B580: using guessed type int dword_1508B580; // 1508B584: using guessed type int dword_1508B584; // 1508B588: using guessed type int dword_1508B588; // 1508B58C: using guessed type int dword_1508B58C; //----- (00643820) -------------------------------------------------------- char __thiscall sub_643820(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 int v5; // ST04_4@7 int v6; // eax@7 char result; // al@8 v3 = this; v4 = sub_650320(a2); if ( *(_DWORD *)v4 != *((_DWORD *)v3 + 1) || *(_DWORD *)(v4 + 4) != *((_DWORD *)v3 + 2) || *(_DWORD *)(v4 + 8) != *((_DWORD *)v3 + 3) || *(_DWORD *)(v4 + 12) != *((_DWORD *)v3 + 4) || *(_DWORD *)(v4 + 16) != *((_DWORD *)v3 + 5) ) { result = 1; } else { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 16))(a2) == 1 ) { v5 = *((_DWORD *)v3 + 6); v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 12))(a2); sub_6501A0(*((_DWORD *)v3 + 7), v6, v5); } result = 0; } return result; } //----- (00643890) -------------------------------------------------------- char __thiscall sub_643890(int this, int a2, int a3) { int v3; // eax@1 char result; // al@2 v3 = *(_DWORD *)(this + 4); if ( v3 > 0 ) { *(_DWORD *)(this + 4) = v3 - 1; result = 1; } else { *(_DWORD *)(this + 8) = a2; result = 0; } return result; } //----- (006438B0) -------------------------------------------------------- char __thiscall sub_6438B0(int this, int a2, int a3) { int v3; // edi@1 char result; // al@2 int v5; // esi@3 int v6; // eax@3 v3 = this; if ( sub_649D90(*(void **)(this + 4)) ) { *(_BYTE *)(v3 + 32) = 1; result = 0; } else { v5 = *(_DWORD *)(v3 + 4); v6 = sub_650320(a2); if ( *(_DWORD *)v6 != *(_DWORD *)v5 || *(_DWORD *)(v6 + 4) != *(_DWORD *)(v5 + 4) || *(_DWORD *)(v6 + 8) != *(_DWORD *)(v5 + 8) || *(_DWORD *)(v6 + 12) != *(_DWORD *)(v5 + 12) || *(_DWORD *)(v6 + 16) != *(_DWORD *)(v5 + 16) ) { result = 1; } else { if ( (unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))a2)(a2, *(_DWORD *)(v3 + 8), v3 + 12) ) *(_BYTE *)(v3 + 32) = 1; result = 0; } } return result; } //----- (00643930) -------------------------------------------------------- char __thiscall sub_643930(void *this, int a2, int a3) { void *v3; // esi@1 int v4; // eax@1 char result; // al@6 v3 = this; v4 = sub_650320(a2); if ( *(_DWORD *)v4 != *((_DWORD *)v3 + 1) || *(_DWORD *)(v4 + 4) != *((_DWORD *)v3 + 2) || *(_DWORD *)(v4 + 8) != *((_DWORD *)v3 + 3) || *(_DWORD *)(v4 + 12) != *((_DWORD *)v3 + 4) || *(_DWORD *)(v4 + 16) != *((_DWORD *)v3 + 5) ) { result = 1; } else { *((_DWORD *)v3 + 6) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 12))(a2); **((_DWORD **)v3 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 16))(a2); result = 0; } return result; } //----- (006439A0) -------------------------------------------------------- char __thiscall sub_6439A0(void *this, void *a2, int a3) { void *v3; // esi@1 void *v4; // eax@1 char result; // al@6 v3 = this; v4 = sub_5CF620(a2); if ( *((_DWORD *)v3 + 1) != *(_DWORD *)v4 || *((_DWORD *)v3 + 2) != *((_DWORD *)v4 + 1) || *((_DWORD *)v3 + 3) != *((_DWORD *)v4 + 2) || *((_DWORD *)v3 + 4) != *((_DWORD *)v4 + 3) || *((_DWORD *)v3 + 5) != *((_DWORD *)v4 + 4) ) { result = 1; } else { *((_DWORD *)v3 + 6) = a2; result = 0; } return result; } //----- (00643A00) -------------------------------------------------------- int __thiscall sub_643A00(int this, int a2, int a3) { return *(_DWORD *)(this + 4); } //----- (00643A10) -------------------------------------------------------- int __thiscall sub_643A10(void *this, int a2, int a3) { int v3; // esi@1 char v4; // al@1 int v5; // edi@1 int result; // eax@2 int v7; // eax@3 int v8; // ebx@3 char v9; // al@7 void *v10; // [sp+8h] [bp-4h]@1 v3 = a2; v10 = this; v4 = sub_64A360(a2); v5 = a3; if ( sub_649F10((void *)(a3 + 117), v4) ) { BYTE3(a2) = 0; v7 = sub_64A2A0(v3, (int)((char *)&a2 + 3)); v8 = v7; if ( BYTE3(a2) ) { if ( v7 > 0 ) { v9 = sub_64A360(v3); if ( sub_649F20(v5 + 117, v9) ) { *((_DWORD *)v10 + 1) = v8; result = v8; } else { sub_64A030(v3, (int)"Brace must be closed in same line"); result = 0; } } else { sub_64A030(v3, (int)"String length must be bigger then 0"); result = 0; } } else { sub_64A030(v3, (int)"Error in string length"); result = 0; } } else { sub_64A030(v3, (int)"String need length"); result = 0; } return result; } //----- (00643AE0) -------------------------------------------------------- void *__thiscall sub_643AE0(void *this) { memset(this, 0, 0x800u); return this; } //----- (00643B00) -------------------------------------------------------- int __thiscall sub_643B00(void *this, int a2, __int16 a3) { void *v3; // ebx@1 signed int v4; // edi@1 int result; // eax@4 v3 = this; v4 = 0; while ( *((_DWORD *)this + v4) ) { ++v4; if ( v4 >= 512 ) return 0; } switch ( a3 ) { case 1: result = operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_706E80; *(_DWORD *)(result + 4) = 20; *((_DWORD *)v3 + v4) = result; break; case 2: result = operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_706E8C; *(_DWORD *)(result + 4) = -1; *((_DWORD *)v3 + v4) = result; break; case 3: result = operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_706F0C; *(_DWORD *)(result + 4) = 1; *((_DWORD *)v3 + v4) = result; break; case 4: result = operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_706F18; *(_DWORD *)(result + 4) = 2; *((_DWORD *)v3 + v4) = result; break; case 5: result = operator new(0x1Cu); if ( !result ) { LABEL_16: *((_DWORD *)v3 + v4) = 0; goto LABEL_17; } *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 12) = 0; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_706F24; *(_DWORD *)(result + 4) = 4; *((_DWORD *)v3 + v4) = result; break; default: LABEL_17: result = *((_DWORD *)v3 + v4); break; } return result; } // 706E80: using guessed type int (__stdcall *off_706E80)(int, int); // 706E8C: using guessed type int (__stdcall *off_706E8C)(int, int); // 706F0C: using guessed type int (__stdcall *off_706F0C)(int, int); // 706F18: using guessed type int (__stdcall *off_706F18)(int, int); // 706F24: using guessed type int (__stdcall *off_706F24)(int, int); //----- (00643C70) -------------------------------------------------------- char __thiscall sub_643C70(int this, void *a2, int a3) { int v3; // edx@1 int v4; // esi@1 int v5; // eax@1 int (__stdcall **v7)(int, int); // [sp+4h] [bp-30h]@1 int v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+Ch] [bp-28h]@1 int v10; // [sp+10h] [bp-24h]@1 int v11; // [sp+14h] [bp-20h]@1 int v12; // [sp+18h] [bp-1Ch]@1 void *v13; // [sp+1Ch] [bp-18h]@1 int v14; // [sp+20h] [bp-14h]@1 unsigned int v15; // [sp+24h] [bp-10h]@1 int v16; // [sp+30h] [bp-4h]@1 int v17; // [sp+34h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v3 = *(_DWORD *)(this + 24); v8 = *(_DWORD *)(this + 4); v9 = *(_DWORD *)(this + 8); v10 = *(_DWORD *)(this + 12); v4 = *(_DWORD *)(this + 16); v5 = *(_DWORD *)(this + 20); v7 = &off_706F40; v11 = v4; v12 = v5; v13 = a2; v14 = v3; v16 = 0; sub_6507D0(a2, (int)&v7); return 1; } // 706F40: using guessed type int (__stdcall *off_706F40)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00643D00) -------------------------------------------------------- char __thiscall sub_643D00(int this, int a2, int a3) { int v3; // esi@1 int v4; // eax@1 char result; // al@2 v3 = this; v4 = sub_64A3F0(*(void **)(this + 4), 1); if ( v4 ) { *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(a2 + 8) = 0; strncpy((char *)(a2 + 8), (const char *)v4, 0x14u); result = 1; } else { sub_64A030(*(_DWORD *)(v3 + 4), (int)"Column type-name mismatch"); result = 0; } return result; } //----- (00643D70) -------------------------------------------------------- char __thiscall sub_643D70(int this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@1 __int16 v5; // ax@1 int v6; // eax@1 int v7; // esi@1 char result; // al@2 int v9; // [sp+Ch] [bp-4h]@1 v3 = a2; v4 = *(_DWORD *)(this + 8); v9 = *(_DWORD *)(this + 4); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 4))(a2); v6 = sub_6506C0((void *)v4, (int)&a2, v5); v7 = v6; if ( v6 ) { sub_650330(v6, v3); sub_650690(v4, v7); result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 8))(v7, v9); } else { sub_64A030(v9, (int)"Cannot alloc field memory"); result = 0; } return result; } //----- (00643DF0) -------------------------------------------------------- char __thiscall sub_643DF0(int this, void *a2, int a3) { int v3; // esi@1 const char *v4; // ST04_4@1 int v5; // eax@2 int (__stdcall **v7)(int, int); // [sp+Ch] [bp-34h]@1 int v8; // [sp+10h] [bp-30h]@1 const 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 int v18; // [sp+40h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; v3 = this; v4 = *(const char **)(this + 24); v7 = &off_706F84; v8 = this + 4; v9 = v4; v14 = 0; v13 = 0; v12 = 0; v11 = 0; *(_DWORD *)v10 = 0; strncpy(v10, v4, 0x14u); v15 = 0; v17 = 0; sub_6507D0(a2, (int)&v7); if ( !v15 ) return 1; v5 = *(_DWORD *)(v3 + 32); if ( v5 > 0 ) { *(_DWORD *)(v3 + 32) = v5 - 1; return 1; } *(_DWORD *)(v3 + 28) = a2; return 0; } // 706F84: using guessed type int (__stdcall *off_706F84)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00643EB0) -------------------------------------------------------- void __thiscall sub_643EB0(void *this) { void *v1; // edi@1 signed int v2; // esi@1 int v3; // eax@2 void *v4; // ST00_4@3 v1 = this; v2 = 0; do { v3 = *((_DWORD *)v1 + v2); if ( v3 ) { v4 = (void *)*((_DWORD *)v1 + v2); *(_DWORD *)v3 = &off_706E58; operator delete(v4); } ++v2; } while ( v2 < 512 ); } // 706E58: using guessed type int (__stdcall *off_706E58)(int, int); //----- (00643EE0) -------------------------------------------------------- bool __thiscall sub_643EE0(int this, const char *a2) { int v2; // esi@1 void *v3; // edi@1 void *v4; // eax@3 void *v5; // edi@4 bool result; // al@7 void *v7; // edi@9 int (__stdcall **v8)(int, int); // [sp+14h] [bp-2Ch]@8 char v9[4]; // [sp+18h] [bp-28h]@8 int v10; // [sp+1Ch] [bp-24h]@8 int v11; // [sp+20h] [bp-20h]@8 int v12; // [sp+24h] [bp-1Ch]@8 int v13; // [sp+28h] [bp-18h]@8 void *v14; // [sp+2Ch] [bp-14h]@8 unsigned int v15; // [sp+30h] [bp-10h]@1 int v16; // [sp+3Ch] [bp-4h]@3 int v17; // [sp+40h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v2 = this; v3 = *(void **)(this + 2104); if ( v3 ) { sub_650180(v3); operator delete(v3); } v4 = (void *)operator new(0x6004u); v16 = 0; if ( v4 ) v5 = sub_650240(v4); else v5 = 0; v16 = -1; *(_DWORD *)(v2 + 2104) = v5; if ( v5 ) { v8 = &off_706F48; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, a2, 0x14u); v14 = v5; v16 = 1; sub_43C470(v2 + 2080, (int)&v8); if ( !sub_650270(*(void **)(v2 + 2104)) ) { v7 = *(void **)(v2 + 2104); if ( v7 ) { sub_650180(*(void **)(v2 + 2104)); operator delete(v7); } *(_DWORD *)(v2 + 2104) = 0; } result = *(_DWORD *)(v2 + 2104) != 0; } else { result = 0; } return result; } // 706F48: using guessed type int (__stdcall *off_706F48)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644000) -------------------------------------------------------- char __thiscall sub_644000(void *this, int a2) { void *v2; // edi@1 signed int v3; // esi@1 int v4; // eax@2 int (__stdcall **v6)(int, int); // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; v6 = &off_706F58; v7 = a2; v8 = 0; v3 = 0; while ( 1 ) { v4 = *((_DWORD *)v2 + v3 + 6); if ( v4 ) { if ( !(unsigned __int8)((int (__thiscall *)(int (__stdcall ***)(int, int), int, signed int))*v6)(&v6, v4, v3) ) break; } ++v3; if ( v3 >= 512 ) return 1; } return 0; } // 706F58: using guessed type int (__stdcall *off_706F58)(int, int); //----- (00644090) -------------------------------------------------------- int __thiscall sub_644090(void *this, const char *a2, int a3) { void *v3; // edi@1 int (__stdcall **v5)(int, int); // [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 int v15; // [sp+38h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v3 = this; v5 = &off_706F8C; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, a2, 0x14u); v11 = 0; v12 = a3; v14 = 0; sub_6507D0(v3, (int)&v5); return v11; } // 706F8C: using guessed type int (__stdcall *off_706F8C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644120) -------------------------------------------------------- int __thiscall sub_644120(void *this, const char *a2, int a3, const char *a4, int a5, int a6) { void *v6; // edi@1 void *v7; // edi@2 int result; // eax@2 int (__stdcall **v9)(int, int); // [sp+Ch] [bp-54h]@1 char v10[4]; // [sp+10h] [bp-50h]@1 int v11; // [sp+14h] [bp-4Ch]@1 int v12; // [sp+18h] [bp-48h]@1 int v13; // [sp+1Ch] [bp-44h]@1 int v14; // [sp+20h] [bp-40h]@1 int v15; // [sp+24h] [bp-3Ch]@1 void *v16; // [sp+28h] [bp-38h]@1 int v17; // [sp+2Ch] [bp-34h]@1 int (__stdcall **v18)(int, int); // [sp+30h] [bp-30h]@2 char v19[4]; // [sp+34h] [bp-2Ch]@2 int v20; // [sp+38h] [bp-28h]@2 int v21; // [sp+3Ch] [bp-24h]@2 int v22; // [sp+40h] [bp-20h]@2 int v23; // [sp+44h] [bp-1Ch]@2 int v24; // [sp+48h] [bp-18h]@2 int v25; // [sp+4Ch] [bp-14h]@2 unsigned int v26; // [sp+50h] [bp-10h]@1 int v27; // [sp+5Ch] [bp-4h]@1 int v28; // [sp+60h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; v6 = this; v9 = &off_706F94; v14 = 0; v13 = 0; v12 = 0; v11 = 0; *(_DWORD *)v10 = 0; strncpy(v10, a2, 0x14u); v15 = a3; v16 = 0; v17 = a5; v27 = 0; sub_43C470((int)((char *)v6 + 2080), (int)&v9); if ( v16 ) { v7 = v16; v18 = &off_706F8C; v23 = 0; v22 = 0; v21 = 0; v20 = 0; *(_DWORD *)v19 = 0; strncpy(v19, a4, 0x14u); v24 = 0; v25 = a6; LOBYTE(v27) = 1; sub_6507D0(v7, (int)&v18); result = v24; } else { result = 0; } return result; } // 706F8C: using guessed type int (__stdcall *off_706F8C)(int, int); // 706F94: using guessed type int (__stdcall *off_706F94)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644210) -------------------------------------------------------- int __thiscall sub_644210(void *this, const char *a2, int a3, int a4) { void *v4; // edi@1 int result; // eax@2 int (__stdcall **v6)(int, int); // [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 int v12; // [sp+20h] [bp-1Ch]@1 int v13; // [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 int v17; // [sp+3Ch] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v4 = this; v6 = &off_706F94; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)v7 = 0; strncpy(v7, a2, 0x14u); v12 = a3; v13 = 0; v14 = a4; v16 = 0; sub_43C470((int)((char *)v4 + 2080), (int)&v6); if ( v13 ) result = sub_650650(v13); else result = 0; return result; } // 706F94: using guessed type int (__stdcall *off_706F94)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (006442C0) -------------------------------------------------------- int __thiscall sub_6442C0(void *this, int a2, int a3, int a4, int a5, int a6, int a7) { int result; // eax@3 int (__stdcall **v8)(int, int); // [sp+0h] [bp-38h]@2 int v9; // [sp+4h] [bp-34h]@2 int v10; // [sp+8h] [bp-30h]@2 int (__stdcall **v11)(int, int); // [sp+Ch] [bp-2Ch]@1 int v12; // [sp+10h] [bp-28h]@1 int v13; // [sp+14h] [bp-24h]@1 int v14; // [sp+18h] [bp-20h]@1 int v15; // [sp+1Ch] [bp-1Ch]@1 int v16; // [sp+20h] [bp-18h]@1 int v17; // [sp+24h] [bp-14h]@1 unsigned int v18; // [sp+28h] [bp-10h]@1 int v19; // [sp+34h] [bp-4h]@1 int v20; // [sp+38h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v12 = a2; v13 = a3; v14 = a4; v11 = &off_706F9C; v15 = a5; v16 = a6; v17 = 0; v19 = 0; sub_43C470((int)((char *)this + 156), (int)&v11); if ( v17 && (v8 = &off_706F50, v9 = a7, v10 = 0, LOBYTE(v19) = 1, sub_43C470(v17 + 2080, (int)&v8), v10) ) result = sub_650650(v10); else result = 0; return result; } // 706F50: using guessed type int (__stdcall *off_706F50)(int, int); // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644390) -------------------------------------------------------- int __thiscall sub_644390(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7, const char *a8, int a9) { int result; // eax@2 void *v10; // ecx@3 void **v11; // esi@3 int v12; // eax@5 int (__stdcall **v13)(int, int); // [sp+10h] [bp-2Ch]@1 int v14; // [sp+14h] [bp-28h]@1 int v15; // [sp+18h] [bp-24h]@1 int v16; // [sp+1Ch] [bp-20h]@1 int v17; // [sp+20h] [bp-1Ch]@1 int v18; // [sp+24h] [bp-18h]@1 int v19; // [sp+28h] [bp-14h]@1 unsigned int v20; // [sp+2Ch] [bp-10h]@1 int v21; // [sp+38h] [bp-4h]@1 int v22; // [sp+3Ch] [bp+0h]@1 v20 = (unsigned int)&v22 ^ __security_cookie; v14 = a3; v15 = a4; v16 = a5; v13 = &off_706F9C; v17 = a6; v18 = a7; v19 = 0; v21 = 0; sub_43C470((int)((char *)this + 156), (int)&v13); if ( v19 && (v10 = *(void **)(v19 + 2104), v11 = (void **)(v19 + 2104), v10) && sub_6502A0(v10, a8) ) { v12 = sub_6502A0(*v11, a8); result = sub_644090((void *)v12, a2, a9); } else { result = 0; } return result; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644460) -------------------------------------------------------- int __thiscall sub_644460(void *this, int a2, int a3, int a4, int a5, int a6, const char *a7, int a8, int a9) { int result; // eax@2 int (__stdcall **v10)(int, int); // [sp+Ch] [bp-2Ch]@1 int v11; // [sp+10h] [bp-28h]@1 int v12; // [sp+14h] [bp-24h]@1 int v13; // [sp+18h] [bp-20h]@1 int v14; // [sp+1Ch] [bp-1Ch]@1 int v15; // [sp+20h] [bp-18h]@1 void *v16; // [sp+24h] [bp-14h]@1 unsigned int v17; // [sp+28h] [bp-10h]@1 int v18; // [sp+34h] [bp-4h]@1 int v19; // [sp+38h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v11 = a2; v13 = a4; v12 = a3; v15 = a6; v10 = &off_706F9C; v14 = a5; v16 = 0; v18 = 0; sub_43C470((int)((char *)this + 156), (int)&v10); if ( v16 ) result = sub_644210(v16, a7, a8, a9); else result = 0; return result; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644510) -------------------------------------------------------- int __thiscall sub_644510(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7, const char *a8, int a9, int a10, int a11) { int result; // eax@2 int (__stdcall **v12)(int, int); // [sp+14h] [bp-2Ch]@1 int v13; // [sp+18h] [bp-28h]@1 int v14; // [sp+1Ch] [bp-24h]@1 int v15; // [sp+20h] [bp-20h]@1 int v16; // [sp+24h] [bp-1Ch]@1 int v17; // [sp+28h] [bp-18h]@1 void *v18; // [sp+2Ch] [bp-14h]@1 unsigned int v19; // [sp+30h] [bp-10h]@1 int v20; // [sp+3Ch] [bp-4h]@1 int v21; // [sp+40h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v13 = a3; v15 = a5; v14 = a4; v17 = a7; v12 = &off_706F9C; v16 = a6; v18 = 0; v20 = 0; sub_43C470((int)((char *)this + 156), (int)&v12); if ( v18 ) result = sub_644120(v18, a8, a9, a2, a10, a11); else result = 0; return result; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (006445D0) -------------------------------------------------------- bool __thiscall sub_6445D0(void *this, int a2, int a3, int a4, int a5, int a6, const char *a7) { bool result; // al@2 int (__stdcall **v8)(int, int); // [sp+4h] [bp-2Ch]@1 int v9; // [sp+8h] [bp-28h]@1 int v10; // [sp+Ch] [bp-24h]@1 int v11; // [sp+10h] [bp-20h]@1 int v12; // [sp+14h] [bp-1Ch]@1 int v13; // [sp+18h] [bp-18h]@1 int v14; // [sp+1Ch] [bp-14h]@1 unsigned int v15; // [sp+20h] [bp-10h]@1 int v16; // [sp+2Ch] [bp-4h]@1 int v17; // [sp+30h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v9 = a2; v10 = a3; v11 = a4; v8 = &off_706F9C; v12 = a5; v13 = a6; v14 = 0; v16 = 0; sub_43C470((int)((char *)this + 156), (int)&v8); if ( v14 ) result = sub_643EE0(v14, a7); else result = 0; return result; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644670) -------------------------------------------------------- int __thiscall sub_644670(int this) { return *(_WORD *)(this + 176); } //----- (00644680) -------------------------------------------------------- char __thiscall sub_644680(int this, char *a2) { int v2; // esi@1 int v3; // eax@2 int v4; // ebx@2 int v5; // edi@3 signed __int64 v6; // qax@3 int v7; // eax@3 void *v8; // ebx@6 int v9; // eax@6 void *v11; // eax@14 void *v12; // ecx@14 int v13; // edx@14 int v14; // ecx@16 int v15; // eax@17 int v16; // eax@19 int v17; // ecx@19 void *v18; // ST10_4@19 void **v19; // ecx@19 void *v20; // eax@19 void *v21; // ebx@20 int v22; // edx@21 int v23; // [sp+10h] [bp-14h]@9 int i; // [sp+14h] [bp-10h]@10 void *v25; // [sp+2Ch] [bp+8h]@5 v2 = this; if ( *(_WORD *)(this + 12) != -1 || (v3 = *(_DWORD *)(this + 16), v4 = 0, !v3) ) return 0; v5 = (int)&a2[*(_DWORD *)(v3 + 4)]; v6 = 2056i64 * (unsigned int)&a2[*(_DWORD *)(v3 + 4)]; v7 = unknown_libname_130(((v6 | -(BYTE4(v6) != 0)) + 4) | -__CFADD__(v6 | -(BYTE4(v6) != 0), 4)); if ( v7 ) { v4 = v7 + 4; *(_DWORD *)v7 = v5; _eh_vector_constructor_iterator_( (void *)(v7 + 4), 0x808u, v5, (int)sub_650600, (void (__thiscall *)(void *))sub_650880); } v25 = (void *)v4; if ( !v4 ) return 0; v8 = (void *)unknown_libname_130(12 * (v5 + 1) | -((unsigned __int8)(12 * (unsigned __int64)(unsigned int)(v5 + 1) >> 32) != 0)); v9 = 0; if ( !v8 ) { _LN21(v25, 0x808u, *((_DWORD *)v25 - 1), (void (__thiscall *)(void *))sub_650880); sub_6530A4((char *)v25 - 4); return 0; } v23 = 0; if ( *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4) > 0 ) { for ( i = 0; ; v9 = i ) { sub_650620((char *)v25 + v9, v9 + **(_DWORD **)(v2 + 16)); i += 2056; ++v23; if ( v23 >= *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4) ) break; } } memmove(v8, *(const void **)(v2 + 8), 12 * *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4)); *((_WORD *)v8 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 4) + 3) = v5; *((_WORD *)v8 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 6) + 2) = v5; if ( v5 > 0 ) { v11 = v25; v12 = v8; v13 = v5; do { *(_DWORD *)v12 = v11; v11 = (char *)v11 + 2056; v12 = (char *)v12 + 12; --v13; } while ( v13 ); } v14 = *(_WORD *)(v2 + 4); if ( v14 < v5 ) { v15 = (int)((char *)v8 + 12 * v14 + 4); do { *(_WORD *)v15 = v14 + 1; *(_BYTE *)(v15 + 4) = 0; *(_WORD *)(v15 + 2) = v14++ - 1; v15 += 12; } while ( v14 < v5 ); } *((_WORD *)v8 + 6 * *(_WORD *)(v2 + 4) + 3) = v5 - 1; *((_WORD *)v8 + 6 * v5 - 4) = *(_WORD *)(v2 + 4); v16 = (int)((char *)v8 + 12 * v5); v17 = *(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4); *(_DWORD *)v16 = *(_DWORD *)v17; *(_DWORD *)(v16 + 4) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(v17 + 8); v18 = *(void **)(v2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(v2 + 4); sub_6530A4(v18); v19 = *(void ***)(v2 + 16); *(_DWORD *)(v2 + 8) = v8; v20 = *v19; if ( *v19 ) { v21 = (char *)v20 - 4; _LN21(v20, 0x808u, *((_DWORD *)v20 - 1), (void (__thiscall *)(void *))sub_650880); sub_6530A4(v21); } **(_DWORD **)(v2 + 16) = v25; v22 = *(_DWORD *)(v2 + 16); *(_WORD *)(v2 + 4) = v5; *(_DWORD *)(v22 + 4) = (unsigned __int16)v5; *(_WORD *)(v2 + 14) = v5; return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00644900) -------------------------------------------------------- char __thiscall sub_644900(int this, int a2) { int v2; // ebx@1 int v3; // eax@1 int v4; // edi@2 char result; // al@4 int (__stdcall **v6)(int, int); // [sp+10h] [bp-18h]@8 int v7; // [sp+14h] [bp-14h]@8 int v8; // [sp+18h] [bp-10h]@8 int v9; // [sp+24h] [bp-4h]@8 v2 = this; v3 = *(_WORD *)(this + 2092); if ( (_WORD)v3 != -1 ) { v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)(this + 2080) + 8))(this + 2080, v3); if ( v4 ) goto LABEL_11; } if ( !sub_644680(v2 + 2080, (char *)8) ) { sub_64A030(a2, (int)"Too many records"); return 0; } if ( *(_WORD *)(v2 + 2092) != -1 && (v4 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v2 + 2080) + 8))(v2 + 2080, *(_WORD *)(v2 + 2092))) != 0 ) { LABEL_11: sub_650660((void *)v4, *(_DWORD *)(v2 + 20)); v6 = &off_706F7C; v7 = a2; v8 = v4; v9 = 0; result = sub_6507D0((void *)(v2 + 24), (int)&v6); } else { sub_64A030(a2, (int)"Record alloc error after list enlargement"); result = 0; } return result; } // 706F7C: using guessed type int (__stdcall *off_706F7C)(int, int); //----- (00644A20) -------------------------------------------------------- char __thiscall sub_644A20(void *this, int a2) { int v2; // edi@1 int v3; // eax@1 int v5; // [sp-8h] [bp-54h]@2 int (__stdcall **v6)(int, int); // [sp+Ch] [bp-40h]@6 int v7; // [sp+10h] [bp-3Ch]@6 int v8; // [sp+14h] [bp-38h]@6 int v9; // [sp+18h] [bp-34h]@6 int v10; // [sp+1Ch] [bp-30h]@6 int v11; // [sp+20h] [bp-2Ch]@6 int v12; // [sp+24h] [bp-28h]@6 char v13[4]; // [sp+28h] [bp-24h]@6 int v14; // [sp+2Ch] [bp-20h]@6 int v15; // [sp+30h] [bp-1Ch]@6 int v16; // [sp+34h] [bp-18h]@6 int v17; // [sp+38h] [bp-14h]@6 unsigned int v18; // [sp+3Ch] [bp-10h]@1 int v19; // [sp+48h] [bp-4h]@6 int v20; // [sp+4Ch] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v2 = (int)this; v3 = sub_64A3F0((void *)a2, 1); if ( !v3 ) { v5 = (int)"#recordin has no table name"; LABEL_3: sub_649F60(v2, v5); return 0; } v17 = 0; v16 = 0; v15 = 0; v14 = 0; *(_DWORD *)v13 = 0; strncpy(v13, (const char *)v3, 0x14u); v7 = *(_DWORD *)v13; v8 = v14; v6 = &off_706F9C; v9 = v15; v10 = v16; v11 = v17; v12 = 0; v19 = 0; sub_43C470(v2 + 156, (int)&v6); if ( !v12 ) { v5 = (int)"Unknown table name"; goto LABEL_3; } if ( !sub_644900(v12, a2) || !sub_64A320(a2) ) return 0; return 1; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644B20) -------------------------------------------------------- bool __thiscall sub_644B20(int this, int a2) { int v2; // eax@1 bool result; // al@2 v2 = *(_DWORD *)(this + 67636); if ( v2 ) { result = sub_644900(v2, a2) && sub_64A320(a2); } else { sub_649F60(this, (int)"Record without table"); result = 0; } return result; } //----- (00644B70) -------------------------------------------------------- int __thiscall sub_644B70(void *this, int a2, int a3, int a4, int a5, int a6, const char *a7, int a8, int a9) { void *v9; // esi@1 int result; // eax@2 int (__stdcall **v11)(int, int); // [sp+Ch] [bp-3Ch]@1 int v12; // [sp+10h] [bp-38h]@1 int v13; // [sp+14h] [bp-34h]@1 int v14; // [sp+18h] [bp-30h]@1 int v15; // [sp+1Ch] [bp-2Ch]@1 int v16; // [sp+20h] [bp-28h]@1 void *v17; // [sp+24h] [bp-24h]@1 char v18; // [sp+28h] [bp-20h]@1 unsigned int v19; // [sp+38h] [bp-10h]@1 int v20; // [sp+44h] [bp-4h]@1 int v21; // [sp+48h] [bp+0h]@1 v19 = (unsigned int)&v21 ^ __security_cookie; v9 = this; sprintf(&v18, "%d", a8, (unsigned int)&v21 ^ __security_cookie); v13 = a3; v12 = a2; v16 = a6; v11 = &off_706F9C; v14 = a4; v15 = a5; v17 = 0; v20 = 0; sub_43C470((int)((char *)v9 + 156), (int)&v11); if ( v17 ) result = sub_644210(v17, a7, (int)&v18, a9); else result = 0; return result; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644C30) -------------------------------------------------------- int __thiscall sub_644C30(void *this, const char *a2, int a3, int a4, int a5, int a6, int a7, const char *a8, int a9, int a10, int a11) { void *v11; // esi@1 char v13; // [sp+14h] [bp-14h]@1 unsigned int v14; // [sp+24h] [bp-4h]@1 int v15; // [sp+28h] [bp+0h]@1 v14 = (unsigned int)&v15 ^ __security_cookie; v11 = this; sprintf(&v13, "%d", a9); return sub_644510(v11, a2, a3, a4, a5, a6, a7, a8, (int)&v13, a10, a11); } // 86FEB8: using guessed type int __security_cookie; //----- (00644CC0) -------------------------------------------------------- int __thiscall sub_644CC0(void *this, int a2, int a3, int a4, int a5, int a6) { int result; // eax@1 int (__stdcall **v7)(int, int); // [sp+0h] [bp-2Ch]@1 int v8; // [sp+4h] [bp-28h]@1 int v9; // [sp+8h] [bp-24h]@1 int v10; // [sp+Ch] [bp-20h]@1 int v11; // [sp+10h] [bp-1Ch]@1 int v12; // [sp+14h] [bp-18h]@1 int v13; // [sp+18h] [bp-14h]@1 unsigned int v14; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+28h] [bp-4h]@1 int v16; // [sp+2Ch] [bp+0h]@1 v14 = (unsigned int)&v16 ^ __security_cookie; v8 = a2; v9 = a3; v10 = a4; v7 = &off_706F9C; v11 = a5; v12 = a6; v13 = 0; v15 = 0; sub_43C470((int)((char *)this + 156), (int)&v7); result = v13; if ( v13 ) result = *(_WORD *)(v13 + 2100); return result; } // 706F9C: using guessed type int (__stdcall *off_706F9C)(int, int); // 86FEB8: using guessed type int __security_cookie; //----- (00644D60) -------------------------------------------------------- char __thiscall sub_644D60(int this, const char *a2) { const char *v2; // eax@1 const char *v3; // edx@2 char v4; // bl@3 int v5; // edx@6 const char v6; // cl@7 v2 = a2; if ( !a2 ) goto LABEL_13; v3 = a2; do v4 = *v3++; while ( v4 ); if ( v3 != a2 + 1 && strlen(a2) < 0x100 ) { v5 = this + 1 - (_DWORD)a2; do { v6 = *v2; v2[v5] = *v2; ++v2; } while ( v6 ); } else { LABEL_13: *(_DWORD *)(this + 1) = dword_707028; *(_DWORD *)(this + 5) = dword_70702C; LOBYTE(v2) = byte_707030; *(_BYTE *)(this + 9) = byte_707030; } return (char)v2; } // 707028: using guessed type int dword_707028; // 70702C: using guessed type int dword_70702C; // 707030: using guessed type char byte_707030; //----- (00644DD0) -------------------------------------------------------- char sub_644DD0(int a1, const char *a2, ...) { int v3; // eax@3 FILE *v4; // eax@10 FILE *v5; // eax@11 char *v6; // eax@13 char v7; // cl@14 struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-1514h]@3 char v9; // [sp+14h] [bp-1504h]@16 char v10; // [sp+1014h] [bp-504h]@5 char v11; // [sp+1414h] [bp-104h]@3 char v12; // [sp+1494h] [bp-84h]@3 unsigned int v13; // [sp+1514h] [bp-4h]@1 int v14; // [sp+1518h] [bp+0h]@1 va_list va; // [sp+1528h] [bp+10h]@1 va_start(va, a2); v13 = (unsigned int)&v14 ^ __security_cookie; if ( !*(_BYTE *)a1 ) return 1; GetLocalTime(&SystemTime); sprintf(&v12, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf( &v11, "%02d:%02d:%02d:%03d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond, SystemTime.wMilliseconds); v3 = *(_DWORD *)(a1 + 1316); if ( v3 ) { if ( v3 == 1 ) sprintf(&v10, "%s\\%s_%04d-%02d-%02d.txt", ".\\Log", a1 + 1, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); } else { sprintf( &v10, "%s\\%s_%04d-%02d-%02d %02d.txt", ".\\Log", a1 + 1, SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay, SystemTime.wHour); } if ( strcmp((const char *)(a1 + 284), &v10) ) { if ( *(_DWORD *)(a1 + 1308) ) fclose(*(FILE **)(a1 + 1308)); v4 = fopen(&v10, "a+"); *(_DWORD *)(a1 + 1308) = v4; if ( !v4 ) { _mkdir(".\\Log"); v5 = fopen(&v10, "a+"); *(_DWORD *)(a1 + 1308) = v5; if ( !v5 ) return 0; } v6 = &v10; do { v7 = *v6; v6[a1 + 284 - (_DWORD)&v10] = *v6; ++v6; } while ( v7 ); *(_DWORD *)(a1 + 1312) = 1; } vsprintf(&v9, a2, va); fprintf(*(FILE **)(a1 + 1308), "%06d %s %s\t%s\n", *(_DWORD *)(a1 + 1312), &v12, &v11, &v9); fflush(*(FILE **)(a1 + 1308)); ++*(_DWORD *)(a1 + 1312); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00645030) -------------------------------------------------------- int __thiscall sub_645030(int this, unsigned __int16 a2) { int result; // eax@2 int v3; // eax@4 if ( (unsigned int)a2 < *(_DWORD *)(this + 4) && a2 != -1 && (v3 = *(_DWORD *)(*(_DWORD *)(this + 2292) + 40 * a2)) != 0 ) result = v3 + 2; else result = 0; return result; } //----- (00645070) -------------------------------------------------------- char *__thiscall sub_645070(void *this, signed int a2) { char *result; // eax@2 if ( a2 < 11 ) result = (char *)this + 10 * a2 + 872; else result = 0; return result; } //----- (00645090) -------------------------------------------------------- signed int __stdcall sub_645090(int a1) { int v1; // eax@2 int v2; // eax@3 signed int result; // eax@4 if ( a1 && (v1 = sub_418CB0((int)&dword_14D20890, *(_WORD *)(a1 + 8))) != 0 && (v2 = *(_DWORD *)v1) != 0 ) result = *(_DWORD *)(v2 + 274); else result = 11; return result; } // 14D20890: using guessed type int dword_14D20890; //----- (006450D0) -------------------------------------------------------- int __thiscall sub_6450D0(void *this, int (__thiscall *a2)(_DWORD, _DWORD, _DWORD), int a3) { int v3; // edi@4 void *v4; // ebx@4 void *v5; // eax@4 int v6; // eax@4 int v7; // esi@4 int v8; // eax@8 int result; // eax@8 void *v10; // [sp+4h] [bp-4h]@1 v10 = this; if ( a2 && a3 && sub_5CF620((void *)a3) ) { v3 = sub_43BBE0(a3); v4 = sub_5CF620((void *)a3); v5 = sub_5CF620((void *)a3); v6 = sub_418CB0((int)&dword_14D20890, *((_WORD *)v5 + 4)); v7 = v6; if ( v3 && v4 && v6 && *(_DWORD *)v6 ) { v8 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 164))(v3, v4); result = a2(v10, *(_DWORD *)(*(_DWORD *)v7 + 274), v8); } else { result = 0; } } else { result = 0; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (00645170) -------------------------------------------------------- int __thiscall sub_645170(void *this, int a2, __int16 a3, __int16 a4) { int v4; // esi@1 int result; // eax@2 int v6; // edi@3 void *v7; // ebx@3 void *v8; // eax@3 int v9; // eax@3 int v10; // esi@3 int v11; // eax@7 void *v12; // [sp+4h] [bp-4h]@1 v4 = a2; v12 = this; if ( a2 ) { v6 = sub_43BBE0(a2); v7 = sub_5CF620((void *)v4); v8 = sub_5CF620((void *)v4); v9 = sub_418CB0((int)&dword_14D20890, *((_WORD *)v8 + 4)); v10 = v9; if ( v6 && v7 && v9 && *(_DWORD *)v9 ) { v11 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v6 + 164))(v6, v7); result = sub_62EFF0(v12, *(_DWORD *)(*(_DWORD *)v10 + 274), v11, a3, a4, (int)&a2); } else { result = 0; } } else { result = 0; } return result; } // 14D20890: using guessed type int dword_14D20890; //----- (00645210) -------------------------------------------------------- int __cdecl sub_645210(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)(a1 + 8); !*(_BYTE *)(i + 53); i = *(_DWORD *)(i + 8) ) result = i; return result; } //----- (00645230) -------------------------------------------------------- int __cdecl sub_645230(int a1) { int result; // eax@1 int i; // ecx@1 result = a1; for ( i = *(_DWORD *)a1; !*(_BYTE *)(i + 53); i = *(_DWORD *)i ) result = i; return result; } //----- (00645250) -------------------------------------------------------- void *__thiscall sub_645250(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 53) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 53) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 53); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 53); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (006452B0) -------------------------------------------------------- void *__thiscall sub_6452B0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 19303, 378) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 19303, 19303, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00645370) -------------------------------------------------------- void *__thiscall sub_645370(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 4770, 222) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 4770, 4770, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00645430) -------------------------------------------------------- void *__thiscall sub_645430(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 616, 62) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 616, 616, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00645500) -------------------------------------------------------- void *__thiscall sub_645500(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1, 32) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1, 1, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (006455B0) -------------------------------------------------------- void *__thiscall sub_6455B0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 18, 36) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 18, 18, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00645650) -------------------------------------------------------- void *__thiscall sub_645650(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 55, 66) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 55, 55, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00645710) -------------------------------------------------------- void *__thiscall sub_645710(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 70, 10) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 70, 70, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (006457D0) -------------------------------------------------------- void *__thiscall sub_6457D0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 34, 38) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 34, 34, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00645870) -------------------------------------------------------- void *__thiscall sub_645870(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70713C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70713C: using guessed type int (__thiscall *off_70713C)(void *, char); //----- (006458A0) -------------------------------------------------------- void *__thiscall sub_6458A0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707144; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707144: using guessed type int (__thiscall *off_707144)(void *, char); //----- (006458D0) -------------------------------------------------------- void *__thiscall sub_6458D0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70714C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70714C: using guessed type int (__thiscall *off_70714C)(void *, char); //----- (00645900) -------------------------------------------------------- void *__thiscall sub_645900(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707154; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707154: using guessed type int (__thiscall *off_707154)(void *, char); //----- (00645930) -------------------------------------------------------- void *__thiscall sub_645930(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70715C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70715C: using guessed type int (__thiscall *off_70715C)(void *, char); //----- (00645960) -------------------------------------------------------- void *__thiscall sub_645960(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707164; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707164: using guessed type int (__thiscall *off_707164)(void *, char); //----- (00645990) -------------------------------------------------------- void *__thiscall sub_645990(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70716C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70716C: using guessed type int (__thiscall *off_70716C)(void *, char); //----- (006459C0) -------------------------------------------------------- void *__thiscall sub_6459C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707174; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707174: using guessed type int (__thiscall *off_707174)(void *, char); //----- (006459F0) -------------------------------------------------------- void *__thiscall sub_6459F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70717C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70717C: using guessed type int (__thiscall *off_70717C)(void *, char); //----- (00645A20) -------------------------------------------------------- void *__thiscall sub_645A20(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707184; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707184: using guessed type int (__thiscall *off_707184)(void *, char); //----- (00645A50) -------------------------------------------------------- void *__thiscall sub_645A50(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_70718C; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 70718C: using guessed type int (__thiscall *off_70718C)(void *, char); //----- (00645A80) -------------------------------------------------------- void *__thiscall sub_645A80(void *this) { void *result; // eax@1 int v2; // ecx@1 int i; // edx@3 int v4; // ecx@4 int v5; // edx@5 result = this; v2 = *(_DWORD *)this; if ( *(_BYTE *)(v2 + 53) ) { *(_DWORD *)result = *(_DWORD *)(v2 + 8); return result; } i = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 53) ) { v4 = *(_DWORD *)(i + 8); if ( !*(_BYTE *)(v4 + 53) ) { do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( !*(_BYTE *)(v4 + 53) ); *(_DWORD *)result = v5; return result; } LABEL_11: *(_DWORD *)result = i; return result; } for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 53); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)i ) break; *(_DWORD *)result = i; } if ( !*(_BYTE *)(*(_DWORD *)result + 53) ) goto LABEL_11; return result; } //----- (00645AE0) -------------------------------------------------------- int __thiscall sub_645AE0(int this) { int v1; // edi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_70713C; memset((void *)(v1 + 64), 0, 0x17Au); sub_639920(v1 + 444); *(_DWORD *)(v1 + 444) = &off_707144; memset((void *)(v1 + 508), 0, 0xDEu); sub_639920(v1 + 732); *(_DWORD *)(v1 + 732) = &off_70714C; memset((void *)(v1 + 796), 0, 0x3Eu); sub_639920(v1 + 860); *(_DWORD *)(v1 + 860) = &off_707154; *(_DWORD *)(v1 + 924) = 0; sub_639920(v1 + 928); *(_DWORD *)(v1 + 928) = &off_70715C; *(_DWORD *)(v1 + 992) = 0; *(_DWORD *)(v1 + 996) = 0; *(_DWORD *)(v1 + 1000) = 0; *(_DWORD *)(v1 + 1004) = 0; *(_DWORD *)(v1 + 1008) = 0; *(_DWORD *)(v1 + 1012) = 0; *(_DWORD *)(v1 + 1016) = 0; *(_DWORD *)(v1 + 1020) = 0; sub_639920(v1 + 1024); *(_DWORD *)(v1 + 1024) = &off_707164; *(_DWORD *)(v1 + 1088) = 0; *(_DWORD *)(v1 + 1092) = 0; *(_DWORD *)(v1 + 1096) = 0; *(_DWORD *)(v1 + 1100) = 0; *(_DWORD *)(v1 + 1104) = 0; *(_DWORD *)(v1 + 1108) = 0; *(_DWORD *)(v1 + 1112) = 0; *(_DWORD *)(v1 + 1116) = 0; *(_DWORD *)(v1 + 1120) = 0; sub_639920(v1 + 1124); *(_DWORD *)(v1 + 1124) = &off_70716C; memset((void *)(v1 + 1188), 0, 0x42u); return v1; } // 70713C: using guessed type int (__thiscall *off_70713C)(void *, char); // 707144: using guessed type int (__thiscall *off_707144)(void *, char); // 70714C: using guessed type int (__thiscall *off_70714C)(void *, char); // 707154: using guessed type int (__thiscall *off_707154)(void *, char); // 70715C: using guessed type int (__thiscall *off_70715C)(void *, char); // 707164: using guessed type int (__thiscall *off_707164)(void *, char); // 70716C: using guessed type int (__thiscall *off_70716C)(void *, char); //----- (00645C80) -------------------------------------------------------- void __thiscall sub_645C80(void *this) { int v1; // esi@1 int v2; // ecx@1 v1 = (int)this; v2 = (int)((char *)this + 1124); *(_DWORD *)v2 = &off_70716C; sub_639940(v2); *(_DWORD *)(v1 + 1024) = &off_707164; sub_639940(v1 + 1024); *(_DWORD *)(v1 + 928) = &off_70715C; sub_639940(v1 + 928); *(_DWORD *)(v1 + 860) = &off_707154; sub_639940(v1 + 860); *(_DWORD *)(v1 + 732) = &off_70714C; sub_639940(v1 + 732); *(_DWORD *)(v1 + 444) = &off_707144; sub_639940(v1 + 444); *(_DWORD *)v1 = &off_70713C; sub_639940(v1); } // 70713C: using guessed type int (__thiscall *off_70713C)(void *, char); // 707144: using guessed type int (__thiscall *off_707144)(void *, char); // 70714C: using guessed type int (__thiscall *off_70714C)(void *, char); // 707154: using guessed type int (__thiscall *off_707154)(void *, char); // 70715C: using guessed type int (__thiscall *off_70715C)(void *, char); // 707164: using guessed type int (__thiscall *off_707164)(void *, char); // 70716C: using guessed type int (__thiscall *off_70716C)(void *, char); //----- (00645D50) -------------------------------------------------------- char __thiscall sub_645D50(int this, const char *a2) { int v2; // esi@1 char result; // al@2 int v4; // edx@3 unsigned int v5; // ebx@3 int v6; // eax@5 int v7; // eax@9 void *v8; // eax@13 int v9; // eax@15 unsigned int v10; // ebx@15 unsigned int v11; // ecx@17 int v12; // eax@18 int v13; // eax@22 int v14; // ecx@24 int v15; // eax@25 unsigned int v16; // ebx@28 int v17; // eax@30 int v18; // eax@33 int v19; // [sp+10h] [bp+8h]@24 int v20; // [sp+10h] [bp+8h]@32 v2 = this; if ( sub_627480((void *)(this + 1036), a2, 19303, 378) ) { v4 = *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40); v5 = 0; *(_DWORD *)v2 = v4; *(_DWORD *)(v2 + 4) = 0; if ( v4 ) { do { if ( v5 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v6 = sub_626BC0(v2 + 1036, v5); else v6 = v2 + 1100; if ( *(_DWORD *)(v2 + 4) < (unsigned int)*(_WORD *)v6 ) { if ( v5 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v7 = sub_626BC0(v2 + 1036, v5); else v7 = v2 + 1100; *(_DWORD *)(v2 + 4) = *(_WORD *)v7; } ++v5; } while ( v5 < *(_DWORD *)v2 ); } v8 = *(void **)(v2 + 2292); ++*(_DWORD *)(v2 + 4); if ( v8 ) { sub_6530A4(v8); *(_DWORD *)(v2 + 2292) = 0; } v9 = unknown_libname_130(40 * *(_DWORD *)(v2 + 4) | -((unsigned __int8)(40 * (unsigned __int64)*(_DWORD *)(v2 + 4) >> 32) != 0)); v10 = 0; *(_DWORD *)(v2 + 2292) = v9; if ( v9 ) { v11 = 0; if ( *(_DWORD *)(v2 + 4) > 0u ) { v12 = 0; do { *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292)) = v10; *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292) + 4) = v10; *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292) + 8) = v10; *(_WORD *)(v12 + *(_DWORD *)(v2 + 2292) + 16) = -1; v10 = 0; *(_DWORD *)(v12 + *(_DWORD *)(v2 + 2292) + 24) = 0; *(_BYTE *)(v12 + *(_DWORD *)(v2 + 2292) + 28) = -1; ++v11; v12 += 40; } while ( v11 < *(_DWORD *)(v2 + 4) ); } if ( *(_DWORD *)v2 ) { do { if ( v10 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v13 = sub_626BC0(v2 + 1036, v10); else v13 = v2 + 1100; v14 = *(_WORD *)v13; v19 = *(_WORD *)v13; if ( v10 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) { v15 = sub_626BC0(v2 + 1036, v10); v14 = v19; } else { v15 = v2 + 1100; } ++v10; *(_DWORD *)(*(_DWORD *)(v2 + 2292) + 40 * v14) = v15; } while ( v10 < *(_DWORD *)v2 ); } v16 = 0; if ( *(_DWORD *)v2 ) { do { if ( v16 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v17 = sub_626BC0(v2 + 1036, v16); else v17 = v2 + 1100; v20 = *(_WORD *)v17; if ( v16 < *(_DWORD *)(*(_DWORD *)(v2 + 1088) + 40) ) v18 = sub_626BC0(v2 + 1036, v16); else v18 = v2 + 1100; sub_639590((void *)(v2 + 8), (unsigned __int8 *)(v18 + 2), v20); ++v16; } while ( v16 < *(_DWORD *)v2 ); } result = 1; } else { result = 0; } } else { result = 0; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (00645F60) -------------------------------------------------------- void __thiscall sub_645F60(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 2292); if ( v2 ) { operator delete(v2); *(_DWORD *)(v1 + 2292) = 0; } sub_645C80((void *)(v1 + 1036)); sub_639560((void *)(v1 + 8)); } //----- (00645FE0) -------------------------------------------------------- int __thiscall sub_645FE0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 int v4; // ecx@1 unsigned int v5; // edi@2 int v6; // ebx@10 int v7; // eax@13 unsigned int v8; // edi@19 int v9; // eax@21 int v10; // eax@25 int v11; // eax@29 int v12; // ecx@29 unsigned int v13; // ecx@31 int v14; // eax@32 int v15; // eax@36 int v16; // ecx@38 int v17; // eax@39 int v18; // ecx@43 int v19; // eax@43 int v20; // eax@47 int v21; // eax@50 int v22; // eax@53 unsigned int v23; // edi@57 int v24; // eax@59 int v25; // eax@65 unsigned __int8 v26; // bl@68 int v27; // edi@69 int v28; // eax@70 int v29; // ebx@82 signed int v30; // eax@84 unsigned int v31; // edi@84 int v32; // edi@92 signed int v33; // eax@95 signed __int16 v34; // di@95 signed int v35; // eax@99 signed __int16 v36; // di@99 signed int v37; // eax@103 signed __int16 v38; // di@103 signed int v39; // eax@107 signed __int16 v40; // di@107 signed int v41; // eax@111 signed __int16 v42; // di@111 signed int v43; // eax@115 signed __int16 v44; // di@115 signed int v45; // eax@119 signed __int16 v46; // di@119 signed int v47; // eax@123 signed __int16 v48; // di@123 signed int v49; // eax@127 signed __int16 v50; // di@127 signed int v51; // eax@131 signed __int16 v52; // di@131 signed int v53; // eax@135 signed __int16 v54; // di@135 signed int v55; // eax@139 signed __int16 v56; // di@139 signed int v57; // eax@143 signed __int16 v58; // di@143 signed int v59; // eax@147 signed __int16 v60; // di@147 signed int v61; // eax@151 signed __int16 v62; // di@151 signed int v63; // eax@155 signed __int16 v64; // di@155 signed int v65; // eax@159 signed __int16 v66; // di@159 signed int v67; // eax@163 signed __int16 v68; // di@163 signed int v69; // eax@167 signed __int16 v70; // di@167 signed int v71; // eax@171 signed __int16 v72; // di@171 signed int v73; // eax@175 signed __int16 v74; // di@175 signed int v75; // eax@179 signed __int16 v76; // di@179 signed int v77; // eax@183 signed __int16 v78; // di@183 signed int v79; // eax@187 signed __int16 v80; // di@187 signed int v81; // eax@191 signed __int16 v82; // di@191 signed int v83; // eax@195 signed __int16 v84; // di@195 signed int v85; // eax@199 signed __int16 v86; // di@199 signed int v87; // eax@203 signed __int16 v88; // di@203 signed int v89; // eax@207 signed __int16 v90; // di@207 signed int v91; // eax@211 signed __int16 v92; // di@211 signed int v93; // eax@215 signed __int16 v94; // di@215 signed int v95; // eax@219 signed __int16 v96; // di@219 signed int v97; // eax@223 signed __int16 v98; // di@223 signed int v99; // eax@227 signed __int16 v100; // di@227 int v101; // eax@233 int v102; // ecx@233 int v103; // ecx@236 int v104; // eax@241 int v105; // eax@245 int v106; // eax@248 signed int v107; // edi@250 int v108; // ebx@250 int v109; // eax@252 signed int v110; // eax@258 signed __int16 v111; // di@258 signed int v112; // eax@262 signed __int16 v113; // di@262 signed int v114; // eax@266 signed __int16 v115; // di@266 signed int v116; // eax@270 signed __int16 v117; // di@270 signed int v118; // eax@274 signed __int16 v119; // di@274 int v120; // edx@278 unsigned int v121; // edi@278 unsigned __int8 *v122; // eax@280 signed int v123; // eax@282 int v124; // ecx@284 int v125; // eax@286 int v126; // eax@291 int result; // eax@295 unsigned int v128; // ebx@295 unsigned __int8 *v129; // eax@297 signed int v130; // eax@299 int v131; // eax@302 signed int v132; // eax@304 int v133; // eax@309 int v134; // ecx@309 int v135; // eax@316 int v136; // eax@320 int v137; // eax@324 int v138; // eax@328 int v139; // eax@332 int v140; // [sp-4h] [bp-188h]@293 int v141; // [sp+Ch] [bp-178h]@7 int v142; // [sp+Ch] [bp-178h]@66 int v143; // [sp+Ch] [bp-178h]@295 int v144; // [sp+10h] [bp-174h]@4 int v145; // [sp+10h] [bp-174h]@19 signed int v146; // [sp+10h] [bp-174h]@278 int v147; // [sp+10h] [bp-174h]@307 signed int v148; // [sp+14h] [bp-170h]@19 int v149; // [sp+14h] [bp-170h]@284 unsigned __int16 v150; // [sp+14h] [bp-170h]@299 void *v151; // [sp+14h] [bp-170h]@308 int v152; // [sp+18h] [bp-16Ch]@43 int v153; // [sp+18h] [bp-16Ch]@238 int v154; // [sp+1Ch] [bp-168h]@38 unsigned int v155; // [sp+1Ch] [bp-168h]@236 unsigned int v156; // [sp+20h] [bp-164h]@34 unsigned int v157; // [sp+20h] [bp-164h]@80 unsigned int v158; // [sp+20h] [bp-164h]@237 int (__thiscall **v159)(void *, char); // [sp+24h] [bp-160h]@231 int v160; // [sp+58h] [bp-12Ch]@232 int v161; // [sp+64h] [bp-120h]@231 int v162; // [sp+68h] [bp-11Ch]@231 int v163; // [sp+6Ch] [bp-118h]@231 char v164; // [sp+70h] [bp-114h]@231 char v165; // [sp+74h] [bp-110h]@235 unsigned int v166; // [sp+174h] [bp-10h]@1 int v167; // [sp+180h] [bp-4h]@231 int v168; // [sp+184h] [bp+0h]@1 v166 = (unsigned int)&v168 ^ __security_cookie; v1 = this; sub_6452B0((void *)(this + 1036), "../9Data/Shine/ItemInfo.shn"); sub_645370((void *)(v1 + 1480), "../9Data/Shine/ItemInfoServer.shn"); sub_645430((void *)(v1 + 1768), "../9Data/Shine/GradeItemOption.shn"); sub_63DF50((void *)(v1 + 1896), "../9Data/Shine/ItemDropLog.shn"); sub_645500((void *)(v1 + 1964), "../9Data/Shine/ItemSort.shn"); sub_6455B0((void *)(v1 + 2060), "../9Data/Shine/ItemInvenDel.shn"); sub_645650((void *)(v1 + 2160), "../9Data/Shine/ItemMoney.shn"); v2 = *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40); v3 = *(_DWORD *)(v1 + 1532); *(_DWORD *)v1 = v2; v4 = *(_DWORD *)(v3 + 40); if ( v2 != v4 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::idb_Load : DataNumber not match", v2 == v4); v5 = 0; if ( *(_DWORD *)v1 ) { do { if ( v5 < *(_DWORD *)(*(_DWORD *)(v1 + 1532) + 40) ) v144 = sub_626BC0(v1 + 1480, v5); else v144 = v1 + 1544; if ( v5 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) v141 = sub_626BC0(v1 + 1036, v5); else v141 = v1 + 1100; if ( v5 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) v6 = sub_626BC0(v1 + 1036, v5); else v6 = v1 + 1100; if ( v5 < *(_DWORD *)(*(_DWORD *)(v1 + 1532) + 40) ) v7 = sub_626BC0(v1 + 1480, v5); else v7 = v1 + 1544; if ( *(_WORD *)v6 != *(_DWORD *)v7 ) { sub_639150(&unk_86DDD8, (int)"Diff : ", *(_WORD *)v141, *(_DWORD *)v144); loc_6391B0("ItemDataBox::idb_Load"); } ++v5; } while ( v5 < *(_DWORD *)v1 ); } loc_6391B0("ItemDataBox::idb_Load"); } v8 = 0; v148 = *(_DWORD *)(*(_DWORD *)(v1 + 1948) + 40); v145 = 0; *(_DWORD *)(v1 + 4) = 0; if ( *(_DWORD *)v1 ) { do { if ( v8 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) v9 = sub_626BC0(v1 + 1036, v8); else v9 = v1 + 1100; if ( *(_DWORD *)(v1 + 4) < (unsigned int)*(_WORD *)v9 ) { if ( v8 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) v10 = sub_626BC0(v1 + 1036, v8); else v10 = v1 + 1100; *(_DWORD *)(v1 + 4) = *(_WORD *)v10; } ++v8; } while ( v8 < *(_DWORD *)v1 ); } ++*(_DWORD *)(v1 + 4); v11 = unknown_libname_130(40 * *(_DWORD *)(v1 + 4) | -((unsigned __int8)(40 * (unsigned __int64)*(_DWORD *)(v1 + 4) >> 32) != 0)); v12 = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 2292) = v11; if ( v11 == 0 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Memory leak for index in Item", v12); loc_6391B0("ItemDataBox::idb_Load"); } v13 = 0; if ( *(_DWORD *)(v1 + 4) > 0u ) { v14 = 0; do { *(_DWORD *)(v14 + *(_DWORD *)(v1 + 2292)) = 0; *(_DWORD *)(v14 + *(_DWORD *)(v1 + 2292) + 4) = 0; *(_DWORD *)(v14 + *(_DWORD *)(v1 + 2292) + 8) = 0; *(_BYTE *)(v14 + *(_DWORD *)(v1 + 2292) + 12) = 0; *(_WORD *)(v14 + *(_DWORD *)(v1 + 2292) + 14) = 0; *(_WORD *)(v14 + *(_DWORD *)(v1 + 2292) + 16) = -1; *(_DWORD *)(v14 + *(_DWORD *)(v1 + 2292) + 24) = 0; *(_BYTE *)(v14 + *(_DWORD *)(v1 + 2292) + 28) = -1; *(_DWORD *)(v14 + *(_DWORD *)(v1 + 2292) + 32) = 0; *(_DWORD *)(v14 + *(_DWORD *)(v1 + 2292) + 36) = 0; ++v13; v14 += 40; } while ( v13 < *(_DWORD *)(v1 + 4) ); } v156 = 0; if ( *(_DWORD *)v1 > 0u ) { do { if ( v156 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) v15 = sub_626BC0(v1 + 1036, v156); else v15 = v1 + 1100; v16 = *(_WORD *)v15; v154 = *(_WORD *)v15; if ( v156 < *(_DWORD *)(*(_DWORD *)(v1 + 1532) + 40) ) { v17 = sub_626BC0(v1 + 1480, v156); v16 = v154; } else { v17 = v1 + 1544; } if ( v16 != *(_DWORD *)v17 ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::idb_Load : iteminfo iteminfoserver Order not match", v154); loc_6391B0("ItemDataBox::idb_Load"); v16 = v154; } v18 = 40 * v16; v19 = v18 + *(_DWORD *)(v1 + 2292); v152 = v18; if ( *(_DWORD *)v19 || *(_DWORD *)(v19 + 4) ) { sub_639100(&unk_86DDD8, (int)"Duplicate Item handle", v154); loc_6391B0("ItemDataBox::idb_Load"); v18 = v152; } if ( v156 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) { v20 = sub_626BC0(v1 + 1036, v156); v18 = v152; } else { v20 = v1 + 1100; } *(_DWORD *)(v18 + *(_DWORD *)(v1 + 2292)) = v20; if ( v156 < *(_DWORD *)(*(_DWORD *)(v1 + 1532) + 40) ) { v21 = sub_626BC0(v1 + 1480, v156); v18 = v152; } else { v21 = v1 + 1544; } *(_DWORD *)(v18 + *(_DWORD *)(v1 + 2292) + 4) = v21; if ( v156 < *(_DWORD *)(*(_DWORD *)(v1 + 1088) + 40) ) v22 = sub_626BC0(v1 + 1036, v156); else v22 = v1 + 1100; sub_639590((void *)(v1 + 8), (unsigned __int8 *)(v22 + 2), v154); if ( *(_DWORD *)(*(_DWORD *)(v152 + *(_DWORD *)(v1 + 2292)) + 374) == 3 ) *(_WORD *)(v1 + 2360) = v154; v23 = 0; if ( v148 > 0 ) { while ( 1 ) { v24 = v23 < *(_DWORD *)(*(_DWORD *)(v1 + 1948) + 40) ? sub_626BC0(v1 + 1896, v23) : v1 + 1960; if ( *(_DWORD *)v24 == v154 ) break; ++v23; if ( (signed int)v23 >= v148 ) goto LABEL_65; } ++v145; *(_DWORD *)(v152 + *(_DWORD *)(v1 + 2292) + 24) = v24; } LABEL_65: v25 = *(_DWORD *)(v1 + 2016); if ( v25 ) v142 = *(_DWORD *)(v25 + 40); else LOBYTE(v142) = 0; v26 = 0; if ( !(_BYTE)v142 ) goto LABEL_76; while ( 1 ) { v27 = sub_626BC0(v1 + 1964, v26); v28 = v156 < *(_DWORD *)(*(_DWORD *)(v1 + 1532) + 40) ? sub_626BC0(v1 + 1480, v156) : v1 + 1544; if ( !strcmp((const char *)v27, (const char *)(v28 + 186)) ) break; ++v26; if ( v26 >= (unsigned __int8)v142 ) goto LABEL_76; } *(_BYTE *)(v152 + *(_DWORD *)(v1 + 2292) + 28) = v26; if ( v26 >= (unsigned __int8)v142 ) { LABEL_76: sub_639100(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Invalid ItemSort Index", v154); loc_6391B0("ItemDataBox::idb_Load"); } ++v156; } while ( v156 < *(_DWORD *)v1 ); } if ( v148 != v145 ) sub_639100(&unk_86DDD8, (int)"ItemDataBox::idb_Load : ItemDropLog - Not found item cnt", v145); v157 = 0; if ( *(_DWORD *)(*(_DWORD *)(v1 + 1820) + 40) ) { do { if ( v157 < *(_DWORD *)(*(_DWORD *)(v1 + 1820) + 40) ) v29 = sub_626BC0(v1 + 1768, v157); else v29 = v1 + 1832; v30 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)v29); LOWORD(v31) = -1; if ( v30 != -1 ) LOWORD(v31) = v30; if ( (_WORD)v31 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", v29); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } v31 = (unsigned __int16)v31; if ( (unsigned __int16)v31 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", v29); loc_6391B0("ItemDataBox::idb_Load"); } if ( v31 >= *(_DWORD *)(v1 + 4) ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", v29); loc_6391B0("ItemDataBox::idb_Load"); } v32 = 40 * v31; if ( *(_DWORD *)(v32 + *(_DWORD *)(v1 + 2292) + 8) ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load(GradeItemOption) : Duplicate Item handle", v29); loc_6391B0("ItemDataBox::idb_Load"); } *(_DWORD *)(v32 + *(_DWORD *)(v1 + 2292) + 8) = v29; ++v157; } while ( v157 < *(_DWORD *)(*(_DWORD *)(v1 + 1820) + 40) ); } v33 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)&off_707524); v34 = -1; if ( v33 != -1 ) v34 = v33; if ( v34 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)&off_707524); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2296) = v34; v35 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SilverWings"); v36 = -1; if ( v35 != -1 ) v36 = v35; if ( v36 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SilverWings"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2300) = v36; v37 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"PresentBox"); v38 = -1; if ( v37 != -1 ) v38 = v37; if ( v38 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"PresentBox"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2302) = v38; *(_WORD *)(v1 + 2298) = -1; v39 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"FreeStatusReloadAll"); v40 = -1; if ( v39 != -1 ) v40 = v39; if ( v40 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"FreeStatusReloadAll"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2304) = v40; v41 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SkillReloadbundleAll"); v42 = -1; if ( v41 != -1 ) v42 = v41; if ( v42 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SkillReloadbundleAll"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2306) = v42; v43 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"FreeStatusReloadOne"); v44 = -1; if ( v43 != -1 ) v44 = v43; if ( v44 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"FreeStatusReloadOne"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2308) = v44; v45 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SkillReloadbundleOne"); v46 = -1; if ( v45 != -1 ) v46 = v45; if ( v46 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SkillReloadbundleOne"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2310) = v46; v47 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"LicenseClear"); v48 = -1; if ( v47 != -1 ) v48 = v47; if ( v48 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"LicenseClear"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2312) = v48; v49 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"House_MushRoom"); v50 = -1; if ( v49 != -1 ) v50 = v49; if ( v50 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"House_MushRoom"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2314) = v50; v51 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"HPMPotion1"); v52 = -1; if ( v51 != -1 ) v52 = v51; if ( v52 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"HPMPotion1"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2316) = v52; v53 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"HPMPotion2"); v54 = -1; if ( v53 != -1 ) v54 = v53; if ( v54 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"HPMPotion2"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2318) = v54; v55 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"HPMPotion0"); v56 = -1; if ( v55 != -1 ) v56 = v55; if ( v56 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"HPMPotion0"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2320) = v56; v57 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"HPMPotion3"); v58 = -1; if ( v57 != -1 ) v58 = v57; if ( v58 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"HPMPotion3"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2322) = v58; v59 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SPMPotion1"); v60 = -1; if ( v59 != -1 ) v60 = v59; if ( v60 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SPMPotion1"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2324) = v60; v61 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SPMPotion2"); v62 = -1; if ( v61 != -1 ) v62 = v61; if ( v62 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SPMPotion2"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2326) = v62; v63 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SPMPotion0"); v64 = -1; if ( v63 != -1 ) v64 = v63; if ( v64 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SPMPotion0"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2328) = v64; v65 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"SPMPotion3"); v66 = -1; if ( v65 != -1 ) v66 = v65; if ( v66 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"SPMPotion3"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2330) = v66; v67 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"Roar"); v68 = -1; if ( v67 != -1 ) v68 = v67; if ( v68 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"Roar"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2332) = v68; v69 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"ProdReload01"); v70 = -1; if ( v69 != -1 ) v70 = v69; if ( v70 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"ProdReload01"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2334) = v70; v71 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"GoddessWing"); v72 = -1; if ( v71 != -1 ) v72 = v71; if ( v72 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"GoddessWing"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2336) = v72; v73 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"MemoryFeather"); v74 = -1; if ( v73 != -1 ) v74 = v73; if ( v74 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"MemoryFeather"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2338) = v74; v75 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"WingStone01_1"); v76 = -1; if ( v75 != -1 ) v76 = v75; if ( v76 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"WingStone01_1"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2340) = v76; v77 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"KQ_SoulCrystal"); v78 = -1; if ( v77 != -1 ) v78 = v77; if ( v78 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"KQ_SoulCrystal"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2342) = v78; v79 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"Karis"); v80 = -1; if ( v79 != -1 ) v80 = v79; if ( v80 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"Karis"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2354) = v80; v81 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"GuildName"); v82 = -1; if ( v81 != -1 ) v82 = v81; if ( v82 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"GuildName"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2356) = v82; v83 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"GuildTendency"); v84 = -1; if ( v83 != -1 ) v84 = v83; if ( v84 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"GuildTendency"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2358) = v84; v85 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"IN_MoneyCard00"); v86 = -1; if ( v85 != -1 ) v86 = v85; if ( v86 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"IN_MoneyCard00"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2362) = v86; v87 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"EnchantSocketReload"); v88 = -1; if ( v87 != -1 ) v88 = v87; if ( v88 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"EnchantSocketReload"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2364) = v88; v89 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"EnchantSocketAdd"); v90 = -1; if ( v89 != -1 ) v90 = v89; if ( v90 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"EnchantSocketAdd"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2366) = v90; v91 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"LifeDust"); v92 = -1; if ( v91 != -1 ) v92 = v91; if ( v92 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"LifeDust"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2368) = v92; v93 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"RandomOption"); v94 = -1; if ( v93 != -1 ) v94 = v93; if ( v94 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"RandomOption"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2370) = v94; v95 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"ClassChange"); v96 = -1; if ( v95 != -1 ) v96 = v95; if ( v96 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"ClassChange"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2372) = v96; v97 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"WorldLink"); v98 = -1; if ( v97 != -1 ) v98 = v97; if ( v98 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"WorldLink"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2374) = v98; v99 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"RandomOption_Recover"); v100 = -1; if ( v99 != -1 ) v100 = v99; if ( v100 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"RandomOption_Recover"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2376) = v100; sub_639920((int)&v159); v159 = &off_707174; v161 = 0; v162 = 0; v163 = 0; v164 = 0; v167 = 0; if ( !sub_627480(&v159, "../9Data/Shine/WeaponAttrib.shn", 308, 13) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)"../9Data/Shine/WeaponAttrib.shn"); if ( v160 ) { v101 = *(_DWORD *)v160; v102 = *(_DWORD *)v160; } else { v101 = 0; v102 = 0; } sprintf(&v165, "Code:%X:%d\tSHN:%X:%d", 308, 308, v102, v101); sub_639100(&unk_86DDD8, (int)&v165, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } v103 = v160; v155 = 0; if ( *(_DWORD *)(v160 + 40) > 0 ) { do { v158 = 0; if ( *(_DWORD *)(v1 + 4) ) { v153 = 0; do { if ( *(_DWORD *)(v153 + *(_DWORD *)(v1 + 2292)) ) { if ( v155 < *(_DWORD *)(v103 + 40) ) { v104 = sub_626BC0((int)&v159, v155); v103 = v160; } else { v104 = (int)&v161; } if ( *(_DWORD *)(*(_DWORD *)(v153 + *(_DWORD *)(v1 + 2292)) + 232) == *(_DWORD *)v104 ) { if ( v155 < *(_DWORD *)(v103 + 40) ) v105 = sub_626BC0((int)&v159, v155); else v105 = (int)&v161; *(_BYTE *)(v153 + *(_DWORD *)(v1 + 2292) + 12) = *(_BYTE *)(v105 + 6); if ( v155 < *(_DWORD *)(v160 + 40) ) v106 = sub_626BC0((int)&v159, v155); else v106 = (int)&v161; *(_WORD *)(v153 + *(_DWORD *)(v1 + 2292) + 14) = *(_WORD *)(v106 + 4); v107 = 0; v108 = v153 + 18; do { if ( v155 < *(_DWORD *)(v160 + 40) ) v109 = sub_626BC0((int)&v159, v155); else v109 = (int)&v161; *(_WORD *)(v108 + *(_DWORD *)(v1 + 2292)) = *(_WORD *)(v107 + v109 + 7); v107 += 2; v108 += 2; } while ( v107 < 6 ); v103 = v160; } } v153 += 40; ++v158; } while ( v158 < *(_DWORD *)(v1 + 4) ); } ++v155; } while ( (signed int)v155 < *(_DWORD *)(v103 + 40) ); } v167 = -1; v159 = &off_707174; sub_639940((int)&v159); v110 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"ProposeRing"); v111 = -1; if ( v110 != -1 ) v111 = v110; if ( v111 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"ProposeRing"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2344) = v111; v112 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"InvitationCard"); v113 = -1; if ( v112 != -1 ) v113 = v112; if ( v113 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"InvitationCard"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2346) = v113; v114 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"WeddingCoupon"); v115 = -1; if ( v114 != -1 ) v115 = v114; if ( v115 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"WeddingCoupon"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2348) = v115; v116 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"MiniWedding01_1"); v117 = -1; if ( v116 != -1 ) v117 = v116; if ( v117 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"MiniWedding01_1"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } *(_WORD *)(v1 + 2350) = v117; v118 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)"InstantDivorce"); v119 = -1; if ( v118 != -1 ) v119 = v118; if ( v119 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (int)"InstantDivorce"); loc_6391B0("ItemDataBox::idb_MakeSpecialID"); } v120 = *(_DWORD *)(v1 + 2112); *(_WORD *)(v1 + 2352) = v119; v121 = 0; v146 = *(_DWORD *)(v120 + 40); if ( v146 <= 0 ) { LABEL_295: result = *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40); v128 = 0; v143 = result; if ( result <= 0 ) return result; while ( 1 ) { v129 = (unsigned __int8 *)(v128 < *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ? sub_626BC0(v1 + 2160, v128) : v1 + 2224); v130 = sub_639620((void *)(v1 + 8), v129); v150 = v130; if ( v130 == -1 ) break; if ( (_WORD)v130 == -1 ) break; if ( v128 < *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ) v131 = sub_626BC0(v1 + 2160, v128); else v131 = v1 + 2224; v132 = sub_639620((void *)(v1 + 8), (unsigned __int8 *)(v131 + 32)); if ( v132 == -1 || (_WORD)v132 == -1 ) { if ( v128 < *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ) v136 = sub_626BC0(v1 + 2160, v128); else v136 = v1 + 2224; sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Invalid ItemMoney IM_MoneyIDX", v136 + 32); v140 = (int)"ItemDataBox::idb_Load : Invalid ItemMoney IM_MoneyIDX"; return loc_6391B0(v140); } if ( v150 == (_WORD)v132 ) { if ( v128 < *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ) v137 = sub_626BC0(v1 + 2160, v128); else v137 = v1 + 2224; sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Same ItemIndex, MoneyIndex", v137); v140 = (int)"ItemDataBox::idb_Load : Same ItemIndex, MoneyIndex"; return loc_6391B0(v140); } v147 = 40 * v150; if ( *(_DWORD *)(40 * v150 + *(_DWORD *)(v1 + 2292) + 36) ) { if ( v128 < *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ) v138 = sub_626BC0(v1 + 2160, v128); else v138 = v1 + 2224; sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Duplicate ItemMoney IM_ItemIDX", v138 + 32); v140 = (int)"ItemDataBox::idb_Load : Duplicate ItemMoney IM_ItemIDX"; return loc_6391B0(v140); } v151 = sub_63ACA0(dword_1508B168, v132); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v151 + 40))(v151) == 29 ) { if ( v128 >= *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ) { v139 = v1 + 2224; LABEL_336: sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load : ItemMoney Invalid Item Class", v139 + 32); v140 = (int)"ItemDataBox::idb_Load : ItemMoney Invalid Item Class"; return loc_6391B0(v140); } LABEL_335: v139 = sub_626BC0(v1 + 2160, v128); goto LABEL_336; } v133 = (*(int (**)(void))(*(_DWORD *)v151 + 40))(); v134 = *(_DWORD *)(v1 + 2212); if ( v133 == 15 ) { if ( v128 >= *(_DWORD *)(v134 + 40) ) { v139 = v1 + 2224; goto LABEL_336; } goto LABEL_335; } if ( v128 < *(_DWORD *)(v134 + 40) ) result = sub_626BC0(v1 + 2160, v128); else result = v1 + 2224; ++v128; *(_DWORD *)(v147 + *(_DWORD *)(v1 + 2292) + 36) = result; if ( (signed int)v128 >= v143 ) return result; } if ( v128 < *(_DWORD *)(*(_DWORD *)(v1 + 2212) + 40) ) v135 = sub_626BC0(v1 + 2160, v128); else v135 = v1 + 2224; sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Invalid ItemMoney IM_ItemIDX", v135); v140 = (int)"ItemDataBox::idb_Load : Invalid ItemMoney IM_ItemIDX"; } else { while ( 1 ) { v122 = (unsigned __int8 *)(v121 < *(_DWORD *)(*(_DWORD *)(v1 + 2112) + 40) ? sub_626BC0(v1 + 2060, v121) : v1 + 2124); v123 = sub_639620((void *)(v1 + 8), v122); if ( v123 == -1 ) break; if ( (_WORD)v123 == -1 ) break; v124 = (unsigned __int16)v123; v149 = (unsigned __int16)v123; if ( (unsigned int)(unsigned __int16)v123 >= *(_DWORD *)(v1 + 4) ) { sub_639100(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Invalid ItemInvenDel ID", (unsigned __int16)v123); loc_6391B0("ItemDataBox::idb_Load : Invalid ItemInvenDel ID"); goto LABEL_295; } if ( v121 < *(_DWORD *)(*(_DWORD *)(v1 + 2112) + 40) ) { v125 = sub_626BC0(v1 + 2060, v121); v124 = v149; } else { v125 = v1 + 2124; } ++v121; *(_DWORD *)(*(_DWORD *)(v1 + 2292) + 40 * v124 + 32) = *(_DWORD *)(v125 + 32); if ( (signed int)v121 >= v146 ) goto LABEL_295; } if ( v121 < *(_DWORD *)(*(_DWORD *)(v1 + 2112) + 40) ) v126 = sub_626BC0(v1 + 2060, v121); else v126 = v1 + 2124; sub_6390B0(&unk_86DDD8, (int)"ItemDataBox::idb_Load : Invalid ItemInvenDel Index", v126); v140 = (int)"ItemDataBox::idb_Load : Invalid ItemInvenDel Index"; } return loc_6391B0(v140); } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 707174: using guessed type int (__thiscall *off_707174)(void *, char); // 707524: using guessed type void *off_707524; // 86FEB8: using guessed type int __security_cookie; //----- (00647A40) -------------------------------------------------------- void *__thiscall sub_647A40(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707130; sub_62ED70(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707130: using guessed type int (__thiscall *off_707130)(void *, char); //----- (00647A70) -------------------------------------------------------- void __thiscall sub_647A70(void *this) { void *v1; // edi@1 unsigned int v2; // esi@1 unsigned int v3; // eax@1 bool v4; // cf@1 int v5; // eax@3 int v6; // ecx@5 unsigned int v7; // eax@5 int (__thiscall **v8)(void *, char); // [sp+8h] [bp-5Ch]@1 int v9; // [sp+3Ch] [bp-28h]@1 int v10; // [sp+48h] [bp-1Ch]@1 int v11; // [sp+4Ch] [bp-18h]@1 __int16 v12; // [sp+50h] [bp-14h]@1 unsigned int v13; // [sp+54h] [bp-10h]@1 int v14; // [sp+60h] [bp-4h]@1 int v15; // [sp+64h] [bp+0h]@1 v13 = (unsigned int)&v15 ^ __security_cookie; v1 = this; sub_639920((int)&v8); v8 = &off_70717C; v2 = 0; v10 = 0; v11 = 0; v12 = 0; v14 = 0; sub_645710(&v8, "../9Data/Shine/BelongTypeInfo.shn"); v3 = *(_DWORD *)(v9 + 40); v4 = v3 > 0; if ( (signed int)v3 > 0 ) { do { if ( v4 ) v5 = sub_626BC0((int)&v8, v2); else v5 = (int)&v10; v6 = (int)((char *)v1 + 10 * *(_DWORD *)v5 + 872); *(_DWORD *)v6 = *(_DWORD *)v5; *(_DWORD *)(v6 + 4) = *(_DWORD *)(v5 + 4); *(_WORD *)(v6 + 8) = *(_WORD *)(v5 + 8); v7 = *(_DWORD *)(v9 + 40); ++v2; v4 = v2 < v7; } while ( (signed int)v2 < (signed int)v7 ); } v14 = -1; v8 = &off_70717C; sub_639940((int)&v8); } // 70717C: using guessed type int (__thiscall *off_70717C)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00647B50) -------------------------------------------------------- void *__thiscall sub_647B50(void *this) { void *result; // eax@1 int v2; // edx@1 int v3; // ecx@2 int j; // edx@3 int i; // edx@6 result = this; v2 = *(_DWORD *)this; if ( !*(_BYTE *)(*(_DWORD *)this + 33) ) { v3 = *(_DWORD *)(v2 + 8); if ( *(_BYTE *)(v3 + 33) ) { for ( i = *(_DWORD *)(v2 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)result != *(_DWORD *)(i + 8) ) break; *(_DWORD *)result = i; } *(_DWORD *)result = i; } else { for ( j = *(_DWORD *)v3; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v3 = j; *(_DWORD *)result = v3; } } return result; } //----- (00647BA0) -------------------------------------------------------- int __thiscall sub_647BA0(int this, int a2) { int result; // eax@1 int v3; // ecx@3 int v4; // ecx@5 result = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 8) = *(_DWORD *)result; if ( !*(_BYTE *)(*(_DWORD *)result + 53) ) *(_DWORD *)(*(_DWORD *)result + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v3 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { v4 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)v4 ) { *(_DWORD *)v4 = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)(v4 + 8) = result; *(_DWORD *)result = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00647C00) -------------------------------------------------------- int __thiscall sub_647C00(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 result = *(_DWORD *)a2; *(_DWORD *)a2 = *(_DWORD *)(*(_DWORD *)a2 + 8); v3 = *(_DWORD *)(result + 8); if ( !*(_BYTE *)(v3 + 53) ) *(_DWORD *)(v3 + 4) = a2; *(_DWORD *)(result + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(this + 4); if ( a2 == *(_DWORD *)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { v5 = *(_DWORD *)(a2 + 4); if ( a2 == *(_DWORD *)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } else { *(_DWORD *)v5 = result; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(a2 + 4) = result; } } return result; } //----- (00647C60) -------------------------------------------------------- int __thiscall sub_647C60(int this, int a2, char a3, int a4, void *a5) { unsigned int v5; // eax@1 void *v6; // edi@4 int v7; // edx@4 int v8; // edx@7 int v9; // edx@9 void *v10; // eax@11 int v11; // edx@12 int v12; // esi@12 int v13; // esi@13 int v14; // edx@16 int v15; // esi@18 int v16; // esi@20 int v17; // edx@24 int v18; // esi@24 int v19; // edi@24 int v20; // edi@26 int v21; // edi@28 int v22; // esi@31 void *v23; // edx@34 int v24; // esi@34 int v25; // esi@36 int v26; // esi@38 int v27; // edi@44 int v28; // edi@46 int v29; // ecx@52 int result; // eax@52 v5 = *(_DWORD *)(this + 8); if ( v5 >= (unsigned int)&unk_6666665 ) { operator delete(a5); sub_65178B((int)"map/set too long"); } *(_DWORD *)(this + 8) = v5 + 1; v6 = a5; *((_DWORD *)a5 + 1) = a4; v7 = *(_DWORD *)(this + 4); if ( a4 == v7 ) { *(_DWORD *)(v7 + 4) = a5; **(_DWORD **)(this + 4) = a5; *(_DWORD *)(*(_DWORD *)(this + 4) + 8) = a5; } else { if ( a3 ) { *(_DWORD *)a4 = a5; v8 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)v8 ) *(_DWORD *)v8 = a5; } else { *(_DWORD *)(a4 + 8) = a5; v9 = *(_DWORD *)(this + 4); if ( a4 == *(_DWORD *)(v9 + 8) ) *(_DWORD *)(v9 + 8) = a5; } } v10 = a5; while ( !*(_BYTE *)(*((_DWORD *)v10 + 1) + 52) ) { v11 = *((_DWORD *)v10 + 1); v12 = *(_DWORD *)(v11 + 4); if ( v11 == *(_DWORD *)v12 ) { v13 = *(_DWORD *)(v12 + 8); if ( *(_BYTE *)(v13 + 52) ) { if ( v10 == *(void **)(v11 + 8) ) { v10 = (void *)*((_DWORD *)v10 + 1); v14 = *(_DWORD *)(v11 + 8); *((_DWORD *)v10 + 2) = *(_DWORD *)v14; if ( !*(_BYTE *)(*(_DWORD *)v14 + 53) ) *(_DWORD *)(*(_DWORD *)v14 + 4) = v10; *(_DWORD *)(v14 + 4) = *((_DWORD *)v10 + 1); v15 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v15 + 4) ) { *(_DWORD *)(v15 + 4) = v14; } else { v16 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)v16 ) *(_DWORD *)v16 = v14; else *(_DWORD *)(v16 + 8) = v14; } *(_DWORD *)v14 = v10; *((_DWORD *)v10 + 1) = v14; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 52) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 52) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)v17; *(_DWORD *)v17 = *(_DWORD *)(*(_DWORD *)v17 + 8); v19 = *(_DWORD *)(v18 + 8); if ( !*(_BYTE *)(v19 + 53) ) *(_DWORD *)(v19 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v20 + 4) ) { *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v18 + 8) = v17; } else { v21 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)(v21 + 8) ) { *(_DWORD *)(v21 + 8) = v18; *(_DWORD *)(v18 + 8) = v17; } else { *(_DWORD *)v21 = v18; *(_DWORD *)(v18 + 8) = v17; } } LABEL_50: v6 = a5; *(_DWORD *)(v17 + 4) = v18; continue; } *(_BYTE *)(v11 + 52) = 1; *(_BYTE *)(v13 + 52) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 52) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } else { v22 = *(_DWORD *)v12; if ( *(_BYTE *)(v22 + 52) ) { if ( v10 == *(void **)v11 ) { v10 = (void *)*((_DWORD *)v10 + 1); v23 = *(void **)v11; *(_DWORD *)v10 = *((_DWORD *)v23 + 2); v24 = *((_DWORD *)v23 + 2); if ( !*(_BYTE *)(v24 + 53) ) *(_DWORD *)(v24 + 4) = v10; *((_DWORD *)v23 + 1) = *((_DWORD *)v10 + 1); v25 = *(_DWORD *)(this + 4); if ( v10 == *(void **)(v25 + 4) ) { *(_DWORD *)(v25 + 4) = v23; } else { v26 = *((_DWORD *)v10 + 1); if ( v10 == *(void **)(v26 + 8) ) *(_DWORD *)(v26 + 8) = v23; else *(_DWORD *)v26 = v23; } *((_DWORD *)v23 + 2) = v10; *((_DWORD *)v10 + 1) = v23; } *(_BYTE *)(*((_DWORD *)v10 + 1) + 52) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 52) = 0; v17 = *(_DWORD *)(*((_DWORD *)v10 + 1) + 4); v18 = *(_DWORD *)(v17 + 8); *(_DWORD *)(v17 + 8) = *(_DWORD *)v18; if ( !*(_BYTE *)(*(_DWORD *)v18 + 53) ) *(_DWORD *)(*(_DWORD *)v18 + 4) = v17; *(_DWORD *)(v18 + 4) = *(_DWORD *)(v17 + 4); v27 = *(_DWORD *)(this + 4); if ( v17 == *(_DWORD *)(v27 + 4) ) { *(_DWORD *)(v27 + 4) = v18; } else { v28 = *(_DWORD *)(v17 + 4); if ( v17 == *(_DWORD *)v28 ) *(_DWORD *)v28 = v18; else *(_DWORD *)(v28 + 8) = v18; } *(_DWORD *)v18 = v17; goto LABEL_50; } *(_BYTE *)(v11 + 52) = 1; *(_BYTE *)(v22 + 52) = 1; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v10 + 1) + 4) + 52) = 0; v10 = *(void **)(*((_DWORD *)v10 + 1) + 4); } } v29 = *(_DWORD *)(*(_DWORD *)(this + 4) + 4); result = a2; *(_DWORD *)a2 = v6; *(_BYTE *)(v29 + 52) = 1; return result; } //----- (00647E90) -------------------------------------------------------- int __thiscall sub_647E90(void *this, const char *a2, char a3) { int v3; // esi@1 const char *v4; // edi@1 FILE *v5; // eax@5 v3 = (int)this; sub_639540((int)((char *)this + 8)); sub_645AE0(v3 + 1036); v4 = a2; *(_DWORD *)(v3 + 2292) = 0; *(_DWORD *)(v3 + 4) = 0; if ( a2 != (const char *)-1 ) { if ( !a2 ) v4 = "../9Data/Shine/ItemInfo.shn"; if ( !a3 ) goto LABEL_7; v5 = fopen(v4, "rb"); if ( v5 ) { fclose(v5); LABEL_7: sub_645D50(v3, v4); return v3; } } return v3; } //----- (00647F40) -------------------------------------------------------- int __thiscall sub_647F40(void *this, int a2, int a3) { int v3; // ebx@1 int v4; // edi@4 int v5; // eax@7 int v6; // esi@8 void *v7; // ecx@10 int v8; // eax@10 int v9; // eax@17 int v10; // ecx@20 int v11; // ecx@29 int v12; // ecx@31 char v13; // cl@34 int i; // ecx@36 int v15; // eax@38 int v16; // eax@59 int result; // eax@61 int v18; // [sp+10h] [bp-8h]@3 void *v19; // [sp+14h] [bp-4h]@1 v3 = a3; v19 = this; if ( *(_BYTE *)(a3 + 53) ) sub_6517D8((int)"invalid map/set iterator"); v18 = a3; sub_645250(&a3); if ( *(_BYTE *)(*(_DWORD *)v3 + 53) ) { v4 = *(_DWORD *)(v3 + 8); LABEL_8: v6 = *(_DWORD *)(v3 + 4); if ( !*(_BYTE *)(v4 + 53) ) *(_DWORD *)(v4 + 4) = v6; v7 = v19; v8 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v8 + 4) == v3 ) { *(_DWORD *)(v8 + 4) = v4; } else { if ( *(_DWORD *)v6 == v3 ) *(_DWORD *)v6 = v4; else *(_DWORD *)(v6 + 8) = v4; } if ( **((_DWORD **)v19 + 1) == v3 ) { if ( *(_BYTE *)(v4 + 53) ) { v9 = v6; } else { v9 = sub_645230(v4); v7 = v19; } **((_DWORD **)v7 + 1) = v9; } v10 = *((_DWORD *)v7 + 1); if ( *(_DWORD *)(v10 + 8) == v3 ) { if ( *(_BYTE *)(v4 + 53) ) *(_DWORD *)(v10 + 8) = v6; else *(_DWORD *)(v10 + 8) = sub_645210(v4); } goto LABEL_35; } if ( *(_BYTE *)(*(_DWORD *)(v3 + 8) + 53) ) { v4 = *(_DWORD *)v3; goto LABEL_8; } v5 = a3; v4 = *(_DWORD *)(a3 + 8); if ( a3 == v3 ) goto LABEL_8; *(_DWORD *)(*(_DWORD *)v3 + 4) = a3; *(_DWORD *)v5 = *(_DWORD *)v3; if ( v5 == *(_DWORD *)(v3 + 8) ) { v6 = v5; } else { v6 = *(_DWORD *)(v5 + 4); if ( !*(_BYTE *)(v4 + 53) ) *(_DWORD *)(v4 + 4) = v6; *(_DWORD *)v6 = v4; *(_DWORD *)(v5 + 8) = *(_DWORD *)(v3 + 8); *(_DWORD *)(*(_DWORD *)(v3 + 8) + 4) = v5; } v11 = *((_DWORD *)v19 + 1); if ( *(_DWORD *)(v11 + 4) == v3 ) { *(_DWORD *)(v11 + 4) = v5; } else { v12 = *(_DWORD *)(v3 + 4); if ( *(_DWORD *)v12 == v3 ) *(_DWORD *)v12 = v5; else *(_DWORD *)(v12 + 8) = v5; } *(_DWORD *)(v5 + 4) = *(_DWORD *)(v3 + 4); v13 = *(_BYTE *)(v5 + 52); *(_BYTE *)(v5 + 52) = *(_BYTE *)(v3 + 52); *(_BYTE *)(v3 + 52) = v13; LABEL_35: if ( *(_BYTE *)(v18 + 52) == 1 ) { for ( i = (int)v19; v4 != *(_DWORD *)(*(_DWORD *)(i + 4) + 4); v6 = *(_DWORD *)(v6 + 4) ) { if ( *(_BYTE *)(v4 + 52) != 1 ) break; v15 = *(_DWORD *)v6; if ( v4 == *(_DWORD *)v6 ) { v15 = *(_DWORD *)(v6 + 8); if ( !*(_BYTE *)(v15 + 52) ) { *(_BYTE *)(v15 + 52) = 1; *(_BYTE *)(v6 + 52) = 0; sub_647BA0(i, v6); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } if ( *(_BYTE *)(v15 + 53) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)v15 + 52) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 52) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 52) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 52) = 1; *(_BYTE *)(v15 + 52) = 0; sub_647C00(i, v15); v15 = *(_DWORD *)(v6 + 8); i = (int)v19; } *(_BYTE *)(v15 + 52) = *(_BYTE *)(v6 + 52); *(_BYTE *)(v6 + 52) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 52) = 1; sub_647BA0(i, v6); break; } } else { if ( !*(_BYTE *)(v15 + 52) ) { *(_BYTE *)(v15 + 52) = 1; *(_BYTE *)(v6 + 52) = 0; sub_647C00(i, v6); v15 = *(_DWORD *)v6; i = (int)v19; } if ( *(_BYTE *)(v15 + 53) ) goto LABEL_53; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 52) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 52) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 52) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 52) = 1; *(_BYTE *)(v15 + 52) = 0; sub_647BA0(i, v15); v15 = *(_DWORD *)v6; i = (int)v19; } *(_BYTE *)(v15 + 52) = *(_BYTE *)(v6 + 52); *(_BYTE *)(v6 + 52) = 1; *(_BYTE *)(*(_DWORD *)v15 + 52) = 1; sub_647C00(i, v6); break; } } *(_BYTE *)(v15 + 52) = 0; LABEL_53: v4 = v6; } *(_BYTE *)(v4 + 52) = 1; } operator delete((void *)v18); v16 = *((_DWORD *)v19 + 2); if ( v16 ) *((_DWORD *)v19 + 2) = v16 - 1; result = a2; *(_DWORD *)a2 = a3; return result; } //----- (00648190) -------------------------------------------------------- void __stdcall sub_648190(void *a1) { void *v1; // edi@1 void *i; // esi@1 v1 = a1; for ( i = a1; !*((_BYTE *)i + 53); v1 = i ) { sub_648190(*((void **)i + 2)); i = *(void **)i; operator delete(v1); } } //----- (006481D0) -------------------------------------------------------- int __thiscall sub_6481D0(int this, int a2, void *a3, int a4) { void *v4; // edx@1 int v5; // ebx@1 int v6; // ecx@1 int v7; // eax@1 int v8; // esi@1 bool v9; // cl@1 unsigned __int16 v10; // di@2 int v11; // edi@10 int v12; // edx@12 int result; // eax@12 int v14; // ecx@15 char v15; // [sp+Ch] [bp-4h]@1 v4 = a3; v5 = this; v6 = *(_DWORD *)(this + 4); v7 = *(_DWORD *)(v6 + 4); v8 = v6; v9 = 1; v15 = 1; if ( !*(_BYTE *)(v7 + 53) ) { v10 = *((_WORD *)a3 + 6); do { v8 = v7; if ( (_BYTE)a4 ) v9 = *(_WORD *)(v7 + 12) >= v10; else v9 = v10 < *(_WORD *)(v7 + 12); v15 = v9; if ( v9 ) v7 = *(_DWORD *)v7; else v7 = *(_DWORD *)(v7 + 8); } while ( !*(_BYTE *)(v7 + 53) ); } v11 = v8; a4 = v8; if ( v9 ) { if ( v8 == **(_DWORD **)(v5 + 4) ) { v12 = *(_DWORD *)sub_647C60(v5, (int)&a4, 1, v8, a3); result = a2; *(_DWORD *)a2 = v12; *(_BYTE *)(a2 + 4) = 1; return result; } sub_645A80(&a4); v11 = a4; v4 = a3; } if ( *(_WORD *)(v11 + 12) >= *((_WORD *)v4 + 6) ) { operator delete(v4); result = a2; *(_DWORD *)a2 = v11; *(_BYTE *)(a2 + 4) = 0; } else { v14 = *(_DWORD *)sub_647C60(v5, (int)&a4, v15, v8, v4); result = a2; *(_DWORD *)a2 = v14; *(_BYTE *)(a2 + 4) = 1; } return result; } //----- (006482B0) -------------------------------------------------------- int __thiscall sub_6482B0(int this, __int16 a2) { int result; // eax@1 int v3; // edi@2 int v4; // edx@2 int v5; // ecx@3 int i; // esi@3 int v7; // ecx@8 int k; // ecx@9 int j; // ecx@12 result = 0; if ( a2 != -1 ) { v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)v3; while ( v4 != v3 ) { v5 = *(_DWORD *)(v4 + 16); for ( i = *(_DWORD *)(v4 + 20); v5 != i; v5 += 2 ) { if ( a2 == *(_WORD *)v5 ) ++result; } if ( !*(_BYTE *)(v4 + 33) ) { v7 = *(_DWORD *)(v4 + 8); if ( *(_BYTE *)(v7 + 33) ) { for ( j = *(_DWORD *)(v4 + 4); !*(_BYTE *)(j + 33); j = *(_DWORD *)(j + 4) ) { if ( v4 != *(_DWORD *)(j + 8) ) break; v4 = j; } v4 = j; } else { v4 = *(_DWORD *)(v4 + 8); for ( k = *(_DWORD *)v7; !*(_BYTE *)(k + 33); k = *(_DWORD *)k ) v4 = k; } } } } return result; } //----- (00648340) -------------------------------------------------------- int __thiscall sub_648340(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 33) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_WORD *)a3 < *(_WORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (006483B0) -------------------------------------------------------- int __thiscall sub_6483B0(int this, int a2, int a3) { int v3; // edx@1 int v4; // eax@1 int result; // eax@8 v3 = *(_DWORD *)(this + 4); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 53) ) { if ( *(_WORD *)(v4 + 12) >= *(_WORD *)a3 ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *(_DWORD *)(this + 4) || *(_WORD *)a3 < *(_WORD *)(v3 + 12) ) { result = a2; *(_DWORD *)a2 = *(_DWORD *)(this + 4); } else { result = a2; *(_DWORD *)a2 = v3; } return result; } //----- (00648420) -------------------------------------------------------- int __thiscall sub_648420(int this) { int v1; // edi@1 int v2; // eax@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@3 v1 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)(v2 + 4); v4 = *(_DWORD *)(v2 + 4); if ( !*(_BYTE *)(v3 + 53) ) { do { sub_648190(*(void **)(v4 + 8)); v4 = *(_DWORD *)v4; operator delete((void *)v3); v3 = v4; } while ( !*(_BYTE *)(v4 + 53) ); } *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); **(_DWORD **)(v1 + 4) = *(_DWORD *)(v1 + 4); result = *(_DWORD *)(v1 + 4); *(_DWORD *)(result + 8) = result; *(_DWORD *)(v1 + 8) = 0; return result; } //----- (00648470) -------------------------------------------------------- int __thiscall sub_648470(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 int v4; // edx@3 int (__thiscall **v5)(void *, char); // [sp+4h] [bp-Ch]@6 v2 = this; result = operator new(0x38u); if ( !result ) { a2 = 0; std::exception::exception(&a2); v5 = &off_6A1FD4; _CxxThrowException(&v5, &unk_733E50); } *(_DWORD *)result = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 4) = *((_DWORD *)v2 + 1); *(_DWORD *)(result + 8) = *((_DWORD *)v2 + 1); *(_WORD *)(result + 52) = 0; if ( result != -12 ) { v4 = a2; *(_WORD *)(result + 12) = *(_WORD *)a2; memcpy((void *)(result + 14), (const void *)(v4 + 2), 0x26u); } return result; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006484F0) -------------------------------------------------------- bool __thiscall sub_6484F0(int this, char a2) { char v3; // [sp+4h] [bp-4h]@1 return *(_DWORD *)sub_648340(this, (int)&v3, (int)&a2) != *(_DWORD *)(this + 4); } //----- (00648520) -------------------------------------------------------- char __thiscall sub_648520(int this, __int16 a2, int a3) { int v3; // esi@1 char result; // al@2 __int16 v5; // di@3 int v6; // eax@5 int v7; // ecx@5 v3 = this; if ( a2 == -1 ) { result = 0; } else { v5 = a3; if ( (_WORD)a3 == -1 || (sub_648340(this, (int)&a3, (int)&a2), a3 == *(_DWORD *)(v3 + 4)) || (v6 = *(_DWORD *)(a3 + 16), v7 = *(_DWORD *)(a3 + 20), v6 == v7) ) { LABEL_8: result = 0; } else { while ( v5 != *(_WORD *)v6 ) { v6 += 2; if ( v6 == v7 ) goto LABEL_8; } result = 1; } } return result; } //----- (00648590) -------------------------------------------------------- int __thiscall sub_648590(int this, char a2) { int v2; // esi@1 int result; // eax@2 int v4; // [sp+4h] [bp-4h]@1 v2 = this; sub_6483B0(this, (int)&v4, (int)&a2); if ( v4 == *(_DWORD *)(v2 + 4) ) result = 0; else result = v4 + 14; return result; } //----- (006485C0) -------------------------------------------------------- bool __thiscall sub_6485C0(int this, char a2, unsigned __int64 a3) { int v3; // esi@1 int v5; // [sp+4h] [bp-4h]@1 v3 = this; sub_6483B0(this, (int)&v5, (int)&a2); return v5 == *(_DWORD *)(v3 + 4) || !*(_WORD *)(v5 + 50) || a3 <= *(_WORD *)(v5 + 50); } //----- (00648610) -------------------------------------------------------- int __thiscall sub_648610(int this, int a2, int a3, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int result; // eax@3 int v8; // edx@5 int v9; // eax@6 int v10; // ecx@7 int j; // eax@7 int i; // eax@10 char v13; // [sp+4h] [bp-4h]@14 v4 = this; v5 = *(_DWORD *)(this + 4); v6 = a3; if ( a3 != *(_DWORD *)v5 || a4 != v5 ) { for ( ; a3 != a4; v6 = a3 ) { v8 = v6; if ( !*(_BYTE *)(v6 + 53) ) { v9 = *(_DWORD *)(v6 + 8); if ( *(_BYTE *)(v9 + 53) ) { for ( i = *(_DWORD *)(v6 + 4); !*(_BYTE *)(i + 53); i = *(_DWORD *)(i + 4) ) { if ( v6 != *(_DWORD *)(i + 8) ) break; v6 = i; } a3 = i; } else { v10 = *(_DWORD *)(v6 + 8); for ( j = *(_DWORD *)v9; !*(_BYTE *)(j + 53); j = *(_DWORD *)j ) v10 = j; a3 = v10; } } sub_647F40((void *)v4, (int)&v13, v8); } result = a2; *(_DWORD *)a2 = v6; } else { sub_648420(v4); result = a2; *(_DWORD *)a2 = **(_DWORD **)(v4 + 4); } return result; } //----- (006486B0) -------------------------------------------------------- char __thiscall sub_6486B0(void *this) { unsigned int v1; // ebx@1 unsigned int v2; // eax@1 bool v3; // cf@1 int v4; // eax@3 int v5; // esi@3 signed int v6; // edi@4 int v7; // eax@6 int v8; // esi@7 int v9; // eax@7 unsigned int v10; // eax@7 char result; // al@8 __int16 v12; // [sp+Ch] [bp-B4h]@7 char v13; // [sp+Eh] [bp-B2h]@7 __int16 v14; // [sp+32h] [bp-8Eh]@7 int v15; // [sp+34h] [bp-8Ch]@7 char v16; // [sp+3Ch] [bp-84h]@6 int v17; // [sp+40h] [bp-80h]@5 int v18; // [sp+44h] [bp-7Ch]@1 int (__thiscall **v19)(void *, char); // [sp+48h] [bp-78h]@1 int v20; // [sp+7Ch] [bp-44h]@1 int v21; // [sp+88h] [bp-38h]@1 int v22; // [sp+8Ch] [bp-34h]@1 int v23; // [sp+90h] [bp-30h]@1 int v24; // [sp+94h] [bp-2Ch]@1 int v25; // [sp+98h] [bp-28h]@1 int v26; // [sp+9Ch] [bp-24h]@1 int v27; // [sp+A0h] [bp-20h]@1 int v28; // [sp+A4h] [bp-1Ch]@1 int v29; // [sp+A8h] [bp-18h]@1 __int16 v30; // [sp+ACh] [bp-14h]@1 unsigned int v31; // [sp+B0h] [bp-10h]@1 int v32; // [sp+BCh] [bp-4h]@1 int v33; // [sp+C0h] [bp+0h]@1 v31 = (unsigned int)&v33 ^ __security_cookie; v18 = (int)this; sub_639920((int)&v19); v19 = &off_70718C; v1 = 0; v21 = 0; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v32 = 0; sub_6457D0(&v19, "../9Data/Shine/KQItem.shn"); v2 = *(_DWORD *)(v20 + 40); v3 = v2 > 0; if ( (signed int)v2 <= 0 ) { LABEL_8: v32 = -1; v19 = &off_70718C; sub_639940((int)&v19); result = 1; } else { while ( 1 ) { if ( !v3 || (v4 = sub_626BC0((int)&v19, v1), v5 = v4, (int *)v4 == &v21) ) { sub_639100(&unk_86DDD8, (int)"KQItemDataBox::kqidb_Load - def data block", v1); loc_6391B0("KQItemDataBox::kqidb_Load"); v32 = -1; v19 = &off_70718C; sub_639940((int)&v19); return 0; } v6 = sub_639620(&unk_14D20898, (unsigned __int8 *)v4); if ( v6 == -1 || (v17 = (unsigned __int16)v6, (_WORD)v6 == -1) ) { sub_639100(&unk_86DDD8, (int)"KQItemDataBox::kqidb_Load - invalid extend itemid", v1); loc_6391B0("KQItemDataBox::kqidb_Load"); v32 = -1; v19 = &off_70718C; sub_639940((int)&v19); return 0; } v7 = sub_6483B0(v18, (int)&v16, (int)&v17); if ( *(_DWORD *)v7 != *(_DWORD *)(v18 + 4) ) break; v12 = v6; memcpy(&v13, (const void *)v5, 0x24u); v14 = *(_WORD *)(v5 + 36); v8 = v18; v9 = sub_648470((void *)v18, (int)&v12); sub_6481D0(v8, (int)&v15, (void *)v9, 0); v10 = *(_DWORD *)(v20 + 40); ++v1; v3 = v1 < v10; if ( (signed int)v1 >= (signed int)v10 ) goto LABEL_8; } sub_639100(&unk_86DDD8, (int)"KQItemDataBox::kqidb_Load - duplicate Item", v1); loc_6391B0("KQItemDataBox::kqidb_Load"); v32 = -1; v19 = &off_70718C; sub_639940((int)&v19); result = 0; } return result; } // 70718C: using guessed type int (__thiscall *off_70718C)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (006488C0) -------------------------------------------------------- void __thiscall sub_6488C0(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // ST04_4@1 char v4; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v5 = this; v2 = *(_DWORD *)(this + 4); v3 = *(_DWORD *)v2; v6 = 0; sub_648610(this, (int)&v4, v3, v2); operator delete(*(void **)(v1 + 4)); } //----- (00648920) -------------------------------------------------------- int __cdecl sub_648920(int a1, int a2, int a3) { *(_WORD *)a1 = *(_WORD *)a2; sub_4A1A00(a1 + 4, a3); return a1; } //----- (00648950) -------------------------------------------------------- int __thiscall sub_648950(int this) { int v1; // esi@1 int v2; // eax@1 int (__thiscall **v4)(void *, char); // [sp+4h] [bp-10h]@4 int v5; // [sp+10h] [bp-4h]@3 v1 = this; *(_DWORD *)(this + 8) = 0; v2 = operator new(0x38u); if ( !v2 ) { v5 = 0; std::exception::exception(&v5); v4 = &off_6A1FD4; _CxxThrowException(&v4, &unk_733E50); } *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)v2 = v2; *(_DWORD *)(*(_DWORD *)(v1 + 4) + 4) = *(_DWORD *)(v1 + 4); *(_DWORD *)(*(_DWORD *)(v1 + 4) + 8) = *(_DWORD *)(v1 + 4); *(_BYTE *)(*(_DWORD *)(v1 + 4) + 52) = 1; *(_BYTE *)(*(_DWORD *)(v1 + 4) + 53) = 1; return v1; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006489C0) -------------------------------------------------------- char __thiscall sub_6489C0(void *this) { int v1; // ebx@1 unsigned int v2; // edi@1 unsigned int v3; // eax@1 int v4; // eax@3 int v5; // esi@3 signed int v6; // eax@4 signed int v7; // edi@4 signed int v8; // eax@6 int v9; // eax@11 int v10; // eax@13 int v11; // eax@13 int v12; // ecx@18 char result; // al@20 int v14; // ebx@23 int v15; // esi@23 __int16 *v16; // edi@24 __int16 *v17; // ebx@25 int v18; // eax@30 int j; // eax@31 int i; // eax@34 int v21; // [sp+Ch] [bp-D0h]@13 char v22; // [sp+14h] [bp-C8h]@13 void *v23; // [sp+18h] [bp-C4h]@13 int v24; // [sp+1Ch] [bp-C0h]@15 int v25; // [sp+20h] [bp-BCh]@15 char v26; // [sp+28h] [bp-B4h]@11 int v27; // [sp+2Ch] [bp-B0h]@1 void *v28; // [sp+30h] [bp-ACh]@13 int v29; // [sp+34h] [bp-A8h]@13 int v30; // [sp+38h] [bp-A4h]@13 int v31; // [sp+40h] [bp-9Ch]@9 int v32; // [sp+44h] [bp-98h]@1 int v33; // [sp+48h] [bp-94h]@6 int (__thiscall **v34)(void *, char); // [sp+4Ch] [bp-90h]@1 int v35; // [sp+80h] [bp-5Ch]@1 char v36; // [sp+8Ch] [bp-50h]@1 unsigned int v37; // [sp+CCh] [bp-10h]@1 int v38; // [sp+D8h] [bp-4h]@1 int v39; // [sp+DCh] [bp+0h]@1 v37 = (unsigned int)&v39 ^ __security_cookie; v1 = (int)this; v27 = (int)this; sub_639920((int)&v34); v2 = 0; v34 = &off_707184; memset(&v36, 0, 0x40u); v38 = 0; sub_4BEB00(&v34, "../9Data/Shine/TermExtendMatch.shn"); v3 = *(_DWORD *)(v35 + 40); v32 = 0; if ( (signed int)v3 <= 0 ) { LABEL_23: v14 = *(_DWORD *)(v1 + 4); v15 = *(_DWORD *)v14; v33 = v14; if ( v15 == v14 ) { LABEL_39: v38 = -1; v34 = &off_707184; sub_639940((int)&v34); result = 1; } else { while ( 1 ) { v16 = *(__int16 **)(v15 + 16); if ( v16 != *(__int16 **)(v15 + 20) ) break; LABEL_29: if ( !*(_BYTE *)(v15 + 33) ) { v18 = *(_DWORD *)(v15 + 8); if ( *(_BYTE *)(v18 + 33) ) { for ( i = *(_DWORD *)(v15 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( v15 != *(_DWORD *)(i + 8) ) break; v15 = i; } v15 = i; } else { v15 = *(_DWORD *)(v15 + 8); for ( j = *(_DWORD *)v18; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v15 = j; } } if ( v15 == v14 ) goto LABEL_39; } v17 = *(__int16 **)(v15 + 20); while ( sub_6482B0(v27, *v16) == 1 ) { ++v16; if ( v16 == v17 ) { v14 = v33; goto LABEL_29; } } sub_639100(&unk_86DDD8, (int)"CTermExtendItemBox::teib_Load - term itemid error", (unsigned __int16)*v16); loc_6391B0("CTermExtendItemBox::teib_Load"); v38 = -1; v34 = &off_707184; sub_639940((int)&v34); result = 0; } } else { while ( 1 ) { if ( v2 >= v3 || (v4 = sub_626BC0((int)&v34, v2), v5 = v4, (char *)v4 == &v36) ) { sub_639100(&unk_86DDD8, (int)"CTermExtendItemBox::teib_Load - def data block", v2); loc_6391B0("CTermExtendItemBox::teib_Load"); v38 = -1; v34 = &off_707184; sub_639940((int)&v34); return 0; } v6 = sub_639620(&unk_14D20898, (unsigned __int8 *)v4); v7 = 65535; if ( v6 != -1 ) v7 = (unsigned __int16)v6; v33 = v7; v8 = sub_639620(&unk_14D20898, (unsigned __int8 *)(v5 + 32)); if ( v8 == -1 ) v8 = 65535; else v8 = (unsigned __int16)v8; v31 = v8; if ( (_WORD)v7 == -1 ) { sub_639100(&unk_86DDD8, (int)"CTermExtendItemBox::teib_Load - invalid extend itemid", v32); loc_6391B0("CTermExtendItemBox::teib_Load"); v38 = -1; v34 = &off_707184; sub_639940((int)&v34); return 0; } if ( (_WORD)v8 == -1 ) break; v9 = *(_DWORD *)sub_648340(v1, (int)&v26, (int)&v33); if ( v9 == *(_DWORD *)(v1 + 4) ) { v28 = 0; v29 = 0; v30 = 0; LOBYTE(v38) = 1; sub_47AC30((int)&v28, (unsigned int)&v31); v10 = sub_648920((int)&v22, (int)&v33, (int)&v28); LOBYTE(v38) = 2; v11 = sub_4AFB10((void *)v1, v10); sub_4AF820(v1, (int)&v21, (void *)v11, 0); if ( v23 ) operator delete(v23); v23 = 0; v24 = 0; v25 = 0; LOBYTE(v38) = 0; if ( v28 ) operator delete(v28); v28 = 0; v29 = 0; v30 = 0; } else { sub_47AC30(v9 + 16, (unsigned int)&v31); } v3 = *(_DWORD *)(v35 + 40); v12 = v32 + 1; v32 = v12; if ( v12 >= (signed int)v3 ) goto LABEL_23; v2 = v12; } sub_639100(&unk_86DDD8, (int)"CTermExtendItemBox::teib_Load - invalid term itemid", v32); loc_6391B0("CTermExtendItemBox::teib_Load"); v38 = -1; v34 = &off_707184; sub_639940((int)&v34); result = 0; } return result; } // 707184: using guessed type int (__thiscall *off_707184)(void *, char); // 86FEB8: using guessed type int __security_cookie; //----- (00648DA0) -------------------------------------------------------- int __thiscall sub_648DA0(int this) { int v1; // esi@1 v1 = this; sub_64AE30(this); return v1; } //----- (00648DC0) -------------------------------------------------------- int __stdcall sub_648DC0(int a1) { int v1; // edx@1 signed int v2; // ecx@1 int v3; // esi@1 int v4; // eax@2 unsigned __int8 v5; // al@6 int result; // eax@7 char *v7; // edx@9 int v8; // eax@9 unsigned __int16 v9; // dx@9 v1 = (unsigned __int16)sub_639500((int)&unk_1508B108, 0x3E8u); v2 = 0; v3 = a1 + 7; do { v4 = *(_WORD *)v3; if ( v4 >= v1 ) break; ++v2; v1 -= v4; v3 += 2; } while ( v2 < 9 ); if ( v2 >= 9 ) { sub_639100( &unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_selectnumber : Error in random select", *(_WORD *)a1); v2 = 0; } v5 = *(_BYTE *)(a1 + 6); if ( v5 == 1 ) { result = v2 + 1; } else { if ( (unsigned int)v5 - 1 > 0x63 ) { v9 = 0; } else { v7 = (char *)&unk_14D42DC0 + 32776 * v5; v8 = *((_DWORD *)v7 + 8193) & (*((_DWORD *)v7 + 8192) + 1); *((_DWORD *)v7 + 8192) = v8; v9 = *(_WORD *)&v7[2 * v8]; } result = v9 + v2 * *(_BYTE *)(a1 + 6); if ( result >= 256 ) { sub_639100(&unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_selectnumber : Too large value", result); result = 255; } } return result; } //----- (00648E90) -------------------------------------------------------- int __cdecl sub_648E90() { return dword_1508B980; } // 1508B980: using guessed type int dword_1508B980; //----- (00648EA0) -------------------------------------------------------- int __cdecl sub_648EA0(int a1) { int result; // eax@1 result = a1; dword_1508B980 = a1; return result; } // 1508B980: using guessed type int dword_1508B980; //----- (00648EB0) -------------------------------------------------------- void *__thiscall sub_648EB0(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 2415, 66) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 2415, 2415, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00648F70) -------------------------------------------------------- void *__thiscall sub_648F70(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 1582, 25) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 1582, 1582, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (00649020) -------------------------------------------------------- void *__thiscall sub_649020(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 27, 40) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 27, 27, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (006490C0) -------------------------------------------------------- void *__thiscall sub_6490C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707AE0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707AE0: using guessed type int (__thiscall *off_707AE0)(void *, char); //----- (006490F0) -------------------------------------------------------- void *__thiscall sub_6490F0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707AE8; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707AE8: using guessed type int (__thiscall *off_707AE8)(void *, char); //----- (00649120) -------------------------------------------------------- signed int __thiscall sub_649120(void *this) { void *v1; // esi@1 signed int result; // eax@1 v1 = this; sub_648EB0(this, "../9Data/Shine/ShineReward.shn"); result = 65535; *((_WORD *)v1 + 32) = -1; return result; } //----- (00649140) -------------------------------------------------------- int __thiscall sub_649140(int this, int a2) { int v2; // edi@1 unsigned int v3; // eax@1 unsigned int v4; // esi@1 bool v5; // cf@2 int result; // eax@4 unsigned int v7; // eax@7 v2 = this; v3 = *(_DWORD *)(*(_DWORD *)(this + 52) + 40); v4 = 0; if ( (signed int)v3 <= 0 ) { LABEL_8: result = 0; } else { v5 = v3 > 0; while ( 1 ) { result = v5 ? sub_626BC0(v2, v4) : v2 + 64; if ( *(_WORD *)result == a2 ) break; v7 = *(_DWORD *)(*(_DWORD *)(v2 + 52) + 40); ++v4; v5 = v4 < v7; if ( (signed int)v4 >= (signed int)v7 ) goto LABEL_8; } } return result; } //----- (00649190) -------------------------------------------------------- char __thiscall sub_649190(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // eax@1 char result; // al@2 int v6; // eax@3 unsigned __int16 v7; // ax@4 int v8; // edx@5 bool v9; // zf@5 int v10; // eax@5 unsigned int *v11; // ebx@6 unsigned int v12; // ebx@7 signed __int16 v13; // ax@7 int *v14; // eax@9 int v15; // eax@13 signed int v16; // ecx@16 unsigned __int8 v17; // cl@18 signed int v18; // [sp+8h] [bp-Ch]@3 int v19; // [sp+Ch] [bp-8h]@10 unsigned int v20; // [sp+10h] [bp-4h]@0 v2 = a2; *(_BYTE *)v2 &= 1u; v3 = this; v4 = *(_DWORD *)(this + 32); if ( v4 ) { v6 = sub_648DC0(v4); *(_BYTE *)a2 &= 1u; v18 = v6; if ( (signed int)((unsigned int)*(_BYTE *)a2 >> 1) >= v6 ) { LABEL_19: result = 1; } else { while ( 1 ) { v7 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); LOWORD(a2) = v7; if ( v7 < *(_WORD *)(v3 + 4) && (v8 = *(_DWORD *)(v3 + 8), v9 = *(_BYTE *)(v8 + 12 * v7 + 8) == 0, v10 = v8 + 12 * v7, !v9) && (v11 = *(unsigned int **)v10) != 0 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 12))(v3, a2); v12 = *v11; v20 = v12; v13 = 1; } else { v12 = v20; v13 = 0; } v9 = v13 == 0; v14 = *(int **)(v3 + 32); if ( v9 ) { sub_639100(&unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_make : Error in selecting", *(_WORD *)v14); return 0; } v19 = *(_WORD *)v14; if ( !(unsigned __int16)sub_64ABE0((void *)v3, v12) ) sub_639100(&unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_make : Error in card recycle", v19); if ( v12 < *(_DWORD *)(dword_1508BAAC + 40) ) v15 = sub_626BC0((int)&dword_1508BA78, v12); else v15 = (int)&dword_1508BAB8; if ( *(_WORD *)v15 == -1 ) { sub_639100(&unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_make : Option not found", *(_WORD *)v15); return 0; } v16 = *(_DWORD *)(v15 + 2); if ( !v16 ) break; if ( v16 >= 12 ) break; *(_BYTE *)(((unsigned int)*(_BYTE *)v2 >> 1) + v2 + 2 * ((unsigned int)*(_BYTE *)v2 >> 1) + 1) = *(_BYTE *)(v15 + 2); *(_WORD *)(((unsigned int)*(_BYTE *)v2 >> 1) + v2 + 2 * ((unsigned int)*(_BYTE *)v2 >> 1) + 2) = sub_648DC0(*(_DWORD *)(v3 + 32)); v17 = *(_BYTE *)v2 & 1 ^ ((*(_BYTE *)v2 & 0xFE) + 2); *(_BYTE *)v2 = v17; if ( (signed int)((unsigned int)v17 >> 1) >= v18 ) goto LABEL_19; } sub_639100(&unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_make : Invalid Option", *(_WORD *)v15); result = 0; } } else { result = 0; } return result; } // 1508BA78: using guessed type int dword_1508BA78; // 1508BAAC: using guessed type int dword_1508BAAC; // 1508BAB8: using guessed type int dword_1508BAB8; //----- (00649350) -------------------------------------------------------- void *__thiscall sub_649350(void *this) { return sub_649020(this, "../9Data/Shine/FriendPointReward.shn"); } //----- (00649370) -------------------------------------------------------- void *__thiscall sub_649370(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707B28; _LN21((char *)this + 92, 0x24u, 500, sub_648DB0); *(_DWORD *)v2 = &off_707AE8; sub_639940((int)v2); if ( a2 & 1 ) operator delete(v2); return v2; } // 707AE8: using guessed type int (__thiscall *off_707AE8)(void *, char); // 707B28: using guessed type int (__thiscall *off_707B28)(void *, char); //----- (00649400) -------------------------------------------------------- void *__thiscall sub_649400(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_707AF0; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 707AF0: using guessed type int (__thiscall *off_707AF0)(void *, char); //----- (00649430) -------------------------------------------------------- char __thiscall sub_649430(int this) { int (__stdcall **v2)(int, int); // [sp+4h] [bp-14h]@1 int v3; // [sp+8h] [bp-10h]@1 int v4; // [sp+14h] [bp-4h]@1 v2 = &off_707C60; v3 = this; v4 = 0; return sub_43C470(this, (int)&v2); } // 707C60: using guessed type int (__stdcall *off_707C60)(int, int); //----- (00649480) -------------------------------------------------------- int __thiscall sub_649480(void *this) { int v1; // ebx@1 int v2; // eax@1 unsigned int v3; // ecx@1 int result; // eax@3 int v5; // edi@7 int v6; // eax@9 int v7; // esi@9 int v8; // ecx@9 int v9; // esi@17 signed int v10; // edi@17 int (__stdcall **v11)(int, int); // [sp+10h] [bp-18h]@12 int v12; // [sp+14h] [bp-14h]@12 int v13; // [sp+18h] [bp-10h]@3 int v14; // [sp+24h] [bp-4h]@12 v1 = (int)this; sub_648F70(this, "../9Data/Shine/ItemOptions.shn"); v2 = v1 + 124; v3 = 500; do { *(_DWORD *)v2 = 0; v2 += 36; --v3; } while ( v3 ); result = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); v13 = 0; if ( result > 0 ) { while ( 1 ) { v5 = v3 < result ? sub_626BC0(v1, v3) : v1 + 64; v6 = *(_WORD *)v5; v7 = v1 + 36 * v6 + 92; v8 = 0; if ( *(_DWORD *)(v5 + 2) ) { LOBYTE(v8) = *(_DWORD *)(v1 + 36 * v6 + 124) != 0; if ( !v8 ) { sub_639100( &unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_cardinsert : not initializes", *(_WORD *)v5); loc_6391B0("ItemOptionsData::OptionCardStack::ocs_cardinsert"); } sub_64AB90((void *)v7, v13); } else { LOBYTE(v8) = *(_DWORD *)(v1 + 36 * v6 + 124) == 0; if ( !v8 ) { sub_639100(&unk_86DDD8, (int)"ItemOptionsData::OptionCardStack::ocs_Init : already initialized", *(_WORD *)v5); loc_6391B0("ItemOptionsData::OptionCardStack::ocs_Init"); } *(_DWORD *)(v7 + 32) = v5; v11 = &off_707C60; v12 = v7; v14 = 0; sub_43C470(v7, (int)&v11); v14 = -1; v11 = &off_707AF8; } result = *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40); ++v13; if ( v13 >= result ) break; v3 = v13; } } v9 = v1 + 92; v10 = 500; do { if ( *(_DWORD *)(v9 + 32) ) result = sub_64AAD0(v9, 50); v9 += 36; --v10; } while ( v10 ); *(_WORD *)(v1 + 64) = -1; return result; } // 707AF8: using guessed type int (__stdcall *off_707AF8)(int, int); // 707C60: using guessed type int (__stdcall *off_707C60)(int, int); //----- (006495E0) -------------------------------------------------------- char __thiscall sub_6495E0(void *this, int a2, int a3) { int v3; // edx@1 void *v4; // esi@1 int v5; // ecx@1 int v6; // edx@1 int v7; // edi@3 int v8; // eax@3 int v9; // eax@4 int v11; // [sp-18h] [bp-ECh]@4 int v12; // [sp-14h] [bp-E8h]@4 int v13; // [sp-10h] [bp-E4h]@4 int v14; // [sp-Ch] [bp-E0h]@4 int v15; // [sp-8h] [bp-DCh]@4 const char *v16; // [sp-4h] [bp-D8h]@4 int *v17; // [sp+Ch] [bp-C8h]@4 char v18; // [sp+10h] [bp-C4h]@1 int v19; // [sp+90h] [bp-44h]@1 int v20; // [sp+94h] [bp-40h]@1 int v21; // [sp+98h] [bp-3Ch]@1 int v22; // [sp+9Ch] [bp-38h]@1 char v23; // [sp+A0h] [bp-34h]@1 unsigned int v24; // [sp+D0h] [bp-4h]@1 int v25; // [sp+D4h] [bp+0h]@1 v24 = (unsigned int)&v25 ^ __security_cookie; v3 = *(_DWORD *)(a2 + 4); v4 = this; v19 = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 8); v20 = v3; v6 = *(_DWORD *)(a2 + 12); v21 = v5; v22 = v6; v23 = 0; sprintf(&v18, "../9Data/Shine/World/%s/Script/%s.txt", &v19, a3); if ( !sub_6434A0(v4, &v18) ) { sprintf(&v18, "../9Data/Shine/Script/%s.txt", a3); if ( !sub_6434A0(v4, &v18) ) { sub_6390B0(&unk_86DDD8, (int)"ShineScript::ss_Load : Error in Script read", (int)&v18); v7 = sub_642790(v4); v8 = sub_6427A0(v4); sub_639100(&unk_86DDD8, v8, v7); loc_6391B0("ShineScript::ss_Load"); } } v16 = "ScrIndex"; v17 = &v11; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; strncpy((char *)&v11, "Script", 0x14u); v9 = sub_6445D0(v4, v11, v12, v13, v14, v15, v16); if ( !(_BYTE)v9 ) { sub_639100(&unk_86DDD8, (int)"ShineScript::ss_Load : Error in indexing", 0); LOBYTE(v9) = loc_6391B0("ShineScript::ss_Load"); } return v9; } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 6427A0: using guessed type int __thiscall sub_6427A0(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00649720) -------------------------------------------------------- int __thiscall sub_649720(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 int result; // eax@2 v2 = this; v3 = sub_639620(this, (unsigned __int8 *)a2); if ( v3 == -1 ) { sub_6390B0(&unk_86DDD8, (int)"Invalid script name", a2); result = 0; } else { if ( (unsigned int)v3 < *((_DWORD *)v2 + 1082945) ) { result = (int)((char *)v2 + 67668 * v3 + 1028); } else { sub_639100(&unk_86DDD8, (int)"Invalid script name(Too many sub", *((_DWORD *)v2 + 1082945)); result = 0; } } return result; } //----- (00649790) -------------------------------------------------------- void __thiscall sub_649790(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // edi@4 int v5; // [sp-34h] [bp-108ACh]@4 int v6; // [sp-30h] [bp-108A8h]@4 int v7; // [sp-2Ch] [bp-108A4h]@4 int v8; // [sp-28h] [bp-108A0h]@4 int v9; // [sp-24h] [bp-1089Ch]@4 const char *v10; // [sp-20h] [bp-10898h]@4 int v11; // [sp-1Ch] [bp-10894h]@4 int v12; // [sp-18h] [bp-10890h]@4 int v13; // [sp-14h] [bp-1088Ch]@4 unsigned int v14; // [sp-10h] [bp-10888h]@1 int v15; // [sp+0h] [bp-10878h]@1 int *v16; // [sp+4h] [bp-10874h]@4 int v17; // [sp+8h] [bp-10870h]@4 int i; // [sp+Ch] [bp-1086Ch]@3 char v19; // [sp+13h] [bp-10865h]@1 char v20; // [sp+14h] [bp-10864h]@1 unsigned int v21; // [sp+10868h] [bp-10h]@1 int v22; // [sp+10874h] [bp-4h]@1 int v23; // [sp+10878h] [bp+0h]@1 v21 = (unsigned int)&v23 ^ __security_cookie; v14 = (unsigned int)&v23 ^ __security_cookie; v2 = this; v15 = a2; sub_6432E0((int)&v20); v22 = 0; v19 = sub_6434A0(&v20, "../9Data/Shine/World/PineScript.txt"); v3 = sub_642790(&v20); if ( !v19 ) { sub_639100(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_LoadScripts : Option read error", v3); loc_6391B0("KQScriptManager::kqsm_Load"); } for ( i = 0; ; ++i ) { v13 = (int)&v17; v12 = i; v11 = 0; v10 = byte_6A492E; v16 = &v5; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v5 = 0; strncpy((char *)&v5, "DialogFile", 0x14u); v4 = sub_644C30(&v20, "ScriptName", v5, v6, v7, v8, v9, v10, v11, v12, v13); if ( !v4 ) break; if ( v17 != 2 ) { sub_639100(&unk_86DDD8, (int)"ScenarioBookShelf::sbs_LoadScripts : Type error", v17); loc_6391B0("KQScriptManager::kqsm_Load"); } if ( *((_DWORD *)v2 + 1082945) >= 0x40u ) { sub_639100(&unk_86DDD8, (int)"Too many KQ Script", 0); loc_6391B0("KQScriptManager::kqsm_Load"); } sub_6495E0((char *)v2 + 67668 * *((_DWORD *)v2 + 1082945) + 1028, v15, v4); v13 = *((_DWORD *)v2 + 1082945); sub_639660(v2, (unsigned __int8 *)v4, v13); ++*((_DWORD *)v2 + 1082945); } if ( i <= 0 ) { sub_639100(&unk_86DDD8, (int)"KQScriptManager::kqsm_Load : No Script", i); loc_6391B0("KQScriptManager::kqsm_Load"); } v22 = -1; sub_643080(&v20); } // 642790: using guessed type int __thiscall sub_642790(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00649990) -------------------------------------------------------- int __thiscall sub_649990(int this) { int v1; // esi@1 v1 = this; sub_64E500(this); return v1; } //----- (006499A0) -------------------------------------------------------- int __thiscall sub_6499A0(int this, LPCSTR lpFileName) { int v2; // esi@1 v2 = this; sub_64E3C0(this); return sub_64EDB0(v2, lpFileName, 0, 1025, 0); } //----- (006499E0) -------------------------------------------------------- signed int __thiscall sub_6499E0(int this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@1 signed int result; // eax@4 v2 = this; v3 = sub_64D200(this); v4 = 0; if ( v3 <= 0 ) { LABEL_4: result = 0; } else { while ( *(_DWORD *)sub_64D210(v2, v4) ) { ++v4; if ( v4 >= v3 ) goto LABEL_4; } *(_DWORD *)a2 = sub_64D260(v2, v4, 0); *(_DWORD *)(a2 + 4) = sub_64D260(v2, v4, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_64D260(v2, v4, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_64D260(v2, v4, 3); *(_DWORD *)(a2 + 16) = *(_DWORD *)sub_64D260(v2, v4, 4); result = 1; } return result; } //----- (00649A70) -------------------------------------------------------- signed int __thiscall sub_649A70(int this, int a2, int a3) { int v3; // esi@1 signed int result; // eax@2 v3 = this; if ( *(_DWORD *)sub_64D210(this, a3) == 3 ) { *(_DWORD *)a2 = sub_64D260(v3, a3, 0); *(_DWORD *)(a2 + 4) = *(_DWORD *)sub_64D260(v3, a3, 1); *(_DWORD *)(a2 + 8) = *(_DWORD *)sub_64D260(v3, a3, 2); *(_DWORD *)(a2 + 12) = *(_DWORD *)sub_64D260(v3, a3, 3); *(_DWORD *)(a2 + 16) = *(_DWORD *)sub_64D260(v3, a3, 4); *(_DWORD *)(a2 + 20) = sub_64D260(v3, a3, 5); *(_DWORD *)(a2 + 24) = *(_DWORD *)sub_64D260(v3, a3, 6); *(_DWORD *)(a2 + 28) = *(_DWORD *)sub_64D260(v3, a3, 7); *(_DWORD *)(a2 + 32) = *(_DWORD *)sub_64D260(v3, a3, 8); result = 1; } else { result = 0; } return result; } //----- (00649B20) -------------------------------------------------------- signed int __thiscall sub_649B20(int this, int a2, int a3, int a4, int a5) { int v5; // edi@1 int v6; // ebx@1 int v7; // esi@1 int v8; // ebx@3 int v10; // [sp+14h] [bp-20h]@3 int v11; // [sp+18h] [bp-1Ch]@3 int v12; // [sp+1Ch] [bp-18h]@3 int v13; // [sp+30h] [bp-4h]@1 v5 = this; v6 = sub_64D200(this); v7 = 0; v13 = v6; if ( v6 <= 0 ) return -1; while ( *(_DWORD *)sub_64D210(v5, v7) != 3 ) { LABEL_8: ++v7; if ( v7 >= v6 ) return -1; } sub_64D260(v5, v7, 0); v8 = *(_DWORD *)sub_64D260(v5, v7, 1); v10 = *(_DWORD *)sub_64D260(v5, v7, 2); v11 = *(_DWORD *)sub_64D260(v5, v7, 3); v12 = *(_DWORD *)sub_64D260(v5, v7, 4); sub_64D260(v5, v7, 5); sub_64D260(v5, v7, 6); sub_64D260(v5, v7, 7); sub_64D260(v5, v7, 8); if ( a2 != v8 || a3 != v10 || a4 != v11 || a5 != v12 ) { v6 = v13; goto LABEL_8; } return v7; } //----- (00649C00) -------------------------------------------------------- signed int __thiscall sub_649C00(int this, int a2) { int v2; // edi@1 int v3; // ebx@1 int v4; // esi@1 signed int result; // eax@4 v2 = this; v3 = sub_64D200(this); v4 = 0; if ( v3 <= 0 ) { LABEL_4: result = 0; } else { while ( *(_DWORD *)sub_64D210(v2, v4) != 1 ) { ++v4; if ( v4 >= v3 ) goto LABEL_4; } *(_DWORD *)a2 = sub_64D260(v2, v4, 0); result = 1; } return result; } //----- (00649C50) -------------------------------------------------------- signed int __thiscall sub_649C50(int this, int a2, int a3) { int v3; // edi@1 int v4; // esi@1 int v5; // eax@3 signed int result; // eax@5 int v7; // [sp+Ch] [bp-4h]@1 v3 = this; v4 = 0; v7 = sub_64D200(this); if ( v7 <= 0 ) { LABEL_5: result = 0; } else { while ( 1 ) { if ( *(_DWORD *)sub_64D210(v3, v4) == 2 ) { v5 = *(_DWORD *)sub_64D260(v3, v4, 0); if ( v5 == a2 ) break; } ++v4; if ( v4 >= v7 ) goto LABEL_5; } *(_DWORD *)a3 = v5; *(_DWORD *)(a3 + 4) = sub_64D260(v3, v4, 1); *(_DWORD *)(a3 + 8) = sub_64D260(v3, v4, 2); result = 1; } return result; } //----- (00649CD0) -------------------------------------------------------- signed int __thiscall sub_649CD0(int this, int a2, int a3, int a4, int a5, int a6) { int v6; // esi@1 int v7; // eax@1 signed int result; // eax@2 v6 = this; v7 = sub_649B20(this, a3, a4, a5, a6); if ( v7 == -1 ) result = 0; else result = sub_649A70(v6, a2, v7); return result; } //----- (00649D10) -------------------------------------------------------- void *__thiscall sub_649D10(void *this) { void *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 = (char *)this + 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; } //----- (00649D90) -------------------------------------------------------- bool __thiscall sub_649D90(void *this) { return *(_BYTE *)this == 0; } //----- (00649DA0) -------------------------------------------------------- int __thiscall sub_649DA0(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)a2 = *(_DWORD *)this; *(_DWORD *)(a2 + 4) = *(_DWORD *)(this + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(this + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(this + 12); *(_DWORD *)(a2 + 16) = *(_DWORD *)(this + 16); *(_BYTE *)(a2 + 20) = 0; return result; } //----- (00649DD0) -------------------------------------------------------- char __thiscall sub_649DD0(int this) { int v1; // esi@1 const char *v2; // edi@1 char result; // al@2 unsigned int v4; // ecx@3 int v5; // eax@3 v1 = this; v2 = (const char *)(this + 4); if ( fgets((char *)(this + 4), 4096, *(FILE **)this) ) { v4 = strlen(v2); v5 = 0; *(_DWORD *)(v1 + 4100) = v4; for ( *(_DWORD *)(v1 + 4104) = 0; v5 < *(_DWORD *)(v1 + 4100); ++v5 ) { if ( v2[v5] == 32 ) { if ( v5 > 0 && *(_BYTE *)(v5 + v1 + 3) == 9 ) v2[v5] = 9; if ( v5 < *(_DWORD *)(v1 + 4100) - 1 ) { if ( *(_BYTE *)(v5 + v1 + 5) == 9 ) v2[v5] = 9; } } } result = 1; } else { *(_DWORD *)(v1 + 4100) = -1; result = 0; } return result; } //----- (00649E60) -------------------------------------------------------- signed int __thiscall sub_649E60(int this) { int v1; // edx@1 signed int result; // eax@2 v1 = *(_DWORD *)(this + 4104); if ( *(_DWORD *)(this + 4100) >= v1 ) { result = *(_BYTE *)(v1 + this + 4); *(_DWORD *)(this + 4104) = v1 + 1; } else { result = 999; } return result; } //----- (00649E90) -------------------------------------------------------- char __thiscall sub_649E90(int this, signed int a2) { char result; // al@2 int v3; // edx@3 int v4; // eax@3 if ( a2 >= 32 ) { v3 = *(_DWORD *)(this + 32); v4 = 0; if ( v3 <= 0 ) { LABEL_6: result = 0; } else { while ( *(_BYTE *)(v4 + this) != a2 ) { ++v4; if ( v4 >= v3 ) goto LABEL_6; } result = 1; } } else { result = 1; } return result; } //----- (00649ED0) -------------------------------------------------------- int __thiscall sub_649ED0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 32) = 0; return result; } //----- (00649EE0) -------------------------------------------------------- int __thiscall sub_649EE0(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 64) = 0; return result; } //----- (00649EF0) -------------------------------------------------------- void *__thiscall sub_649EF0(void *this) { void *result; // eax@1 result = this; *(_BYTE *)this = 59; return result; } //----- (00649F00) -------------------------------------------------------- void *__thiscall sub_649F00(void *this) { void *result; // eax@1 result = this; *(_WORD *)this = 23899; return result; } //----- (00649F10) -------------------------------------------------------- bool __thiscall sub_649F10(void *this, int a2) { return *(_BYTE *)this == a2; } //----- (00649F20) -------------------------------------------------------- bool __thiscall sub_649F20(int this, int a2) { return *(_BYTE *)(this + 1) == a2; } //----- (00649F40) -------------------------------------------------------- void __thiscall sub_649F40(int this) { *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = "Noerr"; *(_BYTE *)(this + 8) = 0; } //----- (00649F60) -------------------------------------------------------- int __thiscall sub_649F60(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 4) = a2; *(_BYTE *)(this + 8) = 1; return result; } //----- (00649F80) -------------------------------------------------------- int __thiscall sub_649F80(int this, int a2, int a3) { int result; // eax@1 result = this; *(_DWORD *)this = a2; *(_DWORD *)(this + 4104) = 0; *(_DWORD *)(this + 4100) = -1; *(_DWORD *)(this + 4108) = a3; return result; } //----- (00649FB0) -------------------------------------------------------- signed int __thiscall sub_649FB0(int this) { int v1; // edx@1 signed int result; // eax@2 int v3; // esi@3 int v4; // edi@6 int v5; // edx@6 while ( 1 ) { v1 = *(_DWORD *)(this + 4104); if ( *(_DWORD *)(this + 4100) < v1 ) break; result = *(_BYTE *)(v1 + this + 4); *(_DWORD *)(this + 4104) = v1 + 1; if ( result == 999 ) break; v3 = *(_DWORD *)(this + 4108); if ( result == *(_BYTE *)(v3 + 116) ) { *(_DWORD *)(this + 4104) = 0; *(_DWORD *)(this + 4100) = -1; } else { if ( result >= 32 ) { v4 = *(_DWORD *)(v3 + 44); v5 = 0; if ( v4 <= 0 ) return result; while ( *(_BYTE *)(v5 + v3 + 12) != result ) { ++v5; if ( v5 >= v4 ) return result; } } } } return 999; } //----- (0064A030) -------------------------------------------------------- int __thiscall sub_64A030(int this, int a2) { int result; // eax@1 result = *(_DWORD *)(this + 4108); *(_DWORD *)(result + 4) = a2; *(_BYTE *)(result + 8) = 1; return result; } //----- (0064A050) -------------------------------------------------------- int __thiscall sub_64A050(int this, int a2) { int result; // eax@1 int v3; // esi@2 int v4; // edx@3 int v5; // edx@5 result = 0; while ( 1 ) { v3 = *(_DWORD *)(this + 4104); if ( *(_DWORD *)(this + 4100) < v3 ) break; v4 = *(_BYTE *)(v3 + this + 4); *(_DWORD *)(this + 4104) = v3 + 1; if ( (unsigned int)(v4 - 48) > 7 ) break; result = v4 + 8 * result - 48; *(_BYTE *)a2 = 1; } v5 = *(_DWORD *)(this + 4104); if ( v5 > 0 ) *(_DWORD *)(this + 4104) = v5 - 1; return result; } //----- (0064A0B0) -------------------------------------------------------- int __thiscall sub_64A0B0(int this, int a2) { int result; // eax@1 int v3; // esi@2 int v4; // edx@3 int v5; // edx@5 result = 0; while ( 1 ) { v3 = *(_DWORD *)(this + 4104); if ( *(_DWORD *)(this + 4100) < v3 ) break; v4 = *(_BYTE *)(v3 + this + 4); *(_DWORD *)(this + 4104) = v3 + 1; if ( (unsigned int)(v4 - 48) > 9 ) break; result = v4 + 10 * result - 48; *(_BYTE *)a2 = 1; } v5 = *(_DWORD *)(this + 4104); if ( v5 > 0 ) *(_DWORD *)(this + 4104) = v5 - 1; return result; } //----- (0064A110) -------------------------------------------------------- int __thiscall sub_64A110(int this, int a2) { int result; // eax@1 int v3; // esi@2 int v4; // edx@3 int v5; // edx@9 result = 0; while ( 1 ) { v3 = *(_DWORD *)(this + 4104); if ( *(_DWORD *)(this + 4100) < v3 ) break; v4 = *(_BYTE *)(v3 + this + 4); *(_DWORD *)(this + 4104) = v3 + 1; if ( (unsigned int)(v4 - 48) > 9 ) { if ( (unsigned int)(v4 - 65) > 5 ) { if ( (unsigned int)(v4 - 97) > 5 ) break; result = v4 - 87 + 16 * result; *(_BYTE *)a2 = 1; } else { result = v4 - 55 + 16 * result; *(_BYTE *)a2 = 1; } } else { result = v4 - 48 + 16 * result; *(_BYTE *)a2 = 1; } } v5 = *(_DWORD *)(this + 4104); if ( v5 > 0 ) *(_DWORD *)(this + 4104) = v5 - 1; return result; } //----- (0064A190) -------------------------------------------------------- int __thiscall sub_64A190(int this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@1 int v4; // edx@2 int v5; // esi@3 v1 = *(_DWORD *)(this + 4100); result = 0; v3 = 0; while ( 1 ) { v4 = *(_DWORD *)(this + 4104); if ( v1 < v4 ) break; v5 = *(_BYTE *)(v4 + this + 4); *(_DWORD *)(this + 4104) = v4 + 1; if ( (unsigned int)(v5 - 48) > 7 ) break; ++v3; result = v5 + 8 * result - 48; if ( v3 >= 3 ) return result; } return 999; } //----- (0064A1E0) -------------------------------------------------------- int __thiscall sub_64A1E0(int this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@1 int v4; // edx@2 int v5; // esi@3 v1 = *(_DWORD *)(this + 4100); result = 0; v3 = 0; while ( 1 ) { v4 = *(_DWORD *)(this + 4104); if ( v1 < v4 ) break; v5 = *(_BYTE *)(v4 + this + 4); *(_DWORD *)(this + 4104) = v4 + 1; if ( (unsigned int)(v5 - 48) > 9 ) break; ++v3; result = v5 + 10 * result - 48; if ( v3 >= 3 ) return result; } return 999; } //----- (0064A230) -------------------------------------------------------- int __thiscall sub_64A230(int this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@1 int v4; // esi@2 int v5; // edx@3 int v6; // edx@4 v1 = *(_DWORD *)(this + 4100); result = 0; v3 = 0; while ( 1 ) { v4 = *(_DWORD *)(this + 4104); if ( v1 < v4 ) break; v5 = *(_BYTE *)(v4 + this + 4); *(_DWORD *)(this + 4104) = v4 + 1; if ( (unsigned int)(v5 - 48) > 9 ) { if ( (unsigned int)(v5 - 65) > 5 ) { if ( (unsigned int)(v5 - 97) > 5 ) return 999; v6 = v5 - 87; } else { v6 = v5 - 55; } } else { v6 = v5 - 48; } ++v3; result = v6 + 16 * result; if ( v3 >= 2 ) return result; } return 999; } //----- (0064A2A0) -------------------------------------------------------- int __thiscall sub_64A2A0(int this, int a2) { signed int v2; // eax@1 int v3; // ecx@1 int result; // eax@2 bool v5; // zf@3 int v6; // eax@3 int v7; // edx@8 int v8; // eax@9 v2 = sub_649FB0(this); if ( v2 == 45 ) { result = -sub_64A2A0(v3, a2); } else { v5 = v2 == 48; v6 = *(_DWORD *)(v3 + 4104); if ( v5 ) { if ( *(_DWORD *)(v3 + 4100) >= v6 && (v7 = *(_BYTE *)(v6 + v3 + 4), *(_DWORD *)(v3 + 4104) = v6 + 1, v7 == 120) ) { result = sub_64A110(v3, a2); } else { v8 = *(_DWORD *)(v3 + 4104); if ( v8 > 0 ) *(_DWORD *)(v3 + 4104) = v8 - 1; *(_BYTE *)a2 = 1; result = sub_64A050(v3, a2); } } else { if ( v6 > 0 ) *(_DWORD *)(v3 + 4104) = v6 - 1; result = sub_64A0B0(v3, a2); } } return result; } //----- (0064A320) -------------------------------------------------------- char __thiscall sub_64A320(int this) { signed int v1; // eax@1 int v2; // ecx@1 char result; // al@4 int v4; // ecx@5 v1 = sub_649FB0(this); if ( v1 == 999 ) { LABEL_4: result = 1; } else { while ( v1 == 32 ) { v1 = sub_649FB0(v2); if ( v1 == 999 ) goto LABEL_4; } v4 = *(_DWORD *)(v2 + 4108); *(_DWORD *)(v4 + 4) = "Extra data exist"; *(_BYTE *)(v4 + 8) = 1; result = 0; } return result; } //----- (0064A360) -------------------------------------------------------- signed int __thiscall sub_64A360(int this) { signed 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 = sub_649FB0(this); if ( result == 999 ) { v3 = *(_DWORD *)(v2 + 4108); *(_DWORD *)(v3 + 4) = "Unexpected EOF"; *(_BYTE *)(v3 + 8) = 1; return result; } if ( result == 92 ) { v4 = *(_DWORD *)(v2 + 4104); if ( *(_DWORD *)(v2 + 4100) >= v4 ) { v5 = *(_BYTE *)(v4 + v2 + 4); *(_DWORD *)(v2 + 4104) = v4 + 1; } else { v5 = 999; } result = 999; if ( v5 == 100 ) { result = sub_64A1E0(v2); } else { if ( v5 == 111 ) { result = sub_64A190(v2); } else { if ( v5 != 120 ) { LABEL_14: v6 = *(_DWORD *)(v2 + 4108); *(_DWORD *)(v6 + 4) = "Invalid character"; *(_BYTE *)(v6 + 8) = 1; return result; } result = sub_64A230(v2); } } if ( result < 256 ) return result; goto LABEL_14; } return result; } //----- (0064A3F0) -------------------------------------------------------- int __thiscall sub_64A3F0(void *this, int a2) { int v2; // esi@1 signed int v3; // eax@2 int v4; // ecx@2 int v5; // edi@2 int v6; // edx@2 int v7; // ecx@7 signed int v8; // eax@8 signed int v9; // ebx@8 int v10; // edx@9 int v11; // edi@9 int v12; // ecx@9 signed int v13; // eax@17 int v14; // ecx@17 int v15; // eax@20 int v16; // edi@26 int v17; // ecx@27 int v18; // eax@27 int v19; // esi@35 int result; // eax@36 int v21; // [sp+Ch] [bp-10h]@8 signed int v22; // [sp+18h] [bp-4h]@6 v2 = (int)this; while ( 1 ) { v3 = sub_649FB0(v2); v4 = *(_DWORD *)(v2 + 4108); v5 = *(_DWORD *)(v4 + 152); v6 = 0; if ( v5 <= 0 ) break; while ( *(_BYTE *)(v6 + v4 + 120) != v3 ) { ++v6; if ( v6 >= v5 ) goto LABEL_5; } } LABEL_5: if ( v3 == 999 ) { LABEL_36: result = 0; } else { *(_BYTE *)(v2 + 4112) = v3; v22 = 1; do { v7 = *(_DWORD *)(v2 + 4104); if ( *(_DWORD *)(v2 + 4100) < v7 ) break; v8 = *(_BYTE *)(v7 + v2 + 4); v9 = v8; v21 = v7 + 1; *(_DWORD *)(v2 + 4104) = v7 + 1; if ( v8 == 999 ) break; v10 = *(_DWORD *)(v2 + 4108); v11 = *(_DWORD *)(v10 + 152); v12 = 0; if ( v11 <= 0 ) { LABEL_13: if ( a2 == 1 ) { if ( *(_BYTE *)(v10 + 117) == v8 || *(_BYTE *)(v10 + 118) == v8 ) { if ( v21 > 0 ) *(_DWORD *)(v2 + 4104) = v21 - 1; break; } if ( v8 == 92 ) { v13 = sub_649E60(v2); if ( v13 == 100 ) { v15 = sub_64A1E0(v14); } else { if ( v13 == 111 ) { v15 = sub_64A190(v14); } else { if ( v13 != 120 ) goto LABEL_35; v15 = sub_64A230(v14); } } if ( v15 >= 256 ) { LABEL_35: v19 = *(_DWORD *)(v2 + 4108); *(_DWORD *)(v19 + 4) = "Invalid character"; *(_BYTE *)(v19 + 8) = 1; goto LABEL_36; } v9 = v15; } } v16 = *(_DWORD *)(v2 + 4108); if ( sub_649E90(v16 + 12, v9) ) break; v17 = *(_DWORD *)(v16 + 112); v18 = 0; if ( v17 > 0 ) { while ( *(_BYTE *)(v16 + 2 * v18 + 48) != v9 ) { ++v18; if ( v18 >= v17 ) goto LABEL_32; } LOBYTE(v9) = *(_BYTE *)(v16 + 2 * v18 + 49); } LABEL_32: *(_BYTE *)(v2 + 4112 + v22) = v9; } else { while ( *(_BYTE *)(v12 + v10 + 120) != v8 ) { ++v12; if ( v12 >= v11 ) { v9 = v8; goto LABEL_13; } } --v22; } ++v22; } while ( v22 < 2048 ); result = v2 + 4112; *(_BYTE *)(v22 + v2 + 4112) = 0; } return result; } //----- (0064A5A0) -------------------------------------------------------- char *__thiscall sub_64A5A0(int this, char *a2) { int v2; // esi@1 signed int v3; // eax@2 int v4; // ecx@2 int v5; // esi@4 char *result; // eax@4 int v7; // esi@6 int v8; // eax@7 v2 = this; if ( sub_649DD0(this) ) { while ( 1 ) { ++**(_DWORD **)(v2 + 4108); v3 = sub_649FB0(v2); if ( v3 != 999 ) break; if ( !sub_649DD0(v4) ) goto LABEL_4; } if ( v3 == 35 ) { v8 = sub_64A3F0((void *)v4, 1); *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 2) = 0; *((_DWORD *)a2 + 1) = 0; *(_DWORD *)a2 = 0; strncpy(a2, (const char *)v8, 0x14u); sub_649D10(a2); result = a2; } else { v7 = *(_DWORD *)(v2 + 4108); *(_DWORD *)(v7 + 4) = "# comment expected"; *(_BYTE *)(v7 + 8) = 1; result = 0; } } else { LABEL_4: v5 = *(_DWORD *)(v2 + 4108); *(_DWORD *)(v5 + 4) = "Unexpected EOF"; *(_BYTE *)(v5 + 8) = 1; result = 0; } return result; } //----- (0064A640) -------------------------------------------------------- char __thiscall sub_64A640(int this, int a2) { int v2; // esi@1 int v3; // eax@2 char result; // al@3 signed int v5; // eax@4 v2 = this; if ( *(_DWORD *)(this + 32) >= 32 ) { v3 = *(_DWORD *)(a2 + 4108); *(_DWORD *)(v3 + 4) = "Too many delimiters"; *(_BYTE *)(v3 + 8) = 1; return 0; } v5 = sub_64A360(a2); if ( v5 >= 256 ) return 0; *(_BYTE *)(v2 + *(_DWORD *)(v2 + 32)) = v5; result = 1; ++*(_DWORD *)(v2 + 32); return result; } //----- (0064A690) -------------------------------------------------------- char __thiscall sub_64A690(int this, int a2) { int v2; // esi@1 int v3; // eax@2 char result; // al@2 signed int v5; // eax@3 signed int v6; // eax@4 v2 = this; if ( *(_DWORD *)(this + 64) < 32 ) { v5 = sub_64A360(a2); if ( v5 < 256 && (*(_BYTE *)(v2 + 2 * *(_DWORD *)(v2 + 64)) = v5, v6 = sub_64A360(a2), v6 < 256) ) { *(_BYTE *)(v2 + 2 * *(_DWORD *)(v2 + 64) + 1) = v6; result = 1; ++*(_DWORD *)(v2 + 64); } else { result = 0; } } else { v3 = *(_DWORD *)(a2 + 4108); *(_DWORD *)(v3 + 4) = "Too many exchange"; *(_BYTE *)(v3 + 8) = 1; result = 0; } return result; } //----- (0064A700) -------------------------------------------------------- char __thiscall sub_64A700(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 char result; // al@2 v2 = this; v3 = sub_64A360(a2); if ( v3 < 256 ) { *(_BYTE *)v2 = v3; result = 1; } else { result = 0; } return result; } //----- (0064A730) -------------------------------------------------------- char __thiscall sub_64A730(void *this, int a2) { void *v2; // esi@1 signed int v3; // eax@1 char result; // al@2 signed int v5; // eax@3 v2 = this; v3 = sub_64A360(a2); if ( v3 >= 256 || (*(_BYTE *)v2 = v3, v5 = sub_64A360(a2), v5 >= 256) ) { result = 0; } else { *((_BYTE *)v2 + 1) = v5; result = 1; } return result; } //----- (0064A770) -------------------------------------------------------- int __thiscall sub_64A770(int this) { int result; // eax@1 result = this; *(_DWORD *)this = 0; *(_DWORD *)(this + 4) = "Noerr"; *(_BYTE *)(this + 8) = 0; return result; } //----- (0064A7B0) -------------------------------------------------------- char __thiscall sub_64A7B0(int this, char *a2) { int v2; // esi@1 char result; // al@2 int v4; // eax@3 char *v5; // edi@4 void *v6; // ebx@6 int i; // eax@8 void *v8; // eax@11 void *v9; // ecx@11 char *v10; // edx@11 signed int v11; // ecx@13 int v12; // eax@14 int v13; // eax@16 int v14; // ecx@16 void *v15; // ST08_4@16 void **v16; // ecx@16 int v17; // edx@16 void *v18; // [sp+Ch] [bp+8h]@4 v2 = this; if ( *(_WORD *)(this + 12) == -1 && (v4 = *(_DWORD *)(this + 16)) != 0 ) { v5 = &a2[*(_DWORD *)(v4 + 4)]; v18 = (void *)operator new(4 * (_DWORD)&a2[*(_DWORD *)(v4 + 4)]); if ( v18 ) { v6 = (void *)operator new(12 * (_DWORD)(v5 + 1)); if ( v6 ) { for ( i = 0; i < *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4); ++i ) *((_DWORD *)v18 + i) = *(_DWORD *)(**(_DWORD **)(v2 + 16) + 4 * i); memmove(v6, *(const void **)(v2 + 8), 12 * *(_DWORD *)(*(_DWORD *)(v2 + 16) + 4)); *((_WORD *)v6 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 4) + 3) = (_WORD)v5; *((_WORD *)v6 + 6 * *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 14) + 6) + 2) = (_WORD)v5; if ( (signed int)v5 > 0 ) { v8 = v18; v9 = v6; v10 = v5; do { *(_DWORD *)v9 = v8; v8 = (char *)v8 + 4; v9 = (char *)v9 + 12; --v10; } while ( v10 ); } v11 = *(_WORD *)(v2 + 4); if ( v11 < (signed int)v5 ) { v12 = (int)((char *)v6 + 12 * v11 + 4); do { *(_WORD *)v12 = v11 + 1; *(_BYTE *)(v12 + 4) = 0; *(_WORD *)(v12 + 2) = v11++ - 1; v12 += 12; } while ( v11 < (signed int)v5 ); } *((_WORD *)v6 + 6 * *(_WORD *)(v2 + 4) + 3) = (_WORD)v5 - 1; *((_WORD *)v6 + 6 * (_DWORD)v5 - 4) = *(_WORD *)(v2 + 4); v13 = (int)((char *)v6 + 12 * (_DWORD)v5); v14 = *(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4); *(_DWORD *)v13 = *(_DWORD *)v14; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v13 + 8) = *(_DWORD *)(v14 + 8); v15 = *(void **)(v2 + 8); *(_WORD *)(v2 + 12) = *(_WORD *)(v2 + 4); operator delete(v15); v16 = *(void ***)(v2 + 16); *(_DWORD *)(v2 + 8) = v6; operator delete(*v16); **(_DWORD **)(v2 + 16) = v18; v17 = *(_DWORD *)(v2 + 16); *(_WORD *)(v2 + 4) = (_WORD)v5; *(_DWORD *)(v17 + 4) = (unsigned __int16)v5; *(_WORD *)(v2 + 14) = (_WORD)v5; result = 1; } else { operator delete(v18); result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (0064A970) -------------------------------------------------------- char __thiscall sub_64A970(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 4); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; *(_DWORD *)a2 = **(_DWORD **)(v2 + 12 * v3); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (0064A9C0) -------------------------------------------------------- char __thiscall sub_64A9C0(void *this, int a2) { int v2; // esi@1 int v3; // eax@1 v2 = *((_DWORD *)this + 2); v3 = *(_WORD *)(v2 + 12 * *((_WORD *)this + 7) + 6); if ( (unsigned __int16)v3 < *((_WORD *)this + 2) ) { if ( !*(_BYTE *)(v2 + 12 * v3 + 8) ) return 0; *(_DWORD *)a2 = **(_DWORD **)(v2 + 12 * v3); (*(void (__stdcall **)(int))(*(_DWORD *)this + 12))(v3); } return 1; } //----- (0064AA20) -------------------------------------------------------- void *__thiscall sub_64AA20(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 2); *(_DWORD *)this = &off_707EC4; if ( v3 ) operator delete(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 707EC4: using guessed type int (__thiscall *off_707EC4)(void *, char); //----- (0064AA60) -------------------------------------------------------- void __thiscall sub_64AA60(int this) { int v1; // esi@1 void *v2; // eax@1 void *v3; // esi@3 v1 = this; v2 = *(void **)(this + 24); if ( v2 ) operator delete(v2); *(_DWORD *)v1 = &off_707EC4; v3 = *(void **)(v1 + 8); if ( v3 ) operator delete(v3); } // 707EC4: using guessed type int (__thiscall *off_707EC4)(void *, char); //----- (0064AAD0) -------------------------------------------------------- int __thiscall sub_64AAD0(int this, int a2) { int result; // eax@1 int v3; // edi@1 signed int v4; // ebx@1 int v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // si@3 int v8; // esi@4 int v9; // ecx@5 int v10; // eax@5 int v11; // edx@5 int v12; // eax@10 int v13; // ecx@12 signed int v14; // [sp+8h] [bp-8h]@1 int v15; // [sp+Ch] [bp-4h]@2 result = a2; v3 = this; v4 = *(_WORD *)(this + 20); v14 = *(_WORD *)(this + 20); if ( a2 > 0 ) { v15 = a2; do { v5 = rand() % v4; v6 = *(_WORD *)(v3 + 14); v7 = v5; if ( (_WORD)v6 == *(_WORD *)(v3 + 4) ) { v9 = *(_DWORD *)(v3 + 8); v10 = *(_WORD *)(v9 + 12 * v6 + 4); v11 = 0; a2 = v10; if ( v7 <= 0u ) { LABEL_9: v8 = *(_DWORD *)(v9 + 12 * (unsigned __int16)v10); } else { while ( 1 ) { v10 = *(_WORD *)(v9 + 12 * (unsigned __int16)v10 + 4); if ( (unsigned __int16)v10 >= *(_WORD *)(v3 + 4) ) break; ++v11; if ( (unsigned __int16)v11 >= v7 ) { a2 = v10; goto LABEL_9; } } a2 = v10; v8 = 0; } } else { v8 = 0; } v12 = rand(); v4 = v14; result = sub_4CD440(v3, v12 % v14, &a2); if ( v8 ) { if ( result ) { v13 = *(_DWORD *)v8; *(_DWORD *)v8 = *(_DWORD *)result; *(_DWORD *)result = v13; } } --v15; } while ( v15 ); } return result; } //----- (0064AB90) -------------------------------------------------------- signed int __thiscall sub_64AB90(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 v2 = (int)this; while ( 1 ) { if ( *(_WORD *)(v2 + 12) != -1 ) { v3 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 4))(v2, *(_WORD *)(v2 + 12)); if ( v3 ) break; } if ( !sub_64A7B0(v2, (char *)5) ) return 0; } *(_DWORD *)v3 = a2; return 1; } //----- (0064ABE0) -------------------------------------------------------- signed int __thiscall sub_64ABE0(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 v2 = (int)this; while ( 1 ) { if ( *(_WORD *)(v2 + 12) != -1 ) { v3 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 8))(v2, *(_WORD *)(v2 + 12)); if ( v3 ) break; } if ( !sub_64A7B0(v2, (char *)5) ) return 0; } *(_DWORD *)v3 = a2; return 1; } //----- (0064AC30) -------------------------------------------------------- char __thiscall sub_64AC30(int this, unsigned __int16 a2) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@4 signed int v5; // eax@4 int v6; // eax@6 signed int v7; // ecx@6 int v8; // eax@8 int (__stdcall **v10)(int, int); // [sp+10h] [bp-14h]@8 int v11; // [sp+14h] [bp-10h]@8 int v12; // [sp+20h] [bp-4h]@8 v2 = this; LOBYTE(v3) = a2; *(_WORD *)(this + 4) = a2; if ( a2 == -1 ) { *(_DWORD *)(this + 8) = 0; } else { v3 = operator new(12 * (a2 + 1)); *(_DWORD *)(v2 + 8) = v3; if ( v3 ) { v4 = 0; v5 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v2 + 8)) = 0; ++v5; v4 += 12; } while ( v5 <= *(_WORD *)(v2 + 4) ); v6 = 0; v7 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { do { *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 6) = v7 - 1; *(_WORD *)(v6 + *(_DWORD *)(v2 + 8) + 4) = v7 + 1; *(_BYTE *)(v6 + *(_DWORD *)(v2 + 8) + 8) = 0; ++v7; v6 += 12; } while ( v7 < *(_WORD *)(v2 + 4) ); } *(_WORD *)(*(_DWORD *)(v2 + 8) + 6) = *(_WORD *)(v2 + 4) - 1; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) - 8) = 0; v8 = *(_WORD *)(v2 + 4); *(_WORD *)(v2 + 14) = v8; *(_WORD *)(v2 + 12) = 0; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * v8 + 6) = v8; *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 4) = *(_WORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 6); *(_DWORD *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4)) = 0; *(_BYTE *)(*(_DWORD *)(v2 + 8) + 12 * *(_WORD *)(v2 + 4) + 8) = 1; *(_WORD *)(v2 + 20) = 0; v10 = &off_707C60; v11 = v2; v12 = 0; LOBYTE(v3) = sub_43C470(v2, (int)&v10); } } return v3; } // 707C60: using guessed type int (__stdcall *off_707C60)(int, int); //----- (0064ADB0) -------------------------------------------------------- char __thiscall sub_64ADB0(int this, int a2) { int v2; // esi@1 signed int v4; // eax@7 int v5; // edx@8 int v6; // ecx@10 v2 = this; if ( *(_DWORD *)(this + 8) ) operator delete(*(void **)(this + 8)); *(_DWORD *)(v2 + 16) = a2; if ( !*(_DWORD *)a2 ) { *(_DWORD *)(v2 + 8) = 0; return 0; } sub_64AC30(v2, *(_WORD *)(a2 + 4)); if ( !*(_DWORD *)(v2 + 8) ) return 0; v4 = 0; if ( *(_WORD *)(v2 + 4) > 0u ) { v5 = 0; do { if ( v4 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); if ( !*(_DWORD *)(v6 + v5) ) *(_DWORD *)(v6 + v5) = *(_DWORD *)a2 + 4 * v4; } ++v4; v5 += 12; } while ( v4 < *(_WORD *)(v2 + 4) ); } return 1; } //----- (0064AE30) -------------------------------------------------------- int __thiscall sub_64AE30(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &off_707EC4; *(_DWORD *)(this + 16) = 0; sub_64AC30(this, 1u); *(_DWORD *)(v1 + 28) = 5; *(_DWORD *)(v1 + 24) = operator new(0x14u); sub_64ADB0(v1, v1 + 24); return v1; } // 707EC4: using guessed type int (__thiscall *off_707EC4)(void *, char); //----- (0064AEC0) -------------------------------------------------------- int __usercall sub_64AEC0(int a1, const void *lp) { char *v2; // edi@1 char v3; // al@2 int v4; // eax@3 int v5; // ecx@3 char v6; // dl@4 unsigned int v7; // eax@5 const void *v8; // esi@5 void *v9; // edi@5 char v10; // cl@6 char *v11; // eax@7 char v12; // cl@8 FILE *v13; // esi@9 int v14; // eax@10 int v15; // eax@10 int i; // eax@10 DWORD v17; // eax@14 unsigned int v19; // [sp-10h] [bp-238h]@1 int v20; // [sp+0h] [bp-228h]@1 char v21; // [sp+4h] [bp-224h]@14 char v22; // [sp+107h] [bp-121h]@1 CHAR Filename; // [sp+108h] [bp-120h]@1 unsigned int v24; // [sp+20Ch] [bp-1Ch]@1 unsigned int *v25; // [sp+210h] [bp-18h]@1 int v26; // [sp+218h] [bp-10h]@1 int (__cdecl *v27)(PEXCEPTION_RECORD, PVOID, int); // [sp+21Ch] [bp-Ch]@1 unsigned int v28; // [sp+220h] [bp-8h]@1 int v29; // [sp+224h] [bp-4h]@1 int v30; // [sp+228h] [bp+0h]@1 v27 = _except_handler4; v26 = a1; v28 = __security_cookie ^ (unsigned int)&unk_7453D0; v24 = (unsigned int)&v30 ^ __security_cookie; v19 = (unsigned int)&v30 ^ __security_cookie; v25 = &v19; v20 = (int)lp; v29 = 0; GetModuleFileNameA(0, &Filename, 0x104u); v2 = &v22; do v3 = (v2++)[1]; while ( v3 ); *(_WORD *)v2 = *(_WORD *)word_6A2BF8; v4 = sub_64B9E0(0); v5 = v4; do v6 = *(_BYTE *)v4++; while ( v6 ); v7 = v4 - v5; v8 = (const void *)v5; v9 = &v22; do { v10 = *((_BYTE *)v9 + 1); v9 = (char *)v9 + 1; } while ( v10 ); memcpy(v9, v8, v7); v11 = &v22; do v12 = (v11++)[1]; while ( v12 ); *(_DWORD *)v11 = dword_707F6C; *((_DWORD *)v11 + 1) = dword_707F70; *((_DWORD *)v11 + 2) = dword_707F74; *((_WORD *)v11 + 6) = word_707F78; v13 = fopen(&Filename, "w"); if ( v13 ) { sub_650BD0(); v15 = sub_651030(v14, lp); fwrite((const void *)v15, strlen((const char *)v15), 1u, v13); fwrite("\n", 1u, 1u, v13); fwrite("--------------------------------------------------------------------------\n", 0x4Bu, 1u, v13); for ( i = sub_651480(14, (void *)lp); i; i = sub_6514E0(14, v20) ) { fwrite((const void *)i, strlen((const char *)i), 1u, v13); fwrite("\n", strlen("\n"), 1u, v13); } sub_650C00(); fclose(v13); } else { v17 = GetLastError(); sprintf(&v21, "EXCEPTION - Failed to Call Stack file '%s' (error %d)", &Filename, v17, v19); sub_64BC90(1, "Msg", "%s", &v21); } v29 = -2; return __security_check_cookie((unsigned int)&v30 ^ v24); } // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); // 707F6C: using guessed type int dword_707F6C; // 707F70: using guessed type int dword_707F70; // 707F74: using guessed type int dword_707F74; // 707F78: using guessed type __int16 word_707F78; // 86FEB8: using guessed type int __security_cookie; //----- (0064B0E0) -------------------------------------------------------- int __stdcall TopLevelExceptionFilter(void *a1) { HMODULE v1; // esi@1 unsigned __int8 *v2; // eax@2 int result; // eax@8 FARPROC v4; // ebx@9 char *v5; // edi@11 char v6; // al@12 int v7; // eax@13 int v8; // ecx@13 char v9; // dl@14 unsigned int v10; // eax@15 const void *v11; // esi@15 void *v12; // edi@15 char v13; // cl@16 char *v14; // eax@17 char v15; // cl@18 __int16 v16; // dx@19 HANDLE v17; // esi@19 DWORD v18; // ST08_4@20 HANDLE v19; // eax@20 DWORD v20; // eax@22 DWORD v21; // eax@23 DWORD v22; // [sp+Ch] [bp-324h]@20 void *v23; // [sp+10h] [bp-320h]@20 int v24; // [sp+14h] [bp-31Ch]@20 int v25; // [sp+18h] [bp-318h]@1 void *lp; // [sp+1Ch] [bp-314h]@1 CHAR LibFileName; // [sp+20h] [bp-310h]@1 char v28; // [sp+124h] [bp-20Ch]@21 char v29; // [sp+227h] [bp-109h]@11 CHAR FileName; // [sp+228h] [bp-108h]@11 unsigned int v31; // [sp+32Ch] [bp-4h]@1 int v32; // [sp+330h] [bp+0h]@1 v31 = (unsigned int)&v32 ^ __security_cookie; v1 = 0; lp = a1; v25 = 0; if ( GetModuleFileNameA(0, &LibFileName, 0x104u) ) { v2 = _mbsrchr((const unsigned __int8 *)&LibFileName, 0x5Cu); if ( v2 ) { *(_DWORD *)(v2 + 1) = *(_DWORD *)::LibFileName; *(_DWORD *)(v2 + 5) = dword_708074; *(_DWORD *)(v2 + 9) = dword_708078; v1 = LoadLibraryA(&LibFileName); } } sub_64AEC0((int)lp, lp); if ( dword_154D2AE0 ) dword_154D2AE0(); if ( v1 || (v1 = LoadLibraryA(::LibFileName)) != 0 ) { v4 = GetProcAddress(v1, "MiniDumpWriteDump"); if ( v4 ) { GetModuleFileNameA(0, &FileName, 0x104u); v5 = &v29; do v6 = (v5++)[1]; while ( v6 ); *(_WORD *)v5 = *(_WORD *)word_6A2BF8; v7 = sub_64B9E0(0); v8 = v7; do v9 = *(_BYTE *)v7++; while ( v9 ); v10 = v7 - v8; v11 = (const void *)v8; v12 = &v29; do { v13 = *((_BYTE *)v12 + 1); v12 = (char *)v12 + 1; } while ( v13 ); memcpy(v12, v11, v10); v14 = &v29; do v15 = (v14++)[1]; while ( v15 ); v16 = word_708014; *(_DWORD *)v14 = dword_708010; *((_WORD *)v14 + 2) = v16; v17 = CreateFileA(&FileName, 0x40000000u, 2u, 0, 2u, 0x80u, 0); if ( v17 == (HANDLE)-1 ) { v21 = GetLastError(); sprintf(&v28, "EXCEPTION - Failed to create dump file '%s' (error %d)", &FileName, v21); sub_64BC90(1, "Msg", "%s", &v28); } else { v22 = GetCurrentThreadId(); v23 = lp; v24 = 0; v18 = GetCurrentProcessId(); v19 = GetCurrentProcess(); if ( ((int (__stdcall *)(HANDLE, DWORD, HANDLE, signed int, DWORD *, _DWORD, _DWORD))v4)( v19, v18, v17, 64, &v22, 0, 0) ) { v25 = 1; sprintf(&v28, "EXCEPTION - Saved dump file to '%s'", &FileName); sub_64BC90(1, "Msg", "%s", &v28); CloseHandle(v17); } else { v20 = GetLastError(); sprintf(&v28, "EXCEPTION - Failed to save dump file to '%s' (error %d)", &FileName, v20); sub_64BC90(1, "Msg", "%s", &v28); CloseHandle(v17); } } result = v25; } else { sub_64BC90(1, "Msg", "%s", "EXCEPTION - DBGHELP.DLL TOO OLD"); result = 0; } } else { sub_64BC90(1, "Msg", "%s", "EXCEPTION - DBGHELP.DLL NOT FOUND"); result = 0; } return result; } // 708010: using guessed type int dword_708010; // 708014: using guessed type __int16 word_708014; // 708074: using guessed type int dword_708074; // 708078: using guessed type int dword_708078; // 86FEB8: using guessed type int __security_cookie; // 154D2AE0: using guessed type int (*dword_154D2AE0)(void); //----- (0064B3D0) -------------------------------------------------------- void *__thiscall sub_64B3D0(void *this) { void *v1; // esi@1 v1 = this; SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)TopLevelExceptionFilter); return v1; } //----- (0064B3F0) -------------------------------------------------------- int __thiscall sub_64B3F0(void *this, signed int a2) { int result; // eax@2 if ( a2 < 33 ) result = *((_DWORD *)this + a2 + 294); else result = 0; return result; } //----- (0064B410) -------------------------------------------------------- void *__thiscall sub_64B410(void *this, const char *a2) { void *v2; // esi@1 int v3; // eax@2 int v4; // ecx@3 int v5; // eax@6 char v7; // [sp+8h] [bp-104h]@8 unsigned int v8; // [sp+108h] [bp-4h]@1 int v9; // [sp+10Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v2 = this; if ( !sub_627480(this, a2, 504, 76) ) { sub_6390B0(&unk_86DDD8, (int)"BinaryDataBox::bdb_ReadData : readfail", (int)a2); v3 = *((_DWORD *)v2 + 13); if ( v3 ) v4 = *(_DWORD *)v3; else v4 = 0; if ( v3 ) v5 = *(_DWORD *)v3; else v5 = 0; sprintf(&v7, "Code:%X:%d\tSHN:%X:%d", 504, 504, v5, v4); sub_639100(&unk_86DDD8, (int)&v7, 0); loc_6391B0("BinaryDataBox::bdb_ReadData"); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0064B4C0) -------------------------------------------------------- int __thiscall sub_64B4C0(void *this) { int v1; // esi@1 int v2; // eax@1 unsigned int v3; // edi@1 unsigned int v4; // ebx@1 int v5; // eax@3 int v6; // eax@5 int i; // eax@8 int v8; // eax@12 int v9; // ebx@15 int v10; // eax@21 int v11; // ecx@23 _BYTE *v12; // ecx@23 int v13; // ebx@23 int result; // eax@27 unsigned int v15; // ebx@27 int v16; // [sp+Ch] [bp-4h]@18 v1 = (int)this; sub_64B410(this, "../9Data/Shine/MapInfo.shn"); v2 = *(_DWORD *)(v1 + 52); v3 = 0; *(_DWORD *)(v1 + 144) = 0; v4 = 0; if ( *(_DWORD *)(v2 + 40) > 0 ) { do { if ( v4 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v5 = sub_626BC0(v1, v4); else v5 = v1 + 64; v6 = *(_WORD *)v5; if ( *(_DWORD *)(v1 + 144) < v6 ) *(_DWORD *)(v1 + 144) = v6; ++v4; } while ( (signed int)v4 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ); } ++*(_DWORD *)(v1 + 144); *(_DWORD *)(v1 + 140) = operator new(4 * *(_DWORD *)(v1 + 144)); for ( i = 0; i < *(_DWORD *)(v1 + 144); ++i ) *(_DWORD *)(*(_DWORD *)(v1 + 140) + 4 * i) = 0; if ( *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) > 0 ) { do { if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v8 = sub_626BC0(v1, v3); else v8 = v1 + 64; *(_DWORD *)(*(_DWORD *)(v1 + 140) + 4 * *(_WORD *)v8) = v8; if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v9 = sub_626BC0(v1, v3); else v9 = v1 + 64; if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v16 = sub_626BC0(v1, v3); else v16 = v1 + 64; if ( v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) v10 = sub_626BC0(v1, v3); else v10 = v1 + 64; v11 = dword_8622C4 & (dword_8622C0 + 1); dword_8622C0 = v11; v12 = &byte_85A2C0[256 * v11]; *(_DWORD *)v12 = *(_DWORD *)(v10 + 2); *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 6); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 10); v12[12] = 0; v13 = *(_WORD *)v9; if ( !sub_639590((void *)(v1 + 148), v12, *(_WORD *)v16) ) { sub_639100(&unk_86DDD8, (int)"MobDataBox::ReadData : memory leak for BTree", v13); loc_6391B0("MapDataBox::mdb_Load"); } ++v3; } while ( (signed int)v3 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ); v3 = 0; } result = 0; *(_DWORD *)(v1 + 1176) = 0; *(_DWORD *)(v1 + 1180) = 0; *(_DWORD *)(v1 + 1184) = 0; *(_DWORD *)(v1 + 1188) = 0; *(_DWORD *)(v1 + 1192) = 0; *(_DWORD *)(v1 + 1196) = 0; *(_DWORD *)(v1 + 1200) = 0; *(_DWORD *)(v1 + 1204) = 0; *(_DWORD *)(v1 + 1208) = 0; *(_DWORD *)(v1 + 1212) = 0; *(_DWORD *)(v1 + 1216) = 0; *(_DWORD *)(v1 + 1220) = 0; *(_DWORD *)(v1 + 1224) = 0; *(_DWORD *)(v1 + 1228) = 0; *(_DWORD *)(v1 + 1232) = 0; *(_DWORD *)(v1 + 1236) = 0; *(_DWORD *)(v1 + 1240) = 0; *(_DWORD *)(v1 + 1244) = 0; *(_DWORD *)(v1 + 1248) = 0; *(_DWORD *)(v1 + 1252) = 0; *(_DWORD *)(v1 + 1256) = 0; *(_DWORD *)(v1 + 1260) = 0; *(_DWORD *)(v1 + 1264) = 0; *(_DWORD *)(v1 + 1268) = 0; *(_DWORD *)(v1 + 1272) = 0; *(_DWORD *)(v1 + 1276) = 0; *(_DWORD *)(v1 + 1280) = 0; *(_DWORD *)(v1 + 1284) = 0; *(_DWORD *)(v1 + 1288) = 0; *(_DWORD *)(v1 + 1292) = 0; *(_DWORD *)(v1 + 1296) = 0; *(_DWORD *)(v1 + 1300) = 0; *(_DWORD *)(v1 + 1304) = 0; v15 = 0; if ( *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) > (signed int)v3 ) { do { if ( v15 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ) result = sub_626BC0(v1, v15); else result = v1 + 64; *(_DWORD *)(v1 + 4 * *(_DWORD *)(result + 46) + 1176) = result; ++v15; } while ( (signed int)v15 < *(_DWORD *)(*(_DWORD *)(v1 + 52) + 40) ); } *(_DWORD *)(v1 + 1176) = v3; return result; } // 8622C0: using guessed type int dword_8622C0; // 8622C4: using guessed type int dword_8622C4; //----- (0064B770) -------------------------------------------------------- void *__thiscall sub_64B770(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_7080E4; sub_639940((int)this); if ( a2 & 1 ) operator delete(v2); return v2; } // 7080E4: using guessed type int (__thiscall *off_7080E4)(void *, char); //----- (0064B7A0) -------------------------------------------------------- int __thiscall sub_64B7A0(int this) { int v1; // esi@1 v1 = this; sub_639920(this); *(_DWORD *)v1 = &off_7080E4; *(_DWORD *)(v1 + 74) = 0; *(_DWORD *)(v1 + 70) = 0; *(_DWORD *)(v1 + 66) = 0; *(_DWORD *)(v1 + 131) = 0; *(_DWORD *)(v1 + 127) = 0; *(_DWORD *)(v1 + 123) = 0; memset((void *)(v1 + 64), 0, 0x4Cu); sub_639540(v1 + 148); *(_DWORD *)(v1 + 140) = 0; *(_DWORD *)(v1 + 144) = 0; return v1; } // 7080E4: using guessed type int (__thiscall *off_7080E4)(void *, char); //----- (0064B830) -------------------------------------------------------- void __thiscall sub_64B830(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 140); if ( v2 ) operator delete(v2); sub_639560((void *)(v1 + 148)); *(_DWORD *)v1 = &off_7080E4; sub_639940(v1); } // 7080E4: using guessed type int (__thiscall *off_7080E4)(void *, char); //----- (0064B8B0) -------------------------------------------------------- int __cdecl sub_64B8B0(DWORD dwMessageId, int a2) { DWORD v2; // esi@1 DWORD v3; // eax@3 const char *v5; // [sp-8h] [bp-10h]@7 v2 = dwMessageId; if ( !dwMessageId ) v2 = GetLastError(); v3 = 4608; if ( !a2 ) v3 = 4863; if ( !FormatMessageA(v3, 0, v2, 0x400u, Buffer, 0x400u, 0) ) { if ( a2 ) v5 = "ErrorCode=%d\r\n"; else v5 = "ErrorCode=%d"; sprintf(Buffer, v5, v2); } return (int)Buffer; } //----- (0064B920) -------------------------------------------------------- int __cdecl sub_64B920(int a1) { struct _SYSTEMTIME SystemTime; // [sp+0h] [bp-114h]@2 char v3; // [sp+10h] [bp-104h]@4 char v4; // [sp+90h] [bp-84h]@4 unsigned int v5; // [sp+110h] [bp-4h]@1 int v6; // [sp+114h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; if ( a1 ) GetSystemTime(&SystemTime); else GetLocalTime(&SystemTime); sprintf(&v3, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf(&v4, "%02d:%02d:%02d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond); sprintf(byte_154D2EE8, "%s %s ", &v3, &v4); return (int)byte_154D2EE8; } // 86FEB8: using guessed type int __security_cookie; //----- (0064B9E0) -------------------------------------------------------- int __cdecl sub_64B9E0(int a1) { struct _SYSTEMTIME SystemTime; // [sp+0h] [bp-114h]@2 char v3; // [sp+10h] [bp-104h]@4 CHAR TimeStr; // [sp+90h] [bp-84h]@4 unsigned int v5; // [sp+110h] [bp-4h]@1 int v6; // [sp+114h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; if ( a1 ) GetSystemTime(&SystemTime); else GetLocalTime(&SystemTime); sprintf(&v3, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf(&TimeStr, "%02d:%02d:%02d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond); GetTimeFormatA(0, 0, &SystemTime, "tt hhmmss", &TimeStr, 128); sprintf(byte_154D2F68, "%s %s", &v3, &TimeStr); return (int)byte_154D2F68; } // 86FEB8: using guessed type int __security_cookie; //----- (0064BAC0) -------------------------------------------------------- FILE *__cdecl sub_64BAC0(int a1, char *a2, const char *a3, va_list a4) { FILE *result; // eax@1 int v5; // esi@2 int v6; // eax@2 char *v7; // eax@2 char *v8; // ecx@3 char v9; // dl@4 char v10; // cl@6 FILE *v11; // esi@7 struct _SYSTEMTIME SystemTime; // [sp+4h] [bp-B1Ch]@7 char v13; // [sp+14h] [bp-B0Ch]@2 char v14; // [sp+414h] [bp-70Ch]@2 char v15; // [sp+814h] [bp-30Ch]@7 const CHAR DirPath; // [sp+894h] [bp-28Ch]@7 int (*v17)(); // [sp+998h] [bp-188h]@2 char v18; // [sp+99Ch] [bp-184h]@2 char v19; // [sp+A9Ch] [bp-84h]@7 unsigned int v20; // [sp+B1Ch] [bp-4h]@1 int v21; // [sp+B20h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; result = (FILE *)a3; if ( a1 ) { _vsnprintf(&v14, 0x400u, a3, a4); v5 = (unsigned __int16)word_154D2AE4++; v6 = sub_64B920(0); sprintf(&v13, "%06d %s%s\n", v5, v6, &v14); v17 = (int (*)())((char *)loc_67734C + 1); memset(&v18, 0, 0x100u); v7 = a2; if ( a2 != byte_6A492E ) { v8 = a2; do v9 = *v8++; while ( v9 ); if ( v8 != a2 + 1 ) { do { v10 = *v7; v7[(char *)&v17 - a2] = *v7; ++v7; } while ( v10 ); } } GetLocalTime(&SystemTime); sprintf(&v19, "%04d-%02d-%02d", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); sprintf(&v15, "%02d:%02d:%02d", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond); sprintf((char *)&DirPath, ".\\DebugMessage\\%s_%s.txt", &v17, &v19); MakeSureDirectoryPathExists(&DirPath); result = fopen(&DirPath, "a+"); v11 = result; if ( result ) { fprintf(result, &v13); result = (FILE *)fclose(v11); } } return result; } // 67734C: using guessed type int loc_67734C(); // 86FEB8: using guessed type int __security_cookie; // 154D2AE4: using guessed type __int16 word_154D2AE4; //----- (0064BC50) -------------------------------------------------------- FILE *sub_64BC50(const char *a1, ...) { va_list va; // [sp+Ch] [bp+Ch]@1 va_start(va, a1); return sub_64BAC0(1, "Msg", a1, va); } //----- (0064BC70) -------------------------------------------------------- FILE *sub_64BC70(int a1, const char *a2, ...) { va_list va; // [sp+10h] [bp+10h]@1 va_start(va, a2); return sub_64BAC0(a1, "Msg", a2, va); } //----- (0064BC90) -------------------------------------------------------- FILE *sub_64BC90(int a1, char *a2, const char *a3, ...) { va_list va; // [sp+14h] [bp+14h]@1 va_start(va, a3); return sub_64BAC0(a1, a2, a3, va); } //----- (0064BCB0) -------------------------------------------------------- void *__thiscall sub_64BCB0(void *this) { void *result; // eax@1 char *v2; // ecx@1 result = this; v2 = (char *)this + 4; *(_DWORD *)v2 = &off_6F4588; *(_DWORD *)result = v2; return result; } // 6F4588: using guessed type int (__stdcall *off_6F4588)(int, int); //----- (0064BCD0) -------------------------------------------------------- signed int __thiscall sub_64BCD0(void *this, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, int a4) { void *v4; // esi@1 int v5; // eax@2 DWORD v6; // eax@4 signed int result; // eax@6 DWORD NumberOfBytesRead; // [sp+10h] [bp-108h]@3 char v9; // [sp+14h] [bp-104h]@2 unsigned int v10; // [sp+114h] [bp-4h]@1 int v11; // [sp+118h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v4 = this; if ( !nNumberOfBytesToRead ) { v5 = *((_DWORD *)this + 2); sprintf( &v9, "ERROR - CSocket_IOCP::Receive, m_Socket(%d), dwNumBytes(%d), IP(%d.%d.%d.%d)", *(_DWORD *)this, 0, (unsigned __int8)*((_DWORD *)this + 2), BYTE1(v5), (unsigned __int8)(*((_DWORD *)this + 2) >> 16), *((_DWORD *)this + 2) >> 24); sub_64BC90(1, "Msg", "%s", &v9); } if ( ReadFile(*(HANDLE *)v4, lpBuffer, nNumberOfBytesToRead, &NumberOfBytesRead, (LPOVERLAPPED)v4 + 4) || (v6 = GetLastError()) == 0 || v6 == 997 ) { if ( a4 ) *(_DWORD *)a4 = NumberOfBytesRead; result = 1; } else { sprintf( &v9, "CSocket_IOCP::Read, ERROR=%d, m_Socket=%d, pBuffer=%p, dwNumBytes:%d, ReadBytes:%d", v6, *(_DWORD *)v4, lpBuffer, nNumberOfBytesToRead, NumberOfBytesRead); sub_64BC90(1, "Msg", "%s", &v9); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064BDF0) -------------------------------------------------------- signed int __thiscall sub_64BDF0(SOCKET *this) { int v1; // edi@2 int v2; // esi@3 DWORD v3; // eax@3 signed int result; // eax@5 char v5; // [sp+4h] [bp-104h]@6 unsigned int v6; // [sp+104h] [bp-4h]@1 int v7; // [sp+108h] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; if ( *this != -1 && (v1 = shutdown(*this, 1)) != 0 ) { v2 = WSAGetLastError(); v3 = GetLastError(); if ( v2 != 10054 || v3 != 10054 ) { sprintf(&v5, "ERROR - CSocket_IOCP::Shutdown : ret(%d), GetLastError(%d), WsaError(%d)", v1, v3, v2); sub_64BC90(1, "Msg", "%s", &v5); result = 0; } else { result = 1; } } else { result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064BEB0) -------------------------------------------------------- BOOL __thiscall sub_64BEB0(int this, HANDLE *a2) { return PostQueuedCompletionStatus(*a2, 0, *(_DWORD *)this, (LPOVERLAPPED)(this + 112)); } //----- (0064BED0) -------------------------------------------------------- LONG __thiscall sub_64BED0(void *this) { void *i; // esi@1 int v2; // ecx@2 LONG result; // eax@2 for ( i = this; *((_DWORD *)i + 43); result = sub_6516E0((void *)v2) ) { v2 = *((_DWORD *)i + 43); *((_DWORD *)i + 43) = *(_DWORD *)(v2 + 8204); *((_DWORD *)i + 42) -= *(_DWORD *)(v2 + 8196); } return result; } //----- (0064BF10) -------------------------------------------------------- void *__thiscall sub_64BF10(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_6F4588; if ( a2 & 1 ) operator delete(this); return v2; } // 6F4588: using guessed type int (__stdcall *off_6F4588)(int, int); //----- (0064BF40) -------------------------------------------------------- signed int __thiscall sub_64BF40(SOCKET *this) { SOCKET *v1; // esi@1 signed int v2; // edi@1 int v3; // ebx@2 int v4; // edi@3 DWORD v5; // eax@3 char v7; // [sp+Ch] [bp-104h]@3 unsigned int v8; // [sp+10Ch] [bp-4h]@1 int v9; // [sp+110h] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = this; v2 = 1; if ( *this != -1 ) { v3 = closesocket(*this); if ( v3 ) { v4 = WSAGetLastError(); v5 = GetLastError(); sprintf(&v7, "ERROR - CSocket_IOCP::Close : ret(%d), GetLastError(%d), WsaError(%d)", v3, v5, v4); sub_64BC90(1, "Msg", "%s", &v7); v2 = 0; } else { *v1 = -1; } } EnterCriticalSection((LPCRITICAL_SECTION)v1 + 6); sub_64BED0(v1); v1[42] = 0; v1[43] = 0; LeaveCriticalSection((LPCRITICAL_SECTION)v1 + 6); return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0064C000) -------------------------------------------------------- void __thiscall sub_64C000(int this, int a2) { int v2; // esi@1 int v3; // ebx@1 int v4; // eax@1 char *v5; // edi@2 u_short v6; // ax@2 char *v7; // ebx@4 u_short v8; // ax@4 int v9; // edi@5 int v10; // eax@5 DWORD v11; // eax@8 DWORD v12; // edi@8 struct _RTL_CRITICAL_SECTION *v13; // [sp-4h] [bp-9Ch]@4 DWORD NumberOfBytesWritten; // [sp+Ch] [bp-8Ch]@6 int v15; // [sp+10h] [bp-88h]@1 char v16; // [sp+14h] [bp-84h]@14 unsigned int v17; // [sp+94h] [bp-4h]@1 int v18; // [sp+98h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v2 = this; v3 = this + 144; v15 = this + 144; EnterCriticalSection((LPCRITICAL_SECTION)(this + 144)); v4 = *(_DWORD *)(v2 + 172); if ( !v4 ) { v5 = inet_ntoa(*(struct in_addr *)(v2 + 8)); v6 = ntohs(*(_WORD *)(v2 + 6)); sub_64BC50( "m_pFirstBuf = NULL - WriteCallback, IP=%s:%d, SOCKET=%d, dwTransferred=%d, m_nPendingWrite=%d", v5, v6, *(_DWORD *)v2, a2, *(_DWORD *)(v2 + 168)); sub_64BED0((void *)v2); LABEL_17: v13 = (struct _RTL_CRITICAL_SECTION *)v3; goto LABEL_18; } if ( a2 == *(_DWORD *)(v4 + 8196) ) { *(_DWORD *)(v2 + 168) -= a2; v9 = v4; v10 = *(_DWORD *)(v4 + 8204); v15 = v9; *(_DWORD *)(v2 + 172) = v10; if ( v10 && !WriteFile( *(HANDLE *)v2, (LPCVOID)(v10 + 4), *(_DWORD *)(v10 + 8196), &NumberOfBytesWritten, (LPOVERLAPPED)(v2 + 48)) && GetLastError() != 997 ) { v11 = GetLastError(); v12 = v11; if ( v11 != 10038 && v11 != 10054 && v11 != 10053 && v11 != 10058 && v11 != 10022 && v11 != 64 ) { sprintf(&v16, "CSocket_IOCP::WriteCallback %#x(%#x) err=%d", *(_DWORD *)v2, *(_DWORD *)v2, v11); sub_64BC90(1, "Msg", "%s", &v16); } sub_644DD0((int)&unk_86EC00, "CSocket_IOCP::Write %#x(%#x) err=%d", *(_DWORD *)v2, *(_DWORD *)v2, v12); sub_64BED0((void *)v2); v9 = v15; } sub_6516E0((void *)v9); goto LABEL_17; } v7 = inet_ntoa(*(struct in_addr *)(v2 + 8)); v8 = ntohs(*(_WORD *)(v2 + 6)); sub_64BC50( "MISSMATCH - WriteCallback, dwTransferred=%d, FirstBFSize=%d, IP=%s:%d, SOCKET=%d, m_nPendingWrite=%d", a2, *(_DWORD *)(*(_DWORD *)(v2 + 172) + 8196), v7, v8, *(_DWORD *)v2, *(_DWORD *)(v2 + 168)); sub_64BED0((void *)v2); v13 = (struct _RTL_CRITICAL_SECTION *)v15; LABEL_18: LeaveCriticalSection(v13); } // 86FEB8: using guessed type int __security_cookie; //----- (0064C1E0) -------------------------------------------------------- int __thiscall sub_64C1E0(int this) { int v1; // esi@1 int v2; // edi@1 v1 = this; *(_DWORD *)(this + 20) = &off_708238; v2 = this + 24; sub_64BCB0((void *)(this + 24)); sub_64BCB0((void *)(v1 + 32)); sub_64BCB0((void *)(v1 + 40)); *(_DWORD *)v1 = -1; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 48) = 0; *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 56) = 0; *(_DWORD *)(v1 + 60) = 0; *(_DWORD *)(v1 + 64) = 0; *(_DWORD *)(v1 + 68) = 1; *(_DWORD *)(v1 + 72) = v2; *(_DWORD *)(v1 + 76) = v1; *(_DWORD *)(v1 + 80) = 0; *(_DWORD *)(v1 + 84) = 0; *(_DWORD *)(v1 + 88) = 0; *(_DWORD *)(v1 + 92) = 0; *(_DWORD *)(v1 + 96) = 0; *(_DWORD *)(v1 + 100) = 0; *(_DWORD *)(v1 + 104) = v1 + 32; *(_DWORD *)(v1 + 108) = v1; *(_DWORD *)(v1 + 112) = 0; *(_DWORD *)(v1 + 116) = 0; *(_DWORD *)(v1 + 120) = 0; *(_DWORD *)(v1 + 124) = 0; *(_DWORD *)(v1 + 128) = 0; *(_DWORD *)(v1 + 168) = 0; *(_DWORD *)(v1 + 172) = 0; *(_DWORD *)(v1 + 132) = 2; *(_DWORD *)(v1 + 136) = v1 + 40; *(_DWORD *)(v1 + 140) = v1; InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 144)); return v1; } // 708238: using guessed type int (__stdcall *off_708238)(int, int); //----- (0064C2E0) -------------------------------------------------------- int (__stdcall **__thiscall sub_64C2E0(SOCKET *this))(int, int) { SOCKET *v1; // esi@1 int (__stdcall **result)(int, int); // eax@1 v1 = this; sub_64BDF0(this); sub_64BF40(v1); EnterCriticalSection((LPCRITICAL_SECTION)v1 + 6); sub_64BED0(v1); v1[42] = 0; v1[43] = 0; LeaveCriticalSection((LPCRITICAL_SECTION)v1 + 6); DeleteCriticalSection((LPCRITICAL_SECTION)v1 + 6); result = &off_6F4588; v1[11] = (SOCKET)&off_6F4588; v1[9] = (SOCKET)&off_6F4588; v1[7] = (SOCKET)&off_6F4588; v1[5] = (SOCKET)&off_6F4588; return result; } // 6F4588: using guessed type int (__stdcall *off_6F4588)(int, int); //----- (0064C370) -------------------------------------------------------- signed int __thiscall sub_64C370(SOCKET *this, const char *cp, u_short hostshort, const char *a4, u_short a5) { SOCKET *v5; // esi@1 SOCKET v7; // eax@3 u_short v8; // ax@4 SOCKET v9; // ecx@4 SOCKET v10; // ST00_4@8 int namelen; // [sp+Ch] [bp-28h]@8 struct sockaddr name; // [sp+10h] [bp-24h]@4 int v13; // [sp+20h] [bp-14h]@5 unsigned __int32 v14; // [sp+24h] [bp-10h]@5 int v15; // [sp+28h] [bp-Ch]@5 int v16; // [sp+2Ch] [bp-8h]@5 unsigned int v17; // [sp+30h] [bp-4h]@1 int v18; // [sp+34h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v5 = this; sub_64BDF0(this); sub_64BF40(v5); if ( !sub_6500F0(2u, 2u) || (v7 = socket(2, 1, 6), *v5 = v7, v7 == -1) ) return 0; *(_DWORD *)&name.sa_family = 0; *(_DWORD *)&name.sa_data[6] = 0; *(_DWORD *)&name.sa_data[10] = 0; name.sa_family = 2; *(_DWORD *)&name.sa_data[2] = inet_addr(cp); v8 = htons(hostshort); v9 = *v5; *(_WORD *)&name.sa_data[0] = v8; if ( bind(v9, &name, 16) == -1 ) goto LABEL_7; v13 = 0; v14 = 0; v15 = 0; v16 = 0; LOWORD(v13) = 2; v14 = inet_addr(a4); HIWORD(v13) = htons(a5); if ( connect(*v5, (const struct sockaddr *)&v13, 16) ) { WSAGetLastError(); LABEL_7: sub_64BF40(v5); return 0; } v10 = *v5; namelen = 16; getpeername(v10, (struct sockaddr *)(v5 + 1), &namelen); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0064C4B0) -------------------------------------------------------- signed int __thiscall sub_64C4B0(void *this, int a2, unsigned int a3) { unsigned int v3; // ebx@1 void *v4; // edi@1 int v5; // eax@8 int v6; // esi@8 struct _RTL_CRITICAL_SECTION *v7; // ST20_4@10 unsigned int v8; // eax@10 void *v9; // edx@11 int v10; // ecx@13 DWORD v11; // eax@16 DWORD v12; // esi@16 signed int result; // eax@25 int v14; // eax@26 char *v15; // [sp-18h] [bp-438h]@3 struct _RTL_CRITICAL_SECTION *v16; // [sp-4h] [bp-424h]@24 DWORD NumberOfBytesWritten; // [sp+Ch] [bp-414h]@14 void *v18; // [sp+10h] [bp-410h]@1 size_t v19; // [sp+14h] [bp-40Ch]@8 LPCRITICAL_SECTION lpCriticalSection; // [sp+18h] [bp-408h]@7 char v21; // [sp+1Ch] [bp-404h]@32 char v22; // [sp+11Ch] [bp-304h]@33 char v23; // [sp+21Ch] [bp-204h]@34 char v24; // [sp+31Ch] [bp-104h]@3 char v25; // [sp+39Ch] [bp-84h]@22 unsigned int v26; // [sp+41Ch] [bp-4h]@1 int v27; // [sp+420h] [bp+0h]@1 v26 = (unsigned int)&v27 ^ __security_cookie; v3 = a3; v4 = this; v18 = (void *)a2; if ( a3 > 0x2000 ) { if ( *(_BYTE *)a2 ) { sprintf( &v24, "WARNING - CSocket_IOCP::Send, OVERMAX SIZE,TYPE_0, PacketSize=%d, Netcmd=%d,%d", *(_BYTE *)a2, (unsigned int)*(_WORD *)(a2 + 1) >> 10, *(_WORD *)(a2 + 1) & 0x3FF); v15 = &v24; } else { sprintf( &v24, "WARNING - CSocket_IOCP::Send, OVERMAX SIZE,TYPE_1, PacketSize=%d, Netcmd=%d,%d", *(_WORD *)(a2 + 1), (unsigned int)*(_WORD *)(a2 + 3) >> 10, *(_WORD *)(a2 + 3) & 0x3FF); v15 = &v24; } sub_64BC90(1, "Msg", "%s", v15); } if ( a3 ) { lpCriticalSection = (LPCRITICAL_SECTION)((char *)v4 + 144); while ( 1 ) { v5 = sub_6515F0(); v6 = v5; v19 = 8192; if ( v3 <= 0x2000 ) v19 = v3; memmove((void *)(v5 + 4), v18, v19); v7 = lpCriticalSection; *(_DWORD *)(v6 + 8196) = v19; EnterCriticalSection(v7); v8 = *(_DWORD *)(v6 + 8196); if ( !v8 ) { sprintf(&v21, "CSocket_IOCP::Write dwSize=%d", 0); sub_64BC90(1, "Msg", "%s", &v21); sub_6516E0((void *)v6); v16 = lpCriticalSection; goto LABEL_25; } v9 = *(void **)v4; if ( *(_DWORD *)v4 == -1 ) break; if ( v8 > 0x2000 ) { sprintf(&v23, "Send IOBuffer Full::dwSize=%d, BUFFER_SIZE=%d", v8, 8192); sub_64BC90(1, "Msg", "%s", &v23); sub_6516E0((void *)v6); LABEL_24: v16 = lpCriticalSection; goto LABEL_25; } v10 = *((_DWORD *)v4 + 43); *((_DWORD *)v4 + 42) += v8; if ( v10 ) { v14 = *((_DWORD *)v4 + 44); if ( v10 == v14 || (unsigned int)(*(_DWORD *)(v6 + 8196) + *(_DWORD *)(v14 + 8196)) > 0x2000 ) { *(_DWORD *)(v14 + 8204) = v6; *((_DWORD *)v4 + 44) = v6; } else { memmove((void *)(*(_DWORD *)(v14 + 8196) + v14 + 4), (const void *)(v6 + 4), *(_DWORD *)(v6 + 8196)); *(_DWORD *)(*((_DWORD *)v4 + 44) + 8196) += *(_DWORD *)(v6 + 8196); sub_6516E0((void *)v6); } } else { *((_DWORD *)v4 + 44) = v6; *((_DWORD *)v4 + 43) = v6; if ( !WriteFile( v9, (LPCVOID)(v6 + 4), *(_DWORD *)(v6 + 8196), &NumberOfBytesWritten, (LPOVERLAPPED)((char *)v4 + 48)) && GetLastError() != 997 ) { v11 = GetLastError(); v12 = v11; if ( v11 != 10038 && v11 != 10054 && v11 != 10053 && v11 != 10058 && v11 != 10022 ) { if ( v11 != 64 ) { sprintf(&v25, "CSocket_IOCP::Write %#x(%#x) err=%d", *(_DWORD *)v4, *(_DWORD *)v4, v11); sub_64BC90(1, "Msg", "%s", &v25); } } sub_644DD0((int)&unk_86EC00, "CSocket_IOCP::Write %#x(%#x) err=%d", *(_DWORD *)v4, *(_DWORD *)v4, v12); sub_64BED0(v4); goto LABEL_24; } } LeaveCriticalSection(lpCriticalSection); v18 = (char *)v18 + v19; a3 -= v19; if ( !a3 ) goto LABEL_35; v3 = a3; } sprintf(&v22, "CSocket_IOCP::Write, INVALID m_Socket=%d", -1); sub_64BC90(1, "Msg", "%s", &v22); sub_6516E0((void *)v6); v16 = lpCriticalSection; LABEL_25: LeaveCriticalSection(v16); result = 0; } else { LABEL_35: result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064C830) -------------------------------------------------------- void __thiscall sub_64C830(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)(this + 4); *(_DWORD *)this = off_7084CC; if ( v2 ) { operator delete(v2); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; } } // 7084CC: using guessed type int (*off_7084CC[4])(); //----- (0064C860) -------------------------------------------------------- signed int __thiscall sub_64C860(int this) { int v1; // edx@1 int v2; // eax@1 v1 = *(_DWORD *)(this + 12); v2 = *(_DWORD *)(this + 4) + *(_DWORD *)(this + 20) - v1; if ( *(_DWORD *)(this + 4) + *(_DWORD *)(this + 20) - v1 > 0 && (unsigned int)v2 >= 1 ) { if ( *(_BYTE *)v1 ) { if ( (unsigned int)v2 >= 3 ) return 1; } else { if ( (unsigned int)v2 >= 5 ) return 2; } } return 0; } //----- (0064C8A0) -------------------------------------------------------- int __thiscall sub_64C8A0(void *this) { void *v1; // esi@1 int result; // eax@1 int v3; // eax@2 int v4; // [sp+4h] [bp-4h]@2 v1 = this; result = (*(int (**)(void))(*(_DWORD *)this + 8))(); if ( result ) { v3 = (*(int (__thiscall **)(void *, int *))(*(_DWORD *)v1 + 16))(v1, &v4); if ( v4 < 0 || v3 > *((_DWORD *)v1 + 2) || (unsigned int)v3 <= 2 ) result = 2; else result = *((_DWORD *)v1 + 1) + *((_DWORD *)v1 + 5) - *((_DWORD *)v1 + 3) >= v3; } return result; } //----- (0064C900) -------------------------------------------------------- int __thiscall sub_64C900(int this, int a2) { int result; // eax@4 int v3; // eax@5 if ( !a2 ) return 0; if ( !*(_DWORD *)(this + 12) ) { *(_DWORD *)a2 = -1; return 0; } *(_DWORD *)a2 = 0; v3 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v3 ) result = *(_BYTE *)v3 + 1; else result = *(_WORD *)(v3 + 1) + 3; return result; } //----- (0064C940) -------------------------------------------------------- __int16 __thiscall sub_64C940(int this) { int v1; // eax@1 __int16 result; // ax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = *(_BYTE *)v1; else result = *(_WORD *)(v1 + 1); return result; } //----- (0064C960) -------------------------------------------------------- int __thiscall sub_64C960(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = v1 + 1; else result = v1 + 3; return result; } //----- (0064C970) -------------------------------------------------------- int __thiscall sub_64C970(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = v1 + 3; else result = v1 + 5; return result; } //----- (0064C980) -------------------------------------------------------- signed int __thiscall sub_64C980(void *this, int a2, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 signed int result; // eax@3 v4 = this; v5 = (*(int (**)(void))(*(_DWORD *)this + 12))(); if ( v5 ) { if ( v5 == 1 ) { *(_WORD *)a2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 52))(v4); *(_DWORD *)a3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 28))(v4); *(_DWORD *)a4 = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 20))(v4); result = 1; } else { result = 2; } } else { result = 0; } return result; } //----- (0064C9E0) -------------------------------------------------------- int __thiscall sub_64C9E0(void *this) { void *v1; // esi@1 int result; // eax@1 int v3; // [sp+4h] [bp-4h]@1 v1 = this; result = (*(int (__stdcall **)(int *))(*(_DWORD *)this + 16))(&v3); if ( v3 >= 0 ) *((_DWORD *)v1 + 3) += result; return result; } //----- (0064CA10) -------------------------------------------------------- signed int __thiscall sub_64CA10(int this) { int v1; // esi@1 int v2; // eax@1 signed int result; // eax@2 const void *v4; // ecx@3 void *v5; // edx@3 int v6; // edi@3 int v7; // eax@5 v1 = this; v2 = *(_DWORD *)(this + 20); if ( v2 >= *(_DWORD *)(this + 8) ) { v4 = *(const void **)(this + 12); v5 = *(void **)(v1 + 4); v6 = v4 - v5; if ( v4 == v5 ) { result = 0; } else { memmove_0(v5, v4, v2 - v6); v7 = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 20) -= v6; *(_DWORD *)(v1 + 12) = v7; result = 1; } } else { result = 0; } return result; } //----- (0064CA50) -------------------------------------------------------- int __thiscall sub_64CA50(int this) { int v1; // esi@1 int result; // eax@3 v1 = this; if ( !*(_DWORD *)(this + 4) ) { *(_DWORD *)(this + 4) = unknown_libname_130(8192); *(_DWORD *)(v1 + 8) = 8192; } result = *(_DWORD *)(v1 + 4); *(_DWORD *)(v1 + 12) = result; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 16) = 0; return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064CA90) -------------------------------------------------------- __int16 __thiscall sub_64CA90(int this) { int v1; // eax@1 __int16 result; // ax@2 v1 = *(_DWORD *)(this + 12); if ( *(_BYTE *)v1 ) result = *(_WORD *)(v1 + 1); else result = *(_WORD *)(v1 + 3); return result; } //----- (0064CAB0) -------------------------------------------------------- void *__thiscall sub_64CAB0(int this, const void *a2, int a3) { int v3; // ebx@1 int v4; // esi@1 int v5; // eax@1 int v6; // eax@2 void *result; // eax@6 v3 = a3; v4 = this; v5 = *(_DWORD *)(this + 20); if ( v5 + a3 > *(_DWORD *)(this + 8) ) { v6 = operator new(1u); if ( v6 ) { *(_BYTE *)v6 = 0; a3 = v6; } else { a3 = 0; } _CxxThrowException(&a3, &unk_7454CC); } result = memmove((void *)(v5 + *(_DWORD *)(this + 4)), a2, a3); *(_DWORD *)(v4 + 20) += v3; **(_BYTE **)(v4 + 12) += v3; return result; } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); //----- (0064CB20) -------------------------------------------------------- int __thiscall sub_64CB20(int this) { return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 20); } //----- (0064CB30) -------------------------------------------------------- int __thiscall sub_64CB30(int this) { return *(_DWORD *)(this + 4) + *(_DWORD *)(this + 20); } //----- (0064CB40) -------------------------------------------------------- int __thiscall sub_64CB40(int this) { int v1; // esi@1 int v2; // eax@1 v1 = this; *(_DWORD *)this = off_7084CC; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 12) = 0; v2 = unknown_libname_130(8192); *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 4) = v2; *(_DWORD *)(v1 + 12) = v2; *(_DWORD *)(v1 + 8) = 8192; return v1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 7084CC: using guessed type int (*off_7084CC[4])(); //----- (0064CB80) -------------------------------------------------------- int __thiscall sub_64CB80(int this, __int16 a2, int a3, const void *a4) { int v4; // esi@1 signed int v5; // edi@1 int v6; // ebx@1 int v7; // eax@5 int v8; // eax@8 int result; // eax@9 v4 = this; v5 = (unsigned int)(a3 + 2) < 0x100 ? 3 : 5; v6 = v5 + a3; if ( *(_DWORD *)(this + 4) && *(_DWORD *)(this + 8) < v6 ) { operator delete(*(void **)(this + 4)); *(_DWORD *)(v4 + 4) = 0; } if ( !*(_DWORD *)(v4 + 4) ) { v7 = unknown_libname_130(v6); *(_DWORD *)(v4 + 4) = v7; *(_DWORD *)(v4 + 12) = v7; *(_DWORD *)(v4 + 8) = v6; } *(_DWORD *)(v4 + 20) = v5; if ( a4 ) sub_64CAB0(v4, a4, a3); v8 = *(_DWORD *)(v4 + 12); if ( v5 == 3 ) { *(_WORD *)(v8 + 1) = a2; **(_BYTE **)(v4 + 12) = v6 - 1; *(_DWORD *)(v4 + 16) = 3; result = v4; } else { *(_WORD *)(v8 + 3) = a2; **(_BYTE **)(v4 + 12) = 0; *(_WORD *)(*(_DWORD *)(v4 + 12) + 1) = v6 - 3; *(_DWORD *)(v4 + 16) = v5; result = v4; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064CC30) -------------------------------------------------------- int __thiscall sub_64CC30(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)this = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 36) = 3; return result; } //----- (0064CC60) -------------------------------------------------------- HANDLE __thiscall sub_64CC60(void *this, HANDLE FileHandle, ULONG_PTR CompletionKey) { void *v3; // esi@1 HANDLE result; // eax@2 v3 = this; if ( *(_DWORD *)this != -1 || (result = CreateIoCompletionPort((HANDLE)0xFFFFFFFF, 0, 0, 0), *(_DWORD *)v3 = result, result != (HANDLE)-1) ) result = CreateIoCompletionPort(FileHandle, *(HANDLE *)v3, CompletionKey, 0); return result; } //----- (0064CCA0) -------------------------------------------------------- void __thiscall sub_64CCA0(ULONG_PTR dwCompletionKey, int a2) { ULONG_PTR v2; // esi@1 int v3; // eax@4 signed int v4; // ebx@7 int v5; // edi@8 int v6; // eax@9 signed int v7; // edx@15 int v8; // ecx@16 int v9; // eax@16 int v10; // [sp+4h] [bp-Ch]@8 int v11; // [sp+8h] [bp-8h]@6 int v12; // [sp+Ch] [bp-4h]@4 v2 = dwCompletionKey; if ( *(_DWORD *)(dwCompletionKey + 12) && *(_DWORD *)(dwCompletionKey + 8) ) { if ( a2 == -1 ) { v3 = *(_DWORD *)(dwCompletionKey + 4); v12 = 0; } else { v12 = a2; v3 = a2 + 1; } v11 = v3; while ( 1 ) { do { v4 = 0; if ( v12 >= v11 ) break; v5 = 20 * v12; v10 = v11 - v12; do { v6 = v5 + *(_DWORD *)(v2 + 12); switch ( *(_DWORD *)(v6 + 4) ) { case 4: CloseHandle(*(HANDLE *)(v6 + 8)); *(_DWORD *)(v5 + *(_DWORD *)(v2 + 12) + 4) = 0; break; case 2: *(_DWORD *)(v6 + 4) = 3; v4 = 1; PostQueuedCompletionStatus(*(HANDLE *)v2, 0, v2, (LPOVERLAPPED)(v2 + 16)); break; case 1: case 3: v4 = 1; break; default: break; } v5 += 20; --v10; } while ( v10 ); } while ( v4 ); v7 = 1; if ( *(_DWORD *)(v2 + 4) <= 0 ) break; v8 = *(_DWORD *)(v2 + 4); v9 = *(_DWORD *)(v2 + 12) + 4; do { if ( *(_DWORD *)v9 ) v7 = 0; v9 += 20; --v8; } while ( v8 ); if ( v7 ) break; if ( a2 != -1 ) return; Sleep(2u); } operator delete(*(void **)(v2 + 12)); *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 8) = 0; } } //----- (0064CDD0) -------------------------------------------------------- int __stdcall StartAddress(LPOVERLAPPED Overlapped) { LPOVERLAPPED v1; // esi@1 DWORD v2; // ST10_4@1 DWORD v3; // eax@5 DWORD v4; // eax@8 DWORD v5; // ST10_4@11 unsigned __int32 CompletionKey; // [sp+Ch] [bp-Ch]@2 DWORD NumberOfBytesTransferred; // [sp+10h] [bp-8h]@2 HANDLE CompletionPort; // [sp+14h] [bp-4h]@1 v1 = Overlapped; v2 = Overlapped->Internal; CompletionPort = *(HANDLE *)Overlapped->hEvent; sub_64BC70(dword_86FA98, "", v2); v1->InternalHigh = 2; do { if ( GetQueuedCompletionStatus(CompletionPort, &NumberOfBytesTransferred, &CompletionKey, &Overlapped, 0x3E8u) ) { if ( Overlapped[1].Internal == 3 ) break; (*(void (__stdcall **)(LPOVERLAPPED, DWORD))**(void (__stdcall ****)(_DWORD, _DWORD))Overlapped[1].InternalHigh)( Overlapped, NumberOfBytesTransferred); } else { v3 = GetLastError(); if ( v3 != 258 ) { if ( v3 != 995 ) { if ( Overlapped ) { v4 = Overlapped[1].InternalHigh; if ( v4 ) (*(void (__stdcall **)(LPOVERLAPPED))(**(_DWORD **)v4 + 4))(Overlapped); } } } } } while ( v1->InternalHigh == 2 ); v5 = v1->Internal; v1->InternalHigh = 4; sub_64BC70(dword_86FA98, "", v5); return 0; } //----- (0064CEA0) -------------------------------------------------------- HANDLE __thiscall sub_64CEA0(void *dwCompletionKey, void *a2, int a3) { ULONG_PTR v3; // esi@1 HANDLE result; // eax@2 void *v5; // edi@3 signed int v6; // eax@3 signed int v7; // ebx@3 int v8; // edi@4 int v9; // ebx@7 signed int v10; // [sp+Ch] [bp+8h]@8 v3 = (ULONG_PTR)dwCompletionKey; if ( *(_DWORD *)dwCompletionKey || (result = CreateIoCompletionPort((HANDLE)0xFFFFFFFF, 0, 0, 0), (*(_DWORD *)v3 = result) != 0) ) { sub_64CCA0(v3, -1); v5 = a2; *(_DWORD *)(v3 + 12) = unknown_libname_130(20 * (_DWORD)a2 | -((unsigned __int8)(20 * (unsigned __int64)(unsigned int)a2 >> 32) != 0)); v6 = 1; v7 = 0; *(_DWORD *)(v3 + 8) = 1; if ( (signed int)a2 > 0 ) { v8 = 0; do { *(_DWORD *)(*(_DWORD *)(v3 + 12) + v8 + 16) = v3; *(_DWORD *)(v8 + *(_DWORD *)(v3 + 12)) = v7; *(_DWORD *)(*(_DWORD *)(v3 + 12) + v8 + 4) = v6; *(_DWORD *)(*(_DWORD *)(v3 + 12) + v8 + 8) = CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)StartAddress, (LPVOID)(v8 + *(_DWORD *)(v3 + 12)), 0, (LPDWORD)(v8 + *(_DWORD *)(v3 + 12) + 12)); Sleep(0x32u); ++v7; v8 += 20; v6 = 1; } while ( v7 < (signed int)a2 ); v5 = a2; } v9 = 0; if ( a3 ) { v10 = 0; while ( v10 < (signed int)v5 ) { if ( *(_DWORD *)(*(_DWORD *)(v3 + 12) + v9 + 4) == v6 ) { Sleep(0x32u); v6 = 1; } else { v10 += v6; v9 += 20; } } } *(_DWORD *)(v3 + 4) = v5; result = v5; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064CF90) -------------------------------------------------------- HANDLE __thiscall sub_64CF90(ULONG_PTR this) { HANDLE *v1; // esi@1 HANDLE result; // eax@1 v1 = (HANDLE *)this; sub_64CCA0(this, -1); result = *v1; if ( *v1 ) { result = (HANDLE)CloseHandle(*v1); *v1 = 0; } return result; } //----- (0064CFC0) -------------------------------------------------------- int __thiscall sub_64CFC0(int this) { int result; // eax@1 result = 0; *(_DWORD *)(this + 936) = 0; *(_DWORD *)(this + 952) = 0; *(_DWORD *)(this + 940) = 0; *(_DWORD *)(this + 944) = 0; *(_DWORD *)(this + 1228) = 0; *(_DWORD *)(this + 1232) = 0; *(_DWORD *)(this + 1236) = 0; *(_DWORD *)(this + 1240) = 0; *(_DWORD *)(this + 1244) = 0; *(_DWORD *)(this + 1248) = 0; *(_DWORD *)(this + 1252) = 0; *(_DWORD *)(this + 1256) = 0; *(_DWORD *)(this + 1260) = 0; *(_DWORD *)(this + 1268) = 0; *(_DWORD *)(this + 1264) = 0; *(_DWORD *)(this + 660) = 0; *(_DWORD *)(this + 664) = 0; return result; } //----- (0064D030) -------------------------------------------------------- signed int __thiscall sub_64D030(int this) { int v1; // esi@1 unsigned int v2; // eax@3 int v3; // eax@4 int v4; // ecx@5 v1 = this; if ( *(_DWORD *)(this + 1240) ) { operator delete(*(void **)(this + 1240)); *(_DWORD *)(v1 + 1240) = 0; } v2 = *(_DWORD *)(v1 + 1228); if ( (signed int)v2 > 0 ) { *(_DWORD *)(v1 + 1240) = unknown_libname_130(4 * v2 | -((unsigned __int64)v2 >> 30 != 0)); v3 = *(_DWORD *)(v1 + 1232); if ( v3 ) { v4 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v1 + 1240)) = v3; v3 = *(_DWORD *)(v3 + 72); v4 += 4; } while ( v3 ); } } return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064D0B0) -------------------------------------------------------- signed int __thiscall sub_64D0B0(int this) { int v1; // esi@1 unsigned int v2; // eax@3 int v3; // eax@4 int v4; // ecx@5 v1 = this; if ( *(_DWORD *)(this + 1256) ) { sub_6530A4(*(void **)(this + 1256)); *(_DWORD *)(v1 + 1256) = 0; } v2 = *(_DWORD *)(v1 + 1244); if ( (signed int)v2 > 0 ) { *(_DWORD *)(v1 + 1256) = unknown_libname_130(4 * v2 | -((unsigned __int64)v2 >> 30 != 0)); v3 = *(_DWORD *)(v1 + 1248); if ( v3 ) { v4 = 0; do { *(_DWORD *)(v4 + *(_DWORD *)(v1 + 1256)) = v3; v3 = *(_DWORD *)(v3 + 12); v4 += 4; } while ( v3 ); } } return 1; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064D130) -------------------------------------------------------- int __thiscall sub_64D130(void *this, const char *a2) { void *v2; // ebx@1 int result; // eax@1 const char *v4; // ecx@2 const char v5; // dl@3 v2 = this; result = unknown_libname_130(strlen(a2) + 9); if ( result ) { *(_DWORD *)result = 0; v4 = a2; do { v5 = *v4; v4[result + 4 - (_DWORD)a2] = *v4; ++v4; } while ( v5 ); if ( *((_DWORD *)v2 + 316) ) **((_DWORD **)v2 + 317) = result; else *((_DWORD *)v2 + 316) = result; ++*((_DWORD *)v2 + 315); *((_DWORD *)v2 + 317) = result; result = 1; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064D1B0) -------------------------------------------------------- int __thiscall sub_64D1B0(int this, int a2) { int v2; // edx@1 int result; // eax@2 int v4; // esi@3 int v5; // ecx@5 v2 = *(_DWORD *)(this + 1228); if ( v2 > a2 ) { v4 = *(_DWORD *)(this + 1240); if ( v4 || (result = *(_DWORD *)(this + 1232)) == 0 ) { result = *(_DWORD *)(v4 + 4 * a2); } else { v5 = 0; if ( v2 <= 0 ) { LABEL_8: result = 0; } else { while ( v5 != a2 ) { result = *(_DWORD *)(result + 72); ++v5; if ( v5 >= v2 ) goto LABEL_8; } } } } else { result = 0; } return result; } //----- (0064D200) -------------------------------------------------------- int __thiscall sub_64D200(int this) { return *(_DWORD *)(this + 1244); } //----- (0064D210) -------------------------------------------------------- int __thiscall sub_64D210(int this, int a2) { int v2; // edx@1 int result; // eax@2 int v4; // esi@3 int v5; // ecx@5 v2 = *(_DWORD *)(this + 1244); if ( v2 > a2 ) { v4 = *(_DWORD *)(this + 1256); if ( v4 || (result = *(_DWORD *)(this + 1248)) == 0 ) { result = *(_DWORD *)(v4 + 4 * a2); } else { v5 = 0; if ( v2 <= 0 ) { LABEL_8: result = 0; } else { while ( v5 != a2 ) { result = *(_DWORD *)(result + 12); ++v5; if ( v5 >= v2 ) goto LABEL_8; } } } } else { result = 0; } return result; } //----- (0064D260) -------------------------------------------------------- int __thiscall sub_64D260(int this, int a2, signed int a3) { int v3; // edi@1 int v4; // edx@1 int v5; // eax@2 int v6; // ecx@3 int v8; // esi@8 int v9; // eax@12 signed int v10; // ecx@13 int v11; // edx@14 int v12; // ebx@14 int v13; // edi@14 int v14; // esi@15 int v15; // edx@15 unsigned int v16; // ecx@15 int v17; // [sp+8h] [bp-Ch]@14 int v18; // [sp+10h] [bp-4h]@1 int v19; // [sp+1Ch] [bp+8h]@14 v3 = this; v4 = *(_DWORD *)(this + 1244); v18 = this; if ( v4 <= a2 ) return 0; v5 = *(_DWORD *)(this + 1256); if ( v5 || (v6 = *(_DWORD *)(this + 1248)) == 0 ) { v8 = *(_DWORD *)(v5 + 4 * a2); } else { if ( v4 <= 0 ) return 0; while ( v5 != a2 ) { v6 = *(_DWORD *)(v6 + 12); ++v5; if ( v5 >= v4 ) return 0; } v8 = v6; } if ( !v8 || (v9 = sub_64D1B0(v3, *(_DWORD *)v8)) == 0 || (v10 = a3, *(_DWORD *)(v9 + 64) <= a3) ) return 0; v11 = *(_DWORD *)(v8 + 8); v12 = 0; v13 = 0; v19 = 0; v17 = *(_DWORD *)(v8 + 8); if ( a3 >= 2 ) { v14 = *(_DWORD *)(v18 + 1224); v15 = *(_DWORD *)(v9 + 68); v16 = ((unsigned int)(a3 - 2) >> 1) + 1; v19 = 2 * v16; do { v13 += *(_DWORD *)(v14 + 4 * *(_DWORD *)v15); v12 += *(_DWORD *)(v14 + 4 * *(_DWORD *)(v15 + 4)); v15 += 8; --v16; } while ( v16 ); v10 = a3; v11 = v17; } if ( v19 < v10 ) v11 += *(_DWORD *)(*(_DWORD *)(v18 + 1224) + 4 * *(_DWORD *)(*(_DWORD *)(v9 + 68) + 4 * v19)); return v11 + v12 + v13; } //----- (0064D350) -------------------------------------------------------- signed int __thiscall sub_64D350(int this, const unsigned __int8 *a2) { int v2; // esi@1 signed int v3; // eax@1 signed int result; // eax@3 const unsigned __int8 *v5; // eax@7 int v6; // edx@8 const unsigned __int8 v7; // cl@9 const unsigned __int8 *v8; // eax@12 int v9; // edx@13 const unsigned __int8 v10; // cl@14 const unsigned __int8 *v11; // eax@17 int v12; // edx@18 const unsigned __int8 v13; // cl@19 const unsigned __int8 *v14; // eax@22 int v15; // edx@23 const unsigned __int8 v16; // cl@24 int v17; // eax@27 char v18; // cl@28 v2 = this; v3 = sub_637C60(a2, *(_DWORD *)(this + 1020), 7u); if ( *(_DWORD *)(v2 + 952) && v3 != 2 ) { result = 1; } else { switch ( v3 ) { case 1: *(_DWORD *)(v2 + 952) = 1; result = 1; break; case 2: *(_DWORD *)(v2 + 952) = 0; result = 1; break; case 3: v5 = sub_637A00(v2); if ( v5 ) { v6 = v2 + 956 - (_DWORD)v5; do { v7 = *v5; v5[v6] = *v5; ++v5; } while ( v7 ); sub_637960((void *)v2, v2 + 956); result = 1; } else { *(_DWORD *)(v2 + 956) = off_708548; *(_WORD *)(v2 + 960) = word_70854C; result = 1; } break; case 4: v8 = sub_637A00(v2); if ( v8 ) { v9 = v2 + 1024 - (_DWORD)v8; do { v10 = *v8; v8[v9] = *v8; ++v8; } while ( v10 ); result = 1; } else { *(_WORD *)(v2 + 1024) = 59; result = 1; } break; case 5: v11 = sub_637A00(v2); if ( v11 ) { v12 = v2 + 1088 - (_DWORD)v11; do { v13 = *v11; v11[v12] = *v11; ++v11; } while ( v13 ); result = 1; } else { *(_WORD *)(v2 + 1088) = word_708544; *(_BYTE *)(v2 + 1090) = byte_708546; result = 1; } break; case 6: v14 = sub_637A00(v2); if ( v14 ) { v15 = v2 + 1152 - (_DWORD)v14; do { v16 = *v14; v14[v15] = *v14; ++v14; } while ( v16 ); result = 1; } else { *(_WORD *)(v2 + 1152) = word_708540; *(_BYTE *)(v2 + 1154) = byte_708542; result = 1; } break; case 0: goto LABEL_30; default: v17 = v2 + 1024; do v18 = *(_BYTE *)v17++; while ( v18 ); if ( _mbsnbcmp(a2, (const unsigned __int8 *)(v2 + 1024), v17 - (v2 + 1025)) ) { result = 0; } else { LABEL_30: sub_637B40(v2); result = 1; } break; } } return result; } // 708540: using guessed type __int16 word_708540; // 708542: using guessed type char byte_708542; // 708544: using guessed type __int16 word_708544; // 708546: using guessed type char byte_708546; // 708548: using guessed type void *off_708548; // 70854C: using guessed type __int16 word_70854C; //----- (0064D560) -------------------------------------------------------- int __thiscall sub_64D560(void *this) { int v1; // ebx@1 const unsigned __int8 *v2; // eax@2 const char *v3; // esi@2 signed int v4; // eax@6 signed int v5; // edi@6 int v6; // edi@8 const unsigned __int8 *v7; // esi@9 int v8; // eax@13 int v9; // edi@16 int i; // esi@16 int v11; // eax@17 int v12; // eax@24 unsigned int v13; // ebx@24 int v14; // esi@24 char *v15; // eax@24 char v16; // cl@25 void *v17; // eax@27 int v19; // [sp+Ch] [bp-264h]@8 signed int v20; // [sp+10h] [bp-260h]@1 int v21; // [sp+14h] [bp-25Ch]@0 const unsigned __int8 *v22; // [sp+18h] [bp-258h]@2 int v23; // [sp+1Ch] [bp-254h]@16 unsigned int v24; // [sp+20h] [bp-250h]@1 int v25; // [sp+24h] [bp-24Ch]@1 char v26; // [sp+28h] [bp-248h]@23 char v27; // [sp+228h] [bp-48h]@1 unsigned int v28; // [sp+26Ch] [bp-4h]@1 int v29; // [sp+270h] [bp+0h]@1 v28 = (unsigned int)&v29 ^ __security_cookie; v1 = (int)this; memset(&v27, 0, 0x41u); v24 = 0; v25 = 0; v20 = 0; while ( 1 ) { while ( 1 ) { while ( 1 ) { do { v2 = sub_637A00(v1); v3 = (const char *)v2; v22 = v2; if ( !v2 ) { ++*(_DWORD *)(v1 + 940); sprintf(&v26, "FORMAT DEFINNING, EOF Come."); sub_64D130((void *)v1, &v26); return 0; } } while ( sub_64D350(v1, v2) ); if ( v20 ) break; strncpy(&v27, v3, 0x40u); v20 = 1; } v4 = sub_637C60((const unsigned __int8 *)v3, *(_DWORD *)(v1 + 1220), 0x13u); v5 = v4; if ( (unsigned int)v4 > 0x11 ) break; v8 = operator new(8u); *(_DWORD *)(v8 + 4) = 0; *(_DWORD *)v8 = v5; if ( v25 ) { ++v24; *(_DWORD *)(v21 + 4) = v8; v21 = v8; } else { ++v24; v25 = v8; v21 = v8; } } if ( v4 == 18 ) break; v6 = 0; v19 = *(_DWORD *)(v1 + 1232); if ( *(_DWORD *)(v1 + 1228) > 0 ) { v7 = *(const unsigned __int8 **)(v1 + 1232); while ( _mbsicmp(v22, v7) ) { ++v6; v7 += 76; if ( v6 >= *(_DWORD *)(v1 + 1228) ) goto LABEL_22; } v23 = v6; v9 = v19 + 76 * v6; for ( i = 0; i < *(_DWORD *)(v9 + 64); v21 = v11 ) { v11 = operator new(8u); *(_DWORD *)(v11 + 4) = 0; *(_DWORD *)v11 = *(_DWORD *)(*(_DWORD *)(v9 + 68) + 4 * i); if ( v25 ) *(_DWORD *)(v21 + 4) = v11; else v25 = v11; ++v24; ++i; } v6 = v23; LABEL_22: v3 = (const char *)v22; if ( v6 < *(_DWORD *)(v1 + 1228) ) continue; } ++*(_DWORD *)(v1 + 940); sprintf(&v26, "%s - FORMAT DEFINING, UNKNOWNED PARAMATER.", v3); sub_64D130((void *)v1, &v26); } v12 = operator new(0x4Cu); v13 = 0; v14 = v12; *(_DWORD *)(v12 + 72) = 0; memset((void *)v12, 0, 0x40u); v15 = &v27; do { v16 = *v15; v15[v14 - (_DWORD)&v27] = *v15; ++v15; } while ( v16 ); *(_DWORD *)(v14 + 64) = v24; *(_DWORD *)(v14 + 68) = unknown_libname_130(4 * v24 | -((unsigned __int64)v24 >> 30 != 0)); if ( (signed int)v24 > 0 ) { do { v17 = (void *)v25; *(_DWORD *)(*(_DWORD *)(v14 + 68) + 4 * v13) = *(_DWORD *)v25; v25 = *(_DWORD *)(v25 + 4); operator delete(v17); ++v13; } while ( (signed int)v13 < (signed int)v24 ); } return v14; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (0064D810) -------------------------------------------------------- signed int __thiscall sub_64D810(int this, int a2) { signed int result; // eax@4 if ( *(_DWORD *)(this + 1232) ) *(_DWORD *)(*(_DWORD *)(this + 1236) + 72) = a2; else *(_DWORD *)(this + 1232) = a2; *(_DWORD *)(this + 1236) = a2; result = 1; ++*(_DWORD *)(this + 1228); return result; } //----- (0064D850) -------------------------------------------------------- const unsigned __int8 *__thiscall sub_64D850(void *this) { int v1; // esi@1 const unsigned __int8 *v2; // eax@2 const unsigned __int8 *v3; // edi@2 char v5; // [sp+8h] [bp-204h]@5 unsigned int v6; // [sp+208h] [bp-4h]@1 int v7; // [sp+20Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v1 = (int)this; while ( 1 ) { v2 = sub_637A00(v1); v3 = v2; if ( !v2 ) break; if ( !sub_64D350(v1, v2) ) return v3; } ++*(_DWORD *)(v1 + 940); sprintf(&v5, "DATA DEFINNING, EOF Come"); sub_64D130((void *)v1, &v5); return *(const unsigned __int8 **)(v1 + 948); } // 86FEB8: using guessed type int __security_cookie; //----- (0064D8D0) -------------------------------------------------------- signed int __thiscall sub_64D8D0(int this, int a2) { int v2; // eax@1 int v3; // edx@1 char v4; // cl@2 int v6; // [sp+0h] [bp-4h]@1 v6 = this; v2 = sub_637F60(this, (int)&v6); v3 = a2 - v2; do { v4 = *(_BYTE *)v2; *(_BYTE *)(v3 + v2) = *(_BYTE *)v2; ++v2; } while ( v4 ); return 1; } //----- (0064D900) -------------------------------------------------------- int __thiscall sub_64D900(void *this, int a2, int a3) { int v3; // edi@1 int v4; // ecx@1 signed int v5; // eax@1 int v6; // esi@1 int v7; // edx@1 int v8; // ebx@1 int v9; // esi@2 int v10; // ecx@2 unsigned int v11; // eax@2 size_t v12; // esi@7 int v13; // eax@7 int v14; // ebx@7 void *v15; // eax@7 int v16; // ecx@7 int v17; // esi@7 int v18; // eax@7 const unsigned __int8 *v19; // eax@9 const unsigned __int8 *v20; // eax@10 const unsigned __int8 *v21; // eax@11 int v22; // eax@12 int v23; // edx@12 char v24; // cl@13 int v25; // eax@15 int v26; // edx@15 char v27; // cl@16 int v28; // eax@18 int v29; // edx@18 char v30; // cl@19 int v31; // eax@21 int v32; // edx@21 char v33; // cl@22 char v35; // [sp+Ch] [bp-18h]@25 char v36; // [sp+10h] [bp-14h]@24 int v37; // [sp+14h] [bp-10h]@1 unsigned int v38; // [sp+18h] [bp-Ch]@1 int v39; // [sp+1Ch] [bp-8h]@3 int v40; // [sp+20h] [bp-4h]@1 int i; // [sp+2Ch] [bp+8h]@7 v3 = (int)this; v4 = a3; v5 = *(_DWORD *)(a3 + 64); v6 = 0; v7 = 0; v8 = 0; v40 = 0; v37 = 0; v38 = 0; if ( v5 >= 2 ) { v9 = *(_DWORD *)(v3 + 1224); v10 = *(_DWORD *)(a3 + 68); v11 = ((unsigned int)(v5 - 2) >> 1) + 1; v38 = 2 * v11; do { v39 = *(_DWORD *)(v9 + 4 * *(_DWORD *)v10) + v8; v7 = *(_DWORD *)(v9 + 4 * *(_DWORD *)(v10 + 4)) + v40; v8 = v39; v10 += 8; --v11; v40 = v7; } while ( v11 ); v6 = v37; v4 = a3; } if ( (signed int)v38 < *(_DWORD *)(v4 + 64) ) v6 = *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 4 * *(_DWORD *)(*(_DWORD *)(v4 + 68) + 4 * v38)); v12 = v8 + v7 + v6; v13 = operator new(0x10u); v14 = v13; *(_DWORD *)(v13 + 12) = 0; *(_DWORD *)v13 = a2; *(_DWORD *)(v13 + 4) = v12; v15 = (void *)unknown_libname_130(v12); *(_DWORD *)(v14 + 8) = v15; memset(v15, 0, v12); v16 = a3; v17 = *(_DWORD *)(v14 + 8); v18 = 0; for ( i = 0; v18 < *(_DWORD *)(a3 + 64); i = v18 ) { switch ( *(_DWORD *)(*(_DWORD *)(v16 + 68) + 4 * v18) ) { case 0: case 1: case 2: case 3: v19 = sub_64D850((void *)v3); *(_DWORD *)v17 = atoi((const char *)v19); goto LABEL_26; case 4: case 5: v20 = sub_64D850((void *)v3); sscanf((const char *)v20, "%x", v17); goto LABEL_26; case 6: case 7: v21 = sub_64D850((void *)v3); *(float *)v17 = atof((const char *)v21); goto LABEL_26; case 8: v22 = sub_637F60(v3, (int)&v37); v23 = v17 - v22; do { v24 = *(_BYTE *)v22; *(_BYTE *)(v23 + v22) = *(_BYTE *)v22; ++v22; } while ( v24 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 32); break; case 9: v25 = sub_637F60(v3, (int)&v38); v26 = v17 - v25; do { v27 = *(_BYTE *)v25; *(_BYTE *)(v26 + v25) = *(_BYTE *)v25; ++v25; } while ( v27 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 36); break; case 0xA: v28 = sub_637F60(v3, (int)&v39); v29 = v17 - v28; do { v30 = *(_BYTE *)v28; *(_BYTE *)(v29 + v28) = *(_BYTE *)v28; ++v28; } while ( v30 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 40); break; case 0xB: v31 = sub_637F60(v3, (int)&v40); v32 = v17 - v31; do { v33 = *(_BYTE *)v31; *(_BYTE *)(v32 + v31) = *(_BYTE *)v31; ++v31; } while ( v33 ); v17 += *(_DWORD *)(*(_DWORD *)(v3 + 1224) + 44); break; case 0xC: *(_DWORD *)v17 = *(_BYTE *)sub_637F60(v3, (int)&v36); goto LABEL_26; case 0xD: *(_DWORD *)v17 = *(_BYTE *)sub_637F60(v3, (int)&v35); LABEL_26: v17 += 4; break; default: break; } v16 = a3; v18 = i + 1; } return v14; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064DB50) -------------------------------------------------------- signed int __thiscall sub_64DB50(int this, const unsigned __int8 *a2, int a3) { int v3; // esi@1 int v4; // ebx@1 int v5; // edi@1 signed int result; // eax@5 int v7; // eax@6 v3 = this; v4 = 0; v5 = *(_DWORD *)(this + 1232); if ( *(_DWORD *)(this + 1228) <= 0 ) goto LABEL_14; do { if ( !_mbsicmp(a2, (const unsigned __int8 *)v5) ) break; v5 = *(_DWORD *)(v5 + 72); ++v4; } while ( v4 < *(_DWORD *)(v3 + 1228) ); if ( v4 < *(_DWORD *)(v3 + 1228) ) { v7 = sub_64D900((void *)v3, v4, v5); if ( v7 ) { if ( *(_DWORD *)(v3 + 1248) ) *(_DWORD *)(*(_DWORD *)(v3 + 1252) + 12) = v7; else *(_DWORD *)(v3 + 1248) = v7; ++*(_DWORD *)(v3 + 1244); *(_DWORD *)(v3 + 1252) = v7; } result = 1; } else { LABEL_14: result = 0; } return result; } //----- (0064DBE0) -------------------------------------------------------- signed int __thiscall sub_64DBE0(int this) { int v1; // esi@1 signed int result; // eax@2 char v3; // [sp+4h] [bp-204h]@2 unsigned int v4; // [sp+204h] [bp-4h]@1 int v5; // [sp+208h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; v1 = this; if ( *(_DWORD *)(this + 664) ) { sprintf( &v3, "Include Format %d Defined, %d Errors", *(_DWORD *)(this + 1228) - *(_DWORD *)(*(_DWORD *)(this + 660) + 1228), *(_DWORD *)(this + 940)); sub_64D130((void *)v1, &v3); sprintf( &v3, "Include Data %d Defined, %d Errors", *(_DWORD *)(v1 + 1244) - *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1244), *(_DWORD *)(v1 + 944)); sub_64D130((void *)v1, &v3); sub_64D130((void *)v1, word_6A2BF8); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 940) += *(_DWORD *)(v1 + 940); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 944) += *(_DWORD *)(v1 + 944); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1228) = *(_DWORD *)(v1 + 1228); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1232) = *(_DWORD *)(v1 + 1232); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1236) = *(_DWORD *)(v1 + 1236); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1244) = *(_DWORD *)(v1 + 1244); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1248) = *(_DWORD *)(v1 + 1248); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1252) = *(_DWORD *)(v1 + 1252); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1268) = *(_DWORD *)(v1 + 1268); result = *(_DWORD *)(v1 + 1260); *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1260) = result; *(_DWORD *)(*(_DWORD *)(v1 + 660) + 1264) = *(_DWORD *)(v1 + 1264); } else { sub_64D130((void *)this, word_6A2BF8); sprintf(&v3, "TOTAL Format %d Defined, %d Errors", *(_DWORD *)(v1 + 1228), *(_DWORD *)(v1 + 940)); sub_64D130((void *)v1, &v3); sprintf(&v3, "TOTAL Data %d Defined, %d Errors", *(_DWORD *)(v1 + 1244), *(_DWORD *)(v1 + 944)); sub_64D130((void *)v1, &v3); sub_64D130((void *)v1, word_6A2BF8); sub_64D030(v1); result = sub_64D0B0(v1); } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064DDF0) -------------------------------------------------------- signed int __thiscall sub_64DDF0(int this, const CHAR *lpFileName) { int v2; // esi@1 void *v3; // eax@1 void *v4; // edi@1 DWORD v5; // eax@2 signed int result; // eax@4 DWORD v7; // ebx@5 int v8; // ebx@11 int v9; // edi@12 void *v10; // eax@12 int v11; // eax@16 int v12; // edi@16 int v13; // eax@16 char v14; // cl@17 void *v15; // eax@18 int Buffer; // [sp+8h] [bp-14h]@8 DWORD nNumberOfBytesToRead; // [sp+Ch] [bp-10h]@9 unsigned int v18; // [sp+10h] [bp-Ch]@2 DWORD v19; // [sp+14h] [bp-8h]@7 DWORD NumberOfBytesRead; // [sp+18h] [bp-4h]@8 void *lpFileNamea; // [sp+24h] [bp+8h]@1 v2 = this; v3 = (void *)sub_638DC0(this, lpFileName, 0x80000000u, 1u, 0, 3u, 0x80u, 0); v4 = v3; lpFileNamea = v3; if ( v3 == (void *)-1 ) return 0; v5 = sub_638620(v2, v3, 0); v18 = v5; if ( v5 == -1 ) { sub_638460(v2, v4); return 0; } v7 = 0; if ( v5 ) { while ( sub_6384A0(v2, v4, &Buffer, 8u, &NumberOfBytesRead, 0) ) { v19 = v7 + nNumberOfBytesToRead + 8; if ( (_UNKNOWN *)Buffer == &unk_11111111 ) { v8 = unknown_libname_130(nNumberOfBytesToRead + 8); if ( !sub_6384A0(v2, v4, (LPVOID)(v8 + 8), nNumberOfBytesToRead, &NumberOfBytesRead, 0) ) break; v11 = operator new(0x4Cu); v12 = v11; *(_DWORD *)(v11 + 72) = 0; memset((void *)v11, 0, 0x40u); v13 = v8 + 8; do { v14 = *(_BYTE *)v13; *(_BYTE *)(v12 - (v8 + 8) + v13) = *(_BYTE *)v13; ++v13; } while ( v14 ); *(_DWORD *)(v12 + 64) = *(_DWORD *)(v8 + 72); v15 = (void *)unknown_libname_130(4 * *(_DWORD *)(v8 + 72) | -((unsigned __int64)*(_DWORD *)(v8 + 72) >> 30 != 0)); *(_DWORD *)(v12 + 68) = v15; memmove(v15, (const void *)(v8 + 76), 4 * *(_DWORD *)(v8 + 72)); if ( *(_DWORD *)(v2 + 1232) ) *(_DWORD *)(*(_DWORD *)(v2 + 1236) + 72) = v12; else *(_DWORD *)(v2 + 1232) = v12; ++*(_DWORD *)(v2 + 1228); *(_DWORD *)(v2 + 1236) = v12; } else { if ( Buffer != 572662306 || (v4 = lpFileNamea, v8 = unknown_libname_130(nNumberOfBytesToRead + 8), !sub_6384A0(v2, lpFileNamea, (LPVOID)(v8 + 8), nNumberOfBytesToRead, &NumberOfBytesRead, 0)) ) break; v9 = operator new(0x10u); *(_DWORD *)(v9 + 12) = 0; *(_DWORD *)v9 = *(_DWORD *)(v8 + 8); *(_DWORD *)(v9 + 4) = *(_DWORD *)(v8 + 12); v10 = (void *)unknown_libname_130(*(_DWORD *)(v8 + 12)); *(_DWORD *)(v9 + 8) = v10; memmove(v10, (const void *)(v8 + 16), *(_DWORD *)(v8 + 12)); if ( *(_DWORD *)(v2 + 1248) ) { *(_DWORD *)(*(_DWORD *)(v2 + 1252) + 12) = v9; ++*(_DWORD *)(v2 + 1244); *(_DWORD *)(v2 + 1252) = v9; } else { ++*(_DWORD *)(v2 + 1244); *(_DWORD *)(v2 + 1248) = v9; *(_DWORD *)(v2 + 1252) = v9; } } operator delete((void *)v8); if ( v18 <= v19 ) return 1; v7 = v19; v4 = lpFileNamea; } sub_638460(v2, v4); result = 0; } else { result = 1; } return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); //----- (0064E030) -------------------------------------------------------- signed int __thiscall sub_64E030(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten) { void *v3; // esi@1 int v4; // edi@1 signed int result; // eax@3 int v6; // ebx@4 int Buffer; // [sp+8h] [bp-Ch]@5 int v8; // [sp+Ch] [bp-8h]@5 int v9; // [sp+10h] [bp-4h]@1 v3 = NumberOfBytesWritten; v4 = this; v9 = 1; if ( NumberOfBytesWritten != (HANDLE)-1 || (v9 = 0, v3 = (void *)sub_638DC0(this, lpFileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0), v3 != (void *)-1) ) { v6 = *(_DWORD *)(v4 + 1232); if ( v6 ) { while ( 1 ) { Buffer = (int)&unk_11111111; v8 = 4 * *(_DWORD *)(v6 + 64) + 68; if ( !sub_638530(v4, v3, &Buffer, 8u, (LPDWORD)&NumberOfBytesWritten, 0) ) break; if ( !sub_638530(v4, v3, (LPCVOID)v6, 0x40u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_638530(v4, v3, (LPCVOID)(v6 + 64), 4u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_638530(v4, v3, *(LPCVOID *)(v6 + 68), 4 * *(_DWORD *)(v6 + 64), (LPDWORD)&NumberOfBytesWritten, 0) ) break; v6 = *(_DWORD *)(v6 + 72); if ( !v6 ) goto LABEL_10; } if ( !v9 ) sub_638460(v4, v3); result = 0; } else { LABEL_10: if ( !v9 ) sub_638460(v4, v3); result = 1; } } else { result = 0; } return result; } //----- (0064E150) -------------------------------------------------------- signed int __thiscall sub_64E150(int this, LPCSTR lpFileName, HANDLE NumberOfBytesWritten) { void *v3; // esi@1 int v4; // edi@1 signed int result; // eax@3 int v6; // ebx@4 int Buffer; // [sp+8h] [bp-Ch]@5 int v8; // [sp+Ch] [bp-8h]@5 int v9; // [sp+10h] [bp-4h]@1 v3 = NumberOfBytesWritten; v4 = this; v9 = 1; if ( NumberOfBytesWritten != (HANDLE)-1 || (v9 = 0, v3 = (void *)sub_638DC0(this, lpFileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0), v3 != (void *)-1) ) { v6 = *(_DWORD *)(v4 + 1248); if ( v6 ) { while ( 1 ) { Buffer = 572662306; v8 = *(_DWORD *)(v6 + 4) + 8; if ( !sub_638530(v4, v3, &Buffer, 8u, (LPDWORD)&NumberOfBytesWritten, 0) ) break; if ( !sub_638530(v4, v3, (LPCVOID)v6, 4u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_638530(v4, v3, (LPCVOID)(v6 + 4), 4u, (LPDWORD)&NumberOfBytesWritten, 0) || !sub_638530(v4, v3, *(LPCVOID *)(v6 + 8), *(_DWORD *)(v6 + 4), (LPDWORD)&NumberOfBytesWritten, 0) ) break; v6 = *(_DWORD *)(v6 + 12); if ( !v6 ) goto LABEL_10; } if ( !v9 ) sub_638460(v4, v3); result = 0; } else { LABEL_10: if ( !v9 ) sub_638460(v4, v3); result = 1; } } else { result = 0; } return result; } //----- (0064E260) -------------------------------------------------------- void __thiscall sub_64E260(void *this) { void *v1; // esi@1 void *v2; // ST00_4@2 void *v3; // eax@3 v1 = this; while ( *((_DWORD *)v1 + 308) ) { operator delete(*(void **)(*((_DWORD *)v1 + 308) + 68)); v2 = (void *)*((_DWORD *)v1 + 308); *((_DWORD *)v1 + 308) = *(_DWORD *)(*((_DWORD *)v1 + 308) + 72); operator delete(v2); } v3 = (void *)*((_DWORD *)v1 + 310); *((_DWORD *)v1 + 307) = 0; if ( v3 ) { operator delete(v3); *((_DWORD *)v1 + 310) = 0; } } //----- (0064E2D0) -------------------------------------------------------- void __thiscall sub_64E2D0(void *this) { void *v1; // esi@1 void *v2; // ST00_4@2 void *v3; // eax@3 v1 = this; while ( *((_DWORD *)v1 + 312) ) { operator delete(*(void **)(*((_DWORD *)v1 + 312) + 8)); v2 = (void *)*((_DWORD *)v1 + 312); *((_DWORD *)v1 + 312) = *(_DWORD *)(*((_DWORD *)v1 + 312) + 12); operator delete(v2); } v3 = (void *)*((_DWORD *)v1 + 314); *((_DWORD *)v1 + 311) = 0; if ( v3 ) { sub_6530A4(v3); *((_DWORD *)v1 + 314) = 0; } } //----- (0064E340) -------------------------------------------------------- void __thiscall sub_64E340(int this) { int v1; // esi@1 void *v2; // ST00_4@3 v1 = this; sub_637900(this); if ( !*(_DWORD *)(v1 + 664) ) { while ( *(_DWORD *)(v1 + 1264) ) { v2 = *(void **)(v1 + 1264); *(_DWORD *)(v1 + 1264) = **(_DWORD **)(v1 + 1264); operator delete(v2); } *(_DWORD *)(v1 + 1260) = 0; sub_64E260((void *)v1); sub_64E2D0((void *)v1); if ( *(_DWORD *)(v1 + 1020) ) operator delete(*(void **)(v1 + 1020)); *(_DWORD *)(v1 + 1020) = 0; } } //----- (0064E3C0) -------------------------------------------------------- int __thiscall sub_64E3C0(int this) { int v1; // ebx@1 void *v2; // eax@1 int v3; // ecx@1 int result; // eax@1 v1 = this; sub_64E340(this); sub_64CFC0(v1); *(_DWORD *)(v1 + 948) = byte_6A492E; v2 = (void *)unknown_libname_130(28); *(_DWORD *)(v1 + 1020) = v2; memcpy(v2, &unk_86FB64, 0x1Cu); *(_DWORD *)(v1 + 956) = off_708548; *(_WORD *)(v1 + 960) = word_70854C; *(_WORD *)(v1 + 1024) = 59; *(_WORD *)(v1 + 1088) = word_708544; *(_BYTE *)(v1 + 1090) = byte_708546; *(_WORD *)(v1 + 1152) = word_708540; v3 = *(_DWORD *)(v1 + 1020); *(_BYTE *)(v1 + 1154) = byte_708542; *(_DWORD *)v3 = v1 + 1024; *(_DWORD *)(*(_DWORD *)(v1 + 1020) + 4) = v1 + 1088; result = *(_DWORD *)(v1 + 1020); *(_DWORD *)(result + 8) = v1 + 1152; *(_DWORD *)(v1 + 1216) = off_86FB3C; *(_DWORD *)(v1 + 1220) = off_86FAF0; *(_DWORD *)(v1 + 1224) = &unk_86FAA0; return result; } // 65175E: using guessed type int __cdecl unknown_libname_130(_DWORD); // 708540: using guessed type __int16 word_708540; // 708542: using guessed type char byte_708542; // 708544: using guessed type __int16 word_708544; // 708546: using guessed type char byte_708546; // 708548: using guessed type void *off_708548; // 70854C: using guessed type __int16 word_70854C; // 86FAF0: using guessed type char *off_86FAF0[29]; // 86FB3C: using guessed type char *off_86FB3C[10]; //----- (0064E4A0) -------------------------------------------------------- int __thiscall sub_64E4A0(int this) { int v1; // esi@1 v1 = this; sub_64E340(this); return sub_637D00(v1); } //----- (0064E500) -------------------------------------------------------- int __thiscall sub_64E500(int this) { int v1; // esi@1 int v2; // ecx@1 v1 = this; sub_637890(this); *(_DWORD *)(v1 + 1020) = 0; sub_64CFC0(v1); sub_64E3C0(v2); return v1; } //----- (0064E560) -------------------------------------------------------- int __thiscall sub_64E560(int this, int a2) { int v2; // esi@1 int v3; // ecx@2 char v4; // dl@3 int v5; // ecx@4 char v6; // dl@5 int v7; // ecx@6 char v8; // dl@7 int v9; // ecx@8 char v10; // dl@9 int v11; // ecx@11 char v13; // [sp+10h] [bp-508h]@11 int v14; // [sp+40Ch] [bp-10Ch]@11 unsigned int v15; // [sp+508h] [bp-10h]@1 int v16; // [sp+514h] [bp-4h]@1 int v17; // [sp+518h] [bp+0h]@1 v15 = (unsigned int)&v17 ^ __security_cookie; v2 = this; sub_637890(this); v16 = 0; if ( a2 ) { *(_DWORD *)(v2 + 936) = *(_DWORD *)(a2 + 936); v3 = a2 + 956; *(_DWORD *)(v2 + 952) = *(_DWORD *)(a2 + 952); *(_DWORD *)(v2 + 940) = 0; *(_DWORD *)(v2 + 944) = 0; do { v4 = *(_BYTE *)v3; *(_BYTE *)(v2 + 956 - (a2 + 956) + v3) = *(_BYTE *)v3; ++v3; } while ( v4 ); v5 = a2 + 1024; do { v6 = *(_BYTE *)v5; *(_BYTE *)(v2 + 1024 - (a2 + 1024) + v5) = *(_BYTE *)v5; ++v5; } while ( v6 ); v7 = a2 + 1088; do { v8 = *(_BYTE *)v7; *(_BYTE *)(v2 + 1088 - (a2 + 1088) + v7) = *(_BYTE *)v7; ++v7; } while ( v8 ); v9 = a2 + 1152; do { v10 = *(_BYTE *)v9; *(_BYTE *)(v2 + 1152 - (a2 + 1152) + v9) = *(_BYTE *)v9; ++v9; } while ( v10 ); *(_DWORD *)(v2 + 1020) = *(_DWORD *)(a2 + 1020); *(_DWORD *)(v2 + 1216) = *(_DWORD *)(a2 + 1216); *(_DWORD *)(v2 + 1220) = *(_DWORD *)(a2 + 1220); *(_DWORD *)(v2 + 1224) = *(_DWORD *)(a2 + 1224); *(_DWORD *)(v2 + 1228) = *(_DWORD *)(a2 + 1228); *(_DWORD *)(v2 + 1232) = *(_DWORD *)(a2 + 1232); *(_DWORD *)(v2 + 1236) = *(_DWORD *)(a2 + 1236); *(_DWORD *)(v2 + 1244) = *(_DWORD *)(a2 + 1244); *(_DWORD *)(v2 + 1248) = *(_DWORD *)(a2 + 1248); *(_DWORD *)(v2 + 1252) = *(_DWORD *)(a2 + 1252); *(_DWORD *)(v2 + 1260) = *(_DWORD *)(a2 + 1260); *(_DWORD *)(v2 + 1268) = *(_DWORD *)(a2 + 1268); *(_DWORD *)(v2 + 1264) = *(_DWORD *)(a2 + 1264); *(_DWORD *)(v2 + 660) = a2; *(_DWORD *)(v2 + 664) = 1; } else { sub_637890((int)&v13); LOBYTE(v16) = 1; v14 = 0; sub_64CFC0((int)&v13); sub_64E3C0(v11); LOBYTE(v16) = 2; sub_64E340((int)&v13); LOBYTE(v16) = 0; sub_637D00((int)&v13); } return v2; } // 86FEB8: using guessed type int __security_cookie; //----- (0064E750) -------------------------------------------------------- int __thiscall sub_64E750(int this) { int v1; // esi@1 int v2; // eax@1 char *v3; // edx@1 char v4; // cl@2 int v5; // ST28_4@3 int v6; // ST24_4@3 char v8; // [sp+8h] [bp-C20h]@1 char v9; // [sp+Ch] [bp-C1Ch]@3 char v10; // [sp+10h] [bp-C18h]@3 char v11; // [sp+508h] [bp-720h]@3 char v12; // [sp+608h] [bp-620h]@3 char FileName[260]; // [sp+708h] [bp-520h]@1 char v14; // [sp+80Ch] [bp-41Ch]@3 const CHAR PathName; // [sp+90Ch] [bp-31Ch]@3 CHAR Buffer; // [sp+A10h] [bp-218h]@3 char v17; // [sp+B14h] [bp-114h]@3 unsigned int v18; // [sp+C18h] [bp-10h]@1 int v19; // [sp+C24h] [bp-4h]@3 int v20; // [sp+C28h] [bp+0h]@1 v18 = (unsigned int)&v20 ^ __security_cookie; v1 = this; v2 = sub_637F60(this, (int)&v8); v3 = &FileName[-v2]; do { v4 = *(_BYTE *)v2; v3[v2] = *(_BYTE *)v2; ++v2; } while ( v4 ); GetCurrentDirectoryA(0x104u, &Buffer); _fullpath(&v17, (const char *)(v1 + 668), 0x104u); _splitpath(&v17, &v9, &v14, &v12, &v11); sprintf((char *)&PathName, "%s%s", &v9, &v14); SetCurrentDirectoryA(&PathName); sub_637BE0(v1); sub_64E560((int)&v10, v1); v5 = *(_DWORD *)(v1 + 932); v6 = *(_DWORD *)(v1 + 928); v19 = 0; sub_64EDB0((int)&v10, FileName, v6, v5, 0); sub_637BF0(v1, 0); SetCurrentDirectoryA(&Buffer); v19 = 1; sub_64E340((int)&v10); v19 = -1; return sub_637D00((int)&v10); } // 86FEB8: using guessed type int __security_cookie; // 64E750: using guessed type const CHAR FileName[260]; //----- (0064E8B0) -------------------------------------------------------- signed int __thiscall sub_64E8B0(int this, const unsigned __int8 *a2, int a3) { int v3; // esi@1 signed int result; // eax@2 int v5; // eax@3 void *v6; // eax@14 void *v7; // edi@14 void *v8; // edi@21 int v9; // ebx@22 void *v10; // edi@33 int v11; // ebx@34 const char *v12; // [sp-8h] [bp-328h]@18 const char *v13; // [sp-8h] [bp-328h]@28 const CHAR *v14; // [sp-4h] [bp-324h]@18 const CHAR *v15; // [sp-4h] [bp-324h]@28 int Buffer; // [sp+Ch] [bp-314h]@23 int v17; // [sp+10h] [bp-310h]@23 DWORD NumberOfBytesWritten; // [sp+14h] [bp-30Ch]@23 char v19; // [sp+18h] [bp-308h]@11 const CHAR FileName; // [sp+218h] [bp-108h]@9 unsigned int v21; // [sp+31Ch] [bp-4h]@1 int v22; // [sp+320h] [bp+0h]@1 v21 = (unsigned int)&v22 ^ __security_cookie; v3 = this; switch ( sub_637C60(a2, *(_DWORD *)(this + 1216), 0xAu) ) { case 0: *(_DWORD *)(v3 + 936) = 1; return 1; case 1: v5 = sub_64D560((void *)v3); if ( !v5 ) return 1; sub_64D810(v3, v5); return 1; case 2: sub_64E750(v3); return 1; case 3: sub_64E260((void *)v3); goto LABEL_7; case 5: LABEL_7: sub_64E2D0((void *)v3); return 1; case 4: sub_64E260((void *)v3); return 1; case 6: if ( !sub_64D8D0(v3, (int)&FileName) ) return 1; if ( sub_64DDF0(v3, &FileName) ) { sprintf(&v19, "%s - READ OK", &FileName); sub_64D130((void *)v3, &v19); result = 1; } else { ++*(_DWORD *)(v3 + 944); sprintf(&v19, "%s - READ ERROR", &FileName); sub_64D130((void *)v3, &v19); result = 1; } return result; case 7: if ( !sub_64D8D0(v3, (int)&FileName) ) return 1; v6 = (void *)sub_638DC0(v3, &FileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); v7 = v6; if ( v6 == (void *)-1 ) goto LABEL_18; if ( sub_64E030(v3, 0, v6) && sub_64E150(v3, 0, v7) ) { sub_638460(v3, v7); v14 = &FileName; v12 = "%s - WRITE OK"; goto LABEL_44; } sub_638460(v3, v7); LABEL_18: v14 = &FileName; v12 = "%s - WRITE ERROR"; goto LABEL_43; case 8: if ( !sub_64D8D0(v3, (int)&FileName) ) return 1; v8 = (void *)sub_638DC0(v3, &FileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v8 == (void *)-1 ) goto LABEL_31; v9 = *(_DWORD *)(v3 + 1232); if ( !v9 ) goto LABEL_28; while ( 1 ) { Buffer = (int)&unk_11111111; v17 = 4 * *(_DWORD *)(v9 + 64) + 68; if ( !sub_638530(v3, v8, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !sub_638530(v3, v8, (LPCVOID)v9, 0x40u, &NumberOfBytesWritten, 0) || !sub_638530(v3, v8, (LPCVOID)(v9 + 64), 4u, &NumberOfBytesWritten, 0) || !sub_638530(v3, v8, *(LPCVOID *)(v9 + 68), 4 * *(_DWORD *)(v9 + 64), &NumberOfBytesWritten, 0) ) break; v9 = *(_DWORD *)(v9 + 72); if ( !v9 ) { LABEL_28: sub_638460(v3, v8); v15 = &FileName; v13 = "%s - WRITE FORMAT OK"; goto LABEL_29; } } sub_638460(v3, v8); LABEL_31: ++*(_DWORD *)(v3 + 944); v15 = &FileName; v13 = "%s - WRITE FORMAT ERROR"; LABEL_29: sprintf(&v19, v13, v15); sub_64D130((void *)v3, &v19); return 1; case 9: if ( !sub_64D8D0(v3, (int)&FileName) ) return 1; v10 = (void *)sub_638DC0(v3, &FileName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v10 == (void *)-1 ) goto LABEL_42; v11 = *(_DWORD *)(v3 + 1248); if ( !v11 ) goto LABEL_40; break; default: return 0; } while ( 1 ) { Buffer = 572662306; v17 = *(_DWORD *)(v11 + 4) + 8; if ( !sub_638530(v3, v10, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !sub_638530(v3, v10, (LPCVOID)v11, 4u, &NumberOfBytesWritten, 0) || !sub_638530(v3, v10, (LPCVOID)(v11 + 4), 4u, &NumberOfBytesWritten, 0) || !sub_638530(v3, v10, *(LPCVOID *)(v11 + 8), *(_DWORD *)(v11 + 4), &NumberOfBytesWritten, 0) ) break; v11 = *(_DWORD *)(v11 + 12); if ( !v11 ) { LABEL_40: sub_638460(v3, v10); v14 = &FileName; v12 = "%s - WRITE DATA OK"; goto LABEL_44; } } sub_638460(v3, v10); LABEL_42: v14 = &FileName; v12 = "%s - WRITE DATA ERROR"; LABEL_43: ++*(_DWORD *)(v3 + 944); LABEL_44: sprintf(&v19, v12, v14); sub_64D130((void *)v3, &v19); return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (0064EDB0) -------------------------------------------------------- int __thiscall sub_64EDB0(int this, LPCSTR lpFileName, int a3, int a4, const char *a5) { int v5; // esi@1 signed int v6; // eax@2 LPCSTR v7; // eax@9 const CHAR v8; // cl@10 const unsigned __int8 *v9; // eax@12 const unsigned __int8 *v10; // edi@12 int result; // eax@18 DWORD v12; // ebx@19 char *v13; // [sp-10h] [bp-220h]@20 const char *v14; // [sp-Ch] [bp-21Ch]@20 const char *v15; // [sp-4h] [bp-214h]@6 char v16; // [sp+Ch] [bp-204h]@6 unsigned int v17; // [sp+20Ch] [bp-4h]@1 int v18; // [sp+210h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v5 = this; *(_DWORD *)(this + 928) = a3; *(_DWORD *)(this + 932) = a4; if ( a5 ) v6 = sub_637EA0(this, a5); else v6 = sub_637D90(this, lpFileName); if ( v6 ) { if ( *(_DWORD *)(v5 + 664) ) { sub_64D130((void *)v5, "---------------------------------------------------------------"); sprintf(&v16, "Include - %s ", lpFileName); sub_64D130((void *)v5, &v16); v15 = "---------------------------------------------------------------"; } else { sub_64D130((void *)v5, "================================================================================"); sprintf(&v16, "FILE PROCESSING - %s ", lpFileName); sub_64D130((void *)v5, &v16); sub_64D130((void *)v5, "================================================================================"); v15 = word_6A2BF8; } sub_64D130((void *)v5, v15); if ( lpFileName ) { v7 = lpFileName; do { v8 = *v7; v7[v5 + 668 - (_DWORD)lpFileName] = *v7; ++v7; } while ( v8 ); } sub_637960((void *)v5, v5 + 956); while ( !*(_DWORD *)(v5 + 936) ) { v9 = sub_637A00(v5); v10 = v9; if ( !v9 ) break; if ( !sub_64D350(v5, v9) && !sub_64E8B0(v5, v10, (int)&v16) ) { if ( !sub_64DB50(v5, v10, (int)&v16) ) { sprintf(&v16, "%s - UNKNOWNED.", v10); sub_64D130((void *)v5, &v16); ++*(_DWORD *)(v5 + 944); } } } sub_64DBE0(v5); sub_637900(v5); result = *(_DWORD *)(v5 + 940) + *(_DWORD *)(v5 + 944) <= 0; } else { v12 = GetLastError(); sub_64D130((void *)v5, "---------------------------------------------------------------"); if ( *(_DWORD *)(v5 + 664) ) { v14 = "INCLUDE OPEN ERROR(Code = %d) - %s "; v13 = &v16; } else { v14 = "FILE OPEN ERROR(Code = %d) - %s "; v13 = &v16; } sprintf(v13, v14, v12, lpFileName); sub_64D130((void *)v5, &v16); sub_64D130((void *)v5, "---------------------------------------------------------------"); ++*(_DWORD *)(v5 + 940); sub_64DBE0(v5); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064EFE0) -------------------------------------------------------- int __thiscall sub_64EFE0(int this) { int v1; // esi@1 v1 = this; sub_651750((void *)(this + 37484)); *(_DWORD *)v1 = -1; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 37492) = 0; *(_DWORD *)(v1 + 37496) = 0; *(_DWORD *)(v1 + 37500) = 0; *(_DWORD *)(v1 + 37504) = 0; *(_DWORD *)(v1 + 37508) = 0; *(_DWORD *)(v1 + 37512) = 0; *(_DWORD *)(v1 + 1020) = 0; *(_DWORD *)(v1 + 37448) = 0; *(_DWORD *)(v1 + 37452) = 0; *(_DWORD *)(v1 + 37456) = 0; InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 1024)); InitializeCriticalSection((LPCRITICAL_SECTION)(v1 + 37460)); return v1; } //----- (0064F060) -------------------------------------------------------- signed int __thiscall sub_64F060(SOCKET *this) { SOCKET *v1; // esi@1 v1 = this; if ( *this != -1 ) { if ( shutdown(*this, 1) ) GetLastError(); if ( *v1 != -1 ) { if ( closesocket(*v1) ) GetLastError(); else *v1 = -1; } } if ( v1[9373] ) { v1[9374] = 1; do Sleep(5u); while ( v1[9373] ); } return 1; } //----- (0064F0D0) -------------------------------------------------------- signed int __thiscall sub_64F0D0(int this, int a2, int a3, int a4, int a5) { int v5; // edi@1 struct _RTL_CRITICAL_SECTION *v6; // ebx@1 signed int v7; // edx@1 signed int v8; // eax@2 int v9; // ecx@2 signed int result; // eax@7 int v11; // ecx@8 int v12; // esi@8 char v13; // al@9 char v14; // [sp+8h] [bp-104h]@13 unsigned int v15; // [sp+108h] [bp-4h]@1 int v16; // [sp+10Ch] [bp+0h]@1 v15 = (unsigned int)&v16 ^ __security_cookie; v5 = this; v6 = (struct _RTL_CRITICAL_SECTION *)(this + 1024); EnterCriticalSection((LPCRITICAL_SECTION)(this + 1024)); v7 = *(_DWORD *)(v5 + 1020); if ( v7 >= 10 ) goto LABEL_7; v8 = 0; v9 = v5 + 20; while ( *(_DWORD *)v9 ) { ++v8; v9 += 100; if ( v8 >= 10 ) goto LABEL_7; } if ( v8 != -1 ) { v11 = a2; *(_DWORD *)(v5 + 1020) = v7 + 1; v12 = 100 * v8 + v5; do { v13 = *(_BYTE *)v11; *(_BYTE *)(v12 + 44 - a2 + v11) = *(_BYTE *)v11; ++v11; } while ( v13 ); *(_DWORD *)(v12 + 108) = a3; *(_DWORD *)(v12 + 112) = a5; *(_DWORD *)(v12 + 116) = a4; *(_DWORD *)(v12 + 20) = 1; LeaveCriticalSection(v6); while ( *(_DWORD *)(v12 + 20) == 1 ) Sleep(0xAu); if ( *(_DWORD *)(v12 + 20) == 2 ) { sprintf(&v14, "*FAILED Listen_Add - IP = %s:%d", v12 + 44, *(_DWORD *)(v12 + 108)); sub_64BC90(1, "Msg", "%s", &v14); EnterCriticalSection(v6); *(_DWORD *)(v12 + 20) = 0; --*(_DWORD *)(v5 + 1020); LeaveCriticalSection(v6); result = 0; } else { result = 1; } } else { LABEL_7: LeaveCriticalSection(v6); sub_64BC90(1, "Msg", "%s", "*FAILED Listen_Add - LISTEN ARRAY BUFFER FULL, need more buffer define*"); result = 0; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064F230) -------------------------------------------------------- signed int __thiscall sub_64F230(int this, void *a2, int a3) { int v3; // ebx@1 struct _RTL_CRITICAL_SECTION *v4; // esi@1 int v5; // eax@1 signed int result; // eax@2 unsigned int v7; // edx@4 struct _RTL_CRITICAL_SECTION *lpCriticalSection; // [sp+8h] [bp-4h]@1 v3 = this; v4 = (struct _RTL_CRITICAL_SECTION *)(this + 37460); lpCriticalSection = (struct _RTL_CRITICAL_SECTION *)(this + 37460); EnterCriticalSection((LPCRITICAL_SECTION)(this + 37460)); v5 = *(_DWORD *)(v3 + 37456); if ( *(_DWORD *)(v3 + 37452) == v5 ) { LeaveCriticalSection(v4); result = 0; } else { memcpy(a2, (const void *)(v3 + 28 * v5 + 1048), 0x1Cu); if ( a3 ) { v7 = (*(_DWORD *)(v3 + 37456) + 1) % 0x514u; --*(_DWORD *)(v3 + 37448); *(_DWORD *)(v3 + 37456) = v7; } LeaveCriticalSection(lpCriticalSection); result = 1; } return result; } //----- (0064F2C0) -------------------------------------------------------- signed int __thiscall sub_64F2C0(int this, int a2, int a3, int a4) { int v4; // esi@1 struct _RTL_CRITICAL_SECTION *v5; // edi@1 signed int result; // eax@2 unsigned int v7; // edi@4 unsigned int v8; // edx@5 signed int v9; // eax@6 int v10; // eax@13 unsigned int v11; // edx@13 struct _RTL_CRITICAL_SECTION *lpCriticalSection; // [sp+8h] [bp-8h]@1 unsigned int v13; // [sp+Ch] [bp-4h]@3 v4 = this; v5 = (struct _RTL_CRITICAL_SECTION *)(this + 37460); lpCriticalSection = (struct _RTL_CRITICAL_SECTION *)(this + 37460); EnterCriticalSection((LPCRITICAL_SECTION)(this + 37460)); if ( (*(_DWORD *)(v4 + 37452) + 1) % 0x514u == *(_DWORD *)(v4 + 37456) ) { LeaveCriticalSection(v5); result = 0; } else { timeGetTime(); v13 = 0; if ( *(_DWORD *)(v4 + 37448) ) { v7 = *(_DWORD *)(v4 + 37456); while ( 1 ) { v8 = v4 + 28 * v7 % 0x514 + 1056; if ( *(_DWORD *)v8 == *(_DWORD *)(a3 + 4) ) break; v9 = *(_BYTE *)v8 - *(_BYTE *)(a3 + 4); if ( *(_BYTE *)v8 == *(_BYTE *)(a3 + 4) ) { v9 = *(_BYTE *)(v4 + 28 * v7 % 0x514 + 1057) - *(_BYTE *)(a3 + 5); if ( *(_BYTE *)(v4 + 28 * v7 % 0x514 + 1057) == *(_BYTE *)(a3 + 5) ) { v9 = *(_BYTE *)(v4 + 28 * v7 % 0x514 + 1058) - *(_BYTE *)(a3 + 6); if ( *(_BYTE *)(v4 + 28 * v7 % 0x514 + 1058) == *(_BYTE *)(a3 + 6) ) { v9 = *(_BYTE *)(v4 + 28 * v7 % 0x514 + 1059) - *(_BYTE *)(a3 + 7); if ( *(_BYTE *)(v4 + 28 * v7 % 0x514 + 1059) == *(_BYTE *)(a3 + 7) ) break; } } } if ( !((v9 >> 31) | 1) ) break; ++v7; ++v13; if ( v13 >= *(_DWORD *)(v4 + 37448) ) { v5 = lpCriticalSection; goto LABEL_13; } } LeaveCriticalSection(lpCriticalSection); result = 0; } else { LABEL_13: *(_DWORD *)(v4 + 28 * *(_DWORD *)(v4 + 37452) + 1048) = a2; v10 = v4 + 28 * *(_DWORD *)(v4 + 37452) + 1052; *(_DWORD *)v10 = *(_DWORD *)a3; *(_DWORD *)(v10 + 4) = *(_DWORD *)(a3 + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(a3 + 8); *(_DWORD *)(v10 + 12) = *(_DWORD *)(a3 + 12); *(_DWORD *)(v4 + 28 * *(_DWORD *)(v4 + 37452) + 1068) = a4; *(_DWORD *)(v4 + 28 * *(_DWORD *)(v4 + 37452) + 1072) = timeGetTime(); v11 = (*(_DWORD *)(v4 + 37452) + 1) % 0x514u; ++*(_DWORD *)(v4 + 37448); *(_DWORD *)(v4 + 37452) = v11; LeaveCriticalSection(v5); result = 1; } } return result; } //----- (0064F460) -------------------------------------------------------- void __thiscall sub_64F460(SOCKET *this) { SOCKET *v1; // esi@1 v1 = this; sub_64F060(this); DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 256)); DeleteCriticalSection((LPCRITICAL_SECTION)(v1 + 9365)); } //----- (0064F490) -------------------------------------------------------- int __stdcall sub_64F490(int a1) { int v1; // eax@1 bool v2; // zf@1 signed int v3; // edi@2 int v4; // esi@2 int v5; // eax@11 SOCKET v6; // ST24_4@13 SOCKET v7; // eax@13 unsigned int v8; // edi@13 unsigned __int32 v9; // eax@16 u_short v10; // ST2C_2@16 SOCKET v11; // eax@16 SOCKET v12; // edi@16 int addrlen; // [sp+4h] [bp-254h]@13 int v15; // [sp+8h] [bp-250h]@17 char optval; // [sp+Ch] [bp-24Ch]@14 int namelen; // [sp+10h] [bp-248h]@19 int v18; // [sp+14h] [bp-244h]@14 int v19; // [sp+18h] [bp-240h]@17 u_long argp; // [sp+1Ch] [bp-23Ch]@14 int v21; // [sp+20h] [bp-238h]@17 int v22; // [sp+24h] [bp-234h]@2 int optlen; // [sp+28h] [bp-230h]@14 int v24; // [sp+2Ch] [bp-22Ch]@1 fd_set readfds; // [sp+30h] [bp-228h]@10 struct sockaddr addr; // [sp+134h] [bp-124h]@13 struct sockaddr name; // [sp+144h] [bp-114h]@16 char v28; // [sp+154h] [bp-104h]@11 unsigned int v29; // [sp+254h] [bp-4h]@1 int v30; // [sp+258h] [bp+0h]@1 v29 = (unsigned int)&v30 ^ __security_cookie; v1 = a1; v2 = *(_DWORD *)(a1 + 37496) == 0; v24 = a1; *(_DWORD *)(a1 + 37492) = 1; if ( v2 ) { while ( 1 ) { v3 = 0; v4 = v1 + 44; v22 = 10; while ( 1 ) { EnterCriticalSection((LPCRITICAL_SECTION)(v1 + 1024)); if ( !v3 ) { if ( *(_DWORD *)(v4 - 24) == 1 ) { *(_DWORD *)&name.sa_family = 0; *(_DWORD *)&name.sa_data[2] = 0; *(_DWORD *)&name.sa_data[6] = 0; *(_DWORD *)&name.sa_data[10] = 0; name.sa_family = 2; v9 = inet_addr((const char *)v4); v10 = *(_WORD *)(v4 + 64); *(_DWORD *)&name.sa_data[2] = v9; *(_WORD *)&name.sa_data[0] = htons(v10); v11 = socket(2, 1, 0); v12 = v11; if ( v11 != -1 ) { v19 = 1; v21 = 1; setsockopt(v11, 65535, 4, (const char *)&v21, 4); ioctlsocket(v12, -2147195266, (u_long *)&v19); v15 = 32768; setsockopt(v12, 65535, 4097, (const char *)&v15, 4); if ( bind(v12, &name, 16) != -1 ) { if ( listen(v12, *(_DWORD *)(v4 + 68)) != -1 ) { namelen = 4; getsockname(v12, (struct sockaddr *)(v4 - 16), &namelen); *(_DWORD *)(v4 - 20) = v12; *(_DWORD *)(v4 - 24) = 3; v3 = 0; goto LABEL_23; } } } *(_DWORD *)(v4 - 24) = 2; WSACleanup(); goto LABEL_21; } if ( *(_DWORD *)(v4 - 24) != 3 ) { if ( *(_DWORD *)(v4 - 24) == 4 ) { closesocket(*(_DWORD *)(v4 - 20)); *(_DWORD *)(v4 - 24) = 0; goto LABEL_23; } LABEL_21: v3 = 0; goto LABEL_23; } if ( 1299 - *(_DWORD *)(v24 + 37448) < 1 ) goto LABEL_21; readfds.fd_array[0] = *(_DWORD *)(v4 - 20); readfds.fd_count = 1; if ( select(0, &readfds, 0, 0, (const struct timeval *)(v24 + 37500)) == -1 ) { v5 = sub_64B8B0(0, 1); sprintf( &v28, "ERROR - LISTEN SOCKET ACTIVE (%s) %s:%d ServerFromID=%d", v5, v4, *(_DWORD *)(v4 + 64), *(_DWORD *)(v4 + 72)); sub_64BC90(1, "Msg", "%s", &v28); v3 = 0; goto LABEL_23; } if ( !_WSAFDIsSet(*(_DWORD *)(v4 - 20), &readfds) || (v6 = *(_DWORD *)(v4 - 20), addrlen = 16, v7 = accept(v6, &addr, &addrlen), v8 = v7, v7 == -1) ) goto LABEL_21; argp = 1; ioctlsocket(v7, -2147195266, &argp); optlen = 4; getsockopt(v8, 65535, 4097, &optval, &optlen); v18 = 32768; setsockopt(v8, 65535, 4097, (const char *)&v18, 4); getsockopt(v8, 65535, 4097, &optval, &optlen); if ( !sub_64F2C0(v24, v8, (int)&addr, *(_DWORD *)(v4 + 72)) ) { shutdown(v8, 2); closesocket(v8); v3 = 0; goto LABEL_23; } } v3 = 1; LABEL_23: LeaveCriticalSection((LPCRITICAL_SECTION)(v24 + 1024)); v4 += 100; --v22; if ( !v22 ) break; v1 = v24; } if ( !v3 ) Sleep(1u); v1 = v24; if ( *(_DWORD *)(v24 + 37496) ) { *(_DWORD *)(v24 + 37492) = 0; return 0; } } } *(_DWORD *)(a1 + 37492) = 0; return 0; } // 86FEB8: using guessed type int __security_cookie; //----- (0064F850) -------------------------------------------------------- signed int __thiscall sub_64F850(LPVOID lpParameter) { LPVOID v1; // esi@1 HANDLE v3; // eax@4 v1 = lpParameter; if ( !*((_DWORD *)lpParameter + 9373) ) { if ( !sub_6500F0(2u, 2u) || (*((_DWORD *)v1 + 5) = 0, *((_DWORD *)v1 + 30) = 0, *((_DWORD *)v1 + 55) = 0, *((_DWORD *)v1 + 80) = 0, *((_DWORD *)v1 + 105) = 0, *((_DWORD *)v1 + 130) = 0, *((_DWORD *)v1 + 155) = 0, *((_DWORD *)v1 + 180) = 0, *((_DWORD *)v1 + 205) = 0, *((_DWORD *)v1 + 230) = 0, *((_DWORD *)v1 + 9374) = 0, v3 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sub_64F490, v1, 0, (LPDWORD)v1 + 9378), (*((_DWORD *)v1 + 9377) = v3) == 0) ) return 0; while ( *((_DWORD *)v1 + 9373) != 1 ) Sleep(5u); } return 1; } //----- (0064F900) -------------------------------------------------------- char __stdcall sub_64F900(char a1, int a2, int a3, int a4, char a5, int a6, int a7, int a8, char a9, int a10, int a11, int a12) { SC_HANDLE v12; // esi@1 int v13; // ST1C_4@2 int v14; // ST08_4@2 int v15; // eax@2 SC_HANDLE v16; // eax@2 v12 = OpenSCManagerA(0, 0, 2u); if ( !v12 ) goto LABEL_4; v13 = sub_428740((int)&a9); v14 = sub_428740((int)&a5); v15 = sub_428740((int)&a1); v16 = CreateServiceA(v12, (LPCSTR)v15, (LPCSTR)v14, 0, 0x10u, 3u, 0, (LPCSTR)v13, 0, 0, 0, 0, 0); if ( !v16 ) { CloseServiceHandle(v12); LABEL_4: type_info::_type_info(&a1); type_info::_type_info(&a5); type_info::_type_info(&a9); return 0; } CloseServiceHandle(v16); CloseServiceHandle(v12); type_info::_type_info(&a1); type_info::_type_info(&a5); type_info::_type_info(&a9); return 1; } //----- (0064FA00) -------------------------------------------------------- char __stdcall sub_64FA00(char a1, int a2, int a3, int a4) { SC_HANDLE v4; // esi@1 char result; // al@2 int v6; // eax@3 SC_HANDLE v7; // edi@3 v4 = OpenSCManagerA(0, 0, 2u); if ( v4 ) { v6 = sub_428740((int)&a1); v7 = OpenServiceA(v4, (LPCSTR)v6, 0x10000u); DeleteService(v7); CloseServiceHandle(v7); CloseServiceHandle(v4); type_info::_type_info(&a1); result = 1; } else { type_info::_type_info(&a1); result = 0; } return result; } //----- (0064FAB0) -------------------------------------------------------- BOOL __thiscall sub_64FAB0(int this) { int v1; // esi@1 SERVICE_STATUS_HANDLE v2; // ST00_4@1 SERVICE_STATUS_HANDLE v3; // ST00_4@1 BOOL result; // eax@1 struct _SERVICE_STATUS ServiceStatus; // [sp+Ch] [bp-20h]@1 unsigned int v6; // [sp+28h] [bp-4h]@1 int v7; // [sp+2Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v1 = this; v2 = *(_DWORD *)(this + 28); ServiceStatus.dwServiceType = 16; ServiceStatus.dwControlsAccepted = 5; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwServiceSpecificExitCode = 0; ServiceStatus.dwCurrentState = 3; ServiceStatus.dwCheckPoint = 1; ServiceStatus.dwWaitHint = 5000; SetServiceStatus(v2, &ServiceStatus); (*(void (**)(void))(v1 + 8))(); v3 = *(_DWORD *)(v1 + 28); ServiceStatus.dwCurrentState = 1; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; result = SetServiceStatus(v3, &ServiceStatus); if ( *(_DWORD *)(v1 + 32) == -1 ) { result = CloseHandle((HANDLE)0xFFFFFFFF); *(_DWORD *)(v1 + 32) = -1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064FB40) -------------------------------------------------------- signed int __thiscall sub_64FB40(void *this, int a2, LPCSTR lpMachineName, LPCSTR lpServiceName) { void *v4; // ebx@1 SC_HANDLE v5; // eax@1 void *v6; // esi@1 signed int result; // eax@2 SC_HANDLE v8; // eax@3 void *v9; // edi@3 v4 = this; v5 = OpenSCManagerA(lpMachineName, 0, 0x80000000u); v6 = v5; if ( v5 ) { v8 = OpenServiceA(v5, lpServiceName, 4u); v9 = v8; if ( v8 ) { if ( QueryServiceStatus(v8, (LPSERVICE_STATUS)((char *)v4 + 40)) ) { CloseServiceHandle(v9); CloseServiceHandle(v6); *(_DWORD *)a2 = *((_DWORD *)v4 + 11); result = 1; } else { *(_DWORD *)a2 = GetLastError(); CloseServiceHandle(v9); CloseServiceHandle(v6); result = 0; } } else { *(_DWORD *)a2 = GetLastError(); CloseServiceHandle(v6); result = 0; } } else { *(_DWORD *)a2 = GetLastError(); result = 0; } return result; } //----- (0064FBF0) -------------------------------------------------------- void *__thiscall sub_64FBF0(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &off_708A0C; sub_64FFF0((int)((char *)this + 12)); *((_DWORD *)v1 + 8) = -1; return v1; } // 708A0C: using guessed type int (*off_708A0C)(); //----- (0064FC10) -------------------------------------------------------- void *__thiscall sub_64FC10(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_708A0C; type_info::_type_info((char *)this + 12); if ( a2 & 1 ) operator delete(v2); return v2; } // 708A0C: using guessed type int (*off_708A0C)(); //----- (0064FC40) -------------------------------------------------------- BOOL __stdcall HandlerProc(int a1) { int v1; // eax@1 *(_DWORD *)(sub_5A7EE0() + 36) = a1; v1 = sub_5A7EE0(); return SetEvent(*(HANDLE *)(v1 + 32)); } //----- (0064FC70) -------------------------------------------------------- char __thiscall sub_64FC70(int this) { int v1; // esi@1 int v2; // eax@1 SERVICE_STATUS_HANDLE v3; // eax@1 int (*v4)(void); // eax@1 char result; // al@2 SERVICE_STATUS_HANDLE v6; // ST08_4@3 struct _SERVICE_STATUS ServiceStatus; // [sp+Ch] [bp-20h]@1 unsigned int v8; // [sp+28h] [bp-4h]@1 int v9; // [sp+2Ch] [bp+0h]@1 v8 = (unsigned int)&v9 ^ __security_cookie; v1 = this; *(_DWORD *)(this + 32) = CreateEventA(0, 0, 0, 0); v2 = sub_428740(v1 + 12); v3 = RegisterServiceCtrlHandlerA((LPCSTR)v2, (LPHANDLER_FUNCTION)HandlerProc); *(_DWORD *)(v1 + 28) = 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 + 4); if ( !v4 || (result = v4()) != 0 ) { v6 = *(_DWORD *)(v1 + 28); ServiceStatus.dwCurrentState = 4; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; SetServiceStatus(v6, &ServiceStatus); result = 1; } return result; } // 86FEB8: using guessed type int __security_cookie; //----- (0064FD30) -------------------------------------------------------- BOOL __stdcall sub_64FD30(int a1, int a2) { int v2; // eax@1 int v3; // eax@2 int v4; // eax@4 int v5; // esi@4 int v6; // ecx@5 int v7; // eax@9 int v8; // esi@9 int v9; // ecx@10 int v10; // eax@14 v2 = sub_5A7EE0(); if ( sub_64FC70(v2) ) { v3 = dword_13359820; while ( 2 ) { if ( !v3 ) { v4 = operator new(0x44u); v5 = v4; if ( v4 ) { *(_DWORD *)v4 = &off_708A0C; sub_64FFF0(v4 + 12); *(_DWORD *)(v5 + 32) = -1; v6 = v5; } else { v6 = 0; } dword_13359820 = v6; (**(void (***)(void))v6)(); v3 = dword_13359820; } WaitForSingleObject(*(HANDLE *)(v3 + 32), 0xFFFFFFFFu); v3 = dword_13359820; if ( !dword_13359820 ) { v7 = operator new(0x44u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = &off_708A0C; sub_64FFF0(v7 + 12); *(_DWORD *)(v8 + 32) = -1; v9 = v8; } else { v9 = 0; } dword_13359820 = v9; (**(void (***)(void))v9)(); v3 = dword_13359820; } switch ( *(_DWORD *)(v3 + 36) ) { default: continue; case 1: case 5: goto LABEL_14; } } } LABEL_14: v10 = sub_5A7EE0(); return sub_64FAB0(v10); } // 708A0C: using guessed type int (*off_708A0C)(); // 13359820: using guessed type int dword_13359820; //----- (0064FE60) -------------------------------------------------------- char __thiscall sub_64FE60(void *this, char a2, int a3, int a4, int a5, int a6, int a7) { void *v7; // esi@1 int v8; // eax@1 int v9; // edx@1 char result; // al@2 SERVICE_TABLE_ENTRYA ServiceStartTable; // [sp+8h] [bp-1Ch]@1 int v12; // [sp+10h] [bp-14h]@1 int v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@1 v7 = this; v14 = 0; sub_6500B0(&a2, (int)&a2); v8 = sub_428740((int)&a2); v9 = a7; ServiceStartTable.lpServiceName = (LPSTR)v8; ServiceStartTable.lpServiceProc = (LPSERVICE_MAIN_FUNCTIONA)sub_64FD30; v12 = 0; v13 = 0; *((_DWORD *)v7 + 1) = a6; *((_DWORD *)v7 + 2) = v9; if ( StartServiceCtrlDispatcherA(&ServiceStartTable) ) { v14 = -1; type_info::_type_info(&a2); result = 1; } else { GetLastError(); v14 = -1; type_info::_type_info(&a2); result = 0; } return result; } //----- (0064FF40) -------------------------------------------------------- unsigned __int8 *__thiscall sub_64FF40(int this) { return _mbsupr(*(unsigned __int8 **)(this + 4)); } //----- (0064FF50) -------------------------------------------------------- void *__thiscall sub_64FF50(void *this, const char *a2) { unsigned int v2; // eax@1 void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 void *v6; // eax@3 void *v7; // eax@5 size_t v8; // ST08_4@5 int v9; // edx@6 const char *v10; // ecx@6 const char v11; // al@7 int v12; // eax@8 int v13; // ecx@9 v3 = this; v2 = strlen(a2); v4 = *((_DWORD *)v3 + 3); *((_DWORD *)v3 + 2) = v2; v5 = v2 + 1; if ( v5 > v4 ) { do v4 += 48; while ( v5 > v4 ); v6 = (void *)*((_DWORD *)v3 + 1); *((_DWORD *)v3 + 3) = v4; if ( v6 ) operator delete(v6); v7 = (void *)operator new(*((_DWORD *)v3 + 3)); v8 = *((_DWORD *)v3 + 3); *((_DWORD *)v3 + 1) = v7; memset(v7, 0, v8); } v9 = *((_DWORD *)v3 + 1); v10 = a2; do { v11 = *v10; *(_BYTE *)v9++ = *v10++; } while ( v11 ); v12 = 0; *((_DWORD *)v3 + 2) = 0; if ( *((_DWORD *)v3 + 3) > 0 ) { v13 = *((_DWORD *)v3 + 1); do { if ( !*(_BYTE *)(v13 + v12) ) break; ++*((_DWORD *)v3 + 2); ++v12; } while ( v12 < *((_DWORD *)v3 + 3) ); } return v3; } //----- (0064FFF0) -------------------------------------------------------- int __thiscall sub_64FFF0(int this) { int v1; // esi@1 size_t v2; // eax@1 void *v3; // eax@3 size_t v4; // ST08_4@3 v1 = this; *(_DWORD *)this = &off_708A18; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; v2 = 0; do v2 += 48; while ( (signed int)v2 < 48 ); *(_DWORD *)(this + 12) = v2; v3 = (void *)operator new(v2); v4 = *(_DWORD *)(v1 + 12); *(_DWORD *)(v1 + 4) = v3; memset(v3, 0, v4); return v1; } // 708A18: using guessed type int (__thiscall *off_708A18)(void *, char); //----- (00650040) -------------------------------------------------------- void *__thiscall sub_650040(void *this, char a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = (void *)*((_DWORD *)this + 1); *(_DWORD *)this = &off_708A18; if ( v3 ) operator delete(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 708A18: using guessed type int (__thiscall *off_708A18)(void *, char); //----- (00650080) -------------------------------------------------------- int __thiscall sub_650080(int this, const char *a2) { int v2; // esi@1 v2 = this; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)this = &off_708A18; sub_64FF50((void *)this, a2); return v2; } // 708A18: using guessed type int (__thiscall *off_708A18)(void *, char); //----- (006500B0) -------------------------------------------------------- void *__thiscall sub_6500B0(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_64FF50(this, *(const char **)(a2 + 4)); return v2; } //----- (006500D0) -------------------------------------------------------- bool __cdecl sub_6500D0(int a1, int a2) { return _mbscmp(*(const unsigned __int8 **)(a1 + 4), *(const unsigned __int8 **)(a2 + 4)) == 0; } //----- (006500F0) -------------------------------------------------------- signed int __cdecl sub_6500F0(unsigned __int8 a1, unsigned __int8 a2) { struct WSAData WSAData; // [sp+4h] [bp-194h]@1 unsigned int v4; // [sp+194h] [bp-4h]@1 int v5; // [sp+198h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; if ( WSAStartup(a1 | (unsigned __int16)(a2 << 8), &WSAData) ) return 0; if ( WSAData.wVersion != (a1 | (unsigned __int16)(a2 << 8)) ) { WSACleanup(); return 0; } return 1; } // 86FEB8: using guessed type int __security_cookie; //----- (00650160) -------------------------------------------------------- int __thiscall sub_650160(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; return result; } //----- (00650180) -------------------------------------------------------- int __thiscall sub_650180(void *this) { return _LN21(this, 0x18u, 1024, nullsub_2); } //----- (006501A0) -------------------------------------------------------- int __thiscall sub_6501A0(int this, int a2, int a3) { int result; // eax@1 int v4; // eax@2 result = *(_DWORD *)(this + 24576); if ( result < 1024 ) { v4 = this + 24 * result; *(_DWORD *)v4 = *(_DWORD *)a2; *(_DWORD *)(v4 + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(a2 + 16); result = 3 * *(_DWORD *)(this + 24576); *(_DWORD *)(this + 24 * (*(_DWORD *)(this + 24576))++ + 20) = a3; } return result; } //----- (00650200) -------------------------------------------------------- int __cdecl sub_650200(int a1, int a2) { int v2; // edx@1 int v3; // esi@1 int result; // eax@2 v2 = *(_DWORD *)a2; v3 = *(_DWORD *)a1; if ( *(_DWORD *)a2 != *(_DWORD *)a1 || (v2 = *(_DWORD *)(a2 + 4), v3 = *(_DWORD *)(a1 + 4), v2 != v3) || (v2 = *(_DWORD *)(a2 + 8), v3 = *(_DWORD *)(a1 + 8), v2 != v3) || (v2 = *(_DWORD *)(a2 + 12), v3 = *(_DWORD *)(a1 + 12), v2 != v3) ) result = v2 - v3; else result = *(_DWORD *)(a2 + 16) - *(_DWORD *)(a1 + 16); return result; } //----- (00650240) -------------------------------------------------------- void *__thiscall sub_650240(void *this) { void *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_(this, 0x18u, 1024, (int)sub_650160, nullsub_2); *((_DWORD *)v1 + 6144) = 0; return v1; } //----- (00650270) -------------------------------------------------------- char __thiscall sub_650270(void *this) { size_t v1; // eax@1 char result; // al@3 v1 = *((_DWORD *)this + 6144); if ( v1 && (signed int)v1 < 1024 ) { qsort(this, v1, 0x18u, (int (__cdecl *)(const void *, const void *))sub_650200); result = 1; } else { result = 0; } return result; } //----- (006502A0) -------------------------------------------------------- int __thiscall sub_6502A0(void *this, const char *a2) { void *v2; // esi@1 void *v3; // eax@1 int result; // eax@2 char v5[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 int v11; // [sp+20h] [bp+0h]@1 v10 = (unsigned int)&v11 ^ __security_cookie; v2 = this; v9 = 0; v8 = 0; v7 = 0; v6 = 0; *(_DWORD *)v5 = 0; strncpy(v5, a2, 0x14u); v3 = bsearch(v5, v2, *((_DWORD *)v2 + 6144), 0x18u, (int (__cdecl *)(const void *, const void *))sub_650200); if ( v3 ) result = *((_DWORD *)v3 + 5); else result = 0; return result; } // 86FEB8: using guessed type int __security_cookie; //----- (00650320) -------------------------------------------------------- int __thiscall sub_650320(int this) { return *(_DWORD *)(this + 4) + 8; } //----- (00650330) -------------------------------------------------------- int __thiscall sub_650330(int this, int a2) { int result; // eax@1 result = a2; *(_DWORD *)(this + 4) = a2; return result; } //----- (00650340) -------------------------------------------------------- int __thiscall sub_650340(int this, int a2) { *(_DWORD *)(this + 8) = a2; return sub_428740(*(_DWORD *)(this + 4)); } //----- (00650360) -------------------------------------------------------- char __thiscall sub_650360(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@2 int v5; // ST00_4@3 v2 = this; v3 = sub_64A3F0((void *)a2, 0); if ( v3 ) { v5 = *((_DWORD *)v2 + 2); *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)v5 = 0; strncpy((char *)v5, (const char *)v3, 0x14u); result = 1; } else { sub_64A030(a2, (int)"Cannot read index data"); result = 0; } return result; } //----- (006503C0) -------------------------------------------------------- bool __thiscall sub_6503C0(int this, int a2, int a3) { int v3; // eax@1 v3 = *(_DWORD *)(this + 8); return *(_DWORD *)a3 == *(_DWORD *)v3 && *(_DWORD *)(a3 + 4) == *(_DWORD *)(v3 + 4) && *(_DWORD *)(a3 + 8) == *(_DWORD *)(v3 + 8) && *(_DWORD *)(a3 + 12) == *(_DWORD *)(v3 + 12) && *(_DWORD *)(a3 + 16) == *(_DWORD *)(v3 + 16); } //----- (00650400) -------------------------------------------------------- char __thiscall sub_650400(int this, const char *a2, int a3) { char result; // al@2 if ( strcmp(*(const char **)(this + 8), a2) ) result = 0; else result = 1; return result; } //----- (00650450) -------------------------------------------------------- signed int __cdecl sub_650450() { return 2; } //----- (00650460) -------------------------------------------------------- char __thiscall sub_650460(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@3 char v5; // [sp+Bh] [bp-1h]@1 v2 = this; v5 = 0; v3 = sub_64A2A0(a2, (int)&v5); if ( v5 && v3 < 256 ) { **((_BYTE **)v2 + 2) = v3; result = 1; } else { sub_64A030(a2, (int)"Cannot read byte data"); result = 0; } return result; } //----- (006504B0) -------------------------------------------------------- bool __thiscall sub_6504B0(void *this, const char *a2, int a3) { void *v3; // esi@1 v3 = this; sscanf(a2, "%d", &a2); return a2 == (const char *)**((_BYTE **)v3 + 2); } //----- (006504E0) -------------------------------------------------------- char __thiscall sub_6504E0(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@3 char v5; // [sp+Bh] [bp-1h]@1 v2 = this; v5 = 0; v3 = sub_64A2A0(a2, (int)&v5); if ( v5 && v3 < 65536 ) { **((_WORD **)v2 + 2) = v3; result = 1; } else { sub_64A030(a2, (int)"Cannot read word data"); result = 0; } return result; } //----- (00650530) -------------------------------------------------------- bool __thiscall sub_650530(void *this, const char *a2, int a3) { void *v3; // esi@1 v3 = this; sscanf(a2, "%d", &a2); return a2 == (const char *)**((_WORD **)v3 + 2); } //----- (00650560) -------------------------------------------------------- int __thiscall sub_650560(int this) { return *(_DWORD *)(this + 8); } //----- (00650580) -------------------------------------------------------- char __thiscall sub_650580(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 char result; // al@2 char v5; // [sp+Bh] [bp-1h]@1 v2 = this; v5 = 0; v3 = sub_64A2A0(a2, (int)&v5); if ( v5 ) { **((_DWORD **)v2 + 2) = v3; result = 1; } else { sub_64A030(a2, (int)"Cannot read dwrd data"); result = 0; } return result; } //----- (006505D0) -------------------------------------------------------- bool __thiscall sub_6505D0(void *this, const char *a2, int a3) { void *v3; // esi@1 v3 = this; sscanf(a2, "%d", &a2); return a2 == **((const char ***)v3 + 2); } //----- (00650600) -------------------------------------------------------- int __thiscall sub_650600(int this) { *(_DWORD *)(this + 2048) = 0; memset((void *)this, 0, 0x800u); return this; } //----- (00650620) -------------------------------------------------------- int __thiscall sub_650620(void *this, int a2) { int result; // eax@1 memcpy(this, (const void *)a2, 0x808u); result = 0; memset((void *)a2, 0, 0x800u); *(_DWORD *)(a2 + 2048) = 0; return result; } //----- (00650650) -------------------------------------------------------- int __thiscall sub_650650(int this) { return *(_DWORD *)(this + 2048); } //----- (00650660) -------------------------------------------------------- int __thiscall sub_650660(void *this, size_t a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; result = operator new(a2); *((_DWORD *)v2 + 512) = result; *((_DWORD *)v2 + 513) = 0; return result; } //----- (00650690) -------------------------------------------------------- int __thiscall sub_650690(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 4))(*(_DWORD *)(this + 2052) + *(_DWORD *)(this + 2048)); *(_DWORD *)(v2 + 2052) += result; return result; } //----- (006506C0) -------------------------------------------------------- int __thiscall sub_6506C0(void *this, int a2, __int16 a3) { void *v3; // edi@1 signed int v4; // esi@1 int result; // eax@4 v3 = this; v4 = 0; while ( *((_DWORD *)this + v4) ) { ++v4; if ( v4 >= 512 ) return 0; } switch ( a3 ) { case 1: result = operator new(0xCu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_708A38; *((_DWORD *)v3 + v4) = result; break; case 2: result = operator new(0xCu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_708A68; *((_DWORD *)v3 + v4) = result; break; case 3: result = operator new(0xCu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_708A80; *((_DWORD *)v3 + v4) = result; break; case 4: result = operator new(0xCu); if ( !result ) goto LABEL_16; *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_708AB0; *((_DWORD *)v3 + v4) = result; break; case 5: result = operator new(0xCu); if ( !result ) { LABEL_16: *((_DWORD *)v3 + v4) = 0; goto LABEL_17; } *(_DWORD *)(result + 8) = 0; *(_DWORD *)result = &off_708AE0; *((_DWORD *)v3 + v4) = result; break; default: LABEL_17: result = *((_DWORD *)v3 + v4); break; } return result; } // 708A38: using guessed type int (__stdcall *off_708A38)(int, int); // 708A68: using guessed type int (__stdcall *off_708A68)(int, int); // 708A80: using guessed type int (__stdcall *off_708A80)(char *, int); // 708AB0: using guessed type int (__stdcall *off_708AB0)(char *, int); // 708AE0: using guessed type int (__stdcall *off_708AE0)(char *, int); //----- (006507D0) -------------------------------------------------------- char __thiscall sub_6507D0(void *this, int a2) { void *v2; // ebx@1 signed int v3; // esi@1 int v4; // eax@2 v2 = this; v3 = 0; while ( 1 ) { v4 = *((_DWORD *)v2 + v3); if ( v4 ) { if ( !(unsigned __int8)(**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))a2)(a2, v4, v3) ) break; } ++v3; if ( v3 >= 512 ) return 1; } return 0; } //----- (00650810) -------------------------------------------------------- char __thiscall sub_650810(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 char result; // al@2 unsigned __int16 v5; // ax@3 int v6; // eax@3 v2 = this; v3 = sub_64A3F0((void *)a2, 0); if ( v3 ) { v5 = sub_428740(*((_DWORD *)v2 + 1)); memset(*((void **)v2 + 2), 0, v5); v6 = sub_428740(*((_DWORD *)v2 + 1)); strncpy(*((char **)v2 + 2), (const char *)v3, v6); result = 1; } else { sub_64A030(a2, (int)"Cannot read string data"); result = 0; } return result; } //----- (00650880) -------------------------------------------------------- void __thiscall sub_650880(int this) { int v1; // edi@1 signed int v2; // esi@3 int v3; // eax@4 void *v4; // ST00_4@5 v1 = this; if ( *(_DWORD *)(this + 2048) ) operator delete(*(void **)(this + 2048)); v2 = 0; do { v3 = *(_DWORD *)(v1 + 4 * v2); if ( v3 ) { v4 = *(void **)(v1 + 4 * v2); *(_DWORD *)v3 = off_708A20; operator delete(v4); } ++v2; } while ( v2 < 512 ); } // 708A20: using guessed type int (*off_708A20[5])(); //----- (006508D0) -------------------------------------------------------- int __cdecl sub_6508D0(int a1) { int result; // eax@1 memset(&StackFrame, 0, 0x108u); LODWORD(StackFrame.AddrPC.Offset) = *(_DWORD *)(a1 + 184); StackFrame.AddrPC.Offset = (unsigned int)StackFrame.AddrPC.Offset; StackFrame.AddrPC.Mode = 3; LODWORD(StackFrame.AddrStack.Offset) = *(_DWORD *)(a1 + 196); StackFrame.AddrStack.Offset = LODWORD(StackFrame.AddrStack.Offset); StackFrame.AddrStack.Mode = 3; result = *(_DWORD *)(a1 + 180); LODWORD(StackFrame.AddrFrame.Offset) = *(_DWORD *)(a1 + 180); StackFrame.AddrFrame.Offset = LODWORD(StackFrame.AddrFrame.Offset); StackFrame.AddrFrame.Mode = 3; return result; } //----- (00650950) -------------------------------------------------------- BOOL __stdcall ReadMemoryRoutine(int a1, LPCVOID lpBaseAddress, int a3, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead) { HANDLE v6; // eax@1 v6 = GetCurrentProcess(); return ReadProcessMemory(v6, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead); } //----- (00650980) -------------------------------------------------------- int __cdecl sub_650980(unsigned int a1) { int result; // eax@4 if ( a1 > 0xC0000005 ) { if ( a1 > 0xE06D7363 ) { LABEL_30: result = 0; } else { if ( a1 == -529697949 ) { result = (int)"Microsoft C++ Exception"; } else { switch ( a1 + 1073741818 ) { case 0x86u: result = (int)"EXCEPTION_ARRAY_BOUNDS_EXCEEDED"; break; case 0x87u: result = (int)"EXCEPTION_FLT_DENORMAL_OPERAND"; break; case 0x88u: result = (int)"EXCEPTION_FLT_DIVIDE_BY_ZERO"; break; case 0x89u: result = (int)"EXCEPTION_FLT_INEXACT_RESULT"; break; case 0x8Au: result = (int)"EXCEPTION_FLT_INVALID_OPERATION"; break; case 0x8Bu: result = (int)"EXCEPTION_FLT_OVERFLOW"; break; case 0x8Cu: result = (int)"EXCEPTION_FLT_STACK_CHECK"; break; case 0x8Du: result = (int)"EXCEPTION_FLT_UNDERFLOW"; break; case 0x8Eu: result = (int)"EXCEPTION_INT_DIVIDE_BY_ZERO"; break; case 0x8Fu: result = (int)"EXCEPTION_INT_OVERFLOW"; break; case 0x90u: result = (int)"EXCEPTION_PRIV_INSTRUCTION"; break; case 0u: result = (int)"EXCEPTION_IN_PAGE_ERROR"; break; case 0x17u: result = (int)"EXCEPTION_ILLEGAL_INSTRUCTION"; break; case 0x1Fu: result = (int)"EXCEPTION_NONCONTINUABLE_EXCEPTION"; break; case 0xF7u: result = (int)"EXCEPTION_STACK_OVERFLOW"; break; case 0x20u: result = (int)"EXCEPTION_INVALID_DISPOSITION"; break; case 2u: result = (int)"EXCEPTION_INVALID_HANDLE"; break; default: goto LABEL_30; } } } } else { if ( a1 == -1073741819 ) { result = (int)"EXCEPTION_ACCESS_VIOLATION"; } else { switch ( a1 ) { case 0x80000002u: result = (int)"EXCEPTION_DATATYPE_MISALIGNMENT"; break; case 0x80000003u: result = (int)"EXCEPTION_BREAKPOINT"; break; case 0x80000004u: result = (int)"EXCEPTION_SINGLE_STEP"; break; case 0x80000001u: result = (int)"EXCEPTION_GUARD_PAGE"; break; default: goto LABEL_30; } } } return result; } //----- (00650BD0) -------------------------------------------------------- void __cdecl sub_650BD0() { DWORD v0; // eax@2 HANDLE v1; // eax@2 if ( !dword_154D47E8 ) { v0 = SymGetOptions(); SymSetOptions(v0 | 0x10); v1 = GetCurrentProcess(); dword_154D47E8 = SymInitialize(v1, 0, 1); } } // 154D47E8: using guessed type int dword_154D47E8; //----- (00650C00) -------------------------------------------------------- void __cdecl sub_650C00() { HANDLE v0; // eax@2 if ( dword_154D47E8 == 1 ) { v0 = GetCurrentProcess(); SymCleanup(v0); dword_154D47E8 = 0; } } // 154D47E8: using guessed type int dword_154D47E8; //----- (00650C30) -------------------------------------------------------- int __userpurge sub_650C30(int a1, int a2) { HANDLE v2; // ST0C_4@1 HANDLE v3; // eax@1 DWORD64 v4; // ST20_8@3 HANDLE v5; // eax@3 int v6; // edx@3 int v7; // edi@3 int v8; // esi@5 char *v9; // eax@9 int v10; // eax@10 int v11; // edx@10 char *v12; // edi@10 char v13; // cl@11 int v14; // edx@12 char v15; // cl@13 int v16; // esi@14 DWORD64 v17; // ST18_8@16 HANDLE v18; // eax@16 int result; // eax@21 int v20; // eax@23 DWORD64 v21; // ST18_8@27 HANDLE v22; // eax@27 unsigned int v23; // [sp-10h] [bp-40h]@1 unsigned __int64 pdwDisplacement; // [sp+0h] [bp-30h]@16 int v25; // [sp+8h] [bp-28h]@3 int v26; // [sp+Ch] [bp-24h]@3 int v27; // [sp+14h] [bp-1Ch]@5 unsigned int *v28; // [sp+18h] [bp-18h]@1 int v29; // [sp+20h] [bp-10h]@1 int (__cdecl *v30)(PEXCEPTION_RECORD, PVOID, int); // [sp+24h] [bp-Ch]@1 unsigned int v31; // [sp+28h] [bp-8h]@1 int v32; // [sp+2Ch] [bp-4h]@1 int v33; // [sp+30h] [bp+0h]@1 v30 = _except_handler4; v29 = a1; v31 = __security_cookie ^ (unsigned int)&unk_745688; v23 = (unsigned int)&v33 ^ __security_cookie; v28 = &v23; v32 = 0; sub_650BD0(); v2 = GetCurrentThread(); v3 = GetCurrentProcess(); if ( StackWalk64( 0x14Cu, v3, v2, &StackFrame, &unk_154D4408, (PREAD_PROCESS_MEMORY_ROUTINE64)ReadMemoryRoutine, SymFunctionTableAccess64, SymGetModuleBase64, 0) && StackFrame.AddrFrame.Offset && ((v4 = StackFrame.AddrPC.Offset, v5 = GetCurrentProcess(), v7 = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v5, v4, HIDWORD(v4)), v25 = v7, v26 = v6, v7) || v6) ) { v27 = 0; v8 = wsprintfA(byte_154D2FF0, "%04X:%08X", dword_154D44C4, StackFrame.AddrPC.Offset); v27 = v8; if ( (a2 & 1) == 1 ) { v8 += wsprintfA( &byte_154D2FF0[v8], " (0x%08X 0x%08X 0x%08X 0x%08X)", StackFrame.Params[0], StackFrame.Params[1], StackFrame.Params[2], StackFrame.Params[3]); v27 = v8; } if ( (a2 & 2) == 2 ) { v8 += wsprintfA(&byte_154D2FF0[v8], ", "); v27 = v8; if ( (signed int)GetModuleFileNameA((HMODULE)v7, Filename, 0x800u) > 0 ) { v9 = strrchr(Filename, 92); if ( v9 ) { v10 = (int)(v9 + 1); v11 = v10; v12 = &byte_154D2FF0[v8]; do { v13 = *(_BYTE *)v11; *v12++ = *(_BYTE *)v11++; } while ( v13 ); v14 = v10 + 1; do v15 = *(_BYTE *)v10++; while ( v15 ); v16 = v10 - v14 + v8; v27 = v16; v8 = wsprintfA(&byte_154D2FF0[v16], ", ") + v16; v27 = v8; } } } if ( (a2 & 4) == 4 ) { memset(&Symbol, 0, 0x400u); Symbol.SizeOfStruct = 32; Symbol.MaxNameLength = 992; Symbol.Address = StackFrame.AddrPC.Offset; v17 = StackFrame.AddrPC.Offset; v18 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v18, v17, &pdwDisplacement, &Symbol) != 1 ) return (int)byte_154D2FF0; if ( a2 & 0xFFFFFFFB ) { v8 += wsprintfA(&byte_154D2FF0[v8], word_6A2BF8); v27 = v8; } if ( lstrlenA(Symbol.Name) > 1486 - v8 ) { lstrcpynA(&byte_154D2FF0[v8], Symbol.Name, 2047 - v8); return (int)byte_154D2FF0; } if ( pdwDisplacement <= HIDWORD(pdwDisplacement) ) v20 = wsprintfA(&byte_154D2FF0[v8], " %s ", Symbol.Name); else v20 = wsprintfA(&byte_154D2FF0[v8], " %s()+%04d byte(s)", Symbol.Name, pdwDisplacement); v8 += v20; v27 = v8; } if ( (a2 & 8) == 8 ) { Line64.Key = 0; Line64.LineNumber = 0; Line64.FileName = 0; Line64.Address = 0i64; Line64.SizeOfStruct = 24; v21 = StackFrame.AddrPC.Offset; v22 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v22, v21, (PDWORD)&v26, &Line64) == 1 ) { if ( a2 & 0xFFFFFFF7 ) { v8 += wsprintfA(&byte_154D2FF0[v8], ","); v27 = v8; } if ( lstrlenA(Line64.FileName) > 1738 - v8 ) { lstrcpynA(&byte_154D2FF0[v8], Line64.FileName, 2047 - v8); return (int)byte_154D2FF0; } if ( v26 ) { v27 = wsprintfA(&byte_154D2FF0[v8], " %s, line %04d+%04d byte(s)", Line64.FileName, Line64.LineNumber, v26) + v8; return (int)byte_154D2FF0; } v27 = wsprintfA(&byte_154D2FF0[v8], " %s, line %04d", Line64.FileName, Line64.LineNumber) + v8; } } result = (int)byte_154D2FF0; } else { result = 0; } return result; } // 69E2F0: invalid function type has been ignored // 86FEB8: using guessed type int __security_cookie; // 154D44C4: using guessed type int dword_154D44C4; //----- (00651030) -------------------------------------------------------- int __userpurge sub_651030(int a1, const void *lp) { int v3; // esi@3 HMODULE v4; // eax@3 char *v5; // eax@4 int v6; // eax@5 int v7; // edx@5 int v8; // edi@5 char v9; // cl@6 int v10; // edx@7 char v11; // cl@8 int v12; // esi@10 int v13; // ebx@10 int v14; // esi@10 DWORD v15; // eax@12 const void *v16; // ebx@12 DWORD v17; // ST10_4@13 HMODULE v18; // eax@13 int v19; // esi@14 int v20; // esi@14 int v21; // esi@14 __int64 v22; // ST1C_8@14 HANDLE v23; // eax@14 int v24; // eax@14 int v25; // edx@14 char *v26; // eax@18 char *v27; // ebx@18 int v28; // edx@19 char *v29; // eax@19 char v30; // cl@20 int v31; // eax@21 char v32; // cl@22 int v33; // esi@25 int v34; // esi@25 DWORD64 v35; // ST14_8@25 HANDLE v36; // eax@25 int v37; // esi@26 int v38; // eax@29 int v39; // esi@31 DWORD64 v40; // ST14_8@31 HANDLE v41; // eax@31 int v42; // esi@32 unsigned int v43; // [sp-10h] [bp-44h]@1 unsigned __int64 pdwDisplacement; // [sp+0h] [bp-34h]@25 int v45; // [sp+8h] [bp-2Ch]@10 int v46; // [sp+Ch] [bp-28h]@10 int v47; // [sp+10h] [bp-24h]@31 int v48; // [sp+18h] [bp-1Ch]@3 unsigned int *v49; // [sp+1Ch] [bp-18h]@1 int v50; // [sp+24h] [bp-10h]@1 int (__cdecl *v51)(PEXCEPTION_RECORD, PVOID, int); // [sp+28h] [bp-Ch]@1 unsigned int v52; // [sp+2Ch] [bp-8h]@1 int v53; // [sp+30h] [bp-4h]@1 int v54; // [sp+34h] [bp+0h]@1 v53 = -2; v51 = _except_handler4; v50 = a1; v52 = __security_cookie ^ (unsigned int)&unk_7456A8; v43 = (unsigned int)&v54 ^ __security_cookie; v49 = &v43; if ( IsBadReadPtr(lp, 8u) == 1 ) { OutputDebugStringA("Bad parameter to GetFaultReason\n"); return 0; } v3 = 0; v53 = 0; sub_650BD0(); v48 = 0; v4 = GetModuleHandleA(0); if ( (signed int)GetModuleFileNameA(v4, Filename, 0x800u) > 0 ) { v5 = strrchr(Filename, 92); if ( v5 ) { v6 = (int)(v5 + 1); v7 = v6; v8 = (int)byte_154D2FF0; do { v9 = *(_BYTE *)v7; *(_BYTE *)v8++ = *(_BYTE *)v7++; } while ( v9 ); v10 = v6 + 1; do v11 = *(_BYTE *)v6++; while ( v11 ); v3 = v6 - v10; v48 = v6 - v10; } } v12 = wsprintfA(&byte_154D2FF0[v3], " caused an: ", v43) + v3; v48 = v12; v13 = sub_650980(**(_DWORD **)lp); v45 = v13; v46 = 0; v14 = wsprintfA(&byte_154D2FF0[v12], "< ") + v12; v48 = v14; if ( v13 || v46 ) { v15 = wsprintfA(&byte_154D2FF0[v14], "%s", v13, v46); v16 = lp; } else { v16 = lp; v17 = **(_DWORD **)lp; v18 = GetModuleHandleA("NTDLL.DLL"); v15 = FormatMessageA(0xA00u, v18, v17, 0, &byte_154D2FF0[v14], 0x800u, 0); } v19 = v15 + v14; v48 = v19; v20 = wsprintfA(&byte_154D2FF0[v19], " >") + v19; v48 = v20; v21 = wsprintfA(&byte_154D2FF0[v20], "\nIn module: ") + v20; v48 = v21; v22 = *(_DWORD *)(*(_DWORD *)v16 + 12); v23 = GetCurrentProcess(); v24 = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v23, v22, HIDWORD(v22)); v45 = v24; v46 = v25; if ( v24 || v25 ) { if ( (signed int)GetModuleFileNameA((HMODULE)v24, Filename, 0x800u) > 0 ) { v26 = strrchr(Filename, 92); v27 = v26; if ( v26 ) { v28 = (int)(v26 + 1); v29 = &byte_154D2FF0[v21]; do { v30 = *(_BYTE *)v28; *v29++ = *(_BYTE *)v28++; } while ( v30 ); v31 = (int)(v27 + 1); do v32 = *(_BYTE *)v31++; while ( v32 ); v21 += v31 - (_DWORD)(v27 + 2); v48 = v21; } v16 = lp; } } else { v21 += wsprintfA(&byte_154D2FF0[v21], ""); v48 = v21; } v33 = wsprintfA( &byte_154D2FF0[v21], " at: < %04X:%08X >", *(_DWORD *)(*((_DWORD *)v16 + 1) + 188), *(_DWORD *)(*(_DWORD *)v16 + 12)) + v21; v48 = v33; v34 = wsprintfA(&byte_154D2FF0[v33], "\n") + v33; v48 = v34; memset(&Symbol, 0, 0x400u); Symbol.SizeOfStruct = 32; Symbol.MaxNameLength = 992; v35 = *(_DWORD *)(*(_DWORD *)v16 + 12); v36 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v36, v35, &pdwDisplacement, &Symbol) == 1 ) { v37 = wsprintfA(&byte_154D2FF0[v34], ",") + v34; v48 = v37; if ( lstrlenA(Symbol.Name) > 1486 - v37 ) { lstrcpynA(&byte_154D2FF0[v37], Symbol.Name, 2047 - v37); return (int)byte_154D2FF0; } v38 = pdwDisplacement <= HIDWORD(pdwDisplacement) ? wsprintfA(&byte_154D2FF0[v37], " %s ", Symbol.Name) : wsprintfA(&byte_154D2FF0[v37], " %s()+%04d byte(s)", Symbol.Name, pdwDisplacement); v39 = v38 + v37; v48 = v39; Line64.Key = 0; Line64.LineNumber = 0; Line64.FileName = 0; Line64.Address = 0i64; Line64.SizeOfStruct = 24; v40 = *(_DWORD *)(*(_DWORD *)v16 + 12); v41 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v41, v40, (PDWORD)&v47, &Line64) == 1 ) { v42 = wsprintfA(&byte_154D2FF0[v39], ",") + v39; v48 = v42; if ( lstrlenA(Line64.FileName) > 1738 - v42 ) { lstrcpynA(&byte_154D2FF0[v42], Line64.FileName, 2047 - v42); return (int)byte_154D2FF0; } if ( v47 ) { v48 = wsprintfA(&byte_154D2FF0[v42], " %s, line %04d+%04d byte(s)", Line64.FileName, Line64.LineNumber, v47) + v42; return (int)byte_154D2FF0; } v48 = wsprintfA(&byte_154D2FF0[v42], " %s, line %04d", Line64.FileName, Line64.LineNumber) + v42; } } return (int)byte_154D2FF0; } // 69E2F0: invalid function type has been ignored // 86FEB8: using guessed type int __security_cookie; //----- (00651480) -------------------------------------------------------- int __stdcall sub_651480(int a1, void *lp) { int result; // eax@2 int v3; // eax@3 if ( IsBadReadPtr(lp, 4u) == 1 ) { OutputDebugStringA("GetFirstStackTraceString - invalid pExPtrs!\n"); result = 0; } else { v3 = sub_6508D0(*((_DWORD *)lp + 1)); memcpy(&unk_154D4408, *((const void **)lp + 1), 0x2CCu); result = sub_650C30(v3, a1); } return result; } //----- (006514E0) -------------------------------------------------------- int __stdcall sub_6514E0(int a1, int a2) { return sub_650C30(a1, a1); } //----- (006514F0) -------------------------------------------------------- LONG __thiscall sub_6514F0(void *Destination) { void *v1; // esi@1 signed int v2; // ebx@1 LONG result; // eax@2 signed int v4; // [sp+Ch] [bp-4h]@4 v1 = Destination; v2 = 3999; while ( 1 ) { result = InterlockedCompareExchange((volatile LONG *)v1, 1, 0); if ( !result ) break; _mm_pause(); --v2; if ( v2 < 0 ) { v4 = 3999; while ( 1 ) { SwitchToThread(); result = InterlockedCompareExchange((volatile LONG *)v1, 1, 0); if ( !result ) break; --v4; if ( v4 < 0 ) { do { Sleep(0x3E8u); result = InterlockedCompareExchange((volatile LONG *)v1, 1, 0); } while ( result ); return result; } } return result; } } return result; } //----- (00651560) -------------------------------------------------------- int __thiscall sub_651560(int this) { int v1; // ebx@1 signed int v2; // edi@1 int v3; // eax@2 int v4; // esi@2 v1 = this; v2 = 0; *(_DWORD *)(this + 2052) = 0; *(_DWORD *)(this + 2048) = 0; do { v3 = operator new(0x2010u); v4 = v3; if ( v3 ) { *(_DWORD *)v3 = &off_708ED8; InterlockedIncrement(&dword_154D47F8); } else { v4 = 0; } *(_DWORD *)(v1 + 4 * v2) = v4; if ( !v4 ) loc_6391B0("IOBufferContainer::IOBufferContainer"); ++v2; } while ( v2 < 512 ); return v1; } // 708ED8: using guessed type int (__thiscall *off_708ED8)(void *, char); //----- (006515C0) -------------------------------------------------------- void *__thiscall sub_6515C0(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_708ED8; if ( a2 & 1 ) operator delete(this); return v2; } // 708ED8: using guessed type int (__thiscall *off_708ED8)(void *, char); //----- (006515F0) -------------------------------------------------------- int __cdecl sub_6515F0() { __int32 v0; // esi@1 int v1; // edi@3 unsigned int v2; // esi@5 char *v3; // ebx@5 int v4; // eax@7 int v5; // eax@8 int v6; // esi@8 volatile LONG *v8; // [sp-8h] [bp-14h]@3 LONG v9; // [sp-4h] [bp-10h]@3 v0 = InterlockedIncrement(&Addend) & 0xF; if ( InterlockedCompareExchange(&Destination + 2 * v0, 1, 0) ) sub_6514F0(&Destination + 2 * v0); v1 = dword_154DC888[2 * v0]; v9 = 0; v8 = &Destination + 2 * v0; if ( v1 ) { dword_154DC888[2 * v0] = *(_DWORD *)(v1 + 8204); } else { InterlockedExchange(v8, 0); v2 = 2056 * v0; v3 = (char *)&unk_154D500C + v2; if ( InterlockedCompareExchange((volatile LONG *)((char *)&unk_154D500C + v2), 1, 0) ) sub_6514F0((char *)&unk_154D500C + v2); v4 = dword_154D5008[v2 / 4]; if ( v4 < 512 ) { v1 = *(int *)((char *)&dword_154D4808[v4] + v2); dword_154D5008[v2 / 4] = v4 + 1; } else { v5 = operator new(0x2010u); v6 = v5; if ( v5 ) { *(_DWORD *)v5 = &off_708ED8; InterlockedIncrement(&dword_154D47F8); v1 = v6; } else { v1 = 0; } } v9 = 0; v8 = (volatile LONG *)v3; } InterlockedExchange(v8, v9); *(_DWORD *)(v1 + 8196) = 0; *(_DWORD *)(v1 + 8200) = 1; *(_DWORD *)(v1 + 8204) = 0; InterlockedIncrement(&dword_154D47FC); return v1; } // 708ED8: using guessed type int (__thiscall *off_708ED8)(void *, char); // 154D4808: using guessed type int dword_154D4808[]; // 154D5008: using guessed type int dword_154D5008[]; // 154DC888: using guessed type int dword_154DC888[]; //----- (006516E0) -------------------------------------------------------- LONG __thiscall sub_6516E0(void *this) { void *v1; // ebx@1 int *v2; // esi@1 v1 = this; InterlockedDecrement(&dword_154D47FC); v2 = &dword_154DC888[2 * (InterlockedDecrement(&dword_154D4800) & 0xF)]; if ( InterlockedCompareExchange((volatile LONG *)v2 + 1, 1, 0) ) sub_6514F0(v2 + 1); *((_DWORD *)v1 + 2051) = *v2; *v2 = (int)v1; return InterlockedExchange((volatile LONG *)v2 + 1, 0); } // 154DC888: using guessed type int dword_154DC888[]; //----- (00651740) -------------------------------------------------------- signed int __stdcall sub_651740(int a1, int a2) { return 1; } //----- (00651750) -------------------------------------------------------- void *__thiscall sub_651750(void *this) { void *result; // eax@1 char *v2; // ecx@1 result = this; v2 = (char *)this + 4; *(_DWORD *)v2 = &off_708F08; *(_DWORD *)result = v2; return result; } // 708F08: using guessed type int (__stdcall *off_708F08)(int, int); //----- (0065176E) -------------------------------------------------------- void *__thiscall sub_65176E(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_708F10; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 708F10: using guessed type int (__thiscall *off_708F10)(void *, char); //----- (0065178B) -------------------------------------------------------- void __stdcall sub_65178B(int a1) { int (__thiscall **v1)(void *, char); // [sp+0h] [bp-Ch]@2 std::exception::exception(&a1); v1 = &off_708F1C; _CxxThrowException(&v1, &unk_7456E0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 708F1C: using guessed type int (__thiscall *off_708F1C)(void *, char); //----- (006517BB) -------------------------------------------------------- void *__thiscall sub_6517BB(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_708F1C; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 708F1C: using guessed type int (__thiscall *off_708F1C)(void *, char); //----- (006517D8) -------------------------------------------------------- void __stdcall sub_6517D8(int a1) { int (__thiscall **v1)(void *, char); // [sp+0h] [bp-Ch]@2 std::exception::exception(&a1); v1 = &off_708F28; _CxxThrowException(&v1, &unk_74571C); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 708F28: using guessed type int (__thiscall *off_708F28)(void *, char); //----- (00651808) -------------------------------------------------------- void *__thiscall sub_651808(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_708F28; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 708F28: using guessed type int (__thiscall *off_708F28)(void *, char); //----- (00651825) -------------------------------------------------------- void *__thiscall sub_651825(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_653970(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00651AEE) -------------------------------------------------------- int __cdecl sub_651AEE() { return dword_154DC978; } // 154DC978: using guessed type int dword_154DC978; //----- (00651E1F) -------------------------------------------------------- int __thiscall sub_651E1F(int this) { return *(_DWORD *)(this + 4); } //----- (00651E23) -------------------------------------------------------- int __thiscall sub_651E23(int this) { return *(_DWORD *)(this + 8); } //----- (00651E3B) -------------------------------------------------------- int (__thiscall **__cdecl sub_651E3B())(void *, char) { return &off_86FE14; } // 86FE14: using guessed type int (__thiscall *off_86FE14)(void *, char); //----- (00651E41) -------------------------------------------------------- void *__thiscall sub_651E41(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_708F40; if ( a2 & 1 ) operator delete(this); return v2; } // 708F40: using guessed type int (__thiscall *off_708F40)(void *, char); //----- (00652657) -------------------------------------------------------- FILE *__cdecl sub_652657(const char *a1, int a2, int a3) { return _fsopen(a1, (&off_709088)[4 * a2], a3); } //----- (00652676) -------------------------------------------------------- FILE *__cdecl sub_652676(const char *a1, int a2, int a3) { int v3; // ecx@1 int v4; // eax@1 int v5; // ecx@5 int v6; // esi@5 FILE *v8; // eax@12 FILE *v9; // eax@15 FILE *v10; // esi@15 FILE *v11; // [sp-4h] [bp-Ch]@13 v3 = a2; v4 = 1; if ( a2 & 0x40 ) v3 = a2 | 1; if ( v3 & 8 ) v3 |= 2u; v5 = v3 & 0xFFFFFF3B; v6 = 0; do { if ( v4 == v5 ) break; v4 = dword_7090D8[v6++]; } while ( v4 ); if ( !dword_7090D4[v6] ) return 0; if ( a2 & 0x80 ) { if ( v5 & 0xA ) { v8 = sub_652657(a1, 0, a3); if ( v8 ) { v11 = v8; LABEL_14: fclose(v11); return 0; } } } v9 = sub_652657(a1, v6, a3); v10 = v9; if ( !v9 ) return 0; if ( a2 & 4 && fseek(v9, 0, 2) ) { v11 = v10; goto LABEL_14; } return v10; } // 7090D4: using guessed type int dword_7090D4[]; // 7090D8: using guessed type int dword_7090D8[]; //----- (0065271E) -------------------------------------------------------- FILE *__cdecl sub_65271E(const char *a1, int a2, int a3) { return sub_652676(a1, a2, a3); } //----- (006527AC) -------------------------------------------------------- void __cdecl sub_6527AC(LPCRITICAL_SECTION lpCriticalSection) { LeaveCriticalSection(lpCriticalSection); } //----- (00652BBA) -------------------------------------------------------- int __thiscall sub_652BBA(void *this) { *(_DWORD *)this = &off_709114; return sub_65FE1B((int)this); } // 709114: using guessed type int (__thiscall *off_709114)(void *, char); //----- (00652BCA) -------------------------------------------------------- void *__thiscall sub_652BCA(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_652BBA(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (006530A4) -------------------------------------------------------- void __cdecl sub_6530A4(void *a1) { operator delete(a1); } //----- (00653952) -------------------------------------------------------- void *__thiscall sub_653952(void *this, char a2) { void *v2; // esi@1 v2 = this; std::exception::exception(&a2); *(_DWORD *)v2 = &off_709140; return v2; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 709140: using guessed type int (__thiscall *off_709140)(void *, char); //----- (00653970) -------------------------------------------------------- int __thiscall sub_653970(void *this) { *(_DWORD *)this = &off_709120; return std::exception::_Tidy(); } // 6538D8: using guessed type int std__exception___Tidy(void); // 709120: using guessed type int (__thiscall *off_709120)(void *, char); //----- (0065397B) -------------------------------------------------------- void *__thiscall sub_65397B(void *this, char a2) { void *v2; // esi@1 v2 = this; std::exception::exception(&a2); *(_DWORD *)v2 = &off_70914C; return v2; } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 70914C: using guessed type int (__thiscall *off_70914C)(void *, char); //----- (00653999) -------------------------------------------------------- void *__thiscall sub_653999(void *this, char a2) { void *v2; // esi@1 v2 = this; sub_65397B(this, a2); *(_DWORD *)v2 = &off_709158; return v2; } // 709158: using guessed type int (__thiscall *off_709158)(void *, char); //----- (006539B6) -------------------------------------------------------- void *__thiscall sub_6539B6(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_709120; std::exception::_Tidy(); if ( a2 & 1 ) operator delete(v2); return v2; } // 6538D8: using guessed type int std__exception___Tidy(void); // 709120: using guessed type int (__thiscall *off_709120)(void *, char); //----- (00653A02) -------------------------------------------------------- void *__thiscall sub_653A02(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_709140; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 709140: using guessed type int (__thiscall *off_709140)(void *, char); //----- (00653A1F) -------------------------------------------------------- void *__thiscall sub_653A1F(void *this, int a2) { void *v2; // esi@1 v2 = this; std::exception::exception(a2); *(_DWORD *)v2 = &off_70914C; return v2; } // 6539DD: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 70914C: using guessed type int (__thiscall *off_70914C)(void *, char); //----- (00653A3C) -------------------------------------------------------- void *__thiscall sub_653A3C(void *this, int a2) { void *v2; // esi@1 v2 = this; sub_653A1F(this, a2); *(_DWORD *)v2 = &off_709158; return v2; } // 709158: using guessed type int (__thiscall *off_709158)(void *, char); //----- (00654AA7) -------------------------------------------------------- int __cdecl sub_654AA7() { return flsall(1); } // 65497A: using guessed type _DWORD __cdecl flsall(_DWORD); //----- (00654AB0) -------------------------------------------------------- signed int __cdecl sub_654AB0(int a1, FILE *a2) { signed int result; // eax@2 int v3; // eax@4 int v4; // ecx@6 int v5; // eax@11 bool v6; // sf@16 signed int v7; // [sp+10h] [bp-1Ch]@1 v7 = 0; if ( a2 != 0 ) { _lock_file(a2); if ( !(a2->_flag & 0x40) ) { v3 = _fileno(a2); if ( v3 == -1 || v3 == -2 ) v4 = (int)&unk_8705D0; else v4 = dword_154DD920[v3 >> 5] + ((v3 & 0x1F) << 6); if ( *(_BYTE *)(v4 + 36) & 0x7F || (v3 == -1 || v3 == -2 ? (v5 = (int)&unk_8705D0) : (v5 = dword_154DD920[v3 >> 5] + ((v3 & 0x1F) << 6)), *(_BYTE *)(v5 + 36) & 0x80) ) { *_errno() = 22; _invalid_parameter_noinfo(); v7 = -1; } } if ( !v7 ) { v6 = a2->_cnt-- - 1 < 0; if ( v6 ) _flsbuf(a1, a2); else *a2->_ptr++ = a1; } result = _unlock_file(a2); } else { *_errno() = 22; _invalid_parameter_noinfo(); result = -1; } return result; } // 6587D5: using guessed type _DWORD __cdecl _lock_file(_DWORD); // 658848: using guessed type _DWORD __cdecl _unlock_file(_DWORD); // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 154DD920: using guessed type int dword_154DD920[]; //----- (00656AE5) -------------------------------------------------------- signed int __cdecl sub_656AE5(FILE *a1) { signed int result; // eax@2 int v2; // eax@4 int v3; // ecx@6 int v4; // eax@11 bool v5; // sf@16 signed int v6; // [sp+10h] [bp-1Ch]@1 v6 = 0; if ( a1 != 0 ) { _lock_file(a1); if ( !(a1->_flag & 0x40) ) { v2 = _fileno(a1); if ( v2 == -1 || v2 == -2 ) v3 = (int)&unk_8705D0; else v3 = dword_154DD920[v2 >> 5] + ((v2 & 0x1F) << 6); if ( *(_BYTE *)(v3 + 36) & 0x7F || (v2 == -1 || v2 == -2 ? (v4 = (int)&unk_8705D0) : (v4 = dword_154DD920[v2 >> 5] + ((v2 & 0x1F) << 6)), *(_BYTE *)(v4 + 36) & 0x80) ) { *_errno() = 22; _invalid_parameter_noinfo(); v6 = -1; } } if ( !v6 ) { v5 = a1->_cnt-- - 1 < 0; if ( v5 ) _filbuf(a1); else ++a1->_ptr; } result = _unlock_file(a1); } else { *_errno() = 22; _invalid_parameter_noinfo(); result = -1; } return result; } // 6587D5: using guessed type _DWORD __cdecl _lock_file(_DWORD); // 658848: using guessed type _DWORD __cdecl _unlock_file(_DWORD); // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 154DD920: using guessed type int dword_154DD920[]; //----- (00657F7C) -------------------------------------------------------- int __cdecl sub_657F7C(LPCSTR Src) { _lock(7); _putenv_helper(Src, 0); return _unlock(7); } // 663B44: using guessed type _DWORD __cdecl _unlock(_DWORD); // 663C1D: using guessed type _DWORD __cdecl _lock(_DWORD); //----- (00658048) -------------------------------------------------------- int __cdecl sub_658048(char *Str) { int result; // eax@2 if ( Str && strnlen(Str, 0x7FFFu) < 0x7FFF ) { _lock(7); _getenv_helper_nolock(Str); result = _unlock(7); } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 0; } return result; } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 663B44: using guessed type _DWORD __cdecl _unlock(_DWORD); // 663C1D: using guessed type _DWORD __cdecl _lock(_DWORD); //----- (006586FE) -------------------------------------------------------- void **__cdecl sub_6586FE() { return &off_870130; } // 870130: using guessed type void *off_870130; //----- (0065A6C8) -------------------------------------------------------- int __thiscall sub_65A6C8(void *this) { return _cintrindisp1(this, &unk_70FB3A); } // 66AF8E: using guessed type int __fastcall _cintrindisp1(_DWORD, _DWORD); //----- (0065A6D2) -------------------------------------------------------- void __cdecl sub_65A6D2() { JUMPOUT(loc_65A6CD); } // 65A6CD: using guessed type int loc_65A6CD(); //----- (0065A6D9) -------------------------------------------------------- void __cdecl sub_65A6D9() { JUMPOUT(loc_65A6CD); } // 65A6CD: using guessed type int loc_65A6CD(); //----- (0065AABA) -------------------------------------------------------- int __thiscall sub_65AABA(void *this) { return _cintrindisp2(this, &unk_714270); } // 66AF50: using guessed type int __fastcall _cintrindisp2(_DWORD, _DWORD); //----- (0065B79E) -------------------------------------------------------- int __cdecl sub_65B79E(int a1) { int v1; // esi@1 errno_t v2; // eax@1 int v3; // ebx@8 int *v4; // eax@8 char *v6; // [sp+8h] [bp-14h]@4 int v7; // [sp+Ch] [bp-10h]@7 int v8; // [sp+10h] [bp-Ch]@7 int v9; // [sp+14h] [bp-8h]@7 void *PBuffer; // [sp+18h] [bp-4h]@1 PBuffer = 0; v1 = 0; v2 = _dupenv_s((char **)&PBuffer, 0, "COMSPEC"); if ( v2 && v2 == 22 ) _invoke_watson(0, 0, 0, 0, 0); v6 = (char *)PBuffer; if ( !a1 ) { if ( PBuffer ) v1 = _access_s((LPCSTR)PBuffer, 0) == 0; goto LABEL_14; } v7 = (int)&unk_709380; v8 = a1; v9 = 0; if ( !PBuffer ) { LABEL_13: v6 = "cmd.exe"; v1 = _spawnvpe(0, "cmd.exe", (const char *const *)&v6, 0); goto LABEL_14; } v3 = *_errno(); *_errno() = 0; v1 = _spawnve(0, v6, (const char *const *)&v6, 0); v4 = _errno(); if ( v1 != -1 ) { *v4 = v3; goto LABEL_14; } if ( *v4 == 2 || *_errno() == 13 ) { *_errno() = v3; goto LABEL_13; } LABEL_14: free(PBuffer); return v1; } // 65FCEF: using guessed type int __cdecl _invoke_watson(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (0065D284) -------------------------------------------------------- signed int __cdecl sub_65D284(int a1, int a2) { signed int result; // eax@2 void **v3; // eax@3 void **v4; // eax@3 int v5; // edi@3 void **v6; // eax@3 void **v7; // eax@3 void **v8; // eax@3 if ( a1 != 0 ) { v3 = sub_6586FE(); _lock_file2(1, v3 + 8); v4 = sub_6586FE(); v5 = _stbuf((FILE *)v4 + 1); v6 = sub_6586FE(); _output_l((FILE *)v6 + 1, a1, 0, (int)&a2); v7 = sub_6586FE(); _ftbuf(v5, (FILE *)v7 + 1); v8 = sub_6586FE(); result = _unlock_file2(1, v8 + 8); } else { *_errno() = 22; _invalid_parameter_noinfo(); result = -1; } return result; } // 658816: using guessed type _DWORD __cdecl _lock_file2(_DWORD, _DWORD); // 658884: using guessed type _DWORD __cdecl _unlock_file2(_DWORD, _DWORD); // 65FD41: using guessed type int _invalid_parameter_noinfo(void); //----- (0065EDCB) -------------------------------------------------------- int __thiscall sub_65EDCB(void *this) { *(_DWORD *)this = &off_709CB0; return sub_653970(this); } // 709CB0: using guessed type int (__thiscall *off_709CB0)(void *, char); //----- (0065EDD6) -------------------------------------------------------- void *__thiscall sub_65EDD6(void *this, char a2) { void *v2; // esi@1 v2 = this; *(_DWORD *)this = &off_709CB0; sub_653970(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 709CB0: using guessed type int (__thiscall *off_709CB0)(void *, char); //----- (0065F107) -------------------------------------------------------- void __usercall sub_65F107(int a1) { *(_DWORD *)(_getptd() + 148) = *(_DWORD *)(a1 + 8); _CxxThrowException(0, 0); } // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6600C8: using guessed type int _getptd(void); //----- (0065FBB7) -------------------------------------------------------- void *__cdecl sub_65FBB7(void *a1) { void *result; // eax@1 result = a1; dword_154DCBD0 = a1; return result; } //----- (0065FE0B) -------------------------------------------------------- int __cdecl sub_65FE0B() { dword_154DDA20 = IsProcessorFeaturePresent(0xAu); return 0; } // 154DDA20: using guessed type int dword_154DDA20; //----- (0065FE1B) -------------------------------------------------------- int __cdecl sub_65FE1B(int a1) { int v1; // ecx@1 void *v2; // eax@2 void *v3; // edx@2 _lock(14); v1 = *(_DWORD *)(a1 + 4); if ( v1 ) { v2 = dword_154DCBD8; v3 = &unk_154DCBD4; while ( dword_154DCBD8 ) { if ( *(_DWORD *)dword_154DCBD8 == v1 ) { *((_DWORD *)v3 + 1) = *((_DWORD *)dword_154DCBD8 + 1); free(v2); break; } v3 = dword_154DCBD8; } free(*(void **)(a1 + 4)); *(_DWORD *)(a1 + 4) = 0; } return _unlock(14); } // 663B44: using guessed type _DWORD __cdecl _unlock(_DWORD); // 663C1D: using guessed type _DWORD __cdecl _lock(_DWORD); //----- (006625C7) -------------------------------------------------------- signed int __cdecl sub_6625C7(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_8704C0; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 8704C0: using guessed type int dword_8704C0; //----- (006625F4) -------------------------------------------------------- signed int __cdecl sub_6625F4(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_8704B8; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 8704B8: using guessed type int dword_8704B8; //----- (00662621) -------------------------------------------------------- int *__cdecl sub_662621() { return &dword_8704BC; } // 8704BC: using guessed type int dword_8704BC; //----- (00662627) -------------------------------------------------------- int *__cdecl sub_662627() { return &dword_8704C0; } // 8704C0: using guessed type int dword_8704C0; //----- (0066262D) -------------------------------------------------------- int *__cdecl sub_66262D() { return &dword_8704B8; } // 8704B8: using guessed type int dword_8704B8; //----- (00662633) -------------------------------------------------------- void **__cdecl sub_662633() { return &off_870548; } // 870548: using guessed type void *off_870548; //----- (00662DAA) -------------------------------------------------------- void *__cdecl sub_662DAA(void *a1) { void *result; // eax@1 result = a1; dword_154DCFD0 = a1; return result; } //----- (006638F6) -------------------------------------------------------- signed int __cdecl sub_6638F6(int a1, int a2, DWORD nNumberOfBytesToWrite) { int *v4; // edi@7 int v5; // esi@7 if ( a1 == -2 ) { *__doserrno() = 0; *_errno() = 9; return -1; } if ( a1 < 0 || a1 >= uNumber || (v4 = &dword_154DD920[a1 >> 5], v5 = (a1 & 0x1F) << 6, !(*(_BYTE *)(*v4 + v5 + 4) & 1)) ) { *__doserrno() = 0; *_errno() = 9; _invalid_parameter_noinfo(); return -1; } __lock_fhandle(a1); if ( *(_BYTE *)(*v4 + v5 + 4) & 1 ) { _write_nolock(a1, a2, nNumberOfBytesToWrite); } else { *_errno() = 9; *__doserrno() = 0; } return _unlock_fhandle(a1); } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 67189B: using guessed type _DWORD __cdecl __lock_fhandle(_DWORD); // 67193A: using guessed type _DWORD __cdecl _unlock_fhandle(_DWORD); // 154DD920: using guessed type int dword_154DD920[]; //----- (006669B1) -------------------------------------------------------- signed int __cdecl sub_6669B1(int a1, LONG lDistanceToMove, DWORD dwMoveMethod) { int *v4; // edi@7 int v5; // esi@7 if ( a1 == -2 ) { *__doserrno() = 0; *_errno() = 9; return -1; } if ( a1 < 0 || a1 >= uNumber || (v4 = &dword_154DD920[a1 >> 5], v5 = (a1 & 0x1F) << 6, !(*(_BYTE *)(*v4 + v5 + 4) & 1)) ) { *__doserrno() = 0; *_errno() = 9; _invalid_parameter_noinfo(); return -1; } __lock_fhandle(a1); if ( *(_BYTE *)(*v4 + v5 + 4) & 1 ) { _lseek_nolock(a1, lDistanceToMove, dwMoveMethod); } else { *_errno() = 9; *__doserrno() = 0; } return _unlock_fhandle(a1); } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 67189B: using guessed type _DWORD __cdecl __lock_fhandle(_DWORD); // 67193A: using guessed type _DWORD __cdecl _unlock_fhandle(_DWORD); // 154DD920: using guessed type int dword_154DD920[]; //----- (00666A85) -------------------------------------------------------- int __cdecl sub_666A85() { dword_154DD910 = IsProcessorFeaturePresent(0xAu); return 0; } // 154DD910: using guessed type int dword_154DD910; //----- (00667335) -------------------------------------------------------- int (__cdecl *__usercall sub_667335(int a1))(size_t) { *(_DWORD *)(a1 - 20) = 0; return loc_66732C; } // 66732C: using guessed type int __cdecl loc_66732C(size_t); //----- (0066860A) -------------------------------------------------------- PVOID __cdecl sub_66860A() { return DecodePointer(dword_154DD788); } //----- (006687C9) -------------------------------------------------------- int (*__cdecl sub_6687C9())(void) { int (*result)(void); // eax@1 unsigned int v1; // edi@1 result = (int (*)(void))&unk_72EF9C; v1 = (unsigned int)&unk_72EF9C; if ( &unk_72EF9C < &unk_72EF9C ) { do { result = *(int (**)(void))v1; if ( *(_DWORD *)v1 ) result = (int (*)(void))result(); v1 += 4; } while ( v1 < (unsigned int)&unk_72EF9C ); } return result; } //----- (006687EF) -------------------------------------------------------- int (*__cdecl sub_6687EF())(void) { int (*result)(void); // eax@1 unsigned int v1; // edi@1 result = (int (*)(void))&unk_72EFA4; v1 = (unsigned int)&unk_72EFA4; if ( &unk_72EFA4 < &unk_72EFA4 ) { do { result = *(int (**)(void))v1; if ( *(_DWORD *)v1 ) result = (int (*)(void))result(); v1 += 4; } while ( v1 < (unsigned int)&unk_72EFA4 ); } return result; } //----- (006690ED) -------------------------------------------------------- int __cdecl sub_6690ED(char *Str1, char *Str2, size_t MaxCount) { return _LN50_2(Str1, Str2, MaxCount, 0); } //----- (00669AD2) -------------------------------------------------------- _UNKNOWN *__cdecl sub_669AD2() { return &unk_871060; } //----- (00669AD8) -------------------------------------------------------- int __cdecl sub_669AD8() { return (int)off_870FB0; } // 870FB0: using guessed type char *off_870FB0[44]; //----- (0066ABA6) -------------------------------------------------------- int __cdecl sub_66ABA6(LPCSTR lpFileName, int a2, int a3, int a4, int a5, int a6) { int result; // eax@2 int v7; // eax@8 int v8; // [sp+18h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+1Ch] [bp-18h]@6 v8 = 0; if ( a5 == 0 || (*(_DWORD *)a5 = -1, lpFileName == 0) || a6 && a4 & 0xFFFFFE7F ) { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } else { ms_exc.disabled = 0; result = _tsopen_nolock((int)&v8, lpFileName, a2, a3, a4); ms_exc.disabled = -2; if ( v8 ) { if ( result ) { v7 = dword_154DD920[*(_DWORD *)a5 >> 5] + ((*(_DWORD *)a5 & 0x1F) << 6) + 4; *(_BYTE *)v7 &= 0xFEu; } result = _unlock_fhandle(*(_DWORD *)a5); } } return result; } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 67193A: using guessed type _DWORD __cdecl _unlock_fhandle(_DWORD); // 154DD920: using guessed type int dword_154DD920[]; //----- (0066AC6A) -------------------------------------------------------- int __cdecl sub_66AC6A(int a1, LPCSTR lpFileName, int a3, int a4, int a5) { return sub_66ABA6(lpFileName, a3, a4, a5, a1, 1); } //----- (00671D19) -------------------------------------------------------- int __cdecl sub_671D19(LPSTR lpBuffer, size_t a2) { _lock(7); _getdcwd_nolock(0, lpBuffer, a2); return _unlock(7); } // 663B44: using guessed type _DWORD __cdecl _unlock(_DWORD); // 663C1D: using guessed type _DWORD __cdecl _lock(_DWORD); //----- (00672AD5) -------------------------------------------------------- void __cdecl sub_672AD5() { dword_154DD908 = 0; } // 154DD908: using guessed type int dword_154DD908; //----- (00672EC3) -------------------------------------------------------- signed int __cdecl sub_672EC3(int a1, int a2, int a3) { signed int v3; // eax@1 char v6; // [sp+Ch] [bp-28h]@1 char v7; // [sp+10h] [bp-24h]@1 int v8; // [sp+18h] [bp-1Ch]@4 char v9; // [sp+1Ch] [bp-18h]@3 int v10; // [sp+20h] [bp-14h]@1 char v11; // [sp+24h] [bp-10h]@1 unsigned int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; _LocaleUpdate::_LocaleUpdate(a3); v10 = __strgtold12_l(&v11, &v6, a2, 0, 0, 0, 0, &v7); v3 = sub_67407B((int)&v11, a1); if ( v10 & 3 ) { if ( v10 & 1 ) goto LABEL_8; if ( v10 & 2 ) goto LABEL_3; } else { if ( v3 == 1 ) { LABEL_3: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 3; } if ( v3 == 2 ) { LABEL_8: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 4; } } if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 0; } // 654D44: using guessed type _DWORD __stdcall _LocaleUpdate___LocaleUpdate(_DWORD); // 6693F6: using guessed type _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00672F6B) -------------------------------------------------------- signed int __cdecl sub_672F6B(int a1, int a2, int a3) { signed int v3; // eax@1 char v6; // [sp+Ch] [bp-28h]@1 char v7; // [sp+10h] [bp-24h]@1 int v8; // [sp+18h] [bp-1Ch]@4 char v9; // [sp+1Ch] [bp-18h]@3 int v10; // [sp+20h] [bp-14h]@1 char v11; // [sp+24h] [bp-10h]@1 unsigned int v12; // [sp+30h] [bp-4h]@1 int v13; // [sp+34h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; _LocaleUpdate::_LocaleUpdate(a3); v10 = __strgtold12_l(&v11, &v6, a2, 0, 0, 0, 0, &v7); v3 = sub_6745CC((int)&v11, a1); if ( v10 & 3 ) { if ( v10 & 1 ) goto LABEL_8; if ( v10 & 2 ) goto LABEL_3; } else { if ( v3 == 1 ) { LABEL_3: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 3; } if ( v3 == 2 ) { LABEL_8: if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 4; } } if ( v9 ) *(_DWORD *)(v8 + 112) &= 0xFFFFFFFDu; return 0; } // 654D44: using guessed type _DWORD __stdcall _LocaleUpdate___LocaleUpdate(_DWORD); // 6693F6: using guessed type _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 86FEB8: using guessed type int __security_cookie; //----- (00673628) -------------------------------------------------------- int __cdecl sub_673628(int a1, int a2, int a3) { HMODULE v3; // eax@2 HMODULE v4; // ebx@2 FARPROC v5; // eax@3 FARPROC v6; // eax@4 FARPROC v7; // eax@4 FARPROC v8; // eax@4 FARPROC v9; // eax@5 int (*v10)(void); // edi@8 PVOID v11; // eax@8 PVOID v12; // ebx@8 int v13; // eax@10 int (*v14)(void); // eax@15 PVOID v15; // eax@18 PVOID v16; // eax@20 char v18; // [sp+Ch] [bp-24h]@11 int v19; // [sp+10h] [bp-20h]@1 int v20; // [sp+14h] [bp-1Ch]@1 void *v21; // [sp+18h] [bp-18h]@1 int v22; // [sp+1Ch] [bp-14h]@1 char v23; // [sp+20h] [bp-10h]@11 char v24; // [sp+28h] [bp-8h]@12 unsigned int v25; // [sp+2Ch] [bp-4h]@1 int v26; // [sp+30h] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v19 = a1; v20 = a2; v22 = 0; v21 = (void *)_encoded_null(); if ( !dword_154DD8F0 ) { v3 = LoadLibraryW(L"USER32.DLL"); v4 = v3; if ( !v3 || (v5 = GetProcAddress(v3, "MessageBoxW")) == 0 ) return 0; dword_154DD8F0 = EncodePointer(v5); v6 = GetProcAddress(v4, "GetActiveWindow"); dword_154DD8F4 = EncodePointer(v6); v7 = GetProcAddress(v4, "GetLastActivePopup"); dword_154DD8F8 = EncodePointer(v7); v8 = GetProcAddress(v4, "GetUserObjectInformationW"); dword_154DD900 = EncodePointer(v8); if ( dword_154DD900 ) { v9 = GetProcAddress(v4, "GetProcessWindowStation"); dword_154DD8FC = EncodePointer(v9); } } if ( dword_154DD8FC == v21 || dword_154DD900 == v21 || (v10 = (int (*)(void))DecodePointer(dword_154DD8FC), v11 = DecodePointer(dword_154DD900), v12 = v11, !v10) || !v11 || (v13 = v10()) != 0 && ((int (__stdcall *)(int, signed int, char *, signed int, char *))v12)(v13, 1, &v23, 12, &v18) && v24 & 1 ) { if ( dword_154DD8F4 != v21 ) { v14 = (int (*)(void))DecodePointer(dword_154DD8F4); if ( v14 ) { v22 = v14(); if ( v22 ) { if ( dword_154DD8F8 != v21 ) { v15 = DecodePointer(dword_154DD8F8); if ( v15 ) v22 = ((int (__stdcall *)(int))v15)(v22); } } } } } else { a3 |= 0x200000u; } v16 = DecodePointer(dword_154DD8F0); if ( v16 ) return ((int (__stdcall *)(int, int, int, int))v16)(v22, v19, v20, a3); return 0; } // 65FF18: using guessed type int _encoded_null(void); // 86FEB8: using guessed type int __security_cookie; //----- (0067407B) -------------------------------------------------------- signed int __cdecl sub_67407B(int a1, int a2) { __int16 v2; // bx@1 int v3; // ebx@1 int v4; // eax@1 int v5; // ebx@2 signed int v6; // eax@2 signed int result; // eax@5 signed int v8; // edi@7 int v9; // edx@7 int *v10; // esi@7 int v11; // eax@8 bool i; // zf@8 int v13; // eax@13 int v14; // edi@13 signed int v15; // edx@15 int *v16; // ecx@15 bool v17; // cf@16 int v18; // edi@18 int v19; // eax@30 int v20; // edx@30 int *v21; // ebx@31 int v22; // ST1C_4@31 signed int v23; // edx@32 int *v24; // ecx@32 signed int v25; // esi@37 int v26; // eax@37 int v27; // edx@37 int *v28; // ebx@37 bool j; // zf@38 int v30; // eax@43 int v31; // esi@43 signed int v32; // edx@45 int *v33; // ecx@45 int v34; // edi@45 signed int k; // ecx@48 int *v36; // ecx@50 int v37; // esi@50 signed int v38; // edi@50 int v39; // eax@57 int v40; // edx@57 int *v41; // ebx@58 int v42; // ST1C_4@58 signed int v43; // edx@59 int *v44; // ecx@59 int v45; // eax@66 int v46; // edx@66 int *v47; // ebx@67 int v48; // ST1C_4@67 signed int v49; // edx@68 int *v50; // ecx@68 int v51; // eax@74 int v52; // edx@74 int v53; // ST1C_4@75 signed int v54; // edx@76 int *v55; // ecx@76 int v56; // ebx@82 int v57; // edx@83 int v58; // [sp+8h] [bp-38h]@1 char v59; // [sp+10h] [bp-30h]@7 int v60; // [sp+10h] [bp-30h]@37 int v61; // [sp+14h] [bp-2Ch]@7 char v62; // [sp+14h] [bp-2Ch]@37 int v63; // [sp+18h] [bp-28h]@7 int v64; // [sp+18h] [bp-28h]@30 signed int v65; // [sp+18h] [bp-28h]@45 int v66; // [sp+18h] [bp-28h]@57 int v67; // [sp+18h] [bp-28h]@66 int v68; // [sp+18h] [bp-28h]@74 signed int v69; // [sp+1Ch] [bp-24h]@7 int v70; // [sp+20h] [bp-20h]@15 signed int v71; // [sp+20h] [bp-20h]@30 signed int v72; // [sp+20h] [bp-20h]@57 signed int v73; // [sp+20h] [bp-20h]@66 signed int v74; // [sp+20h] [bp-20h]@74 int v75; // [sp+24h] [bp-1Ch]@7 int v76; // [sp+28h] [bp-18h]@7 int v77; // [sp+2Ch] [bp-14h]@7 int v78; // [sp+30h] [bp-10h]@1 int v79; // [sp+34h] [bp-Ch]@1 int v80; // [sp+38h] [bp-8h]@1 unsigned int v81; // [sp+3Ch] [bp-4h]@1 int v82; // [sp+40h] [bp+0h]@1 v81 = (unsigned int)&v82 ^ __security_cookie; v2 = *(_WORD *)(a1 + 10); v58 = *(_WORD *)(a1 + 10) & 0x8000; v78 = *(_DWORD *)(a1 + 6); v3 = (v2 & 0x7FFF) - 16383; v4 = *(_WORD *)a1 << 16; v79 = *(_DWORD *)(a1 + 2); v80 = v4; if ( v3 != -16383 ) { v69 = 0; v75 = v78; v76 = v79; v77 = v80; v8 = dword_8711F8 - 1; v61 = v3; v63 = dword_8711F8 / 32; v9 = dword_8711F8 % 32; v10 = &v78 + dword_8711F8 / 32; v59 = 31 - dword_8711F8 % 32; if ( (1 << (31 - dword_8711F8 % 32)) & *v10 ) { v11 = dword_8711F8 / 32; for ( i = (~(-1 << (31 - v9)) & *(&v78 + v63)) == 0; i; i = *(&v78 + v11) == 0 ) { ++v11; if ( v11 >= 3 ) goto LABEL_23; } v13 = v8 / 32; v14 = v8 & 0x8000001F; if ( v14 < 0 ) LOBYTE(v14) = ((unsigned __int8)(v14 - 1) | 0xE0) + 1; v69 = 0; v15 = 1 << (31 - v14); v16 = &v78 + v13; v70 = v15 + *v16; if ( v70 >= (unsigned int)*v16 ) { v17 = v70 < (unsigned int)v15; goto LABEL_20; } LABEL_21: v69 = 1; while ( 1 ) { --v13; *v16 = v70; if ( v13 < 0 ) break; if ( !v69 ) break; v69 = 0; v16 = &v78 + v13; v18 = *v16 + 1; v70 = v18; if ( v18 >= (unsigned int)*v16 ) { v17 = (unsigned int)v18 < 1; LABEL_20: if ( !v17 ) continue; } goto LABEL_21; } } LABEL_23: *v10 &= -1 << v59; if ( v63 + 1 < 3 ) memset(&v78 + v63 + 1, 0, 4 * (3 - (v63 + 1))); if ( v69 ) ++v3; if ( v3 >= dword_8711F4 - dword_8711F8 ) { if ( v3 > dword_8711F4 ) { if ( v3 < dword_8711F0 ) { v5 = dword_871204 + v3; v78 &= 0x7FFFFFFFu; v51 = dword_8711FC / 32; v52 = dword_8711FC % 32; v68 = 0; v74 = 0; do { v53 = ~(-1 << v52) & *(&v78 + v74); *(&v78 + v74) = v68 | ((unsigned int)*(&v78 + v74) >> v52); ++v74; v68 = v53 << (32 - v52); } while ( v74 < 3 ); v54 = 2; v55 = &v80 - v51; do { if ( v54 < v51 ) *(&v78 + v54) = 0; else *(&v78 + v54) = *v55; --v55; --v54; } while ( v54 >= 0 ); result = 0; } else { v79 = 0; v80 = 0; v78 = -2147483648; v45 = dword_8711FC / 32; v46 = dword_8711FC % 32; v67 = 0; v73 = 0; do { v47 = &v78 + v73; v48 = ~(-1 << v46) & *v47; *v47 = v67 | ((unsigned int)*v47 >> v46); ++v73; v67 = v48 << (32 - v46); } while ( v73 < 3 ); v49 = 2; v50 = &v80 - v45; do { if ( v49 < v45 ) *(&v78 + v49) = 0; else *(&v78 + v49) = *v50; --v50; --v49; } while ( v49 >= 0 ); v5 = dword_8711F0 + dword_871204; result = 1; } goto LABEL_82; } v78 = v75; v79 = v76; v19 = (dword_8711F4 - v61) / 32; v80 = v77; v20 = (dword_8711F4 - v61) % 32; v64 = 0; v71 = 0; do { v21 = &v78 + v71; v22 = ~(-1 << v20) & *v21; *v21 = v64 | ((unsigned int)*v21 >> v20); ++v71; v64 = v22 << (32 - v20); } while ( v71 < 3 ); v23 = 2; v24 = &v80 - v19; do { if ( v23 < v19 ) *(&v78 + v23) = 0; else *(&v78 + v23) = *v24; --v24; --v23; } while ( v23 >= 0 ); v25 = dword_8711F8 - 1; v26 = dword_8711F8 / 32; v60 = dword_8711F8 / 32; v27 = dword_8711F8 % 32; v28 = &v78 + dword_8711F8 / 32; v62 = 31 - dword_8711F8 % 32; if ( (1 << (31 - dword_8711F8 % 32)) & *v28 ) { for ( j = (~(-1 << (31 - v27)) & *(&v78 + v26)) == 0; j; j = *(&v78 + v26) == 0 ) { ++v26; if ( v26 >= 3 ) goto LABEL_55; } v30 = v25 / 32; v31 = v25 & 0x8000001F; if ( v31 < 0 ) LOBYTE(v31) = ((unsigned __int8)(v31 - 1) | 0xE0) + 1; v65 = 0; v32 = 1 << (31 - v31); v33 = &v78 + v30; v34 = *v33 + v32; if ( v34 < (unsigned int)*v33 || v34 < (unsigned int)v32 ) v65 = 1; *v33 = v34; for ( k = v65; ; k = v38 ) { --v30; if ( v30 < 0 ) break; if ( !k ) break; v36 = &v78 + v30; v37 = *v36 + 1; v38 = 0; if ( v37 < (unsigned int)*v36 || (unsigned int)v37 < 1 ) v38 = 1; *v36 = v37; } } LABEL_55: *v28 &= -1 << v62; if ( v60 + 1 < 3 ) memset(&v78 + v60 + 1, 0, 4 * (3 - (v60 + 1))); v39 = (dword_8711FC + 1) / 32; v40 = (dword_8711FC + 1) % 32; v66 = 0; v72 = 0; do { v41 = &v78 + v72; v42 = ~(-1 << v40) & *v41; *v41 = v66 | ((unsigned int)*v41 >> v40); ++v72; v66 = v42 << (32 - v40); } while ( v72 < 3 ); v43 = 2; v44 = &v80 - v39; do { if ( v43 < v39 ) *(&v78 + v43) = 0; else *(&v78 + v43) = *v44; --v44; --v43; } while ( v43 >= 0 ); } else { v78 = 0; v79 = 0; v80 = 0; } v5 = 0; result = 2; goto LABEL_82; } v5 = 0; v6 = 0; while ( !*(&v78 + v6) ) { ++v6; if ( v6 >= 3 ) { result = 0; goto LABEL_82; } } v78 = 0; v79 = 0; v80 = 0; result = 2; LABEL_82: v56 = v78 | (v58 != 0 ? 0x80000000 : 0) | (v5 << (31 - dword_8711FC)); if ( dword_871200 == 64 ) { v57 = v79; *(_DWORD *)(a2 + 4) = v56; *(_DWORD *)a2 = v57; } else { if ( dword_871200 == 32 ) *(_DWORD *)a2 = v56; } return result; } // 86FEB8: using guessed type int __security_cookie; // 8711F0: using guessed type int dword_8711F0; // 8711F4: using guessed type int dword_8711F4; // 8711F8: using guessed type int dword_8711F8; // 8711FC: using guessed type int dword_8711FC; // 871200: using guessed type int dword_871200; // 871204: using guessed type int dword_871204; //----- (006745CC) -------------------------------------------------------- signed int __cdecl sub_6745CC(int a1, int a2) { __int16 v2; // bx@1 int v3; // ebx@1 int v4; // eax@1 int v5; // ebx@2 signed int v6; // eax@2 signed int result; // eax@5 signed int v8; // edi@7 int v9; // edx@7 int *v10; // esi@7 int v11; // eax@8 bool i; // zf@8 int v13; // eax@13 int v14; // edi@13 signed int v15; // edx@15 int *v16; // ecx@15 bool v17; // cf@16 int v18; // edi@18 int v19; // eax@30 int v20; // edx@30 int *v21; // ebx@31 int v22; // ST1C_4@31 signed int v23; // edx@32 int *v24; // ecx@32 signed int v25; // esi@37 int v26; // eax@37 int v27; // edx@37 int *v28; // ebx@37 bool j; // zf@38 int v30; // eax@43 int v31; // esi@43 signed int v32; // edx@45 int *v33; // ecx@45 int v34; // edi@45 signed int k; // ecx@48 int *v36; // ecx@50 int v37; // esi@50 signed int v38; // edi@50 int v39; // eax@57 int v40; // edx@57 int *v41; // ebx@58 int v42; // ST1C_4@58 signed int v43; // edx@59 int *v44; // ecx@59 int v45; // eax@66 int v46; // edx@66 int *v47; // ebx@67 int v48; // ST1C_4@67 signed int v49; // edx@68 int *v50; // ecx@68 int v51; // eax@74 int v52; // edx@74 int v53; // ST1C_4@75 signed int v54; // edx@76 int *v55; // ecx@76 int v56; // ebx@82 int v57; // edx@83 int v58; // [sp+8h] [bp-38h]@1 char v59; // [sp+10h] [bp-30h]@7 int v60; // [sp+10h] [bp-30h]@37 int v61; // [sp+14h] [bp-2Ch]@7 char v62; // [sp+14h] [bp-2Ch]@37 int v63; // [sp+18h] [bp-28h]@7 int v64; // [sp+18h] [bp-28h]@30 signed int v65; // [sp+18h] [bp-28h]@45 int v66; // [sp+18h] [bp-28h]@57 int v67; // [sp+18h] [bp-28h]@66 int v68; // [sp+18h] [bp-28h]@74 signed int v69; // [sp+1Ch] [bp-24h]@7 int v70; // [sp+20h] [bp-20h]@15 signed int v71; // [sp+20h] [bp-20h]@30 signed int v72; // [sp+20h] [bp-20h]@57 signed int v73; // [sp+20h] [bp-20h]@66 signed int v74; // [sp+20h] [bp-20h]@74 int v75; // [sp+24h] [bp-1Ch]@7 int v76; // [sp+28h] [bp-18h]@7 int v77; // [sp+2Ch] [bp-14h]@7 int v78; // [sp+30h] [bp-10h]@1 int v79; // [sp+34h] [bp-Ch]@1 int v80; // [sp+38h] [bp-8h]@1 unsigned int v81; // [sp+3Ch] [bp-4h]@1 int v82; // [sp+40h] [bp+0h]@1 v81 = (unsigned int)&v82 ^ __security_cookie; v2 = *(_WORD *)(a1 + 10); v58 = *(_WORD *)(a1 + 10) & 0x8000; v78 = *(_DWORD *)(a1 + 6); v3 = (v2 & 0x7FFF) - 16383; v4 = *(_WORD *)a1 << 16; v79 = *(_DWORD *)(a1 + 2); v80 = v4; if ( v3 != -16383 ) { v69 = 0; v75 = v78; v76 = v79; v77 = v80; v8 = dword_871210 - 1; v61 = v3; v63 = dword_871210 / 32; v9 = dword_871210 % 32; v10 = &v78 + dword_871210 / 32; v59 = 31 - dword_871210 % 32; if ( (1 << (31 - dword_871210 % 32)) & *v10 ) { v11 = dword_871210 / 32; for ( i = (~(-1 << (31 - v9)) & *(&v78 + v63)) == 0; i; i = *(&v78 + v11) == 0 ) { ++v11; if ( v11 >= 3 ) goto LABEL_23; } v13 = v8 / 32; v14 = v8 & 0x8000001F; if ( v14 < 0 ) LOBYTE(v14) = ((unsigned __int8)(v14 - 1) | 0xE0) + 1; v69 = 0; v15 = 1 << (31 - v14); v16 = &v78 + v13; v70 = v15 + *v16; if ( v70 >= (unsigned int)*v16 ) { v17 = v70 < (unsigned int)v15; goto LABEL_20; } LABEL_21: v69 = 1; while ( 1 ) { --v13; *v16 = v70; if ( v13 < 0 ) break; if ( !v69 ) break; v69 = 0; v16 = &v78 + v13; v18 = *v16 + 1; v70 = v18; if ( v18 >= (unsigned int)*v16 ) { v17 = (unsigned int)v18 < 1; LABEL_20: if ( !v17 ) continue; } goto LABEL_21; } } LABEL_23: *v10 &= -1 << v59; if ( v63 + 1 < 3 ) memset(&v78 + v63 + 1, 0, 4 * (3 - (v63 + 1))); if ( v69 ) ++v3; if ( v3 >= dword_87120C - dword_871210 ) { if ( v3 > dword_87120C ) { if ( v3 < dword_871208 ) { v5 = dword_87121C + v3; v78 &= 0x7FFFFFFFu; v51 = dword_871214 / 32; v52 = dword_871214 % 32; v68 = 0; v74 = 0; do { v53 = ~(-1 << v52) & *(&v78 + v74); *(&v78 + v74) = v68 | ((unsigned int)*(&v78 + v74) >> v52); ++v74; v68 = v53 << (32 - v52); } while ( v74 < 3 ); v54 = 2; v55 = &v80 - v51; do { if ( v54 < v51 ) *(&v78 + v54) = 0; else *(&v78 + v54) = *v55; --v55; --v54; } while ( v54 >= 0 ); result = 0; } else { v79 = 0; v80 = 0; v78 = -2147483648; v45 = dword_871214 / 32; v46 = dword_871214 % 32; v67 = 0; v73 = 0; do { v47 = &v78 + v73; v48 = ~(-1 << v46) & *v47; *v47 = v67 | ((unsigned int)*v47 >> v46); ++v73; v67 = v48 << (32 - v46); } while ( v73 < 3 ); v49 = 2; v50 = &v80 - v45; do { if ( v49 < v45 ) *(&v78 + v49) = 0; else *(&v78 + v49) = *v50; --v50; --v49; } while ( v49 >= 0 ); v5 = dword_871208 + dword_87121C; result = 1; } goto LABEL_82; } v78 = v75; v79 = v76; v19 = (dword_87120C - v61) / 32; v80 = v77; v20 = (dword_87120C - v61) % 32; v64 = 0; v71 = 0; do { v21 = &v78 + v71; v22 = ~(-1 << v20) & *v21; *v21 = v64 | ((unsigned int)*v21 >> v20); ++v71; v64 = v22 << (32 - v20); } while ( v71 < 3 ); v23 = 2; v24 = &v80 - v19; do { if ( v23 < v19 ) *(&v78 + v23) = 0; else *(&v78 + v23) = *v24; --v24; --v23; } while ( v23 >= 0 ); v25 = dword_871210 - 1; v26 = dword_871210 / 32; v60 = dword_871210 / 32; v27 = dword_871210 % 32; v28 = &v78 + dword_871210 / 32; v62 = 31 - dword_871210 % 32; if ( (1 << (31 - dword_871210 % 32)) & *v28 ) { for ( j = (~(-1 << (31 - v27)) & *(&v78 + v26)) == 0; j; j = *(&v78 + v26) == 0 ) { ++v26; if ( v26 >= 3 ) goto LABEL_55; } v30 = v25 / 32; v31 = v25 & 0x8000001F; if ( v31 < 0 ) LOBYTE(v31) = ((unsigned __int8)(v31 - 1) | 0xE0) + 1; v65 = 0; v32 = 1 << (31 - v31); v33 = &v78 + v30; v34 = *v33 + v32; if ( v34 < (unsigned int)*v33 || v34 < (unsigned int)v32 ) v65 = 1; *v33 = v34; for ( k = v65; ; k = v38 ) { --v30; if ( v30 < 0 ) break; if ( !k ) break; v36 = &v78 + v30; v37 = *v36 + 1; v38 = 0; if ( v37 < (unsigned int)*v36 || (unsigned int)v37 < 1 ) v38 = 1; *v36 = v37; } } LABEL_55: *v28 &= -1 << v62; if ( v60 + 1 < 3 ) memset(&v78 + v60 + 1, 0, 4 * (3 - (v60 + 1))); v39 = (dword_871214 + 1) / 32; v40 = (dword_871214 + 1) % 32; v66 = 0; v72 = 0; do { v41 = &v78 + v72; v42 = ~(-1 << v40) & *v41; *v41 = v66 | ((unsigned int)*v41 >> v40); ++v72; v66 = v42 << (32 - v40); } while ( v72 < 3 ); v43 = 2; v44 = &v80 - v39; do { if ( v43 < v39 ) *(&v78 + v43) = 0; else *(&v78 + v43) = *v44; --v44; --v43; } while ( v43 >= 0 ); } else { v78 = 0; v79 = 0; v80 = 0; } v5 = 0; result = 2; goto LABEL_82; } v5 = 0; v6 = 0; while ( !*(&v78 + v6) ) { ++v6; if ( v6 >= 3 ) { result = 0; goto LABEL_82; } } v78 = 0; v79 = 0; v80 = 0; result = 2; LABEL_82: v56 = v78 | (v58 != 0 ? 0x80000000 : 0) | (v5 << (31 - dword_871214)); if ( dword_871218 == 64 ) { v57 = v79; *(_DWORD *)(a2 + 4) = v56; *(_DWORD *)a2 = v57; } else { if ( dword_871218 == 32 ) *(_DWORD *)a2 = v56; } return result; } // 86FEB8: using guessed type int __security_cookie; // 871208: using guessed type int dword_871208; // 87120C: using guessed type int dword_87120C; // 871210: using guessed type int dword_871210; // 871214: using guessed type int dword_871214; // 871218: using guessed type int dword_871218; // 87121C: using guessed type int dword_87121C; //----- (00674DBC) -------------------------------------------------------- signed int __cdecl sub_674DBC(int a1) { signed int result; // eax@2 if ( a1 ) { *(_DWORD *)a1 = dword_154DD904; result = 0; } else { *_errno() = 22; _invalid_parameter_noinfo(); result = 22; } return result; } // 65FD41: using guessed type int _invalid_parameter_noinfo(void); // 154DD904: using guessed type int dword_154DD904; //----- (00674F9F) -------------------------------------------------------- int __cdecl sub_674F9F() { return 0; } //----- (00676684) -------------------------------------------------------- BOOL __cdecl sub_676684() { BOOL result; // eax@1 result = (BOOL)hConsoleOutput; if ( hConsoleOutput != (HANDLE)-1 ) { if ( hConsoleOutput != (HANDLE)-2 ) result = CloseHandle(hConsoleOutput); } return result; } //----- (006769F0) -------------------------------------------------------- void __usercall sub_6769F0(int a1) { **(_DWORD **)(a1 - 16) = &off_69F68C; } // 69F68C: using guessed type int (*off_69F68C)(); //----- (006769F8) -------------------------------------------------------- int __cdecl sub_6769F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00676A20) -------------------------------------------------------- void __usercall sub_676A20(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (00676A2B) -------------------------------------------------------- int __cdecl sub_676A2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00676A50) -------------------------------------------------------- void __cdecl sub_676A50() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676A58) -------------------------------------------------------- void __usercall sub_676A58(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8); } //----- (00676A63) -------------------------------------------------------- void __cdecl sub_676A63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676A6E) -------------------------------------------------------- void __cdecl sub_676A6E() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676A79) -------------------------------------------------------- void __cdecl sub_676A79() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676A84) -------------------------------------------------------- void __cdecl sub_676A84() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676A8F) -------------------------------------------------------- void __cdecl sub_676A8F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676A9A) -------------------------------------------------------- void __cdecl sub_676A9A() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676AA5) -------------------------------------------------------- void __cdecl sub_676AA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676AB0) -------------------------------------------------------- void __cdecl sub_676AB0() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676ABB) -------------------------------------------------------- void __cdecl sub_676ABB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676AC9) -------------------------------------------------------- void __cdecl sub_676AC9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676AD7) -------------------------------------------------------- void __cdecl sub_676AD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676AE5) -------------------------------------------------------- void __cdecl sub_676AE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676AF3) -------------------------------------------------------- void __cdecl sub_676AF3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B01) -------------------------------------------------------- void __cdecl sub_676B01() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B0F) -------------------------------------------------------- void __cdecl sub_676B0F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B1D) -------------------------------------------------------- void __cdecl sub_676B1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B2B) -------------------------------------------------------- void __cdecl sub_676B2B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B39) -------------------------------------------------------- void __cdecl sub_676B39() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B47) -------------------------------------------------------- void __cdecl sub_676B47() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B55) -------------------------------------------------------- void __cdecl sub_676B55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B63) -------------------------------------------------------- void __cdecl sub_676B63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B71) -------------------------------------------------------- void __usercall sub_676B71(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 280); } //----- (00676B7F) -------------------------------------------------------- void __cdecl sub_676B7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676B8D) -------------------------------------------------------- void __usercall sub_676B8D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 304); } //----- (00676B9B) -------------------------------------------------------- void __cdecl sub_676B9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BA9) -------------------------------------------------------- void __cdecl sub_676BA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BB7) -------------------------------------------------------- void __cdecl sub_676BB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BC5) -------------------------------------------------------- void __cdecl sub_676BC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BD3) -------------------------------------------------------- void __cdecl sub_676BD3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BE1) -------------------------------------------------------- void __cdecl sub_676BE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BEF) -------------------------------------------------------- void __cdecl sub_676BEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676BFD) -------------------------------------------------------- void __cdecl sub_676BFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C0B) -------------------------------------------------------- void __cdecl sub_676C0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C19) -------------------------------------------------------- void __cdecl sub_676C19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C27) -------------------------------------------------------- void __cdecl sub_676C27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C35) -------------------------------------------------------- void __cdecl sub_676C35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C43) -------------------------------------------------------- void __cdecl sub_676C43() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C51) -------------------------------------------------------- void __cdecl sub_676C51() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C5F) -------------------------------------------------------- void __cdecl sub_676C5F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C6D) -------------------------------------------------------- void __cdecl sub_676C6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C7B) -------------------------------------------------------- void __cdecl sub_676C7B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C89) -------------------------------------------------------- void __cdecl sub_676C89() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676C97) -------------------------------------------------------- void __cdecl sub_676C97() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676CA5) -------------------------------------------------------- void __cdecl sub_676CA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676CB3) -------------------------------------------------------- void __usercall sub_676CB3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 576); } //----- (00676CC1) -------------------------------------------------------- void __cdecl sub_676CC1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676CCF) -------------------------------------------------------- void __cdecl sub_676CCF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676CDD) -------------------------------------------------------- void __cdecl sub_676CDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676CEB) -------------------------------------------------------- void __cdecl sub_676CEB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676CF9) -------------------------------------------------------- void __cdecl sub_676CF9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D07) -------------------------------------------------------- void __cdecl sub_676D07() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D15) -------------------------------------------------------- void __cdecl sub_676D15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D23) -------------------------------------------------------- void __cdecl sub_676D23() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D31) -------------------------------------------------------- void __cdecl sub_676D31() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D3F) -------------------------------------------------------- void __cdecl sub_676D3F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D4D) -------------------------------------------------------- void __cdecl sub_676D4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D5B) -------------------------------------------------------- void __cdecl sub_676D5B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D69) -------------------------------------------------------- void __cdecl sub_676D69() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D77) -------------------------------------------------------- void __cdecl sub_676D77() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676D85) -------------------------------------------------------- void __usercall sub_676D85(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 752); } //----- (00676D93) -------------------------------------------------------- void __cdecl sub_676D93() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DA1) -------------------------------------------------------- void __cdecl sub_676DA1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DAF) -------------------------------------------------------- void __cdecl sub_676DAF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DBD) -------------------------------------------------------- void __cdecl sub_676DBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DCB) -------------------------------------------------------- void __cdecl sub_676DCB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DD9) -------------------------------------------------------- void __cdecl sub_676DD9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DE7) -------------------------------------------------------- void __cdecl sub_676DE7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676DF5) -------------------------------------------------------- void __usercall sub_676DF5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 868); } //----- (00676E03) -------------------------------------------------------- void __cdecl sub_676E03() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E11) -------------------------------------------------------- void __usercall sub_676E11(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 892); } //----- (00676E1F) -------------------------------------------------------- void __cdecl sub_676E1F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E2D) -------------------------------------------------------- void __cdecl sub_676E2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E3B) -------------------------------------------------------- void __cdecl sub_676E3B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E49) -------------------------------------------------------- void __cdecl sub_676E49() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E57) -------------------------------------------------------- void __cdecl sub_676E57() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E65) -------------------------------------------------------- void __cdecl sub_676E65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E73) -------------------------------------------------------- void __cdecl sub_676E73() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E81) -------------------------------------------------------- void __usercall sub_676E81(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1008); } //----- (00676E8F) -------------------------------------------------------- void __cdecl sub_676E8F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676E9D) -------------------------------------------------------- void __cdecl sub_676E9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676EAB) -------------------------------------------------------- void __usercall sub_676EAB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1040); } //----- (00676EB9) -------------------------------------------------------- void __cdecl sub_676EB9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676EC7) -------------------------------------------------------- void __cdecl sub_676EC7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676ED5) -------------------------------------------------------- void __cdecl sub_676ED5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676EE3) -------------------------------------------------------- void __usercall sub_676EE3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1080); } //----- (00676EF1) -------------------------------------------------------- void __cdecl sub_676EF1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676EFF) -------------------------------------------------------- void __cdecl sub_676EFF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F0D) -------------------------------------------------------- void __cdecl sub_676F0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F1B) -------------------------------------------------------- void __cdecl sub_676F1B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F29) -------------------------------------------------------- void __cdecl sub_676F29() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F37) -------------------------------------------------------- void __cdecl sub_676F37() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F45) -------------------------------------------------------- void __cdecl sub_676F45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F53) -------------------------------------------------------- void __cdecl sub_676F53() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F61) -------------------------------------------------------- void __cdecl sub_676F61() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F6F) -------------------------------------------------------- void __cdecl sub_676F6F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F7D) -------------------------------------------------------- void __cdecl sub_676F7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F8B) -------------------------------------------------------- void __cdecl sub_676F8B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676F99) -------------------------------------------------------- void __cdecl sub_676F99() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676FA7) -------------------------------------------------------- void __cdecl sub_676FA7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676FB5) -------------------------------------------------------- void __cdecl sub_676FB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676FC3) -------------------------------------------------------- void __cdecl sub_676FC3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676FD1) -------------------------------------------------------- void __cdecl sub_676FD1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676FDF) -------------------------------------------------------- void __usercall sub_676FDF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1276); } //----- (00676FED) -------------------------------------------------------- void __cdecl sub_676FED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00676FFB) -------------------------------------------------------- void __cdecl sub_676FFB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677009) -------------------------------------------------------- void __usercall sub_677009(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1308); } //----- (00677017) -------------------------------------------------------- void __cdecl sub_677017() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677025) -------------------------------------------------------- void __cdecl sub_677025() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677033) -------------------------------------------------------- void __cdecl sub_677033() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677041) -------------------------------------------------------- void __cdecl sub_677041() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067704F) -------------------------------------------------------- void __cdecl sub_67704F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067705D) -------------------------------------------------------- void __usercall sub_67705D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1364); } //----- (0067706B) -------------------------------------------------------- void __cdecl sub_67706B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677079) -------------------------------------------------------- void __cdecl sub_677079() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677087) -------------------------------------------------------- void __cdecl sub_677087() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677095) -------------------------------------------------------- void __cdecl sub_677095() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006770A3) -------------------------------------------------------- void __cdecl sub_6770A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006770B1) -------------------------------------------------------- void __cdecl sub_6770B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006770BF) -------------------------------------------------------- void __usercall sub_6770BF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1428); } //----- (006770CD) -------------------------------------------------------- void __cdecl sub_6770CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006770DB) -------------------------------------------------------- void __cdecl sub_6770DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006770E9) -------------------------------------------------------- void __cdecl sub_6770E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006770F7) -------------------------------------------------------- void __cdecl sub_6770F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677105) -------------------------------------------------------- void __cdecl sub_677105() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677113) -------------------------------------------------------- void __cdecl sub_677113() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677121) -------------------------------------------------------- void __cdecl sub_677121() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067712F) -------------------------------------------------------- void __cdecl sub_67712F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067713D) -------------------------------------------------------- void __cdecl sub_67713D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067714B) -------------------------------------------------------- void __cdecl sub_67714B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677159) -------------------------------------------------------- void __cdecl sub_677159() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677167) -------------------------------------------------------- void __cdecl sub_677167() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677175) -------------------------------------------------------- void __cdecl sub_677175() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677183) -------------------------------------------------------- void __cdecl sub_677183() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677191) -------------------------------------------------------- void __cdecl sub_677191() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067719F) -------------------------------------------------------- void __cdecl sub_67719F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006771AD) -------------------------------------------------------- void __cdecl sub_6771AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006771BB) -------------------------------------------------------- void __cdecl sub_6771BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006771C9) -------------------------------------------------------- void __cdecl sub_6771C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006771D7) -------------------------------------------------------- void __cdecl sub_6771D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006771E5) -------------------------------------------------------- void __cdecl sub_6771E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006771F3) -------------------------------------------------------- void __cdecl sub_6771F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677201) -------------------------------------------------------- void __cdecl sub_677201() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067720F) -------------------------------------------------------- void __cdecl sub_67720F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067721D) -------------------------------------------------------- void __usercall sub_67721D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1636); } //----- (0067722B) -------------------------------------------------------- void __usercall sub_67722B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1652); } //----- (00677239) -------------------------------------------------------- void __usercall sub_677239(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1668); } //----- (00677247) -------------------------------------------------------- void __usercall sub_677247(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1684); } //----- (00677255) -------------------------------------------------------- void __usercall sub_677255(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1700); } //----- (00677263) -------------------------------------------------------- void __usercall sub_677263(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1716); } //----- (00677271) -------------------------------------------------------- void __usercall sub_677271(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1732); } //----- (0067727F) -------------------------------------------------------- void __usercall sub_67727F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1748); } //----- (0067728D) -------------------------------------------------------- void __usercall sub_67728D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1764); } //----- (0067729B) -------------------------------------------------------- void __usercall sub_67729B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1780); } //----- (006772A9) -------------------------------------------------------- void __cdecl sub_6772A9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006772B7) -------------------------------------------------------- void __cdecl sub_6772B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006772C5) -------------------------------------------------------- void __cdecl sub_6772C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006772D3) -------------------------------------------------------- void __cdecl sub_6772D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006772E1) -------------------------------------------------------- void __cdecl sub_6772E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006772EF) -------------------------------------------------------- void __cdecl sub_6772EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006772FD) -------------------------------------------------------- void __cdecl sub_6772FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067730B) -------------------------------------------------------- void __cdecl sub_67730B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677319) -------------------------------------------------------- void __cdecl sub_677319() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677327) -------------------------------------------------------- void __cdecl sub_677327() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677335) -------------------------------------------------------- void __cdecl sub_677335() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677343) -------------------------------------------------------- void __cdecl sub_677343() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677351) -------------------------------------------------------- void __cdecl sub_677351() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067735F) -------------------------------------------------------- void __cdecl sub_67735F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067736D) -------------------------------------------------------- void __cdecl sub_67736D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067737B) -------------------------------------------------------- void __cdecl sub_67737B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677389) -------------------------------------------------------- void __cdecl sub_677389() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677397) -------------------------------------------------------- void __cdecl sub_677397() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006773A5) -------------------------------------------------------- void __cdecl sub_6773A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006773B3) -------------------------------------------------------- void __cdecl sub_6773B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006773C1) -------------------------------------------------------- void __cdecl sub_6773C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006773CF) -------------------------------------------------------- void __cdecl sub_6773CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006773DD) -------------------------------------------------------- void __usercall sub_6773DD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1972); } //----- (006773EB) -------------------------------------------------------- void __usercall sub_6773EB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 1988); } //----- (006773F9) -------------------------------------------------------- void __usercall sub_6773F9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2004); } //----- (00677407) -------------------------------------------------------- void __usercall sub_677407(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2020); } //----- (00677415) -------------------------------------------------------- void __usercall sub_677415(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2036); } //----- (00677423) -------------------------------------------------------- void __usercall sub_677423(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2052); } //----- (00677431) -------------------------------------------------------- void __usercall sub_677431(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2068); } //----- (0067743F) -------------------------------------------------------- void __usercall sub_67743F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2084); } //----- (0067744D) -------------------------------------------------------- void __usercall sub_67744D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2100); } //----- (0067745B) -------------------------------------------------------- void __usercall sub_67745B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2116); } //----- (00677469) -------------------------------------------------------- void __usercall sub_677469(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2132); } //----- (00677477) -------------------------------------------------------- void __usercall sub_677477(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2148); } //----- (00677485) -------------------------------------------------------- void __usercall sub_677485(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2164); } //----- (00677493) -------------------------------------------------------- void __usercall sub_677493(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2180); } //----- (006774A1) -------------------------------------------------------- void __usercall sub_6774A1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2196); } //----- (006774AF) -------------------------------------------------------- void __usercall sub_6774AF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2212); } //----- (006774BD) -------------------------------------------------------- void __usercall sub_6774BD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2228); } //----- (006774CB) -------------------------------------------------------- void __usercall sub_6774CB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2244); } //----- (006774D9) -------------------------------------------------------- void __usercall sub_6774D9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2260); } //----- (006774E7) -------------------------------------------------------- void __usercall sub_6774E7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2276); } //----- (006774F5) -------------------------------------------------------- void __usercall sub_6774F5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2292); } //----- (00677503) -------------------------------------------------------- void __usercall sub_677503(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2308); } //----- (00677511) -------------------------------------------------------- void __usercall sub_677511(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2324); } //----- (0067751F) -------------------------------------------------------- void __usercall sub_67751F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2340); } //----- (0067752D) -------------------------------------------------------- void __usercall sub_67752D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2356); } //----- (0067753B) -------------------------------------------------------- void __cdecl sub_67753B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677549) -------------------------------------------------------- void __cdecl sub_677549() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677557) -------------------------------------------------------- void __cdecl sub_677557() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677565) -------------------------------------------------------- void __cdecl sub_677565() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677573) -------------------------------------------------------- void __cdecl sub_677573() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677581) -------------------------------------------------------- void __cdecl sub_677581() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067758F) -------------------------------------------------------- void __cdecl sub_67758F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067759D) -------------------------------------------------------- void __usercall sub_67759D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2428); } //----- (006775AB) -------------------------------------------------------- void __usercall sub_6775AB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2444); } //----- (006775B9) -------------------------------------------------------- void __usercall sub_6775B9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2460); } //----- (006775C7) -------------------------------------------------------- void __usercall sub_6775C7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2476); } //----- (006775D5) -------------------------------------------------------- void __usercall sub_6775D5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2492); } //----- (006775E3) -------------------------------------------------------- void __usercall sub_6775E3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2508); } //----- (006775F1) -------------------------------------------------------- void __usercall sub_6775F1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2524); } //----- (006775FF) -------------------------------------------------------- void __usercall sub_6775FF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2540); } //----- (0067760D) -------------------------------------------------------- void __usercall sub_67760D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2556); } //----- (0067761B) -------------------------------------------------------- void __usercall sub_67761B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2572); } //----- (00677629) -------------------------------------------------------- void __usercall sub_677629(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 2588); } //----- (00677637) -------------------------------------------------------- void __cdecl sub_677637() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677645) -------------------------------------------------------- void __cdecl sub_677645() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677653) -------------------------------------------------------- void __cdecl sub_677653() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677661) -------------------------------------------------------- void __cdecl sub_677661() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067766F) -------------------------------------------------------- void __cdecl sub_67766F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067767D) -------------------------------------------------------- void __cdecl sub_67767D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067768B) -------------------------------------------------------- void __cdecl sub_67768B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677699) -------------------------------------------------------- void __cdecl sub_677699() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776A7) -------------------------------------------------------- void __cdecl sub_6776A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776B5) -------------------------------------------------------- void __cdecl sub_6776B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776C3) -------------------------------------------------------- void __cdecl sub_6776C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776D1) -------------------------------------------------------- void __cdecl sub_6776D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776DF) -------------------------------------------------------- void __cdecl sub_6776DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776ED) -------------------------------------------------------- void __cdecl sub_6776ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006776FB) -------------------------------------------------------- void __cdecl sub_6776FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677709) -------------------------------------------------------- void __cdecl sub_677709() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677717) -------------------------------------------------------- void __cdecl sub_677717() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677725) -------------------------------------------------------- void __cdecl sub_677725() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677733) -------------------------------------------------------- void __cdecl sub_677733() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677741) -------------------------------------------------------- void __cdecl sub_677741() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067774F) -------------------------------------------------------- void __cdecl sub_67774F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067775D) -------------------------------------------------------- void __cdecl sub_67775D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067776B) -------------------------------------------------------- void __cdecl sub_67776B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677779) -------------------------------------------------------- void __cdecl sub_677779() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677787) -------------------------------------------------------- void __cdecl sub_677787() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677795) -------------------------------------------------------- void __cdecl sub_677795() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777A3) -------------------------------------------------------- void __cdecl sub_6777A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777B1) -------------------------------------------------------- void __cdecl sub_6777B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777BF) -------------------------------------------------------- void __cdecl sub_6777BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777CD) -------------------------------------------------------- void __cdecl sub_6777CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777DB) -------------------------------------------------------- void __cdecl sub_6777DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777E9) -------------------------------------------------------- void __cdecl sub_6777E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006777F7) -------------------------------------------------------- void __cdecl sub_6777F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677805) -------------------------------------------------------- void __cdecl sub_677805() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677813) -------------------------------------------------------- void __cdecl sub_677813() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677821) -------------------------------------------------------- void __cdecl sub_677821() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067782F) -------------------------------------------------------- void __cdecl sub_67782F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067783D) -------------------------------------------------------- void __cdecl sub_67783D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067784B) -------------------------------------------------------- void __cdecl sub_67784B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677859) -------------------------------------------------------- void __cdecl sub_677859() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677867) -------------------------------------------------------- void __cdecl sub_677867() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677875) -------------------------------------------------------- void __cdecl sub_677875() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677883) -------------------------------------------------------- void __cdecl sub_677883() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677891) -------------------------------------------------------- void __cdecl sub_677891() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067789F) -------------------------------------------------------- void __cdecl sub_67789F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006778AD) -------------------------------------------------------- void __cdecl sub_6778AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006778BB) -------------------------------------------------------- void __cdecl sub_6778BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006778C9) -------------------------------------------------------- void __cdecl sub_6778C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006778D7) -------------------------------------------------------- void __cdecl sub_6778D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006778E5) -------------------------------------------------------- void __cdecl sub_6778E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006778F3) -------------------------------------------------------- void __cdecl sub_6778F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677901) -------------------------------------------------------- void __cdecl sub_677901() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067790F) -------------------------------------------------------- void __cdecl sub_67790F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067791D) -------------------------------------------------------- void __cdecl sub_67791D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067792B) -------------------------------------------------------- void __cdecl sub_67792B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677939) -------------------------------------------------------- void __cdecl sub_677939() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677947) -------------------------------------------------------- void __cdecl sub_677947() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677955) -------------------------------------------------------- void __cdecl sub_677955() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677963) -------------------------------------------------------- void __cdecl sub_677963() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677971) -------------------------------------------------------- void __cdecl sub_677971() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067797F) -------------------------------------------------------- void __cdecl sub_67797F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067798D) -------------------------------------------------------- void __cdecl sub_67798D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067799B) -------------------------------------------------------- void __cdecl sub_67799B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779A9) -------------------------------------------------------- void __cdecl sub_6779A9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779B7) -------------------------------------------------------- void __cdecl sub_6779B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779C5) -------------------------------------------------------- void __cdecl sub_6779C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779D3) -------------------------------------------------------- void __cdecl sub_6779D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779E1) -------------------------------------------------------- void __cdecl sub_6779E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779EF) -------------------------------------------------------- void __cdecl sub_6779EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006779FD) -------------------------------------------------------- void __cdecl sub_6779FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A0B) -------------------------------------------------------- void __cdecl sub_677A0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A19) -------------------------------------------------------- void __cdecl sub_677A19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A27) -------------------------------------------------------- void __cdecl sub_677A27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A35) -------------------------------------------------------- void __cdecl sub_677A35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A43) -------------------------------------------------------- void __cdecl sub_677A43() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A51) -------------------------------------------------------- void __cdecl sub_677A51() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A5F) -------------------------------------------------------- void __cdecl sub_677A5F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A6D) -------------------------------------------------------- void __cdecl sub_677A6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A7B) -------------------------------------------------------- void __cdecl sub_677A7B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677A89) -------------------------------------------------------- void __usercall sub_677A89(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3240); } //----- (00677A97) -------------------------------------------------------- void __usercall sub_677A97(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3256); } //----- (00677AA5) -------------------------------------------------------- void __usercall sub_677AA5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3272); } //----- (00677AB3) -------------------------------------------------------- void __usercall sub_677AB3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3288); } //----- (00677AC1) -------------------------------------------------------- void __usercall sub_677AC1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3304); } //----- (00677ACF) -------------------------------------------------------- void __usercall sub_677ACF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3320); } //----- (00677ADD) -------------------------------------------------------- void __usercall sub_677ADD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3336); } //----- (00677AEB) -------------------------------------------------------- void __usercall sub_677AEB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3352); } //----- (00677AF9) -------------------------------------------------------- void __usercall sub_677AF9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3368); } //----- (00677B07) -------------------------------------------------------- void __usercall sub_677B07(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3384); } //----- (00677B15) -------------------------------------------------------- void __usercall sub_677B15(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3400); } //----- (00677B23) -------------------------------------------------------- void __usercall sub_677B23(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3416); } //----- (00677B31) -------------------------------------------------------- void __usercall sub_677B31(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3432); } //----- (00677B3F) -------------------------------------------------------- void __usercall sub_677B3F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3448); } //----- (00677B4D) -------------------------------------------------------- void __usercall sub_677B4D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3464); } //----- (00677B5B) -------------------------------------------------------- void __usercall sub_677B5B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3480); } //----- (00677B69) -------------------------------------------------------- void __usercall sub_677B69(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3496); } //----- (00677B77) -------------------------------------------------------- void __usercall sub_677B77(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3512); } //----- (00677B85) -------------------------------------------------------- void __usercall sub_677B85(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3528); } //----- (00677B93) -------------------------------------------------------- void __usercall sub_677B93(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3544); } //----- (00677BA1) -------------------------------------------------------- void __usercall sub_677BA1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3560); } //----- (00677BAF) -------------------------------------------------------- void __usercall sub_677BAF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3576); } //----- (00677BBD) -------------------------------------------------------- void __usercall sub_677BBD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3592); } //----- (00677BCB) -------------------------------------------------------- void __usercall sub_677BCB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3608); } //----- (00677BD9) -------------------------------------------------------- void __usercall sub_677BD9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3624); } //----- (00677BE7) -------------------------------------------------------- void __usercall sub_677BE7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3640); } //----- (00677BF5) -------------------------------------------------------- void __usercall sub_677BF5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3656); } //----- (00677C03) -------------------------------------------------------- void __usercall sub_677C03(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3672); } //----- (00677C11) -------------------------------------------------------- void __usercall sub_677C11(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3688); } //----- (00677C1F) -------------------------------------------------------- void __usercall sub_677C1F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3704); } //----- (00677C2D) -------------------------------------------------------- void __usercall sub_677C2D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3720); } //----- (00677C3B) -------------------------------------------------------- void __usercall sub_677C3B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3736); } //----- (00677C49) -------------------------------------------------------- void __usercall sub_677C49(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3752); } //----- (00677C57) -------------------------------------------------------- void __usercall sub_677C57(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3768); } //----- (00677C65) -------------------------------------------------------- void __usercall sub_677C65(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3784); } //----- (00677C73) -------------------------------------------------------- void __usercall sub_677C73(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3800); } //----- (00677C81) -------------------------------------------------------- void __usercall sub_677C81(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3816); } //----- (00677C8F) -------------------------------------------------------- void __usercall sub_677C8F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3832); } //----- (00677C9D) -------------------------------------------------------- void __usercall sub_677C9D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3848); } //----- (00677CAB) -------------------------------------------------------- void __usercall sub_677CAB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3864); } //----- (00677CB9) -------------------------------------------------------- void __usercall sub_677CB9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3880); } //----- (00677CC7) -------------------------------------------------------- void __usercall sub_677CC7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3896); } //----- (00677CD5) -------------------------------------------------------- void __usercall sub_677CD5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3912); } //----- (00677CE3) -------------------------------------------------------- void __usercall sub_677CE3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3928); } //----- (00677CF1) -------------------------------------------------------- void __usercall sub_677CF1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3944); } //----- (00677CFF) -------------------------------------------------------- void __usercall sub_677CFF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3960); } //----- (00677D0D) -------------------------------------------------------- void __usercall sub_677D0D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3976); } //----- (00677D1B) -------------------------------------------------------- void __usercall sub_677D1B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 3992); } //----- (00677D29) -------------------------------------------------------- void __usercall sub_677D29(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4008); } //----- (00677D37) -------------------------------------------------------- void __usercall sub_677D37(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4024); } //----- (00677D45) -------------------------------------------------------- void __usercall sub_677D45(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4040); } //----- (00677D53) -------------------------------------------------------- void __usercall sub_677D53(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4056); } //----- (00677D61) -------------------------------------------------------- void __cdecl sub_677D61() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677D6F) -------------------------------------------------------- void __cdecl sub_677D6F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677D7D) -------------------------------------------------------- void __cdecl sub_677D7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677D8B) -------------------------------------------------------- void __cdecl sub_677D8B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677D99) -------------------------------------------------------- void __cdecl sub_677D99() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677DA7) -------------------------------------------------------- void __usercall sub_677DA7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4156); } //----- (00677DB5) -------------------------------------------------------- void __cdecl sub_677DB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677DC3) -------------------------------------------------------- void __cdecl sub_677DC3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677DD1) -------------------------------------------------------- void __cdecl sub_677DD1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677DDF) -------------------------------------------------------- void __cdecl sub_677DDF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677DED) -------------------------------------------------------- void __cdecl sub_677DED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677DFB) -------------------------------------------------------- void __cdecl sub_677DFB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E09) -------------------------------------------------------- void __usercall sub_677E09(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4244); } //----- (00677E17) -------------------------------------------------------- void __usercall sub_677E17(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4260); } //----- (00677E25) -------------------------------------------------------- void __cdecl sub_677E25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E33) -------------------------------------------------------- void __cdecl sub_677E33() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E41) -------------------------------------------------------- void __cdecl sub_677E41() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E4F) -------------------------------------------------------- void __cdecl sub_677E4F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E5D) -------------------------------------------------------- void __cdecl sub_677E5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E6B) -------------------------------------------------------- void __cdecl sub_677E6B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E79) -------------------------------------------------------- void __cdecl sub_677E79() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E87) -------------------------------------------------------- void __cdecl sub_677E87() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677E95) -------------------------------------------------------- void __cdecl sub_677E95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677EA3) -------------------------------------------------------- void __cdecl sub_677EA3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677EB1) -------------------------------------------------------- void __cdecl sub_677EB1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677EBF) -------------------------------------------------------- void __cdecl sub_677EBF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677ECD) -------------------------------------------------------- void __cdecl sub_677ECD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677EDB) -------------------------------------------------------- void __cdecl sub_677EDB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677EE9) -------------------------------------------------------- void __cdecl sub_677EE9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677EF7) -------------------------------------------------------- void __cdecl sub_677EF7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F05) -------------------------------------------------------- void __cdecl sub_677F05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F13) -------------------------------------------------------- void __cdecl sub_677F13() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F21) -------------------------------------------------------- void __cdecl sub_677F21() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F2F) -------------------------------------------------------- void __cdecl sub_677F2F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F3D) -------------------------------------------------------- void __cdecl sub_677F3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F4B) -------------------------------------------------------- void __cdecl sub_677F4B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F59) -------------------------------------------------------- void __usercall sub_677F59(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4452); } //----- (00677F67) -------------------------------------------------------- void __cdecl sub_677F67() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F75) -------------------------------------------------------- void __cdecl sub_677F75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F83) -------------------------------------------------------- void __cdecl sub_677F83() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F91) -------------------------------------------------------- void __cdecl sub_677F91() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677F9F) -------------------------------------------------------- void __usercall sub_677F9F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4500); } //----- (00677FAD) -------------------------------------------------------- void __cdecl sub_677FAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677FBB) -------------------------------------------------------- void __cdecl sub_677FBB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677FC9) -------------------------------------------------------- void __cdecl sub_677FC9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677FD7) -------------------------------------------------------- void __cdecl sub_677FD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677FE5) -------------------------------------------------------- void __cdecl sub_677FE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00677FF3) -------------------------------------------------------- void __cdecl sub_677FF3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678001) -------------------------------------------------------- void __usercall sub_678001(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4572); } //----- (0067800F) -------------------------------------------------------- void __cdecl sub_67800F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067801D) -------------------------------------------------------- void __cdecl sub_67801D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067802B) -------------------------------------------------------- void __usercall sub_67802B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4604); } //----- (00678039) -------------------------------------------------------- void __cdecl sub_678039() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678047) -------------------------------------------------------- void __cdecl sub_678047() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678055) -------------------------------------------------------- void __cdecl sub_678055() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678063) -------------------------------------------------------- void __cdecl sub_678063() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678071) -------------------------------------------------------- void __cdecl sub_678071() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067807F) -------------------------------------------------------- void __cdecl sub_67807F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067808D) -------------------------------------------------------- void __cdecl sub_67808D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067809B) -------------------------------------------------------- void __cdecl sub_67809B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006780A9) -------------------------------------------------------- void __usercall sub_6780A9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4684); } //----- (006780B7) -------------------------------------------------------- void __usercall sub_6780B7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4700); } //----- (006780C5) -------------------------------------------------------- void __cdecl sub_6780C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006780D3) -------------------------------------------------------- void __usercall sub_6780D3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4724); } //----- (006780E1) -------------------------------------------------------- void __cdecl sub_6780E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006780EF) -------------------------------------------------------- void __cdecl sub_6780EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006780FD) -------------------------------------------------------- void __cdecl sub_6780FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067810B) -------------------------------------------------------- void __cdecl sub_67810B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678119) -------------------------------------------------------- void __cdecl sub_678119() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678127) -------------------------------------------------------- void __cdecl sub_678127() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678135) -------------------------------------------------------- void __cdecl sub_678135() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678143) -------------------------------------------------------- void __cdecl sub_678143() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678151) -------------------------------------------------------- void __cdecl sub_678151() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067815F) -------------------------------------------------------- void __cdecl sub_67815F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067816D) -------------------------------------------------------- void __cdecl sub_67816D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067817B) -------------------------------------------------------- void __cdecl sub_67817B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678189) -------------------------------------------------------- void __cdecl sub_678189() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678197) -------------------------------------------------------- void __cdecl sub_678197() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781A5) -------------------------------------------------------- void __cdecl sub_6781A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781B3) -------------------------------------------------------- void __cdecl sub_6781B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781C1) -------------------------------------------------------- void __cdecl sub_6781C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781CF) -------------------------------------------------------- void __cdecl sub_6781CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781DD) -------------------------------------------------------- void __cdecl sub_6781DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781EB) -------------------------------------------------------- void __cdecl sub_6781EB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006781F9) -------------------------------------------------------- void __cdecl sub_6781F9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678207) -------------------------------------------------------- void __cdecl sub_678207() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678215) -------------------------------------------------------- void __cdecl sub_678215() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678223) -------------------------------------------------------- void __cdecl sub_678223() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678231) -------------------------------------------------------- void __cdecl sub_678231() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067823F) -------------------------------------------------------- void __usercall sub_67823F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4940); } //----- (0067824D) -------------------------------------------------------- void __cdecl sub_67824D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067825B) -------------------------------------------------------- void __usercall sub_67825B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 4964); } //----- (00678269) -------------------------------------------------------- void __cdecl sub_678269() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678277) -------------------------------------------------------- void __cdecl sub_678277() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678285) -------------------------------------------------------- void __cdecl sub_678285() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678293) -------------------------------------------------------- void __cdecl sub_678293() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006782A1) -------------------------------------------------------- void __cdecl sub_6782A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006782AF) -------------------------------------------------------- void __cdecl sub_6782AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006782BD) -------------------------------------------------------- void __cdecl sub_6782BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006782CB) -------------------------------------------------------- void __usercall sub_6782CB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5036); } //----- (006782D9) -------------------------------------------------------- void __cdecl sub_6782D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006782E7) -------------------------------------------------------- void __cdecl sub_6782E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006782F5) -------------------------------------------------------- void __cdecl sub_6782F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678303) -------------------------------------------------------- void __cdecl sub_678303() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678311) -------------------------------------------------------- void __cdecl sub_678311() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067831F) -------------------------------------------------------- void __cdecl sub_67831F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067832D) -------------------------------------------------------- void __cdecl sub_67832D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067833B) -------------------------------------------------------- void __cdecl sub_67833B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678349) -------------------------------------------------------- void __cdecl sub_678349() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678357) -------------------------------------------------------- void __cdecl sub_678357() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678365) -------------------------------------------------------- void __cdecl sub_678365() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678373) -------------------------------------------------------- void __cdecl sub_678373() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678381) -------------------------------------------------------- void __cdecl sub_678381() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067838F) -------------------------------------------------------- void __cdecl sub_67838F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067839D) -------------------------------------------------------- void __cdecl sub_67839D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783AB) -------------------------------------------------------- void __cdecl sub_6783AB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783B9) -------------------------------------------------------- void __cdecl sub_6783B9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783C7) -------------------------------------------------------- void __cdecl sub_6783C7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783D5) -------------------------------------------------------- void __cdecl sub_6783D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783E3) -------------------------------------------------------- void __cdecl sub_6783E3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783F1) -------------------------------------------------------- void __cdecl sub_6783F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006783FF) -------------------------------------------------------- void __cdecl sub_6783FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067840D) -------------------------------------------------------- void __cdecl sub_67840D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067841B) -------------------------------------------------------- void __usercall sub_67841B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5236); } //----- (00678429) -------------------------------------------------------- void __usercall sub_678429(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5252); } //----- (00678437) -------------------------------------------------------- void __usercall sub_678437(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5268); } //----- (00678445) -------------------------------------------------------- void __usercall sub_678445(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5284); } //----- (00678453) -------------------------------------------------------- void __cdecl sub_678453() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678461) -------------------------------------------------------- void __cdecl sub_678461() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067846F) -------------------------------------------------------- void __usercall sub_67846F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5316); } //----- (0067847D) -------------------------------------------------------- void __usercall sub_67847D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5332); } //----- (0067848B) -------------------------------------------------------- void __usercall sub_67848B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5348); } //----- (00678499) -------------------------------------------------------- void __usercall sub_678499(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5364); } //----- (006784A7) -------------------------------------------------------- void __cdecl sub_6784A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006784B5) -------------------------------------------------------- void __cdecl sub_6784B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006784C3) -------------------------------------------------------- void __cdecl sub_6784C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006784D1) -------------------------------------------------------- void __cdecl sub_6784D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006784DF) -------------------------------------------------------- void __cdecl sub_6784DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006784ED) -------------------------------------------------------- void __cdecl sub_6784ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006784FB) -------------------------------------------------------- void __usercall sub_6784FB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5428); } //----- (00678509) -------------------------------------------------------- void __cdecl sub_678509() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678517) -------------------------------------------------------- void __cdecl sub_678517() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678525) -------------------------------------------------------- void __cdecl sub_678525() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678533) -------------------------------------------------------- void __cdecl sub_678533() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678541) -------------------------------------------------------- void __cdecl sub_678541() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067854F) -------------------------------------------------------- void __cdecl sub_67854F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067855D) -------------------------------------------------------- void __usercall sub_67855D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5492); } //----- (0067856B) -------------------------------------------------------- void __cdecl sub_67856B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678579) -------------------------------------------------------- void __cdecl sub_678579() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678587) -------------------------------------------------------- void __cdecl sub_678587() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678595) -------------------------------------------------------- void __cdecl sub_678595() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785A3) -------------------------------------------------------- void __cdecl sub_6785A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785B1) -------------------------------------------------------- void __cdecl sub_6785B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785BF) -------------------------------------------------------- void __cdecl sub_6785BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785CD) -------------------------------------------------------- void __cdecl sub_6785CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785DB) -------------------------------------------------------- void __cdecl sub_6785DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785E9) -------------------------------------------------------- void __cdecl sub_6785E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006785F7) -------------------------------------------------------- void __cdecl sub_6785F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678605) -------------------------------------------------------- void __cdecl sub_678605() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678613) -------------------------------------------------------- void __cdecl sub_678613() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678621) -------------------------------------------------------- void __cdecl sub_678621() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067862F) -------------------------------------------------------- void __cdecl sub_67862F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067863D) -------------------------------------------------------- void __cdecl sub_67863D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067864B) -------------------------------------------------------- void __cdecl sub_67864B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678659) -------------------------------------------------------- void __cdecl sub_678659() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678667) -------------------------------------------------------- void __cdecl sub_678667() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678675) -------------------------------------------------------- void __cdecl sub_678675() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678683) -------------------------------------------------------- void __cdecl sub_678683() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678691) -------------------------------------------------------- void __cdecl sub_678691() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067869F) -------------------------------------------------------- void __cdecl sub_67869F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006786AD) -------------------------------------------------------- void __cdecl sub_6786AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006786BB) -------------------------------------------------------- void __cdecl sub_6786BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006786C9) -------------------------------------------------------- void __cdecl sub_6786C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006786D7) -------------------------------------------------------- void __cdecl sub_6786D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006786E5) -------------------------------------------------------- void __cdecl sub_6786E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006786F3) -------------------------------------------------------- void __cdecl sub_6786F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678701) -------------------------------------------------------- void __cdecl sub_678701() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067870F) -------------------------------------------------------- void __cdecl sub_67870F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067871D) -------------------------------------------------------- void __cdecl sub_67871D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067872B) -------------------------------------------------------- void __cdecl sub_67872B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678739) -------------------------------------------------------- void __cdecl sub_678739() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678747) -------------------------------------------------------- void __cdecl sub_678747() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678755) -------------------------------------------------------- void __cdecl sub_678755() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678763) -------------------------------------------------------- void __cdecl sub_678763() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678771) -------------------------------------------------------- void __usercall sub_678771(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5804); } //----- (0067877F) -------------------------------------------------------- void __cdecl sub_67877F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067878D) -------------------------------------------------------- void __usercall sub_67878D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5828); } //----- (0067879B) -------------------------------------------------------- void __cdecl sub_67879B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006787A9) -------------------------------------------------------- void __usercall sub_6787A9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5852); } //----- (006787B7) -------------------------------------------------------- void __cdecl sub_6787B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006787C5) -------------------------------------------------------- void __cdecl sub_6787C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006787D3) -------------------------------------------------------- void __cdecl sub_6787D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006787E1) -------------------------------------------------------- void __cdecl sub_6787E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006787EF) -------------------------------------------------------- void __cdecl sub_6787EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006787FD) -------------------------------------------------------- void __usercall sub_6787FD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5952); } //----- (0067880B) -------------------------------------------------------- void __cdecl sub_67880B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678819) -------------------------------------------------------- void __cdecl sub_678819() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678827) -------------------------------------------------------- void __cdecl sub_678827() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678835) -------------------------------------------------------- void __usercall sub_678835(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 5992); } //----- (00678843) -------------------------------------------------------- void __cdecl sub_678843() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678851) -------------------------------------------------------- void __cdecl sub_678851() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067885F) -------------------------------------------------------- void __cdecl sub_67885F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067886D) -------------------------------------------------------- void __cdecl sub_67886D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067887B) -------------------------------------------------------- void __cdecl sub_67887B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678889) -------------------------------------------------------- void __cdecl sub_678889() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678897) -------------------------------------------------------- void __cdecl sub_678897() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006788A5) -------------------------------------------------------- void __cdecl sub_6788A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006788B3) -------------------------------------------------------- void __cdecl sub_6788B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006788C1) -------------------------------------------------------- void __cdecl sub_6788C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006788CF) -------------------------------------------------------- void __usercall sub_6788CF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6088); } //----- (006788DD) -------------------------------------------------------- void __usercall sub_6788DD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6104); } //----- (006788EB) -------------------------------------------------------- void __cdecl sub_6788EB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006788F9) -------------------------------------------------------- void __cdecl sub_6788F9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678907) -------------------------------------------------------- void __cdecl sub_678907() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678915) -------------------------------------------------------- void __cdecl sub_678915() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678923) -------------------------------------------------------- void __cdecl sub_678923() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678931) -------------------------------------------------------- void __usercall sub_678931(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6160); } //----- (0067893F) -------------------------------------------------------- void __cdecl sub_67893F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067894D) -------------------------------------------------------- void __cdecl sub_67894D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067895B) -------------------------------------------------------- void __cdecl sub_67895B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678969) -------------------------------------------------------- void __cdecl sub_678969() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678977) -------------------------------------------------------- void __cdecl sub_678977() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678985) -------------------------------------------------------- void __cdecl sub_678985() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678993) -------------------------------------------------------- void __cdecl sub_678993() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789A1) -------------------------------------------------------- void __cdecl sub_6789A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789AF) -------------------------------------------------------- void __cdecl sub_6789AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789BD) -------------------------------------------------------- void __cdecl sub_6789BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789CB) -------------------------------------------------------- void __cdecl sub_6789CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789D9) -------------------------------------------------------- void __cdecl sub_6789D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789E7) -------------------------------------------------------- void __cdecl sub_6789E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006789F5) -------------------------------------------------------- void __cdecl sub_6789F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A03) -------------------------------------------------------- void __usercall sub_678A03(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6288); } //----- (00678A11) -------------------------------------------------------- void __cdecl sub_678A11() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A1F) -------------------------------------------------------- void __usercall sub_678A1F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6312); } //----- (00678A2D) -------------------------------------------------------- void __cdecl sub_678A2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A3B) -------------------------------------------------------- void __cdecl sub_678A3B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A49) -------------------------------------------------------- void __cdecl sub_678A49() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A57) -------------------------------------------------------- void __cdecl sub_678A57() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A65) -------------------------------------------------------- void __cdecl sub_678A65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A73) -------------------------------------------------------- void __cdecl sub_678A73() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A81) -------------------------------------------------------- void __cdecl sub_678A81() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A8F) -------------------------------------------------------- void __cdecl sub_678A8F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678A9D) -------------------------------------------------------- void __cdecl sub_678A9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678AAB) -------------------------------------------------------- void __cdecl sub_678AAB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678AB9) -------------------------------------------------------- void __cdecl sub_678AB9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678AC7) -------------------------------------------------------- void __cdecl sub_678AC7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678AD5) -------------------------------------------------------- void __cdecl sub_678AD5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678AE3) -------------------------------------------------------- void __usercall sub_678AE3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6456); } //----- (00678AF1) -------------------------------------------------------- void __usercall sub_678AF1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6472); } //----- (00678AFF) -------------------------------------------------------- void __cdecl sub_678AFF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B0D) -------------------------------------------------------- void __cdecl sub_678B0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B1B) -------------------------------------------------------- void __cdecl sub_678B1B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B29) -------------------------------------------------------- void __cdecl sub_678B29() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B37) -------------------------------------------------------- void __cdecl sub_678B37() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B45) -------------------------------------------------------- void __usercall sub_678B45(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6528); } //----- (00678B53) -------------------------------------------------------- void __usercall sub_678B53(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6544); } //----- (00678B61) -------------------------------------------------------- void __cdecl sub_678B61() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B6F) -------------------------------------------------------- void __cdecl sub_678B6F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B7D) -------------------------------------------------------- void __cdecl sub_678B7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B8B) -------------------------------------------------------- void __cdecl sub_678B8B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678B99) -------------------------------------------------------- void __cdecl sub_678B99() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678BA7) -------------------------------------------------------- void __cdecl sub_678BA7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678BB5) -------------------------------------------------------- void __cdecl sub_678BB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678BC3) -------------------------------------------------------- void __cdecl sub_678BC3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678BD1) -------------------------------------------------------- void __usercall sub_678BD1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6624); } //----- (00678BDF) -------------------------------------------------------- void __cdecl sub_678BDF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678BED) -------------------------------------------------------- void __cdecl sub_678BED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678BFB) -------------------------------------------------------- void __cdecl sub_678BFB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C09) -------------------------------------------------------- void __cdecl sub_678C09() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C17) -------------------------------------------------------- void __cdecl sub_678C17() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C25) -------------------------------------------------------- void __cdecl sub_678C25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C33) -------------------------------------------------------- void __cdecl sub_678C33() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C41) -------------------------------------------------------- void __cdecl sub_678C41() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C4F) -------------------------------------------------------- void __cdecl sub_678C4F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C5D) -------------------------------------------------------- void __cdecl sub_678C5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C6B) -------------------------------------------------------- void __cdecl sub_678C6B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C79) -------------------------------------------------------- void __usercall sub_678C79(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6728); } //----- (00678C87) -------------------------------------------------------- void __cdecl sub_678C87() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678C95) -------------------------------------------------------- void __cdecl sub_678C95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678CA3) -------------------------------------------------------- void __cdecl sub_678CA3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678CB1) -------------------------------------------------------- void __usercall sub_678CB1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6768); } //----- (00678CBF) -------------------------------------------------------- void __usercall sub_678CBF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6784); } //----- (00678CCD) -------------------------------------------------------- void __cdecl sub_678CCD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678CDB) -------------------------------------------------------- void __cdecl sub_678CDB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678CE9) -------------------------------------------------------- void __cdecl sub_678CE9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678CF7) -------------------------------------------------------- void __cdecl sub_678CF7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D05) -------------------------------------------------------- void __usercall sub_678D05(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6832); } //----- (00678D13) -------------------------------------------------------- void __usercall sub_678D13(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6848); } //----- (00678D21) -------------------------------------------------------- void __cdecl sub_678D21() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D2F) -------------------------------------------------------- void __cdecl sub_678D2F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D3D) -------------------------------------------------------- void __cdecl sub_678D3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D4B) -------------------------------------------------------- void __cdecl sub_678D4B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D59) -------------------------------------------------------- void __cdecl sub_678D59() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D67) -------------------------------------------------------- void __cdecl sub_678D67() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D75) -------------------------------------------------------- void __cdecl sub_678D75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D83) -------------------------------------------------------- void __cdecl sub_678D83() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678D91) -------------------------------------------------------- void __usercall sub_678D91(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6928); } //----- (00678D9F) -------------------------------------------------------- void __cdecl sub_678D9F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678DAD) -------------------------------------------------------- void __usercall sub_678DAD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6952); } //----- (00678DBB) -------------------------------------------------------- void __cdecl sub_678DBB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678DC9) -------------------------------------------------------- void __usercall sub_678DC9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 6980); } //----- (00678DD7) -------------------------------------------------------- void __cdecl sub_678DD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678DE5) -------------------------------------------------------- void __cdecl sub_678DE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678DF3) -------------------------------------------------------- void __cdecl sub_678DF3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E01) -------------------------------------------------------- void __cdecl sub_678E01() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E0F) -------------------------------------------------------- void __cdecl sub_678E0F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E1D) -------------------------------------------------------- void __cdecl sub_678E1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E2B) -------------------------------------------------------- void __cdecl sub_678E2B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E39) -------------------------------------------------------- void __cdecl sub_678E39() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E47) -------------------------------------------------------- void __cdecl sub_678E47() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E55) -------------------------------------------------------- void __cdecl sub_678E55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E63) -------------------------------------------------------- void __cdecl sub_678E63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E71) -------------------------------------------------------- void __cdecl sub_678E71() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E7F) -------------------------------------------------------- void __cdecl sub_678E7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E8D) -------------------------------------------------------- void __cdecl sub_678E8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678E9B) -------------------------------------------------------- void __cdecl sub_678E9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678EA9) -------------------------------------------------------- void __cdecl sub_678EA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678EB7) -------------------------------------------------------- void __cdecl sub_678EB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678EC5) -------------------------------------------------------- void __cdecl sub_678EC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678ED3) -------------------------------------------------------- void __cdecl sub_678ED3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678EE1) -------------------------------------------------------- void __cdecl sub_678EE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678EEF) -------------------------------------------------------- void __cdecl sub_678EEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678EFD) -------------------------------------------------------- void __cdecl sub_678EFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F0B) -------------------------------------------------------- void __cdecl sub_678F0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F19) -------------------------------------------------------- void __cdecl sub_678F19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F27) -------------------------------------------------------- void __cdecl sub_678F27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F35) -------------------------------------------------------- void __cdecl sub_678F35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F43) -------------------------------------------------------- void __cdecl sub_678F43() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F51) -------------------------------------------------------- void __cdecl sub_678F51() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F5F) -------------------------------------------------------- void __cdecl sub_678F5F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F6D) -------------------------------------------------------- void __cdecl sub_678F6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F7B) -------------------------------------------------------- void __cdecl sub_678F7B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F89) -------------------------------------------------------- void __cdecl sub_678F89() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678F97) -------------------------------------------------------- void __cdecl sub_678F97() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FA5) -------------------------------------------------------- void __cdecl sub_678FA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FB3) -------------------------------------------------------- void __cdecl sub_678FB3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FC1) -------------------------------------------------------- void __cdecl sub_678FC1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FCF) -------------------------------------------------------- void __cdecl sub_678FCF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FDD) -------------------------------------------------------- void __cdecl sub_678FDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FEB) -------------------------------------------------------- void __cdecl sub_678FEB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00678FF9) -------------------------------------------------------- void __cdecl sub_678FF9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679007) -------------------------------------------------------- void __cdecl sub_679007() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679015) -------------------------------------------------------- void __cdecl sub_679015() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679023) -------------------------------------------------------- void __cdecl sub_679023() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679031) -------------------------------------------------------- void __cdecl sub_679031() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067903F) -------------------------------------------------------- void __cdecl sub_67903F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067904D) -------------------------------------------------------- void __cdecl sub_67904D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067905B) -------------------------------------------------------- void __cdecl sub_67905B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679069) -------------------------------------------------------- void __cdecl sub_679069() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679077) -------------------------------------------------------- void __cdecl sub_679077() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679085) -------------------------------------------------------- void __cdecl sub_679085() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679093) -------------------------------------------------------- void __cdecl sub_679093() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790A1) -------------------------------------------------------- void __cdecl sub_6790A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790AF) -------------------------------------------------------- void __cdecl sub_6790AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790BD) -------------------------------------------------------- void __cdecl sub_6790BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790CB) -------------------------------------------------------- void __cdecl sub_6790CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790D9) -------------------------------------------------------- void __cdecl sub_6790D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790E7) -------------------------------------------------------- void __cdecl sub_6790E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006790F5) -------------------------------------------------------- void __cdecl sub_6790F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679103) -------------------------------------------------------- void __cdecl sub_679103() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679111) -------------------------------------------------------- void __cdecl sub_679111() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067911F) -------------------------------------------------------- void __cdecl sub_67911F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067912D) -------------------------------------------------------- void __cdecl sub_67912D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067913B) -------------------------------------------------------- void __cdecl sub_67913B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679149) -------------------------------------------------------- void __cdecl sub_679149() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679157) -------------------------------------------------------- void __cdecl sub_679157() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679165) -------------------------------------------------------- void __cdecl sub_679165() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679173) -------------------------------------------------------- void __cdecl sub_679173() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679181) -------------------------------------------------------- void __cdecl sub_679181() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067918F) -------------------------------------------------------- void __cdecl sub_67918F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067919D) -------------------------------------------------------- void __cdecl sub_67919D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791AB) -------------------------------------------------------- void __cdecl sub_6791AB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791B9) -------------------------------------------------------- void __cdecl sub_6791B9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791C7) -------------------------------------------------------- void __cdecl sub_6791C7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791D5) -------------------------------------------------------- void __cdecl sub_6791D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791E3) -------------------------------------------------------- void __cdecl sub_6791E3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791F1) -------------------------------------------------------- void __cdecl sub_6791F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006791FF) -------------------------------------------------------- void __cdecl sub_6791FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067920D) -------------------------------------------------------- void __usercall sub_67920D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7664); } //----- (0067921B) -------------------------------------------------------- void __usercall sub_67921B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7680); } //----- (00679229) -------------------------------------------------------- void __cdecl sub_679229() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679237) -------------------------------------------------------- void __cdecl sub_679237() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679245) -------------------------------------------------------- void __cdecl sub_679245() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679253) -------------------------------------------------------- void __cdecl sub_679253() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679261) -------------------------------------------------------- void __cdecl sub_679261() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067926F) -------------------------------------------------------- void __cdecl sub_67926F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067927D) -------------------------------------------------------- void __cdecl sub_67927D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067928B) -------------------------------------------------------- void __cdecl sub_67928B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679299) -------------------------------------------------------- void __cdecl sub_679299() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792A7) -------------------------------------------------------- void __cdecl sub_6792A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792B5) -------------------------------------------------------- void __cdecl sub_6792B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792C3) -------------------------------------------------------- void __cdecl sub_6792C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792D1) -------------------------------------------------------- void __cdecl sub_6792D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792DF) -------------------------------------------------------- void __cdecl sub_6792DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792ED) -------------------------------------------------------- void __cdecl sub_6792ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006792FB) -------------------------------------------------------- void __cdecl sub_6792FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679309) -------------------------------------------------------- void __cdecl sub_679309() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679317) -------------------------------------------------------- void __usercall sub_679317(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7832); } //----- (00679325) -------------------------------------------------------- void __usercall sub_679325(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7848); } //----- (00679333) -------------------------------------------------------- void __usercall sub_679333(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7864); } //----- (00679341) -------------------------------------------------------- void __usercall sub_679341(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7880); } //----- (0067934F) -------------------------------------------------------- void __usercall sub_67934F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7896); } //----- (0067935D) -------------------------------------------------------- void __usercall sub_67935D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7912); } //----- (0067936B) -------------------------------------------------------- void __cdecl sub_67936B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679379) -------------------------------------------------------- void __cdecl sub_679379() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679387) -------------------------------------------------------- void __cdecl sub_679387() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679395) -------------------------------------------------------- void __cdecl sub_679395() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006793A3) -------------------------------------------------------- void __usercall sub_6793A3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 7960); } //----- (006793B1) -------------------------------------------------------- void __cdecl sub_6793B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006793BF) -------------------------------------------------------- void __cdecl sub_6793BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006793CD) -------------------------------------------------------- void __cdecl sub_6793CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006793DB) -------------------------------------------------------- void __cdecl sub_6793DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006793E9) -------------------------------------------------------- void __cdecl sub_6793E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006793F7) -------------------------------------------------------- void __cdecl sub_6793F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679405) -------------------------------------------------------- void __cdecl sub_679405() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679413) -------------------------------------------------------- void __cdecl sub_679413() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679421) -------------------------------------------------------- void __cdecl sub_679421() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067942F) -------------------------------------------------------- void __cdecl sub_67942F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067943D) -------------------------------------------------------- void __usercall sub_67943D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8056); } //----- (0067944B) -------------------------------------------------------- void __cdecl sub_67944B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679459) -------------------------------------------------------- void __cdecl sub_679459() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679467) -------------------------------------------------------- void __usercall sub_679467(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8088); } //----- (00679475) -------------------------------------------------------- void __cdecl sub_679475() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679483) -------------------------------------------------------- void __usercall sub_679483(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8112); } //----- (00679491) -------------------------------------------------------- void __cdecl sub_679491() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067949F) -------------------------------------------------------- void __cdecl sub_67949F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006794AD) -------------------------------------------------------- void __cdecl sub_6794AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006794BB) -------------------------------------------------------- void __cdecl sub_6794BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006794C9) -------------------------------------------------------- void __cdecl sub_6794C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006794D7) -------------------------------------------------------- void __cdecl sub_6794D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006794E5) -------------------------------------------------------- void __usercall sub_6794E5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8176); } //----- (006794F3) -------------------------------------------------------- void __usercall sub_6794F3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8192); } //----- (00679501) -------------------------------------------------------- void __cdecl sub_679501() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067950F) -------------------------------------------------------- void __cdecl sub_67950F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067951D) -------------------------------------------------------- void __cdecl sub_67951D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067952B) -------------------------------------------------------- void __cdecl sub_67952B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679539) -------------------------------------------------------- void __cdecl sub_679539() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679547) -------------------------------------------------------- void __cdecl sub_679547() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679555) -------------------------------------------------------- void __cdecl sub_679555() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679563) -------------------------------------------------------- void __cdecl sub_679563() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679571) -------------------------------------------------------- void __cdecl sub_679571() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067957F) -------------------------------------------------------- void __cdecl sub_67957F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067958D) -------------------------------------------------------- void __cdecl sub_67958D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067959B) -------------------------------------------------------- void __cdecl sub_67959B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795A9) -------------------------------------------------------- void __cdecl sub_6795A9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795B7) -------------------------------------------------------- void __cdecl sub_6795B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795C5) -------------------------------------------------------- void __cdecl sub_6795C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795D3) -------------------------------------------------------- void __cdecl sub_6795D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795E1) -------------------------------------------------------- void __cdecl sub_6795E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795EF) -------------------------------------------------------- void __cdecl sub_6795EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006795FD) -------------------------------------------------------- void __cdecl sub_6795FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067960B) -------------------------------------------------------- void __cdecl sub_67960B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679619) -------------------------------------------------------- void __cdecl sub_679619() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679627) -------------------------------------------------------- void __cdecl sub_679627() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679635) -------------------------------------------------------- void __cdecl sub_679635() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679643) -------------------------------------------------------- void __cdecl sub_679643() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679651) -------------------------------------------------------- void __cdecl sub_679651() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067965F) -------------------------------------------------------- void __cdecl sub_67965F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067966D) -------------------------------------------------------- void __cdecl sub_67966D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067967B) -------------------------------------------------------- void __cdecl sub_67967B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679689) -------------------------------------------------------- void __cdecl sub_679689() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679697) -------------------------------------------------------- void __cdecl sub_679697() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006796A5) -------------------------------------------------------- void __cdecl sub_6796A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006796B3) -------------------------------------------------------- void __cdecl sub_6796B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006796C1) -------------------------------------------------------- void __cdecl sub_6796C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006796CF) -------------------------------------------------------- void __cdecl sub_6796CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006796DD) -------------------------------------------------------- void __cdecl sub_6796DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006796EB) -------------------------------------------------------- void __usercall sub_6796EB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8708); } //----- (006796F9) -------------------------------------------------------- void __usercall sub_6796F9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8724); } //----- (00679707) -------------------------------------------------------- void __cdecl sub_679707() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679715) -------------------------------------------------------- void __cdecl sub_679715() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679723) -------------------------------------------------------- void __cdecl sub_679723() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679731) -------------------------------------------------------- void __cdecl sub_679731() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067973F) -------------------------------------------------------- void __usercall sub_67973F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8772); } //----- (0067974D) -------------------------------------------------------- void __usercall sub_67974D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8788); } //----- (0067975B) -------------------------------------------------------- void __cdecl sub_67975B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679769) -------------------------------------------------------- void __cdecl sub_679769() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679777) -------------------------------------------------------- void __cdecl sub_679777() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679785) -------------------------------------------------------- void __cdecl sub_679785() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679793) -------------------------------------------------------- void __cdecl sub_679793() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006797A1) -------------------------------------------------------- void __usercall sub_6797A1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8888); } //----- (006797AF) -------------------------------------------------------- void __cdecl sub_6797AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006797BD) -------------------------------------------------------- void __cdecl sub_6797BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006797CB) -------------------------------------------------------- void __cdecl sub_6797CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006797D9) -------------------------------------------------------- void __usercall sub_6797D9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 8928); } //----- (006797E7) -------------------------------------------------------- void __cdecl sub_6797E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006797F5) -------------------------------------------------------- void __cdecl sub_6797F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679803) -------------------------------------------------------- void __cdecl sub_679803() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679811) -------------------------------------------------------- void __cdecl sub_679811() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067981F) -------------------------------------------------------- void __cdecl sub_67981F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067982D) -------------------------------------------------------- void __cdecl sub_67982D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067983B) -------------------------------------------------------- void __cdecl sub_67983B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679849) -------------------------------------------------------- void __usercall sub_679849(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9000); } //----- (00679857) -------------------------------------------------------- void __cdecl sub_679857() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679865) -------------------------------------------------------- void __cdecl sub_679865() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679873) -------------------------------------------------------- void __cdecl sub_679873() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679881) -------------------------------------------------------- void __cdecl sub_679881() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067988F) -------------------------------------------------------- void __cdecl sub_67988F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067989D) -------------------------------------------------------- void __cdecl sub_67989D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006798AB) -------------------------------------------------------- void __usercall sub_6798AB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9064); } //----- (006798B9) -------------------------------------------------------- void __usercall sub_6798B9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9080); } //----- (006798C7) -------------------------------------------------------- void __usercall sub_6798C7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9096); } //----- (006798D5) -------------------------------------------------------- void __cdecl sub_6798D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006798E3) -------------------------------------------------------- void __cdecl sub_6798E3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006798F1) -------------------------------------------------------- void __cdecl sub_6798F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006798FF) -------------------------------------------------------- void __cdecl sub_6798FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067990D) -------------------------------------------------------- void __usercall sub_67990D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9144); } //----- (0067991B) -------------------------------------------------------- void __cdecl sub_67991B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679929) -------------------------------------------------------- void __cdecl sub_679929() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679937) -------------------------------------------------------- void __cdecl sub_679937() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679945) -------------------------------------------------------- void __cdecl sub_679945() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679953) -------------------------------------------------------- void __cdecl sub_679953() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679961) -------------------------------------------------------- void __cdecl sub_679961() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067996F) -------------------------------------------------------- void __cdecl sub_67996F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067997D) -------------------------------------------------------- void __usercall sub_67997D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9216); } //----- (0067998B) -------------------------------------------------------- void __cdecl sub_67998B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679999) -------------------------------------------------------- void __cdecl sub_679999() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006799A7) -------------------------------------------------------- void __cdecl sub_6799A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006799B5) -------------------------------------------------------- void __usercall sub_6799B5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9256); } //----- (006799C3) -------------------------------------------------------- void __cdecl sub_6799C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006799D1) -------------------------------------------------------- void __usercall sub_6799D1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 16) + 9280); } //----- (006799DF) -------------------------------------------------------- void __cdecl sub_6799DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006799ED) -------------------------------------------------------- void __cdecl sub_6799ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (006799FB) -------------------------------------------------------- void __cdecl sub_6799FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A09) -------------------------------------------------------- void __cdecl sub_679A09() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A17) -------------------------------------------------------- void __cdecl sub_679A17() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A25) -------------------------------------------------------- void __cdecl sub_679A25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A33) -------------------------------------------------------- void __cdecl sub_679A33() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A41) -------------------------------------------------------- void __cdecl sub_679A41() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A4F) -------------------------------------------------------- void __cdecl sub_679A4F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A5D) -------------------------------------------------------- void __cdecl sub_679A5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A6B) -------------------------------------------------------- void __cdecl sub_679A6B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A79) -------------------------------------------------------- void __cdecl sub_679A79() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A87) -------------------------------------------------------- void __cdecl sub_679A87() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679A95) -------------------------------------------------------- void __cdecl sub_679A95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679AA3) -------------------------------------------------------- void __cdecl sub_679AA3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679AB1) -------------------------------------------------------- void __cdecl sub_679AB1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679ABF) -------------------------------------------------------- void __cdecl sub_679ABF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679ACD) -------------------------------------------------------- void __cdecl sub_679ACD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679ADB) -------------------------------------------------------- void __cdecl sub_679ADB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679AE9) -------------------------------------------------------- void __cdecl sub_679AE9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679AF7) -------------------------------------------------------- void __cdecl sub_679AF7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B05) -------------------------------------------------------- void __cdecl sub_679B05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B13) -------------------------------------------------------- void __cdecl sub_679B13() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B21) -------------------------------------------------------- void __cdecl sub_679B21() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B2F) -------------------------------------------------------- void __cdecl sub_679B2F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B3D) -------------------------------------------------------- void __cdecl sub_679B3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B4B) -------------------------------------------------------- void __cdecl sub_679B4B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B59) -------------------------------------------------------- void __cdecl sub_679B59() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B67) -------------------------------------------------------- void __cdecl sub_679B67() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B75) -------------------------------------------------------- void __cdecl sub_679B75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B7D) -------------------------------------------------------- void __cdecl sub_679B7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B85) -------------------------------------------------------- void __cdecl sub_679B85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B8D) -------------------------------------------------------- void __cdecl sub_679B8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B95) -------------------------------------------------------- void __cdecl sub_679B95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679B9D) -------------------------------------------------------- void __cdecl sub_679B9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BA5) -------------------------------------------------------- void __cdecl sub_679BA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BAD) -------------------------------------------------------- void __cdecl sub_679BAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BB5) -------------------------------------------------------- void __cdecl sub_679BB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BBD) -------------------------------------------------------- void __cdecl sub_679BBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BC5) -------------------------------------------------------- void __cdecl sub_679BC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BCD) -------------------------------------------------------- void __cdecl sub_679BCD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BD5) -------------------------------------------------------- void __cdecl sub_679BD5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BDD) -------------------------------------------------------- void __cdecl sub_679BDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BE5) -------------------------------------------------------- void __cdecl sub_679BE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BED) -------------------------------------------------------- void __cdecl sub_679BED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BF5) -------------------------------------------------------- void __cdecl sub_679BF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679BFD) -------------------------------------------------------- void __cdecl sub_679BFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C05) -------------------------------------------------------- void __cdecl sub_679C05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C0D) -------------------------------------------------------- void __cdecl sub_679C0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C15) -------------------------------------------------------- void __cdecl sub_679C15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C1D) -------------------------------------------------------- void __cdecl sub_679C1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C25) -------------------------------------------------------- void __cdecl sub_679C25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C2D) -------------------------------------------------------- void __cdecl sub_679C2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C35) -------------------------------------------------------- void __cdecl sub_679C35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C3D) -------------------------------------------------------- void __cdecl sub_679C3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C45) -------------------------------------------------------- void __cdecl sub_679C45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C4D) -------------------------------------------------------- void __cdecl sub_679C4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C55) -------------------------------------------------------- void __cdecl sub_679C55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C5D) -------------------------------------------------------- void __cdecl sub_679C5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C65) -------------------------------------------------------- void __cdecl sub_679C65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C6D) -------------------------------------------------------- void __cdecl sub_679C6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C75) -------------------------------------------------------- void __cdecl sub_679C75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C7D) -------------------------------------------------------- void __cdecl sub_679C7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C85) -------------------------------------------------------- void __cdecl sub_679C85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C8D) -------------------------------------------------------- void __cdecl sub_679C8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C95) -------------------------------------------------------- void __cdecl sub_679C95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679C9D) -------------------------------------------------------- void __cdecl sub_679C9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CA5) -------------------------------------------------------- void __cdecl sub_679CA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CAD) -------------------------------------------------------- void __cdecl sub_679CAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CB5) -------------------------------------------------------- void __cdecl sub_679CB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CBD) -------------------------------------------------------- void __cdecl sub_679CBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CC5) -------------------------------------------------------- void __cdecl sub_679CC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CCD) -------------------------------------------------------- void __cdecl sub_679CCD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CD5) -------------------------------------------------------- void __cdecl sub_679CD5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CDD) -------------------------------------------------------- void __cdecl sub_679CDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CE5) -------------------------------------------------------- void __cdecl sub_679CE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CED) -------------------------------------------------------- void __cdecl sub_679CED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CF5) -------------------------------------------------------- void __cdecl sub_679CF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679CFD) -------------------------------------------------------- void __cdecl sub_679CFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D05) -------------------------------------------------------- void __cdecl sub_679D05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D0D) -------------------------------------------------------- void __cdecl sub_679D0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D15) -------------------------------------------------------- void __cdecl sub_679D15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D1D) -------------------------------------------------------- void __cdecl sub_679D1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D25) -------------------------------------------------------- void __cdecl sub_679D25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D2D) -------------------------------------------------------- void __cdecl sub_679D2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D35) -------------------------------------------------------- void __cdecl sub_679D35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D3D) -------------------------------------------------------- void __cdecl sub_679D3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D45) -------------------------------------------------------- void __cdecl sub_679D45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D4D) -------------------------------------------------------- void __cdecl sub_679D4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D55) -------------------------------------------------------- void __cdecl sub_679D55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D5D) -------------------------------------------------------- void __cdecl sub_679D5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D65) -------------------------------------------------------- void __cdecl sub_679D65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D6D) -------------------------------------------------------- void __cdecl sub_679D6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D75) -------------------------------------------------------- void __cdecl sub_679D75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D7D) -------------------------------------------------------- void __cdecl sub_679D7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D85) -------------------------------------------------------- void __cdecl sub_679D85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D8D) -------------------------------------------------------- void __cdecl sub_679D8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D95) -------------------------------------------------------- void __cdecl sub_679D95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679D9D) -------------------------------------------------------- void __cdecl sub_679D9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DA5) -------------------------------------------------------- void __cdecl sub_679DA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DAD) -------------------------------------------------------- void __cdecl sub_679DAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DB5) -------------------------------------------------------- void __cdecl sub_679DB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DBD) -------------------------------------------------------- void __cdecl sub_679DBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DC5) -------------------------------------------------------- void __cdecl sub_679DC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DCD) -------------------------------------------------------- void __cdecl sub_679DCD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DD5) -------------------------------------------------------- void __cdecl sub_679DD5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DDD) -------------------------------------------------------- void __cdecl sub_679DDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DE5) -------------------------------------------------------- void __cdecl sub_679DE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DED) -------------------------------------------------------- void __cdecl sub_679DED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DF5) -------------------------------------------------------- void __cdecl sub_679DF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679DFD) -------------------------------------------------------- void __cdecl sub_679DFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E05) -------------------------------------------------------- void __cdecl sub_679E05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E0D) -------------------------------------------------------- void __cdecl sub_679E0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E15) -------------------------------------------------------- void __cdecl sub_679E15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E1D) -------------------------------------------------------- void __cdecl sub_679E1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E25) -------------------------------------------------------- void __cdecl sub_679E25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E2D) -------------------------------------------------------- void __cdecl sub_679E2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E35) -------------------------------------------------------- void __cdecl sub_679E35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E3D) -------------------------------------------------------- void __cdecl sub_679E3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E45) -------------------------------------------------------- void __cdecl sub_679E45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E4D) -------------------------------------------------------- void __cdecl sub_679E4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E55) -------------------------------------------------------- void __cdecl sub_679E55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E5D) -------------------------------------------------------- void __cdecl sub_679E5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E65) -------------------------------------------------------- void __cdecl sub_679E65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E6D) -------------------------------------------------------- void __cdecl sub_679E6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E75) -------------------------------------------------------- void __cdecl sub_679E75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E7D) -------------------------------------------------------- void __cdecl sub_679E7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E85) -------------------------------------------------------- void __cdecl sub_679E85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E8D) -------------------------------------------------------- void __cdecl sub_679E8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E95) -------------------------------------------------------- void __cdecl sub_679E95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679E9D) -------------------------------------------------------- void __cdecl sub_679E9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EA5) -------------------------------------------------------- void __cdecl sub_679EA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EAD) -------------------------------------------------------- void __cdecl sub_679EAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EB5) -------------------------------------------------------- void __cdecl sub_679EB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EBD) -------------------------------------------------------- void __cdecl sub_679EBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EC5) -------------------------------------------------------- void __cdecl sub_679EC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679ECD) -------------------------------------------------------- void __cdecl sub_679ECD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679ED5) -------------------------------------------------------- void __cdecl sub_679ED5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EDD) -------------------------------------------------------- void __cdecl sub_679EDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EE5) -------------------------------------------------------- void __cdecl sub_679EE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EED) -------------------------------------------------------- void __cdecl sub_679EED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EF5) -------------------------------------------------------- void __cdecl sub_679EF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679EFD) -------------------------------------------------------- void __cdecl sub_679EFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F05) -------------------------------------------------------- void __cdecl sub_679F05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F0D) -------------------------------------------------------- void __cdecl sub_679F0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F15) -------------------------------------------------------- void __cdecl sub_679F15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F1D) -------------------------------------------------------- void __cdecl sub_679F1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F25) -------------------------------------------------------- void __cdecl sub_679F25() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F2D) -------------------------------------------------------- void __cdecl sub_679F2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F35) -------------------------------------------------------- void __cdecl sub_679F35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F3D) -------------------------------------------------------- void __cdecl sub_679F3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F45) -------------------------------------------------------- void __cdecl sub_679F45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F4D) -------------------------------------------------------- void __cdecl sub_679F4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F55) -------------------------------------------------------- void __cdecl sub_679F55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F5D) -------------------------------------------------------- void __cdecl sub_679F5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F65) -------------------------------------------------------- void __cdecl sub_679F65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F6D) -------------------------------------------------------- void __cdecl sub_679F6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F75) -------------------------------------------------------- void __cdecl sub_679F75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F7D) -------------------------------------------------------- void __cdecl sub_679F7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F85) -------------------------------------------------------- void __cdecl sub_679F85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F8D) -------------------------------------------------------- void __cdecl sub_679F8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F95) -------------------------------------------------------- void __cdecl sub_679F95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679F9D) -------------------------------------------------------- void __cdecl sub_679F9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FA5) -------------------------------------------------------- void __cdecl sub_679FA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FAD) -------------------------------------------------------- void __cdecl sub_679FAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FB5) -------------------------------------------------------- void __cdecl sub_679FB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FBD) -------------------------------------------------------- void __cdecl sub_679FBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FC5) -------------------------------------------------------- void __cdecl sub_679FC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FCD) -------------------------------------------------------- void __cdecl sub_679FCD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FD5) -------------------------------------------------------- void __cdecl sub_679FD5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FDD) -------------------------------------------------------- void __cdecl sub_679FDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FE5) -------------------------------------------------------- void __cdecl sub_679FE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FED) -------------------------------------------------------- void __cdecl sub_679FED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FF5) -------------------------------------------------------- void __cdecl sub_679FF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (00679FFD) -------------------------------------------------------- void __cdecl sub_679FFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A005) -------------------------------------------------------- void __cdecl sub_67A005() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A00D) -------------------------------------------------------- void __cdecl sub_67A00D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A015) -------------------------------------------------------- void __cdecl sub_67A015() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A01D) -------------------------------------------------------- void __cdecl sub_67A01D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A025) -------------------------------------------------------- void __cdecl sub_67A025() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A02D) -------------------------------------------------------- void __cdecl sub_67A02D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A035) -------------------------------------------------------- void __cdecl sub_67A035() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A03D) -------------------------------------------------------- void __cdecl sub_67A03D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A045) -------------------------------------------------------- void __cdecl sub_67A045() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A04D) -------------------------------------------------------- void __cdecl sub_67A04D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A055) -------------------------------------------------------- void __cdecl sub_67A055() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A05D) -------------------------------------------------------- void __cdecl sub_67A05D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A065) -------------------------------------------------------- void __cdecl sub_67A065() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A06D) -------------------------------------------------------- void __cdecl sub_67A06D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A075) -------------------------------------------------------- void __cdecl sub_67A075() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A07D) -------------------------------------------------------- void __cdecl sub_67A07D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A085) -------------------------------------------------------- void __cdecl sub_67A085() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A08D) -------------------------------------------------------- void __cdecl sub_67A08D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A095) -------------------------------------------------------- void __cdecl sub_67A095() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A09D) -------------------------------------------------------- void __cdecl sub_67A09D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0A5) -------------------------------------------------------- void __cdecl sub_67A0A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0AD) -------------------------------------------------------- void __cdecl sub_67A0AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0B5) -------------------------------------------------------- void __cdecl sub_67A0B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0BD) -------------------------------------------------------- void __cdecl sub_67A0BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0C5) -------------------------------------------------------- void __cdecl sub_67A0C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0CD) -------------------------------------------------------- void __cdecl sub_67A0CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0D5) -------------------------------------------------------- void __cdecl sub_67A0D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0DD) -------------------------------------------------------- void __cdecl sub_67A0DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0E5) -------------------------------------------------------- void __cdecl sub_67A0E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0ED) -------------------------------------------------------- void __cdecl sub_67A0ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0F5) -------------------------------------------------------- void __cdecl sub_67A0F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A0FD) -------------------------------------------------------- void __cdecl sub_67A0FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A105) -------------------------------------------------------- void __cdecl sub_67A105() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A10D) -------------------------------------------------------- void __cdecl sub_67A10D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A115) -------------------------------------------------------- void __cdecl sub_67A115() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A11D) -------------------------------------------------------- void __cdecl sub_67A11D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A125) -------------------------------------------------------- void __cdecl sub_67A125() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A12D) -------------------------------------------------------- void __cdecl sub_67A12D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A135) -------------------------------------------------------- void __cdecl sub_67A135() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A13D) -------------------------------------------------------- void __cdecl sub_67A13D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A145) -------------------------------------------------------- void __cdecl sub_67A145() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067A14D) -------------------------------------------------------- int __cdecl sub_67A14D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A170) -------------------------------------------------------- int __usercall sub_67A170(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067A178) -------------------------------------------------------- int __usercall sub_67A178(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0067A180) -------------------------------------------------------- int __usercall sub_67A180(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0067A188) -------------------------------------------------------- int __cdecl sub_67A188(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A1B0) -------------------------------------------------------- int __usercall sub_67A1B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067A1B8) -------------------------------------------------------- int __usercall sub_67A1B8(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0067A1C0) -------------------------------------------------------- int __cdecl sub_67A1C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A1E0) -------------------------------------------------------- void __usercall sub_67A1E0(int a1) { **(_DWORD **)(a1 - 16) = &off_69EE3C; } // 69EE3C: using guessed type int (*off_69EE3C)(); //----- (0067A1E8) -------------------------------------------------------- void __cdecl sub_67A1E8() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A1F3) -------------------------------------------------------- void __cdecl sub_67A1F3() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A1FE) -------------------------------------------------------- void __cdecl sub_67A1FE() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A209) -------------------------------------------------------- void __cdecl sub_67A209() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A214) -------------------------------------------------------- void __cdecl sub_67A214() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A21F) -------------------------------------------------------- void __cdecl sub_67A21F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A22A) -------------------------------------------------------- void __cdecl sub_67A22A() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A235) -------------------------------------------------------- void __cdecl sub_67A235() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A240) -------------------------------------------------------- void __cdecl sub_67A240() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A24B) -------------------------------------------------------- void __cdecl sub_67A24B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A256) -------------------------------------------------------- void __cdecl sub_67A256() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A261) -------------------------------------------------------- void __cdecl sub_67A261() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A26C) -------------------------------------------------------- void __cdecl sub_67A26C() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A277) -------------------------------------------------------- void __cdecl sub_67A277() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A282) -------------------------------------------------------- void __cdecl sub_67A282() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A28D) -------------------------------------------------------- void __cdecl sub_67A28D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A298) -------------------------------------------------------- void __cdecl sub_67A298() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2A3) -------------------------------------------------------- void __cdecl sub_67A2A3() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2AE) -------------------------------------------------------- void __cdecl sub_67A2AE() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2B9) -------------------------------------------------------- void __cdecl sub_67A2B9() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2C4) -------------------------------------------------------- void __cdecl sub_67A2C4() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2CF) -------------------------------------------------------- void __cdecl sub_67A2CF() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2DA) -------------------------------------------------------- void __cdecl sub_67A2DA() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2E5) -------------------------------------------------------- void __cdecl sub_67A2E5() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2F0) -------------------------------------------------------- void __cdecl sub_67A2F0() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A2FB) -------------------------------------------------------- void __cdecl sub_67A2FB() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A306) -------------------------------------------------------- void __cdecl sub_67A306() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A311) -------------------------------------------------------- void __cdecl sub_67A311() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A31C) -------------------------------------------------------- void __cdecl sub_67A31C() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A327) -------------------------------------------------------- void __cdecl sub_67A327() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A332) -------------------------------------------------------- void __cdecl sub_67A332() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A33D) -------------------------------------------------------- void __cdecl sub_67A33D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A34B) -------------------------------------------------------- void __cdecl sub_67A34B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A359) -------------------------------------------------------- void __cdecl sub_67A359() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A367) -------------------------------------------------------- void __cdecl sub_67A367() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A375) -------------------------------------------------------- void __cdecl sub_67A375() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A383) -------------------------------------------------------- void __cdecl sub_67A383() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A391) -------------------------------------------------------- void __cdecl sub_67A391() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A39F) -------------------------------------------------------- void __cdecl sub_67A39F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A3AD) -------------------------------------------------------- void __cdecl sub_67A3AD() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A3BB) -------------------------------------------------------- void __cdecl sub_67A3BB() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A3C9) -------------------------------------------------------- void __cdecl sub_67A3C9() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A3D7) -------------------------------------------------------- void __cdecl sub_67A3D7() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A3E5) -------------------------------------------------------- void __cdecl sub_67A3E5() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A3F3) -------------------------------------------------------- void __cdecl sub_67A3F3() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A401) -------------------------------------------------------- void __cdecl sub_67A401() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A40F) -------------------------------------------------------- void __cdecl sub_67A40F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A41D) -------------------------------------------------------- void __cdecl sub_67A41D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A42B) -------------------------------------------------------- void __cdecl sub_67A42B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A439) -------------------------------------------------------- void __cdecl sub_67A439() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A447) -------------------------------------------------------- void __cdecl sub_67A447() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A455) -------------------------------------------------------- void __cdecl sub_67A455() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A463) -------------------------------------------------------- void __cdecl sub_67A463() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A471) -------------------------------------------------------- void __cdecl sub_67A471() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A47F) -------------------------------------------------------- void __cdecl sub_67A47F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A48D) -------------------------------------------------------- void __cdecl sub_67A48D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A49B) -------------------------------------------------------- void __cdecl sub_67A49B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4A9) -------------------------------------------------------- void __cdecl sub_67A4A9() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4B7) -------------------------------------------------------- void __cdecl sub_67A4B7() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4C5) -------------------------------------------------------- void __cdecl sub_67A4C5() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4D3) -------------------------------------------------------- void __cdecl sub_67A4D3() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4E1) -------------------------------------------------------- void __cdecl sub_67A4E1() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4EF) -------------------------------------------------------- void __cdecl sub_67A4EF() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A4FD) -------------------------------------------------------- void __cdecl sub_67A4FD() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A50B) -------------------------------------------------------- void __cdecl sub_67A50B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A519) -------------------------------------------------------- void __cdecl sub_67A519() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A527) -------------------------------------------------------- void __cdecl sub_67A527() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A535) -------------------------------------------------------- void __cdecl sub_67A535() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A543) -------------------------------------------------------- void __cdecl sub_67A543() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A551) -------------------------------------------------------- void __cdecl sub_67A551() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A55F) -------------------------------------------------------- void __cdecl sub_67A55F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A56D) -------------------------------------------------------- void __cdecl sub_67A56D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A57B) -------------------------------------------------------- void __cdecl sub_67A57B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A589) -------------------------------------------------------- void __cdecl sub_67A589() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A597) -------------------------------------------------------- void __cdecl sub_67A597() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5A5) -------------------------------------------------------- void __cdecl sub_67A5A5() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5B3) -------------------------------------------------------- void __cdecl sub_67A5B3() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5C1) -------------------------------------------------------- void __cdecl sub_67A5C1() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5CF) -------------------------------------------------------- void __cdecl sub_67A5CF() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5DD) -------------------------------------------------------- void __cdecl sub_67A5DD() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5EB) -------------------------------------------------------- void __cdecl sub_67A5EB() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A5F9) -------------------------------------------------------- void __cdecl sub_67A5F9() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A607) -------------------------------------------------------- void __cdecl sub_67A607() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A615) -------------------------------------------------------- void __cdecl sub_67A615() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A623) -------------------------------------------------------- void __cdecl sub_67A623() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A631) -------------------------------------------------------- void __cdecl sub_67A631() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A63F) -------------------------------------------------------- void __cdecl sub_67A63F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A64D) -------------------------------------------------------- void __cdecl sub_67A64D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A65B) -------------------------------------------------------- void __cdecl sub_67A65B() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A669) -------------------------------------------------------- void __cdecl sub_67A669() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A677) -------------------------------------------------------- void __cdecl sub_67A677() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A685) -------------------------------------------------------- void __cdecl sub_67A685() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A693) -------------------------------------------------------- void __cdecl sub_67A693() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6A1) -------------------------------------------------------- void __cdecl sub_67A6A1() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6AF) -------------------------------------------------------- void __cdecl sub_67A6AF() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6BD) -------------------------------------------------------- void __cdecl sub_67A6BD() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6CB) -------------------------------------------------------- void __cdecl sub_67A6CB() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6D9) -------------------------------------------------------- void __cdecl sub_67A6D9() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6E7) -------------------------------------------------------- void __cdecl sub_67A6E7() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A6F5) -------------------------------------------------------- void __cdecl sub_67A6F5() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A703) -------------------------------------------------------- void __cdecl sub_67A703() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A711) -------------------------------------------------------- void __cdecl sub_67A711() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A71F) -------------------------------------------------------- void __cdecl sub_67A71F() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A72D) -------------------------------------------------------- void __cdecl sub_67A72D() { JUMPOUT(loc_401370); } // 401370: using guessed type int loc_401370(); //----- (0067A73B) -------------------------------------------------------- int __cdecl sub_67A73B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A760) -------------------------------------------------------- void __cdecl sub_67A760() { JUMPOUT(loc_401A00); } // 401A00: using guessed type int loc_401A00(); //----- (0067A76B) -------------------------------------------------------- int __cdecl sub_67A76B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A790) -------------------------------------------------------- int __usercall sub_67A790(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067A7C0) -------------------------------------------------------- int __usercall sub_67A7C0(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0067A7C8) -------------------------------------------------------- int __cdecl sub_67A7C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A7F0) -------------------------------------------------------- int __usercall sub_67A7F0(int a1) { return sub_4026F0((int *)(a1 - 1640)); } //----- (0067A7FB) -------------------------------------------------------- int __usercall sub_67A7FB(int a1) { return sub_401AB0(a1 - 1632); } // 401AB0: using guessed type int __thiscall sub_401AB0(_DWORD); //----- (0067A806) -------------------------------------------------------- void __usercall sub_67A806(int a1) { *(_DWORD *)(a1 - 1628) = &off_69FD50; sub_4C11C0((void *)(a1 - 1628)); } // 69FD50: using guessed type int (__stdcall *off_69FD50)(int, int, int); //----- (0067A811) -------------------------------------------------------- int __cdecl sub_67A811(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 411)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A840) -------------------------------------------------------- void __cdecl sub_67A840() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (0067A848) -------------------------------------------------------- int __cdecl sub_67A848(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A870) -------------------------------------------------------- void __cdecl sub_67A870() { JUMPOUT(loc_401A00); } // 401A00: using guessed type int loc_401A00(); //----- (0067A878) -------------------------------------------------------- void __usercall sub_67A878(int a1) { sub_401A10(a1 - 132); } //----- (0067A883) -------------------------------------------------------- void __cdecl sub_67A883() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (0067A88E) -------------------------------------------------------- void __cdecl sub_67A88E() { JUMPOUT(loc_401A00); } // 401A00: using guessed type int loc_401A00(); //----- (0067A896) -------------------------------------------------------- int __cdecl sub_67A896(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A8C0) -------------------------------------------------------- int __usercall sub_67A8C0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067A8C8) -------------------------------------------------------- int __usercall sub_67A8C8(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0067A8D0) -------------------------------------------------------- int __usercall sub_67A8D0(int a1) { return sub_428A70((void *)(a1 - 44)); } //----- (0067A8D8) -------------------------------------------------------- int __usercall sub_67A8D8(int a1) { return sub_428A70((void *)(a1 - 56)); } //----- (0067A8E0) -------------------------------------------------------- int __cdecl sub_67A8E0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A900) -------------------------------------------------------- int __usercall sub_67A900(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067A908) -------------------------------------------------------- int __cdecl sub_67A908(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A930) -------------------------------------------------------- int __usercall sub_67A930(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0067A938) -------------------------------------------------------- int __usercall sub_67A938(int a1) { return sub_428A70((void *)(a1 - 36)); } //----- (0067A940) -------------------------------------------------------- void __usercall sub_67A940(int a1) { nullsub_2((void *)(a1 - 80)); } //----- (0067A948) -------------------------------------------------------- void __usercall sub_67A948(int a1) { nullsub_2((void *)(a1 - 124)); } //----- (0067A950) -------------------------------------------------------- int __cdecl sub_67A950(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 32)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A970) -------------------------------------------------------- int __usercall sub_67A970(int a1) { return sub_4026F0((int *)(a1 - 168)); } //----- (0067A97B) -------------------------------------------------------- void __cdecl sub_67A97B() { JUMPOUT(loc_401A00); } // 401A00: using guessed type int loc_401A00(); //----- (0067A983) -------------------------------------------------------- void __usercall sub_67A983(int a1) { sub_401A10(a1 - 132); } //----- (0067A98E) -------------------------------------------------------- void __cdecl sub_67A98E() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (0067A999) -------------------------------------------------------- void __cdecl sub_67A999() { JUMPOUT(loc_401A00); } // 401A00: using guessed type int loc_401A00(); //----- (0067A9A1) -------------------------------------------------------- void __cdecl sub_67A9A1() { JUMPOUT(loc_401A00); } // 401A00: using guessed type int loc_401A00(); //----- (0067A9A9) -------------------------------------------------------- int __cdecl sub_67A9A9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 43)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067A9E0) -------------------------------------------------------- int __usercall sub_67A9E0(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0067A9E8) -------------------------------------------------------- void __cdecl sub_67A9E8() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (0067A9F0) -------------------------------------------------------- int __cdecl sub_67A9F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AA10) -------------------------------------------------------- void __usercall sub_67AA10(int a1) { nullsub_2((void *)(a1 - 60)); } //----- (0067AA18) -------------------------------------------------------- void __usercall sub_67AA18(int a1) { nullsub_2((void *)(a1 - 104)); } //----- (0067AA20) -------------------------------------------------------- int __cdecl sub_67AA20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AA40) -------------------------------------------------------- int __usercall sub_67AA40(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0067AA70) -------------------------------------------------------- int __usercall sub_67AA70(int a1) { return sub_4026F0((int *)(a1 - 1644)); } //----- (0067AA7B) -------------------------------------------------------- int __usercall sub_67AA7B(int a1) { return sub_401AB0(a1 - 1632); } // 401AB0: using guessed type int __thiscall sub_401AB0(_DWORD); //----- (0067AA86) -------------------------------------------------------- void __cdecl sub_67AA86() { JUMPOUT(loc_401FC0); } // 401FC0: using guessed type int loc_401FC0(); //----- (0067AA91) -------------------------------------------------------- int __cdecl sub_67AA91(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 412)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AAC0) -------------------------------------------------------- void __usercall sub_67AAC0(int a1) { nullsub_2((void *)(a1 - 3304)); } //----- (0067AACB) -------------------------------------------------------- void __usercall sub_67AACB(int a1) { nullsub_2((void *)(a1 - 3304)); } //----- (0067AAD6) -------------------------------------------------------- int __usercall sub_67AAD6(int a1) { return sub_401AB0(a1 - 1632); } // 401AB0: using guessed type int __thiscall sub_401AB0(_DWORD); //----- (0067AAE1) -------------------------------------------------------- void __usercall sub_67AAE1(int a1) { *(_DWORD *)(a1 - 3248) = &off_69FDD4; sub_4C11C0((void *)(a1 - 3248)); } // 69FDD4: using guessed type int (__stdcall *off_69FDD4)(int, int, int); //----- (0067AAEC) -------------------------------------------------------- int __cdecl sub_67AAEC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 827)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AB20) -------------------------------------------------------- int __usercall sub_67AB20(int a1) { return _LN21(*(void **)(a1 - 16), 0x74u, 29, (void (__thiscall *)(void *))sub_401A10); } //----- (0067AB33) -------------------------------------------------------- int __cdecl sub_67AB33(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AB80) -------------------------------------------------------- int __usercall sub_67AB80(int a1) { return sub_4026F0((int *)(a1 - 3664)); } //----- (0067AB8B) -------------------------------------------------------- int __usercall sub_67AB8B(int a1) { return sub_401AB0(a1 - 3608); } // 401AB0: using guessed type int __thiscall sub_401AB0(_DWORD); //----- (0067AB96) -------------------------------------------------------- int __usercall sub_67AB96(int a1) { return sub_401AB0(a1 - 1992); } // 401AB0: using guessed type int __thiscall sub_401AB0(_DWORD); //----- (0067ABA1) -------------------------------------------------------- int __usercall sub_67ABA1(int a1) { return sub_428A70((void *)(a1 - 3660)); } //----- (0067ABAC) -------------------------------------------------------- int __cdecl sub_67ABAC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 917)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ABE0) -------------------------------------------------------- int __usercall sub_67ABE0(int a1) { return sub_401AB0(a1 - 1632); } // 401AB0: using guessed type int __thiscall sub_401AB0(_DWORD); //----- (0067ABEB) -------------------------------------------------------- int __usercall sub_67ABEB(int a1) { return sub_428A70((void *)(a1 - 1676)); } //----- (0067ABF6) -------------------------------------------------------- int __cdecl sub_67ABF6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 420)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AC20) -------------------------------------------------------- void __usercall sub_67AC20(int a1) { *(_DWORD *)(a1 - 20) = &off_6A0514; } // 6A0514: using guessed type int (__stdcall *off_6A0514)(int, int); //----- (0067AC28) -------------------------------------------------------- int __cdecl sub_67AC28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AC50) -------------------------------------------------------- int __usercall sub_67AC50(int a1) { return sub_4026F0((int *)(a1 - 1644)); } //----- (0067AC5B) -------------------------------------------------------- void __usercall sub_67AC5B(int a1) { *(_DWORD *)(a1 - 1632) = &off_69FB7C; sub_4C11C0((void *)(a1 - 1632)); } // 69FB7C: using guessed type int (__stdcall *off_69FB7C)(int, int, int); //----- (0067AC66) -------------------------------------------------------- int __cdecl sub_67AC66(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 412)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AC90) -------------------------------------------------------- int __usercall sub_67AC90(int a1) { return sub_4026F0((int *)(a1 - 1640)); } //----- (0067AC9B) -------------------------------------------------------- void __usercall sub_67AC9B(int a1) { *(_DWORD *)(a1 - 1628) = &off_69FB6C; sub_4C11C0((void *)(a1 - 1628)); } // 69FB6C: using guessed type int (__stdcall *off_69FB6C)(int, int, int); //----- (0067ACA6) -------------------------------------------------------- int __cdecl sub_67ACA6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 411)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ACD0) -------------------------------------------------------- int __usercall sub_67ACD0(int a1) { return sub_4026F0((int *)(a1 - 1636)); } //----- (0067ACDB) -------------------------------------------------------- void __usercall sub_67ACDB(int a1) { *(_DWORD *)(a1 - 1628) = &off_69FB8C; sub_4C11C0((void *)(a1 - 1628)); } // 69FB8C: using guessed type int (__stdcall *off_69FB8C)(int, int, int); //----- (0067ACE6) -------------------------------------------------------- int __cdecl sub_67ACE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 410)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067AD10) -------------------------------------------------------- void __cdecl sub_67AD10() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD18) -------------------------------------------------------- void __cdecl sub_67AD18() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD20) -------------------------------------------------------- void __usercall sub_67AD20(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8); } //----- (0067AD2B) -------------------------------------------------------- void __cdecl sub_67AD2B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD36) -------------------------------------------------------- void __cdecl sub_67AD36() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD41) -------------------------------------------------------- void __cdecl sub_67AD41() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD4C) -------------------------------------------------------- void __cdecl sub_67AD4C() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD57) -------------------------------------------------------- void __cdecl sub_67AD57() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD62) -------------------------------------------------------- void __cdecl sub_67AD62() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD6D) -------------------------------------------------------- void __cdecl sub_67AD6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD78) -------------------------------------------------------- void __cdecl sub_67AD78() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD83) -------------------------------------------------------- void __cdecl sub_67AD83() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD91) -------------------------------------------------------- void __cdecl sub_67AD91() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AD9F) -------------------------------------------------------- void __cdecl sub_67AD9F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067ADAD) -------------------------------------------------------- void __cdecl sub_67ADAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067ADBB) -------------------------------------------------------- void __cdecl sub_67ADBB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067ADC9) -------------------------------------------------------- void __cdecl sub_67ADC9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067ADD7) -------------------------------------------------------- void __cdecl sub_67ADD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067ADE5) -------------------------------------------------------- void __cdecl sub_67ADE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067ADF3) -------------------------------------------------------- void __cdecl sub_67ADF3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE01) -------------------------------------------------------- void __cdecl sub_67AE01() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE0F) -------------------------------------------------------- void __cdecl sub_67AE0F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE1D) -------------------------------------------------------- void __cdecl sub_67AE1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE2B) -------------------------------------------------------- void __cdecl sub_67AE2B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE39) -------------------------------------------------------- void __cdecl sub_67AE39() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE41) -------------------------------------------------------- void __usercall sub_67AE41(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 280); } //----- (0067AE4F) -------------------------------------------------------- void __cdecl sub_67AE4F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE5D) -------------------------------------------------------- void __cdecl sub_67AE5D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE65) -------------------------------------------------------- void __usercall sub_67AE65(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 304); } //----- (0067AE73) -------------------------------------------------------- void __cdecl sub_67AE73() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE81) -------------------------------------------------------- void __cdecl sub_67AE81() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE8F) -------------------------------------------------------- void __cdecl sub_67AE8F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AE9D) -------------------------------------------------------- void __cdecl sub_67AE9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AEAB) -------------------------------------------------------- void __cdecl sub_67AEAB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AEB9) -------------------------------------------------------- void __cdecl sub_67AEB9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AEC7) -------------------------------------------------------- void __cdecl sub_67AEC7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AED5) -------------------------------------------------------- void __cdecl sub_67AED5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AEE3) -------------------------------------------------------- void __cdecl sub_67AEE3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AEF1) -------------------------------------------------------- void __cdecl sub_67AEF1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AEFF) -------------------------------------------------------- void __cdecl sub_67AEFF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF0D) -------------------------------------------------------- void __cdecl sub_67AF0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF1B) -------------------------------------------------------- void __cdecl sub_67AF1B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF29) -------------------------------------------------------- void __cdecl sub_67AF29() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF37) -------------------------------------------------------- void __cdecl sub_67AF37() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF45) -------------------------------------------------------- void __cdecl sub_67AF45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF53) -------------------------------------------------------- void __cdecl sub_67AF53() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF61) -------------------------------------------------------- void __cdecl sub_67AF61() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF6F) -------------------------------------------------------- void __cdecl sub_67AF6F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF7D) -------------------------------------------------------- void __cdecl sub_67AF7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF8B) -------------------------------------------------------- void __cdecl sub_67AF8B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AF93) -------------------------------------------------------- void __usercall sub_67AF93(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 576); } //----- (0067AFA1) -------------------------------------------------------- void __cdecl sub_67AFA1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AFAF) -------------------------------------------------------- void __cdecl sub_67AFAF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AFBD) -------------------------------------------------------- void __cdecl sub_67AFBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AFCB) -------------------------------------------------------- void __cdecl sub_67AFCB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AFD9) -------------------------------------------------------- void __cdecl sub_67AFD9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AFE7) -------------------------------------------------------- void __cdecl sub_67AFE7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067AFF5) -------------------------------------------------------- void __cdecl sub_67AFF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B003) -------------------------------------------------------- void __cdecl sub_67B003() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B011) -------------------------------------------------------- void __cdecl sub_67B011() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B01F) -------------------------------------------------------- void __cdecl sub_67B01F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B02D) -------------------------------------------------------- void __cdecl sub_67B02D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B03B) -------------------------------------------------------- void __cdecl sub_67B03B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B049) -------------------------------------------------------- void __cdecl sub_67B049() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B057) -------------------------------------------------------- void __cdecl sub_67B057() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B065) -------------------------------------------------------- void __cdecl sub_67B065() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B06D) -------------------------------------------------------- void __usercall sub_67B06D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 752); } //----- (0067B07B) -------------------------------------------------------- void __cdecl sub_67B07B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B089) -------------------------------------------------------- void __cdecl sub_67B089() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B097) -------------------------------------------------------- void __cdecl sub_67B097() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B0A5) -------------------------------------------------------- void __cdecl sub_67B0A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B0B3) -------------------------------------------------------- void __cdecl sub_67B0B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B0C1) -------------------------------------------------------- void __cdecl sub_67B0C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B0CF) -------------------------------------------------------- void __cdecl sub_67B0CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B0DD) -------------------------------------------------------- void __cdecl sub_67B0DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B0E5) -------------------------------------------------------- void __usercall sub_67B0E5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 868); } //----- (0067B0F3) -------------------------------------------------------- void __cdecl sub_67B0F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B101) -------------------------------------------------------- void __cdecl sub_67B101() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B109) -------------------------------------------------------- void __usercall sub_67B109(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 892); } //----- (0067B117) -------------------------------------------------------- void __cdecl sub_67B117() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B125) -------------------------------------------------------- void __cdecl sub_67B125() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B133) -------------------------------------------------------- void __cdecl sub_67B133() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B141) -------------------------------------------------------- void __cdecl sub_67B141() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B14F) -------------------------------------------------------- void __cdecl sub_67B14F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B15D) -------------------------------------------------------- void __cdecl sub_67B15D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B16B) -------------------------------------------------------- void __cdecl sub_67B16B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B179) -------------------------------------------------------- void __cdecl sub_67B179() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B181) -------------------------------------------------------- void __usercall sub_67B181(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1008); } //----- (0067B18F) -------------------------------------------------------- void __cdecl sub_67B18F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B19D) -------------------------------------------------------- void __cdecl sub_67B19D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B1AB) -------------------------------------------------------- void __cdecl sub_67B1AB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B1B3) -------------------------------------------------------- void __usercall sub_67B1B3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1040); } //----- (0067B1C1) -------------------------------------------------------- void __cdecl sub_67B1C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B1CF) -------------------------------------------------------- void __cdecl sub_67B1CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B1DD) -------------------------------------------------------- void __cdecl sub_67B1DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B1EB) -------------------------------------------------------- void __cdecl sub_67B1EB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B1F3) -------------------------------------------------------- void __usercall sub_67B1F3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1080); } //----- (0067B201) -------------------------------------------------------- void __cdecl sub_67B201() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B20F) -------------------------------------------------------- void __cdecl sub_67B20F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B21D) -------------------------------------------------------- void __cdecl sub_67B21D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B22B) -------------------------------------------------------- void __cdecl sub_67B22B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B239) -------------------------------------------------------- void __cdecl sub_67B239() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B247) -------------------------------------------------------- void __cdecl sub_67B247() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B255) -------------------------------------------------------- void __cdecl sub_67B255() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B263) -------------------------------------------------------- void __cdecl sub_67B263() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B271) -------------------------------------------------------- void __cdecl sub_67B271() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B27F) -------------------------------------------------------- void __cdecl sub_67B27F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B28D) -------------------------------------------------------- void __cdecl sub_67B28D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B29B) -------------------------------------------------------- void __cdecl sub_67B29B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2A9) -------------------------------------------------------- void __cdecl sub_67B2A9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2B7) -------------------------------------------------------- void __cdecl sub_67B2B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2C5) -------------------------------------------------------- void __cdecl sub_67B2C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2D3) -------------------------------------------------------- void __cdecl sub_67B2D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2E1) -------------------------------------------------------- void __cdecl sub_67B2E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2EF) -------------------------------------------------------- void __cdecl sub_67B2EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B2F7) -------------------------------------------------------- void __usercall sub_67B2F7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1276); } //----- (0067B305) -------------------------------------------------------- void __cdecl sub_67B305() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B313) -------------------------------------------------------- void __cdecl sub_67B313() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B321) -------------------------------------------------------- void __cdecl sub_67B321() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B329) -------------------------------------------------------- void __usercall sub_67B329(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1308); } //----- (0067B337) -------------------------------------------------------- void __cdecl sub_67B337() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B345) -------------------------------------------------------- void __cdecl sub_67B345() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B353) -------------------------------------------------------- void __cdecl sub_67B353() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B361) -------------------------------------------------------- void __cdecl sub_67B361() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B36F) -------------------------------------------------------- void __cdecl sub_67B36F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B37D) -------------------------------------------------------- void __cdecl sub_67B37D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B385) -------------------------------------------------------- void __usercall sub_67B385(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1364); } //----- (0067B393) -------------------------------------------------------- void __cdecl sub_67B393() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3A1) -------------------------------------------------------- void __cdecl sub_67B3A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3AF) -------------------------------------------------------- void __cdecl sub_67B3AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3BD) -------------------------------------------------------- void __cdecl sub_67B3BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3CB) -------------------------------------------------------- void __cdecl sub_67B3CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3D9) -------------------------------------------------------- void __cdecl sub_67B3D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3E7) -------------------------------------------------------- void __cdecl sub_67B3E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B3EF) -------------------------------------------------------- void __usercall sub_67B3EF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1428); } //----- (0067B3FD) -------------------------------------------------------- void __cdecl sub_67B3FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B40B) -------------------------------------------------------- void __cdecl sub_67B40B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B419) -------------------------------------------------------- void __cdecl sub_67B419() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B427) -------------------------------------------------------- void __cdecl sub_67B427() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B435) -------------------------------------------------------- void __cdecl sub_67B435() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B443) -------------------------------------------------------- void __cdecl sub_67B443() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B451) -------------------------------------------------------- void __cdecl sub_67B451() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B45F) -------------------------------------------------------- void __cdecl sub_67B45F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B46D) -------------------------------------------------------- void __cdecl sub_67B46D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B47B) -------------------------------------------------------- void __cdecl sub_67B47B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B489) -------------------------------------------------------- void __cdecl sub_67B489() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B497) -------------------------------------------------------- void __cdecl sub_67B497() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4A5) -------------------------------------------------------- void __cdecl sub_67B4A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4B3) -------------------------------------------------------- void __cdecl sub_67B4B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4C1) -------------------------------------------------------- void __cdecl sub_67B4C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4CF) -------------------------------------------------------- void __cdecl sub_67B4CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4DD) -------------------------------------------------------- void __cdecl sub_67B4DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4EB) -------------------------------------------------------- void __cdecl sub_67B4EB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B4F9) -------------------------------------------------------- void __cdecl sub_67B4F9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B507) -------------------------------------------------------- void __cdecl sub_67B507() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B515) -------------------------------------------------------- void __cdecl sub_67B515() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B523) -------------------------------------------------------- void __cdecl sub_67B523() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B531) -------------------------------------------------------- void __cdecl sub_67B531() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B53F) -------------------------------------------------------- void __cdecl sub_67B53F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B54D) -------------------------------------------------------- void __cdecl sub_67B54D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B555) -------------------------------------------------------- void __usercall sub_67B555(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1636); } //----- (0067B563) -------------------------------------------------------- void __cdecl sub_67B563() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B56B) -------------------------------------------------------- void __usercall sub_67B56B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1652); } //----- (0067B579) -------------------------------------------------------- void __cdecl sub_67B579() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B581) -------------------------------------------------------- void __usercall sub_67B581(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1668); } //----- (0067B58F) -------------------------------------------------------- void __cdecl sub_67B58F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B597) -------------------------------------------------------- void __usercall sub_67B597(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1684); } //----- (0067B5A5) -------------------------------------------------------- void __cdecl sub_67B5A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B5AD) -------------------------------------------------------- void __usercall sub_67B5AD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1700); } //----- (0067B5BB) -------------------------------------------------------- void __cdecl sub_67B5BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B5C3) -------------------------------------------------------- void __usercall sub_67B5C3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1716); } //----- (0067B5D1) -------------------------------------------------------- void __cdecl sub_67B5D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B5D9) -------------------------------------------------------- void __usercall sub_67B5D9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1732); } //----- (0067B5E7) -------------------------------------------------------- void __cdecl sub_67B5E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B5EF) -------------------------------------------------------- void __usercall sub_67B5EF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1748); } //----- (0067B5FD) -------------------------------------------------------- void __cdecl sub_67B5FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B605) -------------------------------------------------------- void __usercall sub_67B605(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1764); } //----- (0067B613) -------------------------------------------------------- void __cdecl sub_67B613() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B61B) -------------------------------------------------------- void __usercall sub_67B61B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1780); } //----- (0067B629) -------------------------------------------------------- void __cdecl sub_67B629() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B637) -------------------------------------------------------- void __cdecl sub_67B637() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B645) -------------------------------------------------------- void __cdecl sub_67B645() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B653) -------------------------------------------------------- void __cdecl sub_67B653() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B661) -------------------------------------------------------- void __cdecl sub_67B661() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B66F) -------------------------------------------------------- void __cdecl sub_67B66F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B67D) -------------------------------------------------------- void __cdecl sub_67B67D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B68B) -------------------------------------------------------- void __cdecl sub_67B68B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B699) -------------------------------------------------------- void __cdecl sub_67B699() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6A7) -------------------------------------------------------- void __cdecl sub_67B6A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6B5) -------------------------------------------------------- void __cdecl sub_67B6B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6C3) -------------------------------------------------------- void __cdecl sub_67B6C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6D1) -------------------------------------------------------- void __cdecl sub_67B6D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6DF) -------------------------------------------------------- void __cdecl sub_67B6DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6ED) -------------------------------------------------------- void __cdecl sub_67B6ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B6FB) -------------------------------------------------------- void __cdecl sub_67B6FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B709) -------------------------------------------------------- void __cdecl sub_67B709() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B717) -------------------------------------------------------- void __cdecl sub_67B717() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B725) -------------------------------------------------------- void __cdecl sub_67B725() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B733) -------------------------------------------------------- void __cdecl sub_67B733() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B741) -------------------------------------------------------- void __cdecl sub_67B741() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B74F) -------------------------------------------------------- void __cdecl sub_67B74F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B75D) -------------------------------------------------------- void __cdecl sub_67B75D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B765) -------------------------------------------------------- void __usercall sub_67B765(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1972); } //----- (0067B773) -------------------------------------------------------- void __cdecl sub_67B773() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B77B) -------------------------------------------------------- void __usercall sub_67B77B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 1988); } //----- (0067B789) -------------------------------------------------------- void __cdecl sub_67B789() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B791) -------------------------------------------------------- void __usercall sub_67B791(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2004); } //----- (0067B79F) -------------------------------------------------------- void __cdecl sub_67B79F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B7A7) -------------------------------------------------------- void __usercall sub_67B7A7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2020); } //----- (0067B7B5) -------------------------------------------------------- void __cdecl sub_67B7B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B7BD) -------------------------------------------------------- void __usercall sub_67B7BD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2036); } //----- (0067B7CB) -------------------------------------------------------- void __cdecl sub_67B7CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B7D3) -------------------------------------------------------- void __usercall sub_67B7D3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2052); } //----- (0067B7E1) -------------------------------------------------------- void __cdecl sub_67B7E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B7E9) -------------------------------------------------------- void __usercall sub_67B7E9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2068); } //----- (0067B7F7) -------------------------------------------------------- void __cdecl sub_67B7F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B7FF) -------------------------------------------------------- void __usercall sub_67B7FF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2084); } //----- (0067B80D) -------------------------------------------------------- void __cdecl sub_67B80D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B815) -------------------------------------------------------- void __usercall sub_67B815(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2100); } //----- (0067B823) -------------------------------------------------------- void __cdecl sub_67B823() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B82B) -------------------------------------------------------- void __usercall sub_67B82B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2116); } //----- (0067B839) -------------------------------------------------------- void __cdecl sub_67B839() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B841) -------------------------------------------------------- void __usercall sub_67B841(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2132); } //----- (0067B84F) -------------------------------------------------------- void __cdecl sub_67B84F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B857) -------------------------------------------------------- void __usercall sub_67B857(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2148); } //----- (0067B865) -------------------------------------------------------- void __cdecl sub_67B865() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B86D) -------------------------------------------------------- void __usercall sub_67B86D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2164); } //----- (0067B87B) -------------------------------------------------------- void __cdecl sub_67B87B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B883) -------------------------------------------------------- void __usercall sub_67B883(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2180); } //----- (0067B891) -------------------------------------------------------- void __cdecl sub_67B891() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B899) -------------------------------------------------------- void __usercall sub_67B899(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2196); } //----- (0067B8A7) -------------------------------------------------------- void __cdecl sub_67B8A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B8AF) -------------------------------------------------------- void __usercall sub_67B8AF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2212); } //----- (0067B8BD) -------------------------------------------------------- void __cdecl sub_67B8BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B8C5) -------------------------------------------------------- void __usercall sub_67B8C5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2228); } //----- (0067B8D3) -------------------------------------------------------- void __cdecl sub_67B8D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B8DB) -------------------------------------------------------- void __usercall sub_67B8DB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2244); } //----- (0067B8E9) -------------------------------------------------------- void __cdecl sub_67B8E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B8F1) -------------------------------------------------------- void __usercall sub_67B8F1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2260); } //----- (0067B8FF) -------------------------------------------------------- void __cdecl sub_67B8FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B907) -------------------------------------------------------- void __usercall sub_67B907(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2276); } //----- (0067B915) -------------------------------------------------------- void __cdecl sub_67B915() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B91D) -------------------------------------------------------- void __usercall sub_67B91D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2292); } //----- (0067B92B) -------------------------------------------------------- void __cdecl sub_67B92B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B933) -------------------------------------------------------- void __usercall sub_67B933(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2308); } //----- (0067B941) -------------------------------------------------------- void __cdecl sub_67B941() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B949) -------------------------------------------------------- void __usercall sub_67B949(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2324); } //----- (0067B957) -------------------------------------------------------- void __cdecl sub_67B957() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B95F) -------------------------------------------------------- void __usercall sub_67B95F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2340); } //----- (0067B96D) -------------------------------------------------------- void __cdecl sub_67B96D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B975) -------------------------------------------------------- void __usercall sub_67B975(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2356); } //----- (0067B983) -------------------------------------------------------- void __cdecl sub_67B983() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B991) -------------------------------------------------------- void __cdecl sub_67B991() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B99F) -------------------------------------------------------- void __cdecl sub_67B99F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B9AD) -------------------------------------------------------- void __cdecl sub_67B9AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B9BB) -------------------------------------------------------- void __cdecl sub_67B9BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B9C9) -------------------------------------------------------- void __cdecl sub_67B9C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B9D7) -------------------------------------------------------- void __cdecl sub_67B9D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B9E5) -------------------------------------------------------- void __cdecl sub_67B9E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067B9ED) -------------------------------------------------------- void __usercall sub_67B9ED(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2428); } //----- (0067B9FB) -------------------------------------------------------- void __cdecl sub_67B9FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA03) -------------------------------------------------------- void __usercall sub_67BA03(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2444); } //----- (0067BA11) -------------------------------------------------------- void __cdecl sub_67BA11() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA19) -------------------------------------------------------- void __usercall sub_67BA19(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2460); } //----- (0067BA27) -------------------------------------------------------- void __cdecl sub_67BA27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA2F) -------------------------------------------------------- void __usercall sub_67BA2F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2476); } //----- (0067BA3D) -------------------------------------------------------- void __cdecl sub_67BA3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA45) -------------------------------------------------------- void __usercall sub_67BA45(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2492); } //----- (0067BA53) -------------------------------------------------------- void __cdecl sub_67BA53() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA5B) -------------------------------------------------------- void __usercall sub_67BA5B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2508); } //----- (0067BA69) -------------------------------------------------------- void __cdecl sub_67BA69() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA71) -------------------------------------------------------- void __usercall sub_67BA71(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2524); } //----- (0067BA7F) -------------------------------------------------------- void __cdecl sub_67BA7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA87) -------------------------------------------------------- void __usercall sub_67BA87(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2540); } //----- (0067BA95) -------------------------------------------------------- void __cdecl sub_67BA95() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BA9D) -------------------------------------------------------- void __usercall sub_67BA9D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2556); } //----- (0067BAAB) -------------------------------------------------------- void __cdecl sub_67BAAB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BAB3) -------------------------------------------------------- void __usercall sub_67BAB3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2572); } //----- (0067BAC1) -------------------------------------------------------- void __cdecl sub_67BAC1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BAC9) -------------------------------------------------------- void __usercall sub_67BAC9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 2588); } //----- (0067BAD7) -------------------------------------------------------- void __cdecl sub_67BAD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BAE5) -------------------------------------------------------- void __cdecl sub_67BAE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BAF3) -------------------------------------------------------- void __cdecl sub_67BAF3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB01) -------------------------------------------------------- void __cdecl sub_67BB01() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB0F) -------------------------------------------------------- void __cdecl sub_67BB0F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB1D) -------------------------------------------------------- void __cdecl sub_67BB1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB2B) -------------------------------------------------------- void __cdecl sub_67BB2B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB39) -------------------------------------------------------- void __cdecl sub_67BB39() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB47) -------------------------------------------------------- void __cdecl sub_67BB47() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB55) -------------------------------------------------------- void __cdecl sub_67BB55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB63) -------------------------------------------------------- void __cdecl sub_67BB63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB71) -------------------------------------------------------- void __cdecl sub_67BB71() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB7F) -------------------------------------------------------- void __cdecl sub_67BB7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB8D) -------------------------------------------------------- void __cdecl sub_67BB8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BB9B) -------------------------------------------------------- void __cdecl sub_67BB9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBA9) -------------------------------------------------------- void __cdecl sub_67BBA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBB7) -------------------------------------------------------- void __cdecl sub_67BBB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBC5) -------------------------------------------------------- void __cdecl sub_67BBC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBD3) -------------------------------------------------------- void __cdecl sub_67BBD3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBE1) -------------------------------------------------------- void __cdecl sub_67BBE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBEF) -------------------------------------------------------- void __cdecl sub_67BBEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BBFD) -------------------------------------------------------- void __cdecl sub_67BBFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC0B) -------------------------------------------------------- void __cdecl sub_67BC0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC19) -------------------------------------------------------- void __cdecl sub_67BC19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC27) -------------------------------------------------------- void __cdecl sub_67BC27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC35) -------------------------------------------------------- void __cdecl sub_67BC35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC43) -------------------------------------------------------- void __cdecl sub_67BC43() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC51) -------------------------------------------------------- void __cdecl sub_67BC51() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC5F) -------------------------------------------------------- void __cdecl sub_67BC5F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC6D) -------------------------------------------------------- void __cdecl sub_67BC6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC7B) -------------------------------------------------------- void __cdecl sub_67BC7B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC89) -------------------------------------------------------- void __cdecl sub_67BC89() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BC97) -------------------------------------------------------- void __cdecl sub_67BC97() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCA5) -------------------------------------------------------- void __cdecl sub_67BCA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCB3) -------------------------------------------------------- void __cdecl sub_67BCB3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCC1) -------------------------------------------------------- void __cdecl sub_67BCC1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCCF) -------------------------------------------------------- void __cdecl sub_67BCCF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCDD) -------------------------------------------------------- void __cdecl sub_67BCDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCEB) -------------------------------------------------------- void __cdecl sub_67BCEB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BCF9) -------------------------------------------------------- void __cdecl sub_67BCF9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD07) -------------------------------------------------------- void __cdecl sub_67BD07() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD15) -------------------------------------------------------- void __cdecl sub_67BD15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD23) -------------------------------------------------------- void __cdecl sub_67BD23() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD31) -------------------------------------------------------- void __cdecl sub_67BD31() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD3F) -------------------------------------------------------- void __cdecl sub_67BD3F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD4D) -------------------------------------------------------- void __cdecl sub_67BD4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD5B) -------------------------------------------------------- void __cdecl sub_67BD5B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD69) -------------------------------------------------------- void __cdecl sub_67BD69() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD77) -------------------------------------------------------- void __cdecl sub_67BD77() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD85) -------------------------------------------------------- void __cdecl sub_67BD85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BD93) -------------------------------------------------------- void __cdecl sub_67BD93() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDA1) -------------------------------------------------------- void __cdecl sub_67BDA1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDAF) -------------------------------------------------------- void __cdecl sub_67BDAF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDBD) -------------------------------------------------------- void __cdecl sub_67BDBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDCB) -------------------------------------------------------- void __cdecl sub_67BDCB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDD9) -------------------------------------------------------- void __cdecl sub_67BDD9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDE7) -------------------------------------------------------- void __cdecl sub_67BDE7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BDF5) -------------------------------------------------------- void __cdecl sub_67BDF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE03) -------------------------------------------------------- void __cdecl sub_67BE03() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE11) -------------------------------------------------------- void __cdecl sub_67BE11() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE1F) -------------------------------------------------------- void __cdecl sub_67BE1F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE2D) -------------------------------------------------------- void __cdecl sub_67BE2D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE3B) -------------------------------------------------------- void __cdecl sub_67BE3B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE49) -------------------------------------------------------- void __cdecl sub_67BE49() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE57) -------------------------------------------------------- void __cdecl sub_67BE57() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE65) -------------------------------------------------------- void __cdecl sub_67BE65() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE73) -------------------------------------------------------- void __cdecl sub_67BE73() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE81) -------------------------------------------------------- void __cdecl sub_67BE81() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE8F) -------------------------------------------------------- void __cdecl sub_67BE8F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BE9D) -------------------------------------------------------- void __cdecl sub_67BE9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BEAB) -------------------------------------------------------- void __cdecl sub_67BEAB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BEB9) -------------------------------------------------------- void __cdecl sub_67BEB9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BEC7) -------------------------------------------------------- void __cdecl sub_67BEC7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BED5) -------------------------------------------------------- void __cdecl sub_67BED5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BEE3) -------------------------------------------------------- void __cdecl sub_67BEE3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BEF1) -------------------------------------------------------- void __cdecl sub_67BEF1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BEFF) -------------------------------------------------------- void __cdecl sub_67BEFF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF0D) -------------------------------------------------------- void __cdecl sub_67BF0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF1B) -------------------------------------------------------- void __cdecl sub_67BF1B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF29) -------------------------------------------------------- void __cdecl sub_67BF29() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF31) -------------------------------------------------------- void __usercall sub_67BF31(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3240); } //----- (0067BF3F) -------------------------------------------------------- void __cdecl sub_67BF3F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF47) -------------------------------------------------------- void __usercall sub_67BF47(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3256); } //----- (0067BF55) -------------------------------------------------------- void __cdecl sub_67BF55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF5D) -------------------------------------------------------- void __usercall sub_67BF5D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3272); } //----- (0067BF6B) -------------------------------------------------------- void __cdecl sub_67BF6B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF73) -------------------------------------------------------- void __usercall sub_67BF73(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3288); } //----- (0067BF81) -------------------------------------------------------- void __cdecl sub_67BF81() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF89) -------------------------------------------------------- void __usercall sub_67BF89(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3304); } //----- (0067BF97) -------------------------------------------------------- void __cdecl sub_67BF97() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BF9F) -------------------------------------------------------- void __usercall sub_67BF9F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3320); } //----- (0067BFAD) -------------------------------------------------------- void __cdecl sub_67BFAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BFB5) -------------------------------------------------------- void __usercall sub_67BFB5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3336); } //----- (0067BFC3) -------------------------------------------------------- void __cdecl sub_67BFC3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BFCB) -------------------------------------------------------- void __usercall sub_67BFCB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3352); } //----- (0067BFD9) -------------------------------------------------------- void __cdecl sub_67BFD9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BFE1) -------------------------------------------------------- void __usercall sub_67BFE1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3368); } //----- (0067BFEF) -------------------------------------------------------- void __cdecl sub_67BFEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067BFF7) -------------------------------------------------------- void __usercall sub_67BFF7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3384); } //----- (0067C005) -------------------------------------------------------- void __cdecl sub_67C005() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C00D) -------------------------------------------------------- void __usercall sub_67C00D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3400); } //----- (0067C01B) -------------------------------------------------------- void __cdecl sub_67C01B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C023) -------------------------------------------------------- void __usercall sub_67C023(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3416); } //----- (0067C031) -------------------------------------------------------- void __cdecl sub_67C031() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C039) -------------------------------------------------------- void __usercall sub_67C039(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3432); } //----- (0067C047) -------------------------------------------------------- void __cdecl sub_67C047() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C04F) -------------------------------------------------------- void __usercall sub_67C04F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3448); } //----- (0067C05D) -------------------------------------------------------- void __cdecl sub_67C05D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C065) -------------------------------------------------------- void __usercall sub_67C065(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3464); } //----- (0067C073) -------------------------------------------------------- void __cdecl sub_67C073() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C07B) -------------------------------------------------------- void __usercall sub_67C07B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3480); } //----- (0067C089) -------------------------------------------------------- void __cdecl sub_67C089() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C091) -------------------------------------------------------- void __usercall sub_67C091(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3496); } //----- (0067C09F) -------------------------------------------------------- void __cdecl sub_67C09F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C0A7) -------------------------------------------------------- void __usercall sub_67C0A7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3512); } //----- (0067C0B5) -------------------------------------------------------- void __cdecl sub_67C0B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C0BD) -------------------------------------------------------- void __usercall sub_67C0BD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3528); } //----- (0067C0CB) -------------------------------------------------------- void __cdecl sub_67C0CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C0D3) -------------------------------------------------------- void __usercall sub_67C0D3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3544); } //----- (0067C0E1) -------------------------------------------------------- void __cdecl sub_67C0E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C0E9) -------------------------------------------------------- void __usercall sub_67C0E9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3560); } //----- (0067C0F7) -------------------------------------------------------- void __cdecl sub_67C0F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C0FF) -------------------------------------------------------- void __usercall sub_67C0FF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3576); } //----- (0067C10D) -------------------------------------------------------- void __cdecl sub_67C10D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C115) -------------------------------------------------------- void __usercall sub_67C115(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3592); } //----- (0067C123) -------------------------------------------------------- void __cdecl sub_67C123() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C12B) -------------------------------------------------------- void __usercall sub_67C12B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3608); } //----- (0067C139) -------------------------------------------------------- void __cdecl sub_67C139() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C141) -------------------------------------------------------- void __usercall sub_67C141(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3624); } //----- (0067C14F) -------------------------------------------------------- void __cdecl sub_67C14F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C157) -------------------------------------------------------- void __usercall sub_67C157(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3640); } //----- (0067C165) -------------------------------------------------------- void __cdecl sub_67C165() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C16D) -------------------------------------------------------- void __usercall sub_67C16D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3656); } //----- (0067C17B) -------------------------------------------------------- void __cdecl sub_67C17B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C183) -------------------------------------------------------- void __usercall sub_67C183(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3672); } //----- (0067C191) -------------------------------------------------------- void __cdecl sub_67C191() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C199) -------------------------------------------------------- void __usercall sub_67C199(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3688); } //----- (0067C1A7) -------------------------------------------------------- void __cdecl sub_67C1A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C1AF) -------------------------------------------------------- void __usercall sub_67C1AF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3704); } //----- (0067C1BD) -------------------------------------------------------- void __cdecl sub_67C1BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C1C5) -------------------------------------------------------- void __usercall sub_67C1C5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3720); } //----- (0067C1D3) -------------------------------------------------------- void __cdecl sub_67C1D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C1DB) -------------------------------------------------------- void __usercall sub_67C1DB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3736); } //----- (0067C1E9) -------------------------------------------------------- void __cdecl sub_67C1E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C1F1) -------------------------------------------------------- void __usercall sub_67C1F1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3752); } //----- (0067C1FF) -------------------------------------------------------- void __cdecl sub_67C1FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C207) -------------------------------------------------------- void __usercall sub_67C207(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3768); } //----- (0067C215) -------------------------------------------------------- void __cdecl sub_67C215() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C21D) -------------------------------------------------------- void __usercall sub_67C21D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3784); } //----- (0067C22B) -------------------------------------------------------- void __cdecl sub_67C22B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C233) -------------------------------------------------------- void __usercall sub_67C233(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3800); } //----- (0067C241) -------------------------------------------------------- void __cdecl sub_67C241() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C249) -------------------------------------------------------- void __usercall sub_67C249(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3816); } //----- (0067C257) -------------------------------------------------------- void __cdecl sub_67C257() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C25F) -------------------------------------------------------- void __usercall sub_67C25F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3832); } //----- (0067C26D) -------------------------------------------------------- void __cdecl sub_67C26D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C275) -------------------------------------------------------- void __usercall sub_67C275(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3848); } //----- (0067C283) -------------------------------------------------------- void __cdecl sub_67C283() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C28B) -------------------------------------------------------- void __usercall sub_67C28B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3864); } //----- (0067C299) -------------------------------------------------------- void __cdecl sub_67C299() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C2A1) -------------------------------------------------------- void __usercall sub_67C2A1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3880); } //----- (0067C2AF) -------------------------------------------------------- void __cdecl sub_67C2AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C2B7) -------------------------------------------------------- void __usercall sub_67C2B7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3896); } //----- (0067C2C5) -------------------------------------------------------- void __cdecl sub_67C2C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C2CD) -------------------------------------------------------- void __usercall sub_67C2CD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3912); } //----- (0067C2DB) -------------------------------------------------------- void __cdecl sub_67C2DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C2E3) -------------------------------------------------------- void __usercall sub_67C2E3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3928); } //----- (0067C2F1) -------------------------------------------------------- void __cdecl sub_67C2F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C2F9) -------------------------------------------------------- void __usercall sub_67C2F9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3944); } //----- (0067C307) -------------------------------------------------------- void __cdecl sub_67C307() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C30F) -------------------------------------------------------- void __usercall sub_67C30F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3960); } //----- (0067C31D) -------------------------------------------------------- void __cdecl sub_67C31D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C325) -------------------------------------------------------- void __usercall sub_67C325(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3976); } //----- (0067C333) -------------------------------------------------------- void __cdecl sub_67C333() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C33B) -------------------------------------------------------- void __usercall sub_67C33B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 3992); } //----- (0067C349) -------------------------------------------------------- void __cdecl sub_67C349() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C351) -------------------------------------------------------- void __usercall sub_67C351(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4008); } //----- (0067C35F) -------------------------------------------------------- void __cdecl sub_67C35F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C367) -------------------------------------------------------- void __usercall sub_67C367(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4024); } //----- (0067C375) -------------------------------------------------------- void __cdecl sub_67C375() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C37D) -------------------------------------------------------- void __usercall sub_67C37D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4040); } //----- (0067C38B) -------------------------------------------------------- void __cdecl sub_67C38B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C393) -------------------------------------------------------- void __usercall sub_67C393(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4056); } //----- (0067C3A1) -------------------------------------------------------- void __cdecl sub_67C3A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C3AF) -------------------------------------------------------- void __cdecl sub_67C3AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C3BD) -------------------------------------------------------- void __cdecl sub_67C3BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C3CB) -------------------------------------------------------- void __cdecl sub_67C3CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C3D9) -------------------------------------------------------- void __cdecl sub_67C3D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C3E7) -------------------------------------------------------- void __cdecl sub_67C3E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C3EF) -------------------------------------------------------- void __usercall sub_67C3EF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4156); } //----- (0067C3FD) -------------------------------------------------------- void __cdecl sub_67C3FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C40B) -------------------------------------------------------- void __cdecl sub_67C40B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C419) -------------------------------------------------------- void __cdecl sub_67C419() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C427) -------------------------------------------------------- void __cdecl sub_67C427() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C435) -------------------------------------------------------- void __cdecl sub_67C435() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C443) -------------------------------------------------------- void __cdecl sub_67C443() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C451) -------------------------------------------------------- void __cdecl sub_67C451() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C459) -------------------------------------------------------- void __usercall sub_67C459(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4244); } //----- (0067C467) -------------------------------------------------------- void __cdecl sub_67C467() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C46F) -------------------------------------------------------- void __usercall sub_67C46F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4260); } //----- (0067C47D) -------------------------------------------------------- void __cdecl sub_67C47D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C48B) -------------------------------------------------------- void __cdecl sub_67C48B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C499) -------------------------------------------------------- void __cdecl sub_67C499() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4A7) -------------------------------------------------------- void __cdecl sub_67C4A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4B5) -------------------------------------------------------- void __cdecl sub_67C4B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4C3) -------------------------------------------------------- void __cdecl sub_67C4C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4D1) -------------------------------------------------------- void __cdecl sub_67C4D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4DF) -------------------------------------------------------- void __cdecl sub_67C4DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4ED) -------------------------------------------------------- void __cdecl sub_67C4ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C4FB) -------------------------------------------------------- void __cdecl sub_67C4FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C509) -------------------------------------------------------- void __cdecl sub_67C509() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C517) -------------------------------------------------------- void __cdecl sub_67C517() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C525) -------------------------------------------------------- void __cdecl sub_67C525() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C533) -------------------------------------------------------- void __cdecl sub_67C533() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C541) -------------------------------------------------------- void __cdecl sub_67C541() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C54F) -------------------------------------------------------- void __cdecl sub_67C54F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C55D) -------------------------------------------------------- void __cdecl sub_67C55D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C56B) -------------------------------------------------------- void __cdecl sub_67C56B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C579) -------------------------------------------------------- void __cdecl sub_67C579() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C587) -------------------------------------------------------- void __cdecl sub_67C587() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C595) -------------------------------------------------------- void __cdecl sub_67C595() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5A3) -------------------------------------------------------- void __cdecl sub_67C5A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5B1) -------------------------------------------------------- void __cdecl sub_67C5B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5B9) -------------------------------------------------------- void __usercall sub_67C5B9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4452); } //----- (0067C5C7) -------------------------------------------------------- void __cdecl sub_67C5C7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5D5) -------------------------------------------------------- void __cdecl sub_67C5D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5E3) -------------------------------------------------------- void __cdecl sub_67C5E3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5F1) -------------------------------------------------------- void __cdecl sub_67C5F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C5FF) -------------------------------------------------------- void __cdecl sub_67C5FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C607) -------------------------------------------------------- void __usercall sub_67C607(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4500); } //----- (0067C615) -------------------------------------------------------- void __cdecl sub_67C615() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C623) -------------------------------------------------------- void __cdecl sub_67C623() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C631) -------------------------------------------------------- void __cdecl sub_67C631() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C63F) -------------------------------------------------------- void __cdecl sub_67C63F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C64D) -------------------------------------------------------- void __cdecl sub_67C64D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C65B) -------------------------------------------------------- void __cdecl sub_67C65B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C669) -------------------------------------------------------- void __cdecl sub_67C669() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C671) -------------------------------------------------------- void __usercall sub_67C671(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4572); } //----- (0067C67F) -------------------------------------------------------- void __cdecl sub_67C67F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C68D) -------------------------------------------------------- void __cdecl sub_67C68D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C69B) -------------------------------------------------------- void __cdecl sub_67C69B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C6A3) -------------------------------------------------------- void __usercall sub_67C6A3(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4604); } //----- (0067C6B1) -------------------------------------------------------- void __cdecl sub_67C6B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C6BF) -------------------------------------------------------- void __cdecl sub_67C6BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C6CD) -------------------------------------------------------- void __cdecl sub_67C6CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C6DB) -------------------------------------------------------- void __cdecl sub_67C6DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C6E9) -------------------------------------------------------- void __cdecl sub_67C6E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C6F7) -------------------------------------------------------- void __cdecl sub_67C6F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C705) -------------------------------------------------------- void __cdecl sub_67C705() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C713) -------------------------------------------------------- void __cdecl sub_67C713() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C721) -------------------------------------------------------- void __cdecl sub_67C721() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C729) -------------------------------------------------------- void __usercall sub_67C729(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4684); } //----- (0067C737) -------------------------------------------------------- void __cdecl sub_67C737() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C73F) -------------------------------------------------------- void __usercall sub_67C73F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4700); } //----- (0067C74D) -------------------------------------------------------- void __cdecl sub_67C74D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C75B) -------------------------------------------------------- void __cdecl sub_67C75B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C763) -------------------------------------------------------- void __usercall sub_67C763(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4724); } //----- (0067C771) -------------------------------------------------------- void __cdecl sub_67C771() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C77F) -------------------------------------------------------- void __cdecl sub_67C77F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C78D) -------------------------------------------------------- void __cdecl sub_67C78D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C79B) -------------------------------------------------------- void __cdecl sub_67C79B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7A9) -------------------------------------------------------- void __cdecl sub_67C7A9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7B7) -------------------------------------------------------- void __cdecl sub_67C7B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7C5) -------------------------------------------------------- void __cdecl sub_67C7C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7D3) -------------------------------------------------------- void __cdecl sub_67C7D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7E1) -------------------------------------------------------- void __cdecl sub_67C7E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7EF) -------------------------------------------------------- void __cdecl sub_67C7EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C7FD) -------------------------------------------------------- void __cdecl sub_67C7FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C80B) -------------------------------------------------------- void __cdecl sub_67C80B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C819) -------------------------------------------------------- void __cdecl sub_67C819() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C827) -------------------------------------------------------- void __cdecl sub_67C827() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C835) -------------------------------------------------------- void __cdecl sub_67C835() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C843) -------------------------------------------------------- void __cdecl sub_67C843() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C851) -------------------------------------------------------- void __cdecl sub_67C851() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C85F) -------------------------------------------------------- void __cdecl sub_67C85F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C86D) -------------------------------------------------------- void __cdecl sub_67C86D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C87B) -------------------------------------------------------- void __cdecl sub_67C87B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C889) -------------------------------------------------------- void __cdecl sub_67C889() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C897) -------------------------------------------------------- void __cdecl sub_67C897() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8A5) -------------------------------------------------------- void __cdecl sub_67C8A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8B3) -------------------------------------------------------- void __cdecl sub_67C8B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8C1) -------------------------------------------------------- void __cdecl sub_67C8C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8CF) -------------------------------------------------------- void __cdecl sub_67C8CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8D7) -------------------------------------------------------- void __usercall sub_67C8D7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4940); } //----- (0067C8E5) -------------------------------------------------------- void __cdecl sub_67C8E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8F3) -------------------------------------------------------- void __cdecl sub_67C8F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C8FB) -------------------------------------------------------- void __usercall sub_67C8FB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 4964); } //----- (0067C909) -------------------------------------------------------- void __cdecl sub_67C909() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C917) -------------------------------------------------------- void __cdecl sub_67C917() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C925) -------------------------------------------------------- void __cdecl sub_67C925() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C933) -------------------------------------------------------- void __cdecl sub_67C933() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C941) -------------------------------------------------------- void __cdecl sub_67C941() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C94F) -------------------------------------------------------- void __cdecl sub_67C94F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C95D) -------------------------------------------------------- void __cdecl sub_67C95D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C96B) -------------------------------------------------------- void __cdecl sub_67C96B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C973) -------------------------------------------------------- void __usercall sub_67C973(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5036); } //----- (0067C981) -------------------------------------------------------- void __cdecl sub_67C981() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C98F) -------------------------------------------------------- void __cdecl sub_67C98F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C99D) -------------------------------------------------------- void __cdecl sub_67C99D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9AB) -------------------------------------------------------- void __cdecl sub_67C9AB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9B9) -------------------------------------------------------- void __cdecl sub_67C9B9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9C7) -------------------------------------------------------- void __cdecl sub_67C9C7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9D5) -------------------------------------------------------- void __cdecl sub_67C9D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9E3) -------------------------------------------------------- void __cdecl sub_67C9E3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9F1) -------------------------------------------------------- void __cdecl sub_67C9F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067C9FF) -------------------------------------------------------- void __cdecl sub_67C9FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA0D) -------------------------------------------------------- void __cdecl sub_67CA0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA1B) -------------------------------------------------------- void __cdecl sub_67CA1B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA29) -------------------------------------------------------- void __cdecl sub_67CA29() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA37) -------------------------------------------------------- void __cdecl sub_67CA37() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA45) -------------------------------------------------------- void __cdecl sub_67CA45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA53) -------------------------------------------------------- void __cdecl sub_67CA53() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA61) -------------------------------------------------------- void __cdecl sub_67CA61() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA6F) -------------------------------------------------------- void __cdecl sub_67CA6F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA7D) -------------------------------------------------------- void __cdecl sub_67CA7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA8B) -------------------------------------------------------- void __cdecl sub_67CA8B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CA99) -------------------------------------------------------- void __cdecl sub_67CA99() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CAA7) -------------------------------------------------------- void __cdecl sub_67CAA7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CAB5) -------------------------------------------------------- void __cdecl sub_67CAB5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CAC3) -------------------------------------------------------- void __cdecl sub_67CAC3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CACB) -------------------------------------------------------- void __usercall sub_67CACB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5236); } //----- (0067CAD9) -------------------------------------------------------- void __cdecl sub_67CAD9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CAE1) -------------------------------------------------------- void __usercall sub_67CAE1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5252); } //----- (0067CAEF) -------------------------------------------------------- void __cdecl sub_67CAEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CAF7) -------------------------------------------------------- void __usercall sub_67CAF7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5268); } //----- (0067CB05) -------------------------------------------------------- void __cdecl sub_67CB05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB0D) -------------------------------------------------------- void __usercall sub_67CB0D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5284); } //----- (0067CB1B) -------------------------------------------------------- void __cdecl sub_67CB1B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB29) -------------------------------------------------------- void __cdecl sub_67CB29() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB37) -------------------------------------------------------- void __cdecl sub_67CB37() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB3F) -------------------------------------------------------- void __usercall sub_67CB3F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5316); } //----- (0067CB4D) -------------------------------------------------------- void __cdecl sub_67CB4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB55) -------------------------------------------------------- void __usercall sub_67CB55(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5332); } //----- (0067CB63) -------------------------------------------------------- void __cdecl sub_67CB63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB6B) -------------------------------------------------------- void __usercall sub_67CB6B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5348); } //----- (0067CB79) -------------------------------------------------------- void __cdecl sub_67CB79() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB81) -------------------------------------------------------- void __usercall sub_67CB81(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5364); } //----- (0067CB8F) -------------------------------------------------------- void __cdecl sub_67CB8F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CB9D) -------------------------------------------------------- void __cdecl sub_67CB9D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CBAB) -------------------------------------------------------- void __cdecl sub_67CBAB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CBB9) -------------------------------------------------------- void __cdecl sub_67CBB9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CBC7) -------------------------------------------------------- void __cdecl sub_67CBC7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CBD5) -------------------------------------------------------- void __cdecl sub_67CBD5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CBE3) -------------------------------------------------------- void __cdecl sub_67CBE3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CBEB) -------------------------------------------------------- void __usercall sub_67CBEB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5428); } //----- (0067CBF9) -------------------------------------------------------- void __cdecl sub_67CBF9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC07) -------------------------------------------------------- void __cdecl sub_67CC07() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC15) -------------------------------------------------------- void __cdecl sub_67CC15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC23) -------------------------------------------------------- void __cdecl sub_67CC23() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC31) -------------------------------------------------------- void __cdecl sub_67CC31() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC3F) -------------------------------------------------------- void __cdecl sub_67CC3F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC4D) -------------------------------------------------------- void __cdecl sub_67CC4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC55) -------------------------------------------------------- void __usercall sub_67CC55(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5492); } //----- (0067CC63) -------------------------------------------------------- void __cdecl sub_67CC63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC71) -------------------------------------------------------- void __cdecl sub_67CC71() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC7F) -------------------------------------------------------- void __cdecl sub_67CC7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC8D) -------------------------------------------------------- void __cdecl sub_67CC8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CC9B) -------------------------------------------------------- void __cdecl sub_67CC9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCA9) -------------------------------------------------------- void __cdecl sub_67CCA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCB7) -------------------------------------------------------- void __cdecl sub_67CCB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCC5) -------------------------------------------------------- void __cdecl sub_67CCC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCD3) -------------------------------------------------------- void __cdecl sub_67CCD3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCE1) -------------------------------------------------------- void __cdecl sub_67CCE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCEF) -------------------------------------------------------- void __cdecl sub_67CCEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CCFD) -------------------------------------------------------- void __cdecl sub_67CCFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD0B) -------------------------------------------------------- void __cdecl sub_67CD0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD19) -------------------------------------------------------- void __cdecl sub_67CD19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD27) -------------------------------------------------------- void __cdecl sub_67CD27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD35) -------------------------------------------------------- void __cdecl sub_67CD35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD43) -------------------------------------------------------- void __cdecl sub_67CD43() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD51) -------------------------------------------------------- void __cdecl sub_67CD51() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD5F) -------------------------------------------------------- void __cdecl sub_67CD5F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD6D) -------------------------------------------------------- void __cdecl sub_67CD6D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD7B) -------------------------------------------------------- void __cdecl sub_67CD7B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD89) -------------------------------------------------------- void __cdecl sub_67CD89() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CD97) -------------------------------------------------------- void __cdecl sub_67CD97() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDA5) -------------------------------------------------------- void __cdecl sub_67CDA5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDB3) -------------------------------------------------------- void __cdecl sub_67CDB3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDC1) -------------------------------------------------------- void __cdecl sub_67CDC1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDCF) -------------------------------------------------------- void __cdecl sub_67CDCF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDDD) -------------------------------------------------------- void __cdecl sub_67CDDD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDEB) -------------------------------------------------------- void __cdecl sub_67CDEB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CDF9) -------------------------------------------------------- void __cdecl sub_67CDF9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE07) -------------------------------------------------------- void __cdecl sub_67CE07() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE15) -------------------------------------------------------- void __cdecl sub_67CE15() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE23) -------------------------------------------------------- void __cdecl sub_67CE23() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE31) -------------------------------------------------------- void __cdecl sub_67CE31() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE3F) -------------------------------------------------------- void __cdecl sub_67CE3F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE4D) -------------------------------------------------------- void __cdecl sub_67CE4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE5B) -------------------------------------------------------- void __cdecl sub_67CE5B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE69) -------------------------------------------------------- void __cdecl sub_67CE69() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE71) -------------------------------------------------------- void __usercall sub_67CE71(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5804); } //----- (0067CE7F) -------------------------------------------------------- void __cdecl sub_67CE7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE8D) -------------------------------------------------------- void __cdecl sub_67CE8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CE95) -------------------------------------------------------- void __usercall sub_67CE95(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5828); } //----- (0067CEA3) -------------------------------------------------------- void __cdecl sub_67CEA3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CEB1) -------------------------------------------------------- void __cdecl sub_67CEB1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CEB9) -------------------------------------------------------- void __usercall sub_67CEB9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5852); } //----- (0067CEC7) -------------------------------------------------------- void __cdecl sub_67CEC7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CED5) -------------------------------------------------------- void __cdecl sub_67CED5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CEE3) -------------------------------------------------------- void __cdecl sub_67CEE3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CEF1) -------------------------------------------------------- void __cdecl sub_67CEF1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CEFF) -------------------------------------------------------- void __cdecl sub_67CEFF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF0D) -------------------------------------------------------- void __cdecl sub_67CF0D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF15) -------------------------------------------------------- void __usercall sub_67CF15(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5952); } //----- (0067CF23) -------------------------------------------------------- void __cdecl sub_67CF23() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF31) -------------------------------------------------------- void __cdecl sub_67CF31() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF3F) -------------------------------------------------------- void __cdecl sub_67CF3F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF4D) -------------------------------------------------------- void __cdecl sub_67CF4D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF55) -------------------------------------------------------- void __usercall sub_67CF55(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 5992); } //----- (0067CF63) -------------------------------------------------------- void __cdecl sub_67CF63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF71) -------------------------------------------------------- void __cdecl sub_67CF71() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF7F) -------------------------------------------------------- void __cdecl sub_67CF7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF8D) -------------------------------------------------------- void __cdecl sub_67CF8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CF9B) -------------------------------------------------------- void __cdecl sub_67CF9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFA9) -------------------------------------------------------- void __cdecl sub_67CFA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFB7) -------------------------------------------------------- void __cdecl sub_67CFB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFC5) -------------------------------------------------------- void __cdecl sub_67CFC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFD3) -------------------------------------------------------- void __cdecl sub_67CFD3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFE1) -------------------------------------------------------- void __cdecl sub_67CFE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFEF) -------------------------------------------------------- void __cdecl sub_67CFEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067CFF7) -------------------------------------------------------- void __usercall sub_67CFF7(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6088); } //----- (0067D005) -------------------------------------------------------- void __cdecl sub_67D005() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D00D) -------------------------------------------------------- void __usercall sub_67D00D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6104); } //----- (0067D01B) -------------------------------------------------------- void __cdecl sub_67D01B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D029) -------------------------------------------------------- void __cdecl sub_67D029() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D037) -------------------------------------------------------- void __cdecl sub_67D037() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D045) -------------------------------------------------------- void __cdecl sub_67D045() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D053) -------------------------------------------------------- void __cdecl sub_67D053() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D061) -------------------------------------------------------- void __cdecl sub_67D061() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D069) -------------------------------------------------------- void __usercall sub_67D069(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6160); } //----- (0067D077) -------------------------------------------------------- void __cdecl sub_67D077() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D085) -------------------------------------------------------- void __cdecl sub_67D085() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D093) -------------------------------------------------------- void __cdecl sub_67D093() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0A1) -------------------------------------------------------- void __cdecl sub_67D0A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0AF) -------------------------------------------------------- void __cdecl sub_67D0AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0BD) -------------------------------------------------------- void __cdecl sub_67D0BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0CB) -------------------------------------------------------- void __cdecl sub_67D0CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0D9) -------------------------------------------------------- void __cdecl sub_67D0D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0E7) -------------------------------------------------------- void __cdecl sub_67D0E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D0F5) -------------------------------------------------------- void __cdecl sub_67D0F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D103) -------------------------------------------------------- void __cdecl sub_67D103() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D111) -------------------------------------------------------- void __cdecl sub_67D111() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D11F) -------------------------------------------------------- void __cdecl sub_67D11F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D12D) -------------------------------------------------------- void __cdecl sub_67D12D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D13B) -------------------------------------------------------- void __cdecl sub_67D13B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D143) -------------------------------------------------------- void __usercall sub_67D143(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6288); } //----- (0067D151) -------------------------------------------------------- void __cdecl sub_67D151() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D15F) -------------------------------------------------------- void __cdecl sub_67D15F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D167) -------------------------------------------------------- void __usercall sub_67D167(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6312); } //----- (0067D175) -------------------------------------------------------- void __cdecl sub_67D175() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D183) -------------------------------------------------------- void __cdecl sub_67D183() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D191) -------------------------------------------------------- void __cdecl sub_67D191() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D19F) -------------------------------------------------------- void __cdecl sub_67D19F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D1AD) -------------------------------------------------------- void __cdecl sub_67D1AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D1BB) -------------------------------------------------------- void __cdecl sub_67D1BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D1C9) -------------------------------------------------------- void __cdecl sub_67D1C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D1D7) -------------------------------------------------------- void __cdecl sub_67D1D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D1E5) -------------------------------------------------------- void __cdecl sub_67D1E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D1F3) -------------------------------------------------------- void __cdecl sub_67D1F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D201) -------------------------------------------------------- void __cdecl sub_67D201() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D20F) -------------------------------------------------------- void __cdecl sub_67D20F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D21D) -------------------------------------------------------- void __cdecl sub_67D21D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D22B) -------------------------------------------------------- void __cdecl sub_67D22B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D233) -------------------------------------------------------- void __usercall sub_67D233(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6456); } //----- (0067D241) -------------------------------------------------------- void __cdecl sub_67D241() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D249) -------------------------------------------------------- void __usercall sub_67D249(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6472); } //----- (0067D257) -------------------------------------------------------- void __cdecl sub_67D257() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D265) -------------------------------------------------------- void __cdecl sub_67D265() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D273) -------------------------------------------------------- void __cdecl sub_67D273() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D281) -------------------------------------------------------- void __cdecl sub_67D281() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D28F) -------------------------------------------------------- void __cdecl sub_67D28F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D29D) -------------------------------------------------------- void __cdecl sub_67D29D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D2A5) -------------------------------------------------------- void __usercall sub_67D2A5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6528); } //----- (0067D2B3) -------------------------------------------------------- void __cdecl sub_67D2B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D2BB) -------------------------------------------------------- void __usercall sub_67D2BB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6544); } //----- (0067D2C9) -------------------------------------------------------- void __cdecl sub_67D2C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D2D7) -------------------------------------------------------- void __cdecl sub_67D2D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D2E5) -------------------------------------------------------- void __cdecl sub_67D2E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D2F3) -------------------------------------------------------- void __cdecl sub_67D2F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D301) -------------------------------------------------------- void __cdecl sub_67D301() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D30F) -------------------------------------------------------- void __cdecl sub_67D30F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D31D) -------------------------------------------------------- void __cdecl sub_67D31D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D32B) -------------------------------------------------------- void __cdecl sub_67D32B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D339) -------------------------------------------------------- void __cdecl sub_67D339() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D341) -------------------------------------------------------- void __usercall sub_67D341(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6624); } //----- (0067D34F) -------------------------------------------------------- void __cdecl sub_67D34F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D35D) -------------------------------------------------------- void __cdecl sub_67D35D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D36B) -------------------------------------------------------- void __cdecl sub_67D36B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D379) -------------------------------------------------------- void __cdecl sub_67D379() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D387) -------------------------------------------------------- void __cdecl sub_67D387() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D395) -------------------------------------------------------- void __cdecl sub_67D395() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3A3) -------------------------------------------------------- void __cdecl sub_67D3A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3B1) -------------------------------------------------------- void __cdecl sub_67D3B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3BF) -------------------------------------------------------- void __cdecl sub_67D3BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3CD) -------------------------------------------------------- void __cdecl sub_67D3CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3DB) -------------------------------------------------------- void __cdecl sub_67D3DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3E9) -------------------------------------------------------- void __cdecl sub_67D3E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D3F1) -------------------------------------------------------- void __usercall sub_67D3F1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6728); } //----- (0067D3FF) -------------------------------------------------------- void __cdecl sub_67D3FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D40D) -------------------------------------------------------- void __cdecl sub_67D40D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D41B) -------------------------------------------------------- void __cdecl sub_67D41B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D429) -------------------------------------------------------- void __cdecl sub_67D429() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D431) -------------------------------------------------------- void __usercall sub_67D431(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6768); } //----- (0067D43F) -------------------------------------------------------- void __cdecl sub_67D43F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D447) -------------------------------------------------------- void __usercall sub_67D447(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6784); } //----- (0067D455) -------------------------------------------------------- void __cdecl sub_67D455() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D463) -------------------------------------------------------- void __cdecl sub_67D463() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D471) -------------------------------------------------------- void __cdecl sub_67D471() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D47F) -------------------------------------------------------- void __cdecl sub_67D47F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D48D) -------------------------------------------------------- void __cdecl sub_67D48D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D495) -------------------------------------------------------- void __usercall sub_67D495(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6832); } //----- (0067D4A3) -------------------------------------------------------- void __cdecl sub_67D4A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D4AB) -------------------------------------------------------- void __usercall sub_67D4AB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6848); } //----- (0067D4B9) -------------------------------------------------------- void __cdecl sub_67D4B9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D4C7) -------------------------------------------------------- void __cdecl sub_67D4C7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D4D5) -------------------------------------------------------- void __cdecl sub_67D4D5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D4E3) -------------------------------------------------------- void __cdecl sub_67D4E3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D4F1) -------------------------------------------------------- void __cdecl sub_67D4F1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D4FF) -------------------------------------------------------- void __cdecl sub_67D4FF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D50D) -------------------------------------------------------- void __cdecl sub_67D50D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D51B) -------------------------------------------------------- void __cdecl sub_67D51B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D529) -------------------------------------------------------- void __cdecl sub_67D529() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D531) -------------------------------------------------------- void __usercall sub_67D531(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6928); } //----- (0067D53F) -------------------------------------------------------- void __cdecl sub_67D53F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D54D) -------------------------------------------------------- void __cdecl sub_67D54D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D555) -------------------------------------------------------- void __usercall sub_67D555(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6952); } //----- (0067D563) -------------------------------------------------------- void __cdecl sub_67D563() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D571) -------------------------------------------------------- void __cdecl sub_67D571() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D579) -------------------------------------------------------- void __usercall sub_67D579(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 6980); } //----- (0067D587) -------------------------------------------------------- void __cdecl sub_67D587() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D595) -------------------------------------------------------- void __cdecl sub_67D595() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5A3) -------------------------------------------------------- void __cdecl sub_67D5A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5B1) -------------------------------------------------------- void __cdecl sub_67D5B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5BF) -------------------------------------------------------- void __cdecl sub_67D5BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5CD) -------------------------------------------------------- void __cdecl sub_67D5CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5DB) -------------------------------------------------------- void __cdecl sub_67D5DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5E9) -------------------------------------------------------- void __cdecl sub_67D5E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D5F7) -------------------------------------------------------- void __cdecl sub_67D5F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D605) -------------------------------------------------------- void __cdecl sub_67D605() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D613) -------------------------------------------------------- void __cdecl sub_67D613() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D621) -------------------------------------------------------- void __cdecl sub_67D621() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D62F) -------------------------------------------------------- void __cdecl sub_67D62F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D63D) -------------------------------------------------------- void __cdecl sub_67D63D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D64B) -------------------------------------------------------- void __cdecl sub_67D64B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D659) -------------------------------------------------------- void __cdecl sub_67D659() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D667) -------------------------------------------------------- void __cdecl sub_67D667() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D675) -------------------------------------------------------- void __cdecl sub_67D675() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D683) -------------------------------------------------------- void __cdecl sub_67D683() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D691) -------------------------------------------------------- void __cdecl sub_67D691() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D69F) -------------------------------------------------------- void __cdecl sub_67D69F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D6AD) -------------------------------------------------------- void __cdecl sub_67D6AD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D6BB) -------------------------------------------------------- void __cdecl sub_67D6BB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D6C9) -------------------------------------------------------- void __cdecl sub_67D6C9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D6D7) -------------------------------------------------------- void __cdecl sub_67D6D7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D6E5) -------------------------------------------------------- void __cdecl sub_67D6E5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D6F3) -------------------------------------------------------- void __cdecl sub_67D6F3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D701) -------------------------------------------------------- void __cdecl sub_67D701() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D70F) -------------------------------------------------------- void __cdecl sub_67D70F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D71D) -------------------------------------------------------- void __cdecl sub_67D71D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D72B) -------------------------------------------------------- void __cdecl sub_67D72B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D739) -------------------------------------------------------- void __cdecl sub_67D739() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D747) -------------------------------------------------------- void __cdecl sub_67D747() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D755) -------------------------------------------------------- void __cdecl sub_67D755() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D763) -------------------------------------------------------- void __cdecl sub_67D763() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D771) -------------------------------------------------------- void __cdecl sub_67D771() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D77F) -------------------------------------------------------- void __cdecl sub_67D77F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D78D) -------------------------------------------------------- void __cdecl sub_67D78D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D79B) -------------------------------------------------------- void __cdecl sub_67D79B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7A9) -------------------------------------------------------- void __cdecl sub_67D7A9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7B7) -------------------------------------------------------- void __cdecl sub_67D7B7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7C5) -------------------------------------------------------- void __cdecl sub_67D7C5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7D3) -------------------------------------------------------- void __cdecl sub_67D7D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7E1) -------------------------------------------------------- void __cdecl sub_67D7E1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7EF) -------------------------------------------------------- void __cdecl sub_67D7EF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D7FD) -------------------------------------------------------- void __cdecl sub_67D7FD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D80B) -------------------------------------------------------- void __cdecl sub_67D80B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D819) -------------------------------------------------------- void __cdecl sub_67D819() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D827) -------------------------------------------------------- void __cdecl sub_67D827() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D835) -------------------------------------------------------- void __cdecl sub_67D835() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D843) -------------------------------------------------------- void __cdecl sub_67D843() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D851) -------------------------------------------------------- void __cdecl sub_67D851() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D85F) -------------------------------------------------------- void __cdecl sub_67D85F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D86D) -------------------------------------------------------- void __cdecl sub_67D86D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D87B) -------------------------------------------------------- void __cdecl sub_67D87B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D889) -------------------------------------------------------- void __cdecl sub_67D889() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D897) -------------------------------------------------------- void __cdecl sub_67D897() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8A5) -------------------------------------------------------- void __cdecl sub_67D8A5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8B3) -------------------------------------------------------- void __cdecl sub_67D8B3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8C1) -------------------------------------------------------- void __cdecl sub_67D8C1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8CF) -------------------------------------------------------- void __cdecl sub_67D8CF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8DD) -------------------------------------------------------- void __cdecl sub_67D8DD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8EB) -------------------------------------------------------- void __cdecl sub_67D8EB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D8F9) -------------------------------------------------------- void __cdecl sub_67D8F9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D907) -------------------------------------------------------- void __cdecl sub_67D907() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D915) -------------------------------------------------------- void __cdecl sub_67D915() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D923) -------------------------------------------------------- void __cdecl sub_67D923() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D931) -------------------------------------------------------- void __cdecl sub_67D931() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D93F) -------------------------------------------------------- void __cdecl sub_67D93F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D94D) -------------------------------------------------------- void __cdecl sub_67D94D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D95B) -------------------------------------------------------- void __cdecl sub_67D95B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D969) -------------------------------------------------------- void __cdecl sub_67D969() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D977) -------------------------------------------------------- void __cdecl sub_67D977() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D985) -------------------------------------------------------- void __cdecl sub_67D985() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D993) -------------------------------------------------------- void __cdecl sub_67D993() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D9A1) -------------------------------------------------------- void __cdecl sub_67D9A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D9AF) -------------------------------------------------------- void __cdecl sub_67D9AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D9BD) -------------------------------------------------------- void __cdecl sub_67D9BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D9C5) -------------------------------------------------------- void __usercall sub_67D9C5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7664); } //----- (0067D9D3) -------------------------------------------------------- void __cdecl sub_67D9D3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D9DB) -------------------------------------------------------- void __usercall sub_67D9DB(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7680); } //----- (0067D9E9) -------------------------------------------------------- void __cdecl sub_67D9E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067D9F7) -------------------------------------------------------- void __cdecl sub_67D9F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA05) -------------------------------------------------------- void __cdecl sub_67DA05() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA13) -------------------------------------------------------- void __cdecl sub_67DA13() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA21) -------------------------------------------------------- void __cdecl sub_67DA21() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA2F) -------------------------------------------------------- void __cdecl sub_67DA2F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA3D) -------------------------------------------------------- void __cdecl sub_67DA3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA4B) -------------------------------------------------------- void __cdecl sub_67DA4B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA59) -------------------------------------------------------- void __cdecl sub_67DA59() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA67) -------------------------------------------------------- void __cdecl sub_67DA67() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA75) -------------------------------------------------------- void __cdecl sub_67DA75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA83) -------------------------------------------------------- void __cdecl sub_67DA83() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA91) -------------------------------------------------------- void __cdecl sub_67DA91() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DA9F) -------------------------------------------------------- void __cdecl sub_67DA9F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DAAD) -------------------------------------------------------- void __cdecl sub_67DAAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DABB) -------------------------------------------------------- void __cdecl sub_67DABB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DAC9) -------------------------------------------------------- void __cdecl sub_67DAC9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DAD7) -------------------------------------------------------- void __cdecl sub_67DAD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DADF) -------------------------------------------------------- void __usercall sub_67DADF(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7832); } //----- (0067DAED) -------------------------------------------------------- void __cdecl sub_67DAED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DAF5) -------------------------------------------------------- void __usercall sub_67DAF5(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7848); } //----- (0067DB03) -------------------------------------------------------- void __cdecl sub_67DB03() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB0B) -------------------------------------------------------- void __usercall sub_67DB0B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7864); } //----- (0067DB19) -------------------------------------------------------- void __cdecl sub_67DB19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB21) -------------------------------------------------------- void __usercall sub_67DB21(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7880); } //----- (0067DB2F) -------------------------------------------------------- void __cdecl sub_67DB2F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB37) -------------------------------------------------------- void __usercall sub_67DB37(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7896); } //----- (0067DB45) -------------------------------------------------------- void __cdecl sub_67DB45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB4D) -------------------------------------------------------- void __usercall sub_67DB4D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7912); } //----- (0067DB5B) -------------------------------------------------------- void __cdecl sub_67DB5B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB69) -------------------------------------------------------- void __cdecl sub_67DB69() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB77) -------------------------------------------------------- void __cdecl sub_67DB77() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB85) -------------------------------------------------------- void __cdecl sub_67DB85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB93) -------------------------------------------------------- void __cdecl sub_67DB93() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DB9B) -------------------------------------------------------- void __usercall sub_67DB9B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 7960); } //----- (0067DBA9) -------------------------------------------------------- void __cdecl sub_67DBA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DBB7) -------------------------------------------------------- void __cdecl sub_67DBB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DBC5) -------------------------------------------------------- void __cdecl sub_67DBC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DBD3) -------------------------------------------------------- void __cdecl sub_67DBD3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DBE1) -------------------------------------------------------- void __cdecl sub_67DBE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DBEF) -------------------------------------------------------- void __cdecl sub_67DBEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DBFD) -------------------------------------------------------- void __cdecl sub_67DBFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC0B) -------------------------------------------------------- void __cdecl sub_67DC0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC19) -------------------------------------------------------- void __cdecl sub_67DC19() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC27) -------------------------------------------------------- void __cdecl sub_67DC27() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC35) -------------------------------------------------------- void __cdecl sub_67DC35() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC3D) -------------------------------------------------------- void __usercall sub_67DC3D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8056); } //----- (0067DC4B) -------------------------------------------------------- void __cdecl sub_67DC4B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC59) -------------------------------------------------------- void __cdecl sub_67DC59() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC67) -------------------------------------------------------- void __cdecl sub_67DC67() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC6F) -------------------------------------------------------- void __usercall sub_67DC6F(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8088); } //----- (0067DC7D) -------------------------------------------------------- void __cdecl sub_67DC7D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC8B) -------------------------------------------------------- void __cdecl sub_67DC8B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DC93) -------------------------------------------------------- void __usercall sub_67DC93(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8112); } //----- (0067DCA1) -------------------------------------------------------- void __cdecl sub_67DCA1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCAF) -------------------------------------------------------- void __cdecl sub_67DCAF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCBD) -------------------------------------------------------- void __cdecl sub_67DCBD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCCB) -------------------------------------------------------- void __cdecl sub_67DCCB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCD9) -------------------------------------------------------- void __cdecl sub_67DCD9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCE7) -------------------------------------------------------- void __cdecl sub_67DCE7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCF5) -------------------------------------------------------- void __cdecl sub_67DCF5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DCFD) -------------------------------------------------------- void __usercall sub_67DCFD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8176); } //----- (0067DD0B) -------------------------------------------------------- void __cdecl sub_67DD0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD13) -------------------------------------------------------- void __usercall sub_67DD13(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8192); } //----- (0067DD21) -------------------------------------------------------- void __cdecl sub_67DD21() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD2F) -------------------------------------------------------- void __cdecl sub_67DD2F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD3D) -------------------------------------------------------- void __cdecl sub_67DD3D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD4B) -------------------------------------------------------- void __cdecl sub_67DD4B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD59) -------------------------------------------------------- void __cdecl sub_67DD59() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD67) -------------------------------------------------------- void __cdecl sub_67DD67() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD75) -------------------------------------------------------- void __cdecl sub_67DD75() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD83) -------------------------------------------------------- void __cdecl sub_67DD83() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD91) -------------------------------------------------------- void __cdecl sub_67DD91() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DD9F) -------------------------------------------------------- void __cdecl sub_67DD9F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DDAD) -------------------------------------------------------- void __cdecl sub_67DDAD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DDBB) -------------------------------------------------------- void __cdecl sub_67DDBB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DDC9) -------------------------------------------------------- void __cdecl sub_67DDC9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DDD7) -------------------------------------------------------- void __cdecl sub_67DDD7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DDE5) -------------------------------------------------------- void __cdecl sub_67DDE5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DDF3) -------------------------------------------------------- void __cdecl sub_67DDF3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE01) -------------------------------------------------------- void __cdecl sub_67DE01() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE0F) -------------------------------------------------------- void __cdecl sub_67DE0F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE1D) -------------------------------------------------------- void __cdecl sub_67DE1D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE2B) -------------------------------------------------------- void __cdecl sub_67DE2B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE39) -------------------------------------------------------- void __cdecl sub_67DE39() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE47) -------------------------------------------------------- void __cdecl sub_67DE47() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE55) -------------------------------------------------------- void __cdecl sub_67DE55() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE63) -------------------------------------------------------- void __cdecl sub_67DE63() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE71) -------------------------------------------------------- void __cdecl sub_67DE71() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE7F) -------------------------------------------------------- void __cdecl sub_67DE7F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE8D) -------------------------------------------------------- void __cdecl sub_67DE8D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DE9B) -------------------------------------------------------- void __cdecl sub_67DE9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DEA9) -------------------------------------------------------- void __cdecl sub_67DEA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DEB7) -------------------------------------------------------- void __cdecl sub_67DEB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DEC5) -------------------------------------------------------- void __cdecl sub_67DEC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DED3) -------------------------------------------------------- void __cdecl sub_67DED3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DEE1) -------------------------------------------------------- void __cdecl sub_67DEE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DEEF) -------------------------------------------------------- void __cdecl sub_67DEEF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DEFD) -------------------------------------------------------- void __cdecl sub_67DEFD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF0B) -------------------------------------------------------- void __cdecl sub_67DF0B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF13) -------------------------------------------------------- void __usercall sub_67DF13(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8708); } //----- (0067DF21) -------------------------------------------------------- void __cdecl sub_67DF21() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF29) -------------------------------------------------------- void __usercall sub_67DF29(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8724); } //----- (0067DF37) -------------------------------------------------------- void __cdecl sub_67DF37() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF45) -------------------------------------------------------- void __cdecl sub_67DF45() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF53) -------------------------------------------------------- void __cdecl sub_67DF53() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF61) -------------------------------------------------------- void __cdecl sub_67DF61() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF6F) -------------------------------------------------------- void __cdecl sub_67DF6F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF77) -------------------------------------------------------- void __usercall sub_67DF77(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8772); } //----- (0067DF85) -------------------------------------------------------- void __cdecl sub_67DF85() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DF8D) -------------------------------------------------------- void __usercall sub_67DF8D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8788); } //----- (0067DF9B) -------------------------------------------------------- void __cdecl sub_67DF9B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DFA9) -------------------------------------------------------- void __cdecl sub_67DFA9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DFB7) -------------------------------------------------------- void __cdecl sub_67DFB7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DFC5) -------------------------------------------------------- void __cdecl sub_67DFC5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DFD3) -------------------------------------------------------- void __cdecl sub_67DFD3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DFE1) -------------------------------------------------------- void __cdecl sub_67DFE1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067DFE9) -------------------------------------------------------- void __usercall sub_67DFE9(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8888); } //----- (0067DFF7) -------------------------------------------------------- void __cdecl sub_67DFF7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E005) -------------------------------------------------------- void __cdecl sub_67E005() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E013) -------------------------------------------------------- void __cdecl sub_67E013() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E021) -------------------------------------------------------- void __cdecl sub_67E021() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E029) -------------------------------------------------------- void __usercall sub_67E029(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 8928); } //----- (0067E037) -------------------------------------------------------- void __cdecl sub_67E037() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E045) -------------------------------------------------------- void __cdecl sub_67E045() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E053) -------------------------------------------------------- void __cdecl sub_67E053() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E061) -------------------------------------------------------- void __cdecl sub_67E061() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E06F) -------------------------------------------------------- void __cdecl sub_67E06F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E07D) -------------------------------------------------------- void __cdecl sub_67E07D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E08B) -------------------------------------------------------- void __cdecl sub_67E08B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E099) -------------------------------------------------------- void __cdecl sub_67E099() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E0A1) -------------------------------------------------------- void __usercall sub_67E0A1(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9000); } //----- (0067E0AF) -------------------------------------------------------- void __cdecl sub_67E0AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E0BD) -------------------------------------------------------- void __cdecl sub_67E0BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E0CB) -------------------------------------------------------- void __cdecl sub_67E0CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E0D9) -------------------------------------------------------- void __cdecl sub_67E0D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E0E7) -------------------------------------------------------- void __cdecl sub_67E0E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E0F5) -------------------------------------------------------- void __cdecl sub_67E0F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E103) -------------------------------------------------------- void __cdecl sub_67E103() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E10B) -------------------------------------------------------- void __usercall sub_67E10B(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9064); } //----- (0067E119) -------------------------------------------------------- void __cdecl sub_67E119() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E121) -------------------------------------------------------- void __usercall sub_67E121(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9080); } //----- (0067E12F) -------------------------------------------------------- void __cdecl sub_67E12F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E137) -------------------------------------------------------- void __usercall sub_67E137(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9096); } //----- (0067E145) -------------------------------------------------------- void __cdecl sub_67E145() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E153) -------------------------------------------------------- void __cdecl sub_67E153() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E161) -------------------------------------------------------- void __cdecl sub_67E161() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E16F) -------------------------------------------------------- void __cdecl sub_67E16F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E17D) -------------------------------------------------------- void __cdecl sub_67E17D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E185) -------------------------------------------------------- void __usercall sub_67E185(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9144); } //----- (0067E193) -------------------------------------------------------- void __cdecl sub_67E193() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1A1) -------------------------------------------------------- void __cdecl sub_67E1A1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1AF) -------------------------------------------------------- void __cdecl sub_67E1AF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1BD) -------------------------------------------------------- void __cdecl sub_67E1BD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1CB) -------------------------------------------------------- void __cdecl sub_67E1CB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1D9) -------------------------------------------------------- void __cdecl sub_67E1D9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1E7) -------------------------------------------------------- void __cdecl sub_67E1E7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1F5) -------------------------------------------------------- void __cdecl sub_67E1F5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E1FD) -------------------------------------------------------- void __usercall sub_67E1FD(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9216); } //----- (0067E20B) -------------------------------------------------------- void __cdecl sub_67E20B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E219) -------------------------------------------------------- void __cdecl sub_67E219() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E227) -------------------------------------------------------- void __cdecl sub_67E227() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E235) -------------------------------------------------------- void __cdecl sub_67E235() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E23D) -------------------------------------------------------- void __usercall sub_67E23D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9256); } //----- (0067E24B) -------------------------------------------------------- void __cdecl sub_67E24B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E259) -------------------------------------------------------- void __cdecl sub_67E259() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E261) -------------------------------------------------------- void __usercall sub_67E261(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9280); } //----- (0067E26F) -------------------------------------------------------- void __cdecl sub_67E26F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E27D) -------------------------------------------------------- void __cdecl sub_67E27D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E28B) -------------------------------------------------------- void __cdecl sub_67E28B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E299) -------------------------------------------------------- void __cdecl sub_67E299() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2A7) -------------------------------------------------------- void __cdecl sub_67E2A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2B5) -------------------------------------------------------- void __cdecl sub_67E2B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2C3) -------------------------------------------------------- void __cdecl sub_67E2C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2D1) -------------------------------------------------------- void __cdecl sub_67E2D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2DF) -------------------------------------------------------- void __cdecl sub_67E2DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2ED) -------------------------------------------------------- void __cdecl sub_67E2ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E2FB) -------------------------------------------------------- void __cdecl sub_67E2FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E309) -------------------------------------------------------- void __cdecl sub_67E309() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E317) -------------------------------------------------------- void __cdecl sub_67E317() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E325) -------------------------------------------------------- void __cdecl sub_67E325() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E333) -------------------------------------------------------- void __cdecl sub_67E333() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E341) -------------------------------------------------------- void __cdecl sub_67E341() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E34F) -------------------------------------------------------- void __cdecl sub_67E34F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E35D) -------------------------------------------------------- void __cdecl sub_67E35D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E36B) -------------------------------------------------------- void __cdecl sub_67E36B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E379) -------------------------------------------------------- void __cdecl sub_67E379() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E387) -------------------------------------------------------- void __cdecl sub_67E387() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E395) -------------------------------------------------------- void __cdecl sub_67E395() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3A3) -------------------------------------------------------- void __cdecl sub_67E3A3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3B1) -------------------------------------------------------- void __cdecl sub_67E3B1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3BF) -------------------------------------------------------- void __cdecl sub_67E3BF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3CD) -------------------------------------------------------- void __cdecl sub_67E3CD() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3DB) -------------------------------------------------------- void __cdecl sub_67E3DB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3E9) -------------------------------------------------------- void __cdecl sub_67E3E9() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E3F7) -------------------------------------------------------- void __cdecl sub_67E3F7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E405) -------------------------------------------------------- void __cdecl sub_67E405() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E40D) -------------------------------------------------------- void __usercall sub_67E40D(int a1) { sub_4013B0(*(_DWORD *)(a1 - 24) + 9540); } //----- (0067E41B) -------------------------------------------------------- void __cdecl sub_67E41B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E429) -------------------------------------------------------- void __cdecl sub_67E429() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E437) -------------------------------------------------------- void __cdecl sub_67E437() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E445) -------------------------------------------------------- void __cdecl sub_67E445() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E453) -------------------------------------------------------- void __cdecl sub_67E453() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E461) -------------------------------------------------------- void __cdecl sub_67E461() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E46F) -------------------------------------------------------- void __cdecl sub_67E46F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E47D) -------------------------------------------------------- void __cdecl sub_67E47D() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E48B) -------------------------------------------------------- void __cdecl sub_67E48B() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E499) -------------------------------------------------------- void __cdecl sub_67E499() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4A7) -------------------------------------------------------- void __cdecl sub_67E4A7() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4B5) -------------------------------------------------------- void __cdecl sub_67E4B5() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4C3) -------------------------------------------------------- void __cdecl sub_67E4C3() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4D1) -------------------------------------------------------- void __cdecl sub_67E4D1() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4DF) -------------------------------------------------------- void __cdecl sub_67E4DF() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4ED) -------------------------------------------------------- void __cdecl sub_67E4ED() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E4FB) -------------------------------------------------------- void __cdecl sub_67E4FB() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E509) -------------------------------------------------------- void __cdecl sub_67E509() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E517) -------------------------------------------------------- void __cdecl sub_67E517() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E525) -------------------------------------------------------- void __cdecl sub_67E525() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E533) -------------------------------------------------------- void __cdecl sub_67E533() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E541) -------------------------------------------------------- void __cdecl sub_67E541() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E54F) -------------------------------------------------------- void __cdecl sub_67E54F() { JUMPOUT(loc_4013A0); } // 4013A0: using guessed type int loc_4013A0(); //----- (0067E55D) -------------------------------------------------------- void __usercall sub_67E55D(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 24) + 12908; *(_DWORD *)v2 = &off_6A04B4; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6A04B4: using guessed type int (__thiscall *off_6A04B4)(void *, char); //----- (0067E56B) -------------------------------------------------------- int __cdecl sub_67E56B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E590) -------------------------------------------------------- void __usercall sub_67E590(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_6A1DCC; sub_639940(v1); } // 6A1DCC: using guessed type int (__thiscall *off_6A1DCC)(void *, char); //----- (0067E598) -------------------------------------------------------- void __usercall sub_67E598(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 356; *(_DWORD *)v1 = &off_6A1DD4; sub_639940(v1); } // 6A1DD4: using guessed type int (__thiscall *off_6A1DD4)(void *, char); //----- (0067E5A6) -------------------------------------------------------- void __usercall sub_67E5A6(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 3608)); } //----- (0067E5B4) -------------------------------------------------------- int __cdecl sub_67E5B4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E5D0) -------------------------------------------------------- void __cdecl sub_67E5D0() { JUMPOUT(loc_416500); } // 416500: using guessed type int loc_416500(); //----- (0067E5D8) -------------------------------------------------------- void __cdecl sub_67E5D8() { JUMPOUT(loc_4165C0); } // 4165C0: using guessed type int loc_4165C0(); //----- (0067E5E6) -------------------------------------------------------- void __usercall sub_67E5E6(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 3608)); } //----- (0067E5F4) -------------------------------------------------------- int __cdecl sub_67E5F4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E610) -------------------------------------------------------- int __usercall sub_67E610(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067E640) -------------------------------------------------------- int __cdecl sub_67E640(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E660) -------------------------------------------------------- void __usercall sub_67E660(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (0067E671) -------------------------------------------------------- int __cdecl sub_67E671(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E690) -------------------------------------------------------- int __cdecl sub_67E690(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E6B0) -------------------------------------------------------- int __usercall sub_67E6B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067E6E0) -------------------------------------------------------- void __usercall sub_67E6E0(int a1) { **(_DWORD **)(a1 - 44) = &off_6A253C; } // 6A253C: using guessed type int (__stdcall *off_6A253C)(int, int); //----- (0067E6E8) -------------------------------------------------------- int __cdecl sub_67E6E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E710) -------------------------------------------------------- void __cdecl sub_67E710() { JUMPOUT(loc_419720); } // 419720: using guessed type int loc_419720(); //----- (0067E718) -------------------------------------------------------- int __cdecl sub_67E718(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E740) -------------------------------------------------------- int __usercall sub_67E740(int a1) { return sub_419A80((void *)(a1 - 44)); } //----- (0067E748) -------------------------------------------------------- void __cdecl sub_67E748() { JUMPOUT(loc_419720); } // 419720: using guessed type int loc_419720(); //----- (0067E750) -------------------------------------------------------- int __cdecl sub_67E750(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E780) -------------------------------------------------------- int __usercall sub_67E780(int a1) { return sub_4026F0((int *)(a1 - 84)); } //----- (0067E788) -------------------------------------------------------- int __cdecl sub_67E788(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E7B0) -------------------------------------------------------- int __usercall sub_67E7B0(int a1) { return sub_4026F0((int *)(a1 - 136)); } //----- (0067E7BB) -------------------------------------------------------- int __cdecl sub_67E7BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 35)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E7F0) -------------------------------------------------------- int __usercall sub_67E7F0(int a1) { return sub_4026F0((int *)(a1 - 536)); } //----- (0067E7FB) -------------------------------------------------------- int __cdecl sub_67E7FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 135)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E830) -------------------------------------------------------- int __usercall sub_67E830(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067E838) -------------------------------------------------------- int __usercall sub_67E838(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0067E840) -------------------------------------------------------- int __cdecl sub_67E840(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E860) -------------------------------------------------------- int __usercall sub_67E860(int a1) { return sub_4026F0((int *)(a1 - 292)); } //----- (0067E86B) -------------------------------------------------------- void __usercall sub_67E86B(int a1) { sub_427EB0((void *)(a1 - 288)); } //----- (0067E876) -------------------------------------------------------- int __cdecl sub_67E876(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 74)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E8A0) -------------------------------------------------------- int __usercall sub_67E8A0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067E8A8) -------------------------------------------------------- void __usercall sub_67E8A8(int a1) { *(_DWORD *)(a1 - 28) = &off_6A2454; sub_427EB0((void *)(a1 - 28)); } // 6A2454: using guessed type int (__stdcall *off_6A2454)(int, int, int); //----- (0067E8B0) -------------------------------------------------------- int __cdecl sub_67E8B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E8D0) -------------------------------------------------------- int __usercall sub_67E8D0(int a1) { return sub_4026F0((int *)(a1 - 192)); } //----- (0067E8DB) -------------------------------------------------------- int __cdecl sub_67E8DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 49)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E910) -------------------------------------------------------- int __usercall sub_67E910(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0067E918) -------------------------------------------------------- void __usercall sub_67E918(int a1) { sub_43BB10((void *)(a1 - 56)); } //----- (0067E920) -------------------------------------------------------- void __usercall sub_67E920(int a1) { nullsub_2((void *)(a1 - 40)); } //----- (0067E928) -------------------------------------------------------- int __cdecl sub_67E928(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E950) -------------------------------------------------------- int __usercall sub_67E950(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0067E958) -------------------------------------------------------- int __cdecl sub_67E958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E980) -------------------------------------------------------- int __usercall sub_67E980(int a1) { return sub_4026F0((int *)(a1 - 84)); } //----- (0067E988) -------------------------------------------------------- int __cdecl sub_67E988(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 22)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E9B0) -------------------------------------------------------- int __usercall sub_67E9B0(int a1) { return sub_4026F0((int *)(a1 - 160)); } //----- (0067E9BB) -------------------------------------------------------- int __cdecl sub_67E9BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 41)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067E9F0) -------------------------------------------------------- int __usercall sub_67E9F0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067E9F8) -------------------------------------------------------- void __usercall sub_67E9F8(int a1) { *(_DWORD *)(a1 - 24) = &off_6A23AC; sub_427EB0((void *)(a1 - 24)); } // 6A23AC: using guessed type int (__stdcall *off_6A23AC)(int, int, int); //----- (0067EA00) -------------------------------------------------------- int __cdecl sub_67EA00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EA20) -------------------------------------------------------- int __usercall sub_67EA20(int a1) { return sub_4026F0((int *)(a1 - 92)); } //----- (0067EA28) -------------------------------------------------------- void __cdecl sub_67EA28() { JUMPOUT(loc_418B90); } // 418B90: using guessed type int loc_418B90(); //----- (0067EA30) -------------------------------------------------------- int __cdecl sub_67EA30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 24)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EA60) -------------------------------------------------------- int __usercall sub_67EA60(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0067EA68) -------------------------------------------------------- int __cdecl sub_67EA68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EA90) -------------------------------------------------------- int __usercall sub_67EA90(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (0067EA9B) -------------------------------------------------------- int __cdecl sub_67EA9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 36)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EAD0) -------------------------------------------------------- int __usercall sub_67EAD0(int a1) { return sub_4026F0((int *)(a1 - 92)); } //----- (0067EAD8) -------------------------------------------------------- int __cdecl sub_67EAD8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 24)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EB00) -------------------------------------------------------- int __usercall sub_67EB00(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (0067EB0B) -------------------------------------------------------- int __cdecl sub_67EB0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EB40) -------------------------------------------------------- int __usercall sub_67EB40(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067EB48) -------------------------------------------------------- int __cdecl sub_67EB48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EB70) -------------------------------------------------------- int __usercall sub_67EB70(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067EB78) -------------------------------------------------------- int __cdecl sub_67EB78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EBA0) -------------------------------------------------------- int __usercall sub_67EBA0(int a1) { return sub_428A70((void *)(a1 - 184)); } //----- (0067EBAB) -------------------------------------------------------- int __cdecl sub_67EBAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 47)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EBE0) -------------------------------------------------------- void __usercall sub_67EBE0(int a1) { sub_427EB0((void *)(a1 - 280)); } //----- (0067EBEB) -------------------------------------------------------- int __cdecl sub_67EBEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 70)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EC20) -------------------------------------------------------- void __usercall sub_67EC20(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6A2518; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6A2518: using guessed type int (__thiscall *off_6A2518)(void *, char); //----- (0067EC28) -------------------------------------------------------- int __cdecl sub_67EC28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EC50) -------------------------------------------------------- int __usercall sub_67EC50(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 196), 0x1Au, 4, nullsub_2); } //----- (0067EC5B) -------------------------------------------------------- int __usercall sub_67EC5B(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 384), 0x24u, 4, nullsub_2); } //----- (0067EC73) -------------------------------------------------------- void __usercall sub_67EC73(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 528)); } //----- (0067EC81) -------------------------------------------------------- void __usercall sub_67EC81(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 784)); } //----- (0067EC8F) -------------------------------------------------------- int __cdecl sub_67EC8F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ECB0) -------------------------------------------------------- int __usercall sub_67ECB0(int a1) { return sub_4026F0((int *)(a1 - 120)); } //----- (0067ECB8) -------------------------------------------------------- int __usercall sub_67ECB8(int a1) { return sub_4026F0((int *)(a1 - 124)); } //----- (0067ECC0) -------------------------------------------------------- int __cdecl sub_67ECC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 32)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ECF0) -------------------------------------------------------- int __cdecl sub_67ECF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ED10) -------------------------------------------------------- void __usercall sub_67ED10(int a1) { *(_DWORD *)(a1 - 36) = &off_6A2544; } // 6A2544: using guessed type int (__stdcall *off_6A2544)(int, int); //----- (0067ED18) -------------------------------------------------------- int __cdecl sub_67ED18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ED40) -------------------------------------------------------- void __cdecl sub_67ED40() { JUMPOUT(loc_419720); } // 419720: using guessed type int loc_419720(); //----- (0067ED48) -------------------------------------------------------- int __cdecl sub_67ED48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067ED70) -------------------------------------------------------- int __usercall sub_67ED70(int a1) { return sub_4026F0((int *)(a1 - 1088)); } //----- (0067ED7B) -------------------------------------------------------- int __usercall sub_67ED7B(int a1) { return sub_422B10((void *)(a1 - 1084)); } //----- (0067ED86) -------------------------------------------------------- int __cdecl sub_67ED86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 273)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EDB0) -------------------------------------------------------- int __usercall sub_67EDB0(int a1) { return sub_4026F0((int *)(a1 - 936)); } //----- (0067EDBB) -------------------------------------------------------- void __usercall sub_67EDBB(int a1) { sub_4646E0(a1 - 896); } //----- (0067EDC6) -------------------------------------------------------- void __cdecl sub_67EDC6() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (0067EDD1) -------------------------------------------------------- void __usercall sub_67EDD1(int a1) { nullsub_2((void *)(a1 - 384)); } //----- (0067EDDC) -------------------------------------------------------- int __cdecl sub_67EDDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 235)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EE10) -------------------------------------------------------- int __usercall sub_67EE10(int a1) { return sub_4026F0((int *)(a1 - 1088)); } //----- (0067EE1B) -------------------------------------------------------- void __usercall sub_67EE1B(int a1) { sub_4646E0(a1 - 1052); } //----- (0067EE26) -------------------------------------------------------- void __cdecl sub_67EE26() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (0067EE31) -------------------------------------------------------- int __cdecl sub_67EE31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 273)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EE60) -------------------------------------------------------- int __usercall sub_67EE60(int a1) { return sub_4026F0((int *)(a1 - 52)); } //----- (0067EEA0) -------------------------------------------------------- void __usercall sub_67EEA0(int a1) { sub_424190((void **)(a1 - 252)); } //----- (0067EEAB) -------------------------------------------------------- void __usercall sub_67EEAB(int a1) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = a1 - 212; *(_DWORD *)(a1 - 212) = &off_6A48EC; v2 = *(const void **)(a1 - 212 + 8); v3 = *(void **)(a1 - 212 + 4); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 8) = v3; } if ( *(_DWORD *)(v1 + 4) ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; sub_427EB0((void *)v1); } // 6A48EC: using guessed type int (__stdcall *off_6A48EC)(int, int, int); //----- (0067EEB6) -------------------------------------------------------- void __usercall sub_67EEB6(int a1) { sub_424190((void **)(a1 - 292)); } //----- (0067EEC1) -------------------------------------------------------- void __usercall sub_67EEC1(int a1) { sub_424F60(a1 - 192); } //----- (0067EECC) -------------------------------------------------------- void __usercall sub_67EECC(int a1) { sub_424F60(a1 - 176); } //----- (0067EED7) -------------------------------------------------------- void __cdecl sub_67EED7() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0067EEE2) -------------------------------------------------------- void __cdecl sub_67EEE2() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0067EEED) -------------------------------------------------------- int __usercall sub_67EEED(int a1) { return sub_4026F0((int *)(a1 - 232)); } //----- (0067EEF8) -------------------------------------------------------- int __usercall sub_67EEF8(int a1) { return sub_4026F0((int *)(a1 - 232)); } //----- (0067EF03) -------------------------------------------------------- void __cdecl sub_67EF03() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0067EF0E) -------------------------------------------------------- void __cdecl sub_67EF0E() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0067EF19) -------------------------------------------------------- int __cdecl sub_67EF19(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 76)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EF50) -------------------------------------------------------- void __cdecl sub_67EF50() { JUMPOUT(loc_4196C0); } // 4196C0: using guessed type int loc_4196C0(); //----- (0067EF58) -------------------------------------------------------- int __usercall sub_67EF58(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 20) + 24), 0x28u, 256, nullsub_2); } //----- (0067EF71) -------------------------------------------------------- int __cdecl sub_67EF71(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067EF90) -------------------------------------------------------- void __cdecl sub_67EF90() { JUMPOUT(loc_419720); } // 419720: using guessed type int loc_419720(); //----- (0067EF98) -------------------------------------------------------- int __usercall sub_67EF98(int a1) { return sub_4026F0((int *)(a1 - 168)); } //----- (0067EFA3) -------------------------------------------------------- void __usercall sub_67EFA3(int a1) { sub_4271F0(a1 - 92); } //----- (0067EFAB) -------------------------------------------------------- void __usercall sub_67EFAB(int a1) { sub_610240(a1 - 44); } //----- (0067EFB3) -------------------------------------------------------- void __usercall sub_67EFB3(int a1) { sub_610240(a1 - 196); } //----- (0067EFBE) -------------------------------------------------------- void __usercall sub_67EFBE(int a1) { sub_610240(a1 - 136); } //----- (0067EFC9) -------------------------------------------------------- void __usercall sub_67EFC9(int a1) { sub_610240(a1 - 164); } //----- (0067EFD4) -------------------------------------------------------- void __usercall sub_67EFD4(int a1) { sub_610240(a1 - 72); } //----- (0067EFDC) -------------------------------------------------------- int __cdecl sub_67EFDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 50)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F010) -------------------------------------------------------- int __usercall sub_67F010(int a1) { return sub_4026F0((int *)(a1 - 772)); } //----- (0067F01B) -------------------------------------------------------- int __usercall sub_67F01B(int a1) { return sub_4197A0((void *)(a1 - 768)); } //----- (0067F026) -------------------------------------------------------- void __cdecl sub_67F026() { JUMPOUT(loc_419720); } // 419720: using guessed type int loc_419720(); //----- (0067F031) -------------------------------------------------------- int __cdecl sub_67F031(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 194)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F060) -------------------------------------------------------- void __cdecl sub_67F060() { JUMPOUT(loc_4196C0); } // 4196C0: using guessed type int loc_4196C0(); //----- (0067F06A) -------------------------------------------------------- int __cdecl sub_67F06A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F090) -------------------------------------------------------- void __usercall sub_67F090(int a1) { sub_427EB0(*(void **)(a1 - 16)); } //----- (0067F0C0) -------------------------------------------------------- void __usercall sub_67F0C0(int a1) { sub_427EB0(*(void **)(a1 - 16)); } //----- (0067F0C8) -------------------------------------------------------- int __cdecl sub_67F0C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F120) -------------------------------------------------------- int __usercall sub_67F120(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067F128) -------------------------------------------------------- void __usercall sub_67F128(int a1) { *(_DWORD *)(a1 - 32) = &off_6A5A2C; sub_427EB0((void *)(a1 - 32)); } // 6A5A2C: using guessed type int (__stdcall *off_6A5A2C)(int, int, int); //----- (0067F130) -------------------------------------------------------- int __cdecl sub_67F130(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F150) -------------------------------------------------------- int __usercall sub_67F150(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067F158) -------------------------------------------------------- int __usercall sub_67F158(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0067F1B0) -------------------------------------------------------- int __usercall sub_67F1B0(int a1) { return sub_4026F0((int *)(a1 - 200)); } //----- (0067F1BB) -------------------------------------------------------- void __usercall sub_67F1BB(int a1) { nullsub_2((void *)(a1 - 168)); } //----- (0067F1C6) -------------------------------------------------------- int __usercall sub_67F1C6(int a1) { return sub_428A70((void *)(a1 - 196)); } //----- (0067F1D1) -------------------------------------------------------- int __usercall sub_67F1D1(int a1) { return sub_428A70((void *)(a1 - 196)); } //----- (0067F1DC) -------------------------------------------------------- int __cdecl sub_67F1DC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 51)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F210) -------------------------------------------------------- int __usercall sub_67F210(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067F240) -------------------------------------------------------- int __usercall sub_67F240(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067F248) -------------------------------------------------------- void __usercall sub_67F248(int a1) { sub_5D4580((void *)(a1 - 48)); } //----- (0067F250) -------------------------------------------------------- int __cdecl sub_67F250(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F270) -------------------------------------------------------- int __cdecl sub_67F270(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F2A0) -------------------------------------------------------- int __cdecl sub_67F2A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F2C0) -------------------------------------------------------- int __usercall sub_67F2C0(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0067F2C8) -------------------------------------------------------- void __usercall sub_67F2C8(int a1) { sub_424190((void **)(a1 - 60)); } //----- (0067F2F0) -------------------------------------------------------- int __usercall sub_67F2F0(int a1) { return sub_4026F0((int *)(a1 - 340)); } //----- (0067F2FB) -------------------------------------------------------- void __usercall sub_67F2FB(int a1) { sub_5D4580((void *)(a1 - 308)); } //----- (0067F306) -------------------------------------------------------- void __usercall sub_67F306(int a1) { sub_5D4580((void *)(a1 - 308)); } //----- (0067F311) -------------------------------------------------------- void __cdecl sub_67F311() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (0067F31C) -------------------------------------------------------- void __usercall sub_67F31C(int a1) { sub_424190((void **)(a1 - 300)); } //----- (0067F327) -------------------------------------------------------- int __cdecl sub_67F327(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 86)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F350) -------------------------------------------------------- int __usercall sub_67F350(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0067F358) -------------------------------------------------------- void __usercall sub_67F358(int a1) { sub_427EB0((void *)(a1 - 60)); } //----- (0067F380) -------------------------------------------------------- int __usercall sub_67F380(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0067F388) -------------------------------------------------------- int __usercall sub_67F388(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0067F390) -------------------------------------------------------- void __usercall sub_67F390(int a1) { sub_424190((void **)(a1 - 60)); } //----- (0067F398) -------------------------------------------------------- void __usercall sub_67F398(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0067F3A0) -------------------------------------------------------- int __cdecl sub_67F3A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 34)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F3C0) -------------------------------------------------------- int __usercall sub_67F3C0(int a1) { return sub_4026F0((int *)(a1 - 172)); } //----- (0067F3CB) -------------------------------------------------------- void __usercall sub_67F3CB(int a1) { sub_401A10(a1 - 132); } //----- (0067F3D6) -------------------------------------------------------- void __usercall sub_67F3D6(int a1) { sub_401A10(a1 - 132); } //----- (0067F3E1) -------------------------------------------------------- int __cdecl sub_67F3E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 44)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F410) -------------------------------------------------------- int __usercall sub_67F410(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067F418) -------------------------------------------------------- void __usercall sub_67F418(int a1) { *(_DWORD *)(a1 - 28) = &off_6A7000; sub_427EB0((void *)(a1 - 28)); } // 6A7000: using guessed type int (__stdcall *off_6A7000)(int, int, int); //----- (0067F420) -------------------------------------------------------- int __cdecl sub_67F420(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F440) -------------------------------------------------------- void __usercall sub_67F440(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6A7008; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6A7008: using guessed type int (__thiscall *off_6A7008)(void *, char); //----- (0067F448) -------------------------------------------------------- int __cdecl sub_67F448(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F470) -------------------------------------------------------- int __usercall sub_67F470(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067F478) -------------------------------------------------------- int __usercall sub_67F478(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0067F480) -------------------------------------------------------- int __usercall sub_67F480(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0067F488) -------------------------------------------------------- int __cdecl sub_67F488(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F4B0) -------------------------------------------------------- void __usercall sub_67F4B0(int a1) { *(_DWORD *)(a1 - 20) = &off_6A702C; } // 6A702C: using guessed type int (__stdcall *off_6A702C)(int, int); //----- (0067F4B8) -------------------------------------------------------- int __cdecl sub_67F4B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F4E0) -------------------------------------------------------- void __cdecl sub_67F4E0() { JUMPOUT(loc_4347E0); } // 4347E0: using guessed type int loc_4347E0(); //----- (0067F4E8) -------------------------------------------------------- int __cdecl sub_67F4E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F510) -------------------------------------------------------- int __cdecl sub_67F510(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F530) -------------------------------------------------------- int __cdecl sub_67F530(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F550) -------------------------------------------------------- int __usercall sub_67F550(int a1) { return sub_4026F0((int *)(a1 - 128)); } //----- (0067F558) -------------------------------------------------------- int __cdecl sub_67F558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 33)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F580) -------------------------------------------------------- int __usercall sub_67F580(int a1) { return sub_4026F0((int *)(a1 - 104)); } //----- (0067F588) -------------------------------------------------------- void __usercall sub_67F588(int a1) { nullsub_2((void *)(a1 - 84)); } //----- (0067F590) -------------------------------------------------------- int __usercall sub_67F590(int a1) { return sub_437720((void *)(a1 - 92)); } //----- (0067F598) -------------------------------------------------------- int __cdecl sub_67F598(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F5C0) -------------------------------------------------------- void __cdecl sub_67F5C0() { sub_424190(&dword_87B264); } //----- (0067F5CA) -------------------------------------------------------- int __cdecl sub_67F5CA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F5F0) -------------------------------------------------------- void __cdecl sub_67F5F0() { sub_424190(&dword_87B254); } //----- (0067F5FA) -------------------------------------------------------- int __cdecl sub_67F5FA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F620) -------------------------------------------------------- void __cdecl sub_67F620() { JUMPOUT(loc_4347E0); } // 4347E0: using guessed type int loc_4347E0(); //----- (0067F62A) -------------------------------------------------------- int __cdecl sub_67F62A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F650) -------------------------------------------------------- int __usercall sub_67F650(int a1) { int v1; // eax@1 int v2; // eax@3 int result; // eax@5 int v4; // ecx@7 int v5; // ecx@1 v5 = a1 - 44; v1 = *(_DWORD *)(a1 - 44 + 8); if ( v1 ) *(_BYTE *)(v1 + 28) = 0; v2 = *(_DWORD *)(v5 + 12); if ( v2 ) *(_BYTE *)(v2 + 28) = 0; result = *(_DWORD *)(v5 + 16); if ( result ) *(_BYTE *)(result + 28) = 0; v4 = *(_DWORD *)(v5 + 20); if ( v4 ) *(_BYTE *)(v4 + 28) = 0; return result; } //----- (0067F658) -------------------------------------------------------- int __cdecl sub_67F658(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F680) -------------------------------------------------------- void __cdecl sub_67F680() { JUMPOUT(loc_438580); } // 438580: using guessed type int loc_438580(); //----- (0067F688) -------------------------------------------------------- int __cdecl sub_67F688(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F6B0) -------------------------------------------------------- void __usercall sub_67F6B0(int a1) { sub_626C10(a1 - 80); } //----- (0067F6B8) -------------------------------------------------------- int __cdecl sub_67F6B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F6E0) -------------------------------------------------------- void __cdecl sub_67F6E0() { sub_424190(&dword_8B36A8); } //----- (0067F6EA) -------------------------------------------------------- int __cdecl sub_67F6EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F710) -------------------------------------------------------- void __cdecl sub_67F710() { sub_424190(&dword_8B36A8); } //----- (0067F71A) -------------------------------------------------------- int __cdecl sub_67F71A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F740) -------------------------------------------------------- int __usercall sub_67F740(int a1) { return sub_4026F0((int *)(a1 - 792)); } //----- (0067F74B) -------------------------------------------------------- void __usercall sub_67F74B(int a1) { nullsub_2((void *)(a1 - 644)); } //----- (0067F756) -------------------------------------------------------- int __cdecl sub_67F756(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 199)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F780) -------------------------------------------------------- int __cdecl sub_67F780(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F7A0) -------------------------------------------------------- void __usercall sub_67F7A0(int a1) { nullsub_2((void *)(a1 - 648)); } //----- (0067F7AB) -------------------------------------------------------- int __cdecl sub_67F7AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 189)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F7E0) -------------------------------------------------------- void __usercall sub_67F7E0(int a1) { nullsub_2((void *)(a1 - 644)); } //----- (0067F7EB) -------------------------------------------------------- int __cdecl sub_67F7EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 195)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F820) -------------------------------------------------------- void __cdecl sub_67F820() { JUMPOUT(loc_438410); } // 438410: using guessed type int loc_438410(); //----- (0067F828) -------------------------------------------------------- int __cdecl sub_67F828(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F850) -------------------------------------------------------- void __usercall sub_67F850(int a1) { nullsub_2(*(void **)(a1 + 12)); } //----- (0067F861) -------------------------------------------------------- int __cdecl sub_67F861(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F880) -------------------------------------------------------- void __usercall sub_67F880(int a1) { void *v1; // esi@1 v1 = *(void **)(a1 - 24); sub_43AD00(v1); operator delete(*(void **)v1); } //----- (0067F8B0) -------------------------------------------------------- void __cdecl sub_67F8B0() { JUMPOUT(loc_43B010); } // 43B010: using guessed type int loc_43B010(); //----- (0067F8B8) -------------------------------------------------------- void __cdecl sub_67F8B8() { JUMPOUT(loc_438410); } // 438410: using guessed type int loc_438410(); //----- (0067F8C0) -------------------------------------------------------- int __cdecl sub_67F8C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F8E0) -------------------------------------------------------- void __usercall sub_67F8E0(int a1) { sub_43A070(a1 - 300); } //----- (0067F8EB) -------------------------------------------------------- int __cdecl sub_67F8EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 79)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F920) -------------------------------------------------------- void __usercall sub_67F920(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_6A8624; sub_639940(v1); } // 6A8624: using guessed type int (__thiscall *off_6A8624)(void *, char); //----- (0067F928) -------------------------------------------------------- int __cdecl sub_67F928(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F950) -------------------------------------------------------- void __cdecl sub_67F950() { JUMPOUT(loc_43B390); } // 43B390: using guessed type int loc_43B390(); //----- (0067F958) -------------------------------------------------------- int __cdecl sub_67F958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F980) -------------------------------------------------------- void __usercall sub_67F980(int a1) { sub_4A79E0(*(_DWORD *)(a1 - 16) + 1004); } //----- (0067F98E) -------------------------------------------------------- void __usercall sub_67F98E(int a1) { sub_4A79E0(*(_DWORD *)(a1 - 16) + 2228); } //----- (0067F99C) -------------------------------------------------------- void __usercall sub_67F99C(int a1) { sub_4A79E0(*(_DWORD *)(a1 - 16) + 3452); } //----- (0067F9AA) -------------------------------------------------------- void __usercall sub_67F9AA(int a1) { sub_4A79E0(*(_DWORD *)(a1 - 16) + 4692); } //----- (0067F9B8) -------------------------------------------------------- int __cdecl sub_67F9B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067F9E0) -------------------------------------------------------- int __usercall sub_67F9E0(int a1) { return sub_4026F0((int *)(a1 - 220)); } //----- (0067F9EB) -------------------------------------------------------- int __cdecl sub_67F9EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 56)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FA20) -------------------------------------------------------- int __usercall sub_67FA20(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067FA28) -------------------------------------------------------- void __usercall sub_67FA28(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (0067FA30) -------------------------------------------------------- void __usercall sub_67FA30(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (0067FA38) -------------------------------------------------------- int __cdecl sub_67FA38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FA60) -------------------------------------------------------- int __usercall sub_67FA60(int a1) { return _LN21(*(void **)(a1 - 16), 0x170u, 29, nullsub_2); } //----- (0067FA76) -------------------------------------------------------- int __cdecl sub_67FA76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FAA0) -------------------------------------------------------- int __usercall sub_67FAA0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067FAD0) -------------------------------------------------------- int __usercall sub_67FAD0(int a1) { return sub_4026F0((int *)(a1 - 196)); } //----- (0067FADB) -------------------------------------------------------- void __usercall sub_67FADB(int a1) { sub_43BB10((void *)(a1 - 192)); } //----- (0067FAE6) -------------------------------------------------------- void __usercall sub_67FAE6(int a1) { sub_43BB10((void *)(a1 - 168)); } //----- (0067FAF1) -------------------------------------------------------- int __cdecl sub_67FAF1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 50)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FB20) -------------------------------------------------------- int __usercall sub_67FB20(int a1) { return sub_4026F0((int *)(a1 - 84)); } //----- (0067FB28) -------------------------------------------------------- int __cdecl sub_67FB28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FB50) -------------------------------------------------------- int __usercall sub_67FB50(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0067FB58) -------------------------------------------------------- void __usercall sub_67FB58(int a1) { *(_DWORD *)(a1 - 40) = &off_6A8700; sub_427EB0((void *)(a1 - 40)); } // 6A8700: using guessed type int (__stdcall *off_6A8700)(int, int, int); //----- (0067FB60) -------------------------------------------------------- int __cdecl sub_67FB60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FB90) -------------------------------------------------------- int __usercall sub_67FB90(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067FB98) -------------------------------------------------------- int __cdecl sub_67FB98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FBC0) -------------------------------------------------------- void __usercall sub_67FBC0(int a1) { sub_5C9980(*(void **)(a1 - 16)); } //----- (0067FBC8) -------------------------------------------------------- int __cdecl sub_67FBC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FBF0) -------------------------------------------------------- int __cdecl sub_67FBF0() { int result; // eax@1 result = dword_8BB23C & 0xFFFFFFFE; dword_8BB23C &= 0xFFFFFFFEu; return result; } // 8BB23C: using guessed type int dword_8BB23C; //----- (0067FBFE) -------------------------------------------------------- int __cdecl sub_67FBFE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FC20) -------------------------------------------------------- int __usercall sub_67FC20(int a1) { return sub_4026F0((int *)(a1 - 128)); } //----- (0067FC28) -------------------------------------------------------- void __usercall sub_67FC28(int a1) { sub_4E2170((void *)(a1 - 156)); } //----- (0067FC33) -------------------------------------------------------- int __cdecl sub_67FC33(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 40)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FCC0) -------------------------------------------------------- void __usercall sub_67FCC0(int a1) { int v1; // esi@1 const void *v2; // ecx@1 void *v3; // edi@1 v1 = a1 - 44; *(_DWORD *)(a1 - 44) = &off_6A9410; v2 = *(const void **)(a1 - 44 + 8); v3 = *(void **)(a1 - 44 + 4); if ( v3 != v2 ) { memmove_0(v3, v2, 0); *(_DWORD *)(v1 + 8) = v3; } if ( *(_DWORD *)(v1 + 4) ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; sub_427EB0((void *)v1); } // 6A9410: using guessed type int (__stdcall *off_6A9410)(int, int, int); //----- (0067FCC8) -------------------------------------------------------- int __cdecl sub_67FCC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FCF0) -------------------------------------------------------- int __cdecl sub_67FCF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FD10) -------------------------------------------------------- int __usercall sub_67FD10(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067FD18) -------------------------------------------------------- int __usercall sub_67FD18(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0067FD50) -------------------------------------------------------- int __usercall sub_67FD50(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0067FD58) -------------------------------------------------------- int __usercall sub_67FD58(int a1) { return sub_450670(a1 - 48); } //----- (0067FD60) -------------------------------------------------------- void __usercall sub_67FD60(int a1) { sub_5D4580((void *)(a1 - 52)); } //----- (0067FD90) -------------------------------------------------------- void __cdecl sub_67FD90() { sub_4A79E0((int)&unk_8B9A3C); } //----- (0067FD9A) -------------------------------------------------------- void __cdecl sub_67FD9A() { sub_4A79E0((int)&unk_8B9F04); } //----- (0067FDA4) -------------------------------------------------------- void __cdecl sub_67FDA4() { sub_4A79E0((int)&unk_8BA3CC); } //----- (0067FDAE) -------------------------------------------------------- void __cdecl sub_67FDAE() { sub_4A79E0((int)&unk_8BA8A4); } //----- (0067FDB8) -------------------------------------------------------- int __cdecl sub_67FDB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FDE0) -------------------------------------------------------- void __usercall sub_67FDE0(int a1) { **(_DWORD **)(a1 - 16) = &off_6A98A4; } // 6A98A4: using guessed type int (__thiscall *off_6A98A4)(void *, char); //----- (0067FDE8) -------------------------------------------------------- int __cdecl sub_67FDE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FE40) -------------------------------------------------------- int __usercall sub_67FE40(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0067FE48) -------------------------------------------------------- int __cdecl sub_67FE48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FE70) -------------------------------------------------------- void __cdecl sub_67FE70() { JUMPOUT(loc_438410); } // 438410: using guessed type int loc_438410(); //----- (0067FE78) -------------------------------------------------------- int __cdecl sub_67FE78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FEA0) -------------------------------------------------------- int __cdecl sub_67FEA0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FEC0) -------------------------------------------------------- int __usercall sub_67FEC0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0067FEC8) -------------------------------------------------------- int __usercall sub_67FEC8(int a1) { return sub_4026F0((int *)(a1 + 8)); } //----- (0067FED0) -------------------------------------------------------- int __cdecl sub_67FED0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FEF0) -------------------------------------------------------- void __usercall sub_67FEF0(int a1) { sub_424190(*(void ***)(a1 - 16)); } //----- (0067FEF8) -------------------------------------------------------- void __usercall sub_67FEF8(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 20)); } //----- (0067FF03) -------------------------------------------------------- int __cdecl sub_67FF03(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FF20) -------------------------------------------------------- int __usercall sub_67FF20(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0067FF28) -------------------------------------------------------- int __cdecl sub_67FF28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FF50) -------------------------------------------------------- void __usercall sub_67FF50(int a1) { sub_424190((void **)(a1 + 8)); } //----- (0067FF58) -------------------------------------------------------- int __cdecl sub_67FF58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0067FF80) -------------------------------------------------------- void __usercall sub_67FF80(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = off_6AA3FC; sub_643080((void *)(v1 + 4)); } // 6AA3FC: using guessed type int (__stdcall *off_6AA3FC[10])(int, int); //----- (0067FF88) -------------------------------------------------------- void __cdecl sub_67FF88() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FF96) -------------------------------------------------------- void __cdecl sub_67FF96() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFA4) -------------------------------------------------------- void __cdecl sub_67FFA4() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFB2) -------------------------------------------------------- void __cdecl sub_67FFB2() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFC0) -------------------------------------------------------- void __cdecl sub_67FFC0() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFCE) -------------------------------------------------------- void __cdecl sub_67FFCE() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFDC) -------------------------------------------------------- void __cdecl sub_67FFDC() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFEA) -------------------------------------------------------- void __cdecl sub_67FFEA() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0067FFF8) -------------------------------------------------------- void __cdecl sub_67FFF8() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680006) -------------------------------------------------------- void __cdecl sub_680006() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680014) -------------------------------------------------------- void __cdecl sub_680014() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680022) -------------------------------------------------------- void __cdecl sub_680022() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680030) -------------------------------------------------------- void __cdecl sub_680030() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068003E) -------------------------------------------------------- void __cdecl sub_68003E() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068004C) -------------------------------------------------------- void __cdecl sub_68004C() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068005A) -------------------------------------------------------- void __cdecl sub_68005A() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680068) -------------------------------------------------------- void __cdecl sub_680068() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680076) -------------------------------------------------------- void __cdecl sub_680076() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680084) -------------------------------------------------------- void __cdecl sub_680084() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680092) -------------------------------------------------------- void __cdecl sub_680092() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800A0) -------------------------------------------------------- void __cdecl sub_6800A0() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800AE) -------------------------------------------------------- void __cdecl sub_6800AE() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800BC) -------------------------------------------------------- void __cdecl sub_6800BC() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800CA) -------------------------------------------------------- void __cdecl sub_6800CA() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800D8) -------------------------------------------------------- void __cdecl sub_6800D8() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800E6) -------------------------------------------------------- void __cdecl sub_6800E6() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006800F4) -------------------------------------------------------- void __cdecl sub_6800F4() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680102) -------------------------------------------------------- int __cdecl sub_680102(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680120) -------------------------------------------------------- void __cdecl sub_680120() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680128) -------------------------------------------------------- void __cdecl sub_680128() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680136) -------------------------------------------------------- void __cdecl sub_680136() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680144) -------------------------------------------------------- void __cdecl sub_680144() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680152) -------------------------------------------------------- void __cdecl sub_680152() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680160) -------------------------------------------------------- void __cdecl sub_680160() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068016E) -------------------------------------------------------- void __cdecl sub_68016E() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068017C) -------------------------------------------------------- void __cdecl sub_68017C() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068018A) -------------------------------------------------------- void __cdecl sub_68018A() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680198) -------------------------------------------------------- void __cdecl sub_680198() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801A6) -------------------------------------------------------- void __cdecl sub_6801A6() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801B4) -------------------------------------------------------- void __cdecl sub_6801B4() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801C2) -------------------------------------------------------- void __cdecl sub_6801C2() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801D0) -------------------------------------------------------- void __cdecl sub_6801D0() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801DE) -------------------------------------------------------- void __cdecl sub_6801DE() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801EC) -------------------------------------------------------- void __cdecl sub_6801EC() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006801FA) -------------------------------------------------------- void __cdecl sub_6801FA() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680208) -------------------------------------------------------- void __cdecl sub_680208() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680216) -------------------------------------------------------- void __cdecl sub_680216() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680224) -------------------------------------------------------- void __cdecl sub_680224() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680232) -------------------------------------------------------- void __cdecl sub_680232() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680240) -------------------------------------------------------- void __cdecl sub_680240() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068024E) -------------------------------------------------------- void __cdecl sub_68024E() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068025C) -------------------------------------------------------- void __cdecl sub_68025C() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (0068026A) -------------------------------------------------------- void __cdecl sub_68026A() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680278) -------------------------------------------------------- void __cdecl sub_680278() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680286) -------------------------------------------------------- void __cdecl sub_680286() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (00680294) -------------------------------------------------------- void __cdecl sub_680294() { JUMPOUT(loc_4491C0); } // 4491C0: using guessed type int loc_4491C0(); //----- (006802A2) -------------------------------------------------------- int __cdecl sub_6802A2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006802C0) -------------------------------------------------------- int __usercall sub_6802C0(int a1) { return sub_4026F0((int *)(a1 - 192)); } //----- (006802CB) -------------------------------------------------------- int __cdecl sub_6802CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 50)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680300) -------------------------------------------------------- int __usercall sub_680300(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (0068030B) -------------------------------------------------------- int __cdecl sub_68030B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680340) -------------------------------------------------------- int __usercall sub_680340(int a1) { return sub_4026F0((int *)(a1 - 1584)); } //----- (0068034B) -------------------------------------------------------- int __cdecl sub_68034B() { int result; // eax@1 result = dword_A9FC90 & 0xFFFFFFFE; dword_A9FC90 &= 0xFFFFFFFEu; return result; } // A9FC90: using guessed type int dword_A9FC90; //----- (00680359) -------------------------------------------------------- void __usercall sub_680359(int a1) { sub_4646E0(a1 - 1552); } //----- (00680364) -------------------------------------------------------- void __cdecl sub_680364() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (0068036F) -------------------------------------------------------- int __cdecl sub_68036F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 397)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006803A0) -------------------------------------------------------- int __usercall sub_6803A0(int a1) { return sub_4026F0((int *)(a1 - 296)); } //----- (006803AB) -------------------------------------------------------- void __usercall sub_6803AB(int a1) { sub_4174B0((void *)(a1 - 288)); } //----- (006803B6) -------------------------------------------------------- int __cdecl sub_6803B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 75)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006803E0) -------------------------------------------------------- int __usercall sub_6803E0(int a1) { return sub_4026F0((int *)(a1 - 404)); } //----- (006803EB) -------------------------------------------------------- int __cdecl sub_6803EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 102)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680420) -------------------------------------------------------- int __usercall sub_680420(int a1) { return sub_4026F0((int *)(a1 - 188)); } //----- (0068042B) -------------------------------------------------------- void __usercall sub_68042B(int a1) { sub_43BB10((void *)(a1 - 228)); } //----- (00680436) -------------------------------------------------------- void __usercall sub_680436(int a1) { sub_43BB10((void *)(a1 - 208)); } //----- (00680441) -------------------------------------------------------- int __cdecl sub_680441(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 58)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680470) -------------------------------------------------------- void __usercall sub_680470(int a1) { *(_DWORD *)(a1 - 112) = &off_6ACB78; sub_639940(a1 - 112); } // 6ACB78: using guessed type int (__thiscall *off_6ACB78)(void *, char); //----- (00680478) -------------------------------------------------------- int __cdecl sub_680478(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006804A0) -------------------------------------------------------- void __usercall sub_6804A0(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6ACDB8; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6ACDB8: using guessed type int (__thiscall *off_6ACDB8)(void *, char); //----- (006804A8) -------------------------------------------------------- int __cdecl sub_6804A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006804D0) -------------------------------------------------------- void __usercall sub_6804D0(int a1) { sub_4174B0(*(void **)(a1 - 16)); } //----- (006804D8) -------------------------------------------------------- int __cdecl sub_6804D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680500) -------------------------------------------------------- int __usercall sub_680500(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00680508) -------------------------------------------------------- int __cdecl sub_680508(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680530) -------------------------------------------------------- int __usercall sub_680530(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680560) -------------------------------------------------------- void __usercall sub_680560(int a1) { sub_4174B0((void *)(a1 - 20)); } //----- (00680568) -------------------------------------------------------- int __cdecl sub_680568(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680590) -------------------------------------------------------- void __cdecl sub_680590() { JUMPOUT(loc_44FBC0); } // 44FBC0: using guessed type int loc_44FBC0(); //----- (00680598) -------------------------------------------------------- int __cdecl sub_680598(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006805C0) -------------------------------------------------------- int __usercall sub_6805C0(int a1) { return sub_4026F0((int *)(a1 - 168)); } //----- (006805CB) -------------------------------------------------------- void __usercall sub_6805CB(int a1) { *(_DWORD *)(a1 - 164) = &off_6AD44C; sub_427EB0((void *)(a1 - 164)); } // 6AD44C: using guessed type int (__stdcall *off_6AD44C)(int, int, int); //----- (006805D6) -------------------------------------------------------- int __cdecl sub_6805D6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 43)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680600) -------------------------------------------------------- int __usercall sub_680600(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680630) -------------------------------------------------------- int __usercall sub_680630(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680638) -------------------------------------------------------- int __usercall sub_680638(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (00680640) -------------------------------------------------------- int __cdecl sub_680640(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680660) -------------------------------------------------------- void __usercall sub_680660(int a1) { *(_DWORD *)(a1 - 20) = &off_6AE034; sub_427EB0((void *)(a1 - 20)); } // 6AE034: using guessed type int (__stdcall *off_6AE034)(int, int, int); //----- (00680668) -------------------------------------------------------- int __cdecl sub_680668(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680690) -------------------------------------------------------- int __usercall sub_680690(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680698) -------------------------------------------------------- int __cdecl sub_680698(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006806C0) -------------------------------------------------------- int __usercall sub_6806C0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006806C8) -------------------------------------------------------- int __usercall sub_6806C8(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (00680700) -------------------------------------------------------- int __usercall sub_680700(int a1) { return sub_4026F0((int *)(a1 - 368)); } //----- (0068070B) -------------------------------------------------------- void __usercall sub_68070B(int a1) { sub_424190((void **)(a1 - 352)); } //----- (00680716) -------------------------------------------------------- int __cdecl sub_680716(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 93)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680740) -------------------------------------------------------- int __usercall sub_680740(int a1) { return sub_4026F0((int *)(a1 - 432)); } //----- (0068074B) -------------------------------------------------------- void __usercall sub_68074B(int a1) { sub_43BB10((void *)(a1 - 428)); } //----- (00680756) -------------------------------------------------------- void __usercall sub_680756(int a1) { nullsub_2((void *)(a1 - 412)); } //----- (00680761) -------------------------------------------------------- int __cdecl sub_680761() { int result; // eax@1 result = dword_AF097E8 & 0xFFFFFFFD; dword_AF097E8 &= 0xFFFFFFFDu; return result; } // AF097E8: using guessed type int dword_AF097E8; //----- (0068076F) -------------------------------------------------------- int __cdecl sub_68076F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 109)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006807A0) -------------------------------------------------------- int __usercall sub_6807A0(int a1) { return sub_4026F0((int *)(a1 - 56)); } //----- (006807A8) -------------------------------------------------------- int __cdecl sub_6807A8() { int result; // eax@1 result = dword_AF097FC & 0xFFFFFFFE; dword_AF097FC &= 0xFFFFFFFEu; return result; } // AF097FC: using guessed type int dword_AF097FC; //----- (006807B6) -------------------------------------------------------- void __cdecl sub_6807B6() { sub_424190(&dword_AF097EC); } //----- (006807C0) -------------------------------------------------------- int __usercall sub_6807C0(int a1) { return sub_428A70((void *)(a1 - 68)); } //----- (006807C8) -------------------------------------------------------- int __cdecl sub_6807C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006807F0) -------------------------------------------------------- void __usercall sub_6807F0(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (006807FB) -------------------------------------------------------- int __cdecl sub_6807FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680820) -------------------------------------------------------- void __usercall sub_680820(int a1) { sub_643080((void *)(a1 - 67844)); } //----- (0068082B) -------------------------------------------------------- int __cdecl sub_68082B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16965)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680860) -------------------------------------------------------- int __cdecl sub_680860(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680880) -------------------------------------------------------- void __usercall sub_680880(int a1) { sub_643080((void *)(a1 - 67812)); } //----- (0068088B) -------------------------------------------------------- int __cdecl sub_68088B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16960)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006808C0) -------------------------------------------------------- int __usercall sub_6808C0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006808C8) -------------------------------------------------------- int __cdecl sub_6808C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006808F0) -------------------------------------------------------- int __usercall sub_6808F0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (006808F8) -------------------------------------------------------- int __cdecl sub_6808F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680920) -------------------------------------------------------- int __usercall sub_680920(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00680928) -------------------------------------------------------- int __usercall sub_680928(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (00680930) -------------------------------------------------------- int __cdecl sub_680930(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680950) -------------------------------------------------------- int __usercall sub_680950(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (00680980) -------------------------------------------------------- int __usercall sub_680980(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680988) -------------------------------------------------------- void __usercall sub_680988(int a1) { *(_DWORD *)(a1 - 28) = &off_6B03BC; sub_427EB0((void *)(a1 - 28)); } // 6B03BC: using guessed type int (__stdcall *off_6B03BC)(int, int, int); //----- (00680990) -------------------------------------------------------- int __cdecl sub_680990(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006809B0) -------------------------------------------------------- int __usercall sub_6809B0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (006809B8) -------------------------------------------------------- void __usercall sub_6809B8(int a1) { sub_461490((void *)(a1 - 52)); } //----- (006809E0) -------------------------------------------------------- void __usercall sub_6809E0(int a1) { sub_4E2170((void *)(a1 - 36)); } //----- (006809E8) -------------------------------------------------------- int __cdecl sub_6809E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680A10) -------------------------------------------------------- void __cdecl sub_680A10() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00680A18) -------------------------------------------------------- int __cdecl sub_680A18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680A40) -------------------------------------------------------- int __cdecl sub_680A40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680A60) -------------------------------------------------------- int __cdecl sub_680A60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680A80) -------------------------------------------------------- int __usercall sub_680A80(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00680A88) -------------------------------------------------------- void __usercall sub_680A88(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00680A93) -------------------------------------------------------- int __cdecl sub_680A93(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680AB0) -------------------------------------------------------- int __usercall sub_680AB0(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (00680ABB) -------------------------------------------------------- void __usercall sub_680ABB(int a1) { *(_DWORD *)(a1 - 128) = &off_6B05C0; sub_639940(a1 - 128); } // 6B05C0: using guessed type int (__thiscall *off_6B05C0)(void *, char); //----- (00680AC3) -------------------------------------------------------- int __cdecl sub_680AC3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680AF0) -------------------------------------------------------- void __usercall sub_680AF0(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (00680AFB) -------------------------------------------------------- int __cdecl sub_680AFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680B20) -------------------------------------------------------- int __cdecl sub_680B20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680B40) -------------------------------------------------------- int __cdecl sub_680B40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680B60) -------------------------------------------------------- void __usercall sub_680B60(int a1) { sub_4AFF90((void **)(*(_DWORD *)(a1 - 16) + 72)); } //----- (00680B6B) -------------------------------------------------------- void __usercall sub_680B6B(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00680B79) -------------------------------------------------------- void __usercall sub_680B79(int a1) { sub_5B3E10(*(_DWORD *)(a1 - 16) + 276); } //----- (00680B87) -------------------------------------------------------- void __usercall sub_680B87(int a1) { sub_463530(*(_DWORD *)(a1 - 16) + 296); } //----- (00680B95) -------------------------------------------------------- void __usercall sub_680B95(int a1) { sub_43B100(*(_DWORD *)(a1 - 16) + 468); } //----- (00680BA3) -------------------------------------------------------- void __cdecl sub_680BA3() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (00680BAB) -------------------------------------------------------- int __cdecl sub_680BAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680BD0) -------------------------------------------------------- void __usercall sub_680BD0(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6B0410; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6B0410: using guessed type int (__thiscall *off_6B0410)(void *, char); //----- (00680BD8) -------------------------------------------------------- void __usercall sub_680BD8(int a1) { sub_63AB50((void *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00680BE3) -------------------------------------------------------- int __cdecl sub_680BE3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680C00) -------------------------------------------------------- void __usercall sub_680C00(int a1) { nullsub_2(*(void **)(a1 - 440)); } //----- (00680C0B) -------------------------------------------------------- int __cdecl sub_680C0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 113)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680C40) -------------------------------------------------------- void __usercall sub_680C40(int a1) { sub_4AFF90((void **)(*(_DWORD *)(a1 - 20) + 72)); } //----- (00680C4B) -------------------------------------------------------- void __usercall sub_680C4B(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 164)); } //----- (00680C59) -------------------------------------------------------- void __usercall sub_680C59(int a1) { sub_5B3E10(*(_DWORD *)(a1 - 20) + 276); } //----- (00680C67) -------------------------------------------------------- void __usercall sub_680C67(int a1) { sub_463530(*(_DWORD *)(a1 - 20) + 296); } //----- (00680C75) -------------------------------------------------------- int __cdecl sub_680C75(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680C90) -------------------------------------------------------- int __usercall sub_680C90(int a1) { return sub_4026F0((int *)(a1 - 556)); } //----- (00680C9B) -------------------------------------------------------- void __usercall sub_680C9B(int a1) { sub_4646E0(a1 - 528); } //----- (00680CA6) -------------------------------------------------------- void __cdecl sub_680CA6() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00680CB1) -------------------------------------------------------- int __cdecl sub_680CB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 140)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680D10) -------------------------------------------------------- void __usercall sub_680D10(int a1) { sub_4646E0(a1 - 540); } //----- (00680D1B) -------------------------------------------------------- void __cdecl sub_680D1B() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00680D26) -------------------------------------------------------- int __cdecl sub_680D26(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 140)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680D50) -------------------------------------------------------- int __cdecl sub_680D50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680D70) -------------------------------------------------------- int __usercall sub_680D70(int a1) { return sub_4026F0((int *)(a1 - 172)); } //----- (00680D7B) -------------------------------------------------------- void __usercall sub_680D7B(int a1) { *(_DWORD *)(a1 - 128) = &off_6B05C8; sub_639940(a1 - 128); } // 6B05C8: using guessed type int (__thiscall *off_6B05C8)(void *, char); //----- (00680D83) -------------------------------------------------------- void __usercall sub_680D83(int a1) { sub_424190((void **)(a1 - 156)); } //----- (00680D8E) -------------------------------------------------------- void __usercall sub_680D8E(int a1) { sub_5C4DE0(a1 - 192); } //----- (00680D99) -------------------------------------------------------- int __cdecl sub_680D99(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 51)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680DD0) -------------------------------------------------------- void __cdecl sub_680DD0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (00680DDA) -------------------------------------------------------- int __cdecl sub_680DDA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680E00) -------------------------------------------------------- int __usercall sub_680E00(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680E08) -------------------------------------------------------- void __usercall sub_680E08(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (00680E10) -------------------------------------------------------- int __cdecl sub_680E10(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680E30) -------------------------------------------------------- int __usercall sub_680E30(int a1) { return sub_4026F0((int *)(a1 - 124)); } //----- (00680E38) -------------------------------------------------------- int __cdecl sub_680E38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 35)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680E60) -------------------------------------------------------- int __usercall sub_680E60(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680E68) -------------------------------------------------------- int __cdecl sub_680E68() { int result; // eax@1 result = dword_D020438 & 0xFFFFFFFE; dword_D020438 &= 0xFFFFFFFEu; return result; } // D020438: using guessed type int dword_D020438; //----- (00680E76) -------------------------------------------------------- int __cdecl sub_680E76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680EA0) -------------------------------------------------------- int __usercall sub_680EA0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00680EA8) -------------------------------------------------------- int __cdecl sub_680EA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680ED0) -------------------------------------------------------- int __usercall sub_680ED0(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (00680ED8) -------------------------------------------------------- void __usercall sub_680ED8(int a1) { sub_43BB10((void *)(a1 - 52)); } //----- (00680F00) -------------------------------------------------------- int __usercall sub_680F00(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00680F08) -------------------------------------------------------- void __usercall sub_680F08(int a1) { sub_43BB10((void *)(a1 - 80)); } //----- (00680F10) -------------------------------------------------------- void __usercall sub_680F10(int a1) { sub_43BB10((void *)(a1 - 60)); } //----- (00680F18) -------------------------------------------------------- int __cdecl sub_680F18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680F40) -------------------------------------------------------- int __usercall sub_680F40(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00680F48) -------------------------------------------------------- void __usercall sub_680F48(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (00680F50) -------------------------------------------------------- int __cdecl sub_680F50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680F70) -------------------------------------------------------- int __usercall sub_680F70(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00680F78) -------------------------------------------------------- int __cdecl sub_680F78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680FA0) -------------------------------------------------------- int __usercall sub_680FA0(int a1) { return sub_4026F0((int *)(a1 - 8884)); } //----- (00680FAB) -------------------------------------------------------- int __cdecl sub_680FAB() { return sub_46AA00(); } //----- (00680FB6) -------------------------------------------------------- int __cdecl sub_680FB6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2222)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00680FE0) -------------------------------------------------------- int __usercall sub_680FE0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00680FE8) -------------------------------------------------------- int __usercall sub_680FE8(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (00680FF0) -------------------------------------------------------- int __cdecl sub_680FF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681010) -------------------------------------------------------- int __cdecl sub_681010(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681030) -------------------------------------------------------- void __usercall sub_681030(int a1) { **(_DWORD **)(a1 - 16) = &off_6B22DC; } // 6B22DC: using guessed type int (__stdcall *off_6B22DC)(int, int); //----- (00681038) -------------------------------------------------------- int __cdecl sub_681038(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681060) -------------------------------------------------------- int __usercall sub_681060(int a1) { return sub_4026F0((int *)(a1 - 8220)); } //----- (0068106B) -------------------------------------------------------- int __cdecl sub_68106B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2056)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006810A0) -------------------------------------------------------- int __usercall sub_6810A0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006810A8) -------------------------------------------------------- void __cdecl sub_6810A8() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (006810B0) -------------------------------------------------------- int __cdecl sub_6810B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006810D0) -------------------------------------------------------- void __usercall sub_6810D0(int a1) { sub_46F990((void *)(a1 - 8392)); } //----- (006810DB) -------------------------------------------------------- void __usercall sub_6810DB(int a1) { *(_DWORD *)(a1 - 8416) = &off_6B22E4; } // 6B22E4: using guessed type int (__stdcall *off_6B22E4)(int, int); //----- (006810E6) -------------------------------------------------------- int __cdecl sub_6810E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2104)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681110) -------------------------------------------------------- void __cdecl sub_681110() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (00681118) -------------------------------------------------------- int __cdecl sub_681118(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681140) -------------------------------------------------------- int __usercall sub_681140(int a1) { return sub_4026F0((int *)(a1 - 84)); } //----- (00681148) -------------------------------------------------------- int __cdecl sub_681148(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 24)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681170) -------------------------------------------------------- int __usercall sub_681170(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (0068117B) -------------------------------------------------------- void __usercall sub_68117B(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (00681186) -------------------------------------------------------- void __usercall sub_681186(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (00681191) -------------------------------------------------------- int __cdecl sub_681191(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006811C0) -------------------------------------------------------- int __usercall sub_6811C0(int a1) { return sub_4026F0((int *)(a1 - 128)); } //----- (006811C8) -------------------------------------------------------- void __cdecl sub_6811C8() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (006811D0) -------------------------------------------------------- int __cdecl sub_6811D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681200) -------------------------------------------------------- int __usercall sub_681200(int a1) { return sub_4026F0((int *)(a1 - 112)); } //----- (00681208) -------------------------------------------------------- void __cdecl sub_681208() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (00681210) -------------------------------------------------------- int __cdecl sub_681210(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681240) -------------------------------------------------------- void __usercall sub_681240(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6B2EC8; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6B2EC8: using guessed type int (__thiscall *off_6B2EC8)(void *, char); //----- (00681248) -------------------------------------------------------- int __cdecl sub_681248(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681270) -------------------------------------------------------- void __cdecl sub_681270() { JUMPOUT(loc_46FE20); } // 46FE20: using guessed type int loc_46FE20(); //----- (00681278) -------------------------------------------------------- int __cdecl sub_681278(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006812A0) -------------------------------------------------------- int __usercall sub_6812A0(int a1) { return sub_4026F0((int *)(a1 - 144)); } //----- (006812AB) -------------------------------------------------------- void __usercall sub_6812AB(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (006812B6) -------------------------------------------------------- void __usercall sub_6812B6(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (006812C1) -------------------------------------------------------- int __cdecl sub_6812C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006812F0) -------------------------------------------------------- void __cdecl sub_6812F0() { JUMPOUT(loc_46FDC0); } // 46FDC0: using guessed type int loc_46FDC0(); //----- (006812F8) -------------------------------------------------------- int __cdecl sub_6812F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681320) -------------------------------------------------------- int __usercall sub_681320(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00681328) -------------------------------------------------------- int __cdecl sub_681328(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681350) -------------------------------------------------------- void __cdecl sub_681350() { JUMPOUT(loc_46FDC0); } // 46FDC0: using guessed type int loc_46FDC0(); //----- (0068135A) -------------------------------------------------------- int __cdecl sub_68135A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681380) -------------------------------------------------------- int __usercall sub_681380(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00681388) -------------------------------------------------------- int __cdecl sub_681388(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006813B0) -------------------------------------------------------- int __usercall sub_6813B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006813B8) -------------------------------------------------------- void __cdecl sub_6813B8() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (006813C0) -------------------------------------------------------- int __cdecl sub_6813C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006813E0) -------------------------------------------------------- void __usercall sub_6813E0(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6B39B8; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6B39B8: using guessed type int (__thiscall *off_6B39B8)(void *, char); //----- (006813E8) -------------------------------------------------------- int __cdecl sub_6813E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681410) -------------------------------------------------------- int __usercall sub_681410(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00681418) -------------------------------------------------------- int __cdecl sub_681418(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681440) -------------------------------------------------------- void __usercall sub_681440(int a1) { *(_DWORD *)(a1 - 20) = &off_6B39DC; } // 6B39DC: using guessed type int (__stdcall *off_6B39DC)(int, int); //----- (00681448) -------------------------------------------------------- int __cdecl sub_681448(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681470) -------------------------------------------------------- void __usercall sub_681470(int a1) { sub_473A80((void *)(a1 - 4224)); } //----- (0068147B) -------------------------------------------------------- void __cdecl sub_68147B() { JUMPOUT(loc_473DA0); } // 473DA0: using guessed type int loc_473DA0(); //----- (00681486) -------------------------------------------------------- int __cdecl sub_681486(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1062)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006814B0) -------------------------------------------------------- void __cdecl sub_6814B0() { JUMPOUT(loc_473B50); } // 473B50: using guessed type int loc_473B50(); //----- (006814B8) -------------------------------------------------------- int __cdecl sub_6814B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006814E0) -------------------------------------------------------- void __cdecl sub_6814E0() { JUMPOUT(loc_473B50); } // 473B50: using guessed type int loc_473B50(); //----- (006814EA) -------------------------------------------------------- int __cdecl sub_6814EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681510) -------------------------------------------------------- int __usercall sub_681510(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00681518) -------------------------------------------------------- void __usercall sub_681518(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (00681523) -------------------------------------------------------- int __cdecl sub_681523(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681540) -------------------------------------------------------- int __usercall sub_681540(int a1) { return sub_4026F0((int *)(a1 - 1840)); } //----- (0068154B) -------------------------------------------------------- void __usercall sub_68154B(int a1) { sub_4646E0(a1 - 1808); } //----- (00681556) -------------------------------------------------------- void __cdecl sub_681556() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00681561) -------------------------------------------------------- void __usercall sub_681561(int a1) { nullsub_2((void *)(a1 - 1296)); } //----- (0068156C) -------------------------------------------------------- int __cdecl sub_68156C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 464)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006815A0) -------------------------------------------------------- void __cdecl sub_6815A0() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (006815A8) -------------------------------------------------------- int __cdecl sub_6815A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006815D0) -------------------------------------------------------- int __usercall sub_6815D0(int a1) { return sub_4026F0((int *)(a1 - 560)); } //----- (006815DB) -------------------------------------------------------- void __usercall sub_6815DB(int a1) { sub_4646E0(a1 - 528); } //----- (006815E6) -------------------------------------------------------- void __cdecl sub_6815E6() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (006815F1) -------------------------------------------------------- int __cdecl sub_6815F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 140)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681620) -------------------------------------------------------- void __usercall sub_681620(int a1) { operator delete(*(void **)(a1 - 120)); } //----- (0068162B) -------------------------------------------------------- int __cdecl sub_68162B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006816B0) -------------------------------------------------------- int __usercall sub_6816B0(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (006816B8) -------------------------------------------------------- int __cdecl sub_6816B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006816E0) -------------------------------------------------------- void __usercall sub_6816E0(int a1) { *(_DWORD *)(a1 - 284) = &off_6B49A8; } // 6B49A8: using guessed type int (__thiscall *off_6B49A8)(void *, char); //----- (006816EB) -------------------------------------------------------- int __cdecl sub_6816EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 70)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681720) -------------------------------------------------------- void __usercall sub_681720(int a1) { sub_610240(a1 - 44); } //----- (00681728) -------------------------------------------------------- int __cdecl sub_681728(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681750) -------------------------------------------------------- void __usercall sub_681750(int a1) { sub_610240(*(_DWORD *)(a1 - 16) + 8); } //----- (0068175B) -------------------------------------------------------- int __cdecl sub_68175B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681780) -------------------------------------------------------- void __usercall sub_681780(int a1) { sub_610240(*(_DWORD *)(a1 - 16) + 4); } //----- (006817C0) -------------------------------------------------------- void __usercall sub_6817C0(int a1) { sub_610240(*(_DWORD *)(a1 - 16) + 8); } //----- (006817CB) -------------------------------------------------------- void __usercall sub_6817CB(int a1) { sub_610240(*(_DWORD *)(a1 - 16) + 36); } //----- (006817D6) -------------------------------------------------------- void __usercall sub_6817D6(int a1) { sub_610240(*(_DWORD *)(a1 - 16) + 64); } //----- (006817E1) -------------------------------------------------------- int __cdecl sub_6817E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681800) -------------------------------------------------------- int __cdecl sub_681800(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681820) -------------------------------------------------------- void __usercall sub_681820(int a1) { sub_424190((void **)(a1 - 84)); } //----- (00681828) -------------------------------------------------------- int __cdecl sub_681828(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681850) -------------------------------------------------------- int __cdecl sub_681850(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681870) -------------------------------------------------------- void __usercall sub_681870(int a1) { sub_479C50(a1 - 104); } //----- (00681878) -------------------------------------------------------- int __cdecl sub_681878(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006818A0) -------------------------------------------------------- void __usercall sub_6818A0(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (006818B1) -------------------------------------------------------- int __cdecl sub_6818B1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006818D0) -------------------------------------------------------- void __usercall sub_6818D0(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (006818E1) -------------------------------------------------------- void __usercall sub_6818E1(int a1) { sub_610240(*(_DWORD *)(a1 + 8) + 8); } //----- (006818EC) -------------------------------------------------------- int __cdecl sub_6818EC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681910) -------------------------------------------------------- void __usercall sub_681910(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (00681921) -------------------------------------------------------- int __cdecl sub_681921(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681940) -------------------------------------------------------- void __usercall sub_681940(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (00681951) -------------------------------------------------------- int __cdecl sub_681951(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681970) -------------------------------------------------------- void __usercall sub_681970(int a1) { sub_47CB60(a1 - 56); } //----- (00681978) -------------------------------------------------------- int __cdecl sub_681978(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006819A0) -------------------------------------------------------- void __usercall sub_6819A0(int a1) { sub_47CB60(a1 - 312); } //----- (006819AB) -------------------------------------------------------- int __cdecl sub_6819AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 80)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006819E0) -------------------------------------------------------- void __usercall sub_6819E0(int a1) { sub_47CB60(a1 - 100); } //----- (006819E8) -------------------------------------------------------- void __usercall sub_6819E8(int a1) { sub_47CB60(a1 - 100); } //----- (006819F0) -------------------------------------------------------- int __usercall sub_6819F0(int a1) { return sub_428A70((void *)(a1 - 160)); } //----- (006819FB) -------------------------------------------------------- int __usercall sub_6819FB(int a1) { return sub_428A70((void *)(a1 - 144)); } //----- (00681A06) -------------------------------------------------------- int __cdecl sub_681A06(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 41)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681A30) -------------------------------------------------------- void __usercall sub_681A30(int a1) { *(_DWORD *)(a1 - 652) = &off_6B49B4; sub_427EB0((void *)(a1 - 652)); } // 6B49B4: using guessed type int (__stdcall *off_6B49B4)(int, int, int); //----- (00681A3B) -------------------------------------------------------- int __usercall sub_681A3B(int a1) { return sub_428A70((void *)(a1 - 672)); } //----- (00681A46) -------------------------------------------------------- void __usercall sub_681A46(int a1) { sub_47CB60(a1 - 612); } //----- (00681A51) -------------------------------------------------------- int __cdecl sub_681A51(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 169)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681A80) -------------------------------------------------------- void __usercall sub_681A80(int a1) { sub_47CB60(a1 - 100); } //----- (00681A88) -------------------------------------------------------- void __usercall sub_681A88(int a1) { sub_47CB60(a1 - 56); } //----- (00681A90) -------------------------------------------------------- int __cdecl sub_681A90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 43)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681AC0) -------------------------------------------------------- int __cdecl sub_681AC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681AE0) -------------------------------------------------------- int __cdecl sub_681AE0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681B00) -------------------------------------------------------- int __cdecl sub_681B00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681B20) -------------------------------------------------------- void __usercall sub_681B20(int a1) { sub_610240(a1 - 44); } //----- (00681B28) -------------------------------------------------------- int __cdecl sub_681B28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681B50) -------------------------------------------------------- void __usercall sub_681B50(int a1) { sub_610240(a1 - 44); } //----- (00681B58) -------------------------------------------------------- void __usercall sub_681B58(int a1) { sub_610240(a1 - 100); } //----- (00681B60) -------------------------------------------------------- int __cdecl sub_681B60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681B90) -------------------------------------------------------- void __cdecl sub_681B90() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (00681B98) -------------------------------------------------------- int __cdecl sub_681B98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681BC0) -------------------------------------------------------- void __usercall sub_681BC0(int a1) { sub_610240(a1 - 44); } //----- (00681BC8) -------------------------------------------------------- int __cdecl sub_681BC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681BF0) -------------------------------------------------------- void __usercall sub_681BF0(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (00681C01) -------------------------------------------------------- void __usercall sub_681C01(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (00681C12) -------------------------------------------------------- int __cdecl sub_681C12(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681C30) -------------------------------------------------------- void __usercall sub_681C30(int a1) { sub_479D70((void *)(a1 - 212)); } //----- (00681C3B) -------------------------------------------------------- int __cdecl sub_681C3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 55)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681C70) -------------------------------------------------------- void __usercall sub_681C70(int a1) { sub_479DE0(a1 - 80); } //----- (00681C78) -------------------------------------------------------- int __cdecl sub_681C78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 22)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681CA0) -------------------------------------------------------- void __usercall sub_681CA0(int a1) { sub_47E9A0(*(_DWORD *)(a1 - 20) + 4); } //----- (00681CAB) -------------------------------------------------------- void __usercall sub_681CAB(int a1) { sub_47F110(*(_DWORD *)(a1 - 20) + 20); } //----- (00681CB6) -------------------------------------------------------- void __usercall sub_681CB6(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 36)); } //----- (00681CC1) -------------------------------------------------------- void __usercall sub_681CC1(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 80)); } //----- (00681CCC) -------------------------------------------------------- void __usercall sub_681CCC(int a1) { sub_47F160(*(_DWORD *)(a1 - 20) + 120); } //----- (00681CD7) -------------------------------------------------------- void __usercall sub_681CD7(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 164)); } //----- (00681CE5) -------------------------------------------------------- int __cdecl sub_681CE5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681D00) -------------------------------------------------------- void __usercall sub_681D00(int a1) { **(_DWORD **)(a1 - 16) = &off_6B499C; } // 6B499C: using guessed type int (__thiscall *off_6B499C)(void *, char); //----- (00681D08) -------------------------------------------------------- void __usercall sub_681D08(int a1) { sub_47F1B0(*(_DWORD *)(a1 - 16) + 12); } //----- (00681D13) -------------------------------------------------------- void __usercall sub_681D13(int a1) { sub_47F360(*(_DWORD *)(a1 - 16) + 28); } //----- (00681D1E) -------------------------------------------------------- void __usercall sub_681D1E(int a1) { sub_47F360(*(_DWORD *)(a1 - 16) + 208); } //----- (00681D2C) -------------------------------------------------------- int __cdecl sub_681D2C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681D50) -------------------------------------------------------- void __cdecl sub_681D50() { JUMPOUT(loc_478000); } // 478000: using guessed type int loc_478000(); //----- (00681D58) -------------------------------------------------------- void __usercall sub_681D58(int a1) { sub_47F1B0(*(_DWORD *)(a1 - 16) + 12); } //----- (00681D63) -------------------------------------------------------- void __usercall sub_681D63(int a1) { sub_47F360(*(_DWORD *)(a1 - 16) + 28); } //----- (00681D6E) -------------------------------------------------------- int __cdecl sub_681D6E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681D90) -------------------------------------------------------- void __cdecl sub_681D90() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (00681D9A) -------------------------------------------------------- int __cdecl sub_681D9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681DC0) -------------------------------------------------------- void __usercall sub_681DC0(int a1) { *(_DWORD *)(a1 - 88) = &off_6B5180; sub_639940(a1 - 88); } // 6B5180: using guessed type int (__thiscall *off_6B5180)(void *, char); //----- (00681DC8) -------------------------------------------------------- int __cdecl sub_681DC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681DF0) -------------------------------------------------------- void __usercall sub_681DF0(int a1) { *(_DWORD *)(a1 - 84) = &off_6B5188; sub_639940(a1 - 84); } // 6B5188: using guessed type int (__thiscall *off_6B5188)(void *, char); //----- (00681DF8) -------------------------------------------------------- int __cdecl sub_681DF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681E20) -------------------------------------------------------- void __usercall sub_681E20(int a1) { *(_DWORD *)(a1 - 84) = &off_6B5190; sub_639940(a1 - 84); } // 6B5190: using guessed type int (__thiscall *off_6B5190)(void *, char); //----- (00681E28) -------------------------------------------------------- int __cdecl sub_681E28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 24)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681E50) -------------------------------------------------------- void __usercall sub_681E50(int a1) { *(_DWORD *)(a1 - 36) = &off_6B5178; } // 6B5178: using guessed type int (__stdcall *off_6B5178)(int, int); //----- (00681E58) -------------------------------------------------------- int __cdecl sub_681E58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681E80) -------------------------------------------------------- void __cdecl sub_681E80() { JUMPOUT(loc_480770); } // 480770: using guessed type int loc_480770(); //----- (00681E88) -------------------------------------------------------- int __cdecl sub_681E88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681EB0) -------------------------------------------------------- int __usercall sub_681EB0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00681EB8) -------------------------------------------------------- void __cdecl sub_681EB8() { JUMPOUT(loc_480770); } // 480770: using guessed type int loc_480770(); //----- (00681EC0) -------------------------------------------------------- void __cdecl sub_681EC0() { JUMPOUT(loc_480770); } // 480770: using guessed type int loc_480770(); //----- (00681F20) -------------------------------------------------------- int __usercall sub_681F20(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00681F28) -------------------------------------------------------- void __cdecl sub_681F28() { JUMPOUT(loc_480770); } // 480770: using guessed type int loc_480770(); //----- (00681F30) -------------------------------------------------------- int __cdecl sub_681F30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681F50) -------------------------------------------------------- int __cdecl sub_681F50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681F70) -------------------------------------------------------- int __cdecl sub_681F70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681F90) -------------------------------------------------------- void __usercall sub_681F90(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 24); *(_DWORD *)v2 = &off_6B5154; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6B5154: using guessed type int (__thiscall *off_6B5154)(void *, char); //----- (00681F98) -------------------------------------------------------- void __usercall sub_681F98(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 24) + 408)); } //----- (00681FA6) -------------------------------------------------------- void __cdecl sub_681FA6() { JUMPOUT(loc_480770); } // 480770: using guessed type int loc_480770(); //----- (00681FAE) -------------------------------------------------------- int __cdecl sub_681FAE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00681FD0) -------------------------------------------------------- void __cdecl sub_681FD0() { JUMPOUT(loc_480770); } // 480770: using guessed type int loc_480770(); //----- (00681FD8) -------------------------------------------------------- int __cdecl sub_681FD8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682000) -------------------------------------------------------- int __usercall sub_682000(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00682008) -------------------------------------------------------- int __cdecl sub_682008(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682030) -------------------------------------------------------- void __usercall sub_682030(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0068203B) -------------------------------------------------------- void __usercall sub_68203B(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00682046) -------------------------------------------------------- void __usercall sub_682046(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (00682051) -------------------------------------------------------- void __usercall sub_682051(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0068205C) -------------------------------------------------------- void __usercall sub_68205C(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (00682067) -------------------------------------------------------- int __cdecl sub_682067(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682090) -------------------------------------------------------- void __usercall sub_682090(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068209B) -------------------------------------------------------- int __cdecl sub_68209B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006820C0) -------------------------------------------------------- int __usercall sub_6820C0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006820F0) -------------------------------------------------------- int __usercall sub_6820F0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006820F8) -------------------------------------------------------- void __usercall sub_6820F8(int a1) { *(_DWORD *)(a1 - 28) = &off_6B5AA4; sub_427EB0((void *)(a1 - 28)); } // 6B5AA4: using guessed type int (__stdcall *off_6B5AA4)(int, int, int); //----- (00682100) -------------------------------------------------------- int __cdecl sub_682100(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682120) -------------------------------------------------------- int __usercall sub_682120(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00682128) -------------------------------------------------------- void __usercall sub_682128(int a1) { sub_483A90(a1 - 104); } //----- (00682130) -------------------------------------------------------- void __usercall sub_682130(int a1) { nullsub_2((void *)(a1 - 92)); } //----- (00682138) -------------------------------------------------------- void __usercall sub_682138(int a1) { nullsub_2((void *)(a1 - 84)); } //----- (00682140) -------------------------------------------------------- void __usercall sub_682140(int a1) { nullsub_2((void *)(a1 - 72)); } //----- (00682148) -------------------------------------------------------- void __usercall sub_682148(int a1) { nullsub_2((void *)(a1 - 60)); } //----- (00682150) -------------------------------------------------------- void __usercall sub_682150(int a1) { nullsub_2((void *)(a1 - 48)); } //----- (00682158) -------------------------------------------------------- void __usercall sub_682158(int a1) { nullsub_2((void *)(a1 - 92)); } //----- (00682160) -------------------------------------------------------- void __usercall sub_682160(int a1) { nullsub_2((void *)(a1 - 84)); } //----- (00682168) -------------------------------------------------------- void __usercall sub_682168(int a1) { nullsub_2((void *)(a1 - 72)); } //----- (00682170) -------------------------------------------------------- void __usercall sub_682170(int a1) { nullsub_2((void *)(a1 - 60)); } //----- (00682178) -------------------------------------------------------- void __usercall sub_682178(int a1) { nullsub_2((void *)(a1 - 48)); } //----- (00682180) -------------------------------------------------------- void __usercall sub_682180(int a1) { nullsub_2((void *)(a1 - 92)); } //----- (00682188) -------------------------------------------------------- void __usercall sub_682188(int a1) { nullsub_2((void *)(a1 - 84)); } //----- (00682190) -------------------------------------------------------- void __usercall sub_682190(int a1) { nullsub_2((void *)(a1 - 72)); } //----- (00682198) -------------------------------------------------------- void __usercall sub_682198(int a1) { nullsub_2((void *)(a1 - 60)); } //----- (006821A0) -------------------------------------------------------- void __usercall sub_6821A0(int a1) { nullsub_2((void *)(a1 - 48)); } //----- (006821A8) -------------------------------------------------------- void __usercall sub_6821A8(int a1) { nullsub_2((void *)(a1 - 92)); } //----- (006821B0) -------------------------------------------------------- void __usercall sub_6821B0(int a1) { nullsub_2((void *)(a1 - 84)); } //----- (006821B8) -------------------------------------------------------- void __usercall sub_6821B8(int a1) { nullsub_2((void *)(a1 - 72)); } //----- (006821C0) -------------------------------------------------------- void __usercall sub_6821C0(int a1) { nullsub_2((void *)(a1 - 60)); } //----- (006821C8) -------------------------------------------------------- void __usercall sub_6821C8(int a1) { nullsub_2((void *)(a1 - 48)); } //----- (006821D0) -------------------------------------------------------- int __cdecl sub_6821D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006821F0) -------------------------------------------------------- int __usercall sub_6821F0(int a1) { return sub_4026F0((int *)(a1 - 160)); } //----- (006821FB) -------------------------------------------------------- void __usercall sub_6821FB(int a1) { nullsub_2(*(void **)(a1 - 164)); } //----- (00682206) -------------------------------------------------------- int __cdecl sub_682206(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 42)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682230) -------------------------------------------------------- int __usercall sub_682230(int a1) { return sub_4026F0((int *)(a1 - 284)); } //----- (0068223B) -------------------------------------------------------- void __usercall sub_68223B(int a1) { nullsub_2((void *)(a1 - 352)); } //----- (00682246) -------------------------------------------------------- void __usercall sub_682246(int a1) { nullsub_2((void *)(a1 - 344)); } //----- (00682251) -------------------------------------------------------- void __usercall sub_682251(int a1) { nullsub_2((void *)(a1 - 332)); } //----- (0068225C) -------------------------------------------------------- void __usercall sub_68225C(int a1) { nullsub_2((void *)(a1 - 320)); } //----- (00682267) -------------------------------------------------------- void __usercall sub_682267(int a1) { nullsub_2((void *)(a1 - 308)); } //----- (00682272) -------------------------------------------------------- void __usercall sub_682272(int a1) { sub_483A90(a1 - 364); } //----- (0068227D) -------------------------------------------------------- void __usercall sub_68227D(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00682288) -------------------------------------------------------- void __usercall sub_682288(int a1) { nullsub_2((void *)(a1 - 352)); } //----- (00682293) -------------------------------------------------------- void __usercall sub_682293(int a1) { nullsub_2((void *)(a1 - 344)); } //----- (0068229E) -------------------------------------------------------- void __usercall sub_68229E(int a1) { nullsub_2((void *)(a1 - 332)); } //----- (006822A9) -------------------------------------------------------- void __usercall sub_6822A9(int a1) { nullsub_2((void *)(a1 - 320)); } //----- (006822B4) -------------------------------------------------------- void __usercall sub_6822B4(int a1) { nullsub_2((void *)(a1 - 308)); } //----- (006822BF) -------------------------------------------------------- void __usercall sub_6822BF(int a1) { nullsub_2((void *)(a1 - 352)); } //----- (006822CA) -------------------------------------------------------- void __usercall sub_6822CA(int a1) { nullsub_2((void *)(a1 - 344)); } //----- (006822D5) -------------------------------------------------------- void __usercall sub_6822D5(int a1) { nullsub_2((void *)(a1 - 332)); } //----- (006822E0) -------------------------------------------------------- void __usercall sub_6822E0(int a1) { nullsub_2((void *)(a1 - 320)); } //----- (006822EB) -------------------------------------------------------- void __usercall sub_6822EB(int a1) { nullsub_2((void *)(a1 - 308)); } //----- (006822F6) -------------------------------------------------------- int __cdecl sub_6822F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 92)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682320) -------------------------------------------------------- void __usercall sub_682320(int a1) { *(_DWORD *)(a1 - 28) = &off_6B5AAC; } // 6B5AAC: using guessed type int (__stdcall *off_6B5AAC)(int, int); //----- (00682328) -------------------------------------------------------- int __cdecl sub_682328(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682350) -------------------------------------------------------- int __usercall sub_682350(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00682358) -------------------------------------------------------- void __usercall sub_682358(int a1) { sub_427EB0((void *)(a1 - 28)); } //----- (006823C0) -------------------------------------------------------- int __usercall sub_6823C0(int a1) { return sub_4026F0((int *)(a1 - 324)); } //----- (006823CB) -------------------------------------------------------- void __usercall sub_6823CB(int a1) { nullsub_2((void *)(a1 - 304)); } //----- (006823D6) -------------------------------------------------------- void __usercall sub_6823D6(int a1) { sub_4E2170((void *)(a1 - 348)); } //----- (006823E1) -------------------------------------------------------- int __cdecl sub_6823E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 88)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682410) -------------------------------------------------------- int __usercall sub_682410(int a1) { return sub_4026F0((int *)(a1 - 324)); } //----- (0068241B) -------------------------------------------------------- void __usercall sub_68241B(int a1) { nullsub_2(*(void **)(a1 - 320)); } //----- (00682426) -------------------------------------------------------- int __cdecl sub_682426(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 82)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682450) -------------------------------------------------------- void __usercall sub_682450(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (0068245B) -------------------------------------------------------- int __cdecl sub_68245B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 80)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682490) -------------------------------------------------------- int __usercall sub_682490(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00682498) -------------------------------------------------------- void __usercall sub_682498(int a1) { *(_DWORD *)(a1 - 48) = &off_6B6E50; } // 6B6E50: using guessed type int (__stdcall *off_6B6E50)(int, int); //----- (006824A0) -------------------------------------------------------- int __cdecl sub_6824A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006824C0) -------------------------------------------------------- int __usercall sub_6824C0(int a1) { return sub_4026F0((int *)(a1 - 188)); } //----- (006824CB) -------------------------------------------------------- int __usercall sub_6824CB(int a1) { return sub_428A70((void *)(a1 - 180)); } //----- (006824D6) -------------------------------------------------------- int __usercall sub_6824D6(int a1) { return sub_428A70((void *)(a1 - 180)); } //----- (006824E1) -------------------------------------------------------- int __usercall sub_6824E1(int a1) { return sub_428A70((void *)(a1 - 200)); } //----- (006824EC) -------------------------------------------------------- int __cdecl sub_6824EC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 51)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682520) -------------------------------------------------------- int __usercall sub_682520(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (00682528) -------------------------------------------------------- int __cdecl sub_682528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682550) -------------------------------------------------------- int __usercall sub_682550(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00682558) -------------------------------------------------------- int __cdecl sub_682558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 34)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682580) -------------------------------------------------------- void __cdecl sub_682580() { JUMPOUT(loc_43EF80); } // 43EF80: using guessed type int loc_43EF80(); //----- (00682588) -------------------------------------------------------- int __cdecl sub_682588(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006825B0) -------------------------------------------------------- void __cdecl sub_6825B0() { JUMPOUT(loc_489500); } // 489500: using guessed type int loc_489500(); //----- (006825B8) -------------------------------------------------------- int __cdecl sub_6825B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006825E0) -------------------------------------------------------- int __usercall sub_6825E0(int a1) { return sub_4026F0((int *)(a1 - 204)); } //----- (006825EB) -------------------------------------------------------- void __cdecl sub_6825EB() { JUMPOUT(loc_489500); } // 489500: using guessed type int loc_489500(); //----- (006825F6) -------------------------------------------------------- int __cdecl sub_6825F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 52)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682620) -------------------------------------------------------- int __usercall sub_682620(int a1) { return sub_4026F0((int *)(a1 - 208)); } //----- (0068262B) -------------------------------------------------------- void __cdecl sub_68262B() { JUMPOUT(loc_489500); } // 489500: using guessed type int loc_489500(); //----- (00682636) -------------------------------------------------------- int __cdecl sub_682636(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 53)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682660) -------------------------------------------------------- void __cdecl sub_682660() { JUMPOUT(loc_486CC0); } // 486CC0: using guessed type int loc_486CC0(); //----- (00682668) -------------------------------------------------------- int __cdecl sub_682668(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682690) -------------------------------------------------------- int __usercall sub_682690(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00682698) -------------------------------------------------------- int __cdecl sub_682698(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 30)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006826C0) -------------------------------------------------------- int __usercall sub_6826C0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006826C8) -------------------------------------------------------- int __cdecl sub_6826C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006826F0) -------------------------------------------------------- int __usercall sub_6826F0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (006826F8) -------------------------------------------------------- int __cdecl sub_6826F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682720) -------------------------------------------------------- int __usercall sub_682720(int a1) { return sub_4026F0((int *)(a1 - 180)); } //----- (0068272B) -------------------------------------------------------- int __cdecl sub_68272B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 46)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682760) -------------------------------------------------------- int __usercall sub_682760(int a1) { return _LN21((void *)(a1 - 10260 + 40), 0x66u, 100, nullsub_2); } //----- (0068276B) -------------------------------------------------------- int __cdecl sub_68276B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2568)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006827A0) -------------------------------------------------------- void __usercall sub_6827A0(int a1) { sub_6530A4(*(void **)(a1 - 67992)); } //----- (006827AE) -------------------------------------------------------- void __usercall sub_6827AE(int a1) { sub_643080((void *)(a1 - 67972)); } //----- (006827B9) -------------------------------------------------------- int __cdecl sub_6827B9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17000)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006827F0) -------------------------------------------------------- void __usercall sub_6827F0(int a1) { sub_48F320(*(_DWORD *)(a1 - 20)); } //----- (006827F8) -------------------------------------------------------- int __cdecl sub_6827F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682820) -------------------------------------------------------- void __cdecl sub_682820() { sub_643080(&unk_D5552D0); } //----- (0068282A) -------------------------------------------------------- int __cdecl sub_68282A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682850) -------------------------------------------------------- void __cdecl sub_682850() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068285A) -------------------------------------------------------- int __cdecl sub_68285A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682880) -------------------------------------------------------- int __cdecl sub_682880() { void *v0; // esi@1 void *v1; // edi@2 int result; // eax@5 v0 = dword_D56DC58; if ( dword_D56DC58 ) { v1 = *(&dword_D56DC58 + 1); if ( dword_D56DC58 != v1 ) { do { (**(void (__thiscall ***)(void *, _DWORD))v0)(v0, 0); v0 = (char *)v0 + 76; } while ( v0 != v1 ); } operator delete(dword_D56DC58); } result = 0; dword_D56DC58 = 0; *(&dword_D56DC58 + 1) = 0; *(&dword_D56DC58 + 2) = 0; return result; } //----- (0068288A) -------------------------------------------------------- int __cdecl sub_68288A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006828B0) -------------------------------------------------------- void __cdecl sub_6828B0() { JUMPOUT(loc_48FDA0); } // 48FDA0: using guessed type int loc_48FDA0(); //----- (006828BA) -------------------------------------------------------- int __cdecl sub_6828BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006828E0) -------------------------------------------------------- void __cdecl sub_6828E0() { JUMPOUT(loc_48FDA0); } // 48FDA0: using guessed type int loc_48FDA0(); //----- (006828EA) -------------------------------------------------------- int __cdecl sub_6828EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682910) -------------------------------------------------------- void __cdecl sub_682910() { sub_639560(&unk_D565B30); } //----- (0068291A) -------------------------------------------------------- int __cdecl sub_68291A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682940) -------------------------------------------------------- void __usercall sub_682940(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (00682948) -------------------------------------------------------- int __cdecl sub_682948(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682970) -------------------------------------------------------- int __usercall sub_682970(int a1) { return sub_4026F0((int *)(a1 - 5148)); } //----- (0068297B) -------------------------------------------------------- int __cdecl sub_68297B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1290)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006829B0) -------------------------------------------------------- int __usercall sub_6829B0(int a1) { return sub_4026F0((int *)(a1 - 196)); } //----- (006829BB) -------------------------------------------------------- void __usercall sub_6829BB(int a1) { sub_43BB10((void *)(a1 - 188)); } //----- (006829C6) -------------------------------------------------------- int __cdecl sub_6829C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 82)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006829F0) -------------------------------------------------------- void __usercall sub_6829F0(int a1) { *(_DWORD *)(a1 - 112) = &off_6B8E14; sub_639940(a1 - 112); } // 6B8E14: using guessed type int (__thiscall *off_6B8E14)(void *, char); //----- (006829F8) -------------------------------------------------------- int __cdecl sub_6829F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 30)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682A20) -------------------------------------------------------- void __usercall sub_682A20(int a1) { *(_DWORD *)(a1 - 120) = &off_6B8E0C; sub_639940(a1 - 120); } // 6B8E0C: using guessed type int (__thiscall *off_6B8E0C)(void *, char); //----- (00682A28) -------------------------------------------------------- int __cdecl sub_682A28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 32)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682A50) -------------------------------------------------------- int __usercall sub_682A50(int a1) { return sub_4026F0((int *)(a1 - 244)); } //----- (00682A5B) -------------------------------------------------------- int __cdecl sub_682A5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 62)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682A90) -------------------------------------------------------- int __cdecl sub_682A90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682AB0) -------------------------------------------------------- int __cdecl sub_682AB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682AD0) -------------------------------------------------------- int __cdecl sub_682AD0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682AF0) -------------------------------------------------------- void __usercall sub_682AF0(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (00682B01) -------------------------------------------------------- int __cdecl sub_682B01(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682B20) -------------------------------------------------------- void __usercall sub_682B20(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (00682B31) -------------------------------------------------------- int __cdecl sub_682B31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682B50) -------------------------------------------------------- int __cdecl sub_682B50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682B70) -------------------------------------------------------- int __cdecl sub_682B70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682B90) -------------------------------------------------------- void __usercall sub_682B90(int a1) { sub_5C4DE0(a1 - 32); } //----- (00682B98) -------------------------------------------------------- int __cdecl sub_682B98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682BC0) -------------------------------------------------------- void __usercall sub_682BC0(int a1) { nullsub_2(*(void **)(a1 - 24)); } //----- (00682BD1) -------------------------------------------------------- void __usercall sub_682BD1(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 24) + 32)); } //----- (00682BDC) -------------------------------------------------------- int __cdecl sub_682BDC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682C00) -------------------------------------------------------- int __cdecl sub_682C00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682C20) -------------------------------------------------------- void __usercall sub_682C20(int a1) { nullsub_2(*(void **)(a1 - 20)); } //----- (00682C31) -------------------------------------------------------- void __usercall sub_682C31(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 32)); } //----- (00682C3C) -------------------------------------------------------- void __usercall sub_682C3C(int a1) { nullsub_2(*(void **)(a1 - 20)); } //----- (00682C4D) -------------------------------------------------------- void __usercall sub_682C4D(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 32)); } //----- (00682C58) -------------------------------------------------------- int __cdecl sub_682C58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682C80) -------------------------------------------------------- void __usercall sub_682C80(int a1) { *(_DWORD *)(a1 - 484) = &off_6B91A0; sub_639940(a1 - 484); } // 6B91A0: using guessed type int (__thiscall *off_6B91A0)(void *, char); //----- (00682C8B) -------------------------------------------------------- void __usercall sub_682C8B(int a1) { *(_DWORD *)(a1 - 496) = &off_6B91A8; sub_639940(a1 - 496); } // 6B91A8: using guessed type int (__thiscall *off_6B91A8)(void *, char); //----- (00682C96) -------------------------------------------------------- void __usercall sub_682C96(int a1) { int v1; // esi@1 int v2; // eax@1 v1 = a1 - 380; v2 = *(_DWORD *)(a1 - 380 + 48); if ( v2 ) { sub_492FC0(v2, *(_DWORD *)(a1 - 380 + 52)); operator delete(*(void **)(v1 + 48)); } *(_DWORD *)(v1 + 48) = 0; *(_DWORD *)(v1 + 52) = 0; *(_DWORD *)(v1 + 56) = 0; if ( *(_DWORD *)(v1 + 32) ) operator delete(*(void **)(v1 + 32)); *(_DWORD *)(v1 + 32) = 0; *(_DWORD *)(v1 + 36) = 0; *(_DWORD *)(v1 + 40) = 0; } //----- (00682CA1) -------------------------------------------------------- int __cdecl sub_682CA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 129)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682CD0) -------------------------------------------------------- int __usercall sub_682CD0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (00682CD8) -------------------------------------------------------- void __usercall sub_682CD8(int a1) { *(_DWORD *)(a1 - 32) = &off_6B971C; } // 6B971C: using guessed type int (__stdcall *off_6B971C)(int, int); //----- (00682CE0) -------------------------------------------------------- int __cdecl sub_682CE0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682D10) -------------------------------------------------------- void __usercall sub_682D10(int a1) { sub_427EB0(*(void **)(a1 - 16)); } //----- (00682D18) -------------------------------------------------------- int __cdecl sub_682D18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682D40) -------------------------------------------------------- int __usercall sub_682D40(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00682D70) -------------------------------------------------------- int __usercall sub_682D70(int a1) { return sub_4026F0((int *)(a1 - 660)); } //----- (00682D7B) -------------------------------------------------------- int __cdecl sub_682D7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 166)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682DB0) -------------------------------------------------------- int __usercall sub_682DB0(int a1) { return sub_4026F0((int *)(a1 - 160)); } //----- (00682DBB) -------------------------------------------------------- void __usercall sub_682DBB(int a1) { sub_43BB10((void *)(a1 - 144)); } //----- (00682DC6) -------------------------------------------------------- int __cdecl sub_682DC6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 41)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682DF0) -------------------------------------------------------- void __cdecl sub_682DF0() { JUMPOUT(loc_494AA0); } // 494AA0: using guessed type int loc_494AA0(); //----- (00682DF8) -------------------------------------------------------- int __cdecl sub_682DF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682E20) -------------------------------------------------------- void __usercall sub_682E20(int a1) { *(_DWORD *)(a1 - 20) = &off_6B9724; } // 6B9724: using guessed type int (__stdcall *off_6B9724)(int, int); //----- (00682E28) -------------------------------------------------------- int __cdecl sub_682E28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682E50) -------------------------------------------------------- void __usercall sub_682E50(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6B96F8; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6B96F8: using guessed type int (__thiscall *off_6B96F8)(void *, char); //----- (00682E58) -------------------------------------------------------- int __cdecl sub_682E58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682E80) -------------------------------------------------------- int __usercall sub_682E80(int a1) { return sub_4026F0((int *)(a1 - 1752)); } //----- (00682E8B) -------------------------------------------------------- int __usercall sub_682E8B(int a1) { return _LN21((void *)(a1 - 1216), 0x24u, 4, nullsub_2); } //----- (00682EA1) -------------------------------------------------------- void __usercall sub_682EA1(int a1) { sub_4646E0(a1 - 1728); } //----- (00682EAC) -------------------------------------------------------- void __cdecl sub_682EAC() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00682EB4) -------------------------------------------------------- void __cdecl sub_682EB4() { JUMPOUT(loc_496760); } // 496760: using guessed type int loc_496760(); //----- (00682EBF) -------------------------------------------------------- int __cdecl sub_682EBF(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 439)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682EF0) -------------------------------------------------------- void __cdecl sub_682EF0() { JUMPOUT(loc_496760); } // 496760: using guessed type int loc_496760(); //----- (00682EF8) -------------------------------------------------------- int __cdecl sub_682EF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 22)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682F20) -------------------------------------------------------- int __usercall sub_682F20(int a1) { return sub_4026F0((int *)(a1 - 100)); } //----- (00682F28) -------------------------------------------------------- void __cdecl sub_682F28() { JUMPOUT(loc_496760); } // 496760: using guessed type int loc_496760(); //----- (00682F30) -------------------------------------------------------- int __cdecl sub_682F30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682F60) -------------------------------------------------------- void __cdecl sub_682F60() { JUMPOUT(loc_496760); } // 496760: using guessed type int loc_496760(); //----- (00682F68) -------------------------------------------------------- int __cdecl sub_682F68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682F90) -------------------------------------------------------- void __cdecl sub_682F90() { JUMPOUT(loc_496760); } // 496760: using guessed type int loc_496760(); //----- (00682F98) -------------------------------------------------------- int __cdecl sub_682F98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00682FC0) -------------------------------------------------------- int __usercall sub_682FC0(int a1) { return sub_4026F0((int *)(a1 - 548)); } //----- (00682FCB) -------------------------------------------------------- int __cdecl sub_682FCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 163)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683000) -------------------------------------------------------- void __usercall sub_683000(int a1) { sub_496020(*(_DWORD *)(a1 - 16)); } //----- (00683008) -------------------------------------------------------- int __cdecl sub_683008(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683030) -------------------------------------------------------- void __cdecl sub_683030() { JUMPOUT(loc_494800); } // 494800: using guessed type int loc_494800(); //----- (00683038) -------------------------------------------------------- int __cdecl sub_683038(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683060) -------------------------------------------------------- void __cdecl sub_683060() { JUMPOUT(loc_494800); } // 494800: using guessed type int loc_494800(); //----- (0068306A) -------------------------------------------------------- int __cdecl sub_68306A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683090) -------------------------------------------------------- void __usercall sub_683090(int a1) { sub_5C4DE0(a1 - 40); } //----- (00683098) -------------------------------------------------------- void __usercall sub_683098(int a1) { nullsub_2(*(void **)(a1 + 12)); } //----- (006830A9) -------------------------------------------------------- int __cdecl sub_6830A9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006830D0) -------------------------------------------------------- void __usercall sub_6830D0(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (006830E1) -------------------------------------------------------- int __cdecl sub_6830E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683100) -------------------------------------------------------- int __cdecl sub_683100(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683120) -------------------------------------------------------- int __usercall sub_683120(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683150) -------------------------------------------------------- int __usercall sub_683150(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683180) -------------------------------------------------------- void __cdecl sub_683180() { sub_493000((int)&dword_D64C510); } //----- (0068318A) -------------------------------------------------------- int __cdecl sub_68318A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683210) -------------------------------------------------------- void __usercall sub_683210(int a1) { sub_643080((void *)(a1 - 68072)); } //----- (0068321B) -------------------------------------------------------- int __cdecl sub_68321B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17028)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683250) -------------------------------------------------------- int __usercall sub_683250(int a1) { return sub_4026F0((int *)(a1 - 1216)); } //----- (0068325B) -------------------------------------------------------- int __cdecl sub_68325B() { return sub_5937F0(); } //----- (00683266) -------------------------------------------------------- void __usercall sub_683266(int a1) { sub_43BB10((void *)(a1 - 1208)); } //----- (00683271) -------------------------------------------------------- int __cdecl sub_683271(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 305)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006832A0) -------------------------------------------------------- int __usercall sub_6832A0(int a1) { return sub_4026F0((int *)(a1 - 172)); } //----- (006832AB) -------------------------------------------------------- void __usercall sub_6832AB(int a1) { sub_43BB10((void *)(a1 - 168)); } //----- (006832B6) -------------------------------------------------------- int __cdecl sub_6832B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 44)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006832E0) -------------------------------------------------------- void __usercall sub_6832E0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_6BA9B0; sub_639940(v1); } // 6BA9B0: using guessed type int (__thiscall *off_6BA9B0)(void *, char); //----- (006832E8) -------------------------------------------------------- int __cdecl sub_6832E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683310) -------------------------------------------------------- void __usercall sub_683310(int a1) { sub_62A3F0(*(_DWORD *)(a1 - 16) + 36); } //----- (0068331B) -------------------------------------------------------- int __cdecl sub_68331B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683340) -------------------------------------------------------- void __usercall sub_683340(int a1) { sub_62A3F0(*(_DWORD *)(a1 - 16) + 36); } //----- (0068334B) -------------------------------------------------------- int __cdecl sub_68334B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683370) -------------------------------------------------------- int __usercall sub_683370(int a1) { return sub_4026F0((int *)(a1 - 176)); } //----- (0068337B) -------------------------------------------------------- int __cdecl sub_68337B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 45)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006833B0) -------------------------------------------------------- void __usercall sub_6833B0(int a1) { sub_427EB0((void *)(a1 - 20)); } //----- (006833B8) -------------------------------------------------------- int __cdecl sub_6833B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006833E0) -------------------------------------------------------- int __usercall sub_6833E0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006833E8) -------------------------------------------------------- int __cdecl sub_6833E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683440) -------------------------------------------------------- void __usercall sub_683440(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 20); *(_DWORD *)v2 = &off_6BB590; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6BB590: using guessed type int (__thiscall *off_6BB590)(void *, char); //----- (00683448) -------------------------------------------------------- int __usercall sub_683448(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 20) + 24); } //----- (00683453) -------------------------------------------------------- int __usercall sub_683453(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 20) + 41004); } //----- (00683461) -------------------------------------------------------- int __usercall sub_683461(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 20) + 81984); } //----- (0068346F) -------------------------------------------------------- int __usercall sub_68346F(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 20) + 122964); } //----- (0068347D) -------------------------------------------------------- void __usercall sub_68347D(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 163984)); } //----- (0068348B) -------------------------------------------------------- int __cdecl sub_68348B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006834B0) -------------------------------------------------------- void __cdecl sub_6834B0() { JUMPOUT(loc_49E4B0); } // 49E4B0: using guessed type int loc_49E4B0(); //----- (006834B8) -------------------------------------------------------- int __cdecl sub_6834B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006834E0) -------------------------------------------------------- int __usercall sub_6834E0(int a1) { return sub_4026F0((int *)(a1 - 41024)); } //----- (006834EB) -------------------------------------------------------- int __usercall sub_6834EB(int a1) { return sub_49DF60(a1 - 40996); } //----- (006834F6) -------------------------------------------------------- void __cdecl sub_6834F6() { JUMPOUT(loc_49E4B0); } // 49E4B0: using guessed type int loc_49E4B0(); //----- (00683501) -------------------------------------------------------- int __cdecl sub_683501(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10257)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683530) -------------------------------------------------------- int __usercall sub_683530(int a1) { return sub_4026F0((int *)(a1 - 41032)); } //----- (0068353B) -------------------------------------------------------- int __usercall sub_68353B(int a1) { return sub_49DF60(a1 - 40996); } //----- (00683546) -------------------------------------------------------- void __cdecl sub_683546() { JUMPOUT(loc_49E4B0); } // 49E4B0: using guessed type int loc_49E4B0(); //----- (00683551) -------------------------------------------------------- void __usercall sub_683551(int a1) { operator delete(*(void **)(a1 - 41036)); } //----- (0068355F) -------------------------------------------------------- int __cdecl sub_68355F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10260)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683590) -------------------------------------------------------- void __cdecl sub_683590() { JUMPOUT(loc_49E300); } // 49E300: using guessed type int loc_49E300(); //----- (00683598) -------------------------------------------------------- int __usercall sub_683598(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 16) + 24); } //----- (006835A3) -------------------------------------------------------- int __usercall sub_6835A3(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 16) + 41004); } //----- (006835B1) -------------------------------------------------------- int __usercall sub_6835B1(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 16) + 81984); } //----- (006835BF) -------------------------------------------------------- int __usercall sub_6835BF(int a1) { return sub_49DF60(*(_DWORD *)(a1 - 16) + 122964); } //----- (006835CD) -------------------------------------------------------- int __cdecl sub_6835CD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006835F0) -------------------------------------------------------- int __cdecl sub_6835F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683610) -------------------------------------------------------- void __usercall sub_683610(int a1) { *(_DWORD *)(a1 - 120) = &off_6BBC18; sub_639940(a1 - 120); } // 6BBC18: using guessed type int (__thiscall *off_6BBC18)(void *, char); //----- (00683618) -------------------------------------------------------- int __cdecl sub_683618(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 48)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683640) -------------------------------------------------------- void __usercall sub_683640(int a1) { *(_DWORD *)(a1 - 116) = &off_6BBC20; sub_639940(a1 - 116); } // 6BBC20: using guessed type int (__thiscall *off_6BBC20)(void *, char); //----- (00683648) -------------------------------------------------------- void __usercall sub_683648(int a1) { sub_424190((void **)(a1 - 140)); } //----- (00683653) -------------------------------------------------------- void __usercall sub_683653(int a1) { sub_5C4DE0(a1 - 168); } //----- (0068365E) -------------------------------------------------------- int __cdecl sub_68365E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 45)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683690) -------------------------------------------------------- void __cdecl sub_683690() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (00683698) -------------------------------------------------------- int __cdecl sub_683698(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006836F0) -------------------------------------------------------- void __usercall sub_6836F0(int a1) { nullsub_2((void *)(a1 - 468)); } //----- (006836FB) -------------------------------------------------------- int __cdecl sub_6836FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 126)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683760) -------------------------------------------------------- int __usercall sub_683760(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683790) -------------------------------------------------------- int __usercall sub_683790(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006837C0) -------------------------------------------------------- int __usercall sub_6837C0(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (006837C8) -------------------------------------------------------- void __usercall sub_6837C8(int a1) { sub_43BB10((void *)(a1 - 60)); } //----- (006837D0) -------------------------------------------------------- void __usercall sub_6837D0(int a1) { nullsub_2((void *)(a1 - 44)); } //----- (00683800) -------------------------------------------------------- int __usercall sub_683800(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683808) -------------------------------------------------------- void __usercall sub_683808(int a1) { nullsub_2((void *)(a1 - 60)); } //----- (00683830) -------------------------------------------------------- int __usercall sub_683830(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683860) -------------------------------------------------------- int __usercall sub_683860(int a1) { return sub_4026F0((int *)(a1 - 188)); } //----- (0068386B) -------------------------------------------------------- void __usercall sub_68386B(int a1) { sub_5D4580((void *)(a1 - 212)); } //----- (00683876) -------------------------------------------------------- int __cdecl sub_683876(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 54)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006838A0) -------------------------------------------------------- int __usercall sub_6838A0(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (006838AB) -------------------------------------------------------- void __usercall sub_6838AB(int a1) { nullsub_2((void *)(a1 - 124)); } //----- (006838B3) -------------------------------------------------------- int __cdecl sub_6838B3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006838E0) -------------------------------------------------------- int __usercall sub_6838E0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683910) -------------------------------------------------------- void __usercall sub_683910(int a1) { sub_643080((void *)(a1 - 67684)); } //----- (0068391B) -------------------------------------------------------- int __cdecl sub_68391B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16922)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683950) -------------------------------------------------------- void __usercall sub_683950(int a1) { *(_DWORD *)(a1 - 20) = &off_6BD228; } // 6BD228: using guessed type int (__stdcall *off_6BD228)(int, int); //----- (00683958) -------------------------------------------------------- int __cdecl sub_683958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683980) -------------------------------------------------------- void __usercall sub_683980(int a1) { sub_643080((void *)(a1 - 67932)); } //----- (0068398B) -------------------------------------------------------- int __cdecl sub_68398B() { int result; // eax@1 result = dword_8BB23C & 0xFFFFFFFE; dword_8BB23C &= 0xFFFFFFFEu; return result; } // 8BB23C: using guessed type int dword_8BB23C; //----- (00683999) -------------------------------------------------------- void __cdecl sub_683999() { sub_4A79E0((int)&unk_8B9A3C); } //----- (006839A3) -------------------------------------------------------- void __cdecl sub_6839A3() { sub_4A79E0((int)&unk_8B9F04); } //----- (006839AD) -------------------------------------------------------- void __cdecl sub_6839AD() { sub_4A79E0((int)&unk_8BA3CC); } //----- (006839B7) -------------------------------------------------------- void __cdecl sub_6839B7() { sub_4A79E0((int)&unk_8BA8A4); } //----- (006839C1) -------------------------------------------------------- int __cdecl sub_6839C1() { int result; // eax@1 result = dword_8BB23C & 0xFFFFFFFE; dword_8BB23C &= 0xFFFFFFFEu; return result; } // 8BB23C: using guessed type int dword_8BB23C; //----- (006839CF) -------------------------------------------------------- void __cdecl sub_6839CF() { sub_4A79E0((int)&unk_8B9A3C); } //----- (006839D9) -------------------------------------------------------- void __cdecl sub_6839D9() { sub_4A79E0((int)&unk_8B9F04); } //----- (006839E3) -------------------------------------------------------- void __cdecl sub_6839E3() { sub_4A79E0((int)&unk_8BA3CC); } //----- (006839ED) -------------------------------------------------------- void __cdecl sub_6839ED() { sub_4A79E0((int)&unk_8BA8A4); } //----- (006839F7) -------------------------------------------------------- void __usercall sub_6839F7(int a1) { operator delete(*(void **)(a1 - 67944)); } //----- (00683A05) -------------------------------------------------------- void __usercall sub_683A05(int a1) { operator delete(*(void **)(a1 - 67944)); } //----- (00683A13) -------------------------------------------------------- void __usercall sub_683A13(int a1) { operator delete(*(void **)(a1 - 67944)); } //----- (00683A21) -------------------------------------------------------- void __usercall sub_683A21(int a1) { operator delete(*(void **)(a1 - 67944)); } //----- (00683A2F) -------------------------------------------------------- void __usercall sub_683A2F(int a1) { operator delete(*(void **)(a1 - 67944)); } //----- (00683A3D) -------------------------------------------------------- int __cdecl sub_683A3D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16996)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683A70) -------------------------------------------------------- int __usercall sub_683A70(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683A78) -------------------------------------------------------- void __usercall sub_683A78(int a1) { sub_5D4580((void *)(a1 - 32)); } //----- (00683A80) -------------------------------------------------------- int __cdecl sub_683A80(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683AA0) -------------------------------------------------------- void __usercall sub_683AA0(int a1) { **(_DWORD **)(a1 - 16) = &off_6BDA2C; } // 6BDA2C: using guessed type int (__stdcall *off_6BDA2C)(int, int); //----- (00683AA8) -------------------------------------------------------- int __cdecl sub_683AA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683AD0) -------------------------------------------------------- int __usercall sub_683AD0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683AD8) -------------------------------------------------------- int __usercall sub_683AD8(int a1) { return sub_4AB600((void *)(a1 - 28)); } //----- (00683AE0) -------------------------------------------------------- void __cdecl sub_683AE0() { JUMPOUT(loc_4AB200); } // 4AB200: using guessed type int loc_4AB200(); //----- (00683AE8) -------------------------------------------------------- int __cdecl sub_683AE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683B10) -------------------------------------------------------- void __cdecl sub_683B10() { JUMPOUT(loc_4AB200); } // 4AB200: using guessed type int loc_4AB200(); //----- (00683B40) -------------------------------------------------------- int __usercall sub_683B40(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683B48) -------------------------------------------------------- int __usercall sub_683B48(int a1) { return sub_4ABA90((void *)(a1 - 36)); } //----- (00683B50) -------------------------------------------------------- void __cdecl sub_683B50() { JUMPOUT(loc_4AB200); } // 4AB200: using guessed type int loc_4AB200(); //----- (00683B58) -------------------------------------------------------- int __cdecl sub_683B58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683B80) -------------------------------------------------------- int __usercall sub_683B80(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683B88) -------------------------------------------------------- void __usercall sub_683B88(int a1) { *(_DWORD *)(a1 - 32) = &off_6BDA1C; sub_427EB0((void *)(a1 - 32)); } // 6BDA1C: using guessed type int (__stdcall *off_6BDA1C)(int, int, int); //----- (00683B90) -------------------------------------------------------- int __cdecl sub_683B90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683BB0) -------------------------------------------------------- int __usercall sub_683BB0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683BB8) -------------------------------------------------------- void __usercall sub_683BB8(int a1) { *(_DWORD *)(a1 - 32) = &off_6BDA24; sub_427EB0((void *)(a1 - 32)); } // 6BDA24: using guessed type int (__stdcall *off_6BDA24)(int, int, int); //----- (00683BC0) -------------------------------------------------------- int __cdecl sub_683BC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683BE0) -------------------------------------------------------- int __usercall sub_683BE0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683C10) -------------------------------------------------------- int __usercall sub_683C10(int a1) { return sub_4026F0((int *)(a1 - 1052)); } //----- (00683C1B) -------------------------------------------------------- int __cdecl sub_683C1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 267)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683C50) -------------------------------------------------------- void __usercall sub_683C50(int a1) { sub_643080((void *)(a1 - 68048)); } //----- (00683C5B) -------------------------------------------------------- int __cdecl sub_683C5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17024)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683C90) -------------------------------------------------------- void __usercall sub_683C90(int a1) { sub_4A20A0(*(_DWORD *)(a1 - 16)); } //----- (00683C98) -------------------------------------------------------- void __cdecl sub_683C98() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (00683CA0) -------------------------------------------------------- int __cdecl sub_683CA0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683CC0) -------------------------------------------------------- void __usercall sub_683CC0(int a1) { sub_626C10(a1 - 80); } //----- (00683CC8) -------------------------------------------------------- void __usercall sub_683CC8(int a1) { sub_424190((void **)(a1 - 104)); } //----- (00683CD0) -------------------------------------------------------- void __usercall sub_683CD0(int a1) { sub_5C4DE0(a1 - 136); } //----- (00683CDB) -------------------------------------------------------- void __usercall sub_683CDB(int a1) { sub_5C4DE0(a1 - 136); } //----- (00683CE6) -------------------------------------------------------- int __cdecl sub_683CE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683D10) -------------------------------------------------------- void __usercall sub_683D10(int a1) { sub_4A20A0(*(_DWORD *)(a1 - 20)); } //----- (00683D18) -------------------------------------------------------- int __cdecl sub_683D18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683D40) -------------------------------------------------------- void __usercall sub_683D40(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6BE59C; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6BE59C: using guessed type int (__thiscall *off_6BE59C)(void *, char); //----- (00683D48) -------------------------------------------------------- int __cdecl sub_683D48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683D70) -------------------------------------------------------- int __usercall sub_683D70(int a1) { return sub_4026F0((int *)(a1 - 276)); } //----- (00683D7B) -------------------------------------------------------- int __cdecl sub_683D7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 74)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683DB0) -------------------------------------------------------- int __usercall sub_683DB0(int a1) { return _LN21(*(void **)(a1 - 16), 0x10u, 50, nullsub_2); } //----- (00683DC3) -------------------------------------------------------- int __cdecl sub_683DC3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683DE0) -------------------------------------------------------- void __usercall sub_683DE0(int a1) { operator delete(*(void **)(a1 - 404)); } //----- (00683DEE) -------------------------------------------------------- int __cdecl sub_683DEE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 101)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683E20) -------------------------------------------------------- int __usercall sub_683E20(int a1) { return sub_4026F0((int *)(a1 - 788)); } //----- (00683E2B) -------------------------------------------------------- int __cdecl sub_683E2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 196)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683E60) -------------------------------------------------------- int __usercall sub_683E60(int a1) { return sub_4026F0((int *)(a1 - 104)); } //----- (00683E68) -------------------------------------------------------- int __cdecl sub_683E68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683EC0) -------------------------------------------------------- int __usercall sub_683EC0(int a1) { return sub_4026F0((int *)(a1 - 596)); } //----- (00683ECB) -------------------------------------------------------- int __cdecl sub_683ECB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 149)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683F00) -------------------------------------------------------- void __cdecl sub_683F00() { JUMPOUT(loc_4B1470); } // 4B1470: using guessed type int loc_4B1470(); //----- (00683F08) -------------------------------------------------------- int __cdecl sub_683F08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683F30) -------------------------------------------------------- void __usercall sub_683F30(int a1) { *(_DWORD *)(a1 - 20) = &off_6BE5F4; } // 6BE5F4: using guessed type int (__stdcall *off_6BE5F4)(int, int); //----- (00683F38) -------------------------------------------------------- int __cdecl sub_683F38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683F60) -------------------------------------------------------- void __cdecl sub_683F60() { JUMPOUT(loc_4B0AE0); } // 4B0AE0: using guessed type int loc_4B0AE0(); //----- (00683F68) -------------------------------------------------------- int __usercall sub_683F68(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 24) + 24), 0x64u, 64, nullsub_2); } //----- (00683F7E) -------------------------------------------------------- int __cdecl sub_683F7E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683FA0) -------------------------------------------------------- int __usercall sub_683FA0(int a1) { return _LN21(*(void **)(a1 - 20), 0x19B8u, 4096, (void (__thiscall *)(void *))sub_4B1330); } //----- (00683FB9) -------------------------------------------------------- int __cdecl sub_683FB9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00683FE0) -------------------------------------------------------- int __usercall sub_683FE0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00683FE8) -------------------------------------------------------- void __cdecl sub_683FE8() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (00683FF0) -------------------------------------------------------- int __cdecl sub_683FF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684010) -------------------------------------------------------- int __usercall sub_684010(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00684018) -------------------------------------------------------- void __cdecl sub_684018() { JUMPOUT(loc_4A3BA0); } // 4A3BA0: using guessed type int loc_4A3BA0(); //----- (00684020) -------------------------------------------------------- int __cdecl sub_684020(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684040) -------------------------------------------------------- int __cdecl sub_684040(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684060) -------------------------------------------------------- int __cdecl sub_684060(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684080) -------------------------------------------------------- int __usercall sub_684080(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00684088) -------------------------------------------------------- int __usercall sub_684088(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (00684090) -------------------------------------------------------- int __cdecl sub_684090(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006840B0) -------------------------------------------------------- void __usercall sub_6840B0(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (006840C1) -------------------------------------------------------- int __cdecl sub_6840C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006840E0) -------------------------------------------------------- int __cdecl sub_6840E0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684100) -------------------------------------------------------- int __usercall sub_684100(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00684130) -------------------------------------------------------- int __usercall sub_684130(int a1) { return sub_4026F0((int *)(a1 - 492)); } //----- (0068413B) -------------------------------------------------------- void __usercall sub_68413B(int a1) { operator delete(*(void **)(a1 - 468)); } //----- (00684149) -------------------------------------------------------- void __usercall sub_684149(int a1) { void *v1; // esi@1 v1 = *(void **)(a1 - 488); if ( *(_DWORD *)(a1 - 488) ) { sub_643080(*(void **)(a1 - 488)); operator delete(v1); } } //----- (00684154) -------------------------------------------------------- int __cdecl sub_684154(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 124)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684180) -------------------------------------------------------- void __usercall sub_684180(int a1) { *(_DWORD *)(a1 - 20) = &off_6A8710; } // 6A8710: using guessed type int (__stdcall *off_6A8710)(int, int); //----- (00684188) -------------------------------------------------------- int __cdecl sub_684188(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006841B0) -------------------------------------------------------- int __usercall sub_6841B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006841B8) -------------------------------------------------------- void __cdecl sub_6841B8() { JUMPOUT(loc_4B62F0); } // 4B62F0: using guessed type int loc_4B62F0(); //----- (006841E0) -------------------------------------------------------- void __usercall sub_6841E0(int a1) { sub_4B6110(*(_DWORD *)(a1 - 16)); } //----- (006841E8) -------------------------------------------------------- int __cdecl sub_6841E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684210) -------------------------------------------------------- int __cdecl sub_684210(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684230) -------------------------------------------------------- int __usercall sub_684230(int a1) { return sub_4026F0((int *)(a1 - 60)); } //----- (00684238) -------------------------------------------------------- int __cdecl sub_684238(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 14)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684260) -------------------------------------------------------- void __usercall sub_684260(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (00684271) -------------------------------------------------------- int __cdecl sub_684271(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684290) -------------------------------------------------------- void __usercall sub_684290(int a1) { sub_643080((void *)(a1 - 67880)); } //----- (0068429B) -------------------------------------------------------- void __usercall sub_68429B(int a1) { sub_424190((void **)(a1 - 212)); } //----- (006842A6) -------------------------------------------------------- int __cdecl sub_6842A6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16976)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006842D0) -------------------------------------------------------- void __usercall sub_6842D0(int a1) { sub_643080((void *)(a1 - 67704)); } //----- (006842DB) -------------------------------------------------------- int __cdecl sub_6842DB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16930)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684310) -------------------------------------------------------- void __cdecl sub_684310() { sub_424190(&dword_D9FB808); } //----- (0068431A) -------------------------------------------------------- int __cdecl sub_68431A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684340) -------------------------------------------------------- void __cdecl sub_684340() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068434A) -------------------------------------------------------- int __cdecl sub_68434A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684370) -------------------------------------------------------- void __usercall sub_684370(int a1) { sub_4B8080(*(void **)(a1 - 16)); } //----- (00684378) -------------------------------------------------------- void __usercall sub_684378(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00684383) -------------------------------------------------------- void __usercall sub_684383(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0068438E) -------------------------------------------------------- int __cdecl sub_68438E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006843B0) -------------------------------------------------------- void __usercall sub_6843B0(int a1) { sub_4B8080(*(void **)(a1 - 16)); } //----- (006843B8) -------------------------------------------------------- int __cdecl sub_6843B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006843E0) -------------------------------------------------------- int __usercall sub_6843E0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006843E8) -------------------------------------------------------- void __usercall sub_6843E8(int a1) { sub_461490((void *)(a1 - 40)); } //----- (006843F0) -------------------------------------------------------- int __cdecl sub_6843F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684410) -------------------------------------------------------- int __usercall sub_684410(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (00684418) -------------------------------------------------------- int __cdecl sub_684418(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684440) -------------------------------------------------------- int __usercall sub_684440(int a1) { return sub_4026F0((int *)(a1 - 52)); } //----- (00684470) -------------------------------------------------------- int __cdecl sub_684470(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684490) -------------------------------------------------------- int __cdecl sub_684490(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006844B0) -------------------------------------------------------- int __usercall sub_6844B0(int a1) { return sub_4026F0((int *)(a1 - 48)); } //----- (006844B8) -------------------------------------------------------- int __usercall sub_6844B8(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006844C0) -------------------------------------------------------- int __usercall sub_6844C0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (006844C8) -------------------------------------------------------- int __cdecl sub_6844C8() { int result; // eax@1 result = dword_D9FB828 & 0xFFFFFFFE; dword_D9FB828 &= 0xFFFFFFFEu; return result; } // D9FB828: using guessed type int dword_D9FB828; //----- (006844D6) -------------------------------------------------------- int __cdecl sub_6844D6() { void *v0; // esi@1 void *v1; // edi@2 int result; // eax@5 v0 = dword_D9FB818; if ( dword_D9FB818 ) { v1 = *(&dword_D9FB818 + 1); if ( dword_D9FB818 != v1 ) { do { nullsub_2(v0); v0 = (char *)v0 + 12; } while ( v0 != v1 ); } operator delete(dword_D9FB818); } result = 0; dword_D9FB818 = 0; *(&dword_D9FB818 + 1) = 0; *(&dword_D9FB818 + 2) = 0; return result; } //----- (006844E0) -------------------------------------------------------- int __usercall sub_6844E0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (006844E8) -------------------------------------------------------- int __usercall sub_6844E8(int a1) { return sub_4026F0((int *)(a1 + 8)); } //----- (006844F0) -------------------------------------------------------- int __cdecl sub_6844F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684510) -------------------------------------------------------- void __cdecl sub_684510() { sub_424190(&dword_D9FB83C); } //----- (0068451A) -------------------------------------------------------- int __cdecl sub_68451A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684540) -------------------------------------------------------- void __usercall sub_684540(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6C023C; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6C023C: using guessed type int (__thiscall *off_6C023C)(void *, char); //----- (00684548) -------------------------------------------------------- int __cdecl sub_684548(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684570) -------------------------------------------------------- void __usercall sub_684570(int a1) { sub_4BC9B0(*(void **)(a1 - 16)); } //----- (00684578) -------------------------------------------------------- int __cdecl sub_684578(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006845A0) -------------------------------------------------------- void __cdecl sub_6845A0() { JUMPOUT(loc_4AB200); } // 4AB200: using guessed type int loc_4AB200(); //----- (006845A8) -------------------------------------------------------- int __cdecl sub_6845A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006845D0) -------------------------------------------------------- void __cdecl sub_6845D0() { JUMPOUT(loc_4AB200); } // 4AB200: using guessed type int loc_4AB200(); //----- (006845D8) -------------------------------------------------------- int __cdecl sub_6845D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684600) -------------------------------------------------------- void __cdecl sub_684600() { JUMPOUT(loc_4BCA20); } // 4BCA20: using guessed type int loc_4BCA20(); //----- (00684608) -------------------------------------------------------- int __cdecl sub_684608(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684630) -------------------------------------------------------- int __usercall sub_684630(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00684660) -------------------------------------------------------- int __usercall sub_684660(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00684690) -------------------------------------------------------- void __usercall sub_684690(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_6C05D0; sub_639940(v1); } // 6C05D0: using guessed type int (__thiscall *off_6C05D0)(void *, char); //----- (00684698) -------------------------------------------------------- void __usercall sub_684698(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 116; *(_DWORD *)v1 = &off_6C05D8; sub_639940(v1); } // 6C05D8: using guessed type int (__thiscall *off_6C05D8)(void *, char); //----- (006846A3) -------------------------------------------------------- void __usercall sub_6846A3(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 280; *(_DWORD *)v1 = &off_6C05E0; sub_639940(v1); } // 6C05E0: using guessed type int (__thiscall *off_6C05E0)(void *, char); //----- (006846B1) -------------------------------------------------------- void __usercall sub_6846B1(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 420; *(_DWORD *)v1 = &off_6C05E8; sub_639940(v1); } // 6C05E8: using guessed type int (__thiscall *off_6C05E8)(void *, char); //----- (006846BF) -------------------------------------------------------- int __cdecl sub_6846BF(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006846E0) -------------------------------------------------------- void __cdecl sub_6846E0() { JUMPOUT(loc_4BE8B0); } // 4BE8B0: using guessed type int loc_4BE8B0(); //----- (006846E8) -------------------------------------------------------- void __cdecl sub_6846E8() { JUMPOUT(loc_4BE970); } // 4BE970: using guessed type int loc_4BE970(); //----- (006846F3) -------------------------------------------------------- void __cdecl sub_6846F3() { JUMPOUT(loc_4BEA30); } // 4BEA30: using guessed type int loc_4BEA30(); //----- (00684701) -------------------------------------------------------- void __cdecl sub_684701() { JUMPOUT(loc_4BEAF0); } // 4BEAF0: using guessed type int loc_4BEAF0(); //----- (0068470F) -------------------------------------------------------- int __cdecl sub_68470F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684730) -------------------------------------------------------- void __usercall sub_684730(int a1) { sub_4BED90(*(void **)(a1 - 16)); } //----- (00684738) -------------------------------------------------------- void __usercall sub_684738(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 684)); } //----- (00684746) -------------------------------------------------------- int __cdecl sub_684746(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684770) -------------------------------------------------------- void __usercall sub_684770(int a1) { sub_6530A4(*(void **)(a1 - 32)); } //----- (0068477B) -------------------------------------------------------- int __cdecl sub_68477B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006847A0) -------------------------------------------------------- void __usercall sub_6847A0(int a1) { sub_4BED90(*(void **)(a1 - 16)); } //----- (006847A8) -------------------------------------------------------- void __usercall sub_6847A8(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 684)); } //----- (006847B6) -------------------------------------------------------- void __usercall sub_6847B6(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 1712)); } //----- (006847C4) -------------------------------------------------------- int __cdecl sub_6847C4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006847E0) -------------------------------------------------------- void __usercall sub_6847E0(int a1) { sub_626C10(*(_DWORD *)(a1 - 16)); } //----- (006847E8) -------------------------------------------------------- void __usercall sub_6847E8(int a1) { sub_626C10(*(_DWORD *)(a1 - 16) + 64); } //----- (006847F3) -------------------------------------------------------- void __usercall sub_6847F3(int a1) { sub_626C10(*(_DWORD *)(a1 - 16) + 128); } //----- (00684801) -------------------------------------------------------- int __cdecl sub_684801(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684820) -------------------------------------------------------- int __cdecl sub_684820(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 48)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684840) -------------------------------------------------------- void __usercall sub_684840(int a1) { *(_DWORD *)(a1 - 292) = &off_6C0ADC; sub_639940(a1 - 292); } // 6C0ADC: using guessed type int (__thiscall *off_6C0ADC)(void *, char); //----- (0068484B) -------------------------------------------------------- int __cdecl sub_68484B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 120)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684880) -------------------------------------------------------- int __usercall sub_684880(int a1) { return sub_4026F0((int *)(a1 - 504)); } //----- (0068488B) -------------------------------------------------------- int __cdecl sub_68488B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 127)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006848C0) -------------------------------------------------------- int __usercall sub_6848C0(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (006848C8) -------------------------------------------------------- int __cdecl sub_6848C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006848F0) -------------------------------------------------------- int __usercall sub_6848F0(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (006848FB) -------------------------------------------------------- void __usercall sub_6848FB(int a1) { sub_5D4580((void *)(a1 - 304)); } //----- (00684906) -------------------------------------------------------- void __usercall sub_684906(int a1) { sub_5D4580((void *)(a1 - 328)); } //----- (00684911) -------------------------------------------------------- int __cdecl sub_684911(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 83)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684940) -------------------------------------------------------- void __usercall sub_684940(int a1) { operator delete(*(void **)(a1 - 148)); } //----- (0068494E) -------------------------------------------------------- void __usercall sub_68494E(int a1) { sub_643080(*(void **)(a1 - 148)); } //----- (00684959) -------------------------------------------------------- int __cdecl sub_684959(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684990) -------------------------------------------------------- int __usercall sub_684990(int a1) { return sub_4026F0((int *)(a1 - 252)); } //----- (0068499B) -------------------------------------------------------- int __cdecl sub_68499B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 64)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006849D0) -------------------------------------------------------- int __usercall sub_6849D0(int a1) { return sub_4026F0((int *)(a1 - 120)); } //----- (006849D8) -------------------------------------------------------- int __cdecl sub_6849D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684A00) -------------------------------------------------------- int __usercall sub_684A00(int a1) { return sub_4026F0((int *)(a1 - 76)); } //----- (00684A08) -------------------------------------------------------- int __cdecl sub_684A08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684A30) -------------------------------------------------------- void __usercall sub_684A30(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6C1EB4; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6C1EB4: using guessed type int (__thiscall *off_6C1EB4)(void *, char); //----- (00684A38) -------------------------------------------------------- int __cdecl sub_684A38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684A60) -------------------------------------------------------- void __usercall sub_684A60(int a1) { *(_DWORD *)(a1 - 20) = &off_6C1ED8; } // 6C1ED8: using guessed type int (__stdcall *off_6C1ED8)(int, int); //----- (00684A68) -------------------------------------------------------- int __cdecl sub_684A68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684A90) -------------------------------------------------------- void __cdecl sub_684A90() { JUMPOUT(loc_4C7340); } // 4C7340: using guessed type int loc_4C7340(); //----- (00684A98) -------------------------------------------------------- int __cdecl sub_684A98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684AC0) -------------------------------------------------------- void __cdecl sub_684AC0() { JUMPOUT(loc_4C7340); } // 4C7340: using guessed type int loc_4C7340(); //----- (00684ACA) -------------------------------------------------------- int __cdecl sub_684ACA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684AF0) -------------------------------------------------------- int __usercall sub_684AF0(int a1) { return sub_4026F0((int *)(a1 - 320)); } //----- (00684AFB) -------------------------------------------------------- int __cdecl sub_684AFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 81)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684B30) -------------------------------------------------------- int __usercall sub_684B30(int a1) { return sub_4026F0((int *)(a1 - 112)); } //----- (00684B38) -------------------------------------------------------- void __usercall sub_684B38(int a1) { sub_43BB10((void *)(a1 - 100)); } //----- (00684B40) -------------------------------------------------------- int __cdecl sub_684B40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684B70) -------------------------------------------------------- int __usercall sub_684B70(int a1) { return sub_4026F0((int *)(a1 - 276)); } //----- (00684B7B) -------------------------------------------------------- int __cdecl sub_684B7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 68)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684BB0) -------------------------------------------------------- int __usercall sub_684BB0(int a1) { return sub_4026F0((int *)(a1 - 48)); } //----- (00684BB8) -------------------------------------------------------- int __cdecl sub_684BB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684BE0) -------------------------------------------------------- void __usercall sub_684BE0(int a1) { *(_DWORD *)(a1 - 28) = &off_6C35EC; } // 6C35EC: using guessed type int (__stdcall *off_6C35EC)(int, int); //----- (00684BE8) -------------------------------------------------------- int __cdecl sub_684BE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684C10) -------------------------------------------------------- void __cdecl sub_684C10() { JUMPOUT(loc_4CD910); } // 4CD910: using guessed type int loc_4CD910(); //----- (00684C18) -------------------------------------------------------- int __cdecl sub_684C18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684C40) -------------------------------------------------------- void __usercall sub_684C40(int a1) { *(_DWORD *)(a1 - 20) = &off_6C35E4; } // 6C35E4: using guessed type int (__stdcall *off_6C35E4)(int, int); //----- (00684C48) -------------------------------------------------------- int __cdecl sub_684C48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684C70) -------------------------------------------------------- void __usercall sub_684C70(int a1) { **(_DWORD **)(a1 - 20) = &off_6C357C; } // 6C357C: using guessed type int (__thiscall *off_6C357C)(void *, char); //----- (00684C78) -------------------------------------------------------- int __cdecl sub_684C78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684CA0) -------------------------------------------------------- void __usercall sub_684CA0(int a1) { sub_424190((void **)(a1 - 72)); } //----- (00684CA8) -------------------------------------------------------- int __cdecl sub_684CA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684CD0) -------------------------------------------------------- void __usercall sub_684CD0(int a1) { sub_626C10(a1 - 208); } //----- (00684CDB) -------------------------------------------------------- void __usercall sub_684CDB(int a1) { sub_626C10(a1 - 464); } //----- (00684CE6) -------------------------------------------------------- void __usercall sub_684CE6(int a1) { sub_626C10(a1 - 400); } //----- (00684CF1) -------------------------------------------------------- void __usercall sub_684CF1(int a1) { sub_626C10(a1 - 272); } //----- (00684CFC) -------------------------------------------------------- void __usercall sub_684CFC(int a1) { sub_626C10(a1 - 144); } //----- (00684D07) -------------------------------------------------------- void __usercall sub_684D07(int a1) { sub_626C10(a1 - 80); } //----- (00684D0F) -------------------------------------------------------- void __usercall sub_684D0F(int a1) { sub_626C10(a1 - 336); } //----- (00684D1A) -------------------------------------------------------- int __cdecl sub_684D1A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 121)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684D50) -------------------------------------------------------- int __usercall sub_684D50(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 552); if ( *(_DWORD *)(a1 - 552) ) result = fclose(*(FILE **)(a1 - 552)); return result; } //----- (00684D5B) -------------------------------------------------------- int __cdecl sub_684D5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 137)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684D90) -------------------------------------------------------- void __usercall sub_684D90(int a1) { **(_DWORD **)(a1 - 16) = &off_6C59A8; } // 6C59A8: using guessed type int (*off_6C59A8)(); //----- (00684D98) -------------------------------------------------------- int __cdecl sub_684D98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684DC0) -------------------------------------------------------- void __cdecl sub_684DC0() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684DC8) -------------------------------------------------------- void __usercall sub_684DC8(int a1) { sub_4D71C0(*(_DWORD *)(a1 - 16) + 4); } //----- (00684DD3) -------------------------------------------------------- void __cdecl sub_684DD3() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684DDE) -------------------------------------------------------- void __cdecl sub_684DDE() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684DE6) -------------------------------------------------------- int __cdecl sub_684DE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684E10) -------------------------------------------------------- void __cdecl sub_684E10() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684E18) -------------------------------------------------------- void __usercall sub_684E18(int a1) { sub_4D7270(*(_DWORD *)(a1 - 16) + 4); } //----- (00684E23) -------------------------------------------------------- void __cdecl sub_684E23() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684E31) -------------------------------------------------------- int __cdecl sub_684E31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684E50) -------------------------------------------------------- int __usercall sub_684E50(int a1) { return std::_Mutex::__Mutex(*(_DWORD *)(a1 - 20) + 4); } // 65208B: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); //----- (00684E5B) -------------------------------------------------------- int __cdecl sub_684E5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684E80) -------------------------------------------------------- int __cdecl sub_684E80(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684EA0) -------------------------------------------------------- int __usercall sub_684EA0(int a1) { return std::_Lockit::__Lockit(*(_DWORD *)(a1 - 16)); } // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00684EA8) -------------------------------------------------------- void __usercall sub_684EA8(int a1) { void **v1; // esi@1 void **v2; // ecx@1 v2 = (void **)(*(_DWORD *)(a1 - 16) + 4); v1 = v2; if ( *v2 ) free(*v2); *v1 = 0; } //----- (00684EB3) -------------------------------------------------------- void __cdecl sub_684EB3() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684EBE) -------------------------------------------------------- void __cdecl sub_684EBE() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684EC9) -------------------------------------------------------- void __cdecl sub_684EC9() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684ED4) -------------------------------------------------------- int __cdecl sub_684ED4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684EF0) -------------------------------------------------------- int __usercall sub_684EF0(int a1) { return std::_Lockit::__Lockit(*(_DWORD *)(a1 - 16)); } // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00684EF8) -------------------------------------------------------- void __cdecl sub_684EF8() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684F03) -------------------------------------------------------- void __cdecl sub_684F03() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684F0E) -------------------------------------------------------- void __cdecl sub_684F0E() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684F19) -------------------------------------------------------- void __cdecl sub_684F19() { JUMPOUT(loc_4D81F0); } // 4D81F0: using guessed type int loc_4D81F0(); //----- (00684F24) -------------------------------------------------------- int __cdecl sub_684F24(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684F40) -------------------------------------------------------- void __usercall sub_684F40(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00684F4B) -------------------------------------------------------- int __cdecl sub_684F4B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684F70) -------------------------------------------------------- int __usercall sub_684F70(int a1) { int result; // eax@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16) - 72; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 - 16) - 96) + 4) + *(_DWORD *)(a1 - 16) - 72 - 24) = &off_6C5C1C; *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 - 8) + 4) + v2 - 8) = &off_6C5C0C; result = *(_DWORD *)(v2 - 24); *(_DWORD *)(*(_DWORD *)(result + 4) + v2 - 24) = &off_6C5C14; return result; } // 6C5C0C: using guessed type int (__stdcall *off_6C5C0C)(char); // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); // 6C5C1C: using guessed type int (__stdcall *off_6C5C1C)(char); //----- (00684F7B) -------------------------------------------------------- int __cdecl sub_684F7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00684FE0) -------------------------------------------------------- void __cdecl sub_684FE0() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684FE8) -------------------------------------------------------- void __usercall sub_684FE8(int a1) { sub_4DA1A0(*(_DWORD *)(a1 - 20) + 36); } //----- (00684FF3) -------------------------------------------------------- void __cdecl sub_684FF3() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00684FFB) -------------------------------------------------------- int __cdecl sub_684FFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685020) -------------------------------------------------------- void __usercall sub_685020(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068502B) -------------------------------------------------------- void __cdecl sub_68502B() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00685033) -------------------------------------------------------- int __usercall sub_685033(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 4), 0xCu, 64, (void (__thiscall *)(void *))sub_4DA1A0); } //----- (00685049) -------------------------------------------------------- int __cdecl sub_685049(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685070) -------------------------------------------------------- int __cdecl sub_685070(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006850C0) -------------------------------------------------------- void __usercall sub_6850C0(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (006850CB) -------------------------------------------------------- int __usercall sub_6850CB(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 16) & 1; if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; result = sub_4D9130((void *)(a1 - 56)); } return result; } //----- (006850E4) -------------------------------------------------------- void __usercall sub_6850E4(int a1) { **(_DWORD **)(a1 - 20) = &off_6C5998; } // 6C5998: using guessed type int (__thiscall *off_6C5998)(void *, char); //----- (00685110) -------------------------------------------------------- void __usercall sub_685110(int a1) { *(_DWORD *)(a1 - 20) = &off_6C5C2C; } // 6C5C2C: using guessed type int (__stdcall *off_6C5C2C)(int, int); //----- (00685118) -------------------------------------------------------- int __cdecl sub_685118(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685140) -------------------------------------------------------- void __usercall sub_685140(int a1) { *(_DWORD *)(a1 - 20) = &off_6C5C34; } // 6C5C34: using guessed type int (__stdcall *off_6C5C34)(int, int); //----- (00685148) -------------------------------------------------------- int __cdecl sub_685148(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685170) -------------------------------------------------------- int __usercall sub_685170(int a1) { int result; // eax@1 result = *(_DWORD *)(*(_DWORD *)(***(_DWORD ***)(a1 - 16) + 4) + **(_DWORD **)(a1 - 16) + 56); if ( result ) result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)result + 8))(result); return result; } //----- (00685178) -------------------------------------------------------- int __cdecl sub_685178(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006851A0) -------------------------------------------------------- void __cdecl sub_6851A0() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (006851A8) -------------------------------------------------------- int __usercall sub_6851A8(int a1) { return sub_4DCBE0((void *)(a1 - 36)); } //----- (006851E0) -------------------------------------------------------- void __cdecl sub_6851E0() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (006851E8) -------------------------------------------------------- int __usercall sub_6851E8(int a1) { return sub_4DCBE0((void *)(a1 - 40)); } //----- (006851F0) -------------------------------------------------------- void __cdecl sub_6851F0() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (006851F8) -------------------------------------------------------- int __cdecl sub_6851F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685220) -------------------------------------------------------- void __cdecl sub_685220() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00685228) -------------------------------------------------------- void __cdecl sub_685228() { JUMPOUT(loc_4D5A40); } // 4D5A40: using guessed type int loc_4D5A40(); //----- (00685233) -------------------------------------------------------- void __usercall sub_685233(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (0068523E) -------------------------------------------------------- void __usercall sub_68523E(int a1) { sub_6530A4(*(void **)(a1 - 24)); } //----- (00685270) -------------------------------------------------------- void __usercall sub_685270(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068527B) -------------------------------------------------------- int __cdecl sub_68527B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006852A0) -------------------------------------------------------- void __usercall sub_6852A0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006852AB) -------------------------------------------------------- void __cdecl sub_6852AB() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (006852B3) -------------------------------------------------------- int __cdecl sub_6852B3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006852D0) -------------------------------------------------------- void __usercall sub_6852D0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006852DB) -------------------------------------------------------- void __cdecl sub_6852DB() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (006852E3) -------------------------------------------------------- void __usercall sub_6852E3(int a1) { sub_4D73C0((void *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (006852EE) -------------------------------------------------------- int __cdecl sub_6852EE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685310) -------------------------------------------------------- void __usercall sub_685310(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (0068531E) -------------------------------------------------------- void __usercall sub_68531E(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (0068532C) -------------------------------------------------------- int __cdecl sub_68532C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 70)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685360) -------------------------------------------------------- void __usercall sub_685360(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068536B) -------------------------------------------------------- void __usercall sub_68536B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685376) -------------------------------------------------------- void __cdecl sub_685376() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (0068537E) -------------------------------------------------------- int __usercall sub_68537E(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 4), 0xCu, 64, (void (__thiscall *)(void *))sub_4DA1A0); } //----- (00685394) -------------------------------------------------------- void __usercall sub_685394(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068539F) -------------------------------------------------------- void __cdecl sub_68539F() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (006853A7) -------------------------------------------------------- void __usercall sub_6853A7(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006853B2) -------------------------------------------------------- void __cdecl sub_6853B2() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (006853BA) -------------------------------------------------------- void __usercall sub_6853BA(int a1) { sub_4D73C0((void *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (006853D0) -------------------------------------------------------- void __usercall sub_6853D0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006853DB) -------------------------------------------------------- void __usercall sub_6853DB(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006853E6) -------------------------------------------------------- void __usercall sub_6853E6(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006853F1) -------------------------------------------------------- void __usercall sub_6853F1(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685407) -------------------------------------------------------- void __usercall sub_685407(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685412) -------------------------------------------------------- void __usercall sub_685412(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068541D) -------------------------------------------------------- void __usercall sub_68541D(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685428) -------------------------------------------------------- void __usercall sub_685428(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068543E) -------------------------------------------------------- void __usercall sub_68543E(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685449) -------------------------------------------------------- void __usercall sub_685449(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685454) -------------------------------------------------------- void __usercall sub_685454(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068545F) -------------------------------------------------------- void __usercall sub_68545F(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685475) -------------------------------------------------------- void __usercall sub_685475(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685480) -------------------------------------------------------- void __usercall sub_685480(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068548B) -------------------------------------------------------- void __usercall sub_68548B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685496) -------------------------------------------------------- void __usercall sub_685496(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854AC) -------------------------------------------------------- void __usercall sub_6854AC(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854B7) -------------------------------------------------------- void __usercall sub_6854B7(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854C2) -------------------------------------------------------- void __usercall sub_6854C2(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854CD) -------------------------------------------------------- void __usercall sub_6854CD(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854E3) -------------------------------------------------------- void __usercall sub_6854E3(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854EE) -------------------------------------------------------- void __usercall sub_6854EE(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006854F9) -------------------------------------------------------- void __usercall sub_6854F9(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685504) -------------------------------------------------------- void __usercall sub_685504(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068551A) -------------------------------------------------------- void __usercall sub_68551A(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685525) -------------------------------------------------------- void __usercall sub_685525(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685530) -------------------------------------------------------- void __usercall sub_685530(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068553B) -------------------------------------------------------- void __usercall sub_68553B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685551) -------------------------------------------------------- void __usercall sub_685551(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068555C) -------------------------------------------------------- void __usercall sub_68555C(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685567) -------------------------------------------------------- void __usercall sub_685567(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685572) -------------------------------------------------------- void __usercall sub_685572(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685588) -------------------------------------------------------- void __usercall sub_685588(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685593) -------------------------------------------------------- void __usercall sub_685593(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068559E) -------------------------------------------------------- void __usercall sub_68559E(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006855A9) -------------------------------------------------------- void __usercall sub_6855A9(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006855BF) -------------------------------------------------------- void __usercall sub_6855BF(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006855CA) -------------------------------------------------------- void __usercall sub_6855CA(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006855D5) -------------------------------------------------------- void __usercall sub_6855D5(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006855E0) -------------------------------------------------------- void __usercall sub_6855E0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006855F6) -------------------------------------------------------- void __usercall sub_6855F6(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685601) -------------------------------------------------------- void __usercall sub_685601(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068560C) -------------------------------------------------------- void __usercall sub_68560C(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685617) -------------------------------------------------------- void __usercall sub_685617(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068562D) -------------------------------------------------------- void __usercall sub_68562D(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685638) -------------------------------------------------------- void __usercall sub_685638(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685643) -------------------------------------------------------- void __usercall sub_685643(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068564E) -------------------------------------------------------- void __usercall sub_68564E(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685664) -------------------------------------------------------- void __usercall sub_685664(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068566F) -------------------------------------------------------- void __usercall sub_68566F(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068567A) -------------------------------------------------------- void __usercall sub_68567A(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685685) -------------------------------------------------------- void __usercall sub_685685(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068569B) -------------------------------------------------------- void __usercall sub_68569B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856A6) -------------------------------------------------------- void __usercall sub_6856A6(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856B1) -------------------------------------------------------- void __usercall sub_6856B1(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856BC) -------------------------------------------------------- void __usercall sub_6856BC(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856D2) -------------------------------------------------------- void __usercall sub_6856D2(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856DD) -------------------------------------------------------- void __usercall sub_6856DD(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856E8) -------------------------------------------------------- void __usercall sub_6856E8(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006856F3) -------------------------------------------------------- void __usercall sub_6856F3(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685709) -------------------------------------------------------- void __usercall sub_685709(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685714) -------------------------------------------------------- void __usercall sub_685714(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068571F) -------------------------------------------------------- void __usercall sub_68571F(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068572A) -------------------------------------------------------- void __usercall sub_68572A(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685740) -------------------------------------------------------- void __usercall sub_685740(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068574B) -------------------------------------------------------- void __usercall sub_68574B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685756) -------------------------------------------------------- void __usercall sub_685756(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685780) -------------------------------------------------------- void __cdecl sub_685780() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (00685788) -------------------------------------------------------- int __usercall sub_685788(int a1) { return sub_4DCBE0((void *)(a1 - 44)); } //----- (00685790) -------------------------------------------------------- void __usercall sub_685790(int a1) { sub_4D5600((void *)(a1 - 28)); } //----- (00685798) -------------------------------------------------------- void __cdecl sub_685798() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (006857C0) -------------------------------------------------------- void __usercall sub_6857C0(int a1) { sub_4D5600((void *)(a1 - 112)); } //----- (006857C8) -------------------------------------------------------- void __usercall sub_6857C8(int a1) { sub_610240(a1 - 72); } //----- (006857D0) -------------------------------------------------------- void __usercall sub_6857D0(int a1) { sub_610240(a1 - 44); } //----- (006857D8) -------------------------------------------------------- int __cdecl sub_6857D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 34)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685800) -------------------------------------------------------- void __usercall sub_685800(int a1) { sub_4D5600((void *)(a1 - 64)); } //----- (00685808) -------------------------------------------------------- void __usercall sub_685808(int a1) { sub_610240(a1 - 44); } //----- (00685810) -------------------------------------------------------- int __cdecl sub_685810(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 22)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685840) -------------------------------------------------------- void __usercall sub_685840(int a1) { sub_6530A4(*(void **)(a1 + 8)); } //----- (0068584B) -------------------------------------------------------- int __cdecl sub_68584B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685870) -------------------------------------------------------- void __cdecl sub_685870() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (00685878) -------------------------------------------------------- void __usercall sub_685878(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (00685883) -------------------------------------------------------- void __usercall sub_685883(int a1) { sub_6530A4(*(void **)(a1 - 24)); } //----- (006858C0) -------------------------------------------------------- void __cdecl sub_6858C0() { JUMPOUT(loc_4D5990); } // 4D5990: using guessed type int loc_4D5990(); //----- (006858C8) -------------------------------------------------------- int __cdecl sub_6858C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006858F0) -------------------------------------------------------- void __usercall sub_6858F0(int a1) { sub_4D5600((void *)(a1 - 88)); } //----- (006858F8) -------------------------------------------------------- void __usercall sub_6858F8(int a1) { sub_610240(a1 - 44); } //----- (00685900) -------------------------------------------------------- void __usercall sub_685900(int a1) { sub_610240(a1 - 72); } //----- (00685908) -------------------------------------------------------- void __usercall sub_685908(int a1) { sub_610240(a1 - 72); } //----- (00685910) -------------------------------------------------------- int __cdecl sub_685910(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685940) -------------------------------------------------------- void __usercall sub_685940(int a1) { sub_610240(a1 - 44); } //----- (00685948) -------------------------------------------------------- void __usercall sub_685948(int a1) { sub_610240(a1 - 44); } //----- (00685950) -------------------------------------------------------- void __usercall sub_685950(int a1) { sub_610240(a1 - 72); } //----- (00685958) -------------------------------------------------------- int __cdecl sub_685958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685980) -------------------------------------------------------- int __usercall sub_685980(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 48) & 1; if ( *(_DWORD *)(a1 - 48) & 1 ) { *(_DWORD *)(a1 - 48) &= 0xFFFFFFFEu; *(_DWORD *)(a1 - 124) = &off_6C59A0; result = std::ios_base::_Ios_base_dtor(a1 - 124); } return result; } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); //----- (00685999) -------------------------------------------------------- int __usercall sub_685999(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 220); *(_DWORD *)(*(_DWORD *)(result + 4) + a1 - 204 - 16) = &off_6C5C14; return result; } // 6C5C14: using guessed type int (__stdcall *off_6C5C14)(char); //----- (006859A4) -------------------------------------------------------- void __cdecl sub_6859A4() { JUMPOUT(loc_4D6260); } // 4D6260: using guessed type int loc_4D6260(); //----- (006859AF) -------------------------------------------------------- int __usercall sub_6859AF(int a1) { return sub_4D8210(*(_DWORD *)(a1 - 224)); } //----- (006859BA) -------------------------------------------------------- int __usercall sub_6859BA(int a1) { void *v1; // esi@1 v1 = (void *)(a1 - 220 + 96); sub_4D98A0(v1); *(_DWORD *)v1 = &off_6C59A0; return std::ios_base::_Ios_base_dtor(v1); } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); //----- (006859C5) -------------------------------------------------------- void __usercall sub_6859C5(int a1) { sub_610240(a1 - 44); } //----- (006859CD) -------------------------------------------------------- int __cdecl sub_6859CD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 57)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685A00) -------------------------------------------------------- int __usercall sub_685A00(int a1) { return sub_4026F0((int *)(a1 - 820)); } //----- (00685A0B) -------------------------------------------------------- void __usercall sub_685A0B(int a1) { nullsub_2((void *)(a1 - 540)); } //----- (00685A16) -------------------------------------------------------- void __usercall sub_685A16(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00685A21) -------------------------------------------------------- void __usercall sub_685A21(int a1) { nullsub_2((void *)(a1 - 796)); } //----- (00685A2C) -------------------------------------------------------- int __cdecl sub_685A2C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 206)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685A60) -------------------------------------------------------- int __usercall sub_685A60(int a1) { return sub_4026F0((int *)(a1 - 556)); } //----- (00685A6B) -------------------------------------------------------- void __usercall sub_685A6B(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00685A76) -------------------------------------------------------- void __usercall sub_685A76(int a1) { nullsub_2((void *)(a1 - 540)); } //----- (00685A81) -------------------------------------------------------- int __cdecl sub_685A81(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 140)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685AE0) -------------------------------------------------------- int __usercall sub_685AE0(int a1) { return sub_4026F0((int *)(a1 - 560)); } //----- (00685AEB) -------------------------------------------------------- void __usercall sub_685AEB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685AF6) -------------------------------------------------------- void __usercall sub_685AF6(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00685B01) -------------------------------------------------------- void __usercall sub_685B01(int a1) { sub_4E2170((void *)(a1 - 552)); } //----- (00685B0C) -------------------------------------------------------- void __usercall sub_685B0C(int a1) { sub_4E2170((void *)(a1 - 552)); } //----- (00685B17) -------------------------------------------------------- void __usercall sub_685B17(int a1) { sub_4E2170((void *)(a1 - 552)); } //----- (00685B22) -------------------------------------------------------- int __cdecl sub_685B22(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 141)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685B50) -------------------------------------------------------- int __usercall sub_685B50(int a1) { return sub_4026F0((int *)(a1 - 296)); } //----- (00685B5B) -------------------------------------------------------- void __usercall sub_685B5B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685B66) -------------------------------------------------------- void __usercall sub_685B66(int a1) { nullsub_2((void *)(a1 - 308)); } //----- (00685B71) -------------------------------------------------------- int __cdecl sub_685B71(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 78)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685BA0) -------------------------------------------------------- int __usercall sub_685BA0(int a1) { return sub_4026F0((int *)(a1 - 1076)); } //----- (00685BAB) -------------------------------------------------------- void __usercall sub_685BAB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685BB6) -------------------------------------------------------- void __usercall sub_685BB6(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00685BC1) -------------------------------------------------------- void __usercall sub_685BC1(int a1) { *(_DWORD *)(a1 - 1052) = &off_6C6284; sub_427EB0((void *)(a1 - 1052)); } // 6C6284: using guessed type int (__stdcall *off_6C6284)(int, int, int); //----- (00685BCC) -------------------------------------------------------- int __cdecl sub_685BCC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 270)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685C00) -------------------------------------------------------- int __usercall sub_685C00(int a1) { return sub_4026F0((int *)(a1 - 1560)); } //----- (00685C0B) -------------------------------------------------------- int __cdecl sub_685C0B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 391)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685C40) -------------------------------------------------------- int __usercall sub_685C40(int a1) { return sub_4026F0((int *)(a1 - 284)); } //----- (00685C4B) -------------------------------------------------------- void __usercall sub_685C4B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685C56) -------------------------------------------------------- int __cdecl sub_685C56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 72)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685C80) -------------------------------------------------------- int __usercall sub_685C80(int a1) { return sub_4026F0((int *)(a1 - 892)); } //----- (00685C8B) -------------------------------------------------------- void __usercall sub_685C8B(int a1) { nullsub_2((void *)(a1 - 368)); } //----- (00685C96) -------------------------------------------------------- void __usercall sub_685C96(int a1) { nullsub_2((void *)(a1 - 624)); } //----- (00685CA1) -------------------------------------------------------- void __usercall sub_685CA1(int a1) { nullsub_2((void *)(a1 - 880)); } //----- (00685CAC) -------------------------------------------------------- void __usercall sub_685CAC(int a1) { *(_DWORD *)(a1 - 112) = &off_6C627C; sub_427EB0((void *)(a1 - 112)); } // 6C627C: using guessed type int (__stdcall *off_6C627C)(int, int, int); //----- (00685CB4) -------------------------------------------------------- void __cdecl sub_685CB4() { JUMPOUT(loc_4E2250); } // 4E2250: using guessed type int loc_4E2250(); //----- (00685CBC) -------------------------------------------------------- void __cdecl sub_685CBC() { JUMPOUT(loc_4E2250); } // 4E2250: using guessed type int loc_4E2250(); //----- (00685CC4) -------------------------------------------------------- int __cdecl sub_685CC4(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 224)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685CF0) -------------------------------------------------------- int __usercall sub_685CF0(int a1) { return sub_4026F0((int *)(a1 - 7224)); } //----- (00685CFB) -------------------------------------------------------- void __usercall sub_685CFB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685D06) -------------------------------------------------------- void __usercall sub_685D06(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00685D11) -------------------------------------------------------- void __usercall sub_685D11(int a1) { sub_427EB0((void *)(a1 - 7208)); } //----- (00685D1C) -------------------------------------------------------- void __usercall sub_685D1C(int a1) { sub_4E47C0(a1 - 7208); } //----- (00685D27) -------------------------------------------------------- int __usercall sub_685D27(int a1) { return sub_428A70((void *)(a1 - 7236)); } //----- (00685D32) -------------------------------------------------------- void __usercall sub_685D32(int a1) { sub_427EB0((void *)(a1 - 7208)); } //----- (00685D3D) -------------------------------------------------------- int __cdecl sub_685D3D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1810)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685D70) -------------------------------------------------------- int __usercall sub_685D70(int a1) { return sub_4026F0((int *)(a1 - 7232)); } //----- (00685D7B) -------------------------------------------------------- void __usercall sub_685D7B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685D86) -------------------------------------------------------- void __usercall sub_685D86(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00685D91) -------------------------------------------------------- void __usercall sub_685D91(int a1) { sub_427EB0((void *)(a1 - 7208)); } //----- (00685D9C) -------------------------------------------------------- void __usercall sub_685D9C(int a1) { sub_4E47C0(a1 - 7208); } //----- (00685DA7) -------------------------------------------------------- void __usercall sub_685DA7(int a1) { sub_427EB0((void *)(a1 - 7208)); } //----- (00685DB2) -------------------------------------------------------- int __cdecl sub_685DB2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1809)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685DE0) -------------------------------------------------------- int __usercall sub_685DE0(int a1) { return sub_4026F0((int *)(a1 - 824)); } //----- (00685DEB) -------------------------------------------------------- void __usercall sub_685DEB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685DF6) -------------------------------------------------------- void __usercall sub_685DF6(int a1) { sub_4646E0(a1 - 784); } //----- (00685E01) -------------------------------------------------------- void __cdecl sub_685E01() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00685E0C) -------------------------------------------------------- int __cdecl sub_685E0C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 207)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685E40) -------------------------------------------------------- int __usercall sub_685E40(int a1) { return sub_4026F0((int *)(a1 - 824)); } //----- (00685E4B) -------------------------------------------------------- void __usercall sub_685E4B(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00685E56) -------------------------------------------------------- void __usercall sub_685E56(int a1) { sub_4646E0(a1 - 796); } //----- (00685E61) -------------------------------------------------------- void __cdecl sub_685E61() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (00685E6C) -------------------------------------------------------- int __cdecl sub_685E6C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 208)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685EA0) -------------------------------------------------------- int __usercall sub_685EA0(int a1) { return sub_4026F0((int *)(a1 - 560)); } //----- (00685EAB) -------------------------------------------------------- void __usercall sub_685EAB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00685EB6) -------------------------------------------------------- void __usercall sub_685EB6(int a1) { sub_424190((void **)(a1 - 552)); } //----- (00685EC1) -------------------------------------------------------- void __usercall sub_685EC1(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00685ECC) -------------------------------------------------------- int __cdecl sub_685ECC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 141)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685F00) -------------------------------------------------------- void __usercall sub_685F00(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00685F0B) -------------------------------------------------------- void __usercall sub_685F0B(int a1) { sub_6530A4(*(void **)(a1 - 20)); } //----- (00685F16) -------------------------------------------------------- int __cdecl sub_685F16(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685F40) -------------------------------------------------------- int __usercall sub_685F40(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00685F48) -------------------------------------------------------- void __usercall sub_685F48(int a1) { sub_6530A4(*(void **)(a1 - 20)); } //----- (00685F53) -------------------------------------------------------- int __cdecl sub_685F53(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685F70) -------------------------------------------------------- int __usercall sub_685F70(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (00685F7B) -------------------------------------------------------- int __cdecl sub_685F7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685FB0) -------------------------------------------------------- void __usercall sub_685FB0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00685FBB) -------------------------------------------------------- int __cdecl sub_685FBB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00685FE0) -------------------------------------------------------- void __usercall sub_685FE0(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (00685FEB) -------------------------------------------------------- int __cdecl sub_685FEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 197)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686020) -------------------------------------------------------- int __usercall sub_686020(int a1) { return sub_4026F0((int *)(a1 - 1596)); } //----- (0068602B) -------------------------------------------------------- void __usercall sub_68602B(int a1) { nullsub_2((void *)(a1 - 1328)); } //----- (00686036) -------------------------------------------------------- void __usercall sub_686036(int a1) { nullsub_2((void *)(a1 - 1584)); } //----- (00686041) -------------------------------------------------------- int __usercall sub_686041(int a1) { return _LN21((void *)(a1 - 784), 0x100u, 3, nullsub_2); } //----- (0068605A) -------------------------------------------------------- void __usercall sub_68605A(int a1) { nullsub_2((void *)(a1 - 1072)); } //----- (00686065) -------------------------------------------------------- int __usercall sub_686065(int a1) { return sub_428A70((void *)(a1 - 812)); } //----- (00686070) -------------------------------------------------------- int __usercall sub_686070(int a1) { return sub_428A70((void *)(a1 - 812)); } //----- (0068607B) -------------------------------------------------------- int __cdecl sub_68607B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 400)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006860B0) -------------------------------------------------------- int __usercall sub_6860B0(int a1) { return sub_4026F0((int *)(a1 - 296)); } //----- (006860BB) -------------------------------------------------------- void __usercall sub_6860BB(int a1) { nullsub_2((void *)(a1 - 288)); } //----- (006860C6) -------------------------------------------------------- int __cdecl sub_6860C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 75)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006860F0) -------------------------------------------------------- int __usercall sub_6860F0(int a1) { return sub_4026F0((int *)(a1 - 304)); } //----- (006860FB) -------------------------------------------------------- void __usercall sub_6860FB(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00686106) -------------------------------------------------------- int __cdecl sub_686106(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686130) -------------------------------------------------------- int __usercall sub_686130(int a1) { return sub_4026F0((int *)(a1 - 316)); } //----- (0068613B) -------------------------------------------------------- void __usercall sub_68613B(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00686146) -------------------------------------------------------- int __cdecl sub_686146(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 80)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686170) -------------------------------------------------------- int __usercall sub_686170(int a1) { return sub_4026F0((int *)(a1 - 1056)); } //----- (0068617B) -------------------------------------------------------- void __usercall sub_68617B(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686186) -------------------------------------------------------- void __usercall sub_686186(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686191) -------------------------------------------------------- void __usercall sub_686191(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (0068619C) -------------------------------------------------------- void __usercall sub_68619C(int a1) { nullsub_2((void *)(a1 - 1040)); } //----- (006861A7) -------------------------------------------------------- void __usercall sub_6861A7(int a1) { *(_DWORD *)(a1 - 1048) = &off_6C7188; sub_427EB0((void *)(a1 - 1048)); } // 6C7188: using guessed type int (__stdcall *off_6C7188)(int, int, int); //----- (006861B2) -------------------------------------------------------- void __cdecl sub_6861B2() { JUMPOUT(loc_4E7230); } // 4E7230: using guessed type int loc_4E7230(); //----- (006861BD) -------------------------------------------------------- int __cdecl sub_6861BD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 265)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006861F0) -------------------------------------------------------- int __usercall sub_6861F0(int a1) { return sub_4026F0((int *)(a1 - 1088)); } //----- (006861FB) -------------------------------------------------------- void __usercall sub_6861FB(int a1) { nullsub_2((void *)(a1 - 304)); } //----- (00686206) -------------------------------------------------------- void __usercall sub_686206(int a1) { nullsub_2((void *)(a1 - 560)); } //----- (00686211) -------------------------------------------------------- void __usercall sub_686211(int a1) { nullsub_2((void *)(a1 - 816)); } //----- (0068621C) -------------------------------------------------------- void __usercall sub_68621C(int a1) { nullsub_2((void *)(a1 - 1072)); } //----- (00686227) -------------------------------------------------------- int __cdecl sub_686227(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 273)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686250) -------------------------------------------------------- int __usercall sub_686250(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00686280) -------------------------------------------------------- int __usercall sub_686280(int a1) { return sub_4026F0((int *)(a1 - 1048)); } //----- (0068628B) -------------------------------------------------------- void __usercall sub_68628B(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (00686296) -------------------------------------------------------- void __usercall sub_686296(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (006862A1) -------------------------------------------------------- void __usercall sub_6862A1(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006862AC) -------------------------------------------------------- void __usercall sub_6862AC(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006862B7) -------------------------------------------------------- void __usercall sub_6862B7(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006862C2) -------------------------------------------------------- void __usercall sub_6862C2(int a1) { nullsub_2((void *)(a1 - 1040)); } //----- (006862CD) -------------------------------------------------------- int __cdecl sub_6862CD(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 263)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686300) -------------------------------------------------------- int __usercall sub_686300(int a1) { return sub_4026F0((int *)(a1 - 548)); } //----- (0068630B) -------------------------------------------------------- void __usercall sub_68630B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686316) -------------------------------------------------------- void __usercall sub_686316(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686321) -------------------------------------------------------- int __usercall sub_686321(int a1) { return sub_428A70((void *)(a1 - 544)); } //----- (0068632C) -------------------------------------------------------- int __cdecl sub_68632C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 138)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686360) -------------------------------------------------------- int __usercall sub_686360(int a1) { return sub_4026F0((int *)(a1 - 572)); } //----- (0068636B) -------------------------------------------------------- void __usercall sub_68636B(int a1) { nullsub_2((void *)(a1 - 292)); } //----- (00686376) -------------------------------------------------------- void __usercall sub_686376(int a1) { nullsub_2((void *)(a1 - 548)); } //----- (00686381) -------------------------------------------------------- int __cdecl sub_686381(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 144)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006863B0) -------------------------------------------------------- int __usercall sub_6863B0(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (006863BB) -------------------------------------------------------- void __usercall sub_6863BB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006863C6) -------------------------------------------------------- void __usercall sub_6863C6(int a1) { sub_427EB0((void *)(a1 - 284)); } //----- (006863D1) -------------------------------------------------------- void __usercall sub_6863D1(int a1) { sub_427EB0((void *)(a1 - 284)); } //----- (006863DC) -------------------------------------------------------- int __cdecl sub_6863DC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686410) -------------------------------------------------------- int __usercall sub_686410(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (0068641B) -------------------------------------------------------- void __usercall sub_68641B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686426) -------------------------------------------------------- void __usercall sub_686426(int a1) { sub_427EB0((void *)(a1 - 284)); } //----- (00686431) -------------------------------------------------------- int __cdecl sub_686431(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686460) -------------------------------------------------------- int __usercall sub_686460(int a1) { return sub_4026F0((int *)(a1 - 540)); } //----- (0068646B) -------------------------------------------------------- void __usercall sub_68646B(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686476) -------------------------------------------------------- void __usercall sub_686476(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686481) -------------------------------------------------------- void __usercall sub_686481(int a1) { sub_427EB0((void *)(a1 - 536)); } //----- (0068648C) -------------------------------------------------------- int __cdecl sub_68648C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 136)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006864C0) -------------------------------------------------------- int __usercall sub_6864C0(int a1) { return sub_4026F0((int *)(a1 - 1412)); } //----- (006864CB) -------------------------------------------------------- void __usercall sub_6864CB(int a1) { nullsub_2((void *)(a1 - 372)); } //----- (006864D6) -------------------------------------------------------- void __usercall sub_6864D6(int a1) { nullsub_2((void *)(a1 - 628)); } //----- (006864E1) -------------------------------------------------------- void __usercall sub_6864E1(int a1) { nullsub_2((void *)(a1 - 884)); } //----- (006864EC) -------------------------------------------------------- void __usercall sub_6864EC(int a1) { nullsub_2((void *)(a1 - 1140)); } //----- (006864F7) -------------------------------------------------------- void __usercall sub_6864F7(int a1) { nullsub_2((void *)(a1 - 1396)); } //----- (00686502) -------------------------------------------------------- void __usercall sub_686502(int a1) { sub_427EB0((void *)(a1 - 1408)); } //----- (0068650D) -------------------------------------------------------- void __usercall sub_68650D(int a1) { *(_DWORD *)(a1 - 1408) = &off_6C7190; sub_427EB0((void *)(a1 - 1408)); } // 6C7190: using guessed type int (__stdcall *off_6C7190)(int, int, int); //----- (00686518) -------------------------------------------------------- int __cdecl sub_686518(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 354)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686540) -------------------------------------------------------- int __usercall sub_686540(int a1) { return sub_4026F0((int *)(a1 - 528)); } //----- (0068654B) -------------------------------------------------------- void __usercall sub_68654B(int a1) { nullsub_2((void *)(a1 - 372)); } //----- (00686556) -------------------------------------------------------- int __cdecl sub_686556(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 133)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686580) -------------------------------------------------------- int __usercall sub_686580(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (0068658B) -------------------------------------------------------- void __usercall sub_68658B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686596) -------------------------------------------------------- int __cdecl sub_686596(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 71)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006865C0) -------------------------------------------------------- int __usercall sub_6865C0(int a1) { return sub_4026F0((int *)(a1 - 284)); } //----- (006865CB) -------------------------------------------------------- void __usercall sub_6865CB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006865D6) -------------------------------------------------------- void __usercall sub_6865D6(int a1) { sub_43BB10((void *)(a1 - 304)); } //----- (006865E1) -------------------------------------------------------- int __cdecl sub_6865E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686610) -------------------------------------------------------- int __usercall sub_686610(int a1) { return sub_4026F0((int *)(a1 - 820)); } //----- (0068661B) -------------------------------------------------------- void __usercall sub_68661B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686626) -------------------------------------------------------- void __usercall sub_686626(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686631) -------------------------------------------------------- void __usercall sub_686631(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (0068663C) -------------------------------------------------------- void __cdecl sub_68663C() { JUMPOUT(loc_4521D0); } // 4521D0: using guessed type int loc_4521D0(); //----- (00686647) -------------------------------------------------------- int __cdecl sub_686647(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 206)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686670) -------------------------------------------------------- int __usercall sub_686670(int a1) { return sub_4026F0((int *)(a1 - 568)); } //----- (0068667B) -------------------------------------------------------- void __usercall sub_68667B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686686) -------------------------------------------------------- void __usercall sub_686686(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686691) -------------------------------------------------------- void __usercall sub_686691(int a1) { *(_DWORD *)(a1 - 560) = &off_6A5508; sub_427EB0((void *)(a1 - 560)); } // 6A5508: using guessed type int (__stdcall *off_6A5508)(int, int, int); //----- (0068669C) -------------------------------------------------------- void __usercall sub_68669C(int a1) { sub_4EADF0((void *)(a1 - 564)); } //----- (006866A7) -------------------------------------------------------- void __usercall sub_6866A7(int a1) { sub_4EADF0((void *)(a1 - 592)); } //----- (006866B2) -------------------------------------------------------- int __cdecl sub_6866B2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 149)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006866E0) -------------------------------------------------------- int __usercall sub_6866E0(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (006866EB) -------------------------------------------------------- void __usercall sub_6866EB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006866F6) -------------------------------------------------------- void __usercall sub_6866F6(int a1) { sub_4EADF0((void *)(a1 - 300)); } //----- (00686701) -------------------------------------------------------- void __usercall sub_686701(int a1) { sub_4EADF0((void *)(a1 - 300)); } //----- (0068670C) -------------------------------------------------------- int __cdecl sub_68670C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 78)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686740) -------------------------------------------------------- int __usercall sub_686740(int a1) { return sub_4026F0((int *)(a1 - 796)); } //----- (0068674B) -------------------------------------------------------- void __usercall sub_68674B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686756) -------------------------------------------------------- void __usercall sub_686756(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (00686761) -------------------------------------------------------- void __cdecl sub_686761() { JUMPOUT(loc_418B90); } // 418B90: using guessed type int loc_418B90(); //----- (0068676C) -------------------------------------------------------- void __usercall sub_68676C(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686777) -------------------------------------------------------- void __cdecl sub_686777() { JUMPOUT(loc_418B90); } // 418B90: using guessed type int loc_418B90(); //----- (00686782) -------------------------------------------------------- void __cdecl sub_686782() { JUMPOUT(loc_418B90); } // 418B90: using guessed type int loc_418B90(); //----- (0068678D) -------------------------------------------------------- int __cdecl sub_68678D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 200)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006867C0) -------------------------------------------------------- int __usercall sub_6867C0(int a1) { return sub_4026F0((int *)(a1 - 284)); } //----- (006867CB) -------------------------------------------------------- void __usercall sub_6867CB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006867D6) -------------------------------------------------------- int __usercall sub_6867D6(int a1) { return sub_428A70((void *)(a1 - 296)); } //----- (006867E1) -------------------------------------------------------- int __cdecl sub_6867E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 76)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686810) -------------------------------------------------------- int __usercall sub_686810(int a1) { return sub_4026F0((int *)(a1 - 292)); } //----- (0068681B) -------------------------------------------------------- void __usercall sub_68681B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686826) -------------------------------------------------------- int __usercall sub_686826(int a1) { return sub_428A70((void *)(a1 - 288)); } //----- (00686831) -------------------------------------------------------- int __cdecl sub_686831(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 74)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686860) -------------------------------------------------------- int __usercall sub_686860(int a1) { return sub_4026F0((int *)(a1 - 340)); } //----- (0068686B) -------------------------------------------------------- void __usercall sub_68686B(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00686876) -------------------------------------------------------- int __cdecl sub_686876(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 86)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006868A0) -------------------------------------------------------- int __usercall sub_6868A0(int a1) { return sub_4026F0((int *)(a1 - 352)); } //----- (006868AB) -------------------------------------------------------- void __usercall sub_6868AB(int a1) { nullsub_2((void *)(a1 - 316)); } //----- (006868B6) -------------------------------------------------------- int __cdecl sub_6868B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 89)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006868E0) -------------------------------------------------------- int __usercall sub_6868E0(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (006868EB) -------------------------------------------------------- void __usercall sub_6868EB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006868F6) -------------------------------------------------------- int __cdecl sub_6868F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 72)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686920) -------------------------------------------------------- int __usercall sub_686920(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (0068692B) -------------------------------------------------------- void __usercall sub_68692B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686936) -------------------------------------------------------- int __usercall sub_686936(int a1) { return sub_428A70((void *)(a1 - 292)); } //----- (00686941) -------------------------------------------------------- int __cdecl sub_686941(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 74)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686970) -------------------------------------------------------- int __usercall sub_686970(int a1) { return sub_4026F0((int *)(a1 - 276)); } //----- (0068697B) -------------------------------------------------------- void __usercall sub_68697B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686986) -------------------------------------------------------- int __cdecl sub_686986(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 70)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006869B0) -------------------------------------------------------- int __usercall sub_6869B0(int a1) { return sub_4026F0((int *)(a1 - 536)); } //----- (006869BB) -------------------------------------------------------- void __usercall sub_6869BB(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (006869C6) -------------------------------------------------------- int __cdecl sub_6869C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 135)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006869F0) -------------------------------------------------------- int __usercall sub_6869F0(int a1) { return sub_4026F0((int *)(a1 - 304)); } //----- (006869FB) -------------------------------------------------------- void __usercall sub_6869FB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686A06) -------------------------------------------------------- void __usercall sub_686A06(int a1) { sub_427EB0((void *)(a1 - 288)); } //----- (00686A11) -------------------------------------------------------- int __usercall sub_686A11(int a1) { return sub_428A70((void *)(a1 - 288)); } //----- (00686A1C) -------------------------------------------------------- int __usercall sub_686A1C(int a1) { return sub_428A70((void *)(a1 - 300)); } //----- (00686A27) -------------------------------------------------------- int __cdecl sub_686A27(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686A50) -------------------------------------------------------- int __usercall sub_686A50(int a1) { return sub_4026F0((int *)(a1 - 320)); } //----- (00686A5B) -------------------------------------------------------- void __usercall sub_686A5B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686A66) -------------------------------------------------------- void __usercall sub_686A66(int a1) { *(_DWORD *)(a1 - 284) = &off_6C7198; sub_427EB0((void *)(a1 - 284)); } // 6C7198: using guessed type int (__stdcall *off_6C7198)(int, int, int); //----- (00686A71) -------------------------------------------------------- void __usercall sub_686A71(int a1) { *(_DWORD *)(a1 - 284) = &off_6C71A0; sub_427EB0((void *)(a1 - 284)); } // 6C71A0: using guessed type int (__stdcall *off_6C71A0)(int, int, int); //----- (00686A7C) -------------------------------------------------------- void __usercall sub_686A7C(int a1) { *(_DWORD *)(a1 - 292) = &off_6C71A8; sub_427EB0((void *)(a1 - 292)); } // 6C71A8: using guessed type int (__stdcall *off_6C71A8)(int, int, int); //----- (00686A87) -------------------------------------------------------- void __usercall sub_686A87(int a1) { *(_DWORD *)(a1 - 340) = &off_6C71B0; sub_427EB0((void *)(a1 - 340)); } // 6C71B0: using guessed type int (__stdcall *off_6C71B0)(int, int, int); //----- (00686A92) -------------------------------------------------------- int __cdecl sub_686A92(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 86)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686AC0) -------------------------------------------------------- int __usercall sub_686AC0(int a1) { return sub_4026F0((int *)(a1 - 296)); } //----- (00686ACB) -------------------------------------------------------- void __usercall sub_686ACB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686AD6) -------------------------------------------------------- int __cdecl sub_686AD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 75)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686B00) -------------------------------------------------------- int __usercall sub_686B00(int a1) { return sub_4026F0((int *)(a1 - 540)); } //----- (00686B0B) -------------------------------------------------------- void __usercall sub_686B0B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686B16) -------------------------------------------------------- void __usercall sub_686B16(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686B21) -------------------------------------------------------- void __usercall sub_686B21(int a1) { *(_DWORD *)(a1 - 560) = &off_6C7DC0; sub_427EB0((void *)(a1 - 560)); } // 6C7DC0: using guessed type int (__stdcall *off_6C7DC0)(int, int, int); //----- (00686B2C) -------------------------------------------------------- int __cdecl sub_686B2C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 141)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686B60) -------------------------------------------------------- int __usercall sub_686B60(int a1) { return sub_4026F0((int *)(a1 - 2336)); } //----- (00686B6B) -------------------------------------------------------- void __usercall sub_686B6B(int a1) { nullsub_2((void *)(a1 - 2064)); } //----- (00686B76) -------------------------------------------------------- void __usercall sub_686B76(int a1) { nullsub_2((void *)(a1 - 2320)); } //----- (00686B81) -------------------------------------------------------- int __usercall sub_686B81(int a1) { return _LN21((void *)(a1 - 1808), 0x100u, 7, nullsub_2); } //----- (00686B9A) -------------------------------------------------------- int __usercall sub_686B9A(int a1) { return sub_428A70((void *)(a1 - 2348)); } //----- (00686BA5) -------------------------------------------------------- int __cdecl sub_686BA5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 588)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686BD0) -------------------------------------------------------- int __usercall sub_686BD0(int a1) { return sub_4026F0((int *)(a1 - 2088)); } //----- (00686BDB) -------------------------------------------------------- void __usercall sub_686BDB(int a1) { nullsub_2((void *)(a1 - 1552)); } //----- (00686BE6) -------------------------------------------------------- void __usercall sub_686BE6(int a1) { nullsub_2((void *)(a1 - 1808)); } //----- (00686BF1) -------------------------------------------------------- void __usercall sub_686BF1(int a1) { nullsub_2((void *)(a1 - 2064)); } //----- (00686BFC) -------------------------------------------------------- int __usercall sub_686BFC(int a1) { return _LN21((void *)(a1 - 1296), 0x100u, 5, nullsub_2); } //----- (00686C15) -------------------------------------------------------- int __usercall sub_686C15(int a1) { return sub_428A70((void *)(a1 - 2100)); } //----- (00686C20) -------------------------------------------------------- int __cdecl sub_686C20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 526)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686C50) -------------------------------------------------------- int __usercall sub_686C50(int a1) { return sub_4026F0((int *)(a1 - 796)); } //----- (00686C5B) -------------------------------------------------------- void __usercall sub_686C5B(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686C66) -------------------------------------------------------- void __usercall sub_686C66(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686C71) -------------------------------------------------------- void __usercall sub_686C71(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (00686C7C) -------------------------------------------------------- int __cdecl sub_686C7C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 200)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686CB0) -------------------------------------------------------- int __usercall sub_686CB0(int a1) { return sub_4026F0((int *)(a1 - 900)); } //----- (00686CBB) -------------------------------------------------------- void __usercall sub_686CBB(int a1) { nullsub_2((void *)(a1 - 884)); } //----- (00686CC6) -------------------------------------------------------- void __usercall sub_686CC6(int a1) { nullsub_2((void *)(a1 - 628)); } //----- (00686CD1) -------------------------------------------------------- void __usercall sub_686CD1(int a1) { nullsub_2((void *)(a1 - 372)); } //----- (00686CDC) -------------------------------------------------------- void __usercall sub_686CDC(int a1) { sub_427EB0((void *)(a1 - 916)); } //----- (00686CE7) -------------------------------------------------------- int __cdecl sub_686CE7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 230)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686D10) -------------------------------------------------------- int __usercall sub_686D10(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (00686D1B) -------------------------------------------------------- void __usercall sub_686D1B(int a1) { nullsub_2((void *)(a1 - 288)); } //----- (00686D26) -------------------------------------------------------- void __usercall sub_686D26(int a1) { sub_427EB0((void *)(a1 - 32)); } //----- (00686D2E) -------------------------------------------------------- int __usercall sub_686D2E(int a1) { return sub_428A70((void *)(a1 - 304)); } //----- (00686D39) -------------------------------------------------------- void __usercall sub_686D39(int a1) { sub_427EB0((void *)(a1 - 32)); } //----- (00686D41) -------------------------------------------------------- int __cdecl sub_686D41(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 78)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686D70) -------------------------------------------------------- int __usercall sub_686D70(int a1) { return sub_4026F0((int *)(a1 - 544)); } //----- (00686D7B) -------------------------------------------------------- void __usercall sub_686D7B(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686D86) -------------------------------------------------------- void __usercall sub_686D86(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686D91) -------------------------------------------------------- int __cdecl sub_686D91(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 137)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686DC0) -------------------------------------------------------- int __usercall sub_686DC0(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (00686DCB) -------------------------------------------------------- void __usercall sub_686DCB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686DD6) -------------------------------------------------------- int __cdecl sub_686DD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686E00) -------------------------------------------------------- int __usercall sub_686E00(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00686E08) -------------------------------------------------------- void __usercall sub_686E08(int a1) { sub_429E10(a1 - 36); } //----- (00686E10) -------------------------------------------------------- int __cdecl sub_686E10(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686E30) -------------------------------------------------------- int __usercall sub_686E30(int a1) { return sub_4026F0((int *)(a1 - 120)); } //----- (00686E38) -------------------------------------------------------- int __cdecl sub_686E38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686E60) -------------------------------------------------------- int __usercall sub_686E60(int a1) { return sub_4026F0((int *)(a1 - 548)); } //----- (00686E6B) -------------------------------------------------------- void __usercall sub_686E6B(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686E76) -------------------------------------------------------- int __cdecl sub_686E76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 138)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686EA0) -------------------------------------------------------- int __usercall sub_686EA0(int a1) { return sub_4026F0((int *)(a1 - 808)); } //----- (00686EAB) -------------------------------------------------------- void __usercall sub_686EAB(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686EB6) -------------------------------------------------------- void __usercall sub_686EB6(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (00686EC1) -------------------------------------------------------- void __usercall sub_686EC1(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686ECC) -------------------------------------------------------- int __usercall sub_686ECC(int a1) { return sub_428A70((void *)(a1 - 804)); } //----- (00686ED7) -------------------------------------------------------- int __cdecl sub_686ED7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 203)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686F00) -------------------------------------------------------- int __usercall sub_686F00(int a1) { return sub_4026F0((int *)(a1 - 788)); } //----- (00686F0B) -------------------------------------------------------- void __usercall sub_686F0B(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686F16) -------------------------------------------------------- void __usercall sub_686F16(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686F21) -------------------------------------------------------- int __cdecl sub_686F21(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 199)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686F50) -------------------------------------------------------- int __usercall sub_686F50(int a1) { return sub_4026F0((int *)(a1 - 2420)); } //----- (00686F5B) -------------------------------------------------------- void __usercall sub_686F5B(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00686F66) -------------------------------------------------------- void __usercall sub_686F66(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (00686F71) -------------------------------------------------------- void __usercall sub_686F71(int a1) { nullsub_2((void *)(a1 - 784)); } //----- (00686F7C) -------------------------------------------------------- void __usercall sub_686F7C(int a1) { sub_4C11C0((void *)(a1 - 2396)); } //----- (00686F87) -------------------------------------------------------- int __cdecl sub_686F87(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 606)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00686FB0) -------------------------------------------------------- int __usercall sub_686FB0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00686FE0) -------------------------------------------------------- int __usercall sub_686FE0(int a1) { return sub_4026F0((int *)(a1 - 1352)); } //----- (00686FEB) -------------------------------------------------------- void __usercall sub_686FEB(int a1) { nullsub_2((void *)(a1 - 540)); } //----- (00686FF6) -------------------------------------------------------- void __usercall sub_686FF6(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00687001) -------------------------------------------------------- void __usercall sub_687001(int a1) { nullsub_2((void *)(a1 - 796)); } //----- (0068700C) -------------------------------------------------------- void __usercall sub_68700C(int a1) { sub_4646E0(a1 - 1308); } //----- (00687017) -------------------------------------------------------- int __cdecl sub_687017(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 339)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687040) -------------------------------------------------------- int __usercall sub_687040(int a1) { return sub_4026F0((int *)(a1 - 788)); } //----- (0068704B) -------------------------------------------------------- void __usercall sub_68704B(int a1) { nullsub_2((void *)(a1 - 508)); } //----- (00687056) -------------------------------------------------------- void __usercall sub_687056(int a1) { nullsub_2((void *)(a1 - 764)); } //----- (00687061) -------------------------------------------------------- int __cdecl sub_687061(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 198)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687090) -------------------------------------------------------- int __usercall sub_687090(int a1) { return sub_4026F0((int *)(a1 - 832)); } //----- (0068709B) -------------------------------------------------------- void __usercall sub_68709B(int a1) { nullsub_2((void *)(a1 - 304)); } //----- (006870A6) -------------------------------------------------------- void __usercall sub_6870A6(int a1) { sub_4646E0(a1 - 816); } //----- (006870B1) -------------------------------------------------------- int __cdecl sub_6870B1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 209)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006870E0) -------------------------------------------------------- int __usercall sub_6870E0(int a1) { return sub_4026F0((int *)(a1 - 900)); } //----- (006870EB) -------------------------------------------------------- void __usercall sub_6870EB(int a1) { nullsub_2((void *)(a1 - 376)); } //----- (006870F6) -------------------------------------------------------- void __usercall sub_6870F6(int a1) { sub_4646E0(a1 - 888); } //----- (00687101) -------------------------------------------------------- void __usercall sub_687101(int a1) { sub_429EF0(a1 - 120); } //----- (00687109) -------------------------------------------------------- int __cdecl sub_687109(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 226)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687140) -------------------------------------------------------- int __usercall sub_687140(int a1) { return sub_4026F0((int *)(a1 - 828)); } //----- (0068714B) -------------------------------------------------------- void __usercall sub_68714B(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (00687156) -------------------------------------------------------- void __usercall sub_687156(int a1) { sub_4646E0(a1 - 796); } //----- (00687161) -------------------------------------------------------- void __cdecl sub_687161() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (0068716C) -------------------------------------------------------- int __cdecl sub_68716C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 208)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006871A0) -------------------------------------------------------- int __usercall sub_6871A0(int a1) { return sub_4026F0((int *)(a1 - 852)); } //----- (006871AB) -------------------------------------------------------- int __usercall sub_6871AB(int a1) { return sub_4DCB00(a1 - 324); } //----- (006871B6) -------------------------------------------------------- void __usercall sub_6871B6(int a1) { sub_4646E0(a1 - 836); } //----- (006871C1) -------------------------------------------------------- int __cdecl sub_6871C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 214)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006871F0) -------------------------------------------------------- int __usercall sub_6871F0(int a1) { return sub_4026F0((int *)(a1 - 896)); } //----- (006871FB) -------------------------------------------------------- int __usercall sub_6871FB(int a1) { return sub_4DCB00(a1 - 368); } //----- (00687206) -------------------------------------------------------- void __usercall sub_687206(int a1) { sub_610240(a1 - 72); } //----- (0068720E) -------------------------------------------------------- void __usercall sub_68720E(int a1) { sub_610240(a1 - 44); } //----- (00687216) -------------------------------------------------------- void __usercall sub_687216(int a1) { sub_4646E0(a1 - 880); } //----- (00687221) -------------------------------------------------------- int __cdecl sub_687221(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 225)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687250) -------------------------------------------------------- int __usercall sub_687250(int a1) { return sub_4026F0((int *)(a1 - 480)); } //----- (0068725B) -------------------------------------------------------- int __usercall sub_68725B(int a1) { return sub_4DCB00(a1 - 468); } //----- (00687266) -------------------------------------------------------- void __usercall sub_687266(int a1) { sub_610240(a1 - 72); } //----- (0068726E) -------------------------------------------------------- void __usercall sub_68726E(int a1) { sub_610240(a1 - 44); } //----- (00687276) -------------------------------------------------------- int __cdecl sub_687276(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 121)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006872A0) -------------------------------------------------------- int __usercall sub_6872A0(int a1) { return sub_4026F0((int *)(a1 - 304)); } //----- (006872AB) -------------------------------------------------------- void __usercall sub_6872AB(int a1) { sub_424190((void **)(a1 - 288)); } //----- (006872B6) -------------------------------------------------------- void __usercall sub_6872B6(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006872C1) -------------------------------------------------------- int __cdecl sub_6872C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006872F0) -------------------------------------------------------- int __usercall sub_6872F0(int a1) { return sub_4026F0((int *)(a1 - 852)); } //----- (006872FB) -------------------------------------------------------- void __usercall sub_6872FB(int a1) { nullsub_2((void *)(a1 - 328)); } //----- (00687306) -------------------------------------------------------- void __usercall sub_687306(int a1) { sub_610240(a1 - 44); } //----- (0068730E) -------------------------------------------------------- void __usercall sub_68730E(int a1) { sub_610240(a1 - 72); } //----- (00687316) -------------------------------------------------------- void __usercall sub_687316(int a1) { sub_4646E0(a1 - 840); } //----- (00687321) -------------------------------------------------------- int __cdecl sub_687321(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 214)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687350) -------------------------------------------------------- int __usercall sub_687350(int a1) { return sub_4026F0((int *)(a1 - 828)); } //----- (0068735B) -------------------------------------------------------- void __usercall sub_68735B(int a1) { nullsub_2((void *)(a1 - 300)); } //----- (00687366) -------------------------------------------------------- void __usercall sub_687366(int a1) { sub_610240(a1 - 44); } //----- (0068736E) -------------------------------------------------------- void __usercall sub_68736E(int a1) { sub_4646E0(a1 - 812); } //----- (00687379) -------------------------------------------------------- int __cdecl sub_687379(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 209)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006873B0) -------------------------------------------------------- int __usercall sub_6873B0(int a1) { return sub_4026F0((int *)(a1 - 924)); } //----- (006873BB) -------------------------------------------------------- int __usercall sub_6873BB(int a1) { return sub_4DCB00(a1 - 396); } //----- (006873C6) -------------------------------------------------------- void __usercall sub_6873C6(int a1) { sub_610240(a1 - 56); } //----- (006873CE) -------------------------------------------------------- void __usercall sub_6873CE(int a1) { sub_4646E0(a1 - 908); } //----- (006873D9) -------------------------------------------------------- int __usercall sub_6873D9(int a1) { return sub_479AF0(a1 - 100); } //----- (006873E1) -------------------------------------------------------- int __cdecl sub_6873E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 232)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687410) -------------------------------------------------------- int __usercall sub_687410(int a1) { return sub_4026F0((int *)(a1 - 60)); } //----- (00687418) -------------------------------------------------------- int __cdecl sub_687418(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687440) -------------------------------------------------------- int __usercall sub_687440(int a1) { return sub_4026F0((int *)(a1 - 556)); } //----- (0068744B) -------------------------------------------------------- int __cdecl sub_68744B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 140)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687480) -------------------------------------------------------- int __usercall sub_687480(int a1) { return sub_4026F0((int *)(a1 - 1068)); } //----- (0068748B) -------------------------------------------------------- int __cdecl sub_68748B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 267)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006874C0) -------------------------------------------------------- int __usercall sub_6874C0(int a1) { return sub_4026F0((int *)(a1 - 68)); } //----- (006874C8) -------------------------------------------------------- void __usercall sub_6874C8(int a1) { nullsub_2((void *)(a1 - 64)); } //----- (006874D0) -------------------------------------------------------- int __cdecl sub_6874D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 69)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006874F0) -------------------------------------------------------- void __usercall sub_6874F0(int a1) { sub_424190((void **)(a1 - 36)); } //----- (00687520) -------------------------------------------------------- void __usercall sub_687520(int a1) { sub_424190((void **)(a1 - 36)); } //----- (00687528) -------------------------------------------------------- int __cdecl sub_687528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687550) -------------------------------------------------------- int __usercall sub_687550(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00687558) -------------------------------------------------------- void __usercall sub_687558(int a1) { sub_424190((void **)(a1 - 48)); } //----- (00687560) -------------------------------------------------------- void __usercall sub_687560(int a1) { sub_424190((void **)(a1 - 64)); } //----- (00687568) -------------------------------------------------------- int __cdecl sub_687568(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687590) -------------------------------------------------------- int __usercall sub_687590(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00687598) -------------------------------------------------------- void __usercall sub_687598(int a1) { sub_424190((void **)(a1 - 52)); } //----- (006875C0) -------------------------------------------------------- void __usercall sub_6875C0(int a1) { nullsub_2(*(void **)(a1 - 276)); } //----- (006875CB) -------------------------------------------------------- int __cdecl sub_6875CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 70)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687600) -------------------------------------------------------- void __usercall sub_687600(int a1) { **(_DWORD **)(a1 - 16) = &off_6CC9CC; } // 6CC9CC: using guessed type int (__thiscall *off_6CC9CC)(void *, char); //----- (00687608) -------------------------------------------------------- int __cdecl sub_687608(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687630) -------------------------------------------------------- int __usercall sub_687630(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (0068763B) -------------------------------------------------------- void __usercall sub_68763B(int a1) { operator delete(*(void **)(a1 - 156)); } //----- (00687649) -------------------------------------------------------- int __cdecl sub_687649(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 40)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687680) -------------------------------------------------------- int __usercall sub_687680(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (0068768B) -------------------------------------------------------- void __usercall sub_68768B(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (00687699) -------------------------------------------------------- int __cdecl sub_687699(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 71)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006876D0) -------------------------------------------------------- int __usercall sub_6876D0(int a1) { return sub_4D6000(*(_DWORD *)(a1 - 16) + 8); } //----- (006876DB) -------------------------------------------------------- void __usercall sub_6876DB(int a1) { sub_508280(*(_DWORD *)(a1 - 16) + 66124); } //----- (006876E9) -------------------------------------------------------- int __cdecl sub_6876E9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687710) -------------------------------------------------------- int __usercall sub_687710(int a1) { return sub_4D6000(*(_DWORD *)(a1 - 16) + 8); } //----- (0068771B) -------------------------------------------------------- void __usercall sub_68771B(int a1) { sub_508280(*(_DWORD *)(a1 - 16) + 66124); } //----- (00687729) -------------------------------------------------------- int __cdecl sub_687729(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687750) -------------------------------------------------------- void __usercall sub_687750(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6CCA60; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6CCA60: using guessed type int (__thiscall *off_6CCA60)(void *, char); //----- (00687758) -------------------------------------------------------- int __usercall sub_687758(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 24), 0x108u, 8, sub_505B80); } //----- (00687771) -------------------------------------------------------- int __usercall sub_687771(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 2136), 0x12DF4u, 8, (void (__thiscall *)(void *))sub_5061F0); } //----- (0068778C) -------------------------------------------------------- int __cdecl sub_68778C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006877B0) -------------------------------------------------------- int __usercall sub_6877B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006877B8) -------------------------------------------------------- void __usercall sub_6877B8(int a1) { sub_5D4580((void *)(a1 - 32)); } //----- (006877C0) -------------------------------------------------------- int __cdecl sub_6877C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006877E0) -------------------------------------------------------- int __usercall sub_6877E0(int a1) { return sub_4026F0((int *)(a1 - 536)); } //----- (006877EB) -------------------------------------------------------- void __usercall sub_6877EB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (006877F6) -------------------------------------------------------- void __usercall sub_6877F6(int a1) { nullsub_2((void *)(a1 - 528)); } //----- (00687801) -------------------------------------------------------- int __cdecl sub_687801(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 135)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687830) -------------------------------------------------------- void __cdecl sub_687830() { JUMPOUT(loc_505C40); } // 505C40: using guessed type int loc_505C40(); //----- (00687838) -------------------------------------------------------- int __cdecl sub_687838(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687860) -------------------------------------------------------- int __usercall sub_687860(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00687868) -------------------------------------------------------- int __usercall sub_687868(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (00687870) -------------------------------------------------------- int __cdecl sub_687870(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687890) -------------------------------------------------------- int __usercall sub_687890(int a1) { return sub_4026F0((int *)(a1 - 292)); } //----- (0068789B) -------------------------------------------------------- int __cdecl sub_68789B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 74)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006878D0) -------------------------------------------------------- void __usercall sub_6878D0(int a1) { *(_DWORD *)(a1 - 20) = &off_6CCA84; } // 6CCA84: using guessed type int (__stdcall *off_6CCA84)(int, int); //----- (006878D8) -------------------------------------------------------- int __cdecl sub_6878D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687900) -------------------------------------------------------- int __usercall sub_687900(int a1) { return sub_4026F0((int *)(a1 - 564)); } //----- (0068790B) -------------------------------------------------------- void __usercall sub_68790B(int a1) { nullsub_2((void *)(a1 - 280)); } //----- (00687916) -------------------------------------------------------- void __usercall sub_687916(int a1) { sub_505B80((void *)(a1 - 280)); } //----- (00687921) -------------------------------------------------------- void __cdecl sub_687921() { JUMPOUT(loc_505E10); } // 505E10: using guessed type int loc_505E10(); //----- (0068792C) -------------------------------------------------------- void __usercall sub_68792C(int a1) { nullsub_2((void *)(a1 - 280)); } //----- (00687937) -------------------------------------------------------- int __cdecl sub_687937(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 142)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687960) -------------------------------------------------------- void __usercall sub_687960(int a1) { nullsub_2((void *)(a1 - 280)); } //----- (0068796B) -------------------------------------------------------- void __usercall sub_68796B(int a1) { sub_505B80((void *)(a1 - 280)); } //----- (00687976) -------------------------------------------------------- void __cdecl sub_687976() { JUMPOUT(loc_505E10); } // 505E10: using guessed type int loc_505E10(); //----- (00687981) -------------------------------------------------------- void __usercall sub_687981(int a1) { sub_5D4580((void *)(a1 - 584)); } //----- (0068798C) -------------------------------------------------------- int __cdecl sub_68798C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 147)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006879C0) -------------------------------------------------------- void __cdecl sub_6879C0() { JUMPOUT(loc_505CD0); } // 505CD0: using guessed type int loc_505CD0(); //----- (006879C8) -------------------------------------------------------- int __usercall sub_6879C8(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 24), 0x108u, 8, sub_505B80); } //----- (006879E1) -------------------------------------------------------- int __usercall sub_6879E1(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 2136), 0x12DF4u, 8, (void (__thiscall *)(void *))sub_5061F0); } //----- (006879FC) -------------------------------------------------------- int __cdecl sub_6879FC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687A20) -------------------------------------------------------- void __usercall sub_687A20(int a1) { sub_424190(*(void ***)(a1 - 16)); } //----- (00687A28) -------------------------------------------------------- void __usercall sub_687A28(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00687A33) -------------------------------------------------------- int __cdecl sub_687A33(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687A50) -------------------------------------------------------- void __usercall sub_687A50(int a1) { sub_643080((void *)(a1 - 67684)); } //----- (00687A5B) -------------------------------------------------------- int __cdecl sub_687A5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16924)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687A90) -------------------------------------------------------- void __cdecl sub_687A90() { sub_424190((void **)&unk_13230E20); } //----- (00687A9A) -------------------------------------------------------- int __cdecl sub_687A9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687AC0) -------------------------------------------------------- int __usercall sub_687AC0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00687AC8) -------------------------------------------------------- void __usercall sub_687AC8(int a1) { sub_4E2170((void *)(a1 - 40)); } //----- (00687AD0) -------------------------------------------------------- int __cdecl sub_687AD0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687AF0) -------------------------------------------------------- int __usercall sub_687AF0(int a1) { return sub_4026F0((int *)(a1 - 284)); } //----- (00687AFB) -------------------------------------------------------- int __cdecl sub_687AFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 72)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687B30) -------------------------------------------------------- int __usercall sub_687B30(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00687B38) -------------------------------------------------------- void __usercall sub_687B38(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00687B40) -------------------------------------------------------- int __cdecl sub_687B40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687B60) -------------------------------------------------------- void __usercall sub_687B60(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6CD434; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6CD434: using guessed type int (__thiscall *off_6CD434)(void *, char); //----- (00687B68) -------------------------------------------------------- int __cdecl sub_687B68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687B90) -------------------------------------------------------- int __usercall sub_687B90(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (00687B9B) -------------------------------------------------------- int __cdecl sub_687B9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 71)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687BD0) -------------------------------------------------------- void __cdecl sub_687BD0() { JUMPOUT(loc_4F7FA0); } // 4F7FA0: using guessed type int loc_4F7FA0(); //----- (00687BD8) -------------------------------------------------------- int __cdecl sub_687BD8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687C00) -------------------------------------------------------- void __cdecl sub_687C00() { JUMPOUT(loc_5081A0); } // 5081A0: using guessed type int loc_5081A0(); //----- (00687C08) -------------------------------------------------------- int __cdecl sub_687C08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687C30) -------------------------------------------------------- int __usercall sub_687C30(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00687C38) -------------------------------------------------------- int __usercall sub_687C38(int a1) { return sub_428A70((void *)(a1 - 36)); } //----- (00687C70) -------------------------------------------------------- int __usercall sub_687C70(int a1) { return sub_4026F0((int *)(a1 - 184)); } //----- (00687C7B) -------------------------------------------------------- void __usercall sub_687C7B(int a1) { sub_43BB10((void *)(a1 - 168)); } //----- (00687C86) -------------------------------------------------------- int __cdecl sub_687C86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 47)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687CB0) -------------------------------------------------------- void __usercall sub_687CB0(int a1) { *(_DWORD *)(a1 - 20) = &off_6CE370; } // 6CE370: using guessed type int (__stdcall *off_6CE370)(int, int); //----- (00687CB8) -------------------------------------------------------- int __cdecl sub_687CB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687CE0) -------------------------------------------------------- int __usercall sub_687CE0(int a1) { return sub_4026F0((int *)(a1 - 116)); } //----- (00687CE8) -------------------------------------------------------- int __cdecl sub_687CE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 30)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687D10) -------------------------------------------------------- int __usercall sub_687D10(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (00687D18) -------------------------------------------------------- void __usercall sub_687D18(int a1) { sub_43BB10((void *)(a1 - 56)); } //----- (00687D20) -------------------------------------------------------- int __cdecl sub_687D20(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687D40) -------------------------------------------------------- int __usercall sub_687D40(int a1) { return sub_4026F0((int *)(a1 - 124)); } //----- (00687D48) -------------------------------------------------------- int __cdecl sub_687D48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 32)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687DA0) -------------------------------------------------------- int __usercall sub_687DA0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00687DA8) -------------------------------------------------------- void __usercall sub_687DA8(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (00687DB0) -------------------------------------------------------- int __cdecl sub_687DB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687DD0) -------------------------------------------------------- int __usercall sub_687DD0(int a1) { return sub_428A70((void *)(a1 - 52)); } //----- (00687E00) -------------------------------------------------------- int __usercall sub_687E00(int a1) { return sub_428A70((void *)(a1 - 48)); } //----- (00687E08) -------------------------------------------------------- int __cdecl sub_687E08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687E30) -------------------------------------------------------- int __usercall sub_687E30(int a1) { return sub_4026F0((int *)(a1 - 156)); } //----- (00687E3B) -------------------------------------------------------- void __usercall sub_687E3B(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (00687E46) -------------------------------------------------------- int __cdecl sub_687E46(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 40)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687E70) -------------------------------------------------------- void __usercall sub_687E70(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00687E78) -------------------------------------------------------- int __cdecl sub_687E78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687EA0) -------------------------------------------------------- int __usercall sub_687EA0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00687EA8) -------------------------------------------------------- void __usercall sub_687EA8(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (00687EB0) -------------------------------------------------------- int __cdecl sub_687EB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687ED0) -------------------------------------------------------- int __usercall sub_687ED0(int a1) { return sub_4026F0((int *)(a1 - 156)); } //----- (00687EDB) -------------------------------------------------------- int __cdecl sub_687EDB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 40)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687F10) -------------------------------------------------------- int __usercall sub_687F10(int a1) { return sub_4026F0((int *)(a1 - 172)); } //----- (00687F1B) -------------------------------------------------------- int __cdecl sub_687F1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 44)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687F50) -------------------------------------------------------- int __usercall sub_687F50(int a1) { return sub_4026F0((int *)(a1 - 312)); } //----- (00687F5B) -------------------------------------------------------- void __usercall sub_687F5B(int a1) { sub_43BB10((void *)(a1 - 308)); } //----- (00687F66) -------------------------------------------------------- void __usercall sub_687F66(int a1) { sub_43BB10((void *)(a1 - 292)); } //----- (00687F71) -------------------------------------------------------- int __cdecl sub_687F71(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 79)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687FA0) -------------------------------------------------------- int __usercall sub_687FA0(int a1) { return sub_4026F0((int *)(a1 - 164)); } //----- (00687FAB) -------------------------------------------------------- int __cdecl sub_687FAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 42)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00687FE0) -------------------------------------------------------- int __usercall sub_687FE0(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (00687FE8) -------------------------------------------------------- void __usercall sub_687FE8(int a1) { sub_43BB10((void *)(a1 - 60)); } //----- (00688010) -------------------------------------------------------- int __usercall sub_688010(int a1) { return sub_4026F0((int *)(a1 - 432)); } //----- (0068801B) -------------------------------------------------------- void __usercall sub_68801B(int a1) { sub_43BB10((void *)(a1 - 396)); } //----- (00688026) -------------------------------------------------------- void __usercall sub_688026(int a1) { nullsub_2((void *)(a1 - 356)); } //----- (00688031) -------------------------------------------------------- void __usercall sub_688031(int a1) { nullsub_2((void *)(a1 - 356)); } //----- (0068803C) -------------------------------------------------------- int __cdecl sub_68803C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 109)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688070) -------------------------------------------------------- int __usercall sub_688070(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (006880A0) -------------------------------------------------------- int __usercall sub_6880A0(int a1) { return sub_4026F0((int *)(a1 - 304)); } //----- (006880AB) -------------------------------------------------------- void __usercall sub_6880AB(int a1) { sub_43BB10((void *)(a1 - 300)); } //----- (006880B6) -------------------------------------------------------- int __cdecl sub_6880B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688110) -------------------------------------------------------- int __usercall sub_688110(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (0068811B) -------------------------------------------------------- int __cdecl sub_68811B() { int result; // eax@1 result = dword_13244848 & 0xFFFFFFFD; dword_13244848 &= 0xFFFFFFFDu; return result; } // 13244848: using guessed type int dword_13244848; //----- (00688129) -------------------------------------------------------- int __cdecl sub_688129(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688160) -------------------------------------------------------- int __usercall sub_688160(int a1) { return sub_4026F0((int *)(a1 - 356)); } //----- (0068816B) -------------------------------------------------------- void __usercall sub_68816B(int a1) { sub_43BB10((void *)(a1 - 40)); } //----- (00688173) -------------------------------------------------------- int __cdecl sub_688173() { int result; // eax@1 result = dword_13244858 & 0xFFFFFFFD; dword_13244858 &= 0xFFFFFFFDu; return result; } // 13244858: using guessed type int dword_13244858; //----- (00688181) -------------------------------------------------------- void __usercall sub_688181(int a1) { sub_43BB10((void *)(a1 - 64)); } //----- (00688189) -------------------------------------------------------- void __usercall sub_688189(int a1) { sub_43BB10((void *)(a1 - 88)); } //----- (00688191) -------------------------------------------------------- int __cdecl sub_688191() { int result; // eax@1 result = dword_13244858 & 0xFFFFFFFB; dword_13244858 &= 0xFFFFFFFBu; return result; } // 13244858: using guessed type int dword_13244858; //----- (0068819F) -------------------------------------------------------- void __usercall sub_68819F(int a1) { sub_610240(a1 - 228); } //----- (006881AA) -------------------------------------------------------- void __usercall sub_6881AA(int a1) { sub_43BB10((void *)(a1 - 304)); } //----- (006881B5) -------------------------------------------------------- int __cdecl sub_6881B5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 90)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006881E0) -------------------------------------------------------- int __usercall sub_6881E0(int a1) { return sub_4026F0((int *)(a1 - 68)); } //----- (006881E8) -------------------------------------------------------- int __cdecl sub_6881E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688210) -------------------------------------------------------- int __usercall sub_688210(int a1) { return sub_4026F0((int *)(a1 - 96)); } //----- (00688218) -------------------------------------------------------- int __cdecl sub_688218(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688240) -------------------------------------------------------- int __usercall sub_688240(int a1) { return sub_4026F0((int *)(a1 - 168)); } //----- (0068824B) -------------------------------------------------------- void __usercall sub_68824B(int a1) { sub_43BB10((void *)(a1 - 152)); } //----- (00688256) -------------------------------------------------------- int __cdecl sub_688256(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 43)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688280) -------------------------------------------------------- int __usercall sub_688280(int a1) { return sub_4026F0((int *)(a1 - 164)); } //----- (0068828B) -------------------------------------------------------- void __usercall sub_68828B(int a1) { sub_43BB10((void *)(a1 - 156)); } //----- (00688296) -------------------------------------------------------- int __cdecl sub_688296(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 42)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006882C0) -------------------------------------------------------- int __usercall sub_6882C0(int a1) { return sub_4026F0((int *)(a1 - 128)); } //----- (006882C8) -------------------------------------------------------- void __usercall sub_6882C8(int a1) { sub_43BB10((void *)(a1 - 104)); } //----- (006882D0) -------------------------------------------------------- void __usercall sub_6882D0(int a1) { sub_43BB10((void *)(a1 - 124)); } //----- (006882D8) -------------------------------------------------------- int __cdecl sub_6882D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 33)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688300) -------------------------------------------------------- int __usercall sub_688300(int a1) { return sub_4026F0((int *)(a1 - 460)); } //----- (0068830B) -------------------------------------------------------- void __usercall sub_68830B(int a1) { sub_43BB10((void *)(a1 - 424)); } //----- (00688316) -------------------------------------------------------- void __usercall sub_688316(int a1) { nullsub_2(*(void **)(a1 - 428)); } //----- (00688321) -------------------------------------------------------- void __usercall sub_688321(int a1) { nullsub_2(*(void **)(a1 - 428)); } //----- (0068832C) -------------------------------------------------------- void __usercall sub_68832C(int a1) { sub_43BB10((void *)(a1 - 36)); } //----- (00688334) -------------------------------------------------------- int __cdecl sub_688334(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 116)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688360) -------------------------------------------------------- int __usercall sub_688360(int a1) { return sub_4026F0((int *)(a1 - 300)); } //----- (0068836B) -------------------------------------------------------- void __usercall sub_68836B(int a1) { sub_43BB10((void *)(a1 - 296)); } //----- (00688376) -------------------------------------------------------- int __cdecl sub_688376(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 76)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006883A0) -------------------------------------------------------- void __usercall sub_6883A0(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (006883A8) -------------------------------------------------------- void __usercall sub_6883A8(int a1) { sub_43BB10((void *)(a1 - 88)); } //----- (006883B0) -------------------------------------------------------- void __usercall sub_6883B0(int a1) { sub_43BB10((void *)(a1 - 68)); } //----- (006883E0) -------------------------------------------------------- void __usercall sub_6883E0(int a1) { sub_43BB10((void *)(a1 - 80)); } //----- (006883E8) -------------------------------------------------------- void __usercall sub_6883E8(int a1) { sub_43BB10((void *)(a1 - 100)); } //----- (006883F0) -------------------------------------------------------- int __cdecl sub_6883F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688420) -------------------------------------------------------- void __usercall sub_688420(int a1) { sub_43BB10((void *)(a1 - 44)); } //----- (00688428) -------------------------------------------------------- int __cdecl sub_688428(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688450) -------------------------------------------------------- int __usercall sub_688450(int a1) { return sub_4026F0((int *)(a1 - 188)); } //----- (0068845B) -------------------------------------------------------- void __usercall sub_68845B(int a1) { sub_43BB10((void *)(a1 - 184)); } //----- (00688466) -------------------------------------------------------- int __cdecl sub_688466(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 48)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688490) -------------------------------------------------------- int __usercall sub_688490(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006884C0) -------------------------------------------------------- int __usercall sub_6884C0(int a1) { return sub_4026F0((int *)(a1 - 140)); } //----- (006884CB) -------------------------------------------------------- int __cdecl sub_6884CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688500) -------------------------------------------------------- int __usercall sub_688500(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00688508) -------------------------------------------------------- void __usercall sub_688508(int a1) { sub_43BB10((void *)(a1 - 44)); } //----- (00688510) -------------------------------------------------------- int __cdecl sub_688510(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688530) -------------------------------------------------------- int __usercall sub_688530(int a1) { return sub_4026F0((int *)(a1 - 368)); } //----- (0068853B) -------------------------------------------------------- void __usercall sub_68853B(int a1) { sub_43BB10((void *)(a1 - 364)); } //----- (00688546) -------------------------------------------------------- void __usercall sub_688546(int a1) { sub_43BB10((void *)(a1 - 344)); } //----- (00688551) -------------------------------------------------------- int __cdecl sub_688551(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 93)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688580) -------------------------------------------------------- int __usercall sub_688580(int a1) { return sub_4026F0((int *)(a1 - 8632)); } //----- (0068858B) -------------------------------------------------------- int __cdecl sub_68858B() { return sub_527360(); } //----- (00688596) -------------------------------------------------------- int __cdecl sub_688596(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2159)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006885C0) -------------------------------------------------------- int __usercall sub_6885C0(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (006885CB) -------------------------------------------------------- int __cdecl sub_6885CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 42)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688600) -------------------------------------------------------- int __usercall sub_688600(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00688608) -------------------------------------------------------- int __cdecl sub_688608(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688630) -------------------------------------------------------- int __usercall sub_688630(int a1) { return sub_4026F0((int *)(a1 - 448)); } //----- (0068863B) -------------------------------------------------------- void __usercall sub_68863B(int a1) { sub_43BB10((void *)(a1 - 468)); } //----- (00688646) -------------------------------------------------------- int __cdecl sub_688646(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 118)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688670) -------------------------------------------------------- int __usercall sub_688670(int a1) { return sub_428A70((void *)(a1 - 156)); } //----- (0068867B) -------------------------------------------------------- int __cdecl sub_68867B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 40)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006886B0) -------------------------------------------------------- int __usercall sub_6886B0(int a1) { return sub_4026F0((int *)(a1 - 1040)); } //----- (006886BB) -------------------------------------------------------- int __cdecl sub_6886BB() { return sub_5937F0(); } //----- (006886C6) -------------------------------------------------------- int __cdecl sub_6886C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 261)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006886F0) -------------------------------------------------------- void __usercall sub_6886F0(int a1) { *(_DWORD *)(a1 - 20) = &off_6D40C8; } // 6D40C8: using guessed type int (__stdcall *off_6D40C8)(int, int); //----- (006886F8) -------------------------------------------------------- int __cdecl sub_6886F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688720) -------------------------------------------------------- void __usercall sub_688720(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6D40A4; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6D40A4: using guessed type int (__thiscall *off_6D40A4)(void *, char); //----- (00688728) -------------------------------------------------------- int __cdecl sub_688728(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688750) -------------------------------------------------------- int __usercall sub_688750(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00688758) -------------------------------------------------------- int __cdecl sub_688758(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688780) -------------------------------------------------------- void __cdecl sub_688780() { JUMPOUT(loc_52BE30); } // 52BE30: using guessed type int loc_52BE30(); //----- (00688788) -------------------------------------------------------- int __cdecl sub_688788(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006887E0) -------------------------------------------------------- int __usercall sub_6887E0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00688810) -------------------------------------------------------- int __usercall sub_688810(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (00688818) -------------------------------------------------------- int __cdecl sub_688818(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688840) -------------------------------------------------------- int __usercall sub_688840(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (00688848) -------------------------------------------------------- int __cdecl sub_688848(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688870) -------------------------------------------------------- int __usercall sub_688870(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00688878) -------------------------------------------------------- void __usercall sub_688878(int a1) { sub_43BB10((void *)(a1 - 56)); } //----- (00688880) -------------------------------------------------------- int __cdecl sub_688880(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006888A0) -------------------------------------------------------- int __usercall sub_6888A0(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (006888AB) -------------------------------------------------------- int __cdecl sub_6888AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 69)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688940) -------------------------------------------------------- int __usercall sub_688940(int a1) { return sub_4026F0((int *)(a1 - 184)); } //----- (0068894B) -------------------------------------------------------- int __cdecl sub_68894B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 47)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688980) -------------------------------------------------------- int __usercall sub_688980(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (0068898B) -------------------------------------------------------- int __cdecl sub_68898B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 78)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006889C0) -------------------------------------------------------- int __usercall sub_6889C0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006889C8) -------------------------------------------------------- void __usercall sub_6889C8(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (006889D0) -------------------------------------------------------- int __cdecl sub_6889D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688A20) -------------------------------------------------------- int __usercall sub_688A20(int a1) { return sub_4026F0((int *)(a1 - 104)); } //----- (00688A28) -------------------------------------------------------- void __usercall sub_688A28(int a1) { sub_43BB10((void *)(a1 - 100)); } //----- (00688A30) -------------------------------------------------------- int __cdecl sub_688A30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688A60) -------------------------------------------------------- int __usercall sub_688A60(int a1) { return sub_4026F0((int *)(a1 - 188)); } //----- (00688A6B) -------------------------------------------------------- int __cdecl sub_688A6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 48)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688AA0) -------------------------------------------------------- int __usercall sub_688AA0(int a1) { return sub_4026F0((int *)(a1 - 380)); } //----- (00688AAB) -------------------------------------------------------- void __usercall sub_688AAB(int a1) { nullsub_2((void *)(a1 - 312)); } //----- (00688AB6) -------------------------------------------------------- void __usercall sub_688AB6(int a1) { sub_43BB10((void *)(a1 - 396)); } //----- (00688AC1) -------------------------------------------------------- int __cdecl sub_688AC1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 100)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688AF0) -------------------------------------------------------- int __usercall sub_688AF0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00688AF8) -------------------------------------------------------- int __cdecl sub_688AF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688B20) -------------------------------------------------------- int __usercall sub_688B20(int a1) { return sub_4026F0((int *)(a1 - 476)); } //----- (00688B2B) -------------------------------------------------------- int __cdecl sub_688B2B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 120)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688B60) -------------------------------------------------------- void __usercall sub_688B60(int a1) { sub_43BB10((void *)(a1 - 96)); } //----- (00688B68) -------------------------------------------------------- int __cdecl sub_688B68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688B90) -------------------------------------------------------- int __usercall sub_688B90(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00688B98) -------------------------------------------------------- void __usercall sub_688B98(int a1) { sub_43BB10((void *)(a1 - 52)); } //----- (00688BC0) -------------------------------------------------------- int __usercall sub_688BC0(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (00688BC8) -------------------------------------------------------- void __usercall sub_688BC8(int a1) { sub_43BB10((void *)(a1 - 72)); } //----- (00688BF0) -------------------------------------------------------- int __usercall sub_688BF0(int a1) { return sub_4026F0((int *)(a1 - 260)); } //----- (00688BFB) -------------------------------------------------------- int __cdecl sub_688BFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 66)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688C30) -------------------------------------------------------- int __usercall sub_688C30(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00688C38) -------------------------------------------------------- void __usercall sub_688C38(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (00688C40) -------------------------------------------------------- void __usercall sub_688C40(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (00688C48) -------------------------------------------------------- void __usercall sub_688C48(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (00688C50) -------------------------------------------------------- void __usercall sub_688C50(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (00688C58) -------------------------------------------------------- int __cdecl sub_688C58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688C80) -------------------------------------------------------- int __usercall sub_688C80(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00688C88) -------------------------------------------------------- int __cdecl sub_688C88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688CB0) -------------------------------------------------------- int __usercall sub_688CB0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00688CB8) -------------------------------------------------------- int __cdecl sub_688CB8() { int result; // eax@1 result = dword_13244B8C & 0xFFFFFFFE; dword_13244B8C &= 0xFFFFFFFEu; return result; } // 13244B8C: using guessed type int dword_13244B8C; //----- (00688CC6) -------------------------------------------------------- int __cdecl sub_688CC6() { int result; // eax@1 result = dword_13244B8C & 0xFFFFFFFD; dword_13244B8C &= 0xFFFFFFFDu; return result; } // 13244B8C: using guessed type int dword_13244B8C; //----- (00688CD4) -------------------------------------------------------- int __cdecl sub_688CD4() { int result; // eax@1 result = dword_13244B8C & 0xFFFFFFFB; dword_13244B8C &= 0xFFFFFFFBu; return result; } // 13244B8C: using guessed type int dword_13244B8C; //----- (00688CE2) -------------------------------------------------------- int __cdecl sub_688CE2() { int result; // eax@1 result = dword_13244B8C & 0xFFFFFFF7; dword_13244B8C &= 0xFFFFFFF7u; return result; } // 13244B8C: using guessed type int dword_13244B8C; //----- (00688CF0) -------------------------------------------------------- int __cdecl sub_688CF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688D10) -------------------------------------------------------- int __usercall sub_688D10(int a1) { return sub_4026F0((int *)(a1 - 80)); } //----- (00688D18) -------------------------------------------------------- int __cdecl sub_688D18() { int result; // eax@1 result = dword_13244B9C & 0xFFFFFFFE; dword_13244B9C &= 0xFFFFFFFEu; return result; } // 13244B9C: using guessed type int dword_13244B9C; //----- (00688D26) -------------------------------------------------------- int __cdecl sub_688D26() { int result; // eax@1 result = dword_13244B9C & 0xFFFFFFFD; dword_13244B9C &= 0xFFFFFFFDu; return result; } // 13244B9C: using guessed type int dword_13244B9C; //----- (00688D34) -------------------------------------------------------- int __cdecl sub_688D34() { int result; // eax@1 result = dword_13244B9C & 0xFFFFFFFB; dword_13244B9C &= 0xFFFFFFFBu; return result; } // 13244B9C: using guessed type int dword_13244B9C; //----- (00688D42) -------------------------------------------------------- int __cdecl sub_688D42(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688D60) -------------------------------------------------------- int __usercall sub_688D60(int a1) { return sub_4026F0((int *)(a1 - 352)); } //----- (00688D6B) -------------------------------------------------------- int __cdecl sub_688D6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 89)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688DA0) -------------------------------------------------------- int __usercall sub_688DA0(int a1) { return sub_4026F0((int *)(a1 - 304)); } //----- (00688DAB) -------------------------------------------------------- int __cdecl sub_688DAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688DE0) -------------------------------------------------------- int __usercall sub_688DE0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00688E10) -------------------------------------------------------- int __usercall sub_688E10(int a1) { return sub_4026F0((int *)(a1 - 808)); } //----- (00688E1B) -------------------------------------------------------- int __cdecl sub_688E1B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 203)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688E50) -------------------------------------------------------- int __usercall sub_688E50(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (00688E80) -------------------------------------------------------- void __usercall sub_688E80(int a1) { sub_424190((void **)(a1 - 28)); } //----- (00688E88) -------------------------------------------------------- int __cdecl sub_688E88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688EB0) -------------------------------------------------------- int __usercall sub_688EB0(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (00688EB8) -------------------------------------------------------- void __usercall sub_688EB8(int a1) { sub_424190((void **)(a1 - 48)); } //----- (00688EC0) -------------------------------------------------------- int __cdecl sub_688EC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688EE0) -------------------------------------------------------- int __usercall sub_688EE0(int a1) { return sub_428A70((void *)(a1 - 40)); } //----- (00688EE8) -------------------------------------------------------- int __cdecl sub_688EE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688F10) -------------------------------------------------------- int __usercall sub_688F10(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (00688F18) -------------------------------------------------------- void __usercall sub_688F18(int a1) { sub_43BB10((void *)(a1 - 44)); } //----- (00688F20) -------------------------------------------------------- void __usercall sub_688F20(int a1) { nullsub_2((void *)(a1 + 8)); } //----- (00688F50) -------------------------------------------------------- int __usercall sub_688F50(int a1) { return sub_4026F0((int *)(a1 - 108)); } //----- (00688F58) -------------------------------------------------------- int __cdecl sub_688F58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 28)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688F80) -------------------------------------------------------- int __usercall sub_688F80(int a1) { return sub_4026F0((int *)(a1 - 1860)); } //----- (00688F8B) -------------------------------------------------------- void __usercall sub_688F8B(int a1) { sub_43BB10((void *)(a1 - 1836)); } //----- (00688F96) -------------------------------------------------------- void __usercall sub_688F96(int a1) { nullsub_2((void *)(a1 - 1788)); } //----- (00688FA1) -------------------------------------------------------- void __usercall sub_688FA1(int a1) { nullsub_2((void *)(a1 - 1792)); } //----- (00688FAC) -------------------------------------------------------- int __cdecl sub_688FAC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 858)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00688FE0) -------------------------------------------------------- int __usercall sub_688FE0(int a1) { return sub_4026F0((int *)(a1 - 1776)); } //----- (00688FEB) -------------------------------------------------------- void __usercall sub_688FEB(int a1) { sub_43BB10((void *)(a1 - 1756)); } //----- (00688FF6) -------------------------------------------------------- int __cdecl sub_688FF6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 837)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689020) -------------------------------------------------------- int __usercall sub_689020(int a1) { return sub_4026F0((int *)(a1 - 1860)); } //----- (0068902B) -------------------------------------------------------- void __usercall sub_68902B(int a1) { sub_43BB10((void *)(a1 - 1836)); } //----- (00689036) -------------------------------------------------------- int __cdecl sub_689036(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 858)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689060) -------------------------------------------------------- int __usercall sub_689060(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (0068906B) -------------------------------------------------------- void __usercall sub_68906B(int a1) { sub_43BB10((void *)(a1 - 256)); } //----- (00689076) -------------------------------------------------------- void __usercall sub_689076(int a1) { nullsub_2((void *)(a1 - 232)); } //----- (00689081) -------------------------------------------------------- void __usercall sub_689081(int a1) { sub_43BB10((void *)(a1 - 256)); } //----- (0068908C) -------------------------------------------------------- int __cdecl sub_68908C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006890C0) -------------------------------------------------------- void __usercall sub_6890C0(int a1) { sub_43BB10((void *)(a1 - 216)); } //----- (006890CB) -------------------------------------------------------- int __cdecl sub_6890CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 55)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689100) -------------------------------------------------------- int __usercall sub_689100(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00689108) -------------------------------------------------------- void __usercall sub_689108(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (00689110) -------------------------------------------------------- int __cdecl sub_689110(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689130) -------------------------------------------------------- int __usercall sub_689130(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (00689138) -------------------------------------------------------- void __usercall sub_689138(int a1) { sub_43BB10((void *)(a1 - 56)); } //----- (00689140) -------------------------------------------------------- void __usercall sub_689140(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00689170) -------------------------------------------------------- void __usercall sub_689170(int a1) { nullsub_2((void *)(a1 + 12)); } //----- (00689178) -------------------------------------------------------- int __cdecl sub_689178(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006891A0) -------------------------------------------------------- int __usercall sub_6891A0(int a1) { return sub_4026F0((int *)(a1 - 652)); } //----- (006891AB) -------------------------------------------------------- void __usercall sub_6891AB(int a1) { sub_4646E0(a1 - 604); } //----- (006891B6) -------------------------------------------------------- void __cdecl sub_6891B6() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (006891C1) -------------------------------------------------------- int __cdecl sub_6891C1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 164)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006891F0) -------------------------------------------------------- int __usercall sub_6891F0(int a1) { return sub_63F930(*(_DWORD *)(a1 - 16)); } //----- (006891F8) -------------------------------------------------------- int __usercall sub_6891F8(int a1) { return sub_63F880(*(_DWORD *)(a1 - 16) + 3668); } //----- (00689206) -------------------------------------------------------- int __usercall sub_689206(int a1) { return sub_63F9A0(*(_DWORD *)(a1 - 16) + 20376); } //----- (00689214) -------------------------------------------------------- int __usercall sub_689214(int a1) { return sub_63FAE0(*(_DWORD *)(a1 - 16) + 20960); } //----- (00689222) -------------------------------------------------------- int __cdecl sub_689222(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689240) -------------------------------------------------------- void __usercall sub_689240(int a1) { sub_5859F0(*(void **)(a1 - 16)); } //----- (00689248) -------------------------------------------------------- void __usercall sub_689248(int a1) { sub_5859F0((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00689253) -------------------------------------------------------- void __usercall sub_689253(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0068925E) -------------------------------------------------------- int __cdecl sub_68925E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689280) -------------------------------------------------------- int __usercall sub_689280(int a1) { return sub_63F930(*(_DWORD *)(a1 - 16)); } //----- (00689288) -------------------------------------------------------- int __usercall sub_689288(int a1) { return sub_63F880(*(_DWORD *)(a1 - 16) + 3668); } //----- (00689296) -------------------------------------------------------- int __usercall sub_689296(int a1) { return sub_63F9A0(*(_DWORD *)(a1 - 16) + 20376); } //----- (006892A4) -------------------------------------------------------- int __usercall sub_6892A4(int a1) { return sub_63FAE0(*(_DWORD *)(a1 - 16) + 20960); } //----- (006892B2) -------------------------------------------------------- int __usercall sub_6892B2(int a1) { return sub_5476D0(*(void **)(a1 - 16)); } //----- (006892BA) -------------------------------------------------------- int __cdecl sub_6892BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006892E0) -------------------------------------------------------- int __usercall sub_6892E0(int a1) { return sub_5476D0(*(void **)(a1 - 16)); } //----- (006892E8) -------------------------------------------------------- int __usercall sub_6892E8(int a1) { return sub_63F930(*(_DWORD *)(a1 - 16)); } //----- (006892F0) -------------------------------------------------------- int __usercall sub_6892F0(int a1) { return sub_63F880(*(_DWORD *)(a1 - 16) + 3668); } //----- (006892FE) -------------------------------------------------------- int __usercall sub_6892FE(int a1) { return sub_63F9A0(*(_DWORD *)(a1 - 16) + 20376); } //----- (0068930C) -------------------------------------------------------- int __usercall sub_68930C(int a1) { return sub_63FAE0(*(_DWORD *)(a1 - 16) + 20960); } //----- (0068931A) -------------------------------------------------------- int __cdecl sub_68931A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689340) -------------------------------------------------------- void __usercall sub_689340(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0068934B) -------------------------------------------------------- void __usercall sub_68934B(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00689356) -------------------------------------------------------- int __cdecl sub_689356(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689380) -------------------------------------------------------- void __usercall sub_689380(int a1) { sub_58E230((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0068938B) -------------------------------------------------------- int __cdecl sub_68938B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006893B0) -------------------------------------------------------- int __usercall sub_6893B0(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 16) + 4); } //----- (006893BB) -------------------------------------------------------- int __usercall sub_6893BB(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 16) + 11376); } //----- (006893C9) -------------------------------------------------------- int __usercall sub_6893C9(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 16) + 22748); } //----- (006893D7) -------------------------------------------------------- int __cdecl sub_6893D7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689400) -------------------------------------------------------- void __usercall sub_689400(int a1) { sub_4B8080(*(void **)(a1 - 16)); } //----- (00689408) -------------------------------------------------------- void __usercall sub_689408(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00689413) -------------------------------------------------------- void __usercall sub_689413(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0068941E) -------------------------------------------------------- void __usercall sub_68941E(int a1) { sub_4B8130(*(_DWORD *)(a1 - 16) + 40); } //----- (00689429) -------------------------------------------------------- void __usercall sub_689429(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00689434) -------------------------------------------------------- void __usercall sub_689434(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 92)); } //----- (0068943F) -------------------------------------------------------- void __usercall sub_68943F(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (0068944A) -------------------------------------------------------- void __usercall sub_68944A(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 112)); } //----- (00689455) -------------------------------------------------------- void __usercall sub_689455(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 120)); } //----- (00689460) -------------------------------------------------------- void __usercall sub_689460(int a1) { sub_4B8080((void *)(*(_DWORD *)(a1 - 16) + 136)); } //----- (0068946E) -------------------------------------------------------- int __cdecl sub_68946E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689490) -------------------------------------------------------- int __cdecl sub_689490() { int result; // eax@1 result = dword_13253E84 & 0xFFFFFFFE; dword_13253E84 &= 0xFFFFFFFEu; return result; } // 13253E84: using guessed type int dword_13253E84; //----- (0068949E) -------------------------------------------------------- int __cdecl sub_68949E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006894C0) -------------------------------------------------------- int __usercall sub_6894C0(int a1) { return sub_4026F0((int *)(a1 - 276)); } //----- (006894CB) -------------------------------------------------------- int __cdecl sub_6894CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 69)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689500) -------------------------------------------------------- int __usercall sub_689500(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00689508) -------------------------------------------------------- int __cdecl sub_689508(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689530) -------------------------------------------------------- int __usercall sub_689530(int a1) { return sub_4026F0((int *)(a1 - 280)); } //----- (0068953B) -------------------------------------------------------- void __cdecl sub_68953B() { if ( dword_74971C > -1 ) --dword_74971C; } // 74971C: using guessed type int dword_74971C; //----- (00689546) -------------------------------------------------------- int __cdecl sub_689546(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 71)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689570) -------------------------------------------------------- int __usercall sub_689570(int a1) { return sub_4026F0((int *)(a1 - 284)); } //----- (0068957B) -------------------------------------------------------- void __cdecl sub_68957B() { JUMPOUT(loc_5479F0); } // 5479F0: using guessed type int loc_5479F0(); //----- (00689586) -------------------------------------------------------- int __cdecl sub_689586(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 72)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006895B0) -------------------------------------------------------- int __usercall sub_6895B0(int a1) { return sub_4026F0((int *)(a1 - 320)); } //----- (006895BB) -------------------------------------------------------- void __cdecl sub_6895BB() { JUMPOUT(loc_5479F0); } // 5479F0: using guessed type int loc_5479F0(); //----- (006895C6) -------------------------------------------------------- int __cdecl sub_6895C6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 81)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006895F0) -------------------------------------------------------- int __usercall sub_6895F0(int a1) { return sub_4026F0((int *)(a1 - 316)); } //----- (006895FB) -------------------------------------------------------- void __cdecl sub_6895FB() { JUMPOUT(loc_5479F0); } // 5479F0: using guessed type int loc_5479F0(); //----- (00689606) -------------------------------------------------------- int __cdecl sub_689606(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 80)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689630) -------------------------------------------------------- void __usercall sub_689630(int a1) { sub_4BC920(*(_DWORD *)(a1 - 16)); } //----- (00689638) -------------------------------------------------------- int __cdecl sub_689638(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689660) -------------------------------------------------------- void __usercall sub_689660(int a1) { sub_4BCA80(*(_DWORD *)(a1 - 16)); } //----- (00689668) -------------------------------------------------------- void __usercall sub_689668(int a1) { sub_4BC9B0((void *)(*(_DWORD *)(a1 - 16) + 344)); } //----- (00689676) -------------------------------------------------------- void __usercall sub_689676(int a1) { sub_4BC920(*(_DWORD *)(a1 - 16) + 368); } //----- (00689684) -------------------------------------------------------- void __usercall sub_689684(int a1) { sub_4BC9B0((void *)(*(_DWORD *)(a1 - 16) + 424)); } //----- (00689692) -------------------------------------------------------- void __usercall sub_689692(int a1) { sub_4BC920(*(_DWORD *)(a1 - 16) + 448); } //----- (006896A0) -------------------------------------------------------- void __usercall sub_6896A0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 504; *(_DWORD *)v1 = &off_6D7F34; sub_4BC920(v1); } // 6D7F34: using guessed type int (__stdcall *off_6D7F34)(int, int, int); //----- (006896AE) -------------------------------------------------------- int __cdecl sub_6896AE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006896D0) -------------------------------------------------------- void __usercall sub_6896D0(int a1) { sub_4BCA80(*(_DWORD *)(a1 - 16)); } //----- (006896D8) -------------------------------------------------------- void __usercall sub_6896D8(int a1) { sub_4BC9B0((void *)(*(_DWORD *)(a1 - 16) + 344)); } //----- (006896E6) -------------------------------------------------------- void __usercall sub_6896E6(int a1) { sub_4BC920(*(_DWORD *)(a1 - 16) + 368); } //----- (006896F4) -------------------------------------------------------- void __usercall sub_6896F4(int a1) { sub_4BC9B0((void *)(*(_DWORD *)(a1 - 16) + 424)); } //----- (00689702) -------------------------------------------------------- void __usercall sub_689702(int a1) { sub_4BC920(*(_DWORD *)(a1 - 16) + 448); } //----- (00689710) -------------------------------------------------------- void __cdecl sub_689710() { JUMPOUT(loc_547010); } // 547010: using guessed type int loc_547010(); //----- (0068971E) -------------------------------------------------------- int __cdecl sub_68971E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689740) -------------------------------------------------------- void __usercall sub_689740(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6D8154; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6D8154: using guessed type int (__thiscall *off_6D8154)(void *, char); //----- (00689748) -------------------------------------------------------- void __usercall sub_689748(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16) + 76; *(_DWORD *)v2 = &off_6D8130; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6D8130: using guessed type int (__thiscall *off_6D8130)(void *, char); //----- (00689753) -------------------------------------------------------- void __cdecl sub_689753() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (0068975E) -------------------------------------------------------- void __cdecl sub_68975E() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (0068976C) -------------------------------------------------------- void __cdecl sub_68976C() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (0068977A) -------------------------------------------------------- void __cdecl sub_68977A() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689788) -------------------------------------------------------- void __cdecl sub_689788() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689796) -------------------------------------------------------- void __cdecl sub_689796() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897A4) -------------------------------------------------------- void __cdecl sub_6897A4() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897B2) -------------------------------------------------------- void __cdecl sub_6897B2() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897C0) -------------------------------------------------------- void __cdecl sub_6897C0() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897CE) -------------------------------------------------------- void __cdecl sub_6897CE() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897DC) -------------------------------------------------------- void __cdecl sub_6897DC() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897EA) -------------------------------------------------------- void __cdecl sub_6897EA() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (006897F8) -------------------------------------------------------- int __cdecl sub_6897F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689820) -------------------------------------------------------- int __usercall sub_689820(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00689850) -------------------------------------------------------- int __usercall sub_689850(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00689858) -------------------------------------------------------- void __usercall sub_689858(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00689860) -------------------------------------------------------- int __cdecl sub_689860(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689880) -------------------------------------------------------- int __usercall sub_689880(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (00689888) -------------------------------------------------------- void __usercall sub_689888(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00689890) -------------------------------------------------------- int __cdecl sub_689890(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006898B0) -------------------------------------------------------- int __usercall sub_6898B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (006898B8) -------------------------------------------------------- void __cdecl sub_6898B8() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (006898C0) -------------------------------------------------------- int __cdecl sub_6898C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006898E0) -------------------------------------------------------- void __cdecl sub_6898E0() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (006898E8) -------------------------------------------------------- int __cdecl sub_6898E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689910) -------------------------------------------------------- int __usercall sub_689910(int a1) { return sub_4026F0((int *)(a1 - 140)); } //----- (0068991B) -------------------------------------------------------- int __cdecl sub_68991B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 36)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689950) -------------------------------------------------------- int __usercall sub_689950(int a1) { return sub_4026F0((int *)(a1 - 1308)); } //----- (0068995B) -------------------------------------------------------- int __cdecl sub_68995B() { int result; // eax@1 result = dword_13254170 & 0xFFFFFFFE; dword_13254170 &= 0xFFFFFFFEu; return result; } // 13254170: using guessed type int dword_13254170; //----- (00689969) -------------------------------------------------------- int __cdecl sub_689969(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 328)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006899A0) -------------------------------------------------------- int __usercall sub_6899A0(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (006899D0) -------------------------------------------------------- int __usercall sub_6899D0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (006899D8) -------------------------------------------------------- int __cdecl sub_6899D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689A30) -------------------------------------------------------- void __usercall sub_689A30(int a1) { *(_DWORD *)(a1 - 16) = &off_6D8118; sub_427EB0((void *)(a1 - 16)); } // 6D8118: using guessed type int (__stdcall *off_6D8118)(int, int, int); //----- (00689A38) -------------------------------------------------------- int __cdecl sub_689A38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689A60) -------------------------------------------------------- int __usercall sub_689A60(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00689A68) -------------------------------------------------------- int __usercall sub_689A68(int a1) { return sub_428C20((void *)(a1 - 28)); } //----- (00689A70) -------------------------------------------------------- int __cdecl sub_689A70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689A90) -------------------------------------------------------- void __usercall sub_689A90(int a1) { sub_54D040((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00689A9B) -------------------------------------------------------- int __cdecl sub_689A9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689AC0) -------------------------------------------------------- void __cdecl sub_689AC0() { JUMPOUT(loc_470A50); } // 470A50: using guessed type int loc_470A50(); //----- (00689AC8) -------------------------------------------------------- int __cdecl sub_689AC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689AF0) -------------------------------------------------------- int __usercall sub_689AF0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (00689AF8) -------------------------------------------------------- void __cdecl sub_689AF8() { JUMPOUT(loc_4B62F0); } // 4B62F0: using guessed type int loc_4B62F0(); //----- (00689B00) -------------------------------------------------------- int __cdecl sub_689B00(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689B20) -------------------------------------------------------- void __usercall sub_689B20(int a1) { *(_DWORD *)(a1 - 20) = &off_6D8180; } // 6D8180: using guessed type int (__stdcall *off_6D8180)(int, int); //----- (00689B28) -------------------------------------------------------- int __cdecl sub_689B28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689B50) -------------------------------------------------------- void __usercall sub_689B50(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00689B5B) -------------------------------------------------------- void __usercall sub_689B5B(int a1) { sub_5859F0(*(void **)(a1 - 20)); } //----- (00689B63) -------------------------------------------------------- void __usercall sub_689B63(int a1) { sub_5859F0((void *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (00689B6E) -------------------------------------------------------- void __usercall sub_689B6E(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 16)); } //----- (00689B79) -------------------------------------------------------- int __cdecl sub_689B79(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689BA0) -------------------------------------------------------- void __usercall sub_689BA0(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00689BA8) -------------------------------------------------------- int __cdecl sub_689BA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689BD0) -------------------------------------------------------- void __usercall sub_689BD0(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (00689BD8) -------------------------------------------------------- void __usercall sub_689BD8(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 368)); } //----- (00689BE6) -------------------------------------------------------- int __usercall sub_689BE6(int a1) { return sub_547A00((void *)(*(_DWORD *)(a1 - 16) + 432)); } // 547A00: using guessed type _DWORD __fastcall sub_547A00(void *); //----- (00689BF4) -------------------------------------------------------- void __usercall sub_689BF4(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 3848)); } //----- (00689C02) -------------------------------------------------------- int __cdecl sub_689C02(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689C20) -------------------------------------------------------- void __usercall sub_689C20(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (00689C28) -------------------------------------------------------- int __cdecl sub_689C28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689C50) -------------------------------------------------------- void __usercall sub_689C50(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (00689C58) -------------------------------------------------------- int __usercall sub_689C58(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 20) + 4); } //----- (00689C63) -------------------------------------------------------- int __usercall sub_689C63(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 20) + 11376); } //----- (00689C71) -------------------------------------------------------- int __usercall sub_689C71(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 20) + 22748); } //----- (00689C7F) -------------------------------------------------------- int __cdecl sub_689C7F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689CA0) -------------------------------------------------------- void __usercall sub_689CA0(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (00689CA8) -------------------------------------------------------- int __cdecl sub_689CA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689CD0) -------------------------------------------------------- void __usercall sub_689CD0(int a1) { sub_5534D0(*(void **)(a1 - 16)); } //----- (00689CD8) -------------------------------------------------------- void __usercall sub_689CD8(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 7936)); } //----- (00689CE6) -------------------------------------------------------- void __usercall sub_689CE6(int a1) { sub_58F9F0((void *)(*(_DWORD *)(a1 - 16) + 7944)); } //----- (00689CF4) -------------------------------------------------------- void __usercall sub_689CF4(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 7956)); } //----- (00689D02) -------------------------------------------------------- void __usercall sub_689D02(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 8176)); } //----- (00689D10) -------------------------------------------------------- void __usercall sub_689D10(int a1) { sub_552200((void *)(*(_DWORD *)(a1 - 16) + 8220)); } //----- (00689D1E) -------------------------------------------------------- void __usercall sub_689D1E(int a1) { sub_54D040((void *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (00689D29) -------------------------------------------------------- int __cdecl sub_689D29(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689D50) -------------------------------------------------------- void __usercall sub_689D50(int a1) { sub_427EB0((void *)(a1 - 28)); } //----- (00689D58) -------------------------------------------------------- int __cdecl sub_689D58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689D80) -------------------------------------------------------- void __cdecl sub_689D80() { JUMPOUT(loc_549400); } // 549400: using guessed type int loc_549400(); //----- (00689D88) -------------------------------------------------------- void __cdecl sub_689D88() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689D93) -------------------------------------------------------- void __cdecl sub_689D93() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689D9E) -------------------------------------------------------- void __cdecl sub_689D9E() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689DAC) -------------------------------------------------------- void __cdecl sub_689DAC() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689DBA) -------------------------------------------------------- void __cdecl sub_689DBA() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689DC8) -------------------------------------------------------- void __cdecl sub_689DC8() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689DD6) -------------------------------------------------------- void __cdecl sub_689DD6() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689DE4) -------------------------------------------------------- void __cdecl sub_689DE4() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689DF2) -------------------------------------------------------- void __cdecl sub_689DF2() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689E00) -------------------------------------------------------- void __cdecl sub_689E00() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689E0E) -------------------------------------------------------- void __cdecl sub_689E0E() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689E1C) -------------------------------------------------------- void __cdecl sub_689E1C() { JUMPOUT(loc_54D870); } // 54D870: using guessed type int loc_54D870(); //----- (00689E2A) -------------------------------------------------------- int __cdecl sub_689E2A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689E50) -------------------------------------------------------- int __usercall sub_689E50(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (00689E58) -------------------------------------------------------- void __usercall sub_689E58(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (00689E60) -------------------------------------------------------- int __cdecl sub_689E60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689E80) -------------------------------------------------------- void __usercall sub_689E80(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00689E8B) -------------------------------------------------------- void __usercall sub_689E8B(int a1) { sub_5859F0(*(void **)(a1 - 20)); } //----- (00689E93) -------------------------------------------------------- void __usercall sub_689E93(int a1) { sub_5859F0((void *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (00689E9E) -------------------------------------------------------- void __usercall sub_689E9E(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 16)); } //----- (00689EA9) -------------------------------------------------------- void __usercall sub_689EA9(int a1) { sub_547890(*(_DWORD *)(a1 - 16) + 6); } //----- (00689EB4) -------------------------------------------------------- void __usercall sub_689EB4(int a1) { sub_552D70(*(_DWORD *)(a1 - 16) + 126); } //----- (00689EBF) -------------------------------------------------------- int __cdecl sub_689EBF(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689EE0) -------------------------------------------------------- void __usercall sub_689EE0(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (00689EE8) -------------------------------------------------------- int __cdecl sub_689EE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689F10) -------------------------------------------------------- void __usercall sub_689F10(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (00689F18) -------------------------------------------------------- void __usercall sub_689F18(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 368)); } //----- (00689F26) -------------------------------------------------------- int __usercall sub_689F26(int a1) { return sub_547A00((void *)(*(_DWORD *)(a1 - 16) + 432)); } // 547A00: using guessed type _DWORD __fastcall sub_547A00(void *); //----- (00689F34) -------------------------------------------------------- void __usercall sub_689F34(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 3848)); } //----- (00689F42) -------------------------------------------------------- void __usercall sub_689F42(int a1) { sub_4C8EE0(*(_DWORD *)(a1 - 16) + 4120); } //----- (00689F50) -------------------------------------------------------- int __cdecl sub_689F50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00689F70) -------------------------------------------------------- void __usercall sub_689F70(int a1) { sub_5534D0(*(void **)(a1 - 20)); } //----- (00689F78) -------------------------------------------------------- void __usercall sub_689F78(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 7936)); } //----- (00689F86) -------------------------------------------------------- void __usercall sub_689F86(int a1) { sub_58F9F0((void *)(*(_DWORD *)(a1 - 20) + 24172)); } //----- (00689F94) -------------------------------------------------------- void __usercall sub_689F94(int a1) { *(_DWORD *)(*(_DWORD *)(a1 - 20) + 24180) = &off_6D7F7C; } // 6D7F7C: using guessed type int (__stdcall *off_6D7F7C)(int); //----- (00689FA2) -------------------------------------------------------- void __usercall sub_689FA2(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 32392)); } //----- (00689FB0) -------------------------------------------------------- void __usercall sub_689FB0(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 32654)); } //----- (00689FBE) -------------------------------------------------------- void __usercall sub_689FBE(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 32655)); } //----- (00689FCC) -------------------------------------------------------- int __usercall sub_689FCC(int a1) { return sub_547AF0((void *)(*(_DWORD *)(a1 - 20) + 32816)); } //----- (00689FDA) -------------------------------------------------------- void __usercall sub_689FDA(int a1) { sub_575B40(*(_DWORD *)(a1 - 20) + 82024); } //----- (00689FE8) -------------------------------------------------------- int __usercall sub_689FE8(int a1) { return sub_575D90(*(_DWORD *)(a1 - 20) + 82048); } // 575D90: using guessed type int __thiscall sub_575D90(_DWORD); //----- (00689FF6) -------------------------------------------------------- void __usercall sub_689FF6(int a1) { sub_4477A0(*(_DWORD *)(a1 - 20) + 84388); } //----- (0068A004) -------------------------------------------------------- void __usercall sub_68A004(int a1) { sub_446C50(*(_DWORD *)(a1 - 20) + 84424); } //----- (0068A012) -------------------------------------------------------- void __usercall sub_68A012(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 84471)); } //----- (0068A020) -------------------------------------------------------- void __usercall sub_68A020(int a1) { sub_547B90(*(_DWORD *)(a1 - 20) + 84500); } //----- (0068A02E) -------------------------------------------------------- int __usercall sub_68A02E(int a1) { return sub_63FA20(*(_DWORD *)(a1 - 20) + 85744); } //----- (0068A03C) -------------------------------------------------------- int __usercall sub_68A03C(int a1) { return sub_63FDC0(*(_DWORD *)(a1 - 20) + 152568); } //----- (0068A04A) -------------------------------------------------------- int __usercall sub_68A04A(int a1) { return j_nullsub_2(*(_DWORD *)(a1 - 20) + 155460); } // 5C79E0: using guessed type int __thiscall j_nullsub_2(_DWORD); //----- (0068A058) -------------------------------------------------------- int __usercall sub_68A058(int a1) { return sub_52BE20(*(_DWORD *)(a1 - 20) + 155582); } // 52BE20: using guessed type int __thiscall sub_52BE20(_DWORD); //----- (0068A066) -------------------------------------------------------- void __usercall sub_68A066(int a1) { sub_547C10(*(_DWORD *)(a1 - 20) + 155608); } //----- (0068A074) -------------------------------------------------------- int __usercall sub_68A074(int a1) { return j_nullsub_2(*(_DWORD *)(a1 - 20) + 156368); } // 5C79E0: using guessed type int __thiscall j_nullsub_2(_DWORD); //----- (0068A082) -------------------------------------------------------- void __usercall sub_68A082(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 159652)); } //----- (0068A090) -------------------------------------------------------- void __usercall sub_68A090(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 159660)); } //----- (0068A09E) -------------------------------------------------------- int __usercall sub_68A09E(int a1) { return sub_547C70(*(_DWORD *)(a1 - 20) + 159688); } // 547C70: using guessed type int __thiscall sub_547C70(_DWORD); //----- (0068A0AC) -------------------------------------------------------- void __usercall sub_68A0AC(int a1) { sub_62F120(*(_DWORD *)(a1 - 20) + 160364); } //----- (0068A0BA) -------------------------------------------------------- void __usercall sub_68A0BA(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 160796)); } //----- (0068A0C8) -------------------------------------------------------- void __usercall sub_68A0C8(int a1) { sub_4B6110(*(_DWORD *)(a1 - 20) + 160832); } //----- (0068A0D6) -------------------------------------------------------- void __usercall sub_68A0D6(int a1) { int v1; // esi@1 void *v2; // eax@1 v1 = *(_DWORD *)(a1 - 20) + 161208; v2 = *(void **)(*(_DWORD *)(a1 - 20) + 161224); if ( v2 ) operator delete(v2); *(_DWORD *)(v1 + 16) = 0; *(_DWORD *)(v1 + 20) = 0; *(_DWORD *)(v1 + 24) = 0; if ( *(_DWORD *)v1 ) operator delete(*(void **)v1); *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; } //----- (0068A0E4) -------------------------------------------------------- int __usercall sub_68A0E4(int a1) { return sub_556910(*(_DWORD *)(a1 - 20) + 161248); } //----- (0068A0F2) -------------------------------------------------------- void __usercall sub_68A0F2(int a1) { sub_54C020(*(_DWORD *)(a1 - 20) + 161384); } //----- (0068A100) -------------------------------------------------------- void __usercall sub_68A100(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 161580)); } //----- (0068A10E) -------------------------------------------------------- void __usercall sub_68A10E(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 161596)); } //----- (0068A11C) -------------------------------------------------------- void __usercall sub_68A11C(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 161612)); } //----- (0068A12A) -------------------------------------------------------- void __usercall sub_68A12A(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 161732)); } //----- (0068A138) -------------------------------------------------------- void __usercall sub_68A138(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 161892)); } //----- (0068A146) -------------------------------------------------------- void __usercall sub_68A146(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 161900)); } //----- (0068A154) -------------------------------------------------------- void __usercall sub_68A154(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 161908)); } //----- (0068A162) -------------------------------------------------------- void __usercall sub_68A162(int a1) { sub_4BC920(*(_DWORD *)(a1 - 16)); } //----- (0068A16A) -------------------------------------------------------- void __usercall sub_68A16A(int a1) { sub_58E230((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0068A175) -------------------------------------------------------- void __usercall sub_68A175(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0068A180) -------------------------------------------------------- void __usercall sub_68A180(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (0068A18B) -------------------------------------------------------- int __cdecl sub_68A18B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A1B0) -------------------------------------------------------- int __usercall sub_68A1B0(int a1) { return sub_428A70((void *)(a1 - 24)); } //----- (0068A1B8) -------------------------------------------------------- int __cdecl sub_68A1B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A1E0) -------------------------------------------------------- void __usercall sub_68A1E0(int a1) { sub_5534D0(*(void **)(a1 - 16)); } //----- (0068A1E8) -------------------------------------------------------- int __cdecl sub_68A1E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A210) -------------------------------------------------------- void __usercall sub_68A210(int a1) { sub_552E70(*(void **)(a1 - 16)); } //----- (0068A218) -------------------------------------------------------- int __usercall sub_68A218(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 20) + 4); } //----- (0068A223) -------------------------------------------------------- int __usercall sub_68A223(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 20) + 11376); } //----- (0068A231) -------------------------------------------------------- int __usercall sub_68A231(int a1) { return sub_63FCA0(*(_DWORD *)(a1 - 20) + 22748); } //----- (0068A23F) -------------------------------------------------------- int __usercall sub_68A23F(int a1) { return sub_547D70((void *)(*(_DWORD *)(a1 - 16) + 1448)); } //----- (0068A24D) -------------------------------------------------------- int __cdecl sub_68A24D(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A270) -------------------------------------------------------- void __usercall sub_68A270(int a1) { sub_5534D0(*(void **)(a1 - 20)); } //----- (0068A278) -------------------------------------------------------- void __usercall sub_68A278(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 7936)); } //----- (0068A286) -------------------------------------------------------- void __usercall sub_68A286(int a1) { sub_58F9F0((void *)(*(_DWORD *)(a1 - 20) + 7944)); } //----- (0068A294) -------------------------------------------------------- void __usercall sub_68A294(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 7956)); } //----- (0068A2A2) -------------------------------------------------------- void __usercall sub_68A2A2(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 8176)); } //----- (0068A2B0) -------------------------------------------------------- void __usercall sub_68A2B0(int a1) { sub_54D040((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0068A2BB) -------------------------------------------------------- void __usercall sub_68A2BB(int a1) { sub_552200((void *)(*(_DWORD *)(a1 - 20) + 8220)); } //----- (0068A2C9) -------------------------------------------------------- void __usercall sub_68A2C9(int a1) { sub_481D60(*(_DWORD *)(a1 - 20) + 9032); } //----- (0068A2D7) -------------------------------------------------------- void __usercall sub_68A2D7(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 20) + 9504)); } //----- (0068A2E5) -------------------------------------------------------- int __cdecl sub_68A2E5(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A300) -------------------------------------------------------- void __usercall sub_68A300(int a1) { sub_554420(*(_DWORD *)(a1 - 16)); } //----- (0068A308) -------------------------------------------------------- int __cdecl sub_68A308(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A330) -------------------------------------------------------- int __usercall sub_68A330(int a1) { return sub_4026F0((int *)(a1 - 144)); } //----- (0068A33B) -------------------------------------------------------- void __usercall sub_68A33B(int a1) { nullsub_2((void *)(a1 - 133)); } //----- (0068A346) -------------------------------------------------------- int __cdecl sub_68A346(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A370) -------------------------------------------------------- void __usercall sub_68A370(int a1) { sub_424190((void **)(a1 - 32)); } //----- (0068A378) -------------------------------------------------------- int __cdecl sub_68A378(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A3A0) -------------------------------------------------------- void __usercall sub_68A3A0(int a1) { sub_424190((void **)(a1 - 48)); } //----- (0068A3A8) -------------------------------------------------------- int __cdecl sub_68A3A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A3D0) -------------------------------------------------------- void __usercall sub_68A3D0(int a1) { sub_5534D0(*(void **)(a1 - 16)); } //----- (0068A3D8) -------------------------------------------------------- void __usercall sub_68A3D8(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 7936)); } //----- (0068A3E6) -------------------------------------------------------- void __usercall sub_68A3E6(int a1) { sub_58F9F0((void *)(*(_DWORD *)(a1 - 16) + 24172)); } //----- (0068A3F4) -------------------------------------------------------- void __cdecl sub_68A3F4() { JUMPOUT(loc_547A40); } // 547A40: using guessed type int loc_547A40(); //----- (0068A402) -------------------------------------------------------- void __usercall sub_68A402(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 32392)); } //----- (0068A410) -------------------------------------------------------- void __usercall sub_68A410(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 32654)); } //----- (0068A41E) -------------------------------------------------------- void __usercall sub_68A41E(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 32655)); } //----- (0068A42C) -------------------------------------------------------- int __usercall sub_68A42C(int a1) { return sub_547AF0((void *)(*(_DWORD *)(a1 - 16) + 32816)); } //----- (0068A43A) -------------------------------------------------------- void __usercall sub_68A43A(int a1) { sub_575B40(*(_DWORD *)(a1 - 16) + 82024); } //----- (0068A448) -------------------------------------------------------- int __usercall sub_68A448(int a1) { return sub_575D90(*(_DWORD *)(a1 - 16) + 82048); } // 575D90: using guessed type int __thiscall sub_575D90(_DWORD); //----- (0068A456) -------------------------------------------------------- void __usercall sub_68A456(int a1) { sub_4477A0(*(_DWORD *)(a1 - 16) + 84388); } //----- (0068A464) -------------------------------------------------------- void __usercall sub_68A464(int a1) { sub_446C50(*(_DWORD *)(a1 - 16) + 84424); } //----- (0068A472) -------------------------------------------------------- void __usercall sub_68A472(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 84471)); } //----- (0068A480) -------------------------------------------------------- void __usercall sub_68A480(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (0068A48B) -------------------------------------------------------- void __usercall sub_68A48B(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 20)); } //----- (0068A496) -------------------------------------------------------- void __usercall sub_68A496(int a1) { sub_547B90(*(_DWORD *)(a1 - 16) + 84500); } //----- (0068A4A4) -------------------------------------------------------- void __cdecl sub_68A4A4() { JUMPOUT(loc_547C00); } // 547C00: using guessed type int loc_547C00(); //----- (0068A4B2) -------------------------------------------------------- int __usercall sub_68A4B2(int a1) { return sub_63FDC0(*(_DWORD *)(a1 - 16) + 152568); } //----- (0068A4C0) -------------------------------------------------------- int __usercall sub_68A4C0(int a1) { return j_nullsub_2(*(_DWORD *)(a1 - 16) + 155460); } // 5C79E0: using guessed type int __thiscall j_nullsub_2(_DWORD); //----- (0068A4CE) -------------------------------------------------------- int __usercall sub_68A4CE(int a1) { return sub_52BE20(*(_DWORD *)(a1 - 16) + 155582); } // 52BE20: using guessed type int __thiscall sub_52BE20(_DWORD); //----- (0068A4DC) -------------------------------------------------------- void __usercall sub_68A4DC(int a1) { sub_58E230((void *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (0068A4E7) -------------------------------------------------------- void __usercall sub_68A4E7(int a1) { sub_547C10(*(_DWORD *)(a1 - 16) + 155608); } //----- (0068A4F5) -------------------------------------------------------- int __usercall sub_68A4F5(int a1) { return j_nullsub_2(*(_DWORD *)(a1 - 16) + 156368); } // 5C79E0: using guessed type int __thiscall j_nullsub_2(_DWORD); //----- (0068A503) -------------------------------------------------------- void __usercall sub_68A503(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 159652)); } //----- (0068A511) -------------------------------------------------------- void __usercall sub_68A511(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 159660)); } //----- (0068A51F) -------------------------------------------------------- int __usercall sub_68A51F(int a1) { return sub_547C70(*(_DWORD *)(a1 - 16) + 159688); } // 547C70: using guessed type int __thiscall sub_547C70(_DWORD); //----- (0068A52D) -------------------------------------------------------- void __cdecl sub_68A52D() { JUMPOUT(loc_547C80); } // 547C80: using guessed type int loc_547C80(); //----- (0068A53B) -------------------------------------------------------- void __usercall sub_68A53B(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 160796)); } //----- (0068A549) -------------------------------------------------------- void __usercall sub_68A549(int a1) { sub_4B6110(*(_DWORD *)(a1 - 16) + 160832); } //----- (0068A557) -------------------------------------------------------- void __cdecl sub_68A557() { JUMPOUT(loc_557370); } // 557370: using guessed type int loc_557370(); //----- (0068A565) -------------------------------------------------------- int __usercall sub_68A565(int a1) { return sub_556910(*(_DWORD *)(a1 - 16) + 161248); } //----- (0068A573) -------------------------------------------------------- void __usercall sub_68A573(int a1) { sub_4BC920(*(_DWORD *)(a1 - 20)); } //----- (0068A57B) -------------------------------------------------------- void __usercall sub_68A57B(int a1) { sub_54C020(*(_DWORD *)(a1 - 16) + 161384); } //----- (0068A589) -------------------------------------------------------- void __usercall sub_68A589(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 161580)); } //----- (0068A597) -------------------------------------------------------- void __usercall sub_68A597(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 161596)); } //----- (0068A5A5) -------------------------------------------------------- void __usercall sub_68A5A5(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 161612)); } //----- (0068A5B3) -------------------------------------------------------- void __cdecl sub_68A5B3() { JUMPOUT(loc_547C90); } // 547C90: using guessed type int loc_547C90(); //----- (0068A5C1) -------------------------------------------------------- void __usercall sub_68A5C1(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 161892)); } //----- (0068A5CF) -------------------------------------------------------- void __usercall sub_68A5CF(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 161900)); } //----- (0068A5DD) -------------------------------------------------------- void __usercall sub_68A5DD(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 161908)); } //----- (0068A5EB) -------------------------------------------------------- void __usercall sub_68A5EB(int a1) { sub_50CB70(*(_DWORD *)(a1 - 16) + 162000); } //----- (0068A5F9) -------------------------------------------------------- int __cdecl sub_68A5F9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A620) -------------------------------------------------------- int __usercall sub_68A620(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068A633) -------------------------------------------------------- void __usercall sub_68A633(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A63E) -------------------------------------------------------- void __usercall sub_68A63E(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A649) -------------------------------------------------------- void __usercall sub_68A649(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A654) -------------------------------------------------------- void __usercall sub_68A654(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A66A) -------------------------------------------------------- void __usercall sub_68A66A(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A675) -------------------------------------------------------- void __usercall sub_68A675(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A680) -------------------------------------------------------- void __usercall sub_68A680(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A68B) -------------------------------------------------------- void __usercall sub_68A68B(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A696) -------------------------------------------------------- void __usercall sub_68A696(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A6A1) -------------------------------------------------------- void __usercall sub_68A6A1(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A6AC) -------------------------------------------------------- void __usercall sub_68A6AC(int a1) { sub_6530A4(*(void **)(a1 - 16)); } //----- (0068A6B7) -------------------------------------------------------- int __cdecl sub_68A6B7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A6E0) -------------------------------------------------------- int __cdecl sub_68A6E0() { return sub_63F930((int)&unk_1324C058); } //----- (0068A6EA) -------------------------------------------------------- int __cdecl sub_68A6EA() { return sub_63F880((int)&unk_1324CEAC); } //----- (0068A6F4) -------------------------------------------------------- int __cdecl sub_68A6F4() { return sub_63F9A0((int)&unk_13250FF0); } //----- (0068A6FE) -------------------------------------------------------- int __cdecl sub_68A6FE() { return sub_63FAE0((int)&unk_13251238); } //----- (0068A708) -------------------------------------------------------- int __cdecl sub_68A708(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A730) -------------------------------------------------------- int __usercall sub_68A730(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068A738) -------------------------------------------------------- void __usercall sub_68A738(int a1) { nullsub_2((void *)(a1 - 96)); } //----- (0068A740) -------------------------------------------------------- int __usercall sub_68A740(int a1) { return sub_428A70((void *)(a1 - 52)); } //----- (0068A748) -------------------------------------------------------- int __cdecl sub_68A748(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A770) -------------------------------------------------------- void __usercall sub_68A770(int a1) { sub_424190((void **)(a1 - 28)); } //----- (0068A778) -------------------------------------------------------- int __cdecl sub_68A778(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A7A0) -------------------------------------------------------- int __usercall sub_68A7A0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068A7A8) -------------------------------------------------------- void __usercall sub_68A7A8(int a1) { *(_DWORD *)(a1 - 16) = &off_6E776C; sub_427EB0((void *)(a1 - 16)); } // 6E776C: using guessed type int (__stdcall *off_6E776C)(int, int, int); //----- (0068A7B0) -------------------------------------------------------- int __cdecl sub_68A7B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A7D0) -------------------------------------------------------- void __usercall sub_68A7D0(int a1) { sub_5534D0(*(void **)(a1 - 16)); } //----- (0068A7D8) -------------------------------------------------------- int __cdecl sub_68A7D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A800) -------------------------------------------------------- void __usercall sub_68A800(int a1) { sub_5534D0(*(void **)(a1 - 16)); } //----- (0068A808) -------------------------------------------------------- void __usercall sub_68A808(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 8108)); } //----- (0068A816) -------------------------------------------------------- int __cdecl sub_68A816(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A840) -------------------------------------------------------- void __usercall sub_68A840(int a1) { sub_43BB10((void *)(a1 - 40)); } //----- (0068A848) -------------------------------------------------------- void __usercall sub_68A848(int a1) { nullsub_2((void *)(a1 - 24)); } //----- (0068A850) -------------------------------------------------------- int __cdecl sub_68A850(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A870) -------------------------------------------------------- int __usercall sub_68A870(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0068A878) -------------------------------------------------------- int __cdecl sub_68A878(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A8A0) -------------------------------------------------------- int __usercall sub_68A8A0(int a1) { return sub_4026F0((int *)(a1 - 312)); } //----- (0068A8AB) -------------------------------------------------------- void __usercall sub_68A8AB(int a1) { sub_427EB0((void *)(a1 - 304)); } //----- (0068A8B6) -------------------------------------------------------- int __cdecl sub_68A8B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 79)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A8E0) -------------------------------------------------------- int __usercall sub_68A8E0(int a1) { return sub_4026F0((int *)(a1 - 132)); } //----- (0068A8EB) -------------------------------------------------------- void __usercall sub_68A8EB(int a1) { sub_4174B0((void *)(a1 - 152)); } //----- (0068A8F6) -------------------------------------------------------- int __cdecl sub_68A8F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A920) -------------------------------------------------------- int __usercall sub_68A920(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068A928) -------------------------------------------------------- int __usercall sub_68A928(int a1) { return sub_450670(a1 - 32); } //----- (0068A930) -------------------------------------------------------- int __cdecl sub_68A930(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A950) -------------------------------------------------------- void __usercall sub_68A950(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068A95B) -------------------------------------------------------- void __usercall sub_68A95B(int a1) { sub_54D040((void *)(*(_DWORD *)(a1 + 8) + 8)); } //----- (0068A966) -------------------------------------------------------- void __usercall sub_68A966(int a1) { sub_54D040((void *)(*(_DWORD *)(a1 + 8) + 8)); } //----- (0068A971) -------------------------------------------------------- int __cdecl sub_68A971(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A990) -------------------------------------------------------- int __cdecl sub_68A990() { int result; // eax@1 result = dword_132541E8 & 0xFFFFFFFE; dword_132541E8 &= 0xFFFFFFFEu; return result; } // 132541E8: using guessed type int dword_132541E8; //----- (0068A99E) -------------------------------------------------------- int __cdecl sub_68A99E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068A9C0) -------------------------------------------------------- void __usercall sub_68A9C0(int a1) { sub_424190((void **)(a1 - 28)); } //----- (0068A9F0) -------------------------------------------------------- void __usercall sub_68A9F0(int a1) { sub_424190((void **)(a1 - 208)); } //----- (0068A9FB) -------------------------------------------------------- void __usercall sub_68A9FB(int a1) { sub_43BB10((void *)(a1 - 248)); } //----- (0068AA06) -------------------------------------------------------- void __usercall sub_68AA06(int a1) { nullsub_2((void *)(a1 - 220)); } //----- (0068AA11) -------------------------------------------------------- void __usercall sub_68AA11(int a1) { sub_43BB10((void *)(a1 - 40)); } //----- (0068AA19) -------------------------------------------------------- int __cdecl sub_68AA19(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 63)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AA50) -------------------------------------------------------- void __usercall sub_68AA50(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (0068AA61) -------------------------------------------------------- int __cdecl sub_68AA61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AA80) -------------------------------------------------------- int __cdecl sub_68AA80(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AAA0) -------------------------------------------------------- void __usercall sub_68AAA0(int a1) { sub_4271F0(a1 - 68); } //----- (0068AAA8) -------------------------------------------------------- void __usercall sub_68AAA8(int a1) { sub_610240(a1 - 44); } //----- (0068AAB0) -------------------------------------------------------- void __usercall sub_68AAB0(int a1) { sub_610240(a1 - 44); } //----- (0068AAB8) -------------------------------------------------------- int __cdecl sub_68AAB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AB10) -------------------------------------------------------- int __usercall sub_68AB10(int a1) { return sub_4026F0((int *)(a1 - 1332)); } //----- (0068AB1B) -------------------------------------------------------- int __usercall sub_68AB1B(int a1) { return sub_428A70((void *)(a1 - 1328)); } //----- (0068AB26) -------------------------------------------------------- int __usercall sub_68AB26(int a1) { return sub_428A70((void *)(a1 - 1328)); } //----- (0068AB31) -------------------------------------------------------- int __cdecl sub_68AB31(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 334)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AB60) -------------------------------------------------------- int __usercall sub_68AB60(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068AB68) -------------------------------------------------------- int __cdecl sub_68AB68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 25)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AB90) -------------------------------------------------------- void __usercall sub_68AB90(int a1) { *(_DWORD *)(a1 - 1872) = &off_6E9574; sub_4C11C0((void *)(a1 - 1872)); } // 6E9574: using guessed type int (__stdcall *off_6E9574)(int, int, int); //----- (0068AB9B) -------------------------------------------------------- int __cdecl sub_68AB9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 474)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ABD0) -------------------------------------------------------- int __usercall sub_68ABD0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068ABD8) -------------------------------------------------------- void __usercall sub_68ABD8(int a1) { *(_DWORD *)(a1 - 40) = &off_6E9594; sub_427EB0((void *)(a1 - 40)); } // 6E9594: using guessed type int (__stdcall *off_6E9594)(int, int, int); //----- (0068ABE0) -------------------------------------------------------- int __cdecl sub_68ABE0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AC00) -------------------------------------------------------- int __usercall sub_68AC00(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068AC30) -------------------------------------------------------- int __usercall sub_68AC30(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068AC38) -------------------------------------------------------- void __usercall sub_68AC38(int a1) { sub_564DA0((void *)(a1 - 16)); } //----- (0068AC40) -------------------------------------------------------- int __usercall sub_68AC40(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0068AC48) -------------------------------------------------------- void __usercall sub_68AC48(int a1) { sub_5C0880((void *)(a1 - 28)); } //----- (0068AC50) -------------------------------------------------------- void __usercall sub_68AC50(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068AC58) -------------------------------------------------------- int __cdecl sub_68AC58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ACB0) -------------------------------------------------------- int __usercall sub_68ACB0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068ACB8) -------------------------------------------------------- void __usercall sub_68ACB8(int a1) { sub_564DA0((void *)(a1 - 16)); } //----- (0068ACC0) -------------------------------------------------------- void __usercall sub_68ACC0(int a1) { sub_5C0880((void *)(a1 - 28)); } //----- (0068ACC8) -------------------------------------------------------- void __usercall sub_68ACC8(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068ACD0) -------------------------------------------------------- void __usercall sub_68ACD0(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068ACD8) -------------------------------------------------------- void __usercall sub_68ACD8(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068ACE0) -------------------------------------------------------- int __usercall sub_68ACE0(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0068ACE8) -------------------------------------------------------- void __usercall sub_68ACE8(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068ACF0) -------------------------------------------------------- void __usercall sub_68ACF0(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068ACF8) -------------------------------------------------------- int __cdecl sub_68ACF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AD20) -------------------------------------------------------- int __usercall sub_68AD20(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068AD28) -------------------------------------------------------- void __usercall sub_68AD28(int a1) { sub_564DA0((void *)(a1 - 16)); } //----- (0068AD30) -------------------------------------------------------- void __usercall sub_68AD30(int a1) { sub_5C0880((void *)(a1 - 28)); } //----- (0068AD38) -------------------------------------------------------- int __usercall sub_68AD38(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0068AD40) -------------------------------------------------------- void __usercall sub_68AD40(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068AD48) -------------------------------------------------------- void __usercall sub_68AD48(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068AD50) -------------------------------------------------------- int __cdecl sub_68AD50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AD70) -------------------------------------------------------- int __usercall sub_68AD70(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068AD78) -------------------------------------------------------- void __usercall sub_68AD78(int a1) { sub_564DA0((void *)(a1 - 16)); } //----- (0068AD80) -------------------------------------------------------- int __usercall sub_68AD80(int a1) { return sub_450670(a1 - 36); } //----- (0068AD88) -------------------------------------------------------- void __usercall sub_68AD88(int a1) { sub_424190((void **)(a1 - 36)); } //----- (0068AD90) -------------------------------------------------------- int __cdecl sub_68AD90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ADB0) -------------------------------------------------------- int __usercall sub_68ADB0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068ADB8) -------------------------------------------------------- void __usercall sub_68ADB8(int a1) { sub_424190((void **)(a1 - 76)); } //----- (0068ADC0) -------------------------------------------------------- int __cdecl sub_68ADC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ADE0) -------------------------------------------------------- void __usercall sub_68ADE0(int a1) { *(_DWORD *)(a1 - 1632) = &off_6E9584; sub_4C11C0((void *)(a1 - 1632)); } // 6E9584: using guessed type int (__stdcall *off_6E9584)(int, int, int); //----- (0068ADEB) -------------------------------------------------------- int __cdecl sub_68ADEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 409)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AE20) -------------------------------------------------------- int __usercall sub_68AE20(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068AE28) -------------------------------------------------------- int __cdecl sub_68AE28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AE50) -------------------------------------------------------- int __usercall sub_68AE50(int a1) { return sub_428A70((void *)(a1 - 808)); } //----- (0068AE5B) -------------------------------------------------------- int __cdecl sub_68AE5B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 203)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AE90) -------------------------------------------------------- int __usercall sub_68AE90(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068AE98) -------------------------------------------------------- void __usercall sub_68AE98(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (0068AEA0) -------------------------------------------------------- int __usercall sub_68AEA0(int a1) { return sub_428A70((void *)(a1 - 40)); } //----- (0068AEA8) -------------------------------------------------------- int __cdecl sub_68AEA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AED0) -------------------------------------------------------- void __usercall sub_68AED0(int a1) { nullsub_2((void *)(a1 - 132)); } //----- (0068AEDB) -------------------------------------------------------- void __usercall sub_68AEDB(int a1) { nullsub_2((void *)(a1 - 136)); } //----- (0068AEE6) -------------------------------------------------------- int __cdecl sub_68AEE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 40)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AF10) -------------------------------------------------------- void __usercall sub_68AF10(int a1) { sub_5D4580((void *)(a1 - 48)); } //----- (0068AF18) -------------------------------------------------------- int __usercall sub_68AF18(int a1) { return sub_428A70((void *)(a1 - 24)); } //----- (0068AF40) -------------------------------------------------------- int __usercall sub_68AF40(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068AF48) -------------------------------------------------------- void __usercall sub_68AF48(int a1) { sub_5D4580((void *)(a1 - 40)); } //----- (0068AF50) -------------------------------------------------------- int __cdecl sub_68AF50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AF70) -------------------------------------------------------- int __usercall sub_68AF70(int a1) { return sub_4026F0((int *)(a1 - 224)); } //----- (0068AF7B) -------------------------------------------------------- int __cdecl sub_68AF7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 57)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068AFB0) -------------------------------------------------------- void __usercall sub_68AFB0(int a1) { sub_43C4E0(a1 - 36); } //----- (0068AFE0) -------------------------------------------------------- int __usercall sub_68AFE0(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068AFE8) -------------------------------------------------------- int __cdecl sub_68AFE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B010) -------------------------------------------------------- void __usercall sub_68B010(int a1) { sub_575B40(*(_DWORD *)(a1 - 20)); } //----- (0068B040) -------------------------------------------------------- void __usercall sub_68B040(int a1) { sub_610240(a1 - 44); } //----- (0068B048) -------------------------------------------------------- int __cdecl sub_68B048(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B070) -------------------------------------------------------- int __usercall sub_68B070(int a1) { return sub_428A70((void *)(a1 - 36)); } //----- (0068B078) -------------------------------------------------------- int __usercall sub_68B078(int a1) { return sub_428A70((void *)(a1 - 24)); } //----- (0068B080) -------------------------------------------------------- int __cdecl sub_68B080(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B0A0) -------------------------------------------------------- int __usercall sub_68B0A0(int a1) { return sub_4026F0((int *)(a1 - 244)); } //----- (0068B0AB) -------------------------------------------------------- void __usercall sub_68B0AB(int a1) { nullsub_2((void *)(a1 - 168)); } //----- (0068B0B6) -------------------------------------------------------- int __cdecl sub_68B0B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 62)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B0E0) -------------------------------------------------------- int __usercall sub_68B0E0(int a1) { return sub_4026F0((int *)(a1 - 788)); } //----- (0068B0EB) -------------------------------------------------------- int __cdecl sub_68B0EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 198)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B120) -------------------------------------------------------- void __usercall sub_68B120(int a1) { sub_461490((void *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0068B12B) -------------------------------------------------------- int __cdecl sub_68B12B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B150) -------------------------------------------------------- int __usercall sub_68B150(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068B158) -------------------------------------------------------- int __usercall sub_68B158(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0068B160) -------------------------------------------------------- int __usercall sub_68B160(int a1) { return sub_428A70((void *)(a1 - 40)); } //----- (0068B168) -------------------------------------------------------- int __cdecl sub_68B168(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B190) -------------------------------------------------------- int __usercall sub_68B190(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068B198) -------------------------------------------------------- void __usercall sub_68B198(int a1) { sub_461490((void *)(a1 - 48)); } //----- (0068B1A0) -------------------------------------------------------- int __usercall sub_68B1A0(int a1) { return sub_428A70((void *)(a1 - 32)); } //----- (0068B1A8) -------------------------------------------------------- int __cdecl sub_68B1A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B1D0) -------------------------------------------------------- int __usercall sub_68B1D0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068B200) -------------------------------------------------------- int __usercall sub_68B200(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068B208) -------------------------------------------------------- void __usercall sub_68B208(int a1) { sub_461490((void *)(a1 - 28)); } //----- (0068B240) -------------------------------------------------------- void __usercall sub_68B240(int a1) { sub_4C11C0(*(void **)(a1 - 20)); } //----- (0068B248) -------------------------------------------------------- int __cdecl sub_68B248(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B270) -------------------------------------------------------- void __usercall sub_68B270(int a1) { sub_57C1F0((void *)(a1 - 9416)); } //----- (0068B27B) -------------------------------------------------------- void __usercall sub_68B27B(int a1) { sub_57C1F0((void *)(a1 - 7536)); } //----- (0068B286) -------------------------------------------------------- void __usercall sub_68B286(int a1) { sub_57C1F0((void *)(a1 - 3776)); } //----- (0068B291) -------------------------------------------------------- void __usercall sub_68B291(int a1) { sub_57C1F0((void *)(a1 - 1896)); } //----- (0068B29C) -------------------------------------------------------- void __usercall sub_68B29C(int a1) { sub_57C1F0((void *)(a1 - 5656)); } //----- (0068B2A7) -------------------------------------------------------- int __cdecl sub_68B2A7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2356)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B2D0) -------------------------------------------------------- int __usercall sub_68B2D0(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (0068B2D8) -------------------------------------------------------- int __cdecl sub_68B2D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B300) -------------------------------------------------------- int __usercall sub_68B300(int a1) { return sub_4026F0((int *)(a1 - 1660)); } //----- (0068B30B) -------------------------------------------------------- void __usercall sub_68B30B(int a1) { sub_424190((void **)(a1 - 1656)); } //----- (0068B316) -------------------------------------------------------- void __usercall sub_68B316(int a1) { *(_DWORD *)(a1 - 1632) = &off_6EBD44; sub_4C11C0((void *)(a1 - 1632)); } // 6EBD44: using guessed type int (__stdcall *off_6EBD44)(int, int, int); //----- (0068B321) -------------------------------------------------------- int __cdecl sub_68B321(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 416)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B350) -------------------------------------------------------- int __usercall sub_68B350(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068B358) -------------------------------------------------------- void __usercall sub_68B358(int a1) { sub_424190((void **)(a1 - 32)); } //----- (0068B360) -------------------------------------------------------- int __cdecl sub_68B360(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B380) -------------------------------------------------------- int __usercall sub_68B380(int a1) { return sub_4026F0((int *)(a1 - 336)); } //----- (0068B38B) -------------------------------------------------------- void __usercall sub_68B38B(int a1) { nullsub_2((void *)(a1 - 168)); } //----- (0068B396) -------------------------------------------------------- void __usercall sub_68B396(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3A1) -------------------------------------------------------- void __usercall sub_68B3A1(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3AC) -------------------------------------------------------- void __usercall sub_68B3AC(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3B7) -------------------------------------------------------- void __usercall sub_68B3B7(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3C2) -------------------------------------------------------- void __usercall sub_68B3C2(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3CD) -------------------------------------------------------- void __usercall sub_68B3CD(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3D8) -------------------------------------------------------- void __usercall sub_68B3D8(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3E3) -------------------------------------------------------- void __usercall sub_68B3E3(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3EE) -------------------------------------------------------- void __usercall sub_68B3EE(int a1) { sub_424190((void **)(a1 - 196)); } //----- (0068B3F9) -------------------------------------------------------- int __cdecl sub_68B3F9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 85)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B430) -------------------------------------------------------- int __usercall sub_68B430(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (0068B43B) -------------------------------------------------------- void __usercall sub_68B43B(int a1) { sub_424190((void **)(a1 - 108)); } //----- (0068B443) -------------------------------------------------------- void __usercall sub_68B443(int a1) { nullsub_2((void *)(a1 - 76)); } //----- (0068B44B) -------------------------------------------------------- int __cdecl sub_68B44B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B480) -------------------------------------------------------- int __usercall sub_68B480(int a1) { return sub_4026F0((int *)(a1 - 172)); } //----- (0068B48B) -------------------------------------------------------- void __usercall sub_68B48B(int a1) { sub_424190((void **)(a1 - 140)); } //----- (0068B496) -------------------------------------------------------- void __usercall sub_68B496(int a1) { nullsub_2((void *)(a1 - 76)); } //----- (0068B49E) -------------------------------------------------------- int __cdecl sub_68B49E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 47)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B4D0) -------------------------------------------------------- int __usercall sub_68B4D0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068B500) -------------------------------------------------------- int __usercall sub_68B500(int a1) { return sub_4026F0((int *)(a1 - 104)); } //----- (0068B508) -------------------------------------------------------- int __usercall sub_68B508(int a1) { return sub_428A70((void *)(a1 - 100)); } //----- (0068B510) -------------------------------------------------------- void __usercall sub_68B510(int a1) { nullsub_2((void *)(a1 - 76)); } //----- (0068B518) -------------------------------------------------------- int __cdecl sub_68B518(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B540) -------------------------------------------------------- int __usercall sub_68B540(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068B548) -------------------------------------------------------- void __usercall sub_68B548(int a1) { *(_DWORD *)(a1 - 32 + 4) = &off_6B039C; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); //----- (0068B550) -------------------------------------------------------- void __usercall sub_68B550(int a1) { sub_5D4580((void *)(a1 - 32)); } //----- (0068B558) -------------------------------------------------------- void __usercall sub_68B558(int a1) { sub_424190((void **)(a1 - 28)); } //----- (0068B560) -------------------------------------------------------- int __cdecl sub_68B560(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B580) -------------------------------------------------------- int __usercall sub_68B580(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068B588) -------------------------------------------------------- void __usercall sub_68B588(int a1) { sub_5D4580((void *)(a1 - 48)); } //----- (0068B590) -------------------------------------------------------- int __cdecl sub_68B590(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B5B0) -------------------------------------------------------- void __cdecl sub_68B5B0() { sub_4C11C0(&dword_13255290); } // 13255290: using guessed type int dword_13255290; //----- (0068B5BA) -------------------------------------------------------- int __cdecl sub_68B5BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B5E0) -------------------------------------------------------- void __cdecl sub_68B5E0() { sub_4C11C0(&dword_13257008); } // 13257008: using guessed type int dword_13257008; //----- (0068B5EA) -------------------------------------------------------- int __cdecl sub_68B5EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B610) -------------------------------------------------------- void __cdecl sub_68B610() { sub_4C11C0(&dword_132559E8); } // 132559E8: using guessed type int dword_132559E8; //----- (0068B61A) -------------------------------------------------------- int __cdecl sub_68B61A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B640) -------------------------------------------------------- void __cdecl sub_68B640() { sub_4C11C0(&dword_13256140); } // 13256140: using guessed type int dword_13256140; //----- (0068B64A) -------------------------------------------------------- int __cdecl sub_68B64A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B670) -------------------------------------------------------- void __cdecl sub_68B670() { sub_4C11C0(&dword_13256898); } // 13256898: using guessed type int dword_13256898; //----- (0068B67A) -------------------------------------------------------- int __cdecl sub_68B67A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B6A0) -------------------------------------------------------- void __usercall sub_68B6A0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_6ED2EC; sub_639940(v1); } // 6ED2EC: using guessed type int (__thiscall *off_6ED2EC)(void *, char); //----- (0068B6A8) -------------------------------------------------------- void __usercall sub_68B6A8(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 736; *(_DWORD *)v1 = &off_6ED2E4; sub_639940(v1); } // 6ED2E4: using guessed type int (__thiscall *off_6ED2E4)(void *, char); //----- (0068B6B6) -------------------------------------------------------- void __usercall sub_68B6B6(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 880; *(_DWORD *)v1 = &off_6ED2F4; sub_639940(v1); } // 6ED2F4: using guessed type int (__thiscall *off_6ED2F4)(void *, char); //----- (0068B6C4) -------------------------------------------------------- void __usercall sub_68B6C4(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1016; *(_DWORD *)v1 = &off_6ED2FC; sub_639940(v1); } // 6ED2FC: using guessed type int (__thiscall *off_6ED2FC)(void *, char); //----- (0068B6D2) -------------------------------------------------------- int __cdecl sub_68B6D2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B6F0) -------------------------------------------------------- void __cdecl sub_68B6F0() { JUMPOUT(loc_582C50); } // 582C50: using guessed type int loc_582C50(); //----- (0068B6F8) -------------------------------------------------------- void __cdecl sub_68B6F8() { JUMPOUT(loc_583110); } // 583110: using guessed type int loc_583110(); //----- (0068B706) -------------------------------------------------------- void __cdecl sub_68B706() { JUMPOUT(loc_582D10); } // 582D10: using guessed type int loc_582D10(); //----- (0068B714) -------------------------------------------------------- void __cdecl sub_68B714() { JUMPOUT(loc_582DD0); } // 582DD0: using guessed type int loc_582DD0(); //----- (0068B722) -------------------------------------------------------- int __cdecl sub_68B722(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B740) -------------------------------------------------------- void __usercall sub_68B740(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 4; *(_DWORD *)v1 = &off_6ED30C; sub_639940(v1); } // 6ED30C: using guessed type int (__thiscall *off_6ED30C)(void *, char); //----- (0068B74B) -------------------------------------------------------- int __cdecl sub_68B74B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B770) -------------------------------------------------------- int __cdecl sub_68B770(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B790) -------------------------------------------------------- void __usercall sub_68B790(int a1) { sub_6530A4(*(void **)(a1 - 612)); } //----- (0068B79E) -------------------------------------------------------- int __cdecl sub_68B79E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 156)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B7D0) -------------------------------------------------------- void __cdecl sub_68B7D0() { JUMPOUT(loc_582E80); } // 582E80: using guessed type int loc_582E80(); //----- (0068B7DA) -------------------------------------------------------- int __cdecl sub_68B7DA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B800) -------------------------------------------------------- void __cdecl sub_68B800() { sub_583280(&unk_132577A0); } //----- (0068B80A) -------------------------------------------------------- int __cdecl sub_68B80A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B830) -------------------------------------------------------- int __usercall sub_68B830(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0068B838) -------------------------------------------------------- int __cdecl sub_68B838(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B860) -------------------------------------------------------- void __cdecl sub_68B860() { dword_13258298 = (int)&off_6EE110; sub_639940((int)&dword_13258298); } // 6EE110: using guessed type int (__thiscall *off_6EE110)(void *, char); // 13258298: using guessed type int dword_13258298; //----- (0068B86A) -------------------------------------------------------- int __cdecl sub_68B86A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B890) -------------------------------------------------------- int __usercall sub_68B890(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068B898) -------------------------------------------------------- void __usercall sub_68B898(int a1) { sub_43BB10((void *)(a1 - 48)); } //----- (0068B8C0) -------------------------------------------------------- int __usercall sub_68B8C0(int a1) { return sub_4026F0((int *)(a1 - 144)); } //----- (0068B8CB) -------------------------------------------------------- int __cdecl sub_68B8CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B900) -------------------------------------------------------- int __usercall sub_68B900(int a1) { return sub_4026F0((int *)(a1 - 888)); } //----- (0068B90B) -------------------------------------------------------- int __cdecl sub_68B90B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 223)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B940) -------------------------------------------------------- int __usercall sub_68B940(int a1) { return sub_4026F0((int *)(a1 - 180)); } //----- (0068B94B) -------------------------------------------------------- void __usercall sub_68B94B(int a1) { sub_43BB10((void *)(a1 - 156)); } //----- (0068B956) -------------------------------------------------------- int __cdecl sub_68B956(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 46)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B980) -------------------------------------------------------- int __cdecl sub_68B980(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B9A0) -------------------------------------------------------- int __cdecl sub_68B9A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B9C0) -------------------------------------------------------- void __usercall sub_68B9C0(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (0068B9D1) -------------------------------------------------------- int __cdecl sub_68B9D1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068B9F0) -------------------------------------------------------- int __cdecl sub_68B9F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BA10) -------------------------------------------------------- void __usercall sub_68BA10(int a1) { *(_DWORD *)(a1 - 152) = &off_6EEBD0; sub_639940(a1 - 152); } // 6EEBD0: using guessed type int (__thiscall *off_6EEBD0)(void *, char); //----- (0068BA1B) -------------------------------------------------------- void __usercall sub_68BA1B(int a1) { sub_5C4DE0(a1 - 184); } //----- (0068BA26) -------------------------------------------------------- int __cdecl sub_68BA26(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 47)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BA50) -------------------------------------------------------- int __usercall sub_68BA50(int a1) { return sub_4026F0((int *)(a1 - 52)); } //----- (0068BA58) -------------------------------------------------------- int __cdecl sub_68BA58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BA80) -------------------------------------------------------- int __usercall sub_68BA80(int a1) { return sub_4026F0((int *)(a1 - 300)); } //----- (0068BA8B) -------------------------------------------------------- int __usercall sub_68BA8B(int a1) { return sub_428A70((void *)(a1 - 296)); } //----- (0068BA96) -------------------------------------------------------- int __usercall sub_68BA96(int a1) { return sub_428A70((void *)(a1 - 284)); } //----- (0068BAA1) -------------------------------------------------------- int __cdecl sub_68BAA1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 76)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BAD0) -------------------------------------------------------- int __usercall sub_68BAD0(int a1) { return sub_4026F0((int *)(a1 - 316)); } //----- (0068BADB) -------------------------------------------------------- int __usercall sub_68BADB(int a1) { return sub_428A70((void *)(a1 - 312)); } //----- (0068BAE6) -------------------------------------------------------- int __cdecl sub_68BAE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 80)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BB10) -------------------------------------------------------- int __usercall sub_68BB10(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068BB18) -------------------------------------------------------- void __usercall sub_68BB18(int a1) { sub_43BB10((void *)(a1 - 112)); } //----- (0068BB20) -------------------------------------------------------- void __usercall sub_68BB20(int a1) { sub_43BB10((void *)(a1 - 92)); } //----- (0068BB28) -------------------------------------------------------- int __cdecl sub_68BB28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BB50) -------------------------------------------------------- int __usercall sub_68BB50(int a1) { return sub_4026F0((int *)(a1 - 304)); } //----- (0068BB5B) -------------------------------------------------------- void __usercall sub_68BB5B(int a1) { sub_43BB10((void *)(a1 - 296)); } //----- (0068BB66) -------------------------------------------------------- int __cdecl sub_68BB66(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 77)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BB90) -------------------------------------------------------- int __usercall sub_68BB90(int a1) { return sub_4026F0((int *)(a1 - 532)); } //----- (0068BB9B) -------------------------------------------------------- int __cdecl sub_68BB9B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 134)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BBD0) -------------------------------------------------------- int __usercall sub_68BBD0(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068BC00) -------------------------------------------------------- void __usercall sub_68BC00(int a1) { sub_610240(a1 - 44); } //----- (0068BC08) -------------------------------------------------------- void __usercall sub_68BC08(int a1) { sub_610240(a1 - 72); } //----- (0068BC10) -------------------------------------------------------- int __cdecl sub_68BC10(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 30)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BC40) -------------------------------------------------------- int __usercall sub_68BC40(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068BC48) -------------------------------------------------------- int __usercall sub_68BC48(int a1) { return sub_428A70((void *)(a1 - 40)); } //----- (0068BC50) -------------------------------------------------------- int __usercall sub_68BC50(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0068BC58) -------------------------------------------------------- int __cdecl sub_68BC58(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BC80) -------------------------------------------------------- int __usercall sub_68BC80(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0068BC88) -------------------------------------------------------- void __usercall sub_68BC88(int a1) { sub_43BB10((void *)(a1 - 100)); } //----- (0068BC90) -------------------------------------------------------- void __usercall sub_68BC90(int a1) { sub_43BB10((void *)(a1 - 84)); } //----- (0068BC98) -------------------------------------------------------- int __cdecl sub_68BC98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BCC0) -------------------------------------------------------- int __usercall sub_68BCC0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068BCC8) -------------------------------------------------------- int __cdecl sub_68BCC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BCF0) -------------------------------------------------------- int __usercall sub_68BCF0(int a1) { return sub_4026F0((int *)(a1 - 340)); } //----- (0068BCFB) -------------------------------------------------------- void __usercall sub_68BCFB(int a1) { nullsub_2((void *)(a1 - 312)); } //----- (0068BD06) -------------------------------------------------------- int __usercall sub_68BD06(int a1) { return sub_450670(a1 - 356); } //----- (0068BD11) -------------------------------------------------------- int __cdecl sub_68BD11(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 90)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BD40) -------------------------------------------------------- int __usercall sub_68BD40(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (0068BD4B) -------------------------------------------------------- void __usercall sub_68BD4B(int a1) { nullsub_2((void *)(a1 - 276)); } //----- (0068BD56) -------------------------------------------------------- int __cdecl sub_68BD56(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BD80) -------------------------------------------------------- int __usercall sub_68BD80(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068BD88) -------------------------------------------------------- void __usercall sub_68BD88(int a1) { sub_427EB0((void *)(a1 - 16)); } //----- (0068BD90) -------------------------------------------------------- int __cdecl sub_68BD90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BDB0) -------------------------------------------------------- int __usercall sub_68BDB0(int a1) { return sub_4026F0((int *)(a1 - 1300)); } //----- (0068BDBB) -------------------------------------------------------- int __cdecl sub_68BDBB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 326)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BDF0) -------------------------------------------------------- int __usercall sub_68BDF0(int a1) { return sub_4026F0((int *)(a1 - 180)); } //----- (0068BDFB) -------------------------------------------------------- void __usercall sub_68BDFB(int a1) { sub_43BB10((void *)(a1 - 176)); } //----- (0068BE06) -------------------------------------------------------- int __cdecl sub_68BE06(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 46)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BE30) -------------------------------------------------------- int __usercall sub_68BE30(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068BE38) -------------------------------------------------------- int __cdecl sub_68BE38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BE60) -------------------------------------------------------- int __usercall sub_68BE60(int a1) { return sub_4026F0((int *)(a1 - 336)); } //----- (0068BE6B) -------------------------------------------------------- int __cdecl sub_68BE6B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 84)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BEA0) -------------------------------------------------------- int __usercall sub_68BEA0(int a1) { return sub_4026F0((int *)(a1 - 272)); } //----- (0068BEAB) -------------------------------------------------------- int __cdecl sub_68BEAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 69)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BEE0) -------------------------------------------------------- int __usercall sub_68BEE0(int a1) { return sub_4026F0((int *)(a1 - 124)); } //----- (0068BEE8) -------------------------------------------------------- int __cdecl sub_68BEE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 31)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BF10) -------------------------------------------------------- int __usercall sub_68BF10(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068BF18) -------------------------------------------------------- int __cdecl sub_68BF18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BF40) -------------------------------------------------------- void __usercall sub_68BF40(int a1) { nullsub_2((void *)(a1 - 284)); } //----- (0068BF4B) -------------------------------------------------------- void __usercall sub_68BF4B(int a1) { sub_4646E0(a1 - 796); } //----- (0068BF56) -------------------------------------------------------- void __cdecl sub_68BF56() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (0068BF61) -------------------------------------------------------- int __cdecl sub_68BF61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 206)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BF90) -------------------------------------------------------- int __usercall sub_68BF90(int a1) { return sub_4026F0((int *)(a1 - 668)); } //----- (0068BF9B) -------------------------------------------------------- void __usercall sub_68BF9B(int a1) { sub_4646E0(a1 - 640); } //----- (0068BFA6) -------------------------------------------------------- void __cdecl sub_68BFA6() { JUMPOUT(loc_462090); } // 462090: using guessed type int loc_462090(); //----- (0068BFB1) -------------------------------------------------------- int __cdecl sub_68BFB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 168)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068BFE0) -------------------------------------------------------- int __usercall sub_68BFE0(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068BFE8) -------------------------------------------------------- int __cdecl sub_68BFE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C010) -------------------------------------------------------- int __usercall sub_68C010(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068C018) -------------------------------------------------------- int __cdecl sub_68C018(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C040) -------------------------------------------------------- int (__stdcall **__usercall sub_68C040(int a1))(int, int) { return sub_64C2E0((SOCKET *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0068C04B) -------------------------------------------------------- int __cdecl sub_68C04B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C070) -------------------------------------------------------- int (__stdcall **__usercall sub_68C070(int a1))(int, int) { return sub_64C2E0((SOCKET *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0068C07B) -------------------------------------------------------- void __usercall sub_68C07B(int a1) { sub_64C830(*(_DWORD *)(a1 - 16) + 224); } //----- (0068C089) -------------------------------------------------------- void __usercall sub_68C089(int a1) { *(_DWORD *)(*(_DWORD *)(a1 - 16) + 248) = &off_6F4588; } // 6F4588: using guessed type int (__stdcall *off_6F4588)(int, int); //----- (0068C097) -------------------------------------------------------- int __cdecl sub_68C097(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C0C0) -------------------------------------------------------- void __usercall sub_68C0C0(int a1) { nullsub_2(*(void **)(a1 - 360)); } //----- (0068C0CB) -------------------------------------------------------- int __cdecl sub_68C0CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 91)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C100) -------------------------------------------------------- int __usercall sub_68C100(int a1) { return sub_4026F0((int *)(a1 - 80)); } //----- (0068C108) -------------------------------------------------------- int __cdecl sub_68C108(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C130) -------------------------------------------------------- int __usercall sub_68C130(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (0068C13B) -------------------------------------------------------- int __cdecl sub_68C13B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C170) -------------------------------------------------------- int __usercall sub_68C170(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068C178) -------------------------------------------------------- void __usercall sub_68C178(int a1) { nullsub_2(*(void **)(a1 + 12)); } //----- (0068C180) -------------------------------------------------------- int __cdecl sub_68C180(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C1A0) -------------------------------------------------------- int __usercall sub_68C1A0(int a1) { return sub_4026F0((int *)(a1 - 328)); } //----- (0068C1AB) -------------------------------------------------------- int __cdecl sub_68C1AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 83)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C1E0) -------------------------------------------------------- int __usercall sub_68C1E0(int a1) { return sub_4026F0((int *)(a1 - 276)); } //----- (0068C1EB) -------------------------------------------------------- void __usercall sub_68C1EB(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (0068C1F6) -------------------------------------------------------- int __cdecl sub_68C1F6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 69)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C220) -------------------------------------------------------- int __usercall sub_68C220(int a1) { return sub_4026F0((int *)(a1 - 140)); } //----- (0068C22B) -------------------------------------------------------- void __usercall sub_68C22B(int a1) { nullsub_2(*(void **)(a1 - 144)); } //----- (0068C236) -------------------------------------------------------- int __cdecl sub_68C236(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C260) -------------------------------------------------------- int __usercall sub_68C260(int a1) { return sub_5A8360(*(_DWORD *)(a1 - 16) + 64); } // 5A8360: using guessed type int __thiscall sub_5A8360(_DWORD); //----- (0068C26B) -------------------------------------------------------- HANDLE __usercall sub_68C26B(int a1) { return sub_64CF90(*(_DWORD *)(a1 - 16) + 1420); } //----- (0068C279) -------------------------------------------------------- void __usercall sub_68C279(int a1) { sub_64F460((SOCKET *)(*(_DWORD *)(a1 - 16) + 1468)); } //----- (0068C287) -------------------------------------------------------- int __cdecl sub_68C287(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C2B0) -------------------------------------------------------- void __usercall sub_68C2B0(int a1) { type_info::_type_info((void *)(a1 - 1156)); } //----- (0068C2BB) -------------------------------------------------------- void __usercall sub_68C2BB(int a1) { type_info::_type_info((void *)(a1 - 1196)); } //----- (0068C2C6) -------------------------------------------------------- int __usercall sub_68C2C6(int a1) { return _LN21((void *)(a1 - 1128), 0x10u, 5, type_info::_type_info); } //----- (0068C2DC) -------------------------------------------------------- void __usercall sub_68C2DC(int a1) { operator delete(*(void **)(a1 - 1136)); } //----- (0068C2EA) -------------------------------------------------------- void __usercall sub_68C2EA(int a1) { type_info::_type_info(*(void **)(a1 - 1200)); } //----- (0068C2F5) -------------------------------------------------------- void __usercall sub_68C2F5(int a1) { type_info::_type_info(*(void **)(a1 - 1204)); } //----- (0068C300) -------------------------------------------------------- int __cdecl sub_68C300(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 302)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C330) -------------------------------------------------------- int __usercall sub_68C330(int a1) { return sub_5A8360(*(_DWORD *)(a1 - 16) + 64); } // 5A8360: using guessed type int __thiscall sub_5A8360(_DWORD); //----- (0068C33B) -------------------------------------------------------- HANDLE __usercall sub_68C33B(int a1) { return sub_64CF90(*(_DWORD *)(a1 - 16) + 1420); } //----- (0068C349) -------------------------------------------------------- void __usercall sub_68C349(int a1) { sub_64F460((SOCKET *)(*(_DWORD *)(a1 - 16) + 1468)); } //----- (0068C357) -------------------------------------------------------- int __cdecl sub_68C357(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C380) -------------------------------------------------------- void __usercall sub_68C380(int a1) { type_info::_type_info(*(void **)(a1 - 1048)); } //----- (0068C38B) -------------------------------------------------------- void __usercall sub_68C38B(int a1) { operator delete(*(void **)(a1 - 1044)); } //----- (0068C399) -------------------------------------------------------- int __cdecl sub_68C399(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 275)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C3D0) -------------------------------------------------------- void __usercall sub_68C3D0(int a1) { sub_610240(a1 - 112); } //----- (0068C3D8) -------------------------------------------------------- int __cdecl sub_68C3D8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 34)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C400) -------------------------------------------------------- int __usercall sub_68C400(int a1) { return sub_4026F0((int *)(a1 - 1904)); } //----- (0068C40B) -------------------------------------------------------- void __usercall sub_68C40B(int a1) { nullsub_2((void *)(a1 - 1880)); } //----- (0068C416) -------------------------------------------------------- int __cdecl sub_68C416(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 477)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C440) -------------------------------------------------------- void __cdecl sub_68C440() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068C44A) -------------------------------------------------------- int __cdecl sub_68C44A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C470) -------------------------------------------------------- void __usercall sub_68C470(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (0068C47B) -------------------------------------------------------- int __cdecl sub_68C47B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 67)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C4B0) -------------------------------------------------------- void __usercall sub_68C4B0(int a1) { sub_626C10(*(_DWORD *)(a1 - 16) + 4); } //----- (0068C4BB) -------------------------------------------------------- int __cdecl sub_68C4BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C4E0) -------------------------------------------------------- void __usercall sub_68C4E0(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6F5CAC; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6F5CAC: using guessed type int (__thiscall *off_6F5CAC)(void *, char); //----- (0068C4E8) -------------------------------------------------------- int __cdecl sub_68C4E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C510) -------------------------------------------------------- void __usercall sub_68C510(int a1) { sub_610240(a1 - 304); } //----- (0068C51B) -------------------------------------------------------- int __cdecl sub_68C51B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 88)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C550) -------------------------------------------------------- void __usercall sub_68C550(int a1) { *(_DWORD *)(a1 - 20) = &off_6F5D20; } // 6F5D20: using guessed type int (__stdcall *off_6F5D20)(int, int); //----- (0068C558) -------------------------------------------------------- int __cdecl sub_68C558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C580) -------------------------------------------------------- void __cdecl sub_68C580() { JUMPOUT(loc_5AC260); } // 5AC260: using guessed type int loc_5AC260(); //----- (0068C588) -------------------------------------------------------- void __usercall sub_68C588(int a1) { sub_6530A4(*(void **)(a1 + 8)); } //----- (0068C593) -------------------------------------------------------- int __cdecl sub_68C593(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C5B0) -------------------------------------------------------- int __cdecl sub_68C5B0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C5D0) -------------------------------------------------------- int __cdecl sub_68C5D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C5F0) -------------------------------------------------------- int __cdecl sub_68C5F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C610) -------------------------------------------------------- int __cdecl sub_68C610(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C630) -------------------------------------------------------- int __cdecl sub_68C630(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C650) -------------------------------------------------------- void __usercall sub_68C650(int a1) { sub_610240(a1 - 72); } //----- (0068C658) -------------------------------------------------------- void __usercall sub_68C658(int a1) { sub_610240(a1 - 44); } //----- (0068C660) -------------------------------------------------------- int __cdecl sub_68C660(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 19)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C690) -------------------------------------------------------- void __usercall sub_68C690(int a1) { sub_643080((void *)(a1 - 67684)); } //----- (0068C69B) -------------------------------------------------------- int __cdecl sub_68C69B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16923)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C6D0) -------------------------------------------------------- void __usercall sub_68C6D0(int a1) { sub_5B3E10(*(_DWORD *)(a1 - 20) + 12); } //----- (0068C6DB) -------------------------------------------------------- void __usercall sub_68C6DB(int a1) { sub_5B3E10(*(_DWORD *)(a1 - 20) + 28); } //----- (0068C710) -------------------------------------------------------- void __usercall sub_68C710(int a1) { operator delete(*(void **)(a1 - 28)); } //----- (0068C740) -------------------------------------------------------- void __usercall sub_68C740(int a1) { *(_DWORD *)(a1 - 628) = &off_6F5CD8; sub_639940(a1 - 628); } // 6F5CD8: using guessed type int (__thiscall *off_6F5CD8)(void *, char); //----- (0068C74B) -------------------------------------------------------- int __cdecl sub_68C74B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 160)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C780) -------------------------------------------------------- void __usercall sub_68C780(int a1) { *(_DWORD *)(a1 - 596) = &off_6F5CE0; sub_639940(a1 - 596); } // 6F5CE0: using guessed type int (__thiscall *off_6F5CE0)(void *, char); //----- (0068C78B) -------------------------------------------------------- int __cdecl sub_68C78B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 152)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C7C0) -------------------------------------------------------- void __usercall sub_68C7C0(int a1) { *(_DWORD *)(a1 - 600) = &off_6F5CE8; sub_639940(a1 - 600); } // 6F5CE8: using guessed type int (__thiscall *off_6F5CE8)(void *, char); //----- (0068C7CB) -------------------------------------------------------- int __cdecl sub_68C7CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 151)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C800) -------------------------------------------------------- void __usercall sub_68C800(int a1) { *(_DWORD *)(a1 - 668) = &off_6F5CF0; sub_639940(a1 - 668); } // 6F5CF0: using guessed type int (__thiscall *off_6F5CF0)(void *, char); //----- (0068C80B) -------------------------------------------------------- int __cdecl sub_68C80B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 172)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C840) -------------------------------------------------------- void __usercall sub_68C840(int a1) { *(_DWORD *)(a1 - 628) = &off_6F5CF8; sub_639940(a1 - 628); } // 6F5CF8: using guessed type int (__thiscall *off_6F5CF8)(void *, char); //----- (0068C84B) -------------------------------------------------------- int __cdecl sub_68C84B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 160)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C880) -------------------------------------------------------- void __usercall sub_68C880(int a1) { *(_DWORD *)(a1 - 604) = &off_6F5D00; sub_639940(a1 - 604); } // 6F5D00: using guessed type int (__thiscall *off_6F5D00)(void *, char); //----- (0068C88B) -------------------------------------------------------- int __cdecl sub_68C88B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 152)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C8C0) -------------------------------------------------------- void __usercall sub_68C8C0(int a1) { *(_DWORD *)(a1 - 604) = &off_6F5D08; sub_639940(a1 - 604); } // 6F5D08: using guessed type int (__thiscall *off_6F5D08)(void *, char); //----- (0068C8CB) -------------------------------------------------------- int __cdecl sub_68C8CB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 152)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C900) -------------------------------------------------------- void __usercall sub_68C900(int a1) { *(_DWORD *)(a1 - 632) = &off_6F5D10; sub_639940(a1 - 632); } // 6F5D10: using guessed type int (__thiscall *off_6F5D10)(void *, char); //----- (0068C90B) -------------------------------------------------------- int __cdecl sub_68C90B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 161)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C940) -------------------------------------------------------- void __usercall sub_68C940(int a1) { *(_DWORD *)(a1 - 604) = &off_6F5D18; sub_639940(a1 - 604); } // 6F5D18: using guessed type int (__thiscall *off_6F5D18)(void *, char); //----- (0068C94B) -------------------------------------------------------- int __cdecl sub_68C94B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 152)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C980) -------------------------------------------------------- void __cdecl sub_68C980() { JUMPOUT(loc_5AC260); } // 5AC260: using guessed type int loc_5AC260(); //----- (0068C98A) -------------------------------------------------------- int __cdecl sub_68C98A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C9B0) -------------------------------------------------------- int __usercall sub_68C9B0(int a1) { return sub_4026F0((int *)(a1 - 132)); } //----- (0068C9BB) -------------------------------------------------------- int __cdecl sub_68C9BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 34)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068C9F0) -------------------------------------------------------- void __usercall sub_68C9F0(int a1) { nullsub_2((void *)(a1 - 272)); } //----- (0068C9FB) -------------------------------------------------------- int __cdecl sub_68C9FB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 68)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CA30) -------------------------------------------------------- void __usercall sub_68CA30(int a1) { sub_62BE60(*(_DWORD *)(a1 - 16)); } //----- (0068CA38) -------------------------------------------------------- int __cdecl sub_68CA38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CA60) -------------------------------------------------------- void __usercall sub_68CA60(int a1) { sub_62BE60(*(_DWORD *)(a1 - 16)); } //----- (0068CA68) -------------------------------------------------------- int __cdecl sub_68CA68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CA90) -------------------------------------------------------- void __usercall sub_68CA90(int a1) { sub_43BB10((void *)(a1 - 44)); } //----- (0068CA98) -------------------------------------------------------- int __cdecl sub_68CA98(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CAC0) -------------------------------------------------------- int __usercall sub_68CAC0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068CAC8) -------------------------------------------------------- void __usercall sub_68CAC8(int a1) { sub_43BB10((void *)(a1 - 44)); } //----- (0068CAD0) -------------------------------------------------------- int __cdecl sub_68CAD0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CAF0) -------------------------------------------------------- int __usercall sub_68CAF0(int a1) { return sub_4026F0((int *)(a1 - 88)); } //----- (0068CAF8) -------------------------------------------------------- int __cdecl sub_68CAF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CB20) -------------------------------------------------------- int __usercall sub_68CB20(int a1) { return sub_4026F0((int *)(a1 - 256)); } //----- (0068CB2B) -------------------------------------------------------- void __usercall sub_68CB2B(int a1) { sub_43BB10((void *)(a1 - 252)); } //----- (0068CB36) -------------------------------------------------------- int __cdecl sub_68CB36(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 65)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CB60) -------------------------------------------------------- int __usercall sub_68CB60(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068CB68) -------------------------------------------------------- int __usercall sub_68CB68(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068CB70) -------------------------------------------------------- int __cdecl sub_68CB70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CB90) -------------------------------------------------------- int __usercall sub_68CB90(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068CB98) -------------------------------------------------------- int __usercall sub_68CB98(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0068CBA0) -------------------------------------------------------- int __usercall sub_68CBA0(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0068CBA8) -------------------------------------------------------- int __usercall sub_68CBA8(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068CBB0) -------------------------------------------------------- int __cdecl sub_68CBB0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CBD0) -------------------------------------------------------- int __usercall sub_68CBD0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068CBD8) -------------------------------------------------------- int __usercall sub_68CBD8(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0068CBE0) -------------------------------------------------------- int __usercall sub_68CBE0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068CBE8) -------------------------------------------------------- int __usercall sub_68CBE8(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0068CBF0) -------------------------------------------------------- int __usercall sub_68CBF0(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0068CBF8) -------------------------------------------------------- int __usercall sub_68CBF8(int a1) { return sub_4026F0((int *)(a1 + 12)); } //----- (0068CC00) -------------------------------------------------------- int __usercall sub_68CC00(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068CC08) -------------------------------------------------------- int __cdecl sub_68CC08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CC30) -------------------------------------------------------- int __usercall sub_68CC30(int a1) { return sub_4026F0((int *)(a1 - 56)); } //----- (0068CC38) -------------------------------------------------------- int __cdecl sub_68CC38(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 41)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CC60) -------------------------------------------------------- int __usercall sub_68CC60(int a1) { return sub_4026F0((int *)(a1 - 336)); } //----- (0068CC6B) -------------------------------------------------------- int __usercall sub_68CC6B(int a1) { return sub_4026F0((int *)(a1 - 344)); } //----- (0068CC76) -------------------------------------------------------- int __usercall sub_68CC76(int a1) { return sub_4026F0((int *)(a1 - 340)); } //----- (0068CC81) -------------------------------------------------------- int __usercall sub_68CC81(int a1) { return sub_4026F0((int *)(a1 - 320)); } //----- (0068CC8C) -------------------------------------------------------- int __usercall sub_68CC8C(int a1) { return sub_4026F0((int *)(a1 - 332)); } //----- (0068CC97) -------------------------------------------------------- int __usercall sub_68CC97(int a1) { return sub_4026F0((int *)(a1 - 328)); } //----- (0068CCA2) -------------------------------------------------------- int __usercall sub_68CCA2(int a1) { return sub_4026F0((int *)(a1 - 316)); } //----- (0068CCAD) -------------------------------------------------------- int __usercall sub_68CCAD(int a1) { return sub_4026F0((int *)(a1 - 324)); } //----- (0068CCB8) -------------------------------------------------------- int __usercall sub_68CCB8(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (0068CCC3) -------------------------------------------------------- int __usercall sub_68CCC3(int a1) { return sub_4026F0((int *)(a1 - 316)); } //----- (0068CCCE) -------------------------------------------------------- int __usercall sub_68CCCE(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (0068CCD9) -------------------------------------------------------- int __usercall sub_68CCD9(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (0068CCE4) -------------------------------------------------------- int __usercall sub_68CCE4(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (0068CCEF) -------------------------------------------------------- int __usercall sub_68CCEF(int a1) { return sub_4026F0((int *)(a1 - 312)); } //----- (0068CCFA) -------------------------------------------------------- int __usercall sub_68CCFA(int a1) { return sub_4026F0((int *)(a1 - 308)); } //----- (0068CD05) -------------------------------------------------------- int __cdecl sub_68CD05(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 87)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CD30) -------------------------------------------------------- int __usercall sub_68CD30(int a1) { return sub_4026F0((int *)(a1 - 636)); } //----- (0068CD3B) -------------------------------------------------------- int __cdecl sub_68CD3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 160)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CD70) -------------------------------------------------------- int __usercall sub_68CD70(int a1) { return sub_4026F0((int *)(a1 - 340)); } //----- (0068CD7B) -------------------------------------------------------- int __cdecl sub_68CD7B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 86)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CDB0) -------------------------------------------------------- int __usercall sub_68CDB0(int a1) { return sub_4026F0((int *)(a1 - 52)); } //----- (0068CDB8) -------------------------------------------------------- int __cdecl sub_68CDB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 14)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CDE0) -------------------------------------------------------- int __usercall sub_68CDE0(int a1) { return sub_4026F0((int *)(a1 - 380)); } //----- (0068CDEB) -------------------------------------------------------- int __cdecl sub_68CDEB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 96)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CE20) -------------------------------------------------------- int __usercall sub_68CE20(int a1) { return sub_4026F0((int *)(a1 - 48)); } //----- (0068CE28) -------------------------------------------------------- void __usercall sub_68CE28(int a1) { sub_424190((void **)(a1 - 64)); } //----- (0068CE30) -------------------------------------------------------- int __cdecl sub_68CE30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CE80) -------------------------------------------------------- void __usercall sub_68CE80(int a1) { sub_424190((void **)(a1 - 56)); } //----- (0068CE88) -------------------------------------------------------- int __cdecl sub_68CE88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CEB0) -------------------------------------------------------- void __usercall sub_68CEB0(int a1) { **(_DWORD **)(a1 - 16) = off_6F8C54; } // 6F8C54: using guessed type int (*off_6F8C54[2])(); //----- (0068CEB8) -------------------------------------------------------- int __cdecl sub_68CEB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CEE0) -------------------------------------------------------- void __usercall sub_68CEE0(int a1) { sub_461490((void *)(a1 - 76)); } //----- (0068CEE8) -------------------------------------------------------- void __usercall sub_68CEE8(int a1) { sub_461490((void *)(a1 - 60)); } //----- (0068CF40) -------------------------------------------------------- void __cdecl sub_68CF40() { JUMPOUT(loc_5BE870); } // 5BE870: using guessed type int loc_5BE870(); //----- (0068CF48) -------------------------------------------------------- int __cdecl sub_68CF48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CF70) -------------------------------------------------------- void __usercall sub_68CF70(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068CF7B) -------------------------------------------------------- void __usercall sub_68CF7B(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068CF86) -------------------------------------------------------- int __cdecl sub_68CF86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CFB0) -------------------------------------------------------- int __usercall sub_68CFB0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068CFB8) -------------------------------------------------------- void __usercall sub_68CFB8(int a1) { sub_43C4E0(a1 - 56); } //----- (0068CFC0) -------------------------------------------------------- void __usercall sub_68CFC0(int a1) { sub_5C9980((void *)(a1 - 56)); } //----- (0068CFC8) -------------------------------------------------------- int __cdecl sub_68CFC8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068CFF0) -------------------------------------------------------- int __cdecl sub_68CFF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D010) -------------------------------------------------------- int __usercall sub_68D010(int a1) { return sub_5C0B70(a1 + 16); } //----- (0068D040) -------------------------------------------------------- void __usercall sub_68D040(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (0068D051) -------------------------------------------------------- void __usercall sub_68D051(int a1) { sub_5C9980(*(void **)(a1 + 8)); } //----- (0068D059) -------------------------------------------------------- int __cdecl sub_68D059(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D080) -------------------------------------------------------- void __cdecl sub_68D080() { JUMPOUT(loc_5C0A70); } // 5C0A70: using guessed type int loc_5C0A70(); //----- (0068D088) -------------------------------------------------------- void __usercall sub_68D088(int a1) { nullsub_2(*(void **)(a1 + 12)); } //----- (0068D099) -------------------------------------------------------- void __usercall sub_68D099(int a1) { sub_5C9980(*(void **)(a1 + 12)); } //----- (0068D0C0) -------------------------------------------------------- void __usercall sub_68D0C0(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068D0D1) -------------------------------------------------------- void __usercall sub_68D0D1(int a1) { sub_5C9980(*(void **)(a1 - 28)); } //----- (0068D0D9) -------------------------------------------------------- int __cdecl sub_68D0D9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D100) -------------------------------------------------------- int __cdecl sub_68D100(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D120) -------------------------------------------------------- int __cdecl sub_68D120(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D170) -------------------------------------------------------- void __usercall sub_68D170(int a1) { sub_643080((void *)(a1 - 67684)); } //----- (0068D17B) -------------------------------------------------------- int __usercall sub_68D17B(int a1) { return sub_5C0B70(a1 - 67708); } //----- (0068D186) -------------------------------------------------------- int __usercall sub_68D186(int a1) { return sub_5C0B70(*(_DWORD *)(a1 - 67712)); } //----- (0068D191) -------------------------------------------------------- int __cdecl sub_68D191(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16928)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D1C0) -------------------------------------------------------- int __usercall sub_68D1C0(int a1) { return sub_556910(a1 - 32); } //----- (0068D1C8) -------------------------------------------------------- int __usercall sub_68D1C8(int a1) { int v1; // ebx@4 int v2; // esi@4 int i; // edi@5 int result; // eax@1 int v5; // ecx@2 result = *(_DWORD *)(a1 - 16) & 1; if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; v5 = *(_DWORD *)(a1 + 8); v1 = *(_DWORD *)(a1 + 8); v2 = *(_DWORD *)(v5 + 4); if ( v2 ) { for ( i = *(_DWORD *)(v5 + 8); v2 != i; v2 += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v2)(v2, 0); operator delete(*(void **)(v1 + 4)); } result = 0; *(_DWORD *)(v1 + 4) = 0; *(_DWORD *)(v1 + 8) = 0; *(_DWORD *)(v1 + 12) = 0; } return result; } //----- (0068D1E1) -------------------------------------------------------- int __cdecl sub_68D1E1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D200) -------------------------------------------------------- void __usercall sub_68D200(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068D211) -------------------------------------------------------- int __cdecl sub_68D211(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D230) -------------------------------------------------------- int __usercall sub_68D230(int a1) { return sub_556910(a1 - 468); } //----- (0068D23B) -------------------------------------------------------- void __usercall sub_68D23B(int a1) { sub_610240(a1 - 172); } //----- (0068D246) -------------------------------------------------------- void __cdecl sub_68D246() { JUMPOUT(loc_5C0D10); } // 5C0D10: using guessed type int loc_5C0D10(); //----- (0068D251) -------------------------------------------------------- int __cdecl sub_68D251(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 127)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D280) -------------------------------------------------------- void __cdecl sub_68D280() { sub_424190(&dword_14D21494); } //----- (0068D28A) -------------------------------------------------------- int __cdecl sub_68D28A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D2B0) -------------------------------------------------------- void __cdecl sub_68D2B0() { sub_424190(&dword_14D21484); } //----- (0068D2BA) -------------------------------------------------------- int __cdecl sub_68D2BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D2E0) -------------------------------------------------------- void __cdecl sub_68D2E0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D2EA) -------------------------------------------------------- int __cdecl sub_68D2EA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D310) -------------------------------------------------------- int __usercall sub_68D310(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068D318) -------------------------------------------------------- void __usercall sub_68D318(int a1) { sub_43C4E0(a1 - 48); } //----- (0068D320) -------------------------------------------------------- void __usercall sub_68D320(int a1) { sub_5C9980((void *)(a1 - 48)); } //----- (0068D328) -------------------------------------------------------- int __cdecl sub_68D328(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D380) -------------------------------------------------------- void __usercall sub_68D380(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (0068D391) -------------------------------------------------------- void __usercall sub_68D391(int a1) { sub_5C9980(*(void **)(a1 - 16)); } //----- (0068D399) -------------------------------------------------------- void __usercall sub_68D399(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (0068D3AA) -------------------------------------------------------- void __usercall sub_68D3AA(int a1) { sub_5C9980(*(void **)(a1 - 16)); } //----- (0068D3B2) -------------------------------------------------------- int __cdecl sub_68D3B2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D3D0) -------------------------------------------------------- int __usercall sub_68D3D0(int a1) { return sub_556910(*(_DWORD *)(a1 - 16) + 8); } //----- (0068D3DB) -------------------------------------------------------- void __cdecl sub_68D3DB() { JUMPOUT(loc_5C0A70); } // 5C0A70: using guessed type int loc_5C0A70(); //----- (0068D3E3) -------------------------------------------------------- int __cdecl sub_68D3E3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D400) -------------------------------------------------------- void __usercall sub_68D400(int a1) { sub_64AA60(a1 - 104); } //----- (0068D408) -------------------------------------------------------- int __cdecl sub_68D408(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D430) -------------------------------------------------------- void __cdecl sub_68D430() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D438) -------------------------------------------------------- int __cdecl sub_68D438(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D460) -------------------------------------------------------- void __usercall sub_68D460(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068D471) -------------------------------------------------------- int __cdecl sub_68D471(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D490) -------------------------------------------------------- void __cdecl sub_68D490() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D498) -------------------------------------------------------- int __cdecl sub_68D498(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D4C0) -------------------------------------------------------- void __cdecl sub_68D4C0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D4C8) -------------------------------------------------------- int __cdecl sub_68D4C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D4F0) -------------------------------------------------------- void __cdecl sub_68D4F0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D4F8) -------------------------------------------------------- int __cdecl sub_68D4F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D520) -------------------------------------------------------- void __cdecl sub_68D520() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D528) -------------------------------------------------------- int __cdecl sub_68D528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D550) -------------------------------------------------------- void __usercall sub_68D550(int a1) { sub_5C3B10(a1 - 104); } //----- (0068D558) -------------------------------------------------------- void __usercall sub_68D558(int a1) { sub_5C3B70(a1 - 124); } //----- (0068D560) -------------------------------------------------------- void __cdecl sub_68D560() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D568) -------------------------------------------------------- void __cdecl sub_68D568() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D570) -------------------------------------------------------- int __cdecl sub_68D570(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 32)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D590) -------------------------------------------------------- void __usercall sub_68D590(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_6F93B4; sub_639940(v1); } // 6F93B4: using guessed type int (__thiscall *off_6F93B4)(void *, char); //----- (0068D598) -------------------------------------------------------- void __cdecl sub_68D598() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D5A0) -------------------------------------------------------- int __cdecl sub_68D5A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D5C0) -------------------------------------------------------- void __cdecl sub_68D5C0() { JUMPOUT(loc_5C2B20); } // 5C2B20: using guessed type int loc_5C2B20(); //----- (0068D5C8) -------------------------------------------------------- int __cdecl sub_68D5C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D5F0) -------------------------------------------------------- void __usercall sub_68D5F0(int a1) { nullsub_2(*(void **)(a1 - 32)); } //----- (0068D601) -------------------------------------------------------- int __cdecl sub_68D601(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D620) -------------------------------------------------------- void __usercall sub_68D620(int a1) { sub_424190((void **)(a1 - 28)); } //----- (0068D628) -------------------------------------------------------- void __usercall sub_68D628(int a1) { sub_5C4DE0(a1 - 48); } //----- (0068D630) -------------------------------------------------------- int __cdecl sub_68D630(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D650) -------------------------------------------------------- void __cdecl sub_68D650() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D65A) -------------------------------------------------------- int __cdecl sub_68D65A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D680) -------------------------------------------------------- void __cdecl sub_68D680() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D68A) -------------------------------------------------------- int __cdecl sub_68D68A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D6B0) -------------------------------------------------------- void __cdecl sub_68D6B0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068D6BA) -------------------------------------------------------- int __cdecl sub_68D6BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D6E0) -------------------------------------------------------- void __cdecl sub_68D6E0() { JUMPOUT(loc_438410); } // 438410: using guessed type int loc_438410(); //----- (0068D6EB) -------------------------------------------------------- int __cdecl sub_68D6EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D710) -------------------------------------------------------- int __usercall sub_68D710(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068D718) -------------------------------------------------------- int __cdecl sub_68D718(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D740) -------------------------------------------------------- int __usercall sub_68D740(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068D748) -------------------------------------------------------- int __cdecl sub_68D748() { int result; // eax@1 result = dword_14D21504 & 0xFFFFFFFE; dword_14D21504 &= 0xFFFFFFFEu; return result; } // 14D21504: using guessed type int dword_14D21504; //----- (0068D756) -------------------------------------------------------- void __cdecl sub_68D756() { JUMPOUT(loc_4BBBD0); } // 4BBBD0: using guessed type int loc_4BBBD0(); //----- (0068D760) -------------------------------------------------------- int __cdecl sub_68D760(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D780) -------------------------------------------------------- void __cdecl sub_68D780() { sub_424190(&dword_14D21508); } //----- (0068D78A) -------------------------------------------------------- int __cdecl sub_68D78A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D7B0) -------------------------------------------------------- int __usercall sub_68D7B0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068D7B8) -------------------------------------------------------- void __usercall sub_68D7B8(int a1) { if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; nullsub_2(*(void **)(a1 + 8)); } } //----- (0068D7F0) -------------------------------------------------------- void __usercall sub_68D7F0(int a1) { sub_5C9980(*(void **)(a1 - 16)); } //----- (0068D7F8) -------------------------------------------------------- void __usercall sub_68D7F8(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0068D803) -------------------------------------------------------- int __cdecl sub_68D803(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D820) -------------------------------------------------------- void __usercall sub_68D820(int a1) { sub_5C9980(*(void **)(a1 - 16)); } //----- (0068D828) -------------------------------------------------------- void __usercall sub_68D828(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0068D833) -------------------------------------------------------- int __cdecl sub_68D833(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D850) -------------------------------------------------------- void __usercall sub_68D850(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16) + 12; *(_DWORD *)v2 = &off_6F9CB0; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6F9CB0: using guessed type int (__thiscall *off_6F9CB0)(void *, char); //----- (0068D85B) -------------------------------------------------------- int __cdecl sub_68D85B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D880) -------------------------------------------------------- void __usercall sub_68D880(int a1) { *(_DWORD *)(a1 - 20) = &off_6F9CD4; } // 6F9CD4: using guessed type int (__stdcall *off_6F9CD4)(int, int); //----- (0068D888) -------------------------------------------------------- int __cdecl sub_68D888(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D8B0) -------------------------------------------------------- void __cdecl sub_68D8B0() { JUMPOUT(loc_5CA0A0); } // 5CA0A0: using guessed type int loc_5CA0A0(); //----- (0068D8B8) -------------------------------------------------------- int __cdecl sub_68D8B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D8E0) -------------------------------------------------------- void __cdecl sub_68D8E0() { JUMPOUT(loc_5C9BD0); } // 5C9BD0: using guessed type int loc_5C9BD0(); //----- (0068D8EB) -------------------------------------------------------- int __cdecl sub_68D8EB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D910) -------------------------------------------------------- int __cdecl sub_68D910() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068D91E) -------------------------------------------------------- int __cdecl sub_68D91E() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068D92C) -------------------------------------------------------- int __cdecl sub_68D92C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D980) -------------------------------------------------------- int __cdecl sub_68D980() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068D98E) -------------------------------------------------------- int __cdecl sub_68D98E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068D9B0) -------------------------------------------------------- int __cdecl sub_68D9B0() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068D9E0) -------------------------------------------------------- int __cdecl sub_68D9E0() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068D9EE) -------------------------------------------------------- int __cdecl sub_68D9EE() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068D9FC) -------------------------------------------------------- int __cdecl sub_68D9FC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DA20) -------------------------------------------------------- int __cdecl sub_68DA20() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068DA2E) -------------------------------------------------------- int __cdecl sub_68DA2E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DA50) -------------------------------------------------------- int __cdecl sub_68DA50() { int result; // eax@1 result = dword_14D28280 & 0xFFFFFFFE; dword_14D28280 &= 0xFFFFFFFEu; return result; } // 14D28280: using guessed type int dword_14D28280; //----- (0068DA5E) -------------------------------------------------------- int __cdecl sub_68DA5E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DA80) -------------------------------------------------------- int __usercall sub_68DA80(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068DA88) -------------------------------------------------------- int __cdecl sub_68DA88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DAB0) -------------------------------------------------------- int __usercall sub_68DAB0(int a1) { int v1; // esi@1 int v2; // ecx@1 int result; // eax@2 int v4; // ecx@3 int v5; // ecx@1 v5 = *(_DWORD *)(a1 - 20); v1 = v5; v2 = *(_DWORD *)(v5 + 4); *(_DWORD *)v1 = &off_6F9EDC; if ( v2 ) result = (**(int (__stdcall ***)(_DWORD))v2)(1); v4 = *(_DWORD *)(v1 + 8); if ( v4 ) result = (**(int (__stdcall ***)(_DWORD))v4)(1); return result; } // 6F9EDC: using guessed type int (__thiscall *off_6F9EDC)(void *, char); //----- (0068DAB8) -------------------------------------------------------- int __cdecl sub_68DAB8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DAE0) -------------------------------------------------------- void __usercall sub_68DAE0(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068DAEB) -------------------------------------------------------- void __usercall sub_68DAEB(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068DAF6) -------------------------------------------------------- void __usercall sub_68DAF6(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068DB01) -------------------------------------------------------- void __usercall sub_68DB01(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068DB0C) -------------------------------------------------------- void __usercall sub_68DB0C(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068DB17) -------------------------------------------------------- void __usercall sub_68DB17(int a1) { operator delete(*(void **)(a1 + 8)); } //----- (0068DB22) -------------------------------------------------------- int __cdecl sub_68DB22(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DB40) -------------------------------------------------------- void __cdecl sub_68DB40() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068DB4A) -------------------------------------------------------- int __cdecl sub_68DB4A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DB70) -------------------------------------------------------- void __cdecl sub_68DB70() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068DB7A) -------------------------------------------------------- int __cdecl sub_68DB7A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DBA0) -------------------------------------------------------- void __usercall sub_68DBA0(int a1) { *(_DWORD *)(a1 - 1628) = &off_6FA064; sub_4C11C0((void *)(a1 - 1628)); } // 6FA064: using guessed type int (__stdcall *off_6FA064)(int, int, int); //----- (0068DBAB) -------------------------------------------------------- void __cdecl sub_68DBAB() { JUMPOUT(loc_5CCED0); } // 5CCED0: using guessed type int loc_5CCED0(); //----- (0068DBB6) -------------------------------------------------------- void __cdecl sub_68DBB6() { JUMPOUT(loc_5CCED0); } // 5CCED0: using guessed type int loc_5CCED0(); //----- (0068DBC1) -------------------------------------------------------- void __cdecl sub_68DBC1() { JUMPOUT(loc_5CCED0); } // 5CCED0: using guessed type int loc_5CCED0(); //----- (0068DBCC) -------------------------------------------------------- void __cdecl sub_68DBCC() { JUMPOUT(loc_5CCED0); } // 5CCED0: using guessed type int loc_5CCED0(); //----- (0068DBD7) -------------------------------------------------------- void __cdecl sub_68DBD7() { JUMPOUT(loc_5CCED0); } // 5CCED0: using guessed type int loc_5CCED0(); //----- (0068DBE2) -------------------------------------------------------- int __cdecl sub_68DBE2(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 812)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DC10) -------------------------------------------------------- void __cdecl sub_68DC10() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068DC1A) -------------------------------------------------------- int __cdecl sub_68DC1A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DC40) -------------------------------------------------------- void __usercall sub_68DC40(int a1) { *(_DWORD *)(a1 - 20) = &off_6FA304; } // 6FA304: using guessed type int (__stdcall *off_6FA304)(int, int); //----- (0068DC48) -------------------------------------------------------- int __cdecl sub_68DC48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DC70) -------------------------------------------------------- void __usercall sub_68DC70(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_6FA2E0; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 6FA2E0: using guessed type int (__thiscall *off_6FA2E0)(void *, char); //----- (0068DC78) -------------------------------------------------------- int __cdecl sub_68DC78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DCA0) -------------------------------------------------------- void __cdecl sub_68DCA0() { JUMPOUT(loc_5CDC50); } // 5CDC50: using guessed type int loc_5CDC50(); //----- (0068DCA8) -------------------------------------------------------- int __cdecl sub_68DCA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DCD0) -------------------------------------------------------- int __cdecl sub_68DCD0() { int result; // eax@1 result = dword_14D40970 & 0xFFFFFFFE; dword_14D40970 &= 0xFFFFFFFEu; return result; } // 14D40970: using guessed type int dword_14D40970; //----- (0068DCDE) -------------------------------------------------------- int __cdecl sub_68DCDE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DD00) -------------------------------------------------------- int __cdecl sub_68DD00() { int result; // eax@1 result = dword_14D40970 & 0xFFFFFFFE; dword_14D40970 &= 0xFFFFFFFEu; return result; } // 14D40970: using guessed type int dword_14D40970; //----- (0068DD0E) -------------------------------------------------------- int __cdecl sub_68DD0E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DD30) -------------------------------------------------------- int __cdecl sub_68DD30() { int result; // eax@1 result = dword_14D40970 & 0xFFFFFFFE; dword_14D40970 &= 0xFFFFFFFEu; return result; } // 14D40970: using guessed type int dword_14D40970; //----- (0068DD3E) -------------------------------------------------------- int __cdecl sub_68DD3E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DD60) -------------------------------------------------------- void __cdecl sub_68DD60() { JUMPOUT(loc_5CDC50); } // 5CDC50: using guessed type int loc_5CDC50(); //----- (0068DD6A) -------------------------------------------------------- int __cdecl sub_68DD6A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DD90) -------------------------------------------------------- void __cdecl sub_68DD90() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068DD9A) -------------------------------------------------------- int __cdecl sub_68DD9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DDC0) -------------------------------------------------------- int __usercall sub_68DDC0(int a1) { return sub_4026F0((int *)(a1 - 208)); } //----- (0068DDCB) -------------------------------------------------------- void __usercall sub_68DDCB(int a1) { *(_DWORD *)(a1 - 180) = &off_6FA590; sub_639940(a1 - 180); } // 6FA590: using guessed type int (__thiscall *off_6FA590)(void *, char); //----- (0068DDD6) -------------------------------------------------------- int __cdecl sub_68DDD6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 55)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DE00) -------------------------------------------------------- int __usercall sub_68DE00(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068DE08) -------------------------------------------------------- int __cdecl sub_68DE08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DE30) -------------------------------------------------------- int __usercall sub_68DE30(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068DE38) -------------------------------------------------------- void __usercall sub_68DE38(int a1) { sub_4EADF0((void *)(a1 - 40)); } //----- (0068DE40) -------------------------------------------------------- int __cdecl sub_68DE40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DE60) -------------------------------------------------------- int __usercall sub_68DE60(int a1) { return sub_4026F0((int *)(a1 - 200)); } //----- (0068DE6B) -------------------------------------------------------- void __usercall sub_68DE6B(int a1) { *(_DWORD *)(a1 - 164) = &off_6FA5A0; sub_639940(a1 - 164); } // 6FA5A0: using guessed type int (__thiscall *off_6FA5A0)(void *, char); //----- (0068DE76) -------------------------------------------------------- int __cdecl sub_68DE76(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 53)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DEA0) -------------------------------------------------------- void __usercall sub_68DEA0(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (0068DEB1) -------------------------------------------------------- int __cdecl sub_68DEB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DED0) -------------------------------------------------------- int __cdecl sub_68DED0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DEF0) -------------------------------------------------------- void __usercall sub_68DEF0(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (0068DF01) -------------------------------------------------------- void __usercall sub_68DF01(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (0068DF12) -------------------------------------------------------- int __cdecl sub_68DF12(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DF30) -------------------------------------------------------- int __usercall sub_68DF30(int a1) { return sub_4026F0((int *)(a1 - 184)); } //----- (0068DF3B) -------------------------------------------------------- void __usercall sub_68DF3B(int a1) { sub_5C4DE0(a1 - 180); } //----- (0068DF46) -------------------------------------------------------- void __usercall sub_68DF46(int a1) { *(_DWORD *)(a1 - 152) = &off_6FA598; sub_639940(a1 - 152); } // 6FA598: using guessed type int (__thiscall *off_6FA598)(void *, char); //----- (0068DF51) -------------------------------------------------------- void __usercall sub_68DF51(int a1) { sub_5C4DE0(a1 - 180); } //----- (0068DF5C) -------------------------------------------------------- int __cdecl sub_68DF5C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 47)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DF90) -------------------------------------------------------- void __cdecl sub_68DF90() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068DF9A) -------------------------------------------------------- int __cdecl sub_68DF9A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DFC0) -------------------------------------------------------- void __cdecl sub_68DFC0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068DFCA) -------------------------------------------------------- int __cdecl sub_68DFCA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068DFF0) -------------------------------------------------------- void __usercall sub_68DFF0(int a1) { sub_4C11C0((void *)(a1 - 1628)); } //----- (0068DFFB) -------------------------------------------------------- int __cdecl sub_68DFFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 412)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E060) -------------------------------------------------------- int __usercall sub_68E060(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E068) -------------------------------------------------------- int __cdecl sub_68E068(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E090) -------------------------------------------------------- int __usercall sub_68E090(int a1) { return sub_4026F0((int *)(a1 - 68)); } //----- (0068E098) -------------------------------------------------------- void __usercall sub_68E098(int a1) { sub_427EB0((void *)(a1 - 56)); } //----- (0068E0A0) -------------------------------------------------------- int __cdecl sub_68E0A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E0D0) -------------------------------------------------------- int __usercall sub_68E0D0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068E0D8) -------------------------------------------------------- void __usercall sub_68E0D8(int a1) { sub_427EB0((void *)(a1 - 52)); } //----- (0068E100) -------------------------------------------------------- int __usercall sub_68E100(int a1) { return sub_4026F0((int *)(a1 - 276)); } //----- (0068E10B) -------------------------------------------------------- int __cdecl sub_68E10B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 70)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E140) -------------------------------------------------------- int __usercall sub_68E140(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E148) -------------------------------------------------------- int __usercall sub_68E148(int a1) { return sub_428A70((void *)(a1 - 48)); } //----- (0068E150) -------------------------------------------------------- int __cdecl sub_68E150(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E170) -------------------------------------------------------- int __usercall sub_68E170(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E178) -------------------------------------------------------- void __usercall sub_68E178(int a1) { sub_461490((void *)(a1 - 72)); } //----- (0068E180) -------------------------------------------------------- int __usercall sub_68E180(int a1) { return sub_428A70((void *)(a1 - 56)); } //----- (0068E1B0) -------------------------------------------------------- int __usercall sub_68E1B0(int a1) { return sub_4026F0((int *)(a1 - 288)); } //----- (0068E1BB) -------------------------------------------------------- int __cdecl sub_68E1BB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 73)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E1F0) -------------------------------------------------------- int __usercall sub_68E1F0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068E1F8) -------------------------------------------------------- int __usercall sub_68E1F8(int a1) { return sub_428A70((void *)(a1 - 56)); } //----- (0068E200) -------------------------------------------------------- int __cdecl sub_68E200(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E220) -------------------------------------------------------- int __usercall sub_68E220(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068E228) -------------------------------------------------------- int __usercall sub_68E228(int a1) { return sub_428A70((void *)(a1 - 52)); } //----- (0068E250) -------------------------------------------------------- int __usercall sub_68E250(int a1) { return sub_4026F0((int *)(a1 - 56)); } //----- (0068E258) -------------------------------------------------------- int __cdecl sub_68E258(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E280) -------------------------------------------------------- int __usercall sub_68E280(int a1) { return sub_4026F0((int *)(a1 - 64)); } //----- (0068E288) -------------------------------------------------------- int __cdecl sub_68E288(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E2B0) -------------------------------------------------------- int __usercall sub_68E2B0(int a1) { return sub_4026F0((int *)(a1 - 56)); } //----- (0068E2B8) -------------------------------------------------------- int __cdecl sub_68E2B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E2E0) -------------------------------------------------------- int __usercall sub_68E2E0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068E2E8) -------------------------------------------------------- void __usercall sub_68E2E8(int a1) { sub_427EB0((void *)(a1 - 32)); } //----- (0068E2F0) -------------------------------------------------------- int __cdecl sub_68E2F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E310) -------------------------------------------------------- int __usercall sub_68E310(int a1) { return sub_4026F0((int *)(a1 - 152)); } //----- (0068E31B) -------------------------------------------------------- void __usercall sub_68E31B(int a1) { sub_427EB0((void *)(a1 - 148)); } //----- (0068E326) -------------------------------------------------------- int __cdecl sub_68E326(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 39)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E350) -------------------------------------------------------- int __usercall sub_68E350(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (0068E358) -------------------------------------------------------- int __usercall sub_68E358(int a1) { return sub_428A70((void *)(a1 - 52)); } //----- (0068E380) -------------------------------------------------------- int __usercall sub_68E380(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (0068E388) -------------------------------------------------------- int __cdecl sub_68E388(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E3B0) -------------------------------------------------------- int __usercall sub_68E3B0(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (0068E3B8) -------------------------------------------------------- int __usercall sub_68E3B8(int a1) { return sub_428A70((void *)(a1 - 60)); } //----- (0068E3E0) -------------------------------------------------------- int __usercall sub_68E3E0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068E3E8) -------------------------------------------------------- void __usercall sub_68E3E8(int a1) { sub_427EB0((void *)(a1 - 28)); } //----- (0068E3F0) -------------------------------------------------------- int __cdecl sub_68E3F0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E410) -------------------------------------------------------- int __usercall sub_68E410(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068E418) -------------------------------------------------------- void __usercall sub_68E418(int a1) { sub_427EB0((void *)(a1 - 24)); } //----- (0068E420) -------------------------------------------------------- int __cdecl sub_68E420(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E440) -------------------------------------------------------- void __usercall sub_68E440(int a1) { nullsub_2((void *)(a1 - 1024)); } //----- (0068E44B) -------------------------------------------------------- int __cdecl sub_68E44B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 260)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E480) -------------------------------------------------------- void __usercall sub_68E480(int a1) { sub_4C11C0((void *)(a1 - 2636)); } //----- (0068E48B) -------------------------------------------------------- void __usercall sub_68E48B(int a1) { nullsub_2((void *)(a1 - 1024)); } //----- (0068E496) -------------------------------------------------------- int __cdecl sub_68E496(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 665)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E4C0) -------------------------------------------------------- int __usercall sub_68E4C0(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E4C8) -------------------------------------------------------- void __usercall sub_68E4C8(int a1) { nullsub_2((void *)(a1 - 48)); } //----- (0068E4D0) -------------------------------------------------------- int __cdecl sub_68E4D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E4F0) -------------------------------------------------------- int __usercall sub_68E4F0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068E4F8) -------------------------------------------------------- void __usercall sub_68E4F8(int a1) { nullsub_2((void *)(a1 - 72)); } //----- (0068E520) -------------------------------------------------------- int __usercall sub_68E520(int a1) { return sub_4026F0((int *)(a1 - 1640)); } //----- (0068E52B) -------------------------------------------------------- void __usercall sub_68E52B(int a1) { sub_4C11C0((void *)(a1 - 1628)); } //----- (0068E536) -------------------------------------------------------- int __cdecl sub_68E536(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 411)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E560) -------------------------------------------------------- int __usercall sub_68E560(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E568) -------------------------------------------------------- void __cdecl sub_68E568() { JUMPOUT(loc_418B90); } // 418B90: using guessed type int loc_418B90(); //----- (0068E5A0) -------------------------------------------------------- int __usercall sub_68E5A0(int a1) { return sub_4026F0((int *)(a1 - 1684)); } //----- (0068E5AB) -------------------------------------------------------- void __usercall sub_68E5AB(int a1) { sub_4C11C0((void *)(a1 - 1636)); } //----- (0068E5B6) -------------------------------------------------------- int __cdecl sub_68E5B6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 422)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E5E0) -------------------------------------------------------- int __usercall sub_68E5E0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068E5E8) -------------------------------------------------------- void __usercall sub_68E5E8(int a1) { sub_427EB0((void *)(a1 - 28)); } //----- (0068E5F0) -------------------------------------------------------- void __usercall sub_68E5F0(int a1) { sub_427EB0((void *)(a1 - 28)); } //----- (0068E5F8) -------------------------------------------------------- int __cdecl sub_68E5F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E620) -------------------------------------------------------- int __usercall sub_68E620(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068E628) -------------------------------------------------------- int __cdecl sub_68E628(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E650) -------------------------------------------------------- int __usercall sub_68E650(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E658) -------------------------------------------------------- int __usercall sub_68E658(int a1) { return sub_428A70((void *)(a1 - 40)); } //----- (0068E660) -------------------------------------------------------- int __cdecl sub_68E660(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E680) -------------------------------------------------------- int __usercall sub_68E680(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068E688) -------------------------------------------------------- void __usercall sub_68E688(int a1) { sub_42A030(a1 - 48); } //----- (0068E690) -------------------------------------------------------- int __cdecl sub_68E690(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E6B0) -------------------------------------------------------- int __usercall sub_68E6B0(int a1) { return sub_4026F0((int *)(a1 - 52)); } //----- (0068E6E0) -------------------------------------------------------- int __usercall sub_68E6E0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068E710) -------------------------------------------------------- int __usercall sub_68E710(int a1) { return sub_4026F0((int *)(a1 - 300)); } //----- (0068E71B) -------------------------------------------------------- int __cdecl sub_68E71B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 76)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E750) -------------------------------------------------------- int __usercall sub_68E750(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068E780) -------------------------------------------------------- int __usercall sub_68E780(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068E788) -------------------------------------------------------- int __usercall sub_68E788(int a1) { return sub_428A70((void *)(a1 - 28)); } //----- (0068E790) -------------------------------------------------------- int __cdecl sub_68E790(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E7B0) -------------------------------------------------------- int __usercall sub_68E7B0(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068E7B8) -------------------------------------------------------- int __usercall sub_68E7B8(int a1) { return sub_428A70((void *)(a1 - 48)); } //----- (0068E7C0) -------------------------------------------------------- int __usercall sub_68E7C0(int a1) { return sub_428A70((void *)(a1 - 48)); } //----- (0068E7C8) -------------------------------------------------------- int __cdecl sub_68E7C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E7F0) -------------------------------------------------------- int __usercall sub_68E7F0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068E7F8) -------------------------------------------------------- void __usercall sub_68E7F8(int a1) { sub_427EB0((void *)(a1 - 28)); } //----- (0068E800) -------------------------------------------------------- int __cdecl sub_68E800(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E820) -------------------------------------------------------- int __usercall sub_68E820(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068E850) -------------------------------------------------------- int __usercall sub_68E850(int a1) { return sub_4026F0((int *)(a1 - 112)); } //----- (0068E858) -------------------------------------------------------- int __cdecl sub_68E858(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E880) -------------------------------------------------------- int __usercall sub_68E880(int a1) { return sub_4026F0((int *)(a1 - 52)); } //----- (0068E888) -------------------------------------------------------- int __usercall sub_68E888(int a1) { return sub_428A70((void *)(a1 - 64)); } //----- (0068E890) -------------------------------------------------------- int __cdecl sub_68E890(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E8B0) -------------------------------------------------------- int __usercall sub_68E8B0(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068E8B8) -------------------------------------------------------- void __usercall sub_68E8B8(int a1) { sub_42A030(a1 - 40); } //----- (0068E8C0) -------------------------------------------------------- int __cdecl sub_68E8C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E8E0) -------------------------------------------------------- int __usercall sub_68E8E0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068E940) -------------------------------------------------------- int __usercall sub_68E940(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068E970) -------------------------------------------------------- int __usercall sub_68E970(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068E978) -------------------------------------------------------- int __cdecl sub_68E978(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E9A0) -------------------------------------------------------- int __usercall sub_68E9A0(int a1) { return sub_4026F0((int *)(a1 - 72)); } //----- (0068E9A8) -------------------------------------------------------- void __usercall sub_68E9A8(int a1) { *(_DWORD *)(a1 - 56) = &off_6FB10C; sub_427EB0((void *)(a1 - 56)); } // 6FB10C: using guessed type int (__stdcall *off_6FB10C)(int, int, int); //----- (0068E9B0) -------------------------------------------------------- void __cdecl sub_68E9B0() { JUMPOUT(loc_4E7230); } // 4E7230: using guessed type int loc_4E7230(); //----- (0068E9B8) -------------------------------------------------------- int __cdecl sub_68E9B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 19)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068E9E0) -------------------------------------------------------- int __usercall sub_68E9E0(int a1) { return sub_4026F0((int *)(a1 - 100)); } //----- (0068E9E8) -------------------------------------------------------- int __cdecl sub_68E9E8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EA10) -------------------------------------------------------- int __usercall sub_68EA10(int a1) { return sub_4026F0((int *)(a1 - 1652)); } //----- (0068EA1B) -------------------------------------------------------- void __usercall sub_68EA1B(int a1) { *(_DWORD *)(a1 - 1628) = &off_6FB114; sub_4C11C0((void *)(a1 - 1628)); } // 6FB114: using guessed type int (__stdcall *off_6FB114)(int, int, int); //----- (0068EA26) -------------------------------------------------------- int __cdecl sub_68EA26(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 414)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EA50) -------------------------------------------------------- int __usercall sub_68EA50(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068EA80) -------------------------------------------------------- int __usercall sub_68EA80(int a1) { return sub_4026F0((int *)(a1 - 60)); } //----- (0068EA88) -------------------------------------------------------- void __usercall sub_68EA88(int a1) { nullsub_2((void *)(a1 - 104)); } //----- (0068EA90) -------------------------------------------------------- int __cdecl sub_68EA90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EAF0) -------------------------------------------------------- int __usercall sub_68EAF0(int a1) { return sub_4026F0((int *)(a1 - 76)); } //----- (0068EAF8) -------------------------------------------------------- int __cdecl sub_68EAF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 19)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EB20) -------------------------------------------------------- int __usercall sub_68EB20(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068EB28) -------------------------------------------------------- void __usercall sub_68EB28(int a1) { sub_42A1F0(a1 - 52); } //----- (0068EB50) -------------------------------------------------------- int __usercall sub_68EB50(int a1) { return sub_4026F0((int *)(a1 - 40)); } //----- (0068EB58) -------------------------------------------------------- void __usercall sub_68EB58(int a1) { sub_42A1F0(a1 - 64); } //----- (0068EB60) -------------------------------------------------------- int __cdecl sub_68EB60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EB80) -------------------------------------------------------- int __usercall sub_68EB80(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068EB88) -------------------------------------------------------- void __usercall sub_68EB88(int a1) { sub_42A1F0(a1 - 60); } //----- (0068EBB0) -------------------------------------------------------- int __usercall sub_68EBB0(int a1) { return sub_4026F0((int *)(a1 - 24)); } //----- (0068EBB8) -------------------------------------------------------- void __usercall sub_68EBB8(int a1) { sub_424190((void **)(a1 - 40)); } //----- (0068EBC0) -------------------------------------------------------- int __cdecl sub_68EBC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EBE0) -------------------------------------------------------- int __usercall sub_68EBE0(int a1) { return sub_4026F0((int *)(a1 - 68)); } //----- (0068EBE8) -------------------------------------------------------- void __usercall sub_68EBE8(int a1) { sub_42A170(a1 - 100); } //----- (0068EBF0) -------------------------------------------------------- void __usercall sub_68EBF0(int a1) { sub_424190((void **)(a1 - 64)); } //----- (0068EBF8) -------------------------------------------------------- int __cdecl sub_68EBF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EC20) -------------------------------------------------------- int __usercall sub_68EC20(int a1) { return sub_4026F0((int *)(a1 - 144)); } //----- (0068EC2B) -------------------------------------------------------- void __usercall sub_68EC2B(int a1) { sub_42A030(a1 - 136); } //----- (0068EC36) -------------------------------------------------------- void __usercall sub_68EC36(int a1) { sub_424190((void **)(a1 - 112)); } //----- (0068EC3E) -------------------------------------------------------- int __cdecl sub_68EC3E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 37)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EC70) -------------------------------------------------------- int __usercall sub_68EC70(int a1) { return sub_4026F0((int *)(a1 - 36)); } //----- (0068EC78) -------------------------------------------------------- void __usercall sub_68EC78(int a1) { sub_424190((void **)(a1 - 52)); } //----- (0068ECB0) -------------------------------------------------------- int __usercall sub_68ECB0(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (0068ECBB) -------------------------------------------------------- void __usercall sub_68ECBB(int a1) { sub_42A030(a1 - 140); } //----- (0068ECC6) -------------------------------------------------------- void __usercall sub_68ECC6(int a1) { sub_424190((void **)(a1 - 108)); } //----- (0068ECCE) -------------------------------------------------------- int __cdecl sub_68ECCE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ED00) -------------------------------------------------------- int __usercall sub_68ED00(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068ED30) -------------------------------------------------------- int __cdecl sub_68ED30(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ED50) -------------------------------------------------------- int __cdecl sub_68ED50(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ED70) -------------------------------------------------------- int __cdecl sub_68ED70(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068ED90) -------------------------------------------------------- int __usercall sub_68ED90(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068ED98) -------------------------------------------------------- void __usercall sub_68ED98(int a1) { sub_424190((void **)(a1 - 36)); } //----- (0068EDA0) -------------------------------------------------------- void __usercall sub_68EDA0(int a1) { sub_42A0B0(a1 - 72); } //----- (0068EDA8) -------------------------------------------------------- void __usercall sub_68EDA8(int a1) { sub_424190((void **)(a1 - 52)); } //----- (0068EDD0) -------------------------------------------------------- int __usercall sub_68EDD0(int a1) { return sub_4026F0((int *)(a1 - 80)); } //----- (0068EDD8) -------------------------------------------------------- void __usercall sub_68EDD8(int a1) { sub_424190((void **)(a1 - 76)); } //----- (0068EDE0) -------------------------------------------------------- void __usercall sub_68EDE0(int a1) { sub_42A170(a1 - 112); } //----- (0068EDE8) -------------------------------------------------------- void __usercall sub_68EDE8(int a1) { sub_424190((void **)(a1 - 128)); } //----- (0068EDF0) -------------------------------------------------------- int __cdecl sub_68EDF0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 33)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EE20) -------------------------------------------------------- int __usercall sub_68EE20(int a1) { return sub_4026F0((int *)(a1 - 108)); } //----- (0068EE28) -------------------------------------------------------- void __usercall sub_68EE28(int a1) { sub_48F660((void *)(a1 - 92)); } //----- (0068EE30) -------------------------------------------------------- void __usercall sub_68EE30(int a1) { sub_48F660((void *)(a1 - 92)); } //----- (0068EE38) -------------------------------------------------------- void __usercall sub_68EE38(int a1) { sub_48F660((void *)(a1 - 92)); } //----- (0068EE40) -------------------------------------------------------- int __cdecl sub_68EE40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 28)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EE70) -------------------------------------------------------- int __usercall sub_68EE70(int a1) { return sub_4026F0((int *)(a1 - 148)); } //----- (0068EE7B) -------------------------------------------------------- void __usercall sub_68EE7B(int a1) { sub_42A030(a1 - 144); } //----- (0068EE86) -------------------------------------------------------- void __usercall sub_68EE86(int a1) { sub_424190((void **)(a1 - 112)); } //----- (0068EE8E) -------------------------------------------------------- int __cdecl sub_68EE8E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 38)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EEC0) -------------------------------------------------------- void __usercall sub_68EEC0(int a1) { nullsub_2((void *)(a1 - 105372)); } //----- (0068EECB) -------------------------------------------------------- int __cdecl sub_68EECB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 26344)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EF00) -------------------------------------------------------- void __usercall sub_68EF00(int a1) { sub_610240(a1 - 44); } //----- (0068EF08) -------------------------------------------------------- int __cdecl sub_68EF08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 18)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EF30) -------------------------------------------------------- void __usercall sub_68EF30(int a1) { sub_610240(a1 - 44); } //----- (0068EF38) -------------------------------------------------------- void __usercall sub_68EF38(int a1) { sub_610240(a1 - 72); } //----- (0068EF40) -------------------------------------------------------- int __cdecl sub_68EF40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 88)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EF70) -------------------------------------------------------- int __usercall sub_68EF70(int a1) { return _LN21((void *)(a1 - 2416), 0x18u, 100, nullsub_2); } //----- (0068EF86) -------------------------------------------------------- int __cdecl sub_68EF86(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 613)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EFB0) -------------------------------------------------------- void __usercall sub_68EFB0(int a1) { sub_424190(*(void ***)(a1 - 16)); } //----- (0068EFB8) -------------------------------------------------------- int __usercall sub_68EFB8(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 26), 0x18u, 20, nullsub_2); } //----- (0068EFCE) -------------------------------------------------------- int __cdecl sub_68EFCE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068EFF0) -------------------------------------------------------- void __usercall sub_68EFF0(int a1) { sub_6530A4(*(void **)(a1 - 20)); } //----- (0068EFFB) -------------------------------------------------------- void __usercall sub_68EFFB(int a1) { sub_6530A4(*(void **)(a1 - 32)); } //----- (0068F030) -------------------------------------------------------- void __cdecl sub_68F030() { sub_424190(&dword_14D41B48); } //----- (0068F03A) -------------------------------------------------------- int __cdecl sub_68F03A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F060) -------------------------------------------------------- void __usercall sub_68F060(int a1) { nullsub_2((void *)(a1 - 16)); } //----- (0068F068) -------------------------------------------------------- int __cdecl sub_68F068(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F090) -------------------------------------------------------- int __usercall sub_68F090(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068F098) -------------------------------------------------------- int __cdecl sub_68F098(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F0C0) -------------------------------------------------------- int __usercall sub_68F0C0(int a1) { return sub_4026F0((int *)(a1 - 44)); } //----- (0068F0C8) -------------------------------------------------------- int __usercall sub_68F0C8(int a1) { return sub_428A70((void *)(a1 - 56)); } //----- (0068F0D0) -------------------------------------------------------- int __cdecl sub_68F0D0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F0F0) -------------------------------------------------------- int __usercall sub_68F0F0(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068F0F8) -------------------------------------------------------- int __cdecl sub_68F0F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F120) -------------------------------------------------------- void __usercall sub_68F120(int a1) { sub_6114F0(*(_DWORD *)(a1 - 16)); } //----- (0068F128) -------------------------------------------------------- int __cdecl sub_68F128(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F150) -------------------------------------------------------- int __usercall sub_68F150(int a1) { return sub_4026F0((int *)(a1 - 16)); } //----- (0068F158) -------------------------------------------------------- void __cdecl sub_68F158() { JUMPOUT(loc_61A760); } // 61A760: using guessed type int loc_61A760(); //----- (0068F163) -------------------------------------------------------- void *__usercall sub_68F163(int a1) { return memmove(off_849C18, (const void *)(a1 - 8208), 0x2000u); } //----- (0068F16E) -------------------------------------------------------- int __cdecl sub_68F16E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2053)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F190) -------------------------------------------------------- int __usercall sub_68F190(int a1) { return sub_4026F0((int *)(a1 - 28)); } //----- (0068F198) -------------------------------------------------------- void __cdecl sub_68F198() { JUMPOUT(loc_61A760); } // 61A760: using guessed type int loc_61A760(); //----- (0068F1A3) -------------------------------------------------------- int __usercall sub_68F1A3(int a1) { return sub_428A70((void *)(a1 - 24)); } //----- (0068F1AB) -------------------------------------------------------- int __cdecl sub_68F1AB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2056)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F1D0) -------------------------------------------------------- int __usercall sub_68F1D0(int a1) { return sub_4026F0((int *)(a1 - 20)); } //----- (0068F1D8) -------------------------------------------------------- void __cdecl sub_68F1D8() { JUMPOUT(loc_61A760); } // 61A760: using guessed type int loc_61A760(); //----- (0068F1E3) -------------------------------------------------------- int __cdecl sub_68F1E3(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2054)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F210) -------------------------------------------------------- int __usercall sub_68F210(int a1) { return sub_4026F0((int *)(a1 - 72)); } //----- (0068F218) -------------------------------------------------------- int __cdecl sub_68F218(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 19)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F240) -------------------------------------------------------- int __cdecl sub_68F240(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F260) -------------------------------------------------------- int __cdecl sub_68F260(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F280) -------------------------------------------------------- int __cdecl sub_68F280(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F2A0) -------------------------------------------------------- int __cdecl sub_68F2A0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F2C0) -------------------------------------------------------- int __cdecl sub_68F2C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F2E0) -------------------------------------------------------- int __cdecl sub_68F2E0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F300) -------------------------------------------------------- int __cdecl sub_68F300(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F320) -------------------------------------------------------- void __usercall sub_68F320(int a1) { sub_424190(*(void ***)(a1 - 16)); } //----- (0068F328) -------------------------------------------------------- int __usercall sub_68F328(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 16), 0x10u, 9, (void (__thiscall *)(void *))sub_424190); } //----- (0068F33E) -------------------------------------------------------- void __usercall sub_68F33E(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 240)); } //----- (0068F34C) -------------------------------------------------------- int __cdecl sub_68F34C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F370) -------------------------------------------------------- void __usercall sub_68F370(int a1) { sub_424190(*(void ***)(a1 - 16)); } //----- (0068F378) -------------------------------------------------------- int __usercall sub_68F378(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 16) + 16), 0x10u, 9, (void (__thiscall *)(void *))sub_424190); } //----- (0068F38E) -------------------------------------------------------- void __usercall sub_68F38E(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 240)); } //----- (0068F39C) -------------------------------------------------------- int __cdecl sub_68F39C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F3C0) -------------------------------------------------------- void __usercall sub_68F3C0(int a1) { *(_DWORD *)(a1 - 344) = &off_7020D4; sub_639940(a1 - 344); } // 7020D4: using guessed type int (__thiscall *off_7020D4)(void *, char); //----- (0068F3CB) -------------------------------------------------------- void __usercall sub_68F3CB(int a1) { *(_DWORD *)(a1 - 340) = &off_7020DC; sub_639940(a1 - 340); } // 7020DC: using guessed type int (__thiscall *off_7020DC)(void *, char); //----- (0068F3D6) -------------------------------------------------------- void __usercall sub_68F3D6(int a1) { *(_DWORD *)(a1 - 344) = &off_7020E4; sub_639940(a1 - 344); } // 7020E4: using guessed type int (__thiscall *off_7020E4)(void *, char); //----- (0068F3E1) -------------------------------------------------------- void __usercall sub_68F3E1(int a1) { *(_DWORD *)(a1 - 412) = &off_7020EC; sub_639940(a1 - 412); } // 7020EC: using guessed type int (__thiscall *off_7020EC)(void *, char); //----- (0068F3EC) -------------------------------------------------------- int __cdecl sub_68F3EC(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 108)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F420) -------------------------------------------------------- void __usercall sub_68F420(int a1) { *(_DWORD *)(a1 - 92) = &off_7020F4; sub_639940(a1 - 92); } // 7020F4: using guessed type int (__thiscall *off_7020F4)(void *, char); //----- (0068F428) -------------------------------------------------------- int __cdecl sub_68F428(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F450) -------------------------------------------------------- void __usercall sub_68F450(int a1) { *(_DWORD *)(a1 - 480) = &off_7020C4; sub_639940(a1 - 480); } // 7020C4: using guessed type int (__thiscall *off_7020C4)(void *, char); //----- (0068F45B) -------------------------------------------------------- void __usercall sub_68F45B(int a1) { *(_DWORD *)(a1 - 408) = &off_7020CC; sub_639940(a1 - 408); } // 7020CC: using guessed type int (__thiscall *off_7020CC)(void *, char); //----- (0068F466) -------------------------------------------------------- int __cdecl sub_68F466(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 127)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F490) -------------------------------------------------------- int __usercall sub_68F490(int a1) { return sub_4026F0((int *)(a1 - 1064)); } //----- (0068F49B) -------------------------------------------------------- void __cdecl sub_68F49B() { JUMPOUT(loc_61A760); } // 61A760: using guessed type int loc_61A760(); //----- (0068F4A6) -------------------------------------------------------- void __usercall sub_68F4A6(int a1) { nullsub_2((void *)(a1 - 1036)); } //----- (0068F4B1) -------------------------------------------------------- int __cdecl sub_68F4B1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2315)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F4E0) -------------------------------------------------------- void __usercall sub_68F4E0(int a1) { nullsub_2(*(void **)(a1 + 8)); } //----- (0068F4F1) -------------------------------------------------------- int __cdecl sub_68F4F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F510) -------------------------------------------------------- void __usercall sub_68F510(int a1) { sub_5C4DE0(a1 - 40); } //----- (0068F518) -------------------------------------------------------- void __usercall sub_68F518(int a1) { nullsub_2(*(void **)(a1 + 12)); } //----- (0068F529) -------------------------------------------------------- int __cdecl sub_68F529(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F550) -------------------------------------------------------- int __cdecl sub_68F550(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F570) -------------------------------------------------------- void __usercall sub_68F570(int a1) { operator delete(*(void **)(a1 - 292)); } //----- (0068F57E) -------------------------------------------------------- int __cdecl sub_68F57E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 75)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F5B0) -------------------------------------------------------- void __usercall sub_68F5B0(int a1) { operator delete(*(void **)(a1 - 284)); } //----- (0068F5BE) -------------------------------------------------------- int __cdecl sub_68F5BE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 74)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F5F0) -------------------------------------------------------- void __usercall sub_68F5F0(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068F601) -------------------------------------------------------- int __cdecl sub_68F601(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F620) -------------------------------------------------------- void __usercall sub_68F620(int a1) { sub_424F60(*(_DWORD *)(a1 - 16)); } //----- (0068F628) -------------------------------------------------------- void __usercall sub_68F628(int a1) { sub_623A80(*(_DWORD *)(a1 - 16) + 16); } //----- (0068F633) -------------------------------------------------------- void __cdecl sub_68F633() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068F63B) -------------------------------------------------------- void __cdecl sub_68F63B() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068F643) -------------------------------------------------------- int __cdecl sub_68F643(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F660) -------------------------------------------------------- void __usercall sub_68F660(int a1) { sub_424F60(*(_DWORD *)(a1 - 64)); } //----- (0068F668) -------------------------------------------------------- void __usercall sub_68F668(int a1) { sub_623A80(*(_DWORD *)(a1 - 64) + 16); } //----- (0068F673) -------------------------------------------------------- int __usercall sub_68F673(int a1) { int v1; // esi@1 int result; // eax@3 v1 = a1 - 48; if ( *(_DWORD *)(a1 - 48 + 24) >= 0x10u ) operator delete(*(void **)(a1 - 48 + 4)); result = 0; *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; return result; } //----- (0068F67B) -------------------------------------------------------- void __cdecl sub_68F67B() { JUMPOUT(loc_622FA0); } // 622FA0: using guessed type int loc_622FA0(); //----- (0068F683) -------------------------------------------------------- int __cdecl sub_68F683(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F6B0) -------------------------------------------------------- void __cdecl sub_68F6B0() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068F6BA) -------------------------------------------------------- int __cdecl sub_68F6BA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F6E0) -------------------------------------------------------- int __usercall sub_68F6E0(int a1) { return sub_4026F0((int *)(a1 - 164)); } //----- (0068F6EB) -------------------------------------------------------- void __usercall sub_68F6EB(int a1) { sub_43BB10((void *)(a1 - 160)); } //----- (0068F6F6) -------------------------------------------------------- void __usercall sub_68F6F6(int a1) { nullsub_2((void *)(a1 - 140)); } //----- (0068F701) -------------------------------------------------------- int __cdecl sub_68F701(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 42)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F730) -------------------------------------------------------- int __cdecl sub_68F730(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F750) -------------------------------------------------------- int __usercall sub_68F750(int a1) { return sub_4026F0((int *)(a1 - 32)); } //----- (0068F758) -------------------------------------------------------- int __cdecl sub_68F758(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F780) -------------------------------------------------------- void __usercall sub_68F780(int a1) { *(_DWORD *)(a1 - 636) = &off_6F5CD0; sub_639940(a1 - 636); } // 6F5CD0: using guessed type int (__thiscall *off_6F5CD0)(void *, char); //----- (0068F78B) -------------------------------------------------------- int __cdecl sub_68F78B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 162)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F7C0) -------------------------------------------------------- void __usercall sub_68F7C0(int a1) { sub_4D5600((void *)(a1 + 8)); } //----- (0068F7C8) -------------------------------------------------------- int __cdecl sub_68F7C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F8A0) -------------------------------------------------------- void __usercall sub_68F8A0(int a1) { sub_610240(a1 - 44); } //----- (0068F8A8) -------------------------------------------------------- int __cdecl sub_68F8A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F8D0) -------------------------------------------------------- void __usercall sub_68F8D0(int a1) { sub_4D5600((void *)(a1 - 112)); } //----- (0068F8D8) -------------------------------------------------------- void __usercall sub_68F8D8(int a1) { sub_610240(a1 - 76); } //----- (0068F8E0) -------------------------------------------------------- void __usercall sub_68F8E0(int a1) { sub_610240(a1 - 44); } //----- (0068F8E8) -------------------------------------------------------- void __usercall sub_68F8E8(int a1) { sub_610240(a1 - 44); } //----- (0068F8F0) -------------------------------------------------------- void __usercall sub_68F8F0(int a1) { sub_4D5600((void *)(a1 - 104)); } //----- (0068F8F8) -------------------------------------------------------- int __cdecl sub_68F8F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F920) -------------------------------------------------------- void __usercall sub_68F920(int a1) { sub_4D5600((void *)(a1 - 76)); } //----- (0068F928) -------------------------------------------------------- int __cdecl sub_68F928(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F950) -------------------------------------------------------- void __usercall sub_68F950(int a1) { sub_4D5600((void *)(a1 - 64)); } //----- (0068F958) -------------------------------------------------------- int __cdecl sub_68F958(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F980) -------------------------------------------------------- void __usercall sub_68F980(int a1) { sub_4D5600((void *)(a1 - 64)); } //----- (0068F988) -------------------------------------------------------- int __cdecl sub_68F988(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068F9B0) -------------------------------------------------------- void __usercall sub_68F9B0(int a1) { sub_4D5600((void *)(a1 - 72)); } //----- (0068F9B8) -------------------------------------------------------- int __cdecl sub_68F9B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 21)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FA20) -------------------------------------------------------- void __usercall sub_68FA20(int a1) { sub_626C10(a1 - 80); } //----- (0068FA28) -------------------------------------------------------- int __cdecl sub_68FA28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 20)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FA50) -------------------------------------------------------- void __usercall sub_68FA50(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068FA61) -------------------------------------------------------- int __cdecl sub_68FA61(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FA80) -------------------------------------------------------- void __usercall sub_68FA80(int a1) { sub_610240(a1 - 48); } //----- (0068FA88) -------------------------------------------------------- int __cdecl sub_68FA88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 14)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FAB0) -------------------------------------------------------- void __usercall sub_68FAB0(int a1) { sub_626C10(a1 - 80); } //----- (0068FAB8) -------------------------------------------------------- void __usercall sub_68FAB8(int a1) { sub_610240(a1 - 116); } //----- (0068FAC0) -------------------------------------------------------- int __cdecl sub_68FAC0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 30)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FAF0) -------------------------------------------------------- void __usercall sub_68FAF0(int a1) { sub_610240(a1 + 8); } //----- (0068FAF8) -------------------------------------------------------- int __cdecl sub_68FAF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FB20) -------------------------------------------------------- void __usercall sub_68FB20(int a1) { sub_626C10(*(_DWORD *)(a1 - 16)); } //----- (0068FB28) -------------------------------------------------------- void __usercall sub_68FB28(int a1) { sub_631E70(*(_DWORD *)(a1 - 16) + 64); } //----- (0068FB33) -------------------------------------------------------- void __cdecl sub_68FB33() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0068FB3B) -------------------------------------------------------- int __cdecl sub_68FB3B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FB60) -------------------------------------------------------- void __usercall sub_68FB60(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068FB71) -------------------------------------------------------- void __usercall sub_68FB71(int a1) { sub_610240(*(_DWORD *)(a1 - 28)); } //----- (0068FB79) -------------------------------------------------------- int __cdecl sub_68FB79(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FBA0) -------------------------------------------------------- void __usercall sub_68FBA0(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (0068FBB1) -------------------------------------------------------- void __usercall sub_68FBB1(int a1) { sub_610240(*(_DWORD *)(a1 - 28)); } //----- (0068FBB9) -------------------------------------------------------- int __cdecl sub_68FBB9(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FBE0) -------------------------------------------------------- void __usercall sub_68FBE0(int a1) { sub_626C10(*(_DWORD *)(a1 - 20)); } //----- (0068FBE8) -------------------------------------------------------- int __cdecl sub_68FBE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FC10) -------------------------------------------------------- void __usercall sub_68FC10(int a1) { sub_610240(a1 - 44); } //----- (0068FC18) -------------------------------------------------------- void __usercall sub_68FC18(int a1) { sub_610240(a1 - 100); } //----- (0068FC20) -------------------------------------------------------- void __usercall sub_68FC20(int a1) { int v1; // esi@1 v1 = a1 - 100; if ( *(_DWORD *)(a1 - 100 + 48) >= 0x10u ) operator delete(*(void **)(a1 - 100 + 28)); *(_DWORD *)(v1 + 48) = 15; *(_DWORD *)(v1 + 44) = 0; *(_BYTE *)(v1 + 28) = 0; if ( *(_DWORD *)(v1 + 20) >= 0x10u ) operator delete(*(void **)v1); *(_DWORD *)(v1 + 20) = 15; *(_DWORD *)(v1 + 16) = 0; *(_BYTE *)v1 = 0; } //----- (0068FC28) -------------------------------------------------------- int __cdecl sub_68FC28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 36)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FC50) -------------------------------------------------------- void __usercall sub_68FC50(int a1) { sub_610240(a1 - 100); } //----- (0068FC58) -------------------------------------------------------- void __usercall sub_68FC58(int a1) { sub_610240(a1 - 72); } //----- (0068FC60) -------------------------------------------------------- void __cdecl sub_68FC60() { JUMPOUT(loc_631420); } // 631420: using guessed type int loc_631420(); //----- (0068FC68) -------------------------------------------------------- int __cdecl sub_68FC68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FC90) -------------------------------------------------------- int __cdecl sub_68FC90(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FCB0) -------------------------------------------------------- void __usercall sub_68FCB0(int a1) { void **v1; // esi@1 void **v2; // ecx@1 void *v3; // eax@1 void *v4; // edi@2 int v5; // ecx@1 v5 = *(_DWORD *)(a1 - 16) + 4; v1 = (void **)v5; v2 = *(void ***)v5; v3 = *v2; *v2 = v2; *((_DWORD *)*v1 + 1) = *v1; v1[1] = 0; if ( v3 != *v1 ) { do { v4 = *(void **)v3; operator delete(v3); v3 = v4; } while ( v4 != *v1 ); } operator delete(*v1); } //----- (0068FCBB) -------------------------------------------------------- void __usercall sub_68FCBB(int a1) { sub_424190((void **)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0068FCC6) -------------------------------------------------------- int __cdecl sub_68FCC6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FCF0) -------------------------------------------------------- int __usercall sub_68FCF0(int a1) { return sub_632F70(*(_DWORD *)(a1 - 16) + 28); } // 632F70: using guessed type int __thiscall sub_632F70(_DWORD); //----- (0068FCFB) -------------------------------------------------------- int __cdecl sub_68FCFB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FD20) -------------------------------------------------------- int __usercall sub_68FD20(int a1) { return sub_632F70(*(_DWORD *)(a1 - 16) + 28); } // 632F70: using guessed type int __thiscall sub_632F70(_DWORD); //----- (0068FD2B) -------------------------------------------------------- int __usercall sub_68FD2B(int a1) { return sub_632F70(*(_DWORD *)(a1 - 16) + 72); } // 632F70: using guessed type int __thiscall sub_632F70(_DWORD); //----- (0068FD36) -------------------------------------------------------- int __cdecl sub_68FD36(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FD60) -------------------------------------------------------- int __usercall sub_68FD60(int a1) { return sub_637D00(*(_DWORD *)(a1 - 16) + 1340); } //----- (0068FD6E) -------------------------------------------------------- int __cdecl sub_68FD6E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FD90) -------------------------------------------------------- int __usercall sub_68FD90(int a1) { return sub_637D00(*(_DWORD *)(a1 - 16) + 1340); } //----- (0068FD9E) -------------------------------------------------------- int __cdecl sub_68FD9E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FDC0) -------------------------------------------------------- void __usercall sub_68FDC0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0068FDCB) -------------------------------------------------------- int __cdecl sub_68FDCB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FDF0) -------------------------------------------------------- int __usercall sub_68FDF0(int a1) { return std::_Lockit::__Lockit(a1 - 24); } // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (0068FDF8) -------------------------------------------------------- int __cdecl sub_68FDF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FE20) -------------------------------------------------------- void __usercall sub_68FE20(int a1) { sub_4D5600((void *)(a1 + 16)); } //----- (0068FE28) -------------------------------------------------------- int __cdecl sub_68FE28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FE50) -------------------------------------------------------- void __cdecl sub_68FE50() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (0068FE58) -------------------------------------------------------- void __cdecl sub_68FE58() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (0068FE60) -------------------------------------------------------- int __cdecl sub_68FE60(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FE80) -------------------------------------------------------- void __cdecl sub_68FE80() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (0068FE88) -------------------------------------------------------- void __cdecl sub_68FE88() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (0068FEC0) -------------------------------------------------------- void __cdecl sub_68FEC0() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (0068FEC8) -------------------------------------------------------- void __cdecl sub_68FEC8() { JUMPOUT(loc_626BF0); } // 626BF0: using guessed type int loc_626BF0(); //----- (0068FED0) -------------------------------------------------------- void __usercall sub_68FED0(int a1) { sub_4D5600((void *)(a1 - 36)); } //----- (0068FF00) -------------------------------------------------------- void __usercall sub_68FF00(int a1) { sub_610240(a1 - 44); } //----- (0068FF08) -------------------------------------------------------- int __cdecl sub_68FF08(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 15)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FF30) -------------------------------------------------------- void __usercall sub_68FF30(int a1) { sub_610240(a1 - 44); } //----- (0068FF38) -------------------------------------------------------- void __usercall sub_68FF38(int a1) { sub_610240(a1 - 72); } //----- (0068FF40) -------------------------------------------------------- int __cdecl sub_68FF40(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FF70) -------------------------------------------------------- int __usercall sub_68FF70(int a1) { return sub_4D8210(*(_DWORD *)(a1 - 16)); } //----- (0068FF78) -------------------------------------------------------- int __cdecl sub_68FF78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FFA0) -------------------------------------------------------- int __usercall sub_68FFA0(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 16) & 1; if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; JUMPOUT(loc_4D6240); } return result; } // 4D6240: using guessed type int loc_4D6240(); //----- (0068FFBC) -------------------------------------------------------- void __cdecl sub_68FFBC() { JUMPOUT(loc_4D6250); } // 4D6250: using guessed type int loc_4D6250(); //----- (0068FFC7) -------------------------------------------------------- int __cdecl sub_68FFC7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0068FFF0) -------------------------------------------------------- void __cdecl sub_68FFF0() { JUMPOUT(loc_4D6250); } // 4D6250: using guessed type int loc_4D6250(); //----- (0068FFFB) -------------------------------------------------------- int __usercall sub_68FFFB(int a1) { return sub_4D8210(*(_DWORD *)(a1 - 20)); } //----- (00690003) -------------------------------------------------------- int __cdecl sub_690003(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690020) -------------------------------------------------------- void __usercall sub_690020(int a1) { nullsub_2(*(void **)(a1 - 28)); } //----- (00690031) -------------------------------------------------------- int __cdecl sub_690031(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690050) -------------------------------------------------------- int __usercall sub_690050(int a1) { void *v1; // esi@1 v1 = (void *)(a1 - 500 + 104); sub_6364F0(v1); *(_DWORD *)v1 = &off_6C59A0; return std::ios_base::_Ios_base_dtor(v1); } // 651F21: using guessed type _DWORD __cdecl std__ios_base___Ios_base_dtor(_DWORD); // 6C59A0: using guessed type int (__thiscall *off_6C59A0)(void *, char); //----- (0069005B) -------------------------------------------------------- void __usercall sub_69005B(int a1) { sub_610240(a1 - 72); } //----- (00690063) -------------------------------------------------------- void __usercall sub_690063(int a1) { sub_4D5600((void *)(a1 - 136)); } //----- (0069006E) -------------------------------------------------------- int __usercall sub_69006E(int a1) { int result; // eax@1 result = *(_DWORD *)(a1 - 112) & 1; if ( *(_DWORD *)(a1 - 112) & 1 ) { *(_DWORD *)(a1 - 112) &= 0xFFFFFFFEu; JUMPOUT(loc_4D6240); } return result; } // 4D6240: using guessed type int loc_4D6240(); //----- (0069008A) -------------------------------------------------------- void __usercall sub_69008A(int a1) { sub_4D5600((void *)(a1 - 140)); } //----- (00690095) -------------------------------------------------------- void __cdecl sub_690095() { JUMPOUT(loc_4D6250); } // 4D6250: using guessed type int loc_4D6250(); //----- (006900A0) -------------------------------------------------------- void __cdecl sub_6900A0() { JUMPOUT(loc_4D6260); } // 4D6260: using guessed type int loc_4D6260(); //----- (006900AB) -------------------------------------------------------- int __usercall sub_6900AB(int a1) { return sub_4D8210(*(_DWORD *)(a1 - 108)); } //----- (006900B3) -------------------------------------------------------- void __cdecl sub_6900B3() { JUMPOUT(loc_4DC3A0); } // 4DC3A0: using guessed type int loc_4DC3A0(); //----- (006900BE) -------------------------------------------------------- void __usercall sub_6900BE(int a1) { sub_610240(a1 - 44); } //----- (006900C6) -------------------------------------------------------- void __usercall sub_6900C6(int a1) { sub_610240(a1 - 104); } //----- (006900CE) -------------------------------------------------------- void __cdecl sub_6900CE() { JUMPOUT(loc_4D6260); } // 4D6260: using guessed type int loc_4D6260(); //----- (006900D9) -------------------------------------------------------- int __usercall sub_6900D9(int a1) { return std::_Mutex::__Mutex(*(_DWORD *)(a1 - 316) + 4); } // 65208B: using guessed type int __thiscall std___Mutex____Mutex(_DWORD); //----- (006900E7) -------------------------------------------------------- int __cdecl sub_6900E7(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 126)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690110) -------------------------------------------------------- void __cdecl sub_690110() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0069011A) -------------------------------------------------------- int __cdecl sub_69011A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 2)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690140) -------------------------------------------------------- void __usercall sub_690140(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; sub_610240(*(_DWORD *)(a1 - 104)); } } //----- (00690159) -------------------------------------------------------- void __usercall sub_690159(int a1) { sub_610240(a1 - 100); } //----- (00690161) -------------------------------------------------------- int __cdecl sub_690161(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 27)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690190) -------------------------------------------------------- void __usercall sub_690190(int a1) { *(_DWORD *)(a1 - 108) = &off_70424C; } // 70424C: using guessed type int (__thiscall *off_70424C)(void *, char); //----- (00690198) -------------------------------------------------------- int __cdecl sub_690198(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 29)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006901C0) -------------------------------------------------------- int __usercall sub_6901C0(int a1) { return sub_638D70(*(_DWORD *)(a1 - 16)); } // 638D70: using guessed type int __thiscall sub_638D70(_DWORD); //----- (006901C8) -------------------------------------------------------- int __cdecl sub_6901C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006901F0) -------------------------------------------------------- int __usercall sub_6901F0(int a1) { return _LN21(*(void **)(a1 - 84), 0x8008u, 101, nullsub_2); } //----- (00690206) -------------------------------------------------------- int __usercall sub_690206(int a1) { return _LN21((void *)(*(_DWORD *)(a1 - 84) + 3310376), 0x8008u, 4, nullsub_2); } //----- (00690221) -------------------------------------------------------- void __usercall sub_690221(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 84) + 3441480)); } //----- (0069022F) -------------------------------------------------------- int __cdecl sub_69022F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 24)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690260) -------------------------------------------------------- int __cdecl sub_690260() { return _LN21(&unk_14D42DC0, 0x8008u, 101, nullsub_2); } //----- (00690277) -------------------------------------------------------- int __cdecl sub_690277() { return _LN21(&unk_1506B0E8, 0x8008u, 4, nullsub_2); } //----- (0069028E) -------------------------------------------------------- int __cdecl sub_69028E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006902B0) -------------------------------------------------------- void __usercall sub_6902B0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_706408; sub_639940(v1); } // 706408: using guessed type int (__thiscall *off_706408)(void *, char); //----- (006902B8) -------------------------------------------------------- void __usercall sub_6902B8(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 172; *(_DWORD *)v1 = &off_706410; sub_639940(v1); } // 706410: using guessed type int (__thiscall *off_706410)(void *, char); //----- (006902C6) -------------------------------------------------------- void __usercall sub_6902C6(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 404; *(_DWORD *)v1 = &off_706418; sub_639940(v1); } // 706418: using guessed type int (__thiscall *off_706418)(void *, char); //----- (006902D4) -------------------------------------------------------- void __usercall sub_6902D4(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 620; *(_DWORD *)v1 = &off_706420; sub_639940(v1); } // 706420: using guessed type int (__thiscall *off_706420)(void *, char); //----- (006902E2) -------------------------------------------------------- void __usercall sub_6902E2(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 820; *(_DWORD *)v1 = &off_706428; sub_639940(v1); } // 706428: using guessed type int (__thiscall *off_706428)(void *, char); //----- (006902F0) -------------------------------------------------------- void __usercall sub_6902F0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1052; *(_DWORD *)v1 = &off_706430; sub_639940(v1); } // 706430: using guessed type int (__thiscall *off_706430)(void *, char); //----- (006902FE) -------------------------------------------------------- void __usercall sub_6902FE(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1124; *(_DWORD *)v1 = &off_706438; sub_639940(v1); } // 706438: using guessed type int (__thiscall *off_706438)(void *, char); //----- (0069030C) -------------------------------------------------------- void __usercall sub_69030C(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1192; *(_DWORD *)v1 = &off_706440; sub_639940(v1); } // 706440: using guessed type int (__thiscall *off_706440)(void *, char); //----- (0069031A) -------------------------------------------------------- void __usercall sub_69031A(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1292; *(_DWORD *)v1 = &off_706448; sub_639940(v1); } // 706448: using guessed type int (__thiscall *off_706448)(void *, char); //----- (00690328) -------------------------------------------------------- void __usercall sub_690328(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1364; *(_DWORD *)v1 = &off_706450; sub_639940(v1); } // 706450: using guessed type int (__thiscall *off_706450)(void *, char); //----- (00690336) -------------------------------------------------------- int __cdecl sub_690336(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690360) -------------------------------------------------------- void __cdecl sub_690360() { JUMPOUT(loc_63DAD0); } // 63DAD0: using guessed type int loc_63DAD0(); //----- (00690368) -------------------------------------------------------- void __cdecl sub_690368() { JUMPOUT(loc_63DB90); } // 63DB90: using guessed type int loc_63DB90(); //----- (00690376) -------------------------------------------------------- void __cdecl sub_690376() { JUMPOUT(loc_63DC50); } // 63DC50: using guessed type int loc_63DC50(); //----- (00690384) -------------------------------------------------------- void __cdecl sub_690384() { JUMPOUT(loc_63DD10); } // 63DD10: using guessed type int loc_63DD10(); //----- (00690392) -------------------------------------------------------- void __cdecl sub_690392() { JUMPOUT(loc_63DDD0); } // 63DDD0: using guessed type int loc_63DDD0(); //----- (006903A0) -------------------------------------------------------- void __cdecl sub_6903A0() { JUMPOUT(loc_63DE90); } // 63DE90: using guessed type int loc_63DE90(); //----- (006903AE) -------------------------------------------------------- void __cdecl sub_6903AE() { JUMPOUT(loc_63DF40); } // 63DF40: using guessed type int loc_63DF40(); //----- (006903BC) -------------------------------------------------------- void __cdecl sub_6903BC() { JUMPOUT(loc_63DFF0); } // 63DFF0: using guessed type int loc_63DFF0(); //----- (006903CA) -------------------------------------------------------- void __cdecl sub_6903CA() { JUMPOUT(loc_63E0A0); } // 63E0A0: using guessed type int loc_63E0A0(); //----- (006903D8) -------------------------------------------------------- void __cdecl sub_6903D8() { JUMPOUT(loc_63E0B0); } // 63E0B0: using guessed type int loc_63E0B0(); //----- (006903E6) -------------------------------------------------------- int __cdecl sub_6903E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690410) -------------------------------------------------------- void __usercall sub_690410(int a1) { sub_63E630(*(void **)(a1 - 16)); } //----- (00690418) -------------------------------------------------------- void __usercall sub_690418(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 1640)); } //----- (00690426) -------------------------------------------------------- void __cdecl sub_690426() { JUMPOUT(loc_647B40); } // 647B40: using guessed type int loc_647B40(); //----- (0069042E) -------------------------------------------------------- int __cdecl sub_69042E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690450) -------------------------------------------------------- void __usercall sub_690450(int a1) { sub_63E630(*(void **)(a1 - 20)); } //----- (00690458) -------------------------------------------------------- void __usercall sub_690458(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 20) + 1640)); } //----- (00690466) -------------------------------------------------------- void __usercall sub_690466(int a1) { sub_424F60(*(_DWORD *)(a1 - 20) + 2668); } //----- (00690474) -------------------------------------------------------- int __cdecl sub_690474(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690490) -------------------------------------------------------- void __usercall sub_690490(int a1) { sub_43BB10((void *)(a1 - 32)); } //----- (00690498) -------------------------------------------------------- int __cdecl sub_690498(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006904C0) -------------------------------------------------------- void __usercall sub_6904C0(int a1) { sub_43BB10((void *)(a1 - 40)); } //----- (006904C8) -------------------------------------------------------- int __cdecl sub_6904C8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690520) -------------------------------------------------------- void __usercall sub_690520(int a1) { sub_43BB10((void *)(a1 - 28)); } //----- (00690528) -------------------------------------------------------- int __cdecl sub_690528(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690550) -------------------------------------------------------- void __usercall sub_690550(int a1) { **(_DWORD **)(a1 - 16) = off_7068D0; } // 7068D0: using guessed type int (*off_7068D0[4])(); //----- (00690558) -------------------------------------------------------- int __cdecl sub_690558(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690580) -------------------------------------------------------- void __usercall sub_690580(int a1) { **(_DWORD **)(a1 - 16) = off_7069D8; } // 7069D8: using guessed type int (*off_7069D8[3])(); //----- (00690588) -------------------------------------------------------- int __cdecl sub_690588(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006905B0) -------------------------------------------------------- void __usercall sub_6905B0(int a1) { sub_43BB10((void *)(a1 - 28)); } //----- (006905B8) -------------------------------------------------------- int __cdecl sub_6905B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 8)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006905E0) -------------------------------------------------------- void __usercall sub_6905E0(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (006905E8) -------------------------------------------------------- void __usercall sub_6905E8(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (006905F3) -------------------------------------------------------- void __usercall sub_6905F3(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (006905FE) -------------------------------------------------------- void __usercall sub_6905FE(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (00690609) -------------------------------------------------------- void __usercall sub_690609(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 117)); } //----- (00690614) -------------------------------------------------------- int __cdecl sub_690614(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690630) -------------------------------------------------------- void __usercall sub_690630(int a1) { sub_643EB0((void *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0069063B) -------------------------------------------------------- void __usercall sub_69063B(int a1) { void *v1; // eax@1 void *v2; // esi@2 v1 = *(void **)(*(_DWORD *)(a1 - 16) + 2072); if ( v1 ) { v2 = (char *)v1 - 4; _LN21(v1, 0x808u, *((_DWORD *)v1 - 1), (void (__thiscall *)(void *))sub_650880); sub_6530A4(v2); } } //----- (00690649) -------------------------------------------------------- void __usercall sub_690649(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16) + 2080; *(_DWORD *)v2 = &off_706D38; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 706D38: using guessed type int (__thiscall *off_706D38)(void *, char); //----- (00690657) -------------------------------------------------------- int __cdecl sub_690657(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690680) -------------------------------------------------------- void __usercall sub_690680(int a1) { *(_DWORD *)(a1 - 20) = &off_706D80; } // 706D80: using guessed type int (__stdcall *off_706D80)(int, int); //----- (00690688) -------------------------------------------------------- int __cdecl sub_690688(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006906B0) -------------------------------------------------------- void __usercall sub_6906B0(int a1) { *(_DWORD *)(a1 - 20) = &off_706D88; } // 706D88: using guessed type int (__stdcall *off_706D88)(int, int); //----- (006906B8) -------------------------------------------------------- int __cdecl sub_6906B8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006906E0) -------------------------------------------------------- void __usercall sub_6906E0(int a1) { sub_6426F0(*(void **)(a1 - 16)); } //----- (006906E8) -------------------------------------------------------- void __usercall sub_6906E8(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16) + 156; *(_DWORD *)v2 = &off_706D5C; v1 = *(void **)(v2 + 8); if ( v1 ) sub_6530A4(v1); } // 706D5C: using guessed type int (__thiscall *off_706D5C)(void *, char); //----- (006906F6) -------------------------------------------------------- void __usercall sub_6906F6(int a1) { nullsub_2(*(void **)(a1 - 16)); } //----- (006906FE) -------------------------------------------------------- void __usercall sub_6906FE(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00690709) -------------------------------------------------------- void __usercall sub_690709(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (00690714) -------------------------------------------------------- void __usercall sub_690714(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (0069071F) -------------------------------------------------------- void __usercall sub_69071F(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 16) + 117)); } //----- (0069072A) -------------------------------------------------------- int __cdecl sub_69072A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690750) -------------------------------------------------------- void __usercall sub_690750(int a1) { sub_643EB0((void *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0069075B) -------------------------------------------------------- void __usercall sub_69075B(int a1) { sub_6530A4(*(void **)(a1 - 20)); } //----- (00690766) -------------------------------------------------------- void __cdecl sub_690766() { JUMPOUT(loc_642A10); } // 642A10: using guessed type int loc_642A10(); //----- (00690774) -------------------------------------------------------- int __cdecl sub_690774(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690790) -------------------------------------------------------- void __usercall sub_690790(int a1) { nullsub_2(*(void **)(a1 - 20)); } //----- (00690798) -------------------------------------------------------- void __usercall sub_690798(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 12)); } //----- (006907A3) -------------------------------------------------------- void __usercall sub_6907A3(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 48)); } //----- (006907AE) -------------------------------------------------------- void __usercall sub_6907AE(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 116)); } //----- (006907B9) -------------------------------------------------------- void __usercall sub_6907B9(int a1) { nullsub_2((void *)(*(_DWORD *)(a1 - 20) + 117)); } //----- (006907C4) -------------------------------------------------------- void __usercall sub_6907C4(int a1) { sub_6426F0(*(void **)(a1 - 20)); } //----- (006907CC) -------------------------------------------------------- void __cdecl sub_6907CC() { JUMPOUT(loc_6428F0); } // 6428F0: using guessed type int loc_6428F0(); //----- (006907DA) -------------------------------------------------------- int __cdecl sub_6907DA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690800) -------------------------------------------------------- void __usercall sub_690800(int a1) { nullsub_2((void *)(a1 - 6196)); } //----- (0069080B) -------------------------------------------------------- int __cdecl sub_69080B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1551)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690840) -------------------------------------------------------- void __usercall sub_690840(int a1) { *(_DWORD *)(a1 - 48) = &off_706F30; } // 706F30: using guessed type int (__stdcall *off_706F30)(int, int); //----- (00690848) -------------------------------------------------------- int __cdecl sub_690848(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 11)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690870) -------------------------------------------------------- void __cdecl sub_690870() { JUMPOUT(loc_643DE0); } // 643DE0: using guessed type int loc_643DE0(); //----- (00690878) -------------------------------------------------------- int __cdecl sub_690878(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 14)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006908A0) -------------------------------------------------------- void __usercall sub_6908A0(int a1) { operator delete(*(void **)(a1 - 52)); } //----- (00690910) -------------------------------------------------------- void __cdecl sub_690910() { JUMPOUT(loc_643DE0); } // 643DE0: using guessed type int loc_643DE0(); //----- (00690918) -------------------------------------------------------- int __cdecl sub_690918(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690940) -------------------------------------------------------- void __cdecl sub_690940() { JUMPOUT(loc_642B70); } // 642B70: using guessed type int loc_642B70(); //----- (00690948) -------------------------------------------------------- void __cdecl sub_690948() { JUMPOUT(loc_643DE0); } // 643DE0: using guessed type int loc_643DE0(); //----- (00690950) -------------------------------------------------------- int __cdecl sub_690950(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 22)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690980) -------------------------------------------------------- void __cdecl sub_690980() { JUMPOUT(loc_642B70); } // 642B70: using guessed type int loc_642B70(); //----- (00690988) -------------------------------------------------------- int __cdecl sub_690988(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006909B0) -------------------------------------------------------- void __cdecl sub_6909B0() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (006909B8) -------------------------------------------------------- void __cdecl sub_6909B8() { JUMPOUT(loc_642B70); } // 642B70: using guessed type int loc_642B70(); //----- (006909C0) -------------------------------------------------------- int __cdecl sub_6909C0(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006909F0) -------------------------------------------------------- void __cdecl sub_6909F0() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (006909F8) -------------------------------------------------------- int __cdecl sub_6909F8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 13)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690A20) -------------------------------------------------------- void __cdecl sub_690A20() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (00690A28) -------------------------------------------------------- int __cdecl sub_690A28(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 12)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690A80) -------------------------------------------------------- void __cdecl sub_690A80() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (00690A88) -------------------------------------------------------- int __cdecl sub_690A88(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 10)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690AB0) -------------------------------------------------------- void __usercall sub_690AB0(int a1) { sub_6530A4(*(void **)(a1 + 8)); } //----- (00690ABB) -------------------------------------------------------- int __cdecl sub_690ABB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690AE0) -------------------------------------------------------- void __cdecl sub_690AE0() { JUMPOUT(loc_643D60); } // 643D60: using guessed type int loc_643D60(); //----- (00690AE8) -------------------------------------------------------- int __cdecl sub_690AE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690B10) -------------------------------------------------------- void __cdecl sub_690B10() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (00690B18) -------------------------------------------------------- int __cdecl sub_690B18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 17)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690B40) -------------------------------------------------------- void __cdecl sub_690B40() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (00690B48) -------------------------------------------------------- int __cdecl sub_690B48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690B70) -------------------------------------------------------- void __cdecl sub_690B70() { JUMPOUT(loc_643EA0); } // 643EA0: using guessed type int loc_643EA0(); //----- (00690B78) -------------------------------------------------------- int __cdecl sub_690B78(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 9)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690BA0) -------------------------------------------------------- void __usercall sub_690BA0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_70713C; sub_639940(v1); } // 70713C: using guessed type int (__thiscall *off_70713C)(void *, char); //----- (00690BA8) -------------------------------------------------------- void __usercall sub_690BA8(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 444; *(_DWORD *)v1 = &off_707144; sub_639940(v1); } // 707144: using guessed type int (__thiscall *off_707144)(void *, char); //----- (00690BB6) -------------------------------------------------------- void __usercall sub_690BB6(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 732; *(_DWORD *)v1 = &off_70714C; sub_639940(v1); } // 70714C: using guessed type int (__thiscall *off_70714C)(void *, char); //----- (00690BC4) -------------------------------------------------------- void __usercall sub_690BC4(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 860; *(_DWORD *)v1 = &off_707154; sub_639940(v1); } // 707154: using guessed type int (__thiscall *off_707154)(void *, char); //----- (00690BD2) -------------------------------------------------------- void __usercall sub_690BD2(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 928; *(_DWORD *)v1 = &off_70715C; sub_639940(v1); } // 70715C: using guessed type int (__thiscall *off_70715C)(void *, char); //----- (00690BE0) -------------------------------------------------------- void __usercall sub_690BE0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16) + 1024; *(_DWORD *)v1 = &off_707164; sub_639940(v1); } // 707164: using guessed type int (__thiscall *off_707164)(void *, char); //----- (00690BEE) -------------------------------------------------------- int __cdecl sub_690BEE(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690C10) -------------------------------------------------------- void __cdecl sub_690C10() { JUMPOUT(loc_6452A0); } // 6452A0: using guessed type int loc_6452A0(); //----- (00690C18) -------------------------------------------------------- void __cdecl sub_690C18() { JUMPOUT(loc_645360); } // 645360: using guessed type int loc_645360(); //----- (00690C26) -------------------------------------------------------- void __cdecl sub_690C26() { JUMPOUT(loc_645420); } // 645420: using guessed type int loc_645420(); //----- (00690C34) -------------------------------------------------------- void __cdecl sub_690C34() { JUMPOUT(loc_6454E0); } // 6454E0: using guessed type int loc_6454E0(); //----- (00690C42) -------------------------------------------------------- void __cdecl sub_690C42() { JUMPOUT(loc_6454F0); } // 6454F0: using guessed type int loc_6454F0(); //----- (00690C50) -------------------------------------------------------- void __cdecl sub_690C50() { JUMPOUT(loc_6455A0); } // 6455A0: using guessed type int loc_6455A0(); //----- (00690C5E) -------------------------------------------------------- int __cdecl sub_690C5E(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690C80) -------------------------------------------------------- void __usercall sub_690C80(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00690C8B) -------------------------------------------------------- int __cdecl sub_690C8B(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690CB0) -------------------------------------------------------- void __usercall sub_690CB0(int a1) { *(_DWORD *)(a1 - 352) = &off_707174; sub_639940(a1 - 352); } // 707174: using guessed type int (__thiscall *off_707174)(void *, char); //----- (00690CBB) -------------------------------------------------------- int __cdecl sub_690CBB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 95)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690CF0) -------------------------------------------------------- void __usercall sub_690CF0(int a1) { *(_DWORD *)(a1 - 92) = &off_70717C; sub_639940(a1 - 92); } // 70717C: using guessed type int (__thiscall *off_70717C)(void *, char); //----- (00690CF8) -------------------------------------------------------- int __cdecl sub_690CF8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 23)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690D20) -------------------------------------------------------- void __usercall sub_690D20(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00690D2B) -------------------------------------------------------- void __usercall sub_690D2B(int a1) { sub_645C80((void *)(*(_DWORD *)(a1 - 16) + 1036)); } //----- (00690D39) -------------------------------------------------------- int __cdecl sub_690D39(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690D60) -------------------------------------------------------- void __usercall sub_690D60(int a1) { *(_DWORD *)(a1 - 120) = &off_70718C; sub_639940(a1 - 120); } // 70718C: using guessed type int (__thiscall *off_70718C)(void *, char); //----- (00690D68) -------------------------------------------------------- int __cdecl sub_690D68(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 46)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690D90) -------------------------------------------------------- void __usercall sub_690D90(int a1) { *(_DWORD *)(a1 - 144) = &off_707184; sub_639940(a1 - 144); } // 707184: using guessed type int (__thiscall *off_707184)(void *, char); //----- (00690D9B) -------------------------------------------------------- void __usercall sub_690D9B(int a1) { sub_424190((void **)(a1 - 172)); } //----- (00690DA6) -------------------------------------------------------- void __usercall sub_690DA6(int a1) { sub_5C4DE0(a1 - 200); } //----- (00690DB1) -------------------------------------------------------- int __cdecl sub_690DB1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 53)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690DE0) -------------------------------------------------------- void __usercall sub_690DE0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_707AE8; sub_639940(v1); } // 707AE8: using guessed type int (__thiscall *off_707AE8)(void *, char); //----- (00690DE8) -------------------------------------------------------- int __cdecl sub_690DE8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690E40) -------------------------------------------------------- void __cdecl sub_690E40() { JUMPOUT(loc_649360); } // 649360: using guessed type int loc_649360(); //----- (00690E48) -------------------------------------------------------- int __cdecl sub_690E48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 7)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690E70) -------------------------------------------------------- void __cdecl sub_690E70() { JUMPOUT(loc_648F60); } // 648F60: using guessed type int loc_648F60(); //----- (00690E7A) -------------------------------------------------------- int __cdecl sub_690E7A(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690EA0) -------------------------------------------------------- void __usercall sub_690EA0(int a1) { sub_643080((void *)(a1 - 67684)); } //----- (00690EAB) -------------------------------------------------------- int __cdecl sub_690EAB(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 16927)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690EE0) -------------------------------------------------------- void __cdecl sub_690EE0() { sub_639560(&unk_150B11D8); } //----- (00690EEA) -------------------------------------------------------- int __cdecl sub_690EEA(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 1)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690F10) -------------------------------------------------------- void __usercall sub_690F10(int a1) { void *v1; // ecx@1 int v2; // ecx@1 v2 = *(_DWORD *)(a1 - 16); *(_DWORD *)v2 = &off_707EC4; v1 = *(void **)(v2 + 8); if ( v1 ) operator delete(v1); } // 707EC4: using guessed type int (__thiscall *off_707EC4)(void *, char); //----- (00690F18) -------------------------------------------------------- int __cdecl sub_690F18(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690F40) -------------------------------------------------------- void __cdecl sub_690F40() { JUMPOUT(loc_649360); } // 649360: using guessed type int loc_649360(); //----- (00690F48) -------------------------------------------------------- int __cdecl sub_690F48(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690F70) -------------------------------------------------------- void __cdecl sub_690F70() { JUMPOUT(loc_64A790); } // 64A790: using guessed type int loc_64A790(); //----- (00690F78) -------------------------------------------------------- void __usercall sub_690F78(int a1) { void **v1; // ecx@1 v1 = (void **)(*(_DWORD *)(a1 - 16) + 24); if ( *v1 ) operator delete(*v1); } //----- (00690F83) -------------------------------------------------------- int __cdecl sub_690F83(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690FA0) -------------------------------------------------------- void __usercall sub_690FA0(int a1) { int v1; // ecx@1 v1 = *(_DWORD *)(a1 - 16); *(_DWORD *)v1 = &off_7080E4; sub_639940(v1); } // 7080E4: using guessed type int (__thiscall *off_7080E4)(void *, char); //----- (00690FA8) -------------------------------------------------------- int __cdecl sub_690FA8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00690FD0) -------------------------------------------------------- void __cdecl sub_690FD0() { JUMPOUT(loc_64B760); } // 64B760: using guessed type int loc_64B760(); //----- (00690FD8) -------------------------------------------------------- void __usercall sub_690FD8(int a1) { sub_639560((void *)(*(_DWORD *)(a1 - 16) + 148)); } //----- (00690FE6) -------------------------------------------------------- int __cdecl sub_690FE6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00691010) -------------------------------------------------------- void __cdecl sub_691010() { JUMPOUT(loc_5A4280); } // 5A4280: using guessed type int loc_5A4280(); //----- (0069101B) -------------------------------------------------------- void __usercall sub_69101B(int a1) { *(_DWORD *)(*(_DWORD *)(a1 - 16) + 28) = &off_6F4588; } // 6F4588: using guessed type int (__stdcall *off_6F4588)(int, int); //----- (00691050) -------------------------------------------------------- void __cdecl sub_691050() { JUMPOUT(loc_5A4280); } // 5A4280: using guessed type int loc_5A4280(); //----- (0069105B) -------------------------------------------------------- void __cdecl sub_69105B() { JUMPOUT(loc_64BCC0); } // 64BCC0: using guessed type int loc_64BCC0(); //----- (00691066) -------------------------------------------------------- void __cdecl sub_691066() { JUMPOUT(loc_64BCC0); } // 64BCC0: using guessed type int loc_64BCC0(); //----- (00691071) -------------------------------------------------------- void __cdecl sub_691071() { JUMPOUT(loc_64BCC0); } // 64BCC0: using guessed type int loc_64BCC0(); //----- (0069107C) -------------------------------------------------------- int __cdecl sub_69107C(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006910A0) -------------------------------------------------------- int __usercall sub_6910A0(int a1) { return sub_637D00(*(_DWORD *)(a1 - 16)); } //----- (006910A8) -------------------------------------------------------- int __cdecl sub_6910A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006910D0) -------------------------------------------------------- int __usercall sub_6910D0(int a1) { return sub_637D00(*(_DWORD *)(a1 - 1292)); } //----- (006910DB) -------------------------------------------------------- int __usercall sub_6910DB(int a1) { return sub_637D00(a1 - 1288); } //----- (006910E6) -------------------------------------------------------- int __usercall sub_6910E6(int a1) { return sub_637D00(a1 - 1288); } //----- (006910F1) -------------------------------------------------------- int __cdecl sub_6910F1(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 324)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00691120) -------------------------------------------------------- int __usercall sub_691120(int a1) { return sub_64E4A0(a1 - 3096); } //----- (0069112B) -------------------------------------------------------- int __usercall sub_69112B(int a1) { return sub_637D00(a1 - 3096); } //----- (00691136) -------------------------------------------------------- int __cdecl sub_691136(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { int v4; // eax@1 int v5; // edx@1 v4 = __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 776)); __security_check_cookie(v4 ^ *(_DWORD *)(v5 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00691160) -------------------------------------------------------- void __usercall sub_691160(int a1) { type_info::_type_info((void *)(a1 + 40)); } //----- (00691168) -------------------------------------------------------- void __usercall sub_691168(int a1) { type_info::_type_info((void *)(a1 + 24)); } //----- (00691170) -------------------------------------------------------- void __usercall sub_691170(int a1) { type_info::_type_info((void *)(a1 + 8)); } //----- (00691178) -------------------------------------------------------- int __cdecl sub_691178(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006911A0) -------------------------------------------------------- void __usercall sub_6911A0(int a1) { type_info::_type_info((void *)(a1 + 8)); } //----- (006911A8) -------------------------------------------------------- int __cdecl sub_6911A8(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 3)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006911D0) -------------------------------------------------------- void __usercall sub_6911D0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006911DB) -------------------------------------------------------- void __usercall sub_6911DB(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (006911E6) -------------------------------------------------------- int __cdecl sub_6911E6(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 4)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00691210) -------------------------------------------------------- void __usercall sub_691210(int a1) { type_info::_type_info((void *)(a1 + 8)); } //----- (00691218) -------------------------------------------------------- int __cdecl sub_691218(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00691261) -------------------------------------------------------- int __usercall sub_691261(int a1) { return std::_Lockit::__Lockit(a1 - 16); } // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); //----- (00691269) -------------------------------------------------------- int __cdecl sub_691269(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (00691284) -------------------------------------------------------- int __cdecl sub_691284(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 5)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (0069129F) -------------------------------------------------------- int __cdecl sub_69129F(EXCEPTION_RECORD *a1, struct EHRegistrationNode *a2, struct EHRegistrationNode *a3, struct _CONTEXT *a4) { __security_check_cookie((unsigned int)((char *)a2 + 12) ^ *((_DWORD *)a2 - 6)); return __CxxFrameHandler3(a1, a2, a3, a4); } // 652C98: using guessed type _DWORD __cdecl __CxxFrameHandler3(PEXCEPTION_RECORD ExceptionRecord, struct EHRegistrationNode *, struct EHRegistrationNode *, struct _CONTEXT *); // 652FEF: using guessed type int __thiscall __security_check_cookie(_DWORD); //----- (006912C0) -------------------------------------------------------- int __cdecl sub_6912C0() { sub_405940((int)dword_873A28); return atexit(sub_698730); } //----- (006912E0) -------------------------------------------------------- int __cdecl sub_6912E0() { memset(&unk_877038, 0, 0x63u); return atexit(nullsub_192); } //----- (00691300) -------------------------------------------------------- int __cdecl sub_691300() { sub_40ED50((int)&unk_873DB0); return atexit(sub_698720); } //----- (00691320) -------------------------------------------------------- int __cdecl sub_691320() { sub_416700(&unk_8770A0); return atexit(sub_698740); } //----- (00691340) -------------------------------------------------------- int __cdecl sub_691340() { sub_4168E0((int)&unk_877138); return atexit(sub_698760); } //----- (00691360) -------------------------------------------------------- int __cdecl sub_691360() { return atexit(sub_698770); } //----- (00691370) -------------------------------------------------------- int __cdecl sub_691370() { return atexit(sub_6987D0); } //----- (00691380) -------------------------------------------------------- int __cdecl sub_691380() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6A544C[v0]; byte_878778[v0++] = v1; } while ( v1 ); dword_878878 = 0; sub_5A7CA0(byte_6A544C); byte_8789FC = 1; return atexit(nullsub_193); } // 878878: using guessed type int dword_878878; // 8789FC: using guessed type char byte_8789FC; //----- (006913C0) -------------------------------------------------------- int __cdecl sub_6913C0() { sub_425890((int)&dword_878A00); return atexit(sub_698850); } // 878A00: using guessed type int dword_878A00; //----- (006913E0) -------------------------------------------------------- int __cdecl sub_6913E0() { sub_5D34B0((int)&unk_87B218); return atexit(sub_698840); } //----- (00691400) -------------------------------------------------------- int __cdecl sub_691400() { return atexit(sub_6988D0); } //----- (00691410) -------------------------------------------------------- int __cdecl sub_691410() { return atexit(sub_6988E0); } //----- (00691420) -------------------------------------------------------- int __cdecl sub_691420() { return atexit(sub_6988F0); } //----- (00691430) -------------------------------------------------------- int __cdecl sub_691430() { sub_437150((int)&dword_87B278); return atexit(sub_698980); } // 87B278: using guessed type int dword_87B278; //----- (00691450) -------------------------------------------------------- int __cdecl sub_691450() { return atexit(nullsub_194); } //----- (00691460) -------------------------------------------------------- int __cdecl sub_691460() { sub_437400((int)&dword_87B264, 0x64u); return atexit(sub_698A40); } //----- (006914C0) -------------------------------------------------------- int __cdecl sub_6914C0() { sub_437270((int)&dword_87B254, 0x32u); return atexit(sub_698A00); } //----- (00691520) -------------------------------------------------------- int __cdecl sub_691520() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "SkillDamageLog"); fclose(v0); sub_5A7CA0("SkillDamageLog"); return atexit(nullsub_195); } //----- (00691570) -------------------------------------------------------- int __cdecl sub_691570() { return atexit(nullsub_196); } //----- (00691580) -------------------------------------------------------- int __cdecl sub_691580() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x28u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_8B3298 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_8B3298 + 1) = dword_8B3298; return atexit(sub_698AA0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006915E0) -------------------------------------------------------- int __cdecl sub_6915E0() { sub_4385B0(&unk_8B32A8); return atexit(sub_698A90); } //----- (00691600) -------------------------------------------------------- int __cdecl sub_691600() { sub_639540((int)&unk_8B36B8); return atexit(sub_698AC0); } //----- (00691650) -------------------------------------------------------- int __cdecl sub_691650() { sub_4C81E0(&off_749F98, 4); dword_74A024 = (int)off_749F98; dword_74A028 = (int)((char *)off_749F98 + 2); *(_WORD *)off_749F98 = *(_WORD *)off_749F98 & 0x3FF | 0x1C00; *(_WORD *)dword_74A024 = *(_WORD *)dword_74A024 & 0xFC0E | 0xE; return atexit(nullsub_197); } // 749F98: using guessed type void *off_749F98; // 74A024: using guessed type int dword_74A024; // 74A028: using guessed type int dword_74A028; //----- (006916B0) -------------------------------------------------------- int __cdecl sub_6916B0() { return atexit(nullsub_198); } //----- (006916C0) -------------------------------------------------------- int __cdecl sub_6916C0() { sub_43C2F0((int)&unk_8B3AC8); return atexit(nullsub_199); } //----- (006916E0) -------------------------------------------------------- int __cdecl sub_6916E0() { return atexit(nullsub_200); } //----- (006916F0) -------------------------------------------------------- int __cdecl sub_6916F0() { return atexit(nullsub_201); } //----- (00691700) -------------------------------------------------------- int __cdecl sub_691700() { return atexit(nullsub_202); } //----- (00691710) -------------------------------------------------------- int __cdecl sub_691710() { return atexit(nullsub_203); } //----- (00691720) -------------------------------------------------------- int __cdecl sub_691720() { return atexit(nullsub_204); } //----- (00691730) -------------------------------------------------------- int __cdecl sub_691730() { return atexit(nullsub_205); } //----- (00691740) -------------------------------------------------------- int __cdecl sub_691740() { return atexit(nullsub_206); } //----- (00691750) -------------------------------------------------------- int __cdecl sub_691750() { sub_43D760(&unk_8B42A0); return atexit(sub_698CC0); } //----- (00691770) -------------------------------------------------------- int __cdecl sub_691770() { sub_43D760(&unk_8B6C60); return atexit(sub_698CE0); } //----- (00691790) -------------------------------------------------------- int __cdecl sub_691790() { return atexit(nullsub_207); } //----- (006917A0) -------------------------------------------------------- int __cdecl sub_6917A0() { return atexit(nullsub_208); } //----- (006917B0) -------------------------------------------------------- int __cdecl sub_6917B0() { sub_444740((int)dword_8BB250); return atexit(nullsub_209); } // 8BB250: using guessed type int dword_8BB250[]; //----- (006917D0) -------------------------------------------------------- int __cdecl sub_6917D0() { sub_4492B0(&unk_8BB3B0); return atexit(sub_698D30); } //----- (006917F0) -------------------------------------------------------- int __cdecl sub_6917F0() { _eh_vector_constructor_iterator_(&unk_A9FCB4, 0x16u, 128, (int)sub_44F130, nullsub_2); dword_AA07B8 = 127; dword_AA07B4 = 0; dword_A9FCA0 = -1; dword_A9FCB0 = 0; dword_A9FCAC = 0; dword_A9FCA8 = 0; *(_DWORD *)dword_A9FCA4 = 0; strncpy(dword_A9FCA4, byte_6A492E, 0xCu); return atexit(sub_698D60); } // A9FCA0: using guessed type int dword_A9FCA0; // A9FCA8: using guessed type int dword_A9FCA8; // A9FCAC: using guessed type int dword_A9FCAC; // A9FCB0: using guessed type int dword_A9FCB0; // AA07B4: using guessed type int dword_AA07B4; // AA07B8: using guessed type int dword_AA07B8; //----- (00691860) -------------------------------------------------------- int __cdecl sub_691860() { sub_639920((int)&dword_AA0A90); memset(&unk_AA0AD0, 0, 0x2Bu); dword_AA0A90 = (int)&off_6ACB48; dword_AA0AFC = 0; return atexit(sub_698D80); } // 6ACB48: using guessed type int (__thiscall *off_6ACB48)(void *, char); // AA0A90: using guessed type int dword_AA0A90; //----- (006918A0) -------------------------------------------------------- int __cdecl sub_6918A0() { sub_639920((int)&dword_AA0B08); memset(&unk_AA0B48, 0, 0x6Fu); dword_AA0B08 = (int)&off_6ACB58; dword_AA0BB8 = 0; return atexit(sub_698DB0); } // 6ACB58: using guessed type int (__thiscall *off_6ACB58)(void *, char); // AA0B08: using guessed type int dword_AA0B08; //----- (006918E0) -------------------------------------------------------- int __cdecl sub_6918E0() { sub_639920((int)&dword_AA07C0); memset(&unk_AA0800, 0, 0x94u); dword_AA07C0 = (int)&off_6ACB68; dword_AA0894 = 0; return atexit(sub_698DE0); } // 6ACB68: using guessed type int (__thiscall *off_6ACB68)(void *, char); // AA07C0: using guessed type int dword_AA07C0; //----- (00691920) -------------------------------------------------------- int __cdecl sub_691920() { sub_639920((int)&dword_AA08E8); memset(&unk_AA0928, 0, 0x15Au); dword_AA0A84 = 0; dword_AA08E8 = (int)&off_6ACD38; return atexit(sub_698E20); } // 6ACD38: using guessed type int (__thiscall *off_6ACD38)(void *, char); // AA08E8: using guessed type int dword_AA08E8; //----- (00691960) -------------------------------------------------------- int __cdecl sub_691960() { sub_639920((int)&dword_AA08A0); dword_AA08A0 = (int)&off_6ACB70; dword_AA08E0 = 0; return atexit(sub_698E50); } // 6ACB70: using guessed type int (__thiscall *off_6ACB70)(void *, char); // AA08A0: using guessed type int dword_AA08A0; // AA08E0: using guessed type int dword_AA08E0; //----- (00691990) -------------------------------------------------------- int __cdecl sub_691990() { return atexit(sub_698E10); } //----- (006919A0) -------------------------------------------------------- int __cdecl sub_6919A0() { sub_455D90((int)&unk_AA0EC0); return atexit(sub_698EB0); } //----- (006919C0) -------------------------------------------------------- int __cdecl sub_6919C0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6AE01C[v0]; byte_AA0C38[v0++] = v1; } while ( v1 ); dword_AA0D38 = 0; sub_5A7CA0(byte_6AE01C); byte_AA0EBC = 1; return atexit(nullsub_210); } // AA0EBC: using guessed type char byte_AA0EBC; //----- (00691A00) -------------------------------------------------------- int __cdecl sub_691A00() { sub_5A4590(&dword_AF09800); dword_AF09800 = (int)&off_6AEE14; return atexit(sub_699010); } // 6AEE14: using guessed type int (__stdcall *off_6AEE14)(int); // AF09800: using guessed type int dword_AF09800; //----- (00691A20) -------------------------------------------------------- int __cdecl sub_691A20() { return atexit(nullsub_211); } //----- (00691A30) -------------------------------------------------------- int __cdecl sub_691A30() { return atexit(nullsub_212); } //----- (00691A40) -------------------------------------------------------- int __cdecl sub_691A40() { return atexit(sub_699050); } //----- (00691A50) -------------------------------------------------------- int __cdecl sub_691A50() { return atexit(nullsub_213); } //----- (00691A60) -------------------------------------------------------- int __cdecl sub_691A60() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6AFF88[v0]; byte_AF09B20[v0++] = v1; } while ( v1 ); dword_AF09C20 = 0; sub_5A7CA0(byte_6AFF88); byte_AF09DA4 = 1; return atexit(nullsub_214); } // AF09C20: using guessed type int dword_AF09C20; // AF09DA4: using guessed type char byte_AF09DA4; //----- (00691AA0) -------------------------------------------------------- int __cdecl sub_691AA0() { return atexit(nullsub_215); } //----- (00691AB0) -------------------------------------------------------- int __cdecl sub_691AB0() { signed int v0; // eax@1 signed int v1; // ecx@2 v0 = (signed int)&unk_CF12354; do { v1 = 500; do { *(_WORD *)v0 = 0; v0 += 6; --v1; } while ( v1 ); } while ( v0 < (signed int)&unk_CFCCF9C ); return atexit(nullsub_216); } //----- (00691AE0) -------------------------------------------------------- int __cdecl sub_691AE0() { _eh_vector_constructor_iterator_(&unk_CFCDB50, 0xCu, 32, (int)sub_460090, Concurrency::details::TaskStack::_TaskStack); return atexit(sub_6990E0); } //----- (00691B10) -------------------------------------------------------- int __cdecl sub_691B10() { dword_CFCDCD8 = -1; dword_CFCDCE0 = -1; dword_CFCDCE4 = -1; dword_CFCDCE8 = -1; dword_CFCDCEC = -1; dword_CFCDCDC = 5; dword_CFCDCF0 = 4; dword_CFCDCF4 = 8; dword_CFCDCF8 = 16; dword_CFCDCFC = 22; dword_CFCDD00 = 9; dword_CFCDD04 = 20; dword_CFCDD08 = 7; dword_CFCDD0C = 21; dword_CFCDD14 = 10; dword_CFCDD18 = 12; dword_CFCDD1C = 23; dword_CFCDD20 = 24; dword_CFCDD24 = 11; dword_CFCDD28 = 15; dword_CFCDD2C = 13; dword_CFCDD30 = 14; dword_CFCDD34 = 6; dword_CFCDD38 = 17; dword_CFCDD48 = 26; dword_CFCDD40 = 18; dword_CFCDD44 = 19; dword_CFCDD3C = 25; dword_CFCDD4C = 27; dword_CFCDD10 = 28; return atexit(nullsub_217); } // CFCDCD8: using guessed type int dword_CFCDCD8; // CFCDCDC: using guessed type int dword_CFCDCDC; // CFCDCE0: using guessed type int dword_CFCDCE0; // CFCDCE4: using guessed type int dword_CFCDCE4; // CFCDCE8: using guessed type int dword_CFCDCE8; // CFCDCEC: using guessed type int dword_CFCDCEC; // CFCDCF0: using guessed type int dword_CFCDCF0; // CFCDCF4: using guessed type int dword_CFCDCF4; // CFCDCF8: using guessed type int dword_CFCDCF8; // CFCDCFC: using guessed type int dword_CFCDCFC; // CFCDD00: using guessed type int dword_CFCDD00; // CFCDD04: using guessed type int dword_CFCDD04; // CFCDD08: using guessed type int dword_CFCDD08; // CFCDD0C: using guessed type int dword_CFCDD0C; // CFCDD10: using guessed type int dword_CFCDD10; // CFCDD14: using guessed type int dword_CFCDD14; // CFCDD18: using guessed type int dword_CFCDD18; // CFCDD1C: using guessed type int dword_CFCDD1C; // CFCDD20: using guessed type int dword_CFCDD20; // CFCDD24: using guessed type int dword_CFCDD24; // CFCDD28: using guessed type int dword_CFCDD28; // CFCDD2C: using guessed type int dword_CFCDD2C; // CFCDD30: using guessed type int dword_CFCDD30; // CFCDD34: using guessed type int dword_CFCDD34; // CFCDD38: using guessed type int dword_CFCDD38; // CFCDD3C: using guessed type int dword_CFCDD3C; // CFCDD40: using guessed type int dword_CFCDD40; // CFCDD44: using guessed type int dword_CFCDD44; // CFCDD48: using guessed type int dword_CFCDD48; // CFCDD4C: using guessed type int dword_CFCDD4C; //----- (00691CB0) -------------------------------------------------------- int __cdecl sub_691CB0() { strncpy(dword_CFCE16C, "RouN", 0xCu); return atexit(nullsub_218); } //----- (00691CD0) -------------------------------------------------------- int __cdecl sub_691CD0() { return atexit(nullsub_219); } //----- (00691CE0) -------------------------------------------------------- int __cdecl sub_691CE0() { return atexit(nullsub_220); } //----- (00691CF0) -------------------------------------------------------- int __cdecl sub_691CF0() { sub_465C20((int)&unk_CFCF380); return atexit(sub_699170); } //----- (00691D10) -------------------------------------------------------- int __cdecl sub_691D10() { sub_639540((int)&unk_CFCDD68); return atexit(sub_699130); } //----- (00691D30) -------------------------------------------------------- int __cdecl sub_691D30() { _eh_vector_constructor_iterator_(&unk_CFCE178, 0x24u, 128, (int)sub_49CE40, nullsub_2); dword_CFCF378 = 0; return atexit(sub_699150); } // CFCF378: using guessed type int dword_CFCF378; //----- (00691D70) -------------------------------------------------------- int __cdecl sub_691D70() { memset(dword_7508B8, 0, 0x200u); return atexit(nullsub_221); } // 7508B8: using guessed type int dword_7508B8[]; //----- (00691D90) -------------------------------------------------------- int __cdecl sub_691D90() { sub_467760((int)&unk_D020420); return atexit(sub_699190); } //----- (00691DB0) -------------------------------------------------------- int __cdecl sub_691DB0() { sub_639920((int)&dword_D020440); dword_D020440 = (int)&off_6B174C; dword_D020480 = 0; dword_D020484 = 0; dword_D020488 = 0; dword_D02048C = 0; dword_D020490 = 0; dword_D020494 = 0; dword_D020498 = 0; dword_D02049C = 0; dword_D0204A0 = 0; word_D0204A4 = 0; return atexit(sub_6991F0); } // 6B174C: using guessed type int (__thiscall *off_6B174C)(void *, char); // D020440: using guessed type int dword_D020440; // D020480: using guessed type int dword_D020480; // D020484: using guessed type int dword_D020484; // D020488: using guessed type int dword_D020488; // D02048C: using guessed type int dword_D02048C; // D020490: using guessed type int dword_D020490; // D020494: using guessed type int dword_D020494; // D020498: using guessed type int dword_D020498; // D02049C: using guessed type int dword_D02049C; // D0204A0: using guessed type int dword_D0204A0; // D0204A4: using guessed type __int16 word_D0204A4; //----- (00691E10) -------------------------------------------------------- int __cdecl sub_691E10() { sub_639920((int)&dword_D0204E0); dword_D0204E0 = (int)&off_6B17B0; memset(&unk_D020520, 0, 0xAEu); dword_D0205D0 = 0; return atexit(sub_699270); } // 6B17B0: using guessed type int (__thiscall *off_6B17B0)(void *, char); // D0204E0: using guessed type int dword_D0204E0; //----- (00691E50) -------------------------------------------------------- int __cdecl sub_691E50() { sub_639920((int)&dword_D0205D8); dword_D0205D8 = (int)&off_6B17B8; memset(&unk_D020618, 0, 0x1B6u); dword_D0207D0 = 0; return atexit(sub_6992A0); } // 6B17B8: using guessed type int (__thiscall *off_6B17B8)(void *, char); // D0205D8: using guessed type int dword_D0205D8; //----- (00691E90) -------------------------------------------------------- int __cdecl sub_691E90() { sub_472030((int)&dword_D0207E8); return atexit(sub_6992F0); } // D0207E8: using guessed type int dword_D0207E8; //----- (00691EB0) -------------------------------------------------------- int __cdecl sub_691EB0() { _eh_vector_constructor_iterator_(&unk_D41EF80, 0x12u, 128, (int)sub_472670, nullsub_2); dword_D41F884 = 127; dword_D41F880 = 0; return atexit(sub_6993C0); } // D41F880: using guessed type int dword_D41F880; // D41F884: using guessed type int dword_D41F884; //----- (00691EF0) -------------------------------------------------------- int __cdecl sub_691EF0() { return atexit(nullsub_222); } //----- (00691F00) -------------------------------------------------------- int __cdecl sub_691F00() { sub_474900((int)&dword_D41F888); return atexit(sub_6993E0); } // D41F888: using guessed type int dword_D41F888; //----- (00691F20) -------------------------------------------------------- int __cdecl sub_691F20() { strncpy(byte_D554071, "GuildT0400", 0xCu); byte_D55407D = 0; dword_D554086 = 0; dword_D554082 = 0; *(_DWORD *)dword_D55407E = 0; strncpy(dword_D55407E, "GuildT0401", 0xCu); byte_D55408A = 0; dword_D554093 = 0; dword_D55408F = 0; *(_DWORD *)dword_D55408B = 0; strncpy(dword_D55408B, "GuildT0402", 0xCu); byte_D554097 = 0; dword_D5540A0 = 0; dword_D55409C = 0; *(_DWORD *)dword_D554098 = 0; strncpy(dword_D554098, "GuildT0403", 0xCu); byte_D5540A4 = 0; dword_D5540AD = 0; dword_D5540A9 = 0; *(_DWORD *)dword_D5540A5 = 0; strncpy(dword_D5540A5, "GuildT0404", 0xCu); byte_D5540B1 = 0; dword_D5540BA = 0; dword_D5540B6 = 0; *(_DWORD *)dword_D5540B2 = 0; strncpy(dword_D5540B2, "GuildT0405", 0xCu); byte_D5540BE = 0; dword_D5540C7 = 0; dword_D5540C3 = 0; *(_DWORD *)dword_D5540BF = 0; strncpy(dword_D5540BF, "GuildT0406", 0xCu); byte_D5540CB = 0; dword_D5540D4 = 0; dword_D5540D0 = 0; *(_DWORD *)dword_D5540CC = 0; strncpy(dword_D5540CC, "GuildT0407", 0xCu); byte_D5540D8 = 0; dword_D5540E1 = 0; dword_D5540DD = 0; *(_DWORD *)dword_D5540D9 = 0; strncpy(dword_D5540D9, "GuildT0400", 0xCu); byte_D5540E5 = 0; dword_D5540EE = 0; dword_D5540EA = 0; *(_DWORD *)dword_D5540E6 = 0; strncpy(dword_D5540E6, "GuildT0401", 0xCu); byte_D5540F2 = 0; dword_D5540FB = 0; dword_D5540F7 = 0; *(_DWORD *)dword_D5540F3 = 0; strncpy(dword_D5540F3, "GuildT0402", 0xCu); byte_D5540FF = 0; dword_D554108 = 0; dword_D554104 = 0; *(_DWORD *)dword_D554100 = 0; strncpy(dword_D554100, "GuildT0403", 0xCu); byte_D55410C = 0; dword_D554115 = 0; dword_D554111 = 0; *(_DWORD *)dword_D55410D = 0; strncpy(dword_D55410D, "GuildT0404", 0xCu); byte_D554119 = 0; dword_D554122 = 0; dword_D55411E = 0; *(_DWORD *)dword_D55411A = 0; strncpy(dword_D55411A, "GuildT0405", 0xCu); byte_D554126 = 0; dword_D55412F = 0; dword_D55412B = 0; *(_DWORD *)dword_D554127 = 0; strncpy(dword_D554127, "GuildT0406", 0xCu); byte_D554133 = 0; dword_D55413C = 0; dword_D554138 = 0; *(_DWORD *)dword_D554134 = 0; strncpy(dword_D554134, "GuildT0407", 0xCu); byte_D554140 = 0; dword_D554149 = 0; dword_D554145 = 0; *(_DWORD *)dword_D554141 = 0; strncpy(dword_D554141, "GuildT0400", 0xCu); byte_D55414D = 0; dword_D554156 = 0; dword_D554152 = 0; *(_DWORD *)dword_D55414E = 0; strncpy(dword_D55414E, "GuildT0401", 0xCu); byte_D55415A = 0; dword_D554163 = 0; dword_D55415F = 0; *(_DWORD *)dword_D55415B = 0; strncpy(dword_D55415B, "GuildT0402", 0xCu); byte_D554167 = 0; dword_D554170 = 0; dword_D55416C = 0; *(_DWORD *)dword_D554168 = 0; strncpy(dword_D554168, "GuildT0403", 0xCu); byte_D554174 = 0; dword_D55417D = 0; dword_D554179 = 0; *(_DWORD *)dword_D554175 = 0; strncpy(dword_D554175, "GuildT0404", 0xCu); byte_D554181 = 0; dword_D55418A = 0; dword_D554186 = 0; *(_DWORD *)dword_D554182 = 0; strncpy(dword_D554182, "GuildT0405", 0xCu); byte_D55418E = 0; dword_D554197 = 0; dword_D554193 = 0; *(_DWORD *)dword_D55418F = 0; strncpy(dword_D55418F, "GuildT0406", 0xCu); byte_D55419B = 0; dword_D5541A4 = 0; dword_D5541A0 = 0; *(_DWORD *)dword_D55419C = 0; strncpy(dword_D55419C, "GuildT0407", 0xCu); byte_D5541A8 = 0; dword_D5541B1 = 0; dword_D5541AD = 0; *(_DWORD *)dword_D5541A9 = 0; strncpy(dword_D5541A9, "GuildT0400", 0xCu); byte_D5541B5 = 0; dword_D5541BE = 0; dword_D5541BA = 0; *(_DWORD *)dword_D5541B6 = 0; strncpy(dword_D5541B6, "GuildT0401", 0xCu); byte_D5541C2 = 0; dword_D5541CB = 0; dword_D5541C7 = 0; *(_DWORD *)dword_D5541C3 = 0; strncpy(dword_D5541C3, "GuildT0402", 0xCu); byte_D5541CF = 0; dword_D5541D8 = 0; dword_D5541D4 = 0; *(_DWORD *)dword_D5541D0 = 0; strncpy(dword_D5541D0, "GuildT0403", 0xCu); byte_D5541DC = 0; dword_D5541E5 = 0; dword_D5541E1 = 0; *(_DWORD *)dword_D5541DD = 0; strncpy(dword_D5541DD, "GuildT0404", 0xCu); byte_D5541E9 = 0; dword_D5541F2 = 0; dword_D5541EE = 0; *(_DWORD *)dword_D5541EA = 0; strncpy(dword_D5541EA, "GuildT0405", 0xCu); byte_D5541F6 = 0; dword_D5541FF = 0; dword_D5541FB = 0; *(_DWORD *)dword_D5541F7 = 0; strncpy(dword_D5541F7, "GuildT0406", 0xCu); byte_D554203 = 0; dword_D55420C = 0; dword_D554208 = 0; *(_DWORD *)dword_D554204 = 0; strncpy(dword_D554204, "GuildT0407", 0xCu); return atexit(sub_699480); } // D55407D: using guessed type char byte_D55407D; // D554082: using guessed type int dword_D554082; // D554086: using guessed type int dword_D554086; // D55408A: using guessed type char byte_D55408A; // D55408F: using guessed type int dword_D55408F; // D554093: using guessed type int dword_D554093; // D554097: using guessed type char byte_D554097; // D55409C: using guessed type int dword_D55409C; // D5540A0: using guessed type int dword_D5540A0; // D5540A4: using guessed type char byte_D5540A4; // D5540A9: using guessed type int dword_D5540A9; // D5540AD: using guessed type int dword_D5540AD; // D5540B1: using guessed type char byte_D5540B1; // D5540B6: using guessed type int dword_D5540B6; // D5540BA: using guessed type int dword_D5540BA; // D5540BE: using guessed type char byte_D5540BE; // D5540C3: using guessed type int dword_D5540C3; // D5540C7: using guessed type int dword_D5540C7; // D5540CB: using guessed type char byte_D5540CB; // D5540D0: using guessed type int dword_D5540D0; // D5540D4: using guessed type int dword_D5540D4; // D5540D8: using guessed type char byte_D5540D8; // D5540DD: using guessed type int dword_D5540DD; // D5540E1: using guessed type int dword_D5540E1; // D5540E5: using guessed type char byte_D5540E5; // D5540EA: using guessed type int dword_D5540EA; // D5540EE: using guessed type int dword_D5540EE; // D5540F2: using guessed type char byte_D5540F2; // D5540F7: using guessed type int dword_D5540F7; // D5540FB: using guessed type int dword_D5540FB; // D5540FF: using guessed type char byte_D5540FF; // D554104: using guessed type int dword_D554104; // D554108: using guessed type int dword_D554108; // D55410C: using guessed type char byte_D55410C; // D554111: using guessed type int dword_D554111; // D554115: using guessed type int dword_D554115; // D554119: using guessed type char byte_D554119; // D55411E: using guessed type int dword_D55411E; // D554122: using guessed type int dword_D554122; // D554126: using guessed type char byte_D554126; // D55412B: using guessed type int dword_D55412B; // D55412F: using guessed type int dword_D55412F; // D554133: using guessed type char byte_D554133; // D554138: using guessed type int dword_D554138; // D55413C: using guessed type int dword_D55413C; // D554140: using guessed type char byte_D554140; // D554145: using guessed type int dword_D554145; // D554149: using guessed type int dword_D554149; // D55414D: using guessed type char byte_D55414D; // D554152: using guessed type int dword_D554152; // D554156: using guessed type int dword_D554156; // D55415A: using guessed type char byte_D55415A; // D55415F: using guessed type int dword_D55415F; // D554163: using guessed type int dword_D554163; // D554167: using guessed type char byte_D554167; // D55416C: using guessed type int dword_D55416C; // D554170: using guessed type int dword_D554170; // D554174: using guessed type char byte_D554174; // D554179: using guessed type int dword_D554179; // D55417D: using guessed type int dword_D55417D; // D554181: using guessed type char byte_D554181; // D554186: using guessed type int dword_D554186; // D55418A: using guessed type int dword_D55418A; // D55418E: using guessed type char byte_D55418E; // D554193: using guessed type int dword_D554193; // D554197: using guessed type int dword_D554197; // D55419B: using guessed type char byte_D55419B; // D5541A0: using guessed type int dword_D5541A0; // D5541A4: using guessed type int dword_D5541A4; // D5541A8: using guessed type char byte_D5541A8; // D5541AD: using guessed type int dword_D5541AD; // D5541B1: using guessed type int dword_D5541B1; // D5541B5: using guessed type char byte_D5541B5; // D5541BA: using guessed type int dword_D5541BA; // D5541BE: using guessed type int dword_D5541BE; // D5541C2: using guessed type char byte_D5541C2; // D5541C7: using guessed type int dword_D5541C7; // D5541CB: using guessed type int dword_D5541CB; // D5541CF: using guessed type char byte_D5541CF; // D5541D4: using guessed type int dword_D5541D4; // D5541D8: using guessed type int dword_D5541D8; // D5541DC: using guessed type char byte_D5541DC; // D5541E1: using guessed type int dword_D5541E1; // D5541E5: using guessed type int dword_D5541E5; // D5541E9: using guessed type char byte_D5541E9; // D5541EE: using guessed type int dword_D5541EE; // D5541F2: using guessed type int dword_D5541F2; // D5541F6: using guessed type char byte_D5541F6; // D5541FB: using guessed type int dword_D5541FB; // D5541FF: using guessed type int dword_D5541FF; // D554203: using guessed type char byte_D554203; // D554208: using guessed type int dword_D554208; // D55420C: using guessed type int dword_D55420C; //----- (00692450) -------------------------------------------------------- int __cdecl sub_692450() { _eh_vector_constructor_iterator_(dword_D553BF0, 0x24u, 32, (int)sub_474AC0, nullsub_2); return atexit(sub_6994A0); } // D553BF0: using guessed type int dword_D553BF0[]; //----- (00692480) -------------------------------------------------------- int __cdecl sub_692480() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_D554220 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_D554220 + 1) = dword_D554220; *((_DWORD *)dword_D554220 + 2) = dword_D554220; *((_BYTE *)dword_D554220 + 20) = 1; *((_BYTE *)dword_D554220 + 21) = 1; return atexit(sub_6994C0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00692500) -------------------------------------------------------- int __cdecl sub_692500() { signed int v0; // eax@1 v0 = 4096; do { dword_7515A8[2 * dword_7595A8++] = 0; --v0; } while ( v0 ); return atexit(nullsub_223); } // 7515A8: using guessed type int dword_7515A8[]; // 7595A8: using guessed type int dword_7595A8; //----- (00692540) -------------------------------------------------------- int __cdecl sub_692540() { return atexit(sub_699560); } //----- (00692550) -------------------------------------------------------- int __cdecl sub_692550() { sub_480300((int)&unk_D554240); return atexit(nullsub_224); } //----- (00692570) -------------------------------------------------------- int __cdecl sub_692570() { memcpy(&dbl_759798, dbl_759790, 0xA0u); dbl_759790[0] = 1.0; dbl_759798 = 1.0; dbl_7597A0 = 1.2; dbl_7597A8 = 1.4; dbl_7597B0 = 1.6; dbl_7597B8 = 1.8; return atexit(nullsub_225); } // 759790: using guessed type double dbl_759790[]; // 759798: using guessed type double dbl_759798; // 7597A0: using guessed type double dbl_7597A0; // 7597A8: using guessed type double dbl_7597A8; // 7597B0: using guessed type double dbl_7597B0; // 7597B8: using guessed type double dbl_7597B8; //----- (006925E0) -------------------------------------------------------- int __cdecl sub_6925E0() { return atexit(nullsub_226); } //----- (006925F0) -------------------------------------------------------- int __cdecl sub_6925F0() { return atexit(nullsub_227); } //----- (00692600) -------------------------------------------------------- int __cdecl sub_692600() { return atexit(nullsub_228); } //----- (00692610) -------------------------------------------------------- int __cdecl sub_692610() { sub_48B990((int)&dword_D554E10); return atexit(sub_699700); } // D554E10: using guessed type int dword_D554E10; //----- (00692630) -------------------------------------------------------- int __cdecl sub_692630() { return atexit(sub_6995D0); } //----- (00692640) -------------------------------------------------------- int __cdecl sub_692640() { return atexit(sub_6995E0); } //----- (00692650) -------------------------------------------------------- int __cdecl sub_692650() { return atexit(sub_6995F0); } //----- (00692660) -------------------------------------------------------- int __cdecl sub_692660() { return atexit(sub_699600); } //----- (00692670) -------------------------------------------------------- int __cdecl sub_692670() { return atexit(sub_699610); } //----- (00692680) -------------------------------------------------------- int __cdecl sub_692680() { return atexit(sub_699620); } //----- (00692690) -------------------------------------------------------- int __cdecl sub_692690() { return atexit(sub_699720); } //----- (006926A0) -------------------------------------------------------- int __cdecl sub_6926A0() { return atexit(sub_699630); } //----- (006926B0) -------------------------------------------------------- int __cdecl sub_6926B0() { return atexit(sub_699640); } //----- (006926C0) -------------------------------------------------------- int __cdecl sub_6926C0() { return atexit(sub_699650); } //----- (006926D0) -------------------------------------------------------- int __cdecl sub_6926D0() { return atexit(sub_699660); } //----- (006926E0) -------------------------------------------------------- int __cdecl sub_6926E0() { return atexit(sub_699670); } //----- (006926F0) -------------------------------------------------------- int __cdecl sub_6926F0() { return atexit(sub_699680); } //----- (00692700) -------------------------------------------------------- int __cdecl sub_692700() { return atexit(sub_699690); } //----- (00692710) -------------------------------------------------------- int __cdecl sub_692710() { return atexit(sub_6996A0); } //----- (00692720) -------------------------------------------------------- int __cdecl sub_692720() { return atexit(sub_6996B0); } //----- (00692730) -------------------------------------------------------- int __cdecl sub_692730() { return atexit(sub_6996C0); } //----- (00692740) -------------------------------------------------------- int __cdecl sub_692740() { return atexit(sub_6996D0); } //----- (00692750) -------------------------------------------------------- int __cdecl sub_692750() { return atexit(sub_6996E0); } //----- (00692760) -------------------------------------------------------- int __cdecl sub_692760() { return atexit(sub_6996F0); } //----- (00692770) -------------------------------------------------------- int __cdecl sub_692770() { return atexit(sub_699730); } //----- (00692780) -------------------------------------------------------- int __cdecl sub_692780() { return atexit(sub_699740); } //----- (00692790) -------------------------------------------------------- int __cdecl sub_692790() { return atexit(sub_699750); } //----- (006927A0) -------------------------------------------------------- int __cdecl sub_6927A0() { return atexit(sub_699760); } //----- (006927B0) -------------------------------------------------------- int __cdecl sub_6927B0() { return atexit(sub_699770); } //----- (006927C0) -------------------------------------------------------- int __cdecl sub_6927C0() { return atexit(sub_699780); } //----- (006927D0) -------------------------------------------------------- int __cdecl sub_6927D0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "ItemDropFromMobLog"); fclose(v0); sub_5A7CA0("ItemDropFromMobLog"); return atexit(nullsub_229); } //----- (00692820) -------------------------------------------------------- int __cdecl sub_692820() { sub_48F380((int)&unk_D5552C0); return atexit(sub_699840); } //----- (00692840) -------------------------------------------------------- int __cdecl sub_692840() { sub_6432E0((int)&unk_D5552D0); dword_D565B24 = 0; return atexit(sub_6997C0); } //----- (00692860) -------------------------------------------------------- int __cdecl sub_692860() { return atexit(nullsub_230); } //----- (00692870) -------------------------------------------------------- int __cdecl sub_692870() { sub_639540((int)&unk_D565B30); _eh_vector_constructor_iterator_(&unk_D565F34, 0x20u, 1000, (int)sub_64AE30, (void (__thiscall *)(void *))sub_64AA60); return atexit(sub_6998A0); } //----- (006928E0) -------------------------------------------------------- int __cdecl sub_6928E0() { return atexit(sub_699900); } //----- (00692920) -------------------------------------------------------- int __cdecl sub_692920() { return atexit(sub_699960); } //----- (00692960) -------------------------------------------------------- int __cdecl sub_692960() { return atexit(sub_6999C0); } //----- (006929A0) -------------------------------------------------------- int __cdecl sub_6929A0() { return atexit(nullsub_231); } //----- (006929B0) -------------------------------------------------------- int __cdecl sub_6929B0() { return atexit(nullsub_232); } //----- (006929C0) -------------------------------------------------------- int __cdecl sub_6929C0() { return atexit(sub_699A60); } //----- (006929D0) -------------------------------------------------------- int __cdecl sub_6929D0() { signed int v0; // eax@1 v0 = (signed int)&unk_75A830; do { *(_DWORD *)v0 = -1; *(_DWORD *)(v0 + 4) = -1; v0 += 111; } while ( v0 < (signed int)&unk_838830 ); return atexit(nullsub_233); } //----- (00692A00) -------------------------------------------------------- int __cdecl sub_692A00() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6BA3C8[v0]; byte_D64C288[v0++] = v1; } while ( v1 ); dword_D64C388 = 0; sub_5A7CA0(byte_6BA3C8); byte_D64C50C = 1; return atexit(nullsub_234); } // D64C50C: using guessed type char byte_D64C50C; //----- (00692A40) -------------------------------------------------------- int __cdecl sub_692A40() { strncpy(byte_D64C278, "KDEddyHill00", 0xCu); return atexit(nullsub_235); } //----- (00692A60) -------------------------------------------------------- int __cdecl sub_692A60() { sub_498CD0((int)&dword_D61E090); return atexit(sub_699B40); } // D61E090: using guessed type int dword_D61E090; //----- (00692A80) -------------------------------------------------------- int __cdecl sub_692A80() { return atexit(nullsub_236); } //----- (00692A90) -------------------------------------------------------- int __cdecl sub_692A90() { _eh_vector_constructor_iterator_(&unk_D645270, 0x70u, 256, (int)sub_494600, sub_4B0610); dword_D64C274 = 255; dword_D64C270 = 0; return atexit(sub_699B20); } // D64C270: using guessed type int dword_D64C270; // D64C274: using guessed type int dword_D64C274; //----- (00692AD0) -------------------------------------------------------- int __cdecl sub_692AD0() { sub_499530((int)&dword_D64C510, 0x1Eu); sub_499810((int)&dword_D64C510, 0); return atexit(sub_699BC0); } //----- (00692B30) -------------------------------------------------------- int __cdecl sub_692B30() { sub_639920((int)&dword_D64C520); dword_D64C520 = (int)&off_6BA520; memset(&unk_D64C560, 0, 0x80u); return atexit(sub_699C10); } // 6BA520: using guessed type int (__thiscall *off_6BA520)(void *, char); // D64C520: using guessed type int dword_D64C520; //----- (00692B70) -------------------------------------------------------- int __cdecl sub_692B70() { return atexit(nullsub_237); } //----- (00692B80) -------------------------------------------------------- int __cdecl sub_692B80() { return atexit(nullsub_238); } //----- (00692B90) -------------------------------------------------------- int __cdecl sub_692B90() { return atexit(nullsub_239); } //----- (00692BA0) -------------------------------------------------------- int __cdecl sub_692BA0() { sub_6432E0((int)&unk_D64C6B8); return atexit(sub_699C60); } //----- (00692BC0) -------------------------------------------------------- int __cdecl sub_692BC0() { return atexit(nullsub_240); } //----- (00692BD0) -------------------------------------------------------- int __cdecl sub_692BD0() { return atexit(nullsub_241); } //----- (00692BE0) -------------------------------------------------------- int __cdecl sub_692BE0() { sub_49C440((int)&unk_D65CF10); return atexit(sub_699C90); } //----- (00692C00) -------------------------------------------------------- int __cdecl sub_692C00() { sub_6303A0((int)dword_D711FE0); return atexit(sub_699CA0); } //----- (00692C20) -------------------------------------------------------- int __cdecl sub_692C20() { _eh_vector_constructor_iterator_(&unk_D65CFD8, 0xB50u, 256, (int)sub_49D220, sub_49D2B0); dword_D711FD8 = 0; return atexit(sub_699CB0); } // D711FD8: using guessed type int dword_D711FD8; //----- (00692C60) -------------------------------------------------------- int __cdecl sub_692C60() { sub_4A0170((int)&unk_D714FF8); return atexit(sub_699D00); } //----- (00692C80) -------------------------------------------------------- int __cdecl sub_692C80() { sub_639920((int)&dword_D73D090); dword_D73D090 = (int)&off_6BB5B4; memset(&unk_D73D0D0, 0, 0x2Bu); return atexit(sub_699CE0); } // 6BB5B4: using guessed type int (__thiscall *off_6BB5B4)(void *, char); // D73D090: using guessed type int dword_D73D090; //----- (00692CB0) -------------------------------------------------------- int __cdecl sub_692CB0() { sub_639920((int)&dword_D73D104); dword_D73D104 = (int)&off_6BBB78; dword_D73D144 = 0; dword_D73D148 = 0; word_D73D14C = 0; return atexit(sub_699D10); } // 6BBB78: using guessed type int (__thiscall *off_6BBB78)(void *, char); // D73D104: using guessed type int dword_D73D104; // D73D144: using guessed type int dword_D73D144; // D73D148: using guessed type int dword_D73D148; // D73D14C: using guessed type __int16 word_D73D14C; //----- (00692CF0) -------------------------------------------------------- int __cdecl sub_692CF0() { sub_639920((int)&dword_D73D15C); dword_D73D15C = (int)&off_6BBBC8; memset(&unk_D73D19C, 0, 0x27u); return atexit(sub_699D30); } // 6BBBC8: using guessed type int (__thiscall *off_6BBBC8)(void *, char); // D73D15C: using guessed type int dword_D73D15C; //----- (00692D20) -------------------------------------------------------- int __cdecl sub_692D20() { sub_4A2D20(&unk_D73D278); return atexit(nullsub_242); } //----- (00692D40) -------------------------------------------------------- int __cdecl sub_692D40() { return atexit(sub_699D60); } //----- (00692D50) -------------------------------------------------------- int __cdecl sub_692D50() { return atexit(sub_699D70); } //----- (00692D60) -------------------------------------------------------- int __cdecl sub_692D60() { return atexit(sub_699D80); } //----- (00692D70) -------------------------------------------------------- int __cdecl sub_692D70() { return atexit(sub_699D90); } //----- (00692D80) -------------------------------------------------------- int __cdecl sub_692D80() { return atexit(sub_699DA0); } //----- (00692D90) -------------------------------------------------------- int __cdecl sub_692D90() { sub_4A7D10((int)&unk_D740EB0); return atexit(sub_699DB0); } //----- (00692DB0) -------------------------------------------------------- int __cdecl sub_692DB0() { sub_588320((int)&unk_D9FAF88); word_D9FAF74 = -1; dword_D9FAF78 = -1; dword_D9FAF7C = 0; dword_D9FAF80 = 0; dword_D9FAF84 = 0; return atexit(sub_699DD0); } // D9FAF74: using guessed type __int16 word_D9FAF74; // D9FAF78: using guessed type int dword_D9FAF78; // D9FAF7C: using guessed type int dword_D9FAF7C; // D9FAF80: using guessed type int dword_D9FAF80; // D9FAF84: using guessed type int dword_D9FAF84; //----- (00692DF0) -------------------------------------------------------- int __cdecl sub_692DF0() { return atexit(sub_699DE0); } //----- (00692E00) -------------------------------------------------------- int __cdecl sub_692E00() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6BF434[v0]; byte_D9FB230[v0++] = v1; } while ( v1 ); dword_D9FB330 = 0; sub_5A7CA0(byte_6BF434); byte_D9FB4B4 = 1; return atexit(nullsub_243); } // D9FB4B4: using guessed type char byte_D9FB4B4; //----- (00692E40) -------------------------------------------------------- int __cdecl sub_692E40() { sub_4A8EF0(&unk_D9FB7EC); return atexit(sub_699E00); } //----- (00692E60) -------------------------------------------------------- int __cdecl sub_692E60() { sub_4B0A20(&unk_D9FB4B8); return atexit(sub_699E20); } //----- (00692E80) -------------------------------------------------------- int __cdecl sub_692E80() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6BF440[v0]; byte_D9FAFA8[v0++] = v1; } while ( v1 ); dword_D9FB0A8 = 0; sub_5A7CA0(byte_6BF440); byte_D9FB22C = 1; return atexit(nullsub_244); } // D9FB22C: using guessed type char byte_D9FB22C; //----- (00692EC0) -------------------------------------------------------- int __cdecl sub_692EC0() { return atexit(sub_699E30); } //----- (00692ED0) -------------------------------------------------------- int __cdecl sub_692ED0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x34u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_D9FB7FC = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_D9FB7FC + 1) = dword_D9FB7FC; *((_DWORD *)dword_D9FB7FC + 2) = dword_D9FB7FC; *((_BYTE *)dword_D9FB7FC + 48) = 1; *((_BYTE *)dword_D9FB7FC + 49) = 1; return atexit(sub_699EC0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00692F50) -------------------------------------------------------- int __cdecl sub_692F50() { sub_5839E0((int)&dword_D9FB808, 0x1Eu); return atexit(sub_699E80); } //----- (00692FB0) -------------------------------------------------------- int __cdecl sub_692FB0() { return atexit(sub_699F30); } //----- (00692FC0) -------------------------------------------------------- int __cdecl sub_692FC0() { return atexit(sub_699F40); } //----- (00692FD0) -------------------------------------------------------- int __cdecl sub_692FD0() { return atexit(sub_699F50); } //----- (00692FE0) -------------------------------------------------------- int __cdecl sub_692FE0() { return atexit(sub_699F60); } //----- (00692FF0) -------------------------------------------------------- int __cdecl sub_692FF0() { return atexit(sub_699F70); } //----- (00693000) -------------------------------------------------------- int __cdecl sub_693000() { return atexit(sub_699F80); } //----- (00693010) -------------------------------------------------------- int __cdecl sub_693010() { sub_5C5FF0((int)dword_D9FB82C, 500, 8); return atexit(sub_699F20); } //----- (00693030) -------------------------------------------------------- int __cdecl sub_693030() { sub_492BD0((int)&dword_D9FB83C, 0x40u); return atexit(sub_699F90); } //----- (00693090) -------------------------------------------------------- int __cdecl sub_693090() { return atexit(sub_69A030); } //----- (006930A0) -------------------------------------------------------- int __cdecl sub_6930A0() { sub_639540((int)&unk_D9FBAAC); memset(&unk_D9FB918, 0, 0x190u); dword_D9FBAA8 = 0; return atexit(sub_69A130); } // D9FBAA8: using guessed type int dword_D9FBAA8; //----- (006930D0) -------------------------------------------------------- int __cdecl sub_6930D0() { char v1[4]; // [sp+4h] [bp-18h]@1 int v2; // [sp+8h] [bp-14h]@1 int v3; // [sp+Ch] [bp-10h]@1 int v4; // [sp+10h] [bp-Ch]@1 int v5; // [sp+14h] [bp-8h]@1 unsigned int v6; // [sp+18h] [bp-4h]@1 int v7; // [sp+1Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v5 = 0; v4 = 0; v3 = 0; v2 = 0; *(_DWORD *)v1 = 0; strncpy(v1, byte_6A492E, 0x14u); dword_849B40 = *(_DWORD *)v1; dword_849B44 = v2; dword_849B48 = v3; dword_849B4C = v4; dword_849B50 = v5; return atexit(sub_69A180); } // 849B40: using guessed type int dword_849B40; // 849B44: using guessed type int dword_849B44; // 849B48: using guessed type int dword_849B48; // 849B4C: using guessed type int dword_849B4C; // 849B50: using guessed type int dword_849B50; // 86FEB8: using guessed type int __security_cookie; //----- (00693150) -------------------------------------------------------- int __cdecl sub_693150() { sub_6432E0((int)&unk_D9FEF2C); return atexit(sub_69A1B0); } //----- (00693170) -------------------------------------------------------- int __cdecl sub_693170() { sub_639920((int)&dword_D9FBEE0); dword_D9FBF20 = 0; byte_D9FBF24 = 0; dword_D9FBEE0 = (int)&off_6C1DB0; return atexit(sub_69A190); } // 6C1DB0: using guessed type int (__thiscall *off_6C1DB0)(void *, char); // D9FBEE0: using guessed type int dword_D9FBEE0; // D9FBF20: using guessed type int dword_D9FBF20; // D9FBF24: using guessed type char byte_D9FBF24; //----- (006931A0) -------------------------------------------------------- int __cdecl sub_6931A0() { sub_4C7BD0((int)&dword_DA0F780); return atexit(sub_69A1E0); } // DA0F780: using guessed type int dword_DA0F780; //----- (006931C0) -------------------------------------------------------- int __cdecl sub_6931C0() { sub_5A4590(&dword_DA0F928); dword_DA0F928 = (int)&off_6C1EA4; return atexit(sub_69A1C0); } // 6C1EA4: using guessed type int (__stdcall *off_6C1EA4)(int); // DA0F928: using guessed type int dword_DA0F928; //----- (006931E0) -------------------------------------------------------- int __cdecl sub_6931E0() { return atexit(nullsub_245); } //----- (006931F0) -------------------------------------------------------- int __cdecl sub_6931F0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6C2268[v0]; byte_DA0FA30[v0++] = v1; } while ( v1 ); dword_DA0FB30 = 0; sub_5A7CA0(byte_6C2268); byte_DA0FCB4 = 1; return atexit(nullsub_246); } // DA0FB30: using guessed type int dword_DA0FB30; // DA0FCB4: using guessed type char byte_DA0FCB4; //----- (00693230) -------------------------------------------------------- int __cdecl sub_693230() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6C2278[v0]; byte_DA0FCB8[v0++] = v1; } while ( v1 ); dword_DA0FDB8 = 0; sub_5A7CA0(byte_6C2278); byte_DA0FF3C = 1; return atexit(nullsub_247); } // DA0FDB8: using guessed type int dword_DA0FDB8; // DA0FF3C: using guessed type char byte_DA0FF3C; //----- (00693270) -------------------------------------------------------- int __cdecl sub_693270() { sub_6432E0((int)&unk_DA120E0); dword_DA12010 = 0; dword_DA12014 = 0; dword_DA12018 = 0; dword_DA1201C = 0; dword_DA12020 = 0; dword_DA12024 = 0; dword_DA12028 = 0; dword_DA1202C = 0; dword_DA12030 = 0; dword_DA12034 = 0; dword_DA12038 = 0; dword_DA1203C = 0; dword_DA12040 = 0; dword_DA12044 = 0; dword_DA12048 = 0; dword_DA1204C = 0; dword_DA12050 = 0; dword_DA12054 = 0; dword_DA12058 = 0; dword_DA1205C = 0; dword_DA12060 = 0; dword_DA12064 = 0; dword_DA12068 = 0; dword_DA1206C = 0; dword_DA12070 = 0; dword_DA12074 = 0; dword_DA12078 = 0; dword_DA1207C = 0; dword_DA12080 = 0; dword_DA12084 = 0; dword_DA12088 = 0; dword_DA1208C = 0; dword_DA12090 = 0; dword_DA12094 = 0; dword_DA12098 = 0; dword_DA1209C = 0; dword_DA120A0 = 0; dword_DA120A4 = 0; dword_DA120A8 = 0; dword_DA120AC = 0; dword_DA120B0 = 0; dword_DA120B4 = 0; dword_DA120B8 = 0; dword_DA120BC = 0; dword_DA120C0 = 0; dword_DA120C4 = 0; dword_DA120C8 = 0; dword_DA120CC = 0; dword_DA120D0 = 0; dword_DA120D4 = 0; dword_DA120D8 = 0; dword_DA11F40 = 1000; dword_DA11F44 = 1000; dword_DA11F48 = 1000; dword_DA11F4C = 1000; dword_DA11F50 = 1000; dword_DA11F54 = 1000; dword_DA11F58 = 1000; dword_DA11F5C = 1000; dword_DA11F60 = 1000; dword_DA11F64 = 1000; dword_DA11F68 = 1000; dword_DA11F6C = 1000; dword_DA11F70 = 1000; dword_DA11F74 = 1000; dword_DA11F78 = 1000; dword_DA11F7C = 1000; dword_DA11F80 = 1000; dword_DA11F84 = 1000; dword_DA11F88 = 1000; dword_DA11F8C = 1000; dword_DA11F90 = 1000; dword_DA11F94 = 1000; dword_DA11F98 = 1000; dword_DA11F9C = 1000; dword_DA11FA0 = 1000; dword_DA11FA4 = 1000; dword_DA11FA8 = 1000; dword_DA11FAC = 1000; dword_DA11FB0 = 1000; dword_DA11FB4 = 1000; dword_DA11FB8 = 1000; dword_DA11FBC = 1000; dword_DA11FC0 = 1000; dword_DA11FC4 = 1000; dword_DA11FC8 = 1000; dword_DA11FCC = 1000; dword_DA11FD0 = 1000; dword_DA11FD4 = 1000; dword_DA11FD8 = 1000; dword_DA11FDC = 1000; dword_DA11FE0 = 1000; dword_DA11FE4 = 1000; dword_DA12004 = 1000; dword_DA12008 = 1000; dword_DA11FEC = 0; dword_DA11FF0 = 0; dword_DA11FF4 = 0; dword_DA11FF8 = 0; dword_DA11FFC = 0; dword_DA12000 = 0; dword_DA11FE8 = 0; return atexit(sub_69A290); } // DA11F40: using guessed type int dword_DA11F40; // DA11F44: using guessed type int dword_DA11F44; // DA11F48: using guessed type int dword_DA11F48; // DA11F4C: using guessed type int dword_DA11F4C; // DA11F50: using guessed type int dword_DA11F50; // DA11F54: using guessed type int dword_DA11F54; // DA11F58: using guessed type int dword_DA11F58; // DA11F5C: using guessed type int dword_DA11F5C; // DA11F60: using guessed type int dword_DA11F60; // DA11F64: using guessed type int dword_DA11F64; // DA11F68: using guessed type int dword_DA11F68; // DA11F6C: using guessed type int dword_DA11F6C; // DA11F70: using guessed type int dword_DA11F70; // DA11F74: using guessed type int dword_DA11F74; // DA11F78: using guessed type int dword_DA11F78; // DA11F7C: using guessed type int dword_DA11F7C; // DA11F80: using guessed type int dword_DA11F80; // DA11F84: using guessed type int dword_DA11F84; // DA11F88: using guessed type int dword_DA11F88; // DA11F8C: using guessed type int dword_DA11F8C; // DA11F90: using guessed type int dword_DA11F90; // DA11F94: using guessed type int dword_DA11F94; // DA11F98: using guessed type int dword_DA11F98; // DA11F9C: using guessed type int dword_DA11F9C; // DA11FA0: using guessed type int dword_DA11FA0; // DA11FA4: using guessed type int dword_DA11FA4; // DA11FA8: using guessed type int dword_DA11FA8; // DA11FAC: using guessed type int dword_DA11FAC; // DA11FB0: using guessed type int dword_DA11FB0; // DA11FB4: using guessed type int dword_DA11FB4; // DA11FB8: using guessed type int dword_DA11FB8; // DA11FBC: using guessed type int dword_DA11FBC; // DA11FC0: using guessed type int dword_DA11FC0; // DA11FC4: using guessed type int dword_DA11FC4; // DA11FC8: using guessed type int dword_DA11FC8; // DA11FCC: using guessed type int dword_DA11FCC; // DA11FD0: using guessed type int dword_DA11FD0; // DA11FD4: using guessed type int dword_DA11FD4; // DA11FD8: using guessed type int dword_DA11FD8; // DA11FDC: using guessed type int dword_DA11FDC; // DA11FE0: using guessed type int dword_DA11FE0; // DA11FE4: using guessed type int dword_DA11FE4; // DA11FE8: using guessed type int dword_DA11FE8; // DA11FEC: using guessed type int dword_DA11FEC; // DA11FF0: using guessed type int dword_DA11FF0; // DA11FF4: using guessed type int dword_DA11FF4; // DA11FF8: using guessed type int dword_DA11FF8; // DA11FFC: using guessed type int dword_DA11FFC; // DA12000: using guessed type int dword_DA12000; // DA12004: using guessed type int dword_DA12004; // DA12008: using guessed type int dword_DA12008; // DA12010: using guessed type int dword_DA12010; // DA12014: using guessed type int dword_DA12014; // DA12018: using guessed type int dword_DA12018; // DA1201C: using guessed type int dword_DA1201C; // DA12020: using guessed type int dword_DA12020; // DA12024: using guessed type int dword_DA12024; // DA12028: using guessed type int dword_DA12028; // DA1202C: using guessed type int dword_DA1202C; // DA12030: using guessed type int dword_DA12030; // DA12034: using guessed type int dword_DA12034; // DA12038: using guessed type int dword_DA12038; // DA1203C: using guessed type int dword_DA1203C; // DA12040: using guessed type int dword_DA12040; // DA12044: using guessed type int dword_DA12044; // DA12048: using guessed type int dword_DA12048; // DA1204C: using guessed type int dword_DA1204C; // DA12050: using guessed type int dword_DA12050; // DA12054: using guessed type int dword_DA12054; // DA12058: using guessed type int dword_DA12058; // DA1205C: using guessed type int dword_DA1205C; // DA12060: using guessed type int dword_DA12060; // DA12064: using guessed type int dword_DA12064; // DA12068: using guessed type int dword_DA12068; // DA1206C: using guessed type int dword_DA1206C; // DA12070: using guessed type int dword_DA12070; // DA12074: using guessed type int dword_DA12074; // DA12078: using guessed type int dword_DA12078; // DA1207C: using guessed type int dword_DA1207C; // DA12080: using guessed type int dword_DA12080; // DA12084: using guessed type int dword_DA12084; // DA12088: using guessed type int dword_DA12088; // DA1208C: using guessed type int dword_DA1208C; // DA12090: using guessed type int dword_DA12090; // DA12094: using guessed type int dword_DA12094; // DA12098: using guessed type int dword_DA12098; // DA1209C: using guessed type int dword_DA1209C; // DA120A0: using guessed type int dword_DA120A0; // DA120A4: using guessed type int dword_DA120A4; // DA120A8: using guessed type int dword_DA120A8; // DA120AC: using guessed type int dword_DA120AC; // DA120B0: using guessed type int dword_DA120B0; // DA120B4: using guessed type int dword_DA120B4; // DA120B8: using guessed type int dword_DA120B8; // DA120BC: using guessed type int dword_DA120BC; // DA120C0: using guessed type int dword_DA120C0; // DA120C4: using guessed type int dword_DA120C4; // DA120C8: using guessed type int dword_DA120C8; // DA120CC: using guessed type int dword_DA120CC; // DA120D0: using guessed type int dword_DA120D0; // DA120D4: using guessed type int dword_DA120D4; // DA120D8: using guessed type int dword_DA120D8; //----- (006934C0) -------------------------------------------------------- int __cdecl sub_6934C0() { sub_6424A0(&dword_DA230A4); return atexit(sub_69A2A0); } // DA230A4: using guessed type int dword_DA230A4; //----- (006934E0) -------------------------------------------------------- int __cdecl sub_6934E0() { return atexit(nullsub_248); } //----- (006934F0) -------------------------------------------------------- int __cdecl sub_6934F0() { return atexit(nullsub_249); } //----- (00693500) -------------------------------------------------------- int __cdecl sub_693500() { sub_4CE240((int)&dword_13219CE0); return atexit(sub_69A310); } // 13219CE0: using guessed type int dword_13219CE0; //----- (00693520) -------------------------------------------------------- int __cdecl sub_693520() { return atexit(sub_69A2E0); } //----- (00693530) -------------------------------------------------------- int __cdecl sub_693530() { sub_4CE120((int)&dword_1321A340); return atexit(sub_69A330); } // 1321A340: using guessed type int dword_1321A340; //----- (00693550) -------------------------------------------------------- int __cdecl sub_693550() { _eh_vector_constructor_iterator_(&unk_DA230C0, 0x10u, 5764801, (int)unknown_libname_1, nullsub_2); dword_13219CD0 = 0; return atexit(sub_69A2F0); } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); // 13219CD0: using guessed type int dword_13219CD0; //----- (00693590) -------------------------------------------------------- int __cdecl sub_693590() { return atexit(nullsub_250); } //----- (006935A0) -------------------------------------------------------- int __cdecl sub_6935A0() { signed int v0; // eax@1 v0 = (signed int)&unk_84CFD4; do { *(_DWORD *)v0 = off_84D0D4; v0 += 4; } while ( v0 < (signed int)&off_84D0D4 ); memset32(dword_84BFD4, (int)&unk_84CFD4, 0x400u); return atexit(sub_69A380); } // 84BFD4: using guessed type int dword_84BFD4[]; // 84D0D4: using guessed type int (__stdcall *off_84D0D4)(int, int); //----- (006935E0) -------------------------------------------------------- int __cdecl sub_6935E0() { signed int v0; // eax@1 v0 = (signed int)&unk_84E13C; do { *(_DWORD *)v0 = off_84E23C; v0 += 4; } while ( v0 < (signed int)&off_84E23C ); memset32(dword_84D13C, (int)&unk_84E13C, 0x400u); return atexit(sub_69A3B0); } // 84D13C: using guessed type int dword_84D13C[]; // 84E23C: using guessed type int (__stdcall *off_84E23C)(int, int, int); //----- (00693620) -------------------------------------------------------- int __cdecl sub_693620() { signed int v0; // eax@1 v0 = (signed int)&unk_84F29C; do { *(_DWORD *)v0 = off_84F39C; v0 += 4; } while ( v0 < (signed int)&off_84F39C ); memset32(dword_84E29C, (int)&unk_84F29C, 0x400u); return atexit(sub_69A3E0); } // 84E29C: using guessed type int dword_84E29C[]; // 84F39C: using guessed type int (__stdcall *off_84F39C)(int, int); //----- (00693660) -------------------------------------------------------- int __cdecl sub_693660() { signed int v0; // eax@1 v0 = (signed int)&unk_8503F4; do { *(_DWORD *)v0 = off_8504F4; v0 += 4; } while ( v0 < (signed int)&off_8504F4 ); memset32(dword_84F3F4, (int)&unk_8503F4, 0x400u); return atexit(sub_69A410); } // 84F3F4: using guessed type int dword_84F3F4[]; // 8504F4: using guessed type int (__stdcall *off_8504F4)(int); //----- (006936A0) -------------------------------------------------------- int __cdecl sub_6936A0() { signed int v0; // eax@1 v0 = (signed int)&unk_851554; do { *(_DWORD *)v0 = off_851654; v0 += 4; } while ( v0 < (signed int)&off_851654 ); memset32(dword_850554, (int)&unk_851554, 0x400u); return atexit(sub_69A440); } // 850554: using guessed type int dword_850554[]; // 851654: using guessed type int (__stdcall *off_851654)(int, int); //----- (006936E0) -------------------------------------------------------- int __cdecl sub_6936E0() { signed int v0; // eax@1 v0 = (signed int)&unk_8526B4; do { *(_DWORD *)v0 = off_8527B4; v0 += 4; } while ( v0 < (signed int)&off_8527B4 ); memset32(dword_8516B4, (int)&unk_8526B4, 0x400u); return atexit(sub_69A470); } // 8516B4: using guessed type int dword_8516B4[]; // 8527B4: using guessed type int (__stdcall *off_8527B4)(int); //----- (00693720) -------------------------------------------------------- int __cdecl sub_693720() { sub_4DDD50((int)&dword_1321B750); return atexit(sub_69A670); } //----- (00693740) -------------------------------------------------------- int __cdecl sub_693740() { return atexit(nullsub_251); } //----- (00693750) -------------------------------------------------------- int __cdecl sub_693750() { return atexit(nullsub_252); } //----- (00693760) -------------------------------------------------------- int __cdecl sub_693760() { return atexit(sub_69A4D0); } //----- (00693770) -------------------------------------------------------- int __cdecl sub_693770() { return atexit(sub_69A4E0); } //----- (00693780) -------------------------------------------------------- int __cdecl sub_693780() { return atexit(sub_69A4F0); } //----- (00693790) -------------------------------------------------------- int __cdecl sub_693790() { return atexit(sub_69A500); } //----- (006937A0) -------------------------------------------------------- int __cdecl sub_6937A0() { return atexit(sub_69A510); } //----- (006937B0) -------------------------------------------------------- int __cdecl sub_6937B0() { return atexit(sub_69A520); } //----- (006937C0) -------------------------------------------------------- int __cdecl sub_6937C0() { return atexit(sub_69A530); } //----- (006937D0) -------------------------------------------------------- int __cdecl sub_6937D0() { return atexit(sub_69A540); } //----- (006937E0) -------------------------------------------------------- int __cdecl sub_6937E0() { return atexit(sub_69A550); } //----- (006937F0) -------------------------------------------------------- int __cdecl sub_6937F0() { return atexit(sub_69A560); } //----- (00693800) -------------------------------------------------------- int __cdecl sub_693800() { return atexit(sub_69A570); } //----- (00693810) -------------------------------------------------------- int __cdecl sub_693810() { return atexit(sub_69A580); } //----- (00693820) -------------------------------------------------------- int __cdecl sub_693820() { return atexit(sub_69A590); } //----- (00693830) -------------------------------------------------------- int __cdecl sub_693830() { return atexit(sub_69A5A0); } //----- (00693840) -------------------------------------------------------- int __cdecl sub_693840() { return atexit(sub_69A5B0); } //----- (00693850) -------------------------------------------------------- int __cdecl sub_693850() { return atexit(sub_69A5C0); } //----- (00693860) -------------------------------------------------------- int __cdecl sub_693860() { return atexit(sub_69A5D0); } //----- (00693870) -------------------------------------------------------- int __cdecl sub_693870() { return atexit(sub_69A5E0); } //----- (00693880) -------------------------------------------------------- int __cdecl sub_693880() { return atexit(sub_69A5F0); } //----- (00693890) -------------------------------------------------------- int __cdecl sub_693890() { return atexit(sub_69A600); } //----- (006938A0) -------------------------------------------------------- int __cdecl sub_6938A0() { return atexit(sub_69A610); } //----- (006938B0) -------------------------------------------------------- int __cdecl sub_6938B0() { return atexit(sub_69A620); } //----- (006938C0) -------------------------------------------------------- int __cdecl sub_6938C0() { return atexit(sub_69A630); } //----- (006938D0) -------------------------------------------------------- int __cdecl sub_6938D0() { return atexit(sub_69A640); } //----- (006938E0) -------------------------------------------------------- int __cdecl sub_6938E0() { return atexit(sub_69A650); } //----- (006938F0) -------------------------------------------------------- int __cdecl sub_6938F0() { return atexit(sub_69A660); } //----- (00693900) -------------------------------------------------------- int __cdecl sub_693900() { return atexit(nullsub_253); } //----- (00693910) -------------------------------------------------------- int __cdecl sub_693910() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6C7058[v0]; byte_1321B960[v0++] = v1; } while ( v1 ); dword_1321BA60 = 0; sub_5A7CA0(byte_6C7058); byte_1321BBE4 = 1; return atexit(nullsub_254); } // 1321BBE4: using guessed type char byte_1321BBE4; //----- (00693950) -------------------------------------------------------- int __cdecl sub_693950() { sub_4E6C10(&unk_1321BBF0); return atexit(sub_69A6D0); } //----- (00693970) -------------------------------------------------------- int __cdecl sub_693970() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6CB5A4[v0]; byte_1321DC08[v0++] = v1; } while ( v1 ); dword_1321DD08 = 0; sub_5A7CA0(byte_6CB5A4); byte_1321DE8C = 1; return atexit(nullsub_255); } // 1321DE8C: using guessed type char byte_1321DE8C; //----- (006939B0) -------------------------------------------------------- int __cdecl sub_6939B0() { sub_4D57B0((char *)&unk_1321D008, (const char *)&off_6C6768); return atexit(sub_69A6F0); } // 6C6768: using guessed type void *off_6C6768; //----- (006939D0) -------------------------------------------------------- int __cdecl sub_6939D0() { sub_4D57B0((char *)&unk_1321EB90, "me"); return atexit(sub_69A700); } //----- (006939F0) -------------------------------------------------------- int __cdecl sub_6939F0() { sub_4D57B0((char *)&unk_1321DE90, "player"); return atexit(sub_69A710); } //----- (00693A10) -------------------------------------------------------- int __cdecl sub_693A10() { sub_4D57B0((char *)&unk_1321D908, "hour"); return atexit(sub_69A720); } //----- (00693A30) -------------------------------------------------------- int __cdecl sub_693A30() { sub_4D57B0((char *)&unk_1321C800, "minute"); return atexit(sub_69A730); } //----- (00693A50) -------------------------------------------------------- int __cdecl sub_693A50() { sub_4D57B0((char *)&unk_1321DB08, "sec"); return atexit(sub_69A740); } //----- (00693A70) -------------------------------------------------------- int __cdecl sub_693A70() { sub_4D57B0((char *)&unk_1321CC08, "millisec"); return atexit(sub_69A750); } //----- (00693A90) -------------------------------------------------------- int __cdecl sub_693A90() { sub_4D57B0((char *)&unk_1321E090, "kingdomquest"); return atexit(sub_69A760); } //----- (00693AB0) -------------------------------------------------------- int __cdecl sub_693AB0() { sub_4D57B0((char *)&unk_1321E690, "suc"); return atexit(sub_69A770); } //----- (00693AD0) -------------------------------------------------------- int __cdecl sub_693AD0() { sub_4D57B0((char *)&unk_1321E990, "fail"); return atexit(sub_69A780); } //----- (00693AF0) -------------------------------------------------------- int __cdecl sub_693AF0() { sub_4D57B0((char *)&unk_1321D108, "areaentry"); return atexit(sub_69A790); } //----- (00693B10) -------------------------------------------------------- int __cdecl sub_693B10() { sub_4D57B0((char *)&unk_1321E290, "arealeave"); return atexit(sub_69A7A0); } //----- (00693B30) -------------------------------------------------------- int __cdecl sub_693B30() { sub_4D57B0((char *)&unk_1321ED90, "npcclickhandle"); return atexit(sub_69A7B0); } //----- (00693B50) -------------------------------------------------------- int __cdecl sub_693B50() { sub_4D57B0((char *)&unk_1321D808, "npcclickindex"); return atexit(sub_69A7C0); } //----- (00693B70) -------------------------------------------------------- int __cdecl sub_693B70() { sub_4D57B0((char *)&unk_1321E190, "npcclickany"); return atexit(sub_69A7D0); } //----- (00693B90) -------------------------------------------------------- int __cdecl sub_693B90() { sub_4D57B0((char *)&unk_1321C300, "hplow"); return atexit(sub_69A7E0); } //----- (00693BB0) -------------------------------------------------------- int __cdecl sub_693BB0() { sub_4D57B0((char *)&unk_1321C900, "mobeliminate"); return atexit(sub_69A7F0); } //----- (00693BD0) -------------------------------------------------------- int __cdecl sub_693BD0() { sub_4D57B0((char *)&unk_1321C100, "playereliminate"); return atexit(sub_69A800); } //----- (00693BF0) -------------------------------------------------------- int __cdecl sub_693BF0() { sub_4D57B0((char *)&unk_1321E890, "guildeliminate"); return atexit(sub_69A810); } //----- (00693C10) -------------------------------------------------------- int __cdecl sub_693C10() { sub_4D57B0((char *)&unk_1321C200, "timeout"); return atexit(sub_69A820); } //----- (00693C30) -------------------------------------------------------- int __cdecl sub_693C30() { sub_4D57B0((char *)&unk_1321C600, "deadhandle"); return atexit(sub_69A830); } //----- (00693C50) -------------------------------------------------------- int __cdecl sub_693C50() { sub_4D57B0((char *)&unk_1321EA90, "deadindex"); return atexit(sub_69A840); } //----- (00693C70) -------------------------------------------------------- int __cdecl sub_693C70() { sub_4D57B0((char *)&unk_1321F120, "killenemy"); return atexit(sub_69A850); } //----- (00693C90) -------------------------------------------------------- int __cdecl sub_693C90() { sub_4D57B0((char *)&unk_1321CE08, "targetchange"); return atexit(sub_69A860); } //----- (00693CB0) -------------------------------------------------------- int __cdecl sub_693CB0() { sub_4D57B0((char *)&unk_1321D708, "playerdead"); return atexit(sub_69A870); } //----- (00693CD0) -------------------------------------------------------- int __cdecl sub_693CD0() { sub_4D57B0((char *)&unk_1321CB08, "admin"); return atexit(sub_69A880); } //----- (00693CF0) -------------------------------------------------------- int __cdecl sub_693CF0() { sub_4D57B0((char *)&unk_1321DF90, "on"); return atexit(sub_69A890); } //----- (00693D10) -------------------------------------------------------- int __cdecl sub_693D10() { sub_4D57B0((char *)&unk_1321E490, "off"); return atexit(sub_69A8A0); } //----- (00693D30) -------------------------------------------------------- int __cdecl sub_693D30() { sub_4D57B0((char *)&unk_1321D608, "logout"); return atexit(sub_69A8B0); } //----- (00693D50) -------------------------------------------------------- int __cdecl sub_693D50() { sub_4D57B0((char *)&unk_1321D208, "anywhere"); return atexit(sub_69A8C0); } //----- (00693D70) -------------------------------------------------------- int __cdecl sub_693D70() { sub_4D57B0((char *)&unk_1321E590, "handle"); return atexit(sub_69A8D0); } //----- (00693D90) -------------------------------------------------------- int __cdecl sub_693D90() { sub_4D57B0((char *)&unk_1321F520, "guild"); return atexit(sub_69A8E0); } //----- (00693DB0) -------------------------------------------------------- int __cdecl sub_693DB0() { sub_4D57B0((char *)&unk_1321CF08, "recover"); return atexit(sub_69A8F0); } //----- (00693DD0) -------------------------------------------------------- int __cdecl sub_693DD0() { sub_4D57B0((char *)&unk_1321F420, "noaggro"); return atexit(sub_69A900); } //----- (00693DF0) -------------------------------------------------------- int __cdecl sub_693DF0() { sub_4D57B0((char *)&unk_1321D408, "pk"); return atexit(sub_69A910); } //----- (00693E10) -------------------------------------------------------- int __cdecl sub_693E10() { sub_4D57B0((char *)&unk_1321C400, (const char *)&off_6CB700); return atexit(sub_69A920); } // 6CB700: using guessed type void *off_6CB700; //----- (00693E30) -------------------------------------------------------- int __cdecl sub_693E30() { sub_4D57B0((char *)&unk_1321D308, "observer"); return atexit(sub_69A930); } //----- (00693E50) -------------------------------------------------------- int __cdecl sub_693E50() { sub_4D57B0((char *)&unk_1321C000, "guildtournamentstart"); return atexit(sub_69A940); } //----- (00693E70) -------------------------------------------------------- int __cdecl sub_693E70() { sub_4D57B0((char *)&unk_1321DA08, "result"); return atexit(sub_69A950); } //----- (00693E90) -------------------------------------------------------- int __cdecl sub_693E90() { sub_4D57B0((char *)&unk_1321CA08, "hpfull"); return atexit(sub_69A960); } //----- (00693EB0) -------------------------------------------------------- int __cdecl sub_693EB0() { sub_4D57B0((char *)&unk_1321E790, "beggar"); return atexit(sub_69A970); } //----- (00693ED0) -------------------------------------------------------- int __cdecl sub_693ED0() { sub_4D57B0((char *)&unk_1321E390, "all_without_couple"); return atexit(sub_69A980); } //----- (00693EF0) -------------------------------------------------------- int __cdecl sub_693EF0() { sub_4D57B0((char *)&unk_1321C500, "headacc"); return atexit(sub_69A990); } //----- (00693F10) -------------------------------------------------------- int __cdecl sub_693F10() { sub_4D57B0((char *)&unk_1321F320, "bodyacc"); return atexit(sub_69A9A0); } //----- (00693F30) -------------------------------------------------------- int __cdecl sub_693F30() { sub_4D57B0((char *)&unk_1321EC90, "split"); return atexit(sub_69A9B0); } //----- (00693F50) -------------------------------------------------------- int __cdecl sub_693F50() { sub_4D57B0((char *)&unk_1321C700, "pickupitemindex"); return atexit(sub_69A9C0); } //----- (00693F70) -------------------------------------------------------- int __cdecl sub_693F70() { sub_4D57B0((char *)&unk_1321CD08, "dicegameend"); return atexit(sub_69A9D0); } //----- (00693F90) -------------------------------------------------------- int __cdecl sub_693F90() { sub_4D57B0((char *)&unk_1321D508, "mobindex"); return atexit(sub_69A9E0); } //----- (00693FB0) -------------------------------------------------------- int __cdecl sub_693FB0() { sub_4D57B0((char *)&unk_1321F220, "hpupper"); return atexit(sub_69A9F0); } //----- (00693FD0) -------------------------------------------------------- void *__cdecl sub_693FD0() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"RegisterGTPortal", 0, 4, 4); *(_DWORD *)v1 = &off_6C7F14; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA00, v1); } // 6C7F14: using guessed type int (__stdcall *off_6C7F14)(int); //----- (00694050) -------------------------------------------------------- void *__cdecl sub_694050() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"SaveLinkto", 0, 4, 4); *(_DWORD *)v1 = &off_6C7F44; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA05, v1); } // 6C7F44: using guessed type int (__stdcall *off_6C7F44)(int); //----- (006940D0) -------------------------------------------------------- void *__cdecl sub_6940D0() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"ClearSaveLinkto", 0, 0, 0); *(_DWORD *)v1 = &off_6C7F6C; } else { v1 = 0; } return sub_4D61F0(&unk_1321F119, v1); } // 6C7F6C: using guessed type int (__stdcall *off_6C7F6C)(int); //----- (00694150) -------------------------------------------------------- void *__cdecl sub_694150() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"NPCChatNoFacecut", 1, 1, 1); *(_DWORD *)v1 = &off_6C7F98; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA07, v1); } // 6C7F98: using guessed type int (__stdcall *off_6C7F98)(int); //----- (006941D0) -------------------------------------------------------- void *__cdecl sub_6941D0() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"ScinarioCodeParty", 1, 1, 1); *(_DWORD *)v1 = &off_6C7FC8; } else { v1 = 0; } return sub_4D61F0(&unk_1321F118, v1); } // 6C7FC8: using guessed type int (__stdcall *off_6C7FC8)(int); //----- (00694250) -------------------------------------------------------- void *__cdecl sub_694250() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"HasAbstate", 1, 3, 3); *(_DWORD *)v1 = &off_6C7FF8; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA02, v1); } // 6C7FF8: using guessed type int (__stdcall *off_6C7FF8)(int); //----- (006942D0) -------------------------------------------------------- void *__cdecl sub_6942D0() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"BroadcastCode", 1, 1, 1); *(_DWORD *)v1 = &off_6C8020; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA04, v1); } // 6C8020: using guessed type int (__stdcall *off_6C8020)(int); //----- (00694350) -------------------------------------------------------- void *__cdecl sub_694350() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"GTRegisterNPC", 0, 2, 2); *(_DWORD *)v1 = &off_6C804C; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA01, v1); } // 6C804C: using guessed type int (__stdcall *off_6C804C)(int); //----- (006943D0) -------------------------------------------------------- void *__cdecl sub_6943D0() { int v0; // eax@1 void *v1; // esi@1 v0 = operator new(0xBCu); v1 = (void *)v0; if ( v0 ) { sub_4DA2C0(v0, (int)"GTMobRegenKey", 0, 3, 3); *(_DWORD *)v1 = &off_6C8078; } else { v1 = 0; } return sub_4D61F0(&unk_1321CA03, v1); } // 6C8078: using guessed type int (__stdcall *off_6C8078)(int); //----- (00694450) -------------------------------------------------------- int __cdecl sub_694450() { return atexit(nullsub_256); } //----- (00694460) -------------------------------------------------------- int __cdecl sub_694460() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6CB79C[v0]; byte_1321EE90[v0++] = v1; } while ( v1 ); dword_1321EF90 = 0; sub_5A7CA0(byte_6CB79C); byte_1321F114 = 1; return atexit(nullsub_257); } // 1321F114: using guessed type char byte_1321F114; //----- (006944A0) -------------------------------------------------------- int __cdecl sub_6944A0() { sub_6432E0((int)&unk_1321F620); return atexit(sub_69AA20); } //----- (006944C0) -------------------------------------------------------- int __cdecl sub_6944C0() { return atexit(sub_69AA40); } //----- (006944D0) -------------------------------------------------------- int __cdecl sub_6944D0() { return atexit(sub_69AA50); } //----- (006944E0) -------------------------------------------------------- int __cdecl sub_6944E0() { return atexit(sub_69AA60); } //----- (006944F0) -------------------------------------------------------- int __cdecl sub_6944F0() { return atexit(sub_69AA70); } //----- (00694500) -------------------------------------------------------- int __cdecl sub_694500() { return atexit(sub_69AA80); } //----- (00694510) -------------------------------------------------------- int __cdecl sub_694510() { return atexit(sub_69AA90); } //----- (00694520) -------------------------------------------------------- int __cdecl sub_694520() { return atexit(sub_69AAA0); } //----- (00694530) -------------------------------------------------------- int __cdecl sub_694530() { return atexit(sub_69AAB0); } //----- (00694540) -------------------------------------------------------- int __cdecl sub_694540() { return atexit(sub_69AAC0); } //----- (00694550) -------------------------------------------------------- int __cdecl sub_694550() { return atexit(sub_69AAD0); } //----- (00694560) -------------------------------------------------------- int __cdecl sub_694560() { unsigned int v0; // esi@1 signed int v2; // [sp+4h] [bp-4h]@1 v0 = 0; v2 = 0; do { dbl_1322FE80[v0++] = sqrt((double)v2); v2 = v0; } while ( v0 < 0x1F4 ); return atexit(nullsub_76); } // 1322FE80: using guessed type double dbl_1322FE80[]; //----- (006945A0) -------------------------------------------------------- int __cdecl sub_6945A0() { sub_639540((int)&unk_13230E30); return atexit(sub_69AAF0); } //----- (006945F0) -------------------------------------------------------- int __cdecl sub_6945F0() { return atexit(sub_69AB20); } //----- (00694600) -------------------------------------------------------- int __cdecl sub_694600() { return atexit(sub_69AB30); } //----- (00694610) -------------------------------------------------------- int __cdecl sub_694610() { return atexit(sub_69AB40); } //----- (00694620) -------------------------------------------------------- int __cdecl sub_694620() { return atexit(sub_69AB50); } //----- (00694630) -------------------------------------------------------- int __cdecl sub_694630() { return atexit(sub_69AB60); } //----- (00694640) -------------------------------------------------------- int __cdecl sub_694640() { return atexit(sub_69AB70); } //----- (00694650) -------------------------------------------------------- int __cdecl sub_694650() { return atexit(sub_69AB80); } //----- (00694660) -------------------------------------------------------- int __cdecl sub_694660() { return atexit(sub_69AB90); } //----- (00694670) -------------------------------------------------------- int __cdecl sub_694670() { return atexit(sub_69ABA0); } //----- (00694680) -------------------------------------------------------- int __cdecl sub_694680() { return atexit(sub_69ABB0); } //----- (00694690) -------------------------------------------------------- int __cdecl sub_694690() { return atexit(sub_69ABC0); } //----- (006946A0) -------------------------------------------------------- int __cdecl sub_6946A0() { return atexit(sub_69ABD0); } //----- (006946B0) -------------------------------------------------------- int __cdecl sub_6946B0() { return atexit(sub_69ABE0); } //----- (006946C0) -------------------------------------------------------- int __cdecl sub_6946C0() { return atexit(sub_69ABF0); } //----- (006946D0) -------------------------------------------------------- int __cdecl sub_6946D0() { return atexit(sub_69AC00); } //----- (006946E0) -------------------------------------------------------- int __cdecl sub_6946E0() { return atexit(sub_69AC10); } //----- (006946F0) -------------------------------------------------------- int __cdecl sub_6946F0() { return atexit(sub_69AC20); } //----- (00694700) -------------------------------------------------------- int __cdecl sub_694700() { return atexit(sub_69AC30); } //----- (00694710) -------------------------------------------------------- int __cdecl sub_694710() { return atexit(sub_69AC40); } //----- (00694720) -------------------------------------------------------- int __cdecl sub_694720() { return atexit(sub_69AC50); } //----- (00694730) -------------------------------------------------------- int __cdecl sub_694730() { int *v1; // [sp+4h] [bp-4h]@5 if ( !(dword_1323124C & 1) ) { dword_1323124C |= 1u; dword_13231244 = (int)&off_6CDFE8; atexit(sub_69AC60); } if ( !(dword_13231260 & 1) ) { dword_13231260 |= 1u; dword_13231250 = 0; dword_13231254 = 0; dword_13231258 = 0; atexit(sub_69AC70); } v1 = &dword_13231244; return sub_4242C0((int)&dword_13231250, (unsigned int)&v1); } // 6CDFE8: using guessed type int (__stdcall *off_6CDFE8)(int, int, int, int, int, int, int); // 13231244: using guessed type int dword_13231244; // 1323124C: using guessed type int dword_1323124C; // 13231254: using guessed type int dword_13231254; // 13231258: using guessed type int dword_13231258; // 13231260: using guessed type int dword_13231260; //----- (006947B0) -------------------------------------------------------- int __cdecl sub_6947B0() { return atexit(nullsub_258); } //----- (006947C0) -------------------------------------------------------- int __cdecl sub_6947C0() { return atexit(nullsub_259); } //----- (006947D0) -------------------------------------------------------- int __cdecl sub_6947D0() { _eh_vector_constructor_iterator_(&unk_1323D2C8, 0x50u, 256, (int)sub_50EA20, nullsub_2); return atexit(sub_69ACE0); } //----- (00694800) -------------------------------------------------------- int __cdecl sub_694800() { _eh_vector_constructor_iterator_(&unk_132312C0, 0x30u, 1024, (int)sub_50E9E0, (void (__thiscall *)(void *))sub_50EA10); return atexit(sub_69AD00); } //----- (00694830) -------------------------------------------------------- int __cdecl sub_694830() { return atexit(nullsub_260); } //----- (00694840) -------------------------------------------------------- int __cdecl sub_694840() { _eh_vector_constructor_iterator_(word_132423D0, 0x48u, 128, (int)sub_5CF620, nullsub_2); dword_132447D4 = 127; dword_132447D0 = 0; return atexit(sub_69AD30); } // 132423D0: using guessed type __int16 word_132423D0[]; // 132447D0: using guessed type int dword_132447D0; // 132447D4: using guessed type int dword_132447D4; //----- (00694880) -------------------------------------------------------- int __cdecl sub_694880() { return atexit(nullsub_261); } //----- (00694890) -------------------------------------------------------- int __cdecl sub_694890() { return atexit(nullsub_262); } //----- (006948A0) -------------------------------------------------------- int __cdecl sub_6948A0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6D6474[v0]; byte_132448E8[v0++] = v1; } while ( v1 ); dword_132449E8 = 0; sub_5A7CA0(byte_6D6474); byte_13244B6C = 1; return atexit(nullsub_263); } // 13244B6C: using guessed type char byte_13244B6C; //----- (006948E0) -------------------------------------------------------- int __cdecl sub_6948E0() { return atexit(nullsub_264); } //----- (006948F0) -------------------------------------------------------- int __cdecl sub_6948F0() { return atexit(nullsub_265); } //----- (00694900) -------------------------------------------------------- int __cdecl sub_694900() { unknown_libname_1(&unk_13253E80); return atexit(sub_69B020); } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); //----- (00694920) -------------------------------------------------------- int __cdecl sub_694920() { return atexit(nullsub_266); } //----- (00694930) -------------------------------------------------------- int __cdecl sub_694930() { sub_4C8DA0((int)&unk_1324B2A8); return atexit(sub_69B040); } //----- (00694950) -------------------------------------------------------- int __cdecl sub_694950() { sub_5882E0((int)&unk_13253AE8); return atexit(sub_69B050); } //----- (00694970) -------------------------------------------------------- int __cdecl sub_694970() { return atexit(sub_69B060); } //----- (00694980) -------------------------------------------------------- int __cdecl sub_694980() { sub_40CDD0(&unk_132453B0); return atexit(sub_69B070); } //----- (006949A0) -------------------------------------------------------- int __cdecl sub_6949A0() { sub_52CE50((int)&unk_132460F8); return atexit(sub_69B080); } //----- (006949C0) -------------------------------------------------------- int __cdecl sub_6949C0() { sub_486CB0(&unk_13253628); return atexit(sub_69B090); } //----- (006949E0) -------------------------------------------------------- int __cdecl sub_6949E0() { sub_6411A0((int)&unk_1324C058); sub_641130((int)&unk_1324CEAC); sub_641200((int)&unk_13250FF0); sub_6412D0((int)&unk_13251238); sub_641450((int)&unk_13252218); return atexit(sub_69B1D0); } //----- (00694A70) -------------------------------------------------------- int __cdecl sub_694A70() { unknown_libname_1(&unk_132450FC); return atexit(sub_69B0A0); } // 4C72C0: using guessed type int __thiscall unknown_libname_1(_DWORD); //----- (00694A90) -------------------------------------------------------- int __cdecl sub_694A90() { sub_5C79A0((int)&unk_13252690, (int)&unk_1325CFD8); return atexit(sub_69B0B0); } //----- (00694AB0) -------------------------------------------------------- int __cdecl sub_694AB0() { sub_5CF620(&unk_132460F4); return atexit(sub_69B0C0); } //----- (00694AD0) -------------------------------------------------------- int __cdecl sub_694AD0() { return atexit(nullsub_267); } //----- (00694AE0) -------------------------------------------------------- int __cdecl sub_694AE0() { sub_48FEC0((int)&unk_13247470); return atexit(sub_69B0D0); } //----- (00694B00) -------------------------------------------------------- int __cdecl sub_694B00() { return sub_5C21A0((int)&unk_132453A8, (int)"ShineObjectClass::ShineObject", 0); } //----- (00694B20) -------------------------------------------------------- int __cdecl sub_694B20() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6E7414[v0]; byte_13253860[v0++] = v1; } while ( v1 ); dword_13253960 = 0; sub_5A7CA0(byte_6E7414); byte_13253AE4 = 1; return atexit(nullsub_268); } // 13253AE4: using guessed type char byte_13253AE4; //----- (00694B60) -------------------------------------------------------- int __cdecl sub_694B60() { sub_58F9E0(&unk_132535F8); return atexit(sub_69B100); } //----- (00694B80) -------------------------------------------------------- int __cdecl sub_694B80() { sub_58A880((int)&unk_13253600); return atexit(sub_69B110); } //----- (00694BA0) -------------------------------------------------------- int __cdecl sub_694BA0() { sub_45A940(&unk_13252578); return atexit(sub_69B120); } //----- (00694BC0) -------------------------------------------------------- int __cdecl sub_694BC0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6E7424[v0]; byte_13253370[v0++] = v1; } while ( v1 ); dword_13253470 = 0; sub_5A7CA0(byte_6E7424); byte_132535F4 = 1; return atexit(nullsub_269); } // 132535F4: using guessed type char byte_132535F4; //----- (00694C00) -------------------------------------------------------- int __cdecl sub_694C00() { return sub_5C21A0((int)&unk_13253E78, (int)"ShineObjectClass::ShineNPC", (int)&unk_132460EC); } //----- (00694C20) -------------------------------------------------------- int __cdecl sub_694C20() { return sub_5C21A0((int)&unk_13252688, (int)"ShineObjectClass::ShineDoor", (int)&unk_132541BC); } //----- (00694C40) -------------------------------------------------------- int __cdecl sub_694C40() { return sub_5C21A0((int)&unk_13253360, (int)"ShineObjectClass::ShineMagicField", (int)&unk_132453A8); } //----- (00694C60) -------------------------------------------------------- int __cdecl sub_694C60() { return sub_5C21A0((int)&unk_132453A0, (int)"ShineObjectClass::ShineMiniHouse", (int)&unk_132453A8); } //----- (00694C80) -------------------------------------------------------- int __cdecl sub_694C80() { return sub_5C21A0((int)&unk_132460EC, (int)"ShineObjectClass::ShineMob", (int)&unk_132541BC); } //----- (00694CA0) -------------------------------------------------------- int __cdecl sub_694CA0() { return sub_5C21A0((int)&unk_13253850, (int)"ShineObjectClass::ShineBandit", (int)&unk_132460EC); } //----- (00694CC0) -------------------------------------------------------- int __cdecl sub_694CC0() { return sub_5C21A0((int)&unk_13253858, (int)"ShineObjectClass::ShineServant", (int)&unk_132460EC); } //----- (00694CE0) -------------------------------------------------------- int __cdecl sub_694CE0() { return sub_5C21A0((int)&unk_13253368, (int)"ShineObjectClass::ShinePet", (int)&unk_132460EC); } //----- (00694D00) -------------------------------------------------------- int __cdecl sub_694D00() { sub_555600((int)&unk_13253630); return atexit(sub_69B270); } //----- (00694D20) -------------------------------------------------------- int __cdecl sub_694D20() { return atexit(nullsub_270); } //----- (00694D30) -------------------------------------------------------- int __cdecl sub_694D30() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6E7530[v0]; byte_13253BF0[v0++] = v1; } while ( v1 ); dword_13253CF0 = 0; sub_5A7CA0(byte_6E7530); byte_13253E74 = 1; return atexit(nullsub_271); } // 13253CF0: using guessed type int dword_13253CF0; // 13253E74: using guessed type char byte_13253E74; //----- (00694D70) -------------------------------------------------------- int __cdecl sub_694D70() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6E7540[v0]; byte_13245118[v0++] = v1; } while ( v1 ); dword_13245218 = 0; sub_5A7CA0(byte_6E7540); byte_1324539C = 1; return atexit(nullsub_272); } // 1324539C: using guessed type char byte_1324539C; //----- (00694DB0) -------------------------------------------------------- int __cdecl sub_694DB0() { return sub_5C21A0((int)&unk_132541BC, (int)"ShineObjectClass::ShineMobileObject", (int)&unk_132453A8); } //----- (00694DD0) -------------------------------------------------------- int __cdecl sub_694DD0() { return sub_5C21A0((int)&unk_132541C4, (int)"ShineObjectClass::ShineMover", (int)&unk_132541BC); } //----- (00694DF0) -------------------------------------------------------- int __cdecl sub_694DF0() { return sub_5C21A0((int)&unk_132541F4, (int)"ShinePlayer", (int)&unk_132541BC); } //----- (00694E10) -------------------------------------------------------- int __cdecl sub_694E10() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6EA2CC[v0]; byte_13254200[v0++] = v1; } while ( v1 ); dword_13254300 = 0; sub_5A7CA0(byte_6EA2CC); byte_13254484 = 1; return atexit(nullsub_273); } // 13254484: using guessed type char byte_13254484; //----- (00694E50) -------------------------------------------------------- int __cdecl sub_694E50() { return atexit(nullsub_274); } //----- (00694E60) -------------------------------------------------------- int __cdecl sub_694E60() { sub_576DA0(&unk_132546E8); return atexit(nullsub_275); } //----- (00694E80) -------------------------------------------------------- int __cdecl sub_694E80() { int v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+8h] [bp-1Ch]@4 int v3; // [sp+14h] [bp-10h]@3 int v4; // [sp+20h] [bp-4h]@1 sub_4C0FA0(&dword_13255290); v4 = 0; dword_13255290 = (int)&off_6EC8B0; dword_132559CC = 0; v0 = operator new(8u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_132559CC = (void *)v0; *(_DWORD *)v0 = 0; *(_DWORD *)(v0 + 4) = 0; *(_DWORD *)dword_132559CC = &dword_132559CC; dword_132559D0 = 0; dword_132559D4 = 0; dword_132559D8 = 0; dword_132559DC = 0; word_132559E4 = 0; return atexit(sub_69B430); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 13255290: using guessed type int dword_13255290; // 132559D0: using guessed type int dword_132559D0; // 132559D4: using guessed type int dword_132559D4; // 132559D8: using guessed type int dword_132559D8; // 132559DC: using guessed type int dword_132559DC; // 132559E4: using guessed type __int16 word_132559E4; //----- (00694F50) -------------------------------------------------------- int __cdecl sub_694F50() { int v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+8h] [bp-1Ch]@4 int v3; // [sp+14h] [bp-10h]@3 int v4; // [sp+20h] [bp-4h]@1 sub_4C0FA0(&dword_13257008); v4 = 0; dword_13257008 = (int)&off_6EC8B0; dword_13257744 = 0; v0 = operator new(8u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_13257744 = (void *)v0; *(_DWORD *)v0 = 0; *(_DWORD *)(v0 + 4) = 0; *(_DWORD *)dword_13257744 = &dword_13257744; dword_13257748 = 0; dword_1325774C = 0; dword_13257750 = 0; dword_13257754 = 0; word_1325775C = 0; dword_13257008 = (int)&off_6EC8C0; return atexit(sub_69B470); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8C0: using guessed type int (__stdcall *off_6EC8C0)(int, int, int); // 13257008: using guessed type int dword_13257008; // 13257748: using guessed type int dword_13257748; // 1325774C: using guessed type int dword_1325774C; // 13257750: using guessed type int dword_13257750; // 13257754: using guessed type int dword_13257754; // 1325775C: using guessed type __int16 word_1325775C; //----- (00695030) -------------------------------------------------------- int __cdecl sub_695030() { int v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+8h] [bp-1Ch]@4 int v3; // [sp+14h] [bp-10h]@3 int v4; // [sp+20h] [bp-4h]@1 sub_4C0FA0(&dword_132559E8); v4 = 0; dword_132559E8 = (int)&off_6EC8B0; dword_13256124 = 0; v0 = operator new(8u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_13256124 = (void *)v0; *(_DWORD *)v0 = 0; *(_DWORD *)(v0 + 4) = 0; *(_DWORD *)dword_13256124 = &dword_13256124; dword_13256128 = 0; dword_1325612C = 0; dword_13256130 = 0; dword_13256134 = 0; word_1325613C = 0; dword_132559E8 = (int)&off_6EC8E0; return atexit(sub_69B4B0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8E0: using guessed type int (__stdcall *off_6EC8E0)(int, int, int); // 132559E8: using guessed type int dword_132559E8; // 13256128: using guessed type int dword_13256128; // 1325612C: using guessed type int dword_1325612C; // 13256130: using guessed type int dword_13256130; // 13256134: using guessed type int dword_13256134; // 1325613C: using guessed type __int16 word_1325613C; //----- (00695110) -------------------------------------------------------- int __cdecl sub_695110() { int v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+8h] [bp-1Ch]@4 int v3; // [sp+14h] [bp-10h]@3 int v4; // [sp+20h] [bp-4h]@1 sub_4C0FA0(&dword_13256140); v4 = 0; dword_13256140 = (int)&off_6EC8B0; dword_1325687C = 0; v0 = operator new(8u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_1325687C = (void *)v0; *(_DWORD *)v0 = 0; *(_DWORD *)(v0 + 4) = 0; *(_DWORD *)dword_1325687C = &dword_1325687C; dword_13256880 = 0; dword_13256884 = 0; dword_13256888 = 0; dword_1325688C = 0; word_13256894 = 0; dword_13256140 = (int)&off_6EC8D0; return atexit(sub_69B4F0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8D0: using guessed type int (__stdcall *off_6EC8D0)(int, int, int); // 13256140: using guessed type int dword_13256140; // 13256880: using guessed type int dword_13256880; // 13256884: using guessed type int dword_13256884; // 13256888: using guessed type int dword_13256888; // 1325688C: using guessed type int dword_1325688C; // 13256894: using guessed type __int16 word_13256894; //----- (006951F0) -------------------------------------------------------- int __cdecl sub_6951F0() { int v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+8h] [bp-1Ch]@4 int v3; // [sp+14h] [bp-10h]@3 int v4; // [sp+20h] [bp-4h]@1 sub_4C0FA0(&dword_13256898); v4 = 0; dword_13256898 = (int)&off_6EC8B0; dword_13256FD4 = 0; v0 = operator new(8u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_13256FD4 = (void *)v0; *(_DWORD *)v0 = 0; *(_DWORD *)(v0 + 4) = 0; *(_DWORD *)dword_13256FD4 = &dword_13256FD4; dword_13256FD8 = 0; dword_13256FDC = 0; dword_13256FE0 = 0; dword_13256FE4 = 0; word_13256FEC = 0; dword_13256898 = (int)&off_6EC8F0; return atexit(sub_69B530); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 6EC8F0: using guessed type int (__stdcall *off_6EC8F0)(int, int, int); // 13256898: using guessed type int dword_13256898; // 13256FD8: using guessed type int dword_13256FD8; // 13256FDC: using guessed type int dword_13256FDC; // 13256FE0: using guessed type int dword_13256FE0; // 13256FE4: using guessed type int dword_13256FE4; // 13256FEC: using guessed type __int16 word_13256FEC; //----- (006952D0) -------------------------------------------------------- int __cdecl sub_6952D0() { sub_5777F0((int)&dword_13256FF4, 1, 1); return atexit(sub_69B3E0); } // 13256FF4: using guessed type int dword_13256FF4; //----- (006952F0) -------------------------------------------------------- int __cdecl sub_6952F0() { return atexit(nullsub_276); } //----- (00695300) -------------------------------------------------------- int __cdecl sub_695300() { sub_583120((int)&unk_132577A0); dword_13257C6C = 0; return atexit(sub_69B600); } //----- (00695320) -------------------------------------------------------- int __cdecl sub_695320() { sub_583390(&dword_13258088); return atexit(sub_69B580); } // 13258088: using guessed type int dword_13258088; //----- (00695340) -------------------------------------------------------- int __cdecl sub_695340() { sub_639540((int)&unk_13257C80); return atexit(sub_69B570); } //----- (00695360) -------------------------------------------------------- int __cdecl sub_695360() { sub_639920((int)&dword_13258298); dword_13258298 = (int)&off_6EE110; word_132582D8 = 0; byte_132582DA = 0; sub_639920((int)&dword_132582DC); dword_132582DC = (int)&off_6EE118; dword_1325831C = 0; byte_13258320 = 0; return atexit(sub_69B6D0); } // 6EE110: using guessed type int (__thiscall *off_6EE110)(void *, char); // 6EE118: using guessed type int (__thiscall *off_6EE118)(void *, char); // 13258298: using guessed type int dword_13258298; // 132582D8: using guessed type __int16 word_132582D8; // 132582DA: using guessed type char byte_132582DA; // 132582DC: using guessed type int dword_132582DC; // 1325831C: using guessed type int dword_1325831C; // 13258320: using guessed type char byte_13258320; //----- (006953F0) -------------------------------------------------------- int __cdecl sub_6953F0() { return atexit(nullsub_277); } //----- (00695400) -------------------------------------------------------- int __cdecl sub_695400() { return atexit(nullsub_278); } //----- (00695410) -------------------------------------------------------- int __cdecl sub_695410() { return atexit(nullsub_279); } //----- (00695420) -------------------------------------------------------- int __cdecl sub_695420() { return atexit(nullsub_280); } //----- (00695430) -------------------------------------------------------- int __cdecl sub_695430() { sub_639920((int)&dword_132587D8); dword_132587D8 = (int)&off_6F08E8; memset(&unk_13258818, 0, 0x3Eu); dword_13258858 = 0; word_1325885C = 0; return atexit(sub_69B8C0); } // 6F08E8: using guessed type int (__thiscall *off_6F08E8)(void *, char); // 132587D8: using guessed type int dword_132587D8; // 13258858: using guessed type int dword_13258858; // 1325885C: using guessed type __int16 word_1325885C; //----- (00695480) -------------------------------------------------------- int __cdecl sub_695480() { sub_639920((int)&dword_13258868); dword_13258868 = (int)&off_6F0CF0; memset(&unk_132588A8, 0, 0x56u); dword_13258958 = 0; return atexit(sub_69BB20); } // 6F0CF0: using guessed type int (__thiscall *off_6F0CF0)(void *, char); // 13258868: using guessed type int dword_13258868; //----- (006954C0) -------------------------------------------------------- int __cdecl sub_6954C0() { return atexit(sub_69B900); } //----- (006954D0) -------------------------------------------------------- int __cdecl sub_6954D0() { sub_417030(&unk_13258864); return atexit(sub_69B8E0); } //----- (006954F0) -------------------------------------------------------- int __cdecl sub_6954F0() { return atexit(sub_69B910); } //----- (00695500) -------------------------------------------------------- int __cdecl sub_695500() { return atexit(sub_69B920); } //----- (00695510) -------------------------------------------------------- int __cdecl sub_695510() { return atexit(sub_69B930); } //----- (00695520) -------------------------------------------------------- int __cdecl sub_695520() { return atexit(sub_69B940); } //----- (00695530) -------------------------------------------------------- int __cdecl sub_695530() { return atexit(sub_69B950); } //----- (00695540) -------------------------------------------------------- int __cdecl sub_695540() { return atexit(sub_69B960); } //----- (00695550) -------------------------------------------------------- int __cdecl sub_695550() { return atexit(sub_69B970); } //----- (00695560) -------------------------------------------------------- int __cdecl sub_695560() { return atexit(sub_69B980); } //----- (00695570) -------------------------------------------------------- int __cdecl sub_695570() { return atexit(sub_69B990); } //----- (00695580) -------------------------------------------------------- int __cdecl sub_695580() { return atexit(sub_69B9A0); } //----- (00695590) -------------------------------------------------------- int __cdecl sub_695590() { return atexit(sub_69B9B0); } //----- (006955A0) -------------------------------------------------------- int __cdecl sub_6955A0() { return atexit(sub_69B9C0); } //----- (006955B0) -------------------------------------------------------- int __cdecl sub_6955B0() { return atexit(sub_69B9D0); } //----- (006955C0) -------------------------------------------------------- int __cdecl sub_6955C0() { return atexit(sub_69B9E0); } //----- (006955D0) -------------------------------------------------------- int __cdecl sub_6955D0() { return atexit(sub_69B9F0); } //----- (006955E0) -------------------------------------------------------- int __cdecl sub_6955E0() { return atexit(sub_69BA00); } //----- (006955F0) -------------------------------------------------------- int __cdecl sub_6955F0() { return atexit(sub_69BA10); } //----- (00695600) -------------------------------------------------------- int __cdecl sub_695600() { return atexit(sub_69BA20); } //----- (00695610) -------------------------------------------------------- int __cdecl sub_695610() { return atexit(sub_69BA30); } //----- (00695620) -------------------------------------------------------- int __cdecl sub_695620() { return atexit(sub_69BA40); } //----- (00695630) -------------------------------------------------------- int __cdecl sub_695630() { return atexit(sub_69BA50); } //----- (00695640) -------------------------------------------------------- int __cdecl sub_695640() { return atexit(sub_69BA60); } //----- (00695650) -------------------------------------------------------- int __cdecl sub_695650() { return atexit(sub_69BA70); } //----- (00695660) -------------------------------------------------------- int __cdecl sub_695660() { return atexit(sub_69BB50); } //----- (00695670) -------------------------------------------------------- int __cdecl sub_695670() { return atexit(sub_69BA80); } //----- (00695680) -------------------------------------------------------- int __cdecl sub_695680() { return atexit(sub_69BA90); } //----- (00695690) -------------------------------------------------------- int __cdecl sub_695690() { return atexit(sub_69BAA0); } //----- (006956A0) -------------------------------------------------------- int __cdecl sub_6956A0() { sub_623D50(&unk_13258860); return atexit(sub_69B8F0); } //----- (006956C0) -------------------------------------------------------- int __cdecl sub_6956C0() { return atexit(sub_69BAB0); } //----- (006956D0) -------------------------------------------------------- int __cdecl sub_6956D0() { return atexit(sub_69BAC0); } //----- (006956E0) -------------------------------------------------------- int __cdecl sub_6956E0() { return atexit(sub_69BAD0); } //----- (006956F0) -------------------------------------------------------- int __cdecl sub_6956F0() { return atexit(sub_69BAE0); } //----- (00695700) -------------------------------------------------------- int __cdecl sub_695700() { return atexit(sub_69BAF0); } //----- (00695710) -------------------------------------------------------- int __cdecl sub_695710() { return atexit(sub_69BB00); } //----- (00695720) -------------------------------------------------------- int __cdecl sub_695720() { return atexit(sub_69BB10); } //----- (00695730) -------------------------------------------------------- int __cdecl sub_695730() { strncpy(byte_86AD60, byte_6A492E, 0x14u); dword_86AD74 = -1; dword_86AD88 = 0; dword_86AD84 = 0; dword_86AD80 = 0; dword_86AD7C = 0; *(_DWORD *)dword_86AD78 = 0; strncpy(dword_86AD78, byte_6A492E, 0x14u); return atexit(nullsub_281); } // 86AD74: using guessed type int dword_86AD74; // 86AD7C: using guessed type int dword_86AD7C; // 86AD80: using guessed type int dword_86AD80; // 86AD84: using guessed type int dword_86AD84; // 86AD88: using guessed type int dword_86AD88; //----- (00695790) -------------------------------------------------------- int __cdecl sub_695790() { return atexit(sub_69BBC0); } //----- (006957A0) -------------------------------------------------------- int __cdecl sub_6957A0() { return atexit(sub_69BBD0); } //----- (006957B0) -------------------------------------------------------- int __cdecl sub_6957B0() { return atexit(sub_69BBE0); } //----- (006957C0) -------------------------------------------------------- int __cdecl sub_6957C0() { return atexit(sub_69BBF0); } //----- (006957D0) -------------------------------------------------------- int __cdecl sub_6957D0() { return atexit(sub_69BC00); } //----- (006957E0) -------------------------------------------------------- int __cdecl sub_6957E0() { return atexit(sub_69BC10); } //----- (006957F0) -------------------------------------------------------- int __cdecl sub_6957F0() { return atexit(sub_69BC20); } //----- (00695800) -------------------------------------------------------- int __cdecl sub_695800() { return atexit(sub_69BC30); } //----- (00695810) -------------------------------------------------------- int __cdecl sub_695810() { return atexit(sub_69BC40); } //----- (00695820) -------------------------------------------------------- int __cdecl sub_695820() { return atexit(sub_69BC50); } //----- (00695830) -------------------------------------------------------- int __cdecl sub_695830() { return atexit(sub_69BC60); } //----- (00695840) -------------------------------------------------------- int __cdecl sub_695840() { sub_5A73F0(&unk_13258988); return atexit(sub_69BC70); } //----- (00695860) -------------------------------------------------------- int __cdecl sub_695860() { sub_632670((int)dword_1325CEF0); return atexit(sub_69C010); } //----- (00695880) -------------------------------------------------------- int __cdecl sub_695880() { sub_626B20((int)&unk_1325CFD8); return atexit(sub_69C020); } //----- (006958A0) -------------------------------------------------------- int __cdecl sub_6958A0() { sub_626B20((int)&unk_132668A0); return atexit(sub_69C030); } //----- (006958C0) -------------------------------------------------------- int __cdecl sub_6958C0() { sub_5B66C0((int)&unk_133595F0); return atexit(sub_69BC90); } //----- (006958E0) -------------------------------------------------------- int __cdecl sub_6958E0() { sub_633640(&unk_1325D028, 0); return atexit(sub_69BCA0); } //----- (00695900) -------------------------------------------------------- int __cdecl sub_695900() { sub_5CA7E0((int)&unk_13267D80); return atexit(sub_69BCB0); } //----- (00695920) -------------------------------------------------------- int __cdecl sub_695920() { sub_626B20((int)&unk_1325CBC8); return atexit(sub_69BCC0); } //----- (00695940) -------------------------------------------------------- int __cdecl sub_695940() { sub_626B20((int)&unk_1325CA78); return atexit(sub_69BCD0); } //----- (00695960) -------------------------------------------------------- int __cdecl sub_695960() { sub_626B20((int)&unk_132668E0); return atexit(sub_69BCE0); } //----- (00695980) -------------------------------------------------------- int __cdecl sub_695980() { sub_626B20((int)&unk_132669A0); return atexit(sub_69BCF0); } //----- (006959A0) -------------------------------------------------------- int __cdecl sub_6959A0() { sub_626B20((int)&unk_1325CE70); return atexit(sub_69BD00); } //----- (006959C0) -------------------------------------------------------- int __cdecl sub_6959C0() { sub_626B20((int)&unk_1325CCB0); return atexit(sub_69BD10); } //----- (006959E0) -------------------------------------------------------- int __cdecl sub_6959E0() { sub_626B20((int)&unk_13266A70); return atexit(sub_69BD20); } //----- (00695A00) -------------------------------------------------------- int __cdecl sub_695A00() { sub_5CF620(&unk_13357DA8); return atexit(sub_69BD30); } //----- (00695A20) -------------------------------------------------------- int __cdecl sub_695A20() { sub_630D70(&unk_13359670); return atexit(sub_69BD40); } //----- (00695A40) -------------------------------------------------------- int __cdecl sub_695A40() { sub_626B20((int)&unk_13359038); return atexit(sub_69BD50); } //----- (00695A60) -------------------------------------------------------- int __cdecl sub_695A60() { sub_626B20((int)&unk_13359350); return atexit(sub_69BD60); } //----- (00695A80) -------------------------------------------------------- int __cdecl sub_695A80() { sub_626B20((int)&unk_1325CF78); return atexit(sub_69BD70); } //----- (00695AA0) -------------------------------------------------------- int __cdecl sub_695AA0() { sub_626B20((int)&unk_1325CF38); return atexit(sub_69BD80); } //----- (00695AC0) -------------------------------------------------------- int __cdecl sub_695AC0() { sub_626B20((int)&unk_13267D40); return atexit(sub_69BD90); } //----- (00695AE0) -------------------------------------------------------- int __cdecl sub_695AE0() { sub_626B20((int)&unk_1325CB78); return atexit(sub_69BDA0); } //----- (00695B00) -------------------------------------------------------- int __cdecl sub_695B00() { sub_626B20((int)&unk_133592D0); return atexit(sub_69BDB0); } //----- (00695B20) -------------------------------------------------------- int __cdecl sub_695B20() { sub_626B20((int)&unk_133591C0); return atexit(sub_69BDC0); } //----- (00695B40) -------------------------------------------------------- int __cdecl sub_695B40() { sub_626B20((int)&unk_13266960); return atexit(sub_69BDD0); } //----- (00695B60) -------------------------------------------------------- int __cdecl sub_695B60() { sub_5CF620(&unk_13266AB0); return atexit(sub_69BDE0); } //----- (00695B80) -------------------------------------------------------- int __cdecl sub_695B80() { sub_630D70(&unk_133594F0); return atexit(sub_69BDF0); } //----- (00695BA0) -------------------------------------------------------- int __cdecl sub_695BA0() { sub_626B20((int)&unk_13359630); return atexit(sub_69BE00); } //----- (00695BC0) -------------------------------------------------------- int __cdecl sub_695BC0() { sub_626B20((int)&unk_1325CCF0); return atexit(sub_69BE10); } //----- (00695BE0) -------------------------------------------------------- int __cdecl sub_695BE0() { sub_626B20((int)&unk_13359310); return atexit(sub_69BE20); } //----- (00695C00) -------------------------------------------------------- int __cdecl sub_695C00() { sub_626B20((int)&unk_13359078); return atexit(sub_69BE30); } //----- (00695C20) -------------------------------------------------------- int __cdecl sub_695C20() { sub_626B20((int)&unk_13266920); return atexit(sub_69BE40); } //----- (00695C40) -------------------------------------------------------- int __cdecl sub_695C40() { sub_626B20((int)&unk_13359138); return atexit(sub_69BE50); } //----- (00695C60) -------------------------------------------------------- int __cdecl sub_695C60() { sub_626B20((int)&unk_13359200); return atexit(sub_69BE60); } //----- (00695C80) -------------------------------------------------------- int __cdecl sub_695C80() { sub_626B20((int)&unk_133597E0); return atexit(sub_69BE70); } //----- (00695CA0) -------------------------------------------------------- int __cdecl sub_695CA0() { sub_626B20((int)&unk_13359290); return atexit(sub_69BE80); } //----- (00695CC0) -------------------------------------------------------- int __cdecl sub_695CC0() { sub_626B20((int)&unk_132669F0); return atexit(sub_69BE90); } //----- (00695CE0) -------------------------------------------------------- int __cdecl sub_695CE0() { sub_626B20((int)&unk_13359178); return atexit(sub_69BEA0); } //----- (00695D00) -------------------------------------------------------- int __cdecl sub_695D00() { sub_626B20((int)&unk_1325CC08); return atexit(sub_69BEB0); } //----- (00695D20) -------------------------------------------------------- int __cdecl sub_695D20() { sub_626B20((int)&unk_13266A30); return atexit(sub_69BEC0); } //----- (00695D40) -------------------------------------------------------- int __cdecl sub_695D40() { sub_626B20((int)&unk_133590B8); return atexit(sub_69BED0); } //----- (00695D60) -------------------------------------------------------- int __cdecl sub_695D60() { sub_626B20((int)&unk_13359390); return atexit(sub_69BEE0); } //----- (00695D80) -------------------------------------------------------- int __cdecl sub_695D80() { sub_626B20((int)&unk_133590F8); return atexit(sub_69BEF0); } //----- (00695DA0) -------------------------------------------------------- int __cdecl sub_695DA0() { sub_626B20((int)&unk_1325CEB0); return atexit(sub_69BF00); } //----- (00695DC0) -------------------------------------------------------- int __cdecl sub_695DC0() { sub_626B20((int)&unk_1325CE30); return atexit(sub_69BF10); } //----- (00695DE0) -------------------------------------------------------- int __cdecl sub_695DE0() { sub_4AFED0((int)&unk_1325CC48); return atexit(sub_69BF20); } //----- (00695E00) -------------------------------------------------------- int __cdecl sub_695E00() { sub_62BDF0((int)&unk_1325CFB8); return atexit(sub_69BF30); } //----- (00695E20) -------------------------------------------------------- int __cdecl sub_695E20() { Concurrency::details::_ReaderWriterLock::_ReaderWriterLock(dword_133591B8); return atexit(sub_69BF40); } // 5AB480: using guessed type int __thiscall Concurrency__details___ReaderWriterLock___ReaderWriterLock(_DWORD); //----- (00695E40) -------------------------------------------------------- int __cdecl sub_695E40() { sub_4BFB20((int)&unk_133593D0); return atexit(sub_69BF50); } //----- (00695E60) -------------------------------------------------------- int __cdecl sub_695E60() { sub_4CE3C0((int)dword_1325CC60); return atexit(sub_69BF60); } //----- (00695E80) -------------------------------------------------------- int __cdecl sub_695E80() { sub_5B66C0((int)&unk_13359770); return atexit(sub_69BF70); } //----- (00695EA0) -------------------------------------------------------- int __cdecl sub_695EA0() { unknown_libname_3(&unk_1325CFC8); return atexit(sub_69BF80); } // 625C30: using guessed type int __thiscall unknown_libname_3(_DWORD); //----- (00695EC0) -------------------------------------------------------- int __cdecl sub_695EC0() { sub_4666E0((int)&unk_133597D0); return atexit(sub_69BF90); } //----- (00695EE0) -------------------------------------------------------- int __cdecl sub_695EE0() { sub_4A1D10((int)&unk_133597B0); return atexit(sub_69BFA0); } //----- (00695F00) -------------------------------------------------------- int __cdecl sub_695F00() { sub_4666E0((int)&unk_1325CBB8); return atexit(sub_69BFB0); } //----- (00695F20) -------------------------------------------------------- int __cdecl sub_695F20() { sub_4666E0((int)&unk_1325D018); return atexit(sub_69BFC0); } //----- (00695F40) -------------------------------------------------------- int __cdecl sub_695F40() { sub_648950((int)&unk_133597C0); return atexit(sub_69BFD0); } //----- (00695F60) -------------------------------------------------------- int __cdecl sub_695F60() { sub_5C4830((int)&unk_1325CAB8); return atexit(sub_69BFE0); } //----- (00695F80) -------------------------------------------------------- int __cdecl sub_695F80() { sub_632170((int)&unk_13359240); return atexit(sub_69BFF0); } //----- (00695FA0) -------------------------------------------------------- int __cdecl sub_695FA0() { sub_43B4A0((int)&unk_1325CD30); return atexit(sub_69C000); } //----- (00695FC0) -------------------------------------------------------- int __cdecl sub_695FC0() { return atexit(nullsub_282); } //----- (00695FE0) -------------------------------------------------------- int __cdecl sub_695FE0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x14u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_132669E4 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_132669E4 + 1) = dword_132669E4; *((_DWORD *)dword_132669E4 + 2) = dword_132669E4; *((_BYTE *)dword_132669E4 + 16) = 1; *((_BYTE *)dword_132669E4 + 17) = 1; return atexit(sub_69C050); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00696060) -------------------------------------------------------- int __cdecl sub_696060() { dword_14D129D8 = timeGetTime(); dword_14D129EC = 0; byte_14D129F4 = 0; dword_14D129F0 = timeGetTime(); return atexit(nullsub_283); } // 14D129D8: using guessed type int dword_14D129D8; // 14D129EC: using guessed type int dword_14D129EC; // 14D129F0: using guessed type int dword_14D129F0; // 14D129F4: using guessed type char byte_14D129F4; //----- (00696090) -------------------------------------------------------- int __cdecl sub_696090() { return atexit(nullsub_284); } //----- (006960A0) -------------------------------------------------------- int __cdecl sub_6960A0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = aBalancelog[v0]; byte_14D15728[v0++] = v1; } while ( v1 ); dword_14D15828 = 0; sub_5A7CA0("BalanceLog"); byte_14D159AC = 1; return atexit(nullsub_285); } // 14D159AC: using guessed type char byte_14D159AC; //----- (006960E0) -------------------------------------------------------- int __cdecl sub_6960E0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "MobAggroLog"); fclose(v0); sub_5A7CA0("MobAggroLog"); return atexit(nullsub_286); } //----- (00696130) -------------------------------------------------------- int __cdecl sub_696130() { return atexit(nullsub_287); } //----- (00696140) -------------------------------------------------------- int __cdecl sub_696140() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "SkillLog"); fclose(v0); sub_5A7CA0("SkillLog"); return atexit(nullsub_288); } //----- (00696190) -------------------------------------------------------- int __cdecl sub_696190() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F7400[v0]; byte_14D14D00[v0++] = v1; } while ( v1 ); dword_14D14E00 = 0; sub_5A7CA0(byte_6F7400); byte_14D14F84 = 1; return atexit(nullsub_289); } // 14D14F84: using guessed type char byte_14D14F84; //----- (006961D0) -------------------------------------------------------- int __cdecl sub_6961D0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PacketLog"); fclose(v0); sub_5A7CA0("PacketLog"); return atexit(nullsub_290); } //----- (00696220) -------------------------------------------------------- int __cdecl sub_696220() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "ZoneRingLinkLog"); fclose(v0); sub_5A7CA0("ZoneRingLinkLog"); return atexit(nullsub_291); } //----- (00696270) -------------------------------------------------------- int __cdecl sub_696270() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "MobRegenLog"); fclose(v0); sub_5A7CA0("MobRegenLog"); return atexit(nullsub_292); } //----- (006962C0) -------------------------------------------------------- int __cdecl sub_6962C0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "LoginLinkLog"); fclose(v0); sub_5A7CA0("LoginLinkLog"); return atexit(nullsub_293); } //----- (00696310) -------------------------------------------------------- int __cdecl sub_696310() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "ServiceLog"); fclose(v0); sub_5A7CA0("ServiceLog"); return atexit(nullsub_294); } //----- (00696360) -------------------------------------------------------- int __cdecl sub_696360() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "DisconnectLog"); fclose(v0); sub_5A7CA0("DisconnectLog"); return atexit(nullsub_295); } //----- (006963B0) -------------------------------------------------------- int __cdecl sub_6963B0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "DisconnectLog2"); fclose(v0); sub_5A7CA0("DisconnectLog2"); return atexit(nullsub_296); } //----- (00696400) -------------------------------------------------------- int __cdecl sub_696400() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "WMSPacketLog"); fclose(v0); sub_5A7CA0("WMSPacketLog"); return atexit(nullsub_297); } //----- (00696450) -------------------------------------------------------- int __cdecl sub_696450() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "LinkLog"); fclose(v0); sub_5A7CA0("LinkLog"); return atexit(nullsub_298); } //----- (006964A0) -------------------------------------------------------- int __cdecl sub_6964A0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "Abstate2WMS"); fclose(v0); sub_5A7CA0("Abstate2WMS"); return atexit(nullsub_299); } //----- (006964F0) -------------------------------------------------------- int __cdecl sub_6964F0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "GoldHillLog"); fclose(v0); sub_5A7CA0("GoldHillLog"); return atexit(nullsub_300); } //----- (00696540) -------------------------------------------------------- int __cdecl sub_696540() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "MapRelink"); fclose(v0); sub_5A7CA0("MapRelink"); return atexit(nullsub_301); } //----- (00696590) -------------------------------------------------------- int __cdecl sub_696590() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PassiveLog"); fclose(v0); sub_5A7CA0("PassiveLog"); return atexit(nullsub_302); } //----- (006965E0) -------------------------------------------------------- int __cdecl sub_6965E0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "FuncInitLog"); fclose(v0); sub_5A7CA0("FuncInitLog"); return atexit(nullsub_303); } //----- (00696630) -------------------------------------------------------- int __cdecl sub_696630() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = aChargeditemlog[v0]; byte_14D211E0[v0++] = v1; } while ( v1 ); dword_14D212E0 = 0; sub_5A7CA0("ChargedItemLog"); byte_14D21464 = 1; return atexit(nullsub_304); } // 14D21464: using guessed type char byte_14D21464; //----- (00696670) -------------------------------------------------------- int __cdecl sub_696670() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "TreasureBoxLog"); fclose(v0); sub_5A7CA0("TreasureBoxLog"); return atexit(nullsub_305); } //----- (006966C0) -------------------------------------------------------- int __cdecl sub_6966C0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PineScript"); fclose(v0); sub_5A7CA0("PineScript"); return atexit(nullsub_306); } //----- (00696710) -------------------------------------------------------- int __cdecl sub_696710() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "GuildwarLog"); fclose(v0); sub_5A7CA0("GuildwarLog"); return atexit(nullsub_307); } //----- (00696760) -------------------------------------------------------- int __cdecl sub_696760() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "GuildwarLog2"); fclose(v0); sub_5A7CA0("GuildwarLog2"); return atexit(nullsub_308); } //----- (006967B0) -------------------------------------------------------- int __cdecl sub_6967B0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "GuildwarLog3"); fclose(v0); sub_5A7CA0("GuildwarLog3"); return atexit(nullsub_309); } //----- (00696800) -------------------------------------------------------- int __cdecl sub_696800() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "CharClassBugLog"); fclose(v0); sub_5A7CA0("CharClassBugLog"); return atexit(nullsub_310); } //----- (00696850) -------------------------------------------------------- int __cdecl sub_696850() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "ChargedItemVanishLog"); fclose(v0); sub_5A7CA0("ChargedItemVanishLog"); return atexit(nullsub_311); } //----- (006968A0) -------------------------------------------------------- int __cdecl sub_6968A0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "HorseLog"); fclose(v0); sub_5A7CA0("HorseLog"); return atexit(nullsub_312); } //----- (006968F0) -------------------------------------------------------- int __cdecl sub_6968F0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "HPLog"); fclose(v0); sub_5A7CA0("HPLog"); return atexit(nullsub_313); } //----- (00696940) -------------------------------------------------------- int __cdecl sub_696940() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "AttackFailLog"); fclose(v0); sub_5A7CA0("AttackFailLog"); return atexit(nullsub_314); } //----- (00696990) -------------------------------------------------------- int __cdecl sub_696990() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "ScriptChase"); fclose(v0); sub_5A7CA0("ScriptChase"); return atexit(nullsub_315); } //----- (006969E0) -------------------------------------------------------- int __cdecl sub_6969E0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "SkillCastNotFinish"); fclose(v0); sub_5A7CA0("SkillCastNotFinish"); return atexit(nullsub_316); } //----- (00696A30) -------------------------------------------------------- int __cdecl sub_696A30() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "OpToolSockLog"); fclose(v0); sub_5A7CA0("OpToolSockLog"); return atexit(nullsub_317); } //----- (00696A80) -------------------------------------------------------- int __cdecl sub_696A80() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PartyErrorLog"); fclose(v0); sub_5A7CA0("PartyErrorLog"); return atexit(nullsub_318); } //----- (00696AD0) -------------------------------------------------------- int __cdecl sub_696AD0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "KQRewardLog"); fclose(v0); sub_5A7CA0("KQRewardLog"); return atexit(nullsub_319); } //----- (00696B20) -------------------------------------------------------- int __cdecl sub_696B20() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "DeadCheckLog"); fclose(v0); sub_5A7CA0("DeadCheckLog"); return atexit(nullsub_320); } //----- (00696B70) -------------------------------------------------------- int __cdecl sub_696B70() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "DropItemLog"); fclose(v0); sub_5A7CA0("DropItemLog"); return atexit(nullsub_321); } //----- (00696BC0) -------------------------------------------------------- int __cdecl sub_696BC0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "BriefChangeInBoothLog"); fclose(v0); sub_5A7CA0("BriefChangeInBoothLog"); return atexit(nullsub_322); } //----- (00696C10) -------------------------------------------------------- int __cdecl sub_696C10() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "AbStatKeepTimeLog"); fclose(v0); sub_5A7CA0("AbStatKeepTimeLog"); return atexit(nullsub_323); } //----- (00696C60) -------------------------------------------------------- int __cdecl sub_696C60() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "KQEntryLog"); fclose(v0); sub_5A7CA0("KQEntryLog"); return atexit(nullsub_324); } //----- (00696CB0) -------------------------------------------------------- int __cdecl sub_696CB0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "KQTournamentLog"); fclose(v0); sub_5A7CA0("KQTournamentLog"); return atexit(nullsub_325); } //----- (00696D00) -------------------------------------------------------- int __cdecl sub_696D00() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PlayerRegNumLog"); fclose(v0); sub_5A7CA0("PlayerRegNumLog"); return atexit(nullsub_326); } //----- (00696D50) -------------------------------------------------------- int __cdecl sub_696D50() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "HPCharge"); fclose(v0); sub_5A7CA0("HPCharge"); return atexit(nullsub_327); } //----- (00696DA0) -------------------------------------------------------- int __cdecl sub_696DA0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F7614[v0]; byte_14D133A0[v0++] = v1; } while ( v1 ); dword_14D134A0 = 0; sub_5A7CA0(byte_6F7614); byte_14D13624 = 1; return atexit(nullsub_328); } // 14D134A0: using guessed type int dword_14D134A0; // 14D13624: using guessed type char byte_14D13624; //----- (00696DE0) -------------------------------------------------------- int __cdecl sub_696DE0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "AttackImmortal"); fclose(v0); sub_5A7CA0("AttackImmortal"); return atexit(nullsub_329); } //----- (00696E30) -------------------------------------------------------- int __cdecl sub_696E30() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F7630[v0]; byte_13359B60[v0++] = v1; } while ( v1 ); dword_13359C60 = 0; sub_5A7CA0(byte_6F7630); byte_13359DE4 = 1; return atexit(nullsub_330); } // 13359DE4: using guessed type char byte_13359DE4; //----- (00696E70) -------------------------------------------------------- int __cdecl sub_696E70() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PartyInformLog"); fclose(v0); sub_5A7CA0("PartyInformLog"); return atexit(nullsub_331); } //----- (00696EC0) -------------------------------------------------------- int __cdecl sub_696EC0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "WMHRepairLog"); fclose(v0); sub_5A7CA0("WMHRepairLog"); return atexit(nullsub_332); } //----- (00696F10) -------------------------------------------------------- int __cdecl sub_696F10() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F7664[v0]; byte_133598D8[v0++] = v1; } while ( v1 ); dword_133599D8 = 0; sub_5A7CA0(byte_6F7664); byte_13359B5C = 1; return atexit(nullsub_333); } // 13359B5C: using guessed type char byte_13359B5C; //----- (00696F50) -------------------------------------------------------- int __cdecl sub_696F50() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "ItemRelocLog"); fclose(v0); sub_5A7CA0("ItemRelocLog"); return atexit(nullsub_334); } //----- (00696FA0) -------------------------------------------------------- int __cdecl sub_696FA0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "MobItemDropLog"); fclose(v0); sub_5A7CA0("MobItemDropLog"); return atexit(nullsub_335); } //----- (00696FF0) -------------------------------------------------------- int __cdecl sub_696FF0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "GuildWarRefreshLog"); fclose(v0); sub_5A7CA0("GuildWarRefreshLog"); return atexit(nullsub_336); } //----- (00697040) -------------------------------------------------------- int __cdecl sub_697040() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "PacketLengthOverLog"); fclose(v0); sub_5A7CA0("PacketLengthOverLog"); return atexit(nullsub_337); } //----- (00697090) -------------------------------------------------------- int __cdecl sub_697090() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F76C0[v0]; byte_14D14F88[v0++] = v1; } while ( v1 ); dword_14D15088 = 0; sub_5A7CA0(byte_6F76C0); byte_14D1520C = 1; return atexit(nullsub_338); } // 14D1520C: using guessed type char byte_14D1520C; //----- (006970D0) -------------------------------------------------------- int __cdecl sub_6970D0() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "HolyPromiseLog"); fclose(v0); sub_5A7CA0("HolyPromiseLog"); return atexit(nullsub_339); } //----- (00697120) -------------------------------------------------------- int __cdecl sub_697120() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F76E8[v0]; byte_14D15210[v0++] = v1; } while ( v1 ); dword_14D15310 = 0; sub_5A7CA0(byte_6F76E8); byte_14D15494 = 1; return atexit(nullsub_340); } // 14D15494: using guessed type char byte_14D15494; //----- (00697160) -------------------------------------------------------- int __cdecl sub_697160() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F76F8[v0]; byte_14D12E30[v0++] = v1; } while ( v1 ); dword_14D12F30 = 0; sub_5A7CA0(byte_6F76F8); byte_14D130B4 = 1; return atexit(nullsub_341); } // 14D130B4: using guessed type char byte_14D130B4; //----- (006971A0) -------------------------------------------------------- int __cdecl sub_6971A0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F770C[v0]; byte_14D15498[v0++] = v1; } while ( v1 ); dword_14D15598 = 0; sub_5A7CA0(byte_6F770C); byte_14D1571C = 1; return atexit(nullsub_342); } // 14D1571C: using guessed type char byte_14D1571C; //----- (006971E0) -------------------------------------------------------- int __cdecl sub_6971E0() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F7724[v0]; byte_14D16860[v0++] = v1; } while ( v1 ); dword_14D16960 = 0; sub_5A7CA0(byte_6F7724); byte_14D16AE4 = 1; return atexit(nullsub_343); } // 14D16AE4: using guessed type char byte_14D16AE4; //----- (00697220) -------------------------------------------------------- int __cdecl sub_697220() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F7734[v0]; byte_14D13118[v0++] = v1; } while ( v1 ); dword_14D13218 = 0; sub_5A7CA0(byte_6F7734); byte_14D1339C = 1; return atexit(nullsub_344); } // 14D1339C: using guessed type char byte_14D1339C; //----- (00697260) -------------------------------------------------------- int __cdecl sub_697260() { int v0; // eax@1 char v1; // cl@2 v0 = 0; do { v1 = byte_6F774C[v0]; byte_14D13630[v0++] = v1; } while ( v1 ); dword_14D13730 = 0; sub_5A7CA0(byte_6F774C); byte_14D138B4 = 1; return atexit(nullsub_345); } // 14D13730: using guessed type int dword_14D13730; // 14D138B4: using guessed type char byte_14D138B4; //----- (006972A0) -------------------------------------------------------- int __cdecl sub_6972A0() { sub_46CD90((int)&unk_14D138B8); return atexit(sub_69C490); } //----- (006972C0) -------------------------------------------------------- int __cdecl sub_6972C0() { return atexit(sub_69C550); } //----- (006972D0) -------------------------------------------------------- int __cdecl sub_6972D0() { sub_4B0600(&unk_14D12E2C); return atexit(sub_69C4A0); } //----- (006972F0) -------------------------------------------------------- int __cdecl sub_6972F0() { sub_5AFD00((int)&dword_13359DE8, 1000); return atexit(sub_69C560); } // 13359DE8: using guessed type int dword_13359DE8; //----- (00697310) -------------------------------------------------------- int __cdecl sub_697310() { sub_64B7A0((int)&unk_14D20370); return atexit(sub_69C4B0); } //----- (00697330) -------------------------------------------------------- int __cdecl sub_697330() { sub_63F5F0((int)&unk_14D159B0, -1); return atexit(sub_69C4C0); } //----- (00697350) -------------------------------------------------------- int __cdecl sub_697350() { sub_647E90(&dword_14D20890, (const char *)0xFFFFFFFF, 0); return atexit(sub_69C4D0); } // 14D20890: using guessed type int dword_14D20890; //----- (00697370) -------------------------------------------------------- int __cdecl sub_697370() { sub_4BEE40((int)&unk_13359F08); return atexit(sub_69C4E0); } //----- (00697390) -------------------------------------------------------- int __cdecl sub_697390() { sub_63D320((int)&unk_14D130B8); return atexit(sub_69C4F0); } //----- (006973B0) -------------------------------------------------------- int __cdecl sub_6973B0() { sub_5A9100(byte_14D16AE8); return atexit(sub_69C500); } //----- (006973D0) -------------------------------------------------------- int __cdecl sub_6973D0() { sub_5A4940(&unk_13359E08); return atexit(sub_69C510); } //----- (006973F0) -------------------------------------------------------- int __cdecl sub_6973F0() { _eh_vector_constructor_iterator_(&unk_14D16434, 0x108u, 4, (int)sub_5AC3D0, sub_5AC3E0); dword_14D16858 = 3; dword_14D16854 = 0; dword_14D16430 = 20; dword_14D16534 = 0; byte_14D16538 = 0; dword_14D1663C = 0; byte_14D16640 = 0; dword_14D16744 = 0; byte_14D16748 = 0; dword_14D1684C = 0; byte_14D16850 = 0; return atexit(sub_69C5F0); } // 14D16430: using guessed type int dword_14D16430; // 14D16534: using guessed type int dword_14D16534; // 14D16538: using guessed type char byte_14D16538; // 14D1663C: using guessed type int dword_14D1663C; // 14D16640: using guessed type char byte_14D16640; // 14D16744: using guessed type int dword_14D16744; // 14D16748: using guessed type char byte_14D16748; // 14D1684C: using guessed type int dword_14D1684C; // 14D16850: using guessed type char byte_14D16850; // 14D16854: using guessed type int dword_14D16854; // 14D16858: using guessed type int dword_14D16858; //----- (00697460) -------------------------------------------------------- int __cdecl sub_697460() { _eh_vector_constructor_iterator_(&unk_14D148D4, 0x108u, 4, (int)sub_5AC3F0, sub_5AC400); dword_14D14CF8 = 3; dword_14D14CF4 = 0; dword_14D148D0 = 600; dword_14D149D4 = 0; byte_14D149D8 = 0; dword_14D14ADC = 0; byte_14D14AE0 = 0; dword_14D14BE4 = 0; byte_14D14BE8 = 0; dword_14D14CEC = 0; byte_14D14CF0 = 0; return atexit(sub_69C610); } // 14D148D0: using guessed type int dword_14D148D0; // 14D149D4: using guessed type int dword_14D149D4; // 14D149D8: using guessed type char byte_14D149D8; // 14D14ADC: using guessed type int dword_14D14ADC; // 14D14AE0: using guessed type char byte_14D14AE0; // 14D14BE4: using guessed type int dword_14D14BE4; // 14D14BE8: using guessed type char byte_14D14BE8; // 14D14CEC: using guessed type int dword_14D14CEC; // 14D14CF0: using guessed type char byte_14D14CF0; // 14D14CF4: using guessed type int dword_14D14CF4; // 14D14CF8: using guessed type int dword_14D14CF8; //----- (006974D0) -------------------------------------------------------- int __cdecl sub_6974D0() { _eh_vector_constructor_iterator_(&unk_14D12A04, 0x108u, 4, (int)sub_5AC410, sub_5AC420); dword_14D12E28 = 3; dword_14D12E24 = 0; dword_14D12A00 = 20; dword_14D12B04 = 0; byte_14D12B08 = 0; dword_14D12C0C = 0; byte_14D12C10 = 0; dword_14D12D14 = 0; byte_14D12D18 = 0; dword_14D12E1C = 0; byte_14D12E20 = 0; return atexit(sub_69C630); } // 14D12A00: using guessed type int dword_14D12A00; // 14D12B04: using guessed type int dword_14D12B04; // 14D12B08: using guessed type char byte_14D12B08; // 14D12C0C: using guessed type int dword_14D12C0C; // 14D12C10: using guessed type char byte_14D12C10; // 14D12D14: using guessed type int dword_14D12D14; // 14D12D18: using guessed type char byte_14D12D18; // 14D12E1C: using guessed type int dword_14D12E1C; // 14D12E20: using guessed type char byte_14D12E20; // 14D12E24: using guessed type int dword_14D12E24; // 14D12E28: using guessed type int dword_14D12E28; //----- (00697540) -------------------------------------------------------- int __cdecl sub_697540() { strncpy(byte_14D2035C, "-", 0x14u); return atexit(nullsub_346); } //----- (00697560) -------------------------------------------------------- int __cdecl sub_697560() { sub_4B36E0(&unk_1335A9C0); return atexit(sub_69C530); } //----- (00697580) -------------------------------------------------------- int __cdecl sub_697580() { FILE *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n", "QuestLog"); fclose(v0); sub_5A7CA0("QuestLog"); return atexit(nullsub_347); } //----- (006975D0) -------------------------------------------------------- int __cdecl sub_6975D0() { sub_4241C0((int)&dword_86C050, "NPCAction", 9u); return atexit(sub_69CAF0); } //----- (006975F0) -------------------------------------------------------- int __cdecl sub_6975F0() { sub_4241C0((int)&dword_86C298, "NPCCondition", 0xCu); return atexit(sub_69CB20); } //----- (00697610) -------------------------------------------------------- int __cdecl sub_697610() { return atexit(sub_69CBE0); } //----- (00697620) -------------------------------------------------------- int __cdecl sub_697620() { return atexit(sub_69CB50); } //----- (00697630) -------------------------------------------------------- int __cdecl sub_697630() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x24u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D21478 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D21478 + 1) = dword_14D21478; *((_DWORD *)dword_14D21478 + 2) = dword_14D21478; *((_BYTE *)dword_14D21478 + 32) = 1; *((_BYTE *)dword_14D21478 + 33) = 1; return atexit(sub_69CC70); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006976B0) -------------------------------------------------------- int __cdecl sub_6976B0() { sub_4241C0((int)&dword_86C2F8, "Trigger", 7u); return atexit(sub_69CCD0); } //----- (006976D0) -------------------------------------------------------- int __cdecl sub_6976D0() { return atexit(sub_69CD00); } //----- (006976E0) -------------------------------------------------------- int __cdecl sub_6976E0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x24u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D214C0 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D214C0 + 1) = dword_14D214C0; *((_DWORD *)dword_14D214C0 + 2) = dword_14D214C0; *((_BYTE *)dword_14D214C0 + 32) = 1; *((_BYTE *)dword_14D214C0 + 33) = 1; return atexit(sub_69CD30); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697760) -------------------------------------------------------- int __cdecl sub_697760() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D214D8 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D214D8 + 1) = dword_14D214D8; *((_DWORD *)dword_14D214D8 + 2) = dword_14D214D8; *((_BYTE *)dword_14D214D8 + 20) = 1; *((_BYTE *)dword_14D214D8 + 21) = 1; return atexit(sub_69CD90); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006977E0) -------------------------------------------------------- int __cdecl sub_6977E0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D214E8 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D214E8 + 1) = dword_14D214E8; *((_DWORD *)dword_14D214E8 + 2) = dword_14D214E8; *((_BYTE *)dword_14D214E8 + 20) = 1; *((_BYTE *)dword_14D214E8 + 21) = 1; return atexit(sub_69CDF0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697860) -------------------------------------------------------- int __cdecl sub_697860() { sub_481C50((int)&dword_14D21508, 0x3E8u); return atexit(sub_69CE50); } //----- (006978C0) -------------------------------------------------------- int __cdecl sub_6978C0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D28288 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D28288 + 1) = dword_14D28288; *((_DWORD *)dword_14D28288 + 2) = dword_14D28288; *((_BYTE *)dword_14D28288 + 20) = 1; *((_BYTE *)dword_14D28288 + 21) = 1; return atexit(sub_69CF00); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697940) -------------------------------------------------------- int __cdecl sub_697940() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D28298 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D28298 + 1) = dword_14D28298; *((_DWORD *)dword_14D28298 + 2) = dword_14D28298; *((_BYTE *)dword_14D28298 + 20) = 1; *((_BYTE *)dword_14D28298 + 21) = 1; return atexit(sub_69CF60); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (006979C0) -------------------------------------------------------- int __cdecl sub_6979C0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D282A8 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D282A8 + 1) = dword_14D282A8; *((_DWORD *)dword_14D282A8 + 2) = dword_14D282A8; *((_BYTE *)dword_14D282A8 + 20) = 1; *((_BYTE *)dword_14D282A8 + 21) = 1; return atexit(sub_69CFC0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697A40) -------------------------------------------------------- int __cdecl sub_697A40() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D40978 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D40978 + 1) = dword_14D40978; *((_DWORD *)dword_14D40978 + 2) = dword_14D40978; *((_BYTE *)dword_14D40978 + 20) = 1; *((_BYTE *)dword_14D40978 + 21) = 1; return atexit(sub_69D090); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697AC0) -------------------------------------------------------- int __cdecl sub_697AC0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x20u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D40998 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D40998 + 1) = dword_14D40998; *((_DWORD *)dword_14D40998 + 2) = dword_14D40998; *((_BYTE *)dword_14D40998 + 28) = 1; *((_BYTE *)dword_14D40998 + 29) = 1; dword_14D409A4 = 0; return atexit(sub_69D0F0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 14D409A4: using guessed type int dword_14D409A4; //----- (00697B40) -------------------------------------------------------- int __cdecl sub_697B40() { return atexit(sub_69D1B0); } //----- (00697B50) -------------------------------------------------------- int __cdecl sub_697B50() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x28u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D40988 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D40988 + 1) = dword_14D40988; *((_DWORD *)dword_14D40988 + 2) = dword_14D40988; *((_BYTE *)dword_14D40988 + 36) = 1; *((_BYTE *)dword_14D40988 + 37) = 1; return atexit(sub_69D150); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697BD0) -------------------------------------------------------- int __cdecl sub_697BD0() { return atexit(nullsub_348); } //----- (00697BE0) -------------------------------------------------------- int __cdecl sub_697BE0() { return atexit(sub_69D230); } //----- (00697BF0) -------------------------------------------------------- int __cdecl sub_697BF0() { DNameNode::DNameNode(&dword_14D40AE0); dword_14D40AE0 = (int)&off_7000CC; return atexit(sub_69D240); } // 5D35C0: using guessed type int __thiscall DNameNode__DNameNode(_DWORD); // 7000CC: using guessed type int (__thiscall *off_7000CC)(void *, char); // 14D40AE0: using guessed type int dword_14D40AE0; //----- (00697C10) -------------------------------------------------------- int __cdecl sub_697C10() { return atexit(sub_69D2A0); } //----- (00697C20) -------------------------------------------------------- int __cdecl sub_697C20() { return atexit(sub_69D2E0); } //----- (00697C30) -------------------------------------------------------- int __cdecl sub_697C30() { sub_611EC0(&dword_14D41B28, (int)"GBReward.shn"); return atexit(sub_69D320); } // 14D41B28: using guessed type int dword_14D41B28; //----- (00697C50) -------------------------------------------------------- int __cdecl sub_697C50() { return atexit(sub_69D360); } //----- (00697C60) -------------------------------------------------------- int __cdecl sub_697C60() { void *v0; // edi@2 _eh_vector_constructor_iterator_(&unk_14D41B62, 0x18u, 20, (int)sub_650160, nullsub_2); if ( dword_14D41B48 != dword_14D41B4C ) { v0 = dword_14D41B48; memmove_0(dword_14D41B48, dword_14D41B4C, 0); dword_14D41B4C = v0; } dword_14D41B58 = 0; dword_14D41B5C = 0; dword_14D41D44 = 0; dword_14D41D48 = 0; return atexit(sub_69D3A0); } // 14D41B58: using guessed type int dword_14D41B58; // 14D41B5C: using guessed type int dword_14D41B5C; // 14D41D44: using guessed type int dword_14D41D44; // 14D41D48: using guessed type int dword_14D41D48; //----- (00697D10) -------------------------------------------------------- int __cdecl sub_697D10() { sub_620350((int)&unk_14D41E50); return atexit(sub_69D440); } //----- (00697D30) -------------------------------------------------------- int __cdecl sub_697D30() { _eh_vector_constructor_iterator_(&unk_14D41D90, 0x10u, 9, (int)sub_61F7B0, (void (__thiscall *)(void *))sub_61F750); dword_14D41E20 = 0; dword_14D41E24 = 0; dword_14D41E28 = 0; dword_14D41E30 = 0; dword_14D41E34 = 0; dword_14D41E38 = 0; dword_14D41E40 = 0; dword_14D41E44 = 0; dword_14D41E48 = 0; return atexit(sub_69D3F0); } // 14D41E20: using guessed type int dword_14D41E20; // 14D41E24: using guessed type int dword_14D41E24; // 14D41E28: using guessed type int dword_14D41E28; // 14D41E30: using guessed type int dword_14D41E30; // 14D41E34: using guessed type int dword_14D41E34; // 14D41E38: using guessed type int dword_14D41E38; // 14D41E40: using guessed type int dword_14D41E40; // 14D41E44: using guessed type int dword_14D41E44; // 14D41E48: using guessed type int dword_14D41E48; //----- (00697D90) -------------------------------------------------------- int __cdecl sub_697D90() { return atexit(sub_69D450); } //----- (00697DA0) -------------------------------------------------------- int __cdecl sub_697DA0() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x18u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D41FC4 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D41FC4 + 1) = dword_14D41FC4; *((_DWORD *)dword_14D41FC4 + 2) = dword_14D41FC4; *((_BYTE *)dword_14D41FC4 + 20) = 1; *((_BYTE *)dword_14D41FC4 + 21) = 1; return atexit(sub_69D4C0); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697E20) -------------------------------------------------------- int __cdecl sub_697E20() { sub_623BA0((int)&unk_14D41FD0); return atexit(sub_69D520); } //----- (00697E40) -------------------------------------------------------- int __cdecl sub_697E40() { sub_625F70(&dword_14D4207C, (int)"CollectCard.shn"); dword_14D4207C = (int)&off_70376C; dword_14D42098 = 0; dword_14D4209C = 0; dword_14D420A0 = 0; dword_14D420A8 = 0; return atexit(sub_69D530); } // 70376C: using guessed type int (*off_70376C)(); // 14D4207C: using guessed type int dword_14D4207C; // 14D42098: using guessed type int dword_14D42098; // 14D4209C: using guessed type int dword_14D4209C; // 14D420A0: using guessed type int dword_14D420A0; // 14D420A8: using guessed type int dword_14D420A8; //----- (00697E80) -------------------------------------------------------- int __cdecl sub_697E80() { sub_626100(&dword_14D42044); return atexit(sub_69D540); } // 14D42044: using guessed type int dword_14D42044; //----- (00697EA0) -------------------------------------------------------- int __cdecl sub_697EA0() { sub_626170(&dword_14D4200C); return atexit(sub_69D580); } // 14D4200C: using guessed type int dword_14D4200C; //----- (00697EC0) -------------------------------------------------------- int __cdecl sub_697EC0() { sub_6261E0(&dword_14D420AC, (int)"CollectCardMobGroup.shn"); return atexit(sub_69D5C0); } // 14D420AC: using guessed type int dword_14D420AC; //----- (00697EE0) -------------------------------------------------------- int __cdecl sub_697EE0() { return atexit(sub_69D600); } //----- (00697EF0) -------------------------------------------------------- int __cdecl sub_697EF0() { sub_626250(&dword_14D42028, (int)"CollectCardStarRate.shn"); return atexit(sub_69D640); } // 14D42028: using guessed type int dword_14D42028; //----- (00697F10) -------------------------------------------------------- int __cdecl sub_697F10() { sub_6262B0(&dword_14D42060, (int)"CollectCardReward.shn"); return atexit(sub_69D680); } // 14D42060: using guessed type int dword_14D42060; //----- (00697F30) -------------------------------------------------------- int __cdecl sub_697F30() { sub_626320(&dword_14D41FF0, (int)"CollectCardTitle.shn"); return atexit(sub_69D6C0); } // 14D41FF0: using guessed type int dword_14D41FF0; //----- (00697F50) -------------------------------------------------------- int __cdecl sub_697F50() { sub_62E1C0((int)&unk_14D420D8); return atexit(sub_69D700); } //----- (00697F70) -------------------------------------------------------- int __cdecl sub_697F70() { void *v0; // eax@1 int (__thiscall **v2)(void *, char); // [sp+0h] [bp-10h]@4 int v3; // [sp+Ch] [bp-4h]@3 v0 = (void *)operator new(0x30u); if ( !v0 ) { v3 = 0; std::exception::exception(&v3); v2 = &off_6A1FD4; _CxxThrowException(&v2, &unk_733E50); } dword_14D42D60 = v0; *(_DWORD *)v0 = v0; *((_DWORD *)dword_14D42D60 + 1) = dword_14D42D60; *((_DWORD *)dword_14D42D60 + 2) = dword_14D42D60; *((_BYTE *)dword_14D42D60 + 44) = 1; *((_BYTE *)dword_14D42D60 + 45) = 1; return atexit(sub_69D720); } // 6538F6: using guessed type _DWORD __stdcall std__exception__exception(_DWORD); // 653AD9: using guessed type _DWORD __stdcall _CxxThrowException(_DWORD, _DWORD); // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); //----- (00697FF0) -------------------------------------------------------- int __cdecl sub_697FF0() { return atexit(nullsub_349); } //----- (00698000) -------------------------------------------------------- int __cdecl sub_698000() { sub_6397A0(&unk_14D42DC0); return atexit(sub_69D790); } //----- (00698020) -------------------------------------------------------- int __cdecl sub_698020() { sub_63CB40((int)dword_1508B168); return atexit(sub_69D810); } //----- (00698040) -------------------------------------------------------- int __cdecl sub_698040() { dword_1508B2C0[0] = (int)sub_452C70; dword_1508B2C4 = (int)sub_452C70; dword_1508B2C8 = (int)sub_452C70; dword_1508B2CC = (int)sub_452C70; dword_1508B2D0 = (int)sub_452C70; dword_1508B2D4 = (int)sub_452C70; dword_1508B2D8 = (int)sub_452C70; dword_1508B2E8 = (int)sub_452C70; dword_1508B2EC = (int)sub_452C70; dword_1508B2F4 = (int)sub_452C70; dword_1508B2F8 = (int)sub_452C70; dword_1508B2FC = (int)sub_452C70; dword_1508B300 = (int)sub_452C70; dword_1508B2DC = (int)sub_63F700; dword_1508B2E0 = (int)sub_5A0850; dword_1508B2E4 = (int)sub_63F6F0; dword_1508B2F0 = (int)sub_63F710; return atexit(nullsub_350); } // 1508B2C0: using guessed type int dword_1508B2C0[]; // 1508B2C4: using guessed type int dword_1508B2C4; // 1508B2C8: using guessed type int dword_1508B2C8; // 1508B2CC: using guessed type int dword_1508B2CC; // 1508B2D0: using guessed type int dword_1508B2D0; // 1508B2D4: using guessed type int dword_1508B2D4; // 1508B2D8: using guessed type int dword_1508B2D8; // 1508B2DC: using guessed type int dword_1508B2DC; // 1508B2E0: using guessed type int dword_1508B2E0; // 1508B2E4: using guessed type int dword_1508B2E4; // 1508B2E8: using guessed type int dword_1508B2E8; // 1508B2EC: using guessed type int dword_1508B2EC; // 1508B2F0: using guessed type int dword_1508B2F0; // 1508B2F4: using guessed type int dword_1508B2F4; // 1508B2F8: using guessed type int dword_1508B2F8; // 1508B2FC: using guessed type int dword_1508B2FC; // 1508B300: using guessed type int dword_1508B300; //----- (006980D0) -------------------------------------------------------- int __cdecl sub_6980D0() { return atexit(nullsub_351); } //----- (006980E0) -------------------------------------------------------- int __cdecl sub_6980E0() { return atexit(nullsub_352); } //----- (006980F0) -------------------------------------------------------- int __cdecl sub_6980F0() { sub_639920((int)&dword_1508B308); dword_1508B308 = (int)&off_706B7C; memset(&unk_1508B348, 0, 0x34u); return atexit(sub_69D850); } // 706B7C: using guessed type int (__thiscall *off_706B7C)(void *, char); // 1508B308: using guessed type int dword_1508B308; //----- (00698120) -------------------------------------------------------- int __cdecl sub_698120() { _eh_vector_constructor_iterator_(&unk_1508B384, 0x24u, 5, (int)sub_4E47A0, nullsub_2); dword_1508B438 = 0; dword_1508B43C = 0; dword_1508B440 = 0; dword_1508B444 = 0; dword_1508B448 = -1; return atexit(sub_69D870); } // 1508B438: using guessed type int dword_1508B438; // 1508B43C: using guessed type int dword_1508B43C; // 1508B440: using guessed type int dword_1508B440; // 1508B444: using guessed type int dword_1508B444; // 1508B448: using guessed type int dword_1508B448; //----- (00698170) -------------------------------------------------------- int __cdecl sub_698170() { strncpy(dword_1508B48C, "index", 0x14u); return atexit(nullsub_353); } //----- (00698190) -------------------------------------------------------- int __cdecl sub_698190() { strncpy(dword_1508B4C8, "string", 0x14u); return atexit(nullsub_354); } //----- (006981B0) -------------------------------------------------------- int __cdecl sub_6981B0() { strncpy(dword_1508B4F0, "byte", 0x14u); return atexit(nullsub_355); } //----- (006981D0) -------------------------------------------------------- int __cdecl sub_6981D0() { strncpy(dword_1508B52C, "word", 0x14u); return atexit(nullsub_356); } //----- (006981F0) -------------------------------------------------------- int __cdecl sub_6981F0() { strncpy(dword_1508B4B4, "dwrd", 0x14u); return atexit(nullsub_357); } //----- (00698210) -------------------------------------------------------- int __cdecl sub_698210() { strncpy(dword_1508B4A0, "dword", 0x14u); return atexit(nullsub_358); } //----- (00698230) -------------------------------------------------------- int __cdecl sub_698230() { strncpy(dword_1508B57C, "comment", 0x14u); return atexit(nullsub_359); } //----- (00698250) -------------------------------------------------------- int __cdecl sub_698250() { strncpy(dword_1508B4DC, "brace", 0x14u); return atexit(nullsub_360); } //----- (00698270) -------------------------------------------------------- int __cdecl sub_698270() { strncpy(dword_1508B518, "ignore", 0x14u); return atexit(nullsub_361); } //----- (00698290) -------------------------------------------------------- int __cdecl sub_698290() { strncpy(dword_1508B540, "delimiter", 0x14u); return atexit(nullsub_362); } //----- (006982B0) -------------------------------------------------------- int __cdecl sub_6982B0() { strncpy(dword_1508B464, "exchange", 0x14u); return atexit(nullsub_363); } //----- (006982D0) -------------------------------------------------------- int __cdecl sub_6982D0() { strncpy(dword_1508B478, "table", 0x14u); return atexit(nullsub_364); } //----- (006982F0) -------------------------------------------------------- int __cdecl sub_6982F0() { strncpy(byte_1508B504, "columntype", 0x14u); return atexit(nullsub_365); } //----- (00698310) -------------------------------------------------------- int __cdecl sub_698310() { strncpy(byte_1508B590, "columnname", 0x14u); return atexit(nullsub_366); } //----- (00698330) -------------------------------------------------------- int __cdecl sub_698330() { strncpy(byte_1508B450, "record", 0x14u); return atexit(nullsub_367); } //----- (00698350) -------------------------------------------------------- int __cdecl sub_698350() { strncpy(byte_1508B568, "recordin", 0x14u); return atexit(nullsub_368); } //----- (00698370) -------------------------------------------------------- int __cdecl sub_698370() { strncpy(dword_1508B554, "end", 0x14u); return atexit(nullsub_369); } //----- (00698390) -------------------------------------------------------- int __cdecl sub_698390() { sub_644D60((int)&unk_86EC00, "Socket_IOCP_Write"); dword_86F124 = 1; InitializeCriticalSection(&CriticalSection); memset(&unk_86ED1C, 0, 0x400u); dword_86F11C = 0; dword_86F120 = 1; return atexit(sub_69D9A0); } // 86F120: using guessed type int dword_86F120; // 86F124: using guessed type int dword_86F124; //----- (006983F0) -------------------------------------------------------- int __cdecl sub_6983F0() { sub_644D60((int)&unk_86F128, "ZoneLinktoError"); dword_86F64C = 0; InitializeCriticalSection(&stru_86F22C); memset(&unk_86F244, 0, 0x400u); dword_86F644 = 0; dword_86F648 = 1; return atexit(sub_69D9C0); } // 86F648: using guessed type int dword_86F648; // 86F64C: using guessed type int dword_86F64C; //----- (00698450) -------------------------------------------------------- int __cdecl sub_698450() { sub_62EBC0(&dword_1508B5A8); dword_1508B5A8 = (int)&off_707130; return atexit(sub_69D9E0); } // 707130: using guessed type int (__thiscall *off_707130)(void *, char); // 1508B5A8: using guessed type int dword_1508B5A8; //----- (00698470) -------------------------------------------------------- int __cdecl sub_698470() { sub_639920((int)&dword_1508B988); memset(&unk_1508B9C8, 0, 0x42u); dword_1508B988 = (int)&off_707B00; return atexit(sub_69DA00); } // 707B00: using guessed type int (__thiscall *off_707B00)(void *, char); // 1508B988: using guessed type int dword_1508B988; //----- (006984A0) -------------------------------------------------------- int __cdecl sub_6984A0() { sub_639920((int)&dword_1508BA78); dword_1508BAB8 = 0; dword_1508BABC = 0; dword_1508BAC0 = 0; dword_1508BAC4 = 0; dword_1508BAC8 = 0; dword_1508BACC = 0; byte_1508BAD0 = 0; dword_1508BA78 = (int)&off_707B28; _eh_vector_constructor_iterator_(&unk_1508BAD4, 0x24u, 500, (int)sub_648DA0, sub_648DB0); return atexit(sub_69DA20); } // 707B28: using guessed type int (__thiscall *off_707B28)(void *, char); // 1508BA78: using guessed type int dword_1508BA78; // 1508BAB8: using guessed type int dword_1508BAB8; // 1508BABC: using guessed type int dword_1508BABC; // 1508BAC0: using guessed type int dword_1508BAC0; // 1508BAC4: using guessed type int dword_1508BAC4; // 1508BAC8: using guessed type int dword_1508BAC8; // 1508BACC: using guessed type int dword_1508BACC; // 1508BAD0: using guessed type char byte_1508BAD0; //----- (00698540) -------------------------------------------------------- int __cdecl sub_698540() { sub_639920((int)&dword_1508BA10); dword_1508BA50 = 0; dword_1508BA54 = 0; dword_1508BA58 = 0; dword_1508BA5C = 0; dword_1508BA60 = 0; dword_1508BA64 = 0; dword_1508BA68 = 0; dword_1508BA6C = 0; dword_1508BA70 = 0; dword_1508BA74 = 0; dword_1508BA10 = (int)&off_707C30; return atexit(sub_69DAA0); } // 707C30: using guessed type int (__thiscall *off_707C30)(void *, char); // 1508BA10: using guessed type int dword_1508BA10; // 1508BA50: using guessed type int dword_1508BA50; // 1508BA54: using guessed type int dword_1508BA54; // 1508BA58: using guessed type int dword_1508BA58; // 1508BA5C: using guessed type int dword_1508BA5C; // 1508BA60: using guessed type int dword_1508BA60; // 1508BA64: using guessed type int dword_1508BA64; // 1508BA68: using guessed type int dword_1508BA68; // 1508BA6C: using guessed type int dword_1508BA6C; // 1508BA70: using guessed type int dword_1508BA70; // 1508BA74: using guessed type int dword_1508BA74; //----- (006985A0) -------------------------------------------------------- int __cdecl sub_6985A0() { sub_6432E0((int)&unk_150A0980); return atexit(sub_69DAC0); } //----- (006985C0) -------------------------------------------------------- int __cdecl sub_6985C0() { sub_6432E0((int)&unk_15090128); return atexit(sub_69DAD0); } //----- (006985E0) -------------------------------------------------------- int __cdecl sub_6985E0() { sub_639540((int)&unk_150B11D8); _eh_vector_constructor_iterator_(&unk_150B15DC, 0x10854u, 64, (int)sub_63AB40, sub_63AB50); return atexit(sub_69DAE0); } //----- (00698650) -------------------------------------------------------- int __cdecl sub_698650() { _eh_vector_constructor_iterator_(dword_154D4808, 0x808u, 16, (int)sub_651560, nullsub_2); return atexit(sub_69DB40); } // 154D4808: using guessed type int dword_154D4808[]; //----- (00698680) -------------------------------------------------------- int __cdecl sub_698680() { int result; // eax@1 signed int v1; // ecx@1 result = (int)dword_154DC888; v1 = 15; do { *(_DWORD *)result = 0; *(_DWORD *)(result + 4) = 0; result += 8; --v1; } while ( v1 >= 0 ); return result; } // 154DC888: using guessed type int dword_154DC888[]; //----- (0069869C) -------------------------------------------------------- int __cdecl sub_69869C() { std::_Init_locks::_Init_locks(&unk_154DC970); return atexit(sub_69DB57); } // 6519C9: using guessed type int __thiscall std___Init_locks___Init_locks(_DWORD); //----- (006986B2) -------------------------------------------------------- int __cdecl sub_6986B2() { return atexit((void (__cdecl *)())sub_69DB6B); } //----- (006986BE) -------------------------------------------------------- int __cdecl sub_6986BE() { return atexit(sub_69DB61); } //----- (006986CA) -------------------------------------------------------- int __cdecl sub_6986CA() { return atexit(sub_69DB75); } //----- (006986D6) -------------------------------------------------------- int __cdecl sub_6986D6() { return atexit(sub_69DB80); } //----- (006986E2) -------------------------------------------------------- int __cdecl sub_6986E2() { return atexit(sub_69DB8B); } //----- (006986EE) -------------------------------------------------------- int __cdecl sub_6986EE() { std::_Init_locks::_Init_locks(&unk_154DCB18); return atexit(sub_69DB96); } // 6519C9: using guessed type int __thiscall std___Init_locks___Init_locks(_DWORD); //----- (00698704) -------------------------------------------------------- int __cdecl sub_698704() { return atexit(sub_69DBA0); } //----- (00698720) -------------------------------------------------------- void __cdecl sub_698720() { sub_402780((int)&unk_873DB0); } //----- (00698730) -------------------------------------------------------- int (**__cdecl sub_698730())() { int (**result)(); // eax@1 result = &off_69EE3C; dword_873A28[104] = &off_69EE3C; dword_873A28[103] = &off_69EE3C; dword_873A28[102] = &off_69EE3C; dword_873A28[101] = &off_69EE3C; dword_873A28[100] = &off_69EE3C; dword_873A28[99] = &off_69EE3C; dword_873A28[98] = &off_69EE3C; dword_873A28[97] = &off_69EE3C; dword_873A28[96] = &off_69EE3C; dword_873A28[95] = &off_69EE3C; dword_873A28[94] = &off_69EE3C; dword_873A28[93] = &off_69EE3C; dword_873A28[92] = &off_69EE3C; dword_873A28[91] = &off_69EE3C; dword_873A28[90] = &off_69EE3C; dword_873A28[89] = &off_69EE3C; dword_873A28[88] = &off_69EE3C; dword_873A28[87] = &off_69EE3C; dword_873A28[86] = &off_69EE3C; dword_873A28[85] = &off_69EE3C; dword_873A28[84] = &off_69EE3C; dword_873A28[83] = &off_69EE3C; dword_873A28[82] = &off_69EE3C; dword_873A28[81] = &off_69EE3C; dword_873A28[80] = &off_69EE3C; dword_873A28[79] = &off_69EE3C; dword_873A28[78] = &off_69EE3C; dword_873A28[77] = &off_69EE3C; dword_873A28[76] = &off_69EE3C; dword_873A28[75] = &off_69EE3C; dword_873A28[74] = &off_69EE3C; dword_873A28[73] = &off_69EE3C; dword_873A28[72] = &off_69EE3C; dword_873A28[71] = &off_69EE3C; dword_873A28[70] = &off_69EE3C; dword_873A28[69] = &off_69EE3C; dword_873A28[68] = &off_69EE3C; dword_873A28[67] = &off_69EE3C; dword_873A28[66] = &off_69EE3C; dword_873A28[65] = &off_69EE3C; dword_873A28[64] = &off_69EE3C; dword_873A28[63] = &off_69EE3C; dword_873A28[62] = &off_69EE3C; dword_873A28[61] = &off_69EE3C; dword_873A28[60] = &off_69EE3C; dword_873A28[59] = &off_69EE3C; dword_873A28[58] = &off_69EE3C; dword_873A28[57] = &off_69EE3C; dword_873A28[56] = &off_69EE3C; dword_873A28[55] = &off_69EE3C; dword_873A28[54] = &off_69EE3C; dword_873A28[53] = &off_69EE3C; dword_873A28[52] = &off_69EE3C; dword_873A28[51] = &off_69EE3C; dword_873A28[50] = &off_69EE3C; dword_873A28[49] = &off_69EE3C; dword_873A28[48] = &off_69EE3C; dword_873A28[47] = &off_69EE3C; dword_873A28[46] = &off_69EE3C; dword_873A28[45] = &off_69EE3C; dword_873A28[44] = &off_69EE3C; dword_873A28[43] = &off_69EE3C; dword_873A28[42] = &off_69EE3C; dword_873A28[41] = &off_69EE3C; dword_873A28[40] = &off_69EE3C; dword_873A28[39] = &off_69EE3C; dword_873A28[38] = &off_69EE3C; dword_873A28[37] = &off_69EE3C; dword_873A28[36] = &off_69EE3C; dword_873A28[35] = &off_69EE3C; dword_873A28[34] = &off_69EE3C; dword_873A28[33] = &off_69EE3C; dword_873A28[32] = &off_69EE3C; dword_873A28[31] = &off_69EE3C; dword_873A28[30] = &off_69EE3C; dword_873A28[29] = &off_69EE3C; dword_873A28[28] = &off_69EE3C; dword_873A28[27] = &off_69EE3C; dword_873A28[26] = &off_69EE3C; dword_873A28[25] = &off_69EE3C; dword_873A28[24] = &off_69EE3C; dword_873A28[23] = &off_69EE3C; dword_873A28[22] = &off_69EE3C; dword_873A28[21] = &off_69EE3C; dword_873A28[20] = &off_69EE3C; dword_873A28[19] = &off_69EE3C; dword_873A28[18] = &off_69EE3C; dword_873A28[17] = &off_69EE3C; dword_873A28[16] = &off_69EE3C; dword_873A28[15] = &off_69EE3C; dword_873A28[14] = &off_69EE3C; dword_873A28[13] = &off_69EE3C; dword_873A28[12] = &off_69EE3C; dword_873A28[11] = &off_69EE3C; dword_873A28[10] = &off_69EE3C; dword_873A28[9] = &off_69EE3C; dword_873A28[8] = &off_69EE3C; dword_873A28[7] = &off_69EE3C; dword_873A28[6] = &off_69EE3C; dword_873A28[5] = &off_69EE3C; dword_873A28[4] = &off_69EE3C; dword_873A28[3] = &off_69EE3C; dword_873A28[2] = &off_69EE3C; dword_873A28[1] = &off_69EE3C; dword_873A28[0] = &off_69EE3C; return result; } // 69EE3C: using guessed type int (*off_69EE3C)(); //----- (00698740) -------------------------------------------------------- void __cdecl sub_698740() { dword_8770A4 = (int)&off_6A1D60; sub_639940((int)&dword_8770A4); } // 6A1D60: using guessed type int (__thiscall *off_6A1D60)(void *, char); // 8770A4: using guessed type int dword_8770A4; //----- (00698760) -------------------------------------------------------- void __cdecl sub_698760() { sub_416990((int)&unk_877138); } //----- (00698770) -------------------------------------------------------- void __cdecl sub_698770() { if ( dword_878768 ) { sub_4180D0((int)dword_878768, dword_87876C); operator delete(dword_878768); } dword_878768 = 0; dword_87876C = 0; dword_878770 = 0; } // 87876C: using guessed type int dword_87876C; // 878770: using guessed type int dword_878770; //----- (006987D0) -------------------------------------------------------- void __cdecl sub_6987D0() { if ( dword_878758 ) { sub_4180D0((int)dword_878758, dword_87875C); operator delete(dword_878758); } dword_878758 = 0; dword_87875C = 0; dword_878760 = 0; } // 87875C: using guessed type int dword_87875C; // 878760: using guessed type int dword_878760; //----- (00698840) -------------------------------------------------------- void __cdecl sub_698840() { nullsub_2(&unk_87B218); } //----- (00698850) -------------------------------------------------------- void __cdecl sub_698850() { dword_878A00 = (int)&off_6A2684; _LN21(&unk_878A18, 0x28u, 256, nullsub_2); dword_878A00 = (int)&off_6A2518; if ( dword_878A08 ) sub_6530A4((void *)dword_878A08); } // 6A2518: using guessed type int (__thiscall *off_6A2518)(void *, char); // 6A2684: using guessed type int (__thiscall *off_6A2684)(void *, char); // 878A00: using guessed type int dword_878A00; // 878A08: using guessed type int dword_878A08; //----- (006988D0) -------------------------------------------------------- void __cdecl sub_6988D0() { off_749680 = (int (__stdcall **)(int, int))off_6A5464; } // 6A5464: using guessed type int (*off_6A5464[2])(); // 749680: using guessed type int (__stdcall **off_749680)(int, int); //----- (006988E0) -------------------------------------------------------- void __cdecl sub_6988E0() { off_749714[0] = (int (__stdcall *)(int, int))off_6A5464; } // 6A5464: using guessed type int (*off_6A5464[2])(); // 749714: using guessed type int (__stdcall *off_749714[2])(int, int); //----- (006988F0) -------------------------------------------------------- void __cdecl sub_6988F0() { off_749718 = (int (__stdcall **)(int, int))off_6A5464; } // 6A5464: using guessed type int (*off_6A5464[2])(); // 749718: using guessed type int (__stdcall **off_749718)(int, int); //----- (00698980) -------------------------------------------------------- void __cdecl sub_698980() { dword_87B278 = (int)&off_6A7058; _LN21(&unk_87B290, 0xE0u, 1024, (void (__thiscall *)(void *))sub_434760); dword_87B278 = (int)&off_6A7008; if ( dword_87B280 ) sub_6530A4((void *)dword_87B280); } // 6A7008: using guessed type int (__thiscall *off_6A7008)(void *, char); // 6A7058: using guessed type int (__thiscall *off_6A7058)(void *, char); // 87B278: using guessed type int dword_87B278; // 87B280: using guessed type int dword_87B280; //----- (00698A00) -------------------------------------------------------- void __cdecl sub_698A00() { if ( dword_87B254 ) operator delete(dword_87B254); dword_87B254 = 0; dword_87B258 = 0; dword_87B25C = 0; } // 87B258: using guessed type int dword_87B258; // 87B25C: using guessed type int dword_87B25C; //----- (00698A40) -------------------------------------------------------- void __cdecl sub_698A40() { if ( dword_87B264 ) operator delete(dword_87B264); dword_87B264 = 0; dword_87B268 = 0; dword_87B26C = 0; } // 87B268: using guessed type int dword_87B268; // 87B26C: using guessed type int dword_87B26C; //----- (00698A90) -------------------------------------------------------- int __cdecl sub_698A90() { return sub_438610((char *)&unk_8B32A8); } //----- (00698AA0) -------------------------------------------------------- void __cdecl sub_698AA0() { sub_438980(&dword_8B3298); operator delete(dword_8B3298); } //----- (00698AC0) -------------------------------------------------------- void __cdecl sub_698AC0() { sub_639560(&unk_8B36B8); if ( dword_8B36A8 ) operator delete(dword_8B36A8); dword_8B36A8 = 0; dword_8B36AC = 0; dword_8B36B0 = 0; } // 8B36AC: using guessed type int dword_8B36AC; // 8B36B0: using guessed type int dword_8B36B0; //----- (00698BC0) -------------------------------------------------------- void __cdecl sub_698BC0() { sub_4A79E0((int)&unk_8BAD6C); sub_4A79E0((int)&unk_8BA8A4); sub_4A79E0((int)&unk_8BA3CC); sub_4A79E0((int)&unk_8B9F04); sub_4A79E0((int)&unk_8B9A3C); } //----- (00698CC0) -------------------------------------------------------- int __cdecl sub_698CC0() { return _LN21(&unk_8B42A0, 0x170u, 29, nullsub_2); } //----- (00698CE0) -------------------------------------------------------- int __cdecl sub_698CE0() { return _LN21(&unk_8B6C60, 0x170u, 29, nullsub_2); } //----- (00698D30) -------------------------------------------------------- void __cdecl sub_698D30() { sub_449940((int)&unk_8BB3B0); } //----- (00698D60) -------------------------------------------------------- int __cdecl sub_698D60() { return _LN21(&unk_A9FCB4, 0x16u, 128, nullsub_2); } //----- (00698D80) -------------------------------------------------------- void __cdecl sub_698D80() { dword_AA0A90 = (int)&off_6ACB48; if ( dword_AA0AFC ) operator delete(dword_AA0AFC); dword_AA0A90 = (int)&off_6ACB40; sub_639940((int)&dword_AA0A90); } // 6ACB40: using guessed type int (__thiscall *off_6ACB40)(void *, char); // 6ACB48: using guessed type int (__thiscall *off_6ACB48)(void *, char); // AA0A90: using guessed type int dword_AA0A90; //----- (00698DB0) -------------------------------------------------------- void __cdecl sub_698DB0() { dword_AA0B08 = (int)&off_6ACB58; if ( dword_AA0BB8 ) operator delete(dword_AA0BB8); dword_AA0B08 = (int)&off_6ACB50; sub_639940((int)&dword_AA0B08); } // 6ACB50: using guessed type int (__thiscall *off_6ACB50)(void *, char); // 6ACB58: using guessed type int (__thiscall *off_6ACB58)(void *, char); // AA0B08: using guessed type int dword_AA0B08; //----- (00698DE0) -------------------------------------------------------- void __cdecl sub_698DE0() { dword_AA07C0 = (int)&off_6ACB68; if ( dword_AA0894 ) operator delete(dword_AA0894); dword_AA07C0 = (int)&off_6ACB60; sub_639940((int)&dword_AA07C0); } // 6ACB60: using guessed type int (__thiscall *off_6ACB60)(void *, char); // 6ACB68: using guessed type int (__thiscall *off_6ACB68)(void *, char); // AA07C0: using guessed type int dword_AA07C0; //----- (00698E10) -------------------------------------------------------- void __cdecl sub_698E10() { sub_6530A4((void *)dword_AA0BC4); } // AA0BC4: using guessed type int dword_AA0BC4; //----- (00698E20) -------------------------------------------------------- void __cdecl sub_698E20() { dword_AA08E8 = (int)&off_6ACB38; if ( dword_AA0A84 ) operator delete(dword_AA0A84); dword_AA08E8 = (int)&off_6ACB30; sub_639940((int)&dword_AA08E8); } // 6ACB30: using guessed type int (__thiscall *off_6ACB30)(void *, char); // 6ACB38: using guessed type int (__thiscall *off_6ACB38)(void *, char); // AA08E8: using guessed type int dword_AA08E8; //----- (00698E50) -------------------------------------------------------- void __cdecl sub_698E50() { dword_AA08A0 = (int)&off_6ACB70; sub_639940((int)&dword_AA08A0); } // 6ACB70: using guessed type int (__thiscall *off_6ACB70)(void *, char); // AA08A0: using guessed type int dword_AA08A0; //----- (00698EB0) -------------------------------------------------------- int __cdecl sub_698EB0() { dword_AEF4EC8 = (int)&off_6AD5E0; return _LN21(&unk_AA0EC8, 0x148A8u, 2048, sub_4B0610); } // 6AD5E0: using guessed type int (*off_6AD5E0)(); // AEF4EC8: using guessed type int dword_AEF4EC8; //----- (00698FD0) -------------------------------------------------------- void __cdecl sub_698FD0() { if ( dword_AF097EC ) operator delete(dword_AF097EC); dword_AF097EC = 0; dword_AF097F0 = 0; dword_AF097F4 = 0; } // AF097F0: using guessed type int dword_AF097F0; // AF097F4: using guessed type int dword_AF097F4; //----- (00699010) -------------------------------------------------------- int (__stdcall **__cdecl sub_699010())(int, int) { dword_AF09800 = (int)&off_6AEE14; return sub_5A4290((int)&dword_AF09800); } // 6AEE14: using guessed type int (__stdcall *off_6AEE14)(int); // AF09800: using guessed type int dword_AF09800; //----- (00699050) -------------------------------------------------------- void __cdecl sub_699050() { if ( dword_AF09A70 ) operator delete(dword_AF09A70); dword_AF09A70 = 0; dword_AF09A74 = 0; dword_AF09A78 = 0; } // AF09A74: using guessed type int dword_AF09A74; // AF09A78: using guessed type int dword_AF09A78; //----- (006990E0) -------------------------------------------------------- int __cdecl sub_6990E0() { return _LN21(&unk_CFCDB50, 0xCu, 32, Concurrency::details::TaskStack::_TaskStack); } //----- (00699130) -------------------------------------------------------- void __cdecl sub_699130() { sub_639560(&unk_CFCDD68); } //----- (00699150) -------------------------------------------------------- int __cdecl sub_699150() { return _LN21(&unk_CFCE178, 0x24u, 128, nullsub_2); } //----- (00699170) -------------------------------------------------------- void __cdecl sub_699170() { sub_4647A0((int)&unk_CFCF380); } //----- (00699190) -------------------------------------------------------- void __cdecl sub_699190() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_D020424; v2 = 0; sub_4676C0((int)&unk_D020420, (int)&v1, v0, (int)dword_D020424); operator delete(dword_D020424); } //----- (006991F0) -------------------------------------------------------- void __cdecl sub_6991F0() { dword_D020440 = (int)&off_6B174C; sub_639940((int)&dword_D020440); } // 6B174C: using guessed type int (__thiscall *off_6B174C)(void *, char); // D020440: using guessed type int dword_D020440; //----- (00699270) -------------------------------------------------------- void __cdecl sub_699270() { if ( dword_D0205D0 ) operator delete(dword_D0205D0); dword_D0204E0 = (int)&off_6B17B0; sub_639940((int)&dword_D0204E0); } // 6B17B0: using guessed type int (__thiscall *off_6B17B0)(void *, char); // D0204E0: using guessed type int dword_D0204E0; //----- (006992A0) -------------------------------------------------------- void __cdecl sub_6992A0() { if ( dword_D0207D0 ) operator delete(dword_D0207D0); dword_D0205D8 = (int)&off_6B17B8; sub_639940((int)&dword_D0205D8); } // 6B17B8: using guessed type int (__thiscall *off_6B17B8)(void *, char); // D0205D8: using guessed type int dword_D0205D8; //----- (006992F0) -------------------------------------------------------- void __cdecl sub_6992F0() { dword_D0207E8 = (int)&off_6B2EF4; _LN21(&unk_D020800, 0x20B8u, 500, sub_46F990); dword_D0207E8 = (int)&off_6B2EC8; if ( dword_D0207F0 ) sub_6530A4((void *)dword_D0207F0); } // 6B2EC8: using guessed type int (__thiscall *off_6B2EC8)(void *, char); // 6B2EF4: using guessed type int (__thiscall *off_6B2EF4)(void *, char); // D0207E8: using guessed type int dword_D0207E8; // D0207F0: using guessed type int dword_D0207F0; //----- (006993C0) -------------------------------------------------------- int __cdecl sub_6993C0() { return _LN21(&unk_D41EF80, 0x12u, 128, nullsub_2); } //----- (006993E0) -------------------------------------------------------- void __cdecl sub_6993E0() { dword_D41F888 = (int)&off_6B3A34; _LN21(&unk_D41F8A0, 0x1070u, 300, sub_473A80); dword_D41F888 = (int)&off_6B39B8; if ( dword_D41F890 ) sub_6530A4((void *)dword_D41F890); } // 6B39B8: using guessed type int (__thiscall *off_6B39B8)(void *, char); // 6B3A34: using guessed type int (__thiscall *off_6B3A34)(void *, char); // D41F888: using guessed type int dword_D41F888; // D41F890: using guessed type int dword_D41F890; //----- (00699480) -------------------------------------------------------- int __cdecl sub_699480() { return _LN21(byte_D554070, 0xDu, 32, nullsub_2); } //----- (006994A0) -------------------------------------------------------- int __cdecl sub_6994A0() { return _LN21(dword_D553BF0, 0x24u, 32, nullsub_2); } // D553BF0: using guessed type int dword_D553BF0[]; //----- (006994C0) -------------------------------------------------------- void __cdecl sub_6994C0() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_D554220; v2 = 0; sub_5CF580((int)&unk_D55421C, (int)&v1, v0, (int)dword_D554220); operator delete(dword_D554220); } //----- (00699560) -------------------------------------------------------- void __cdecl sub_699560() { if ( dword_D554230 ) operator delete(dword_D554230); dword_D554230 = 0; dword_D554234 = 0; dword_D554238 = 0; } // D554234: using guessed type int dword_D554234; // D554238: using guessed type int dword_D554238; //----- (006995D0) -------------------------------------------------------- void __cdecl sub_6995D0() { off_75A61C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A61C: using guessed type int (__stdcall *off_75A61C[26])(int, int, int); //----- (006995E0) -------------------------------------------------------- void __cdecl sub_6995E0() { off_75A620[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A620: using guessed type int (__stdcall *off_75A620[25])(int, int, int); //----- (006995F0) -------------------------------------------------------- void __cdecl sub_6995F0() { off_75A624[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A624: using guessed type int (__stdcall *off_75A624[24])(int, int, int); //----- (00699600) -------------------------------------------------------- void __cdecl sub_699600() { off_75A628[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A628: using guessed type int (__stdcall *off_75A628[23])(int, int, int); //----- (00699610) -------------------------------------------------------- void __cdecl sub_699610() { off_75A62C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A62C: using guessed type int (__stdcall *off_75A62C[22])(int, int, int); //----- (00699620) -------------------------------------------------------- void __cdecl sub_699620() { off_75A630[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A630: using guessed type int (__stdcall *off_75A630[21])(int, int, int); //----- (00699630) -------------------------------------------------------- void __cdecl sub_699630() { off_75A638[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A638: using guessed type int (__stdcall *off_75A638[19])(int, int, int); //----- (00699640) -------------------------------------------------------- void __cdecl sub_699640() { off_75A63C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A63C: using guessed type int (__stdcall *off_75A63C[18])(int, int, int); //----- (00699650) -------------------------------------------------------- void __cdecl sub_699650() { off_75A640[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A640: using guessed type int (__stdcall *off_75A640[17])(int, int, int); //----- (00699660) -------------------------------------------------------- void __cdecl sub_699660() { off_75A644[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A644: using guessed type int (__stdcall *off_75A644[16])(int, int, int); //----- (00699670) -------------------------------------------------------- void __cdecl sub_699670() { off_75A648[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A648: using guessed type int (__stdcall *off_75A648[15])(int, int, int); //----- (00699680) -------------------------------------------------------- void __cdecl sub_699680() { off_75A64C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A64C: using guessed type int (__stdcall *off_75A64C[14])(int, int, int); //----- (00699690) -------------------------------------------------------- void __cdecl sub_699690() { off_75A650[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A650: using guessed type int (__stdcall *off_75A650[13])(int, int, int); //----- (006996A0) -------------------------------------------------------- void __cdecl sub_6996A0() { off_75A654[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A654: using guessed type int (__stdcall *off_75A654[12])(int, int, int); //----- (006996B0) -------------------------------------------------------- void __cdecl sub_6996B0() { off_75A658[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A658: using guessed type int (__stdcall *off_75A658[11])(int, int, int); //----- (006996C0) -------------------------------------------------------- void __cdecl sub_6996C0() { off_75A65C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A65C: using guessed type int (__stdcall *off_75A65C[10])(int, int, int); //----- (006996D0) -------------------------------------------------------- void __cdecl sub_6996D0() { off_75A660[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A660: using guessed type int (__stdcall *off_75A660[9])(int, int, int); //----- (006996E0) -------------------------------------------------------- void __cdecl sub_6996E0() { off_75A664[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A664: using guessed type int (__stdcall *off_75A664[8])(int, int, int); //----- (006996F0) -------------------------------------------------------- void __cdecl sub_6996F0() { off_75A668[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A668: using guessed type int (__stdcall *off_75A668[7])(int, int, int); //----- (00699700) -------------------------------------------------------- void __cdecl sub_699700() { dword_D554E10 = (int)&off_6B6E2C; if ( dword_D554E18 ) sub_6530A4((void *)dword_D554E18); } // 6B6E2C: using guessed type int (__thiscall *off_6B6E2C)(void *, char); // D554E10: using guessed type int dword_D554E10; // D554E18: using guessed type int dword_D554E18; //----- (00699720) -------------------------------------------------------- void __cdecl sub_699720() { off_75A634[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A634: using guessed type int (__stdcall *off_75A634[20])(int, int, int); //----- (00699730) -------------------------------------------------------- void __cdecl sub_699730() { off_75A66C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A66C: using guessed type int (__stdcall *off_75A66C[6])(int, int, int); //----- (00699740) -------------------------------------------------------- void __cdecl sub_699740() { off_75A670[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A670: using guessed type int (__stdcall *off_75A670[5])(int, int, int); //----- (00699750) -------------------------------------------------------- void __cdecl sub_699750() { off_75A674[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A674: using guessed type int (__stdcall *off_75A674[4])(int, int, int); //----- (00699760) -------------------------------------------------------- void __cdecl sub_699760() { off_75A678[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A678: using guessed type int (__stdcall *off_75A678[3])(int, int, int); //----- (00699770) -------------------------------------------------------- void __cdecl sub_699770() { off_75A67C[0] = (int (__stdcall *)(int, int, int))&off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A67C: using guessed type int (__stdcall *off_75A67C[2])(int, int, int); //----- (00699780) -------------------------------------------------------- void __cdecl sub_699780() { off_75A680 = &off_6B6B8C; } // 6B6B8C: using guessed type int (__stdcall *off_6B6B8C)(int, int, int); // 75A680: using guessed type int (__stdcall **off_75A680)(int, int, int); //----- (006997C0) -------------------------------------------------------- void __cdecl sub_6997C0() { void *v0; // esi@2 if ( dword_D565B24 ) { v0 = (char *)dword_D565B24 - 4; _LN21(dword_D565B24, 0x190u, *((_DWORD *)dword_D565B24 - 1), nullsub_2); sub_6530A4(v0); } sub_643080(&unk_D5552D0); } //----- (00699840) -------------------------------------------------------- void __cdecl sub_699840() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_D5552C4; v2 = 0; sub_48EBD0((int)&unk_D5552C0, (int)&v1, v0, (int)dword_D5552C4); operator delete(dword_D5552C4); } //----- (006998A0) -------------------------------------------------------- void __cdecl sub_6998A0() { _LN21(&unk_D565F34, 0x20u, 1000, (void (__thiscall *)(void *))sub_64AA60); sub_639560(&unk_D565B30); } //----- (00699900) -------------------------------------------------------- void __cdecl sub_699900() { void *v0; // esi@1 int v1; // edi@2 v0 = dword_D56DC58; if ( dword_D56DC58 ) { v1 = dword_D56DC5C; if ( dword_D56DC58 != (void *)dword_D56DC5C ) { do { (**(void (__thiscall ***)(_DWORD, _DWORD))v0)(v0, 0); v0 = (char *)v0 + 76; } while ( v0 != (void *)v1 ); v0 = dword_D56DC58; } operator delete(v0); } dword_D56DC58 = 0; dword_D56DC5C = 0; dword_D56DC60 = 0; } // D56DC5C: using guessed type int dword_D56DC5C; // D56DC60: using guessed type int dword_D56DC60; //----- (00699960) -------------------------------------------------------- void __cdecl sub_699960() { void *v0; // esi@1 int v1; // edi@2 v0 = dword_D56DC48; if ( dword_D56DC48 ) { v1 = dword_D56DC4C; if ( dword_D56DC48 != (void *)dword_D56DC4C ) { do { (**(void (__thiscall ***)(_DWORD, _DWORD))v0)(v0, 0); v0 = (char *)v0 + 76; } while ( v0 != (void *)v1 ); v0 = dword_D56DC48; } operator delete(v0); } dword_D56DC48 = 0; dword_D56DC4C = 0; dword_D56DC50 = 0; } // D56DC4C: using guessed type int dword_D56DC4C; // D56DC50: using guessed type int dword_D56DC50; //----- (006999C0) -------------------------------------------------------- void __cdecl sub_6999C0() { void *v0; // esi@1 int v1; // edi@2 v0 = dword_D56DC38; if ( dword_D56DC38 ) { v1 = dword_D56DC3C; if ( dword_D56DC38 != (void *)dword_D56DC3C ) { do { (**(void (__thiscall ***)(_DWORD, _DWORD))v0)(v0, 0); v0 = (char *)v0 + 76; } while ( v0 != (void *)v1 ); v0 = dword_D56DC38; } operator delete(v0); } dword_D56DC38 = 0; dword_D56DC3C = 0; dword_D56DC40 = 0; } // D56DC3C: using guessed type int dword_D56DC3C; // D56DC40: using guessed type int dword_D56DC40; //----- (00699A60) -------------------------------------------------------- void __cdecl sub_699A60() { if ( dword_D61E064 ) { sub_493680((int)dword_D61E064, dword_D61E068); operator delete(dword_D61E064); } dword_D61E064 = 0; dword_D61E068 = 0; dword_D61E06C = 0; } // D61E068: using guessed type int dword_D61E068; // D61E06C: using guessed type int dword_D61E06C; //----- (00699B20) -------------------------------------------------------- int __cdecl sub_699B20() { return _LN21(&unk_D645270, 0x70u, 256, sub_4B0610); } //----- (00699B40) -------------------------------------------------------- void __cdecl sub_699B40() { dword_D61E090 = (int)&off_6B9F04; _LN21(&unk_D61E0A8, 0x42Cu, 150, sub_422B10); dword_D61E090 = (int)&off_6B96F8; if ( dword_D61E098 ) sub_6530A4((void *)dword_D61E098); } // 6B96F8: using guessed type int (__thiscall *off_6B96F8)(void *, char); // 6B9F04: using guessed type int (__thiscall *off_6B9F04)(void *, char); // D61E090: using guessed type int dword_D61E090; // D61E098: using guessed type int dword_D61E098; //----- (00699BC0) -------------------------------------------------------- void __cdecl sub_699BC0() { if ( dword_D64C510 ) { sub_492FC0((int)dword_D64C510, dword_D64C514); operator delete(dword_D64C510); } dword_D64C510 = 0; dword_D64C514 = 0; dword_D64C518 = 0; } // D64C514: using guessed type int dword_D64C514; // D64C518: using guessed type int dword_D64C518; //----- (00699C10) -------------------------------------------------------- void __cdecl sub_699C10() { dword_D64C520 = (int)&off_6BA520; sub_639940((int)&dword_D64C520); } // 6BA520: using guessed type int (__thiscall *off_6BA520)(void *, char); // D64C520: using guessed type int dword_D64C520; //----- (00699C60) -------------------------------------------------------- void __cdecl sub_699C60() { sub_643080(&unk_D64C6B8); } //----- (00699C90) -------------------------------------------------------- void __cdecl sub_699C90() { sub_49C530((int)&unk_D65CF10); } //----- (00699CA0) -------------------------------------------------------- void __cdecl sub_699CA0() { if ( dword_D711FE0[4] && dword_D711FE0[0] == (void *)1 ) { operator delete(dword_D711FE0[4]); dword_D711FE0[4] = 0; dword_D711FE0[0] = 0; } if ( dword_D711FE0[3003] ) { operator delete(dword_D711FE0[3003]); dword_D711FE0[3003] = 0; } } //----- (00699CB0) -------------------------------------------------------- int __cdecl sub_699CB0() { return _LN21(&unk_D65CFD8, 0xB50u, 256, sub_49D2B0); } //----- (00699CE0) -------------------------------------------------------- void __cdecl sub_699CE0() { dword_D73D090 = (int)&off_6BB5B4; sub_639940((int)&dword_D73D090); } // 6BB5B4: using guessed type int (__thiscall *off_6BB5B4)(void *, char); // D73D090: using guessed type int dword_D73D090; //----- (00699D00) -------------------------------------------------------- void __cdecl sub_699D00() { sub_49F560(&unk_D714FF8); } //----- (00699D10) -------------------------------------------------------- void __cdecl sub_699D10() { dword_D73D104 = (int)&off_6BBB78; sub_639940((int)&dword_D73D104); } // 6BBB78: using guessed type int (__thiscall *off_6BBB78)(void *, char); // D73D104: using guessed type int dword_D73D104; //----- (00699D30) -------------------------------------------------------- void __cdecl sub_699D30() { dword_D73D15C = (int)&off_6BBBC8; sub_639940((int)&dword_D73D15C); } // 6BBBC8: using guessed type int (__thiscall *off_6BBBC8)(void *, char); // D73D15C: using guessed type int dword_D73D15C; //----- (00699D60) -------------------------------------------------------- void __cdecl sub_699D60() { off_848CD0[0] = (int (__stdcall *)(int, int))&off_6BBE88; } // 6BBE88: using guessed type int (__stdcall *off_6BBE88)(int, int); // 848CD0: using guessed type int (__stdcall *off_848CD0[5])(int, int); //----- (00699D70) -------------------------------------------------------- void __cdecl sub_699D70() { off_848CD4[0] = (int (__stdcall *)(int, int))&off_6BBE88; } // 6BBE88: using guessed type int (__stdcall *off_6BBE88)(int, int); // 848CD4: using guessed type int (__stdcall *off_848CD4[4])(int, int); //----- (00699D80) -------------------------------------------------------- void __cdecl sub_699D80() { off_848CD8[0] = (int (__stdcall *)(int, int))&off_6BBE88; } // 6BBE88: using guessed type int (__stdcall *off_6BBE88)(int, int); // 848CD8: using guessed type int (__stdcall *off_848CD8[3])(int, int); //----- (00699D90) -------------------------------------------------------- void __cdecl sub_699D90() { off_848CDC[0] = (int (__stdcall *)(int, int))&off_6BBE88; } // 6BBE88: using guessed type int (__stdcall *off_6BBE88)(int, int); // 848CDC: using guessed type int (__stdcall *off_848CDC[2])(int, int); //----- (00699DA0) -------------------------------------------------------- void __cdecl sub_699DA0() { off_848CE0 = &off_6BBE88; } // 6BBE88: using guessed type int (__stdcall *off_6BBE88)(int, int); // 848CE0: using guessed type int (__stdcall **off_848CE0)(int, int); //----- (00699DB0) -------------------------------------------------------- int __cdecl sub_699DB0() { return _LN21(&unk_D740EB4, 0x1BECu, 400, sub_43B9E0); } //----- (00699DD0) -------------------------------------------------------- void __cdecl sub_699DD0() { sub_588340(&unk_D9FAF88); } //----- (00699DE0) -------------------------------------------------------- void __cdecl sub_699DE0() { int v0; // edi@1 int *v1; // ebx@2 int v2; // eax@3 bool v3; // zf@3 int v4; // eax@3 void *v5; // eax@4 int v6; // ecx@6 void *v7; // eax@7 int v8; // edx@9 void *v9; // eax@10 int v10; // eax@12 int v11; // eax@12 void *v12; // eax@13 int v13; // ecx@15 void *v14; // eax@16 int v15; // edx@18 void *v16; // eax@19 int v17; // eax@21 int v18; // eax@21 void *v19; // eax@22 v0 = 0; if ( dword_848F94 > 0 ) { v1 = &dword_848F94 + 1; do { v2 = *(&dword_848F94 + 2); v3 = *(_DWORD *)(v2 + 4 * v0) == (_DWORD)v1; v4 = v2 + 4 * v0; if ( !v3 ) { v5 = *(void **)v4; if ( v5 ) { *(_DWORD *)v5 = &off_6BDF1C; operator delete(v5); } } v6 = *(&dword_848F94 + 3); if ( *(int **)(v6 + 4 * v0) != v1 ) { v7 = *(void **)(v6 + 4 * v0); if ( v7 ) { *(_DWORD *)v7 = &off_6BDF1C; operator delete(v7); } } v8 = *(&dword_848F94 + 4); if ( *(int **)(v8 + 4 * v0) != v1 ) { v9 = *(void **)(v8 + 4 * v0); if ( v9 ) { *(_DWORD *)v9 = &off_6BDF1C; operator delete(v9); } } v10 = *(&dword_848F94 + 5); v3 = *(_DWORD *)(v10 + 4 * v0) == (_DWORD)v1; v11 = v10 + 4 * v0; if ( !v3 ) { v12 = *(void **)v11; if ( v12 ) { *(_DWORD *)v12 = &off_6BDF1C; operator delete(v12); } } v13 = *(&dword_848F94 + 6); if ( *(int **)(v13 + 4 * v0) != v1 ) { v14 = *(void **)(v13 + 4 * v0); if ( v14 ) { *(_DWORD *)v14 = &off_6BDF1C; operator delete(v14); } } v15 = *(&dword_848F94 + 7); if ( *(int **)(v15 + 4 * v0) != v1 ) { v16 = *(void **)(v15 + 4 * v0); if ( v16 ) { *(_DWORD *)v16 = &off_6BDF1C; operator delete(v16); } } v17 = *(&dword_848F94 + 8); v3 = *(_DWORD *)(v17 + 4 * v0) == (_DWORD)v1; v18 = v17 + 4 * v0; if ( !v3 ) { v19 = *(void **)v18; if ( v19 ) { *(_DWORD *)v19 = &off_6BDF1C; operator delete(v19); } } ++v0; } while ( v0 < dword_848F94 ); } operator delete((void *)*(&dword_848F94 + 2)); operator delete((void *)*(&dword_848F94 + 3)); operator delete((void *)*(&dword_848F94 + 4)); operator delete((void *)*(&dword_848F94 + 5)); operator delete((void *)*(&dword_848F94 + 6)); operator delete((void *)*(&dword_848F94 + 7)); operator delete((void *)*(&dword_848F94 + 8)); *(&dword_848F94 + 1) = (int)&off_6BDF1C; } // 6BDF1C: using guessed type int (*off_6BDF1C)(); // 848F94: using guessed type int dword_848F94; //----- (00699E00) -------------------------------------------------------- void __cdecl sub_699E00() { unk_D9FB7EC = &off_6BD53C; } // 6BD53C: using guessed type int (__thiscall *off_6BD53C)(void *, char); //----- (00699E20) -------------------------------------------------------- int __cdecl sub_699E20() { return sub_4B1D50(&unk_D9FB4B8); } //----- (00699E30) -------------------------------------------------------- void __cdecl sub_699E30() { if ( dword_D9FB7DC ) { sub_492FC0((int)dword_D9FB7DC, dword_D9FB7E0); operator delete(dword_D9FB7DC); } dword_D9FB7DC = 0; dword_D9FB7E0 = 0; dword_D9FB7E4 = 0; } // D9FB7E0: using guessed type int dword_D9FB7E0; // D9FB7E4: using guessed type int dword_D9FB7E4; //----- (00699E80) -------------------------------------------------------- void __cdecl sub_699E80() { if ( dword_D9FB808 ) operator delete(dword_D9FB808); dword_D9FB808 = 0; dword_D9FB80C = 0; dword_D9FB810 = 0; } // D9FB80C: using guessed type int dword_D9FB80C; // D9FB810: using guessed type int dword_D9FB810; //----- (00699EC0) -------------------------------------------------------- void __cdecl sub_699EC0() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_D9FB7FC; v2 = 0; sub_4B7BC0((int)&unk_D9FB7F8, (int)&v1, v0, (int)dword_D9FB7FC); operator delete(dword_D9FB7FC); } //----- (00699F20) -------------------------------------------------------- void __cdecl sub_699F20() { operator delete(dword_D9FB82C[1]); } //----- (00699F30) -------------------------------------------------------- void __cdecl sub_699F30() { off_8492C8[0] = (int (__stdcall *(*)[2])(int))off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 8492C8: using guessed type int (__stdcall *(*off_8492C8[6])[2])(int); //----- (00699F40) -------------------------------------------------------- void __cdecl sub_699F40() { off_8492CC[0] = (int (__stdcall *(*)[2])(int))off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 8492CC: using guessed type int (__stdcall *(*off_8492CC[5])[2])(int); //----- (00699F50) -------------------------------------------------------- void __cdecl sub_699F50() { off_8492D0[0] = (int (__stdcall *(*)[2])(int))off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 8492D0: using guessed type int (__stdcall *(*off_8492D0[4])[2])(int); //----- (00699F60) -------------------------------------------------------- void __cdecl sub_699F60() { off_8492D4[0] = (int (__stdcall *(*)[2])(int))off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 8492D4: using guessed type int (__stdcall *(*off_8492D4[3])[2])(int); //----- (00699F70) -------------------------------------------------------- void __cdecl sub_699F70() { off_8492D8[0] = (int (__stdcall *(*)[2])(int))off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 8492D8: using guessed type int (__stdcall *(*off_8492D8[2])[2])(int); //----- (00699F80) -------------------------------------------------------- void __cdecl sub_699F80() { off_8492DC = (int (__stdcall *(*)[2])(int))off_6BF7D4; } // 6BF7D4: using guessed type int (__stdcall *off_6BF7D4[2])(int); // 8492DC: using guessed type int (__stdcall *(*off_8492DC)[2])(int); //----- (00699F90) -------------------------------------------------------- void __cdecl sub_699F90() { if ( dword_D9FB83C ) operator delete(dword_D9FB83C); dword_D9FB83C = 0; dword_D9FB840 = 0; dword_D9FB844 = 0; } // D9FB840: using guessed type int dword_D9FB840; // D9FB844: using guessed type int dword_D9FB844; //----- (00699FD0) -------------------------------------------------------- void __cdecl sub_699FD0() { void *v0; // esi@1 int v1; // edi@2 v0 = dword_D9FB818; if ( dword_D9FB818 ) { v1 = dword_D9FB81C; if ( dword_D9FB818 != (void *)dword_D9FB81C ) { do { nullsub_2(v0); v0 = (char *)v0 + 12; } while ( v0 != (void *)v1 ); v0 = dword_D9FB818; } operator delete(v0); } dword_D9FB818 = 0; dword_D9FB81C = 0; dword_D9FB820 = 0; } // D9FB81C: using guessed type int dword_D9FB81C; // D9FB820: using guessed type int dword_D9FB820; //----- (0069A030) -------------------------------------------------------- void __cdecl sub_69A030() { if ( dword_D9FB84C ) operator delete(dword_D9FB84C); dword_D9FB84C = 0; dword_D9FB850 = 0; dword_D9FB854 = 0; } // D9FB850: using guessed type int dword_D9FB850; // D9FB854: using guessed type int dword_D9FB854; //----- (0069A130) -------------------------------------------------------- void __cdecl sub_69A130() { void **v0; // esi@1 v0 = (void **)&unk_D9FB918; do { if ( *v0 ) operator delete(*v0); ++v0; } while ( (signed int)v0 < (signed int)&dword_D9FBAA8 ); sub_639560(&unk_D9FBAAC); } // D9FBAA8: using guessed type int dword_D9FBAA8; //----- (0069A180) -------------------------------------------------------- void __cdecl sub_69A180() { off_849B3C = &off_6C15BC; } // 6C15BC: using guessed type int (__stdcall *off_6C15BC)(int, int, int); // 849B3C: using guessed type int (__stdcall **off_849B3C)(int, int, int); //----- (0069A190) -------------------------------------------------------- void __cdecl sub_69A190() { dword_D9FBEE0 = (int)&off_6C18BC; sub_639940((int)&dword_D9FBEE0); } // 6C18BC: using guessed type int (__thiscall *off_6C18BC)(void *, char); // D9FBEE0: using guessed type int dword_D9FBEE0; //----- (0069A1B0) -------------------------------------------------------- void __cdecl sub_69A1B0() { int v0; // eax@2 void *v1; // ST00_4@3 dword_D9FBF28[3072] = 0; do { v0 = dword_D9FBF28[3 * dword_D9FBF28[3072] + 1]; if ( v0 ) { v1 = (void *)dword_D9FBF28[3 * dword_D9FBF28[3072] + 1]; *(_DWORD *)v0 = &off_6C15BC; operator delete(v1); } ++dword_D9FBF28[3072]; } while ( dword_D9FBF28[3072] < 0x400u ); sub_643080(&dword_D9FBF28[3073]); } // 6C15BC: using guessed type int (__stdcall *off_6C15BC)(int, int, int); //----- (0069A1C0) -------------------------------------------------------- int (__stdcall **__cdecl sub_69A1C0())(int, int) { dword_DA0F928 = (int)&off_6C1EA4; return sub_5A4290((int)&dword_DA0F928); } // 6C1EA4: using guessed type int (__stdcall *off_6C1EA4)(int); // DA0F928: using guessed type int dword_DA0F928; //----- (0069A1E0) -------------------------------------------------------- void __cdecl sub_69A1E0() { dword_DA0F780 = (int)&off_6C1EFC; _LN21(&unk_DA0F798, 8u, 50, nullsub_2); dword_DA0F780 = (int)&off_6C1EB4; if ( dword_DA0F788 ) sub_6530A4((void *)dword_DA0F788); } // 6C1EB4: using guessed type int (__thiscall *off_6C1EB4)(void *, char); // 6C1EFC: using guessed type int (__thiscall *off_6C1EFC)(void *, char); // DA0F780: using guessed type int dword_DA0F780; // DA0F788: using guessed type int dword_DA0F788; //----- (0069A290) -------------------------------------------------------- void __cdecl sub_69A290() { sub_643080(&unk_DA120E0); } //----- (0069A2A0) -------------------------------------------------------- void __cdecl sub_69A2A0() { nullsub_2(&dword_DA230A4); } // DA230A4: using guessed type int dword_DA230A4; //----- (0069A2E0) -------------------------------------------------------- void __cdecl sub_69A2E0() { off_84BE04 = &off_6C357C; } // 6C357C: using guessed type int (__thiscall *off_6C357C)(void *, char); // 84BE04: using guessed type int (__thiscall **off_84BE04)(void *, char); //----- (0069A2F0) -------------------------------------------------------- int __cdecl sub_69A2F0() { return _LN21(&unk_DA230C0, 0x10u, 5764801, nullsub_2); } //----- (0069A310) -------------------------------------------------------- void __cdecl sub_69A310() { dword_13219CE0 = (int)&off_6C359C; if ( dword_13219CE8 ) sub_6530A4((void *)dword_13219CE8); } // 6C359C: using guessed type int (__thiscall *off_6C359C)(void *, char); // 13219CE0: using guessed type int dword_13219CE0; // 13219CE8: using guessed type int dword_13219CE8; //----- (0069A330) -------------------------------------------------------- void __cdecl sub_69A330() { dword_1321A340 = (int)&off_6C361C; dword_1321B604 = (int)&off_6C35C0; if ( dword_1321B60C ) sub_6530A4((void *)dword_1321B60C); dword_1321A340 = (int)&off_6C357C; } // 6C357C: using guessed type int (__thiscall *off_6C357C)(void *, char); // 6C35C0: using guessed type int (__thiscall *off_6C35C0)(void *, char); // 6C361C: using guessed type int (__thiscall *off_6C361C)(void *, char); // 1321A340: using guessed type int dword_1321A340; // 1321B604: using guessed type int dword_1321B604; // 1321B60C: using guessed type int dword_1321B60C; //----- (0069A380) -------------------------------------------------------- void __cdecl sub_69A380() { void **v0; // esi@1 off_84BFD0 = &off_6C58F0; v0 = (void **)dword_84BFD4; do { if ( *v0 != &unk_84CFD4 ) sub_6530A4(*v0); ++v0; } while ( (signed int)v0 < (signed int)&unk_84CFD4 ); } // 6C58F0: using guessed type int (__thiscall *off_6C58F0)(void *, char); // 84BFD0: using guessed type int (__thiscall **off_84BFD0)(void *, char); // 84BFD4: using guessed type int dword_84BFD4[]; //----- (0069A3B0) -------------------------------------------------------- void __cdecl sub_69A3B0() { void **v0; // esi@1 off_84D138 = &off_6C5964; v0 = (void **)dword_84D13C; do { if ( *v0 != &unk_84E13C ) sub_6530A4(*v0); ++v0; } while ( (signed int)v0 < (signed int)&unk_84E13C ); } // 6C5964: using guessed type int (__thiscall *off_6C5964)(void *, char); // 84D138: using guessed type int (__thiscall **off_84D138)(void *, char); // 84D13C: using guessed type int dword_84D13C[]; //----- (0069A3E0) -------------------------------------------------------- void __cdecl sub_69A3E0() { void **v0; // esi@1 off_84E298 = &off_6C596C; v0 = (void **)dword_84E29C; do { if ( *v0 != &unk_84F29C ) sub_6530A4(*v0); ++v0; } while ( (signed int)v0 < (signed int)&unk_84F29C ); } // 6C596C: using guessed type int (__thiscall *off_6C596C)(void *, char); // 84E298: using guessed type int (__thiscall **off_84E298)(void *, char); // 84E29C: using guessed type int dword_84E29C[]; //----- (0069A410) -------------------------------------------------------- void __cdecl sub_69A410() { void **v0; // esi@1 off_84F3F0 = &off_6C5974; v0 = (void **)dword_84F3F4; do { if ( *v0 != &unk_8503F4 ) sub_6530A4(*v0); ++v0; } while ( (signed int)v0 < (signed int)&unk_8503F4 ); } // 6C5974: using guessed type int (__thiscall *off_6C5974)(void *, char); // 84F3F0: using guessed type int (__thiscall **off_84F3F0)(void *, char); // 84F3F4: using guessed type int dword_84F3F4[]; //----- (0069A440) -------------------------------------------------------- void __cdecl sub_69A440() { void **v0; // esi@1 off_850550 = &off_6C597C; v0 = (void **)dword_850554; do { if ( *v0 != &unk_851554 ) sub_6530A4(*v0); ++v0; } while ( (signed int)v0 < (signed int)&unk_851554 ); } // 6C597C: using guessed type int (__thiscall *off_6C597C)(void *, char); // 850550: using guessed type int (__thiscall **off_850550)(void *, char); // 850554: using guessed type int dword_850554[]; //----- (0069A470) -------------------------------------------------------- void __cdecl sub_69A470() { void **v0; // esi@1 off_8516B0 = &off_6C5984; v0 = (void **)dword_8516B4; do { if ( *v0 != &unk_8526B4 ) sub_6530A4(*v0); ++v0; } while ( (signed int)v0 < (signed int)&unk_8526B4 ); } // 6C5984: using guessed type int (__thiscall *off_6C5984)(void *, char); // 8516B0: using guessed type int (__thiscall **off_8516B0)(void *, char); // 8516B4: using guessed type int dword_8516B4[]; //----- (0069A4D0) -------------------------------------------------------- void __cdecl sub_69A4D0() { off_853794[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 853794: using guessed type int (__stdcall *off_853794[26])(int, int, int); //----- (0069A4E0) -------------------------------------------------------- void __cdecl sub_69A4E0() { off_853798[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 853798: using guessed type int (__stdcall *off_853798[25])(int, int, int); //----- (0069A4F0) -------------------------------------------------------- void __cdecl sub_69A4F0() { off_85379C[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 85379C: using guessed type int (__stdcall *off_85379C[24])(int, int, int); //----- (0069A500) -------------------------------------------------------- void __cdecl sub_69A500() { off_8537A0[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537A0: using guessed type int (__stdcall *off_8537A0[23])(int, int, int); //----- (0069A510) -------------------------------------------------------- void __cdecl sub_69A510() { off_8537A4[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537A4: using guessed type int (__stdcall *off_8537A4[22])(int, int, int); //----- (0069A520) -------------------------------------------------------- void __cdecl sub_69A520() { off_8537A8[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537A8: using guessed type int (__stdcall *off_8537A8[21])(int, int, int); //----- (0069A530) -------------------------------------------------------- void __cdecl sub_69A530() { off_8537AC[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537AC: using guessed type int (__stdcall *off_8537AC[20])(int, int, int); //----- (0069A540) -------------------------------------------------------- void __cdecl sub_69A540() { off_8537B0[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537B0: using guessed type int (__stdcall *off_8537B0[19])(int, int, int); //----- (0069A550) -------------------------------------------------------- void __cdecl sub_69A550() { off_8537B4[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537B4: using guessed type int (__stdcall *off_8537B4[18])(int, int, int); //----- (0069A560) -------------------------------------------------------- void __cdecl sub_69A560() { off_8537B8[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537B8: using guessed type int (__stdcall *off_8537B8[17])(int, int, int); //----- (0069A570) -------------------------------------------------------- void __cdecl sub_69A570() { off_8537BC[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537BC: using guessed type int (__stdcall *off_8537BC[16])(int, int, int); //----- (0069A580) -------------------------------------------------------- void __cdecl sub_69A580() { off_8537C0[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537C0: using guessed type int (__stdcall *off_8537C0[15])(int, int, int); //----- (0069A590) -------------------------------------------------------- void __cdecl sub_69A590() { off_8537C4[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537C4: using guessed type int (__stdcall *off_8537C4[14])(int, int, int); //----- (0069A5A0) -------------------------------------------------------- void __cdecl sub_69A5A0() { off_8537C8[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537C8: using guessed type int (__stdcall *off_8537C8[13])(int, int, int); //----- (0069A5B0) -------------------------------------------------------- void __cdecl sub_69A5B0() { off_8537CC[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537CC: using guessed type int (__stdcall *off_8537CC[12])(int, int, int); //----- (0069A5C0) -------------------------------------------------------- void __cdecl sub_69A5C0() { off_8537D0[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537D0: using guessed type int (__stdcall *off_8537D0[11])(int, int, int); //----- (0069A5D0) -------------------------------------------------------- void __cdecl sub_69A5D0() { off_8537D4[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537D4: using guessed type int (__stdcall *off_8537D4[10])(int, int, int); //----- (0069A5E0) -------------------------------------------------------- void __cdecl sub_69A5E0() { off_8537D8[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537D8: using guessed type int (__stdcall *off_8537D8[9])(int, int, int); //----- (0069A5F0) -------------------------------------------------------- void __cdecl sub_69A5F0() { off_8537DC[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537DC: using guessed type int (__stdcall *off_8537DC[8])(int, int, int); //----- (0069A600) -------------------------------------------------------- void __cdecl sub_69A600() { off_8537E0[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537E0: using guessed type int (__stdcall *off_8537E0[7])(int, int, int); //----- (0069A610) -------------------------------------------------------- void __cdecl sub_69A610() { off_8537E4[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537E4: using guessed type int (__stdcall *off_8537E4[6])(int, int, int); //----- (0069A620) -------------------------------------------------------- void __cdecl sub_69A620() { off_8537E8[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537E8: using guessed type int (__stdcall *off_8537E8[5])(int, int, int); //----- (0069A630) -------------------------------------------------------- void __cdecl sub_69A630() { off_8537EC[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537EC: using guessed type int (__stdcall *off_8537EC[4])(int, int, int); //----- (0069A640) -------------------------------------------------------- void __cdecl sub_69A640() { off_8537F0[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537F0: using guessed type int (__stdcall *off_8537F0[3])(int, int, int); //----- (0069A650) -------------------------------------------------------- void __cdecl sub_69A650() { off_8537F4[0] = (int (__stdcall *)(int, int, int))&off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537F4: using guessed type int (__stdcall *off_8537F4[2])(int, int, int); //----- (0069A660) -------------------------------------------------------- void __cdecl sub_69A660() { off_8537F8 = &off_6C59E4; } // 6C59E4: using guessed type int (__stdcall *off_6C59E4)(int, int, int); // 8537F8: using guessed type int (__stdcall **off_8537F8)(int, int, int); //----- (0069A670) -------------------------------------------------------- void __cdecl sub_69A670() { int i; // esi@1 int v1; // eax@2 void *v2; // ST00_4@3 for ( i = 0; i < dword_1321B950; ++i ) { v1 = (int)*(&dword_1321B750 + i); if ( v1 ) { v2 = *(&dword_1321B750 + i); *(_DWORD *)v1 = &off_6C59A8; operator delete(v2); } } } // 6C59A8: using guessed type int (*off_6C59A8)(); // 1321B950: using guessed type int dword_1321B950; //----- (0069A6D0) -------------------------------------------------------- void __cdecl sub_69A6D0() { sub_639560(&unk_1321BBF8); } //----- (0069A6F0) -------------------------------------------------------- void __cdecl sub_69A6F0() { nullsub_2(&unk_1321D008); } //----- (0069A700) -------------------------------------------------------- void __cdecl sub_69A700() { nullsub_2(&unk_1321EB90); } //----- (0069A710) -------------------------------------------------------- void __cdecl sub_69A710() { nullsub_2(&unk_1321DE90); } //----- (0069A720) -------------------------------------------------------- void __cdecl sub_69A720() { nullsub_2(&unk_1321D908); } //----- (0069A730) -------------------------------------------------------- void __cdecl sub_69A730() { nullsub_2(&unk_1321C800); } //----- (0069A740) -------------------------------------------------------- void __cdecl sub_69A740() { nullsub_2(&unk_1321DB08); } //----- (0069A750) -------------------------------------------------------- void __cdecl sub_69A750() { nullsub_2(&unk_1321CC08); } //----- (0069A760) -------------------------------------------------------- void __cdecl sub_69A760() { nullsub_2(&unk_1321E090); } //----- (0069A770) -------------------------------------------------------- void __cdecl sub_69A770() { nullsub_2(&unk_1321E690); } //----- (0069A780) -------------------------------------------------------- void __cdecl sub_69A780() { nullsub_2(&unk_1321E990); } //----- (0069A790) -------------------------------------------------------- void __cdecl sub_69A790() { nullsub_2(&unk_1321D108); } //----- (0069A7A0) -------------------------------------------------------- void __cdecl sub_69A7A0() { nullsub_2(&unk_1321E290); } //----- (0069A7B0) -------------------------------------------------------- void __cdecl sub_69A7B0() { nullsub_2(&unk_1321ED90); } //----- (0069A7C0) -------------------------------------------------------- void __cdecl sub_69A7C0() { nullsub_2(&unk_1321D808); } //----- (0069A7D0) -------------------------------------------------------- void __cdecl sub_69A7D0() { nullsub_2(&unk_1321E190); } //----- (0069A7E0) -------------------------------------------------------- void __cdecl sub_69A7E0() { nullsub_2(&unk_1321C300); } //----- (0069A7F0) -------------------------------------------------------- void __cdecl sub_69A7F0() { nullsub_2(&unk_1321C900); } //----- (0069A800) -------------------------------------------------------- void __cdecl sub_69A800() { nullsub_2(&unk_1321C100); } //----- (0069A810) -------------------------------------------------------- void __cdecl sub_69A810() { nullsub_2(&unk_1321E890); } //----- (0069A820) -------------------------------------------------------- void __cdecl sub_69A820() { nullsub_2(&unk_1321C200); } //----- (0069A830) -------------------------------------------------------- void __cdecl sub_69A830() { nullsub_2(&unk_1321C600); } //----- (0069A840) -------------------------------------------------------- void __cdecl sub_69A840() { nullsub_2(&unk_1321EA90); } //----- (0069A850) -------------------------------------------------------- void __cdecl sub_69A850() { nullsub_2(&unk_1321F120); } //----- (0069A860) -------------------------------------------------------- void __cdecl sub_69A860() { nullsub_2(&unk_1321CE08); } //----- (0069A870) -------------------------------------------------------- void __cdecl sub_69A870() { nullsub_2(&unk_1321D708); } //----- (0069A880) -------------------------------------------------------- void __cdecl sub_69A880() { nullsub_2(&unk_1321CB08); } //----- (0069A890) -------------------------------------------------------- void __cdecl sub_69A890() { nullsub_2(&unk_1321DF90); } //----- (0069A8A0) -------------------------------------------------------- void __cdecl sub_69A8A0() { nullsub_2(&unk_1321E490); } //----- (0069A8B0) -------------------------------------------------------- void __cdecl sub_69A8B0() { nullsub_2(&unk_1321D608); } //----- (0069A8C0) -------------------------------------------------------- void __cdecl sub_69A8C0() { nullsub_2(&unk_1321D208); } //----- (0069A8D0) -------------------------------------------------------- void __cdecl sub_69A8D0() { nullsub_2(&unk_1321E590); } //----- (0069A8E0) -------------------------------------------------------- void __cdecl sub_69A8E0() { nullsub_2(&unk_1321F520); } //----- (0069A8F0) -------------------------------------------------------- void __cdecl sub_69A8F0() { nullsub_2(&unk_1321CF08); } //----- (0069A900) -------------------------------------------------------- void __cdecl sub_69A900() { nullsub_2(&unk_1321F420); } //----- (0069A910) -------------------------------------------------------- void __cdecl sub_69A910() { nullsub_2(&unk_1321D408); } //----- (0069A920) -------------------------------------------------------- void __cdecl sub_69A920() { nullsub_2(&unk_1321C400); } //----- (0069A930) -------------------------------------------------------- void __cdecl sub_69A930() { nullsub_2(&unk_1321D308); } //----- (0069A940) -------------------------------------------------------- void __cdecl sub_69A940() { nullsub_2(&unk_1321C000); } //----- (0069A950) -------------------------------------------------------- void __cdecl sub_69A950() { nullsub_2(&unk_1321DA08); } //----- (0069A960) -------------------------------------------------------- void __cdecl sub_69A960() { nullsub_2(&unk_1321CA08); } //----- (0069A970) -------------------------------------------------------- void __cdecl sub_69A970() { nullsub_2(&unk_1321E790); } //----- (0069A980) -------------------------------------------------------- void __cdecl sub_69A980() { nullsub_2(&unk_1321E390); } //----- (0069A990) -------------------------------------------------------- void __cdecl sub_69A990() { nullsub_2(&unk_1321C500); } //----- (0069A9A0) -------------------------------------------------------- void __cdecl sub_69A9A0() { nullsub_2(&unk_1321F320); } //----- (0069A9B0) -------------------------------------------------------- void __cdecl sub_69A9B0() { nullsub_2(&unk_1321EC90); } //----- (0069A9C0) -------------------------------------------------------- void __cdecl sub_69A9C0() { nullsub_2(&unk_1321C700); } //----- (0069A9D0) -------------------------------------------------------- void __cdecl sub_69A9D0() { nullsub_2(&unk_1321CD08); } //----- (0069A9E0) -------------------------------------------------------- void __cdecl sub_69A9E0() { nullsub_2(&unk_1321D508); } //----- (0069A9F0) -------------------------------------------------------- void __cdecl sub_69A9F0() { nullsub_2(&unk_1321F220); } //----- (0069AA20) -------------------------------------------------------- void __cdecl sub_69AA20() { sub_643080(&unk_1321F620); } //----- (0069AA40) -------------------------------------------------------- void __cdecl sub_69AA40() { off_8551DC[0] = (int (__stdcall *(*)[4])(int, int, int))off_6CBCC4; } // 6CBCC4: using guessed type int (__stdcall *off_6CBCC4[4])(int, int, int); // 8551DC: using guessed type int (__stdcall *(*off_8551DC[2])[4])(int, int, int); //----- (0069AA50) -------------------------------------------------------- void __cdecl sub_69AA50() { off_8551E0 = (int (__stdcall *(*)[4])(int, int, int))off_6CBCC4; } // 6CBCC4: using guessed type int (__stdcall *off_6CBCC4[4])(int, int, int); // 8551E0: using guessed type int (__stdcall *(*off_8551E0)[4])(int, int, int); //----- (0069AA60) -------------------------------------------------------- void __cdecl sub_69AA60() { off_8551E4[0] = (int (__stdcall *(*)[4])(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551E4: using guessed type int (__stdcall *(*off_8551E4[8])[4])(int); //----- (0069AA70) -------------------------------------------------------- void __cdecl sub_69AA70() { off_8551E8[0] = (int (__stdcall *(*)[4])(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551E8: using guessed type int (__stdcall *(*off_8551E8[7])[4])(int); //----- (0069AA80) -------------------------------------------------------- void __cdecl sub_69AA80() { off_8551EC[0] = (double (__stdcall *)(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551EC: using guessed type double (__stdcall *off_8551EC[2])(int); //----- (0069AA90) -------------------------------------------------------- void __cdecl sub_69AA90() { off_8551F0 = (double (__stdcall *)(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551F0: using guessed type double (__stdcall *off_8551F0)(int); //----- (0069AAA0) -------------------------------------------------------- void __cdecl sub_69AAA0() { off_8551F4[0] = (double (__stdcall *(*)[4])(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551F4: using guessed type double (__stdcall *(*off_8551F4[4])[4])(int); //----- (0069AAB0) -------------------------------------------------------- void __cdecl sub_69AAB0() { off_8551F8[0] = (double (__stdcall *(*)[4])(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551F8: using guessed type double (__stdcall *(*off_8551F8[3])[4])(int); //----- (0069AAC0) -------------------------------------------------------- void __cdecl sub_69AAC0() { off_8551FC[0] = (double (__stdcall *(*)[2])(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 8551FC: using guessed type double (__stdcall *(*off_8551FC[2])[2])(int); //----- (0069AAD0) -------------------------------------------------------- void __cdecl sub_69AAD0() { off_855200 = (double (__stdcall *(*)[4])(int))off_6CBEC4; } // 6CBEC4: using guessed type double (__stdcall *off_6CBEC4[4])(int); // 855200: using guessed type double (__stdcall *(*off_855200)[4])(int); //----- (0069AAF0) -------------------------------------------------------- void __cdecl sub_69AAF0() { sub_507CD0((int)&unk_13230E20); } //----- (0069AB20) -------------------------------------------------------- void __cdecl sub_69AB20() { off_855A10[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A10: using guessed type int (__stdcall *off_855A10[20])(int, int, int, int, int, int, int); //----- (0069AB30) -------------------------------------------------------- void __cdecl sub_69AB30() { off_855A14[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A14: using guessed type int (__stdcall *off_855A14[19])(int, int, int, int, int, int, int); //----- (0069AB40) -------------------------------------------------------- void __cdecl sub_69AB40() { off_855A18[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A18: using guessed type int (__stdcall *off_855A18[18])(int, int, int, int, int, int, int); //----- (0069AB50) -------------------------------------------------------- void __cdecl sub_69AB50() { off_855A1C[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A1C: using guessed type int (__stdcall *off_855A1C[17])(int, int, int, int, int, int, int); //----- (0069AB60) -------------------------------------------------------- void __cdecl sub_69AB60() { off_855A20[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A20: using guessed type int (__stdcall *off_855A20[16])(int, int, int, int, int, int, int); //----- (0069AB70) -------------------------------------------------------- void __cdecl sub_69AB70() { off_855A24[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A24: using guessed type int (__stdcall *off_855A24[15])(int, int, int, int, int, int, int); //----- (0069AB80) -------------------------------------------------------- void __cdecl sub_69AB80() { off_855A28[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A28: using guessed type int (__stdcall *off_855A28[14])(int, int, int, int, int, int, int); //----- (0069AB90) -------------------------------------------------------- void __cdecl sub_69AB90() { off_855A2C[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A2C: using guessed type int (__stdcall *off_855A2C[13])(int, int, int, int, int, int, int); //----- (0069ABA0) -------------------------------------------------------- void __cdecl sub_69ABA0() { off_855A30[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A30: using guessed type int (__stdcall *off_855A30[12])(int, int, int, int, int, int, int); //----- (0069ABB0) -------------------------------------------------------- void __cdecl sub_69ABB0() { off_855A34[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A34: using guessed type int (__stdcall *off_855A34[11])(int, int, int, int, int, int, int); //----- (0069ABC0) -------------------------------------------------------- void __cdecl sub_69ABC0() { off_855A38[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A38: using guessed type int (__stdcall *off_855A38[10])(int, int, int, int, int, int, int); //----- (0069ABD0) -------------------------------------------------------- void __cdecl sub_69ABD0() { off_855A3C[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A3C: using guessed type int (__stdcall *off_855A3C[9])(int, int, int, int, int, int, int); //----- (0069ABE0) -------------------------------------------------------- void __cdecl sub_69ABE0() { off_855A40[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A40: using guessed type int (__stdcall *off_855A40[8])(int, int, int, int, int, int, int); //----- (0069ABF0) -------------------------------------------------------- void __cdecl sub_69ABF0() { off_855A44[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A44: using guessed type int (__stdcall *off_855A44[7])(int, int, int, int, int, int, int); //----- (0069AC00) -------------------------------------------------------- void __cdecl sub_69AC00() { off_855A48[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A48: using guessed type int (__stdcall *off_855A48[6])(int, int, int, int, int, int, int); //----- (0069AC10) -------------------------------------------------------- void __cdecl sub_69AC10() { off_855A4C[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A4C: using guessed type int (__stdcall *off_855A4C[5])(int, int, int, int, int, int, int); //----- (0069AC20) -------------------------------------------------------- void __cdecl sub_69AC20() { off_855A50[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A50: using guessed type int (__stdcall *off_855A50[4])(int, int, int, int, int, int, int); //----- (0069AC30) -------------------------------------------------------- void __cdecl sub_69AC30() { off_855A54[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A54: using guessed type int (__stdcall *off_855A54[3])(int, int, int, int, int, int, int); //----- (0069AC40) -------------------------------------------------------- void __cdecl sub_69AC40() { off_855A58[0] = (int (__stdcall *)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A58: using guessed type int (__stdcall *off_855A58[2])(int, int, int, int, int, int, int); //----- (0069AC50) -------------------------------------------------------- void __cdecl sub_69AC50() { off_855A5C = (int (__stdcall **)(int, int, int, int, int, int, int))&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 855A5C: using guessed type int (__stdcall **off_855A5C)(int, int, int, int, int, int, int); //----- (0069AC60) -------------------------------------------------------- void __cdecl sub_69AC60() { dword_13231244 = (int)&off_6CD098; } // 6CD098: using guessed type int (*off_6CD098)(); // 13231244: using guessed type int dword_13231244; //----- (0069AC70) -------------------------------------------------------- void __cdecl sub_69AC70() { if ( dword_13231250 ) operator delete(dword_13231250); dword_13231250 = 0; dword_13231254 = 0; dword_13231258 = 0; } // 13231254: using guessed type int dword_13231254; // 13231258: using guessed type int dword_13231258; //----- (0069ACE0) -------------------------------------------------------- int __cdecl sub_69ACE0() { return _LN21(&unk_1323D2C8, 0x50u, 256, nullsub_2); } //----- (0069AD00) -------------------------------------------------------- int __cdecl sub_69AD00() { return _LN21(&unk_132312C0, 0x30u, 1024, (void (__thiscall *)(void *))sub_50EA10); } //----- (0069AD30) -------------------------------------------------------- int __cdecl sub_69AD30() { return _LN21(word_132423D0, 0x48u, 128, nullsub_2); } // 132423D0: using guessed type __int16 word_132423D0[]; //----- (0069B020) -------------------------------------------------------- void __cdecl sub_69B020() { nullsub_2(&unk_13253E80); } //----- (0069B040) -------------------------------------------------------- void __cdecl sub_69B040() { sub_4C8EE0((int)&unk_1324B2A8); } //----- (0069B050) -------------------------------------------------------- void __cdecl sub_69B050() { nullsub_2(&unk_13253AE8); } //----- (0069B060) -------------------------------------------------------- void __cdecl sub_69B060() { off_8622C8 = &off_6D7F7C; } // 6D7F7C: using guessed type int (__stdcall *off_6D7F7C)(int); // 8622C8: using guessed type int (__stdcall **off_8622C8)(int); //----- (0069B070) -------------------------------------------------------- int __cdecl sub_69B070() { return sub_406560(&unk_132453B0); } //----- (0069B080) -------------------------------------------------------- void __cdecl sub_69B080() { sub_52BF80((int)&unk_132460F8); } //----- (0069B090) -------------------------------------------------------- void __cdecl sub_69B090() { unk_13253628 = &off_6B6D0C; } // 6B6D0C: using guessed type int (__stdcall *off_6B6D0C)(int, int); //----- (0069B0A0) -------------------------------------------------------- void __cdecl sub_69B0A0() { nullsub_2(&unk_132450FC); } //----- (0069B0B0) -------------------------------------------------------- int __cdecl sub_69B0B0() { return j_nullsub_2(&unk_13252690); } // 5C79E0: using guessed type int __thiscall j_nullsub_2(_DWORD); //----- (0069B0C0) -------------------------------------------------------- void __cdecl sub_69B0C0() { nullsub_2(&unk_132460F4); } //----- (0069B0D0) -------------------------------------------------------- void __cdecl sub_69B0D0() { nullsub_2(&unk_13247470); } //----- (0069B100) -------------------------------------------------------- void __cdecl sub_69B100() { sub_58F9F0(&unk_132535F8); } //----- (0069B110) -------------------------------------------------------- void __cdecl sub_69B110() { JUMPOUT(loc_58A890); } // 58A890: using guessed type int loc_58A890(); //----- (0069B120) -------------------------------------------------------- int (__stdcall **__cdecl sub_69B120())(int, int) { unk_13252578 = &off_6AEDEC; return sub_5A4290((int)&unk_13252578); } // 6AEDEC: using guessed type int (__stdcall *off_6AEDEC)(int); //----- (0069B1D0) -------------------------------------------------------- int __cdecl sub_69B1D0() { sub_641510((int)&unk_13252218); sub_63FAE0((int)&unk_13251238); sub_63F9A0((int)&unk_13250FF0); sub_63F880((int)&unk_1324CEAC); return sub_63F930((int)&unk_1324C058); } //----- (0069B270) -------------------------------------------------------- void __cdecl sub_69B270() { sub_54DA30((int)&unk_13253630); } //----- (0069B3E0) -------------------------------------------------------- void __cdecl sub_69B3E0() { dword_13256FF4 = (int)&off_6B039C; } // 6B039C: using guessed type int (__stdcall *off_6B039C)(int); // 13256FF4: using guessed type int dword_13256FF4; //----- (0069B430) -------------------------------------------------------- void __cdecl sub_69B430() { dword_13255290 = (int)&off_6EC8B0; sub_57BD80((int)&dword_132559CC); operator delete(dword_132559CC); dword_132559CC = 0; sub_4C11C0(&dword_13255290); } // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 13255290: using guessed type int dword_13255290; //----- (0069B470) -------------------------------------------------------- void __cdecl sub_69B470() { dword_13257008 = (int)&off_6EC8B0; sub_57BD80((int)&dword_13257744); operator delete(dword_13257744); dword_13257744 = 0; sub_4C11C0(&dword_13257008); } // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 13257008: using guessed type int dword_13257008; //----- (0069B4B0) -------------------------------------------------------- void __cdecl sub_69B4B0() { dword_132559E8 = (int)&off_6EC8B0; sub_57BD80((int)&dword_13256124); operator delete(dword_13256124); dword_13256124 = 0; sub_4C11C0(&dword_132559E8); } // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 132559E8: using guessed type int dword_132559E8; //----- (0069B4F0) -------------------------------------------------------- void __cdecl sub_69B4F0() { dword_13256140 = (int)&off_6EC8B0; sub_57BD80((int)&dword_1325687C); operator delete(dword_1325687C); dword_1325687C = 0; sub_4C11C0(&dword_13256140); } // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 13256140: using guessed type int dword_13256140; //----- (0069B530) -------------------------------------------------------- void __cdecl sub_69B530() { dword_13256898 = (int)&off_6EC8B0; sub_57BD80((int)&dword_13256FD4); operator delete(dword_13256FD4); dword_13256FD4 = 0; sub_4C11C0(&dword_13256898); } // 6EC8B0: using guessed type int (__stdcall *off_6EC8B0)(int, int, int); // 13256898: using guessed type int dword_13256898; //----- (0069B570) -------------------------------------------------------- void __cdecl sub_69B570() { sub_639560(&unk_13257C80); } //----- (0069B580) -------------------------------------------------------- void __cdecl sub_69B580() { if ( dword_13258268 ) sub_6530A4((void *)dword_13258268); dword_132581DC = (int)&off_6ED314; sub_639940((int)&dword_132581DC); dword_1325808C = (int)&off_6ED30C; sub_639940((int)&dword_1325808C); } // 6ED30C: using guessed type int (__thiscall *off_6ED30C)(void *, char); // 6ED314: using guessed type int (__thiscall *off_6ED314)(void *, char); // 1325808C: using guessed type int dword_1325808C; // 132581DC: using guessed type int dword_132581DC; // 13258268: using guessed type int dword_13258268; //----- (0069B600) -------------------------------------------------------- void __cdecl sub_69B600() { void *v0; // esi@2 if ( dword_13257C6C ) { v0 = (char *)dword_13257C6C - 4; _LN21(dword_13257C6C, 0x268u, *((_DWORD *)dword_13257C6C - 1), (void (__thiscall *)(void *))sub_4476B0); sub_6530A4(v0); } sub_583280(&unk_132577A0); } //----- (0069B6D0) -------------------------------------------------------- void __cdecl sub_69B6D0() { dword_132582DC = (int)&off_6EE118; sub_639940((int)&dword_132582DC); dword_13258298 = (int)&off_6EE110; sub_639940((int)&dword_13258298); } // 6EE110: using guessed type int (__thiscall *off_6EE110)(void *, char); // 6EE118: using guessed type int (__thiscall *off_6EE118)(void *, char); // 13258298: using guessed type int dword_13258298; // 132582DC: using guessed type int dword_132582DC; //----- (0069B8C0) -------------------------------------------------------- void __cdecl sub_69B8C0() { dword_132587D8 = (int)&off_6F08E8; sub_639940((int)&dword_132587D8); } // 6F08E8: using guessed type int (__thiscall *off_6F08E8)(void *, char); // 132587D8: using guessed type int dword_132587D8; //----- (0069B8E0) -------------------------------------------------------- void __cdecl sub_69B8E0() { unk_13258864 = &off_6A1FE0; sub_5940C0(&unk_13258864); } // 6A1FE0: using guessed type int (__thiscall *off_6A1FE0)(void *, char); //----- (0069B8F0) -------------------------------------------------------- void __cdecl sub_69B8F0() { unk_13258860 = &off_7032C8; sub_5940C0(&unk_13258860); } // 7032C8: using guessed type int (__thiscall *off_7032C8)(void *, char); //----- (0069B900) -------------------------------------------------------- void __cdecl sub_69B900() { off_86AC94[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AC94: using guessed type int (__thiscall *off_86AC94[12])(void *, char); //----- (0069B910) -------------------------------------------------------- void __cdecl sub_69B910() { off_86AC98[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AC98: using guessed type int (__thiscall *off_86AC98[11])(void *, char); //----- (0069B920) -------------------------------------------------------- void __cdecl sub_69B920() { off_86AC9C[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AC9C: using guessed type int (__thiscall *off_86AC9C[10])(void *, char); //----- (0069B930) -------------------------------------------------------- void __cdecl sub_69B930() { off_86ACA0[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACA0: using guessed type int (__thiscall *off_86ACA0[9])(void *, char); //----- (0069B940) -------------------------------------------------------- void __cdecl sub_69B940() { off_86ACA4[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACA4: using guessed type int (__thiscall *off_86ACA4[8])(void *, char); //----- (0069B950) -------------------------------------------------------- void __cdecl sub_69B950() { off_86ACA8[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACA8: using guessed type int (__thiscall *off_86ACA8[7])(void *, char); //----- (0069B960) -------------------------------------------------------- void __cdecl sub_69B960() { off_86ACAC[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACAC: using guessed type int (__thiscall *off_86ACAC[6])(void *, char); //----- (0069B970) -------------------------------------------------------- void __cdecl sub_69B970() { off_86ACB0[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACB0: using guessed type int (__thiscall *off_86ACB0[5])(void *, char); //----- (0069B980) -------------------------------------------------------- void __cdecl sub_69B980() { off_86ACB4[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACB4: using guessed type int (__thiscall *off_86ACB4[4])(void *, char); //----- (0069B990) -------------------------------------------------------- void __cdecl sub_69B990() { off_86ACB8[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACB8: using guessed type int (__thiscall *off_86ACB8[3])(void *, char); //----- (0069B9A0) -------------------------------------------------------- void __cdecl sub_69B9A0() { off_86ACBC[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACBC: using guessed type int (__thiscall *off_86ACBC[2])(void *, char); //----- (0069B9B0) -------------------------------------------------------- void __cdecl sub_69B9B0() { off_86ACC0 = &off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACC0: using guessed type int (__thiscall **off_86ACC0)(void *, char); //----- (0069B9C0) -------------------------------------------------------- void __cdecl sub_69B9C0() { off_86ACC8[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACC8: using guessed type int (__thiscall *off_86ACC8[6])(void *, char); //----- (0069B9D0) -------------------------------------------------------- void __cdecl sub_69B9D0() { off_86ACCC[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACCC: using guessed type int (__thiscall *off_86ACCC[5])(void *, char); //----- (0069B9E0) -------------------------------------------------------- void __cdecl sub_69B9E0() { off_86ACD0[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACD0: using guessed type int (__thiscall *off_86ACD0[4])(void *, char); //----- (0069B9F0) -------------------------------------------------------- void __cdecl sub_69B9F0() { off_86ACD4[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACD4: using guessed type int (__thiscall *off_86ACD4[3])(void *, char); //----- (0069BA00) -------------------------------------------------------- void __cdecl sub_69BA00() { off_86ACD8[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACD8: using guessed type int (__thiscall *off_86ACD8[2])(void *, char); //----- (0069BA10) -------------------------------------------------------- void __cdecl sub_69BA10() { off_86ACDC = &off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACDC: using guessed type int (__thiscall **off_86ACDC)(void *, char); //----- (0069BA20) -------------------------------------------------------- void __cdecl sub_69BA20() { off_86ACE8 = &off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACE8: using guessed type int (__thiscall **off_86ACE8)(void *, char); //----- (0069BA30) -------------------------------------------------------- void __cdecl sub_69BA30() { off_86ACF4[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACF4: using guessed type int (__thiscall *off_86ACF4[12])(void *, char); //----- (0069BA40) -------------------------------------------------------- void __cdecl sub_69BA40() { off_86ACF8[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACF8: using guessed type int (__thiscall *off_86ACF8[11])(void *, char); //----- (0069BA50) -------------------------------------------------------- void __cdecl sub_69BA50() { off_86ACFC[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86ACFC: using guessed type int (__thiscall *off_86ACFC[10])(void *, char); //----- (0069BA60) -------------------------------------------------------- void __cdecl sub_69BA60() { off_86AD00[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD00: using guessed type int (__thiscall *off_86AD00[9])(void *, char); //----- (0069BA70) -------------------------------------------------------- void __cdecl sub_69BA70() { off_86AD04[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD04: using guessed type int (__thiscall *off_86AD04[8])(void *, char); //----- (0069BA80) -------------------------------------------------------- void __cdecl sub_69BA80() { off_86AD0C[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD0C: using guessed type int (__thiscall *off_86AD0C[6])(void *, char); //----- (0069BA90) -------------------------------------------------------- void __cdecl sub_69BA90() { off_86AD10[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD10: using guessed type int (__thiscall *off_86AD10[5])(void *, char); //----- (0069BAA0) -------------------------------------------------------- void __cdecl sub_69BAA0() { off_86AD14[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD14: using guessed type int (__thiscall *off_86AD14[4])(void *, char); //----- (0069BAB0) -------------------------------------------------------- void __cdecl sub_69BAB0() { off_86AD18[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD18: using guessed type int (__thiscall *off_86AD18[3])(void *, char); //----- (0069BAC0) -------------------------------------------------------- void __cdecl sub_69BAC0() { off_86AD1C[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD1C: using guessed type int (__thiscall *off_86AD1C[2])(void *, char); //----- (0069BAD0) -------------------------------------------------------- void __cdecl sub_69BAD0() { off_86AD20 = &off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD20: using guessed type int (__thiscall **off_86AD20)(void *, char); //----- (0069BAE0) -------------------------------------------------------- void __cdecl sub_69BAE0() { off_86AD34[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD34: using guessed type int (__thiscall *off_86AD34[4])(void *, char); //----- (0069BAF0) -------------------------------------------------------- void __cdecl sub_69BAF0() { off_86AD38[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD38: using guessed type int (__thiscall *off_86AD38[3])(void *, char); //----- (0069BB00) -------------------------------------------------------- void __cdecl sub_69BB00() { off_86AD3C[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD3C: using guessed type int (__thiscall *off_86AD3C[2])(void *, char); //----- (0069BB10) -------------------------------------------------------- void __cdecl sub_69BB10() { off_86AD40 = &off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD40: using guessed type int (__thiscall **off_86AD40)(void *, char); //----- (0069BB20) -------------------------------------------------------- void __cdecl sub_69BB20() { if ( dword_13258958 ) operator delete(dword_13258958); dword_13258868 = (int)&off_6F0CF0; sub_639940((int)&dword_13258868); } // 6F0CF0: using guessed type int (__thiscall *off_6F0CF0)(void *, char); // 13258868: using guessed type int dword_13258868; //----- (0069BB50) -------------------------------------------------------- void __cdecl sub_69BB50() { off_86AD08[0] = (int (__thiscall *)(void *, char))&off_6F0990; } // 6F0990: using guessed type int (__thiscall *off_6F0990)(void *, char); // 86AD08: using guessed type int (__thiscall *off_86AD08[7])(void *, char); //----- (0069BBC0) -------------------------------------------------------- void __cdecl sub_69BBC0() { off_86B038[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B038: using guessed type int (__stdcall *(*off_86B038[11])[3])(int, int); //----- (0069BBD0) -------------------------------------------------------- void __cdecl sub_69BBD0() { off_86B03C[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B03C: using guessed type int (__stdcall *(*off_86B03C[10])[3])(int, int); //----- (0069BBE0) -------------------------------------------------------- void __cdecl sub_69BBE0() { off_86B040[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B040: using guessed type int (__stdcall *(*off_86B040[9])[3])(int, int); //----- (0069BBF0) -------------------------------------------------------- void __cdecl sub_69BBF0() { off_86B044[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B044: using guessed type int (__stdcall *(*off_86B044[8])[3])(int, int); //----- (0069BC00) -------------------------------------------------------- void __cdecl sub_69BC00() { off_86B048[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B048: using guessed type int (__stdcall *(*off_86B048[7])[3])(int, int); //----- (0069BC10) -------------------------------------------------------- void __cdecl sub_69BC10() { off_86B04C[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B04C: using guessed type int (__stdcall *(*off_86B04C[6])[3])(int, int); //----- (0069BC20) -------------------------------------------------------- void __cdecl sub_69BC20() { off_86B050[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B050: using guessed type int (__stdcall *(*off_86B050[5])[3])(int, int); //----- (0069BC30) -------------------------------------------------------- void __cdecl sub_69BC30() { off_86B054[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B054: using guessed type int (__stdcall *(*off_86B054[4])[3])(int, int); //----- (0069BC40) -------------------------------------------------------- void __cdecl sub_69BC40() { off_86B058[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B058: using guessed type int (__stdcall *(*off_86B058[3])[3])(int, int); //----- (0069BC50) -------------------------------------------------------- void __cdecl sub_69BC50() { off_86B05C[0] = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B05C: using guessed type int (__stdcall *(*off_86B05C[2])[3])(int, int); //----- (0069BC60) -------------------------------------------------------- void __cdecl sub_69BC60() { off_86B060 = (int (__stdcall *(*)[3])(int, int))off_6F46A0; } // 6F46A0: using guessed type int (*off_6F46A0[2])(); // 86B060: using guessed type int (__stdcall *(*off_86B060)[3])(int, int); //----- (0069BC70) -------------------------------------------------------- int __cdecl sub_69BC70() { return _LN21(&unk_13258988, 0x12u, 12, nullsub_2); } //----- (0069BC90) -------------------------------------------------------- int __cdecl sub_69BC90() { return sub_42A6F0(&unk_133595F0); } // 42A6F0: using guessed type int __thiscall sub_42A6F0(_DWORD); //----- (0069BCA0) -------------------------------------------------------- void __cdecl sub_69BCA0() { sub_6336D0((int)&unk_1325D028); } //----- (0069BCB0) -------------------------------------------------------- void __cdecl sub_69BCB0() { sub_5C9C50((int)&unk_13267D80); } //----- (0069BCC0) -------------------------------------------------------- void __cdecl sub_69BCC0() { sub_626C10((int)&unk_1325CBC8); } //----- (0069BCD0) -------------------------------------------------------- void __cdecl sub_69BCD0() { sub_626C10((int)&unk_1325CA78); } //----- (0069BCE0) -------------------------------------------------------- void __cdecl sub_69BCE0() { sub_626C10((int)&unk_132668E0); } //----- (0069BCF0) -------------------------------------------------------- void __cdecl sub_69BCF0() { sub_626C10((int)&unk_132669A0); } //----- (0069BD00) -------------------------------------------------------- void __cdecl sub_69BD00() { sub_626C10((int)&unk_1325CE70); } //----- (0069BD10) -------------------------------------------------------- void __cdecl sub_69BD10() { sub_626C10((int)&unk_1325CCB0); } //----- (0069BD20) -------------------------------------------------------- void __cdecl sub_69BD20() { sub_626C10((int)&unk_13266A70); } //----- (0069BD30) -------------------------------------------------------- void __cdecl sub_69BD30() { nullsub_2(&unk_13357DA8); } //----- (0069BD40) -------------------------------------------------------- void __cdecl sub_69BD40() { nullsub_2(&unk_13359670); } //----- (0069BD50) -------------------------------------------------------- void __cdecl sub_69BD50() { sub_626C10((int)&unk_13359038); } //----- (0069BD60) -------------------------------------------------------- void __cdecl sub_69BD60() { sub_626C10((int)&unk_13359350); } //----- (0069BD70) -------------------------------------------------------- void __cdecl sub_69BD70() { sub_626C10((int)&unk_1325CF78); } //----- (0069BD80) -------------------------------------------------------- void __cdecl sub_69BD80() { sub_626C10((int)&unk_1325CF38); } //----- (0069BD90) -------------------------------------------------------- void __cdecl sub_69BD90() { sub_626C10((int)&unk_13267D40); } //----- (0069BDA0) -------------------------------------------------------- void __cdecl sub_69BDA0() { sub_626C10((int)&unk_1325CB78); } //----- (0069BDB0) -------------------------------------------------------- void __cdecl sub_69BDB0() { sub_626C10((int)&unk_133592D0); } //----- (0069BDC0) -------------------------------------------------------- void __cdecl sub_69BDC0() { sub_626C10((int)&unk_133591C0); } //----- (0069BDD0) -------------------------------------------------------- void __cdecl sub_69BDD0() { sub_626C10((int)&unk_13266960); } //----- (0069BDE0) -------------------------------------------------------- void __cdecl sub_69BDE0() { nullsub_2(&unk_13266AB0); } //----- (0069BDF0) -------------------------------------------------------- void __cdecl sub_69BDF0() { nullsub_2(&unk_133594F0); } //----- (0069BE00) -------------------------------------------------------- void __cdecl sub_69BE00() { sub_626C10((int)&unk_13359630); } //----- (0069BE10) -------------------------------------------------------- void __cdecl sub_69BE10() { sub_626C10((int)&unk_1325CCF0); } //----- (0069BE20) -------------------------------------------------------- void __cdecl sub_69BE20() { sub_626C10((int)&unk_13359310); } //----- (0069BE30) -------------------------------------------------------- void __cdecl sub_69BE30() { sub_626C10((int)&unk_13359078); } //----- (0069BE40) -------------------------------------------------------- void __cdecl sub_69BE40() { sub_626C10((int)&unk_13266920); } //----- (0069BE50) -------------------------------------------------------- void __cdecl sub_69BE50() { sub_626C10((int)&unk_13359138); } //----- (0069BE60) -------------------------------------------------------- void __cdecl sub_69BE60() { sub_626C10((int)&unk_13359200); } //----- (0069BE70) -------------------------------------------------------- void __cdecl sub_69BE70() { sub_626C10((int)&unk_133597E0); } //----- (0069BE80) -------------------------------------------------------- void __cdecl sub_69BE80() { sub_626C10((int)&unk_13359290); } //----- (0069BE90) -------------------------------------------------------- void __cdecl sub_69BE90() { sub_626C10((int)&unk_132669F0); } //----- (0069BEA0) -------------------------------------------------------- void __cdecl sub_69BEA0() { sub_626C10((int)&unk_13359178); } //----- (0069BEB0) -------------------------------------------------------- void __cdecl sub_69BEB0() { sub_626C10((int)&unk_1325CC08); } //----- (0069BEC0) -------------------------------------------------------- void __cdecl sub_69BEC0() { sub_626C10((int)&unk_13266A30); } //----- (0069BED0) -------------------------------------------------------- void __cdecl sub_69BED0() { sub_626C10((int)&unk_133590B8); } //----- (0069BEE0) -------------------------------------------------------- void __cdecl sub_69BEE0() { sub_626C10((int)&unk_13359390); } //----- (0069BEF0) -------------------------------------------------------- void __cdecl sub_69BEF0() { sub_626C10((int)&unk_133590F8); } //----- (0069BF00) -------------------------------------------------------- void __cdecl sub_69BF00() { sub_626C10((int)&unk_1325CEB0); } //----- (0069BF10) -------------------------------------------------------- void __cdecl sub_69BF10() { sub_626C10((int)&unk_1325CE30); } //----- (0069BF20) -------------------------------------------------------- void __cdecl sub_69BF20() { sub_4AFBE0((int)&unk_1325CC48); } //----- (0069BF30) -------------------------------------------------------- void __cdecl sub_69BF30() { sub_62BD90((int)&unk_1325CFB8); } //----- (0069BF40) -------------------------------------------------------- void __cdecl sub_69BF40() { if ( dword_133591B8[1] ) { operator delete(dword_133591B8[1]); dword_133591B8[1] = 0; } } //----- (0069BF50) -------------------------------------------------------- void __cdecl sub_69BF50() { sub_4BFBA0((int)&unk_133593D0); } //----- (0069BF60) -------------------------------------------------------- void __cdecl sub_69BF60() { void *v0; // esi@13 if ( dword_1325CC60[0] ) sub_6530A4(dword_1325CC60[0]); if ( dword_1325CC60[1] ) sub_6530A4(dword_1325CC60[1]); if ( dword_1325CC60[2] ) sub_6530A4(dword_1325CC60[2]); if ( dword_1325CC60[3] ) sub_6530A4(dword_1325CC60[3]); if ( dword_1325CC60[4] ) sub_6530A4(dword_1325CC60[4]); if ( dword_1325CC60[5] ) sub_6530A4(dword_1325CC60[5]); v0 = dword_1325CC60[6]; if ( v0 ) sub_6530A4(v0); } //----- (0069BF70) -------------------------------------------------------- int __cdecl sub_69BF70() { return sub_42A6F0(&unk_13359770); } // 42A6F0: using guessed type int __thiscall sub_42A6F0(_DWORD); //----- (0069BF80) -------------------------------------------------------- void __cdecl sub_69BF80() { sub_493000((int)&unk_1325CFC8); } //----- (0069BF90) -------------------------------------------------------- void __cdecl sub_69BF90() { sub_4A20A0((int)&unk_133597D0); } //----- (0069BFA0) -------------------------------------------------------- void __cdecl sub_69BFA0() { sub_4A1C80((int)&unk_133597B0); } //----- (0069BFB0) -------------------------------------------------------- void __cdecl sub_69BFB0() { sub_4A20A0((int)&unk_1325CBB8); } //----- (0069BFC0) -------------------------------------------------------- void __cdecl sub_69BFC0() { sub_4A20A0((int)&unk_1325D018); } //----- (0069BFD0) -------------------------------------------------------- void __cdecl sub_69BFD0() { sub_6488C0((int)&unk_133597C0); } //----- (0069BFE0) -------------------------------------------------------- void __cdecl sub_69BFE0() { sub_5C47A0((int)&unk_1325CAB8); } //----- (0069BFF0) -------------------------------------------------------- void __cdecl sub_69BFF0() { sub_631ED0((int)&unk_13359240); } //----- (0069C000) -------------------------------------------------------- void __cdecl sub_69C000() { sub_43B540((int)&unk_1325CD30); } //----- (0069C010) -------------------------------------------------------- void __cdecl sub_69C010() { if ( dword_1325CEF0[16] ) { sub_6530A4(dword_1325CEF0[16]); dword_1325CEF0[16] = 0; } dword_1325CEF0[17] = 0; sub_626C10((int)dword_1325CEF0); } //----- (0069C020) -------------------------------------------------------- void __cdecl sub_69C020() { sub_626C10((int)&unk_1325CFD8); } //----- (0069C030) -------------------------------------------------------- void __cdecl sub_69C030() { sub_626C10((int)&unk_132668A0); } //----- (0069C050) -------------------------------------------------------- void __cdecl sub_69C050() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_132669E4; v2 = 0; sub_5AFEC0((int)&unk_132669E0, (int)&v1, v0, (int)dword_132669E4); operator delete(dword_132669E4); } //----- (0069C490) -------------------------------------------------------- void __cdecl sub_69C490() { sub_46CE40((int)&unk_14D138B8); } //----- (0069C4A0) -------------------------------------------------------- void __cdecl sub_69C4A0() { sub_4B0610(&unk_14D12E2C); } //----- (0069C4B0) -------------------------------------------------------- void __cdecl sub_69C4B0() { sub_64B830((int)&unk_14D20370); } //----- (0069C4C0) -------------------------------------------------------- void __cdecl sub_69C4C0() { sub_63F550((int)&unk_14D159B0); } //----- (0069C4D0) -------------------------------------------------------- void __cdecl sub_69C4D0() { sub_645F60((int)&dword_14D20890); } // 14D20890: using guessed type int dword_14D20890; //----- (0069C4E0) -------------------------------------------------------- void __cdecl sub_69C4E0() { sub_4BF8C0((int)&unk_13359F08); } //----- (0069C4F0) -------------------------------------------------------- void __cdecl sub_69C4F0() { unk_14D130B8 = &off_7063CC; sub_639940((int)&unk_14D130B8); } // 7063CC: using guessed type int (__thiscall *off_7063CC)(void *, char); //----- (0069C500) -------------------------------------------------------- int __cdecl sub_69C500() { return sub_5A8370(byte_14D16AE8); } //----- (0069C510) -------------------------------------------------------- int (__stdcall **__cdecl sub_69C510())(int, int) { unk_13359E08 = &off_6F4690; return sub_5A4290((int)&unk_13359E08); } // 6F4690: using guessed type int (__stdcall *off_6F4690)(int); //----- (0069C530) -------------------------------------------------------- int __cdecl sub_69C530() { void *v0; // eax@1 v0 = *(void **)((char *)&unk_1335A9C0 + (_DWORD)&dword_19B8008); *(_DWORD *)((char *)&unk_1335A9C0 + (_DWORD)&dword_19B8000) = &off_6BE5C0; if ( v0 ) sub_6530A4(v0); return _LN21(&unk_1335A9C0, 0x19B8u, 4096, (void (__thiscall *)(void *))sub_4B1330); } // 6BE5C0: using guessed type int (__thiscall *off_6BE5C0)(void *, char); // 19B8000: using guessed type int dword_19B8000; // 19B8008: using guessed type int dword_19B8008; //----- (0069C550) -------------------------------------------------------- void __cdecl sub_69C550() { off_86BDF8 = &off_6AD5E0; } // 6AD5E0: using guessed type int (*off_6AD5E0)(); // 86BDF8: using guessed type int (**off_86BDF8)(); //----- (0069C560) -------------------------------------------------------- void __cdecl sub_69C560() { void *v0; // esi@2 dword_13359DE8 = (int)&off_6F5D28; if ( dword_13359E00 ) { v0 = (char *)dword_13359E00 - 4; _LN21(dword_13359E00, 0x10u, *((_DWORD *)dword_13359E00 - 1), nullsub_2); sub_6530A4(v0); } dword_13359DE8 = (int)&off_6F5CAC; if ( dword_13359DF0 ) sub_6530A4((void *)dword_13359DF0); } // 6F5CAC: using guessed type int (__thiscall *off_6F5CAC)(void *, char); // 6F5D28: using guessed type int (__thiscall *off_6F5D28)(void *, char); // 13359DE8: using guessed type int dword_13359DE8; // 13359DF0: using guessed type int dword_13359DF0; //----- (0069C5F0) -------------------------------------------------------- int __cdecl sub_69C5F0() { return _LN21(&unk_14D16434, 0x108u, 4, sub_5AC3E0); } //----- (0069C610) -------------------------------------------------------- int __cdecl sub_69C610() { return _LN21(&unk_14D148D4, 0x108u, 4, sub_5AC400); } //----- (0069C630) -------------------------------------------------------- int __cdecl sub_69C630() { return _LN21(&unk_14D12A04, 0x108u, 4, sub_5AC420); } //----- (0069C650) -------------------------------------------------------- int __cdecl sub_69C650() { int result; // eax@2 if ( dword_13359868 ) { result = (**(int (***)(void))dword_13359868)(); if ( dword_13359868 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359868 + 8))(1); dword_13359868 = 0; } return result; } // 13359868: using guessed type int dword_13359868; //----- (0069C680) -------------------------------------------------------- int __cdecl sub_69C680() { int result; // eax@2 if ( dword_13359864 ) { result = (**(int (***)(void))dword_13359864)(); if ( dword_13359864 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359864 + 8))(1); dword_13359864 = 0; } return result; } // 13359864: using guessed type int dword_13359864; //----- (0069C6B0) -------------------------------------------------------- int __cdecl sub_69C6B0() { int result; // eax@2 if ( dword_13359860 ) { result = (**(int (***)(void))dword_13359860)(); if ( dword_13359860 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359860 + 8))(1); dword_13359860 = 0; } return result; } // 13359860: using guessed type int dword_13359860; //----- (0069C6E0) -------------------------------------------------------- int __cdecl sub_69C6E0() { int result; // eax@2 if ( dword_1335985C ) { result = (**(int (***)(void))dword_1335985C)(); if ( dword_1335985C ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1335985C + 8))(1); dword_1335985C = 0; } return result; } // 1335985C: using guessed type int dword_1335985C; //----- (0069C710) -------------------------------------------------------- int __cdecl sub_69C710() { int result; // eax@2 if ( dword_13359858 ) { result = (**(int (***)(void))dword_13359858)(); if ( dword_13359858 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359858 + 8))(1); dword_13359858 = 0; } return result; } // 13359858: using guessed type int dword_13359858; //----- (0069C740) -------------------------------------------------------- int __cdecl sub_69C740() { int result; // eax@2 if ( dword_13359854 ) { result = (**(int (***)(void))dword_13359854)(); if ( dword_13359854 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359854 + 8))(1); dword_13359854 = 0; } return result; } // 13359854: using guessed type int dword_13359854; //----- (0069C770) -------------------------------------------------------- int __cdecl sub_69C770() { int result; // eax@2 if ( dword_13359850 ) { result = (**(int (***)(void))dword_13359850)(); if ( dword_13359850 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359850 + 8))(1); dword_13359850 = 0; } return result; } // 13359850: using guessed type int dword_13359850; //----- (0069C7A0) -------------------------------------------------------- int __cdecl sub_69C7A0() { int result; // eax@2 if ( dword_1335984C ) { result = (**(int (***)(void))dword_1335984C)(); if ( dword_1335984C ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1335984C + 8))(1); dword_1335984C = 0; } return result; } // 1335984C: using guessed type int dword_1335984C; //----- (0069C7D0) -------------------------------------------------------- int __cdecl sub_69C7D0() { int result; // eax@2 if ( dword_1324488C ) { result = (**(int (***)(void))dword_1324488C)(); if ( dword_1324488C ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1324488C + 8))(1); dword_1324488C = 0; } return result; } // 1324488C: using guessed type int dword_1324488C; //----- (0069C800) -------------------------------------------------------- int __cdecl sub_69C800() { int result; // eax@2 if ( dword_13359848 ) { result = (**(int (***)(void))dword_13359848)(); if ( dword_13359848 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359848 + 8))(1); dword_13359848 = 0; } return result; } // 13359848: using guessed type int dword_13359848; //----- (0069C830) -------------------------------------------------------- int __cdecl sub_69C830() { int result; // eax@2 if ( dword_13359844 ) { result = (**(int (***)(void))dword_13359844)(); if ( dword_13359844 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359844 + 8))(1); dword_13359844 = 0; } return result; } // 13359844: using guessed type int dword_13359844; //----- (0069C860) -------------------------------------------------------- int __cdecl sub_69C860() { int result; // eax@2 if ( dword_13359840 ) { result = (**(int (***)(void))dword_13359840)(); if ( dword_13359840 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359840 + 8))(1); dword_13359840 = 0; } return result; } // 13359840: using guessed type int dword_13359840; //----- (0069C890) -------------------------------------------------------- int __cdecl sub_69C890() { int result; // eax@2 if ( dword_D554218 ) { result = (**(int (***)(void))dword_D554218)(); if ( dword_D554218 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_D554218 + 8))(1); dword_D554218 = 0; } return result; } // D554218: using guessed type int dword_D554218; //----- (0069C8C0) -------------------------------------------------------- int __cdecl sub_69C8C0() { int result; // eax@2 if ( dword_1335983C ) { result = (**(int (***)(void))dword_1335983C)(); if ( dword_1335983C ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1335983C + 8))(1); dword_1335983C = 0; } return result; } // 1335983C: using guessed type int dword_1335983C; //----- (0069C8F0) -------------------------------------------------------- int __cdecl sub_69C8F0() { int result; // eax@2 if ( dword_D554214 ) { result = (**(int (***)(void))dword_D554214)(); if ( dword_D554214 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_D554214 + 8))(1); dword_D554214 = 0; } return result; } // D554214: using guessed type int dword_D554214; //----- (0069C920) -------------------------------------------------------- int __cdecl sub_69C920() { int result; // eax@2 if ( dword_D554210 ) { result = (**(int (***)(void))dword_D554210)(); if ( dword_D554210 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_D554210 + 8))(1); dword_D554210 = 0; } return result; } // D554210: using guessed type int dword_D554210; //----- (0069C950) -------------------------------------------------------- int __cdecl sub_69C950() { int result; // eax@2 if ( dword_13359838 ) { result = (**(int (***)(void))dword_13359838)(); if ( dword_13359838 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359838 + 8))(1); dword_13359838 = 0; } return result; } // 13359838: using guessed type int dword_13359838; //----- (0069C980) -------------------------------------------------------- int __cdecl sub_69C980() { int result; // eax@2 if ( dword_13359834 ) { result = (**(int (***)(void))dword_13359834)(); if ( dword_13359834 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359834 + 8))(1); dword_13359834 = 0; } return result; } // 13359834: using guessed type int dword_13359834; //----- (0069C9B0) -------------------------------------------------------- int __cdecl sub_69C9B0() { int result; // eax@2 if ( dword_13359830 ) { result = (**(int (***)(void))dword_13359830)(); if ( dword_13359830 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359830 + 8))(1); dword_13359830 = 0; } return result; } // 13359830: using guessed type int dword_13359830; //----- (0069C9E0) -------------------------------------------------------- int __cdecl sub_69C9E0() { int result; // eax@2 if ( dword_1335982C ) { result = (**(int (***)(void))dword_1335982C)(); if ( dword_1335982C ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1335982C + 8))(1); dword_1335982C = 0; } return result; } // 1335982C: using guessed type int dword_1335982C; //----- (0069CA10) -------------------------------------------------------- int __cdecl sub_69CA10() { int result; // eax@2 if ( dword_13359828 ) { result = (**(int (***)(void))dword_13359828)(); if ( dword_13359828 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359828 + 8))(1); dword_13359828 = 0; } return result; } // 13359828: using guessed type int dword_13359828; //----- (0069CA40) -------------------------------------------------------- int __cdecl sub_69CA40() { int result; // eax@2 if ( dword_13359824 ) { result = (**(int (***)(void))dword_13359824)(); if ( dword_13359824 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13359824 + 8))(1); dword_13359824 = 0; } return result; } // 13359824: using guessed type int dword_13359824; //----- (0069CA70) -------------------------------------------------------- int __cdecl sub_69CA70() { int result; // eax@2 if ( dword_13244B78 ) { result = (**(int (***)(void))dword_13244B78)(); if ( dword_13244B78 ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_13244B78 + 8))(1); dword_13244B78 = 0; } return result; } // 13244B78: using guessed type int dword_13244B78; //----- (0069CAA0) -------------------------------------------------------- int __cdecl sub_69CAA0() { int result; // eax@2 if ( dword_1335986C ) { result = (**(int (***)(void))dword_1335986C)(); if ( dword_1335986C ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1335986C + 8))(1); dword_1335986C = 0; } return result; } // 1335986C: using guessed type int dword_1335986C; //----- (0069CAF0) -------------------------------------------------------- int __cdecl sub_69CAF0() { int result; // eax@3 if ( (unsigned int)dword_86C064 >= 0x10 ) operator delete(dword_86C050); result = 0; dword_86C064 = 15; dword_86C060 = 0; LOBYTE(dword_86C050) = 0; return result; } // 86C060: using guessed type int dword_86C060; // 86C064: using guessed type int dword_86C064; //----- (0069CB20) -------------------------------------------------------- int __cdecl sub_69CB20() { int result; // eax@3 if ( (unsigned int)dword_86C2AC >= 0x10 ) operator delete(dword_86C298); result = 0; dword_86C2AC = 15; dword_86C2A8 = 0; LOBYTE(dword_86C298) = 0; return result; } // 86C2A8: using guessed type int dword_86C2A8; // 86C2AC: using guessed type int dword_86C2AC; //----- (0069CB50) -------------------------------------------------------- void __cdecl sub_69CB50() { void *v0; // esi@1 int v1; // edi@1 v0 = dword_14D21494; v1 = dword_14D21498; if ( dword_14D21494 != (void *)dword_14D21498 ) { do { if ( *(_DWORD *)v0 ) (***(void (__stdcall ****)(_DWORD))v0)(1); v0 = (char *)v0 + 4; } while ( v0 != (void *)v1 ); v0 = dword_14D21494; } if ( v0 ) operator delete(v0); dword_14D21494 = 0; dword_14D21498 = 0; dword_14D2149C = 0; } // 14D21498: using guessed type int dword_14D21498; // 14D2149C: using guessed type int dword_14D2149C; //----- (0069CBE0) -------------------------------------------------------- void __cdecl sub_69CBE0() { void *v0; // esi@1 int v1; // edi@1 v0 = dword_14D21484; v1 = dword_14D21488; if ( dword_14D21484 != (void *)dword_14D21488 ) { do { if ( *(_DWORD *)v0 ) (***(void (__stdcall ****)(_DWORD))v0)(1); v0 = (char *)v0 + 4; } while ( v0 != (void *)v1 ); v0 = dword_14D21484; } if ( v0 ) operator delete(v0); dword_14D21484 = 0; dword_14D21488 = 0; dword_14D2148C = 0; } // 14D21488: using guessed type int dword_14D21488; // 14D2148C: using guessed type int dword_14D2148C; //----- (0069CC70) -------------------------------------------------------- void __cdecl sub_69CC70() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D21478; v2 = 0; sub_5C1A60((int)&unk_14D21474, (int)&v1, v0, (int)dword_14D21478); operator delete(dword_14D21478); } //----- (0069CCD0) -------------------------------------------------------- int __cdecl sub_69CCD0() { int result; // eax@3 if ( (unsigned int)dword_86C30C >= 0x10 ) operator delete(dword_86C2F8); result = 0; dword_86C30C = 15; dword_86C308 = 0; LOBYTE(dword_86C2F8) = 0; return result; } // 86C308: using guessed type int dword_86C308; // 86C30C: using guessed type int dword_86C30C; //----- (0069CD00) -------------------------------------------------------- int __cdecl sub_69CD00() { int result; // eax@3 if ( (unsigned int)dword_86C3E8 >= 0x10 ) operator delete(dword_86C3D4); result = 0; dword_86C3E8 = 15; dword_86C3E4 = 0; LOBYTE(dword_86C3D4) = 0; return result; } // 86C3E4: using guessed type int dword_86C3E4; // 86C3E8: using guessed type int dword_86C3E8; //----- (0069CD30) -------------------------------------------------------- void __cdecl sub_69CD30() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D214C0; v2 = 0; sub_4AF910((int)&unk_14D214BC, (int)&v1, v0, (int)dword_14D214C0); operator delete(dword_14D214C0); } //----- (0069CD90) -------------------------------------------------------- void __cdecl sub_69CD90() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D214D8; v2 = 0; sub_5CF580((int)&unk_14D214D4, (int)&v1, v0, (int)dword_14D214D8); operator delete(dword_14D214D8); } //----- (0069CDF0) -------------------------------------------------------- void __cdecl sub_69CDF0() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D214E8; v2 = 0; sub_5CF580((int)&unk_14D214E4, (int)&v1, v0, (int)dword_14D214E8); operator delete(dword_14D214E8); } //----- (0069CE50) -------------------------------------------------------- void __cdecl sub_69CE50() { if ( dword_14D21508 ) operator delete(dword_14D21508); dword_14D21508 = 0; dword_14D2150C = 0; dword_14D21510 = 0; } // 14D2150C: using guessed type int dword_14D2150C; // 14D21510: using guessed type int dword_14D21510; //----- (0069CE90) -------------------------------------------------------- void __cdecl sub_69CE90() { if ( dword_14D214F4 ) operator delete(dword_14D214F4); dword_14D214F4 = 0; dword_14D214F8 = 0; dword_14D214FC = 0; } // 14D214F8: using guessed type int dword_14D214F8; // 14D214FC: using guessed type int dword_14D214FC; //----- (0069CEE0) -------------------------------------------------------- int __cdecl sub_69CEE0() { return _LN21(&unk_14D21520, 0x38u, 500, sub_639980); } //----- (0069CF00) -------------------------------------------------------- void __cdecl sub_69CF00() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D28288; v2 = 0; sub_5CF580((int)&unk_14D28284, (int)&v1, v0, (int)dword_14D28288); operator delete(dword_14D28288); } //----- (0069CF60) -------------------------------------------------------- void __cdecl sub_69CF60() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D28298; v2 = 0; sub_5CF580((int)&unk_14D28294, (int)&v1, v0, (int)dword_14D28298); operator delete(dword_14D28298); } //----- (0069CFC0) -------------------------------------------------------- void __cdecl sub_69CFC0() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D282A8; v2 = 0; sub_5CF580((int)&unk_14D282A4, (int)&v1, v0, (int)dword_14D282A8); operator delete(dword_14D282A8); } //----- (0069D020) -------------------------------------------------------- void __cdecl sub_69D020() { _LN21(&unk_14D282D0, 0x14u, 5000, sub_5CDBF0); dword_14D282B8 = (int)&off_6FA2E0; if ( dword_14D282C0 ) sub_6530A4((void *)dword_14D282C0); } // 6FA2E0: using guessed type int (__thiscall *off_6FA2E0)(void *, char); // 14D282B8: using guessed type int dword_14D282B8; // 14D282C0: using guessed type int dword_14D282C0; //----- (0069D090) -------------------------------------------------------- void __cdecl sub_69D090() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D40978; v2 = 0; sub_5CF580((int)&unk_14D40974, (int)&v1, v0, (int)dword_14D40978); operator delete(dword_14D40978); } //----- (0069D0F0) -------------------------------------------------------- void __cdecl sub_69D0F0() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D40998; v2 = 0; sub_5D2570((int)&unk_14D40994, (int)&v1, v0, (int)dword_14D40998); operator delete(dword_14D40998); } //----- (0069D150) -------------------------------------------------------- void __cdecl sub_69D150() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D40988; v2 = 0; sub_5D2610((int)&unk_14D40984, (int)&v1, v0, (int)dword_14D40988); operator delete(dword_14D40988); } //----- (0069D1B0) -------------------------------------------------------- void __cdecl sub_69D1B0() { if ( dword_14D409B8 ) operator delete(dword_14D409B8); dword_14D409B8 = 0; dword_14D409BC = 0; dword_14D409C0 = 0; if ( dword_14D409A8 ) { sub_492FC0((int)dword_14D409A8, dword_14D409AC); operator delete(dword_14D409A8); } dword_14D409A8 = 0; dword_14D409AC = 0; dword_14D409B0 = 0; } // 14D409AC: using guessed type int dword_14D409AC; // 14D409B0: using guessed type int dword_14D409B0; // 14D409BC: using guessed type int dword_14D409BC; // 14D409C0: using guessed type int dword_14D409C0; //----- (0069D230) -------------------------------------------------------- void __cdecl sub_69D230() { off_86D0C0 = &off_6FB124; } // 6FB124: using guessed type int (__thiscall *off_6FB124)(void *, char); // 86D0C0: using guessed type int (__thiscall **off_86D0C0)(void *, char); //----- (0069D240) -------------------------------------------------------- int __cdecl sub_69D240() { dword_14D40AE0 = (int)&off_7000CC; return sub_5D5420((int)&dword_14D40AE0); } // 7000CC: using guessed type int (__thiscall *off_7000CC)(void *, char); // 14D40AE0: using guessed type int dword_14D40AE0; //----- (0069D2A0) -------------------------------------------------------- void __cdecl sub_69D2A0() { off_86D234 = (int (*)())&off_7002E4; if ( dword_86D240 ) operator delete(dword_86D240); dword_86D240 = 0; dword_86D244 = 0; dword_86D248 = 0; } // 7002E4: using guessed type int (*off_7002E4)(); // 86D234: using guessed type int (*off_86D234)(); // 86D244: using guessed type int dword_86D244; // 86D248: using guessed type int dword_86D248; //----- (0069D2E0) -------------------------------------------------------- void __cdecl sub_69D2E0() { off_86D250 = (int (*)())&off_7002F0; if ( dword_86D25C ) operator delete(dword_86D25C); dword_86D25C = 0; dword_86D260 = 0; dword_86D264 = 0; } // 7002F0: using guessed type int (*off_7002F0)(); // 86D250: using guessed type int (*off_86D250)(); // 86D260: using guessed type int dword_86D260; // 86D264: using guessed type int dword_86D264; //----- (0069D320) -------------------------------------------------------- void __cdecl sub_69D320() { dword_14D41B28 = (int)&off_7002FC; if ( dword_14D41B34 ) operator delete(dword_14D41B34); dword_14D41B34 = 0; dword_14D41B38 = 0; dword_14D41B3C = 0; } // 7002FC: using guessed type int (*off_7002FC)(); // 14D41B28: using guessed type int dword_14D41B28; // 14D41B38: using guessed type int dword_14D41B38; // 14D41B3C: using guessed type int dword_14D41B3C; //----- (0069D360) -------------------------------------------------------- void __cdecl sub_69D360() { off_86D26C = (int (*)())&off_700308; if ( dword_86D278 ) operator delete(dword_86D278); dword_86D278 = 0; dword_86D27C = 0; dword_86D280 = 0; } // 700308: using guessed type int (*off_700308)(); // 86D26C: using guessed type int (*off_86D26C)(); // 86D27C: using guessed type int dword_86D27C; // 86D280: using guessed type int dword_86D280; //----- (0069D3A0) -------------------------------------------------------- void __cdecl sub_69D3A0() { sub_612440((int)&dword_14D41B48); } //----- (0069D3F0) -------------------------------------------------------- int __cdecl sub_69D3F0() { void *v0; // eax@1 v0 = (void *)*((_DWORD *)&unk_14D41D90 + 44); if ( v0 ) operator delete(v0); *((_DWORD *)&unk_14D41D90 + 44) = 0; *((_DWORD *)&unk_14D41D90 + 45) = 0; *((_DWORD *)&unk_14D41D90 + 46) = 0; if ( *((_DWORD *)&unk_14D41D90 + 40) ) operator delete(*((void **)&unk_14D41D90 + 40)); *((_DWORD *)&unk_14D41D90 + 40) = 0; *((_DWORD *)&unk_14D41D90 + 41) = 0; *((_DWORD *)&unk_14D41D90 + 42) = 0; if ( *((_DWORD *)&unk_14D41D90 + 36) ) operator delete(*((void **)&unk_14D41D90 + 36)); *((_DWORD *)&unk_14D41D90 + 36) = 0; *((_DWORD *)&unk_14D41D90 + 37) = 0; *((_DWORD *)&unk_14D41D90 + 38) = 0; return _LN21(&unk_14D41D90, 0x10u, 9, (void (__thiscall *)(void *))sub_61F750); } //----- (0069D400) -------------------------------------------------------- void __cdecl sub_69D400() { if ( dword_14D41D78 ) operator delete(dword_14D41D78); dword_14D41D78 = 0; dword_14D41D7C = 0; dword_14D41D80 = 0; } // 14D41D7C: using guessed type int dword_14D41D7C; // 14D41D80: using guessed type int dword_14D41D80; //----- (0069D440) -------------------------------------------------------- void __cdecl sub_69D440() { sub_6203F0(&unk_14D41E50); } //----- (0069D450) -------------------------------------------------------- void __cdecl sub_69D450() { if ( dword_14D41FAC ) operator delete(dword_14D41FAC); dword_14D41FAC = 0; dword_14D41FB0 = 0; dword_14D41FB4 = 0; if ( dword_14D41F9C ) { sub_492FC0((int)dword_14D41F9C, dword_14D41FA0); operator delete(dword_14D41F9C); } dword_14D41F9C = 0; dword_14D41FA0 = 0; dword_14D41FA4 = 0; } // 14D41FA0: using guessed type int dword_14D41FA0; // 14D41FA4: using guessed type int dword_14D41FA4; // 14D41FB0: using guessed type int dword_14D41FB0; // 14D41FB4: using guessed type int dword_14D41FB4; //----- (0069D4C0) -------------------------------------------------------- void __cdecl sub_69D4C0() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D41FC4; v2 = 0; sub_5CF580((int)&unk_14D41FC0, (int)&v1, v0, (int)dword_14D41FC4); operator delete(dword_14D41FC4); } //----- (0069D520) -------------------------------------------------------- void __cdecl sub_69D520() { sub_623AE0((int)&unk_14D41FD0); } //----- (0069D530) -------------------------------------------------------- void __cdecl sub_69D530() { const void *v0; // ecx@1 void *v1; // edi@1 dword_14D4207C = (int)&off_70376C; v0 = (const void *)*(&dword_14D4207C + 8); v1 = (void *)*(&dword_14D4207C + 7); if ( v1 != v0 ) { memmove_0(v1, v0, 0); *(&dword_14D4207C + 8) = (int)v1; } if ( *(&dword_14D4207C + 7) ) operator delete((void *)*(&dword_14D4207C + 7)); *(&dword_14D4207C + 7) = 0; *(&dword_14D4207C + 8) = 0; *(&dword_14D4207C + 9) = 0; dword_14D4207C = (int)&off_703760; if ( *(&dword_14D4207C + 3) ) operator delete((void *)*(&dword_14D4207C + 3)); *(&dword_14D4207C + 3) = 0; *(&dword_14D4207C + 4) = 0; *(&dword_14D4207C + 5) = 0; } // 703760: using guessed type int (*off_703760)(); // 70376C: using guessed type int (*off_70376C)(); // 14D4207C: using guessed type int dword_14D4207C; //----- (0069D540) -------------------------------------------------------- void __cdecl sub_69D540() { dword_14D42044 = (int)&off_703778; if ( dword_14D42050 ) operator delete(dword_14D42050); dword_14D42050 = 0; dword_14D42054 = 0; dword_14D42058 = 0; } // 703778: using guessed type int (*off_703778)(); // 14D42044: using guessed type int dword_14D42044; // 14D42054: using guessed type int dword_14D42054; // 14D42058: using guessed type int dword_14D42058; //----- (0069D580) -------------------------------------------------------- void __cdecl sub_69D580() { dword_14D4200C = (int)&off_703784; if ( dword_14D42018 ) operator delete(dword_14D42018); dword_14D42018 = 0; dword_14D4201C = 0; dword_14D42020 = 0; } // 703784: using guessed type int (*off_703784)(); // 14D4200C: using guessed type int dword_14D4200C; // 14D4201C: using guessed type int dword_14D4201C; // 14D42020: using guessed type int dword_14D42020; //----- (0069D5C0) -------------------------------------------------------- void __cdecl sub_69D5C0() { dword_14D420AC = (int)&off_703790; if ( dword_14D420B8 ) operator delete(dword_14D420B8); dword_14D420B8 = 0; dword_14D420BC = 0; dword_14D420C0 = 0; } // 703790: using guessed type int (*off_703790)(); // 14D420AC: using guessed type int dword_14D420AC; // 14D420BC: using guessed type int dword_14D420BC; // 14D420C0: using guessed type int dword_14D420C0; //----- (0069D600) -------------------------------------------------------- void __cdecl sub_69D600() { off_86D7D8 = (int (*)())&off_70379C; if ( dword_86D7E4 ) operator delete(dword_86D7E4); dword_86D7E4 = 0; dword_86D7E8 = 0; dword_86D7EC = 0; } // 70379C: using guessed type int (*off_70379C)(); // 86D7D8: using guessed type int (*off_86D7D8)(); // 86D7E8: using guessed type int dword_86D7E8; // 86D7EC: using guessed type int dword_86D7EC; //----- (0069D640) -------------------------------------------------------- void __cdecl sub_69D640() { dword_14D42028 = (int)&off_7037A8; if ( dword_14D42034 ) operator delete(dword_14D42034); dword_14D42034 = 0; dword_14D42038 = 0; dword_14D4203C = 0; } // 7037A8: using guessed type int (*off_7037A8)(); // 14D42028: using guessed type int dword_14D42028; // 14D42038: using guessed type int dword_14D42038; // 14D4203C: using guessed type int dword_14D4203C; //----- (0069D680) -------------------------------------------------------- void __cdecl sub_69D680() { dword_14D42060 = (int)&off_7037B4; if ( dword_14D4206C ) operator delete(dword_14D4206C); dword_14D4206C = 0; dword_14D42070 = 0; dword_14D42074 = 0; } // 7037B4: using guessed type int (*off_7037B4)(); // 14D42060: using guessed type int dword_14D42060; // 14D42070: using guessed type int dword_14D42070; // 14D42074: using guessed type int dword_14D42074; //----- (0069D6C0) -------------------------------------------------------- void __cdecl sub_69D6C0() { dword_14D41FF0 = (int)&off_7037C0; if ( dword_14D41FFC ) operator delete(dword_14D41FFC); dword_14D41FFC = 0; dword_14D42000 = 0; dword_14D42004 = 0; } // 7037C0: using guessed type int (*off_7037C0)(); // 14D41FF0: using guessed type int dword_14D41FF0; // 14D42000: using guessed type int dword_14D42000; // 14D42004: using guessed type int dword_14D42004; //----- (0069D700) -------------------------------------------------------- int __cdecl sub_69D700() { return _LN21(&unk_14D420DC, 0x41u, 49, nullsub_2); } //----- (0069D720) -------------------------------------------------------- void __cdecl sub_69D720() { int v0; // ST04_4@1 char v1; // [sp+4h] [bp-10h]@1 int v2; // [sp+10h] [bp-4h]@1 v0 = *(_DWORD *)dword_14D42D60; v2 = 0; sub_62BA60((int)&unk_14D42D5C, (int)&v1, v0, (int)dword_14D42D60); operator delete(dword_14D42D60); } //----- (0069D790) -------------------------------------------------------- int __cdecl sub_69D790() { nullsub_2(&unk_1508B108); _LN21(&unk_1506B0E8, 0x8008u, 4, nullsub_2); return _LN21(&unk_14D42DC0, 0x8008u, 101, nullsub_2); } //----- (0069D810) -------------------------------------------------------- int (__thiscall **__cdecl sub_69D810())(void *, char) { int (__thiscall **result)(void *, char); // eax@1 result = &off_704414; dword_1508B168[38] = &off_704414; dword_1508B168[37] = &off_704414; dword_1508B168[36] = &off_704414; dword_1508B168[35] = &off_704414; dword_1508B168[34] = &off_704414; dword_1508B168[33] = &off_704414; dword_1508B168[32] = &off_704414; dword_1508B168[31] = &off_704414; dword_1508B168[30] = &off_704414; dword_1508B168[29] = &off_704414; dword_1508B168[28] = &off_704414; dword_1508B168[27] = &off_704414; dword_1508B168[26] = &off_704414; dword_1508B168[25] = &off_704414; dword_1508B168[24] = &off_704414; dword_1508B168[23] = &off_704414; dword_1508B168[22] = &off_704414; dword_1508B168[21] = &off_704414; dword_1508B168[20] = &off_704414; dword_1508B168[19] = &off_704414; dword_1508B168[18] = &off_704414; dword_1508B168[17] = &off_704414; dword_1508B168[16] = &off_704414; dword_1508B168[15] = &off_704414; dword_1508B168[14] = &off_704414; dword_1508B168[13] = &off_704414; dword_1508B168[12] = &off_704414; dword_1508B168[11] = &off_704414; dword_1508B168[10] = &off_704414; dword_1508B168[9] = &off_704414; dword_1508B168[8] = &off_704414; dword_1508B168[7] = &off_704414; dword_1508B168[6] = &off_704414; dword_1508B168[5] = &off_704414; dword_1508B168[4] = &off_704414; dword_1508B168[3] = &off_704414; dword_1508B168[2] = &off_704414; dword_1508B168[1] = &off_704414; dword_1508B168[0] = &off_704414; return result; } // 704414: using guessed type int (__thiscall *off_704414)(void *, char); //----- (0069D850) -------------------------------------------------------- void __cdecl sub_69D850() { dword_1508B308 = (int)&off_706B7C; sub_639940((int)&dword_1508B308); } // 706B7C: using guessed type int (__thiscall *off_706B7C)(void *, char); // 1508B308: using guessed type int dword_1508B308; //----- (0069D870) -------------------------------------------------------- int __cdecl sub_69D870() { return _LN21(&unk_1508B384, 0x24u, 5, nullsub_2); } //----- (0069D9A0) -------------------------------------------------------- int __cdecl sub_69D9A0() { int result; // eax@1 result = (int)dword_86F11C; if ( dword_86F11C ) result = fclose(dword_86F11C); return result; } //----- (0069D9C0) -------------------------------------------------------- int __cdecl sub_69D9C0() { int result; // eax@1 result = (int)dword_86F644; if ( dword_86F644 ) result = fclose(dword_86F644); return result; } //----- (0069D9E0) -------------------------------------------------------- void __cdecl sub_69D9E0() { dword_1508B5A8 = (int)&off_707130; sub_62ED70(&dword_1508B5A8); } // 707130: using guessed type int (__thiscall *off_707130)(void *, char); // 1508B5A8: using guessed type int dword_1508B5A8; //----- (0069DA00) -------------------------------------------------------- void __cdecl sub_69DA00() { dword_1508B988 = (int)&off_707AE0; sub_639940((int)&dword_1508B988); } // 707AE0: using guessed type int (__thiscall *off_707AE0)(void *, char); // 1508B988: using guessed type int dword_1508B988; //----- (0069DA20) -------------------------------------------------------- void __cdecl sub_69DA20() { dword_1508BA78 = (int)&off_707B28; _LN21(&unk_1508BAD4, 0x24u, 500, sub_648DB0); dword_1508BA78 = (int)&off_707AE8; sub_639940((int)&dword_1508BA78); } // 707AE8: using guessed type int (__thiscall *off_707AE8)(void *, char); // 707B28: using guessed type int (__thiscall *off_707B28)(void *, char); // 1508BA78: using guessed type int dword_1508BA78; //----- (0069DAA0) -------------------------------------------------------- void __cdecl sub_69DAA0() { dword_1508BA10 = (int)&off_707AF0; sub_639940((int)&dword_1508BA10); } // 707AF0: using guessed type int (__thiscall *off_707AF0)(void *, char); // 1508BA10: using guessed type int dword_1508BA10; //----- (0069DAC0) -------------------------------------------------------- void __cdecl sub_69DAC0() { sub_643080(&unk_150A0980); } //----- (0069DAD0) -------------------------------------------------------- void __cdecl sub_69DAD0() { sub_643080(&unk_15090128); } //----- (0069DAE0) -------------------------------------------------------- void __cdecl sub_69DAE0() { _LN21(&unk_150B15DC, 0x10854u, 64, sub_63AB50); sub_639560(&unk_150B11D8); } //----- (0069DB40) -------------------------------------------------------- int __cdecl sub_69DB40() { return _LN21(dword_154D4808, 0x808u, 16, nullsub_2); } // 154D4808: using guessed type int dword_154D4808[]; //----- (0069DB57) -------------------------------------------------------- LONG __cdecl sub_69DB57() { LONG result; // eax@1 struct _RTL_CRITICAL_SECTION *v1; // esi@2 result = InterlockedDecrement(&dword_86FD3C); if ( result < 0 ) { v1 = &stru_154DC910; do { result = _Mtxdst(v1); ++v1; } while ( (signed int)v1 < (signed int)&unk_154DC970 ); } return result; } //----- (0069DB61) -------------------------------------------------------- void __cdecl sub_69DB61() { sub_4D5600(&dword_154DC994); } // 154DC994: using guessed type int dword_154DC994; //----- (0069DB6B) -------------------------------------------------------- int __usercall sub_69DB6B(int a1) { void *v1; // esi@2 void *v2; // ecx@2 int v4; // [sp-14h] [bp-14h]@0 int v5; // [sp-10h] [bp-10h]@0 int v6; // [sp-Ch] [bp-Ch]@0 int v7; // [sp-8h] [bp-8h]@0 int v8; // [sp-4h] [bp-4h]@1 _EH_prolog3(4); std::_Lockit::_Lockit(0); *(_DWORD *)(a1 - 4) = 0; while ( dword_154DC974 ) { v1 = dword_154DC974; v2 = dword_154DC974; dword_154DC974 = *(void **)dword_154DC974; std::_Fac_node::__Fac_node(v2); operator delete(v1); } *(_DWORD *)(a1 - 4) = -1; std::_Lockit::__Lockit(a1 - 16); return _EH_epilog3(v4, v5, v6, v7, v8); } // 651A23: using guessed type _DWORD __stdcall std___Lockit___Lockit(_DWORD); // 651A4B: using guessed type int __thiscall std___Lockit____Lockit(_DWORD); // 651A62: using guessed type int __thiscall std___Fac_node____Fac_node(_DWORD); // 65ECBD: using guessed type _DWORD __cdecl _EH_prolog3(char); // 65ED26: using guessed type int __stdcall _EH_epilog3(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (0069DB75) -------------------------------------------------------- void __cdecl sub_69DB75() { off_86FE0C = (int (__thiscall *)(void *, char))&off_708F40; } // 708F40: using guessed type int (__thiscall *off_708F40)(void *, char); // 86FE0C: using guessed type int (__thiscall *off_86FE0C)(void *, char); //----- (0069DB80) -------------------------------------------------------- void __cdecl sub_69DB80() { off_86FE14 = (int (__thiscall *)(void *, char))&off_708F40; } // 708F40: using guessed type int (__thiscall *off_708F40)(void *, char); // 86FE14: using guessed type int (__thiscall *off_86FE14)(void *, char); //----- (0069DB8B) -------------------------------------------------------- void __cdecl sub_69DB8B() { off_86FE1C = (int (__thiscall *)(void *, char))&off_708F40; } // 708F40: using guessed type int (__thiscall *off_708F40)(void *, char); // 86FE1C: using guessed type int (__thiscall *off_86FE1C)(void *, char); //----- (0069DB96) -------------------------------------------------------- void __cdecl sub_69DB96() { JUMPOUT(unknown_libname_6); } // 6519FA: using guessed type int unknown_libname_6(); //----- (0069DBA0) -------------------------------------------------------- int __cdecl sub_69DBA0() { return _Init_atexit::__Init_atexit(&unk_154DCB19); } // 6527EE: using guessed type int __thiscall _Init_atexit____Init_atexit(_DWORD); //----- (0069DBAA) -------------------------------------------------------- int __cdecl sub_69DBAA() { dword_154DCB20 = (int)&off_6A1FD4; return sub_653970(&dword_154DCB20); } // 6A1FD4: using guessed type int (__thiscall *off_6A1FD4)(void *, char); // 154DCB20: using guessed type int dword_154DCB20; #error "There were 9 decompilation failure(s) on 16554 function(s)"